diff -Nru lazarus-1.4.4+dfsg/components/aarre/src/aarrepkglist.pas lazarus-1.6+dfsg/components/aarre/src/aarrepkglist.pas --- lazarus-1.4.4+dfsg/components/aarre/src/aarrepkglist.pas 2014-12-10 14:26:18.000000000 +0000 +++ lazarus-1.6+dfsg/components/aarre/src/aarrepkglist.pas 2015-07-07 15:35:28.000000000 +0000 @@ -34,8 +34,8 @@ interface uses - Classes, SysUtils, Laz2_XMLCfg, laz2_DOM, LazLogger, LazUTF8, LConvEncoding, - LazFileUtils, FileProcs, zstream; + Classes, SysUtils, zstream, Laz2_XMLCfg, LazUTF8, LConvEncoding, + LazFileUtils, LazUtilities; type TAPackageType = ( diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/anchordocking.lpk lazarus-1.6+dfsg/components/anchordocking/anchordocking.lpk --- lazarus-1.4.4+dfsg/components/anchordocking/anchordocking.lpk 2013-04-14 15:02:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/anchordocking.lpk 2015-10-13 12:14:31.000000000 +0000 @@ -1,4 +1,4 @@ - + @@ -10,11 +10,7 @@ - - - - - - + - + + + + @@ -71,5 +69,8 @@ + + <_ExternHelp Items="Count"/> + diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/anchordocking.pas lazarus-1.6+dfsg/components/anchordocking/anchordocking.pas --- lazarus-1.4.4+dfsg/components/anchordocking/anchordocking.pas 2014-11-04 22:56:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/anchordocking.pas 2016-02-06 14:12:55.000000000 +0000 @@ -102,9 +102,15 @@ interface uses - Math, Classes, SysUtils, LResources, types, LCLType, LCLIntf, LCLProc, + Math, Classes, SysUtils, types, + LCLType, LCLIntf, LCLProc, Controls, Forms, ExtCtrls, ComCtrls, Graphics, Themes, Menus, Buttons, - LazConfigStorage, AnchorDockStr, AnchorDockStorage, LazFileCache; + LazConfigStorage, Laz2_XMLCfg, LazFileCache, + AnchorDockStr, AnchorDockStorage; + +{$IFDEF DebugDisableAutoSizing} +const ADAutoSizingReason = 'TAnchorDockMaster Delayed'; +{$ENDIF} type TAnchorDockHostSite = class; @@ -163,24 +169,33 @@ TAnchorDockSplitter = class(TCustomSplitter) private + FCustomWidth: Boolean; FDockBounds: TRect; FDockParentClientSize: TSize; FDockRestoreBounds: TRect; + FPercentPosition: Single; + + procedure UpdatePercentPosition; protected procedure SetResizeAnchor(const AValue: TAnchorKind); override; procedure PopupMenuPopup(Sender: TObject); virtual; + procedure Paint; override; + public + procedure MoveSplitter(Offset: integer); override; public constructor Create(TheOwner: TComponent); override; property DockBounds: TRect read FDockBounds write FDockBounds; property DockParentClientSize: TSize read FDockParentClientSize write FDockParentClientSize; procedure UpdateDockBounds; procedure SetBounds(ALeft, ATop, AWidth, AHeight: integer); override; // any normal movement sets the DockBounds + procedure SetBoundsPercentually; procedure SetBoundsKeepDockBounds(ALeft, ATop, AWidth, AHeight: integer); // movement for scaling keeps the DockBounds function SideAnchoredControlCount(Side: TAnchorKind): integer; function HasAnchoredControls: boolean; procedure SaveLayout(LayoutNode: TAnchorDockLayoutTreeNode); function HasOnlyOneSibling(Side: TAnchorKind; MinPos, MaxPos: integer): TControl; property DockRestoreBounds: TRect read FDockRestoreBounds write FDockRestoreBounds; + property CustomWidth: Boolean read FCustomWidth write FCustomWidth; end; TAnchorDockSplitterClass = class of TAnchorDockSplitter; @@ -259,6 +274,7 @@ function DockAnotherControl(Sibling, NewControl: TControl; DockAlign: TAlign; Inside: boolean): boolean; virtual; procedure CreatePages; virtual; + procedure FreePages; virtual; function DockSecondPage(NewControl: TControl): boolean; virtual; function DockAnotherPage(NewControl: TControl; InFrontOf: TControl): boolean; virtual; procedure AddCleanControl(AControl: TControl; TheAlign: TAlign = alNone); @@ -403,7 +419,6 @@ FHeaderFilled: boolean; FHideHeaderCaptionFloatingControl: boolean; FPageAreaInPercent: integer; - FSaveOnClose: boolean; FScaleOnResize: boolean; FShowHeader: boolean; FShowHeaderCaption: boolean; @@ -418,7 +433,6 @@ procedure SetHeaderStyle(AValue: TADHeaderStyle); procedure SetHideHeaderCaptionFloatingControl(AValue: boolean); procedure SetPageAreaInPercent(AValue: integer); - procedure SetSaveOnClose(AValue: boolean); procedure SetScaleOnResize(AValue: boolean); procedure SetShowHeader(AValue: boolean); procedure SetShowHeaderCaption(AValue: boolean); @@ -435,7 +449,6 @@ property HeaderHint: string read FHeaderHint write SetHeaderHint; property SplitterWidth: integer read FSplitterWidth write SetSplitterWidth; property ScaleOnResize: boolean read FScaleOnResize write SetScaleOnResize; - property SaveOnClose: boolean read FSaveOnClose write SetSaveOnClose; property ShowHeader: boolean read FShowHeader write SetShowHeader; property ShowHeaderCaption: boolean read FShowHeaderCaption write SetShowHeaderCaption; property HideHeaderCaptionFloatingControl: boolean read FHideHeaderCaptionFloatingControl write SetHideHeaderCaptionFloatingControl; @@ -445,9 +458,12 @@ property HeaderFilled: boolean read FHeaderFilled write SetHeaderFilled; procedure IncreaseChangeStamp; inline; property ChangeStamp: integer read FChangeStamp; - procedure LoadFromConfig(Config: TConfigStorage); - procedure SaveToConfig(Config: TConfigStorage); + procedure LoadFromConfig(Config: TConfigStorage); overload; + procedure LoadFromConfig(Path: string; Config: TRttiXMLConfig); overload; + procedure SaveToConfig(Config: TConfigStorage); overload; + procedure SaveToConfig(Path: string; Config: TRttiXMLConfig); overload; function IsEqual(Settings: TAnchorDockSettings): boolean; reintroduce; + procedure Assign(Source: TAnchorDockSettings); end; TAnchorDockMaster = class; @@ -487,7 +503,6 @@ FQueueSimplify: Boolean; FRestoreLayouts: TAnchorDockRestoreLayouts; FRestoring: boolean; - FSaveOnClose: boolean; FScaleOnResize: boolean; FShowHeader: boolean; FShowHeaderCaption: boolean; @@ -521,7 +536,6 @@ procedure SetHeaderHint(AValue: string); procedure SetHeaderStyle(AValue: TADHeaderStyle); procedure SetPageAreaInPercent(AValue: integer); - procedure SetSaveOnClose(AValue: boolean); procedure SetScaleOnResize(AValue: boolean); procedure SetHeaderFlatten(AValue: boolean); @@ -552,6 +566,7 @@ public constructor Create(AOwner: TComponent); override; destructor Destroy; override; + function FullRestoreLayout(Tree: TAnchorDockLayoutTree; Scale: Boolean): Boolean; function ControlCount: integer; property Controls[Index: integer]: TControl read GetControls; function IndexOfControl(const aName: string): integer; @@ -577,8 +592,7 @@ ResizePolicy: TADMResizePolicy; AllowInside: boolean = false); procedure MakeVisible(AControl: TControl; SwitchPages: boolean); - function ShowControl(ControlName: string; BringToFront: boolean = false - ): TControl; + function ShowControl(ControlName: string; BringToFront: boolean = false): TControl; procedure CloseAll; // save/restore layouts @@ -589,7 +603,9 @@ function CreateRestoreLayout(AControl: TControl): TAnchorDockRestoreLayout; function ConfigIsEmpty(Config: TConfigStorage): boolean; function LoadLayoutFromConfig(Config: TConfigStorage; Scale: Boolean): boolean; - property RestoreLayouts: TAnchorDockRestoreLayouts read FRestoreLayouts; // layout information for restoring hidden forms + // layout information for restoring hidden forms + property RestoreLayouts: TAnchorDockRestoreLayouts read FRestoreLayouts + write FRestoreLayouts; property Restoring: boolean read FRestoring write SetRestoring; property IdleConnected: Boolean read FIdleConnected write SetIdleConnected; procedure LoadSettingsFromConfig(Config: TConfigStorage); @@ -597,6 +613,7 @@ procedure LoadSettings(Settings: TAnchorDockSettings); procedure SaveSettings(Settings: TAnchorDockSettings); function SettingsAreEqual(Settings: TAnchorDockSettings): boolean; + procedure ResetSplitters; // manual docking procedure ManualFloat(AControl: TControl); @@ -640,7 +657,6 @@ property SplitterWidth: integer read FSplitterWidth write SetSplitterWidth default 4; property ScaleOnResize: boolean read FScaleOnResize write SetScaleOnResize default true; // scale children when resizing a site - property SaveOnClose: boolean read FSaveOnClose write SetSaveOnClose default true; // you must call SaveLayoutToConfig yourself property AllowDragging: boolean read FAllowDragging write SetAllowDragging default true; property OptionsChangeStamp: int64 read FOptionsChangeStamp; procedure IncreaseOptionsChangeStamp; inline; @@ -683,14 +699,12 @@ out Splitter: TAnchorDockSplitter): boolean; function GetDockSplitterOrParent(Control: TControl; Side: TAnchorKind; out AnchorControl: TControl): boolean; -function CountAnchoredControls(Control: TControl; Side: TAnchorKind - ): Integer; +function CountAnchoredControls(Control: TControl; Side: TAnchorKind): Integer; function NeighbourCanBeShrinked(EnlargeControl, Neighbour: TControl; Side: TAnchorKind): boolean; function ControlIsAnchoredIndirectly(StartControl: TControl; Side: TAnchorKind; DestControl: TControl): boolean; -procedure GetAnchorControlsRect(Control: TControl; - out ARect: TAnchorControlsRect); +procedure GetAnchorControlsRect(Control: TControl; out ARect: TAnchorControlsRect); function GetEnclosingControlRect(ControlList: TFPlist; out ARect: TAnchorControlsRect): boolean; function GetEnclosedControls(const ARect: TAnchorControlsRect): TFPList; @@ -800,13 +814,16 @@ var a: TAnchorKind; begin - Target.DisableAutoSizing; - Target.BoundsRect:=Source.BoundsRect; - Target.Anchors:=Source.Anchors; - Target.Align:=Source.Align; - for a:=low(TAnchorKind) to high(TAnchorKind) do - Target.AnchorSide[a].Assign(Source.AnchorSide[a]); - Target.EnableAutoSizing; + Target.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('CopyAnchorBounds'){$ENDIF}; + try + Target.BoundsRect:=Source.BoundsRect; + Target.Anchors:=Source.Anchors; + Target.Align:=Source.Align; + for a:=low(TAnchorKind) to high(TAnchorKind) do + Target.AnchorSide[a].Assign(Source.AnchorSide[a]); + finally + Target.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('CopyAnchorBounds'){$ENDIF}; + end; end; procedure AnchorAndChangeBounds(AControl: TControl; Side: TAnchorKind; @@ -988,8 +1005,7 @@ Result:=Check(Parent.GetControlIndex(StartControl)); end; -procedure GetAnchorControlsRect(Control: TControl; out - ARect: TAnchorControlsRect); +procedure GetAnchorControlsRect(Control: TControl; out ARect: TAnchorControlsRect); var a: TAnchorKind; begin @@ -1243,13 +1259,6 @@ IncreaseChangeStamp; end; -procedure TAnchorDockSettings.SetSaveOnClose(AValue: boolean); -begin - if FSaveOnClose=AValue then Exit; - FSaveOnClose:=AValue; - IncreaseChangeStamp; -end; - procedure TAnchorDockSettings.SetScaleOnResize(AValue: boolean); begin if FScaleOnResize=AValue then Exit; @@ -1292,6 +1301,27 @@ IncreaseChangeStamp; end; +procedure TAnchorDockSettings.Assign(Source: TAnchorDockSettings); +begin + FAllowDragging := Source.FAllowDragging; + FChangeStamp := Source.FChangeStamp; + FDockOutsideMargin := Source.FDockOutsideMargin; + FDockParentMargin := Source.FDockParentMargin; + FDragTreshold := Source.FDragTreshold; + FHeaderAlignLeft := Source.FHeaderAlignLeft; + FHeaderAlignTop := Source.FHeaderAlignTop; + FHeaderHint := Source.FHeaderHint; + FHeaderStyle := Source.FHeaderStyle; + FHeaderFlatten := Source.FHeaderFlatten; + FHeaderFilled := Source.FHeaderFilled; + FHideHeaderCaptionFloatingControl := Source.FHideHeaderCaptionFloatingControl; + FPageAreaInPercent := Source.FPageAreaInPercent; + FScaleOnResize := Source.FScaleOnResize; + FShowHeader := Source.FShowHeader; + FShowHeaderCaption := Source.FShowHeaderCaption; + FSplitterWidth := Source.FSplitterWidth; +end; + procedure TAnchorDockSettings.IncreaseChangeStamp; begin LUIncreaseChangeStamp(fChangeStamp); @@ -1308,7 +1338,6 @@ HeaderAlignLeft:=Config.GetValue('HeaderAlignLeft',120); SplitterWidth:=Config.GetValue('SplitterWidth',4); ScaleOnResize:=Config.GetValue('ScaleOnResize',true); - SaveOnClose:=Config.GetValue('SaveOnClose',true); ShowHeader:=Config.GetValue('ShowHeader',true); ShowHeaderCaption:=Config.GetValue('ShowHeaderCaption',true); HideHeaderCaptionFloatingControl:=Config.GetValue('HideHeaderCaptionFloatingControl',true); @@ -1319,6 +1348,26 @@ Config.UndoAppendBasePath; end; +procedure TAnchorDockSettings.SaveToConfig(Path: string; Config: TRttiXMLConfig + ); +begin + Config.SetDeleteValue(Path+'DragThreshold',DragTreshold,4); + Config.SetDeleteValue(Path+'DockOutsideMargin',DockOutsideMargin,10); + Config.SetDeleteValue(Path+'DockParentMargin',DockParentMargin,10); + Config.SetDeleteValue(Path+'PageAreaInPercent',PageAreaInPercent,40); + Config.SetDeleteValue(Path+'HeaderAlignTop',HeaderAlignTop,80); + Config.SetDeleteValue(Path+'HeaderAlignLeft',HeaderAlignLeft,120); + Config.SetDeleteValue(Path+'SplitterWidth',SplitterWidth,4); + Config.SetDeleteValue(Path+'ScaleOnResize',ScaleOnResize,true); + Config.SetDeleteValue(Path+'ShowHeader',ShowHeader,true); + Config.SetDeleteValue(Path+'ShowHeaderCaption',ShowHeaderCaption,true); + Config.SetDeleteValue(Path+'HideHeaderCaptionFloatingControl',HideHeaderCaptionFloatingControl,true); + Config.SetDeleteValue(Path+'AllowDragging',AllowDragging,true); + Config.SetDeleteValue(Path+'HeaderStyle',ADHeaderStyleNames[HeaderStyle],ADHeaderStyleNames[adhsDefault]); + Config.SetDeleteValue(Path+'HeaderFlatten',HeaderFlatten,true); + Config.SetDeleteValue(Path+'HeaderFilled',HeaderFilled,true); +end; + procedure TAnchorDockSettings.SaveToConfig(Config: TConfigStorage); begin Config.AppendBasePath('Settings/'); @@ -1330,7 +1379,6 @@ Config.SetDeleteValue('HeaderAlignLeft',HeaderAlignLeft,120); Config.SetDeleteValue('SplitterWidth',SplitterWidth,4); Config.SetDeleteValue('ScaleOnResize',ScaleOnResize,true); - Config.SetDeleteValue('SaveOnClose',SaveOnClose,true); Config.SetDeleteValue('ShowHeader',ShowHeader,true); Config.SetDeleteValue('ShowHeaderCaption',ShowHeaderCaption,true); Config.SetDeleteValue('HideHeaderCaptionFloatingControl',HideHeaderCaptionFloatingControl,true); @@ -1352,7 +1400,6 @@ and (HeaderHint=Settings.HeaderHint) and (SplitterWidth=Settings.SplitterWidth) and (ScaleOnResize=Settings.ScaleOnResize) - and (SaveOnClose=Settings.SaveOnClose) and (ShowHeader=Settings.ShowHeader) and (ShowHeaderCaption=Settings.ShowHeaderCaption) and (HideHeaderCaptionFloatingControl=Settings.HideHeaderCaptionFloatingControl) @@ -1363,6 +1410,26 @@ ; end; +procedure TAnchorDockSettings.LoadFromConfig(Path: string; + Config: TRttiXMLConfig); +begin + DragTreshold:=Config.GetValue(Path+'DragThreshold',4); + DockOutsideMargin:=Config.GetValue(Path+'DockOutsideMargin',10); + DockParentMargin:=Config.GetValue(Path+'DockParentMargin',10); + PageAreaInPercent:=Config.GetValue(Path+'PageAreaInPercent',40); + HeaderAlignTop:=Config.GetValue(Path+'HeaderAlignTop',80); + HeaderAlignLeft:=Config.GetValue(Path+'HeaderAlignLeft',120); + SplitterWidth:=Config.GetValue(Path+'SplitterWidth',4); + ScaleOnResize:=Config.GetValue(Path+'ScaleOnResize',true); + ShowHeader:=Config.GetValue(Path+'ShowHeader',true); + ShowHeaderCaption:=Config.GetValue(Path+'ShowHeaderCaption',true); + HideHeaderCaptionFloatingControl:=Config.GetValue(Path+'HideHeaderCaptionFloatingControl',true); + AllowDragging:=Config.GetValue(Path+'AllowDragging',true); + HeaderStyle:=StrToADHeaderStyle(Config.GetValue(Path+'HeaderStyle',ADHeaderStyleNames[adhsDefault])); + HeaderFlatten:=Config.GetValue(Path+'HeaderFlatten',true); + HeaderFilled:=Config.GetValue(Path+'HeaderFilled',true); +end; + { TAnchorDockMaster } function TAnchorDockMaster.GetControls(Index: integer): TControl; @@ -1409,13 +1476,16 @@ DisableControlAutoSizing(AControl); // AControl is currently on a visible site, but not in the Tree // => close site - debugln(['TAnchorDockMaster.CloseUnneededControls Control=',DbgSName(AControl),' Site=',AControl.HostDockSite.Name]); - if AControl.HostDockSite is TAnchorDockHostSite then begin - if not TAnchorDockHostSite(AControl.HostDockSite).CloseSite then begin - if FControls.IndexOf(AControl)<0 then - AControl:=nil; - debugln(['TAnchorDockMaster.CloseUnneededControls CloseSite failed Control=',DbgSName(AControl)]); - exit(false); + if AControl.HostDockSite <> nil then + begin + debugln(['TAnchorDockMaster.CloseUnneededControls Control=',DbgSName(AControl),' Site=',AControl.HostDockSite.Name]); + if AControl.HostDockSite is TAnchorDockHostSite then begin + if not TAnchorDockHostSite(AControl.HostDockSite).CloseSite then begin + if FControls.IndexOf(AControl)<0 then + AControl:=nil; + debugln(['TAnchorDockMaster.CloseUnneededControls CloseSite failed Control=',DbgSName(AControl)]); + exit(false); + end; end; end; if FControls.IndexOf(AControl)>=0 then begin @@ -1465,7 +1535,7 @@ raise EAnchorDockLayoutError.Create('not a docksite: '+DbgSName(AControl)); finally if not DisableAutoSizing then - AControl.EnableAutoSizing; + AControl.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}(ADAutoSizingReason){$ENDIF}; end; end else begin debugln(['CreateControlsForNode ',Node.Name,' failed to create']); @@ -1687,6 +1757,7 @@ aManager: TAnchorDockManager; NewBounds: TRect; aMonitor: TMonitor; + aHostSite: TAnchorDockHostSite; begin if Parent=nil then begin if (Node.Monitor>=0) and (Node.MonitoradltnPages) and (aHostSite.Pages<>nil) then + aHostSite.FreePages; end; if Parent=nil then begin Site.WindowState:=Node.WindowState; + end else begin + Site.WindowState:=wsNormal; end; end; @@ -1756,11 +1832,13 @@ AControl: TControl; Site: TAnchorDockHostSite; Splitter: TAnchorDockSplitter; - i: Integer; + i, j: Integer; Side: TAnchorKind; AnchorControl: TControl; ChildNode: TAnchorDockLayoutTreeNode; NewBounds: TRect; + aPageName: String; + aPage: TCustomPage; begin Result:=nil; if Scale and SrcRectValid(Node.WorkAreaRect) then @@ -1895,20 +1973,29 @@ debugln(['TAnchorDockMaster.RestoreLayout.Restore Pages Node.Name=',Node.Name,' ChildCount=',Node.Count]); {$ENDIF} Site.BeginUpdateLayout; + j:=0; try SetupSite(Site,Node,Parent); Site.FSiteType:=adhstPages; Site.Header.Parent:=nil; - Site.CreatePages; + if Site.Pages=nil then + Site.CreatePages; for i:=0 to Node.Count-1 do begin - Site.Pages.Pages.Add(Node[i].Name); - AControl:=Restore(Node[i],Site.Pages.Page[i]); + aPageName:=Node[i].Name; + if j>=Site.Pages.PageCount then + Site.Pages.Pages.Add(aPageName); + aPage:=Site.Pages.Page[j]; + inc(j); + AControl:=Restore(Node[i],aPage); if AControl=nil then continue; AControl.Align:=alClient; for Side:=Low(TAnchorKind) to high(TAnchorKind) do AControl.AnchorSide[Side].Control:=nil; end; finally + while Site.Pages.PageCount>j do + Site.Pages.Page[Site.Pages.PageCount-1].Free; + Site.SimplifyPages; Site.EndUpdateLayout; end; Result:=Site; @@ -1945,7 +2032,7 @@ //debugln(['TAnchorDockMaster.DisableControlAutoSizing ',DbgSName(AControl)]); fDisabledAutosizing.Add(AControl); AControl.FreeNotification(Self); - AControl.DisableAutoSizing; + AControl.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}(ADAutoSizingReason){$ENDIF}; end; procedure TAnchorDockMaster.EnableAllAutoSizing; @@ -1955,10 +2042,10 @@ begin i:=fDisabledAutosizing.Count-1; while (i>=0) do begin - //debugln(['TAnchorDockMaster.EnableAllAutoSizing ',DbgSName(TControl(fDisabledAutosizing[i]))]); AControl:=TControl(fDisabledAutosizing[i]); + //debugln(['TAnchorDockMaster.EnableAllAutoSizing ',DbgSName(AControl)]); fDisabledAutosizing.Delete(i); - AControl.EnableAutoSizing; + AControl.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}(ADAutoSizingReason){$ENDIF}; i:=Min(i,fDisabledAutosizing.Count)-1; end; end; @@ -2015,6 +2102,71 @@ AddPopupMenuItem('OptionsMenuItem', adrsDockingOptions, @OptionsClick); end; +procedure TAnchorDockMaster.ResetSplitters; +var + I: Integer; + S: TAnchorDockSplitter; +begin + for I := 0 to ComponentCount-1 do + if Components[I] is TAnchorDockSplitter then + begin + S := TAnchorDockSplitter(Components[I]); + S.UpdateDockBounds; + S.UpdatePercentPosition; + end; +end; + +function TAnchorDockMaster.FullRestoreLayout(Tree: TAnchorDockLayoutTree; + Scale: Boolean): Boolean; +var + ControlNames: TStringList; +begin + Result:=false; + ControlNames:=TStringList.Create; + fTreeNameToDocker:=TADNameToControl.Create; + try + // close all unneeded forms/controls (not helper controls like splitters) + if not CloseUnneededControls(Tree) then exit; + + BeginUpdate; + try + // create all needed forms/controls (not helper controls like splitters) + if not CreateNeededControls(Tree,true,ControlNames) then exit; + + // simplify layouts + ControlNames.Sort; + {$IFDEF VerboseAnchorDockRestore} + debugln(['TAnchorDockMaster.LoadLayoutFromConfig controls: ']); + debugln(ControlNames.Text); + {$ENDIF} + // if some forms/controls could not be created the layout needs to be adapted + Tree.Root.Simplify(ControlNames); + + // reuse existing sites to reduce flickering + MapTreeToControls(Tree); + {$IFDEF VerboseAnchorDockRestore} + fTreeNameToDocker.WriteDebugReport('TAnchorDockMaster.LoadLayoutFromConfig Map'); + {$ENDIF} + + // create sites, move controls + RestoreLayout(Tree,Scale); + finally + EndUpdate; + end; + finally + // clean up + FreeAndNil(fTreeNameToDocker); + ControlNames.Free; + // commit (this can raise an exception, when it triggers events) + EnableAllAutoSizing; + end; + ResetSplitters; // reset splitters' DockBounds after EnableAllAutoSizing. fixes issue #18538 + {$IFDEF VerboseAnchorDockRestore} + DebugWriteChildAnchors(Application.MainForm,true,false); + {$ENDIF} + Result:=true; +end; + procedure TAnchorDockMaster.SetHideHeaderCaptionFloatingControl( const AValue: boolean); var @@ -2041,10 +2193,13 @@ for i:=0 to ComponentCount-1 do begin Splitter:=TAnchorDockSplitter(Components[i]); if not (Splitter is TAnchorDockSplitter) then continue; - if Splitter.ResizeAnchor in [akLeft,akRight] then - Splitter.Width:=SplitterWidth - else - Splitter.Height:=SplitterWidth; + if not Splitter.CustomWidth then + begin + if Splitter.ResizeAnchor in [akLeft,akRight] then + Splitter.Width:=SplitterWidth + else + Splitter.Height:=SplitterWidth; + end; end; OptionsChanged; end; @@ -2117,13 +2272,6 @@ OptionsChanged; end; -procedure TAnchorDockMaster.SetSaveOnClose(AValue: boolean); -begin - if FSaveOnClose=AValue then Exit; - FSaveOnClose:=AValue; - OptionsChanged; -end; - procedure TAnchorDockMaster.SetHeaderFlatten(AValue: boolean); begin if FHeaderFlatten=AValue then Exit; @@ -2311,7 +2459,6 @@ FHideHeaderCaptionFloatingControl:=true; FSplitterWidth:=4; FScaleOnResize:=true; - FSaveOnClose:=true; fNeedSimplify:=TFPList.Create; fNeedFree:=TFPList.Create; fDisabledAutosizing:=TFPList.Create; @@ -2501,7 +2648,7 @@ raise Exception.Create('TAnchorDockMaster.MakeDockable '+ adrsControlIsAlreadyADocksite); Site:=nil; - AControl.DisableAutoSizing; + AControl.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster.DisableControlAutoSizing'){$ENDIF}; try if AControl is TAnchorDockHostSite then begin // already a site @@ -2530,7 +2677,7 @@ end; finally if Site<>nil then - Site.EnableAutoSizing; + Site.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}(ADAutoSizingReason){$ENDIF}; end; end else if AControl.Parent is TAnchorDockHostSite then begin // AControl is already docked => show site @@ -2543,7 +2690,7 @@ if (Site<>nil) and Show then MakeVisible(Site,BringToFront); finally - AControl.EnableAutoSizing; + AControl.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster.DisableControlAutoSizing'){$ENDIF}; end; // BringToFront if Show and BringToFront and (Site<>nil) then begin @@ -2569,7 +2716,7 @@ adrsModalFormsCanNotBeMadeDockable); if Sites=[] then raise Exception.Create('TAnchorDockMaster.MakeDockSite Sites=[]'); - AForm.DisableAutoSizing; + AForm.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster.MakeDockSite'){$ENDIF}; try if FControls.IndexOf(AForm)<0 then begin FControls.Add(AForm); @@ -2583,7 +2730,7 @@ AForm.UseDockManager:=true; AForm.DockSite:=true; finally - AForm.EnableAutoSizing; + AForm.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster.MakeDockSite'){$ENDIF}; end; end; @@ -2638,6 +2785,28 @@ end; end; +procedure TAnchorDockMaster.SaveLayoutToConfig(Config: TConfigStorage); +var + Tree: TAnchorDockLayoutTree; +begin + Tree:=TAnchorDockLayoutTree.Create; + try + Config.AppendBasePath('MainConfig/'); + SaveMainLayoutToTree(Tree); + Tree.SaveToConfig(Config); + Config.UndoAppendBasePath; + Config.AppendBasePath('Restores/'); + RestoreLayouts.SaveToConfig(Config); + Config.UndoAppendBasePath; + {$IFDEF VerboseAnchorDocking} + WriteDebugLayout('TAnchorDockMaster.SaveLayoutToConfig ',Tree.Root); + {$ENDIF} + //DebugWriteChildAnchors(Tree.Root); + finally + Tree.Free; + end; +end; + procedure TAnchorDockMaster.SaveMainLayoutToTree(LayoutTree: TAnchorDockLayoutTree); var i: Integer; @@ -2745,26 +2914,6 @@ AddControlNames(AControl,Result); end; -procedure TAnchorDockMaster.SaveLayoutToConfig(Config: TConfigStorage); -var - Tree: TAnchorDockLayoutTree; -begin - Tree:=TAnchorDockLayoutTree.Create; - try - Config.AppendBasePath('MainConfig/'); - SaveMainLayoutToTree(Tree); - Tree.SaveToConfig(Config); - Config.UndoAppendBasePath; - Config.AppendBasePath('Restores/'); - RestoreLayouts.SaveToConfig(Config); - Config.UndoAppendBasePath; - WriteDebugLayout('TAnchorDockMaster.SaveLayoutToConfig ',Tree.Root); - //DebugWriteChildAnchors(Tree.Root); - finally - Tree.Free; - end; -end; - function TAnchorDockMaster.ConfigIsEmpty(Config: TConfigStorage): boolean; begin Result:=Config.GetValue('MainConfig/Nodes/ChildCount',0)=0; @@ -2879,7 +3028,6 @@ HeaderAlignLeft := Settings.HeaderAlignLeft; SplitterWidth := Settings.SplitterWidth; ScaleOnResize := Settings.ScaleOnResize; - SaveOnClose := Settings.SaveOnClose; ShowHeader := Settings.ShowHeader; ShowHeaderCaption := Settings.ShowHeaderCaption; HideHeaderCaptionFloatingControl := Settings.HideHeaderCaptionFloatingControl; @@ -2899,7 +3047,6 @@ Settings.HeaderAlignLeft:=HeaderAlignLeft; Settings.SplitterWidth:=SplitterWidth; Settings.ScaleOnResize:=ScaleOnResize; - Settings.SaveOnClose:=SaveOnClose; Settings.ShowHeader:=ShowHeader; Settings.ShowHeaderCaption:=ShowHeaderCaption; Settings.HideHeaderCaptionFloatingControl:=HideHeaderCaptionFloatingControl; @@ -3028,7 +3175,7 @@ if fNeedFree.IndexOf(AControl)>=0 then exit; if csDestroying in AControl.ComponentState then exit; fNeedFree.Add(AControl); - AControl.DisableAutoSizing; + AControl.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}(ADAutoSizingReason){$ENDIF}; AControl.Parent:=nil; AControl.Visible:=false; end; @@ -3182,16 +3329,26 @@ NewName: String; begin Result:=TAnchorDockHostSite(SiteClass.NewInstance); + {$IFDEF DebugDisableAutoSizing} + if DisableAutoSizing then + Result.DisableAutoSizing(ADAutoSizingReason) + else + Result.DisableAutoSizing('TAnchorDockMaster.CreateSite'); + {$ELSE} Result.DisableAutoSizing; - Result.CreateNew(Self,1); - i:=0; - repeat - inc(i); - NewName:=NamePrefix+AnchorDockSiteName+IntToStr(i); - until (Screen.FindForm(NewName)=nil) and (FindComponent(NewName)=nil); - Result.Name:=NewName; - if not DisableAutoSizing then - Result.EnableAutoSizing; + {$ENDIF}; + try + Result.CreateNew(Self,1); + i:=0; + repeat + inc(i); + NewName:=NamePrefix+AnchorDockSiteName+IntToStr(i); + until (Screen.FindForm(NewName)=nil) and (FindComponent(NewName)=nil); + Result.Name:=NewName; + finally + if not DisableAutoSizing then + Result.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster.CreateSite'){$ENDIF}; + end; end; function TAnchorDockMaster.CreateSplitter(NamePrefix: string @@ -3247,12 +3404,12 @@ if UpdatingLayout then exit; //debugln(['TAnchorDockHostSite.ExecuteDock Self="',Caption,'" Control=',DbgSName(NewControl),' DropOnControl=',DbgSName(DropOnControl),' Align=',dbgs(DockAlign)]); - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.ExecuteDock HostSite'){$ENDIF}; try BeginUpdateLayout; try DockMaster.SimplifyPendingLayouts; - NewControl.DisableAutoSizing; + NewControl.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.ExecuteDock NewControl'){$ENDIF}; if (NewControl.Parent=Self) and (SiteType=adhstLayout) then begin // change of layout, one child is docked to the outer side @@ -3294,12 +3451,12 @@ Result:=DockAnotherControl(nil,NewControl,DockAlign,DropOnControl<>nil); end; - NewControl.EnableAutoSizing; + NewControl.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.ExecuteDock NewControl'){$ENDIF}; finally EndUpdateLayout; end; finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.ExecuteDock HostSite'){$ENDIF}; end; end; @@ -3627,6 +3784,11 @@ FPages.Align:=alClient; end; +procedure TAnchorDockHostSite.FreePages; +begin + FreeAndNil(FPages); +end; + function TAnchorDockHostSite.DockSecondPage(NewControl: TControl): boolean; var OldControl: TControl; @@ -3984,7 +4146,7 @@ {$IFDEF VerboseAnchorDockPages} debugln(['TAnchorDockHostSite.SimplifyPages "',Caption,'" PageCount=1']); {$ENDIF} - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.SimplifyPages'){$ENDIF}; BeginUpdateLayout; try // move the content of the Page to the place where Pages is @@ -3996,19 +4158,19 @@ if SiteType=adhstPages then FSiteType:=adhstOneControl; // free Pages - FreeAndNil(FPages); + FreePages; if SiteType=adhstOneControl then SimplifyOneControl; finally EndUpdateLayout; - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.SimplifyPages'){$ENDIF}; end; //debugln(['TAnchorDockHostSite.SimplifyPages END Self="',Caption,'"']); //DebugWriteChildAnchors(GetParentForm(Self),true,true); end else if Pages.PageCount=0 then begin //debugln(['TAnchorDockHostSite.SimplifyPages "',Caption,'" PageCount=0 Self=',dbgs(Pointer(Self))]); FSiteType:=adhstNone; - FreeAndNil(FPages); + FreePages; DockMaster.NeedSimplify(Self); end; end; @@ -4023,7 +4185,7 @@ if SiteType<>adhstOneControl then exit; if not IsOneSiteLayout(Site) then exit; debugln(['TAnchorDockHostSite.SimplifyOneControl Self="',Caption,'" Site="',Site.Caption,'"']); - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.SimplifyOneControl'){$ENDIF}; BeginUpdateLayout; try // move the content of Site up and free Site @@ -4065,7 +4227,7 @@ DockMaster.NeedFree(Site); finally EndUpdateLayout; - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.SimplifyOneControl'){$ENDIF}; end; //debugln(['TAnchorDockHostSite.SimplifyOneControl END Self="',Caption,'"']); @@ -4156,7 +4318,7 @@ try AControl.ManualDock(Result,nil,alClient); finally - Result.EnableAutoSizing; + Result.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}(ADAutoSizingReason){$ENDIF}; end; end; end; @@ -4198,17 +4360,7 @@ if Child is TAnchorDockSplitter then begin Splitter:=TAnchorDockSplitter(Child); //debugln(['TAnchorDockHostSite.AlignControls ',Caption,' ',DbgSName(Splitter),' OldBounds=',dbgs(Splitter.BoundsRect),' BaseBounds=',dbgs(Splitter.DockBounds),' BaseParentSize=',dbgs(Splitter.DockParentClientSize),' ParentSize=',ClientWidth,'x',ClientHeight]); - if Splitter.ResizeAnchor in [akLeft,akRight] then begin - if Splitter.DockParentClientSize.cx>0 then - Splitter.SetBoundsKeepDockBounds( - (Splitter.DockBounds.Left*ClientWidth) div Splitter.DockParentClientSize.cx, - Splitter.Top,Splitter.Width,Splitter.Height); - end else begin - if Splitter.DockParentClientSize.cy>0 then - Splitter.SetBoundsKeepDockBounds(Splitter.Left, - (Splitter.DockBounds.Top*ClientHeight) div Splitter.DockParentClientSize.cy, - Splitter.Width,Splitter.Height); - end; + Splitter.SetBoundsPercentually; //debugln(['TAnchorDockHostSite.AlignControls ',Caption,' ',DbgSName(Child),' NewBounds=',dbgs(Child.BoundsRect)]); end; end; @@ -4234,11 +4386,14 @@ Result:=true; // => undock BeginUpdateLayout; - DisableAutoSizing; - debugln(['TAnchorDockHostSite.CheckIfOneControlHidden ',DbgSName(Self),' UpdatingLayout=',UpdatingLayout,' Visible=',Visible,' Parent=',DbgSName(Parent),' csDestroying=',csDestroying in ComponentState,' SiteType=',dbgs(SiteType),' Child=',DbgSName(Child),' Child.csDestroying=',csDestroying in Child.ComponentState]); - Visible:=false; - Parent:=nil; - EnableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.CheckIfOneControlHidden'){$ENDIF}; + try + debugln(['TAnchorDockHostSite.CheckIfOneControlHidden ',DbgSName(Self),' UpdatingLayout=',UpdatingLayout,' Visible=',Visible,' Parent=',DbgSName(Parent),' csDestroying=',csDestroying in ComponentState,' SiteType=',dbgs(SiteType),' Child=',DbgSName(Child),' Child.csDestroying=',csDestroying in Child.ComponentState]); + Visible:=false; + Parent:=nil; + finally + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.CheckIfOneControlHidden'){$ENDIF}; + end; EndUpdateLayout; if (not (Child is TCustomForm)) or (csDestroying in Child.ComponentState) then Release; @@ -4247,7 +4402,8 @@ procedure TAnchorDockHostSite.DoDock(NewDockSite: TWinControl; var ARect: TRect); begin inherited DoDock(NewDockSite, ARect); - DockMaster.SimplifyPendingLayouts; + if DockMaster <> nil then + DockMaster.SimplifyPendingLayouts; end; procedure TAnchorDockHostSite.SetParent(NewParent: TWinControl); @@ -4301,12 +4457,15 @@ p: TPoint; begin if Parent=nil then exit; - DisableAutoSizing; - p := Point(0,0); - p := ClientToScreen(p); - Parent:=nil; - SetBounds(p.x,p.y,Width,Height); - EnableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.Undock'){$ENDIF}; + try + p := Point(0,0); + p := ClientToScreen(p); + Parent:=nil; + SetBounds(p.x,p.y,Width,Height); + finally + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.Undock'){$ENDIF}; + end; end; function TAnchorDockHostSite.CanMerge: boolean; @@ -4329,7 +4488,7 @@ if (SiteType<>adhstLayout) or (ParentSite.SiteType<>adhstLayout) then RaiseGDBException(''); ParentSite.BeginUpdateLayout; - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.Merge'){$ENDIF}; try for i := ControlCount - 1 downto 0 do begin Child := Controls[i]; @@ -4422,7 +4581,7 @@ ParentSite:=TAnchorDockHostSite(Parent); if not OnlyCheckIfPossible then begin ParentSite.BeginUpdateLayout; - ParentSite.DisableAutoSizing; + ParentSite.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.EnlargeSideResizeTwoSplitters'){$ENDIF}; end; try // check ShrinkSplitter @@ -4479,7 +4638,7 @@ finally if not OnlyCheckIfPossible then begin - ParentSite.EnableAutoSizing; + ParentSite.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.EnlargeSideResizeTwoSplitters'){$ENDIF}; ParentSite.EndUpdateLayout; end; end; @@ -4570,7 +4729,7 @@ //debugln(['TAnchorDockHostSite.EnlargeSideRotateSplitter BEFORE Self=',DbgSName(Self),'=',dbgs(BoundsRect),' Side=',dbgs(Side),' CWSide=',dbgs(CWSide),' CWSplitter=',CWSplitter.Name,'=',dbgs(CWSplitter.BoundsRect),' CCWSide=',dbgs(CCWSide),' CCWSplitter=',CCWSplitter.Name,'=',dbgs(CCWSplitter.BoundsRect),' Behind=',dbgs(BehindSide),'=',RotateSplitter.Name,'=',dbgs(RotateSplitter.BoundsRect)]); - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.EnlargeSideRotateSplitter'){$ENDIF}; try // enlarge the two neighbor splitters AnchorAndChangeBounds(CWSplitter,Side,RotateSplitter.AnchorSide[Side].Control); @@ -4616,7 +4775,7 @@ end; //debugln(['TAnchorDockHostSite.EnlargeSideRotateSplitter AFTER Self=',DbgSName(Self),'=',dbgs(BoundsRect),' Side=',dbgs(Side),' CWSide=',dbgs(CWSide),' CWSplitter=',CWSplitter.Name,'=',dbgs(CWSplitter.BoundsRect),' CCWSide=',dbgs(CCWSide),' CCWSplitter=',CCWSplitter.Name,'=',dbgs(CCWSplitter.BoundsRect),' Behind=',dbgs(BehindSide),'=',RotateSplitter.Name,'=',dbgs(RotateSplitter.BoundsRect)]); finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.EnlargeSideRotateSplitter'){$ENDIF}; end; end; @@ -4685,7 +4844,7 @@ end; adhstOneControl: begin - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.CloseSite'){$ENDIF}; NeedEnableAutoSizing:=true; try AControl:=GetOneControl; @@ -4727,7 +4886,7 @@ Parent:=nil; finally if NeedEnableAutoSizing then - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.CloseSite'){$ENDIF}; end; end; end; @@ -4737,26 +4896,29 @@ begin //debugln(['TAnchorDockHostSite.RemoveControl ',DbgSName(Self),'=',Caption,' ',DbgSName(AControl)]); DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.RemoveControl'){$ENDIF}; - inherited RemoveControl(AControl); - if not (csDestroying in ComponentState) then begin - if (not ((AControl is TAnchorDockHeader) - or (AControl is TAnchorDockSplitter))) - then begin - //debugln(['TAnchorDockHostSite.RemoveControl START ',Caption,' ',dbgs(SiteType),' ',DbgSName(AControl),' UpdatingLayout=',UpdatingLayout]); - if (SiteType=adhstLayout) then - RemoveControlFromLayout(AControl) - else - DockMaster.NeedSimplify(Self); - UpdateDockCaption; - //debugln(['TAnchorDockHostSite.RemoveControl END ',Caption,' ',dbgs(SiteType),' ',DbgSName(AControl)]); + try + inherited RemoveControl(AControl); + if not (csDestroying in ComponentState) then begin + if (not ((AControl is TAnchorDockHeader) + or (AControl is TAnchorDockSplitter))) + then begin + //debugln(['TAnchorDockHostSite.RemoveControl START ',Caption,' ',dbgs(SiteType),' ',DbgSName(AControl),' UpdatingLayout=',UpdatingLayout]); + if (SiteType=adhstLayout) then + RemoveControlFromLayout(AControl) + else + DockMaster.NeedSimplify(Self); + UpdateDockCaption; + //debugln(['TAnchorDockHostSite.RemoveControl END ',Caption,' ',dbgs(SiteType),' ',DbgSName(AControl)]); + end; end; + finally + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.RemoveControl'){$ENDIF}; end; - EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.RemoveControl'){$ENDIF}; end; procedure TAnchorDockHostSite.InsertControl(AControl: TControl; Index: integer); begin - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.InsertControl'){$ENDIF}; try inherited InsertControl(AControl, Index); if not ((AControl is TAnchorDockSplitter) @@ -4764,7 +4926,7 @@ then UpdateDockCaption; finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.InsertControl'){$ENDIF}; end; end; @@ -4992,7 +5154,7 @@ debugln(['TAnchorDockHostSite.Destroy Component ',i,'/',ComponentCount,' ',DbgSName(Components[i])]); for i:=0 to ControlCount-1 do debugln(['TAnchorDockHostSite.Destroy Control ',i,'/',ControlCount,' ',DbgSName(Controls[i])]);} - FreeAndNil(FPages); + FreePages; inherited Destroy; end; @@ -5230,10 +5392,13 @@ procedure TAnchorDockHeader.SetAlign(Value: TAlign); begin if Value=Align then exit; - DisableAutoSizing; - inherited SetAlign(Value); - UpdateHeaderControls; - EnableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.SetAlign'){$ENDIF}; + try + inherited SetAlign(Value); + UpdateHeaderControls; + finally + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockHostSite.SetAlign'){$ENDIF}; + end; end; procedure TAnchorDockHeader.DoOnShowHint(HintInfo: PHintInfo); @@ -5367,7 +5532,7 @@ //debugln(['TAnchorDockManager.InsertControl DockSite="',DockSite.Caption,'" Control=',DbgSName(ADockObject.Control),' InsertAt=',dbgs(ADockObject.DropAlign)]) end else begin debugln(['TAnchorDockManager.InsertControl DockSite=nil Site="',DbgSName(Site),'" Control=',DbgSName(ADockObject.Control),' InsertAt=',dbgs(ADockObject.DropAlign),' Site.Bounds=',dbgs(Site.BoundsRect),' Control.Client=',dbgs(ADockObject.Control.ClientRect),' Parent=',DbgSName(ADockObject.Control.Parent)]); - Site.DisableAutoSizing; + Site.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockManager.InsertControl'){$ENDIF}; try // align dragged Control Child:=ADockObject.Control; @@ -5422,7 +5587,7 @@ debugln(['TAnchorDockManager.InsertControl AFTER Site="',DbgSName(Site),'" Control=',DbgSName(ADockObject.Control),' InsertAt=',dbgs(ADockObject.DropAlign),' Site.Bounds=',dbgs(Site.BoundsRect),' Control.ClientRect=',dbgs(ADockObject.Control.ClientRect)]); finally - Site.EnableAutoSizing; + Site.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockManager.InsertControl'){$ENDIF}; end; end; end; @@ -5885,6 +6050,9 @@ akRight: Anchors:=AnchorAlign[alRight]; akBottom: Anchors:=AnchorAlign[alBottom]; end; + + UpdatePercentPosition; + //debugln(['TAnchorDockSplitter.SetResizeAnchor ',DbgSName(Self),' ResizeAnchor=',dbgs(ResizeAnchor),' Align=',dbgs(Align),' Anchors=',dbgs(Anchors)]); end; @@ -5903,24 +6071,74 @@ FDockParentClientSize.cx:=0; FDockParentClientSize.cy:=0; end; + if FPercentPosition < 0 then + UpdatePercentPosition; +end; + +procedure TAnchorDockSplitter.UpdatePercentPosition; +begin + case ResizeAnchor of + akTop, akBottom: + if FDockParentClientSize.cy > 0 then + FPercentPosition := Top / FDockParentClientSize.cy + else + FPercentPosition := -1; + else + if FDockParentClientSize.cx > 0 then + FPercentPosition := Left / FDockParentClientSize.cx + else + FPercentPosition := -1; + end; end; procedure TAnchorDockSplitter.SetBounds(ALeft, ATop, AWidth, AHeight: integer); begin - DisableAutoSizing; - inherited SetBounds(ALeft, ATop, AWidth, AHeight); - UpdateDockBounds; - EnableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockSplitter.SetBounds'){$ENDIF}; + try + inherited SetBounds(ALeft, ATop, AWidth, AHeight); + UpdateDockBounds; + finally + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockSplitter.SetBounds'){$ENDIF}; + end; end; -procedure TAnchorDockSplitter.SetBoundsKeepDockBounds(ALeft, ATop, AWidth, - AHeight: integer); +procedure TAnchorDockSplitter.SetBoundsKeepDockBounds(ALeft, ATop, AWidth, AHeight: integer); begin inherited SetBounds(ALeft,ATop,AWidth,AHeight); end; -function TAnchorDockSplitter.SideAnchoredControlCount(Side: TAnchorKind - ): integer; +procedure TAnchorDockSplitter.SetBoundsPercentually; +var + NewLeft, NewTop: Integer; +begin + if ResizeAnchor in [akLeft,akRight] then + begin + if DockParentClientSize.cx> 0 then + begin + if (FPercentPosition > 0) or SameValue(FPercentPosition, 0) then + NewLeft := Round(FPercentPosition*Parent.ClientWidth) + else + NewLeft := (DockBounds.Left*Parent.ClientWidth) div DockParentClientSize.cx; + NewTop := Top; + SetBoundsKeepDockBounds(NewLeft,NewTop,Width,Height); + end; + end else + begin + if DockParentClientSize.cy> 0 then + begin + NewLeft := Left; + if (FPercentPosition > 0) or SameValue(FPercentPosition, 0) then + NewTop := Round(FPercentPosition*Parent.ClientHeight) + else + NewTop := (DockBounds.Top*Parent.ClientHeight) div DockParentClientSize.cy; + SetBoundsKeepDockBounds(NewLeft,NewTop,Width,Height); + end; + end; + if FPercentPosition < 0 then + UpdatePercentPosition; +end; + +function TAnchorDockSplitter.SideAnchoredControlCount(Side: TAnchorKind): integer; var Sibling: TControl; i: Integer; @@ -5986,6 +6204,24 @@ end; end; +procedure TAnchorDockSplitter.MoveSplitter(Offset: integer); +begin + FPercentPosition:=-1; + inherited MoveSplitter(Offset); + UpdatePercentPosition; +end; + +procedure TAnchorDockSplitter.Paint; +begin + if Enabled then + inherited Paint + else + begin + Canvas.Brush.Color := clDefault; + Canvas.FillRect(ClientRect); + end; +end; + constructor TAnchorDockSplitter.Create(TheOwner: TComponent); begin inherited Create(TheOwner); @@ -5995,6 +6231,7 @@ Constraints.MinWidth:=2; Constraints.MinHeight:=2; PopupMenu:=DockMaster.GetPopupMenu; + FPercentPosition:=-1; end; { TAnchorDockPageControl } diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/anchordockoptionsdlg.lfm lazarus-1.6+dfsg/components/anchordocking/anchordockoptionsdlg.lfm --- lazarus-1.4.4+dfsg/components/anchordocking/anchordockoptionsdlg.lfm 2014-10-20 15:29:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/anchordockoptionsdlg.lfm 2015-09-07 22:01:22.000000000 +0000 @@ -14,9 +14,9 @@ AnchorSideTop.Control = HeaderStyleComboBox AnchorSideTop.Side = asrBottom Left = 10 - Height = 16 - Top = 32 - Width = 127 + Height = 15 + Top = 35 + Width = 106 BorderSpacing.Left = 10 Caption = 'DragThresholdLabel' ParentColor = False @@ -26,9 +26,9 @@ AnchorSideTop.Control = FilledHeaders AnchorSideTop.Side = asrBottom Left = 10 - Height = 16 - Top = 308 - Width = 135 + Height = 15 + Top = 295 + Width = 114 BorderSpacing.Top = 10 Caption = 'HeaderAlignTopLabel' ParentColor = False @@ -38,9 +38,9 @@ AnchorSideTop.Control = HeaderAlignTopTrackBar AnchorSideTop.Side = asrBottom Left = 10 - Height = 16 - Top = 380 - Width = 134 + Height = 15 + Top = 367 + Width = 114 BorderSpacing.Top = 10 Caption = 'HeaderAlignLeftLabel' ParentColor = False @@ -50,21 +50,22 @@ AnchorSideTop.Control = DragThresholdTrackBar AnchorSideTop.Side = asrBottom Left = 10 - Height = 16 - Top = 104 - Width = 114 + Height = 15 + Top = 106 + Width = 97 BorderSpacing.Top = 10 Caption = 'SplitterWidthLabel' ParentColor = False end object ScaleOnResizeCheckBox: TCheckBox AnchorSideLeft.Control = DragThresholdLabel - AnchorSideTop.Control = SaveLayoutOnCloseCheckBox + AnchorSideTop.Control = SplitterWidthTrackBar AnchorSideTop.Side = asrBottom Left = 10 - Height = 18 - Top = 190 - Width = 172 + Height = 19 + Top = 171 + Width = 147 + BorderSpacing.Top = 4 Caption = 'ScaleOnResizeCheckBox' ParentShowHint = False ShowHint = True @@ -78,7 +79,7 @@ AnchorSideRight.Side = asrBottom Left = 10 Height = 46 - Top = 48 + Top = 50 Width = 396 Max = 20 OnChange = DragThresholdTrackBarChange @@ -96,8 +97,8 @@ AnchorSideRight.Control = DragThresholdTrackBar AnchorSideRight.Side = asrBottom Left = 10 - Height = 46 - Top = 324 + Height = 47 + Top = 310 Width = 396 Frequency = 10 Max = 150 @@ -116,8 +117,8 @@ AnchorSideRight.Control = DragThresholdTrackBar AnchorSideRight.Side = asrBottom Left = 10 - Height = 46 - Top = 396 + Height = 47 + Top = 382 Width = 396 Frequency = 10 Max = 200 @@ -137,7 +138,7 @@ AnchorSideRight.Side = asrBottom Left = 10 Height = 46 - Top = 120 + Top = 121 Width = 396 Min = 1 OnChange = SplitterWidthTrackBarChange @@ -152,9 +153,9 @@ AnchorSideTop.Control = ShowHeaderCheckBox AnchorSideTop.Side = asrBottom Left = 25 - Height = 18 - Top = 226 - Width = 209 + Height = 19 + Top = 209 + Width = 181 BorderSpacing.Left = 15 Caption = 'ShowHeaderCaptionCheckBox' ParentShowHint = False @@ -166,9 +167,9 @@ AnchorSideTop.Control = ShowHeaderCaptionCheckBox AnchorSideTop.Side = asrBottom Left = 25 - Height = 18 - Top = 244 - Width = 275 + Height = 19 + Top = 228 + Width = 237 Caption = 'HideHeaderCaptionForFloatingCheckBox' ParentShowHint = False ShowHint = True @@ -179,9 +180,9 @@ AnchorSideTop.Control = ScaleOnResizeCheckBox AnchorSideTop.Side = asrBottom Left = 10 - Height = 18 - Top = 208 - Width = 160 + Height = 19 + Top = 190 + Width = 139 Caption = 'ShowHeaderCheckBox' OnChange = ShowHeaderCheckBoxChange ParentShowHint = False @@ -194,14 +195,14 @@ AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 124 - Height = 20 + Left = 107 + Height = 23 Top = 6 - Width = 282 + Width = 299 Anchors = [akTop, akLeft, akRight] BorderSpacing.Right = 4 BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 OnDrawItem = HeaderStyleComboBoxDrawItem Style = csDropDownList TabOrder = 8 @@ -211,9 +212,9 @@ AnchorSideTop.Control = HeaderStyleComboBox AnchorSideTop.Side = asrCenter Left = 10 - Height = 16 - Top = 8 - Width = 108 + Height = 15 + Top = 10 + Width = 91 BorderSpacing.Left = 10 Caption = 'HeaderStyleLabel' ParentColor = False @@ -223,9 +224,9 @@ AnchorSideTop.Control = HideHeaderCaptionForFloatingCheckBox AnchorSideTop.Side = asrBottom Left = 25 - Height = 18 - Top = 262 - Width = 114 + Height = 19 + Top = 247 + Width = 99 Caption = 'FlattenHeaders' ParentShowHint = False ShowHint = True @@ -236,24 +237,12 @@ AnchorSideTop.Control = FlattenHeaders AnchorSideTop.Side = asrBottom Left = 25 - Height = 18 - Top = 280 - Width = 105 + Height = 19 + Top = 266 + Width = 91 Caption = 'FilledHeaders' ParentShowHint = False ShowHint = True TabOrder = 10 end - object SaveLayoutOnCloseCheckBox: TCheckBox - AnchorSideLeft.Control = SplitterWidthTrackBar - AnchorSideTop.Control = SplitterWidthTrackBar - AnchorSideTop.Side = asrBottom - Left = 10 - Height = 18 - Top = 172 - Width = 204 - BorderSpacing.Top = 6 - Caption = 'SaveLayoutOnCloseCheckBox' - TabOrder = 11 - end end diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/anchordockoptionsdlg.pas lazarus-1.6+dfsg/components/anchordocking/anchordockoptionsdlg.pas --- lazarus-1.4.4+dfsg/components/anchordocking/anchordockoptionsdlg.pas 2014-10-21 19:01:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/anchordockoptionsdlg.pas 2015-10-26 21:34:11.000000000 +0000 @@ -34,13 +34,13 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, - StdCtrls, ComCtrls, LCLProc, AnchorDocking, AnchorDockStr, types; + Classes, SysUtils, types, + Forms, Controls, ButtonPanel, StdCtrls, ComCtrls, + AnchorDocking, AnchorDockStr; type TAnchorDockOptionsFlag = ( - adofShow_ShowHeader, - adofShow_ShowSaveOnClose + adofShow_ShowHeader ); TAnchorDockOptionsFlags = set of TAnchorDockOptionsFlag; @@ -58,7 +58,6 @@ HeaderStyleComboBox: TComboBox; HeaderStyleLabel: TLabel; HideHeaderCaptionForFloatingCheckBox: TCheckBox; - SaveLayoutOnCloseCheckBox: TCheckBox; ScaleOnResizeCheckBox: TCheckBox; ShowHeaderCaptionCheckBox: TCheckBox; ShowHeaderCheckBox: TCheckBox; @@ -112,21 +111,24 @@ begin Dlg:=TForm.Create(nil); try - Dlg.DisableAutoSizing; - Dlg.Position:=poScreenCenter; - Dlg.AutoSize:=true; - Dlg.Caption:=adrsGeneralDockingOptions; - - OptsFrame:=TAnchorDockOptionsFrame.Create(Dlg); - OptsFrame.Align:=alClient; - OptsFrame.Parent:=Dlg; - OptsFrame.Master:=ADockMaster; - - BtnPanel:=TButtonPanel.Create(Dlg); - BtnPanel.ShowButtons:=[pbOK, pbCancel]; - BtnPanel.OKButton.OnClick:=@OptsFrame.OkClick; - BtnPanel.Parent:=Dlg; - Dlg.EnableAutoSizing; + Dlg.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('ShowAnchorDockOptions'){$ENDIF}; + try + Dlg.Position:=poScreenCenter; + Dlg.AutoSize:=true; + Dlg.Caption:=adrsGeneralDockingOptions; + + OptsFrame:=TAnchorDockOptionsFrame.Create(Dlg); + OptsFrame.Align:=alClient; + OptsFrame.Parent:=Dlg; + OptsFrame.Master:=ADockMaster; + + BtnPanel:=TButtonPanel.Create(Dlg); + BtnPanel.ShowButtons:=[pbOK, pbCancel]; + BtnPanel.OKButton.OnClick:=@OptsFrame.OkClick; + BtnPanel.Parent:=Dlg; + finally + Dlg.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('ShowAnchorDockOptions'){$ENDIF}; + end; Result:=Dlg.ShowModal; finally Dlg.Free; @@ -247,7 +249,6 @@ ShowHeaderCaptionCheckBox.BorderSpacing.Left:=15 else ShowHeaderCaptionCheckBox.BorderSpacing.Left:=0; - SaveLayoutOnCloseCheckBox.Visible:=adofShow_ShowSaveOnClose in Flags; end; constructor TAnchorDockOptionsFrame.Create(TheOwner: TComponent); @@ -292,7 +293,6 @@ TheSettings.HeaderAlignLeft:=HeaderAlignLeftTrackBar.Position; TheSettings.SplitterWidth:=SplitterWidthTrackBar.Position; TheSettings.ScaleOnResize:=ScaleOnResizeCheckBox.Checked; - TheSettings.SaveOnClose:=SaveLayoutOnCloseCheckBox.Checked; TheSettings.ShowHeader:=ShowHeaderCheckBox.Checked; TheSettings.ShowHeaderCaption:=ShowHeaderCaptionCheckBox.Checked; TheSettings.HideHeaderCaptionFloatingControl:=HideHeaderCaptionForFloatingCheckBox.Checked; @@ -336,9 +336,6 @@ SplitterWidthTrackBar.Position:=TheSettings.SplitterWidth; UpdateSplitterWidthLabel; - SaveLayoutOnCloseCheckBox.Caption:=adrsSaveLayoutOnClose; - SaveLayoutOnCloseCheckBox.Checked:=TheSettings.SaveOnClose; - ScaleOnResizeCheckBox.Caption:=adrsScaleOnResize; ScaleOnResizeCheckBox.Hint:=adrsScaleSubSitesWhenASiteIsResized; ScaleOnResizeCheckBox.Checked:=TheSettings.ScaleOnResize; diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/anchordockpkg.pas lazarus-1.6+dfsg/components/anchordocking/anchordockpkg.pas --- lazarus-1.4.4+dfsg/components/anchordocking/anchordockpkg.pas 2010-06-13 07:13:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/anchordockpkg.pas 2015-10-13 12:14:31.000000000 +0000 @@ -2,20 +2,13 @@ This source is only used to compile and install the package. } -unit anchordockpkg; +unit anchordockpkg; interface uses - AnchorDocking, AnchorDockStorage, AnchorDockStr, AnchorDockOptionsDlg, - LazarusPackageIntf; + AnchorDocking, AnchorDockStorage, AnchorDockStr, AnchorDockOptionsDlg; implementation -procedure Register; -begin -end; - -initialization - RegisterPackage('AnchorDocking', @Register); end. diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/anchordockstorage.pas lazarus-1.6+dfsg/components/anchordocking/anchordockstorage.pas --- lazarus-1.4.4+dfsg/components/anchordocking/anchordockstorage.pas 2014-06-15 11:52:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/anchordockstorage.pas 2016-01-08 11:56:59.000000000 +0000 @@ -34,8 +34,9 @@ interface uses - Math, Classes, SysUtils, LCLProc, AvgLvlTree, ExtCtrls, ComCtrls, Forms, - Controls, LazConfigStorage, AnchorDockStr; + Math, Classes, SysUtils, LCLProc, ExtCtrls, ComCtrls, Forms, Controls, + AvgLvlTree, LazConfigStorage, Laz2_XMLCfg, + AnchorDockStr; const AnchorDockSplitterName = 'AnchorDockSplitter'; @@ -111,10 +112,12 @@ destructor Destroy; override; procedure Clear; function IsEqual(Node: TAnchorDockLayoutTreeNode): boolean; - procedure Assign(Node: TAnchorDockLayoutTreeNode); - procedure Assign(AControl: TControl); - procedure LoadFromConfig(Config: TConfigStorage); - procedure SaveToConfig(Config: TConfigStorage); + procedure Assign(Node: TAnchorDockLayoutTreeNode); overload; + procedure Assign(AControl: TControl); overload; + procedure LoadFromConfig(Config: TConfigStorage); overload; + procedure LoadFromConfig(Path: string; Config: TRttiXMLConfig); overload; + procedure SaveToConfig(Config: TConfigStorage); overload; + procedure SaveToConfig(Path: string; Config: TRttiXMLConfig); overload; function FindChildNode(aName: string; Recursive: boolean): TAnchorDockLayoutTreeNode; function FindControlNode: TAnchorDockLayoutTreeNode; procedure CheckConsistency; virtual; @@ -181,14 +184,16 @@ constructor Create; destructor Destroy; override; procedure Clear; - procedure LoadFromConfig(Config: TConfigStorage); - procedure SaveToConfig(Config: TConfigStorage); + procedure Assign(Source: TObject); + procedure LoadFromConfig(Config: TConfigStorage); overload; + procedure LoadFromConfig(Path: string; Config: TRttiXMLConfig); overload; + procedure SaveToConfig(Config: TConfigStorage); overload; + procedure SaveToConfig(Path: string; Config: TRttiXMLConfig); overload; procedure IncreaseChangeStamp; property ChangeStamp: int64 read FChangeStamp; property Modified: boolean read GetModified write SetModified; property Root: TAnchorDockLayoutTreeRootNode read FRoot; function NewNode(aParent: TAnchorDockLayoutTreeNode): TAnchorDockLayoutTreeNode; - procedure Assign(Source: TObject); end; { TAnchorDockRestoreLayout } @@ -202,12 +207,15 @@ constructor Create; overload; constructor Create(aLayout: TAnchorDockLayoutTree); overload; destructor Destroy; override; + procedure Assign(Source: TAnchorDockRestoreLayout); function IndexOfControlName(AName: string): integer; function HasControlName(AName: string): boolean; procedure RemoveControlName(AName: string); procedure UpdateControlNames; - procedure LoadFromConfig(Config: TConfigStorage); - procedure SaveToConfig(Config: TConfigStorage); + procedure LoadFromConfig(Config: TConfigStorage); overload; + procedure LoadFromConfig(Path: string; Config: TRttiXMLConfig); overload; + procedure SaveToConfig(Config: TConfigStorage); overload; + procedure SaveToConfig(Path: string; Config: TRttiXMLConfig); overload; property ControlNames: TStrings read FControlNames write SetControlNames; property Layout: TAnchorDockLayoutTree read FLayout; end; @@ -222,16 +230,19 @@ constructor Create; destructor Destroy; override; procedure Clear; + procedure Assign(Source: TAnchorDockRestoreLayouts); procedure Delete(Index: integer); function IndexOfName(AControlName: string): integer; function FindByName(AControlName: string): TAnchorDockRestoreLayout; procedure Add(Layout: TAnchorDockRestoreLayout; RemoveOther: boolean); procedure RemoveByName(AControlName: string); - procedure LoadFromConfig(Config: TConfigStorage); - procedure SaveToConfig(Config: TConfigStorage); + procedure LoadFromConfig(Config: TConfigStorage); overload; + procedure LoadFromConfig(Path: string; Config: TRttiXMLConfig); overload; + procedure SaveToConfig(Config: TConfigStorage); overload; + procedure SaveToConfig(Path: string; Config: TRttiXMLConfig); overload; function ConfigIsEmpty(Config: TConfigStorage): boolean; function Count: integer; - property Items[Index: integer]: TAnchorDockRestoreLayout read GetItems; + property Items[Index: integer]: TAnchorDockRestoreLayout read GetItems; default; end; { TADNameToControl } @@ -1087,6 +1098,7 @@ TabPosition:=Node.TabPosition; BoundSplitterPos:=Node.BoundSplitterPos; WorkAreaRect:=Node.WorkAreaRect; + Monitor:=Node.Monitor; for a:=low(TAnchorKind) to high(TAnchorKind) do Anchors[a]:=Node.Anchors[a]; while Count>Node.Count do Nodes[Count-1].Free; @@ -1162,6 +1174,39 @@ end; end; +procedure TAnchorDockLayoutTreeNode.LoadFromConfig(Path: string; Config: TRttiXMLConfig); +var + i: Integer; + Child: TAnchorDockLayoutTreeNode; + NewCount: longint; +begin + Clear; + Name:=Config.GetValue(Path+'Name',''); + NodeType:=NameToADLTreeNodeType(Config.GetValue(Path+'Type',ADLTreeNodeTypeNames[adltnNone])); + Left:=Config.GetValue(Path+'Bounds/Left',0); + Top:=Config.GetValue(Path+'Bounds/Top',0); + Width:=Config.GetValue(Path+'Bounds/Width',0); + Height:=Config.GetValue(Path+'Bounds/Height',0); + BoundSplitterPos:=Config.GetValue(Path+'Bounds/SplitterPos',0); + Config.GetValue(Path+'Bounds/WorkArea/Rect/',FWorkAreaRect,Rect(0,0,0,0)); + Anchors[akLeft]:=Config.GetValue(Path+'Anchors/Left',''); + Anchors[akTop]:=Config.GetValue(Path+'Anchors/Top',''); + Anchors[akRight]:=Config.GetValue(Path+'Anchors/Right',''); + Anchors[akBottom]:=Config.GetValue(Path+'Anchors/Bottom',''); + Align:=NameToADLAlign(Config.GetValue(Path+'Anchors/Align',dbgs(alNone))); + WindowState:=NameToADLWindowState(Config.GetValue(Path+'WindowState',ADLWindowStateNames[wsNormal])); + HeaderPosition:=NameToADLHeaderPosition(Config.GetValue(Path+'Header/Position',ADLHeaderPositionNames[adlhpAuto])); + TabPosition:=NameToADLTabPosition(Config.GetValue(Path+'Header/TabPosition',ADLTabPostionNames[tpTop])); + Monitor:=Config.GetValue(Path+'Monitor',0); + NewCount:=Config.GetValue(Path+'ChildCount',0); + for i:=1 to NewCount do + begin + Child:=TAnchorDockLayoutTreeNode.Create; + Child.Parent:=Self; + Child.LoadFromConfig(Path+'Item'+IntToStr(i)+'/', Config); + end; +end; + procedure TAnchorDockLayoutTreeNode.SaveToConfig(Config: TConfigStorage); var i: Integer; @@ -1195,6 +1240,36 @@ end; end; +procedure TAnchorDockLayoutTreeNode.SaveToConfig(Path: string; Config: TRttiXMLConfig); +var + i: Integer; +begin + Config.SetDeleteValue(Path+'Name',Name,''); + Config.SetDeleteValue(Path+'Type',ADLTreeNodeTypeNames[NodeType], + ADLTreeNodeTypeNames[adltnNone]); + Config.SetDeleteValue(Path+'Bounds/Left',Left,0); + Config.SetDeleteValue(Path+'Bounds/Top',Top,0); + Config.SetDeleteValue(Path+'Bounds/Width',Width,0); + Config.SetDeleteValue(Path+'Bounds/Height',Height,0); + Config.SetDeleteValue(Path+'Bounds/SplitterPos',BoundSplitterPos,0); + Config.SetDeleteValue(Path+'Bounds/WorkArea/Rect/',FWorkAreaRect,Rect(0,0,0,0)); + Config.SetDeleteValue(Path+'Anchors/Left',Anchors[akLeft],''); + Config.SetDeleteValue(Path+'Anchors/Top',Anchors[akTop],''); + Config.SetDeleteValue(Path+'Anchors/Right',Anchors[akRight],''); + Config.SetDeleteValue(Path+'Anchors/Bottom',Anchors[akBottom],''); + Config.SetDeleteValue(Path+'Anchors/Align',ADLAlignNames[Align],ADLAlignNames[alNone]); + Config.SetDeleteValue(Path+'WindowState',ADLWindowStateNames[WindowState], + ADLWindowStateNames[wsNormal]); + Config.SetDeleteValue(Path+'Header/Position',ADLHeaderPositionNames[HeaderPosition], + ADLHeaderPositionNames[adlhpAuto]); + Config.SetDeleteValue(Path+'Header/TabPosition',ADLTabPostionNames[TabPosition], + ADLTabPostionNames[tpTop]); + Config.SetDeleteValue(Path+'Monitor',Monitor,0); + Config.SetDeleteValue(Path+'ChildCount',Count,0); + for i:=1 to Count do + Nodes[i-1].SaveToConfig(Path+'Item'+IntToStr(i)+'/', Config); +end; + function TAnchorDockLayoutTreeNode.FindChildNode(aName: string; Recursive: boolean): TAnchorDockLayoutTreeNode; var @@ -1256,7 +1331,7 @@ // check parent if (NodeType=adltnNone) and (Parent<>nil) then raise EAnchorDockLayoutError.Create('invalid parent, root node'); - if (NodeType=adltnCustomSite) and (Parent.NodeType<>adltnNone) then + if (NodeType=adltnCustomSite) and (Parent<>nil) and (Parent.NodeType<>adltnNone) then raise EAnchorDockLayoutError.Create('invalid parent, custom sites parent must be nil'); if (Parent<>nil) and IsSplitter and (Parent.NodeType<>adltnLayout) then raise EAnchorDockLayoutError.Create('invalid parent, splitter needs parent layout'); @@ -1673,6 +1748,12 @@ Root.CheckConsistency; end; +procedure TAnchorDockLayoutTree.LoadFromConfig(Path: string; Config: TRttiXMLConfig); +begin + FRoot.LoadFromConfig(Path+'Nodes/',Config); + Root.CheckConsistency; +end; + procedure TAnchorDockLayoutTree.SaveToConfig(Config: TConfigStorage); begin Config.AppendBasePath('Nodes/'); @@ -1680,6 +1761,11 @@ Config.UndoAppendBasePath; end; +procedure TAnchorDockLayoutTree.SaveToConfig(Path: string; Config: TRttiXMLConfig); +begin + FRoot.SaveToConfig(Path+'Nodes/',Config); +end; + procedure TAnchorDockLayoutTree.IncreaseChangeStamp; begin if FChangeStamp'') and IsValidIdent(AName) + and (Layout.Root<>nil) then begin + Node:=Layout.Root.FindChildNode(AName,true); + if (Node<>nil) and (Node.NodeType in [adltnControl,adltnCustomSite]) then + continue; + end; + FControlNames.Delete(i); + end; +end; + procedure TAnchorDockRestoreLayout.SaveToConfig(Config: TConfigStorage); begin FControlNames.Delimiter:=','; @@ -1883,10 +1997,17 @@ Layout.SaveToConfig(Config); end; +procedure TAnchorDockRestoreLayout.SaveToConfig(Path: string; Config: TRttiXMLConfig); +begin + FControlNames.Delimiter:=','; + FControlNames.StrictDelimiter:=true; + Config.SetDeleteValue(Path+'Names',FControlNames.DelimitedText,''); + Layout.SaveToConfig(Path, Config); +end; + { TAnchorDockRestoreLayouts } -function TAnchorDockRestoreLayouts.GetItems(Index: integer - ): TAnchorDockRestoreLayout; +function TAnchorDockRestoreLayouts.GetItems(Index: integer): TAnchorDockRestoreLayout; begin Result:=TAnchorDockRestoreLayout(fItems[Index]); end; @@ -1912,6 +2033,20 @@ fItems.Clear; end; +procedure TAnchorDockRestoreLayouts.Assign(Source: TAnchorDockRestoreLayouts); +var + i: Integer; + xNew: TAnchorDockRestoreLayout; +begin + Clear; + for i := 0 to Source.Count-1 do + begin + xNew := TAnchorDockRestoreLayout.Create; + Add(xNew, False); + xNew.Assign(Source[i]); + end; +end; + procedure TAnchorDockRestoreLayouts.Delete(Index: integer); begin TObject(fItems[Index]).Free; @@ -2001,8 +2136,35 @@ end; end; -function TAnchorDockRestoreLayouts.ConfigIsEmpty(Config: TConfigStorage - ): boolean; +procedure TAnchorDockRestoreLayouts.LoadFromConfig(Path: string; Config: TRttiXMLConfig); +var + NewCount: longint; + NewItem: TAnchorDockRestoreLayout; + i: Integer; +begin + Clear; + NewCount:=Config.GetValue(Path+'Count',0); + for i:=1 to NewCount do begin + NewItem:=TAnchorDockRestoreLayout.Create; + NewItem.LoadFromConfig(Path+'Item'+IntToStr(i+1)+'/', Config); + if NewItem.ControlNames.Count>0 then + fItems.Add(NewItem) + else + NewItem.Free; + end; +end; + +procedure TAnchorDockRestoreLayouts.SaveToConfig(Path: string; Config: TRttiXMLConfig); +var + i: Integer; +begin + Config.SetDeleteValue(Path+'Count',Count,0); + for i:=0 to Count-1 do begin + Items[i].SaveToConfig(Path+'Item'+IntToStr(i+1)+'/', Config); + end; +end; + +function TAnchorDockRestoreLayouts.ConfigIsEmpty(Config: TConfigStorage): boolean; begin Result:=Config.GetValue('Count',0)<=0; end; diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/anchordockstr.pas lazarus-1.6+dfsg/components/anchordocking/anchordockstr.pas --- lazarus-1.4.4+dfsg/components/anchordocking/anchordockstr.pas 2014-10-19 18:24:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/anchordockstr.pas 2015-09-07 22:01:22.000000000 +0000 @@ -84,7 +84,6 @@ adrsSplitterWidth = 'Splitter width'; adrsSplitterThickness = 'Splitter thickness'; adrsScaleOnResize = 'Scale on resize'; - adrsSaveLayoutOnClose = 'Save layout on close'; adrsScaleSubSitesWhenASiteIsResized = 'Scale sub sites when a site is resized'; adrsShowHeaderCaptions = 'Show header captions'; diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/design/anchordesktopoptions.pas lazarus-1.6+dfsg/components/anchordocking/design/anchordesktopoptions.pas --- lazarus-1.4.4+dfsg/components/anchordocking/design/anchordesktopoptions.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/design/anchordesktopoptions.pas 2015-11-11 01:02:52.000000000 +0000 @@ -0,0 +1,286 @@ +unit AnchorDesktopOptions; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, + LCLProc, Forms, Controls, + LazFileUtils, LazConfigStorage, Laz2_XMLCfg, + IDEOptionsIntf, MacroIntf, LazIDEIntf, BaseIDEIntf, + AnchorDocking, AnchorDockStorage; + +const + AnchorDockingFileVersion = 1; + //1 added Settings node (FSettings: TAnchorDockSettings) + +type + + { TAnchorDesktopOpt } + + TAnchorDesktopOpt = class(TAbstractDesktopDockingOpt) + private + FTree: TAnchorDockLayoutTree; + FRestoreLayouts: TAnchorDockRestoreLayouts; + FSettings: TAnchorDockSettings; + public + procedure LoadDefaultLayout; + procedure LoadLegacyAnchorDockOptions; + procedure LoadLayoutFromConfig(Path: string; aXMLCfg: TRttiXMLConfig); + procedure LoadLayoutFromFile(FileName: string); + + procedure SaveMainLayoutToTree; + procedure SaveLayoutToConfig(Path: string; aXMLCfg: TRttiXMLConfig); + public + constructor Create; override; + destructor Destroy; override; + procedure LoadDefaults; override; + procedure Load(Path: String; aXMLCfg: TRttiXMLConfig); override; + procedure Save(Path: String; aXMLCfg: TRttiXMLConfig); override; + procedure ImportSettingsFromIDE; override; + procedure ExportSettingsToIDE; override; + function RestoreDesktop: Boolean; override; + procedure Assign(Source: TAbstractDesktopDockingOpt); override; + end; + +implementation + +{ TAnchorDesktopOpt } + +procedure TAnchorDesktopOpt.Assign(Source: TAbstractDesktopDockingOpt); +var + xSource: TAnchorDesktopOpt; +begin + if Source is TAnchorDesktopOpt then + begin + xSource := TAnchorDesktopOpt(Source); + FTree.Assign(xSource.FTree); + FRestoreLayouts.Assign(xSource.FRestoreLayouts); + FSettings.Assign(xSource.FSettings); + end; +end; + +constructor TAnchorDesktopOpt.Create; +begin + inherited Create; + + FTree := TAnchorDockLayoutTree.Create; + FSettings := TAnchorDockSettings.Create; + FRestoreLayouts := TAnchorDockRestoreLayouts.Create; +end; + +destructor TAnchorDesktopOpt.Destroy; +begin + FSettings.Free; + FTree.Free; + FRestoreLayouts.Free; + inherited Destroy; +end; + +procedure TAnchorDesktopOpt.ExportSettingsToIDE; +begin + DockMaster.LoadSettings(FSettings); + DockMaster.RestoreLayouts.Assign(FRestoreLayouts); +end; + +procedure TAnchorDesktopOpt.Load(Path: String; aXMLCfg: TRttiXMLConfig); +begin + //new version of old "TIDEAnchorDockMaster.LoadUserLayout" + + Path := Path + 'AnchorDocking/'; + try + {$IFDEF VerboseAnchorDocking} + debugln(['TIDEAnchorDockMaster.LoadUserLayout ',Filename]); + {$ENDIF} + if aXMLCfg.GetValue(Path+'MainConfig/Nodes/ChildCount',0) > 0 then//config is not empty + begin + // loading last layout + {$IF defined(VerboseAnchorDocking) or defined(VerboseAnchorDockRestore)} + debugln(['TIDEAnchorDockMaster.LoadUserLayout restoring ...']); + {$ENDIF} + LoadLayoutFromConfig(Path,aXMLCfg); + end else begin + // loading defaults + {$IF defined(VerboseAnchorDocking) or defined(VerboseAnchorDockRestore)} + debugln(['TIDEAnchorDockMaster.LoadUserLayout loading default layout ...']); + {$ENDIF} + LoadLegacyAnchorDockOptions; + LoadDefaultLayout; + end; + except + on E: Exception do begin + DebugLn(['TIDEAnchorDockMaster.LoadUserLayout loading ',aXMLCfg.GetValue(Path+'Name', ''),' failed: ',E.Message]); + Raise; + end; + end; +end; + +procedure TAnchorDesktopOpt.LoadDefaultLayout; +var + BaseDir: String; + Filename: String; +begin + Filename := AppendPathDelim(LazarusIDE.GetPrimaryConfigPath)+'anchordocklayout.xml'; + if FileExistsUTF8(Filename) then//first load from anchordocklayout.xml -- backwards compatibility + LoadLayoutFromFile(Filename) + else + begin + BaseDir := '$PkgDir(AnchorDockingDsgn)'; + IDEMacros.SubstituteMacros(BaseDir); + if (BaseDir<>'') and DirectoryExistsUTF8(BaseDir) then begin + Filename:=AppendPathDelim(BaseDir)+'ADLayoutDefault.xml'; + if FileExistsUTF8(Filename) then + LoadLayoutFromFile(Filename); + end; + end; +end; + +procedure TAnchorDesktopOpt.LoadDefaults; +begin + LoadDefaultLayout; + LoadLegacyAnchorDockOptions; +end; + +procedure TAnchorDesktopOpt.ImportSettingsFromIDE; +begin + SaveMainLayoutToTree; + DockMaster.SaveSettings(FSettings); + FRestoreLayouts.Assign(DockMaster.RestoreLayouts); +end; + +procedure TAnchorDesktopOpt.LoadLayoutFromConfig(Path: string; + aXMLCfg: TRttiXMLConfig); +var + FileVersion: Integer; +begin + FileVersion:=aXMLCfg.GetValue(Path+'Version/Value',0); + FTree.LoadFromConfig(Path+'MainConfig/', aXMLCfg); + FRestoreLayouts.LoadFromConfig(Path+'Restores/', aXMLCfg); + if (FileVersion = 0) then//backwards compatibility - read anchordockoptions.xml + LoadLegacyAnchorDockOptions + else + FSettings.LoadFromConfig(Path+'Settings/', aXMLCfg); +end; + +procedure TAnchorDesktopOpt.LoadLayoutFromFile(FileName: string); +var + Config: TRttiXMLConfig; +begin + Config := TRttiXMLConfig.Create(FileName); + try + LoadLayoutFromConfig('',Config); + finally + Config.Free; + end; +end; + +procedure TAnchorDesktopOpt.LoadLegacyAnchorDockOptions; +var + Config: TConfigStorage; +begin + try + Config:=GetIDEConfigStorage('anchordockoptions.xml',true); + try + FSettings.LoadFromConfig(Config); + finally + Config.Free; + end; + except + on E: Exception do begin + DebugLn(['TAnchorDesktopOpt.LoadLayoutFromConfig - LoadAnchorDockOptions failed: ',E.Message]); + end; + end; +end; + +procedure TAnchorDesktopOpt.Save(Path: String; aXMLCfg: TRttiXMLConfig); +begin + Path := Path + 'AnchorDocking/'; + try + {$IF defined(VerboseAnchorDocking) or defined(VerboseAnchorDockRestore)} + debugln(['TIDEAnchorDockMaster.SaveDefaultLayout ',Filename]); + {$ENDIF} + SaveLayoutToConfig(Path, aXMLCfg); + except + on E: Exception do begin + DebugLn(['TIDEAnchorDockMaster.SaveDefaultLayout saving ',aXMLCfg.GetValue(Path+'Name', ''),' failed: ',E.Message]); + Raise; + end; + end; +end; + +procedure TAnchorDesktopOpt.SaveLayoutToConfig(Path: string; aXMLCfg: TRttiXMLConfig); +begin + aXMLCfg.SetValue(Path+'Version/Value',AnchorDockingFileVersion); + FTree.SaveToConfig(Path+'MainConfig/', aXMLCfg); + FRestoreLayouts.SaveToConfig(Path+'Restores/', aXMLCfg); + FSettings.SaveToConfig(Path+'Settings/', aXMLCfg); + {$IFDEF VerboseAnchorDocking} + WriteDebugLayout('TAnchorDesktopOpt.SaveLayoutToConfig ',FTree.Root); + {$ENDIF} +end; + +procedure TAnchorDesktopOpt.SaveMainLayoutToTree; +var + i: Integer; + AControl: TControl; + Site: TAnchorDockHostSite; + SavedSites: TFPList; + LayoutNode: TAnchorDockLayoutTreeNode; + AForm: TCustomForm; + VisibleControls: TStringList; +begin + FTree.Clear; + SavedSites:=TFPList.Create; + VisibleControls:=TStringList.Create; + with DockMaster do + try + for i:=0 to ControlCount-1 do begin + AControl:=Controls[i]; + if not DockedControlIsVisible(AControl) then continue; + VisibleControls.Add(AControl.Name); + AForm:=GetParentForm(AControl); + if AForm=nil then continue; + if SavedSites.IndexOf(AForm)>=0 then continue; + SavedSites.Add(AForm); + {$IFDEF VerboseAnchorDocking} + debugln(['TAnchorDesktopOpt.SaveMainLayoutToTree AForm=',DbgSName(AForm)]); + DebugWriteChildAnchors(AForm,true,true); + {$ENDIF} + if (AForm is TAnchorDockHostSite) then begin + Site:=TAnchorDockHostSite(AForm); + LayoutNode:=FTree.NewNode(FTree.Root); + Site.SaveLayout(FTree,LayoutNode); + end else if IsCustomSite(AForm) then begin + // custom dock site + LayoutNode:=FTree.NewNode(FTree.Root); + LayoutNode.NodeType:=adltnCustomSite; + LayoutNode.Assign(AForm); + // can have one normal dock site + Site:=TAnchorDockManager(AForm.DockManager).GetChildSite; + if Site<>nil then begin + LayoutNode:=FTree.NewNode(LayoutNode); + Site.SaveLayout(FTree,LayoutNode); + {if Site.BoundSplitter<>nil then begin + LayoutNode:=FTree.NewNode(LayoutNode); + Site.BoundSplitter.SaveLayout(LayoutNode); + end;} + end; + end else + raise EAnchorDockLayoutError.Create('invalid root control for save: '+DbgSName(AControl)); + end; + // remove invisible controls + FTree.Root.Simplify(VisibleControls); + finally + VisibleControls.Free; + SavedSites.Free; + end; +end; + +function TAnchorDesktopOpt.RestoreDesktop: Boolean; +begin + Result := DockMaster.FullRestoreLayout(FTree,True); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/design/anchordockingdsgn.lpk lazarus-1.6+dfsg/components/anchordocking/design/anchordockingdsgn.lpk --- lazarus-1.4.4+dfsg/components/anchordocking/design/anchordockingdsgn.lpk 2013-04-09 20:07:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/design/anchordockingdsgn.lpk 2015-09-08 12:31:06.000000000 +0000 @@ -1,7 +1,8 @@ - + + @@ -10,7 +11,7 @@ - + - + + + + + + + + + - @@ -35,7 +43,7 @@ - + diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/design/anchordockingdsgn.pas lazarus-1.6+dfsg/components/anchordocking/design/anchordockingdsgn.pas --- lazarus-1.4.4+dfsg/components/anchordocking/design/anchordockingdsgn.pas 2010-07-15 21:30:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/design/anchordockingdsgn.pas 2015-09-08 12:31:06.000000000 +0000 @@ -2,20 +2,20 @@ This source is only used to compile and install the package. } -unit AnchorDockingDsgn; +unit AnchorDockingDsgn; interface uses - RegisterAnchorDocking, LazarusPackageIntf; + RegisterAnchorDocking, AnchorDesktopOptions, LazarusPackageIntf; implementation -procedure Register; +procedure Register; begin - RegisterUnit('RegisterAnchorDocking', @RegisterAnchorDocking.Register); -end; + RegisterUnit('RegisterAnchorDocking', @RegisterAnchorDocking.Register); +end; initialization - RegisterPackage('AnchorDockingDsgn', @Register); + RegisterPackage('AnchorDockingDsgn', @Register); end. diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/design/registeranchordocking.pas lazarus-1.6+dfsg/components/anchordocking/design/registeranchordocking.pas --- lazarus-1.4.4+dfsg/components/anchordocking/design/registeranchordocking.pas 2014-10-21 19:01:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/design/registeranchordocking.pas 2016-02-06 14:12:55.000000000 +0000 @@ -36,21 +36,15 @@ interface uses - Math, Classes, SysUtils, LCLProc, Forms, Controls, FileUtil, LazFileCache, - Dialogs, LazConfigStorage, LazFileUtils, XMLPropStorage, StdCtrls, - LCLIntf, BaseIDEIntf, ProjectIntf, MacroIntf, IDEDialogs, MenuIntf, - LazIDEIntf, IDEWindowIntf, IDEOptionsIntf, AnchorDockStr, AnchorDocking, - AnchorDockOptionsDlg; - -const - DefaultLayoutFileName = 'anchordocklayout.xml'; - DefaultConfigFileName = 'anchordockoptions.xml'; -var - mnuAnchorDockSection: TIDEMenuSection; - mnuADSaveLayoutAsDefault: TIDEMenuCommand; - mnuADSaveLayoutToFile: TIDEMenuCommand; - mnuADLoadLayoutFromFile: TIDEMenuCommand; - mnuADRestoreDefaultLayout: TIDEMenuCommand; + Math, Classes, SysUtils, + // LCL + LCLProc, Forms, Controls, Dialogs, StdCtrls, + // LazUtils + LazFileCache, LazFileUtils, + // IdeIntf + LCLIntf, IDEWindowIntf, IDEOptionsIntf, LazIDEIntf, + // AnchorDocking + AnchorDockStr, AnchorDocking, AnchorDesktopOptions, AnchorDockOptionsDlg; type @@ -62,7 +56,6 @@ FCmdLineLayoutFile: string; FSavedChangeStamp: int64; FSavedDMChangeStamp: int64; - FSaveOnClose: boolean; FUserLayoutLoaded: boolean; procedure DockMasterCreateControl(Sender: TObject; aName: string; var AControl: TControl; DoDisableAutoSizing: boolean); @@ -77,32 +70,19 @@ procedure IncreaseChangeStamp; inline; property ChangeStamp: int64 read FChangeStamp; property Modified: boolean read GetModified write SetModified; - procedure LoadSettings; - procedure SaveSettings; + function DockedDesktopOptClass: TAbstractDesktopDockingOptClass; override; // layouts - function GetUserLayoutFilename(Full: boolean): string; - procedure LoadDefaultLayout; - procedure LoadUserLayout; - procedure SaveUserLayout; - procedure LoadLayoutFromFile(Filename: string); - procedure SaveLayoutToFile(Filename: string); property UserLayoutLoaded: boolean read FUserLayoutLoaded write SetUserLayoutLoaded; property CmdLineLayoutFile: string read FCmdLineLayoutFile write FCmdLineLayoutFile; - property SaveOnClose: boolean read FSaveOnClose write FSaveOnClose; // events procedure MakeIDEWindowDockSite(AForm: TCustomForm; ASides: TDockSides = [alBottom]); override; procedure MakeIDEWindowDockable(AControl: TWinControl); override; function AddableInWindowMenu(AForm: TCustomForm): boolean; override; procedure ShowForm(AForm: TCustomForm; BringToFront: boolean); override; + procedure AdjustMainIDEWindowHeight(const AIDEWindow: TCustomForm; + const AAdjustHeight: Boolean; const ANewHeight: Integer); override; procedure CloseAll; override; - procedure OnIDERestoreWindows(Sender: TObject); - function OnProjectClose(Sender: TObject; AProject: TLazProject): TModalResult; - procedure OnIDEClose(Sender: TObject); - // menu items - procedure RestoreDefaultLayoutClicked(Sender: TObject); - procedure LoadLayoutFromFileClicked(Sender: TObject); - procedure SaveLayoutToFileClicked(Sender: TObject); - procedure SaveLayoutAsDefaultClicked(Sender: TObject); + procedure ResetSplitters; override; end; { TAnchorDockIDEFrame } @@ -136,31 +116,9 @@ begin if not (IDEDockMaster is TIDEAnchorDockMaster) then exit; - LazarusIDE.AddHandlerOnIDERestoreWindows(@IDEAnchorDockMaster.OnIDERestoreWindows); - LazarusIDE.AddHandlerOnProjectClose(@IDEAnchorDockMaster.OnProjectClose); - LazarusIDE.AddHandlerOnIDEClose(@IDEAnchorDockMaster.OnIDEClose); - - // add menu section - // As this procedure seems to be called too early, menuitems names will be - // not localized. So we will localize them in TIDEAnchorDockMaster.OnIDERestoreWindows for now - mnuAnchorDockSection:=RegisterIDEMenuSection(itmSecondaryTools,'AnchorDocking'); - mnuADSaveLayoutAsDefault:=RegisterIDEMenuCommand(mnuAnchorDockSection, - 'ADSaveLayoutAsDefault', adrsSaveWindowLayoutAsDefault, - @IDEAnchorDockMaster.SaveLayoutAsDefaultClicked); - mnuADSaveLayoutToFile:=RegisterIDEMenuCommand(mnuAnchorDockSection, - 'ADSaveLayoutToFile', adrsSaveWindowLayoutToFile, - @IDEAnchorDockMaster.SaveLayoutToFileClicked); - mnuADLoadLayoutFromFile:=RegisterIDEMenuCommand(mnuAnchorDockSection, - 'ADLoadLayoutFromFile', adrsLoadWindowLayoutFromFile, - @IDEAnchorDockMaster.LoadLayoutFromFileClicked); - mnuADRestoreDefaultLayout:=RegisterIDEMenuCommand(mnuAnchorDockSection, - 'ADRestoreDefaultLayout', adrsRestoreDefaultLayout, - @IDEAnchorDockMaster.RestoreDefaultLayoutClicked); - // add options frame AnchorDockOptionsID:=RegisterIDEOptionsEditor(GroupEnvironment,TAnchorDockIDEFrame, AnchorDockOptionsID)^.Index; - IDEAnchorDockMaster.LoadSettings; end; { TIDEAnchorDockMaster } @@ -234,9 +192,8 @@ constructor TIDEAnchorDockMaster.Create; begin inherited Create; - DefaultAnchorDockOptionFlags:=[adofShow_ShowHeader,adofShow_ShowSaveOnClose]; + DefaultAnchorDockOptionFlags:=[adofShow_ShowHeader]; - FSaveOnClose:=true; IDEAnchorDockMaster:=Self; DockMaster.OnCreateControl:=@DockMasterCreateControl; DockMaster.OnShowOptions:=@ShowAnchorDockOptions; @@ -251,10 +208,15 @@ begin IDEAnchorDockMaster:=nil; if IDEDockMaster=Self then - IDEDockMaster:=Self; + IDEDockMaster:=nil; inherited Destroy; end; +function TIDEAnchorDockMaster.DockedDesktopOptClass: TAbstractDesktopDockingOptClass; +begin + Result := TAnchorDesktopOpt; +end; + procedure TIDEAnchorDockMaster.MakeIDEWindowDockSite(AForm: TCustomForm; ASides: TDockSides); var @@ -271,6 +233,11 @@ end; end; +procedure TIDEAnchorDockMaster.ResetSplitters; +begin + DockMaster.ResetSplitters; +end; + procedure TIDEAnchorDockMaster.MakeIDEWindowDockable(AControl: TWinControl); begin {$IFDEF VerboseAnchorDocking} @@ -287,116 +254,42 @@ Result:=true; end; -function TIDEAnchorDockMaster.GetUserLayoutFilename(Full: boolean): string; -begin - if CmdLineLayoutFile<>'' then begin - Result:=CmdLineLayoutFile; - end else begin - Result:=DefaultLayoutFileName; - if Full then - Result:=AppendPathDelim(LazarusIDE.GetPrimaryConfigPath)+Result; - end; -end; - -procedure TIDEAnchorDockMaster.LoadDefaultLayout; +procedure TIDEAnchorDockMaster.AdjustMainIDEWindowHeight( + const AIDEWindow: TCustomForm; const AAdjustHeight: Boolean; + const ANewHeight: Integer); var - BaseDir: String; - Filename: String; -begin - BaseDir:='$PkgDir(AnchorDockingDsgn)'; - IDEMacros.SubstituteMacros(BaseDir); - if (BaseDir<>'') and DirectoryExistsUTF8(BaseDir) then begin - Filename:=AppendPathDelim(BaseDir)+'ADLayoutDefault.xml'; - if FileExistsUTF8(Filename) then - LoadLayoutFromFile(Filename); - end; - Modified:=false; -end; - -procedure TIDEAnchorDockMaster.LoadUserLayout; -var - Filename: String; - Config: TConfigStorage; -begin - Filename:=GetUserLayoutFilename(false); - try - {$IFDEF VerboseAnchorDocking} - debugln(['TIDEAnchorDockMaster.LoadUserLayout ',Filename]); - {$ENDIF} - Config:=GetIDEConfigStorage(Filename,true); - try - if not DockMaster.ConfigIsEmpty(Config) then begin - // loading last layout - {$IF defined(VerboseAnchorDocking) or defined(VerboseAnchorDockRestore)} - debugln(['TIDEAnchorDockMaster.LoadUserLayout restoring ...']); - {$ENDIF} - DockMaster.LoadLayoutFromConfig(Config,true); - UserLayoutLoaded:=true; - end else begin - // loading defaults - {$IF defined(VerboseAnchorDocking) or defined(VerboseAnchorDockRestore)} - debugln(['TIDEAnchorDockMaster.LoadUserLayout loading default layout ...']); - {$ENDIF} - LoadDefaultLayout; - end; - finally - Config.Free; - end; - except - on E: Exception do begin - DebugLn(['TIDEAnchorDockMaster.LoadUserLayout loading ',Filename,' failed: ',E.Message]); - end; - end; - Modified:=false; -end; - -procedure TIDEAnchorDockMaster.SaveUserLayout; -var - Filename: String; - Config: TConfigStorage; -begin - Filename:=GetUserLayoutFilename(false); - try - {$IF defined(VerboseAnchorDocking) or defined(VerboseAnchorDockRestore)} - debugln(['TIDEAnchorDockMaster.SaveDefaultLayout ',Filename]); - {$ENDIF} - Config:=GetIDEConfigStorage(Filename,false); - try - DockMaster.SaveLayoutToConfig(Config); - finally - Config.Free; - end; - except - on E: Exception do begin - DebugLn(['TIDEAnchorDockMaster.SaveDefaultLayout saving ',Filename,' failed: ',E.Message]); - end; - end; - Modified:=false; -end; - -procedure TIDEAnchorDockMaster.LoadLayoutFromFile(Filename: string); -var - Config: TXMLConfigStorage; + Site: TAnchorDockHostSite; + I: Integer; + SiteNewHeight: Integer; begin - Config:=TXMLConfigStorage.Create(FileName, true); - try - DockMaster.LoadLayoutFromConfig(Config,true); - finally - Config.Free; - end; -end; + inherited AdjustMainIDEWindowHeight(AIDEWindow, AAdjustHeight, ANewHeight); -procedure TIDEAnchorDockMaster.SaveLayoutToFile(Filename: string); -var - Config: TXMLConfigStorage; -begin - Config:=TXMLConfigStorage.Create(FileName, false); - try - DockMaster.SaveLayoutToConfig(Config); - Config.WriteToDisk; - finally - Config.Free; - end; + Site := nil; + for I := 0 to AIDEWindow.ControlCount-1 do + if AIDEWindow.Controls[I] is TAnchorDockHostSite then + begin + Site := TAnchorDockHostSite(AIDEWindow.Controls[I]); + if (Site.Parent<>nil) and (Site.Parent=LazarusIDE.GetMainBar) then + Break // found + else + Site := nil; + end; + + if (Site=nil) or (Site.BoundSplitter=nil) then + Exit; + + Site.BoundSplitter.Enabled := not AAdjustHeight; + Site.BoundSplitter.CustomWidth := not Site.BoundSplitter.Enabled; + if Site.BoundSplitter.Enabled then + Site.BoundSplitter.Height := DockMaster.SplitterWidth + else + begin + Site.BoundSplitter.Constraints.MinHeight := 2; + Site.BoundSplitter.Height := Site.BoundSplitter.Constraints.MinHeight; + end; + SiteNewHeight := Site.Parent.ClientHeight - ANewHeight - Site.BoundSplitter.Height; + if AAdjustHeight and (Site.Height <> SiteNewHeight) then + Site.Height := SiteNewHeight; end; procedure TIDEAnchorDockMaster.ShowForm(AForm: TCustomForm; @@ -505,150 +398,11 @@ DockMaster.CloseAll; end; -function TIDEAnchorDockMaster.OnProjectClose(Sender: TObject; - AProject: TLazProject): TModalResult; -begin - Result:=mrOk; - if AProject=nil then exit; - // do not auto save user layout, the restore is not yet stable - //SaveUserLayout; -end; - -procedure TIDEAnchorDockMaster.OnIDEClose(Sender: TObject); -var - aForm: TCustomForm; -begin - SaveSettings; - if DockMaster.SaveOnClose then begin - debugln(['TIDEAnchorDockMaster.OnIDEClose auto save ...']); - aForm:=GetParentForm(Application.MainForm); - if (aForm<>nil) and aForm.Monitor.Primary then - SaveUserLayout; - end; -end; - -procedure TIDEAnchorDockMaster.RestoreDefaultLayoutClicked(Sender: TObject); -begin - LoadDefaultLayout; -end; - -procedure TIDEAnchorDockMaster.OnIDERestoreWindows(Sender: TObject); -begin - // localize menu captions - mnuADSaveLayoutAsDefault.Caption:=adrsSaveWindowLayoutAsDefault; - mnuADSaveLayoutToFile.Caption:=adrsSaveWindowLayoutToFile; - mnuADLoadLayoutFromFile.Caption:=adrsLoadWindowLayoutFromFile; - mnuADRestoreDefaultLayout.Caption:=adrsRestoreDefaultLayout; - LoadUserLayout; -end; - -procedure TIDEAnchorDockMaster.LoadLayoutFromFileClicked(Sender: TObject); -var - Dlg: TOpenDialog; - Filename: String; -begin - Dlg:=TOpenDialog.Create(nil); - try - InitIDEFileDialog(Dlg); - Dlg.Title:=adrsLoadWindowLayoutFromFileXml; - Dlg.Options:=Dlg.Options+[ofFileMustExist]; - Dlg.Filter:=adrsAnchorDockingLayout+'|*.xml|'+adrsAllFiles+'|'+GetAllFilesMask; - if Dlg.Execute then begin - Filename:=CleanAndExpandFilename(Dlg.FileName); - try - LoadLayoutFromFile(Filename); - except - on E: Exception do begin - IDEMessageDialog(adrsError, - Format(adrsErrorLoadingWindowLayoutFromFile, [Filename, #13, E.Message]), - mtError,[mbCancel]); - end; - end; - end; - StoreIDEFileDialog(Dlg); - finally - Dlg.Free; - end; -end; - -procedure TIDEAnchorDockMaster.SaveLayoutToFileClicked(Sender: TObject); -var - Dlg: TSaveDialog; - Filename: String; -begin - Dlg:=TSaveDialog.Create(nil); - try - InitIDEFileDialog(Dlg); - Dlg.Title:=adrsSaveWindowLayoutToFileXml; - Dlg.Options:=Dlg.Options+[ofPathMustExist,ofNoReadOnlyReturn,ofOverwritePrompt]; - Dlg.Filter:=adrsAnchorDockingLayout+'|*.xml|'+adrsAllFiles+'|'+GetAllFilesMask; - if Dlg.Execute then begin - Filename:=CleanAndExpandFilename(Dlg.FileName); - if ExtractFileExt(Filename)='' then - Filename:=Filename+'.xml'; - try - SaveLayoutToFile(Filename); - except - on E: Exception do begin - IDEMessageDialog(adrsError, - Format(adrsErrorWritingWindowLayoutToFile, [Filename, LineEnding, E.Message]), - mtError,[mbCancel]); - end; - end; - end; - StoreIDEFileDialog(Dlg); - finally - Dlg.Free; - end; -end; - -procedure TIDEAnchorDockMaster.SaveLayoutAsDefaultClicked(Sender: TObject); -begin - SaveUserLayout; -end; - procedure TIDEAnchorDockMaster.IncreaseChangeStamp; begin LUIncreaseChangeStamp64(FChangeStamp); end; -procedure TIDEAnchorDockMaster.LoadSettings; -var - Config: TConfigStorage; -begin - try - Config:=GetIDEConfigStorage(DefaultConfigFileName,true); - try - DockMaster.LoadSettingsFromConfig(Config); - finally - Config.Free; - end; - except - on E: Exception do begin - DebugLn(['TIDEAnchorDockMaster.LoadSettings failed: ',E.Message]); - end; - end; -end; - -procedure TIDEAnchorDockMaster.SaveSettings; -var - Config: TConfigStorage; -begin - try - Config:=GetIDEConfigStorage(DefaultConfigFileName,false); - try - DockMaster.SaveSettingsToConfig(Config); - Config.WriteToDisk; - finally - Config.Free; - end; - except - on E: Exception do begin - DebugLn(['TIDEAnchorDockMaster.SaveSettings failed: ',E.Message]); - end; - end; -end; - { TAnchorDockIDEFrame } constructor TAnchorDockIDEFrame.Create(TheOwner: TComponent); @@ -703,11 +457,8 @@ if not (AOptions is SupportedOptionsClass) then exit; OptionsFrame.SaveToSettings(FSettings); if (not DockMaster.SettingsAreEqual(FSettings)) - or (not FileExistsCached(IDEAnchorDockMaster.GetUserLayoutFilename(true))) then begin DockMaster.LoadSettings(FSettings); - IDEAnchorDockMaster.SaveUserLayout; - IDEAnchorDockMaster.SaveSettings; end; end; diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.cs.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.cs.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.cs.po 2014-10-19 18:24:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.cs.po 2015-09-08 11:44:04.000000000 +0000 @@ -242,10 +242,6 @@ msgid "right" msgstr "vpravo" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Uložit rozvržení oken jako výchozí" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.de.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.de.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.de.po 2014-10-19 18:24:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.de.po 2015-09-08 11:44:04.000000000 +0000 @@ -229,10 +229,6 @@ msgid "right" msgstr "" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Speichere Fensterlayout als Vorgabe" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.es.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.es.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.es.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.es.po 2015-09-08 11:44:04.000000000 +0000 @@ -207,7 +207,7 @@ #: anchordockstr.adrsnochildrenallowedfornodetype msgid "No children allowed for Node=\"%s\" Type=%s" -msgstr "Hijos no permitidos para Nodo=\"%s\ Tipo=%s" +msgstr "Hijos no permitidos para Nodo=\"%s Tipo=%s" #: anchordockstr.adrsnotsupportedhasparent msgid "Not supported: %s has parent %s" @@ -229,10 +229,6 @@ msgid "right" msgstr "derecha" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "Guardar diseño al cerrar" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Guardar diseño de ventana como predeterminado" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.fr.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.fr.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.fr.po 2015-04-15 20:47:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.fr.po 2015-09-08 11:44:04.000000000 +0000 @@ -231,10 +231,6 @@ msgid "right" msgstr "droite" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "Enregistrer la disposition à la fermeture" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Enregistrer la disposition comme celle par défaut" @@ -294,3 +290,4 @@ #: anchordockstr.adrsundock msgid "Undock" msgstr "Désamarrer" + diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.hu.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.hu.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.hu.po 2015-07-12 13:36:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.hu.po 2015-09-08 11:44:04.000000000 +0000 @@ -231,10 +231,6 @@ msgid "right" msgstr "jobbra" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "Elrendezés mentése kilépéskor" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Ablakelrendezés mentése alapértelmezettnek" @@ -294,3 +290,4 @@ #: anchordockstr.adrsundock msgid "Undock" msgstr "Rögzítés feloldása" + diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.it.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.it.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.it.po 2014-10-25 08:50:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.it.po 2015-09-08 11:44:04.000000000 +0000 @@ -233,10 +233,6 @@ msgid "right" msgstr "destra" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "Salva la disposizione della finestra alla chiusura" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Salva la disposizione della finestra come default" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.lt.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.lt.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.lt.po 2014-10-19 18:24:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.lt.po 2015-09-08 11:44:04.000000000 +0000 @@ -247,10 +247,6 @@ msgid "right" msgstr "dešinysis" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Lango maketą įrašyti kaip numatytąjį" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.po 2014-10-19 18:24:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.po 2015-09-08 11:44:04.000000000 +0000 @@ -221,10 +221,6 @@ msgid "right" msgstr "" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.pt_BR.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.pt_BR.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.pt_BR.po 2014-10-19 18:24:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.pt_BR.po 2015-09-08 11:44:04.000000000 +0000 @@ -245,10 +245,6 @@ msgid "right" msgstr "direita" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Salvar \"layout\" da janela como padrão" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.ru.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.ru.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.ru.po 2014-10-19 22:35:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.ru.po 2015-09-08 11:44:04.000000000 +0000 @@ -239,10 +239,6 @@ msgid "right" msgstr "справа" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "Сохранять разбивку окна при выходе" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Сохранить разбивку окна как разбивку по умолчанию" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.uk.po lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.uk.po --- lazarus-1.4.4+dfsg/components/anchordocking/languages/anchordockstr.uk.po 2014-10-19 18:24:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/languages/anchordockstr.uk.po 2015-09-08 11:44:04.000000000 +0000 @@ -247,10 +247,6 @@ msgid "right" msgstr "правий" -#: anchordockstr.adrssavelayoutonclose -msgid "Save layout on close" -msgstr "" - #: anchordockstr.adrssavewindowlayoutasdefault msgid "Save window layout as default" msgstr "Зберегти схему вікон як типову" diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/minide/miniide1.lpr lazarus-1.6+dfsg/components/anchordocking/minide/miniide1.lpr --- lazarus-1.4.4+dfsg/components/anchordocking/minide/miniide1.lpr 2012-12-22 21:13:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/minide/miniide1.lpr 2015-09-08 12:31:06.000000000 +0000 @@ -7,8 +7,7 @@ cthreads, {$ENDIF}{$ENDIF} Interfaces, // this includes the LCL widgetset - Forms, Unit1, Controls, FileUtil - { you can add units after this }; + Forms, Unit1, Controls, LazUTF8; {$R *.res} diff -Nru lazarus-1.4.4+dfsg/components/anchordocking/minide/unit1.pas lazarus-1.6+dfsg/components/anchordocking/minide/unit1.pas --- lazarus-1.4.4+dfsg/components/anchordocking/minide/unit1.pas 2014-10-09 16:27:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/anchordocking/minide/unit1.pas 2015-09-08 12:31:06.000000000 +0000 @@ -5,9 +5,11 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, Forms, Controls, Graphics, Dialogs, - Menus, ExtCtrls, Buttons, ComCtrls, SimpleFrm, AnchorDocking, - AnchorDockStorage, XMLPropStorage, StdCtrls, AnchorDockOptionsDlg; + Classes, SysUtils, + LCLProc, Forms, Controls, Graphics, Dialogs, StdCtrls, + Menus, ExtCtrls, Buttons, ComCtrls, XMLPropStorage, + LazFileUtils, + SimpleFrm, AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg; type diff -Nru lazarus-1.4.4+dfsg/components/cairocanvas/cairocanvas.pas lazarus-1.6+dfsg/components/cairocanvas/cairocanvas.pas --- lazarus-1.4.4+dfsg/components/cairocanvas/cairocanvas.pas 2014-09-18 17:35:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/cairocanvas/cairocanvas.pas 2015-10-26 10:12:31.000000000 +0000 @@ -64,14 +64,11 @@ ScaleX, ScaleY, FontScale: Double; procedure SetLazClipRect(r: TRect); procedure DoLineTo(X1,Y1: Integer); override; - procedure DoMoveTo(x, y: integer); override; + procedure DoMoveTo({%H-}x, {%H-}y: integer); override; function CreateCairoHandle: HDC; virtual; abstract; procedure DestroyCairoHandle; virtual; procedure SetHandle(NewHandle: HDC); override; - procedure BeginDoc; override; - procedure EndDoc; override; - procedure NewPage; override; function GetClipRect: TRect; override; procedure SetClipRect(const ARect: TRect); override; function GetClipping: Boolean; override; @@ -89,6 +86,9 @@ constructor Create(APrinter : TPrinter); override; constructor Create; overload; destructor Destroy; override; + procedure BeginDoc; override; + procedure EndDoc; override; + procedure NewPage; override; procedure FillRect(const ARect: TRect); override; procedure Rectangle(X1,Y1,X2,Y2: Integer); override; procedure Polyline(Points: PPoint; NumPts: Integer); override; @@ -1509,6 +1509,13 @@ cairo_ps_surface_dsc_begin_setup(sf); cairo_ps_surface_dsc_comment(sf, PChar(s)); + if (fStream=nil) and not FileExists(FOutputFileName) then + begin + DebugLn('Error: unable to write cairo ps to "'+FOutputFileName+'"'); + DestroyCairoHandle; + exit(0); + end; + //rotate and move case Orientation of poLandscape: begin diff -Nru lazarus-1.4.4+dfsg/components/cairocanvas/cairocanvas_pkg.lpk lazarus-1.6+dfsg/components/cairocanvas/cairocanvas_pkg.lpk --- lazarus-1.4.4+dfsg/components/cairocanvas/cairocanvas_pkg.lpk 2015-03-01 01:41:10.000000000 +0000 +++ lazarus-1.6+dfsg/components/cairocanvas/cairocanvas_pkg.lpk 2015-03-01 09:08:49.000000000 +0000 @@ -8,12 +8,6 @@ - - - - - - diff -Nru lazarus-1.4.4+dfsg/components/cairocanvas/example/cairoprog.lpi lazarus-1.6+dfsg/components/cairocanvas/example/cairoprog.lpi --- lazarus-1.4.4+dfsg/components/cairocanvas/example/cairoprog.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/cairocanvas/example/cairoprog.lpi 2015-04-09 10:07:42.000000000 +0000 @@ -0,0 +1,74 @@ + + + + + + + + + + + + + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <MacroValues Count="1"> + <Macro1 Name="LCLWidgetType" Value="nogui"/> + </MacroValues> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + <SharedMatrixOptions Count="1"> + <Item1 ID="152671982290" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="nogui"/> + </SharedMatrixOptions> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="cairocanvas_pkg"/> + </Item1> + </RequiredPackages> + <Units Count="1"> + <Unit0> + <Filename Value="cairoprog.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="cairoprog"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/cairocanvas/example/cairoprog.lpr lazarus-1.6+dfsg/components/cairocanvas/example/cairoprog.lpr --- lazarus-1.4.4+dfsg/components/cairocanvas/example/cairoprog.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/cairocanvas/example/cairoprog.lpr 2015-05-08 10:34:21.000000000 +0000 @@ -0,0 +1,36 @@ +program cairoprog; + +{$mode objfpc}{$H+} + +uses + Classes, CairoCanvas; + +var // This could also be TCairoSvgCanvas, TCairoPngCanvas or TCairoPsCanvas + PrinterCanvas: TCairoPdfCanvas; +begin + PrinterCanvas := TCairoPdfCanvas.Create; + try + PrinterCanvas.OutputFileName := 'CairoCanvas.pdf'; + PrinterCanvas.Ellipse(20, 20, 170, 120); + //PrinterCanvas.XDPI := 75; // These have valid default values. + //PrinterCanvas.YDPI := 75; + //PrinterCanvas.PaperWidth := 250; + //PrinterCanvas.PaperHeight := 500; + PrinterCanvas.Font.Name := 'Arial'; // Font properties must be set, does not work otherwise. + PrinterCanvas.Font.Height := 24; + PrinterCanvas.TextOut(50, 150, 'abcdefghijklmnopqrstuvwxyzåäö'); + PrinterCanvas.TextOut(50, 220, 'ฉันหิวแล้ว'); + PrinterCanvas.TextOut(50, 290, 'К нам в око́шко застучи́т'); + PrinterCanvas.TextOut(50, 360, 'لا أتَكَلّمُ الْعَرَبيّة'); + PrinterCanvas.NewPage; + PrinterCanvas.TextOut(50, 80, 'Page 2'); + PrinterCanvas.TextOut(50, 150, 'Finnish: wxyzåäö1234567890'); + PrinterCanvas.TextOut(50, 220, 'Thai: ฉันหิวแล้ว'); + PrinterCanvas.TextOut(50, 290, 'Russian: К нам в око́шко застучи́т'); + PrinterCanvas.TextOut(50, 360, 'Arabic: لا أتَكَلّمُ الْعَرَبيّة'); + WriteLn('Written file ' + PrinterCanvas.OutputFileName); + finally + PrinterCanvas.Free; + end; +end. + diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/chmcontentprovider.pas lazarus-1.6+dfsg/components/chmhelp/lhelp/chmcontentprovider.pas --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/chmcontentprovider.pas 2015-03-02 22:37:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/chmcontentprovider.pas 2015-09-10 12:12:02.000000000 +0000 @@ -23,10 +23,13 @@ interface uses - Classes, SysUtils, Laz2_XMLCfg, - LCLIntf, FileUtil, Forms, StdCtrls, ExtCtrls, ComCtrls, Controls, Menus, - BaseContentProvider, FileContentProvider, IpHtml, ChmReader, ChmDataProvider, - lhelpstrconsts; + Classes, SysUtils, ChmReader, + // LCL + LCLIntf, Forms, StdCtrls, ExtCtrls, ComCtrls, Controls, Menus, + // LazUtils + LazFileUtils, LazUTF8, Laz2_XMLCfg, + // ChmHelp + IpHtml, BaseContentProvider, FileContentProvider, ChmDataProvider, lhelpstrconsts; type @@ -53,6 +56,8 @@ fPopUp: TPopUpMenu; fStatusBar: TStatusBar; fContext: THelpContext; + function GetShowStatusbar: Boolean; + procedure SetShowStatusbar(AValue: Boolean); protected fIsUsingHistory: Boolean; fChms: TChmFileList; @@ -114,6 +119,7 @@ procedure GoForward; override; property TabsControl: TPageControl read fTabsControl; property Splitter: TSplitter read fSplitter; + property ShowStatusbar: Boolean read GetShowStatusbar write SetShowStatusbar; class function GetProperContentProvider(const {%H-}AURL: String): TBaseContentProviderClass; override; constructor Create(AParent: TWinControl; AImageList: TImageList); override; @@ -242,6 +248,16 @@ { TChmContentProvider } +function TChmContentProvider.GetShowStatusbar: Boolean; +begin + Result := fStatusbar.Visible; +end; + +procedure TChmContentProvider.SetShowStatusbar(AValue: Boolean); +begin + fStatusbar.Visible := AValue; +end; + function TChmContentProvider.MakeURI ( AUrl: String; AChm: TChmReader ) : String; var ChmIndex: Integer; diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/chmdataprovider.pas lazarus-1.6+dfsg/components/chmhelp/lhelp/chmdataprovider.pas --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/chmdataprovider.pas 2015-03-02 22:37:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/chmdataprovider.pas 2016-01-03 12:36:44.000000000 +0000 @@ -181,8 +181,17 @@ Result := NewURL; fNewURL := NewURL; - if Pos('ms-its:', NewURL) = 1 then - Exit; + if OldURL = '' then + exit; + + if Pos('ms-its:', NewURL) = 1 then begin + if Pos('#', NewURL) = 0 then + exit; + X := Pos('::', NewURL); + if NewURL[X+2] = '/' then // NewURL is complete and absolute --> nothing to do + exit; + fNewURL := Copy(fNewURL, X+3, MaxInt); + end; ParentDirs := GetDirsParents(OldURL); RemoveDirCount := 0; @@ -223,6 +232,7 @@ begin Result := TStringList.Create; Result.Delimiter := '/'; + Result.StrictDelimiter := true; Result.DelimitedText := ADir; LastName := ExtractFileName(ADir); diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/chmspecialparser.pas lazarus-1.6+dfsg/components/chmhelp/lhelp/chmspecialparser.pas --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/chmspecialparser.pas 2014-10-21 12:10:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/chmspecialparser.pas 2015-06-22 09:39:54.000000000 +0000 @@ -50,6 +50,51 @@ implementation +uses + LConvEncoding, LazUTF8, HTMLDefs; + +function ToUTF8(AText: ansistring): String; +var + encoding: String; +begin + encoding := GuessEncoding(AText); + if (encoding <> EncodingUTF8) then + Result := ConvertEncoding(AText, encoding, EncodingUTF8) + else + Result := AText; +end; + +function FixEscapedHTML(AText: string): string; +var + i: Integer; + ampstr: string; + ws: widestring; + entity: widechar; +begin + Result := ''; + i := 1; + while i <= Length(AText) do begin + if AText[i]='&' then begin + ampStr := ''; + inc(i); + while AText[i] <> ';' do begin + ampStr := ampStr + AText[i]; + inc(i); + end; + ws := UTF8Encode(ampStr); + if ResolveHTMLEntityReference(ws, entity) then + Result := Result + UnicodeToUTF8(cardinal(entity)) + else + Result := Result + '?'; + end else + Result := Result + AText[i]; + inc(i); + end; +end; + + +{ TForm1 } + // Replace %20 with space, \ with / function FixURL(URL: String):String; var @@ -77,7 +122,7 @@ txt := AItem.KeyWord; // Fallback: if txt = '' then txt := AItem.Text; - txt := Trim(txt); + txt := FixEscapedHTML(ToUTF8(Trim(txt))); if not Assigned(fLastNode) or (fLastNode.Text <> txt) then begin // Add new child node diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.fi.po lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.fi.po --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.fi.po 2015-04-28 23:03:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.fi.po 2015-12-05 11:32:24.000000000 +0000 @@ -17,9 +17,9 @@ msgid "Cannot handle this type of subcontent. \"%s\" for url:%s%s" msgstr "Ei pysty hallitsemaan tämän tyyppistä sisältöä. \"%s\" url:%s%s" -#: lhelpstrconsts.slhelp_closeall -msgid "&Close All" -msgstr "Sulje kaikki" +#: lhelpstrconsts.slhelp_close +msgid "&Close" +msgstr "&Sulje" #: lhelpstrconsts.slhelp_contents msgid "Contents" @@ -27,7 +27,7 @@ #: lhelpstrconsts.slhelp_contextshowthehelpinformationrelatedtothiscontext msgid " --context : Show the help information related to this context" -msgstr "" +msgstr " --context : Näytä tähän sisältöön liittyvät avusteet" #: lhelpstrconsts.slhelp_copy msgid "Copy" @@ -35,11 +35,11 @@ #: lhelpstrconsts.slhelp_exit msgid "E&xit" -msgstr "Poistu" +msgstr "&Poistu" #: lhelpstrconsts.slhelp_file msgid "&File" -msgstr "Tiedosto" +msgstr "&Tiedosto" #: lhelpstrconsts.slhelp_find msgid "Find" @@ -47,19 +47,19 @@ #: lhelpstrconsts.slhelp_help msgid "&Help" -msgstr "Ohje" +msgstr "&Ohje" #: lhelpstrconsts.slhelp_helpfileschmchmallfiles msgid "Help files (*.chm)|*.chm|All files (*.*)|*" -msgstr "" +msgstr "Avuste tiedostot (*.chm)|*.chm|Kaikki tiedostot (*.*)|*" #: lhelpstrconsts.slhelp_helpshowthisinformation msgid " --help : Show this information" -msgstr "" +msgstr " --help : Näytä tämä avuste" #: lhelpstrconsts.slhelp_hidestarthiddenbutacceptcommunicationsviaipc msgid " --hide : Start hidden but accept communications via IPC" -msgstr "" +msgstr " --hide : Käynnistä piilotettuna mutta salli yhteys IPC:n kautta" #: lhelpstrconsts.slhelp_index msgid "Index" @@ -67,11 +67,11 @@ #: lhelpstrconsts.slhelp_indexloading msgid "Index Loading ..." -msgstr "" +msgstr "Hakemistoa ladataan ..." #: lhelpstrconsts.slhelp_ipcnamethenameoftheipcservertolistenonforprogramsw msgid " --ipcname : The name of the IPC server to listen on for%s programs who wish to control the viewer" -msgstr "" +msgstr " --ipcname : IPC palvelimen nimi, kuuntelee%s ohjelmia mitkä tahtovat ohjata tiedoston näyttäjää" #: lhelpstrconsts.slhelp_keyword msgid "Keyword:" @@ -91,7 +91,7 @@ #: lhelpstrconsts.slhelp_lhelpoptions msgid " LHelp options:" -msgstr "" +msgstr " LHelp asetukset:" #: lhelpstrconsts.slhelp_loadedinms msgid "Loaded: %s in %sms" @@ -99,11 +99,11 @@ #: lhelpstrconsts.slhelp_loading msgid "Loading: %s" -msgstr "" +msgstr "Ladataan: %s" #: lhelpstrconsts.slhelp_noresults msgid "No Results" -msgstr "" +msgstr "Ei tuloksia" #: lhelpstrconsts.slhelp_notfound msgid "%s not found!" @@ -119,7 +119,15 @@ #: lhelpstrconsts.slhelp_openexistingfile msgid "Open existing file" -msgstr "" +msgstr "Avaa olemassa oleva tiedosto" + +#: lhelpstrconsts.slhelp_opennewfileinseparatetab +msgid "Open new file in separate tab" +msgstr "Avaa uusi tiedosto toisessa välilehdessä" + +#: lhelpstrconsts.slhelp_opennewtabwithstatusbar +msgid "Open new tab with status bar" +msgstr "Avaa uusi välilehti statuspalkin kanssa" #: lhelpstrconsts.slhelp_openrecent msgid "Open Recent" @@ -155,19 +163,19 @@ #: lhelpstrconsts.slhelp_tableofcontentsloading msgid "Table of Contents Loading ..." -msgstr "" +msgstr "Sisällysluettelo ladataan ..." #: lhelpstrconsts.slhelp_tableofcontentsloadingpleasewait msgid "Table of Contents Loading. Please Wait ..." -msgstr "" +msgstr "Sisällysluettelo ladataan. Odota ..." #: lhelpstrconsts.slhelp_untitled msgid "untitled" -msgstr "" +msgstr "nimetön" #: lhelpstrconsts.slhelp_usagelhelpfilenamecontextidhideipcnamelhelpmyapp msgid " Usage: lhelp [[filename] [--context id] [--hide] [--ipcname lhelp-myapp]]" -msgstr "" +msgstr " Käyttö: lhelp [[tiedosto] [--context id] [--hide] [--ipcname lhelp-myapp]]" #: lhelpstrconsts.slhelp_view msgid "&View" diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.fr.po lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.fr.po --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.fr.po 2015-04-29 21:31:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.fr.po 2016-01-03 12:54:33.000000000 +0000 @@ -3,13 +3,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: 2015-04-12 15:04+0100\n" -"PO-Revision-Date: 2015-04-29 08:23+0100\n" +"PO-Revision-Date: 2015-12-27 13:19+0100\n" "Last-Translator: Yann Mérignac <yann.merignac@laposte.net>\n" "Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: lhelpstrconsts.slhelp_about msgid "About" @@ -17,7 +17,7 @@ #: lhelpstrconsts.slhelp_about2 msgid "&About ..." -msgstr "À propos..." +msgstr "&À propos..." #: lhelpstrconsts.slhelp_cannothandlethistypeofcontentforurl msgid "Cannot handle this type of content. \"%s\" for url:%s%s" @@ -27,9 +27,9 @@ msgid "Cannot handle this type of subcontent. \"%s\" for url:%s%s" msgstr "Impossible de prendre en charge ce type de contenu. \"%s\" pour l'URL :%s%s" -#: lhelpstrconsts.slhelp_closeall -msgid "&Close All" -msgstr "&Tout fermer" +#: lhelpstrconsts.slhelp_close +msgid "&Close" +msgstr "&Fermer" #: lhelpstrconsts.slhelp_contents msgid "Contents" @@ -131,6 +131,14 @@ msgid "Open existing file" msgstr "Ouvrir un fichier existant" +#: lhelpstrconsts.slhelp_opennewfileinseparatetab +msgid "Open new file in separate tab" +msgstr "Ouvrir un nouveau fichier dans onglet séparé" + +#: lhelpstrconsts.slhelp_opennewtabwithstatusbar +msgid "Open new tab with status bar" +msgstr "Ouvrir un nouvel onglet avec la barre d'état" + #: lhelpstrconsts.slhelp_openrecent msgid "Open Recent" msgstr "Récemment ouvert" diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.hu.po lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.hu.po --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.hu.po 2015-06-04 21:52:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.hu.po 2015-12-21 23:08:28.000000000 +0000 @@ -27,9 +27,9 @@ msgid "Cannot handle this type of subcontent. \"%s\" for url:%s%s" msgstr "Nem kezelhetők az ilyen típusú altartalmak. \"%s\" a következő url-en:%s%s" -#: lhelpstrconsts.slhelp_closeall -msgid "&Close All" -msgstr "Összes bezárása" +#: lhelpstrconsts.slhelp_close +msgid "&Close" +msgstr "Be&zárás" #: lhelpstrconsts.slhelp_contents msgid "Contents" @@ -131,6 +131,14 @@ msgid "Open existing file" msgstr "Létező fájl megnyitása" +#: lhelpstrconsts.slhelp_opennewfileinseparatetab +msgid "Open new file in separate tab" +msgstr "Új fájl megnyitása másik fülön" + +#: lhelpstrconsts.slhelp_opennewtabwithstatusbar +msgid "Open new tab with status bar" +msgstr "Új fül nyitása állapotsorral" + #: lhelpstrconsts.slhelp_openrecent msgid "Open Recent" msgstr "Legutóbbi megynyitása" @@ -182,3 +190,4 @@ #: lhelpstrconsts.slhelp_view msgid "&View" msgstr "&Nézet" + diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.po lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.po --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.po 2015-04-28 23:03:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.po 2015-05-06 23:56:37.000000000 +0000 @@ -17,8 +17,8 @@ msgid "Cannot handle this type of subcontent. \"%s\" for url:%s%s" msgstr "" -#: lhelpstrconsts.slhelp_closeall -msgid "&Close All" +#: lhelpstrconsts.slhelp_close +msgid "&Close" msgstr "" #: lhelpstrconsts.slhelp_contents @@ -121,6 +121,14 @@ msgid "Open existing file" msgstr "" +#: lhelpstrconsts.slhelp_opennewfileinseparatetab +msgid "Open new file in separate tab" +msgstr "" + +#: lhelpstrconsts.slhelp_opennewtabwithstatusbar +msgid "Open new tab with status bar" +msgstr "" + #: lhelpstrconsts.slhelp_openrecent msgid "Open Recent" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.ru.po lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.ru.po --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/languages/lhelp.ru.po 2015-04-28 23:03:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/languages/lhelp.ru.po 2015-05-06 23:56:37.000000000 +0000 @@ -25,9 +25,9 @@ msgid "Cannot handle this type of subcontent. \"%s\" for url:%s%s" msgstr "Невозможно обработать данный тип содержимого. \"%s\" для адреса:%s%s" -#: lhelpstrconsts.slhelp_closeall -msgid "&Close All" -msgstr "Закрыть &всё" +#: lhelpstrconsts.slhelp_close +msgid "&Close" +msgstr "&Закрыть" #: lhelpstrconsts.slhelp_contents msgid "Contents" @@ -130,6 +130,14 @@ msgid "Open existing file" msgstr "Открыть существующий файл" +#: lhelpstrconsts.slhelp_opennewfileinseparatetab +msgid "Open new file in separate tab" +msgstr "Открывать новый файл в отдельной вкладке" + +#: lhelpstrconsts.slhelp_opennewtabwithstatusbar +msgid "Open new tab with status bar" +msgstr "Открывать новую вкладку со строкой состояния" + #: lhelpstrconsts.slhelp_openrecent msgid "Open Recent" msgstr "Открыть недавний" diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelpcore.lfm lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelpcore.lfm --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelpcore.lfm 2015-04-28 23:03:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelpcore.lfm 2015-05-03 20:53:01.000000000 +0000 @@ -1,9 +1,8 @@ object HelpForm: THelpForm - Left = 461 + Left = 582 Height = 535 - Top = 257 + Top = 318 Width = 758 - ActiveControl = Panel1 Caption = 'LHelp' ClientHeight = 515 ClientWidth = 758 @@ -52,200 +51,66 @@ OnKeyUp = FormKeyUp OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' Visible = True - object Panel1: TPanel + object PageControl: TPageControl Left = 0 - Height = 32 - Top = 0 + Height = 481 + Top = 34 Width = 758 - Align = alTop - ClientHeight = 32 - ClientWidth = 758 + Align = alClient TabOrder = 0 - object ForwardBttn: TSpeedButton - Left = 65 - Height = 30 - Top = 1 - Width = 32 - Align = alLeft - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000000000000002 - 65000200000000000000000000000000000049332A0069463900694639003F2D - 25001B531D000000000000000000000000000000000000000000000000005900 - 00000000000000000000000000004B342B0069463900EBB49200EBB492006946 - 390047332C000000000000000000000000000000000000000000DA0400000058 - D800D447000000000000002EB70069463900EBB49200EBB49200EBB49200EBB4 - 920069463900000000000000000000000000000000000000000000A72A004B34 - 2B00694639006946390069463900EBB49200EBB49200EBB49200EBB492009898 - 98FF989898FF6946390069463900694639004B342B00000000004B342B006746 - 3A00FCE2D200EBB49200EBB49200EBB4920065606100EBB49200EBB492000000 - 00FF000000FF989898FFEBB49200EBB4920067463A004B342B004B342B006946 - 3900FDE6D800989898FF989898FF989898FF989898FF989898FF989898FF0000 - 00FFFBB276FF000000FF989898FFEBB49200694639004B342B00FC0400006946 - 3900000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 - 00FFF9B377FFF9B377FF000000FF989898FF69463900DD4D000000001B000000 - FF00000000FFFAB780FFFAB47EFFFFB983FFFFBA7FFFFFB983FFFFC087FFFBB7 - 7CFFF3B379FFFFBD82FFFFC58BFF000000FF989898FF226C26000000FF00469E - 4A00000000FFF6B27DFFFAB47EFFFFBE85FFFFC087FFFFBD82FFFFBD82FFF3B3 - 79FFF3B379FFFFC087FFFFCB93FFFFC790FF000000FFE81B00003AAC3D006946 - 3900000000FFF9B580FFFFB983FFFFBE85FFFFC087FFFFBE85FFFAB780FFFAB7 - 80FFFCBF87FFFFC890FFFFC790FF000000FF69463900000076004B342B006946 - 3900000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 - 00FFFFC087FFFFC790FF000000FFFDE6D800694639004B342B004B342B006746 - 3A00FDE6D800FDE6D800FDE6D800FDE6D800FDE6D800FDE6D800FDE6D8000000 - 00FFFFC790FF000000FFFDE6D800FDE6D800664539004B342B00000000009134 - 2B00694639006946390069463900F3C0A000FAE1D100FDE6D800FDE6D8000000 - 00FF000000FF6946390069463900694639004B342B00000000000000FF000000 - 0000000000003AB740000000000069463900FDE6D800FDE6D800FDE6D800FDE6 - D8006946390047332C0084967E0000000000000000000000000008000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF0091342A0069463900FDE6D800FDE6D8006946 - 390047332C003EAB440000000000000000000000000000000000A0CAB500985D - 8B000000000000000000B07522006780280037221A005E392A00683B2C009129 - 1B000000000038AB3E000000000068BC74000000000000000000 - } - OnClick = ForwardToolBtnClick + TabPosition = tpBottom + OnChange = PageControlChange + OnEnter = PageControlEnter + end + object ToolBar1: TToolBar + Left = 0 + Height = 34 + Top = 0 + Width = 758 + ButtonHeight = 32 + ButtonWidth = 32 + Caption = 'ToolBar1' + EdgeBorders = [] + Images = ImageListToolbar + TabOrder = 1 + object HomeBttn: TToolButton + Left = 41 + Top = 0 + Caption = 'HomeBttn' + ImageIndex = 0 + OnClick = HomeToolBtnClick end - object BackBttn: TSpeedButton - Left = 33 - Height = 30 - Top = 1 - Width = 32 - Align = alLeft - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000004A4E4C005357 - 5500535755005357550053575500535755005357550053575500535755005357 - 5500535755005357550053575500535755004A4E4C000000000053575500B5C5 - C400B6C7C600B6C7C600B6C7C600B6C7C600B6C7C600B6C7C600B6C6C500B6C6 - C500B5C6C500B5C6C500B5C6C500AFC0BF00535755000000000053575500BCCC - CB00A4BAB900A4BAB900A4BAB900989898FF989898FFA4BAB900A4BAB900A4BA - B900A4BAB900A4BAB900A4BAB900B5C7C600535755000000000053575500BFCE - CD00A4BAB900A4BAB900989898FF000000FF000000FF989898FFA4BAB900A4BA - B900A4BAB900A4BAB900A4BAB900BDCCCB00535755000000000053575500C0CE - CD00A4BAB900989898FF000000FFFBB276FF000000FF989898FF989898FF9898 - 98FF989898FF989898FF989898FF989898FF989898FF0000000053575500C1CF - CE00989898FF000000FFF9B378FFFBB276FF000000FF000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FF989898FF00000000535755009898 - 98FF000000FFFFC68FFFFFBC81FFF6B479FFFBB77CFFFCBF87FFFFBA7FFFFFBC - 81FFFFBA7FFFFAB77EFFF9B580FF000000FF989898FF00000000535755000000 - 00FFFFC690FFFFCB93FFFDC28AFFF5B378FFF5B378FFFFBC81FFFFBC81FFFFBF - 86FFFCBF87FFFAB77EFFF6B27DFF000000FF989898FF0000000053575500CAD7 - D600000000FFFFC690FFFFC68FFFFCBF87FFFAB77EFFFAB77EFFFCBF87FFFFBF - 86FFFCBF87FFFFB983FFF9B580FF000000FF989898FF00000000535755006C70 - 6E00565A5800000000FFFFCB93FFFDC28AFF000000FF000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FF535755000000000053575500A6B8 - B500788A8800788A8800000000FFFFC68FFF000000FF595D5B00565A5800565A - 5800565A5800565A5800595D5B006C706E00535755000000000053575500A3B5 - B3007E928F007E928F007E918F00000000FF000000FF93A4A20095A4A30096A5 - A30096A5A30096A5A30096A5A300919F9D00535755000000000053575500AABD - BB00889D9A00879C9A00869B99009FB0AF005357550053575500535755005357 - 5500535755005357550053575500535755004A4E4C000000000053575500B2C3 - C100B5C5C300B5C5C300B5C5C300ACBAB9005357550000000000000000000000 - 00000000000000000000000000000000000000000000000000005819D700985D - 8B00000000000000000053575500535755005659580000000000000000000000 - 0000000000000000000000000000000000000000000000000000 - } + object BackBttn: TToolButton + Left = 73 + Top = 0 + Caption = 'BackBttn' + ImageIndex = 1 OnClick = BackToolBtnClick end - object HomeBttn: TSpeedButton + object ForwardBttn: TToolButton + Left = 105 + Top = 0 + Caption = 'ForwardBttn' + ImageIndex = 2 + OnClick = ForwardToolBtnClick + end + object FileButton: TToolButton Left = 1 - Height = 30 - Top = 1 - Width = 32 - Align = alLeft - Glyph.Data = { - 36090000424D3609000000000000360000002800000018000000180000000100 - 2000000000000009000064000000640000000000000000000000E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00000000FF0000 - 00FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00000000FF000000FFE4E7EA00000000FF000000FF000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FFE4E7EA00000000FF000000FF0000 - 00FF000000FF000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA001C1C1CFF859D87FF7F9486FF859F8EFF859D87FF6784 - 6FFF57775FFF42634EFF374F3FFF2B3D31FF000000FF7F9486FF7B8F7FFF5E7B - 67FF3F5646FF637767FF3B5242FF000000FFE4E7EA00E4E7EA00E4E7EA000000 - 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 - 00FF000000FF000000FF000000FFE4E7EA00000000FFE4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00000000FFA5A5A5FF08123DFF3753D7FF5A67 - C7FF43539FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9595 - 95FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00694639003F2D - 2500E4E7EA00E4E7EA00E4E7EA00000000FFBFBFBFFF000000FF677FE7FF5A67 - C7FF3D4E96FF000000FFBDBDBDFFBDBDBDFFBDBDBDFFBDBDBDFFBDBDBDFF8C8C - 8CFF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00000000FF000000FFEFEFEFFF000000FF96A7EFFF4B5E - CFFF3F4F97FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBF - BFFF000000FFE4E7EA00E4E7EA00E4E7EA0049332A0069463900EBB49200EBB4 - 9200EBB4920069463900000000FF000000FFFFFFFFFF000000FF95A7EFFF3D56 - CFFF161D37FF000000FFC6C6C6FF949494FF5F5F5FFF5F5F5FFF868686FF7B7B - 7BFF000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA004B342B006746 - 3A00FCE2D200EBB49200000000FF858585FFFFFFFFFF000000FF96A7EFFF3B53 - D6FF3F4F97FF000000FFFFFFFFFF000000FF000000FF000000FF000000FF0000 - 00FF6F6F6FFF000000FF69463900EBB49200EBB49200EBB4920031313100EBB4 - 920031313100EBB49200000000FFADADADFFFFFFFFFF000000FF8F9EEFFF6F84 - DFFF43539FFF000000FFFFFFFFFF000000FFCECECEFFFFFFFFFFFFFFFFFF0000 - 00FF636363FF000000FFEBB49200EBB49200694639004B342B00E4E7EA00E4E7 - EA0069463900FDE6D800000000FFD6D6D6FFFFFFFFFF000000FF000000FF0000 - 00FF000000FF000000FFFFFFFFFF000000FFBDBDBDFFFFFFFFFFFFFFFFFF0000 - 00FF6F6F6FFF000000FFFDE6D80031313100EBB4920031313100EFBFA1000000 - 00FF000000FF000000FF000000FFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF949494FFC7C7C7FFEFEFEFFF0000 - 00FF7F7F7FFF000000FF000000FF000000FF000000FFE4E7EA004B342B006946 - 3900000000FF232323FFAFAFAFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBF - BFFFBFBFBFFFBFBFBFFFBFBFBFFF000000FF000000FF000000FF000000FF0000 - 00FF949494FF6F6F6FFF252525FF000000FF31313100F9DBC900FDE6D800FDE6 - D800F3C0A000000000FF1F1F1FFFC6C6C6FFC6C6C6FFCECECEFFFFFFFFFFAFAF - AFFFFFFFFFFFBFBFBFFFFFFFFFFFBFBFBFFFFFFFFFFFBDBDBDFFFFFFFFFFD7D7 - D7FF7F7F7FFF1C1C1CFF000000FFFDE6D800664539004B342B00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00000000FF212121FF737373FFA7A7A7FFD6D6D6FF9E9E - 9EFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFFFFFFFFFF6363 - 63FF1D1D1DFF000000FF69463900F3C0A000FAE1D100FDE6D800683B2C009129 - 1B00E4E7EA00E4E7EA00E4E7EA00000000FF232323FF525252FFB7B7B7FF9494 - 94FFD6D6D6FF9E9E9EFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFF878787FF1717 - 17FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00000000FF000000FF1C1C1CFF464646FF6767 - 67FFBFBFBFFF7F7F7FFFD6D6D6FFBDBDBDFFFFFFFFFF4F4F4FFF272727FF0000 - 00FFE4E7EA00E4E7EA00E4E7EA00E4E7EA0037221A005E392A00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00000000FF3D4F97FF000000FF232323FF3131 - 31FFA5A5A5FF676767FFADADADFFBDBDBDFF5A5A5AFF141414FF000000FFE4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00000000FF3B4F94FF4356A5FF000000FF1818 - 18FF474747FF575757FF8D8D8DFF393939FF191919FF000000FFE4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00000000FF5A67C7FF374B96FF000000FF0000 - 00FF2B2B2BFF333333FF353535FF252525FF000000FFE4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00000000FF000000FF000000FF000000FFE4E7 - EA00000000FF212121FF2D2D2DFF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA005840D50060EE - 7A000000000000000000E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 - EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00 - } - OnClick = HomeToolBtnClick + Top = 0 + Caption = 'FileButton' + ImageIndex = 3 + OnClick = FileMenuOpenItemClick + end + object ToolButton1: TToolButton + Left = 33 + Height = 32 + Top = 0 + Width = 8 + Caption = 'ToolButton1' + Style = tbsSeparator end - end - object PageControl: TPageControl - Left = 0 - Height = 483 - Top = 32 - Width = 758 - Align = alClient - TabOrder = 1 - TabPosition = tpBottom - OnChange = PageControlChange - OnEnter = PageControlEnter end object MainMenu1: TMainMenu left = 208 @@ -258,7 +123,7 @@ OnClick = FileMenuOpenItemClick end object FileMenuOpenRecentItem: TMenuItem - Caption = 'Open Recent' + Caption = 'Open recent' Enabled = False end object FileMenuOpenURLItem: TMenuItem @@ -266,7 +131,7 @@ OnClick = FileMenuOpenURLItemClick end object FileMenuCloseItem: TMenuItem - Caption = '&Close All' + Caption = '&Close' ShortCut = 16471 OnClick = FileMenuCloseItemClick end @@ -281,6 +146,7 @@ end object ViewMenuItem: TMenuItem Caption = '&View' + OnClick = ViewMenuItemClick object ViewMenuContents: TMenuItem Caption = 'Show contents' Checked = True @@ -288,6 +154,14 @@ ShowAlwaysCheckable = True OnClick = ViewMenuContentsClick end + object ViewShowStatus: TMenuItem + Caption = 'Open tabs with statusbar' + OnClick = ViewShowStatusClick + end + object ViewShowSepTabs: TMenuItem + Caption = 'Open separate tabs for files' + OnClick = ViewShowSepTabsClick + end end object HelpMenuItem: TMenuItem Caption = '&Help' @@ -301,8 +175,8 @@ object OpenDialog1: TOpenDialog Filter = 'Help files (*.chm)|*.chm|All files (*.*)|*' FilterIndex = 0 - left = 144 - top = 80 + left = 248 + top = 92 end object ImageList1: TImageList left = 80 @@ -445,4 +319,255 @@ left = 80 top = 136 end + object ImageListToolbar: TImageList + Height = 22 + Width = 22 + left = 120 + top = 88 + Bitmap = { + 4C69040000001600000016000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000A4190000A4FF0000A4FF0000 + A430000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000A4330000A4FF7575F4FF7575F4FF0000A4FF0000A4190000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000A4330000 + A4FF7575F4FF7575F4FF7575F4FF7575F4FF0000A4FF0000A419000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000A4330000A4FF7575F4FF3939E5FF7575 + F4FF7575F4FF2727E2FF7575F4FF0000A4FF0000A41900000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000A4330000A4FF7575F4FF4646ECFF4C4CF1FF7575F4FF7575F4FF2727 + E2FF2727E2FF7575F4FF0000A4FF0000A4190000000000000000000000000000 + 000000000000000000000000000000000000000000000000A4330000A4FF7575 + F4FF5151F0FF5555F2FF7575F4FF0000A4FF0000A4FF7575F4FF2626E0FF2727 + E2FF7575F4FF0000A4FF0000A419000000000000000000000000000000000000 + 000000000000000000000000A4330000A4FF7575F4FF5B5BF3FF5E5EF2FF7575 + F4FF0000A4FF4A4C7BFF585A88FF0000A4FF7575F4FF2626DEFF2727E2FF7575 + F4FF0000A4FF0000A41900000000000000000000000000000000000000000000 + A45C0000A4FF7575F4FF6464F3FF6464F3FF7575F4FF0000A4FF5B5D99FF8285 + 84FF9A9B9BFF8A8AC0FF0000A4FF7575F4FF2626DCFF2727E2FF7575F4FF0000 + A4FF0000A419000000000000000000000000000000000000A4FF7575F4FF6C6C + F4FF6666F4FF7575F4FF0000A4FF73759DFF8D908FFFB8B9B8FFC1C2C2FFB9BA + BAFFA1A1C4FF0000A4FF7575F4FF2525DCFF2727E2FF7575F4FF0000A4FF0000 + 000000000000000000000000A4080000A4FF7575F4FF6363F3FF7575F4FF0000 + A4FF8B8DA3FF9EA09FFFBEBFBFFFDDDEDEFFDDDEDEFFDDDDDDFFD7D7D7FFB5B5 + C9FF08089CFF7575F4FF2525DCFF7575F4FF0000A4FF00000000000000000000 + 00000000A4120000A4FF7575F4FF7575F4FF0000A4FF9D9FA7FFA2A3A3FFDADA + DAFFEAEAEAFFEAEAEAFFEAEAEAFFE9E9E9FFE9E9E9FFE7E7E7FFD0D0DCFF0808 + 9CFF7575F4FF7575F4FF0000A4FF0000000000000000000000000000A4120000 + A4FF7575F4FF212284FF9EA0A1FFA1A3A2FFD8D8D8FFE6E6E6FFE7E7E7FFE7E7 + E7FFE7E7E7FFE6E6E6FFE4E4E4FFE4E4E4FFE3E3E3FFDEDEE2FF08089CFF7575 + F4FF0000A4FF0000A4020000000000000000000000002E2EBA5F0000A4FFDBDC + DBFF535755FF535755FF535755FF535755FF535755FFE9E9E9FFE7E7E7FF7A78 + 77FF7D7976FF757575FF7D7976FF767675FFF3F3F3FF0000A4FF2C2CB86C0000 + 000000000000000000000000000000000000535755FFEEEEEEFF535755FF7B80 + 7EFF7C817FFF7D8280FF7D8280FFE6E6E6FFE5E5E5FF7C7976FFC39979FF7575 + 75FFC29877FF7C7875FFF2F2F2FF535755FF7575750300000000000000000000 + 00000000000000000000535755FFEDEDEDFF535755FF818684FF818684FF8186 + 84FF828785FFE4E4E4FFE2E2E2FF7B7875FFB7865FFF757575FFAE764AFF7A75 + 72FFF1F1F1FF535755FF00000002000000000000000000000000000000000000 + 0004535755FFECECECFF535755FF838886FF838886FF65888AFF708889FFE2E2 + E2FFE0E0E0FF817871FFA46534FF757575FFA46534FF81766EFFF0F0F0FF5357 + 55FF0000000A000000010000000000000000000000030000000F535755FFEBEB + EBFF535755FF848987FF848987FF7E8988FF7C817FFFE0E0E0FFF9F9F9FFB6B3 + B1FFC1BCB8FFBCBBBAFFC1BDB9FFA4A4A4FFEFEFEFFF535755FF0000001D0000 + 00040000000000000001000000070000001A535755FFEAEAEAFF535755FF858A + 88FF858A88FF858A88FF858A88FFDEDEDEFFF9F9F9FFA2A2A2FFA3A3A3FFA3A3 + A3FFA3A3A3FFA3A3A3FFDDDDDDFF535755FF0000001E00000004000000000000 + 0001000000080000001C535755FFF0F0F0FF636765FF949997FF969998FF969A + 99FF979A99FFF3F3F3FFEEEEEEFFEEEEEEFFEEEEEEFFEEEEEEFFEEEEEEFFEEEE + EEFFF8F8F8FF535755FF00000013000000030000000000000001000000040000 + 0011535755FF535755FF535755FF535755FF535755FF535755FF535755FF5357 + 55FF535755FF535755FF535755FF535755FF535755FF535755FF535755FF5357 + 55FF0000000400000000000000000000000000000001000000050000000C0000 + 0014000000220000003500000049000000520000005600000053000000530000 + 0047000000440000003F0000002F000000220000000D00000003000000000000 + 0000000000000000000000000000000000010000000100000002000000040000 + 00050000000A0000000B0000000C0000000C0000000900000009000000080000 + 000700000004000000010000000000000000000000000000000000000000FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00047339470474 + 3AC100804004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0005753C6B258854F507753CFE00804008FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000080 + 000203743A95349262F59FD6BAFF0B773FFC00804008FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000074460B04753BBB459E71F798D4 + B5FFA5DABFFF0B773FFC00804008FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000763B1A04743CD955AA7EFA8ED1AFFF52B984FFA0D9BCFF0B7B + 41F604733AFF04733AFF04733AFF04733AFF04733AFF04753BEA00804004FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0005753A300877 + 3DEB63B68BFC7FCBA4FF42B278FF41B278FF9DD7B9FFA1D9BCFFA3DABEFFA4DA + BFFFA6DBC0FFA6DBC0FFA6DBC0FF0A763FFC00804008FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000372394C0F7B44F36CBC94FF6BC396FF31AC + 6DFF34AD6FFF39AF72FF3EB176FF42B278FF44B37AFF47B57DFF49B57EFF4AB6 + 7FFF9FD8BBFF0A763FFC00804008FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0004743A72168049F574C39AFF55BA87FF23A663FF28A866FF2DAA6AFF32AC + 6DFF36AD70FF3AAF73FF3DB075FF3FB176FF41B278FF41B278FF9AD6B8FF0976 + 3EFC00804008FFFFFF00FFFFFF00FFFFFF00FFFFFF0003753B92208854F474C4 + 9BFF3EB175FF17A15AFF1CA35EFF21A561FF25A764FF2BAB69FF2CAF6BFF28B0 + 6AFF23AF67FF23AF67FF29AF6BFF36B272FF95D5B4FF08753DFC00804008FFFF + FF00FFFFFF00FFFFFF00FFFFFF0003773BAC208A54F571C49AFF36AD70FF0D9D + 53FF109E55FF0F9E54FF0FA457FF0BA757FF0AAB59FF0BAE5BFF0CB05CFF0CB0 + 5CFF0BAE5BFF0BAA5AFF84D3AAFF08753DFC00804008FFFFFF00FFFFFF00FFFF + FF00FFFFFF000080000204743A91158249F46CC095FF44B37AFF069A4EFF07A0 + 52FF09A757FF0BAE5BFF0DB45FFF0EB862FF0FBB64FF0FBB63FF0EB862FF0DB3 + 5FFF7ED4A8FF08753DFC00804008FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000003046D37690D7942F561B98CFF53BB86FF0CA557FF0BAC5AFF0DB4 + 5FFF0FBB64FF11C168FF12C66BFF12C56AFF11C167FF0FBA63FF7FD7AAFF0875 + 3CFC0066330AFFFFFF00FFFFFF00FFFFFF00FFFFFF00000000050000000C0000 + 001203582C5007763CF253B081FE63C694FF14B161FF0EB660FF80DDAEFF84E1 + B2FF86E6B5FF85E5B4FF84E1B2FF83DDAFFF82D9ADFF08763CFC00341A140000 + 0005FFFFFF00FFFFFF00000000040000000B000000120000001900000020033C + 1E4403723AE745A675FB6FCE9DFF1CB969FF80DBADFF097D41F804733AFF0473 + 3AFF04733AFF04733AFF04733AFF04733BEC00170B160000000B00000002FFFF + FF00000000070000000E000000160000001D000000240000002C001B0F40036E + 37D2369866F975D0A1FF81D8ACFF08763CFD000E07470000003A000000330000 + 002C000000240000001D000000160000000E00000006FFFFFF00000000070000 + 000E000000160000001D000000240000002C000000330008043D026533B7258B + 57F879CEA3FF08763CFD000E07470000003A000000330000002C000000240000 + 001D000000160000000E00000004FFFFFF00000000040000000B000000120000 + 001900000020000000260000002D000000320000003703592D911B814CF70674 + 3CFE0010083D000000320000002D000000260000002000000019000000120000 + 000A00000001FFFFFF00FFFFFF00000000040000000C00000012000000170000 + 001D00000022000000260000002A0000002C024E2768036E37CC000B052D0000 + 0026000000220000001D00000017000000120000000900000001FFFFFF00FFFF + FF00FFFFFF00FFFFFF0000000001000000060000000D00000012000000160000 + 00190000001C0000001D0000001E0000001D0000001C00000019000000160000 + 00120000000B00000004FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000000000300000005000000080000000B0000 + 000E0000000E0000000C0000000A000000070000000400000001FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0004753BBF0372394CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004733AFF2989 + 58F705753B71FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004733AFFA4D9BEFF399566F60376 + 3C9A00555503FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0004733AFFA9DCC1FF9BD5B7FF4AA174F804743BBF006A + 400CFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0004753AE804733AFF04733AFF04733AFF04733AFF0473 + 3AFF05773CF7A5DABFFF57BB87FF90D2B0FF5BAD83FA03743BDB0076371CFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0004733AFFA6DBC0FFA6DBC0FFA6DBC0FFA6DBC0FFA4DABFFFA3DABEFFA1D9 + BCFF45B47BFF47B47CFF82CCA6FF67B78DFD09763DED05723931FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004733AFFA0D9 + BCFF4AB67FFF4AB67FFF49B57EFF47B57DFF44B37AFF42B278FF3EB176FF3AAF + 73FF36AE70FF6FC598FF71BF97FF107C45F403743C4DFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004733AFF9CD7B9FF41B278FF41B2 + 78FF41B278FF3FB176FF3DB075FF3AAF73FF36AD70FF32AC6DFF2DAA6AFF28A8 + 66FF58BC89FF78C59DFF18814BF504733A73FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0004733AFF97D5B5FF34AD6FFF28A866FF21A561FF21A5 + 61FF27A766FF2DAB6BFF2EAD6BFF2BAD6AFF27AB68FF22A964FF1CA55FFF41B2 + 78FF78C69FFF228A56F403753B92FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0004733AFF85CDA8FF079A4FFF069A4EFF069A4EFF069C4FFF08A152FF09A5 + 55FF0CAA58FF12AE5EFF15AF60FF16AD61FF13AA5DFF3AB677FF75C79DFF228B + 55F504763BADFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004733AFF7ECB + A3FF069A4EFF069A4EFF069C4FFF08A354FF0AA958FF0CAF5CFF0DB35EFF0EB6 + 60FF0EB660FF0DB45FFF47C484FF70CA9CFF16834AF503773B9200800002FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004733AFF7ECBA3FF069A4EFF069A + 4EFF08A152FF0AA857FF0CB05CFF0EB761FF10BD65FF11C167FF13C269FF59D3 + 95FF67C998FF0F7D44F5046E386D0000000800000002FFFFFF00FFFFFF00FFFF + FF00FFFFFF000000000504733AFF7ECBA3FF7ECBA3FF7ECBA4FF7FCFA6FF81D4 + A9FF82D8ACFF83DCAFFF11C369FF1ACC73FF69DFA3FF5AC38EFE09773EF30256 + 2C5600000017000000120000000C00000005FFFFFF00FFFFFF00000000040000 + 000B047339EA04733AFF04733AFF04733AFF04733AFF04733AFF05773DF983DB + AEFF1FC671FF72DEA7FF4AB47FFC04743BE903391B4B00000026000000200000 + 0019000000120000000B00000002FFFFFF00000000070000000E000000160000 + 001D000000240000002C000000330000003A04733AFF82D8ACFF76D6A6FF3A9F + 6BF9047038D7001C0E47000000330000002C000000240000001D000000160000 + 000E00000006FFFFFF00000000070000000E000000160000001D000000240000 + 002C000000330000003A04733AFF7ACFA4FF298D5AF9026633BD000703450000 + 003A000000330000002C000000240000001D000000160000000E00000004FFFF + FF00000000040000000B000000120000001900000020000000260000002D0000 + 003204733AFF1E834EF9035D2F960000003A00000037000000320000002D0000 + 00260000002000000019000000120000000A00000001FFFFFF00FFFFFF000000 + 00040000000C00000012000000170000001D0000002200000026036E37CA0252 + 2A6C0000002D0000002C0000002A00000026000000220000001D000000170000 + 00120000000900000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000010000 + 00060000000D0000001200000016000000190000001C0000001D0000001E0000 + 001D0000001C0000001900000016000000120000000B00000004FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 000300000005000000080000000B0000000E0000000E0000000C0000000A0000 + 00070000000400000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005B5B + 5B005B5B5B005B5B5B005B5B5B005B5B5B005B5B5B005B5B5B005B5B5B005458 + 56F8555957FB545856FC555957FC555957FC565A58FD565A58FD5C5F5ED65555 + 55155B5B5B005B5B5B005B5B5B005B5B5B005B5B5B005B5B5B00555555037070 + 70107070701070707010707070107070701070707010545856FFF7F7F7FFF8F8 + F8FFF9F9F9FFFAFAFAFFFBFBFBFFFBFBFBFF9FA0A0FF585B59E05B5B5B0E5B5B + 5B005B5B5B005B5B5B005B5B5B005B5B5B007A7A7AD67B7B7BF97B7B7BF87B7B + 7BF87B7B7BF87B7B7BF87B7B7BF8535755FFDADADAFFD3D3D3FFD3D3D3FFD2D2 + D2FFCFCFCFFFCDCDCDFFFEFEFEFF909191FE5B5E5CD3555555095B5B5B005B5B + 5B005B5B5B005B5B5B00767676FFD3D3D3FFD0D0D0FFCFCFCFFFCDCDCDFFCDCD + CDFFCBCBCBFF535755FFDCDCDCFF9C9D9CFF9C9D9CFF9C9D9CFF9C9D9CFFD4D5 + D5FFFEFEFEFFFDFDFDFF959796FE595C5A9B5B5B5B005B5B5B005B5B5B005B5B + 5B00727272FECFCFCFFFB3B3B3FFAFAFAFFFADADADFFABABABFFAAAAAAFF5458 + 56FFE2E2E2FFE2E2E2FFE1E1E1FFE1E1E1FFE0E0E0FFE0E0E0FFE9E9E9FFE5E5 + E5FFD0D0D0FF5B5F5DF15B5B5B005B5B5B005B5B5B005B5B5B006F6F6FFDCDCD + CDFFAFAFAFFFACACACFFAAAAAAFFA8A8A8FFA6A6A6FF545856FFE6E6E6FF9EA0 + 9FFF9B9D9CFF9B9D9CFF9B9D9CFFDDDDDDFFE3E3E3FFE3E3E3FFD0D1D0FF595D + 5BF35B5B5B005B5B5B005B5B5B005B5B5B006A6B6BFCC8C9C9FFACACACFFA9A7 + A6FFA7A5A4FFA5A3A2FFA19F9EFF575956FFE9E7E6FFE8E6E5FFE8E6E5FFE7E5 + E4FFE7E5E4FFE6E4E3FFE6E4E3FFE5E3E2FFD7D5D4FF5B5C5AF19F6040088080 + 00025B5B5B005B5B5B00656565FCC4C4C4FFA8988BFFA46736FFA66938FFA669 + 38FFA66938FFA56837FFA76939FFA76939FFA76939FFA66938FFA66938FFA669 + 38FFA66938FFA66837FFA66837FFA46635FFA56635FCA66736E7FF0000015B5B + 5B00616161FBC1C1C1FFA68B75FFC49973FFEAD4BFFFEAD3BEFFEAD3BEFFEAD3 + BEFFEAD4BFFFEAD4BFFFEAD4BFFFEAD4BFFFEAD4BFFFEAD4BFFFEAD4BFFFEAD4 + C0FFEAD4C0FFEAD4C0FFE6CEB6FFA46535FC5B5B5B005B5B5B005E5E5EFABDBD + BDFFA5846BFFCBA280FFE2C5A9FFD9B38EFFD9B38EFFD9B38EFFD9B38EFFD9B3 + 8EFFD9B38EFFD9B38EFFD9B38EFFD9B38EFFD9B38EFFD9B38EFFD9B38EFFDCB8 + 96FFE1C5AAFFA66837F05B5B5B005B5B5B005A5A5AF9B9B9B9FFA57F60FFD2AD + 8DFFE2C4A9FFDBB592FFDBB592FFDBB592FFDBB592FFDBB592FFDBB592FFDBB5 + 92FFDBB592FFDBB592FFDBB592FFDBB592FFDBB592FFDCB794FFDEBFA3FFA869 + 39E15B5B5B005B5B5B00555555F8B4B5B5FFA67A56FFD9B79BFFE2C3A8FFDDB8 + 96FFDDB896FFDDB896FFDDB896FFDDB896FFDDB896FFDDB896FFDDB896FFDDB8 + 96FFDDB896FFDDB896FFD9B08BFFDCB694FFDAB99DFFA86B3AD05B5B5B005B5B + 5B00525252F7B1B1B1FFA6744CFFDEC1A7FFE2C3A8FFDDBA9AFFDDBA9AFFDDBA + 9AFFDDBA9AFFDDBA9AFFDDBA9AFFDDBA9AFFDDBA9AFFDDBA9AFFDCB897FFD9B1 + 8DFFD7AD87FFDEBC9DFFD6B395FFA86B3ABC5B5B5B005B5B5B004D4D4DF7AEAE + AEFFA66F44FFDFC1A7FFE0BFA2FFDDBA9AFFDDBA9AFFDDBA9AFFDCB897FFDCB7 + 95FFDBB694FFDBB492FFDAB28FFFD8AE89FFD7AD87FFD7AD87FFD7AD87FFDEBC + 9DFFCFA886FFA76939A55B5B5B005B5B5B004A4A4AF5AAAAAAFFA5693BFFDEBE + A1FFDCB695FFD8AF8AFFD6AB84FFD4A77EFFD3A67CFFD3A67CFFD3A67CFFD3A6 + 7CFFD3A67CFFD3A67CFFD3A67CFFD3A67CFFD3A67CFFDAB592FFC59870FFA567 + 358B5B5B5B005B5B5B00454545F5A6A6A5FFA46635FFD9B290FFD0A074FFCF9E + 71FFCF9E71FFCF9E71FFCF9E71FFCF9E71FFCF9E71FFCF9E71FFCF9E71FFCF9E + 71FFCF9E71FFCF9E71FFCF9E71FFD5AB84FFBD895EFAA36434755B5B5B005B5B + 5B00454545F3A39F9BFFA66B3CFFD5A980FFCF9E70FFCF9E70FFCF9E70FFCF9E + 70FFCF9E70FFCF9E70FFCF9E70FFCF9E70FFCF9E70FFCF9E70FFCF9E70FFCF9E + 70FFCF9E70FFD4A67DFFB67D4DF4A46534625B5B5B005B5B5B00454545F3A197 + 8FFFB17E55FFD9B390FFD7B18CFFD7B18CFFD7B18CFFD7B18CFFD7B18CFFD7B1 + 8CFFD7B18CFFD7B18CFFD7B18CFFD7B18CFFD7B18CFFD7B18CFFD7B18CFFD8B2 + 8EFFAF7242F0A36333505B5B5B0000000004464646F29A7F69FFA96F41FFB881 + 51FFB88151FFB88151FFB88151FFB88151FFB88151FFB88151FFB88151FFB881 + 51FFB88151FFB88151FFB88151FFB88151FFB88151FFB6804EFFA56736F69258 + 2F315B5B5B000000000B3C3C3CA7855A39FBA16434FFA16434FFA16434FFA164 + 34FFA16434FFA16434FFA16434FFA16434FFA16434FFA16434FFA16434FFA164 + 34FFA16434FFA16434FFA26434FEA16333FA89552CBA00000010000000000000 + 00050000001F0000003400000038000000380000003800000038000000380000 + 0038000000380000003800000038000000380000003800000038000000380000 + 0038000000380000003600000028000000085B5B5B0000000000000000040000 + 0008000000090000000900000009000000090000000900000009000000090000 + 0009000000090000000900000009000000090000000900000009000000090000 + 000800000006000000005B5B5B00 + } + end end diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelpcore.pas lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelpcore.pas --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelpcore.pas 2015-04-28 23:03:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelpcore.pas 2015-09-10 12:12:02.000000000 +0000 @@ -17,6 +17,11 @@ to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. } +{ +Icons from Tango theme: +http://tango.freedesktop.org/Tango_Icon_Library +} + unit lhelpcore; {$IFDEF LNET_VISUAL} @@ -37,11 +42,14 @@ uses Classes, SysUtils, SimpleIPC, Laz2_XMLCfg, - FileUtil, Forms, Controls, Dialogs, - Buttons, LCLProc, ComCtrls, ExtCtrls, Menus, LCLType, LCLIntf, StdCtrls, - BaseContentProvider, ChmContentProvider, lhelpstrconsts, DefaultTranslator, - {$IFDEF USE_LNET}, HTTPContentProvider{$ENDIF} - lazlogger; + // LCL + Forms, Controls, Dialogs, Buttons, ComCtrls, ExtCtrls, Menus, StdCtrls, + LCLProc, LCLType, LCLIntf, DefaultTranslator, + // LazUtils + LazFileUtils, LazUTF8, LazLogger, + // ChmHelp + {$IFDEF USE_LNET}HTTPContentProvider,{$ENDIF} + BaseContentProvider, ChmContentProvider, lhelpstrconsts; type @@ -66,17 +74,22 @@ FileMenuOpenItem: TMenuItem; FileSeperater: TMenuItem; ImageList1: TImageList; + ImageListToolbar: TImageList; MainMenu1: TMainMenu; FileMenuOpenURLItem: TMenuItem; HelpMenuItem: TMenuItem; AboutItem: TMenuItem; FileMenuOpenRecentItem: TMenuItem; + ViewShowStatus: TMenuItem; + ViewShowSepTabs: TMenuItem; PageControl: TPageControl; - Panel1: TPanel; - ForwardBttn: TSpeedButton; - BackBttn: TSpeedButton; - HomeBttn: TSpeedButton; OpenDialog1: TOpenDialog; + ToolBar1: TToolBar; + HomeBttn: TToolButton; + BackBttn: TToolButton; + ForwardBttn: TToolButton; + FileButton: TToolButton; + ToolButton1: TToolButton; ViewMenuContents: TMenuItem; ViewMenuItem: TMenuItem; procedure AboutItemClick(Sender: TObject); @@ -94,6 +107,9 @@ procedure PageControlChange(Sender: TObject); procedure PageControlEnter(Sender: TObject); procedure ViewMenuContentsClick(Sender: TObject); + procedure ViewMenuItemClick(Sender: TObject); + procedure ViewShowSepTabsClick(Sender: TObject); + procedure ViewShowStatusClick(Sender: TObject); private { private declarations } // SimpleIPC server name (including unique part as per help protocol) @@ -107,6 +123,8 @@ fInputIPCTimer: TTimer; fContext: LongInt; // used once when we are started on the command line with --context fConfig: TXMLConfig; + fShowSepTabs: Boolean; + fShowStatus: Boolean; fHasShowed: Boolean; fHide: boolean; //If yes, start with content hidden. Otherwise start normally fUpdateCount: Integer; @@ -308,9 +326,14 @@ procedure THelpForm.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin + //close all tabs to avoid AV with many tabs + while Assigned(ActivePage) do + ActivePage.Free; + ////was before: close tab + ////FileMenuCloseItemClick(Sender); + Visible := false; Application.ProcessMessages; - FileMenuCloseItemClick(Sender); StopComms; SavePreferences; end; @@ -321,10 +344,12 @@ FileMenuOpenItem.Caption := slhelp_Open; FileMenuOpenRecentItem.Caption := slhelp_OpenRecent; FileMenuOpenURLItem.Caption := slhelp_OpenURL; - FileMenuCloseItem.Caption := slhelp_CloseAll; + FileMenuCloseItem.Caption := slhelp_Close; FileMenuExitItem.Caption := slhelp_EXit; ViewMenuItem.Caption := slhelp_View; ViewMenuContents.Caption := slhelp_ShowContents; + ViewShowStatus.Caption := slhelp_OpenNewTabWithStatusBar; + ViewShowSepTabs.Caption := slhelp_OpenNewFileInSeparateTab; HelpMenuItem.Caption := slhelp_Help; AboutItem.Caption := slhelp_About2; @@ -424,6 +449,26 @@ end; end; +procedure THelpForm.ViewMenuItemClick(Sender: TObject); +begin + ViewMenuContents.Checked := + Assigned(ActivePage) and + (ActivePage.ContentProvider is TChmContentProvider) and + (ActivePage.ContentProvider as TChmContentProvider).TabsControl.Visible; + ViewShowSepTabs.Checked := fShowSepTabs; + ViewShowStatus.Checked := fShowStatus; +end; + +procedure THelpForm.ViewShowSepTabsClick(Sender: TObject); +begin + fShowSepTabs := not fShowSepTabs; +end; + +procedure THelpForm.ViewShowStatusClick(Sender: TObject); +begin + fShowStatus := not fShowStatus; +end; + procedure THelpForm.LoadPreferences(AIPCName: String); var PrefFile: String; @@ -451,6 +496,9 @@ // downto since oldest are knocked off the list: for i := RecentCount-1 downto 0 do AddRecentFile(fConfig.GetValue('Recent/Item'+IntToStr(i)+'/Value','')); + + fShowSepTabs := fConfig.GetValue('OpenSepTabs/Value', true); + fShowStatus := fConfig.GetValue('OpenWithStatus/Value', true); end; procedure THelpForm.SavePreferences; @@ -479,6 +527,9 @@ for i := 0 to FileMenuOpenRecentItem.Count-1 do fConfig.SetValue('Recent/Item'+IntToStr(i)+'/Value', TRecentMenuItem(FileMenuOpenRecentItem.Items[I]).URL); + fConfig.SetValue('OpenSepTabs/Value', fShowSepTabs); + fConfig.SetValue('OpenWithStatus/Value', fShowStatus); + fConfig.Flush; fConfig.Free; end; @@ -562,7 +613,7 @@ begin Url := 'file://'+FileReq.FileName; Res := OpenURL(URL); - debugln('got rtfile, filename '+filereq.filename); + //debugln('got rtfile, filename '+filereq.filename); end; rtUrl: begin @@ -579,7 +630,7 @@ Url := UrlReq.Url; Res := OpenURL(Url); end; - debugln('got rturl, filename '+urlreq.filerequest.filename+', url '+urlreq.url); + //debugln('got rturl, filename '+urlreq.filerequest.filename+', url '+urlreq.url); end; rtContext: begin @@ -588,7 +639,7 @@ Stream.Read(ConReq, SizeOf(ConReq)); Url := 'file://'+FileReq.FileName; Res := OpenURL(Url, ConReq.HelpContext); - debugln('got rtcontext, filename '+filereq.filename+', context '+inttostr(ConReq.HelpContext)); + //debugln('got rtcontext, filename '+filereq.filename+', context '+inttostr(ConReq.HelpContext)); end; rtMisc: begin @@ -600,7 +651,7 @@ begin MustClose:=true; Res:= ord(srSuccess); - debugln('got rtmisc/mrClose'); + //debugln('got rtmisc/mrClose'); end; mrShow: begin @@ -609,7 +660,7 @@ WindowState := wsNormal; RefreshState; Res := ord(srSuccess); - debugln('got rtmisc/mrShow'); + //debugln('got rtmisc/mrShow'); end; mrVersion: begin @@ -619,7 +670,7 @@ Res := ord(srSuccess) else Res := ord(srError); //version not supported - debugln('got rtmisc/'); + //debugln('got rtmisc/'); end; mrBeginUpdate: begin @@ -646,7 +697,7 @@ // Unfortunately, the delay time is guesswork=>Sleep(80)? SendResponse(Res); //send response again in case first wasn't picked up // Keep after SendResponse to avoid timing issues (e.g. writing to log file): - debugln('Just sent TLHelpResponse code: '+inttostr(Res)); + //debugln('Just sent TLHelpResponse code: '+inttostr(Res)); if MustClose then begin @@ -833,6 +884,7 @@ Exit; end; + if not fShowSepTabs then for I := 0 to PageControl.PageCount-1 do begin if fRealContentProvider.ClassName = TContentTab(PageControl.Pages[I]).ContentProvider.ClassName then @@ -854,10 +906,12 @@ // no existing page that can handle this content, so create one fPage := TContentTab.Create(PageControl); fPage.ContentProvider := fRealContentProvider.Create(fPage, ImageList1); - fPAge.ContentProvider.OnTitleChange:=@ContentTitleChange; + fPage.ContentProvider.OnTitleChange := @ContentTitleChange; fPage.Parent := PageControl; SetKeyUp(fPage); fPage.ContentProvider.LoadPreferences(fConfig); + if fPage.ContentProvider is TChmContentProvider then + (fPage.ContentProvider as TChmContentProvider).ShowStatusbar := fShowStatus; end; if fUpdateCount > 0 then diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelp.lpi lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelp.lpi --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelp.lpi 2015-04-28 23:03:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelp.lpi 2015-05-06 23:56:37.000000000 +0000 @@ -103,7 +103,6 @@ <ComponentName Value="HelpForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <UnitName Value="lhelpcore"/> </Unit4> <Unit5> <Filename Value="lnethttpdataprovider.pas"/> @@ -117,7 +116,6 @@ <Unit7> <Filename Value="chmcontentprovider.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="chmcontentprovider"/> </Unit7> <Unit8> <Filename Value="httpcontentprovider.pas"/> @@ -127,7 +125,6 @@ <Unit9> <Filename Value="lhelpstrconsts.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="lhelpstrconsts"/> </Unit9> </Units> </ProjectOptions> Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelp.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelp.res differ diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelpstrconsts.pas lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelpstrconsts.pas --- lazarus-1.4.4+dfsg/components/chmhelp/lhelp/lhelpstrconsts.pas 2015-04-28 23:03:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/lhelp/lhelpstrconsts.pas 2015-05-06 23:56:37.000000000 +0000 @@ -16,10 +16,12 @@ slhelp_Open = '&Open ...'; slhelp_OpenRecent = 'Open Recent'; slhelp_OpenURL = 'Open &URL ...'; - slhelp_CloseAll = '&Close All'; + slhelp_Close = '&Close'; slhelp_EXit = 'E&xit'; slhelp_View = '&View'; slhelp_ShowContents = 'Show contents'; + slhelp_OpenNewTabWithStatusBar = 'Open new tab with status bar'; + slhelp_OpenNewFileInSeparateTab = 'Open new file in separate tab'; slhelp_Help = '&Help'; slhelp_About2 = '&About ...'; slhelp_OpenExistingFile = 'Open existing file'; diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/packages/help/lazhelpchm.pas lazarus-1.6+dfsg/components/chmhelp/packages/help/lazhelpchm.pas --- lazarus-1.4.4+dfsg/components/chmhelp/packages/help/lazhelpchm.pas 2014-10-16 09:26:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/packages/help/lazhelpchm.pas 2015-07-04 23:08:00.000000000 +0000 @@ -21,7 +21,7 @@ uses Classes, SysUtils, LazHelpIntf, LazConfigStorage, HelpIntfs, - Dialogs, Forms, LazLogger, FileUtil, LHelpControl, LResources; + Dialogs, Forms, LazLogger, FileUtil, LazFileUtils, LHelpControl, LResources; const CHMMimeType = 'application/chm'; diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/packages/help/lhelpcontrol.pas lazarus-1.6+dfsg/components/chmhelp/packages/help/lhelpcontrol.pas --- lazarus-1.4.4+dfsg/components/chmhelp/packages/help/lhelpcontrol.pas 2015-02-25 23:02:07.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/packages/help/lhelpcontrol.pas 2015-09-20 15:14:54.000000000 +0000 @@ -22,7 +22,7 @@ {$IFDEF STALE_PIPE_WORKAROUND} BaseUnix, {$ENDIF} - Classes, SysUtils, FileUtil, LazLogger, SimpleIPC, process, UTF8Process; + Classes, SysUtils, LazFileUtils, LazLogger, SimpleIPC, process, UTF8Process; const PROTOCOL_VERSION='2'; //IDE<>LHelp communication protocol version. Please update when breaking compatibility @@ -193,7 +193,7 @@ {$IFDEF STALE_PIPE_WORKAROUND} {$ENDIF} begin - Result := (fServerOut<>nil) and (fServerOut.ServerRunning); + Result := (fServerOut<>nil) and (fServerOut.ServerID <> '') and (fServerOut.ServerRunning); {$IFDEF STALE_PIPE_WORKAROUND} if not Result then Exit; // ==> diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/chmlangref.pas lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/chmlangref.pas --- lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/chmlangref.pas 2014-10-21 12:10:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/chmlangref.pas 2015-12-06 15:05:05.000000000 +0000 @@ -6,9 +6,8 @@ uses Classes, SysUtils, - Dialogs, FileUtil, LazFileUtils, - LazHelpIntf, HelpIntfs, - IDEHelpIntf, MacroIntf; + Dialogs, FileUtil, LazFileUtils, LazUTF8, + LazHelpIntf, HelpIntfs, IDEHelpIntf, MacroIntf; const sFPCLangRef = 'FPC Language Reference'; @@ -103,7 +102,7 @@ fCHMSearchPath := Path; if fCHMSearchPath = '' then begin - fCHMSearchPath := '$(LazarusDir)/docs/html;$(LazarusDir)/docs/chm'; + fCHMSearchPath := '$(LazarusDir)/docs/chm;$(LazarusDir)/docs/html'; IDEMacros.SubstituteMacros(fCHMSearchPath); fCHMSearchPath := MinimizeSearchPath(SetDirSeparators(fCHMSearchPath)); end; diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/chmlcl.pas lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/chmlcl.pas --- lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/chmlcl.pas 2014-10-27 10:36:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/chmlcl.pas 2015-12-06 15:05:05.000000000 +0000 @@ -55,8 +55,16 @@ var FPDocNode: THelpNode; DirItem: THelpDBISourceDirectory; + DefaultHelpDB: THelpDatabase; begin if Assigned(LCLHelpDatabase) then Exit; + + // remove default help + DefaultHelpDB:=HelpDatabases.FindDatabase('LCLUnits'); + if DefaultHelpDB<>nil then + DefaultHelpDB.Free; + + // register our own help LCLHelpDatabase := TLclChmHelpDatabase( HelpDatabases.CreateHelpDatabase(sLclUnits, TLclChmHelpDatabase, True)); diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/chmprog.pas lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/chmprog.pas --- lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/chmprog.pas 2014-10-21 12:10:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/chmprog.pas 2015-12-06 15:05:05.000000000 +0000 @@ -6,7 +6,7 @@ uses Classes, SysUtils, - Dialogs, FileUtil, LazFileUtils, LazLogger, + Dialogs, FileUtil, LazFileUtils, LazUTF8, LazLogger, LazHelpIntf, HelpIntfs, IDEHelpIntf, MacroIntf; @@ -184,7 +184,7 @@ Result:=FCHMSearchPath; if Result='' then begin - Result := '$(LazarusDir)/docs/html;$(LazarusDir)/docs/chm'; + Result := '$(LazarusDir)/docs/chm;$(LazarusDir)/docs/html'; IDEMacros.SubstituteMacros(Result); Result:=MinimizeSearchPath(SetDirSeparators(Result)); end; diff -Nru lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/lazchmhelp.pas lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/lazchmhelp.pas --- lazarus-1.4.4+dfsg/components/chmhelp/packages/idehelp/lazchmhelp.pas 2015-02-25 23:02:07.000000000 +0000 +++ lazarus-1.6+dfsg/components/chmhelp/packages/idehelp/lazchmhelp.pas 2015-12-06 15:05:05.000000000 +0000 @@ -22,6 +22,7 @@ unit LazChmHelp; {$mode objfpc}{$H+} +{ $DEFINE CHMLOADTIMES} interface @@ -54,7 +55,7 @@ fHelpConnection: TLHelpConnection; fCHMSearchPath: String; fHelpExeParams: String; - function DBFindViewer({%H-}HelpDB: THelpDatabase; {%H-}const MimeType: string; + function DBFindViewer({%H-}HelpDB: THelpDatabase; {%H-}const {%H-}MimeType: string; var {%H-}ErrMsg: string; out Viewer: THelpViewer): TShowHelpResult; function GetHelpLabel: String; // Shows all chm files in the given search path. Requires help viewer to be running already @@ -108,7 +109,7 @@ implementation -uses Process, MacroIntf, InterfaceBase, Forms, Dialogs, HelpFPDoc, IDEMsgIntf; +uses Process, MacroIntf, InterfaceBase, Forms, Dialogs, HelpFPDoc; const // Part of help name. Stored/retrieved in Lazarus options CHMHelp/Name. @@ -167,6 +168,9 @@ SearchPaths: TStringList; // SearchPath split to a StringList SearchFiles: TStringList; // Files found in SearchPath i: integer; + {$IFDEF CHMLOADTIMES} + StartTime: TDateTime; + {$ENDIF} begin { Alternative: Open registered chm help files (no online html help etc) @@ -197,6 +201,9 @@ SearchPaths.Delimiter:=';'; SearchPaths.StrictDelimiter:=false; SearchPaths.DelimitedText:=SearchPath; + {$IFDEF CHMLOADTIMES} + StartTime := Now; + {$ENDIF} for i := 0 to SearchPaths.Count-1 do begin // Note: FindAllFiles has a SearchPath parameter that is a *single* directory, @@ -204,6 +211,11 @@ CHMFiles.AddStrings(SearchFiles); SearchFiles.Free; end; + {$IFDEF CHMLOADTIMES} + DebugLn(['CHMLOADTIMES: ',Format('Searching files in %s took %d ms',[SearchPath,DateTimeToTimeStamp(Now-StartTime).Time])]); + StartTime := Now; + {$ENDIF} + fHelpConnection.BeginUpdate; for i := 0 to CHMFiles.Count-1 do begin @@ -216,6 +228,11 @@ //Application.ProcessMessages; end; end; + {$IFDEF CHMLOADTIMES} + DebugLn(['CHMLOADTIMES: ',Format('Loading chm files took %d ms',[DateTimeToTimeStamp(Now-StartTime).Time])]); + + {$ENDIF} + finally fHelpConnection.EndUpdate; @@ -256,7 +273,7 @@ begin Result:=fCHMSearchPath; if Result='' then - Result:='$(LazarusDir)/docs/html;$(LazarusDir)/docs/html/lcl;$(LazarusDir)/docs/chm'; + Result:='$(LazarusDir)/docs/chm;$(LazarusDir)/docs/html;$(LazarusDir)/docs/html/lcl'; IDEMacros.SubstituteMacros(Result); Result:=MinimizeSearchPath(SetDirSeparators(Result)); end; @@ -538,6 +555,10 @@ FoundFileName: String; LHelpPath: String; WasRunning: boolean; + {$IFDEF CHMLOADTIMES} + TotalTime: TDateTime; + StartTime: TDateTime; + {$ENDIF} begin if Pos('file://', Node.URL) = 1 then begin @@ -580,7 +601,14 @@ // Start server and tell it to hide // No use setting cursor to hourglass as that may take as long as the // waitforresponse timeout. + {$IFDEF CHMLOADTIMES} + TotalTime:=Now; + StartTime:=Now; + {$ENDIF} fHelpConnection.StartHelpServer(HelpLabel, GetHelpExe, true); + {$IFDEF CHMLOADTIMES} + DebugLn(['CHMLOADTIMES: ',Format('Starting LHelp took %d ms',[DateTimeToTimeStamp(Now-StartTime).Time])]); + {$ENDIF} // If the server is not already running, open all chm files after it has started // This will allow cross-chm (LCL, FCL etc) searching and browsing in lhelp. if not(WasRunning) then @@ -604,8 +632,13 @@ end; end; end; - + {$IFDEF CHMLOADTIMES} + StartTime := Now; + {$ENDIF} OpenAllCHMsInSearchPath(SearchPath); + {$IFDEF CHMLOADTIMES} + DebugLn(['CHMLOADTIMES: ',Format('Searching and Loading files took %d ms',[DateTimeToTimeStamp(Now-StartTime).Time])]); + {$ENDIF} // Instruct viewer to show its GUI Response:=fHelpConnection.RunMiscCommand(mrShow); if Response<>srSuccess then @@ -616,6 +649,9 @@ fHelpConnection.EndUpdate; if not WasRunning then fHelpConnection.EndUpdate; + {$IFDEF CHMLOADTIMES} + DebugLn(['CHMLOADTIMES: ',Format('Total start time was %d ms',[DateTimeToTimeStamp(Now-TotalTime).Time])]); + {$ENDIF} end else begin diff -Nru lazarus-1.4.4+dfsg/components/codetools/basiccodetools.pas lazarus-1.6+dfsg/components/codetools/basiccodetools.pas --- lazarus-1.4.4+dfsg/components/codetools/basiccodetools.pas 2014-11-15 14:45:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/basiccodetools.pas 2016-01-13 17:25:49.000000000 +0000 @@ -41,7 +41,7 @@ uses Classes, SysUtils, AVL_Tree, SourceLog, KeywordFuncLists, FileProcs, - LazFileUtils; + LazFileUtils, LazUTF8, strutils; //---------------------------------------------------------------------------- { These functions are used by the codetools } @@ -69,8 +69,8 @@ CommentStartPos, CommentEndPos: integer): integer; function FindNextIDEDirective(const ASource: string; StartPos: integer; NestedComments: boolean; EndPos: integer = 0): integer; -function CleanCodeFromComments(const DirtyCode: string; - NestedComments: boolean): string; +function CleanCodeFromComments(const Src: string; + NestedComments: boolean; KeepDirectives: boolean = false): string; function ExtractCommentContent(const ASource: string; CommentStart: integer; NestedComments: boolean; TrimStart: boolean = false; TrimEnd: boolean = false; @@ -225,22 +225,49 @@ private FFilename: string; FUnitName: string; + function GetFileUnitNameWithoutNamespace: string; + function GetIdentifierStartInUnitName: Integer; public constructor Create(const TheUnitName, TheFilename: string); property FileUnitName: string read FUnitName; + property FileUnitNameWithoutNamespace: string read GetFileUnitNameWithoutNamespace; property Filename: string read FFilename; + property IdentifierStartInUnitName: Integer read GetIdentifierStartInUnitName; end; + TNameSpaceInfo = class + private + FUnitName: string; + FNamespace: string; + FIdentifierStartInUnitName: Integer; + public + constructor Create(const TheNamespace, TheUnitName: string; TheIdentifierStartInUnitName: Integer); + property UnitName: string read FUnitName; + property Namespace: string read FNamespace; + property IdentifierStartInUnitName: Integer read FIdentifierStartInUnitName; + end; + + +procedure AddToTreeOfUnitFilesOrNamespaces( + var TreeOfUnitFiles, TreeOfNameSpaces: TAVLTree; + const NameSpacePath, Filename: string; + CaseInsensitive, KeepDoubles: boolean); function GatherUnitFiles(const BaseDir, SearchPath, - Extensions: string; KeepDoubles, CaseInsensitive: boolean; - var TreeOfUnitFiles: TAVLTree): boolean; + Extensions, NameSpacePath: string; KeepDoubles, CaseInsensitive: boolean; + var TreeOfUnitFiles, TreeOfNamespaces: TAVLTree): boolean; procedure FreeTreeOfUnitFiles(TreeOfUnitFiles: TAVLTree); procedure AddToTreeOfUnitFiles(var TreeOfUnitFiles: TAVLTree; - const Filename: string; + const Filename, Unitname: string; + KeepDoubles: boolean); +procedure AddToTreeOfNamespaces(var TreeOfNameSpaces: TAVLTree; + const UnitName, ParentNameSpacePath: string; KeepDoubles: boolean); function CompareUnitFileInfos(Data1, Data2: Pointer): integer; +function CompareNameSpaceInfos(Data1, Data2: Pointer): integer; function CompareUnitNameAndUnitFileInfo(UnitnamePAnsiString, UnitFileInfo: Pointer): integer; +function CompareNameSpaceAndNameSpaceInfo(NamespacePAnsiString, + NamespaceInfo: Pointer): integer; //----------------------------------------------------------------------------- // functions / procedures @@ -291,9 +318,9 @@ // compiler directives function FindIncludeDirective(const Source,Section:string; Index:integer; - var IncludeStart,IncludeEnd:integer):boolean; + out IncludeStart,IncludeEnd:integer):boolean; function SplitCompilerDirective(const Directive:string; - var DirectiveName,Parameters:string):boolean; + out DirectiveName,Parameters:string):boolean; // createform function AddCreateFormToProgram(Source:TSourceLog; @@ -306,7 +333,7 @@ // resource code function FindResourceInCode(const Source, AddCode:string; - var Position,EndPosition:integer):boolean; + out Position,EndPosition:integer):boolean; function AddResourceCode(Source:TSourceLog; const AddCode:string):boolean; // form components @@ -324,12 +351,11 @@ // procedure specifiers function FindFirstProcSpecifier(const ProcText: string; - NestedComments: boolean = false; CaseSensitive: boolean = false): integer; + NestedComments: boolean = false): integer; function SearchProcSpecifier(const ProcText, Specifier: string; out SpecifierEndPosition: integer; NestedComments: boolean = false; - WithSpaceBehindSemicolon: boolean = true; - CaseSensitive: boolean = false): integer; + WithSpaceBehindSemicolon: boolean = true): integer; function RemoveProcSpecifier(const ProcText, Specifier: string; NestedComments: boolean = false): string; @@ -338,7 +364,7 @@ out EndFoundPosition: integer; CaseSensitive: boolean; NestedComments: boolean = false): integer; function ReadNextPascalAtom(const Source: string; - var Position, AtomStart: integer; NestedComments: boolean = false; + var Position: integer; out AtomStart: integer; NestedComments: boolean = false; SkipDirectives: boolean = false): string; procedure ReadRawNextPascalAtom(const Source: string; var Position: integer; out AtomStart: integer; @@ -377,7 +403,7 @@ { most simple code tools - just methods } function FindIncludeDirective(const Source,Section:string; Index:integer; - var IncludeStart,IncludeEnd:integer):boolean; + out IncludeStart,IncludeEnd:integer):boolean; var Atom,DirectiveName:string; Position,EndPos,AtomStart:integer; Filename:string; @@ -407,7 +433,7 @@ end; function SplitCompilerDirective(const Directive:string; - var DirectiveName,Parameters:string):boolean; + out DirectiveName,Parameters:string):boolean; var EndPos,DirStart,DirEnd:integer; begin if (copy(Directive,1,2)='{$') or (copy(Directive,1,3)='(*$') then begin @@ -879,7 +905,7 @@ end; function FindResourceInCode(const Source, AddCode:string; - var Position,EndPosition:integer):boolean; + out Position,EndPosition:integer):boolean; var Find,Atom:string; FindPosition,FindAtomStart,SemicolonPos:integer; begin @@ -1668,6 +1694,8 @@ while (IdentStart<IdentEnd) and (not IsIdentStartChar[Source[IdentStart]]) do inc(IdentStart); + if (IdentStart>1) and (Source[IdentStart-1]='&') then + dec(IdentStart); end; function GetIdentStartPosition(const Source: string; Position: integer @@ -1681,6 +1709,8 @@ while (Result<Position) and (not IsIdentStartChar[Source[Result]]) do inc(Result); + if (Result>1) and (Source[Result-1]='&') then + dec(Result); end; function GetIdentLen(Identifier: PChar): integer; @@ -1691,8 +1721,8 @@ while (IsIdentChar[Identifier[Result]]) do inc(Result); end; -function FindFirstProcSpecifier(const ProcText: string; - NestedComments: boolean; CaseSensitive: boolean): integer; +function FindFirstProcSpecifier(const ProcText: string; NestedComments: boolean + ): integer; // length(ProcText)+1 on failure var AtomStart: integer; @@ -1715,9 +1745,9 @@ end; end; -function SearchProcSpecifier(const ProcText, Specifier: string; - out SpecifierEndPosition: integer; NestedComments: boolean; - WithSpaceBehindSemicolon: boolean; CaseSensitive: boolean): integer; +function SearchProcSpecifier(const ProcText, Specifier: string; out + SpecifierEndPosition: integer; NestedComments: boolean; + WithSpaceBehindSemicolon: boolean): integer; // Result = -1 on failure // Result = start of Specifier on success // SpecifierEndPosition on semicolon or >length(ProcText) @@ -1771,9 +1801,8 @@ Result:=copy(Result,1,StartPos-1)+copy(Result,EndPos,length(Result)); end; -function ReadNextPascalAtom(const Source:string; - var Position, AtomStart: integer; NestedComments: boolean; - SkipDirectives: boolean):string; +function ReadNextPascalAtom(const Source: string; var Position: integer; out + AtomStart: integer; NestedComments: boolean; SkipDirectives: boolean): string; begin ReadRawNextPascalAtom(Source,Position,AtomStart,NestedComments,SkipDirectives); Result:=copy(Source,AtomStart,Position-AtomStart); @@ -3961,27 +3990,36 @@ Result:=-1; end; -function CleanCodeFromComments(const DirtyCode: string; - NestedComments: boolean): string; +function CleanCodeFromComments(const Src: string; + NestedComments: boolean; KeepDirectives: boolean): string; var - DirtyPos: Integer; - CleanPos: Integer; + SrcPos: Integer; + ResultPos: Integer; StartPos: Integer; l: Integer; + p: PChar; begin - SetLength(Result,length(DirtyCode)); - DirtyPos:=1; - CleanPos:=1; - while DirtyPos<=length(DirtyCode) do begin - StartPos:=FindNextComment(DirtyCode,DirtyPos); - l:=StartPos-DirtyPos; - if l>0 then begin - System.Move(DirtyCode[DirtyPos],Result[CleanPos],l); - inc(CleanPos,l); + SetLength(Result,length(Src)); + SrcPos:=1; + ResultPos:=1; + while SrcPos<=length(Src) do begin + StartPos:=FindNextComment(Src,SrcPos); + l:=StartPos-SrcPos; + if (l>0) then begin + System.Move(Src[SrcPos],Result[ResultPos],l); + inc(ResultPos,l); + end; + SrcPos:=FindCommentEnd(Src,StartPos,NestedComments); + if KeepDirectives and (StartPos<=length(Src)) then begin + p:=@Src[StartPos]; + if (p^='{') and (p[1]='$') then begin + l:=SrcPos-StartPos; + System.Move(Src[StartPos],Result[ResultPos],l); + inc(ResultPos,l); + end; end; - DirtyPos:=FindCommentEnd(DirtyCode,StartPos,NestedComments); end; - SetLength(Result,CleanPos-1); + SetLength(Result,ResultPos-1); end; function ExtractCommentContent(const ASource: string; CommentStart: integer; @@ -5638,15 +5676,61 @@ System.Move(p^,Result[1],l); end; -function GatherUnitFiles(const BaseDir, SearchPath, - Extensions: string; KeepDoubles, CaseInsensitive: boolean; - var TreeOfUnitFiles: TAVLTree): boolean; +procedure AddToTreeOfUnitFilesOrNamespaces(var TreeOfUnitFiles, + TreeOfNameSpaces: TAVLTree; const NameSpacePath, Filename: string; + CaseInsensitive, KeepDoubles: boolean); + + procedure FileAndNameSpaceFits(const UnitName: string; out FileNameFits, NameSpaceFits: Boolean); + var + CompareCaseInsensitive: Boolean; + begin + FileNameFits := False; + NameSpaceFits := False; + if NameSpacePath = '' then begin + //we search for files without namespace path + FileNameFits := pos('.', UnitName) = 0; + NameSpaceFits := not FileNameFits; + Exit; + end; + if Length(UnitName) < Length(NameSpacePath) then Exit; + + CompareCaseInsensitive:=CaseInsensitive; + {$IFDEF Windows} + CompareCaseInsensitive:=true; + {$ENDIF} + + if CompareText(PChar(UnitName), Length(NameSpacePath), PChar(NameSpacePath), Length(NameSpacePath), not CompareCaseInsensitive) = 0 then + begin + FileNameFits := PosEx('.', UnitName, Length(NameSpacePath)+1) = 0; + NameSpaceFits := not FileNameFits; + end; + end; + +var + FileNameFits, NameSpaceFits: Boolean; + UnitName: string; +begin + UnitName := ExtractFileNameOnly(Filename); + FileAndNameSpaceFits(UnitName, FileNameFits, NameSpaceFits); + if FileNameFits then + AddToTreeOfUnitFiles(TreeOfUnitFiles,FileName,UnitName, + KeepDoubles); + if NameSpaceFits then + AddToTreeOfNamespaces(TreeOfNamespaces,UnitName,NameSpacePath, + KeepDoubles) +end; + +function GatherUnitFiles(const BaseDir, SearchPath, Extensions, + NameSpacePath: string; KeepDoubles, CaseInsensitive: boolean; + var TreeOfUnitFiles, TreeOfNamespaces: TAVLTree): boolean; // BaseDir: base directory, used when SearchPath is relative // SearchPath: semicolon separated list of directories // Extensions: semicolon separated list of extensions (e.g. 'pas;.pp;ppu') +// NameSpacePath: gather files only from this namespace path // KeepDoubles: false to return only the first match of each unit // CaseInsensitive: true to ignore case on comparing extensions // TreeOfUnitFiles: tree of TUnitFileInfo +// TreeOfNamespaces: tree of TNameSpaceInfo var SearchedDirectories: TAVLTree; // tree of AnsiString @@ -5762,8 +5846,8 @@ then continue; if ExtensionFits(FileInfo.Name) then begin - AddToTreeOfUnitFiles(TreeOfUnitFiles,ADirectory+FileInfo.Name, - KeepDoubles); + AddToTreeOfUnitFilesOrNamespaces(TreeOfUnitFiles, TreeOfNamespaces, + NameSpacePath, ADirectory+FileInfo.Name, CaseInsensitive, KeepDoubles); end; until FindNextUTF8(FileInfo)<>0; end; @@ -5810,16 +5894,14 @@ TreeOfUnitFiles.Free; end; -procedure AddToTreeOfUnitFiles(var TreeOfUnitFiles: TAVLTree; - const Filename: string; KeepDoubles: boolean); +procedure AddToTreeOfUnitFiles(var TreeOfUnitFiles: TAVLTree; const Filename, + Unitname: string; KeepDoubles: boolean); var - AnUnitName: String; NewItem: TUnitFileInfo; begin - AnUnitName:=ExtractFileNameOnly(Filename); if (not KeepDoubles) then begin if (TreeOfUnitFiles<>nil) - and (TreeOfUnitFiles.FindKey(Pointer(AnUnitName), + and (TreeOfUnitFiles.FindKey(Pointer(UnitName), @CompareUnitNameAndUnitFileInfo)<>nil) then begin // an unit with the same name was already found and doubles are not @@ -5830,21 +5912,64 @@ // add if TreeOfUnitFiles=nil then TreeOfUnitFiles:=TAVLTree.Create(@CompareUnitFileInfos); - NewItem:=TUnitFileInfo.Create(AnUnitName,Filename); + NewItem:=TUnitFileInfo.Create(UnitName,Filename); TreeOfUnitFiles.Add(NewItem); end; +procedure AddToTreeOfNamespaces(var TreeOfNameSpaces: TAVLTree; const UnitName, + ParentNameSpacePath: string; KeepDoubles: boolean); +var + AnNameSpace: String; + NewItem: TNameSpaceInfo; + PointPos: Integer; +begin + PointPos := PosEx('.', UnitName, Length(ParentNameSpacePath)+1); + if PointPos = 0 then Exit; + AnNameSpace:=Copy(UnitName, Length(ParentNameSpacePath)+1, PointPos - Length(ParentNameSpacePath) - 1); + if AnNameSpace = '' then Exit; + if (not KeepDoubles) then begin + if (TreeOfNameSpaces<>nil) + and (TreeOfNameSpaces.FindKey(Pointer(AnNameSpace), + @CompareNameSpaceAndNameSpaceInfo)<>nil) + then begin + // a namespace with the same name was already found and doubles are not + // wanted + exit; + end; + end; + // add + if TreeOfNameSpaces=nil then + TreeOfNameSpaces:=TAVLTree.Create(@CompareNameSpaceInfos); + NewItem:=TNameSpaceInfo.Create(AnNameSpace,UnitName,Length(ParentNameSpacePath)+1); + TreeOfNameSpaces.Add(NewItem); +end; + function CompareUnitFileInfos(Data1, Data2: Pointer): integer; begin Result:=CompareIdentifiers(PChar(TUnitFileInfo(Data1).FileUnitName), PChar(TUnitFileInfo(Data2).FileUnitName)); end; +function CompareNameSpaceInfos(Data1, Data2: Pointer): integer; +begin + Result:=CompareIdentifiers(PChar(TNameSpaceInfo(Data1).NameSpace), + PChar(TNameSpaceInfo(Data2).NameSpace)); +end; + function CompareUnitNameAndUnitFileInfo(UnitnamePAnsiString, UnitFileInfo: Pointer): integer; begin - Result:=CompareIdentifiers(PChar(UnitnamePAnsiString), - PChar(TUnitFileInfo(UnitFileInfo).FileUnitName)); + //do not use CompareIdentifiers - they compare only to the first "." + Result:=CompareText(PChar(UnitnamePAnsiString), + PChar(TUnitFileInfo(UnitFileInfo).FileUnitName)); +end; + +function CompareNameSpaceAndNameSpaceInfo(NamespacePAnsiString, + NamespaceInfo: Pointer): integer; +begin + //do not use CompareIdentifiers - they compare only to the first "." + Result:=CompareText(PChar(NamespacePAnsiString), + PChar(TNameSpaceInfo(NamespaceInfo).NameSpace)); end; function CountNeededLineEndsToAddForward(const Src: string; @@ -5975,6 +6100,16 @@ Result:=CompareText(Txt1,Len1,Txt2,Len2,CaseSensitive); end; +{ TNameSpaceInfo } + +constructor TNameSpaceInfo.Create(const TheNamespace, TheUnitName: string; + TheIdentifierStartInUnitName: Integer); +begin + FNamespace:=TheNamespace; + FUnitName:=TheUnitName; + FIdentifierStartInUnitName:=TheIdentifierStartInUnitName; +end; + { TUnitFileInfo } constructor TUnitFileInfo.Create(const TheUnitName, TheFilename: string); @@ -5983,6 +6118,27 @@ FFilename:=TheFilename; end; +function TUnitFileInfo.GetFileUnitNameWithoutNamespace: string; +var + LastPoint: Integer; +begin + LastPoint := LastDelimiter('.', FUnitName); + if LastPoint > 0 then + Result := Copy(FUnitName, LastPoint+1, High(Integer)) + else + Result := FUnitName; +end; + +function TUnitFileInfo.GetIdentifierStartInUnitName: Integer; +var + LastPoint: Integer; +begin + LastPoint := LastDelimiter('.', FUnitName); + if LastPoint > 0 then + Result := LastPoint+1 + else + Result := 1; +end; //============================================================================= diff -Nru lazarus-1.4.4+dfsg/components/codetools/cachecodetools.pas lazarus-1.6+dfsg/components/codetools/cachecodetools.pas --- lazarus-1.4.4+dfsg/components/codetools/cachecodetools.pas 2009-05-30 14:02:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/cachecodetools.pas 2015-04-06 17:35:11.000000000 +0000 @@ -31,7 +31,7 @@ uses Classes, SysUtils, - FileProcs, CodeAtom, CodeCache, KeywordFuncLists, CustomCodeTool, + FileProcs, CodeCache, KeywordFuncLists, CustomCodeTool, BasicCodeTools, FindDeclarationTool, AVL_Tree; type diff -Nru lazarus-1.4.4+dfsg/components/codetools/ccodeparsertool.pas lazarus-1.6+dfsg/components/codetools/ccodeparsertool.pas --- lazarus-1.4.4+dfsg/components/codetools/ccodeparsertool.pas 2014-11-20 13:16:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ccodeparsertool.pas 2015-08-07 17:20:40.000000000 +0000 @@ -110,9 +110,13 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, FileProcs, CodeToolsStructs, BasicCodeTools, - KeywordFuncLists, LinkScanner, CodeAtom, CodeCache, AVL_Tree, - CodeToolsStrConsts, CodeTree, NonPascalCodeTools; + // RTL + FCL + Classes, SysUtils, AVL_Tree, + // CodeTools + FileProcs, CodeToolsStructs, BasicCodeTools, KeywordFuncLists, LinkScanner, + CodeCache, CodeTree, NonPascalCodeTools, + // LazUtils + LazFileUtils; type TCCodeNodeDesc = word; @@ -1865,6 +1869,7 @@ CloseBracket: Char; StartPos: LongInt; begin + Result:=false; case Src[AtomStart] of '{': CloseBracket:='}'; '[': CloseBracket:=']'; @@ -1873,7 +1878,7 @@ else if ExceptionOnNotFound then RaiseExpectedButAtomFound('('); - exit(false); + exit; end; StartPos:=AtomStart; {$IFOPT R+}{$DEFINE RangeChecking}{$ENDIF} @@ -2227,7 +2232,7 @@ MoveCursorToNode(FuncNode); repeat ReadNextAtom; - if AtomStart>SrcLen then exit; + if AtomStart>SrcLen then exit(false); if AtomIs('(') then exit(true); if (IsIdentStartChar[Src[AtomStart]]) or (AtomIs('*')) then begin diff -Nru lazarus-1.4.4+dfsg/components/codetools/changedeclarationtool.pas lazarus-1.6+dfsg/components/codetools/changedeclarationtool.pas --- lazarus-1.4.4+dfsg/components/codetools/changedeclarationtool.pas 2012-05-07 16:04:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/changedeclarationtool.pas 2015-04-06 16:49:44.000000000 +0000 @@ -590,11 +590,12 @@ end; end; - procedure ChangeParam(aParam: TChgPrmModify; ChgPos: integer); + procedure ChangeParam(aParam: TChgPrmModify; aParamIndex: integer); var Code: String; p: LongInt; begin + if aParamIndex=0 then ; if aParam.Delete then begin if ReplaceStartPos<1 then begin // ToDo: delete the last parameter => delete separator from previous parameter @@ -876,6 +877,7 @@ begin Result:=false; if (Changes=nil) or (Changes.Count=0) then exit(true); + if TreeOfPCodeXYPosition=nil then ; BuildTree(lsrEnd); SourceChanger.MainScanner:=Scanner; if (ProcPos.Code<>nil) and (CaretToCleanPos(ProcPos,CleanPos)=0) then begin diff -Nru lazarus-1.4.4+dfsg/components/codetools/codeatom.pas lazarus-1.6+dfsg/components/codetools/codeatom.pas --- lazarus-1.4.4+dfsg/components/codetools/codeatom.pas 2014-02-26 22:42:10.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codeatom.pas 2015-06-30 09:22:06.000000000 +0000 @@ -47,7 +47,8 @@ cafSemicolon, cafEqual, cafColon, cafComma, cafPoint, cafRoundBracketOpen, cafRoundBracketClose, cafEdgedBracketOpen, cafEdgedBracketClose, - cafWord, cafEnd + cafWord, cafEnd, + cafOtherOperator // = other operator ); TCommonAtomFlags = set of TCommonAtomFlag; @@ -58,7 +59,7 @@ 'Semicolon', 'Equal', 'Colon', 'Comma', 'Point', 'RoundBracketOpen', 'RoundBracketClose', 'EdgedBracketOpen', 'EdgedBracketClose', - 'Word', 'End' + 'Word', 'End', 'Operator' ); type diff -Nru lazarus-1.4.4+dfsg/components/codetools/codebeautifier.pas lazarus-1.6+dfsg/components/codetools/codebeautifier.pas --- lazarus-1.4.4+dfsg/components/codetools/codebeautifier.pas 2011-11-02 23:17:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codebeautifier.pas 2015-08-07 17:20:40.000000000 +0000 @@ -92,8 +92,9 @@ {$ENDIF} uses - Classes, SysUtils, AVL_Tree, FileProcs, KeywordFuncLists, CodeCache, - BasicCodeTools; + Classes, SysUtils, AVL_Tree, + FileProcs, KeywordFuncLists, CodeCache, BasicCodeTools, + LazUtilities; type TWordPolicy = ( @@ -343,7 +344,7 @@ ContextLearn: boolean = true // true = learn policies from Source ): boolean; procedure GetDefaultSrcIndent(const Source: string; CleanPos: integer; - NewNestedComments: boolean; + {%H-}NewNestedComments: boolean; out Indent: TFABIndentationPolicy); procedure GetDefaultIndentPolicy(Typ, SubTyp: TFABBlockType; out Indent: TFABIndentationPolicy); diff -Nru lazarus-1.4.4+dfsg/components/codetools/codecache.pas lazarus-1.6+dfsg/components/codetools/codecache.pas --- lazarus-1.4.4+dfsg/components/codetools/codecache.pas 2013-11-09 13:06:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codecache.pas 2015-10-07 11:25:18.000000000 +0000 @@ -37,8 +37,8 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, SourceLog, LinkScanner, FileProcs, DirectoryCacher, - Avl_Tree, Laz2_XMLCfg; + Classes, SysUtils, SourceLog, LinkScanner, FileProcs, LazFileUtils, LazFileCache, + DirectoryCacher, Avl_Tree, Laz2_XMLCfg, LazDbgLog; const IncludeLinksFileVersion = 2; @@ -489,7 +489,7 @@ var CodeXYPosition: TCodeXYPosition; begin - FillChar(CodeXYPosition,SizeOf(TCodeXYPosition),0); + FillChar(CodeXYPosition{%H-},SizeOf(TCodeXYPosition),0); CodeXYPosition.Code:=p.Code; if CodeXYPosition.Code<>nil then begin CodeXYPosition.Code.AbsoluteToLineCol(p.P,CodeXYPosition.Y,CodeXYPosition.X); @@ -1124,11 +1124,11 @@ begin FIncludeLinks.FreeAndClear; - FileVersion:=XMLConfig.GetValue(XMLPath+'IncludeLinks/Version',0); + FileVersion:=XMLConfig.GetValue(XMLPath+'IncludeLinks/Version',IncludeLinksFileVersion); FExpirationTimeInDays:=XMLConfig.GetValue( XMLPath+'IncludeLinks/ExpirationTimeInDays', FExpirationTimeInDays); - if FileVersion=2 then begin + if FileVersion>=2 then begin List:=TStringList.Create; try List.Text:=XMLConfig.GetValue(XMLPath+'IncludeLinks/Data',''); diff -Nru lazarus-1.4.4+dfsg/components/codetools/codecompletiontemplater.pas lazarus-1.6+dfsg/components/codetools/codecompletiontemplater.pas --- lazarus-1.4.4+dfsg/components/codetools/codecompletiontemplater.pas 2014-06-10 17:11:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codecompletiontemplater.pas 2015-04-06 16:54:45.000000000 +0000 @@ -87,7 +87,7 @@ interface uses - Classes, SysUtils, laz2_DOM, laz2_XMLRead, LazFileUtils, LazUTF8Classes, + Classes, SysUtils, laz2_DOM, laz2_XMLRead, LazFileUtils, CodeCache, FileProcs; type @@ -190,7 +190,7 @@ Template := FindTemplate(TemplateName); if Template = nil then raise Exception.Create('Template "' + TemplateName + '" not found in TemplateExpander.'); - Result := ExpandTemplate(Template, #13#10, ' ', ArgName, ArgVal); + Result := ExpandTemplate(Template, LineEnd, Indent, ArgName, ArgVal); end; function TTemplateExpander.ExpandTemplate(Template: TDOMNode; LineEnd, @@ -218,7 +218,7 @@ raise Exception.Create('ExpandTemplate could not find Argument named "' + Name + '"'); end; -function GetBoolArgValue(Name : String; Index : Integer = -1): Boolean; +function GetBoolArgValue(Name : String): Boolean; var I : Integer; begin diff -Nru lazarus-1.4.4+dfsg/components/codetools/codecompletiontool.pas lazarus-1.6+dfsg/components/codetools/codecompletiontool.pas --- lazarus-1.4.4+dfsg/components/codetools/codecompletiontool.pas 2015-03-03 15:01:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codecompletiontool.pas 2015-11-11 19:31:19.000000000 +0000 @@ -76,15 +76,25 @@ {off $DEFINE VerboseCompleteLocalVarAssign} {off $DEFINE VerboseCompleteEventAssign} {off $DEFINE EnableCodeCompleteTemplates} +{$DEFINE VerboseGetPossibleInitsForVariable} +{off $DEFINE VerboseGuessTypeOfIdentifier} uses {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, FileProcs, CodeToolsStrConsts, CodeTree, CodeAtom, - CodeCache, CustomCodeTool, PascalParserTool, MethodJumpTool, + // RTL + FCL + Classes, SysUtils, contnrs, AVL_Tree, + // CodeTools + FileProcs, CodeToolsStrConsts, StdCodeTools, + CodeTree, CodeAtom, CodeCache, CustomCodeTool, PascalParserTool, MethodJumpTool, FindDeclarationTool, KeywordFuncLists, CodeToolsStructs, BasicCodeTools, - LinkScanner, SourceChanger, CodeGraph, AVL_Tree, CodeCompletionTemplater; + LinkScanner, SourceChanger, CodeGraph, PascalReaderTool, + {$IFDEF EnableCodeCompleteTemplates} + CodeCompletionTemplater, + {$ENDIF} + // LazUtils + LazFileUtils, LazDbgLog; type TNewClassPart = (ncpPrivateProcs, ncpPrivateVars, @@ -114,6 +124,13 @@ ctnClassPublished // pcsPublished ); + InsertClassSectionToNewClassPart: array[TInsertClassSectionResult] of TNewClassPart = ( + ncpPrivateProcs, + ncpProtectedProcs, + ncpPublicProcs, + ncpPublishedProcs + ); + type TCodeCompletionCodeTool = class; @@ -129,14 +146,18 @@ FCompleteProperties: boolean; FirstInsert: TCodeTreeNodeExtension; // list of insert requests FSetPropertyVariablename: string; - FJumpToProcName: string; + FSetPropertyVariableIsPrefix: Boolean; + FSetPropertyVariableUseConst: Boolean; + FJumpToProcHead: TPascalMethodHeader; NewClassSectionIndent: array[TPascalClassSection] of integer; NewClassSectionInsertPos: array[TPascalClassSection] of integer; fFullTopLvlName: string;// used by OnTopLvlIdentifierFound fNewMainUsesSectionUnits: TAVLTree; // tree of AnsiString procedure AddNewPropertyAccessMethodsToClassProcs(ClassProcs: TAVLTree; const TheClassName: string); + procedure SetSetPropertyVariableIsPrefix(aValue: Boolean); procedure SetSetPropertyVariablename(AValue: string); + procedure SetSetPropertyVariableUseConst(aValue: Boolean); function UpdateProcBodySignature(ProcBodyNodes: TAVLTree; const BodyNodeExt: TCodeTreeNodeExtension; ProcAttrCopyDefToBody: TProcHeadAttributes; var ProcsCopied: boolean; @@ -178,7 +199,7 @@ Visibility: TPascalClassSection): boolean; procedure FindInsertPositionForForwardProc( SourceChangeCache: TSourceChangeCache; - ProcNode: TCodeTreeNode; var Indent, InsertPos: integer); + ProcNode: TCodeTreeNode; out Indent, InsertPos: integer); procedure FindInsertPositionForProcInterface(var Indent, InsertPos: integer; SourceChangeCache: TSourceChangeCache); function CheckLocalVarAssignmentSyntax(CleanCursorPos: integer; @@ -193,10 +214,10 @@ procedure AdjustCursor(OldCodePos: TCodePosition; OldTopLine: integer; out NewPos: TCodeXYPosition; out NewTopLine: integer); procedure AddNeededUnitToMainUsesSection(AnUnitName: PChar); - procedure AddMethodCompatibleToProcType(AClassNode: TCodeTreeNode; + function AddMethodCompatibleToProcType(AClassNode: TCodeTreeNode; const AnEventName: string; ProcContext: TFindContext; out MethodDefinition: string; out MethodAttr: TProcHeadAttributes; - SourceChangeCache: TSourceChangeCache); + SourceChangeCache: TSourceChangeCache): Boolean; procedure AddProcedureCompatibleToProcType( const NewProcName: string; ProcContext: TFindContext; out MethodDefinition: string; out MethodAttr: TProcHeadAttributes; @@ -256,8 +277,6 @@ SourceChangeCache: TSourceChangeCache): boolean; function AddPublishedVariable(const UpperClassName,VarName, VarType: string; SourceChangeCache: TSourceChangeCache): boolean; override; - function GatherPublishedMethods(ClassNode: TCodeTreeNode; - out ListOfPFindContext: TFPList): boolean; // graph of definitions of a unit function GatherUnitDefinitions(out TreeOfCodeTreeNodeExt: TAVLTree; @@ -313,7 +332,7 @@ const Attr: TProcHeadAttributes; out RemovedProcHeads: TStrings): boolean; - // assign/init records/classes + // assign records/classes function FindAssignMethod(CursorPos: TCodeXYPosition; out ClassNode: TCodeTreeNode; out AssignDeclNode: TCodeTreeNode; @@ -327,14 +346,21 @@ OverrideMod, CallInherited, CallInheritedOnlyInElse: boolean; SourceChanger: TSourceChangeCache; out NewPos: TCodeXYPosition; out NewTopLine: integer; - LocalVarName: string = '' // default aSource + LocalVarName: string = '' // default is 'aSource' + ): boolean; + + // local variables + function GetPossibleInitsForVariable(CursorPos: TCodeXYPosition; + out Statements: TStrings; + out InsertPositions: TObjectList; // list of TInsertStatementPosDescription + SourceChangeCache: TSourceChangeCache = nil // needed for Beautifier ): boolean; // guess type of an undeclared identifier function GuessTypeOfIdentifier(CursorPos: TCodeXYPosition; out IsKeyword, IsSubIdentifier: boolean; - out ExistingDefinition: TFindContext; // next existing definition - out ListOfPFindContext: TFPList; // possible classes + out ExistingDefinition: TFindContext; // if it already exists + out ListOfPFindContext: TFPList; // possible classes for adding as sub identifier out NewExprType: TExpressionType; out NewType: string): boolean; // false = not at an identifier function DeclareVariableNearBy(InsertPos: TCodeXYPosition; const VariableName, NewType, NewUnitName: string; @@ -365,6 +391,10 @@ // Options property SetPropertyVariablename: string read FSetPropertyVariablename write SetSetPropertyVariablename; + property SetPropertyVariableIsPrefix: Boolean + read FSetPropertyVariableIsPrefix write SetSetPropertyVariableIsPrefix; + property SetPropertyVariableUseConst: Boolean + read FSetPropertyVariableUseConst write SetSetPropertyVariableUseConst; property CompleteProperties: boolean read FCompleteProperties write FCompleteProperties; property AddInheritedCodeToOverrideMethod: boolean @@ -421,7 +451,12 @@ // NameAndParams should be uppercase and contains the proc name and the // parameter list without names and default values // and should not contain any comments and no result type -var ANodeExt: TCodeTreeNodeExtension; +var + ANodeExt: TCodeTreeNodeExtension; + Params: TFindDeclarationParams; + ClassNode, CompletingChildNode: TCodeTreeNode; + Tool: TFindDeclarationTool; + Vis: TClassSectionVisibility; begin Result:=false; // search in new nodes, which will be inserted @@ -431,15 +466,35 @@ exit(true); ANodeExt:=ANodeExt.Next; end; - // ToDo: check ancestor procs too // search in current class - Result:=(FindProcNode(FCompletingFirstEntryNode,NameAndParamsUpCase,[phpInUpperCase])<>nil); + Result:=(FindProcNode(FCompletingFirstEntryNode,NameAndParamsUpCase,mgMethod,[phpInUpperCase])<>nil); + if not Result then + begin + //search in ancestor classes + Params:=TFindDeclarationParams.Create; + try + ClassNode:=CodeCompleteClassNode; + Tool:=Self; + while not Result and Tool.FindAncestorOfClass(ClassNode,Params,True) do begin + Tool:=Params.NewCodeTool; + ClassNode:=Params.NewNode; + CompletingChildNode:=GetFirstClassIdentifier(ClassNode); + if Tool=Self then + Vis := csvPrivateAndHigher + else + Vis := csvProtectedAndHigher; + Result := (Tool.FindProcNode(CompletingChildNode,NameAndParamsUpCase,mgMethod,[phpInUpperCase], Vis)<>nil); + end; + finally + Params.Free; + end; + end; end; procedure TCodeCompletionCodeTool.SetCodeCompleteClassNode(const AClassNode: TCodeTreeNode); begin FreeClassInsertionList; - FJumpToProcName:=''; + FJumpToProcHead.Name:=''; FCodeCompleteClassNode:=AClassNode; if CodeCompleteClassNode=nil then begin FCompletingFirstEntryNode:=nil; @@ -457,25 +512,39 @@ FSourceChangeCache.MainScanner:=Scanner; end; +procedure TCodeCompletionCodeTool.SetSetPropertyVariableIsPrefix(aValue: Boolean + ); +begin + if FSetPropertyVariableIsPrefix = aValue then Exit; + FSetPropertyVariableIsPrefix := aValue; +end; + procedure TCodeCompletionCodeTool.SetSetPropertyVariablename(AValue: string); begin if FSetPropertyVariablename=aValue then Exit; FSetPropertyVariablename:=aValue; end; +procedure TCodeCompletionCodeTool.SetSetPropertyVariableUseConst(aValue: Boolean + ); +begin + if FSetPropertyVariableUseConst = aValue then Exit; + FSetPropertyVariableUseConst := aValue; +end; + function TCodeCompletionCodeTool.OnTopLvlIdentifierFound( Params: TFindDeclarationParams; const FoundContext: TFindContext ): TIdentifierFoundResult; var TrimmedIdentifier: string; begin - if not (fdfTopLvlResolving in Params.Flags) then exit; - with Params do begin - case NewNode.Desc of + if not (fdfTopLvlResolving in Params.Flags) then exit(ifrProceedSearch); + with FoundContext do begin + case Node.Desc of ctnTypeDefinition,ctnVarDefinition,ctnConstDefinition,ctnGenericType: - TrimmedIdentifier:=NewCodeTool.ExtractDefinitionName(NewNode); + TrimmedIdentifier:=Tool.ExtractDefinitionName(Node); ctnProperty: - TrimmedIdentifier:=NewCodeTool.ExtractPropName(NewNode,false); + TrimmedIdentifier:=Tool.ExtractPropName(Node,false); else TrimmedIdentifier:=GetIdentifier(Params.Identifier); end; @@ -518,7 +587,12 @@ function TCodeCompletionCodeTool.VarExistsInCodeCompleteClass( const UpperName: string): boolean; -var ANodeExt: TCodeTreeNodeExtension; +var + ANodeExt: TCodeTreeNodeExtension; + Params: TFindDeclarationParams; + ClassNode, CompletingChildNode: TCodeTreeNode; + Tool: TFindDeclarationTool; + Vis: TClassSectionVisibility; begin Result:=false; // search in new nodes, which will be inserted @@ -528,9 +602,29 @@ exit(true); ANodeExt:=ANodeExt.Next; end; - // ToDo: check ancestor vars too // search in current class Result:=(FindVarNode(FCompletingFirstEntryNode,UpperName)<>nil); + if not Result then + begin + //search in ancestor classes + Params:=TFindDeclarationParams.Create; + try + ClassNode:=CodeCompleteClassNode; + Tool:=Self; + while not Result and Tool.FindAncestorOfClass(ClassNode,Params,True) do begin + Tool:=Params.NewCodeTool; + ClassNode:=Params.NewNode; + CompletingChildNode:=GetFirstClassIdentifier(ClassNode); + if Tool=Self then + Vis := csvPrivateAndHigher + else + Vis := csvProtectedAndHigher; + Result := (Tool.FindVarNode(CompletingChildNode,UpperName,Vis)<>nil); + end; + finally + Params.Free; + end; + end; end; procedure TCodeCompletionCodeTool.AddClassInsertion( @@ -664,7 +758,7 @@ end; procedure TCodeCompletionCodeTool.FindInsertPositionForForwardProc( - SourceChangeCache: TSourceChangeCache; ProcNode: TCodeTreeNode; var Indent, + SourceChangeCache: TSourceChangeCache; ProcNode: TCodeTreeNode; out Indent, InsertPos: integer); var Beauty: TBeautifyCodeOptions; @@ -692,6 +786,8 @@ EmptyLinesInFront: Integer; EmptyLinesBehind: Integer; begin + Indent:=0; + InsertPos:=0; Beauty:=SourceChangeCache.BeautifyCodeOptions; IsInInterface:=ProcNode.HasParentOfType(ctnInterface); if IsInInterface then begin @@ -1010,6 +1106,16 @@ CleanLevelPos: integer): boolean; // if CleanLevelPos<1 then CleanLevelPos:=CleanCursorPos // CleanLevelPos selects the target node, e.g. a ctnProcedure + + function FindFirstVarDeclaration(var Node: TCodeTreeNode): TCodeTreeNode; + begin + Result := Node; + while Assigned(Result.PriorBrother) and (Result.PriorBrother.Desc = ctnVarDefinition) and + not Assigned(Result.PriorBrother.LastChild) + do + Result := Result.PriorBrother; + end; + var CursorNode, VarSectionNode, VarNode: TCodeTreeNode; Indent, InsertPos: integer; @@ -1020,6 +1126,10 @@ OtherSectionNode: TCodeTreeNode; HeaderNode: TCodeTreeNode; Beauty: TBeautifyCodeOptions; + VarTypeNode: TCodeTreeNode; + InsertVarLineStart: integer; + InsertVarLineEnd: integer; + InsertAsNewLine: Boolean; begin Result:=false; if CleanLevelPos<1 then CleanLevelPos:=CleanCursorPos; @@ -1032,6 +1142,7 @@ // find the level and find sections in front Node:=Tree.Root; + CursorNode:=nil; VarSectionNode:=nil; OtherSectionNode:=nil; HeaderNode:=nil; @@ -1086,21 +1197,70 @@ //DebugLn(['TCodeCompletionCodeTool.AddLocalVariable C InsertTxt="',InsertTxt,'" ParentNode=',ParentNode.DescAsString,' HeaderNode=',HeaderNode.DescAsString,' OtherSectionNode=',OtherSectionNode.DescAsString,' VarSectionNode=',VarSectionNode.DescAsString,' CursorNode=',CursorNode.DescAsString]); end; + InsertAsNewLine := True; if (VarSectionNode<>nil) then begin - // there is already a var section - // -> append variable //debugln(['TCodeCompletionCodeTool.AddLocalVariable insert into existing var section']); - VarNode:=VarSectionNode.LastChild; - if VarNode<>nil then begin - Indent:=Beauty.GetLineIndent(Src,VarNode.StartPos); - if PositionsInSameLine(Src,VarSectionNode.StartPos,VarNode.StartPos) then + // there is already a var section + // -> first check if variables with the same type are defined (search backwards) + VarTypeNode := nil; + if Beauty.GroupLocalVariables then + begin + VarNode:=VarSectionNode.LastChild; + while Assigned(VarNode) and not Assigned(VarTypeNode) do + begin + if (VarNode.Desc = ctnVarDefinition) and Assigned(VarNode.LastChild) and + (VarNode.LastChild.Desc = ctnIdentifier) and + (CompareIdentifiers(PChar(VariableType), PChar(ExtractNode(VarNode.LastChild,[phpCommentsToSpace]))) = 0) + then + VarTypeNode := VarNode; + VarNode := VarNode.PriorBrother; + end; + end; + if Assigned(VarTypeNode) then + begin + // -> append variable to already defined line + VarNode := FindFirstVarDeclaration(VarTypeNode);//find starting indentation + Indent:=Beauty.GetLineIndent(Src,VarTypeNode.StartPos); + if PositionsInSameLine(Src,VarTypeNode.StartPos,VarNode.StartPos) then inc(Indent,Beauty.Indent); - InsertPos:=FindLineEndOrCodeAfterPosition(VarNode.EndPos); - end else begin - Indent:=Beauty.GetLineIndent(Src,VarSectionNode.StartPos); - MoveCursorToNodeStart(VarSectionNode); - ReadNextAtom; - InsertPos:=CurPos.EndPos; + MoveCursorToNodeStart(VarTypeNode.LastChild); + ReadPriorAtom; + if CurPos.Flag = cafColon then + begin + InsertPos:=CurPos.StartPos; + GetLineStartEndAtPosition(Src, InsertPos, InsertVarLineStart, InsertVarLineEnd); + InsertTxt:=VariableName; + if InsertPos-InsertVarLineStart+Length(VariableName)+2 > Beauty.LineLength then//the variable name doesn't fit into the line + InsertTxt := Beauty.LineEnd + Beauty.GetIndentStr(Indent) + InsertTxt + else if InsertVarLineEnd-InsertVarLineStart+Length(VariableName)+2 > Beauty.LineLength then//the variable type doesn't fit into the line + begin + if atColon in Beauty.DoNotSplitLineInFront then + InsertTxt := Beauty.LineEnd + Beauty.GetIndentStr(Indent) + InsertTxt + else + InsertTxt := InsertTxt + Beauty.LineEnd + Beauty.GetIndentStr(Indent); + end; + InsertTxt:=','+InsertTxt; + Indent := 0; + InsertAsNewLine := False; + end else + VarTypeNode := nil;//error: colon not found, insert as new line + end; + if not Assigned(VarTypeNode) then + begin + // -> append variable to new line + VarNode:=VarSectionNode.LastChild; + if VarNode<>nil then begin + InsertPos:=FindLineEndOrCodeAfterPosition(VarNode.EndPos); + VarNode := FindFirstVarDeclaration(VarNode);//find indentation of first var definition + Indent:=Beauty.GetLineIndent(Src,VarNode.StartPos); + if PositionsInSameLine(Src,VarSectionNode.StartPos,VarNode.StartPos) then + inc(Indent,Beauty.Indent); + end else begin + Indent:=Beauty.GetLineIndent(Src,VarSectionNode.StartPos)+Beauty.Indent; + MoveCursorToNodeStart(VarSectionNode); + ReadNextAtom; + InsertPos:=CurPos.EndPos; + end; end; end else begin // there is no var section yet @@ -1142,11 +1302,14 @@ InsertTxt:='var'+Beauty.LineEnd +Beauty.GetIndentStr(Indent+Beauty.Indent)+InsertTxt; end; - + // insert new code InsertTxt:=Beauty.BeautifyStatement(InsertTxt,Indent); //DebugLn('TCodeCompletionCodeTool.AddLocalVariable E ',InsertTxt,' '); - SourceChangeCache.Replace(gtNewLine,gtNewLine,InsertPos,InsertPos,InsertTxt); + if InsertAsNewLine then + SourceChangeCache.Replace(gtNewLine,gtNewLine,InsertPos,InsertPos,InsertTxt) + else + SourceChangeCache.Replace(gtNone,gtNone,InsertPos,InsertPos,InsertTxt); if (VariableTypeUnitName<>'') and (not IsHiddenUsedUnit(PChar(VariableTypeUnitName))) then begin @@ -1205,14 +1368,17 @@ Pointer(s):=nil; end; -procedure TCodeCompletionCodeTool.AddMethodCompatibleToProcType( +function TCodeCompletionCodeTool.AddMethodCompatibleToProcType( AClassNode: TCodeTreeNode; const AnEventName: string; ProcContext: TFindContext; out MethodDefinition: string; out - MethodAttr: TProcHeadAttributes; SourceChangeCache: TSourceChangeCache); + MethodAttr: TProcHeadAttributes; SourceChangeCache: TSourceChangeCache + ): Boolean; var CleanMethodDefinition: string; Beauty: TBeautifyCodeOptions; + MethodSection: TInsertClassSectionResult; begin + Result := False; MethodDefinition:=''; MethodAttr:=[]; @@ -1244,8 +1410,10 @@ {$ENDIF} if not ProcExistsInCodeCompleteClass(CleanMethodDefinition) then begin // insert method definition into class + if not Beauty.GetRealEventMethodSection(MethodSection) then + Exit; AddClassInsertion(CleanMethodDefinition, MethodDefinition, - AnEventName, ncpPublishedProcs); + AnEventName, InsertClassSectionToNewClassPart[MethodSection]); end; MethodDefinition:=Beauty.AddClassAndNameToProc(MethodDefinition, ExtractClassName(AClassNode,false,true), AnEventName); @@ -1255,6 +1423,7 @@ // insert all missing proc bodies if not CreateMissingClassProcBodies(false) then RaiseException(ctsErrorDuringCreationOfNewProcBodies); + Result := True; end; procedure TCodeCompletionCodeTool.AddProcedureCompatibleToProcType( @@ -1293,7 +1462,7 @@ Indent:=Beauty.GetLineIndent(Src,InFrontOfNode.StartPos); InsertPos:=FindLineEndOrCodeInFrontOfPosition(InFrontOfNode.StartPos); end else begin - Node:=FindMainUsesSection(false); + Node:=FindMainUsesNode(false); if Node<>nil then begin // insert behind uses section Indent:=Beauty.GetLineIndent(Src,Node.StartPos); @@ -1358,10 +1527,10 @@ // save cursor OldCursor:=CurPos; // search identifier - if Params=nil then - Params:=TFindDeclarationParams.Create; if ContextNode=nil then ContextNode:=FindDeepestNodeAtPos(CurPos.StartPos,true); + if Params=nil then + Params:=TFindDeclarationParams.Create(Self, ContextNode); ContextNode := ContextNode.GetNodeOfType(ctnProcedureType); Params.ContextNode:=ContextNode; Params.SetIdentifier(Self,@Src[CurPos.StartPos],@CheckSrcIdentifier); @@ -1391,7 +1560,10 @@ inherited CalcMemSize(Stats); Stats.Add('TCodeCompletionCodeTool', MemSizeString(FSetPropertyVariablename) - +MemSizeString(FJumpToProcName) + +PtrUInt(SizeOf(FSetPropertyVariableIsPrefix)) + +PtrUInt(SizeOf(FSetPropertyVariableUseConst)) + +MemSizeString(FJumpToProcHead.Name) + +PtrUInt(SizeOf(FJumpToProcHead.Group)) +length(NewClassSectionIndent)*SizeOf(integer) +length(NewClassSectionInsertPos)*SizeOf(integer) +MemSizeString(fFullTopLvlName)); @@ -1641,7 +1813,7 @@ // search variable ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try {$IFDEF VerboseCompleteLocalVarAssign} DebugLn(' CompleteLocalVariableAssignment: check if variable is already defined ...'); @@ -1670,7 +1842,7 @@ begin Params.SetIdentifier(Self, PChar(NewType), nil); Params.ContextNode := CursorNode; - Params.Flags := [fdfSearchInAncestors..fdfIgnoreCurContextNode]; + Params.Flags := [fdfSearchInAncestors..fdfIgnoreCurContextNode,fdfSearchInHelpers]; if FindIdentifierInContext(Params) and (Params.NewCodeTool <> ExprType.Context.Tool) then NewType := ExprType.Context.Tool.ExtractSourceName + '.' + NewType; @@ -1776,7 +1948,7 @@ Params.SetIdentifier(Self,@Src[CurPos.StartPos],nil); fFullTopLvlName:=''; Params.OnTopLvlIdentifierFound:=@OnTopLvlIdentifierFound; - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, fdfTopLvlResolving,fdfFindVariable]; if (not FindDeclarationOfIdentAtParam(Params)) then begin {$IFDEF CTDEBUG} @@ -1793,7 +1965,7 @@ PropVarContext:=CreateFindContext(Params); // identifier is property // -> check type of property - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors]; + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers]; ProcContext:=PropVarContext.Tool.FindBaseTypeOfNode( Params,PropVarContext.Node); if (ProcContext.Node=nil) or (ProcContext.Node.Desc<>ctnProcedureType) @@ -1921,7 +2093,7 @@ DebugLn(' CompleteLocalIdentifierByParameter.AddProcedure: jumping to new method body...'); {$ENDIF} // jump to new method body - if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine,false) + if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine) then RaiseException('CompleteLocalIdentifierByParameter.AddProcedure JumpToMethod failed'); end; @@ -1949,6 +2121,7 @@ then exit; IsEventAssignment:=true; + if OldTopLine=0 then ; ProcNode:=nil; AClassNode:=nil; @@ -1963,7 +2136,7 @@ {$ENDIF} FindProcAndClassNode(ProcNode,AClassNode); - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try {$IFDEF VerboseCompleteEventAssign} DebugLn(' CompleteEventAssignment: FindEventTypeAtCursor...'); @@ -1983,8 +2156,10 @@ if FullEventName='' then exit; // add published method and method body and right side of assignment - AddMethodCompatibleToProcType(AClassNode,FullEventName,ProcContext, - AMethodDefinition,AMethodAttr,SourceChangeCache); + if not AddMethodCompatibleToProcType(AClassNode,FullEventName,ProcContext, + AMethodDefinition,AMethodAttr,SourceChangeCache) + then + Exit; if not CompleteAssignment(FullEventName,AssignmentOperator, AddrOperatorPos,SemicolonPos,UserEventAtom) then @@ -2034,7 +2209,7 @@ DebugLn(' CompleteEventAssignment: jumping to new method body...'); {$ENDIF} // jump to new method body - if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine,false) + if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine) then RaiseException('CompleteEventAssignment Internal Error 2'); @@ -2075,7 +2250,7 @@ // search variable ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try {$IFDEF CTDEBUG} DebugLn(' CompleteLocalVariableForIn: check if variable is already defined ...'); @@ -2131,8 +2306,10 @@ ProcContext:=CreateFindContext(TypeTool,TypeNode); // create new method - AddMethodCompatibleToProcType(AClassNode,Identifier, - ProcContext,AMethodDefinition,AMethodAttr,SourceChangeCache); + if not AddMethodCompatibleToProcType(AClassNode,Identifier, + ProcContext,AMethodDefinition,AMethodAttr,SourceChangeCache) + then + Exit; // apply the changes if not SourceChangeCache.Apply then @@ -2142,7 +2319,7 @@ DebugLn(' CompleteLocalIdentifierByParameter.AddMethod: jumping to new method body...'); {$ENDIF} // jump to new method body - if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine,false) + if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine) then RaiseException('CompleteLocalIdentifierByParameter.AddMethod JumpToMethod failed'); end; @@ -2168,7 +2345,7 @@ DebugLn(' CompleteLocalIdentifierByParameter.AddProcedure: jumping to new method body...'); {$ENDIF} // jump to new method body - if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine,false) + if not JumpToMethod(AMethodDefinition,AMethodAttr,NewPos,NewTopLine) then RaiseException('CompleteLocalIdentifierByParameter.AddProcedure JumpToMethod failed'); end; @@ -2226,7 +2403,7 @@ {$ENDIF} // search variable - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try {$IFDEF CTDEBUG} DebugLn(' CompleteLocalIdentifierByParameter: check if variable is already defined ...'); @@ -2254,44 +2431,70 @@ Params.ContextNode:=Context.Node; Params.Flags:=fdfDefaultForExpressions+[fdfFunctionResult,fdfFindChildren]; ExprType:=FindExpressionResultType(Params,ProcStartPos,ProcNameAtom.StartPos); - if ExprType.Desc<>xtContext then begin + if not(ExprType.Desc in xtAllIdentTypes) then begin debugln(['TCodeCompletionCodeTool.CompleteLocalIdentifierByParameter Call="',ExtractCode(ProcStartPos,ProcNameAtom.StartPos,[]),'" gives ',ExprTypeToString(ExprType)]); exit; end; - // resolve point '.' Context:=ExprType.Context; - //debugln(['TCodeCompletionCodeTool.CompleteLocalIdentifierByParameter base class: ',FindContextToString(Context)]); - Params.Clear; - Params.Flags:=fdfDefaultForExpressions; - Context:=Context.Tool.FindBaseTypeOfNode(Params,Context.Node); - {$IFDEF CTDEBUG} - debugln(['TCodeCompletionCodeTool.CompleteLocalVariableByParameter search proc in sub context: ',FindContextToString(Context)]); - {$ENDIF} + if Assigned(Context.Tool) and Assigned(Context.Node) then + begin + // resolve point '.' + //debugln(['TCodeCompletionCodeTool.CompleteLocalIdentifierByParameter base class: ',FindContextToString(Context)]); + Params.Clear; + Params.Flags:=fdfDefaultForExpressions; + Context:=Context.Tool.FindBaseTypeOfNode(Params,Context.Node); + {$IFDEF CTDEBUG} + debugln(['TCodeCompletionCodeTool.CompleteLocalVariableByParameter search proc in sub context: ',FindContextToString(Context)]); + {$ENDIF} + end; end; - - // find declaration of parameter list - // ToDo: search in all overloads for the best fit - Params.ContextNode:=Context.Node; - Params.SetIdentifier(Self,@Src[ProcNameAtom.StartPos],nil); - Params.Flags:=fdfDefaultForExpressions+[fdfFindVariable]; - if Context.Node=CursorNode then - Params.Flags:=Params.Flags+[fdfSearchInParentNodes,fdfIgnoreCurContextNode] - else - Params.Flags:=Params.Flags-[fdfSearchInParentNodes,fdfIgnoreCurContextNode]; - CleanPosToCodePos(VarNameRange.StartPos,IgnorePos); - IgnoreErrorAfter:=IgnorePos; - try - {$IFDEF CTDEBUG} - debugln(['TCodeCompletionCodeTool.CompleteLocalIdentifierByParameter searching ',GetIdentifier(Params.Identifier),' [',dbgs(Params.Flags),'] in ',FindContextToString(Context)]); - {$ENDIF} - if not Context.Tool.FindIdentifierInContext(Params) then exit; - finally - ClearIgnoreErrorAfter; + if Assigned(Context.Tool) and Assigned(Context.Node) then + begin + // find declaration of parameter list + // ToDo: search in all overloads for the best fit + Params.ContextNode:=Context.Node; + Params.SetIdentifier(Self,@Src[ProcNameAtom.StartPos],nil); + Params.Flags:=fdfDefaultForExpressions+[fdfFindVariable]; + if Context.Node=CursorNode then + Params.Flags:=Params.Flags+[fdfSearchInParentNodes,fdfIgnoreCurContextNode] + else + Params.Flags:=Params.Flags-[fdfSearchInParentNodes,fdfIgnoreCurContextNode]; + CleanPosToCodePos(VarNameRange.StartPos,IgnorePos); + IgnoreErrorAfter:=IgnorePos; + try + {$IFDEF CTDEBUG} + debugln(['TCodeCompletionCodeTool.CompleteLocalIdentifierByParameter searching ',GetIdentifier(Params.Identifier),' [',dbgs(Params.Flags),'] in ',FindContextToString(Context)]); + {$ENDIF} + if not Context.Tool.FindIdentifierInContext(Params) then exit; + finally + ClearIgnoreErrorAfter; + end; + end else + if (ExprType.Desc in xtAllTypeHelperTypes) then + begin + Params.ContextNode:=CursorNode; + Params.SetIdentifier(Self,@Src[ProcNameAtom.StartPos],nil); + Params.Flags:=fdfDefaultForExpressions+[fdfFindVariable]+ + [fdfSearchInParentNodes,fdfIgnoreCurContextNode]; + FindIdentifierInBasicTypeHelpers(ExprType.Desc, Params); end; + NewType:=''; MissingUnitName:=''; if Params.NewNode=nil then exit; //DebugLn('TCodeCompletionCodeTool.CompleteLocalVariableAsParameter Proc/PropNode=',Params.NewNode.DescAsString,' ',copy(Params.NewCodeTool.Src,Params.NewNode.StartPos,50)); + + if Params.NewNode.Desc=ctnVarDefinition then + begin + try + ExprType:=Params.NewCodeTool.ConvertNodeToExpressionType(Params.NewNode,Params); + if (ExprType.Desc=xtContext) and (ExprType.Context.Node<>nil) then begin + Params.NewCodeTool:=ExprType.Context.Tool; + Params.NewNode:=ExprType.Context.Node; + end; + except + end; + end; ParameterNode:=Params.NewCodeTool.FindNthParameterNode(Params.NewNode, ParameterIndex); if (ParameterNode=nil) @@ -2313,7 +2516,7 @@ // search type Params.Clear; Params.ContextNode:=TypeNode; - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, fdfTopLvlResolving]; AliasType:=CleanFindContext; ExprType:=TypeTool.FindExpressionResultType(Params, @@ -2666,10 +2869,9 @@ ExprList:=nil; ParamNames:=nil; ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try // check parameter list - Params.ContextNode:=CursorNode; ExprList:=CreateParamExprListFromStatement(BracketOpenPos,Params); // create parameter list @@ -2695,7 +2897,7 @@ //DebugLn(['TCodeCompletionCodeTool.CreateParamListFromStatement Param=',copy(Src,ExprStartPos,ExprEndPos-ExprStartPos)]); // get type ParamExprType:=ExprList.Items[i]; - ParamType:=FindExprTypeAsString(ParamExprType,ExprStartPos,Params); + ParamType:=FindExprTypeAsString(ParamExprType,ExprStartPos); // create a nice parameter name ParamName:=CreateParamName(ExprStartPos,ExprEndPos,ParamType); //DebugLn(['TCodeCompletionCodeTool.CreateParamListFromStatement ',i,' ',ParamName,':',ParamType]); @@ -2797,7 +2999,7 @@ Params.ContextNode:=CursorNode; Params.SetIdentifier(Self,@Src[ProcNameAtom.StartPos],@CheckSrcIdentifier); Params.Flags:=[fdfSearchInParentNodes, - fdfTopLvlResolving,fdfSearchInAncestors, + fdfTopLvlResolving,fdfSearchInAncestors,fdfSearchInHelpers, fdfIgnoreCurContextNode]; if FindIdentifierInContext(Params) then begin // proc already exists @@ -2932,11 +3134,12 @@ Result:=false; if not CheckProcSyntax(BeginNode,ProcNameAtom,BracketOpenPos,BracketClosePos) then exit; + if OldTopLine=0 then ; CheckWholeUnitParsed(CursorNode,BeginNode); Beauty:=SourceChangeCache.BeautifyCodeOptions; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); ExprList:=nil; ActivateGlobalWriteLock; try @@ -3614,7 +3817,7 @@ case ReferingType of ctnTypeDefinition: NewSection:='type'; ctnConstDefinition: NewSection:='const'; - ctnProcedure: NewSrc:=''; + ctnProcedure: NewSection:=''; // Changed from NewSrc to NewSection. Is it correct? Juha else NewSection:='bug'; end; @@ -3753,7 +3956,7 @@ if (NodeExt.Node.Desc=ctnProcedure) and IsPCharInSrc(Identifier) then begin // read atom behind identifier name - NewPos:=PtrInt(PtrUInt(Identifier))-PtrInt(PtrUInt(@Src[1]))+1; + NewPos:=PtrInt({%H-}PtrUInt(Identifier))-PtrInt({%H-}PtrUInt(@Src[1]))+1; inc(NewPos,GetIdentLen(Identifier)); ReadRawNextPascalAtom(Src,NewPos,AtomStart,Scanner.NestedComments,true); if (AtomStart<=SrcLen) and (Src[AtomStart]<>'(') then begin @@ -4478,7 +4681,7 @@ Result:=true; end; - function CreateTypeSectionForCircle(CycleOfGraphNodes: TFPList; + function CreateTypeSectionForCycle(CycleOfGraphNodes: TFPList; var Definitions: TAVLTree; var Graph: TCodeGraph): boolean; // CycleOfGraphNodes is a list of TCodeGraphNode that should be moved // to a new type section @@ -4583,10 +4786,10 @@ Result:=UpdateGraph(Definitions,Graph,true); end; - function FixCircle(var Definitions: TAVLTree; + function FixCycle(var Definitions: TAVLTree; var Graph: TCodeGraph; CircleNode: TCodeGraphNode): boolean; var - CircleOfGraphNodes: TFPList; // list of TCodeGraphNode + CycleOfGraphNodes: TFPList; // list of TCodeGraphNode procedure RaiseCanNotFixCircle(const Msg: string); var @@ -4596,8 +4799,8 @@ begin DebugLn(['RaiseCanNotFixCircle Msg="',Msg,'"']); s:='Can not auto fix a circle in definitions: '+Msg; - for i:=0 to CircleOfGraphNodes.Count-1 do begin - GraphNode:=TCodeGraphNode(CircleOfGraphNodes[i]); + for i:=0 to CycleOfGraphNodes.Count-1 do begin + GraphNode:=TCodeGraphNode(CycleOfGraphNodes[i]); DebugLn([' ',i,': ',GetRedefinitionNodeText(GraphNode.Node)]); end; raise Exception.Create(s); @@ -4611,37 +4814,37 @@ NeedsMoving: Boolean; begin Result:=false; - CircleOfGraphNodes:=nil; + CycleOfGraphNodes:=nil; try - // get all nodes of this CircleOfGraphNodes - Graph.GetMaximumCircle(CircleNode,CircleOfGraphNodes); + // get all nodes of this CycleOfGraphNodes + Graph.GetMaximumCircle(CircleNode,CycleOfGraphNodes); // check if all nodes are types - for i:=0 to CircleOfGraphNodes.Count-1 do begin - GraphNode:=TCodeGraphNode(CircleOfGraphNodes[i]); + for i:=0 to CycleOfGraphNodes.Count-1 do begin + GraphNode:=TCodeGraphNode(CycleOfGraphNodes[i]); if not (GraphNode.Node.Desc in [ctnTypeDefinition,ctnGenericType]) then begin RaiseCanNotFixCircle('Only types can build circles, not '+GraphNode.Node.DescAsString); end; end; NeedsMoving:=false; - // check if the whole type CircleOfGraphNodes has one parent - ParentNode:=TCodeGraphNode(CircleOfGraphNodes[0]).Node.Parent; - for i:=1 to CircleOfGraphNodes.Count-1 do begin - GraphNode:=TCodeGraphNode(CircleOfGraphNodes[i]); + // check if the whole type CycleOfGraphNodes has one parent + ParentNode:=TCodeGraphNode(CycleOfGraphNodes[0]).Node.Parent; + for i:=1 to CycleOfGraphNodes.Count-1 do begin + GraphNode:=TCodeGraphNode(CycleOfGraphNodes[i]); if GraphNode.Node.Parent<>ParentNode then begin - DebugLn(['FixCircle circle is not yet in one type section -> needs moving']); + DebugLn(['FixCycle cycle is not yet in one type section -> needs moving']); NeedsMoving:=true; break; end; end; - // check if the parent only contains the CircleOfGraphNodes nodes + // check if the parent only contains the CycleOfGraphNodes nodes if not NeedsMoving then begin Node:=ParentNode.FirstChild; while Node<>nil do begin - i:=CircleOfGraphNodes.Count-1; - while (i>=0) and (TCodeGraphNode(CircleOfGraphNodes[i]).Node<>Node) do dec(i); + i:=CycleOfGraphNodes.Count-1; + while (i>=0) and (TCodeGraphNode(CycleOfGraphNodes[i]).Node<>Node) do dec(i); if i<0 then begin - DebugLn(['FixCircle circle has not yet its own type section -> needs moving']); + DebugLn(['FixCycle cycle has not yet its own type section -> needs moving']); NeedsMoving:=true; break; end; @@ -4650,26 +4853,26 @@ end; if NeedsMoving then begin - DebugLn(['TCodeCompletionCodeTool.FixForwardDefinitions.FixCircle moving types into one type section']); - Result:=CreateTypeSectionForCircle(CircleOfGraphNodes,Definitions,Graph); + DebugLn(['TCodeCompletionCodeTool.FixForwardDefinitions.FixCycle moving types into one type section']); + Result:=CreateTypeSectionForCycle(CycleOfGraphNodes,Definitions,Graph); exit; end else begin // remove definitions nodes and use the type section instead - DebugLn(['FixCircle already ok']); - Graph.CombineNodes(CircleOfGraphNodes,Graph.GetGraphNode(ParentNode,true)); + DebugLn(['FixCycle already ok']); + Graph.CombineNodes(CycleOfGraphNodes,Graph.GetGraphNode(ParentNode,true)); end; finally - CircleOfGraphNodes.Free; + CycleOfGraphNodes.Free; end; Result:=true; end; - function CheckCircles(var Definitions: TAVLTree; + function BreakCycles(var Definitions: TAVLTree; var Graph: TCodeGraph): boolean; var ListOfGraphNodes: TFPList; - CircleEdge: TCodeGraphEdge; + CycleEdge: TCodeGraphEdge; begin Result:=false; ListOfGraphNodes:=nil; @@ -4677,13 +4880,13 @@ Graph.DeleteSelfCircles; repeat //WriteCodeGraphDebugReport(Graph); - CircleEdge:=Graph.GetTopologicalSortedList(ListOfGraphNodes,true,false,false); - if CircleEdge=nil then break; + CycleEdge:=Graph.GetTopologicalSortedList(ListOfGraphNodes,true,false,false); + if CycleEdge=nil then break; DebugLn(['FixForwardDefinitions.CheckCircles Circle found containing ', - GetRedefinitionNodeText(CircleEdge.FromNode.Node), + GetRedefinitionNodeText(CycleEdge.FromNode.Node), ' and ', - GetRedefinitionNodeText(CircleEdge.ToNode.Node)]); - if not FixCircle(Definitions,Graph,CircleEdge.FromNode) then exit; + GetRedefinitionNodeText(CycleEdge.ToNode.Node)]); + if not FixCycle(Definitions,Graph,CycleEdge.FromNode) then exit; until false; finally ListOfGraphNodes.Free; @@ -5109,6 +5312,8 @@ end; Result:=MoveNodes(NodeMoveEdges); + // ToDo: maybe need UpdateGraph? + if Definitions<>nil then ; finally DisposeAVLTree(NodeMoveEdges); ListOfGraphNodes.Free; @@ -5141,8 +5346,8 @@ exit(true); end; SourceChangeCache.MainScanner:=Scanner; - // fix circles - if not CheckCircles(Definitions,Graph) then begin + // fix cycles + if not BreakCycles(Definitions,Graph) then begin DebugLn(['TCodeCompletionCodeTool.FixForwardDefinitions CheckCircles failed']); exit; end; @@ -5313,6 +5518,7 @@ end; ctnClassInterface, ctnDispinterface, ctnClass, ctnObject, ctnRecordType, + ctnClassHelper, ctnRecordHelper, ctnTypeHelper, ctnObjCClass, ctnObjCCategory, ctnObjCProtocol, ctnCPPClass: begin ChildNode:=SubNode.FirstChild; @@ -5338,7 +5544,7 @@ Result:=false; DefinitionsTreeOfCodeTreeNodeExt:=nil; Graph:=nil; - if not GatherUnitDefinitions(DefinitionsTreeOfCodeTreeNodeExt,false,true) then + if not GatherUnitDefinitions(DefinitionsTreeOfCodeTreeNodeExt,OnlyInterface,true) then begin DebugLn(['TCodeCompletionCodeTool.BuildUnitDefinitionGraph GatherUnitDefinitions failed']); exit; @@ -5477,20 +5683,9 @@ s: TPascalClassSection; procedure GatherClassProcs; - var - PublishedMethods: TFPList; begin // gather existing proc definitions in the class if ClassProcs=nil then begin - PublishedMethods:=nil; - try - {$IFDEF EnableInheritedEmptyMethods} - DebugLn(['GatherClassProcs EnableInheritedEmptyMethods']); - GatherPublishedMethods(FCompletingStartNode,PublishedMethods); - {$ENDIF} - finally - FreeListOfPFindContext(PublishedMethods); - end; ClassProcs:=GatherProcNodes(FCompletingFirstEntryNode, [phpInUpperCase,phpAddClassName], ExtractClassName(CodeCompleteClassNode,true)); @@ -5780,11 +5975,10 @@ Params: TFindDeclarationParams; begin if ClassNode=nil then exit; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, ClassNode); try Params.Flags:=[fdfSearchInAncestors]; Params.Identifier:=PChar(ProcName); - Params.ContextNode:=ClassNode; if not FindIdentifierInContext(Params) then exit; //debugln(['FindInheritedAssign NewNode=',Params.NewNode.DescAsString]); if Params.NewNode=nil then exit; @@ -5984,6 +6178,226 @@ NewPos,NewTopLine); end; +function TCodeCompletionCodeTool.GetPossibleInitsForVariable( + CursorPos: TCodeXYPosition; out Statements: TStrings; out + InsertPositions: TObjectList; SourceChangeCache: TSourceChangeCache): boolean; +var + Identifier: PChar; + + procedure AddStatement(aStatement: string); + begin + if SourceChangeCache<>nil then begin + SourceChangeCache.MainScanner:=Scanner; + SourceChangeCache.BeautifyCodeOptions.BeautifyStatement(aStatement,0); + end; + {$IFDEF VerboseGetPossibleInitsForVariable} + debugln(['TCodeCompletionCodeTool.GetPossibleInitsForVariable.AddStatement "',aStatement,'"']); + {$ENDIF} + Statements.Add(aStatement); + end; + + procedure AddAssignment(const aValue: string); + begin + AddStatement(GetIdentifier(Identifier)+':='+aValue+';'); + end; + +var + CleanCursorPos: integer; + CursorNode: TCodeTreeNode; + IdentAtom: TAtomPosition; + Params: TFindDeclarationParams; + VarTool: TFindDeclarationTool; + VarNode: TCodeTreeNode; + ExprType: TExpressionType; + BeginNode: TCodeTreeNode; + InsertPosDesc: TInsertStatementPosDescription; + Node: TCodeTreeNode; + Tool: TFindDeclarationTool; + aContext: TFindContext; + FuncNode: TCodeTreeNode; +begin + {$IFDEF VerboseGetPossibleInitsForVariable} + debugln(['TCodeCompletionCodeTool.GetPossibleInitsForVariable ',dbgs(CursorPos)]); + {$ENDIF} + Result:=false; + Statements:=TStringList.Create; + InsertPositions:=TObjectList.create(true); + BuildTreeAndGetCleanPos(CursorPos, CleanCursorPos); + + // find variable name + GetIdentStartEndAtPosition(Src,CleanCursorPos, + IdentAtom.StartPos,IdentAtom.EndPos); + {$IFDEF VerboseGetPossibleInitsForVariable} + debugln('TCodeCompletionCodeTool.GetPossibleInitsForLocalVar IdentAtom="',dbgstr(Src,IdentAtom.StartPos,IdentAtom.EndPos-IdentAtom.StartPos),'"'); + {$ENDIF} + if IdentAtom.StartPos=IdentAtom.EndPos then exit; + + // find context + CursorNode:=FindDeepestNodeAtPos(CleanCursorPos,true); + + // find declaration of identifier + VarTool:=nil; + VarNode:=nil; + Identifier:=@Src[IdentAtom.StartPos]; + if (cmsResult in FLastCompilerModeSwitches) + and (CompareIdentifiers(Identifier,'Result')=0) then begin + FuncNode:=CursorNode; + while not NodeIsFunction(FuncNode) do + FuncNode:=FuncNode.Parent; + VarTool:=Self; + VarNode:=FuncNode; + Result:=true; + end; + if VarNode=nil then begin + Params:=TFindDeclarationParams.Create(Self, CursorNode); + try + Params.SetIdentifier(Self,Identifier,nil); + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, + fdfTopLvlResolving,fdfFindVariable]; + Result:=FindIdentifierInContext(Params); + VarTool:=Params.NewCodeTool; + VarNode:=Params.NewNode; + if (not Result) or (VarNode=nil) then begin + {$IFDEF VerboseGetPossibleInitsForVariable} + debugln(['TCodeCompletionCodeTool.GetPossibleInitsForVariable FindIdentifierInContext Result=',Result,' VarTool=',VarTool<>nil,' VarNode=',VarNode<>nil]); + {$ENDIF} + MoveCursorToAtomPos(IdentAtom); + RaiseException('failed to resolve identifier "'+Identifier+'"'); + end; + {$IFDEF VerboseGetPossibleInitsForVariable} + debugln(['TCodeCompletionCodeTool.GetPossibleInitsForVariable FindIdentifierInContext VarTool=',ExtractFilename(VarTool.MainFilename),' VarNode=',VarNode.DescAsString]); + {$ENDIF} + finally + Params.Free; + end; + end; + + // resolve type + Params:=TFindDeclarationParams.Create(Self, CursorNode); + try + Params.Flags:=fdfDefaultForExpressions; + if VarNode.Desc in [ctnProcedure,ctnProcedureHead] then + Params.Flags:=Params.Flags+[fdfFunctionResult]; + ExprType:=VarTool.ConvertNodeToExpressionType(VarNode,Params); + {$IFDEF VerboseGetPossibleInitsForVariable} + DebugLn('TCodeCompletionCodeTool.GetPossibleInitsForVariable ConvertNodeToExpressionType', + ' Expr=',ExprTypeToString(ExprType)); + {$ENDIF} + finally + Params.Free; + end; + + case ExprType.Desc of + xtContext: + begin + // ToDo: ranges, records, objects, pointer, class, class of, interface + Node:=ExprType.Context.Node; + Tool:=ExprType.Context.Tool; + case Node.Desc of + ctnEnumerationType: + begin + // enumeration: add first 10 enums + Node:=Node.FirstChild; + while (Node<>nil) and (Statements.Count<10) do begin + if Node.Desc=ctnEnumIdentifier then + AddAssignment(GetIdentifier(@Tool.Src[Node.StartPos])); + Node:=Node.NextBrother; + end; + end; + ctnSetType: + // set of + AddAssignment('[]'); + ctnClass,ctnClassInterface,ctnDispinterface, + ctnObjCClass,ctnObjCCategory,ctnObjCProtocol,ctnCPPClass: + AddAssignment('nil'); + ctnPointerType: + AddAssignment('nil'); + ctnProcedureType: + // address of proc + AddAssignment('nil'); + ctnProcedureHead: + if Tool.NodeIsFunction(Node) then begin + Params:=TFindDeclarationParams.Create(Tool, Node); + try + aContext:=Tool.FindBaseTypeOfNode(Params,Node); + Tool:=aContext.Tool; + Node:=aContext.Node; + finally + Params.Free; + end; + end; + end; + end; + xtChar, + xtWideChar: begin AddAssignment('#0'); AddAssignment(''' '''); end; + xtReal, + xtSingle, + xtDouble, + xtExtended, + xtCExtended: begin AddAssignment('0.0'); AddAssignment('1.0'); end; + xtCurrency: AddAssignment('0.00'); + xtComp, + xtInt64, + xtCardinal, + xtQWord: AddAssignment('0'); + xtBoolean, + xtByteBool, + xtWordBool, + xtLongBool, + xtQWordBool: begin AddAssignment('False'); AddAssignment('True'); end; + xtString, + xtAnsiString, + xtShortString, + xtWideString, + xtUnicodeString: AddAssignment(''''''); + xtPChar: begin AddAssignment('nil'); AddAssignment('#0'); end; + xtPointer: AddAssignment('nil'); + xtConstOrdInteger: AddAssignment('0'); + xtConstString: AddAssignment(''''''); + xtConstReal: AddAssignment('0.0'); + xtConstSet: AddAssignment('[]'); + xtConstBoolean: begin AddAssignment('False'); AddAssignment('True'); end; + xtLongint, + xtLongWord, + xtWord, + xtSmallInt, + xtShortInt, + xtByte: AddAssignment('0'); + xtVariant: begin AddAssignment('0'); AddAssignment(''''''); end; + end; + if Statements.Count=0 then begin + MoveCursorToAtomPos(IdentAtom); + RaiseException('auto initialize not yet implemented for identifier "'+GetIdentifier(Identifier)+'" of type "'+ExprTypeToString(ExprType)+'"'); + end; + + // find possible insert positions + BeginNode:=CursorNode.GetNodeOfType(ctnBeginBlock); + if BeginNode<>nil then begin + InsertPosDesc:=TInsertStatementPosDescription.Create; + InsertPosDesc.InsertPos:=BeginNode.StartPos+length('begin'); + CleanPosToCaret(InsertPosDesc.InsertPos,InsertPosDesc.CodeXYPos); + InsertPosDesc.Indent:=GetLineIndent(Src,BeginNode.StartPos); + if SourceChangeCache<>nil then + inc(InsertPosDesc.Indent,SourceChangeCache.BeautifyCodeOptions.Indent) + else + inc(InsertPosDesc.Indent,2); + InsertPosDesc.FrontGap:=gtNewLine; + InsertPosDesc.AfterGap:=gtNewLine; + InsertPosDesc.Description:='After BEGIN keyword'; + if (BeginNode.Parent<>nil) then begin + if BeginNode.Parent.Desc=ctnProcedure then + InsertPosDesc.Description+=' of ' + +ExtractProcHead(BeginNode.Parent,[phpWithStart,phpAddClassName,phpWithoutParamList]); + end; + InsertPositions.Add(InsertPosDesc); + end; + + if InsertPositions.Count=0 then begin + MoveCursorToAtomPos(IdentAtom); + RaiseException('auto initialize not yet implemented for this context (Node='+CursorNode.DescAsString+')'); + end; +end; + function TCodeCompletionCodeTool.GuessTypeOfIdentifier( CursorPos: TCodeXYPosition; out IsKeyword, IsSubIdentifier: boolean; out ExistingDefinition: TFindContext; out ListOfPFindContext: TFPList; @@ -5993,16 +6407,15 @@ aclass.identifier:=<something> <something>:=aclass.identifier <something>:=<something>+aclass.identifier - <proc>(,,aclass.identifier) for identifier in <something> + ToDo: <proc>(,,aclass.identifier) - checks where the identifier is already defined + checks where the identifier is already defined or is a keyword checks if the identifier is a sub identifier (e.g. A.identifier) - creates the list of possible locations and notes - checks if it is the target of an assignment and guess the type - checks if it is the source of an for in and guess the type - ToDo: checks if it is the target of an assignment and guess the type - ToDo: checks if it is a parameter and guess the type + creates the list of possible insert locations + checks if it is the target of an assignment and guesses the type + checks if it is the run variable of an for in and guesses the type + ToDo: checks if it is a parameter and guesses the type } var CleanCursorPos: integer; @@ -6030,13 +6443,17 @@ // find identifier name GetIdentStartEndAtPosition(Src,CleanCursorPos, IdentifierAtom.StartPos,IdentifierAtom.EndPos); + {$IFDEF VerboseGuessTypeOfIdentifier} debugln('TCodeCompletionCodeTool.GuessTypeOfIdentifier A Atom=',GetAtom(IdentifierAtom),' "',dbgstr(Src,CleanCursorPos,10),'"'); + {$ENDIF} if IdentifierAtom.StartPos=IdentifierAtom.EndPos then exit; Result:=true; MoveCursorToAtomPos(IdentifierAtom); if AtomIsKeyWord then begin + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier is keyword: ',GetAtom]); + {$ENDIF} IsKeyword:=true; exit; end; @@ -6044,9 +6461,9 @@ // search identifier ActivateGlobalWriteLock; try - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try - {$IFDEF CTDEBUG} + {$IF defined(CTDEBUG) or defined(VerboseGuessTypeOfIdentifier)} DebugLn(' GuessTypeOfIdentifier: check if variable is already defined ...'); {$ENDIF} // check if identifier exists @@ -6055,7 +6472,9 @@ // identifier is already defined ExistingDefinition.Tool:=Params.NewCodeTool; ExistingDefinition.Node:=Params.NewNode; + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier identifier already defined at ',FindContextToString(ExistingDefinition)]); + {$ENDIF} end; finally Params.Free; @@ -6065,7 +6484,9 @@ if not FindIdentifierContextsAtStatement(IdentifierAtom.StartPos, IsSubIdentifier,ListOfPFindContext) then begin + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier FindIdentifierContextsAtStatement failed']); + {$ENDIF} exit; end; @@ -6103,7 +6524,7 @@ end; end; - // find assignment operator + // find assignment operator := MoveCursorToAtomPos(IdentifierAtom); ReadNextAtom; if AtomIs(':=') then begin @@ -6115,20 +6536,25 @@ TermAtom.StartPos:=CurPos.StartPos; TermAtom.EndPos:=FindEndOfExpression(TermAtom.StartPos); if TermAtom.StartPos=TermAtom.EndPos then begin + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier nothing behind := operator']); + {$ENDIF} exit; end; + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier guessing type of assignment :="',dbgstr(Src,TermAtom.StartPos,TermAtom.EndPos-TermAtom.StartPos),'"']); + {$ENDIF} // find type of term - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try - Params.ContextNode:=CursorNode; NewType:=FindTermTypeAsString(TermAtom,Params,NewExprType); finally Params.Free; end; + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier Assignment type=',NewType]); + {$ENDIF} Result:=true; end; @@ -6150,21 +6576,27 @@ TermAtom.StartPos:=CurPos.StartPos; TermAtom.EndPos:=FindEndOfExpression(TermAtom.StartPos); + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier guessing type of for-in list "',dbgstr(Src,TermAtom.StartPos,TermAtom.EndPos-TermAtom.StartPos),'"']); + {$ENDIF} // find type of term - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try NewType:=FindForInTypeAsString(TermAtom,CursorNode,Params,NewExprType); finally Params.Free; end; + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier For-In type=',NewType]); + {$ENDIF} Result:=true; end; end; if not Result then begin + {$IFDEF VerboseGuessTypeOfIdentifier} debugln(['TCodeCompletionCodeTool.GuessTypeOfIdentifier can not guess type']); + {$ENDIF} exit; end; @@ -6352,28 +6784,6 @@ end; end; -function TCodeCompletionCodeTool.GatherPublishedMethods( - ClassNode: TCodeTreeNode; out ListOfPFindContext: TFPList): boolean; -var - Ancestors: TFPList; // list of PFindContext - i: Integer; - Context: PFindContext; -begin - Result:=false; - Ancestors:=nil; - ListOfPFindContext:=nil; - try - if not FindClassAndAncestors(ClassNode,Ancestors,false) then exit; - if Ancestors=nil then exit(true); - for i:=0 to Ancestors.Count-1 do begin - Context:=PFindContext(Ancestors[i]); - DebugLn(['TCodeCompletionCodeTool.GatherPublishedMethods ',Context^.Node.DescAsString]); - end; - finally - FreeListOfPFindContext(Ancestors); - end; -end; - function TCodeCompletionCodeTool.InitClassCompletion( const AClassName: string; SourceChangeCache: TSourceChangeCache): boolean; @@ -6502,7 +6912,7 @@ end; var - CleanAccessFunc, CleanParamList, ParamList, PropType, VariableName: string; + CleanAccessFunc, CleanParamList, ParamList, PropName, PropType, VariableName: string; IsClassProp: boolean; InsertPos: integer; BeautifyCodeOpts: TBeautifyCodeOptions; @@ -6529,6 +6939,10 @@ end; ReadNextAtom; // read name Parts[ppName]:=CurPos; + PropName := copy(Src,Parts[ppName].StartPos, + Parts[ppName].EndPos-Parts[ppName].StartPos); + if (PropName <> '') and (PropName[1] = '&') then//property name starts with '&' + Delete(PropName, 1, 1); ReadNextAtom; end; @@ -6699,19 +7113,18 @@ AccessParam:=copy(Src,Parts[ppRead].StartPos, Parts[ppRead].EndPos-Parts[ppRead].StartPos) else begin + AccessParam:=''; // This was missing + // ToDo: Fix this test. AccessParam is now empty. if (Parts[ppParamList].StartPos>0) or (Parts[ppIndexWord].StartPos>0) or (SysUtils.CompareText(AccessParamPrefix, LeftStr(AccessParam,length(AccessParamPrefix)))=0) or (CodeCompleteClassNode.Desc in AllClassInterfaces) then begin // create the default read identifier for a function - AccessParam:=AccessParamPrefix+copy(Src,Parts[ppName].StartPos, - Parts[ppName].EndPos-Parts[ppName].StartPos); + AccessParam:=AccessParamPrefix+PropName; end else begin // create the default read identifier for a variable - AccessParam:=BeautifyCodeOpts.PrivateVariablePrefix - +copy(Src,Parts[ppName].StartPos, - Parts[ppName].EndPos-Parts[ppName].StartPos); + AccessParam:=BeautifyCodeOpts.PrivateVariablePrefix+PropName; end; end; @@ -6721,8 +7134,7 @@ if Parts[ppReadWord].StartPos>0 then begin // 'read' keyword exists -> insert read identifier behind InsertPos:=Parts[ppReadWord].EndPos; - FSourceChangeCache.Replace(gtSpace,gtNone,InsertPos,InsertPos, - AccessParam); + FSourceChangeCache.Replace(gtSpace,gtNone,InsertPos,InsertPos,AccessParam); end else begin // 'read' keyword does not exist -> insert behind index and type if Parts[ppIndex].StartPos>0 then @@ -6835,6 +7247,7 @@ AccessParamPrefix: String; AccessParam: String; AccessFunc: String; + AccessVariableName, AccessVariableNameParam: String; begin // check write specifier if not PartIsAtom[ppWrite] then exit; @@ -6848,8 +7261,7 @@ AccessParam:=copy(Src,Parts[ppWrite].StartPos, Parts[ppWrite].EndPos-Parts[ppWrite].StartPos) else - AccessParam:=AccessParamPrefix+copy(Src,Parts[ppName].StartPos, - Parts[ppName].EndPos-Parts[ppName].StartPos); + AccessParam:=AccessParamPrefix+PropName; // complete property definition for write specifier if (Parts[ppWrite].StartPos<0) and CompleteProperties then begin @@ -6916,6 +7328,13 @@ // add insert demand for function // build function code ProcBody:=''; + AccessVariableName := SetPropertyVariablename; + if SetPropertyVariableIsPrefix then + AccessVariableName := AccessVariableName+PropName; + if SetPropertyVariableUseConst then + AccessVariableNameParam := 'const '+AccessVariableName + else + AccessVariableNameParam := AccessVariableName; if (Parts[ppParamList].StartPos>0) then begin MoveCursorToCleanPos(Parts[ppParamList].StartPos); ReadNextAtom; @@ -6929,20 +7348,20 @@ if (Parts[ppIndexWord].StartPos<1) then begin // param list, no index AccessFunc:='procedure '+AccessParam - +'('+ParamList+';'+SetPropertyVariablename+':' + +'('+ParamList+';'+AccessVariableNameParam+':' +PropType+');'; end else begin // index + param list AccessFunc:='procedure '+AccessParam +'(AIndex:'+IndexType+';'+ParamList+';' - +SetPropertyVariablename+':'+PropType+');'; + +AccessVariableNameParam+':'+PropType+');'; end; end else begin if (Parts[ppIndexWord].StartPos<1) then begin // no param list, no index AccessFunc:= 'procedure '+AccessParam - +'('+SetPropertyVariablename+':'+PropType+');'; + +'('+AccessVariableNameParam+':'+PropType+');'; if VariableName<>'' then begin { read spec is a variable -> add simple assign code to body For example: @@ -6970,14 +7389,14 @@ ProcBody:= 'procedure ' +ExtractClassName(PropNode.Parent.Parent,false)+'.'+AccessParam - +'('+SetPropertyVariablename+':'+PropType+');' + +'('+AccessVariableNameParam+':'+PropType+');' +BeautifyCodeOpts.LineEnd +'begin'+BeautifyCodeOpts.LineEnd +BeautifyCodeOpts.GetIndentStr(BeautifyCodeOpts.Indent) - +'if '+VariableName+'='+SetPropertyVariablename+' then Exit;' + +'if '+VariableName+'='+AccessVariableName+' then Exit;' +BeautifyCodeOpts.LineEnd +BeautifyCodeOpts.GetIndentStr(BeautifyCodeOpts.Indent) - +VariableName+':='+SetPropertyVariablename+';' + +VariableName+':='+AccessVariableName+';' +BeautifyCodeOpts.LineEnd +'end;'; end; @@ -6987,7 +7406,7 @@ end else begin // index, no param list AccessFunc:='procedure '+AccessParam - +'(AIndex:'+IndexType+';'+SetPropertyVariablename+':'+PropType+');'; + +'(AIndex:'+IndexType+';'+AccessVariableNameParam+':'+PropType+');'; end; end; // add new Insert Node @@ -7023,8 +7442,7 @@ AccessParam:=copy(Src,Parts[ppStored].StartPos, Parts[ppStored].EndPos-Parts[ppStored].StartPos); end else - AccessParam:=copy(Src,Parts[ppName].StartPos, - Parts[ppName].EndPos-Parts[ppName].StartPos) + AccessParam:=PropName +BeautifyCodeOpts.PropertyStoredIdentPostfix; CleanAccessFunc:=UpperCaseStr(AccessParam); // check if procedure exists @@ -7676,7 +8094,7 @@ Result:=true; if (fNewMainUsesSectionUnits=nil) then exit; //DebugLn(['TCodeCompletionCodeTool.InsertAllNewUnitsToMainUsesSection ']); - UsesNode:=FindMainUsesSection; + UsesNode:=FindMainUsesNode; // remove units, that are already in the uses section CurSourceName:=GetSourceName(false); @@ -7996,8 +8414,9 @@ NewNodeExt.Node:=ProcNode; NewNodeExt.Txt:=ExtractProcName(ProcNode,[phpWithoutClassName]); NewNodeExt.Data:=NodeExt; + NewNodeExt.Flags:=Integer(ExtractProcedureGroup(ProcNode)); if Result=nil then - Result:=TAVLTree.Create(@CompareCodeTreeNodeExt); + Result:=TAVLTree.Create(@CompareCodeTreeNodeExtMethodHeaders); Result.Add(NewNodeExt); end; AVLNodeExt:=NodeExtTree.FindSuccessor(AVLNodeExt); @@ -8191,15 +8610,16 @@ {$ENDIF} ProcCode:=Beauty.BeautifyProc(ProcCode,Indent,ANodeExt.ExtTxt3=''); FSourceChangeCache.Replace(gtEmptyLine,gtEmptyLine,InsertPos,InsertPos,ProcCode); - if FJumpToProcName='' then begin + if FJumpToProcHead.Name='' then begin // remember one proc body to jump to after the completion - FJumpToProcName:=ANodeExt.Txt; - if System.Pos('.',FJumpToProcName)<1 then - FJumpToProcName:=TheClassName+'.'+FJumpToProcName; - if FJumpToProcName[length(FJumpToProcName)]<>';' then - FJumpToProcName:=FJumpToProcName+';'; + FJumpToProcHead.Name:=ANodeExt.Txt; + FJumpToProcHead.Group:=TPascalMethodGroup(ANodeExt.Flags); + if System.Pos('.',FJumpToProcHead.Name)<1 then + FJumpToProcHead.Name:=TheClassName+'.'+FJumpToProcHead.Name; + if FJumpToProcHead.Name[length(FJumpToProcHead.Name)]<>';' then + FJumpToProcHead.Name:=FJumpToProcHead.Name+';'; {$IFDEF CTDEBUG} - DebugLn('CreateMissingClassProcBodies FJumpToProcName="',FJumpToProcName,'"'); + DebugLn('CreateMissingClassProcBodies FJumpToProcHead.Name="',FJumpToProcHead.Name,'"'); {$ENDIF} end; end; @@ -8262,7 +8682,9 @@ if NextAVLNode<>nil then begin ANodeExt:=TCodeTreeNodeExtension(AnAVLNode.Data); ANodeExt2:=TCodeTreeNodeExtension(NextAVLNode.Data); - if CompareTextIgnoringSpace(ANodeExt.Txt,ANodeExt2.Txt,false)=0 then + if SameMethodHeaders(ANodeExt.Txt, TPascalMethodGroup(ANodeExt.Flags), + ANodeExt2.Txt, TPascalMethodGroup(ANodeExt2.Flags)) + then begin // proc redefined -> error if ANodeExt.Node.StartPos>ANodeExt2.Node.StartPos then begin @@ -8370,10 +8792,10 @@ // Try to insert new proc behind existing methods // find last method (go to last brother and search backwards) - if (StartSearchProc<>nil) - and (StartSearchProc.Parent<>nil) then begin - NearestProcNode:=StartSearchProc.Parent.LastChild; - end; + if (StartSearchProc<>nil) and (StartSearchProc.Parent<>nil) then + NearestProcNode:=StartSearchProc.Parent.LastChild + else + NearestProcNode:=nil; while (NearestProcNode<>nil) and (not NodeIsMethodBody(NearestProcNode)) do NearestProcNode:=NearestProcNode.PriorBrother; if NearestProcNode<>nil then begin @@ -8584,7 +9006,7 @@ begin // search alphabetically nearest proc body ExistingNode:=ProcBodyNodes.FindNearest(MissingNode.Data); - cmp:=CompareCodeTreeNodeExt(ExistingNode.Data,MissingNode.Data); + cmp:=CompareCodeTreeNodeExtMethodHeaders(ExistingNode.Data,MissingNode.Data); if (cmp<0) then begin AnAVLNode:=ProcBodyNodes.FindSuccessor(ExistingNode); if AnAVLNode<>nil then begin @@ -8690,9 +9112,9 @@ FreeClassInsertionList; end; - if FJumpToProcName<>'' then begin + if FJumpToProcHead.Name<>'' then begin {$IFDEF CTDEBUG} - DebugLn('TCodeCompletionCodeTool.ApplyChangesAndJumpToFirstNewProc Jump to new proc body ... "',FJumpToProcName,'"'); + DebugLn('TCodeCompletionCodeTool.ApplyChangesAndJumpToFirstNewProc Jump to new proc body ... "',FJumpToProcHead.Name,'"'); {$ENDIF} // there was a new proc body // -> find it and jump to @@ -8708,9 +9130,9 @@ FCodeCompleteClassNode:=FindClassNode(CursorNode,CurClassName,true,false); if CodeCompleteClassNode=nil then RaiseException('oops, I lost your class'); - ProcNode:=FindProcNode(CursorNode,FJumpToProcName,[phpInUpperCase,phpIgnoreForwards]); + ProcNode:=FindProcNode(CursorNode,FJumpToProcHead,[phpInUpperCase,phpIgnoreForwards]); if ProcNode=nil then begin - debugln(['TCodeCompletionCodeTool.ApplyChangesAndJumpToFirstNewProc Proc="',FJumpToProcName,'"']); + debugln(['TCodeCompletionCodeTool.ApplyChangesAndJumpToFirstNewProc Proc="',FJumpToProcHead.Name,'"']); RaiseException(ctsNewProcBodyNotFound); end; Result:=FindJumpPointInProcNode(ProcNode,NewPos,NewTopLine); @@ -8728,13 +9150,169 @@ function TCodeCompletionCodeTool.CompleteCode(CursorPos: TCodeXYPosition; OldTopLine: integer; out NewPos: TCodeXYPosition; out NewTopLine: integer; SourceChangeCache: TSourceChangeCache): boolean; + + function TryCompleteLocalVar(CleanCursorPos: integer; + CursorNode: TCodeTreeNode): Boolean; + begin + // test if Local variable assignment (i:=3) + Result:=CompleteLocalVariableAssignment(CleanCursorPos,OldTopLine, + CursorNode,NewPos,NewTopLine,SourceChangeCache); + if Result then exit; + + // test if Local variable iterator (for i in j) + Result:=CompleteLocalVariableForIn(CleanCursorPos,OldTopLine, + CursorNode,NewPos,NewTopLine,SourceChangeCache); + if Result then exit; + + // test if undeclared local variable as parameter (GetPenPos(x,y)) + Result:=CompleteLocalIdentifierByParameter(CleanCursorPos,OldTopLine, + CursorNode,NewPos,NewTopLine,SourceChangeCache); + if Result then exit; + end; + + function TryComplete(CursorNode: TCodeTreeNode; CleanCursorPos: integer): Boolean; + var + ProcNode, AClassNode: TCodeTreeNode; + IsEventAssignment: boolean; + begin + Result := False; + FCompletingCursorNode:=CursorNode; + try + + {$IFDEF CTDEBUG} + DebugLn('TCodeCompletionCodeTool.CompleteCode A CleanCursorPos=',dbgs(CleanCursorPos),' NodeDesc=',NodeDescriptionAsString(CursorNode.Desc)); + {$ENDIF} + + // test if in a class + AClassNode:=FindClassOrInterfaceNode(CursorNode); + if AClassNode<>nil then begin + Result:=CompleteClass(AClassNode,CleanCursorPos,OldTopLine,CursorNode, + NewPos,NewTopLine); + exit; + end; + {$IFDEF CTDEBUG} + DebugLn('TCodeCompletionCodeTool.CompleteCode not in-a-class ... '); + {$ENDIF} + + // test if forward proc + //debugln('TCodeCompletionCodeTool.CompleteCode ',CursorNode.DescAsString); + if CursorNode.Desc = ctnInterface then + begin + //Search nearest (to the left) CursorNode if we are within interface section + CursorNode := CursorNode.LastChild; + while Assigned(CursorNode) and (CursorNode.StartPos > CleanCursorPos) do + CursorNode := CursorNode.PriorBrother; + if (CursorNode=nil) + or (not PositionsInSameLine(Src,CursorNode.EndPos,CleanCursorPos)) then + CursorNode:=FCompletingCursorNode; + end; + ProcNode:=CursorNode.GetNodeOfType(ctnProcedure); + if (ProcNode=nil) and (CursorNode.Desc=ctnProcedure) then + ProcNode:=CursorNode; + if (ProcNode<>nil) and (ProcNode.Desc=ctnProcedure) + and ((ProcNode.SubDesc and ctnsForwardDeclaration)>0) then begin + // Node is forward Proc + Result:=CompleteForwardProcs(CursorPos,ProcNode,CursorNode,NewPos,NewTopLine, + SourceChangeCache); + exit; + end; + + // test if Event assignment (MyClick:=@Button1.OnClick) + Result:=CompleteEventAssignment(CleanCursorPos,OldTopLine,CursorNode, + IsEventAssignment,NewPos,NewTopLine,SourceChangeCache); + if IsEventAssignment then exit; + + Result:=TryCompleteLocalVar(CleanCursorPos,CursorNode); + if Result then exit; + + // test if procedure call + Result:=CompleteProcByCall(CleanCursorPos,OldTopLine, + CursorNode,NewPos,NewTopLine,SourceChangeCache); + if Result then exit; + finally + FCompletingCursorNode:=nil; + end; + end; + + function TryFirstLocalIdentOccurence(CursorNode: TCodeTreeNode; + OrigCleanCursorPos, CleanCursorPos: Integer): boolean; + var + AtomContextNode, StatementNode: TCodeTreeNode; + IdentAtom, LastCurPos: TAtomPosition; + UpIdentifier: string; + LastAtomIsDot: Boolean; + Params: TFindDeclarationParams; + OldCodePos: TCodePosition; + begin + Result := false; + + // get enclosing Begin block + if not (CursorNode.Desc in AllPascalStatements) then exit; + StatementNode:=CursorNode; + while StatementNode<>nil do begin + if (StatementNode.Desc=ctnBeginBlock) then begin + if (StatementNode.Parent.Desc in [ctnProcedure,ctnProgram]) then break; + end else if StatementNode.Desc in [ctnInitialization,ctnFinalization] then + break; + StatementNode:=StatementNode.Parent; + end; + if StatementNode=nil then exit; + + // read UpIdentifier at CleanCursorPos + GetIdentStartEndAtPosition(Src,CleanCursorPos, + IdentAtom.StartPos,IdentAtom.EndPos); + if IdentAtom.StartPos=IdentAtom.EndPos then + Exit; + + MoveCursorToAtomPos(IdentAtom); + if not AtomIsIdentifier then + Exit; // a keyword + + UpIdentifier := GetUpAtom; + + //find first occurence of UpIdentifier from procedure begin until CleanCursorPos + //we are interested only in local variables/identifiers + // --> the UpIdentifier must not be preceded by a point ("MyObject.I" - if we want to complete I) + // and then do another check if it is not available with the "with" command, e.g. + MoveCursorToCleanPos(StatementNode.StartPos); + if StatementNode.Desc=ctnBeginBlock then + BuildSubTreeForBeginBlock(StatementNode); + LastAtomIsDot := False; + while CurPos.EndPos < CleanCursorPos do + begin + ReadNextAtom; + if not LastAtomIsDot and AtomIsIdentifier and UpAtomIs(UpIdentifier) then + begin + AtomContextNode:=FindDeepestNodeAtPos(StatementNode,CurPos.StartPos,true); + Params:=TFindDeclarationParams.Create(Self, AtomContextNode); + try + // check if UpIdentifier doesn't exists (e.g. because of a with statement) + LastCurPos := CurPos; + if not IdentifierIsDefined(CurPos,AtomContextNode,Params) then + begin + FCompletingCursorNode:=CursorNode; + try + if not CleanPosToCodePos(OrigCleanCursorPos,OldCodePos) then + RaiseException('TCodeCompletionCodeTool.TryFirstLocalIdentOccurence CleanPosToCodePos'); + CompleteCode:=TryCompleteLocalVar(LastCurPos.StartPos,AtomContextNode); + AdjustCursor(OldCodePos,OldTopLine,NewPos,NewTopLine); + exit(true); + finally + FCompletingCursorNode:=nil; + end; + end; + CurPos := LastCurPos;//IdentifierIsDefined changes the CurPos + finally + Params.Free; + end; + end; + LastAtomIsDot := CurPos.Flag=cafPoint; + end; + end; + var - CleanCursorPos: integer; + CleanCursorPos, OrigCleanCursorPos: integer; CursorNode: TCodeTreeNode; - OldCleanCursorPos: LongInt; -var - ProcNode, ImplementationNode, AClassNode: TCodeTreeNode; - IsEventAssignment: boolean; begin //DebugLn(['TCodeCompletionCodeTool.CompleteCode CursorPos=',Dbgs(CursorPos),' OldTopLine=',OldTopLine]); @@ -8743,7 +9321,7 @@ RaiseException('need a SourceChangeCache'); BuildTreeAndGetCleanPos(trTillCursor,lsrEnd,CursorPos,CleanCursorPos, [btSetIgnoreErrorPos]); - OldCleanCursorPos:=CleanCursorPos; + OrigCleanCursorPos:=CleanCursorPos; NewPos:=CleanCodeXYPosition; NewTopLine:=0; @@ -8761,74 +9339,22 @@ inc(CleanCursorPos); until (CleanCursorPos>=SrcLen) or (not (Src[CleanCursorPos] in [' ',#9])); end; - - CursorNode:=FindDeepestNodeAtPos(CleanCursorPos,true); - CodeCompleteSrcChgCache:=SourceChangeCache; - FCompletingCursorNode:=CursorNode; - try - - {$IFDEF CTDEBUG} - DebugLn('TCodeCompletionCodeTool.CompleteCode A CleanCursorPos=',dbgs(CleanCursorPos),' NodeDesc=',NodeDescriptionAsString(CursorNode.Desc)); - {$ENDIF} - ImplementationNode:=FindImplementationNode; - if ImplementationNode=nil then ImplementationNode:=Tree.Root; - - // test if in a class - AClassNode:=FindClassOrInterfaceNode(CursorNode); - if AClassNode<>nil then begin - Result:=CompleteClass(AClassNode,CleanCursorPos,OldTopLine,CursorNode, - NewPos,NewTopLine); - exit; - end; - {$IFDEF CTDEBUG} - DebugLn('TCodeCompletionCodeTool.CompleteCode not in-a-class ... '); - {$ENDIF} - - // test if forward proc - //debugln('TCodeCompletionCodeTool.CompleteCode ',CursorNode.DescAsString); - ProcNode:=CursorNode.GetNodeOfType(ctnProcedure); - if (ProcNode=nil) and (CursorNode.Desc=ctnProcedure) then - ProcNode:=CursorNode; - if (ProcNode<>nil) and (ProcNode.Desc=ctnProcedure) - and ((ProcNode.SubDesc and ctnsForwardDeclaration)>0) then begin - // Node is forward Proc - Result:=CompleteForwardProcs(CursorPos,ProcNode,CursorNode,NewPos,NewTopLine, - SourceChangeCache); - exit; - end; - - // test if Event assignment (MyClick:=@Button1.OnClick) - Result:=CompleteEventAssignment(CleanCursorPos,OldTopLine,CursorNode, - IsEventAssignment,NewPos,NewTopLine,SourceChangeCache); - if IsEventAssignment then exit; - - // test if Local variable assignment (i:=3) - Result:=CompleteLocalVariableAssignment(CleanCursorPos,OldTopLine, - CursorNode,NewPos,NewTopLine,SourceChangeCache); - if Result then exit; - // test if Local variable iterator (for i in j) - Result:=CompleteLocalVariableForIn(CleanCursorPos,OldTopLine, - CursorNode,NewPos,NewTopLine,SourceChangeCache); - if Result then exit; + CodeCompleteSrcChgCache:=SourceChangeCache; + CursorNode:=FindDeepestNodeAtPos(CleanCursorPos,true); - // test if undeclared local variable as parameter (GetPenPos(x,y)) - Result:=CompleteLocalIdentifierByParameter(CleanCursorPos,OldTopLine, - CursorNode,NewPos,NewTopLine,SourceChangeCache); - if Result then exit; + if TryComplete(CursorNode, CleanCursorPos) then + exit(true); - // test if procedure call - Result:=CompleteProcByCall(CleanCursorPos,OldTopLine, - CursorNode,NewPos,NewTopLine,SourceChangeCache); - if Result then exit; + { Find the first occurence of the (local) identifier at cursor in current + procedure body and try again. } + if TryFirstLocalIdentOccurence(CursorNode,OrigCleanCursorPos,CleanCursorPos) then + exit(true); - // test if method body - Result:=CompleteMethodByBody(OldCleanCursorPos,OldTopLine,CursorNode, - NewPos,NewTopLine,SourceChangeCache); - if Result then exit; - finally - FCompletingCursorNode:=nil; - end; + if CompleteMethodByBody(OrigCleanCursorPos,OldTopLine,CursorNode, + NewPos,NewTopLine,SourceChangeCache) + then + exit(true); {$IFDEF CTDEBUG} DebugLn('TCodeCompletionCodeTool.CompleteCode nothing to complete ... '); @@ -9040,6 +9566,8 @@ begin inherited Create; FSetPropertyVariablename:='AValue'; + FSetPropertyVariableIsPrefix := false; + FSetPropertyVariableUseConst := false; FCompleteProperties:=true; FAddInheritedCodeToOverrideMethod:=true; end; diff -Nru lazarus-1.4.4+dfsg/components/codetools/codeindex.pas lazarus-1.6+dfsg/components/codetools/codeindex.pas --- lazarus-1.4.4+dfsg/components/codetools/codeindex.pas 2014-11-15 16:08:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codeindex.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,8 +30,8 @@ interface uses - Classes, SysUtils, AVL_Tree, CodeAtom, CodeTree, CodeCache, - FileProcs, StdCodeTools, CodeToolsStructs; + SysUtils, AVL_Tree, CodeTree, CodeCache, + LazFileUtils, StdCodeTools, CodeToolsStructs; type TCodeBrowserUnit = class; diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetoolmanager.pas lazarus-1.6+dfsg/components/codetools/codetoolmanager.pas --- lazarus-1.4.4+dfsg/components/codetools/codetoolmanager.pas 2015-03-14 10:34:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetoolmanager.pas 2016-01-13 17:25:49.000000000 +0000 @@ -40,16 +40,15 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, contnrs, LazMethodList, TypInfo, types, FileProcs, BasicCodeTools, - CodeToolsStrConsts, - LazFileCache, + Classes, SysUtils, contnrs, TypInfo, types, FileProcs, LazFileUtils, + BasicCodeTools, CodeToolsStrConsts, LazFileCache, LazMethodList, EventCodeTool, CodeTree, CodeAtom, SourceChanger, DefineTemplates, CodeCache, ExprEval, LinkScanner, KeywordFuncLists, FindOverloads, CodeBeautifier, FindDeclarationCache, DirectoryCacher, AVL_Tree, PPUCodeTools, LFMTrees, DirectivesTree, CodeCompletionTemplater, PascalParserTool, CodeToolsConfig, CustomCodeTool, FindDeclarationTool, IdentCompletionTool, StdCodeTools, ResourceCodeTool, CodeToolsStructs, - CTUnitGraph, CodeTemplatesTool, ExtractProcTool; + CTUnitGraph, ExtractProcTool, LazDbgLog; type TCodeToolManager = class; @@ -119,6 +118,8 @@ FOnSearchUsedUnit: TOnSearchUsedUnit; FResourceTool: TResourceCodeTool; FSetPropertyVariablename: string; + FSetPropertyVariableIsPrefix: Boolean; + FSetPropertyVariableUseConst: Boolean; FSourceExtensions: string; // default is '.pp;.pas;.lpr;.dpr;.dpk' FPascalTools: TAVLTree; // tree of TCustomCodeTool sorted TCustomCodeTool(Data).Scanner.MainCode FTabWidth: integer; @@ -148,7 +149,9 @@ procedure SetCodeCompletionTemplateFileName(AValue: String); procedure SetCompleteProperties(const AValue: boolean); procedure SetIndentSize(NewValue: integer); + procedure SetSetPropertyVariableIsPrefix(aValue: Boolean); procedure SetSetPropertyVariablename(AValue: string); + procedure SetSetPropertyVariableUseConst(aValue: Boolean); procedure SetTabWidth(const AValue: integer); procedure SetUseTabs(AValue: boolean); procedure SetVisibleEditorLines(NewValue: integer); @@ -163,14 +166,14 @@ procedure DoOnFABGetExamples(Sender: TObject; Code: TCodeBuffer; Step: integer; var CodeBuffers: TFPList; var ExpandedFilenames: TStrings); procedure DoOnLoadFileForTool(Sender: TObject; const ExpandedFilename: string; - out Code: TCodeBuffer; var Abort: boolean); + out Code: TCodeBuffer; var {%H-}Abort: boolean); function DoOnGetCodeToolForBuffer(Sender: TObject; Code: TCodeBuffer; GoToMainCode: boolean): TFindDeclarationTool; function DoOnGetDirectoryCache(const ADirectory: string): TCTDirectoryCache; procedure DoOnToolSetWriteLock(Lock: boolean); procedure DoOnToolGetChangeSteps(out SourcesChangeStep, FilesChangeStep: int64; out InitValuesChangeStep: integer); - function DoOnParserProgress(Tool: TCustomCodeTool): boolean; + function DoOnParserProgress({%H-}Tool: TCustomCodeTool): boolean; procedure DoOnToolTreeChange(Tool: TCustomCodeTool; NodesDeleting: boolean); function DoOnScannerProgress(Sender: TLinkScanner): boolean; function GetResourceTool: TResourceCodeTool; @@ -286,6 +289,10 @@ property JumpCentered: boolean read FJumpCentered write SetJumpCentered; property SetPropertyVariablename: string read FSetPropertyVariablename write SetSetPropertyVariablename; + property SetPropertyVariableIsPrefix: Boolean + read FSetPropertyVariableIsPrefix write SetSetPropertyVariableIsPrefix; + property SetPropertyVariableUseConst: Boolean + read FSetPropertyVariableUseConst write SetSetPropertyVariableUseConst; property VisibleEditorLines: integer read FVisibleEditorLines write SetVisibleEditorLines; property TabWidth: integer read FTabWidth write SetTabWidth; @@ -325,11 +332,11 @@ function GetPPUSrcPathForDirectory(const Directory: string): string; function GetDCUSrcPathForDirectory(const Directory: string): string; function GetCompiledSrcPathForDirectory(const Directory: string; - UseCache: boolean = true): string; + {%H-}UseCache: boolean = true): string; function GetNestedCommentsFlagForFile(const Filename: string): boolean; function GetPascalCompilerForDirectory(const Directory: string): TPascalCompiler; function GetCompilerModeForDirectory(const Directory: string): TCompilerMode; - function GetCompiledSrcExtForDirectory(const Directory: string): string; + function GetCompiledSrcExtForDirectory(const {%H-}Directory: string): string; function FindUnitInUnitLinks(const Directory, AUnitName: string): string; function GetUnitLinksForDirectory(const Directory: string; UseCache: boolean = false): string; @@ -369,12 +376,12 @@ // compiler directives function GuessMisplacedIfdefEndif(Code: TCodeBuffer; X,Y: integer; - var NewCode: TCodeBuffer; - var NewX, NewY, NewTopLine: integer): boolean; + out NewCode: TCodeBuffer; + out NewX, NewY, NewTopLine: integer): boolean; // find include directive of include file at position X,Y function FindEnclosingIncludeDirective(Code: TCodeBuffer; X,Y: integer; - var NewCode: TCodeBuffer; - var NewX, NewY, NewTopLine: integer): boolean; + out NewCode: TCodeBuffer; + out NewX, NewY, NewTopLine: integer): boolean; function FindResourceDirective(Code: TCodeBuffer; StartX, StartY: integer; out NewCode: TCodeBuffer; out NewX, NewY, NewTopLine: integer; const Filename: string = ''; SearchInCleanSrc: boolean = true): boolean; @@ -398,9 +405,10 @@ // keywords and comments function IsKeyword(Code: TCodeBuffer; const KeyWord: string): boolean; - function ExtractCodeWithoutComments(Code: TCodeBuffer): string; + function ExtractCodeWithoutComments(Code: TCodeBuffer; + KeepDirectives: boolean = false): string; function GetPasDocComments(Code: TCodeBuffer; X, Y: integer; - out ListOfPCodeXYPosition: TFPList): boolean; + out ListOfPCodeXYPosition: TFPList): boolean; // blocks (e.g. begin..end, case..end, try..finally..end, repeat..until) function FindBlockCounterPart(Code: TCodeBuffer; X,Y: integer; @@ -467,7 +475,7 @@ function GatherUnitNames(Code: TCodeBuffer): Boolean; function GatherIdentifiers(Code: TCodeBuffer; X,Y: integer): boolean; function GetIdentifierAt(Code: TCodeBuffer; X,Y: integer; - var Identifier: string): boolean; + out Identifier: string): boolean; function IdentItemCheckHasChilds(IdentItem: TIdentifierListItem): boolean; function FindAbstractMethods(Code: TCodeBuffer; X,Y: integer; out ListOfPCodeXYPosition: TFPList; @@ -528,18 +536,14 @@ SectionCode: TCodeBuffer; SectionX, SectionY: integer; const NewIdentifier, NewValue: string; InsertPolicy: TResourcestringInsertPolicy): boolean; - procedure ImproveStringConstantStart(const ACode: string; - var StartPos: integer); - procedure ImproveStringConstantEnd(const ACode: string; - var EndPos: integer); // expressions function GetStringConstBounds(Code: TCodeBuffer; X,Y: integer; - var StartCode: TCodeBuffer; var StartX, StartY: integer; - var EndCode: TCodeBuffer; var EndX, EndY: integer; + out StartCode: TCodeBuffer; out StartX, StartY: integer; + out EndCode: TCodeBuffer; out EndX, EndY: integer; ResolveComments: boolean): boolean; - function ReplaceCode(Code: TCodeBuffer; StartX, StartY: integer; - EndX, EndY: integer; const NewCode: string): boolean; + procedure ImproveStringConstantStart(const ACode: string; var StartPos: integer); + procedure ImproveStringConstantEnd(const ACode: string; var EndPos: integer); function ExtractOperand(Code: TCodeBuffer; X,Y: integer; out Operand: string; WithPostTokens, WithAsOperator, WithoutTrailingPoints: boolean): boolean; @@ -564,6 +568,9 @@ out ExistingDefinition: TFindContext; // next existing definition out ListOfPFindContext: TFPList; // possible classes out NewExprType: TExpressionType; out NewType: string): boolean; // false = not at an identifier or syntax error + function GetPossibleInitsForVariable(Code: TCodeBuffer; X,Y: integer; + out Statements: TStrings; out InsertPositions: TObjectList // e.g. [use unit1, unit2;]i:=0; + ): boolean; function DeclareVariableNearBy(Code: TCodeBuffer; X,Y: integer; const VariableName, NewType, NewUnitName: string; Visibility: TCodeTreeNodeDesc; @@ -571,6 +578,8 @@ ): boolean; function DeclareVariableAt(Code: TCodeBuffer; X,Y: integer; const VariableName, NewType, NewUnitName: string): boolean; + + // simplifications function FindRedefinitions(Code: TCodeBuffer; out TreeOfCodeTreeNodeExt: TAVLTree; WithEnums: boolean): boolean; function RemoveRedefinitions(Code: TCodeBuffer; @@ -604,12 +613,15 @@ out AllRemoved: boolean; const Attr: TProcHeadAttributes; out RemovedProcHeads: TStrings): boolean; - function FindUnusedUnits(Code: TCodeBuffer; Units: TStrings): boolean; // custom class completion function InitClassCompletion(Code: TCodeBuffer; const AClassName: string; out CodeTool: TCodeTool): boolean; + // insert/replace + function InsertStatements(InsertPos: TInsertStatementPosDescription; + const Statements: string): boolean; + // extract proc (creates a new procedure from code in selection) function CheckExtractProc(Code: TCodeBuffer; const StartPoint, EndPoint: TPoint; @@ -634,14 +646,6 @@ ProcName: string = '' // default: Assign ): boolean; - // code templates - function InsertCodeTemplate(Code: TCodeBuffer; - SelectionStart, SelectionEnd: TPoint; - TopLine: integer; - CodeTemplate: TCodeToolTemplate; - var NewCode: TCodeBuffer; - var NewX, NewY, NewTopLine: integer): boolean; - // source name e.g. 'unit AUnitName;' function GetSourceName(Code: TCodeBuffer; SearchMainCode: boolean): string; function GetCachedSourceName(Code: TCodeBuffer): string; @@ -686,6 +690,7 @@ function FindUnitSource(Code: TCodeBuffer; const AnUnitName, AnUnitInFilename: string): TCodeBuffer; function CreateUsesGraph: TUsesGraph; + function FindUnusedUnits(Code: TCodeBuffer; Units: TStrings): boolean; // resources property OnFindDefinePropertyForContext: TOnFindDefinePropertyForContext @@ -714,12 +719,12 @@ const NewFilename: string; KeepPath: boolean): boolean;// in cleaned source procedure DefaultFindDefinePropertyForContext(Sender: TObject; const ClassContext, AncestorClassContext: TFindContext; - LFMNode: TLFMTreeNode; + {%H-}LFMNode: TLFMTreeNode; const IdentName: string; var IsDefined: boolean); // register proc function HasInterfaceRegisterProc(Code: TCodeBuffer; - var HasRegisterProc: boolean): boolean; + out HasRegisterProc: boolean): boolean; // Delphi to Lazarus conversion function ConvertDelphiToLazarusSource(Code: TCodeBuffer; @@ -800,8 +805,8 @@ ): boolean; function JumpToPublishedMethodBody(Code: TCodeBuffer; const AClassName, AMethodName: string; - var NewCode: TCodeBuffer; - var NewX, NewY, NewTopLine: integer): boolean; + out NewCode: TCodeBuffer; + out NewX, NewY, NewTopLine: integer): boolean; function RenamePublishedMethod(Code: TCodeBuffer; const AClassName, OldMethodName, NewMethodName: string): boolean; @@ -2338,8 +2343,8 @@ {$ENDIF} end; -function TCodeToolManager.GetIdentifierAt(Code: TCodeBuffer; X, Y: integer; - var Identifier: string): boolean; +function TCodeToolManager.GetIdentifierAt(Code: TCodeBuffer; X, Y: integer; out + Identifier: string): boolean; var CleanPos: integer; begin @@ -2968,10 +2973,10 @@ BasicCodeTools.ImproveStringConstantEnd(ACode,EndPos); end; -function TCodeToolManager.GetStringConstBounds(Code: TCodeBuffer; X, Y: integer; - var StartCode: TCodeBuffer; var StartX, StartY: integer; - var EndCode: TCodeBuffer; var EndX, EndY: integer; - ResolveComments: boolean): boolean; +function TCodeToolManager.GetStringConstBounds(Code: TCodeBuffer; X, + Y: integer; out StartCode: TCodeBuffer; out StartX, StartY: integer; out + EndCode: TCodeBuffer; out EndX, EndY: integer; ResolveComments: boolean + ): boolean; var CursorPos, StartPos, EndPos: TCodeXYPosition; begin @@ -2999,25 +3004,16 @@ end; end; -function TCodeToolManager.ReplaceCode(Code: TCodeBuffer; StartX, - StartY: integer; EndX, EndY: integer; const NewCode: string): boolean; -var - StartCursorPos, EndCursorPos: TCodeXYPosition; +function TCodeToolManager.InsertStatements( + InsertPos: TInsertStatementPosDescription; const Statements: string): boolean; begin Result:=false; {$IFDEF CTDEBUG} - DebugLn('TCodeToolManager.ReplaceCode A ',Code.Filename); + DebugLn('TCodeToolManager.InsertStatements A ',Code.Filename,' Line=',Y,',Col=',X); {$ENDIF} - if not InitCurCodeTool(Code) then exit; - StartCursorPos.X:=StartX; - StartCursorPos.Y:=StartY; - StartCursorPos.Code:=Code; - EndCursorPos.X:=EndX; - EndCursorPos.Y:=EndY; - EndCursorPos.Code:=Code; + if not InitCurCodeTool(InsertPos.CodeXYPos.Code) then exit; try - Result:=FCurCodeTool.ReplaceCode(StartCursorPos,EndCursorPos,NewCode, - SourceChangeCache); + Result:=FCurCodeTool.InsertStatements(InsertPos,Statements,SourceChangeCache); except on e: Exception do HandleException(e); end; @@ -3064,9 +3060,9 @@ end; end; -function TCodeToolManager.GuessMisplacedIfdefEndif(Code: TCodeBuffer; X,Y: integer; - var NewCode: TCodeBuffer; - var NewX, NewY, NewTopLine: integer): boolean; +function TCodeToolManager.GuessMisplacedIfdefEndif(Code: TCodeBuffer; X, + Y: integer; out NewCode: TCodeBuffer; out NewX, NewY, NewTopLine: integer + ): boolean; var CursorPos: TCodeXYPosition; NewPos: TCodeXYPosition; @@ -3092,7 +3088,7 @@ end; function TCodeToolManager.FindEnclosingIncludeDirective(Code: TCodeBuffer; X, - Y: integer; var NewCode: TCodeBuffer; var NewX, NewY, NewTopLine: integer + Y: integer; out NewCode: TCodeBuffer; out NewX, NewY, NewTopLine: integer ): boolean; var CursorPos: TCodeXYPosition; @@ -3452,10 +3448,11 @@ end; end; -function TCodeToolManager.ExtractCodeWithoutComments(Code: TCodeBuffer): string; +function TCodeToolManager.ExtractCodeWithoutComments(Code: TCodeBuffer; + KeepDirectives: boolean): string; begin Result:=CleanCodeFromComments(Code.Source, - GetNestedCommentsFlagForFile(Code.Filename)); + GetNestedCommentsFlagForFile(Code.Filename),KeepDirectives); end; function TCodeToolManager.GetPasDocComments(Code: TCodeBuffer; X, Y: integer; @@ -3696,8 +3693,8 @@ end; function TCodeToolManager.JumpToPublishedMethodBody(Code: TCodeBuffer; - const AClassName, AMethodName: string; - var NewCode: TCodeBuffer; var NewX, NewY, NewTopLine: integer): boolean; + const AClassName, AMethodName: string; out NewCode: TCodeBuffer; out NewX, + NewY, NewTopLine: integer): boolean; var NewPos: TCodeXYPosition; begin {$IFDEF CTDEBUG} @@ -3900,17 +3897,14 @@ InFilename:=''; aFilename:=CodeToolBoss.DirectoryCachePool.FindUnitSourceInCompletePath( '',TheUnitName,InFilename,true); - if aFilename<>'' then - exit(true); - - // user search - if Assigned(OnFindSource) then begin - OnFindSource(Self,ctnUnit,TheUnitName,aFilename); - Result:=aFilename<>''; - end else if Assigned(OnFindFPCMangledSource) then begin - OnFindFPCMangledSource(Self,ctnUnit,TheUnitName,aFilename); - Result:=aFilename<>''; + if aFilename='' then begin + // user search + if Assigned(OnFindSource) then + OnFindSource(Self,ctnUnit,TheUnitName,aFilename) + else if Assigned(OnFindFPCMangledSource) then + OnFindFPCMangledSource(Self,ctnUnit,TheUnitName,aFilename) end; + Result:=aFilename<>''; end; function FindProgram(TheSrcName: string; out aFilename: string): boolean; @@ -4191,6 +4185,28 @@ end; end; +function TCodeToolManager.GetPossibleInitsForVariable(Code: TCodeBuffer; X, + Y: integer; out Statements: TStrings; out InsertPositions: TObjectList + ): boolean; +var + CursorPos: TCodeXYPosition; +begin + {$IFDEF CTDEBUG} + DebugLn(['TCodeToolManager.GetPossibleInitsForVariable A ',Code.Filename,' X=',X,' Y=',Y]); + {$ENDIF} + Result:=false; + if not InitCurCodeTool(Code) then exit; + CursorPos.Code:=Code; + CursorPos.X:=X; + CursorPos.Y:=Y; + try + Result:=FCurCodeTool.GetPossibleInitsForVariable(CursorPos,Statements, + InsertPositions,SourceChangeCache); + except + on e: Exception do Result:=HandleException(e); + end; +end; + function TCodeToolManager.DeclareVariableNearBy(Code: TCodeBuffer; X, Y: integer; const VariableName, NewType, NewUnitName: string; Visibility: TCodeTreeNodeDesc; LvlPosCode: TCodeBuffer; LvlPosX: integer; @@ -4655,39 +4671,6 @@ end; end; -function TCodeToolManager.InsertCodeTemplate(Code: TCodeBuffer; - SelectionStart, SelectionEnd: TPoint; TopLine: integer; - CodeTemplate: TCodeToolTemplate; var NewCode: TCodeBuffer; var NewX, NewY, - NewTopLine: integer): boolean; -var - CursorPos: TCodeXYPosition; - EndPos: TCodeXYPosition; - NewPos: TCodeXYPosition; -begin - {$IFDEF CTDEBUG} - DebugLn('TCodeToolManager.InsertCodeTemplate A ',Code.Filename); - {$ENDIF} - Result:=false; - if not InitCurCodeTool(Code) then exit; - CursorPos.X:=SelectionStart.X; - CursorPos.Y:=SelectionStart.Y; - CursorPos.Code:=Code; - EndPos.X:=SelectionStart.X; - EndPos.Y:=SelectionStart.Y; - EndPos.Code:=Code; - try - Result:=FCurCodeTool.InsertCodeTemplate(CursorPos,EndPos,TopLine, - CodeTemplate,NewPos,NewTopLine,SourceChangeCache); - if Result then begin - NewX:=NewPos.X; - NewY:=NewPos.Y; - NewCode:=NewPos.Code; - end; - except - on e: Exception do Result:=HandleException(e); - end; -end; - function TCodeToolManager.GetSourceName(Code: TCodeBuffer; SearchMainCode: boolean): string; begin @@ -5576,9 +5559,10 @@ end; function TCodeToolManager.HasInterfaceRegisterProc(Code: TCodeBuffer; - var HasRegisterProc: boolean): boolean; + out HasRegisterProc: boolean): boolean; begin Result:=false; + HasRegisterProc:=false; {$IFDEF CTDEBUG} DebugLn('TCodeToolManager.HasInterfaceRegisterProc A ',Code.Filename); {$ENDIF} @@ -5622,7 +5606,9 @@ if CompareFileExt(AFilename,'.ppu',false)=0 then Result:=GetPPUSrcPathForDirectory(ExtractFilePath(AFilename)) else if CompareFileExt(AFilename,'.dcu',false)=0 then - Result:=GetDCUSrcPathForDirectory(ExtractFilePath(AFilename)); + Result:=GetDCUSrcPathForDirectory(ExtractFilePath(AFilename)) + else + Result:=''; if Result='' then Result:=GetCompiledSrcPathForDirectory(ExtractFilePath(AFilename)); end; @@ -5801,12 +5787,24 @@ FCurCodeTool.JumpCentered:=NewValue; end; -procedure TCodeToolManager.SetSetPropertyVariablename(aValue: string); +procedure TCodeToolManager.SetSetPropertyVariableIsPrefix(aValue: Boolean); +begin + if FSetPropertyVariableIsPrefix = aValue then Exit; + FSetPropertyVariableIsPrefix := aValue; +end; + +procedure TCodeToolManager.SetSetPropertyVariablename(AValue: string); begin if FSetPropertyVariablename=aValue then Exit; FSetPropertyVariablename:=aValue; end; +procedure TCodeToolManager.SetSetPropertyVariableUseConst(aValue: Boolean); +begin + if FSetPropertyVariableUseConst = aValue then Exit; + FSetPropertyVariableUseConst := aValue; +end; + procedure TCodeToolManager.SetCursorBeyondEOL(NewValue: boolean); begin if NewValue=FCursorBeyondEOL then exit; @@ -5909,6 +5907,8 @@ AddInheritedCodeToOverrideMethod:=Self.AddInheritedCodeToOverrideMethod; CompleteProperties:=Self.CompleteProperties; SetPropertyVariablename:=Self.SetPropertyVariablename; + SetPropertyVariableIsPrefix:=Self.SetPropertyVariableIsPrefix; + SetPropertyVariableUseConst:=Self.SetPropertyVariableUseConst; end; Result.CheckFilesOnDisk:=FCheckFilesOnDisk; Result.IndentSize:=FIndentSize; @@ -5959,6 +5959,7 @@ function TCodeToolManager.GetDirectivesToolForSource(Code: TCodeBuffer; ExceptionOnError: boolean): TCompilerDirectivesTree; begin + if ExceptionOnError then ; Result:=FindDirectivesToolForSource(Code); if Result=nil then begin Result:=TDirectivesTool.Create; @@ -6253,8 +6254,11 @@ begin DebugLn('[TCodeToolManager.WriteDebugReport]'); if FCurCodeTool<>nil then begin - if WriteTool then + if WriteTool then begin FCurCodeTool.WriteDebugTreeReport; + if FCurCodeTool.Scanner<>nil then + FCurCodeTool.Scanner.WriteDebugReport; + end; end; if WriteDefPool then DefinePool.WriteDebugReport @@ -6290,6 +6294,8 @@ PtrUInt(InstanceSize) +MemSizeString(FErrorMsg) +MemSizeString(FSetPropertyVariablename) + +PtrUInt(SizeOf(FSetPropertyVariableIsPrefix)) + +PtrUInt(SizeOf(FSetPropertyVariableUseConst)) +MemSizeString(FSourceExtensions) ); if DefinePool<>nil then diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetoolmemmanager.pas lazarus-1.6+dfsg/components/codetools/codetoolmemmanager.pas --- lazarus-1.4.4+dfsg/components/codetools/codetoolmemmanager.pas 2009-04-28 22:30:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetoolmemmanager.pas 2015-04-06 18:04:45.000000000 +0000 @@ -55,7 +55,7 @@ FAllocatedCount: int64; FFreedCount: int64; {$ENDIF} - procedure DisposeItem(AnItem: PCodeToolMemManagerItem); + procedure DisposeItem({%H-}AnItem: PCodeToolMemManagerItem); function NewItem: PCodeToolMemManagerItem; procedure FreeFirstItem; virtual; public diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetoolscfgscript.pas lazarus-1.6+dfsg/components/codetools/codetoolscfgscript.pas --- lazarus-1.4.4+dfsg/components/codetools/codetoolscfgscript.pas 2013-04-08 22:13:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetoolscfgscript.pas 2015-10-26 21:41:56.000000000 +0000 @@ -231,8 +231,8 @@ function GetOperatorLevel(P: PChar): integer; function IsKeyWord(P: PChar): boolean; function IsFunction(P: PChar): boolean; - function IsCustomFunction(FunctionName: PChar): boolean; virtual; - procedure RunCustomSimpleFunction(FunctionName: PChar; Value: PCTCfgScriptVariable); virtual; + function IsCustomFunction({%H-}FunctionName: PChar): boolean; virtual; + procedure RunCustomSimpleFunction({%H-}FunctionName: PChar; {%H-}Value: PCTCfgScriptVariable); virtual; public Src: PChar; AtomStart: PChar; @@ -452,7 +452,7 @@ CheckCTCSVariable(Left); CheckCTCSVariable(Right); {$ENDIF} - //debugln(['CompareCTCSVariables AAA1 Left=',dbgs(Left),' Right=',dbgs(Right)]); + //debugln(['CompareCTCSVariables START Left=',dbgs(Left),' Right=',dbgs(Right)]); Result:=false; Equal:=false; LeftIsLowerThanRight:=false; @@ -1248,7 +1248,7 @@ var p: PChar; begin - if Value='' then exit; + if Value='' then exit(false); p:=PChar(Value); if p^='-' then inc(p); while (p^ in ['0'..'9']) do inc(p); @@ -2420,6 +2420,7 @@ inc(Column); end; end; + Result:=true; end; function TCTConfigScriptEngine.PosToStr(p: PChar): string; diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetoolsconfig.pas lazarus-1.6+dfsg/components/codetools/codetoolsconfig.pas --- lazarus-1.4.4+dfsg/components/codetools/codetoolsconfig.pas 2012-03-13 22:17:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetoolsconfig.pas 2015-12-17 14:37:15.000000000 +0000 @@ -50,7 +50,7 @@ uses Classes, SysUtils, Laz2_XMLCfg, Laz2_XMLRead, Laz2_XMLWrite, Laz2_DOM, - FileProcs, CodeCache, DefineTemplates; + FileProcs, LazFileUtils, LazFileCache, LazUTF8, CodeCache, DefineTemplates; type @@ -316,7 +316,7 @@ function TCodeToolsOptions.FindDefaultCompilerFilename: string; begin Result:=SearchFileInPath(GetDefaultCompilerFilename,'', - GetEnvironmentVariableUTF8('PATH'),':',ctsfcDefault); + GetEnvironmentVariableUTF8('PATH'),PathSeparator,ctsfcDefault); end; procedure TCodeToolsOptions.SaveToXMLConfig(XMLConfig: TXMLConfig; diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetoolsfpcmsgs.pas lazarus-1.6+dfsg/components/codetools/codetoolsfpcmsgs.pas --- lazarus-1.4.4+dfsg/components/codetools/codetoolsfpcmsgs.pas 2015-05-08 20:02:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetoolsfpcmsgs.pas 2015-05-08 20:02:16.000000000 +0000 @@ -251,16 +251,16 @@ while MaskPos^ in ['0'..'9','A'..'Z','a'..'z','_'] do inc(MaskPos); // get next pattern in mask MaskStartPos:=MaskPos; - while (MaskPos^<>#0) and (MaskPos^<>'$') do inc(MaskPos); - if MaskPos^=#0 then begin + if MaskStartPos^=#0 then begin // variable at end of mask Ranges.Add(TxtPos-BaseTxtPos,length(Txt)+1); exit; end; + while (MaskPos^<>#0) and (MaskPos^<>'$') do inc(MaskPos); // search pattern in txt TxtEndPos:=FindEndOfNextMatch(MaskStartPos,MaskPos,TxtPos); if TxtEndPos=nil then exit; - Ranges.Add(TxtPos-BaseTxtPos,TxtEndPos-BaseTxtPos); + Ranges.Add(TxtPos-BaseTxtPos,TxtEndPos-BaseTxtPos-(MaskPos-MaskStartPos)); TxtPos:=TxtEndPos; end; end; @@ -667,18 +667,16 @@ Item.Index:=FItems.Count; FItems.Add(Item); fSortedForID.Add(Item); - case Item.ID of - 1012: fSpecialItems[fmisiFatal]:=Item; - 1013: fSpecialItems[fmisiError]:=Item; - 1014: fSpecialItems[fmisiWarning]:=Item; - 1015: fSpecialItems[fmisiNote]:=Item; - 1016: fSpecialItems[fmisiHint]:=Item; - end; end; end; inc(Line); end; CreateArray; + fSpecialItems[fmisiFatal]:=FindWithID(1012); + fSpecialItems[fmisiError]:=FindWithID(1013); + fSpecialItems[fmisiWarning]:=FindWithID(1014); + fSpecialItems[fmisiNote]:=FindWithID(1015); + fSpecialItems[fmisiHint]:=FindWithID(1016); end; procedure TFPCMsgFile.LoadFromText(s: string); diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetools.lpk lazarus-1.6+dfsg/components/codetools/codetools.lpk --- lazarus-1.4.4+dfsg/components/codetools/codetools.lpk 2014-02-24 21:08:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetools.lpk 2015-04-06 17:15:01.000000000 +0000 @@ -2,6 +2,7 @@ <CONFIG> <Package Version="4"> <Name Value="CodeTools"/> + <Type Value="RunAndDesignTime"/> <Author Value="Mattias Gaertner"/> <CompilerOptions> <Version Value="11"/> @@ -15,21 +16,14 @@ </SyntaxOptions> </Parsing> <Other> - <Verbosity> - <ShowHints Value="False"/> - </Verbosity> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> <CustomOptions Value="$(IDEBuildOptions)"/> - <CompilerPath Value="$(CompPath)"/> </Other> </CompilerOptions> <Description Value="Tools and functions to parse, browse and edit pascal sources"/> <License Value="GPL-2 "/> <Version Major="1" Release="1"/> - <Files Count="62"> + <Files Count="61"> <Item1> <Filename Value="Makefile"/> <Type Value="Text"/> @@ -75,217 +69,212 @@ <UnitName Value="CodeIndex"/> </Item11> <Item12> - <Filename Value="codetemplatestool.pas"/> - <UnitName Value="CodeTemplatesTool"/> - </Item12> - <Item13> <Filename Value="codetoolmanager.pas"/> <UnitName Value="CodeToolManager"/> - </Item13> - <Item14> + </Item12> + <Item13> <Filename Value="codetoolmemmanager.pas"/> <UnitName Value="CodeToolMemManager"/> - </Item14> - <Item15> + </Item13> + <Item14> <Filename Value="codetools.inc"/> <Type Value="Include"/> - </Item15> - <Item16> + </Item14> + <Item15> <Filename Value="codetoolsconfig.pas"/> <UnitName Value="CodeToolsConfig"/> - </Item16> - <Item17> + </Item15> + <Item16> <Filename Value="codetoolsstrconsts.pas"/> <UnitName Value="CodeToolsStrConsts"/> - </Item17> - <Item18> + </Item16> + <Item17> <Filename Value="codetoolsstructs.pas"/> <UnitName Value="CodeToolsStructs"/> - </Item18> - <Item19> + </Item17> + <Item18> <Filename Value="codetree.pas"/> <UnitName Value="CodeTree"/> - </Item19> - <Item20> + </Item18> + <Item19> <Filename Value="customcodetool.pas"/> <UnitName Value="CustomCodeTool"/> - </Item20> - <Item21> + </Item19> + <Item20> <Filename Value="definetemplates.pas"/> <UnitName Value="DefineTemplates"/> - </Item21> - <Item22> + </Item20> + <Item21> <Filename Value="directivestree.pas"/> <UnitName Value="DirectivesTree"/> - </Item22> - <Item23> + </Item21> + <Item22> <Filename Value="directorycacher.pas"/> <UnitName Value="DirectoryCacher"/> - </Item23> - <Item24> + </Item22> + <Item23> <Filename Value="eventcodetool.pas"/> <UnitName Value="EventCodeTool"/> - </Item24> - <Item25> + </Item23> + <Item24> <Filename Value="expreval.pas"/> <UnitName Value="ExprEval"/> - </Item25> - <Item26> + </Item24> + <Item25> <Filename Value="extractproctool.pas"/> <UnitName Value="ExtractProcTool"/> - </Item26> - <Item27> + </Item25> + <Item26> <Filename Value="fileprocs.pas"/> <UnitName Value="FileProcs"/> - </Item27> - <Item28> + </Item26> + <Item27> <Filename Value="finddeclarationcache.pas"/> <UnitName Value="FindDeclarationCache"/> - </Item28> - <Item29> + </Item27> + <Item28> <Filename Value="finddeclarationtool.pas"/> <UnitName Value="FindDeclarationTool"/> - </Item29> - <Item30> + </Item28> + <Item29> <Filename Value="findoverloads.pas"/> <UnitName Value="FindOverloads"/> - </Item30> - <Item31> + </Item29> + <Item30> <Filename Value="fpc.errore.msg"/> <Type Value="Text"/> - </Item31> - <Item32> + </Item30> + <Item31> <Filename Value="h2pastool.pas"/> <UnitName Value="H2PasTool"/> - </Item32> - <Item33> + </Item31> + <Item32> <Filename Value="identcompletiontool.pas"/> <UnitName Value="IdentCompletionTool"/> - </Item33> - <Item34> + </Item32> + <Item33> <Filename Value="keywordfunclists.pas"/> <UnitName Value="KeywordFuncLists"/> - </Item34> - <Item35> + </Item33> + <Item34> <Filename Value="lfmtrees.pas"/> <UnitName Value="LFMTrees"/> - </Item35> - <Item36> + </Item34> + <Item35> <Filename Value="linkscanner.pas"/> <UnitName Value="LinkScanner"/> - </Item36> - <Item37> + </Item35> + <Item36> <Filename Value="memcheck.pas"/> <AddToUsesPkgSection Value="False"/> <UnitName Value="MemCheck"/> - </Item37> - <Item38> + </Item36> + <Item37> <Filename Value="memcheck_laz.inc"/> <Type Value="Include"/> - </Item38> - <Item39> + </Item37> + <Item38> <Filename Value="methodjumptool.pas"/> <UnitName Value="MethodJumpTool"/> - </Item39> - <Item40> + </Item38> + <Item39> <Filename Value="multikeywordlisttool.pas"/> <UnitName Value="MultiKeyWordListTool"/> - </Item40> - <Item41> + </Item39> + <Item40> <Filename Value="nonpascalcodetools.pas"/> <UnitName Value="NonPascalCodeTools"/> - </Item41> - <Item42> + </Item40> + <Item41> <Filename Value="pascalparsertool.pas"/> <UnitName Value="PascalParserTool"/> - </Item42> - <Item43> + </Item41> + <Item42> <Filename Value="pascalreadertool.pas"/> <UnitName Value="PascalReaderTool"/> - </Item43> - <Item44> + </Item42> + <Item43> <Filename Value="ppucodetools.pas"/> <UnitName Value="PPUCodeTools"/> - </Item44> - <Item45> + </Item43> + <Item44> <Filename Value="ppugraph.pas"/> <UnitName Value="PPUGraph"/> - </Item45> - <Item46> + </Item44> + <Item45> <Filename Value="ppuparser.pas"/> <UnitName Value="PPUParser"/> - </Item46> - <Item47> + </Item45> + <Item46> <Filename Value="resourcecodetool.pas"/> <UnitName Value="ResourceCodeTool"/> - </Item47> - <Item48> + </Item46> + <Item47> <Filename Value="sourcechanger.pas"/> <UnitName Value="SourceChanger"/> - </Item48> - <Item49> + </Item47> + <Item48> <Filename Value="sourcelog.pas"/> <UnitName Value="SourceLog"/> - </Item49> - <Item50> + </Item48> + <Item49> <Filename Value="stdcodetools.pas"/> <UnitName Value="StdCodeTools"/> - </Item50> - <Item51> + </Item49> + <Item50> <Filename Value="otheridentifiertree.pas"/> <UnitName Value="OtherIdentifierTree"/> - </Item51> - <Item52> + </Item50> + <Item51> <Filename Value="fpcsrcrules.inc"/> <Type Value="Include"/> - </Item52> - <Item53> + </Item51> + <Item52> <Filename Value="codetoolscfgscript.pas"/> <UnitName Value="CodeToolsCfgScript"/> - </Item53> - <Item54> + </Item52> + <Item53> <Filename Value="ctxmlfixfragment.pas"/> <UnitName Value="CTXMLFixFragment"/> - </Item54> - <Item55> + </Item53> + <Item54> <Filename Value="ctunitgraph.pas"/> <UnitName Value="CTUnitGraph"/> - </Item55> - <Item56> + </Item54> + <Item55> <Filename Value="changedeclarationtool.pas"/> <UnitName Value="ChangeDeclarationTool"/> - </Item56> - <Item57> + </Item55> + <Item56> <Filename Value="codetoolsfpcmsgs.pas"/> <UnitName Value="CodeToolsFPCMsgs"/> - </Item57> - <Item58> + </Item56> + <Item57> <Filename Value="unitdictionary.pas"/> <UnitName Value="UnitDictionary"/> - </Item58> - <Item59> + </Item57> + <Item58> <Filename Value="ctloadlaz.pas"/> <UnitName Value="ctloadlaz"/> - </Item59> - <Item60> + </Item58> + <Item59> <Filename Value="ctunitgroupgraph.pas"/> <UnitName Value="CTUnitGroupGraph"/> - </Item60> - <Item61> + </Item59> + <Item60> <Filename Value="codecompletiontemplater.pas"/> <UnitName Value="CodeCompletionTemplater"/> - </Item61> - <Item62> + </Item60> + <Item61> <Filename Value="codetoolgdbtracer.pas"/> - <UnitName Value="codetoolgdbtracer"/> - </Item62> + <UnitName Value="CodetoolGDBTracer"/> + </Item61> </Files> <LazDoc Paths="docs"/> <i18n> <EnableI18N Value="True"/> <OutDir Value="languages"/> </i18n> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="1"> <Item1> <PackageName Value="LazUtils"/> diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetools.pas lazarus-1.6+dfsg/components/codetools/codetools.pas --- lazarus-1.4.4+dfsg/components/codetools/codetools.pas 2014-02-24 21:08:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetools.pas 2015-04-06 17:15:01.000000000 +0000 @@ -8,13 +8,13 @@ uses BasicCodeTools, CacheCodeTools, CCodeParserTool, CodeAtom, CodeBeautifier, - CodeCache, CodeCompletionTool, CodeGraph, CodeIndex, CodeTemplatesTool, - CodeToolManager, CodeToolMemManager, CodeToolsConfig, CodeToolsStrConsts, - CodeToolsStructs, CodeTree, CustomCodeTool, DefineTemplates, DirectivesTree, - DirectoryCacher, EventCodeTool, ExprEval, ExtractProcTool, FileProcs, - FindDeclarationCache, FindDeclarationTool, FindOverloads, H2PasTool, - IdentCompletionTool, KeywordFuncLists, LFMTrees, LinkScanner, - MethodJumpTool, MultiKeyWordListTool, NonPascalCodeTools, PascalParserTool, + CodeCache, CodeCompletionTool, CodeGraph, CodeIndex, CodeToolManager, + CodeToolMemManager, CodeToolsConfig, CodeToolsStrConsts, CodeToolsStructs, + CodeTree, CustomCodeTool, DefineTemplates, DirectivesTree, DirectoryCacher, + EventCodeTool, ExprEval, ExtractProcTool, FileProcs, FindDeclarationCache, + FindDeclarationTool, FindOverloads, H2PasTool, IdentCompletionTool, + KeywordFuncLists, LFMTrees, LinkScanner, MethodJumpTool, + MultiKeyWordListTool, NonPascalCodeTools, PascalParserTool, PascalReaderTool, PPUCodeTools, PPUGraph, PPUParser, ResourceCodeTool, SourceChanger, SourceLog, StdCodeTools, OtherIdentifierTree, CodeToolsCfgScript, CTXMLFixFragment, CTUnitGraph, ChangeDeclarationTool, diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetoolsstrconsts.pas lazarus-1.6+dfsg/components/codetools/codetoolsstrconsts.pas --- lazarus-1.4.4+dfsg/components/codetools/codetoolsstrconsts.pas 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetoolsstrconsts.pas 2015-06-22 10:02:11.000000000 +0000 @@ -82,6 +82,7 @@ crsFoundUnexpectedAt = '%s, found unexpected %s at %s'; ctsAnonymDefinitionsAreNotAllowed = 'Anonymous %s definitions are not allowed'; ctsNestedDefinitionsAreNotAllowed = 'Nested %s definitions are not allowed'; + ctsHelperIsNotAllowed = 'Helper after %s is not allowed'; ctsEndForRecordNotFound = 'end for record not found'; ctsMissingEnumList = 'missing enum list'; ctsMissingTypeIdentifier = 'missing type identifier'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetoolsstructs.pas lazarus-1.6+dfsg/components/codetools/codetoolsstructs.pas --- lazarus-1.4.4+dfsg/components/codetools/codetoolsstructs.pas 2014-06-12 11:05:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetoolsstructs.pas 2015-07-07 11:43:38.000000000 +0000 @@ -32,7 +32,8 @@ interface uses - Classes, SysUtils, FileProcs, AVL_Tree, BasicCodeTools; + Classes, SysUtils, FileProcs, LazFileUtils, LazUtilities, LazDbgLog, + AVL_Tree, BasicCodeTools; type TResourcestringInsertPolicy = ( diff -Nru lazarus-1.4.4+dfsg/components/codetools/codetree.pas lazarus-1.6+dfsg/components/codetools/codetree.pas --- lazarus-1.4.4+dfsg/components/codetools/codetree.pas 2014-10-18 10:22:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/codetree.pas 2016-01-08 12:42:27.000000000 +0000 @@ -43,7 +43,7 @@ MemCheck, {$ENDIF} Classes, SysUtils, FileProcs, CodeToolsStructs, BasicCodeTools, - AVL_Tree, CodeToolMemManager; + AVL_Tree, LazDbgLog; //----------------------------------------------------------------------------- @@ -80,32 +80,36 @@ ctnVarDefinition = 21; ctnConstDefinition = 22; ctnGlobalProperty = 23; - ctnUseUnit = 24; // StartPos=unitname, EndPos=unitname+inFilename + ctnUseUnit = 24; // StartPos=unit, EndPos=unitname+inFilename, children ctnUseUnitNamespace, ctnUseUnitClearName ctnVarArgs = 25; + ctnUseUnitNamespace = 26; // <namespace>.clearname.pas + ctnUseUnitClearName = 27; // namespace.<clearname>.pas ctnClass = 30; ctnClassInterface = 31; - ctnObject = 32; - ctnObjCClass = 33; - ctnObjCCategory = 34; - ctnObjCProtocol = 35; - ctnCPPClass = 36; - ctnDispinterface = 37; + ctnDispinterface = 32; + ctnObject = 33; + ctnObjCClass = 34; + ctnObjCCategory = 35; + ctnObjCProtocol = 36; + ctnCPPClass = 37; + ctnTypeHelper = 38;//"type helper", parent/child similar to ctnClass + ctnRecordHelper = 39;//"record helper", parent/child similar to ctnClass ctnClassAbstract = 40; ctnClassSealed = 41; - ctnClassExternal = 42; - ctnClassHelper = 43; + ctnClassExternal = 42; // parent: jvm: ctnClass, ObjCClass, ObjCProtocol + ctnClassHelper = 43;//"class helper", parent/child similar to ctnClass ctnClassInheritance = 44; - ctnClassHelperFor = 45; + ctnHelperFor = 45;//class/record/type helper for, only child is ctnIdentifier ctnClassGUID = 46; ctnClassClassVar = 47; // child of visibility section ctnClassPrivate = 48; // child of AllClassObjects ctnClassProtected = 49; ctnClassPublic = 50; ctnClassPublished = 51; - ctnClassRequired = 52; - ctnClassOptional = 53; + ctnClassRequired = 52; // parent: ObjCProtocol + ctnClassOptional = 53; // parent: ObjCProtocol ctnProperty = 54; // child of visibility section or AllClassInterfaces ctnMethodMap = 55; // child of visibility section or AllClassInterfaces @@ -131,17 +135,18 @@ ctnPointerType = 85; ctnClassOfType = 86; ctnVariantType = 87; - ctnSpecialize = 88; - ctnSpecializeType = 89; - ctnSpecializeParams = 90; - ctnGenericType = 91;// 1. child = ctnGenericName, 2. child = ctnGenericParams, 3. child = type - ctnGenericName = 92; // parent = ctnGenericType - ctnGenericParams = 93; // parent = ctnGenericType, children = ctnGenericParameter - ctnGenericParameter = 94; // can has a child ctnGenericConstraint - ctnGenericConstraint = 95; // parent = ctnGenericParameter - ctnReferenceTo = 96; // 1. child = ctnProcedure - ctnConstant = 97; - ctnHintModifier = 98; // deprecated, platform, unimplemented, library, experimental + ctnSpecialize = 88; // 1st child = ctnSpecializeType, 2nd child = ctnSpecializeParams + ctnSpecializeType = 89; // parent = ctnSpecialize + ctnSpecializeParams = 90; // list of ctnSpecializeParam, parent = ctnSpecialize + ctnSpecializeParam = 91; // parent = ctnSpecializeParams + ctnGenericType = 92;// 1st child = ctnGenericName, 2nd child = ctnGenericParams, 3th child = type + ctnGenericName = 93; // parent = ctnGenericType + ctnGenericParams = 94; // parent = ctnGenericType, children = ctnGenericParameter + ctnGenericParameter = 95; // can has a child ctnGenericConstraint + ctnGenericConstraint = 96; // parent = ctnGenericParameter + ctnReferenceTo = 97; // 1st child = ctnProcedure + ctnConstant = 98; + ctnHintModifier = 99; // deprecated, platform, unimplemented, library, experimental ctnBeginBlock =100; ctnAsmBlock =101; @@ -168,7 +173,8 @@ AllClassBaseSections+AllClassSubSections; AllClassInterfaces = [ctnClassInterface,ctnDispinterface,ctnObjCProtocol]; AllClassObjects = [ctnClass,ctnObject,ctnRecordType, - ctnObjCClass,ctnObjCCategory,ctnCPPClass]; + ctnObjCClass,ctnObjCCategory,ctnCPPClass, + ctnClassHelper,ctnRecordHelper,ctnTypeHelper]; AllClasses = AllClassObjects+AllClassInterfaces; AllClassModifiers = [ctnClassAbstract, ctnClassSealed, ctnClassExternal]; AllDefinitionSections = @@ -191,7 +197,9 @@ ctnInitialization,ctnFinalization]; AllFindContextDescs = AllIdentifierDefinitions + AllCodeSections + AllClasses + [ctnProcedure]; - AllPointContexts = AllClasses+AllSourceTypes+[ctnEnumerationType,ctnInterface,ctnImplementation]; + AllPointContexts = AllClasses+AllSourceTypes+ + [ctnEnumerationType,ctnInterface,ctnImplementation,ctnTypeType, + ctnUseUnitNamespace,ctnUseUnitClearName,ctnRangedArrayType,ctnOpenArrayType]; // CodeTreeNodeSubDescriptors @@ -288,7 +296,7 @@ constructor Create; destructor Destroy; override; procedure ConsistencyCheck; - procedure WriteDebugReport(WithChilds: boolean); + procedure WriteDebugReport(WithChildren: boolean); end; @@ -365,6 +373,8 @@ ctnObjCCategory: Result:='ObjCCategory'; ctnObjCProtocol: Result:='ObjCProtocol'; ctnCPPClass: Result:='CPPClass'; + ctnTypeHelper: Result:='Type Helper'; + ctnRecordHelper: Result:='Record Helper'; ctnClassInheritance: Result:='Class inheritance'; ctnClassGUID: Result:='GUID'; @@ -378,8 +388,8 @@ ctnClassAbstract: Result:='abstract'; ctnClassSealed: Result:='sealed'; ctnClassExternal: Result:='external'; - ctnClassHelper: Result:='helper'; - ctnClassHelperFor: Result:='(helper) for'; + ctnClassHelper: Result:='Class Helper'; + ctnHelperFor: Result:='(helper) for'; ctnProcedure: Result:='Procedure'; ctnProcedureHead: Result:='ProcedureHead'; @@ -392,6 +402,8 @@ ctnPackage: Result:='Package'; ctnLibrary: Result:='Library'; ctnUnit: Result:='Unit'; + ctnUseUnitNamespace: Result:='Namespace'; + ctnUseUnitClearName: Result:='Unit name without namespace'; ctnInterface: Result:='Interface Section'; ctnImplementation: Result:='Implementation'; ctnInitialization: Result:='Initialization'; @@ -439,6 +451,7 @@ ctnSpecialize: Result:='Specialize Type'; ctnSpecializeType: Result:='Specialize Typename'; ctnSpecializeParams: Result:='Specialize Parameterlist'; + ctnSpecializeParam: Result:='Specialize Parameter'; ctnGenericType: Result:='Generic Type'; ctnGenericName: Result:='Generic Type Name'; ctnGenericParams: Result:='Generic Type Params'; @@ -1049,11 +1062,11 @@ raise Exception.Create(''); end; -procedure TCodeTree.WriteDebugReport(WithChilds: boolean); +procedure TCodeTree.WriteDebugReport(WithChildren: boolean); begin DebugLn('[TCodeTree.WriteDebugReport] Root=',dbgs(Root<>nil)); if Root<>nil then - Root.WriteDebugReport(' ',true); + Root.WriteDebugReport(' ',WithChildren); end; { TCodeTreeNodeExtension } diff -Nru lazarus-1.4.4+dfsg/components/codetools/ctloadlaz.pas lazarus-1.6+dfsg/components/codetools/ctloadlaz.pas --- lazarus-1.4.4+dfsg/components/codetools/ctloadlaz.pas 2012-07-21 20:24:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ctloadlaz.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,7 +30,7 @@ interface uses - Classes, SysUtils, FileProcs, Laz2_XMLCfg; + Classes, SysUtils, FileProcs, LazFileUtils, Laz2_XMLCfg; type TCTLParseString = record @@ -273,7 +273,9 @@ procedure TCTLazarusModule.LoadFromConfig(Cfg: TXMLConfig); begin - + if Cfg=nil then ; + // ToDo + RaiseCatchableException('not implemented yet'); end; { TCTLazarusManager } diff -Nru lazarus-1.4.4+dfsg/components/codetools/ctunitgraph.pas lazarus-1.6+dfsg/components/codetools/ctunitgraph.pas --- lazarus-1.4.4+dfsg/components/codetools/ctunitgraph.pas 2013-09-10 20:05:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ctunitgraph.pas 2015-10-06 15:44:19.000000000 +0000 @@ -30,9 +30,9 @@ interface uses - Classes, SysUtils, AVL_Tree, FileProcs, FindDeclarationTool, CodeBeautifier, - CodeGraph, CodeCache, StdCodeTools, DirectoryCacher, LinkScanner, - CustomCodeTool, CodeTree, CodeAtom, CodeToolsStructs; + Classes, SysUtils, AVL_Tree, FileProcs, LazFileUtils, LazUtilities, + FindDeclarationTool, CodeBeautifier, CodeCache, StdCodeTools, DirectoryCacher, + LinkScanner, CustomCodeTool, CodeTree, CodeToolsStructs; type @@ -76,7 +76,7 @@ constructor Create(const aFilename: string); destructor Destroy; override; procedure Clear; - function IndexOfUses(const aFilename: string): integer; + function IndexOfUses(const aFilename: string): integer; // slow linear search end; TUGUnitClass = class of TUGUnit; diff -Nru lazarus-1.4.4+dfsg/components/codetools/customcodetool.pas lazarus-1.6+dfsg/components/codetools/customcodetool.pas --- lazarus-1.4.4+dfsg/components/codetools/customcodetool.pas 2015-04-05 19:00:44.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/customcodetool.pas 2015-07-07 11:43:38.000000000 +0000 @@ -43,9 +43,9 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, math, FileProcs, CodeToolsStrConsts, CodeTree, CodeAtom, + Classes, SysUtils, FileProcs, CodeToolsStrConsts, CodeTree, CodeAtom, KeywordFuncLists, BasicCodeTools, LinkScanner, CodeCache, - AVL_Tree; + LazFileUtils, LazUtilities, AVL_Tree, LazDbgLog; type TCodeToolPhase = ( @@ -133,7 +133,7 @@ procedure RaiseLastError; procedure DoProgress; inline; procedure NotifyAboutProgress; - procedure FetchScannerSource(Range: TLinkScannerRange); virtual; + procedure FetchScannerSource; virtual; function InternalAtomIsIdentifier: boolean; inline; public Tree: TCodeTree; @@ -182,6 +182,7 @@ function CleanPosToCaretAndTopLine(CleanPos: integer; out Caret:TCodeXYPosition; out NewTopLine: integer): boolean; // true=ok, false=invalid CleanPos function CleanPosToStr(CleanPos: integer; WithFilename: boolean = false): string; + function CodeXYToStr(const CodePos: TCodeXYPosition; WithFilename: boolean = false): string; function CleanPosToRelativeStr(CleanPos: integer; const BaseFilename: string): string; procedure GetCleanPosInfo(CodePosInFront, CleanPos: integer; @@ -200,9 +201,6 @@ procedure BeginParsingAndGetCleanPos( Range: TLinkScannerRange; CursorPos: TCodeXYPosition; out CleanCursorPos: integer); - procedure BeginParsingAndGetCleanPosOLD( - OnlyInterfaceNeeded: boolean; CursorPos: TCodeXYPosition; - out CleanCursorPos: integer); function StringIsKeyWord(const Word: string): boolean; @@ -311,8 +309,7 @@ const ErrorCleanPos: integer; const ErrorNiceCleanPos: TCodeXYPosition ): TCodeTreeNodeParseError; - procedure RaiseNodeParserError(Node: TCodeTreeNode; - CheckIgnoreErrorPos: boolean = true); + procedure RaiseNodeParserError(Node: TCodeTreeNode); procedure RaiseCursorOutsideCode(CursorPos: TCodeXYPosition); property OnParserProgress: TOnParserProgress read FOnParserProgress write FOnParserProgress; @@ -496,7 +493,7 @@ end; end; -procedure TCustomCodeTool.FetchScannerSource(Range: TLinkScannerRange); +procedure TCustomCodeTool.FetchScannerSource; begin // update scanned code if FLastScannerChangeStep=Scanner.ChangeStep then begin @@ -577,7 +574,8 @@ if (SubDesc and ctnsNeedJITParsing)>0 then Result:=ctsUnparsed; end; ctnClass,ctnObject,ctnRecordType,ctnObjCClass,ctnObjCCategory,ctnObjCProtocol, - ctnCPPClass,ctnClassInterface,ctnDispinterface: + ctnCPPClass,ctnClassInterface,ctnDispinterface, + ctnTypeHelper,ctnRecordHelper,ctnClassHelper: begin Result:=''; if (SubDesc and ctnsForwardDeclaration)>0 then Result:=ctsForward; @@ -836,7 +834,7 @@ if CurPos.StartPos>SrcLen then exit(false); p:=@Src[CurPos.StartPos]; if p^ in ['0'..'9','%','$'] then exit(true); - if (p^='&') and (p[1] in ['0'..'7']) then exit(true); + if (p^='&') and IsOctNumberChar[p[1]] then exit(true); Result:=false; end; @@ -1232,10 +1230,10 @@ '&': // octal number or keyword as identifier begin inc(p); - if p^ in ['0'..'7'] then begin - while p^ in ['0'..'7'] do + if IsOctNumberChar[p^] then begin + while IsOctNumberChar[p^] do inc(p); - end else if IsIdentChar[p^] then begin + end else if IsIdentStartChar[p^] then begin CurPos.Flag:=cafWord; while IsIdentChar[p^] do inc(p); @@ -1742,7 +1740,7 @@ if CurPos.StartPos>1 then begin c1:=Src[CurPos.StartPos-1]; // test for double char operators :=, +=, -=, /=, *=, <>, <=, >=, **, >< - if ((c2='=') and (IsEqualOperatorStartChar[c1])) + if ((c2='=') and (IsEqualOperatorStartChar[c1])) or ((c1='<') and (c2='>')) or ((c1='>') and (c2='<')) or ((c1='.') and (c2='.')) @@ -1750,7 +1748,7 @@ or ((c1='@') and (c2='@')) then begin dec(CurPos.StartPos); - CurPos.Flag:=cafNone; + CurPos.Flag:=cafOtherOperator; end else begin case c2 of '=': CurPos.Flag:=cafEqual; @@ -1985,7 +1983,7 @@ // scan FLastProgressPos:=0; Scanner.Scan(Range,CheckFilesOnDisk); - FetchScannerSource(Range); + FetchScannerSource; // init parsing values CurPos:=StartAtomPosition; LastAtoms.Clear; @@ -2008,19 +2006,6 @@ end; end; -procedure TCustomCodeTool.BeginParsingAndGetCleanPosOLD( - OnlyInterfaceNeeded: boolean; CursorPos: TCodeXYPosition; - out CleanCursorPos: integer); -var - Range: TLinkScannerRange; -begin - if OnlyInterfaceNeeded then - Range:=lsrImplementationStart - else - Range:=lsrEnd; - BeginParsingAndGetCleanPos(Range,CursorPos,CleanCursorPos); -end; - function TCustomCodeTool.IgnoreErrorAfterPositionIsInFrontOfLastErrMessage: boolean; var IgnoreErrorAfterCleanPos: integer; @@ -2150,8 +2135,7 @@ Result.NicePos:=ErrorNiceCleanPos; end; -procedure TCustomCodeTool.RaiseNodeParserError(Node: TCodeTreeNode; - CheckIgnoreErrorPos: boolean); +procedure TCustomCodeTool.RaiseNodeParserError(Node: TCodeTreeNode); var NodeError: TCodeTreeNodeParseError; begin @@ -2178,6 +2162,7 @@ LastPos: Integer; begin ErrorPosition:=CursorPos; + Msg:=''; // check position in code buffer if CursorPos.Code=nil then Msg:='cursor position without code buffer' @@ -2286,7 +2271,7 @@ begin if Src='' then RaiseSrcEmpty; - NewPos:=PtrInt(PtrUInt(ACleanPos))-PtrInt(PtrUInt(@Src[1]))+1; + NewPos:=PtrInt({%H-}PtrUInt(ACleanPos))-PtrInt({%H-}PtrUInt(@Src[1]))+1; if (NewPos<1) or (NewPos>SrcLen) then RaiseNotInSrc; MoveCursorToCleanPos(NewPos); @@ -2719,14 +2704,20 @@ CodePos: TCodeXYPosition; begin if CleanPosToCaret(CleanPos,CodePos) then begin - Result:=''; - if WithFilename then - Result:=ExtractRelativepath(ExtractFilePath(MainFilename),CodePos.Code.Filename)+','; - Result:=Result+'line '+IntToStr(CodePos.Y)+', column '+IntToStr(CodePos.X); + Result:=CodeXYToStr(CodePos,WithFilename); end else Result:='outside scan range, pos='+IntToStr(CleanPos)+'('+dbgstr(copy(Src,CleanPos-5,5)+'|'+copy(Src,CleanPos,5))+')'; end; +function TCustomCodeTool.CodeXYToStr(const CodePos: TCodeXYPosition; + WithFilename: boolean): string; +begin + Result:=''; + if WithFilename then + Result:=ExtractRelativepath(ExtractFilePath(MainFilename),CodePos.Code.Filename)+','; + Result:=Result+'line '+IntToStr(CodePos.Y)+', column '+IntToStr(CodePos.X); +end; + function TCustomCodeTool.CleanPosToRelativeStr(CleanPos: integer; const BaseFilename: string): string; var @@ -2757,7 +2748,7 @@ ResolveComments: if CleanPos is in a comment, parse again in the comment (not recursive) SameArea: area around CleanPos, either an atom, comment, directive or space if CleanPos<CodePosInFront then CleanAtomPosition - if CleanPos>SrcLen then CurPos.StartPos>SrcLen + if CleanPos>SrcLen then SameArea.StartPos>SrcLen } var ANode: TCodeTreeNode; diff -Nru lazarus-1.4.4+dfsg/components/codetools/definetemplates.pas lazarus-1.6+dfsg/components/codetools/definetemplates.pas --- lazarus-1.4.4+dfsg/components/codetools/definetemplates.pas 2015-03-12 23:41:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/definetemplates.pas 2015-12-08 21:19:21.000000000 +0000 @@ -52,10 +52,14 @@ interface uses - Classes, SysUtils, LazUTF8, CodeToolsStrConsts, ExprEval, DirectoryCacher, - BasicCodeTools, Laz2_XMLCfg, lazutf8classes, LazFileUtils, AVL_Tree, process, - CodeToolsStructs, UTF8Process, LazFileCache, KeywordFuncLists, LinkScanner, - FileProcs; + // RTL + FCL + Classes, SysUtils, AVL_Tree, process, + // CodeTools + CodeToolsStrConsts, ExprEval, DirectoryCacher, BasicCodeTools, + CodeToolsStructs, KeywordFuncLists, LinkScanner, FileProcs, + // LazUtils + LazUtilities, LazUTF8, LazUTF8Classes, LazFileUtils, UTF8Process, + LazFileCache, LazDbgLog, Laz2_XMLCfg; const ExternalMacroStart = ExprEval.ExternalMacroStart; @@ -173,9 +177,10 @@ FPCOperatingSystemAlternative2Names: array[1..2] of shortstring =( 'bsd', 'linux' // see GetDefaultSrcOS2ForTargetOS ); - FPCProcessorNames: array[1..11] of shortstring =( + FPCProcessorNames: array[1..12] of shortstring =( 'a64', 'arm', + 'avr', 'i386', 'i8086', 'jvm', @@ -601,7 +606,7 @@ // Kylix templates function CreateKylixCompilerDefinesTemplate(KylixVersion: integer; Owner: TObject): TDefineTemplate; - function CreateKylixSrcPath(KylixVersion: integer; + function CreateKylixSrcPath({%H-}KylixVersion: integer; const PathPrefix: string): string; function CreateKylixDirectoryTemplate(const KylixDirectory: string; KylixVersion: integer; Owner: TObject): TDefineTemplate; @@ -976,7 +981,7 @@ function GetDefaultSrcOS2ForTargetOS(const TargetOS: string): string; function GetDefaultSrcCPUForTargetCPU(const TargetCPU: string): string; procedure SplitLazarusCPUOSWidgetCombo(const Combination: string; - var CPU, OS, WidgetSet: string); + out CPU, OS, WidgetSet: string); function GetCompiledFPCVersion: integer; function GetCompiledTargetOS: string; function GetCompiledTargetCPU: string; @@ -998,9 +1003,9 @@ function Compress1FileList(Files: TStrings): TStringList; // thread-safe function Decompress1FileList(Files: TStrings): TStringList; // thread-safe function RunTool(const Filename: string; Params: TStrings; - WorkingDirectory: string = ''): TStringList; // thread-safe + WorkingDirectory: string = ''; Quiet: boolean = false): TStringList; // thread-safe function RunTool(const Filename, Params: string; - WorkingDirectory: string = ''): TStringList; // thread-safe + WorkingDirectory: string = ''; Quiet: boolean = false): TStringList; // thread-safe type // fpc parameter effecting search for compiler @@ -1036,7 +1041,10 @@ out Defines, Undefines: TStringToStringTree; const Options: string = ''): boolean; function GatherUnitsInSearchPaths(SearchPaths: TStrings; - const OnProgress: TDefinePoolProgress): TStringToStringTree; // unit names to full file name + const OnProgress: TDefinePoolProgress; + CheckFPMkInst: boolean = false): TStringToStringTree; // unit names to full file name +function GatherUnitSourcesInDirectory(Directory: string; + MaxLevel: integer = 1): TStringToStringTree; // unit names to full file name procedure AdjustFPCSrcRulesForPPUPaths(Units: TStringToStringTree; Rules: TFPCSourceRules); function GatherUnitsInFPCSources(Files: TStringList; @@ -1063,7 +1071,7 @@ procedure ReadMakefileFPC(const Filename: string; List: TStrings); procedure ParseMakefileFPC(const Filename, SrcOS: string; - var Dirs, SubDirs: string); + out Dirs, SubDirs: string); function CompareFPCSourceRulesViaFilename(Rule1, Rule2: Pointer): integer; function CompareFPCTargetConfigCacheItems(CacheItem1, CacheItem2: Pointer): integer; @@ -1234,10 +1242,11 @@ break; BaseDir:=ChompPathDelim(ExtractFilePath(copy(BaseDir,1,BaseDirLen-1))); BaseDirLen:=length(BaseDir); + if (BaseDir='') or (BaseDir[length(BaseDir)]=PathDelim) then break; end; end; // create relative paths - if BaseDir<>'' then + if (BaseDir<>'') then for i:=0 to Result.Count-1 do begin Filename:=Result[i]; Filename:=copy(Filename,BaseDirLen+1,length(Filename)); @@ -1296,7 +1305,7 @@ end; function RunTool(const Filename: string; Params: TStrings; - WorkingDirectory: string): TStringList; + WorkingDirectory: string; Quiet: boolean): TStringList; var buf: string; TheProcess: TProcessUTF8; @@ -1312,8 +1321,8 @@ Result:=TStringList.Create; try buf:=''; - if MainThreadID=GetCurrentThreadId then begin - DbgOut(['RunTool ',Filename]); + if (MainThreadID=GetCurrentThreadId) and not Quiet then begin + DbgOut(['Hint: (lazarus) [RunTool] ',Filename]); for i:=0 to Params.Count-1 do dbgout(' "',Params[i],'"'); Debugln; @@ -1362,15 +1371,15 @@ end; end; -function RunTool(const Filename, Params: string; - WorkingDirectory: string): TStringList; +function RunTool(const Filename, Params: string; WorkingDirectory: string; + Quiet: boolean): TStringList; var ParamList: TStringList; begin ParamList:=TStringList.Create; try SplitCmdLineParams(Params,ParamList); - Result:=RunTool(Filename,ParamList,WorkingDirectory); + Result:=RunTool(Filename,ParamList,WorkingDirectory,Quiet); finally ParamList.Free; end; @@ -1557,6 +1566,7 @@ SymbolName, SymbolValue, UpLine, NewPath: string; i, len, CurPos: integer; Filename: String; + p: SizeInt; begin //DebugLn(['ProcessOutputLine ',Line]); Line:=SysToUtf8(Line); @@ -1575,9 +1585,29 @@ end; UpLine:=UpperCaseStr(Line); - //DebugLn(['ProcessOutputLine ',Line]); case UpLine[CurPos] of + 'C': + if StrLComp(@UpLine[CurPos], 'CONFIGFILE SEARCH: ', 19) = 0 then + begin + // skip keywords + Inc(CurPos, 19); + Filename:=ExpFile(SetDirSeparators(copy(Line,CurPos,length(Line)))); + ConfigFiles.Add('-'+Filename); + end else if StrLComp(@UpLine[CurPos], 'COMPILER: ', 10) = 0 then begin + // skip keywords + Inc(CurPos, 10); + RealCompilerFilename:=ExpFile(copy(Line,CurPos,length(Line))); + end; + 'E': + if StrLComp(@UpLine[CurPos], 'ERROR: ', 7) = 0 then begin + inc(CurPos,7); + if RealCompilerFilename='' then begin + p:=Pos(' returned an error exitcode',Line); + if p>0 then + RealCompilerFilename:=copy(Line,CurPos,p-CurPos); + end; + end; 'M': if StrLComp(@UpLine[CurPos], 'MACRO ', 6) = 0 then begin // skip keyword macro @@ -1609,6 +1639,17 @@ DefineSymbol(SymbolName, SymbolValue); end; end; + 'R': + if StrLComp(@UpLine[CurPos], 'READING OPTIONS FROM FILE ', 26) = 0 then + begin + // skip keywords + Inc(CurPos, 26); + Filename:=ExpFile(SetDirSeparators(copy(Line,CurPos,length(Line)))); + if (ConfigFiles.Count>0) + and (ConfigFiles[ConfigFiles.Count-1]='-'+Filename) then + ConfigFiles.Delete(ConfigFiles.Count-1); + ConfigFiles.Add('+'+Filename); + end; 'U': if (StrLComp(@UpLine[CurPos], 'USING UNIT PATH: ', 17) = 0) then begin Inc(CurPos, 17); @@ -1621,29 +1662,6 @@ {$ENDIF} UnitPaths.Add(NewPath); end; - 'C': - if StrLComp(@UpLine[CurPos], 'CONFIGFILE SEARCH: ', 19) = 0 then - begin - // skip keywords - Inc(CurPos, 19); - Filename:=ExpFile(SetDirSeparators(copy(Line,CurPos,length(Line)))); - ConfigFiles.Add('-'+Filename); - end else if StrLComp(@UpLine[CurPos], 'COMPILER: ', 10) = 0 then begin - // skip keywords - Inc(CurPos, 10); - RealCompilerFilename:=ExpFile(copy(Line,CurPos,length(Line))); - end; - 'R': - if StrLComp(@UpLine[CurPos], 'READING OPTIONS FROM FILE ', 26) = 0 then - begin - // skip keywords - Inc(CurPos, 26); - Filename:=ExpFile(SetDirSeparators(copy(Line,CurPos,length(Line)))); - if (ConfigFiles.Count>0) - and (ConfigFiles[ConfigFiles.Count-1]='-'+Filename) then - ConfigFiles.Delete(ConfigFiles.Count-1); - ConfigFiles.Add('+'+Filename); - end; end; end; @@ -1693,7 +1711,7 @@ fs:=TFileStreamUTF8.Create(TestFilename,fmCreate); fs.Free; except - debugln(['RunFPCVerbose unable to create test file "'+TestFilename+'"']); + debugln(['Warning: [RunFPCVerbose] unable to create test file "'+TestFilename+'"']); exit; end; @@ -1708,7 +1726,7 @@ //DebugLn(['RunFPCVerbose ',CompilerFilename,' ',Params,' ',WorkDir]); List:=RunTool(CompilerFilename,Params,WorkDir); if (List=nil) or (List.Count=0) then begin - debugln(['RunFPCVerbose failed: ',CompilerFilename,' ',Params]); + debugln(['Warning: RunFPCVerbose failed: ',CompilerFilename,' ',Params]); exit; end; Result:=ParseFPCVerbose(List,WorkDir,ConfigFiles,RealCompilerFilename, @@ -1720,24 +1738,46 @@ end; function GatherUnitsInSearchPaths(SearchPaths: TStrings; - const OnProgress: TDefinePoolProgress): TStringToStringTree; + const OnProgress: TDefinePoolProgress; CheckFPMkInst: boolean + ): TStringToStringTree; { returns a stringtree, where name is unitname and value is the full file name SearchPaths are searched from last to start first found wins - pas, pp, p wins vs ppu + pas, pp, p replaces ppu + + check for each UnitPath of the form + lib/fpc/<FPCVer>/units/<FPCTarget>/<name>/ + if there is lib/fpc/<FPCVer>/fpmkinst/><FPCTarget>/<name>.fpm + and search line SourcePath=<directory> + and search source files in this directory including subdirectories } + + function SearchPriorPathDelim(var p: integer; const Filename: string): boolean; inline; + begin + repeat + dec(p); + if p<1 then exit(false) + until Filename[p]=PathDelim; + Result:=true; + end; + var i: Integer; Directory: String; - FileCount: Integer; + FileCount, p, EndPos, FPCTargetEndPos: Integer; Abort: boolean; FileInfo: TSearchRec; ShortFilename: String; Filename: String; Ext: String; - Unit_Name: String; + Unit_Name, PkgName, FPMFilename, FPMSourcePath, Line, SrcFilename: String; + AVLNode: TAVLTreeNode; + S2SItem: PStringToStringTreeItem; + FPMToUnitTree: TStringToPointerTree;// pkgname to TStringToStringTree (unitname to source filename) + sl: TStringListUTF8; + PkgUnitToFilename: TStringToStringTree; begin Result:=TStringToStringTree.Create(false); FileCount:=0; @@ -1770,6 +1810,122 @@ end; FindCloseUTF8(FileInfo); end; + + if CheckFPMkInst then begin + // try to resolve .ppu files via fpmkinst .fpm files + FPMToUnitTree:=nil; + try + AVLNode:=Result.Tree.FindLowest; + while AVLNode<>nil do begin + S2SItem:=PStringToStringTreeItem(AVLNode.Data); + Unit_Name:=S2SItem^.Name; + Filename:=S2SItem^.Value; // trimmed and expanded filename + //if Pos('lazmkunit',Filename)>0 then + // debugln(['GatherUnitsInSearchPaths ===== ',Filename]); + AVLNode:=Result.Tree.FindSuccessor(AVLNode); + if CompareFileExt(Filename,'ppu',false)<>0 then continue; + // check if filename has the form + // /something/lib/fpc/<FPCVer>/units/<FPCTarget>/<pkgname>/ + // and if there is /something/lib/fpc/<FPCVer>/fpmkinst/><FPCTarget>/<pkgname>.fpm + p:=length(Filename); + if not SearchPriorPathDelim(p,Filename) then exit; + // <pkgname> + EndPos:=p; + if not SearchPriorPathDelim(p,Filename) then exit; + PkgName:=copy(Filename,p+1,EndPos-p-1); + if PkgName='' then continue; + FPCTargetEndPos:=p; + if not SearchPriorPathDelim(p,Filename) then exit; + // <fpctarget> + EndPos:=p; + if not SearchPriorPathDelim(p,Filename) then exit; + // 'units' + if (EndPos-p<>6) or (CompareIdentifiers(@Filename[p+1],'units')<>0) then + continue; + FPMFilename:=copy(Filename,1,p)+'fpmkinst' + +copy(Filename,EndPos,FPCTargetEndPos-EndPos+1)+PkgName+'.fpm'; + if FPMToUnitTree=nil then begin + FPMToUnitTree:=TStringToPointerTree.Create(false); + FPMToUnitTree.FreeValues:=true; + end; + if not FPMToUnitTree.Contains(PkgName) then begin + FPMSourcePath:=''; + if FileExistsCached(FPMFilename) then begin + //debugln(['GatherUnitsInSearchPaths Found .fpm: ',FPMFilename]); + sl:=TStringListUTF8.Create; + try + try + sl.LoadFromFile(FPMFilename); + for i:=0 to sl.Count-1 do begin + Line:=sl[i]; + if LeftStr(Line,length('SourcePath='))='SourcePath=' then + begin + FPMSourcePath:=TrimAndExpandDirectory(copy(Line,length('SourcePath=')+1,length(Line))); + break; + end; + end; + except + on E: Exception do + debugln(['Warning: (lazarus) [GatherUnitsInSearchPaths] ',E.Message]); + end; + finally + sl.Free; + end; + end; + if FPMSourcePath<>'' then begin + PkgUnitToFilename:=GatherUnitSourcesInDirectory(FPMSourcePath,5); + FPMToUnitTree[PkgName]:=PkgUnitToFilename; + //debugln(['GatherUnitsInSearchPaths Pkg=',PkgName,' UnitsFound=',PkgUnitToFilename.Count]); + end else + FPMToUnitTree[PkgName]:=nil; // mark as not found + end; + + PkgUnitToFilename:=TStringToStringTree(FPMToUnitTree[PkgName]); + if PkgUnitToFilename=nil then continue; + SrcFilename:=PkgUnitToFilename[Unit_Name]; + if SrcFilename<>'' then begin + // unit source found in fppkg -> replace ppu with src file + //debugln(['GatherUnitsInSearchPaths ppu=',Filename,' -> fppkg src=',SrcFilename]); + Result[Unit_Name]:=SrcFilename; + end; + end; + finally + FPMToUnitTree.Free; + end; + end; +end; + +function GatherUnitSourcesInDirectory(Directory: string; MaxLevel: integer + ): TStringToStringTree; + + procedure Traverse(Dir: string; Tree: TStringToStringTree; Lvl: integer); + var + Info: TSearchRec; + Filename: String; + AnUnitName: String; + begin + if FindFirstUTF8(Dir+AllFilesMask,faAnyFile,Info)=0 then begin + repeat + Filename:=Info.Name; + if (Filename='') or (Filename='.') or (Filename='..') then continue; + if faDirectory and Info.Attr>0 then begin + if Lvl<MaxLevel then + Traverse(Dir+Filename+PathDelim,Tree,Lvl+1); + end else if FilenameIsPascalUnit(Filename) then begin + AnUnitName:=ExtractFileNameOnly(Filename); + if not Tree.Contains(AnUnitName) then + Tree[AnUnitName]:=Dir+Filename; + end; + until FindNextUTF8(Info)<>0; + end; + FindCloseUTF8(Info); + end; + +begin + Result:=TStringToStringTree.Create(false); + if MaxLevel<1 then exit; + Directory:=AppendPathDelim(Directory); + Traverse(Directory,Result,1); end; procedure AdjustFPCSrcRulesForPPUPaths(Units: TStringToStringTree; @@ -2125,7 +2281,7 @@ Ok:=false; try if (FPCSrcDir='') or (not DirPathExists(FPCSrcDir)) then begin - DebugLn(['CreateFPCSrcTemplate FPCSrcDir does not exist: FPCSrcDir="',FPCSrcDir,'"']); + DebugLn(['Warning: [CreateFPCSrcTemplate] FPCSrcDir does not exist: FPCSrcDir="',FPCSrcDir,'"']); exit; end; DS:=PathDelim; @@ -2562,7 +2718,7 @@ end; procedure ParseMakefileFPC(const Filename, SrcOS: string; - var Dirs, SubDirs: string); + out Dirs, SubDirs: string); function MakeSearchPath(const s: string): string; var @@ -2645,7 +2801,7 @@ end; except on e: Exception do begin - debugln('ParseMakefileFPC Filename=',Filename,' E.Message=',E.Message); + debugln('Error: [ParseMakefileFPC] Filename=',Filename,': ',E.Message); end; end; Params.Free; @@ -2774,7 +2930,7 @@ end; procedure SplitLazarusCPUOSWidgetCombo(const Combination: string; - var CPU, OS, WidgetSet: string); + out CPU, OS, WidgetSet: string); var StartPos, EndPos: integer; begin @@ -2836,6 +2992,8 @@ Result:=Result+'ppc64' else if SysUtils.CompareText(TargetCPU,'arm')=0 then Result:=Result+'arm' + else if SysUtils.CompareText(TargetCPU,'avr')=0 then + Result:=Result+'avr' else if SysUtils.CompareText(TargetCPU,'sparc')=0 then Result:=Result+'sparc' else if SysUtils.CompareText(TargetCPU,'x86_64')=0 then @@ -2903,10 +3061,25 @@ aList.Add('mips32'); aList.Add('mips32r2'); end; + + procedure AVR; + begin + aList.Add('AVR1'); + aList.Add('AVR2'); + aList.Add('AVR25'); + aList.Add('AVR3'); + aList.Add('AVR31'); + aList.Add('AVR35'); + aList.Add('AVR4'); + aList.Add('AVR5'); + aList.Add('AVR51'); + aList.Add('AVR6'); + end; begin case TargetCPU of 'arm' : Arm; + 'avr' : AVR; 'i386' : Intel_i386; 'm68k' : ; 'powerpc': PowerPC; @@ -3906,8 +4079,8 @@ end; Result:=(SrcNode=nil) and (DestNode=nil); if not Result then begin - DebugLn('TDefineTemplate.IsEqual DIFF 3 ',Name,' ', - ADefineTemplate.Name,' ',dbgs(ChildCount),' ',dbgs(ADefineTemplate.ChildCount)); + //DebugLn('TDefineTemplate.IsEqual DIFF 3 ',Name,' ', + // ADefineTemplate.Name,' ',dbgs(ChildCount),' ',dbgs(ADefineTemplate.ChildCount)); end; end; end; @@ -5229,7 +5402,7 @@ Result:=nil; //DebugLn('TDefinePool.CreateFPCTemplate PPC386Path="',CompilerPath,'" FPCOptions="',CompilerOptions,'"'); if TestPascalFile='' then begin - DebugLn(['WARNING: TDefinePool.CreateFPCTemplate TestPascalFile empty']); + DebugLn(['Warning: [TDefinePool.CreateFPCTemplate] TestPascalFile empty']); end; UnitSearchPath:=''; TargetOS:=''; @@ -5248,7 +5421,7 @@ if CompilerOptions<>'' then CmdLine:=CmdLine+CompilerOptions+' '; CmdLine:=CmdLine+TestPascalFile; - DebugLn('TDefinePool.CreateFPCTemplate CmdLine="',CmdLine,'"'); + //DebugLn('TDefinePool.CreateFPCTemplate CmdLine="',CmdLine,'"'); TheProcess := TProcessUTF8.Create(nil); TheProcess.CommandLine := CmdLine; @@ -5385,7 +5558,7 @@ end; except on E: Exception do begin - DebugLn('ERROR: TDefinePool.CreateFPCTemplate (',Step,'): ',E.Message); + DebugLn('Error: TDefinePool.CreateFPCTemplate (',Step,'): ',E.Message); end; end; if Result<>nil then @@ -5397,7 +5570,7 @@ var p: Integer; - function ReadInt(const VarName: string; var AnInteger: integer): boolean; + function ReadInt(const VarName: string; out AnInteger: integer): boolean; var StartPos: Integer; begin @@ -5846,8 +6019,8 @@ else DebugLn('MISSING'); {$ELSE} - if UnitLink=nil then - DebugLn(['WARNING: unable to find source of fpc unit ',AnUnitName]); + if (UnitLink=nil) and (CTConsoleVerbosity>=0) then + DebugLn(['Warning: unable to find source of fpc unit ',AnUnitName]); {$ENDIF} if UnitLink=nil then exit; s:=AnUnitName+' '+UnitLink.Filename+LineEnding; @@ -5983,7 +6156,7 @@ DebugLn('CreateFPCSrcTemplate ',FPCSrcDir,': length(UnitSearchPath)=',DbgS(length(UnitSearchPath)),' Valid=',DbgS(UnitLinkListValid),' PPUExt=',PPUExt); {$ENDIF} if UnitSearchPath='' then begin - DebugLn(['Note: TDefinePool.CreateFPCSrcTemplate UnitSearchPath empty']); + DebugLn(['Note: [TDefinePool.CreateFPCSrcTemplate] UnitSearchPath empty']); end; Result:=nil; ProgressID:=0; @@ -5998,7 +6171,7 @@ DefaultSrcOS2:=GetDefaultSrcOS2ForTargetOS(DefaultTargetOS); if (FPCSrcDir='') or (not DirPathExists(FPCSrcDir)) then begin - DebugLn(['TDefinePool.CreateFPCSrcTemplate FPCSrcDir does not exist: FPCSrcDir="',FPCSrcDir,'"']); + DebugLn(['Warning: [TDefinePool.CreateFPCSrcTemplate] FPCSrcDir does not exist: FPCSrcDir="',FPCSrcDir,'" (env FPCDIR)']); exit; end; // try to find for every reachable ppu file the unit file in the FPC sources @@ -6646,7 +6819,7 @@ controllerunitstr: string[20]; end; const - ControllerTypes: array[0..302] of TControllerType = + ControllerTypes: array[0..430] of TControllerType = ((controllertypestr:''; controllerunitstr:''), (controllertypestr:'LPC810M021FN8'; controllerunitstr:'LPC8xx'), (controllertypestr:'LPC811M001FDH16'; controllerunitstr:'LPC8xx'), @@ -6654,75 +6827,75 @@ (controllertypestr:'LPC812M101FD20'; controllerunitstr:'LPC8xx'), (controllertypestr:'LPC812M101FDH20'; controllerunitstr:'LPC8xx'), (controllertypestr:'LPC1110FD20'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1111FDH20/002'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1111FHN33/101'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1111FHN33/102'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1111FHN33/103'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1111FHN33/201'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1111FHN33/202'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1111FHN33/203'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FD20/102'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FDH20/102'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FDH28/102'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHN33/101'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHN33/102'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHN33/103'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHN33/201'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHN24/202'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHN33/202'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHN33/203'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHI33/202'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1112FHI33/203'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FHN33/201'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FHN33/202'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FHN33/203'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FHN33/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FHN33/302'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FHN33/303'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FBD48/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FBD48/302'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1113FBD48/303'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FDH28/102'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FN28/102'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHN33/201'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHN33/202'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHN33/203'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHN33/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHN33/302'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHN33/303'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHN33/333'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHI33/302'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FHI33/303'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FBD48/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FBD48/302'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FBD48/303'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FBD48/323'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1114FBD48/333'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1115FBD48/303'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC11C12FBD48/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC11C14FBD48/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC11C22FBD48/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC11C24FBD48/301'; controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC11D14FBD100/302';controllerunitstr:'LPC11XX'), - (controllertypestr:'LPC1224FBD48/101'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1224FBD48/121'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1224FBD64/101'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1224FBD64/121'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1225FBD48/301'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1225FBD48/321'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1225FBD64/301'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1225FBD64/321'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1226FBD48/301'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1226FBD64/301'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1227FBD48/301'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC1227FBD64/301'; controllerunitstr:'LPC122X'), - (controllertypestr:'LPC12D27FBD100/301';controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1111FDH20_002'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1111FHN33_101'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1111FHN33_102'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1111FHN33_103'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1111FHN33_201'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1111FHN33_202'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1111FHN33_203'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FD20_102'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FDH20_102'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FDH28_102'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHN33_101'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHN33_102'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHN33_103'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHN33_201'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHN24_202'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHN33_202'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHN33_203'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHI33_202'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1112FHI33_203'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FHN33_201'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FHN33_202'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FHN33_203'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FHN33_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FHN33_302'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FHN33_303'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FBD48_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FBD48_302'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1113FBD48_303'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FDH28_102'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FN28_102'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHN33_201'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHN33_202'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHN33_203'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHN33_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHN33_302'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHN33_303'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHN33_333'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHI33_302'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FHI33_303'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FBD48_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FBD48_302'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FBD48_303'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FBD48_323'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1114FBD48_333'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1115FBD48_303'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC11C12FBD48_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC11C14FBD48_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC11C22FBD48_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC11C24FBD48_301'; controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC11D14FBD100_302';controllerunitstr:'LPC11XX'), + (controllertypestr:'LPC1224FBD48_101'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1224FBD48_121'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1224FBD64_101'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1224FBD64_121'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1225FBD48_301'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1225FBD48_321'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1225FBD64_301'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1225FBD64_321'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1226FBD48_301'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1226FBD64_301'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1227FBD48_301'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC1227FBD64_301'; controllerunitstr:'LPC122X'), + (controllertypestr:'LPC12D27FBD100_301';controllerunitstr:'LPC122X'), (controllertypestr:'LPC1311FHN33'; controllerunitstr:'LPC13XX'), - (controllertypestr:'LPC1311FHN33/01'; controllerunitstr:'LPC13XX'), + (controllertypestr:'LPC1311FHN33_01'; controllerunitstr:'LPC13XX'), (controllertypestr:'LPC1313FHN33'; controllerunitstr:'LPC13XX'), - (controllertypestr:'LPC1313FHN33/01'; controllerunitstr:'LPC13XX'), + (controllertypestr:'LPC1313FHN33_01'; controllerunitstr:'LPC13XX'), (controllertypestr:'LPC1313FBD48'; controllerunitstr:'LPC13XX'), - (controllertypestr:'LPC1313FBD48/01'; controllerunitstr:'LPC13XX'), + (controllertypestr:'LPC1313FBD48_01'; controllerunitstr:'LPC13XX'), (controllertypestr:'LPC1315FHN33'; controllerunitstr:'LPC13XX'), (controllertypestr:'LPC1315FBD48'; controllerunitstr:'LPC13XX'), (controllertypestr:'LPC1316FHN33'; controllerunitstr:'LPC13XX'), @@ -6754,6 +6927,28 @@ (controllertypestr:'AT91SAM7SE256'; controllerunitstr:'AT91SAM7x256'), (controllertypestr:'AT91SAM7X256'; controllerunitstr:'AT91SAM7x256'), (controllertypestr:'AT91SAM7XC256'; controllerunitstr:'AT91SAM7x256'), + (controllertypestr:'STM32F030C6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F030C8'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F030F4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F030K6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F030R8'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050C4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050C6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050F4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050F6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050G4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050G6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050K4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F050K6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051C4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051C6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051C8'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051K4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051K6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051K8'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051R4'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051R6'; controllerunitstr:'STM32F0XX'), + (controllertypestr:'STM32F051R8'; controllerunitstr:'STM32F0XX'), (controllertypestr:'STM32F100X4'; controllerunitstr:'STM32F10X_LD'), (controllertypestr:'STM32F100X6'; controllerunitstr:'STM32F10X_LD'), (controllertypestr:'STM32F100X8'; controllerunitstr:'STM32F10X_MD'), @@ -6786,6 +6981,25 @@ (controllertypestr:'STM32F107X8'; controllerunitstr:'STM32F10X_CONN'), (controllertypestr:'STM32F107XB'; controllerunitstr:'STM32F10X_CONN'), (controllertypestr:'STM32F107XC'; controllerunitstr:'STM32F10X_CONN'), + (controllertypestr:'STM32F105R8'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F105RB'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F105RC'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F105V8'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F105VB'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F105VC'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F107RB'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F107RC'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F107VB'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F107VC'; controllerunitstr:'STM32F10X_CL'), + (controllertypestr:'STM32F429XE'; controllerunitstr:'STM32F429'), + (controllertypestr:'STM32F429XG'; controllerunitstr:'STM32F429'), + (controllertypestr:'STM32F429XI'; controllerunitstr:'STM32F429'), + (controllertypestr:'STM32F745XE'; controllerunitstr:'STM32F745'), + (controllertypestr:'STM32F745XG'; controllerunitstr:'STM32F745'), + (controllertypestr:'STM32F746XE'; controllerunitstr:'STM32F746'), + (controllertypestr:'STM32F746XG'; controllerunitstr:'STM32F746'), + (controllertypestr:'STM32F756XE'; controllerunitstr:'STM32F756'), + (controllertypestr:'STM32F756XG'; controllerunitstr:'STM32F756'), (controllertypestr:'LM3S1110'; controllerunitstr:'LM3FURY'), (controllertypestr:'LM3S1133'; controllerunitstr:'LM3FURY'), (controllertypestr:'LM3S1138'; controllerunitstr:'LM3FURY'), @@ -6858,98 +7072,185 @@ (controllertypestr:'XMC4500X768'; controllerunitstr:'XMC4500'), (controllertypestr:'XMC4502X768'; controllerunitstr:'XMC4502'), (controllertypestr:'XMC4504X512'; controllerunitstr:'XMC4504'), + (controllertypestr:'ALLWINNER_A20'; controllerunitstr:'ALLWINNER_A20'), + (controllertypestr:'MK20DX128XXX7'; controllerunitstr:'MK20D7'), + (controllertypestr:'MK20DX256XXX7'; controllerunitstr:'MK20D7'), + (controllertypestr:'MK20DX64XXX7'; controllerunitstr:'MK20D7'), (controllertypestr:'THUMB2_BARE'; controllerunitstr:'THUMB2_BARE'), - (controllertypestr:'PIC32MX110F016B'; controllerunitstr:'PIC32MX110F016B'), - (controllertypestr:'PIC32MX110F016C'; controllerunitstr:'PIC32MX110F016C'), - (controllertypestr:'PIC32MX110F016D'; controllerunitstr:'PIC32MX110F016D'), - (controllertypestr:'PIC32MX120F032B'; controllerunitstr:'PIC32MX120F032B'), - (controllertypestr:'PIC32MX120F032C'; controllerunitstr:'PIC32MX120F032C'), - (controllertypestr:'PIC32MX120F032D'; controllerunitstr:'PIC32MX120F032D'), - (controllertypestr:'PIC32MX130F064B'; controllerunitstr:'PIC32MX130F064B'), - (controllertypestr:'PIC32MX130F064C'; controllerunitstr:'PIC32MX130F064C'), - (controllertypestr:'PIC32MX130F064D'; controllerunitstr:'PIC32MX130F064D'), - (controllertypestr:'PIC32MX150F128B'; controllerunitstr:'PIC32MX150F128B'), - (controllertypestr:'PIC32MX150F128C'; controllerunitstr:'PIC32MX150F128C'), - (controllertypestr:'PIC32MX150F128D'; controllerunitstr:'PIC32MX150F128D'), - (controllertypestr:'PIC32MX170F256B'; controllerunitstr:'PIC32MX170F256B'), - (controllertypestr:'PIC32MX170F256C'; controllerunitstr:'PIC32MX170F256C'), - (controllertypestr:'PIC32MX170F256D'; controllerunitstr:'PIC32MX170F256D'), - (controllertypestr:'PIC32MX210F016B'; controllerunitstr:'PIC32MX210F016B'), - (controllertypestr:'PIC32MX210F016C'; controllerunitstr:'PIC32MX210F016C'), - (controllertypestr:'PIC32MX210F016D'; controllerunitstr:'PIC32MX210F016D'), - (controllertypestr:'PIC32MX220F032B'; controllerunitstr:'PIC32MX220F032B'), - (controllertypestr:'PIC32MX220F032C'; controllerunitstr:'PIC32MX220F032C'), - (controllertypestr:'PIC32MX220F032D'; controllerunitstr:'PIC32MX220F032D'), - (controllertypestr:'PIC32MX230F064B'; controllerunitstr:'PIC32MX230F064B'), - (controllertypestr:'PIC32MX230F064C'; controllerunitstr:'PIC32MX230F064C'), - (controllertypestr:'PIC32MX230F064D'; controllerunitstr:'PIC32MX230F064D'), - (controllertypestr:'PIC32MX250F128B'; controllerunitstr:'PIC32MX250F128B'), - (controllertypestr:'PIC32MX250F128C'; controllerunitstr:'PIC32MX250F128C'), - (controllertypestr:'PIC32MX250F128D'; controllerunitstr:'PIC32MX250F128D'), - (controllertypestr:'PIC32MX270F256B'; controllerunitstr:'PIC32MX270F256B'), - (controllertypestr:'PIC32MX270F256C'; controllerunitstr:'PIC32MX270F256C'), - (controllertypestr:'PIC32MX270F256D'; controllerunitstr:'PIC32MX270F256D'), - (controllertypestr:'PIC32MX320F032H'; controllerunitstr:'PIC32MX320F032H'), - (controllertypestr:'PIC32MX320F064H'; controllerunitstr:'PIC32MX320F064H'), - (controllertypestr:'PIC32MX320F128H'; controllerunitstr:'PIC32MX320F128H'), - (controllertypestr:'PIC32MX320F128L'; controllerunitstr:'PIC32MX320F128L'), - (controllertypestr:'PIC32MX330F064H'; controllerunitstr:'PIC32MX330F064H'), - (controllertypestr:'PIC32MX330F064L'; controllerunitstr:'PIC32MX330F064L'), - (controllertypestr:'PIC32MX340F128H'; controllerunitstr:'PIC32MX340F128H'), - (controllertypestr:'PIC32MX340F128L'; controllerunitstr:'PIC32MX340F128L'), - (controllertypestr:'PIC32MX340F256H'; controllerunitstr:'PIC32MX340F256H'), - (controllertypestr:'PIC32MX340F512H'; controllerunitstr:'PIC32MX340F512H'), - (controllertypestr:'PIC32MX350F128H'; controllerunitstr:'PIC32MX350F128H'), - (controllertypestr:'PIC32MX350F128L'; controllerunitstr:'PIC32MX350F128L'), - (controllertypestr:'PIC32MX350F256H'; controllerunitstr:'PIC32MX350F256H'), - (controllertypestr:'PIC32MX350F256L'; controllerunitstr:'PIC32MX350F256L'), - (controllertypestr:'PIC32MX360F256L'; controllerunitstr:'PIC32MX360F256L'), - (controllertypestr:'PIC32MX360F512L'; controllerunitstr:'PIC32MX360F512L'), - (controllertypestr:'PIC32MX370F512H'; controllerunitstr:'PIC32MX370F512H'), - (controllertypestr:'PIC32MX370F512L'; controllerunitstr:'PIC32MX370F512L'), - (controllertypestr:'PIC32MX420F032H'; controllerunitstr:'PIC32MX420F032H'), - (controllertypestr:'PIC32MX430F064H'; controllerunitstr:'PIC32MX430F064H'), - (controllertypestr:'PIC32MX430F064L'; controllerunitstr:'PIC32MX430F064L'), - (controllertypestr:'PIC32MX440F128H'; controllerunitstr:'PIC32MX440F128H'), - (controllertypestr:'PIC32MX440F128L'; controllerunitstr:'PIC32MX440F128L'), - (controllertypestr:'PIC32MX440F256H'; controllerunitstr:'PIC32MX440F256H'), - (controllertypestr:'PIC32MX440F512H'; controllerunitstr:'PIC32MX440F512H'), - (controllertypestr:'PIC32MX450F128H'; controllerunitstr:'PIC32MX450F128H'), - (controllertypestr:'PIC32MX450F128L'; controllerunitstr:'PIC32MX450F128L'), - (controllertypestr:'PIC32MX450F256H'; controllerunitstr:'PIC32MX450F256H'), - (controllertypestr:'PIC32MX450F256L'; controllerunitstr:'PIC32MX450F256L'), - (controllertypestr:'PIC32MX460F256L'; controllerunitstr:'PIC32MX460F256L'), - (controllertypestr:'PIC32MX460F512L'; controllerunitstr:'PIC32MX460F512L'), - (controllertypestr:'PIC32MX460F512H'; controllerunitstr:'PIC32MX460F512H'), - (controllertypestr:'PIC32MX460F512L'; controllerunitstr:'PIC32MX460F512L'), - (controllertypestr:'PIC32MX534F064H'; controllerunitstr:'PIC32MX534F064H'), - (controllertypestr:'PIC32MX534F064L'; controllerunitstr:'PIC32MX534F064L'), - (controllertypestr:'PIC32MX564F064H'; controllerunitstr:'PIC32MX564F064H'), - (controllertypestr:'PIC32MX564F064L'; controllerunitstr:'PIC32MX564F064L'), - (controllertypestr:'PIC32MX564F128H'; controllerunitstr:'PIC32MX564F128H'), - (controllertypestr:'PIC32MX564F128L'; controllerunitstr:'PIC32MX564F128L'), - (controllertypestr:'PIC32MX575F256H'; controllerunitstr:'PIC32MX575F256H'), - (controllertypestr:'PIC32MX575F256L'; controllerunitstr:'PIC32MX575F256L'), - (controllertypestr:'PIC32MX575F512H'; controllerunitstr:'PIC32MX575F512H'), - (controllertypestr:'PIC32MX575F512L'; controllerunitstr:'PIC32MX575F512L'), - (controllertypestr:'PIC32MX664F064H'; controllerunitstr:'PIC32MX664F064H'), - (controllertypestr:'PIC32MX664F064L'; controllerunitstr:'PIC32MX664F064L'), - (controllertypestr:'PIC32MX664F128H'; controllerunitstr:'PIC32MX664F128H'), - (controllertypestr:'PIC32MX664F128L'; controllerunitstr:'PIC32MX664F128L'), - (controllertypestr:'PIC32MX675F256H'; controllerunitstr:'PIC32MX675F256H'), - (controllertypestr:'PIC32MX675F256L'; controllerunitstr:'PIC32MX675F256L'), - (controllertypestr:'PIC32MX675F512H'; controllerunitstr:'PIC32MX675F512H'), - (controllertypestr:'PIC32MX675F512L'; controllerunitstr:'PIC32MX675F512L'), - (controllertypestr:'PIC32MX695F512H'; controllerunitstr:'PIC32MX695F512H'), - (controllertypestr:'PIC32MX695F512L'; controllerunitstr:'PIC32MX695F512L'), - (controllertypestr:'PIC32MX764F128H'; controllerunitstr:'PIC32MX764F128H'), - (controllertypestr:'PIC32MX764F128L'; controllerunitstr:'PIC32MX764F128L'), - (controllertypestr:'PIC32MX775F256H'; controllerunitstr:'PIC32MX775F256H'), - (controllertypestr:'PIC32MX775F256L'; controllerunitstr:'PIC32MX775F256L'), - (controllertypestr:'PIC32MX775F512H'; controllerunitstr:'PIC32MX775F512H'), - (controllertypestr:'PIC32MX775F512L'; controllerunitstr:'PIC32MX775F512L'), - (controllertypestr:'PIC32MX795F512H'; controllerunitstr:'PIC32MX795F512H'), - (controllertypestr:'PIC32MX795F512L'; controllerunitstr:'PIC32MX795F512L')); + (controllertypestr:'PIC32MX110F016B'; controllerunitstr:'PIC32MX1xxFxxxB'), + (controllertypestr:'PIC32MX110F016C'; controllerunitstr:'PIC32MX1xxFxxxC'), + (controllertypestr:'PIC32MX110F016D'; controllerunitstr:'PIC32MX1xxFxxxD'), + (controllertypestr:'PIC32MX120F032B'; controllerunitstr:'PIC32MX1xxFxxxB'), + (controllertypestr:'PIC32MX120F032C'; controllerunitstr:'PIC32MX1xxFxxxC'), + (controllertypestr:'PIC32MX120F032D'; controllerunitstr:'PIC32MX1xxFxxxD'), + (controllertypestr:'PIC32MX130F064B'; controllerunitstr:'PIC32MX1xxFxxxB'), + (controllertypestr:'PIC32MX130F064C'; controllerunitstr:'PIC32MX1xxFxxxC'), + (controllertypestr:'PIC32MX130F064D'; controllerunitstr:'PIC32MX1xxFxxxD'), + (controllertypestr:'PIC32MX150F128B'; controllerunitstr:'PIC32MX1xxFxxxB'), + (controllertypestr:'PIC32MX150F128C'; controllerunitstr:'PIC32MX1xxFxxxC'), + (controllertypestr:'PIC32MX150F128D'; controllerunitstr:'PIC32MX1xxFxxxD'), + (controllertypestr:'PIC32MX210F016B'; controllerunitstr:'PIC32MX2xxFxxxB'), + (controllertypestr:'PIC32MX210F016C'; controllerunitstr:'PIC32MX2xxFxxxC'), + (controllertypestr:'PIC32MX210F016D'; controllerunitstr:'PIC32MX2xxFxxxD'), + (controllertypestr:'PIC32MX220F032B'; controllerunitstr:'PIC32MX2xxFxxxB'), + (controllertypestr:'PIC32MX220F032C'; controllerunitstr:'PIC32MX2xxFxxxC'), + (controllertypestr:'PIC32MX220F032D'; controllerunitstr:'PIC32MX2xxFxxxD'), + (controllertypestr:'PIC32MX230F064B'; controllerunitstr:'PIC32MX2xxFxxxB'), + (controllertypestr:'PIC32MX230F064C'; controllerunitstr:'PIC32MX2xxFxxxC'), + (controllertypestr:'PIC32MX230F064D'; controllerunitstr:'PIC32MX2xxFxxxD'), + (controllertypestr:'PIC32MX250F128B'; controllerunitstr:'PIC32MX2xxFxxxB'), + (controllertypestr:'PIC32MX250F128C'; controllerunitstr:'PIC32MX2xxFxxxC'), + (controllertypestr:'PIC32MX250F128D'; controllerunitstr:'PIC32MX2xxFxxxD'), + (controllertypestr:'PIC32MX775F256H'; controllerunitstr:'PIC32MX7x5FxxxH'), + (controllertypestr:'PIC32MX775F256L'; controllerunitstr:'PIC32MX7x5FxxxL'), + (controllertypestr:'PIC32MX775F512H'; controllerunitstr:'PIC32MX7x5FxxxH'), + (controllertypestr:'PIC32MX775F512L'; controllerunitstr:'PIC32MX7x5FxxxL'), + (controllertypestr:'PIC32MX795F512H'; controllerunitstr:'PIC32MX7x5FxxxH'), + (controllertypestr:'PIC32MX795F512L'; controllerunitstr:'PIC32MX7x5FxxxL'), + (controllertypestr:'ATMEGA645'; controllerunitstr:'ATMEGA645'), + (controllertypestr:'ATMEGA165A'; controllerunitstr:'ATMEGA165A'), + (controllertypestr:'ATTINY44A'; controllerunitstr:'ATTINY44A'), + (controllertypestr:'ATMEGA649A'; controllerunitstr:'ATMEGA649A'), + (controllertypestr:'ATMEGA32U4'; controllerunitstr:'ATMEGA32U4'), + (controllertypestr:'ATTINY26'; controllerunitstr:'ATTINY26'), + (controllertypestr:'AT90USB1287'; controllerunitstr:'AT90USB1287'), + (controllertypestr:'AT90PWM161'; controllerunitstr:'AT90PWM161'), + (controllertypestr:'ATTINY48'; controllerunitstr:'ATTINY48'), + (controllertypestr:'ATMEGA168P'; controllerunitstr:'ATMEGA168P'), + (controllertypestr:'ATTINY10'; controllerunitstr:'ATTINY10'), + (controllertypestr:'ATTINY84A'; controllerunitstr:'ATTINY84A'), + (controllertypestr:'AT90USB82'; controllerunitstr:'AT90USB82'), + (controllertypestr:'ATTINY2313'; controllerunitstr:'ATTINY2313'), + (controllertypestr:'ATTINY461'; controllerunitstr:'ATTINY461'), + (controllertypestr:'ATMEGA3250PA'; controllerunitstr:'ATMEGA3250PA'), + (controllertypestr:'ATMEGA3290A'; controllerunitstr:'ATMEGA3290A'), + (controllertypestr:'ATMEGA165P'; controllerunitstr:'ATMEGA165P'), + (controllertypestr:'ATTINY43U'; controllerunitstr:'ATTINY43U'), + (controllertypestr:'AT90USB162'; controllerunitstr:'AT90USB162'), + (controllertypestr:'ATMEGA16U4'; controllerunitstr:'ATMEGA16U4'), + (controllertypestr:'ATTINY24A'; controllerunitstr:'ATTINY24A'), + (controllertypestr:'ATMEGA88P'; controllerunitstr:'ATMEGA88P'), + (controllertypestr:'ATTINY88'; controllerunitstr:'ATTINY88'), + (controllertypestr:'ATMEGA6490P'; controllerunitstr:'ATMEGA6490P'), + (controllertypestr:'ATTINY40'; controllerunitstr:'ATTINY40'), + (controllertypestr:'ATMEGA324P'; controllerunitstr:'ATMEGA324P'), + (controllertypestr:'ATTINY167'; controllerunitstr:'ATTINY167'), + (controllertypestr:'ATMEGA328'; controllerunitstr:'ATMEGA328'), + (controllertypestr:'ATTINY861'; controllerunitstr:'ATTINY861'), + (controllertypestr:'ATTINY85'; controllerunitstr:'ATTINY85'), + (controllertypestr:'ATMEGA64M1'; controllerunitstr:'ATMEGA64M1'), + (controllertypestr:'ATMEGA645P'; controllerunitstr:'ATMEGA645P'), + (controllertypestr:'ATMEGA8U2'; controllerunitstr:'ATMEGA8U2'), + (controllertypestr:'ATMEGA329A'; controllerunitstr:'ATMEGA329A'), + (controllertypestr:'ATMEGA8A'; controllerunitstr:'ATMEGA8A'), + (controllertypestr:'ATMEGA324PA'; controllerunitstr:'ATMEGA324PA'), + (controllertypestr:'ATMEGA32HVB'; controllerunitstr:'ATMEGA32HVB'), + (controllertypestr:'AT90PWM316'; controllerunitstr:'AT90PWM316'), + (controllertypestr:'AT90PWM3B'; controllerunitstr:'AT90PWM3B'), + (controllertypestr:'AT90USB646'; controllerunitstr:'AT90USB646'), + (controllertypestr:'ATTINY20'; controllerunitstr:'ATTINY20'), + (controllertypestr:'ATMEGA16'; controllerunitstr:'ATMEGA16'), + (controllertypestr:'ATMEGA48A'; controllerunitstr:'ATMEGA48A'), + (controllertypestr:'ATTINY24'; controllerunitstr:'ATTINY24'), + (controllertypestr:'ATMEGA644'; controllerunitstr:'ATMEGA644'), + (controllertypestr:'ATMEGA1284'; controllerunitstr:'ATMEGA1284'), + (controllertypestr:'ATA6285'; controllerunitstr:'ATA6285'), + (controllertypestr:'AT90CAN64'; controllerunitstr:'AT90CAN64'), + (controllertypestr:'ATMEGA48'; controllerunitstr:'ATMEGA48'), + (controllertypestr:'AT90CAN32'; controllerunitstr:'AT90CAN32'), + (controllertypestr:'ATTINY9'; controllerunitstr:'ATTINY9'), + (controllertypestr:'ATTINY87'; controllerunitstr:'ATTINY87'), + (controllertypestr:'ATMEGA1281'; controllerunitstr:'ATMEGA1281'), + (controllertypestr:'AT90PWM216'; controllerunitstr:'AT90PWM216'), + (controllertypestr:'ATMEGA3250A'; controllerunitstr:'ATMEGA3250A'), + (controllertypestr:'ATMEGA88A'; controllerunitstr:'ATMEGA88A'), + (controllertypestr:'ATMEGA128RFA1'; controllerunitstr:'ATMEGA128RFA1'), + (controllertypestr:'ATMEGA3290PA'; controllerunitstr:'ATMEGA3290PA'), + (controllertypestr:'AT90PWM81'; controllerunitstr:'AT90PWM81'), + (controllertypestr:'ATMEGA325P'; controllerunitstr:'ATMEGA325P'), + (controllertypestr:'ATTINY84'; controllerunitstr:'ATTINY84'), + (controllertypestr:'ATMEGA328P'; controllerunitstr:'ATMEGA328P'), + (controllertypestr:'ATTINY13A'; controllerunitstr:'ATTINY13A'), + (controllertypestr:'ATMEGA8'; controllerunitstr:'ATMEGA8'), + (controllertypestr:'ATMEGA1284P'; controllerunitstr:'ATMEGA1284P'), + (controllertypestr:'ATMEGA16U2'; controllerunitstr:'ATMEGA16U2'), + (controllertypestr:'ATTINY45'; controllerunitstr:'ATTINY45'), + (controllertypestr:'ATMEGA3250'; controllerunitstr:'ATMEGA3250'), + (controllertypestr:'ATMEGA329'; controllerunitstr:'ATMEGA329'), + (controllertypestr:'ATMEGA32A'; controllerunitstr:'ATMEGA32A'), + (controllertypestr:'ATTINY5'; controllerunitstr:'ATTINY5'), + (controllertypestr:'AT90CAN128'; controllerunitstr:'AT90CAN128'), + (controllertypestr:'ATMEGA6490'; controllerunitstr:'ATMEGA6490'), + (controllertypestr:'ATMEGA8515'; controllerunitstr:'ATMEGA8515'), + (controllertypestr:'ATMEGA88PA'; controllerunitstr:'ATMEGA88PA'), + (controllertypestr:'ATMEGA168A'; controllerunitstr:'ATMEGA168A'), + (controllertypestr:'ATMEGA128'; controllerunitstr:'ATMEGA128'), + (controllertypestr:'AT90USB1286'; controllerunitstr:'AT90USB1286'), + (controllertypestr:'ATMEGA164PA'; controllerunitstr:'ATMEGA164PA'), + (controllertypestr:'ATTINY828'; controllerunitstr:'ATTINY828'), + (controllertypestr:'ATMEGA88'; controllerunitstr:'ATMEGA88'), + (controllertypestr:'ATMEGA645A'; controllerunitstr:'ATMEGA645A'), + (controllertypestr:'ATMEGA3290P'; controllerunitstr:'ATMEGA3290P'), + (controllertypestr:'ATMEGA644P'; controllerunitstr:'ATMEGA644P'), + (controllertypestr:'ATMEGA164A'; controllerunitstr:'ATMEGA164A'), + (controllertypestr:'ATTINY4313'; controllerunitstr:'ATTINY4313'), + (controllertypestr:'ATMEGA162'; controllerunitstr:'ATMEGA162'), + (controllertypestr:'ATMEGA32C1'; controllerunitstr:'ATMEGA32C1'), + (controllertypestr:'ATMEGA128A'; controllerunitstr:'ATMEGA128A'), + (controllertypestr:'ATMEGA324A'; controllerunitstr:'ATMEGA324A'), + (controllertypestr:'ATTINY13'; controllerunitstr:'ATTINY13'), + (controllertypestr:'ATMEGA2561'; controllerunitstr:'ATMEGA2561'), + (controllertypestr:'ATMEGA169A'; controllerunitstr:'ATMEGA169A'), + (controllertypestr:'ATTINY261'; controllerunitstr:'ATTINY261'), + (controllertypestr:'ATMEGA644A'; controllerunitstr:'ATMEGA644A'), + (controllertypestr:'ATMEGA3290'; controllerunitstr:'ATMEGA3290'), + (controllertypestr:'ATMEGA64A'; controllerunitstr:'ATMEGA64A'), + (controllertypestr:'ATMEGA169P'; controllerunitstr:'ATMEGA169P'), + (controllertypestr:'ATMEGA2560'; controllerunitstr:'ATMEGA2560'), + (controllertypestr:'ATMEGA32'; controllerunitstr:'ATMEGA32'), + (controllertypestr:'ATTINY861A'; controllerunitstr:'ATTINY861A'), + (controllertypestr:'ATTINY28'; controllerunitstr:'ATTINY28'), + (controllertypestr:'ATMEGA48P'; controllerunitstr:'ATMEGA48P'), + (controllertypestr:'ATMEGA8535'; controllerunitstr:'ATMEGA8535'), + (controllertypestr:'ATMEGA168PA'; controllerunitstr:'ATMEGA168PA'), + (controllertypestr:'ATMEGA16M1'; controllerunitstr:'ATMEGA16M1'), + (controllertypestr:'ATMEGA16HVB'; controllerunitstr:'ATMEGA16HVB'), + (controllertypestr:'ATMEGA164P'; controllerunitstr:'ATMEGA164P'), + (controllertypestr:'ATMEGA325A'; controllerunitstr:'ATMEGA325A'), + (controllertypestr:'ATMEGA640'; controllerunitstr:'ATMEGA640'), + (controllertypestr:'ATMEGA6450'; controllerunitstr:'ATMEGA6450'), + (controllertypestr:'ATMEGA329P'; controllerunitstr:'ATMEGA329P'), + (controllertypestr:'ATA6286'; controllerunitstr:'ATA6286'), + (controllertypestr:'AT90USB647'; controllerunitstr:'AT90USB647'), + (controllertypestr:'ATMEGA168'; controllerunitstr:'ATMEGA168'), + (controllertypestr:'ATMEGA6490A'; controllerunitstr:'ATMEGA6490A'), + (controllertypestr:'ATMEGA32M1'; controllerunitstr:'ATMEGA32M1'), + (controllertypestr:'ATMEGA64C1'; controllerunitstr:'ATMEGA64C1'), + (controllertypestr:'ATMEGA32U2'; controllerunitstr:'ATMEGA32U2'), + (controllertypestr:'ATTINY4'; controllerunitstr:'ATTINY4'), + (controllertypestr:'ATMEGA644PA'; controllerunitstr:'ATMEGA644PA'), + (controllertypestr:'AT90PWM1'; controllerunitstr:'AT90PWM1'), + (controllertypestr:'ATTINY44'; controllerunitstr:'ATTINY44'), + (controllertypestr:'ATMEGA325PA'; controllerunitstr:'ATMEGA325PA'), + (controllertypestr:'ATMEGA6450A'; controllerunitstr:'ATMEGA6450A'), + (controllertypestr:'ATTINY2313A'; controllerunitstr:'ATTINY2313A'), + (controllertypestr:'ATMEGA329PA'; controllerunitstr:'ATMEGA329PA'), + (controllertypestr:'ATTINY461A'; controllerunitstr:'ATTINY461A'), + (controllertypestr:'ATMEGA6450P'; controllerunitstr:'ATMEGA6450P'), + (controllertypestr:'ATMEGA64'; controllerunitstr:'ATMEGA64'), + (controllertypestr:'ATMEGA165PA'; controllerunitstr:'ATMEGA165PA'), + (controllertypestr:'ATMEGA16A'; controllerunitstr:'ATMEGA16A'), + (controllertypestr:'ATMEGA649'; controllerunitstr:'ATMEGA649'), + (controllertypestr:'ATMEGA1280'; controllerunitstr:'ATMEGA1280'), + (controllertypestr:'AT90PWM2B'; controllerunitstr:'AT90PWM2B'), + (controllertypestr:'ATMEGA649P'; controllerunitstr:'ATMEGA649P'), + (controllertypestr:'ATMEGA3250P'; controllerunitstr:'ATMEGA3250P'), + (controllertypestr:'ATMEGA48PA'; controllerunitstr:'ATMEGA48PA'), + (controllertypestr:'ATTINY1634'; controllerunitstr:'ATTINY1634'), + (controllertypestr:'ATMEGA325'; controllerunitstr:'ATMEGA325'), + (controllertypestr:'ATMEGA169PA'; controllerunitstr:'ATMEGA169PA'), + (controllertypestr:'ATTINY261A'; controllerunitstr:'ATTINY261A'), + (controllertypestr:'ATTINY25'; controllerunitstr:'ATTINY25')); var i: integer; @@ -7529,7 +7830,7 @@ SubPath:=Path+'Defines/Macro'+IntToStr(i)+'/'; DefineName:=UpperCaseStr(XMLConfig.GetValue(SubPath+'Name','')); if (DefineName='') or (not IsValidIdent(DefineName)) then begin - DebugLn(['TFPCTargetConfigCache.LoadFromXMLConfig invalid define name ',DefineName]); + DebugLn(['Warning: [TFPCTargetConfigCache.LoadFromXMLConfig] invalid define name ',DefineName]); continue; end; DefineValue:=XMLConfig.GetValue(SubPath+'Value',''); @@ -7591,7 +7892,7 @@ Filename:=TrimFilename(UnitList[i]); Unit_Name:=ExtractFileNameOnly(Filename); if (Unit_Name='') or not IsValidIdent(Unit_Name) then begin - DebugLn(['TFPCTargetConfigCache.LoadFromXMLConfig invalid unitname: ',s]); + DebugLn(['Warning: [TFPCTargetConfigCache.LoadFromXMLConfig] invalid unitname: ',s]); continue; end; if Units=nil then @@ -7749,18 +8050,21 @@ begin Result:=true; if (not FileExistsCached(Compiler)) then begin - debugln(['TFPCTargetConfigCache.NeedsUpdate TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" compiler file missing "',Compiler,'"']); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCTargetConfigCache.NeedsUpdate] TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" compiler file missing "',Compiler,'"']); exit; end; if (FileAgeCached(Compiler)<>CompilerDate) then begin - debugln(['TFPCTargetConfigCache.NeedsUpdate TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" compiler file changed "',Compiler,'" FileAge=',FileAgeCached(Compiler),' StoredAge=',CompilerDate]); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCTargetConfigCache.NeedsUpdate] TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" compiler file changed "',Compiler,'" FileAge=',FileAgeCached(Compiler),' StoredAge=',CompilerDate]); exit; end; if (RealCompiler<>'') and (CompareFilenames(RealCompiler,Compiler)<>0) then begin if (not FileExistsCached(RealCompiler)) or (FileAgeCached(RealCompiler)<>RealCompilerDate) then begin - debugln(['TFPCTargetConfigCache.NeedsUpdate TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" real compiler file changed "',RealCompiler,'"']); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCTargetConfigCache.NeedsUpdate] TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" real compiler file changed "',RealCompiler,'"']); exit; end; end; @@ -7768,18 +8072,21 @@ // and that is the RealCompiler AFilename:=FindRealCompilerInPath(TargetCPU,true); if RealCompilerInPath<>AFilename then begin - debugln(['TFPCTargetConfigCache.NeedsUpdate TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" real compiler in PATH changed from "',RealCompilerInPath,'" to "',AFilename,'"']); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCTargetConfigCache.NeedsUpdate] TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" real compiler in PATH changed from "',RealCompilerInPath,'" to "',AFilename,'"']); exit; end; for i:=0 to ConfigFiles.Count-1 do begin Cfg:=ConfigFiles[i]; if (Cfg.Filename='') or (not FilenameIsAbsolute(Cfg.Filename)) then continue; if FileExistsCached(Cfg.Filename)<>Cfg.FileExists then begin - debugln(['TFPCTargetConfigCache.NeedsUpdate TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" config fileexists changed "',Cfg.Filename,'"']); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCTargetConfigCache.NeedsUpdate] TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" config fileexists changed "',Cfg.Filename,'"']); exit; end; if Cfg.FileExists and (FileAgeCached(Cfg.Filename)<>Cfg.FileDate) then begin - debugln(['TFPCTargetConfigCache.NeedsUpdate TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" config file changed "',Cfg.Filename,'"']); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCTargetConfigCache.NeedsUpdate] TargetOS="',TargetOS,'" TargetCPU="',TargetCPU,'" Options="',CompilerOptions,'" config file changed "',Cfg.Filename,'"']); exit; end; end; @@ -7818,6 +8125,8 @@ Info: String; Infos: TFPCInfoStrings; InfoTypes: TFPCInfoTypes; + BaseDir: String; + FullFilename: String; begin OldOptions:=TFPCTargetConfigCache.Create(nil); CfgFiles:=nil; @@ -7826,10 +8135,12 @@ OldOptions.Assign(Self); Clear; - debugln(['TFPCTargetConfigCache.Update ',Compiler,' TargetOS=',TargetOS,' TargetCPU=',TargetCPU,' CompilerOptions=',CompilerOptions,' ExtraOptions=',ExtraOptions,' PATH=',GetEnvironmentVariableUTF8('PATH')]); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCTargetConfigCache.NeedsUpdate] ',Compiler,' TargetOS=',TargetOS,' TargetCPU=',TargetCPU,' CompilerOptions=',CompilerOptions,' ExtraOptions=',ExtraOptions,' PATH=',GetEnvironmentVariableUTF8('PATH')]); CompilerDate:=FileAgeCached(Compiler); if FileExistsCached(Compiler) then begin ExtraOptions:=GetFPCInfoCmdLineOptions(ExtraOptions); + BaseDir:=''; // get version and real OS and CPU InfoTypes:=[fpciTargetOS,fpciTargetProcessor,fpciFullVersion]; @@ -7858,8 +8169,10 @@ // store the real compiler file and date if (RealCompiler<>'') and FileExistsCached(RealCompiler) then begin RealCompilerDate:=FileAgeCached(RealCompiler); - end else - debugln(['TFPCTargetConfigCache.Update WARNING: compiler is broken: Compiler="'+Compiler+'" Options="'+ExtraOptions+'" RealCompiler="',RealCompiler,'"']); + end else begin + if CTConsoleVerbosity>=-1 then + debugln(['Warning: [TFPCTargetConfigCache.Update] invalid compiler: Compiler="'+Compiler+'" Options="'+ExtraOptions+'" RealCompiler="',RealCompiler,'"']); + end; // store the list of tried and read cfg files if CfgFiles<>nil then for i:=0 to CfgFiles.Count-1 do begin @@ -7867,16 +8180,23 @@ if Filename='' then continue; CfgFileExists:=Filename[1]='+'; Filename:=copy(Filename,2,length(Filename)); + FullFilename:=LazFileUtils.ExpandFileNameUTF8(TrimFileName(Filename),BaseDir); + if CfgFileExists<>FileExistsCached(FullFilename) then begin + debugln(['Warning: [TFPCTargetConfigCache.Update] fpc found cfg a file, the IDE did not: "',Filename,'"']); + CfgFileExists:=not CfgFileExists; + end; CfgFileDate:=0; if CfgFileExists then CfgFileDate:=FileAgeCached(Filename); ConfigFiles.Add(Filename,CfgFileExists,CfgFileDate); end; // gather all units in all unit search paths - if (UnitPaths<>nil) and (UnitPaths.Count>0) then - Units:=GatherUnitsInSearchPaths(UnitPaths,OnProgress) + if (UnitPaths<>nil) and (UnitPaths.Count>0) then begin + Units:=GatherUnitsInSearchPaths(UnitPaths,OnProgress,true); + end else begin - debugln(['TFPCTargetConfigCache.Update WARNING: no unit paths: ',Compiler,' ',ExtraOptions]); + if CTConsoleVerbosity>=-1 then + debugln(['Warning: [TFPCTargetConfigCache.Update] no unit paths: ',Compiler,' ',ExtraOptions]); Units:=TStringToStringTree.Create(false); end; // check if the system ppu exists @@ -7885,7 +8205,8 @@ // check for changes if not Equals(OldOptions) then begin IncreaseChangeStamp; - debugln(['TFPCTargetConfigCache.Update: has changed']); + if CTConsoleVerbosity>=0 then + debugln(['Hint: [TFPCTargetConfigCache.Update] has changed']); end; Result:=true; finally @@ -8476,7 +8797,8 @@ or ((Files=nil)<>(OldFiles=nil)) or ((Files<>nil) and (Files.Text<>OldFiles.Text)) then begin IncreaseChangeStamp; - debugln(['TFPCSourceCache.Update ',Directory,' has changed.']); + if CTConsoleVerbosity>0 then + debugln(['Hint: [TFPCSourceCache.Update] ',Directory,' has changed.']); end; finally OldFiles.Free; @@ -9137,12 +9459,13 @@ begin Result:=''; {$IFDEF ShowTriedUnits} - debugln(['TFPCUnitSetCache.GetUnitSrcFile Unit="',AnUnitName,'" MustHavePPU=',MustHavePPU,' SkipPPUCheckIfNoneExists=',SkipPPUCheckIfNoneExists]); + debugln(['TFPCUnitSetCache.GetUnitSrcFile Unit="',AnUnitName,'" SrcSearchRequiresPPU=',SrcSearchRequiresPPU,' SkipPPUCheckIfTargetIsSourceOnly=',SkipPPUCheckIfTargetIsSourceOnly]); {$ENDIF} Tree:=GetUnitToSourceTree(false); ConfigCache:=GetConfigCache(false); if (ConfigCache.Units<>nil) then begin UnitInFPCPath:=ConfigCache.Units[AnUnitName]; + //if Pos('lazmkunit',AnUnitName)>0 then debugln(['TFPCUnitSetCache.GetUnitSrcFile UnitInFPCPath=',UnitInFPCPath]); if (CompareFileExt(UnitInFPCPath,'ppu',false)=0) then begin // there is a ppu end else if UnitInFPCPath<>'' then begin diff -Nru lazarus-1.4.4+dfsg/components/codetools/directivestree.pas lazarus-1.6+dfsg/components/codetools/directivestree.pas --- lazarus-1.4.4+dfsg/components/codetools/directivestree.pas 2014-06-13 22:14:39.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/directivestree.pas 2015-07-07 11:43:38.000000000 +0000 @@ -37,9 +37,8 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, FileProcs, CodeToolsStructs, BasicCodeTools, - KeywordFuncLists, LinkScanner, CodeAtom, CodeCache, AVL_Tree, - ExprEval, CodeTree; + Classes, SysUtils, FileProcs, LazFileUtils, + BasicCodeTools, KeywordFuncLists, CodeCache, AVL_Tree, ExprEval, CodeTree; type TCompilerDirectiveNodeDesc = word; @@ -734,6 +733,7 @@ if AtomIs(')') then begin ToPos:=SrcPos; DebugLn(['TCompilerDirectivesTree.CheckAndImproveExpr_Brackets removing unneeded brackets']); + Changed:=true; Replace(FromPos,ToPos,GetIdentifier(@Src[NameStart])); MoveCursorToPos(FromPos); end; @@ -1830,7 +1830,7 @@ end; procedure CheckMacroInExpression(Node: TCodeTreeNode; NameStart: integer; - Complex: boolean; var Changed: boolean); + Complex: boolean; var {%H-}Changed: boolean); var MacroNode: TCompilerMacroStats; begin @@ -2313,7 +2313,10 @@ begin if Code=nil then exit('P='+IntToStr(p)); - Result:=Code.Filename; + if WithFilename then + Result:=Code.Filename + else + Result:=''; Code.AbsoluteToLineCol(p,Line,Column); Result+='('+IntToStr(Line)+','+IntToStr(Column)+')'; end; @@ -2579,6 +2582,7 @@ end; end; cdnEnd: exit(false); + else exit(false); end; end; diff -Nru lazarus-1.4.4+dfsg/components/codetools/directorycacher.pas lazarus-1.6+dfsg/components/codetools/directorycacher.pas --- lazarus-1.4.4+dfsg/components/codetools/directorycacher.pas 2014-06-11 18:57:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/directorycacher.pas 2015-11-22 18:40:48.000000000 +0000 @@ -35,8 +35,12 @@ interface uses - Classes, SysUtils, LazUTF8, LazFileCache, LazFileUtils, FileProcs, AVL_Tree, - CodeToolsStructs; + // RTL + FCL + Classes, SysUtils, AVL_Tree, + // CodeTools + CodeToolsStructs, FileProcs, + // LazUtils + LazUTF8, LazFileCache, LazFileUtils, LazUtilities, LazDbgLog; // verbosity { $DEFINE CTDEBUG} @@ -913,6 +917,7 @@ i: Integer; begin Result:=''; + i:=0; if ShortFilename='' then exit; if Directory<>'' then begin case FileCase of @@ -1128,9 +1133,10 @@ if IsAbsolute then begin CurPath:=AppendPathDelim(CurPath); Result:=Pool.FindUnitInDirectory(CurPath,AUnitName,AnyCase); - end else if (CurPath='.') and (Directory='') then begin - Result:=Pool.FindVirtualUnit(AUnitname); - end; + end else if (CurPath='.') and (Directory='') then + Result:=Pool.FindVirtualUnit(AUnitname) + else + Result:=''; if Result<>'' then exit; end; StartPos:=p+1; @@ -1289,6 +1295,8 @@ else UnitSrc:=ctdusPPUNormal; if GetUnitSourceCacheValue(UnitSrc,AnUnitname,Result) then begin + //if AnUnitName='lazmkunit.ppu' then + // debugln(['TCTDirectoryCache.FindCompiledUnitInCompletePath cached ',Result]); // found in cache if Result<>'' then begin // unit found @@ -1302,7 +1310,8 @@ // search in unit path UnitPath:=Strings[ctdcsUnitPath]; Result:=Pool.FindCompiledUnitInPath(Directory,UnitPath,AnUnitname,AnyCase); - //debugln(['TCTDirectoryCache.FindCompiledUnitInCompletePath CurDir="',Directory,'" UnitPath="',UnitPath,'" AnUnitname="',AnUnitname,'" Result=',Result]); + //if AnUnitName='lazmkunit.ppu' then + // debugln(['TCTDirectoryCache.FindCompiledUnitInCompletePath CurDir="',Directory,'" UnitPath="',UnitPath,'" AnUnitname="',AnUnitname,'" Result=',Result]); if Result='' then begin // search in unit set Result:=FindCompiledUnitInUnitSet(AnUnitname); @@ -1794,7 +1803,7 @@ function TCTDirectoryListing.CalcMemSize: PtrUInt; begin Result:=PtrUInt(InstanceSize) - +SizeOf(Pointer)*Count // Starts + {%H-}+SizeOf(Pointer)*Count // Starts +PtrUInt(Size); // Files end; diff -Nru lazarus-1.4.4+dfsg/components/codetools/eventcodetool.pas lazarus-1.6+dfsg/components/codetools/eventcodetool.pas --- lazarus-1.4.4+dfsg/components/codetools/eventcodetool.pas 2014-11-28 15:04:18.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/eventcodetool.pas 2015-10-08 10:09:12.000000000 +0000 @@ -43,8 +43,8 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, TypInfo, FileProcs, CodeToolsStrConsts, CodeTree, CodeAtom, - CodeCache, PascalParserTool, CodeCompletionTool, KeywordFuncLists, + Classes, SysUtils, TypInfo, FileProcs, LazFileUtils, CodeToolsStrConsts, + CodeTree, CodeCache, PascalParserTool, CodeCompletionTool, KeywordFuncLists, BasicCodeTools, LinkScanner, AVL_Tree, CodeToolsStructs, SourceChanger, FindDeclarationTool, ChangeDeclarationTool; @@ -529,9 +529,11 @@ RaiseException('type '+ATypeInfo^.Name+' not found, because tool is '+dbgsname(Tool)); end; -var TypeName: string; +var + TypeName: string; Params: TFindDeclarationParams; TypeContext: TFindContext; + ContextNode: TCodeTreeNode; begin Result:=CleanFindContext; if AStartUnitName<>'' then begin @@ -545,20 +547,19 @@ end; ActivateGlobalWriteLock; - Params:=nil; try // find method type declaration TypeName:=ATypeInfo^.Name; - Params:=TFindDeclarationParams.Create; + // find method in interface and used units + ContextNode:=FindImplementationNode; + if ContextNode=nil then + ContextNode:=FindMainBeginEndNode; + if ContextNode=nil then begin + MoveCursorToNodeStart(Tree.Root); + RaiseException(Format(ctsIdentifierNotFound,[GetIdentifier(@TypeName[1])])); + end; + Params:=TFindDeclarationParams.Create(Self,ContextNode); try - // find method in interface and used units - Params.ContextNode:=FindImplementationNode; - if Params.ContextNode=nil then - Params.ContextNode:=FindMainBeginEndNode; - if Params.ContextNode=nil then begin - MoveCursorToNodeStart(Tree.Root); - RaiseException(Format(ctsIdentifierNotFound,[GetIdentifier(@TypeName[1])])); - end; Params.SetIdentifier(Self,@TypeName[1],nil); Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInParentNodes]; //DebugLn(['TEventsCodeTool.FindMethodTypeInfo TypeName=',TypeName,' MainFilename=',MainFilename]); @@ -572,7 +573,7 @@ finally Params.Free; end; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self,nil); try Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInParentNodes]; Result:=TypeContext.Tool.FindBaseTypeOfNode(Params,TypeContext.Node); @@ -1059,7 +1060,7 @@ exit(true); end; // search in used units - UsesNode:=FindMainUsesSection; + UsesNode:=FindMainUsesNode; if UsesNode=nil then begin debugln(['TEventsCodeTool.FindClassOfInstance no main uses section found']); if ExceptionOnNotFound then RaiseClassNotFound; @@ -1124,11 +1125,10 @@ //debugln(['TEventsCodeTool.FindTypeOfPropertyInfo found: ',FindContextToString(AClassContext)]); // search property - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(AClassContext.Tool, AClassContext.Node); try - Params.Flags:=[fdfSearchInAncestors]; + Params.Flags:=[fdfSearchInAncestors,fdfSearchInHelpers]; if ExceptionOnNotFound then Include(Params.Flags,fdfExceptionOnNotFound); - Params.ContextNode:=AClassContext.Node; Params.SetIdentifier(Self,PChar(PropName),nil); if not AClassContext.Tool.FindIdentifierInContext(Params) then begin RaiseException('property not found '+DbgSName(Instance)+'.'+PropName); @@ -1240,7 +1240,7 @@ Params.Flags:=[fdfSearchInParentNodes, fdfIgnoreCurContextNode] +(fdfGlobals*Params.Flags) - -[fdfSearchInAncestors]; + -[fdfSearchInAncestors,fdfSearchInHelpers]; CurExprType:=GetExpressionTypeOfTypeIdentifier(Params); {$IFDEF VerboseTypeData} DebugLn('[TEventsCodeTool.CreateExprListFromMethodTypeData] B ', diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addclass.lpi lazarus-1.6+dfsg/components/codetools/examples/addclass.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/addclass.lpi 2009-12-03 10:59:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addclass.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,9 +10,11 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <Title Value="AddClass"/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -48,12 +50,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addclass.lpr lazarus-1.6+dfsg/components/codetools/examples/addclass.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/addclass.lpr 2009-12-03 10:28:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addclass.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, - BasicCodeTools, SourceChanger, CodeTree; + SysUtils, CodeCache, CodeToolManager, BasicCodeTools, SourceChanger, CodeTree; var Filename: string; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addeventmethod.lpi lazarus-1.6+dfsg/components/codetools/examples/addeventmethod.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/addeventmethod.lpi 2010-07-28 16:54:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addeventmethod.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="8"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,12 +10,11 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <Title Value="addeventmethod"/> </General> - <VersionInfo> - <StringTable Comments="" CompanyName="" FileDescription="" FileVersion="0.0.0.0" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion="0.0.0.0"/> - </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -54,18 +53,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="9"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> - <LCLWidgetType Value="nogui"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> <Parsing> <SyntaxOptions> <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addeventmethod.lpr lazarus-1.6+dfsg/components/codetools/examples/addeventmethod.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/addeventmethod.lpr 2013-09-18 15:03:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addeventmethod.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, SimpleUnit1, FileProcs, - CodeToolsConfig, CodeCompletionTool; + Classes, SysUtils, CodeCache, CodeToolManager; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addfpprofcalls.lpi lazarus-1.6+dfsg/components/codetools/examples/addfpprofcalls.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/addfpprofcalls.lpi 2013-05-08 15:08:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addfpprofcalls.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -37,7 +37,6 @@ <Unit0> <Filename Value="addfpprofcalls.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="addfpprofcalls"/> </Unit0> <Unit1> <Filename Value="scanexamples/simpleunit1.pas"/> @@ -63,8 +62,5 @@ <AllowLabel Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addfpprofcalls.lpr lazarus-1.6+dfsg/components/codetools/examples/addfpprofcalls.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/addfpprofcalls.lpr 2013-05-08 18:47:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addfpprofcalls.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -31,9 +31,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, CodeAtom, - BasicCodeTools, SourceChanger, CodeTree, - CodeToolsStructs, PascalParserTool; + SysUtils, CodeCache, CodeToolManager, CodeAtom, BasicCodeTools, SourceChanger, + CodeTree, CodeToolsStructs, PascalParserTool; type TMode = (mList,mAdd,mRemove); diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addmethodassign.lpi lazarus-1.6+dfsg/components/codetools/examples/addmethodassign.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/addmethodassign.lpi 2011-04-27 17:51:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addmethodassign.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -35,7 +35,6 @@ <Unit0> <Filename Value="addmethodassign.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="addmethodassign"/> </Unit0> <Unit1> <Filename Value="scanexamples/simpleunit1.pas"/> @@ -55,12 +54,9 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addmethodassign.lpr lazarus-1.6+dfsg/components/codetools/examples/addmethodassign.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/addmethodassign.lpr 2011-05-01 19:24:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addmethodassign.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, AVL_Tree, CodeAtom, - BasicCodeTools, SourceChanger, CodeTree, FindDeclarationTool, AssignExample1; + Classes, SysUtils, AVL_Tree, CodeCache, CodeToolManager, FileProcs, + BasicCodeTools, CodeTree, FindDeclarationTool, AssignExample1; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addmethod.lpi lazarus-1.6+dfsg/components/codetools/examples/addmethod.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/addmethod.lpi 2011-05-02 09:08:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addmethod.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -45,7 +45,7 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> @@ -54,11 +54,5 @@ <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addmethod.lpr lazarus-1.6+dfsg/components/codetools/examples/addmethod.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/addmethod.lpr 2009-12-03 11:29:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addmethod.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, SimpleUnit1, FileProcs, - CodeCompletionTool; + SysUtils, CodeCache, CodeToolManager, CodeCompletionTool, SimpleUnit1; type TMyMethodType = function(Sender: TObject; AValue: integer): string of object; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addwith.lpi lazarus-1.6+dfsg/components/codetools/examples/addwith.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/addwith.lpi 2011-09-07 21:03:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addwith.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -36,25 +36,17 @@ <Unit0> <Filename Value="addwith.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="addwith"/> </Unit0> <Unit1> <Filename Value="scanexamples/addwith1.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="addwith1"/> </Unit1> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/addwith.lpr lazarus-1.6+dfsg/components/codetools/examples/addwith.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/addwith.lpr 2011-09-09 22:32:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/addwith.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, AVL_Tree, CodeAtom, - BasicCodeTools, SourceChanger, CodeTree, FindDeclarationTool, AddWith1; + Classes, SysUtils, CodeCache, CodeToolManager; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/autoindent.lpi lazarus-1.6+dfsg/components/codetools/examples/autoindent.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/autoindent.lpi 2011-05-02 09:08:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/autoindent.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -60,12 +60,6 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Version Value="11"/> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/autoindent.pas lazarus-1.6+dfsg/components/codetools/examples/autoindent.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/autoindent.pas 2009-12-03 10:28:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/autoindent.pas 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, DefineTemplates, CodeToolsConfig, FileProcs, - CodeToolsStructs, CodeToolManager, CodeCache, CodeBeautifier; + SysUtils, CodeToolManager, CodeCache, CodeBeautifier; var Code: TCodeBuffer; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/changeparamlist.lpi lazarus-1.6+dfsg/components/codetools/examples/changeparamlist.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/changeparamlist.lpi 2011-05-04 13:40:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/changeparamlist.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -36,7 +36,6 @@ <Unit0> <Filename Value="changeparamlist.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="changeparamlist"/> </Unit0> <Unit1> <Filename Value="scanexamples/changeparamlist1.pas"/> @@ -46,15 +45,9 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/changeparamlist.lpr lazarus-1.6+dfsg/components/codetools/examples/changeparamlist.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/changeparamlist.lpr 2011-05-04 13:40:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/changeparamlist.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -29,9 +29,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, AVL_Tree, CodeAtom, - BasicCodeTools, SourceChanger, CodeTree, FindDeclarationTool, contnrs, - CTUnitGraph, ChangeDeclarationTool, + Classes, SysUtils, contnrs, CodeCache, CodeToolManager, FileProcs, AVL_Tree, CodeAtom, + SourceChanger, CodeTree, FindDeclarationTool, CTUnitGraph, ChangeDeclarationTool, ChangeParamList1; const diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/codecompletion.lpi lazarus-1.6+dfsg/components/codetools/examples/codecompletion.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/codecompletion.lpi 2013-05-09 13:19:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/codecompletion.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -47,8 +47,5 @@ <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/codecompletion.lpr lazarus-1.6+dfsg/components/codetools/examples/codecompletion.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/codecompletion.lpr 2013-05-09 11:24:39.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/codecompletion.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -29,8 +29,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates, - CodeToolsConfig; + SysUtils, CodeCache, CodeToolManager; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/completeabstractmethods.lpi lazarus-1.6+dfsg/components/codetools/examples/completeabstractmethods.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/completeabstractmethods.lpi 2009-12-03 10:59:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/completeabstractmethods.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,8 +10,10 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -42,12 +44,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/completeabstractmethods.lpr lazarus-1.6+dfsg/components/codetools/examples/completeabstractmethods.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/completeabstractmethods.lpr 2007-12-07 23:16:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/completeabstractmethods.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -29,8 +29,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, CodeTree, CodeAtom, - AbstractClass1; + Classes, SysUtils, CodeCache, CodeToolManager; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/completeblock.lpi lazarus-1.6+dfsg/components/codetools/examples/completeblock.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/completeblock.lpi 2010-10-22 12:44:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/completeblock.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -41,14 +41,11 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="9"/> + <Version Value="11"/> <Parsing> <SyntaxOptions> <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/completeblock.pas lazarus-1.6+dfsg/components/codetools/examples/completeblock.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/completeblock.pas 2010-10-22 12:44:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/completeblock.pas 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, DefineTemplates, CodeToolsConfig, FileProcs, - CodeToolManager, CodeCache; + Classes, SysUtils, DefineTemplates, CodeToolManager, CodeCache; var Code: TCodeBuffer; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/finddeclaration.lpi lazarus-1.6+dfsg/components/codetools/examples/finddeclaration.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/finddeclaration.lpi 2014-03-28 03:33:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/finddeclaration.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -33,7 +33,6 @@ <Unit0> <Filename Value="finddeclaration.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="finddeclaration"/> </Unit0> <Unit1> <Filename Value="scanexamples/simpleunit1.pas"/> @@ -52,7 +51,6 @@ <Unit4> <Filename Value="scanexamples/commentsidentifiers.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="commentsidentifiers"/> </Unit4> </Units> </ProjectOptions> @@ -61,11 +59,5 @@ <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/finddeclaration.lpr lazarus-1.6+dfsg/components/codetools/examples/finddeclaration.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/finddeclaration.lpr 2014-03-28 03:33:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/finddeclaration.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -29,8 +29,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates, FileProcs, - CodeToolsConfig, SimpleUnit1; + SysUtils, CodeCache, CodeToolManager, CodeToolsConfig, + SimpleUnit1; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/findunusedunits.lpi lazarus-1.6+dfsg/components/codetools/examples/findunusedunits.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/findunusedunits.lpi 2009-04-09 12:57:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/findunusedunits.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,16 +1,18 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <LRSInOutputDirectory Value="False"/> </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <Title Value="findunusedunits"/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -31,7 +33,6 @@ <Unit0> <Filename Value="findunusedunits.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="findunusedunits"/> </Unit0> <Unit1> <Filename Value="scanexamples/simpleunit1.pas"/> @@ -46,12 +47,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/findunusedunits.lpr lazarus-1.6+dfsg/components/codetools/examples/findunusedunits.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/findunusedunits.lpr 2009-04-09 12:57:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/findunusedunits.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -29,8 +29,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates, - CodeToolsConfig, SimpleUnit1; + Classes, SysUtils, CodeCache, CodeToolManager, + SimpleUnit1; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/findusedunitreferences.lpi lazarus-1.6+dfsg/components/codetools/examples/findusedunitreferences.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/findusedunitreferences.lpi 2013-09-08 19:19:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/findusedunitreferences.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -33,7 +33,6 @@ <Unit0> <Filename Value="findusedunitreferences.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="findusedunitreferences"/> </Unit0> <Unit1> <Filename Value="scanexamples/simpleunit1.pas"/> @@ -57,8 +56,5 @@ <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/findusedunitreferences.lpr lazarus-1.6+dfsg/components/codetools/examples/findusedunitreferences.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/findusedunitreferences.lpr 2013-09-08 22:47:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/findusedunitreferences.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -35,8 +35,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates, - CodeToolsConfig, FileProcs, usedunitrefs1; + Classes, SysUtils, CodeCache, CodeToolManager, + usedunitrefs1; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/fixdefinitionorder.lpi lazarus-1.6+dfsg/components/codetools/examples/fixdefinitionorder.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/fixdefinitionorder.lpi 2009-12-03 11:10:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/fixdefinitionorder.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,8 +10,10 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -31,31 +33,28 @@ <PackageName Value="CodeTools"/> </Item2> </RequiredPackages> - <Units Count="3"> + <Units Count="2"> <Unit0> <Filename Value="fixdefinitionorder.lpr"/> <IsPartOfProject Value="True"/> <UnitName Value="FixDefinitionOrder"/> </Unit0> <Unit1> - <Filename Value="scanexamples/simplefunctions.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="SimpleFunctions"/> - </Unit1> - <Unit2> <Filename Value="scanexamples/wrongforwarddefinitions.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="WrongForwardDefinitions"/> - </Unit2> + </Unit1> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/fixdefinitionorder.lpr lazarus-1.6+dfsg/components/codetools/examples/fixdefinitionorder.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/fixdefinitionorder.lpr 2007-10-06 18:10:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/fixdefinitionorder.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -31,8 +31,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, CodeTree, - DirectivesTree; + SysUtils, CodeCache, CodeToolManager; var Filename: string; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/fixfilenames.lpi lazarus-1.6+dfsg/components/codetools/examples/fixfilenames.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/fixfilenames.lpi 2013-06-05 20:02:06.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/fixfilenames.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -59,8 +59,5 @@ <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/fixfilenames.pas lazarus-1.6+dfsg/components/codetools/examples/fixfilenames.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/fixfilenames.pas 2013-06-05 20:02:06.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/fixfilenames.pas 2015-07-07 15:35:28.000000000 +0000 @@ -29,8 +29,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, DefineTemplates, CodeToolsConfig, FileProcs, - CodeToolsStructs, CodeToolManager, CodeCache; + Classes, SysUtils, CodeToolsStructs, CodeToolManager, CodeCache; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/fixh2pasdirectives.lpi lazarus-1.6+dfsg/components/codetools/examples/fixh2pasdirectives.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/fixh2pasdirectives.lpi 2009-12-03 11:10:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/fixh2pasdirectives.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,8 +10,10 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -40,12 +42,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/fixh2pasdirectives.lpr lazarus-1.6+dfsg/components/codetools/examples/fixh2pasdirectives.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/fixh2pasdirectives.lpr 2007-11-05 13:12:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/fixh2pasdirectives.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -45,8 +45,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, - CodeTree, DirectivesTree; + Classes, SysUtils, CodeCache, CodeToolManager, DirectivesTree; var Filename: string; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/getcontext.lpi lazarus-1.6+dfsg/components/codetools/examples/getcontext.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/getcontext.lpi 2009-12-03 11:10:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/getcontext.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,15 +1,17 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <LRSInOutputDirectory Value="False"/> </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -40,17 +42,15 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> <Parsing> <SyntaxOptions> <CStyleOperator Value="False"/> + <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/getcontext.lpr lazarus-1.6+dfsg/components/codetools/examples/getcontext.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/getcontext.lpr 2009-12-03 11:10:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/getcontext.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -3,8 +3,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, FileProcs, CodeCache, CodeToolManager, DefineTemplates, - CodeToolsConfig, GetContextExample, IdentCompletionTool, FindDeclarationTool; + SysUtils, CodeCache, CodeToolManager, IdentCompletionTool, FindDeclarationTool; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/getexpandedoperand.lpi lazarus-1.6+dfsg/components/codetools/examples/getexpandedoperand.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/getexpandedoperand.lpi 2011-09-10 18:21:13.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/getexpandedoperand.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -34,7 +34,6 @@ <Unit0> <Filename Value="getexpandedoperand.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="getexpandedoperand"/> </Unit0> <Unit1> <Filename Value="scanexamples/simpleunit1.pas"/> @@ -49,20 +48,13 @@ <Unit3> <Filename Value="scanexamples/getterexample1.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="getterexample1"/> </Unit3> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/getexpandedoperand.pas lazarus-1.6+dfsg/components/codetools/examples/getexpandedoperand.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/getexpandedoperand.pas 2011-09-11 20:57:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/getexpandedoperand.pas 2015-07-07 15:35:28.000000000 +0000 @@ -29,8 +29,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates, FileProcs, - CodeToolsConfig, SimpleUnit1, getterexample1; + SysUtils, CodeCache, CodeToolManager, + SimpleUnit1, getterexample1; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/h2pastest.lpi lazarus-1.6+dfsg/components/codetools/examples/h2pastest.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/h2pastest.lpi 2011-06-26 21:05:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/h2pastest.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -54,7 +54,7 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> @@ -71,11 +71,5 @@ <StackChecks Value="True"/> </Checks> </CodeGeneration> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/h2pastest.lpr lazarus-1.6+dfsg/components/codetools/examples/h2pastest.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/h2pastest.lpr 2011-03-14 12:54:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/h2pastest.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -31,8 +31,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, - CodeAtom, CodeTree, NonPascalCodeTools, CCodeParserTool, + Classes, SysUtils, CodeCache, CodeToolManager, CCodeParserTool, FileProcs, H2PasTool; const diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/identifiercompletion.lpi lazarus-1.6+dfsg/components/codetools/examples/identifiercompletion.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/identifiercompletion.lpi 2011-05-02 09:08:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/identifiercompletion.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -47,12 +47,6 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Version Value="11"/> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/identifiercompletion.lpr lazarus-1.6+dfsg/components/codetools/examples/identifiercompletion.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/identifiercompletion.lpr 2013-09-18 21:29:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/identifiercompletion.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, - CodeToolsConfig, IdentCompletionTool; + SysUtils, CodeCache, CodeToolManager; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/initvariable.lpr lazarus-1.6+dfsg/components/codetools/examples/initvariable.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/initvariable.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/initvariable.lpr 2015-02-16 21:52:05.000000000 +0000 @@ -0,0 +1,111 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Mattias Gaertner + + Abstract: + Simple demonstration, how to setup the codetools to insert a simple + Pascal statement to initialize a variable. +} +program initvariable; + +{$mode objfpc}{$H+} + +uses + Classes, SysUtils, contnrs, CodeCache, CodeToolManager, DefineTemplates, + FileProcs, CodeToolsConfig, CodeToolsStructs, CodeCompletionTool, + StdCodeTools, initvars1; + +const + ConfigFilename = 'codetools.config'; +var + Code: TCodeBuffer; + X: Integer; + Y: Integer; + Filename: String; + Statements: TStrings; + InsertPositions: TObjectList; + InsertPosDesc: TInsertStatementPosDescription; + i: Integer; +begin + if (ParamCount>=1) and (Paramcount<>3) then begin + writeln('Usage:'); + writeln(' ',ParamStr(0)); + writeln(' ',ParamStr(0),' <filename> <X> <Y>'); + end; + + try + CodeToolBoss.SimpleInit(ConfigFilename); + + X:=15; + Y:=21; + Filename:=ExpandFileName('scanexamples'+PathDelim+'initvars1.pas'); + + if (ParamCount>=3) then begin + Filename:=ExpandFileName(ParamStr(1)); + X:=StrToInt(ParamStr(2)); + Y:=StrToInt(ParamStr(3)); + end; + + // Step 1: load the file + Code:=CodeToolBoss.LoadFile(Filename,false,false); + if Code=nil then + raise Exception.Create('loading failed '+Filename); + + // get possible initializations + Statements:=nil; + InsertPositions:=nil; + try + if not CodeToolBoss.GetPossibleInitsForVariable(Code,X,Y,Statements, + InsertPositions) + then begin + writeln('CodeToolBoss.GetPossibleInitsForVariable failed'); + exit; + end; + writeln('Possible initialization statements:'); + writeln(Statements.Text); + writeln('Possible initialization positions:'); + for i:=0 to InsertPositions.Count-1 do begin + InsertPosDesc:=TInsertStatementPosDescription(InsertPositions[i]); + with InsertPosDesc do begin + writeln(CodeXYPos.Code.Filename,'(',CodeXYPos.Y,',',CodeXYPos.X,'): ',Description); + end; + end; + + // insert the first statement at the first position + InsertPosDesc:=TInsertStatementPosDescription(InsertPositions[0]); + if not CodeToolBoss.InsertStatements(InsertPosDesc,Statements[0]) then begin + writeln('CodeToolBoss.InsertStatements failed'); + exit; + end; + writeln('New source (not saved to disk):'); + writeln(Code.Source); + + finally + Statements.Free; + InsertPositions.Free; + end; + except + on E: Exception do begin + writeln('EXCEPTION: '+E.Message); + end; + end; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/listinterfaceclasses.lpi lazarus-1.6+dfsg/components/codetools/examples/listinterfaceclasses.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/listinterfaceclasses.lpi 2009-12-03 11:10:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/listinterfaceclasses.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,15 +1,17 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <LRSInOutputDirectory Value="False"/> </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -35,9 +37,11 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Version Value="11"/> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/listinterfaceclasses.pas lazarus-1.6+dfsg/components/codetools/examples/listinterfaceclasses.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/listinterfaceclasses.pas 2012-04-30 14:13:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/listinterfaceclasses.pas 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeToolManager, CodeCache, CustomCodeTool, CodeTree, - FileProcs; + SysUtils, CodeToolManager, CodeCache, CodeTree; var ExpandedFilename: String; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/methodjumping.lpi lazarus-1.6+dfsg/components/codetools/examples/methodjumping.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/methodjumping.lpi 2011-05-02 09:08:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/methodjumping.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -38,12 +38,6 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Version Value="11"/> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/methodjumping.pas lazarus-1.6+dfsg/components/codetools/examples/methodjumping.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/methodjumping.pas 2011-01-27 18:59:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/methodjumping.pas 2015-07-07 15:35:28.000000000 +0000 @@ -28,7 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeToolManager, CodeCache, CustomCodeTool, FileProcs; + SysUtils, CodeToolManager, CodeCache; var ExpandedFilename: String; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/parsefpcmsg.lpi lazarus-1.6+dfsg/components/codetools/examples/parsefpcmsg.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/parsefpcmsg.lpi 2012-02-05 08:58:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/parsefpcmsg.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -37,7 +37,6 @@ <Unit0> <Filename Value="parsefpcmsg.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="parsefpcmsg"/> </Unit0> <Unit1> <Filename Value="scanexamples/brokenfilenames.pas"/> @@ -61,11 +60,5 @@ </ProjectOptions> <CompilerOptions> <Version Value="11"/> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/parsefpcmsg.pas lazarus-1.6+dfsg/components/codetools/examples/parsefpcmsg.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/parsefpcmsg.pas 2012-02-05 10:46:06.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/parsefpcmsg.pas 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, FileProcs, - CodeToolManager, CodeCache, CodeToolsFPCMsgs; + SysUtils, FileProcs, CodeToolManager, CodeCache, CodeToolsFPCMsgs, + LazFileUtils, LazUTF8; var Code: TCodeBuffer; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/ppudependencies.lpi lazarus-1.6+dfsg/components/codetools/examples/ppudependencies.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/ppudependencies.lpi 2011-05-02 09:08:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/ppudependencies.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -42,12 +42,6 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Version Value="11"/> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/ppudependencies.lpr lazarus-1.6+dfsg/components/codetools/examples/ppudependencies.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/ppudependencies.lpr 2013-06-23 10:33:16.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/ppudependencies.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,7 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, PPUParser, FileProcs, PPUGraph, CodeToolManager; + Classes, SysUtils, FileProcs, PPUGraph, CodeToolManager, LazFileUtils, LazUTF8; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/proctomethod.lpi lazarus-1.6+dfsg/components/codetools/examples/proctomethod.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/proctomethod.lpi 2011-05-02 09:08:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/proctomethod.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -36,7 +36,6 @@ <Unit0> <Filename Value="proctomethod.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="proctomethod"/> </Unit0> <Unit1> <Filename Value="scanexamples/procsandmethods1.pas"/> @@ -46,15 +45,9 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/proctomethod.lpr lazarus-1.6+dfsg/components/codetools/examples/proctomethod.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/proctomethod.lpr 2011-05-02 09:08:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/proctomethod.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,9 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, AVL_Tree, CodeAtom, - BasicCodeTools, SourceChanger, CodeTree, FindDeclarationTool, - ProcsAndMethods1; + SysUtils, CodeCache, CodeToolManager, CodeTree, ProcsAndMethods1; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/reduceifdefs.lpi lazarus-1.6+dfsg/components/codetools/examples/reduceifdefs.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/reduceifdefs.lpi 2009-12-03 11:10:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/reduceifdefs.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,8 +10,10 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -40,12 +42,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/reduceifdefs.lpr lazarus-1.6+dfsg/components/codetools/examples/reduceifdefs.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/reduceifdefs.lpr 2007-11-05 13:12:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/reduceifdefs.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, - CodeTree, DirectivesTree; + SysUtils, CodeCache, CodeToolManager, DirectivesTree; var Filename: string; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/removeemptymethods.lpi lazarus-1.6+dfsg/components/codetools/examples/removeemptymethods.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/removeemptymethods.lpi 2013-09-18 15:05:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/removeemptymethods.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -8,7 +8,8 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <Title Value="finddeclaration"/> + <Title Value="removeemptymethods"/> + <ResourceType Value="res"/> </General> <BuildModes Count="1"> <Item1 Name="default" Default="True"/> @@ -38,7 +39,6 @@ <Unit1> <Filename Value="scanexamples/emptymethods1.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="EmptyMethods1"/> </Unit1> <Unit2> <Filename Value="README.txt"/> @@ -56,8 +56,5 @@ <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/removeemptymethods.lpr lazarus-1.6+dfsg/components/codetools/examples/removeemptymethods.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/removeemptymethods.lpr 2013-09-18 15:05:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/removeemptymethods.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -29,8 +29,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates, FileProcs, - CodeAtom, CodeToolsConfig, CodeToolsStructs, PascalParserTool, + Classes, SysUtils, CodeCache, CodeToolManager, CodeToolsStructs, EmptyMethods1; const diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/removewith.lpi lazarus-1.6+dfsg/components/codetools/examples/removewith.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/removewith.lpi 2011-05-04 13:40:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/removewith.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -36,7 +36,7 @@ <Unit0> <Filename Value="removewith.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="removewith"/> + <UnitName Value="RemoveWith"/> </Unit0> <Unit1> <Filename Value="scanexamples/removewith1.pas"/> @@ -46,15 +46,9 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <SearchPaths> <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/removewith.lpr lazarus-1.6+dfsg/components/codetools/examples/removewith.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/removewith.lpr 2011-05-07 23:10:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/removewith.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, AVL_Tree, CodeAtom, - BasicCodeTools, SourceChanger, CodeTree, FindDeclarationTool, RemoveWith1; + SysUtils, CodeCache, CodeToolManager, LazUTF8, + RemoveWith1; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/replaceresourcedirectives.lpi lazarus-1.6+dfsg/components/codetools/examples/replaceresourcedirectives.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/replaceresourcedirectives.lpi 2009-12-03 11:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/replaceresourcedirectives.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,9 +10,11 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <Title Value="ReplaceResourceDirectives"/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -41,12 +43,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/replaceresourcedirectives.lpr lazarus-1.6+dfsg/components/codetools/examples/replaceresourcedirectives.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/replaceresourcedirectives.lpr 2007-11-26 20:05:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/replaceresourcedirectives.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, - CodeTree, DirectivesTree; + SysUtils, CodeCache, CodeToolManager; var Filename: string; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/retypepublishedvars.lpi lazarus-1.6+dfsg/components/codetools/examples/retypepublishedvars.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/retypepublishedvars.lpi 2010-03-25 21:16:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/retypepublishedvars.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,19 +1,18 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <LRSInOutputDirectory Value="False"/> </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <Title Value="finddeclaration"/> </General> - <VersionInfo> - <StringTable Comments="" CompanyName="" FileDescription="" FileVersion="0.0.0.0" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion="0.0.0.0"/> - </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -34,7 +33,6 @@ <Unit0> <Filename Value="retypepublishedvars.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="retypepublishedvars"/> </Unit0> <Unit1> <Filename Value="scanexamples/emptymethods1.pas"/> @@ -48,12 +46,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/retypepublishedvars.lpr lazarus-1.6+dfsg/components/codetools/examples/retypepublishedvars.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/retypepublishedvars.lpr 2010-03-26 12:24:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/retypepublishedvars.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates, - CodeAtom, CodeToolsConfig, CodeToolsStructs, PascalParserTool; + SysUtils, CodeCache, CodeToolManager, CodeToolsStructs; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/runcfgscript.lpi lazarus-1.6+dfsg/components/codetools/examples/runcfgscript.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/runcfgscript.lpi 2010-11-25 16:20:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/runcfgscript.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -41,14 +41,11 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="9"/> + <Version Value="11"/> <Parsing> <SyntaxOptions> <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/runcfgscript.lpr lazarus-1.6+dfsg/components/codetools/examples/runcfgscript.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/runcfgscript.lpr 2010-11-25 16:20:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/runcfgscript.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,9 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, DefineTemplates, CodeToolsConfig, FileProcs, - CodeToolsStructs, CodeToolManager, CodeCache, CodeBeautifier, - CodeToolsCfgScript; + SysUtils, CodeToolManager, CodeCache, CodeToolsCfgScript, LazFileUtils, LazUTF8; var Code: TCodeBuffer; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/scanexamples/initvars1.pas lazarus-1.6+dfsg/components/codetools/examples/scanexamples/initvars1.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/scanexamples/initvars1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/scanexamples/initvars1.pas 2015-03-01 15:56:55.000000000 +0000 @@ -0,0 +1,54 @@ +unit InitVars1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +implementation + +procedure TestInteger(i: integer); +begin + writeln(i); +end; + +procedure DoSomething; +var + i: integer; +begin + TestInteger(i); +end; + +procedure TestLots({%H-}s: string; {%H-}c: char; {%H-}p: pointer; + {%H-}SignalState: TSignalState; {%H-}ShiftState: TShiftState; + {%H-}HelpCtx: THelpContext; {%H-}Event: TNotifyEvent; {%H-}E: EStreamError; + {%H-}pc: PChar); +begin + +end; + +procedure DoLots; +var + s: string; + c: char; + p: Pointer; + SignalState: TSignalState; + ShiftState: TShiftState; + HelpCtx: THelpContext; + Event: TNotifyEvent; + E: EStreamError; + pc: PChar; +begin + TestLots(s,c,p,SignalState,ShiftState,HelpCtx,Event,E,pc); +end; + +function Func1: integer; +begin + TestInteger(Func1); + TestInteger(Result); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/scanexamples/modemacpas.pas lazarus-1.6+dfsg/components/codetools/examples/scanexamples/modemacpas.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/scanexamples/modemacpas.pas 2007-05-29 23:49:11.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/scanexamples/modemacpas.pas 2015-10-26 21:41:56.000000000 +0000 @@ -11,11 +11,11 @@ {$DEFINE bogus4} {$ifc defined test1} -type aaa1 = integer; +type mmp1 = integer; {$elifc defined test2} -type aaa2 = integer; +type mmp2 = integer; {$elifc defined test3} -type aaa3 = integer; +type mmp3 = integer; {$ifc defined bogus1} type bogus1 = integer; {$elifc defined bogus2} @@ -27,7 +27,7 @@ {$error Neither bogus1 nor bogus2 nor bogus3 are defined.} {$endc} {$elsec} -type aaaELSE = integer; +type mmpELSE = integer; {$error Neither test1 nor test2 nor test3 are defined.} {$endc} diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpi lazarus-1.6+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpi 2014-05-27 19:10:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -41,7 +41,6 @@ <Unit0> <Filename Value="scanfpcerrormsgfiles.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="scanfpcerrormsgfiles"/> </Unit0> </Units> </ProjectOptions> @@ -54,12 +53,6 @@ <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpr lazarus-1.6+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpr 2014-05-27 20:04:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/scanfpcerrormsgfiles.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -10,7 +10,7 @@ {$mode objfpc}{$H+} uses - Classes, sysutils, CodeToolsFPCMsgs, CodeToolsStructs, LazFileUtils; + sysutils, CodeToolsFPCMsgs, CodeToolsStructs, LazFileUtils; procedure WriteUsage; begin diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/setincludepath.lpi lazarus-1.6+dfsg/components/codetools/examples/setincludepath.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/setincludepath.lpi 2009-12-03 11:10:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/setincludepath.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,9 +10,11 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <Title Value="SetIncludePath"/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -38,9 +40,11 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Version Value="11"/> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/setincludepath.pas lazarus-1.6+dfsg/components/codetools/examples/setincludepath.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/setincludepath.pas 2014-03-28 02:43:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/setincludepath.pas 2015-07-07 15:35:28.000000000 +0000 @@ -28,7 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeToolManager, DefineTemplates, FileProcs; + SysUtils, CodeToolManager, DefineTemplates, LazFileUtils; var Directory: String; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/sourcecloser.lpi lazarus-1.6+dfsg/components/codetools/examples/sourcecloser.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/sourcecloser.lpi 2013-08-23 14:59:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/sourcecloser.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -41,7 +41,6 @@ <Unit0> <Filename Value="sourcecloser.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="sourcecloser"/> </Unit0> <Unit1> <Filename Value="testpkg1/create_release.sh"/> @@ -58,12 +57,6 @@ <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/sourcecloser.lpr lazarus-1.6+dfsg/components/codetools/examples/sourcecloser.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/sourcecloser.lpr 2013-09-06 13:54:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/sourcecloser.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -35,7 +35,7 @@ uses Classes, SysUtils, AvgLvlTree, LazLogger, LazFileUtils, Laz2_XMLCfg, LazUTF8, FileProcs, BasicCodeTools, CodeToolManager, CodeCache, SourceChanger, - CodeTree, DefineTemplates, CustApp, contnrs; + CodeTree, DefineTemplates, CustApp; type diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/testexpreval.lpi lazarus-1.6+dfsg/components/codetools/examples/testexpreval.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/testexpreval.lpi 2009-11-26 19:12:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/testexpreval.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,7 +1,7 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> @@ -10,9 +10,11 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <Title Value="testexpreval"/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> @@ -41,12 +43,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <OtherUnitFiles Value="scanexamples/"/> + <OtherUnitFiles Value="scanexamples"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/testexpreval.pas lazarus-1.6+dfsg/components/codetools/examples/testexpreval.pas --- lazarus-1.4.4+dfsg/components/codetools/examples/testexpreval.pas 2009-12-03 11:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/testexpreval.pas 2015-07-07 15:35:28.000000000 +0000 @@ -28,7 +28,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, FileProcs, ExprEval; + FileProcs, ExprEval; var e: TExpressionEvaluator; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/testfpcsrcunitrules.lpi lazarus-1.6+dfsg/components/codetools/examples/testfpcsrcunitrules.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/testfpcsrcunitrules.lpi 2010-07-26 13:13:10.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/testfpcsrcunitrules.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,16 +1,14 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="8"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> - <UseDefaultCompilerOptions Value="True"/> </Flags> <SessionStorage Value="InIDEConfig"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> </General> @@ -20,8 +18,11 @@ <VersionInfo> <Language Value=""/> <CharSet Value=""/> - <StringTable Comments="" CompanyName="" FileDescription="" FileVersion="" InternalName="" LegalCopyright="" LegalTrademarks="" OriginalFilename="" ProductName="" ProductVersion=""/> + <StringTable ProductVersion=""/> </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IgnoreBinaries Value="False"/> @@ -43,25 +44,18 @@ <Unit0> <Filename Value="testfpcsrcunitrules.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="testfpcsrcunitrules"/> </Unit0> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="9"/> + <Version Value="11"/> <Target> <Filename Value="testfpcsrcunitrules"/> </Target> <SearchPaths> - <IncludeFiles Value="$(ProjOutDir)/"/> + <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/testfpcsrcunitrules.lpr lazarus-1.6+dfsg/components/codetools/examples/testfpcsrcunitrules.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/testfpcsrcunitrules.lpr 2010-07-29 10:03:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/testfpcsrcunitrules.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -29,7 +29,7 @@ uses Classes, SysUtils, CustApp, AVL_Tree, CodeToolManager, DefineTemplates, - CodeToolsConfig, FileProcs, CodeToolsStructs; + CodeToolsConfig, FileProcs, CodeToolsStructs, LazFileUtils; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/TestNewXMLCfg.lpi lazarus-1.6+dfsg/components/codetools/examples/TestNewXMLCfg.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/TestNewXMLCfg.lpi 2011-07-09 08:23:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/TestNewXMLCfg.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -41,12 +41,11 @@ <Unit0> <Filename Value="TestNewXMLCfg.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="TestNewXMLCfg"/> </Unit0> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <Target> <Filename Value="TestNewXMLCfg"/> </Target> @@ -54,12 +53,6 @@ <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/TestNewXMLCfg.lpr lazarus-1.6+dfsg/components/codetools/examples/TestNewXMLCfg.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/TestNewXMLCfg.lpr 2012-06-24 15:46:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/TestNewXMLCfg.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -6,7 +6,7 @@ {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} - Classes, SysUtils, CustApp, FileProcs, Laz_XMLCfg, Laz2_XMLCfg; + Classes, SysUtils, CustApp, FileProcs, Laz_XMLCfg, Laz2_XMLCfg, LazFileUtils; type diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/testunitdirectives.lpi lazarus-1.6+dfsg/components/codetools/examples/testunitdirectives.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/testunitdirectives.lpi 2013-05-09 13:19:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/testunitdirectives.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -37,7 +37,7 @@ <Unit0> <Filename Value="testunitdirectives.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="testunitdirectives"/> + <UnitName Value="TestUnitDirectives"/> </Unit0> <Unit1> <Filename Value="scanexamples/directives1.pas"/> @@ -56,8 +56,5 @@ <AllowLabel Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/testunitdirectives.lpr lazarus-1.6+dfsg/components/codetools/examples/testunitdirectives.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/testunitdirectives.lpr 2013-06-12 11:43:37.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/testunitdirectives.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,9 +28,9 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CodeCache, CodeToolManager, FileProcs, CodeAtom, - BasicCodeTools, SourceChanger, CodeTree, - CodeToolsStructs, PascalParserTool, LinkScanner, directives1; + SysUtils, CodeCache, CodeToolManager, FileProcs, CodeAtom, + BasicCodeTools, SourceChanger, PascalParserTool, LinkScanner, LazUTF8, + directives1; var Scanner: TLinkScanner; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/unitdicttest.lpi lazarus-1.6+dfsg/components/codetools/examples/unitdicttest.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/unitdicttest.lpi 2011-11-21 07:48:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/unitdicttest.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -38,7 +38,6 @@ <Unit0> <Filename Value="unitdicttest.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="unitdicttest"/> </Unit0> <Unit1> <Filename Value="scanexamples/simpleunit1.pas"/> @@ -62,8 +61,5 @@ <UseAnsiStrings Value="False"/> </SyntaxOptions> </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/unitdicttest.lpr lazarus-1.6+dfsg/components/codetools/examples/unitdicttest.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/unitdicttest.lpr 2011-11-21 07:48:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/unitdicttest.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,9 +28,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, AVL_Tree, CodeCache, CodeToolManager, FileProcs, - BasicCodeTools, SourceChanger, CodeTree, DefineTemplates, unitdictionary, - CodeToolsStructs, zstream; + SysUtils, AVL_Tree, CodeToolManager, FileProcs, + DefineTemplates, unitdictionary, CodeToolsStructs, LazFileUtils; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/usedbyunits.lpi lazarus-1.6+dfsg/components/codetools/examples/usedbyunits.lpi --- lazarus-1.4.4+dfsg/components/codetools/examples/usedbyunits.lpi 2011-05-04 13:40:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/usedbyunits.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -38,17 +38,11 @@ <Unit0> <Filename Value="usedbyunits.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="usedbyunits"/> + <UnitName Value="UsedByUnits"/> </Unit0> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Version Value="11"/> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/examples/usedbyunits.lpr lazarus-1.6+dfsg/components/codetools/examples/usedbyunits.lpr --- lazarus-1.4.4+dfsg/components/codetools/examples/usedbyunits.lpr 2011-05-04 13:40:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/examples/usedbyunits.lpr 2015-07-07 15:35:28.000000000 +0000 @@ -28,8 +28,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, AVL_Tree, FileProcs, CodeGraph, CTUnitGraph, - CodeToolManager; + SysUtils, AVL_Tree, FileProcs, CTUnitGraph, CodeToolManager, + LazFileUtils, LazFileCache; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/expreval.pas lazarus-1.6+dfsg/components/codetools/expreval.pas --- lazarus-1.4.4+dfsg/components/codetools/expreval.pas 2015-03-12 09:45:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/expreval.pas 2015-07-07 11:43:38.000000000 +0000 @@ -36,7 +36,7 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, KeyWordFuncLists, FileProcs; + Classes, SysUtils, KeyWordFuncLists, FileProcs, LazDbgLog; const ExternalMacroStart = '#'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/extractproctool.pas lazarus-1.6+dfsg/components/codetools/extractproctool.pas --- lazarus-1.4.4+dfsg/components/codetools/extractproctool.pas 2014-06-10 10:56:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/extractproctool.pas 2015-11-11 14:59:23.000000000 +0000 @@ -32,6 +32,14 @@ ToDo: - check if selection bounds on statement bounds - with statements + + Explode With Blocks todos: + - check if selection bounds on statement bounds + - keep Begin..End in case + - support Expressions + - with Canvas do with Self do (e.g. shape.inc) + - dialog in cody to replace a long expression with a short local variable + - bug: shape.inc : with Self do } unit ExtractProcTool; @@ -43,7 +51,7 @@ uses Classes, SysUtils, math, FileProcs, CodeToolsStrConsts, CodeTree, CodeAtom, - CodeCache, CustomCodeTool, + CodeCache, CustomCodeTool, PascalReaderTool, PascalParserTool, CodeCompletionTool, KeywordFuncLists, BasicCodeTools, LinkScanner, AVL_Tree, SourceChanger, FindDeclarationTool; @@ -843,7 +851,7 @@ else ProcHead:=''; ProcHead:=ProcHead+ProcName+BaseParamList; - ConflictProcNode:=FindProcNode(ContextNode,ProcHead, + ConflictProcNode:=FindProcNode(ContextNode,ProcHead,mgMethod, ShortProcFormat+[phpIgnoreForwards]); Result:=ConflictProcNode<>nil; if Result then begin @@ -856,7 +864,7 @@ function InsertProcIntf(IntfInsertPos, IntfIndent: integer; const CompleteParamList, BaseParamList, ProcCode: string; - const ProcClassName: string; ProcClassNode: TCodeTreeNode): boolean; + ProcClassNode: TCodeTreeNode): boolean; var ProcHeader: String; FrontGap: TGapTyp; @@ -1061,7 +1069,7 @@ if not CreateProcBody(ProcClassName,CompleteParamList, VarSection,BeginEndCode,ProcCode) then exit; if not InsertProcIntf(IntfInsertPos,IntfIndent,CompleteParamList, - BaseParamList,ProcCode,ProcClassName,ProcClassNode) then exit; + BaseParamList,ProcCode,ProcClassNode) then exit; if not InsertProcBody(InsertPos,Indent,ProcCode) then exit; if not CreatePathForNewProc(InsertPos,ProcClassName,BaseParamList, NewProcPath) then exit; @@ -1102,7 +1110,7 @@ var p: Pointer; begin - p:=Pointer(PtrUInt(CleanPos)); + p:={%H-}Pointer(PtrUInt(CleanPos)); if WithIdentifiers=nil then WithIdentifiers:=TAVLTree.Create; if WithIdentifiers.Find(p)<>nil then exit; {$IFDEF CTDEBUG} @@ -1116,63 +1124,68 @@ var i: Integer; Cache: PWithVarCache; - Params: TFindDeclarationParams; + ParentParams, Params: TFindDeclarationParams; begin Result:=false; - // check cache - if WithVarCache=nil then - WithVarCache:=TFPList.Create; - i:=WithVarCache.Count-1; - while (i>=0) and (PWithVarCache(WithVarCache[i])^.WithVarNode<>WithVarNode) do - dec(i); - if i>=0 then begin - Cache:=PWithVarCache(WithVarCache[i]); - end else begin - // resolve type of With variable - {$IFDEF CTDEBUG} - debugln(['IdentifierDefinedByWith NEW WithVar']); - {$ENDIF} - New(Cache); - WithVarCache.Add(Cache); - Cache^.WithVarNode:=WithVarNode; - Cache^.WithVarExpr:=CleanExpressionType; - Cache^.VarEndPos:=FindEndOfTerm(WithVarNode.StartPos,false,true); - Params:=TFindDeclarationParams.Create; - try - Params.ContextNode:=WithVarNode; - Params.Flags:=[fdfExceptionOnNotFound,fdfFunctionResult,fdfFindChildren]; - Cache^.WithVarExpr:=FindExpressionTypeOfTerm(WithVarNode.StartPos,-1,Params,true); - if (Cache^.WithVarExpr.Desc<>xtContext) - or (Cache^.WithVarExpr.Context.Node=nil) - or (not (Cache^.WithVarExpr.Context.Node.Desc - in (AllClasses+[ctnEnumerationType]))) - then begin - MoveCursorToCleanPos(Cache^.WithVarNode.StartPos); - RaiseException(ctsExprTypeMustBeClassOrRecord); + ParentParams := TFindDeclarationParams.Create(Self,WithVarNode); + try + // check cache + if WithVarCache=nil then + WithVarCache:=TFPList.Create; + i:=WithVarCache.Count-1; + while (i>=0) and (PWithVarCache(WithVarCache[i])^.WithVarNode<>WithVarNode) do + dec(i); + if i>=0 then begin + Cache:=PWithVarCache(WithVarCache[i]); + end else begin + // resolve type of With variable + {$IFDEF CTDEBUG} + debugln(['IdentifierDefinedByWith NEW WithVar']); + {$ENDIF} + New(Cache); + WithVarCache.Add(Cache); + Cache^.WithVarNode:=WithVarNode; + Cache^.WithVarExpr:=CleanExpressionType; + Cache^.VarEndPos:=FindEndOfTerm(WithVarNode.StartPos,false,true); + Params:=TFindDeclarationParams.Create(ParentParams); + try + Params.ContextNode:=WithVarNode; + Params.Flags:=[fdfExceptionOnNotFound,fdfFunctionResult,fdfFindChildren]; + Cache^.WithVarExpr:=FindExpressionTypeOfTerm(WithVarNode.StartPos,-1,Params,true); + if (Cache^.WithVarExpr.Desc<>xtContext) + or (Cache^.WithVarExpr.Context.Node=nil) + or (not (Cache^.WithVarExpr.Context.Node.Desc + in (AllClasses+[ctnEnumerationType]))) + then begin + MoveCursorToCleanPos(Cache^.WithVarNode.StartPos); + RaiseException(ctsExprTypeMustBeClassOrRecord); + end; + {$IFDEF CTDEBUG} + debugln(['IdentifierDefinedByWith WithVarExpr=',ExprTypeToString(Cache^.WithVarExpr)]); + {$ENDIF} + finally + Params.Free; end; + end; + + if CleanPos<=Cache^.VarEndPos then exit; + + // search identifier in with var context + Params:=TFindDeclarationParams.Create(ParentParams); + try + Params.SetIdentifier(Self,@Src[CleanPos],nil); + Params.Flags:=[fdfSearchInAncestors,fdfSearchInHelpers]; + Params.ContextNode:=Cache^.WithVarExpr.Context.Node; + Result:=Cache^.WithVarExpr.Context.Tool.FindIdentifierInContext(Params); {$IFDEF CTDEBUG} - debugln(['IdentifierDefinedByWith WithVarExpr=',ExprTypeToString(Cache^.WithVarExpr)]); + debugln(['IdentifierDefinedByWith Identifier=',GetIdentifier(@Src[CleanPos]),' FoundInWith=',Result,' WithVar="',dbgstr(Src,WithVarNode.StartPos,10),'"']); {$ENDIF} finally Params.Free; end; - end; - - if CleanPos<=Cache^.VarEndPos then exit; - - // search identifier in with var context - Params:=TFindDeclarationParams.Create; - try - Params.SetIdentifier(Self,@Src[CleanPos],nil); - Params.Flags:=[fdfSearchInAncestors]; - Params.ContextNode:=Cache^.WithVarExpr.Context.Node; - Result:=Cache^.WithVarExpr.Context.Tool.FindIdentifierInContext(Params); - {$IFDEF CTDEBUG} - debugln(['IdentifierDefinedByWith Identifier=',GetIdentifier(@Src[CleanPos]),' FoundInWith=',Result,' WithVar="',dbgstr(Src,WithVarNode.StartPos,10),'"']); - {$ENDIF} finally - Params.Free; + ParentParams.Free; end; end; @@ -1339,7 +1352,7 @@ AVLNode:=WithIdentifiers.FindLowest; while AVLNode<>nil do begin - CleanPos:=integer(PtrUInt(AVLNode.Data)); + CleanPos:=integer({%H-}PtrUInt(AVLNode.Data)); //debugln(['Replace Prefix identifier: ',GetIdentifier(@Src[CleanPos])]); if not SourceChangeCache.Replace(gtNone,gtNone,CleanPos,CleanPos,WithVar) then @@ -1358,13 +1371,15 @@ FromPos:=Max(FromPos,DeleteHeaderEndPos); ToPos:=Min(ToPos,DeleteFooterStartPos); if FromPos>=ToPos then exit; - if IndentWith>=IndentInnerWith then + if IndentWith>=IndentInnerWith then exit; // unindent FromPos:=FindLineEndOrCodeAfterPosition(FromPos,true,true); //debugln(['UnIndent FromPos=',CleanPosToStr(FromPos),' ToPos=',CleanPosToStr(ToPos),' Src="',dbgstr(Src,FromPos,ToPos),'"']); if not SourceChangeCache.IndentBlock(FromPos,ToPos,IndentWith-IndentInnerWith) - then + then begin + debugln(['UnindentAndEncloseSkippedCode.UnIndent failed: ']); exit(false); + end; end; var @@ -1376,6 +1391,7 @@ StartPos: Integer; begin // enclose all $ELSE code in WITH blocks + Result:=false; WithHeader:=''; WithFooter:=''; p:=Max(StatementNode.StartPos,BeginKeyWord.EndPos); @@ -1470,10 +1486,22 @@ // RemoveWithHeader SourceChangeCache.MainScanner:=Scanner; - if not FindBounds then exit; - if not RemoveWithHeader then exit; - if not UnindentAndEncloseSkippedCode then exit; - if not PrefixSubIdentifiers then exit; + if not FindBounds then begin + debugln(['TExtractProcTool.RemoveWithBlock FindBounds failed']); + exit; + end; + if not RemoveWithHeader then begin + debugln(['TExtractProcTool.RemoveWithBlock RemoveWithHeader failed']); + exit; + end; + if not UnindentAndEncloseSkippedCode then begin + debugln(['TExtractProcTool.RemoveWithBlock UnindentAndEncloseSkippedCode failed']); + exit; + end; + if not PrefixSubIdentifiers then begin + debugln(['TExtractProcTool.RemoveWithBlock PrefixSubIdentifiers failed']); + exit; + end; Result:=SourceChangeCache.Apply; //debugln(['TExtractProcTool.RemoveWithBlock SOURCE:']); @@ -1764,12 +1792,13 @@ IsInSelection:=(VarStartPos>=BlockStartPos) and (VarStartPos<BlockEndPos); IsAfterSelection:=(VarStartPos>=BlockEndPos); MoveCursorToCleanPos(VarStartPos); - Params:=TFindDeclarationParams.Create; + VarNode:=FindDeepestNodeAtPos(VarStartPos,true); + Params:=TFindDeclarationParams.Create(Self, VarNode); try // find declaration - Params.ContextNode:=FindDeepestNodeAtPos(VarStartPos,true); + Params.ContextNode:=VarNode; Params.Flags:=[fdfSearchInParentNodes,fdfExceptionOnNotFound, - fdfTopLvlResolving,fdfSearchInAncestors]; + fdfTopLvlResolving,fdfSearchInAncestors,fdfSearchInHelpers]; Params.SetIdentifier(Self,@Src[VarStartPos],@CheckSrcIdentifier); {$IFDEF CTDebug} DebugLn('AddVariableAtCursor Searching ',GetIdentifier(Params.Identifier)); diff -Nru lazarus-1.4.4+dfsg/components/codetools/fileprocs.pas lazarus-1.6+dfsg/components/codetools/fileprocs.pas --- lazarus-1.4.4+dfsg/components/codetools/fileprocs.pas 2015-02-13 20:35:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/fileprocs.pas 2015-10-24 21:50:00.000000000 +0000 @@ -39,8 +39,17 @@ {$IFDEF Windows} Windows, {$ENDIF} - Classes, SysUtils, LazUtilities, LazDbgLog, LazLogger, LazUTF8, LazFileCache, - LazFileUtils, LazUTF8Classes, AVL_Tree, CodeToolsStrConsts; + // RTL + FCL + Classes, SysUtils, AVL_Tree, + // CodeTools + CodeToolsStrConsts, + // LazUtils + LazUtilities, + {$IFNDEF DisableWrapperFunctions} + LazDbgLog, + {$ENDIF} + LazLogger, LazUTF8, LazFileCache, + LazFileUtils, LazUTF8Classes; type TFPCStreamSeekType = int64; @@ -79,71 +88,115 @@ TCTFileAgeTime = longint; PCTFileAgeTime = ^TCTFileAgeTime; -function CompareFilenames(const Filename1, Filename2: string): integer; inline; -function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; inline; -function CompareFileExt(const Filename, Ext: string; - CaseSensitive: boolean): integer; inline; -function CompareFilenameStarts(const Filename1, Filename2: string): integer; inline; +{$IFnDEF DisableWrapperFunctions} +// *** Wrappers for LazUTF8 *** +function UTF8ToSys(const s: string): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function SysToUTF8(const s: string): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8CharacterLength(p: PChar): integer; inline; deprecated 'Use the function in LazUTF8 unit'; +// environment +function ParamStrUTF8(Param: Integer): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function GetEnvironmentStringUTF8(Index : Integer): String; inline; deprecated 'Use the function in LazUTF8 unit'; +function GetEnvironmentVariableUTF8(const EnvVar: String): String; inline; deprecated 'Use the function in LazUTF8 unit'; + +// *** Wrappers for LazFileUtils *** +function CompareFilenames(const Filename1, Filename2: string): integer; inline; deprecated 'Use the function in LazFileUtils unit'; +function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; inline; deprecated 'Use the function in LazFileUtils unit'; +//function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; inline; deprecated 'Use the function in LazFileUtils unit'; +function CompareFilenameStarts(const Filename1, Filename2: string): integer; inline; deprecated 'Use the function in LazFileUtils unit'; function CompareFilenames(Filename1: PChar; Len1: integer; - Filename2: PChar; Len2: integer): integer; inline; -function DirPathExists(DirectoryName: string): boolean; inline; -function DirectoryIsWritable(const DirectoryName: string): boolean; inline; -function ExtractFileNameOnly(const AFilename: string): string; inline; -function FilenameIsAbsolute(const TheFilename: string):boolean; inline; -function FilenameIsWinAbsolute(const TheFilename: string):boolean; inline; -function FilenameIsUnixAbsolute(const TheFilename: string):boolean; inline; -function ForceDirectory(DirectoryName: string): boolean; inline; -procedure CheckIfFileIsExecutable(const AFilename: string); inline; -function FileIsExecutable(const AFilename: string): boolean; inline; -function FileIsReadable(const AFilename: string): boolean; inline; -function FileIsWritable(const AFilename: string): boolean; inline; -function FileIsText(const AFilename: string): boolean; inline; -function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; inline; -function FilenameIsTrimmed(const TheFilename: string): boolean; inline; -function FilenameIsTrimmed(StartPos: PChar; NameLen: integer): boolean; inline; -function TrimFilename(const AFilename: string): string; inline; -function CleanAndExpandFilename(const Filename: string): string; inline;// empty string returns current directory -function CleanAndExpandDirectory(const Filename: string): string; inline;// empty string returns current directory -function TrimAndExpandFilename(const Filename: string; const BaseDir: string = ''): string; inline;// empty string returns empty string -function TrimAndExpandDirectory(const Filename: string; const BaseDir: string = ''): string; inline;// empty string returns empty string + Filename2: PChar; Len2: integer): integer; inline; deprecated 'Use the function in LazFileUtils unit'; +function DirPathExists(DirectoryName: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function DirectoryIsWritable(const DirectoryName: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function ExtractFileNameOnly(const AFilename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsAbsolute(const TheFilename: string):boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsWinAbsolute(const TheFilename: string):boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsUnixAbsolute(const TheFilename: string):boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function ForceDirectory(DirectoryName: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +procedure CheckIfFileIsExecutable(const AFilename: string); inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsExecutable(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsReadable(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsWritable(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsText(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsTrimmed(const TheFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsTrimmed(StartPos: PChar; NameLen: integer): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function TrimFilename(const AFilename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function CleanAndExpandFilename(const Filename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function CleanAndExpandDirectory(const Filename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function TrimAndExpandFilename(const Filename: string; const BaseDir: string = ''): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function TrimAndExpandDirectory(const Filename: string; const BaseDir: string = ''): string; inline; deprecated 'Use the function in LazFileUtils unit'; function CreateRelativePath(const Filename, BaseDirectory: string; - UsePointDirectory: boolean = false): string; inline; -function FileIsInPath(const Filename, Path: string): boolean; inline; -function AppendPathDelim(const Path: string): string; inline; -function ChompPathDelim(const Path: string): string; inline; -function FilenameIsMatching(const Mask, Filename: string; - MatchExactly: boolean): boolean; -function FindNextDirectoryInFilename(const Filename: string; - var Position: integer): string; + UsePointDirectory: boolean = false): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsInPath(const Filename, Path: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function AppendPathDelim(const Path: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function ChompPathDelim(const Path: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +// file operations +function FileExistsUTF8(const Filename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileAgeUTF8(const FileName: string): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function DirectoryExistsUTF8(const Directory: string): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function ExpandFileNameUTF8(const FileName: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function FindNextUTF8(var Rslt: TSearchRec): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +procedure FindCloseUTF8(var F: TSearchrec); inline; deprecated 'Use the function in LazFileUtils unit'; +function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileGetAttrUTF8(const FileName: String): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function DeleteFileUTF8(const FileName: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function RenameFileUTF8(const OldName, NewName: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileSearchUTF8(const Name, DirList : String): String; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsReadOnlyUTF8(const FileName: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function GetCurrentDirUTF8: String; inline; deprecated 'Use the function in LazFileUtils unit'; +function SetCurrentDirUTF8(const NewDir: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function CreateDirUTF8(const NewDir: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function RemoveDirUTF8(const Dir: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function ForceDirectoriesUTF8(const Dir: string): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +// search paths +function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function MinimizeSearchPath(const SearchPath: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +// Can lead to "wrong number of parameters" error, LazFileUtils has more versions of the func. +//function FindPathInSearchPath(APath: PChar; APathLen: integer; +// SearchPath: PChar; SearchPathLen: integer): PChar; inline; + +// *** Wrappers for LazFileCache *** +function FileExistsCached(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileCache unit'; +function DirPathExistsCached(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileCache unit'; +function DirectoryIsWritableCached(const ADirectoryName: string): boolean; inline; deprecated 'Use the function in LazFileCache unit'; +function FileIsExecutableCached(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileCache unit'; +function FileIsReadableCached(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileCache unit'; +function FileIsWritableCached(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileCache unit'; +function FileIsTextCached(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileCache unit'; +function FileAgeCached(const AFileName: string): Longint; inline; deprecated 'Use the function in LazFileCache unit'; +procedure InvalidateFileStateCache(const Filename: string = ''); inline; deprecated 'Use the function in LazFileCache unit'; + +// *** Wrappers for LazUtilities *** +function ComparePointers(p1, p2: Pointer): integer; inline; deprecated 'Use the function in LazUtilities unit'; +procedure MergeSort(List: PPointer; ListLength: PtrInt; + const Compare: TListSortCompare); inline; deprecated 'Use the function in LazUtilities unit'; +function GetNextDelimitedItem(const List: string; Delimiter: char; + var Position: integer): string; inline; deprecated 'Use the function in LazUtilities unit'; +function HasDelimitedItem(const List: string; Delimiter: char; FindItem: string): boolean; inline; deprecated 'Use the function in LazUtilities unit'; +function FindNextDelimitedItem(const List: string; Delimiter: char; + var Position: integer; FindItem: string): string; inline; deprecated 'Use the function in LazUtilities unit'; + +// *** Wrappers for LazDbgLog *** +function MemSizeString(const s: string): PtrUInt; inline; deprecated 'Use the function in LazDbgLog unit'; +function MemSizeFPList(const List: TFPList): PtrUInt; inline; deprecated 'Use the function in LazDbgLog unit'; +function GetStringRefCount(const s: string): PtrInt; inline; deprecated 'Use the function in LazDbgLog unit'; + +{$ENDIF DisableWrapperFunctions} // file operations -function FileExistsUTF8(const Filename: string): boolean; inline; -function FileAgeUTF8(const FileName: string): Longint; inline; -function DirectoryExistsUTF8(const Directory: string): Boolean; inline; -function ExpandFileNameUTF8(const FileName: string): string; inline; -function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; inline; -function FindNextUTF8(var Rslt: TSearchRec): Longint; inline; -procedure FindCloseUTF8(var F: TSearchrec); inline; -function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; inline; -function FileGetAttrUTF8(const FileName: String): Longint; inline; -function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; inline; -function DeleteFileUTF8(const FileName: String): Boolean; inline; -function RenameFileUTF8(const OldName, NewName: String): Boolean; inline; -function FileSearchUTF8(const Name, DirList : String): String; inline; -function FileIsReadOnlyUTF8(const FileName: String): Boolean; inline; -function GetCurrentDirUTF8: String; inline; -function SetCurrentDirUTF8(const NewDir: String): Boolean; inline; -function CreateDirUTF8(const NewDir: String): Boolean; inline; -function RemoveDirUTF8(const Dir: String): Boolean; inline; -function ForceDirectoriesUTF8(const Dir: string): Boolean; inline; function FileDateToDateTimeDef(aFileDate: TCTFileAgeTime; const Default: TDateTime = 0): TDateTime; +function FilenameIsMatching(const Mask, Filename: string; MatchExactly: boolean): boolean; +function FindNextDirectoryInFilename(const Filename: string; var Position: integer): string; function ClearFile(const Filename: string; RaiseOnError: boolean): boolean; function GetTempFilename(const Path, Prefix: string): string; function SearchFileInDir(const Filename, BaseDirectory: string; SearchCase: TCTSearchFileCase): string; // not thread-safe -function SearchFileInPath(const Filename, BasePath, SearchPath, - Delimiter: string; SearchCase: TCTSearchFileCase): string; // not thread-safe +function SearchFileInPath(const Filename, BasePath, SearchPath, Delimiter: string; + SearchCase: TCTSearchFileCase): string; overload; // not thread-safe function FindDiskFilename(const Filename: string): string; {$IFDEF darwin} function GetDarwinSystemFilename(Filename: string): string; @@ -155,17 +208,7 @@ const CTInvalidChangeStamp = LUInvalidChangeStamp; CTInvalidChangeStamp64 = LUInvalidChangeStamp64; // using a value outside integer to spot wrong types early -procedure CTIncreaseChangeStamp(var ChangeStamp: integer); inline; -procedure CTIncreaseChangeStamp64(var ChangeStamp: int64); inline; -function FileExistsCached(const AFilename: string): boolean; inline; -function DirPathExistsCached(const AFilename: string): boolean; inline; -function DirectoryIsWritableCached(const ADirectoryName: string): boolean; inline; -function FileIsExecutableCached(const AFilename: string): boolean; inline; -function FileIsReadableCached(const AFilename: string): boolean; inline; -function FileIsWritableCached(const AFilename: string): boolean; inline; -function FileIsTextCached(const AFilename: string): boolean; inline; -function FileAgeCached(const AFileName: string): Longint; inline; function GetFilenameOnDisk(const AFilename: string): string; inline; deprecated; // use FindDiskFilename function CompareAnsiStringFilenames(Data1, Data2: Pointer): integer; @@ -177,6 +220,7 @@ CaseSensitive: boolean = false): boolean; function FilenameIsPascalUnit(Filename: PChar; FilenameLen: integer; CaseSensitive: boolean = false): boolean; +function ExtractFileUnitname(Filename: string; WithNameSpace: boolean): string; function IsPascalUnitExt(FileExt: PChar; CaseSensitive: boolean = false): boolean; function SearchPascalUnitInDir(const AnUnitName, BaseDirectory: string; SearchCase: TCTSearchFileCase): string; @@ -189,13 +233,6 @@ function SearchPascalFileInPath(const ShortFilename, BasePath, SearchPath, Delimiter: string; SearchCase: TCTSearchFileCase): string; -// search paths -function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; inline; -function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string; inline; -function MinimizeSearchPath(const SearchPath: string): string; inline; -function FindPathInSearchPath(APath: PChar; APathLen: integer; - SearchPath: PChar; SearchPathLen: integer): PChar; inline; - // FPC function ReadNextFPCParameter(const CmdLine: string; var Position: integer; out StartPos: integer): boolean; @@ -213,27 +250,6 @@ function FileAgeToStr(aFileAge: longint): string; -function UTF8ToSys(const s: string): string; inline;// as UTF8ToAnsi but more independent of widestringmanager -function SysToUTF8(const s: string): string; inline;// as AnsiToUTF8 but more independent of widestringmanager -function UTF8CharacterLength(p: PChar): integer; inline; - -// environment -function ParamStrUTF8(Param: Integer): string; inline; -function GetEnvironmentStringUTF8(Index : Integer): String; inline; -function GetEnvironmentVariableUTF8(const EnvVar: String): String; inline; - -procedure InvalidateFileStateCache(const Filename: string = ''); inline; - -// basic utility -> moved to LazUtilities -function ComparePointers(p1, p2: Pointer): integer; inline; -procedure MergeSort(List: PPointer; ListLength: PtrInt; - const Compare: TListSortCompare); inline; -function GetNextDelimitedItem(const List: string; Delimiter: char; - var Position: integer): string; inline; -function HasDelimitedItem(const List: string; Delimiter: char; FindItem: string - ): boolean; inline; -function FindNextDelimitedItem(const List: string; Delimiter: char; - var Position: integer; FindItem: string): string; inline; function AVLTreeHasDoubles(Tree: TAVLTree): TAVLTreeNode; // store date locale independent, thread safe @@ -242,53 +258,53 @@ function DateToCfgStr(const Date: TDateTime; const aFormat: string = DateAsCfgStrFormat): string; function CfgStrToDate(const s: string; out Date: TDateTime; const aFormat: string = DateAsCfgStrFormat): boolean; +procedure CTIncreaseChangeStamp(var ChangeStamp: integer); inline; +procedure CTIncreaseChangeStamp64(var ChangeStamp: int64); inline; function SimpleFormat(const Fmt: String; const Args: Array of const): String; // debugging +var + CTConsoleVerbosity: integer = {$IFDEF VerboseCodetools}1{$ELSE}0{$ENDIF}; // 0=quiet, 1=normal, 2=verbose + procedure RaiseCatchableException(const Msg: string); procedure RaiseAndCatchException; -type - TCTDbgOutEvent = procedure(const s: string); -var - CTDbgOutEvent: TCTDbgOutEvent = nil; - procedure DebugLn(Args: array of const); procedure DebugLn(const S: String; Args: array of const);// similar to Format(s,Args) -procedure DebugLn; -procedure DebugLn(const s: string); -procedure DebugLn(const s1,s2: string); -procedure DebugLn(const s1,s2,s3: string); -procedure DebugLn(const s1,s2,s3,s4: string); -procedure DebugLn(const s1,s2,s3,s4,s5: string); -procedure DebugLn(const s1,s2,s3,s4,s5,s6: string); -procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7: string); -procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8: string); -procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9: string); -procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9,s10: string); -procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11: string); -procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12: string); +procedure DebugLn; inline; +procedure DebugLn(const s: string); inline; +procedure DebugLn(const s1,s2: string); inline; +procedure DebugLn(const s1,s2,s3: string); inline; +procedure DebugLn(const s1,s2,s3,s4: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5,s6: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9,s10: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11: string); inline; +procedure DebugLn(const s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12: string); inline; procedure DbgOut(Args: array of const); -procedure DbgOut(const s: string); -procedure DbgOut(const s1,s2: string); -procedure DbgOut(const s1,s2,s3: string); -procedure DbgOut(const s1,s2,s3,s4: string); -procedure DbgOut(const s1,s2,s3,s4,s5: string); -procedure DbgOut(const s1,s2,s3,s4,s5,s6: string); +procedure DbgOut(const s: string); inline; +procedure DbgOut(const s1,s2: string); inline; +procedure DbgOut(const s1,s2,s3: string); inline; +procedure DbgOut(const s1,s2,s3,s4: string); inline; +procedure DbgOut(const s1,s2,s3,s4,s5: string); inline; +procedure DbgOut(const s1,s2,s3,s4,s5,s6: string); inline; function DbgS(Args: array of const): string; overload; function DbgS(const c: char): string; overload; -function DbgS(const c: cardinal): string; overload; -function DbgS(const i: integer): string; overload; -function DbgS(const i: QWord): string; overload; -function DbgS(const i: int64): string; overload; -function DbgS(const r: TRect): string; overload; -function DbgS(const p: TPoint): string; overload; -function DbgS(const p: pointer): string; overload; +function DbgS(const c: cardinal): string; inline; overload; +function DbgS(const i: integer): string; inline; overload; +function DbgS(const i: QWord): string; inline; overload; +function DbgS(const i: int64): string; inline; overload; +function DbgS(const r: TRect): string; inline; overload; +function DbgS(const p: TPoint): string; inline; overload; +function DbgS(const p: pointer): string; inline; overload; function DbgS(const e: extended; MaxDecimals: integer = 999): string; overload; inline; function DbgS(const b: boolean): string; overload; inline; -function DbgS(const ms: TCustomMemoryStream; Count: PtrInt = -1): string; overload; +function DbgS(const ms: TCustomMemoryStream; Count: PtrInt = -1): string; inline; overload; function DbgSName(const p: TObject): string; overload; inline; function DbgSName(const p: TClass): string; overload; inline; function dbgMemRange(P: PByte; Count: integer; Width: integer = 0): string; inline; @@ -300,10 +316,6 @@ KeepLines: boolean = true // true = add LineEnding for each line break ): string; overload; -function MemSizeString(const s: string): PtrUInt; inline; -function MemSizeFPList(const List: TFPList): PtrUInt; inline; -function GetStringRefCount(const s: string): PtrInt; inline; - type TCTMemStat = class public @@ -358,119 +370,11 @@ {$IFDEF darwin} MacOSAll, {$ENDIF} - Unix, BaseUnix; + Unix; {$ENDIF} -function SimpleFormat(const Fmt: String; const Args: array of const): String; -var - Used: array of boolean; - p: Integer; - StartPos: Integer; - - procedure ReplaceArg(i: integer; var s: string); - var - Arg: String; - begin - if (i<Low(Args)) or (i>High(Args)) then exit; - case Args[i].VType of - vtInteger: Arg:=dbgs(Args[i].vinteger); - vtInt64: Arg:=dbgs(Args[i].VInt64^); - vtQWord: Arg:=dbgs(Args[i].VQWord^); - vtBoolean: Arg:=dbgs(Args[i].vboolean); - vtExtended: Arg:=dbgs(Args[i].VExtended^); - vtString: Arg:=Args[i].VString^; - vtAnsiString: Arg:=AnsiString(Args[i].VAnsiString); - vtChar: Arg:=Args[i].VChar; - vtPChar: Arg:=Args[i].VPChar; - else exit; - end; - Used[i]:=true; - ReplaceSubstring(s,StartPos,p-StartPos,Arg); - p:=StartPos+length(Arg); - end; - -var - RunIndex: Integer; - FixedIndex: Integer; -begin - Result:=Fmt; - if Low(Args)>High(Args) then exit; - SetLength(Used,High(Args)-Low(Args)+1); - for RunIndex:=Low(Args) to High(Args) do - Used[RunIndex]:=false; - RunIndex:=Low(Args); - p:=1; - while p<=length(Result) do - begin - if Result[p]='%' then - begin - StartPos:=p; - inc(p); - case Result[p] of - 's': - begin - inc(p); - ReplaceArg(RunIndex,Result); - inc(RunIndex); - end; - '0'..'9': - begin - FixedIndex:=0; - while (p<=length(Result)) and (Result[p] in ['0'..'9']) do - begin - if FixedIndex<High(Args) then - FixedIndex:=FixedIndex*10+ord(Result[p])-ord('0'); - inc(p); - end; - if (p<=length(Result)) and (Result[p]=':') then - begin - inc(p); - if (p<=length(Result)) and (Result[p]='s') then - inc(p); - end; - ReplaceArg(FixedIndex,Result); - end; - else - inc(p); - end; - end else - inc(p); - end; - - // append all missing arguments - for RunIndex:=Low(Args) to High(Args) do - begin - if Used[RunIndex] then continue; - Result+=','; - StartPos:=length(Result)+1; - p:=StartPos; - ReplaceArg(RunIndex,Result); - end; -end; - -procedure RaiseCatchableException(const Msg: string); -begin - { Raises an exception. - gdb does not catch fpc Exception objects, therefore this procedure raises - a standard AV which is catched by gdb. } - DebugLn('ERROR in CodeTools: ',Msg); - // creates an exception, that gdb catches: - DebugLn('Creating gdb catchable error:'); - if (length(Msg) div (length(Msg) div 10000))=0 then ; -end; - -procedure RaiseAndCatchException; -begin - try - if (length(ctsAddsDirToIncludePath) div (length(ctsAddsDirToIncludePath) div 10000))=0 then ; - except - end; -end; - -var - LineInfoCache: TAVLTree = nil; - LastTick: int64 = 0; - +{$IFnDEF DisableWrapperFunctions} +// LazUTF8 function UTF8ToSys(const s: string): string; begin Result:=LazUTF8.UTF8ToSys(s); @@ -501,22 +405,21 @@ Result:=LazUTF8.GetEnvironmentVariableUTF8(EnvVar); end; +// LazFileUtils function CompareFilenames(const Filename1, Filename2: string): integer; begin Result:=LazFileUtils.CompareFilenames(Filename1,Filename2); end; -function CompareFilenamesIgnoreCase(const Filename1, Filename2: string - ): integer; +function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; begin Result:=LazFileUtils.CompareFilenamesIgnoreCase(Filename1,Filename2); end; -function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean - ): integer; -begin - Result:=LazFileUtils.CompareFileExt(Filename,Ext,CaseSensitive); -end; +//function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; +//begin +// Result:=LazFileUtils.CompareFileExt(Filename,Ext,CaseSensitive); +//end; function CompareFilenameStarts(const Filename1, Filename2: string): integer; begin @@ -589,8 +492,7 @@ Result:=LazFileUtils.FileIsText(AFilename); end; -function FileIsText(const AFilename: string; out FileReadable: boolean - ): boolean; +function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; begin Result:=LazFileUtils.FileIsText(AFilename,FileReadable); end; @@ -671,8 +573,7 @@ Result:=LazFileUtils.ExpandFileNameUTF8(Filename); end; -function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec - ): Longint; +function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; begin Result:=LazFileUtils.FindFirstUTF8(Path,Attr,Rslt); end; @@ -747,6 +648,239 @@ Result:=LazFileUtils.ForceDirectoriesUTF8(Dir); end; +function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; +begin + Result:=LazFileUtils.CreateAbsoluteSearchPath(SearchPath,BaseDirectory); +end; + +function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string; +begin + Result:=LazFileUtils.CreateRelativeSearchPath(SearchPath,BaseDirectory); +end; + +function MinimizeSearchPath(const SearchPath: string): string; +begin + Result:=LazFileUtils.MinimizeSearchPath(SearchPath); +end; + +//function FindPathInSearchPath(APath: PChar; APathLen: integer; +// SearchPath: PChar; SearchPathLen: integer): PChar; +//begin +// Result:=LazFileUtils.FindPathInSearchPath(APath,APathLen,SearchPath,SearchPathLen); +//end; + +// LazFileCache +function FileExistsCached(const AFilename: string): boolean; +begin + Result:=LazFileCache.FileExistsCached(AFilename); +end; + +function DirPathExistsCached(const AFilename: string): boolean; +begin + Result:=LazFileCache.DirPathExistsCached(AFilename); +end; + +function DirectoryIsWritableCached(const ADirectoryName: string): boolean; +begin + Result:=LazFileCache.DirectoryIsWritableCached(ADirectoryName); +end; + +function FileIsExecutableCached(const AFilename: string): boolean; +begin + Result:=LazFileCache.FileIsExecutableCached(AFilename); +end; + +function FileIsReadableCached(const AFilename: string): boolean; +begin + Result:=LazFileCache.FileIsReadableCached(AFilename); +end; + +function FileIsWritableCached(const AFilename: string): boolean; +begin + Result:=LazFileCache.FileIsWritableCached(AFilename); +end; + +function FileIsTextCached(const AFilename: string): boolean; +begin + Result:=LazFileCache.FileIsTextCached(AFilename); +end; + +function FileAgeCached(const AFileName: string): Longint; +begin + Result:=LazFileCache.FileAgeCached(AFileName); +end; + +procedure InvalidateFileStateCache(const Filename: string = ''); +begin + LazFileCache.InvalidateFileStateCache(Filename); +end; + +// LazUtilities +function ComparePointers(p1, p2: Pointer): integer; +begin + Result:=LazUtilities.ComparePointers(p1,p2); +end; + +procedure MergeSort(List: PPointer; ListLength: PtrInt; const Compare: TListSortCompare); +begin + LazUtilities.MergeSort(List,ListLength,Compare); +end; + +function GetNextDelimitedItem(const List: string; Delimiter: char; + var Position: integer): string; +begin + Result:=LazUtilities.GetNextDelimitedItem(List,Delimiter,Position); +end; + +function HasDelimitedItem(const List: string; Delimiter: char; FindItem: string): boolean; +begin + Result:=LazUtilities.HasDelimitedItem(List,Delimiter,FindItem); +end; + +function FindNextDelimitedItem(const List: string; Delimiter: char; + var Position: integer; FindItem: string): string; +begin + Result:=LazUtilities.FindNextDelimitedItem(List,Delimiter,Position,FindItem); +end; + +// LazDbgLog +function MemSizeString(const s: string): PtrUInt; +begin + Result:=LazDbgLog.MemSizeString(s); +end; + +function MemSizeFPList(const List: TFPList): PtrUInt; +begin + Result:=LazDbgLog.MemSizeFPList(List); +end; + +function GetStringRefCount(const s: string): PtrInt; +begin + Result:=LazDbgLog.GetStringRefCount(s); +end; + +{$ENDIF DisableWrapperFunctions} + +procedure CTIncreaseChangeStamp(var ChangeStamp: integer); +begin + LazFileCache.LUIncreaseChangeStamp(ChangeStamp); +end; + +procedure CTIncreaseChangeStamp64(var ChangeStamp: int64); +begin + LazFileCache.LUIncreaseChangeStamp64(ChangeStamp); +end; + +function SimpleFormat(const Fmt: String; const Args: array of const): String; +var + Used: array of boolean; + p: Integer; + StartPos: Integer; + + procedure ReplaceArg(i: integer; var s: string); + var + Arg: String; + begin + if (i<Low(Args)) or (i>High(Args)) then exit; + case Args[i].VType of + vtInteger: Arg:=dbgs(Args[i].vinteger); + vtInt64: Arg:=dbgs(Args[i].VInt64^); + vtQWord: Arg:=dbgs(Args[i].VQWord^); + vtBoolean: Arg:=dbgs(Args[i].vboolean); + vtExtended: Arg:=dbgs(Args[i].VExtended^); + vtString: Arg:=Args[i].VString^; + vtAnsiString: Arg:=AnsiString(Args[i].VAnsiString); + vtChar: Arg:=Args[i].VChar; + vtPChar: Arg:=Args[i].VPChar; + else exit; + end; + Used[i]:=true; + ReplaceSubstring(s,StartPos,p-StartPos,Arg); + p:=StartPos+length(Arg); + end; + +var + RunIndex: Integer; + FixedIndex: Integer; +begin + Result:=Fmt; + if Low(Args)>High(Args) then exit; + SetLength(Used,High(Args)-Low(Args)+1); + for RunIndex:=Low(Args) to High(Args) do + Used[RunIndex]:=false; + RunIndex:=Low(Args); + p:=1; + while p<=length(Result) do + begin + if Result[p]='%' then + begin + StartPos:=p; + inc(p); + case Result[p] of + 's': + begin + inc(p); + ReplaceArg(RunIndex,Result); + inc(RunIndex); + end; + '0'..'9': + begin + FixedIndex:=0; + while (p<=length(Result)) and (Result[p] in ['0'..'9']) do + begin + if FixedIndex<High(Args) then + FixedIndex:=FixedIndex*10+ord(Result[p])-ord('0'); + inc(p); + end; + if (p<=length(Result)) and (Result[p]=':') then + begin + inc(p); + if (p<=length(Result)) and (Result[p]='s') then + inc(p); + end; + ReplaceArg(FixedIndex,Result); + end; + else + inc(p); + end; + end else + inc(p); + end; + + // append all missing arguments + for RunIndex:=Low(Args) to High(Args) do + begin + if Used[RunIndex] then continue; + Result+=','; + StartPos:=length(Result)+1; + p:=StartPos; + ReplaceArg(RunIndex,Result); + end; +end; + +procedure RaiseCatchableException(const Msg: string); +begin + { Raises an exception. + gdb does not catch fpc Exception objects, therefore this procedure raises + a standard AV which is catched by gdb. } + DebugLn('ERROR in CodeTools: ',Msg); + // creates an exception, that gdb catches: + DebugLn('Creating gdb catchable error:'); + if (length(Msg) div (length(Msg) div 10000))=0 then ; +end; + +procedure RaiseAndCatchException; +begin + try + if (length(ctsAddsDirToIncludePath) div (length(ctsAddsDirToIncludePath) div 10000))=0 then ; + except + end; +end; + +var + LineInfoCache: TAVLTree = nil; + LastTick: int64 = 0; + function FileDateToDateTimeDef(aFileDate: TCTFileAgeTime; const Default: TDateTime ): TDateTime; begin @@ -910,56 +1044,6 @@ end; {$ENDIF} -procedure CTIncreaseChangeStamp(var ChangeStamp: integer); -begin - LazFileCache.LUIncreaseChangeStamp(ChangeStamp); -end; - -procedure CTIncreaseChangeStamp64(var ChangeStamp: int64); -begin - LazFileCache.LUIncreaseChangeStamp64(ChangeStamp); -end; - -function FileExistsCached(const AFilename: string): boolean; -begin - Result:=LazFileCache.FileExistsCached(AFilename); -end; - -function DirPathExistsCached(const AFilename: string): boolean; -begin - Result:=LazFileCache.DirPathExistsCached(AFilename); -end; - -function DirectoryIsWritableCached(const ADirectoryName: string): boolean; -begin - Result:=LazFileCache.DirectoryIsWritableCached(ADirectoryName); -end; - -function FileIsExecutableCached(const AFilename: string): boolean; -begin - Result:=LazFileCache.FileIsExecutableCached(AFilename); -end; - -function FileIsReadableCached(const AFilename: string): boolean; -begin - Result:=LazFileCache.FileIsReadableCached(AFilename); -end; - -function FileIsWritableCached(const AFilename: string): boolean; -begin - Result:=LazFileCache.FileIsWritableCached(AFilename); -end; - -function FileIsTextCached(const AFilename: string): boolean; -begin - Result:=LazFileCache.FileIsTextCached(AFilename); -end; - -function FileAgeCached(const AFileName: string): Longint; -begin - Result:=LazFileCache.FileAgeCached(AFileName); -end; - function GetFilenameOnDisk(const AFilename: string): string; begin Result:=FindDiskFilename(AFilename); @@ -1063,6 +1147,23 @@ Result:=false; end; +function ExtractFileUnitname(Filename: string; WithNameSpace: boolean): string; +var + p: Integer; +begin + Result:=ExtractFileNameOnly(Filename); + if (Result='') or WithNameSpace then exit; + // find last dot + p:=length(Result); + while p>0 do begin + if Result[p]='.' then begin + Delete(Result,1,p); + exit; + end; + dec(p); + end; +end; + function IsPascalUnitExt(FileExt: PChar; CaseSensitive: boolean): boolean; // check if asciiz FileExt is a CTPascalExtension '.pp', '.pas' var @@ -1300,29 +1401,6 @@ Result:=''; end; -function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string - ): string; -begin - Result:=LazFileUtils.CreateAbsoluteSearchPath(SearchPath,BaseDirectory); -end; - -function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string - ): string; -begin - Result:=LazFileUtils.CreateRelativeSearchPath(SearchPath,BaseDirectory); -end; - -function MinimizeSearchPath(const SearchPath: string): string; -begin - Result:=LazFileUtils.MinimizeSearchPath(SearchPath); -end; - -function FindPathInSearchPath(APath: PChar; APathLen: integer; - SearchPath: PChar; SearchPathLen: integer): PChar; -begin - Result:=LazFileUtils.FindPathInSearchPath(APath,APathLen,SearchPath,SearchPathLen); -end; - function ReadNextFPCParameter(const CmdLine: string; var Position: integer; out StartPos: integer): boolean; // reads till start of next FPC command line parameter, parses quotes ' and " @@ -1405,8 +1483,9 @@ p: Integer; StartPos: integer; begin + Result:=''; if BeginsWith='' then - exit(''); + exit; p:=1; while ReadNextFPCParameter(CmdLine,p,StartPos) do begin Param:=ExtractFPCParameter(CmdLine,StartPos); @@ -1447,6 +1526,7 @@ ShortFile: String; FileInfo: TSearchRec; begin + Result:=''; Base:=AppendPathDelim(BaseDirectory); ShortFile:=Filename; if System.Pos(PathDelim,ShortFile)>0 then begin @@ -1474,7 +1554,6 @@ ctsfcAllCase: begin // search file - Result:=''; Base:=FindDiskFilename(Base); if FindFirstUTF8(Base+FileMask,faAnyFile,FileInfo)=0 then begin @@ -1817,40 +1896,6 @@ Result:=copy(Filename,StartPos,Position-StartPos); end; -procedure InvalidateFileStateCache(const Filename: string = ''); -begin - LazFileCache.InvalidateFileStateCache(Filename); -end; - -function ComparePointers(p1, p2: Pointer): integer; -begin - Result:=LazUtilities.ComparePointers(p1,p2); -end; - -procedure MergeSort(List: PPointer; ListLength: PtrInt; - const Compare: TListSortCompare); -begin - LazUtilities.MergeSort(List,ListLength,Compare); -end; - -function GetNextDelimitedItem(const List: string; Delimiter: char; - var Position: integer): string; -begin - Result:=LazUtilities.GetNextDelimitedItem(List,Delimiter,Position); -end; - -function HasDelimitedItem(const List: string; Delimiter: char; FindItem: string - ): boolean; -begin - Result:=LazUtilities.HasDelimitedItem(List,Delimiter,FindItem); -end; - -function FindNextDelimitedItem(const List: string; Delimiter: char; - var Position: integer; FindItem: string): string; -begin - Result:=LazUtilities.FindNextDelimitedItem(List,Delimiter,Position,FindItem); -end; - function AVLTreeHasDoubles(Tree: TAVLTree): TAVLTreeNode; var Next: TAVLTreeNode; @@ -1968,117 +2013,113 @@ procedure DebugLn(Args: array of const); begin - DbgOut(Args); - DebugLn; + LazLogger.Debugln(Args); end; procedure DebugLn(const S: String; Args: array of const); begin - DebugLn(Format(S, Args)); + LazLogger.DebugLn(Format(S, Args)); end; procedure DebugLn; begin - DebugLn(''); + LazLogger.DebugLn(''); end; procedure DebugLn(const s: string); begin - DbgOut(s+LineEnding); + LazLogger.Debugln(s); end; procedure DebugLn(const s1, s2: string); begin - DebugLn(s1+s2); + LazLogger.Debugln(s1,s2); end; procedure DebugLn(const s1, s2, s3: string); begin - DebugLn(s1+s2+s3); + LazLogger.Debugln(s1,s2,s3); end; procedure DebugLn(const s1, s2, s3, s4: string); begin - DebugLn(s1+s2+s3+s4); + LazLogger.Debugln(s1,s2,s3,s4); end; procedure DebugLn(const s1, s2, s3, s4, s5: string); begin - DebugLn(s1+s2+s3+s4+s5); + LazLogger.Debugln(s1,s2,s3,s4,s5); end; procedure DebugLn(const s1, s2, s3, s4, s5, s6: string); begin - DebugLn(s1+s2+s3+s4+s5+s6); + LazLogger.Debugln(s1,s2,s3,s4,s5,s6); end; procedure DebugLn(const s1, s2, s3, s4, s5, s6, s7: string); begin - DebugLn(s1+s2+s3+s4+s5+s6+s7); + LazLogger.Debugln(s1,s2,s3,s4,s5,s6,s7); end; procedure DebugLn(const s1, s2, s3, s4, s5, s6, s7, s8: string); begin - DebugLn(s1+s2+s3+s4+s5+s6+s7+s8); + LazLogger.Debugln(s1,s2,s3,s4,s5,s6,s7,s8); end; procedure DebugLn(const s1, s2, s3, s4, s5, s6, s7, s8, s9: string); begin - DebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9); + LazLogger.Debugln(s1,s2,s3,s4,s5,s6,s7,s8,s9); end; procedure DebugLn(const s1, s2, s3, s4, s5, s6, s7, s8, s9, s10: string); begin - DebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10); + LazLogger.Debugln(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10); end; procedure DebugLn(const s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11: string); begin - DebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11); + LazLogger.Debugln(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11); end; procedure DebugLn(const s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12: string); begin - DebugLn(s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12); + LazLogger.Debugln(s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12); end; procedure DbgOut(Args: array of const); begin - dbgout(dbgs(Args)); + LazLogger.DbgOut(dbgs(Args)); end; procedure DbgOut(const s: string); begin - if Assigned(CTDbgOutEvent) then - CTDbgOutEvent(s) - else if TextRec(Output).Mode<>fmClosed then - write(s); + LazLogger.DbgOut(s); end; procedure DbgOut(const s1, s2: string); begin - DbgOut(s1+s2); + LazLogger.DbgOut(s1,s2); end; procedure DbgOut(const s1, s2, s3: string); begin - DbgOut(s1+s2+s3); + LazLogger.DbgOut(s1,s2,s3); end; procedure DbgOut(const s1, s2, s3, s4: string); begin - DbgOut(s1+s2+s3+s4); + LazLogger.DbgOut(s1,s2,s3,s4); end; procedure DbgOut(const s1, s2, s3, s4, s5: string); begin - DbgOut(s1+s2+s3+s4+s5); + LazLogger.DbgOut(s1,s2,s3,s4,s5); end; procedure DbgOut(const s1, s2, s3, s4, s5, s6: string); begin - DbgOut(s1+s2+s3+s4+s5+s6); + LazLogger.DbgOut(s1,s2,s3,s4,s5,s6); end; function DbgS(Args: array of const): string; @@ -2128,38 +2169,37 @@ function DbgS(const c: cardinal): string; begin - Result:=IntToStr(c); + Result:=LazLogger.DbgS(c); end; function DbgS(const i: integer): string; begin - Result:=IntToStr(i); + Result:=LazLogger.DbgS(i); end; function DbgS(const i: QWord): string; begin - Result:=IntToStr(i); + Result:=LazLogger.DbgS(i); end; function DbgS(const i: int64): string; begin - Result:=IntToStr(i); + Result:=LazLogger.DbgS(i); end; function DbgS(const r: TRect): string; begin - Result:=' l='+IntToStr(r.Left)+',t='+IntToStr(r.Top) - +',r='+IntToStr(r.Right)+',b='+IntToStr(r.Bottom); + Result:=LazLogger.DbgS(r); end; function DbgS(const p: TPoint): string; begin - Result:=' x='+IntToStr(p.x)+',y='+IntToStr(p.y); + Result:=LazLogger.DbgS(p); end; function DbgS(const p: pointer): string; begin - Result:=HexStr(p-nil,2*sizeof(PtrInt)); + Result:=LazLogger.DbgS(p); end; function DbgS(const e: extended; MaxDecimals: integer = 999): string; @@ -2178,20 +2218,8 @@ end; function DbgS(const ms: TCustomMemoryStream; Count: PtrInt): string; -var - OldPos: Int64; begin - if Count<0 then - Count:=ms.Size-ms.Position; - if Count=0 then - exit(''); - OldPos:=ms.Position; - try - SetLength(Result,Count); - ms.Read(Result[1],length(Result)); - finally - ms.Position:=OldPos; - end; + Result:=dbgMemStream(ms,Count); end; function DbgSName(const p: TObject): string; @@ -2227,66 +2255,49 @@ end; end; -function DbgStr(const StringWithSpecialChars: string; StartPos, Len: PtrInt - ): string; +function DbgStr(const StringWithSpecialChars: string; StartPos, Len: PtrInt): string; begin Result:=dbgstr(copy(StringWithSpecialChars,StartPos,Len)); end; -function DbgText(const StringWithSpecialChars: string; KeepLines: boolean - ): string; +function DbgText(const StringWithSpecialChars: string; KeepLines: boolean): string; var i: Integer; s: String; - LastChar: Char; c: Char; + l: Integer; begin Result:=StringWithSpecialChars; i:=1; - LastChar:=#0; while (i<=length(Result)) do begin c:=Result[i]; case c of ' '..#126: inc(i); else - s:='#'+IntToStr(ord(c)); - if (c in [#10,#13]) then begin - if ((LastChar in [#10,#13]) - or (i=length(Result)) or (not (Result[i+1] in [#10,#13]))) - then begin - s+=LineEnding; - c:=#0; // line break was handled - end; + if KeepLines and (c in [#10,#13]) then begin + // replace line ending with system line ending + if (i<length(Result)) and (Result[i+1] in [#10,#13]) + and (c<>Result[i+1]) then + l:=2 + else + l:=1; + ReplaceSubstring(Result,i,l,LineEnding); + inc(i,length(LineEnding)); + end else begin + s:='#'+IntToStr(ord(c)); + ReplaceSubstring(Result,i,1,s); + inc(i,length(s)); end; - ReplaceSubstring(Result,i,1,s); - inc(i,length(s)); end; - LastChar:=c; end; end; -function MemSizeString(const s: string): PtrUInt; -begin - Result:=LazDbgLog.MemSizeString(s); -end; - -function MemSizeFPList(const List: TFPList): PtrUInt; -begin - Result:=LazDbgLog.MemSizeFPList(List); -end; - -function GetStringRefCount(const s: string): PtrInt; -begin - Result:=LazDbgLog.GetStringRefCount(s); -end; - function CompareCTMemStat(Stat1, Stat2: TCTMemStat): integer; begin Result:=SysUtils.CompareText(Stat1.Name,Stat2.Name); end; -function CompareNameWithCTMemStat(KeyAnsiString: Pointer; Stat: TCTMemStat - ): integer; +function CompareNameWithCTMemStat(KeyAnsiString: Pointer; Stat: TCTMemStat): integer; begin Result:=SysUtils.CompareText(AnsiString(KeyAnsiString),Stat.Name); end; diff -Nru lazarus-1.4.4+dfsg/components/codetools/finddeclarationcache.pas lazarus-1.6+dfsg/components/codetools/finddeclarationcache.pas --- lazarus-1.4.4+dfsg/components/codetools/finddeclarationcache.pas 2014-02-05 12:07:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/finddeclarationcache.pas 2015-11-12 15:02:04.000000000 +0000 @@ -46,7 +46,7 @@ 1. interface cache: (unit interfaces, not class interfaces) Every FindIdentifierInInterface call is cached - stores: Identifier -> Node+CleanPos - - cache must be deleted, everytime the codetree is rebuild + - cache must be deleted, everytime the codetree is rebuilt this is enough update, because it does only store internals -> This improves search time for interface requests } @@ -106,7 +106,7 @@ } const AllNodeCacheDescs = - AllClasses+[ctnProcedure, ctnWithStatement]; + AllClasses+[ctnProcedure, ctnWithVariable]; type TNodeCacheEntryFlag = (ncefSearchedInParents, ncefSearchedInAncestors); @@ -140,7 +140,7 @@ function FindInRange(Identifier: PChar; CleanStartPos, CleanEndPos: integer): PCodeTreeNodeCacheEntry; function FindNearestAVLNode(Identifier: PChar; - CleanStartPos, CleanEndPos: integer; InFront: boolean): TAVLTreeNode; + CleanStartPos, CleanEndPos: integer; {%H-}InFront: boolean): TAVLTreeNode; function FindNearest(Identifier: PChar; CleanStartPos, CleanEndPos: integer; InFront: boolean): PCodeTreeNodeCacheEntry; @@ -198,11 +198,10 @@ Node- and BaseTypeCache depends on their codetool and the node- and basetypecaches of other codetools (=used codetools). The used codetools dependencies are saved in the TCodeToolDependencies, which is - simple an TAVLTree of codetools. This allows one to decide, wether the cache of - a codetools must be rebuild. + simply an TAVLTree of codetools. This allows one to decide, wether the cache of + a codetools must be rebuilt. } - //---------------------------------------------------------------------------- type @@ -267,7 +266,7 @@ end; //---------------------------------------------------------------------------- - // stacks for circle checking + // stacks for cycle checking const CodeTreeNodeFixedItemCount = 12; type @@ -575,8 +574,10 @@ NewEntry: PInterfaceIdentCacheEntry; OldNode: TAVLTreeNode; begin + if (Identifier<>nil) and (Identifier^ = '&') then + Inc(Identifier); if (GetIdentLen(Identifier)=0) then - RaiseCatchableException(''); + RaiseCatchableException('TInterfaceIdentifierCache.Add: empty identifier'); if FItems=nil then FItems:=TAVLTree.Create(@CompareTInterfaceIdentCacheEntry); OldNode:=FindAVLNode(Identifier); diff -Nru lazarus-1.4.4+dfsg/components/codetools/finddeclarationtool.pas lazarus-1.6+dfsg/components/codetools/finddeclarationtool.pas --- lazarus-1.4.4+dfsg/components/codetools/finddeclarationtool.pas 2015-03-13 00:27:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/finddeclarationtool.pas 2016-01-08 12:42:27.000000000 +0000 @@ -79,7 +79,8 @@ Classes, SysUtils, CodeToolsStrConsts, CodeTree, CodeAtom, CustomCodeTool, SourceLog, KeywordFuncLists, BasicCodeTools, LinkScanner, CodeCache, DirectoryCacher, AVL_Tree, PascalParserTool, - PascalReaderTool, FileProcs, DefineTemplates, FindDeclarationCache; + PascalReaderTool, FileProcs, LazFileUtils, LazUtilities, + DefineTemplates, FindDeclarationCache; type TFindDeclarationTool = class; @@ -101,7 +102,9 @@ vatEdgedBracketOpen, // [ vatEdgedBracketClose,// ] vatAddrOp, // @ - vatKeyword // other keywords + vatKeyword, // other keywords + vatNumber, // decimal, & octal, % binary, $ hex + vatStringConstant // '' or # ); const @@ -120,7 +123,9 @@ 'Bracket[', 'Bracket]', 'AddrOperator@ ', - 'Keyword' + 'Keyword', + 'Number', + 'StringConstant' ); type @@ -169,7 +174,11 @@ // top lvl variable. Calling DoOnIdentifierFound. fdfDoNotCache, // result will not be cached fdfExtractOperand, // operand will be extracted - fdfPropertyResolving // used with fdfExtractOperand to resolve properties to getters + fdfPropertyResolving, // used with fdfExtractOperand to resolve properties to getters + + fdfSearchInHelpers, // search in class/record/type helpers too + fdfSearchInHelpersInTheEnd, // search in helpers after current class (used with inherited call in helper) + fdfTypeType // do not resolve TMyString = type string; ); TFindDeclarationFlags = set of TFindDeclarationFlag; @@ -179,9 +188,9 @@ fdfExtractOperand, fdfPropertyResolving]; fdfGlobalsSameIdent = fdfGlobals+[fdfExceptionOnPredefinedIdent, fdfIgnoreMissingParams, fdfIgnoreUsedUnits, fdfDoNotCache, - fdfOnlyCompatibleProc, fdfSearchInAncestors, fdfCollect]; + fdfOnlyCompatibleProc, fdfSearchInAncestors, fdfCollect, fdfSearchInHelpers]; // initial flags for searches - fdfDefaultForExpressions = [fdfSearchInParentNodes, fdfSearchInAncestors, + fdfDefaultForExpressions = [fdfSearchInParentNodes, fdfSearchInAncestors, fdfSearchInHelpers, fdfExceptionOnNotFound,fdfIgnoreCurContextNode]; type @@ -256,7 +265,7 @@ // Do not define: TExpressionTypeDescs = set of TExpressionTypeDesc; // There are too many enums, so the set would be big and slow -const +var ExpressionTypeDescNames: array[TExpressionTypeDesc] of string = ( 'None', 'Context', @@ -302,8 +311,13 @@ 'Nil' ); +const xtAllTypes = [Low(TExpressionTypeDesc)..High(TExpressionTypeDesc)]-[xtNone]; xtAllPredefinedTypes = xtAllTypes-[xtContext]; + xtAllConstTypes = [xtConstOrdInteger,xtConstBoolean,xtConstReal, + xtConstString,xtConstSet,xtCompilerFunc,xtNil]; + xtAllIdentTypes = xtAllTypes - xtAllConstTypes; + xtAllIdentPredefinedTypes = xtAllIdentTypes - [xtContext]; xtAllIntegerTypes = [xtInt64, xtQWord, xtConstOrdInteger, xtLongint, xtLongWord, xtWord, xtCardinal, xtSmallInt, xtShortInt, xtByte]; @@ -313,6 +327,7 @@ xtAllStringTypes = [xtConstString, xtShortString, xtString, xtAnsiString]; xtAllWideStringTypes = [xtConstString, xtWideString, xtUnicodeString]; xtAllPointerTypes = [xtPointer, xtNil]; + xtAllTypeHelperTypes = xtAllPredefinedTypes-[xtCompilerFunc,xtVariant,xtNil]; xtAllStringCompatibleTypes = xtAllStringTypes+[xtChar]; xtAllWideStringCompatibleTypes = xtAllWideStringTypes+[xtWideChar,xtChar]; @@ -379,7 +394,49 @@ function AsString: string; function CalcMemSize: PtrUInt; end; - + +type + + { TOperand } + + TOperand = record + Expr: TExpressionType; + AliasType: TFindContext; + end; + + //---------------------------------------------------------------------------- + // TTypeAliasOrderList is used for comparing type aliases in binary operators + + TTypeAliasItem = class + public + AliasName: string; + Position: Integer; + end; + + TTypeAliasOrderList = class + private + FTree: TAVLTree; + public + constructor Create(const AliasNames: array of string); + destructor Destroy; override; + + procedure Add(const AliasName: string); + procedure Add(const AliasNames: array of string); + procedure Insert(const AliasName: string; const Pos: Integer); + procedure InsertBefore(const AliasName, BeforeAlias: string); + procedure InsertAfter(const AliasName, AfterAlias: string); + procedure Delete(const Pos: Integer); + procedure Delete(const AliasName: string); + function IndexOf(const AliasName: string): Integer; + function Compare(const AliasName1, AliasName2: string): Integer; + function Compare(const Operand1, Operand2: TOperand; + Tool: TFindDeclarationTool; CleanPos: Integer): TOperand; + end; + + function CompareTypeAliasItems(Item1, Item2: Pointer): Integer; + function CompareTypeAliasItemString(AliasName, Item: Pointer): Integer; + +type //---------------------------------------------------------------------------- // TFoundProc is used for comparing overloaded procs PFoundProc = ^TFoundProc; @@ -416,6 +473,55 @@ TOnGetDirectoryCache = function(const ADirectory: string ): TCTDirectoryCache of object; + TFDHelpersListKind = ( + fdhlkDelphiHelper, + fdhlkObjCCategory + ); + + { TFDHelpersListItem } + + TFDHelpersListItem = class(TObject) + ForExprType: TExpressionType; + HelperContext: TFindContext; // Node.Desc (ctnClassHelper, ctnRecordHelper, ctnTypeHelper) or (ctnObjCCategory) + function CalcMemSize: PtrUInt; + end; + + { TFDHelpersListRec } + + TFDHelpersListRec = record + ForExprType: TExpressionType; + HelperContext: TFindContext; + end; + + { TFDHelpersList } + + TFDHelpersList = class + private + FKind: TFDHelpersListKind; + FTree: TAVLTree; { tree of TFDHelpersListItem sorted for CompareHelpersList. + Nodes with same key (ForExprType) are chronologically ordered from left to right. } + procedure AddChronologically(Item: TFDHelpersListItem); + public + function AddFromHelperNode(HelperNode: TCodeTreeNode; + Tool: TFindDeclarationTool; Replace: Boolean): TFDHelpersListItem; + procedure AddFromList(const ExtList: TFDHelpersList); + function IterateFromClassNode(ClassNode: TCodeTreeNode; + Tool: TFindDeclarationTool; out HelperContext: TFindContext; out Iterator: TAVLTreeNode): boolean; // returns newest (rightmost) + function GetNext(out HelperContext: TFindContext; var Iterator: TAVLTreeNode): boolean; + function FindFromExprType(const ExprType: TExpressionType): TFindContext; // returns newest (rightmost) + procedure DeleteHelperNode(HelperNode: TCodeTreeNode; Tool: TFindDeclarationTool); + constructor Create(aKind: TFDHelpersListKind); + destructor Destroy; override; + procedure Clear; + function Count: Integer; + function CalcMemSize: PtrUInt; + procedure WriteDebugReport; + property Kind: TFDHelpersListKind read FKind; + property Tree: TAVLTree read FTree; + end; + + { TGenericParams } + TGenericParams = record ParamValuesTool: TFindDeclarationTool; SpecializeParamsNode: TCodeTreeNode; @@ -456,6 +562,9 @@ FFoundProcStackFirst: PFoundProc;//list of all saved PFoundProc FFoundProcStackLast: PFoundProc; FExtractedOperand: string; + FHelpers: array[TFDHelpersListKind] of TFDHelpersList; + FFreeHelpers: array[TFDHelpersListKind] of Boolean; + FNeedHelpers: Boolean; procedure ClearFoundProc; procedure FreeFoundProc(aFoundProc: PFoundProc; FreeNext: boolean); procedure RemoveFoundProcFromList(aFoundProc: PFoundProc); @@ -479,6 +588,9 @@ // input parameters: Flags: TFindDeclarationFlags; Identifier: PChar; + StartTool: TFindDeclarationTool; + StartNode: TCodeTreeNode; + Parent: TFindDeclarationParams; ContextNode: TCodeTreeNode; OnIdentifierFound: TOnIdentifierFound; IdentifierTool: TFindDeclarationTool; @@ -494,7 +606,8 @@ NewPos: TCodeXYPosition; NewTopLine: integer; NewFlags: TFoundDeclarationFlags; - constructor Create; + constructor Create(ParentParams: TFindDeclarationParams = nil); + constructor Create(Tool: TFindDeclarationTool; AContextNode: TCodeTreeNode); destructor Destroy; override; procedure Clear; procedure Save(out Input: TFindDeclarationInput); @@ -508,6 +621,7 @@ procedure SetIdentifier(NewIdentifierTool: TFindDeclarationTool; NewIdentifier: PChar; NewOnIdentifierFound: TOnIdentifierFound); procedure WriteDebugReport; + function GetHelpers(HelperKind: TFDHelpersListKind; CreateIfNotExists: boolean = false): TFDHelpersList; end; @@ -558,6 +672,7 @@ FAdjustTopLineDueToComment: boolean; FDirectoryCache: TCTDirectoryCache; FInterfaceIdentifierCache: TInterfaceIdentifierCache; + FInterfaceHelperCache: array[TFDHelpersListKind] of TFDHelpersList; FOnFindUsedUnit: TOnFindUsedUnit; FOnGetCodeToolForBuffer: TOnGetCodeToolForBuffer; FOnGetDirectoryCache: TOnGetDirectoryCache; @@ -598,6 +713,8 @@ function FindIdentifierInWithVarContext(WithVarNode: TCodeTreeNode; Params: TFindDeclarationParams): boolean; function FindIdentifierInAncestors(ClassNode: TCodeTreeNode; + Params: TFindDeclarationParams; var IdentFoundResult: TIdentifierFoundResult): boolean; + function FindIdentifierInAncestors(ClassNode: TCodeTreeNode; Params: TFindDeclarationParams): boolean; function FindIdentifierInUsesSection(UsesNode: TCodeTreeNode; Params: TFindDeclarationParams): boolean; // ToDo: dotted @@ -615,7 +732,7 @@ // node caches procedure DoDeleteNodes(StartNode: TCodeTreeNode); override; function CheckDependsOnNodeCaches(CheckedTools: TAVLTree = nil): boolean; - procedure ClearNodeCaches(Force: boolean); + procedure ClearNodeCaches; procedure ClearDependentNodeCaches; procedure ClearDependsOnToolRelationships; procedure AddToolDependency(DependOnTool: TFindDeclarationTool); @@ -644,9 +761,10 @@ MaxEndPos: integer = -1; AliasType: PFindContext = nil): TExpressionType; function FindExpressionTypeOfPredefinedIdentifier(StartPos: integer; Params: TFindDeclarationParams): TExpressionType; - function CalculateBinaryOperator(LeftOperand, RightOperand: TExpressionType; + function GetDefaultStringType: TExpressionTypeDesc; + function CalculateBinaryOperator(LeftOperand, RightOperand: TOperand; BinaryOperator: TAtomPosition; - Params: TFindDeclarationParams): TExpressionType; + Params: TFindDeclarationParams): TOperand; function GetParameterNode(Node: TCodeTreeNode): TCodeTreeNode; function GetExpressionTypeOfTypeIdentifier( Params: TFindDeclarationParams): TExpressionType; @@ -657,17 +775,17 @@ out ExprType: TExpressionType): string; function FindEnumeratorOfClass(ClassNode: TCodeTreeNode; ExceptionOnNotFound: boolean; out ExprType: TExpressionType; - AliasType: PFindContext = nil): boolean; + AliasType: PFindContext = nil; ParentParams: TFindDeclarationParams = nil): boolean; function FindOperatorEnumerator(Node: TCodeTreeNode; ExprType: TExpressionType; Need: TFindOperatorEnumerator; out ResultExprType: TExpressionType): boolean; function FindEnumerationTypeOfSetType(SetTypeNode: TCodeTreeNode; out Context: TFindContext): boolean; function FindElementTypeOfArrayType(ArrayNode: TCodeTreeNode; - out ExprType: TExpressionType): boolean; + out ExprType: TExpressionType; AliasType: PFindContext): boolean; function CheckOperatorEnumerator(Params: TFindDeclarationParams; const FoundContext: TFindContext): TIdentifierFoundResult; - function CheckModifierEnumeratorCurrent(Params: TFindDeclarationParams; + function CheckModifierEnumeratorCurrent({%H-}Params: TFindDeclarationParams; const FoundContext: TFindContext): TIdentifierFoundResult; function IsTermEdgedBracket(TermPos: TAtomPosition; out EdgedBracketsStartPos: integer): boolean; @@ -676,12 +794,14 @@ function FindSetOfEnumerationType(EnumNode: TCodeTreeNode): TCodeTreeNode; function FindPointerOfIdentifier(TypeNode: TCodeTreeNode): TCodeTreeNode; function FindExprTypeAsString(const ExprType: TExpressionType; - TermCleanPos: integer; Params: TFindDeclarationParams; + TermCleanPos: integer; AliasType: PFindContext = nil): string; protected function CheckSrcIdentifier(Params: TFindDeclarationParams; const FoundContext: TFindContext): TIdentifierFoundResult; function FindDeclarationOfIdentAtParam( + Params: TFindDeclarationParams; out ExprType: TExpressionType): boolean; + function FindDeclarationOfIdentAtParam( Params: TFindDeclarationParams): boolean; function IdentifierIsDefined(const IdentAtom: TAtomPosition; ContextNode: TCodeTreeNode; Params: TFindDeclarationParams): boolean; @@ -691,11 +811,9 @@ FindClassContext, ExceptionOnNotFound: boolean): TCodeTreeNode; function FindClassMember(aClassNode: TCodeTreeNode; Identifier: PChar): TCodeTreeNode; function FindForwardIdentifier(Params: TFindDeclarationParams; - var IsForward: boolean): boolean; + out IsForward: boolean): boolean; function FindNonForwardClass(ForwardNode: TCodeTreeNode): TCodeTreeNode; function FindNonForwardClass(Params: TFindDeclarationParams): boolean; - function FindCodeToolForUsedUnit(const AnUnitName, AnUnitInFilename: string; - ExceptionOnNotFound: boolean): TFindDeclarationTool; function FindIdentifierInInterface(AskingTool: TFindDeclarationTool; Params: TFindDeclarationParams): boolean; function CompareNodeIdentifier(Node: TCodeTreeNode; @@ -729,7 +847,7 @@ out ParameterIndex: integer): boolean; procedure OnFindUsedUnitIdentifier(Sender: TPascalParserTool; IdentifierCleanPos: integer; Range: TEPRIRange; - Node: TCodeTreeNode; Data: Pointer; var Abort: boolean); + Node: TCodeTreeNode; Data: Pointer; var {%H-}Abort: boolean); protected public constructor Create; @@ -751,6 +869,10 @@ SearchSmartFlags: TFindSmartFlags; out NewTool: TFindDeclarationTool; out NewNode: TCodeTreeNode; out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; + function FindDeclaration(const CursorPos: TCodeXYPosition; + SearchSmartFlags: TFindSmartFlags; + out NewExprType: TExpressionType; + out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; function FindDeclarationInInterface(const Identifier: string; out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; function FindDeclarationWithMainUsesSection(const Identifier: string; @@ -767,13 +889,11 @@ function FindSubDeclaration(Identifier: string; ParentNode: TCodeTreeNode ): TCodeTreeNode; // search for type, const, var, proc, prop - function FindInitializationSection: TCodeTreeNode; deprecated; // use FindInitializationNode - function FindMainUsesSection(UseContainsSection: boolean = false): TCodeTreeNode; - function FindImplementationUsesSection: TCodeTreeNode; - function FindNameInUsesSection(UsesNode: TCodeTreeNode; - const AUnitName: string): TCodeTreeNode; - function FindUnitInUsesSection(UsesNode: TCodeTreeNode; - const AnUnitName: string; + function FindInitializationSection: TCodeTreeNode; deprecated 'Use FindInitializationNode instead.'; + function FindMainUsesSection(UseContainsSection: boolean = false): TCodeTreeNode; deprecated 'Use FindMainUsesNode instead.'; + function FindImplementationUsesSection: TCodeTreeNode; deprecated 'Use FindImplementationUsesNode instead.'; + function FindNameInUsesSection(UsesNode: TCodeTreeNode; const AUnitName: string): TCodeTreeNode; + function FindUnitInUsesSection(UsesNode: TCodeTreeNode; const AnUnitName: string; out NamePos, InPos: TAtomPosition): boolean; function FindUnitInAllUsesSections(const AnUnitName: string; out NamePos, InPos: TAtomPosition): boolean; @@ -781,6 +901,8 @@ function GetUnitForUsesSection(TargetTool: TFindDeclarationTool): string; deprecated; function IsHiddenUsedUnit(TheUnitName: PChar): boolean; + function FindCodeToolForUsedUnit(const AnUnitName, AnUnitInFilename: string; + ExceptionOnNotFound: boolean): TFindDeclarationTool; function FindUnitSource(const AnUnitName, AnUnitInFilename: string; ExceptionOnNotFound: boolean; ErrorPos: integer = 0): TCodeBuffer; @@ -793,7 +915,7 @@ function FindSmartHint(const CursorPos: TCodeXYPosition; Flags: TFindSmartFlags = DefaultFindSmartHintFlags): string; function GetSmartHint(Node: TCodeTreeNode; XYPos: TCodeXYPosition; - WithPosition: boolean): string; + WithPosition: boolean; WithDefinition: boolean = True): string; function BaseTypeOfNodeHasSubIdents(ANode: TCodeTreeNode): boolean; function FindBaseTypeOfNode(Params: TFindDeclarationParams; @@ -812,9 +934,9 @@ // ancestors function FindClassAndAncestors(ClassNode: TCodeTreeNode; - out ListOfPFindContext: TFPList; ExceptionOnNotFound: boolean - ): boolean; // without interfaces - function FindContextClassAndAncestors(const CursorPos: TCodeXYPosition; + var ListOfPFindContext: TFPList; ExceptionOnNotFound: boolean + ): boolean; // without interfaces, recursive + function FindContextClassAndAncestorsAndExtendedClassOfHelper(const CursorPos: TCodeXYPosition; var ListOfPFindContext: TFPList): boolean; // without interfaces function FindAncestorOfClass(ClassNode: TCodeTreeNode; Params: TFindDeclarationParams; FindClassContext: boolean): boolean; // returns false for TObject, IInterface, IUnknown @@ -825,7 +947,9 @@ function FindAncestorsOfClass(ClassNode: TCodeTreeNode; var ListOfPFindContext: TFPList; Params: TFindDeclarationParams; FindClassContext: boolean; - ExceptionOnNotFound: boolean = true): boolean; // with interfaces + ExceptionOnNotFound: boolean = true): boolean; // with interfaces, not recursive + + function FindExtendedExprOfHelper(HelperNode: TCodeTreeNode): TExpressionType; function FindReferences(const CursorPos: TCodeXYPosition; SkipComments: boolean; out ListOfPCodeXYPosition: TFPList): boolean; @@ -841,7 +965,16 @@ function CleanPosIsDeclarationIdentifier(CleanPos: integer; Node: TCodeTreeNode): boolean; + procedure FindHelpersInContext(Params: TFindDeclarationParams); + procedure FindHelpersInUsesSection(UsesNode: TCodeTreeNode; + Params: TFindDeclarationParams); + procedure FindHelpersInInterface(AskingTool: TFindDeclarationTool; + Params: TFindDeclarationParams); + function FindIdentifierInContext(Params: TFindDeclarationParams; + var IdentFoundResult: TIdentifierFoundResult): boolean; function FindIdentifierInContext(Params: TFindDeclarationParams): boolean; + function FindIdentifierInBasicTypeHelpers(ExprType: TExpressionTypeDesc; + Params: TFindDeclarationParams): Boolean; function FindNthParameterNode(Node: TCodeTreeNode; ParameterIndex: integer): TCodeTreeNode; function GetFirstParameterNode(Node: TCodeTreeNode): TCodeTreeNode; @@ -849,7 +982,7 @@ TargetExprParamList: TExprTypeList; FirstSourceParameterNode: TCodeTreeNode; Params: TFindDeclarationParams; - CompatibilityList: TTypeCompatibilityList): TTypeCompatibility; + CompatibilityList: TTypeCompatibilityList = nil): TTypeCompatibility; function CreateParamExprListFromProcNode(ProcNode: TCodeTreeNode; Params: TFindDeclarationParams): TExprTypeList; @@ -888,8 +1021,8 @@ function CreateExpressionType(const Desc, SubDesc: TExpressionTypeDesc; const Context: TFindContext): TExpressionType; -function FindContextToString(const FindContext: TFindContext): string; overload; -function FindContextToString(const FindContext: PFindContext): string; overload; +function FindContextToString(const FindContext: TFindContext; RelativeFilename: boolean = true): string; overload; +function FindContextToString(const FindContext: PFindContext; RelativeFilename: boolean = true): string; overload; function CreateFindContext(NewTool: TFindDeclarationTool; NewNode: TCodeTreeNode): TFindContext; function CreateFindContext(Params: TFindDeclarationParams): TFindContext; @@ -909,9 +1042,22 @@ function dbgs(const Flags: TFindDeclarationFlags): string; overload; function dbgs(const Flags: TFoundDeclarationFlags): string; overload; function dbgs(const vat: TVariableAtomType): string; overload; +function dbgs(const Kind: TFDHelpersListKind): string; overload; + + +function BooleanTypesOrderList: TTypeAliasOrderList; +function IntegerTypesOrderList: TTypeAliasOrderList; +function RealTypesOrderList: TTypeAliasOrderList; +function StringTypesOrderList: TTypeAliasOrderList; implementation +var + FBooleanTypesOrderList: TTypeAliasOrderList; + FIntegerTypesOrderList: TTypeAliasOrderList; + FRealTypesOrderList: TTypeAliasOrderList; + FStringTypesOrderList: TTypeAliasOrderList; + type { TFindUsedUnitReferences } @@ -922,6 +1068,7 @@ TargetUnitName: string; ListOfPCodeXYPosition: TFPList; Params: TFindDeclarationParams; + constructor Create(Tool: TFindDeclarationTool; AContextNode: TCodeTreeNode); destructor Destroy; override; end; @@ -962,6 +1109,51 @@ Result:=VariableAtomTypeNames[vat]; end; +function dbgs(const Kind: TFDHelpersListKind): string; +begin + WriteStr(Result, Kind); +end; + +function BooleanTypesOrderList: TTypeAliasOrderList; +begin + if FBooleanTypesOrderList=nil then + FBooleanTypesOrderList:=TTypeAliasOrderList.Create([ + 'LongBool', 'WordBool', 'Boolean', 'ByteBool']); + + Result := FBooleanTypesOrderList; +end; + +function IntegerTypesOrderList: TTypeAliasOrderList; +begin + if FIntegerTypesOrderList=nil then + FIntegerTypesOrderList:=TTypeAliasOrderList.Create([ + 'Int64', 'QWord', + 'NativeInt', 'IntPtr', 'SizeInt', 'NativeUInt', 'UIntPtr', + 'Int32', 'Integer', 'LongInt', 'UInt32', 'Cardinal', 'LongWord', + 'Int16', 'SmallInt', 'UInt16', 'Word', + 'Int8', 'ShortInt', 'UInt8', 'Byte']); + + Result := FIntegerTypesOrderList; +end; + +function RealTypesOrderList: TTypeAliasOrderList; +begin + if FRealTypesOrderList=nil then + FRealTypesOrderList:=TTypeAliasOrderList.Create([ + 'Extended', 'Double', 'Single']); + + Result := FRealTypesOrderList; +end; + +function StringTypesOrderList: TTypeAliasOrderList; +begin + if FStringTypesOrderList=nil then + FStringTypesOrderList:=TTypeAliasOrderList.Create([ + 'string', 'AnsiString', 'WideString', 'ShortString', 'Char', 'WideChar', 'AnsiChar']); + + Result := FStringTypesOrderList; +end; + function ListOfPFindContextToStr(const ListOfPFindContext: TFPList): string; var Context: TFindContext; @@ -978,7 +1170,7 @@ end; end; -function DbgsFC(const Context: TFindContext): string; +function dbgsFC(const Context: TFindContext): string; var CursorPos: TCodeXYPosition; begin @@ -1085,6 +1277,22 @@ Result:=xtNone; end; +function CompareTypeAliasItems(Item1, Item2: Pointer): Integer; +var + xItem1: TTypeAliasItem absolute Item1; + xItem2: TTypeAliasItem absolute Item2; +begin + Result := CompareIdentifiers(PChar(xItem1.AliasName), PChar(xItem2.AliasName)); +end; + +function CompareTypeAliasItemString(AliasName, Item: Pointer): Integer; +var + xAliasName: PChar absolute AliasName; + xItem: TTypeAliasItem absolute Item; +begin + Result := CompareIdentifiers(xAliasName, PChar(xItem.AliasName)); +end; + function ExprTypeToString(const ExprType: TExpressionType): string; begin Result:='Desc='+ExpressionTypeDescNames[ExprType.Desc] @@ -1102,14 +1310,16 @@ { TFindContext } -function FindContextToString(const FindContext: TFindContext): string; +function FindContextToString(const FindContext: TFindContext; + RelativeFilename: boolean): string; var IdentNode: TCodeTreeNode; Caret: TCodeXYPosition; + aFilename: String; begin Result:=''; if FindContext.Node<>nil then begin - Result:=Result+'Node='+FindContext.Node.DescAsString; + Result:=Result+'Node="'+FindContext.Node.DescAsString+'"'; IdentNode:=FindContext.Node; while (IdentNode<>nil) do begin if IdentNode.Desc in AllSimpleIdentifierDefinitions @@ -1134,22 +1344,28 @@ if FindContext.Tool<>nil then begin if FindContext.Tool.CleanPosToCaret(FindContext.Node.StartPos,Caret) then begin - Result:=Result+' File='+Caret.Code.Filename - +'('+IntToStr(Caret.Y)+','+IntToStr(Caret.X)+')'; + aFilename:=Caret.Code.Filename; + if RelativeFilename then + aFilename:=ExtractRelativepath(ExtractFilePath(FindContext.Tool.MainFilename),aFilename); + Result:=Result+' File='+aFilename+'('+IntToStr(Caret.Y)+','+IntToStr(Caret.X)+')'; end else begin - Result:=Result+' File="'+FindContext.Tool.MainFilename+'"'; + aFilename:=FindContext.Tool.MainFilename; + if RelativeFilename then + aFilename:=ExtractFileName(aFilename); + Result:=Result+' File="'+aFilename+'"'; end; end; end else Result:='nil'; end; -function FindContextToString(const FindContext: PFindContext): string; +function FindContextToString(const FindContext: PFindContext; + RelativeFilename: boolean): string; begin if FindContext=nil then Result:='-' else - Result:=FindContextToString(FindContext^); + Result:=FindContextToString(FindContext^,RelativeFilename); end; function CreateFindContext(NewTool: TFindDeclarationTool; @@ -1230,6 +1446,388 @@ ListOfPFindContext:=nil; end; +{ TTypeAliasOrderList } + +constructor TTypeAliasOrderList.Create(const AliasNames: array of string); +begin + inherited Create; + + FTree := TAVLTree.Create(@CompareTypeAliasItems); + Add(AliasNames); +end; + +procedure TTypeAliasOrderList.Add(const AliasNames: array of string); +var + AliasName: string; +begin + for AliasName in AliasNames do + Add(AliasName); +end; + +procedure TTypeAliasOrderList.Add(const AliasName: string); +var + NewItem: TTypeAliasItem; +begin + if IndexOf(AliasName) > -1 then Exit; + + NewItem := TTypeAliasItem.Create; + NewItem.AliasName := AliasName; + NewItem.Position := FTree.Count; + FTree.Add(NewItem); +end; + +function TTypeAliasOrderList.Compare(const AliasName1, AliasName2: string + ): Integer; +var + xAliasIndex1, xAliasIndex2: Integer; +begin + xAliasIndex1 := IndexOf(AliasName1); + xAliasIndex2 := IndexOf(AliasName2); + if (xAliasIndex1=-1) and (xAliasIndex2=-1) then + Exit(0) + else if (xAliasIndex2=-1) then + Exit(-1) + else if (xAliasIndex1=-1) then + Exit(1) + else + Result := xAliasIndex1-xAliasIndex2; +end; + +function TTypeAliasOrderList.Compare(const Operand1, + Operand2: TOperand; Tool: TFindDeclarationTool; CleanPos: Integer + ): TOperand; +var + xCompRes: Integer; +begin + // first check if one of the operands is a constant -> if yes, automatically + // return the other + // (x := f + 1; should return always type of f) + if (Operand1.Expr.Desc in xtAllConstTypes) and not (Operand2.Expr.Desc in xtAllConstTypes) then + Exit(Operand2) + else + if (Operand2.Expr.Desc in xtAllConstTypes) and not (Operand1.Expr.Desc in xtAllConstTypes) then + Exit(Operand1); + + // then compare base types + xCompRes := Compare( + Tool.FindExprTypeAsString(Operand1.Expr, CleanPos, nil), + Tool.FindExprTypeAsString(Operand2.Expr, CleanPos, nil)); + // if base types are same, compare aliases + if xCompRes = 0 then + xCompRes := Compare( + Tool.FindExprTypeAsString(Operand1.Expr, CleanPos, @Operand1.AliasType), + Tool.FindExprTypeAsString(Operand2.Expr, CleanPos, @Operand2.AliasType)); + if xCompRes > 0 then + Result := Operand2 + else + Result := Operand1; +end; + +procedure TTypeAliasOrderList.Delete(const Pos: Integer); +var + xAVItem, xDelItem: TAVLTreeNode; + xItem: TTypeAliasItem; +begin + xDelItem := nil; + for xAVItem in FTree do + begin + xItem := TTypeAliasItem(xAVItem.Data); + if xItem.Position = Pos then + xDelItem := xAVItem + else if xItem.Position > Pos then + Dec(xItem.Position); + end; + + if xDelItem<>nil then + FTree.FreeAndDelete(xDelItem); +end; + +procedure TTypeAliasOrderList.Delete(const AliasName: string); +var + xIndex: Integer; +begin + xIndex := IndexOf(AliasName); + if xIndex<0 then Exit; + Delete(xIndex); +end; + +destructor TTypeAliasOrderList.Destroy; +begin + FTree.FreeAndClear; + FTree.Free; + + inherited Destroy; +end; + +function TTypeAliasOrderList.IndexOf(const AliasName: string): Integer; +var + xAVNode: TAVLTreeNode; +begin + xAVNode := FTree.FindKey(PChar(AliasName), @CompareTypeAliasItemString); + if xAVNode<>nil then + Result := TTypeAliasItem(xAVNode.Data).Position + else + Result := -1; +end; + +procedure TTypeAliasOrderList.Insert(const AliasName: string; const Pos: Integer + ); +var + xAVItem: TAVLTreeNode; + xItem, NewItem: TTypeAliasItem; +begin + for xAVItem in FTree do + begin + xItem := TTypeAliasItem(xAVItem.Data); + if xItem.Position >= Pos then + Inc(xItem.Position); + end; + + NewItem := TTypeAliasItem.Create; + NewItem.AliasName := AliasName; + NewItem.Position := Pos; + FTree.Add(NewItem); +end; + +procedure TTypeAliasOrderList.InsertAfter(const AliasName, AfterAlias: string); +var + xIndex: Integer; +begin + if IndexOf(AliasName) = -1 then + begin + xIndex := IndexOf(AfterAlias); + if xIndex >= 0 then + Insert(AliasName, xIndex+1) + else + Add(AliasName); + end; +end; + +procedure TTypeAliasOrderList.InsertBefore(const AliasName, BeforeAlias: string + ); +var + xIndex: Integer; +begin + if IndexOf(AliasName) = -1 then + begin + xIndex := IndexOf(BeforeAlias); + if xIndex >= 0 then + Insert(AliasName, xIndex) + else + Add(AliasName); + end; +end; + +{ TFDHelpersListItem } + +function TFDHelpersListItem.CalcMemSize: PtrUInt; +begin + Result := InstanceSize; +end; + +{ TFDHelpersList } + +function CompareHelpersList(Item1, Item2: Pointer): Integer; +var + I1: TFDHelpersListItem absolute Item1; + I2: TFDHelpersListItem absolute Item2; +begin + Result := ord(I1.ForExprType.Desc)-ord(I2.ForExprType.Desc); + if Result<>0 then exit; + Result := ComparePointers(I1.ForExprType.Context.Node, I2.ForExprType.Context.Node); +end; + +function CompareHelpersListExprType(Item1, Item2: Pointer): Integer; +var + I1: PExpressionType absolute Item1; + I2: TFDHelpersListItem absolute Item2; +begin + Result := ord(I1^.Desc)-ord(I2.ForExprType.Desc); + if Result<>0 then exit; + Result := ComparePointers(I1^.Context.Node, I2.ForExprType.Context.Node); +end; + +procedure TFDHelpersList.AddFromList(const ExtList: TFDHelpersList); + function CopyNode(ANode: TAVLTreeNode): TFDHelpersListItem; + var + FromNode: TFDHelpersListItem; + begin + FromNode := TFDHelpersListItem(ANode.Data); + if Kind=fdhlkDelphiHelper then + if FTree.FindKey(FromNode, @CompareHelpersList) <> nil then + Exit;//FPC & Delphi don't support duplicate class helpers! + Result := TFDHelpersListItem.Create; + Result.HelperContext := FromNode.HelperContext; + Result.ForExprType := FromNode.ForExprType; + AddChronologically(Result); + end; +var + Node: TAVLTreeNode; +begin + for Node in ExtList.FTree do + CopyNode(Node); +end; + +function TFDHelpersList.CalcMemSize: PtrUInt; +var + Node: TAVLTreeNode; +begin + Result:=PtrUInt(InstanceSize)+PtrUInt(FTree.InstanceSize); + for Node in FTree do + Inc(Result, TFDHelpersListItem(Node.Data).CalcMemSize); +end; + +procedure TFDHelpersList.WriteDebugReport; +var + Node: TAVLTreeNode; + Item: TFDHelpersListItem; +begin + debugln(['TFDHelpersList.WriteDebugReport ',dbgs(Kind),' Count=',FTree.Count]); + Node:=FTree.FindLowest; + while Node<>nil do begin + Item:=TFDHelpersListItem(Node.Data); + debugln([' ForExprType=[',ExprTypeToString(Item.ForExprType),']', + ' Helper=[',FindContextToString(Item.HelperContext),']']); + Node:=FTree.FindSuccessor(Node); + end; +end; + +procedure TFDHelpersList.AddChronologically(Item: TFDHelpersListItem); +begin + with Item.ForExprType.Context do begin + // Note: ObjCCategory allows multiple helpers for a class (here: ForExprType) + // => there can be multiple items with the same key in the tree which + // must be chronologically sorted + // -> append the new item rightmost by slightly increasing the key + Node:=TCodeTreeNode(Pointer(Node)-SizeOf(Pointer)); + FTree.Add(Item); + Node:=TCodeTreeNode(Pointer(Node)+SizeOf(Pointer)); + end; +end; + +function TFDHelpersList.AddFromHelperNode(HelperNode: TCodeTreeNode; + Tool: TFindDeclarationTool; Replace: Boolean): TFDHelpersListItem; +var + OldKey: TAVLTreeNode; + ExprType: TExpressionType; +begin + //debugln(['TFDHelpersList.AddFromHelperNode Start ',Tool.CleanPosToStr(HelperNode.StartPos,true),' ',Tool.ExtractCode(HelperNode.StartPos,HelperNode.StartPos+20,[])]); + ExprType:=Tool.FindExtendedExprOfHelper(HelperNode); + //debugln(['TFDHelpersList.AddFromHelperNode ExprType=',ExprTypeToString(ExprType)]); + + if ExprType.Desc in xtAllIdentTypes then + begin + if Kind=fdhlkDelphiHelper then begin + // class/type/record helpers only allow one helper per class + OldKey := FTree.FindKey(@ExprType, @CompareHelpersListExprType); + if OldKey <> nil then + begin + Result:=TFDHelpersListItem(OldKey.Data); + if Replace then begin + // keep AVLNode, it may be in use by the iterator of SearchInHelpers + Result.HelperContext.Node := HelperNode; + Result.HelperContext.Tool := Tool; + end; + exit; + end; + end; + + Result := TFDHelpersListItem.Create; + Result.ForExprType := ExprType; + Result.HelperContext.Node := HelperNode; + Result.HelperContext.Tool := Tool; + AddChronologically(Result); + end else + Result := nil; +end; + +procedure TFDHelpersList.Clear; +begin + FTree.FreeAndClear; +end; + +function TFDHelpersList.Count: Integer; +begin + Result := FTree.Count; +end; + +constructor TFDHelpersList.Create(aKind: TFDHelpersListKind); +begin + inherited Create; + FKind:=aKind; + FTree:=TAVLTree.Create(@CompareHelpersList); +end; + +procedure TFDHelpersList.DeleteHelperNode(HelperNode: TCodeTreeNode; + Tool: TFindDeclarationTool); +var + OldKey: TAVLTreeNode; + ExprType: TExpressionType; +begin + ExprType:=Tool.FindExtendedExprOfHelper(HelperNode); + + if ExprType.Desc in xtAllIdentTypes then + begin + OldKey := FTree.FindKey(@ExprType, @CompareHelpersListExprType); + if OldKey <> nil then + FTree.FreeAndDelete(OldKey); + end; +end; + +destructor TFDHelpersList.Destroy; +begin + Clear; + FTree.Free; + inherited Destroy; +end; + +function TFDHelpersList.IterateFromClassNode(ClassNode: TCodeTreeNode; + Tool: TFindDeclarationTool; out HelperContext: TFindContext; out + Iterator: TAVLTreeNode): boolean; +var + ExprType: TExpressionType; +begin + ExprType.Desc:=xtContext; + ExprType.Context.Node:=ClassNode; + ExprType.Context.Tool:=Tool; + Iterator := FTree.FindRightMostKey(@ExprType, @CompareHelpersListExprType); + if Iterator=nil then exit(false); + HelperContext:=TFDHelpersListItem(Iterator.Data).HelperContext; + Result:=true; +end; + +function TFDHelpersList.GetNext(out HelperContext: TFindContext; + var Iterator: TAVLTreeNode): boolean; +var + NextNode: TAVLTreeNode; +begin + NextNode:=FTree.FindPrecessor(Iterator); + if (NextNode=nil) or (CompareHelpersList(NextNode.Data,Iterator.Data)<>0) then + exit(false); + // found an older compatible helper + Iterator:=NextNode; + HelperContext:=TFDHelpersListItem(Iterator.Data).HelperContext; + Result:=true; +end; + +function TFDHelpersList.FindFromExprType(const ExprType: TExpressionType + ): TFindContext; +var + Node: TAVLTreeNode; +begin + Node := FTree.FindRightMostKey(@ExprType, @CompareHelpersListExprType); + if Node<>nil then + Result := TFDHelpersListItem(Node.Data).HelperContext + else + Result := CleanFindContext; +end; + +constructor TFindUsedUnitReferences.Create(Tool: TFindDeclarationTool; AContextNode: TCodeTreeNode); +begin + inherited Create; + Params:=TFindDeclarationParams.Create(Tool, AContextNode); +end; + destructor TFindUsedUnitReferences.Destroy; begin FreeAndNil(Params); @@ -1283,12 +1881,11 @@ // find CodeTreeNode at cursor CursorNode:=BuildSubTreeAndFindDeepestNodeAtPos(CleanCursorPos,true); // search - Params:=TFindDeclarationParams.Create; - Params.ContextNode:=CursorNode; + Params:=TFindDeclarationParams.Create(Self, CursorNode); Params.SetIdentifier(Self,Identifier,nil); Params.Flags:=[fdfSearchInParentNodes,fdfExceptionOnNotFound, fdfExceptionOnPredefinedIdent, - fdfTopLvlResolving,fdfSearchInAncestors, + fdfTopLvlResolving,fdfSearchInAncestors,fdfSearchInHelpers, fdfIgnoreCurContextNode]; FindIdentifierInContext(Params); // convert result to nice source position @@ -1304,9 +1901,8 @@ end; function TFindDeclarationTool.FindDeclaration(const CursorPos: TCodeXYPosition; - SearchSmartFlags: TFindSmartFlags; - out NewTool: TFindDeclarationTool; out NewNode: TCodeTreeNode; - out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; + SearchSmartFlags: TFindSmartFlags; out NewExprType: TExpressionType; out + NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; var CleanCursorPos: integer; CursorNode, ClassNode: TCodeTreeNode; @@ -1412,18 +2008,18 @@ NamePos: TAtomPosition; begin Result:=false; - NewTool:=nil; - NewNode:=nil; + NewExprType :=CleanExpressionType; if Assigned(FOnGetCodeToolForBuffer) then - NewTool:=FOnGetCodeToolForBuffer(Self,ACode,false); - if NewTool=nil then exit; - NewTool.BuildTree(lsrSourceName); - if not NewTool.GetSourceNamePos(NamePos) then exit; - NewNode:=NewTool.Tree.Root; - if not NewTool.JumpToCleanPos(NamePos.StartPos,NamePos.StartPos, + NewExprType.Context.Tool:=FOnGetCodeToolForBuffer(Self,ACode,false); + if NewExprType.Context.Tool=nil then exit; + NewExprType.Context.Tool.BuildTree(lsrSourceName); + if not NewExprType.Context.Tool.GetSourceNamePos(NamePos) then exit; + NewExprType.Context.Node:=NewExprType.Context.Tool.Tree.Root; + if not NewExprType.Context.Tool.JumpToCleanPos(NamePos.StartPos,NamePos.StartPos, NamePos.StartPos,NewPos,NewTopLine,false) then exit; Result:=true; + NewExprType.Desc:=xtContext; end; {$IFDEF VerboseFindDeclarationFail} @@ -1488,8 +2084,9 @@ LineRange: TLineRange; begin Result:=false; - NewTool:=nil; - NewNode:=nil; + NewExprType:=CleanExpressionType; + NewPos.X:=-1; + NewPos.Y:=-1; SkipChecks:=false; // check cursor in source if (CursorPos.Y<1) or (CursorPos.Y>CursorPos.Code.LineCount) @@ -1530,28 +2127,29 @@ and CleanPosIsDeclarationIdentifier(CleanCursorPos,CursorNode) then begin //DebugLn(['TFindDeclarationTool.FindDeclaration CleanPosIsDeclarationIdentifier']); - NewTool:=Self; - NewNode:=CursorNode; + NewExprType.Desc:=xtContext; + NewExprType.Context.Tool:=Self; + NewExprType.Context.Node:=CursorNode; CleanCursorPos:=GetIdentStartPosition(Src,CleanCursorPos); if CursorNode.Desc=ctnVarDefinition then begin // if this is a parameter, try to find the corresponding declaration - NewNode:=FindCorrespondingProcParamNode(NewNode); - if (NewNode<>nil) and (NewNode.StartPos<CursorNode.StartPos) then - CleanCursorPos:=NewNode.StartPos + NewExprType.Context.Node:=FindCorrespondingProcParamNode(NewExprType.Context.Node); + if (NewExprType.Context.Node<>nil) and (NewExprType.Context.Node.StartPos<CursorNode.StartPos) then + CleanCursorPos:=NewExprType.Context.Node.StartPos else - NewNode:=CursorNode; + NewExprType.Context.Node:=CursorNode; end; if (CursorNode.Desc=ctnProcedureHead) and (NodeIsMethodBody(CursorNode.Parent)) then begin // if this is a procedure body, try to find the corresponding declaration - NewNode:=FindCorrespondingProcNode(CursorNode.Parent); - if (NewNode<>nil) and (NewNode.Desc=ctnProcedure) then - NewNode:=NewNode.FirstChild; - if (NewNode<>nil) and (NewNode.StartPos<CursorNode.StartPos) then begin - CleanCursorPos:=NewNode.StartPos; + NewExprType.Context.Node:=FindCorrespondingProcNode(CursorNode.Parent); + if (NewExprType.Context.Node<>nil) and (NewExprType.Context.Node.Desc=ctnProcedure) then + NewExprType.Context.Node:=NewExprType.Context.Node.FirstChild; + if (NewExprType.Context.Node<>nil) and (NewExprType.Context.Node.StartPos<CursorNode.StartPos) then begin + CleanCursorPos:=NewExprType.Context.Node.StartPos; end else - NewNode:=CursorNode; + NewExprType.Context.Node:=CursorNode; end; Result:=JumpToCleanPos(CleanCursorPos,CleanCursorPos,CleanCursorPos, @@ -1575,8 +2173,9 @@ NewPos.X:=1; NewPos.Y:=1; NewTopLine:=1; - NewNode:=nil; - NewTool:=Self; + NewExprType.Desc:=xtContext; + NewExprType.Context.Node:=nil; + NewExprType.Context.Tool:=Self; Result:=(fsfIncludeDirective in SearchSmartFlags); {$IFDEF VerboseFindDeclarationFail} if not Result then begin @@ -1592,13 +2191,21 @@ {$IFDEF CTDEBUG} DebugLn('TFindDeclarationTool.FindDeclaration D CursorNode=',NodeDescriptionAsString(CursorNode.Desc),' HasChildren=',dbgs(CursorNode.FirstChild<>nil)); {$ENDIF} - if (CursorNode.Desc in [ctnUsesSection,ctnUseUnit]) then begin + if (CursorNode.Desc = ctnUseUnitNamespace) then begin + NewExprType.Desc:=xtContext; + NewExprType.Context.Node:=CursorNode; + NewExprType.Context.Tool:=Self; + CleanPosToCaret(CursorNode.StartPos, NewPos); + NewTopLine := NewPos.Y; + Result := True; + Exit; + end else + if (CursorNode.Desc in [ctnUsesSection,ctnUseUnitClearName]) then begin // in uses section //DebugLn(['TFindDeclarationTool.FindDeclaration IsUsesSection']); Result:=FindDeclarationInUsesSection(CursorNode,CleanCursorPos, NewPos,NewTopLine); - NewNode:=nil; - NewTool:=nil; + NewExprType:=CleanExpressionType; {$IFDEF VerboseFindDeclarationFail} if not Result then begin debugln(['TFindDeclarationTool.FindDeclaration cursor in uses and FindDeclarationInUsesSection failed']); @@ -1632,17 +2239,16 @@ IdentifierStart:=PChar(Src); if CursorAtIdentifier then begin // find declaration of identifier - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try - Params.ContextNode:=CursorNode; Params.SetIdentifier(Self,IdentifierStart,@CheckSrcIdentifier); Params.Flags:=[fdfSearchInParentNodes,fdfExceptionOnNotFound, fdfExceptionOnPredefinedIdent, - fdfTopLvlResolving,fdfSearchInAncestors]; + fdfTopLvlResolving,fdfSearchInAncestors,fdfSearchInHelpers]; if fsfSkipClassForward in SearchSmartFlags then Include(Params.Flags,fdfSkipClassForward); if not DirectSearch then begin - Result:=FindDeclarationOfIdentAtParam(Params); + Result:=FindDeclarationOfIdentAtParam(Params, NewExprType); {$IFDEF VerboseFindDeclarationFail} if not Result then begin debugln(['TFindDeclarationTool.FindDeclaration FindDeclarationOfIdentAtParam failed']); @@ -1654,6 +2260,12 @@ Include(Params.Flags,fdfSearchForward); //debugln(['TFindDeclarationTool.FindDeclaration Flags=',dbgs(Params.Flags),' FindIdentifierInContext ...']); Result:=FindIdentifierInContext(Params); + if Result then + begin + NewExprType.Desc:=xtContext; + NewExprType.Context.Node:=Params.NewNode; + NewExprType.Context.Tool:=Params.NewCodeTool; + end; {$IFDEF VerboseFindDeclarationFail} if not Result then begin debugln(['TFindDeclarationTool.FindDeclaration FindIdentifierInContext failed']); @@ -1663,11 +2275,11 @@ if Result then begin Params.PrettifyResult; Params.ConvertResultCleanPosToCaretPos; - NewNode:=Params.NewNode; - NewTool:=Params.NewCodeTool; NewPos:=Params.NewPos; NewTopLine:=Params.NewTopLine; - if (NewPos.Code=nil) or (NewNode=nil) then begin + if (NewExprType.Desc=xtContext) and + ((NewPos.Code=nil) or (NewExprType.Context.Node=nil)) + then begin if Params.IdentifierTool.IsPCharInSrc(Params.Identifier) then Params.IdentifierTool.MoveCursorToCleanPos(Params.Identifier) else @@ -1696,6 +2308,24 @@ end; end; +function TFindDeclarationTool.FindDeclaration(const CursorPos: TCodeXYPosition; + SearchSmartFlags: TFindSmartFlags; out NewTool: TFindDeclarationTool; out + NewNode: TCodeTreeNode; out NewPos: TCodeXYPosition; out NewTopLine: integer + ): boolean; +var + ExprType: TExpressionType; +begin + Result := FindDeclaration(CursorPos, SearchSmartFlags, ExprType, NewPos, NewTopLine) and + (NewPos.X >= 0) and (NewPos.Y >= 0); + if Result then begin + NewTool := ExprType.Context.Tool; + NewNode := ExprType.Context.Node; + end else begin + NewTool := nil; + NewNode := nil; + end; +end; + function TFindDeclarationTool.FindDeclarationInInterface( const Identifier: string; out NewPos: TCodeXYPosition; out NewTopLine: integer ): boolean; @@ -1719,10 +2349,10 @@ Result:=false; if Identifier='' then exit; BuildTree(lsrMainUsesSectionEnd); - UsesNode:=FindMainUsesSection; + UsesNode:=FindMainUsesNode; if UsesNode=nil then exit; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, FindLastNode); ActivateGlobalWriteLock; try Params.Flags:=[fdfExceptionOnNotFound]; @@ -1773,7 +2403,7 @@ //DebugLn('TFindDeclarationTool.FindDeclarationOfPropertyPath ',MainFilename,' PropertyPath="',PropertyPath,'"'); if PropertyPath='' then exit; ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, FindLastNode); try BuildTree(lsrInitializationStart); @@ -1843,7 +2473,7 @@ exit; end; //DebugLn('TFindDeclarationTool.FindDeclarationOfPropertyPath Identifier="',identifier,'"'); - Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors]; + Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors,fdfSearchInHelpers]; Params.SetIdentifier(Self,PChar(Pointer(Identifier)),nil); Params.ContextNode:=Context.Node; if IsLastProperty then @@ -1867,7 +2497,7 @@ Params.ContextNode:=Context.Tool.FindClassOrInterfaceNode(Context.Node); if Params.ContextNode=nil then Params.ContextNode:=Context.Node; - Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors, + Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors,fdfSearchInHelpers, fdfFindVariable,fdfIgnoreCurContextNode]; //DebugLn(['TFindDeclarationTool.FindDeclarationOfPropertyPath ',Context.Tool.MainFilename,' ',Params.ContextNode.DescAsString,' ',Context.Tool.CleanPosToStr(Params.ContextNode.StartPos)]); if not Context.Tool.FindIdentifierInContext(Params) then exit; @@ -1957,34 +2587,12 @@ function TFindDeclarationTool.FindMainUsesSection(UseContainsSection: boolean ): TCodeTreeNode; begin - Result:=Tree.Root; - if Result=nil then exit; - if UseContainsSection then begin - if Result.Desc<>ctnPackage then exit(nil); - Result:=Result.FirstChild; - while (Result<>nil) and (Result.Desc<>ctnContainsSection) do - Result:=Result.NextBrother; - end else begin - if Result.Desc=ctnUnit then begin - Result:=Result.NextBrother; - if Result=nil then exit; - end; - Result:=Result.FirstChild; - if (Result=nil) then exit; - if (Result.Desc<>ctnUsesSection) then Result:=nil; - end; + Result := FindMainUsesNode(UseContainsSection); end; function TFindDeclarationTool.FindImplementationUsesSection: TCodeTreeNode; begin - Result:=Tree.Root; - if Result=nil then exit; - while (Result<>nil) and (Result.Desc<>ctnImplementation) do - Result:=Result.NextBrother; - if Result=nil then exit; - Result:=Result.FirstChild; - if (Result=nil) then exit; - if (Result.Desc<>ctnUsesSection) then Result:=nil; + Result := FindImplementationUsesNode; end; function TFindDeclarationTool.FindNameInUsesSection(UsesNode: TCodeTreeNode; @@ -2084,13 +2692,13 @@ end; // check if already there - UsesNode:=FindMainUsesSection; + UsesNode:=FindMainUsesNode; if (UsesNode<>nil) and (FindNameInUsesSection(UsesNode,Result)<>nil) then begin Result:=''; exit; end; - UsesNode:=FindImplementationUsesSection; + UsesNode:=FindImplementationUsesNode; if (UsesNode<>nil) and (FindNameInUsesSection(UsesNode,Result)<>nil) then begin Result:=''; @@ -2152,7 +2760,10 @@ ReadNextAtom; if not UpAtomIs('USES') then RaiseUsesExpected; - end; + end else + if (UsesNode.Desc = ctnUseUnitClearName) then + MoveCursorToNodeStart(UsesNode.Parent); + repeat ReadNextAtom; // read name if CurPos.StartPos>CleanPos then break; @@ -2230,12 +2841,12 @@ //debugln(['TFindDeclarationTool.FindUnitFileInAllUsesSections Self=',ExtractFilename(MainFilename),' Search=',ExtractFilename(AFilename)]); if AFilename='' then exit; if CheckMain then begin - Result:=FindUnitFileInUsesSection(FindMainUsesSection,AFilename); + Result:=FindUnitFileInUsesSection(FindMainUsesNode,AFilename); //debugln(['TFindDeclarationTool.FindUnitFileInAllUsesSections Self=',ExtractFilename(MainFilename),' Search=',ExtractFilename(AFilename),' used in main uses=',Result<>nil]); if Result<>nil then exit; end; if CheckImplementation then - Result:=FindUnitFileInUsesSection(FindImplementationUsesSection,AFilename); + Result:=FindUnitFileInUsesSection(FindImplementationUsesNode,AFilename); end; function TFindDeclarationTool.FindUnitSource(const AnUnitName, @@ -2277,6 +2888,7 @@ NewCompiledUnitname:=AnUnitName+'.ppu'; CompiledFilename:=DirectoryCache.FindCompiledUnitInCompletePath( NewCompiledUnitname,false); + //debugln(['TFindDeclarationTool.FindUnitSource UnitName=',NewUnitName,' ',NewCompiledUnitname,' CompiledFilename=',CompiledFilename]); end else begin CompiledFilename:=''; end; @@ -2355,7 +2967,8 @@ end; function TFindDeclarationTool.GetSmartHint(Node: TCodeTreeNode; - XYPos: TCodeXYPosition; WithPosition: boolean): string; + XYPos: TCodeXYPosition; WithPosition: boolean; WithDefinition: boolean + ): string; function ReadIdentifierWithDots: String; begin @@ -2371,12 +2984,48 @@ until false; end; + function MoveToLastIdentifierThroughDots(ExtTool: TFindDeclarationTool): Boolean; + var + LastPos: TAtomPosition; + begin + LastPos := ExtTool.CurPos; + ExtTool.ReadNextAtom; + if ExtTool.CurPos.Flag = cafWord then + ExtTool.ReadNextAtom; + while ExtTool.CurPos.Flag = cafPoint do + begin + ExtTool.ReadNextAtom; + LastPos := ExtTool.CurPos; + ExtTool.ReadNextAtom; + end; + ExtTool.CurPos := LastPos; + Result := True; + end; + + function ProceedWithSmartHint(ExtTool: TFindDeclarationTool): string; + var + CTExprType: TExpressionType; + CTXYPos: TCodeXYPosition; + CTTopLine: integer; + CTCursorPos: TCodeXYPosition; + begin + MoveToLastIdentifierThroughDots(ExtTool); + if ExtTool.CleanPosToCaret(ExtTool.CurPos.StartPos,CTCursorPos) and + ExtTool.FindDeclaration(CTCursorPos, + DefaultFindSmartHintFlags+[fsfSearchSourceName],CTExprType,CTXYPos,CTTopLine) and + not((CTExprType.Desc=xtContext) and (CTExprType.Context.Node=nil) and (CTExprType.Context.Tool=nil)) + then + Result := CTExprType.Context.Tool.GetSmartHint(CTExprType.Context.Node, CTXYPos, False, False) + else + Result := ''; + end; var IdentNode, TypeNode, ANode: TCodeTreeNode; - ClassStr: String; - NodeStr: String; + ClassStr, NodeStr, SetStr: String; Params: TFindDeclarationParams; Tool: TFindDeclarationTool; + HelperForNode: TCodeTreeNode; + SubNode: TCodeTreeNode; begin Result:=''; @@ -2434,6 +3083,7 @@ Result:=Result+ExtractDefinitionName(Node); TypeNode:=FindTypeNodeOfDefinition(Node); + if not WithDefinition then Result := ''; if TypeNode<>nil then begin case Node.Desc of ctnTypeDefinition, ctnGenericType: @@ -2448,21 +3098,73 @@ Result += ': '; end; case TypeNode.Desc of + ctnSetType: + begin + Result += ExtractNode(TypeNode, [phpCommentsToSpace]); + MoveCursorToNodeStart(TypeNode); + ReadNextAtom; + if ReadNextUpAtomIs('OF') then + begin + if (Length(Result) > 0) and (Result[Length(Result)] = ';') then//delete last ";" from set + Delete(Result, Length(Result), 1); + + SetStr := ProceedWithSmartHint(Self); + if (Length(SetStr) > 2) and (SetStr[2] = '=') then + SetStr := Copy(SetStr, 4, High(Integer)); + if (SetStr <> '') then + Result += ' = ['+SetStr+']'; + end; + end; ctnIdentifier, ctnSpecialize, ctnSpecializeType, - ctnPointertype, ctnRangeType, ctnFileType, ctnclassOfType: + ctnPointerType, ctnRangeType, ctnFileType, ctnClassOfType: begin Result += ExtractNode(TypeNode, [phpCommentsToSpace]); + MoveCursorToNodeStart(TypeNode); + Result += ProceedWithSmartHint(Self); end; ctnClass, ctnClassInterface, ctnDispinterface, - ctnObject, ctnRecordType, ctnRangedArrayType, ctnOpenArrayType, + ctnClassHelper, ctnTypeHelper, ctnRecordHelper, + ctnObject, ctnRangedArrayType, ctnOpenArrayType, ctnObjCClass, ctnObjCCategory, ctnObjCProtocol, ctnCPPClass: begin MoveCursorToNodeStart(TypeNode); - ReadNextAtom; - Result+=GetAtom; - if (TypeNode.FirstChild<>nil) - and (TypeNode.FirstChild.Desc = ctnClassInheritance) then - Result += ExtractNode(TypeNode.FirstChild, []); + case TypeNode.Desc of + ctnClass: Result:=Result+'class'; + ctnClassHelper: Result:=Result+'class helper'; + ctnRecordHelper: Result:=Result+'record helper'; + ctnTypeHelper: Result:=Result+'type helper'; + ctnObject: Result:=Result+'object'; + ctnObjCClass: Result:=Result+'objcclass'; + ctnObjCCategory: Result:=Result+'objccategory'; + ctnCPPClass: Result:=Result+'cppclass'; + ctnClassInterface: Result:=Result+'interface'; + ctnObjCProtocol: Result:=Result+'objcprotocol'; + ctnDispinterface: Result:=Result+'dispinterface'; + ctnRangedArrayType, ctnOpenArrayType: Result:=Result+'array'; + end; + try + BuildSubTree(TypeNode); + except + on ECodeToolError do ; + end; + SubNode:=FindInheritanceNode(TypeNode); + if SubNode<>nil then + Result:=Result+ExtractNode(SubNode,[]); + + if TypeNode.Desc in [ctnClassHelper, ctnRecordHelper, ctnTypeHelper] then + HelperForNode := FindHelperForNode(TypeNode) + else + HelperForNode := nil; + if HelperForNode<>nil then + Result:=Result+' '+ExtractNode(HelperForNode,[]); + end; + ctnRecordType: + Result:=Result+'record'; + ctnTypeType: + begin + Result:=Result+'type'; + if TypeNode.FirstChild <> nil then + Result:=Result+' '+ExtractNode(TypeNode.FirstChild,[]); end; ctnConstant: begin @@ -2470,7 +3172,16 @@ Result+=copy(NodeStr,1,50); end; ctnEnumerationType: - Result += 'enum'; + begin + if Assigned(Node.FirstChild) then + begin + NodeStr:=ExtractCode(Node.FirstChild.StartPos,Node.FirstChild.EndPos,[phpCommentsToSpace]); + if Length(NodeStr) > 50 then + NodeStr:=Copy(NodeStr, 1, 50) + ' ...'; + Result += NodeStr; + end else + Result += 'enum'; + end; end; end else begin case Node.Desc of @@ -2524,10 +3235,10 @@ // property without type // -> search ancestor property if not Tool.MoveCursorToPropName(Node) then break; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Tool, Node); try Params.SetIdentifier(Tool,@Tool.Src[Tool.CurPos.StartPos],nil); - Params.Flags:=[fdfSearchInAncestors]; + Params.Flags:=[fdfSearchInAncestors,fdfSearchInHelpers]; if not FindIdentifierInAncestors(Node.Parent.Parent,Params) then break; Tool:=Params.NewCodeTool; Node:=Params.NewNode; @@ -2535,10 +3246,14 @@ Params.Free; end; end; - if (Node<>nil) - and (Node.Desc in [ctnProperty,ctnGlobalProperty]) then begin - Result += Tool.ExtractProperty(Node, - [phpWithoutName,phpWithParameterNames,phpWithResultType]); + if (Node<>nil) then begin + if (Node.Desc in [ctnProperty,ctnGlobalProperty]) then begin + Result += Tool.ExtractProperty(Node, + [phpWithoutName,phpWithParameterNames,phpWithResultType]); + end; + + if Tool.MoveCursorToPropType(Node) then + Result += ProceedWithSmartHint(Tool); end; end; @@ -2559,11 +3274,20 @@ end; end; - ctnUseUnit: + ctnUseUnitNamespace: + begin + // hint for unit namespace in "uses" section + Result += 'namespace '; + MoveCursorToNodeStart(Node); + ReadNextAtom; + Result := Result + GetAtom; + end; + + ctnUseUnitClearName: begin // hint for unit in "uses" section Result += 'unit '; - MoveCursorToNodeStart(Node); + MoveCursorToNodeStart(Node.Parent); Result := Result + ReadIdentifierWithDots; end @@ -2598,7 +3322,7 @@ Result:=false; if (ANode=nil) then exit; ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, ANode); try Params.Flags:=Params.Flags+[fdfFunctionResult,fdfFindChildren]; FindContext:=FindBaseTypeOfNode(Params,ANode); @@ -2637,23 +3361,31 @@ function TFindDeclarationTool.FindDeclarationOfIdentAtParam( Params: TFindDeclarationParams): boolean; +var + ExprType: TExpressionType; +begin + Result := FindDeclarationOfIdentAtParam(Params, ExprType) and (Params.NewNode<>nil); +end; + +function TFindDeclarationTool.FindDeclarationOfIdentAtParam( + Params: TFindDeclarationParams; out ExprType: TExpressionType): boolean; { searches an identifier in clean code, parses code in front and after the identifier Params: Identifier in clean source ContextNode // = DeepestNode at Cursor - + Result: true, if found Examples: A^.B().C[].Identifier inherited Identifier(p1,p2) + 'Hello'.identifier } var StartPos, EndPos: integer; - ExprType: TExpressionType; SkipForward: boolean; begin {$IFDEF CTDEBUG} @@ -2695,7 +3427,7 @@ else DebugLn('NOT FOUND'); {$ENDIF} - Result:=Params.NewNode<>nil; + Result:=ExprType.Desc<>xtNone; end; function TFindDeclarationTool.IdentifierIsDefined(const IdentAtom: TAtomPosition; @@ -2707,7 +3439,7 @@ {$IFDEF CheckNodeTool}CheckNodeTool(ContextNode);{$ENDIF} // find declaration of identifier Identifier:=@Src[IdentAtom.StartPos]; - //DebugLn(['TFindDeclarationTool.IdentifierIsDefined ',GetIdentifier(Identifier),' ',CompareIdentifiers(Identifier,'Result'),' ',]); + //DebugLn(['TFindDeclarationTool.IdentifierIsDefined BEGIN Params IdentAtom.StartPos=',IdentAtom.StartPos,'=',GetIdentifier(Identifier),', ContextNode.StartPos=',ContextNode.StartPos,'=',ContextNode.DescAsString,' "',ExtractNode(ContextNode,[]),'"']); if (CompareIdentifiers(Identifier,'Self')=0) then begin Node:=ContextNode; while (Node<>nil) do begin @@ -2727,14 +3459,15 @@ end; Params.ContextNode:=ContextNode; Params.SetIdentifier(Self,Identifier,nil); - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, fdfTopLvlResolving,fdfFindVariable,fdfIgnoreCurContextNode]; Result:=FindIdentifierInContext(Params); //DebugLn(['TFindDeclarationTool.IdentifierIsDefined END Result=',Result]); end; function TFindDeclarationTool.FindIdentifierInContext( - Params: TFindDeclarationParams): boolean; + Params: TFindDeclarationParams; var IdentFoundResult: TIdentifierFoundResult + ): boolean; { searches an identifier in context node It does not care about code in front of the identifier like 'a.Identifer'. @@ -2755,6 +3488,8 @@ SearchRangeFlags: TNodeCacheEntryFlags; NodeCacheEntryFlags: TNodeCacheEntryFlags; Flags: TFindDeclarationFlags; + OldFlags: TFindDeclarationFlags; + SearchInHelpersInTheEnd: Boolean; procedure InitNodesAndCacheAccess; @@ -2888,8 +3623,7 @@ Params.IdentifierTool.RaiseExceptionFmt(ctsIdentifierNotFound, [Identifier]); end; - - var IdentFoundResult: TIdentifierFoundResult; + begin Result:=true; FindIdentifierInContext:=NewResult and (not (fdfCollect in Flags)); @@ -3006,22 +3740,19 @@ end; end; - function SearchInGenericParams(GenericNode: TCodeTreeNode): boolean; + function SearchInGenericParams(GenParamsNode: TCodeTreeNode): boolean; var Node: TCodeTreeNode; begin Result:=false; - Node:=GenericNode.FirstChild; - if Node=nil then exit; - Node:=Node.NextBrother; - if (Node=nil) or (Node.Desc<>ctnGenericParams) then exit; - Node:=Node.FirstChild; + if (GenParamsNode=nil) or (GenParamsNode.Desc<>ctnGenericParams) then exit; + Node:=GenParamsNode.FirstChild; while Node<>nil do begin if (fdfCollect in Flags) or CompareSrcIdentifiers(Node.StartPos,Params.Identifier) then begin {$IFDEF ShowTriedIdentifiers} - DebugLn(' SearchInGenericParams Identifier found="',GetIdentifier(Params.Identifier),'"'); + DebugLn(' SearchInGenericParams Identifier found="',GetIdentifier(@Src[Node.StartPos]),'" at '+CleanPosToStr(Node.StartPos)); {$ENDIF} // identifier found Params.SetResult(Self,Node); @@ -3044,14 +3775,6 @@ if ContextNode.Desc=ctnGenericType then begin NameNode:=ContextNode.FirstChild; if NameNode=nil then exit; - end else - if (ContextNode.Desc=ctnTypeDefinition) - and Assigned(ContextNode.FirstChild) - and (ContextNode.FirstChild.Desc=ctnObjCCategory) then begin - NameNode:=FindInheritanceNode(ContextNode.FirstChild); - if NameNode=nil then exit; - NameNode:=NameNode.FirstChild; - if NameNode=nil then exit; end; if (fdfCollect in Flags) @@ -3081,6 +3804,44 @@ end; end; + function SearchInGenericType: boolean; + // returns: true if ok to exit + // false if search should continue + var + NameNode: TCodeTreeNode; + begin + Result:=false; + NameNode:=ContextNode.FirstChild; + if NameNode=nil then exit; + + // try type name + if (fdfCollect in Flags) + or CompareSrcIdentifiers(NameNode.StartPos,Params.Identifier) + then begin + {$IFDEF ShowTriedIdentifiers} + DebugLn(' Definition Identifier found="',GetIdentifier(Params.Identifier),'"'); + {$ENDIF} + // identifier found + Params.SetResult(Self,ContextNode); + Result:=CheckResult(true,true); + if not (fdfCollect in Flags) then begin + if (fdfSkipClassForward in Flags) + and (ContextNode.LastChild.Desc in AllClasses) + and ((ctnsForwardDeclaration and ContextNode.LastChild.SubDesc)<>0) + then begin + FindNonForwardClass(Params); + end; + exit; + end; + end; + + // search for enums + Params.ContextNode:=ContextNode; + if FindEnumInContext(Params) then begin + Result:=CheckResult(true,false); + end; + end; + function SearchInTypeOfVarConst: boolean; // returns: true if ok to exit // false if search should continue @@ -3228,42 +3989,148 @@ end; end; + function SearchInHelpers: Boolean; + var + HelperContext: TFindContext; + Helpers: TFDHelpersList; + HelperKind: TFDHelpersListKind; + HelperIterator: TAVLTreeNode; + begin + Result := False; + SearchInHelpersInTheEnd := False; + if StartContextNode.Desc=ctnObjCClass then + HelperKind:=fdhlkObjCCategory + else + HelperKind:=fdhlkDelphiHelper; + Helpers:=Params.GetHelpers(HelperKind); + if Helpers=nil then exit; + if not Helpers.IterateFromClassNode(StartContextNode,Self, + HelperContext,HelperIterator) then exit; + //debugln(['SearchInHelpers START at least one helper found, iterating...']); + //Helpers.WriteDebugReport; + repeat + //debugln(['SearchInHelpers searching in Helper=',FindContextToString(HelperContext),'...']); + OldFlags := Params.Flags; + try + Params.Flags:=Params.Flags + -[fdfExceptionOnNotFound,fdfIgnoreCurContextNode,fdfSearchInHelpers] + +[fdfIgnoreUsedUnits]; + Params.ContextNode := HelperContext.Node; + + if HelperContext.Tool.FindIdentifierInContext(Params, IdentFoundResult) then + begin + if (IdentFoundResult = ifrAbortSearch) + or ((IdentFoundResult = ifrSuccess) and CheckResult(true,False)) + then + Result := True; + end; + finally + Params.Flags := OldFlags; + end; + until (HelperKind=fdhlkDelphiHelper) or (not Helpers.GetNext(HelperContext,HelperIterator)); + //debugln(['SearchInHelpers END']); + end; + + function SearchInNamespaces(UsesNode, SourceNamespaceNode: TCodeTreeNode): Boolean; + var + UnitNode, ThisNamespaceNode, TargetNamespaceNode: TCodeTreeNode; + Match: Boolean; + begin + Result := False; + if UsesNode=nil then Exit; + + UnitNode := UsesNode.LastChild; + while UnitNode<>nil do + begin + ThisNamespaceNode := SourceNamespaceNode.Parent.FirstChild; + TargetNamespaceNode := UnitNode.FirstChild; + Match := False; + while (ThisNamespaceNode<>nil) and (TargetNamespaceNode<>nil) do + begin + if CompareIdentifiers( + @Src[ThisNamespaceNode.StartPos], + @Src[TargetNamespaceNode.StartPos]) <> 0 + then Break; + + if (ThisNamespaceNode=SourceNamespaceNode) then + begin + Match := True; + Break; + end; + + ThisNamespaceNode := ThisNamespaceNode.NextBrother; + TargetNamespaceNode := TargetNamespaceNode.NextBrother; + end; + if Match then + begin + //namespace paths match + if (TargetNamespaceNode.NextBrother<>nil) + and ( + (Params.Identifier=nil) or + CompareSrcIdentifiers(TargetNamespaceNode.NextBrother.StartPos,Params.Identifier)) + then begin + Params.SetResult(Self,TargetNamespaceNode.NextBrother); + Result:=CheckResult(true,true); + if not (fdfCollect in Flags) then + exit; + end; + end; + + UnitNode := UnitNode.PriorBrother; + end; + end; + function SearchNextNode: boolean; const AbortNoCacheResult = false; Proceed = true; - var - OldInput: TFindDeclarationInput; begin repeat // search for prior node {$IFDEF ShowTriedIdentifiers} - DebugLn('[TFindDeclarationTool.FindIdentifierInContext] Searching prior node of ',ContextNode.DescAsString,' ',dbgstr(copy(Src,ContextNode.StartPos,ContextNode.EndPos-ContextNode.StartPos))); + DebugLn('[TFindDeclarationTool.FindIdentifierInContext.SearchNextNode] Searching prior node of ',ContextNode.DescAsString,' ',dbgstr(copy(Src,ContextNode.StartPos,ContextNode.EndPos-ContextNode.StartPos))); {$ENDIF} LastSearchedNode:=ContextNode; - if (ContextNode.Parent<>nil) and (ContextNode.Parent.Desc=ctnGenericType) - then begin - // after search in the generic, search in the generic parameter names - if SearchInGenericParams(ContextNode.Parent) then begin - FindIdentifierInContext:=true; - {$IFDEF ShowCollect} - if fdfCollect in Flags then - raise Exception.Create('fdfCollect must never return true'); - {$ENDIF} - exit(AbortNoCacheResult); + if (ContextNode.Desc in AllClasses) then begin + // after searching in a class definition ... + + if (ContextNode.PriorBrother<>nil) and (ContextNode.PriorBrother.Desc=ctnGenericParams) + then begin + // before searching in the ancestors, search in the generic parameters + if SearchInGenericParams(ContextNode.PriorBrother) then begin + FindIdentifierInContext:=true; + {$IFDEF ShowCollect} + if fdfCollect in Flags then + raise Exception.Create('fdfCollect must never return true'); + {$ENDIF} + exit(AbortNoCacheResult); + end; end; - end; - if (ContextNode.Desc in (AllClasses-[ctnRecordType])) then begin + //allow ctnRecordType and ctnTypeTypeBeforeHelper: they can have helpers! if (fdfSearchInAncestors in Flags) then begin // after searching in a class definition, search in its ancestors - // ToDo: check for cycles in ancestors - Params.Save(OldInput); + + OldFlags := Params.Flags; + Params.Flags:=Params.Flags-[fdfExceptionOnNotFound,fdfSearchInHelpersInTheEnd]; + + // leaving current class -> check if search in helpers in the end + if SearchInHelpersInTheEnd then + begin + Result := SearchInHelpers; + Params.Flags := OldFlags; + if Result then + begin + FindIdentifierInContext:=true; + Exit(AbortNoCacheResult); + end; + end; + Exclude(Params.Flags,fdfExceptionOnNotFound); - Result:=FindIdentifierInAncestors(ContextNode,Params); - Params.Load(OldInput,true); + Result:=FindIdentifierInAncestors(ContextNode,Params,IdentFoundResult); + Params.Flags := OldFlags; if Result then begin FindIdentifierInContext:=true; {$IFDEF ShowCollect} @@ -3312,26 +4179,36 @@ if ContextNode.Desc in AllClassSections then break else if ContextNode.Desc=ctnWithVariable then begin - // check if StartContextNode is covered by the ContextNode - // a WithVariable ranges from the start of its expression - // to the end of the with statement + { check if StartContextNode is covered by the ContextNode + a WithVariable ranges from the start of its expression + to the end of the with statement + for example: + will be skipped: + with ContextNode do ; + with B do StartContextNode; + + will be searched: + with ContextNode, StartContextNode do ; + } {$IFDEF ShowExprEval} DebugLn('SearchNextNode WithVar StartContextNode.StartPos=',dbgs(StartContextNode.StartPos), ' ContextNode=',dbgs(ContextNode.StartPos),'-',dbgs(ContextNode.EndPos), - ' WithStart="',StringToPascalConst(copy(Src,ContextNode.StartPos,15)),'"'); + ' WithStart=',StringToPascalConst( + copy(copy(Src,ContextNode.StartPos,ContextNode.EndPos-ContextNode.StartPos),1,50))); {$ENDIF} if (StartContextNode.StartPos>=ContextNode.StartPos) - and (StartContextNode.StartPos<ContextNode.EndPos) then break; - { ELSE: this with statement does not cover the startcontext - -> skip it - for example: - will be skipped: - with ContextNode do ; - with B do StartContextNode; - - will be searched: - with ContextNode, StartContextNode do ; - } + and (StartContextNode.StartPos<ContextNode.EndPos) then begin + {$IFDEF ShowExprEval} + debugln(['SearchNextNode WithVar covers startcontext']); + {$ENDIF} + // for example: with ContextNode, StartContextNode do ; + break; + end else begin + // this with statement does not cover the startcontext. For instance: + // with ContextNode do ; + // with B do StartContextNode; + // -> skip it + end; end else if ContextNode.Desc=ctnOnBlock then begin // the ctnOnIdentifier is only valid within the ctnOnStatement // => skip @@ -3360,7 +4237,7 @@ ctnClassClassVar, ctnRecordVariant, ctnProcedureHead, ctnParameterList, - ctnClassInheritance: + ctnClassInheritance,ctnHelperFor: // these codetreenodes build a parent-child-relationship, but // for pascal it is only a range, hence after searching in the // children of the last node, search must continue in the children @@ -3370,6 +4247,7 @@ ctnClass, ctnClassInterface, ctnDispinterface, ctnObject, ctnObjCClass, ctnObjCCategory, ctnObjCProtocol, ctnCPPClass, ctnRecordType, ctnRecordCase, + ctnClassHelper, ctnRecordHelper, ctnTypeHelper, ctnEnumerationType: // do not search again in this node, go on ... ; @@ -3442,6 +4320,27 @@ exit; end; + if (ContextNode.Desc=ctnUseUnitNamespace) then + begin + //search in namespaces + if SearchInNamespaces(FindMainUsesNode, Params.ContextNode) then exit; + if SearchInNamespaces(FindImplementationUsesNode, Params.ContextNode) then exit; + Exit; + end; + + // find class helper functions + SearchInHelpersInTheEnd := False; + if (fdfSearchInHelpers in Flags) + and (ContextNode.Desc in [ctnClass,ctnRecordType,ctnTypeType,ctnObjCClass,ctnEnumerationType,ctnRangedArrayType,ctnOpenArrayType]) + and (ContextNode.Parent<>nil) and (ContextNode.Parent.Desc = ctnTypeDefinition) + then begin + if (fdfSearchInHelpersInTheEnd in Flags) then + SearchInHelpersInTheEnd := True + else begin + if SearchInHelpers then Exit; + end; + end; + //try // search in the Tree of this tool repeat @@ -3484,6 +4383,7 @@ ctnClass, ctnClassInterface, ctnDispinterface, ctnObject, ctnObjCClass, ctnObjCCategory, ctnObjCProtocol, ctnCPPClass, ctnRecordType, ctnRecordVariant, + ctnClassHelper, ctnRecordHelper, ctnTypeHelper, ctnEnumerationType, ctnParameterList: // these nodes build a parent-child relationship. But in pascal @@ -3492,9 +4392,13 @@ MoveContextNodeToChildren; ctnTypeDefinition, ctnVarDefinition, ctnConstDefinition, - ctnGenericType, ctnGlobalProperty: + ctnGlobalProperty: if SearchInTypeVarConstGlobPropDefinition then exit; + ctnGenericType: + if SearchInGenericType then exit; + // ctnGenericParams: skip here, it was searched before searching the ancestors + ctnIdentifier: if (ContextNode.Parent.Desc in [ctnConstDefinition,ctnVarDefinition]) and (ContextNode=ContextNode.Parent.LastChild) @@ -3576,6 +4480,12 @@ if not SearchNextNode then exit; end; until ContextNode=nil; + + if SearchInHelpersInTheEnd then + begin + if SearchInHelpers then Exit; + end; + if LastSearchedNode=Tree.Root then begin if SearchDefault then exit; end; @@ -3614,13 +4524,18 @@ } var OldContextNode, CurContextNode: TCodeTreeNode; CollectResult: TIdentifierFoundResult; + SearchEnumIdentifiers: Boolean; begin Result:=false; CurContextNode:=Params.ContextNode; if CurContextNode=nil then exit; + if CurContextNode.Desc=ctnEnumerationType then + SearchEnumIdentifiers := not (Scanner.GetDirectiveValueAt(sdScopedEnums, CurContextNode.StartPos) = '1') + else + SearchEnumIdentifiers := False; CurContextNode:=CurContextNode.FirstChild; while CurContextNode<>nil do begin - if (CurContextNode.Desc=ctnEnumIdentifier) then begin + if SearchEnumIdentifiers and (CurContextNode.Desc=ctnEnumIdentifier) then begin if (fdfCollect in Params.Flags) then begin //debugln('TFindDeclarationTool.FindEnumInContext ',GetIdentifier(@Src[CurContextNode.StartPos])); CollectResult:=DoOnIdentifierFound(Params,CurContextNode); @@ -3669,11 +4584,10 @@ if (ExprType.Desc=xtContext) then Result:=ExprType.Context else begin + Result:=CleanFindContext; if fdfExceptionOnNotFound in Params.Flags then begin MoveCursorToCleanPos(EndPos); RaiseException(ctsNoContextNodeFoundAtCursor); - end else begin - Result:=CleanFindContext; end; end; end; @@ -3739,13 +4653,11 @@ TestContext: TFindContext; IdentStart: LongInt; SubParams: TFindDeclarationParams; - aNode: TCodeTreeNode; - AnUnitIdentifier: String; - UnitInFilename: AnsiString; - NewCode: TCodeBuffer; + ExprType: TExpressionType; begin IsPredefined:=false; - SubParams:=TFindDeclarationParams.Create; + + SubParams:=TFindDeclarationParams.Create(Params); try SubParams.GenParams := Params.GenParams; IdentStart:=CleanPos; @@ -3754,7 +4666,6 @@ {$ENDIF} SubParams.Flags:=[fdfSearchInParentNodes,fdfExceptionOnNotFound] +(fdfGlobals*SubParams.Flags); - SubParams.SetIdentifier(Self,@Src[IdentStart],nil); SubParams.ContextNode:=StartNode.Parent; if (SubParams.ContextNode.Desc in (AllIdentifierDefinitions)) then begin @@ -3767,56 +4678,42 @@ if SubParams.ContextNode.Desc=ctnProcedureHead then // skip search in proc parameters SubParams.ContextNode:=SubParams.ContextNode.Parent; - TypeFound:=FindIdentifierInContext(SubParams); - if TypeFound and (SubParams.NewNode.Desc=ctnUseUnit) - and (SubParams.NewCodeTool=Self) - then begin - {$IFDEF ShowTriedBaseContexts} - debugln(['TFindDeclarationTool.FindBaseTypeOfNode.SearchIdentifier is an entry in the uses section, getting tool...']); - {$ENDIF} - AnUnitIdentifier:=ExtractUsedUnitName(SubParams.NewNode,@UnitInFilename); - NewCode:=FindUnitSource(AnUnitIdentifier,UnitInFilename,true,SubParams.NewNode.StartPos); - if Assigned(FOnGetCodeToolForBuffer) then - SubParams.NewCodeTool:=FOnGetCodeToolForBuffer(Self,NewCode,false) - else if NewCode=TCodeBuffer(Scanner.MainCode) then - SubParams.NewCodeTool:=Self; - if (SubParams.NewCodeTool=nil) then begin - CurPos.StartPos:=-1; - RaiseException(Format('Unable to create codetool for "%s"',[NewCode.Filename])); + + MoveCursorToCleanPos(CleanPos); + ReadNextAtom; + ReadNextAtom; + if (CurPos.Flag=cafPoint) or AtomIsChar('<') then begin + // this is an expression, e.g. A.B or A<B> + Include(SubParams.Flags,fdfFindVariable); + ExprType:=FindExpressionTypeOfTerm(CleanPos,-1,SubParams,false); + if ExprType.Desc=xtContext then begin + if not (ExprType.Context.Node.Desc in [ctnTypeDefinition,ctnGenericType,ctnGenericParameter]) then + begin + // not a type + {$IFDEF ShowTriedBaseContexts} + debugln(['TFindDeclarationTool.FindBaseTypeOfNode.SearchIdentifier expression: type expected but found ',ExprTypeToString(ExprType)]); + {$ENDIF} + MoveCursorToCleanPos(IdentStart); + ReadNextAtom; + RaiseExceptionFmt(ctsStrExpectedButAtomFound, + [ctsTypeIdentifier,GetAtom]); + end; + Context:=ExprType.Context; + end else begin + IsPredefined:=true; end; - SubParams.NewCodeTool.BuildTree(lsrImplementationStart); - SubParams.NewNode:=SubParams.NewCodeTool.Tree.Root; + exit; end; + + SubParams.SetIdentifier(Self,@Src[IdentStart],nil); + TypeFound:=FindIdentifierInContext(SubParams); if TypeFound and (SubParams.NewNode.Desc in [ctnUnit,ctnLibrary,ctnPackage]) then begin // identifier is a unit - // => check for AUnitName.typename + // => type expected MoveCursorToCleanPos(IdentStart); ReadNextAtom; // read AUnitName - if not ReadNextAtomIsChar('.') then - SaveRaiseCharExpectedButAtomFound('.'); - ReadNextAtom; // read type identifier - IdentStart:=CurPos.StartPos; - {$IFDEF ShowTriedBaseContexts} - debugln(['TFindDeclarationTool.FindBaseTypeOfNode.SearchIdentifier searching identifier "',GetIdentifier(@Src[IdentStart]),'" in unit ...']); - {$ENDIF} - AtomIsIdentifierE; - SubParams.SetIdentifier(Self,@Src[IdentStart],nil); - SubParams.Flags:=[fdfExceptionOnNotFound]; - if SubParams.NewCodeTool=Self then begin - // search in whole unit/program - aNode:=Tree.Root; - if aNode.Desc=ctnUnit then begin - aNode:=FindImplementationNode; - if aNode=nil then - aNode:=FindInterfaceNode; - end; - SubParams.ContextNode:=aNode; - TypeFound:=FindIdentifierInContext(SubParams); - end else begin - // search in interface - TypeFound:=SubParams.NewCodeTool.FindIdentifierInInterface(Self,SubParams); - end; + SaveRaiseCharExpectedButAtomFound('.'); end; if TypeFound and (SubParams.NewNode.Desc=ctnGenericParameter) then begin TypeFound:=SubParams.FindGenericParamType; @@ -3843,9 +4740,7 @@ end else begin // predefined identifier IsPredefined:=true; - exit; end; - // ToDo: resolve sub classes finally SubParams.Free; @@ -3956,7 +4851,7 @@ DebugLn('[TFindDeclarationTool.FindBaseTypeOfNode] LOOP Result=',Result.Node.DescAsString,' ',Result.Tool.CleanPosToStr(Result.Node.StartPos,true),' Flags=[',dbgs(Params.Flags),']'); {$ENDIF} if NodeExistsInStack(NodeStack,Result.Node) then begin - // circle detected + // cycle detected Result.Tool.MoveCursorToNodeStart(Result.Node); Result.Tool.RaiseException(ctsCircleInDefinitions); end; @@ -3990,7 +4885,7 @@ DebugLn('[TFindDeclarationTool.FindBaseTypeOfNode] Class is forward'); {$ENDIF} - // ToDo: check for circles in ancestor chain + // ToDo: check for cycles in ancestor chain ClassIdentNode:=Result.Node.Parent; if (ClassIdentNode=nil) @@ -3999,7 +4894,6 @@ MoveCursorToCleanPos(Result.Node.StartPos); RaiseForwardClassNameLess; end; - // ToDo: search only in unit Params.Save(OldInput); Params.SetIdentifier(Self,@Src[ClassIdentNode.StartPos], @CheckSrcIdentifier); @@ -4026,7 +4920,7 @@ DebugLn('[TFindDeclarationTool.FindBaseTypeOfNode] "Class Of"'); {$ENDIF} - // ToDo: check for circles in ancestor chain + // ToDo: check for cycles in ancestor chain ClassIdentNode:=Result.Node.FirstChild; if (ClassIdentNode=nil) or (not (ClassIdentNode.Desc=ctnIdentifier)) @@ -4090,7 +4984,7 @@ if not MoveCursorToPropName(Result.Node) then break; OldPos:=CurPos.StartPos; Params.SetIdentifier(Self,@Src[CurPos.StartPos],nil); - Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors] + Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors,fdfSearchInHelpers] +(fdfGlobalsSameIdent*Params.Flags); FindIdentifierInAncestors(Result.Node.Parent.Parent,Params); TestContext.Tool:=Params.NewCodeTool; @@ -4111,6 +5005,8 @@ break; end else if (Result.Node.Desc=ctnTypeType) then begin + if fdfTypeType in Params.Flags then + break; // the type node is wanted, not its real type // a TypeType is for example 'MyInt = type integer;' // the context is not the 'type' keyword, but the identifier after it. Result.Node:=Result.Node.FirstChild; @@ -4160,6 +5056,46 @@ {$ENDIF} end; +function TFindDeclarationTool.FindIdentifierInBasicTypeHelpers( + ExprType: TExpressionTypeDesc; Params: TFindDeclarationParams): Boolean; +var + OldFlags: TFindDeclarationFlags; + FullExprType: TExpressionType; + CHContext: TFindContext; + Helpers: TFDHelpersList; +begin + Helpers:=Params.GetHelpers(fdhlkDelphiHelper); + if Helpers=nil then exit(false); + FullExprType := CleanExpressionType; + FullExprType.Desc := ExprType; + case FullExprType.Desc of + xtConstString: FullExprType.Desc:=GetDefaultStringType; + xtConstOrdInteger: FullExprType.Desc:=xtLongint; + xtConstBoolean: FullExprType.Desc:=xtBoolean; + xtConstReal: FullExprType.Desc:=xtDouble; + end; + //debugln(['TFindDeclarationTool.FindIdentifierInBasicTypeHelpers ',ExprTypeToString(FullExprType)]); + + // find class helper functions + CHContext := Helpers.FindFromExprType(FullExprType); + + if Assigned(CHContext.Node) and Assigned(CHContext.Tool) then + begin + OldFlags := Params.Flags; + try + Exclude(Params.Flags, fdfExceptionOnNotFound); + Exclude(Params.Flags, fdfIgnoreCurContextNode); + Include(Params.Flags, fdfIgnoreUsedUnits); + Params.ContextNode := CHContext.Node; + + Result := CHContext.Tool.FindIdentifierInContext(Params); + finally + Params.Flags := OldFlags; + end; + end else + Result := False; +end; + function TFindDeclarationTool.FindDeclarationAndOverload( const CursorPos: TCodeXYPosition; out ListOfPCodeXYPosition: TFPList; Flags: TFindDeclarationListFlags): boolean; @@ -4325,10 +5261,10 @@ // for example A.Identifier IsSubIdentifier:=true; // search the context of A and add it to the ListOfPFindContext - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, CursorNode); try Params.ContextNode:=CursorNode; - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, fdfTopLvlResolving,fdfFunctionResult]; ExprType:=FindExpressionTypeOfTerm(-1,CleanPos,Params,false); finally @@ -4349,10 +5285,10 @@ WithNode:=Node.Parent; while WithNode<>nil do begin if WithNode.Desc<>ctnWithVariable then break; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Self, WithNode); try Params.ContextNode:=WithNode; - Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors, + Params.Flags:=[fdfExceptionOnNotFound,fdfSearchInAncestors,fdfSearchInHelpers, fdfSearchInParentNodes,fdfFunctionResult,fdfIgnoreCurContextNode, fdfFindChildren]; ExprType:=FindExpressionResultType(Params,WithNode.StartPos,-1); @@ -4392,8 +5328,16 @@ Result:=true; end; +function TFindDeclarationTool.FindIdentifierInAncestors( + ClassNode: TCodeTreeNode; Params: TFindDeclarationParams): boolean; +var + IdentFoundResult: TIdentifierFoundResult; +begin + Result := FindIdentifierInAncestors(ClassNode, Params, IdentFoundResult{%H-}); +end; + function TFindDeclarationTool.FindClassAndAncestors(ClassNode: TCodeTreeNode; - out ListOfPFindContext: TFPList; ExceptionOnNotFound: boolean): boolean; + var ListOfPFindContext: TFPList; ExceptionOnNotFound: boolean): boolean; var Params: TFindDeclarationParams; @@ -4422,7 +5366,6 @@ begin {$IFDEF CheckNodeTool}CheckNodeTool(ClassNode);{$ENDIF} Result:=false; - ListOfPFindContext:=nil; if (ClassNode=nil) or (not (ClassNode.Desc in AllClasses)) or (ClassNode.Parent=nil) or (not (ClassNode.Parent.Desc in [ctnTypeDefinition,ctnGenericType])) then @@ -4450,14 +5393,83 @@ end; end; -function TFindDeclarationTool.FindContextClassAndAncestors( - const CursorPos: TCodeXYPosition; var ListOfPFindContext: TFPList - ): boolean; +procedure TFindDeclarationTool.FindHelpersInContext( + Params: TFindDeclarationParams); +var + Node: TCodeTreeNode; +begin + Node:=Params.StartNode; + Params.FNeedHelpers:=false; + while Node<>nil do + begin + case Node.Desc of + ctnClassHelper, ctnRecordHelper, ctnTypeHelper: + if (Node.Parent.Desc = ctnTypeDefinition) then + Params.GetHelpers(fdhlkDelphiHelper,true).AddFromHelperNode(Node, Self, + False{ keep last found Helper } + ); + ctnObjCCategory: + if (Node.Parent.Desc = ctnTypeDefinition) then + Params.GetHelpers(fdhlkObjCCategory,true).AddFromHelperNode(Node, Self, False); + ctnUsesSection: + FindHelpersInUsesSection(Node, Params); + end; + Node := Node.Prior; + end; +end; + +procedure TFindDeclarationTool.FindHelpersInInterface( + AskingTool: TFindDeclarationTool; Params: TFindDeclarationParams); +var + HelperKind: TFDHelpersListKind; + Cache: TFDHelpersList; +begin + // build tree for pascal source + if not BuildInterfaceIdentifierCache(true) then exit; + if (AskingTool<>Self) and (AskingTool<>nil) then + begin + AskingTool.AddToolDependency(Self); + for HelperKind in TFDHelpersListKind do begin + Cache:=FInterfaceHelperCache[HelperKind]; + if (Cache<>nil) and (Cache.Count>0) then + Params.GetHelpers(HelperKind,true).AddFromList(FInterfaceHelperCache[HelperKind]); + end; + end; +end; + +procedure TFindDeclarationTool.FindHelpersInUsesSection( + UsesNode: TCodeTreeNode; Params: TFindDeclarationParams); +var + NewCodeTool: TFindDeclarationTool; + Node: TCodeTreeNode; + AnUnitName: string; + InFilename: string; +begin + // search in units + //debugln(['TFindDeclarationTool.FindHelpersInUsesSection START ',CleanPosToStr(UsesNode.StartPos,true),' Main=',MainFilename]); + Node:=UsesNode.LastChild; + while Node<>nil do begin + AnUnitName:=ExtractUsedUnitName(Node,@InFilename); + if AnUnitName<>'' then begin + //debugln(['TFindDeclarationTool.FindHelpersInUsesSection ',CleanPosToStr(Node.StartPos),' AnUnitName="',AnUnitName,'" in "',InFilename,'"']); + NewCodeTool:=FindCodeToolForUsedUnit(AnUnitName,InFilename,false); + if NewCodeTool<>nil then begin + // search the identifier in the interface of the used unit + NewCodeTool.FindHelpersInInterface(Self,Params); + end; + end; + Node:=Node.PriorBrother; + end; +end; + +function TFindDeclarationTool.FindContextClassAndAncestorsAndExtendedClassOfHelper + (const CursorPos: TCodeXYPosition; var ListOfPFindContext: TFPList): boolean; // returns a list of nodes of AllClasses (ctnClass, ...) var CleanCursorPos: integer; ANode: TCodeTreeNode; ClassNode: TCodeTreeNode; + ExtendedClassExpr: TExpressionType; begin Result:=false; ListOfPFindContext:=nil; @@ -4481,6 +5493,15 @@ if not FindClassAndAncestors(ClassNode,ListOfPFindContext,true) then exit; + //find extended class node + ExtendedClassExpr := FindExtendedExprOfHelper(ClassNode); + if ((ExtendedClassExpr.Desc=xtContext) and (ExtendedClassExpr.Context.Tool<>nil) and + (ExtendedClassExpr.Context.Node<>nil) and (ExtendedClassExpr.Context.Node.Desc=ctnClass)) then + begin + if not ExtendedClassExpr.Context.Tool.FindClassAndAncestors(ExtendedClassExpr.Context.Node,ListOfPFindContext,true) + then exit; + end; + //debugln('TFindDeclarationTool.FindContextClassAndAncestors List: ',ListOfPFindContextToStr(ListOfPFindContext)); finally @@ -4534,24 +5555,29 @@ exit; end; BaseClassName:=nil; - if ClassNode.Desc=ctnClass then begin + case ClassNode.Desc of + ctnClass: if Scanner.Values.IsDefined('CPUJVM') then BaseClassName:='JLObject' else BaseClassName:='TObject'; - end else if ClassNode.Desc=ctnDispinterface then begin + ctnDispinterface: // default interface is IDispatch BaseClassName:='IDispatch'; - end else if ClassNode.Desc in AllClassInterfaces then begin - if Scanner.Values.IsDefined('CPUJVM') then - exit; // JVM has no default interface - // Delphi has as default interface IInterface - // FPC has as default interface IUnknown and an alias IInterface = IUnknown - if CompareSrcIdentifiers(ClassIdentNode.StartPos,'IUnknown') then exit; - BaseClassName:='IInterface'; - end else + ctnClassInterface: + begin + if Scanner.Values.IsDefined('CPUJVM') then + exit; // JVM has no default interface + // Delphi has as default interface IInterface + // FPC has as default interface IUnknown and an alias IInterface = IUnknown + if CompareSrcIdentifiers(ClassIdentNode.StartPos,'IUnknown') then exit; + BaseClassName:='IInterface'; + end + else exit; // has no default ancestor (e.g. record) - if CompareSrcIdentifiers(ClassIdentNode.StartPos,BaseClassName) then exit; + end; + if CompareSrcIdentifiers(ClassIdentNode.StartPos,BaseClassName) then + exit; // this is already the base class {$IFDEF ShowTriedContexts} DebugLn('[TFindDeclarationTool.FindAncestorOfClass] ', @@ -4582,8 +5608,7 @@ Params.SetResult(AncestorContext); // check result - if not (Params.NewNode.Desc in [ctnClass,ctnClassInterface]) - then + if Params.NewNode.Desc<>ClassNode.Desc then RaiseBaseClassNotFound; end; Result:=true; @@ -4690,10 +5715,10 @@ else begin // find declaration if Params=nil then - Params:=TFindDeclarationParams.Create + Params:=TFindDeclarationParams.Create(Self, CursorNode) else Params.Clear; - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, fdfIgnoreCurContextNode]; Params.ContextNode:=CursorNode; //debugln(copy(Src,Params.ContextNode.StartPos,200)); @@ -5140,6 +6165,8 @@ MoveCursorToCleanPos(StartPos); repeat ReadNextAtom; + if not SkipComments then + ; // ToDo if UpAtomIs(UpperUnitName) and not LastAtomIs(0,'.') then begin if CleanPosToCaret(CurPos.StartPos,ReferencePos) then begin @@ -5167,14 +6194,14 @@ try BuildTree(lsrEnd); - InterfaceUsesNode:=FindMainUsesSection; + InterfaceUsesNode:=FindMainUsesNode; if not CheckUsesSection(InterfaceUsesNode,Found) then exit; StartPos:=-1; if Found then begin StartPos:=InterfaceUsesNode.EndPos; end else begin - ImplementationUsesNode:=FindImplementationUsesSection; + ImplementationUsesNode:=FindImplementationUsesNode; if not CheckUsesSection(ImplementationUsesNode,Found) then exit; if Found then StartPos:=ImplementationUsesNode.EndPos; @@ -5206,6 +6233,8 @@ ListOfPCodeXYPosition:=nil; BuildTreeAndGetCleanPos(CursorPos,CleanPos); Node:=FindDeepestNodeAtPos(CleanPos,true); + if Node.Desc in [ctnUseUnitNamespace,ctnUseUnitClearName] then + Node:=Node.Parent; if Node.Desc<>ctnUseUnit then RaiseException('This function needs the cursor at a unit in a uses clause'); // cursor is on an used unit -> try to locate it @@ -5230,7 +6259,7 @@ if TargetTool=nil then RaiseException('TargetTool=nil'); TargetTool.BuildInterfaceIdentifierCache(true); - refs:=TFindUsedUnitReferences.Create; + refs:=TFindUsedUnitReferences.Create(Self, FindLastNode); try refs.TargetTool:=TargetTool; refs.TargetUnitName:=TargetTool.GetSourceName(false); @@ -5514,9 +6543,10 @@ } var ClassNameAtom: TAtomPosition; - OldInput: TFindDeclarationInput; + OldFlags: TFindDeclarationFlags; IdentFoundResult: TIdentifierFoundResult; CurClassNode: TCodeTreeNode; + ForExprType: TExpressionType; begin {$IFDEF CheckNodeTool}CheckNodeTool(ProcContextNode);{$ENDIF} Result:=false; @@ -5541,7 +6571,7 @@ CurClassNode:=FindClassOfMethod(ProcContextNode,true,true); repeat // search identifier in class - Params.Save(OldInput); + OldFlags := Params.Flags; Params.Flags:=[fdfSearchInAncestors] +(fdfGlobalsSameIdent*Params.Flags) -[fdfExceptionOnNotFound]; @@ -5549,8 +6579,20 @@ {$IFDEF ShowTriedContexts} DebugLn('[TFindDeclarationTool.FindIdentifierInClassOfMethod] searching identifier in class of method Identifier=',GetIdentifier(Params.Identifier)); {$ENDIF} - Result:=FindIdentifierInContext(Params); - Params.Load(OldInput,true); + if (fdfSearchInHelpers in Params.Flags) + and (CurClassNode.Desc in [ctnClassHelper,ctnRecordHelper]) + and (Params.GetHelpers(fdhlkDelphiHelper)<>nil) + then begin + // override current helper for the type and search in that type + ForExprType := Params.GetHelpers(fdhlkDelphiHelper).AddFromHelperNode(CurClassNode, Self, True).ForExprType; + if (ForExprType.Desc = xtContext) and (ForExprType.Context.Node<>nil) + then begin + Params.ContextNode:=ForExprType.Context.Node; + Result:=ForExprType.Context.Tool.FindIdentifierInContext(Params); + end; + end else + Result:=FindIdentifierInContext(Params); + Params.Flags := OldFlags; if Result and Params.IsFoundProcFinal then exit; // in a nested class, continue search in enclosing class repeat @@ -5578,6 +6620,14 @@ end; end; +function TFindDeclarationTool.FindIdentifierInContext( + Params: TFindDeclarationParams): boolean; +var + IdentFoundResult: TIdentifierFoundResult; +begin + Result := FindIdentifierInContext(Params, IdentFoundResult{%H-}); +end; + function TFindDeclarationTool.FindClassOfMethod(ProcNode: TCodeTreeNode; FindClassContext, ExceptionOnNotFound: boolean): TCodeTreeNode; var @@ -5608,7 +6658,7 @@ Result:=nil; if ProcNode.Desc=ctnProcedureHead then ProcNode:=ProcNode.Parent; - if ProcNode.Parent.Desc in AllClassSections then begin + if (ProcNode.Parent<>nil) and (ProcNode.Parent.Desc in AllClassSections) then begin CurClassNode:=ProcNode.Parent.Parent; if FindClassContext then begin // return the class node @@ -5830,7 +6880,8 @@ if (IdentifierNode.FirstChild=nil) then begin MoveCursorToCleanPos(IdentifierNode.StartPos); ReadNextAtom; - ReadNextAtom; + if UpAtomIs('SPECIALIZE') then + ReadNextAtom; RaiseStringExpectedButAtomFound('class type'); end; MoveCursorToCleanPos(IdentifierNode.FirstChild.StartPos); @@ -5838,25 +6889,14 @@ MoveCursorToCleanPos(IdentifierNode.StartPos); ReadNextAtom; AtomIsIdentifierE; - AncestorStartPos:=CurPos.StartPos; - ReadNextAtom; - - Params:=TFindDeclarationParams.Create; - try - Params.Flags:=fdfDefaultForExpressions-[fdfSearchInAncestors]; - Params.ContextNode:=IdentifierNode; - if CurPos.Flag in [cafRoundBracketClose,cafComma] then begin - // simple identifier - {$IFDEF ShowTriedContexts} - DebugLn('[TFindDeclarationTool.FindAncestorOfClass] ', - ' search ancestor class="',GetIdentifier(@Src[AncestorStartPos]),'" for class "',ExtractClassName(ClassNode,false),'"'); - {$ENDIF} - Params.SetIdentifier(Self,@Src[AncestorStartPos],nil); - if not FindIdentifierInContext(Params) then - exit; - AncestorContext.Tool:=Params.NewCodeTool; - AncestorContext.Node:=Params.NewNode; - end else begin + AncestorStartPos:=CurPos.StartPos; + ReadNextAtom; + + Params:=TFindDeclarationParams.Create; + try + Params.Flags:=fdfDefaultForExpressions; + Params.ContextNode:=IdentifierNode; + if CurPos.Flag=cafPoint then begin // complex identifier {$IFDEF ShowTriedContexts} DebugLn(['[TFindDeclarationTool.FindAncestorOfClass] ', @@ -5868,6 +6908,17 @@ if ExprType.Desc<>xtContext then RaiseExpected('type'); AncestorContext:=ExprType.Context + end else begin + // simple identifier + {$IFDEF ShowTriedContexts} + DebugLn('[TFindDeclarationTool.FindAncestorOfClass] ', + ' search ancestor class="',GetIdentifier(@Src[AncestorStartPos]),'" for class "',ExtractClassName(ClassNode,false),'"'); + {$ENDIF} + Params.SetIdentifier(Self,@Src[AncestorStartPos],nil); + if not FindIdentifierInContext(Params) then + exit; + AncestorContext.Tool:=Params.NewCodeTool; + AncestorContext.Node:=Params.NewNode; end; finally Params.Free; @@ -5947,7 +6998,7 @@ end; function TFindDeclarationTool.FindForwardIdentifier( - Params: TFindDeclarationParams; var IsForward: boolean): boolean; + Params: TFindDeclarationParams; out IsForward: boolean): boolean; { first search the identifier in the normal way via FindIdentifierInContext then search the other direction } var @@ -5981,6 +7032,8 @@ end else if Node.Desc<>ctnTypeDefinition then exit; Node:=Node.FirstChild; + if Node=nil then + Exit; Identifier:=@Src[Node.StartPos]; if (Node=nil) or (not (Node.Desc in AllClasses)) @@ -6049,7 +7102,9 @@ OldExtractedOperand:=Params.ExtractedOperand; WithVarExpr:=FindExpressionTypeOfTerm(WithVarNode.StartPos,-1,Params,true); if fdfExtractOperand in Params.Flags then - NewExtractedOperand:=Params.ExtractedOperand+'.'; + NewExtractedOperand:=Params.ExtractedOperand+'.' + else + NewExtractedOperand:=''; if (WithVarExpr.Desc<>xtContext) or (WithVarExpr.Context.Node=nil) or (WithVarExpr.Context.Node=OldInput.ContextNode) @@ -6073,7 +7128,8 @@ end; function TFindDeclarationTool.FindIdentifierInAncestors( - ClassNode: TCodeTreeNode; Params: TFindDeclarationParams): boolean; + ClassNode: TCodeTreeNode; Params: TFindDeclarationParams; + var IdentFoundResult: TIdentifierFoundResult): boolean; { this function is internally used by FindIdentifierInContext and FindBaseTypeOfNode } @@ -6081,13 +7137,15 @@ function Search(AncestorTool: TFindDeclarationTool; AncestorClassNode: TCodeTreeNode): boolean; var - OldInput: TFindDeclarationInput; + OldFlags: TFindDeclarationFlags; begin - Params.Save(OldInput); + OldFlags := Params.Flags; Params.ContextNode:=AncestorClassNode; - Params.Flags:=Params.Flags-[fdfIgnoreCurContextNode,fdfSearchInParentNodes]+[fdfSearchInAncestors]; - Result:=AncestorTool.FindIdentifierInContext(Params); - Params.Load(OldInput,true); + Params.Flags:=Params.Flags + -[fdfIgnoreCurContextNode,fdfSearchInParentNodes] + +[fdfSearchInAncestors]; + Result:=AncestorTool.FindIdentifierInContext(Params,IdentFoundResult); + Params.Flags := OldFlags; end; var @@ -6186,8 +7244,7 @@ } type TOperandAndOperator = record - Operand: TExpressionType; - AliasType: TFindContext; + Operand: TOperand; theOperator: TAtomPosition; OperatorLvl: integer; end; @@ -6212,7 +7269,7 @@ 0 Integer + } var - NewOperand: TExpressionType; + NewOperand: TOperand; LastPos: TAtomPosition; begin if StackPtr<=0 then begin @@ -6239,11 +7296,6 @@ // put result on stack ExprStack[StackPtr-1]:=ExprStack[StackPtr]; - // ToDo: handle alias in CalculateBinaryOperator - // => Workaround: - if NewOperand.Desc<>ExprStack[StackPtr-1].Operand.Desc then - ExprStack[StackPtr-1].AliasType:=CleanFindContext; // reset alias type - dec(StackPtr); ExprStack[StackPtr].Operand:=NewOperand; end; @@ -6299,11 +7351,11 @@ if StackPtr>High(ExprStack) then RaiseInternalErrorStack; StackEntry:=@ExprStack[StackPtr]; - StackEntry^.Operand:=CurExprType; + StackEntry^.Operand.Expr:=CurExprType; if CurAliasType<>nil then - StackEntry^.AliasType:=CurAliasType^ + StackEntry^.Operand.AliasType:=CurAliasType^ else - StackEntry^.AliasType:=CleanFindContext; + StackEntry^.Operand.AliasType:=CleanFindContext; StackEntry^.theOperator.StartPos:=-1; StackEntry^.OperatorLvl:=5; // read operator @@ -6316,9 +7368,9 @@ if (CurPos.EndPos>EndPos) or (CurExprType.Desc=xtNone) then begin // -> execute complete stack ExecuteStack(true); - Result:=ExprStack[StackPtr].Operand; + Result:=ExprStack[StackPtr].Operand.Expr; if CurAliasType<>nil then - AliasType^:=ExprStack[StackPtr].AliasType; + AliasType^:=ExprStack[StackPtr].Operand.AliasType; Params.Flags:=OldFlags; exit; end; @@ -6392,19 +7444,20 @@ Node:=UsesNode.LastChild; while Node<>nil do begin if (fdfCollect in Params.Flags) then begin - CollectResult:=DoOnIdentifierFound(Params,Node); + CollectResult:=DoOnIdentifierFound(Params,Node.FirstChild); if CollectResult=ifrAbortSearch then begin Result:=false; exit; end else if CollectResult=ifrSuccess then begin Result:=true; - Params.SetResult(Self,Node); + Params.SetResult(Self,Node.FirstChild); exit; end; end else if CompareSrcIdentifiers(Node.StartPos,Params.Identifier) then begin // the searched identifier was a uses AUnitName, point to the identifier in // the uses section - Params.SetResult(Self,Node,Node.StartPos); + // if the unit name has a namespace defined point to the namespace + Params.SetResult(Self,Node.FirstChild); Result:=true; exit; end; @@ -6541,6 +7594,8 @@ Node: TCodeTreeNode; begin Node:=ParentNode.FirstChild; + if (Node=nil) or (Scanner.GetDirectiveValueAt(sdScopedEnums, Node.StartPos) = '1') then + Exit; while Node<>nil do begin if Node.Desc=ctnEnumIdentifier then FInterfaceIdentifierCache.Add(@Src[Node.StartPos],Node,Node.StartPos); @@ -6556,30 +7611,11 @@ end; end; - procedure ScanForExtendedClass(ParentNode: TCodeTreeNode); - var - Node: TCodeTreeNode; - begin - Node:=ParentNode.FirstChild; - if (Node<>nil) then - case Node.Desc of - ctnObjCCategory: - begin - Node:=FindInheritanceNode(Node); - if Assigned(Node) then begin - Node:=Node.FirstChild; - if Assigned(Node) then - FInterfaceIdentifierCache.Add(@Src[Node.StartPos], - ParentNode,ParentNode.StartPos); - end; - end; - { TODO : class helpers } - end; - end; - procedure ScanChildren(ParentNode: TCodeTreeNode); forward; procedure ScanNode(Node: TCodeTreeNode); + var + FirstChild: TCodeTreeNode; begin case Node.Desc of ctnTypeSection,ctnConstSection,ctnVarSection,ctnResStrSection,ctnPropertySection: @@ -6588,7 +7624,17 @@ begin FInterfaceIdentifierCache.Add(@Src[Node.StartPos],Node,Node.StartPos); ScanForEnums(Node); - ScanForExtendedClass(Node); + FirstChild:=Node.FirstChild; + if (Node.Desc = ctnTypeDefinition) and (FirstChild<>nil) then begin + case FirstChild.Desc of + ctnClassHelper, ctnRecordHelper, ctnTypeHelper: + FInterfaceHelperCache[fdhlkDelphiHelper].AddFromHelperNode(FirstChild, Self, + True{ use last found helper} + ); + ctnObjCCategory: + FInterfaceHelperCache[fdhlkObjCCategory].AddFromHelperNode(FirstChild, Self, false); + end; + end; end; ctnGenericType: if Node.FirstChild<>nil then begin @@ -6621,6 +7667,7 @@ var InterfaceNode: TCodeTreeNode; Node: TCodeTreeNode; + HelperKind: TFDHelpersListKind; begin // build tree for pascal source //debugln(['TFindDeclarationTool.BuildInterfaceIdentifierCache BEFORE ',MainFilename]); @@ -6650,6 +7697,11 @@ else FInterfaceIdentifierCache.Clear; FInterfaceIdentifierCache.Complete:=true; + for HelperKind in TFDHelpersListKind do + if FInterfaceHelperCache[HelperKind]=nil then + FInterfaceHelperCache[HelperKind]:=TFDHelpersList.Create(HelperKind) + else + FInterfaceHelperCache[HelperKind].Clear; // add unit node MoveCursorToNodeStart(Tree.Root); @@ -6777,7 +7829,7 @@ if TypeNode.Desc=ctnIdentifier then begin // resolve type //debugln(['TFindDeclarationTool.FindIdentifierInTypeOfConstant ']); - TypeParams:=TFindDeclarationParams.Create; + TypeParams:=TFindDeclarationParams.Create(Params); try TypeParams.ContextNode:=TypeNode; TypeParams.SetIdentifier(Self,nil,nil); @@ -6950,6 +8002,7 @@ 9. (@A) 10. A()[] 11. nothing (e.g. cursor behind semicolon, keyword or closing bracket) + 12. 'A'.B (constant.B, type helpers) } procedure RaiseIdentNotFound; begin @@ -6959,6 +8012,7 @@ var CurAtom, NextAtom: TAtomPosition; NextAtomType, CurAtomType: TVariableAtomType; StartPos: LongInt; + CurIsValue, NextIsValue: Boolean; begin StartPos:=FindStartOfAtom(Src,EndPos); MoveCursorToCleanPos(StartPos); @@ -6966,6 +8020,7 @@ if not IsSpaceChar[Src[StartPos]] then ReadNextAtom; NextAtomType:=GetCurrentAtomType; + NextIsValue:=NextAtomType in [vatIdentifier,vatPreDefIdentifier,vatNumber,vatStringConstant]; repeat ReadPriorAtom; CurAtom:=CurPos; @@ -7000,14 +8055,13 @@ Result:=NextAtom.StartPos; exit; end; - if (not (CurAtomType in [vatIdentifier,vatPreDefIdentifier,vatPoint,vatUp, - vatEdgedBracketClose,vatRoundBracketClose])) - or ((CurAtomType in [vatIdentifier,vatPreDefIdentifier,vatNone]) - and (NextAtomType in [vatIdentifier,vatPreDefIdentifier])) - or ((CurAtomType in [vatNone]) - and (NextAtomType in [vatIdentifier,vatPreDefIdentifier, - vatRoundBracketClose])) + CurIsValue:=CurAtomType in [vatIdentifier,vatPreDefIdentifier,vatNumber,vatStringConstant]; + + if (not (CurAtomType in [vatIdentifier,vatPreDefIdentifier,vatNumber,vatStringConstant, + vatPoint,vatUp,vatEdgedBracketClose,vatRoundBracketClose])) + or (CurIsValue and NextIsValue) then begin + // boundary found between current and next if NextAtom.StartPos>=EndPos then begin // no token belongs to a variable (e.g. ; ;) Result:=EndPos; @@ -7026,6 +8080,7 @@ end; NextAtom:=CurAtom; NextAtomType:=CurAtomType; + NextIsValue:=CurIsValue; until false; end; @@ -7054,8 +8109,8 @@ TIsIdentEndOfVar = (iieovYes, iieovNo, iieovUnknown); var CurAtomType: TVariableAtomType; - NextAtomType: TVariableAtomType; // next, after any brackets - LastAtomType: TVariableAtomType; + NextAtomType: TVariableAtomType; // next, if CurAtomType is brackets then after the brackets + PrevAtomType: TVariableAtomType; // previous, start of brackets CurAtom, NextAtom: TAtomPosition; CurAtomBracketEndPos: integer; StartNode: TCodeTreeNode; @@ -7115,7 +8170,7 @@ {$IFDEF ShowExprEval} DebugLn([' FindExpressionTypeOfTerm InitAtomQueue StartPos=',StartPos,' EndPos=',EndPos,' Expr="',copy(Src,StartPos,EndPos-StartPos),'"']); {$ENDIF} - LastAtomType:=vatNone; + PrevAtomType:=vatNone; MoveCursorToCleanPos(StartPos); ReadNextAtom; if CurPos.StartPos>SrcLen then exit; @@ -7138,7 +8193,7 @@ procedure ReadNextExpressionAtom; begin - LastAtomType:=CurAtomType; + PrevAtomType:=CurAtomType; CurAtom:=NextAtom; CurAtomType:=NextAtomType; MoveCursorToCleanPos(NextAtom.StartPos); @@ -7206,12 +8261,32 @@ end; Result:=FlagCanBeForwardDefined; end; + + procedure ResolveTypeLessProperty; + begin + if ExprType.Desc<>xtContext then exit; + with ExprType.Context do begin + if not (Node.Desc in [ctnProperty,ctnGlobalProperty]) then exit; + if Tool.PropNodeIsTypeLess(Node) + and Tool.MoveCursorToPropName(Node) then begin + // typeless property => search in ancestors: it can be property with parameters + Params.Save(OldInput); + Params.SetIdentifier(Tool,@Tool.Src[Tool.CurPos.StartPos],nil); + Params.Flags:=[fdfSearchInAncestors,fdfSearchInHelpers]; + if Tool.FindIdentifierInAncestors(Node.Parent.Parent,Params) then begin + Tool:=Params.NewCodeTool; + Node:=Params.NewNode; + end; + Params.Load(OldInput,true); + end; + end; + end; procedure ResolveBaseTypeOfIdentifier; { normally not the identifier is searched, but its type but there is one exception: if the identifier is a function and it is the end of the variable then - the the decision is based on the fdfFunctionResult flag. + the decision is based on the fdfFunctionResult flag. } var ProcNode, FuncResultNode: TCodeTreeNode; @@ -7220,39 +8295,22 @@ Context: TFindContext; begin //DebugLn(['ResolveBaseTypeOfIdentifier ',ExprType.Context.Node<>nil]); - if ExprType.Desc=xtNone then - Context:=CreateFindContext(Self,StartNode) + if ExprType.Desc=xtContext then + Context:=ExprType.Context else - Context:=ExprType.Context; - + Context:=CreateFindContext(Self,StartNode); if (Context.Node=nil) then exit; + AtEnd:=IsIdentifierEndOfVariable; // check if at the end of the variable - if AtEnd and (fdfFindVariable in StartFlags) then + if AtEnd and (fdfFindVariable in StartFlags) then begin // the variable is wanted, not its type exit; + end; if (not AtEnd) and (Context.Node.Desc in [ctnProperty,ctnGlobalProperty]) then begin - with Context do begin - if Tool.PropNodeIsTypeLess(Node) - and Tool.MoveCursorToPropName(Node) then begin - // typeless property => search in ancestors: it can be property with parameters - Params.Save(OldInput); - Params.SetIdentifier(Tool,@Tool.Src[Tool.CurPos.StartPos],nil); - Params.Flags:=[fdfSearchInAncestors]; - if Tool.FindIdentifierInAncestors(Node.Parent.Parent,Params) then begin - Tool:=Params.NewCodeTool; - Node:=Params.NewNode; - ExprType.Context:=Context; - end; - Params.Load(OldInput,true); - end; - end; - if Context.Tool.PropertyNodeHasParamList(Context.Node) then begin - // the parameter list is resolved with the [] operators - exit; - end; + ResolveTypeLessProperty; end; CurAliasType:=nil; @@ -7307,7 +8365,11 @@ SearchForwardToo: Boolean; begin // for example 'AnObject[3]' - + + {$IFDEF ShowExprEval} + debugln(['ResolveIdentifier "',GetAtom(CurAtom),'"']); + {$ENDIF} + // check special identifiers 'Result' and 'Self' IdentFound:=false; IsStart:=ExprType.Desc=xtNone; @@ -7323,22 +8385,44 @@ while (ProcNode<>nil) do begin if (ProcNode.Desc=ctnProcedure) and NodeIsMethodBody(ProcNode) then begin - ResultNode:=FindClassOfMethod(ProcNode,not IsEnd, + ResultNode:=FindClassOfMethod(ProcNode,True, fdfExceptionOnNotFound in Params.Flags); - ExprType.Desc:=xtContext; - ExprType.Context.Tool:=Self; + if (ResultNode<>nil) and + (ResultNode.Desc in [ctnClassHelper,ctnRecordHelper,ctnTypeHelper]) + then//Self is helper -> return extended type + begin + ExprType := FindExtendedExprOfHelper(ResultNode); + ResultNode := ExprType.Context.Node; + end else + begin//Self is class/record + if (ResultNode<>nil) and (ResultNode.Parent<>nil) then + begin + ExprType.Desc:=xtContext; + ExprType.Context.Tool:=Self; + end else + ExprType := CleanExpressionType; + end; + if IsEnd and (ResultNode<>nil) then + ResultNode := ResultNode.Parent; ExprType.Context.Node:=ResultNode; - IdentFound:=ResultNode<>nil; + IdentFound:=ExprType.Desc<>xtNone; break; end; ProcNode:=ProcNode.Parent; end; - end else if (cmsResult in FLastCompilerModeSwitches) - and CompareSrcIdentifiers(CurAtom.StartPos,'RESULT') then begin + end else if CompareSrcIdentifiers(CurAtom.StartPos,'RESULT') + and (cmsResult in Scanner.CompilerModeSwitches) then begin // RESULT has a special meaning in a function // -> check if in a function - if fdfExtractOperand in Params.Flags then Params.AddOperandPart('Result'); - ProcNode:=StartNode.GetNodeOfType(ctnProcedure); + if fdfExtractOperand in Params.Flags then + Params.AddOperandPart('Result'); + ProcNode:=StartNode; + while (ProcNode<>nil) do begin + if (ProcNode.Desc=ctnProcedure) + and (NodeIsFunction(ProcNode) or NodeIsOperator(ProcNode)) then + break; + ProcNode:=ProcNode.Parent; + end; if (ProcNode<>nil) then begin if IsEnd and (fdfFindVariable in StartFlags) then begin BuildSubTreeForProcHead(ProcNode); @@ -7358,8 +8442,8 @@ end else begin OldFlags:=Params.Flags; Params.Flags:=Params.Flags+[fdfFunctionResult,fdfFindChildren]; - ExprType.Desc:=xtContext; ExprType.Context:=FindBaseTypeOfNode(Params,ProcNode); + ExprType.Desc:=xtContext; Params.Flags:=OldFlags; exit; end; @@ -7369,89 +8453,144 @@ end; // find sub identifier if not IdentFound then begin - Params.Save(OldInput); - - // build new param flags for sub identifiers - Params.Flags:=[fdfSearchInAncestors,fdfExceptionOnNotFound] - +(fdfGlobals*Params.Flags); - if IsStart then - Context:=CreateFindContext(Self,StartNode) - else - Context:=ExprType.Context; - Params.ContextNode:=Context.Node; - SearchForwardToo:=false; - if Context.Node=StartNode then begin - // there is no special context -> search in parent contexts too - Params.Flags:=Params.Flags+[fdfSearchInParentNodes,fdfIgnoreCurContextNode]; - // check if searching forward too - if CanBeForwardDefined then begin - SearchForwardToo:=true; - Params.Flags:=Params.Flags-[fdfExceptionOnNotFound]; + if not (ExprType.Desc in [xtContext,xtNone]) then + begin + if (ExprType.Desc in xtAllTypeHelperTypes) then + begin + // found predefined basic type (e.g. string) without a context! + // -> search in type helpers + Params.Save(OldInput); + // build new param flags for sub identifiers + Params.Flags:=[fdfSearchInAncestors,fdfExceptionOnNotFound,fdfSearchInHelpers] + +(fdfGlobals*Params.Flags); + Params.SetIdentifier(Self,@Src[CurAtom.StartPos],nil); + {$IFDEF ShowExprEval} + debugln(['ResolveIdentifier searching "',GetAtom(CurAtom),'" in helper of predefined type "',ExprTypeToString(ExprType),'"']); + {$ENDIF} + if FindIdentifierInBasicTypeHelpers(ExprType.Desc, Params) then + begin + ExprType.Desc:=xtContext; + ExprType.SubDesc:=xtNone; + ExprType.Context.Tool := Params.NewCodeTool; + ExprType.Context.Node := Params.NewNode; + {$IFDEF ShowExprEval} + debugln(['ResolveIdentifier "',GetAtom(CurAtom),'" Found In Helper: "',ExprTypeToString(ExprType),'"']); + {$ENDIF} + end else begin + {$IFDEF ShowExprEval} + debugln(['ResolveIdentifier "',GetAtom(CurAtom),'" NOT Found In Helper']); + {$ENDIF} + end; + Params.Load(OldInput,true); end; - end else begin - // only search in special context - Params.Flags:=Params.Flags+[fdfIgnoreUsedUnits]; - if Context.Node.Desc=ctnImplementation then - Params.Flags:=Params.Flags+[fdfSearchInParentNodes]; - end; - // check identifier for overloaded procs - if (IsEnd and (fdfIgnoreOverloadedProcs in StartFlags)) - then - Include(Params.Flags,fdfIgnoreOverloadedProcs); + if ExprType.Desc in xtAllPredefinedTypes then begin + ExprType:=FindExpressionTypeOfPredefinedIdentifier(CurAtom.StartPos, + Params); + {$IFDEF CheckNodeTool} + if ExprType.Desc=xtContext then + ExprType.Context.Tool.CheckNodeTool(ExprType.Context.Node); + {$ENDIF} + {$IFDEF ShowExprEval} + debugln(['ResolveIdentifier Predefined "',GetAtom(CurAtom),'" : ',ExprType.Desc in xtAllTypeHelperTypes]); + {$ENDIF} + end; + end else + begin + if ExprType.Desc=xtContext then + Context:=ExprType.Context + else + Context:=CreateFindContext(Self,StartNode); + Params.Save(OldInput); + // build new param flags for sub identifiers + Params.Flags:=[fdfSearchInAncestors,fdfExceptionOnNotFound,fdfSearchInHelpers] + +(fdfGlobals*Params.Flags); + Params.ContextNode:=Context.Node; + SearchForwardToo:=false; + if Context.Node=StartNode then begin + // there is no special context -> search in parent contexts too + Params.Flags:=Params.Flags+[fdfSearchInParentNodes,fdfIgnoreCurContextNode]; + // check if searching forward too + if CanBeForwardDefined then begin + SearchForwardToo:=true; + Params.Flags:=Params.Flags-[fdfExceptionOnNotFound]; + end; + end else begin + // only search in special context + Params.Flags:=Params.Flags+[fdfIgnoreUsedUnits]; + if Assigned(Context.Node) and (Context.Node.Desc=ctnImplementation) then + Params.Flags:=Params.Flags+[fdfSearchInParentNodes]; + if Context.Node.Desc=ctnObjCClass then + Exclude(Params.Flags,fdfExceptionOnNotFound); // ObjCClass has predefined identifiers like 'alloc' + end; - Params.SetIdentifier(Self,@Src[CurAtom.StartPos],@CheckSrcIdentifier); + // check identifier for overloaded procs + if (IsEnd and (fdfIgnoreOverloadedProcs in StartFlags)) + then + Include(Params.Flags,fdfIgnoreOverloadedProcs); - // search ... - {$IFDEF ShowExprEval} - Dbgout([' FindExpressionTypeOfTerm ResolveIdentifier backward ',BoolToStr(IsStart,'Main','Sub'),'Ident="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); - {$ENDIF} - ExprType.Desc:=xtNone; - // first search backwards - if Context.Tool.FindIdentifierInContext(Params) then begin - ExprType.Desc:=xtContext; - end else if SearchForwardToo then begin - // then search forwards - Params.Load(OldInput,false); Params.SetIdentifier(Self,@Src[CurAtom.StartPos],@CheckSrcIdentifier); - Params.Flags:=[fdfSearchInParentNodes,fdfExceptionOnNotFound, - fdfIgnoreCurContextNode,fdfSearchForward] - +(fdfGlobals*Params.Flags); - Params.ContextNode:=Context.Node; + + // search ... {$IFDEF ShowExprEval} - DebugLn([' FindExpressionTypeOfTerm ResolveIdentifier forward SubIdent="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); + Dbgout([' FindExpressionTypeOfTerm ResolveIdentifier "',GetAtom(CurAtom),'" backward ',BoolToStr(IsStart,'Main','Sub'),'Ident="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); {$ENDIF} - if FindIdentifierInContext(Params) then begin + ExprType.Desc:=xtNone; + // first search backwards + if Context.Tool.FindIdentifierInContext(Params) then begin ExprType.Desc:=xtContext; + end else if SearchForwardToo then begin + // then search forwards + Params.Load(OldInput,false); + Params.SetIdentifier(Self,@Src[CurAtom.StartPos],@CheckSrcIdentifier); + Params.Flags:=[fdfSearchInParentNodes,fdfExceptionOnNotFound, + fdfIgnoreCurContextNode,fdfSearchForward] + +(fdfGlobals*Params.Flags); + Params.ContextNode:=Context.Node; + {$IFDEF ShowExprEval} + DebugLn([' FindExpressionTypeOfTerm ResolveIdentifier "',GetAtom(CurAtom),'" forward SubIdent="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); + {$ENDIF} + if FindIdentifierInContext(Params) then begin + ExprType.Desc:=xtContext; + end; end; - end; - if ExprType.Desc=xtContext then begin - // identifier found - if Params.NewCodeTool.NodeIsConstructor(Params.NewNode) then begin - // identifier is a constructor - if (Context.Node.Desc in AllClassObjects) then begin - if (not IsEnd) or (not (fdfFindVariable in StartFlags)) then begin - // examples: - // TMyClass.Create. - // :=TMyClass.Create; - // use this class (the constructor can be defined in the ancestor) - ExprType.Context:=Context; - Params.Load(OldInput,true); - exit; + if ExprType.Desc=xtContext then begin + // identifier found + if Params.NewCodeTool.NodeIsConstructor(Params.NewNode) then begin + // identifier is a constructor + if (Context.Node.Desc in AllClassObjects) then begin + if (not IsEnd) or (not (fdfFindVariable in StartFlags)) then begin + // examples: + // TMyClass.Create. + // :=TMyClass.Create; + // use this class (the constructor can be defined in the ancestor) + ExprType.Context:=Context; + Params.Load(OldInput,true); + exit; + end; end; end; + ExprType.Context:=CreateFindContext(Params); + Params.Load(OldInput,true); + end else begin + // predefined identifier + if (Context.Node.Desc=ctnObjCClass) + and CompareSrcIdentifiers('alloc',@Src[CurAtom.StartPos]) + then begin + // 'alloc' returns the class itself + ExprType.Context:=Context; + Params.Load(OldInput,true); + exit; + end; + + Params.Load(OldInput,true); + ExprType:=FindExpressionTypeOfPredefinedIdentifier(CurAtom.StartPos, + Params); + {$IFDEF CheckNodeTool} + if ExprType.Desc=xtContext then + ExprType.Context.Tool.CheckNodeTool(ExprType.Context.Node); + {$ENDIF} end; - ExprType.Context:=CreateFindContext(Params); - Params.Load(OldInput,true); - end else begin - // predefined identifier - Params.Load(OldInput,true); - ExprType:=FindExpressionTypeOfPredefinedIdentifier(CurAtom.StartPos, - Params); - {$IFDEF CheckNodeTool} - if ExprType.Desc=xtContext then - ExprType.Context.Tool.CheckNodeTool(ExprType.Context.Node); - {$ENDIF} end; // ToDo: check if identifier in 'Protected' section @@ -7462,6 +8601,32 @@ end; end; + procedure ResolveConstant; + var + IsStart: Boolean; + begin + IsStart:=ExprType.Desc=xtNone; + if not IsStart then + RaiseExceptionFmt(ctsOperatorExpectedButAtomFound,[GetAtom]); + if AtomIsStringConstant then begin + // string or char constant + if AtomIsCharConstant then + ExprType.Desc:=xtChar + else + ExprType.Desc:=xtConstString; + MoveCursorToCleanPos(CurPos.StartPos); + end + else if AtomIsNumber then begin + // ordinal or real constant + if AtomIsRealNumber then + ExprType.Desc:=xtConstReal + else + ExprType.Desc:=xtConstOrdInteger; + MoveCursorToCleanPos(CurPos.EndPos); + end else + RaiseExceptionFmt(ctsOperatorExpectedButAtomFound,[GetAtom]); + end; + procedure ResolveUseUnit; var AnUnitName: string; @@ -7472,9 +8637,9 @@ begin aTool:=ExprType.Context.Tool; {$IFDEF ShowExprEval} - debugln([' FindExpressionTypeOfTerm ResolveChildren used unit -> interface node ',dbgstr(ExprType.Context.Tool.ExtractNode(ExprType.Context.Node,[]))]); + debugln([' FindExpressionTypeOfTerm ResolveUseUnit used unit -> interface node ',dbgstr(ExprType.Context.Tool.ExtractNode(ExprType.Context.Node,[]))]); {$ENDIF} - AnUnitName:=aTool.ExtractUsedUnitName(ExprType.Context.Node,@InFilename); + AnUnitName:=aTool.ExtractUsedUnitName(ExprType.Context.Node.Parent,@InFilename); NewCodeTool:=aTool.FindCodeToolForUsedUnit(AnUnitName,InFilename,true); NewCodeTool.BuildInterfaceIdentifierCache(true); NewNode:=NewCodeTool.FindInterfaceNode; @@ -7491,10 +8656,13 @@ debugln([' FindExpressionTypeOfTerm ResolveChildren']); {$ENDIF} ResolveBaseTypeOfIdentifier; + {$IFDEF ShowExprEval} + debugln([' FindExpressionTypeOfTerm ResolveChildren ExprType=',ExprTypeToString(ExprType)]); + {$ENDIF} if (ExprType.Context.Node=nil) then exit; if (ExprType.Context.Node.Desc in AllUsableSourceTypes) then begin if ExprType.Context.Tool=Self then begin - // this unit name => implementation + // unit name of this unit => implementation // Note: allowed for programs too NewNode:=Tree.Root; if NewNode.Desc=ctnUnit then begin @@ -7507,23 +8675,20 @@ {$ENDIF} ExprType.Context.Node:=NewNode; end else begin - // unit name => interface + // unit name of another unit => interface {$IFDEF ShowExprEval} debugln([' FindExpressionTypeOfTerm ResolveChildren unit -> interface node']); {$ENDIF} ExprType.Context.Node:=ExprType.Context.Tool.GetInterfaceNode; end; end - else if (ExprType.Context.Node.Desc=ctnUseUnit) then begin + else if (ExprType.Context.Node.Desc=ctnUseUnitClearName) then begin // uses unit name => interface of used unit ResolveUseUnit; end else if (ExprType.Context.Node.Desc=ctnClassOfType) then begin // 'class of' => jump to the class - ExprType.Desc:=xtContext; - Params.Flags:=Params.Flags+[fdfFunctionResult,fdfFindChildren]; - ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params, - ExprType.Context.Node.FirstChild); + ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params,ExprType.Context.Node.FirstChild); end else if (ExprType.Desc=xtContext) and (ExprType.Context.Node.Desc=ctnPointerType) @@ -7533,10 +8698,7 @@ // -> check for pointer type // left side of expression has defined a special context // => this '.' is a dereference - ExprType.Desc:=xtContext; - Params.Flags:=Params.Flags+[fdfFunctionResult,fdfFindChildren]; - ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params, - ExprType.Context.Node.FirstChild); + ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params,ExprType.Context.Node.FirstChild); end; end; @@ -7551,7 +8713,9 @@ RaiseIdentExpected; end; ResolveChildren; - if (ExprType.Context.Node=nil) then begin + if ExprType.Desc in xtAllTypeHelperTypes then begin + // Lazarus supports record helpers for basic types (string) as well (with TYPEHELPERS modeswitch!). + end else if (ExprType.Context.Node=nil) then begin MoveCursorToCleanPos(CurAtom.StartPos); ReadNextAtom; RaiseIllegalQualifierFound; @@ -7599,7 +8763,7 @@ end; ResolveBaseTypeOfIdentifier; if (ExprType.Desc=xtPointer) then begin - // the compiler type pointer resolves to a pointer + // the compiler type 'Pointer' exit; end; if (ExprType.Context.Node<>StartNode) then begin @@ -7618,8 +8782,7 @@ RaiseExceptionFmt(ctsIllegalQualifier,['^']); end; ExprType.Desc:=xtContext; - ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params, - ExprType.Context.Node.FirstChild); + ExprType.Context.Node:=ExprType.Context.Node.FirstChild; end else if NodeHasParentOfType(ExprType.Context.Node,ctnPointerType) then begin // this is a pointer type definition @@ -7650,11 +8813,9 @@ ExprType.Context.Tool.RaiseExceptionFmt(ctsStrExpectedButAtomFound, [ctsIdentifier,GetAtom]); end; - const - EdgedBracketContexts = xtAllStringTypes+[xtNone]; begin {$IFDEF ShowExprEval} - debugln([' FindExpressionTypeOfTerm ResolveEdgedBracketOpen']); + debugln([' FindExpressionTypeOfTerm ResolveEdgedBracketOpen ',ExprTypeToString(ExprType)]); {$ENDIF} if fdfExtractOperand in Params.Flags then begin // simple copying, todo: expand argument @@ -7667,6 +8828,22 @@ ReadNextAtom; RaiseIllegalQualifierFound; end; + + if (ExprType.Desc=xtContext) + and (ExprType.Context.Node.Desc=ctnProperty) then begin + // [] behind a property + // -> Check if this property has parameters + ResolveTypeLessProperty; + if (ExprType.Desc=xtContext) + and (ExprType.Context.Node.Desc=ctnProperty) + and ExprType.Context.Tool.PropertyNodeHasParamList(ExprType.Context.Node) + then begin + // use the property type + ResolveChildren; + exit; + end; + end; + ResolveBaseTypeOfIdentifier; if ExprType.Desc in xtAllStringTypes then begin @@ -7705,43 +8882,37 @@ Params.SetIdentifier(Self,'tvarrec',nil); Params.ContextNode:=ExprType.Context.Node; ExprType.Context.Tool.FindIdentifierInContext(Params); - ExprType.Context:=Params.NewCodeTool.FindBaseTypeOfNode(Params, - Params.NewNode); + ExprType.Context:=CreateFindContext(Params); Params.Load(OldInput,true); end else begin - ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params, - ExprType.Context.Node.LastChild); + ExprType.Context.Node:=ExprType.Context.Node.LastChild; end; end; ctnPointerType: // the pointer type is the only child node - ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params, - ExprType.Context.Node.FirstChild); + ExprType.Context.Node:=ExprType.Context.Node.FirstChild; ctnClass, ctnClassInterface, ctnDispinterface, ctnObject, ctnRecordType, + ctnClassHelper, ctnRecordHelper, ctnTypeHelper, ctnObjCClass, ctnObjCCategory, ctnObjCProtocol, ctnCPPClass: begin // search default property of the class / interface Params.Save(OldInput); - Params.Flags:=[fdfSearchInAncestors,fdfExceptionOnNotFound] + Params.Flags:=[fdfSearchInAncestors,fdfExceptionOnNotFound,fdfSearchInHelpers] +fdfGlobals*Params.Flags; - // special identifier for default property + // special identifier '[' for default property Params.SetIdentifier(Self,@Src[CurAtom.StartPos],nil); Params.ContextNode:=ExprType.Context.Node; ExprType.Context.Tool.FindIdentifierInContext(Params); ExprType.Context:=CreateFindContext(Params); Params.Load(OldInput,true); - ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params, - ExprType.Context.Node); end; ctnProperty, ctnGlobalProperty: begin if not ExprType.Context.Tool.PropertyNodeHasParamList(ExprType.Context.Node) then RaiseIdentInCurContextNotFound; - ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params, - ExprType.Context.Node); end; ctnIdentifier: @@ -7785,7 +8956,7 @@ ReadNextAtom; RaiseIllegalQualifierFound; end; - if LastAtomType<>vatNone then begin + if PrevAtomType<>vatNone then begin // typecast or function {$IFDEF ShowExprEval} debugln([' FindExpressionTypeOfTerm ResolveRoundBracketOpen skip typecast/paramlist="',dbgstr(Src,CurAtom.StartPos,CurAtomBracketEndPos-CurAtom.StartPos),'"']); @@ -7809,7 +8980,7 @@ debugln([' FindExpressionTypeOfTerm ResolveRoundBracketOpen subexpr="',dbgstr(Src,CurAtom.StartPos,CurAtomBracketEndPos-CurAtom.StartPos),'"']); {$ENDIF} ExprType:=FindExpressionResultType(Params,CurAtom.StartPos+1, - CurAtomBracketEndPos-1); + CurAtomBracketEndPos-1, AliasType); end; end; @@ -7823,6 +8994,8 @@ Context: TFindContext; var DefProcNode: TCodeTreeNode; + HelperForExpr: TExpressionType; + SearchInHelpersInTheEnd: Boolean; begin if ExprType.Desc=xtNone then Context:=CreateFindContext(Self,StartNode) @@ -7867,6 +9040,27 @@ ExprType.Desc:=xtContext; ExprType.Context:=CreateFindContext(Params); + + SearchInHelpersInTheEnd := False; + if ClassNodeOfMethod.Desc in [ctnClassHelper,ctnRecordHelper] then + begin + // helpers have different order in "inherited" call. + // -> first search in extended class and then in helper (applies only to inherited call) + if (ExprType.Context.Node<>nil) then//inherited helper found -> use it! + Params.GetHelpers(fdhlkDelphiHelper,true) + .AddFromHelperNode(ExprType.Context.Node, ExprType.Context.Tool, True) + else//inherited helper not found -> delete current + Params.GetHelpers(fdhlkDelphiHelper,true) + .DeleteHelperNode(ClassNodeOfMethod, Self); + + HelperForExpr := FindExtendedExprOfHelper(ClassNodeOfMethod); + if HelperForExpr.Desc = xtContext then + begin + ExprType.Context := HelperForExpr.Context; + SearchInHelpersInTheEnd := True; + end; + end; + if (not HasIdentifier) then begin // the keyword 'inherited' is the last atom if StartFlags*[fdfFindChildren,fdfFindVariable]=[fdfFindVariable] then begin @@ -7886,6 +9080,8 @@ MoveCursorToCleanPos(CurAtom.StartPos); // search identifier only in class ancestor + if SearchInHelpersInTheEnd then + Params.Flags := Params.Flags + [fdfSearchInHelpersInTheEnd]; Params.Save(OldInput); Params.SetIdentifier(Self,@Src[CurPos.StartPos],@CheckSrcIdentifier); Params.ContextNode:=ExprType.Context.Node; @@ -7894,6 +9090,7 @@ ExprType.Context.Tool.FindIdentifierInContext(Params); ExprType.Context:=CreateFindContext(Params); Params.Load(OldInput,true); + Params.Flags := Params.Flags - [fdfSearchInHelpersInTheEnd]; end; begin @@ -7921,6 +9118,7 @@ {$ENDIF} case CurAtomType of vatIdentifier, vatPreDefIdentifier: ResolveIdentifier; + vatStringConstant,vatNumber: ResolveConstant; vatPoint: ResolvePoint; vatAS: ResolveAs; vatUP: ResolveUp; @@ -8025,7 +9223,7 @@ Tool.MoveCursorToNodeStart(Node); - // ToDo: check for circles + // ToDo: check for cycles Params.Save(OldInput); Params.ContextNode:=Node; @@ -8049,7 +9247,7 @@ if not (CurPos.Flag in [cafEqual,cafColon]) then exit; Tool.ReadNextAtom; - // ToDo: check for circles + // ToDo: check for cycles Params.Save(OldInput); Params.ContextNode:=Node; @@ -8146,6 +9344,8 @@ OldFlags: TFindDeclarationFlags; begin Result:=CleanExpressionType; + if AliasType<>nil then + AliasType^:=CleanFindContext; if CurPos.StartPos=CurPos.EndPos then ReadNextAtom; // read unary operators which have no effect on the type: +, -, not @@ -8311,7 +9511,7 @@ // array with explicit range // Low(array[SubRange]) has the type of the subrange Result.Context.Tool.MoveCursorToNodeStart(ParamNode.FirstChild); - SubParams:=TFindDeclarationParams.Create; + SubParams:=TFindDeclarationParams.Create(Params); try SubParams.Flags:=fdfDefaultForExpressions; SubParams.ContextNode:=ParamNode; @@ -8341,7 +9541,7 @@ // return type is System.SEL NewTool:=FindCodeToolForUsedUnit('system','',true); if NewTool=nil then exit; - SubParams:=TFindDeclarationParams.Create; + SubParams:=TFindDeclarationParams.Create(Params); try SubParams.Identifier:='SEL'#0; if (not NewTool.FindIdentifierInInterface(Self,SubParams)) @@ -8356,23 +9556,31 @@ end; xtString: - begin - if (Scanner.PascalCompiler=pcDelphi) - or ((Scanner.CompilerMode=cmDELPHI) - or (Scanner.Values['LONGSTRINGS']='1')) then - Result.Desc:=xtAnsiString; - end; + Result.Desc:=GetDefaultStringType; end; finally ParamList.Free; end; end; +function TFindDeclarationTool.GetDefaultStringType: TExpressionTypeDesc; +begin + if cmsDefault_unicodestring in Scanner.CompilerModeSwitches then + Result:=xtUnicodeString + else if (Scanner.PascalCompiler=pcDelphi) + or ((Scanner.CompilerMode=cmDELPHI) + or (Scanner.Values['LONGSTRINGS']='1')) then + Result:=xtAnsiString + else + Result:=xtString; +end; + function TFindDeclarationTool.CalculateBinaryOperator(LeftOperand, - RightOperand: TExpressionType; BinaryOperator: TAtomPosition; - Params: TFindDeclarationParams): TExpressionType; + RightOperand: TOperand; BinaryOperator: TAtomPosition; + Params: TFindDeclarationParams): TOperand; begin - Result:=CleanExpressionType; + Result.Expr:=CleanExpressionType; + Result.AliasType:=CleanFindContext; {$IFDEF ShowExprEval} DebugLn('[TFindDeclarationTool.CalculateBinaryOperator] A', ' LeftOperand=',ExpressionTypeDescNames[LeftOperand.Desc], @@ -8381,13 +9589,13 @@ ); {$ENDIF} // convert Left and RightOperand contexts to expressiontype - if LeftOperand.Desc=xtContext then begin - LeftOperand:=LeftOperand.Context.Tool.ConvertNodeToExpressionType( - LeftOperand.Context.Node,Params); - end; - if RightOperand.Desc=xtContext then begin - RightOperand:=RightOperand.Context.Tool.ConvertNodeToExpressionType( - RightOperand.Context.Node,Params); + if LeftOperand.Expr.Desc=xtContext then begin + LeftOperand.Expr:=LeftOperand.Expr.Context.Tool.ConvertNodeToExpressionType( + LeftOperand.Expr.Context.Node,Params); + end; + if RightOperand.Expr.Desc=xtContext then begin + RightOperand.Expr:=RightOperand.Expr.Context.Tool.ConvertNodeToExpressionType( + RightOperand.Expr.Context.Node,Params); end; @@ -8398,22 +9606,27 @@ then begin // Boolean operators // < > <= >= <> in is - Result.Desc:=xtBoolean; + Result.Expr.Desc:=xtBoolean; end else if (BinaryOperator.EndPos-BinaryOperator.StartPos=1) and (Src[BinaryOperator.StartPos]='/') then begin // real division / - Result.Desc:=xtConstReal; + Result:=RealTypesOrderList.Compare(LeftOperand, RightOperand, Self, BinaryOperator.EndPos); + if not(Result.Expr.Desc in xtAllRealTypes) then + begin + Result.Expr.Desc:=xtConstReal; + Result.AliasType:=CleanFindContext; + end; end else if WordIsOrdNumberOperator.DoItCaseInsensitive(Src,BinaryOperator.StartPos, BinaryOperator.EndPos-BinaryOperator.StartPos) then begin // ordinal number operator // or xor and mod div shl shr - if LeftOperand.Desc in xtAllBooleanTypes then - Result.Desc:=xtBoolean + if LeftOperand.Expr.Desc in xtAllBooleanTypes then + Result:=BooleanTypesOrderList.Compare(LeftOperand, RightOperand, Self, BinaryOperator.EndPos) else - Result.Desc:=xtConstOrdInteger; + Result:=IntegerTypesOrderList.Compare(LeftOperand, RightOperand, Self, BinaryOperator.EndPos); end else if WordIsNumberOperator.DoItCaseInsensitive(Src,BinaryOperator.StartPos, BinaryOperator.EndPos-BinaryOperator.StartPos) @@ -8422,38 +9635,44 @@ // + - * if (Src[BinaryOperator.StartPos]='+') - and (LeftOperand.Desc in xtAllStringCompatibleTypes) + and (LeftOperand.Expr.Desc in xtAllStringCompatibleTypes) then begin // string/char '+' - if (RightOperand.Desc in xtAllStringCompatibleTypes) + if (RightOperand.Expr.Desc in xtAllStringCompatibleTypes) then - Result.Desc:=xtConstString - else begin + begin + Result:=StringTypesOrderList.Compare(LeftOperand, RightOperand, Self, BinaryOperator.EndPos); + if not(Result.Expr.Desc in xtAllStringTypes) then + begin + Result.Expr.Desc:=xtConstString; + Result.AliasType:=CleanFindContext; + end; + end else begin MoveCursorToCleanPos(BinaryOperator.EndPos); ReadNextAtom; RaiseExceptionFmt(ctsIncompatibleTypesGotExpected, - ['char',ExpressionTypeDescNames[RightOperand.Desc]]); + ['char',ExpressionTypeDescNames[RightOperand.Expr.Desc]]); end; end else if (Src[BinaryOperator.StartPos] in ['+','-','*']) - and (LeftOperand.Desc=xtContext) - and (LeftOperand.Context.Node<>nil) - and (LeftOperand.Context.Node.Desc=ctnSetType) + and (LeftOperand.Expr.Desc=xtContext) + and (LeftOperand.Expr.Context.Node<>nil) + and (LeftOperand.Expr.Context.Node.Desc=ctnSetType) then begin Result:=LeftOperand; end else begin - if (LeftOperand.Desc in xtAllRealTypes) - or (RightOperand.Desc in xtAllRealTypes) then - Result.Desc:=xtConstReal - else if (LeftOperand.Desc=xtPointer) - or (RightOperand.Desc=xtPointer) - or ((LeftOperand.Desc=xtContext) - and (LeftOperand.Context.Node.Desc=ctnPointerType)) - or ((RightOperand.Desc=xtContext) - and (RightOperand.Context.Node.Desc=ctnPointerType)) + if (LeftOperand.Expr.Desc in xtAllRealTypes) + or (RightOperand.Expr.Desc in xtAllRealTypes) then + Result:=RealTypesOrderList.Compare(LeftOperand, RightOperand, Self, BinaryOperator.EndPos) + else if (LeftOperand.Expr.Desc=xtPointer) + or (RightOperand.Expr.Desc=xtPointer) + or ((LeftOperand.Expr.Desc=xtContext) + and (LeftOperand.Expr.Context.Node.Desc=ctnPointerType)) + or ((RightOperand.Expr.Desc=xtContext) + and (RightOperand.Expr.Context.Node.Desc=ctnPointerType)) then - Result.Desc:=xtPointer + Result.Expr.Desc:=xtPointer else - Result.Desc:=xtConstOrdInteger; + Result:=IntegerTypesOrderList.Compare(LeftOperand, RightOperand, Self, BinaryOperator.EndPos); end; end else begin // ??? @@ -8795,6 +10014,12 @@ exit; end; + if FoundContext.Tool.NodeIsClassConstructorOrDestructor(FoundContext.Node) then + begin + Result:=ifrProceedSearch; + Exit; + end; + if (not (fdfCollect in Params.Flags)) and CallHasEmptyParamsAndFoundProcFits then begin // call has brackets without params (e.g. writeln() ) @@ -9112,50 +10337,62 @@ function TFindDeclarationTool.GetCurrentAtomType: TVariableAtomType; var Node: TCodeTreeNode; + c: Char; begin //debugln(['TFindDeclarationTool.GetCurrentAtomType ',CurPos.StartPos,' ',CurPos.EndPos,' ',SrcLen,' ',GetAtom]); if (CurPos.StartPos=CurPos.EndPos) then - Result:=vatSpace + exit(vatSpace) else if (CurPos.StartPos<1) or (CurPos.StartPos>SrcLen) then - Result:=vatNone - else if IsIdentStartChar[Src[CurPos.StartPos]] then begin + exit(vatNone); + c:=Src[CurPos.StartPos]; + if IsIdentStartChar[c] then begin if WordIsPredefinedIdentifier.DoItCaseInsensitive(Src,CurPos.StartPos, CurPos.EndPos-CurPos.StartPos) then - Result:=vatPreDefIdentifier + exit(vatPreDefIdentifier) else if UpAtomIs('INHERITED') then - Result:=vatINHERITED + exit(vatINHERITED) else if UpAtomIs('AS') then - Result:=vatAS + exit(vatAS) else if WordIsKeyWord.DoItCaseInsensitive(Src,CurPos.StartPos, CurPos.EndPos-CurPos.StartPos) then - Result:=vatKeyWord + exit(vatKeyWord) else if UpAtomIs('PROPERTY') then begin Node:=FindDeepestNodeAtPos(CurPos.StartPos,false); if (Node<>nil) and (Node.Desc in [ctnProperty,ctnPropertySection]) then - Result:=vatKeyword + exit(vatKeyword) else - Result:=vatIdentifier; + exit(vatIdentifier); end else - Result:=vatIdentifier; - end else if (Src[CurPos.StartPos]='&') and (CurPos.StartPos<SrcLen) - and IsIdentStartChar[Src[CurPos.StartPos+1]] then begin - // &keyword - Result:=vatIdentifier; - end - else if (CurPos.StartPos=CurPos.EndPos-1) then begin - case Src[CurPos.StartPos] of - '.': Result:=vatPoint; - '^': Result:=vatUp; - '(': Result:=vatRoundBracketOpen; - ')': Result:=vatRoundBracketClose; - '[': Result:=vatEdgedBracketOpen; - ']': Result:=vatEdgedBracketClose; - '@': Result:=vatAddrOp; - else Result:=vatNone; + exit(vatIdentifier); + end else if (CurPos.StartPos=CurPos.EndPos-1) then begin + case c of + '.': exit(vatPoint); + '^': exit(vatUp); + '(': exit(vatRoundBracketOpen); + ')': exit(vatRoundBracketClose); + '[': exit(vatEdgedBracketOpen); + ']': exit(vatEdgedBracketClose); + '@': exit(vatAddrOp); + else exit(vatNone); end; end - else - Result:=vatNone; + else begin + case c of + '''','#': exit(vatStringConstant); + '&': + begin + if (CurPos.StartPos+1=CurPos.EndPos) then exit(vatNone); + c:=Src[CurPos.StartPos+1]; + if IsIdentStartChar[c] then begin + // &keyword + exit(vatIdentifier); + end else if IsNumberChar[c] then + exit(vatNumber) // octal + else exit(vatNone); + end; + else exit(vatNone); + end; + end; end; function TFindDeclarationTool.CreateParamExprListFromStatement( @@ -9360,6 +10597,7 @@ case ExprNode.Desc of ctnClass, ctnClassInterface, ctnDispinterface, ctnObject, ctnRecordType, + ctnClassHelper, ctnRecordHelper, ctnTypeHelper, ctnObjCClass, ctnObjCCategory, ctnObjCProtocol, ctnCPPClass: // check, if ExpressionType.Context descends from TargetContext if ContextIsDescendOf(ExpressionType.Context, @@ -9646,10 +10884,7 @@ if (Sender.CurPos.Flag=cafPoint) or (Sender.UpAtomIs('inherited')) then exit; //debugln(['TFindUsedUnitReferences.OnIdentifier Identifier=',GetIdentifier(Identifier),' at begin of term']); // find declaration - if refs.Params=nil then - refs.Params:=TFindDeclarationParams.Create - else - refs.Params.Clear; + refs.Params.Clear; refs.Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, fdfIgnoreCurContextNode]; refs.Params.ContextNode:=Node; @@ -9691,7 +10926,7 @@ {$IFDEF CheckNodeTool}CheckNodeTool(Node);{$ENDIF} Result:=nil; if Node=nil then exit; - if Node.Desc in [ctnProcedure] then begin + if Node.Desc in [ctnProcedure,ctnProcedureType] then begin ProcNode:=Node; //DebugLn(' FindNthParameterNode ProcNode="',copy(Params.NewCodeTool.Src,ProcNode.StartPos,ProcNode.EndPos-ProcNode.StartPos),'"'); FunctionNode:=nil; @@ -9730,12 +10965,17 @@ end; procedure TFindDeclarationTool.DoDeleteNodes(StartNode: TCodeTreeNode); +var + HelperKind: TFDHelpersListKind; begin - ClearNodeCaches(true); + ClearNodeCaches; if FInterfaceIdentifierCache<>nil then begin FInterfaceIdentifierCache.Clear; FInterfaceIdentifierCache.Complete:=false; end; + for HelperKind in TFDHelpersListKind do + if FInterfaceHelperCache[HelperKind]<>nil then + FInterfaceHelperCache[HelperKind].Clear; inherited DoDeleteNodes(StartNode); end; @@ -9795,18 +11035,19 @@ {$ENDIF} FCheckingNodeCacheDependencies:=false; if FreeCheckedTools then FreeAndNil(CheckedTools); - if Result then ClearNodeCaches(true); + if Result then ClearNodeCaches; end; end; destructor TFindDeclarationTool.Destroy; +var + HelperKind: TFDHelpersListKind; begin - FInterfaceIdentifierCache.Free; - FInterfaceIdentifierCache:=nil; - FDependsOnCodeTools.Free; - FDependsOnCodeTools:=nil; - FDependentCodeTools.Free; - FDependentCodeTools:=nil; + FreeAndNil(FInterfaceIdentifierCache); + for HelperKind in TFDHelpersListKind do + FreeAndNil(FInterfaceHelperCache[HelperKind]); + FreeAndNil(FDependsOnCodeTools); + FreeAndNil(FDependentCodeTools); if FDirectoryCache<>nil then begin FDirectoryCache.Release; FDirectoryCache:=nil; @@ -9814,7 +11055,7 @@ inherited Destroy; end; -procedure TFindDeclarationTool.ClearNodeCaches(Force: boolean); +procedure TFindDeclarationTool.ClearNodeCaches; var NodeCache: TCodeTreeNodeCache; BaseTypeCache: TBaseTypeCache; @@ -9866,7 +11107,7 @@ ANode:=FDependentCodeTools.FindLowest; while ANode<>nil do begin DependentTool:=TFindDeclarationTool(ANode.Data); - DependentTool.ClearNodeCaches(true); + DependentTool.ClearNodeCaches; ANode:=FDependentCodeTools.FindSuccessor(ANode); end; FDependentCodeTools.Clear; @@ -9956,11 +11197,16 @@ NodeCache: TCodeTreeNodeCache; TypeCache: TBaseTypeCache; m: PtrUInt; + HelperKind: TFDHelpersListKind; begin inherited CalcMemSize(Stats); if FInterfaceIdentifierCache<>nil then Stats.Add('TFindDeclarationTool.FInterfaceIdentifierCache', FInterfaceIdentifierCache.CalcMemSize); + for HelperKind in TFDHelpersListKind do + if FInterfaceHelperCache[HelperKind]<>nil then + Stats.Add('TFindDeclarationTool.FInterfaceHelperCache[]', + FInterfaceHelperCache[HelperKind].CalcMemSize); if FFirstNodeCache<>nil then begin m:=0; NodeCache:=FFirstNodeCache; @@ -10252,6 +11498,7 @@ {$IFDEF CheckNodeTool}CheckNodeTool(Params.ContextNode);{$ENDIF} Result:=''; AliasType:=CleanFindContext; + if IsTermEdgedBracket(TermPos,EdgedBracketsStartPos) then begin // check for constant sets: [enum] MoveCursorToCleanPos(EdgedBracketsStartPos); @@ -10289,7 +11536,7 @@ // pointer type end else begin ExprType:=CleanExpressionType; - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, fdfTopLvlResolving,fdfFunctionResult]; ExprType:=FindExpressionResultType(Params,TermPos.StartPos,TermPos.EndPos, @AliasType); @@ -10300,7 +11547,7 @@ ExprType.Desc:=xtContext; ExprType.Context:=AliasType; end; - Result:=FindExprTypeAsString(ExprType,TermPos.StartPos,Params); + Result:=FindExprTypeAsString(ExprType,TermPos.StartPos); end; function TFindDeclarationTool.FindForInTypeAsString(TermPos: TAtomPosition; @@ -10326,7 +11573,7 @@ ExprType:=CleanExpressionType; TermExprType:=CleanExpressionType; Params.ContextNode:=CursorNode; - Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors, + Params.Flags:=[fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers, fdfTopLvlResolving,fdfFunctionResult]; TermExprType:=FindExpressionResultType(Params,TermPos.StartPos,TermPos.EndPos); @@ -10342,7 +11589,7 @@ DebugLn(['TFindDeclarationTool.FindForInTypeAsString Operator=',ExprTypeToString(OperatorExprType)]); {$ENDIF} ExprType:=OperatorExprType; - Result:=FindExprTypeAsString(ExprType,TermPos.StartPos,Params); + Result:=FindExprTypeAsString(ExprType,TermPos.StartPos); exit; end; @@ -10351,13 +11598,13 @@ xtContext: begin case TermExprType.Context.Node.Desc of - ctnClass: + ctnClass, ctnRecordType, ctnClassHelper, ctnRecordHelper, ctnTypeHelper: begin if not TermExprType.Context.Tool.FindEnumeratorOfClass( - TermExprType.Context.Node,true,ExprType,@AliasType) + TermExprType.Context.Node,true,ExprType,@AliasType, Params) then RaiseTermHasNoIterator; - Result:=FindExprTypeAsString(ExprType,TermPos.StartPos,Params,@AliasType); + Result:=FindExprTypeAsString(ExprType,TermPos.StartPos,@AliasType); end; ctnEnumerationType: begin @@ -10370,13 +11617,13 @@ TermExprType.Context.Node,ExprType.Context) then begin ExprType.Desc:=xtContext; - Result:=FindExprTypeAsString(ExprType,TermPos.StartPos,Params); + Result:=FindExprTypeAsString(ExprType,TermPos.StartPos); end; ctnRangedArrayType,ctnOpenArrayType: if TermExprType.Context.Tool.FindElementTypeOfArrayType( - TermExprType.Context.Node,ExprType) + TermExprType.Context.Node,ExprType,@AliasType) then begin - Result:=FindExprTypeAsString(ExprType,TermPos.StartPos,Params); + Result:=FindExprTypeAsString(ExprType,TermPos.StartPos,@AliasType); end; else RaiseTermHasNoIterator; @@ -10446,7 +11693,7 @@ function TFindDeclarationTool.FindEnumeratorOfClass(ClassNode: TCodeTreeNode; ExceptionOnNotFound: boolean; out ExprType: TExpressionType; - AliasType: PFindContext): boolean; + AliasType: PFindContext; ParentParams: TFindDeclarationParams): boolean; var Params: TFindDeclarationParams; ProcTool: TFindDeclarationTool; @@ -10460,11 +11707,11 @@ if AliasType<>nil then AliasType^:=CleanFindContext; ExprType:=CleanExpressionType; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(ParentParams); try // search function 'GetEnumerator' Params.ContextNode:=ClassNode; - Params.Flags:=[fdfSearchInAncestors]; + Params.Flags:=[fdfSearchInAncestors,fdfSearchInHelpers]; Params.SetIdentifier(Self,'GetEnumerator',nil); {$IFDEF ShowForInEval} DebugLn(['TFindDeclarationTool.FindEnumeratorOfClass searching GetEnumerator for ',ExtractClassName(ClassNode,false),' ...']); @@ -10501,7 +11748,7 @@ {$IFDEF ShowForInEval} DebugLn(['TFindDeclarationTool.FindEnumeratorOfClass EnumeratorContext=',FindContextToString(EnumeratorContext)]); {$ENDIF} - if (EnumeratorContext.Node=nil) or (EnumeratorContext.Node.Desc<>ctnClass) + if (EnumeratorContext.Node=nil) or not(EnumeratorContext.Node.Desc in [ctnClass,ctnClassInterface,ctnRecordType]) then begin if ExceptionOnNotFound then begin ProcTool.MoveCursorToCleanPos(ProcNode.StartPos); @@ -10704,13 +11951,15 @@ end; function TFindDeclarationTool.FindElementTypeOfArrayType( - ArrayNode: TCodeTreeNode; out ExprType: TExpressionType): boolean; + ArrayNode: TCodeTreeNode; out ExprType: TExpressionType; + AliasType: PFindContext): boolean; var Params: TFindDeclarationParams; p: LongInt; begin Result:=false; ExprType:=CleanExpressionType; + AliasType^:=CleanFindContext; if (ArrayNode=nil) then exit; if (ArrayNode.Desc<>ctnOpenArrayType) and (ArrayNode.Desc<>ctnRangedArrayType) then exit; @@ -10731,7 +11980,7 @@ Params.ContextNode:=ArrayNode; p:=CurPos.StartPos; Params.SetIdentifier(Self,@Src[p],nil); - ExprType:=FindExpressionResultType(Params,p,-1); + ExprType:=FindExpressionResultType(Params,p,-1,AliasType); Result:=true; finally Params.Free; @@ -10862,6 +12111,7 @@ Params: TFindDeclarationParams; PointerNode: TCodeTreeNode; begin + //debugln(['TFindDeclarationTool.IsTermNamedPointer ',CleanPosToStr(TermPos.StartPos,true),' Term={',copy(Src,TermPos.StartPos,TermPos.EndPos-TermPos.StartPos),'}']); Result:=false; MoveCursorToCleanPos(TermPos.StartPos); ReadNextAtom; @@ -10873,9 +12123,9 @@ // try to find a name ReadNextAtom; if CurPos.StartPos>SrcLen then exit; - Params:=TFindDeclarationParams.Create; + Node := FindDeepestNodeAtPos(CurPos.StartPos,true); + Params:=TFindDeclarationParams.Create(Self, Node); try - Params.ContextNode:=FindDeepestNodeAtPos(CurPos.StartPos,true); SubExprType:=FindExpressionResultType(Params,CurPos.StartPos,-1); finally Params.Free; @@ -10972,7 +12222,7 @@ function TFindDeclarationTool.FindExprTypeAsString( const ExprType: TExpressionType; TermCleanPos: integer; - Params: TFindDeclarationParams; AliasType: PFindContext): string; + AliasType: PFindContext): string; procedure RaiseTermNotSimple; begin @@ -11026,6 +12276,7 @@ end; ctnClass, ctnClassInterface, ctnDispinterface, ctnObject, ctnRecordType, + ctnClassHelper, ctnRecordHelper, ctnTypeHelper, ctnObjCClass, ctnObjCCategory, ctnObjCProtocol, ctnCPPClass: if (FindContext.Node.Parent<>nil) and (FindContext.Node.Parent.Desc in [ctnTypeDefinition,ctnGenericType]) @@ -11169,6 +12420,34 @@ end; end; +function TFindDeclarationTool.FindExtendedExprOfHelper(HelperNode: TCodeTreeNode + ): TExpressionType; +// returns the expression type of the extended class/type of a "helper for" +var + ForNode: TCodeTreeNode; + Params: TFindDeclarationParams; +begin + case HelperNode.Desc of + ctnClassHelper,ctnRecordHelper,ctnTypeHelper: + ForNode:=FindHelperForNode(HelperNode); + ctnObjCCategory: + ForNode:=FindInheritanceNode(HelperNode); + else + exit(CleanExpressionType); + end; + if Assigned(ForNode) and Assigned(ForNode.FirstChild) then + begin + Params:=TFindDeclarationParams.Create; + try + Params.Flags:=fdfDefaultForExpressions-[fdfSearchInHelpers,fdfSearchInAncestors]+[fdfTypeType]; + Params.ContextNode:=ForNode; + Result:=FindExpressionTypeOfTerm(ForNode.FirstChild.StartPos,ForNode.FirstChild.EndPos,Params,false); + finally + Params.Free; + end; + end else + Result := CleanExpressionType; +end; { TFindDeclarationParams } @@ -11241,16 +12520,40 @@ end; end; -constructor TFindDeclarationParams.Create; +constructor TFindDeclarationParams.Create(ParentParams: TFindDeclarationParams); begin inherited Create; Clear; + Parent:=ParentParams; +end; + +constructor TFindDeclarationParams.Create(Tool: TFindDeclarationTool; + AContextNode: TCodeTreeNode); +begin + Create(nil);//helper list will be created + StartTool := Tool; + StartNode := AContextNode; + ContextNode := AContextNode; + {$IFDEF CheckNodeTool} + if (StartNode<>nil) and (StartNode.GetRoot<>StartTool.Tree.Root) then begin + debugln(['TFindDeclarationParams.Create Inconsistency']); + CTDumpStack; + raise Exception.Create('TFindDeclarationParams.Create StartNode does not belong to StartTool'); + end; + {$ENDIF} + if (StartTool<>nil) and (StartNode<>nil) then + FNeedHelpers:=true; end; destructor TFindDeclarationParams.Destroy; +var + HelperKind: TFDHelpersListKind; begin Clear; FreeFoundProc(FFoundProcStackFirst,true); + for HelperKind in TFDHelpersListKind do + if FFreeHelpers[HelperKind] then + FreeAndNil(FHelpers[HelperKind]); inherited Destroy; end; @@ -11417,6 +12720,23 @@ DebugLn(''); end; +function TFindDeclarationParams.GetHelpers(HelperKind: TFDHelpersListKind; + CreateIfNotExists: boolean): TFDHelpersList; +begin + if Parent<>nil then + exit(Parent.GetHelpers(HelperKind,CreateIfNotExists)); + if FNeedHelpers then + StartTool.FindHelpersInContext(Self); // beware: this calls GetHelpers + Result:=FHelpers[HelperKind]; + if (Result=nil) and CreateIfNotExists then begin + Result:=TFDHelpersList.Create(HelperKind); + FHelpers[HelperKind]:=Result; + FFreeHelpers[HelperKind]:=true; + //if HelperKind=fdhlkDelphiHelper then + // debugln(['TFindDeclarationParams.GetHelpers Self=',dbgs(Pointer(Self)),' Helper=',dbgs(Pointer(FHelpers[HelperKind]))]); + end; +end; + procedure TFindDeclarationParams.SetIdentifier( NewIdentifierTool: TFindDeclarationTool; NewIdentifier: PChar; NewOnIdentifierFound: TOnIdentifierFound); @@ -11614,5 +12934,11 @@ end; +finalization + FreeAndNil(FBooleanTypesOrderList); + FreeAndNil(FIntegerTypesOrderList); + FreeAndNil(FRealTypesOrderList); + FreeAndNil(FStringTypesOrderList); + end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/findoverloads.pas lazarus-1.6+dfsg/components/codetools/findoverloads.pas --- lazarus-1.4.4+dfsg/components/codetools/findoverloads.pas 2011-02-03 20:38:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/findoverloads.pas 2015-04-06 16:49:44.000000000 +0000 @@ -33,7 +33,7 @@ interface uses - Classes, SysUtils, FileProcs, BasicCodeTools, CodeAtom, CodeTree, CodeGraph, + Classes, SysUtils, FileProcs, BasicCodeTools, CodeTree, CodeGraph, CodeCache, FindDeclarationTool, AVL_Tree, FindDeclarationCache, StdCodeTools; type diff -Nru lazarus-1.4.4+dfsg/components/codetools/h2pastool.pas lazarus-1.6+dfsg/components/codetools/h2pastool.pas --- lazarus-1.4.4+dfsg/components/codetools/h2pastool.pas 2014-11-20 13:14:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/h2pastool.pas 2015-04-07 21:30:17.000000000 +0000 @@ -132,7 +132,7 @@ function GetLevel: integer; function DescAsString(CTool: TCCodeParserTool = nil): string; virtual; abstract; procedure ConsistencyCheck; virtual; - procedure WriteDebugReport(const Prefix: string; WithChilds: boolean; + procedure WriteDebugReport(const Prefix: string; WithChildren: boolean; CTool: TCCodeParserTool = nil); virtual; end; @@ -186,7 +186,7 @@ procedure MoveChildsInFront(ANode: TH2PBaseNode); function ContainsNode(ANode: TH2PBaseNode): boolean; procedure ConsistencyCheck; - procedure WriteDebugReport(WithChilds: boolean); + procedure WriteDebugReport(WithChildren: boolean); end; @@ -2576,6 +2576,7 @@ i: Integer; begin Result:=nil; + if IsGlobal then ; if Check(PascalName,Result) then exit; i:=1; while not Check(PascalName+'_'+IntToStr(i),Result) do @@ -2604,6 +2605,7 @@ SubCNode: TCodeTreeNode; begin Result:=nil; + if CreateIfNotExists then ; if (CNode.Desc=ccnDefinition) and (CNode.FirstChild<>nil) then begin SubCNode:=CNode.FirstChild; if SubCNode.Desc=ccnName then @@ -2790,7 +2792,8 @@ function Add(var PascalName: string; const Addition: string): boolean; begin - if Addition='' then exit(true); + Result:=true; + if Addition='' then exit; if length(PascalName)+length(Addition)>DefaultMaxPascalIdentLen then exit(false); PascalName:=PascalName+Addition; @@ -3270,11 +3273,11 @@ raise Exception.Create('RealNodeCount<>FNodeCount'); end; -procedure TH2PTree.WriteDebugReport(WithChilds: boolean); +procedure TH2PTree.WriteDebugReport(WithChildren: boolean); begin DebugLn('[TH2PTree.WriteDebugReport] Root=',dbgs(Root<>nil)); if Root<>nil then - Root.WriteDebugReport(' ',true); + Root.WriteDebugReport(' ',WithChildren); ConsistencyCheck; end; @@ -3387,12 +3390,12 @@ end; procedure TH2PBaseNode.WriteDebugReport(const Prefix: string; - WithChilds: boolean; CTool: TCCodeParserTool); + WithChildren: boolean; CTool: TCCodeParserTool); var Node: TH2PBaseNode; begin DebugLn([Prefix,DescAsString(CTool)]); - if WithChilds then begin + if WithChildren then begin Node:=FirstChild; while Node<>nil do begin Node.WriteDebugReport(Prefix+' ',true,CTool); diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codyfindoverloads.lfm lazarus-1.6+dfsg/components/codetools/ide/codyfindoverloads.lfm --- lazarus-1.4.4+dfsg/components/codetools/ide/codyfindoverloads.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codyfindoverloads.lfm 2015-10-14 13:25:43.000000000 +0000 @@ -0,0 +1,189 @@ +object CodyFindOverloadsWindow: TCodyFindOverloadsWindow + Left = 728 + Height = 400 + Top = 242 + Width = 556 + Caption = 'CodyFindOverloadsWindow' + ClientHeight = 400 + ClientWidth = 556 + OnClose = FormClose + OnCreate = FormCreate + OnDestroy = FormDestroy + Position = poScreenCenter + LCLVersion = '1.5' + object BtnPanel: TPanel + Left = 0 + Height = 39 + Top = 361 + Width = 556 + Align = alBottom + AutoSize = True + BevelOuter = bvNone + ChildSizing.LeftRightSpacing = 6 + ChildSizing.TopBottomSpacing = 6 + ChildSizing.HorizontalSpacing = 6 + ClientHeight = 39 + ClientWidth = 556 + TabOrder = 0 + object JumpToButton: TButton + Left = 456 + Height = 27 + Top = 6 + Width = 94 + Align = alRight + AutoSize = True + Caption = 'JumpToButton' + OnClick = JumpToButtonClick + TabOrder = 0 + end + object RefreshButton: TButton + Left = 6 + Height = 27 + Top = 6 + Width = 95 + Align = alLeft + AutoSize = True + Caption = 'RefreshButton' + OnClick = RefreshButtonClick + TabOrder = 1 + end + end + object FilterGroupBox: TGroupBox + Left = 0 + Height = 94 + Top = 267 + Width = 556 + Align = alBottom + AutoSize = True + Caption = 'FilterGroupBox' + ChildSizing.LeftRightSpacing = 6 + ClientHeight = 77 + ClientWidth = 552 + TabOrder = 1 + object CompatibleParamsCheckBox: TCheckBox + AnchorSideLeft.Control = FilterGroupBox + AnchorSideTop.Control = FilterGroupBox + Left = 6 + Height = 24 + Top = 0 + Width = 181 + Caption = 'CompatibleParamsCheckBox' + Checked = True + OnChange = CompatibleParamsCheckBoxChange + ParentShowHint = False + ShowHint = True + State = cbChecked + TabOrder = 0 + end + object RelationLabel: TLabel + AnchorSideLeft.Control = FilterGroupBox + AnchorSideTop.Control = RelationComboBox + AnchorSideTop.Side = asrCenter + Left = 6 + Height = 15 + Top = 31 + Width = 75 + Caption = 'RelationLabel' + ParentColor = False + end + object RelationComboBox: TComboBox + AnchorSideLeft.Control = RelationLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = CompatibleParamsCheckBox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = FilterGroupBox + AnchorSideRight.Side = asrBottom + Left = 87 + Height = 29 + Top = 24 + Width = 459 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 6 + BorderSpacing.Right = 6 + ItemHeight = 0 + OnChange = RelationComboBoxChange + Style = csDropDownList + TabOrder = 1 + end + object HideAbstractCheckBox: TCheckBox + AnchorSideLeft.Control = FilterGroupBox + AnchorSideTop.Control = RelationComboBox + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 24 + Top = 53 + Width = 152 + Caption = 'HideAbstractCheckBox' + OnChange = HideAbstractCheckBoxChange + ParentShowHint = False + ShowHint = True + TabOrder = 2 + end + end + object ResultsGroupBox: TGroupBox + Left = 0 + Height = 267 + Top = 0 + Width = 556 + Align = alClient + Caption = 'ResultsGroupBox' + ClientHeight = 250 + ClientWidth = 552 + TabOrder = 2 + object ResultsStringGrid: TStringGrid + Left = 0 + Height = 230 + Top = 0 + Width = 552 + Align = alClient + ColCount = 3 + ColumnClickSorts = True + Columns = < + item + ReadOnly = True + SizePriority = 10 + Title.Caption = 'Name' + Width = 182 + end + item + MaxSize = 1000 + ReadOnly = True + Title.Alignment = taCenter + Title.Caption = 'Compatibility' + Width = 100 + end + item + MaxSize = 1000 + ReadOnly = True + Title.Alignment = taCenter + Title.Caption = 'Distance' + Width = 100 + end> + FixedCols = 0 + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowSelect, goDblClickAutoSize, goSmoothScroll, goRowHighlight] + TabOrder = 0 + OnColRowExchanged = ResultsStringGridColRowExchanged + OnCompareCells = ResultsStringGridCompareCells + OnMouseDown = ResultsStringGridMouseDown + ColWidths = ( + 182 + 100 + 100 + ) + end + object ProgressBar1: TProgressBar + Left = 0 + Height = 20 + Top = 230 + Width = 552 + Align = alBottom + TabOrder = 1 + end + end + object Timer1: TTimer + Interval = 300 + OnTimer = Timer1Timer + left = 112 + top = 144 + end +end diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codyfindoverloads.pas lazarus-1.6+dfsg/components/codetools/ide/codyfindoverloads.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/codyfindoverloads.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codyfindoverloads.pas 2015-11-04 13:49:56.000000000 +0000 @@ -0,0 +1,1099 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Mattias Gaertner + + Abstract: + Shows all overloads of the procedure/method at sourcee editor position. + Sortable columns: + Path: unitnames.classes + (If not filtered:) Compatibility: exact, compatible, incompatible + Distance + Last visited + Filter: + Params must be compatible: Yes, No + (Only for method:) Only descendants, have same ancestor method, all + (Only for method:) Show abstract methods and interfaces + + ToDo: + -show line number to distinguish overloads in same unit + -last visited + -hint: show file name + param list +} +unit CodyFindOverloads; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, AVL_Tree, contnrs, + FileUtil, LazLoggerBase, LazUtilities, + Forms, Controls, Graphics, + Dialogs, ExtCtrls, StdCtrls, Grids, ComCtrls, + CodeToolManager, CodeTree, CodeCache, FindDeclarationTool, + PascalParserTool, BasicCodeTools, CTUnitGraph, FileProcs, StdCodeTools, + CodeGraph, + LazIDEIntf, IDEWindowIntf, ProjectIntf, + CodyUtils, CodyStrConsts; + +type + TCFOUnit = class(TUGUnit) + public + end; + + TCFONode = class(TCodeGraphNode) + public + Tool: TFindDeclarationTool; + + // for ctnProcedure + Compatibility: TTypeCompatibility; + // for ctnClass + TheClassName: string; + // path and distance to target proc + Distance: integer; + ShortestPathNode: TCFONode; + end; + + TCFOEdgeType = ( + cfoetMethodOf, // FromNode (proc) is method of ToNode (class) + cfoetDescendantOf // FromNode (descendant class) is descendant of ToNode (ancestor class) + ); + + TCFOEdge = class(TCodeGraphEdge) + public + Typ: TCFOEdgeType; + end; + + TCFOProc = class + public + XYPos: TCodeXYPosition; + Name: string; + ClassPath: string; + TheUnitName: string; + Caption: string; + Params: string; + Distance: integer; + Compatibility: TTypeCompatibility; + end; + + TCFOFilterRelation = ( + cfofrAny, // no filtering + cfofrOnlyNonMethods, + cfofrOnlyMethods, + cfofrOnlyDescendantsOf + ); + +type + TCFOFlag = ( + cfofParsing, + cfofGatherProcs + ); + TCFOFlags = set of TCFOFlag; + + { TCodyFindOverloadsWindow } + + TCodyFindOverloadsWindow = class(TForm) + BtnPanel: TPanel; + CompatibleParamsCheckBox: TCheckBox; + FilterGroupBox: TGroupBox; + HideAbstractCheckBox: TCheckBox; + JumpToButton: TButton; + ProgressBar1: TProgressBar; + RefreshButton: TButton; + RelationComboBox: TComboBox; + RelationLabel: TLabel; + ResultsGroupBox: TGroupBox; + ResultsStringGrid: TStringGrid; + Timer1: TTimer; + procedure CompatibleParamsCheckBoxChange(Sender: TObject); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure HideAbstractCheckBoxChange(Sender: TObject); + procedure JumpToButtonClick(Sender: TObject); + procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure RefreshButtonClick(Sender: TObject); + procedure RelationComboBoxChange(Sender: TObject); + procedure ResultsStringGridColRowExchanged(Sender: TObject; + IsColumn: Boolean; sIndex, tIndex: Integer); + procedure ResultsStringGridCompareCells(Sender: TObject; ACol, ARow, BCol, + BRow: Integer; var Result: integer); + procedure ResultsStringGridMouseDown(Sender: TObject; {%H-}Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure Timer1Timer(Sender: TObject); + private + FFilterAncestor: string; + FFilterRelation: TCFOFilterRelation; + FHideAbstractMethods: Boolean; + FIdleConnected: boolean; + FFlags: TCFOFlags; + FProcList: TObjectList; + FTargetInProject: boolean; + FTargetName: string; + FTargetPath: string; + FTargetXYPosition: TCodeXYPosition; + FUsesGraph: TUsesGraph; + function GetProcCount: integer; + function GetProcs(Index: integer): TCFOProc; + procedure ReadRelationComboBox; + procedure SetIdleConnected(AValue: boolean); + procedure CreateUsesGraph(out TheUsesGraph: TUsesGraph); + procedure FreeUsesGraph; + procedure StartParsing; + procedure AbortParsing; + procedure AddStartAndTargetUnits; + procedure GatherProcsOfAllUnits; + function AddClassNode(NodeGraph: TCodeGraph; Tool: TFindDeclarationTool; + ClassNode: TCodeTreeNode): TCFONode; + procedure AddAncestors(NodeGraph: TCodeGraph; Tool: TFindDeclarationTool; + ClassNode: TCodeTreeNode); + procedure AddProcNode(NodeGraph: TCodeGraph; Tool: TFindDeclarationTool; + ProcNode: TCodeTreeNode; TargetCleanPos: integer; + var TargetGraphNode: TCFONode); + procedure GatherProcsOfUnit(NodeGraph: TCodeGraph; + CurUnit: TCFOUnit; var TargetGraphNode: TCFONode); + function IsClassNodeDescendantOf(NodeGraph: TCodeGraph; + GraphClassNode: TCFONode; Ancestor: string): boolean; + procedure CalcCompatibilities(NodeGraph: TCodeGraph; TargetGraphNode: TCFONode); + procedure CalcDistances(NodeGraph: TCodeGraph; TargetGraphNode: TCFONode); + procedure CreateProcList(NodeGraph: TCodeGraph; TargetGraphNode: TCFONode; + out NewProclist: TObjectList); + procedure FillGrid; + function GetDefaultCaption: string; + procedure FillFilterControls(ProcTool: TFindDeclarationTool; + ProcNode: TCodeTreeNode); + procedure FilterChanged; + protected + procedure UpdateShowing; override; + public + procedure JumpToIdentifier; + function Init: boolean; + property IdleConnected: boolean read FIdleConnected write SetIdleConnected; + property ProcCount: integer read GetProcCount; + property Procs[Index: integer]: TCFOProc read GetProcs; + property TargetXYPosition: TCodeXYPosition read FTargetXYPosition; + property TargetName: string read FTargetName; + property TargetPath: string read FTargetPath; + property TargetInProject: boolean read FTargetInProject; + property UsesGraph: TUsesGraph read FUsesGraph; + property FilterRelation: TCFOFilterRelation read FFilterRelation; + property FilterAncestor: string read FFilterAncestor; + property HideAbstractMethods: Boolean read FHideAbstractMethods; + end; + +var + CodyFindOverloadsWindow: TCodyFindOverloadsWindow; + +procedure ShowFindOverloadsClicked(Sender: TObject); +procedure ShowFindOverloads(State: TIWGetFormState = iwgfShowOnTop); + +function CompareCFONodeByDistance(Node1, Node2: Pointer): integer; + +implementation + +procedure ShowFindOverloadsClicked(Sender: TObject); +begin + ShowFindOverloads; +end; + +procedure ShowFindOverloads(State: TIWGetFormState); +begin + if CodyFindOverloadsWindow = nil then + IDEWindowCreators.CreateForm(CodyFindOverloadsWindow,TCodyFindOverloadsWindow, + State=iwgfDisabled,LazarusIDE.OwningComponent) + else if State=iwgfDisabled then + CodyFindOverloadsWindow.DisableAlign; + if State>=iwgfShow then + IDEWindowCreators.ShowForm(CodyFindOverloadsWindow,State=iwgfShowOnTop); +end; + +function CompareCFONodeByDistance(Node1, Node2: Pointer): integer; +var + n1: TCFONode absolute Node1; + n2: TCFONode absolute Node2; +begin + if n1.Distance<n2.Distance then + exit(-1) + else if n1.Distance>n2.Distance then + exit(1) + else + Result:=ComparePointers(n1.Node,n2.Node); +end; + +{$R *.lfm} + +{ TCodyFindOverloadsWindow } + +procedure TCodyFindOverloadsWindow.FormCreate(Sender: TObject); +begin + AbortParsing; + FProcList:=TObjectList.Create(true); + + Caption:=GetDefaultCaption; + RefreshButton.Caption:=crsRefresh; + JumpToButton.Caption:=crsJumpTo2; + + FilterGroupBox.Caption:=crsFilter2; + CompatibleParamsCheckBox.Caption:=crsOnlyProceduresWithCompatibleParameters; + CompatibleParamsCheckBox.Hint:= + crsIfUncheckedListAlsoProceduresWithSameNameAndIncomp; + HideAbstractCheckBox.Caption:= + crsHideAbstractMethodsAndMethodsOfClassInterfaces; + RelationLabel.Caption:=crsRelations; + ResultsStringGrid.Visible:=false; +end; + +procedure TCodyFindOverloadsWindow.FormDestroy(Sender: TObject); +begin + FreeAndNil(FProcList); +end; + +procedure TCodyFindOverloadsWindow.HideAbstractCheckBoxChange(Sender: TObject); +begin + fHideAbstractMethods:=HideAbstractCheckBox.Checked; + FilterChanged; +end; + +procedure TCodyFindOverloadsWindow.FormClose(Sender: TObject; + var CloseAction: TCloseAction); +begin + AbortParsing; + FreeUsesGraph; +end; + +procedure TCodyFindOverloadsWindow.CompatibleParamsCheckBoxChange( + Sender: TObject); +begin + FilterChanged; +end; + +procedure TCodyFindOverloadsWindow.JumpToButtonClick(Sender: TObject); +begin + JumpToIdentifier; +end; + +procedure TCodyFindOverloadsWindow.OnIdle(Sender: TObject; var Done: Boolean); +var + Completed: boolean; +begin + if cfofParsing in FFlags then begin + fUsesGraph.Parse(true,Completed,200); + if Completed then begin + FFlags:=FFlags-[cfofParsing]+[cfofGatherProcs]; + end; + end else if cfofGatherProcs in FFlags then begin + GatherProcsOfAllUnits; + end else + IdleConnected:=false; + Done:=not IdleConnected; +end; + +procedure TCodyFindOverloadsWindow.RefreshButtonClick(Sender: TObject); +begin + if cfofParsing in FFlags then exit; + Init; +end; + +procedure TCodyFindOverloadsWindow.RelationComboBoxChange(Sender: TObject); +begin + ReadRelationComboBox; + FilterChanged; +end; + +procedure TCodyFindOverloadsWindow.ResultsStringGridColRowExchanged( + Sender: TObject; IsColumn: Boolean; sIndex, tIndex: Integer); +begin + if (not IsColumn) and (sIndex>0) and (sIndex<=ProcCount) + and (tIndex>0) and (tIndex<=ProcCount) then + FProcList.Exchange(sIndex-1,tIndex-1); +end; + +procedure TCodyFindOverloadsWindow.ResultsStringGridCompareCells( + Sender: TObject; ACol, ARow, BCol, BRow: Integer; var Result: integer); +var + AProc, BProc: TCFOProc; +begin + if (ARow>0) and (ARow<=ProcCount) and (ACol=BCol) + and (BRow>0) and (BRow<=ProcCount) then begin + AProc:=Procs[ARow-1]; + BProc:=Procs[BRow-1]; + case ACol of + 0: Result:=CompareText(AProc.Caption,BProc.Caption); + 1: Result:=ord(AProc.Compatibility)-ord(BProc.Compatibility); + 2: Result:=ord(AProc.Distance)-ord(BProc.Distance); + end; + if ResultsStringGrid.SortOrder=soDescending then + Result:=-Result; + //debugln(['TCodyFindOverloadsWindow.ResultsStringGridCompareCells "',AProc.Caption,'" "',BProc.Caption,'" ',Result]); + end else + debugln(['TCodyFindOverloadsWindow.ResultsStringGridCompareCells invalid ACol=',ACol,' ARow=',ARow,' BCol=',BCol,' BRow=',BRow]); +end; + +procedure TCodyFindOverloadsWindow.ResultsStringGridMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var + Col, Row: Longint; +begin + Col:=0; + Row:=0; + ResultsStringGrid.MouseToCell(X,Y,Col,Row); + if (Row>0) and (ssDouble in Shift) then + JumpToIdentifier; +end; + +procedure TCodyFindOverloadsWindow.Timer1Timer(Sender: TObject); +var + Cnt: Integer; +begin + if (FUsesGraph=nil) then exit; + Cnt:=0; + if FUsesGraph.FilesTree<>nil then + Cnt:=FUsesGraph.FilesTree.Count; + ResultsGroupBox.Caption:=Format(crsScanningSUnits, [IntToStr(Cnt)]); +end; + +procedure TCodyFindOverloadsWindow.SetIdleConnected(AValue: boolean); +begin + if FIdleConnected=AValue then Exit; + FIdleConnected:=AValue; + if Application=nil then exit; + if IdleConnected then + Application.AddOnIdleHandler(@OnIdle) + else + Application.RemoveOnIdleHandler(@OnIdle); +end; + +function TCodyFindOverloadsWindow.GetProcCount: integer; +begin + Result:=FProcList.Count; +end; + +function TCodyFindOverloadsWindow.GetProcs(Index: integer): TCFOProc; +begin + Result:=TCFOProc(FProcList[Index]); +end; + +procedure TCodyFindOverloadsWindow.ReadRelationComboBox; +var + RelationText: TCaption; +begin + RelationText:=RelationComboBox.Text; + if RelationText=crsOnlyMethods then + FFilterRelation:=cfofrOnlyMethods + else if RelationText=crsOnlyNonMethods then + FFilterRelation:=cfofrOnlyNonMethods + else if GetPatternValue1(crsOnlyDescendantsOf, '%s', RelationText, + FFilterAncestor) + then begin + FFilterRelation:=cfofrOnlyDescendantsOf; + end else + FFilterRelation:=cfofrAny; +end; + +procedure TCodyFindOverloadsWindow.CreateUsesGraph(out TheUsesGraph: TUsesGraph + ); +begin + TheUsesGraph:=CodeToolBoss.CreateUsesGraph; + if not TCFOUnit.InheritsFrom(TheUsesGraph.UnitClass) then + RaiseCatchableException(''); + TheUsesGraph.UnitClass:=TCFOUnit; +end; + +procedure TCodyFindOverloadsWindow.FreeUsesGraph; +begin + FreeAndNil(FUsesGraph); +end; + +procedure TCodyFindOverloadsWindow.StartParsing; +begin + if (FUsesGraph<>nil) or (cfofParsing in FFlags) then + RaiseCatchableException(''); + Include(FFlags,cfofParsing); + + ProgressBar1.Visible:=true; + ProgressBar1.Style:=pbstMarquee; + ResultsGroupBox.Caption:=crsScanning; + Timer1.Enabled:=true; + RefreshButton.Enabled:=false; + + CreateUsesGraph(FUsesGraph); + + LazarusIDE.BeginCodeTools; + AddStartAndTargetUnits; + + IdleConnected:=true; +end; + +procedure TCodyFindOverloadsWindow.AbortParsing; +begin + FFlags:=[]; + IdleConnected:=false; + ProgressBar1.Visible:=false; + if not (csDestroying in ComponentState) then + RefreshButton.Enabled:=true; + FreeUsesGraph; +end; + +procedure TCodyFindOverloadsWindow.AddStartAndTargetUnits; +var + aProject: TLazProject; +begin + FUsesGraph.TargetAll:=true; + // project lpr + aProject:=LazarusIDE.ActiveProject; + if (aProject<>nil) and (aProject.MainFile<>nil) then + FUsesGraph.AddStartUnit(aProject.MainFile.Filename); +end; + +procedure TCodyFindOverloadsWindow.GatherProcsOfAllUnits; +var + FileNode: TAVLTreeNode; + CurUnit: TCFOUnit; + NodeGraph: TCodeGraph; + TargetGraphNode: TCFONode; + NewProcList: TObjectList; + s: String; +begin + Exclude(FFlags,cfofGatherProcs); + Timer1.Enabled:=false; + // hide progress bar and update stats + ProgressBar1.Visible:=false; + RefreshButton.Enabled:=true; + ResultsGroupBox.Caption:=Format(crsUnitsS, [IntToStr(FUsesGraph.FilesTree. + Count)]); + + if FUsesGraph=nil then + exit; + debugln(['TCodyFindOverloadsWindow.GatherProcsOfAllUnits START Proc="',TargetName,'"']); + + // get filter + FHideAbstractMethods:=HideAbstractCheckBox.Checked; + ReadRelationComboBox; + + NodeGraph:=TCodeGraph.Create(TCFONode,TCFOEdge); + try + TargetGraphNode:=nil; + FileNode:=FUsesGraph.FilesTree.FindLowest; + while FileNode<>nil do begin + CurUnit:=TCFOUnit(FileNode.Data); + GatherProcsOfUnit(NodeGraph,CurUnit,TargetGraphNode); + FileNode:=FUsesGraph.FilesTree.FindSuccessor(FileNode); + end; + + FTargetInProject:=TargetGraphNode<>nil; + if TargetInProject then begin + CalcCompatibilities(NodeGraph,TargetGraphNode); + CalcDistances(NodeGraph,TargetGraphNode); + end; + + CreateProcList(NodeGraph,TargetGraphNode,NewProcList); + FreeAndNil(FProcList); + FProcList:=NewProcList; + if ProcCount=0 then begin + s:=', '; + if TargetInProject then begin + s+=crsNoOverloadsFoundInProjectUnits; + end else begin + s+=crsErrorCursorIsNotInAProjectUnit; + end; + ResultsGroupBox.Caption:=ResultsGroupBox.Caption+s; + end; + + FillGrid; + finally + NodeGraph.Free; + end; + debugln(['TCodyFindOverloadsWindow.GatherProcsOfAllUnits END']); +end; + +function TCodyFindOverloadsWindow.AddClassNode(NodeGraph: TCodeGraph; + Tool: TFindDeclarationTool; ClassNode: TCodeTreeNode): TCFONode; +begin + if ClassNode=nil then + RaiseCatchableException(''); + Result:=TCFONode(NodeGraph.GetGraphNode(ClassNode,false)); + if Result<>nil then exit; + //debugln(['AddClassNode ',Tool.ExtractClassName(ClassNode,false)]); + Result:=TCFONode(NodeGraph.AddGraphNode(ClassNode)); + Result.Tool:=Tool; + Result.TheClassName:=Tool.ExtractClassName(ClassNode,false); + AddAncestors(NodeGraph,Tool,ClassNode); +end; + +procedure TCodyFindOverloadsWindow.AddAncestors(NodeGraph: TCodeGraph; + Tool: TFindDeclarationTool; ClassNode: TCodeTreeNode); +var + ListOfPFindContext: TFPList; + Params: TFindDeclarationParams; + Ancestor: PFindContext; + i: Integer; + Edge: TCFOEdge; +begin + //debugln(['AddAncestors ',Tool.ExtractClassName(ClassNode,false)]); + ListOfPFindContext:=nil; + Params:=TFindDeclarationParams.Create(nil); + try + Tool.FindAncestorsOfClass(ClassNode,ListOfPFindContext,Params,true,false); + if ListOfPFindContext<>nil then begin + for i:=0 to ListOfPFindContext.Count-1 do begin + Ancestor:=PFindContext(ListOfPFindContext[i]); + AddClassNode(NodeGraph,Ancestor^.Tool,Ancestor^.Node); + // create edge "descendant of" + Edge:=TCFOEdge(NodeGraph.AddEdge(ClassNode,Ancestor^.Node)); + Edge.Typ:=cfoetDescendantOf; + end; + end; + finally + Params.Free; + FreeListOfPFindContext(ListOfPFindContext); + end; +end; + +procedure TCodyFindOverloadsWindow.AddProcNode(NodeGraph: TCodeGraph; + Tool: TFindDeclarationTool; ProcNode: TCodeTreeNode; + TargetCleanPos: integer; var TargetGraphNode: TCFONode); +var + CurProcName: String; + GraphProcNode, GraphClassNode: TCFONode; + ClassNode: TCodeTreeNode; + Edge: TCFOEdge; +begin + // check name + CurProcName:=Tool.ExtractProcName(ProcNode,[phpWithoutClassName]); + if CompareIdentifiers(PChar(CurProcName),PChar(FTargetName))<>0 then exit; + + //debugln(['TCodyFindOverloadsWindow.GatherProcsOfUnit ',Tool.CleanPosToStr(ProcNode.StartPos,true)]); + + // check if method + ClassNode:=ProcNode.Parent; + while ClassNode<>nil do begin + if ClassNode.Desc in AllClasses then break; + ClassNode:=ClassNode.Parent; + end; + if ClassNode<>nil then begin + // a method + if HideAbstractMethods then begin + if ClassNode.Desc in AllClassInterfaces then exit; + if Tool.ProcNodeHasSpecifier(ProcNode,psABSTRACT) then exit; + end; + if FilterRelation=cfofrOnlyNonMethods then + exit; + end else begin + // a non method + if FilterRelation in [cfofrOnlyMethods,cfofrOnlyDescendantsOf] then + exit; + end; + + // add node + GraphProcNode:=TCFONode(NodeGraph.AddGraphNode(ProcNode)); + GraphProcNode.Tool:=Tool; + GraphProcNode.Compatibility:=tcCompatible; // default, will be set later + + // check if this is the target proc + if (TargetGraphNode=nil) + and (ProcNode.StartPos<=TargetCleanPos) + and (TargetCleanPos<ProcNode.EndPos) + and (TargetPath=Tool.ExtractProcName(ProcNode,[phpAddClassName])) then begin + TargetGraphNode:=GraphProcNode; + TargetGraphNode.Compatibility:=tcExact; + end; + + // add edges + if ClassNode<>nil then begin + // create nodes for class and ancestors + GraphClassNode:=AddClassNode(NodeGraph,Tool,ClassNode); + if (FilterRelation=cfofrOnlyDescendantsOf) + and (not IsClassNodeDescendantOf(NodeGraph,GraphClassNode,FilterAncestor)) + then begin + NodeGraph.DeleteGraphNode(ProcNode); + exit; + end; + + // create edge "is method of" + Edge:=TCFOEdge(NodeGraph.AddEdge(ProcNode,ClassNode)); + Edge.Typ:=cfoetMethodOf; + end; +end; + +procedure TCodyFindOverloadsWindow.GatherProcsOfUnit(NodeGraph: TCodeGraph; + CurUnit: TCFOUnit; var TargetGraphNode: TCFONode); +var + Tool: TStandardCodeTool; + ProcNode: TCodeTreeNode; + TargetCleanPos: integer; +begin + if ugufLoadError in CurUnit.Flags then exit; + if not (ugufReached in CurUnit.Flags) then exit; // this unit was not reached + if ugufIsIncludeFile in CurUnit.Flags then exit; + Tool:=CurUnit.Tool; + if (TargetGraphNode<>nil) + or (Tool.CaretToCleanPos(TargetXYPosition,TargetCleanPos)<>0) then + TargetCleanPos:=0; + + ProcNode:=Tool.Tree.Root; + while ProcNode<>nil do begin + if ProcNode.Desc in [ctnImplementation,ctnBeginBlock] then break; + if ProcNode.Desc=ctnProcedure then + AddProcNode(NodeGraph,Tool,ProcNode,TargetCleanPos,TargetGraphNode); + ProcNode:=ProcNode.Next; + end; +end; + +function TCodyFindOverloadsWindow.IsClassNodeDescendantOf( + NodeGraph: TCodeGraph; GraphClassNode: TCFONode; Ancestor: string): boolean; +var + AVLNode: TAVLTreeNode; + Edge: TCFOEdge; +begin + if CompareText(Ancestor,GraphClassNode.TheClassName)=0 then exit(true); + if GraphClassNode.OutTree=nil then exit(false); + AVLNode:=GraphClassNode.OutTree.FindLowest; + while AVLNode<>nil do begin + Edge:=TCFOEdge(AVLNode.Data); + if Edge.Typ=cfoetDescendantOf then begin + if IsClassNodeDescendantOf(NodeGraph,TCFONode(Edge.ToNode),Ancestor) then + exit(true); + end; + AVLNode:=GraphClassNode.OutTree.FindSuccessor(AVLNode); + end; + Result:=false; +end; + +procedure TCodyFindOverloadsWindow.CalcCompatibilities(NodeGraph: TCodeGraph; + TargetGraphNode: TCFONode); +var + AVLNode: TAVLTreeNode; + GraphNode: TCFONode; + Params: TFindDeclarationParams; + ExprList: TExprTypeList; + ParamNode: TCodeTreeNode; +begin + ExprList:=nil; + Params:=TFindDeclarationParams.Create(TargetGraphNode.Tool,TargetGraphNode.Node); + try + ExprList:=TargetGraphNode.Tool.CreateParamExprListFromProcNode( + TargetGraphNode.Node,Params); + + AVLNode:=NodeGraph.Nodes.FindLowest; + while AVLNode<>nil do begin + GraphNode:=TCFONode(AVLNode.Data); + if GraphNode.Node.Desc=ctnProcedure then begin + if GraphNode=TargetGraphNode then + GraphNode.Compatibility:=tcExact + else begin + ParamNode:=GraphNode.Tool.GetFirstParameterNode(GraphNode.Node); + GraphNode.Compatibility:= + GraphNode.Tool.IsParamNodeListCompatibleToExprList(ExprList, + ParamNode,Params); + //debugln(['TCodyFindOverloadsWindow.CalcCompatibilities ',GraphNode.Tool.ExtractProcName(GraphNode.Node,[phpAddClassName]),' Compatible=',TypeCompatibilityNames[GraphNode.Compatibility]]); + end; + end; + AVLNode:=NodeGraph.Nodes.FindSuccessor(AVLNode); + end; + finally + ExprList.Free; + Params.Free; + end; +end; + +procedure TCodyFindOverloadsWindow.CalcDistances(NodeGraph: TCodeGraph; + TargetGraphNode: TCFONode); +var + Unvisited: TAVLTree; + + procedure UpdateDistancesAlongEdges(GraphNode: TCFONode; Edges: TAVLTree); + var + AVLNode: TAVLTreeNode; + Edge: TCFOEdge; + NewDistance: Integer; + OtherNode: TCFONode; + WasUnvisited: Boolean; + begin + if Edges=nil then exit; + AVLNode:=Edges.FindLowest; + while AVLNode<>nil do begin + Edge:=TCFOEdge(AVLNode.Data); + NewDistance:=GraphNode.Distance; + case Edge.Typ of + cfoetMethodOf: ; // methods within one class are close + cfoetDescendantOf: + if GraphNode=Edge.FromNode then + NewDistance+=100 // going to the ancestors + else + NewDistance+=1; // going to the descendants + end; + if GraphNode=Edge.FromNode then begin + OtherNode:=TCFONode(Edge.ToNode); + end else begin + OtherNode:=TCFONode(Edge.FromNode); + end; + if NewDistance<OtherNode.Distance then begin + WasUnvisited:=Unvisited.Find(OtherNode)<>nil; + if not WasUnvisited then + RaiseCatchableException(''); // visited nodes must have minimal distance + Unvisited.Remove(OtherNode); + OtherNode.Distance:=NewDistance; + OtherNode.ShortestPathNode:=GraphNode; + Unvisited.Add(OtherNode); + end; + AVLNode:=Edges.FindSuccessor(AVLNode); + end; + end; + +var + AVLNode: TAVLTreeNode; + GraphNode: TCFONode; +begin + //debugln(['TCodyFindOverloadsWindow.CalcDistances ']); + + Unvisited:=TAVLTree.Create(@CompareCFONodeByDistance); + try + // Dijkstra's shotest path algorithm + + // build Unvisited queue, set Distance of TargetGraphNode to 0 + // infinite Distance all other + AVLNode:=NodeGraph.Nodes.FindLowest; + while AVLNode<>nil do begin + GraphNode:=TCFONode(AVLNode.Data); + if GraphNode=TargetGraphNode then + GraphNode.Distance:=0 + else + GraphNode.Distance:=100000; + GraphNode.ShortestPathNode:=nil; + Unvisited.Add(GraphNode); + AVLNode:=NodeGraph.Nodes.FindSuccessor(AVLNode); + end; + + // for each node with minimum distance ... + while Unvisited.Count>0 do begin + // get unvisited node with minimum distance + AVLNode:=Unvisited.FindLowest; + GraphNode:=TCFONode(AVLNode.Data); + //debugln(['TCodyFindOverloadsWindow.CalcDistances GraphNode=',GraphNode.Tool.ExtractProcName(GraphNode.Node,[phpAddClassName]),' Distance=',GraphNode.Distance]); + Unvisited.Delete(AVLNode); + UpdateDistancesAlongEdges(GraphNode,GraphNode.InTree); + UpdateDistancesAlongEdges(GraphNode,GraphNode.OutTree); + end; + finally + Unvisited.Free; + end; +end; + +procedure TCodyFindOverloadsWindow.CreateProcList(NodeGraph: TCodeGraph; + TargetGraphNode: TCFONode; out NewProclist: TObjectList); +var + AVLNode: TAVLTreeNode; + aProc: TCFOProc; + GraphNode: TCFONode; + Tool: TFindDeclarationTool; + Node: TCodeTreeNode; + OnlyCompatible: Boolean; +begin + NewProcList:=TObjectList.Create(true); + OnlyCompatible:=CompatibleParamsCheckBox.Checked; + + AVLNode:=NodeGraph.Nodes.FindLowest; + while AVLNode<>nil do begin + GraphNode:=TCFONode(AVLNode.Data); + AVLNode:=NodeGraph.Nodes.FindSuccessor(AVLNode); + if GraphNode=TargetGraphNode then continue; + if GraphNode.Node.Desc<>ctnProcedure then continue; + if OnlyCompatible and (GraphNode.Compatibility=tcIncompatible) then continue; + + aProc:=TCFOProc.Create; + + Tool:=GraphNode.Tool; + Node:=GraphNode.Node; + Tool.CleanPosToCaret(Node.FirstChild.StartPos,aProc.XYPos); + aProc.Name:=Tool.ExtractProcName(Node,[phpWithoutClassName]); + aProc.ClassPath:=Tool.ExtractClassPath(Node); + aProc.TheUnitName:=Tool.GetSourceName(false); + aProc.Compatibility:=GraphNode.Compatibility; + aProc.Distance:=GraphNode.Distance; + NewProcList.Add(aProc); + end; +end; + +procedure TCodyFindOverloadsWindow.FillGrid; +var + Grid: TStringGrid; + Row: Integer; + s, OldSelectedProcName: String; + aProc: TCFOProc; +begin + Grid:=ResultsStringGrid; + if Grid.RowCount>0 then begin + Grid.BeginUpdate; + OldSelectedProcName:=''; + if Grid.Row>0 then + OldSelectedProcName:=Grid.Cells[0,Grid.Row]; + Grid.Columns[0].Title.Caption:=crsName; + Grid.Columns[1].Title.Caption:=crsCompatibility; + Grid.Columns[2].Title.Caption:=crsDistance; + + Grid.RowCount:=ProcCount+1; + for Row:=1 to ProcCount do begin + aProc:=Procs[Row-1]; + + // path + s:=aProc.TheUnitName+': '; + if aProc.ClassPath<>'' then + s+=aProc.ClassPath+'.'; + s+=aProc.Name; + aProc.Caption:=s; + Grid.Cells[0,Row]:=s; + if s=OldSelectedProcName then + Grid.Row:=Row; + + case aProc.Compatibility of + tcExact: s:=crsExact; + tcCompatible: s:=crsCompatible; + tcIncompatible: s:=crsIncompatible; + end; + Grid.Cells[1,Row]:=s; + + Grid.Cells[2,Row]:=IntToStr(aProc.Distance); + end; + + Grid.SortColRow(true,0); + Grid.Visible:=true; + Grid.EndUpdate(true); + + Grid.HandleNeeded; + Grid.AutoAdjustColumns; + end else begin + Grid.Visible:=false; + end; + + JumpToButton.Enabled:=Grid.Row>0; +end; + +function TCodyFindOverloadsWindow.GetDefaultCaption: string; +begin + Result:=crsCodyFindOverloads; +end; + +procedure TCodyFindOverloadsWindow.FillFilterControls( + ProcTool: TFindDeclarationTool; ProcNode: TCodeTreeNode); +var + sl: TStringList; + ClassNode: TCodeTreeNode; + ListOfPFindContext: TFPList; + i: Integer; + aContext: PFindContext; +begin + // RelationComboBox + sl:=TStringList.Create; + try + ClassNode:=ProcNode; + while (ClassNode<>nil) and (not (ClassNode.Desc in AllClasses)) do + ClassNode:=ClassNode.Parent; + if ClassNode<>nil then begin + // method + ListOfPFindContext:=nil; + try + try + ProcTool.FindClassAndAncestors(ClassNode,ListOfPFindContext,false); + except + end; + if ListOfPFindContext<>nil then begin + for i:=0 to ListOfPFindContext.Count-1 do begin + aContext:=PFindContext(ListOfPFindContext[i]); + sl.Add(Format(crsOnlyDescendantsOf, [aContext^.Tool.ExtractClassName + (aContext^.Node, false)])); + end; + end else begin + sl.Add(Format(crsOnlyDescendantsOf, [ProcTool.ExtractClassName( + ClassNode, false)])); + end; + finally + FreeListOfPFindContext(ListOfPFindContext); + end; + sl.Add(crsOnlyMethods); + end else begin + // procedure, non method + sl.Add(crsOnlyNonMethods); + end; + sl.Add(crsAny); + RelationComboBox.Items:=sl; + if sl.IndexOf(RelationComboBox.Text)<0 then + RelationComboBox.Text:=crsAny; + finally + sl.Free; + end; +end; + +procedure TCodyFindOverloadsWindow.FilterChanged; +begin + if csDestroying in ComponentState then exit; + AbortParsing; + StartParsing; +end; + +procedure TCodyFindOverloadsWindow.UpdateShowing; +begin + inherited UpdateShowing; + if IsVisible and (FUsesGraph=nil) then begin + Init; + end; +end; + +procedure TCodyFindOverloadsWindow.JumpToIdentifier; +var + i: Integer; + aProc: TCFOProc; +begin + i:=ResultsStringGrid.Row-1; + if (i<0) or (i>=ProcCount) then exit; + aProc:=Procs[i]; + LazarusIDE.DoOpenFileAndJumpToPos(aProc.XYPos.Code.Filename, + Point(aProc.XYPos.X,aProc.XYPos.Y),-1,-1,-1,[]); +end; + +function TCodyFindOverloadsWindow.Init: boolean; +var + CurTool: TCodeTool; + CurNode: TCodeTreeNode; + CurCodePos: TCodeXYPosition; + CurCleanPos: integer; + + procedure FindProcDeclaration(ProcTool: TFindDeclarationTool; + var ProcNode: TCodeTreeNode); + // find the method declaration of a method body + // find the forward or interface declaration of a proc body + var + Node: TCodeTreeNode; + begin + if ProcNode=nil then exit; + if ProcNode.Desc=ctnProcedureHead then + ProcNode:=ProcNode.Parent; + if ProcNode.Desc<>ctnProcedure then exit; + if ProcNode.GetNodeOfType(ctnInterface)<>nil then exit; + if ProcTool.NodeIsForwardProc(ProcNode) then exit; + Node:=ProcTool.FindCorrespondingProcNode(ProcNode,[phpWithoutClassName]); + if Node=nil then exit; + ProcNode:=Node; + end; + + function IsCursorAtProcCall(StatementNode: TCodeTreeNode; + out ProcTool: TFindDeclarationTool; out ProcNode: TCodeTreeNode): boolean; + var + CurIdentStart, CurIdentEnd, NewTopLine: integer; + NewTool: TFindDeclarationTool; + NewNode: TCodeTreeNode; + NewPos: TCodeXYPosition; + begin + Result:=true; + ProcTool:=nil; + ProcNode:=nil; + if StatementNode=nil then exit; + // cursor in statement => check if on a proc call. + if (CurCodePos.Code=nil) then exit; + GetIdentStartEndAtPosition(CurTool.Src,CurCleanPos,CurIdentStart,CurIdentEnd); + if CurIdentStart>=CurIdentEnd then exit; + DebugLn(['TCodyFindOverloadsDialog.Init.IsCursorAtProcCall checking identifier "',copy(CurTool.Src,CurIdentStart,CurIdentEnd-CurIdentStart),'"']); + if not CurTool.FindDeclaration(CurCodePos,DefaultFindSmartFlags, + NewTool,NewNode,NewPos,NewTopLine) + then begin + ResultsGroupBox.Caption:=crsParseError; + LazarusIDE.DoJumpToCodeToolBossError; + exit(false); + end; + if NewNode.Desc in [ctnProcedure,ctnProcedureHead] then begin + ProcTool:=NewTool; + ProcNode:=NewNode; + FindProcDeclaration(ProcTool,ProcNode); + debugln(['TCodyFindOverloadsDialog.Init.IsCursorAtProcCall TargetProc ',ProcTool.CleanPosToStr(ProcNode.StartPos,true),' Class=',ProcTool.ExtractProcName(ProcNode,[phpAddClassName])]); + end; + end; + +var + ProcNode, Node, BeginNode, TargetProcNode: TCodeTreeNode; + ErrorHandled: boolean; + CurInitError: TCUParseError; + TargetTool: TFindDeclarationTool; +begin + Result:=false; + AbortParsing; + if csDestroying in ComponentState then exit; + + Caption:=GetDefaultCaption; + JumpToButton.Enabled:=false; + FTargetName:=''; + FTargetPath:=''; + FTargetXYPosition:=CleanCodeXYPosition; + FreeUsesGraph; + + // parse source + CurInitError:=ParseTilCursor(CurTool, CurCleanPos, CurNode, ErrorHandled, true, @CurCodePos); + if CurInitError<>cupeSuccess then begin + ResultsGroupBox.Caption:=crsParseError; + exit; + end; + + // find target proc node + ProcNode:=nil; + BeginNode:=nil; + Node:=CurNode; + TargetTool:=nil; + TargetProcNode:=nil; + while Node<>nil do begin + if Node.Desc=ctnProcedure then begin + ProcNode:=Node; + break; + end else if (BeginNode=nil) and (Node.Desc=ctnBeginBlock) then begin + BeginNode:=Node; + if not IsCursorAtProcCall(BeginNode,TargetTool,TargetProcNode) then + exit; + end; + Node:=Node.Parent; + end; + + FindProcDeclaration(CurTool,ProcNode); + if ProcNode<>nil then begin + // ToDo: add to visited procs + debugln(['TCodyFindOverloadsDialog.Init ContextProc ',CurTool.CleanPosToStr(ProcNode.StartPos,true),' Class=',CurTool.ExtractProcName(ProcNode,[phpAddClassName])]); + end; + + if TargetProcNode=nil then begin + TargetTool:=CurTool; + TargetProcNode:=ProcNode; + end; + if TargetProcNode=nil then begin + ResultsGroupBox.Caption:= + crsErrorNeedSourceEditorAtProcedureCallOrDeclaration; + exit; + end; + + FTargetName:=TargetTool.ExtractProcName(TargetProcNode,[phpWithoutClassName]); + FTargetPath:=TargetTool.ExtractProcName(TargetProcNode,[phpAddClassName]); + TargetTool.CleanPosToCaret(TargetProcNode.StartPos,FTargetXYPosition); + Caption:=GetDefaultCaption+' - '+FTargetPath; + + FillFilterControls(TargetTool,TargetProcNode); + + StartParsing; + + Result:=true; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codyidentifiersdlg.lfm lazarus-1.6+dfsg/components/codetools/ide/codyidentifiersdlg.lfm --- lazarus-1.4.4+dfsg/components/codetools/ide/codyidentifiersdlg.lfm 2012-12-23 16:12:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codyidentifiersdlg.lfm 2015-05-29 09:21:01.000000000 +0000 @@ -1,22 +1,22 @@ object CodyIdentifiersDlg: TCodyIdentifiersDlg Left = 250 - Height = 324 + Height = 404 Top = 250 - Width = 552 + Width = 555 ActiveControl = FilterEdit Caption = 'CodyIdentifiersDlg' - ClientHeight = 324 - ClientWidth = 552 + ClientHeight = 404 + ClientWidth = 555 OnClose = FormClose OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object ButtonPanel1: TButtonPanel Left = 6 - Height = 36 - Top = 282 - Width = 540 + Height = 34 + Top = 364 + Width = 543 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' @@ -25,14 +25,14 @@ CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 0 + TabOrder = 4 ShowButtons = [pbOK, pbCancel, pbHelp] end object InfoLabel: TLabel Left = 8 Height = 15 Top = 8 - Width = 51 + Width = 49 Caption = 'InfoLabel' ParentColor = False WordWrap = True @@ -43,17 +43,15 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = StartsSpeedButton Left = 6 - Height = 25 - Top = 63 - Width = 426 + Height = 23 + Top = 58 + Width = 433 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Top = 10 OnChange = FilterEditChange - OnExit = FilterEditExit OnKeyDown = FilterEditKeyDown TabOrder = 1 - Text = 'FilterEdit' end object ItemsListBox: TListBox AnchorSideLeft.Control = Owner @@ -63,9 +61,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = UnitLabel Left = 6 - Height = 129 - Top = 88 - Width = 540 + Height = 223 + Top = 81 + Width = 543 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Right = 6 @@ -76,15 +74,14 @@ PopupMenu = PopupMenu1 ScrollWidth = 538 TabOrder = 2 - TopIndex = -1 end object UnitLabel: TLabel AnchorSideLeft.Control = InfoLabel AnchorSideBottom.Control = PackageLabel Left = 8 Height = 15 - Top = 218 - Width = 52 + Top = 305 + Width = 50 Anchors = [akLeft, akBottom] BorderSpacing.Bottom = 1 Caption = 'UnitLabel' @@ -95,8 +92,8 @@ AnchorSideBottom.Control = AddToImplementationUsesCheckBox Left = 8 Height = 15 - Top = 234 - Width = 74 + Top = 321 + Width = 72 Anchors = [akLeft, akBottom] BorderSpacing.Bottom = 1 Caption = 'PackageLabel' @@ -107,38 +104,38 @@ AnchorSideTop.Control = InfoLabel AnchorSideTop.Side = asrBottom Left = 8 - Height = 24 + Height = 19 Top = 29 - Width = 183 + Width = 169 BorderSpacing.Top = 6 Caption = 'HideOtherProjectsCheckBox' OnChange = HideOtherProjectsCheckBoxChange - TabOrder = 3 + TabOrder = 0 end object AddToImplementationUsesCheckBox: TCheckBox AnchorSideLeft.Control = PackageLabel AnchorSideBottom.Control = ButtonPanel1 Left = 8 - Height = 24 - Top = 252 - Width = 227 + Height = 19 + Top = 339 + Width = 217 Anchors = [akLeft, akBottom] BorderSpacing.Top = 3 BorderSpacing.Bottom = 3 Caption = 'AddToImplementationUsesCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 4 + TabOrder = 3 end object StartsSpeedButton: TSpeedButton AnchorSideTop.Control = FilterEdit AnchorSideRight.Control = ContainsSpeedButton AnchorSideBottom.Control = FilterEdit AnchorSideBottom.Side = asrBottom - Left = 432 - Height = 25 - Top = 63 - Width = 63 + Left = 439 + Height = 23 + Top = 58 + Width = 59 Anchors = [akTop, akRight, akBottom] AutoSize = True Caption = 'Starts with' @@ -153,9 +150,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = FilterEdit AnchorSideBottom.Side = asrBottom - Left = 495 - Height = 25 - Top = 63 + Left = 498 + Height = 23 + Top = 58 Width = 51 Anchors = [akTop, akRight, akBottom] AutoSize = True diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codyidentifiersdlg.pas lazarus-1.6+dfsg/components/codetools/ide/codyidentifiersdlg.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/codyidentifiersdlg.pas 2014-08-12 10:44:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codyidentifiersdlg.pas 2015-07-07 11:43:38.000000000 +0000 @@ -38,13 +38,13 @@ interface uses - Classes, SysUtils, FileProcs, LResources, LCLProc, avl_tree, contnrs, Forms, - Controls, Graphics, Dialogs, ButtonPanel, StdCtrls, ExtCtrls, LCLType, + Classes, SysUtils, LCLProc, avl_tree, contnrs, Forms, + Controls, Dialogs, ButtonPanel, StdCtrls, ExtCtrls, LCLType, Buttons, Menus, PackageIntf, LazIDEIntf, SrcEditorIntf, ProjectIntf, CompOptsIntf, IDEDialogs, IDEMsgIntf, IDEExternToolIntf, CodeCache, BasicCodeTools, CustomCodeTool, CodeToolManager, UnitDictionary, CodeTree, LinkScanner, DefineTemplates, CodeToolsStructs, FindDeclarationTool, - CodyStrConsts, CodyUtils, CodyOpts; + CodyStrConsts, CodyUtils, CodyOpts, FileProcs, LazFileUtils, LazFileCache; const PackageNameFPCSrcDir = 'FPCSrcDir'; @@ -160,7 +160,6 @@ procedure UseIdentifierClick(Sender: TObject); procedure ContainsSpeedButtonClick(Sender: TObject); procedure FilterEditChange(Sender: TObject); - procedure FilterEditExit(Sender: TObject); procedure FilterEditKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure FormDestroy(Sender: TObject); @@ -180,7 +179,6 @@ FLastHideOtherProjects: boolean; FIdleConnected: boolean; FMaxItems: integer; - FNoFilterText: string; FItems: TObjectList; // list of TCodyIdentifier FLastFilterType: TCodyIdentifierFilter; procedure SetDlgAction(NewAction: TCodyIdentifierDlgAction); @@ -882,13 +880,6 @@ UpdateItemsList; end; -procedure TCodyIdentifiersDlg.FilterEditExit(Sender: TObject); -begin - if FItems=nil then exit; - if GetFilterEditText='' then - FilterEdit.Text:=FNoFilterText; -end; - procedure TCodyIdentifiersDlg.FilterEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var @@ -935,7 +926,7 @@ ButtonPanel1.OKButton.Caption:=crsUseIdentifier; ButtonPanel1.OKButton.OnClick:=@UseIdentifierClick; FMaxItems:=40; - FNoFilterText:=crsFilter; + FilterEdit.TextHint:=crsFilter; FItems:=TObjectList.Create; HideOtherProjectsCheckBox.Checked:=true; HideOtherProjectsCheckBox.Caption:=crsHideUnitsOfOtherProjects; @@ -1270,8 +1261,6 @@ function TCodyIdentifiersDlg.GetFilterEditText: string; begin Result:=FilterEdit.Text; - if Result=FNoFilterText then - Result:=''; end; function TCodyIdentifiersDlg.FindSelectedIdentifier: TCodyIdentifier; @@ -1349,9 +1338,7 @@ UpdateCurOwnerOfUnit; UpdateGeneralInfo; FLastFilter:='...'; // force one update - if CurIdentifier='' then - FilterEdit.Text:=FNoFilterText - else + if CurIdentifier<>'' then FilterEdit.Text:=CurIdentifier; IdleConnected:=true; end; @@ -1711,14 +1698,14 @@ debugln(['TCodyIdentifiersDlg.AddToUsesSection "',NewUnitName,'" is hidden used unit']); exit; end; - UsesNode:=CurTool.FindMainUsesSection; + UsesNode:=CurTool.FindMainUsesNode; if (UsesNode<>nil) and (CurTool.FindNameInUsesSection(UsesNode,NewUnitName)<>nil) then begin debugln(['TCodyIdentifiersDlg.AddToUsesSection "',NewUnitName,'" is already used in main uses section']); exit; end; if CurInImplementation then begin - UsesNode:=CurTool.FindImplementationUsesSection; + UsesNode:=CurTool.FindImplementationUsesNode; if (UsesNode<>nil) and (CurTool.FindNameInUsesSection(UsesNode,NewUnitName)<>nil) then begin debugln(['TCodyIdentifiersDlg.AddToUsesSection "',NewUnitName,'" is already used in implementation uses section']); diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/cody.lpk lazarus-1.6+dfsg/components/codetools/ide/cody.lpk --- lazarus-1.4.4+dfsg/components/codetools/ide/cody.lpk 2014-05-10 23:34:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/cody.lpk 2015-10-05 22:48:42.000000000 +0000 @@ -2,6 +2,7 @@ <CONFIG> <Package Version="4"> <Name Value="Cody"/> + <Type Value="RunAndDesignTime"/> <Author Value="Mattias Gaertner - mattias@freepascal.org"/> <CompilerOptions> <Version Value="11"/> @@ -9,17 +10,13 @@ <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/> </SearchPaths> <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> <CustomOptions Value="$(IDEBuildOptions)"/> - <CompilerPath Value="$(CompPath)"/> </Other> </CompilerOptions> <Description Value="IDE extensions using Codetools."/> <License Value="GPL2"/> <Version Major="1" Minor="1"/> - <Files Count="16"> + <Files Count="17"> <Item1> <Filename Value="ppulistdlg.pas"/> <UnitName Value="PPUListDlg"/> @@ -85,13 +82,16 @@ <Filename Value="newidewnddlg.pas"/> <UnitName Value="NewIDEWndDlg"/> </Item16> + <Item17> + <Filename Value="codyfindoverloads.pas"/> + <UnitName Value="CodyFindOverloads"/> + </Item17> </Files> <LazDoc Paths="doc"/> <i18n> <EnableI18N Value="True"/> <OutDir Value="languages"/> </i18n> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="3"> <Item1> <PackageName Value="SynEdit"/> diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codynodeinfodlg.pas lazarus-1.6+dfsg/components/codetools/ide/codynodeinfodlg.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/codynodeinfodlg.pas 2014-08-12 10:44:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codynodeinfodlg.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,14 +30,14 @@ interface uses - Classes, SysUtils, AVL_Tree, FileProcs, Forms, Controls, Graphics, Dialogs, + Classes, SysUtils, AVL_Tree, Forms, Controls, Graphics, Dialogs, ButtonPanel, ComCtrls, StdCtrls, // IDEIntf SrcEditorIntf, // CodeTools CodeToolManager, CodeTree, FindDeclarationCache, PascalParserTool, LinkScanner, CodeCache, BasicCodeTools, FindDeclarationTool, SourceLog, - CodyUtils, CodyStrConsts; + CodyStrConsts, FileProcs, LazFileUtils; type diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/cody.pas lazarus-1.6+dfsg/components/codetools/ide/cody.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/cody.pas 2014-05-10 23:34:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/cody.pas 2015-10-05 22:48:42.000000000 +0000 @@ -10,7 +10,8 @@ PPUListDlg, CodyStrConsts, AddAssignMethodDlg, CodyCtrls, CodyFrm, CodyRegistration, DeclareVarDlg, CodyUtils, CodyNodeInfoDlg, CodyCopyDeclaration, AddWithBlockDlg, CodyIdentifiersDlg, CodyMiscOptsFrame, - CodyOpts, TemplateIDEDockableWindow, NewIDEWndDlg, LazarusPackageIntf; + CodyOpts, TemplateIDEDockableWindow, NewIDEWndDlg, CodyFindOverloads, + LazarusPackageIntf; implementation diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codyregistration.pas lazarus-1.6+dfsg/components/codetools/ide/codyregistration.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/codyregistration.pas 2014-05-10 23:34:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codyregistration.pas 2015-11-04 13:49:56.000000000 +0000 @@ -35,9 +35,11 @@ IDECommands, NewIDEWndDlg, CodeToolManager, CodyStrConsts, CodyUtils, CodyCtrls, CodyOpts, - PPUListDlg, AddAssignMethodDlg, AddWithBlockDlg, - CodyNodeInfoDlg, CodyFrm, DeclareVarDlg, CodyCopyDeclaration, - CodyIdentifiersDlg, CodyMiscOptsFrame; + PPUListDlg, AddAssignMethodDlg, AddWithBlockDlg, CodyFindOverloads, + {$IFDEF EnableCodyExperiments} + CodyCopyDeclaration, + {$ENDIF} + CodyNodeInfoDlg, CodyFrm, DeclareVarDlg, CodyIdentifiersDlg, CodyMiscOptsFrame; procedure Register; @@ -134,6 +136,10 @@ CreateSourceCommand(CmdCatCodeTools,'ShowUnitDictionary', crsShowUnitIdentifierDictionary,nil,@ShowUnitDictionaryDialog); + // Find overloads + CreateSourceCommand(CmdCatCodeTools,'FindProcOverloads', + crsFindProcedureMethodOverloads, nil, @ShowFindOverloadsClicked); + // Refactor menu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // declare variable diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codystrconsts.pas lazarus-1.6+dfsg/components/codetools/ide/codystrconsts.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/codystrconsts.pas 2014-07-14 23:25:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codystrconsts.pas 2015-11-04 13:49:56.000000000 +0000 @@ -78,6 +78,7 @@ crsAddAssignMethod = 'Add Assign Method'; crsShowCodeToolsNodeInfo = 'Show CodeTools Node Info ...'; crsShowUnitIdentifierDictionary = 'Show Unit / Identifier Dictionary ...'; + crsFindProcedureMethodOverloads = 'Find Procedure/Method Overloads'; crsAddAssignMethod2 = 'Add Assign Method ...'; crsCopyDeclarationToClipboard = 'Copy declaration to Clipboard'; crsCutDeclarationToClipboard = 'Cut declaration to Clipboard'; @@ -258,6 +259,34 @@ crsFindSourceOfGDBBacktrace = 'Find source of GDB backtrace'; crsPasteLinesOfAGdbBacktrace = 'Paste lines of a gdb backtrace:'; crsJump = 'Jump'; + crsHideAbstractMethodsAndMethodsOfClassInterfaces = 'Hide abstract methods ' + +'and methods of class interfaces'; + crsRelations = 'Relations:'; + crsIfUncheckedListAlsoProceduresWithSameNameAndIncomp = 'If unchecked list ' + +'also procedures with same name and incompatible parameter lists.'; + crsName = 'Name'; + crsCompatibility = 'Compatibility'; + crsDistance = 'Distance'; + crsExact = 'exact'; + crsCompatible = 'compatible'; + crsIncompatible = 'incompatible'; + crsCodyFindOverloads = 'Cody - Find Overloads'; + crsOnlyMethods = 'Only methods'; + crsScanningSUnits = 'Scanning: %s units ...'; + crsOnlyDescendantsOf = 'Only descendants of %s'; + crsScanning = 'Scanning ...'; + crsNoOverloadsFoundInProjectUnits = 'no overloads found in project units'; + crsUnitsS = 'Units: %s'; + crsErrorCursorIsNotInAProjectUnit = 'Error: cursor is not in a project unit'; + crsOnlyNonMethods = 'Only non methods'; + crsAny = 'Any'; + crsErrorNeedSourceEditorAtProcedureCallOrDeclaration = 'Error: Need source ' + +'editor at procedure call or declaration'; + crsParseError = 'Parse error'; + crsFilter2 = 'Filter'; + crsOnlyProceduresWithCompatibleParameters = 'Only procedures with compatible' + +' parameters'; + crsJumpTo2 = 'Jump to'; implementation diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/codyutils.pas lazarus-1.6+dfsg/components/codetools/ide/codyutils.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/codyutils.pas 2013-04-15 09:40:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/codyutils.pas 2015-10-08 16:54:06.000000000 +0000 @@ -32,8 +32,8 @@ uses Classes, SysUtils, Dialogs, Controls, LCLIntf, Clipbrd, LCLType, LResources, // IDEIntf - IDEDialogs, LazIDEIntf, SrcEditorIntf, IDEHelpIntf, - FileProcs, CodeToolManager, CodeCache, SourceLog, BasicCodeTools, + IDEDialogs, LazIDEIntf, SrcEditorIntf, + FileProcs, LazFileUtils, CodeToolManager, CodeCache, SourceLog, BasicCodeTools, EventCodeTool, LinkScanner, PascalParserTool, CodeTree, SourceChanger, CodeBeautifier, CodyStrConsts; @@ -120,6 +120,8 @@ TilCursor: boolean = false): TCUParseError; procedure OpenCodyHelp(Path: string); +function GetPatternValue1(const Pattern, PlaceHolder, Src: string; out Value1: string): boolean; + implementation procedure ExplodeAWithBlockCmd(Sender: TObject); @@ -337,6 +339,8 @@ if CodePos<>nil then CodePos^:=CleanCodeXYPosition; SrcEdit:=SourceEditorManagerIntf.ActiveEditor; if SrcEdit=nil then begin + if JumpToError then + IDEMessageDialog('No source editor','This function needs a Pascal source in the source editor.',mtError,[mbOk]); debugln(['CodyUtils.ParseTilCursor: no source editor']); exit(cupeNoSrcEditor); end; @@ -382,6 +386,35 @@ OpenURL(BasePath+Path); end; +function GetPatternValue1(const Pattern, PlaceHolder, Src: string; out + Value1: string): boolean; +{ Pattern: 'Descendant of %1' + PlaceHolder: '%1' + Src: 'Descendant of TWinControl' + Value1: 'TWinControl' +} +var + PatLen, SrcLen, PHLen, l: Integer; + p: SizeInt; +begin + Value1:=''; + Result:=false; + PatLen:=length(Pattern); + PHLen:=length(PlaceHolder); + SrcLen:=length(Src); + if SrcLen<PatLen-PHLen then exit; + p:=Pos(PlaceHolder,Pattern); + if p<1 then exit; + // check start pattern + if (p>1) and (not CompareMem(Pointer(Src),Pointer(Pattern),p-1)) then exit; + // check end pattern + l:=PatLen-p-PHLen; + if (l>0) + and (not CompareMem(Pointer(Src)+SrcLen-l,Pointer(Pattern)+p+PHLen,l)) then exit; + Value1:=copy(Src,p,SrcLen-PatLen+PHLen); + Result:=true; +end; + { TCodyClipboardSrcData } procedure TCodyClipboardSrcData.SetSourcePos(const SrcPos: TCodeXYPosition); diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.de.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.de.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.de.po 2014-09-08 08:24:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.de.po 2015-11-04 13:49:56.000000000 +0000 @@ -43,6 +43,10 @@ msgid "... and %s more identifiers" msgstr "... und %s weitere Bezeichner" +#: codystrconsts.crsany +msgid "Any" +msgstr "" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "" @@ -175,6 +179,10 @@ msgid "Code Node Information" msgstr "" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "" + #: codystrconsts.crscodyidentifierdictionary msgid "Identifier Dictionary" msgstr "Bezeichnerwörterbuch" @@ -184,6 +192,14 @@ msgid "General" msgstr "Allgemein" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "Neues IDE-Fenster konfigurieren" @@ -269,6 +285,10 @@ msgid "Delete unit?" msgstr "Unit löschen?" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "\"%s\" ist ein Schlüsselwort." @@ -277,6 +297,18 @@ msgid "Error: %s" msgstr "Fehler: %s" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "" + #: codystrconsts.crsexplodeawithblock msgid "Explode a \"With\" Block" msgstr "" @@ -309,10 +341,18 @@ msgid "(Filter)" msgstr "(Filter)" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "" @@ -337,6 +377,10 @@ msgid "&Help" msgstr "&Hilfe" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "Units anderer Projekte verbergen" @@ -362,6 +406,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "" +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "" + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "Unmögliche Abhängigkeit" @@ -370,6 +418,10 @@ msgid "in \"%s\"" msgstr "" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "" @@ -394,6 +446,10 @@ msgid "&Jump to" msgstr "Springe zu" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "" @@ -438,10 +494,18 @@ msgid "missing ..." msgstr "" +#: codystrconsts.crsname +msgid "Name" +msgstr "" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "" + #: codystrconsts.crsnoproject msgid "No project" msgstr "Kein Projekt" @@ -458,6 +522,22 @@ msgid "On clipboard" msgstr "" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "" + #: codystrconsts.crsoptions msgid "Options" msgstr "Einstellungen" @@ -498,6 +578,10 @@ msgid "Package with same name" msgstr "Package mit dem selben Namen" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "" @@ -574,6 +658,10 @@ msgid "Refresh" msgstr "Aktualisieren" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "" + #: codystrconsts.crsreport msgid "Report" msgstr "Bericht" @@ -590,6 +678,14 @@ msgid "Save to file %s" msgstr "" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "" + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "" + #: codystrconsts.crssearching msgid "searching ..." msgstr "" @@ -718,6 +814,10 @@ msgid "Unit shared libraries" msgstr "" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.fr.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.fr.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.fr.po 2015-04-20 21:25:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.fr.po 2015-12-21 23:08:28.000000000 +0000 @@ -3,13 +3,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: 2015-04-14 07:54+0100\n" -"PO-Revision-Date: 2015-04-14 07:54+0100\n" +"PO-Revision-Date: 2015-12-19 15:58+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: codystrconsts.crsaddassignmethod msgid "Add Assign Method" @@ -44,6 +44,10 @@ msgid "... and %s more identifiers" msgstr "... et %s identificateurs" +#: codystrconsts.crsany +msgid "Any" +msgstr "Tous" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "Une fenêtre pour l'EDI Lazarus. Elle peut être amarrée comme l'explorateur de code ou l'éditeur \"FPDoc\". Elle crée aussi un élément dans le menu \"Voir\" et un raccourci." @@ -176,6 +180,10 @@ msgid "Code Node Information" msgstr "Information de nœud de code" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "Cody - Chercher les surcharges" + #: codystrconsts.crscodyidentifierdictionary msgid "Identifier Dictionary" msgstr "Dictionnaire des identificateurs" @@ -185,6 +193,14 @@ msgid "General" msgstr "Général" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "Compatibilité" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "compatible" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "Configurer une nouvelle fenêtre de l'EDI" @@ -270,6 +286,10 @@ msgid "Delete unit?" msgstr "Faut-il supprimer l'unité ?" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "Distance" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "\"%s\" est un mot-clé." @@ -278,6 +298,18 @@ msgid "Error: %s" msgstr "Erreur : %s" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "Erreur : le curseur n'est pas une unité de projet" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "Erreur : besoin d'un éditeur de source lors de l'appel ou de la déclaration d'une procédure" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "exact" + #: codystrconsts.crsexplodeawithblock msgid "Explode a \"With\" Block" msgstr "Éclater un bloc \"With\"" @@ -310,10 +342,18 @@ msgid "(Filter)" msgstr "(Filtre)" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "Filtre" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "Chercher une ligne de la trace de \"GDB\"" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "Chercher les surcharges de procédures/méthodes" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "Chercher le code source de la trace de \"GDB\"" @@ -338,6 +378,10 @@ msgid "&Help" msgstr "&Aide" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "Cacher les méthodes abstraites et celles des interfaces de classes" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "Cacher les unités des autres projets" @@ -363,6 +407,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "Si l'identificateur est ajouté à la section implémentation et qu'une unité a besoin d'être ajoutée, ajoutez-la à la section \"uses\" de l'implémentation." +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "Si décoché, indiquer aussi les procédures portant le même nom et aux paramètres incompatibles." + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "Dépendance impossible" @@ -371,6 +419,10 @@ msgid "in \"%s\"" msgstr "dans \"%s\"" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "incompatible" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "Dans l'implémentation" @@ -395,6 +447,10 @@ msgid "&Jump to" msgstr "&Aller à" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "Aller à" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "Kilo-octets" @@ -439,10 +495,18 @@ msgid "missing ..." msgstr "manquant..." +#: codystrconsts.crsname +msgid "Name" +msgstr "Nom" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "Aucun sélectionné" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "pas de surcharges trouvées dans les unités du projet" + #: codystrconsts.crsnoproject msgid "No project" msgstr "Pas de projet" @@ -459,6 +523,22 @@ msgid "On clipboard" msgstr "Dans le presse-papier" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "Seulement les descendants de %s" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "Seulement les méthodes" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "Pas les méthodes" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "Seulement les procédures avec des paramètres compatibles" + #: codystrconsts.crsoptions msgid "Options" msgstr "Options" @@ -499,6 +579,10 @@ msgid "Package with same name" msgstr "Paquet portant le même nom" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "Erreur de lecture" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "Coller les lignes de trace de \"gdb\" :" @@ -575,6 +659,10 @@ msgid "Refresh" msgstr "Rafraîchir" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "Relations :" + #: codystrconsts.crsreport msgid "Report" msgstr "Rapport" @@ -591,6 +679,14 @@ msgid "Save to file %s" msgstr "Enregistrer dans le fichier %s" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "Parcours..." + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "Parcours : %s unités..." + #: codystrconsts.crssearching msgid "searching ..." msgstr "recherche en cours..." @@ -719,6 +815,10 @@ msgid "Unit shared libraries" msgstr "Bibliothèques des unités partagées" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "Unités : %s" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "Bibliothèques des unités statiques" @@ -742,3 +842,4 @@ #: codystrconsts.crswhere msgid "Where" msgstr "Où" + diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.hu.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.hu.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.hu.po 2015-12-01 21:27:14.000000000 +0000 @@ -44,6 +44,10 @@ msgid "... and %s more identifiers" msgstr "... és további %s azonosító" +#: codystrconsts.crsany +msgid "Any" +msgstr "Bármi" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "Egy ablak a Lazarus IDE számára. Dokkolható mint a Kódböngésző vagy az FPDoc Szerkesztő. Létrehoz egy menüelemet a Nézet menüben és egy gyorsbillentyűt is." @@ -176,6 +180,10 @@ msgid "Code Node Information" msgstr "Kód-csomópont információ" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "Cody - Felültöltések keresése" + #: codystrconsts.crscodyidentifierdictionary msgid "Identifier Dictionary" msgstr "Azonosítók szótára" @@ -185,6 +193,14 @@ msgid "General" msgstr "Általános" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "Kompatibilitás" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "kompatibilis" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "Új IDE ablak beállítása" @@ -270,6 +286,10 @@ msgid "Delete unit?" msgstr "Unit törlése?" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "Távolság" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "A(z) \"%s\" egy kulcsszó." @@ -278,6 +298,18 @@ msgid "Error: %s" msgstr "Hiba: %s" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "Hiba: A kurzor nem a projekt egyik unit-jában van" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "Hiba: A forráskódszerkesztőnek eljáráshívásnál vagy deklarációnál kell állnia" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "pontos" + #: codystrconsts.crsexplodeawithblock msgid "Explode a \"With\" Block" msgstr "\"With\" blokk megszüntetése" @@ -310,10 +342,18 @@ msgid "(Filter)" msgstr "(Szűrő)" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "Szűrő" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "A GDB visszakövetés sorának megkeresése" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "Eljárás/metódus felültöltések keresése" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "A GDB visszakövetés forrásának megkeresése" @@ -338,6 +378,10 @@ msgid "&Help" msgstr "&Súgó" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "Absztrakt metódusok és osztályfelületek metódusainak elrejtése" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "Más projektek unit-jainak elrejtése" @@ -363,6 +407,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "Ha az azonosító a kidolgozás szakaszhoz lett adva és a szükséges unit-ot hozzá kell adni, akkor az a kidolgozás uses szakaszába kerül." +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "Ha nincs bejelölve a lista az azonos nevű, de eltérő paraméterekkel rendelkező eljárásokat is tartalmazza." + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "Lehetetlen függőség" @@ -371,6 +419,10 @@ msgid "in \"%s\"" msgstr "itt: \"%s\"" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "nem kompatibilis" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "A kidolgozásban" @@ -393,7 +445,11 @@ #: codystrconsts.crsjumpto msgid "&Jump to" -msgstr "Ugrás ide" +msgstr "Ugrás" + +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "Ugrás" #: codystrconsts.crskbytes msgid "kbytes" @@ -439,10 +495,18 @@ msgid "missing ..." msgstr "hiányzik ..." +#: codystrconsts.crsname +msgid "Name" +msgstr "Név" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "semmi nincs kijelölve" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "nem találhatók felültöltések a projekt unit-jaiban" + #: codystrconsts.crsnoproject msgid "No project" msgstr "<nincs projekt>" @@ -459,6 +523,22 @@ msgid "On clipboard" msgstr "A vágólapon" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "Csak %s leszármazottai" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "Csak metódusok" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "Metódusok nélkül" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "Csak egyező paraméterekkel rendelkező eljárások" + #: codystrconsts.crsoptions msgid "Options" msgstr "Beállítások" @@ -499,6 +579,10 @@ msgid "Package with same name" msgstr "Azonos nevű csomag" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "Feldolgozási hiba" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "A GDB visszakövetés sorainak beillesztése:" @@ -575,6 +659,10 @@ msgid "Refresh" msgstr "Frissítés" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "Kapcsolatok:" + #: codystrconsts.crsreport msgid "Report" msgstr "Jelentés" @@ -591,6 +679,14 @@ msgid "Save to file %s" msgstr "Mentés fájlba: %s" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "Ellenőrzés ..." + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "Ellenőrzés: %s unit ..." + #: codystrconsts.crssearching msgid "searching ..." msgstr "keresés ..." @@ -719,6 +815,10 @@ msgid "Unit shared libraries" msgstr "Unit megosztott függvénytárai" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "Unit-ok: %s" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "Unit statikus függvénytárai" @@ -742,3 +842,4 @@ #: codystrconsts.crswhere msgid "Where" msgstr "Hely" + diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.it.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.it.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.it.po 2014-10-25 08:57:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.it.po 2015-11-04 13:49:56.000000000 +0000 @@ -45,6 +45,10 @@ msgid "... and %s more identifiers" msgstr "... e altri %s identificatori" +#: codystrconsts.crsany +msgid "Any" +msgstr "" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "Una finestra per l' IDE di Lazarus. Può essere \"docked\"come il Code Explorer o l'editor di FPDoc. Crea anche una voce nel menu \"Visualizza\" e una scorciatoia da tastiera." @@ -177,6 +181,10 @@ msgid "Code Node Information" msgstr "Informazioni sul nodo di codice" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "" + #: codystrconsts.crscodyidentifierdictionary msgid "Identifier Dictionary" msgstr "Dizionario Identificatori" @@ -186,6 +194,14 @@ msgid "General" msgstr "Generale" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "Configurare una nuova finestra dell'IDE" @@ -271,6 +287,10 @@ msgid "Delete unit?" msgstr "Cancellare la unit?" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "\"%s\" è una parola chiave." @@ -279,6 +299,18 @@ msgid "Error: %s" msgstr "Errore: %s" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "" + #: codystrconsts.crsexplodeawithblock msgid "Explode a \"With\" Block" msgstr "Espandere un blocco \"With\"" @@ -311,10 +343,18 @@ msgid "(Filter)" msgstr "(Filtro)" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "Trovare la riga di backtrace GDB" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "Trova il sorgente del backtrace GDB" @@ -339,6 +379,10 @@ msgid "&Help" msgstr "&Aiuto" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "Nascondi le unit degli altri progetti" @@ -364,6 +408,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "Se si aggiunge un identificatore nella sezione implementazione, ed occorre aggiungere delle unit, aggiungerle nella sezione \"uses\" dell'implementazione" +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "" + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "Dipendenza impossibile" @@ -372,6 +420,10 @@ msgid "in \"%s\"" msgstr "in \"%s\"" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "In implementazione" @@ -396,6 +448,10 @@ msgid "&Jump to" msgstr "&Salta a" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "Kbyte" @@ -440,10 +496,18 @@ msgid "missing ..." msgstr "mancante..." +#: codystrconsts.crsname +msgid "Name" +msgstr "" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "nessuna selezione" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "" + #: codystrconsts.crsnoproject msgid "No project" msgstr "Nessun progetto" @@ -460,6 +524,22 @@ msgid "On clipboard" msgstr "Negli appunti" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "" + #: codystrconsts.crsoptions msgid "Options" msgstr "Opzioni" @@ -500,6 +580,10 @@ msgid "Package with same name" msgstr "Pacchetto con lo stesso nome" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "Incolla le righe del backtrace gdb:" @@ -576,6 +660,10 @@ msgid "Refresh" msgstr "Rinfrescare" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "" + #: codystrconsts.crsreport msgid "Report" msgstr "Relazione" @@ -592,6 +680,14 @@ msgid "Save to file %s" msgstr "Salvare nel file %s" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "" + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "" + #: codystrconsts.crssearching msgid "searching ..." msgstr "Ricerca in corso..." @@ -720,6 +816,10 @@ msgid "Unit shared libraries" msgstr "Librerie condivise della unit" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "Librerie statiche della unit" diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.lt.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.lt.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.lt.po 2014-07-14 23:25:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.lt.po 2015-11-04 13:49:56.000000000 +0000 @@ -44,6 +44,10 @@ msgid "... and %s more identifiers" msgstr "… dar liko identifikatorių: %s" +#: codystrconsts.crsany +msgid "Any" +msgstr "" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "Langas, skirta Lazarus IKA. Jis gali būti pritvirtintas kaip ir „Kodo tyrinėtojas“ arba „FPDoc rengyklė“. Šiam langui bus sukurtas menių „Rodymas“ papunktis ir sparčiųjų klavišų derinys." @@ -176,6 +180,10 @@ msgid "Code Node Information" msgstr "Informacija apie kodo mazgą" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "" + #: codystrconsts.crscodyidentifierdictionary msgid "Identifier Dictionary" msgstr "Identifikatorių žodynas" @@ -185,6 +193,14 @@ msgid "General" msgstr "Pagrindinis" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "Derinti naują IKA langą" @@ -270,6 +286,10 @@ msgid "Delete unit?" msgstr "" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "„%s“ yra bazinis žodis." @@ -278,6 +298,18 @@ msgid "Error: %s" msgstr "Klaida: %s" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "" + #: codystrconsts.crsexplodeawithblock msgid "Explode a \"With\" Block" msgstr "Detalizuoti bloką „with“" @@ -310,10 +342,18 @@ msgid "(Filter)" msgstr "(Filtras)" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "" @@ -338,6 +378,10 @@ msgid "&Help" msgstr "Žin&ynas" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "Slėpti kitų projektų modulius" @@ -363,6 +407,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "Pridėti prie skiltyje „Implementation“ naudojamų modulių, kai identifikatorius yra įdėtas „Implementation“ sekcijoje ir būtina pridėti reikiamą modulį." +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "" + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "Neįmanoma priklausomybė" @@ -371,6 +419,10 @@ msgid "in \"%s\"" msgstr "" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "„Implementation“ skiltyje" @@ -395,6 +447,10 @@ msgid "&Jump to" msgstr "&Šokti į" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "kiB" @@ -439,10 +495,18 @@ msgid "missing ..." msgstr "trūksta…" +#: codystrconsts.crsname +msgid "Name" +msgstr "" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "nepažymėta" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "" + #: codystrconsts.crsnoproject msgid "No project" msgstr "Be projekto" @@ -459,6 +523,22 @@ msgid "On clipboard" msgstr "Iškarpinėje" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "" + #: codystrconsts.crsoptions msgid "Options" msgstr "Parinktys" @@ -499,6 +579,10 @@ msgid "Package with same name" msgstr "Paketas tuo pačiu pavadinimu" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "" @@ -575,6 +659,10 @@ msgid "Refresh" msgstr "Atnaujinti" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "" + #: codystrconsts.crsreport msgid "Report" msgstr "Ataskaita" @@ -591,6 +679,14 @@ msgid "Save to file %s" msgstr "Įrašyti į failą „%s“" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "" + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "" + #: codystrconsts.crssearching msgid "searching ..." msgstr "ieškoma…" @@ -719,6 +815,10 @@ msgid "Unit shared libraries" msgstr "Modulio bendrosios bibliotekos" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "Modulio statinės bibliotekos" diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.po 2014-07-14 23:25:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.po 2015-11-04 13:49:56.000000000 +0000 @@ -34,6 +34,10 @@ msgid "... and %s more identifiers" msgstr "" +#: codystrconsts.crsany +msgid "Any" +msgstr "" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "" @@ -166,6 +170,10 @@ msgid "Code Node Information" msgstr "" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "" + #: codystrconsts.crscodyidentifierdictionary msgid "Identifier Dictionary" msgstr "" @@ -175,6 +183,14 @@ msgid "General" msgstr "" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "" @@ -260,6 +276,10 @@ msgid "Delete unit?" msgstr "" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "" @@ -268,6 +288,18 @@ msgid "Error: %s" msgstr "" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "" + #: codystrconsts.crsexplodeawithblock msgid "Explode a \"With\" Block" msgstr "" @@ -300,10 +332,18 @@ msgid "(Filter)" msgstr "" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "" @@ -328,6 +368,10 @@ msgid "&Help" msgstr "" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "" @@ -353,6 +397,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "" +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "" + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "" @@ -361,6 +409,10 @@ msgid "in \"%s\"" msgstr "" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "" @@ -385,6 +437,10 @@ msgid "&Jump to" msgstr "" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "" @@ -429,10 +485,18 @@ msgid "missing ..." msgstr "" +#: codystrconsts.crsname +msgid "Name" +msgstr "" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "" + #: codystrconsts.crsnoproject msgid "No project" msgstr "" @@ -449,6 +513,22 @@ msgid "On clipboard" msgstr "" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "" + #: codystrconsts.crsoptions msgid "Options" msgstr "" @@ -489,6 +569,10 @@ msgid "Package with same name" msgstr "" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "" @@ -565,6 +649,10 @@ msgid "Refresh" msgstr "" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "" + #: codystrconsts.crsreport msgid "Report" msgstr "" @@ -581,6 +669,14 @@ msgid "Save to file %s" msgstr "" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "" + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "" + #: codystrconsts.crssearching msgid "searching ..." msgstr "" @@ -709,6 +805,10 @@ msgid "Unit shared libraries" msgstr "" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.pt_BR.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.pt_BR.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.pt_BR.po 2014-07-14 23:25:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.pt_BR.po 2015-11-04 13:49:56.000000000 +0000 @@ -11,17 +11,14 @@ "X-Generator: Poedit 1.5.4\n" #: codystrconsts.crsaddassignmethod -#| msgid "Add Assign method" msgid "Add Assign Method" msgstr "Adicionar método \"Assign\"" #: codystrconsts.crsaddassignmethod2 -#| msgid "Add Assign method ..." msgid "Add Assign Method ..." msgstr "Adicionar método \"Assign\" ..." #: codystrconsts.crsaddawithblock -#| msgid "Add a \"With\" block" msgid "Add a \"With\" Block" msgstr "Adicionar um bloco \"With\"" @@ -46,6 +43,10 @@ msgid "... and %s more identifiers" msgstr "... e mais %s identificadores" +#: codystrconsts.crsany +msgid "Any" +msgstr "" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "Uma janela para a IDE Lazarus. Ela pode ser ancorada como o Explorador de Código ou o Editor FPDoc. Isto também cria um item de menu no menu Exibir e um atalho." @@ -178,8 +179,11 @@ msgid "Code Node Information" msgstr "Informação Nó de Código" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "" + #: codystrconsts.crscodyidentifierdictionary -#| msgid "Cody Identifier Dictionary" msgid "Identifier Dictionary" msgstr "Dicionário de identificadores" @@ -188,6 +192,14 @@ msgid "General" msgstr "Geral" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "Configurar nova janela IDE" @@ -201,7 +213,6 @@ msgstr "Continuar" #: codystrconsts.crscopydeclarationtoclipboard -#| msgid "Copy declaration to clipboard" msgid "Copy declaration to Clipboard" msgstr "Copiar declaração para área de transferência" @@ -231,7 +242,6 @@ msgstr "Selecionar arquivo à inserir na posição do cursor" #: codystrconsts.crscutdeclarationtoclipboard -#| msgid "Cut declaration to clipboard" msgid "Cut declaration to Clipboard" msgstr "Recortar declaração para área de transferência" @@ -275,6 +285,10 @@ msgid "Delete unit?" msgstr "Excluir unidade?" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "\"%s\" é uma palavra-chave." @@ -283,8 +297,19 @@ msgid "Error: %s" msgstr "Erro: %s" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "" + #: codystrconsts.crsexplodeawithblock -#| msgid "Explode a \"With\" block" msgid "Explode a \"With\" Block" msgstr "Expandir um bloco \"With\"" @@ -316,10 +341,18 @@ msgid "(Filter)" msgstr "(Filtro)" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "" @@ -344,6 +377,10 @@ msgid "&Help" msgstr "&Ajuda" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "Ocultar unidades de outros projetos" @@ -369,6 +406,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "Se o identificador for adicionado à seção de implementação e a unidade necessária precisar ser adicionada, adicionar à seção \"uses\" da implementação" +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "" + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "Dependência impossível" @@ -377,6 +418,10 @@ msgid "in \"%s\"" msgstr "em \"%s\"" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "Na implementação" @@ -390,7 +435,6 @@ msgstr "Inserir chamada à \"Inherited\"" #: codystrconsts.crsinsertfileatcursor -#| msgid "Insert File at Cursor ..." msgid "Insert File Contents at Cursor ..." msgstr "Inserir conteúdo do arquivo na posição do cursor ..." @@ -399,10 +443,13 @@ msgstr "" #: codystrconsts.crsjumpto -#| msgid "Jump to" msgid "&Jump to" msgstr "&Saltar para" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "kbytes" @@ -447,10 +494,18 @@ msgid "missing ..." msgstr "faltando ..." +#: codystrconsts.crsname +msgid "Name" +msgstr "" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "nada selecionado" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "" + #: codystrconsts.crsnoproject msgid "No project" msgstr "Nenhum projeto" @@ -467,6 +522,22 @@ msgid "On clipboard" msgstr "Na área de transferência" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "" + #: codystrconsts.crsoptions msgid "Options" msgstr "Opções" @@ -500,7 +571,6 @@ msgstr "Pacote \"%s\" não encontrado. Deveria estar em \"%s\"." #: codystrconsts.crspackagesunitsidentifiersfile -#| msgid "Packages: %s, Units: %s, Identifiers: %s%sFile: %s" msgid "Packages: %s, Units: %s, Identifiers: %s%sDatabase: %s" msgstr "Pacotes: %s, Unidades: %s, Identificadores: %s%sBase de dados: %s" @@ -508,6 +578,10 @@ msgid "Package with same name" msgstr "Pacote com mesmo nome" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "" @@ -557,7 +631,6 @@ msgstr "Projeto não tem arquivo fonte principal." #: codystrconsts.crsprojectoutput -#| msgid "Project output" msgid "Project Output" msgstr "Saída do Projeto" @@ -585,6 +658,10 @@ msgid "Refresh" msgstr "Atualizar" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "" + #: codystrconsts.crsreport msgid "Report" msgstr "Relatório" @@ -601,6 +678,14 @@ msgid "Save to file %s" msgstr "Salvar para o arquivo %s" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "" + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "" + #: codystrconsts.crssearching msgid "searching ..." msgstr "localizando ..." @@ -614,7 +699,6 @@ msgstr "Selecionar expressão" #: codystrconsts.crsshowcodetoolsnodeinfo -#| msgid "Show CodeTools node info ..." msgid "Show CodeTools Node Info ..." msgstr "Exibir info. do nó das ferramentas de código ..." @@ -635,7 +719,6 @@ msgstr "Exibir Unidade / Dicionário de Identificadores ..." #: codystrconsts.crsshowusedppufiles -#| msgid "Show used .ppu files ..." msgid "Show Used .ppu Files ..." msgstr "Exibir arquivos .ppu usados ..." @@ -731,6 +814,10 @@ msgid "Unit shared libraries" msgstr "Unidade de bibliotecas compartilhadas" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "Unidade de bibliotecas estáticas" @@ -740,7 +827,6 @@ msgstr "Usado por" #: codystrconsts.crsuseidentifier -#| msgid "Use identifier" msgid "&Use identifier" msgstr "Identificador \"&Use\"" @@ -749,7 +835,6 @@ msgstr "\"Uses\"" #: codystrconsts.crsvirtualunit -#| msgid "Virtual unit" msgid "Virtual Unit" msgstr "Unidade Virtual" diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.ru.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.ru.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.ru.po 2014-07-14 23:25:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.ru.po 2015-11-04 13:49:56.000000000 +0000 @@ -8,19 +8,18 @@ "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: codystrconsts.crsaddassignmethod -#| msgid "Add Assign method" msgid "Add Assign Method" msgstr "Добавить метод Assign" #: codystrconsts.crsaddassignmethod2 -#| msgid "Add Assign method ..." msgid "Add Assign Method ..." msgstr "Добавить метод Assign ..." #: codystrconsts.crsaddawithblock -#| msgid "Add a \"With\" block" msgid "Add a \"With\" Block" msgstr "Добавить блок \"With\"" @@ -45,6 +44,10 @@ msgid "... and %s more identifiers" msgstr "... дополнительно идентификаторов: %s" +#: codystrconsts.crsany +msgid "Any" +msgstr "Любые" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "Окно для среды Lazarus. Может быть пристыковано подобно обозревателю кода или редактору FPDoc. Помимо окна, будет создан пункт в меню Вид с комбинацией клавиш." @@ -139,7 +142,7 @@ #: codystrconsts.crscamselectmemberstoassign msgid "Select members to assign:" -msgstr "Выбор элементов для присвоения:" +msgstr "Выбор элементов для присваивания:" #: codystrconsts.crscamthereisnoinheritedmethod msgid "There is no inherited method." @@ -177,8 +180,11 @@ msgid "Code Node Information" msgstr "Сведения об элементе кода" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "Найти перегруженные" + #: codystrconsts.crscodyidentifierdictionary -#| msgid "Cody Identifier Dictionary" msgid "Identifier Dictionary" msgstr "Словарь идентификаторов" @@ -187,6 +193,14 @@ msgid "General" msgstr "Общие" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "Совместимость" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "совместим" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "Параметры нового окна IDE" @@ -200,7 +214,6 @@ msgstr "Продолжить" #: codystrconsts.crscopydeclarationtoclipboard -#| msgid "Copy declaration to clipboard" msgid "Copy declaration to Clipboard" msgstr "Копировать объявление в буфер обмена" @@ -230,7 +243,6 @@ msgstr "Выбор файла для вставки в месте расположения курсора" #: codystrconsts.crscutdeclarationtoclipboard -#| msgid "Cut declaration to clipboard" msgid "Cut declaration to Clipboard" msgstr "Вырезать объявление в буфер обмена" @@ -274,6 +286,10 @@ msgid "Delete unit?" msgstr "Удалить модуль?" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "Расстояние" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "\"%s\" является ключевым словом." @@ -282,8 +298,19 @@ msgid "Error: %s" msgstr "Ошибка: %s" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "Ошибка: курсор не находится в модуле проекта" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "Ошибка: курсор в редакторе следует установить на вызове или объявлении процедуры" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "точное соответствие" + #: codystrconsts.crsexplodeawithblock -#| msgid "Explode a \"With\" block" msgid "Explode a \"With\" Block" msgstr "Раскрыть блок \"With\"" @@ -315,10 +342,18 @@ msgid "(Filter)" msgstr "(Фильтр)" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "Фильтр" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "Найти строку кода для стека вызовов GDB" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "Найти перегруженные процедуры/методы" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "Поиск строк исходного кода для стека вызовов GDB" @@ -343,6 +378,10 @@ msgid "&Help" msgstr "&Справка" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "Скрывать абстрактные методы и методы интерфейсов классов" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "Скрывать модули других проектов" @@ -368,6 +407,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "Если при добавлении идентификатора в секцию Implementation требуется подключить необходимый модуль, подключать его в выражении Uses секции Implementation" +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "При отключении будут также выводиться процедуры с такими же именами, но несовместимыми наборами параметров." + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "Недопустимая зависимость" @@ -376,6 +419,10 @@ msgid "in \"%s\"" msgstr "в \"%s\"" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "несовместим" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "В секции Implementation" @@ -385,12 +432,10 @@ msgstr "В секции Interface" #: codystrconsts.crsinsertcallinherited -#| msgid "Insert call inherited" msgid "Insert Call Inherited" msgstr "Вставить вызов унаследованного" #: codystrconsts.crsinsertfileatcursor -#| msgid "Insert File at Cursor ..." msgid "Insert File Contents at Cursor ..." msgstr "Вставить содержимое файла в месте расположения курсора ..." @@ -399,10 +444,13 @@ msgstr "Перейти" #: codystrconsts.crsjumpto -#| msgid "Jump to" msgid "&Jump to" msgstr "&Перейти" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "Перейти" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "кБ" @@ -447,10 +495,18 @@ msgid "missing ..." msgstr "отсутствует ..." +#: codystrconsts.crsname +msgid "Name" +msgstr "Имя" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "не выбран" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "перегруженных процедур в модулях проекта не найдено" + #: codystrconsts.crsnoproject msgid "No project" msgstr "Проект отсутствует" @@ -467,6 +523,22 @@ msgid "On clipboard" msgstr "В буфере обмена" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "Только потомки %s" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "Только методы" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "Только не являющиеся методами" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "Только процедуры с совместимыми параметрами" + #: codystrconsts.crsoptions msgid "Options" msgstr "Параметры" @@ -500,7 +572,6 @@ msgstr "Пакет \"%s\" не найден. Он должен быть в \"%s\"." #: codystrconsts.crspackagesunitsidentifiersfile -#| msgid "Packages: %s, Units: %s, Identifiers: %s%sFile: %s" msgid "Packages: %s, Units: %s, Identifiers: %s%sDatabase: %s" msgstr "Пакетов: %s, Модулей: %s, Идентификаторов: %s%sБаза данных: %s" @@ -508,6 +579,10 @@ msgid "Package with same name" msgstr "Пакет с тем же именем" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "Ошибка анализа" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "Вставьте строки стека вызовов GDB:" @@ -517,7 +592,6 @@ msgstr "Сначала необходимо открыть проект." #: codystrconsts.crspleaseplacethecursorofthesourceeditoratanidentifie -#| msgid "Please place the cursor of the source editor at an identifier in a statement.%sFor example on the MyVar in%sMyVar:=3;" msgid "Please place the cursor of the source editor at an identifier in a statement.%sFor example:%sMyVar:=3;" msgstr "Расположите курсор редактора исходного кода на идентификаторе в операторе.%sНапример:%sMyVar:=3;" @@ -558,7 +632,6 @@ msgstr "В проекте отсутствует главный файл исходного кода." #: codystrconsts.crsprojectoutput -#| msgid "Project output" msgid "Project Output" msgstr "Вывод проекта" @@ -586,6 +659,10 @@ msgid "Refresh" msgstr "Обновить" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "Отношения:" + #: codystrconsts.crsreport msgid "Report" msgstr "Отчёт" @@ -602,6 +679,14 @@ msgid "Save to file %s" msgstr "Сохранить в файл %s" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "Идёт поиск ..." + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "Идёт поиск: %s модулей ..." + #: codystrconsts.crssearching msgid "searching ..." msgstr "поиск ..." @@ -615,7 +700,6 @@ msgstr "Выберите выражение" #: codystrconsts.crsshowcodetoolsnodeinfo -#| msgid "Show CodeTools node info ..." msgid "Show CodeTools Node Info ..." msgstr "Показать сведения об элементе CodeTools ..." @@ -636,7 +720,6 @@ msgstr "Показать словарь модулей/идентификаторов ..." #: codystrconsts.crsshowusedppufiles -#| msgid "Show used .ppu files ..." msgid "Show Used .ppu Files ..." msgstr "Показать используемые файлы PPU ..." @@ -732,6 +815,10 @@ msgid "Unit shared libraries" msgstr "Динамические библиотеки модулей" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "Модулей: %s" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "Статические библиотеки модулей" @@ -741,7 +828,6 @@ msgstr "Используется" #: codystrconsts.crsuseidentifier -#| msgid "Use identifier" msgid "&Use identifier" msgstr "&Использовать идентификатор" @@ -750,7 +836,6 @@ msgstr "Использует" #: codystrconsts.crsvirtualunit -#| msgid "Virtual unit" msgid "Virtual Unit" msgstr "Виртуальный модуль" diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.uk.po lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.uk.po --- lazarus-1.4.4+dfsg/components/codetools/ide/languages/codystrconsts.uk.po 2014-07-14 23:25:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/languages/codystrconsts.uk.po 2015-11-04 13:49:56.000000000 +0000 @@ -46,6 +46,10 @@ msgid "... and %s more identifiers" msgstr "" +#: codystrconsts.crsany +msgid "Any" +msgstr "" + #: codystrconsts.crsawindowforthelazarusideitcanbedockedlikethecodeexp msgid "A window for the Lazarus IDE. It can be docked like the Code Explorer or the FPDoc Editor. This also creates a menu item in the View menu and a short cut." msgstr "" @@ -178,6 +182,10 @@ msgid "Code Node Information" msgstr "Інформація про Вузол Коду" +#: codystrconsts.crscodyfindoverloads +msgid "Cody - Find Overloads" +msgstr "" + #: codystrconsts.crscodyidentifierdictionary msgid "Identifier Dictionary" msgstr "" @@ -187,6 +195,14 @@ msgid "General" msgstr "Загальні" +#: codystrconsts.crscompatibility +msgid "Compatibility" +msgstr "" + +#: codystrconsts.crscompatible +msgid "compatible" +msgstr "" + #: codystrconsts.crsconfigurenewidewindow msgid "Configure new IDE window" msgstr "" @@ -276,6 +292,10 @@ msgid "Delete unit?" msgstr "" +#: codystrconsts.crsdistance +msgid "Distance" +msgstr "" + #: codystrconsts.crsdvisakeyword msgid "\"%s\" is a keyword." msgstr "\"%s\" це ключове слово." @@ -284,6 +304,18 @@ msgid "Error: %s" msgstr "" +#: codystrconsts.crserrorcursorisnotinaprojectunit +msgid "Error: cursor is not in a project unit" +msgstr "" + +#: codystrconsts.crserrorneedsourceeditoratprocedurecallordeclaration +msgid "Error: Need source editor at procedure call or declaration" +msgstr "" + +#: codystrconsts.crsexact +msgid "exact" +msgstr "" + #: codystrconsts.crsexplodeawithblock #, fuzzy #| msgid "Explode a \"With\" block" @@ -318,10 +350,18 @@ msgid "(Filter)" msgstr "" +#: codystrconsts.crsfilter2 +msgid "Filter" +msgstr "" + #: codystrconsts.crsfindgdbbacktraceline msgid "Find GDB backtrace line" msgstr "" +#: codystrconsts.crsfindproceduremethodoverloads +msgid "Find Procedure/Method Overloads" +msgstr "" + #: codystrconsts.crsfindsourceofgdbbacktrace msgid "Find source of GDB backtrace" msgstr "" @@ -346,6 +386,10 @@ msgid "&Help" msgstr "&Довідка" +#: codystrconsts.crshideabstractmethodsandmethodsofclassinterfaces +msgid "Hide abstract methods and methods of class interfaces" +msgstr "" + #: codystrconsts.crshideunitsofotherprojects msgid "Hide units of other projects" msgstr "" @@ -371,6 +415,10 @@ msgid "If identifier is added to the implementation section and needed unit needs to be added, add to the uses section of the implementation" msgstr "" +#: codystrconsts.crsifuncheckedlistalsoprocedureswithsamenameandincomp +msgid "If unchecked list also procedures with same name and incompatible parameter lists." +msgstr "" + #: codystrconsts.crsimpossibledependency msgid "Impossible dependency" msgstr "" @@ -379,6 +427,10 @@ msgid "in \"%s\"" msgstr "" +#: codystrconsts.crsincompatible +msgid "incompatible" +msgstr "" + #: codystrconsts.crsinimplementation msgid "In implementation" msgstr "В реалізації" @@ -405,6 +457,10 @@ msgid "&Jump to" msgstr "" +#: codystrconsts.crsjumpto2 +msgid "Jump to" +msgstr "" + #: codystrconsts.crskbytes msgid "kbytes" msgstr "кБ" @@ -449,10 +505,18 @@ msgid "missing ..." msgstr "відсутній ..." +#: codystrconsts.crsname +msgid "Name" +msgstr "" + #: codystrconsts.crsnoneselected msgid "none selected" msgstr "" +#: codystrconsts.crsnooverloadsfoundinprojectunits +msgid "no overloads found in project units" +msgstr "" + #: codystrconsts.crsnoproject msgid "No project" msgstr "Немає проекту" @@ -469,6 +533,22 @@ msgid "On clipboard" msgstr "На буфер обміну" +#: codystrconsts.crsonlydescendantsof +msgid "Only descendants of %s" +msgstr "" + +#: codystrconsts.crsonlymethods +msgid "Only methods" +msgstr "" + +#: codystrconsts.crsonlynonmethods +msgid "Only non methods" +msgstr "" + +#: codystrconsts.crsonlyprocedureswithcompatibleparameters +msgid "Only procedures with compatible parameters" +msgstr "" + #: codystrconsts.crsoptions msgid "Options" msgstr "Параметри" @@ -509,6 +589,10 @@ msgid "Package with same name" msgstr "" +#: codystrconsts.crsparseerror +msgid "Parse error" +msgstr "" + #: codystrconsts.crspastelinesofagdbbacktrace msgid "Paste lines of a gdb backtrace:" msgstr "" @@ -587,6 +671,10 @@ msgid "Refresh" msgstr "Оновити" +#: codystrconsts.crsrelations +msgid "Relations:" +msgstr "" + #: codystrconsts.crsreport msgid "Report" msgstr "Звіт" @@ -603,6 +691,14 @@ msgid "Save to file %s" msgstr "" +#: codystrconsts.crsscanning +msgid "Scanning ..." +msgstr "" + +#: codystrconsts.crsscanningsunits +msgid "Scanning: %s units ..." +msgstr "" + #: codystrconsts.crssearching msgid "searching ..." msgstr "пошук ..." @@ -735,6 +831,10 @@ msgid "Unit shared libraries" msgstr "Спільні бібліотеки модулів" +#: codystrconsts.crsunitss +msgid "Units: %s" +msgstr "" + #: codystrconsts.crsunitstaticlibraries msgid "Unit static libraries" msgstr "Статичні бібліотеки модулів" diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/newidewnddlg.pas lazarus-1.6+dfsg/components/codetools/ide/newidewnddlg.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/newidewnddlg.pas 2012-05-04 08:00:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/newidewnddlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LazLogger, LazUTF8, CodeCache, CodeToolManager, + Classes, SysUtils, LazFileUtils, LazLogger, LazUTF8, CodeCache, CodeToolManager, Forms, Controls, Graphics, Dialogs, StdCtrls, ProjectIntf, MacroIntf, IDEDialogs, CodyStrConsts; @@ -130,11 +130,11 @@ debugln('Source: =================================================='); debugln(Src); debugln('=========================================================='); - exit; + exit(''); end; if EndPos<1 then begin debugln(['ERROR: TFileDescIDEDockableWindow.ExtractTemplate marker "'+EndMarker+'" not found']); - exit; + exit(''); end; inc(StartPos,length(StartMarker)); Result:=UTF8Trim(copy(Src,StartPos,EndPos-StartPos)); diff -Nru lazarus-1.4.4+dfsg/components/codetools/ide/ppulistdlg.pas lazarus-1.6+dfsg/components/codetools/ide/ppulistdlg.pas --- lazarus-1.4.4+dfsg/components/codetools/ide/ppulistdlg.pas 2012-05-04 08:00:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ide/ppulistdlg.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,15 +30,15 @@ interface uses - Classes, SysUtils, contnrs, math, LCLProc, FileUtil, LResources, Forms, - Controls, Graphics, Dialogs, ButtonPanel, Grids, StdCtrls, AvgLvlTree, + Classes, SysUtils, contnrs, math, LCLProc, FileUtil, Forms, + Controls, Dialogs, ButtonPanel, Grids, StdCtrls, AvgLvlTree, ExtCtrls, ComCtrls, // IDEIntf ProjectIntf, LazIDEIntf, IDEDialogs, IDEWindowIntf, PackageIntf, // codetools - BasicCodeTools, FileProcs, CodyStrConsts, CodeToolManager, CodeCache, - PPUParser, PPUCodeTools, DefineTemplates, + BasicCodeTools, FileProcs, LazFileUtils, LazFileCache, CodyStrConsts, + CodeToolManager, CodeCache, PPUParser, PPUCodeTools, DefineTemplates, CodyUtils; const diff -Nru lazarus-1.4.4+dfsg/components/codetools/identcompletiontool.pas lazarus-1.6+dfsg/components/codetools/identcompletiontool.pas --- lazarus-1.4.4+dfsg/components/codetools/identcompletiontool.pas 2015-02-21 09:06:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/identcompletiontool.pas 2015-11-16 21:28:38.000000000 +0000 @@ -48,11 +48,11 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, typinfo, FileProcs, CodeTree, CodeAtom, CodeCache, - CustomCodeTool, CodeToolsStrConsts, KeywordFuncLists, BasicCodeTools, - LinkScanner, AvgLvlTree, AVL_Tree, CodeToolMemManager, DefineTemplates, SourceChanger, - FindDeclarationTool, PascalReaderTool, PascalParserTool, CodeToolsStructs, - ExprEval; + Classes, SysUtils, typinfo, FileProcs, LazFileUtils, + CodeTree, CodeAtom, CodeCache, CustomCodeTool, CodeToolsStrConsts, + KeywordFuncLists, BasicCodeTools, LinkScanner, AvgLvlTree, AVL_Tree, + SourceChanger, FindDeclarationTool, PascalReaderTool, PascalParserTool, + CodeToolsStructs, ExprEval, LazDbgLog; type TIdentCompletionTool = class; @@ -99,7 +99,8 @@ iliIsExperimental, iliIsUnimplemented, iliIsLibrary, - iliAtCursor // the item is the identifier at the completion + iliAtCursor, // the item is the identifier at the completion + iliNeedsAmpersand //the item has to be prefixed with '&' ); TIdentListItemFlags = set of TIdentListItemFlag; @@ -112,6 +113,8 @@ function CalcMemSize: PtrUInt; end; + TIdentifierList = class; + { TIdentifierListItem } TIdentifierListItem = class @@ -141,6 +144,7 @@ Flags: TIdentListItemFlags; BaseExprType: TExpressionType; function AsString: string; + procedure BeautifyIdentifier({%H-}IdentList: TIdentifierList); virtual; function GetDesc: TCodeTreeNodeDesc; constructor Create(NewCompatibility: TIdentifierCompatibility; NewHasChilds: boolean; NewHistoryIndex: integer; @@ -157,7 +161,7 @@ function HasChilds: boolean; function HasIndex: boolean; function IsFunction: boolean; - function IsContructor: boolean; + function IsConstructor: boolean; function IsDestructor: boolean; function IsAbstractMethod: boolean; function TryIsAbstractMethod: boolean; @@ -168,13 +172,30 @@ function GetNodeHash(ANode: TCodeTreeNode): string; function CompareParamList(CompareItem: TIdentifierListItem): integer; function CompareParamList(CompareItem: TIdentifierListSearchItem): integer; - function CalcMemSize: PtrUInt; + function CalcMemSize: PtrUInt; virtual; public property ParamTypeList: string read GetParamTypeList write SetParamTypeList; property ParamNameList: string read GetParamNameList write SetParamNameList; property ResultType: string read FResultType write SetResultType; property Node: TCodeTreeNode read GetNode write SetNode; end; + TIdentifierListItemClass = class of TIdentifierListItem; + + TUnitNameSpaceIdentifierListItem = class(TIdentifierListItem) + public + FileUnitName: string; + IdentifierStartInUnitName: Integer; + + constructor Create(NewCompatibility: TIdentifierCompatibility; + NewHasChilds: boolean; NewHistoryIndex: integer; + NewIdentifier: PChar; NewLevel: integer; + NewNode: TCodeTreeNode; NewTool: TFindDeclarationTool; + NewDefaultDesc: TCodeTreeNodeDesc; + NewFileUnitName: PChar; + NewIdentifierStartInUnitName: Integer); + function CalcMemSize: PtrUInt; override; + end; + TUnitNameSpaceIdentifierListItemClass = class of TUnitNameSpaceIdentifierListItem; TIdentifierListFlag = ( ilfFilteredListNeedsUpdate, @@ -193,7 +214,8 @@ ilcfNeedsDo, // after context a 'do' is needed. e.g. 'with Form1| do' ilcfIsExpression, // is expression part of statement. e.g. 'if expr' ilcfCanProcDeclaration,// context allows one to declare a procedure/method - ilcfEndOfLine // atom at end of line + ilcfEndOfLine, // atom at end of line + ilcfDontAllowProcedures// context doesn't allow procedures (e.g. in function parameter, after assignment or other operator, in if codition etc.) ); TIdentifierListContextFlags = set of TIdentifierListContextFlag; @@ -219,7 +241,7 @@ FIdentSearchItem: TIdentifierListSearchItem; FPrefix: string; FStartContext: TFindContext; - function CompareIdentListItems(Tree: TAvgLvlTree; Data1, Data2: Pointer): integer; + function CompareIdentListItems({%H-}Tree: TAvgLvlTree; Data1, Data2: Pointer): integer; procedure SetHistory(const AValue: TIdentifierHistoryList); procedure SetSortForHistory(AValue: boolean); procedure SetSortForScope(AValue: boolean); @@ -353,11 +375,14 @@ FBeautifier: TBeautifyCodeOptions; FLastGatheredIdentParent: TCodeTreeNode; FLastGatheredIdentLevel: integer; - FICTClassAndAncestors: TFPList;// list of PCodeXYPosition + FICTClassAndAncestorsAndExtClassOfHelper: TFPList;// list of PCodeXYPosition FIDCTFoundPublicProperties: TAVLTree;// tree of PChar (pointing to the // property names in source) FIDTFoundMethods: TAVLTree;// tree of TCodeTreeNodeExtension Txt=clean text FIDTTreeOfUnitFiles: TAVLTree;// tree of TUnitFileInfo + FIDTTreeOfUnitFiles_NamespacePath: string; + FIDTTreeOfUnitFiles_CaseInsensitive: Boolean; + FIDTTreeOfNamespaces: TAVLTree;// tree of TNameSpaceInfo procedure AddToTreeOfUnitFileInfo(const AFilename: string); procedure AddBaseConstant(const BaseName: PChar); procedure AddBaseType(const BaseName: PChar); @@ -371,10 +396,10 @@ function CollectAllIdentifiers(Params: TFindDeclarationParams; const FoundContext: TFindContext): TIdentifierFoundResult; procedure GatherPredefinedIdentifiers(CleanPos: integer; - const Context: TFindContext); + const Context, GatherContext: TFindContext); procedure GatherUsefulIdentifiers(CleanPos: integer; - const Context: TFindContext); - procedure GatherUnitnames; + const Context, GatherContext: TFindContext); + procedure GatherUnitnames(const NameSpacePath: string = ''); procedure GatherSourceNames(const Context: TFindContext); procedure GatherContextKeywords(const Context: TFindContext; CleanPos: integer; BeautifyCodeOptions: TBeautifyCodeOptions); @@ -387,13 +412,13 @@ ): TCodeXYPosition; procedure FindCollectionContext(Params: TFindDeclarationParams; IdentStartPos: integer; CursorNode: TCodeTreeNode; - out GatherContext: TFindContext; out ContextExprStartPos: LongInt; + out ExprType: TExpressionType; out ContextExprStartPos: LongInt; out StartInSubContext: Boolean); function CollectAllContexts(Params: TFindDeclarationParams; const FoundContext: TFindContext): TIdentifierFoundResult; procedure AddCollectionContext(Tool: TFindDeclarationTool; Node: TCodeTreeNode); - function IsInCompilerDirective(CursorPos: TCodeXYPosition): boolean; + function CheckCursorInCompilerDirective(CursorPos: TCodeXYPosition): boolean; procedure AddCompilerDirectiveMacros(Directive: string); public function GatherAvailableUnitNames(const CursorPos: TCodeXYPosition; @@ -415,6 +440,10 @@ function dbgs(Flag: TIdentifierListContextFlag): string; overload; function dbgs(Flags: TIdentifierListContextFlags): string; overload; +var + CIdentifierListItem: TIdentifierListItemClass = TIdentifierListItem; + CUnitNameSpaceIdentifierListItem: TUnitNameSpaceIdentifierListItemClass = TUnitNameSpaceIdentifierListItem; + implementation const @@ -501,6 +530,27 @@ Result:='['+Result+']'; end; +{ TUnitNameSpaceIdentifierListItem } + +constructor TUnitNameSpaceIdentifierListItem.Create( + NewCompatibility: TIdentifierCompatibility; NewHasChilds: boolean; + NewHistoryIndex: integer; NewIdentifier: PChar; NewLevel: integer; + NewNode: TCodeTreeNode; NewTool: TFindDeclarationTool; + NewDefaultDesc: TCodeTreeNodeDesc; NewFileUnitName: PChar; + NewIdentifierStartInUnitName: Integer); +begin + inherited Create(NewCompatibility, NewHasChilds, NewHistoryIndex, + NewIdentifier, NewLevel, NewNode, NewTool, NewDefaultDesc); + FileUnitName := NewFileUnitName; + IdentifierStartInUnitName := NewIdentifierStartInUnitName; +end; + +function TUnitNameSpaceIdentifierListItem.CalcMemSize: PtrUInt; +begin + Result := inherited CalcMemSize + +MemSizeString(FileUnitName); +end; + { TIdentifierList } function TIdentifierList.CompareIdentListItems(Tree: TAvgLvlTree; Data1, @@ -674,6 +724,14 @@ var AnAVLNode: TAVLTreeNode; begin + if (ilcfDontAllowProcedures in ContextFlags) and (NewItem.GetDesc = ctnProcedure) and + not (NewItem.IsFunction or NewItem.IsConstructor) + then + begin + NewItem.Free; + Exit; + end; + AnAVLNode:=FIdentView.FindKey(NewItem,@CompareIdentListItemsForIdents); if AnAVLNode=nil then begin if History<>nil then @@ -815,7 +873,7 @@ SamePos: Integer; l: Integer; begin - Result:=Prefix; + Result:=OldPrefix; FoundFirst:=false; AnAVLNode:=FItems.FindLowest; while AnAVLNode<>nil do begin @@ -859,7 +917,7 @@ if FCreatedIdentifiers<>nil then begin inc(Result,MemSizeFPList(FCreatedIdentifiers)); for i:=0 to FCreatedIdentifiers.Count-1 do - inc(Result,GetIdentLen(PChar(FCreatedIdentifiers[i]))); + {%H-}inc(Result,GetIdentLen(PChar(FCreatedIdentifiers[i]))); end; if FFilteredList<>nil then begin inc(Result,MemSizeFPList(FFilteredList)); @@ -870,7 +928,7 @@ inc(Result,FHistory.CalcMemSize); end; if FItems<>nil then begin - inc(Result,FItems.Count*SizeOf(TAvgLvlTreeNode)); + {%H-}inc(Result,FItems.Count*SizeOf(TAvgLvlTreeNode)); AvgNode:=FItems.FindLowest; while AvgNode<>nil do begin li:=TIdentifierListItem(AvgNode.Data); @@ -879,7 +937,7 @@ end; end; if FIdentView<>nil then begin - inc(Result,FIdentView.Count*SizeOf(TAVLTreeNode)); + {%H-}inc(Result,FIdentView.Count*SizeOf(TAVLTreeNode)); Node:=FIdentView.FindLowest; while Node<>nil do begin hli:=TIdentHistListItem(Node.Data); @@ -895,7 +953,8 @@ procedure TIdentCompletionTool.AddToTreeOfUnitFileInfo(const AFilename: string); begin - AddToTreeOfUnitFiles(FIDTTreeOfUnitFiles,AFilename,false); + AddToTreeOfUnitFilesOrNamespaces(FIDTTreeOfUnitFiles,FIDTTreeOfNamespaces, + FIDTTreeOfUnitFiles_NamespacePath,AFilename,FIDTTreeOfUnitFiles_CaseInsensitive,false); end; procedure TIdentCompletionTool.AddCompilerProcedure(const AProcName, AParameterList: PChar); @@ -903,10 +962,9 @@ NewItem: TIdentifierListItem; begin //DebugLn(['AddCompilerProcedure ',AProcName,' ',ilcfStartOfStatement in CurrentIdentifierList.ContextFlags]); - if not (ilcfStartOfStatement in CurrentIdentifierList.ContextFlags) then exit; - if not (ilcfStartOfOperand in CurrentIdentifierList.ContextFlags) then exit; + if (ilcfDontAllowProcedures in CurrentIdentifierList.ContextFlags) then exit; - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompUnknown, false, CompilerFuncHistoryIndex, @@ -925,7 +983,7 @@ var NewItem: TIdentifierListItem; begin - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompExact,false,0, CurrentIdentifierList.CreateIdentifier(aKeyWord), 1000,nil,nil,ctnNone); @@ -938,9 +996,7 @@ var NewItem: TIdentifierListItem; begin - if not (ilcfStartOfOperand in CurrentIdentifierList.ContextFlags) then exit; - - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompUnknown, false, CompilerFuncHistoryIndex, @@ -961,7 +1017,7 @@ var NewItem: TIdentifierListItem; begin - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompUnknown, false, CompilerFuncHistoryIndex, @@ -977,7 +1033,7 @@ var NewItem: TIdentifierListItem; begin - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompUnknown, false, CompilerFuncHistoryIndex, @@ -1002,7 +1058,7 @@ FoundClassContext: TFindContext; begin Result:=false; - if FICTClassAndAncestors<>nil then begin + if (FICTClassAndAncestorsAndExtClassOfHelper<>nil) then begin // start of the identifier completion is in a method or class // => all protected ancestor classes are allowed as well. CurClassNode:=FoundContext.Node; @@ -1011,8 +1067,8 @@ CurClassNode:=CurClassNode.Parent; if CurClassNode=nil then exit; FoundClassContext:=CreateFindContext(Params.NewCodeTool,CurClassNode); - if IndexOfFindContext(FICTClassAndAncestors,@FoundClassContext)>=0 then begin - // this class node is the class or one of the ancestors of the class + if IndexOfFindContext(FICTClassAndAncestorsAndExtClassOfHelper,@FoundClassContext)>=0 then begin + // this class node is the class or one of the ancestors of the class or extended class of the helper+ancestors // of the start context of the identifier completion exit(true); end; @@ -1159,11 +1215,16 @@ end; end; end; + + ctnGenericParameter: + Ident:=@FoundContext.Tool.Src[FoundContext.Node.StartPos]; ctnVarDefinition,ctnConstDefinition,ctnEnumIdentifier,ctnLabel,ctnGlobalProperty: Ident:=@FoundContext.Tool.Src[FoundContext.Node.StartPos]; ctnProcedure,ctnProcedureHead: + //do not list class constructors and destructors + if not FoundContext.Tool.NodeIsClassConstructorOrDestructor(FoundContext.Node) then begin Ident:=FoundContext.Tool.GetProcNameIdentifier(FoundContext.Node); NewItem := CurrentIdentifierList.FindIdentifier(Ident,true); @@ -1216,7 +1277,7 @@ ctnRecordCase: Ident:=@FoundContext.Tool.Src[Params.NewCleanPos]; - ctnUseUnit: + ctnUseUnitNamespace,ctnUseUnitClearName: if (FoundContext.Tool=Self) then begin Ident:=@Src[FoundContext.Node.StartPos]; end; @@ -1229,7 +1290,7 @@ end; if Ident=nil then exit; - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompUnknown, false, 0, @@ -1238,6 +1299,11 @@ FoundContext.Node, FoundContext.Tool, ctnNone); + + //Add the '&' character to prefixed identifiers + if (Ident^='&') and (IsIdentStartChar[Ident[1]]) then + Include(NewItem.Flags,iliNeedsAmpersand); + if (FoundContext.Node=CurrentIdentifierList.StartContext.Node) then begin // found identifier is in cursor node Include(NewItem.Flags,iliAtCursor); @@ -1252,7 +1318,7 @@ end; procedure TIdentCompletionTool.GatherPredefinedIdentifiers(CleanPos: integer; - const Context: TFindContext); + const Context, GatherContext: TFindContext); // Add predefined identifiers function StatementLevel: integer; @@ -1273,7 +1339,7 @@ var NewItem: TIdentifierListItem; begin - NewItem:=TIdentifierListItem.Create( + NewItem:=CUnitNameSpaceIdentifierListItem.Create( icompUnknown, false, CompilerFuncHistoryIndex, @@ -1281,7 +1347,9 @@ CompilerFuncLevel, nil, nil, - ctnUseUnit); + ctnUseUnitClearName, + AnUnitName, + 1); CurrentIdentifierList.Add(NewItem); end; @@ -1290,10 +1358,21 @@ ProcNode: TCodeTreeNode; HidddnUnits: String; p: PChar; -begin - if not (ilcfStartOfOperand in CurrentIdentifierList.ContextFlags) then exit; + SystemTool: TFindDeclarationTool; + I: TExpressionTypeDesc; + InSystemContext: Boolean; +begin + if CleanPos=0 then ; + + SystemTool := FindCodeToolForUsedUnit('System','',False); + InSystemContext := + (ilcfStartOfOperand in CurrentIdentifierList.ContextFlags) or + ((ilcfStartIsSubIdent in CurrentIdentifierList.ContextFlags) and + (GatherContext.Tool<>nil) and (GatherContext.Node<>nil) and (SystemTool<>nil) and + (GatherContext.Tool = SystemTool) and (GatherContext.Node = SystemTool.FindInterfaceNode)); - if Context.Node.Desc in AllPascalStatements then begin + if InSystemContext and (Context.Node.Desc in AllPascalStatements) then + begin // see fpc/compiler/psystem.pp AddCompilerProcedure('Assert','Condition:Boolean;const Message:String'); AddCompilerFunction('Assigned','P:Pointer','Boolean'); @@ -1328,6 +1407,8 @@ AddCompilerFunction('Seg','var X','LongInt'); AddCompilerProcedure('SetLength','var S:String;NewLength:Integer'); AddCompilerProcedure('SetLength','var A:Array;NewLength:Integer'); + if Scanner.Values.IsDefined('FPC_HAS_CPSTRING') then + AddCompilerProcedure('SetString','out S:RawByteString;Buf:PAnsiChar;Len:SizeInt'); AddCompilerFunction('SizeOf','Identifier','Integer'); AddCompilerFunction('Slice','var A:Array;Count:Integer','Array'); AddCompilerProcedure('Str','const X[:Width[:Decimals]];var S:String'); @@ -1340,12 +1421,17 @@ AddCompilerProcedure('Write','Args:Arguments'); AddCompilerProcedure('WriteLn','Args:Arguments'); AddCompilerProcedure('WriteStr','var S:String;Args:Arguments'); + end; + if (ilcfStartOfOperand in CurrentIdentifierList.ContextFlags) and + (Context.Node.Desc in AllPascalStatements) + then + begin if (ilcfStartOfOperand in CurrentIdentifierList.ContextFlags) and Context.Tool.NodeIsInAMethod(Context.Node) and (not CurrentIdentifierList.HasIdentifier('Self','')) then begin // method body -> add 'Self' - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompUnknown, true, 1, @@ -1361,7 +1447,7 @@ and Context.Tool.NodeIsFunction(ProcNode) and (not CurrentIdentifierList.HasIdentifier('Result','')) then begin // function body -> add 'Result' - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompUnknown, true, 1, @@ -1375,63 +1461,47 @@ end; // system types - AddBaseType('Char'); - AddBaseType('WideChar'); - AddBaseType('Real'); - AddBaseType('Single'); - AddBaseType('Double'); - AddBaseType('Extended'); - AddBaseType('CExtended'); - AddBaseType('Currency'); - AddBaseType('Comp'); - AddBaseType('Int64'); - AddBaseType('Cardinal'); - AddBaseType('QWord'); - AddBaseType('Boolean'); - AddBaseType('ByteBool'); - AddBaseType('WordBool'); - AddBaseType('LongBool'); - AddBaseType('QWordBool'); - AddBaseType('String'); - AddBaseType('AnsiString'); - AddBaseType('ShortString'); - AddBaseType('WideString'); - AddBaseType('UnicodeString'); - AddBaseType('Pointer'); - AddBaseType('LongInt'); - AddBaseType('Word'); - AddBaseType('SmallInt'); - AddBaseType('ShortInt'); - AddBaseType('Byte'); - if not (ilcfStartInStatement in CurrentIdentifierList.ContextFlags) then begin - AddBaseType('File'); - AddBaseType('Text'); - end; - AddBaseConstant('Nil'); - AddBaseConstant('True'); - AddBaseConstant('False'); - - // system units - HidddnUnits:=Scanner.GetHiddenUsedUnits; - if HidddnUnits<>'' then begin - p:=PChar(HidddnUnits); - while p^<>#0 do begin - while p^=',' do inc(p); - if GetIdentLen(p)>0 then - AddSystemUnit(p); - while not (p^ in [',',#0]) do inc(p); + if InSystemContext then + begin + for I := Low(I) to High(I) do + begin + case I of + xtChar..xtPointer, xtLongint..xtByte, xtVariant: + AddBaseType(PChar(ExpressionTypeDescNames[I])); + xtFile, xtText: + if not (ilcfStartInStatement in CurrentIdentifierList.ContextFlags) then + AddBaseType(PChar(ExpressionTypeDescNames[I])); + end; + end; + AddBaseConstant('True'); + AddBaseConstant('False'); + //the nil constant doesn't belong to system context, therefore it is added in next step + end; + if (ilcfStartOfOperand in CurrentIdentifierList.ContextFlags) then + begin + AddBaseConstant(PChar(ExpressionTypeDescNames[xtNil])); + // system units + HidddnUnits:=Scanner.GetHiddenUsedUnits; + if HidddnUnits<>'' then begin + p:=PChar(HidddnUnits); + while p^<>#0 do begin + while p^=',' do inc(p); + if GetIdentLen(p)>0 then + AddSystemUnit(p); + while not (p^ in [',',#0]) do inc(p); + end; end; end; end; procedure TIdentCompletionTool.GatherUsefulIdentifiers(CleanPos: integer; - const Context: TFindContext); + const Context, GatherContext: TFindContext); procedure AddPropertyProc(ProcName: string); var NewItem: TIdentifierListItem; begin - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompExact,true,0, CurrentIdentifierList.CreateIdentifier(ProcName), 0,nil,nil,ctnProcedure); @@ -1442,7 +1512,7 @@ PropertyName: String; begin //debugln(['TIdentCompletionTool.GatherUsefulIdentifiers ',CleanPosToStr(CleanPos),' ',dbgsFC(Context)]); - GatherPredefinedIdentifiers(CleanPos,Context); + GatherPredefinedIdentifiers(CleanPos,Context,GatherContext); if Context.Node.Desc=ctnProperty then begin PropertyName:=ExtractPropName(Context.Node,false); //debugln('TIdentCompletionTool.GatherUsefulIdentifiers Property ',PropertyName); @@ -1470,7 +1540,7 @@ end; end; -procedure TIdentCompletionTool.GatherUnitnames; +procedure TIdentCompletionTool.GatherUnitnames(const NameSpacePath: string); procedure GatherUnitsFromSet; begin @@ -1483,10 +1553,11 @@ BaseDir: String; ANode: TAVLTreeNode; UnitFileInfo: TUnitFileInfo; - NewItem: TIdentifierListItem; + NewItem: TUnitNameSpaceIdentifierListItem; UnitExt: String; SrcExt: String; CurSourceName: String; + NameSpaceInfo: TNameSpaceInfo; begin UnitPath:=''; SrcPath:=''; @@ -1494,37 +1565,60 @@ //DebugLn('TIdentCompletionTool.GatherUnitnames UnitPath="',UnitPath,'" SrcPath="',SrcPath,'"'); BaseDir:=ExtractFilePath(MainFilename); FIDTTreeOfUnitFiles:=nil; + FIDTTreeOfNamespaces:=nil; try // search in unitpath + FIDTTreeOfUnitFiles_CaseInsensitive := true; + FIDTTreeOfUnitFiles_NamespacePath := NameSpacePath; UnitExt:='pp;pas;ppu'; if Scanner.CompilerMode=cmMacPas then UnitExt:=UnitExt+';p'; - GatherUnitFiles(BaseDir,UnitPath,UnitExt,false,true,FIDTTreeOfUnitFiles); + GatherUnitFiles(BaseDir,UnitPath,UnitExt,NameSpacePath,false,true,FIDTTreeOfUnitFiles, FIDTTreeOfNamespaces); // search in srcpath SrcExt:='pp;pas'; if Scanner.CompilerMode=cmMacPas then SrcExt:=SrcExt+';p'; - GatherUnitFiles(BaseDir,SrcPath,SrcExt,false,true,FIDTTreeOfUnitFiles); + GatherUnitFiles(BaseDir,SrcPath,SrcExt,NameSpacePath,false,true,FIDTTreeOfUnitFiles, FIDTTreeOfNamespaces); // add unitlinks GatherUnitsFromSet; // create list CurSourceName:=GetSourceName; - ANode:=FIDTTreeOfUnitFiles.FindLowest; - while ANode<>nil do begin - UnitFileInfo:=TUnitFileInfo(ANode.Data); - if CompareIdentifiers(PChar(Pointer(UnitFileInfo.FileUnitName)), - PChar(Pointer(CurSourceName)))<>0 - then begin - NewItem:=TIdentifierListItem.Create( + if FIDTTreeOfUnitFiles<> nil then + begin + ANode:=FIDTTreeOfUnitFiles.FindLowest; + while ANode<>nil do begin + UnitFileInfo:=TUnitFileInfo(ANode.Data); + if CompareText(PChar(Pointer(UnitFileInfo.FileUnitName)), Length(UnitFileInfo.FileUnitName), + PChar(Pointer(CurSourceName)), Length(CurSourceName), False)<>0 + then begin + NewItem:=CUnitNameSpaceIdentifierListItem.Create( + icompCompatible,true,0, + CurrentIdentifierList.CreateIdentifier(UnitFileInfo.FileUnitNameWithoutNamespace), + 0,nil,nil,ctnUnit, PChar(UnitFileInfo.FileUnitName), UnitFileInfo.IdentifierStartInUnitName); + if NewItem.IdentifierStartInUnitName < 1 then + NewItem.IdentifierStartInUnitName := 1; + CurrentIdentifierList.Add(NewItem); + end; + ANode:=FIDTTreeOfUnitFiles.FindSuccessor(ANode); + end; + end; + if FIDTTreeOfNamespaces<>nil then + begin + ANode:=FIDTTreeOfNamespaces.FindLowest; + while ANode<>nil do begin + NameSpaceInfo:=TNameSpaceInfo(ANode.Data); + NewItem:=CUnitNameSpaceIdentifierListItem.Create( icompCompatible,true,0, - CurrentIdentifierList.CreateIdentifier(UnitFileInfo.FileUnitName), - 0,nil,nil,ctnUnit); + CurrentIdentifierList.CreateIdentifier(NameSpaceInfo.NameSpace), + 0,nil,nil,ctnUseUnitNamespace, PChar(NameSpaceInfo.UnitName), + NameSpaceInfo.IdentifierStartInUnitName); CurrentIdentifierList.Add(NewItem); + ANode:=FIDTTreeOfNamespaces.FindSuccessor(ANode); end; - ANode:=FIDTTreeOfUnitFiles.FindSuccessor(ANode); end; finally FreeTreeOfUnitFiles(FIDTTreeOfUnitFiles); + FreeTreeOfUnitFiles(FIDTTreeOfNamespaces); end; end; @@ -1534,7 +1628,7 @@ var NewItem: TIdentifierListItem; begin - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompExact,true,0, CurrentIdentifierList.CreateIdentifier(SrcName), 0,nil,nil,Context.Node.Desc); @@ -1580,7 +1674,7 @@ NewItem: TIdentifierListItem; begin KeyWord:=BeautifyCodeOptions.BeautifyKeyWord(Keyword); - NewItem:=TIdentifierListItem.Create( + NewItem:=CIdentifierListItem.Create( icompExact,false,0, CurrentIdentifierList.CreateIdentifier(Keyword), 1000,nil,nil,ctnNone); @@ -1685,6 +1779,7 @@ case Node.Desc of ctnClass,ctnObject,ctnRecordType,ctnObjCCategory,ctnObjCClass, + ctnClassHelper, ctnRecordHelper, ctnTypeHelper, ctnClassPrivate,ctnClassProtected,ctnClassPublic,ctnClassPublished: begin Add('public'); @@ -1942,7 +2037,7 @@ procedure TIdentCompletionTool.FindCollectionContext( Params: TFindDeclarationParams; IdentStartPos: integer; CursorNode: TCodeTreeNode; - out GatherContext: TFindContext; + out ExprType: TExpressionType; out ContextExprStartPos: LongInt; out StartInSubContext: Boolean); @@ -1972,10 +2067,11 @@ end; var - ExprType: TExpressionType; IgnoreCurContext: Boolean; + GatherContext: TFindContext; begin GatherContext:=CreateFindContext(Self,CursorNode); + ExprType := CleanExpressionType; IgnoreCurContext:=false; //DebugLn(['TIdentCompletionTool.FindCollectionContext IdentStartPos=',dbgstr(copy(Src,IdentStartPos,20)),' ',CursorNode.DescAsString]); @@ -2003,17 +2099,21 @@ Params.ContextNode:=CursorNode; Params.SetIdentifier(Self,nil,nil); Params.Flags:=[fdfExceptionOnNotFound, - fdfSearchInParentNodes,fdfSearchInAncestors]; + fdfSearchInParentNodes,fdfSearchInAncestors,fdfSearchInHelpers,fdfTypeType]; if IgnoreCurContext then Params.Flags:=Params.Flags+[fdfIgnoreCurContextNode]; ExprType:=FindExpressionTypeOfTerm(ContextExprStartPos,IdentStartPos, Params,false); - if (ExprType.Desc=xtContext) then begin + if ExprType.Desc=xtContext then begin GatherContext:=ExprType.Context; - debugln(['TIdentCompletionTool.FindCollectionContext ',ExprTypeToString(ExprType)]); + //debugln(['TIdentCompletionTool.FindCollectionContext ',ExprTypeToString(ExprType)]); StartInSubContext:=true; + end else begin + // for example "string.|" + GatherContext:=CleanFindContext; end; end; + ExprType.Context := GatherContext; end; function TIdentCompletionTool.CollectAllContexts( @@ -2076,7 +2176,7 @@ //DebugLn('TIdentCompletionTool.AddCollectionContext ',Node.DescAsString,' ',ExtractNode(Node,[])); end; -function TIdentCompletionTool.IsInCompilerDirective(CursorPos: TCodeXYPosition +function TIdentCompletionTool.CheckCursorInCompilerDirective(CursorPos: TCodeXYPosition ): boolean; var Line: String; @@ -2086,6 +2186,7 @@ Directive: String; ms: TCompilerModeSwitch; cm: TCompilerMode; + OptimizerSwitch: TOptimizerSwitch; begin Result:=false; Line:=CursorPos.Code.GetLine(CursorPos.Y-1,false); @@ -2107,6 +2208,7 @@ or ((CursorPos.X>=InnerStart) and (InnerStart<=length(Line)) and (CursorPos.X<=InnerStart+GetIdentLen(@Line[InnerStart]))) then begin + // at start of directive // see fpc/compiler/scandir.pas (incomplete list, e.g. Define is missing there) AddKeyWord('A1'); AddKeyWord('A2'); @@ -2243,6 +2345,7 @@ AddKeyWord('Z4'); AddKeyWord('ZeroBasedStrings'); end else if InnerStart<=length(Line) then begin + // in parameter of directive Directive:=lowercase(GetIdentifier(@Line[InnerStart])); if (Directive='ifdef') or (Directive='ifndef') @@ -2298,6 +2401,35 @@ AddKeyWord('FPCTargetCPU'); AddKeyWord('FPCVersion'); AddKeyWord('Time'); + AddKeyWord('CurrentRoutine'); // since FPC 3.1+ + end else if (Directive='codepage') then begin + // see fpcsrc/compiler/widestr.pas + AddKeyWord('UTF8'); + AddKeyWord('cp1250'); + AddKeyWord('cp1251'); + AddKeyWord('cp1252'); + AddKeyWord('cp1253'); + AddKeyWord('cp1254'); + AddKeyWord('cp1255'); + AddKeyWord('cp1256'); + AddKeyWord('cp1257'); + AddKeyWord('cp1258'); + AddKeyWord('cp437'); + AddKeyWord('cp646'); + AddKeyWord('cp850'); + AddKeyWord('cp852'); + AddKeyWord('cp856'); + AddKeyWord('cp866'); + AddKeyWord('cp874'); + AddKeyWord('cp8859_1'); + AddKeyWord('cp8859_2'); + AddKeyWord('cp8859_5'); + end else if Directive='interfaces' then begin + AddKeyWord('COM'); + AddKeyWord('CORBA'); + end else if Directive='optimization' then begin + for OptimizerSwitch in TOptimizerSwitch do + AddKeyWord(OptimizerSwitchStr[OptimizerSwitch]); end; end; exit; @@ -2435,6 +2567,8 @@ CursorContext: TFindContext; IdentStartXY: TCodeXYPosition; InFrontOfDirective: Boolean; + ExprType: TExpressionType; + IdentifierPath: string; procedure CheckProcedureDeclarationContext; var @@ -2480,219 +2614,251 @@ Result:=false; ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; try InitCollectIdentifiers(CursorPos,IdentifierList); IdentStartXY:=FindIdentifierStartPos(CursorPos); - if IsInCompilerDirective(IdentStartXY) then exit(true); + if CheckCursorInCompilerDirective(IdentStartXY) then exit(true); ParseSourceTillCollectionStart(IdentStartXY,CleanCursorPos,CursorNode, IdentStartPos,IdentEndPos); - if CleanCursorPos=0 then ; - if IdentStartPos>0 then begin - MoveCursorToCleanPos(IdentStartPos); - ReadNextAtom; - CurrentIdentifierList.StartAtom:=CurPos; - end; + Params:=TFindDeclarationParams.Create(Self,CursorNode); + try + if CleanCursorPos=0 then ; + if IdentStartPos>0 then begin + MoveCursorToCleanPos(IdentStartPos); + ReadNextAtom; + CurrentIdentifierList.StartAtom:=CurPos; + end; - // find context - {$IFDEF CTDEBUG} - DebugLn('TIdentCompletionTool.GatherIdentifiers B', - ' CleanCursorPos=',CleanPosToStr(CleanCursorPos), - ' IdentStartPos=',CleanPosToStr(IdentStartPos),' IdentEndPos=',CleanPosToStr(IdentEndPos), - ' Ident=',copy(Src,IdentStartPos,IdentEndPos-IdentStartPos)); - {$ENDIF} - GatherContext:=CreateFindContext(Self,CursorNode); - CurrentIdentifierList.NewMemberVisibility:=GetClassVisibility(CursorNode); - if CursorNode.Desc in [ctnUsesSection,ctnUseUnit] then begin - GatherUnitNames; - MoveCursorToCleanPos(IdentEndPos); - ReadNextAtom; - if (CurPos.Flag=cafWord) and (not UpAtomIs('IN')) then begin - // add comma - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfNeedsEndComma]; - end; - end else if (CursorNode.Desc in AllSourceTypes) - and (PositionsInSameLine(Src,CursorNode.StartPos,IdentStartPos)) then begin - GatherSourceNames(GatherContext); - end else begin - FindCollectionContext(Params,IdentStartPos,CursorNode, - GatherContext,ContextExprStartPos,StartInSubContext); + MoveCursorToCleanPos(IdentStartPos); + ReadPriorAtom; + IdentifierPath := ''; + while CurPos.Flag = cafPoint do + begin + ReadPriorAtom; + if CurPos.Flag <> cafWord then + Break; + IdentifierPath := GetUpAtom + '.' + IdentifierPath; + ReadPriorAtom; + end; - // find class and ancestors if existing (needed for protected identifiers) - if GatherContext.Tool = Self then - FindContextClassAndAncestors(IdentStartXY, FICTClassAndAncestors); + // find context + {$IFDEF CTDEBUG} + DebugLn('TIdentCompletionTool.GatherIdentifiers B', + ' CleanCursorPos=',CleanPosToStr(CleanCursorPos), + ' IdentStartPos=',CleanPosToStr(IdentStartPos),' IdentEndPos=',CleanPosToStr(IdentEndPos), + ' Ident=',copy(Src,IdentStartPos,IdentEndPos-IdentStartPos)); + {$ENDIF} + GatherContext:=CreateFindContext(Self,CursorNode); + CurrentIdentifierList.NewMemberVisibility:=GetClassVisibility(CursorNode); + if CursorNode.Desc in [ctnUsesSection,ctnUseUnit,ctnUseUnitNamespace,ctnUseUnitClearName] then begin + GatherUnitNames(IdentifierPath); + MoveCursorToCleanPos(IdentEndPos); + ReadNextAtom; + if (CurPos.Flag=cafWord) and (not UpAtomIs('IN')) then begin + // add comma + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfNeedsEndComma]; + end; + end else if (CursorNode.Desc in AllSourceTypes) + and (PositionsInSameLine(Src,CursorNode.StartPos,IdentStartPos)) then begin + GatherSourceNames(GatherContext); + end else begin + FindCollectionContext(Params,IdentStartPos,CursorNode, + ExprType,ContextExprStartPos,StartInSubContext); + //debugln(['TIdentCompletionTool.GatherIdentifiers FindCollectionContext ',ExprTypeToString(ExprType)]); + + GatherContext := ExprType.Context; + // find class and ancestors if existing (needed for protected identifiers) + if GatherContext.Tool = Self then + begin + FindContextClassAndAncestorsAndExtendedClassOfHelper(IdentStartXY, FICTClassAndAncestorsAndExtClassOfHelper); + end; - CursorContext:=CreateFindContext(Self,CursorNode); - GatherContextKeywords(CursorContext,IdentStartPos,Beautifier); + CursorContext:=CreateFindContext(Self,CursorNode); + GatherContextKeywords(CursorContext,IdentStartPos,Beautifier); - // search and gather identifiers in context - if (GatherContext.Tool<>nil) and (GatherContext.Node<>nil) then begin - {$IFDEF CTDEBUG} - DebugLn('TIdentCompletionTool.GatherIdentifiers D CONTEXT: ', - GatherContext.Tool.MainFilename, - ' ',GatherContext.Node.DescAsString, - ' "',StringToPascalConst(copy(GatherContext.Tool.Src,GatherContext.Node.StartPos,50)),'"'); - {$ENDIF} + // check for incomplete context - // gather all identifiers in context - Params.ContextNode:=GatherContext.Node; - Params.SetIdentifier(Self,nil,@CollectAllIdentifiers); - Params.Flags:=[fdfSearchInAncestors,fdfCollect,fdfFindVariable]; - if (Params.ContextNode.Desc=ctnInterface) and StartInSubContext then - Include(Params.Flags,fdfIgnoreUsedUnits); - if not StartInSubContext then - Include(Params.Flags,fdfSearchInParentNodes); - if Params.ContextNode.Desc in AllClasses then - Exclude(Params.Flags,fdfSearchInParentNodes); - {$IFDEF CTDEBUG} - DebugLn('TIdentCompletionTool.GatherIdentifiers F'); - {$ENDIF} - CurrentIdentifierList.Context:=GatherContext; - if GatherContext.Node.Desc=ctnIdentifier then - Params.Flags:=Params.Flags+[fdfIgnoreCurContextNode]; - GatherContext.Tool.FindIdentifierInContext(Params); - end; - - // check for incomplete context - - // context bracket level - CurrentIdentifierList.StartBracketLvl:= - GetBracketLvl(Src,CursorNode.StartPos,IdentStartPos, - Scanner.NestedComments); - if CursorNode.Desc in AllPascalStatements then begin - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfStartInStatement]; - end; - - // context in front of - StartPosOfVariable:=FindStartOfTerm(IdentStartPos,NodeTermInType(CursorNode)); - if StartPosOfVariable>0 then begin - if StartPosOfVariable=IdentStartPos then begin - // cursor is at start of an operand + // context bracket level + CurrentIdentifierList.StartBracketLvl:= + GetBracketLvl(Src,CursorNode.StartPos,IdentStartPos, + Scanner.NestedComments); + if CursorNode.Desc in AllPascalStatements then begin CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfStartOfOperand]; - end else begin - MoveCursorToCleanPos(IdentStartPos); - ReadPriorAtom; - if CurPos.Flag=cafPoint then - // cursor is behind a point - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfStartIsSubIdent]; + CurrentIdentifierList.ContextFlags+[ilcfStartInStatement]; end; - MoveCursorToCleanPos(StartPosOfVariable); - ReadPriorAtom; - CurrentIdentifierList.StartAtomInFront:=CurPos; - if (ilcfStartInStatement in CurrentIdentifierList.ContextFlags) - then begin - // check if LValue - if (CurPos.Flag in [cafSemicolon,cafEnd,cafColon]) - or UpAtomIs('BEGIN') - or UpAtomIs('TRY') or UpAtomIs('FINALLY') or UpAtomIs('EXCEPT') - or UpAtomIs('FOR') or UpAtomIs('DO') or UpAtomIs('THEN') - or UpAtomIs('REPEAT') or UpAtomIs('ASM') or UpAtomIs('ELSE') - then begin + + // context in front of + StartPosOfVariable:=FindStartOfTerm(IdentStartPos,NodeTermInType(CursorNode)); + if StartPosOfVariable>0 then begin + if StartPosOfVariable=IdentStartPos then begin + // cursor is at start of an operand CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfStartOfStatement]; + CurrentIdentifierList.ContextFlags+[ilcfStartOfOperand]; + end else begin + MoveCursorToCleanPos(IdentStartPos); + ReadPriorAtom; + if CurPos.Flag=cafPoint then + // cursor is behind a point + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfStartIsSubIdent]; end; - // check if expression - if UpAtomIs('IF') or UpAtomIs('CASE') or UpAtomIs('WHILE') - or UpAtomIs('UNTIL') + MoveCursorToCleanPos(StartPosOfVariable); + ReadPriorAtom; + CurrentIdentifierList.StartAtomInFront:=CurPos; + if (ilcfStartInStatement in CurrentIdentifierList.ContextFlags) then begin - // todo: check at start of expression, not only in front of variable - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfIsExpression]; + // check if LValue + if (CurPos.Flag in [cafSemicolon,cafEnd,cafColon]) + or UpAtomIs('BEGIN') + or UpAtomIs('TRY') or UpAtomIs('FINALLY') or UpAtomIs('EXCEPT') + or UpAtomIs('FOR') or UpAtomIs('DO') or UpAtomIs('THEN') + or UpAtomIs('REPEAT') or UpAtomIs('ASM') or UpAtomIs('ELSE') + then begin + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfStartOfStatement]; + end; + // check if expression + if UpAtomIs('IF') or UpAtomIs('CASE') or UpAtomIs('WHILE') + or UpAtomIs('UNTIL') + then begin + // todo: check at start of expression, not only in front of variable + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfIsExpression, ilcfDontAllowProcedures]; + end; + // check if procedure is allowed + if CurPos.Flag in [cafComma, cafRoundBracketOpen, cafEdgedBracketOpen, cafEqual, cafOtherOperator] then + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfDontAllowProcedures]; end; end; - end; - // context behind - if (IdentEndPos<SrcLen) then begin - MoveCursorToCleanPos(IdentEndPos); - //debugln(['TIdentCompletionTool.GatherIdentifiers "',dbgstr(Src,IdentStartPos,IdentEndPos-IdentStartPos),'"']); - InFrontOfDirective:=(CurPos.StartPos<SrcLen) and (Src[CurPos.StartPos]='{') - and (Src[CurPos.StartPos+1]='$'); - ReadNextAtom; + // context behind + if (IdentEndPos<SrcLen) then begin + MoveCursorToCleanPos(IdentEndPos); + //debugln(['TIdentCompletionTool.GatherIdentifiers "',dbgstr(Src,IdentStartPos,IdentEndPos-IdentStartPos),'"']); + InFrontOfDirective:=(CurPos.StartPos<SrcLen) and (Src[CurPos.StartPos]='{') + and (Src[CurPos.StartPos+1]='$'); + ReadNextAtom; - // check end of line - if (not InFrontOfDirective) - and (CursorPos.Code.LineColIsOutside(CursorPos.Y,CursorPos.X) - or (not PositionsInSameLine(Src,IdentEndPos,CurPos.StartPos))) - then - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfEndOfLine]; + // check end of line + if (not InFrontOfDirective) + and (CursorPos.Code.LineColIsOutside(CursorPos.Y,CursorPos.X) + or (not PositionsInSameLine(Src,IdentEndPos,CurPos.StartPos))) + then + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfEndOfLine]; - CurrentIdentifierList.StartAtomBehind:=CurPos; - // check if a semicolon is needed or forbidden at the end - if InFrontOfDirective - or (CurrentIdentifierList.StartBracketLvl>0) - or (CurPos.Flag in [cafSemicolon, cafEqual, cafColon, cafComma, - cafPoint, cafRoundBracketOpen, cafRoundBracketClose, - cafEdgedBracketOpen, cafEdgedBracketClose]) - or ((CurPos.Flag in [cafWord,cafNone]) - and (UpAtomIs('ELSE') - or UpAtomIs('THEN') - or UpAtomIs('DO') - or UpAtomIs('TO') - or UpAtomIs('OF') - or WordIsBinaryOperator.DoItCaseInsensitive(Src, - CurPos.StartPos,CurPos.EndPos-CurPos.StartPos))) - then begin - // do not add semicolon - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfNoEndSemicolon]; - end; - // check if in statement - if (ilcfStartInStatement in CurrentIdentifierList.ContextFlags) then - begin - // check if a semicolon is needed at the end - if (not (ilcfNoEndSemicolon in CurrentIdentifierList.ContextFlags)) + CurrentIdentifierList.StartAtomBehind:=CurPos; + // check if a semicolon is needed or forbidden at the end + if InFrontOfDirective + or (CurrentIdentifierList.StartBracketLvl>0) + or (CurPos.Flag in [cafSemicolon, cafEqual, cafColon, cafComma, + cafPoint, cafRoundBracketOpen, cafRoundBracketClose, + cafEdgedBracketOpen, cafEdgedBracketClose]) + or ((CurPos.Flag in [cafWord,cafNone]) + and (UpAtomIs('ELSE') + or UpAtomIs('THEN') + or UpAtomIs('DO') + or UpAtomIs('TO') + or UpAtomIs('OF') + or WordIsBinaryOperator.DoItCaseInsensitive(Src, + CurPos.StartPos,CurPos.EndPos-CurPos.StartPos))) then begin + // do not add semicolon + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfNoEndSemicolon]; + end; + // check if in statement + if (ilcfStartInStatement in CurrentIdentifierList.ContextFlags) then + begin // check if a semicolon is needed at the end - if (CurPos.Flag in [cafEnd]) - or WordIsBlockKeyWord.DoItCaseInsensitive(Src, - CurPos.StartPos,CurPos.EndPos-CurPos.StartPos) - or ((CurPos.Flag=cafWord) - and (not PositionsInSameLine(Src,IdentEndPos,CurPos.StartPos))) + if (not (ilcfNoEndSemicolon in CurrentIdentifierList.ContextFlags)) then begin - // add semicolon - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfNeedsEndSemicolon]; + // check if a semicolon is needed at the end + if (CurPos.Flag in [cafEnd]) + or WordIsBlockKeyWord.DoItCaseInsensitive(Src, + CurPos.StartPos,CurPos.EndPos-CurPos.StartPos) + or ((CurPos.Flag=cafWord) + and (not PositionsInSameLine(Src,IdentEndPos,CurPos.StartPos))) + then begin + // add semicolon + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfNeedsEndSemicolon]; + end; end; end; - end; - // check missing 'do' after 'with' - if CurrentIdentifierList.StartUpAtomInFrontIs('WITH') - and (not CurrentIdentifierList.StartUpAtomBehindIs('DO')) - and (CurrentIdentifierList.StartBracketLvl=0) - and (not (CurrentIdentifierList.StartAtomBehind.Flag in - [cafComma,cafPoint,cafRoundBracketOpen,cafEdgedBracketOpen])) - and (not CurrentIdentifierList.StartUpAtomBehindIs('^')) - then + // check missing 'do' after 'with' + if CurrentIdentifierList.StartUpAtomInFrontIs('WITH') + and (not CurrentIdentifierList.StartUpAtomBehindIs('DO')) + and (CurrentIdentifierList.StartBracketLvl=0) + and (not (CurrentIdentifierList.StartAtomBehind.Flag in + [cafComma,cafPoint,cafRoundBracketOpen,cafEdgedBracketOpen])) + and (not CurrentIdentifierList.StartUpAtomBehindIs('^')) + then + CurrentIdentifierList.ContextFlags:= + CurrentIdentifierList.ContextFlags+[ilcfNeedsDo]; + end else begin + // end of source CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfNeedsDo]; - end else begin - // end of source - CurrentIdentifierList.ContextFlags:= - CurrentIdentifierList.ContextFlags+[ilcfEndOfLine]; - end; + CurrentIdentifierList.ContextFlags+[ilcfEndOfLine]; + end; + + // search and gather identifiers in context + if (GatherContext.Tool<>nil) and (GatherContext.Node<>nil) then begin + {$IFDEF CTDEBUG} + DebugLn('TIdentCompletionTool.GatherIdentifiers D CONTEXT: ', + GatherContext.Tool.MainFilename, + ' ',GatherContext.Node.DescAsString, + ' "',StringToPascalConst(copy(GatherContext.Tool.Src,GatherContext.Node.StartPos,50)),'"'); + {$ENDIF} + + // gather all identifiers in context + Params.ContextNode:=GatherContext.Node; + Params.SetIdentifier(Self,nil,@CollectAllIdentifiers); + Params.Flags:=[fdfSearchInAncestors,fdfCollect,fdfFindVariable,fdfSearchInHelpers]; + if (Params.ContextNode.Desc=ctnInterface) and StartInSubContext then + Include(Params.Flags,fdfIgnoreUsedUnits); + if not StartInSubContext then + Include(Params.Flags,fdfSearchInParentNodes); + if Params.ContextNode.Desc in AllClasses then + Exclude(Params.Flags,fdfSearchInParentNodes); + {$IFDEF CTDEBUG} + DebugLn('TIdentCompletionTool.GatherIdentifiers F'); + {$ENDIF} + CurrentIdentifierList.Context:=GatherContext; + if GatherContext.Node.Desc=ctnIdentifier then + Params.Flags:=Params.Flags+[fdfIgnoreCurContextNode]; + GatherContext.Tool.FindIdentifierInContext(Params); + end else + if ExprType.Desc in xtAllTypeHelperTypes then + begin + // gather all identifiers in cursor context for basic types (strings etc.) + Params.ContextNode:=CursorNode; + Params.SetIdentifier(Self,nil,@CollectAllIdentifiers); + Params.Flags:=[fdfSearchInAncestors,fdfCollect,fdfFindVariable,fdfSearchInHelpers]; + CurrentIdentifierList.Context:=CursorContext; + FindIdentifierInBasicTypeHelpers(ExprType.Desc, Params); + end; - // check for procedure/method declaration context - CheckProcedureDeclarationContext; + // check for procedure/method declaration context + CheckProcedureDeclarationContext; - // add useful identifiers - {$IFDEF CTDEBUG} - DebugLn('TIdentCompletionTool.GatherIdentifiers G'); - {$ENDIF} - GatherUsefulIdentifiers(IdentStartPos,CursorContext); - end; + // add useful identifiers + {$IFDEF CTDEBUG} + DebugLn('TIdentCompletionTool.GatherIdentifiers G'); + {$ENDIF} + GatherUsefulIdentifiers(IdentStartPos,CursorContext,GatherContext); + end; - Result:=true; + Result:=true; + finally + FreeListOfPFindContext(FICTClassAndAncestorsAndExtClassOfHelper); + FreeAndNil(FIDCTFoundPublicProperties); + Params.Free; + ClearIgnoreErrorAfter; + end; finally - FreeListOfPFindContext(FICTClassAndAncestors); - FreeAndNil(FIDCTFoundPublicProperties); - Params.Free; - ClearIgnoreErrorAfter; DeactivateGlobalWriteLock; CurrentIdentifierList:=nil; end; @@ -2768,6 +2934,8 @@ AddCompilerProc('Seg','var X','LongInt'); AddCompilerProc('SetLength','var S:String;NewLength:Integer'); AddCompilerProc('SetLength','var A:Array;NewLength:Integer'); + if Scanner.Values.IsDefined('FPC_HAS_CPSTRING') then + AddCompilerProc('SetString','out S:RawByteString;Buf:PAnsiChar;Len:SizeInt'); AddCompilerProc('SizeOf','Identifier','Integer'); AddCompilerProc('Slice','var A:Array;Count:Integer','Array'); AddCompilerProc('Str','const X[:Width[:Decimals]];var S:String'); @@ -2788,9 +2956,9 @@ var VarNameAtom, ProcNameAtom: TAtomPosition; ParameterIndex: integer; - GatherContext: TFindContext; ContextExprStartPos: LongInt; StartInSubContext: Boolean; + ExprType: TExpressionType; begin Result:=false; // check if in a begin..end block @@ -2830,24 +2998,37 @@ CurrentIdentifierContexts.EndPos:=SrcLen+1; FindCollectionContext(Params,ProcNameAtom.StartPos,CursorNode, - GatherContext,ContextExprStartPos,StartInSubContext); + ExprType,ContextExprStartPos,StartInSubContext); if ContextExprStartPos=0 then ; {$IFDEF VerboseCodeContext} - DebugLn(['CheckContextIsParameter StartInSubContext=',StartInSubContext,' ',GatherContext.Node.DescAsString,' "',copy(GatherContext.Tool.Src,GatherContext.Node.StartPos-20,25),'"']); + DebugLn(['CheckContextIsParameter StartInSubContext=',StartInSubContext,' ',ExprType.Context.Node.DescAsString,' "',copy(ExprType.Context.Tool.Src,GatherContext.Node.StartPos-20,25),'"']); {$ENDIF} // gather declarations of all parameter lists - Params.ContextNode:=GatherContext.Node; + if (ExprType.Context.Node = nil) or (ExprType.Context.Tool = nil) then + begin + if ExprType.Desc in xtAllIdentPredefinedTypes then + begin + ExprType.Context.Node := CursorNode; + ExprType.Context.Tool := Self; + end else + Exit; + end; + + Params.ContextNode:=ExprType.Context.Node; Params.SetIdentifier(Self,@Src[ProcNameAtom.StartPos],@CollectAllContexts); - Params.Flags:=[fdfSearchInAncestors,fdfCollect,fdfFindVariable]; + Params.Flags:=[fdfSearchInAncestors,fdfCollect,fdfFindVariable,fdfSearchInHelpers]; if not StartInSubContext then Include(Params.Flags,fdfSearchInParentNodes); - CurrentIdentifierList.Context:=GatherContext; + CurrentIdentifierList.Context:=ExprType.Context; {$IFDEF VerboseCodeContext} DebugLn('CheckContextIsParameter searching procedures, properties and variables ...'); {$ENDIF} - GatherContext.Tool.FindIdentifierInContext(Params); + if ExprType.Desc in xtAllTypeHelperTypes then + ExprType.Context.Tool.FindIdentifierInBasicTypeHelpers(ExprType.Desc, Params) + else + ExprType.Context.Tool.FindIdentifierInContext(Params); {$IFDEF VerboseCodeContext} DebugLn('CheckContextIsParameter END'); {$ENDIF} @@ -2865,41 +3046,44 @@ CurrentIdentifierContexts:=CodeContexts; ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; try InitCollectIdentifiers(CursorPos,IdentifierList); ParseSourceTillCollectionStart(CursorPos,CleanCursorPos,CursorNode, IdentStartPos,IdentEndPos); - if IdentStartPos=0 then ; - if IdentEndPos=0 then ; + Params:=TFindDeclarationParams.Create(Self, CursorNode); + try + if IdentStartPos=0 then ; + if IdentEndPos=0 then ; + + // find class and ancestors if existing (needed for protected identifiers) + FindContextClassAndAncestorsAndExtendedClassOfHelper(CursorPos,FICTClassAndAncestorsAndExtClassOfHelper); - // find class and ancestors if existing (needed for protected identifiers) - FindContextClassAndAncestors(CursorPos,FICTClassAndAncestors); + if CursorNode<>nil then begin + if not CheckContextIsParameter(Result) then begin + DebugLn(['TIdentCompletionTool.FindCodeContext cursor not at parameter']); + exit; + end; + end; - if CursorNode<>nil then begin - if not CheckContextIsParameter(Result) then begin - DebugLn(['TIdentCompletionTool.FindCodeContext cursor not at parameter']); - exit; + if CurrentIdentifierContexts=nil then begin + // create default + AddCollectionContext(Self,CursorNode); end; - end; - if CurrentIdentifierContexts=nil then begin - // create default - AddCollectionContext(Self,CursorNode); + Result:=true; + finally + if Result then begin + CodeContexts:=CurrentIdentifierContexts; + CurrentIdentifierContexts:=nil; + end else begin + FreeAndNil(CurrentIdentifierContexts); + end; + FreeListOfPFindContext(FICTClassAndAncestorsAndExtClassOfHelper); + FreeAndNil(FIDCTFoundPublicProperties); + Params.Free; + ClearIgnoreErrorAfter; end; - - Result:=true; finally - if Result then begin - CodeContexts:=CurrentIdentifierContexts; - CurrentIdentifierContexts:=nil; - end else begin - FreeAndNil(CurrentIdentifierContexts); - end; - FreeListOfPFindContext(FICTClassAndAncestors); - FreeAndNil(FIDCTFoundPublicProperties); - Params.Free; - ClearIgnoreErrorAfter; DeactivateGlobalWriteLock; FreeAndNil(CurrentIdentifierList); end; @@ -3177,8 +3361,7 @@ EndPos:=CleanCursorPos; //DebugLn(['TIdentCompletionTool.GetValuesOfCaseVariable Expr=',dbgstr(copy(Src,CaseAtom.EndPos,EndPos-CaseAtom.EndPos))]); - Params:=TFindDeclarationParams.Create; - Params.ContextNode:=CursorNode; + Params:=TFindDeclarationParams.Create(Self, CursorNode); Params.Flags:=fdfDefaultForExpressions+[fdfFunctionResult]; ExprType:=FindExpressionTypeOfTerm(CaseAtom.EndPos,EndPos,Params,true); //DebugLn(['TIdentCompletionTool.GetValuesOfCaseVariable Type=',ExprTypeToString(ExprType)]); @@ -3238,9 +3421,9 @@ m: PtrUint; begin inherited CalcMemSize(Stats); - if FICTClassAndAncestors<>nil then - Stats.Add('TIdentCompletionTool.ClassAndAncestors', - FICTClassAndAncestors.Count*(SizeOf(TAVLTreeNode)+SizeOf(TCodeXYPosition))); + if FICTClassAndAncestorsAndExtClassOfHelper<>nil then + Stats.Add('TIdentCompletionTool.ClassAndAncestorsAndExtClassOfHelper', + FICTClassAndAncestorsAndExtClassOfHelper.Count*(SizeOf(TAVLTreeNode)+SizeOf(TCodeXYPosition))); if FIDCTFoundPublicProperties<>nil then Stats.Add('TIdentCompletionTool.FoundPublicProperties', FIDCTFoundPublicProperties.Count*SizeOf(TAVLTreeNode)); @@ -3397,6 +3580,11 @@ +' "'+StringToPascalConst(copy(Tool.Src,ANode.StartPos,50))+'"'; end; +procedure TIdentifierListItem.BeautifyIdentifier(IdentList: TIdentifierList); +begin + // can be overridden +end; + function TIdentifierListItem.GetDesc: TCodeTreeNodeDesc; var ANode: TCodeTreeNode; @@ -3563,7 +3751,7 @@ ANode:=Node; if (ANode<>nil) and (Tool<>nil) then begin Tool.ActivateGlobalWriteLock; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Tool, ANode); try if ANode.HasParentOfType(ctnGenericType) then exit; BaseExprType.Context:=Tool.FindBaseTypeOfNode(Params,ANode); @@ -3618,7 +3806,7 @@ Result := iliIsFunction in Flags; end; -function TIdentifierListItem.IsContructor: boolean; +function TIdentifierListItem.IsConstructor: boolean; var ANode: TCodeTreeNode; begin @@ -3890,7 +4078,7 @@ begin Result:=PtrUInt(InstanceSize); if FItems<>nil then begin - inc(Result,FItems.Count*SizeOf(TAVLTreeNode)); + {%H-}inc(Result,FItems.Count*SizeOf(TAVLTreeNode)); Node:=FItems.FindLowest; while Node<>nil do begin Item:=TIdentHistListItem(Node.Data); @@ -3953,7 +4141,7 @@ function TCodeContextInfo.CalcMemSize: PtrUInt; begin Result:=PtrUInt(InstanceSize) - +PtrUInt(TCodeContextInfoItem)*SizeOf(FItems.Count) + +{%H-}PtrUInt(TCodeContextInfoItem)*SizeOf(FItems.Count) +MemSizeString(FProcName); end; diff -Nru lazarus-1.4.4+dfsg/components/codetools/keywordfunclists.pas lazarus-1.6+dfsg/components/codetools/keywordfunclists.pas --- lazarus-1.4.4+dfsg/components/codetools/keywordfunclists.pas 2014-01-16 05:11:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/keywordfunclists.pas 2015-08-03 22:21:59.000000000 +0000 @@ -172,6 +172,7 @@ IsCommentStartChar, IsCommentEndChar, IsHexNumberChar, // ['0'..'9','a'..'f','A'..'F'] + IsOctNumberChar, // ['0'..'7'] IsEqualOperatorStartChar, // [':','+','-','/','*','<','>'] IsAfterFloatPointChar: // ['0'..'9','e','E'] array[char] of boolean; @@ -836,6 +837,7 @@ IsCommentStartChar[c]:=c in ['/','{','(']; IsCommentEndChar[c]:=c in ['}',')',#13,#10]; IsHexNumberChar[c]:=c in ['0'..'9','a'..'f','A'..'F']; + IsOctNumberChar[c]:=c in ['0'..'7']; IsEqualOperatorStartChar[c]:=c in [':','+','-','/','*','<','>']; IsWordChar[c]:=c in ['a'..'z','A'..'Z']; IsNonWordChar[c]:=(c in [#0..#127]) and (not IsIdentChar[c]); @@ -896,6 +898,7 @@ Add('FAR' ,{$ifdef FPC}@{$endif}AllwaysTrue); Add('FORWARD' ,{$ifdef FPC}@{$endif}AllwaysTrue); Add('INLINE' ,{$ifdef FPC}@{$endif}AllwaysTrue); + Add('INTERRUPT' ,{$ifdef FPC}@{$endif}AllwaysTrue); Add('IOCHECK' ,{$ifdef FPC}@{$endif}AllwaysTrue); Add('LIBRARY' ,{$ifdef FPC}@{$endif}AllwaysTrue); Add('LOCAL' ,{$ifdef FPC}@{$endif}AllwaysTrue); diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.ca.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.ca.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.ca.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.ca.po 2015-12-19 00:06:27.000000000 +0000 @@ -94,7 +94,7 @@ msgstr "node classe sense node pare" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "no s'ha trobat la classe %s%s%s" @@ -431,6 +431,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Directori de l'IDE" @@ -552,13 +556,13 @@ msgstr "directori d'interfície" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "el nom de la classe no és vàlid=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "el nom de la classe no és vàlid: %s%s%s" @@ -588,13 +592,13 @@ msgstr "el tipus no és vàlid" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "el nom de la variable %s%s%s no és vàlid" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "el tipus de la variable %s%s%s no és vàlid" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.cs.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.cs.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.cs.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.cs.po 2015-12-19 00:06:27.000000000 +0000 @@ -96,7 +96,7 @@ msgstr "uzel třídy bez rodičovského uzlu" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "třída %s%s%s nenalezena" @@ -306,7 +306,6 @@ msgstr "očekáván end., ale nalezeno %s" #: codetoolsstrconsts.ctsendofsourcenotfound -#| msgid "End of source not found" msgid "End of source not found." msgstr "Nenalezen konec zdroje." @@ -432,6 +431,10 @@ msgid "HasError" msgstr "HasError" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Adresář IDE" @@ -553,13 +556,13 @@ msgstr "adresář rozhraní" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "neplatné jméno třídy=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "neplatné jméno třídy %s%s%s" @@ -589,13 +592,13 @@ msgstr "neplatný typ" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "neplatné jméno proměnné %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "neplatný typ proměnné %s%s%s" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.de.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.de.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.de.po 2014-07-02 19:59:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.de.po 2015-12-19 00:06:27.000000000 +0000 @@ -97,7 +97,6 @@ msgstr "Klassenknoten ohne Elternknoten" #: codetoolsstrconsts.ctsclassnotfound -#| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "Klasse \"%s\" nicht gefunden" @@ -306,7 +305,6 @@ msgstr "\"End.\" erwartet aber %s gefunden" #: codetoolsstrconsts.ctsendofsourcenotfound -#| msgid "End of source not found" msgid "End of source not found." msgstr "Ende des Quelltexts nicht gefunden" @@ -432,6 +430,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "IDE-Verzeichnis" @@ -553,12 +555,10 @@ msgstr "Interface-Verzeichnis" #: codetoolsstrconsts.ctsinvalidclassname -#| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "ungültiger Klassenname=\"%s\"" #: codetoolsstrconsts.ctsinvalidclassname2 -#| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "ungültiger Klassenname \"%s\"" @@ -587,12 +587,10 @@ msgstr "ungültiger Typ" #: codetoolsstrconsts.ctsinvalidvariablename -#| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "ungültiger Variablenname \"%s\"" #: codetoolsstrconsts.ctsinvalidvariabletype -#| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "ungültiger Variablentyp \"%s\"" @@ -625,6 +623,7 @@ msgstr "Methodenname" #: codetoolsstrconsts.ctsmethodsignaturesnotfoundinclass +#, fuzzy,badformat msgid "Method signature %s not found in class" msgstr "Methodensignatur nicht in Klasse gefunden" @@ -791,6 +790,7 @@ msgstr "Laufzeitbibliothek" #: codetoolsstrconsts.ctsscannedfiles +#, fuzzy,badformat msgid "Scanned files: %s" msgstr "Gescannte Dateien: 5s" @@ -819,7 +819,6 @@ msgstr "Quelle ist keine Unit" #: codetoolsstrconsts.ctssourcenotfoundunit -#| msgid "source not found: unit %s" msgid "source not found: unit %s. Check your FPC source directory." msgstr "Quelltext nicht gefunden: Unit %s. Überprüfen Sie das FPC-Quelltextverzeichnis." @@ -832,7 +831,6 @@ msgstr "Quellpfad-Initialisierung" #: codetoolsstrconsts.ctsstrexpectedbutatomfound -#| msgid "%s expected, but %s found" msgid "expected %s, but %s found" msgstr "%s erwartet aber %s gefunden" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.es.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.es.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.es.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.es.po 2015-06-22 10:02:11.000000000 +0000 @@ -427,6 +427,10 @@ msgid "HasError" msgstr "EsError" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Directorio del IDE" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.fi.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.fi.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.fi.po 2015-01-21 00:40:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.fi.po 2015-06-22 10:02:11.000000000 +0000 @@ -422,6 +422,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "IDE hakemisto" @@ -691,6 +695,7 @@ msgstr "odotettiin operandia, mutta saatiin %s" #: codetoolsstrconsts.ctsoperatorexpectedbutatomfound +msgctxt "codetoolsstrconsts.ctsoperatorexpectedbutatomfound" msgid "operator expected, but %s found" msgstr "odotettiin operaattoria, mutta saatiin %s" @@ -703,6 +708,7 @@ msgstr "odotettiin operaattoria, mutta saatiin %s" #: codetoolsstrconsts.ctsoperatorexpectedbutfound2 +msgctxt "codetoolsstrconsts.ctsoperatorexpectedbutfound2" msgid "operator expected, but %s found" msgstr "odotettiin operaattoria, mutta saatiin %s" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.fr.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.fr.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.fr.po 2015-04-15 20:47:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -1,15 +1,16 @@ msgid "" msgstr "" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-12-18 09:27+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" -"PO-Revision-Date: 2015-04-14 07:54+0100\n" -"Language-Team: <fr@li.org>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.7.5\n" -"Project-Id-Version: codetools\n" -"POT-Creation-Date: \n" -"MIME-Version: 1.0\n" -"Language: fr\n" +"X-Generator: Poedit 1.8.6\n" #: codetoolsstrconsts.crsbracketnotfound msgid "bracket ) not found" @@ -429,6 +430,10 @@ msgid "HasError" msgstr "Contient une erreur" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "\"Helper\" après \"%s\" n'est pas autorisé" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Répertoire de l'EDI" @@ -954,3 +959,4 @@ #: codetoolsstrconsts.ctswordnotfound msgid "\"%s\" not found" msgstr "\"%s\" non trouvé" + diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.he.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.he.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.he.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.he.po 2015-12-19 00:06:27.000000000 +0000 @@ -30,10 +30,12 @@ msgstr "" #: codetoolsstrconsts.ctsaddsdirtoincludepath +#, fuzzy,badformat msgid "adds %s to IncPath" msgstr "מוסיף את s% ל IncPath" #: codetoolsstrconsts.ctsaddsdirtosourcepath +#, fuzzy,badformat msgid "adds %s to SrcPath" msgstr "מוסיף s% ל SrcPath" @@ -46,10 +48,12 @@ msgstr "פרוייקט של LCL" #: codetoolsstrconsts.ctsanonymdefinitionsarenotallowed +#, fuzzy,badformat msgid "Anonymous %s definitions are not allowed" msgstr "הגדרות אנונימיות s% אסורות" #: codetoolsstrconsts.ctsawithoutb +#, fuzzy,badformat msgid "%s without %s" msgstr "ללא" @@ -66,14 +70,17 @@ msgstr "אופרטור בינארי" #: codetoolsstrconsts.ctsbracketcloseexpectedbutatomfound +#, fuzzy,badformat msgid "bracket close expected, but %s found" msgstr "צפויה סגירת סוגריים, אבל s% נמצא" #: codetoolsstrconsts.ctsbracketnotfound +#, fuzzy,badformat msgid "bracket %s not found" msgstr "סוגר s% לא נמצא" #: codetoolsstrconsts.ctsbracketopenexpectedbutatomfound +#, fuzzy,badformat msgid "bracket open expected, but %s found" msgstr "צפויה פתיחת סוגריים, אבל s% נמצא" @@ -94,16 +101,18 @@ msgstr "צומת של מחלקה ללא הורה" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "המחלקה %s%s%s לא נמצאה" #: codetoolsstrconsts.ctsclassofdefinitionnotresolved +#, fuzzy,badformat msgid "\"class of\" definition not resolved: %s" msgstr "ההגדרות של \"class of\" לא פוענחו: s%" #: codetoolsstrconsts.ctsclasssnotfound +#, fuzzy,badformat msgid "Class %s not found" msgstr "המחלקה s% לא נמצאה" @@ -196,6 +205,7 @@ msgstr "" #: codetoolsstrconsts.ctsdefaultparameterexpectedbutatomfound +#, fuzzy,badformat msgid "default parameter expected, but %s found" msgstr "צפוי פרמטר ברירת המחדל, אבל נמצא s%" @@ -232,6 +242,7 @@ msgstr "הגדר מאקרו gtk2" #: codetoolsstrconsts.ctsdefinemacroname +#, fuzzy,badformat msgid "Define Macro %s" msgstr "הגדר מאקרו s%" @@ -260,10 +271,12 @@ msgstr "יחידות המעצב" #: codetoolsstrconsts.ctsdircomponentdoesnotexistsorisdanglingsymlink +#, fuzzy,badformat msgid "a directory component in %s does not exist or is a dangling symlink" msgstr "רכיב בתיקייה s% אינו קיים או שהוא קישור סימבולי מפוקפק" #: codetoolsstrconsts.ctsdircomponentisnotdir +#, fuzzy,badformat msgid "a directory component in %s is not a directory" msgstr "רכיב של תיקייה ב s% אינו תיקייה" @@ -280,6 +293,7 @@ msgstr "תיקיית עורך המסמכים" #: codetoolsstrconsts.ctsduplicateidentifier +#, fuzzy,badformat msgid "duplicate identifier: %s" msgstr "מזהה כפול: s%" @@ -300,6 +314,7 @@ msgstr "" #: codetoolsstrconsts.ctsendofsourceexpectedbutatomfound +#, fuzzy,badformat msgid "expected end., but %s found" msgstr "צפוי .end אבל s% נמצא" @@ -334,6 +349,7 @@ msgstr "שגיאה ברשימת הפרמטרים" #: codetoolsstrconsts.ctsexecuteaccessdeniedforfile +#, fuzzy,badformat msgid "execute access denied for %s" msgstr "הרשאת ריצה הוגדרה עבור s%" @@ -374,6 +390,7 @@ msgstr "סוג הביטוי חייב להיות מחלקה מסוג רשומה" #: codetoolsstrconsts.ctsfilehascircularsymlink +#, fuzzy,badformat msgid "%s has a circular symbolic link" msgstr "יש ל s% קישור סימבולי מעגלי" @@ -386,6 +403,7 @@ msgstr "קדימה" #: codetoolsstrconsts.ctsforwardclassdefinitionnotresolved +#, fuzzy,badformat msgid "Forward class definition not resolved: %s" msgstr "ההגדרות של המחלקה הבאה לא פוענחו: s%" @@ -406,6 +424,7 @@ msgstr "תיקיית הקוד של fpc" #: codetoolsstrconsts.ctsfreepascalsourcesplusdesc +#, fuzzy,badformat msgid "Free Pascal Sources, %s" msgstr "מקורות של fpc " @@ -431,6 +450,10 @@ msgid "HasError" msgstr "יש בו שגיאה" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "תיקיית ה IDE " @@ -440,6 +463,7 @@ msgstr "תיקיית IDEIntf" #: codetoolsstrconsts.ctsidentexpectedbutatomfound +#, fuzzy,badformat msgid "identifier expected, but %s found" msgstr "מצפה למזהה, אבל נמצא s%" @@ -448,6 +472,7 @@ msgstr "סוף קובץ לא צפוי (צפוי מזהה)" #: codetoolsstrconsts.ctsidentexpectedbutkeywordfound +#, fuzzy,badformat msgid "identifier expected, but keyword %s found" msgstr "מצפה למזהה, אבלמלת מפתח s% נמצאה" @@ -456,10 +481,12 @@ msgstr "מזהה" #: codetoolsstrconsts.ctsidentifieralreadydefined +#, fuzzy,badformat msgid "Identifier %s already defined" msgstr "מזהה s% כבר הוגדר" #: codetoolsstrconsts.ctsidentifiernotfound +#, fuzzy,badformat msgid "identifier not found: %s" msgstr "מזהה לא נמצא: יחידה s%" @@ -492,10 +519,12 @@ msgstr "אם TargetOS<>win32 אז" #: codetoolsstrconsts.ctsillegalcircleinusedunits +#, fuzzy,badformat msgid "illegal circle using unit: %s" msgstr "מעגל לא חוקי בשימוש ביחדה: s%" #: codetoolsstrconsts.ctsillegalqualifier +#, fuzzy,badformat msgid "illegal qualifier %s found" msgstr "מסייג לא חוקי s% נמצא" @@ -508,6 +537,7 @@ msgstr "התגלה מעגל \"כלול\"" #: codetoolsstrconsts.ctsincludedirectoriesplusdirs +#, fuzzy,badformat msgid "include directories: %s" msgstr "תיקיות \"כלול\": s%" @@ -520,6 +550,7 @@ msgstr "סוגים לא תואמים: צפוי \"%s\" אבל התקבל \"%s\"" #: codetoolsstrconsts.ctsindexparameterexpectedbutatomfound +#, fuzzy,badformat msgid "index parameter expected, but %s found" msgstr "צפוי פרמטר אינדקס, אבל נמצא s%" @@ -552,18 +583,19 @@ msgstr "תיקיית הממשק" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "שם מחלקה לא חוקי = %s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "שם מחלקה לא חוקי %s%s%s" #: codetoolsstrconsts.ctsinvalidflagvaluefordirective +#, fuzzy,badformat msgid "invalid flag value \"%s\" for directive %s" msgstr "ערך דגל לא חוקי \"%s\" עבור הוראה s%" @@ -588,13 +620,13 @@ msgstr "סוג לא חוקי" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "שם משתנה לא חוקי %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "סוג משתנה לא חוקי %s%s%s" @@ -608,6 +640,7 @@ msgstr "מלת מפתח" #: codetoolsstrconsts.ctskeywordexampleexpectedbutatomfound +#, fuzzy,badformat msgid "keyword (e.g. %s) expected, but %s found" msgstr "צפויה מלת מפתח (למשל s%) אבל נמצא s%" @@ -652,10 +685,12 @@ msgstr "מזהה סוג חסר" #: codetoolsstrconsts.ctsnameddirectory +#, fuzzy,badformat msgid "%s Directory" msgstr "תיקייה s%" #: codetoolsstrconsts.ctsnamedproject +#, fuzzy,badformat msgid "%s Project" msgstr "פרוייקט s%" @@ -664,6 +699,7 @@ msgstr "" #: codetoolsstrconsts.ctsnesteddefinitionsarenotallowed +#, fuzzy,badformat msgid "Nested %s definitions are not allowed" msgstr "הגדרות מקוננות s% אסורות" @@ -680,6 +716,7 @@ msgstr "מציין שאינו ברירת המחדל הוגדר פעמיים" #: codetoolsstrconsts.ctsnopascalcodefound +#, fuzzy,badformat msgid "no pascal code found (first token is %s)" msgstr "לא נמצא קוד של פסקל (הסימן הראשון הוא s%)" @@ -696,6 +733,7 @@ msgstr "" #: codetoolsstrconsts.ctsoldmethodnotfound +#, fuzzy,badformat msgid "old method not found: %s" msgstr "מתודה ישנה לא נמצאה: s%" @@ -726,6 +764,7 @@ msgstr "מחכה לאופרטור, אבל נמצא %s" #: codetoolsstrconsts.ctsothercompilerdefines +#, fuzzy,badformat msgid "%s Compiler Defines" msgstr "הגדרת המהדר s%" @@ -766,6 +805,7 @@ msgstr "יחודי למעבד" #: codetoolsstrconsts.ctsproperttypeexpectedbutatomfound +#, fuzzy,badformat msgid "property type expected, but %s found" msgstr "צפוי סוג התכונה, אבל נמצא s%" @@ -774,10 +814,12 @@ msgstr "התכונה נוכחי לא נמצאה" #: codetoolsstrconsts.ctspropertyspecifieralreadydefined +#, fuzzy,badformat msgid "property specifier already defined: %s" msgstr "מציין התכונה כבר מוגדר: s%" #: codetoolsstrconsts.ctsqualifierexpectedbutatomfound +#, fuzzy,badformat msgid "qualifier expected but %s found" msgstr "צפוי מסייג אבל s% נמצא" @@ -798,6 +840,7 @@ msgstr "קבצים סרוקים: %s" #: codetoolsstrconsts.ctssemicolonafterpropspecmissing +#, fuzzy,badformat msgid "; expected after \"%s\" property specifier, but %s found" msgstr "צפוי נקודה פסיק אחרי מציין תכונה s%, אבל נמצא s%" @@ -806,10 +849,12 @@ msgstr "נקודה פסיק לא נמצא" #: codetoolsstrconsts.ctssetsincpathto +#, fuzzy,badformat msgid "sets IncPath to %s" msgstr "קובע את s% כ IncPath " #: codetoolsstrconsts.ctssetssrcpathto +#, fuzzy,badformat msgid "sets SrcPath to %s" msgstr "קובע את IncPath ל s% " @@ -822,7 +867,7 @@ msgstr "הקוד אינו יחידה" #: codetoolsstrconsts.ctssourcenotfoundunit -#, fuzzy +#, fuzzy,badformat #| msgid "source not found: unit %s" msgid "source not found: unit %s. Check your FPC source directory." msgstr "הקוד לא נמצא: יחידה s%" @@ -836,7 +881,7 @@ msgstr "איתחול של SrcPath" #: codetoolsstrconsts.ctsstrexpectedbutatomfound -#, fuzzy +#, fuzzy,badformat #| msgid "%s expected, but %s found" msgid "expected %s, but %s found" msgstr "מצפה ל s% אבל נמצא s%" @@ -922,6 +967,7 @@ msgstr "אופרטור בלתי צפוי של תת תחום '..' נמצא" #: codetoolsstrconsts.ctsunitnotfound +#, fuzzy,badformat msgid "unit not found: %s" msgstr "יחידה לא נמצאה s%" @@ -930,6 +976,7 @@ msgstr "איתחול של UnitPath" #: codetoolsstrconsts.ctsunknownfunction +#, fuzzy,badformat msgid "Unknown function %s" msgstr "פונקציה לא ידועה s%" @@ -938,10 +985,12 @@ msgstr "(שם קובץ ראשי לא ידוע)" #: codetoolsstrconsts.ctsunknownsectionkeyword +#, fuzzy,badformat msgid "unknown section keyword %s found" msgstr "מלת מפתח s% לא ידוע באזור נמצאה" #: codetoolsstrconsts.ctsunknownsubdescriptor +#, fuzzy,badformat msgid "(unknown subdescriptor %s)" msgstr "(תת-מאפיין לא מוכר s%)" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.hu.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.hu.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.hu.po 2015-06-04 21:52:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -429,6 +429,10 @@ msgid "HasError" msgstr "Hibás" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "A \"helper\" nem következhet %s után" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "IDE könyvtára" @@ -954,3 +958,4 @@ #: codetoolsstrconsts.ctswordnotfound msgid "\"%s\" not found" msgstr "\"%s\" nem található" + diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.id.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.id.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.id.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.id.po 2015-12-19 00:06:27.000000000 +0000 @@ -95,7 +95,7 @@ msgstr "node class tanpa node parent" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "kelas %s%s%s tidak ditemukan" @@ -105,6 +105,7 @@ msgstr "definisi \"class of\" tidak terpecahkan: %s" #: codetoolsstrconsts.ctsclasssnotfound +#, fuzzy,badformat msgid "Class %s not found" msgstr "Kelas %s%s%s tidak ditemukan" @@ -432,6 +433,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Direktori IDE" @@ -553,13 +558,13 @@ msgstr "direktori interface" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "nama kelas tidak benar=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "nama kelas tidak benar %s%s%s" @@ -589,13 +594,13 @@ msgstr "tipe tidak benar" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "nama variabel tidak benar %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "tipe variabel tidak benar %s%s%s" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.it.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.it.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.it.po 2014-10-25 08:56:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.it.po 2015-06-22 10:02:11.000000000 +0000 @@ -427,6 +427,10 @@ msgid "HasError" msgstr "HasError" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Cartella dell'IDE" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.lt.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.lt.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.lt.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.lt.po 2015-12-19 00:06:27.000000000 +0000 @@ -96,7 +96,7 @@ msgstr "klasės mazgas neturi tėvinio mazgo" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "klasė %s%s%s nerasta" @@ -306,7 +306,6 @@ msgstr "tikėtasi „end.“, tačiau aptikta %s" #: codetoolsstrconsts.ctsendofsourcenotfound -#| msgid "End of source not found" msgid "End of source not found." msgstr "Nerasta pirminio kodo pabaiga." @@ -432,6 +431,10 @@ msgid "HasError" msgstr "TuriKlaida" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "IKA aplankas" @@ -493,6 +496,7 @@ msgstr "Jei paskirties OS <> win32, tada" #: codetoolsstrconsts.ctsillegalcircleinusedunits +#, fuzzy,badformat msgid "illegal circle using unit: %s" msgstr "neleistinas naudojamų modulių žiedas" @@ -553,13 +557,13 @@ msgstr "interfeiso aplankas" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "klaidingas klasės pavadinimas=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "klaidingas klasės pavadinimas %s%s%s" @@ -589,13 +593,13 @@ msgstr "klaidingas tipas" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "kintamojo pavadinimas %s%s%s yra klaidingas" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "kintamojo tipas %s%s%s yra klaidingas" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.nl.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.nl.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.nl.po 2014-06-28 22:25:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.nl.po 2015-06-22 10:02:11.000000000 +0000 @@ -431,6 +431,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.pl.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.pl.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.pl.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.pl.po 2015-12-19 00:06:27.000000000 +0000 @@ -98,7 +98,7 @@ msgstr "brakuje nazwy przodka" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "Nie znaleziono klasy %s%s%s" @@ -435,6 +435,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "" @@ -556,13 +560,13 @@ msgstr "katalog interfejsu" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "błędna nazwa klasy=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "błędna nazwa klasy %s%s%s" @@ -592,13 +596,13 @@ msgstr "błędny typ" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "błędna nazwa zmiennej %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "błędny typ zmiennej %s%s%s" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.po 2015-06-22 10:02:11.000000000 +0000 @@ -422,6 +422,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.pt_BR.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.pt_BR.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.pt_BR.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.pt_BR.po 2015-12-19 00:06:27.000000000 +0000 @@ -95,7 +95,7 @@ msgstr "nó classe sem nó pai" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "classe %s%s%s não encontrada" @@ -305,7 +305,6 @@ msgstr "esperado \"end.\", mas %s encontrado" #: codetoolsstrconsts.ctsendofsourcenotfound -#| msgid "End of source not found" msgid "End of source not found." msgstr "Final do fonte não encontrado." @@ -431,6 +430,10 @@ msgid "HasError" msgstr "Há Erros" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Diretório do IDE" @@ -552,13 +555,13 @@ msgstr "diretório da interface" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "nome de classe inválida=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "nome de classe inválida %s%s%s" @@ -588,13 +591,13 @@ msgstr "tipo inválido" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "nome de variável inválida %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "tipo variável inválido %s%s%s" @@ -822,7 +825,6 @@ msgstr "fonte não é uma unidade" #: codetoolsstrconsts.ctssourcenotfoundunit -#| msgid "source not found: unit %s" msgid "source not found: unit %s. Check your FPC source directory." msgstr "fonte não encontrado: unidade %s. Verifique o seu diretório dos fontes FPC." diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.ru.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.ru.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.ru.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.ru.po 2015-12-19 00:06:27.000000000 +0000 @@ -5,9 +5,11 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2014-06-26 02:09+0400\n" +"PO-Revision-Date: 2015-06-25 00:58+0300\n" "Language-Team: \n" "MIME-Version: 1.0\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: codetoolsstrconsts.crsbracketnotfound msgid "bracket ) not found" @@ -94,7 +96,6 @@ msgstr "описание класса без предка" #: codetoolsstrconsts.ctsclassnotfound -#| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "класс \"%s\" не найден" @@ -303,7 +304,6 @@ msgstr "ожидается end., но найдено %s" #: codetoolsstrconsts.ctsendofsourcenotfound -#| msgid "End of source not found" msgid "End of source not found." msgstr "Не найден конец исходного кода." @@ -429,6 +429,10 @@ msgid "HasError" msgstr "Ошибка" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "Модификатор \"helper\" после %s не разрешается" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Каталог IDE" @@ -550,12 +554,10 @@ msgstr "каталог интерфейса" #: codetoolsstrconsts.ctsinvalidclassname -#| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "неверное имя класса=\"%s\"" #: codetoolsstrconsts.ctsinvalidclassname2 -#| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "неверное имя класса \"%s\"" @@ -584,12 +586,10 @@ msgstr "неверный тип" #: codetoolsstrconsts.ctsinvalidvariablename -#| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "неверное имя переменной \"%s\"" #: codetoolsstrconsts.ctsinvalidvariabletype -#| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "неверный тип переменной \"%s\"" @@ -816,7 +816,6 @@ msgstr "исходный код не является модулем" #: codetoolsstrconsts.ctssourcenotfoundunit -#| msgid "source not found: unit %s" msgid "source not found: unit %s. Check your FPC source directory." msgstr "не найден исходный код: модуль %s. Проверьте путь к исходному коду FPC." @@ -829,7 +828,6 @@ msgstr "Инициализация путей к исходному коду" #: codetoolsstrconsts.ctsstrexpectedbutatomfound -#| msgid "%s expected, but %s found" msgid "expected %s, but %s found" msgstr "ожидается %s, но найдено %s" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.sk.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.sk.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.sk.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.sk.po 2015-12-19 00:06:27.000000000 +0000 @@ -95,7 +95,7 @@ msgstr "" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "trieda %s%s%s nenájdená" @@ -430,6 +430,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "" @@ -551,13 +555,13 @@ msgstr "" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "neplatné meno triedy=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "neplatné meno triedy %s%s%s" @@ -587,13 +591,13 @@ msgstr "" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "neplatné meno premennej %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "neplatný typ premennej %s%s%s" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.uk.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.uk.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.uk.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.uk.po 2015-12-19 00:06:27.000000000 +0000 @@ -97,7 +97,7 @@ msgstr "опис класу без предка" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "не знайдений клас %s%s%s" @@ -432,6 +432,10 @@ msgid "HasError" msgstr "HasError" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "Тека IDE" @@ -553,13 +557,13 @@ msgstr "тека інтерфейсу" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "неправильне ім'я класу=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "неправильне ім'я класу %s%s%s" @@ -589,13 +593,13 @@ msgstr "неправильний тип" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "неправильне ім'я змінної %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "неправильний тип змінної %s%s%s" @@ -943,6 +947,7 @@ msgstr "знайдене невідоме ключове слово секції %s" #: codetoolsstrconsts.ctsunknownsubdescriptor +#, fuzzy,badformat msgid "(unknown subdescriptor %s)" msgstr "(Невідомий субдескриптор)" diff -Nru lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.zh_CN.po lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.zh_CN.po --- lazarus-1.4.4+dfsg/components/codetools/languages/codetoolsstrconsts.zh_CN.po 2014-06-26 13:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/languages/codetoolsstrconsts.zh_CN.po 2015-12-19 00:06:27.000000000 +0000 @@ -97,7 +97,7 @@ msgstr "class node without parent node" #: codetoolsstrconsts.ctsclassnotfound -#, fuzzy +#, fuzzy,badformat #| msgid "class %s%s%s not found" msgid "class \"%s\" not found" msgstr "未找到类 %s%s%s" @@ -434,6 +434,10 @@ msgid "HasError" msgstr "" +#: codetoolsstrconsts.ctshelperisnotallowed +msgid "Helper after %s is not allowed" +msgstr "" + #: codetoolsstrconsts.ctsidedirectory msgid "IDE Directory" msgstr "IDE 目录" @@ -555,13 +559,13 @@ msgstr "接口目录" #: codetoolsstrconsts.ctsinvalidclassname -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name=%s%s%s" msgid "invalid class name=\"%s\"" msgstr "无效类名=%s%s%s" #: codetoolsstrconsts.ctsinvalidclassname2 -#, fuzzy +#, fuzzy,badformat #| msgid "invalid class name %s%s%s" msgid "invalid class name \"%s\"" msgstr "无效类名 %s%s%s" @@ -571,6 +575,7 @@ msgstr "invalid flag value \"%s\" for directive %s" #: codetoolsstrconsts.ctsinvalidmode +#, fuzzy,badformat msgid "invalid mode \"%s\"" msgstr "无效模式" @@ -591,13 +596,13 @@ msgstr "无效类型" #: codetoolsstrconsts.ctsinvalidvariablename -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable name %s%s%s" msgid "invalid variable name \"%s\"" msgstr "无效变量名 %s%s%s" #: codetoolsstrconsts.ctsinvalidvariabletype -#, fuzzy +#, fuzzy,badformat #| msgid "invalid variable type %s%s%s" msgid "invalid variable type \"%s\"" msgstr "无效变量类型 %s%s%s" @@ -925,6 +930,7 @@ msgstr "没有子界符 '..' " #: codetoolsstrconsts.ctsunitnotfound +#, fuzzy,badformat msgid "unit not found: %s" msgstr "单元未找到" diff -Nru lazarus-1.4.4+dfsg/components/codetools/lfmtrees.pas lazarus-1.6+dfsg/components/codetools/lfmtrees.pas --- lazarus-1.4.4+dfsg/components/codetools/lfmtrees.pas 2013-06-30 22:05:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/lfmtrees.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,7 +30,8 @@ interface uses - Classes, SysUtils, AVL_Tree, FileProcs, BasicCodeTools, CodeCache, TypInfo; + Classes, SysUtils, AVL_Tree, FileProcs, LazUtilities, + BasicCodeTools, CodeCache, TypInfo; type { TLFMTreeNode } @@ -60,7 +61,7 @@ procedure Unbind; procedure AddChild(ANode: TLFMTreeNode); function GetIdentifier: string; - procedure FindIdentifier(var IdentStart, IdentEnd: integer); + procedure FindIdentifier(out IdentStart, IdentEnd: integer); function GetPath: string; function Next(SkipChildren: Boolean = False): TLFMTreeNode; end; @@ -878,7 +879,7 @@ Result:=copy(Tree.LFMBuffer.Source,IdentStart,IdentEnd-IdentStart); end; -procedure TLFMTreeNode.FindIdentifier(var IdentStart, IdentEnd: integer); +procedure TLFMTreeNode.FindIdentifier(out IdentStart, IdentEnd: integer); var Src: String; SrcLen: Integer; diff -Nru lazarus-1.4.4+dfsg/components/codetools/linkscanner.pas lazarus-1.6+dfsg/components/codetools/linkscanner.pas --- lazarus-1.4.4+dfsg/components/codetools/linkscanner.pas 2015-03-12 09:45:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/linkscanner.pas 2016-01-08 11:52:30.000000000 +0000 @@ -46,8 +46,17 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, math, CodeToolsStrConsts, CodeToolMemManager, LazFileUtils, - FileProcs, AVL_Tree, ExprEval, SourceLog, KeywordFuncLists, BasicCodeTools; + // RTL + FCL + Classes, SysUtils, math, AVL_Tree, + // CodeTools + CodeToolsStrConsts, CodeToolMemManager, FileProcs, ExprEval, SourceLog, + KeywordFuncLists, BasicCodeTools, + // LazUtils + LazFileUtils, LazUtilities, LazDbgLog; + +var + FPCSystemUnitName: String = 'system'; + DelphiSystemUnitName: String = 'System'; const PascalCompilerDefine = ExternalMacroStart+'Compiler'; @@ -201,7 +210,7 @@ cmsProperty,cmsDefault_inline,cmsExcept,cmsAdvancedRecords], // cmDELPHIUNICODE [cmsClass,cmsObjpas,cmsResult,cmsString_pchar, - cmsPointer_2_procedure,cmsAutoderef,cmsTp_procvar,cmsInitfinal,cmsDefault_ansistring, + cmsPointer_2_procedure,cmsAutoderef,cmsTp_procvar,cmsInitfinal, cmsOut,cmsDefault_para,cmsDuplicate_names,cmsHintdirective, cmsProperty,cmsDefault_inline,cmsExcept,cmsAdvancedRecords, cmsSystemcodepage,cmsDefault_unicodestring], @@ -222,6 +231,33 @@ ); type + // see fpcsrc/compiler/globtype.pas toptimizerswitch + TOptimizerSwitch = ( + cs_opt_none, + cs_opt_level1,cs_opt_level2,cs_opt_level3,cs_opt_level4, + cs_opt_regvar,cs_opt_uncertain,cs_opt_size,cs_opt_stackframe, + cs_opt_peephole,cs_opt_loopunroll,cs_opt_tailrecursion,cs_opt_nodecse, + cs_opt_nodedfa,cs_opt_loopstrength,cs_opt_scheduler,cs_opt_autoinline,cs_useebp,cs_userbp, + cs_opt_reorder_fields,cs_opt_fastmath, + cs_opt_dead_values, + cs_opt_remove_emtpy_proc, + cs_opt_constant_propagate, + cs_opt_dead_store_eliminate, + cs_opt_forcenostackframe + ); + toptimizerswitches = set of toptimizerswitch; +const + OptimizerSwitchStr : array[toptimizerswitch] of string[17] = ('', + 'LEVEL1','LEVEL2','LEVEL3','LEVEL4', + 'REGVAR','UNCERTAIN','SIZE','STACKFRAME', + 'PEEPHOLE','LOOPUNROLL','TAILREC','CSE', + 'DFA','STRENGTH','SCHEDULE','AUTOINLINE','USEEBP','USERBP', + 'ORDERFIELDS','FASTMATH','DEADVALUES','REMOVEEMPTYPROCS', + 'CONSTPROP', + 'DEADSTORE','FORCENOSTACKFRAME' + ); + +type TPascalCompiler = (pcFPC, pcDelphi); type @@ -312,6 +348,41 @@ read GetIncFile write SetIncFile; default; end; + TDirectiveSequenceItemValue = record + CleanPos: integer; + Value: string; + end; + + TSequenceDirective = (sdScopedEnums); + + TDirectiveSequenceItem = class + private + FItems: array of TDirectiveSequenceItemValue; + FLastItem: integer; + public + constructor Create; + procedure Add(const AValue: string; ACleanPos: integer); + function FindValue(const ACleanPos: integer; out Value: string): Boolean; + procedure Clear(FreeMemory: boolean); + function CalcMemSize: PtrUInt; + end; + + TDirectiveSequence = class + private + FDirectives: array[TSequenceDirective] of TDirectiveSequenceItem; + public + constructor Create; + destructor Destroy; override; + + procedure Add(ADirective: TSequenceDirective; const ADirectiveValue: string; + ACleanPos: Integer); + function FindValue(ADirective: TSequenceDirective; + ACleanPos: Integer; out Value: string): Boolean; + procedure Clear(FreeMemory: boolean); + + function CalcMemSize: PtrUInt; + end; + { LinkScanner Token Types } TLSTokenType = ( lsttNone, @@ -427,8 +498,7 @@ procedure HandleDirective; procedure UpdateCleanedSource(NewCopiedSrcPos: integer); function ReturnFromIncludeFile: boolean; - function ParseKeyWord(StartPos, WordLen: integer; LastTokenType: TLSTokenType - ): boolean; + function ParseKeyWord(StartPos: integer; LastTokenType: TLSTokenType): boolean; function DoEndToken: boolean; inline; function DoSourceTypeToken: boolean; inline; function DoInterfaceToken: boolean; inline; @@ -444,6 +514,7 @@ FDirectivesCapacity: integer; FDirectivesSorted: PPLSDirective; // array of PLSDirective to items of FDirectives FDirectiveName: shortstring; + FDirectiveCleanPos: integer; FDirectivesStored: boolean; FMacrosOn: boolean; FMissingIncludeFiles: TMissingIncludeFiles; @@ -457,6 +528,7 @@ FPascalCompiler: TPascalCompiler; FMacros: PSourceLinkMacro; FMacroCount, fMacroCapacity: integer; + FDirectiveSequence: TDirectiveSequence; function GetDirectives(Index: integer): PLSDirective; inline; function GetDirectivesSorted(Index: integer): PLSDirective; inline; procedure SetCompilerMode(const AValue: TCompilerMode); @@ -465,6 +537,8 @@ function InternalIfDirective: boolean; procedure EndSkipping; procedure AddSkipComment(IsStart: boolean); + procedure SetDirectiveValueWithSequence(ADirective: TSequenceDirective; + const ADirectiveValue: string); function IfdefDirective: boolean; function IfCDirective: boolean; @@ -486,6 +560,7 @@ function ShortSwitchDirective: boolean; function ReadNextSwitchDirective: boolean; function LongSwitchDirective: boolean; + function LongSwitchDirectiveWithSequence(const ADirective: TSequenceDirective): boolean; function MacroDirective: boolean; function ModeDirective: boolean; function ModeSwitchDirective: boolean; @@ -575,6 +650,7 @@ property DirectivesStored: boolean read FDirectivesStored; // directives were stored on last scan function FindDirective(aCode: Pointer; aSrcPos: integer; out FirstSortedIndex, LastSortedIndex: integer): boolean; + function GetDirectiveValueAt(ADirective: TSequenceDirective; ACleanPos: integer): string; // source mapping (Cleaned <-> Original) function CleanedSrc: string; @@ -582,8 +658,8 @@ out ACleanPos: integer): integer; // 0=valid CleanPos //-1=CursorPos was skipped, CleanPos between two links // 1=CursorPos beyond scanned code - function CleanedPosToCursor(ACleanedPos: integer; var ACursorPos: integer; - var ACode: Pointer): boolean; + function CleanedPosToCursor(ACleanedPos: integer; out ACursorPos: integer; + out ACode: Pointer): boolean; function CleanedPosToStr(ACleanedPos: integer): string; function LastErrorIsInFrontOfCleanedPos(ACleanedPos: integer): boolean; procedure RaiseLastErrorIfInFrontOfCleanedPos(ACleanedPos: integer); @@ -729,6 +805,9 @@ 'FPC', 'DELPHI' ); +const + DirectiveSequenceName: array [TSequenceDirective] of ShortString = + ('SCOPEDENUMS'); var CompilerModeVars: array[TCompilerMode] of shortstring; @@ -920,6 +999,139 @@ Result:=Dir1^.CleanPos-Dir2^.CleanPos; end; +{ TDirectiveSequenceItem } + +constructor TDirectiveSequenceItem.Create; +begin + FLastItem := -1; +end; + +procedure TDirectiveSequenceItem.Add(const AValue: string; ACleanPos: integer); +begin + if (FLastItem >= 0) and (ACleanPos <= FItems[FLastItem].CleanPos) then + raise Exception.Create('Internal error: TDirectiveSequenceItem.Add: ACleanPos not sorted.'); + if Length(FItems) = 0 then + SetLength(FItems, 1) + else if FLastItem = High(FItems) then + SetLength(FItems, Length(FItems)+Min(128, Length(FItems))); + Inc(FLastItem); + FItems[FLastItem].CleanPos := ACleanPos; + FItems[FLastItem].Value := AValue; +end; + +function TDirectiveSequenceItem.CalcMemSize: PtrUInt; +var + Item: TDirectiveSequenceItemValue; +begin + Result:=PtrUInt(InstanceSize) + +PtrUInt(Length(FItems))*PtrUInt(SizeOf(TDirectiveSequenceItemValue)); + + for Item in FItems do + Inc(Result, MemSizeString(Item.Value)); +end; + +procedure TDirectiveSequenceItem.Clear(FreeMemory: boolean); +begin + if FreeMemory then + SetLength(FItems, 0); + FLastItem := -1; +end; + +function TDirectiveSequenceItem.FindValue(const ACleanPos: integer; out + Value: string): Boolean; + + function BinarySearch: integer; + var + I, Max, Min: Integer; + ResIndex, ResCleanPos: integer; + begin + Max := FLastItem; + Min := 0; + ResIndex := -1; + ResCleanPos := -1; + while (Min <= Max) do + begin + I := (Max+Min) div 2; + if (FItems[I].CleanPos = ACleanPos) then + Exit(I) + else + if (FItems[I].CleanPos < ACleanPos) then + begin + if ResCleanPos < FItems[I].CleanPos then + begin + //store the closest + ResIndex := I; + ResCleanPos := FItems[I].CleanPos; + end; + Min := I + 1; + end else + begin + Max := I - 1; + end; + end; + Result := ResIndex; + end; +var + ItemIndex: integer; +begin + ItemIndex := BinarySearch; + Result := ItemIndex >= 0; + if Result then + Value := FItems[ItemIndex].Value + else + Value := ''; +end; + +{ TDirectiveSequence } + +constructor TDirectiveSequence.Create; +var + I: TSequenceDirective; +begin + for I := Low(FDirectives) to High(FDirectives) do + FDirectives[I] := TDirectiveSequenceItem.Create; +end; + +procedure TDirectiveSequence.Add(ADirective: TSequenceDirective; + const ADirectiveValue: string; ACleanPos: Integer); +begin + FDirectives[ADirective].Add(ADirectiveValue, ACleanPos); +end; + +function TDirectiveSequence.CalcMemSize: PtrUInt; +var + Item: TDirectiveSequenceItem; +begin + Result:=PtrUInt(InstanceSize); + + for Item in FDirectives do + Inc(Result, Item.CalcMemSize); +end; + +procedure TDirectiveSequence.Clear(FreeMemory: boolean); +var + Item: TDirectiveSequenceItem; +begin + for Item in FDirectives do + Item.Clear(FreeMemory); +end; + +destructor TDirectiveSequence.Destroy; +var + Item: TDirectiveSequenceItem; +begin + for Item in FDirectives do + Item.Free; + + inherited Destroy; +end; + +function TDirectiveSequence.FindValue(ADirective: TSequenceDirective; + ACleanPos: Integer; out Value: string): Boolean; +begin + Result := FDirectives[ADirective].FindValue(ACleanPos, Value); +end; + { TLinkScanner } // inline @@ -1081,6 +1293,13 @@ Result:=FDirectivesSorted[Index]; end; +function TLinkScanner.GetDirectiveValueAt(ADirective: TSequenceDirective; + ACleanPos: integer): string; +begin + if not FDirectiveSequence.FindValue(ADirective, ACleanPos, Result) then + Result := FInitValues.Variables[DirectiveSequenceName[ADirective]]; +end; + // inline function TLinkScanner.LinkSize_Inline(Index: integer): integer; var @@ -1194,6 +1413,7 @@ inherited Create; FInitValues:=TExpressionEvaluator.Create; Values:=TExpressionEvaluator.Create; + FDirectiveSequence:=TDirectiveSequence.Create; IncreaseChangeStep; FSourceChangeSteps:=TFPList.Create; FMainCode:=nil; @@ -1213,6 +1433,7 @@ FreeAndNil(FIncludeStack); FreeAndNil(FSourceChangeSteps); FreeAndNil(Values); + FreeAndNil(FDirectiveSequence); FreeAndNil(FInitValues); ReAllocMem(FLinks,0); inherited Destroy; @@ -1340,6 +1561,7 @@ if FDirectivesSorted<>nil then FDirectivesSorted[0]:=nil; end; + FDirectiveSequence.Clear(FreeMemory); end; procedure TLinkScanner.DemandStoreDirectives; @@ -1487,6 +1709,7 @@ var DirStart, DirLen: integer; CurDirective: PLSDirective; begin + FDirectiveCleanPos:=CommentStartPos-CopiedSrcPos+CleanedLen; if StoreDirectives then begin if FDirectivesCount=FDirectivesCapacity then begin // grow @@ -1500,7 +1723,7 @@ CurDirective^.Kind:=lsdkNone; CurDirective^.Code:=Code; CurDirective^.SrcPos:=CommentStartPos; - CurDirective^.CleanPos:=CommentStartPos-CopiedSrcPos+CleanedLen; + CurDirective^.CleanPos:=FDirectiveCleanPos; if FSkippingDirectives=lssdNone then CurDirective^.State:=lsdsActive else @@ -1603,6 +1826,30 @@ end; end; end; + '&': + begin + // identifier with "&" character or an octal number + inc(p); + case p^ of + '_','A'..'Z','a'..'z'://identifier: &uses + begin + inc(p); + while IsIdentChar[p^] do + inc(p); + TokenType:=lsttWord; + end; + '0'..'7'://octal number: &10 + begin + inc(p); + while IsOctNumberChar[p^] do + inc(p); + TokenType:=lsttNone; + end; + else + TokenType:=lsttNone; + end; + SrcPos:=p-PChar(Src)+1; + end; '''','#': begin TokenType:=lsttStringConstant; @@ -1836,7 +2083,7 @@ //debugln(['TLinkScanner.Scan Token ',dbgstr(Src,TokenStart,SrcPos-TokenStart)]); ReadNextToken; if TokenType=lsttWord then - ParseKeyWord(TokenStart,SrcPos-TokenStart,LastTokenType); + ParseKeyWord(TokenStart,LastTokenType); //writeln('TLinkScanner.Scan G "',copy(Src,TokenStart,SrcPos-TokenStart),'" LastTokenType=',LastTokenType,' TokenType=',TokenType); if (LastTokenType=lsttEnd) and (TokenType=lsttPoint) then begin @@ -2170,6 +2417,9 @@ if Values<>nil then Stats.Add('TLinkScanner.Values', Values.CalcMemSize(true,FInitValues)); + if FDirectiveSequence<>nil then + Stats.Add('TLinkScanner.FDirectiveSequence', + FDirectiveSequence.CalcMemSize); if FMissingIncludeFiles<>nil then Stats.Add('TLinkScanner.FMissingIncludeFiles', FMissingIncludeFiles.InstanceSize); @@ -2621,8 +2871,8 @@ IfStack:=nil; end; - function InitGuessMisplaced(var CurToken: TToken; ACode: Pointer; - var ASrc: string; var ASrcLen: integer): boolean; + function InitGuessMisplaced(out CurToken: TToken; ACode: Pointer; + out ASrc: string; out ASrcLen: integer): boolean; var ASrcLog: TSourceLog; begin @@ -2698,7 +2948,6 @@ end; function GuessMisplacedIfdefEndifInCode(ACode: Pointer; - StartCursorPos: integer; StartCode: Pointer; var EndCursorPos: integer; var EndCode: Pointer): boolean; var ASrc: string; @@ -2798,7 +3047,7 @@ try while LinkId<LinkCount do begin Result:=GuessMisplacedIfdefEndifInCode(FLinks[LinkID].Code, - StartCursorPos,StartCode,EndCursorPos,EndCode); + EndCursorPos,EndCode); if Result then exit; // search next code LastCode:=FLinks[LinkID].Code; @@ -2824,9 +3073,9 @@ if FHiddenUsedUnits='' then begin // see fpc/compiler/pmodules.pp loaddefaultunits if PascalCompiler=pcDelphi then - FHiddenUsedUnits:='System' + FHiddenUsedUnits:=DelphiSystemUnitName else - FHiddenUsedUnits:='system'; + FHiddenUsedUnits:=FPCSystemUnitName; if InitialValues.IsDefined('VER1_0') then begin if InitialValues.IsDefined('LINUX') then @@ -2927,9 +3176,9 @@ if FDirectiveName<>'' then begin if (SrcPos<=SrcLen) and (Src[SrcPos] in ['-','+']) then begin if Src[SrcPos]='-' then - Values.Variables[FDirectiveName]:='0' + Values.Variables[FDirectiveName] := '0' else - Values.Variables[FDirectiveName]:='1'; + Values.Variables[FDirectiveName] := '1'; inc(SrcPos); Result:=ReadNextSwitchDirective; end else begin @@ -3021,7 +3270,8 @@ else if CompareIdentifiers(p,'REFERENCEINFO')=0 then Result:=LongSwitchDirective; 'S': if CompareIdentifiers(p,'SETC')=0 then Result:=SetCDirective - else if CompareIdentifiers(p,'STACKFRAMES')=0 then Result:=LongSwitchDirective; + else if CompareIdentifiers(p,'STACKFRAMES')=0 then Result:=LongSwitchDirective + else if CompareIdentifiers(p,'SCOPEDENUMS')=0 then Result:=LongSwitchDirectiveWithSequence(sdScopedEnums); 'T': if CompareIdentifiers(p,'THREADING')=0 then Result:=ThreadingDirective else if CompareIdentifiers(p,'TYPEADDRESS')=0 then Result:=LongSwitchDirective @@ -3079,12 +3329,12 @@ while (SrcPos<=SrcLen) and IsWordChar[Src[SrcPos]] do inc(SrcPos); if CompareUpToken('ON',Src,ValStart,SrcPos) then - Values.Variables[FDirectiveName]:='1' + Values.Variables[FDirectiveName] := '1' else if CompareUpToken('OFF',Src,ValStart,SrcPos) then - Values.Variables[FDirectiveName]:='0' + Values.Variables[FDirectiveName] := '0' else if CompareUpToken('PRELOAD',Src,ValStart,SrcPos) and (FDirectiveName='ASSERTIONS') then - Values.Variables[FDirectiveName]:='PRELOAD' + Values.Variables[FDirectiveName] := 'PRELOAD' else if (FDirectiveName='LOCALSYMBOLS') then // ignore "localsymbols <something>" else if (FDirectiveName='RANGECHECKS') then @@ -3098,6 +3348,27 @@ Result:=ReadNextSwitchDirective; end; +function TLinkScanner.LongSwitchDirectiveWithSequence( + const ADirective: TSequenceDirective): boolean; +var ValStart: integer; +begin + if StoreDirectives then + FDirectives[FDirectivesCount-1].Kind:=lsdkLongSwitch; + ReadSpace; + ValStart:=SrcPos; + while (SrcPos<=SrcLen) and IsWordChar[Src[SrcPos]] do + inc(SrcPos); + if CompareUpToken('ON',Src,ValStart,SrcPos) then + SetDirectiveValueWithSequence(ADirective, '1') + else if CompareUpToken('OFF',Src,ValStart,SrcPos) then + SetDirectiveValueWithSequence(ADirective, '0') + else begin + RaiseExceptionFmt(ctsInvalidFlagValueForDirective, + [copy(Src,ValStart,SrcPos-ValStart),FDirectiveName]); + end; + Result:=ReadNextSwitchDirective; +end; + function TLinkScanner.MacroDirective: boolean; var ValStart: LongInt; @@ -3554,6 +3825,7 @@ IncFilename: string; DynamicExtension: Boolean; begin + Result:=false; if StoreDirectives then FDirectives[FDirectivesCount-1].Kind:=lsdkInclude; inc(SrcPos); @@ -4102,7 +4374,7 @@ Result:=SrcPos<=SrcLen; end; -function TLinkScanner.ParseKeyWord(StartPos, WordLen: integer; +function TLinkScanner.ParseKeyWord(StartPos: integer; LastTokenType: TLSTokenType): boolean; var p: PChar; @@ -4240,6 +4512,13 @@ FNestedComments:=cmsNested_comment in CompilerModeSwitches; end; +procedure TLinkScanner.SetDirectiveValueWithSequence( + ADirective: TSequenceDirective; const ADirectiveValue: string); +begin + Values.Variables[DirectiveSequenceName[ADirective]] := ADirectiveValue; + FDirectiveSequence.Add(ADirective, ADirectiveValue, FDirectiveCleanPos); +end; + function TLinkScanner.GetIgnoreMissingIncludeFiles: boolean; begin Result:=lssIgnoreMissingIncludeFiles in FStates; @@ -4391,8 +4670,8 @@ Result:=1; // default: CursorPos beyond/outside scanned code end; -function TLinkScanner.CleanedPosToCursor(ACleanedPos: integer; - var ACursorPos: integer; var ACode: Pointer): boolean; +function TLinkScanner.CleanedPosToCursor(ACleanedPos: integer; out + ACursorPos: integer; out ACode: Pointer): boolean; procedure ConsistencyCheckI(i: integer); begin @@ -4448,6 +4727,8 @@ end; ConsistencyCheckI(1); end; + ACode:=nil; + ACursorPos:=0; end; function TLinkScanner.CleanedPosToStr(ACleanedPos: integer): string; @@ -4488,6 +4769,7 @@ exit; end; ACode:=FLinks[LinkIndex].Code; + CodeIsReadOnly:=false; FOnGetSourceStatus(Self,ACode,CodeIsReadOnly); if CodeIsReadOnly then begin EditError(ctsfileIsReadOnly, ACode); diff -Nru lazarus-1.4.4+dfsg/components/codetools/Makefile.compiled lazarus-1.6+dfsg/components/codetools/Makefile.compiled --- lazarus-1.4.4+dfsg/components/codetools/Makefile.compiled 2015-02-14 09:39:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/Makefile.compiled 2015-10-01 18:40:54.000000000 +0000 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <Makefile Value="2"/> - <Params Value=" -Fu../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);. -MObjFPC -Sci -O1 -g -gl -l -vh- -vewnibq codetools.pas"/> + <Params Value=" -Fu../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);. -MObjFPC -Sci -O1 -g -gl -l -vewnhibq codetools.pas"/> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/Makefile.fpc lazarus-1.6+dfsg/components/codetools/Makefile.fpc --- lazarus-1.4.4+dfsg/components/codetools/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for CodeTools 1.0.1 # -# This file was generated on 3-10-15 +# This file was generated on 1-10-15 [package] name=codetools @@ -11,7 +11,7 @@ [compiler] unittargetdir=units/$(CPU_TARGET)-$(OS_TARGET) unitdir=../../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) . -options= -MObjFPC -Sci -O1 -g -gl -l -vh- -vewnibq $(DBG_OPTIONS) +options= -MObjFPC -Sci -O1 -g -gl -l -vewnhibq $(DBG_OPTIONS) [target] units=codetools.pas diff -Nru lazarus-1.4.4+dfsg/components/codetools/methodjumptool.pas lazarus-1.6+dfsg/components/codetools/methodjumptool.pas --- lazarus-1.4.4+dfsg/components/codetools/methodjumptool.pas 2015-03-03 15:01:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/methodjumptool.pas 2015-10-08 22:20:57.000000000 +0000 @@ -34,22 +34,22 @@ {$I codetools.inc} -{ $DEFINE CTDEBUG} +{off $DEFINE CTDEBUG} uses {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, FileProcs, CodeTree, CodeAtom, PascalParserTool, - StdCodeTools, CodeTemplatesTool, KeywordFuncLists, BasicCodeTools, - LinkScanner, CodeCache, AVL_Tree; + Classes, SysUtils, FileProcs, LazFileUtils, CodeTree, PascalParserTool, + StdCodeTools, KeywordFuncLists, BasicCodeTools, + LinkScanner, CodeCache, PascalReaderTool, AVL_Tree; type { TMethodJumpingCodeTool } - TMethodJumpingCodeTool = class(TCodeTemplatesTool) + TMethodJumpingCodeTool = class(TStandardCodeTool) protected procedure RemoveCorrespondingProcNodes(Tree1, Tree2: TAVLTree; KeepTree1: boolean); @@ -69,8 +69,7 @@ function FindFirstDifferenceNode(SearchForNodes, SearchInNodes: TAVLTree; var DiffTxtPos: integer): TAVLTreeNode; function JumpToMethod(const ProcHead: string; Attr: TProcHeadAttributes; - var NewPos: TCodeXYPosition; var NewTopLine: integer; - IgnoreJumpCentered: boolean): boolean; + var NewPos: TCodeXYPosition; var NewTopLine: integer): boolean; function FindNodeExtInTree(ATree: TAVLTree; const UpperCode: string): TCodeTreeNodeExtension; function CreateSubProcPath(StartNode: TCodeTreeNode; @@ -275,16 +274,16 @@ // search for a proc node with same name and jump to difference in param list // returns true on jumped, false if no target proc found var - SearchedProcHead: string; + SearchedProcHead: TPascalMethodHeader; ProcNode: TCodeTreeNode; begin Result:=false; if SearchForProcNode=nil then exit; - SearchedProcHead:=ExtractProcHead(SearchForProcNode,SearchForProcAttr); + SearchedProcHead:=ExtractProcHeadWithGroup(SearchForProcNode,SearchForProcAttr); {$IFDEF CTDEBUG} - DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Searching ',SearchForProcNode.DescAsString,' "',SearchedProcHead,'" ',ProcHeadAttributesToStr(SearchForProcAttr)); + DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Searching ',SearchForProcNode.DescAsString,' "',SearchedProcHead.Name,'" ',ProcHeadAttributesToStr(SearchForProcAttr)); {$ENDIF} - if SearchedProcHead='' then exit; + if SearchedProcHead.Name='' then exit; ProcNode:=FindProcNode(StartNode,SearchedProcHead,SearchInProcAttr); {$IFDEF CTDEBUG} DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Found:',dbgs(ProcNode<>nil)); @@ -302,11 +301,11 @@ phpWithComments]; SearchForProcAttr:=SearchForProcAttr+[phpWithoutBrackets, phpWithoutParamList]; - SearchedProcHead:=ExtractProcHead(SearchForProcNode,SearchForProcAttr); + SearchedProcHead:=ExtractProcHeadWithGroup(SearchForProcNode,SearchForProcAttr); {$IFDEF CTDEBUG} - DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Searching without params "',SearchedProcHead,'"'); + DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Searching without params "',SearchedProcHead.Name,'"'); {$ENDIF} - if SearchedProcHead='' then exit; + if SearchedProcHead.Name='' then exit; ProcNode:=FindProcNode(StartNode,SearchedProcHead,SearchForProcAttr); {$IFDEF CTDEBUG} DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Found:',dbgs(ProcNode<>nil)); @@ -358,6 +357,7 @@ // first test if in a class ClassNode:=CursorNode.GetNodeOfTypes([ctnClass,ctnClassInterface, ctnDispinterface,ctnObject,ctnRecordType, + ctnClassHelper,ctnRecordHelper,ctnTypeHelper, ctnObjCClass,ctnObjCCategory,ctnObjCProtocol, ctnCPPClass]); if ClassNode<>nil then begin @@ -366,7 +366,7 @@ // and then jumping is a nide feature // => search in all implemented class procedures for the body {$IFDEF CTDEBUG} - DebugLn('TMethodJumpingCodeTool.FindJumpPoint ClasNode=',ClassNode.DescAsString); + DebugLn('TMethodJumpingCodeTool.FindJumpPoint ClassNode=',ClassNode.DescAsString); {$ENDIF} if (ClassNode.SubDesc and ctnsForwardDeclaration)>0 then exit; // parse class and build CodeTreeNodes for all properties/methods @@ -789,7 +789,7 @@ CurClassName: String; begin //debugln(['TMethodJumpingCodeTool.GatherProcNodes START']); - Result:=TAVLTree.Create(@CompareCodeTreeNodeExt); + Result:=TAVLTree.Create(@CompareCodeTreeNodeExtMethodHeaders); if (StartNode=nil) or (StartNode.Parent=nil) then exit; ANode:=StartNode; while (ANode<>nil) do begin @@ -810,7 +810,7 @@ cmp:=false; end; if cmp and (phpIgnoreMethods in Attr) then begin - if (ANode.GetNodeOfTypes([ctnClass,ctnObject,ctnRecordType, + if (ANode.GetNodeOfTypes([ctnClass,ctnObject,ctnRecordType,ctnClassHelper,ctnRecordHelper,ctnTypeHelper, ctnObjCClass,ctnObjCCategory,ctnCPPClass])<>nil) or (ExtractClassNameOfProcNode(ANode,true)<>'') then @@ -825,6 +825,7 @@ with NewNodeExt do begin Node:=ANode; Txt:=CurProcName; + Flags:=Ord(ExtractProcedureGroup(ANode)); end; Result.Add(NewNodeExt); end; @@ -961,7 +962,7 @@ Result:=nil; if (PathIndex>SubProcPath.Count) or (StartNode=nil) then exit; ProcHead:=SubProcPath[PathIndex]; - ProcNode:=FindProcNode(StartNode,ProcHead,Attr); + ProcNode:=FindProcNode(StartNode,ProcHead,mgMethod,Attr); //DebugLn('TMethodJumpingCodeTool.SearchSubProcPath A ProcHead="',ProcHead,'" Found=',dbgs(ProcNode<>nil)); if ProcNode=nil then exit; if PathIndex=SubProcPath.Count-1 then begin @@ -1209,8 +1210,7 @@ function TMethodJumpingCodeTool.JumpToMethod(const ProcHead: string; Attr: TProcHeadAttributes; - var NewPos: TCodeXYPosition; var NewTopLine: integer; - IgnoreJumpCentered: boolean): boolean; + var NewPos: TCodeXYPosition; var NewTopLine: integer): boolean; var SectionNode, CurProcNode: TCodeTreeNode; CurProcHead: string; begin diff -Nru lazarus-1.4.4+dfsg/components/codetools/pascalparsertool.pas lazarus-1.6+dfsg/components/codetools/pascalparsertool.pas --- lazarus-1.4.4+dfsg/components/codetools/pascalparsertool.pas 2015-04-05 19:00:44.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/pascalparsertool.pas 2016-01-18 16:20:43.000000000 +0000 @@ -43,7 +43,7 @@ MemCheck, {$ENDIF} Classes, SysUtils, FileProcs, CodeToolsStrConsts, CodeTree, CodeAtom, ExprEval, - CustomCodeTool, MultiKeyWordListTool, KeywordFuncLists, BasicCodeTools, + CustomCodeTool, MultiKeyWordListTool, KeywordFuncLists, CodeToolsStructs, LinkScanner, CodeCache, AVL_Tree; type @@ -143,7 +143,7 @@ FLastDefineStatic: Boolean; FLastDefineEmbedded: Boolean; FLastDefineTargetCPU: String; - procedure FetchScannerSource(Range: TLinkScannerRange); override; + procedure FetchScannerSource; override; // sections function KeyWordFuncSection: boolean; function KeyWordFuncEndPoint: boolean; @@ -161,8 +161,9 @@ procedure ReadTypeNameAndDefinition; procedure ReadGenericParamList; procedure ReadTypeReference; + procedure ReadClassInterfaceContent; function KeyWordFuncTypeClass: boolean; - function KeyWordFuncTypeClassInterface: boolean; + function KeyWordFuncTypeClassInterface(IntfDesc: TCodeTreeNodeDesc): boolean; function KeyWordFuncTypePacked: boolean; function KeyWordFuncTypeBitPacked: boolean; function KeyWordFuncSpecialize: boolean; @@ -192,7 +193,7 @@ // keyword lists procedure BuildDefaultKeyWordFunctions; override; function ParseType(StartPos: integer): boolean; - function ParseInnerClass(StartPos, WordLen: integer): boolean; + function ParseInnerClass(StartPos: integer): boolean; function UnexpectedKeyWord: boolean; function EndOfSourceExpected: boolean; // read functions @@ -266,7 +267,9 @@ // sections / scan range function FindRootNode(Desc: TCodeTreeNodeDesc): TCodeTreeNode; function FindInterfaceNode: TCodeTreeNode; + function FindMainUsesNode(UseContainsSection: boolean = false): TCodeTreeNode; function FindImplementationNode: TCodeTreeNode; + function FindImplementationUsesNode: TCodeTreeNode; function FindInitializationNode: TCodeTreeNode; function FindFinalizationNode: TCodeTreeNode; function FindMainBeginEndNode: TCodeTreeNode; @@ -274,6 +277,7 @@ function FindSectionNodeAtPos(P: integer): TCodeTreeNode; function FindScanRangeNode(Range: TLinkScannerRange): TCodeTreeNode; function FindScanRangeNodeAtPos(P: integer): TCodeTreeNode; + function FindLastNode: TCodeTreeNode; function NodeHasParentOfType(ANode: TCodeTreeNode; NodeDesc: TCodeTreeNodeDesc): boolean; @@ -397,23 +401,30 @@ 'P': if CompareSrcIdentifiers('CPPCLASS',p) then exit(KeyWordFuncTypeClass); end; 'D': - if CompareSrcIdentifiers('DISPINTERFACE',p) then exit(KeyWordFuncTypeClassInterface); + if CompareSrcIdentifiers('DISPINTERFACE',p) then exit(KeyWordFuncTypeClassInterface(ctnDispinterface)); 'F': case UpChars[p[1]] of 'I': if CompareSrcIdentifiers('FILE',p) then exit(KeyWordFuncTypeFile); 'U': if CompareSrcIdentifiers('FUNCTION',p) then exit(KeyWordFuncTypeProc); end; 'I': - if CompareSrcIdentifiers('INTERFACE',p) then exit(KeyWordFuncTypeClassInterface); + if CompareSrcIdentifiers('INTERFACE',p) then exit(KeyWordFuncTypeClassInterface(ctnClassInterface)); 'L': if CompareSrcIdentifiers('LABEL',p) then exit(KeyWordFuncTypeLabel); 'O': - if CompareSrcIdentifiers('OBJECT',p) - or CompareSrcIdentifiers('OBJCCLASS',p) - or CompareSrcIdentifiers('OBJCCATEGORY',p) then - exit(KeyWordFuncTypeClass) - else if CompareSrcIdentifiers('OBJCPROTOCOL',p) then - exit(KeyWordFuncTypeClassInterface); + begin + if CompareSrcIdentifiers('OBJECT',p) then + exit(KeyWordFuncTypeClass); + if (UpChars[p[1]]='B') and (UpChars[p[2]]='J') and (UpChars[p[3]]='C') + and (Scanner.CompilerModeSwitches*[cmsObjectiveC1,cmsObjectiveC2]<>[]) + then begin + if CompareSrcIdentifiers('OBJCCLASS',p) + or CompareSrcIdentifiers('OBJCCATEGORY',p) then + exit(KeyWordFuncTypeClass) + else if CompareSrcIdentifiers('OBJCPROTOCOL',p) then + exit(KeyWordFuncTypeClassInterface(ctnObjCProtocol)); + end; + end; 'P': case UpChars[p[1]] of 'A': if CompareSrcIdentifiers('PACKED',p) then exit(KeyWordFuncTypePacked); @@ -434,7 +445,7 @@ Result:=KeyWordFuncTypeDefault; end; -function TPascalParserTool.ParseInnerClass(StartPos, WordLen: integer +function TPascalParserTool.ParseInnerClass(StartPos: integer ): boolean; // KeyWordFunctions for parsing in a class/object/record/interface var @@ -1128,6 +1139,7 @@ class var } begin + Result:=false; ReadNextAtom; if UpAtomIs('PROCEDURE') or UpAtomIs('FUNCTION') or UpAtomIs('CONSTRUCTOR') or UpAtomIs('DESTRUCTOR') or UpAtomIs('OPERATOR') then begin @@ -1490,6 +1502,8 @@ function TPascalParserTool.ReadParamType(ExceptionOnError, Extract: boolean; const Attr: TProcHeadAttributes): boolean; // after reading, CurPos is the atom after the type +// Examples: +// Domain: LongInt location 'd0' (only m68k, powerpc) var copying: boolean; IsArrayType: Boolean; @@ -1590,7 +1604,16 @@ else exit; end; if AtomIsChar('<') then - ReadGenericParam; + ReadGenericParam + else if UpAtomIs('LOCATION') + and (Scanner.Values.IsDefined('CPUM68K') or Scanner.Values.IsDefined('CPUPOWERPC')) + then begin + // for example Domain: LongInt location 'd0' + ReadNextAtom; + if not AtomIsStringConstant then + SaveRaiseStringExpectedButAtomFound(ctsStringConstant); + ReadNextAtom; + end; Result:=true; end; @@ -1773,6 +1796,8 @@ SaveRaiseCharExpectedButAtomFound(':'); ReadNextAtom; ReadConstant(true,false,[]); + end else if UpAtomIs('INTERRUPT') then begin + ReadNextAtom; end else if UpAtomIs('SYSCALL') then begin ReadNextAtom; AtomIsIdentifierSaveE; @@ -1979,6 +2004,7 @@ } var IsUses: Boolean; + LastUnitNode: TCodeTreeNode; begin Result:=false; IsUses:=CurNode.Desc=ctnUsesSection; @@ -2002,8 +2028,14 @@ CurNode.Desc:=ctnUseUnit; repeat CurNode.EndPos:=CurPos.EndPos; + CreateChildNode; + LastUnitNode := CurNode; + CurNode.Desc:=ctnUseUnitClearName; + CurNode.EndPos:=CurNode.Parent.EndPos; + EndChildNode; ReadNextAtom; if CurPos.Flag<>cafPoint then break; + LastUnitNode.Desc:=ctnUseUnitNamespace; ReadNextAtom; AtomIsIdentifierSaveE; until false; @@ -2045,6 +2077,7 @@ requires name1, name2, name3; } begin + Result:=false; CreateChildNode; CurNode.Desc:=ctnRequiresSection; repeat @@ -3015,10 +3048,14 @@ function TPascalParserTool.ReadTilVariableEnd( ExceptionOnError, WithAsOperator: boolean): boolean; -{ Examples: +{ After reading CurPos is at atom behind variable. + + Examples: A + A^ A.B^.C[...].D(...).E (...).A + T(...).A @B inherited A A as B @@ -3156,11 +3193,12 @@ end; end; // read statement - ReadNextAtom; if CreateNodes then begin CreateChildNode; + CurNode.StartPos:=CurPos.EndPos; CurNode.Desc:=ctnWithStatement; end; + ReadNextAtom; Result:=ReadTilStatementEnd(ExceptionOnError,CreateNodes); CloseNodes; end; @@ -3176,13 +3214,17 @@ var NeedUndo: Boolean; begin + Result:=false; if CreateNodes then begin CreateChildNode; CurNode.Desc:=ctnOnBlock; end; // read variable name ReadNextAtom; - AtomIsIdentifierSaveE; + if ExceptionOnError then + AtomIsIdentifierSaveE + else if not AtomIsIdentifier then + exit; if CreateNodes then begin // ctnOnIdentifier for the variable or the type CreateChildNode; @@ -3195,7 +3237,10 @@ if CreateNodes then CurNode.Desc:=ctnVarDefinition; ReadNextAtom; - AtomIsIdentifierSaveE; + if ExceptionOnError then + AtomIsIdentifierSaveE + else if not AtomIsIdentifier then + exit; if CreateNodes then begin // ctnIdentifier for the type CreateChildNode; @@ -3208,7 +3253,10 @@ // for example: on Unit.Exception do ; // or: on E:Unit.Exception do ; ReadNextAtom; - AtomIsIdentifierSaveE; + if ExceptionOnError then + AtomIsIdentifierSaveE + else if not AtomIsIdentifier then + exit; if CreateNodes then begin CurNode.EndPos:=CurPos.EndPos; end; @@ -3225,13 +3273,16 @@ end; // read 'do' if not UpAtomIs('DO') then - SaveRaiseStringExpectedButAtomFound('DO'); + if ExceptionOnError then + SaveRaiseStringExpectedButAtomFound('DO') + else + exit; // ctnOnStatement if CreateNodes then begin CreateChildNode; CurNode.Desc:=ctnOnStatement; end; - ReadTilStatementEnd(true,CreateNodes); + ReadTilStatementEnd(ExceptionOnError,CreateNodes); if CreateNodes then begin CurNode.EndPos:=CurPos.EndPos; EndChildNode; // ctnOnStatement @@ -3247,7 +3298,7 @@ if UpAtomIs('ELSE') then begin // for example: on E: Exception do else ; ReadNextAtom; - ReadTilStatementEnd(true,CreateNodes); + ReadTilStatementEnd(ExceptionOnError,CreateNodes); NeedUndo:=false; end; if NeedUndo then @@ -3318,7 +3369,8 @@ end; // optional: hint modifier - ReadHintModifiers([cafSemicolon,cafEqual]); + if CurPos.Flag<>cafSemicolon then + ReadHintModifiers([cafSemicolon,cafEqual]); if (ParentNode.Desc=ctnVarSection) then begin // optional: initial value @@ -3524,7 +3576,7 @@ SaveRaiseExceptionWithHint; UndoReadNextAtom; EndChildNode; - end else if (CurNode.Desc in [ctnProgram,ctnLibrary,ctnImplementation]) then + end else if (CurNode<>nil) and (CurNode.Desc in [ctnProgram,ctnLibrary,ctnImplementation]) then begin ReadNextAtom; if (CurPos.Flag<>cafPoint) then @@ -3722,7 +3774,8 @@ SaveRaiseStringExpectedButAtomFound(ctsStringConstant); ReadConstant(true,false,[]); // read hint modifier - ReadHintModifiers; + if CurPos.Flag<>cafSemicolon then + ReadHintModifiers; // read ; if CurPos.Flag<>cafSemicolon then SaveRaiseCharExpectedButAtomFound(';'); @@ -3863,7 +3916,8 @@ end; ReadConstExpr; // optional: hint modifier - ReadHintModifiers; + if CurPos.Flag<>cafSemicolon then + ReadHintModifiers; if CurPos.Flag=cafSemicolon then begin if (CurNode.Parent.Desc=ctnConstSection) and (CurNode.Parent.Parent.Desc in AllCodeSections) then begin @@ -3953,7 +4007,8 @@ ReadNextAtom; ParseType(CurPos.StartPos); // read hint modifier - ReadHintModifiers; + if CurPos.Flag<>cafSemicolon then + ReadHintModifiers; // read ; if CurPos.Flag<>cafSemicolon then SaveRaiseCharExpectedButAtomFound(';'); @@ -4057,6 +4112,7 @@ TButton controls.TButton TGenericClass<TypeReference,TypeReference> + TGenericClass<TypeReference,TypeReference>.TNestedClass } var SavePos: TAtomPosition; begin @@ -4078,6 +4134,101 @@ CurNode.LastChild := nil; ReadSpecialize(True); CurNode.EndPos := CurPos.EndPos; + while CurPos.Flag=cafPoint do begin + ReadNextAtom; + AtomIsIdentifierSaveE; + ReadNextAtom; + end; +end; + +procedure TPascalParserTool.ReadClassInterfaceContent; +var + IntfDesc: TCodeTreeNodeDesc; + IsJVM: Boolean; +begin + IntfDesc:=CurNode.Desc; + // read content + ReadNextAtom; + if (CurPos.Flag<>cafSemicolon) then begin + if CurPos.Flag=cafWord then begin + if UpAtomIs('EXTERNAL') then begin + IsJVM:=Scanner.Values.IsDefined('CPUJVM'); + if IsJVM or (IntfDesc=ctnObjCProtocol) then begin + // objcprotocol external [name ''] + // cpujvm: class external '' [name ''] + CreateChildNode; + CurNode.Desc:=ctnClassExternal; + ReadNextAtom; + if IsJVM then + ReadConstant(true,false,[]); + if UpAtomIs('NAME') then begin + ReadNextAtom; + ReadConstant(true,false,[]); + end; + CurNode.EndPos:=CurPos.StartPos; + EndChildNode; + end; + end; + end; + if (CurPos.Flag=cafRoundBracketOpen) then begin + // read inheritage brackets + ReadClassInheritance(true); + ReadNextAtom; + end; + if IntfDesc=ctnObjCProtocol then begin + // start the first class section (the one without a keyword) + CreateChildNode; + CurNode.Desc:=ctnClassRequired; + end else if IntfDesc=ctnClassInterface then begin + if CurPos.Flag=cafEdgedBracketOpen then + ReadGUID; + end; + if CurPos.Flag<>cafSemicolon then begin + // parse till "end" of interface/dispinterface/objcprotocol + repeat + if not ParseInnerClass(CurPos.StartPos) then + begin + if CurPos.Flag<>cafEnd then + SaveRaiseStringExpectedButAtomFound('end'); + break; + end; + ReadNextAtom; + until false; + end; + // end last sub section + if CurNode.Desc in AllClassSubSections then begin + CurNode.EndPos:=CurPos.StartPos; + EndChildNode; + end; + // end last class section (public, private, ...) + if CurNode.Desc in AllClassSections then begin + CurNode.EndPos:=CurPos.StartPos; + EndChildNode; + end; + end else begin + // forward definition + CurNode.SubDesc:=CurNode.SubDesc+ctnsForwardDeclaration; + end; + if CurPos.Flag=cafEND then begin + ReadNextAtom; + if CurPos.Flag=cafSemicolon then + ReadNextAtom; + // read post modifiers + if UpAtomIs('EXTERNAL') then begin + ReadNextAtom; + if UpAtomIs('NAME') then begin + ReadNextAtom; + ReadConstant(true,false,[]); + end; + end; + // read hint modifier + ReadHintModifiers; + if CurPos.Flag<>cafSemicolon then + UndoReadNextAtom; + end; + // close class interface + CurNode.EndPos:=CurPos.EndPos; + EndChildNode; end; function TPascalParserTool.KeyWordFuncTypePacked: boolean; @@ -4113,6 +4264,7 @@ ClassDesc: TCodeTreeNodeDesc; ClassNode: TCodeTreeNode; IsHelper: Boolean; + HelperForNode: TCodeTreeNode; begin //debugln(['TPascalParserTool.KeyWordFuncTypeClass ',GetAtom,' ',CleanPosToStr(CurPos.StartPos)]); // class or 'class of' start found @@ -4128,10 +4280,12 @@ ClassDesc:=ctnObjCCategory else if UpAtomIs('CPPCLASS') then ClassDesc:=ctnCPPClass + else if UpAtomIs('TYPE') then + ClassDesc:=ctnTypeType else SaveRaiseStringExpectedButAtomFound('class'); ContextDesc:=CurNode.Desc; - if ClassDesc<>ctnRecordType then begin + if not(ClassDesc in [ctnRecordType, ctnTypeType]) then begin if not (ContextDesc in [ctnTypeDefinition,ctnGenericType]) then SaveRaiseExceptionFmt(ctsAnonymDefinitionsAreNotAllowed,[GetAtom]); @@ -4201,12 +4355,17 @@ EndChildNode; IsForward:=false; end; - end else if UpAtomIs('HELPER') then begin + end else if UpAtomIs('HELPER') + and (ClassDesc in [ctnClass,ctnRecordType,ctnTypeType]) then begin IsHelper:=true; - CreateChildNode; - CurNode.Desc:=ctnClassHelper; - CurNode.EndPos:=CurPos.EndPos; - EndChildNode; + case ClassDesc of + ctnClass: CurNode.Desc:=ctnClassHelper; + ctnRecordType: CurNode.Desc:=ctnRecordHelper; + ctnTypeType: CurNode.Desc:=ctnTypeHelper; + else + SaveRaiseExceptionFmt(ctsHelperIsNotAllowed,[GetAtom]); + end; + ClassDesc:=CurNode.Desc; ReadNextAtom; end; end; @@ -4220,14 +4379,21 @@ if not UpAtomIs('FOR') then SaveRaiseStringExpectedButAtomFound('for'); CreateChildNode; - CurNode.Desc:=ctnClassHelperFor; + CurNode.Desc:=ctnHelperFor; + HelperForNode:=CurNode; + CreateChildNode; + CurNode.Desc:=ctnIdentifier; repeat ReadNextAtom; + if CurNode.StartPos = HelperForNode.StartPos then + CurNode.StartPos:=CurPos.StartPos; AtomIsIdentifierSaveE; CurNode.EndPos:=CurPos.EndPos; + HelperForNode.EndPos:=CurPos.EndPos; ReadNextAtom; until CurPos.Flag<>cafPoint; EndChildNode; + EndChildNode; end; end; if CurPos.Flag=cafSemicolon then begin @@ -4259,7 +4425,7 @@ // parse till "end" of class/object repeat //DebugLn(['TPascalParserTool.KeyWordFuncTypeClass Atom=',GetAtom,' ',CurPos.StartPos>=ClassNode.EndPos]); - if not ParseInnerClass(CurPos.StartPos,CurPos.EndPos-CurPos.StartPos) then + if not ParseInnerClass(CurPos.StartPos) then begin if CurPos.Flag<>cafEnd then SaveRaiseStringExpectedButAtomFound('end'); @@ -4304,108 +4470,18 @@ Result:=true; end; -function TPascalParserTool.KeyWordFuncTypeClassInterface: boolean; +function TPascalParserTool.KeyWordFuncTypeClassInterface( + IntfDesc: TCodeTreeNodeDesc): boolean; // class interface, dispinterface -var - IntfAtomPos: TAtomPosition; - IntfDesc: TCodeTreeNodeDesc; - IsJVM: Boolean; begin if not (CurNode.Desc in [ctnTypeDefinition,ctnGenericType]) then SaveRaiseExceptionFmt(ctsAnonymDefinitionsAreNotAllowed,['interface']); if CurNode.Parent.Desc<>ctnTypeSection then SaveRaiseExceptionFmt(ctsNestedDefinitionsAreNotAllowed,['interface']); - IntfAtomPos:=CurPos; // class interface start found - if UpAtomIs('INTERFACE') then - IntfDesc:=ctnClassInterface - else if UpAtomIs('DISPINTERFACE') then - IntfDesc:=ctnDispinterface - else - IntfDesc:=ctnObjCProtocol; CreateChildNode; CurNode.Desc:=IntfDesc; - CurNode.StartPos:=IntfAtomPos.StartPos; - - // read content - ReadNextAtom; - if (CurPos.Flag<>cafSemicolon) then begin - if CurPos.Flag=cafWord then begin - if UpAtomIs('EXTERNAL') then begin - IsJVM:=Scanner.Values.IsDefined('CPUJVM'); - if IsJVM or (IntfDesc=ctnObjCProtocol) then begin - CreateChildNode; - CurNode.Desc:=ctnClassExternal; - ReadNextAtom; - if IsJVM then - ReadConstant(true,false,[]); - if UpAtomIs('NAME') then begin - ReadNextAtom; - ReadConstant(true,false,[]); - end; - CurNode.EndPos:=CurPos.StartPos; - EndChildNode; - end; - end; - end; - if (CurPos.Flag=cafRoundBracketOpen) then begin - // read inheritage brackets - ReadClassInheritance(true); - ReadNextAtom; - end; - if IntfDesc=ctnObjCProtocol then begin - // start the first class section (the one without a keyword) - CreateChildNode; - CurNode.Desc:=ctnClassRequired; - end; - if CurPos.Flag=cafEdgedBracketOpen then - ReadGUID; - if CurPos.Flag<>cafSemicolon then begin - // parse till "end" of interface/dispinterface/objcprotocol - repeat - if not ParseInnerClass(CurPos.StartPos,CurPos.EndPos-CurPos.StartPos) then - begin - if CurPos.Flag<>cafEnd then - SaveRaiseStringExpectedButAtomFound('end'); - break; - end; - ReadNextAtom; - until false; - end; - // end last sub section - if CurNode.Desc in AllClassSubSections then begin - CurNode.EndPos:=CurPos.StartPos; - EndChildNode; - end; - // end last class section (public, private, ...) - if CurNode.Desc in AllClassSections then begin - CurNode.EndPos:=CurPos.StartPos; - EndChildNode; - end; - end else begin - // forward definition - CurNode.SubDesc:=CurNode.SubDesc+ctnsForwardDeclaration; - end; - if CurPos.Flag=cafEND then begin - ReadNextAtom; - if CurPos.Flag=cafSemicolon then - ReadNextAtom; - // read post modifiers - if UpAtomIs('EXTERNAL') then begin - ReadNextAtom; - if UpAtomIs('NAME') then begin - ReadNextAtom; - ReadConstant(true,false,[]); - end; - end; - // read hint modifier - ReadHintModifiers; - if CurPos.Flag<>cafSemicolon then - UndoReadNextAtom; - end; - // close class interface - CurNode.EndPos:=CurPos.EndPos; - EndChildNode; + ReadClassInterfaceContent; Result:=true; end; @@ -4596,15 +4672,24 @@ function TPascalParserTool.KeyWordFuncTypeType: boolean; // 'type identifier' +var + StartPos: Integer; begin - if not LastAtomIs(0,'=') then - SaveRaiseStringExpectedButAtomFound(ctsIdentifier); - CreateChildNode; - CurNode.Desc:=ctnTypeType; + StartPos := CurPos.StartPos; ReadNextAtom; - Result:=ParseType(CurPos.StartPos); - CurNode.EndPos:=CurPos.EndPos; - EndChildNode; + if UpAtomIs('HELPER') then begin + UndoReadNextAtom; + Result := KeyWordFuncTypeClass; + end else + begin + CreateChildNode; + CurNode.StartPos:=StartPos; + CurNode.Desc:=ctnTypeType; + Result:=ParseType(CurPos.StartPos); + CurNode.EndPos:=CurPos.EndPos; + EndChildNode; + Result:=true; + end; end; function TPascalParserTool.KeyWordFuncTypeFile: boolean; @@ -5086,6 +5171,7 @@ exit; end; ExtractMemStream.Position:=ExtractMemStream.Position-1; + c:=#0; ExtractMemStream.Read(c,1); Result:=IsIdentChar[c]; end; @@ -5129,7 +5215,7 @@ // -> check if a space must be inserted if AddAtom and ( ((phpCommentsToSpace in Attr) and (CurPos.StartPos>LastAtomEndPos)) - or ((CurPos.StartPos<=SrcLen) and (IsIdentChar[Src[CurPos.StartPos]]) + or ((CurPos.StartPos<=SrcLen) and (IsIdentChar[Src[CurPos.StartPos]] or (Src[CurPos.StartPos] = '&')) and ExtractStreamEndIsIdentChar) ) then begin @@ -5144,13 +5230,13 @@ if (ExtractSearchPos>0) and (ExtractSearchPos<=ExtractMemStream.Position) then begin - ExtractFoundPos:=ExtractSearchPos-1-LastStreamPos+CurPos.StartPos; + ExtractFoundPos:=ExtractSearchPos-1-integer(LastStreamPos)+CurPos.StartPos; ExtractSearchPos:=-1; end; ReadNextAtom; end; -procedure TPascalParserTool.FetchScannerSource(Range: TLinkScannerRange); +procedure TPascalParserTool.FetchScannerSource; var AllChanged: Boolean; NewSrc: String; @@ -5588,7 +5674,7 @@ CurNode.EndPos:=CurPos.EndPos; end; ReadNextAtom; - if Curpos.Flag=cafPoint then begin + while Curpos.Flag=cafPoint do begin // first identifier was unitname, now read the type ReadNextAtom; AtomIsIdentifierSaveE; @@ -5611,13 +5697,22 @@ // read identifier (a parameter of the generic type) ReadNextAtom; AtomIsIdentifierSaveE; + if CreateChildNodes then begin + CreateChildNode; + CurNode.Desc:=ctnSpecializeParam; + CurNode.EndPos:=CurPos.EndPos; + end; ReadNextAtom; - if Curpos.Flag=cafPoint then begin + while Curpos.Flag=cafPoint do begin // first identifier was unitname, now read the type ReadNextAtom; AtomIsIdentifierSaveE; + if CreateChildNodes then + CurNode.EndPos:=CurPos.EndPos; ReadNextAtom; end; + if CreateChildNodes then + EndChildNode; // close ctnSpecializeParam if AtomIsChar('>') then break else if CurPos.Flag=cafComma then begin @@ -5697,7 +5792,7 @@ exit; end; try - IsMethod:=ProcNode.Parent.Desc in (AllClasses+AllClassSections); + IsMethod:=(ProcNode.Parent<>nil) and (ProcNode.Parent.Desc in (AllClasses+AllClassSections)); MoveCursorToNodeStart(ProcNode); ReadNextAtom; if UpAtomIs('CLASS') then @@ -5755,7 +5850,7 @@ begin if ProcNode.Desc=ctnProcedureHead then ProcNode:=ProcNode.Parent; - if ProcNode.Desc<>ctnProcedure then + if not(ProcNode.Desc in [ctnProcedure,ctnProcedureType]) then RaiseException('INTERNAL ERROR: TPascalParserTool.BuildSubTreeForProcHead with FunctionResult'); BuildSubTreeForProcHead(ProcNode); FunctionResult:=ProcNode.FirstChild.FirstChild; @@ -5825,6 +5920,25 @@ Result:=FindRootNode(ctnImplementation); end; +function TPascalParserTool.FindLastNode: TCodeTreeNode; +begin + Result := FindRootNode(ctnEndPoint); + if Result=nil then + Result := Tree.GetLastNode; +end; + +function TPascalParserTool.FindImplementationUsesNode: TCodeTreeNode; +begin + Result:=Tree.Root; + if Result=nil then exit; + while (Result<>nil) and (Result.Desc<>ctnImplementation) do + Result:=Result.NextBrother; + if Result=nil then exit; + Result:=Result.FirstChild; + if (Result=nil) then exit; + if (Result.Desc<>ctnUsesSection) then Result:=nil; +end; + function TPascalParserTool.FindInitializationNode: TCodeTreeNode; begin Result:=FindRootNode(ctnInitialization); @@ -5850,6 +5964,27 @@ if Result.Desc<>ctnBeginBlock then Result:=nil; end; +function TPascalParserTool.FindMainUsesNode(UseContainsSection: boolean + ): TCodeTreeNode; +begin + Result:=Tree.Root; + if Result=nil then exit; + if UseContainsSection then begin + if Result.Desc<>ctnPackage then exit(nil); + Result:=Result.FirstChild; + while (Result<>nil) and (Result.Desc<>ctnContainsSection) do + Result:=Result.NextBrother; + end else begin + if Result.Desc=ctnUnit then begin + Result:=Result.NextBrother; + if Result=nil then exit; + end; + Result:=Result.FirstChild; + if (Result=nil) then exit; + if (Result.Desc<>ctnUsesSection) then Result:=nil; + end; +end; + function TPascalParserTool.FindFirstSectionChild: TCodeTreeNode; begin Result:=Tree.Root; diff -Nru lazarus-1.4.4+dfsg/components/codetools/pascalreadertool.pas lazarus-1.6+dfsg/components/codetools/pascalreadertool.pas --- lazarus-1.4.4+dfsg/components/codetools/pascalreadertool.pas 2014-10-09 21:11:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/pascalreadertool.pas 2015-11-09 16:32:28.000000000 +0000 @@ -39,7 +39,7 @@ {$ENDIF} Classes, SysUtils, FileProcs, CodeToolsStrConsts, CodeTree, CodeCache, CodeAtom, CustomCodeTool, PascalParserTool, KeywordFuncLists, BasicCodeTools, - SourceChanger, LinkScanner, AVL_Tree; + LinkScanner, AVL_Tree, LazFileUtils, LazDbgLog; type TPascalHintModifier = ( @@ -57,6 +57,21 @@ epriInDirective ); + //the scope groups of pascal methods. + //please note that Destructor is principally a method and thus is not listed here -> you cannot define "procedure Destroy;" and "destructor Destroy" in one class + TPascalMethodGroup = (mgMethod, mgConstructor, mgClassConstructor, mgClassDestructor); + + TPascalMethodHeader = record + Name: string; + Group: TPascalMethodGroup; + end; + + TClassSectionVisibility = ( + csvEverything,//same class same unit + csvPrivateAndHigher,//same unit different class + csvProtectedAndHigher,//ancestor class different unit + csvPublicAndHigher);//other class other unit + TOnEachPRIdentifier = procedure(Sender: TPascalParserTool; IdentifierCleanPos: integer; Range: TEPRIRange; Node: TCodeTreeNode; Data: Pointer; var Abort: boolean) of object; @@ -70,7 +85,7 @@ public // comments function CleanPosIsInComment(CleanPos, CleanCodePosInFront: integer; - var CommentStart, CommentEnd: integer; + out CommentStart, CommentEnd: integer; OuterCommentBounds: boolean = true): boolean; // general extraction @@ -121,13 +136,20 @@ Attr: TProcHeadAttributes): string; function ExtractProcHead(ProcNode: TCodeTreeNode; Attr: TProcHeadAttributes): string; + function ExtractProcHeadWithGroup(ProcNode: TCodeTreeNode; + Attr: TProcHeadAttributes): TPascalMethodHeader; + function ExtractProcedureHeader(CursorPos: TCodeXYPosition; + Attributes: TProcHeadAttributes; var ProcHead: string): boolean; function ExtractClassNameOfProcNode(ProcNode: TCodeTreeNode; AddParentClasses: boolean = true): string; function ProcNodeHasSpecifier(ProcNode: TCodeTreeNode; ProcSpec: TProcedureSpecifier): boolean; function GetProcNameIdentifier(ProcNode: TCodeTreeNode): PChar; function FindProcNode(StartNode: TCodeTreeNode; const AProcHead: string; - Attr: TProcHeadAttributes): TCodeTreeNode; + AProcSpecType: TPascalMethodGroup; + Attr: TProcHeadAttributes; Visibility: TClassSectionVisibility = csvEverything): TCodeTreeNode; overload; + function FindProcNode(StartNode: TCodeTreeNode; const AProcHead: TPascalMethodHeader; + Attr: TProcHeadAttributes; Visibility: TClassSectionVisibility = csvEverything): TCodeTreeNode; overload; function FindCorrespondingProcNode(ProcNode: TCodeTreeNode; Attr: TProcHeadAttributes = [phpWithoutClassKeyword,phpWithoutClassName] ): TCodeTreeNode; @@ -136,6 +158,7 @@ ): TCodeTreeNode; function FindProcBody(ProcNode: TCodeTreeNode): TCodeTreeNode; function ProcBodyIsEmpty(ProcNode: TCodeTreeNode): boolean; + function ExtractProcedureGroup(ProcNode: TCodeTreeNode): TPascalMethodGroup; procedure MoveCursorToFirstProcSpecifier(ProcNode: TCodeTreeNode); function MoveCursorToProcSpecifier(ProcNode: TCodeTreeNode; ProcSpec: TProcedureSpecifier): boolean; @@ -154,6 +177,7 @@ function NodeIsMethodBody(ProcNode: TCodeTreeNode): boolean; function GetMethodOfBody(Node: TCodeTreeNode): TCodeTreeNode; function NodeIsFunction(ProcNode: TCodeTreeNode): boolean; + function NodeIsClassConstructorOrDestructor(ProcNode: TCodeTreeNode): boolean; function NodeIsConstructor(ProcNode: TCodeTreeNode): boolean; function NodeIsDestructor(ProcNode: TCodeTreeNode): boolean; function NodeIsForwardProc(ProcNode: TCodeTreeNode): boolean; @@ -163,7 +187,8 @@ // classes function ExtractClassName(Node: TCodeTreeNode; - InUpperCase: boolean; WithParents: boolean = true): string; + InUpperCase: boolean; WithParents: boolean = true; + WithGenericParams: boolean = false): string; function ExtractClassPath(Node: TCodeTreeNode): string; function ExtractClassInheritance(ClassNode: TCodeTreeNode; Attr: TProcHeadAttributes): string; @@ -197,13 +222,16 @@ function ClassSectionNodeStartsWithWord(ANode: TCodeTreeNode): boolean; function IsClassNode(Node: TCodeTreeNode): boolean; // class, not object function FindInheritanceNode(ClassNode: TCodeTreeNode): TCodeTreeNode; + function FindHelperForNode(HelperNode: TCodeTreeNode): TCodeTreeNode; + function IdentNodeIsInVisibleClassSection(Node: TCodeTreeNode; Visibility: TClassSectionVisibility): Boolean; // records function ExtractRecordCaseType(RecordCaseNode: TCodeTreeNode): string; // variables, types function FindVarNode(StartNode: TCodeTreeNode; - const UpperVarName: string): TCodeTreeNode; + const UpperVarName: string; + Visibility: TClassSectionVisibility = csvEverything): TCodeTreeNode; function FindTypeNodeOfDefinition( DefinitionNode: TCodeTreeNode): TCodeTreeNode; function NodeIsPartOfTypeDefinition(ANode: TCodeTreeNode): boolean; @@ -214,13 +242,15 @@ function MoveCursorToParameterSpecifier(DefinitionNode: TCodeTreeNode ): boolean; function GetFirstGroupVarNode(VarNode: TCodeTreeNode): TCodeTreeNode; - function FindEndOfWithVar(WithVarNode: TCodeTreeNode): integer; function NodeIsIdentifierInInterface(Node: TCodeTreeNode): boolean; function NodeCanHaveForwardType(TypeNode: TCodeTreeNode): boolean; function NodeIsForwardType(TypeNode: TCodeTreeNode): boolean; function FindForwardTypeNode(TypeNode: TCodeTreeNode; SearchFirst: boolean): TCodeTreeNode; function FindTypeOfForwardNode(TypeNode: TCodeTreeNode): TCodeTreeNode; + function FindEndOfWithExpr(WithVarNode: TCodeTreeNode): integer; + function ExtractWithBlockExpression(WithVarNode: TCodeTreeNode; Attr: TProcHeadAttributes = []): string; + function FindWithBlockStatement(WithVarNode: TCodeTreeNode): TCodeTreeNode; // arrays function ExtractArrayRange(ArrayNode: TCodeTreeNode; @@ -228,7 +258,7 @@ // module sections function ExtractSourceName: string; - function GetSourceNamePos(var NamePos: TAtomPosition): boolean; + function GetSourceNamePos(out NamePos: TAtomPosition): boolean; function GetSourceName(DoBuildTree: boolean = true): string; function GetSourceType: TCodeTreeNodeDesc; function PositionInSourceName(CleanPos: integer): boolean; @@ -264,8 +294,54 @@ procedure CalcMemSize(Stats: TCTMemStats); override; end; +function CompareMethodHeaders(const Method1Name: string; Method1Group: TPascalMethodGroup; + const Method2Name: string; Method2Group: TPascalMethodGroup): Integer; overload; +function CompareMethodHeaders(const Method1Head: TPascalMethodHeader; const Method2Head: TPascalMethodHeader): Integer; overload; +function SameMethodHeaders(const Method1Name: string; Method1Group: TPascalMethodGroup; + const Method2Name: string; Method2Group: TPascalMethodGroup): Boolean; overload; +function SameMethodHeaders(const Method1Head: TPascalMethodHeader; const Method2Head: TPascalMethodHeader): Boolean; overload; +function CompareCodeTreeNodeExtMethodHeaders(NodeData1, NodeData2: pointer): integer; + implementation +function CompareMethodHeaders(const Method1Name: string; + Method1Group: TPascalMethodGroup; const Method2Name: string; + Method2Group: TPascalMethodGroup): Integer; +begin + Result := (Ord(Method1Group) - Ord(Method2Group)); + if Result <> 0 then exit; + Result := CompareTextIgnoringSpace(Method1Name,Method2Name,false); +end; + +function CompareMethodHeaders(const Method1Head: TPascalMethodHeader; + const Method2Head: TPascalMethodHeader): Integer; +begin + Result := CompareMethodHeaders(Method1Head.Name, Method1Head.Group, + Method2Head.Name, Method2Head.Group); +end; + +function SameMethodHeaders(const Method1Name: string; + Method1Group: TPascalMethodGroup; const Method2Name: string; + Method2Group: TPascalMethodGroup): Boolean; +begin + Result := CompareMethodHeaders(Method1Name, Method1Group, Method2Name, Method2Group) = 0; +end; + +function SameMethodHeaders(const Method1Head: TPascalMethodHeader; + const Method2Head: TPascalMethodHeader): Boolean; +begin + Result := CompareMethodHeaders(Method1Head, Method2Head) = 0; +end; + +function CompareCodeTreeNodeExtMethodHeaders(NodeData1, NodeData2: pointer): integer; +var + NodeExt1: TCodeTreeNodeExtension absolute NodeData1; + NodeExt2: TCodeTreeNodeExtension absolute NodeData2; +begin + Result:=CompareMethodHeaders(NodeExt1.Txt,TPascalMethodGroup(NodeExt1.Flags),NodeExt2.Txt,TPascalMethodGroup(NodeExt2.Flags)); +end; + + { TPascalReaderTool } procedure TPascalReaderTool.RaiseStrConstExpected; @@ -274,13 +350,15 @@ end; function TPascalReaderTool.CleanPosIsInComment(CleanPos, - CleanCodePosInFront: integer; var CommentStart, CommentEnd: integer; + CleanCodePosInFront: integer; out CommentStart, CommentEnd: integer; OuterCommentBounds: boolean): boolean; var CommentLvl, CurCommentPos: integer; CurEnd: Integer; CurCommentInnerEnd: Integer; begin Result:=false; + CommentStart:=0; + CommentEnd:=0; if CleanPos>SrcLen then exit; if CleanCodePosInFront>CleanPos then RaiseException( @@ -440,6 +518,7 @@ var ProcHeadNode: TCodeTreeNode; Part: String; + HasClassName: Boolean; begin Result:=''; if [phpWithoutClassName,phpWithoutName]*Attr= @@ -452,9 +531,10 @@ ProcHeadNode:=ProcNode.FirstChild; if (ProcHeadNode=nil) or (ProcHeadNode.StartPos<1) then exit; MoveCursorToNodeStart(ProcHeadNode); + HasClassName:=false; repeat ReadNextAtom; - if not AtomIsIdentifier then exit; + if not AtomIsIdentifier then break; if phpInUpperCase in Attr then Part:=GetUpAtom else @@ -462,17 +542,24 @@ ReadNextAtom; if (CurPos.Flag<>cafPoint) then begin // end of method identifier is the proc name - if phpWithoutName in Attr then exit; + if phpWithoutName in Attr then break; if Result<>'' then Result:=Result+'.'; Result:=Result+Part; - exit; + break; end; if not (phpWithoutClassName in Attr) then begin // in front of . is class name if Result<>'' then Result:=Result+'.'; Result:=Result+Part; + HasClassName:=true; end; until false; + if (not HasClassName) + and ([phpWithoutClassName,phpAddClassName]*Attr=[phpAddClassName]) then begin + Part:=ExtractClassName(ProcNode,false,true); + if Part<>'' then + Result:=Part+'.'+Result; + end; end; function TPascalReaderTool.ExtractProcHead(ProcNode: TCodeTreeNode; @@ -653,8 +740,34 @@ Result:=Result+';'; end; +function TPascalReaderTool.ExtractProcHeadWithGroup(ProcNode: TCodeTreeNode; + Attr: TProcHeadAttributes): TPascalMethodHeader; +begin + Result.Name := ExtractProcHead(ProcNode, Attr); + Result.Group := ExtractProcedureGroup(ProcNode); +end; + +function TPascalReaderTool.ExtractProcedureHeader(CursorPos: TCodeXYPosition; + Attributes: TProcHeadAttributes; var ProcHead: string): boolean; +var + CleanCursorPos: integer; + ANode: TCodeTreeNode; +begin + Result:=false; + ProcHead:=''; + BuildTreeAndGetCleanPos(trTillCursor,lsrEnd,CursorPos,CleanCursorPos, + [btSetIgnoreErrorPos,btCursorPosOutAllowed]); + ANode:=FindDeepestNodeAtPos(CleanCursorPos,True); + while (ANode<>nil) and (ANode.Desc<>ctnProcedure) do + ANode:=ANode.Parent; + if ANode=nil then exit; + ProcHead:=ExtractProcHead(ANode,Attributes); + Result:=true; +end; + function TPascalReaderTool.ExtractClassName(Node: TCodeTreeNode; - InUpperCase: boolean; WithParents: boolean): string; + InUpperCase: boolean; WithParents: boolean; WithGenericParams: boolean + ): string; var ParamsNode: TCodeTreeNode; ParamNode: TCodeTreeNode; @@ -663,16 +776,18 @@ Result:=''; while Node<>nil do begin case Node.Desc of - ctnTypeDefinition,ctnGenericType: + ctnTypeDefinition: begin if Result<>'' then Result:='.'+Result; - if Node.Desc=ctnTypeDefinition then - Result:=GetIdentifier(@Src[Node.StartPos])+Result - else if Node.FirstChild<>nil then - begin - if (Scanner.CompilerMode = cmDELPHI) and (Node.Desc = ctnGenericType) - then begin - // extract generic type param names + Result:=GetIdentifier(@Src[Node.StartPos])+Result; + if not WithParents then break; + end; + ctnGenericType: + begin + if Result<>'' then Result:='.'+Result; + if (Node.Desc = ctnGenericType) then begin + // extract generic type param names + if WithGenericParams then begin ParamsNode:=Node.FirstChild.NextBrother; First:=true; while ParamsNode<>nil do begin @@ -809,14 +924,16 @@ end; function TPascalReaderTool.FindProcNode(StartNode: TCodeTreeNode; - const AProcHead: string; Attr: TProcHeadAttributes): TCodeTreeNode; + const AProcHead: TPascalMethodHeader; Attr: TProcHeadAttributes; + Visibility: TClassSectionVisibility): TCodeTreeNode; // search in all next brothers for a Procedure Node with the Name ProcName // if there are no further brothers and the parent is a section node // ( e.g. 'interface', 'implementation', ...) or a class visibility node // (e.g. 'public', 'private', ...) then the search will continue in the next // section -var CurProcHead: string; +var InClass: Boolean; + CurProcHead: TPascalMethodHeader; begin Result:=StartNode; InClass:=FindClassOrInterfaceNode(StartNode)<>nil; @@ -825,12 +942,15 @@ if (not ((phpIgnoreForwards in Attr) and ((Result.SubDesc and ctnsForwardDeclaration)>0))) and (not ((phpIgnoreProcsWithBody in Attr) - and (FindProcBody(Result)<>nil))) then + and (FindProcBody(Result)<>nil))) + and (not InClass or IdentNodeIsInVisibleClassSection(Result, Visibility)) + then begin - CurProcHead:=ExtractProcHead(Result,Attr); + CurProcHead:=ExtractProcHeadWithGroup(Result,Attr); //DebugLn(['TPascalReaderTool.FindProcNode B "',CurProcHead,'" =? "',AProcHead,'" Result=',CompareTextIgnoringSpace(CurProcHead,AProcHead,false)]); - if (CurProcHead<>'') - and (CompareTextIgnoringSpace(CurProcHead,AProcHead,false)=0) then + if (CurProcHead.Name<>'') and + SameMethodHeaders(AProcHead, CurProcHead) + then exit; end; end; @@ -842,12 +962,23 @@ end; end; +function TPascalReaderTool.FindProcNode(StartNode: TCodeTreeNode; + const AProcHead: string; AProcSpecType: TPascalMethodGroup; + Attr: TProcHeadAttributes; Visibility: TClassSectionVisibility): TCodeTreeNode; +var + ProcHead: TPascalMethodHeader; +begin + ProcHead.Name := AProcHead; + ProcHead.Group := AProcSpecType; + Result := FindProcNode(StartNode, ProcHead, Attr, Visibility); +end; + function TPascalReaderTool.FindCorrespondingProcNode(ProcNode: TCodeTreeNode; Attr: TProcHeadAttributes): TCodeTreeNode; var ClassNode: TCodeTreeNode; StartNode: TCodeTreeNode; - ProcHead: String; + ProcHead: TPascalMethodHeader; begin Result:=nil; // get ctnProcedure @@ -891,7 +1022,7 @@ end; if StartNode=nil then exit; - ProcHead:=ExtractProcHead(ProcNode,Attr); + ProcHead:=ExtractProcHeadWithGroup(ProcNode,Attr); //debugln('TPascalReaderTool.FindCorrespondingProcNode StartNode=',StartNode.DescAsString,' ProcHead=',dbgstr(ProcHead),' ',dbgs(Attr),' ',StartNode.DescAsString); Result:=FindProcNode(StartNode,ProcHead,Attr); if Result=ProcNode then begin @@ -1749,6 +1880,7 @@ if StartPos>SrcLen then exit; if EndPos>SrcLen then EndPos:=SrcLen+1; if StartPos>=EndPos then exit; + Range:=epriInCode; p:=@Src[StartPos]; EndP:=p+EndPos-StartPos; while p<EndP do begin @@ -1954,7 +2086,8 @@ end; function TPascalReaderTool.FindVarNode(StartNode: TCodeTreeNode; - const UpperVarName: string): TCodeTreeNode; + const UpperVarName: string; Visibility: TClassSectionVisibility + ): TCodeTreeNode; var InClass: Boolean; begin @@ -1962,6 +2095,7 @@ InClass:=FindClassOrInterfaceNode(StartNode)<>nil; while Result<>nil do begin if (Result.Desc=ctnVarDefinition) + and (not InClass or IdentNodeIsInVisibleClassSection(Result, Visibility)) and (CompareNodeIdentChars(Result,UpperVarName)=0) then exit; if InClass then @@ -2371,6 +2505,48 @@ Result:=ctnNone; end; +function TPascalReaderTool.IdentNodeIsInVisibleClassSection( + Node: TCodeTreeNode; Visibility: TClassSectionVisibility): Boolean; +begin + if Visibility = csvEverything then + Result := True + else + if (Node.Parent<>nil) then + case Visibility of + //csvAbovePrivate: todo: add strict private and strict protected (should be registered as new sections) + csvProtectedAndHigher: + Result := not(Node.Parent.Desc = ctnClassPrivate);//todo: add strict private + csvPublicAndHigher: + Result := not(Node.Parent.Desc in [ctnClassPrivate, ctnClassProtected]);//todo: strict private and strict protected + else + Result := True + end + else + Result := False; +end; + +function TPascalReaderTool.ExtractProcedureGroup(ProcNode: TCodeTreeNode + ): TPascalMethodGroup; +begin + Result:=mgMethod; + if (ProcNode=nil) then exit; + if ProcNode.Desc=ctnProcedureHead then + ProcNode:=ProcNode.Parent; + if ProcNode.Desc<>ctnProcedure then exit; + MoveCursorToNodeStart(ProcNode); + ReadNextAtom; + if UpAtomIs('CLASS') then + begin + ReadNextAtom; + if UpAtomIs('CONSTRUCTOR') then + Result := mgClassConstructor; + if UpAtomIs('DESTRUCTOR') then + Result := mgClassDestructor; + end else + if UpAtomIs('CONSTRUCTOR') then + Result := mgConstructor +end; + function TPascalReaderTool.PositionInSourceName(CleanPos: integer): boolean; var NamePos: TAtomPosition; @@ -2408,7 +2584,8 @@ Result:=''; end; -function TPascalReaderTool.GetSourceNamePos(var NamePos: TAtomPosition): boolean; +function TPascalReaderTool.GetSourceNamePos(out NamePos: TAtomPosition + ): boolean; begin Result:=false; NamePos.StartPos:=-1; @@ -2655,14 +2832,41 @@ end; end; -function TPascalReaderTool.FindEndOfWithVar(WithVarNode: TCodeTreeNode): integer; +function TPascalReaderTool.FindEndOfWithExpr(WithVarNode: TCodeTreeNode): integer; begin + if WithVarNode.Desc<>ctnWithVariable then exit(-1); MoveCursorToCleanPos(WithVarNode.StartPos); + ReadNextAtom; if not ReadTilVariableEnd(true,true) then exit(-1); UndoReadNextAtom; Result:=CurPos.EndPos; end; +function TPascalReaderTool.ExtractWithBlockExpression( + WithVarNode: TCodeTreeNode; Attr: TProcHeadAttributes): string; +var + EndPos: Integer; +begin + EndPos:=FindEndOfWithExpr(WithVarNode); + if EndPos<1 then exit(''); + Result:=ExtractCode(WithVarNode.StartPos,EndPos,Attr); +end; + +function TPascalReaderTool.FindWithBlockStatement(WithVarNode: TCodeTreeNode + ): TCodeTreeNode; +begin + Result:=WithVarNode; + repeat + if Result=nil then exit; + if Result.Desc<>ctnWithVariable then exit(nil); + if Result.FirstChild<>nil then begin + Result:=Result.FirstChild; + if Result.Desc=ctnWithStatement then exit; + exit(nil); + end; + until false; +end; + function TPascalReaderTool.NodeIsIdentifierInInterface(Node: TCodeTreeNode): boolean; // true if identifier is visible from other units (without prefixing) begin @@ -2698,6 +2902,12 @@ Result:=true; end; +function TPascalReaderTool.NodeIsClassConstructorOrDestructor( + ProcNode: TCodeTreeNode): boolean; +begin + Result := ExtractProcedureGroup(ProcNode) in [mgClassConstructor, mgClassDestructor]; +end; + function TPascalReaderTool.NodeIsForwardType(TypeNode: TCodeTreeNode): boolean; begin Result:=false; @@ -2773,6 +2983,16 @@ end; end; +function TPascalReaderTool.FindHelperForNode(HelperNode: TCodeTreeNode + ): TCodeTreeNode; +begin + Result:=HelperNode.FirstChild; + while (Result<>nil) and (Result.Desc = ctnClassInheritance) do + Result:=Result.NextBrother; + if (Result<>nil) and (Result.Desc<>ctnHelperFor) then + Result:=nil; +end; + function TPascalReaderTool.FindTypeOfForwardNode(TypeNode: TCodeTreeNode ): TCodeTreeNode; diff -Nru lazarus-1.4.4+dfsg/components/codetools/ppucodetools.pas lazarus-1.6+dfsg/components/codetools/ppucodetools.pas --- lazarus-1.4.4+dfsg/components/codetools/ppucodetools.pas 2011-05-20 10:49:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ppucodetools.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,7 +30,7 @@ interface uses - Classes, SysUtils, PPUParser, CodeCache, AVL_Tree, FileProcs; + Classes, SysUtils, PPUParser, AVL_Tree, FileProcs, LazFileUtils, LazFileCache; type diff -Nru lazarus-1.4.4+dfsg/components/codetools/ppugraph.pas lazarus-1.6+dfsg/components/codetools/ppugraph.pas --- lazarus-1.4.4+dfsg/components/codetools/ppugraph.pas 2014-12-02 19:25:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ppugraph.pas 2015-07-07 11:43:38.000000000 +0000 @@ -31,7 +31,7 @@ uses Classes, SysUtils, dynlibs, PPUParser, CodeTree, AVL_Tree, FileProcs, - BasicCodeTools, CodeGraph, CodeToolManager, CodeToolsStructs; + LazFileUtils, BasicCodeTools, CodeGraph, CodeToolManager, CodeToolsStructs; const FPCPPUGroupPrefix = 'fpc_'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/ppuparser.pas lazarus-1.6+dfsg/components/codetools/ppuparser.pas --- lazarus-1.4.4+dfsg/components/codetools/ppuparser.pas 2015-02-23 23:32:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/ppuparser.pas 2015-07-07 11:43:38.000000000 +0000 @@ -34,7 +34,7 @@ interface uses - Classes, SysUtils, FileProcs, lazutf8classes, contnrs; + Classes, SysUtils, contnrs, FileProcs, LazFileUtils, lazutf8classes; const PPUIsEndianBig = {$IFDEF ENDIAN_BIG}True{$ELSE}False{$ENDIF}; @@ -720,11 +720,11 @@ function ReadEntryAInt(const Msg: string): int64; function ReadEntryASizeInt: int64; function ReadEntryASizeInt(const Msg: string): int64; - procedure ReadEntrySmallSet(var s); - procedure ReadEntryNormalSet(var s); + procedure ReadEntrySmallSet(out s); + procedure ReadEntryNormalSet(out s); procedure ReadUsedUnits; procedure ReadModuleOptions; - procedure ReadLinkContainer(Nr: byte); + procedure ReadLinkContainer(aContainerType: byte); procedure ReadResources; procedure ReadImportSymbols; procedure ReadDerefData; @@ -1078,7 +1078,7 @@ function PPULinkContainerFlagToStr(Flags: longint): string; const { link options } - link_none = $0; + //link_none = $0; link_always = $1; link_static = $2; link_smart = $4; @@ -1427,7 +1427,9 @@ procedure TPPU.ReadDefinitions; type + { tsettype = (normset,smallset,varset); + tordtype = ( uvoid, u8bit,u16bit,u32bit,u64bit, @@ -1448,6 +1450,7 @@ tvarianttype = ( vt_normalvariant,vt_olevariant ); + } tprocinfoflag=( {# procedure uses asm } @@ -1461,7 +1464,7 @@ {# procedure contains data which needs to be finalized } pi_needs_implicit_finally ); - tprocinfoflags=set of tprocinfoflag; + //tprocinfoflags=set of tprocinfoflag; tsystemcpu= ( @@ -1598,7 +1601,7 @@ end; procedure TPPU.ReadSymbols; -type +{type pguid = ^tguid; tguid = packed record D1: LongWord; @@ -1623,7 +1626,7 @@ constresourcestring, constwstring, constguid - ); + );} var EntryNr: Byte; begin @@ -1898,6 +1901,9 @@ 2-3 - amount of bytes for line 4-5 - amount of bytes for column } + fileindex:=0; + line:=0; + column:=0; info:=ReadEntryByte; case (info and $03) of 0 : fileindex:=ReadEntryByte; @@ -2280,26 +2286,26 @@ debugln([Msg,Result]); end; -procedure TPPU.ReadEntrySmallSet(var s); +procedure TPPU.ReadEntrySmallSet(out s); var i: longint; begin if FEntryPos+4>FEntry.size then Error('TPPU.ReadEntryLongint: out of bytes'); - System.Move(PByte(FEntryBuf+FEntryPos)^,s,4); + System.Move(PByte(FEntryBuf+FEntryPos)^,s{%H-},4); inc(FEntryPos,4); if fChangeEndian then for i:=0 to 3 do Pbyte(@s)[i]:=reverse_byte(Pbyte(@s)[i]); end; -procedure TPPU.ReadEntryNormalSet(var s); +procedure TPPU.ReadEntryNormalSet(out s); var i: longint; begin if FEntryPos+32>FEntry.size then Error('TPPU.ReadEntryLongint: out of bytes'); - System.Move(PByte(FEntryBuf+FEntryPos)^,s,32); + System.Move(PByte(FEntryBuf+FEntryPos)^,s{%H-},32); inc(FEntryPos,32); if fChangeEndian then for i:=0 to 31 do @@ -2343,11 +2349,12 @@ mo_has_deprecated_msg ); tmoduleoptions = set of tmoduleoption; +{$IFDEF VerbosePPUParser} +type tmoduleopt=record mask : tmoduleoption; str : string[30]; end; -{$IFDEF VerbosePPUParser} const moduleopts=6; moduleopt : array[1..moduleopts] of tmoduleopt=( @@ -2388,7 +2395,7 @@ end; end; -procedure TPPU.ReadLinkContainer(Nr: byte); +procedure TPPU.ReadLinkContainer(aContainerType: byte); {$IFDEF VerbosePPUParser} var Desc: String; @@ -2397,6 +2404,9 @@ Flags: LongInt; {$ENDIF} begin + {$IFNDEF VerbosePPUParser} + if aContainerType=0 then ; + {$ENDIF} while not EndOfEntry do begin {$IFDEF VerbosePPUParser}Filename:={$ENDIF}ReadEntryShortstring; {$IFDEF VerbosePPUParser}Flags:={$ENDIF}ReadEntryLongint; diff -Nru lazarus-1.4.4+dfsg/components/codetools/sourcechanger.pas lazarus-1.6+dfsg/components/codetools/sourcechanger.pas --- lazarus-1.4.4+dfsg/components/codetools/sourcechanger.pas 2015-03-14 16:05:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/sourcechanger.pas 2015-11-09 16:32:28.000000000 +0000 @@ -43,7 +43,7 @@ uses Classes, SysUtils, FileProcs, CodeToolsStrConsts, CodeCache, BasicCodeTools, - typinfo, LinkScanner, AVL_Tree, CodeBeautifier, KeywordFuncLists; + typinfo, LinkScanner, AVL_Tree, KeywordFuncLists, LazDbgLog; type // Insert policy types for class parts (properties, variables, method defs) @@ -59,6 +59,21 @@ mipClassOrder // try to copy the order of the class ); + //where to add created methods from event assignment: "OnClick := @MyNewProc;" + TInsertClassSection = ( + icsPrivate, + icsProtected, + icsPublic, + icsPublished, + icsPrompt //show dialog prompt + ); + TInsertClassSectionResult = ( + icsrPrivate, + icsrProtected, + icsrPublic, + icsrPublished + ); + TForwardProcBodyInsertPolicy = ( fpipLast, fpipInFrontOfMethods, @@ -90,6 +105,15 @@ const DefaultUsesInsertPolicy = uipBehindRelated; + DefaultEventMethodSection = icsPrompt; + + InsertClassSectionToResult: array[TInsertClassSection] of TInsertClassSectionResult = ( + icsrPrivate, + icsrProtected, + icsrPublic, + icsrPublished, + icsrPrivate + ); type TWordPolicyException = class @@ -131,7 +155,7 @@ procedure SetTabWidth(AValue: integer); procedure SetUseTabs(AValue: boolean); procedure StartComment(p: integer); - function EndComment(CommentStart: char; p: integer): boolean; + function EndComment(CommentStart: char; {%H-}p: integer): boolean; public LineLength: integer; LineEnd: string; @@ -150,12 +174,14 @@ KeepForwardProcOrder: boolean; UpdateMultiProcSignatures: boolean; UpdateOtherProcSignaturesCase: boolean; // when updating proc signatures not under cursor, fix case + GroupLocalVariables: boolean; // classes, methods, properties ClassHeaderComments: boolean; ClassImplementationComments: boolean; ClassPartInsertPolicy: TClassPartInsertPolicy; MixMethodsAndProperties: boolean; MethodInsertPolicy: TMethodInsertPolicy; + EventMethodSection: TInsertClassSection; PropertyReadIdentPrefix: string; PropertyWriteIdentPrefix: string; PropertyStoredIdentPostfix: string; @@ -168,6 +194,7 @@ NestedComments: boolean; + function GetRealEventMethodSection(out Section: TInsertClassSectionResult): Boolean; //in case of imsPrompt show a dialog and return a "normal" section; returns true if OK, false if canceled function GetIndentStr(TheIndent: integer): string; inline; function GetLineIndent(const Source: string; Position: integer): integer; inline; procedure SetupWordPolicyExceptions(ws: TStrings); @@ -270,8 +297,7 @@ function Apply: boolean; function FindEntryInRange(FromPos, ToPos: integer): TSourceChangeCacheEntry; function FindEntryAtPos(APos: integer): TSourceChangeCacheEntry; - property BuffersToModify[Index: integer]: TCodeBuffer - read GetBuffersToModify; + property BuffersToModify[Index: integer]: TCodeBuffer read GetBuffersToModify; function BuffersToModifyCount: integer; function BufferIsModified(ACode: TCodeBuffer): boolean; property OnBeforeApplyChanges: TOnBeforeApplyChanges @@ -327,7 +353,15 @@ MethodInsertPolicyNames: array[TMethodInsertPolicy] of shortstring = ( 'Alphabetically', 'Last', 'ClassOrder' ); - + + InsertClassSectionNames: array[TInsertClassSection] of ShortString = ( + 'Private', 'Protected', 'Public', 'Published', 'Prompt' + ); + + InsertClassSectionResultNames: array[TInsertClassSectionResult] of ShortString = ( + 'Private', 'Protected', 'Public', 'Published' + ); + ForwardProcBodyInsertPolicyNames: array[TForwardProcBodyInsertPolicy] of shortstring = ( 'Last', @@ -351,11 +385,18 @@ DefaultDoNotInsertSpaceInFront: TAtomTypes = []; DefaultDoNotInsertSpaceAfter: TAtomTypes = [atDirectiveStart]; +type + TShowEventClassSectionPromptFunc = function(out Section: TInsertClassSectionResult): Boolean; +var + ShowEventMethodSectionPrompt: TShowEventClassSectionPromptFunc = nil; + function AtomTypeNameToType(const s: string): TAtomType; function AtomTypesToStr(const AtomTypes: TAtomTypes): string; function WordPolicyNameToPolicy(const s: string): TWordPolicy; function ClassPartPolicyNameToPolicy(const s: string): TClassPartInsertPolicy; function MethodInsertPolicyNameToPolicy(const s: string): TMethodInsertPolicy; +function InsertClassSectionNameToSection(const s: string; Default: TInsertClassSection): TInsertClassSection; +function InsertClassSectionResultNameToSection(const s: string): TInsertClassSectionResult; function ForwardProcBodyInsertPolicyNameToPolicy( const s: string): TForwardProcBodyInsertPolicy; function UsesInsertPolicyNameToPolicy(const s: string): TUsesInsertPolicy; @@ -408,6 +449,21 @@ Result:=mipLast; end; +function InsertClassSectionNameToSection(const s: string; + Default: TInsertClassSection): TInsertClassSection; +begin + for Result:=Low(TInsertClassSection) to High(TInsertClassSection) do + if SysUtils.CompareText(InsertClassSectionNames[Result],s)=0 then exit; + Result:=Default; +end; + +function InsertClassSectionResultNameToSection(const s: string): TInsertClassSectionResult; +begin + for Result:=Low(TInsertClassSectionResult) to High(TInsertClassSectionResult) do + if SysUtils.CompareText(InsertClassSectionResultNames[Result],s)=0 then exit; + Result:=icsrPrivate; +end; + function ForwardProcBodyInsertPolicyNameToPolicy( const s: string): TForwardProcBodyInsertPolicy; begin @@ -585,7 +641,8 @@ function TSourceChangeCache.FindEntryInRange( FromPos, ToPos: integer): TSourceChangeCacheEntry; -var ANode: TAVLTreeNode; +var + ANode: TAVLTreeNode; NextNode: TAVLTreeNode; begin ANode:=FEntries.Root; @@ -762,6 +819,7 @@ var p: LongInt; begin + Result:=false; if ToPos<1 then ToPos:=1; if (IndentDiff=0) or (FromPos>=ToPos) then exit; if MainScanner=nil then begin @@ -1255,7 +1313,9 @@ UpdateAllMethodSignatures:=true; UpdateMultiProcSignatures:=true; UpdateOtherProcSignaturesCase:=true; + GroupLocalVariables:=true; MethodInsertPolicy:=mipClassOrder; + EventMethodSection:=DefaultEventMethodSection; ForwardProcBodyInsertPolicy:=fpipBehindMethods; KeepForwardProcOrder:=true; ClassHeaderComments:=true; @@ -1380,6 +1440,28 @@ then CurAtomType:=atKeyword; end; + '&': //identifier prefixed with '&' or octal number + begin + inc(CurPos); + if CurPos<=SrcLen then + case Src[CurPos] of + 'a'..'z','A'..'Z','_'://identifier prefixed with '&' + begin + CurAtomType:=atIdentifier; + repeat + inc(CurPos); + until (CurPos>SrcLen) or (not IsIdentChar[Src[CurPos]]); + end; + '0'..'7'://octal number + begin + CurAtomType:=atNumber; + repeat + inc(CurPos); + until (CurPos>SrcLen) or (not IsOctNumberChar[Src[CurPos]]); + end; + end else + CurAtomType:=atNone; + end; #128..#255: // UTF8 begin CurAtomType:=atIdentifier; @@ -1660,6 +1742,21 @@ Result:=false; end; +function TBeautifyCodeOptions.GetRealEventMethodSection(out + Section: TInsertClassSectionResult): Boolean; +begin + Result := True; + if (EventMethodSection <> icsPrompt) then + Section := InsertClassSectionToResult[EventMethodSection] + else + begin + if Assigned(ShowEventMethodSectionPrompt) then + Result := ShowEventMethodSectionPrompt(Section) + else + Section := InsertClassSectionToResult[DefaultEventMethodSection]; + end; +end; + procedure TBeautifyCodeOptions.SetupWordPolicyExceptions(ws: TStrings); begin if Assigned(WordExceptions) then WordExceptions.Free; @@ -1817,6 +1914,7 @@ KeyWordPos: LongInt; Level: Integer; begin + Result:=''; p:=1; ProcLen:=length(AProcCode); // read proc keyword 'procedure', 'function', ... diff -Nru lazarus-1.4.4+dfsg/components/codetools/sourcelog.pas lazarus-1.6+dfsg/components/codetools/sourcelog.pas --- lazarus-1.4.4+dfsg/components/codetools/sourcelog.pas 2015-02-16 21:17:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/sourcelog.pas 2015-11-02 23:00:15.000000000 +0000 @@ -36,7 +36,7 @@ {$IFDEF MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, FileProcs, LazUTF8, lazutf8classes; + Classes, SysUtils, LazFileUtils, LazUTF8, lazutf8classes, LazDbgLog; type TSourceLog = class; @@ -227,7 +227,7 @@ var NewLength: Integer; p: Integer; - Src, Dest, StartPos, EndPos: PChar; + Src, Dest, EndPos: PChar; EndLen: Integer; begin if s='' then begin @@ -893,6 +893,13 @@ Result := False; LastError:=''; try + s := Source; + // convert encoding + EncodeSaving(Filename, s); + // convert line ending to disk line ending + if (DiskLineEnding<>'') and (LineEnding <> DiskLineEnding) then + s := ChangeLineEndings(s, DiskLineEnding); + // keep filename case on disk if FileExistsUTF8(Filename) then begin InvalidateFileStateCache(Filename); @@ -903,12 +910,6 @@ fs := TFileStreamUTF8.Create(Filename, fmCreate); end; try - s := Source; - EncodeSaving(Filename, s); - - // convert line ending to disk line ending - if (DiskLineEnding<>'') and (LineEnding <> DiskLineEnding) then - s := ChangeLineEndings(s, DiskLineEnding); if s <> '' then fs.Write(s[1], length(s)); finally diff -Nru lazarus-1.4.4+dfsg/components/codetools/stdcodetools.pas lazarus-1.6+dfsg/components/codetools/stdcodetools.pas --- lazarus-1.4.4+dfsg/components/codetools/stdcodetools.pas 2015-03-14 10:34:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/stdcodetools.pas 2016-02-06 14:26:44.000000000 +0000 @@ -52,13 +52,22 @@ {$ENDIF} Classes, SysUtils, TypInfo, CodeToolsStrConsts, FileProcs, CodeTree, CodeAtom, FindDeclarationTool, IdentCompletionTool, PascalReaderTool, PascalParserTool, - CodeBeautifier, ExprEval, KeywordFuncLists, BasicCodeTools, LinkScanner, + ExprEval, KeywordFuncLists, BasicCodeTools, LinkScanner, CodeCache, AVL_Tree, LFMTrees, SourceChanger, - CustomCodeTool, CodeToolsStructs, LazFileUtils; + CustomCodeTool, CodeToolsStructs, LazFileUtils, LazFileCache; type TStandardCodeTool = class; + TInsertStatementPosDescription = class + public + InsertPos: integer; + Indent: integer; + CodeXYPos: TCodeXYPosition; + FrontGap, AfterGap: TGapTyp; + Description: string; + end; + TUsesSection = (usMain, usImplementation); TOnFindDefinePropertyForContext = procedure(Sender: TObject; @@ -109,11 +118,9 @@ SourceChangeCache: TSourceChangeCache; AsLast: boolean = false; CheckSpecialUnits: boolean = true): boolean; function UnitExistsInUsesSection(UsesSection: TUsesSection; - const AnUnitName: string; - SourceChangeCache: TSourceChangeCache): boolean; + const AnUnitName: string): boolean; function UnitExistsInUsesSection(UsesNode: TCodeTreeNode; - const AnUnitName: string; - SourceChangeCache: TSourceChangeCache): boolean; + const AnUnitName: string): boolean; function RemoveUnitFromUsesSection(UsesNode: TCodeTreeNode; const AnUnitName: string; SourceChangeCache: TSourceChangeCache): boolean; @@ -226,6 +233,12 @@ function RemoveIdentifierDefinition(const CursorPos: TCodeXYPosition; SourceChangeCache: TSourceChangeCache): boolean; + function InsertStatements(InsertPos: TInsertStatementPosDescription; + Statements: string; SourceChangeCache: TSourceChangeCache): boolean; + function InsertStatements(CleanPos: integer; + Statements: string; Indent: integer; FrontGap, AfterGap: TGapTyp; + SourceChangeCache: TSourceChangeCache): boolean; + // blocks (e.g. begin..end) function FindBlockCounterPart(const CursorPos: TCodeXYPosition; out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; @@ -245,7 +258,7 @@ function GuessMisplacedIfdefEndif(const CursorPos: TCodeXYPosition; out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; function FindEnclosingIncludeDirective(const CursorPos: TCodeXYPosition; - out NewPos: TCodeXYPosition; var NewTopLine: integer): boolean; + out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; function FindModeDirective(DoBuildTree: boolean; out ACleanPos: integer): boolean; function FindResourceDirective(DoBuildTree: boolean; @@ -290,9 +303,6 @@ function GetStringConstBounds(const CursorPos: TCodeXYPosition; out StartPos, EndPos: TCodeXYPosition; ResolveComments: boolean): boolean; - function ReplaceCode(const StartPos, EndPos: TCodeXYPosition; - const NewCode: string; - SourceChangeCache: TSourceChangeCache): boolean; function GetStringConstAsFormatString(StartPos, EndPos: integer; out FormatStringConstant, FormatParameters: string; out StartInStringConst, EndInStringConst: boolean): boolean; @@ -593,8 +603,8 @@ // first collect all units if not FindUsedUnitNames(ExistingUnits) then exit; // then change uses sections - Replace(FindMainUsesSection); - Replace(FindImplementationUsesSection); + Replace(FindMainUsesNode); + Replace(FindImplementationUsesNode); finally ExistingUnits.Free; end; @@ -940,7 +950,7 @@ if UsesSection=usMain then begin // quick check using only the main uses section BuildTree(lsrMainUsesSectionEnd); - UsesNode:=FindMainUsesSection; + UsesNode:=FindMainUsesNode; if (UsesNode<>nil) and (FindUnitInUsesSection(UsesNode,NewUnitName,Junk,Junk)) then exit(true); // unit already in main uses section @@ -955,8 +965,8 @@ Beauty:=SourceChangeCache.BeautifyCodeOptions; SourceChangeCache.BeginUpdate; try - UsesNode:=FindMainUsesSection; - OtherUsesNode:=FindImplementationUsesSection; + UsesNode:=FindMainUsesNode; + OtherUsesNode:=FindImplementationUsesNode; if UsesSection=usImplementation then begin SectionNode:=UsesNode; UsesNode:=OtherUsesNode; @@ -1040,7 +1050,7 @@ end; function TStandardCodeTool.UnitExistsInUsesSection(UsesSection: TUsesSection; - const AnUnitName: string; SourceChangeCache: TSourceChangeCache): boolean; + const AnUnitName: string): boolean; var UsesNode: TCodeTreeNode; begin @@ -1051,16 +1061,15 @@ BuildTree(lsrMainUsesSectionEnd) else BuildTree(lsrImplementationUsesSectionEnd); - SourceChangeCache.MainScanner:=Scanner; case UsesSection Of - usMain: UsesNode:=FindMainUsesSection; - usImplementation: UsesNode:=FindImplementationUsesSection; + usMain: UsesNode:=FindMainUsesNode; + usImplementation: UsesNode:=FindImplementationUsesNode; end; - Result:=UnitExistsInUsesSection(UsesNode,AnUnitName,SourceChangeCache); + Result:=UnitExistsInUsesSection(UsesNode,AnUnitName); end; function TStandardCodeTool.UnitExistsInUsesSection(UsesNode: TCodeTreeNode; - const AnUnitName: string; SourceChangeCache: TSourceChangeCache): boolean; + const AnUnitName: string): boolean; begin Result:=false; if (UsesNode=nil) or (not IsDottedIdentifier(AnUnitName)) then @@ -1275,8 +1284,8 @@ ImplementationUsesSection:=nil; // find the uses sections BuildTree(lsrImplementationUsesSectionEnd); - MainUsesNode:=FindMainUsesSection; - ImplementatioUsesNode:=FindImplementationUsesSection; + MainUsesNode:=FindMainUsesNode; + ImplementatioUsesNode:=FindImplementationUsesNode; // create lists try MainUsesSection:=UsesSectionToUnitNames(MainUsesNode); @@ -1324,8 +1333,8 @@ // find the uses sections List:=TStringToStringTree.Create(false); BuildTree(lsrImplementationUsesSectionEnd); - Collect(FindMainUsesSection,'Main'); - Collect(FindImplementationUsesSection,'Implementation'); + Collect(FindMainUsesNode,'Main'); + Collect(FindImplementationUsesNode,'Implementation'); Result:=true; end; @@ -1337,7 +1346,7 @@ MainUsesSection:=nil; // find the uses sections BuildTree(lsrMainUsesSectionEnd); - MainUsesNode:=FindMainUsesSection; + MainUsesNode:=FindMainUsesNode; // create lists try MainUsesSection:=UsesSectionToFilenames(MainUsesNode); @@ -1357,8 +1366,8 @@ ImplementationUsesSection:=nil; // find the uses sections BuildTree(lsrImplementationUsesSectionEnd); - MainUsesNode:=FindMainUsesSection; - ImplementatioUsesNode:=FindImplementationUsesSection; + MainUsesNode:=FindMainUsesNode; + ImplementatioUsesNode:=FindImplementationUsesNode; // create lists try MainUsesSection:=UsesSectionToFilenames(MainUsesNode); @@ -1399,7 +1408,7 @@ NormalUnits:=nil; // find the uses sections BuildTree(lsrMainUsesSectionEnd); - UsesNode:=FindMainUsesSection(UseContainsSection); + UsesNode:=FindMainUsesNode(UseContainsSection); if UsesNode=nil then exit; FoundInUnits:=TStringList.Create; MissingInUnits:=TStringList.Create; @@ -1549,9 +1558,9 @@ if FixCase then SourceChangeCache.MainScanner:=Scanner; try - if not CheckUsesSection(FindMainUsesSection(true)) then exit; + if not CheckUsesSection(FindMainUsesNode(true)) then exit; if SearchImplementation - and not CheckUsesSection(FindImplementationUsesSection) then exit; + and not CheckUsesSection(FindImplementationUsesNode) then exit; except FreeAndNil(MissingUnits); raise; @@ -1655,8 +1664,8 @@ Result:=false; BuildTree(lsrInitializationStart); SourceChangeCache.MainScanner:=Scanner; - if not CommentUnitsInUsesSection(MissingUnits, SourceChangeCache, FindMainUsesSection) then exit; - if not CommentUnitsInUsesSection(MissingUnits, SourceChangeCache, FindImplementationUsesSection) then exit; + if not CommentUnitsInUsesSection(MissingUnits, SourceChangeCache, FindMainUsesNode) then exit; + if not CommentUnitsInUsesSection(MissingUnits, SourceChangeCache, FindImplementationUsesNode) then exit; if not SourceChangeCache.Apply then exit; Result:=true; end; @@ -1725,7 +1734,7 @@ Node:=Tree.Root; while Node<>nil do begin case Node.Desc of - ctnUseUnit,ctnUsesSection, + ctnUseUnit,ctnUsesSection,ctnUseUnitNamespace,ctnUseUnitClearName, ctnProgram,ctnUnit,ctnPackage,ctnLibrary,ctnEndPoint: begin // skip node @@ -1877,8 +1886,8 @@ BuildTree(lsrEnd); Identifiers:=nil; try - CheckUsesSection(FindMainUsesSection,false); - CheckUsesSection(FindImplementationUsesSection,true); + CheckUsesSection(FindMainUsesNode,false); + CheckUsesSection(FindImplementationUsesNode,true); finally Identifiers.Free; end; @@ -1901,10 +1910,13 @@ InitializationNode:=FindInitializationNode; if InitializationNode=nil then exit; LinkIndex:=Scanner.LinkIndexAtCleanPos(InitializationNode.StartPos); - end else + end else begin + InitializationNode:=nil; inc(LinkIndex); + end; if (LinkIndex<0) or (LinkIndex>=Scanner.LinkCount) then exit; StartCode:=TCodeBuffer(Scanner.Links[LinkIndex].Code); + // ToDo: Fix the test for InitializationNode, it can be Nil. while (LinkIndex<Scanner.LinkCount) and (Scanner.Links[LinkIndex].CleanedPos<InitializationNode.EndPos) do begin Result:=TCodeBuffer(Scanner.Links[LinkIndex].Code); @@ -2063,6 +2075,7 @@ IncludeEnd:=Scanner.Links[LinkIndex].CleanedPos; IncludeStart:=IncludeEnd-1; if IncludeStart<1 then exit; + FileEnd:=0; case Src[IncludeStart] of '}': begin @@ -2188,6 +2201,7 @@ {$IFDEF VerboseCheckLFM} debugln('FindNonPublishedDefineProperty Path=',LFMNode.GetPath,' NO DEFINE PROPERTIES'); {$ENDIF} + if DefaultErrorPosition=0 then ; end; end; Result:=IsDefined; @@ -2401,7 +2415,7 @@ fdfIgnoreOverloadedProcs]; Params.ContextNode:=FindInterfaceNode; if Params.ContextNode=nil then - Params.ContextNode:=FindMainUsesSection; + Params.ContextNode:=FindMainUsesNode; Params.SetIdentifier(StartTool,Identifier,nil); try Params.Save(OldInput); @@ -2460,13 +2474,14 @@ VariableTypeName:=''; if (ChildContext.Node.Desc=ctnVarDefinition) then begin DefinitionNode:=ChildContext.Tool.FindTypeNodeOfDefinition(ChildContext.Node); - if DefinitionNode<>nil then begin + if DefinitionNode<>nil then VariableTypeName:=ChildContext.Tool.ExtractDefinitionNodeType(ChildContext.Node); - end; end else if (ChildContext.Node.Desc=ctnProperty) then begin DefinitionNode:=ChildContext.Node; VariableTypeName:=ChildContext.Tool.ExtractPropType(ChildContext.Node,false,false); - end; + end + else + DefinitionNode:=nil; if DefinitionNode=nil then begin LFMTree.AddError(lfmeObjectIncompatible,LFMObject, LFMObjectName+' is not a variable' @@ -2815,10 +2830,14 @@ then exit; BuildTree(lsrEnd); Beauty:=SourceChangeCache.BeautifyCodeOptions; - MainBeginNode:=FindMainBeginEndNode; - if MainBeginNode=nil then exit; + if StartPos<1 then begin + MainBeginNode:=FindMainBeginEndNode; + if MainBeginNode=nil then exit; + StartPos:=MainBeginNode.StartPos; + if StartPos<1 then exit; + end; FromPos:=-1; - if FindCreateFormStatement(MainBeginNode.StartPos,OldClassName, + if FindCreateFormStatement(StartPos,OldClassName, OldVarName,OldPosition)=-1 then begin // does not exist if OnlyIfExists then begin @@ -3523,13 +3542,6 @@ Result:=true; end; -function TStandardCodeTool.ReplaceCode(const StartPos, EndPos: TCodeXYPosition; - const NewCode: string; SourceChangeCache: TSourceChangeCache): boolean; -begin - Result:=false; - RaiseException('TStandardCodeTool.ReplaceCode not implemented yet'); -end; - function TStandardCodeTool.GetStringConstAsFormatString(StartPos, EndPos: integer; out FormatStringConstant, FormatParameters: string; out StartInStringConst, EndInStringConst: boolean): boolean; @@ -4297,7 +4309,7 @@ NearestNode:=CursorTool.FindNearestIdentifierNode(CursorPos,IdentTree); if NearestNode=nil then exit; // convert node to cleanpos - NearestCleanPos:=PtrUInt(NearestNode.Data)-PtrUInt(@SectionTool.Src[1])+1; + NearestCleanPos:={%H-}PtrUInt(NearestNode.Data)-{%H-}PtrUInt(@SectionTool.Src[1])+1; // convert cleanpos to caret CleanPosToCaret(NearestCleanPos,NearestPos); finally @@ -4976,6 +4988,57 @@ end; end; +function TStandardCodeTool.InsertStatements( + InsertPos: TInsertStatementPosDescription; Statements: string; + SourceChangeCache: TSourceChangeCache): boolean; +var + CleanCursorPos: integer; +begin + BeginParsingAndGetCleanPos(lsrEnd,InsertPos.CodeXYPos,CleanCursorPos); + Result:=InsertStatements(CleanCursorPos,Statements,InsertPos.Indent, + InsertPos.FrontGap,InsertPos.AfterGap,SourceChangeCache); + Result:=SourceChangeCache.Apply; +end; + +function TStandardCodeTool.InsertStatements(CleanPos: integer; + Statements: string; Indent: integer; FrontGap, AfterGap: TGapTyp; + SourceChangeCache: TSourceChangeCache): boolean; +{ + ToDo: check for "uses" in Statements and extend uses section + e.g. "uses unit1, unit2 in 'filename'; statements + ToDo: check for single statement (e.g. for .. do | dosome;) and add begin/end + + } +var + Node: TCodeTreeNode; + SameArea: TAtomPosition; + BeautifyFlags: TBeautifyCodeFlags; +begin + Node:=FindDeepestNodeAtPos(CleanPos,true); + if not (Node.Desc in AllPascalStatements) then begin + MoveCursorToCleanPos(CleanPos); + RaiseException('invalid position for insertion of statements'); + end; + if Node.Desc=ctnBeginBlock then + Node:=BuildSubTreeAndFindDeepestNodeAtPos(Node,CleanPos,true); + + GetCleanPosInfo(Node.StartPos,CleanPos,false,SameArea); + if (SameArea.StartPos>SrcLen) or (not IsSpaceChar[Src[SameArea.StartPos]]) + then begin + MoveCursorToCleanPos(CleanPos); + RaiseException('invalid position for insertion of statements'); + end; + + SourceChangeCache.MainScanner:=Scanner; + BeautifyFlags:=[bcfIndentExistingLineBreaks]; + if FrontGap in [gtNone,gtSpace] then + include(BeautifyFlags,bcfDoNotIndentFirstLine); + Statements:=SourceChangeCache.BeautifyCodeOptions.BeautifyStatement( + Statements,Indent,BeautifyFlags); + + Result:=SourceChangeCache.Replace(FrontGap,AfterGap,CleanPos,CleanPos,Statements); +end; + function TStandardCodeTool.FindBlockCounterPart( const CursorPos: TCodeXYPosition; out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean; @@ -5348,7 +5411,7 @@ procedure InitStack(out Stack: TBlockStack); begin - FillByte(Stack,SizeOf(Stack),0); + FillByte(Stack{%H-},SizeOf(Stack),0); Stack.Top:=-1; end; @@ -5403,6 +5466,7 @@ var p: LongInt; begin + Result:=false; if NewCode='' then exit(true); // try to avoid changing current line if (FrontGap=gtEmptyLine) then begin @@ -5983,7 +6047,7 @@ Result:=true; end; - function CompleteClassSection(var Stack: TBlockStack): Boolean; + function CompleteClassSection: Boolean; { type TMyClass = class | @@ -6045,7 +6109,7 @@ Result:=true; end; - function CompleteClassInterface(var Stack: TBlockStack): Boolean; + function CompleteClassInterface: Boolean; { type TMyClass = interface | @@ -6077,7 +6141,7 @@ Result:=true; end; - function CompleteRecord(var Stack: TBlockStack): Boolean; + function CompleteRecord: Boolean; { type TMyClass = record | @@ -6114,6 +6178,7 @@ begin Result:=false; NewPos:=CursorPos; + NewTopLine:=-1; BuildTreeAndGetCleanPos(trTillCursor,lsrEnd,CursorPos,CleanCursorPos, [btSetIgnoreErrorPos]); StartNode:=FindDeepestNodeAtPos(CleanCursorPos,true); @@ -6136,13 +6201,13 @@ else if (StartNode.Desc in AllClassSections) or ((StartNode.Desc in AllClassSubSections) and (StartNode.Parent.Desc in AllClassSections)) then begin - if not CompleteClassSection(Stack) then exit; + if not CompleteClassSection then exit; end else if StartNode.Desc in AllClassInterfaces then begin - if not CompleteClassInterface(Stack) then exit; + if not CompleteClassInterface then exit; end else if StartNode.Desc=ctnRecordType then begin - if not CompleteRecord(Stack) then exit; + if not CompleteRecord then exit; end; finally FreeStack(Stack); @@ -6184,12 +6249,14 @@ end; function TStandardCodeTool.FindEnclosingIncludeDirective( - const CursorPos: TCodeXYPosition; out NewPos: TCodeXYPosition; - var NewTopLine: integer): boolean; + const CursorPos: TCodeXYPosition; out NewPos: TCodeXYPosition; out + NewTopLine: integer): boolean; var CleanCursorPos, LinkIndex, NewCleanPos: integer; begin Result:=false; + NewPos:=CleanCodeXYPosition; + NewTopLine:=-1; try BuildTreeAndGetCleanPos(trTillCursor,lsrEnd,CursorPos,CleanCursorPos, [btSetIgnoreErrorPos]); @@ -6294,7 +6361,7 @@ Indent:=Beauty.GetLineIndent(Src,ANode.StartPos); InsertPos:=ANode.StartPos; end else begin - ANode:=FindMainUsesSection; + ANode:=FindMainUsesNode; if ANode<>nil then begin Indent:=Beauty.GetLineIndent(Src,ANode.StartPos); InsertPos:=ANode.StartPos; diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdtbase.pas lazarus-1.6+dfsg/components/codetools/tests/fdtbase.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdtbase.pas 2013-02-06 18:17:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdtbase.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ -{ - Test with: - ./finddeclarationtest --format=plain --suite=TTestFindDeclarationClassHelper - ./finddeclarationtest --format=plain --suite=TestFindDeclaration_Base - ./finddeclarationtest --format=plain --suite=TestFindDeclaration_NestedClasses - ./finddeclarationtest --format=plain --suite=TestFindDeclaration_ClassHelper -} -unit fdtbase; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, CodeToolManager, ExprEval, CodeCache, BasicCodeTools, - CustomCodeTool, CodeTree, FindDeclarationTool, LazLogger, LazFileUtils, - fpcunit, testregistry; - -type - - { TTestFindDeclaration } - - TTestFindDeclaration = class(TTestCase) - private - procedure FindDeclarations(Filename, Marker: string); - published - procedure TestFindDeclaration_Base; - procedure TestFindDeclaration_NestedClasses; - procedure TestFindDeclaration_ClassHelper; - end; - -var - BugsTestSuite: TTestSuite; - FindDeclarationTestSuite: TTestSuite; - -procedure AddToBugsTestSuite(ATest: TTest); -procedure AddToFindDeclarationTestSuite(ATestClass: TClass); - -implementation - -procedure AddToBugsTestSuite(ATest: TTest); -begin - BugsTestSuite.AddTest(ATest); -end; - -procedure AddToFindDeclarationTestSuite(ATestClass: TClass); -begin - FindDeclarationTestSuite.AddTestSuiteFromClass(ATestClass); -end; - -{ TTestFindDeclaration } - -procedure TTestFindDeclaration.FindDeclarations(Filename, - Marker: string); - - procedure PrependPath(Prefix: string; var Path: string); - begin - if Path<>'' then Path:='.'+Path; - Path:=Prefix+Path; - end; - -var - Code: TCodeBuffer; - Tool: TCodeTool; - p: Integer; - StartPos: Integer; - ExpectedPath: String; - PathPos: Integer; - CursorPos, FoundCursorPos: TCodeXYPosition; - FoundTopLine: integer; - FoundTool: TFindDeclarationTool; - FoundCleanPos: Integer; - FoundNode: TCodeTreeNode; - FoundPath: String; -begin - Filename:=TrimAndExpandFilename(Filename); - Code:=CodeToolBoss.LoadFile(Filename,true,false); - if Code=nil then - raise Exception.Create('unable to load '+Filename); - if not CodeToolBoss.Explore(Code,Tool,true) then begin - AssertEquals('parse error '+CodeToolBoss.ErrorMessage,false,true); - exit; - end; - p:=1; - while p<Tool.SrcLen do begin - p:=FindNextComment(Tool.Src,p); - if p>Tool.SrcLen then break; - StartPos:=p; - p:=FindCommentEnd(Tool.Src,p,Tool.Scanner.NestedComments); - if Tool.Src[StartPos]<>'{' then continue; - PathPos:=StartPos+1; - //debugln(['TTestFindDeclaration.FindDeclarations Comment: ',dbgstr(Tool.Src,StartPos,p-StartPos)]); - if copy(Tool.Src,PathPos,length(Marker))<>Marker then continue; - PathPos+=length(Marker); - ExpectedPath:=copy(Tool.Src,PathPos,p-1-PathPos); - //debugln(['TTestFindDeclaration.FindDeclarations ExpectedPath=',ExpectedPath]); - Tool.CleanPosToCaret(StartPos-1,CursorPos); - if not CodeToolBoss.FindDeclaration(CursorPos.Code,CursorPos.X,CursorPos.Y, - FoundCursorPos.Code,FoundCursorPos.X,FoundCursorPos.Y,FoundTopLine) - then begin - AssertEquals('find declaration failed at '+Tool.CleanPosToStr(StartPos-1)+': '+CodeToolBoss.ErrorMessage,false,true); - continue; - end else begin - FoundTool:=CodeToolBoss.GetCodeToolForSource(FoundCursorPos.Code,true,true) as TFindDeclarationTool; - FoundTool.CaretToCleanPos(FoundCursorPos,FoundCleanPos); - FoundNode:=FoundTool.FindDeepestNodeAtPos(FoundCleanPos,true); - FoundPath:=''; - while FoundNode<>nil do begin - case FoundNode.Desc of - ctnTypeDefinition,ctnVarDefinition,ctnConstDefinition: - PrependPath(GetIdentifier(@FoundTool.Src[FoundNode.StartPos]),FoundPath); - ctnInterface,ctnUnit: - PrependPath(FoundTool.GetSourceName(false),FoundPath); - end; - FoundNode:=FoundNode.Parent; - end; - //debugln(['TTestFindDeclaration.FindDeclarations FoundPath=',FoundPath]); - AssertEquals('find declaration wrong at '+Tool.CleanPosToStr(StartPos-1),LowerCase(ExpectedPath),LowerCase(FoundPath)); - end; - end; -end; - -procedure TTestFindDeclaration.TestFindDeclaration_Base; -begin - FindDeclarations('fdt_classhelper.pas','declaration:'); -end; - -procedure TTestFindDeclaration.TestFindDeclaration_NestedClasses; -begin - FindDeclarations('fdt_nestedclasses.pas','declaration:'); -end; - -procedure TTestFindDeclaration.TestFindDeclaration_ClassHelper; -begin - FindDeclarations('fdt_classhelper.pas','declaration-classhelper:'); -end; - -initialization - GetTestRegistry.TestName := 'All tests'; - BugsTestSuite := TTestSuite.Create('Bugs'); - GetTestRegistry.AddTest(BugsTestSuite); - FindDeclarationTestSuite := TTestSuite.Create('Parser'); - GetTestRegistry.AddTest(FindDeclarationTestSuite); - - AddToFindDeclarationTestSuite(TTestFindDeclaration); -end. - diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_basic.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_basic.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_basic.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_basic.pas 2015-10-13 20:12:32.000000000 +0000 @@ -0,0 +1,61 @@ +unit fdt_basic; + +{$mode objfpc}{$H+} + +interface + +uses + Classes{declaration:Classes}, SysUtils; + +type + TMyClass2 = class; + + { TMyClass1 } + + TMyClass1 = class + private + function GetItems(Index: Integer): TComponent; + public + constructor Create{declaration:System.TObject.Create}; + procedure DefaultHandler{declaration:System.TObject.DefaultHandler}(var message); override; + property Items[Index: Integer]: TComponent read GetItems; default; + end; + + { TMyClass2 } + + TMyClass2 = class(TMyClass1{declaration:fdt_basic.TMyClass1}) + public + procedure DefaultHandler(var message); override; + end; + +implementation + +{ TMyClass1 } + +function TMyClass1.GetItems(Index: Integer): TComponent; +begin + if Index=0 then ; + Result:=nil; +end; + +constructor TMyClass1{declaration:fdt_basic.TMyClass1}.Create{declaration:fdt_basic.TMyClass1.Create}; +begin + Self.Items{declaration:fdt_basic.TMyClass1.Items}[0].Name{declaration:Classes.TComponent.Name}:=''; + Self[0].Name{declaration:Classes.TComponent.Name}:=''; +end; + +procedure TMyClass1.DefaultHandler(var message); +begin + inherited DefaultHandler{declaration:System.TObject.DefaultHandler}( + message{declaration:TMyClass1.DefaultHandler.message}); +end; + +{ TMyClass2 } + +procedure TMyClass2.DefaultHandler(var message); +begin + inherited DefaultHandler{declaration:fdt_basic.TMyClass1.DefaultHandler}(message); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_classhelper.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_classhelper.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_classhelper.pas 2013-02-06 15:01:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_classhelper.pas 2015-10-07 21:19:17.000000000 +0000 @@ -1,3 +1,7 @@ +{ + Test with: + ./finddeclarationtest --format=plain --suite=TestFindDeclaration_ClassHelper +} unit fdt_classhelper; {$mode objfpc}{$H+} @@ -16,6 +20,21 @@ function MyVar: integer; end; + { TMyClass } + + TMyClass = class(TObject) + public + procedure Hello; + end; + + { TMyClassHelper } + + TMyClassHelper = class helper for TMyClass + public + procedure Hello2; + end; + + procedure DoIt; implementation @@ -25,10 +44,24 @@ sl: TStringList; begin sl:=TStringList{declaration:Classes.TStringList}.Create; - writeln('DoIt ',sl.MyVar{declaration-classhelper:fdt_classhelper.TStringsClassHelper.MyVar}); + writeln('DoIt ',sl.MyVar{declaration:fdt_classhelper.TStringsClassHelper.MyVar}); sl.Free; end; +{ TMyClassHelper } + +procedure TMyClassHelper.Hello2; +begin + +end; + +{ TMyClass } + +procedure TMyClass.Hello; +begin + Self.Hello2{declaration:fdt_classhelper.TMyClassHelper.Hello2}; +end; + { TStringsClassHelper } function TStringsClassHelper.MyVar: integer; diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_generics.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_generics.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_generics.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_generics.pas 2015-11-16 22:23:22.000000000 +0000 @@ -0,0 +1,48 @@ +{ + ./testcodetools --format=plain --suite=TestFindDeclaration_Generics +} +unit fdt_generics; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +type + generic TGenBaseAction<GenParam1> = class + BaseName: GenParam1{declaration:fdt_generics.TGenBaseAction.GenParam1}; + end; + + generic TGenCustomAction<GenParam2> = class(specialize TGenBaseAction{declaration:fdt_generics.TGenBaseAction}<GenParam2>) + CustomName: GenParam2; + end; + + { TGenAction } + + generic TGenAction<GenParam3> = class(specialize TGenCustomAction{declaration:fdt_generics.TGenCustomAction}<GenParam3>) + ActionName: GenParam3; + procedure InitActionName; + end; + + TIntegerAction = specialize TGenAction<integer>; + +implementation + +procedure DoSomething; +var + Action: TIntegerAction; +begin + Action.ActionName{declaration:fdt_generics.TGenAction.ActionName}:=3; +end; + +{ TGenAction } + +procedure TGenAction.InitActionName; +begin + ActionName{declaration:fdt_generics.TGenAction.ActionName}:=3; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_nestedclasses.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_nestedclasses.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_nestedclasses.pas 2013-02-06 18:20:42.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_nestedclasses.pas 2015-11-16 20:46:28.000000000 +0000 @@ -1,3 +1,6 @@ +{ + ./testcodetools --format=plain --suite=TestFindDeclaration_NestedClasses +} unit fdt_nestedclasses; {$mode objfpc}{$H+} @@ -18,6 +21,7 @@ TCustomClass = class(TBaseClass) public type TCustomSubClass = class(TBaseSubClass{declaration:fdt_nestedclasses.TBaseClass.TBaseSubClass}) + public procedure DoSomething; override; end; end; @@ -38,6 +42,10 @@ end; - +var + s: TCustomClass.TCustomSubClass; +begin + s:=TCustomClass.TCustomSubClass{declaration:fdt_nestedclasses.TCustomClass.TCustomSubClass}.Create; + s.DoSomething{declaration:fdt_nestedclasses.TCustomClass.TCustomSubClass.DoSomething}; end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_objccategory.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_objccategory.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_objccategory.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_objccategory.pas 2015-08-16 10:57:46.000000000 +0000 @@ -0,0 +1,78 @@ +{ + Test with: + ./finddeclarationtest --format=plain --suite=TestFindDeclaration_ObjCCategory +} +unit fdt_objccategory; + +{$mode objfpc}{$H+} +{$ModeSwitch objectivec1} + +interface + +uses + Classes, SysUtils; + +type + + { TMyObjCClassB1 } + + TMyObjCClassB1 = objcclass(NSObject) + end; + + { TCategoryA } + + TCategoryA = objccategory(NSObject) + procedure categoryAmethod; message 'categoryAmethod'; + end; + + { TCategoryB } + + TCategoryB = objccategory(TMyObjCClassB1) + procedure categoryBmethod; message 'categoryBmethod'; + end; + + { TCategoryC } + + TCategoryC = objccategory(TMyObjCClassB1) + // contrary to helpers there can be multiple ObjCCategory active for a class + procedure categoryCmethod; message 'categoryCmethod'; + end; + +procedure DoIt; + +implementation + +procedure DoIt; +var + a: TMyObjCClassB1; +begin + a:=TMyObjCClassB1.alloc.init{declaration:objcbase.NSObject.init}; + a.categoryAmethod{declaration:fdt_objccategory.TCategoryA.categoryAmethod}; + a.categoryBmethod{declaration:fdt_objccategory.TCategoryB.categoryBmethod}; + a.categoryCmethod{declaration:fdt_objccategory.TCategoryC.categoryCmethod}; + a.dealloc; +end; + +{ TCategoryA } + +procedure TCategoryA.categoryAmethod; +begin + +end; + +{ TCategoryB } + +procedure TCategoryB.categoryBmethod; +begin + +end; + +{ TCategoryC } + +procedure TCategoryC.categoryCmethod; +begin + +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_objcclass.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_objcclass.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_objcclass.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_objcclass.pas 2015-08-16 10:58:04.000000000 +0000 @@ -0,0 +1,33 @@ +{ + Test with: + ./finddeclarationtest --format=plain --suite=TestFindDeclaration_ObjCClass +} +unit fdt_objcclass; + +{$mode objfpc}{$H+} +{$ModeSwitch objectivec1} + +interface + +uses + Classes, SysUtils; + +type + TMyObjCClassA1 = objcclass(NSObject) // ObjCClass with implicit ancestor NSObject + + end; + +procedure DoIt; + +implementation + +procedure DoIt; +var + a: TMyObjCClassA1; +begin + a:=TMyObjCClassA1.alloc{declaration:objcbase.NSObject.alloc}.init{declaration:objcbase.NSObject.init}; + a.dealloc; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_typehelper.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_typehelper.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_typehelper.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_typehelper.pas 2015-11-16 20:46:28.000000000 +0000 @@ -0,0 +1,114 @@ +{ + ./testcodetools --format=plain --suite=TestFindDeclaration_TypeHelper +} +unit fdt_typehelper; + +{$mode objfpc}{$H+} +{$ModeSwitch typehelpers} + +interface + +uses + Classes, SysUtils; + +type + + { TShortStringTypeHelper } + + TShortStringTypeHelper = type helper for ShortString + public + function MyVar: integer; + end; + + { TStringTypeHelper } + + TStringTypeHelper = type helper for String + public + function Get45: integer; + end; + + { TLongIntTypeHelper } + + TLongIntTypeHelper = type helper for LongInt + public + function GetStr: string; + end; + + { TEnumTypeHelperOld } + + TEnumTypeHelperOld = type helper for TShiftStateEnum + public + function Old78: integer; + end; + + { TEnumTypeHelper } + + TEnumTypeHelper = type helper(TEnumTypeHelperOld) for TShiftStateEnum + public + function Get78: integer; + end; + +procedure DoIt; + +implementation + +procedure DoIt; +var + ShortS: ShortString; + AnsiS: string; + i: integer; + e: TShiftStateEnum; +begin + ShortS:='ABC'; + writeln('DoIt ',ShortS.MyVar{declaration:fdt_typehelper.TShortStringTypeHelper.MyVar}); + + i:='Hello'.Get45{declaration:fdt_typehelper.TStringTypeHelper.Get45}; + if i<>45 then ; + + AnsiS:=i.GetStr{declaration:fdt_typehelper.TLongIntTypeHelper.GetStr}; + if AnsiS<>'' then ; + + e:=ssDouble; + i:=e.Old78{declaration:fdt_typehelper.TEnumTypeHelperOld.Old78}; + if i<>78 then ; + i:=e.Get78{declaration:fdt_typehelper.TEnumTypeHelper.Get78}; + if i<>78 then ; +end; + +{ TEnumTypeHelperOld } + +function TEnumTypeHelperOld.Old78: integer; +begin + Result:=78; +end; + +{ TEnumTypeHelper } + +function TEnumTypeHelper.Get78: integer; +begin + Result:=78; +end; + +{ TLongIntTypeHelper } + +function TLongIntTypeHelper.GetStr: string; +begin + Result:=IntToStr(Self) +end; + +{ TShortStringTypeHelper } + +function TShortStringTypeHelper.MyVar: integer; +begin + Result:=123; +end; + +{ TStringTypeHelper } + +function TStringTypeHelper.Get45: integer; +begin + Result:=45; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fdt_with.pas lazarus-1.6+dfsg/components/codetools/tests/fdt_with.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/fdt_with.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fdt_with.pas 2015-10-12 21:57:21.000000000 +0000 @@ -0,0 +1,49 @@ +unit fdt_with; + +{$mode objfpc}{$H+} + +interface + +type + TTest = class + public + I: string; + end; + + TContainer = class + public + Sub: TTest; + I: string; + end; + +implementation + +procedure Test; +var + Test: TTest{declaration:fdt_with.TTest}; + A: array[0..9] of string; + X: string; + aContainer: TContainer{declaration:fdt_with.TContainer}; + I: integer; +begin + with Test{declaration:Test.Test} do + begin + I{declaration:fdt_with.TTest.I} := 'hello'; + A{declaration:Test.A}[0] := 'abc'; + end; + + aContainer:=TContainer.Create; + with aContainer{declaration:Test.aContainer}, Sub{declaration:fdt_with.TContainer.Sub} do begin + I{declaration:fdt_with.TTest.I} := 'tool'; + end; + + for I{guesstype:Integer} := Low(A{declaration:Test.A}) to High(A) do + begin + Test.I{declaration:fdt_with.TTest.I} := 'bye'; + X{declaration:Test.X} := A[I]; + end; + if X='' then ; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/finddeclarationtest.lpi lazarus-1.6+dfsg/components/codetools/tests/finddeclarationtest.lpi --- lazarus-1.4.4+dfsg/components/codetools/tests/finddeclarationtest.lpi 2013-02-06 18:17:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/finddeclarationtest.lpi 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -<?xml version="1.0"?> -<CONFIG> - <ProjectOptions> - <Version Value="9"/> - <General> - <Flags> - <MainUnitHasCreateFormStatements Value="False"/> - <MainUnitHasTitleStatement Value="False"/> - </Flags> - <SessionStorage Value="InIDEConfig"/> - <MainUnit Value="0"/> - <Title Value="finddeclarationtest"/> - <UseAppBundle Value="False"/> - <ResourceType Value="res"/> - </General> - <i18n> - <EnableI18N LFM="False"/> - </i18n> - <VersionInfo> - <StringTable ProductVersion=""/> - </VersionInfo> - <BuildModes Count="1"> - <Item1 Name="Default" Default="True"/> - </BuildModes> - <PublishOptions> - <Version Value="2"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> - </PublishOptions> - <RunParams> - <local> - <FormatVersion Value="1"/> - <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> - </local> - </RunParams> - <RequiredPackages Count="2"> - <Item1> - <PackageName Value="CodeTools"/> - </Item1> - <Item2> - <PackageName Value="fpcunitconsolerunner"/> - </Item2> - </RequiredPackages> - <Units Count="4"> - <Unit0> - <Filename Value="finddeclarationtest.lpr"/> - <IsPartOfProject Value="True"/> - <UnitName Value="finddeclarationtest"/> - </Unit0> - <Unit1> - <Filename Value="fdtbase.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="fdtbase"/> - </Unit1> - <Unit2> - <Filename Value="fdt_classhelper.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="fdt_classhelper"/> - </Unit2> - <Unit3> - <Filename Value="fdt_nestedclasses.pas"/> - <IsPartOfProject Value="True"/> - <UnitName Value="fdt_nestedclasses"/> - </Unit3> - </Units> - </ProjectOptions> - <CompilerOptions> - <Version Value="11"/> - <Target> - <Filename Value="finddeclarationtest"/> - </Target> - <SearchPaths> - <IncludeFiles Value="$(ProjOutDir)"/> - <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> - </SearchPaths> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> - </CompilerOptions> - <Debugging> - <Exceptions Count="3"> - <Item1> - <Name Value="EAbort"/> - </Item1> - <Item2> - <Name Value="ECodetoolError"/> - </Item2> - <Item3> - <Name Value="EFOpenError"/> - </Item3> - </Exceptions> - </Debugging> -</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/finddeclarationtest.lpr lazarus-1.6+dfsg/components/codetools/tests/finddeclarationtest.lpr --- lazarus-1.4.4+dfsg/components/codetools/tests/finddeclarationtest.lpr 2013-02-06 18:17:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/finddeclarationtest.lpr 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -{ Copyright (C) 2013 Mattias Gaertner - - This source is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at your option) - any later version. - - This code is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - details. - - A copy of the GNU General Public License is available on the World Wide Web - at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing - to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. -} -program finddeclarationtest; - -{$mode objfpc}{$H+} - -uses - Classes, sysutils, consoletestrunner, dom, fpcunit, CodeToolManager, - CodeToolsConfig, LazLogger, fdtbase, fdt_classhelper, fdt_nestedclasses; - -const - ConfigFilename = 'codetools.config'; - -type - - { TCTTestRunner } - - TCTTestRunner = class(TTestRunner) - private - FSubmitter: string; - FMachine: string; - protected - Options: TCodeToolsOptions; - procedure AppendLongOpts; override; - procedure ParseOptions; override; - procedure WriteCustomHelp; override; - - procedure ExtendXmlDocument(Doc: TXMLDocument); override; - public - destructor Destroy; override; - end; - -{ TCTTestRunner } - -procedure TCTTestRunner.AppendLongOpts; -begin - inherited AppendLongOpts; - LongOpts.Add('machine:'); - LongOpts.Add('submitter:'); -end; - -procedure TCTTestRunner.ParseOptions; -begin - inherited ParseOptions; - - if Options=nil then - Options:=TCodeToolsOptions.Create; - if FileExists(ConfigFilename) then begin - // To not parse the FPC sources every time, the options are saved to a file. - Options.LoadFromFile(ConfigFilename); - end; - DebugLn(['EnvironmentVariables: PP, FPCDIR, LAZARUSDIR, FPCTARGET, FPCTARGETCPU']); - Options.InitWithEnvironmentVariables; - - if HasOption('submitter') then - FSubmitter := GetOptionValue('submitter'); - if HasOption('machine') then - FMachine := GetOptionValue('machine'); - - if Options.FPCSrcDir='' then - Options.FPCSrcDir:=ExpandFileName('~/freepascal/fpc'); - if Options.LazarusSrcDir='' then - Options.LazarusSrcDir:=ExpandFileName('~/pascal/lazarus'); - - CodeToolBoss.Init(Options); - - // save the options and the FPC unit links results. - Options.SaveToFile(ConfigFilename); -end; - -procedure TCTTestRunner.WriteCustomHelp; -begin - inherited WriteCustomHelp; - writeln('Environment variables:'); - writeln(' PP=path of the compiler'); - writeln(' FPCDIR=path of the fpc sources'); - writeln(' LAZARUSDIR=path of the lazarus sources'); - writeln(' FPCTARGET=target OS'); - writeln(' FPCTARGETCPU=target cpu'); - writeln; - writeln('Command line parameters:'); - writeln(' --submitter=SubmitterName name of sumbitter of the test results'); - writeln(' --machine=MachineName name of the machine the test runs on'); -end; - -destructor TCTTestRunner.Destroy; -begin - FreeAndNil(Options); - inherited Destroy; -end; - -procedure TCTTestRunner.ExtendXmlDocument(Doc: TXMLDocument); -var - env: TDOMElement; - procedure AddElement(const name, value: string); - var - n: TDOMElement; - begin - n := Doc.CreateElement(WideString(name)); - n.AppendChild(Doc.CreateTextNode(WideString(value))); - env.AppendChild(n); - end; -begin - inherited ExtendXmlDocument(Doc); - env := Doc.CreateElement('Environment'); - AddElement('CPU', {$I %FPCTARGETCPU%}); - AddElement('OS', {$I %FPCTARGETOS%}); - AddElement('FPCVersion', {$I %FPCVERSION%}); - AddElement('Submitter', FSubmitter); - AddElement('Machine', FMachine); - Doc.FirstChild.AppendChild(env); -end; - -var - App: TCTTestRunner; -begin - App := TCTTestRunner.Create(nil); - App.Initialize; - App.Title := 'FPCUnit Console runner for the CodeTools Find Declaration Suite.'; - App.Run; - App.Free; -end. - diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/finddeclarationtests.pas lazarus-1.6+dfsg/components/codetools/tests/finddeclarationtests.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/finddeclarationtests.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/finddeclarationtests.pas 2015-11-16 22:19:30.000000000 +0000 @@ -0,0 +1,326 @@ +{ + Test with: + ./testcodetools --format=plain --suite=TTestFindDeclaration + ./testcodetools --format=plain --suite=TestFindDeclaration_Basic + ./testcodetools --format=plain --suite=TestFindDeclaration_With + ./testcodetools --format=plain --suite=TestFindDeclaration_NestedClasses + ./testcodetools --format=plain --suite=TestFindDeclaration_ClassHelper + ./testcodetools --format=plain --suite=TestFindDeclaration_TypeHelper + ./testcodetools --format=plain --suite=TestFindDeclaration_ObjCClass + ./testcodetools --format=plain --suite=TestFindDeclaration_ObjCCategory + ./testcodetools --format=plain --suite=TestFindDeclaration_Generics + + FPC tests: + ./testcodetools --format=plain --suite=TestFindDeclaration_FPCTests + ./testcodetools --format=plain --suite=TestFindDeclaration_FPCTests --filemask=t*.pp + ./testcodetools --format=plain --suite=TestFindDeclaration_FPCTests --filemask=tchlp41.pp + Laz tests: + ./testcodetools --format=plain --suite=TestFindDeclaration_LazTests + ./testcodetools --format=plain --suite=TestFindDeclaration_LazTests --filemask=t*.pp + ./testcodetools --format=plain --suite=TestFindDeclaration_LazTests --filemask=tdefaultproperty1.pp +} +unit FindDeclarationTests; + +{$mode objfpc}{$H+} + +{off $define VerboseFindDeclarationTests} + +interface + +uses + Classes, SysUtils, CodeToolManager, ExprEval, CodeCache, BasicCodeTools, + CustomCodeTool, CodeTree, FindDeclarationTool, KeywordFuncLists, + IdentCompletionTool, FileProcs, LazLogger, LazFileUtils, fpcunit, + testregistry; + +type + + { TTestFindDeclaration } + + TTestFindDeclaration = class(TTestCase) + private + procedure FindDeclarations(Filename: string); + procedure TestFiles(Directory: string); + published + procedure TestFindDeclaration_Basic; + procedure TestFindDeclaration_With; + procedure TestFindDeclaration_NestedClasses; + procedure TestFindDeclaration_ClassHelper; + procedure TestFindDeclaration_TypeHelper; + procedure TestFindDeclaration_ObjCClass; + procedure TestFindDeclaration_ObjCCategory; + procedure TestFindDeclaration_Generics; + procedure TestFindDeclaration_FPCTests; + procedure TestFindDeclaration_LazTests; + end; + +var + BugsTestSuite: TTestSuite; + FindDeclarationTestSuite: TTestSuite; + +implementation + +{ TTestFindDeclaration } + +procedure TTestFindDeclaration.FindDeclarations(Filename: string); + + procedure PrependPath(Prefix: string; var Path: string); + begin + if Path<>'' then Path:='.'+Path; + Path:=Prefix+Path; + end; + + function NodeAsPath(Tool: TFindDeclarationTool; Node: TCodeTreeNode): string; + begin + Result:=''; + while Node<>nil do begin + case Node.Desc of + ctnTypeDefinition,ctnVarDefinition,ctnConstDefinition,ctnGenericParameter: + PrependPath(GetIdentifier(@Tool.Src[Node.StartPos]),Result); + ctnGenericType: + PrependPath(GetIdentifier(@Tool.Src[Node.FirstChild.StartPos]),Result); + ctnInterface,ctnUnit: + PrependPath(Tool.GetSourceName(false),Result); + ctnProcedure: + PrependPath(Tool.ExtractProcName(Node,[]),Result); + ctnProperty: + PrependPath(Tool.ExtractPropName(Node,false),Result); + //else debugln(['NodeAsPath ',Node.DescAsString]); + end; + Node:=Node.Parent; + end; + //debugln(['NodeAsPath ',Result]); + end; + +var + Code: TCodeBuffer; + Tool: TCodeTool; + CommentP: Integer; + p: Integer; + ExpectedPath: String; + PathPos: Integer; + CursorPos, FoundCursorPos: TCodeXYPosition; + FoundTopLine: integer; + FoundTool: TFindDeclarationTool; + FoundCleanPos: Integer; + FoundNode: TCodeTreeNode; + FoundPath: String; + Src: String; + NameStartPos, i, l, IdentifierStartPos: Integer; + Marker, ExpectedType, NewType: String; + IdentItem: TIdentifierListItem; + ItsAKeyword, IsSubIdentifier: boolean; + ExistingDefinition: TFindContext; + ListOfPFindContext: TFPList; + NewExprType: TExpressionType; +begin + Filename:=TrimAndExpandFilename(Filename); + {$IFDEF VerboseFindDeclarationTests} + debugln(['TTestFindDeclaration.FindDeclarations File=',Filename]); + {$ENDIF} + Code:=CodeToolBoss.LoadFile(Filename,true,false); + if Code=nil then + raise Exception.Create('unable to load '+Filename); + if not CodeToolBoss.Explore(Code,Tool,true) then begin + AssertEquals('parse error '+CodeToolBoss.ErrorMessage,false,true); + exit; + end; + CommentP:=1; + Src:=Tool.Src; + while CommentP<length(Src) do begin + CommentP:=FindNextComment(Src,CommentP); + if CommentP>length(Src) then break; + p:=CommentP; + CommentP:=FindCommentEnd(Src,CommentP,Tool.Scanner.NestedComments); + if Src[p]<>'{' then continue; + IdentifierStartPos:=p; + inc(p); + NameStartPos:=p; + if not IsIdentStartChar[Src[p]] then continue; + while (p<=length(Src)) and (IsIdentChar[Src[p]]) do inc(p); + Marker:=copy(Src,NameStartPos,p-NameStartPos); + if (p>length(Src)) or (Src[p]<>':') then begin + AssertEquals('Expected : at '+Tool.CleanPosToStr(p,true),'declaration',Marker); + continue; + end; + inc(p); + PathPos:=p; + while (IdentifierStartPos>1) and (IsIdentChar[Src[IdentifierStartPos-1]]) do + dec(IdentifierStartPos); + + //debugln(['TTestFindDeclaration.FindDeclarations params: ',dbgstr(Tool.Src,p,CommentP-p)]); + if (Marker='declaration') then begin + ExpectedPath:=copy(Src,PathPos,CommentP-1-PathPos); + {$IFDEF VerboseFindDeclarationTests} + debugln(['TTestFindDeclaration.FindDeclarations searching "',Marker,'" at ',Tool.CleanPosToStr(NameStartPos-1),' ExpectedPath=',ExpectedPath]); + {$ENDIF} + Tool.CleanPosToCaret(IdentifierStartPos,CursorPos); + + // test FindDeclaration + if not CodeToolBoss.FindDeclaration(CursorPos.Code,CursorPos.X,CursorPos.Y, + FoundCursorPos.Code,FoundCursorPos.X,FoundCursorPos.Y,FoundTopLine) + then begin + if ExpectedPath<>'' then + AssertEquals('find declaration failed at '+Tool.CleanPosToStr(IdentifierStartPos,true)+': '+CodeToolBoss.ErrorMessage,true,false); + continue; + end else begin + FoundTool:=CodeToolBoss.GetCodeToolForSource(FoundCursorPos.Code,true,true) as TFindDeclarationTool; + FoundPath:=''; + if (FoundCursorPos.Y=1) and (FoundCursorPos.X=1) then begin + // unit + FoundPath:=ExtractFileNameOnly(FoundCursorPos.Code.Filename); + end else begin + FoundTool.CaretToCleanPos(FoundCursorPos,FoundCleanPos); + FoundNode:=FoundTool.FindDeepestNodeAtPos(FoundCleanPos,true); + //debugln(['TTestFindDeclaration.FindDeclarations Found: ',FoundTool.CleanPosToStr(FoundNode.StartPos,true)]); + FoundPath:=NodeAsPath(FoundTool,FoundNode); + end; + //debugln(['TTestFindDeclaration.FindDeclarations FoundPath=',FoundPath]); + AssertEquals('find declaration wrong at '+Tool.CleanPosToStr(IdentifierStartPos,true),LowerCase(ExpectedPath),LowerCase(FoundPath)); + end; + + // test identifier completion + if (ExpectedPath<>'') then begin + if not CodeToolBoss.GatherIdentifiers(CursorPos.Code,CursorPos.X,CursorPos.Y) + then begin + if ExpectedPath<>'' then + AssertEquals('GatherIdentifiers failed at '+Tool.CleanPosToStr(IdentifierStartPos,true)+': '+CodeToolBoss.ErrorMessage,false,true); + continue; + end else begin + i:=CodeToolBoss.IdentifierList.GetFilteredCount-1; + while i>=0 do begin + IdentItem:=CodeToolBoss.IdentifierList.FilteredItems[i]; + //debugln(['TTestFindDeclaration.FindDeclarations ',IdentItem.Identifier]); + l:=length(IdentItem.Identifier); + if ((l=length(ExpectedPath)) or (ExpectedPath[length(ExpectedPath)-l]='.')) + and (CompareText(IdentItem.Identifier,RightStr(ExpectedPath,l))=0) + then break; + dec(i); + end; + AssertEquals('GatherIdentifiers misses "'+ExpectedPath+'" at '+Tool.CleanPosToStr(IdentifierStartPos,true),true,i>=0); + end; + end; + end else if Marker='guesstype' then begin + ExpectedType:=copy(Src,PathPos,CommentP-1-PathPos); + {$IFDEF VerboseFindDeclarationTests} + debugln(['TTestFindDeclaration.FindDeclarations "',Marker,'" at ',Tool.CleanPosToStr(NameStartPos-1),' ExpectedType=',ExpectedType]); + {$ENDIF} + Tool.CleanPosToCaret(IdentifierStartPos,CursorPos); + + // test GuessTypeOfIdentifier + ListOfPFindContext:=nil; + try + if not CodeToolBoss.GuessTypeOfIdentifier(CursorPos.Code,CursorPos.X,CursorPos.Y, + ItsAKeyword, IsSubIdentifier, ExistingDefinition, ListOfPFindContext, + NewExprType, NewType) + then begin + if ExpectedType<>'' then + AssertEquals('GuessTypeOfIdentifier failed at '+Tool.CleanPosToStr(IdentifierStartPos,true)+': '+CodeToolBoss.ErrorMessage,false,true); + continue; + end else begin + //debugln(['TTestFindDeclaration.FindDeclarations FoundPath=',FoundPath]); + AssertEquals('GuessTypeOfIdentifier wrong at '+Tool.CleanPosToStr(IdentifierStartPos,true),LowerCase(ExpectedType),LowerCase(NewType)); + end; + finally + FreeListOfPFindContext(ListOfPFindContext); + end; + + end else begin + AssertEquals('Unknown marker at '+Tool.CleanPosToStr(IdentifierStartPos,true),'declaration',Marker); + continue; + end; + end; +end; + +procedure TTestFindDeclaration.TestFiles(Directory: string); +const + fmparam = '--filemask='; +var + Info: TSearchRec; + aFilename, Param, aFileMask: String; + i: Integer; + Verbose: Boolean; +begin + aFileMask:='t*.p*'; + Verbose:=false; + for i:=1 to ParamCount do begin + Param:=ParamStr(i); + if LeftStr(Param,length(fmparam))=fmparam then + aFileMask:=copy(Param,length(fmparam)+1,100); + if Param='-v' then + Verbose:=true; + end; + Directory:=AppendPathDelim(Directory); + + if FindFirstUTF8(Directory+aFileMask,faAnyFile,Info)=0 then begin + repeat + if faDirectory and Info.Attr>0 then continue; + aFilename:=Info.Name; + if not FilenameIsPascalUnit(aFilename) then continue; + if Verbose then + debugln(['TTestFindDeclaration.TestFiles File="',aFilename,'"']); + FindDeclarations(Directory+aFilename); + until FindNextUTF8(Info)<>0; + end; +end; + +procedure TTestFindDeclaration.TestFindDeclaration_Basic; +begin + FindDeclarations('fdt_basic.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_With; +begin + FindDeclarations('fdt_with.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_NestedClasses; +begin + FindDeclarations('fdt_nestedclasses.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_ClassHelper; +begin + FindDeclarations('fdt_classhelper.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_TypeHelper; +begin + FindDeclarations('fdt_typehelper.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_ObjCClass; +begin + FindDeclarations('fdt_objcclass.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_ObjCCategory; +begin + FindDeclarations('fdt_objccategory.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_Generics; +begin + FindDeclarations('fdt_generics.pas'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_FPCTests; +begin + TestFiles('fpctests'); +end; + +procedure TTestFindDeclaration.TestFindDeclaration_LazTests; +begin + TestFiles('laztests'); +end; + +initialization + GetTestRegistry.TestName := 'All tests'; + BugsTestSuite := TTestSuite.Create('Bugs'); + GetTestRegistry.AddTest(BugsTestSuite); + FindDeclarationTestSuite := TTestSuite.Create('FindDeclaration'); + GetTestRegistry.AddTest(FindDeclarationTestSuite); + + FindDeclarationTestSuite.AddTestSuiteFromClass(TTestFindDeclaration); +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/README.txt lazarus-1.6+dfsg/components/codetools/tests/fpctests/README.txt --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/README.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/README.txt 2015-10-16 08:07:03.000000000 +0000 @@ -0,0 +1,12 @@ +This directory contains tests from the FPC test/src directory, extended with +marks for the ../finddeclarationtest.lpi. + +Testing all these files: +./finddeclarationtest --format=plain --suite=TestFindDeclaration_FPCTests + +Testing one file: +./finddeclarationtest --format=plain --suite=TestFindDeclaration_FPCTests --filemask=tchlp41.pp + +Testing a bunch of files: +./finddeclarationtest --format=plain --suite=TestFindDeclaration_FPCTests --filemask=tchlp*.pp + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp14.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp14.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp14.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp14.pp 2015-10-18 22:27:22.000000000 +0000 @@ -0,0 +1,26 @@ +{ %NORUN } + +{ class helpers can access (strict) protected, public and published members - + here: strict protected } +program tchlp14; + +{$ifdef fpc} + {$mode delphi} +{$endif} + +uses + uchlp12; + +type + TTestHelper = class helper for TTest + function AccessTest: Integer; + end; + +function TTestHelper.AccessTest: Integer; +begin + Result := Test3{declaration:uchlp12.TTest.test3}; +end; + +begin +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp15.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp15.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp15.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp15.pp 2015-10-18 22:27:22.000000000 +0000 @@ -0,0 +1,26 @@ +{ %NORUN } + +{ class helpers can access (strict) protected, public and published members - + here: protected } +program tchlp15; + +{$ifdef fpc} + {$mode delphi} +{$endif} + +uses + uchlp12; + +type + TTestHelper = class helper for TTest + function AccessTest: Integer; + end; + +function TTestHelper.AccessTest: Integer; +begin + Result := Test4{declaration:uchlp12.TTest.test4}; +end; + +begin +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp36.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp36.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp36.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp36.pp 2015-10-08 14:03:52.000000000 +0000 @@ -0,0 +1,48 @@ +{ helper methods also influence calls to a parent's method in a derived class } +program tchlp36; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test: Integer; + end; + + TTestSub = class(TTest) + function AccessTest: Integer; + end; + + TTestHelper = class helper for TTest + function Test: Integer; + end; + +function TTest.Test: Integer; +begin + Result := 1; +end; + +function TTestSub.AccessTest: Integer; +begin + Result := inherited Test{declaration:TTestHelper.Test}; +end; + +function TTestHelper.Test: Integer; +begin + Result := 2; +end; + +var + t: TTestSub; + res: Integer; +begin + t := TTestSub.Create; + res := t.AccessTest{declaration:TTestSub.AccessTest}; + Writeln('f.AccessTest: ', res); + if res <> 2 then + Halt(1); + Writeln('ok'); +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp40.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp40.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp40.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp40.pp 2015-10-08 14:03:52.000000000 +0000 @@ -0,0 +1,41 @@ +{ methods of the extended class can be called using "inherited" } +program tchlp40; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test(aRecurse: Boolean): Integer; + end; + + TTestHelper = class helper for TTest + function Test(aRecurse: Boolean): Integer; + end; + +function TTest.Test(aRecurse: Boolean): Integer; +begin + Result := 1; +end; + +function TTestHelper.Test(aRecurse: Boolean): Integer; +begin + if aRecurse then + Result := inherited Test{declaration:TTest.Test}(False) + else + Result := 2; +end; + +var + t: TTest; + res: Integer; +begin + t := TTest.Create; + res := t.Test{declaration:TTestHelper.Test}(True); + Writeln('t.Test: ', res); + if res <> 1 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp41.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp41.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp41.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp41.pp 2015-10-07 23:44:48.000000000 +0000 @@ -0,0 +1,51 @@ +{ the extended class has higher priority than the parent class when + searching for symbols } +program tchlp41; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test(aRecurse: Boolean): Integer; + end; + + TTestHelper = class helper for TTest + function Test(aRecurse: Boolean): Integer; + end; + + TTestHelperSub = class helper(TTestHelper) for TTest + function Test(aRecurse: Boolean): Integer; + end; + +function TTest.Test(aRecurse: Boolean): Integer; +begin + Result := 1; +end; + +function TTestHelper.Test(aRecurse: Boolean): Integer; +begin + Result := 2; +end; + +function TTestHelperSub.Test(aRecurse: Boolean): Integer; +begin + if aRecurse then + Result := inherited Test{declaration:TTest.Test}(False) + else + Result := 3; +end; + +var + t: TTest; + res: Integer; +begin + t := TTest.Create; + res := t.Test{declaration:TTestHelperSub.Test}(True); + Writeln('t.Test: ', res); + if res <> 1 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp42.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp42.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp42.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp42.pp 2015-10-08 14:03:52.000000000 +0000 @@ -0,0 +1,51 @@ +{ the extended type is searched first for a inherited method even if it's + defined as "override" } +program tchlp42; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test(aRecurse: Boolean): Integer; virtual; + end; + + TObjectHelper = class helper for TObject + function Test(aRecurse: Boolean): Integer; virtual; + end; + + TTestHelper = class helper(TObjectHelper) for TTest + function Test(aRecurse: Boolean): Integer; override; + end; + +function TTest.Test(aRecurse: Boolean): Integer; +begin + Result := 1; +end; + +function TObjectHelper.Test(aRecurse: Boolean): Integer; +begin + Result := 2; +end; + +function TTestHelper.Test(aRecurse: Boolean): Integer; +begin + if aRecurse then + Result := inherited Test{declaration:TTest.Test}(False) + else + Result := 3; +end; + +var + t: TTest; + res: Integer; +begin + t := TTest.Create; + res := t.Test{declaration:TTestHelper.Test}(True); + Writeln('t.Test: ', res); + if res <> 1 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp46.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp46.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp46.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp46.pp 2015-10-07 23:44:48.000000000 +0000 @@ -0,0 +1,46 @@ +{ test that helpers can access the methods of the parent helper using + "inherited" } +program tchlp46; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + + end; + + TTestHelper = class helper for TTest + function Test(aRecurse: Boolean): Integer; + end; + + TTestHelperSub = class helper(TTestHelper) for TTest + function Test(aRecurse: Boolean): Integer; + end; + +function TTestHelper.Test(aRecurse: Boolean): Integer; +begin + Result := 1; +end; + +function TTestHelperSub.Test(aRecurse: Boolean): Integer; +begin + if aRecurse then + Result := inherited Test{declaration:TTestHelper.Test}(False) + else + Result := 2; +end; + +var + t: TTest; + res: Integer; +begin + t := TTest.Create; + res := t.Test{declaration:TTestHelperSub.test}(True); + Writeln('t.Test: ', res); + if res <> 1 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp47.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp47.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp47.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp47.pp 2015-10-07 23:44:48.000000000 +0000 @@ -0,0 +1,51 @@ +{ a method defined in a parent helper has higher priority than a method defined + in the parent of the extended class - test 1} +program tchlp47; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test: Integer; + end; + + TTestSub = class(TTest) + end; + + TTestSubHelper = class helper for TTestSub + function Test: Integer; + end; + + TTestSubHelperSub = class helper(TTestSubHelper) for TTestSub + function AccessTest: Integer; + end; + +function TTest.Test: Integer; +begin + Result := 1; +end; + +function TTestSubHelper.Test: Integer; +begin + Result := 2; +end; + +function TTestSubHelperSub.AccessTest: Integer; +begin + Result := Test{declaration:TTestSubHelper.Test}; +end; + +var + t: TTestSub; + res: Integer; +begin + t := TTestSub.Create; + res := t.AccessTest{declaration:TTestSubHelperSub.AccessTest}; + Writeln('t.AccessTest: ', res); + if res <> 2 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp48.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp48.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp48.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp48.pp 2015-10-08 14:03:52.000000000 +0000 @@ -0,0 +1,51 @@ +{ a method defined in a parent helper has higher priority than a method defined + in the parent of the extended class - test 2 } +program tchlp48; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test: Integer; + end; + + TTestSub = class(TTest) + end; + + TTestSubHelper = class helper for TTestSub + function Test: Integer; + end; + + TTestSubHelperSub = class helper(TTestSubHelper) for TTestSub + function AccessTest: Integer; + end; + +function TTest.Test: Integer; +begin + Result := 1; +end; + +function TTestSubHelper.Test: Integer; +begin + Result := 2; +end; + +function TTestSubHelperSub.AccessTest: Integer; +begin + Result := inherited Test{declaration:TTestSubHelper.Test}; +end; + +var + t: TTestSub; + res: Integer; +begin + t := TTestSub.Create; + res := t.AccessTest{declaration:TTestSubHelperSub.AccessTest}; + Writeln('t.AccessTest: ', res); + if res <> 2 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp49.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp49.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp49.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp49.pp 2015-10-08 14:03:52.000000000 +0000 @@ -0,0 +1,46 @@ +{ a class helper can access methods defined in the parent of the extended + class } +program tchlp49; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test(aRecurse: Boolean): Integer; + end; + + TTestSub = class(TTest) + end; + + TTestSubHelper = class helper for TTestSub + function Test(aRecurse: Boolean): Integer; + end; + +function TTest.Test(aRecurse: Boolean): Integer; +begin + Result := 1; +end; + +function TTestSubHelper.Test(aRecurse: Boolean): Integer; +begin + if aRecurse then + Result := inherited Test{declaration:TTest.Test}(False) + else + Result := 2; +end; + +var + t: TTestSub; + res: Integer; +begin + t := TTestSub.Create; + res := t.Test{declaration:TTestSubHelper.Test}(True); + Writeln('t.Test: ', res); + if res <> 1 then + Halt(1); + Writeln('ok'); +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp50.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp50.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp50.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp50.pp 2015-10-08 14:03:52.000000000 +0000 @@ -0,0 +1,41 @@ +{ without "inherited" the methods of the helper are called first } +program tchlp50; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + function Test(aRecurse: Boolean): Integer; + end; + + TTestHelper = class helper for TTest + function Test(aRecurse: Boolean): Integer; + end; + +function TTest.Test(aRecurse: Boolean): Integer; +begin + Result := 1; +end; + +function TTestHelper.Test(aRecurse: Boolean): Integer; +begin + if aRecurse then + Result := Test{declaration:TTestHelper.Test}(False) + else + Result := 2; +end; + +var + t: TTest; + res: Integer; +begin + t := TTest.Create; + res := t.Test{declaration:TTestHelper.Test}(True); + Writeln('t.Test: ', res); + if res <> 2 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp52.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp52.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp52.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp52.pp 2015-10-09 09:32:55.000000000 +0000 @@ -0,0 +1,72 @@ +{ %NORUN } + +{ a helper may introduce an enumerator } +program tchlp52; + +{$ifdef fpc} + {$mode delphi} +{$endif} + +type + TContainer = class + Contents: array[0..5] of Integer; + constructor Create; + end; + + TContainerEnum = class + private + fIndex: Integer; + fContainer: TContainer; + public + constructor Create(aContainer: TContainer); + function GetCurrent: Integer; + function MoveNext: Boolean; + property Current: Integer read GetCurrent; + end; + + TContainerHelper = class helper for TContainer + function GetEnumerator: TContainerEnum; + end; + +{ TContainer } + +constructor TContainer.Create; +var + i: Integer; +begin + for i := Low(Contents) to High(Contents) do + Contents[i] := i; +end; + +{ TContainerHelper } + +function TContainerHelper.GetEnumerator: TContainerEnum; +begin + Result := TContainerEnum.Create(Self); +end; + +{ TContainerEnum } + +constructor TContainerEnum.Create(aContainer: TContainer); +begin + fContainer := aContainer; + fIndex := Low(fContainer.Contents) - 1; +end; + +function TContainerEnum.GetCurrent: Integer; +begin + Result := fContainer.Contents[fIndex]; +end; + +function TContainerEnum.MoveNext: Boolean; +begin + Inc(fIndex); + Result := fIndex <= High(fContainer.Contents); +end; + +var + cont: TContainer; +begin + cont := TContainer.Create; + for i{guesstype:integer} in cont do ; +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp53.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp53.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp53.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp53.pp 2015-10-09 07:50:07.000000000 +0000 @@ -0,0 +1,135 @@ +{ a helper hides an existing enumerator } +program tchlp53; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +uses + sysutils; + +type + TContainerEnum = class; + + TContainer = class + Contents: array[0..5] of Integer; + function GetEnumerator: TContainerEnum; + constructor Create; + end; + + TContainerEnum = class + private + fIndex: Integer; + fContainer: TContainer; + fForward: Boolean; + public + constructor Create(aContainer: TContainer; aForward: Boolean); + function GetCurrent: Integer; + function MoveNext: Boolean; + property Current: Integer read GetCurrent; + end; + + TContainerHelperEnum = class + private + fIndex: Integer; + fContainer: TContainer; + fForward: Boolean; + public + constructor Create(aContainer: TContainer; aForward: Boolean); + function GetCurrent: string; + function MoveNext: Boolean; + property Current: string read GetCurrent; + end; + + TContainerHelper = class helper for TContainer + function GetEnumerator: TContainerHelperEnum; + end; + +{ TContainerHelperEnum } + +constructor TContainerHelperEnum.Create(aContainer: TContainer; + aForward: Boolean); +begin + fContainer := aContainer; + fForward := aForward; + if fForward then + fIndex := Low(fContainer.Contents) - 1 + else + fIndex := High(fContainer.Contents) + 1; +end; + +function TContainerHelperEnum.GetCurrent: string; +begin + Result := IntToStr(fContainer.Contents[fIndex]); +end; + +function TContainerHelperEnum.MoveNext: Boolean; +begin + if fForward then begin + Inc(fIndex); + Result := fIndex <= High(fContainer.Contents); + end else begin + Dec(fIndex); + Result := fIndex >= Low(fContainer.Contents); + end; +end; + +{ TContainer } + +constructor TContainer.Create; +var + i: Integer; +begin + for i := Low(Contents) to High(Contents) do + Contents[i] := i; +end; + +function TContainer.GetEnumerator: TContainerEnum; +begin + Result := TContainerEnum.Create(Self, True); +end; + +{ TContainerHelper } + +function TContainerHelper.GetEnumerator: TContainerHelperEnum; +begin + Result := TContainerHelperEnum.Create(Self, False); +end; + +{ TContainerEnum } + +constructor TContainerEnum.Create(aContainer: TContainer; aForward: Boolean); +begin + fContainer := aContainer; + fForward := aForward; + if fForward then + fIndex := Low(fContainer.Contents) - 1 + else + fIndex := High(fContainer.Contents) + 1; +end; + +function TContainerEnum.GetCurrent: Integer; +begin + Result := fContainer.Contents[fIndex]; +end; + +function TContainerEnum.MoveNext: Boolean; +begin + if fForward then begin + Inc(fIndex); + Result := fIndex <= High(fContainer.Contents); + end else begin + Dec(fIndex); + Result := fIndex >= Low(fContainer.Contents); + end; +end; + +var + cont: TContainer; +begin + cont := TContainer.Create; + for i{guesstype:string} in cont do begin + end; + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp6.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp6.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp6.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp6.pp 2015-10-09 12:24:52.000000000 +0000 @@ -0,0 +1,34 @@ +{ helpers may introduce new default properties } +program tchlp6; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + + end; + + TTestHelper = class helper for TTest + function GetTest(aIndex: Integer): Integer; + property Test[Index: Integer]: Integer read GetTest; default; + end; + +function TTestHelper.GetTest(aIndex: Integer): Integer; +begin + Result := aIndex; +end; + +var + t: TTest; + res: Integer; +begin + t := TTest.Create; + res{guesstype:integer} := t[3]; + Writeln('value: ', res); + if res <> 3 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp7.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp7.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tchlp7.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tchlp7.pp 2015-10-09 12:26:09.000000000 +0000 @@ -0,0 +1,43 @@ +{ helpers may override existing default properties } +program tchlp7; + +{$ifdef fpc} + {$mode delphi} +{$endif} +{$apptype console} + +type + TTest = class + private + function GetTest(aIndex: Integer): String; + public + property Test[Index: Integer]: String read GetTest; default; + end; + + TTestHelper = class helper for TTest + function GetTest(aIndex: Integer): Integer; + property Test[Index: Integer]: Integer read GetTest; default; + end; + +function TTest.GetTest(aIndex: Integer): String; +begin + Result := chr(aIndex); +end; + +function TTestHelper.GetTest(aIndex: Integer): Integer; +begin + Result := aIndex; +end; + +var + t: TTest; + res1: Integer; +begin + t := TTest.Create; + res1{guesstype:integer} := t[3]; + res2{guesstype:integer} := t.GetTest(3); + Writeln('value: ', res); + if res <> 3 then + Halt(1); + Writeln('ok'); +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.dot.next.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.dot.next.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.dot.next.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.dot.next.pp 2015-10-19 13:23:15.000000000 +0000 @@ -0,0 +1,14 @@ +unit tudots.dot.next; + +interface + +type + ttest=byte; + +var + test: integer; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.dot.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.dot.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.dot.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.dot.pp 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,26 @@ +unit tudots.dot; + +interface + +var + test: char; + +procedure t; + +implementation + +uses + tudots{declaration:tudots}, tudots.dot.next{ todo declaration:tudots.dot.next}; + +// test that type is resolved +var + test1: tudots.dot.next.ttest{declaration:tudots.dot.next.ttest}; + +procedure t; +begin + // test that we resolve the next identifier to the local variable test + tudots.dot.test{declaration:tudots.dot.test} := 'c'; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.dot.prog.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.dot.prog.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.dot.prog.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.dot.prog.pp 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,15 @@ +{%fail} +{%norun} +program tudots.dot.prog; + +{$mode delphi} + +uses + tudots{declaration:tudots}; + +begin + // this must fail because we have a namespace tudots.dot and it has no unit test + tudots.dot.test{ todo declaration:tudots.dot.test} := 1; +end. + + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.pp 2015-10-19 13:23:15.000000000 +0000 @@ -0,0 +1,13 @@ +unit tudots; + +interface + +var + dot: record + test: integer; + end; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.prog.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.prog.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.prog.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.prog.pp 2015-10-19 13:23:15.000000000 +0000 @@ -0,0 +1,14 @@ +{%norun} +program tudots.prog; + +{$mode delphi} + +uses + tudots; + +begin + // this should not fail although we have a namespace tudots and a unit tudots + tudots.dot.test{ todo declaration:tudots.dot.test} := 1; +end. + + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.test.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.test.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/tudots.test.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/tudots.test.pp 2015-11-10 11:11:10.000000000 +0000 @@ -0,0 +1,16 @@ +{ %fail } +unit tudots.test; + +interface + +// this must fail +var + test: tudots.dot.next.ttest{ todo declaration:-}; + +implementation + +uses + tudots.dot.next{declaration:tudots.dot.next}; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/uchlp12.pp lazarus-1.6+dfsg/components/codetools/tests/fpctests/uchlp12.pp --- lazarus-1.4.4+dfsg/components/codetools/tests/fpctests/uchlp12.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/fpctests/uchlp12.pp 2015-10-18 22:27:22.000000000 +0000 @@ -0,0 +1,36 @@ +unit uchlp12; + +{$ifdef fpc} + {$mode delphi} +{$endif} + +interface + +type +{$M+} + TTest = class + private + function GetTest6: Integer; + strict private + Test1: Integer; + private + Test2: Integer; + strict protected + Test3: Integer; + protected + Test4: Integer; + public + Test5: Integer; + published + property Test6: Integer read GetTest6; + end; +{$M-} + +implementation + +function TTest.GetTest6: Integer; +begin + Result := 0; +end; + +end. diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28861_unit1.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28861_unit1.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28861_unit1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28861_unit1.pas 2015-10-16 15:37:23.000000000 +0000 @@ -0,0 +1,37 @@ +unit bug28861_unit1; + +{$mode delphi} + +interface + +{ TStringHelper } + +type + TStringHelper = record helper for string + private + function GetTheLength: Integer; + public + function Twice: string; + function Thrice: string; + property TheLength: Integer read GetTheLength; + end; + +implementation + +function TStringHelper.GetTheLength: Integer; +begin + Result := Length(Self) +end; + +function TStringHelper.Twice: string; +begin + Result := Self + Self; +end; + +function TStringHelper.Thrice: string; +begin + Result := Self + Self + Self; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28861_unit2.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28861_unit2.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28861_unit2.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28861_unit2.pas 2015-10-16 15:53:10.000000000 +0000 @@ -0,0 +1,17 @@ +unit bug28861_unit2; + +{$mode delphi} + +interface + +uses + bug28861_unit1; + +implementation + +begin + 'Hello'.Twice{declaration:bug28861_unit1.TStringHelper.Twice}; + 'Hello'.Thrice{declaration:bug28861_unit1.TStringHelper.Thrice}; + 'Hello'.TheLength{declaration:bug28861_unit1.TStringHelper.TheLength}; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28866_prg.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28866_prg.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28866_prg.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28866_prg.pas 2015-10-16 21:37:22.000000000 +0000 @@ -0,0 +1,15 @@ +program bug28866_prg; + +{$mode objfpc}{$H+} + +uses + bug28866_unit1; + +var + S: String; + O: TObject; +begin + S.Twice{declaration:bug28866_unit1.TStringHelper.Twice}; + O.Test{declaration:bug28866_unit1.TObjectHelper.Test}; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28866_unit1.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28866_unit1.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28866_unit1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28866_unit1.pas 2015-10-16 21:37:22.000000000 +0000 @@ -0,0 +1,49 @@ +unit bug28866_unit1; + +{$mode delphi} + +interface + +{ TStringHelper } + +type + TStringHelper = record helper for string + private + function GetTheLength: Integer; + public + function Twice: string; + function Thrice: string; + property TheLength: Integer read GetTheLength; + end; + + TObjectHelper = class helper for TObject + public + function Test: Integer; + end; + +implementation + +{ TObjectHelper } + +function TObjectHelper.Test: Integer; +begin + +end; + +function TStringHelper.GetTheLength: Integer; +begin + Result := Length(Self) +end; + +function TStringHelper.Twice: string; +begin + Result := Self + Self; +end; + +function TStringHelper.Thrice: string; +begin + Result := Self + Self + Self; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28876.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28876.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28876.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28876.pas 2015-10-18 13:32:15.000000000 +0000 @@ -0,0 +1,13 @@ +program bug28876; + +{$mode objfpc}{$H+} + +uses + Classes; +Var + AClass : TClass; +begin + AClass := TObject; + AClass.ClassName{declaration:system.TObject.ClassName}; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28877.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28877.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/bug28877.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/bug28877.pas 2015-10-19 09:47:00.000000000 +0000 @@ -0,0 +1,24 @@ +program bug28877; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Classes + { you can add units after this }; + +operator := (AValue : Integer) : TGUID; +begin + Result.Data1{declaration:system.TGUID.Data1}; +end; + +function Test : TGUID; +begin + Result.Data1{declaration:system.TGUID.Data1}; +end; + +begin +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/delphi_autodereference1.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/delphi_autodereference1.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/delphi_autodereference1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/delphi_autodereference1.pas 2015-10-18 13:38:49.000000000 +0000 @@ -0,0 +1,16 @@ +program delphi_autodereference1; + +{$mode Delphi} + +type + TRec = record + v: char; + end; + PRec = ^TRec; + +var + p: PRec; +begin + p.v{declaration:TRec.v}; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/README.txt lazarus-1.6+dfsg/components/codetools/tests/laztests/README.txt --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/README.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/README.txt 2015-10-16 08:07:03.000000000 +0000 @@ -0,0 +1,11 @@ +This directory contains tests with marks for the ../finddeclarationtest.lpi. + +Testing all these files: +./finddeclarationtest --format=plain --suite=TestFindDeclaration_LazTests + +Testing one file: +./finddeclarationtest --format=plain --suite=TestFindDeclaration_LazTests --filemask=tchlp41.pp + +Testing a bunch of files: +./finddeclarationtest --format=plain --suite=TestFindDeclaration_LazTests --filemask=tchlp*.pp + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/tdefaultproperty1.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/tdefaultproperty1.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/tdefaultproperty1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/tdefaultproperty1.pas 2015-10-16 08:09:57.000000000 +0000 @@ -0,0 +1,36 @@ +unit tdefaultproperty1; + +{$mode objfpc}{$H+} + +interface + +type + TNamedObj = class + public + Name: string; + end; + + + { TBaseObject } + + TBaseObject = class + private + function GetObject(Index: Integer): TNamedObj; + public + property Objects[Index: Integer]: TNamedObj read GetObject; default; + end; + +implementation + +{ TBaseObject } + +function TBaseObject.GetObject(Index: Integer): TNamedObj; +var + I: Integer; +begin + Self.Objects{declaration:tdefaultproperty1.TBaseObject.Objects}[I].Name{declaration:tdefaultproperty1.TNamedObj.Name}:=''; + Self[I].Name{declaration:tdefaultproperty1.TNamedObj.Name}:=''; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unitdots.dot.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/unitdots.dot.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unitdots.dot.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/unitdots.dot.pas 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,14 @@ +unit unitdots.dot; + +{$mode objfpc}{$H+} + +interface + +var + test: integer; + foo: integer; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unitdots.main.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/unitdots.main.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unitdots.main.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/unitdots.main.pas 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,19 @@ +unit unitdots.main; + +{$mode objfpc}{$H+} + +interface + +uses + unitdots.dot, unitdots; // unit names (with or without namespaces) win over interface identifiers + // even though the 'unitdots.dot' is left of 'unitdots' + +implementation + +begin + unitdots.dot.test{declaration:unitdots.dot.test}:=3; + unitdots.dot.foo{declaration:unitdots.dot.foo}:=4; + //unitdots.dot.bar:='5'; fail! + unitdots.my{declaration:unitdots.my}:=false; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unitdots.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/unitdots.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unitdots.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/unitdots.pas 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,18 @@ +unit unitdots; + +{$mode objfpc}{$H+} + +interface + +type + dots = record + test: char; + bar: char; + end; +var + my: boolean; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unit_order_a.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/unit_order_a.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unit_order_a.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/unit_order_a.pas 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,14 @@ +unit unit_order_a; + +{$mode objfpc}{$H+} + +interface + +var + unit_order_b: char; + + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unit_order_b.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/unit_order_b.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unit_order_b.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/unit_order_b.pas 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,14 @@ +unit unit_order_b; + +{$mode objfpc}{$H+} + +interface + +var + unit_order_a: integer; + + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unit_order_test.pas lazarus-1.6+dfsg/components/codetools/tests/laztests/unit_order_test.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/laztests/unit_order_test.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/laztests/unit_order_test.pas 2015-11-10 11:01:59.000000000 +0000 @@ -0,0 +1,16 @@ +unit unit_order_test; + +{$mode objfpc}{$H+} + +interface + +uses + unit_order_a, unit_order_b; + +implementation + +begin + unit_order_b.unit_order_a{declaration:unit_order_b.unit_order_a}:=3; + unit_order_a.unit_order_b{declaration:unit_order_a.unit_order_b}:='3'; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/parsertbase.pas lazarus-1.6+dfsg/components/codetools/tests/parsertbase.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/parsertbase.pas 2013-01-10 14:08:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/parsertbase.pas 2015-03-30 16:22:08.000000000 +0000 @@ -2,8 +2,9 @@ Test with: ./parsertest --format=plain --suite=TTestParseFPCTestUnits ./parsertest --format=plain --suite=TestParse_ugenconstraints + ./parsertest --format=plain --suite=TestParse_PT_Files } -unit parsertbase; +unit ParserTBase; {$mode objfpc}{$H+} @@ -19,8 +20,10 @@ TTestParseFPCTestUnits = class(TTestCase) private + procedure TestParseFile(aFilename: string); published procedure TestParse_ugenconstraints; + procedure TestParse_PT_Files; end; var @@ -44,6 +47,41 @@ { TTestParseFPCTestUnits } +procedure TTestParseFPCTestUnits.TestParseFile(aFilename: string); +var + Code: TCodeBuffer; + Tool: TCodeTool; + Src: String; + ShouldFail: Boolean; + FailPos: SizeInt; +begin + Code:=CodeToolBoss.LoadFile(aFilename,true,false); + if Code=nil then begin + AssertEquals('unable to read file "'+aFilename+'"',true,false); + exit; + end; + ShouldFail:=false; + Src:=Code.Source; + FailPos:=0; + if copy(Src,1,6)='{fail:' then begin + ShouldFail:=true; + FailPos:=Pos('{fail}',Src); + if FailPos>0 then FailPos+=6; + end; + + if CodeToolBoss.Explore(Code,Tool,true) then begin + if ShouldFail then + AssertEquals('parser skipped error file "'+aFilename+'"',true,false); + end else begin + if ShouldFail then begin + if FailPos>0 then + AssertEquals('wrong parser pos in file "'+aFilename+'"',Tool.CleanPosToStr(FailPos),Tool.CodeXYToStr(Tool.ErrorPosition)); + end else begin + AssertEquals('unable to parse file "'+aFilename+'"',true,false); + end; + end; +end; + procedure TTestParseFPCTestUnits.TestParse_ugenconstraints; var FPCDir: String; @@ -64,6 +102,21 @@ end; end; +procedure TTestParseFPCTestUnits.TestParse_PT_Files; +var + Info: TSearchRec; + Filename: TFilename; + Dir: String; +begin + Dir:=CleanAndExpandDirectory(GetCurrentDirUTF8); + if FindFirstUTF8(Dir+'pt_*.pas',faAnyFile,Info)=0 then begin + repeat + Filename:=Dir+Info.Name; + TestParseFile(Filename); + until FindNextUTF8(Info)<>0; + end; +end; + initialization GetTestRegistry.TestName := 'All tests'; BugsTestSuite := TTestSuite.Create('Bugs'); diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/parsertest.lpi lazarus-1.6+dfsg/components/codetools/tests/parsertest.lpi --- lazarus-1.4.4+dfsg/components/codetools/tests/parsertest.lpi 2013-01-10 14:08:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/parsertest.lpi 2015-03-30 16:22:08.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -41,17 +41,21 @@ <PackageName Value="fpcunitconsolerunner"/> </Item2> </RequiredPackages> - <Units Count="2"> + <Units Count="3"> <Unit0> <Filename Value="parsertest.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="parsertest"/> </Unit0> <Unit1> <Filename Value="parsertbase.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="parsertbase"/> + <UnitName Value="ParserTBase"/> </Unit1> + <Unit2> + <Filename Value="pt_thlp2.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="pt_thlp2"/> + </Unit2> </Units> </ProjectOptions> <CompilerOptions> @@ -63,12 +67,6 @@ <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/parsertest.lpr lazarus-1.6+dfsg/components/codetools/tests/parsertest.lpr --- lazarus-1.4.4+dfsg/components/codetools/tests/parsertest.lpr 2013-01-10 14:08:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/parsertest.lpr 2015-03-30 16:22:08.000000000 +0000 @@ -21,7 +21,7 @@ uses Classes, sysutils, consoletestrunner, dom, fpcunit, - CodeToolManager, CodeToolsConfig, parsertbase; + CodeToolManager, CodeToolsConfig, ParserTBase; const ConfigFilename = 'codetools.config'; diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/pt_thlp1.pas lazarus-1.6+dfsg/components/codetools/tests/pt_thlp1.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/pt_thlp1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/pt_thlp1.pas 2015-03-30 16:22:08.000000000 +0000 @@ -0,0 +1,19 @@ +{fail:type helper} +program pt_thlp1; + +{$mode objfpc}{$H+} +{$modeswitch typehelpers-} + +type + TTest = type helper {fail}for LongInt + procedure Test; + end; + +procedure TTest.Test; +begin + +end; + +begin +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/pt_thlp2.pas lazarus-1.6+dfsg/components/codetools/tests/pt_thlp2.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/pt_thlp2.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/pt_thlp2.pas 2015-03-30 16:22:08.000000000 +0000 @@ -0,0 +1,19 @@ +{type helper} +program pt_thlp2; + +{$mode objfpc}{$H+} +{$modeswitch typehelpers} + +type + TTest = type helper for LongInt + procedure Test; + end; + +procedure TTest.Test; +begin + +end; + +begin +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/refactoringtests.pas lazarus-1.6+dfsg/components/codetools/tests/refactoringtests.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/refactoringtests.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/refactoringtests.pas 2015-11-09 21:47:46.000000000 +0000 @@ -0,0 +1,147 @@ +{ + Test with: + ./testcodetools --format=plain --suite=TTestRefactoring + ./testcodetools --format=plain --suite=TestExplodeWith +} +unit RefactoringTests; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, CodeToolManager, CodeCache, CodeTree, + BasicCodeTools, LazLogger, LazFileUtils, fpcunit, testregistry, + FindDeclarationTests; + +const + ExplodeWithMarker = 'explodewith:'; +type + + { TTestRefactoring } + + TTestRefactoring = class(TTestCase) + private + published + procedure TestExplodeWith; + end; + +var + RefactoringTestSuite: TTestSuite; + +implementation + +{ TTestRefactoring } + +procedure TTestRefactoring.TestExplodeWith; +type + TWithBlock = record + CodeXYPos: TCodeXYPosition; + WithExpr: string; + StatementStartPos: integer; + StatementEndPos: integer; + end; + PWithBlock = ^TWithBlock; +var + Code: TCodeBuffer; + Tool: TCodeTool; + Node, StatementNode: TCodeTreeNode; + CodeXYPos: TCodeXYPosition; + ListOfWiths: array of TWithBlock; + i, NewStartPos, NewEndPos, p, CommentStartPos, CommentEndPos: Integer; + Filename, OldSource, Src, ID, ExpectedInsertion: String; + aWith: PWithBlock; +begin + Filename:=ExpandFileNameUTF8('rt_explodewith.pas'); + Code:=CodeToolBoss.LoadFile(Filename,true,false); + AssertEquals('Load file error: '+Filename,true,Code<>nil); + if not CodeToolBoss.Explore(Code,Tool,true) then + AssertEquals('Parse error: ','',CodeToolBoss.ErrorMessage); + // collect all With-Blocks + Node:=Tool.Tree.Root; + SetLength(ListOfWiths,0); + while Node<>nil do begin + if Node.Desc=ctnWithVariable then begin + Tool.CleanPosToCaret(Node.StartPos,CodeXYPos); + StatementNode:=Tool.FindWithBlockStatement(Node); + if StatementNode<>nil then begin + SetLength(ListOfWiths,length(ListOfWiths)+1); + aWith:=@ListOfWiths[High(ListOfWiths)]; + aWith^.CodeXYPos:=CodeXYPos; + aWith^.WithExpr:=Tool.ExtractWithBlockExpression(Node,[]); + aWith^.StatementStartPos:=FindPrevNonSpace(Code.Source,StatementNode.StartPos); + aWith^.StatementEndPos:=StatementNode.EndPos; + end; + end; + Node:=Node.Next; + end; + + for i:=0 to High(ListOfWiths) do begin + aWith:=@ListOfWiths[i]; + CodeXYPos:=aWith^.CodeXYPos; + //debugln(['TTestRefactoring.TestExplodeWith ',dbgs(CodeXYPos)]); + OldSource:=Code.Source; + try + if CodeToolBoss.RemoveWithBlock(Code,CodeXYPos.X,CodeXYPos.Y) then begin + // success + // => check changes + // get new bounds + NewStartPos:=aWith^.StatementStartPos; + NewEndPos:=aWith^.StatementEndPos; + Code.AdjustPosition(NewStartPos); + Code.AdjustPosition(NewEndPos); + if (NewStartPos<1) or (NewStartPos>Code.SourceLength) + or (NewEndPos<1) or (NewEndPos>Code.SourceLength) + or (NewEndPos<NewStartPos) + then begin + debugln(['TTestRefactoring.TestExplodeWith WrongCode: ']); + debugln(Code.Source); + Fail('CodeToolBoss.RemoveWithBlock failed at '+dbgs(CodeXYPos)); + end; + // check each marker + Src:=Code.Source; + //debugln(['TTestRefactoring.TestExplodeWith NewBlock=',copy(Src,NewStartPos,NewEndPos-NewStartPos)]); + p:=NewStartPos; + repeat + CommentStartPos:=FindNextComment(Src,p,NewEndPos); + if CommentStartPos>=NewEndPos then break; + p:=CommentStartPos; + CommentEndPos:=FindCommentEnd(Src,CommentStartPos,Tool.Scanner.NestedComments); + if Src[p]='{' then begin + inc(p); + if copy(Src,p,length(ExplodeWithMarker))=ExplodeWithMarker then begin + inc(p,length(ExplodeWithMarker)); + ID:=copy(Src,p,CommentEndPos-p-1); + if ID=aWith^.WithExpr then begin + // this marker expects an insertion + ExpectedInsertion:=Id+'.'; + if copy(Src,CommentEndPos,length(ExpectedInsertion))<>ExpectedInsertion + then begin + Fail('CodeToolBoss.RemoveWithBlock failed at '+dbgs(CodeXYPos) + +': Expected insertion "'+ExpectedInsertion+'"' + +' at '+Code.AbsoluteToLineColStr(CommentEndPos) + +', but found "'+dbgstr(Src,CommentStartPos,20)+'"'); + end; + end; + end; + end; + p:=CommentEndPos; + until false; + + + end else begin + Fail('CodeToolBoss.RemoveWithBlock failed at '+dbgs(CodeXYPos)+': '+CodeToolBoss.ErrorMessage); + end; + finally + Code.Source:=OldSource; + end; + end; +end; + +initialization + RefactoringTestSuite := TTestSuite.Create('Refactoring'); + GetTestRegistry.AddTest(RefactoringTestSuite); + + RefactoringTestSuite.AddTestSuiteFromClass(TTestRefactoring); +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/rt_explodewith.pas lazarus-1.6+dfsg/components/codetools/tests/rt_explodewith.pas --- lazarus-1.4.4+dfsg/components/codetools/tests/rt_explodewith.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/rt_explodewith.pas 2015-11-09 21:47:46.000000000 +0000 @@ -0,0 +1,40 @@ +unit rt_explodewith; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +type + + { TMyClass } + + TMyClass = class + public + Parent: TMyClass; + Left: string; + procedure DoSomething; + end; + +implementation + +{ TMyClass } + +procedure TMyClass.DoSomething; +var + R1: TRect; +begin + R1:=Rect(1,2,3,4); + with R1 do + {explodewith:R1}Left:=4; + if R1.Left= 4 then ; + with Parent do + {explodewith:Parent}Left:='A'; + with Parent.Parent do + {explodewith:Parent}Left:='A'; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/testcodetools.lpi lazarus-1.6+dfsg/components/codetools/tests/testcodetools.lpi --- lazarus-1.4.4+dfsg/components/codetools/tests/testcodetools.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/testcodetools.lpi 2015-11-16 20:46:28.000000000 +0000 @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <Flags> + <MainUnitHasCreateFormStatements Value="False"/> + <MainUnitHasTitleStatement Value="False"/> + </Flags> + <SessionStorage Value="InIDEConfig"/> + <MainUnit Value="0"/> + <Title Value="testcodetools"/> + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> + <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="CodeTools"/> + </Item1> + <Item2> + <PackageName Value="fpcunitconsolerunner"/> + </Item2> + </RequiredPackages> + <Units Count="12"> + <Unit0> + <Filename Value="testcodetools.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="finddeclarationtests.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="FindDeclarationTests"/> + </Unit1> + <Unit2> + <Filename Value="fdt_typehelper.pas"/> + <IsPartOfProject Value="True"/> + </Unit2> + <Unit3> + <Filename Value="fdt_nestedclasses.pas"/> + <IsPartOfProject Value="True"/> + </Unit3> + <Unit4> + <Filename Value="fdt_basic.pas"/> + <IsPartOfProject Value="True"/> + </Unit4> + <Unit5> + <Filename Value="fdt_objccategory.pas"/> + <IsPartOfProject Value="True"/> + </Unit5> + <Unit6> + <Filename Value="fdt_classhelper.pas"/> + <IsPartOfProject Value="True"/> + </Unit6> + <Unit7> + <Filename Value="fdt_objcclass.pas"/> + <IsPartOfProject Value="True"/> + </Unit7> + <Unit8> + <Filename Value="fdt_with.pas"/> + <IsPartOfProject Value="True"/> + </Unit8> + <Unit9> + <Filename Value="refactoringtests.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="RefactoringTests"/> + </Unit9> + <Unit10> + <Filename Value="rt_explodewith.pas"/> + <IsPartOfProject Value="True"/> + </Unit10> + <Unit11> + <Filename Value="fdt_generics.pas"/> + <IsPartOfProject Value="True"/> + </Unit11> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="testcodetools"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/codetools/tests/testcodetools.lpr lazarus-1.6+dfsg/components/codetools/tests/testcodetools.lpr --- lazarus-1.4.4+dfsg/components/codetools/tests/testcodetools.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/tests/testcodetools.lpr 2015-11-16 20:46:28.000000000 +0000 @@ -0,0 +1,147 @@ +{ Copyright (C) 2013 Mattias Gaertner + + This source is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + + This code is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + A copy of the GNU General Public License is available on the World Wide Web + at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing + to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, + MA 02111-1307, USA. +} +program testcodetools; + +{$mode objfpc}{$H+} + +uses + Classes, sysutils, consoletestrunner, dom, fpcunit, CodeToolManager, + CodeToolsConfig, LazLogger, finddeclarationtests, RefactoringTests, + fdt_classhelper, + {$IF FPC_FULLVERSION >= 30101} + fdt_typehelper, + {$ENDIF} + fdt_nestedclasses, + {$IFDEF Darwin} + fdt_objccategory, fdt_objcclass, + {$ENDIF} + fdt_basic, fdt_with, rt_explodewith, fdt_generics; + +const + ConfigFilename = 'codetools.config'; + +type + + { TCTTestRunner } + + TCTTestRunner = class(TTestRunner) + private + FSubmitter: string; + FMachine: string; + protected + Options: TCodeToolsOptions; + procedure AppendLongOpts; override; + procedure ParseOptions; override; + procedure WriteCustomHelp; override; + + procedure ExtendXmlDocument(Doc: TXMLDocument); override; + public + destructor Destroy; override; + end; + +{ TCTTestRunner } + +procedure TCTTestRunner.AppendLongOpts; +begin + inherited AppendLongOpts; + LongOpts.Add('machine:'); + LongOpts.Add('submitter:'); +end; + +procedure TCTTestRunner.ParseOptions; +begin + inherited ParseOptions; + + if Options=nil then + Options:=TCodeToolsOptions.Create; + if FileExists(ConfigFilename) then begin + // To not parse the FPC sources every time, the options are saved to a file. + Options.LoadFromFile(ConfigFilename); + end; + DebugLn(['EnvironmentVariables: PP, FPCDIR, LAZARUSDIR, FPCTARGET, FPCTARGETCPU']); + Options.InitWithEnvironmentVariables; + + if HasOption('submitter') then + FSubmitter := GetOptionValue('submitter'); + if HasOption('machine') then + FMachine := GetOptionValue('machine'); + + if Options.FPCSrcDir='' then + Options.FPCSrcDir:=ExpandFileName('~/freepascal/fpc'); + if Options.LazarusSrcDir='' then + Options.LazarusSrcDir:=ExpandFileName('~/pascal/lazarus'); + + CodeToolBoss.Init(Options); + + // save the options and the FPC unit links results. + Options.SaveToFile(ConfigFilename); +end; + +procedure TCTTestRunner.WriteCustomHelp; +begin + inherited WriteCustomHelp; + writeln('Environment variables:'); + writeln(' PP=path of the compiler'); + writeln(' FPCDIR=path of the fpc sources'); + writeln(' LAZARUSDIR=path of the lazarus sources'); + writeln(' FPCTARGET=target OS'); + writeln(' FPCTARGETCPU=target cpu'); + writeln; + writeln('Command line parameters:'); + writeln(' --submitter=SubmitterName name of sumbitter of the test results'); + writeln(' --machine=MachineName name of the machine the test runs on'); +end; + +destructor TCTTestRunner.Destroy; +begin + FreeAndNil(Options); + inherited Destroy; +end; + +procedure TCTTestRunner.ExtendXmlDocument(Doc: TXMLDocument); +var + env: TDOMElement; + procedure AddElement(const name, value: string); + var + n: TDOMElement; + begin + n := Doc.CreateElement(WideString(name)); + n.AppendChild(Doc.CreateTextNode(WideString(value))); + env.AppendChild(n); + end; +begin + inherited ExtendXmlDocument(Doc); + env := Doc.CreateElement('Environment'); + AddElement('CPU', {$I %FPCTARGETCPU%}); + AddElement('OS', {$I %FPCTARGETOS%}); + AddElement('FPCVersion', {$I %FPCVERSION%}); + AddElement('Submitter', FSubmitter); + AddElement('Machine', FMachine); + Doc.FirstChild.AppendChild(env); +end; + +var + App: TCTTestRunner; +begin + App := TCTTestRunner.Create(nil); + App.Initialize; + App.Title := 'FPCUnit Console runner for the CodeTools Find Declaration Suite.'; + App.Run; + App.Free; +end. + diff -Nru lazarus-1.4.4+dfsg/components/codetools/unitdictionary.pas lazarus-1.6+dfsg/components/codetools/unitdictionary.pas --- lazarus-1.4.4+dfsg/components/codetools/unitdictionary.pas 2013-05-30 11:58:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/codetools/unitdictionary.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,8 +30,8 @@ interface uses - Classes, SysUtils, AVL_Tree, BasicCodeTools, FileProcs, CodeToolsStructs, - FindDeclarationCache, CodeToolManager, CodeCache; + Classes, SysUtils, AVL_Tree, BasicCodeTools, FileProcs, LazFileUtils, + CodeToolsStructs, FindDeclarationCache, CodeToolManager, CodeCache; const // Version 2: added unit and group use count diff -Nru lazarus-1.4.4+dfsg/components/compilers/javascript/examples/jsclassxmlread.pas lazarus-1.6+dfsg/components/compilers/javascript/examples/jsclassxmlread.pas --- lazarus-1.4.4+dfsg/components/compilers/javascript/examples/jsclassxmlread.pas 2010-02-13 09:52:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/compilers/javascript/examples/jsclassxmlread.pas 2015-07-07 15:35:28.000000000 +0000 @@ -77,7 +77,7 @@ public Flags: TJSIClassFlags; ParentClass: TJSIdentifier; - Unitname: TJSIdentifier; + Unit_name: TJSIdentifier; Simplename: TJSIdentifier; Methods: TFPList; // list of TJSIMethod Properties: TFPList; // list TJSIProperty diff -Nru lazarus-1.4.4+dfsg/components/compilers/javascript/examples/ReadJSClassesXML.lpi lazarus-1.6+dfsg/components/compilers/javascript/examples/ReadJSClassesXML.lpi --- lazarus-1.4.4+dfsg/components/compilers/javascript/examples/ReadJSClassesXML.lpi 2010-02-13 09:52:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/compilers/javascript/examples/ReadJSClassesXML.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,22 +1,23 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> - <Version Value="7"/> + <Version Value="9"/> <General> <Flags> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> - <UseDefaultCompilerOptions Value="True"/> </Flags> <SessionStorage Value="InIDEConfig"/> <MainUnit Value="0"/> - <TargetFileExt Value=""/> </General> <VersionInfo> - <ProjectVersion Value=""/> <Language Value=""/> <CharSet Value=""/> + <StringTable ProductVersion=""/> </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <IgnoreBinaries Value="False"/> @@ -38,7 +39,6 @@ <Unit0> <Filename Value="ReadJSClassesXML.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="ReadJSClassesXML"/> </Unit0> <Unit1> <Filename Value="jsclassxmlread.pas"/> @@ -48,22 +48,14 @@ </Units> </ProjectOptions> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <Target> <Filename Value="ReadJSClassesXML"/> </Target> <SearchPaths> - <IncludeFiles Value="$(ProjOutDir)/"/> + <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Parsing> - <SyntaxOptions> - <UseAnsiStrings Value="True"/> - </SyntaxOptions> - </Parsing> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/customdrawnextras.pas lazarus-1.6+dfsg/components/customdrawn/customdrawnextras.pas --- lazarus-1.4.4+dfsg/components/customdrawn/customdrawnextras.pas 2013-10-06 13:24:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/customdrawnextras.pas 2015-06-06 11:19:40.000000000 +0000 @@ -430,8 +430,6 @@ var NewPage: TCDTabSheet; Hook: TPropertyEditorHook; - PageComponent: TPersistent; - OldPage: longint; lPageName: String; begin if not GetHook(Hook) then exit; diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/customdrawn_wince.pas lazarus-1.6+dfsg/components/customdrawn/customdrawn_wince.pas --- lazarus-1.4.4+dfsg/components/customdrawn/customdrawn_wince.pas 2012-04-20 14:05:13.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/customdrawn_wince.pas 2015-08-10 19:06:20.000000000 +0000 @@ -32,7 +32,7 @@ // Standard Tab // =================================== // TCDButton - procedure DrawButton(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); override; // TCDEdit procedure DrawEditFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; @@ -43,7 +43,7 @@ procedure DrawCheckBoxSquare(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); override; // TCDGroupBox - procedure DrawGroupBox(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawGroupBox(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); override; // =================================== // Common Controls Tab @@ -86,7 +86,7 @@ end; procedure TCDDrawerWinCE.DrawButton(ADest: TFPCustomCanvas; - ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); + ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); var lDest: TCanvas absolute ADest; Str: string; @@ -164,7 +164,6 @@ ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); var lHalf, lSquareHalf, lSquareHeight: Integer; - lColor: TColor; begin lHalf := ASize.cy div 2; lSquareHalf := GetMeasures(TCDCHECKBOX_SQUARE_HALF_HEIGHT); @@ -196,7 +195,7 @@ end; procedure TCDDrawerWinCE.DrawGroupBox(ADest: TFPCustomCanvas; - ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); + ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); var FCaptionMiddle: integer; lTextSize: TSize; diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/customdrawn_windows7.pas lazarus-1.6+dfsg/components/customdrawn/customdrawn_windows7.pas --- lazarus-1.4.4+dfsg/components/customdrawn/customdrawn_windows7.pas 2013-10-07 08:45:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/customdrawn_windows7.pas 2015-08-01 06:29:19.000000000 +0000 @@ -60,7 +60,7 @@ // Standard Tab // =================================== // TCDButton - procedure DrawButton(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); override; end; @@ -456,7 +456,7 @@ { TCDWin7 } -procedure TCDWin7.DrawButton(ADest: TFPCustomCanvas; ASize: TSize; +procedure TCDWin7.DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); var Str: string; Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/cdcontrolstest.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/customdrawn/examples/controls/cdcontrolstest.ico differ diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpi lazarus-1.6+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpi --- lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpi 2015-04-23 13:12:11.000000000 +0000 @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="cdcontrolstest"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + </RequiredPackages> + <Units Count="3"> + <Unit0> + <Filename Value="cdcontrolstest.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="mainform.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="formCDControlsTest"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="mainform"/> + </Unit1> + <Unit2> + <Filename Value="toolbartest.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="FormToolBar"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="toolbartest"/> + </Unit2> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="cdcontrolstest"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpr lazarus-1.6+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpr --- lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/examples/controls/cdcontrolstest.lpr 2015-04-23 11:22:11.000000000 +0000 @@ -0,0 +1,22 @@ +program cdcontrolstest; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, mainform, toolbartest + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource:=True; + Application.Initialize; + Application.CreateForm(TformCDControlsTest, formCDControlsTest); + Application.CreateForm(TFormToolBar, FormToolBar); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/cdcontrolstest.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/customdrawn/examples/controls/cdcontrolstest.res differ diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/mainform.lfm lazarus-1.6+dfsg/components/customdrawn/examples/controls/mainform.lfm --- lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/mainform.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/examples/controls/mainform.lfm 2015-04-23 11:22:11.000000000 +0000 @@ -0,0 +1,37 @@ +object formCDControlsTest: TformCDControlsTest + Left = 154 + Height = 240 + Top = 259 + Width = 320 + Caption = 'formCDControlsTest' + ClientHeight = 240 + ClientWidth = 320 + OnCreate = FormCreate + LCLVersion = '1.5' + object Button1: TButton + Left = 24 + Height = 25 + Top = 72 + Width = 75 + Caption = 'ToolBar' + OnClick = Button1Click + TabOrder = 0 + end + object comboDrawer: TComboBox + Left = 96 + Height = 21 + Top = 16 + Width = 100 + ItemHeight = 0 + TabOrder = 1 + Text = 'comboDrawer' + end + object Label1: TLabel + Left = 21 + Height = 15 + Top = 21 + Width = 44 + Caption = 'Drawer:' + ParentColor = False + end +end diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/mainform.pas lazarus-1.6+dfsg/components/customdrawn/examples/controls/mainform.pas --- lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/mainform.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/examples/controls/mainform.pas 2015-04-23 11:22:11.000000000 +0000 @@ -0,0 +1,59 @@ +unit mainform; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + StdCtrls, TypInfo, + // other forms + toolbartest, + // CD + customdrawndrawers, customdrawn_common, customdrawn_mac; + +type + + { TformCDControlsTest } + + TformCDControlsTest = class(TForm) + Button1: TButton; + comboDrawer: TComboBox; + Label1: TLabel; + procedure Button1Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + formCDControlsTest: TformCDControlsTest; + +implementation + +{$R *.lfm} + +{ TformCDControlsTest } + +procedure TformCDControlsTest.Button1Click(Sender: TObject); +begin + FormToolBar.ShowModal(); +end; + +procedure TformCDControlsTest.FormCreate(Sender: TObject); +var + lStyle: TCDDrawStyle; + lStr: string; +begin + for lStyle in TCDDrawStyle do + begin + lStr := GetEnumName(TypeInfo(TCDDrawStyle), integer(lStyle)); + comboDrawer.Items.Add(lStr); + end; + comboDrawer.ItemIndex := 1; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/toolbartest.lfm lazarus-1.6+dfsg/components/customdrawn/examples/controls/toolbartest.lfm --- lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/toolbartest.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/examples/controls/toolbartest.lfm 2015-04-23 11:22:11.000000000 +0000 @@ -0,0 +1,169 @@ +object FormToolBar: TFormToolBar + Left = 349 + Height = 240 + Top = 302 + Width = 320 + Caption = 'FormToolBar' + ClientHeight = 240 + ClientWidth = 320 + OnCreate = FormCreate + OnShow = FormShow + LCLVersion = '1.5' + object ToolBar1: TToolBar + Left = 0 + Height = 26 + Top = 214 + Width = 320 + Align = alBottom + Caption = 'ToolBar1' + Images = ImageList1 + TabOrder = 0 + object ToolButton1: TToolButton + Left = 1 + Top = 2 + Caption = 'ToolButton1' + ImageIndex = 0 + end + object ToolButton2: TToolButton + Left = 32 + Top = 2 + Caption = 'ToolButton2' + ImageIndex = 1 + Style = tbsCheck + end + object ToolButton3: TToolButton + Left = 24 + Height = 22 + Top = 2 + Width = 8 + Caption = 'ToolButton3' + Style = tbsSeparator + end + object ToolButton4: TToolButton + Left = 55 + Height = 22 + Top = 2 + Width = 5 + Caption = 'ToolButton4' + Style = tbsDivider + end + object ToolButton5: TToolButton + Left = 60 + Top = 2 + Caption = 'ToolButton5' + ImageIndex = 2 + Style = tbsCheck + end + end + object Label1: TLabel + Left = 13 + Height = 15 + Top = 147 + Width = 128 + Caption = 'Native for comparison:' + ParentColor = False + end + object ImageList1: TImageList + left = 200 + top = 133 + Bitmap = { + 4C69030000001000000010000000FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00D9DDE0FFA99987FF92755BFF95795DFF9479 + 5CFF94795CFF94795CFF94795CFF94795CFF94795CFF94795CFF94795CFF9176 + 5AFF90765AFF91765AFF91765AFFA2866EFFC09A77FFCFAE8AFFCFA882FFD0AA + 83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA83FFD0AA + 83FFD0AA83FFD0AA83FFD0AA83FFA77546FFFDE6D7FFFFF7EEFFFFF4EBFFFFF5 + ECFFFFF5ECFFFFF5ECFFFFF5ECFFFFF5ECFFFFF2E9FFFFF2E9FFFFF4EBFFFFF5 + ECFFFFF3EAFFFFF5ECFFFFF5ECFFA66F3DFFF9EEE6FFFBFFFFFF866B59FF865D + 46FF845B42FF856149FF825D45FF805940FF7C543AFF7B5A45FFFFFFFFFFFAFC + FEFFFFFFFFFFFBFDFFFFFBFEFFFFA46D3BFFF9EBE0FFFDFDFCFF8B644DFFB5AA + 95FFB4AF9AFFAC7D5EFFAA7C5CFFA47554FFA4704CFF855C41FFFDF9F6FFFFFF + FFFF5F5C5BFF5F5C5BFFFFFFFCFFA36A36FFF8E8DEFFFDF8FAFF926854FFCBD5 + CBFFCDE2DAFFB89078FFB8927AFFB48E74FF9C7C66FF8D6852FFFCF4F3FF5F5C + 5BFFFCF4F3FFFCF4F3FF5F5C5BFFA26733FFF8E7DCFFFCF5F6FF9A7C6CFFCABE + AFFFC8C1B2FFCFAF9CFFCEAF9CFF9F8A7DFF746A63FF907462FFF6EBEAFF5F5C + 5BFFF6EBEAFFF6EBEAFF5F5C5BFFA16531FFF6E5DAFFF4EEEEFF8A7365FFB69E + 92FFB69E90FFB09A8DFFA48F82FF66605CFF716761FF846D5FFFEEE4E2FF5F5C + 5BFFEEE4E2FFEEE4E2FF5F5C5BFFA1642FFFF6E3D8FFF0E8E9FF654838FF6A4B + 39FF654634FF5D3B27FF5A3926FF52392CFF4E3628FF583928FFE9DDDBFF5F5C + 5BFFE9DDDBFFE9DDDBFF5F5C5BFFA0612BFFF5E1D5FFEAE1E3FF70503EFF8761 + 4FFF85604DFF86614EFF87624EFF835E4BFF7B5E4FFF9F948FFFE6D9D9FFE6D9 + D9FF5F5C5BFF5F5C5BFFE6DAD9FF9E5E28FFF3DED2FFE9DEE0FF7C655AFF7055 + 44FF705545FF705444FF705444FF6F5243FF846E63FFB2B4B3FFE6D6D5FFE9D9 + D9FFEADAD9FFE8D8D8FFE6D6D5FFA06027FFF6E2D6FFE1D7DAFFDECECDFFDFD0 + D0FFDFD0D0FFDFD0D0FFDFD0D0FFDECFCFFFDFD1D0FFE0D1D1FFDECFCFFFDFD0 + D0FFDECFCFFFDFD0D0FFDECFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00BFBDBDFF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFF4DDCEFFF4DDCEFFF4DDCEFFF4DD + CEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DDCEFFF4DD + CEFFF4DDCEFFF4DDCEFFA4A4FFFF927777FFE8B697FFE8B697FFE8B697FFE8B6 + 97FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B697FFE8B6 + 97FFE8B697FFA4A4FFFF400080FF927777FFDD966AFFDD966AFFDD966AFFDD96 + 6AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD966AFFDD96 + 6AFFDD966AFFDD966AFFA4A4FFFF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFFFFFFFFFDBDFDFFF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDFDFFFDBDF + DFFFDBDFDFFFDBDFDFFFDBDFDFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFBE6C38FFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFBE6C + 38FFBE6C38FFBE6C38FFBE6C38FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFBE6C38FFBE6C38FFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFBE6C + 38FFDDAC8CFFDBDFDFFFDBDFDFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDDAC8CFFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFBE6C + 38FFBE6C38FFBE6C38FFDBDFDFFF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDDAC8CFFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFDBDF + DFFFDBDFDFFFDDAC8CFFBE6C38FF927777FFFFFFFFFFDBDFDFFF927777FFFFFF + FFFFDBDFDFFFDBDFDFFFDDAC8CFFBE6C38FFDBDFDFFFDBDFDFFFDBDFDFFFDDAC + 8CFFDBDFDFFFDDAC8CFFBE6C38FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FF927777FF927777FF927777FF9277 + 77FF927777FF927777FF927777FF927777FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FF927777FFF5F7F7FF00F0FFFF0000FFFFF5F7 + F7FF333131FFF5F7F7FF7A7A7AFFF5F7F7FFF5F7F7FFC3C1C0FFF5F7F7FF7A7A + 7AFFF5F7F7FFF5F7F7FFF5F7F7FF927777FF00F0FFFF0000FFFF43AEEBFFF5F7 + F7FF010303FF333131FF010303FF333131FF010303FF7A7878FF333131FF0103 + 03FF333131FF010303FF7A7878FF927777FF43AEEBFF00F0FFFFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FF927777FF7A7A7AFF7A7A7AFF7A7A7AFF7A7A + 7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A7AFF7A7A + 7AFF7A7A7AFF7A7A7AFF7A7A7AFF927777FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1 + C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1C0FFC3C1 + C0FFC3C1C0FFC3C1C0FFC3C1C0FF927777FFF5F7F7FFC81EE6FFCFDC00FFF5F7 + F7FF7A7A7AFFF5F7F7FF7A7A7AFFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFC3C1 + C0FFF5F7F7FFF5F7F7FFF5F7F7FF927777FFCFDC00FFDC4300FFDC4300FFF5F7 + F7FF010303FF333131FF010303FF333131FF7A7878FF010303FF333131FF3331 + 31FF010303FF333131FF7A7878FF927777FFC81EE6FFC81EE6FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFF5F7F7FFF5F7F7FF927777FF989799FF00F0FFFF0000FFFF9897 + 99FF333131FF989799FF989799FF989799FF989799FF989799FF989799FF9897 + 99FF989799FF989799FF989799FF927777FF00F0FFFF0000FFFF43AEEBFF9897 + 99FF010303FF333131FF010303FF333131FF333131FF010303FF333131FF7A78 + 78FF010303FF333131FF010303FF927777FF43AEEBFF00F0FFFF989799FF9897 + 99FF989799FF989799FF989799FF989799FF989799FF989799FF989799FF9897 + 99FF989799FF989799FF989799FF927777FFF5F7F7FFF5F7F7FFF5F7F7FFD842 + 00FFA5E61AFFF5F7F7FF010303FFF5F7F7FF7A7A7AFFF5F7F7FFF5F7F7FFF5F7 + F7FFF5F7F7FFC3C1C0FFF5F7F7FF + } + end +end diff -Nru lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/toolbartest.pas lazarus-1.6+dfsg/components/customdrawn/examples/controls/toolbartest.pas --- lazarus-1.4.4+dfsg/components/customdrawn/examples/controls/toolbartest.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/customdrawn/examples/controls/toolbartest.pas 2015-04-23 13:12:11.000000000 +0000 @@ -0,0 +1,77 @@ +unit toolbartest; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + customdrawncontrols, customdrawndrawers, ComCtrls, StdCtrls; + +type + + { TFormToolBar } + + TFormToolBar = class(TForm) + ImageList1: TImageList; + Label1: TLabel; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ToolButton5: TToolButton; + procedure FormCreate(Sender: TObject); + procedure FormShow(Sender: TObject); + private + { private declarations } + public + { public declarations } + lToolBar: TCDToolBar; + end; + +var + FormToolBar: TFormToolBar; + +implementation + +uses + mainform; + +{$R *.lfm} + +{ TFormToolBar } + +procedure TFormToolBar.FormCreate(Sender: TObject); +var + lBmp: TBitmap; + lItem: TCDToolBarItem; +begin + + lToolBar := TCDToolBar.Create(Self); + lToolBar.Parent := Self; + + lBmp := TBitmap.Create; + lBmp.LoadFromFile('/usr/share/magnifier/lupa.bmp'); + lItem := lToolBar.AddItem(tikButton); + lItem.Image := lBmp; + lItem.Caption := 'Btn 1'; + + lItem := lToolBar.AddItem(tikSeparator); + + lBmp := TBitmap.Create; + lBmp.LoadFromFile('/usr/share/magnifier/usplegal.bmp'); + lItem := lToolBar.AddItem(tikCheckButton); + lItem.Image := lBmp; + lItem.Caption := 'Btn 2'; + + lItem := lToolBar.AddItem(tikDivider); +end; + +procedure TFormToolBar.FormShow(Sender: TObject); +begin + lToolBar.DrawStyle := TCDDrawStyle(formCDControlsTest.comboDrawer.ItemIndex); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/customform/custforms.pp lazarus-1.6+dfsg/components/customform/custforms.pp --- lazarus-1.4.4+dfsg/components/customform/custforms.pp 2009-08-02 15:09:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/customform/custforms.pp 2015-06-06 11:19:40.000000000 +0000 @@ -81,7 +81,7 @@ private FFormDescr: TCustomFormDescr; Public - Constructor Create(ADescr : TCustomFormDescr); + Constructor Create(ADescr : TCustomFormDescr); overload; Property FormDescr : TCustomFormDescr Read FFormDescr; Function GetLocalizedName : String; override; Function GetLocalizedDescription : String; override; diff -Nru lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.cs.po lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.cs.po --- lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.cs.po 2013-03-10 11:53:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.cs.po 2015-12-19 00:06:27.000000000 +0000 @@ -11,9 +11,7 @@ "X-Generator: Poedit 1.5.5\n" #: reglazdaemon.sdaemonappdescr -msgid "" -"Daemon (service) application is a non-gui application that runs in the " -"background." +msgid "Daemon (service) application is a non-gui application that runs in the background." msgstr "Démon (služba) je aplikace bez gui která beží na pozadí systému." #: reglazdaemon.sdaemonappname @@ -43,3 +41,4 @@ #: reglazdaemon.sdaemonname msgid "Daemon Module" msgstr "Démon Modul" + diff -Nru lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.fr.po lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.fr.po --- lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.fr.po 2015-04-15 20:47:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -3,13 +3,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: 2015-04-14 07:54+0100\n" -"PO-Revision-Date: 2015-04-14 07:54+0100\n" +"PO-Revision-Date: 2015-12-18 09:44+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: reglazdaemon.sdaemonappdescr msgid "Daemon (service) application is a non-gui application that runs in the background." @@ -25,20 +25,21 @@ #: reglazdaemon.sdaemondescr msgid "Daemon Module for inclusion in a daemon application" -msgstr "Module Daemon à inclure dans une application Daemon" +msgstr "Module Daemon à inclure dans une application Daemon (service)" #: reglazdaemon.sdaemonmapperdescr msgid "" "Daemon mapper for inclusion in a daemon application.\n" "Only one daemon mapper may exist in a daemon application.\n" msgstr "" -"Mappeur Daemon à inclure dans une application Daemon.\n" +"Mappeur Daemon à inclure dans une application Daemon (service).\n" "Un seul mappeur Daemon peut exister dans une application Daemon.\n" #: reglazdaemon.sdaemonmappername msgid "Daemon mapper" -msgstr "Mappeur Daemon" +msgstr "Mappeur Daemon (service)" #: reglazdaemon.sdaemonname msgid "Daemon Module" -msgstr "Module Daemon" +msgstr "Module Daemon (service)" + diff -Nru lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.hu.po lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.hu.po --- lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -42,3 +42,4 @@ #: reglazdaemon.sdaemonname msgid "Daemon Module" msgstr "Démon modul" + diff -Nru lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.lt.po lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.lt.po --- lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.lt.po 2012-08-15 23:39:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.lt.po 2015-12-19 00:06:27.000000000 +0000 @@ -9,16 +9,12 @@ "Language: lt\n" "Content-Transfer-Encoding: 8bit\n" "MIME-Version: 1.0\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" -"100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.5\n" #: reglazdaemon.sdaemonappdescr -msgid "" -"Daemon (service) application is a non-gui application that runs in the " -"background." -msgstr "" -"Tarnyba – tai foniniu režimu veikianti programa, kuri neturi grafinės sąsajos." +msgid "Daemon (service) application is a non-gui application that runs in the background." +msgstr "Tarnyba – tai foniniu režimu veikianti programa, kuri neturi grafinės sąsajos." #: reglazdaemon.sdaemonappname msgid "Daemon (service) application" @@ -48,4 +44,3 @@ msgid "Daemon Module" msgstr "Tarnybos modulis" - diff -Nru lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.ru.po lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.ru.po --- lazarus-1.4.4+dfsg/components/daemon/languages/reglazdaemon.ru.po 2010-08-19 21:46:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/daemon/languages/reglazdaemon.ru.po 2015-12-19 00:06:27.000000000 +0000 @@ -10,7 +10,6 @@ "Content-Transfer-Encoding: 8bit\n" #: reglazdaemon.sdaemonappdescr -#| msgid "Daemon (service) application are non-gui applications that run in the background." msgid "Daemon (service) application is a non-gui application that runs in the background." msgstr "Приложение-демон (служба) является приложением без графического интерфейса пользователя, работающим в фоновом режиме." diff -Nru lazarus-1.4.4+dfsg/components/datadict/fpcodegenerator.pp lazarus-1.6+dfsg/components/datadict/fpcodegenerator.pp --- lazarus-1.4.4+dfsg/components/datadict/fpcodegenerator.pp 2008-08-25 22:56:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/fpcodegenerator.pp 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, db, fpddCodegen, fpDataDict, controls, dialogs; + Classes, SysUtils, LazUTF8, db, fpddCodegen, fpDataDict, Controls; Type { TFPCodeGenerator } diff -Nru lazarus-1.4.4+dfsg/components/datadict/frmconfdatadict.pp lazarus-1.6+dfsg/components/datadict/frmconfdatadict.pp --- lazarus-1.4.4+dfsg/components/datadict/frmconfdatadict.pp 2012-06-09 20:42:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/frmconfdatadict.pp 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + SysUtils, LazFileUtils, Forms, Controls, EditBtn, StdCtrls, idedatadict, ButtonPanel, ldd_consts; type diff -Nru lazarus-1.4.4+dfsg/components/datadict/frmconfprojdatadict.pp lazarus-1.6+dfsg/components/datadict/frmconfprojdatadict.pp --- lazarus-1.4.4+dfsg/components/datadict/frmconfprojdatadict.pp 2012-06-09 20:42:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/frmconfprojdatadict.pp 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + SysUtils, LazFileUtils, Forms, Controls, Dialogs, EditBtn, StdCtrls, idedatadict, ldd_consts; type diff -Nru lazarus-1.4.4+dfsg/components/datadict/frmgeneratedcode.pp lazarus-1.6+dfsg/components/datadict/frmgeneratedcode.pp --- lazarus-1.4.4+dfsg/components/datadict/frmgeneratedcode.pp 2012-06-09 20:42:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/frmgeneratedcode.pp 2015-07-04 23:08:00.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - SynHighlighterPas, SynMemo, ExtCtrls, StdCtrls, ldd_consts; + Classes, LazUTF8, Forms, Dialogs, ExtCtrls, StdCtrls, + SynHighlighterPas, SynMemo, ldd_consts; type diff -Nru lazarus-1.4.4+dfsg/components/datadict/idedatadict.pp lazarus-1.6+dfsg/components/datadict/idedatadict.pp --- lazarus-1.4.4+dfsg/components/datadict/idedatadict.pp 2014-07-20 20:15:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/idedatadict.pp 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, fpdatadict, ProjectIntf, LazIDEIntf, ldd_consts; + Classes, SysUtils, fpdatadict, LazUTF8, LazIDEIntf, ldd_consts; Type @@ -298,8 +298,9 @@ begin I:=FKnownDicts.IndexOf(ADict); If (I<>-1) then - Result:=(FKnownDicts.Objects[i] as TDDFile).FFileName; - + Result:=(FKnownDicts.Objects[i] as TDDFile).FFileName + Else + Result:=''; end; { TDDFile } diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.cs.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.cs.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.cs.po 2013-01-10 20:40:19.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.cs.po 2015-12-19 00:06:27.000000000 +0000 @@ -140,7 +140,7 @@ "Please set a data dictionary for the project\n" msgstr "" "Žádný datový slovník není aktivní.\n" -"\vProsím nastavte datový slovník pro projekt\n" +"vProsím nastavte datový slovník pro projekt\n" #: ldd_consts.serrselectdd msgid "Please select a known data dictionary" @@ -209,3 +209,4 @@ #: ldd_consts.swrongselection msgid "Wrong selection count : %d" msgstr "Špatný výběr: %d" + diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.de.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.de.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.de.po 2014-08-05 22:40:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.de.po 2015-12-19 00:06:27.000000000 +0000 @@ -171,7 +171,6 @@ msgstr "Konfiguration" #: ldd_consts.smenuconfprojdatadict -#| msgid "Set..." msgid "Set ..." msgstr "Festlegen ..." diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.fr.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.fr.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.fr.po 2015-04-15 20:47:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -3,13 +3,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: 2015-04-14 07:54+0100\n" -"PO-Revision-Date: 2015-04-14 07:54+0100\n" +"PO-Revision-Date: 2015-12-18 09:45+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: ldd_consts.ldd_availablecodegenerators msgid "Available code generators" @@ -205,8 +205,9 @@ #: ldd_consts.swarningnoddforfield msgid "Warning: No definition in data dictionary for field %s" -msgstr "Avertissement : Pas de définition dans le dictionnaire de données pour le champ %s" +msgstr "Avertissement :aucune définition dans le dictionnaire de données pour le champ %s" #: ldd_consts.swrongselection msgid "Wrong selection count : %d" msgstr "Compte de sélection erroné : %d" + diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.hu.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.hu.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -210,3 +210,4 @@ #: ldd_consts.swrongselection msgid "Wrong selection count : %d" msgstr "Rossz a kijelölések száma: %d" + diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.lt.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.lt.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.lt.po 2014-08-05 22:40:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.lt.po 2015-12-19 00:06:27.000000000 +0000 @@ -172,7 +172,6 @@ msgstr "Sąranka" #: ldd_consts.smenuconfprojdatadict -#| msgid "Set..." msgid "Set ..." msgstr "Nustatyti…" diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.pt_BR.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.pt_BR.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.pt_BR.po 2014-08-05 22:40:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.pt_BR.po 2015-12-19 00:06:27.000000000 +0000 @@ -171,7 +171,6 @@ msgstr "Configuração" #: ldd_consts.smenuconfprojdatadict -#| msgid "Set..." msgid "Set ..." msgstr "Definir ..." diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.ru.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.ru.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.ru.po 2012-04-10 00:51:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.ru.po 2015-12-19 00:06:27.000000000 +0000 @@ -170,7 +170,6 @@ msgstr "Настройка" #: ldd_consts.smenuconfprojdatadict -#| msgid "Set..." msgid "Set ..." msgstr "Назначить ..." diff -Nru lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.uk.po lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.uk.po --- lazarus-1.4.4+dfsg/components/datadict/languages/ldd_consts.uk.po 2014-08-05 22:40:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/languages/ldd_consts.uk.po 2015-12-19 00:06:27.000000000 +0000 @@ -173,7 +173,6 @@ msgstr "Налаштування" #: ldd_consts.smenuconfprojdatadict -#| msgid "Set..." msgid "Set ..." msgstr "Задати ..." diff -Nru lazarus-1.4.4+dfsg/components/datadict/reglazdatadict.pp lazarus-1.6+dfsg/components/datadict/reglazdatadict.pp --- lazarus-1.4.4+dfsg/components/datadict/reglazdatadict.pp 2014-07-20 20:15:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/datadict/reglazdatadict.pp 2015-07-04 23:08:00.000000000 +0000 @@ -17,7 +17,7 @@ // Code generator units fpddCodegen, fpCodeGenerator, - FileUtil + LazFileUtils, LazUTF8 {$IFNDEF NOSTDCODEGENS} ,fpcgSQLConst ,fpcgdbcoll diff -Nru lazarus-1.4.4+dfsg/components/datetimectrls/datetimepicker.pas lazarus-1.6+dfsg/components/datetimectrls/datetimepicker.pas --- lazarus-1.4.4+dfsg/components/datetimectrls/datetimepicker.pas 2015-02-07 12:22:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/datetimectrls/datetimepicker.pas 2015-10-10 13:33:30.000000000 +0000 @@ -114,12 +114,17 @@ TDTDateMode = (dmComboBox, dmUpDown, dmNone); + { calendar alignment - left or right, + dtaDefault means it is determined by BiDiMode } + TDTCalAlignment = (dtaLeft, dtaRight, dtaDefault); + { TCustomDateTimePicker } TCustomDateTimePicker = class(TCustomControl) private FAutoAdvance: Boolean; FAutoButtonSize: Boolean; + FCalAlignment: TDTCalAlignment; FCalendarWrapperClass: TCalendarControlWrapperClass; FCascade: Boolean; FCenturyFrom, FEffectiveCenturyFrom: Word; @@ -186,10 +191,12 @@ function GetChecked: Boolean; function GetDate: TDate; function GetDateTime: TDateTime; + function GetDroppedDown: Boolean; function GetShowCheckBox: Boolean; function GetTime: TTime; procedure SetArrowShape(const AValue: TArrowShape); procedure SetAutoButtonSize(AValue: Boolean); + procedure SetCalAlignment(AValue: TDTCalAlignment); procedure SetCalendarWrapperClass(AValue: TCalendarControlWrapperClass); procedure SetCenturyFrom(const AValue: Word); procedure SetChecked(const AValue: Boolean); @@ -380,6 +387,8 @@ property MonthNames: String read FMonthNames write SetMonthNames; property ShowMonthNames: Boolean read FShowMonthNames write SetShowMonthNames default False; + property DroppedDown: Boolean read GetDroppedDown; + property CalAlignment: TDTCalAlignment read FCalAlignment write SetCalAlignment default dtaDefault; public constructor Create(AOwner: TComponent); override; @@ -401,6 +410,7 @@ public property DateTime; property CalendarWrapperClass; + property DroppedDown; published property ArrowShape; property ShowCheckBox; @@ -449,6 +459,7 @@ property ParentBiDiMode; property MonthNames; property ShowMonthNames; + property CalAlignment; // events: property OnChange; property OnCheckBoxChange; @@ -580,7 +591,8 @@ H := Height; W := Width; - if IsRightToLeft then + if (DTPicker.CalAlignment = dtaRight) or + ((DTPicker.CalAlignment = dtaDefault) and IsRightToLeft) then P := DTPicker.ControlToScreen(Point(DTPicker.Width - W, DTPicker.Height)) else P := DTPicker.ControlToScreen(Point(0, DTPicker.Height)); @@ -3293,6 +3305,11 @@ Result := FDateTime; end; +function TCustomDateTimePicker.GetDroppedDown: Boolean; +begin + Result := Assigned(FCalendarForm); +end; + function TCustomDateTimePicker.GetShowCheckBox: Boolean; begin Result := Assigned(FCheckBox); @@ -3335,6 +3352,12 @@ end; end; +procedure TCustomDateTimePicker.SetCalAlignment(AValue: TDTCalAlignment); +begin + if FCalAlignment = AValue then Exit; + FCalAlignment := AValue; +end; + procedure TCustomDateTimePicker.SetCalendarWrapperClass( AValue: TCalendarControlWrapperClass); begin @@ -3637,6 +3660,7 @@ with GetControlClassDefaultSize do SetInitialBounds(0, 0, cx, cy); + FCalAlignment := dtaDefault; FCorrectedDTP := dtpAMPM; FCorrectedValue := 0; FChangeInRecursiveCall := False; diff -Nru lazarus-1.4.4+dfsg/components/datetimectrls/datetimepickerpropedit.pas lazarus-1.6+dfsg/components/datetimectrls/datetimepickerpropedit.pas --- lazarus-1.4.4+dfsg/components/datetimectrls/datetimepickerpropedit.pas 2014-01-31 11:03:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/datetimectrls/datetimepickerpropedit.pas 2015-05-31 13:45:31.000000000 +0000 @@ -130,7 +130,8 @@ DTPicker.DateTime := F.DateTimePicker1.DateTime; Modified; - GlobalDesignHook.RefreshPropertyValues; + if Assigned(GlobalDesignHook) then + GlobalDesignHook.RefreshPropertyValues; end; end; finally @@ -482,7 +483,8 @@ end; Modified; - GlobalDesignHook.RefreshPropertyValues; + if Assigned(GlobalDesignHook) then + GlobalDesignHook.RefreshPropertyValues; end; end; finally diff -Nru lazarus-1.4.4+dfsg/components/datetimectrls/dbdatetimepicker.pas lazarus-1.6+dfsg/components/datetimectrls/dbdatetimepicker.pas --- lazarus-1.4.4+dfsg/components/datetimectrls/dbdatetimepicker.pas 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/datetimectrls/dbdatetimepicker.pas 2015-10-10 13:33:30.000000000 +0000 @@ -63,6 +63,7 @@ destructor Destroy; override; property Field: TField read GetField; property CalendarWrapperClass; + property DroppedDown; published { Published declarations } property DataField: string read GetDataField write SetDataField; @@ -115,6 +116,7 @@ property ParentBiDiMode; property MonthNames; property ShowMonthNames; + property CalAlignment; //events: property OnChange; property OnCheckBoxChange; diff -Nru lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.de.po lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.de.po --- lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.de.po 2014-09-08 08:24:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.de.po 2015-12-19 00:06:27.000000000 +0000 @@ -71,12 +71,10 @@ msgstr "Kann Dataset nicht für Export öffnen: %s" #: sdb_consts.sexecute -#| msgid "Execute..." msgid "Execute ..." msgstr "Ausführen ..." #: sdb_consts.snrecordsexported -#| msgid "Succesfully exported %d records." msgid "Successfully exported %d records." msgstr "%d Datensätze erfolgreich exportiert." diff -Nru lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.fr.po lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.fr.po --- lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.fr.po 2015-04-15 20:47:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -3,17 +3,17 @@ "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: 2015-04-14 07:54+0100\n" -"PO-Revision-Date: 2015-04-14 17:27+0100\n" +"PO-Revision-Date: 2015-12-18 09:46+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: sdb_consts.scancelrecordsexported msgid "Exported %d before user canceled." -msgstr "%d exportés avant que l'utilisateur n'ait annulée." +msgstr "%d exportés avant que l'utilisateur n'ait annulé." #: sdb_consts.sdb_availableexportformats msgid "Available export formats:" @@ -41,7 +41,7 @@ #: sdb_consts.sdb_formatting msgid "Formatting" -msgstr "Formatage" +msgstr "Formatage en cours" #: sdb_consts.sdb_moveselectedfielddown msgid "Move selected field down" @@ -82,3 +82,4 @@ #: sdb_consts.sprogress msgid "Exporting %d records" msgstr "Exportation de %d enregistrements" + diff -Nru lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.lt.po lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.lt.po --- lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.lt.po 2014-08-05 22:42:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.lt.po 2015-12-19 00:06:27.000000000 +0000 @@ -72,17 +72,17 @@ msgstr "Eksportuojant nepavyko atverti duomenų: %s" #: sdb_consts.sexecute -#| msgid "Execute..." msgid "Execute ..." msgstr "Vykdyti…" #: sdb_consts.snrecordsexported -#, fuzzy +#, fuzzy,badformat #| msgid "Succesfully exported %d records." msgid "Successfully exported %d records." msgstr "Sėkmingai eksportuota laukų: %s." #: sdb_consts.sprogress +#, fuzzy,badformat msgid "Exporting %d records" msgstr "Eksportuojama įrašų: %s" diff -Nru lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.ru.po lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.ru.po --- lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.ru.po 2014-07-18 20:03:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.ru.po 2016-02-09 23:06:07.000000000 +0000 @@ -8,6 +8,8 @@ "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: sdb_consts.scancelrecordsexported msgid "Exported %d before user canceled." @@ -63,23 +65,20 @@ #: sdb_consts.serrnodatasetassigned msgid "DataExporter has no Dataset assigned." -msgstr "У DataExporter отсутствует назначенный набор данных." +msgstr "У DataExporter отсутствует присвоенный набор данных." #: sdb_consts.serropeningdataset msgid "Could not open dataset for exporting: %s" msgstr "Невозможно открыть набор данных для экспорта: %s" #: sdb_consts.sexecute -#| msgid "Execute..." msgid "Execute ..." msgstr "Выполнение ..." #: sdb_consts.snrecordsexported -#| msgid "Succesfully exported %d records." msgid "Successfully exported %d records." msgstr "Экспорт записей (%d шт.) успешно завершён." #: sdb_consts.sprogress msgid "Exporting %d records" msgstr "Экспорт записи %d" - diff -Nru lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.uk.po lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.uk.po --- lazarus-1.4.4+dfsg/components/dbexport/languages/sdb_consts.uk.po 2014-08-05 22:42:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/dbexport/languages/sdb_consts.uk.po 2015-12-19 00:06:27.000000000 +0000 @@ -73,7 +73,6 @@ msgstr "Не можу відкрити набір даних для експорту: %s" #: sdb_consts.sexecute -#| msgid "Execute..." msgid "Execute ..." msgstr "Виконати ..." diff -Nru lazarus-1.4.4+dfsg/components/debuggerintf/dbgintfdebuggerbase.pp lazarus-1.6+dfsg/components/debuggerintf/dbgintfdebuggerbase.pp --- lazarus-1.4.4+dfsg/components/debuggerintf/dbgintfdebuggerbase.pp 2014-12-09 11:31:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/debuggerintf/dbgintfdebuggerbase.pp 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: dbgintfdebuggerbase.pp 47149 2014-12-09 11:31:36Z mattias $ } +{ $Id: dbgintfdebuggerbase.pp 49494 2015-07-04 23:08:00Z juha $ } { ------------------------------------------- DebuggerBase.pp - Debugger base classes ------------------------------------------- @@ -33,9 +33,17 @@ {$mode objfpc}{$H+} +{$ifndef VER2} + {$define disassemblernestedproc} +{$endif VER2} + +{$ifdef disassemblernestedproc} + {$modeswitch nestedprocvars} +{$endif disassemblernestedproc} + interface -uses DbgIntfBaseTypes, DbgIntfMiscClasses, LazClasses, LazLoggerBase, FileUtil, +uses DbgIntfBaseTypes, DbgIntfMiscClasses, LazClasses, LazLoggerBase, LazFileUtils, maps, LCLProc, Classes, sysutils, math, contnrs, LazMethodList; const @@ -146,6 +154,16 @@ (* TValidState: State for breakpoints *) TValidState = (vsUnknown, vsValid, vsInvalid); +const + DebuggerDataStateStr : array[TDebuggerDataState] of string = ( + 'Unknown', + 'Requested', + 'Evaluating', + 'Valid', + 'Invalid', + 'Error'); + +type TDBGEvaluateFlag = (defNoTypeInfo, // No Typeinfo object will be returned defSimpleTypeInfo, // Returns: Kind (skSimple, skClass, ..); TypeName (but does make no attempt to avoid an alias) @@ -1174,6 +1192,22 @@ (******************************************************************************) (******************************************************************************) +(* Some values to calculate how many bytes to disassemble for a given amount of lines + Those values are only guesses *) +const + // DAssBytesPerCommandAvg: Average len: Used for LinesBefore/LinesAfter. + // (should rather be to big than to small) + DAssBytesPerCommandAvg = 8; + // If we have a range with more then DAssRangeOverFuncTreshold * DAssBytesPerCommandAvg + // then prefer the Range-end as start, rather than the known func start + // (otherwhise re-dissassemble the whole function, including the part already known) + // The assumption is, that no single *source* statement starting before this range, + // will ever reach into the next statement (where the next statement already started / mixed addresses) + DAssRangeOverFuncTreshold = 15; + // Never dis-assemble more bytes in a single go (actually, max-offset before requested addr) + DAssMaxRangeSize = 4096; + +type PDisassemblerEntry = ^TDisassemblerEntry; TDisassemblerEntry = record Addr: TDbgPtr; // Address @@ -1187,6 +1221,19 @@ SrcStatementCount: SmallInt; // Count of Statements for this SrcLine end; + TDisassemblerAddressValidity = + (avFoundFunction, avFoundRange, avFoundStatement, // known address + avGuessed, // guessed + avExternRequest, // As requested by external caller + avPadded // Padded, because address was not known for sure + ); + TDisassemblerAddress = record + Value, GuessedValue: TDBGPtr; + Offset: Integer; + Validity: TDisassemblerAddressValidity; + end; + + { TBaseDisassembler } TBaseDisassembler = class(TObject) @@ -1295,6 +1342,35 @@ read FOnMerge write FOnMerge; end; + { TDBGDisassemblerRangeExtender } + + TDoDisassembleRangeProc = function(AnEntryRanges: TDBGDisassemblerEntryMap; AFirstAddr, ALastAddr: TDisassemblerAddress; StopAfterAddress: TDBGPtr; StopAfterNumLines: Integer): Boolean {$ifdef disassemblernestedproc} is nested {$else} of object{$endif}; + TDisassembleCancelProc = function(): Boolean {$ifdef disassemblernestedproc} is nested {$else} of object {$endif}; + TDisassembleAdjustToKnowFunctionStart = function (var AStartAddr: TDisassemblerAddress): Boolean {$ifdef disassemblernestedproc} is nested {$else} of object {$endif}; + + TDBGDisassemblerRangeExtender = class + private + FOnAdjustToKnowFunctionStart: TDisassembleAdjustToKnowFunctionStart; + FOnCheckCancel: TDisassembleCancelProc; + FOnDoDisassembleRange: TDoDisassembleRangeProc; + + FEntryRangeMap: TDBGDisassemblerEntryMap; + FRangeIterator: TDBGDisassemblerEntryMapIterator; + function CheckIfCancelled: boolean; + function AdjustToRangeOrKnowFunctionStart(var AStartAddr: TDisassemblerAddress; + ARangeBefore: TDBGDisassemblerEntryRange): Boolean; + function InitAddress(AValue: TDBGPtr; AValidity: TDisassemblerAddressValidity; + AnOffset: Integer = -1): TDisassemblerAddress; + public + constructor Create(AnEntryRangeMap: TDBGDisassemblerEntryMap); + destructor Destroy; + function DisassembleRange(ALinesBefore, + ALinesAfter: integer; AStartAddr: TDBGPtr; AnEndAddr: TDBGPtr): boolean; + property OnDoDisassembleRange: TDoDisassembleRangeProc read FOnDoDisassembleRange write FOnDoDisassembleRange; + property OnCheckCancel: TDisassembleCancelProc read FOnCheckCancel write FOnCheckCancel; + property OnAdjustToKnowFunctionStart: TDisassembleAdjustToKnowFunctionStart read FOnAdjustToKnowFunctionStart write FOnAdjustToKnowFunctionStart; + end; + { TDBGDisassembler } TDBGDisassembler = class(TBaseDisassembler) @@ -1840,6 +1916,7 @@ function dbgs(AnAttribute: TDBGSymbolAttribute): String; overload; function dbgs(AnAttributes: TDBGSymbolAttributes): String; overload; function dbgs(ADisassRange: TDBGDisassemblerEntryRange): String; overload; +function dbgs(const AnAddr: TDisassemblerAddress): string; overload; function dbgs(ACategory: TDBGEventCategory): String; overload; function dbgs(AFlag: TDBGEvaluateFlag): String; overload; function dbgs(AFlags: TDBGEvaluateFlags): String; overload; @@ -1977,6 +2054,254 @@ end; end; +function Dbgs(const AnAddr: TDisassemblerAddress): string; +const + ValidityName: array [TDisassemblerAddressValidity] of string = + ('FoundFunction', 'FoundRange', 'FoundStatemnet', 'Guessed', 'ExternRequest', 'Padded'); +begin + Result := Format('[[ Value=%u, Guessed=%u, Offset=%d, Validity=%s ]]', + [AnAddr.Value, AnAddr.GuessedValue, AnAddr.Offset, ValidityName[AnAddr.Validity]]); +end; + +{ TDBGDisassemblerRangeExtender } + +function TDBGDisassemblerRangeExtender.InitAddress(AValue: TDBGPtr; + AValidity: TDisassemblerAddressValidity; AnOffset: Integer): TDisassemblerAddress; +begin + Result.Value := AValue; + Result.GuessedValue := AValue;; + Result.Offset := AnOffset; + Result.Validity := AValidity; +end; + +constructor TDBGDisassemblerRangeExtender.Create(AnEntryRangeMap: TDBGDisassemblerEntryMap); +begin + FEntryRangeMap := AnEntryRangeMap; + FRangeIterator:= TDBGDisassemblerEntryMapIterator.Create(FEntryRangeMap); +end; + +destructor TDBGDisassemblerRangeExtender.Destroy; +begin + FRangeIterator.Free; + inherited; +end; + +function TDBGDisassemblerRangeExtender.CheckIfCancelled: boolean; +begin + result := assigned(FOnCheckCancel) and FOnCheckCancel(); +end; + +// Set Value, based on GuessedValue +function TDBGDisassemblerRangeExtender.AdjustToRangeOrKnowFunctionStart(var AStartAddr: TDisassemblerAddress; + ARangeBefore: TDBGDisassemblerEntryRange): Boolean; +begin + Result := False; + AStartAddr.Offset := -1; + AStartAddr.Validity := avGuessed; + if OnAdjustToKnowFunctionStart(AStartAddr) + then begin + // funtion found, check for range + if (ARangeBefore <> nil) and (ARangeBefore.LastAddr > AStartAddr.Value) + and (ARangeBefore.Count > DAssRangeOverFuncTreshold) + and (ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Offset > DAssRangeOverFuncTreshold * DAssBytesPerCommandAvg) + then begin + // got a big overlap, don't redo the whole function + debugln(DBG_DISASSEMBLER, ['INFO: Restarting inside previous range for known function-start=', Dbgs(AStartAddr),' and ARangeBefore=', dbgs(ARangeBefore)]); + // redo one statement + {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur + AStartAddr.Value := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Addr; + AStartAddr.Offset := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Offset; + AStartAddr.Validity := avFoundRange; + //AStartAddr - ARangeBefore.EntriesPtr[ARangeBefore.Count - DAssRangeOverFuncTreshold]^.Addr ; + {$POP} + end + end + else begin + debugln(DBG_DISASSEMBLER, ['INFO: No known function-start for ', Dbgs(AStartAddr),' ARangeBefore=', dbgs(ARangeBefore)]); + // no function found // check distance to previous range + // The distance of range before has been checked by the caller + if (ARangeBefore <> nil) + then begin + {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur + AStartAddr.Value := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Addr; + AStartAddr.Offset := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Offset; + AStartAddr.Validity := avFoundRange; + {$POP} + end + else begin + AStartAddr.Value := AStartAddr.GuessedValue; + AStartAddr.Offset := -1; + AStartAddr.Validity := avGuessed; + end; + end; +end; + +function TDBGDisassemblerRangeExtender.DisassembleRange(ALinesBefore, + ALinesAfter: integer; AStartAddr: TDBGPtr; AnEndAddr: TDBGPtr): boolean; +var + TryStartAt, TryEndAt: TDisassemblerAddress; + TmpAddr: TDBGPtr; + GotCnt, LastGotCnt: Integer; + RngBefore, RngAfter: TDBGDisassemblerEntryRange; +begin + result := true; + (* Try to find the boundaries for the unknown range containing FStartAddr + If FStartAddr already has known disassembler data, then this will return + the boundaries of the 1ast unknown section after FStartAddr + *) + // Guess the maximum Addr-Range which needs to be disassembled + TryStartAt := InitAddress(AStartAddr, avExternRequest, -1); + // Find the begin of the function at TryStartAt + // or the rng before (if not to far back) + + RngBefore := FRangeIterator.GetRangeForAddr(AStartAddr, True); + {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur + if (RngBefore <> nil) + and (TryStartAt.Value > RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr) + and (TryStartAt.Value - RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr > ALinesBefore * DAssBytesPerCommandAvg) + then RngBefore := nil; + {$POP} + TmpAddr := AStartAddr - Min(ALinesBefore * DAssBytesPerCommandAvg, DAssMaxRangeSize); + TryStartAt.GuessedValue := TmpAddr; + AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore); + // check max size + if (TryStartAt.Value < AStartAddr - Min(AStartAddr, DAssMaxRangeSize)) + then begin + DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: FStartAddr=', AStartAddr, ' TryStartAt.Value=', TryStartAt.Value ]); + TryStartAt := InitAddress(TmpAddr, avGuessed); + end; + + // Guess Maximum, will adjust later + if TryStartAt.Value > AnEndAddr then begin + if (RngBefore <> nil) then begin + GotCnt := RngBefore.IndexOfAddr(AnEndAddr); + LastGotCnt := RngBefore.IndexOfAddr(TryStartAt.Value); + if (GotCnt >= 0) and (LastGotCnt >= 0) and (LastGotCnt > GotCnt) then + ALinesAfter := Max(ALinesAfter - (LastGotCnt - GotCnt), 1); + end; + AnEndAddr := TryStartAt.Value; // WARNING: modifying FEndAddr + end; + + TryEndAt := InitAddress(AnEndAddr + ALinesAfter * DAssBytesPerCommandAvg, avGuessed); + + // Read as many unknown ranges, until LinesAfter is met + GotCnt := -1; + while(True) + do begin + // check if we need any LinesAfter + if CheckIfCancelled then break; + LastGotCnt:= GotCnt; + GotCnt := 0; + TmpAddr := AnEndAddr; + if TryStartAt.Value > AnEndAddr + then + TmpAddr := TryStartAt.Value; + if RngBefore <> nil + then begin + TmpAddr := RngBefore.RangeEndAddr; + if RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr > TmpAddr + then TmpAddr := RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr; + GotCnt := RngBefore.IndexOfAddrWithOffs(AnEndAddr); + if GotCnt >= 0 then begin + GotCnt := RngBefore.Count - 1 - GotCnt; // the amount of LinesAfter, that are already known + if (GotCnt >= ALinesAfter) + then break; + // adjust end address + TryEndAt := InitAddress(RngBefore.RangeEndAddr + (ALinesAfter-GotCnt) * DAssBytesPerCommandAvg, avGuessed); + end + else GotCnt := 0; + end; + if LastGotCnt >= GotCnt + then begin + debugln(['Disassembler: *** Failure to get any more lines while scanning forward LastGotCnt=',LastGotCnt, ' now GotCnt=',GotCnt, ' Requested=',ALinesAfter]); + break; + end; + + if CheckIfCancelled then break; + RngAfter := FRangeIterator.NextRange; + // adjust TryEndAt + if (RngAfter <> nil) and (TryEndAt.Value >= RngAfter.RangeStartAddr) + then begin + TryEndAt.Value := RngAfter.RangeStartAddr; + TryEndAt.Validity := avFoundRange; + end; + + if CheckIfCancelled then break; + // Try to disassemble the range + if not OnDoDisassembleRange(FEntryRangeMap, TryStartAt, TryEndAt, TmpAddr, ALinesAfter-GotCnt) + then begin + // disassemble failed + debugln(['ERROR: Failed to disassemble from ', Dbgs(TryStartAt),' to ', Dbgs(TryEndAt)]); + break; + end; + + // prepare the next range + RngBefore := FRangeIterator.GetRangeForAddr(AStartAddr, True); + if (RngBefore = nil) + then begin + debugln(['INTERNAL ERROR: (linesafter) Missing the data, that was just disassembled: from ', Dbgs(TryStartAt),' to ', Dbgs(TryEndAt)]); + break; + end; + + TryStartAt.Value := RngBefore.RangeEndAddr; + TryStartAt.Validity := avFoundRange; + TryEndAt := InitAddress(AnEndAddr + ALinesAfter * DAssBytesPerCommandAvg, avGuessed); + end; + + // Find LinesBefore + RngAfter := FRangeIterator.GetRangeForAddr(AStartAddr, True); + GotCnt := -1; + while(True) + do begin + if CheckIfCancelled then break; + LastGotCnt:= GotCnt; + if (RngAfter = nil) + then begin + debugln(['INTERNAL ERROR: (linesbefore) Missing the data, that was disassembled: from ', Dbgs(TryStartAt),' to ', Dbgs(TryEndAt)]); + break; + end; + + GotCnt := RngAfter.IndexOfAddrWithOffs(AStartAddr); // already known before + if GotCnt >= ALinesBefore + then break; + if LastGotCnt >= GotCnt + then begin + debugln(['Disassembler: *** Failure to get any more lines while scanning backward LastGotCnt=',LastGotCnt, ' now GotCnt=',GotCnt, ' Requested=',ALinesBefore]); + break; + end; + + TryEndAt := InitAddress(RngAfter.RangeStartAddr, avFoundRange); + TmpAddr := TryEndAt.Value - Min((ALinesBefore - GotCnt) * DAssBytesPerCommandAvg, DAssMaxRangeSize); + TryStartAt := InitAddress(TryEndAt.Value - 1, avGuessed); + TryStartAt.GuessedValue := TmpAddr; + // and adjust + RngBefore := FRangeIterator.PreviousRange; + {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur + if (RngBefore <> nil) + and (TryStartAt.Value > RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr) + and (TryStartAt.Value - RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr > (ALinesBefore - GotCnt) * DAssBytesPerCommandAvg) + then RngBefore := nil; + {$POP} + AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore); + if (TryStartAt.Value < TryEndAt.Value - Min(TryEndAt.Value, DAssMaxRangeSize)) + then begin + DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: TryEndAt.Value=', TryEndAt.Value, ' TryStartAt.Value=', TryStartAt.Value ]); + TryStartAt := InitAddress(TmpAddr, avGuessed); + end; + + if CheckIfCancelled then break; + // Try to disassemble the range + if not OnDoDisassembleRange(FEntryRangeMap, TryStartAt, TryEndAt, 0, -1) + then begin + // disassemble failed + debugln(['ERROR: Failed to disassemble from ', Dbgs(TryStartAt),' to ', Dbgs(TryEndAt)]); + break; + end; + + RngAfter := FRangeIterator.GetRangeForAddr(AStartAddr, True); + end; +end; + { TThreadEntry } procedure TThreadEntry.SetThreadState(AValue: String); @@ -4755,6 +5080,8 @@ FCount := FCount + AnotherRange.Count - i; FRangeEndAddr := AnotherRange.FRangeEndAddr; FLastEntryEndAddr := AnotherRange.FLastEntryEndAddr; + if FRangeStartAddr = 0 then + FRangeStartAddr := AnotherRange.FRangeStartAddr; end; debugln(DBG_DISASSEMBLER, ['INFO: TDBGDisassemblerEntryRange.Merge AFTER MERGE: ', dbgs(self) ]); end; diff -Nru lazarus-1.4.4+dfsg/components/debuggerintf/Makefile.compiled lazarus-1.6+dfsg/components/debuggerintf/Makefile.compiled --- lazarus-1.4.4+dfsg/components/debuggerintf/Makefile.compiled 2015-02-14 09:39:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/debuggerintf/Makefile.compiled 2015-10-01 18:40:54.000000000 +0000 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <Makefile Value="2"/> - <Params Value=" -Fu../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET);. -MObjFPC -Scghi -O1 -g -gl -l -vw- -vh- -venibq -vm4046 debuggerintf.pas"/> + <Params Value=" -Fu../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET);. -MObjFPC -Scghi -O1 -g -gl -l -venibq -vw-h- -vm4046 debuggerintf.pas"/> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/debuggerintf/Makefile.fpc lazarus-1.6+dfsg/components/debuggerintf/Makefile.fpc --- lazarus-1.4.4+dfsg/components/debuggerintf/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/debuggerintf/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for DebuggerIntf 0.1 # -# This file was generated on 3-10-15 +# This file was generated on 1-10-15 [package] name=debuggerintf @@ -11,7 +11,7 @@ [compiler] unittargetdir=lib/$(CPU_TARGET)-$(OS_TARGET) unitdir=../../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET) . -options= -MObjFPC -Scghi -O1 -g -gl -l -vw- -vh- -venibq -vm4046 $(DBG_OPTIONS) +options= -MObjFPC -Scghi -O1 -g -gl -l -venibq -vw-h- -vm4046 $(DBG_OPTIONS) [target] units=debuggerintf.pas diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar_impl.pas lazarus-1.6+dfsg/components/editortoolbar/editortoolbar_impl.pas --- lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar_impl.pas 2014-12-03 17:56:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/editortoolbar_impl.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,606 +0,0 @@ -{ - Copyright (C) 2007 Graeme Geldenhuys (graemeg@gmail.com) - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License - for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -} - -unit editortoolbar_impl; - -{$mode objfpc}{$H+} - -interface - -uses - Classes - ,jumpto_impl - ,Forms - ,ComCtrls - ,Controls - ,ExtCtrls - ,Menus - ,MenuIntf - ,IDEImagesIntf - ,SrcEditorIntf - ,editortoolbar_str - ,IDECommands; - - -const - cSettingsFile = 'editortoolbar.xml'; - cDivider = '---------------'; - iAll = 15; - iDesign = 1; - iDebug = 2; - iHTML = 4; - iCustom = 8; - -type - - { TEditorToolbar } - - TEditorToolbar = class(TComponent) - private - FJumpHandler: TJumpHandler; - FWindow: TSourceEditorWindowInterface; - TB: TToolbar; - PM: TPopupMenu; - PPUP: TPopupMenu; - CfgButton: TToolButton; - FButtonList: TList; - UpdateTimer: TTimer; - procedure CreateEditorToolbar(AW: TForm; var ATB: TToolbar); - function CreateJumpItem(AJumpType: TJumpType; O: TComponent): TMenuItem; - function CreateProfileItem(ProfIndx: Integer; O: TComponent): TMenuItem; - procedure DoConfigureToolbar(Sender: TObject); - procedure UpdateBar(Sender: TObject); - protected - procedure MenuItemClick (Sender: TObject); - procedure AddButton(AMenuItem: TIDEMenuItem); - procedure PositionAtEnd(AToolbar: TToolbar; AButton: TToolButton); - procedure Reload; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure InitEditorToolBar; - procedure AddCustomItems; - procedure AddDivider; - procedure AddStaticItems; - procedure ClearToolbar; - property OwnerWindow: TSourceEditorWindowInterface read FWindow; - end; - - - { TEditorToolbarList } - - TEditorToolbarList = class - private - FToolBarList: TFPList; - protected - procedure SourceWindowCreated(Sender: TObject); - procedure SourceWindowDestroyed(Sender: TObject); - procedure AddBar(ABar: TEditorToolbar); - procedure DelBar(ABar: TEditorToolbar); - procedure ReloadAll; - public - constructor Create; - destructor Destroy; override; - end; - -function GetShortcut(AMenuItem: TIDEMenuItem): string; -function GetProfileIndex (aMask: Integer): Integer; - -procedure Register; - -var - sToolbarPos: string; - bToolBarShow: boolean; - EditorMenuCommand:TIDEMenuCommand; - ProfileMask: array [0..4] of Integer = (iAll,iDesign,iDebug,iHTML,iCustom); - sLocalizedProfileNames: array[0..4] of string; - -implementation - -{$R toolbar.res} // all required images - -uses - Dialogs - ,SysUtils - ,LResources - ,EdtTbConfigFrm - ,LazConfigStorage - ,BaseIDEIntf - ,LCLProc; - -type - - { TEditToolBarToolButton } - - TEditToolBarToolButton = class(TToolButton) - private - FMenuItem: TIDEMenuItem; - public - procedure Click; override; - property IdeMenuItem: TIDEMenuItem read FMenuItem write FMenuItem; - end; - -var - uEditorToolbarList: TEditorToolbarList; - -procedure ConfigureToolbar (Sender:TObject); -begin - if TEdtTbConfigForm.Execute then - uEditorToolbarList.ReloadAll; -end; - -procedure ToggleToolbar (Sender:TObject); -var - ToolBarVisible: Boolean; -begin - ToolBarVisible:= not bToolBarShow; - EditorMenuCommand.Checked:= ToolBarVisible; - bToolBarShow:= ToolBarVisible; - TEdtTbConfigForm.UpdateVisible(ToolBarVisible); - uEditorToolbarList.ReloadAll; -end; - -procedure TEditToolBarToolButton.Click; -begin - inherited Click; - if assigned(FMenuItem) then - FMenuItem.TriggerClick; -end; - -{ TEditorToolbarList } - -procedure TEditorToolbarList.SourceWindowCreated(Sender: TObject); -begin - TEditorToolbar.Create(Sender as TSourceEditorWindowInterface); -end; - -procedure TEditorToolbarList.SourceWindowDestroyed(Sender: TObject); -var - i: integer; - aBar: TEditorToolbar; -begin - // Let's remove from our list the destroyed window and then destroy the ToolBar - for i:= 0 to FToolBarList.Count -1 do begin - aBar := TEditorToolbar(FToolBarList[i]); - if aBar.OwnerWindow = TSourceEditorWindowInterface(Sender) then begin - DelBar(aBar); - aBar.Free; - exit; - end; - end; -end; - -procedure TEditorToolbarList.AddBar(ABar: TEditorToolbar); -begin - FToolBarList.Add(ABar); -end; - -procedure TEditorToolbarList.DelBar(ABar: TEditorToolbar); -begin - FToolBarList.Remove(ABar); -end; - -procedure TEditorToolbarList.ReloadAll; -var - i: Integer; -begin - for i := 0 to FToolBarList.Count - 1 do - TEditorToolbar(FToolBarList[i]).Reload -end; - -constructor TEditorToolbarList.Create; -begin - inherited; - uEditorToolbarList := self; - FToolBarList := TFPList.Create; - - if SourceEditorManagerIntf <> nil then begin - SourceEditorManagerIntf.RegisterChangeEvent(semWindowCreate, @SourceWindowCreated); - SourceEditorManagerIntf.RegisterChangeEvent(semWindowDestroy,@SourceWindowDestroyed); - end; - -end; - -destructor TEditorToolbarList.Destroy; -begin - while FToolBarList.Count > 0 do - TEditorToolbar(FToolBarList[0]).Free; - FreeAndNil(FToolBarList); - inherited Destroy; -end; - -{ TEditorToolbar } - -procedure TEditorToolbar.CreateEditorToolbar(AW: TForm; var ATB: TToolbar); -begin - { It must be created with Align = alTop, so that the first positioning - of buttons is correct. } - ATB := TToolbar.Create(AW); - ATB.Parent := AW; - ATB.Height := 26; - ATB.Align := alTop; - ATB.Flat := True; - ATB.Images := IDEImages.Images_16; - ATB.ShowHint := True; - ATB.Hint := rsHint; - ATB.PopupMenu := PPUP; -end; - -function TEditorToolbar.CreateJumpItem(AJumpType: TJumpType; O: TComponent): TMenuItem; -begin - Result := TMenuItem.Create(O); - Result.Tag := Ord(AJumpType); - Result.OnClick := @FJumpHandler.DoJump; - Result.Caption := cJumpNames[AJumpType]; -end; - -function TEditorToolbar.CreateProfileItem(ProfIndx: Integer; O: TComponent - ): TMenuItem; -begin - Result := TMenuItem.Create(O); - Result.Tag := ProfIndx; - Result.Caption := sLocalizedProfileNames[ProfIndx]; - Result.GroupIndex := 1; - Result.RadioItem := True; - //Result.AutoCheck := True; - Result.OnClick := @MenuItemClick; -end; - -procedure TEditorToolbar.DoConfigureToolbar(Sender: TObject); -begin - if TEdtTbConfigForm.Execute then - uEditorToolbarList.ReloadAll; -end; - -procedure TEditorToolbar.UpdateBar(Sender: TObject); -var - i,j: integer; - mi: TIDEMenuItem; -begin - TB.BeginUpdate; - try - for i := TB.ButtonCount - 1 downto 0 do begin - if TB.Buttons[I].tag <> 0 then begin - j := TB.Buttons[I].tag-1; - mi := TIDEMenuItem(FButtonList.Items[j]); - if mi <> nil then begin - TB.Buttons[I].Enabled := mi.Enabled; - end; - end; - end; - finally - TB.EndUpdate; - end; -end; - -procedure TEditorToolbar.MenuItemClick(Sender: TObject); -var - cfg: TConfigStorage; - Value: Integer; -begin - if (Sender <> nil ) and (Sender is TMenuItem) then begin - TMenuItem(Sender).Checked:= True; - Value:= TMenuItem(Sender).Tag; - CurrProfile := ProfileMask[Value]; - cfg := GetIDEConfigStorage(cSettingsFile,True); - try - cfg.SetDeleteValue('Profile',CurrProfile,iAll); - cfg.WriteToDisk; - finally - cfg.Free; - end; - Reload; - end; -end; - -constructor TEditorToolbar.Create(AOwner: TComponent); -var - T: TJumpType; - c: integer; - cfg: TConfigStorage; -begin - uEditorToolbarList.AddBar(Self); - if assigned(TB) then exit; - - FButtonList := TList.Create; - - sLocalizedProfileNames[0] := rsAll; - sLocalizedProfileNames[1] := rsDesign; - sLocalizedProfileNames[2] := rsDebug; - sLocalizedProfileNames[3] := rsHTML; - sLocalizedProfileNames[4] := rsCustom; - - FJumpHandler := TJumpHandler.Create(nil); - FWindow := TSourceEditorWindowInterface(AOwner); - - PPUP := TPopupMenu.Create(FWindow); - for c := 0 to High(sLocalizedProfileNames) do begin - PPUP.Items.Add(CreateProfileItem(c,FWindow)); - end; - - CreateEditorToolBar(FWindow, TB); - - PM := TPopupMenu.Create(FWindow); - for T := Low(TJumpType) to High(TJumpType) do - PM.Items.Add(CreateJumpItem(T, FWindow)); - - AddStaticItems; - // Let's verify if it's a first start - c:= 0; // Just in case... - cfg := GetIDEConfigStorage(cSettingsFile, True); - try - c := cfg.GetValue('Count', 0); - finally - cfg.Free; - end; - if c = 0 then - TEdtTbConfigForm.Setup; - - AddCustomItems; - UpdateTimer := TTimer.Create(Self); - UpdateTimer.Interval := 500; - UpdateTimer.OnTimer := @UpdateBar; - UpdateTimer.Enabled := True; -end; - -destructor TEditorToolbar.Destroy; -begin - uEditorToolbarList.DelBar(Self); - FJumpHandler.Free; - FButtonList.Free; - inherited Destroy; -end; - -procedure TEditorToolbar.InitEditorToolBar; -begin - TB := nil; - CfgButton := nil; -end; - -procedure TEditorToolbar.AddButton(AMenuItem: TIDEMenuItem); -var - B: TEditToolBarToolButton; - ACaption: string; - iPos: Integer; -begin - B := TEditToolBarToolButton.Create(TB); - ACaption := AMenuItem.Caption; - DeleteAmpersands(ACaption); - B.Caption := ACaption; - // Get Shortcut, if any, and append to Hint - ACaption:= ACaption + GetShortcut(AMenuItem); - B.Hint := ACaption; - // If we have a image, us it. Otherwise supply a default. - if AMenuItem.ImageIndex <> -1 then - B.ImageIndex := AMenuItem.ImageIndex - else - B.ImageIndex := IDEImages.LoadImage(16, 'execute16'); - - B.Style := tbsButton; - B.IdeMenuItem := AMenuItem; - iPos := FButtonList.Add(AMenuItem); - B.Tag:= iPos+1; - //B.OnClick := AMenuItem.OnClick; - PositionAtEnd(TB, B); -end; - -// position the button next to the last button -procedure TEditorToolbar.PositionAtEnd(AToolbar: TToolbar; AButton: TToolButton); -var - SiblingButton: TToolButton; -begin - if AToolbar.ButtonCount > 0 then - begin - SiblingButton := AToolbar.Buttons[AToolbar.ButtonCount-1]; - AButton.SetBounds(SiblingButton.Left + SiblingButton.Width, - SiblingButton.Top, AButton.Width, AButton.Height); - end; - AButton.Parent := AToolbar; -end; - -procedure TEditorToolbar.Reload; -begin - ClearToolbar; - AddStaticItems; - AddCustomItems; -end; - -procedure TEditorToolbar.AddCustomItems; -var - i: integer; - c: integer; - cfg: TConfigStorage; - value: string; - profile: Integer; - mi: TIDEMenuItem; - ShowItem: Boolean; - -procedure SetTbPos; -begin -case sToolbarPos of - 'Top': begin - TB.Align:= alTop; - TB.Height:= 26; - end; - 'Bottom': begin - TB.Align:= alBottom; - TB.Height:= 26; - end; - 'Left': begin - TB.Align:= alLeft; - TB.Width:= 26; - end; - 'Right': begin - TB.Align:= alRight; - TB.Width:= 26; - end; - end; -end; - -begin - cfg := GetIDEConfigStorage(cSettingsFile, True); - TB.BeginUpdate; - try - c:= cfg.GetValue('Profile',iAll); - CurrProfile := c; - c := GetProfileIndex(CurrProfile); - PPUP.Items[c].Checked:= True; - c := cfg.GetValue('Count', 0); - for i := 1 to c do - begin - value := cfg.GetValue('Button' + Format('%2.2d', [i]) + '/Value', ''); - profile := cfg.GetValue('Button' + Format('%2.2d', [i]) + '/Profile', iall); - ShowItem := (CurrProfile = iAll) or ((profile and CurrProfile) <> 0); - if (value <> '') and ShowItem then - begin - if value = cDivider then - AddDivider - else - begin - mi := IDEMenuRoots.FindByPath(value,false); - if Assigned(mi) then - AddButton(mi); - end; - end; - end; - sToolbarPos := cfg.GetValue('Position','Top'); - bToolBarShow:= cfg.GetValue('Visible',true); - EditorMenuCommand.Checked:= bToolBarShow; - SetTbPos; - finally - cfg.Free; - TB.EndUpdate; - end; - TB.Visible:= bToolBarShow; -end; - -procedure TEditorToolbar.AddDivider; -var - B: TToolButton; -begin - B := TToolbutton.Create(TB); - B.Style := tbsDivider; - PositionAtEnd(TB, B); -end; - -procedure TEditorToolbar.AddStaticItems; -var - B: TToolButton; -begin - TB.BeginUpdate; - try - // Config Button - if CfgButton = nil then - CfgButton := TToolbutton.Create(TB); - CfgButton.Caption := rsConfigureToo; - CfgButton.Hint := CfgButton.Caption; - CfgButton.ImageIndex := IDEImages.LoadImage(16, 'preferences16'); - CfgButton.Style := tbsButton; - CfgButton.OnClick := @DoConfigureToolbar; - PositionAtEnd(TB, CfgButton); - AddDivider; - - // JumpTo Button - B := TToolbutton.Create(TB); - B.Caption := rsJumpTo; - B.Hint := B.Caption; - B.ImageIndex := IDEImages.LoadImage(16, 'jumpto16'); - B.Style := tbsDropDown; - B.OnClick := @FJumpHandler.DoJumpToImplementation; - B.DropdownMenu := PM; - PositionAtEnd(TB, B); - - if TB.ButtonCount <> 0 then - AddDivider; - finally - TB.EndUpdate; - end; -end; - -procedure TEditorToolbar.ClearToolbar; -var - i: integer; -begin - TB.BeginUpdate; - try - for i := TB.ButtonCount - 1 downto 0 do - if TB.Buttons[i] <> CfgButton then - TB.Buttons[i].Free - else - TB.Buttons[i].Parent := nil; - finally - TB.EndUpdate; - end; -end; - -function GetShortcut(AMenuItem: TIDEMenuItem): string; -var - ACommand: TIDECommand; - AShortcut: string; -begin - Result := ''; - AShortcut:= ''; - if AMenuItem is TIDEMenuCommand then begin - ACommand := TIDEMenuCommand(AMenuItem).Command; - if Assigned(ACommand) then AShortcut:= ShortCutToText(ACommand.AsShortCut); - if AShortcut <> '' then Result:= ' (' + AShortcut +')'; - end; -end; - -function GetProfileIndex(aMask: Integer): Integer; -var - I: Integer; -begin - for I:= 0 to High(ProfileMask) do begin - if aMask = ProfileMask[I] then begin - Result := I; - Exit; - end; - end; - Result := 0; -end; - -procedure Register; -var - MenuIcon: string; -begin - if uEditorToolbarList = nil then begin - TEditorToolbarList.Create; - EditorMenuCommand:= RegisterIDEMenuCommand(itmViewSecondaryWindows,'EditorToolBar', - rsEditorToolbar,nil,@ToggleToolbar); - EditorMenuCommand.Checked:= True; - EditorMenuCommand.Enabled:= True; - MenuIcon:= 'menu_editor_options'; - //MenuIcon:= 'menu_editor_toolbar'; TODO! - EditorMenuCommand.ImageIndex := IDEImages.LoadImage(16, MenuIcon); - end; - -end; - - -initialization - uEditorToolbarList := nil; - sToolbarPos:= 'Top'; - bToolBarShow:= True; - CurrProfile:= iAll; - -finalization - uEditorToolbarList.Free; - -end. - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar.lpk lazarus-1.6+dfsg/components/editortoolbar/editortoolbar.lpk --- lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar.lpk 2014-10-23 22:56:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/editortoolbar.lpk 2015-06-22 14:20:57.000000000 +0000 @@ -2,66 +2,29 @@ <CONFIG> <Package Version="4"> <Name Value="editortoolbar"/> - <AddToProjectUsesSection Value="True"/> - <Author Value="Graeme Geldenhuys, Giuliano Colla"/> + <Type Value="RunAndDesignTime"/> <CompilerOptions> <Version Value="11"/> <SearchPaths> - <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Parsing> - <SyntaxOptions> - <UseAnsiStrings Value="False"/> - </SyntaxOptions> - </Parsing> </CompilerOptions> - <Description Value="Provides a configurable Toolbar in the source editor window, which can be positioned at any side. The toolbar comes with a predefined Jump button, and then Jump Forward and Jump Back buttons. -"/> - <License Value="GPL -"/> - <Version Minor="8" Release="2"/> - <Files Count="4"> + <Files Count="1"> <Item1> - <Filename Value="jumpto_impl.pas"/> - <UnitName Value="jumpto_impl"/> + <Filename Value="unit1.pas"/> + <UnitName Value="Unit1"/> </Item1> - <Item2> - <Filename Value="editortoolbar_impl.pas"/> - <HasRegisterProc Value="True"/> - <UnitName Value="editortoolbar_impl"/> - </Item2> - <Item3> - <Filename Value="edttbconfigfrm.pas"/> - <UnitName Value="EdtTbConfigFrm"/> - </Item3> - <Item4> - <Filename Value="editortoolbar_str.pas"/> - <UnitName Value="editortoolbar_str"/> - </Item4> </Files> - <i18n> - <EnableI18N Value="True"/> - <OutDir Value="languages"/> - <EnableI18NForLFM Value="True"/> - </i18n> - <Type Value="DesignTime"/> - <RequiredPkgs Count="2"> + <RequiredPkgs Count="1"> <Item1> - <PackageName Value="IDEIntf"/> + <PackageName Value="FCL"/> </Item1> - <Item2> - <PackageName Value="CodeTools"/> - </Item2> </RequiredPkgs> <UsageOptions> <UnitPath Value="$(PkgOutDir)"/> </UsageOptions> <PublishOptions> <Version Value="2"/> - <IgnoreBinaries Value="False"/> </PublishOptions> - <CustomOptions Items="ExternHelp" Version="2"> - <_ExternHelp Items="Count"/> - </CustomOptions> </Package> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar.pas lazarus-1.6+dfsg/components/editortoolbar/editortoolbar.pas --- lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar.pas 2010-06-14 17:51:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/editortoolbar.pas 2015-06-22 14:20:57.000000000 +0000 @@ -1,5 +1,5 @@ -{ Этот файл был автоматически создан Lazarus. Не редактировать! - Исходный код используется только для компиляции и установки пакета. +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. } unit editortoolbar; @@ -7,16 +7,14 @@ interface uses - jumpto_impl, editortoolbar_impl, EdtTbConfigFrm, editortoolbar_str, - LazarusPackageIntf; + Unit1, LazarusPackageIntf; implementation procedure Register; begin - RegisterUnit('editortoolbar_impl',@editortoolbar_impl.Register); end; initialization - RegisterPackage('editortoolbar',@Register); + RegisterPackage('editortoolbar', @Register); end. diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar_str.pas lazarus-1.6+dfsg/components/editortoolbar/editortoolbar_str.pas --- lazarus-1.4.4+dfsg/components/editortoolbar/editortoolbar_str.pas 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/editortoolbar_str.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -unit editortoolbar_str; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils; - -resourcestring - SErrCouldNotFind = 'Could not find <%s>'; - rsConfigureToo = 'Configure Toolbar'; - rsJumpTo = 'Jump To'; - rsEditorToolbarConfigForm = 'Editor Toolbar Configuration'; - rsOK = 'OK'; - rsHelp = 'Help'; - rsCancel = 'Cancel'; - rsToolbar = 'Toolbar Items'; - rsMenuTree = 'Available Menu Items'; - rsAddDivider = 'Add Divider'; - rsAddSelected = 'Add selected item to toolbar'; - rsRemoveSelected = 'Remove selected item from toolbar'; - rsMoveSelectedUp = 'Move selected toolbar item up'; - rsMoveSelectedDown = 'Move selected toolbar item down'; - rsClearSelection = 'Clear selection'; - rsHint = 'You may add here your favorite commands'; - rsPosition = 'Position'; - rsTop = 'Top'; - rsBottom = 'Bottom'; - rsLeft = 'Left'; - rsRight = 'Right'; - rsEditorToolbar = 'Editor ToolBar'; - rsMenuView = 'View'; - rsProfile = 'Profile'; - rsAll = 'All'; - rsDesign = 'Design'; - rsDebug = 'Debug'; - rsHTML = 'HTML'; - rsCustom = 'Custom'; - rsHelp1 = 'The "Add" button inserts a Menu Item before the '+ - 'selected Item of the Toolbar.'; - rsHelp2 = 'If none is selected, the Item will be appended at the end '+ - 'of the Toolbar.'; - rsHelp3 = 'You may rearrange Toolbar Items with "Move Up" and '+ - '"Move Down" buttons.'; - rsHelp4 = 'Hint: to append an Item at the end, use "Clear selection"'; - // Root Node Captions - rsIDEMainMenu = 'IDE Main Menu'; - rsSourceTab = 'Source Tab'; - rsSourceEditor = 'Source Editor'; - rsMessages = 'Messages'; - rsCodeExplorer = 'Code Explorer'; - rsCodeTemplates = 'Code Templates'; - rsDesigner = 'Designer'; - rsPackageEditor = 'Package Editor'; - rsPackageEditorFiles = 'Package Editor Files'; - -implementation - -end. - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/edttbconfigfrm.lfm lazarus-1.6+dfsg/components/editortoolbar/edttbconfigfrm.lfm --- lazarus-1.4.4+dfsg/components/editortoolbar/edttbconfigfrm.lfm 2015-04-02 22:11:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/edttbconfigfrm.lfm 1970-01-01 00:00:00.000000000 +0000 @@ -1,416 +0,0 @@ -object EdtTbConfigForm: TEdtTbConfigForm - Left = 375 - Height = 457 - Top = 200 - Width = 772 - Caption = 'EdtTbConfigForm' - ClientHeight = 457 - ClientWidth = 772 - OnCreate = FormCreate - OnDestroy = FormDestroy - LCLVersion = '1.5' - object lblMenuTree: TLabel - AnchorSideLeft.Control = TV - AnchorSideLeft.Side = asrCenter - Left = 170 - Height = 17 - Top = 14 - Width = 73 - Caption = 'lblMenuTree' - ParentColor = False - end - object lblToolbar: TLabel - AnchorSideLeft.Control = lvToolbar - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = lblMenuTree - Left = 573 - Height = 17 - Top = 14 - Width = 58 - Caption = 'lblToolbar' - ParentColor = False - end - object btnRemove: TSpeedButton - AnchorSideLeft.Control = btnAdd - AnchorSideTop.Control = btnAdd - AnchorSideTop.Side = asrBottom - Left = 415 - Height = 26 - Top = 118 - Width = 22 - BorderSpacing.Top = 1 - Enabled = False - OnClick = btnRemoveClick - ShowHint = True - ParentShowHint = False - end - object btnAdd: TSpeedButton - AnchorSideLeft.Control = Splitter1 - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = TV - Left = 415 - Height = 26 - Top = 91 - Width = 22 - BorderSpacing.Left = 6 - BorderSpacing.Top = 25 - Enabled = False - OnClick = btnAddClick - ShowHint = True - ParentShowHint = False - end - object btnMoveUp: TSpeedButton - AnchorSideLeft.Control = btnRemove - AnchorSideTop.Control = btnRemove - AnchorSideTop.Side = asrBottom - Left = 415 - Height = 26 - Top = 169 - Width = 22 - BorderSpacing.Top = 25 - Enabled = False - OnClick = btnMoveUpClick - ShowHint = True - ParentShowHint = False - end - object btnMoveDown: TSpeedButton - AnchorSideLeft.Control = btnMoveUp - AnchorSideTop.Control = btnMoveUp - AnchorSideTop.Side = asrBottom - Left = 415 - Height = 26 - Top = 196 - Width = 22 - BorderSpacing.Top = 1 - Enabled = False - OnClick = btnMoveDownClick - ShowHint = True - ParentShowHint = False - end - object pnlButtons: TPanel - Left = 0 - Height = 42 - Top = 415 - Width = 772 - Align = alBottom - BevelOuter = bvNone - ClientHeight = 42 - ClientWidth = 772 - Color = clGreen - ParentColor = False - TabOrder = 2 - object Bevel1: TBevel - Left = 0 - Height = 2 - Top = 0 - Width = 772 - Align = alTop - end - object btnOK: TButton - AnchorSideRight.Control = btnCancel - AnchorSideBottom.Control = pnlButtons - AnchorSideBottom.Side = asrBottom - Left = 609 - Height = 25 - Top = 11 - Width = 75 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 - BorderSpacing.InnerBorder = 4 - Caption = 'btnOK' - Constraints.MaxHeight = 25 - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - ModalResult = 1 - OnClick = btnOKClick - TabOrder = 0 - end - object btnCancel: TButton - AnchorSideRight.Control = pnlButtons - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = pnlButtons - AnchorSideBottom.Side = asrBottom - Left = 690 - Height = 25 - Top = 11 - Width = 76 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 - BorderSpacing.InnerBorder = 4 - Cancel = True - Caption = 'btnCancel' - Constraints.MaxHeight = 25 - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - ModalResult = 2 - TabOrder = 1 - end - object btnHelp: TBitBtn - AnchorSideBottom.Control = pnlButtons - AnchorSideBottom.Side = asrBottom - Left = 16 - Height = 25 - Top = 11 - Width = 75 - Anchors = [akLeft, akBottom] - BorderSpacing.Bottom = 6 - Caption = 'Help' - OnClick = btnHelpClick - TabOrder = 2 - end - object cbProfile: TComboBox - AnchorSideLeft.Control = pnlButtons - AnchorSideLeft.Side = asrCenter - AnchorSideBottom.Control = pnlButtons - AnchorSideBottom.Side = asrCenter - Left = 336 - Height = 23 - Top = 9 - Width = 100 - Anchors = [akLeft, akBottom] - BorderSpacing.Bottom = 6 - ItemHeight = 17 - ItemIndex = 0 - Items.Strings = ( - 'All' - 'Design' - 'Debug' - 'HTML' - 'Custom' - '' - ) - OnChange = cbProfileChange - TabOrder = 3 - Text = 'All' - end - object lblProfile: TLabel - AnchorSideTop.Control = cbProfile - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = cbProfile - Left = 288 - Height = 17 - Top = 12 - Width = 38 - Anchors = [akTop, akRight] - BorderSpacing.Right = 10 - Caption = 'Profile' - ParentColor = False - end - end - object TV: TTreeView - AnchorSideLeft.Control = FilterEdit - AnchorSideTop.Control = FilterEdit - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Splitter1 - AnchorSideBottom.Control = pnlButtons - Left = 16 - Height = 343 - Top = 66 - Width = 381 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Top = 6 - BorderSpacing.Right = 3 - BorderSpacing.Bottom = 6 - ReadOnly = True - ScrollBars = ssAutoBoth - TabOrder = 1 - OnSelectionChanged = TVSelectionChanged - Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips] - end - object FilterEdit: TTreeFilterEdit - AnchorSideTop.Side = asrBottom - Left = 16 - Height = 23 - Top = 37 - Width = 192 - UseFormActivate = True - ButtonWidth = 23 - NumGlyphs = 1 - BorderSpacing.Top = 6 - MaxLength = 0 - ParentFont = False - TabOrder = 0 - FilteredTreeview = TV - ExpandAllInitially = True - end - object cbPos: TComboBox - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = lvToolbar - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = pnlButtons - Left = 661 - Height = 23 - Top = 386 - Width = 100 - Anchors = [akRight, akBottom] - BorderSpacing.Bottom = 6 - ItemHeight = 17 - ItemIndex = 0 - Items.Strings = ( - 'Top' - 'Bottom' - 'Right' - 'Left' - ) - OnChange = cbPosChange - TabOrder = 3 - Text = 'Top' - end - object lblpos: TLabel - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = cbPos - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = cbPos - Left = 620 - Height = 17 - Top = 389 - Width = 35 - Anchors = [akTop, akRight] - BorderSpacing.Right = 6 - Caption = 'lblpos' - ParentColor = False - end - object Splitter1: TSplitter - AnchorSideLeft.Control = TV - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = TV - AnchorSideBottom.Control = TV - AnchorSideBottom.Side = asrBottom - Left = 400 - Height = 343 - Top = 66 - Width = 9 - Align = alNone - Anchors = [akTop, akBottom] - end - object lvToolbar: TListView - AnchorSideLeft.Control = btnAdd - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = TV - AnchorSideBottom.Control = pnlButtons - Left = 443 - Height = 312 - Top = 66 - Width = 318 - Anchors = [akTop, akLeft, akBottom] - BorderSpacing.Left = 6 - BorderSpacing.Bottom = 37 - Columns = < - item - AutoSize = True - Caption = 'Name' - Width = 314 - end - item - AutoSize = True - Caption = 'Profile' - Visible = False - Width = 0 - end> - HideSelection = False - PopupMenu = puMenuItems - ReadOnly = True - ScrollBars = ssAutoBoth - ShowColumnHeaders = False - TabOrder = 5 - ViewStyle = vsReport - OnDrawItem = lvToolbarDrawItem - OnSelectItem = lvToolbarSelectItem - end - object sbAddDivider: TSpeedButton - AnchorSideLeft.Control = btnAdd - AnchorSideTop.Control = btnMoveDown - AnchorSideTop.Side = asrBottom - Left = 415 - Height = 26 - Top = 272 - Width = 22 - BorderSpacing.Top = 50 - OnClick = btnAddDividerClick - ShowHint = True - ParentShowHint = False - end - object lbSelect: TLabel - AnchorSideLeft.Control = lvToolbar - AnchorSideTop.Control = FilterEdit - AnchorSideRight.Control = lvToolbar - AnchorSideRight.Side = asrBottom - Left = 715 - Height = 17 - Top = 37 - Width = 46 - Anchors = [akTop, akRight] - Caption = 'lbSelect' - ParentColor = False - Visible = False - end - object btnClear: TSpeedButton - AnchorSideLeft.Control = btnAdd - AnchorSideBottom.Control = lvToolbar - AnchorSideBottom.Side = asrBottom - Left = 415 - Height = 26 - Top = 352 - Width = 23 - Anchors = [akLeft, akBottom] - Enabled = False - OnClick = btnClearClick - ShowHint = True - ParentShowHint = False - end - object btnShow: TButton - Left = 443 - Height = 25 - Top = 384 - Width = 50 - Caption = 'Show' - OnClick = btnShowClick - TabOrder = 6 - Visible = False - end - object btnHide: TButton - Left = 496 - Height = 25 - Top = 384 - Width = 50 - Caption = 'Hide' - OnClick = btnHideClick - TabOrder = 7 - Visible = False - end - object puMenuItems: TPopupMenu - OnPopup = puMenuItemsPopup - left = 421 - top = 16 - object miAll: TMenuItem - AutoCheck = True - Caption = 'All' - OnClick = miAllClick - end - object miDesign: TMenuItem - AutoCheck = True - Caption = 'Design' - OnClick = miDesignClick - end - object miDebug: TMenuItem - AutoCheck = True - Caption = 'Debug' - OnClick = miDebugClick - end - object miHTML: TMenuItem - AutoCheck = True - Caption = 'HTML' - OnClick = miHTMLClick - end - object miCustom: TMenuItem - AutoCheck = True - Caption = 'Custom' - OnClick = miCustomClick - end - end -end diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/edttbconfigfrm.pas lazarus-1.6+dfsg/components/editortoolbar/edttbconfigfrm.pas --- lazarus-1.4.4+dfsg/components/editortoolbar/edttbconfigfrm.pas 2015-04-02 22:11:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/edttbconfigfrm.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,948 +0,0 @@ -{ - Copyright (C) 2007 Graeme Geldenhuys (graemeg@gmail.com) - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License - for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -} - -unit EdtTbConfigFrm; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls, - Buttons, StdCtrls, ComCtrls, Menus, MenuIntf, editortoolbar_str, - TreeFilterEdit; - -type - { TLvItem } - TLvItem = class (TObject) - Item: TIDEMenuItem; - LvIndex: Integer; - Profile: Integer; - end; - - { TEdtTbConfigForm } - - TEdtTbConfigForm = class(TForm) - Bevel1: TBevel; - btnHelp: TBitBtn; - btnAdd: TSpeedButton; - btnMoveDown: TSpeedButton; - btnMoveUp: TSpeedButton; - btnOK: TButton; - btnCancel: TButton; - btnRemove: TSpeedButton; - btnShow: TButton; - btnHide: TButton; - cbPos: TComboBox; - cbProfile: TComboBox; - lblProfile: TLabel; - lbSelect: TLabel; - lblpos: TLabel; - lblMenuTree: TLabel; - lblToolbar: TLabel; - lvToolbar: TListView; - miAll: TMenuItem; - miDesign: TMenuItem; - miDebug: TMenuItem; - miHTML: TMenuItem; - miCustom: TMenuItem; - pnlButtons: TPanel; - FilterEdit: TTreeFilterEdit; - puMenuItems: TPopupMenu; - sbAddDivider: TSpeedButton; - btnClear: TSpeedButton; - Splitter1: TSplitter; - TV: TTreeView; - procedure btnClearClick(Sender: TObject); - procedure btnHelpClick(Sender: TObject); - procedure btnShowClick(Sender: TObject); - procedure btnHideClick(Sender: TObject); - procedure cbPosChange(Sender: TObject); - procedure cbProfileChange(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure lbToolbarSelectionChange(Sender: TObject; User: boolean); - procedure btnAddClick(Sender: TObject); - procedure btnAddDividerClick(Sender: TObject); - procedure btnMoveDownClick(Sender: TObject); - procedure btnMoveUpClick(Sender: TObject); - procedure btnOKClick(Sender: TObject); - procedure btnRemoveClick(Sender: TObject); - procedure lvToolbarDrawItem(Sender: TCustomListView; AItem: TListItem; - ARect: TRect; AState: TOwnerDrawState); - procedure lvToolbarSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); - procedure miAllClick(Sender: TObject); - procedure miCustomClick(Sender: TObject); - procedure miDebugClick(Sender: TObject); - procedure miDesignClick(Sender: TObject); - procedure miHTMLClick(Sender: TObject); - procedure puMenuItemsPopup(Sender: TObject); - procedure TVSelectionChanged(Sender: TObject); - private - FToolBarPos: string; - FToolBarShow: boolean; - Image: TBitMap; - defImageIndex: integer; - divImageIndex: Integer; - // Main list related entries - MainList: TStringList; - function GetMainListIndex(Item: TListItem): Integer; - procedure UpdateMainListProfile(Item: TListItem); - procedure InsertMainListItem (Item,NextItem: TListItem); - procedure RemoveMainListItem (Item:TListItem); - procedure ExchangeMainListItem (Item1,Item2: TListItem); - - procedure SetupCaptions; - procedure LoadCategories; - procedure LoadSettings; - procedure LoadStyleSettings; - procedure SaveSettings; - procedure AddMenuItem(ParentNode: TTreeNode; Item: TIDEMenuItem; Level: Integer); - function RootNodeCaption(Item: TIDEMenuItem): string; - procedure AddListItem(Item: TIDEMenuItem; PMask: Integer); - procedure AddToolBarItem(Item: TIDEMenuItem; PMask: Integer); - procedure AddDivider(PMask: Integer); - procedure FillToolBar; - procedure ReloadToolBar; - public - class function Execute: boolean; - class procedure Setup; - class procedure UpdateVisible(NewStatus: Boolean); - end; - -Var - sPosValues: array[0..3] of string = ('Top','Bottom','Right','Left'); - sLocalizedPosValues: array[0..3] of string; - CurrProfile: Integer; - -implementation - -{$R *.lfm} - -uses - editortoolbar_impl, LazConfigStorage, BaseIDEIntf, LazIDEIntf, IDEImagesIntf,LCLProc; - -Function IndexFromEnglish (var AValue: string): Integer; -var - i:Integer; -begin - for i:= 0 to 3 do begin - if AValue = sPosValues[i] then begin - Result := I; - exit; - end; - end; - Result := 0; // default is Top -end; - -{ TEdtTbConfigForm } - -procedure TEdtTbConfigForm.FormCreate(Sender: TObject); -begin - inherited; - //we have to ownerdraw the listview on qt - {$IFDEF LCLQT} - lvToolbar.OwnerDraw := True; - {$ENDIF} - pnlButtons.Color := clBtnFace; - - // load button images - btnAdd.LoadGlyphFromResourceName(HInstance, 'arrow_right'); - btnRemove.LoadGlyphFromResourceName(HInstance, 'arrow_left'); - btnMoveUp.LoadGlyphFromResourceName(HInstance, 'arrow_up'); - btnMoveDown.LoadGlyphFromResourceName(HInstance, 'arrow_down'); - btnClear.LoadGlyphFromResourceName(HINSTANCE,'menu_close'); - btnHelp.LoadGlyphFromResourceName(HINSTANCE, 'menu_help'); - sbAddDivider.LoadGlyphFromResourceName(HINSTANCE, 'menu_divider16'); - - btnAdd.Hint := rsAddSelected; - btnRemove.Hint := rsRemoveSelected; - btnMoveUp.Hint := rsMoveSelectedUp; - btnMoveDown.Hint := rsMoveSelectedDown; - sbAddDivider.Hint:= rsAddDivider; - btnClear.Hint := rsClearSelection; - - TV.Images := IDEImages.Images_16; - lvToolbar.SmallImages := IDEImages.Images_16; - // default image to be used when none is available - defImageIndex := IDEImages.LoadImage(16, 'execute16'); - // Image for divider - divImageIndex := IDEImages.Images_16.Add(sbAddDivider.Glyph,nil); - - MainList := TStringList.Create; - MainList.OwnsObjects:= True; // it should be the default, but just to make sure... - Image := TBitmap.Create; - SetupCaptions; - LoadStyleSettings; - LoadCategories; - LoadSettings; -end; - -procedure TEdtTbConfigForm.FormDestroy(Sender: TObject); -begin - Image.Free; - MainList.Free; -end; - -procedure TEdtTbConfigForm.cbPosChange(Sender: TObject); -var - i: Integer; -begin - i:= cbPos.ItemIndex; - if i >= 0 then begin - FToolbarPos:= sPosValues[i]; - end; -end; - -procedure TEdtTbConfigForm.cbProfileChange(Sender: TObject); -begin - CurrProfile:= ProfileMask[cbProfile.ItemIndex]; - ReloadToolBar; -end; - -procedure TEdtTbConfigForm.btnClearClick(Sender: TObject); -begin - lvToolbar.Selected := nil; -end; - -procedure TEdtTbConfigForm.btnHelpClick(Sender: TObject); -begin - ShowMessageFmt('%s%s%s%s%s%s%s', [rsHelp1,LineEnding,rsHelp2,LineEnding,rsHelp3,LineEnding,rsHelp4]); -end; - -procedure TEdtTbConfigForm.btnShowClick(Sender: TObject); -begin - lvToolbar.Columns[1].Visible:= true; -end; - -procedure TEdtTbConfigForm.btnHideClick(Sender: TObject); -begin - lvToolbar.Columns[1].Visible:= false; -end; - -procedure TEdtTbConfigForm.lbToolbarSelectionChange(Sender: TObject; User: boolean); -var - i: Integer; -begin - i := lvToolbar.ItemIndex; - btnRemove.Enabled := i > -1; - btnMoveUp.Enabled := i > 0; - btnMoveDown.Enabled := (i > -1) and (i < lvToolbar.Items.Count-1); -end; - -procedure TEdtTbConfigForm.TVSelectionChanged(Sender: TObject); -var - n: TTreeNode; -begin - n := TV.Selected; - btnAdd.Enabled := (Assigned(n) and Assigned(n.Data)); -end; - -function TEdtTbConfigForm.GetMainListIndex(Item: TListItem): Integer; -var - I: Integer; -begin - for I:= 0 to MainList.Count -1 do begin - if TLvItem(MainList.Objects[I]).LvIndex = Item.Index then begin - Result := I; - Exit; - end; - end; - Result := -1; -end; - -procedure TEdtTbConfigForm.UpdateMainListProfile(Item: TListItem); -var - I: Integer; -begin - I := GetMainListIndex(Item); - if I > -1 then TLvItem(MainList.Objects[I]).Profile:= StrToInt(Item.SubItems[0]); -end; - -procedure TEdtTbConfigForm.InsertMainListItem(Item,NextItem: TListItem); -var - I,J: Integer; - aMainListItem: TLvItem; -begin - aMainListItem := TLvItem.Create; - aMainListItem.Item := TIDEMenuItem(Item.Data); - aMainListItem.Profile := StrToInt(Item.SubItems[0]); - aMainListItem.LvIndex := Item.Index; - if NextItem = Nil then - MainList.AddObject(Item.Caption,aMainListItem) - else begin - I := GetMainListIndex(NextItem); - MainList.InsertObject(I,Item.Caption,aMainListItem); - for J := I+1 to MainList.Count -1 do begin - aMainListItem := TLvItem(MainList.Objects[J]); - aMainListItem.LvIndex:= aMainListItem.LvIndex +1; - end; - end; -end; - -procedure TEdtTbConfigForm.RemoveMainListItem(Item: TListItem); -var - I,J: Integer; - aMainListItem: TLvItem; -begin - I := GetMainListIndex(Item); - if I > -1 then begin - MainList.Delete(I); - for J := I to MainList.Count -1 do begin - aMainListItem := TLvItem(MainList.Objects[J]); - aMainListItem.LvIndex:= aMainListItem.LvIndex -1; - end; - end; -end; - -procedure TEdtTbConfigForm.ExchangeMainListItem(Item1, Item2: TListItem); -var - MainIndex1,MainIndex2: Integer; - aMainListItem: TLvItem; -begin - MainIndex1:= GetMainListIndex(Item1); - MainIndex2:= GetMainListIndex(Item2); - MainList.Exchange(MainIndex1,MainIndex2); - aMainListItem := TLvItem(MainList.Objects[MainIndex1]); - aMainListItem.LvIndex:= Item1.Index; - aMainListItem := TLvItem(MainList.Objects[MainIndex2]); - aMainListItem.LvIndex:= Item2.Index; -end; - -procedure TEdtTbConfigForm.btnAddClick(Sender: TObject); -var - n, nNext: TTreeNode; - ACaption: string; - lvItem: TListItem; - anIndex: Integer; -begin - n := TV.Selected; - if (Assigned(n) and Assigned(n.Data)) then - begin - btnAdd.Enabled := False; - anIndex:= lvToolbar.ItemIndex; - ACaption:= TIDEMenuItem(n.Data).Caption; - DeleteAmpersands(ACaption); - if anIndex > -1 then begin - lvItem := lvToolbar.Items.Insert(lvToolbar.ItemIndex); - end - else begin - lvItem := lvToolbar.Items.Add; - end; - lvItem.Caption := ACaption; - lvItem.Data := n.Data; - lvItem.SubItems.Add(IntToStr(CurrProfile)); - {$IF not DEFINED(LCLQt)} - if n.ImageIndex > -1 then - lvItem.ImageIndex := n.ImageIndex - else - lvItem.ImageIndex := defImageIndex; - {$ENDIF} - if anIndex > -1 then begin - // clear previous selection to avoid double sel in Qt - lvToolbar.Selected := nil; - lvToolbar.ItemIndex := lvItem.Index; - InsertMainListItem(lvItem,lvToolbar.Items[anIndex]); - end - else begin - InsertMainListItem(lvItem,Nil); - end; - lbToolbarSelectionChange(lblToolbar, False); - nNext := TV.Selected.GetNext; - TV.Selected.Visible:= False; - if nNext <> nil then - TV.Selected := nNext; - end; -end; - -procedure TEdtTbConfigForm.btnRemoveClick(Sender: TObject); -Var - mi: TIDEMenuItem; - n: TTreeNode; - I: Integer; - lvItem: TListItem; -begin - I := lvToolbar.ItemIndex; - if I > -1 then begin - lvItem := lvToolbar.Items[I]; - mi := TIDEMenuItem(lvItem.Data); - RemoveMainListItem(lvItem); - lvToolbar.Items.Delete(lvToolbar.ItemIndex); - if I < lvToolbar.Items.Count then - lvToolbar.Selected := lvToolbar.Items[I]; // Qt Workaround - lbToolbarSelectionChange(lvToolbar, False); - if assigned(mi) then begin - n:= TV.Items.FindNodeWithData(mi); - n.Visible:= True; - end; - TVSelectionChanged(TV); - end; -end; - -procedure TEdtTbConfigForm.lvToolbarDrawItem(Sender: TCustomListView; - AItem: TListItem; ARect: TRect; AState: TOwnerDrawState); -var - ImageIndex: integer; -begin - with Sender.Canvas do - begin - if AItem.Selected then - begin - Brush.Color := clHighlight; - Font.Color := clHighlightText; - end - else begin - Brush.Color := clDefault; - Font.Color := clDefault; - end; - FillRect(ARect); - - if AItem.Caption = cDivider then - ImageIndex := divImageIndex - else - begin - if Assigned(AItem.Data) then - begin - if TIDEMenuItem(AItem.Data).ImageIndex > -1 then - ImageIndex := TIDEMenuItem(AItem.Data).ImageIndex - else - ImageIndex := defImageIndex; - end - else - ImageIndex := defImageIndex; - end; - Image.Clear; - lvToolBar.SmallImages.GetBitmap(ImageIndex, Image); - Draw(ARect.Left + 2, ARect.Top + 2, Image); - - TextOut(ARect.Left + 21, ARect.Top + 2, AItem.Caption); - end; -end; - -procedure TEdtTbConfigForm.lvToolbarSelectItem(Sender: TObject; - Item: TListItem; Selected: Boolean); -begin - lbToolbarSelectionChange(Sender,False); - lbSelect.Caption:= IntToStr(lvToolbar.ItemIndex)+ ' / ' + IntToStr(lvToolbar.Items.Count); - btnClear.Enabled:= lvToolbar.Selected <> nil; - btnRemove.Enabled:= btnClear.Enabled; -end; - -procedure TEdtTbConfigForm.miAllClick(Sender: TObject); -begin - if lvToolbar.ItemIndex = -1 then begin - puMenuItems.Close; - Exit - end; - if miAll.Checked then begin - lvToolbar.Selected.SubItems[0] := IntToStr(iAll); - miDesign.Checked := False; - miDebug.Checked := False; - miHTML.Checked := False; - miCustom.Checked := False; - end - else - lvToolbar.Selected.SubItems[0] := '0'; - UpdateMainListProfile(lvToolbar.Selected); -end; - -procedure TEdtTbConfigForm.miCustomClick(Sender: TObject); -var - aMask: Integer; -begin - if lvToolbar.ItemIndex = -1 then begin - puMenuItems.Close; - Exit - end; - aMask:= StrToInt(lvToolbar.Selected.SubItems[0]); - if (aMask and iCustom) = 0 then - aMask := aMask or iCustom - else - aMask := aMask and (not iCustom); - miCustom.Checked:= (aMask and iCustom) <> 0; - lvToolbar.Selected.SubItems[0] := IntToStr(aMask); - UpdateMainListProfile(lvToolbar.Selected); -end; - -procedure TEdtTbConfigForm.miDebugClick(Sender: TObject); -var - aMask: Integer; -begin - if lvToolbar.ItemIndex = -1 then begin - puMenuItems.Close; - Exit - end; - aMask:= StrToInt(lvToolbar.Selected.SubItems[0]); - if (aMask and iDebug) = 0 then - aMask := aMask or iDebug - else - aMask := aMask and (not iDebug); - miDebug.Checked:= (aMask and iDebug) <> 0; - lvToolbar.Selected.SubItems[0] := IntToStr(aMask); - UpdateMainListProfile(lvToolbar.Selected); -end; - -procedure TEdtTbConfigForm.miDesignClick(Sender: TObject); -var - aMask: Integer; -begin - if lvToolbar.ItemIndex = -1 then begin - puMenuItems.Close; - Exit - end; - aMask:= StrToInt(lvToolbar.Selected.SubItems[0]); - if (aMask and iDesign) = 0 then - aMask := aMask or iDesign - else - aMask := aMask and (not iDesign); - miDesign.Checked:= (aMask and iDesign) <> 0; - lvToolbar.Selected.SubItems[0] := IntToStr(aMask); - UpdateMainListProfile(lvToolbar.Selected); -end; - -procedure TEdtTbConfigForm.miHTMLClick(Sender: TObject); -var - aMask: Integer; -begin - if lvToolbar.ItemIndex = -1 then begin - puMenuItems.Close; - Exit - end; - aMask:= StrToInt(lvToolbar.Selected.SubItems[0]); - if (aMask and iHTML) = 0 then - aMask := aMask or iHTML - else - aMask := aMask and (not iHTML); - miHTML.Checked:= (aMask and iHTML) <> 0; - lvToolbar.Selected.SubItems[0] := IntToStr(aMask); - UpdateMainListProfile(lvToolbar.Selected); -end; - -procedure TEdtTbConfigForm.puMenuItemsPopup(Sender: TObject); -var - aMask: Integer; -begin - if lvToolbar.ItemIndex = -1 then begin - puMenuItems.Close; - Exit - end; - aMask:= StrToInt(lvToolbar.Selected.SubItems[0]); - if aMask = iAll then begin - miAll.Checked:= True; - miDesign.Checked := False; - miDebug.Checked := False; - miHTML.Checked := False; - miCustom.Checked := False; - end - else begin - miAll.Checked:= False; - if (aMask and iDesign) <> 0 then miDesign.Checked:= True - else miDesign.Checked:= False; - if (aMask and iDebug) <> 0 then miDebug.Checked:= True - else miDebug.Checked:= False; - if (aMask and iHTML) <> 0 then miHTML.Checked:= True - else miHTML.Checked:= False; - if (aMask and iCustom) <> 0 then miCustom.Checked:= True - else miCustom.Checked:= False; - end; -end; - -procedure TEdtTbConfigForm.btnAddDividerClick(Sender: TObject); -var - lvItem: TListItem; - anIndex: Integer; -begin - anIndex := lvToolbar.ItemIndex; - if anIndex > -1 then - lvItem := lvToolbar.Items.Insert(anIndex) - else - lvItem := lvToolbar.Items.Add; - lvItem.Selected := False; - lvItem.Caption:= cDivider; - {$IF not DEFINED(LCLQt)} - lvItem.ImageIndex:= divImageIndex; - {$ENDIF} - lvItem.SubItems.Add(IntToStr(CurrProfile)); - if lvToolbar.ItemIndex > -1 then - InsertMainListItem(lvItem,lvToolbar.Items[anIndex]) - else - InsertMainListItem(lvItem,Nil); -end; - -procedure TEdtTbConfigForm.btnMoveDownClick(Sender: TObject); -var - Index1,Index2: Integer; -begin - if lvToolbar.ItemIndex = -1 then - Exit; - if lvToolbar.ItemIndex < lvToolbar.Items.Count - 1 then begin - Index1 := lvToolbar.ItemIndex; - Index2 := Index1+1; - lvToolbar.Items.Exchange(Index1,Index2); - ExchangeMainListItem(lvToolbar.Items[Index1],lvToolbar.Items[Index2]); - lvToolbar.Items[Index1].Selected := False; - lvToolbar.Items[Index2].Selected := False; - lvToolbar.Selected := nil; - lvToolbar.ItemIndex:= Index2; - end; -end; - -procedure TEdtTbConfigForm.btnMoveUpClick(Sender: TObject); -var - Index1,Index2: Integer; -begin - if lvToolbar.ItemIndex = -1 then - exit; - if lvToolbar.ItemIndex > 0 then begin - Index1:= lvToolbar.ItemIndex; - Index2:= Index1-1; - lvToolbar.Items.Exchange(Index1, Index2); - ExchangeMainListItem(lvToolbar.Items[Index1],lvToolbar.Items[Index2]); - lvToolbar.Items[Index1].Selected := False; - lvToolbar.Items[Index2].Selected := False; - lvToolbar.Selected := nil; - lvToolbar.ItemIndex:= Index2; - end; -end; - -procedure TEdtTbConfigForm.btnOKClick(Sender: TObject); -begin - SaveSettings; -end; - -procedure TEdtTbConfigForm.SetupCaptions; -var - i: integer; -begin - Caption := rsEditorToolbarConfigForm; - btnHelp.Caption := rsHelp; - btnOK.Caption := rsOK; - btnCancel.Caption := rsCancel; - lblMenuTree.Caption := rsMenuTree; - lblToolbar.Caption := rsToolbar; - lblpos.Caption := rsPosition; - lblProfile.Caption := rsProfile; - - sLocalizedPosValues[0] := rsTop; - sLocalizedPosValues[1] := rsBottom; - sLocalizedPosValues[2] := rsRight; - sLocalizedPosValues[3] := rsLeft; - - for i := 0 to high(sLocalizedPosValues) do - begin - cbPos.Items[i] := sLocalizedPosValues[i]; // localized - end; - for i := 0 to high(sLocalizedProfileNames) do - begin - cbProfile.Items[i] := sLocalizedProfileNames[i]; - end; -end; - -procedure TEdtTbConfigForm.LoadCategories; -var - i: integer; -begin - TV.Items.BeginUpdate; - try - TV.Items.Clear; - for i := 0 to IDEMenuRoots.Count-1 do - AddMenuItem(nil, IDEMenuRoots[i],0); - finally - TV.Items.EndUpdate; - end; -end; - -procedure TEdtTbConfigForm.LoadSettings; -var - i: integer; - c: integer; - cfg: TConfigStorage; - value: string; - aProfileMask: Integer; - mi: TIDEMenuItem; - ms: TIDEMenuSection; -begin - cfg := GetIDEConfigStorage(cSettingsFile, True); - try - c := cfg.GetValue('Count', 0); - if c = 0 then begin - // Let's provide a Jump Back/Jump Forward as a starting default - ms := itmJumpings; - mi := ms.FindByName('itmJumpBack'); - AddListItem(mi,iAll); - mi := ms.FindByName('itmJumpForward'); - AddListItem(mi,iAll); - end - else begin - for i := 0 to c - 1 do - begin - value := cfg.GetValue('Button' + Format('%2.2d', [i+1]) + '/Value', ''); - aProfileMask := cfg.GetValue('Button' + Format('%2.2d', [i+1]) + '/Profile', iAll); - if value <> '' then - begin - if value = cDivider then - begin - AddListItem(nil,aProfileMask); - Continue; - end; - mi := IDEMenuRoots.FindByPath(value, false); - AddListItem(mi,aProfileMask); - end; - end; - end; - value := cfg.GetValue('Position','Top'); - FToolbarPos := value; - FToolBarShow := cfg.GetValue('Visible',true); - finally - cfg.Free; - end; - FillToolBar; - i := IndexFromEnglish(FToolBarPos); - cbPos.Text:= sLocalizedPosValues[i]; -end; - -procedure TEdtTbConfigForm.LoadStyleSettings; -var - cfg: TConfigStorage; - value: Integer; -begin - cfg := GetIDEConfigStorage(cSettingsFile, True); - try - value := cfg.GetValue('Profile',iAll); - CurrProfile := value; - value := GetProfileIndex(value); - cbProfile.Text:= sLocalizedProfileNames[value]; - finally - cfg.Free; - end; -end; - -procedure TEdtTbConfigForm.SaveSettings; -var - i: integer; - cfg: TConfigStorage; - lvItem: TLvItem; - aProfileMask: Integer; -begin - cfg := GetIDEConfigStorage(cSettingsFile, False); - try - cfg.SetValue('Count', MainList.Count); - for i := 0 to MainList.Count - 1 do begin - lvItem := TLvItem(MainList.Objects[I]); - aProfileMask:= lvItem.Profile; - if MainList[I] = cDivider then - cfg.SetDeleteValue('Button' + Format('%2.2d', [i+1]) + '/Value', cDivider, '') - else - cfg.SetDeleteValue('Button' + Format('%2.2d', [i+1]) + '/Value', lvItem.Item.GetPath, ''); - cfg.SetDeleteValue('Button' + Format('%2.2d', [i+1]) + '/Profile', aProfileMask,iAll); - end; - cfg.SetValue('Position', FToolbarPos); - cfg.SetValue('Visible',FToolBarShow); - cfg.SetValue('Profile',CurrProfile); - cfg.WriteToDisk; - finally - cfg.Free; - end; -end; - -procedure TEdtTbConfigForm.AddMenuItem(ParentNode: TTreeNode; Item: TIDEMenuItem; Level: Integer); -var - n: TTreeNode; - i: integer; - sec: TIDEMenuSection; - ACaption: string; - hasCaption: boolean; -begin - if Item is TIDEMenuSection then - begin - if Item.Name <> Item.Caption then hasCaption:= true - else hasCaption:= false; - sec := (Item as TIDEMenuSection); - if sec.Count > 0 then begin // skip empty sections - if Level= 0 then ACaption:= RootNodeCaption(Item) - else begin - if hasCaption then ACaption:= Item.Caption - else ACaption:= '---'; - end; - DeleteAmpersands(ACaption); - if (Level > 0) and ( not hasCaption) then n:= ParentNode - else begin - n := TV.Items.AddChild(ParentNode, Format('%s', [ACaption])); - n.ImageIndex := Item.ImageIndex; - n.SelectedIndex := Item.ImageIndex; - end; - for i := 0 to sec.Count-1 do - AddMenuItem(n, sec.Items[i],Level+1); - end; - end - else begin - if Item.Caption <> '-' then begin // workaround for HTML Editor dividers - ACaption:= Item.Caption; - DeleteAmpersands(ACaption); - ACaption:= ACaption+GetShortcut(Item); - n := TV.Items.AddChild(ParentNode, Format('%s', [ACaption])); - n.ImageIndex := Item.ImageIndex; - n.SelectedIndex := Item.ImageIndex; - n.Data := Item; - - end; - end; -end; - -function TEdtTbConfigForm.RootNodeCaption(Item: TIDEMenuItem): string; -var - AName: string; -begin -AName:= Item.Caption; -case AName of - 'IDEMainMenu': Result := rsIDEMainMenu; // mnuMain - 'SourceTab': Result := rsSourceTab; // SourceTabMenuRootName - 'SourceEditor': Result := rsSourceEditor; // SourceEditorMenuRootName - 'Messages': Result := rsMessages; // MessagesMenuRootName - 'Code Explorer': Result := rsCodeExplorer; // CodeExplorerMenuRootName - 'CodeTemplates': Result := rsCodeTemplates; // CodeTemplatesMenuRootName - 'Designer': Result := rsDesigner; // DesignerMenuRootName - 'PackageEditor': Result := rsPackageEditor; // PackageEditorMenuRootName - 'PackageEditorFiles': Result := rsPackageEditorFiles // PackageEditorMenuFilesRootName - else Result := Item.Caption; -end; -end; - -procedure TEdtTbConfigForm.AddListItem(Item: TIDEMenuItem; PMask: Integer); -var - aListItem: TLvItem; -begin - aListItem := TLvItem.Create; - if assigned(Item) then begin - aListItem.Item := Item; - aListItem.Profile:= Pmask; - MainList.AddObject(Item.Caption,aListItem); - end - else begin - aListItem.Item := nil; - aListItem.Profile:= PMask; - MainList.AddObject(cDivider,aListItem); - end; - -end; - -procedure TEdtTbConfigForm.AddToolBarItem(Item: TIDEMenuItem; PMask: Integer); -Var - n: TTreeNode; - ACaption: string; - lvItem: TListItem; -begin - if Assigned(Item) then begin - ACaption:= Item.Caption; - DeleteAmpersands(ACaption); - ACaption:= ACaption+GetShortcut(Item); - lvItem := lvToolbar.Items.Add; - lvItem.Caption:= ACaption; - lvItem.Data:= Item; - {$IF not DEFINED(LCLQt)} - if Item.ImageIndex > -1 then - lvItem.ImageIndex:= Item.ImageIndex - else - lvItem.ImageIndex:= defImageIndex; - {$ENDIF} - lvItem.SubItems.Add(IntToStr(PMask)); - n:= TV.Items.FindNodeWithData(Item); - n.Visible:= False; - end; -end; - -procedure TEdtTbConfigForm.AddDivider(PMask: Integer); -var - lvItem: TListItem; -begin - lvItem := lvToolbar.Items.Add; - lvItem.Caption:= cDivider; - {$IF not DEFINED(LCLQt)} - lvItem.ImageIndex:= divImageIndex; - {$ENDIF} - lvItem.SubItems.Add(IntToStr(PMask)); -end; - -procedure TEdtTbConfigForm.FillToolBar; -var - I: Integer; - aListItem: TLvItem; - aCaption: string; - aPMask: Integer; - mi: TIDEMenuItem; - canShow: Boolean; -begin - for I:= 0 to MainList.Count -1 do begin - aListItem := TLvItem(MainList.Objects[I]); - aPMask := aListItem.Profile; - canShow := (CurrProfile = iAll) or ((aPMask and CurrProfile) <> 0); - if canShow then begin - mi := aListItem.Item; - aCaption := MainList.Strings[I]; - if aCaption = cDivider then AddDivider(aPMask) - else AddToolBarItem(mi,aPMask); - aListItem.LvIndex:= lvToolbar.Items.Count-1; - end; - end; -end; - -procedure TEdtTbConfigForm.ReloadToolBar; -begin - lvToolbar.Clear; - FillToolBar; -end; - -class function TEdtTbConfigForm.Execute: boolean; -var - frm: TEdtTbConfigForm; -begin - frm := TEdtTbConfigForm.Create(nil); - try - result := frm.ShowModal = mrOK; - finally - frm.Free; - end; -end; - -class procedure TEdtTbConfigForm.Setup; -var - frm: TEdtTbConfigForm; -begin - frm := TEdtTbConfigForm.Create(nil); - try - frm.SaveSettings; - finally - frm.Free; - end; -end; - -class procedure TEdtTbConfigForm.UpdateVisible(NewStatus: Boolean); -var - frm: TEdtTbConfigForm; -begin - frm := TEdtTbConfigForm.Create(nil); - try - frm.FToolBarShow:= NewStatus; - frm.SaveSettings; - finally - frm.Free; - end; -end; - -end. - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowdown_blue16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/arrowdown_blue16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowdown_blue16.xpm 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/arrowdown_blue16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,139 +0,0 @@ -/* XPM */ -static char * arrowdown_blue16_xpm[] = { -"16 16 120 2", -" c None", -". c #0073E8", -"+ c #178AFF", -"@ c #2D95FF", -"# c #2591FF", -"$ c #007DFC", -"% c #0062C6", -"& c #3398FF", -"* c #95C9FF", -"= c #BFDFFF", -"- c #A7D2FF", -"; c #8DC5FF", -"> c #73B8FF", -", c #399BFF", -"' c #006FE0", -") c #0068D2", -"! c #5DADFF", -"~ c #D3E9FF", -"{ c #97CAFF", -"] c #3F9EFF", -"^ c #1F8EFF", -"/ c #0D85FF", -"( c #1388FF", -"_ c #0581FF", -": c #006AD6", -"< c #00448A", -"[ c #0075EC", -"} c #43A0FF", -"| c #C7E3FF", -"1 c #5BACFF", -"2 c #007CFA", -"3 c #0076EE", -"4 c #C0DFFE", -"5 c #FFFFFF", -"6 c #4A9CF0", -"7 c #0070E2", -"8 c #006EDE", -"9 c #0061C4", -"0 c #00468E", -"a c #A9D3FF", -"b c #0077F0", -"c c #BEDEFE", -"d c #4B9BED", -"e c #006CDA", -"f c #0066CE", -"g c #0069D4", -"h c #004FA0", -"i c #81BFFF", -"j c #007EFF", -"k c #0078F2", -"l c #BDDDFE", -"m c #4A98E8", -"n c #0064CA", -"o c #0054AA", -"p c #003266", -"q c #419FFF", -"r c #0079F4", -"s c #208DFC", -"t c #0881FC", -"u c #BDDDFD", -"v c #4A95E0", -"w c #227BD6", -"x c #0E6FD3", -"y c #0063C8", -"z c #005BB8", -"A c #0B84FF", -"B c #DEEFFF", -"C c #96CAFF", -"D c #B9DCFF", -"E c #3C84CD", -"F c #498BCE", -"G c #F5F9FC", -"H c #AAC9E8", -"I c #005EBE", -"J c #005DBC", -"K c #003872", -"L c #004790", -"M c #007BF8", -"N c #EDF5FE", -"O c #89BFF5", -"P c #BCDAF9", -"Q c #80ADDC", -"R c #E3EDF7", -"S c #93BAE2", -"T c #00346A", -"U c #003C7A", -"V c #5D9AD8", -"W c #F7FAFD", -"X c #FDFEFE", -"Y c #F8FBFD", -"Z c #FAFCFE", -"` c #8AB4DF", -" . c #055FBB", -".. c #0058B2", -"+. c #002F60", -"@. c #0059B4", -"#. c #006BD8", -"$. c #0060C2", -"%. c #5493D3", -"&. c #F6F9FD", -"*. c #92B9E2", -"=. c #025DBB", -"-. c #005CBA", -";. c #005FC0", -">. c #004D9C", -",. c #003974", -"'. c #5290D0", -"). c #F2F7FB", -"!. c #A3C4E6", -"~. c #00356C", -"{. c #004994", -"]. c #6A9FD6", -"^. c #BAD3EC", -"/. c #186BC0", -"(. c #004388", -"_. c #002850", -":. c #003164", -"<. c #004B98", -"[. c #00264C", -"}. c #003062", -" . + @ # $ % ", -" & & * = - ; > , ' ' ", -" ) ! ~ { ] ^ / ( ( _ : < ", -" [ } | 1 2 3 4 5 6 7 8 ' 9 0 ", -" [ a ! . b $ c 5 d e : f g 0 ", -"h & i j k $ $ l 5 m e e ) n o p ", -"h q & r s t $ u 5 v ) w x y z p ", -"h # A $ B C j D 5 E F G H I J K ", -"L M 2 2 N 5 O P 5 Q R 5 S J J T ", -"U ' b 8 V W X Y X Z 5 ` .I ..+.", -"U @.b #.$.%.&.5 5 5 *.=.-.;.>.+.", -" ,.8 #.n J '.).5 !.=.-.J $.~. ", -" ,.{.) y J z ].^./.-.J $.< ~. ", -" ,.(.;.$.J z J J ;.$.< _. ", -" :.:.<.z J J -.>.~.~. ", -" [.+.K K }._. "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowleft_blue16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/arrowleft_blue16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowleft_blue16.xpm 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/arrowleft_blue16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -/* XPM */ -static char * arrowleft_blue16_xpm[] = { -"16 16 118 2", -" c None", -". c #0073E8", -"+ c #178AFF", -"@ c #2D95FF", -"# c #2591FF", -"$ c #007DFC", -"% c #0062C6", -"& c #3398FF", -"* c #95C9FF", -"= c #BFDFFF", -"- c #A7D2FF", -"; c #8DC5FF", -"> c #73B8FF", -", c #399BFF", -"' c #006FE0", -") c #0068D2", -"! c #5DADFF", -"~ c #D3E9FF", -"{ c #97CAFF", -"] c #3F9EFF", -"^ c #1F8EFF", -"/ c #0D85FF", -"( c #1388FF", -"_ c #0581FF", -": c #006AD6", -"< c #00448A", -"[ c #0075EC", -"} c #43A0FF", -"| c #C7E3FF", -"1 c #5BACFF", -"2 c #007CFA", -"3 c #0579EE", -"4 c #93C8FD", -"5 c #AAD4FE", -"6 c #0E7CEB", -"7 c #0070E2", -"8 c #006EDE", -"9 c #0061C4", -"0 c #00468E", -"a c #A9D3FF", -"b c #0278F0", -"c c #8AC3FE", -"d c #FFFFFF", -"e c #F5FAFF", -"f c #2285E9", -"g c #006CDA", -"h c #0066CE", -"i c #0069D4", -"j c #004FA0", -"k c #81BFFF", -"l c #007EFF", -"m c #0279F2", -"n c #92C7FE", -"o c #E3F1FF", -"p c #499DF3", -"q c #0064CA", -"r c #0054AA", -"s c #003266", -"t c #419FFF", -"u c #1886F5", -"v c #A3D0FE", -"w c #FAFCFF", -"x c #80BDFC", -"y c #3C92E9", -"z c #4A95E0", -"A c #4A94DF", -"B c #4B94DE", -"C c #4A93DE", -"D c #0063C8", -"E c #005BB8", -"F c #0B84FF", -"G c #BADCFE", -"H c #FDFEFF", -"I c #005EBE", -"J c #005DBC", -"K c #003872", -"L c #004790", -"M c #007BF8", -"N c #6AB2FC", -"O c #F2F8FE", -"P c #F8FBFE", -"Q c #BCDAF9", -"R c #B9D8F8", -"S c #BDD5ED", -"T c #BED5ED", -"U c #C0D7EE", -"V c #00346A", -"W c #003C7A", -"X c #0077F0", -"Y c #5293D6", -"Z c #F6F9FD", -"` c #FDFEFE", -" . c #89B4E0", -".. c #005CBA", -"+. c #0058B2", -"@. c #002F60", -"#. c #0059B4", -"$. c #006BD8", -"%. c #0060C2", -"&. c #5493D3", -"*. c #F7FAFD", -"=. c #96BCE3", -"-. c #0861BC", -";. c #005FC0", -">. c #004D9C", -",. c #003974", -"'. c #5D97D3", -"). c #EDF3FA", -"!. c #DEEAF6", -"~. c #2070C3", -"{. c #00356C", -"]. c #004994", -"^. c #004388", -"/. c #002850", -"(. c #003164", -"_. c #004B98", -":. c #00264C", -"<. c #003062", -" . + @ # $ % ", -" & & * = - ; > , ' ' ", -" ) ! ~ { ] ^ / ( ( _ : < ", -" [ } | 1 2 3 4 5 6 7 8 ' 9 0 ", -" [ a ! . b c d e f g : h i 0 ", -"j & k l m n d o p 8 g g ) q r s ", -"j t & u v d w x y z A B C D E s ", -"j # F G d d H d d d d d d I J K ", -"L M 2 N O d P Q R S S T U J J V ", -"W ' X 8 Y Z ` ...........I +.@.", -"W #.X $.%.&.*.d =.-.......;.>.@.", -" ,.8 $.q J '.).!.~.....J %.{. ", -" ,.].) D J E E ......J %.< {. ", -" ,.^.;.%.J E J J ;.%.< /. ", -" (.(._.E J J ..>.{.{. ", -" :.@.K K <./. "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowright_blue16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/arrowright_blue16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowright_blue16.xpm 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/arrowright_blue16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ -/* XPM */ -static char * arrowright_blue16_xpm[] = { -"16 16 116 2", -" c None", -". c #0073E8", -"+ c #178AFF", -"@ c #2D95FF", -"# c #2591FF", -"$ c #007DFC", -"% c #0062C6", -"& c #3398FF", -"* c #95C9FF", -"= c #BFDFFF", -"- c #A7D2FF", -"; c #8DC5FF", -"> c #73B8FF", -", c #399BFF", -"' c #006FE0", -") c #0068D2", -"! c #5DADFF", -"~ c #D3E9FF", -"{ c #97CAFF", -"] c #3F9EFF", -"^ c #1F8EFF", -"/ c #0D85FF", -"( c #1388FF", -"_ c #0581FF", -": c #006AD6", -"< c #00448A", -"[ c #0075EC", -"} c #43A0FF", -"| c #C7E3FF", -"1 c #5BACFF", -"2 c #007CFA", -"3 c #0E7EEF", -"4 c #AAD3FD", -"5 c #93C8FE", -"6 c #0577EA", -"7 c #0070E2", -"8 c #006EDE", -"9 c #0061C4", -"0 c #00468E", -"a c #A9D3FF", -"b c #0077F0", -"c c #228EFC", -"d c #F5FAFF", -"e c #FFFFFF", -"f c #8ABEF4", -"g c #026DDA", -"h c #0066CE", -"i c #0069D4", -"j c #004FA0", -"k c #81BFFF", -"l c #007EFF", -"m c #0078F2", -"n c #49A2FD", -"o c #E3F0FD", -"p c #92C0EF", -"q c #0064CA", -"r c #0054AA", -"s c #003266", -"t c #419FFF", -"u c #4AA0F7", -"v c #4BA3FD", -"w c #4AA3FD", -"x c #3C9AFA", -"y c #80B8F1", -"z c #FAFCFE", -"A c #A3C8EE", -"B c #1875D4", -"C c #0063C8", -"D c #005BB8", -"E c #0B84FF", -"F c #FDFEFE", -"G c #BAD3EC", -"H c #005EBE", -"I c #005DBC", -"J c #003872", -"K c #004790", -"L c #007BF8", -"M c #C0DFFE", -"N c #BEDCFA", -"O c #BDDAF7", -"P c #BDDBFA", -"Q c #B9D9F9", -"R c #BCDAF8", -"S c #F8FAFD", -"T c #F2F7FB", -"U c #6AA0D7", -"V c #00346A", -"W c #003C7A", -"X c #0060C2", -"Y c #89B4DF", -"Z c #F6F9FD", -"` c #5290D0", -" . c #005CBA", -".. c #0058B2", -"+. c #002F60", -"@. c #0059B4", -"#. c #006BD8", -"$. c #0861BC", -"%. c #96BCE3", -"&. c #F7FAFD", -"*. c #5492D1", -"=. c #005FC0", -"-. c #004D9C", -";. c #003974", -">. c #2070C3", -",. c #DEEAF6", -"'. c #EDF3FA", -"). c #5D97D3", -"!. c #00356C", -"~. c #004994", -"{. c #004388", -"]. c #002850", -"^. c #003164", -"/. c #004B98", -"(. c #00264C", -"_. c #003062", -" . + @ # $ % ", -" & & * = - ; > , ' ' ", -" ) ! ~ { ] ^ / ( ( _ : < ", -" [ } | 1 2 3 4 5 6 7 8 ' 9 0 ", -" [ a ! . b c d e f g : h i 0 ", -"j & k l m $ $ n o e p g ) q r s ", -"j t & u v w w x y z e A B C D s ", -"j # E e e e e e e F e e G H I J ", -"K L 2 M N O P Q R S e T U I I V ", -"W ' b 8 X I H I Y F Z ` .H ..+.", -"W @.b #.X H $.%.e &.*. . .=.-.+.", -" ;.8 #.q I >.,.'.). . .I X !. ", -" ;.~.) C I D D . . .I X < !. ", -" ;.{.=.X I D I I =.X < ]. ", -" ^.^./.D I I .-.!.!. ", -" (.+.J J _.]. "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowup_blue16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/arrowup_blue16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/arrowup_blue16.xpm 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/arrowup_blue16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -/* XPM */ -static char * arrowup_blue16_xpm[] = { -"16 16 118 2", -" c None", -". c #0073E8", -"+ c #178AFF", -"@ c #2D95FF", -"# c #2591FF", -"$ c #007DFC", -"% c #0062C6", -"& c #3398FF", -"* c #95C9FF", -"= c #BFDFFF", -"- c #A7D2FF", -"; c #8DC5FF", -"> c #73B8FF", -", c #399BFF", -"' c #006FE0", -") c #0068D2", -"! c #5DADFF", -"~ c #D3E9FF", -"{ c #97CAFF", -"] c #3F9EFF", -"^ c #1F8EFF", -"/ c #0D85FF", -"( c #1388FF", -"_ c #0581FF", -": c #006AD6", -"< c #00448A", -"[ c #0075EC", -"} c #43A0FF", -"| c #C7E3FF", -"1 c #5BACFF", -"2 c #007CFA", -"3 c #0076EE", -"4 c #6AB2FC", -"5 c #BADCFE", -"6 c #1881EC", -"7 c #0070E2", -"8 c #006EDE", -"9 c #0061C4", -"0 c #00468E", -"a c #A9D3FF", -"b c #0077F0", -"c c #52A7FD", -"d c #F2F8FF", -"e c #FFFFFF", -"f c #A3CCF6", -"g c #026DDA", -"h c #0066CE", -"i c #0069D4", -"j c #004FA0", -"k c #81BFFF", -"l c #007EFF", -"m c #0078F2", -"n c #54A8FD", -"o c #F6FAFF", -"p c #92C0EF", -"q c #0064CA", -"r c #0054AA", -"s c #003266", -"t c #419FFF", -"u c #0079F4", -"v c #5DACFD", -"w c #F7FBFF", -"x c #FDFEFF", -"y c #F8FBFF", -"z c #FAFCFE", -"A c #8AB9E9", -"B c #056AD1", -"C c #0063C8", -"D c #005BB8", -"E c #0B84FF", -"F c #EDF6FF", -"G c #89C3FF", -"H c #BCDDFF", -"I c #80AFDF", -"J c #E3EDF7", -"K c #93BAE2", -"L c #005EBE", -"M c #005DBC", -"N c #003872", -"O c #004790", -"P c #007BF8", -"Q c #DEEDFC", -"R c #96C4F3", -"S c #0074EA", -"T c #B9D9F9", -"U c #3C82C9", -"V c #498BCE", -"W c #F5F9FC", -"X c #AAC9E8", -"Y c #00346A", -"Z c #003C7A", -"` c #2074CA", -" . c #0862BE", -".. c #BDD5EE", -"+. c #4A8BCE", -"@. c #005CBA", -"#. c #2272C3", -"$. c #0E65BE", -"%. c #0058B2", -"&. c #002F60", -"*. c #0059B4", -"=. c #006BD8", -"-. c #0060C2", -";. c #BDD5ED", -">. c #005FC0", -",. c #004D9C", -"'. c #003974", -"). c #BED5ED", -"!. c #4B8CCE", -"~. c #00356C", -"{. c #004994", -"]. c #C0D6ED", -"^. c #004388", -"/. c #002850", -"(. c #003164", -"_. c #004B98", -":. c #00264C", -"<. c #003062", -" . + @ # $ % ", -" & & * = - ; > , ' ' ", -" ) ! ~ { ] ^ / ( ( _ : < ", -" [ } | 1 2 3 4 5 6 7 8 ' 9 0 ", -" [ a ! . b c d e f g : h i 0 ", -"j & k l m n o e e e p g ) q r s ", -"j t & u v w x y x z e A B C D s ", -"j # E $ F e G H e I J e K L M N ", -"O P 2 2 Q R S T e U V W X M M Y ", -"Z ' b 8 ` .L ..e +.@.#.$.L %.&.", -"Z *.b =.-.L @.;.e +.@.@.@.>.,.&.", -" '.8 =.q M @.).e !.@.@.M -.~. ", -" '.{.) C M D ].e +.@.M -.< ~. ", -" '.^.>.-.M D M M >.-.< /. ", -" (.(._.D M M @.,.~.~. ", -" :.&.N N <./. "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/execute16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/execute16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/execute16.xpm 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/execute16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,276 +0,0 @@ -/* XPM */ -static char * execute_xpm[] = { -"16 16 257 2", -" c None", -". c #B57B4A", -"+ c #C66B29", -"@ c #C67B52", -"# c #D66B18", -"$ c #D68C52", -"% c #D69431", -"& c #E77B39", -"* c #E78452", -"= c #EF7B10", -"- c #EF7B31", -"; c #EF8410", -"> c #EFAD29", -", c #EFAD39", -"' c #EFB510", -") c #EFBD08", -"! c #F77300", -"~ c #F77318", -"{ c #F77329", -"] c #F78408", -"^ c #F79408", -"/ c #F7A518", -"( c #F7CE00", -"_ c #F7DE18", -": c #F7DE63", -"< c #FF00FF", -"[ c #FF7300", -"} c #FF7B00", -"| c #FF8400", -"1 c #FF8C00", -"2 c #FF9400", -"3 c #FF9C00", -"4 c #FFA500", -"5 c #FFA510", -"6 c #FFA539", -"7 c #FFA552", -"8 c #FFA55A", -"9 c #FFAD00", -"0 c #FFAD29", -"a c #FFAD31", -"b c #FFB500", -"c c #FFB56B", -"d c #FFB584", -"e c #FFBD00", -"f c #FFBD08", -"g c #FFBD10", -"h c #FFC600", -"i c #FFC608", -"j c #FFC66B", -"k c #FFCE00", -"l c #FFCE18", -"m c #FFD600", -"n c #FFD608", -"o c #FFD610", -"p c #FFD621", -"q c #FFD631", -"r c #FFDE00", -"s c #FFDE18", -"t c #FFDE29", -"u c #FFDE42", -"v c #FFE700", -"w c #FFE710", -"x c #FFE718", -"y c #FFE739", -"z c #FFEF00", -"A c #FFEF18", -"B c #FFEF39", -"C c #FFEF4A", -"D c #FFF700", -"E c #FFF708", -"F c #FFF729", -"G c #FFF731", -"H c #FFF742", -"I c #FFF74A", -"J c #FFF75A", -"K c #FFFF00", -"L c #FFFF08", -"M c #FFFF18", -"N c #FFFF21", -"O c #FFFF31", -"P c #FFFF39", -"Q c #FFFFFF", -"R c #FFFFFF", -"S c #FFFFFF", -"T c #FFFFFF", -"U c #FFFFFF", -"V c #FFFFFF", -"W c #FFFFFF", -"X c #FFFFFF", -"Y c #FFFFFF", -"Z c #FFFFFF", -"` c #FFFFFF", -" . c #FFFFFF", -".. c #FFFFFF", -"+. c #FFFFFF", -"@. c #FFFFFF", -"#. c #FFFFFF", -"$. c #FFFFFF", -"%. c #FFFFFF", -"&. c #FFFFFF", -"*. c #FFFFFF", -"=. c #FFFFFF", -"-. c #FFFFFF", -";. c #FFFFFF", -">. c #FFFFFF", -",. c #FFFFFF", -"'. c #FFFFFF", -"). c #FFFFFF", -"!. c #FFFFFF", -"~. c #FFFFFF", -"{. c #FFFFFF", -"]. c #FFFFFF", -"^. c #FFFFFF", -"/. c #FFFFFF", -"(. c #FFFFFF", -"_. c #FFFFFF", -":. c #FFFFFF", -"<. c #FFFFFF", -"[. c #FFFFFF", -"}. c #FFFFFF", -"|. c #FFFFFF", -"1. c #FFFFFF", -"2. c #FFFFFF", -"3. c #FFFFFF", -"4. c #FFFFFF", -"5. c #FFFFFF", -"6. c #FFFFFF", -"7. c #FFFFFF", -"8. c #FFFFFF", -"9. c #FFFFFF", -"0. c #FFFFFF", -"a. c #FFFFFF", -"b. c #FFFFFF", -"c. c #FFFFFF", -"d. c #FFFFFF", -"e. c #FFFFFF", -"f. c #FFFFFF", -"g. c #FFFFFF", -"h. c #FFFFFF", -"i. c #FFFFFF", -"j. c #FFFFFF", -"k. c #FFFFFF", -"l. c #FFFFFF", -"m. c #FFFFFF", -"n. c #FFFFFF", -"o. c #FFFFFF", -"p. c #FFFFFF", -"q. c #FFFFFF", -"r. c #FFFFFF", -"s. c #FFFFFF", -"t. c #FFFFFF", -"u. c #FFFFFF", -"v. c #FFFFFF", -"w. c #FFFFFF", -"x. c #FFFFFF", -"y. c #FFFFFF", -"z. c #FFFFFF", -"A. c #FFFFFF", -"B. c #FFFFFF", -"C. c #FFFFFF", -"D. c #FFFFFF", -"E. c #FFFFFF", -"F. c #FFFFFF", -"G. c #FFFFFF", -"H. c #FFFFFF", -"I. c #FFFFFF", -"J. c #FFFFFF", -"K. c #FFFFFF", -"L. c #FFFFFF", -"M. c #FFFFFF", -"N. c #FFFFFF", -"O. c #FFFFFF", -"P. c #FFFFFF", -"Q. c #FFFFFF", -"R. c #FFFFFF", -"S. c #FFFFFF", -"T. c #FFFFFF", -"U. c #FFFFFF", -"V. c #FFFFFF", -"W. c #FFFFFF", -"X. c #FFFFFF", -"Y. c #FFFFFF", -"Z. c #FFFFFF", -"`. c #FFFFFF", -" + c #FFFFFF", -".+ c #FFFFFF", -"++ c #FFFFFF", -"@+ c #FFFFFF", -"#+ c #FFFFFF", -"$+ c #FFFFFF", -"%+ c #FFFFFF", -"&+ c #FFFFFF", -"*+ c #FFFFFF", -"=+ c #FFFFFF", -"-+ c #FFFFFF", -";+ c #FFFFFF", -">+ c #FFFFFF", -",+ c #FFFFFF", -"'+ c #FFFFFF", -")+ c #FFFFFF", -"!+ c #FFFFFF", -"~+ c #FFFFFF", -"{+ c #FFFFFF", -"]+ c #FFFFFF", -"^+ c #FFFFFF", -"/+ c #FFFFFF", -"(+ c #FFFFFF", -"_+ c #FFFFFF", -":+ c #FFFFFF", -"<+ c #FFFFFF", -"[+ c #FFFFFF", -"}+ c #FFFFFF", -"|+ c #FFFFFF", -"1+ c #FFFFFF", -"2+ c #FFFFFF", -"3+ c #FFFFFF", -"4+ c #FFFFFF", -"5+ c #FFFFFF", -"6+ c #FFFFFF", -"7+ c #FFFFFF", -"8+ c #FFFFFF", -"9+ c #FFFFFF", -"0+ c #FFFFFF", -"a+ c #FFFFFF", -"b+ c #FFFFFF", -"c+ c #FFFFFF", -"d+ c #FFFFFF", -"e+ c #FFFFFF", -"f+ c #FFFFFF", -"g+ c #FFFFFF", -"h+ c #FFFFFF", -"i+ c #FFFFFF", -"j+ c #FFFFFF", -"k+ c #FFFFFF", -"l+ c #FFFFFF", -"m+ c #FFFFFF", -"n+ c #FFFFFF", -"o+ c #FFFFFF", -"p+ c #FFFFFF", -"q+ c #FFFFFF", -"r+ c #FFFFFF", -"s+ c #FFFFFF", -"t+ c #FFFFFF", -"u+ c #FFFFFF", -"v+ c #FFFFFF", -"w+ c #FFFFFF", -"x+ c #FFFFFF", -"y+ c #FFFFFF", -"z+ c #FFFFFF", -"A+ c #FFFFFF", -"B+ c #FFFFFF", -"C+ c #FFFFFF", -"D+ c #FFFFFF", -"E+ c #FFFFFF", -"F+ c #FFFFFF", -"G+ c #FFFFFF", -"H+ c #FFFFFF", -" q 7 @ ", -" q u o 8 @ ", -" q D z 9 4 @ ", -" q E K D m b @ ", -" i y C H M K K L N @ ", -" 6 h z D z r K K B i @ ", -" 0 h z D D K C l 4 @ ", -" @ @ @ h L G g 9 @ @ ", -" b f 9 3 @ ", -" b i 3 3 @ ", -" b 1 2 @ @ ", -" 3 1 1 @ ", -" & } ! @ ", -" - @ + ", -" @ ", -" "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/jumpto16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/jumpto16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/jumpto16.xpm 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/jumpto16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ -/* XPM */ -static char * jumpto16_xpm[] = { -"16 16 113 2", -" c None", -". c #92BDED", -"+ c #82A4DA", -"@ c #666B98", -"# c #FFFFFF", -"$ c #FDFEFF", -"% c #FBFDFF", -"& c #F7FBFE", -"* c #F4F9FD", -"= c #EFF7FC", -"- c #EBF5FC", -"; c #99C2EA", -"> c #97C1EA", -", c #95C0EA", -"' c #94BFE9", -") c #91BEE9", -"! c #8FBCE8", -"~ c #8BBBE8", -"{ c #E4F1FA", -"] c #8EB1E3", -"^ c #98C2EA", -"/ c #95BFE9", -"( c #92BFEA", -"_ c #91BDE8", -": c #8EBCE8", -"< c #88B9E7", -"[ c #DDEEF9", -"} c #FDFEFE", -"| c #FBFCFE", -"1 c #F3F9FD", -"2 c #EEF7FC", -"3 c #EAF5FC", -"4 c #E5F3FB", -"5 c #E0F0FA", -"6 c #DAEDF9", -"7 c #D5EAF8", -"8 c #87A8DC", -"9 c #FCFEFF", -"0 c #935311", -"a c #9ACBEE", -"b c #98CAED", -"c c #CEE7F7", -"d c #F8FCFD", -"e c #90D198", -"f c #F5B15A", -"g c #D1E8F8", -"h c #CCE6F7", -"i c #C6E3F5", -"j c #829ACB", -"k c #F2F9FD", -"l c #F3AB4F", -"m c #BEDFF5", -"n c #ECF6FB", -"o c #8DA6BD", -"p c #E1912D", -"q c #F4AB50", -"r c #F2A140", -"s c #F0972F", -"t c #DC7F19", -"u c #B4C2C7", -"v c #B6DCF3", -"w c #858EBA", -"x c #E6F3FA", -"y c #CDCECB", -"z c #DD841F", -"A c #EF8D21", -"B c #DB7C15", -"C c #B2C2C6", -"D c #B4DBF3", -"E c #AFD8F2", -"F c #DEF0FA", -"G c #9CCBEF", -"H c #98CAEE", -"I c #94B1C1", -"J c #89ABBF", -"K c #84BFEB", -"L c #81BEEA", -"M c #A9D5F1", -"N c #7681B4", -"O c #D7ECF8", -"P c #D2E9F8", -"Q c #CCE6F6", -"R c #C6E3F6", -"S c #B7C4C7", -"T c #AFC0C6", -"U c #B1D9F2", -"V c #ACD6F2", -"W c #A7D4F0", -"X c #A3D2F0", -"Y c #D0E8F7", -"Z c #92C7ED", -"` c #8EC5EC", -" . c #8BC4EC", -".. c #88C2EC", -"+. c #85C1EB", -"@. c #82BFEA", -"#. c #7FBEEA", -"$. c #7CBCE9", -"%. c #79BBE9", -"&. c #9ED0EF", -"*. c #8381B7", -"=. c #C8E4F6", -"-. c #C2E1F5", -";. c #BDDEF4", -">. c #B8DCF3", -",. c #B2D9F2", -"'. c #ADD6F2", -"). c #A8D4F1", -"!. c #A4D2F0", -"~. c #A0D1F0", -"{. c #9DCFEF", -"]. c #9ACDEE", -"^. c #7478A4", -" ", -" . + + + + + + + + + + + @ ", -" . # # # # # $ % & * = - @ ", -" . # ; ; ; > , ' ) ! ~ { @ ", -" ] # ; ^ > / ( _ : ~ < [ @ ", -" ] # } | & 1 2 3 4 5 6 7 @ ", -" 8 9 , ' 0 0 0 0 0 a b c @ ", -" 8 d ( e 0 f f f 0 g h i @ ", -" j k 0 0 0 f f l 0 0 0 m @ ", -" j n o 0 p q r s t 0 u v @ ", -" w x 5 y 0 z A B 0 C D E @ ", -" w F G H I 0 B 0 J K L M @ ", -" N O P Q R S 0 T U V W X @ ", -" N Y Z ` ...+.@.#.$.%.&.@ ", -" *.=.-.;.>.,.'.).!.~.{.].@ ", -" *.^.^.^.^.^.^.^.^.^.^.^.@ "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/menu_divider16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/menu_divider16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/menu_divider16.xpm 2014-09-11 15:56:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/menu_divider16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -/* XPM */ -static char * tcontrolbar_xpm[] = { -"16 16 29 1", -" c None", -". c #DDD9D4", -"+ c #DCD9D4", -"@ c #EAE8E4", -"# c #EAE7E4", -"$ c #D3CFC7", -"% c #D4D0C8", -"& c #D5D1C9", -"* c #D8D5CE", -"= c #CCC9C2", -"- c #D2CEC6", -"; c #DDDAD5", -"> c #91908F", -", c #E1DED8", -"' c #F2F2EF", -") c #A4A3A1", -"! c #CDCAC2", -"~ c #E3E1DC", -"{ c #E7E4E0", -"] c #959492", -"^ c #D8D6D2", -"/ c #92918F", -"( c #C3C0BA", -"_ c #A5A3A0", -": c #9D9C99", -"< c #CFCBC3", -"[ c #D1CEC6", -"} c #D0CCC4", -"| c #D1CDC5", -".+++.+++.++.+++.", -"@###@###@##@###@", -"$%&*=-$;>$$$$$$$", -"$%,')!$;>$,')$$$", -"$%~{]!$;>$~{]$$$", -"$%~{]!$;>$~{]$$$", -"$%~{]!$;>$~{]$$$", -"$%~{]!$;>$~{]$$$", -"$%~{]!$;>$~{]$$$", -"$%~{]!$;>$~{]$$$", -"$%~{]!$;>$~{]$$$", -"$%;^/!$;>$;^/$$$", -"$%(_:<$;>$(_:$$$", -"$%[}|-$;>$$$$$$$", -">>>>>>>>>>>>>>>>", -" "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/preferences16.xpm lazarus-1.6+dfsg/components/editortoolbar/images/preferences16.xpm --- lazarus-1.4.4+dfsg/components/editortoolbar/images/preferences16.xpm 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/preferences16.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ -/* XPM */ -static char * preferences16_xpm[] = { -"16 16 128 2", -" c None", -". c #969697", -"+ c #E4E4E5", -"@ c #E9E9EA", -"# c #BCBCBC", -"$ c #9E9EA3", -"% c #E0E0E1", -"& c #C7C7C6", -"* c #A3A3A5", -"= c #A5A5B3", -"- c #B2B2B2", -"; c #A0A0A0", -"> c #969699", -", c #A0A0AB", -"' c #E2E3E5", -") c #AFAFAE", -"! c #A1A1AB", -"~ c #B6B6D8", -"{ c #B48913", -"] c #BE8F0D", -"^ c #E2E5EC", -"/ c #B2B2B1", -"( c #A2A2AC", -"_ c #B6B8E0", -": c #C19A1E", -"< c #BA9322", -"[ c #AA800E", -"} c #D3A220", -"| c #EBBC36", -"1 c #E0E2E9", -"2 c #B4B6DD", -"3 c #FDE165", -"4 c #E6CA68", -"5 c #A47905", -"6 c #B88C14", -"7 c #CD9D1F", -"8 c #DDAC27", -"9 c #EFC547", -"0 c #B4B5DC", -"a c #FBE47C", -"b c #F9ECAC", -"c c #E0CB8A", -"d c #C4A548", -"e c #BC921E", -"f c #DFAD27", -"g c #E3B431", -"h c #F4CF5A", -"i c #E2E3E9", -"j c #B3B3B2", -"k c #B5B7E1", -"l c #FADC59", -"m c #FFF09C", -"n c #FCEFB5", -"o c #BD9B3D", -"p c #B88E1C", -"q c #DEAD28", -"r c #E7BB3F", -"s c #F6D76D", -"t c #D3C791", -"u c #D8BC45", -"v c #FFD202", -"w c #FED314", -"x c #FBD21E", -"y c #CB9E0C", -"z c #C09113", -"A c #D7A622", -"B c #EAC34E", -"C c #F7DF81", -"D c #FFEF92", -"E c #E8D371", -"F c #CCB85C", -"G c #C9B250", -"H c #EBC72A", -"I c #FFD107", -"J c #FECF04", -"K c #FED009", -"L c #F5C908", -"M c #E1B40E", -"N c #D7BA60", -"O c #D2B048", -"P c #E0BE53", -"Q c #FFED95", -"R c #FFEF8D", -"S c #FFE55A", -"T c #FFDA27", -"U c #FFD81C", -"V c #FFE252", -"W c #FFE879", -"X c #FFEB7D", -"Y c #EECB3F", -"Z c #D9B131", -"` c #CEA42C", -" . c #B48C20", -".. c #BD982C", -"+. c #D5B54E", -"@. c #EFDB85", -"#. c #DEC051", -"$. c #ECC839", -"%. c #FFD71E", -"&. c #FFDB3A", -"*. c #F1D45F", -"=. c #DFC675", -"-. c #ECE1B0", -";. c #E1CE90", -">. c #B58B1B", -",. c #C9A532", -"'. c #DCB837", -"). c #D9AE14", -"!. c #CBA111", -"~. c #F0C71D", -"{. c #F8D748", -"]. c #CAA634", -"^. c #DDC15C", -"/. c #DEC467", -"(. c #C6A43F", -"_. c #C9A32B", -":. c #CCA524", -"<. c #AE840F", -"[. c #C39A14", -"}. c #D6AE24", -"|. c #D5B133", -"1. c #B48B18", -"2. c #AF8717", -"3. c #CCAB43", -"4. c #CBA83D", -"5. c #C9A120", -"6. c #CFAA2C", -"7. c #AC8210", -" . . . . ", -" . + @ # $ . ", -" . % & * = . ", -" . - ; > , . ", -" . ' ) ! ~ . ", -" { ] . ^ / ( _ . : < ", -" [ } | . 1 / ( 2 . 3 4 5 ", -" 6 7 8 9 . 1 / ( 0 . a b c d ", -" e f g h . i j ( k . l m n o ", -" p q r s t . . . . u v w x y ", -" z A B C D E F G H I J K L M ", -" N O P Q R S T U V W X Y Z ` ", -" ...+.@.#.$.%.&.*.=.-.;.>. ", -" ,.'.).!.~.{.].^./.(. ", -" _.:.<.[.}.|.1.2.3.4. ", -" 5.6.7. "}; diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/README.txt lazarus-1.6+dfsg/components/editortoolbar/images/README.txt --- lazarus-1.4.4+dfsg/components/editortoolbar/images/README.txt 2014-09-11 21:44:11.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/README.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -This directory contains all images needed by the Editor Toolbar package. -Images are stored in FPC resource files (.res). Each icon is currently stored -in xpm format but also png can be used. - -toolbar.res - All the icons used in Editor Toolbar package. - - -How to update the image resources: - -Creating a lazarus resource can easily be done by the lazres program. -If you have not yet compiled lazres, go to the tools directory and type make. - - -[ toolbar.res ] - -cd <packagedir>/images/ -<lazarusdir>/tools/lazres ../toolbar.res @toolbar.txt - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/images/toolbar.txt lazarus-1.6+dfsg/components/editortoolbar/images/toolbar.txt --- lazarus-1.4.4+dfsg/components/editortoolbar/images/toolbar.txt 2014-09-11 16:22:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/images/toolbar.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -arrowdown_blue16.xpm -arrowleft_blue16.xpm -arrowright_blue16.xpm -arrowup_blue16.xpm -execute16.xpm -jumpto16.xpm -preferences16.xpm -menu_divider16.xpm diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/jumpto_impl.pas lazarus-1.6+dfsg/components/editortoolbar/jumpto_impl.pas --- lazarus-1.4.4+dfsg/components/editortoolbar/jumpto_impl.pas 2014-10-03 20:08:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/jumpto_impl.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ -{ - Copyright (C) 2007 Graeme Geldenhuys (graemeg@gmail.com) - - This library is free software; you can redistribute it and/or modify it - under the terms of the GNU Library General Public License as published by - the Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License - for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -} - -unit jumpto_impl; - -{$mode objfpc}{$H+} - -interface - -uses - Classes - ,CodeToolManager - ,CodeTree - ; - - -type - TJumpType = - ( jmpIntf, jmpIntfUses, jmpImpl, jmpImplUses, jmpInit ); - - -const - cJumpNames: array[TJumpType] of string = - ('Interface', 'Interface uses', 'Implementation', 'Implementation uses', - 'Initialization'); - -type - TJumpHandler = class(TComponent) - private - function JumpToNode(Tool: TCodeTool; Node: TCodeTreeNode): Boolean; - public - procedure DoJump(Sender: TObject); - procedure DoJumpToImplementation(Sender: TObject); - end; - - - -implementation - -uses - SrcEditorIntf - ,LazIDEIntf - ,Controls - ,CodeCache - ,Dialogs - ,SysUtils - ,editortoolbar_str - ; - -{ TJumpHandler } - -function TJumpHandler.JumpToNode(Tool: TCodeTool; Node: TCodeTreeNode): Boolean; -var - NewTopLine: Integer; - NewCodePos: TCodeXYPosition; - SrcEditor: TSourceEditorInterface; -begin - NewTopLine := 0; - NewCodePos := CleanCodeXYPosition; - Result := Tool.CleanPosToCaretAndTopLine(Node.StartPos, NewCodePos,NewTopLine); - if Result then - Result := LazarusIDE.DoOpenFileAndJumpToPos(NewCodePos.Code.Filename - ,Point(NewCodePos.X,NewCodePos.Y), NewTopLine, -1,-1 - ,[ofRegularFile,ofUseCache]) = mrOk; - if Result then - begin - SrcEditor := SourceEditorManagerIntf.ActiveEditor; - if Assigned(SrcEditor) then - SrcEditor.EditorControl.SetFocus; - end; -end; - -procedure TJumpHandler.DoJump(Sender: TObject); -var - SrcEditor: TSourceEditorInterface; - CodeBuffer: TCodeBuffer; - Node: TCodeTreeNode; - Tool: TCodeTool; - T: TJumpType; -begin - If (Sender <> nil) and (Sender is TComponent) then - T := TJumpType(TComponent(Sender).Tag); - - if not LazarusIDE.BeginCodeTools then - Exit; //==> - - SrcEditor := SourceEditorManagerIntf.ActiveEditor; - if not Assigned(SrcEditor) then - Exit; //==> - - CodeBuffer := SrcEditor.CodeToolsBuffer as TCodeBuffer; - if CodeToolBoss.Explore(CodeBuffer,Tool,false,false) then - begin - case T of - jmpIntf : Node := Tool.FindInterfaceNode; - jmpIntfUses : Node := Tool.FindMainUsesSection; - jmpImpl : Node := Tool.FindImplementationNode; - jmpImplUses : Node := Tool.FindImplementationUsesSection; - jmpInit : Node := Tool.FindInitializationNode; - end; - if (Node <> nil) then - JumpToNode(Tool, Node) - else - ShowMessage(Format(SErrCouldNotFind, [cJumpNames[T]])); - end - else - LazarusIDE.DoJumpToCodeToolBossError; -end; - -procedure TJumpHandler.DoJumpToImplementation(Sender: TObject); -begin - if (Sender <> nil) and (Sender is TComponent) then - TComponent(Sender).Tag := Ord(jmpImpl); - DoJump(Sender); -end; - - -end. - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/jumpto.pas lazarus-1.6+dfsg/components/editortoolbar/jumpto.pas --- lazarus-1.4.4+dfsg/components/editortoolbar/jumpto.pas 2007-04-05 17:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/jumpto.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -{ This file was automatically created by Lazarus. Do not edit! -This source is only used to compile and install the package. - } - -unit jumpto; - -interface - -uses - jumpto_impl, LazarusPackageIntf; - -implementation - -procedure Register; -begin - RegisterUnit('jumpto_impl', @jumpto_impl.Register); -end; - -initialization - RegisterPackage('jumpto', @Register); -end. diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.cs.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.cs.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.cs.po 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.cs.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,180 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2013-03-09 21:25+0100\n" -"Last-Translator: Václav Valíček <Valicek1994@gmail.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.5\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Přidat oddělovač" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Přidat vybranou položku na panel" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Zrušit" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Nastavení panelu nástrojů" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "[Editor] Konfigurace panelu nástrojů" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "" - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Skok na" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Dostupné položky menu:" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Posunout položku dolů" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Posunout vybranou nahoru" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "OK" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Odstranit položku z panelu nástrojů" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Aktivní položky:" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Nemohu najít <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.de.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.de.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.de.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.de.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,180 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Swen Heinig <swen@heinig.email>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Trenner hinzufügen" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Gewähltes Element zur Toolbar hinzufügen" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Abbrechen" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Toolbar konfigurieren" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Editor-Toolbar-Konfiguration" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "" - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Springe zu" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Verfügbare Menüelemente" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Gewähltes Toolbar-Element nach unten bewegen" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Gewähltes Toolbar-Element nach oben bewegen" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "OK" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Gewähltes Element aus der Toolbar entfernen" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Toolbar-Elemente" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Kann <%s> nicht finden" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.es.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.es.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.es.po 2015-04-28 21:42:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.es.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: editortoolbar\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Lucas Martín <codedeep@hotmail.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Añadir divisor" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Añadir elemento seleccionado a la barra de herramientas" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "Todo" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "Al fondo" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Cancelar" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "Limpiar selección" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "Explorador de código" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "Plantillas de código" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Configurar la barra de herramientas" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "Personalizado" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "Depurar" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "Diseño" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "Diseñador" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "Barra de herramientas de edición" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Editor de la configuración de Barra de herramientas" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "Ayuda" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "El botón \"Añadir\" inserta un elemento de Menú antes del elemento seleccionado de la Barra de Herramientas." - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "Si no se selecciona algo, el elemento se añadirá al final de la Barra de Herramientas." - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "Puedes reordenar los elementos de la Barra de Herramientas con los botones \"Mover Arriba\" y \"Mover Abajo\"" - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "Sugerencia: para añadir un elemento al final, utilizar \"Limpiar selección\"" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "Puedes añadir aquí tus comandos favoritos" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "HTML" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "Menú Principal del IDE" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Saltar a" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "Izquierda" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Elementos de Menú Disponibles" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "Ver" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "Mensajes" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Bajar el elemento seleccionado en la Barra de Herramientas" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Subir elemento seleccionado en la Barra de Herramientas" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "OK" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "Editor de Paquete" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "Editor de Ficheros de Paquete" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "Posición" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "Perfil" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Eliminar el elemento seleccionado de la Barra de Herramientas" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "Derecha" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "Editor de Fuente" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "Tabular Fuente" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Elementos de la Barra de Herramientas" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "Tope" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "No se pudo encontrar <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.fr.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.fr.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.fr.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.fr.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,181 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: 2015-04-14 07:54+0100\n" -"PO-Revision-Date: 2015-04-15 16:34+0100\n" -"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"X-Generator: Poedit 1.7.5\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Ajouter un diviseur" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Ajouter l'élément sélectionné à la barre d'outils" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "Tout" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "Bas" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Annuler" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "Mettre à zéro la sélection" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "Explorateur de code" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "Modèles de code" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Configurer la barre d'outils" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "Personnalisé" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "Déboguer" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "Conception" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "Concepteur" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "Barre d'outils d'éditeur" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Configuration de la barre d'outils d'éditeur" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "Aide" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "Le bouton \"Ajouter\" insère un élément de menu avant l'élément sélectionné de la barre d'outils." - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "Si rien n'est sélectionné, l'élément sera ajouté à la fin de la barre d'outils." - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "Vous pouvez modifier l'arrangement des éléments de la barre d'outils avec les boutons \"Déplacer vers le haut\" et \"Déplacer vers le bas\"." - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "Conseil : afin d'ajouter un élément à la fin, utilisez \"Mettre à zéro la sélection\"" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "Vous pouvez ajouter ici vos commandes préférées" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "HTML" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "Menu principal de l'EDI" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Aller à" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "Gauche" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Éléments de menu disponibles" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "Afficher" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "Messages" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Déplacer l'élément choisi de la barre d'outils vers le bas" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Déplacer l'élément choisi de la barre d'outils vers le haut" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "Ok" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "Éditeur de paquet" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "Fichiers de l'éditeur de paquet" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "Position" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "Profil" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Retirer l'élément sélectionné de la barre d'outils" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "Droite" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "Éditeur de source" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "Onglet Source" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Éléments de la barre d'outils" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "Haut" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Impossible de trouver <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.hu.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.hu.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.hu.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.hu.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,181 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Péter Gábor <ptrg@freemail.hu>\n" -"Language-Team: Magyar (Hungarian)\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Elválasztó hozzáadása" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "A kijelölt elem hozzáadása az eszköztárhoz" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "Mind" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "Alulra" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Mégsem" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "Kijelölés megszüntetése" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "Kódböngésző" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "Kódsablonok" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Eszköztár beállítása" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "Egyéni" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "Hibakeresés" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "Tervezés" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "Tervező" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "Szerkesztő eszköztár" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Szerkesztő eszköztár beállítása" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "Súgó" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "A \"Hozzáadás\" gomb beszúrja a menüelemet az eszköztár kijelölt eleme elé." - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "Ha semmi sincs kijelölve akkor az elem az eszköztár végéhez lesz adva." - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "Az eszköztár elemei átrendezhetők a \"Mozgatás felfelé\" és a \"Mozgatás lefelé\" gombokkal." - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "Tipp: a \"Kijelölés megszüntetése\" után lehet egy elemet a lista végéhez adni" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "Itt adhatja hozzá a kedvenc parancsait" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "HTML" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "IDE Főmenü" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Ugrás ide:" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "Balra" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Elérhető menüelemek" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "Nézet" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "Üzenetek" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "A kijelöl eszköztárelem mozgatása lefelé" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "A kijelöl eszköztárelem mozgatása felfelé" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "OK" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "Csomagszerkesztő" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "Csomagszerkesztő fájljai" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "Elhelyezés" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "Profil" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "A kijelölt elem eltávolítása az eszköztárról" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "Jobbra" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "Forráskódszerkesztő" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "Forrás-fül" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Eszköztár elemek" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "Felülre" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Nem található: <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.it.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.it.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.it.po 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.it.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,182 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2014-10-03 14:11+0100\n" -"Last-Translator: Giuliano Colla <giuliano.colla@fastwebnet.it>\n" -"Language-Team: PincoPallo Team\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Virtaal 0.5.1\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Aggiungi divisore" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Aggiungere alla barra degli strumenti" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "Tutti" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "Basso" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Annulla" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "Annulla selezione" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "Esplora codice" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "Modelli di codice" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Configura la toolbar" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "Personale" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "Debug" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "Progetto" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "Progettazione" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "Barra strumenti dell'editor" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Editor di configurazione toolbar" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "Il bottone \"Aggiungi\" inserisce una voce prima di quella selezionata nella Barra Strumenti." - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "Se nessuna è selezionata, la voce sarà aggiunta alla fine." - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "Potete riposizionare le voci della barra con i bottoni \"Sposta su\" e \"Sposta giù\"." - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "Consiglio: per aggiungere una voce in fondo, usa \"Annulla selezione\"" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "Potete aggiungere qui i vostri comandi preferiti" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "HTML" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "Menu principale" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Salta a" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "Sinistra" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Voci disponibili" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "Visualizza" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "Messaggi" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Spostare in giù" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Spostare in su" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "OK" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "Editor Pacchetti" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "File di editor pacchetti" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "Posizione" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "Profilo" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Rimuovere dalla barra degli strumenti" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "Destra" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "Editor sorgente" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "Linguette editor sorgente" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Contenuto della barra" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "Alto" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Impossibile trovare <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.lt.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.lt.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.lt.po 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.lt.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,181 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Valdas Jankunas <zmuogs@gmail.com>\n" -"PO-Revision-Date: 2012-08-06 12:46+0300\n" -"Project-Id-Version: \n" -"Language-Team: Lithuanian <kde-i18n-lt@kde.org>\n" -"Language: lt\n" -"Content-Transfer-Encoding: 8bit\n" -"MIME-Version: 1.0\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Lokalize 1.5\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Pridėti skyriklį" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Pažymėtą elementą įdėti į įrankių juostą" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Atsisakyti" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Derinti įrankių juostą" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Rengyklės įrankių juostos sąranka" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "" - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Šokti į" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Esami meniu elementai" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Pažymėtą įrankių juostos elementą perkelti žemyn" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Pažymėtą įrankių juostos elementą perkelti aukštyn" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "Tinka" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Iš įrankių juostos pašalinti pažymėtą elementą" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Įrankių juostos elementai" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Nepavyko rasti <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.po 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,171 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "" - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.pt_BR.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.pt_BR.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.pt_BR.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.pt_BR.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Marcelo B Paula\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Adicionar Divisor" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Adicionar item selecionado à barra de ferramentas" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Cancelar" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Configurar barra de ferramentas" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Configuração do editor da barra de ferramentas" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "" - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Saltar para" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Itens disponíveis de menu" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Mover item selecionado da barra de ferramentas abaixo" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Mover item selecionado da barra de ferramentas acima" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "OK" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Excluir item selecionado da barra de ferramentas" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Itens da barra ferramentas" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Impossível localizar <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.ru.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.ru.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.ru.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.ru.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Добавить разделитель" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "Добавить выбранный элемент на панель" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "Все" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "Снизу" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Отмена" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "Снять выбор" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "Обозреватель кода" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "Шаблоны кода" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Настроить инструментальную панель" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "Пользовательский" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "Отладка" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "Разработка" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "Дизайнер" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "Инструментальная панель редактора" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Настройка инструментальной панели редактора" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "Справка" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "Кнопка \"Добавить\" вставляет элемент из меню перед выбранным элементом инструментальной панели." - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "Если ничего не было выбрано, добавление будет произведено в конец панели." - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "Элементы панели можно упорядочивать при помощи кнопок \"Переместить вверх\" и \"Переместить вниз\"." - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "Подсказка: чтобы добавить элемент в конец, воспользуйтесь кнопкой \"Снять выбор\"" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "Сюда можно добавить часто используемые команды" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "HTML" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "Главное меню IDE" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Перейти к ..." - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "Слева" - -#: editortoolbar_str.rsmenutree -msgid "Available Menu Items" -msgstr "Доступные элементы меню" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "Вид" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "Сообщения" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "Переместить выбранный элемент вниз" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "Переместить выбранный элемент вверх" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "ОК" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "Редактор пакетов" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "Файлы в редакторе пакетов" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "Положение" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "Профиль" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "Удалить выбранный элемент с панели" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "Справа" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "Редактор исходного кода" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "Вкладка редактора исходного кода" - -#: editortoolbar_str.rstoolbar -msgid "Toolbar Items" -msgstr "Элементы панели" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "Сверху" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Невозможно найти <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.uk.po lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.uk.po --- lazarus-1.4.4+dfsg/components/editortoolbar/languages/editortoolbar_str.uk.po 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/languages/editortoolbar_str.uk.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,183 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Igor Paliychuk <mansonigor@gmail.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -#: editortoolbar_str.rsadddivider -msgid "Add Divider" -msgstr "Додати Роздільник" - -#: editortoolbar_str.rsaddselected -msgid "Add selected item to toolbar" -msgstr "" - -#: editortoolbar_str.rsall -msgid "All" -msgstr "" - -#: editortoolbar_str.rsbottom -msgid "Bottom" -msgstr "" - -#: editortoolbar_str.rscancel -msgid "Cancel" -msgstr "Скасувати" - -#: editortoolbar_str.rsclearselection -msgid "Clear selection" -msgstr "" - -#: editortoolbar_str.rscodeexplorer -msgid "Code Explorer" -msgstr "" - -#: editortoolbar_str.rscodetemplates -msgid "Code Templates" -msgstr "" - -#: editortoolbar_str.rsconfiguretoo -msgid "Configure Toolbar" -msgstr "Налаштувати Панель Інструментів" - -#: editortoolbar_str.rscustom -msgid "Custom" -msgstr "" - -#: editortoolbar_str.rsdebug -msgid "Debug" -msgstr "" - -#: editortoolbar_str.rsdesign -msgid "Design" -msgstr "" - -#: editortoolbar_str.rsdesigner -msgid "Designer" -msgstr "" - -#: editortoolbar_str.rseditortoolbar -msgid "Editor ToolBar" -msgstr "" - -#: editortoolbar_str.rseditortoolbarconfigform -msgid "Editor Toolbar Configuration" -msgstr "Налаштування Панелі Інструментів Редактора" - -#: editortoolbar_str.rshelp -msgid "Help" -msgstr "" - -#: editortoolbar_str.rshelp1 -msgid "The \"Add\" button inserts a Menu Item before the selected Item of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp2 -msgid "If none is selected, the Item will be appended at the end of the Toolbar." -msgstr "" - -#: editortoolbar_str.rshelp3 -msgid "You may rearrange Toolbar Items with \"Move Up\" and \"Move Down\" buttons." -msgstr "" - -#: editortoolbar_str.rshelp4 -msgid "Hint: to append an Item at the end, use \"Clear selection\"" -msgstr "" - -#: editortoolbar_str.rshint -msgid "You may add here your favorite commands" -msgstr "" - -#: editortoolbar_str.rshtml -msgid "HTML" -msgstr "" - -#: editortoolbar_str.rsidemainmenu -msgid "IDE Main Menu" -msgstr "" - -#: editortoolbar_str.rsjumpto -msgid "Jump To" -msgstr "Перейти До" - -#: editortoolbar_str.rsleft -msgid "Left" -msgstr "" - -#: editortoolbar_str.rsmenutree -#, fuzzy -#| msgid "Menu Tree" -msgid "Available Menu Items" -msgstr "Дерево Меню" - -#: editortoolbar_str.rsmenuview -msgid "View" -msgstr "" - -#: editortoolbar_str.rsmessages -msgid "Messages" -msgstr "" - -#: editortoolbar_str.rsmoveselecteddown -msgid "Move selected toolbar item down" -msgstr "" - -#: editortoolbar_str.rsmoveselectedup -msgid "Move selected toolbar item up" -msgstr "" - -#: editortoolbar_str.rsok -msgid "OK" -msgstr "Гаразд" - -#: editortoolbar_str.rspackageeditor -msgid "Package Editor" -msgstr "" - -#: editortoolbar_str.rspackageeditorfiles -msgid "Package Editor Files" -msgstr "" - -#: editortoolbar_str.rsposition -msgid "Position" -msgstr "" - -#: editortoolbar_str.rsprofile -msgid "Profile" -msgstr "" - -#: editortoolbar_str.rsremoveselected -msgid "Remove selected item from toolbar" -msgstr "" - -#: editortoolbar_str.rsright -msgid "Right" -msgstr "" - -#: editortoolbar_str.rssourceeditor -msgid "Source Editor" -msgstr "" - -#: editortoolbar_str.rssourcetab -msgid "Source Tab" -msgstr "" - -#: editortoolbar_str.rstoolbar -#, fuzzy -#| msgid "Toolbar" -msgid "Toolbar Items" -msgstr "Панель Інструментів" - -#: editortoolbar_str.rstop -msgid "Top" -msgstr "" - -#: editortoolbar_str.serrcouldnotfind -msgid "Could not find <%s>" -msgstr "Неможливо знайти <%s>" - diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/Makefile.compiled lazarus-1.6+dfsg/components/editortoolbar/Makefile.compiled --- lazarus-1.4.4+dfsg/components/editortoolbar/Makefile.compiled 2014-11-18 11:03:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/Makefile.compiled 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CONFIG> - <Makefile Value="2"/> - <Params Value=" -Fu../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);../codetools/units/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);../lazcontrols/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);../ideintf/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);. -MObjFPC -Scgi -O1 -g -gl -l -vewnhibq -dLCL -dLCL$(LCL_PLATFORM) editortoolbar.pas"/> -</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/Makefile.fpc lazarus-1.6+dfsg/components/editortoolbar/Makefile.fpc --- lazarus-1.4.4+dfsg/components/editortoolbar/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/Makefile.fpc 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -# File generated automatically by Lazarus Package Manager -# -# Makefile.fpc for editortoolbar 0.8.2 -# -# This file was generated on 3-10-15 - -[package] -name=editortoolbar -version=0.8.2 - -[compiler] -unittargetdir=lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) -unitdir=../../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) ../codetools/units/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) ../lazcontrols/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) ../ideintf/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) . -options= -MObjFPC -Scgi -O1 -g -gl -l -vewnhibq -dLCL -dLCL$(LCL_PLATFORM) $(DBG_OPTIONS) - -[target] -units=editortoolbar.pas - -[clean] -files=$(wildcard $(COMPILER_UNITTARGETDIR)/*$(OEXT)) \ - $(wildcard $(COMPILER_UNITTARGETDIR)/*$(PPUEXT)) \ - $(wildcard $(COMPILER_UNITTARGETDIR)/*$(RSTEXT)) \ - $(wildcard $(COMPILER_UNITTARGETDIR)/*.lfm) \ - $(wildcard $(COMPILER_UNITTARGETDIR)/*.res) \ - $(wildcard $(COMPILER_UNITTARGETDIR)/*.compiled) \ - $(wildcard *$(OEXT)) $(wildcard *$(PPUEXT)) $(wildcard *$(RSTEXT)) -[prerules] -# LCL Platform -ifndef LCL_PLATFORM -ifeq ($(OS_TARGET),win32) -LCL_PLATFORM=win32 -else -ifeq ($(OS_TARGET),win64) -LCL_PLATFORM=win32 -else -ifeq ($(OS_TARGET),darwin) -LCL_PLATFORM=carbon -else -LCL_PLATFORM=gtk2 -endif -endif -endif -endif -export LCL_PLATFORM - -DBG_OPTIONS= -ifeq ($(OS_TARGET),darwin) -DBG_OPTIONS=-gw -endif - -[rules] -.PHONY: cleartarget compiled all - -cleartarget: - -$(DEL) $(COMPILER_UNITTARGETDIR)/editortoolbar$(PPUEXT) - -compiled: - $(CPPROG) -f Makefile.compiled $(COMPILER_UNITTARGETDIR)/editortoolbar.compiled - -all: cleartarget $(COMPILER_UNITTARGETDIR) editortoolbar$(PPUEXT) compiled - -distclean: clean - ${DELTREE} lib/* Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/editortoolbar/toolbar.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/editortoolbar/toolbar.res differ diff -Nru lazarus-1.4.4+dfsg/components/editortoolbar/unit1.pas lazarus-1.6+dfsg/components/editortoolbar/unit1.pas --- lazarus-1.4.4+dfsg/components/editortoolbar/unit1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/editortoolbar/unit1.pas 2015-06-22 14:20:57.000000000 +0000 @@ -0,0 +1,16 @@ +unit Unit1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +{$Warning The package editortoolbar was removed. Its features are now part of the IDE. + You can safely uninstall the package.} + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/externhelp/externhelpfrm.pas lazarus-1.6+dfsg/components/externhelp/externhelpfrm.pas --- lazarus-1.4.4+dfsg/components/externhelp/externhelpfrm.pas 2013-09-27 12:27:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/externhelp/externhelpfrm.pas 2015-11-04 14:09:48.000000000 +0000 @@ -1496,6 +1496,7 @@ with FileListBox do begin Name:='FileListBox'; Align:=alClient; + BorderSpacing.Around:=6; Parent:=Self; end; @@ -1503,6 +1504,7 @@ with ButtonPanel1 do begin Name:='ButtonPanel1'; Align:=alBottom; + ShowBevel:=false; ShowButtons:=[pbOK,pbCancel]; OKButton.OnClick:=@ButtonPanel1OKButtonClick; OKButton.ModalResult:=mrNone; diff -Nru lazarus-1.4.4+dfsg/components/favorites/favorites_impl.pas lazarus-1.6+dfsg/components/favorites/favorites_impl.pas --- lazarus-1.4.4+dfsg/components/favorites/favorites_impl.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/favorites_impl.pas 2016-02-06 14:30:41.000000000 +0000 @@ -0,0 +1,282 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Ondrej Pokorny + + Abstract: + Adds favorite projects list into the drop-down menu of "Open" toolbar button. +} +unit favorites_impl; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, ToolBarIntf, IDEImagesIntf, Graphics, PackageIntf, + Menus, LazIDEIntf, ProjectIntf, Laz2_XMLCfg, IDEOptionsIntf, + IDECommands, ComCtrls, IDEMsgIntf, favoritesstr; + +type + TFavoritesHandler = class + private + FOldToolButtonClass: TIDEToolButtonClass; + FFavoriteProjects: TStringList; + FConfig: TXMLConfig; + + procedure AddToRecentProjectFiles(Sender: TObject; AFileName: string; + var AAllow: Boolean); + public + constructor Create; + destructor Destroy; override; + public + procedure LoadFromConfig; + procedure SaveToConfig; + function IsInFavoriteProjects(const aFileName: string): Boolean; + procedure AddToFavoriteProjects(const aFileName: string); + procedure RemoveFromFavoriteProjects(const aFileName: string); + end; + + TFileNameMenuItem = class(TMenuItem) + public + FileName: string; + end; + + TOpenFileFavToolButton = class(TIDEToolButton) + private + FOrigButton: TIDEToolButton; + FOrigOnPopup: TNotifyEvent; + + procedure RefreshMenu(Sender: TObject); + procedure mnuFavoriteFile(Sender: TObject); + procedure mnuAddRemoveActiveProject(Sender: TObject); + public + constructor Create(aOwner: TComponent); override; + procedure DoOnAdded; override; + end; + + +procedure Register; + +implementation + +var + FavHandler: TFavoritesHandler = nil; + +procedure Register; +begin + FavHandler := TFavoritesHandler.Create; +end; + +{ TOpenFileFavToolButton } + +constructor TOpenFileFavToolButton.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + if FavHandler.FOldToolButtonClass<>nil then + FOrigButton := FavHandler.FOldToolButtonClass.Create(Self) + else + FOrigButton := TIDEToolButton.Create(Self); +end; + +procedure TOpenFileFavToolButton.DoOnAdded; +begin + inherited DoOnAdded; + + FOrigButton.DoOnAdded; + + if FOrigButton.DropdownMenu<>nil then + DropdownMenu := FOrigButton.DropdownMenu + else + DropdownMenu := TPopupMenu.Create(Self); + + FOrigOnPopup := DropdownMenu.OnPopup; + DropdownMenu.OnPopup := @RefreshMenu; + Style := tbsDropDown; +end; + +procedure TOpenFileFavToolButton.mnuAddRemoveActiveProject(Sender: TObject); +var + xFileName: string; +begin + xFileName := (Sender as TFileNameMenuItem).FileName; + if FavHandler.IsInFavoriteProjects(xFileName) then + begin + FavHandler.RemoveFromFavoriteProjects(xFileName); + IDEEnvironmentOptions.AddToRecentProjectFiles(xFileName); + end else + begin + FavHandler.AddToFavoriteProjects(xFileName); + IDEEnvironmentOptions.RemoveFromRecentProjectFiles(xFileName); + end; +end; + +procedure TOpenFileFavToolButton.mnuFavoriteFile(Sender: TObject); +begin + LazarusIDE.DoOpenProjectFile((Sender as TFileNameMenuItem).FileName,[ofAddToRecent]); +end; + +procedure TOpenFileFavToolButton.RefreshMenu(Sender: TObject); +var + xM, xSep: TMenuItem; + xFavoriteFile: string; + xMI, xAddToFav: TFileNameMenuItem; + xProj: TLazProject; + xMIndex: Integer; +begin + if Assigned(FOrigOnPopup) then + FOrigOnPopup(Sender); + + xM := DropdownMenu.Items; + + xMIndex := 0; + for xFavoriteFile in FavHandler.FFavoriteProjects do + begin + xMI := TFileNameMenuItem.Create(Self); + xMI.FileName := xFavoriteFile; + xMI.Caption := xFavoriteFile; + xMI.OnClick := @mnuFavoriteFile; + xM.Insert(xMIndex, xMI); + Inc(xMIndex); + end; + + xProj := LazarusIDE.ActiveProject; + if (xProj<>nil) and FileExists(xProj.ProjectInfoFile) then + begin + xAddToFav := TFileNameMenuItem.Create(Self); + xAddToFav.FileName := xProj.ProjectInfoFile; + if not FavHandler.IsInFavoriteProjects(xProj.ProjectInfoFile) then + xAddToFav.Caption := Format(sAddToFavoritesS, [xProj.ProjectInfoFile]) + else + xAddToFav.Caption := Format(sRemoveFromFavoritesS, [xProj.ProjectInfoFile]); + xAddToFav.OnClick := @mnuAddRemoveActiveProject; + xM.Insert(xMIndex, xAddToFav); + Inc(xMIndex); + end; + + if xMIndex > 0 then + begin + xSep := TMenuItem.Create(Self); + xSep.Caption := '-'; + xM.Insert(xMIndex, xSep); + Inc(xMIndex); + end; +end; + +{ TFavoritesHandler } + +constructor TFavoritesHandler.Create; +var + I: Integer; + xToolButton: TIDEButtonCommand; +begin + IDEEnvironmentOptions.AddHandlerAddToRecentProjectFiles(@AddToRecentProjectFiles); + FFavoriteProjects := TStringList.Create; + FFavoriteProjects.Duplicates := dupIgnore; + FFavoriteProjects.CaseSensitive := False; + FFavoriteProjects.Sorted := True; + FConfig := TXMLConfig.Create(IncludeTrailingPathDelimiter(LazarusIDE.GetPrimaryConfigPath)+'favorites.xml'); + LoadFromConfig; + + xToolButton := IDEToolButtonCategories.FindItemByCommand(ecOpen); + FOldToolButtonClass := xToolButton.ToolButtonClass; + xToolButton.ToolButtonClass := TOpenFileFavToolButton; + + for I := 0 to FFavoriteProjects.Count-1 do + IDEEnvironmentOptions.RemoveFromRecentProjectFiles(FFavoriteProjects[I]); +end; + +procedure TFavoritesHandler.AddToFavoriteProjects(const aFileName: string); +begin + FFavoriteProjects.Add(aFileName); +end; + +procedure TFavoritesHandler.AddToRecentProjectFiles(Sender: TObject; + AFileName: string; var AAllow: Boolean); +begin + if IsInFavoriteProjects(AFileName) then + AAllow := False; +end; + +destructor TFavoritesHandler.Destroy; +begin + SaveToConfig; + FFavoriteProjects.Free; + FConfig.Free; + + inherited Destroy; +end; + +function TFavoritesHandler.IsInFavoriteProjects(const aFileName: string + ): Boolean; +var + I: Integer; +begin + for I := 0 to FFavoriteProjects.Count-1 do + if SameFileName(aFileName, FFavoriteProjects[I]) then + Exit(True); + Result := False; +end; + +procedure TFavoritesHandler.LoadFromConfig; +var + I: Integer; + xItem: string; +begin + I := 1; + while True do + begin + xItem := FConfig.GetValue('projects/item'+IntToStr(I), ''); + if xItem = '' then + Break; + if FileExists(xItem) then + FFavoriteProjects.Add(xItem); + Inc(I); + end; +end; + +procedure TFavoritesHandler.RemoveFromFavoriteProjects(const aFileName: string); +var + xIndex: Integer; +begin + xIndex := FFavoriteProjects.IndexOf(aFileName); + if xIndex >= 0 then + FFavoriteProjects.Delete(xIndex); +end; + +procedure TFavoritesHandler.SaveToConfig; +var + I: Integer; + xItem: string; +begin + I := 1; + FConfig.DeletePath('projects'); + for xItem in FFavoriteProjects do + begin + FConfig.SetValue('projects/item'+IntToStr(I), xItem); + Inc(I); + end; +end; + +finalization + FreeAndNil(FavHandler); +end. + diff -Nru lazarus-1.4.4+dfsg/components/favorites/favorites.lpk lazarus-1.6+dfsg/components/favorites/favorites.lpk --- lazarus-1.4.4+dfsg/components/favorites/favorites.lpk 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/favorites.lpk 2015-11-28 19:53:40.000000000 +0000 @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <Package Version="4"> + <PathDelim Value="\"/> + <Name Value="favorites"/> + <Type Value="DesignTime"/> + <Author Value="Ondrej Pokorny"/> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <SearchPaths> + <OtherUnitFiles Value="."/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <CodeGeneration> + <Checks> + <IOChecks Value="True"/> + <RangeChecks Value="True"/> + <OverflowChecks Value="True"/> + </Checks> + </CodeGeneration> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf2Set"/> + <UseHeaptrc Value="True"/> + <TrashVariables Value="True"/> + <UseExternalDbgSyms Value="True"/> + </Debugging> + </Linking> + </CompilerOptions> + <Description Value="Creates a third section (on the top) in the Open tool button drop-down menu where you can register your favorite projects."/> + <License Value="GPL-2"/> + <Version Minor="1" Release="1"/> + <Files Count="2"> + <Item1> + <Filename Value="favorites_impl.pas"/> + <HasRegisterProc Value="True"/> + <UnitName Value="favorites_impl"/> + </Item1> + <Item2> + <Filename Value="favoritesstr.pas"/> + <UnitName Value="favoritesstr"/> + </Item2> + </Files> + <i18n> + <EnableI18N Value="True"/> + <OutDir Value="languages"/> + <EnableI18NForLFM Value="True"/> + </i18n> + <RequiredPkgs Count="2"> + <Item1> + <PackageName Value="IDEIntf"/> + </Item1> + <Item2> + <PackageName Value="FCL"/> + </Item2> + </RequiredPkgs> + <UsageOptions> + <UnitPath Value="$(PkgOutDir)"/> + </UsageOptions> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + </Package> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/favorites/favorites.pas lazarus-1.6+dfsg/components/favorites/favorites.pas --- lazarus-1.4.4+dfsg/components/favorites/favorites.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/favorites.pas 2015-11-28 19:53:40.000000000 +0000 @@ -0,0 +1,21 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit favorites; + +interface + +uses + favorites_impl, favoritesstr, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('favorites_impl', @favorites_impl.Register); +end; + +initialization + RegisterPackage('favorites', @Register); +end. diff -Nru lazarus-1.4.4+dfsg/components/favorites/favoritesstr.pas lazarus-1.6+dfsg/components/favorites/favoritesstr.pas --- lazarus-1.4.4+dfsg/components/favorites/favoritesstr.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/favoritesstr.pas 2015-11-28 19:53:40.000000000 +0000 @@ -0,0 +1,13 @@ +unit favoritesstr; + +{$mode objfpc}{$H+} + +interface + +resourcestring + sAddToFavoritesS = 'Add to favorites: %s'; + sRemoveFromFavoritesS = 'Remove from favorites: %s'; + +implementation + +end. diff -Nru lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.de.po lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.de.po --- lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.de.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.de.po 2015-11-30 22:02:50.000000000 +0000 @@ -0,0 +1,22 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Swen Heinig <swen@heinig.email>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: de\n" + +#: favoritesstr.saddtofavoritess +msgid "Add to favorites: %s" +msgstr "Zu Favoriten hinzufügen: %s" + +#: favoritesstr.sremovefromfavoritess +msgid "Remove from favorites: %s" +msgstr "Aus Favoriten entfernen: %s" + diff -Nru lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.fr.po lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.fr.po --- lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -0,0 +1,23 @@ +msgid "" +msgstr "" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-12-18 09:27+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.6\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: favoritesstr.saddtofavoritess +msgid "Add to favorites: %s" +msgstr "Ajouter aux favoris :%s" + +#: favoritesstr.sremovefromfavoritess +msgid "Remove from favorites: %s" +msgstr "Retirer des favoris :%s" + diff -Nru lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.hu.po lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.hu.po --- lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.hu.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.hu.po 2015-11-28 19:53:40.000000000 +0000 @@ -0,0 +1,21 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Péter Gábor <ptrg@freemail.hu>\n" +"Language-Team: Magyar (Hungarian)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: favoritesstr.saddtofavoritess +msgid "Add to favorites: %s" +msgstr "Hozzáadás a kedvencekhez: %s" + +#: favoritesstr.sremovefromfavoritess +msgid "Remove from favorites: %s" +msgstr "Eltávolítás a kedvencek közül: %s" + diff -Nru lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.po lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.po --- lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.po 2015-11-28 19:53:40.000000000 +0000 @@ -0,0 +1,11 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: favoritesstr.saddtofavoritess +msgid "Add to favorites: %s" +msgstr "" + +#: favoritesstr.sremovefromfavoritess +msgid "Remove from favorites: %s" +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.ru.po lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.ru.po --- lazarus-1.4.4+dfsg/components/favorites/languages/favoritesstr.ru.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/languages/favoritesstr.ru.po 2015-11-30 22:02:50.000000000 +0000 @@ -0,0 +1,21 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" + +#: favoritesstr.saddtofavoritess +msgid "Add to favorites: %s" +msgstr "Добавить в избранное: %s" + +#: favoritesstr.sremovefromfavoritess +msgid "Remove from favorites: %s" +msgstr "Удалить из избранного: %s" + diff -Nru lazarus-1.4.4+dfsg/components/favorites/README.txt lazarus-1.6+dfsg/components/favorites/README.txt --- lazarus-1.4.4+dfsg/components/favorites/README.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/favorites/README.txt 2015-11-27 05:37:01.000000000 +0000 @@ -0,0 +1,6 @@ +IDE add-on for Favorites. +Adds favorite projects list into the drop-down menu of "Open" toolbar button. + +Author: Ondrej Pokorny + +Documentation: http://wiki.lazarus.freepascal.org/Favorites diff -Nru lazarus-1.4.4+dfsg/components/filebrowser/frmfilebrowser.pas lazarus-1.6+dfsg/components/filebrowser/frmfilebrowser.pas --- lazarus-1.4.4+dfsg/components/filebrowser/frmfilebrowser.pas 2013-09-28 15:57:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/filebrowser/frmfilebrowser.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, LCLType, Forms, Controls, Graphics, + Classes, SysUtils, FileUtil, LazFileUtils, LResources, LCLType, Forms, Controls, Graphics, Dialogs, EditBtn, FileCtrl, ComCtrls, StdCtrls, ExtCtrls; type diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/console/consoletestrunner.pas lazarus-1.6+dfsg/components/fpcunit/console/consoletestrunner.pas --- lazarus-1.4.4+dfsg/components/fpcunit/console/consoletestrunner.pas 2013-01-03 12:23:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/console/consoletestrunner.pas 2015-10-09 07:21:37.000000000 +0000 @@ -24,7 +24,7 @@ interface uses - custapp, Classes, SysUtils, FileUtil, + custapp, Classes, SysUtils, LazUTF8, fpcunit, testregistry, testutils, fpcunitreport, latextestreport, xmltestreport, plaintestreport, dom; @@ -249,10 +249,10 @@ begin if StyleSheet<>'' then begin Doc.StylesheetType := 'text/xsl'; - Doc.StylesheetHRef := StyleSheet; + Doc.StylesheetHRef := UTF8Decode(StyleSheet); end; n := Doc.CreateElement('Title'); - n.AppendChild(Doc.CreateTextNode(Title)); + n.AppendChild(Doc.CreateTextNode(UTF8Decode(Title))); Doc.FirstChild.AppendChild(n); end; diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/guitestrunner.lfm lazarus-1.6+dfsg/components/fpcunit/guitestrunner.lfm --- lazarus-1.4.4+dfsg/components/fpcunit/guitestrunner.lfm 2014-03-27 22:45:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/guitestrunner.lfm 2015-08-19 12:16:30.000000000 +0000 @@ -1,10 +1,10 @@ object GUITestRunner: TGUITestRunner - Left = 312 - Height = 590 + Left = 382 + Height = 663 Top = 123 Width = 575 Caption = 'FPCUnit - run unit tests' - ClientHeight = 590 + ClientHeight = 643 ClientWidth = 575 Constraints.MinHeight = 200 Constraints.MinWidth = 250 @@ -42,20 +42,20 @@ 00000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF } + Menu = MainMenu1 OnCreate = GUITestRunnerCreate + OnDestroy = FormDestroy OnShow = GUITestRunnerShow Position = poScreenCenter ShowHint = True - LCLVersion = '1.3' + LCLVersion = '1.5' object Panel1: TPanel Left = 0 - Height = 88 + Height = 80 Top = 0 Width = 575 Align = alTop - BevelInner = bvRaised - BevelOuter = bvNone - ClientHeight = 88 + ClientHeight = 80 ClientWidth = 575 Constraints.MinHeight = 50 Constraints.MinWidth = 450 @@ -65,301 +65,60 @@ TabStop = True object pbBar: TPaintBox AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = BtnRun AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Panel1 AnchorSideRight.Side = asrBottom Left = 7 - Height = 30 - Top = 47 + Height = 32 + Top = 40 Width = 561 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 OnPaint = pbBarPaint end - object BtnRun: TBitBtn - AnchorSideLeft.Control = Panel1 - AnchorSideTop.Control = Panel1 - Left = 7 - Height = 34 - Top = 7 - Width = 79 - Action = RunAction + object ToolBar1: TToolBar + Left = 1 + Height = 29 + Top = 1 + Width = 573 AutoSize = True - BorderSpacing.Around = 6 - Constraints.MaxHeight = 38 - Glyph.Data = { - 36090000424D3609000000000000360000002800000018000000180000000100 - 2000000000000009000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000FFFFFFFF000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFFFF0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FFFFFFFFFF0000000000000000000000000000 - 0000000000000000000000000000000000FFFFFFFFFF00000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF000000FFFFFFFFFF00000000000000000000 - 0000000000000000000000000000000000FF000000FFFFFFFFFF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FFA7A7A7FF000000FFFFFFFFFF000000000000 - 0000000000000000000000000000000000FFA7A7A7FF000000FFFFFFFFFF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF9D9FA5FFC6C6C7FF000000FFFFFFFFFF0000 - 0000000000000000000000000000000000FF9D9FA5FFC6C6C7FF000000FFFFFF - FFFF000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF9E9C9DFFB5B7BDFFD7D7DEFF000000FFFFFF - FFFF000000000000000000000000000000FF9E9C9DFFB5B7BDFFD7D7DEFF0000 - 00FFFFFFFFFF0000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF8C8E8FFFB5B7B5FFC7C6C7FFCED7D6FF0000 - 00FFFFFFFFFF0000000000000000000000FF8C8E8FFFB5B7B5FFC7C6C7FFCED7 - D6FF000000FFFFFFFFFF00000000000000000000000000000000000000000000 - 00000000000000000000000000FF8D8F8CFFA5ADADFFBDBDBDFFC6C7C7FFCECE - D6FF000000FFFFFFFFFF00000000000000FF8D8F8CFFA5ADADFFBDBDBDFFC6C7 - C7FFCECED6FF000000FFFFFFFFFF000000000000000000000000000000000000 - 00000000000000000000000000FF868C8DFFA5A5A5FFB5B7BDFFB7BDBFFFB7BF - BDFFBFC6C7FF000000FF737373FF000000FF868C8DFFA5A5A5FFB5B7BDFFB7BD - BFFFB7BFBDFFBFC6C7FF000000FFC6C6C6FF0000000000000000000000000000 - 00000000000000000000000000FF878586FF9EA5A5FFB5B7B5FFB7B5B7FFA5A5 - A5FF000000FF0000000000000000000000FF878586FF9EA5A5FFB5B7B5FFB7B5 - B7FFA5A5A5FF000000FF00000000000000000000000000000000000000000000 - 00000000000000000000000000FF848586FF9E9C9DFFADAFB5FF8D8F94FF0000 - 00FF000000000000000000000000000000FF848586FF9E9C9DFFADAFB5FF8D8F - 94FF000000FF0000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF7F7F7FFF969D9DFF7B7F7FFF000000FF0000 - 0000000000000000000000000000000000FF7F7F7FFF969D9DFF7B7F7FFF0000 - 00FF000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF7B7B7BFF6B6B6FFF000000FF000000000000 - 0000000000000000000000000000000000FF7B7B7BFF6B6B6FFF000000FF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF737373FF000000FF00000000000000000000 - 0000000000000000000000000000000000FF737373FF000000FF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF000000FF0000000000000000000000000000 - 0000000000000000000000000000000000FF000000FF00000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000FF000000000000000000000000000000000000 - 0000000000000000000000000000000000FF0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000 - } - ParentShowHint = False - ShowHint = True + ButtonHeight = 25 + ButtonWidth = 25 + Caption = 'ToolBar1' + EdgeBorders = [ebTop, ebBottom] + Images = MainImageList TabOrder = 0 - end - object BtnClose: TBitBtn - AnchorSideTop.Control = Panel1 - AnchorSideRight.Control = Panel1 - AnchorSideRight.Side = asrBottom - Left = 488 - Height = 34 - Top = 7 - Width = 80 - Action = ActCloseForm - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Around = 6 - Caption = '&Close' - Constraints.MaxHeight = 38 - Glyph.Data = { - 36090000424D3609000000000000360000002800000018000000180000000100 - 2000000000000009000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000 - 00000000000000000000000000000000000000000000000000FF8F9691FF3647 - 3BFF3C5442FF445E4AFF4A6751FF506F58FF53735BFF54745CFF54745CFF5474 - 5CFF54745CFF54745CFF54745CFF54745CFF000000FF00000000000000000000 - 00000000000000000000000000000000000000000000000000FFD8DADAFFBDBF - BFFF787D7AFF303C33FF324537FF3A5040FF415A47FF48634FFF4C6953FF4E6C - 56FF4E6C56FF4F6D57FF4F6D57FF4F6D57FF000000FF00000000000000000000 - 00000000000000000000000000000000000000000000000000FFEEF0F0FFE3E5 - E5FFC3C6C6FFABACACFF8A8B8BFF2F3932FF28372CFF324537FF3A503FFF4058 - 46FF445E4BFF47634EFF496550FF496550FF000000FF00000000000000000000 - 0000000000000000000000000000000000FF00000000000000FFEFF1F1FFE4E6 - E6FFD8DBDBFFCED0D0FFB7BABAFF9B9D9DFF767777FF303832FF1F2C23FF2D3E - 31FF364A3BFF3D5543FF425B48FF445E4AFF000000FF00000000000000000000 - 0000000000000000000000000000000000FF000000FF000000FFEFF1F1FFE4E6 - E6FFD8DBDBFFCED0D0FFC2C5C5FFB7B9B9FFACAEAEFF9B9D9DFF555656FF1E2A - 21FF28382CFF324537FF3A5040FF3E5543FF000000FF00000000000000000000 - 0000000000000000000000000000000000FF000050FF000000FFCBCDCDFFE4E6 - E6FFD8DBDBFFCED0D0FFC2C5C5FFB7B9B9FFB7B9B9FFB7B9B9FF626363FF1923 - 1BFF223025FF2D3E30FF344939FF384E3DFF000000FF00000000000000FF0000 - 00FF000000FF000000FF000000FF000000FF000072FF000058FF000000FFC3C5 - C5FFD8DBDBFFCED0D0FFC2C5C5FFB7B9B9FFB7B9B9FFB7B9B9FF626363FF1C26 - 1EFF243227FF2C3D30FF324537FF344839FF000000FF00000000000000FF4343 - 7CFF00006AFF00006AFF00006AFF00006AFF000072FF000099FF000058FF0000 - 00FFBBBDBDFFCED0D0FFC2C5C5FFB7B9B9FFB7B9B9FFB7B9B9FF626363FF202C - 23FF26352AFF2B3C30FF2E4033FF2E4033FF000000FF00000000000000FF8484 - CDFF000099FF000099FF000099FF000099FF000099FF000099FF000099FF0000 - 58FF000000FFB3B5B5FFC2C5C5FFB7B9B9FFB7B9B9FFB7B9B9FF626363FF1F2B - 22FF263429FF29392DFF2A3A2EFF2A3A2EFF000000FF00000000000000FF8484 - CDFF000099FF000099FF000099FF000099FF000099FF000099FF000099FF0000 - 99FF00004FFF000000FFABAEAEFFB7B9B9FFB7B9B9FFB7B9B9FF626363FF1B26 - 1DFF212E24FF243227FF253328FF253328FF000000FF00000000000000FF8484 - CDFF000099FF000099FF000099FF000099FF000099FF000099FF000099FF0000 - 99FF000099FF161670FF000000FFA5A6A6FF0C0C0CFFB7B9B9FF626363FF161E - 18FF1B261EFF1E2A21FF1F2B22FF1F2B22FF000000FF00000000000000FF92A3 - EFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF1E42 - DFFF5670E6FF000000FFB4B7B7FFB7B9B9FF5C5D5DFF0C0C0CFF626363FF1219 - 14FF172019FF19231CFF1A241DFF1A241DFF000000FF00000000000000FF92A3 - EFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF1E42DFFF5670 - E6FF000000FFBDBFBFFFC2C5C5FFB7B9B9FF5C5D5DFFB7B9B9FF626363FF0F15 - 10FF121914FF141C16FF151D17FF151D17FF000000FF00000000000000FFA1B0 - F0FF627BE8FF627BE8FF627BE8FF627BE8FF778DEBFF1E42DFFF667EE9FF0000 - 00FFC8CBCBFFCED0D0FFC2C5C5FFB7B9B9FFB7B9B9FFB7B9B9FF626363FF0B0F - 0CFF0D130FFF0E1410FF0F1511FF0F1511FF000000FF00000000000000FF0000 - 00FF000000FF000000FF000000FF000000FF627BE8FF5670E6FF000000FFD3D5 - D5FFD8DBDBFFCED0D0FFC2C5C5FFB7B9B9FFB7B9B9FFB7B9B9FF626363FF070A - 08FF090C0AFF090D0AFF0A0E0BFF0A0E0BFF000000FF00000000000000000000 - 0000000000000000000000000000000000FF6C83E9FF000000FFDCDEDEFFE4E6 - E6FFD7DADAFFCDCFCFFFC2C5C5FFB7B9B9FFB7B9B9FFB7B9B9FF626363FF0405 - 04FF040604FF050705FF050705FF050705FF000000FF00000000000000000000 - 0000000000000000000000000000000000FF000000FF000000FFEFF1F1FFE4E6 - E6FFD7DADAFFCDCFCFFFC1C4C4FFB7B9B9FFB7B9B9FFB7B9B9FF404141FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000 - 0000000000000000000000000000000000FF00000000000000FFEFF1F1FFE4E6 - E6FFD7DADAFFCDCFCFFFC1C4C4FFB7B9B9FFACAEAEFF8D8F8FFF262626FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000 - 00000000000000000000000000000000000000000000000000FFEFF1F1FFE4E6 - E6FFD7DADAFFCDCFCFFFC1C4C4FFA5A8A8FF747676FF747777FF1D1E1EFF0000 - 00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000 - 00000000000000000000000000000000000000000000000000FFD4D6D6FFBCBD - BDFFA4A8A8FF8F9292FF707372FF5E6161FF5E6161FF5E6161FF1F2020FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000 - 00000000000000000000000000000000000000000000000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 - 00FF000000FF000000FF000000FF000000FF000000FF00000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000 - } - ParentShowHint = False - ShowHint = True - TabOrder = 1 - end - object btnRunHighlighted: TBitBtn - AnchorSideLeft.Control = BtnRun - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Panel1 - Left = 92 - Height = 32 - Top = 7 - Width = 148 - Action = ActRunHighlightedTest - AutoSize = True - BorderSpacing.Around = 6 - Constraints.MaxHeight = 38 - Constraints.MaxWidth = 390 - Glyph.Data = { - C6070000424DC607000000000000360000002800000016000000160000000100 - 2000000000009007000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000005E6363FF6367 - 67FF000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000565B5BFFBDC6BFFF5F635EFF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000575B5BFFFFFFFFFFF7F7F7FF9FA5A5FF5F635EFF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000575B5BFFFFFFFFFFEFF7F7FFFFFFFFFFEFEFEFFF7B7F7FFF636763FF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000575B5BFFFFFF - FFFFEFEFEFFFEFF7F7FFFFFFFFFFFFFFFFFFDEDFDEFF636767FF676B67FF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000575B5BFFFFFFFFFFEFF7F7FFF7F7 - F7FFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFFF5B5E5EFF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000575B5BFFFFFFFFFFEFF7EFFFEFF7F7FFF7F7F7FFF7F7 - F7FFF7F7F7FFF7FFF7FFFFFFFFFFF7F7F7FF949796FF5E635FFF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000565B5BFFFFFFFFFFEFEFEFFFEFEFEFFFEFEFEFFFEFF7EFFFEFF7EFFFEFF7 - EFFFEFF7EFFFF7F7F7FFFFFFFFFFE7E7E7FF6F736FFF5F635FFF000000000000 - 0000000000000000000000000000000000000000000000000000565B5AFFFFFF - FFFFE7EFEFFFEFEFEFFFEFEFEFFFEFEFEFFFE7EFEFFFE7EFEFFFE7EFEFFFE7EF - E7FFE7EFE7FFF7F7F7FFFFFFFFFFBFC6C6FF575A5AFF00000000000000000000 - 000000000000000000000000000000000000565A5AFFFFFFFFFFEFF7EFFFEFF7 - EFFFEFF7EFFFEFF7EFFFEFF7EFFFEFF7EFFFEFEFEFFFE7EFEFFFEFF7EFFFFFFF - FFFFE7E7E7FF737777FF5B5E5FFF000000000000000000000000000000000000 - 00000000000000000000565A5AFFFFFFFFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEF - EFFFEFEFEFFFEFEFEFFFEFF7F7FFFFFFFFFFF7F7F7FF959496FF5B5E5BFF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000575A57FFFFFFFFFFE7EFEFFFE7EFEFFFE7EFEFFFE7EFEFFFEFEFEFFFF7FF - F7FFFFFFFFFFB7B7B7FF5A5E5BFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000575A57FFFFFF - FFFFE7EFEFFFE7EFEFFFE7EFEFFFF7F7F7FFFFFFFFFFCFD7CFFF5E6363FF5356 - 52FF000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000575A57FFFFFFFFFFE7EFEFFFF7F7 - F7FFFFFFFFFFE7E7E7FF737773FF575A5BFF0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000575A57FFFFFFFFFFFFFFFFFFF7F7F7FF949495FF5A5B - 5AFF000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000575A57FFF7FFF7FFB5B5B7FF5A5B5BFF4B4E4AFF00000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000575B57FF5B5F - 5FFF535656FF0000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000 - } - TabOrder = 2 + object ToolButton1: TToolButton + Left = 1 + Top = 2 + Action = RunAction + end + object ToolButton2: TToolButton + Left = 27 + Top = 2 + Action = ActRunHighlightedTest + Caption = 'Run selected' + end end end object Panel2: TPanel Left = 0 - Height = 502 - Top = 88 + Height = 563 + Top = 80 Width = 575 Align = alClient + BevelOuter = bvNone Caption = 'Panel2' - ClientHeight = 502 + ClientHeight = 563 ClientWidth = 575 FullRepaint = False TabOrder = 1 TabStop = True object PageControl1: TPageControl - Left = 1 - Height = 500 - Top = 1 - Width = 573 + Left = 0 + Height = 563 + Top = 0 + Width = 575 ActivePage = tsTestTree Align = alClient Constraints.MinHeight = 150 @@ -367,61 +126,80 @@ TabOrder = 0 object tsTestTree: TTabSheet Caption = 'Testcase tree' - ClientHeight = 474 - ClientWidth = 565 - object Splitter1: TSplitter - Cursor = crVSplit - Left = 0 - Height = 5 - Top = 336 - Width = 565 - Align = alBottom - ResizeAnchor = akBottom - end + ClientHeight = 535 + ClientWidth = 567 object TestTree: TTreeView - Left = 6 - Height = 324 - Top = 6 - Width = 553 + Left = 0 + Height = 323 + Top = 3 + Width = 567 Align = alClient - BorderSpacing.Around = 6 + BorderSpacing.Top = 3 BackgroundColor = clBtnFace Color = clBtnFace - DefaultItemHeight = 16 + DefaultItemHeight = 18 Images = TestTreeImageList - PopupMenu = PopupMenu3 + PopupMenu = PopupResults ReadOnly = True RightClickSelect = True ScrollBars = ssAutoBoth StateImages = ilNodeStates TabOrder = 0 + OnChange = TestTreeChange OnCreateNodeClass = TestTreeCreateNodeClass OnMouseDown = TestTreeMouseDown OnSelectionChanged = TestTreeSelectionChanged Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips] end - object Memo1: TMemo - Left = 6 - Height = 121 - Top = 347 - Width = 553 + object Splitter1: TSplitter + Cursor = crVSplit + Left = 0 + Height = 5 + Top = 326 + Width = 567 Align = alBottom - BorderSpacing.Around = 6 - PopupMenu = PopupMenu2 + ResizeAnchor = akBottom + end + object MemoDetails: TMemo + Left = 0 + Height = 97 + Top = 438 + Width = 567 + Align = alBottom + PopupMenu = PopupDetails ReadOnly = True ScrollBars = ssAutoVertical TabOrder = 1 end + object Splitter2: TSplitter + Cursor = crVSplit + Left = 0 + Height = 5 + Top = 433 + Width = 567 + Align = alBottom + ResizeAnchor = akBottom + end + object MemoLog: TMemo + Left = 0 + Height = 102 + Top = 331 + Width = 567 + Align = alBottom + ReadOnly = True + ScrollBars = ssAutoBoth + TabOrder = 4 + end end object tsResultsXML: TTabSheet Caption = 'Results XML' - ClientHeight = 497 - ClientWidth = 565 + ClientHeight = 529 + ClientWidth = 571 inline XMLSynEdit: TSynEdit Left = 6 - Height = 451 - Top = 40 - Width = 553 + Height = 517 + Top = 6 + Width = 559 Align = alClient BorderSpacing.Around = 6 Font.CharSet = ANSI_CHARSET @@ -432,7 +210,7 @@ Font.Quality = fqNonAntialiased ParentColor = False ParentFont = False - PopupMenu = PopupMenu1 + PopupMenu = PopupTree TabOrder = 0 BookMarkOptions.Xoffset = -18 Gutter.Visible = False @@ -851,7 +629,6 @@ end> VisibleSpecialChars = [vscSpace, vscTabAtLast] ReadOnly = True - SelectedColor.FrameEdges = sfeAround SelectedColor.BackPriority = 50 SelectedColor.ForePriority = 50 SelectedColor.FramePriority = 50 @@ -859,23 +636,17 @@ SelectedColor.ItalicPriority = 50 SelectedColor.UnderlinePriority = 50 SelectedColor.StrikeOutPriority = 50 - IncrementColor.FrameEdges = sfeAround - HighlightAllColor.FrameEdges = sfeAround BracketHighlightStyle = sbhsBoth BracketMatchColor.Background = clNone BracketMatchColor.Foreground = clNone - BracketMatchColor.FrameEdges = sfeAround BracketMatchColor.Style = [fsBold] FoldedCodeColor.Background = clNone FoldedCodeColor.Foreground = clGray FoldedCodeColor.FrameColor = clGray - FoldedCodeColor.FrameEdges = sfeAround MouseLinkColor.Background = clNone MouseLinkColor.Foreground = clBlue - MouseLinkColor.FrameEdges = sfeAround LineHighlightColor.Background = clNone LineHighlightColor.Foreground = clNone - LineHighlightColor.FrameEdges = sfeAround inline TSynGutterPartList object TSynGutterMarks Width = 24 @@ -886,7 +657,6 @@ MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone - MarkupInfo.FrameEdges = sfeAround DigitCount = 2 ShowOnlyLineNumbersMultiplesOf = 1 ZeroStart = False @@ -903,7 +673,6 @@ MouseActions = <> MarkupInfo.Background = clWhite MarkupInfo.Foreground = clGray - MarkupInfo.FrameEdges = sfeAround end object TSynGutterCodeFolding MouseActions = < @@ -934,7 +703,6 @@ end> MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray - MarkupInfo.FrameEdges = sfeAround MouseActionsExpanded = < item ClickCount = ccAny @@ -959,44 +727,12 @@ end end end - object XMLToolBar: TToolBar - Left = 0 - Height = 34 - Top = 0 - Width = 565 - ButtonHeight = 30 - ButtonWidth = 30 - Caption = 'ToolBar' - Images = ResultsXMLImageList - TabOrder = 1 - object CopyXMLToolButton: TToolButton - Left = 1 - Top = 2 - Caption = 'CopyXMLToolButton' - ImageIndex = 0 - OnClick = actCopyExecute - end - object CutXMLToolButton: TToolButton - Left = 31 - Top = 2 - Caption = 'CutXMLToolButton' - ImageIndex = 1 - OnClick = actCutExecute - end - object SaveAsToolButton: TToolButton - Left = 61 - Top = 2 - Caption = 'SaveAsToolButton' - ImageIndex = 2 - OnClick = SaveAsToolButtonClick - end - end end end end object TestTreeImageList: TImageList - left = 368 - top = 176 + left = 192 + top = 296 Bitmap = { 4C690E0000001000000010000000000000000000000000000000000000000000 00000F4202FF344819FF4C532EFF4D5330FF3C421BFF292B03FF000000000000 @@ -1449,28 +1185,13 @@ 0000000000000000000000000000 } end - object ActionList1: TActionList - Images = ResultsXMLImageList - left = 168 - top = 240 - object actCopy: TAction - Category = 'edit' - Hint = 'Copy results to clipboard' - OnExecute = actCopyExecute - end - object actCut: TAction - Category = 'edit' - ImageIndex = 1 - OnExecute = actCutExecute - end - end - object ResultsXMLImageList: TImageList + object MainImageList: TImageList Height = 22 Width = 22 - left = 80 - top = 304 + left = 264 + top = 184 Bitmap = { - 4C690300000016000000160000008B908DFF898E8CFF898E8CFF898E8CFF898E + 4C690600000016000000160000008B908DFF898E8CFF898E8CFF898E8CFF898E 8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E 8CFF898E8CFF8B908DFF00000000000000000000000000000000000000000000 000000000000858A88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -1591,76 +1312,257 @@ 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000A6D7FDFF447FC8FF263E5BFF1B1B1BFF3F3F - 3FFF404040FF404040FF404040FF404040FF404040FF404040FF404040FF1C1C - 1CFF1C1C1CFF0000000000000000000000000000000000000000000000000000 - 0000000000000478EAFF4AA9FAFF6FB3EEFF6B9DD0FF729ACCFFC3D0DEFFF4F7 - FAFFF2F6FBFFEEF4FAFFEAF1F9FFE6EEF8FFE2ECF7FF404040FF777777FF1C1C - 1CFF000000000000000000000000000000000000000000000000000000000000 - 00FF035CB6FF0475E1FF309AF8FF7FC1F5FF5F97D2FF6187A1FF989E6EFFA4A4 - 68FFA5A569FFB6BBABFFE0EAF6FF404040FF737373FF1C1C1CFF000000000000 - 00000000000000000000000000000000000000000000000000000B0E10FF0618 - 29FF023569FF0C7BE8FF2F84ECFF75A2EEFF8DA8DBFFD2DBE9FFE3ECF6FFE1EB - F7FFDDE8F6FF404040FF707070FF1C1C1CFF0000000000000000000000000000 - 0000000000000000000000000000000000001A1A1AFF717171FF202020FF1522 - 33FF2A4571FF49679EFF5F7DB6FF44536AFF9B9B62FFB4B9A9FFDBE7F5FF4040 - 40FF6D6D6DFF1C1C1CFF00000000000000000000000000000000000000000000 - 000000000000000000001C1C1CFF7A7A7AFF3D3D3DFFDBDEE2FFC2C6CBFFB3B8 - BEFFACB2B9FFB0B7BEFFC3CBD6FFD6E2EFFFD8E5F4FF404040FF696969FF1C1C - 1CFF000000000000000000000000000000000000000000000000000000000000 - 00001C1C1CFF797979FF777777FF3F3F3FFF3D3D3DFF3C3C3CFF3C3C3CFF3C3C - 3CFF3D3D3DFF3F3F3FFF404040FF676767FF666666FF1C1C1CFF000000000000 - 00000000000000000000000000000000000000000000000000001C1C1CFF7575 - 75FF737373FF727272FF707070FF6E6E6EFF6D6D6DFF6B6B6BFF696969FF6767 - 67FF666666FF646464FF626262FF1C1C1CFF0000000000000000000000000000 - 0000000000000000000000000000000000001C1C1CFF727272FF707070FF6E6E - 6EFF404040FF404040FF404040FF404040FF404040FF404040FF404040FF6060 - 60FF5F5F5FFF1C1C1CFF00000000000000000000000000000000000000000000 - 000000000000000000001C1C1CFF6E6E6EFF6D6D6DFF404040FFE6E6E6FFDBDB - DBFFD1D1D1FFC7C7C7FF404040FF8E8E8EFF8B8B8BFF404040FF5B5B5BFF1C1C - 1CFF000000000000000000000000000000000000000000000000000000000000 - 00001C1C1CFF6B6B6BFF696969FF404040FFDBDBDBFF424242FF424242FFBCBC - BCFF404040FF858585FF838383FF404040FF585858FF1C1C1CFF000000000000 - 00000000000000000000000000000000000000000000000000001C1C1CFF6767 - 67FF666666FF404040FFD1D1D1FF424242FF666666FFB2B2B2FF404040FF7D7D - 7DFF7B7B7BFF404040FF545454FF1C1C1CFF0000000000000000000000000000 - 0000000000000000000000000000000000001C1C1CFF646464FF626262FF4040 - 40FFC7C7C7FFBCBCBCFFB2B2B2FFA7A7A7FF404040FF757575FF737373FF4040 - 40FF535353FF1C1C1CFF00000000000000000000000000000000000000000000 - 00000000000000000000000000001C1C1CFF1C1C1CFF1C1C1CFF404040FF4040 - 40FF404040FF404040FF1C1C1CFF1C1C1CFF1C1C1CFF1C1C1CFF1C1C1CFF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00474648DF3C3B3DFF3E3E3FFFB5B1AEFFB7B4B3FFB6B3 + B3FFB6B3B3FFB6B3B3FFB7B5B3FFB8B5B3FFB8B6B4FFB9B6B5FFB9B6B5FFB9B7 + B6FFB9B7B6FFBAB8B7FFB6B3B0FF3E3E3FFF3C3B3DFF5F5E60E3FFFFFF00FFFF + FF003D3D3EFFADACAEFF8A898AFFF2EBE3FFFAF5F2FFFAF5F1FFFAF5F1FFFAF5 + F2FFFAF5F2FFFAF6F3FFFBF6F3FFFBF7F4FFFBF7F5FFFCF8F6FFFCF9F7FFFDFA + F8FFF4EFE9FF8B8A8CFF888789FF414142FFFFFFFF00FFFFFF003B3B3CFF3B3B + 3CFF626163FFEEE7DEFFFBF6F4FFFBF6F3FFFBF6F3FFFBF6F3FFFBF6F4FFFBF7 + F4FFFBF7F5FFFCF8F6FFFCF9F7FFFCFAF8FFFDFBF9FFFDFCFBFFF2EBE4FF6665 + 67FF636264FF403F40FFFFFFFF00FFFFFF003A3A3BFF363637FF605F61FFEFE8 + E0FFFDFBF9FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFFEFDFDFFF1EBE3FF646365FF616062FF3E3E + 3FFFFFFFFF00FFFFFF00383839FF5E5D5FFF5F5E60FFF0EAE1FFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFDFDFFFDFDFCFFFDFCFBFFFCFBFAFFFCFA + F9FFFBF9F7FFFAF8F6FFEFE8E0FF616062FF5E5D5FFF3C3B3DFFFFFFFF00FFFF + FF00373738FF5C5B5DFF5D5C5EFFEEE7DEFFFAF8F5FFD9C6B2FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFF6F2 + EEFFEEE6DCFF5E5D5FFF5C5B5DFF3B3A3BFFFFFFFF00FFFFFF00353536FF5958 + 5AFF5A595BFFECE5DBFFF6F1ECFFF6F1EDFFF6F1EDFFF6F1EDFFF6F1ECFFF5F1 + ECFFF5F0EBFFF5F0EAFFF4EFEAFFF4EEE8FFF3EDE7FFF2ECE6FFECE3D9FF5B5A + 5CFF59585AFF39383AFFFFFFFF00FFFFFF00343435FF575658FF585759FFEBE2 + D7FFF1EBE4FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFEEE6DEFFEAE0D6FF585759FF575658FF3737 + 38FFFFFFFF00FFFFFF00323234FF545356FF545356FFE9E0D4FFEDE4DBFFEDE4 + DBFFEDE4DBFFEDE4DBFFEDE4DBFFEDE4DBFFEDE4DAFFECE3D9FFECE3D9FFECE2 + D8FFEBE1D7FFEAE0D6FFE8DDD1FF555457FF545356FF353537FFFFFFFF00FFFF + FF00313132FF525153FF525153FFE6DBCFFFE9DED2FFE9DED2FFE9DED3FFE9DE + D2FFE9DED2FFE9DED2FFE8DDD1FFE8DDD1FFE8DCD0FFE7DCCFFFE7DBCEFFE6DA + CDFFE6DACCFF525153FF525153FF343435FFFFFFFF00FFFFFF00302F31FF504F + 51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F + 51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F + 51FF504F51FF333234FFFFFFFF00FFFFFF002E2E2FFF4D4C4FFF4D4C4FFF4D4C + 4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C + 4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF3130 + 32FFFFFFFF00FFFFFF002D2C2EFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A + 4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A + 4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF2F2F31FFFFFFFF00FFFF + FF002B2A2CFF474649FF474649FF474649FFC9C9C9FFD7D7D7FFD7D7D7FFD7D7 + D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD5D5D5FF3C3B3CFF2E2E + 2FFF2A2A2BFF474649FF474649FF2D2C2EFFFFFFFF00FFFFFF00282729FF4241 + 44FF424144FF424144FFB7B7B7FF444345FF3E3D3FFF474648FFC5C5C5FFC5C5 + C5FFC5C5C5FFC5C5C5FFC4C4C4FFC0C0C0FF565557FF403F41FF2F2E31FF4241 + 44FF424144FF29292BFFFFFFFF00FFFFFF00252426FF3D3C40FF3D3C40FF3D3C + 40FFB6B6B6FF39383CFF353438FF3D3C3EFFC5C5C5FFC4C4C4FFC0C0C0FFBBBB + BBFFB7B7B7FFB3B3B3FF515054FF3F3E41FF2E2E30FF3D3C40FF403F43FF2626 + 28FFFFFFFF00FFFFFF00222223FF39383BFF39383BFF39383BFFB5B5B5FF3635 + 38FF323134FF373639FFBBBBBBFFB7B7B7FFB2B2B2FFAEAEAEFFAAAAAAFFA6A6 + A6FF4C4B4DFF3C3B3EFF2D2C2EFF39383BFF58575AFF232325FFFFFFFF00FFFF + FF00201F22FD302F33FF343337FF343337FFAEAEAEFF303033FF28282AFF2E2E + 30FFAEAEAEFFA9A9A9FFA5A5A5FFA1A1A1FF9D9D9DFF999999FF434344FF3434 + 37FF29282AFF343337FF4A494DFF202022FFFFFFFF00FFFFFF002320246F1E1D + 20FD2B2A2EFF2F2E32FFA1A1A1FFA6A5A6FFA0A0A0FF9E9E9EFFA0A0A0FF9C9C + 9CFF989898FF949494FF909090FF8B8B8BFF38373AFF2C2B2FFF232225FF2F2E + 32FF302F33FF1D1D1FFFFFFFFF00FFFFFF00FFFFFF001E1E206F1A1A1CFD1A19 + 1CFF7A7A7AFF808080FF7D7D7DFF7C7C7CFF7A7A7AFF787878FF767676FF7676 + 76FF767676FF767676FF1E1D1FFF171719FF171719FF1A191CFF1A191CFF1E1E + 20F4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0000000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000490059467E46EF004C + 0072FFFFFF00FFFFFF00FFFFFF00045004B92D6D2DD10052001BFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00004300B86F986FFF487D48FE004D00A40040 + 0004FFFFFF000A560ADF8DC08DFF1C601CED004C0042FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00004500B8669566FF76AC76FF568F56FF095209D00052001B0955 + 09DE87C587FF85BF85FE317231FA004C0072FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000047 + 00B8609460FF649E64FF67A567FF5C9C5CFE146314EC085708EC75B875FF79BC + 79FF7DBD7DFF458545FE004D00A4003A0005FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004800B8599459FF5292 + 52FF559A55FF58A058FF59A259FE287928FF64AE64FF66B166FF6AB36AFF6EB4 + 6EFF549654FF095309D00052001BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00004A00B8529452FF408940FF439143FF4699 + 46FF499E49FF4DA44DFF51A751FF54A954FF58AB58FF5BAA5BFF5EAB5EFF549B + 54FE105E10EB00500042FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00004B00B84D954DFF2E812EFF318B31FF349434FF379A37FF3BA0 + 3BFF3FA33FFF42A542FF45A545FF49A549FF4CA34CFF4FA04FFF4D984DFE1A6A + 19FA00550073FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004D + 00B9489848FF1C7C1CFF1F871FFF229122FF259825FF299F29FF2CA12CFF30A3 + 30FF33A333FF37A037FF3A9D3AFF3D993DFF419441FF448F44FE1E6D1DFE0258 + 00A7003A0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00014D00B9238722FF137B + 13FF158815FF169116FF179A17FF1BA11BFF1EA41EFF21A521FF25A325FF29A0 + 29FF2D9B2DFF2E952EFF308D30FF348634FF377E37FF2B742AFF055F04C8FFFF + FF00FFFFFF00FFFFFF00FFFFFF00014F00BA097F08FF007900FF008600FF0092 + 00FF009B00FF00A100FF00A400FF00A200FF009D00FF009400FF008900FF037E + 03FF047204FF026202FF005200FF0D5C0CFF056404CAFFFFFF00FFFFFF00FFFF + FF00FFFFFF00015100BB0C850BFF008000FF008F00FF009C00FF00A800FF00B0 + 00FF00B300FF00B100FF00AA00FF009F00FF009200FF008400FF007500FF0369 + 03FE11710FFE026901AD003A0005FFFFFF00FFFFFF00FFFFFF00FFFFFF000152 + 00BC0E890DFF008500FF009500FF00A400FF00B200FF00BE00FF00C300FF00BF + 00FF00B500FF00A700FF009900FF008900FF097F09FD107D0EFA026A007BFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015300BD128C10FF0087 + 00FF009800FF00A900FF00B900FF05C905FF00D200FF00CB00FF00BC00FF00AC + 00FF009C00FF10900FFE0F830CF0036F0049FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00015300BD148C12FF008500FF009600FF00A7 + 00FF0AB70AFD26AD23FF00D600FF00CC00FF00BB00FF00AB00FF199C17FF0C82 + 08DA0072001FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00015500BE178B15FF008000FF009000FF13A412FE11960EF21A99 + 16F200C200FF00BE00FF05B305FE039100FE048101B6005C0006FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000155 + 00BF198917FF007800FF1D991BFF0E9209DD007C001F1D9B19EA00AE00FF0EAD + 0EFE1B9917FB047F0083FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015700C0238B20FF0481 + 00FE059001B800660005FFFFFF00209C1CEC19A318FF179613F2037F0050FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00026C0059199B14F1048E0087FFFFFF00FFFF + FF00FFFFFF0011940DC6199A1FDD08790021FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B550BC61E611EC80045 + 0013FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF001C601CEC86B986FF165E16E8004E0035FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF001A601AEB87C587FF80BC80FE286B28F7004D0063FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001865 + 18EB75B875FF79BC79FF7BBB7BFF387B38FE004D009800800001FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00176C17EA63AE63FF67B1 + 67FF6AB36AFF6EB46EFF468B46FF025102C500450013FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00177417EB51A751FF54A954FF58AB58FF5BAB + 5BFF5EAB5EFF4D964DFE0C5B0CE600500035FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00177C17EB3FA33FFF42A542FF46A546FF49A449FF4CA34CFF4FA0 + 4FFF4A964AFE166615F700520065FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001884 + 18EC2DA22DFF30A330FF34A234FF37A037FF3A9C3AFF3D983DFF419441FF448D + 44FE217120FE0258009B00800001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00188917ED23A723FF26A7 + 26FF28A428FF2BA12BFF2B9B2BFF2C922CFF2F8C2FFF338433FF377E37FF2770 + 27FF046003BAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF000B8709ED00A400FF00A200FF009C00FF0093 + 00FF028902FF067F06FF057105FF026102FF015101FF0D5E0CFF046303BCFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF000E8D0CEE00B300FF00B100FF00A900FF009E00FF009100FF0083 + 00FF007400FF056905FE10720EFE026600A000800001FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001193 + 0EEF00C300FF00BF00FF00B400FF00A600FF009700FF008800FF0A7F0AFD0F7C + 0DF8026B006DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00149911EF00D200FF00CA + 00FF00BB00FF00AB00FF009A00FF129111FE0D7F0AEC046A003CFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00169B13EF00D600FF00CA00FF00BA00FF01A9 + 01FF028E00FF0A8006D2006B0016FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00199C16F100C200FF00BD00FF08B308FE1D9C1AFE037D00A80080 + 0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001B9C + 18F200AE00FF11AE11FE199715FA027E0074FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001F9C1BF31EA41DFF1492 + 0FEF047B0040FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0012950ED0169618D600780018FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FFFFFF00FFFFFF17FFFFFF10000000000000000000000000A8A8EE217D7D + EBBF3838DCFB2727D8FD2727D7FD2727D7FD2727D6FD2727D5FD2727D5FD2727 + D4FD2727D3FD2727D3FD2727D2FD2727D1FD2727D1FD2727D0FD2727CFFD6262 + E1FCAAAAF2D68A8ADF1E00000000000000008788EBB9C4C4F0FFB1B1DFFFAEAE + DEFFAEAEDEFFAEAEDEFFAEAEDEFFAEAEDEFFAEAEDEFFAEAEDEFFAEAEDEFFAEAE + DDFFAEAEDDFFAEAEDDFFAEAEDDFFAEAEDDFFAEAEDDFFB2B2DEFFB0B0E6FF3839 + CCAE0000000000000000292AC8F89E9ED5FF9898D1FF9898D1FF9898D1FF9898 + D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898 + D1FF9898D1FF9898D1FF9898D1FF9898D1FFA5A5D7FF1818B1F6000000000000 + 00000202B7FC8C8CCDFF8C8CCCFF8D8DCBFF9B9BAEFF9C9CAEFF8E8ECBFF8C8C + CCFF8C8CCCFF8C8CCCFF8C8CCCFF8C8CCCFF8C8CCCFF8E8ECBFF9C9CAEFF9C9C + AEFF8D8DCBFF8C8CCCFF9B9BD2FF1010A7FC00000000000000000202B4FC8181 + C8FF8181C6FFA8A8BEFFEEEEEEFFEFEFEFFFA6A6B8FF8383C6FF8181C6FF8181 + C6FF8181C6FF8181C6FF8383C6FFA5A5B8FFEFEFEFFFEEEEEEFFA8A8BEFF8181 + C6FF9292CEFF1010A4FC00000000000000000202B0FC7676C3FF7676C2FFCECE + E5FFF0F0F0FFF0F0F0FFECECECFFA8A8BEFF7878C2FF7676C2FF7676C2FF7878 + C2FFA8A8BDFFEAEAEAFFEEEEEEFFF0F0F0FFCECEE5FF7676C2FF8989CAFF1111 + A0FC00000000000000000202ACFC6A6ABEFF6A6ABCFF6E6EBEFFD3D3E8FFEEEE + EEFFEBEBEBFFE7E7E7FFAAAAC2FF6C6EBEFF6C6EBEFFA9A9C0FFE4E4E4FFE7E7 + E7FFEAEAEAFFD2D2E7FF6E6EBEFF6A6ABCFF8080C6FF11119DFC000000000000 + 00000404A9FC6060B9FF5F5FB8FF5F5FB8FF6464B9FFCECEE4FFE8E8E8FFE6E6 + E6FFE2E2E2FFACAEC8FFABADC7FFE0E0E0FFE1E1E1FFE3E3E3FFCCCCE3FF6464 + B9FF5F5FB8FF5F5FB8FF7979C3FF12129AFC00000000000000000808A7FC5555 + B4FF5454B2FF5454B2FF5454B3FF585DBAFFCACCE4FFE3E3E3FFE0E0E0FFDEDE + DEFFDCDCDCFFDCDCDCFFDDDDDDFFC6C8E1FF585EBCFF5456B5FF5656B3FF6666 + BAFF6B6CBEFF0A0A94FC00000000000000000A0BA4FC3131A4FF3A3AA7FF4344 + ACFF484DB4FF4852BAFF4D5BC1FFC4C8E4FFDEDEDEFFDBDBDBFFD9D9D9FFD8D8 + D8FFC6CAE2FF5766C6FF4F5BC0FF4048B5FF2F32A6FF060690FF0B0C93FF0304 + 8EFC00000000000000000C0EA2FC040490FF00008DFF030896FF0A18A3FF1328 + B0FF1B34B8FF848BACFFDCDCDCFFD9D9D9FFD6D6D6FFD4D4D4FF7E87B1FF0523 + B4FF0019ADFF0012A4FF000A9AFF000290FF0E1094FF04058BFC000000000000 + 00000F12A0FC040590FF000290FF000B9CFF0014A6FF0621B2FF7880A9FFDDDD + DDFFDBDBDBFFD8D8D8FFD4D4D4FFD1D1D1FFD1D1D1FF7984ADFF0524B6FF0018 + ACFF000FA1FF000696FF101497FF050688FC000000000000000011169EFC0507 + 90FF000694FF000FA0FF061DADFF7E87B0FFE2E2E2FFE0E0E0FFDCDCDCFFAEBE + E6FFACBCE4FFD0D0D0FFCECECEFFD4D4D4FF818AB5FF0521B2FF0014A6FF000A + 9BFF121A9AFF050785FC000000000000000013199DFC060892FF000898FF0617 + A6FF868DB6FFE9E9E9FFE6E6E6FFE2E2E2FFB1C2EAFF084CE8FF074DEAFFACBE + E6FFD3D3D3FFD9D9D9FFE1E1E1FF8B94BEFF061CABFF000D9EFF141E9EFF0608 + 82FC0000000000000000141D9BFC060A92FF000A9AFF8A90BFFFEEEEEEFFEEEE + EEFFEAEAEAFFB4C4ECFF084BE6FF004EF2FF0052F6FF074FECFFB0C0E8FFE1E1 + E1FFE7E7E7FFEEEEEEFF8F96C6FF000FA0FF1422A1FF06097FFC000000000000 + 0000152199FC060B92FF000A9AFFADB2DEFFF0F0F0FFF0F0F0FFB8C5ECFF0842 + DBFF0046E7FF004FF3FF0053F8FF004BEDFF0746E1FFB6C4EBFFEEEEEEFFF0F0 + F0FFAEB5E0FF000FA0FF1526A3FF070A7FFC00000000FFFFFF01172698FC060C + 92FF000998FF0618A6FFB2BAE3FFB6C1E8FF0836CCFF0039D6FF0042E1FF0048 + E9FF004AECFF0045E6FF003EDCFF083AD2FFB6C2EAFFB4BCE5FF071EADFF000E + 9EFF1629A4FF070B80FC00000000FFFFFF0A3C4DA9FA101A98FF06119AFF061A + A6FF0624B2FF062CBDFF0635C7FF063CD1FF0643DAFF0647DFFF0648E0FF0645 + DDFF0640D6FF0639CCFF0630C2FF0628B7FF061FACFF0919A2FF2233A7FF0608 + 7EF800000000FFFFFF03494EA5BC394AA8FF1729A1FF162FAAFF1636B2FF163C + BAFF1642C2FF1647C9FF164CCEFF164ED2FF164ED2FF164DD0FF1649CCFF1645 + C6FF163FBEFF1639B6FF1632AEFF2338ABFF242B99FF040479B3000000000000 + 0000191988170D0D80B3010178F8000077FC000077FC000077FC000077FC0000 + 77FC000077FC000077FC000077FC000077FC000077FC000077FC000077FC0000 + 77FC000077FC04047AF8040479B3000078150000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000 } end - object PopupMenu1: TPopupMenu - Images = ResultsXMLImageList - left = 264 - top = 176 + object PopupTree: TPopupMenu + Images = MainImageList + left = 448 + top = 192 object MenuItem1: TMenuItem - Action = actCopy - Caption = '&Copy ' + Action = ActCopyTextToClipboard Bitmap.Data = { C6070000424DC607000000000000360000002800000016000000160000000100 2000000000009007000064000000640000000000000000000000000000000000 @@ -1726,85 +1628,81 @@ 8CFF898E8CFF898E8CFF8B908DFF000000000000000000000000000000000000 00000000000000000000 } - ImageIndex = 0 - OnClick = actCopyExecute end object MenuItem2: TMenuItem - Action = actCut - Caption = 'C&ut' + Action = ActSaveResults Bitmap.Data = { C6070000424DC607000000000000360000002800000016000000160000000100 - 2000000000009007000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000B7FF0000 - C7FF0000CEFF0000B5FF00009EFF00000000000000000000000000009EFF0000 - C7FF0000CEFF0000CEFF0000BDFF000000000000000000000000000000000000 - 00000000000000000000000000003D3DD7FF7F7FEFFF7B7BEFFF7B7BEFFF5757 - E7FF0101CEFF000094FF0000000000009DFF0101CEFF5757E7FF7B7BEFFF7B7B - EFFF7F7FEFFF0C0CCEFF0000B5FF000000000000000000000000000000000000 - 00000000CEFF7B7BE7FF3333D6FF0000CEFF0000CEFF7B7BEFFF4747E7FF0000 - BDFF000000000000BDFF6363E7FF7B7BEFFF3333D6FF0000CEFF5B5BDEFF7B7B - E7FF0000C7FF00000000000000000000000000000000000000000000CEFF7B7B - EFFF0000CEFF00000000000000005B5BDEFF7B7BEFFF0000CFFF000000000101 - CFFF7B7BEFFF0000CEFF00000000000000000000CEFF7B7BEFFF0000CEFF0000 - 0000000000000000000000000000000000000000CEFF7373EFFF6F6FE7FF0000 - CEFF000000000000CEFF7B7BEFFF0000CEFF000000000000CEFF7B7BEFFF0000 - CEFF000000000000CEFF6F6FE7FF7373EFFF0000CEFF00000000000000000000 - 00000000000000000000000000000000CEFF777BEFFF6F6FE7FF3939DFFF0000 - CEFF7B7BEFFF0000CEFF000000000000CEFF7B7BEFFF0000CEFF0808D6FF6F6F - E7FF777BEFFF0000CEFF00000000000000000000000000000000000000000000 - 000000000000000000000000CEFF4647DFFF7777EFFF5B5AEFFF5A5BEFFF5352 - DEFF9496BFFF5352DEFF5A5BEFFF7B7BEFFF7777EFFF6B6BE7FF0000CEFF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000CEFF090AD7FF7373CEFF5657E7FF8C8DE7FF5657 - E7FF7373CEFF090AD7FF0000CEFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000008E969FFFDFDEE7FFD6D6D7FFEFEFEFFFA7A7A5FF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000949D - 97FFB5B7B7FFE7E7E7FFE7E7E7FFB5B7B7FFDEDEDFFFA7ADADFF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000ADAFAFFFE7EFEFFFDFDF - DFFFE7EFE7FFB7BFBDFFCFCECEFFC6C7C7FF0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000979C96FFBDBFBFFFDFDFDFFFEFEFEFFFA5A5A7FFCED6 - CFFFCECFCFFFEFEFEFFFA7AFADFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000ADB5AFFFE7E7E7FFDEDEDEFFCFCECFFF00000000ADADAFFFE7E7E7FFDEDE - DEFFE7E7E7FF878C8EFF00000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000AFB5B5FFCFCECFFFDFDF - DFFFEFEFEFFF9DA5A5FF0000000000000000BFBDBDFFE7E7E7FFEFEFEFFFADAD - AFFF000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000ADB5AFFFE7E7E7FFEFEFEFFFADAFAFFF0000 - 00000000000000000000ADB5AFFFEFEFEFFFDEDEDEFFEFEFEFFF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000959E9CFFD6D7D7FFE7E7E7FFDEDFDFFF9E9E9CFF00000000000000000000 - 000000000000B7B5B5FFEFEFEFFFEFEFEFFFAFB5AFFF00000000000000000000 - 00000000000000000000000000000000000000000000000000009DA5A5FFEFEF - EFFFEFEFEFFFA7A7A5FF00000000000000000000000000000000000000008F94 - 8EFFE7EFE7FFE7E7E7FFEFEFEFFF000000000000000000000000000000000000 - 0000000000000000000000000000000000009C9F9EFFEFEFEFFFCFCFCFFF0000 - 0000000000000000000000000000000000000000000000000000AFB5B5FFF7F7 - F7FFCFD6D6FF0000000000000000000000000000000000000000000000000000 - 00000000000000000000949C96FFCFCFCEFF9DA59FFF00000000000000000000 - 00000000000000000000000000000000000000000000D6D7D7FF959597FF0000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000009D9D9FFF00000000000000000000000000000000000000000000 - 0000000000000000000000000000868F8DFF0000000000000000000000000000 - 00000000000000000000 + 2000000000009007000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E1E206F1A1A + 1CFD1A191CFF7A7A7AFF808080FF7D7D7DFF7C7C7CFF7A7A7AFF787878FF7676 + 76FF767676FF767676FF767676FF1E1D1FFF171719FF171719FF1A191CFF1A19 + 1CFF1E1E20F4FFFFFF00FFFFFF002320246F1E1D20FD2B2A2EFF2F2E32FFA1A1 + A1FFA6A5A6FFA0A0A0FF9E9E9EFFA0A0A0FF9C9C9CFF989898FF949494FF9090 + 90FF8B8B8BFF38373AFF2C2B2FFF232225FF2F2E32FF302F33FF1D1D1FFFFFFF + FF00FFFFFF00201F22FD302F33FF343337FF343337FFAEAEAEFF303033FF2828 + 2AFF2E2E30FFAEAEAEFFA9A9A9FFA5A5A5FFA1A1A1FF9D9D9DFF999999FF4343 + 44FF343437FF29282AFF343337FF4A494DFF202022FFFFFFFF00FFFFFF002222 + 23FF39383BFF39383BFF39383BFFB5B5B5FF363538FF323134FF373639FFBBBB + BBFFB7B7B7FFB2B2B2FFAEAEAEFFAAAAAAFFA6A6A6FF4C4B4DFF3C3B3EFF2D2C + 2EFF39383BFF58575AFF232325FFFFFFFF00FFFFFF00252426FF3D3C40FF3D3C + 40FF3D3C40FFB6B6B6FF39383CFF353438FF3D3C3EFFC5C5C5FFC4C4C4FFC0C0 + C0FFBBBBBBFFB7B7B7FFB3B3B3FF515054FF3F3E41FF2E2E30FF3D3C40FF403F + 43FF262628FFFFFFFF00FFFFFF00282729FF424144FF424144FF424144FFB7B7 + B7FF444345FF3E3D3FFF474648FFC5C5C5FFC5C5C5FFC5C5C5FFC5C5C5FFC4C4 + C4FFC0C0C0FF565557FF403F41FF2F2E31FF424144FF424144FF29292BFFFFFF + FF00FFFFFF002B2A2CFF474649FF474649FF474649FFC9C9C9FFD7D7D7FFD7D7 + D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD5D5D5FF3C3B + 3CFF2E2E2FFF2A2A2BFF474649FF474649FF2D2C2EFFFFFFFF00FFFFFF002D2C + 2EFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A + 4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A + 4DFF4B4A4DFF4B4A4DFF2F2F31FFFFFFFF00FFFFFF002E2E2FFF4D4C4FFF4D4C + 4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C + 4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C + 4FFF313032FFFFFFFF00FFFFFF00302F31FF504F51FF504F51FF504F51FF504F + 51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F + 51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF333234FFFFFF + FF00FFFFFF00313132FF525153FF525153FFE6DBCFFFE9DED2FFE9DED2FFE9DE + D3FFE9DED2FFE9DED2FFE9DED2FFE8DDD1FFE8DDD1FFE8DCD0FFE7DCCFFFE7DB + CEFFE6DACDFFE6DACCFF525153FF525153FF343435FFFFFFFF00FFFFFF003232 + 34FF545356FF545356FFE9E0D4FFEDE4DBFFEDE4DBFFEDE4DBFFEDE4DBFFEDE4 + DBFFEDE4DBFFEDE4DAFFECE3D9FFECE3D9FFECE2D8FFEBE1D7FFEAE0D6FFE8DD + D1FF555457FF545356FF353537FFFFFFFF00FFFFFF00343435FF575658FF5857 + 59FFEBE2D7FFF1EBE4FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFEEE6DEFFEAE0D6FF585759FF5756 + 58FF373738FFFFFFFF00FFFFFF00353536FF59585AFF5A595BFFECE5DBFFF6F1 + ECFFF6F1EDFFF6F1EDFFF6F1EDFFF6F1ECFFF5F1ECFFF5F0EBFFF5F0EAFFF4EF + EAFFF4EEE8FFF3EDE7FFF2ECE6FFECE3D9FF5B5A5CFF59585AFF39383AFFFFFF + FF00FFFFFF00373738FF5C5B5DFF5D5C5EFFEEE7DEFFFAF8F5FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFF6F2EEFFEEE6DCFF5E5D5FFF5C5B5DFF3B3A3BFFFFFFFF00FFFFFF003838 + 39FF5E5D5FFF5F5E60FFF0EAE1FFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFDFDFFFDFDFCFFFDFCFBFFFCFBFAFFFCFAF9FFFBF9F7FFFAF8F6FFEFE8 + E0FF616062FF5E5D5FFF3C3B3DFFFFFFFF00FFFFFF003A3A3BFF363637FF605F + 61FFEFE8E0FFFDFBF9FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFFEFDFDFFF1EBE3FF646365FF6160 + 62FF3E3E3FFFFFFFFF00FFFFFF003B3B3CFF3B3B3CFF626163FFEEE7DEFFFBF6 + F4FFFBF6F3FFFBF6F3FFFBF6F3FFFBF6F4FFFBF7F4FFFBF7F5FFFCF8F6FFFCF9 + F7FFFCFAF8FFFDFBF9FFFDFCFBFFF2EBE4FF666567FF636264FF403F40FFFFFF + FF00FFFFFF003D3D3EFFADACAEFF8A898AFFF2EBE3FFFAF5F2FFFAF5F1FFFAF5 + F1FFFAF5F2FFFAF5F2FFFAF6F3FFFBF6F3FFFBF7F4FFFBF7F5FFFCF8F6FFFCF9 + F7FFFDFAF8FFF4EFE9FF8B8A8CFF888789FF414142FFFFFFFF00FFFFFF004746 + 48DF3C3B3DFF3E3E3FFFB5B1AEFFB7B4B3FFB6B3B3FFB6B3B3FFB6B3B3FFB7B5 + B3FFB8B5B3FFB8B6B4FFB9B6B5FFB9B6B5FFB9B7B6FFB9B7B6FFBAB8B7FFB6B3 + B0FF3E3E3FFF3C3B3DFF5F5E60E3FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00 } - OnClick = actCutExecute end end - object PopupMenu2: TPopupMenu - left = 264 + object PopupDetails: TPopupMenu + left = 448 top = 240 - object MenuItem3: TMenuItem - Caption = 'Copy to clipboard' + object MenuItemCopyText: TMenuItem + Action = ActCopyTextToClipboard Bitmap.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000064000000640000000000000000000000865523FFB78C @@ -1841,33 +1739,39 @@ 0000000000009A6E40FFBD9871FFBA946CFFBA946CFFBA946CFFBA946CFFBA94 6CFFBA946CFFBA946BFFBA936BFFBA946BFFBD966EFF8F6032FF } - OnClick = MenuItem3Click end end - object ActionList2: TActionList - Images = ResultsXMLImageList - left = 168 - top = 176 + object ActionListMain: TActionList + Images = MainImageList + left = 264 + top = 128 object RunAction: TAction Category = 'Run' - Caption = ' &Run' - Hint = 'Run all checked test(s)' + Caption = '&Run all' + Hint = 'Run all selected tests' ImageIndex = 3 OnExecute = RunExecute - ShortCut = 16466 + SecondaryShortCuts.Strings = ( + 'Ctrl+R' + ) + ShortCut = 120 end object ActCloseForm: TAction Caption = 'Quit' Hint = 'Quit Testing' + ImageIndex = 5 OnExecute = ActCloseFormExecute - ShortCut = 16451 + SecondaryShortCuts.Strings = ( + 'Ctrl+C' + ) + ShortCut = 27 end - object actCopyErrorMsg: TAction + object ActCopyErrorMsg: TAction Category = 'Edit' Caption = 'actCopyErrorMsg' ImageIndex = 0 OnExecute = ActCopyErrorMsgExecute - OnUpdate = actCopyErrorMsgUpdate + OnUpdate = ActCopyErrorMsgUpdate end object ActCheckCurrentSuite: TAction Category = 'Selection' @@ -1897,21 +1801,192 @@ ImageIndex = 4 OnExecute = ActRunHighlightedTestExecute OnUpdate = ActRunHighLightedTestUpdate + ShortCut = 119 + end + object ActCopyTextToClipboard: TAction + Category = 'Edit' + Caption = 'Copy text' + ImageIndex = 0 + OnExecute = ActCopyTextToClipboardExecute + OnUpdate = ActCopyTextToClipboardUpdate + ShortCut = 24643 + end + object ActSaveResults: TAction + Caption = 'Save results' + ImageIndex = 2 + OnExecute = ActSaveResultsExecute + ShortCut = 16467 + end + object actNextError: TAction + Caption = 'Next error' + OnExecute = actNextErrorExecute + ShortCut = 16462 + end + object actPrevError: TAction + Caption = 'Previous error' + OnExecute = actPrevErrorExecute + ShortCut = 16464 end end - object PopupMenu3: TPopupMenu - Images = ResultsXMLImageList - left = 368 - top = 240 + object PopupResults: TPopupMenu + Images = MainImageList + left = 448 + top = 288 + object miCollapseNodes: TMenuItem + Caption = 'Collapse Nodes' + OnClick = miCollapseNodesClick + end + object miExpandNodes: TMenuItem + Caption = 'Expand Nodes' + OnClick = miExpandNodesClick + end + object MenuItem9: TMenuItem + Caption = '-' + end object miRunTest: TMenuItem Action = RunAction - Caption = ' &Run all selected (checked) tests' + Bitmap.Data = { + C6070000424DC607000000000000360000002800000016000000160000000100 + 2000000000009007000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00026C0059199B14F1048E0087FFFF + FF00FFFFFF00FFFFFF0011940DC6199A1FDD08790021FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00015700C0238B20FF048100FE059001B800660005FFFF + FF00209C1CEC19A318FF179613F2037F0050FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00015500BF198917FF007800FF1D991BFF0E9209DD007C001F1D9B19EA00AE + 00FF0EAD0EFE1B9917FB047F0083FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015500BE178B + 15FF008000FF009000FF13A412FE11960EF21A9916F200C200FF00BE00FF05B3 + 05FE039100FE048101B6005C0006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015300BD148C12FF008500FF0096 + 00FF00A700FF0AB70AFD26AD23FF00D600FF00CC00FF00BB00FF00AB00FF199C + 17FF0C8208DA0072001FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00015300BD128C10FF008700FF009800FF00A900FF00B9 + 00FF05C905FF00D200FF00CB00FF00BC00FF00AC00FF009C00FF10900FFE0F83 + 0CF0036F0049FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00015200BC0E890DFF008500FF009500FF00A400FF00B200FF00BE00FF00C3 + 00FF00BF00FF00B500FF00A700FF009900FF008900FF097F09FD107D0EFA026A + 007BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015100BB0C85 + 0BFF008000FF008F00FF009C00FF00A800FF00B000FF00B300FF00B100FF00AA + 00FF009F00FF009200FF008400FF007500FF036903FE11710FFE026901AD003A + 0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00014F00BA097F08FF007900FF0086 + 00FF009200FF009B00FF00A100FF00A400FF00A200FF009D00FF009400FF0089 + 00FF037E03FF047204FF026202FF005200FF0D5C0CFF056404CAFFFFFF00FFFF + FF00FFFFFF00FFFFFF00014D00B9238722FF137B13FF158815FF169116FF179A + 17FF1BA11BFF1EA41EFF21A521FF25A325FF29A029FF2D9B2DFF2E952EFF308D + 30FF348634FF377E37FF2B742AFF055F04C8FFFFFF00FFFFFF00FFFFFF00FFFF + FF00004D00B9489848FF1C7C1CFF1F871FFF229122FF259825FF299F29FF2CA1 + 2CFF30A330FF33A333FF37A037FF3A9D3AFF3D993DFF419441FF448F44FE1E6D + 1DFE025800A7003A0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00004B00B84D95 + 4DFF2E812EFF318B31FF349434FF379A37FF3BA03BFF3FA33FFF42A542FF45A5 + 45FF49A549FF4CA34CFF4FA04FFF4D984DFE1A6A19FA00550073FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004A00B8529452FF408940FF4391 + 43FF469946FF499E49FF4DA44DFF51A751FF54A954FF58AB58FF5BAA5BFF5EAB + 5EFF549B54FE105E10EB00500042FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00004800B8599459FF529252FF559A55FF58A058FF59A2 + 59FE287928FF64AE64FF66B166FF6AB36AFF6EB46EFF549654FF095309D00052 + 001BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00004700B8609460FF649E64FF67A567FF5C9C5CFE146314EC085708EC75B8 + 75FF79BC79FF7DBD7DFF458545FE004D00A4003A0005FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004500B86695 + 66FF76AC76FF568F56FF095209D00052001B095509DE87C587FF85BF85FE3172 + 31FA004C0072FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004300B86F986FFF487D48FE004D + 00A400400004FFFFFF000A560ADF8DC08DFF1C601CED004C0042FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0000490059467E46EF004C0072FFFFFF00FFFFFF00FFFF + FF00045004B92D6D2DD10052001BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00 + } OnClick = RunExecute end object MenuItem4: TMenuItem Action = ActRunHighlightedTest + Bitmap.Data = { + C6070000424DC607000000000000360000002800000016000000160000000100 + 2000000000009007000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF003E1E09B43C1E08BB3E1F0629FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003E1E08FF7852 + 38FF4A2711F441220B5AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00422009FFECBA98FFD3A381FF6840 + 25FF49250C97552B0006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0047230AFFE4B28FFFE2B08DFFD8A583FF885B3DFF4F28 + 0ECB5229101FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF004D260CFFDDAA87FFDDAA86FFD8A481FFD19C78FFA27150FF5C3215EE592B + 114DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0052290EFFD6A3 + 7FFFD6A27FFFD39F7BFFCD9974FFC6916CFFB17C58FF6E3F20FD5E3313870000 + 0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00582D0FFFCF9B76FFD09B77FFCD99 + 74FFC9946FFFC38D68FFBB855FFFB07953FF804D2BFF683716BD6D3D1815FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF005D3011FFC8936EFFC9946FFFC7926DFFC48E69FFBF89 + 63FFB8815CFFAF7853FFA16C48FF885330FF743E18E579431B39FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00633312FFC18B66FFC28C67FFC18B66FFBE8862FFBA835DFFB47D57FFAA74 + 4FFF9E6945FF915E3BFF824F2CFF7D431DFA84461E6EFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00683614FFC08F + 6BFFC08E69FFBD8A65FFBA8460FFB47E58FFAD7751FFA46F4AFF996541FF8E5B + 38FF814F2DFF744322FF80441CFF914D1F9BFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006E3915FFC8A17FFFCAA381FFC9A2 + 80FFC7A07EFFC49D7BFFBD9573FFB08563FFA0714FFF8D5B3AFF7E4C2BFF7240 + 20FF83461DFF9C5523B5FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00733C17FFC8A584FFC9A585FFC9A585FFC8A483FFC5A1 + 81FFC29F7EFFBD9B7AFFB89676FFB39172FFA17A5AFF955225FFA357238AAA55 + 0003FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00793F19FFCAAB8BFFCBAB8BFFCBAB8BFFCAAA8AFFC8A888FFC5A686FFC2A3 + 83FFBD9F80FFAE8765FF9E5A2BF3A4582651FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007E431AFFCDB1 + 93FFCEB293FFCEB293FFCDB192FFCCB091FFCAAE8FFFC7AB8CFFAD7D57FFA257 + 25D3A55A2225FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0084461CFFD3BA9BFFD4BB9BFFD4BB + 9BFFD4BA9BFFD3B99AFFCAAD8EFFA76C43FFA35725A4B3661A0AFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0089491DFFDBC4A5FFDBC4A6FFDBC4A5FFDBC4A5FFC6A5 + 84FFA36030FAA459246AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF008F4C1FFFE5D1B1FFE5D0B0FFE4CFAFFFB98F6AFFA35826E3A7582537FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00944F21FFF1DE + BEFFE5D0AFFFAC764CFFA45925BBAA552415FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009A5222FFAF7F57FFA56233FEA558 + 268580800002FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF009F55249CA35825D0A659244DFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00 + } OnClick = ActRunHighlightedTestExecute end + object MenuItem22: TMenuItem + Action = actNextError + end + object MenuItem23: TMenuItem + Action = actPrevError + end object MenuItem5: TMenuItem Action = ActCheckAll OnClick = ActCheckAllExecute @@ -1929,7 +2004,7 @@ OnClick = ActUncheckCurrentSuiteExecute end object miShowfailureMsg: TMenuItem - Action = actCopyErrorMsg + Action = ActCopyErrorMsg Caption = 'Copy message to clipboard' Bitmap.Data = { C6070000424DC607000000000000360000002800000016000000160000000100 @@ -2002,26 +2077,13 @@ object SynXMLSyn1: TSynXMLSyn DefaultFilter = 'XML Document (*.xml,*.xsd,*.xsl,*.xslt,*.dtd)|*.xml;*.xsd;*.xsl;*.xslt;*.dtd' Enabled = False - ElementAttri.FrameEdges = sfeAround - AttributeAttri.FrameEdges = sfeAround - NamespaceAttributeAttri.FrameEdges = sfeAround - AttributeValueAttri.FrameEdges = sfeAround - NamespaceAttributeValueAttri.FrameEdges = sfeAround - TextAttri.FrameEdges = sfeAround - CDATAAttri.FrameEdges = sfeAround - EntityRefAttri.FrameEdges = sfeAround - ProcessingInstructionAttri.FrameEdges = sfeAround - CommentAttri.FrameEdges = sfeAround - DocTypeAttri.FrameEdges = sfeAround - SpaceAttri.FrameEdges = sfeAround - SymbolAttri.FrameEdges = sfeAround WantBracesParsed = False left = 80 top = 176 end object ilNodeStates: TImageList - left = 264 - top = 304 + left = 192 + top = 352 Bitmap = { 4C69020000001000000010000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -2097,4 +2159,384 @@ left = 80 top = 240 end + object MainMenu1: TMainMenu + Images = MainImageList + left = 448 + top = 144 + object MenuItemActions: TMenuItem + Caption = 'Actions' + object MenuItem10: TMenuItem + Action = RunAction + Bitmap.Data = { + C6070000424DC607000000000000360000002800000016000000160000000100 + 2000000000009007000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00026C0059199B14F1048E0087FFFF + FF00FFFFFF00FFFFFF0011940DC6199A1FDD08790021FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00015700C0238B20FF048100FE059001B800660005FFFF + FF00209C1CEC19A318FF179613F2037F0050FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00015500BF198917FF007800FF1D991BFF0E9209DD007C001F1D9B19EA00AE + 00FF0EAD0EFE1B9917FB047F0083FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015500BE178B + 15FF008000FF009000FF13A412FE11960EF21A9916F200C200FF00BE00FF05B3 + 05FE039100FE048101B6005C0006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015300BD148C12FF008500FF0096 + 00FF00A700FF0AB70AFD26AD23FF00D600FF00CC00FF00BB00FF00AB00FF199C + 17FF0C8208DA0072001FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00015300BD128C10FF008700FF009800FF00A900FF00B9 + 00FF05C905FF00D200FF00CB00FF00BC00FF00AC00FF009C00FF10900FFE0F83 + 0CF0036F0049FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00015200BC0E890DFF008500FF009500FF00A400FF00B200FF00BE00FF00C3 + 00FF00BF00FF00B500FF00A700FF009900FF008900FF097F09FD107D0EFA026A + 007BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00015100BB0C85 + 0BFF008000FF008F00FF009C00FF00A800FF00B000FF00B300FF00B100FF00AA + 00FF009F00FF009200FF008400FF007500FF036903FE11710FFE026901AD003A + 0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00014F00BA097F08FF007900FF0086 + 00FF009200FF009B00FF00A100FF00A400FF00A200FF009D00FF009400FF0089 + 00FF037E03FF047204FF026202FF005200FF0D5C0CFF056404CAFFFFFF00FFFF + FF00FFFFFF00FFFFFF00014D00B9238722FF137B13FF158815FF169116FF179A + 17FF1BA11BFF1EA41EFF21A521FF25A325FF29A029FF2D9B2DFF2E952EFF308D + 30FF348634FF377E37FF2B742AFF055F04C8FFFFFF00FFFFFF00FFFFFF00FFFF + FF00004D00B9489848FF1C7C1CFF1F871FFF229122FF259825FF299F29FF2CA1 + 2CFF30A330FF33A333FF37A037FF3A9D3AFF3D993DFF419441FF448F44FE1E6D + 1DFE025800A7003A0005FFFFFF00FFFFFF00FFFFFF00FFFFFF00004B00B84D95 + 4DFF2E812EFF318B31FF349434FF379A37FF3BA03BFF3FA33FFF42A542FF45A5 + 45FF49A549FF4CA34CFF4FA04FFF4D984DFE1A6A19FA00550073FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004A00B8529452FF408940FF4391 + 43FF469946FF499E49FF4DA44DFF51A751FF54A954FF58AB58FF5BAA5BFF5EAB + 5EFF549B54FE105E10EB00500042FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00004800B8599459FF529252FF559A55FF58A058FF59A2 + 59FE287928FF64AE64FF66B166FF6AB36AFF6EB46EFF549654FF095309D00052 + 001BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00004700B8609460FF649E64FF67A567FF5C9C5CFE146314EC085708EC75B8 + 75FF79BC79FF7DBD7DFF458545FE004D00A4003A0005FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004500B86695 + 66FF76AC76FF568F56FF095209D00052001B095509DE87C587FF85BF85FE3172 + 31FA004C0072FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00004300B86F986FFF487D48FE004D + 00A400400004FFFFFF000A560ADF8DC08DFF1C601CED004C0042FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0000490059467E46EF004C0072FFFFFF00FFFFFF00FFFF + FF00045004B92D6D2DD10052001BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0000000001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00 + } + end + object MenuItem11: TMenuItem + Action = ActRunHighlightedTest + Bitmap.Data = { + C6070000424DC607000000000000360000002800000016000000160000000100 + 2000000000009007000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0012950ED0169618D600780018FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001F9C1BF31EA4 + 1DFF14920FEF047B0040FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001B9C18F200AE00FF11AE11FE1997 + 15FA027E0074FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00199C16F100C200FF00BD00FF08B308FE1D9C1AFE037D + 00A800800001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00169B13EF00D600FF00CA00FF00BA00FF01A901FF028E00FF0A8006D2006B + 0016FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00149911EF00D2 + 00FF00CA00FF00BB00FF00AB00FF009A00FF129111FE0D7F0AEC046A003CFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0011930EEF00C300FF00BF00FF00B4 + 00FF00A600FF009700FF008800FF0A7F0AFD0F7C0DF8026B006DFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF000E8D0CEE00B300FF00B100FF00A900FF009E00FF0091 + 00FF008300FF007400FF056905FE10720EFE026600A000800001FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF000B8709ED00A400FF00A200FF009C00FF009300FF028902FF067F06FF0571 + 05FF026102FF015101FF0D5E0CFF046303BCFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00188917ED23A7 + 23FF26A726FF28A428FF2BA12BFF2B9B2BFF2C922CFF2F8C2FFF338433FF377E + 37FF277027FF046003BAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00188418EC2DA22DFF30A330FF34A2 + 34FF37A037FF3A9C3AFF3D983DFF419441FF448D44FE217120FE0258009B0080 + 0001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00177C17EB3FA33FFF42A542FF46A546FF49A449FF4CA3 + 4CFF4FA04FFF4A964AFE166615F700520065FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00177417EB51A751FF54A954FF58AB58FF5BAB5BFF5EAB5EFF4D964DFE0C5B + 0CE600500035FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00176C17EA63AE + 63FF67B167FF6AB36AFF6EB46EFF468B46FF025102C500450013FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00186518EB75B875FF79BC79FF7BBB + 7BFF387B38FE004D009800800001FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF001A601AEB87C587FF80BC80FE286B28F7004D0063FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF001C601CEC86B986FF165E16E8004E0035FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000B550BC61E61 + 1EC800450013FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000001FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00 + } + end + object MenuItem20: TMenuItem + Action = actNextError + end + object MenuItem21: TMenuItem + Action = actPrevError + end + object MenuItem13: TMenuItem + Caption = '-' + end + object MenuItem18: TMenuItem + Action = ActSaveResults + Bitmap.Data = { + C6070000424DC607000000000000360000002800000016000000160000000100 + 2000000000009007000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E1E206F1A1A + 1CFD1A191CFF7A7A7AFF808080FF7D7D7DFF7C7C7CFF7A7A7AFF787878FF7676 + 76FF767676FF767676FF767676FF1E1D1FFF171719FF171719FF1A191CFF1A19 + 1CFF1E1E20F4FFFFFF00FFFFFF002320246F1E1D20FD2B2A2EFF2F2E32FFA1A1 + A1FFA6A5A6FFA0A0A0FF9E9E9EFFA0A0A0FF9C9C9CFF989898FF949494FF9090 + 90FF8B8B8BFF38373AFF2C2B2FFF232225FF2F2E32FF302F33FF1D1D1FFFFFFF + FF00FFFFFF00201F22FD302F33FF343337FF343337FFAEAEAEFF303033FF2828 + 2AFF2E2E30FFAEAEAEFFA9A9A9FFA5A5A5FFA1A1A1FF9D9D9DFF999999FF4343 + 44FF343437FF29282AFF343337FF4A494DFF202022FFFFFFFF00FFFFFF002222 + 23FF39383BFF39383BFF39383BFFB5B5B5FF363538FF323134FF373639FFBBBB + BBFFB7B7B7FFB2B2B2FFAEAEAEFFAAAAAAFFA6A6A6FF4C4B4DFF3C3B3EFF2D2C + 2EFF39383BFF58575AFF232325FFFFFFFF00FFFFFF00252426FF3D3C40FF3D3C + 40FF3D3C40FFB6B6B6FF39383CFF353438FF3D3C3EFFC5C5C5FFC4C4C4FFC0C0 + C0FFBBBBBBFFB7B7B7FFB3B3B3FF515054FF3F3E41FF2E2E30FF3D3C40FF403F + 43FF262628FFFFFFFF00FFFFFF00282729FF424144FF424144FF424144FFB7B7 + B7FF444345FF3E3D3FFF474648FFC5C5C5FFC5C5C5FFC5C5C5FFC5C5C5FFC4C4 + C4FFC0C0C0FF565557FF403F41FF2F2E31FF424144FF424144FF29292BFFFFFF + FF00FFFFFF002B2A2CFF474649FF474649FF474649FFC9C9C9FFD7D7D7FFD7D7 + D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD7D7D7FFD5D5D5FF3C3B + 3CFF2E2E2FFF2A2A2BFF474649FF474649FF2D2C2EFFFFFFFF00FFFFFF002D2C + 2EFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A + 4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A4DFF4B4A + 4DFF4B4A4DFF4B4A4DFF2F2F31FFFFFFFF00FFFFFF002E2E2FFF4D4C4FFF4D4C + 4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C + 4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C4FFF4D4C + 4FFF313032FFFFFFFF00FFFFFF00302F31FF504F51FF504F51FF504F51FF504F + 51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F + 51FF504F51FF504F51FF504F51FF504F51FF504F51FF504F51FF333234FFFFFF + FF00FFFFFF00313132FF525153FF525153FFE6DBCFFFE9DED2FFE9DED2FFE9DE + D3FFE9DED2FFE9DED2FFE9DED2FFE8DDD1FFE8DDD1FFE8DCD0FFE7DCCFFFE7DB + CEFFE6DACDFFE6DACCFF525153FF525153FF343435FFFFFFFF00FFFFFF003232 + 34FF545356FF545356FFE9E0D4FFEDE4DBFFEDE4DBFFEDE4DBFFEDE4DBFFEDE4 + DBFFEDE4DBFFEDE4DAFFECE3D9FFECE3D9FFECE2D8FFEBE1D7FFEAE0D6FFE8DD + D1FF555457FF545356FF353537FFFFFFFF00FFFFFF00343435FF575658FF5857 + 59FFEBE2D7FFF1EBE4FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFEEE6DEFFEAE0D6FF585759FF5756 + 58FF373738FFFFFFFF00FFFFFF00353536FF59585AFF5A595BFFECE5DBFFF6F1 + ECFFF6F1EDFFF6F1EDFFF6F1EDFFF6F1ECFFF5F1ECFFF5F0EBFFF5F0EAFFF4EF + EAFFF4EEE8FFF3EDE7FFF2ECE6FFECE3D9FF5B5A5CFF59585AFF39383AFFFFFF + FF00FFFFFF00373738FF5C5B5DFF5D5C5EFFEEE7DEFFFAF8F5FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFF6F2EEFFEEE6DCFF5E5D5FFF5C5B5DFF3B3A3BFFFFFFFF00FFFFFF003838 + 39FF5E5D5FFF5F5E60FFF0EAE1FFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFDFDFFFDFDFCFFFDFCFBFFFCFBFAFFFCFAF9FFFBF9F7FFFAF8F6FFEFE8 + E0FF616062FF5E5D5FFF3C3B3DFFFFFFFF00FFFFFF003A3A3BFF363637FF605F + 61FFEFE8E0FFFDFBF9FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6 + B2FFD9C6B2FFD9C6B2FFD9C6B2FFD9C6B2FFFEFDFDFFF1EBE3FF646365FF6160 + 62FF3E3E3FFFFFFFFF00FFFFFF003B3B3CFF3B3B3CFF626163FFEEE7DEFFFBF6 + F4FFFBF6F3FFFBF6F3FFFBF6F3FFFBF6F4FFFBF7F4FFFBF7F5FFFCF8F6FFFCF9 + F7FFFCFAF8FFFDFBF9FFFDFCFBFFF2EBE4FF666567FF636264FF403F40FFFFFF + FF00FFFFFF003D3D3EFFADACAEFF8A898AFFF2EBE3FFFAF5F2FFFAF5F1FFFAF5 + F1FFFAF5F2FFFAF5F2FFFAF6F3FFFBF6F3FFFBF7F4FFFBF7F5FFFCF8F6FFFCF9 + F7FFFDFAF8FFF4EFE9FF8B8A8CFF888789FF414142FFFFFFFF00FFFFFF004746 + 48DF3C3B3DFF3E3E3FFFB5B1AEFFB7B4B3FFB6B3B3FFB6B3B3FFB6B3B3FFB7B5 + B3FFB8B5B3FFB8B6B4FFB9B6B5FFB9B6B5FFB9B7B6FFB9B7B6FFBAB8B7FFB6B3 + B0FF3E3E3FFF3C3B3DFF5F5E60E3FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00 + } + end + object MenuItem19: TMenuItem + Caption = '-' + end + object MenuItem14: TMenuItem + Action = ActCloseForm + Bitmap.Data = { + C6070000424DC607000000000000360000002800000016000000160000000100 + 2000000000009007000064000000640000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000191988170D0D80B30101 + 78F8000077FC000077FC000077FC000077FC000077FC000077FC000077FC0000 + 77FC000077FC000077FC000077FC000077FC000077FC000077FC04047AF80404 + 79B30000781500000000FFFFFF03494EA5BC394AA8FF1729A1FF162FAAFF1636 + B2FF163CBAFF1642C2FF1647C9FF164CCEFF164ED2FF164ED2FF164DD0FF1649 + CCFF1645C6FF163FBEFF1639B6FF1632AEFF2338ABFF242B99FF040479B30000 + 0000FFFFFF0A3C4DA9FA101A98FF06119AFF061AA6FF0624B2FF062CBDFF0635 + C7FF063CD1FF0643DAFF0647DFFF0648E0FF0645DDFF0640D6FF0639CCFF0630 + C2FF0628B7FF061FACFF0919A2FF2233A7FF06087EF800000000FFFFFF011726 + 98FC060C92FF000998FF0618A6FFB2BAE3FFB6C1E8FF0836CCFF0039D6FF0042 + E1FF0048E9FF004AECFF0045E6FF003EDCFF083AD2FFB6C2EAFFB4BCE5FF071E + ADFF000E9EFF1629A4FF070B80FC0000000000000000152199FC060B92FF000A + 9AFFADB2DEFFF0F0F0FFF0F0F0FFB8C5ECFF0842DBFF0046E7FF004FF3FF0053 + F8FF004BEDFF0746E1FFB6C4EBFFEEEEEEFFF0F0F0FFAEB5E0FF000FA0FF1526 + A3FF070A7FFC0000000000000000141D9BFC060A92FF000A9AFF8A90BFFFEEEE + EEFFEEEEEEFFEAEAEAFFB4C4ECFF084BE6FF004EF2FF0052F6FF074FECFFB0C0 + E8FFE1E1E1FFE7E7E7FFEEEEEEFF8F96C6FF000FA0FF1422A1FF06097FFC0000 + 00000000000013199DFC060892FF000898FF0617A6FF868DB6FFE9E9E9FFE6E6 + E6FFE2E2E2FFB1C2EAFF084CE8FF074DEAFFACBEE6FFD3D3D3FFD9D9D9FFE1E1 + E1FF8B94BEFF061CABFF000D9EFF141E9EFF060882FC00000000000000001116 + 9EFC050790FF000694FF000FA0FF061DADFF7E87B0FFE2E2E2FFE0E0E0FFDCDC + DCFFAEBEE6FFACBCE4FFD0D0D0FFCECECEFFD4D4D4FF818AB5FF0521B2FF0014 + A6FF000A9BFF121A9AFF050785FC00000000000000000F12A0FC040590FF0002 + 90FF000B9CFF0014A6FF0621B2FF7880A9FFDDDDDDFFDBDBDBFFD8D8D8FFD4D4 + D4FFD1D1D1FFD1D1D1FF7984ADFF0524B6FF0018ACFF000FA1FF000696FF1014 + 97FF050688FC00000000000000000C0EA2FC040490FF00008DFF030896FF0A18 + A3FF1328B0FF1B34B8FF848BACFFDCDCDCFFD9D9D9FFD6D6D6FFD4D4D4FF7E87 + B1FF0523B4FF0019ADFF0012A4FF000A9AFF000290FF0E1094FF04058BFC0000 + 0000000000000A0BA4FC3131A4FF3A3AA7FF4344ACFF484DB4FF4852BAFF4D5B + C1FFC4C8E4FFDEDEDEFFDBDBDBFFD9D9D9FFD8D8D8FFC6CAE2FF5766C6FF4F5B + C0FF4048B5FF2F32A6FF060690FF0B0C93FF03048EFC00000000000000000808 + A7FC5555B4FF5454B2FF5454B2FF5454B3FF585DBAFFCACCE4FFE3E3E3FFE0E0 + E0FFDEDEDEFFDCDCDCFFDCDCDCFFDDDDDDFFC6C8E1FF585EBCFF5456B5FF5656 + B3FF6666BAFF6B6CBEFF0A0A94FC00000000000000000404A9FC6060B9FF5F5F + B8FF5F5FB8FF6464B9FFCECEE4FFE8E8E8FFE6E6E6FFE2E2E2FFACAEC8FFABAD + C7FFE0E0E0FFE1E1E1FFE3E3E3FFCCCCE3FF6464B9FF5F5FB8FF5F5FB8FF7979 + C3FF12129AFC00000000000000000202ACFC6A6ABEFF6A6ABCFF6E6EBEFFD3D3 + E8FFEEEEEEFFEBEBEBFFE7E7E7FFAAAAC2FF6C6EBEFF6C6EBEFFA9A9C0FFE4E4 + E4FFE7E7E7FFEAEAEAFFD2D2E7FF6E6EBEFF6A6ABCFF8080C6FF11119DFC0000 + 0000000000000202B0FC7676C3FF7676C2FFCECEE5FFF0F0F0FFF0F0F0FFECEC + ECFFA8A8BEFF7878C2FF7676C2FF7676C2FF7878C2FFA8A8BDFFEAEAEAFFEEEE + EEFFF0F0F0FFCECEE5FF7676C2FF8989CAFF1111A0FC00000000000000000202 + B4FC8181C8FF8181C6FFA8A8BEFFEEEEEEFFEFEFEFFFA6A6B8FF8383C6FF8181 + C6FF8181C6FF8181C6FF8181C6FF8383C6FFA5A5B8FFEFEFEFFFEEEEEEFFA8A8 + BEFF8181C6FF9292CEFF1010A4FC00000000000000000202B7FC8C8CCDFF8C8C + CCFF8D8DCBFF9B9BAEFF9C9CAEFF8E8ECBFF8C8CCCFF8C8CCCFF8C8CCCFF8C8C + CCFF8C8CCCFF8C8CCCFF8E8ECBFF9C9CAEFF9C9CAEFF8D8DCBFF8C8CCCFF9B9B + D2FF1010A7FC0000000000000000292AC8F89E9ED5FF9898D1FF9898D1FF9898 + D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898 + D1FF9898D1FF9898D1FF9898D1FF9898D1FF9898D1FFA5A5D7FF1818B1F60000 + 0000000000008788EBB9C4C4F0FFB1B1DFFFAEAEDEFFAEAEDEFFAEAEDEFFAEAE + DEFFAEAEDEFFAEAEDEFFAEAEDEFFAEAEDEFFAEAEDDFFAEAEDDFFAEAEDDFFAEAE + DDFFAEAEDDFFAEAEDDFFB2B2DEFFB0B0E6FF3839CCAE0000000000000000A8A8 + EE217D7DEBBF3838DCFB2727D8FD2727D7FD2727D7FD2727D6FD2727D5FD2727 + D5FD2727D4FD2727D3FD2727D3FD2727D2FD2727D1FD2727D1FD2727D0FD2727 + CFFD6262E1FCAAAAF2D68A8ADF1E000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF17FFFF + FF100000000000000000 + } + end + end + object MenuItemEdit: TMenuItem + Caption = 'Edit' + object MenuItem17: TMenuItem + Action = ActCopyTextToClipboard + Bitmap.Data = { + C6070000424DC607000000000000360000002800000016000000160000000100 + 2000000000009007000064000000640000000000000000000000000000000000 + 000000000000000000000000000000000000000000008A8F8DFF868B89FF868B + 89FF858A88FF858A88FF858A88FF858A88FF858A88FF848A87FF848A86FF858A + 88FF848A86FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000868B89FFF2F2F2FFF2F2F2FFF1F1F1FFF0F0 + F0FFF1F1F1FFF4F4F4FFF7F7F7FFF6F6F6FF858A86FFB9BBBAFF858A88FF868C + 88FF000000000000000000000000000000000000000000000000000000000000 + 000000000000868B89FFF7F7F7FFEAEAEAFFE9E9E9FFEDEEEEFFF1F1F1FFF1F1 + F1FFF3F3F3FFF4F4F4FF878D89FFCFCFCFFFB4B5B4FF858A88FF8F9490FF0000 + 000000000000000000000000000000000000000000000000000000000000868B + 89FFFAFAFAFFEAEBEBFFEAEAEAFFE9EAEAFFECECECFFEFEFEFFFEFEFEFFFF1F1 + F1FF848A86FFCFCFCFFFCFCFCFFFB9BBBAFF858A88FF858B87FF8B908DFF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FF868B89FFFDFDFDFFEBEC + ECFFEBEBEBFFEAEBEBFFEAEAEAFFECECECFFF0F0F0FFEEEEEEFF858A88FF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FFF2F2F2FFF3F3F3FFF1F1 + F1FFF0F0F0FFF1F1F1FFEDEDEDFF878C8AFFFFFFFFFFECEDEDFFECECECFFEBEC + ECFFEAEBEBFFEAEAEAFFEEEFEFFFF0F0F0FFEFEFEFFFF1F1F1FFF2F2F2FFF1F1 + F1FFBBBEBDFF868B89FF868B89FFF7F7F7FFEAEAEAFFE9E9E9FFE8E9E9FFE8E8 + E8FFE2E3E3FF878C8AFFFFFFFFFFEDEEEEFFEBECECFFEBEBEBFFEAEBEBFFEAEA + EAFFE9EAEAFFECECECFFEFEFEFFFEDEDEDFFEFEFEFFFF2F2F2FFF7F7F7FF888D + 8BFF868B89FFFAFAFAFFEAEBEBFFEAEAEAFFE9EAEAFFE9E9E9FFE1E2E2FF878C + 8AFFFFFFFFFFEEEFEFFFC5C5C5FFC5C5C5FFC4C5C5FFC4C4C4FFC3C4C4FFC3C3 + C3FFCDCDCDFFDCDCDCFFDCDCDCFFF2F2F2FFF9F9F9FF888D8BFF868B89FFFDFD + FDFFEBECECFFEBEBEBFFEAEBEBFFEAEAEAFFE2E3E3FF878C8AFFFFFFFFFFEFF0 + F0FFEEEFEFFFEEEEEEFFEDEEEEFFECEDEDFFECEDEDFFEBECECFFEBEBEBFFEFEF + EFFFF2F2F2FFEFEFEFFFFCFCFCFF898E8CFF868B89FFFFFFFFFFECEDEDFFC7C7 + C7FFC6C7C7FFC5C6C6FFC1C1C1FF868B89FFFFFFFFFFEFF0F0FFC7C8C8FFC6C7 + C7FFC6C7C7FFC5C6C6FFC5C6C6FFC5C5C5FFC5C5C5FFEDEEEEFFEDEDEDFFF4F4 + F4FFFEFEFEFF898E8CFF868B89FFFFFFFFFFEDEEEEFFECEDEDFFECECECFFEBEC + ECFFE4E5E4FF878C8AFFFFFFFFFFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEEEF + EFFFEEEFEFFFEDEEEEFFEDEDEDFFECEDEDFFEDEEEEFFEDEDEDFFFEFEFEFF898E + 8CFF868C8AFFFFFFFFFFEEEFEFFFC8C9C9FFC8C8C8FFC7C8C8FFC2C3C3FF868B + 89FFFFFFFFFFEFF0F0FFC6C7C7FFC6C7C7FFC6C7C7FFC6C7C7FFC6C7C7FFC5C6 + C6FFC5C5C5FFC5C5C5FFC4C5C5FFEEEEEEFFFEFEFEFF898E8CFF868C8AFFFFFF + FFFFEFF0F0FFEEEFEFFFEEEEEEFFEDEEEEFFE5E6E6FF878C8AFFFFFFFFFFEFF0 + F0FFEEEFEFFFEEEFEFFFEEEFEFFFEEEFEFFFEEEFEFFFEEEFEFFFEDEEEEFFEDEE + EEFFECEDEDFFEDEDEDFFFEFEFEFF898E8CFF868C8AFFFFFFFFFFEFF0F0FFCACA + CAFFC9CACAFFC9CACAFFC3C5C5FF868B89FFFFFFFFFFEFF0F0FFC6C7C7FFC6C7 + C7FFC6C7C7FFC6C7C7FFC6C7C7FFC6C7C7FFC6C7C7FFC6C7C7FFC5C6C6FFEEEE + EEFFFEFEFEFF898E8CFF868C8AFFFFFFFFFFEFF0F0FFEFF0F0FFEFF0F0FFEFF0 + F0FFE7E8E8FF878C8AFFFFFFFFFFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0 + F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEEEFEFFFFEFEFEFF898E + 8CFF868C8AFFFFFFFFFFEFF0F0FFCACACAFFCACACAFFCACACAFFC5C6C5FF868B + 89FFFFFFFFFFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0 + F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFFEFEFEFF898E8CFF868C8AFFFFFF + FFFFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFE8E9E9FF868B89FFFFFFFFFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFFFFFFFF898E8CFF868C8AFFFFFFFFFFEFF0F0FFCACA + CAFFCACACAFFCACACAFFC9C9C9FF959997FF898E8CFF898E8CFF898E8CFF898E + 8CFF8A8E8CFF8A8F8DFF898E8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E + 8CFF898E8CFF8A8F8DFF868C8AFFFFFFFFFFEFF0F0FFEFF0F0FFEFF0F0FFEFF0 + F0FFEFF0F0FFEEEFEFFFE8E9E9FFE8E9E9FFE8E9E9FFE8E9E9FFE7E8E8FFF6F6 + F6FF8D9190FF0000000000000000000000000000000000000000000000000000 + 0000868C8AFFFFFFFFFFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0 + F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFFEFEFEFF8E9291FF0000 + 0000000000000000000000000000000000000000000000000000858A88FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D9190FF00000000000000000000 + 0000000000000000000000000000000000008B908DFF898E8CFF898E8CFF898E + 8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E8CFF898E + 8CFF898E8CFF898E8CFF8B908DFF000000000000000000000000000000000000 + 00000000000000000000 + } + end + end + object MenuItemTestTree: TMenuItem + Caption = 'Test tree' + object MenuItem3: TMenuItem + Action = ActCheckAll + end + object MenuItem16: TMenuItem + Action = ActUncheckAll + end + object MenuItem12: TMenuItem + Action = ActCheckCurrentSuite + Caption = 'Check current suite' + end + object MenuItem15: TMenuItem + Action = ActUncheckCurrentSuite + Caption = 'Uncheck current suite' + end + end + end end diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/guitestrunner.pas lazarus-1.6+dfsg/components/fpcunit/guitestrunner.pas --- lazarus-1.4.4+dfsg/components/fpcunit/guitestrunner.pas 2014-11-12 18:57:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/guitestrunner.pas 2015-08-19 12:16:30.000000000 +0000 @@ -1,5 +1,5 @@ { - Copyright (C) 2004-2014 Dean Zobec, contributors + Copyright (C) 2004-2015 Dean Zobec, contributors This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by @@ -20,6 +20,7 @@ Graeme Geldenhuys <graemeg@gmail.com> Darius Blaszijk <dhkblaszyk@zeelandnet.nl> Reinier Olislagers <reinierolislagers@gmail.com> + Serguei Tarassov <serge@arbinada.com> } unit GuiTestRunner; @@ -29,9 +30,9 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - ExtCtrls, Buttons, ComCtrls, ActnList, Menus, Clipbrd, StdCtrls, - testdecorator, xmltestreport, + Classes, SysUtils, LazFileUtils, LazUTF8, Forms, Controls, Graphics, Dialogs, + ExtCtrls, ComCtrls, ActnList, Menus, Clipbrd, StdCtrls, + IniFiles, testdecorator, xmltestreport, fpcunit, testregistry, SynEdit, SynHighlighterXML, gettext, Translations; type @@ -39,39 +40,55 @@ { TGUITestRunner } TGUITestRunner = class(TForm, ITestListener) - actCopy: TAction; - actCut: TAction; ActCloseForm: TAction; - actCopyErrorMsg: TAction; + ActCopyErrorMsg: TAction; ActCheckCurrentSuite: TAction; ActCheckAll: TAction; + ActSaveResults: TAction; + ActCopyTextToClipboard: TAction; ActRunHighlightedTest: TAction; ActUncheckAll: TAction; ActUncheckCurrentSuite: TAction; - btnRunHighlighted: TBitBtn; ilNodeStates: TImageList; - Memo1: TMemo; + MainMenu1: TMainMenu; + MemoLog: TMemo; + MemoDetails: TMemo; + MenuItem10: TMenuItem; + MenuItem11: TMenuItem; + MenuItem12: TMenuItem; + MenuItem13: TMenuItem; + MenuItem14: TMenuItem; + MenuItem15: TMenuItem; + MenuItem16: TMenuItem; + MenuItem17: TMenuItem; + MenuItem18: TMenuItem; + MenuItem19: TMenuItem; + MenuItem2: TMenuItem; + MenuItemEdit: TMenuItem; + MenuItem3: TMenuItem; + MenuItemTestTree: TMenuItem; + MenuItemActions: TMenuItem; + miExpandNodes: TMenuItem; + miCollapseNodes: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; + MenuItem9: TMenuItem; miRunTest: TMenuItem; miShowfailureMsg: TMenuItem; pbBar: TPaintBox; - PopupMenu3: TPopupMenu; + PopupResults: TPopupMenu; RunAction: TAction; - ActionList1: TActionList; - ActionList2: TActionList; - BtnRun: TBitBtn; - BtnClose: TBitBtn; + ActionListMain: TActionList; + Splitter2: TSplitter; TestTreeImageList: TImageList; - ResultsXMLImageList: TImageList; + MainImageList: TImageList; MenuItem1: TMenuItem; - MenuItem2: TMenuItem; - MenuItem3: TMenuItem; - PopupMenu1: TPopupMenu; - PopupMenu2: TPopupMenu; + MenuItemCopyText: TMenuItem; + PopupTree: TPopupMenu; + PopupDetails: TPopupMenu; SaveDialog: TSaveDialog; Splitter1: TSplitter; TestTree: TTreeView; @@ -79,35 +96,45 @@ PageControl1: TPageControl; Panel1: TPanel; Panel2: TPanel; - XMLToolBar: TToolBar; - CopyXMLToolButton: TToolButton; - CutXMLToolButton: TToolButton; - SaveAsToolButton: TToolButton; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; tsTestTree: TTabSheet; tsResultsXML: TTabSheet; XMLSynEdit: TSynEdit; + actNextError: TAction; + MenuItem20: TMenuItem; + actPrevError: TAction; + MenuItem21: TMenuItem; + MenuItem22: TMenuItem; + MenuItem23: TMenuItem; procedure ActCheckAllExecute(Sender: TObject); procedure ActCheckCurrentSuiteExecute(Sender: TObject); procedure ActCloseFormExecute(Sender: TObject); + procedure ActCopyTextToClipboardExecute(Sender: TObject); + procedure ActCopyTextToClipboardUpdate(Sender: TObject); + procedure ActSaveResultsExecute(Sender: TObject); procedure ActRunHighlightedTestExecute(Sender: TObject); procedure ActUncheckAllExecute(Sender: TObject); procedure ActRunHighLightedTestUpdate(Sender: TObject); procedure ActUncheckCurrentSuiteExecute(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure miCollapseNodesClick(Sender: TObject); + procedure miExpandNodesClick(Sender: TObject); procedure RunExecute(Sender: TObject); procedure GUITestRunnerCreate(Sender: TObject); procedure GUITestRunnerShow(Sender: TObject); - procedure MenuItem3Click(Sender: TObject); - procedure SaveAsToolButtonClick(Sender: TObject); + procedure TestTreeChange(Sender: TObject; Node: TTreeNode); procedure TestTreeCreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass); procedure TestTreeMouseDown(Sender: TOBject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure TestTreeSelectionChanged(Sender: TObject); - procedure actCopyErrorMsgExecute(Sender: TObject); - procedure actCopyErrorMsgUpdate(Sender: TObject); + procedure ActCopyErrorMsgExecute(Sender: TObject); + procedure ActCopyErrorMsgUpdate(Sender: TObject); procedure pbBarPaint(Sender: TObject); - procedure actCopyExecute(Sender: TObject); - procedure actCutExecute(Sender: TObject); + procedure actNextErrorExecute(Sender: TObject); + procedure actPrevErrorExecute(Sender: TObject); private failureCounter: Integer; errorCounter: Integer; @@ -115,16 +142,23 @@ skipsCounter: Integer; barColor: TColor; testSuite: TTest; + FFirstFailure: TTreeNode; // reference to first failed test + FConfStore: TIniFile; procedure BuildTree(rootNode: TTreeNode; aSuite: TTestSuite); + procedure ClearDetails; function FindNode(aTest: TTest): TTreeNode; + function MakeTestPath(Node: TTreeNode): string; procedure ResetNodeColors; procedure PaintNodeError(aNode: TTreeNode); procedure PaintNodeFailure(aNode: TTreeNode); procedure PaintNodeIgnore(aNode: TTreeNode); procedure PaintNodeNonFailed(aNode: TTreeNode); procedure PaintNodeBusy(aNode: TTreeNode); - procedure MemoLog(LogEntry: string); + procedure DoMemoLog(LogEntry: string); procedure EnableRunActions(AValue: boolean); + procedure RestoreTree; + procedure SaveTree; + procedure ShowDetails(const Node: TTreeNode); public procedure AddFailure(ATest: TTest; AFailure: TTestFailure); procedure AddError(ATest: TTest; AError: TTestFailure); @@ -133,6 +167,8 @@ procedure RunTest(ATest: TTest); procedure StartTestSuite(ATestSuite: TTestSuite); procedure EndTestSuite(ATestSuite: TTestSuite); + procedure NextError; + procedure PrevError; end; var @@ -160,28 +196,31 @@ sbtnClose = 'Close'; stshTree = 'Testcase tree'; stshResults = 'Results XML'; - sactRunAction = '&Run'; - sactRunActionH = 'Run all checked test(s)'; + sactRunAction = '&Run all'; + sactRunActionH = 'Run all checked tests'; sactCloseForm = 'Quit'; - sactCloseFormH = 'Quit Testting'; - sactCheckCurrentSuite = 'Check the Current Suite'; - sactUncheckCurrentSuite = 'Uncheck the Current Suite'; - sactCheckAll = 'Check all Tests'; - sactUncheckAll = 'Uncheck all tests'; - sactRunHighlightedTest = 'Run highlighted test'; - smiRunTest = ' &Run all selected (checked) tests'; - smiShowfail= 'Copy message to clipboard'; - smiCopy = '&Copy'; - smiCut = 'C&ut'; - smiCopyClipbrd = 'Copy to clipboard'; + sactCloseFormH = 'Quit testing'; + sactCheckCurrentSuite = 'Select current suite'; + sactUncheckCurrentSuite = 'Deselect current suite'; + sactCheckAll = 'Select all tests'; + sactUncheckAll = 'Deselect all tests'; + sactRunHighlightedTest = 'Run selected'; + sactRunHighlightedTestH = 'Run selected test'; + smiActions = 'Actions'; + smiTestTree = 'Test tree'; + smiEdit = 'Edit'; + sactCopyAllToClipboard = 'Copy text to clipboard'; + sactCopyAllToClipboardH = 'Copy the entire text to clipboard'; + sactSaveResults = 'Save results'; + sactSaveResultsH = 'Save XML results to file'; implementation {$R *.lfm} uses - xmlwrite - ; + xmlwrite; + const // TestTreeImageList indexes: imgGreenBall = 0; //success result @@ -192,8 +231,10 @@ imgGrayBall = 12; //default imgBlueBall = 13; //busy -type +const + SectionName_TestNodes = 'Tests'; +type TTreeNodeState=(tsUnChecked, tsChecked); type @@ -220,29 +261,77 @@ { TGUITestRunner } -procedure TGUITestRunner.actCopyExecute(Sender: TObject); + +function TGUITestRunner.MakeTestPath(Node: TTreeNode): string; begin - Clipboard.AsText := XMLSynEdit.Lines.Text; + Result := Node.Text; + Node := Node.Parent; + If Node = Nil then Exit; + // We can now skip the unnecessary "All Tests" text + while Node.Parent <> nil do + begin + Result := Node.Text + '.' + Result; + Node := Node.Parent; + end; end; -procedure TGUITestRunner.actCutExecute(Sender: TObject); +procedure TGUITestRunner.SaveTree; + + function SkipNode(const Node: TTreeNode): boolean; + begin + Result := Node.Data = nil; + end; + +var + i: integer; +begin + FConfStore.CacheUpdates := true; + FConfStore.EraseSection(SectionName_TestNodes); + for i := 0 to TestTree.Items.Count-1 do + begin + if SkipNode(TestTree.Items[i]) then + continue; + FConfStore.WriteBool(SectionName_TestNodes, + MakeTestPath(TestTree.Items[i]) + '.Checked', + TestTree.Items[i].StateIndex = Ord(tsChecked)); + FConfStore.WriteBool(SectionName_TestNodes, + MakeTestPath(TestTree.Items[i]) + '.Expanded', + TestTree.Items[i].Expanded); + end; + FConfStore.UpdateFile; +end; + +procedure TGUITestRunner.RestoreTree; +var + i: integer; begin - Clipboard.AsText := XMLSynEdit.Lines.Text; - XMLSynEdit.Lines.Clear; + if not FConfStore.SectionExists(SectionName_TestNodes) then + Exit; + for i := 0 to TestTree.Items.Count - 1 do + begin + TestTree.Items[i].Expanded := FConfStore.ReadBool(SectionName_TestNodes, + MakeTestPath(TestTree.Items[i]) + '.Expanded', + TestTree.Items[i].Expanded); + if FConfStore.ReadBool(SectionName_TestNodes, + MakeTestPath(TestTree.Items[i]) + '.Checked', + true) then + TestTree.Items[i].StateIndex := Ord(tsChecked) + else + TestTree.Items[i].StateIndex := Ord(tsUnChecked); + end; end; procedure TGUITestRunner.GUITestRunnerCreate(Sender: TObject); begin + FConfStore := TIniFile.Create(ExtractFileNameOnly(ParamStr(0)) + '.fpcunit.ini'); // Prevent ini file names conflict if tests are embedded in application barColor := clGreen; TestTree.Items.Clear; BuildTree(TestTree.Items.AddObject(nil, rsAllTests, GetTestRegistry), GetTestRegistry); + RestoreTree; PageControl1.ActivePage := tsTestTree; // - BtnRun.Caption:= sbtnRun; - btnRunHighlighted.Caption := sbtnRunH; - BtnClose.Caption:= sbtnClose; tsTestTree.Caption:= stshTree; tsResultsXML.Caption:= stshResults; // @@ -256,14 +345,19 @@ ActCheckAll.Caption:= sactCheckAll; ActUncheckAll.Caption:= sactUncheckAll; ActRunHighlightedTest.Caption:= sactRunHighlightedTest; - miRunTest.Caption:= smiRunTest; - miShowfailureMsg.Caption:= smiShowfail; - MenuItem1.Caption:= smiCopy; - MenuItem2.Caption:= smiCut; - MenuItem3.Caption:= smiCopyClipbrd; - // Select the first entry in the tree in order to immediately activate the + ActRunHighlightedTest.Hint := sactRunHighlightedTestH; + MenuItemActions.Caption := smiActions; + MenuItemTestTree.Caption := smiTestTree; + MenuItemEdit.Caption := smiEdit; + ActCopyTextToClipboard.Caption := sactCopyAllToClipboard; + ActCopyTextToClipboard.Hint := sactCopyAllToClipboardH; + ActSaveResults.Caption := sactSaveResults; + ActSaveResults.Hint := sactSaveResultsH; + + // Select the first entry in the tree in order to immediately activate the // Run All tests button: - if TestTree.Items.Count>0 then begin + if TestTree.Items.Count>0 then + begin TestTree.Items.SelectOnlyThis(TestTree.Items[0]); TestTree.Items[0].Expand(False); end; @@ -271,6 +365,7 @@ procedure TGUITestRunner.RunExecute(Sender: TObject); begin + FFirstFailure := nil; testSuite := GetTestRegistry; TestTree.Selected := TestTree.Items[0]; RunTest(testSuite); @@ -281,6 +376,25 @@ Close; end; +procedure TGUITestRunner.ActCopyTextToClipboardExecute(Sender: TObject); +begin + if ActiveControl = MemoDetails then + Clipboard.AsText := MemoDetails.Lines.Text + else if ActiveControl = XMLSynEdit then + Clipboard.AsText := XMLSynEdit.Text; +end; + +procedure TGUITestRunner.ActCopyTextToClipboardUpdate(Sender: TObject); +begin + TAction(Sender).Enabled := (ActiveControl = MemoDetails) or (ActiveControl = XMLSynEdit); +end; + +procedure TGUITestRunner.ActSaveResultsExecute(Sender: TObject); +begin + if SaveDialog.Execute then + XMLSynEdit.Lines.SaveToFile(SaveDialog.FileName); +end; + procedure TGUITestRunner.ActCheckAllExecute(Sender: TObject); var i: integer; @@ -303,11 +417,13 @@ procedure TGUITestRunner.ActRunHighlightedTestExecute(Sender: TObject); begin + FFirstFailure := nil; if (TestTree.Selected <> nil) and (TestTree.Selected.Data <> nil) then begin testSuite := TTest(TestTree.Selected.Data); end; RunTest(testSuite); + TestTree.MakeSelectionVisible; end; procedure TGUITestRunner.ActUncheckAllExecute(Sender: TObject); @@ -337,21 +453,48 @@ end; end; -procedure TGUITestRunner.GUITestRunnerShow(Sender: TObject); +procedure TGUITestRunner.FormDestroy(Sender: TObject); begin - if (ParamStrUTF8(1) = '--now') or (ParamStrUTF8(1) = '-n') then - RunExecute(Self); + // store window position and size + FConfStore.WriteInteger('WindowState', 'Left', Left); + FConfStore.WriteInteger('WindowState', 'Top', Top); + FConfStore.WriteInteger('WindowState', 'Width', Width); + FConfStore.WriteInteger('WindowState', 'Height', Height); + SaveTree; + FConfStore.Free; end; -procedure TGUITestRunner.MenuItem3Click(Sender: TObject); +procedure TGUITestRunner.miCollapseNodesClick(Sender: TObject); begin - Clipboard.AsText := Memo1.Lines.Text; + if not Assigned(TestTree.Selected) then + Exit; + TestTree.Selected.Collapse(True); end; -procedure TGUITestRunner.SaveAsToolButtonClick(Sender: TObject); +procedure TGUITestRunner.miExpandNodesClick(Sender: TObject); begin - if SaveDialog.Execute then - XMLSynEdit.Lines.SaveToFile(SaveDialog.FileName); + if not Assigned(TestTree.Selected) then + Exit; + TestTree.Selected.Expand(True); +end; + +procedure TGUITestRunner.GUITestRunnerShow(Sender: TObject); +begin + // restore last used position and size + Left := FConfStore.ReadInteger('WindowState', 'Left', Left); + Top := FConfStore.ReadInteger('WindowState', 'Top', Top); + Width := FConfStore.ReadInteger('WindowState', 'Width', Width); + Height := FConfStore.ReadInteger('WindowState', 'Height', Height); + + if (ParamStrUTF8(1) = '--now') or (ParamStrUTF8(1) = '-n') then + RunExecute(Self); +end; + +procedure TGUITestRunner.TestTreeChange(Sender: TObject; Node: TTreeNode); +begin + if not Assigned(Node) then + Exit; + //MemoDetails.Lines.Text := TMessageTreeNode(Node).Message; end; procedure TGUITestRunner.TestTreeCreateNodeClass(Sender: TCustomTreeView; @@ -395,30 +538,52 @@ end; end; +procedure TGUITestRunner.ClearDetails; +begin + MemoDetails.Lines.Clear; +end; + +procedure TGUITestRunner.ShowDetails(const Node: TTreeNode); -procedure TGUITestRunner.TestTreeSelectionChanged(Sender: TObject); + procedure AddMessages(const Node: TTreeNode); + begin + if (Node is TMessageTreeNode) and (TMessageTreeNode(Node).Message <> '') then + MemoDetails.Lines.Add(TMessageTreeNode(Node).Message) + else + MemoDetails.Lines.Add(Node.Text); + end; + +var + CurrNode: TTreeNode; begin - if ((Sender as TTreeView).Selected <> nil) and - Assigned((Sender as TTreeview).Selected.Data) then + ClearDetails; + if (Node.Data <> nil) and (TObject(Node.Data) is TTestCase) then begin - btnRunHighlighted.Visible := true; - btnRunHighlighted.Caption := rsRun + (Sender as TTreeview).Selected.Text; - end - else + CurrNode := Node.GetFirstChild; + while CurrNode <> nil do begin - btnRunHighlighted.Visible := false; - btnRunHighlighted.Caption := ''; + AddMessages(CurrNode); + CurrNode := CurrNode.GetNextSibling; end; + end + else if (Node.Parent <> nil) and (Node.Parent.Data <> nil) and (TObject(Node.Parent.Data) is TTestCase) then + AddMessages(Node); +end; + +procedure TGUITestRunner.TestTreeSelectionChanged(Sender: TObject); +begin + if (Sender as TTreeView).Selected <> nil then + ShowDetails((Sender as TTreeView).Selected); end; -procedure TGUITestRunner.actCopyErrorMsgExecute(Sender: TObject); +procedure TGUITestRunner.ActCopyErrorMsgExecute(Sender: TObject); begin ClipBoard.AsText := (TestTree.Selected as TMessageTreeNode).Message; end; -procedure TGUITestRunner.actCopyErrorMsgUpdate(Sender: TObject); +procedure TGUITestRunner.ActCopyErrorMsgUpdate(Sender: TObject); begin (Sender as TAction).Enabled := Assigned(TestTree.selected) and (Copy(TestTree.Selected.Text, 1, 9) = 'Message: '); @@ -460,6 +625,16 @@ end; end; +procedure TGUITestRunner.actNextErrorExecute(Sender: TObject); +begin + NextError; +end; + +procedure TGUITestRunner.actPrevErrorExecute(Sender: TObject); +begin + PrevError; +end; + procedure TGUITestRunner.BuildTree(rootNode: TTreeNode; aSuite: TTestSuite); var @@ -489,7 +664,7 @@ begin Result := nil; for i := 0 to TestTree.Items.Count -1 do - if (TTest(TestTree.Items[i].data) = aTest) then + if (TTest(TestTree.Items[i].Data) = aTest) then begin Result := TestTree.Items[i]; Exit; @@ -519,10 +694,6 @@ aNode.Expand(True); end; aNode := aNode.Parent; - if Assigned(aNode) and - ((aNode.ImageIndex in [imgGreenBall, imgPurpleBall, imgGrayBall, imgBlueBall]) or - (ANode.ImageIndex = -1)) then - PaintNodeError(aNode); end; end; @@ -541,9 +712,6 @@ end; end; aNode := aNode.Parent; - if Assigned(aNode) and ((aNode.ImageIndex in [imgGreenBall, imgGrayBall, imgBlueBall]) or - (ANode.ImageIndex = -1)) then - PaintNodeFailure(aNode); end; end; @@ -594,14 +762,14 @@ end; end; if Assigned(aNode.Parent) then - if aNode.Index = aNode.Parent.Count -1 then + if aNode.Index = aNode.Parent.Count -1 then // is aNode the last child begin aNode := aNode.Parent; noFailedSibling := true; for i := 0 to aNode.Count -2 do begin if aNode.Items[i].ImageIndex <> imgGreenBall then - noFailedSibling := false;; + noFailedSibling := false; end; if (aNode.ImageIndex = imgBlueBall) and noFailedSibling then @@ -629,19 +797,17 @@ for i := 0 to aNode.Count -2 do begin if aNode.Items[i].ImageIndex <> imgGreenBall then - BusySibling := false;; + BusySibling := false; end; - if (aNode.ImageIndex = imgBlueBall) and - BusySibling then + if (aNode.ImageIndex = imgBlueBall) and BusySibling then PaintNodeBusy(aNode); end; end; end; - -procedure TGUITestRunner.MemoLog(LogEntry: string); +procedure TGUITestRunner.DoMemoLog(LogEntry: string); begin - Memo1.Lines.Add(TimeToStr(Now) + ' - ' + LogEntry); + MemoLog.Lines.Add(TimeToStr(Now) + ' - ' + LogEntry); end; procedure TGUITestRunner.EnableRunActions(AValue: boolean); @@ -650,43 +816,53 @@ RunAction.Enabled := AValue; end; - procedure TGUITestRunner.AddFailure(ATest: TTest; AFailure: TTestFailure); var FailureNode: TTreeNode; - node: TMessageTreeNode; + Node: TMessageTreeNode; begin FailureNode := FindNode(ATest); if Assigned(FailureNode) then begin - node := TestTree.Items.AddChild(FailureNode, + Node := TestTree.Items.AddChild(FailureNode, Format(rsMessage, [FirstLine(AFailure.ExceptionMessage)])) as TMessageTreeNode; if not(AFailure.IsIgnoredTest) then begin // Genuine failure - node.Message := AFailure.ExceptionMessage; - node.ImageIndex := imgWarningSign; - node.SelectedIndex := imgWarningSign; - node := TestTree.Items.AddChild(FailureNode, + if not Assigned(FFirstFailure) then + FFirstFailure := FailureNode; + Node.Message := AFailure.ExceptionMessage; + Node.ImageIndex := imgWarningSign; + Node.SelectedIndex := imgWarningSign; + Node := TestTree.Items.AddChild(FailureNode, Format(rsException, [AFailure.ExceptionClassName])) as TMessageTreeNode; - node.ImageIndex := imgWarningSign; - node.SelectedIndex := imgWarningSign; + Node.ImageIndex := imgWarningSign; + Node.SelectedIndex := imgWarningSign; + {$IF FPC_FULLVERSION <= 30001} + Node := TestTree.Items.AddChild(FailureNode, + Format('at line %d in <%s>', [AFailure.LineNumber, AFailure.UnitName])) as TMessageTreeNode; + {$ELSE} + Node := TestTree.Items.AddChild(FailureNode, 'at ' + AFailure.LocationInfo) as TMessageTreeNode; + {$ENDIF} + Node.ImageIndex := imgWarningSign; + Node.SelectedIndex := imgWarningSign; PaintNodeFailure(FailureNode); end else begin // Although reported as a failure, the test was set up // to be ignored so it is actually a success of sorts - node.Message := AFailure.ExceptionMessage; - node.ImageIndex := imgGreenBall; - node.SelectedIndex := imgGreenBall; - node := TestTree.Items.AddChild(FailureNode, + Node.Message := AFailure.ExceptionMessage; + Node.ImageIndex := imgGreenBall; + Node.SelectedIndex := imgGreenBall; + Node := TestTree.Items.AddChild(FailureNode, Format(rsException, [AFailure.ExceptionClassName])) as TMessageTreeNode; - node.ImageIndex := imgGreenBall; - node.SelectedIndex := imgGreenBall; + Node.ImageIndex := imgGreenBall; + Node.SelectedIndex := imgGreenBall; PaintNodeIgnore(FailureNode); end; + ShowDetails(FailureNode); end; if not(AFailure.IsIgnoredTest) then @@ -700,40 +876,38 @@ procedure TGUITestRunner.AddError(ATest: TTest; AError: TTestFailure); var - ErrorNode, node: TTreeNode; + ErrorNode, Node: TTreeNode; MessageNode: TMessageTreeNode; begin ErrorNode := FindNode(ATest); if Assigned(ErrorNode) then begin + if not Assigned(FFirstFailure) then + FFirstFailure := ErrorNode; MessageNode := TestTree.Items.AddChild(ErrorNode, Format(rsExceptionMes, [FirstLine(AError.ExceptionMessage)])) as TMessageTreeNode; MessageNode.Message := AError.ExceptionMessage; MessageNode.ImageIndex := imgWarningSign; MessageNode.SelectedIndex := imgWarningSign; - node := TestTree.Items.AddChild(ErrorNode, Format(rsExceptionCla, [ + Node := TestTree.Items.AddChild(ErrorNode, Format(rsExceptionCla, [ AError.ExceptionClassName])); - node.ImageIndex := imgWarningSign; - node.SelectedIndex := imgWarningSign; - if (AError.SourceUnitName <> '') and - (AError.FailedMethodName <> '') - then - begin - node := TestTree.Items.AddChild(ErrorNode, Format(rsUnitName, [ - AError.SourceUnitName])); - node.ImageIndex := imgInfoSign; - node.SelectedIndex := imgInfoSign; - node := TestTree.Items.AddChild(ErrorNode, Format(rsMethodName, [ - AError.FailedMethodName])); - node.ImageIndex := imgInfoSign; - node.SelectedIndex := imgInfoSign; - node := TestTree.Items.AddChild(ErrorNode, Format(rsLineNumber, [IntToStr( - AError.LineNumber)])); - node.ImageIndex := imgInfoSign; - node.SelectedIndex := imgInfoSign; - end; + Node.ImageIndex := imgWarningSign; + Node.SelectedIndex := imgWarningSign; + // line info details + {$IF FPC_FULLVERSION <= 30001} + Node := TestTree.Items.AddChild(ErrorNode, + Format('at line %d in <%s>', [AError.LineNumber, AError.UnitName])) as TMessageTreeNode; + + {$ELSE} + node := TestTree.Items.AddChild(ErrorNode, 'at ' + AError.LocationInfo); + {$ENDIF} + Node.ImageIndex := imgInfoSign; + Node.SelectedIndex := imgInfoSign; + // TODO : add stack trace info + PaintNodeError(ErrorNode); + ShowDetails(ErrorNode); end; Inc(errorCounter); barColor := clRed; @@ -773,6 +947,7 @@ end; procedure TGUITestRunner.RunTest(ATest: TTest); + procedure SkipUncheckedTests(aResult: TTestResult; aNode: TTreeNode); var i: integer; @@ -787,8 +962,9 @@ TestResult:TTestResult; w: TXMLResultsWriter; m: TMemoryStream; - begin + SaveTree; + ClearDetails; barcolor := clGreen; ResetNodeColors; failureCounter := 0; @@ -807,10 +983,10 @@ w.FileName := 'null'; // prevents output to the console TestResult.AddListener(w); - MemoLog(Format(rsRunning, [TestTree.Selected.Text])); + DoMemoLog(Format(rsRunning, [TestTree.Selected.Text])); aTest.Run(TestResult); - MemoLog(Format(rsNumberOfExec, [IntToStr(TestResult.RunTests), - FormatDateTime('hh:nn:ss.zzz', Now - TestResult.StartingTime)])); + DoMemoLog(Format(rsNumberOfExec, [IntToStr(TestResult.RunTests), + FormatDateTime('hh:nn:ss.zzz', Now - TestResult.StartingTime)])); w.WriteResult(TestResult); m := TMemoryStream.Create; @@ -821,7 +997,7 @@ XMLSynEdit.Lines.LoadFromStream(m); except on E: Exception do - XMLSynEdit.Lines.Text:='WriteXMLFile exception: '+E.ClassName+'/'+E.Message; + XMLSynEdit.Lines.Text:='WriteXMLFile exception: ' + E.ClassName + '/' + E.Message; end; finally m.Free; @@ -830,9 +1006,8 @@ finally w.Free; end; - finally + finally EnableRunActions(true); - TestResult.Free; end; end; @@ -843,20 +1018,66 @@ end; procedure TGUITestRunner.EndTestSuite(ATestSuite: TTestSuite); +var + Node: TTreeNode; begin - // do nothing + // scroll treeview to first failed test + if Assigned(FFirstFailure) then + begin + TestTree.Selected := FFirstFailure; + TestTree.MakeSelectionVisible; + end; + + Node := FindNode(ATestSuite); + if Assigned(Node) then + PaintNodeNonFailed(Node); +end; + +procedure TGUITestRunner.NextError; +var + Node: TTreeNode; +begin + Node := TestTree.Selected; + while Assigned(Node) do + begin + Node := Node.GetNext; + if Assigned(Node) and (Node.ImageIndex in [imgRedBall, imgPurpleBall]) and + (TObject(Node.Data) is TTestCase) then + begin + TestTree.Selected := Node; + TestTree.MakeSelectionVisible; + Exit; + end; + end; +end; + +procedure TGUITestRunner.PrevError; +var + Node: TTreeNode; +begin + Node := TestTree.Selected; + while Assigned(Node) do + begin + Node := Node.GetPrev; + if Assigned(Node) and (Node.ImageIndex in [imgRedBall, imgPurpleBall]) and + (TObject(Node.Data) is TTestCase) then + begin + TestTree.Selected := Node; + TestTree.MakeSelectionVisible; + Exit; + end; + end; end; procedure TranslateResStrings; var Lang, FallbackLang, S: String; - begin - GetLanguageIDs(Lang,FallbackLang); // in unit gettext - S:=AppendPathDelim(AppendPathDelim(ExtractFileDir(ParamStr(0))) + 'languages'); + GetLanguageIDs(Lang, FallbackLang); // in unit gettext + S := AppendPathDelim(AppendPathDelim(ExtractFileDir(ParamStr(0))) + 'languages'); if FallbackLang = 'pt' then Lang := 'pb'; - TranslateUnitResourceStrings('guitestrunner',S+'guitestrunner.%s.po', Lang,FallbackLang); + TranslateUnitResourceStrings('guitestrunner', S + 'guitestrunner.%s.po', Lang, FallbackLang); end; initialization diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/ide/fpcunitlazideintf.pas lazarus-1.6+dfsg/components/fpcunit/ide/fpcunitlazideintf.pas --- lazarus-1.4.4+dfsg/components/fpcunit/ide/fpcunitlazideintf.pas 2013-03-12 09:17:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/ide/fpcunitlazideintf.pas 2015-09-12 09:41:06.000000000 +0000 @@ -170,7 +170,6 @@ // add AProject.AddPackageDependency('FCL'); AProject.AddPackageDependency('LCL'); - AProject.AddPackageDependency('FPCUnitTestRunner'); // compiler options AProject.LazCompilerOptions.UseLineInfoUnit:=true; @@ -355,7 +354,6 @@ // add FCL dependency AProject.AddPackageDependency('FCL'); - AProject.AddPackageDependency('FPCUnitConsoleRunner'); // compiler options AProject.LazCompilerOptions.UseLineInfoUnit:=true; diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.fr.po lazarus-1.6+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.fr.po --- lazarus-1.4.4+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.fr.po 2015-04-16 20:39:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -3,13 +3,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: 2015-04-16 07:54+0100\n" -"PO-Revision-Date: 2015-04-16 13:33+0100\n" +"PO-Revision-Date: 2016-01-25 10:31+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: fpcunitlazideintf.sfpcunconsoletestapp msgid "FPCUnit Console Test Application" @@ -17,23 +17,23 @@ #: fpcunitlazideintf.sfpcunconsoletestdesc msgid "FPCUnit Console Test Application%sAn application to run FPCUnit test cases in console mode.%sThe application source is automatically maintained by Lazarus." -msgstr "Unité FPC - Application console de test%sUne application pour exécuter les tests des unités FPC en mode console.%sLe code source de l'application est automatiquement mis à jour par Lazarus." +msgstr "Unité FPC - Application console de test%sUne application pour exécuter les tests types des unités FPC en mode console.%sLe code source de l'application est automatiquement mis à jour par Lazarus." #: fpcunitlazideintf.sfpcuntestapp msgid "FPCUnit Test Application" -msgstr "Unités FPC - Application de test" +msgstr "Unité FPC - Application de test" #: fpcunitlazideintf.sfpcuntestappdesc msgid "FPCUnit Test Application%sAn application to run FPCUnit test cases.%sThe application source is automatically maintained by Lazarus." -msgstr "Unité FPC - Application de test%sUne application pour exécuter les tests des unités de FPC.%sLe code source de l'application est automatiquement mis à jour par Lazarus." +msgstr "Unité FPC - Application de test%sUne application pour exécuter les tests types des unités de FPC.%sLe code source de l'application est automatiquement mis à jour par Lazarus." #: fpcunitlazideintf.sfpcuntestcase msgid "FPCUnit Test Case" -msgstr "Unité de FPC - Cas de test" +msgstr "Unité de FPC - Test type" #: fpcunitlazideintf.sfpcuntestcasedesc msgid "FPCUnit Test Case%sA unit containing a FPCUnit Test Case." -msgstr "Unité de FPC - Cas de test%sUne unité contenant un cas de test des unités FPC." +msgstr "Unité FPC - Test type%sUne unité contenant un test type des unités FPC." #: fpcunitlazideintf.swriteyourowntest msgid "Write your own test" diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.hu.po lazarus-1.6+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.hu.po --- lazarus-1.4.4+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/ide/languages/fpcunitlazideintf.hu.po 2016-02-06 15:11:04.000000000 +0000 @@ -13,27 +13,27 @@ #: fpcunitlazideintf.sfpcunconsoletestapp msgid "FPCUnit Console Test Application" -msgstr "FPCUnit Parancssoros Teszt Alkalmazás" +msgstr "FPCUnit parancssoros teszt alkalmazás" #: fpcunitlazideintf.sfpcunconsoletestdesc msgid "FPCUnit Console Test Application%sAn application to run FPCUnit test cases in console mode.%sThe application source is automatically maintained by Lazarus." -msgstr "FPCUnit Parancssoros Teszt Alkalmazás%sEgy alkalmazás FPCUnit tesztek futtatására parancssoros módban.%sAz alkalmazás forráskódját a Lazarus automatikusan karbantartja." +msgstr "FPCUnit parancssoros teszt alkalmazás%sEgy alkalmazás FPCUnit tesztek futtatására parancssoros módban.%sAz alkalmazás forráskódját a Lazarus automatikusan karbantartja." #: fpcunitlazideintf.sfpcuntestapp msgid "FPCUnit Test Application" -msgstr "FPCUnit Teszt Alkalmazás" +msgstr "FPCUnit teszt alkalmazás" #: fpcunitlazideintf.sfpcuntestappdesc msgid "FPCUnit Test Application%sAn application to run FPCUnit test cases.%sThe application source is automatically maintained by Lazarus." -msgstr "FPCUnit Teszt Alkalmazás%sEgy alkalmazás FPCUnit tesztek futtatására.%sAz alkalmazás forráskódját a Lazarus automatikusan karbantartja." +msgstr "FPCUnit teszt alkalmazás%sEgy alkalmazás FPCUnit tesztek futtatására.%sAz alkalmazás forráskódját a Lazarus automatikusan karbantartja." #: fpcunitlazideintf.sfpcuntestcase msgid "FPCUnit Test Case" -msgstr "FPCUnit Teszt" +msgstr "FPCUnit teszt" #: fpcunitlazideintf.sfpcuntestcasedesc msgid "FPCUnit Test Case%sA unit containing a FPCUnit Test Case." -msgstr "FPCUnit Teszt%sEgy unit, amely FPCUnit tesztet tartalmaz." +msgstr "FPCUnit teszt%sEgy unit, amely FPCUnit tesztet tartalmaz." #: fpcunitlazideintf.swriteyourowntest msgid "Write your own test" diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.de.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.de.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.de.po 2010-09-11 14:01:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.de.po 2015-04-21 17:30:05.000000000 +0000 @@ -132,7 +132,7 @@ msgstr "Ausschneiden" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" +msgid "&Run all selected (checked) tests" msgstr "" #: guitestrunner.smishowfail diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.fr.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.fr.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.fr.po 2015-04-16 20:39:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -3,13 +3,13 @@ "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: 2015-04-16 07:54+0100\n" -"PO-Revision-Date: 2015-04-16 07:54+0100\n" +"PO-Revision-Date: 2015-12-18 09:52+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: guitestrunner.rsalltests msgid "All Tests" @@ -134,8 +134,8 @@ msgstr "Co&uper" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" -msgstr "&Exécuter les tests choisis (cochés)" +msgid "&Run all selected (checked) tests" +msgstr "&Exécuter tous les tests choisis (cochés)" #: guitestrunner.smishowfail msgid "Copy message to clipboard" @@ -148,3 +148,4 @@ #: guitestrunner.stshtree msgid "Testcase tree" msgstr "Arbre des tests" + diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.hu.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.hu.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.hu.po 2015-12-21 23:18:06.000000000 +0000 @@ -134,8 +134,8 @@ msgstr "Kivágás" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" -msgstr " Minden kiválasztott (kijelölt) teszt futtatása" +msgid "&Run all selected (checked) tests" +msgstr "Minden kiválasztott (kijelölt) teszt futtatása" #: guitestrunner.smishowfail msgid "Copy message to clipboard" @@ -147,4 +147,4 @@ #: guitestrunner.stshtree msgid "Testcase tree" -msgstr "Teszt-esetek fája" +msgstr "Teszt-fa" diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.it.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.it.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.it.po 2013-09-07 16:42:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.it.po 2015-04-21 17:30:05.000000000 +0000 @@ -134,7 +134,9 @@ msgstr "&Taglia" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" +#, fuzzy +#| msgid " &Run all selected (checked) tests" +msgid "&Run all selected (checked) tests" msgstr "&Esegui tutti i test abilitati" #: guitestrunner.smishowfail diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.lt.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.lt.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.lt.po 2013-09-14 13:13:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.lt.po 2015-04-21 17:30:05.000000000 +0000 @@ -1,4 +1,3 @@ - Valdas Jankunas <zmuogs@gmail.com>, 2012. msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" @@ -135,7 +134,9 @@ msgstr "Iš&kirpti" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" +#, fuzzy +#| msgid " &Run all selected (checked) tests" +msgid "&Run all selected (checked) tests" msgstr " &Vykdyti parinktus testavimus" #: guitestrunner.smishowfail diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.po 2010-05-23 23:40:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.po 2015-04-21 17:30:05.000000000 +0000 @@ -124,7 +124,7 @@ msgstr "" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" +msgid "&Run all selected (checked) tests" msgstr "" #: guitestrunner.smishowfail diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.pt_BR.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.pt_BR.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.pt_BR.po 2011-01-29 12:23:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.pt_BR.po 2015-04-21 17:30:05.000000000 +0000 @@ -142,7 +142,9 @@ msgstr "Rec&ortar" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" +#, fuzzy +#| msgid " &Run all selected (checked) tests" +msgid "&Run all selected (checked) tests" msgstr " &Executar todos os testes selecionados" #: guitestrunner.smishowfail diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.ru.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.ru.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.ru.po 2010-05-23 23:40:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.ru.po 2015-04-21 20:59:51.000000000 +0000 @@ -132,8 +132,8 @@ msgstr "&Вырезать" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" -msgstr " Запустить все выбранные (&отмеченные) тесты" +msgid "&Run all selected (checked) tests" +msgstr "Запустить все выбранные (&отмеченные) тесты" #: guitestrunner.smishowfail msgid "Copy message to clipboard" diff -Nru lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.uk.po lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.uk.po --- lazarus-1.4.4+dfsg/components/fpcunit/languages/guitestrunner.uk.po 2011-06-12 15:01:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpcunit/languages/guitestrunner.uk.po 2015-04-21 17:30:05.000000000 +0000 @@ -132,7 +132,9 @@ msgstr "Ви&різати" #: guitestrunner.smiruntest -msgid " &Run all selected (checked) tests" +#, fuzzy +#| msgid " &Run all selected (checked) tests" +msgid "&Run all selected (checked) tests" msgstr " &Запустити всі вибрані (відзначені) тести" #: guitestrunner.smishowfail diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpd/fpdcommand.pas lazarus-1.6+dfsg/components/fpdebug/app/fpd/fpdcommand.pas --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpd/fpdcommand.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpd/fpdcommand.pas 2015-01-25 17:37:34.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: fpdcommand.pas 49100 2015-05-18 22:54:40Z martin $ } +{ $Id: fpdcommand.pas 47519 2015-01-25 17:37:34Z joost $ } { --------------------------------------------------------------------------- fpdcommand.pas - FP standalone debugger - Command interpreter @@ -9,7 +9,7 @@ --------------------------------------------------------------------------- @created(Mon Apr 10th WET 2006) - @lastmod($Date: 2015-05-19 00:54:40 +0200 (Di, 19 Mai 2015) $) + @lastmod($Date: 2015-01-25 18:37:34 +0100 (So, 25 Jan 2015) $) @author(Marc Weustink <marc@@dommelstein.nl>) *************************************************************************** diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpd/fpdloop.pas lazarus-1.6+dfsg/components/fpdebug/app/fpd/fpdloop.pas --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpd/fpdloop.pas 2014-09-01 16:38:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpd/fpdloop.pas 2015-05-25 15:22:59.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: fpdloop.pas 46103 2014-09-01 16:38:41Z joost $ } +{ $Id: fpdloop.pas 49166 2015-05-25 15:22:59Z joost $ } { --------------------------------------------------------------------------- fpdloop.pas - FP standalone debugger - Debugger main loop @@ -10,7 +10,7 @@ --------------------------------------------------------------------------- @created(Mon Apr 10th WET 2006) - @lastmod($Date: 2014-09-01 18:38:41 +0200 (Mo, 01 Sep 2014) $) + @lastmod($Date: 2015-05-25 17:22:59 +0200 (Mo, 25 Mai 2015) $) @author(Marc Weustink <marc@@dommelstein.nl>) *************************************************************************** @@ -80,9 +80,6 @@ TPDDbgMemReader = class(TDbgMemReader) protected function GetDbgProcess: TDbgProcess; override; - public - function ReadMemory(AnAddress: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; override; - function ReadMemoryEx(AnAddress, AnAddressSpace: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; override; end; @@ -98,16 +95,6 @@ result := GController.CurrentProcess; end; -function TPDDbgMemReader.ReadMemory(AnAddress: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; -begin - result := GetDbgProcess.ReadData(AnAddress, ASize, ADest^); -end; - -function TPDDbgMemReader.ReadMemoryEx(AnAddress, AnAddressSpace: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; -begin - result := GetDbgProcess.ReadData(AnAddress, ASize, ADest^); -end; - { TFPDLoop } procedure TFPDLoop.GControllerExceptionEvent(var continue: boolean; const ExceptionClass, ExceptionMessage: string); diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debuginoutputprocessor.pas lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debuginoutputprocessor.pas --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debuginoutputprocessor.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debuginoutputprocessor.pas 2015-06-21 10:11:52.000000000 +0000 @@ -10,10 +10,10 @@ fpjson, FpDbgUtil, DebugThreadCommand, + DbgIntfDebuggerBase, debugthread, FpDbgClasses, typinfo, - varutils, variants, jsonparser; @@ -38,13 +38,11 @@ public function TextToCommand(const ACommandText: string): TFpDebugThreadCommand; override; function EventToText(AnEvent: TFpDebugEvent): string; override; + class function InteractiveInitializationMessage(APort: integer): string; end; implementation -var - GJSonInOutputProcessor: TJSonInOutputProcessor = nil; - { TCustomInOutputProcessor } constructor TCustomInOutputProcessor.create(AConnectionIdentifier: integer; AnOnLog: TOnLog); @@ -137,9 +135,11 @@ function TJSonInOutputProcessor.EventToText(AnEvent: TFpDebugEvent): string; var - s: string; JSonEvent: TJSONObject; JSonLocationRec: TJSONObject; + JSonArray: TJSONArray; + JSonArrayEntry: TJSONObject; + i: Integer; begin JSonEvent := TJSONObject.Create; try @@ -148,6 +148,8 @@ JSonEvent.Add('breakpointLocation', FormatAddress(AnEvent.BreakpointAddr)); if AnEvent.SendByConnectionIdentifier>0 then JSonEvent.Add('connIdentifier', AnEvent.SendByConnectionIdentifier); + if AnEvent.Validity<>ddsUnknown then + JSonEvent.Add('validity', DebuggerDataStateStr[AnEvent.Validity]); if AnEvent.LocationRec.Address <> 0 then begin JSonLocationRec := TJSONObject.Create; @@ -174,7 +176,6 @@ end; etLog : begin - JSonEvent.Add('message',AnEvent.Message); case AnEvent.LogLevel of dllDebug: JSonEvent.Add('logType','debug'); dllError: JSonEvent.Add('logType','error'); @@ -184,18 +185,86 @@ etNotification: begin JSonEvent.Add('notificationType',FpDebugNotificationTypeNames[AnEvent.NotificationType]); - JSonEvent.Add('message',AnEvent.Message); if AnEvent.EventName<>'' then JSonEvent.Add('command',AnEvent.EventName); end; end; + JSonEvent.Add('message',AnEvent.Message); + if length(AnEvent.StackEntryArray)>0 then + begin + JSonArray := TJSONArray.Create; + for i := 0 to high(AnEvent.StackEntryArray) do + begin + JSonArrayEntry := TJSONObject.Create; + JSonArrayEntry.Add('address', FormatAddress(AnEvent.StackEntryArray[i].AnAddress)); + JSonArrayEntry.Add('frameaddress', FormatAddress(AnEvent.StackEntryArray[i].FrameAdress)); + JSonArrayEntry.Add('sourcefile', AnEvent.StackEntryArray[i].SourceFile); + JSonArrayEntry.Add('line', AnEvent.StackEntryArray[i].Line); + JSonArrayEntry.Add('functionname', AnEvent.StackEntryArray[i].FunctionName); + JSonArray.Add(JSonArrayEntry); + end; + JSonEvent.Add('callstack', JSonArray); + end; + if length(AnEvent.DisassemblerEntryArray)>0 then + begin + JSonArray := TJSONArray.Create; + for i := 0 to high(AnEvent.DisassemblerEntryArray) do + begin + JSonArrayEntry := TJSONObject.Create; + JSonArrayEntry.Add('address', FormatAddress(AnEvent.DisassemblerEntryArray[i].Addr)); + JSonArrayEntry.Add('dump', AnEvent.DisassemblerEntryArray[i].Dump); + JSonArrayEntry.Add('statement', AnEvent.DisassemblerEntryArray[i].Statement); + JSonArrayEntry.Add('srcfilename', AnEvent.DisassemblerEntryArray[i].SrcFileName); + JSonArrayEntry.Add('srcfileline', AnEvent.DisassemblerEntryArray[i].SrcFileLine); + JSonArrayEntry.Add('srcstatementindex', AnEvent.DisassemblerEntryArray[i].SrcStatementIndex); + JSonArrayEntry.Add('srcstatementcount', AnEvent.DisassemblerEntryArray[i].SrcStatementCount); + JSonArrayEntry.Add('functionname', AnEvent.DisassemblerEntryArray[i].FuncName); + JSonArrayEntry.Add('offset', AnEvent.DisassemblerEntryArray[i].Offset); + JSonArray.Add(JSonArrayEntry); + end; + JSonEvent.Add('disassembly', JSonArray); + JSonEvent.Add('startaddress', FormatAddress(AnEvent.Addr1)); + JSonEvent.Add('endaddress', FormatAddress(AnEvent.Addr2)); + JSonEvent.Add('lastentryendaddress', FormatAddress(AnEvent.Addr3)); + end; + if length(AnEvent.WatchEntryArray)>0 then + begin + JSonArray := TJSONArray.Create; + for i := 0 to high(AnEvent.WatchEntryArray) do + begin + JSonArrayEntry := TJSONObject.Create; + JSonArrayEntry.Add('name', AnEvent.WatchEntryArray[i].Expression); + JSonArrayEntry.Add('value', AnEvent.WatchEntryArray[i].TextValue); + if AnEvent.EventName='registers' then + begin + JSonArrayEntry.Add('numvalue', AnEvent.WatchEntryArray[i].NumValue); + JSonArrayEntry.Add('size', AnEvent.WatchEntryArray[i].Size); + end; + JSonArray.Add(JSonArrayEntry); + end; + JSonEvent.Add(AnEvent.EventName, JSonArray); + end; result := JSonEvent.AsJSON; finally JSonEvent.Free; end; end; -finalization - GJSonInOutputProcessor := nil; +class function TJSonInOutputProcessor.InteractiveInitializationMessage(APort: integer): string; +var + JSonMessage: TJSONObject; +begin + JSonMessage := TJSONObject.Create; + try + JSonMessage.Add('welcome', 'FPDebug Server'); + JSonMessage.Add('copyright', 'Joost van der Sluis (2015)'); + if APort>-1 then + JSonMessage.Add('port', APort); + result := JSonMessage.AsJSON; + finally + JSonMessage.Free; + end; +end; + end. diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugscriptserver.pas lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugscriptserver.pas --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugscriptserver.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugscriptserver.pas 2015-05-26 15:36:23.000000000 +0000 @@ -0,0 +1,83 @@ +unit DebugScriptServer; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, + SysUtils, + debugthread, + DebugInOutputProcessor; + +type + + { TFpDebugScriptServer } + + TFpDebugScriptServer = class(TThread, IFpDebugListener) + private + FDebugThread: TFpDebugThread; + FConnectionIdentifier: integer; + FFileContents: TStringList; + FInOutputProcessor: TJSonInOutputProcessor; + protected + procedure Execute; override; + public + constructor create(ADebugThread: TFpDebugThread; AFileName: string); + function GetOrigin: string; + procedure SendEvent(AnEvent: TFpDebugEvent); + destructor Destroy; override; + end; + +implementation + +{ TFpDebugScriptServer } + +procedure TFpDebugScriptServer.Execute; +var + ACommand: TFpDebugThreadCommand; + i: Integer; +begin + FInOutputProcessor := TJSonInOutputProcessor.create(FConnectionIdentifier, @FDebugThread.SendLogMessage); + try + for i := 0 to FFileContents.Count-1 do + begin + ACommand := FInOutputProcessor.TextToCommand(FFileContents.Strings[i]); + if assigned(ACommand) then + FDebugThread.QueueCommand(ACommand); + if Terminated then + Break; + end; + finally + FInOutputProcessor.Free; + end; + Terminate; +end; + +constructor TFpDebugScriptServer.create(ADebugThread: TFpDebugThread; AFileName: string); +begin + inherited Create(false); + FDebugThread:=ADebugThread; + FConnectionIdentifier := FDebugThread.AddListener(self); + FFileContents := TStringList.Create; + FFileContents.LoadFromFile(AFileName); +end; + +function TFpDebugScriptServer.GetOrigin: string; +begin + result := 'File input'; +end; + +procedure TFpDebugScriptServer.SendEvent(AnEvent: TFpDebugEvent); +begin + // Ignore +end; + +destructor TFpDebugScriptServer.Destroy; +begin + FFileContents.Free; + inherited Destroy; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugtcpserver.pas lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugtcpserver.pas --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugtcpserver.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugtcpserver.pas 2015-05-22 19:54:47.000000000 +0000 @@ -35,6 +35,7 @@ FTCPConnection: TInetServer; FConnectionList: TConnectionList; FDebugThread: TFpDebugThread; + FInitializationFinished: PRTLEvent; function CreateInetServer: TInetServer; procedure FTCPConnectionConnect(Sender: TObject; Data: TSocketStream); procedure FTCPConnectionAcceptError(Sender: TObject; ASocket: Longint; E: Exception; var ErrorAction: TAcceptErrorAction); @@ -42,6 +43,7 @@ protected procedure Execute; override; public + procedure WaitForInitialization(out Port: integer); procedure StopListening; constructor create(ADebugThread: TFpDebugThread; APort, ASensePorts: integer); procedure RemoveConnection(ADebugTcpConnectionThread: TFpDebugTcpConnectionThread); @@ -260,10 +262,14 @@ if conn then begin result := InetServer; - FDebugThread.SendNotification(-1, ntListenerMessage, null, 'Listening for incoming TCP-connections on port %d', '', [result.Port]) + FPort:=result.Port; + FDebugThread.SendNotification(-1, ntListenerMessage, null, 'Listening for incoming TCP-connections on port %d', '', [FPort]) end else + begin + FPort:=-1; FDebugThread.SendNotification(-1, ntConnectionProblem, null, 'Failed to start listening for incoming TCP-connections: %s', '', [FFirstError]) + end; end; procedure TFpDebugTcpServer.FTCPConnectionConnect(Sender: TObject; Data: TSocketStream); @@ -281,6 +287,7 @@ begin try FTCPConnection := CreateInetServer; + RTLeventSetEvent(FInitializationFinished); if assigned(FTCPConnection) then begin try @@ -302,6 +309,12 @@ end; end; +procedure TFpDebugTcpServer.WaitForInitialization(out Port: integer); +begin + RTLeventWaitFor(FInitializationFinished); + Port := FPort; +end; + procedure TFpDebugTcpServer.StopListening; begin Terminate; @@ -317,6 +330,7 @@ FSensePorts:=ASensePorts; FDebugThread:=ADebugThread; FConnectionList:=TConnectionList.Create(false); + FInitializationFinished:=RTLEventCreate; inherited Create(false); end; @@ -329,6 +343,7 @@ var i: integer; begin + RTLeventdestroy(FInitializationFinished); for i := 0 to FConnectionList.Count-1 do FConnectionList[i].Terminate; for i := 0 to FConnectionList.Count-1 do diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugthreadcommand.pas lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugthreadcommand.pas --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugthreadcommand.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugthreadcommand.pas 2015-06-21 18:10:51.000000000 +0000 @@ -2,20 +2,31 @@ {$mode objfpc}{$H+} +{$ifndef VER2} + {$define disassemblernestedproc} +{$endif VER2} + +{$ifdef disassemblernestedproc} + {$modeswitch nestedprocvars} +{$endif disassemblernestedproc} + interface uses Classes, - contnrs, FPDbgController, FpDbgClasses, FpDbgUtil, FpDbgInfo, + FpPascalParser, + FpPascalBuilder, + FpErrorMessages, DbgIntfDebuggerBase, DbgIntfBaseTypes, strutils, debugthread, CustApp, + Maps, SysUtils; type @@ -49,6 +60,18 @@ property Filename: string read FFileName write FFileName; end; + { TFpDebugThreadSetRedirectConsoleOutputCommand } + + TFpDebugThreadSetConsoleTtyCommand = class(TFpDebugThreadCommand) + private + FConsoleTty: String; + public + function Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; override; + class function TextName: string; override; + published + property ConsoleTty: String read FConsoleTty write FConsoleTty; + end; + { TFpDebugThreadRunCommand } TFpDebugThreadRunCommand = class(TFpDebugThreadCommand) @@ -160,12 +183,547 @@ property Address: string read GetAddress write SetAddress; end; + { TFpDebugThreadEvaluateCommand } + + TFpDebugThreadEvaluateCommand = class(TFpDebugThreadCommand) + private + FExpression: string; + FResText: string; + FValidity: TDebuggerDataState; + public + function Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; override; + class function TextName: string; override; + procedure ComposeSuccessEvent(var AnEvent: TFpDebugEvent); override; + published + property Expression: string read FExpression write FExpression; + end; + + { TFpDebugThreadStackTraceCommand } + + TFpDebugThreadStackTraceCommand = class(TFpDebugThreadCommand) + private + FStackEntryArray: TFpDebugEventCallStackEntryArray; + public + function Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; override; + class function TextName: string; override; + procedure ComposeSuccessEvent(var AnEvent: TFpDebugEvent); override; + end; + + { TFpDebugThreadDisassembleCommand } + + TFpDebugThreadDisassembleCommand = class(TFpDebugThreadCommand) + private + FAddressValue: TDBGPtr; + FLinesAfter: integer; + FLinesBefore: integer; + FDisassemblerEntryArray: TFpDebugEventDisassemblerEntryArray; + FStartAddr: TDBGPtr; + FEndAddr: TDBGPtr; + FLastEntryEndAddr: TDBGPtr; + function GetAddress: string; + procedure SetAddress(AValue: string); + {$ifndef disassemblernestedproc} + private + FController: TDbgController; + function OnAdjustToKnowFunctionStart(var AStartAddr: TDisassemblerAddress): Boolean; + function OnDoDisassembleRange(AnEntryRanges: TDBGDisassemblerEntryMap; AFirstAddr, ALastAddr: TDisassemblerAddress; AStopAfterAddress: TDBGPtr; AStopAfterNumLines: Integer): Boolean; + {$endif} + public + constructor Create(AListenerIdentifier: integer; AnUID: variant; AOnLog: TOnLog); override; + function Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; override; + class function TextName: string; override; + procedure ComposeSuccessEvent(var AnEvent: TFpDebugEvent); override; + published + property Address: string read GetAddress write SetAddress; + property LinesAfter: integer read FLinesAfter write FLinesAfter; + property LinesBefore: integer read FLinesBefore write FLinesBefore; + end; + + { TFpDebugLocalsCommand } + + TFpDebugLocalsCommand = class(TFpDebugThreadCommand) + private + FWatchEntryArray: TFpDebugEventWatchEntryArray; + public + function Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; override; + class function TextName: string; override; + procedure ComposeSuccessEvent(var AnEvent: TFpDebugEvent); override; + end; + + { TFpDebugRegistersCommand } + + TFpDebugRegistersCommand = class(TFpDebugThreadCommand) + private + FWatchEntryArray: TFpDebugEventWatchEntryArray; + public + function Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; override; + class function TextName: string; override; + procedure ComposeSuccessEvent(var AnEvent: TFpDebugEvent); override; + end; + implementation -{ TFpDebugThreadCommandList } +uses + FpDbgDisasX86; +{ TFpDebugRegistersCommand } + +function TFpDebugRegistersCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; var - GFpDebugThreadCommandList: TFpDebugThreadCommandList = nil; + ARegisterList: TDbgRegisterValueList; + i: Integer; +begin + result := false; + if (AController = nil) or (AController.CurrentProcess = nil) or + (AController.CurrentProcess.DbgInfo = nil) then + exit; + + ARegisterList := AController.CurrentProcess.MainThread.RegisterValueList; + SetLength(FWatchEntryArray, ARegisterList.Count); + for i := 0 to ARegisterList.Count-1 do + begin + FWatchEntryArray[i].Expression := ARegisterList[i].Name; + FWatchEntryArray[i].TextValue := ARegisterList[i].StrValue; + FWatchEntryArray[i].NumValue := ARegisterList[i].NumValue; + FWatchEntryArray[i].Size := ARegisterList[i].Size; + end; + result := true; + DoProcessLoop := false; +end; + +class function TFpDebugRegistersCommand.TextName: string; +begin + result := 'registers'; +end; + +procedure TFpDebugRegistersCommand.ComposeSuccessEvent(var AnEvent: TFpDebugEvent); +begin + inherited ComposeSuccessEvent(AnEvent); + AnEvent.WatchEntryArray := FWatchEntryArray; +end; + +{ TFpDebugLocalsCommand } + +function TFpDebugLocalsCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; +var + AContext: TFpDbgInfoContext; + ProcVal: TFpDbgValue; + i: Integer; + m: TFpDbgValue; + n, v: String; + Reg: TDBGPtr; + PrettyPrinter: TFpPascalPrettyPrinter; +begin + result := false; + if (AController = nil) or (AController.CurrentProcess = nil) or + (AController.CurrentProcess.DbgInfo = nil) then + exit; + + Reg := AController.CurrentProcess.GetInstructionPointerRegisterValue; + AContext := AController.CurrentProcess.DbgInfo.FindContext(AController.CurrentThread.ID, 0, Reg); + + if (AContext = nil) or (AContext.SymbolAtAddress = nil) then + exit; + + ProcVal := AContext.ProcedureAtAddress; + + if (ProcVal = nil) then + exit; + + PrettyPrinter := TFpPascalPrettyPrinter.Create(sizeof(pointer)); + try + PrettyPrinter.AddressSize := AContext.SizeOfAddress; + + SetLength(FWatchEntryArray, ProcVal.MemberCount); + for i := 0 to ProcVal.MemberCount - 1 do + begin + m := ProcVal.Member[i]; + if m <> nil then + begin + if m.DbgSymbol <> nil then + n := m.DbgSymbol.Name + else + n := ''; + PrettyPrinter.PrintValue(v, m); + FWatchEntryArray[i].TextValue := v; + FWatchEntryArray[i].Expression := n; + end; + end; + finally + PrettyPrinter.Free; + end; + + AContext.ReleaseReference; + DoProcessLoop:=false; + result := true; +end; + +class function TFpDebugLocalsCommand.TextName: string; +begin + result := 'locals'; +end; + +procedure TFpDebugLocalsCommand.ComposeSuccessEvent(var AnEvent: TFpDebugEvent); +begin + inherited ComposeSuccessEvent(AnEvent); + AnEvent.WatchEntryArray := FWatchEntryArray; +end; + +{ TFpDebugThreadDisassembleCommand } + +function TFpDebugThreadDisassembleCommand.GetAddress: string; +begin + result := FormatAddress(FAddressValue); +end; + +procedure TFpDebugThreadDisassembleCommand.SetAddress(AValue: string); +begin + FAddressValue := Hex2Dec(AValue); +end; + +constructor TFpDebugThreadDisassembleCommand.Create(AListenerIdentifier: integer; AnUID: variant; AOnLog: TOnLog); +begin + inherited Create(AListenerIdentifier, AnUID, AOnLog); + FLinesAfter:=10; + FLinesBefore:=5; +end; + +{$ifdef disassemblernestedproc} +function TFpDebugThreadDisassembleCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; +{$endif} + + function {$ifndef disassemblernestedproc}TFpDebugThreadDisassembleCommand.{$endif}OnAdjustToKnowFunctionStart(var AStartAddr: TDisassemblerAddress): Boolean; + var + Sym: TFpDbgSymbol; + begin + Sym := {$ifndef disassemblernestedproc}FController{$else}AController{$endif}.CurrentProcess.FindSymbol(AStartAddr.GuessedValue); + if assigned(Sym) and (Sym.Kind in [skProcedure, skFunction]) then + begin + AStartAddr.Value:=Sym.Address.Address; + AStartAddr.Offset:=0; + AStartAddr.Validity:=avFoundFunction; + result := true; + end + else + result := false; + end; + + function {$ifndef disassemblernestedproc}TFpDebugThreadDisassembleCommand.{$endif}OnDoDisassembleRange(AnEntryRanges: TDBGDisassemblerEntryMap; AFirstAddr, ALastAddr: TDisassemblerAddress; AStopAfterAddress: TDBGPtr; AStopAfterNumLines: Integer): Boolean; + + var + AnAddr: TDBGPtr; + CodeBin: array[0..20] of byte; + AnEntry: TDisassemblerEntry; + p: pointer; + ADump, + AStatement, + ASrcFileName: string; + ASrcFileLine: cardinal; + i,j: Integer; + Sym: TFpDbgSymbol; + StatIndex: integer; + FirstIndex: integer; + AResultList: TDBGDisassemblerEntryRange; + + begin + result := false; + AResultList := TDBGDisassemblerEntryRange.Create; + AResultList.RangeStartAddr := AFirstAddr.Value; + + Sym:=nil; + ASrcFileLine:=0; + ASrcFileName:=''; + StatIndex:=0; + FirstIndex:=0; + AnEntry.Offset:=-1; + AnAddr:=AFirstAddr.Value; + + i := 0; + while ((AStopAfterAddress=0) or (AStopAfterNumLines > -1)) and (AnAddr <= ALastAddr.Value) do + begin + AnEntry.Addr:=AnAddr; + if not {$ifndef disassemblernestedproc}FController{$else}AController{$endif}.CurrentProcess.ReadData(AnAddr, sizeof(CodeBin),CodeBin) then + begin + Log(Format('Disassemble: Failed to read memory at %s.', [FormatAddress(AnAddr)]), dllDebug); + AnEntry.Statement := 'Failed to read memory'; + inc(AnAddr); + end + else + begin + p := @CodeBin; + FpDbgDisasX86.Disassemble(p, {$ifndef disassemblernestedproc}FController{$else}AController{$endif}.CurrentProcess.Mode=dm64, ADump, AStatement); + + Sym := {$ifndef disassemblernestedproc}FController{$else}AController{$endif}.CurrentProcess.FindSymbol(AnAddr); + + // If this is the last statement for this source-code-line, fill the + // SrcStatementCount from the prior statements. + if (assigned(sym) and ((ASrcFileName<>sym.FileName) or (ASrcFileLine<>sym.Line))) or + (not assigned(sym) and ((ASrcFileLine<>0) or (ASrcFileName<>''))) then + begin + for j := 0 to StatIndex-1 do + AResultList.EntriesPtr[FirstIndex+j]^.SrcStatementCount:=StatIndex; + StatIndex:=0; + FirstIndex:=i; + end; + + if assigned(sym) then + begin + ASrcFileName:=sym.FileName; + ASrcFileLine:=sym.Line; + end + else + begin + ASrcFileName:=''; + ASrcFileLine:=0; + end; + AnEntry.Dump := ADump; + AnEntry.Statement := AStatement; + AnEntry.SrcFileLine:=ASrcFileLine; + AnEntry.SrcFileName:=ASrcFileName; + AnEntry.SrcStatementIndex:=StatIndex; + inc(StatIndex); + AResultList.RangeEndAddr:=AnAddr; + Inc(AnAddr, {%H-}PtrUInt(p) - {%H-}PtrUInt(@CodeBin)); + end; + AResultList.Append(@AnEntry); + if (AnAddr>AStopAfterAddress) then + dec(AStopAfterNumLines); + inc(i); + end; + AResultList.LastEntryEndAddr:=AnAddr; + + if AResultList.Count>0 then + AnEntryRanges.AddRange(AResultList) + else + AResultList.Free; + + result := true; + end; + +{$ifndef disassemblernestedproc} +function TFpDebugThreadDisassembleCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; +{$endif disassemblernestedproc} + +var + i: Integer; + DisassembleRangeExtender: TDBGDisassemblerRangeExtender; + DisassemblerEntryRange: TDBGDisassemblerEntryRange; + DisassemblerEntryRangeMap: TDBGDisassemblerEntryMap; + RangeIterator: TDBGDisassemblerEntryMapIterator; + ARange: TDBGDisassemblerEntryRange; + +begin + {$ifndef disassemblernestedproc} + FController := AController; + {$endif} + + result := false; + DoProcessLoop:=false; + if not assigned(AController.CurrentProcess) then + begin + log('Failed to dissasemble: No process', dllInfo); + exit; + end; + + if FAddressValue=0 then + FStartAddr:=AController.CurrentProcess.GetInstructionPointerRegisterValue + else + FStartAddr:=FAddressValue; + + DisassemblerEntryRangeMap := TDBGDisassemblerEntryMap.Create(itu8, SizeOf(TDBGDisassemblerEntryRange)); + try + DisassembleRangeExtender := TDBGDisassemblerRangeExtender.Create(DisassemblerEntryRangeMap); + try + DisassembleRangeExtender.OnDoDisassembleRange:=@OnDoDisassembleRange; + DisassembleRangeExtender.OnAdjustToKnowFunctionStart:=@OnAdjustToKnowFunctionStart; + DisassembleRangeExtender.DisassembleRange(FLinesBefore, FLinesAfter, FStartAddr, FStartAddr); + finally + DisassembleRangeExtender.Free; + end; + + // Convert the DisassemblerEntryRangeMap to the FDisassemblerEntryArray + DisassemblerEntryRange := TDBGDisassemblerEntryRange.Create; + try + RangeIterator := TDBGDisassemblerEntryMapIterator.Create(DisassemblerEntryRangeMap); + try + RangeIterator.First; + RangeIterator.GetData(ARange); + repeat + DisassemblerEntryRange.Merge(ARange); + + ARange := RangeIterator.NextRange; + until RangeIterator.EOM; + + setlength(FDisassemblerEntryArray, DisassemblerEntryRange.Count); + for i := 0 to DisassemblerEntryRange.Count-1 do + begin + FDisassemblerEntryArray[i] := DisassemblerEntryRange.Entries[i]; + end; + FStartAddr:=DisassemblerEntryRange.RangeStartAddr; + FEndAddr:=DisassemblerEntryRange.RangeEndAddr; + FLastEntryEndAddr:=DisassemblerEntryRange.LastEntryEndAddr; + finally + RangeIterator.Free; + end; + finally + DisassemblerEntryRange.Free;; + end; + finally + DisassemblerEntryRangeMap.Free; + end; + + result := true; +end; + +class function TFpDebugThreadDisassembleCommand.TextName: string; +begin + result := 'disassemble'; +end; + +procedure TFpDebugThreadDisassembleCommand.ComposeSuccessEvent(var AnEvent: TFpDebugEvent); +begin + inherited ComposeSuccessEvent(AnEvent); + AnEvent.DisassemblerEntryArray := FDisassemblerEntryArray; + AnEvent.Addr1:=FStartAddr; + AnEvent.Addr2:=FEndAddr; + AnEvent.Addr3:=FLastEntryEndAddr; +end; + +{ TFpDebugThreadSetConsoleTtyCommand } + +function TFpDebugThreadSetConsoleTtyCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; +begin + AController.ConsoleTty:=FConsoleTty; + AController.RedirectConsoleOutput:=(AController.ConsoleTty=''); + DoProcessLoop:=false; + result:=true; +end; + +class function TFpDebugThreadSetConsoleTtyCommand.TextName: string; +begin + result := 'setconsoletty'; +end; + +{ TFpDebugThreadStackTraceCommand } + +function TFpDebugThreadStackTraceCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; +var + ThreadCallStack: TDbgCallstackEntryList; + i: integer; +begin + result := false; + DoProcessLoop:=false; + if not assigned(AController.CurrentProcess) then + begin + log('Failed to get call stack: No process', dllInfo); + exit; + end; + + AController.CurrentProcess.MainThread.PrepareCallStackEntryList; + ThreadCallStack := AController.CurrentProcess.MainThread.CallStackEntryList; + SetLength(FStackEntryArray, ThreadCallStack.Count); + for i := 0 to ThreadCallStack.Count-1 do + begin + FStackEntryArray[i].AnAddress:=ThreadCallStack[i].AnAddress; + FStackEntryArray[i].FrameAdress:=ThreadCallStack[i].FrameAdress; + FStackEntryArray[i].FunctionName:=ThreadCallStack[i].FunctionName+ThreadCallStack[i].GetParamsAsString; + FStackEntryArray[i].Line:=ThreadCallStack[i].Line; + FStackEntryArray[i].SourceFile:=ThreadCallStack[i].SourceFile; + end; + // Clear the callstack immediately. Doing this each time the process continous is + // cumbersome. And the chances that this command is called twice, so that + // caching the result is usefull, are slim. + AController.CurrentProcess.MainThread.ClearCallStack; + result := true; +end; + + +class function TFpDebugThreadStackTraceCommand.TextName: string; +begin + result := 'stacktrace'; +end; + +procedure TFpDebugThreadStackTraceCommand.ComposeSuccessEvent(var AnEvent: TFpDebugEvent); +begin + inherited ComposeSuccessEvent(AnEvent); + AnEvent.StackEntryArray:=FStackEntryArray; +end; + +{ TFpDebugThreadEvaluateCommand } + +procedure TFpDebugThreadEvaluateCommand.ComposeSuccessEvent(var AnEvent: TFpDebugEvent); +begin + inherited ComposeSuccessEvent(AnEvent); + AnEvent.Message:=FResText; + AnEvent.Validity:=FValidity; +end; + +function TFpDebugThreadEvaluateCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; +var + AContext: TFpDbgInfoContext; + APasExpr: TFpPascalExpression; + ADbgInfo: TDbgInfo; + Res: Boolean; + APrettyPrinter: TFpPascalPrettyPrinter; + ATypeInfo: TDBGType; + +begin + Result := False; + DoProcessLoop:=false; + if not assigned(AController.CurrentProcess) then + begin + log('Failed to evaluate expression: No process', dllInfo); + exit; + end; + + ADbgInfo := AController.CurrentProcess.DbgInfo; + AContext := ADbgInfo.FindContext(AController.CurrentThread.ID, 0, AController.CurrentProcess.GetInstructionPointerRegisterValue); + if AContext = nil then + begin + FValidity:=ddsInvalid; + exit; + end; + + Result := True; + AContext.MemManager.DefaultContext := AContext; + APasExpr := TFpPascalExpression.Create(FExpression, AContext); + try + APasExpr.ResultValue; // trigger full validation + if not APasExpr.Valid then + begin + FResText := ErrorHandler.ErrorAsString(APasExpr.Error); + FValidity := ddsError; + end + else + begin + APrettyPrinter := TFpPascalPrettyPrinter.Create(sizeof(pointer)); + try + APrettyPrinter.AddressSize:=AContext.SizeOfAddress; + APrettyPrinter.MemManager := AContext.MemManager; + Res := APrettyPrinter.PrintValue(FResText, ATypeInfo, APasExpr.ResultValue); + if Res then + begin + FValidity:=ddsValid; + end + else + begin + FResText := 'Error'; + FValidity:=ddsValid; + end; + finally + APrettyPrinter.Free; + end; + end; + finally + APasExpr.Free; + AContext.ReleaseReference; + end; +end; + +class function TFpDebugThreadEvaluateCommand.TextName: string; +begin + result := 'evaluate'; +end; { TFpDebugThreadQuitDebugServerCommand } @@ -173,11 +731,13 @@ begin DoQueueCommand:=false; CustomApplication.Terminate; + result := true; end; function TFpDebugThreadQuitDebugServerCommand.Execute(AController: TDbgController; out DoProcessLoop: boolean): boolean; begin - // Do nothing + result := true; + DoProcessLoop := false; end; class function TFpDebugThreadQuitDebugServerCommand.TextName: string; @@ -331,7 +891,13 @@ begin DoProcessLoop:=false; result := false; - if Assigned(AController.CurrentProcess) then + + if not assigned(AController.CurrentProcess) then + begin + log('Failed to get location info: No process', dllInfo); + exit; + end + else begin FLocationRec.FuncName:=''; FLocationRec.SrcFile:=''; @@ -398,6 +964,11 @@ result := 'addbreakpoint'; end; +{ TFpDebugThreadCommandList } + +var + GFpDebugThreadCommandList: TFpDebugThreadCommandList = nil; + class function TFpDebugThreadCommandList.instance: TFpDebugThreadCommandList; begin if not assigned(GFpDebugThreadCommandList) then @@ -463,6 +1034,7 @@ initialization TFpDebugThreadCommandList.instance.Add(TFpDebugThreadQuitDebugServerCommand); TFpDebugThreadCommandList.instance.Add(TFpDebugThreadSetFilenameCommand); + TFpDebugThreadCommandList.instance.Add(TFpDebugThreadSetConsoleTtyCommand); TFpDebugThreadCommandList.instance.Add(TFpDebugThreadRunCommand); TFpDebugThreadCommandList.instance.Add(TFpDebugThreadContinueCommand); TFpDebugThreadCommandList.instance.Add(TFpDebugThreadStepOverInstrCommand); @@ -474,6 +1046,11 @@ TFpDebugThreadCommandList.instance.Add(TFpDebugThreadAddBreakpointCommand); TFpDebugThreadCommandList.instance.Add(TFpDebugThreadRemoveBreakpointCommand); TFpDebugThreadCommandList.instance.Add(TFpDebugThreadGetLocationInfoCommand); + TFpDebugThreadCommandList.instance.Add(TFpDebugThreadEvaluateCommand); + TFpDebugThreadCommandList.instance.Add(TFpDebugThreadStackTraceCommand); + TFpDebugThreadCommandList.instance.Add(TFpDebugThreadDisassembleCommand); + TFpDebugThreadCommandList.instance.Add(TFpDebugLocalsCommand); + TFpDebugThreadCommandList.instance.Add(TFpDebugRegistersCommand); finalization GFpDebugThreadCommandList.Free; end. diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugthread.pas lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugthread.pas --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/debugthread.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/debugthread.pas 2015-06-21 10:11:52.000000000 +0000 @@ -9,8 +9,12 @@ Classes, SysUtils, FPDbgController, + FpDbgDwarfDataClasses, + FpdMemoryTools, DbgIntfBaseTypes, DbgIntfDebuggerBase, + lazCollections, + syncobjs, lazfglhash, fpjson, FpDbgClasses; @@ -37,6 +41,24 @@ ntFailedCommand ); + TFpDebugEventCallStackEntry = record + AnAddress: TDBGPtr; + FrameAdress: TDBGPtr; + SourceFile: string; + FunctionName: string; + Line: integer; + end; + TFpDebugEventWatchEntry = record + TextValue: string; + Expression: string; + NumValue: TDBGPtr; + Size: byte; + end; + + TFpDebugEventCallStackEntryArray = array of TFpDebugEventCallStackEntry; + TFpDebugEventDisassemblerEntryArray = array of TDisassemblerEntry; + TFpDebugEventWatchEntryArray = array of TFpDebugEventWatchEntry; + // This record is used to pass debugging-events. Not every field is applicable for each type of event. TFpDebugEvent = record SendByConnectionIdentifier: integer; @@ -49,6 +71,13 @@ AnUID: variant; BreakpointAddr: TDBGPtr; LocationRec: TDBGLocationRec; + Validity: TDebuggerDataState; + Addr1: TDBGPtr; + Addr2: TDBGPtr; + Addr3: TDBGPtr; + StackEntryArray: TFpDebugEventCallStackEntryArray; + DisassemblerEntryArray: TFpDebugEventDisassemblerEntryArray; + WatchEntryArray: TFpDebugEventWatchEntryArray; end; // Each listener should implement this interface. @@ -98,19 +127,26 @@ property ListenerIdentifier: integer read FListenerIdentifier; end; TFpDebugThreadCommandClass = class of TFpDebugThreadCommand; + TFpDebugThreadCommandQueue = specialize TLazThreadedQueue<TFpDebugThreadCommand>; { TFpDebugThread } TFpDebugThread = class(TThread) private - FCommandQueue: TThreadList; + FCommandQueue: TFpDebugThreadCommandQueue; FController: TDbgController; FListenerList: TThreadList; + FMemConverter: TFpDbgMemConvertorLittleEndian; + FMemReader: TDbgMemReader; + FMemManager: TFpDbgMemManager; + FConsoleOutputThread: TThread; + procedure FreeConsoleOutputThread; protected // Handlers for the FController-events procedure FControllerHitBreakpointEvent(var continue: boolean; const Breakpoint: TDbgBreakpoint); procedure FControllerProcessExitEvent(ExitCode: DWord); procedure FControllerCreateProcessEvent(var continue: boolean); + procedure FControllerDebugInfoLoaded(Sender: TObject); // Main debug thread-loop procedure Execute; override; // Send an event to all listeners @@ -152,6 +188,74 @@ var FFpDebugThread: TFpDebugThread; +type + + { TFpDbgMemReader } + + TFpDbgMemReader = class(TDbgMemReader) + private + FDebugThread: TFpDebugThread; + protected + function GetDbgProcess: TDbgProcess; override; + public + constructor create(ADebugThread: TFpDebugThread); + end; + + { TFpWaitForConsoleOutputThread } + + TFpWaitForConsoleOutputThread = class(TThread) + private + FDebugThread: TFpDebugThread; + public + constructor Create(ADebugThread: TFpDebugThread); + procedure Execute; override; + end; + +constructor TFpWaitForConsoleOutputThread.Create(ADebugThread: TFpDebugThread); +begin + Inherited create(false); + FDebugThread := ADebugThread; +end; + +procedure TFpWaitForConsoleOutputThread.Execute; +var + res: integer; + AnEvent: TFpDebugEvent; + s: string; +begin + while not terminated do + begin + res := FDebugThread.FController.CurrentProcess.CheckForConsoleOutput(100); + if res<0 then + Terminate + else if res>0 then + begin + FDebugThread.ClearEvent(AnEvent); + AnEvent.EventType:=etEvent; + AnEvent.EventName:='ConsoleOutput'; + s := FDebugThread.FController.CurrentProcess.GetConsoleOutput; + if s <> '' then + begin + AnEvent.Message:=s; + FDebugThread.SendEvent(AnEvent); + end; + end; + end; +end; + +{ TFpDbgMemReader } + +function TFpDbgMemReader.GetDbgProcess: TDbgProcess; +begin + result := FDebugThread.FController.CurrentProcess; +end; + +constructor TFpDbgMemReader.create(ADebugThread: TFpDebugThread); +begin + Inherited Create; + FDebugThread:=ADebugThread; +end; + { TFpDebugThreadCommand } procedure TFpDebugThreadCommand.Log(const AString: string; const ALogLevel: TFPDLogLevel); @@ -225,6 +329,33 @@ AnEvent.InstructionPointerRegValue:=0; AnEvent.BreakpointAddr:=0; AnEvent.LocationRec.Address:=0; + AnEvent.Validity:=ddsUnknown; + SetLength(AnEvent.StackEntryArray,0); + SetLength(AnEvent.DisassemblerEntryArray,0); + SetLength(AnEvent.WatchEntryArray,0); + AnEvent.Addr1:=0; + AnEvent.Addr2:=0; + AnEvent.Addr3:=0; +end; + +procedure TFpDebugThread.FControllerDebugInfoLoaded(Sender: TObject); +begin + TFpDwarfInfo(FController.CurrentProcess.DbgInfo).MemManager := FMemManager; +end; + +procedure TFpDebugThread.FreeConsoleOutputThread; +var + ADebugEvent: TFpDebugEvent; + AThread: TFpWaitForConsoleOutputThread; +begin + if assigned(FConsoleOutputThread) then + begin + AThread := TFpWaitForConsoleOutputThread(FConsoleOutputThread); + FConsoleOutputThread := nil; + AThread.Terminate; + AThread.WaitFor; + AThread.Free; + end; end; procedure TFpDebugThread.FControllerHitBreakpointEvent(var continue: boolean; const Breakpoint: TDbgBreakpoint); @@ -246,6 +377,8 @@ var ADebugEvent: TFpDebugEvent; begin + FreeConsoleOutputThread; + ClearEvent(ADebugEvent); ADebugEvent.EventType:=etEvent; ADebugEvent.EventName:='ExitProcess'; @@ -264,36 +397,31 @@ ADebugEvent.InstructionPointerRegValue:=FController.CurrentProcess.GetInstructionPointerRegisterValue; SendEvent(ADebugEvent); + + if FController.RedirectConsoleOutput then + FConsoleOutputThread := TFpWaitForConsoleOutputThread.Create(self); continue:=false; end; procedure TFpDebugThread.Execute; var - AList: TList; ACommand: TFpDebugThreadCommand; ARunLoop: boolean; AnEvent: TFpDebugEvent; begin FController := TDbgController.Create; + FController.RedirectConsoleOutput:=true; FController.OnCreateProcessEvent:=@FControllerCreateProcessEvent; FController.OnProcessExitEvent:=@FControllerProcessExitEvent; FController.OnHitBreakpointEvent:=@FControllerHitBreakpointEvent; + FController.OnDebugInfoLoaded:=@FControllerDebugInfoLoaded; FController.OnLog:=@SendLogMessage; try repeat try - ACommand:=nil; - AList := FCommandQueue.LockList; - try - if AList.Count>0 then - begin - ACommand:=TFpDebugThreadCommand(AList.Items[0]); - AList.Delete(0); - end; - finally - FCommandQueue.UnlockList; - end; + if FCommandQueue.PopItem(ACommand)<>wrSignaled then + ACommand:=nil; if assigned(ACommand) then begin @@ -323,8 +451,6 @@ FController.SendEvents(ARunLoop); end; end; - - sleep(100); except on E: Exception do writeln('Exception in debug-thread: '+e.Message); // just continue @@ -355,15 +481,23 @@ constructor TFpDebugThread.Create; begin inherited create(false); - FCommandQueue := TThreadList.Create; + FCommandQueue := TFpDebugThreadCommandQueue.create(100, INFINITE, 100); FListenerList:=TThreadList.Create; + + FMemReader := TFpDbgMemReader.Create(self); + FMemConverter := TFpDbgMemConvertorLittleEndian.Create; + FMemManager := TFpDbgMemManager.Create(FMemReader, FMemConverter); end; destructor TFpDebugThread.Destroy; begin + FreeConsoleOutputThread; FListenerList.Free; FCommandQueue.Free; inherited Destroy; + FMemManager.Free; + FMemConverter.Free; + FMemReader.Free; end; class function TFpDebugThread.Instance: TFpDebugThread; @@ -391,7 +525,7 @@ end; if DoQueueCommand then begin - FCommandQueue.Add(ACommand); + FCommandQueue.PushItem(ACommand); end else begin diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpi lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpi --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpi 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpi 2015-05-25 08:37:43.000000000 +0000 @@ -37,7 +37,7 @@ <PackageName Value="fpdebug"/> </Item2> </RequiredPackages> - <Units Count="6"> + <Units Count="7"> <Unit0> <Filename Value="fpdserver.lpr"/> <IsPartOfProject Value="True"/> @@ -67,6 +67,11 @@ <IsPartOfProject Value="True"/> <UnitName Value="DebugConsoleServer"/> </Unit5> + <Unit6> + <Filename Value="debugscriptserver.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="debugscriptserver"/> + </Unit6> </Units> </ProjectOptions> <CompilerOptions> diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpr lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpr --- lazarus-1.4.4+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpr 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/app/fpdserver/fpdserver.lpr 2015-05-25 08:37:43.000000000 +0000 @@ -30,7 +30,8 @@ DebugThreadCommand, DebugInOutputProcessor, DebugTCPServer, - DebugConsoleServer; + DebugConsoleServer, + debugscriptserver; type @@ -51,17 +52,22 @@ ErrorMsg: String; DebugThread: TFpDebugThread; TCPServerThread: TFpDebugTcpServer; + ScriptServerThread: TFpDebugScriptServer; ConsoleServerThread: TFpDebugConsoleServer; Port: integer; SensePorts: integer; ACommand: TFpDebugThreadCommand; + ScriptFile: string; CommandStr: string; begin // quick check parameters - ErrorMsg:=CheckOptions('hf:tdp:a::', ['help','filename:','tcp','daemon','port:','autoport::'], True); + ErrorMsg:=CheckOptions('hf:tdp:a::is:', ['help','filename:','tcp','daemon','port:','autoport::','interactive','script:'], True); - writeln('FPDebug Server'); - writeln('Copyright (c) 2015 by Joost van der Sluis'); + if not HasOption('i','interactive') then + begin + writeln('FPDebug Server'); + writeln('Copyright (c) 2015 by Joost van der Sluis'); + end; if ErrorMsg<>'' then begin @@ -121,6 +127,24 @@ else TCPServerThread := nil; + if HasOption('i','interactive') then + begin + if assigned(TCPServerThread) then + begin + TCPServerThread.WaitForInitialization(Port); + end + else + Port := -1; + writeln(TJSonInOutputProcessor.InteractiveInitializationMessage(Port)); + FlushThread; + end; + + ScriptFile := GetOptionValue('s','script'); + if ScriptFile<>'' then + ScriptServerThread := TFpDebugScriptServer.create(DebugThread, ScriptFile) + else + ScriptServerThread := nil; + CommandStr := GetOptionValue('f', 'filename'); if CommandStr<>'' then begin @@ -143,16 +167,22 @@ ConsoleServerThread.Terminate; if assigned(TCPServerThread) then TCPServerThread.StopListening; + if assigned(ScriptServerThread) then + ScriptServerThread.Terminate; if assigned(ConsoleServerThread) then ConsoleServerThread.WaitFor; if assigned(TCPServerThread) then TCPServerThread.WaitFor; + if assigned(ScriptServerThread) then + ScriptServerThread.WaitFor; if assigned(TCPServerThread) then TCPServerThread.Free; if assigned(ConsoleServerThread) then ConsoleServerThread.Free; + if assigned(ScriptServerThread) then + ScriptServerThread.Free; DebugThread.Terminate; DebugThread.WaitFor; @@ -168,13 +198,15 @@ begin writeln('fpdserver [options]'); writeln(' List of options without argument:'); - writeln(' -h --help Show this help message'); - writeln(' -t --tcp Start listening to incoming tcp-connections'); - writeln(' -d --daemon Do not use the console in- or output'); + writeln(' -h --help Show this help message'); + writeln(' -t --tcp Start listening to incoming tcp-connections'); + writeln(' -d --daemon Do not use the console in- or output'); + writeln(' -i --interactive Run in interactive mode for automatic parsing'); writeln(' List of options with argument:'); - writeln(' -f --filename Set the filename of the executable to debug'); - writeln(' -p --port Set the port (9159) to listen for incoming tcp-connections'); - writeln(' -a --autoport Try to bind to n (5) sequential ports when a port is in use'); + writeln(' -f --filename Set the filename of the executable to debug'); + writeln(' -p --port Set the port (9159) to listen for incoming tcp-connections'); + writeln(' -a --autoport Try to bind to n (5) sequential ports when a port is in use'); + writeln(' -s --script Load script with debug-commands'); end; var diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbgclasses.pp lazarus-1.6+dfsg/components/fpdebug/fpdbgclasses.pp --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbgclasses.pp 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbgclasses.pp 2016-02-10 19:37:26.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: fpdbgclasses.pp 49100 2015-05-18 22:54:40Z martin $ } +{ $Id: fpdbgclasses.pp 51582 2016-02-10 19:37:26Z mattias $ } { --------------------------------------------------------------------------- fpdbgclasses.pp - Native freepascal debugger @@ -9,7 +9,7 @@ --------------------------------------------------------------------------- @created(Mon Apr 10th WET 2006) - @lastmod($Date: 2015-05-19 00:54:40 +0200 (Di, 19 Mai 2015) $) + @lastmod($Date: 2016-02-10 20:37:26 +0100 (Mi, 10 Feb 2016) $) @author(Marc Weustink <marc@@dommelstein.nl>) *************************************************************************** @@ -39,6 +39,8 @@ uses Classes, SysUtils, Maps, FpDbgDwarf, FpDbgUtil, FpDbgLoader, FpDbgInfo, FpdMemoryTools, LazLoggerBase, LazClasses, DbgIntfBaseTypes, fgl, + DbgIntfDebuggerBase, + FpPascalBuilder, fpDbgSymTableContext, FpDbgDwarfDataClasses; @@ -93,19 +95,23 @@ FIsSymbolResolved: boolean; FSymbol: TFpDbgSymbol; FRegisterValueList: TDbgRegisterValueList; + FIndex: integer; function GetFunctionName: string; function GetSymbol: TFpDbgSymbol; function GetLine: integer; function GetSourceFile: string; public - constructor create(AThread: TDbgThread; AFrameAddress, AnAddress: TDBGPtr); + constructor create(AThread: TDbgThread; AnIndex: integer; AFrameAddress, AnAddress: TDBGPtr); destructor Destroy; override; + function GetParamsAsString: string; property AnAddress: TDBGPtr read FAnAddress; property FrameAdress: TDBGPtr read FFrameAdress; property SourceFile: string read GetSourceFile; property FunctionName: string read GetFunctionName; property Line: integer read GetLine; property RegisterValueList: TDbgRegisterValueList read FRegisterValueList; + property ProcSymbol: TFpDbgSymbol read GetSymbol; + property Index: integer read FIndex; end; TDbgCallstackEntryList = specialize TFPGObjectList<TDbgCallstackEntry>; @@ -118,6 +124,8 @@ protected function GetDbgProcess: TDbgProcess; virtual; abstract; public + function ReadMemory(AnAddress: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; override; + function ReadMemoryEx(AnAddress, AnAddressSpace: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; override; function ReadRegister(ARegNum: Cardinal; out AValue: TDbgPtr; AContext: TFpDbgAddressContext): Boolean; override; function RegisterSize(ARegNum: Cardinal): Integer; override; end; @@ -187,7 +195,7 @@ TDbgInstance = class(TObject) private FMode: TFPDMode; - FName: String; + FFileName: String; FProcess: TDbgProcess; FSymbolTableInfo: TFpSymbolInfo; FLoaderList: TDbgImageLoaderList; @@ -195,7 +203,7 @@ protected FDbgInfo: TDbgInfo; procedure InitializeLoaders; virtual; - procedure SetName(const AValue: String); + procedure SetFileName(const AValue: String); property LoaderList: TDbgImageLoaderList read FLoaderList write FLoaderList; public constructor Create(const AProcess: TDbgProcess); virtual; @@ -221,7 +229,7 @@ FBaseAddr: TDBGPtr; public constructor Create(const AProcess: TDbgProcess; const ADefaultName: String; const AModuleHandle: THandle; const ABaseAddr: TDbgPtr); - property Name: String read FName; + property Name: String read FFileName; property ModuleHandle: THandle read FModuleHandle; property BaseAddr: TDBGPtr read FBaseAddr; end; @@ -263,7 +271,7 @@ function AnalyseDebugEvent(AThread: TDbgThread): TFPDEvent; virtual; abstract; public class function StartInstance(AFileName: string; AParams, AnEnvironment: TStrings; AWorkingDirectory, AConsoleTty: string; AOnLog: TOnLog; ReDirectOutput: boolean): TDbgProcess; virtual; - constructor Create(const AName: string; const AProcessID, AThreadID: Integer; AOnLog: TOnLog); virtual; + constructor Create(const AFileName: string; const AProcessID, AThreadID: Integer; AOnLog: TOnLog); virtual; destructor Destroy; override; function AddBreak(const ALocation: TDbgPtr): TDbgBreakpoint; overload; function FindSymbol(const AName: String): TFpDbgSymbol; @@ -304,7 +312,7 @@ procedure TerminateProcess; virtual; abstract; property Handle: THandle read GetHandle; - property Name: String read FName write SetName; + property Name: String read FFileName write SetFileName; property ProcessID: integer read FProcessID; property ThreadID: integer read FThreadID; property ExitCode: DWord read FExitCode; @@ -384,8 +392,10 @@ function TDbgCallstackEntry.GetSymbol: TFpDbgSymbol; begin - if not FIsSymbolResolved then + if not FIsSymbolResolved then begin FSymbol := FThread.Process.FindSymbol(FAnAddress); + FIsSymbolResolved := FSymbol <> nil + end; result := FSymbol; end; @@ -400,6 +410,46 @@ result := ''; end; +function TDbgCallstackEntry.GetParamsAsString: string; +var + ProcVal: TFpDbgValue; + InstrPointerValue: TDBGPtr; + AContext: TFpDbgInfoContext; + APrettyPrinter: TFpPascalPrettyPrinter; + m: TFpDbgValue; + v: String; + i: Integer; +begin + result := ''; + if assigned(ProcSymbol) then begin + ProcVal := ProcSymbol.Value; + if (ProcVal <> nil) then begin + InstrPointerValue := FThread.Process.GetInstructionPointerRegisterValue; + if InstrPointerValue <> 0 then begin + AContext := FThread.Process.DbgInfo.FindContext(FThread.ID, Index, InstrPointerValue); + if AContext <> nil then begin + AContext.MemManager.DefaultContext := AContext; + APrettyPrinter:=TFpPascalPrettyPrinter.Create(DBGPTRSIZE[FThread.Process.Mode]); + try + for i := 0 to ProcVal.MemberCount - 1 do begin + m := ProcVal.Member[i]; + if (m <> nil) and (sfParameter in m.DbgSymbol.Flags) then begin + APrettyPrinter.PrintValue(v, m, wdfDefault, -1, [ppoStackParam]); + if result <> '' then result := result + ', '; + result := result + v; + end; + end; + finally + APrettyPrinter.Free; + end; + end; + end; + end; + if result <> '' then + result := '(' + result + ')'; + end; +end; + function TDbgCallstackEntry.GetLine: integer; var Symbol: TFpDbgSymbol; @@ -422,22 +472,35 @@ result := ''; end; -constructor TDbgCallstackEntry.create(AThread: TDbgThread; AFrameAddress, AnAddress: TDBGPtr); +constructor TDbgCallstackEntry.create(AThread: TDbgThread; AnIndex: integer; AFrameAddress, AnAddress: TDBGPtr); begin FThread := AThread; FFrameAdress:=AFrameAddress; FAnAddress:=AnAddress; + FIndex:=AnIndex; FRegisterValueList := TDbgRegisterValueList.Create; end; destructor TDbgCallstackEntry.Destroy; begin - FRegisterValueList.Free; + FreeAndNil(FRegisterValueList); + ReleaseRefAndNil(FSymbol); inherited Destroy; end; { TDbgMemReader } +function TDbgMemReader.ReadMemory(AnAddress: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; +begin + result := GetDbgProcess.ReadData(AnAddress, ASize, ADest^); +end; + +function TDbgMemReader.ReadMemoryEx(AnAddress, AnAddressSpace: TDbgPtr; ASize: Cardinal; ADest: Pointer): Boolean; +begin + Assert(AnAddressSpace>0,'TDbgMemReader.ReadMemoryEx ignores AddressSpace'); + result := GetDbgProcess.ReadData(AnAddress, ASize, ADest^); +end; + function TDbgMemReader.ReadRegister(ARegNum: Cardinal; out AValue: TDbgPtr; AContext: TFpDbgAddressContext): Boolean; var ARegister: TDbgRegisterValue; @@ -626,9 +689,9 @@ Result := FProcess.RemoveBreak(addr - AddrOffset); end; -procedure TDbgInstance.SetName(const AValue: String); +procedure TDbgInstance.SetFileName(const AValue: String); begin - FName := AValue; + FFileName := AValue; end; procedure TDbgInstance.InitializeLoaders; @@ -664,7 +727,7 @@ end; end; -constructor TDbgProcess.Create(const AName: string; const AProcessID, AThreadID: Integer; AOnLog: TOnLog); +constructor TDbgProcess.Create(const AFileName: string; const AProcessID, AThreadID: Integer; AOnLog: TOnLog); const {.$IFDEF CPU64} MAP_ID_SIZE = itu8; @@ -684,7 +747,7 @@ FSymInstances := TList.Create; - SetName(AName); + SetFileName(AFileName); inherited Create(Self); end; @@ -1134,6 +1197,8 @@ end; procedure TDbgThread.PrepareCallStackEntryList(AFrameRequired: Integer); +const + MaxFrames = 25; var Address, Frame, LastFrame: QWord; Size, Count: integer; @@ -1152,17 +1217,17 @@ Size := sizeof(pointer); // TODO: Context.AddressSize FCallStackEntryList.FreeObjects:=true; - AnEntry := TDbgCallstackEntry.create(Self, Frame, Address); + AnEntry := TDbgCallstackEntry.create(Self, 0, Frame, Address); // Top level entry needs no registerlist / same as GetRegisterValueList FCallStackEntryList.Add(AnEntry); LastFrame := 0; - Count := 25; + Count := MaxFrames; while (Frame <> 0) and (Frame > LastFrame) do begin if not Process.ReadData(Frame + Size, Size, Address) or (Address = 0) then Break; if not Process.ReadData(Frame, Size, Frame) then Break; - AnEntry := TDbgCallstackEntry.create(Self, Frame, Address); + AnEntry := TDbgCallstackEntry.create(Self, MaxFrames+1-Count, Frame, Address); AnEntry.RegisterValueList.DbgRegisterAutoCreate['eip'].SetValue(Address, IntToStr(Address),Size,8); AnEntry.RegisterValueList.DbgRegisterAutoCreate['ebp'].SetValue(Frame, IntToStr(Frame),Size,5); FCallStackEntryList.Add(AnEntry); @@ -1180,9 +1245,9 @@ destructor TDbgThread.Destroy; begin FProcess.ThreadDestroyed(Self); - FRegisterValueList.Free; + FreeAndNil(FRegisterValueList); ClearCallStack; - FCallStackEntryList.Free; + FreeAndNil(FCallStackEntryList); inherited; end; diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbgcontroller.pas lazarus-1.6+dfsg/components/fpdebug/fpdbgcontroller.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbgcontroller.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbgcontroller.pas 2016-02-10 19:37:26.000000000 +0000 @@ -164,7 +164,7 @@ property RedirectConsoleOutput: boolean read FRedirectConsoleOutput write FRedirectConsoleOutput; property ConsoleTty: string read FConsoleTty write FConsoleTty; // With this parameter set a 'next' will only stop if the current - // instruction is the first inststruction of a line according to the + // instruction is the first instruction of a line according to the // debuginfo. // Due to a bug in fpc's debug-info, the line info for the first instruction // of a line, sometimes points the the prior line. This setting hides the @@ -697,7 +697,7 @@ begin FCurrentProcess.LoadInfo; if not FCurrentProcess.DbgInfo.HasInfo then - Log('No Dwarf-debug information available. The debugger will not function properly.',dllInfo); + Log('No Dwarf-debug information available. The debugger will not function properly. [CurrentProcess='+dbgsname(FCurrentProcess)+',DbgInfo='+dbgsname(FCurrentProcess.DbgInfo)+']',dllInfo); DoOnDebugInfoLoaded(self); diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbgdarwinclasses.pas lazarus-1.6+dfsg/components/fpdebug/fpdbgdarwinclasses.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbgdarwinclasses.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbgdarwinclasses.pas 2015-12-04 17:33:38.000000000 +0000 @@ -20,6 +20,7 @@ FpDbgInfo, MacOSAll, FpDbgUtil, + UTF8Process, LazLoggerBase; type @@ -125,7 +126,7 @@ FStatus: cint; FProcessStarted: boolean; FTaskPort: mach_port_name_t; - FProcProcess: TProcess; + FProcProcess: TProcessUTF8; FIsTerminating: boolean; FExceptionSignal: PtrUInt; FMasterPtyFd: cint; @@ -710,7 +711,7 @@ class function TDbgDarwinProcess.StartInstance(AFileName: string; AParams, AnEnvironment: TStrings; AWorkingDirectory, AConsoleTty: string; AOnLog: TOnLog; ReDirectOutput: boolean): TDbgProcess; var PID: TPid; - AProcess: TProcess; + AProcess: TProcessUTF8; AnExecutabeFilename: string; AMasterPtyFd: cint; begin @@ -751,7 +752,7 @@ end; end; - AProcess := TProcess.Create(nil); + AProcess := TProcessUTF8.Create(nil); try AProcess.OnForkEvent:=@OnForkEvent; AProcess.Executable:=AnExecutabeFilename; diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbgdwarfdataclasses.pas lazarus-1.6+dfsg/components/fpdebug/fpdbgdwarfdataclasses.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbgdwarfdataclasses.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbgdwarfdataclasses.pas 2015-12-17 21:59:20.000000000 +0000 @@ -9,7 +9,7 @@ --------------------------------------------------------------------------- @created(Mon Aug 1st WET 2006) - @lastmod($Date: 2015-05-19 00:54:40 +0200 (Di, 19 Mai 2015) $) + @lastmod($Date: 2015-12-17 22:59:20 +0100 (Do, 17 Dez 2015) $) @author(Marc Weustink <marc@@dommelstein.nl>) @author(Martin Friebe) @@ -2959,6 +2959,8 @@ // TDbgDwarfProcSymbol Result := Cu.DwarfSymbolClassMap.CreateProcSymbol(CU, Iter.DataPtr, AAddress); + if Result<>nil then + break; finally Iter.Free; end; diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbgdwarf.pas lazarus-1.6+dfsg/components/fpdebug/fpdbgdwarf.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbgdwarf.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbgdwarf.pas 2015-05-20 21:00:18.000000000 +0000 @@ -9,7 +9,7 @@ --------------------------------------------------------------------------- @created(Mon Aug 1st WET 2006) - @lastmod($Date: 2015-05-19 00:54:40 +0200 (Di, 19 Mai 2015) $) + @lastmod($Date: 2015-05-20 23:00:18 +0200 (Mi, 20 Mai 2015) $) @author(Marc Weustink <marc@@dommelstein.nl>) @author(Martin Friebe) @@ -869,6 +869,7 @@ protected function GetValueAddress(AValueObj: TFpDwarfValue; out AnAddress: TFpDbgMemLocation): Boolean; override; function HasAddress: Boolean; override; + function GetFlags: TDbgSymbolFlags; override; public end; @@ -4718,6 +4719,11 @@ Result := InformationEntry.HasAttrib(DW_AT_location); end; +function TFpDwarfSymbolValueParameter.GetFlags: TDbgSymbolFlags; +begin + Result := (inherited GetFlags) + [sfParameter]; +end; + { TFpDwarfSymbolUnit } procedure TFpDwarfSymbolUnit.Init; diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbginfo.pas lazarus-1.6+dfsg/components/fpdebug/fpdbginfo.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbginfo.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbginfo.pas 2015-05-20 21:00:18.000000000 +0000 @@ -85,6 +85,7 @@ sfDynArray, // skArray is known to be a dynamic array sfStatArray, // skArray is known to be a static array sfVirtual, // skProcedure,skFunction: virtual function (or overriden) + sfParameter, // Parameter to a function // unimplemented: sfInternalRef, // TODO: (May not always be present) Internal ref/pointer e.g. var/constref parameters sfConst, // The sym is a constant and cannot be modified diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbglinuxclasses.pas lazarus-1.6+dfsg/components/fpdebug/fpdbglinuxclasses.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbglinuxclasses.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbglinuxclasses.pas 2015-12-04 17:33:38.000000000 +0000 @@ -17,6 +17,7 @@ FpDbgLinuxExtra, FpDbgInfo, FpDbgUtil, + UTF8Process, LazLoggerBase; type @@ -245,7 +246,7 @@ private FStatus: cint; FProcessStarted: boolean; - FProcProcess: TProcess; + FProcProcess: TProcessUTF8; FIsTerminating: boolean; FExceptionSignal: PtrUInt; FMasterPtyFd: cint; @@ -586,7 +587,7 @@ AOnLog: TOnLog; ReDirectOutput: boolean): TDbgProcess; var PID: TPid; - AProcess: TProcess; + AProcess: TProcessUTF8; AMasterPtyFd: cint; AnExecutabeFilename: string; begin @@ -620,7 +621,7 @@ GConsoleTty:=AConsoleTty; end; - AProcess := TProcess.Create(nil); + AProcess := TProcessUTF8.Create(nil); try AProcess.OnForkEvent:=@OnForkEvent; AProcess.Executable:=AnExecutabeFilename; diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbgloader.pp lazarus-1.6+dfsg/components/fpdebug/fpdbgloader.pp --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbgloader.pp 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbgloader.pp 2015-05-12 17:59:24.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: fpdbgloader.pp 49100 2015-05-18 22:54:40Z martin $ } +{ $Id: fpdbgloader.pp 48997 2015-05-12 17:59:24Z martin $ } { --------------------------------------------------------------------------- fpdbgloader.pp - Native Freepascal debugger - Section loader @@ -11,7 +11,7 @@ --------------------------------------------------------------------------- @created(Mon Aug 1st WET 2006) - @lastmod($Date: 2015-05-19 00:54:40 +0200 (Di, 19 Mai 2015) $) + @lastmod($Date: 2015-05-12 19:59:24 +0200 (Di, 12 Mai 2015) $) @author(Marc Weustink <marc@@dommelstein.nl>) *************************************************************************** diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fpdbgwinclasses.pas lazarus-1.6+dfsg/components/fpdebug/fpdbgwinclasses.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fpdbgwinclasses.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fpdbgwinclasses.pas 2016-02-10 19:37:26.000000000 +0000 @@ -49,7 +49,7 @@ FpDbgInfo, FpDbgLoader, DbgIntfBaseTypes, - LazLoggerBase; + LazLoggerBase, UTF8Process; type @@ -84,7 +84,7 @@ private FInfo: TCreateProcessDebugInfo; FPauseRequested: boolean; - FProcProcess: TProcess; + FProcProcess: TProcessUTF8; FJustStarted: boolean; function GetFullProcessImageName(AProcessHandle: THandle): string; function GetModuleFileName(AModuleHandle: THandle): string; @@ -159,55 +159,62 @@ log('FpDbg-ERROR: %s', [GetLastErrorText], dllDebug); end; -function QueryFullProcessImageName(hProcess:HANDLE; dwFlags: DWord; lpExeName:LPTSTR; var lpdwSize:DWORD):BOOL; stdcall; external 'kernel32' name 'QueryFullProcessImageNameA'; +function QueryFullProcessImageName(hProcess:HANDLE; dwFlags: DWord; lpExeName:LPWSTR; var lpdwSize:DWORD):BOOL; stdcall; external 'kernel32' name 'QueryFullProcessImageNameW'; function TDbgWinProcess.GetFullProcessImageName(AProcessHandle: THandle): string; var - s: string; + u: UnicodeString; len: DWORD; begin len := MAX_PATH; - SetLength(S, len); - if QueryFullProcessImageName(AProcessHandle, 0, @S[1], len) - then SetLength(S, len) - else begin - S := ''; + SetLength(u, len); + if QueryFullProcessImageName(AProcessHandle, 0, @u[1], len) + then begin + SetLength(u, len); + Result:=UTF8Encode(u); + end else begin + Result := ''; LogLastError; end; - result := s; end; function TDbgWinProcess.GetModuleFileName(AModuleHandle: THandle): string; var + u: UnicodeString; s: string; len: Integer; hMod: THandle; - _GetFinalPathNameByHandle: function(hFile: HANDLE; lpFilename:LPTSTR; cchFilePath, dwFlags: DWORD):DWORD; stdcall; + _GetFinalPathNameByHandle: function(hFile: HANDLE; lpFilename:LPWSTR; cchFilePath, dwFlags: DWORD):DWORD; stdcall; begin result := ''; - // GetFinalPathNameByHandle is only available on Windows Vista / Server 2008 - _GetFinalPathNameByHandle := nil; // normally you would load a lib, but since kernel32 is // always loaded we can use this (and we don't have to free it hMod := GetModuleHandle(kernel32); if hMod = 0 then Exit; //???? - pointer(_GetFinalPathNameByHandle) := GetProcAddress(hMod, 'GetFinalPathNameByHandleA'); + // GetFinalPathNameByHandle is only available on Windows Vista / Server 2008 + _GetFinalPathNameByHandle := nil; + pointer(_GetFinalPathNameByHandle) := GetProcAddress(hMod, 'GetFinalPathNameByHandleW'); if assigned(_GetFinalPathNameByHandle) then begin - SetLength(S, MAX_PATH); + SetLength(u, MAX_PATH); - len := _GetFinalPathNameByHandle(AModuleHandle, @S[1], MAX_PATH, 0); + len := _GetFinalPathNameByHandle(AModuleHandle, @u[1], MAX_PATH, 0); + s:=''; if len > 0 - then SetLength(S, len - 1) - else begin - S := ''; + then begin + SetLength(u, len - 1); + if (u<>'') and (u[length(u)]=#0) then + begin + // On some older Windows versions there's a bug in GetFinalPathNameByHandleW, + // which leads to a trailing #0. + Delete(u,length(u),1); + end; + s:=UTF8Encode(u); + end else begin + u := ''; LogLastError; end; - // On some older Windows versions there's a bug in GetFinalPathNameByHandleA, - // which leads to a trailing #0. - if strutils.RightStr(S,1) =#0 then - SetLength(S,length(S)-1); // Remove the \\?\ prefix Delete(S,1,4); result := S; @@ -261,7 +268,7 @@ s := TDbgWinProcess(AProcess).GetProcFilename(AProcess, AInfo.lpImageName, AInfo.fUnicode, AInfo.hFile); if s <> '' - then SetName(s); + then SetFileName(s); LoadInfo; end; @@ -453,10 +460,10 @@ class function TDbgWinProcess.StartInstance(AFileName: string; AParams, AnEnvironment: TStrings; AWorkingDirectory, AConsoleTty: string; AOnLog: TOnLog; ReDirectOutput: boolean): TDbgProcess; var - AProcess: TProcess; + AProcess: TProcessUTF8; begin result := nil; - AProcess := TProcess.Create(nil); + AProcess := TProcessUTF8.Create(nil); try AProcess.Options:=[poDebugProcess, poNewProcessGroup]; AProcess.Executable:=AFilename; @@ -489,10 +496,14 @@ begin if assigned(AThread) then begin - AThread.NextIsSingleStep:=SingleStep; - if SingleStep or assigned(FCurrentBreakpoint) then - TDbgWinThread(AThread).SetSingleStep; - AThread.BeforeContinue; + if not FThreadMap.HasId(AThread.ID) then begin + AThread.Free; + end else begin + AThread.NextIsSingleStep:=SingleStep; + if SingleStep or assigned(FCurrentBreakpoint) then + TDbgWinThread(AThread).SetSingleStep; + AThread.BeforeContinue; + end; end; case MDebugEvent.Exception.ExceptionRecord.ExceptionCode of @@ -500,9 +511,8 @@ EXCEPTION_SINGLE_STEP: begin Windows.ContinueDebugEvent(MDebugEvent.dwProcessId, MDebugEvent.dwThreadId, DBG_CONTINUE); end - else begin - Windows.ContinueDebugEvent(MDebugEvent.dwProcessId, MDebugEvent.dwThreadId, DBG_EXCEPTION_NOT_HANDLED); - end; + else + Windows.ContinueDebugEvent(MDebugEvent.dwProcessId, MDebugEvent.dwThreadId, DBG_EXCEPTION_NOT_HANDLED); end; result := true; end; @@ -873,7 +883,7 @@ s := GetProcFilename(Self, AInfo.lpImageName, AInfo.fUnicode, 0); if s <> '' - then SetName(s); + then SetFileName(s); end; function TDbgWinProcess.GetInstructionPointerRegisterValue: TDbgPtr; @@ -981,7 +991,7 @@ if Lib.DbgInfo.HasInfo then FSymInstances.Remove(Lib); FLibMap.Delete(ID); - // TODO: Free lib ??? + Lib.Free; end; { TDbgWinBreakpoint } diff -Nru lazarus-1.4.4+dfsg/components/fpdebug/fppascalbuilder.pas lazarus-1.6+dfsg/components/fpdebug/fppascalbuilder.pas --- lazarus-1.4.4+dfsg/components/fpdebug/fppascalbuilder.pas 2014-12-07 22:25:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpdebug/fppascalbuilder.pas 2015-05-20 21:00:18.000000000 +0000 @@ -34,6 +34,11 @@ ); TFpPrettyPrintValueFlags = set of TFpPrettyPrintValueFlag; + TFpPrettyPrintOption = ( + ppoStackParam + ); + TFpPrettyPrintOptions = set of TFpPrettyPrintOption; + const PV_FORWARD_FLAGS = [ppvSkipClassBody, ppvSkipRecordBody]; @@ -54,14 +59,16 @@ ANestLevel: Integer; AnIndent: String; ADisplayFormat: TWatchDisplayFormat; ARepeatCount: Integer = -1; - ADBGTypeInfo: PDBGType = nil + ADBGTypeInfo: PDBGType = nil; + AOptions: TFpPrettyPrintOptions = [] ): Boolean; public constructor Create(AnAddressSize: Integer); function PrintValue(out APrintedValue: String; AValue: TFpDbgValue; ADisplayFormat: TWatchDisplayFormat = wdfDefault; - ARepeatCount: Integer = -1 + ARepeatCount: Integer = -1; + AOptions: TFpPrettyPrintOptions = [] ): Boolean; function PrintValue(out APrintedValue: String; out ADBGTypeInfo: TDBGType; @@ -443,7 +450,7 @@ function TFpPascalPrettyPrinter.InternalPrintValue(out APrintedValue: String; AValue: TFpDbgValue; AnAddressSize: Integer; AFlags: TFpPrettyPrintValueFlags; ANestLevel: Integer; AnIndent: String; ADisplayFormat: TWatchDisplayFormat; - ARepeatCount: Integer; ADBGTypeInfo: PDBGType): Boolean; + ARepeatCount: Integer; ADBGTypeInfo: PDBGType; AOptions: TFpPrettyPrintOptions): Boolean; function ResTypeName: String; @@ -681,7 +688,7 @@ end; end; - if ADisplayFormat = wdfPointer then begin + if (ADisplayFormat = wdfPointer) or (ppoStackParam in AOptions) then begin if not (ppvCreateDbgType in AFlags) then s := ResTypeName; APrintedValue := '$'+IntToHex(AValue.AsCardinal, AnAddressSize*2); @@ -725,7 +732,7 @@ if (m = nil) or (m.Kind in [skProcedure, skFunction]) then continue; s := ''; - InternalPrintValue(MbVal, m, AnAddressSize, fl, ANestLevel+1, AnIndent, ADisplayFormat); + InternalPrintValue(MbVal, m, AnAddressSize, fl, ANestLevel+1, AnIndent, ADisplayFormat, -1, nil, AOptions); if m.DbgSymbol <> nil then begin MbName := m.DbgSymbol.Name; s := MbName + ' = ' + MbVal; @@ -794,7 +801,7 @@ for i := d to d + Cnt - 1 do begin m := AValue.Member[i]; if m <> nil then - InternalPrintValue(s, m, AnAddressSize, AFlags * PV_FORWARD_FLAGS, ANestLevel+1, AnIndent, ADisplayFormat) + InternalPrintValue(s, m, AnAddressSize, AFlags * PV_FORWARD_FLAGS, ANestLevel+1, AnIndent, ADisplayFormat, -1, nil, AOptions) else s := '{error}'; if APrintedValue = '' @@ -899,10 +906,11 @@ end; function TFpPascalPrettyPrinter.PrintValue(out APrintedValue: String; AValue: TFpDbgValue; - ADisplayFormat: TWatchDisplayFormat; ARepeatCount: Integer): Boolean; + ADisplayFormat: TWatchDisplayFormat; ARepeatCount: Integer; + AOptions: TFpPrettyPrintOptions): Boolean; begin Result := InternalPrintValue(APrintedValue, AValue, - AddressSize, [], 0, '', ADisplayFormat, ARepeatCount); + AddressSize, [], 0, '', ADisplayFormat, ARepeatCount, nil, AOptions); end; function TFpPascalPrettyPrinter.PrintValue(out APrintedValue: String; out diff -Nru lazarus-1.4.4+dfsg/components/fppkg/src/fppkg_details.pas lazarus-1.6+dfsg/components/fppkg/src/fppkg_details.pas --- lazarus-1.4.4+dfsg/components/fppkg/src/fppkg_details.pas 2011-05-22 20:31:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/fppkg/src/fppkg_details.pas 2015-08-12 10:19:37.000000000 +0000 @@ -58,9 +58,7 @@ procedure FormShow(Sender: TObject); private FPackageName: string; - { private declarations } public - { public declarations } property PackageName: string read FPackageName write FPackageName; end; diff -Nru lazarus-1.4.4+dfsg/components/fppkg/src/fppkg_mainfrm.pas lazarus-1.6+dfsg/components/fppkg/src/fppkg_mainfrm.pas --- lazarus-1.4.4+dfsg/components/fppkg/src/fppkg_mainfrm.pas 2014-01-02 18:16:19.000000000 +0000 +++ lazarus-1.6+dfsg/components/fppkg/src/fppkg_mainfrm.pas 2015-08-12 10:19:37.000000000 +0000 @@ -39,7 +39,7 @@ fppkg_optionsfrm, fppkg_details, //IDE interface {$IFDEF LazarusIDEPackage} - IDEIntf, PackageIntf, IDECommands, contnrs, fppkg_lpk, + PackageIntf, IDECommands, contnrs, fppkg_lpk, {$ENDIF} // Repository handler objects fprepos, @@ -119,7 +119,6 @@ procedure SupportCheckGroupItemClick(Sender: TObject; Index: integer); procedure UpdateButtonClick(Sender: TObject); private - { private declarations } SearchPhrases: TStrings; function FindSearchPhrase(pkg: TLazPackageData): boolean; @@ -134,7 +133,7 @@ procedure UpdatePackageListView; procedure ListPackages; public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/components/fppkg/src/fppkg_optionsfrm.pas lazarus-1.6+dfsg/components/fppkg/src/fppkg_optionsfrm.pas --- lazarus-1.4.4+dfsg/components/fppkg/src/fppkg_optionsfrm.pas 2013-11-04 13:23:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/fppkg/src/fppkg_optionsfrm.pas 2015-08-12 10:19:37.000000000 +0000 @@ -34,8 +34,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, - ButtonPanel, StdCtrls, EditBtn, ExtCtrls, Buttons, pkgoptions, pkgglobals; + SysUtils, Forms, Dialogs, ComCtrls, ButtonPanel, StdCtrls, ExtCtrls, Buttons, + pkgoptions, pkgglobals; type TPkgColumn = record @@ -126,9 +126,8 @@ procedure RemoveFromVisibleColumnsButtonClick(Sender: TObject); private procedure SetupColumnVisibility; - { private declarations } public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/components/fppkg/src/laz_pkgcommands.pas lazarus-1.6+dfsg/components/fppkg/src/laz_pkgcommands.pas --- lazarus-1.4.4+dfsg/components/fppkg/src/laz_pkgcommands.pas 2011-06-17 09:43:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fppkg/src/laz_pkgcommands.pas 2015-08-12 10:19:37.000000000 +0000 @@ -5,14 +5,12 @@ interface uses - Classes, SysUtils,pkghandler,laz_pkghandler; + pkghandler; implementation uses - zipper, - pkgmessages, pkgglobals, pkgoptions, pkgdownload, pkgrepos, fprepos, - laz_pkgrepos, pkgfpmake; + pkgglobals, pkgoptions, pkgdownload, pkgrepos, laz_pkgrepos, pkgfpmake; type { TCommandLazListPackages } diff -Nru lazarus-1.4.4+dfsg/components/fppkg/src/laz_pkghandler.pas lazarus-1.6+dfsg/components/fppkg/src/laz_pkghandler.pas --- lazarus-1.4.4+dfsg/components/fppkg/src/laz_pkghandler.pas 2013-11-04 13:23:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/fppkg/src/laz_pkghandler.pas 2015-08-12 10:19:37.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, pkghandler, pkgglobals, pkgmessages; + pkghandler, pkgglobals, pkgmessages; procedure Laz_ExecuteAction(const APackageName,AAction:string); diff -Nru lazarus-1.4.4+dfsg/components/fppkg/svn/svncommand.pas lazarus-1.6+dfsg/components/fppkg/svn/svncommand.pas --- lazarus-1.4.4+dfsg/components/fppkg/svn/svncommand.pas 2013-07-12 14:57:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/fppkg/svn/svncommand.pas 2015-12-04 17:34:13.000000000 +0000 @@ -36,7 +36,7 @@ uses Classes, SysUtils, process, - FileUtil; + FileUtil, UTF8Process; function ExecuteSvnCommand(const Command: string; Output: TStream): integer; function ExecuteSvnCommand(const Command: string): integer; @@ -61,7 +61,7 @@ function ExecuteSvnCommand(const Command: string; Output: TStream): integer; var - SvnProcess: TProcess; + SvnProcess: TProcessUTF8; function ReadOutput: boolean; // returns true if output was actually read @@ -89,7 +89,7 @@ begin if SvnExecutable='' then InitializeSvnExecutable; - SvnProcess := TProcess.Create(nil); + SvnProcess := TProcessUTF8.Create(nil); try SvnProcess.CommandLine := SvnExecutable + ' ' + Command; SvnProcess.Options := [poUsePipes]; diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/docxvectorialwriter.pas lazarus-1.6+dfsg/components/fpvectorial/docxvectorialwriter.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/docxvectorialwriter.pas 2013-09-24 14:40:37.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/docxvectorialwriter.pas 2015-05-11 10:02:24.000000000 +0000 @@ -726,7 +726,7 @@ If Not Assigned(TvParagraph(oEntity).Style) Then TvParagraph(oEntity).Style := AList.Style; - ProcessParagraph(TvParagraph(oEntity), AList.Level, FData.FindListStyleIndex(AList.ListStyle) + 1); + ProcessParagraph(TvParagraph(oEntity), AList.GetLevel(), FData.FindListStyleIndex(AList.ListStyle) + 1); End Else If oEntity Is TvList Then ProcessList(TvList(oEntity)) @@ -892,8 +892,8 @@ If Assigned(ATable.Style) Then oDocXML.Add('<w:tblStyle w:val="' + StyleNameToStyleID(ATable.Style) + '" />'); - If ATable.CellSpacing <> 0 Then - oDocXML.Add('<w:tblCellSpacing w:w="' + mmToTwipsS(ATable.CellSpacing) + + If ATable.SpacingBetweenCells <> 0 Then + oDocXML.Add('<w:tblCellSpacing w:w="' + mmToTwipsS(ATable.SpacingBetweenCells) + '" w:type="dxa" />'); If ATable.BackgroundColor <> FPColor(0, 0, 0, 0) Then diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/epsvectorialreader.pas lazarus-1.6+dfsg/components/fpvectorial/epsvectorialreader.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/epsvectorialreader.pas 2013-08-24 06:49:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/epsvectorialreader.pas 2015-03-24 17:50:02.000000000 +0000 @@ -495,7 +495,6 @@ } procedure TPSTokenizer.ReadFromStream(AStream: TStream); var - i: Integer; CurChar: Char; CurLine: Integer = 1; State: TPostScriptScannerState = ssSearchingToken; @@ -504,7 +503,6 @@ ExpressionToken: TExpressionToken; ArrayToken, NewArrayToken: TArrayToken; DictionaryToken: TDictionaryToken; - Len: Integer; lReturnState: TStack; // of TPostScriptScannerState lExpressionStateReturn: TPostScriptScannerState; lIsEndOfLine: Boolean; @@ -1092,8 +1090,6 @@ procedure TvEPSVectorialReader.ExecuteOperatorToken(AToken: TExpressionToken; AData: TvVectorialPage; ADoc: TvVectorialDocument; ANextToken: TPSToken); -var - Param1, Param2: TPSToken; begin if AToken.StrValue = '' then begin diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvc_mainform.lfm lazarus-1.6+dfsg/components/fpvectorial/examples/fpvc_mainform.lfm --- lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvc_mainform.lfm 2011-11-16 09:33:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/examples/fpvc_mainform.lfm 2015-02-19 17:07:35.000000000 +0000 @@ -7,12 +7,12 @@ Caption = 'FP Vectorial Converter' ClientHeight = 456 ClientWidth = 240 - LCLVersion = '0.9.31' + LCLVersion = '1.5' object Label1: TLabel Left = 8 - Height = 18 + Height = 15 Top = 128 - Width = 158 + Width = 133 Caption = 'Location of the Input file:' ParentColor = False end @@ -30,35 +30,35 @@ end object editInput: TFileNameEdit Left = 8 - Height = 25 + Height = 27 Top = 144 Width = 192 DialogOptions = [] FilterIndex = 0 HideDirectories = False ButtonWidth = 23 - NumGlyphs = 0 + NumGlyphs = 1 MaxLength = 0 TabOrder = 0 end object Label3: TLabel Left = 8 - Height = 18 + Height = 15 Top = 168 - Width = 169 + Width = 143 Caption = 'Full path of the Output file:' ParentColor = False end object editOutput: TFileNameEdit Left = 8 - Height = 25 + Height = 27 Top = 184 Width = 192 DialogOptions = [] FilterIndex = 0 HideDirectories = False ButtonWidth = 23 - NumGlyphs = 0 + NumGlyphs = 1 MaxLength = 0 TabOrder = 1 end diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvc_mainform.pas lazarus-1.6+dfsg/components/fpvectorial/examples/fpvc_mainform.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvc_mainform.pas 2011-11-16 09:33:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/examples/fpvc_mainform.pas 2015-02-19 17:07:35.000000000 +0000 @@ -62,7 +62,7 @@ Vec.ReadFromFile(editInput.FileName, vfPDF); imagePreview.Canvas.Brush.Color := clWhite; imagePreview.Canvas.FillRect(0, 0, imagePreview.Width, imagePreview.Height); - DrawFPVectorialToCanvas(Vec.GetPage(0), imagePreview.Canvas); + DrawFPVectorialToCanvas(Vec.GetPageAsVectorial(0), imagePreview.Canvas); finally Vec.Free; end; diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvmodifytest.lpi lazarus-1.6+dfsg/components/fpvectorial/examples/fpvmodifytest.lpi --- lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvmodifytest.lpi 2011-11-16 17:12:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/examples/fpvmodifytest.lpi 2015-02-14 10:11:09.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -56,12 +56,6 @@ <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvmodifytest.pas lazarus-1.6+dfsg/components/fpvectorial/examples/fpvmodifytest.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/examples/fpvmodifytest.pas 2011-11-16 09:33:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/examples/fpvmodifytest.pas 2015-02-14 10:11:09.000000000 +0000 @@ -27,7 +27,7 @@ try // Read the file VecDoc.ReadFromFile('bezier_1.svg'); - Vec := VecDoc.GetPage(0); + Vec := VecDoc.GetPageAsVectorial(0); // Now add 10 to the Y coordinate of all elements for i := 0 to Vec.GetEntitiesCount() - 1 do diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/fpvectorial.pas lazarus-1.6+dfsg/components/fpvectorial/fpvectorial.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/fpvectorial.pas 2015-02-10 22:58:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/fpvectorial.pas 2016-02-06 14:29:06.000000000 +0000 @@ -23,6 +23,8 @@ {.$define FPVECTORIAL_DEBUG_DIMENSIONS} {.$define FPVECTORIAL_TOCANVAS_DEBUG} {.$define FPVECTORIAL_DEBUG_BLOCKS} +{$define FPVECTORIAL_AUTOFIT_DEBUG} +{.$define FPVECTORIAL_TOCANVAS_ELLIPSE_VISUALDEBUG} interface @@ -99,6 +101,7 @@ // Convenience constant to convert text size points to mm FPV_TEXT_POINT_TO_MM = 0.35278; + TWO_PI = 2.0 * pi; type TvCustomVectorialWriter = class; @@ -106,30 +109,64 @@ TvPage = class; TvVectorialPage = class; TvTextPageSequence = class; - TvEntityWithPenBrushAndFont = class; + TvEntity = class; + TPath = class; TvVectorialDocument = class; TvEmbeddedVectorialDoc = class; + { Coordinates } + + T2DPoint = record + X, Y: Double; + end; + P2DPoint = ^T2DPoint; + + T3DPoint = record + X, Y, Z: Double; + end; + P3DPoint = ^T3DPoint; + + T2DPointsArray = array of T2DPoint; + T3DPointsArray = array of T3DPoint; + TPointsArray = array of TPoint; + { Pen, Brush and Font } TvPen = record Color: TFPColor; Style: TFPPenStyle; Width: Integer; + Pattern: array of LongWord; end; + PvPen = ^TvPen; - TvBrushKind = (bkSimpleBrush, bkHorizontalGradient, bkVerticalGradient, vkOtherLinearGradient, bkRadialGradient); + TvBrushKind = (bkSimpleBrush, bkHorizontalGradient, bkVerticalGradient, + bkOtherLinearGradient, bkRadialGradient); TvCoordinateUnit = (vcuDocumentUnit, vcuPercentage); + TvGradientFlag = (gfRelStartX, gfRelStartY, gfRelEndX, gfRelEndY, gfRelToUserSpace); + TvGradientFlags = set of TvGradientFlag; + + TvGradientColor = record + Color: TFPColor; + Position: Double; // 0 ... 1 + end; + + TvGradientColors = array of TvGradientColor; + TvBrush = record Color: TFPColor; Style: TFPBrushStyle; Kind: TvBrushKind; // Gradient filling support + Gradient_start: T2DPoint; // Start/end point of gradient, in pixels by default, + Gradient_end: T2DPoint; // but if gfRel* in flags relative to entity boundary or user space + Gradient_flags: TvGradientFlags; Gradient_cx, Gradient_cy, Gradient_r, Gradient_fx, Gradient_fy: Double; Gradient_cx_Unit, Gradient_cy_Unit, Gradient_r_Unit, Gradient_fx_Unit, Gradient_fy_Unit: TvCoordinateUnit; - Gradient_colors: array of TFPColor; + Gradient_colors: TvGradientColors; end; + PvBrush = ^TvBrush; TvFont = record Color: TFPColor; @@ -146,6 +183,7 @@ Underline: boolean; StrikeThrough: boolean; end; + PvFont = ^TvFont; TvSetStyleElement = ( // Pen, Brush and Font @@ -201,8 +239,12 @@ function GetKind: TvStyleKind; // takes care of parenting procedure Clear(); virtual; procedure CopyFrom(AFrom: TvStyle); + procedure CopyFromEntity(AEntity: TvEntity); + procedure ApplyOverFromPen(APen: PvPen; ASetElements: TvSetStyleElements); + procedure ApplyOverFromBrush(ABrush: PvBrush; ASetElements: TvSetStyleElements); + procedure ApplyOverFromFont(AFont: PvFont; ASetElements: TvSetStyleElements); procedure ApplyOver(AFrom: TvStyle); virtual; - procedure ApplyIntoEntity(ADest: TvEntityWithPenBrushAndFont); virtual; + procedure ApplyIntoEntity(ADest: TvEntity); virtual; function CreateStyleCombinedWithParent: TvStyle; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; virtual; end; @@ -255,13 +297,7 @@ function GetListLevelStyle(AIndex: Integer): TvListLevelStyle; end; - { Coordinates and polyline segments } - - T3DPoint = record - X, Y, Z: Double; - end; - - P3DPoint = ^T3DPoint; + { Polyline segments } TSegmentType = ( st2DLine, st2DLineWithPen, st2DBezier, @@ -269,7 +305,7 @@ st2DEllipticalArc); {@@ - The coordinates in fpvectorial are given in millimiters and + The coordinates in fpvectorial are given in millimeters and the starting point is in the bottom-left corner of the document. The X grows to the right and the Y grows to the top. } @@ -281,10 +317,17 @@ // Fields for linking the list Previous: TPathSegment; Next: TPathSegment; + // mathematical methods + function GetLength(): Double; virtual; + function GetPointAndTangentForDistance(ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; virtual; // ATangentAngle in radians + function GetStartPoint(out APoint: T3DPoint): Boolean; + // edition methods procedure Move(ADeltaX, ADeltaY: Double); virtual; procedure Rotate(AAngle: Double; ABase: T3DPoint); virtual; // Angle in radians - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); virtual; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); virtual; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; virtual; + // rendering + procedure AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; var Points: TPointsArray); virtual; end; {@@ @@ -300,9 +343,15 @@ T2DSegment = class(TPathSegment) public X, Y: Double; + // mathematical methods + function GetLength(): Double; override; + function GetPointAndTangentForDistance(ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; override; + // edition methods procedure Move(ADeltaX, ADeltaY: Double); override; procedure Rotate(AAngle: Double; ABase: T3DPoint); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; + // rendering + procedure AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; var Points: TPointsArray); override; end; T2DSegmentWithPen = class(T2DSegment) @@ -314,6 +363,12 @@ In Bezier segments, we remain using the X and Y coordinates for the ending point. The starting point is where the previous segment ended, so that the intermediary bezier control points are [X2, Y2] and [X3, Y3]. + + Equations: + + B(t) = (1-t)³ [Prev.X, Prev.Y] + 3 (1-t)² t [X2, Y2] + 3 (1-t) t² [X3, Y3] + t³ [X,Y], 0<=t<=1 + + B'(t) = 3 (1-t)² [X2-Prev.X, Y2-Prev.Y] + 6 (1-t) t [X3-X2, Y3-Y2] + 3 t² [X-X3,Y-Y3] } { T2DBezierSegment } @@ -322,8 +377,15 @@ public X2, Y2: Double; X3, Y3: Double; + // mathematical methods + function GetLength(): Double; override; + function GetPointAndTangentForDistance(ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; override; + // edition methods procedure Move(ADeltaX, ADeltaY: Double); override; + procedure Rotate(AAngle: Double; ABase: T3DPoint); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; + // rendering + procedure AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; var Points: TPointsArray); override; end; { T3DSegment } @@ -336,6 +398,8 @@ } X, Y, Z: Double; procedure Move(ADeltaX, ADeltaY: Double); override; + // rendering + procedure AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; var Points: TPointsArray); override; end; { T3DBezierSegment } @@ -357,13 +421,19 @@ E1, E2: T3DPoint; function AlignedEllipseCenterEquationT1(AParam: Double): Double; public - RX, RY, XRotation: Double; // RX and RY are the X and Y half axis sizes + RX, RY: Double; // RX and RY are the X and Y half axis sizes + XRotation: Double; // rotation of x axis, in radians LeftmostEllipse, ClockwiseArcFlag: Boolean; CX, CY: Double; // Ellipse center CenterSetByUser: Boolean; // defines if we should use LeftmostEllipse to calculate the center, or if CX, CY is set directly + procedure BezierApproximate(var Points: T3dPointsArray); + procedure PolyApproximate(var Points: T3dPointsArray); procedure CalculateCenter; - procedure CalculateEllipseBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); + procedure CalculateEllipseBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; + procedure AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; var Points: TPointsArray); override; + procedure Move(ADeltaX, ADeltaY: Double); override; + procedure Rotate(AAngle: Double; ABase: T3DPoint); override; end; TvFindEntityResult = (vfrNotFound, vfrFound, vfrSubpartFound); @@ -375,11 +445,12 @@ Selected: Boolean; ForceRenderBlock: Boolean; // Blocks are usually invisible, but when rendering an insert, their drawing can be forced // Fields which are output from the rendering process - EntityCanvasMinXY, EntityCanvasMaxXY: TPoint; // The size utilized in the canvas to draw this entity + EntityCanvasMinXY, EntityCanvasMaxXY: TPoint; // The size utilized in the canvas to draw this entity, in pixels end; TvEntityFeatures = record DrawsUpwards: Boolean; // TvText, TvEmbeddedVectorialDoc, etc draws upwards, but in the future we might have entities drawing downwards + DrawsUpwardHeightAdjustment: Integer; // in Canvas pixels end; { Now all elements } @@ -399,24 +470,37 @@ procedure Clear; virtual; // in CalculateBoundingBox always remember to treat correctly the case of ADest=nil!!! // This cased is utilized to guess the size of a document even before getting a canvas to draw at - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); virtual; - procedure ExpandBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); // helper to help CalculateBoundingBox - procedure CalcEntityCanvasMinMaxXY(var ARenderInfo: TvRenderInfo; APointX, APointY: Integer); virtual; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); virtual; + function CalculateSizeInCanvas(ADest: TFPCustomCanvas; out ALeft, ATop, AWidth, AHeight: Integer): Boolean; + procedure CalculateHeightInCanvas(ADest: TFPCustomCanvas; out AHeight: Integer); + // helper functions for CalculateBoundingBox & TvRenderInfo + procedure ExpandBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); + class procedure CalcEntityCanvasMinMaxXY(var ARenderInfo: TvRenderInfo; APointX, APointY: Integer); + class procedure CalcEntityCanvasMinMaxXY_With2Points(var ARenderInfo: TvRenderInfo; AX1, AY1, AX2, AY2: Integer); + procedure MergeRenderInfo(var AFrom, ATo: TvRenderInfo); + class procedure InitializeRenderInfo(out ARenderInfo: TvRenderInfo); + function CentralizeY_InHeight(ADest: TFPCustomCanvas; AHeight: Double): Double; + function GetHeight(ADest: TFPCustomCanvas): Double; + function GetWidth(ADest: TFPCustomCanvas): Double; {@@ ASubpart is only valid if this routine returns vfrSubpartFound } - function TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; virtual; + function GetLineIntersectionPoints(ACoord: Double; + ACoordIsX: Boolean): TDoubleDynArray; virtual; // get all points where the entity inner area crosses a line + function TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; virtual; procedure Move(ADeltaX, ADeltaY: Double); virtual; procedure MoveSubpart(ADeltaX, ADeltaY: Double; ASubpart: Cardinal); virtual; function GetSubpartCount: Integer; virtual; procedure PositionSubparts(ADest: TFPCustomCanvas; ABaseX, ABaseY: Double); virtual; procedure Scale(ADeltaScaleX, ADeltaScaleY: Double); virtual; procedure Rotate(AAngle: Double; ABase: T3DPoint); virtual; // Angle in radians + // ADoDraw = False means that no drawing will actually be done, only the size info will be filled in ARenderInfo procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); virtual; function AdjustColorToBackground(AColor: TFPColor; ARenderInfo: TvRenderInfo): TFPColor; function GetNormalizedPos(APage: TvVectorialPage; ANewMin, ANewMax: Double): T3DPoint; - function GetEntityFeatures: TvEntityFeatures; virtual; + function GetEntityFeatures(ADest: TFPCustomCanvas): TvEntityFeatures; virtual; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; virtual; class function GenerateDebugStrForFPColor(AColor: TFPColor): string; + class function GenerateDebugStrForString(AValue: string): string; end; TvEntityClass = class of TvEntity; @@ -436,6 +520,8 @@ { TvEntityWithPen } TvEntityWithPen = class(TvNamedEntity) + protected + function CreatePath: TPath; virtual; public {@@ The global Pen for the entire entity. In the case of paths, individual elements might be able to override this setting. } @@ -445,22 +531,36 @@ procedure ApplyPenToCanvas(ADest: TFPCustomCanvas; ARenderInfo: TvRenderInfo; APen: TvPen); overload; procedure AssignPen(APen: TvPen); procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; end; { TvEntityWithPenAndBrush } + TvClipMode = (vcmNonzeroWindingRule, vcmEvenOddRule); + TvEntityWithPenAndBrush = class(TvEntityWithPen) + protected + procedure CalcGradientVector(out AGradientStart, AGradientEnd: T2dPoint; + const ARect: TRect; ADestX: Integer = 0; ADestY: Integer = 0; + AMulX: Double = 1.0; AMulY: Double = 1.0); + procedure DrawPolygonBrushGradient(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + const APoints: TPointsArray; ARect: TRect; AGradientStart, AGradientEnd: T2DPoint); public {@@ The global Brush for the entire entity. In the case of paths, individual elements might be able to override this setting. } Brush: TvBrush; + WindingRule: TvClipMode; constructor Create(APage: TvPage); override; procedure ApplyBrushToCanvas(ADest: TFPCustomCanvas); overload; procedure ApplyBrushToCanvas(ADest: TFPCustomCanvas; ABrush: TvBrush); overload; procedure AssignBrush(ABrush: TvBrush); + procedure DrawBrush(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); + procedure DrawBrushGradient(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + x1, y1, x2, y2: Integer; + ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -474,9 +574,10 @@ procedure ApplyFontToCanvas(ADest: TFPCustomCanvas; ARenderInfo: TvRenderInfo; AMulX: Double = 1.0); overload; procedure ApplyFontToCanvas(ADest: TFPCustomCanvas; ARenderInfo: TvRenderInfo; AFont: TvFont; AMulX: Double = 1.0); overload; procedure AssignFont(AFont: TvFont); + procedure Rotate(AAngle: Double; ABase: T3DPoint); override; // Angle in radians procedure Scale(ADeltaScaleX, ADeltaScaleY: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -489,22 +590,24 @@ destructor Destroy; override; function GetCombinedStyle(AParent: TvEntityWithStyle): TvStyle; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; end; - TvClipMode = (vcmNonzeroWindingRule, vcmEvenOddRule); - TPath = class(TvEntityWithPenAndBrush) private // Used to speed up sequencial access in MoveSubpart FCurMoveSubPartIndex: Integer; FCurMoveSubPartSegment: TPathSegment; // + protected + FPolyPoints: TPointsArray; + FPolyStarts: TIntegerDynArray; public Len: Integer; Points: TPathSegment; // Beginning of the double-linked list PointsEnd: TPathSegment;// End of the double-linked list CurPoint: TPathSegment; // Used in PrepareForSequentialReading and Next + CurWalkDistanceInCurSegment: Double;// Used in PrepareForWalking and NextWalk ClipPath: TPath; ClipMode: TvClipMode; constructor Create(APage: TvPage); override; @@ -512,20 +615,23 @@ procedure Clear; override; procedure Assign(ASource: TPath); procedure PrepareForSequentialReading; + procedure PrepareForWalking; function Next(): TPathSegment; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + function NextWalk(ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure AppendSegment(ASegment: TPathSegment); procedure AppendMoveToSegment(AX, AY: Double); procedure AppendLineToSegment(AX, AY: Double); procedure AppendEllipticalArc(ARadX, ARadY, AXAxisRotation, ADestX, ADestY: Double; ALeftmostEllipse, AClockwiseArcFlag: Boolean); // See http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands procedure AppendEllipticalArcWithCenter(ARadX, ARadY, AXAxisRotation, ADestX, ADestY, ACenterX, ACenterY: Double; AClockwiseArcFlag: Boolean); // See http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands + function GetLineIntersectionPoints(ACoord: Double; ACoordIsX: Boolean): TDoubleDynArray; override; procedure Move(ADeltaX, ADeltaY: Double); override; procedure MoveSubpart(ADeltaX, ADeltaY: Double; ASubpart: Cardinal); override; function MoveToSubpart(ASubpart: Cardinal): TPathSegment; function GetSubpartCount: Integer; override; - procedure Rotate(AAngle: Double; ABase: T3DPoint); override; + procedure Rotate(AAngle: Double; ABase: T3DPoint); override; // Angle in radians procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; procedure RenderInternalPolygon(ADest: TFPCustomCanvas; ARenderInfo: TvRenderInfo; ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; @@ -549,10 +655,27 @@ Render_Use_NextText_X: Boolean; constructor Create(APage: TvPage); override; destructor Destroy; override; - function TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; override; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + function TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; + procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + function GetEntityFeatures(ADest: TFPCustomCanvas): TvEntityFeatures; override; + function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; + end; + + { TvCurvedText } + + // TvCurvedText supports only one line + TvCurvedText = class(TvText) + public + Path: TPath; + //constructor Create(APage: TvPage); override; + //destructor Destroy; override; + //function TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; override; + //procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + //function GetEntityFeatures: TvEntityFeatures; override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -577,10 +700,14 @@ { TvCircle } TvCircle = class(TvEntityWithPenAndBrush) + protected + function CreatePath: TPath; override; public Radius: Double; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + procedure Rotate(AAngle: Double; ABase: T3DPoint); override; // Angle in radians end; {@@ @@ -594,7 +721,7 @@ {@@ The Angle is measured in degrees in relation to the positive X axis } StartAngle, EndAngle: Double; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; end; {@@ @@ -603,30 +730,41 @@ { TvEllipse } TvEllipse = class(TvEntityWithPenAndBrush) + protected + function CreatePath: TPath; override; public // Mandatory fields HorzHalfAxis: Double; // This half-axis is the horizontal one when Angle=0 VertHalfAxis: Double; // This half-axis is the vertical one when Angle=0 - {@@ The Angle is measured in degrees in relation to the positive X axis } + {@@ The Angle is measured in radians in relation to the positive X axis } Angle: Double; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + function GetLineIntersectionPoints(ACoord: Double; ACoordIsX: Boolean): TDoubleDynArray; override; + function TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + procedure Rotate(AAngle: Double; ABase: T3DPoint); override; // Angle in radians end; { TvRectangle } TvRectangle = class(TvEntityWithPenBrushAndFont) + protected + function CreatePath: TPath; override; public // A text displayed in the center of the square, usually empty Text: string; // Mandatory fields - CX, CY, CZ: Double; + CX, CY, CZ: Double; // CX = width, CY = height, CZ = depth // Corner rounding, zero indicates no rounding RX, RY: Double; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + // The Angle is measured in radians relative to the positive X axis. + // Center of rotation is (X,Y). + Angle: Double; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + procedure Rotate(AAngle: Double; ABase: T3DPoint); override; // Angle in radians function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -638,9 +776,9 @@ Text: string; // All points of the polygon Points: array of T3DPoint; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; end; {@@ @@ -658,7 +796,7 @@ // Mandatory fields BaseLeft, BaseRight, DimensionLeft, DimensionRight: T3DPoint; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -674,7 +812,7 @@ IsDiameter: Boolean; // If false, it is a radius, if true, it is a diameter Center, DimensionLeft, DimensionRight: T3DPoint; // Diameter uses both, Radius uses only DImensionLeft procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -690,7 +828,7 @@ ArcValue, ArcRadius: Double; // ArcValue is in degrees TextPos, BaseLeft, BaseRight, DimensionLeft, DimensionRight: T3DPoint; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; procedure CalculateExtraArcInfo; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -715,11 +853,14 @@ public RasterImage: TFPCustomImage; Width, Height: Double; + AltText: string; destructor Destroy; override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure CreateRGB888Image(AWidth, AHeight: Cardinal); + procedure CreateImageFromFile(AFilename: string); procedure InitializeWithConvertionOf3DPointsToHeightMap(APage: TvVectorialPage; AWidth, AHeight: Integer); procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -755,9 +896,9 @@ ExtraLineBase: T3DPoint; ArrowLength: Double; ArrowBaseLength: Double; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; end; {@@ @@ -812,7 +953,7 @@ function AsText: string; procedure PositionSubparts(ADest: TFPCustomCanvas; ABaseX, ABaseY: Double); procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); virtual; procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); virtual; class function GetPrecedenceFromKind(AKind: TvFormulaElementKind): Byte; // 0 is the smallest precedence class function IsLeftAssociativeFromKind(AKind: TvFormulaElementKind): Boolean; @@ -846,9 +987,9 @@ function CalculateHeight(ADest: TFPCustomCanvas): Double; virtual; // in millimeters function CalculateWidth(ADest: TFPCustomCanvas): Double; virtual; // in millimeters procedure PositionSubparts(ADest: TFPCustomCanvas; ABaseX, ABaseY: Double); override; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -859,9 +1000,9 @@ function CalculateHeight(ADest: TFPCustomCanvas): Double; override; // in millimeters function CalculateWidth(ADest: TFPCustomCanvas): Double; override; // in millimeters procedure PositionSubparts(ADest: TFPCustomCanvas; ABaseX, ABaseY: Double); override; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; //function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -895,7 +1036,7 @@ procedure Rotate(AAngle: Double; ABase: T3DPoint); override; procedure Clear; override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; function FindEntityWithReference(AEntity: TvEntity): Integer; function FindEntityWithNameAndType(AName: string; AType: TvEntityClass {= TvEntity}; ARecursively: Boolean = False): TvEntity; @@ -911,7 +1052,7 @@ TvBlock = class(TvEntityWithSubEntities) public procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; end; {@@ @@ -921,12 +1062,15 @@ { TvInsert } - TvInsert = class(TvNamedEntity) + TvInsert = class(TvEntityWithStyle) // instead of TvNamedEntity so that it can pass its own style info to the InsertEntity public InsertEntity: TvEntity; // The entity to be inserted RotationAngle: Double; // in angles, normal is zero + SetElements: TvSetStyleElements; // Defines which of Pen, Brush and Font will be applied to InsertEntity + constructor Create(APage: TvPage); override; + destructor Destroy; override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -963,11 +1107,14 @@ constructor Create(APage: TvPage); override; destructor Destroy; override; function AddText(AText: string): TvText; + function AddCurvedText(AText: string): TvCurvedText; function AddField(AKind : TvFieldKind): TvField; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; - function TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; override; + function AddRasterImage: TvRasterImage; + function AddEmbeddedVectorialDoc: TvEmbeddedVectorialDoc; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; + function TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -990,14 +1137,19 @@ constructor Create(APage: TvPage); override; // MJT 31/08 added override; destructor Destroy; override; + // helper function to add the most often used sub-entities function AddParagraph(ASimpleText: string): TvParagraph; - function AddList : TvList; - function Level : Integer; - - {function TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; override; + function AddList: TvList; + // other helper functions + function GetLevel: Integer; + function GetBulletSize: Double; + procedure DrawBullet(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + ALevel: Integer; AX, AY: Double; ADestX: Integer = 0; ADestY: Integer = 0; + AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); + // overrides procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; - function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override;} + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + //function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override;} end; {@@ @@ -1009,7 +1161,8 @@ // Forward reference as Table Cells are TvRichText which in turn // can also contain tables... - TvTable = Class; + TvTable = class; + TvTableRow = class; (* TvImage = Class; *) @@ -1018,6 +1171,7 @@ TvRichText = class(TvEntityWithSubEntities) public Width, Height: Double; + SpacingLeft, SpacingRight, SpacingTop, SpacingBottom: Double; // space around each side AutoExpand: TvRichTextAutoExpand; constructor Create(APage: TvPage); override; destructor Destroy; override; @@ -1026,11 +1180,14 @@ function AddList: TvList; function AddTable: TvTable; function AddEmbeddedVectorialDoc: TvEmbeddedVectorialDoc; - //function AddImage: TvImage; - // - function TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; override; + function AddRasterImage: TvRasterImage; + // Functions for rendering and calculating sizes + procedure GetEffectiveCellSpacing(out ATopSpacing, ALeftSpacing, ARightSpacing, ABottomSpacing: Double); virtual; + function CalculateCellHeight_ForWidth(ADest: TFPCustomCanvas; AWidth: Double): Double; virtual; + function CalculateMaxNeededWidth(ADest: TFPCustomCanvas): Double; virtual; + function TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -1071,40 +1228,66 @@ // Horizontal alignment taken from Paragraph Style TvTableCell = Class(TvRichText) - Public + public // MJT to Felipe: It may be that Borders can be // added to TvRichText if odt supports paragraph // borders, in which case we can refactor a little and // rename TvTableBorders - Borders : TvTableBorders; // Defaults to be ignored (tbtDefault) - PreferredWidth : TvDimension; // Optional - VerticalAlignment : TvVerticalAlignment; // Defaults to vaTop - BackgroundColor : TFPColor; // Optional - SpannedCols : Integer; // For merging horiz cells. Default 1. - // See diagram above TvTable Class + Row: TvTableRow; + Borders: TvTableBorders; // Defaults to be ignored (tbtDefault) + PreferredWidth: TvDimension; // Optional + VerticalAlignment: TvVerticalAlignment; // Defaults to vaTop + BackgroundColor: TFPColor; // Optional + BackgroundColorValid: Boolean; + SpannedCols: Integer; // For merging horiz cells. Default 1. + // See diagram above TvTable Class + SpacingDataValid: Boolean; // TvRichText defines spacing, SpacingTop, SpacingLeft, etc + // if SpacingDataValid is false use Row.Table.CallSpacing + // instead. Units for SpacingTop, etc, in mm. Spacing is the + // empty area around Cells (but inside them) without content. constructor Create(APage: TvPage); override; + function GetEffectiveBorder(): TvTableBorders; + procedure GetEffectiveCellSpacing(out ATopSpacing, ALeftSpacing, ARightSpacing, ABottomSpacing: Double); override; + class procedure DrawBorder(ABorder: TvTableBorders; + AX, AY, AWidth, AHeight: double; + ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); + procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; + class function GenerateDebugStrForBorders(ABorders: TvTableBorders): string; end; { TvTableRow } TvTableRow = Class(TvNamedEntity) private - Cells : TFPList; + Cells: TFPList; // of TvTableCell Public - Height : Double; // Units mm. Use 0 for default height - CellSpacing : Double; // Units mm. Gap between Cells. - - Header : Boolean; // Repeat row across pages - AllowSplitAcrossPage : Boolean; // Can this Row split across multiple pages? - BackgroundColor : TFPColor; // Optional + Table: TvTable; // Link to the parent table + Height: Double; // Units mm. Use 0 for default height + Header: Boolean; // Repeat row across pages + AllowSplitAcrossPage : Boolean;// Can this Row split across multiple pages? + BackgroundColor: TFPColor; // Optional + BackgroundColorValid: Boolean; + // row spacing data in mm, necessary for docx among other formats + CellSpacing: Double; + SpacingDataValid: Boolean; constructor create(APage : TvPage); override; destructor destroy; override; - function AddCell : TvTableCell; + function AddCell: TvTableCell; function GetCellCount: Integer; - function GetCell(AIndex: Integer) : TvTableCell; + function GetCell(AIndex: Integer): TvTableCell; + function GetCellColNr(ACell: TvTableCell): Integer; + function CalculateMaxCellSpacing_Y(): Double; + // + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; + procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; (* @@ -1116,13 +1299,15 @@ Second row should only have 2 cells. Second cell spans 2 columns. Third row should have 3 cells. Each cell only spans 1 column (default) - +-----+------+---------+ + X,Y +-----+------+---------+ | | | +-----+----------------+ | | | +-----+------+---------+ | | | | +-----+------+---------+ + + The table draws at X,Y and downwards *) // TvTable.Style should be a Table Style, not a Paragraph Style @@ -1130,23 +1315,34 @@ TvTable = class(TvEntityWithStyle) private Rows: TFPList; + ColWidthsInMM: array of Double; // calculated during Render + TableWidth, TableHeight: Double; // in mm; calculated during Render + procedure CalculateColWidths(ADest: TFPCustomCanvas); + procedure CalculateRowHeights(ADest: TFPCustomCanvas); public ColWidths: array of Double; // Can be left empty for simple tables // MUST be fully defined for merging cells ColWidthsUnits : TvUnits; // Cannot mix ColWidth Units. Borders : TvTableBorders; // Defaults: single/black/inside and out PreferredWidth : TvDimension; // Optional. Units mm. - CellSpacing : Double; // Units mm. Gap between Cells. + SpacingBetweenCells: Double; // Units mm. Gap between Cells. + CellSpacingLeft, CellSpacingRight, CellSpacingTop, + CellSpacingBottom: Double; // space around each side of cells, in mm BackgroundColor : TFPColor; // Optional. constructor create(APage : TvPage); override; destructor destroy; override; - function AddRow : TvTableRow; + function AddRow: TvTableRow; function GetRowCount : Integer; function GetRow(AIndex: Integer) : TvTableRow; - + // function AddColWidth(AValue : Double) : Integer; + function GetColCount(): Integer; + // + procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; + function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; { TvEmbeddedVectorialDoc } @@ -1154,11 +1350,12 @@ TvEmbeddedVectorialDoc = class(TvEntity) public Document: TvVectorialDocument; + Width, Height: Double; constructor create(APage : TvPage); override; destructor destroy; override; - procedure CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); override; + procedure CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); override; procedure Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; - ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); override; function GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; override; end; @@ -1185,8 +1382,8 @@ // List of common styles, for conveniently finding them StyleTextBody, StyleHeading1, StyleHeading2, StyleHeading3, StyleHeading4, StyleHeading5, StyleHeading6: TvStyle; - StyleTextBodyCentralized, StyleHeading1Centralized, - StyleHeading2Centralized, StyleHeading3Centralized: TvStyle; + StyleTextBodyCentralized, StyleTextBodyBold: TvStyle; // text body modifications + StyleHeading1Centralized, StyleHeading2Centralized, StyleHeading3Centralized: TvStyle; // heading modifications StyleBulletList, StyleNumberList : TvListStyle; StyleTextSpanBold, StyleTextSpanItalic, StyleTextSpanUnderline: TvStyle; { Base methods } @@ -1203,7 +1400,7 @@ procedure ReadFromStream(AStream: TStream; AFormat: TvVectorialFormat); procedure ReadFromStrings(AStrings: TStrings; AFormat: TvVectorialFormat); procedure ReadFromXML(ADoc: TXMLDocument; AFormat: TvVectorialFormat); - class function GetFormatFromExtension(AFileName: string): TvVectorialFormat; + class function GetFormatFromExtension(AFileName: string; ARaiseException: Boolean = True): TvVectorialFormat; function GetDetailedFileFormat(): string; procedure GuessDocumentSize(); procedure GuessGoodZoomLevel(AScreenSize: Integer = 500); @@ -1232,7 +1429,7 @@ { Data removing methods } procedure Clear; virtual; { Debug methods } - procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc); + procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer = nil); { Events } property OnProgress: TvProgressEvent read FOnProgress write FOnprogress; end; @@ -1249,6 +1446,7 @@ MinX, MinY, MinZ, MaxX, MaxY, MaxZ: Double; // Other basic document information BackgroundColor: TFPColor; + AdjustPenColorToBackground: Boolean; RenderInfo: TvRenderInfo; // Prepared by the reader with info on how to draw the page { Base methods } constructor Create(AOwner: TvVectorialDocument); virtual; @@ -1274,7 +1472,9 @@ procedure RenderPageBorder(ADest: TFPCustomCanvas; ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual; abstract; procedure Render(ADest: TFPCustomCanvas; - ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); virtual; abstract; + ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; + ADoDraw: Boolean = true); virtual; abstract; + procedure AutoFit(ADest: TFPCustomCanvas; AWidth, AHeight: Integer; out ADeltaX, ADeltaY: Integer; out AZoom: Double); virtual; abstract; { Debug methods } procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); virtual; abstract; end; @@ -1322,6 +1522,7 @@ procedure AddBezierToPath(AX1, AY1, AX2, AY2, AX3, AY3: Double); overload; procedure AddBezierToPath(AX1, AY1, AZ1, AX2, AY2, AZ2, AX3, AY3, AZ3: Double); overload; procedure AddEllipticalArcToPath(ARadX, ARadY, AXAxisRotation, ADestX, ADestY: Double; ALeftmostEllipse, AClockwiseArcFlag: Boolean); // See http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands + procedure AddEllipticalArcWithCenterToPath(ARadX, ARadY, AXAxisRotation, ADestX, ADestY, ACenterX, ACenterY: Double; AClockwiseArcFlag: Boolean); procedure SetBrushColor(AColor: TFPColor); procedure SetBrushStyle(AStyle: TFPBrushStyle); procedure SetPenColor(AColor: TFPColor); @@ -1354,8 +1555,9 @@ procedure DrawBackground(ADest: TFPCustomCanvas); override; procedure RenderPageBorder(ADest: TFPCustomCanvas; ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; - procedure Render(ADest: TFPCustomCanvas; - ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0; ADestY: Integer = 0; + AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = true); override; + procedure AutoFit(ADest: TFPCustomCanvas; AWidth, AHeight: Integer; out ADeltaX, ADeltaY: Integer; out AZoom: Double); override; { Debug methods } procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); override; // @@ -1397,8 +1599,9 @@ procedure DrawBackground(ADest: TFPCustomCanvas); override; procedure RenderPageBorder(ADest: TFPCustomCanvas; ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; - procedure Render(ADest: TFPCustomCanvas; - ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); override; + procedure Render(ADest: TFPCustomCanvas; ADestX: Integer = 0; ADestY: Integer = 0; + AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = true); override; + procedure AutoFit(ADest: TFPCustomCanvas; AWidth, AHeight: Integer; out ADeltaX, ADeltaY: Integer; out AZoom: Double); override; { Debug methods } procedure GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); override; end; @@ -1411,7 +1614,9 @@ TvCustomVectorialReader = class protected + FFilename: string; class function GetTextContentsFromNode(ANode: TDOMNode): DOMString; + class function RemoveLineEndingsAndTrim(AStr: string): string; public { General reading methods } constructor Create; virtual; @@ -1460,8 +1665,10 @@ procedure RegisterVectorialWriter( AWriterClass: TvVectorialWriterClass; AFormat: TvVectorialFormat); + function Make2DPoint(AX, AY: Double): T3DPoint; function Dimension(AValue : Double; AUnits : TvUnits) : TvDimension; +function ConvertDimensionToMM(ADimension: TvDimension; ATotalSize: Double): Double; implementation @@ -1469,6 +1676,8 @@ const Str_Error_Nil_Path = ' The program attempted to add a segment before creating a path'; + INVALID_RENDERINFO_CANVAS_XY = Low(Integer); + Str_Line_Height_Tester = 'Áç'; {@@ Registers a new reader for a format @@ -1567,185 +1776,13 @@ Result.Units := AUnits; end; -{ TvField } - -constructor TvField.Create(APage: TvPage); -begin - inherited Create(APage); - - DateFormat := 'dd/MM/yyyy hh:mm:ss'; - NumberFormat := vnfDecimal; -end; - -{ TvListLevelStyle } - -constructor TvListLevelStyle.Create; -begin - Start := 1; - Bullet := '·'; - LeaderFontName := 'Symbol'; - Alignment := vsaLeft; -end; - -{ TvListStyle } - -constructor TvListStyle.Create; -begin - ListLevelStyles:=TFPList.Create; -end; - -destructor TvListStyle.Destroy; -begin - Clear; - ListLevelStyles.Free; - ListLevelStyles := Nil; - - inherited Destroy; -end; - -procedure TvListStyle.Clear; -var - i: Integer; -begin - for i := ListLevelStyles.Count-1 downto 0 do - begin - TvListLevelStyle(ListLevelStyles[i]).free; - ListLevelStyles.Delete(i); - end; -end; - -function TvListStyle.AddListLevelStyle: TvListLevelStyle; -begin - Result := TvListLevelStyle.Create; - ListLevelStyles.Add(Result); -end; - -function TvListStyle.GetListLevelStyleCount: Integer; -begin - Result := ListLevelStyles.Count; -end; - -function TvListStyle.GetListLevelStyle(AIndex : Integer): TvListLevelStyle; -begin - Result := TvListLevelStyle(ListLevelStyles[Aindex]); -end; - -{ TvTableCell } - -constructor TvTableCell.Create(APage: TvPage); -begin - inherited Create(APage); - - Borders.Left.LineType:=tbtDefault; - Borders.Right.LineType:=tbtDefault; - Borders.Top.LineType:=tbtDefault; - Borders.Bottom.LineType:=tbtDefault; - Borders.InsideHoriz.LineType:=tbtDefault; - Borders.InsideVert.LineType:=tbtDefault; - - SpannedCols := 1; -end; - -{ TvTable } - -constructor TvTable.Create(APage: TvPage); -begin - inherited Create(APage); - - Rows := TFPList.Create; -end; - -destructor TvTable.destroy; -var - i: Integer; -begin - for i := Rows.Count-1 downto 0 do - begin - TvTableRow(Rows.Last).Free; - Rows.Delete(Rows.Count-1); - end; - - Rows.Free; - Rows := nil; - - inherited destroy; -end; - -function TvTable.AddRow: TvTableRow; -begin - Result := TvTableRow.create(FPage); - Rows.Add(result); -end; - -function TvTable.GetRowCount: Integer; -begin - Result := Rows.Count; -end; - -function TvTable.GetRow(AIndex: Integer): TvTableRow; -begin - Result := TvTableRow(Rows[AIndex]); -end; - -function TvTable.AddColWidth(AValue: Double): Integer; -begin - SetLength(ColWidths, Length(ColWidths) + 1); - ColWidths[High(ColWidths)] := AValue; -end; - -{ TvEmbeddedVectorialDoc } - -constructor TvEmbeddedVectorialDoc.create(APage: TvPage); -begin - inherited create(APage); - Document := TvVectorialDocument.Create(); -end; - -destructor TvEmbeddedVectorialDoc.destroy; -begin - Document.Free; - inherited destroy; -end; - -procedure TvEmbeddedVectorialDoc.CalculateBoundingBox(ADest: TFPCustomCanvas; - var ALeft, ATop, ARight, ABottom: Double); +function ConvertDimensionToMM(ADimension: TvDimension; ATotalSize: Double): Double; begin - ALeft := X; - ATop := Y; - ARight := X + Document.Width; - ABottom := Y + Document.Height; -end; - -procedure TvEmbeddedVectorialDoc.Render(ADest: TFPCustomCanvas; - var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; - AMulX: Double; AMulY: Double); - - function CoordToCanvasX(ACoord: Double): Integer; - begin - Result := Round(ADestX + AmulX * ACoord); - end; - - function CoordToCanvasY(ACoord: Double): Integer; - begin - Result := Round(ADestY + AmulY * ACoord); + case ADimension.Units of + dimMillimeter: Result := ADimension.Value; + dimPercent: Result := ATotalSize * ADimension.Value; + dimPoint: Result := ADimension.Value; // ToDo end; - -var - lPage: TvPage; -begin - lPage := Document.GetPage(0); - lPage.Render(ADest, CoordToCanvasX(X), CoordToCanvasY(Y), AMulX, AMulY); - - CalcEntityCanvasMinMaxXY(ARenderInfo, CoordToCanvasX(X), CoordToCanvasY(Y)); - CalcEntityCanvasMinMaxXY(ARenderInfo, - CoordToCanvasX(X) + CoordToCanvasX(Document.Width), - CoordToCanvasY(Y) + CoordToCanvasY(Document.Height)); -end; - -function TvEmbeddedVectorialDoc.GenerateDebugTree( - ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; -begin - Result:=inherited GenerateDebugTree(ADestRoutine, APageItem); end; { TvStyle } @@ -1788,32 +1825,57 @@ ApplyOver(AFrom); end; -procedure TvStyle.ApplyOver(AFrom: TvStyle); +procedure TvStyle.CopyFromEntity(AEntity: TvEntity); begin - if AFrom = nil then Exit; - // Pen +end; - if spbfPenColor in AFrom.SetElements then - Pen.Color := AFrom.Pen.Color; - if spbfPenStyle in AFrom.SetElements then - Pen.Style := AFrom.Pen.Style; - if spbfPenWidth in AFrom.SetElements then - Pen.Width := AFrom.Pen.Width; +procedure TvStyle.ApplyOverFromPen(APen: PvPen; ASetElements: TvSetStyleElements); +begin + if spbfPenColor in ASetElements then + Pen.Color := APen^.Color; + if spbfPenStyle in ASetElements then + Pen.Style := APen^.Style; + if spbfPenWidth in ASetElements then + Pen.Width := APen^.Width; - // Brush + SetElements += ASetElements * [spbfPenColor, spbfPenStyle, spbfPenWidth]; +end; - if spbfBrushColor in AFrom.SetElements then - Brush.Color := AFrom.Brush.Color; - if spbfBrushStyle in AFrom.SetElements then - Brush.Style := AFrom.Brush.Style; - {if spbfBrushGradient in AFrom.SetElements then +procedure TvStyle.ApplyOverFromBrush(ABrush: PvBrush; ASetElements: TvSetStyleElements); +begin + if spbfBrushColor in ASetElements then + Brush.Color := ABrush^.Color; + if spbfBrushStyle in ASetElements then + Brush.Style := ABrush^.Style; + {if spbfBrushGradient in ASetElements then Brush.Gra := AFrom.Brush.Style;} - if spbfBrushKind in AFrom.SetElements then - Brush.Kind := AFrom.Brush.Kind; + if spbfBrushKind in ASetElements then + Brush.Kind := ABrush^.Kind; + + SetElements += ASetElements * [spbfBrushColor, spbfBrushStyle, spbfBrushGradient, spbfBrushKind]; +end; + +procedure TvStyle.ApplyOverFromFont(AFont: PvFont; ASetElements: TvSetStyleElements); +begin + +end; + +procedure TvStyle.ApplyOver(AFrom: TvStyle); +begin + if AFrom = nil then Exit; + + // Pen + + ApplyOverFromPen(@AFrom.Pen, AFrom.SetElements); + + // Brush + + ApplyOverFromBrush(@AFrom.Brush, AFrom.SetElements); // Font + //ApplyOverFromFont(@AFrom.Font, AFrom.SetElements); if spbfFontColor in AFrom.SetElements then Font.Color := AFrom.Font.Color; if spbfFontSize in AFrom.SetElements then @@ -1852,52 +1914,74 @@ SetElements := AFrom.SetElements + SetElements; end; -procedure TvStyle.ApplyIntoEntity(ADest: TvEntityWithPenBrushAndFont); +procedure TvStyle.ApplyIntoEntity(ADest: TvEntity); +var + lCurEntity: TvEntity; + ADestWithPen: TvEntityWithPen absolute ADest; + ADestWithBrush: TvEntityWithPenAndBrush absolute ADest; + ADestWithFont: TvEntityWithPenBrushAndFont absolute ADest; begin if ADest = nil then Exit; - // Pen + if ADest is TvEntityWithSubEntities then + begin + lCurEntity := (ADest as TvEntityWithSubEntities).GetFirstEntity(); + while lCurEntity <> nil do + begin + ApplyIntoEntity(lCurEntity); + lCurEntity := (ADest as TvEntityWithSubEntities).GetNextEntity(); + end; + Exit; + end; - if spbfPenColor in SetElements then - ADest.Pen.Color := Pen.Color; - if spbfPenStyle in SetElements then - ADest.Pen.Style := Pen.Style; - if spbfPenWidth in SetElements then - ADest.Pen.Width := Pen.Width; + // Pen + if ADest is TvEntityWithPen then + begin + if spbfPenColor in SetElements then + ADestWithPen.Pen.Color := Pen.Color; + if spbfPenStyle in SetElements then + ADestWithPen.Pen.Style := Pen.Style; + if spbfPenWidth in SetElements then + ADestWithPen.Pen.Width := Pen.Width; + end; // Brush - - if spbfBrushColor in SetElements then - ADest.Brush.Color := Brush.Color; - if spbfBrushStyle in SetElements then - ADest.Brush.Style := Brush.Style; - {if spbfBrushGradient in SetElements then - Brush.Gra := AFrom.Brush.Style;} - if spbfBrushKind in SetElements then - ADest.Brush.Kind := Brush.Kind; + if ADest is TvEntityWithPenAndBrush then + begin + if spbfBrushColor in SetElements then + ADestWithBrush.Brush.Color := Brush.Color; + if spbfBrushStyle in SetElements then + ADestWithBrush.Brush.Style := Brush.Style; + {if spbfBrushGradient in SetElements then + ADestWithBrush.Gra := AFrom.Brush.Style;} + if spbfBrushKind in SetElements then + ADestWithBrush.Brush.Kind := Brush.Kind; + end; // Font + if ADest is TvEntityWithPenBrushAndFont then + begin + if spbfFontColor in SetElements then + ADestWithFont.Font.Color := Font.Color; + if spbfFontSize in SetElements then + ADestWithFont.Font.Size := Font.Size; + if spbfFontName in SetElements then + ADestWithFont.Font.Name := Font.Name; + if spbfFontBold in SetElements then + ADestWithFont.Font.Bold := Font.Bold; + if spbfFontItalic in SetElements then + ADestWithFont.Font.Italic := Font.Italic; + If spbfFontUnderline in SetElements then + ADestWithFont.Font.Underline := Font.Underline; + If spbfFontStrikeThrough in SetElements then + ADestWithFont.Font.StrikeThrough := Font.StrikeThrough; + {If spbfAlignment in SetElements then + ADestWithFont.Alignment := Alignment; } - if spbfFontColor in SetElements then - ADest.Font.Color := Font.Color; - if spbfFontSize in SetElements then - ADest.Font.Size := Font.Size; - if spbfFontName in SetElements then - ADest.Font.Name := Font.Name; - if spbfFontBold in SetElements then - ADest.Font.Bold := Font.Bold; - if spbfFontItalic in SetElements then - ADest.Font.Italic := Font.Italic; - If spbfFontUnderline in SetElements then - ADest.Font.Underline := Font.Underline; - If spbfFontStrikeThrough in SetElements then - ADest.Font.StrikeThrough := Font.StrikeThrough; - {If spbfAlignment in SetElements then - ADest.Alignment := Alignment; } - - // TextAnchor - if spbfTextAnchor in SetElements then - ADest.TextAnchor := TextAnchor; + // TextAnchor + if spbfTextAnchor in SetElements then + ADestWithFont.TextAnchor := TextAnchor; + end; end; function TvStyle.CreateStyleCombinedWithParent: TvStyle; @@ -1945,6 +2029,545 @@ Result := ADestRoutine(lStr, APageItem); end; +{ TvListLevelStyle } + +constructor TvListLevelStyle.Create; +begin + Start := 1; + Bullet := '·'; + LeaderFontName := 'Symbol'; + Alignment := vsaLeft; +end; + +{ TvListStyle } + +constructor TvListStyle.Create; +begin + ListLevelStyles:=TFPList.Create; +end; + +destructor TvListStyle.Destroy; +begin + Clear; + ListLevelStyles.Free; + ListLevelStyles := Nil; + + inherited Destroy; +end; + +procedure TvListStyle.Clear; +var + i: Integer; +begin + for i := ListLevelStyles.Count-1 downto 0 do + begin + TvListLevelStyle(ListLevelStyles[i]).free; + ListLevelStyles.Delete(i); + end; +end; + +function TvListStyle.AddListLevelStyle: TvListLevelStyle; +begin + Result := TvListLevelStyle.Create; + ListLevelStyles.Add(Result); +end; + +function TvListStyle.GetListLevelStyleCount: Integer; +begin + Result := ListLevelStyles.Count; +end; + +function TvListStyle.GetListLevelStyle(AIndex : Integer): TvListLevelStyle; +begin + Result := TvListLevelStyle(ListLevelStyles[Aindex]); +end; + +{ TvTableCell } + +constructor TvTableCell.Create(APage: TvPage); +begin + inherited Create(APage); + + Borders.Left.LineType:=tbtDefault; + Borders.Right.LineType:=tbtDefault; + Borders.Top.LineType:=tbtDefault; + Borders.Bottom.LineType:=tbtDefault; + Borders.InsideHoriz.LineType:=tbtDefault; + Borders.InsideVert.LineType:=tbtDefault; + + SpacingLeft := 2; + SpacingRight := 2; + SpacingTop := 2; + SpacingBottom := 2; + + SpannedCols := 1; +end; + +function TvTableCell.GetEffectiveBorder(): TvTableBorders; +begin + Result := Borders; + if (Row <> nil) and (Row.Table <> nil) then + begin + if Borders.Left.LineType = tbtDefault then + Result.Left := Row.Table.Borders.Left; + if Borders.Right.LineType = tbtDefault then + Result.Right := Row.Table.Borders.Right; + if Borders.Top.LineType = tbtDefault then + Result.Top := Row.Table.Borders.Top; + if Borders.Bottom.LineType = tbtDefault then + Result.Bottom := Row.Table.Borders.Bottom; + end; +end; + +procedure TvTableCell.GetEffectiveCellSpacing(out ATopSpacing, ALeftSpacing, ARightSpacing, ABottomSpacing: Double); +begin + ATopSpacing := 0; + ALeftSpacing := 0; + ARightSpacing := 0; + ABottomSpacing := 0; + if SpacingDataValid then + begin + ATopSpacing := SpacingTop; + ALeftSpacing := SpacingLeft; + ARightSpacing := SpacingRight; + ABottomSpacing := SpacingBottom; + end + else if (Row <> nil) and (Row.SpacingDataValid) then + begin + ATopSpacing := Row.CellSpacing; + ALeftSpacing := Row.CellSpacing; + ARightSpacing := Row.CellSpacing; + ABottomSpacing := Row.CellSpacing; + end + else if (Row <> nil) and (Row.Table <> nil) then + begin + ATopSpacing := Row.Table.CellSpacingLeft; + ALeftSpacing := Row.Table.CellSpacingTop; + ARightSpacing := Row.Table.CellSpacingRight; + ABottomSpacing := Row.Table.CellSpacingBottom; + end; +end; + +class procedure TvTableCell.DrawBorder(ABorder: TvTableBorders; + AX, AY, AWidth, AHeight: double; + ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); + + function CoordToCanvasX(ACoord: Double): Integer; + begin + Result := Round(ADestX + AmulX * ACoord); + end; + + function CoordToCanvasY(ACoord: Double): Integer; + begin + Result := Round(ADestY + AmulY * ACoord); + end; + +begin + CalcEntityCanvasMinMaxXY(ARenderInfo, CoordToCanvasX(AX), CoordToCanvasY(AY)); + CalcEntityCanvasMinMaxXY(ARenderInfo, CoordToCanvasX(AX), CoordToCanvasY(AY+AHeight)); + ADest.Pen.Style := psSolid; + ADest.Pen.FPColor := colBlack; + if ABorder.Left.LineType <> tbtNone then + begin + ADest.Pen.Width := Round(ABorder.Left.Width * AMulX); + ADest.Line( + CoordToCanvasX(AX), + CoordToCanvasY(AY), + CoordToCanvasX(AX), + CoordToCanvasY(AY+AHeight)); + end; + if ABorder.Right.LineType <> tbtNone then + begin + ADest.Pen.Width := Round(ABorder.Right.Width * AMulX); + ADest.Line( + CoordToCanvasX(AX+AWidth), + CoordToCanvasY(AY), + CoordToCanvasX(AX+AWidth), + CoordToCanvasY(AY+AHeight)); + end; + if ABorder.Top.LineType <> tbtNone then + begin + ADest.Pen.Width := Round(ABorder.Top.Width * AMulX); + ADest.Line( + CoordToCanvasX(AX), + CoordToCanvasY(AY), + CoordToCanvasX(AX+AWidth), + CoordToCanvasY(AY)); + end; + if ABorder.Bottom.LineType <> tbtNone then + begin + ADest.Pen.Width := Round(ABorder.Bottom.Width * AMulX); + ADest.Line( + CoordToCanvasX(AX), + CoordToCanvasY(AY+AHeight), + CoordToCanvasX(AX+AWidth), + CoordToCanvasY(AY+AHeight)); + end; +end; + +procedure TvTableCell.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); +var + lBorders: TvTableBorders; + CellWidth, CellHeight, lCellSpacingX, lCellSpacingY, lTmp: Double; + lColNr: Integer; + i: Integer; +begin + // draw borders + if (Row <> nil) and (Row.Table <> nil) and ADoDraw then + begin + lBorders := GetEffectiveBorder(); + lColNr := Row.GetCellColNr(Self); + + CellWidth := 0; + for i := lColNr to lColNr+SpannedCols-1 do + begin + CellWidth := CellWidth + Row.Table.ColWidthsInMM[i]; + end; + CellHeight := Row.Height; + + TvTableCell.DrawBorder(lBorders, X, Y, CellWidth, CellHeight, + ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + end; + + GetEffectiveCellSpacing(lCellSpacingX, lCellSpacingY, lTmp, lTmp); + X := X + lCellSpacingX; + Y := Y + lCellSpacingY; + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + X := X - lCellSpacingX; + Y := Y - lCellSpacingY; +end; + +function TvTableCell.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; +begin + FExtraDebugStr := Format(' Borders=%s PreferredWidth=%f VerticalAlignment=%s' + + ' BackgroundColor=%s SpannedCols=%d', + [GenerateDebugStrForBorders(Borders), + PreferredWidth.Value, + GetEnumName(TypeInfo(TvVerticalAlignment), integer(VerticalAlignment)), + GenerateDebugStrForFPColor(BackgroundColor), SpannedCols]); + + Result:=inherited GenerateDebugTree(ADestRoutine, APageItem); +end; + +class function TvTableCell.GenerateDebugStrForBorders(ABorders: TvTableBorders): string; +begin + Result := Format('L=%s:%f T=%s:%f R=%s:%f B=%s:%f', + [GetEnumName(TypeInfo(TvTableBorderType), integer(ABorders.Left.LineType)), + ABorders.Left.Width, + GetEnumName(TypeInfo(TvTableBorderType), integer(ABorders.Top.LineType)), + ABorders.Top.Width, + GetEnumName(TypeInfo(TvTableBorderType), integer(ABorders.Right.LineType)), + ABorders.Right.Width, + GetEnumName(TypeInfo(TvTableBorderType), integer(ABorders.Bottom.LineType)), + ABorders.Bottom.Width]); +end; + +{ TvTable } + +// Returns the table width +procedure TvTable.CalculateColWidths(ADest: TFPCustomCanvas); +var + CurRow: TvTableRow; + CurCell: TvTableCell; + lWidth: Double; + col, row, i: Integer; + //DebugStr: string; + OriginalColWidthsInMM: array of Double; + CurRowTableWidth: Double; +begin + SetLength(ColWidthsInMM, GetRowCount()); + + // Process predefined widths + for col := 0 to Length(ColWidthsInMM)-1 do + begin + ColWidthsInMM[col] := 0; + if Length(ColWidths) > col then + ColWidthsInMM[col] := ConvertDimensionToMM(Dimension(ColWidths[col], ColWidthsUnits), FPage.Width); + end; + + // Process initial value for non-predefined widths + OriginalColWidthsInMM := Copy(ColWidthsInMM, 0, Length(ColWidthsInMM)); + TableWidth := 0; + for row := 0 to GetRowCount()-1 do + begin + CurRow := GetRow(row); + CurRowTableWidth := 0; + + for col := 0 to CurRow.GetCellCount()-1 do + begin + CurCell := CurRow.GetCell(col); + //DebugStr := ((CurCell.GetFirstEntity() as TvParagraph).GetFirstEntity() as TvText).Value.Text; + + // skip cells with span since they are complex + // skip columns with width pre-set + if (OriginalColWidthsInMM[col] > 0) then + begin + CurRowTableWidth := CurRowTableWidth + ColWidthsInMM[col]; + Continue; + end; + if (CurCell.SpannedCols > 1) then + begin + CurRowTableWidth := CurRowTableWidth + ColWidthsInMM[col]; + for i := 0 to CurCell.SpannedCols-1 do + CurRowTableWidth := CurRowTableWidth + ColWidthsInMM[col+i]; + Continue; + end; + + lWidth := CurCell.CalculateMaxNeededWidth(ADest); + ColWidthsInMM[col] := Max(ColWidthsInMM[col], lWidth); + CurRowTableWidth := CurRowTableWidth + ColWidthsInMM[col]; + end; + + TableWidth := Max(TableWidth, CurRowTableWidth); + end; + + // If it goes over the page width, recalculate with equal sizes (in the future do better) + if TableWidth <= FPage.Width then Exit; + TableWidth := FPage.Width; + for col := 0 to Length(ColWidthsInMM)-1 do + begin + ColWidthsInMM[col] := FPage.Width / GetRowCount(); + end; +end; + +procedure TvTable.CalculateRowHeights(ADest: TFPCustomCanvas); +var + col, row: Integer; + CurRow: TvTableRow; + CurCell: TvTableCell; + lCellHeight: Double; +begin + TableHeight := 0; + + for row := 0 to GetRowCount()-1 do + begin + CurRow := GetRow(row); + CurRow.Height := 0; + + for col := 0 to CurRow.GetCellCount()-1 do + begin + CurCell := CurRow.GetCell(col); + lCellHeight := CurCell.CalculateCellHeight_ForWidth(ADest, ColWidthsInMM[col]); + CurRow.Height := Max(CurRow.Height, lCellHeight); + end; + + CurRow.Height := CurRow.Height + CurRow.CalculateMaxCellSpacing_Y(); + TableHeight := TableHeight + SpacingBetweenCells; + CurRow.Y := TableHeight; + TableHeight := TableHeight + CurRow.Height; + end; + + TableHeight := TableHeight + SpacingBetweenCells; +end; + +constructor TvTable.create(APage: TvPage); +begin + inherited Create(APage); + + Rows := TFPList.Create; + + Borders.Left.Width := 1; + Borders.Right.Width := 1; + Borders.Top.Width := 1; + Borders.Bottom.Width := 1; + Borders.InsideHoriz.Width := 1; + Borders.InsideVert.Width := 1; +end; + +destructor TvTable.destroy; +var + i: Integer; +begin + for i := Rows.Count-1 downto 0 do + begin + TvTableRow(Rows.Last).Free; + Rows.Delete(Rows.Count-1); + end; + + Rows.Free; + Rows := nil; + + inherited destroy; +end; + +function TvTable.AddRow: TvTableRow; +begin + Result := TvTableRow.create(FPage); + Result.Table := Self; + Rows.Add(result); +end; + +function TvTable.GetRowCount: Integer; +begin + Result := Rows.Count; +end; + +function TvTable.GetRow(AIndex: Integer): TvTableRow; +begin + Result := TvTableRow(Rows[AIndex]); +end; + +function TvTable.AddColWidth(AValue: Double): Integer; +begin + SetLength(ColWidths, Length(ColWidths) + 1); + ColWidths[High(ColWidths)] := AValue; +end; + +function TvTable.GetColCount(): Integer; +var + row, col, CurRowColCount: Integer; + CurRow: TvTableRow; + CurCell: TvTableCell; +begin + Result := 0; + for row := 0 to GetRowCount()-1 do + begin + CurRow := GetRow(row); + CurRowColCount := 0; + for col := 0 to CurRow.GetCellCount()-1 do + begin + CurCell := CurRow.GetCell(col); + CurRowColCount := CurRowColCount + CurCell.SpannedCols; + end; + + Result := Max(Result, CurRowColCount); + end; +end; + +procedure TvTable.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); + + function CoordToCanvasX(ACoord: Double): Integer; + begin + Result := Round(ADestX + AmulX * ACoord); + end; + + function CoordToCanvasY(ACoord: Double): Integer; + begin + Result := Round(ADestY + AmulY * ACoord); + end; + + function DeltaToCanvasY(ACoord: Double): Integer; + begin + Result := Round(AmulY * ACoord); + end; + +var + row: Integer; + CurRow: TvTableRow; + lEntityRenderInfo: TvRenderInfo; +begin + InitializeRenderInfo(ARenderInfo); + + // First calculate the column widths and heights + CalculateColWidths(ADest); + + // Now calculate the row heights + CalculateRowHeights(ADest); + + // Draw the table border + if ADoDraw then + begin + TvTableCell.DrawBorder(Borders, X, Y, TableWidth, TableHeight, + ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + end; + + // Now draw the table + for row := 0 to GetRowCount()-1 do + begin + CurRow := GetRow(row); + + // changes from pos relative inside table (calculated in CalculateRowHeights) to absolute pos + CurRow.Y := Y + CurRow.Y; + + CurRow.Render(ADest, lEntityRenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + //MergeRenderInfo(lEntityRenderInfo, ARenderInfo); no need to merge, since TvTableCell.DrawBorder calculates the proper size + end; +end; + +function TvTable.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; + APageItem: Pointer): Pointer; +var + i: Integer; + lCurRow: TvTableRow; +begin + Result := inherited GenerateDebugTree(ADestRoutine, APageItem); + + // data which goes into a separate item + FExtraDebugStr := 'ColWidthsInMM='; + for i := 0 to Length(ColWidthsInMM)-1 do + FExtraDebugStr := FExtraDebugStr + Format('[%d]=%f ', [i, ColWidthsInMM[i]]); + ADestRoutine(FExtraDebugStr, Result); + + // Add rows + for i := 0 to GetRowCount()-1 do + begin + lCurRow := GetRow(i); + lCurRow.GenerateDebugTree(ADestRoutine, Result); + end; +end; + +{ TvEmbeddedVectorialDoc } + +constructor TvEmbeddedVectorialDoc.create(APage: TvPage); +begin + inherited create(APage); + Document := TvVectorialDocument.Create(); +end; + +destructor TvEmbeddedVectorialDoc.destroy; +begin + Document.Free; + inherited destroy; +end; + +procedure TvEmbeddedVectorialDoc.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); +begin + ALeft := X; + ATop := Y; + ARight := X + Document.Width; + ABottom := Y + Document.Height; +end; + +procedure TvEmbeddedVectorialDoc.Render(ADest: TFPCustomCanvas; + var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; + AMulX: Double; AMulY: Double; ADoDraw: Boolean); + + function CoordToCanvasX(ACoord: Double): Integer; + begin + Result := Round(ADestX + AmulX * ACoord); + end; + + function CoordToCanvasY(ACoord: Double): Integer; + begin + Result := Round(ADestY + AmulY * ACoord); + end; + +var + lPage: TvPage; +begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + + lPage := Document.GetPage(0); + if ADoDraw then + lPage.Render(ADest, CoordToCanvasX(X), CoordToCanvasY(Y), AMulX, AMulY); + + CalcEntityCanvasMinMaxXY(ARenderInfo, CoordToCanvasX(X), CoordToCanvasY(Y)); + CalcEntityCanvasMinMaxXY(ARenderInfo, + CoordToCanvasX(X + Document.Width), + CoordToCanvasY(Y + Document.Height)); +end; + +function TvEmbeddedVectorialDoc.GenerateDebugTree( + ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; +begin + Result:=inherited GenerateDebugTree(ADestRoutine, APageItem); + Document.GenerateDebugTree(ADestRoutine, Result); +end; + { TvTableRow } constructor TvTableRow.create(APage: TvPage); @@ -1975,6 +2598,7 @@ function TvTableRow.AddCell : TvTableCell; begin Result := TvTableCell.Create(FPage); + Result.Row := Self; Cells.Add(Result); end; @@ -1988,8 +2612,93 @@ Result := TvTableCell(Cells[AIndex]); end; +function TvTableRow.GetCellColNr(ACell: TvTableCell): Integer; +begin + Result := Cells.IndexOf(Pointer(ACell)); +end; + +function TvTableRow.CalculateMaxCellSpacing_Y(): Double; +Var + i : Integer; + CurCell: TvTableCell; + lTopSpacing, lLeftSpacing, lRightSpacing, lBottomSpacing: Double; +begin + Result := 0; + for i := 0 to GetCellCount()-1 do + begin + CurCell := GetCell(i); + CurCell.GetEffectiveCellSpacing(lTopSpacing, lLeftSpacing, lRightSpacing, lBottomSpacing); + Result := Max(Result, lBottomSpacing+lTopSpacing); + end; +end; + +procedure TvTableRow.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); +begin + ALeft := X; + ATop := Y; + ARight := X + FPage.Width; + ABottom := Y + Height; +end; + +procedure TvTableRow.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); + + function CoordToCanvasX(ACoord: Double): Integer; + begin + Result := Round(ADestX + AmulX * ACoord); + end; + + function CoordToCanvasY(ACoord: Double): Integer; + begin + Result := Round(ADestY + AmulY * ACoord); + end; + +var + CurCell: TvTableCell; + i: Integer; + CurX_mm: Double = 0.0; + lEntityRenderInfo: TvRenderInfo; +begin + InitializeRenderInfo(ARenderInfo); + + for i := 0 to GetCellCount()-1 do + begin + CurCell := GetCell(i); + CurCell.X := CurX_mm; + CurCell.Y := Y; + CurCell.Render(ADest, lEntityRenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + if (Table <> nil) then + begin + if (Length(Table.ColWidthsInMM) > i) then + CurX_mm := CurX_mm + Table.ColWidthsInMM[i]; + end; + + MergeRenderInfo(lEntityRenderInfo, ARenderInfo); + end; +end; + +function TvTableRow.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; + APageItem: Pointer): Pointer; +var + i: Integer; + lCurCell: TvTableCell; +begin + FExtraDebugStr := Format(' Height=%f CellSpacing=%f SpacingDataValid=%s', + [Height, CellSpacing, BoolToStr(SpacingDataValid)]); + Result := inherited GenerateDebugTree(ADestRoutine, APageItem); + + // Add cells + for i := 0 to GetCellCount()-1 do + begin + lCurCell := GetCell(i); + lCurCell.GenerateDebugTree(ADestRoutine, Result); + end; +end; + { T2DEllipticalArcSegment } +// wp: no longer needed... function T2DEllipticalArcSegment.AlignedEllipseCenterEquationT1( AParam: Double): Double; var @@ -2004,9 +2713,134 @@ if Result < 0 then Result := -1* Result; end; +procedure T2DEllipticalArcSegment.BezierApproximate(var Points: T3dPointsArray); +var + P1, P2, P3, P4: T3dPoint; + startangle, endangle: Double; + startanglePi2, endanglePi2: Double; + xstart, ystart: Double; + nextx, nexty: Double; + angle: Double; + n: Integer; +begin + SetLength(Points, 30); + n := 0; + + xstart := T2DSegment(Previous).X; + ystart := T2DSegment(Previous).Y; + startangle := CalcEllipsePointAngle(xstart, ystart, RX, RY, CX, CY, XRotation); + endangle := CalcEllipsePointAngle(X, Y, RX, RY, CX, CY, XRotation); + if endangle < 0 then endangle := 2*pi + endangle; + + angle := arctan2(-1,1); + angle := radtodeg(angle); + + angle := radtodeg(startangle); + angle := radtodeg(endangle); + + // Since the algorithm for bezier approximation requires that the angle + // between start and end is at most pi/3 we have to progress in pi/3 steps. + angle := startangle + pi/3; + while true do + begin + if angle >= endangle then begin + EllipticalArcToBezier(CX, CY, RX, RY, startAngle, endangle, Points[n], Points[n+1], Points[n+2], Points[n+3]); + inc(n, 4); + break; + end else + EllipticalArcToBezier(CX, CY, RX, RY, startangle, angle, Points[n], Points[n+1], Points[n+2], Points[n+3]); + inc(n, 4); + startangle := angle; + angle := angle + pi/2; + end; + SetLength(Points, n); +end; + +procedure T2DEllipticalArcSegment.PolyApproximate(var Points: T3dPointsArray); +const + BUFSIZE = 100; +var + t, tstart, tend, dt: Double; + xstart, ystart: Double; + n: Integer; + done: Boolean; +begin + n := 0; + SetLength(Points, BUFSIZE); + + dt := DegToRad(1.0); // 1-degree increments + + xstart := T2DSegment(Previous).X; + ystart := T2DSegment(Previous).Y; + tstart := CalcEllipsePointAngle(xstart, ystart, RX, RY, CX, CY, XRotation); + tend := CalcEllipsePointAngle(X, Y, RX, RY, CX, CY, XRotation); + + // wp: Something's wrong here: I think "clockwise" is the other way round... + + if ClockwiseArcFlag then + begin // tend must be larger than tstart + if tend < tstart then tend := TWO_PI + tend; + end else begin // tend must be smaller than tstart + if tstart < tend then tstart := TWO_PI + tstart; + dt := -dt; + end; + + done := false; + t := tstart; + while not done do begin + if (ClockwiseArcFlag and (t > tend)) or + (not ClockwiseArcFlag and (t < tend)) then + begin + t := tend; + done := true; + end; + if n >= Length(Points) then + SetLength(Points, Length(Points) + BUFSIZE); + CalcEllipsePoint(t, RX, RY, CX, CY, XRotation, Points[n].x, Points[n].y); + inc(n); + t := t + dt; // Note: dt is <0 in counter-clockwise case + end; + SetLength(Points, n); +end; + +procedure T2DEllipticalArcSegment.Move(ADeltaX, ADeltaY: Double); +begin + inherited Move(ADeltaX, ADeltaY); + + E1.X := E1.X + ADeltaX; + E1.X := E1.Y + ADeltaY; + + E2.X := E2.X + ADeltaX; + E2.X := E2.Y + ADeltaY; + + CX := CX + ADeltaX; + CX := CY + ADeltaY; +end; + + +procedure T2DEllipticalArcSegment.Rotate(AAngle: Double; ABase: T3dPoint); +var + p: T3DPoint; +begin + inherited Rotate(AAngle, ABase); + + p := fpvutils.Rotate3DPointInXY(E1, ABase, AAngle); + E1.X := p.X; + E1.Y := p.Y; + + p := fpvutils.Rotate3DPointInXY(E2, ABase, AAngle); + E2.X := p.X; + E2.Y := p.Y; + + p := fpvutils.Rotate3DPointInXY(Make2dPoint(CX, CY), ABase, AAngle); + CX := p.X; + CY := p.Y; +end; + +// wp: no longer needed... procedure T2DEllipticalArcSegment.CalculateCenter; var - XStart, YStart, lT1, lT2: Double; + XStart, YStart, lT1: Double; CX1, CY1, CX2, CY2, LeftMostX, LeftMostY, RightMostX, RightMostY: Double; RotatedCenter: T3DPoint; begin @@ -2030,8 +2864,8 @@ YStart := T2DSegment(Previous).Y; // Solve by rotating everything to align the ellipse to the axises and then rotating back again - E1 := Rotate3DPointInXY(Make3DPoint(XStart,YStart,0), Make3DPoint(0,0,0),-1*XRotation); - E2 := Rotate3DPointInXY(Make3DPoint(X,Y,0), Make3DPoint(0,0,0),-1*XRotation); + E1 := Rotate3DPointInXY(Make3DPoint(XStart,YStart), Make3DPoint(0,0),-1*XRotation); + E2 := Rotate3DPointInXY(Make3DPoint(X,Y), Make3DPoint(0,0),-1*XRotation); // parametrized: // CX = E1.X - RX*cos(t1) @@ -2055,11 +2889,11 @@ CY1 := E1.Y - RY*sin(lt1); // Rotate back! - RotatedCenter := Rotate3DPointInXY(Make3DPoint(CX1,CY1,0), Make3DPoint(0,0,0),XRotation); + RotatedCenter := Rotate3DPointInXY(Make3DPoint(CX1,CY1), Make3DPoint(0,0),XRotation); CX1 := RotatedCenter.X; CY1 := RotatedCenter.Y; - // The other ellipse is simetrically positioned + // The other ellipse is symmetrically positioned if (CX1 > Xstart) then CX2 := X - (CX1-Xstart) else @@ -2099,9 +2933,8 @@ end; procedure T2DEllipticalArcSegment.CalculateEllipseBoundingBox(ADest: TFPCustomCanvas; - var ALeft, ATop, ARight, ABottom: Double); + out ALeft, ATop, ARight, ABottom: Double); var - MajorAxis, MinorAxis: Double; t1, t2, t3: Double; x1, x2, x3: Double; y1, y2, y3: Double; @@ -2143,41 +2976,49 @@ begin ALeft := CX-RX; ARight := CX+RX; - ATop := CY-RY; - ABottom := CY+RY; + ATop := CY+RY; + ABottom := CY-RY; end else begin // Search for the minimum and maximum X + // There are two solutions in each 2pi range t1 := arctan(-RY*tan(XRotation)/RX); - t2 := arctan(-RY*tan(XRotation)/RX) + Pi/2; - t3 := arctan(-RY*tan(XRotation)/RX) + Pi; + t2 := arctan(-RY*tan(XRotation)/RX) + pi; //Pi/2; // why add pi/2 ?? +// t3 := arctan(-RY*tan(XRotation)/RX) + Pi; x1 := Cx + RX*Cos(t1)*Cos(XRotation)-RY*Sin(t1)*Sin(XRotation); x2 := Cx + RX*Cos(t2)*Cos(XRotation)-RY*Sin(t2)*Sin(XRotation); - x3 := Cx + RX*Cos(t3)*Cos(XRotation)-RY*Sin(t3)*Sin(XRotation); +// x3 := Cx + RX*Cos(t3)*Cos(XRotation)-RY*Sin(t3)*Sin(XRotation); ALeft := Min(x1, x2); - ALeft := Min(ALeft, x3); + // ALeft := Min(ALeft, x3); ARight := Max(x1, x2); - ARight := Max(ARight, x3); + //ARight := Max(ARight, x3); // Now the same for Y t1 := arctan(RY*cotan(XRotation)/RX); - t2 := arctan(RY*cotan(XRotation)/RX) + Pi/2; - t3 := arctan(RY*cotan(XRotation)/RX) + 3*Pi/2; + t2 := arctan(RY*cotan(XRotation)/RX) + pi; //Pi/2; // why add pi/2 ?? +// t3 := arctan(RY*cotan(XRotation)/RX) + 3*Pi/2; y1 := CY + RY*Sin(t1)*Cos(XRotation)+RX*Cos(t1)*Sin(XRotation); y2 := CY + RY*Sin(t2)*Cos(XRotation)+RX*Cos(t2)*Sin(XRotation); - y3 := CY + RY*Sin(t3)*Cos(XRotation)+RX*Cos(t3)*Sin(XRotation); +// y3 := CY + RY*Sin(t3)*Cos(XRotation)+RX*Cos(t3)*Sin(XRotation); + + ATop := Max(y1, y2); + // ATop := Max(ATop, y3); + ABottom := Min(y1, y2); +// ABottom := Min(ABottom, y3); + { ATop := Min(y1, y2); ATop := Min(ATop, y3); ABottom := Max(y1, y2); ABottom := Max(ABottom, y3); + } end; end; @@ -2196,6 +3037,24 @@ Result := ADestRoutine(lStr, APageItem); end; +procedure T2DEllipticalArcSegment.AddToPoints(ADestX, ADestY: Integer; + AMulX, AMulY: Double; var Points: TPointsArray); +var + pts3D: T3DPointsArray; + i, n: Integer; +begin + SetLength(pts3d, 0); + PolyApproximate(pts3D); + n := Length(Points); + SetLength(Points, n + Length(pts3D) - 1); // we don't need the start point --> -1 + for i:=0 to High(pts3D)-1 do // i=0 is end point of prev segment -> we can skip it. + begin + Points[n].X := CoordToCanvasX(pts3D[i].X, ADestX, AMulX); + Points[n].Y := CoordToCanvasY(pts3D[i].Y, ADestY, AMulY); + inc(n); + end; +end; + { TvVerticalFormulaStack } function TvVerticalFormulaStack.CalculateHeight(ADest: TFPCustomCanvas): Double; @@ -2259,20 +3118,55 @@ end; procedure TvVerticalFormulaStack.CalculateBoundingBox(ADest: TFPCustomCanvas; - var ALeft, ATop, ARight, ABottom: Double); + out ALeft, ATop, ARight, ABottom: Double); begin inherited CalculateBoundingBox(ADest, ALeft, ATop, ARight, ABottom); end; procedure TvVerticalFormulaStack.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; AMulX: Double; - AMulY: Double); + AMulY: Double; ADoDraw: Boolean); +begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); +end; + +{ TPathSegment } + +function TPathSegment.GetLength: Double; +begin + Result := 0; +end; + +function TPathSegment.GetPointAndTangentForDistance(ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; +begin + Result := False; + AX := 0; + AY := 0; + ATangentAngle := 0; +end; + +function TPathSegment.GetStartPoint(out APoint: T3DPoint): Boolean; begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + Result := False; + if Previous = nil then Exit; + if (Previous is T3DSegment) then + begin + Result := True; + APoint.X := T3DSegment(Previous).X; + APoint.Y := T3DSegment(Previous).Y; + APoint.Z := T3DSegment(Previous).Z; + Exit; + end; + if (Previous is T2DSegment) then + begin + Result := True; + APoint.X := T2DSegment(Previous).X; + APoint.Y := T2DSegment(Previous).Y; + APoint.Z := 0; + Exit; + end; end; -{ TPathSegment } - procedure TPathSegment.Move(ADeltaX, ADeltaY: Double); begin @@ -2283,7 +3177,7 @@ end; -procedure TPathSegment.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, +procedure TPathSegment.CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); begin ALeft := 0; @@ -2302,8 +3196,35 @@ Result := ADestRoutine(lStr, APageItem); end; +procedure TPathSegment.AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; + var Points: TPointsArray); +begin + // Override by descendants +end; + + { T2DSegment } +function T2DSegment.GetLength: Double; +var + lStartPoint: T3DPoint; +begin + Result := 0; + if not GetStartPoint(lStartPoint) then Exit; + Result := sqrt(sqr(X - lStartPoint.X) + sqr(Y + lStartPoint.Y)); +end; + +function T2DSegment.GetPointAndTangentForDistance(ADistance: Double; out AX, + AY, ATangentAngle: Double): Boolean; +var + lStartPoint: T3DPoint; +begin + Result:=inherited GetPointAndTangentForDistance(ADistance, AX, AY, + ATangentAngle); + if not GetStartPoint(lStartPoint) then Exit; + Result := LineEquation_GetPointAndTangentForLength(lStartPoint, Make3DPoint(X, Y), ADistance, AX, AY, ATangentAngle); +end; + procedure T2DSegment.Move(ADeltaX, ADeltaY: Double); begin X := X + ADeltaX; @@ -2315,7 +3236,7 @@ lRes: T3DPoint; begin inherited Rotate(AAngle, ABase); - lRes := fpvutils.Rotate3DPointInXY(Make3DPoint(X, Y, 0), ABase, AAngle); + lRes := fpvutils.Rotate3DPointInXY(Make3DPoint(X, Y), ABase, AAngle); X := lRes.X; Y := lRes.Y; end; @@ -2330,8 +3251,41 @@ Result := ADestRoutine(lStr, APageItem); end; +procedure T2DSegment.AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; + var Points: TPointsArray); +var + n: Integer; +begin + n := Length(Points); + SetLength(Points, n + 1); + Points[n].X := CoordToCanvasX(Points[n].X, ADestX, AMulX); + Points[n].Y := CoordToCanvasY(Points[n].Y, ADestY, AMulY); +end; + { T2DBezierSegment } +function T2DBezierSegment.GetLength: Double; +var + lStartPoint: T3DPoint; +begin + Result := 0; + if not GetStartPoint(lStartPoint) then Exit; + Result := BezierEquation_GetLength(lStartPoint, Make3DPoint(X2, Y2), + Make3DPoint(X3, Y3), Make3DPoint(X, Y), 0); +end; + +function T2DBezierSegment.GetPointAndTangentForDistance(ADistance: Double; out + AX, AY, ATangentAngle: Double): Boolean; +var + lStartPoint: T3DPoint; +begin + Result:=inherited GetPointAndTangentForDistance(ADistance, AX, AY, + ATangentAngle); + if not GetStartPoint(lStartPoint) then Exit; + Result := BezierEquation_GetPointAndTangentForLength(lStartPoint, Make3DPoint(X2, Y2), + Make3DPoint(X3, Y3), Make3DPoint(X, Y), ADistance, AX, AY, ATangentAngle); +end; + procedure T2DBezierSegment.Move(ADeltaX, ADeltaY: Double); begin inherited Move(ADeltaX, ADeltaY); @@ -2341,6 +3295,21 @@ Y3 := Y3 + ADeltaY; end; +procedure T2DBezierSegment.Rotate(AAngle: Double; ABase: T3dPoint); +var + p: T3DPoint; +begin + inherited Rotate(AAngle, ABase); + + p := fpvutils.Rotate3DPointInXY(Make3DPoint(X2, Y2), ABase, AAngle); + X2 := p.X; + Y2 := p.Y; + + p := fpvutils.Rotate3DPointInXY(Make3DPoint(X3, Y3), ABase, AAngle); + X3 := p.X; + Y3 := p.Y; +end; + function T2DBezierSegment.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; var @@ -2350,6 +3319,51 @@ Result := ADestRoutine(lStr, APageItem); end; +procedure T2DBezierSegment.AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; + var Points: TPointsArray); +var + pts: TPointsArray; + coordX, coordY, coord2X, coord2Y, coord3X, coord3Y, coord4X, coord4Y: Integer; + i, n: Integer; + prev: TPoint; +begin + if not (Previous is T2DSegment) then + raise Exception.Create('T2DBezierSegment must follow a T2DSegment.'); + + coordX := CoordToCanvasX(T2DSegment(Previous).X, ADestX, AMulX); // start pt + coordY := CoordToCanvasY(T2DSegment(Previous).Y, ADestY, AMulY); + coord4X := CoordToCanvasX(X, ADestX, AMulX); // end pt + coord4Y := CoordToCanvasY(Y, ADestY, AMulY); + coord2X := CoordToCanvasX(X2, ADestX, AMulX); // ctrl pt 1 + coord2Y := CoordToCanvasY(Y2, ADestY, AMulY); + coord3X := CoordToCanvasX(X3, ADestX, AMulX); // ctrl pt 2 + coord3Y := CoordToCanvasY(Y3, ADestY, AMulY); + + SetLength(pts, 0); + AddBezierToPoints( + Make3DPoint(coordX, coordY), + Make3DPoint(coord2X, coord2Y), + Make3DPoint(coord3X, coord3Y), + Make3DPoint(coord4X, coord4Y), + pts); + + if Length(pts) = 0 then + exit; + + n := Length(Points); + prev := Points[n-1]; + SetLength(Points, n + Length(pts)); + for i:=0 to High(pts) do + begin + if (pts[i].X = prev.X) and (pts[i].Y = prev.Y) then // skip subsequent coincident points + Continue; + Points[n] := pts[i]; + prev := pts[i]; + inc(n); + end; + SetLength(Points, n); +end; + { T3DSegment } procedure T3DSegment.Move(ADeltaX, ADeltaY: Double); @@ -2358,6 +3372,18 @@ Y := Y + ADeltaY; end; +{ This is preliminary... } +procedure T3DSegment.AddToPoints(ADestX, ADestY: Integer; AMulX, AMulY: Double; + var Points: TPointsArray); +var + n: Integer; +begin + n := Length(Points); + SetLength(Points, n + 1); + Points[n].X := CoordToCanvasX(Points[n].X, ADestX, AMulX); + Points[n].Y := CoordToCanvasY(Points[n].Y, ADestY, AMulY); +end; + { T3DBezierSegment } procedure T3DBezierSegment.Move(ADeltaX, ADeltaY: Double); @@ -2382,7 +3408,8 @@ Z := 0.0; end; -procedure TvEntity.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); +procedure TvEntity.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); begin ALeft := X; ATop := Y; @@ -2390,6 +3417,34 @@ ABottom := Y+1; end; +// returns false if the element is invisible +function TvEntity.CalculateSizeInCanvas(ADest: TFPCustomCanvas; + out ALeft, ATop, AWidth, AHeight: Integer): Boolean; +var + lRenderInfo: TvRenderInfo; +begin + Result := True; + InitializeRenderInfo(lRenderInfo); + Render(ADest, lRenderInfo, 0, 0, 1, 1, False); + ALeft := lRenderInfo.EntityCanvasMinXY.X; + ATop := lRenderInfo.EntityCanvasMinXY.Y; + AWidth := lRenderInfo.EntityCanvasMaxXY.X - lRenderInfo.EntityCanvasMinXY.X; + AHeight := lRenderInfo.EntityCanvasMaxXY.Y - lRenderInfo.EntityCanvasMinXY.Y; + if (lRenderInfo.EntityCanvasMinXY.X = INVALID_RENDERINFO_CANVAS_XY) or + (lRenderInfo.EntityCanvasMinXY.Y = INVALID_RENDERINFO_CANVAS_XY) or + (lRenderInfo.EntityCanvasMaxXY.Y = INVALID_RENDERINFO_CANVAS_XY) or + (lRenderInfo.EntityCanvasMaxXY.Y = INVALID_RENDERINFO_CANVAS_XY) then + Result := False; +end; + +procedure TvEntity.CalculateHeightInCanvas(ADest: TFPCustomCanvas; out AHeight: Integer); +var + lRenderInfo: TvRenderInfo; +begin + Render(ADest, lRenderInfo, 0, 0, 1, 1, False); + AHeight := lRenderInfo.EntityCanvasMaxXY.Y - lRenderInfo.EntityCanvasMinXY.Y; +end; + procedure TvEntity.ExpandBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); var lLeft, lTop, lRight, lBottom: Double; @@ -2401,20 +3456,77 @@ if lBottom > ABottom then ABottom := lBottom; end; -procedure TvEntity.CalcEntityCanvasMinMaxXY( +class procedure TvEntity.CalcEntityCanvasMinMaxXY( var ARenderInfo: TvRenderInfo; APointX, APointY: Integer); begin - if ARenderInfo.EntityCanvasMinXY.X < 0 then ARenderInfo.EntityCanvasMinXY.X := APointX + if ARenderInfo.EntityCanvasMinXY.X = INVALID_RENDERINFO_CANVAS_XY then + ARenderInfo.EntityCanvasMinXY.X := APointX else ARenderInfo.EntityCanvasMinXY.X := Min(ARenderInfo.EntityCanvasMinXY.X, APointX); - if ARenderInfo.EntityCanvasMinXY.Y < 0 then ARenderInfo.EntityCanvasMinXY.Y := APointY + if ARenderInfo.EntityCanvasMinXY.Y = INVALID_RENDERINFO_CANVAS_XY then + ARenderInfo.EntityCanvasMinXY.Y := APointY else ARenderInfo.EntityCanvasMinXY.Y := Min(ARenderInfo.EntityCanvasMinXY.Y, APointY); - if ARenderInfo.EntityCanvasMaxXY.X < 0 then ARenderInfo.EntityCanvasMaxXY.X := APointX + if ARenderInfo.EntityCanvasMaxXY.X = INVALID_RENDERINFO_CANVAS_XY then + ARenderInfo.EntityCanvasMaxXY.X := APointX else ARenderInfo.EntityCanvasMaxXY.X := Max(ARenderInfo.EntityCanvasMaxXY.X, APointX); - if ARenderInfo.EntityCanvasMaxXY.Y < 0 then ARenderInfo.EntityCanvasMaxXY.Y := APointY + if ARenderInfo.EntityCanvasMaxXY.Y = INVALID_RENDERINFO_CANVAS_XY then + ARenderInfo.EntityCanvasMaxXY.Y := APointY else ARenderInfo.EntityCanvasMaxXY.Y := Max(ARenderInfo.EntityCanvasMaxXY.Y, APointY); end; -function TvEntity.TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; +class procedure TvEntity.CalcEntityCanvasMinMaxXY_With2Points( + var ARenderInfo: TvRenderInfo; AX1, AY1, AX2, AY2: Integer); +begin + CalcEntityCanvasMinMaxXY(ARenderInfo, AX1, AY1); + CalcEntityCanvasMinMaxXY(ARenderInfo, AX2, AY2); +end; + +procedure TvEntity.MergeRenderInfo(var AFrom, ATo: TvRenderInfo); +begin + CalcEntityCanvasMinMaxXY(ATo, AFrom.EntityCanvasMinXY.X, AFrom.EntityCanvasMinXY.Y); + CalcEntityCanvasMinMaxXY(ATo, AFrom.EntityCanvasMaxXY.X, AFrom.EntityCanvasMaxXY.Y); +end; + +class procedure TvEntity.InitializeRenderInfo(out ARenderInfo: TvRenderInfo); +begin + ARenderInfo.EntityCanvasMinXY := Point(INVALID_RENDERINFO_CANVAS_XY, INVALID_RENDERINFO_CANVAS_XY); + ARenderInfo.EntityCanvasMaxXY := Point(INVALID_RENDERINFO_CANVAS_XY, INVALID_RENDERINFO_CANVAS_XY); + //ARenderInfo.BackgroundColor := colBlack; Don't change this because otherwise we lose the value set by the page + //ARenderInfo.AdjustPenColorToBackground := True; dto. + ARenderInfo.Selected := False; + ARenderInfo.ForceRenderBlock := False; +end; + +function TvEntity.CentralizeY_InHeight(ADest: TFPCustomCanvas; AHeight: Double): Double; +var + lHeight: Double; +begin + lHeight := GetHeight(ADest); + Result := Y + Abs(AHeight - lHeight) / 2; +end; + +function TvEntity.GetHeight(ADest: TFPCustomCanvas): Double; +var + ALeft, ATop, ARight, ABottom: Double; +begin + CalculateBoundingBox(ADest, ALeft, ATop, ARight, ABottom); + Result := Abs(ATop - ABottom); +end; + +function TvEntity.GetWidth(ADest: TFPCustomCanvas): Double; +var + ALeft, ATop, ARight, ABottom: Double; +begin + CalculateBoundingBox(ADest, ALeft, ATop, ARight, ABottom); + Result := Abs(ALeft - ARight); +end; + +function TvEntity.GetLineIntersectionPoints(ACoord: Double; + ACoordIsX: Boolean): TDoubleDynArray; +begin + SetLength(Result, 0); +end; + +function TvEntity.TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; begin Result := vfrNotFound; end; @@ -2452,9 +3564,9 @@ end; procedure TvEntity.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); begin - + InitializeRenderInfo(ARenderInfo); end; function TvEntity.AdjustColorToBackground(AColor: TFPColor; ARenderInfo: TvRenderInfo): TFPColor; @@ -2482,9 +3594,10 @@ Result.Z := (Z - APage.MinZ) * (ANewMax - ANewMin) / (APage.MaxZ - APage.MinZ) + ANewMin; end; -function TvEntity.GetEntityFeatures: TvEntityFeatures; +function TvEntity.GetEntityFeatures(ADest: TFPCustomCanvas): TvEntityFeatures; begin - Result.DrawsUpwards := True; + Result.DrawsUpwards := False; + Result.DrawsUpwardHeightAdjustment := 0; end; function TvEntity.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; @@ -2501,6 +3614,20 @@ Result := IntToHex(AColor.Red div $100, 2) + IntToHex(AColor.Green div $100, 2) + IntToHex(AColor.Blue div $100, 2) + IntToHex(AColor.Alpha div $100, 2); end; +// modified c-style string quoting +class function TvEntity.GenerateDebugStrForString(AValue: string): string; +begin + Result := AValue; + Result := StringReplace(Result, '\', '\\', [rfReplaceAll]); + Result := StringReplace(Result, #$7, '\a', [rfReplaceAll]); + Result := StringReplace(Result, #$8, '\b', [rfReplaceAll]); + Result := StringReplace(Result, #$C, '\f', [rfReplaceAll]); + Result := StringReplace(Result, #$A, '\n', [rfReplaceAll]); + Result := StringReplace(Result, #$D, '\r', [rfReplaceAll]); + Result := StringReplace(Result, #$9, '\t', [rfReplaceAll]); + Result := StringReplace(Result, #$B, '\v', [rfReplaceAll]); +end; + { TvNamedEntity } constructor TvNamedEntity.Create(APage: TvPage); @@ -2537,8 +3664,15 @@ ARenderInfo: TvRenderInfo; APen: TvPen); begin ADest.Pen.FPColor := AdjustColorToBackground(APen.Color, ARenderInfo); - ADest.Pen.Width := 1;//APen.Width; + ADest.Pen.Width := Max(1, APen.Width); // wp: why was here "1;//APen.Width;" ??? ADest.Pen.Style := APen.Style; + {$ifdef USE_LCL_CANVAS} + if (APen.Style = psPattern) then + begin + TCanvas(ADest).Pen.SetPattern(APen.Pattern); + if APen.Width = 1 then TCanvas(ADest).Pen.Cosmetic := false; + end; + {$endif} end; procedure TvEntityWithPen.AssignPen(APen: TvPen); @@ -2548,10 +3682,15 @@ Pen.Width := APen.Width; end; +function TvEntityWithPen.CreatePath: TPath; +begin + Result := nil; +end; + procedure TvEntityWithPen.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); ApplyPenToCanvas(ADest, ARenderInfo); end; @@ -2582,10 +3721,350 @@ Brush.Color := ABrush.Color; end; +{ Calculates the canvas coordinates of the gradient vector (i.e. x,y of start + and end of gradient. + ARect is the bounding box of the shape in which the gradient will be painted. + It must be in canvas coordinates (pixels). + Note that the gradient vector need not be along the edges of this rectangle. } +procedure TvEntityWithPenAndBrush.CalcGradientVector( + out AGradientStart, AGradientEnd: T2dPoint; const ARect: TRect; + ADestX: Integer = 0; ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0); +begin + AGradientStart := Point2D(Brush.Gradient_start.X, Brush.Gradient_start.Y); + AGradientEnd := Point2D(Brush.Gradient_end.X, Brush.Gradient_end.Y); + if (gfRelToUserSpace in Brush.Gradient_flags) then + begin + if (gfRelStartX in Brush.Gradient_flags) then + AGradientStart.X := AGradientStart.X * FPage.Width; + if (gfRelStartY in Brush.Gradient_flags) then + AGradientStart.Y := AGradientStart.Y * FPage.Height; + if (gfRelEndX in Brush.Gradient_flags) then + AGradientEnd.X := AGradientEnd.X * FPage.Width; + if (gfRelEndY in Brush.Gradient_flags) then + AGradientEnd.Y := AGradientEnd.Y * FPage.Height; + AGradientStart.X := CoordToCanvasX(AGradientStart.X, ADestX, AMulX); + AGradientStart.Y := CoordToCanvasY(AGradientStart.Y, ADestY, AMulY); + AGradientEnd.X := CoordToCanvasX(AGradientEnd.X, ADestX, AMulX); + AGradientEnd.Y := CoordToCanvasY(AGradientEnd.Y, ADestY, AMulY); + end else + begin + if (gfRelStartX in Brush.Gradient_flags) then + AGradientStart.X := ARect.Left + AGradientStart.X * (ARect.Right - ARect.Left) + else + AGradientStart.X := CoordToCanvasX(AGradientStart.X, ADestX, AMulX); + if (gfRelStartY in Brush.Gradient_flags) then + AGradientStart.Y := ARect.Top + AGradientStart.Y * (ARect.Bottom - ARect.Left) + else + AGradientStart.Y := CoordToCanvasY(AGradientStart.Y, ADestY, AMulY); + if (gfRelEndX in Brush.Gradient_flags) then + AGradientEnd.X := ARect.Left + AGradientEnd.X * (ARect.Right - ARect.Left) else + AGradientEnd.X := CoordToCanvasX(AGradientEnd.X, ADestX, AMulX); + if (gfRelEndY in Brush.Gradient_flags) then + AGradientEnd.Y := ARect.Top + AGradientEnd.Y * (ARect.Bottom - ARect.Top) else + AGradientEnd.Y := CoordToCanvasY(AGradientEnd.Y, ADestY, AMulY); + end; +end; + +{ Fills the entity with a gradient. + Assumes that the boundary is already in canvas units and is specified by + polygon APoints. } +procedure TvEntityWithPenAndBrush.DrawPolygonBrushGradient(ADest: TFPCustomCanvas; + var ARenderInfo: TvRenderInfo; const APoints: TPointsArray; ARect: TRect; + AGradientStart, AGradientEnd: T2dPoint); +var + lPoints, pts: T2DPointsArray; + i, j: Integer; + pf: Double; // fraction of path travelled along gradient vector + px, py: Double; + phi: Double; + sinphi, cosphi: float; + coord, coord1, coord2, dcoord: Double; + coordIsX: Boolean; + p1, p2: T2dPoint; + gv: T2dPoint; // gradient vector + gvlen: Double; // length of gradient vector + gstart: Double; // Gradient start point (1-dim) + dir: Integer; +begin + if not (Brush.Kind in [bkVerticalGradient, bkHorizontalGradient, bkOtherLinearGradient]) then + Exit; + + // Direction of gradient vector. The gradient vector begins at the first + // color position and ends at the last color position specified in the + // brush's Gradient_colors. + gv := Point2D(AGradientEnd.X-AGradientStart.X, AGradientEnd.Y-AGradientStart.Y); + gvlen := sqrt(sqr(gv.x) + sqr(gv.y)); + if gvlen = 0 then + exit; + + // Find boundary points where the gradient starts and ends. The gradient is + // always travered from 0% to 100% color fractions. + p1 := Point2D( + IfThen(AGradientEnd.x > AGradientStart.x, ARect.Left, ARect.Right), + IfThen(AGradientEnd.Y > AGradientStart.y, ARect.Top, ARect.Bottom) + ); + p2 := Point2D( + IfThen(AGradientEnd.x > AGradientStart.x, ARect.Right, ARect.Left), + IfThen(AGradientEnd.Y > AGradientStart.y, ARect.Bottom, ARect.Top) + ); + + // Prepare parameters and polygon points + ADest.Pen.Style := psSolid; + ADest.Pen.Width := 1; + + SetLength(pts, Length(APoints)); + case Brush.Kind of + bkVerticalGradient: + begin // Run vertically, horizontal lines have same color + coord1 := p1.y; + coord2 := p2.y; + dcoord := IfThen(AGradientEnd.Y > AGradientStart.Y, 1.0, -1.0); + gstart := coord1; + dir := round(dcoord); + for i := 0 to High(APoints) do + pts[i] := Point2D(APoints[i].X, APoints[i].Y); + coordIsX := false; + gstart := coord1; + end; + bkHorizontalGradient: + begin // Run horizontally, vertical lines have same color + coord1 := p1.x; + coord2 := p2.x; + dcoord := IfThen(AGradientEnd.X > AGradientStart.X, 1.0, -1.0); + gstart := coord1; + dir := round(dcoord); + for i := 0 to High(APoints) do + pts[i] := Point2D(APoints[i].X, APoints[i].Y); + coordIsX := true; + end; + bkOtherLinearGradient: + begin // Run along gradient vector, lines perpendicular to gradient vector + phi := arctan2(gv.y, gv.x); + Sincos(phi, sinphi, cosphi); + coordIsX := (abs(sinphi) <= sin(pi/4)); + if not coordIsX then begin + phi := -(pi/2 - phi); + Sincos(phi, sinphi, cosphi); + end; + // p1 is the boundary point around which the shape is rotated in order to + // to get the gradient vector in horizontal or vertical direction for + // easier finding of intersection points. + // Projection of vector from GradientStart to p1 onto gradient vector + coord1 := (((p1.x - AGradientStart.X)*gv.x) + (p1.y - AGradientStart.Y)*gv.y) / gvlen; + // dto for p2. + coord2 := (((p2.x - AGradientStart.X)*gv.x) + (p2.y - AGradientStart.Y)*gv.Y) / gvlen; + // Steps for walking along the gradient vector. Note: too-wide steps + // could result in painting gaps, but this is avoided by using a + // 2-pixel wide pen below. + dcoord := 1.0; // --- some gaps with 1.0 / abs(cosphi); + gstart := -coord1; + dir := +1; + // Rotate polygon point such that gradient axis is parallel to x axis + // (if angle < 45°) or y axis (if angle > 45°) + // Rotation center is the projection of the corner of the bounding box + // onto the gradient vector + p1 := Point2D( + AGradientStart.X + coord1 * gv.x / gvlen, + AGradientStart.Y + coord1 * gv.y / gvlen + ); + for j := 0 to High(APoints) do + begin + px := APoints[j].X - p1.x; + py := APoints[j].Y - p1.y; + pts[j] := Point2D(px*cosPhi + py*sinPhi, -px*sinPhi + py*cosPhi); + end; + // Begin painting at corner + coord2 := coord2 - coord1; + coord1 := 0; + ADest.Pen.Width := 2; // make sure that there are no gaps due to rounding errors + end; + end; + + // Draw gradient + coord := coord1; + while ((dcoord > 0) and (coord <= coord2)) or (dcoord < 0) and (coord >= coord2) do + begin + // Find intersection points of gradient line (normal to gradient vector) + // with polygon + lPoints := GetLinePolygonIntersectionPoints(coord, pts, coordIsX); + if Length(lPoints) < 2 then begin + coord := coord + dcoord; + Continue; + end; + + // Prepare intersection points for painting + case Brush.Kind of + bkVerticalGradient: + // Add loop variable as mssing y coordinate of intersection points + for j := 0 to High(lPoints) do lPoints[j].Y := coord; + bkHorizontalGradient: + // Add loop variable as mssing x coordinate of intersection points + for j := 0 to High(lPoints) do lPoints[j].X := coord; + bkOtherLinearGradient: + // Rotate back + for j := 0 to High(lPoints) do + lPoints[j] := Point2D( + lPoints[j].X * cosPhi - lPoints[j].Y * sinPhi + p1.x, + lPoints[j].X * sinPhi + lPoints[j].Y * cosPhi + p1.y + ); + end; + + // Determine color from fraction (pf) of path travelled along gradient vector + pf := (coord - gstart) * dir / gvlen; + ADest.Pen.FPColor := GradientColor(Brush.Gradient_colors, pf); + + // Draw gradient lines between intersection points + j := 0; + while j < High(lPoints) do + begin + ADest.Line(round(lPoints[j].X), round(lPoints[j].Y), round(lPoints[j+1].X), round(lPoints[j+1].Y)); + inc(j, 2); + end; + + // Proceed to next line + coord := coord + dcoord; + end; +end; + +procedure TvEntityWithPenAndBrush.DrawBrushGradient(ADest: TFPCustomCanvas; + var ARenderInfo: TvRenderInfo; x1, y1, x2, y2: Integer; + ADestX, ADestY: Integer; AMulX, AMulY: Double); +var + tmpPath: TPath; + polypoints: TPointsArray; + polystarts: TIntegerDynArray; + lRect: TRect; + gv1, gv2: T2dPoint; + j: Integer; +begin + tmpPath := CreatePath; + if tmpPath = nil then + exit; + try + ConvertPathToPolygons(tmpPath, ADestX, ADestY, AMulX, AMulY, polypoints, polystarts); + // Boundary rect of shape filled with a gradient + lRect := Rect(x1, y1, x2, y2); + NormalizeRect(lRect); + // calculate gradient vector + CalcGradientVector(gv1, gv2, lRect, ADestX, ADestY, AMulX, AMulY); + // Draw the gradient + DrawPolygonBrushGradient(ADest, ARenderInfo, polypoints, lRect, gv1, gv2); + // to do: multiple polygons! + + // Paint outline + if ADest.Pen.Style <> psClear then + begin + ApplyPenToCanvas(ADest, ARenderInfo); + ADest.MoveTo(polypoints[0].X, polypoints[0].Y); + for j:=1 to High(polypoints) do + ADest.LineTo(polypoints[j].X, polypoints[j].Y); + end; + + finally + tmpPath.Free; + end; +end; +(* +{ Fills the entity's shape with a gradient. + Assumes that the boundary is in fpv units and provides parameters (ADestX, + ADestY, AMulX, AMulY) for conversion to canvas pixels. } +procedure TvEntityWithPenAndBrush.DrawBrushGradient(ADest: TFPCustomCanvas; + var ARenderInfo: TvRenderInfo; x1, y1, x2, y2: Integer; + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double); + + function CoordToCanvasX(ACoord: Double): Integer; + begin + Result := Round(ADestX + AmulX * ACoord); + end; + + function CoordToCanvasY(ACoord: Double): Integer; + begin + Result := Round(ADestY + AmulY * ACoord); + end; + + function CanvasToCoordY(ACanvas: Integer): Double; + begin + Result := (ACanvas - ADestY) / AmulY; + end; + + function CanvasToCoordX(ACanvas: Integer): Double; + begin + Result := (ACanvas - ADestX) / AmulX; + end; + +var + i, j: Integer; + lPoints: TDoubleDynArray; + lCanvasPts: array[0..1] of Integer; + lColor, lColor1, lColor2: TFPColor; +begin + if not (Brush.Kind in [bkVerticalGradient, bkHorizontalGradient]) then + Exit; + + lColor1 := Brush.Gradient_colors[1].Color; + lColor2 := Brush.Gradient_colors[0].Color; + if Brush.Kind = bkVerticalGradient then + begin + for i := y1 to y2 do + begin + lPoints := GetLineIntersectionPoints(CanvasToCoordY(i), False); + if Length(lPoints) < 2 then Continue; + lColor := MixColors(lColor1, lColor2, i-y1, y2-y1); + ADest.Pen.FPColor := lColor; + ADest.Pen.Style := psSolid; + j := 0; + while j < Length(lPoints) do + begin + lCanvasPts[0] := CoordToCanvasX(lPoints[j]); + lCanvasPts[1] := CoordToCanvasX(lPoints[j+1]); + ADest.Line(lCanvasPts[0], i, lCanvasPts[1], i); + inc(j, 2); + end; + end; + end + else if Brush.Kind = bkHorizontalGradient then + begin + for i := x1 to x2 do + begin + lPoints := GetLineIntersectionPoints(CanvasToCoordX(i), True); + if Length(lPoints) < 2 then Continue; + lColor := MixColors(lColor1, lColor2, i-x1, x2-x1); + ADest.Pen.FPColor := lColor; + ADest.Pen.Style := psSolid; + j := 0; + while (j+1 < Length(lPoints)) do + begin + lCanvasPts[0] := CoordToCanvasY(lPoints[j]); + lCanvasPts[1] := CoordToCanvasY(lPoints[j+1]); + ADest.Line(i, lCanvasPts[0], i, lCanvasPts[1]); + inc(j , 2); + end; + end; + end; +end; *) + +procedure TvEntityWithPenAndBrush.DrawBrush(ADest: TFPCustomCanvas; + var ARenderInfo: TvRenderInfo; ADestX, ADestY: Integer; AMulX, AMulY: Double); +var + tmpPath: TPath; + polypoints: TPointsArray; + polystarts: TIntegerDynArray; +begin + tmpPath := CreatePath; + if tmpPath = nil then + exit; + try + ConvertPathToPolygons(tmpPath, ADestX, ADestY, AMulX, AMulY, polypoints, polystarts); + ADest.Polygon(polypoints); + finally + tmpPath.Free; + end; +end; + procedure TvEntityWithPenAndBrush.Render(ADest: TFPCustomCanvas; - var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double); + var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); ApplyBrushToCanvas(ADest); end; @@ -2593,15 +4072,14 @@ ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; var lStr: string; - lCurPathSeg: TPathSegment; begin - lStr := Format('[%s] Name=%s X=%f Y=%f Pen.Color=%s Pen.Style=%s Brush.Color=%s Brush.Style=%s', + lStr := Format('[%s] Name=%s X=%f Y=%f Pen.Color=%s Pen.Style=%s Brush.Color=%s Brush.Style=%s %s', [Self.ClassName, Self.Name, X, Y, GenerateDebugStrForFPColor(Pen.Color), GetEnumName(TypeInfo(TFPPenStyle), integer(Pen.Style)), GenerateDebugStrForFPColor(Brush.Color), - GetEnumName(TypeInfo(TFPBrushStyle), integer(Brush.Style)) - ]); + GetEnumName(TypeInfo(TFPBrushStyle), integer(Brush.Style)), + FExtraDebugStr]); Result := ADestRoutine(lStr, APageItem); end; @@ -2612,6 +4090,7 @@ begin inherited Create(APage); Font.Color := colBlack; + Font.Size := 10; end; procedure TvEntityWithPenBrushAndFont.ApplyFontToCanvas(ADest: TFPCustomCanvas; @@ -2623,13 +4102,13 @@ procedure TvEntityWithPenBrushAndFont.ApplyFontToCanvas(ADest: TFPCustomCanvas; ARenderInfo: TvRenderInfo; AFont: TvFont; AMulX: Double); var - i: Integer; {$ifdef USE_LCL_CANVAS} ALCLDest: TCanvas absolute ADest; {$endif} - // - LowerDim: T3DPoint; + lFPColor: TFPColor; begin + ADest.Font.Name := AFont.Name; + if AFont.Size = 0 then AFont.Size := 10; ADest.Font.Size := Round(AmulX * AFont.Size); ADest.Font.Bold := AFont.Bold; ADest.Font.Italic := AFont.Italic; @@ -2641,9 +4120,10 @@ {$ENDIF} {$ifdef USE_LCL_CANVAS} - ALCLDest.Font.Orientation := Round(AFont.Orientation * 16); + ALCLDest.Font.Orientation := Round(AFont.Orientation * 10); // wp: was * 16 {$endif} - ADest.Font.FPColor := AdjustColorToBackground(AFont.Color, ARenderInfo); + lFPColor := AdjustColorToBackground(AFont.Color, ARenderInfo); + ADest.Font.FPColor := lFPColor; end; procedure TvEntityWithPenBrushAndFont.AssignFont(AFont: TvFont); @@ -2658,26 +4138,30 @@ Font.StrikeThrough := AFont.StrikeThrough; end; +procedure TvEntityWithPenBrushAndFont.Rotate(AAngle: Double; ABase: T3DPoint); +begin + inherited Rotate(AAngle, ABase); + Font.Orientation := RadToDeg(AAngle); +end; + procedure TvEntityWithPenBrushAndFont.Scale(ADeltaScaleX, ADeltaScaleY: Double); begin inherited Scale(ADeltaScaleX, ADeltaScaleY); - Font.Size := Round(Font.Size * ADeltaScaleX); end; procedure TvEntityWithPenBrushAndFont.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; AMulX: Double; - AMulY: Double); + AMulY: Double; ADoDraw: Boolean); begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - ApplyFontToCanvas(ADest, ARenderInfo, AMulX); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + ApplyFontToCanvas(ADest, ARenderInfo, AMulX); // wp: why not AMulY ? end; function TvEntityWithPenBrushAndFont.GenerateDebugTree( ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; var lStr: string; - lCurPathSeg: TPathSegment; begin Result := inherited GenerateDebugTree(ADestRoutine, APageItem); // Add the font debug info in a sub-item @@ -2713,9 +4197,9 @@ procedure TvEntityWithStyle.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; - AMulX: Double; AMulY: Double); + AMulX: Double; AMulY: Double; ADoDraw: Boolean); begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); if (Style <> nil) then begin ApplyPenToCanvas(ADest, ARenderInfo, Style.Pen); @@ -2788,6 +4272,13 @@ CurPoint := nil; end; +procedure TPath.PrepareForWalking; +begin + PrepareForSequentialReading(); + CurWalkDistanceInCurSegment := 0; + Next(); +end; + function TPath.Next(): TPathSegment; begin if CurPoint = nil then Result := Points @@ -2796,7 +4287,34 @@ CurPoint := Result; end; -procedure TPath.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); +// Walk is walking a distance in the path and obtaining the point where we land and the current tangent +// Returns true if successful, false otherwise +// ATangentAngle - In radians +function TPath.NextWalk(ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; +var + lCurPoint: TPathSegment; + lCurPointLen: Double; +begin + Result := False; + lCurPoint := CurPoint; + CurWalkDistanceInCurSegment := ADistance + CurWalkDistanceInCurSegment; + if lCurPoint = nil then Exit; + lCurPointLen := lCurPoint.GetLength(); + + // get the current segment + while CurWalkDistanceInCurSegment >= lCurPointLen do + begin + CurWalkDistanceInCurSegment := CurWalkDistanceInCurSegment - lCurPointLen; + lCurPoint := Next(); + if lCurPoint = nil then Exit; + lCurPointLen := lCurPoint.GetLength(); + end; + + Result := lCurPoint.GetPointAndTangentForDistance(CurWalkDistanceInCurSegment, AX, AY, ATangentAngle); +end; + +procedure TPath.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); var lSegment: TPathSegment; l2DSegment: T2DSegment; @@ -2999,34 +4517,228 @@ end; end; -procedure TPath.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); +{ Only correct for straight segments. This must have been checked before! } +function TPath.GetLineIntersectionPoints(ACoord: Double; + ACoordIsX: Boolean): TDoubleDynArray; +const + COUNT = 100; +var + seg: TPathSegment; + seg2D: T2DSegment; // absolute seg; + j: Integer; + p, p1, p2: T3DPoint; + n: Integer; +begin + SetLength(Result, COUNT); + PrepareForSequentialReading; + n := 0; + if ACoordIsX then + for j:=0 to Len-1 do + begin + seg := TPathSegment(Next); + if seg.GetStartPoint(p) and (seg is T2DSegment) then + begin + seg2D := T2DSegment(seg); + if p.X < seg2D.X then begin + p1 := Make3DPoint(p.X, p.Y); + p2 := Make3DPoint(seg2D.X, seg2D.Y); + end else + begin + p1 := Make3DPoint(seg2D.X, seg2D.Y); + p2 := Make3DPoint(p.X, p.Y); + end; + if (p1.X < ACoord) and (ACoord <= p2.X) then + begin + if n >= Length(Result) then + SetLength(Result, Length(Result) + COUNT); + if (p1.X = p2.X) then + Result[n] := p1.Y else + Result[n] := p1.Y + (ACoord - p1.X) * (p2.Y - p1.Y) / (p2.X - p1.X); + inc(n); + end; + end; + end + else + for j := 0 to Len-1 do + begin + seg := TPathSegment(Next); + if seg.GetStartPoint(p) and (seg is T2DSegment) then + begin + seg2D := T2DSegment(seg); + if p.Y < seg2D.Y then + begin + p1 := Make3DPoint(p.X, p.Y); + p2 := Make3DPoint(seg2D.X, seg2D.Y); + end else + begin + p1 := Make3DPoint(seg2D.X, seg2D.Y); + p2 := Make3DPoint(p.X, p.Y); + end; + if (p1.Y < ACoord) and (ACoord <= p2.Y) then + begin + if n >= Length(Result) then + SetLength(Result, Length(Result) + COUNT); + if (p1.Y = p2.Y) then + Result[n] := p1.X else + Result[n] := p1.X + (ACoord - p1.Y) * (p2.X - p1.x) / (p2.Y - p1.Y); + inc(n); + end; + end; + end; + SetLength(Result, n); +end; - function CoordToCanvasX(ACoord: Double): Integer; +procedure TPath.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + ADestX, ADestY: Integer; AMulX, AMulY: Double; ADoDraw: Boolean); +var + i: Integer; + j, n: Integer; + x1, y1, x2, y2: Integer; + pts: TPointsArray; + ACanvas: TCanvas absolute ADest; + coordX, coordY: Integer; + curSegment: TPathSegment; + cur2DSegment: T2DSegment absolute curSegment; + lRect: TRect; + gv1, gv2: T2DPoint; +begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + + ConvertPathToPolygons(self, ADestX, ADestY, AMulX, AMulY, FPolyPoints, FPolyStarts); + x1 := MaxInt; + y1 := maxInt; + x2 := -MaxInt; + y2 := -MaxInt; + for i := 0 to High(FPolyPoints) do + begin + x1 := min(x1, FPolyPoints[i].X); + y1 := min(y1, FPolyPoints[i].Y); + x2 := max(x2, FPolyPoints[i].X); + y2 := max(y2, FPolyPoints[i].Y); + end; + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, x1, y1, x2, y2); + + if ADoDraw then begin - Result := Round(ADestX + AmulX * ACoord); + // (1) draw background only + ADest.Pen.Style := psClear; + if (Length(FPolyPoints) > 2) then + case Brush.Kind of + bkSimpleBrush: + if Brush.Style <> bsClear then + begin + {$IFDEF USE_LCL_CANVAS} + for i := 0 to High(FPolyStarts) do + begin + j := FPolyStarts[i]; + if i = High(FPolyStarts) then + n := Length(FPolyPoints) - j + else + n := FPolyStarts[i+1] - FPolyStarts[i]; // + 1; + ACanvas.Polygon(@FPolyPoints[j], n, WindingRule = vcmNonZeroWindingRule); + end; + {$ELSE} + ADest.Polygon(FPolyPoints); + {$ENDIF} + end; + else // gradients + // Boundary rect of shape filled with a gradient + lRect := Rect(x1, y1, x2, y2); + // calculate gradient vector + CalcGradientVector(gv1, gv2, lRect, ADestX, ADestY, AMulX, AMulY); + // Draw the gradient + DrawPolygonBrushGradient(ADest, ARenderInfo, FPolyPoints, lRect, gv1, gv2); + // to do: multiple polygons! + end; + + // (2) draw border, take care of the segments with modified pen + ADest.Brush.Style := bsClear; // We will paint no background + ApplyPenToCanvas(ADest, ARenderInfo, Pen); // Restore pen + + PrepareForSequentialReading; + for j := 0 to Len - 1 do + begin + curSegment := TPathSegment(Next); + case curSegment.SegmentType of + stMoveTo: + begin + inc(i); + coordX := CoordToCanvasX(cur2DSegment.X, ADestX, AMulX); + coordY := CoordToCanvasY(cur2DSegment.Y, ADestY, AMulY); + ADest.MoveTo(coordX, coordY); + end; + st2DLineWithPen, st2DLine, st3DLine: + begin + coordX := CoordToCanvasX(cur2DSegment.X, ADestX, AMulX); + coordY := CoordToCanvasY(cur2DSegment.Y, ADestY, AMulY); + if curSegment.SegmentType = st2DLineWithPen then + begin + ADest.Pen.FPColor := AdjustColorToBackground(T2DSegmentWithPen(Cur2DSegment).Pen.Color, ARenderInfo); + ADest.Pen.Width := T2DSegmentWithPen(cur2DSegment).Pen.Width; + ADest.Pen.Style := T2DSegmentWithPen(cur2DSegment).Pen.Style; + ADest.LineTo(coordX, coordY); + ApplyPenToCanvas(ADest, ARenderInfo, Pen); + end else + ADest.LineTo(coordX, coordY); + end; + st2DBezier, st3DBezier, st2DEllipticalArc: + begin + coordX := CoordToCanvasX(T2DSegment(curSegment.Previous).X, ADestX, AMulX); + coordY := CoordToCanvasY(T2DSegment(curSegment.Previous).Y, ADestY, AMulY); + SetLength(pts, 1); + pts[0] := Point(coordX, coordY); + curSegment.AddToPoints(ADestX, ADestY, AMulX, AMulY, pts); + if Length(pts) > 0 then + begin + ADest.PolyLine(pts); + ADest.MoveTo(pts[High(pts)].X, pts[High(pts)].Y); + end; + end; + end; + end; end; +end; - function CoordToCanvasY(ACoord: Double): Integer; + +(* +procedure TPath.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); + + function CanFill: Boolean; + var + seg: TPathSegment; + j: Integer; begin - Result := Round(ADestY + AmulY * ACoord); + Result := true; + PrepareForSequentialReading; + for j := 0 to Len - 1 do + begin + seg := TPathSegment(Next()); + if seg.SegmentType in [st2DBezier, st3dBezier, st2DEllipticalArc] then + begin + Result := false; + exit; + end; + end; end; +const + POINT_BUFFER = 100; var - j, k: Integer; + i, j: Integer; PosX, PosY: Double; // Not modified by ADestX, etc CoordX, CoordY: Integer; CurSegment: TPathSegment; Cur2DSegment: T2DSegment absolute CurSegment; Cur2DBSegment: T2DBezierSegment absolute CurSegment; Cur2DArcSegment: T2DEllipticalArcSegment absolute CurSegment; + x1, y1, x2, y2: Integer; // For bezier - CurX, CurY: Integer; // Not modified by ADestX, etc - CoordX2, CoordY2, CoordX3, CoordY3, CoordX4, CoordY4: Integer; - CurveLength: Integer; - t: Double; + CoordX2, CoordY2, CoordX3, CoordY3, CoordX4, CoordY4, CoordX5, CoordY5: Integer; // For polygons - lPoints: array of TPoint; + lPoints, pts: array of TPoint; + NumPoints: Integer; + pts3d: T3dPointsArray = nil; // for elliptical arcs BoxLeft, BoxTop, BoxRight, BoxBottom: Double; EllipseRect: TRect; @@ -3036,12 +4748,14 @@ ACanvas: TCanvas absolute ADest; {$endif} begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + PosX := 0; PosY := 0; - ADest.Brush.Style := bsClear; +// ADest.Brush.Style := bsClear; ADest.MoveTo(ADestX, ADestY); - + { // Set the path Pen and Brush options ADest.Pen.Style := Pen.Style; ADest.Pen.Width := Round(Pen.Width * AMulX); @@ -3049,8 +4763,12 @@ if (Pen.Width <= 2) and (ADest.Pen.Width > 2) then ADest.Pen.Width := 2; if (Pen.Width <= 5) and (ADest.Pen.Width > 5) then ADest.Pen.Width := 5; ADest.Pen.FPColor := AdjustColorToBackground(Pen.Color, ARenderInfo); + {$ifdef USE_LCL_CANVAS} + if (Pen.Style = psPattern) then + ACanvas.Pen.SetPattern(Pen.Pattern); + {$endif} ADest.Brush.FPColor := Brush.Color; - + } // Prepare the Clipping Region, if any {$ifdef USE_CANVAS_CLIP_REGION} if ClipPath <> nil then @@ -3062,21 +4780,53 @@ DeleteObject(ClipRegion); // debug info {$ifdef DEBUG_CANVAS_CLIP_REGION} - ConvertPathToPoints(CurPath.ClipPath, ADestX, ADestY, AMulX, AMulY, lPoints); + ConvertPathToPoints(CurPath.ClipPath, ADestX, ADestY, AMulX, AMulY); ACanvas.Polygon(lPoints); {$endif} end; {$endif} // useful in some paths, like stars! - RenderInternalPolygon(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + { -- wp: causes artifacts in case of concave path + if ADoDraw then + RenderInternalPolygon(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + } + + if CanFill then + begin + // Manually fill polygon with gradient + {$IFDEF USE_LCL_CANVAS} + if ADoDraw and (Brush.Kind in [bkHorizontalGradient, bkVerticalGradient]) then + begin + x1 := MaxInt; + y1 := MaxInt; + x2 := -MaxInt; + y2 := -MaxInt; + PrepareForSequentialReading; + for j := 0 to Len - 1 do + begin + CurSegment := TPathSegment(Next); + CoordX := CoordToCanvasX(Cur2DSegment.X, ADestX, AMulX); + CoordY := CoordToCanvasY(Cur2DSegment.Y, ADestY, AMulY); + x1 := Min(x1, CoordX); + y1 := Min(y1, CoordY); + x2 := Max(x2, CoordX); + y2 := Max(y2, CoordY); + end; + DrawBrushGradient(ADest, ARenderInfo, x1, y1, x2, y2, ADestX, ADestY, AMulX, AMulY); + end; + {$ENDIF} + end; // // For other paths, draw more carefully // - ADest.Pen.Style := Pen.Style; + ApplyPenToCanvas(ADest, ARenderInfo, Pen); // Restore pen PrepareForSequentialReading; + SetLength(lPoints, POINT_BUFFER); + NumPoints := 0; + for j := 0 to Len - 1 do begin //WriteLn('j = ', j); @@ -3085,25 +4835,64 @@ case CurSegment.SegmentType of stMoveTo: begin - CoordX := CoordToCanvasX(Cur2DSegment.X); - CoordY := CoordToCanvasY(Cur2DSegment.Y); - ADest.MoveTo(CoordX, CoordY); + CoordX := CoordToCanvasX(Cur2DSegment.X, ADestX, AMulX); + CoordY := CoordToCanvasY(Cur2DSegment.Y, ADestY, AMulY); + + if ADoDraw then + begin + // Draw previous polygon + if NumPoints > 0 then + begin + SetLength(lPoints, NumPoints); + if Length(lPoints) = 2 then + ADest.Line(lPoints[0].X, lPoints[0].Y, lPoints[1].X, lPoints[1].Y) + else + ADest.Polygon(lPoints); + // Start new polygon + SetLength(lPoints, POINT_BUFFER); + NumPoints := 0; + end; + + lPoints[0].X := CoordX; + lPoints[0].Y := CoordY; + NumPoints := 1; + end; + + + { + if ADoDraw then + ADest.MoveTo(CoordX, CoordY); + } + CalcEntityCanvasMinMaxXY(ARenderInfo, CoordX, CoordY); PosX := Cur2DSegment.X; PosY := Cur2DSegment.Y; {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} - Write(Format(' M%d,%d', [CoordY, CoordY])); + Write(Format(' M%d,%d', [CoordX, CoordY])); {$endif} end; + // This element can override temporarely the Pen + + // TO DO: Paint these segments with correct pen at end !!!! + + st2DLineWithPen: begin ADest.Pen.FPColor := AdjustColorToBackground(T2DSegmentWithPen(Cur2DSegment).Pen.Color, ARenderInfo); - - CoordX := CoordToCanvasX(PosX); - CoordY := CoordToCanvasY(PosY); - CoordX2 := CoordToCanvasX(Cur2DSegment.X); - CoordY2 := CoordToCanvasY(Cur2DSegment.Y); - ADest.Line(CoordX, CoordY, CoordX2, CoordY2); + CoordX := CoordToCanvasX(PosX, ADestX, AMulX); + CoordY := CoordToCanvasY(PosY, ADestY, AMulY); + CoordX2 := CoordToCanvasX(Cur2DSegment.X, ADestX, AMulX); + CoordY2 := CoordToCanvasY(Cur2DSegment.Y, ADestY, AMulY); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, CoordX, CoordY, CoordX2, CoordY2); + if ADoDraw then + begin + if NumPoints >= Length(lPoints) then + SetLength(lPoints, Length(lPoints) + POINT_BUFFER); + lPoints[NumPoints].X := CoordX2; + lPoints[NumPoints].Y := CoordY2; + inc(NumPoints); +// ADest.Line(CoordX, CoordY, CoordX2, CoordY2); + end; PosX := Cur2DSegment.X; PosY := Cur2DSegment.Y; @@ -3111,117 +4900,167 @@ ADest.Pen.FPColor := Pen.Color; {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} - Write(Format(' L%d,%d', [CoordToCanvasX(Cur2DSegment.X), CoordToCanvasY(Cur2DSegment.Y)])); + Write(Format(' L%d,%d', [CoordX2, CoordY2])); {$endif} end; + st2DLine, st3DLine: begin - CoordX := CoordToCanvasX(PosX); - CoordY := CoordToCanvasY(PosY); - CoordX2 := CoordToCanvasX(Cur2DSegment.X); - CoordY2 := CoordToCanvasY(Cur2DSegment.Y); - ADest.Line(CoordX, CoordY, CoordX2, CoordY2); + CoordX := CoordToCanvasX(PosX, ADestX, AMulX); + CoordY := CoordToCanvasY(PosY, ADestY, AMulY); + CoordX2 := CoordToCanvasX(Cur2DSegment.X, ADestX, AMulX); + CoordY2 := CoordToCanvasY(Cur2DSegment.Y, ADestY, AMulY); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, CoordX, CoordY, CoordX2, CoordY2); + if ADoDraw then + begin + if NumPoints >= Length(lPoints) then + SetLength(lPoints, Length(lPoints) + POINT_BUFFER); + lPoints[NumPoints].X := CoordX2; + lPoints[NumPoints].Y := CoordY2; + inc(NumPoints); +// ADest.Line(CoordX, CoordY, CoordX2, CoordY2); + end; PosX := Cur2DSegment.X; PosY := Cur2DSegment.Y; {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} - Write(Format(' L%d,%d', [CoordX, CoordY])); + Write(Format(' L%d,%d', [CoordX2, CoordY2])); {$endif} end; + { To draw a bezier we need to divide the interval in parts and make lines between this parts } st2DBezier, st3DBezier: begin - CoordX := CoordToCanvasX(PosX); - CoordY := CoordToCanvasY(PosY); - CoordX2 := CoordToCanvasX(Cur2DBSegment.X2); - CoordY2 := CoordToCanvasY(Cur2DBSegment.Y2); - CoordX3 := CoordToCanvasX(Cur2DBSegment.X3); - CoordY3 := CoordToCanvasY(Cur2DBSegment.Y3); - CoordX4 := CoordToCanvasX(Cur2DBSegment.X); - CoordY4 := CoordToCanvasY(Cur2DBSegment.Y); - SetLength(lPoints, 0); + CoordX := CoordToCanvasX(PosX, ADestX, AMulX); + CoordY := CoordToCanvasY(PosY, ADestY, AMulY); + CoordX2 := CoordToCanvasX(Cur2DBSegment.X2, ADestX, AMulX); + CoordY2 := CoordToCanvasY(Cur2DBSegment.Y2, ADestY, AMulY); + CoordX3 := CoordToCanvasX(Cur2DBSegment.X3, ADestX, AMulX); + CoordY3 := CoordToCanvasY(Cur2DBSegment.Y3, ADestY, AMulY); + CoordX4 := CoordToCanvasX(Cur2DBSegment.X, ADestX, AMulX); + CoordY4 := CoordToCanvasY(Cur2DBSegment.Y, ADestY, AMulY); +// SetLength(lPoints, 0); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, CoordX, CoordY, CoordX2, CoordY2); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, CoordX3, CoordY3, CoordX4, CoordY4); + SetLength(pts, 0); AddBezierToPoints( Make2DPoint(CoordX, CoordY), Make2DPoint(CoordX2, CoordY2), Make2DPoint(CoordX3, CoordY3), Make2DPoint(CoordX4, CoordY4), - lPoints + pts //lPoints ); + if ADoDraw then + begin + if NumPoints + Length(pts) >= POINT_BUFFER then + SetLength(lPoints, NumPoints + Length(pts)); + for i:=0 to High(pts) do + begin + lPoints[NumPoints].X := pts[i].X; + lPoints[NumPoints].Y := pts[i].Y; + inc(numPoints); + end; + end; + ADest.Brush.Style := Brush.Style; - if Length(lPoints) >= 3 then + { + if (Length(lPoints) >= 3) and ADoDraw then ADest.Polygon(lPoints); - + } PosX := Cur2DSegment.X; PosY := Cur2DSegment.Y; {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} Write(Format(' ***C%d,%d %d,%d %d,%d %d,%d', - [CoordToCanvasX(PosX), CoordToCanvasY(PosY), - CoordToCanvasX(Cur2DBSegment.X2), CoordToCanvasY(Cur2DBSegment.Y2), - CoordToCanvasX(Cur2DBSegment.X3), CoordToCanvasY(Cur2DBSegment.Y3), - CoordToCanvasX(Cur2DBSegment.X), CoordToCanvasY(Cur2DBSegment.Y)])); + [CoordToCanvasX(PosX, ADestX, AMulX), CoordToCanvasY(PosY, ADestY, AMulY), + CoordToCanvasX(Cur2DBSegment.X2, ADestX, AMulX), CoordToCanvasY(Cur2DBSegment.Y2, ADestY, AMulY), + CoordToCanvasX(Cur2DBSegment.X3, ADestX, AMulX), CoordToCanvasY(Cur2DBSegment.Y3, ADestY, AMulY), + CoordToCanvasX(Cur2DBSegment.X, ADestX, AMulX), CoordToCanvasY(Cur2DBSegment.Y, ADestY, AMulY)])); {$endif} end; - // Alligned Ellipse equation: - // x^2 / RX^2 + Y^2 / RY^2 = 1 - // - // Rotated Ellipse equation: - // (xcosθ+ysinθ)^2 / RX^2 + (ycosθ−xsinθ)^2 / RY^2 = 1 - // - // parametrized: - // x = Cx + a*cos(t)*cos(phi) - b*sin(t)*sin(phi) [1] - // y = Cy + b*sin(t)*cos(phi) + a*cos(t)*sin(phi) [2] - // ...where ellipse has centre (h,k) semimajor axis a and semiminor axis b, and is rotated through angle phi. - // - // You can then differentiate and solve for gradient = 0: - // 0 = dx/dt = -a*sin(t)*cos(phi) - b*cos(t)*sin(phi) - // => tan(t) = -b*tan(phi)/a [3] - // => t = arctan(-b*tan(phi)/a) + n*Pi [4] - // - // calculate some values of t for n in -2, -1, 0, 1, 2 and see which are the smaller, bigger ones - // done! + st2DEllipticalArc: begin - CoordX := CoordToCanvasX(PosX); - CoordY := CoordToCanvasY(PosY); - CoordX2 := CoordToCanvasX(Cur2DArcSegment.RX); - CoordY2 := CoordToCanvasY(Cur2DArcSegment.RY); - CoordX3 := CoordToCanvasX(Cur2DArcSegment.XRotation); - CoordX4 := CoordToCanvasX(Cur2DArcSegment.X); - CoordY4 := CoordToCanvasY(Cur2DArcSegment.Y); - SetLength(lPoints, 0); + CoordX := CoordToCanvasX(PosX, ADestX, AMulX); // start point of segment + CoordY := CoordToCanvasY(PosY, ADestY, AMulY); + CoordX2 := CoordToCanvasX(Cur2DArcSegment.RX, ADestX, AMulX); // major axis radius + CoordY2 := CoordToCanvasY(Cur2DArcSegment.RY, ADestY, AMulY); // minor axis radius + CoordX3 := CoordToCanvasX(Cur2DArcSegment.XRotation, 0, sign(AMulX)); // axis rotation angle + CoordX4 := CoordToCanvasX(Cur2DArcSegment.X, ADestX, AMulX); // end point of segment + CoordY4 := CoordToCanvasY(Cur2DArcSegment.Y, ADestY, AMulY); + CoordX5 := CoordToCanvasX(Cur2DArcSegment.Cx, ADestX, AMulX); // Ellipse center + CoordY5 := CoordToCanvasY(Cur2DArcSegment.Cy, ADestY, AMulY); +// SetLength(lPoints, 0); Cur2DArcSegment.CalculateEllipseBoundingBox(nil, BoxLeft, BoxTop, BoxRight, BoxBottom); - EllipseRect.Left := CoordToCanvasX(BoxLeft); - EllipseRect.Top := CoordToCanvasY(BoxTop); - EllipseRect.Right := CoordToCanvasX(BoxRight); - EllipseRect.Bottom := CoordToCanvasY(BoxBottom); + EllipseRect.Left := CoordToCanvasX(BoxLeft, ADestX, AMulX); + EllipseRect.Top := CoordToCanvasY(BoxTop, ADestY, AMulY); + EllipseRect.Right := CoordToCanvasX(BoxRight, ADestX, AMulX); + EllipseRect.Bottom := CoordToCanvasY(BoxBottom, ADestY, AMulY); {$ifdef FPVECTORIAL_TOCANVAS_ELLIPSE_VISUALDEBUG} ACanvas.Pen.Color := clRed; ACanvas.Brush.Style := bsClear; - ACanvas.Rectangle( + ACanvas.Rectangle( // Ellipse bounding box EllipseRect.Left, EllipseRect.Top, EllipseRect.Right, EllipseRect.Bottom); + ACanvas.Line(CoordX5-5, CoordY5, CoordX5+5, CoordY5); // Ellipse center + ACanvas.Line(CoordX5, CoordY5-5, CoordX5, CoordY5+5); + ACanvas.Pen.Color := clBlue; + ACanvas.Line(CoordX-5, CoordY, CoordX+5, CoordY); // Start point + ACanvas.Line(CoordX, CoordY-5, CoordX, CoordY+5); + ACanvas.Line(CoordX4-5, CoordY4, CoordX4+5, CoordY4); // End point + ACanvas.Line(CoordX4, CoordY4-5, CoordX4, CoordY4+5); + {$endif} - ADest.Brush.Style := Brush.Style; +// ADest.Brush.Style := Brush.Style; + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, + EllipseRect.Left, EllipseRect.Top, EllipseRect.Right, EllipseRect.Bottom); - // Arc draws counterclockwise - if Cur2DArcSegment.ClockwiseArcFlag then - begin - ACanvas.Arc( - EllipseRect.Left, EllipseRect.Top, EllipseRect.Right, EllipseRect.Bottom, - CoordX4, CoordY4, CoordX, CoordY); - end - else + if ADoDraw then begin - ACanvas.Arc( - EllipseRect.Left, EllipseRect.Top, EllipseRect.Right, EllipseRect.Bottom, - CoordX, CoordY, CoordX4, CoordY4); + Cur2DArcSegment.PolyApproximate(pts3D); +// Cur2DArcSegment.BezierApproximate(pts3D); + if NumPoints + Length(pts3D) >= POINT_BUFFER then + SetLength(lPoints, NumPoints + Length(pts3D)); + for i:=1 to High(pts3D) do // i=0 is end point of prev segment -> we can skip it. + begin + lPoints[NumPoints].X := CoordToCanvasX(pts3D[i].X, ADestX, AMulX); + lPoints[NumPoints].Y := CoordToCanvasY(pts3D[i].Y, ADestY, AMulY); + inc(numPoints); + end; + { + SetLength(lPoints, Length(pts3D)); + for i:=0 to High(pts3D) do + begin + lPoints[i].X := CoordToCanvasX(pts3D[i].X, ADestX, AMulX); + lPoints[i].Y := CoordToCanvasY(pts3D[i].Y, ADestY, AMulY); + end; + ADest.Polygon(lPoints); + } + { + i := 0; + while i < Length(lPoints) do + begin + ADest.Polygon([lPoints[i], lPoints[i+1], lPoints[i+2], lPoints[i+3]]); + inc(i, 4); + end; + } + { + // Arc draws counterclockwise + if Cur2DArcSegment.ClockwiseArcFlag then + ACanvas.Arc( + EllipseRect.Left, EllipseRect.Top, EllipseRect.Right, EllipseRect.Bottom, + CoordX4, CoordY4, CoordX, CoordY) + else + ACanvas.Arc( + EllipseRect.Left, EllipseRect.Top, EllipseRect.Right, EllipseRect.Bottom, + CoordX, CoordY, CoordX4, CoordY4); + end; + } end; - PosX := Cur2DArcSegment.X; PosY := Cur2DArcSegment.Y; @@ -3239,6 +5078,15 @@ WriteLn(''); {$endif} + // Draw polygon + if ADoDraw then begin + SetLength(lPoints, NumPoints); + if Length(lPoints) = 2 then + ADest.Line(lPoints[0].X, lPoints[0].Y, lPoints[1].X, lPoints[1].Y) + else + ADest.Polygon(lPoints); + end; + // Restores the previous Clip Region {$ifdef USE_CANVAS_CLIP_REGION} if ClipPath <> nil then @@ -3247,6 +5095,7 @@ end; {$endif} end; + *) procedure TPath.RenderInternalPolygon(ADest: TFPCustomCanvas; ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; AMulX: Double; @@ -3263,7 +5112,7 @@ end; var - j, k: Integer; + j: Integer; CoordX, CoordY: Integer; CurSegment: TPathSegment; Cur2DSegment: T2DSegment absolute CurSegment; @@ -3374,29 +5223,31 @@ inherited Destroy; end; -function TvText.TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; +function TvText.TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; var lProximityFactor: Integer; begin - lProximityFactor := 5; + lProximityFactor := ASnapFlexibility; if (APos.X > X - lProximityFactor) and (APos.X < X + lProximityFactor) and (APos.Y > Y - lProximityFactor) and (APos.Y < Y + lProximityFactor) then Result := vfrFound else Result := vfrNotFound; end; -procedure TvText.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, +procedure TvText.CalculateBoundingBox(ADest: TFPCustomCanvas; out ALeft, ATop, ARight, ABottom: Double); var i: Integer; lSize: TSize; lWidth, lHeight: Integer; lRenderInfo: TvRenderInfo; + lText: String; {$ifdef USE_LCL_CANVAS} ACanvas: TCanvas absolute ADest; {$endif} begin - inherited Render(ADest, lRenderInfo, 0, 0, 0, 0); + //lText := Value.Text; // For debugging + inherited Render(ADest, lRenderInfo, 0, 0, 1, 1, False); ALeft := X; ATop := Y; @@ -3408,9 +5259,11 @@ for i := 0 to Value.Count-1 do begin - lSize := ACanvas.TextExtent(Value.Strings[i]); - lHeight := lHeight + lSize.cy + 2; + lText := Value.Strings[i]; + lSize := ACanvas.TextExtent(lText); lWidth := Max(lWidth, lSize.cx); + lSize := ACanvas.TextExtent(Str_Line_Height_Tester); + lHeight := lHeight + lSize.cy + 2; end; ALeft := X; @@ -3420,88 +5273,138 @@ end; procedure TvText.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); - - function CoordToCanvasX(ACoord: Double): Integer; - begin - Result := Round(ADestX + AmulX * ACoord); - end; - - function CoordToCanvasY(ACoord: Double): Integer; - begin - Result := Round(ADestY + AmulY * ACoord); - end; - + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); +const + LINE_SPACING = 0.2; // fraction of font height for line spacing var i: Integer; // - LowerDim: T3DPoint; + pt, refPt: TPoint; + LowerDimY: Double; XAnchorAdjustment: Integer; - lLongestLine, lLineWidth: Integer; + lLongestLine, lLineWidth, lFontSizePx, lFontDescenderPx: Integer; lText: string; + lDescender: Integer; + phi: Double; {$ifdef USE_LCL_CANVAS} ACanvas: TCanvas absolute ADest; lTextSize: TSize; + lTextWidth: Integer; + tm: TLCLTextMetric; {$endif} begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + lText := Value.Text + Format(' F=%d', [ADest.Font.Size]); // for debugging + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); - ARenderInfo.EntityCanvasMinXY := Point(-1, -1); - ARenderInfo.EntityCanvasMaxXY := Point(-1, -1); + InitializeRenderInfo(ARenderInfo); // Don't draw anything if we have alpha=zero if Font.Color.Alpha = 0 then Exit; + ADest.Font.FPColor := AdjustColorToBackground(Font.Color, ARenderInfo); + + // Font metric + lFontSizePx := Font.Size; // is without multiplier! + if lFontSizePx = 0 then lFontSizePx := 10; + lTextSize := ADest.TextExtent(Str_Line_Height_Tester); + lDescender := (lTextSize.CY - lFontSizePx) div 2; // rough estimate only + {$IFDEF USE_LCL_CANVAS} + if ACanvas.GetTextMetrics(tm) then + lDescender := tm.Descender; + {$ENDIF} + + // Angle of text rotation + phi := sign(AMulY) * DegToRad(Font.Orientation); + + // Reference point of the entity (X,Y) in pixels + // rotation center in case of rotated text + refPt := Point( + round(CoordToCanvasX(X, ADestX, AMulX)), + round(CoordToCanvasY(Y, ADestY, AMulY)) + ); // if an anchor is set, use it // to do this, first search for the longest line - lLongestLine := 0; - for i := 0 to Value.Count - 1 do + XAnchorAdjustment := 0; + if TextAnchor <> vtaStart then begin - lLineWidth := ACanvas.TextWidth(Value.Strings[i]); - if lLineWidth > lLongestLine then - lLongestLine := lLineWidth; - end; - case TextAnchor of - vtaMiddle: XAnchorAdjustment := -1 * lLongestLine div 2; - vtaEnd: XAnchorAdjustment := -1 * lLongestLine; - else - XAnchorAdjustment := 0; + lLongestLine := 0; + for i := 0 to Value.Count - 1 do + begin + lLineWidth := ACanvas.TextWidth(Value.Strings[i]); // contains multiplier + if lLineWidth > lLongestLine then + lLongestLine := lLineWidth; + end; + case TextAnchor of + vtaMiddle : XAnchorAdjustment := -lLongestLine div 2; + vtaEnd : XAnchorAdjustment := -lLongestLine; + end; end; + // Begin first line at reference point and grow downwards. + lowerDimY := IfThen(AMulY < 0, refPt.Y - (lTextSize.CY - lDescender), refPt.Y); +{ + // We need to keep the order of lines drawing correct regardless of + // the drawing direction + if AMulY < 0 then + lowerDim.Y := refPt.Y + lFontSizePx * (1 + LINE_SPACING) * Value.Count * AMulY else + lowerDim.Y := refPt.Y; + } // TvText supports multiple lines for i := 0 to Value.Count - 1 do begin - if Font.Size = 0 then - LowerDim.Y := CoordToCanvasY(Y) + 12 * (i - Value.Count) - else - begin - LowerDim.Y := Y + Font.Size * 1.2 * (Value.Count - i); - LowerDim.Y := CoordToCanvasY(LowerDim.Y); - end; - - ADest.Font.FPColor := AdjustColorToBackground(Font.Color, ARenderInfo); lText := Value.Strings[i]; if not Render_Use_NextText_X then - Render_NextText_X := CoordToCanvasX(X)+XAnchorAdjustment; - ADest.TextOut(Render_NextText_X, Round(LowerDim.Y), lText); + Render_NextText_X := refPt.X + XAnchorAdjustment; + + // Start point of text, rotated around the reference point + pt := Point(round(Render_NextText_X), round(LowerDimY)); // before rotation + pt := Rotate2dPoint(pt, refPt, -Phi); // after rotation + + // Paint line + if ADoDraw then + ADest.TextOut(pt.x, pt.y, lText); - CalcEntityCanvasMinMaxXY(ARenderInfo, Render_NextText_X, Round(LowerDim.Y)); + // Calc text boundaries respecting text rotation. + CalcEntityCanvasMinMaxXY(ARenderInfo, pt.x, pt.y); lTextSize := ACanvas.TextExtent(lText); - CalcEntityCanvasMinMaxXY(ARenderInfo, Render_NextText_X+lTextSize.cx, - Round(LowerDim.Y)+lTextSize.cy); + lTextWidth := lTextSize.cx; + // other end of the text + pt := Point(round(Render_NextText_X) + lTextWidth, round(LowerDimY) + lTextSize.cy ); + pt := Rotate2dPoint(pt, refPt, -Phi); + CalcEntityCanvasMinMaxXY(ARenderInfo, pt.x, pt.y); - Render_NextText_X := Render_NextText_X + lTextSize.cx; + // Prepare next line + Render_NextText_X := Render_NextText_X + lTextWidth; + LowerDimY := LowerdimY - (lFontSizePx * (1 + LINE_SPACING) * AMulY); end; end; +function TvText.GetEntityFeatures(ADest: TFPCustomCanvas): TvEntityFeatures; +var + ActualText: String; + lHeight_px: Integer; +begin + Result.DrawsUpwardHeightAdjustment := 0; + if Value.Count > 0 then + begin + ActualText := Value.Text; + Value.Text := Value.Strings[0]; + CalculateHeightInCanvas(ADest, lHeight_px); + Result.DrawsUpwardHeightAdjustment := lHeight_px; + Value.Text := ActualText; + end; + Result.DrawsUpwards := True; +end; + function TvText.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; var - lStr: string; + lStr, lValueStr: string; begin + lValueStr := GenerateDebugStrForString(Value.Text); lStr := Format('[%s] Name=%s X=%f Y=%f Text="%s" [.Font=>] Color=%s Size=%d Name=%s Orientation=%f Bold=%s Italic=%s Underline=%s StrikeThrough=%s TextAnchor=%s', [ - Self.ClassName, Name, X, Y, Value.Text, + Self.ClassName, Name, X, Y, lValueStr, GenerateDebugStrForFPColor(Font.Color), Font.Size, Font.Name, Font.Orientation, BoolToStr(Font.Bold), @@ -3518,35 +5421,138 @@ end; end; -{ TvCircle } +{ TvCurvedText } -procedure TvCircle.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); +procedure TvCurvedText.Render(ADest: TFPCustomCanvas; + var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; + AMulX: Double; AMulY: Double; ADoDraw: Boolean); +var + i, lCharLen: Integer; + lText, lUTF8Char: string; + lX, lY, lTangentAngle, lTextHeight: Double; + pt: TPoint; + //lLeft, lTop, lWidth, lHeight: Integer; +begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, False); - function CoordToCanvasX(ACoord: Double): Integer; + InitializeRenderInfo(ARenderInfo); + (* + if not ADoDraw then begin - Result := Round(ADestX + AmulX * ACoord); + //Path.CalculateSizeInCanvas(ADest, lLeft, lTop, lWidth, lHeight); + Exit; + end; *) + + // Don't draw anything if we have alpha=zero + if Font.Color.Alpha = 0 then Exit; + if Path = nil then Exit; + + ADest.Font.FPColor := AdjustColorToBackground(Font.Color, ARenderInfo); + if Value.Count = 0 then Exit; + lText := Value.Strings[0]; + Render_NextText_X := CoordToCanvasX(X, ADestX, AMulX); + + Path.PrepareForWalking(); + Path.NextWalk(0, lX, lY, lTangentAngle); + + // render each character separately + for i := 0 to UTF8Length(lText)-1 do + begin + lUTF8Char := UTF8Copy(lText, i+1, 1); + ADest.Font.Orientation := Round(Math.radtodeg(lTangentAngle)*10); + + // Without adjustment the text is down bellow the path, but we want it on top of it + {lTextHeight := Abs(AMulY) * ADest.TextHeight(lUTF8Char); + lX := lX - Sin(Pi / 2 - lTangentAngle) * lTextHeight; + lY := lY + Cos(Pi / 2 - lTangentAngle) * lTextHeight;} + + pt := Point(CoordToCanvasX(lX, ADestX, AMulX), CoordToCanvasY(lY, ADestY, AMulY)); + CalcEntityCanvasMinMaxXY(ARenderInfo, pt.x, pt.y); + + if ADoDraw then + ADest.TextOut(pt.X, pt.Y, lUTF8Char); + + lCharLen := ADest.TextWidth(lUTF8Char); + Path.NextWalk(lCharLen, lX, lY, lTangentAngle); end; +end; - function CoordToCanvasY(ACoord: Double): Integer; +function TvCurvedText.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; + APageItem: Pointer): Pointer; +begin + Result:=inherited GenerateDebugTree(ADestRoutine, APageItem); + if Path <> nil then + Path.GenerateDebugTree(ADestRoutine, Result); +end; + +{ TvField } + +constructor TvField.Create(APage: TvPage); +begin + inherited Create(APage); + + DateFormat := 'dd/MM/yyyy hh:mm:ss'; + NumberFormat := vnfDecimal; +end; + +{ TvCircle } + +procedure TvCircle.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); +begin + ALeft := X - Radius; + ARight := X + Radius; + ATop := Y + Radius; + ABottom := Y - Radius; +end; + +function TvCircle.CreatePath: TPath; +begin + Result := TPath.Create(FPage); + Result.AppendMoveToSegment(X + Radius, Y); + Result.AppendEllipticalArcWithCenter(Radius, Radius, 0, X - Radius, Y, X, Y, true); + Result.AppendEllipticalArcWithCenter(Radius, Radius, 0, X + Radius, Y, X, Y, true); +end; + +procedure TvCircle.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); +var + x1, y1, x2, y2: Integer; +begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + + x1 := CoordToCanvasX(X - Radius, ADestX, AMulX); + y1 := CoordToCanvasY(Y - Radius, ADestY, AMulY); + x2 := CoordToCanvasX(X + Radius, ADestX, AMulX); + y2 := CoordToCanvasY(Y + Radius, ADestY, AMulY); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, x1, y1, x2, y2); + + if ADoDraw then begin - Result := Round(ADestY + AmulY * ACoord); + if Brush.Kind <> bkSimpleBrush then + // Draw gradient and border + DrawBrushGradient(ADest, ARenderInfo, x1, y1, x2, y2, ADestX, ADestY, AMulX, AMulY) + else + // Draw uniform fill and border + DrawBrush(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly); end; +end; +procedure TvCircle.Rotate(AAngle: Double; ABase: T3DPoint); +var + ctr: T3dPoint; begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - ADest.Ellipse( - CoordToCanvasX(X - Radius), - CoordToCanvasY(Y - Radius), - CoordToCanvasX(X + Radius), - CoordToCanvasY(Y + Radius) - ); + ctr := Rotate3dPointInXY(Make3dPoint(X,Y), ABase, -AAngle); + // use inverted angle due to sign convention in Rotate3DPointInXY + X := ctr.X; + Y := ctr.Y; end; + { TvCircularArc } procedure TvCircularArc.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -3566,7 +5572,7 @@ ALCLDest: TCanvas absolute ADest; {$endif} begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); {$ifdef USE_LCL_CANVAS} // ToDo: Consider a X axis inversion // If the Y axis is inverted, then we need to mirror our angles as well @@ -3631,48 +5637,129 @@ {$endif} end; + { TvEllipse } -procedure TvEllipse.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, ABottom: Double); +function TvEllipse.CreatePath: TPath; +var + p1, p2: T2dPoint; +begin + Result := TPath.Create(FPage); + + CalcEllipsePoint(0, HorzHalfAxis,VertHalfAxis, X,Y, Angle, p1.x, p1.y); + CalcEllipsePoint(pi, HorzHalfAxis,VertHalfAxis, X,Y, Angle, p2.x, p2.y); + + Result.AppendMoveToSegment(p1.x, p1.y); + Result.AppendEllipticalArcWithCenter(HorzHalfAxis, VertHalfAxis, Angle, p2.x, p2.y, X, Y, false); + Result.AppendEllipticalArcWithCenter(HorzHalfAxis, VertHalfAxis, Angle, p1.x, p1.y, X, Y, false); +end; + +// wp: no longer needed +function TvEllipse.GetLineIntersectionPoints(ACoord: Double; ACoordIsX: Boolean): TDoubleDynArray; +begin + SetLength(Result, 2); + // this is for axis-aligned ellipses + // (X-Xcenter)^2 / Rx^2 + (Y-Ycenter)^2 / Ry^2 <= 1 + if ACoordIsX then + begin + // Y = sqrt( 1 - (X-Xcenter)^2 / Rx^2 ) * Ry + Ycenter + Result[0] := Max(0, 1-sqr(ACoord-X) / sqr(HorzHalfAxis)); + Result[0] := sqrt(Result[0]) * VertHalfAxis + Y; + Result[1] := Max(0, 1-sqr(ACoord-X) / sqr(HorzHalfAxis)); + Result[1] := -1 * sqrt(Result[1]) * VertHalfAxis + Y; + end + else + begin + Result[0] := Max(0, 1-sqr(ACoord-Y) / sqr(VertHalfAxis)); + Result[0] := sqrt(Result[0]) * HorzHalfAxis + X; + Result[1] := Max(0, 1-sqr(ACoord-Y) / sqr(VertHalfAxis)); + Result[1] := -1 * sqrt(Result[1]) * HorzHalfAxis + X; + end; +end; + +function TvEllipse.TryToSelect(APos: TPoint; var ASubpart: Cardinal; + ASnapFlexibility: Integer): TvFindEntityResult; +begin + // this is for axis-aligned ellipses + // (X-Xcenter)^2 / Rx^2 + (Y-Ycenter)^2 / Ry^2 <= 1 + Result := vfrNotFound; + //Result := vfrFound; +end; + +procedure TvEllipse.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); var t, tmp: Double; begin - // First do the trivial - ALeft := X - HorzHalfAxis; - ARight := X + HorzHalfAxis; - ATop := Y - VertHalfAxis; - ABottom := Y + VertHalfAxis; - { - To calculate the bounding rectangle we can do this: + { To calculate the bounding rectangle we can do this: - Ellipse equations:You could try using the parametrized equations for an ellipse rotated at an arbitrary angle: + Ellipse equations: + You could try using the parametrized equations for an ellipse rotated by + an arbitrary angle: - x = CenterX + MajorHalfAxis*cos(t)*cos(Angle) - MinorHalfAxis*sin(t)*sin(Angle) - y = CenterY + MinorHalfAxis*sin(t)*cos(Angle) + MajorHalfAxis*cos(t)*sin(Angle) + x = cx + a*cos(t)*cos(Angle) - b*sin(t)*sin(Angle) + y = cy + b*sin(t)*cos(Angle) + a*cos(t)*sin(Angle) You can then differentiate and solve for gradient = 0: - 0 = dx/dt = -MajorHalfAxis*sin(t)*cos(Angle) - MinorHalfAxis*cos(t)*sin(Angle) - => - tan(t) = -MinorHalfAxis*tan(Angle)/MajorHalfAxis - => - t = cotang(-MinorHalfAxis*tan(Angle)/MajorHalfAxis) + 0 = dx/dt = -a*sin(t)*cos(Angle) - b*cos(t)*sin(Angle) + ==> tan(t) = -b*tan(Angle)/a + ==> t = arctan(-b*tan(Angle)/a) + ==> left and right corner of bounding box On the other axis: - - 0 = dy/dt = b*cos(t)*cos(phi) - a*sin(t)*sin(phi) - => - tan(t) = b*cot(phi)/a + 0 = dy/dt = b*cos(t)*cos(Angle) - a*sin(t)*sin(Angle) + ==> tan(t) = b*cot(Angle)/a + ==> t = arctan(b*cot(Angle)/a) + ==> top and bottom corner of bounding box } if Angle <> 0.0 then begin - t := cotan(-VertHalfAxis*tan(Angle)/HorzHalfAxis); - tmp := X + HorzHalfAxis*cos(t)*cos(Angle) - VertHalfAxis*sin(t)*sin(Angle); - ARight := Round(tmp); + t := arctan(-VertHalfAxis*tan(Angle)/HorzHalfAxis); + tmp := abs(HorzHalfAxis*cos(t)*cos(Angle) - VertHalfAxis*sin(t)*sin(Angle)); + ALeft := X - Round(tmp); + ARight := X + Round(tmp); + t := arctan(VertHalfAxis*cot(Angle) / HorzHalfAxis); + tmp := abs(VertHalfAxis*sin(t)*cos(Angle) + HorzHalfAxis*cos(t)*sin(Angle)); + ATop := Y + Round(tmp); + ABottom := Y - Round(tmp); + end else + begin + ALeft := X - HorzHalfAxis; + ARight := X + HorzHalfAxis; + ATop := Y + VertHalfAxis; // wp: changed from - to + + ABottom := Y - VertHalfAxis; // ... and this from + to - end; end; +procedure TvEllipse.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + ADestX, ADestY: Integer; AMulX, AMulY: Double; ADoDraw: Boolean); +var + x1, y1, x2, y2: Integer; + fx1, fx2, fy1, fy2: Double; +begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + + CalculateBoundingBox(ADest, fx1, fy1, fx2, fy2); + x1 := CoordToCanvasX(fx1, ADestX, AMulX); + x2 := CoordToCanvasX(fx2, ADestX, AMulX); + y1 := CoordToCanvasY(fy1, ADestY, AMulY); + y2 := CoordToCanvasY(fy2, ADestY, AMulY); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, x1, y1, x2, y2); + + if ADoDraw then + begin + if Brush.Kind <> bkSimpleBrush then + // Draw gradient and border + DrawBrushGradient(ADest, ARenderInfo, x1, y1, x2, y2, ADestX, ADestY, AMulX, AMulY) + else + // Draw uniform fill and border + DrawBrush(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly); +// ADest.Ellipse(x1, y1, x2, y2); + end; +end; + (* procedure TvEllipse.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -3693,7 +5780,7 @@ ALCLDest: TCanvas absolute ADest; {$endif} begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); CalculateBoundingBox(ADest, fx1, fy1, fx2, fy2); x1 := CoordToCanvasX(fx1); @@ -3720,36 +5807,169 @@ // Conrollpoint of secondpart endpoint PointList[6] := PointList[0]; // Endpoint of // Back to the startpoint - ALCLDest.PolyBezier(Pointlist[0]); + if ADoDraw then + ALCLDest.PolyBezier(Pointlist[0]); end else {$endif} begin - ADest.Ellipse(x1, y1, x2, y2); + if ADoDraw then ADest.Ellipse(x1, y1, x2, y2); end; // Apply brush gradient - if Brush.Kind in [bkHorizontalGradient, bkVerticalGradient] then + if x1 > x2 then + begin + dk := x1; + x1 := x2; + x2 := dk; + end; + if y1 > y2 then begin - {PrepareBrushBitmap(x2, y2); - BrushBitmap.Canvas.Ellipse(0, 0, x2-x1, y2-y1); - AlphaBlendBrushBitmap(ADest, x1, y1); - FreeAndNil(BrushBitmap);} + dk := y1; + y1 := y2; + y2 := dk; end; + DrawBrushGradient(ADest, ARenderInfo, x1, y1, x2, y2, ADestX, ADestY, AMulX, AMulY); + + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, x1, y1, x2, y2); +end; *) + +procedure TvEllipse.Rotate(AAngle: Double; ABase: T3DPoint); +var + ctr: T3dPoint; +begin + ctr := Rotate3dPointInXY(Make3dPoint(X,Y), ABase, -AAngle); + // use inverted angle due to sign convention in Rotate3DPointInXY + X := ctr.X; + Y := ctr.Y; + Angle := AAngle + Angle; end; + { TvRectangle } -procedure TvRectangle.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, - ATop, ARight, ABottom: Double); +procedure TvRectangle.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); +var + pts: Array[0..3] of T3DPoint; + j: Integer; begin - ALeft := X; - ARight := X + CX; - ATop := Y; - ABottom := Y - CY; + if Angle <> 0 then + begin + pts[0] := Make3dPoint(X, Y); // corner points, ignoring rounded corner! + pts[1] := Make3dPoint(X+CX, Y); + pts[2] := Make3dPoint(X+CX, Y-CY); + pts[3] := Make3dPoint(X, Y-CY); + for j:=0 to High(pts) do + pts[j] := Rotate3DPointInXY(pts[j], pts[0], -Angle); // left/top is rot center! + // Use inverted angle due to sign convention in Rotate3DPointInXY + ALeft := pts[0].x; + ARight := Pts[0].x; + ATop := pts[0].y; + ABottom := pts[0].y; + for j:=1 to High(pts) do + begin + ALeft := Min(ALeft, pts[j].x); + ARight := Max(ARight, pts[j].x); + ATop := Max(ATop, pts[j].y); + ABottom := Min(ABottom, pts[j].y); + end; + end else + begin + ALeft := X; + ATop := Y; + ARight := X + CX; + ABottom := Y - CY; + end; +end; + +function TvRectangle.CreatePath: TPath; +var + pts: T3dPointsArray; + ctr: T3dPoint; + j: Integer; + phi: Double; +begin + if (RX > 0) and (RY > 0) then + begin + SetLength(pts, 9); + pts[0] := Make3dPoint(X, Y-RY); + pts[1] := Make3dPoint(X+RX, Y); + pts[2] := Make3dPoint(X+CX-RX, Y); + pts[3] := Make3dPoint(X+CX, Y-RY); + pts[4] := Make3dPoint(X+CX, Y-CY+RY); + pts[5] := Make3dPoint(X+CX-RX, Y-CY); + pts[6] := Make3dPoint(X+RX, Y-CY); + pts[7] := Make3dPoint(X, Y-CY+RY); + pts[8] := Make3dPoint(X, Y-RY); + end else + begin + SetLength(pts, 5); + pts[0] := Make3dPoint(X, Y); + pts[1] := Make3dPoint(X+CX, Y); + pts[2] := Make3dPoint(X+CX, Y-CY); + pts[3] := Make3dPoint(X, Y-CY); + pts[4] := Make3dPoint(X, Y); + end; + ctr := Make3DPoint(X, Y); // Rotation center + phi := -Angle; // Angle must be inverted due to sign convention in Rotate3DPointInXY + for j:=0 to High(pts) do + pts[j] := Rotate3DPointInXY(pts[j], ctr, phi); + + Result := TPath.Create(FPage); + if (RX > 0) and (RY > 0) then + begin + Result.AppendMoveToSegment(pts[0].x, pts[0].y); + Result.AppendEllipticalArcWithCenter(RX, RY, phi, pts[1].x, pts[1].y, + pts[1].x, pts[0].y, false); + // wp: strange - why must the clockwise flag be false here? It should be true! + Result.AppendLineToSegment(pts[2].x, pts[2].y); + Result.AppendEllipticalArcWithCenter(RX, RY, phi, pts[3].x, pts[3].y, + pts[2].x, pts[3].y, false); + Result.AppendLineToSegment(pts[4].x, pts[4].y); + Result.AppendEllipticalArcWithCenter(RX, RY, phi, pts[5].x, pts[5].y, + pts[5].x, pts[4].y, false); + Result.AppendLineToSegment(pts[6].x, pts[6].y); + Result.AppendEllipticalArcWithCenter(RX, RY, phi, pts[7].x, pts[7].y, + pts[6].x, pts[7].y, false); + Result.AppendLineToSegment(pts[8].x, pts[8].y); + end else + begin + Result.AppendMoveToSegment(pts[0].x, pts[0].y); + Result.AppendLineToSegment(pts[1].x, pts[1].y); + Result.AppendLineToSegment(pts[2].x, pts[2].y); + Result.AppendLineToSegment(pts[3].x, pts[3].y); + Result.AppendLineToSegment(pts[4].x, pts[4].y); + end; end; +procedure TvRectangle.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + ADestX, ADestY: Integer; AMulX, AMulY: Double; ADoDraw: Boolean); +var + x1, y1, x2, y2: Integer; + fx1, fy1, fx2, fy2: Double; +begin + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + + CalculateBoundingBox(ADest, fx1, fy1, fx2, fy2); + x1 := CoordToCanvasX(fx1, ADestX, AMulX); + x2 := CoordToCanvasX(fx2, ADestX, AMulX); + y1 := CoordToCanvasY(fy1, ADestY, AMulY); + y2 := CoordToCanvasY(fy2, ADestY, AMulY); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, x1, y1, x2, y2); + + if ADoDraw then + begin + if Brush.Kind <> bkSimpleBrush then + // Draw gradient and border + DrawBrushGradient(ADest, ARenderInfo, x1, y1, x2, y2, ADestX, ADestY, AMulX, AMulY) + else + // Draw uniform fill and border + DrawBrush(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + end; +end; + (* procedure TvRectangle.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -3765,7 +5985,7 @@ x1, x2, y1, y2: Integer; fx1, fy1, fx2, fy2: Double; begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); CalculateBoundingBox(ADest, fx1, fy1, fx2, fy2); x1 := CoordToCanvasX(fx1); @@ -3773,21 +5993,35 @@ y1 := CoordToCanvasY(fy1); y2 := CoordToCanvasY(fy2); - {$ifdef USE_LCL_CANVAS} - if (RX = 0) and (RY = 0) then + if ADoDraw then + begin + {$ifdef USE_LCL_CANVAS} + if (RX = 0) and (RY = 0) then + ADest.Rectangle(x1, y1, x2, y2) + else + LCLIntf.RoundRect(TCanvas(ADest).Handle, x1, y1, x2, y2, Round(rx), Round(ry)); + {$else} ADest.Rectangle(x1, y1, x2, y2) - else - LCLIntf.RoundRect(TCanvas(ADest).Handle, x1, y1, x2, y2, Round(rx), Round(ry)); - {$else} - ADest.Rectangle(x1, y1, x2, y2) - {$endif} + {$endif} + end; + + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, x1, y1, x2, y2); +end; *) + +procedure TvRectangle.Rotate(AAngle: Double; ABase: T3DPoint); +var + ref: T3dPoint; // reference point of rectangle +begin + ref := Rotate3dPointInXY(Make3dPoint(X, Y), ABase, -AAngle); + X := ref.X; + Y := ref.Y; + Angle := AAngle + Angle; end; function TvRectangle.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; var lStr: string; - lCurPathSeg: TPathSegment; begin Result := inherited GenerateDebugTree(ADestRoutine, APageItem); // Add the font debug info in a sub-item @@ -3801,8 +6035,8 @@ { TvPolygon } -procedure TvPolygon.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, - ATop, ARight, ABottom: Double); +procedure TvPolygon.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); var i: Integer; begin @@ -3817,7 +6051,7 @@ end; procedure TvPolygon.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; - ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double); + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -3833,22 +6067,24 @@ lPoints: array of TPoint; i: Integer; begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); SetLength(lPoints, Length(Points)); for i := 0 to Length(Points)-1 do begin lPoints[i].X := CoordToCanvasX(Points[i].X); lPoints[i].Y := CoordToCanvasY(Points[i].Y); + CalcEntityCanvasMinMaxXY(ARenderInfo, lPoints[i].X, lPoints[i].Y); end; - ADest.Polygon(lPoints); + if ADoDraw then + ADest.Polygon(lPoints); end; { TvAlignedDimension } procedure TvAlignedDimension.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -3866,6 +6102,7 @@ {$ifdef USE_LCL_CANVAS} ALCLDest: TCanvas absolute ADest; {$endif} + txt: String; begin ADest.Pen.FPColor := AdjustColorToBackground(colBlack, ARenderInfo); ADest.Pen.Width := 1; @@ -3892,21 +6129,28 @@ Points[0] := Point(CoordToCanvasX(DimensionLeft.X), CoordToCanvasY(DimensionLeft.Y)); Points[1] := Point(Points[0].X + 7, Points[0].Y - 3); Points[2] := Point(Points[0].X + 7, Points[0].Y + 3); - ADest.Polygon(Points); + CalcEntityCanvasMinMaxXY(ARenderInfo, Points[0].X, Points[1].Y); + if ADoDraw then ADest.Polygon(Points); // Right arrow Points[0] := Point(CoordToCanvasX(DimensionRight.X), CoordToCanvasY(DimensionRight.Y)); Points[1] := Point(Points[0].X - 7, Points[0].Y - 3); Points[2] := Point(Points[0].X - 7, Points[0].Y + 3); - ADest.Polygon(Points); + CalcEntityCanvasMinMaxXY(ARenderInfo, Points[0].X, Points[2].Y); + if ADoDraw then ADest.Polygon(Points); ADest.Brush.Style := bsClear; // Dimension text - Points[0].X := CoordToCanvasX((DimensionLeft.X+DimensionRight.X)/2); - Points[0].Y := CoordToCanvasY(DimensionLeft.Y); LowerDim.X := DimensionRight.X-DimensionLeft.X; ADest.Font.Size := 10; ADest.Font.Orientation := 0; ADest.Font.FPColor := AdjustColorToBackground(colBlack, ARenderInfo); - ADest.TextOut(Points[0].X, Points[0].Y-Round(ADest.Font.Size*1.5), Format('%.1f', [LowerDim.X])); + txt := Format('%.1f', [LowerDim.X]); + Points[0].X := CoordToCanvasX((DimensionLeft.X+DimensionRight.X)/2)-ADest.TextWidth(txt) div 2; + Points[0].Y := CoordToCanvasY(DimensionLeft.Y); + if ADoDraw then + ADest.TextOut(Points[0].X, Points[0].Y-Round(ADest.Font.Size*1.5), txt); + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, + Points[0].X, Points[0].Y - round(ADest.Font.Size*1.5), + Points[0].X + ADest.TextWidth(txt), Points[0].Y); end else begin @@ -3927,23 +6171,32 @@ Points[0] := Point(CoordToCanvasX(UpperDim.X), CoordToCanvasY(UpperDim.Y)); Points[1] := Point(Points[0].X + Round(AMulX), Points[0].Y - Round(AMulY*3)); Points[2] := Point(Points[0].X - Round(AMulX), Points[0].Y - Round(AMulY*3)); - ADest.Polygon(Points); + if ADoDraw then ADest.Polygon(Points); + CalcEntityCanvasMinMaxXY(ARenderInfo, Points[1].X, Points[0].Y); // Lower arrow Points[0] := Point(CoordToCanvasX(LowerDim.X), CoordToCanvasY(LowerDim.Y)); Points[1] := Point(Points[0].X + Round(AMulX), Points[0].Y + Round(AMulY*3)); Points[2] := Point(Points[0].X - Round(AMulX), Points[0].Y + Round(AMulY*3)); - ADest.Polygon(Points); + if ADoDraw then ADest.Polygon(Points); + CalcEntityCanvasMinMaxXY(ARenderInfo, Points[2].X, Points[0].Y); ADest.Brush.Style := bsClear; // Dimension text - Points[0].X := CoordToCanvasX(DimensionLeft.X); - Points[0].Y := CoordToCanvasY((DimensionLeft.Y+DimensionRight.Y)/2); LowerDim.Y := DimensionRight.Y-DimensionLeft.Y; if LowerDim.Y < 0 then LowerDim.Y := -1 * LowerDim.Y; ADest.Font.Size := 10; ADest.Font.Orientation := 900; ADest.Font.FPColor := AdjustColorToBackground(colBlack, ARenderInfo); - ADest.TextOut(Points[0].X-Round(ADest.Font.Size*1.5), Points[0].Y, Format('%.1f', [LowerDim.Y])); + txt := Format('%.1f', [LowerDim.Y]); + Points[0].X := CoordToCanvasX(DimensionLeft.X); + Points[0].Y := CoordToCanvasY((DimensionLeft.Y+DimensionRight.Y)/2) + - sign(AMulY) * ADest.TextWidth(txt) div 2; + if ADoDraw then + ADest.TextOut(Points[0].X-Round(ADest.Font.Size*1.5), Points[0].Y, txt); ADest.Font.Orientation := 0; + CalcEntityCanvasMinMaxXY_With2Points(ARenderInfo, + Points[0].X - Round(ADest.Font.Size*1.5), Points[0].Y, + Points[0].X, Points[0].Y + ADest.TextWidth(txt) + ); end; SetLength(Points, 0); @@ -3963,7 +6216,6 @@ APageItem: Pointer): Pointer; var lStr: string; - lCurPathSeg: TPathSegment; begin Result := inherited GenerateDebugTree(ADestRoutine, APageItem); // Add the font debug info in a sub-item @@ -3979,7 +6231,7 @@ { TvRadialDimension } procedure TvRadialDimension.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -4019,51 +6271,54 @@ Points[1] := Rotate2DPoint(Points[1], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle); Points[2] := Rotate2DPoint(Points[2], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle); - if not IsDiameter then - begin - // Basic line - ADest.MoveTo(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)); - ADest.LineTo(CoordToCanvasX(DimensionLeft.X), CoordToCanvasY(DimensionLeft.Y)); - - // Draw the arrow - ADest.Polygon(Points); - ADest.Brush.Style := bsClear; - - // Dimension text - Points[0].X := CoordToCanvasX(Center.X); - Points[0].Y := CoordToCanvasY(Center.Y); - ADest.Font.Size := 10; - ADest.Font.FPColor := AdjustColorToBackground(colBlack, ARenderInfo); - ADest.TextOut(Points[0].X, Points[0].Y, Format('%.1f', [lRadius])); - end - else + if ADoDraw then begin - // Basic line - ADest.MoveTo(CoordToCanvasX(DimensionLeft.X), CoordToCanvasY(DimensionLeft.Y)); - ADest.LineTo(CoordToCanvasX(DimensionRight.X), CoordToCanvasY(DimensionRight.Y)); - - // Draw the first arrow - ADest.Polygon(Points); - ADest.Brush.Style := bsClear; - - // And the second - Points[0] := Point(CoordToCanvasX(Center.X + lRadius), CoordToCanvasY(Center.Y)); - Points[1] := Point(CoordToCanvasX(Center.X + lRadius*0.8), CoordToCanvasY(Center.Y - lRadius*0.1)); - Points[2] := Point(CoordToCanvasX(Center.X + lRadius*0.8), CoordToCanvasY(Center.Y + lRadius*0.1)); - // Now rotate it to the actual position - Points[0] := Rotate2DPoint(Points[0], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle + Pi); - Points[1] := Rotate2DPoint(Points[1], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle + Pi); - Points[2] := Rotate2DPoint(Points[2], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle + Pi); - // - ADest.Polygon(Points); - ADest.Brush.Style := bsClear; + if not IsDiameter then + begin + // Basic line + ADest.MoveTo(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)); + ADest.LineTo(CoordToCanvasX(DimensionLeft.X), CoordToCanvasY(DimensionLeft.Y)); + + // Draw the arrow + ADest.Polygon(Points); + ADest.Brush.Style := bsClear; + + // Dimension text + Points[0].X := CoordToCanvasX(Center.X); + Points[0].Y := CoordToCanvasY(Center.Y); + ADest.Font.Size := 10; + ADest.Font.FPColor := AdjustColorToBackground(colBlack, ARenderInfo); + ADest.TextOut(Points[0].X, Points[0].Y, Format('%.1f', [lRadius])); + end + else + begin + // Basic line + ADest.MoveTo(CoordToCanvasX(DimensionLeft.X), CoordToCanvasY(DimensionLeft.Y)); + ADest.LineTo(CoordToCanvasX(DimensionRight.X), CoordToCanvasY(DimensionRight.Y)); + + // Draw the first arrow + ADest.Polygon(Points); + ADest.Brush.Style := bsClear; + + // And the second + Points[0] := Point(CoordToCanvasX(Center.X + lRadius), CoordToCanvasY(Center.Y)); + Points[1] := Point(CoordToCanvasX(Center.X + lRadius*0.8), CoordToCanvasY(Center.Y - lRadius*0.1)); + Points[2] := Point(CoordToCanvasX(Center.X + lRadius*0.8), CoordToCanvasY(Center.Y + lRadius*0.1)); + // Now rotate it to the actual position + Points[0] := Rotate2DPoint(Points[0], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle + Pi); + Points[1] := Rotate2DPoint(Points[1], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle + Pi); + Points[2] := Rotate2DPoint(Points[2], Point(CoordToCanvasX(Center.X), CoordToCanvasY(Center.Y)), lAngle + Pi); + // + ADest.Polygon(Points); + ADest.Brush.Style := bsClear; - // Dimension text - Points[0].X := CoordToCanvasX(Center.X); - Points[0].Y := CoordToCanvasY(Center.Y); - ADest.Font.Size := 10; - ADest.Font.FPColor := AdjustColorToBackground(colBlack, ARenderInfo); - ADest.TextOut(Points[0].X, Points[0].Y, Format('%.1f', [lRadius * 2])); + // Dimension text + Points[0].X := CoordToCanvasX(Center.X); + Points[0].Y := CoordToCanvasY(Center.Y); + ADest.Font.Size := 10; + ADest.Font.FPColor := AdjustColorToBackground(colBlack, ARenderInfo); + ADest.TextOut(Points[0].X, Points[0].Y, Format('%.1f', [lRadius * 2])); + end; end; SetLength(Points, 0); @@ -4073,7 +6328,6 @@ APageItem: Pointer): Pointer; var lStr, lIsDiameterStr: string; - lCurPathSeg: TPathSegment; begin Result := inherited GenerateDebugTree(ADestRoutine, APageItem); // Add the font debug info in a sub-item @@ -4091,7 +6345,7 @@ procedure TvArcDimension.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; AMulX: Double; - AMulY: Double); + AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -4105,11 +6359,11 @@ var Points: array of TPoint; - lAngleLeft, lAngleRight: Double; lTriangleCenter, lTriangleCorner: T3DPoint; {$ifdef USE_LCL_CANVAS} ALCLDest: TCanvas absolute ADest; {$endif} + txt: String; begin ADest.Pen.FPColor := colYellow;//AdjustColorToBackground(colBlack, ARenderInfo); ADest.Pen.Width := 1; @@ -4120,11 +6374,12 @@ //ADest.Line(CoordToCanvasX(BaseRight.X), CoordToCanvasY(BaseRight.Y), CoordToCanvasX(DimensionRight.X), CoordToCanvasY(DimensionRight.Y)); // Now the arc - ALCLDest.Arc( - CoordToCanvasX(BaseLeft.X - ArcRadius), CoordToCanvasY(BaseLeft.Y - ArcRadius), - CoordToCanvasX(BaseLeft.X + ArcRadius), CoordToCanvasY(BaseLeft.Y + ArcRadius), - CoordToCanvasX(DimensionRight.X), CoordToCanvasY(DimensionRight.Y), - CoordToCanvasX(DimensionLeft.X), CoordToCanvasY(DimensionLeft.Y)); + if ADoDraw then + ALCLDest.Arc( + CoordToCanvasX(BaseLeft.X - ArcRadius), CoordToCanvasY(BaseLeft.Y - ArcRadius), + CoordToCanvasX(BaseLeft.X + ArcRadius), CoordToCanvasY(BaseLeft.Y + ArcRadius), + CoordToCanvasX(DimensionRight.X), CoordToCanvasY(DimensionRight.Y), + CoordToCanvasX(DimensionLeft.X), CoordToCanvasY(DimensionLeft.Y)); // Now the arrows SetLength(Points, 3); @@ -4140,7 +6395,8 @@ Points[1] := Point(CoordToCanvasX(lTriangleCorner.X), CoordToCanvasY(lTriangleCorner.Y)); lTriangleCorner := Rotate3DPointInXY(lTriangleCenter, ArcLeft, - Pi * 10 / 180); Points[2] := Point(CoordToCanvasX(lTriangleCorner.X), CoordToCanvasY(lTriangleCorner.Y)); - ADest.Polygon(Points); + if ADoDraw then + ADest.Polygon(Points); // Right Arrow Points[0] := Point(CoordToCanvasX(ArcRight.X), CoordToCanvasY(ArcRight.Y)); @@ -4151,7 +6407,8 @@ lTriangleCorner := Rotate3DPointInXY(lTriangleCenter, ArcRight, - Pi * 10 / 180); Points[2] := Point(CoordToCanvasX(lTriangleCorner.X), CoordToCanvasY(lTriangleCorner.Y)); ADest.Polygon(Points); - ADest.Brush.Style := bsClear; + if ADoDraw then + ADest.Brush.Style := bsClear; // Dimension text Points[0].X := CoordToCanvasX(TextPos.X); @@ -4159,7 +6416,9 @@ ADest.Font.Size := 10; ADest.Font.Orientation := 0; ADest.Font.FPColor := colYellow;//AdjustColorToBackground(colBlack, ARenderInfo); - ADest.TextOut(Points[0].X, Points[0].Y-Round(ADest.Font.Size*1.5), Format('%.1fº', [ArcValue])); + txt := Format('%.1fº', [ArcValue]); + if ADoDraw then + ADest.TextOut(Points[0].X, Points[0].Y-Round(ADest.Font.Size*1.5), txt); end; procedure TvArcDimension.CalculateExtraArcInfo; @@ -4190,8 +6449,7 @@ function TvArcDimension.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer): Pointer; var - lStr, lIsDiameterStr: string; - lCurPathSeg: TPathSegment; + lStr: string; begin Result := inherited GenerateDebugTree(ADestRoutine, APageItem); // Add the font debug info in a sub-item @@ -4214,7 +6472,34 @@ inherited Destroy; end; -procedure TvRasterImage.CreateRGB888Image(AWidth, AHeight: Cardinal); +procedure TvRasterImage.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); +begin + ALeft := X; + ATop := Y; + ARight := X + Width; + ABottom := Y + Height; +end; + +procedure TvRasterImage.CreateRGB888Image(AWidth, AHeight: Cardinal); +{$ifdef USE_LCL_CANVAS} +var + AImage: TLazIntfImage; + lRawImage: TRawImage; +{$endif} +begin +{$ifdef USE_LCL_CANVAS} + lRawImage.Init; + lRawImage.Description.Init_BPP24_R8G8B8_BIO_TTB(AWidth, AHeight); + lRawImage.CreateData(True); + AImage := TLazIntfImage.Create(AWidth, AHeight); + AImage.SetRawImage(lRawImage); + + RasterImage := AImage; +{$endif} +end; + +procedure TvRasterImage.CreateImageFromFile(AFilename: string); {$ifdef USE_LCL_CANVAS} var AImage: TLazIntfImage; @@ -4223,10 +6508,11 @@ begin {$ifdef USE_LCL_CANVAS} lRawImage.Init; - lRawImage.Description.Init_BPP24_R8G8B8_BIO_TTB(AWidth, AHeight); - lRawImage.CreateData(True); - AImage := TLazIntfImage.Create(AWidth, AHeight); + lRawImage.Description.Init_BPP32_A8R8G8B8_BIO_TTB(0,0); + lRawImage.CreateData(false); + AImage := TLazIntfImage.Create(0,0); AImage.SetRawImage(lRawImage); + AImage.LoadFromFile(AFilename); RasterImage := AImage; {$endif} @@ -4281,7 +6567,7 @@ procedure TvRasterImage.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; ADestY: Integer; AMulX: Double; - AMulY: Double); + AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -4332,7 +6618,8 @@ if lFinalW < 0 then lFinalW := lFinalW * -1; lFinalH := Round(Height * AMulY); if lFinalH < 0 then lFinalH := lFinalH * -1; - TCanvas(ADest).StretchDraw(Bounds(lFinalX, lFinalY, lFinalW, lFinalH), lBitmap); + if ADoDraw then + TCanvas(ADest).StretchDraw(Bounds(lFinalX, lFinalY, lFinalW, lFinalH), lBitmap); finally lImageWriter.Free; lMemoryStream.Free; @@ -4340,6 +6627,9 @@ end; {$endif} + CalcEntityCanvasMinMaxXY(ARenderInfo, lFinalX, lFinalY); + CalcEntityCanvasMinMaxXY(ARenderInfo, lFinalX+lFinalW, lFinalY+lFinalH); + //ADest.Draw(lFinalX, lFinalY, RasterImage); doesnt work end; @@ -4352,24 +6642,22 @@ // Add the debug info in a sub-item if RasterImage <> nil then begin - lStr := Format('[TvRasterImage] Width=%f Height=%f RasterImage.Width=%d RasterImage.Height=%d', - [Width, Height, - RasterImage.Width, RasterImage.Height - ]); + lStr := Format('[TvRasterImage] Width=%f Height=%f RasterImage.Width=%d RasterImage.Height=%d AltText=%s', + [Width, Height, RasterImage.Width, RasterImage.Height, AltText]); ADestRoutine(lStr, Result); end; end; { TvArrow } -procedure TvArrow.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, - ARight, ABottom: Double); +procedure TvArrow.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); begin end; procedure TvArrow.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -4449,7 +6737,7 @@ lPoints[1].Y := CoordToCanvasY(lPointE.Y); lPoints[2].X := CoordToCanvasX(lPointF.X); lPoints[2].Y := CoordToCanvasY(lPointF.Y); - ADest.Polygon(lPoints); + if ADoDraw then ADest.Polygon(lPoints); end; { TvFormulaElement } @@ -4601,7 +6889,7 @@ end; procedure TvFormulaElement.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -4622,95 +6910,96 @@ LeftC := CoordToCanvasX(Left); TopC := CoordToCanvasY(Top); - case Kind of - fekVariable: ADest.TextOut(LeftC, TopC, Text); - fekEqual: ADest.TextOut(LeftC, TopC, '='); - fekSubtraction: ADest.TextOut(LeftC, TopC, '-'); - fekMultiplication: - begin - // Don't draw anything, leave an empty space, it looks better - //ADest.TextOut(LeftC, TopC, 'x'); // × -> Unicode times symbol - end; - fekSum: ADest.TextOut(LeftC, TopC, '+'); - fekPlusMinus:ADest.TextOut(LeftC, TopC, '±'); - fekLessThan: ADest.TextOut(LeftC, TopC, '<'); - fekLessOrEqualThan: ADest.TextOut(LeftC, TopC, '≤'); - fekGreaterThan: ADest.TextOut(LeftC, TopC, '>'); - fekGreaterOrEqualThan: ADest.TextOut(LeftC, TopC, '≥'); - fekHorizontalLine: ADest.Line(LeftC, TopC, CoordToCanvasX(Left+Width), TopC); - // Complex ones - fekFraction: - begin - Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + if ADoDraw then + case Kind of + fekVariable: ADest.TextOut(LeftC, TopC, Text); + fekEqual: ADest.TextOut(LeftC, TopC, '='); + fekSubtraction: ADest.TextOut(LeftC, TopC, '-'); + fekMultiplication: + begin + // Don't draw anything, leave an empty space, it looks better + //ADest.TextOut(LeftC, TopC, 'x'); // × -> Unicode times symbol + end; + fekSum: ADest.TextOut(LeftC, TopC, '+'); + fekPlusMinus:ADest.TextOut(LeftC, TopC, '±'); + fekLessThan: ADest.TextOut(LeftC, TopC, '<'); + fekLessOrEqualThan: ADest.TextOut(LeftC, TopC, '≤'); + fekGreaterThan: ADest.TextOut(LeftC, TopC, '>'); + fekGreaterOrEqualThan: ADest.TextOut(LeftC, TopC, '≥'); + fekHorizontalLine: ADest.Line(LeftC, TopC, CoordToCanvasX(Left+Width), TopC); + // Complex ones + fekFraction: + begin + Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); - // Division line - lPt[0].X := CoordToCanvasX(Formula.Left); - lPt[1].X := CoordToCanvasX(Formula.Left + Formula.Width); - lPt[0].Y := CoordToCanvasY(Formula.Top - Formula.Height); - lPt[1].Y := CoordToCanvasY(Formula.Top - Formula.Height); - ADest.Line(lPt[0].X, lPt[0].Y, lPt[1].X, lPt[1].Y); - end; - fekRoot: - begin - Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + // Division line + lPt[0].X := CoordToCanvasX(Formula.Left); + lPt[1].X := CoordToCanvasX(Formula.Left + Formula.Width); + lPt[0].Y := CoordToCanvasY(Formula.Top - Formula.Height); + lPt[1].Y := CoordToCanvasY(Formula.Top - Formula.Height); + ADest.Line(lPt[0].X, lPt[0].Y, lPt[1].X, lPt[1].Y); + end; + fekRoot: + begin + Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); - // Root drawing - lPt[0].X := CoordToCanvasX(Left); - lPt[0].Y := CoordToCanvasY(Top - Formula.Height * 0.7 + 5); - // diagonal down - lPt[1].X := CoordToCanvasX(Left + 5); - lPt[1].Y := CoordToCanvasY(Top - Formula.Height * 0.7); - // up - lPt[2].X := CoordToCanvasX(Left + 5); - lPt[2].Y := CoordToCanvasY(Top); - // straight right - lPt[3].X := CoordToCanvasX(Left + Formula.Width); - lPt[3].Y := CoordToCanvasY(Top); - // - ADest.Polyline(lPt); - end; - fekPower: - begin - Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - // The superscripted power - lOldFontSize := ADest.Font.Size; - if lOldFontSize = 0 then ADest.Font.Size := 5 - else ADest.Font.Size := lOldFontSize div 2; - AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - ADest.Font.Size := lOldFontSize; - end; - fekSubscript: - begin - Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - // The subscripted item - lOldFontSize := ADest.Font.Size; - if lOldFontSize = 0 then ADest.Font.Size := 5 - else ADest.Font.Size := lOldFontSize div 2; - AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - ADest.Font.Size := lOldFontSize; - end; - fekSummation: - begin - // Draw the summation symbol - lOldFontSize := ADest.Font.Size; - ADest.Font.Size := 15; - lStr := #$E2#$88#$91; // Unicode Character 'N-ARY SUMMATION' (U+2211) - ADest.TextOut(LeftC, TopC, lStr); - ADest.Font.Size := lOldFontSize; + // Root drawing + lPt[0].X := CoordToCanvasX(Left); + lPt[0].Y := CoordToCanvasY(Top - Formula.Height * 0.7 + 5); + // diagonal down + lPt[1].X := CoordToCanvasX(Left + 5); + lPt[1].Y := CoordToCanvasY(Top - Formula.Height * 0.7); + // up + lPt[2].X := CoordToCanvasX(Left + 5); + lPt[2].Y := CoordToCanvasY(Top); + // straight right + lPt[3].X := CoordToCanvasX(Left + Formula.Width); + lPt[3].Y := CoordToCanvasY(Top); + // + ADest.Polyline(lPt); + end; + fekPower: + begin + Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + // The superscripted power + lOldFontSize := ADest.Font.Size; + if lOldFontSize = 0 then ADest.Font.Size := 5 + else ADest.Font.Size := lOldFontSize div 2; + AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + ADest.Font.Size := lOldFontSize; + end; + fekSubscript: + begin + Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + // The subscripted item + lOldFontSize := ADest.Font.Size; + if lOldFontSize = 0 then ADest.Font.Size := 5 + else ADest.Font.Size := lOldFontSize div 2; + AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + ADest.Font.Size := lOldFontSize; + end; + fekSummation: + begin + // Draw the summation symbol + lOldFontSize := ADest.Font.Size; + ADest.Font.Size := 15; + lStr := #$E2#$88#$91; // Unicode Character 'N-ARY SUMMATION' (U+2211) + ADest.TextOut(LeftC, TopC, lStr); + ADest.Font.Size := lOldFontSize; - // Draw the bottom/main formula - Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + // Draw the bottom/main formula + Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); - // Draw the top formula - AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); - end; - fekFormula: - begin - // Draw the formula - Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + // Draw the top formula + AdjacentFormula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + end; + fekFormula: + begin + // Draw the formula + Formula.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + end; end; - end; end; procedure TvFormulaElement.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; @@ -4924,7 +7213,7 @@ var lToken: TvFormulaElement; lStr: string; - FPointSeparator, FCommaSeparator: TFormatSettings; + FPointSeparator: TFormatSettings; begin FPointSeparator := DefaultFormatSettings; FPointSeparator.DecimalSeparator := '.'; @@ -4955,7 +7244,7 @@ i: Integer; lTmpStr: string = ''; lState: Integer; - lFirstTmpStrChar, lCurChar: Char; + lCurChar: Char; begin lState := 0; @@ -5086,7 +7375,6 @@ var lElement: TvFormulaElement; lPosX: Double = 0; - lPosY: Double = 0; lMaxHeight: Double = 0; begin CalculateHeight(ADest); @@ -5125,8 +7413,8 @@ end; end; -procedure TvFormula.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, ATop, ARight, - ABottom: Double); +procedure TvFormula.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); begin ALeft := X; ATop := Y; @@ -5138,11 +7426,11 @@ end; procedure TvFormula.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); var lElement: TvFormulaElement; begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); // First position all elements PositionSubparts(ADest, Left, Top); @@ -5152,7 +7440,7 @@ if lElement = nil then Exit; while lElement <> nil do begin - lElement.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + lElement.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); lElement := GetNextElement(); end; @@ -5191,7 +7479,11 @@ end; destructor TvEntityWithSubEntities.Destroy; +var + i: Integer; begin + for i:= FElements.Count-1 downto 0 do + TvEntity(FElements[i]).Free; FElements.Free; inherited Destroy; end; @@ -5276,11 +7568,15 @@ end; procedure TvEntityWithSubEntities.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; - ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double); + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); var lEntity: TvEntity; + rinfo: TvRenderInfo; + isFirst: Boolean; begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + rinfo := ARenderInfo; + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + isFirst := true; lEntity := GetFirstEntity(); while lEntity <> nil do begin @@ -5290,10 +7586,24 @@ {$ENDIF} // Render - lEntity.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly); + lEntity.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly, ADoDraw); + + if isFirst then + begin + rinfo := ARenderInfo; + isFirst := false; + end else + CalcEntityCanvasMinMaxXY_With2Points(rinfo, + ARenderInfo.EntityCanvasMinXY.X, + ARenderInfo.EntityCanvasMinXY.Y, + ARenderInfo.EntityCanvasMaxXY.X, + ARenderInfo.EntityCanvasMaxXY.Y + ); lEntity := GetNextEntity(); end; + + ARenderInfo := rinfo; end; function TvEntityWithSubEntities.GenerateDebugTree( @@ -5381,13 +7691,24 @@ { TvInsert } +constructor TvInsert.Create(APage: TvPage); +begin + inherited Create(APage); + Style := TvStyle.Create; +end; + +destructor TvInsert.Destroy; +begin + FreeAndNil(Style); + inherited Destroy; +end; + procedure TvInsert.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); var - lEntity: TvEntity; OldForceRenderBlock: Boolean; begin - inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); if InsertEntity = nil then Exit; // If we are inserting a block, make sure it will render its contents OldForceRenderBlock := ARenderInfo.ForceRenderBlock; @@ -5395,18 +7716,22 @@ // If necessary rotate the canvas if RotationAngle <> 0 then begin - InsertEntity.Rotate(RotationAngle, Make3DPoint(0, 0, 0)); + InsertEntity.Rotate(RotationAngle, Make3DPoint(0, 0)); end; // Alter the position of the elements to consider the positioning of the BLOCK and of the INSERT InsertEntity.Move(X, Y); + Style.ApplyOverFromPen(@Pen, SetElements); + Style.ApplyOverFromBrush(@Brush, SetElements); + Style.ApplyOverFromFont(@Font, SetElements); + Style.ApplyIntoEntity(InsertEntity); // Render - InsertEntity.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly); + InsertEntity.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly, ADoDraw); // Change them back InsertEntity.Move(-X, -Y); // And unrotate it back again if RotationAngle <> 0 then begin - InsertEntity.Rotate(-1 * RotationAngle, Make3DPoint(0, 0, 0)); + InsertEntity.Rotate(-1 * RotationAngle, Make3DPoint(0, 0)); end; ARenderInfo.ForceRenderBlock := OldForceRenderBlock; end; @@ -5423,12 +7748,12 @@ { TvBlock } procedure TvBlock.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); var lEntity: TvEntity; begin // blocks are invisible by themselves - //inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + //inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); if not ARenderInfo.ForceRenderBlock then Exit; lEntity := GetFirstEntity(); @@ -5442,7 +7767,7 @@ // Alter the position of the elements to consider the positioning of the BLOCK and of the INSERT lEntity.Move(X, Y); // Render - lEntity.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly); + lEntity.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly, ADoDraw); // Change them back lEntity.Move(-X, -Y); @@ -5455,7 +7780,6 @@ constructor TvParagraph.Create(APage: TvPage); begin inherited Create(APage); - end; destructor TvParagraph.Destroy; @@ -5470,6 +7794,13 @@ AddEntity(Result); end; +function TvParagraph.AddCurvedText(AText: string): TvCurvedText; +begin + Result := TvCurvedText.Create(FPage); + Result.Value.Text := AText; + AddEntity(Result); +end; + function TvParagraph.AddField(AKind: TvFieldKind): TvField; begin Result := TvField.Create(FPage); @@ -5477,8 +7808,20 @@ AddEntity(Result); end; -procedure TvParagraph.CalculateBoundingBox(ADest: TFPCustomCanvas; var ALeft, - ATop, ARight, ABottom: Double); +function TvParagraph.AddRasterImage: TvRasterImage; +begin + Result := TvRasterImage.Create(FPage); + AddEntity(Result); +end; + +function TvParagraph.AddEmbeddedVectorialDoc: TvEmbeddedVectorialDoc; +begin + Result := TvEmbeddedVectorialDoc.Create(FPage); + AddEntity(Result); +end; + +procedure TvParagraph.CalculateBoundingBox(ADest: TFPCustomCanvas; + out ALeft, ATop, ARight, ABottom: Double); var lEntity: TvEntity; lCurWidth: Double = 0.0; @@ -5497,12 +7840,11 @@ lEntity := GetFirstEntity(); while lEntity <> nil do begin - if lEntity is TvText then - begin - lText.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom); - lCurWidth := lCurWidth + (lRight - lLeft); - lCurHeight := Max(lCurHeight, Abs(lTop - lBottom)); - end; + if Style <> nil then + Style.ApplyIntoEntity(lEntity); + lEntity.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom); + lCurWidth := lCurWidth + (lRight - lLeft); + lCurHeight := Max(lCurHeight, Abs(lTop - lBottom)); lEntity := GetNextEntity(); end; @@ -5512,35 +7854,43 @@ ABottom := Y; end; -function TvParagraph.TryToSelect(APos: TPoint; var ASubpart: Cardinal): TvFindEntityResult; +function TvParagraph.TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; begin - Result:=inherited TryToSelect(APos, ASubpart); + Result:=inherited TryToSelect(APos, ASubpart, ASnapFlexibility); end; procedure TvParagraph.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; - ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double); + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); var lCurWidth: Double = 0.0; lLeft, lTop, lRight, lBottom: Double; OldTextX: Double = 0.0; OldTextY: Double = 0.0; lEntity: TvEntity; - lText: TvText absolute lEntity; + lText: TvText; // absolute lEntity; lPrevText: TvText = nil; lFirstText: Boolean = True; lResetOldStyle: Boolean = False; + lEntityRenderInfo: TvRenderInfo; + CurX, CurY, lHeight_px: Integer; begin - // Don't call inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + InitializeRenderInfo(ARenderInfo); + + // Don't call inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); lEntity := GetFirstEntity(); while lEntity <> nil do begin + lHeight_px := lEntity.GetEntityFeatures(ADest).DrawsUpwardHeightAdjustment; + if lEntity is TvText then begin + lText := TvText(lEntity); // cannot debug with "absolute"... + // Set the text style if not already set lResetOldStyle := False; - if (Style <> nil) and (TvText(lEntity).Style = nil) then + if (Style <> nil) and (lText.Style = nil) then begin - TvText(lEntity).Style := Style; + lText.Style := Style; lResetOldStyle := True end; @@ -5553,13 +7903,19 @@ OldTextX := lText.X; OldTextY := lText.Y; - lText.X := lText.X + X + lCurWidth; + CurX := CoordToCanvasX(lText.X + X + lCurWidth, ADestX, AMulX); + lText.X := 0; lText.Y := lText.Y + Y; + CurY := CoordToCanvasY(lText.Y, ADestY, AMulY); lText.Render_Use_NextText_X := not lFirstText; if lText.Render_Use_NextText_X then lText.Render_NextText_X := lPrevText.Render_NextText_X; - lText.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly); + // Style apply + if Style <> nil then + Style.ApplyIntoEntity(lText); + + lText.Render(ADest, lEntityRenderInfo, CurX, ADestY, AMulX, AMulY, ADoDraw); lText.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom); lCurWidth := lCurWidth + Abs(lRight - lLeft); lFirstText := False; @@ -5569,7 +7925,22 @@ lText.Y := OldTextY; if lResetOldStyle then TvText(lEntity).Style := nil; + end + else + begin + OldTextX := lText.X; + OldTextY := lText.Y; + lEntity.X := CoordToCanvasX(lEntity.X + X + lCurWidth, ADestX, AMulX); + lEntity.Y := lEntity.Y + Y; + + lEntity.Render(ADest, lEntityRenderInfo, ADestX, ADestY + lHeight_px, AMulX, AMulY, ADoDraw); + + lEntity.X := OldTextX; + lEntity.Y := OldTextY; end; + + MergeRenderInfo(lEntityRenderInfo, ARenderInfo); + lEntity := GetNextEntity(); end; end; @@ -5616,7 +7987,7 @@ AddEntity(Result); end; -function TvList.Level: Integer; +function TvList.GetLevel: Integer; var oListItem : TvList; begin @@ -5632,6 +8003,122 @@ end; end; +function TvList.GetBulletSize: Double; +begin + Result := Font.Size; + if Result = 0 then Result := 10; + Result := Result * 1.5; // for upper/lower spacing +end; + +procedure TvList.DrawBullet(ADest: TFPCustomCanvas; + var ARenderInfo: TvRenderInfo; ALevel: Integer; AX, AY: Double; + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; + ADoDraw: Boolean); + + function CoordToCanvasX(ACoord: Double): Integer; + begin + Result := Round(ADestX + AmulX * ACoord); + end; + + function CoordToCanvasY(ACoord: Double): Integer; + begin + Result := Round(ADestY + AmulY * ACoord); + end; + +var + lBulletSpacing: Double; + lLevel: Integer; +begin + lBulletSpacing := GetBulletSize() / 2; + ADest.Pen.Style := psSolid; + ADest.Pen.FPColor := colBlack; + ADest.Brush.Style := bsSolid; + ADest.Brush.FPColor := colBlack; + lLevel := GetLevel(); + + // level 0 - filled circle + // level 1 - circle with empty filling + // lebel 2+ - filled square + case lLevel of + 1: ADest.Brush.Style := bsClear; + end; + + case lLevel of + 0, 1: + begin + ADest.Ellipse(CoordToCanvasX(AX + lBulletSpacing), CoordToCanvasY(AY + lBulletSpacing*4), // ToDo: Figure out why this needs to be like that for curved_text.html to render well + CoordToCanvasX(AX + lBulletSpacing*2), CoordToCanvasY(AY + lBulletSpacing*5)); + end; + else + ADest.Rectangle(CoordToCanvasX(AX + lBulletSpacing), CoordToCanvasY(AY + lBulletSpacing*4), + CoordToCanvasX(AX + lBulletSpacing*2), CoordToCanvasY(AY + lBulletSpacing*5)); + end; +end; + +procedure TvList.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; ADestX: Integer = 0; + ADestY: Integer = 0; AMulX: Double = 1.0; AMulY: Double = 1.0; ADoDraw: Boolean = True); + + function CoordToCanvasX(ACoord: Double): Integer; + begin + Result := Round(ADestX + AmulX * ACoord); + end; + + function CoordToCanvasY(ACoord: Double): Integer; + begin + Result := Round(ADestY + AmulY * ACoord); + end; + +var + lEntity: TvEntity; + lPara: TvParagraph absolute lEntity; + lList: TvList absolute lEntity; + lEntityRenderInfo: TvRenderInfo; + CurX, CurY, lBulletSize, lItemHeight: Double; + lHeight_px: Integer; +begin + InitializeRenderInfo(ARenderInfo); + + // Don't call inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + + lBulletSize := GetBulletSize() * Abs(AMulX); + CurX := X + lBulletSize; + CurY := Y; + + lEntity := GetFirstEntity(); + while lEntity <> nil do + begin + // handle both directions of drawing + lHeight_px := 0; + //if lEntity.GetEntityFeatures().DrawsUpwards then + lEntity.CalculateHeightInCanvas(ADest, lHeight_px); + + // draw the bullet (if necessary) + if lEntity is TvParagraph then + begin + DrawBullet(ADest, lEntityRenderInfo, GetLevel(), + X, CurY, ADestX, ADestY+lHeight_px, AMulX, AMulY, ADoDraw); + end; + + // attempt to centralize the item + lEntity.X := CurX; + lEntity.Y := CurY; + lItemHeight := lEntity.GetHeight(ADest); + if lItemHeight < lBulletSize then + begin + lItemHeight := lBulletSize; + lEntity.Y := lEntity.CentralizeY_InHeight(ADest, lBulletSize); + end; + + // draw the item + lEntity.Render(ADest, lEntityRenderInfo, ADestX, ADestY+lHeight_px, AMulX, AMulY, ADoDraw); + + // prepare next loop iteration + MergeRenderInfo(lEntityRenderInfo, ARenderInfo); + CurY := CurY + lItemHeight; + lEntity := GetNextEntity(); + end; +end; + { TvRichText } constructor TvRichText.Create(APage: TvPage); @@ -5668,40 +8155,100 @@ AddEntity(Result); end; -(* -function TvRichText.AddImage: TvImage; +function TvRichText.AddRasterImage: TvRasterImage; begin - Result := TvImage.Create(FPage); + Result := TvRasterImage.Create(FPage); AddEntity(Result); end; -*) -function TvRichText.TryToSelect(APos: TPoint; var ASubpart: Cardinal - ): TvFindEntityResult; + +// this function is for descendents to override with a different behavior such as TvTableCell +procedure TvRichText.GetEffectiveCellSpacing(out ATopSpacing, ALeftSpacing, ARightSpacing, ABottomSpacing: Double); begin - Result:=inherited TryToSelect(APos, ASubpart); + ATopSpacing := SpacingTop; + ALeftSpacing := SpacingLeft; + ARightSpacing := SpacingRight; + ABottomSpacing := SpacingBottom; end; -procedure TvRichText.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; - ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double); +function TvRichText.CalculateCellHeight_ForWidth(ADest: TFPCustomCanvas; AWidth: Double): Double; var lCurHeight: Double = 0.0; - lLeft, lTop, lRight, lBottom: Double; + lLeft, lTop, lRight, lBottom, lSpacingTop, lSpacingBottom, lTmp: Double; lEntity: TvEntity; - lParagraph: TvParagraph absolute lEntity; + //lParagraph: TvParagraph absolute lEntity; begin - // Don't call inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY); + Result := 0; lEntity := GetFirstEntity(); while lEntity <> nil do begin - if lEntity is TvParagraph then + lEntity.X := X; + lEntity.Y := Y + Result; + lEntity.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom); + Result := Result + (lBottom - lTop); + + lEntity := GetNextEntity(); + end; + + GetEffectiveCellSpacing(lTmp, lSpacingTop, lTmp, lSpacingBottom); + Result := Result + lSpacingTop + lSpacingBottom; +end; + +function TvRichText.CalculateMaxNeededWidth(ADest: TFPCustomCanvas): Double; +var + lLeft, lTop, lRight, lBottom: Double; + lEntity: TvEntity; + //lParagraph: TvParagraph absolute lEntity; +begin + Result := 0; + + // if the width is not yet known, calculate it + if Width <= 0 then + begin + lEntity := GetFirstEntity(); + while lEntity <> nil do begin - lParagraph.X := X; - lParagraph.Y := Y + lCurHeight; - lParagraph.Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMuly); - lParagraph.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom); - lCurHeight := lCurHeight + (lBottom - lTop); + lEntity.X := X; + lEntity.Y := Y + Result; + lEntity.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom); + Result := Max(Result, (lRight - lLeft)); + + lEntity := GetNextEntity(); end; + end; + + Result := Result + SpacingLeft + SpacingRight; +end; + +function TvRichText.TryToSelect(APos: TPoint; var ASubpart: Cardinal; ASnapFlexibility: Integer = 5): TvFindEntityResult; +begin + Result:=inherited TryToSelect(APos, ASubpart, ASnapFlexibility); +end; + +procedure TvRichText.Render(ADest: TFPCustomCanvas; var ARenderInfo: TvRenderInfo; + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean); +var + lCurHeight: Double = 0.0; + lLeft, lTop, lRight, lBottom: Double; + lHeight_px: Integer; + lEntity: TvEntity; + //lParagraph: TvParagraph absolute lEntity; + lEntityRenderInfo: TvRenderInfo; +begin + InitializeRenderInfo(ARenderInfo); + + // Don't call inherited Render(ADest, ARenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + lEntity := GetFirstEntity(); + while lEntity <> nil do + begin + lEntity.X := X; + lEntity.Y := Y + lCurHeight; + lHeight_px := lEntity.GetEntityFeatures(ADest).DrawsUpwardHeightAdjustment; + lEntity.Render(ADest, lEntityRenderInfo, ADestX, ADestY + lHeight_px, AMulX, AMulY, ADoDraw); + lEntity.CalculateBoundingBox(ADest, lLeft, lTop, lRight, lBottom); + lCurHeight := lCurHeight + (lBottom - lTop); + lEntity := GetNextEntity(); + MergeRenderInfo(lEntityRenderInfo, ARenderInfo); end; end; @@ -5717,6 +8264,7 @@ begin inherited Create; FOwner := AOwner; + AdjustPenColorToBackground := true; end; destructor TvPage.Destroy; @@ -5774,8 +8322,6 @@ { TvVectorialPage } procedure TvVectorialPage.ClearTmpPath; -var - segment, oldsegment: TPathSegment; begin FTmpPath.Points := nil; FTmpPath.PointsEnd := nil; @@ -5977,7 +8523,7 @@ function TvVectorialPage.AddPathCopyMem(APath: TPath; AOnlyCreate: Boolean = False): TPath; var lPath: TPath; - Len: Integer; + //Len: Integer; begin lPath := TPath.Create(Self); lPath.Assign(APath); @@ -6156,6 +8702,27 @@ AppendSegmentToTmpPath(segment); end; +procedure TvVectorialPage.AddEllipticalArcWithCenterToPath(ARadX, ARadY, + AXAxisRotation, ADestX, ADestY, ACenterX, ACenterY: Double; + AClockwiseArcFlag: Boolean); +var + segment: T2DEllipticalArcSegment; +begin + segment := T2DEllipticalArcSegment.Create; + segment.SegmentType := st2DEllipticalArc; + segment.X := ADestX; + segment.Y := ADestY; + segment.RX := ARadX; + segment.RY := ARadY; + segment.XRotation := AXAxisRotation; + segment.CX := ACenterX; + segment.CY := ACenterY; + segment.ClockwiseArcFlag := AClockwiseArcFlag; + segment.CenterSetByUser := true; + + AppendSegmentToTmpPath(segment); +end; + procedure TvVectorialPage.SetBrushColor(AColor: TFPColor); begin FTmPPath.Brush.Color := AColor; @@ -6446,12 +9013,17 @@ use this function like this: ASource.Render(ADest, 0, ASource.Height, 1.0, -1.0); + + Set ADoDraw to falses in order to just get the bounding box of all entities + on the page in RenderInfo.EnitityCanvasMinXY/EntityCanvasMaxXY. } procedure TvVectorialPage.Render(ADest: TFPCustomCanvas; - ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double); + ADestX: Integer; ADestY: Integer; AMulX: Double; AMulY: Double; + ADoDraw: Boolean = true); var i: Integer; CurEntity: TvEntity; + rinfo: TvRenderInfo; begin {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} WriteLn(':>DrawFPVectorialToCanvas'); @@ -6466,14 +9038,89 @@ CurEntity := GetEntity(i); RenderInfo.BackgroundColor := BackgroundColor; - CurEntity.Render(ADest, RenderInfo, ADestX, ADestY, AMulX, AMulY); + RenderInfo.AdjustPenColorToBackground := AdjustPenColorToBackground; + + CurEntity.Render(ADest, RenderInfo, ADestX, ADestY, AMulX, AMulY, ADoDraw); + + if i = 0 then + rInfo := RenderInfo + else + begin + rInfo.EntityCanvasMinXY.X := Min(rInfo.EntityCanvasMinXY.X, RenderInfo.EntityCanvasMinXY.X); + rInfo.EntityCanvasMinXY.Y := Min(rInfo.EntityCanvasMinXY.Y, RenderInfo.EntityCanvasMinXY.Y); + rInfo.EntityCanvasMaxXY.X := Max(rInfo.EntityCanvasMaxXY.X, RenderInfo.EntityCanvasMaxXY.X); + rInfo.EntityCanvasMaxXY.Y := Max(rInfo.EntityCanvasMaxXY.Y, RenderInfo.EntityCanvasMaxXY.Y); + end; end; + RenderInfo := rInfo; + {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} WriteLn(':<DrawFPVectorialToCanvas'); {$endif} end; +procedure TvVectorialPage.AutoFit(ADest: TFPCustomCanvas; + AWidth, AHeight: Integer; out ADeltaX, ADeltaY: Integer; out AZoom: Double); +var + i: Integer; + lCurEntity: TvEntity; + lLeft, lTop, lWidth, lHeight: Integer; + lMinX, lMinY, lMaxX, lMaxY: Integer; + lZoomFitX, lZoomFitY: Double; + {$ifdef FPVECTORIAL_AUTOFIT_DEBUG} + lStrings: TStrings; + {$endif} +begin + {$ifdef FPVECTORIAL_AUTOFIT_DEBUG} + lStrings := TStringList.Create; + try + {$endif} + ADeltaX := 0; + ADeltaY := 0; + AZoom := 1; + lMinX := High(Integer); + lMinY := High(Integer); + lMaxX := Low(Integer); + lMaxY := Low(Integer); + + for i := 0 to FEntities.Count - 1 do + begin + lCurEntity := TvEntity(FEntities.Items[i]); + if lCurEntity.CalculateSizeInCanvas(ADest, lLeft, lTop, lWidth, lHeight) then + begin + lMinX := Min(lMinX, lLeft); + lMinY := Min(lMinY, lTop); + lMaxX := Max(lMaxX, lLeft + lWidth); + lMaxY := Max(lMaxY, lTop + lHeight); + end; + {$ifdef FPVECTORIAL_AUTOFIT_DEBUG} + lStrings.Add(Format('[%s] MinX=%d MinY=%d MaxX=%d MaxY=%D', [lCurEntity.ClassName, lMinX, lMinY, lMaxX, lMaxY])); + {$endif} + end; + + if (lMinX = High(Integer)) or (lMinY = High(Integer)) or + (lMaxX = Low(Integer)) or(lMaxY = Low(Integer)) then + Exit; + + lWidth := lMaxX - lMinX; + lHeight := lMaxY - lMinY; + if (lWidth = 0) or (lHeight = 0) then Exit; + + lZoomFitX := AWidth / lWidth; + lZoomFitY := AHeight / lHeight; + AZoom := Min(lZoomFitX, lZoomFitY) * 0.9; + ADeltaX := Round(-1 * AZoom * lMinX); + ADeltaY := Round(-1 * AZoom * lMinY); + ADeltaY += Round(-1.05 * AZoom * lHeight); + {$ifdef FPVECTORIAL_AUTOFIT_DEBUG} + finally + lStrings.SaveToFile('H:\autofit.txt'); + lStrings.Free; + end; + {$endif} +end; + procedure TvVectorialPage.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); var @@ -6557,6 +9204,7 @@ function TvTextPageSequence.RemoveEntity(AEntity: TvEntity; AFreeAfterRemove: Boolean): Boolean; begin + Result := True; MainText.Clear; end; @@ -6597,7 +9245,7 @@ end; procedure TvTextPageSequence.Render(ADest: TFPCustomCanvas; ADestX: Integer; - ADestY: Integer; AMulX: Double; AMulY: Double); + ADestY: Integer; AMulX: Double; AMulY: Double; ADoDraw: Boolean = true); function CoordToCanvasX(ACoord: Double): Integer; begin @@ -6612,13 +9260,14 @@ var i: Integer; CurEntity: TvEntity; - CurY: Integer = 0; + CurY_px: Integer = 0; + lHeight_px: Integer; lBoundsLeft, lBoundsTop, lBoundsRight, lBoundsBottom: Double; begin {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} WriteLn(':>TvTextPageSequence.Render'); {$endif} - CurY := ADestY; + CurY_px := ADestY; for i := 0 to GetEntitiesCount - 1 do begin @@ -6630,17 +9279,14 @@ CurEntity.X := 0; CurEntity.Y := 0; - if CurEntity.GetEntityFeatures().DrawsUpwards then - begin - CurEntity.CalculateBoundingBox(ADest, lBoundsLeft, lBoundsTop, lBoundsRight, lBoundsBottom); - CurY := CurY + Abs(Round((lBoundsBottom - lBoundsTop) * AMulY)); - end; + lHeight_px := CurEntity.GetEntityFeatures(ADest).DrawsUpwardHeightAdjustment; RenderInfo.BackgroundColor := BackgroundColor; - CurEntity.Render(ADest, RenderInfo, ADestX, CurY, AMulX, AMulY); + CurEntity.Render(ADest, RenderInfo, ADestX, CurY_px + lHeight_px, AMulX, AMulY, ADoDraw); // Store the old position in X/Y but don't use it, we use this to debug out the position CurEntity.X := ADestX; - CurEntity.Y := CurY; - CurY := RenderInfo.EntityCanvasMaxXY.Y; + CurEntity.Y := CurY_px; + lHeight_px := Abs(RenderInfo.EntityCanvasMaxXY.Y - RenderInfo.EntityCanvasMinXY.Y); + CurY_px := CurY_px + lHeight_px; end; {$ifdef FPVECTORIAL_TOCANVAS_DEBUG} @@ -6648,6 +9294,14 @@ {$endif} end; +procedure TvTextPageSequence.AutoFit(ADest: TFPCustomCanvas; + AWidth, AHeight: Integer; out ADeltaX, ADeltaY: Integer; out AZoom: Double); +begin + ADeltaX := 0; + ADeltaY := 0; + AZoom := 1; +end; + procedure TvTextPageSequence.GenerateDebugTree( ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); var @@ -6841,7 +9495,7 @@ var lFormat: TvVectorialFormat; begin - lFormat := GetFormatFromExtension(ExtractFileExt(AFileName)); + lFormat := GetFormatFromExtension(AFileName); ReadFromFile(AFileName, lFormat); end; @@ -6894,8 +9548,8 @@ end; end; -class function TvVectorialDocument.GetFormatFromExtension(AFileName: string - ): TvVectorialFormat; +class function TvVectorialDocument.GetFormatFromExtension(AFileName: string; + ARaiseException: Boolean = True): TvVectorialFormat; var lExt: string; begin @@ -6915,8 +9569,10 @@ else if AnsiCompareText(lExt, STR_ODG_EXTENSION) = 0 then Result := vfODG else if AnsiCompareText(lExt, STR_DOCX_EXTENSION) = 0 then Result := vfDOCX else if AnsiCompareText(lExt, STR_HTML_EXTENSION) = 0 then Result := vfHTML + else if ARaiseException then + raise Exception.Create('TvVectorialDocument.GetFormatFromExtension: The extension (' + lExt + ') doesn''t match any supported formats.') else - raise Exception.Create('TvVectorialDocument.GetFormatFromExtension: The extension (' + lExt + ') doesn''t match any supported formats.'); + Result := vfUnknown; end; function TvVectorialDocument.GetDetailedFileFormat(): string; @@ -7081,7 +9737,8 @@ lTextBody.Alignment := vsaJustifed; lTextBody.MarginTop := 0; lTextBody.MarginBottom := 2.12; - lTextBody.SetElements := [spbfFontSize, spbfFontName, spbfAlignment, sseMarginTop, sseMarginBottom]; + lTextBody.SetElements := [spbfFontSize, spbfFontName, spbfAlignment, + sseMarginTop, sseMarginBottom, spbfBrushStyle]; StyleTextBody := lTextBody; // Headings @@ -7174,6 +9831,12 @@ StyleTextBodyCentralized.Alignment := vsaCenter; StyleTextBodyCentralized.SetElements := StyleTextBodyCentralized.SetElements + [spbfAlignment]; + StyleTextBodyBold := AddStyle(); + StyleTextBodyBold.ApplyOver(StyleTextBody); + StyleTextBodyBold.Name := 'Text Body Bold'; + StyleTextBodyBold.Font.Bold := True; + StyleTextBodyBold.SetElements := StyleTextBodyCentralized.SetElements + [spbfFontBold]; + StyleHeading1Centralized := AddStyle(); StyleHeading1Centralized.ApplyOver(StyleHeading1); StyleHeading1Centralized.Name := 'Heading 1 Centered'; @@ -7316,7 +9979,7 @@ FCurrentPageIndex:=-1; end; -procedure TvVectorialDocument.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc); +procedure TvVectorialDocument.GenerateDebugTree(ADestRoutine: TvDebugAddItemProc; APageItem: Pointer); var i: integer; p: TvPage; @@ -7326,7 +9989,7 @@ begin p := TvPage(FPages[i]); lPageItem := ADestRoutine(Format('Page %d Width=%f Height=%f MinX=%f MaxX=%f MinY=%f MaxY=%f', - [i, p.Width, p.Height, p.MinX, p.MaxX, p.MinY, p.MaxY]), nil); + [i, p.Width, p.Height, p.MinX, p.MaxX, p.MinY, p.MaxY]), APageItem); p.GenerateDebugTree(ADestRoutine, lPageItem); end; end; @@ -7361,6 +10024,13 @@ end; end; +class function TvCustomVectorialReader.RemoveLineEndingsAndTrim(AStr: string): string; +begin + Result := Trim(AStr); + Result := StringReplace(Result, #13, '', [rfReplaceAll]); + Result := StringReplace(Result, #10, '', [rfReplaceAll]); +end; + constructor TvCustomVectorialReader.Create; begin inherited Create; @@ -7370,6 +10040,7 @@ var FileStream: TFileStream; begin + FFilename := AFilename; FileStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyNone); try ReadFromStream(FileStream, AData); diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/fpvectorialpkg.lpk lazarus-1.6+dfsg/components/fpvectorial/fpvectorialpkg.lpk --- lazarus-1.4.4+dfsg/components/fpvectorial/fpvectorialpkg.lpk 2014-07-30 14:39:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/fpvectorialpkg.lpk 2015-12-28 22:11:54.000000000 +0000 @@ -8,9 +8,6 @@ <SearchPaths> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Files Count="21"> <Item1> @@ -98,7 +95,6 @@ <UnitName Value="htmlvectorialreader"/> </Item21> </Files> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="2"> <Item1> <PackageName Value="LCL"/> @@ -114,5 +110,8 @@ <PublishOptions> <Version Value="2"/> </PublishOptions> + <CustomOptions Items="ExternHelp" Version="2"> + <_ExternHelp Items="Count"/> + </CustomOptions> </Package> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/fpvectorialpkg.pas lazarus-1.6+dfsg/components/fpvectorial/fpvectorialpkg.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/fpvectorialpkg.pas 2014-07-30 14:39:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/fpvectorialpkg.pas 2015-12-28 22:11:54.000000000 +0000 @@ -13,14 +13,8 @@ lazvectorialreader, mathmlvectorialreader, odgvectorialreader, rawvectorialreadwrite, svgvectorialreader, svgvectorialwriter, svgzvectorialreader, odtvectorialwriter, docxvectorialwriter, - htmlvectorialreader, LazarusPackageIntf; + htmlvectorialreader; implementation -procedure Register; -begin -end; - -initialization - RegisterPackage('fpvectorialpkg', @Register); end. diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/fpvtocanvas.pas lazarus-1.6+dfsg/components/fpvectorial/fpvtocanvas.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/fpvtocanvas.pas 2013-01-02 07:27:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/fpvtocanvas.pas 2015-03-24 17:50:02.000000000 +0000 @@ -9,10 +9,7 @@ {$endif} uses - Classes, SysUtils, Math, - fpcanvas, - fpimage, - fpvectorial, fpvutils; + fpcanvas, fpvectorial; procedure DrawFPVectorialToCanvas(ASource: TvVectorialPage; ADest: TFPCustomCanvas; diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/fpvutils.pas lazarus-1.6+dfsg/components/fpvectorial/fpvutils.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/fpvutils.pas 2013-08-04 10:22:05.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/fpvutils.pas 2016-01-18 22:55:11.000000000 +0000 @@ -22,7 +22,7 @@ interface uses - Classes, SysUtils, Math, + Classes, SysUtils, Math, Types, {$ifdef USE_LCL_CANVAS} Graphics, LCLIntf, LCLType, {$endif} @@ -31,7 +31,7 @@ type T10Strings = array[0..9] of shortstring; - TPointsArray = array of TPoint; +// TPointsArray = array of TPoint; TFPVUByteArray = array of Byte; TNumericalEquation = function (AParameter: Double): Double of object; // return the error @@ -41,6 +41,8 @@ // Color Conversion routines function FPColorToRGBHexString(AColor: TFPColor): string; function RGBToFPColor(AR, AG, AB: byte): TFPColor; inline; +function MixColors(AColor1, AColor2: TFPColor; APos, AMax: Double): TFPColor; +function GradientColor(AColors: TvGradientColors; AValue: Double): TFPColor; // Coordinate Conversion routines function CanvasCoordsToFPVectorial(AY: Integer; AHeight: Integer): Integer; inline; function CanvasTextPosToFPVectorial(AY: Integer; ACanvasHeight, ATextHeight: Integer): Integer; @@ -48,14 +50,32 @@ function CoordToCanvasY(ACoord: Double; ADestY: Integer; AMulY: Double): Integer; inline; // Other routines function SeparateString(AString: string; ASeparator: char): T10Strings; -function Make3DPoint(AX, AY, AZ: Double): T3DPoint; +function Make3DPoint(AX, AY, AZ: Double): T3DPoint; overload; inline; +function Make3DPoint(AX, AY: Double): T3DPoint; overload; inline; +function Point2D(AX, AY: Double): T2DPoint; inline; // Mathematical routines +function LineEquation_GetPointAndTangentForLength(AStart, AEnd: T3DPoint; ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; procedure EllipticalArcToBezier(Xc, Yc, Rx, Ry, startAngle, endAngle: Double; var P1, P2, P3, P4: T3DPoint); procedure CircularArcToBezier(Xc, Yc, R, startAngle, endAngle: Double; var P1, P2, P3, P4: T3DPoint); procedure AddBezierToPoints(P1, P2, P3, P4: T3DPoint; var Points: TPointsArray); +function BezierEquation_GetPoint(t: Double; P1, P2, P3, P4: T3DPoint): T3DPoint; +function BezierEquation_GetTangent(t: Double; P1, P2, P3, P4: T3DPoint): Double; +function BezierEquation_GetLength(P1, P2, P3, P4: T3DPoint; AMaxT: Double = 1; ASteps: Integer = 30): Double; +function BezierEquation_GetT_ForLength(P1, P2, P3, P4: T3DPoint; ALength: Double; ASteps: Integer = 30): Double; +function BezierEquation_GetPointAndTangentForLength(P1, P2, P3, P4: T3DPoint; + ADistance: Double; out AX, AY, ATangentAngle: Double; ASteps: Integer = 30): Boolean; +function CalcEllipseCenter(x1,y1, x2,y2, rx,ry, phi: Double; fa, fs: Boolean; + out cx,cy, lambda: Double): Boolean; +function CalcEllipsePointAngle(x,y, rx,ry, cx,cy, phi: Double): Double; +procedure CalcEllipsePoint(t, rx,ry, cx,cy, phi: Double; out x,y: Double); +procedure ConvertPathToPolygons(APath: TPath; ADestX, ADestY: Integer; AMulX, AMulY: Double; + var PolygonPoints: TPointsArray; var PolygonStartIndexes: TIntegerDynArray); procedure ConvertPathToPoints(APath: TPath; ADestX, ADestY: Integer; AMulX, AMulY: Double; var Points: TPointsArray); +function GetLinePolygonIntersectionPoints(ACoord: Double; + const APoints: T2DPointsArray; ACoordIsX: Boolean): T2DPointsArray; function Rotate2DPoint(P, RotCenter: TPoint; alpha:double): TPoint; function Rotate3DPointInXY(P, RotCenter: T3DPoint; alpha:double): T3DPoint; +procedure NormalizeRect(var ARect: TRect); // Transformation matrix operations // See http://www.useragentman.com/blog/2011/01/07/css3-matrix-transform-for-the-mathematically-challenged/ procedure ConvertTransformationMatrixToOperations(AA, AB, AC, AD, AE, AF: Double; out ATranslateX, ATranslateY, AScaleX, AScaleY, ASkewX, ASkewY, ARotate: Double); @@ -101,6 +121,50 @@ Result.Alpha := $FFFF; end; +{@@ Returns AColor1 if APos = 0, AColor2 if APos = AMax, or interpolates between } +function MixColors(AColor1, AColor2: TFPColor; APos, AMax: Double): TFPColor; +var + f1, f2: Double; +begin + f1 := (AMax - APos) / AMax; + f2 := APos / AMax; + Result.Alpha := Round(AColor1.Alpha * f1 + AColor2.Alpha * f2); + Result.Red := Round(AColor1.Red * f1 + AColor2.Red * f2); + Result.Green := Round(AColor1.Green * f1 + AColor2.Green * f2); + Result.Blue := Round(AColor1.Blue * f1 + AColor2.Blue * f2); +end; + +{@@ Assigns a color to the specified value. The color is interpolated between + the colors defined in AColors. +} +function GradientColor(AColors: TvGradientColors; AValue: Double): TFPColor; +var + i: Integer; + c1, c2: TFPColor; + p1, p2: Double; +begin + // Return first color if AValue is below the first color position + if AValue <= AColors[0].Position then + Result := AColors[0].Color + else + // Return last color if AValue is above the last color position + if AValue >= AColors[High(AColors)].Position then + Result := AColors[High(AColors)].Color + else + // Find pair of colors positions which bracket the specified value and + // interpolate color + for i:= High(AColors)-1 downto 0 do + if AValue >= AColors[i].Position then + begin + c1 := AColors[i].Color; + c2 := AColors[i+1].Color; + p1 := AColors[i].Position; + p2 := AColors[i+1].Position; + Result := MixColors(c1, c2, AValue - p1, p2 - p1); + exit; + end; +end; + {@@ Converts the coordinate system from a TCanvas to FPVectorial The basic difference is that the Y axis is positioned differently and points upwards in FPVectorial and downwards in TCanvas. @@ -171,6 +235,12 @@ end; end; +function Point2D(AX, AY: Double): T2DPoint; +begin + Result.X := AX; + Result.Y := AY; +end; + function Make3DPoint(AX, AY, AZ: Double): T3DPoint; begin Result.X := AX; @@ -178,6 +248,13 @@ Result.Z := AZ; end; +function Make3DPoint(AX, AY: Double): T3DPoint; +begin + Result.X := AX; + Result.Y := AY; + Result.Z := 0; +end; + { Considering a counter-clockwise arc, elliptical and alligned to the axises An elliptical Arc can be converted to @@ -223,23 +300,39 @@ P3.Y := P4.Y - alfa * Ry * cos(endAngle); end; +// (x2,y2)=(x1+L⋅cos(a),y1+L⋅sin(a)). +// ATangentAngle - in Radians +function LineEquation_GetPointAndTangentForLength(AStart, AEnd: T3DPoint; ADistance: Double; out AX, AY, ATangentAngle: Double): Boolean; +var + lLineAngle: Double; // to X axis +begin + Result := False; +// lLineAngle := arctan((AEnd.Y-AStart.Y) / (AEnd.X - AStart.X)); + lLineAngle := arctan2(AEnd.Y - AStart.Y, AEnd.X - AStart.X); + AX := AStart.X + ADistance * Cos(lLineAngle); + AY := AStart.Y + ADistance * Sin(lLineAngle); +end; + procedure CircularArcToBezier(Xc, Yc, R, startAngle, endAngle: Double; var P1, P2, P3, P4: T3DPoint); begin EllipticalArcToBezier(Xc, Yc, R, R, startAngle, endAngle, P1, P2, P3, P4); end; -{ This routine converts a Bezier to a Polygon and adds the points of this poligon +{ This routine converts a Bezier to a Polygon and adds the points of this polygon to the end of the provided Points output variables } procedure AddBezierToPoints(P1, P2, P3, P4: T3DPoint; var Points: TPointsArray); var - CurveLength, k, CurX, CurY, LastPoint: Integer; + CurveLength, k, LastPoint: Integer; + CurPoint: T3DPoint; t: Double; begin {$ifdef FPVECTORIAL_BEZIERTOPOINTS_DEBUG} Write(Format('[AddBezierToPoints] P1=%f,%f P2=%f,%f P3=%f,%f P4=%f,%f =>', [P1.X, P1.Y, P2.X, P2.Y, P3.X, P3.Y, P4.X, P4.Y])); {$endif} + // there is no problem here using a number larger than the real one + // so to be fast, just connect the 4 points... CurveLength := Round(sqrt(sqr(P2.X - P1.X) + sqr(P2.Y - P1.Y))) + Round(sqrt(sqr(P3.X - P2.X) + sqr(P3.Y - P2.Y))) + @@ -250,12 +343,11 @@ for k := 1 to CurveLength do begin t := k / CurveLength; - CurX := Round(sqr(1 - t) * (1 - t) * P1.X + 3 * t * sqr(1 - t) * P2.X + 3 * t * t * (1 - t) * P3.X + t * t * t * P4.X); - CurY := Round(sqr(1 - t) * (1 - t) * P1.Y + 3 * t * sqr(1 - t) * P2.Y + 3 * t * t * (1 - t) * P3.Y + t * t * t * P4.Y); - Points[LastPoint+k].X := CurX; - Points[LastPoint+k].Y := CurY; + CurPoint := BezierEquation_GetPoint(t, P1, P2, P3, P4); + Points[LastPoint+k].X := Round(CurPoint.X); + Points[LastPoint+k].Y := Round(CurPoint.Y); {$ifdef FPVECTORIAL_BEZIERTOPOINTS_DEBUG} - Write(Format(' P=%d,%d', [CurX, CurY])); + Write(Format(' P=%d,%d', [CurPoint.X, CurPoint.Y])); {$endif} end; {$ifdef FPVECTORIAL_BEZIERTOPOINTS_DEBUG} @@ -263,6 +355,289 @@ {$endif} end; +// B(t) = (1-t)³ [Prev.X, Prev.Y] + 3 (1-t)² t [X2, Y2] + 3 (1-t) t² [X3, Y3] + t³ [X,Y], 0<=t<=1 +function BezierEquation_GetPoint(t: Double; P1, P2, P3, P4: T3DPoint): T3DPoint; +begin + Result.X := sqr(1 - t) * (1 - t) * P1.X + 3 * t * sqr(1 - t) * P2.X + 3 * t * t * (1 - t) * P3.X + t * t * t * P4.X; + Result.Y := sqr(1 - t) * (1 - t) * P1.Y + 3 * t * sqr(1 - t) * P2.Y + 3 * t * t * (1 - t) * P3.Y + t * t * t * P4.Y; +end; + +// B'(t) = 3 (1-t)² [X2-Prev.X, Y2-Prev.Y] + 6 (1-t) t [X3-X2, Y3-Y2] + 3 t² [X-X3,Y-Y3] +function BezierEquation_GetTangent(t: Double; P1, P2, P3, P4: T3DPoint): Double; +var + lDerivateVector: T3DPoint; +begin + lDerivateVector.X := 3 * sqr(1 - t) * (P2.X-P1.X) + 6 * t * (1 - t) * (P3.X-P2.X) + 3 * t * t * (P4.X - P3.X); + lDerivateVector.Y := 3 * sqr(1 - t) * (P2.Y-P1.Y) + 6 * t * (1 - t) * (P3.Y-P2.Y) + 3 * t * t * (P4.Y - P3.Y); + Result := arctan(lDerivateVector.Y / lDerivateVector.X) +end; + +// See http://www.lemoda.net/maths/bezier-length/index.html +// See http://steve.hollasch.net/cgindex/curves/cbezarclen.html for a more complex method +function BezierEquation_GetLength(P1, P2, P3, P4: T3DPoint; AMaxT: Double; ASteps: Integer): Double; +var + lCurT, x_diff, y_diff: Double; + i, lCurStep: Integer; + lCurPoint, lPrevPoint: T3DPoint; +begin + Result := 0.0; + + for i := 0 to ASteps do + begin + lCurT := i / ASteps; + if lCurT > AMaxT then Exit; + lCurPoint := BezierEquation_GetPoint(lCurT, P1, P2, P3, P4); + if i = 0 then + begin + lPrevPoint := lCurPoint; + Continue; + end; + + x_diff := lCurPoint.x - lPrevPoint.x; + y_diff := lCurPoint.y - lPrevPoint.y; + Result := Result + sqrt(sqr(x_diff) + sqr(y_diff)); + lPrevPoint := lCurPoint; + end; +end; + +function BezierEquation_GetT_ForLength(P1, P2, P3, P4: T3DPoint; ALength: Double; ASteps: Integer): Double; +var + i: Integer; + LeftT, RightT: Double; + + function IsLeftBetter(): Boolean; + var + lLeftLen, lRightLen: Double; + begin + lLeftLen := BezierEquation_GetLength(P1, P2, P3, P4, LeftT, ASteps); + lRightLen := BezierEquation_GetLength(P1, P2, P3, P4, RightT, ASteps); + Result := Abs(lLeftLen - ALength) < Abs(lRightLen - ALength); + end; + +begin + LeftT := 0; + RightT := 1; + + for i := 0 to ASteps do + begin + if IsLeftBetter() then + RightT := (RightT + LeftT) / 2 + else + LeftT := (RightT + LeftT) / 2; + end; + + if IsLeftBetter() then + Result := RightT + else + Result := LeftT; +end; + +function BezierEquation_GetPointAndTangentForLength(P1, P2, P3, P4: T3DPoint; + ADistance: Double; out AX, AY, ATangentAngle: Double; ASteps: Integer): Boolean; +var + lCurT: Double; + lCurPoint: T3DPoint; +begin + Result := False; + lCurT := BezierEquation_GetT_ForLength(P1, P2, P3, P4, ADistance, ASteps); + lCurPoint := BezierEquation_GetPoint(lCurT, P1, P2, P3, P4); + AX := lCurPoint.X; + AY := lCurPoint.Y; + ATangentAngle := BezierEquation_GetTangent(lCurT, P1, P2, P3, P4); + Result := True; +end; + +// Calculate center of ellipse defined by two points on its perimeter, the +// major and minor axes, and the "sweep" and "large-angle" flags. +// Calculation follows the SVG implementation notes +// see: http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes +// - (x1, y1) absolute coordinates of start point of arc +// - (x2, y2) absolute coordinates of end point of arc +// - rx, ry: radii of major and minor ellipse axes. Must be > 0. Use abs() if necessary. +// - phi: rotation angle of ellipse +// - fa: large arc flag (false = small arc, true = large arc) +// - fs: sweep flag (false = counterclockwise, true = clockwise) +// - cx, cy: Center coordinates of ellipse +// - Function result is false if the center cannot be calculated +function CalcEllipseCenter(x1,y1, x2,y2, rx,ry, phi: Double; fa, fs: Boolean; + out cx,cy, lambda: Double): Boolean; +const + EPS = 1E-9; +var + sinphi, cosphi: Extended; + x1p, x2p, y1p, y2p: Double; // x1', x2', y1', y2' + cxp, cyp: Double; // cx', cy' + m: Double; +begin + Result := false; + if (rx = 0) or (ry = 0) then + exit; + + rx := abs(rx); // only positive radii! + ry := abs(ry); + SinCos(phi, sinphi, cosphi); + + // (F.6.5.1) in above document + x1p := ( cosphi*(x1-x2) + sinphi*(y1-y2)) / 2; + y1p := (-sinphi*(x1-x2) + cosphi*(y1-y2)) / 2; + + lambda := sqr(x1p/rx) + sqr(y1p/ry); + if lambda > 1 then + begin + // If the distance of the points is too large in relation to the ellipse + // size there is no solution. SVG Implemantation Notes request in this case + // that the ellipse is magnified so much that a solution exists. + lambda := sqrt(lambda); + rx := rx * lambda; + ry := ry * lambda; + end else + lambda := 1.0; + + // (F.6.5.2) + m := (sqr(rx*ry) - sqr(rx*y1p) - sqr(ry*x1p)) / (sqr(rx*y1p) + sqr(ry*x1p)); + if SameValue(m, 0.0, EPS) then + // Prevent a crash caused by a tiny negative sqrt argument due to rounding error. + m := 0 + else if m < 0 then + exit; + // Exit if point distance is too large and return "false" - but this + // should no happen after having applied lambda! + m := sqrt(m); // Positive root for fa <> fs + if fa = fs then m := -m; // Negative root for fa = fs. + cxp := m * rx / ry * y1p; + cyp := -m * ry / rx * x1p; + + // (F.6.5.3) + cx := cosphi*cxp - sinphi*cyp + (x1 + x2) / 2; + cy := sinphi*cxp + cosphi*cyp + (y1 + y2) / 2; + + // If the function gets here we have a valid ellipse center in cx,cy + Result := true; +end; + +{ Calculates the arc angle (in radians) of the point (x,y) on the perimeter of + an ellipse with radii rx,ry and center cx,cy. phi is the rotation angle of + the ellipse major axis with the x axis. + The result is in the range 0 .. 2pi} +function CalcEllipsePointAngle(x,y, rx,ry, cx,cy, phi: Double): Double; +var + p: T3DPoint; +begin + // Rotate ellipse back to align its major axis with the x axis + P := Rotate3dPointInXY(Make3dPoint(x-cx, y-cy, 0), Make3dPoint(0, 0, 0), phi); + // Correctly speaking, above line should use -phi, instead of phi. But + // Make3DPointInXY seems to define the angle in the opposite way. + Result := arctan2(P.Y/ry, P.X/rx); + if Result < 0 then Result := TWO_PI + Result; +end; + +{ Calculates the x,y coordinates of a point on an ellipse defined by these + parameters: + - rx, ry: major and minor radius + - phi: rotation angle of the ellipse (angle between major axis and x axis) + - t: angle between x axis and line from ellipse center to point + + parameterized: + x = cx + rx*cos(t)*cos(phi) - ry*sin(t)*sin(phi) [1] + y = cy + ry*sin(t)*cos(phi) + rx*cos(t)*sin(phi) [2] } +procedure CalcEllipsePoint(t, rx,ry, cx,cy, phi: Double; out x,y: Double); +var + P: T3dPoint; + cost, sint: Extended; + cosphi, sinphi: Extended; +begin + SinCos(t, sint, cost); + SinCos(phi, sinphi, cosphi); + x := cx + rx*cost*cosphi - ry*sint*sinphi; + y := cy + ry*sint*cosphi + rx*cost*sinphi; +end; + +{ Converts a path to one or more polygons. The polygon vertices are returned + in "PolygonPoints"; they are given in canvas units (pixels). + Since the path can contain several polygons the start index of each polygon + is returned in "PolygonStartIndexes". } +procedure ConvertPathToPolygons(APath: TPath; + ADestX, ADestY: Integer; AMulX, AMulY: Double; + var PolygonPoints: TPointsArray; + var PolygonStartIndexes: TIntegerDynArray); +const + POINT_BUFFER = 100; +var + i, j: Integer; + numPoints: Integer; + numPolygons: Integer; + coordX, coordY: Integer; + coordX2, coordY2, coordX3, coordY3, coordX4, coordY4: Integer; + // temporary point arrays + pts: array of TPoint; + pts3D: T3dPointsArray; + // Segments + curSegment: TPathSegment; + cur2DSegment: T2DSegment absolute curSegment; + cur2DBSegment: T2DBezierSegment absolute curSegment; + cur2DArcSegment: T2DEllipticalArcSegment absolute curSegment; +begin + if (APath = nil) then + begin + SetLength(PolygonPoints, 0); + SetLength(PolygonStartIndexes, 0); + exit; + end; + + SetLength(PolygonPoints, POINT_BUFFER); + SetLength(PolygonStartIndexes, POINT_BUFFER); + numPoints := 0; + numPolygons := 0; + + APath.PrepareForSequentialReading; + for i := 0 to APath.Len - 1 do + begin + curSegment := TPathSegment(APath.Next); + + if (i = 0) and (curSegment.SegmentType <> stMoveTo) then + raise Exception.Create('Path must start with a "MoveTo" command'); + + case curSegment.SegmentType of + stMoveTo: + begin + // Store current length of points array as polygon start index + if numPolygons >= Length(PolygonStartIndexes) then + SetLength(PolygonstartIndexes, Length(PolygonStartIndexes) + POINT_BUFFER); + PolygonStartIndexes[numPolygons] := numPoints; + inc(numPolygons); + + // Store current point as first point of a new polygon + coordX := CoordToCanvasX(cur2DSegment.X, ADestX, AMulX); + coordY := CoordToCanvasY(cur2DSegment.Y, ADestY, AMulY); + if numPoints >= Length(PolygonPoints) then + SetLength(PolygonPoints, Length(PolygonPoints) + POINT_BUFFER); + PolygonPoints[numPoints] := Point(coordX, coordY); + inc(numPoints); + end; + + st2DLine, st3DLine, st2DLineWithPen: + begin + // Add current point to current polygon + coordX := CoordToCanvasX(cur2DSegment.X, ADestX, AMulX); + coordY := CoordToCanvasY(cur2DSegment.Y, ADestY, AMulY); + if numPoints >= Length(PolygonPoints) then + SetLength(PolygonPoints, Length(PolygonPoints) + POINT_BUFFER); + PolygonPoints[numPoints] := Point(coordX, coordY); + inc(numPoints); + end; + + st2DBezier, st3DBezier, st2DEllipticalArc: + begin + SetLength(PolygonPoints, numPoints); + curSegment.AddToPoints(ADestX, ADestY, AMulX, AMulY, PolygonPoints); + numPoints := Length(PolygonPoints); + end; + end; + end; + SetLength(PolygonPoints, numPoints); + SetLength(PolygonStartIndexes, numPolygons); +end; + procedure ConvertPathToPoints(APath: TPath; ADestX, ADestY: Integer; AMulX, AMulY: Double; var Points: TPointsArray); var i, LastPoint: Integer; @@ -297,10 +672,10 @@ CoordX3 := CoordToCanvasX(Cur2DBSegment.X3, ADestX, AMulX); CoordY3 := CoordToCanvasY(Cur2DBSegment.Y3, ADestY, AMulY); AddBezierToPoints( - Make2DPoint(CoordX, CoordY), - Make2DPoint(CoordX2, CoordY2), - Make2DPoint(CoordX3, CoordY3), - Make2DPoint(CoordX4, CoordY4), + Make3DPoint(CoordX, CoordY, 0), + Make3DPoint(CoordX2, CoordY2, 0), + Make3DPoint(CoordX3, CoordY3, 0), + Make3DPoint(CoordX4, CoordY4, 0), Points); end; else @@ -312,6 +687,77 @@ end; end; +function CompareDbl(P1, P2: Pointer): Integer; +var + val1, val2: ^Double; +begin + val1 := P1; + val2 := P2; + Result := CompareValue(val1^, val2^); +end; + +{@@ Calculates the intersection points of a vertical (ACoordIsX = true) or + horizontal (ACoordIsX = false) line with border of the polygon specified + by APoints. Returns the coordinates of the intersection points } +function GetLinePolygonIntersectionPoints(ACoord: Double; + const APoints: T2DPointsArray; ACoordIsX: Boolean): T2DPointsArray; +const + EPS = 1e-9; +var + j: Integer; + dx, dy: Double; + xval, yval: Double; + val: ^Double; + list: TFPList; +begin + list := TFPList.Create; + if ACoordIsX then + begin + for j:=0 to High(APoints) - 1 do + begin + if ((APoints[j].X <= ACoord) and (ACoord < APoints[j+1].X)) or + ((APoints[j+1].X <= ACoord) and (ACoord < APoints[j].X)) then + begin + dx := APoints[j+1].X - APoints[j].X; // can't be zero here + dy := APoints[j+1].Y - APoints[j].Y; + New(val); + val^ := APoints[j].Y + (ACoord - APoints[j].X) * dy / dx; + list.Add(val); + end; + end; + end else + begin + for j:=0 to High(APoints) - 1 do + if ((APoints[j].Y <= ACoord) and (ACoord < APoints[j+1].Y)) or + ((APoints[j+1].Y <= ACoord) and (ACoord < APoints[j].Y)) then + begin + dy := APoints[j+1].Y - APoints[j].Y; // can't be zero here + dx := APoints[j+1].X - APoints[j].X; + New(val); + val^ := APoints[j].X + (ACoord - APoints[j].Y) * dx / dy; + list.Add(val); + end; + end; + + // Sort intersection coordinates in ascending order + list.Sort(@CompareDbl); + SetLength(Result, list.Count); + if ACoordIsX then + for j:=0 to list.Count-1 do + Result[j] := Point2D(ACoord, Double(list[j]^)) + else + for j:=0 to list.Count-1 do + Result[j] := Point2D(Double(list[j]^), ACoord); + + // Clean-up + for j:=list.Count-1 downto 0 do + begin + val := List[j]; + Dispose(val); + end; + list.Free; +end; + // Rotates a point P around RotCenter function Rotate2DPoint(P, RotCenter: TPoint; alpha:double): TPoint; var @@ -326,6 +772,8 @@ // Rotates a point P around RotCenter // alpha angle in radians +// Be CAREFUL: the angle used here grows in clockwise direction. This is +// against mathematical convention! function Rotate3DPointInXY(P, RotCenter: T3DPoint; alpha:double): T3DPoint; var sinus, cosinus : Extended; @@ -333,8 +781,27 @@ SinCos(alpha, sinus, cosinus); P.x := P.x - RotCenter.x; P.y := P.y - RotCenter.y; - result.x := Round(p.x*cosinus + p.y*sinus) + RotCenter.x; - result.y := Round(-p.x*sinus + p.y*cosinus) + RotCenter.y; + result.x := Round( p.x*cosinus + p.y*sinus) + RotCenter.x; + result.y := Round(-p.x*sinus + p.y*cosinus) + RotCenter.y; + result.z := P.z; +end; + +procedure NormalizeRect(var ARect: TRect); +var + tmp: Integer; +begin + if ARect.Left > ARect.Right then + begin + tmp := ARect.Left; + ARect.left := ARect.Right; + ARect.Right := tmp; + end; + if ARect.Top > ARect.Bottom then + begin + tmp := ARect.Top; + ARect.Top := ARect.Bottom; + ARect.Bottom := tmp; + end; end; // Current Transformation Matrix @@ -395,14 +862,12 @@ var lError, lErr1, lErr2, lErr3, lErr4: Double; lParam1, lParam2: Double; - lIterations: Integer; lCount: Integer; begin lErr1 := ANumericalEquation(0); lErr2 := ANumericalEquation(Pi/2); lErr3 := ANumericalEquation(Pi); lErr4 := ANumericalEquation(3*Pi/2); - // Choose the place to start if (lErr1 < lErr2) and (lErr1 < lErr3) and (lErr1 < lErr4) then begin @@ -414,7 +879,7 @@ lParam1 := 0; lParam2 := Pi; end - else if (lErr2 < lErr3) and (lErr2 < lErr4) then + else if (lErr2 < lErr3) and (lErr2 < lErr4) then // wp: same as above! begin lParam1 := Pi/2; lParam2 := 3*Pi/2; @@ -422,7 +887,7 @@ else begin lParam1 := Pi; - lParam2 := 2*Pi; + lParam2 := TWO_PI; end; // Iterate as many times necessary to get the best answer! diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/htmlvectorialreader.pas lazarus-1.6+dfsg/components/fpvectorial/htmlvectorialreader.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/htmlvectorialreader.pas 2014-09-23 13:37:10.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/htmlvectorialreader.pas 2015-05-19 15:20:47.000000000 +0000 @@ -28,17 +28,23 @@ private FPointSeparator, FCommaSeparator: TFormatSettings; // + function GetTextContentFromNode(ANode: TDOMNode): string; + // function ReadEntityFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; function ReadHeaderFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; - function ReadParagraphFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; + procedure ReadParagraphFromNode(ADest: TvParagraph; ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument); function ReadSVGFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; function ReadMathFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; + function ReadTableFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; + function ReadTableRowNode(ATable: TvTable; ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; + function ReadUListFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; public { General reading methods } constructor Create; override; Destructor Destroy; override; procedure ReadFromStrings(AStrings: TStrings; AData: TvVectorialDocument); override; procedure ReadFromXML(Doc: TXMLDocument; AData: TvVectorialDocument); + class function IsSupportedRasterImage(AFileName: string): Boolean; end; implementation @@ -57,18 +63,45 @@ { TvHTMLVectorialReader } +function TvHTMLVectorialReader.GetTextContentFromNode(ANode: TDOMNode): string; +var + i: Integer; +begin + Result := ''; + for i := 0 to ANode.ChildNodes.Count-1 do + begin + if ANode.ChildNodes.Item[i] is TDOMText then + Result := ANode.ChildNodes.Item[i].NodeValue; + end; +end; + +// if something is returned, it will be added to the base document +// if nothing is returned, either nothing was written, or it was already added function TvHTMLVectorialReader.ReadEntityFromNode(ANode: TDOMNode; AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; var lEntityName: DOMString; + lPara: TvParagraph; begin Result := nil; lEntityName := LowerCase(ANode.NodeName); case lEntityName of 'h1', 'h2', 'h3', 'h4', 'h5', 'h6': Result := ReadHeaderFromNode(ANode, AData, ADoc); - 'p': Result := ReadParagraphFromNode(ANode, AData, ADoc); + 'p': + begin + lPara := AData.AddParagraph(); + ReadParagraphFromNode(lPara, ANode, AData, ADoc); + Result := nil; + end; 'svg': Result := ReadSVGFromNode(ANode, AData, ADoc); 'math': Result := ReadMathFromNode(ANode, AData, ADoc); + 'table': Result := ReadTableFromNode(ANode, AData, ADoc); + 'br': + begin + AData.AddParagraph().AddText(LineEnding); + Result := nil; + end; + 'ul': Result := ReadUListFromNode(ANode, AData, ADoc); end; end; @@ -96,18 +129,163 @@ end; end; -function TvHTMLVectorialReader.ReadParagraphFromNode(ANode: TDOMNode; - AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; +procedure TvHTMLVectorialReader.ReadParagraphFromNode(ADest: TvParagraph; ANode: TDOMNode; + AData: TvTextPageSequence; ADoc: TvVectorialDocument); var - CurParagraph: TvParagraph; - lText: TvText; - lTextStr: string; + lText: TvText = nil; + lTextStr: string = ''; + lCurNode: TDOMNode; + lNodeName, lNodeValue, lAttrName, lAttrValue: DOMString; + lCurAttr: TDOMNode; + lRasterImage: TvRasterImage; + lEmbVecImg: TvEmbeddedVectorialDoc = nil; + i: Integer; + lWidth, lHeight: Double; + lAltText: string; + // xlink:href + lx, ly, lw, lh: Double; + lImageDataParts: TStringList; + lImageDataBase64: string; + lImageData: array of Byte; + lImageDataStream: TMemoryStream; + lImageReader: TFPCustomImageReader; + + procedure TextMerging(); + begin + if lTextStr <> '' then + begin + if lText = nil then + lText := ADest.AddText(lTextStr) + else + lText.Value.Add(lTextStr); + lTextStr := ''; + end; + end; + begin - Result := nil; - CurParagraph := AData.AddParagraph(); - CurParagraph.Style := ADoc.StyleTextBody; - lTextStr := ANode.FirstChild.NodeValue; - lText := CurParagraph.AddText(lTextStr); + ADest.Style := ADoc.StyleTextBody; + + lCurNode := ANode.FirstChild; + while Assigned(lCurNode) do + begin + lNodeName := LowerCase(lCurNode.NodeName); + lNodeValue := lCurNode.NodeValue; + + if (lCurNode is TDOMText) then + begin + lTextStr += RemoveLineEndingsAndTrim(lNodeValue); + lCurNode := lCurNode.NextSibling; + Continue; + end; + + // text merging + TextMerging(); + // reset text merging + if lNodeName <> 'br' then + lText := nil; + + case lNodeName of + // <image width="100" height="100" xlink:href="data:image/png;base64,UgAAA....QSK5CYII="/> + // <img src="images/noimage.gif" width="100" height="100" alt="No image" /> + 'img', 'image': + begin + lRasterImage := nil; + lEmbVecImg := nil; + lWidth := -1; + lHeight := -1; + lAltText := ''; + + for i := 0 to lCurNode.Attributes.Length - 1 do + begin + lCurAttr := lCurNode.Attributes.Item[i]; + lAttrName := lCurAttr.NodeName; + lAttrValue := lCurAttr.NodeValue; + + case lAttrName of + 'alt': + begin + lAltText := lAttrValue; + end; + 'src': + begin + lAttrValue := lCurAttr.NodeValue; + lAttrValue := ExtractFilePath(FFilename) + lAttrValue; + + if TvHTMLVectorialReader.IsSupportedRasterImage(lAttrValue) then + begin + if not FileExists(lAttrValue) then Continue; + + lRasterImage := ADest.AddRasterImage(); + lRasterImage.CreateImageFromFile(lAttrValue); + end + else if TvVectorialDocument.GetFormatFromExtension(lAttrValue, False) <> vfUnknown then + begin + lEmbVecImg := ADest.AddEmbeddedVectorialDoc(); + lEmbVecImg.Document.ReadFromFile(lAttrValue); + end; + end; + 'xlink:href': + begin + lRasterImage := ADest.AddRasterImage(); + lImageDataParts := TvSVGVectorialReader.ReadSpaceSeparatedStrings(lNodeValue, ':;,'); + try + if (lImageDataParts.Strings[0] = 'data') and + (lImageDataParts.Strings[1] = 'image/png') and + (lImageDataParts.Strings[2] = 'base64') then + begin + lImageReader := TFPReaderPNG.Create; + lImageDataStream := TMemoryStream.Create; + try + lImageDataBase64 := lImageDataParts.Strings[3]; + DecodeBase64(lImageDataBase64, lImageDataStream); + lImageDataStream.Position := 0; + lRasterImage.CreateRGB888Image(10, 10); + lRasterImage.RasterImage.LoadFromStream(lImageDataStream, lImageReader); + finally + lImageDataStream.Free; + lImageReader.Free; + end; + end + else + raise Exception.Create('[TvSVGVectorialReader.ReadImageFromNode] Unimplemented image format'); + finally + lImageDataParts.Free; + end; + end; + 'width': + begin + lWidth := StrToInt(lAttrValue); + end; + 'height': + begin + lHeight := StrToInt(lAttrValue); + end; + end; + end; + + if lRasterImage <> nil then + begin + if lWidth <= 0 then + lWidth := lRasterImage.RasterImage.Width; + if lHeight <= 0 then + lHeight := lRasterImage.RasterImage.Height; + + lRasterImage.Width := lWidth; + lRasterImage.Height := lHeight; + lRasterImage.AltText := lAltText; + end + else if (lEmbVecImg <> nil) and (lWidth > 0) and (lHeight > 0) then + begin + lEmbVecImg.Width := lWidth; + lEmbVecImg.Height := lHeight; + end; + end; + end; + + lCurNode := lCurNode.NextSibling; + end; + + TextMerging(); end; function TvHTMLVectorialReader.ReadSVGFromNode(ANode: TDOMNode; @@ -150,6 +328,169 @@ end; end; +function TvHTMLVectorialReader.ReadTableFromNode(ANode: TDOMNode; + AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; +var + CurTable: TvTable; + lCurNode, lCurSubnode: TDOMNode; + lNodeName, lNodeValue: DOMString; + CurRow: TvTableRow; + Caption_Cell: TvTableCell; + CurCellPara: TvParagraph; + // attributes + i, lBorderNr: Integer; + lAttrName, lAttrValue: DOMString; + + procedure SetBorderLineType(AType: TvTableBorderType); + begin + CurTable.Borders.Left.LineType := AType; + CurTable.Borders.Right.LineType := AType; + CurTable.Borders.Top.LineType := AType; + CurTable.Borders.Bottom.LineType := AType; + CurTable.Borders.InsideHoriz.LineType := AType; + CurTable.Borders.InsideVert.LineType := AType; + end; + +begin + Result := nil; + CurTable := AData.AddTable(); + CurTable.CellSpacingLeft := 3; + CurTable.CellSpacingTop := 2; + + // Default to no border without "border" attribute + SetBorderLineType(tbtNone); + + // table attributes + for i := 0 to ANode.Attributes.Length - 1 do + begin + lAttrName := ANode.Attributes.Item[i].NodeName; + lAttrValue := ANode.Attributes.Item[i].NodeValue; + + case lAttrName of + 'border': + begin + lBorderNr := StrToInt(lAttrValue); + + SetBorderLineType(tbtSingle); + CurTable.Borders.Left.Width := lBorderNr; + CurTable.Borders.Right.Width := lBorderNr; + CurTable.Borders.Top.Width := lBorderNr; + CurTable.Borders.Bottom.Width := lBorderNr; + CurTable.Borders.InsideHoriz.Width := lBorderNr; + CurTable.Borders.InsideVert.Width := lBorderNr; + + if lBorderNr = 0 then + SetBorderLineType(tbtNone); + end; + end; + end; + + // table child nodes + lCurNode := ANode.FirstChild; + while Assigned(lCurNode) do + begin + lNodeName := lCurNode.NodeName; + lNodeValue := lCurNode.NodeValue; + case lNodeName of + 'caption': + begin + CurRow := CurTable.AddRow(); + Caption_Cell := CurRow.AddCell(); + {Caption_Cell.Borders.Left.LineType := tbtNone; + Caption_Cell.Borders.Top.LineType := tbtNone; + Caption_Cell.Borders.Right.LineType := tbtNone; + Caption_Cell.Borders.Bottom.LineType := tbtNone;} + CurCellPara := Caption_Cell.AddParagraph(); + CurCellPara.Style := ADoc.StyleTextBodyCentralized; + CurCellPara.AddText(GetTextContentFromNode(lCurNode)); + end; + 'tbody': + begin + lCurSubnode := lCurNode.FirstChild; + while Assigned(lCurSubnode) do + begin + ReadTableRowNode(CurTable, lCurSubnode, AData, ADoc); + + lCurSubnode := lCurSubnode.NextSibling; + end; + end; + end; + + lCurNode := lCurNode.NextSibling; + end; + + // the caption spans all columns + Caption_Cell.SpannedCols := CurTable.GetColCount(); +end; + +function TvHTMLVectorialReader.ReadTableRowNode(ATable: TvTable; ANode: TDOMNode; + AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; +var + lCurNode: TDOMNode; + lNodeName, lNodeValue: DOMString; + CurRow: TvTableRow; + CurCell: TvTableCell; + CurCellPara: TvParagraph; +begin + Result := nil; + CurRow := ATable.AddRow(); + + lCurNode := ANode.FirstChild; + while Assigned(lCurNode) do + begin + lNodeName := lCurNode.NodeName; + lNodeValue := lCurNode.NodeValue; + case lNodeName of + 'th': + begin + CurCell := CurRow.AddCell(); + CurCellPara := CurCell.AddParagraph(); + CurCellPara.Style := ADoc.StyleTextBodyBold; + CurCellPara.AddText(GetTextContentFromNode(lCurNode)); + end; + 'td': + begin + CurCell := CurRow.AddCell(); + + CurCellPara := CurCell.AddParagraph(); + Self.ReadParagraphFromNode(CurCellPara, lCurNode, AData, ADoc); + end; + end; + + lCurNode := lCurNode.NextSibling; + end; +end; + +function TvHTMLVectorialReader.ReadUListFromNode(ANode: TDOMNode; + AData: TvTextPageSequence; ADoc: TvVectorialDocument): TvEntity; +var + lCurNode: TDOMNode; + lNodeName, lNodeValue: DOMString; + lNodeText: string; + // + lList: TvList; + lCurPara: TvParagraph; +begin + Result := nil; + lList := AData.AddList(); + + lCurNode := ANode.FirstChild; + while Assigned(lCurNode) do + begin + lNodeName := lCurNode.NodeName; + lNodeValue := lCurNode.NodeValue; + case lNodeName of + 'li': + begin + lNodeText := GetTextContentFromNode(lCurNode); + lCurPara := lList.AddParagraph(lNodeText); + end; + end; + + lCurNode := lCurNode.NextSibling; + end; +end; + constructor TvHTMLVectorialReader.Create; begin inherited Create; @@ -240,6 +581,18 @@ end; end; +class function TvHTMLVectorialReader.IsSupportedRasterImage(AFileName: string): Boolean; +var + lExt: string; +begin + Result := False; + lExt := LowerCase(ExtractFileExt(AFileName)); + case lExt of + '.png', '.jpg', '.jpeg', '.bmp', '.xpm': + Result := True + end; +end; + initialization RegisterVectorialReader(TvHTMLVectorialReader, vfHTML); diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/mathmlvectorialreader.pas lazarus-1.6+dfsg/components/fpvectorial/mathmlvectorialreader.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/mathmlvectorialreader.pas 2014-11-21 15:48:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/mathmlvectorialreader.pas 2015-03-24 17:50:02.000000000 +0000 @@ -13,9 +13,9 @@ interface uses - Classes, SysUtils, math, + Classes, SysUtils, laz2_xmlread, laz2_dom, - fpvectorial, fpvutils, lazutf8; + fpvectorial; type { TvMathMLVectorialReader } diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/odgvectorialreader.pas lazarus-1.6+dfsg/components/fpvectorial/odgvectorialreader.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/odgvectorialreader.pas 2014-03-06 14:06:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/odgvectorialreader.pas 2015-03-24 17:50:02.000000000 +0000 @@ -554,7 +554,6 @@ procedure TvODGVectorialReader.ApplyGraphicAttributeToPenAndBrush(ANodeName, ANodeValue: string; var APen: TvPen; var ABrush: TvBrush); var - i: Integer; lColor: TFPColor; begin case ANodeName of @@ -920,10 +919,9 @@ procedure TvODGVectorialReader.ConvertPathStringToTPath(AStr: string; AData: TvVectorialPage; ADest: TPath; ADeltaX, ADeltaY: Double; AInfo: TCustomShapeInfo); var - x1, y1, x2, y2, lCurX, lCurY: double; + x1, y1, x2, y2: double; t1, t2, lSrcX, lSrcY, lDestX, lDestY: Double; j: Integer; - lNodeName, lNodeValue: string; lTokenizer: TSVGPathTokenizer; CurToken: TSVGToken; begin @@ -931,8 +929,6 @@ y1 := 0.0; x2 := 0.0; y2 := 0.0; - lCurX := 0.0; - lCurY := 0.0; lTokenizer := TSVGPathTokenizer.Create; try @@ -1091,7 +1087,7 @@ x1, y1, x2, y2, lWidth, lHeight: double; i: Integer; lNodeName, lNodeValue: string; - lCurNode, lTextNode, lEnhancedGeometryNode, lDrawTypeAttrib: TDOMNode; + lCurNode: TDOMNode; lSkewX, lSkewY, lRotate, lTranslateX, lTranslateY: Double; // various possible custom shape types lGroup: TvEntityWithSubEntities; @@ -1673,7 +1669,6 @@ var lValue, lStr: string; lStrings: TStringList; - i: Integer; begin Result := colBlack; lValue := Trim(LowerCase(AValue)); @@ -2302,7 +2297,6 @@ var DocStylesNode, AutomaticStylesNode, MasterStylesNode, ElementNode: TDOMNode; CurPage: TvVectorialPage; - i: Integer; lNodeName: String; begin DocStylesNode := AXMLDocument.DocumentElement;//.FindNode('office:document-styles'); diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/svgvectorialreader.pas lazarus-1.6+dfsg/components/fpvectorial/svgvectorialreader.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/svgvectorialreader.pas 2014-12-17 14:00:19.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/svgvectorialreader.pas 2016-01-18 22:55:11.000000000 +0000 @@ -67,13 +67,15 @@ { TSVGPathTokenizer } TSVGPathTokenizer = class + protected + Tokens: TSVGTokenList; public FPointSeparator, FCommaSeparator: TFormatSettings; - Tokens: TSVGTokenList; ExtraDebugStr: string; constructor Create; - Destructor Destroy; override; + destructor Destroy; override; procedure AddToken(AStr: string); + procedure ClearTokens; procedure TokenizePathString(AStr: string); procedure TokenizeFunctions(AStr: string); function DebugOutTokensAsString: string; @@ -98,18 +100,22 @@ // debug symbols FPathNumber: Integer; function ReadSVGColor(AValue: string): TFPColor; - function ReadSVGStyle(AValue: string; ADestEntity: TvEntityWithPen; ADestStyle: TvStyle = nil; AUseFillAsPen: Boolean = False): TvSetPenBrushAndFontElements; + function ReadSVGGradientColorStyle(AValue: String): TFPColor; + function ReadSVGStyle(AData: TvVectorialPage; AValue: string; + ADestEntity: TvEntityWithPen; ADestStyle: TvStyle = nil; + AUseFillAsPen: Boolean = False): TvSetPenBrushAndFontElements; function ReadSVGStyleToStyleLists(AValue: string; AStyleKeys, AStyleValues: TStringList): TvSetPenBrushAndFontElements; function ReadSVGPenStyleWithKeyAndValue(AKey, AValue: string; ADestEntity: TvEntityWithPen): TvSetPenBrushAndFontElements; function ReadSVGBrushStyleWithKeyAndValue(AKey, AValue: string; ADestEntity: TvEntityWithPenAndBrush): TvSetPenBrushAndFontElements; function ReadSVGFontStyleWithKeyAndValue(AKey, AValue: string; ADestEntity: TvEntityWithPenBrushAndFont; ADestStyle: TvStyle = nil): TvSetPenBrushAndFontElements; - function ReadSVGGeneralStyleWithKeyAndValue(AKey, AValue: string; ADestEntity: TvEntity): TvSetPenBrushAndFontElements; + procedure ReadSVGGeneralStyleWithKeyAndValue(AData: TvVectorialPage; + AKey, AValue: string; ADestEntity: TvEntity); function IsAttributeFromStyle(AStr: string): Boolean; - procedure ApplyLayerStyles(ADestEntity: TvEntity); + procedure ApplyLayerStyles(AData: TvVectorialPage; ADestEntity: TvEntity); function ReadSpaceSeparatedFloats(AInput: string; AOtherSeparators: string): TDoubleArray; - function ReadSpaceSeparatedStrings(AInput: string; AOtherSeparators: string): TStringList; procedure ReadSVGTransformationMatrix(AMatrix: string; out AA, AB, AC, AD, AE, AF: Double); // + function GetTextContentFromNode(ANode: TDOMNode): string; procedure ReadDefsFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument); // function ReadEntityFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity; @@ -130,9 +136,12 @@ function ReadTextFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity; function ReadUseFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity; // + procedure StringToPenPattern(const AStr: String; var APen: TvPen); function StringWithUnitToFloat(AStr: string; ACoordKind: TSVGCoordinateKind = sckUnknown; ADefaultUnit: TSVGUnit = suPX; ATargetUnit: TSVGUnit = suPX): Double; function StringFloatZeroToOneToWord(AStr: string): Word; + function StringWithPercentToFloat(AStr: String): Double; + procedure ConvertSVGCoordinatesToFPVCoordinates( const AData: TvVectorialPage; const ASrcX, ASrcY: Double; var ADestX, ADestY: Double; @@ -147,12 +156,14 @@ ADoViewBoxAdjust: Boolean = True); procedure AutoDetectDocSize(var ALeft, ATop, ARight, ABottom: Double; ABaseNode: TDOMNode); function SVGColorValueStrToWord(AStr: string): Word; + public { General reading methods } constructor Create; override; Destructor Destroy; override; procedure ReadFromStream(AStream: TStream; AData: TvVectorialDocument); override; procedure ReadFromXML(Doc: TXMLDocument; AData: TvVectorialDocument); override; + class function ReadSpaceSeparatedStrings(AInput: string; AOtherSeparators: string): TStringList; end; implementation @@ -166,8 +177,8 @@ // 90 inches per pixel = (1 / 90) * 25.4 = 0.2822 // FLOAT_MILIMETERS_PER_PIXEL = 0.3528; // DPI 72 = 1 / 72 inches per pixel - FLOAT_MILIMETERS_PER_PIXEL = 1; //0.2822; // DPI 90 = 1 / 90 inches per pixel => Actually I changed the value! Because otherwise it looks ugly! - FLOAT_PIXELS_PER_MILIMETER = 1 / FLOAT_MILIMETERS_PER_PIXEL; // DPI 90 = 1 / 90 inches per pixel + FLOAT_MILLIMETERS_PER_PIXEL = 1; //0.2822; // DPI 90 = 1 / 90 inches per pixel => Actually I changed the value! Because otherwise it looks ugly! + FLOAT_PIXELS_PER_MILIMETER = 1 / FLOAT_MILLIMETERS_PER_PIXEL; // DPI 90 = 1 / 90 inches per pixel FLOAT_POINTS_PER_PIXEL = 0.75; // For conversion FLOAT_PIXEL_PER_POINT = 1 / FLOAT_POINTS_PER_PIXEL; // For conversion @@ -205,8 +216,8 @@ destructor TSVGPathTokenizer.Destroy; begin + ClearTokens; Tokens.Free; - inherited Destroy; end; @@ -215,11 +226,12 @@ lToken: TSVGToken; lStr: string; begin - lToken := TSVGToken.Create; +// lToken := TSVGToken.Create; lStr := Trim(AStr); if lStr = '' then Exit; + lToken := TSVGToken.Create; // Moves if lStr[1] = 'M' then lToken.TokenType := sttMoveTo else if lStr[1] = 'm' then lToken.TokenType := sttRelativeMoveTo @@ -270,16 +282,27 @@ Tokens.Add(lToken); end; +procedure TSVGPathTokenizer.ClearTokens; +var + i: Integer; +begin + for i := Tokens.Count-1 downto 0 do + Tokens[i].Free; + Tokens.Clear; +end; + procedure TSVGPathTokenizer.TokenizePathString(AStr: string); const Str_Space: Char = ' '; Str_Comma: Char = ','; + Str_Plus: Char = '+'; + Str_Minus: Char = '-'; ListOfCommandLetters: set of Char = ['a'..'d', 'f'..'z', 'A'..'D', 'F'..'Z']; var i: Integer; lTmpStr: string = ''; lState: Integer; - lFirstTmpStrChar, lCurChar: Char; + lFirstTmpStrChar, lCurChar, lPrevChar: Char; begin lState := 0; @@ -289,6 +312,7 @@ case lState of 0: // Adding to the tmp string begin + if i > 0 then lPrevChar := AStr[i-1]; lCurChar := AStr[i]; if lCurChar = Str_Space then begin @@ -301,6 +325,11 @@ AddToken(lTmpStr); lTmpStr := ''; end + else if (lCurChar in [Str_Plus, Str_Minus]) and (lPrevChar in ['0'..'9']) then + begin + AddToken(lTmpStr); + lTmpStr := lCurChar; + end else begin // Check for a break, from letter to number @@ -487,332 +516,248 @@ // Support for named colors // List here: http://www.december.com/html/spec/colorsvghex.html - case lValue of - 'black': Result := colBlack; - 'navy': Result.Blue := $8080; - 'darkblue':Result.Blue := $8B8B; - 'mediumblue':Result.Blue := $CDCD; - 'blue': Result := colBlue; - 'darkgreen':Result.Green := $6464; - 'green': Result.Green := $8080; - 'teal': - begin - Result.Green := $8080; - Result.Blue := $8080; - end; - 'darkcyan': - begin - Result.Green := $8B8B; - Result.Blue := $8B8B; - end; - 'deepskyblue': - begin - Result.Green := $BFBF; - Result.Blue := $FFFF; - end; - 'darkturquoise': - begin - Result.Green := $CECE; - Result.Blue := $D1D1; - end; - 'mediumspringgreen': - begin - Result.Green := $FAFA; - Result.Blue := $9A9A; - end; - 'lime': Result := colGreen; - 'springgreen': - begin - Result.Green := $FFFF; - Result.Blue := $7F7F; - end; - 'cyan': Result := colCyan; - 'aqua': Result := colCyan; - 'midnightblue': - begin - Result.Red := $1919; - Result.Green := $1919; - Result.Blue := $7070; - end; - 'dodgerblue': - begin - Result.Red := $1E1E; - Result.Green := $9090; - Result.Blue := $FFFF; - end; - 'lightseagreen': - begin - Result.Red := $2020; - Result.Green := $B2B2; - Result.Blue := $AAAA; - end; - 'forestgreen': - begin - Result.Red := $2222; - Result.Green := $8B8B; - Result.Blue := $2222; - end; - 'seagreen': - begin - Result.Red := $2E2E; - Result.Green := $8B8B; - Result.Blue := $5757; - end; - 'darkslategray', 'darkslategrey': - begin - Result.Red := $2F2F; - Result.Green := $4F4F; - Result.Blue := $4F4F; + case lValue[1] of + 'a': case lValue of + 'aliceblue' : Result := FPColor($F0F0, $F8F8, $FFFF); + 'antiquewhite' : Result := FPColor($FAFA, $EBEB, $D7D7); + 'aqua' : Result := colCyan; + 'aquamarine' : Result := FPColor($7F7F, $FFFF, $D4D4); + 'azure' : Result := FPColor($F0F0, $FFFF, $FFFF); + end; + + 'b': case lValue of + 'beige' : Result := FPColor($F5F5, $F5F5, $DCDC); + 'bisque' : Result := FPColor($FFFF, $E4E4, $C4C4); + 'black' : Result := colBlack; + 'blanchedalmond' : Result := FPColor($FFFF, $EBEB, $CDCD); + 'blue' : Result := colBlue; + 'blueviolet' : Result := FPColor($8A8A, $2B2B, $E2E2); + 'brown' : Result := FPColor($A5A5, $2A2A, $2A2A); + 'burlywood' : Result := FPColor($DEDE, $B8B8, $8787); + end; + + 'c': case lValue of + 'cadetblue' : Result := FPColor($5F5F, $9E9E, $A0A0); + 'chartreuse' : Result := FPColor($7F7F, $FFFF, $0000); + 'chocolate' : Result := FPColor($D2D2, $6969, $1E1E); + 'coral' : Result := FPColor($FFFF, $7F7F, $5050); + 'cornflowerblue' : Result := FPColor($6464, $9595, $EDED); + 'cornsilk' : Result := FPColor($FFFF, $F8F8, $DCDC); + 'crimson' : Result := FPColor($DCDC, $1414, $3C3C); + 'cyan' : Result := colCyan; + end; + + 'd': case lValue of + 'darkblue' : Result.Blue := $8B8B; + 'darkcyan' : Result := FPColor($0000, $8B8B, $8B8B); + 'darkgoldenrod' : Result := FPColor($B8B8, $8686, $0B0B); + 'darkgray', + 'darkgrey' : Result := FPColor($A9A9, $A9A9, $A9A9); + 'darkgreen' : Result.Green := $6464; + 'darkkhaki' : Result := FPColor($BDBD, $B7B7, $6B6B); + 'darkmagenta' : Result := FPColor($8B8B, $0000, $8B8B); + 'darkolivegreen' : Result := FPColor($5555, $6B6B, $2F2F); + 'darkorange' : Result := FPColor($FFFF, $8C8C, $0000); + 'darkorchid' : Result := FPColor($9999, $3232, $CCCC); + 'darkred' : Result.Red := $8B8B; + 'darksalmon' : Result := FPColor($E9E9, $9696, $7A7A); + 'darkseagreen' : Result := FPColor($8F8F, $BCBC, $8F8F); + 'darkslateblue' : Result := FPColor($4848, $3D3D, $8B8B); + 'darkslategray', + 'darkslategrey' : Result := FPColor($2F2F, $4F4F, $4F4F); + 'darkturquoise' : Result := FPColor($0000, $CECE, $D1D1); + 'darkviolet' : Result := FPColor($9494, $0000, $D3D3); + 'deeppink' : Result := FPColor($FFFF, $1414, $9393); + 'deepskyblue' : Result := FPColor($0000, $BFBF, $FFFF); + 'dimgray', + 'dimgrey' : Result := FPColor($6969, $6969, $6969); + 'dodgerblue' : Result := FPColor($1E1E, $9090, $FFFF); + end; + + 'f': case lValue of + 'firebrick' : Result := FPColor($B2B2, $2222, $2222); + 'floralwhite' : Result := FPColor($FFFF, $FAFA, $F0F0); + 'forestgreen' : Result := FPColor($2222, $8B8B, $2222); + 'fuchsia' : Result := colFuchsia; + end; + + 'g': case lValue of + 'gainsboro' : Result := FPColor($DCDC, $DCDC, $DCDC); + 'ghostwhite' : Result := FPColor($F8F8, $F8F8, $FFFF); + 'gold' : Result := FPColor($FFFF, $D7D7, $0000); + 'goldenrod' : Result := FPColor($DADA, $A5A5, $2020); + 'gray', 'grey' : Result := colGray; + 'green' : Result.Green := $8080; + 'greenyellow' : Result := FPColor($ADAD, $FFFF, $2F2F); + end; + + 'h': case lValue of + 'honeydew' : Result := FPColor($F0F0, $FFFF, $F0F0); + 'hotpink' : Result := FPColor($FFFF, $6969, $B4B4); + end; + + 'i': case lValue of + 'indianred' : Result := FPColor($CDCD, $5C5C, $5C5C); + 'indigo' : Result := FPColor($4B4B, $0000, $8282); + 'ivory' : Result := FPColor($FFFF, $FFFF, $F0F0); + end; + + 'k': case lValue of + 'khaki' : Result := FPColor($F0F0, $E6E6, $8C8C); + end; + + 'l': case lValue of + 'lavender' : Result := FPColor($E6E6, $E6E6, $FAFA); + 'lavenderblush' : Result := FPColor($FFFF, $F0F0, $F5F5); + 'lawngreen' : Result := FPColor($7C7C, $FCFE, $0000); + 'lemonchiffon' : Result := FPColor($FFFF, $FAFA, $CDCD); + 'lightblue' : Result := FPColor($ADAD, $D8D8, $E6E6); + 'lightcoral' : Result := FPColor($F0F0, $8080, $8080); + 'lightcyan' : Result := FPColor($E0E0, $FFFF, $FFFF); + 'lightgoldenrodyellow': Result := FPColor($FAFA, $FAFA, $D2D2); + 'lightgray', + 'lightgrey' : Result := FPColor($D3D3, $D3D3, $D3D3); + 'lightgreen' : Result := FPColor($9090, $EEEE, $9090); + 'lightpink' : Result := FPColor($FFFF, $B6B6, $C1C1); + 'lightsalmon' : Result := FPColor($FFFF, $A0A0, $7A7A); + 'lightseagreen' : Result := FPColor($2020, $B2B2, $AAAA); + 'lightskyblue' : Result := FPColor($8787, $CECE, $FAFA); + 'lightslategray', + 'lightslategrey' : Result := FPColor($7777, $8888, $9999); + 'lightsteelblue' : Result := FPColor($B0B0, $C4C4, $DEDE); + 'lightyellow' : Result := FPColor($FFFF, $FEFE, $0000); + 'lime' : Result := colGreen; + 'limegreen' : Result := FPColor($3232, $CDCD, $3232); + 'linen' : Result := FPColor($FAFA, $F0F0, $E6E6); + end; + + 'm': case lValue of + 'magenta' : Result := colMagenta; + 'maroon' : Result.Red := $8080; + 'mediumaquamarine' : Result := FPColor($6666, $CDCD, $AAAA); + 'mediumblue' : Result.Blue := $CDCD; + 'mediumorchid' : Result := FPColor($BABA, $5555, $D3D3); + 'mediumpurple' : Result := FPColor($9393, $7070, $DBDB); + 'mediumseagreen' : Result := FPColor($3C3C, $CBCB, $7171); + 'mediumslateblue' : Result := FPColor($7B7B, $6868, $EEEE); + 'mediumspringgreen' : Result := FPColor($0000, $FAFA, $9A9A); + 'mediumturquoise' : Result := FPColor($4848, $D1D1, $CCCC); + 'mediumvioletred' : Result := FPColor($C7C7, $1515, $8585); + 'midnightblue' : Result := FPColor($1919, $1919, $7070); + 'mintcream' : Result := FPColor($F5F5, $FFFF, $FAFA); + 'mistyrose' : Result := FPColor($FFFF, $E4E4, $E1E1); + 'moccasin' : Result := FPColor($FFFF, $E4E4, $B5B5); + end; + + 'n': case lValue of + 'navajowhite' : Result := FPColor($FFFF, $DEDE, $ADAD); + 'navy' : Result.Blue := $8080; + end; + + 'o': case lValue of + 'oldlace' : Result := FPColor($FDFD, $F5F5, $E6E6); + 'olive' : Result := colOlive; + 'olivedrab' : Result := FPColor($6B6B, $8E8E, $2323); + 'orange' : Result := FPColor($FFFF, $A5A5, $0000); + 'orangered' : Result := FPColor($FFFF, $4545, $0000); + 'orchid' : Result := FPColor($DADA, $7070, $D6D6); + end; + + 'p': case lValue of + 'palegreen' : Result := FPColor($9898, $FBFB, $9898); + 'palegoldenrod' : Result := FPColor($EEEE, $E8E8, $AAAA); + 'paleturquoise' : Result := FPColor($AFAF, $EEEE, $EEEE); + 'palevioletred' : Result := FPColor($DBDB, $7070, $9393); + 'papayawhip' : Result := FPColor($FFFF, $EFEF, $D5D5); + 'peachpuff' : Result := FPColor($FFFF, $DADA, $B9B9); + 'peru' : Result := FPColor($CDCD, $8585, $3F3F); + 'pink' : Result := FPColor($FFFF, $C0C0, $CBCB); + 'plum' : Result := FPColor($DDDD, $A0A0, $DDDD); + 'powderblue' : Result := FPColor($B0B0, $E0E0, $E6E6); + 'purple' : Result := colPurple; + end; + + 'r': case lValue of + 'red' : Result := colRed; + 'rosybrown' : Result := FPColor($BCBC, $8F8F, $8F8F); + 'royalblue' : Result := FPColor($4141, $6969, $E1E1); + end; + + 's': case lValue of + 'saddlebrown' : Result := FPColor($8B8B, $4545, $1313); + 'salmon' : Result := FPColor($FAFA, $8080, $7272); + 'sandybrown' : Result := FPColor($F4F4, $A4A4, $6060); + 'seagreen' : Result := FPColor($2E2E, $8B8B, $5757); + 'seashell' : Result := FPColor($FFFF, $F5F5, $EEEE); + 'sienna' : Result := FPColor($A0A0, $5252, $2D2D); + 'silver' : Result := colSilver; + 'skyblue' : Result := FPColor($8787, $CECE, $EBEB); + 'slateblue' : Result := FPCOlor($6A6A, $5A5A, $CDCD); + 'slategray', + 'slategrey' : Result := FPColor($7070, $8080, $9090); + 'snow' : Result := FPColor($FFFF, $FAFA, $FAFA); + 'springgreen' : Result := FPColor($0000, $FFFF, $7F7F); + 'steelblue' : Result := FPColor($4646, $8282, $B4B4); + end; + + 't': case lValue of + 'tan' : Result := FPColor($D2D2, $B4B4, $8C8C); + 'teal' : Result := FPColor($0000, $8080, $8080); + 'thistle' : Result := FPColor($D8D8, $BFBF, $D8D8); + 'tomato' : Result := FPColor($FFFF, $6363, $4747); + 'turquoise' : Result := FPColor($4040, $E0E0, $D0D0); + end; + + 'v': case lValue of + 'violet' : Result := FPColor($EEEE, $8282, $EEEE); + end; + + 'w': case lValue of + 'wheat' : Result := FPColor($F5F5, $DEDE, $B3B3); + 'white' : Result := colWhite; + 'whitesmoke' : Result := FPColor($F5F5, $F5F5, $F5F5); + end; + + 'y': case lValue of + 'yellow' : Result := colYellow; + 'yellowgreen' : Result := FPColor($9A9A, $CDCD, $3232); + end; end; - 'limegreen': - begin - Result.Red := $3232; - Result.Green := $CDCD; - Result.Blue := $3232; - end; - 'mediumseagreen': - begin - Result.Red := $3C3C; - Result.Green := $CBCB; - Result.Blue := $7171; - end; - 'turquoise': - begin - Result.Red := $4040; - Result.Green := $E0E0; - Result.Blue := $D0D0; - end; - 'royalblue': - begin - Result.Red := $4141; - Result.Green := $6969; - Result.Blue := $E1E1; - end; - 'steelblue': - begin - Result.Red := $4646; - Result.Green := $8282; - Result.Blue := $B4B4; - end; - 'darkslateblue': - begin - Result.Red := $4848; - Result.Green := $3D3D; - Result.Blue := $8B8B; - end; - 'mediumturquoise': - begin - Result.Red := $4848; - Result.Green := $D1D1; - Result.Blue := $CCCC; - end; -{ -indigo #4B0082 - darkolivegreen #556B2F cadetblue #5F9EA0 -cornflowerblue #6495ED - mediumaquamarine #66CDAA dimgrey #696969 -dimgray #696969 - slateblue #6A5ACD olivedrab #6B8E23 -slategrey #708090 - slategray #708090 lightslategray(Hex3) #778899 -lightslategrey(Hex3) #778899 - mediumslateblue #7B68EE lawngreen #7CFC00 -chartreuse #7FFF00 -} - 'aquamarine': - begin - Result.Red := $7F7F; - Result.Green := $FFFF; - Result.Blue := $D4D4; - end; - 'maroon': Result.Red := $8080; - 'purple': Result := colPurple; - 'olive': Result := colOlive; - 'gray', 'grey': Result := colGray; - 'skyblue': - begin - Result.Red := $8787; - Result.Green := $CECE; - Result.Blue := $EBEB; - end; - 'lightskyblue': - begin - Result.Red := $8787; - Result.Green := $CECE; - Result.Blue := $FAFA; - end; - 'blueviolet': - begin - Result.Red := $8A8A; - Result.Green := $2B2B; - Result.Blue := $E2E2; - end; - 'darkred': Result.Red := $8B8B; - 'darkmagenta': - begin - Result.Red := $8B8B; - Result.Blue := $8B8B; - end; -{ -saddlebrown #8B4513 - darkseagreen #8FBC8F lightgreen #90EE90 -mediumpurple #9370DB - darkviolet #9400D3 palegreen #98FB98 -darkorchid #9932CC - yellowgreen #9ACD32 sienna #A0522D -brown #A52A2A - darkgray #A9A9A9 darkgrey #A9A9A9 -lightblue #ADD8E6 - greenyellow #ADFF2F paleturquoise #AFEEEE -lightsteelblue #B0C4DE - powderblue #B0E0E6 firebrick #B22222 -darkgoldenrod #B8860B - mediumorchid #BA55D3 rosybrown #BC8F8F -darkkhaki #BDB76B -} - 'silver': Result := colSilver; - 'mediumvioletred': - begin - Result.Red := $C7C7; - Result.Green := $1515; - Result.Blue := $8585; - end; - 'indianred': - begin - Result.Red := $CDCD; - Result.Green := $5C5C; - Result.Blue := $5C5C; - end; - 'peru': - begin - Result.Red := $CDCD; - Result.Green := $8585; - Result.Blue := $3F3F; - end; - 'chocolate': - begin - Result.Red := $D2D2; - Result.Green := $6969; - Result.Blue := $1E1E; - end; -{ -tan #D2B48C - lightgray #D3D3D3 lightgrey #D3D3D3 -thistle #D8BFD8 - orchid #DA70D6 goldenrod #DAA520 -palevioletred #DB7093 - crimson #DC143C gainsboro #DCDCDC -plum #DDA0DD - burlywood #DEB887 lightcyan #E0FFFF -lavender #E6E6FA -} - 'darksalmon': - begin - Result.Red := $E9E9; - Result.Green := $9696; - Result.Blue := $7A7A; - end; - 'violet': - begin - Result.Red := $EEEE; - Result.Green := $8282; - Result.Blue := $EEEE; - end; - 'palegoldenrod': - begin - Result.Red := $EEEE; - Result.Green := $E8E8; - Result.Blue := $AAAA; - end; - 'lightcoral': - begin - Result.Red := $F0F0; - Result.Green := $8080; - Result.Blue := $8080; - end; - 'khaki': - begin - Result.Red := $F0F0; - Result.Green := $E6E6; - Result.Blue := $8C8C; - end; - 'aliceblue': - begin - Result.Red := $F0F0; - Result.Green := $F8F8; - Result.Blue := $FFFF; - end; - 'honeydew': - begin - Result.Red := $F0F0; - Result.Green := $FFFF; - Result.Blue := $F0F0; - end; - 'azure': - begin - Result.Red := $F0F0; - Result.Green := $FFFF; - Result.Blue := $FFFF; - end; - 'sandybrown': - begin - Result.Red := $F4F4; - Result.Green := $A4A4; - Result.Blue := $6060; - end; -{ - wheat #F5DEB3 beige #F5F5DC -whitesmoke #F5F5F5 - mintcream #F5FFFA ghostwhite #F8F8FF -salmon #FA8072 - antiquewhite #FAEBD7 linen #FAF0E6 -lightgoldenrodyellow #FAFAD2 - oldlace #FDF5E6 -} - 'red': Result := colRed; - 'fuchsia': Result := colFuchsia; - 'magenta': Result := colMagenta; -{ deeppink #FF1493 -orangered #FF4500 - tomato #FF6347 hotpink #FF69B4 -coral #FF7F50 - darkorange #FF8C00 lightsalmon #FFA07A -orange #FFA500 - lightpink #FFB6C1 pink #FFC0CB -gold #FFD700 - peachpuff #FFDAB9 navajowhite #FFDEAD -moccasin #FFE4B5 - bisque #FFE4C4 mistyrose #FFE4E1 -blanchedalmond #FFEBCD - papayawhip #FFEFD5 lavenderblush #FFF0F5 -seashell #FFF5EE - cornsilk #FFF8DC lemonchiffon #FFFACD -floralwhite #FFFAF0 -} - 'snow': - begin - Result.Red := $FFFF; - Result.Green := $FAFA; - Result.Blue := $FAFA; - end; - 'yellow': Result := colYellow; - 'lightyellow': - begin - Result.Red := $FFFF; - Result.Green := $FEFE; - end; - 'ivory': - begin - Result.Red := $FFFF; - Result.Green := $FFFF; - Result.Blue := $F0F0; - end; - 'white': Result := colWhite; +end; + +// style="stop-color:rgb(255,255,10);stop-opacity:1.0" +function TvSVGVectorialReader.ReadSVGGradientColorStyle(AValue: String): TFPColor; +var + lStr, lStyleKeyStr, lStyleValueStr: String; + lStrings: TStringList; + i: Integer; + p: Integer; +begin + Result := colBlack; + if AValue = '' then Exit; + lStrings := TStringList.Create; + try + lStrings.Delimiter := ';'; + lStrings.StrictDelimiter := True; + lStrings.DelimitedText := LowerCase(AValue); + for i := 0 to lStrings.Count-1 do + begin + lStr := lStrings.Strings[i]; + p := Pos(':', lStr); + lStyleKeyStr := Trim(Copy(lStr, 1, p-1)); + lStyleValueStr := Trim(Copy(lStr, p+1, MaxInt)); + if lStyleKeyStr = 'stop-color' then + Result := ReadSVGColor(lStyleValueStr) + else if lStyleKeyStr = 'stop-opacity' then + Result.Alpha := Round(StrToFloat(lStyleValueStr, FPointSeparator)*$FFFF); + end; + finally + lStrings.Free; end; end; // style="fill:none;stroke:black;stroke-width:3" -function TvSVGVectorialReader.ReadSVGStyle(AValue: string; +function TvSVGVectorialReader.ReadSVGStyle(AData: TvVectorialPage; AValue: string; ADestEntity: TvEntityWithPen; ADestStyle: TvStyle = nil; AUseFillAsPen: Boolean = False): TvSetPenBrushAndFontElements; var @@ -840,7 +785,7 @@ if ADestEntity <> nil then begin ReadSVGPenStyleWithKeyAndValue(lStyleKeyStr, lStyleValueStr, ADestEntity); - ReadSVGGeneralStyleWithKeyAndValue(lStyleKeyStr, lStyleValueStr, ADestEntity); + ReadSVGGeneralStyleWithKeyAndValue(AData, lStyleKeyStr, lStyleValueStr, ADestEntity); if AUseFillAsPen and (lStyleKeyStr = 'fill') then Result := Result + ReadSVGPenStyleWithKeyAndValue('stroke', lStyleValueStr, ADestEntity) else if ADestEntity is TvText then @@ -919,7 +864,7 @@ end else if AKey = 'stroke-opacity' then begin - ADestEntity.Pen.Color.Alpha := Round(StrToFloat(AValue)*$FFFF); + ADestEntity.Pen.Color.Alpha := Round(StrToFloat(AValue, FPointSeparator)*$FFFF); end else if AKey = 'stroke-linecap' then begin @@ -928,7 +873,9 @@ 'round': 'square': ADestEntity.Pen; end;} - end; + end + else if AKey = 'stroke-dasharray' then + StringToPenPattern(AValue, ADestEntity.Pen); end; function TvSVGVectorialReader.ReadSVGBrushStyleWithKeyAndValue(AKey, @@ -943,7 +890,7 @@ Result := []; if AKey = 'fill' then begin - // Suppose for fill="url(#grad2)" + // Support for fill="url(#grad2)" lDefName := Trim(AValue); if Copy(lDefName, 0, 3) = 'url' then begin @@ -976,6 +923,13 @@ Result := Result + [spbfBrushColor, spbfBrushStyle]; end + else if AKey = 'fill-rule' then + begin + if AValue = 'evenodd' then + ADestEntity.WindingRule := vcmEvenOddRule else + if AValue = 'nonzero' then + ADestEntity.WindingRule := vcmNonzeroWindingRule; // to do: "inherit" missing here + end else if AKey = 'fill-opacity' then ADestEntity.Brush.Color.Alpha := StringFloatZeroToOneToWord(AValue) // For linear gradient => stop-color:rgb(255,255,0);stop-opacity:1 @@ -983,7 +937,7 @@ begin Len := Length(ADestEntity.Brush.Gradient_colors); SetLength(ADestEntity.Brush.Gradient_colors, Len+1); - ADestEntity.Brush.Gradient_colors[Len] := ReadSVGColor(AValue); + ADestEntity.Brush.Gradient_colors[Len].Color := ReadSVGColor(AValue); end; end; @@ -991,6 +945,8 @@ AValue: string; ADestEntity: TvEntityWithPenBrushAndFont; ADestStyle: TvStyle = nil): TvSetPenBrushAndFontElements; var lLowerValue: String; + p: Integer; + fntName: String; begin Result := []; lLowerValue := LowerCase(AValue); @@ -1021,14 +977,21 @@ end else if AKey = 'font-size' then begin - if ADestEntity <> nil then ADestEntity.Font.Size := Round(StringWithUnitToFloat(AValue, sckXSize, suPX, suPT)); - if ADestStyle <> nil then ADestStyle.Font.Size := Round(StringWithUnitToFloat(AValue, sckXSize, suPX, suPT)); + if ADestEntity <> nil then ADestEntity.Font.Size := Round(StringWithUnitToFloat(AValue, sckXSize, suPT, suPT)); + if ADestStyle <> nil then ADestStyle.Font.Size := Round(StringWithUnitToFloat(AValue, sckXSize, suPT, suPT)); Result := Result + [spbfFontSize]; end else if AKey = 'font-family' then begin - if ADestEntity <> nil then ADestEntity.Font.Name := AValue; - if ADestStyle <> nil then ADestStyle.Font.Name := AValue; + // Extract the font name + // To do: Check if font name exists in system. Use replacement fonts which + // may follow after the comma. + p := pos(',', AValue); + if p = 0 then + fntName := AValue else + fntName := trim(Copy(AValue, 1, p-1)); + if ADestEntity <> nil then ADestEntity.Font.Name := fntName; + if ADestStyle <> nil then ADestStyle.Font.Name := fntName; Result := Result + [spbfFontName]; end else if AKey = 'font-weight' then @@ -1072,8 +1035,8 @@ ADestStyle.SetElements := ADestStyle.SetElements + Result; end; -function TvSVGVectorialReader.ReadSVGGeneralStyleWithKeyAndValue(AKey, - AValue: string; ADestEntity: TvEntity): TvSetPenBrushAndFontElements; +procedure TvSVGVectorialReader.ReadSVGGeneralStyleWithKeyAndValue(AData: TvVectorialPage; + AKey, AValue: string; ADestEntity: TvEntity); var // transform MA, MB, MC, MD, ME, MF: Double; @@ -1128,7 +1091,17 @@ end else if lFunctionName = 'rotate' then begin - ADestEntity.Rotate(lMatrixElements[0], Make3DPoint(0, 0, 0)); + lMRotate := -DegToRad(lMatrixElements[0]); + // "-" because of orientation of svg coordinate system + lMTranslateX := 0; + lMTranslateY := 0; + if Length(lMatrixElements) > 1 then + lMTranslateX := lMatrixElements[1]; + if Length(lMatrixElements) > 2 then + lMTranslateY := lMatrixElements[2]; + ConvertSVGCoordinatesToFPVCoordinates(AData, + lMTranslateX, lMTranslateY, lMTranslateX, lMTranslateY); + ADestEntity.Rotate(lMRotate, Make3DPoint(lMTranslateX, lMTranslateY)); end; Inc(i, 2); @@ -1151,11 +1124,12 @@ // brush (AStr = 'fill') or (AStr = 'fill-opacity') or // font - (AStr = 'font-size') or (AStr = 'fill-family') or + (AStr = 'font-size') or (AStr = 'font-family') or (AStr = 'font-weight') or (AStr = 'text-anchor'); end; -procedure TvSVGVectorialReader.ApplyLayerStyles(ADestEntity: TvEntity); +procedure TvSVGVectorialReader.ApplyLayerStyles(AData: TvVectorialPage; + ADestEntity: TvEntity); var lStringsKeys, lStringsValues: TStringList; i, j: Integer; @@ -1178,7 +1152,7 @@ if ADestEntity is TvEntityWithPenBrushAndFont then ReadSVGFontStyleWithKeyAndValue(lCurKey, lCurValue, ADestEntity as TvEntityWithPenBrushAndFont); // transform - ReadSVGGeneralStyleWithKeyAndValue(lCurKey, lCurValue, ADestEntity); + ReadSVGGeneralStyleWithKeyAndValue(AData, lCurKey, lCurValue, ADestEntity); end; end; end; @@ -1214,7 +1188,7 @@ end; end; -function TvSVGVectorialReader.ReadSpaceSeparatedStrings(AInput: string; +class function TvSVGVectorialReader.ReadSpaceSeparatedStrings(AInput: string; AOtherSeparators: string): TStringList; var i: Integer; @@ -1251,6 +1225,18 @@ AF := lMatrixElements[5]; end; +function TvSVGVectorialReader.GetTextContentFromNode(ANode: TDOMNode): string; +var + i: Integer; +begin + Result := ''; + for i := 0 to ANode.ChildNodes.Count-1 do + begin + if ANode.ChildNodes.Item[i] is TDOMText then + Result := ANode.ChildNodes.Item[i].NodeValue; + end; +end; + procedure TvSVGVectorialReader.ReadDefsFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument); var @@ -1259,12 +1245,12 @@ lPreviousLayer: TvEntityWithSubEntities; lAttrName, lAttrValue, lNodeName: DOMString; lLayerName: String; - i: Integer; + i, len: Integer; lCurNode, lCurSubNode: TDOMNode; lBrushEntity: TvEntityWithPenAndBrush; lCurEntity: TvEntity; - lOffset: Double; - x1, x2, y1, y2: string; + lGradientColor: TvGradientColor; + x1, y1, x2, y2: Double; begin lCurNode := ANode.FirstChild; while Assigned(lCurNode) do @@ -1336,23 +1322,79 @@ lBrushEntity := TvEntityWithPenAndBrush.Create(nil); // <linearGradient id="grad1" x1="0%" y1="0%" x2="0%" y2="100%"> + x1 := 0; + x2 := 0; + y1 := 0; + y2 := 0; for i := 0 to lCurNode.Attributes.Length - 1 do begin - lAttrName := lCurNode.Attributes.Item[i].NodeName; - lAttrValue := lCurNode.Attributes.Item[i].NodeValue; + lAttrName := lowercase(lCurNode.Attributes.Item[i].NodeName); + lAttrValue := lowercase(lCurNode.Attributes.Item[i].NodeValue); if lAttrName = 'id' then lBrushEntity.Name := lAttrValue - else if lAttrName = 'x1' then - x1 := lAttrValue - else if lAttrName = 'x2' then - x2 := lAttrValue - else if lAttrName = 'y1' then - y1 := lAttrValue - else if lAttrName = 'y2' then - y2 := lAttrValue; + else + if lAttrName = 'x1' then + begin + if lAttrValue[Length(lAttrValue)] = '%' then + Include(lBrushEntity.Brush.Gradient_flags, gfRelStartX); + x1 := StringWithPercentToFloat(lAttrValue); + end else + if lAttrName = 'x2' then + begin + if lAttrValue[Length(lAttrValue)] = '%' then + Include(lBrushEntity.Brush.Gradient_flags, gfRelEndX); + x2 := StringWithPercentToFloat(lAttrValue); + end else + if lAttrName = 'y1' then + begin + if lAttrValue[Length(lAttrValue)] = '%' then + Include(lBrushEntity.Brush.Gradient_flags, gfRelStartY); + y1 := StringWithPercentToFloat(lAttrValue); + end else + if lAttrName = 'y2' then + begin + if lAttrValue[Length(lAttrValue)] = '%' then + Include(lBrushEntity.Brush.Gradient_flags, gfRelEndY); + y2 := StringWithPercentToFloat(lAttrValue); + end else + if lAttrName = 'gradientunits' then + begin + if lAttrValue = 'userspaceonuse' then + Include(lBrushEntity.Brush.Gradient_flags, gfRelToUserSpace) + else if lAttrValue = 'objectboundingbox' then + Exclude(lBrushEntity.Brush.Gradient_flags, gfRelToUserSpace); + end; end; - if x2 = '0%' then lBrushEntity.Brush.Kind := bkVerticalGradient - else lBrushEntity.Brush.Kind := bkHorizontalGradient; + lBrushEntity.Brush.Gradient_start.X := x1; + lBrushEntity.Brush.Gradient_end.X := x2; + lBrushEntity.Brush.Gradient_start.Y := y1; + lBrushEntity.Brush.Gradient_end.Y := y2; + ConvertSVGCoordinatesToFPVCoordinates(AData, x1, y1, x1, y1); + ConvertSVGCoordinatesToFPVCoordinates(AData, x2, y2, x2, y2); + if not (gfRelStartX in lBrushEntity.Brush.Gradient_flags) then + lBrushEntity.Brush.Gradient_start.X := x1; + if not (gfRelEndX in lBrushEntity.Brush.Gradient_flags) then + lBrushEntity.Brush.Gradient_end.X := x2; + if not (gfRelStartY in lBrushEntity.Brush.Gradient_flags) then + lBrushEntity.Brush.Gradient_start.Y := y1; + if not (gfRelEndY in lBrushEntity.Brush.Gradient_flags) then + lBrushEntity.Brush.Gradient_end.Y := y2; + if (lBrushEntity.Brush.Gradient_start.X = 0) and + (lBrushEntity.Brush.Gradient_start.Y = 0) and + (lBrushEntity.Brush.Gradient_end.X = 0) and + (lBrushEntity.Brush.Gradient_end.Y = 0) then + begin + lBrushEntity.Brush.Gradient_start.X := 0.0; + lBrushEntity.Brush.Gradient_start.Y := 0.0; + lBrushEntity.Brush.Gradient_end.X := 1.0; + lBrushEntity.Brush.Gradient_end.Y := 1.0; + end; + if lBrushEntity.Brush.Gradient_start.X = lBrushEntity.Brush.Gradient_end.X then + lBrushEntity.Brush.Kind := bkVerticalGradient + else if lBrushEntity.Brush.Gradient_start.Y = lBrushEntity.Brush.Gradient_end.Y then + lBrushEntity.Brush.Kind := bkHorizontalGradient + else + lBrushEntity.Brush.Kind := bkOtherLinearGradient; // <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" /> // <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" /> @@ -1360,19 +1402,23 @@ while Assigned(lCurSubNode) do begin lNodeName := LowerCase(lCurSubNode.NodeName); - - for i := 0 to lCurSubNode.Attributes.Length - 1 do - begin - lAttrName := lCurSubNode.Attributes.Item[i].NodeName; - lAttrValue := lCurSubNode.Attributes.Item[i].NodeValue; - if lAttrName = 'offset' then + if lNodeName = 'stop' then begin + for i := 0 to lCurSubNode.Attributes.Length - 1 do begin - lOffset := StringWithUnitToFloat(lAttrValue); - end - else if lAttrName = 'style' then - ReadSVGStyle(lAttrValue, lBrushEntity); + lAttrName := lCurSubNode.Attributes.Item[i].NodeName; + lAttrValue := lCurSubNode.Attributes.Item[i].NodeValue; + if lAttrName = 'offset' then + lGradientColor.Position := StringWithPercentToFloat(lAttrValue) + // use as fraction 0..1 + else if lAttrName = 'style' then + lGradientColor.Color := ReadSVGGradientColorStyle(lAttrValue) + else if lAttrName = 'stop-color' then + lGradientColor.Color := ReadSVGColor(lAttrValue); + end; + len := Length(lBrushEntity.Brush.Gradient_colors); + SetLength(lBrushEntity.Brush.Gradient_colors, Len+1); + lBrushEntity.Brush.Gradient_colors[len] := lGradientColor; end; - lCurSubNode := lCurSubNode.NextSibling; end; @@ -1437,6 +1483,7 @@ lEntityName := LowerCase(ANode.NodeName); case lEntityName of 'circle': Result := ReadCircleFromNode(ANode, AData, ADoc); + 'defs': ReadDefsFromNode(ANode, AData, ADoc); 'ellipse': Result := ReadEllipseFromNode(ANode, AData, ADoc); 'frame': Result := ReadFrameFromNode(ANode, AData, ADoc); 'g': ReadLayerFromNode(ANode, AData, ADoc); @@ -1454,7 +1501,7 @@ function TvSVGVectorialReader.ReadCircleFromNode(ANode: TDOMNode; AData: TvVectorialPage; ADoc: TvVectorialDocument): TvEntity; var - cx, cy, cr, dtmp: double; + cx, cy, cr, tmp: double; lCircle: TvCircle; i: Integer; lNodeName, lNodeValue: DOMString; @@ -1469,7 +1516,7 @@ lCircle.Brush.Style := bsSolid; lCircle.Brush.Color := colBlack; // Apply the layer style - ApplyLayerStyles(lCircle); + ApplyLayerStyles(AData, lCircle); // read the attributes for i := 0 to ANode.Attributes.Length - 1 do @@ -1477,27 +1524,36 @@ lNodeName := ANode.Attributes.Item[i].NodeName; lNodeValue := ANode.Attributes.Item[i].NodeValue; if lNodeName = 'cx' then - cx := StringWithUnitToFloat(lNodeValue, sckX, suPX, suMM) + cx := StringWithUnitToFloat(lNodeValue) //, sckX, suPX, suMM) else if lNodeName = 'cy' then - cy := StringWithUnitToFloat(lNodeValue, sckY, suPX, suMM) + cy := StringWithUnitToFloat(lNodeValue) //, sckY, suPX, suMM) else if lNodeName = 'r' then - cr := StringWithUnitToFloat(lNodeValue, sckXSize, suPX, suMM) + cr := StringWithUnitToFloat(lNodeValue) //, sckXSize, suPX, suMM) else if lNodeName = 'id' then - lCircle.Name := lNodeValue - else if lNodeName = 'style' then - ReadSVGStyle(lNodeValue, lCircle) + lCircle.Name := lNodeValue; + end; + + ConvertSVGCoordinatesToFPVCoordinates(AData, cx, cy, cx, cy); + ConvertSVGSizeToFPVSize(AData, cr, cr, lCircle.Radius, tmp); + lCircle.X := lCircle.X + cx; + lCircle.Y := lCircle.Y + cy; + + // Make sure that transformations are read after geometry and position + // of cirlce is known. + for i := 0 to ANode.Attributes.Length - 1 do + begin + lNodeName := ANode.Attributes.Item[i].NodeName; + lNodeValue := ANode.Attributes.Item[i].NodeValue; + if lNodeName = 'style' then + ReadSVGStyle(AData, lNodeValue, lCircle) else if IsAttributeFromStyle(lNodeName) then begin ReadSVGPenStyleWithKeyAndValue(lNodeName, lNodeValue, lCircle); ReadSVGBrushStyleWithKeyAndValue(lNodeName, lNodeValue, lCircle); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, lNodeValue, lCircle); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, lNodeValue, lCircle); end; end; - lCircle.X := lCircle.X + cx; - lCircle.Y := lCircle.Y + cy; - lCircle.Radius := lCircle.Radius + cr; - Result := lCircle; end; @@ -1520,7 +1576,7 @@ lEllipse.Brush.Style := bsSolid; lEllipse.Brush.Color := colBlack; // Apply the layer style - ApplyLayerStyles(lEllipse); + ApplyLayerStyles(AData, lEllipse); // read the attributes for i := 0 to ANode.Attributes.Length - 1 do @@ -1536,22 +1592,28 @@ else if lNodeName = 'ry' then cry := StringWithUnitToFloat(lNodeValue) else if lNodeName = 'id' then - lEllipse.Name := ANode.Attributes.Item[i].NodeValue - else if lNodeName = 'style' then - ReadSVGStyle(lNodeValue, lEllipse) + lEllipse.Name := ANode.Attributes.Item[i].NodeValue; + end; + + ConvertSVGCoordinatesToFPVCoordinates(AData, cx, cy, lEllipse.X, lEllipse.Y); + ConvertSVGSizeToFPVSize(AData, crx, cry, lEllipse.HorzHalfAxis, lEllipse.VertHalfAxis); + + // Make sure that transformations are read after geometry and position + // of ellipse is known. + for i := 0 to ANode.Attributes.Length - 1 do + begin + lNodeName := ANode.Attributes.Item[i].NodeName; + lNodeValue := ANode.Attributes.Item[i].NodeValue; + if lNodeName = 'style' then + ReadSVGStyle(AData, lNodeValue, lEllipse) else if IsAttributeFromStyle(lNodeName) then begin ReadSVGPenStyleWithKeyAndValue(lNodeName, lNodeValue, lEllipse); ReadSVGBrushStyleWithKeyAndValue(lNodeName, lNodeValue, lEllipse); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, lNodeValue, lEllipse); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, lNodeValue, lEllipse); end; end; - ConvertSVGCoordinatesToFPVCoordinates( - AData, cx, cy, lEllipse.X, lEllipse.Y); - ConvertSVGDeltaToFPVDelta( - AData, crx, cry, lEllipse.HorzHalfAxis, lEllipse.VertHalfAxis); - Result := lEllipse; end; @@ -1593,7 +1655,7 @@ lText := nil;//TvText.Create(nil); // Apply the layer style - ApplyLayerStyles(lText); + ApplyLayerStyles(AData, lText); // read the attributes for i := 0 to ANode.Attributes.Length - 1 do @@ -1605,7 +1667,7 @@ else if lNodeName = 'svg:y' then ly := ly + StringWithUnitToFloat(lNodeValue) else if lNodeName = 'draw:style-name' then - ReadSVGStyle(lNodeValue, lText); + ReadSVGStyle(AData, lNodeValue, lText); end; // Get the text contents @@ -1659,9 +1721,9 @@ lTextStr: string = ''; lx, ly: double; lText: TvText; - i: Integer; - lNodeName, lNodeValue: DOMString; - lCurNode: TDOMNode; + //i: Integer; + //lNodeName, lNodeValue: DOMString; + //lCurNode: TDOMNode; begin lx := 0.0; ly := 0.0; @@ -1669,7 +1731,7 @@ lText := TvText.Create(nil); // Apply the layer style - ApplyLayerStyles(lText); + ApplyLayerStyles(AData, lText); {// read the attributes for i := 0 to ANode.Attributes.Length - 1 do @@ -1798,7 +1860,7 @@ begin //ReadSVGPenStyleWithKeyAndValue(lNodeName, lNodeValue, lImage); //ReadSVGBrushStyleWithKeyAndValue(lNodeName, lNodeValue, lImage); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, lNodeValue, lImage); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, lNodeValue, lImage); end; end; @@ -1823,7 +1885,7 @@ lImage.Y := lImage.Y + lImage.Height / 2; // Apply the layer style - ApplyLayerStyles(lImage); + ApplyLayerStyles(AData, lImage); Result := lImage; end; @@ -1948,19 +2010,24 @@ AData.AddLineToPath(vx2, vy2); lPath := AData.EndPath(True); + // Add default SVG pen/brush + lPath.Pen.Style := psClear; + // Apply the layer style - ApplyLayerStyles(lPath); + ApplyLayerStyles(AData, lPath); // Add the entity styles for i := 0 to ANode.Attributes.Length - 1 do begin lNodeName := ANode.Attributes.Item[i].NodeName; if lNodeName = 'style' then - ReadSVGStyle(ANode.Attributes.Item[i].NodeValue, lPath) + ReadSVGStyle(AData, ANode.Attributes.Item[i].NodeValue, lPath) else if IsAttributeFromStyle(lNodeName) then begin - ReadSVGPenStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGPenStyleWithKeyAndValue(lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); end; end; // @@ -1991,9 +2058,9 @@ // Add default SVG pen/brush lPath.Pen.Style := psClear; lPath.Brush.Color := colBlack; - lPath.Brush.Style := bsSolid; + lPath.Brush.Style := bsClear; // Apply the layer style - ApplyLayerStyles(lPath); + ApplyLayerStyles(AData, lPath); // Add the pen/brush/name for i := 0 to ANode.Attributes.Length - 1 do begin @@ -2001,12 +2068,15 @@ if lNodeName = 'id' then lPath.Name := ANode.Attributes.Item[i].NodeValue else if lNodeName = 'style' then - ReadSVGStyle(ANode.Attributes.Item[i].NodeValue, lPath) + ReadSVGStyle(AData, ANode.Attributes.Item[i].NodeValue, lPath) else if IsAttributeFromStyle(lNodeName) then begin - ReadSVGPenStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); - ReadSVGBrushStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGPenStyleWithKeyAndValue(lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGBrushStyleWithKeyAndValue(lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); end; end; end; @@ -2022,7 +2092,7 @@ lDebugStr: String; lTmpTokenType: TSVGTokenType; begin - FSVGPathTokenizer.Tokens.Clear; + FSVGPathTokenizer.ClearTokens; FSVGPathTokenizer.TokenizePathString(AStr); //lDebugStr := FSVGPathTokenizer.DebugOutTokensAsString(); CurX := 0; @@ -2056,12 +2126,13 @@ var i: Integer; var CurX, CurY: Double; AData: TvVectorialPage; ADoc: TvVectorialDocument); var - X, Y, X2, Y2, X3, Y3, XQ, YQ: Double; + X, Y, X2, Y2, X3, Y3, XQ, YQ, Xnew, Ynew, cx, cy, phi, tmp: Double; LargeArcFlag, SweepFlag, LeftmostEllipse, ClockwiseArc: Boolean; lCurTokenType: TSVGTokenType; lDebugStr: String; lToken5Before, lToken7Before: TSVGTokenType; lCorrectPreviousToken: Boolean; + lPrevRelative, lCurRelative: Boolean; begin lCurTokenType := ACurTokenType; // -------------- @@ -2104,7 +2175,8 @@ CurY := Y; AData.AddLineToPath(CurX, CurY); - Inc(i, 3); + Inc(i, 1); +// Inc(i, 3); end // -------------- // Lines @@ -2112,38 +2184,39 @@ else if lCurTokenType in [sttLineTo, sttRelativeLineTo, sttHorzLineTo, sttRelativeHorzLineTo, sttVertLineTo, sttRelativeVertLineTo] then begin - X := FSVGPathTokenizer.Tokens.Items[i+1].Value; - if not (lCurTokenType in [sttHorzLineTo, sttRelativeHorzLineTo, sttVertLineTo, sttRelativeVertLineTo]) then - Y := FSVGPathTokenizer.Tokens.Items[i+2].Value; - - // "l" LineTo uses relative coordenates in SVG - if lCurTokenType in [sttRelativeLineTo, sttRelativeHorzLineTo, sttRelativeVertLineTo] then + if lCurTokenType in [sttLineTo, sttRelativeLineTo] then begin - ConvertSVGDeltaToFPVDelta(AData, X, Y, X, Y); - CurX := CurX + X; - CurY := CurY + Y; - end - else - begin - ConvertSVGCoordinatesToFPVCoordinates(AData, X, Y, X, Y); - CurX := X; - CurY := Y; - end; - - // horizontal and vertical line corrections - if lCurTokenType in [sttHorzLineTo, sttRelativeHorzLineTo] then - Y := 0 - else if lCurTokenType in [sttVertLineTo, sttRelativeVertLineTo] then - begin - Y := X; - X := 0; + X := FSVGPathTokenizer.Tokens.Items[i+1].Value; + Y := FSVGPathTokenizer.Tokens.Items[i+2].Value; + if lCurTokenType = sttLineTo then + ConvertSVGCoordinatesToFPVCoordinates(AData, X,Y, CurX,CurY) + else + begin + ConvertSVGDeltaToFPVDelta(AData, X,Y, X,Y); + CurX := CurX + X; + CurY := CurY + Y; + end; + inc(i, 3); + end else + if lCurTokenType in [sttHorzLineTo, sttVertLineTo] then + begin + tmp := FSVGPathTokenizer.Tokens.Items[i+1].Value; + ConvertSVGCoordinatesToFPVCoordinates(AData, tmp, tmp, X, Y); + if lCurTokenType = sttHorzLineTo then + CurX := X else + CurY := Y; + inc(i, 2); + end else + if lCurTokenType in [sttRelativeHorzLineTo, sttRelativeVertLineTo] then + begin + tmp := FSVGPathTokenizer.Tokens.Items[i+1].Value; + ConvertSVGDeltaToFPVDelta(AData, tmp, tmp, X, Y); + if lCurTokenType = sttRelativeHorzLineTo then + CurX := CurX + X else + CurY := CurY + Y; + inc(i, 2); end; - AData.AddLineToPath(CurX, CurY); - - if not (lCurTokenType in [sttHorzLineTo, sttRelativeHorzLineTo, sttVertLineTo, sttRelativeVertLineTo]) then - Inc(i, 3) - else Inc(i, 2); end // -------------- // Cubic Bezier @@ -2151,6 +2224,7 @@ else if lCurTokenType in [sttBezierTo, sttRelativeBezierTo, sttSmoothBezierTo, sttRelativeSmoothBezierTo] then begin + lPrevRelative := false; if lCurTokenType in [sttBezierTo, sttRelativeBezierTo] then begin X2 := FSVGPathTokenizer.Tokens.Items[i+1].Value; @@ -2176,10 +2250,11 @@ lCorrectPreviousToken := lToken5Before in [sttSmoothBezierTo, sttRelativeSmoothBezierTo]; lCorrectPreviousToken := lCorrectPreviousToken or (lToken7Before in [sttBezierTo, sttRelativeBezierTo]); + lPrevRelative := (lToken5Before = sttRelativeSmoothBezierTo) or (lToken7Before = sttRelativeBezierTo); end; if (i >= 7) and (lCorrectPreviousToken) then begin - if lCurTokenType = sttRelativeSmoothBezierTo then + if (lCurTokenType = sttRelativeSmoothBezierTo) or lPrevRelative then begin X2 := FSVGPathTokenizer.Tokens.Items[i-2].Value - FSVGPathTokenizer.Tokens.Items[i-4].Value; Y2 := FSVGPathTokenizer.Tokens.Items[i-1].Value - FSVGPathTokenizer.Tokens.Items[i-3].Value; @@ -2198,17 +2273,32 @@ end; // Careful that absolute coordinates require using ConvertSVGCoordinatesToFPVCoordinates - if lCurTokenType in [sttRelativeBezierTo, sttRelativeSmoothBezierTo] then + lCurRelative := lCurTokenType in [sttRelativeBezierTo, sttRelativeSmoothBezierTo]; + if lPrevRelative then begin ConvertSVGDeltaToFPVDelta(AData, X2, Y2, X2, Y2); - ConvertSVGDeltaToFPVDelta(AData, X3, Y3, X3, Y3); - ConvertSVGDeltaToFPVDelta(AData, X, Y, X, Y); - end - else + if lCurRelative then + begin + ConvertSVGDeltaToFPVDelta(AData, X3, Y3, X3, Y3); + ConvertSVGDeltaToFPVDelta(AData, X, Y, X, Y); + end else + begin + ConvertSVGCoordinatesToFPVCoordinates(AData, X3, Y3, X3, Y3); + ConvertSVGCoordinatesToFPVCoordinates(AData, X, Y, X, Y); + end; + end else begin - ConvertSVGCoordinatesToFPVCoordinates(AData, X2, Y2, X2, Y2); - ConvertSVGCoordinatesToFPVCoordinates(AData, X3, Y3, X3, Y3); - ConvertSVGCoordinatesToFPVCoordinates(AData, X, Y, X, Y); + if lCurRelative then + begin + ConvertSVGDeltaToFPVDelta(AData, X2, Y2, X2, Y2); + ConvertSVGDeltaToFPVDelta(AData, X3, Y3, X3, Y3); + ConvertSVGDeltaToFPVDelta(AData, X, Y, X, Y); + end else + begin + ConvertSVGCoordinatesToFPVCoordinates(AData, X2, Y2, X2, Y2); + ConvertSVGCoordinatesToFPVCoordinates(AData, X3, Y3, X3, Y3); + ConvertSVGCoordinatesToFPVCoordinates(AData, X, Y, X, Y); + end; end; // Covers the case where there is no valid first control point in smooth bezier @@ -2237,14 +2327,16 @@ end else begin - AData.AddBezierToPath(X2, Y2, X3, Y3, X, Y); + if lPrevRelative then + AData.AddBezierToPath(X2 + CurX, Y2 + CurY, X3, Y3, X, Y) else + AData.AddBezierToPath(X2, Y2, X3, Y3, X, Y); CurX := X; CurY := Y; end; if lCurTokenType in [sttBezierTo, sttRelativeBezierTo] then - Inc(i, 7) - else Inc(i, 5); + Inc(i, 7) else + Inc(i, 5); end // -------------- // Quadratic Bezier @@ -2299,29 +2391,68 @@ begin X2 := FSVGPathTokenizer.Tokens.Items[i+1].Value; // RX Y2 := FSVGPathTokenizer.Tokens.Items[i+2].Value; // RY - X3 := FSVGPathTokenizer.Tokens.Items[i+3].Value; // RotationX - X3 := X3 * Pi / 180; // degrees to radians conversion + phi := FSVGPathTokenizer.Tokens.Items[i+3].Value; // RotationX + phi := DegToRad(phi); // degrees to radians conversion LargeArcFlag := Round(FSVGPathTokenizer.Tokens.Items[i+4].Value) = 1; SweepFlag := Round(FSVGPathTokenizer.Tokens.Items[i+5].Value) = 1; X := FSVGPathTokenizer.Tokens.Items[i+6].Value; // X Y := FSVGPathTokenizer.Tokens.Items[i+7].Value; // Y - // non-coordinate values + { + if lCurTokenType = sttRelativeEllipticArcTo then + begin + Xnew := CurX + X; + Ynew := CurY + Y; + end else + begin + Xnew := CurX; + Ynew := CurY; + end; + + CalcEllipseCenter(CurX, CurY, Xnew, Ynew, X2, Y2, phi, LargeArcFlag, SweepFlag, cx, cy, tmp); + ConvertSVGCoordinatesToFPVCoordinates(AData, cx, cy, cx, cy); + } + // non-coordinate values (radii) ConvertSVGDeltaToFPVDelta(AData, X2, Y2, X2, Y2); + if X2 < 0 then X2 := -X2; + if Y2 < 0 then Y2 := -Y2; // Careful that absolute coordinates require using ConvertSVGCoordinatesToFPVCoordinates if lCurTokenType in [sttRelativeEllipticArcTo] then - begin - ConvertSVGDeltaToFPVDelta(AData, X, Y, X, Y); - end + ConvertSVGDeltaToFPVDelta(AData, X, Y, X, Y) else - begin ConvertSVGCoordinatesToFPVCoordinates(AData, X, Y, X, Y); + + if lCurTokenType = sttRelativeEllipticArcTo then + begin + Xnew := CurX + X; + Ynew := CurY + Y; + end else + begin + Xnew := X; + Ynew := Y; end; + // in svg the y axis increases downward, in fpv upward. Therefore, angles + // change their sign! + phi := -phi; + SweepFlag := not SweepFlag; // i.e. "clockwise" turns into "counter-clockwise"! + + if CalcEllipseCenter(CurX, CurY, Xnew, Ynew, X2, Y2, phi, LargeArcFlag, SweepFlag, cx, cy, tmp) then + AData.AddEllipticalArcWithCenterToPath(X2*tmp, Y2*tmp, phi, Xnew, Ynew, cx, cy, SweepFlag) + else + // Use a straight segment in case of no solution existing for the ellipse center + AData.AddLineToPath(Xnew, Ynew); + + CurX := Xnew; + CurY := Ynew; + { // Convert SVG flags to fpvectorial flags LeftmostEllipse := (LargeArcFlag and (not SweepFlag)) or ((not LargeArcFlag) and SweepFlag); + if (Y > CurY) or ((Y = CurY) and (X > CurX)) then + LeftMostEllipse := not LeftMostEllipse; + // if Y = CurY then "LeftMost" is to be understood as "TopMost" ClockwiseArc := SweepFlag; if lCurTokenType = sttRelativeEllipticArcTo then @@ -2336,6 +2467,7 @@ CurX := X; CurY := Y; end; + } Inc(i, 8); end @@ -2352,7 +2484,7 @@ X, Y: Double; FirstPtX, FirstPtY, CurX, CurY: Double; begin - FSVGPathTokenizer.Tokens.Clear; + FSVGPathTokenizer.ClearTokens; FSVGPathTokenizer.TokenizePathString(AStr); CurX := 0; CurY := 0; @@ -2401,7 +2533,7 @@ for i := 0 to ANode.Attributes.Length - 1 do begin lNodeName := ANode.Attributes.Item[i].NodeName; - if lNodeName = 'points' then + if lNodeName = 'points' then lPointsStr := ANode.Attributes.Item[i].NodeValue; end; @@ -2410,8 +2542,12 @@ lPath := AData.EndPath(True); Result := lPath; + // Add default SVG pen/brush + lPath.Pen.Style := psClear; + lPath.Brush.Style := bsClear; + // Apply the layer style - ApplyLayerStyles(lPath); + ApplyLayerStyles(AData, lPath); // now read the other attributes for i := 0 to ANode.Attributes.Length - 1 do @@ -2420,12 +2556,15 @@ if lNodeName = 'id' then lPath.Name := ANode.Attributes.Item[i].NodeValue else if lNodeName = 'style' then - ReadSVGStyle(ANode.Attributes.Item[i].NodeValue, lPath) + ReadSVGStyle(AData, ANode.Attributes.Item[i].NodeValue, lPath) else if IsAttributeFromStyle(lNodeName) then begin - ReadSVGPenStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); - ReadSVGBrushStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGPenStyleWithKeyAndValue(lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGBrushStyleWithKeyAndValue(lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, + ANode.Attributes.Item[i].NodeValue, lPath); end; end; end; @@ -2438,6 +2577,7 @@ lRect: TvRectangle; i: Integer; lNodeName: DOMString; + lNodeValue: String; begin lx := 0.0; ly := 0.0; @@ -2452,45 +2592,53 @@ lRect.Brush.Style := bsSolid; lRect.Brush.Color := colBlack; // Apply the layer style - ApplyLayerStyles(lRect); + ApplyLayerStyles(AData, lRect); // read the attributes for i := 0 to ANode.Attributes.Length - 1 do begin lNodeName := ANode.Attributes.Item[i].NodeName; + lNodeValue := ANode.Attributes.Item[i].NodeValue; if lNodeName = 'x' then - lx := StringWithUnitToFloat(ANode.Attributes.Item[i].NodeValue) + lx := StringWithUnitToFloat(lNodeValue) else if lNodeName = 'y' then - ly := StringWithUnitToFloat(ANode.Attributes.Item[i].NodeValue) + ly := StringWithUnitToFloat(lNodeValue) else if lNodeName = 'rx' then - lrx := StringWithUnitToFloat(ANode.Attributes.Item[i].NodeValue) + lrx := StringWithUnitToFloat(lNodeValue) else if lNodeName = 'ry' then - lry := StringWithUnitToFloat(ANode.Attributes.Item[i].NodeValue) + lry := StringWithUnitToFloat(lNodeValue) else if lNodeName = 'width' then - cx := StringWithUnitToFloat(ANode.Attributes.Item[i].NodeValue) + cx := StringWithUnitToFloat(lNodeValue) else if lNodeName = 'height' then - cy := StringWithUnitToFloat(ANode.Attributes.Item[i].NodeValue) + cy := StringWithUnitToFloat(lNodeValue) else if lNodeName = 'id' then - lRect.Name := ANode.Attributes.Item[i].NodeValue - else if lNodeName = 'style' then - ReadSVGStyle(ANode.Attributes.Item[i].NodeValue, lRect) - else if IsAttributeFromStyle(lNodeName) then - begin - ReadSVGPenStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lRect); - ReadSVGBrushStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lRect); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, ANode.Attributes.Item[i].NodeValue, lRect); - end; + lRect.Name := lNodeValue; end; - ConvertSVGCoordinatesToFPVCoordinates( - AData, lx, ly, lRect.X, lRect.Y); - ConvertSVGSizeToFPVSize( - AData, cx, cy, lRect.CX, lRect.CY); - ConvertSVGSizeToFPVSize( - AData, lrx, lry, lRect.RX, lRect.RY); + ConvertSVGCoordinatesToFPVCoordinates(AData, lx, ly, lRect.X, lRect.Y); + ConvertSVGSizeToFPVSize(AData, cx, cy, lRect.CX, lRect.CY); + ConvertSVGSizeToFPVSize(AData, lrx, lry, lRect.RX, lRect.RY); lRect.RX := Abs(lRect.RX) * 2; lRect.RY := Abs(lRect.RY) * 2; + // Make sure that transformations are read after geometry and position + // of rectangle is known. + for i := 0 to ANode.Attributes.Length - 1 do + begin + lNodeName := ANode.Attributes.Item[i].NodeName; + if lNodeName = 'style' then + ReadSVGStyle(AData, lNodeValue, lRect) + else if IsAttributeFromStyle(lNodeName) then + begin + ReadSVGPenStyleWithKeyAndValue(lNodeName, + ANode.Attributes.Item[i].NodeValue, lRect); + ReadSVGBrushStyleWithKeyAndValue(lNodeName, + ANode.Attributes.Item[i].NodeValue, lRect); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, + ANode.Attributes.Item[i].NodeValue, lRect); + end; + end; + Result := lRect; end; @@ -2558,7 +2706,7 @@ lTextSpanStack: TSVGObjectStack; // of TSVGTextSpanStyle lCurStyle: TSVGTextSpanStyle; i: Integer; - lNodeName, lNodeValue: DOMString; + lNodeName, lNodeValue, lXLink: DOMString; lCurObject: TObject; procedure ApplyStackStylesToText(ADest: TvText); @@ -2579,9 +2727,13 @@ procedure ReadTextSpans(ACurNode: TDOMNode); var - j: Integer; + i,j: Integer; lCurNode: TDOMNode; + lTextStr: string; lText: TvText; + lCText: TvCurvedText; + lInsertedEntity, lInsertedSubEntity: TvEntity; + s: String; begin lCurNode := ACurNode.FirstChild; while lCurNode <> nil do @@ -2628,20 +2780,58 @@ lCurObject := lTextSpanStack.Pop(); if lCurObject <> nil then lCurObject.Free; end + else if lNodeName = 'textpath' then + begin + lTextStr := GetTextContentFromNode(lCurNode); + lTextStr := RemoveLineEndingsAndTrim(lTextStr); + lTextStr := Trim(lTextStr); + + lCText := lParagraph.AddCurvedText(lTextStr); + + lCText.Font.Size := 10; + lCText.Name := lName; + + // read the attributes + for j := 0 to lCurNode.Attributes.Length - 1 do + begin + lNodeName := lCurNode.Attributes.Item[j].NodeName; + lNodeValue := lCurNode.Attributes.Item[j].NodeValue; + lNodeName := LowerCase(lNodeName); + if lNodeName = 'xlink:href' then + begin + lXLink := lNodeValue; + lXLink := Copy(lXLink, 2, Length(lXLink)); + if lXLink = '' then Continue; // nothing to insert, so give up + lInsertedEntity := AData.FindEntityWithNameAndType(lXLink, TvEntity, True); + if lInsertedEntity = nil then Continue; // nothing to insert, give up! + if lInsertedEntity is TvBlock then + begin + lInsertedSubEntity := TvBlock(lInsertedEntity).GetFirstEntity(); + if not (lInsertedSubEntity is TPath) then Continue; + // Add the curvature + lCText.Path := TPath(lInsertedSubEntity as TPath); + end; + end; + end; + + // Apply the layer style + ApplyLayerStyles(AData, lCText); + + // Apply the layer style + ApplyStackStylesToText(lCText); + end else + if lNodeValue <> '' then begin lText := lParagraph.AddText(lNodeValue); - lText.Font.Size := 10; lText.Name := lName; // Apply the layer style - ApplyLayerStyles(lText); - + ApplyLayerStyles(AData, lText); // Apply the layer style ApplyStackStylesToText(lText); end; - lCurNode := lCurNode.NextSibling; end; end; @@ -2675,11 +2865,11 @@ lParagraph.Name := lName; end else if lNodeName = 'style' then - ReadSVGStyle(lNodeValue, nil, lCurStyle) + ReadSVGStyle(AData, lNodeValue, nil, lCurStyle) else if IsAttributeFromStyle(lNodeName) then begin ReadSVGFontStyleWithKeyAndValue(lNodeName, lNodeValue, nil, lCurStyle); - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, lNodeValue, lParagraph); + // ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, lNodeValue, lParagraph); end; end; @@ -2701,6 +2891,15 @@ // These other lines can be positioned, so they need to appear as independent TvText elements ReadTextSpans(ANode); + // read the attributes + for i := 0 to ANode.Attributes.Length - 1 do + begin + lNodeName := ANode.Attributes.Item[i].NodeName; + lNodeValue := ANode.Attributes.Item[i].NodeValue; + if IsAttributeFromStyle(lNodeName) then + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, lNodeValue, lParagraph); + end; + // Finalization lCurObject := lTextSpanStack.Pop(); if lCurObject <> nil then lCurObject.Free; @@ -2756,14 +2955,16 @@ begin lNodeName := ANode.Attributes.Item[i].NodeName; lNodeValue := ANode.Attributes.Item[i].NodeValue; - {if lNodeName = 'style' then - ReadSVGStyle(lNodeValue, lText) - else} if IsAttributeFromStyle(lNodeName) then - begin - {ReadSVGPenStyleWithKeyAndValue(lNodeName, lNodeValue, lText); - ReadSVGBrushStyleWithKeyAndValue(lNodeName, lNodeValue, lText); - ReadSVGFontStyleWithKeyAndValue(lNodeName, lNodeValue, lText);} - ReadSVGGeneralStyleWithKeyAndValue(lNodeName, lNodeValue, lInsert); + if lNodeName = 'style' then + begin + ReadSVGStyle(AData, lNodeValue, lInsert); + end + else if IsAttributeFromStyle(lNodeName) then + begin + lInsert.SetElements += ReadSVGPenStyleWithKeyAndValue(lNodeName, lNodeValue, lInsert); + lInsert.SetElements += ReadSVGBrushStyleWithKeyAndValue(lNodeName, lNodeValue, lInsert); + lInsert.SetElements += ReadSVGFontStyleWithKeyAndValue(lNodeName, lNodeValue, lInsert); + ReadSVGGeneralStyleWithKeyAndValue(AData, lNodeName, lNodeValue, lInsert); end; end; @@ -2775,6 +2976,50 @@ Result := lInsert; end; +procedure TvSVGVectorialReader.StringToPenPattern(const AStr: String; + var APen: TvPen); +var + float_patt: TDoubleArray; + patt: array of LongWord; + i: Integer; +begin + if AStr = 'none' then + exit; + + float_patt := ReadSpaceSeparatedFloats(AStr, ','); + if Length(float_patt) < 2 then + exit; + + SetLength(patt, Length(float_patt)); + for i:=0 to High(patt) do + begin + if float_patt[i] < 0 then + raise Exception.CreateFmt('Incorrect value in stroke-dasharray "%s"', [AStr]); + patt[i] := round(float_patt[i]); + end; + + case Length(patt) of + 2: if patt[1] = 5 then + case patt[0] of + 3: begin APen.Style := psDot; exit; end; // stroke-dasharray: 3, 5 + 9: begin APen.Style := psDash; exit; end; // stroke-dasharray: 9, 5 + end; + 4: if (patt[0] = 9) and (patt[1] = 5) and (patt[2] = 3) and (patt[3] = 5) then + begin // stroke-dasharray: 9, 5, 3, 5 + APen.Style := psDashDot; + exit; + end; + 6: if (patt[0] = 9) and (patt[1] = 5) and (patt[2] = 3) and (patt[3] = 5) and + (patt[4] = 3) and (patt[5] = 5) + then begin // stroke-dasharray: 9, 5, 3, 5, 3, 5 + APen.Style := psDashDotDot; + exit; + end; + end; + APen.Style := psPattern; + APen.Pattern := patt; +end; + function TvSVGVectorialReader.StringWithUnitToFloat(AStr: string; ACoordKind: TSVGCoordinateKind = sckUnknown; ADefaultUnit: TSVGUnit = suPX; ATargetUnit: TSVGUnit = suPX): Double; @@ -2810,7 +3055,7 @@ procedure DoProcessMM_End(); begin if ATargetUnit = suPX then - Result := Result / FLOAT_MILIMETERS_PER_PIXEL; + Result := Result / FLOAT_MILLIMETERS_PER_PIXEL; DoViewBoxAdjust(); end; @@ -2818,7 +3063,7 @@ begin Result := StrToFloat(ValueStr, FPointSeparator); case ATargetUnit of - suMM: Result := Result * FLOAT_MILIMETERS_PER_PIXEL; + suMM: Result := Result * FLOAT_MILLIMETERS_PER_PIXEL; suPT: Result := Result * FLOAT_POINTS_PER_PIXEL; end; DoViewBoxAdjust(); @@ -2844,6 +3089,13 @@ Result := Result * 10; DoProcessMM_End(); end + else if UnitStr = 'in' then + begin + ValueStr := Copy(AStr, 1, Len-2); + Result := StrToFloat(ValueStr, FPointSeparator); + Result := Result * 25.4; + DoProcessMM_End(); + end else if UnitStr = 'px' then begin ValueStr := Copy(AStr, 1, Len-2); @@ -2883,12 +3135,25 @@ Result := Round(StrToFloat(AStr, FPointSeparator) * $FFFF); end; +{@@ Converts a number string to a floating-point number. If the string has a + % character at its end then it is removed, and the numerical value is + divided by 100. } +function TvSVGVectorialReader.StringWithPercentToFloat(AStr: String): Double; +begin + if AStr[Length(AStr)] = '%' then + begin + Delete(AStr, Length(AStr), 1); + Result := 0.01 * StrToFloat(trim(AStr), FPointSeparator); + end else + Result := StrToFloat(AStr, FPointSeparator); +end; + procedure TvSVGVectorialReader.ConvertSVGCoordinatesToFPVCoordinates( const AData: TvVectorialPage; const ASrcX, ASrcY: Double; var ADestX,ADestY: Double; ADoViewBoxAdjust: Boolean = True); begin - ADestX := ASrcX * FLOAT_MILIMETERS_PER_PIXEL; - ADestY := AData.Height - ASrcY * FLOAT_MILIMETERS_PER_PIXEL; + ADestX := ASrcX * FLOAT_MILLIMETERS_PER_PIXEL; + ADestY := AData.Height - ASrcY * FLOAT_MILLIMETERS_PER_PIXEL; if ViewBoxAdjustment and ADoViewBoxAdjust then begin ADestX := (ASrcX - ViewBox_Left) * Page_Width / ViewBox_Width; @@ -2900,8 +3165,8 @@ const AData: TvVectorialPage; const ASrcX, ASrcY: Double; var ADestX, ADestY: Double; ADoViewBoxAdjust: Boolean = True); begin - ADestX := ASrcX * FLOAT_MILIMETERS_PER_PIXEL; - ADestY := - ASrcY * FLOAT_MILIMETERS_PER_PIXEL; + ADestX := ASrcX * FLOAT_MILLIMETERS_PER_PIXEL; + ADestY := - ASrcY * FLOAT_MILLIMETERS_PER_PIXEL; if ViewBoxAdjustment and ADoViewBoxAdjust then begin ADestX := ASrcX * Page_Width / ViewBox_Width; @@ -2913,8 +3178,8 @@ const AData: TvVectorialPage; const ASrcX, ASrcY: Double; var ADestX, ADestY: Double; ADoViewBoxAdjust: Boolean = True); begin - ADestX := ASrcX * FLOAT_MILIMETERS_PER_PIXEL; - ADestY := ASrcY * FLOAT_MILIMETERS_PER_PIXEL; + ADestX := ASrcX * FLOAT_MILLIMETERS_PER_PIXEL; + ADestY := ASrcY * FLOAT_MILLIMETERS_PER_PIXEL; if ViewBoxAdjustment and ADoViewBoxAdjust then begin ADestX := ASrcX * Page_Width / ViewBox_Width; @@ -2997,9 +3262,13 @@ end; destructor TvSVGVectorialReader.Destroy; +var + i: Integer; begin FLayerStylesKeys.Free; FLayerStylesValues.Free; + + for i:=FBrushDefs.Count-1 downto 0 do TObject(FBrushDefs[i]).Free; FBrushDefs.Free; FSVGPathTokenizer.Free; @@ -3121,7 +3390,7 @@ AData.Height := ly2 - ly; end; - // Make sure the latest page size is syncronized with auto-detected + // Make sure the latest page size is synchronized with auto-detected // or ViewBox-only obtained size Page_Width := AData.Width; Page_Height := AData.Height; diff -Nru lazarus-1.4.4+dfsg/components/fpvectorial/svgvectorialwriter.pas lazarus-1.6+dfsg/components/fpvectorial/svgvectorialwriter.pas --- lazarus-1.4.4+dfsg/components/fpvectorial/svgvectorialwriter.pas 2015-02-10 22:58:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpvectorial/svgvectorialwriter.pas 2015-03-24 17:50:02.000000000 +0000 @@ -245,7 +245,7 @@ TEXT_ANCHORS: array[TvTextAnchor] of string = ('start', 'middle', 'end'); TEXT_DECO: array[0..3] of string = ('none', 'underline', 'line-through', 'line-through,underline'); var - i, j, FontSize: Integer; + FontSize: Integer; TextStr: String; PtX, PtY: double; begin @@ -327,7 +327,7 @@ AData: TvVectorialPage; ADoc: TvVectorialDocument); var lEntity: TvEntity; - i, j: Integer; + i: Integer; begin for i := 0 to AData.GetEntitiesCount() - 1 do begin diff -Nru lazarus-1.4.4+dfsg/components/fpweb/fpideexteditorinsertfilenameunit.pas lazarus-1.6+dfsg/components/fpweb/fpideexteditorinsertfilenameunit.pas --- lazarus-1.4.4+dfsg/components/fpweb/fpideexteditorinsertfilenameunit.pas 2010-09-12 11:02:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/fpideexteditorinsertfilenameunit.pas 2015-07-04 23:08:00.000000000 +0000 @@ -34,7 +34,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + Classes, SysUtils, LazFileUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ButtonPanel; type @@ -78,7 +78,7 @@ procedure TfpIDEExtEditorInsertFileNameForm.FillFilesList; var i:integer; - S, Ext:string; + S:string; begin LBFiles.Items.Clear; if Assigned(LazarusIDE) and Assigned(LazarusIDE.ActiveProject) then diff -Nru lazarus-1.4.4+dfsg/components/fpweb/fpwebnewhtmlformunit.lfm lazarus-1.6+dfsg/components/fpweb/fpwebnewhtmlformunit.lfm --- lazarus-1.4.4+dfsg/components/fpweb/fpwebnewhtmlformunit.lfm 2011-10-03 22:14:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/fpwebnewhtmlformunit.lfm 2015-05-14 22:29:10.000000000 +0000 @@ -56,7 +56,7 @@ Top = 56 Width = 35 BorderSpacing.Around = 6 - Caption = 'Metod' + Caption = 'Method' ParentColor = False end object Label3: TLabel diff -Nru lazarus-1.4.4+dfsg/components/fpweb/fpwebnewhtmlimgunit.pas lazarus-1.6+dfsg/components/fpweb/fpwebnewhtmlimgunit.pas --- lazarus-1.4.4+dfsg/components/fpweb/fpwebnewhtmlimgunit.pas 2010-09-12 11:02:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/fpwebnewhtmlimgunit.pas 2015-07-04 23:08:00.000000000 +0000 @@ -34,7 +34,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, + Classes, SysUtils, LazFileUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls, EditBtn, ExtCtrls; type diff -Nru lazarus-1.4.4+dfsg/components/fpweb/fpwebnewhtmllistunit.pas lazarus-1.6+dfsg/components/fpweb/fpwebnewhtmllistunit.pas --- lazarus-1.4.4+dfsg/components/fpweb/fpwebnewhtmllistunit.pas 2010-09-12 11:02:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/fpwebnewhtmllistunit.pas 2015-03-22 10:17:35.000000000 +0000 @@ -63,8 +63,6 @@ { TfpwebNewHTMLListForm } function TfpwebNewHTMLListForm.HtmlText: string; -var - i:integer; begin Result:=DupeString('<li> </li>'+LineEnding, SERows.Value); if RGStyle.ItemIndex = 0 then diff -Nru lazarus-1.4.4+dfsg/components/fpweb/images/make_img_list.sh lazarus-1.6+dfsg/components/fpweb/images/make_img_list.sh --- lazarus-1.4.4+dfsg/components/fpweb/images/make_img_list.sh 2011-08-11 16:35:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/images/make_img_list.sh 2015-05-07 20:39:58.000000000 +0000 @@ -3,4 +3,4 @@ if [ -f fpweb_images.inc ]; then rm fpweb_images.inc fi -../../../tools/lazres fpweb_images.inc HTMLList.png quick_table.png tag_dd.png tag_dl.png tag_dt.png tag_li.png tag_ol.png tag_ul.png tag_table_body.png tag_table_row.png tag_tbody.png tag_td.png tag_tr.png tag_table_data.png tag_h1.png tag_h2.png tag_h3.png tag_h4.png tag_h5.png HTMLForm.png lineedit.png reset.png submit.png tag_image.png tag_br.png tag_comm.png tag_hr.png color-picker.png div_center.png div_justify.png div_left.png div_right.png tag_bold.png tag_i.png tag_u.png tag_nbsp.png button.png check.png radio.png select.png tag_a.png tag_attribute.png tag_element.png tag_sub.png tag_sup.png tag_font.png tag_pre.png +../../../tools/lazres fpweb_images.inc HTMLList.png quick_table.png tag_dd.png tag_dl.png tag_dt.png tag_li.png tag_ol.png tag_ul.png tag_table_body.png tag_table_row.png tag_tbody.png tag_td.png tag_tr.png tag_table_data.png tag_h1.png tag_h2.png tag_h3.png tag_h4.png tag_h5.png HTMLForm.png lineedit.png reset.png submit.png tag_image.png tag_br.png tag_comm.png tag_hr.png color-picker.png div_center.png div_justify.png div_left.png div_right.png tag_bold.png tag_i.png tag_u.png tag_nbsp.png button.png check.png radio.png select.png tag_a.png tag_attribute.png tag_element.png tag_sub.png tag_sup.png tag_font.png tag_pre.png tfphttpwebclient.png Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/fpweb/images/tfphttpwebclient.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/fpweb/images/tfphttpwebclient.png differ diff -Nru lazarus-1.4.4+dfsg/components/fpweb/languages/fpwebstrconsts.hu.po lazarus-1.6+dfsg/components/fpweb/languages/fpwebstrconsts.hu.po --- lazarus-1.4.4+dfsg/components/fpweb/languages/fpwebstrconsts.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/languages/fpwebstrconsts.hu.po 2016-02-06 15:11:04.000000000 +0000 @@ -181,7 +181,7 @@ #: fpwebstrconsts.smihtmleditor msgid "HTML Editor" -msgstr "HTML-szerkesztő" +msgstr "HTML szerkesztő" #: fpwebstrconsts.smihtmlformbuttton msgid "Insert Button control" diff -Nru lazarus-1.4.4+dfsg/components/fpweb/languages/fpwebstrconsts.ru.po lazarus-1.6+dfsg/components/fpweb/languages/fpwebstrconsts.ru.po --- lazarus-1.4.4+dfsg/components/fpweb/languages/fpwebstrconsts.ru.po 2012-04-10 00:51:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/languages/fpwebstrconsts.ru.po 2016-02-09 23:06:07.000000000 +0000 @@ -8,6 +8,8 @@ "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: fpwebstrconsts.scssfile msgctxt "fpwebstrconsts.scssfile" @@ -223,7 +225,7 @@ #: fpwebstrconsts.smihtmlformradiobtn msgid "Insert RadioBtn control" -msgstr "Вставить радио-кнопку" +msgstr "Вставить кнопку-переключатель" #: fpwebstrconsts.smihtmlforms msgctxt "fpwebstrconsts.smihtmlforms" @@ -449,4 +451,3 @@ #: fpwebstrconsts.susethreads msgid "Use &threads to serve requests in" msgstr "Обслуживать запросы в потоках &исполнения" - diff -Nru lazarus-1.4.4+dfsg/components/fpweb/weblazideintf.pp lazarus-1.6+dfsg/components/fpweb/weblazideintf.pp --- lazarus-1.4.4+dfsg/components/fpweb/weblazideintf.pp 2014-07-20 20:15:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/weblazideintf.pp 2015-06-24 16:41:10.000000000 +0000 @@ -30,6 +30,11 @@ fpjsonrpc, jstree,jsparser, fpextdirect,fpwebdata, +{$IFDEF VER3_1} + fphttpwebclient, + fpoauth2, + fpoauth2ini, +{$ENDIF} webjsonrpc; type @@ -271,15 +276,37 @@ TExtJSXMLWebdataInputAdaptor,TExtJSXMLDataFormatter, TJSONRPCHandler,TJSONRPCDispatcher,TSessionJSONRPCDispatcher, TJSONRPCContentProducer, - TExtDirectDispatcher,TExtDirectContentProducer]); + TExtDirectDispatcher,TExtDirectContentProducer + ]); end; +{$IFDEF VER3_1} +procedure RegisterTFPHTTPWebClient; +begin + RegisterComponents(fpWebTab,[TFPHTTPWebClient]); +end; +procedure RegisterTOAuth2Handler; +begin + RegisterComponents(fpWebTab,[TOAuth2Handler]); +end; +procedure RegisterTFPOAuth2IniStore; +begin + RegisterComponents(fpWebTab,[TFPOAuth2IniStore]); +end; +{$ENDIF} + Procedure RegisterComponents; begin RegisterUnit('fphtml',@RegisterHTMLComponents); RegisterUnit('fpdatasetform',@RegisterdatasetComponents); + {$IFDEF VER3_1} + RegisterUnit('fphttpwebclient',@RegisterTFPHTTPWebClient); + RegisterUnit('fpoauth2',@RegisterTOAuth2Handler); + RegisterUnit('fpoauth2ini',@RegisterTFPOAuth2IniStore); + //classes.RegisterComponents(fpWebTab,[TFPHTTPWebClient,TOAuth2Handler,TFPOAuth2IniStore]); + {$ENDIF} end; procedure Register; diff -Nru lazarus-1.4.4+dfsg/components/fpweb/weblaz.lpk lazarus-1.6+dfsg/components/fpweb/weblaz.lpk --- lazarus-1.4.4+dfsg/components/fpweb/weblaz.lpk 2014-06-06 11:11:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/weblaz.lpk 2015-06-24 16:41:10.000000000 +0000 @@ -2,6 +2,7 @@ <CONFIG> <Package Version="4"> <Name Value="weblaz"/> + <Type Value="RunAndDesignTime"/> <Author Value="Michael Van Canneyt"/> <CompilerOptions> <Version Value="11"/> @@ -15,17 +16,16 @@ </Parsing> <Other> <CustomOptions Value="$(IDEBuildOptions)"/> - <CompilerPath Value="$(CompPath)"/> </Other> </CompilerOptions> <Description Value="Web functionality for Lazarus"/> <License Value="LGPL with static linking exception, see Copying.fcl in FCL"/> <Version Major="1"/> - <Files Count="61"> + <Files Count="64"> <Item1> <Filename Value="custcgi.pp"/> - <AddToUsesPkgSection Value="False"/> <Type Value="Virtual Unit"/> + <AddToUsesPkgSection Value="False"/> <UnitName Value="custcgi"/> </Item1> <Item2> @@ -40,8 +40,8 @@ </Item3> <Item4> <Filename Value="fpapache.pp"/> - <AddToUsesPkgSection Value="False"/> <Type Value="Virtual Unit"/> + <AddToUsesPkgSection Value="False"/> <UnitName Value="fpapache"/> </Item4> <Item5> @@ -275,29 +275,46 @@ <UnitName Value="WebLazIDEIntf"/> </Item57> <Item58> - <Filename Value="websession.pp"/> - <Type Value="Virtual Unit"/> - <UnitName Value="websession"/> - </Item58> - <Item59> <Filename Value="webutil.pp"/> <Type Value="Virtual Unit"/> <UnitName Value="webutil"/> - </Item59> - <Item60> + </Item58> + <Item59> <Filename Value="frmrpcmoduleoptions.lfm"/> <Type Value="LFM"/> - </Item60> - <Item61> + </Item59> + <Item60> <Filename Value="frmrpcmoduleoptions.pp"/> <UnitName Value="frmrpcmoduleoptions"/> + </Item60> + <Item61> + <Filename Value="iniwebsession.pp"/> + <Type Value="Virtual Unit"/> + <UnitName Value="iniwebsession"/> </Item61> + <Item62> + <Filename Value="fphttpwebclient.pp"/> + <Type Value="Virtual Unit"/> + <AddToUsesPkgSection Value="False"/> + <UnitName Value="fphttpwebclient"/> + </Item62> + <Item63> + <Filename Value="fpoauth2.pp"/> + <Type Value="Virtual Unit"/> + <AddToUsesPkgSection Value="False"/> + <UnitName Value="fpoauth2"/> + </Item63> + <Item64> + <Filename Value="fpoauth2ini.pp"/> + <Type Value="Virtual Unit"/> + <AddToUsesPkgSection Value="False"/> + <UnitName Value="fpoauth2ini"/> + </Item64> </Files> <i18n> <EnableI18N Value="True"/> <OutDir Value="languages"/> </i18n> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="2"> <Item1> <PackageName Value="SQLDBLaz"/> diff -Nru lazarus-1.4.4+dfsg/components/fpweb/weblaz.pas lazarus-1.6+dfsg/components/fpweb/weblaz.pas --- lazarus-1.4.4+dfsg/components/fpweb/weblaz.pas 2014-06-06 09:55:39.000000000 +0000 +++ lazarus-1.6+dfsg/components/fpweb/weblaz.pas 2015-05-07 20:39:58.000000000 +0000 @@ -15,8 +15,8 @@ fpWebNewHtmlTagPreUnit, fpwebNewHtmlTagTDUnit, fpwebNewHtmlTagTRUnit, fpWebSelectOptionsUnit, fpWebSelectTagUnit, fpWebStrConsts, fpWebToolsUnit, frmnewhttpapp, HTMLDefs, htmlelements, htmlwriter, HTTPDefs, lazweb, - sqldbwebdata, webjsonrpc, WebLazIDEIntf, websession, webutil, - frmrpcmoduleoptions, LazarusPackageIntf; + sqldbwebdata, webjsonrpc, WebLazIDEIntf, webutil, frmrpcmoduleoptions, + iniwebsession, LazarusPackageIntf; implementation diff -Nru lazarus-1.4.4+dfsg/components/googleapis/2_6_4/getsources.sh lazarus-1.6+dfsg/components/googleapis/2_6_4/getsources.sh --- lazarus-1.4.4+dfsg/components/googleapis/2_6_4/getsources.sh 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/2_6_4/getsources.sh 2015-05-14 09:13:16.000000000 +0000 @@ -0,0 +1,33 @@ +#!/bin/bash +# +# Script to get sources for google api if you work with 2.6.4 +# Kindly donated by markbass72 <markbass72@gmail.com> +# +function ExitFromScript() +{ +echo ERROR: incorrect path! +echo You must execute this script from folder: .../lazarus/components/googleapis/2_6_4 +exit +} + +pwd|grep "/2_6_4$" || ExitFromScript +echo Folder: OK! + +[ ! -d /tmp/googleapi ] && mkdir /tmp/googleapi +svn co http://svn.freepascal.org/svn/fpc/trunk/packages/googleapi/src/ /tmp/googleapi/ +cp /tmp/googleapi/* . +rm -r /tmp/googleapi + +[ ! -d /tmp/fcl-web ] && mkdir /tmp/fcl-web +svn co http://svn.freepascal.org/svn/fpc/trunk/packages/fcl-web/src/base/ /tmp/fcl-web/ +cp /tmp/fcl-web/fpoauth2.pp . +cp /tmp/fcl-web/fphttpwebclient.pp . +cp /tmp/fcl-web/fpwebclient.pp . +cp /tmp/fcl-web/restcodegen.pp . +cp /tmp/fcl-web/restbase.pp . +cp /tmp/fcl-web/fpoauth2ini.pp . +cp /tmp/fcl-web/fpjwt.pp . +rm -r /tmp/fcl-web + +echo "-- googleapis sources --" +ls \ No newline at end of file diff -Nru lazarus-1.4.4+dfsg/components/googleapis/2_6_4/synapsewebclient.pp lazarus-1.6+dfsg/components/googleapis/2_6_4/synapsewebclient.pp --- lazarus-1.4.4+dfsg/components/googleapis/2_6_4/synapsewebclient.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/2_6_4/synapsewebclient.pp 2015-05-09 15:25:35.000000000 +0000 @@ -0,0 +1,174 @@ +unit synapsewebclient; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, fpwebclient, httpsend; + +Type + + { TSynapseRequest } + + TSynapseRequest = Class(TWebClientRequest) + Private + FHTTP : THTTPSend; + Protected + function GetHeaders: TStrings;override; + function GetStream: TStream;override; + Public + Constructor Create(AHTTP : THTTPSend); + Destructor Destroy; override; + end; + + { TSynapseResponse } + + TSynapseResponse = Class(TWebClientResponse) + Private + FHTTP : THTTPSend; + Protected + function GetHeaders: TStrings;override; + function GetStream: TStream;override; + Function GetStatusCode : Integer; override; + Function GetStatusText : String; override; + Public + Constructor Create(ARequest : TWebClientRequest); override; + Destructor Destroy; override; + end; + + { TSynapseWebClient } + + TSynapseWebClient = Class(TAbstractWebClient) + Protected + Function DoCreateRequest: TWebClientRequest; override; + Function DoHTTPMethod(Const AMethod,AURL : String; ARequest : TWebClientRequest) : TWebClientResponse; override; + end; + +implementation + +{ TSynapseRequest } + +function TSynapseRequest.GetHeaders: TStrings; +begin + if Assigned(FHTTP) then + Result:=FHTTP.Headers + else + Result:=Inherited GetHeaders; +end; + +function TSynapseRequest.GetStream: TStream; +begin + if Assigned(FHTTP) then + Result:=FHTTP.Document + else + Result:=Inherited GetStream; +end; + +Constructor TSynapseRequest.Create(AHTTP: THTTPSend); +begin + FHTTP:=AHTTP; +end; + +Destructor TSynapseRequest.Destroy; +begin + FreeAndNil(FHTTP); + inherited Destroy; +end; + +{ TSynapseResponse } + +function TSynapseResponse.GetHeaders: TStrings; +begin + if Assigned(FHTTP) then + Result:=FHTTP.Headers + else + Result:=Inherited GetHeaders; +end; + +function TSynapseResponse.GetStream: TStream; +begin + if Assigned(FHTTP) then + Result:=FHTTP.Document + else + Result:=Inherited GetStream; +end; + +Function TSynapseResponse.GetStatusCode: Integer; +begin + if Assigned(FHTTP) then + Result:=FHTTP.ResultCode + else + Result:=0; +end; + +Function TSynapseResponse.GetStatusText: String; +begin + if Assigned(FHTTP) then + Result:=FHTTP.ResultString + else + Result:=''; +end; + +Constructor TSynapseResponse.Create(ARequest : TWebClientRequest); +begin + Inherited Create(ARequest); + FHTTP:=(ARequest as TSynapseRequest).FHTTP; +end; + +Destructor TSynapseResponse.Destroy; +begin + FreeAndNil(FHTTP); + inherited Destroy; +end; + +{ TSynapseWebClient } + +Function TSynapseWebClient.DoCreateRequest: TWebClientRequest; +begin + Result:=TSynapseRequest.Create(THTTPSend.Create); +end; + +Function TSynapseWebClient.DoHTTPMethod(Const AMethod, AURL: String; + ARequest: TWebClientRequest): TWebClientResponse; + +Var + U,S : String; + I : Integer; + h : THTTPSend; + +begin + U:=AURL; + H:=TSynapseRequest(ARequest).FHTTP; + S:=ARequest.ParamsAsQuery; + if (S<>'') then + begin + if Pos('?',U)=0 then + U:=U+'?'; + U:=U+S; + end; + I:=H.Headers.IndexOfName('Content-type'); + if I<>-1 then + begin + H.MimeType:=H.Headers.Values['Content-type']; + H.Headers.Delete(I); + end; + if Not H.HTTPMethod(AMethod,U) then + begin + H.Document.Clear; + H.Headers.Clear; + H.Cookies.Clear; + With H.Sock do + Raise EFPWebClient.CreateFmt('HTTP Request failed (%d : %s)',[LastError,LastErrorDesc]); + end + else + begin + Result:=TSynapseResponse.Create(ARequest); + if Assigned(ARequest.ResponseContent) then + ARequest.ResponseContent.CopyFrom(ARequest.Content,0); + TSynapseRequest(ARequest).FHTTP:=Nil; + end; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/calendardemo.lpi lazarus-1.6+dfsg/components/googleapis/demo/calendar/calendardemo.lpi --- lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/calendardemo.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/calendar/calendardemo.lpi 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <PathDelim Value="\"/> + <General> + <Flags> + <SaveOnlyProjectUnits Value="True"/> + <SaveJumpHistory Value="False"/> + <SaveFoldState Value="False"/> + </Flags> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="calendardemo"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="2"> + <Item1 Name="Default" Default="True"/> + <Item2 Name="Debug"> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="calendardemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <OtherUnitFiles Value="..\..;..\..\..\base"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <CodeGeneration> + <Optimizations> + <OptimizationLevel Value="0"/> + </Optimizations> + </CodeGeneration> + <Linking> + <Debugging> + <UseHeaptrc Value="True"/> + </Debugging> + </Linking> + </CompilerOptions> + </Item2> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> + <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="3"> + <Item1> + <PackageName Value="lazgoogleapis"/> + </Item1> + <Item2> + <PackageName Value="laz_synapse"/> + </Item2> + <Item3> + <PackageName Value="LCL"/> + </Item3> + </RequiredPackages> + <Units Count="3"> + <Unit0> + <Filename Value="calendardemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="frmmain.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="MainForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit1> + <Unit2> + <Filename Value="fphttpclient.pp"/> + <IsPartOfProject Value="True"/> + </Unit2> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="calendardemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <OtherUnitFiles Value="C:\Documents and Settings\Ludo\Mes documents\Borland Studio Projects\ODBCHTTP\synapse\source\libsvn;.."/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <CodeGeneration> + <SmartLinkUnit Value="True"/> + <Optimizations> + <OptimizationLevel Value="2"/> + </Optimizations> + </CodeGeneration> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf2Set"/> + <UseHeaptrc Value="True"/> + <UseExternalDbgSyms Value="True"/> + </Debugging> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/calendardemo.lpr lazarus-1.6+dfsg/components/googleapis/demo/calendar/calendardemo.lpr --- lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/calendardemo.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/calendar/calendardemo.lpr 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,20 @@ +program calendardemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, frmmain; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/calendardemo.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/calendar/calendardemo.res differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/frmmain.lfm lazarus-1.6+dfsg/components/googleapis/demo/calendar/frmmain.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/frmmain.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/calendar/frmmain.lfm 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,113 @@ +object MainForm: TMainForm + Left = 456 + Height = 388 + Top = 191 + Width = 666 + Caption = 'Calendar Demo' + ClientHeight = 388 + ClientWidth = 666 + OnCreate = FormCreate + OnDestroy = FormDestroy + LCLVersion = '1.5' + object BFetchCalendars: TButton + Left = 8 + Height = 25 + Top = 8 + Width = 128 + Caption = 'Fetch calendars' + OnClick = BFetchCalendarsClick + TabOrder = 0 + end + object GBAccess: TGroupBox + Left = 0 + Height = 80 + Top = 308 + Width = 666 + Align = alBottom + Caption = 'Please provide Google API access code' + ClientHeight = 52 + ClientWidth = 662 + TabOrder = 1 + Visible = False + object LEAccess: TLabel + Left = 16 + Height = 12 + Top = 8 + Width = 56 + Caption = 'Access code' + ParentColor = False + end + object BSetAccess: TButton + Left = 490 + Height = 25 + Top = 9 + Width = 75 + Anchors = [akTop, akRight] + Caption = 'OK' + OnClick = BSetAccessClick + TabOrder = 0 + end + object BCancel: TButton + Left = 570 + Height = 25 + Top = 8 + Width = 75 + Anchors = [akTop, akRight] + Caption = 'Cancel' + OnClick = BCancelClick + TabOrder = 1 + end + object EAccessCode: TEdit + Left = 112 + Height = 18 + Top = 8 + Width = 362 + Anchors = [akTop, akLeft, akRight] + TabOrder = 2 + end + end + object BFetchEvents: TButton + Left = 548 + Height = 25 + Top = 8 + Width = 96 + Anchors = [akTop, akRight] + Caption = 'Fetch Events' + Enabled = False + OnClick = BFetchEventsClick + TabOrder = 2 + end + object LBCalendars: TListBox + Left = 8 + Height = 248 + Top = 40 + Width = 312 + Anchors = [akTop, akLeft, akBottom] + ItemHeight = 0 + OnSelectionChange = LBCalendarsSelectionChange + ScrollWidth = 308 + TabOrder = 3 + TopIndex = -1 + end + object LBEvents: TListBox + Left = 328 + Height = 249 + Top = 40 + Width = 324 + Anchors = [akTop, akLeft, akRight, akBottom] + ItemHeight = 0 + ScrollWidth = 320 + TabOrder = 4 + TopIndex = -1 + end + object LEvents: TLabel + Left = 328 + Height = 12 + Top = 16 + Width = 207 + Anchors = [akTop, akLeft, akRight] + AutoSize = False + Caption = 'Events for calendar : <select a calendar>' + ParentColor = False + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/frmmain.pp lazarus-1.6+dfsg/components/googleapis/demo/calendar/frmmain.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/frmmain.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/calendar/frmmain.pp 2015-05-16 08:08:27.000000000 +0000 @@ -0,0 +1,280 @@ +unit frmmain; + +{$mode objfpc}{$H+} + +// Define USESYNAPSE if you want to force use of synapse +{ $DEFINE USESYNAPSE} + +// For version 2.6.4, synapse is the only option. +{$IFDEF VER2_6} +{$DEFINE USESYNAPSE} +{$ENDIF} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + synautil, IniFiles, googlebase, googleservice, googleclient, googlecalendar; + +type + + { TMainForm } + TAccessTokenState = (acsWaiting,acsOK,acsCancel); + + TMainForm = class(TForm) + BCancel: TButton; + BSetAccess: TButton; + BFetchCalendars: TButton; + BFetchEvents: TButton; + EAccessCode: TEdit; + GBAccess: TGroupBox; + LEvents: TLabel; + LEAccess: TLabel; + LBCalendars: TListBox; + LBEvents: TListBox; + procedure BCancelClick(Sender: TObject); + procedure BFetchEventsClick(Sender: TObject); + procedure BSetAccessClick(Sender: TObject); + procedure BFetchCalendarsClick(Sender: TObject); + Procedure DoUserConsent(Const AURL : String; Out AAuthCode : String) ; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure LBCalendarsSelectionChange(Sender: TObject; User: boolean); + private + { private declarations } + FAccessState : TAccessTokenState; + FClient : TGoogleClient; + + FCalendarAPI: TCalendarAPI; + calendarList: TCalendarList; + FCurrentCalendar : TCalendarListEntry; + events : TEvents; + procedure LoadAuthConfig; + procedure SaveRefreshToken; + public + { public declarations } + end; + +var + MainForm: TMainForm; + +implementation + + +uses + {$ifdef windows}windows,{$endif} + jsonparser, // needed + fpoauth2, + lclintf, +{$IFDEF USESYNAPSE} + ssl_openssl, + synapsewebclient +{$ELSE} + fphttpwebclient +{$ENDIF} + ; + +{$R *.lfm} + +{ TMainForm } + +procedure TMainForm.FormCreate(Sender: TObject); +begin + // Register calendar resources. + TCalendarAPI.RegisterAPIResources; + // Set up google client. + FClient:=TGoogleClient.Create(Self); +{$IFDEF USESYNAPSE} + FClient.WebClient:=TSynapseWebClient.Create(Self); +{$ELSE} + FClient.WebClient:=TFPHTTPWebClient.Create(Self); +{$ENDIF} + FClient.WebClient.RequestSigner:=FClient.AuthHandler; + FClient.WebClient.LogFile:='requests.log'; + FClient.AuthHandler.WebClient:=FClient.WebClient; + FClient.AuthHandler.Config.AccessType:=atOffLine; + // We want to enter a code. + FClient.OnUserConsent:=@DoUserConsent; + // Create a calendar API and connect it to the client. + FCalendarAPI:=TCalendarAPI.Create(Self); + FCalendarAPI.GoogleClient:=FClient; + // Load configuration + LoadAuthConfig; +end; + +procedure TMainForm.FormDestroy(Sender: TObject); +begin + FreeAndNil(CalendarList); + FreeAndNil(Events); +end; + +procedure TMainForm.LBCalendarsSelectionChange(Sender: TObject; User: boolean); +begin + BFetchEvents.Enabled:=User and (LBCalendars.ItemIndex<>-1); + if BFetchEvents.Enabled then + begin + FCurrentCalendar:=LBCalendars.Items.Objects[LBCalendars.ItemIndex] as TCalendarListEntry; + if (FCurrentCalendar.Summary<>'') then + LEvents.Caption:='Events for calendar : '+FCurrentCalendar.Summary + else + LEvents.Caption:='Events for calendar : '+FCurrentCalendar.ID; + end + else + begin + LEvents.Caption:='Events for calendar : <select a calendar>'; + LBEvents.Items.Clear; + FCurrentCalendar:=Nil; + end; + +end; + +procedure TMainForm.LoadAuthConfig; + +Var + ini:TIniFile; + +begin + ini:=TIniFile.Create('google.ini'); + try + With FClient.AuthHandler.Config,Ini do + begin + // Registered application needs calendar scope + ClientID:=ReadString('Credentials','ClientID',''); + ClientSecret:=ReadString('Credentials','ClientSecret',''); + AuthScope:=ReadString('Credentials','Scope', + 'https://www.googleapis.com/auth/calendar'); + // We are offline. + RedirectUri:='urn:ietf:wg:oauth:2.0:oob'; + end; + With FClient.AuthHandler.Session,Ini do + begin + // Session data + RefreshToken:=ReadString('Session','RefreshToken',''); + AccessToken:=ReadString('Session','AccesToken',''); + AuthTokenType:=ReadString('Session','TokenType',''); + AuthExpires:=ReadDateTime('Session','AuthExpires',0); + AuthExpiryPeriod:=ReadInteger('Session','AuthPeriod',0); + end; + finally + Ini.Free; + end; +end; + +procedure TMainForm.SaveRefreshToken; + +Var + ini:TIniFile; + +begin + // We save the refresh token for later use. + With FClient.AuthHandler.Session do + if RefreshToken<>'' then + begin + ini:=TIniFile.Create('google.ini'); + try + With ini do + begin + WriteString('Session','RefreshToken',RefreshToken); + WriteString('Session','AccessToken',AccessToken); + WriteString('Session','TokenType',AuthTokenType); + WriteDateTime('Session','AuthExpires',AuthExpires); + WriteInteger('Session','AuthPeriod',AuthExpiryPeriod); + end; + finally + Ini.Free; + end; + end; +end; + +procedure TMainForm.BFetchCalendarsClick(Sender: TObject); + +var + Entry: TCalendarListEntry; + Resource : TCalendarListResource; + EN : String; + i:integer; + +begin + LBCalendars.Items.Clear; + FreeAndNil(CalendarList); + Resource:=Nil; + try + Resource:=FCalendarAPI.CreateCalendarListResource; + CalendarList:=Resource.list(''); + SaveRefreshToken; + I:=0; + if assigned(calendarList) then + for Entry in calendarList.items do + begin + Inc(i); + EN:=Entry.Summary; + if EN='' then + EN:=Entry.id+' ('+Entry.description+')'; + LBCalendars.Items.AddObject(IntToStr(i)+': '+EN,Entry); + end; + BFetchEvents.Enabled:=LBCalendars.Items.Count>0; + finally + FreeAndNil(Resource); + end; +end; + +procedure TMainForm.BSetAccessClick(Sender: TObject); +begin + FAccessState:=acsOK; + GBAccess.Visible:=False; +end; + +procedure TMainForm.BCancelClick(Sender: TObject); +begin + FAccessState:=acsCancel; + GBAccess.Visible:=False; +end; + +procedure TMainForm.BFetchEventsClick(Sender: TObject); +var + Entry: TEvent; + EN : String; + i:integer; + +begin + if LBCalendars.ItemIndex<0 then + Exit; + LBEvents.Items.Clear; + FreeAndNil(Events); + Events:=FCalendarAPI.EventsResource.list(FCurrentCalendar.id,''); + SaveRefreshToken; + I:=0; + if assigned(Events) then + for Entry in Events.items do + begin + Inc(i); + EN:=Entry.Summary; + if EN='' then + EN:=Entry.id+' ('+Entry.description+')'; + if Assigned(Entry.Start) then + if Entry.start.date<>0 then + EN:=DateToStr(Entry.start.date)+' : '+EN + else if Entry.start.dateTime<>0 then + EN:=DateTimeToStr(Entry.start.datetime)+' : '+EN + else + EN:='(unspecified time) '+EN; + LBEvents.Items.AddObject(IntToStr(i)+': '+EN,Entry); + end; +end; + +Procedure TMainForm.DoUserConsent(Const AURL: String; Out AAuthCode: String); + +begin + GBAccess.Visible:=True; + EAccessCode.Text:='<enter code here>'; + FAccessState:=acsWaiting; + OpenUrl(AURL); + While (FAccessState=acsWaiting) do + Application.ProcessMessages; + if FAccessState=acsOK then + AAuthCode:=EAccessCode.Text; + GBAccess.Visible:=False; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/google.ini lazarus-1.6+dfsg/components/googleapis/demo/calendar/google.ini --- lazarus-1.4.4+dfsg/components/googleapis/demo/calendar/google.ini 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/calendar/google.ini 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,12 @@ +[Credentials] +ClientID=Your client id +ClientSecret=Your secret key +Scope=https://www.googleapis.com/auth/calendar + +[Session] +;RefreshToken= +;AccessToken= +;TokenType= +;AuthExpires= +;AuthPeriod= +;AccessToken= Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/discoverydemo.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/discovery/discoverydemo.ico differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/discoverydemo.lpi lazarus-1.6+dfsg/components/googleapis/demo/discovery/discoverydemo.lpi --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/discoverydemo.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/discoverydemo.lpi 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="discoverydemo"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="4"> + <Item1> + <PackageName Value="LazControls"/> + </Item1> + <Item2> + <PackageName Value="SynEdit"/> + </Item2> + <Item3> + <PackageName Value="laz_synapse"/> + </Item3> + <Item4> + <PackageName Value="LCL"/> + </Item4> + </RequiredPackages> + <Units Count="4"> + <Unit0> + <Filename Value="discoverydemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="frmmain.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="MainForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit1> + <Unit2> + <Filename Value="frmgenoptions.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="GenCodeFormOptions"/> + <ResourceBaseClass Value="Form"/> + </Unit2> + <Unit3> + <Filename Value="frmview.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="ViewForm"/> + <ResourceBaseClass Value="Form"/> + </Unit3> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="discoverydemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <OtherUnitFiles Value="../..;../../../base"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/discoverydemo.lpr lazarus-1.6+dfsg/components/googleapis/demo/discovery/discoverydemo.lpr --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/discoverydemo.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/discoverydemo.lpr 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,22 @@ +program discoverydemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, lazcontrols, frmmain, frmgenoptions, frmview; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.CreateForm(TGenCodeFormOptions, GenCodeFormOptions); + Application.CreateForm(TViewForm, ViewForm); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/discoverydemo.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/discovery/discoverydemo.res differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmgenoptions.lfm lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmgenoptions.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmgenoptions.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmgenoptions.lfm 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,125 @@ +object GenCodeFormOptions: TGenCodeFormOptions + Left = 644 + Height = 205 + Top = 319 + Width = 374 + Caption = 'Generate pascal code' + ClientHeight = 205 + ClientWidth = 374 + Position = poMainFormCenter + LCLVersion = '1.5' + object EBaseClass: TEdit + Left = 160 + Height = 18 + Top = 64 + Width = 200 + TabOrder = 0 + end + object EExtraUnits: TEdit + Left = 160 + Height = 18 + Top = 88 + Width = 200 + TabOrder = 1 + end + object EPrefix: TEdit + Left = 160 + Height = 18 + Top = 112 + Width = 80 + TabOrder = 2 + end + object Label1: TLabel + Left = 62 + Height = 12 + Top = 64 + Width = 87 + Alignment = taRightJustify + Caption = 'Parent Class name' + ParentColor = False + end + object Label2: TLabel + Left = 27 + Height = 12 + Top = 88 + Width = 122 + Alignment = taRightJustify + Caption = 'Extra units for uses clause' + ParentColor = False + end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 33 + Top = 166 + Width = 362 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 3 + ShowButtons = [pbOK, pbCancel] + end + object Label3: TLabel + Left = 48 + Height = 12 + Top = 112 + Width = 101 + Alignment = taRightJustify + Caption = 'Prefix for class names' + ParentColor = False + end + object EUnitName: TEdit + Left = 160 + Height = 18 + Top = 11 + Width = 104 + OnEditingDone = EUnitNameEditingDone + TabOrder = 4 + end + object Label4: TLabel + Left = 99 + Height = 12 + Top = 11 + Width = 50 + Alignment = taRightJustify + Caption = 'Unit name' + ParentColor = False + end + object EFileName: TFileNameEdit + Left = 160 + Height = 20 + Top = 37 + Width = 200 + DialogKind = dkSave + DialogOptions = [ofPathMustExist, ofEnableSizing, ofViewDetail] + Filter = 'All pascal files|*.pp;*.pas|Delphi files|*.pas|FPC files|*.pp|All files|*.*' + FilterIndex = 0 + DefaultExt = '.pp' + HideDirectories = False + ButtonWidth = 23 + NumGlyphs = 1 + MaxLength = 0 + TabOrder = 5 + end + object LFileName: TLabel + Left = 99 + Height = 12 + Top = 40 + Width = 51 + Alignment = taRightJustify + Caption = 'Save in file' + ParentColor = False + end + object CBView: TCheckBox + Left = 160 + Height = 26 + Top = 136 + Width = 131 + Caption = 'View generated code' + TabOrder = 6 + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmgenoptions.pp lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmgenoptions.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmgenoptions.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmgenoptions.pp 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,106 @@ +unit frmgenoptions; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + ButtonPanel, EditBtn; + +type + + { TGenCodeFormOptions } + + TGenCodeFormOptions = class(TForm) + ButtonPanel1: TButtonPanel; + CBView: TCheckBox; + EBaseClass: TEdit; + EUnitName: TEdit; + EExtraUnits: TEdit; + EPrefix: TEdit; + EFileName: TFileNameEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + LFileName: TLabel; + procedure EUnitNameEditingDone(Sender: TObject); + private + function GetB: Boolean; + function GetS(AIndex: Integer): String; + procedure SetB(AValue: Boolean); + procedure SetS(AIndex: Integer; AValue: String); + { private declarations } + public + { public declarations } + Property FileName : String index 0 read GetS Write SetS; + Property UnitName : String index 1 read GetS Write SetS; + Property ExtraUnits : String index 2 read GetS Write SetS; + Property Prefix : String index 3 read GetS Write SetS; + Property BaseClass : String index 4 read GetS Write SetS; + Property DoPreview : Boolean Read GetB Write SetB; + end; + +var + GenCodeFormOptions: TGenCodeFormOptions; + +implementation + +{$R *.lfm} + +{ TGenCodeFormOptions } + +procedure TGenCodeFormOptions.EUnitNameEditingDone(Sender: TObject); + +Var + E,FN : String; + +begin + E:=ExtractFileExt(EFileName.FileName); + if E='' then + E:=EFileName.DefaultExt; + FN:=ExtractFilePath(EFileName.FileName); + if FN='' then + FN:=IncludeTrailingPathDelimiter(Application.Location); + FN:=FN+EUnitName.Text+E; + EFileName.FileName:=FN; +end; + +function TGenCodeFormOptions.GetB: Boolean; +begin + Result:=CBView.Checked; +end; + +function TGenCodeFormOptions.GetS(AIndex: Integer): String; +begin + Case AIndex of + 0 : Result:=EFileName.Text; + 1 : Result:=EUnitName.Text; + 2 : Result:=EExtraUnits.Text; + 3 : Result:=EPRefix.Text; + 4 : Result:=EBaseClass.Text; + end; +end; + +procedure TGenCodeFormOptions.SetB(AValue: Boolean); +begin + CBView.Checked:=AValue +end; + +procedure TGenCodeFormOptions.SetS(AIndex: Integer; AValue: String); +begin + Case AIndex of + 0 : EFileName.Text:=Avalue; + 1 : begin + EUnitName.Text:=AValue; + EUnitNameEditingDone(EUnitName); + end; + 2 : EExtraUnits.Text:=AValue; + 3 : EPRefix.Text:=AValue; + 4 : EBaseClass.Text:=AValue; + end; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmmain.lfm lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmmain.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmmain.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmmain.lfm 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,659 @@ +object MainForm: TMainForm + Left = 533 + Height = 444 + Top = 225 + Width = 707 + Caption = 'Google Discovery Service Demo' + ClientHeight = 428 + ClientWidth = 707 + Menu = MainMenu1 + OnCreate = FormCreate + ShowHint = True + LCLVersion = '1.5' + object LVServices: TListView + Left = 0 + Height = 386 + Top = 26 + Width = 707 + Align = alClient + Columns = < + item + Caption = 'Name' + Width = 120 + end + item + Caption = 'Preferred' + end + item + Caption = 'ID' + Width = 120 + end + item + Caption = 'Title' + Width = 200 + end + item + Caption = 'Version' + end + item + Caption = 'Description' + Width = 300 + end + item + Caption = 'DiscoveryLink' + Width = 300 + end + item + Caption = 'DiscoveryRestURL' + Width = 300 + end + item + Caption = 'DocumentationLink' + Width = 300 + end + item + Caption = '16x16 Icon' + Width = 300 + end + item + Caption = '32x32 Icon' + Width = 300 + end + item + Caption = 'Labels' + Width = 300 + end> + SortColumn = 0 + SortType = stText + TabOrder = 0 + ViewStyle = vsReport + end + object ToolBar1: TToolBar + Left = 0 + Height = 26 + Top = 0 + Width = 707 + Caption = 'ToolBar1' + Images = ILDiscovery + ParentShowHint = False + ShowHint = True + TabOrder = 1 + object ToolButton1: TToolButton + Left = 1 + Top = 2 + Action = AFetch + end + object ToolButton2: TToolButton + Left = 24 + Height = 22 + Top = 2 + Width = 10 + Caption = 'ToolButton2' + Style = tbsSeparator + end + object ToolButton3: TToolButton + Left = 34 + Top = 2 + Action = ASaveREST + end + object ToolButton4: TToolButton + Left = 57 + Top = 2 + Action = AViewHelp + end + object ToolButton5: TToolButton + Left = 80 + Top = 2 + Action = AGenCode + end + object ToolButton6: TToolButton + Left = 103 + Top = 2 + Action = APreViewRest + end + object EFilter: TEdit + Left = 627 + Height = 24 + Top = 2 + Width = 80 + Align = alRight + OnChange = EFilterChange + TabOrder = 0 + end + object Label1: TLabel + Left = 591 + Height = 24 + Top = 2 + Width = 28 + Align = alRight + BorderSpacing.Right = 8 + Caption = 'Filter:' + Layout = tlCenter + ParentColor = False + end + end + object SBDiscovery: TStatusBar + Left = 0 + Height = 16 + Top = 412 + Width = 707 + Panels = < + item + Text = '0 items' + Width = 50 + end + item + Width = 50 + end> + SimplePanel = False + end + object ActionList1: TActionList + Images = ILDiscovery + left = 40 + top = 96 + object AFetch: TAction + Caption = 'List services/APIs' + ImageIndex = 0 + OnExecute = BFetchClick + end + object AQuit: TAction + Caption = '&Quit' + ImageIndex = 2 + OnExecute = AQuitExecute + ShortCut = 16465 + end + object APreferredOnly: TAction + Caption = 'Show preferred only' + OnExecute = CBPreferredOnlyChange + end + object ASaveREST: TAction + Category = 'API' + Caption = 'Save REST description' + ImageIndex = 1 + OnExecute = ASaveRESTExecute + OnUpdate = ASaveRESTUpdate + ShortCut = 16466 + end + object AViewHelp: TAction + Category = 'API' + Caption = 'View API Help' + ImageIndex = 4 + OnExecute = AViewHelpExecute + OnUpdate = AViewHelpUpdate + end + object AGenCode: TAction + Category = 'API' + Caption = 'Generate code' + ImageIndex = 3 + OnExecute = AGenCodeExecute + OnUpdate = AGenCodeUpdate + end + object APreViewRest: TAction + Category = 'API' + Caption = 'View Rest JSON' + ImageIndex = 5 + OnExecute = APreViewRestExecute + OnUpdate = APreViewRestUpdate + end + end + object MainMenu1: TMainMenu + Images = ILDiscovery + left = 176 + top = 88 + object MServices: TMenuItem + Caption = 'Services' + object MenuItem1: TMenuItem + Action = AFetch + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00A465 + 34A2A4653401FFFFFF00FFFFFF00A4653405A4653453A76A3ABEA66938E9A466 + 35FAA76A3AE4A76B3BAAA4653424FFFFFF00FFFFFF00FFFFFF00FFFFFF00A465 + 34FFA5673693FFFFFF00A4653454A66737EEB58055F3CEA684FFD8B697FFDBB9 + 99FFD3AC8AFFC2946DFCA66838F6A466355BFFFFFF00FFFFFF00FFFFFF00A567 + 37FEB7845BF7A56736D4B17A4EF4E3CAB4FFECDAC9FFE7D1BCFFE3C9B0FFDEBE + A0FFD2AB88FFCEA582FFD3AE8EFFA66838F5A465342AFFFFFF00FFFFFF00A668 + 38FDF1E4D8FFD4B295FEF4E9E0FFF3E8DDFFEDDCCCFFD2AD8FFEB0784CF5A566 + 35FBA66939FFA66939FEA96D3DFFB0784CFFA76A3AA8FFFFFF00FFFFFF00A567 + 37FDF6EEE6FFF5ECE3FFF5EDE4FFE6D2C1FFB0794DF5A66938CAA4653436FFFF + FF00A465346AA96B3CEDB67C4FFFA76A3AFEA56837FAFFFFFF00FFFFFF00A466 + 35FCF6EEE6FFEBD7C4FFEAD9C9FFA46534FEA465346AFFFFFF00FFFFFF00FFFF + FF00A465340BA56635E9C9956C8DB77F53C2A46534FFA4653405FFFFFF00A465 + 34FCF5EDE5FFF6EDE5FFF5ECE4FFD7B79CFDA66837E0A4653410FFFFFF00FFFF + FF00FFFFFF00FFFFFF00D5A47E1ACD997239A46534FCA465340CFFFFFF00A465 + 34F9A46534FEA46534FEA46534FDA46534FCA46534FBA46534B9A465341DA465 + 3418A4653418A4653418A4653418A4653418A465341CFFFFFF00FFFFFF00A465 + 340DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A46534A0A465 + 34FFAD7447F8AF774CF7AF774CF7AF784CF7A46534FFA4653408FFFFFF00A465 + 34FCB3794C7ECF9D762BBB835713A4653402FFFFFF00FFFFFF00A4653404A668 + 38C4D0AC8FFAF6EEE7FFF2E6DBFFF6EEE6FFA66A3AFBA4653409FFFFFF00A465 + 35FEA76A3AFBC791689DA56737E6A4653423FFFFFF00FFFFFF00FFFFFF00A465 + 3460A46635FFE9D7C7FFEBD8C6FFF5ECE3FFA66A3AFAA465340AFFFFFF00A668 + 38F3AB7041FFA96C3CFEA76A3AF5A4653475A4653419A4653445A66938CDB988 + 61F5EBDBCDFFF5EBE2FFF6EEE6FFF6EEE6FFA76A3AFAA465340BFFFFFF00A769 + 399BC09069FDC59872FFA86B3CFFA46635FFA76A3AFCB7855DF3D9BBA1FEF1E4 + D8FFF2E6DBFFF3E8DDFFCEA788FDEAD8C8FFA76A3AF9A465340DFFFFFF00A465 + 3429A66939F5D3AD8CFFDCBD9DFFDDBEA1FFE5CBB4FFE9D3BFFFEEDDCCFFF0E2 + D5FFE7D2BFFFAF774BF5A56736C0AB7143F7A46635FCA465340EFFFFFF00FFFF + FF00A4653550A66838F6C09068FAD3B08FFFDFC2A8FFDEC1A8FFD4B193FFB987 + 5FF4A56737F0A4653458FFFFFF00A4663566A46534FFA465340FFFFFFF00FFFF + FF00FFFFFF00A465341DA7693A9FA76A3ADEA56736F6A76939E5A76A3ABCA465 + 3453A4653405FFFFFF00FFFFFF00FFFFFF00A4653479A4653410 + } + end + object MIPreferredOnly: TMenuItem + Action = APreferredOnly + AutoCheck = True + ShortCut = 16464 + ShowAlwaysCheckable = True + end + object MenuItem2: TMenuItem + Caption = '-' + end + object MIQuit: TMenuItem + Action = AQuit + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001D63 + 9B1619609839145D9562105A92880D5890A4135C92FC0C578FED999999FF7171 + 71FF545454FF515151FF4F4F4FFF4C4C4CFF4A4A4AFF474747FF454545FF2567 + 9DFF3274A8FF3D7CAFFF4784B5FF4E8ABAFF3E7EADFF0C578FEAFFFFFF00FFFF + FF00585858FFA2A2A2FFA2A2A2FFA3A3A3FFA4A4A4FFA4A4A4FFA5A5A5FF2F6F + A5FF78ABD2FF78ABD3FF73A7D1FF69A0CDFF407FAEFF0F5991EAFFFFFF00FFFF + FF005C5C5CFFA1A1A1FF3C7340FFA0A1A1FFA3A3A3FFA3A3A3FFA4A4A4FF3674 + AAFF7DAFD4FF5B9AC9FF5495C7FF5896C8FF4180AEFF135C94EAFFFFFF00FFFF + FF00606060FFA0A0A0FF3D7641FF367139FFA2A2A2FFA2A2A2FFA3A3A3FF3D79 + B0FF82B3D7FF629FCCFF5A9AC9FF5E9BCAFF4381AFFF196098EA37823EFF347E + 3BFF317937FF2E7534FF499150FF468F4CFF39733DFFA1A1A1FFA2A2A2FF457E + B4FF88B7D9FF67A3CFFF619ECCFF639FCCFF4583B1FF1F649CEA3B8742FF89CB + 92FF84C88DFF80C688FF7BC383FF77C17FFF478F4DFF3B743FFFA1A1A1FF4C84 + BAFF8DBBDBFF6EA8D1FF66A6D1FF5FB4DFFF4785B1FF2569A1EA3E8B46FF8FCE + 99FF7DC687FF78C381FF73C07CFF74C07CFF79C281FF49904FFF547F57FF5489 + BFFF94BFDDFF75ADD4FF63B8E1FF4BD4FFFF428BB8FF2C6EA6EA41904AFF94D2 + 9FFF91D09AFF8DCD96FF89CB92FF84C88DFF519858FF417C46FF9F9F9FFF5A8E + C4FF98C3E0FF7CB3D7FF74AFD6FF5EC4EDFF4B88B3FF3473ABEA44944DFF4291 + 4BFF3F8D48FF3D8945FF5DA465FF5AA061FF45834BFF9E9E9EFF9E9E9EFF6092 + C9FF9EC7E2FF83B8DAFF7DB4D7FF7EB3D7FF4F89B4FF3B79B1EAFFFFFF00FFFF + FF00777777FF9A9A9AFF3D8A45FF498A4FFF9C9C9CFF9D9D9DFF9D9D9DFF6696 + CCFFA2CBE3FF89BDDCFF83B9DAFF84B9DAFF518BB5FF437EB6EAFFFFFF00FFFF + FF007A7A7AFF999999FF529159FF999A99FF9B9B9BFF9C9C9CFF9C9C9CFF6C9A + D0FFA7CEE5FF8FC1DFFF89BDDCFF8BBDDCFF538DB6FF4B84BCEAFFFFFF00FFFF + FF007D7D7DFF999999FF999999FF9A9A9AFF9A9A9AFF9B9B9BFF9B9B9BFF6F9D + D3FFAAD1E7FFABD1E7FF98C7E1FF91C2DEFF568FB7FF5289C1EAFFFFFF00FFFF + FF00808080FF7E7E7EFF7C7C7CFF7A7A7AFF777777FF757575FF727272FF719E + D4FF6F9ED6FF87B2DCFFABD3E8FFA9D0E6FF5890B8FF598EC6EAFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00709ED6DB6D9CD4FF85B1DAFF5A91B9FF6093CBEAFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF006D9CD4896A9AD2FB6697CFEE + } + end + end + object MAPI: TMenuItem + Caption = 'API' + object MenuItem6: TMenuItem + Action = APreViewRest + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000545655FF5456 + 55FF545655FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C4C4C4FF8484 + 84FF848484FF848484FF848484FF848484FF848484FFFFFFFF00545655FF0EB2 + 5FFF7ECAA3FF545655FFFFFFFF00848484FF848484FF848484FF848484FFE5E5 + E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FF848484FFFFFFFF00545655FF0EB2 + 5FFF0EB25FFF7ECAA3FF545655FF848484FFFFFFFF00FFFFFF00848484FF8484 + 84FF848484FF848484FF848484FF848484FFC4C4C4FFFFFFFF00FFFFFF005456 + 55FF0EB25FFF0EB25FFF7ECAA3FF545655FFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00545655FF0EB25FFF0EB25FFF7ECAA3FF545655FF545655FF545655FF5456 + 55FF545655FF848484FF848484FF848484FF848484FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00545655FF0EB25FFF545655FF545655FFE4B881FFB97F5FFFE2B6 + 8EFF545655FF545655FFE5E5E5FFE5E5E5FF848484FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00545655FF545655FFE4B881FFE4B881FFB97F5FFFB67A + 58FFBD7C4FFF545655FF545655FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00545655FF947868FFE4B881FFDCBAA0FFD9BFA9FFD7C1 + B4FFDFB896FFE3BB7EFF545655FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00545655FFAD795DFFDFBB94FFD4C3C0FFD8C0AEFFAD85 + 6BFFC1824DFFA87F66FF545655FF848484FF848484FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00545655FF8F746BFFC67B3CFF9D8B86FF9C8D8AFFD8C0 + AEFFE3BB7EFFE4B881FF545655FFE5E5E5FF848484FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00545655FF545655FFD4B2A4FFD4C3C0FFF9E9D8FFD4C3 + C0FFBA774FFF545655FF545655FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00545655FF545655FFD4C3C0FFF9E9D8FFD4C3 + C0FF545655FF545655FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00C4C4C4FF8484 + 84FF848484FF848484FFFFFFFF00848484FF545655FF545655FF545655FF5456 + 55FF545655FF848484FF848484FF848484FF848484FFFFFFFF00848484FFE5E5 + E5FFE5E5E5FF848484FF848484FF848484FF848484FF848484FF848484FFE5E5 + E5FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5E5FF848484FFFFFFFF00848484FF8484 + 84FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00848484FF8484 + 84FF848484FF848484FF848484FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + object MenuItem3: TMenuItem + Action = ASaveREST + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00995B1EC496581AC9FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009F6327CFAF7841FFAD753DFF9759 + 1BD1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00AB723A06A86E35D9B5804BFFCCA37AFFCCA37AFFAE76 + 3FFF97591BDB95571906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00AF7841B8AC743CF7C19263FFCEA67EFFCDA47CFFB17A + 44FF9A5D20F7985A1DBBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00B0794238B5804BFFD0A983FFCFA881FFA266 + 2BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B17A44FFD2AC87FFD1AB85FFA66C + 32FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B7834FFFD3AE8AFFD3AE8AFFAB72 + 3AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BA8755FFD5B18EFFD5B18EFFAF78 + 41FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BF8F5FFFD8B695FFD7B593FFB580 + 4BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C39567FFD9B898FFD8B695FFB884 + 51FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6996DFFDBBC9DFFDABA9AFFBD8C + 5BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CAA076FFDDBFA2FFDCBD9FFFC293 + 65FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CCA37AFFDEC1A4FFDDBFA2FFC598 + 6BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CDA47CFFCDA47CFFCAA076FFC99E + 73FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + object MenuItem4: TMenuItem + Action = AViewHelp + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00AD744423AC72417DAA703FDBA86D3CF3A76B3AF3A569 + 37DBA468357DA3663323FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00B57E5153B37C4EE6D7BBA3FFE9DACAFFECE0D1FFECE0D1FFE8D8 + C8FFD3B59CFFA76C3AE6A66A3853FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00BD895F53BB875BF4E7D5C4FFE5D2BFFFC9A685FFB88E67FFB68A65FFC5A1 + 80FFE0CCBAFFE3D0BEFFAB7040F4A96E3D53FFFFFF00FFFFFF00FFFFFF00C695 + 6D22C3926AE5EAD8C9FFE3CDBAFFC0946BFFBA8C62FFCFB094FFCFB094FFB789 + 5FFFB28761FFDAC0AAFFE4D1C0FFAE7546E5AD734322FFFFFF00FFFFFF00CC9E + 787EE4CCB9FFEAD6C5FFC79971FFBF9066FFBF9066FFF7F1ECFFF6F0EAFFB789 + 5FFFB7895FFFB58963FFE2CEBBFFD9BDA6FFB27B4D7EFFFFFF00FFFFFF00D3A7 + 84DBEFE1D3FFD9B595FFC7986CFFC39569FFC19367FFBF9066FFBF9066FFBB8B + 63FFB98A63FFB88A62FFCBA786FFEADCCCFFB88357DBFFFFFF00FFFFFF00D9B0 + 8FF6F2E4D9FFD1A57AFFC5996BFFC4976AFFC49669FFFAF6F2FFF3EAE1FFC295 + 6DFFBE8F65FFBE8F64FFC0956DFFEFE3D5FFBF8C61F6FFFFFF00FFFFFF00E0B9 + 99F6F2E5DAFFD1A67EFFCC9D71FFC79A6CFFC5986BFFE2CCB6FFF8F3EEFFF6EE + E8FFD9BDA1FFC29468FFC59B71FFF0E2D6FFC5956CF6FFFFFF00FFFFFF00E6C1 + A3DBF3E5D9FFDFBB9EFFCFA075FFCD9E72FFF5EBE3FFE4CBB4FFE7D3BFFFFBF8 + F6FFE5D3BFFFC4986BFFD6B491FFEEE0D2FFCC9E78DBFFFFFF00FFFFFF00EBC9 + AD7EF4E3D4FFEFDCCDFFD5A87EFFD0A077FFFBF8F5FFFCF8F5FFFCF8F5FFFBF8 + F5FFD1A881FFCFA47BFFEAD5C3FFEAD4C2FFD2A7837EFFFFFF00FFFFFF00F1D0 + B522EFCEB3E5F6E9DDFFECD8C6FFD7AC81FFDCBB9AFFF6ECE3FFF5ECE2FFE4C8 + AEFFD2A77BFFE6CEBAFFF1E2D5FFDBB391E5D9B08E22FFFFFF00FFFFFF00FFFF + FF00F4D4BB53F2D2B8F4F7EADFFFEEDED0FFE3C1A7FFD8AE89FFD7AC86FFDDBB + 9CFFEBD6C7FFF3E6D9FFE3BE9FF4E1BB9C53FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F6D8BF53F5D6BDE6F9E9DCFFF6E8DDFFF3E5DAFFF3E5DAFFF5E7 + DCFFF5E4D6FFEBC8ACE6E9C6A953FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F9DBC423F8DAC27DF7D8C0DBF6D7BEF3F4D5BCF3F3D3 + B9DBF1D1B77DF0CFB423FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + object MenuItem5: TMenuItem + Action = AGenCode + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF008C8E + 8DFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D + 8BFF888D8BFF888D8BFF888D8BFF888D8BFF8C8E8DFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFFFFFFFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF3F4F4FF858A88FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5 + F5FFF4F5F5FFECECECFFEBECECFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF4F5F5FFF4F5F5FF000000FF36576BFF02598FFFF4F5F5FFF4F5 + F5FFF4F5F5FFEEEEEEFFEDEDEDFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF6F7F7FF858A88FF325061FF8AABC2FF5585A3FF02598FFF858A + 88FF858A88FF858A88FFEEEFEFFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FFF6F7F7FF02598FFFC4E5EDFF649FC8FF5787A4FF0259 + 8FFFF1F2F2FFF0F1F1FFF0F0F0FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FF858A88FF858A88FF02598FFFC5E6EDFF68A6CEFF5784 + A0FF02598FFFF7F8F8FFF1F2F2FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FFF4F5F5FFF4F5F5FFF4F5F5FF02598FFFC6EAEEFF69AA + CFFF5683A0FF02598FFFF3F3F3FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FFA36936FFA36936FFA36936FFA36936FF02598FFFC7EB + EFFF6AACD2FF5787A4FF02598FFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FF0259 + 8FFFC7EBEFFF02598FFF02598FFF02598FFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FF858A88FF858A88FF858A88FF858A88FF858A88FF858A + 88FF02598FFF02598FFFC7EBEFFF02598FFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8 + F8FFF7F8F8FF02598FFF02598FFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FF0E0ED8FF0E0ED8FF0E0ED8FF858A88FF858A88FFF7F8 + F8FFF7F8F8FFF7F8F8FFF7F8F8FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A + 88FFFFFFFFFFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8 + F8FFF7F8F8FFF7F8F8FFF7F8F8FF858A88FFFFFFFF00FFFFFF00FFFFFF00858A + 88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFF858A88FFFFFFFF00FFFFFF00FFFFFF00FFFFFF008C8E + 8DFF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A + 88FF858A88FF858A88FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + end + end + object ILDiscovery: TImageList + left = 113 + top = 96 + Bitmap = { + 4C69060000001000000010000000FFFFFF00FFFFFF00FFFFFF00A465341DA769 + 3A9FA76A3ADEA56736F6A76939E5A76A3ABCA4653453A4653405FFFFFF00FFFF + FF00FFFFFF00A4653479A4653410FFFFFF00FFFFFF00A4653550A66838F6C090 + 68FAD3B08FFFDFC2A8FFDEC1A8FFD4B193FFB9875FF4A56737F0A4653458FFFF + FF00A4663566A46534FFA465340FFFFFFF00A4653429A66939F5D3AD8CFFDCBD + 9DFFDDBEA1FFE5CBB4FFE9D3BFFFEEDDCCFFF0E2D5FFE7D2BFFFAF774BF5A567 + 36C0AB7143F7A46635FCA465340EFFFFFF00A769399BC09069FDC59872FFA86B + 3CFFA46635FFA76A3AFCB7855DF3D9BBA1FEF1E4D8FFF2E6DBFFF3E8DDFFCEA7 + 88FDEAD8C8FFA76A3AF9A465340DFFFFFF00A66838F3AB7041FFA96C3CFEA76A + 3AF5A4653475A4653419A4653445A66938CDB98861F5EBDBCDFFF5EBE2FFF6EE + E6FFF6EEE6FFA76A3AFAA465340BFFFFFF00A46535FEA76A3AFBC791689DA567 + 37E6A4653423FFFFFF00FFFFFF00FFFFFF00A4653460A46635FFE9D7C7FFEBD8 + C6FFF5ECE3FFA66A3AFAA465340AFFFFFF00A46534FCB3794C7ECF9D762BBB83 + 5713A4653402FFFFFF00FFFFFF00A4653404A66838C4D0AC8FFAF6EEE7FFF2E6 + DBFFF6EEE6FFA66A3AFBA4653409FFFFFF00A465340DFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00A46534A0A46534FFAD7447F8AF774CF7AF77 + 4CF7AF784CF7A46534FFA4653408FFFFFF00A46534F9A46534FEA46534FEA465 + 34FDA46534FCA46534FBA46534B9A465341DA4653418A4653418A4653418A465 + 3418A4653418A465341CFFFFFF00FFFFFF00A46534FCF5EDE5FFF6EDE5FFF5EC + E4FFD7B79CFDA66837E0A4653410FFFFFF00FFFFFF00FFFFFF00FFFFFF00D5A4 + 7E1ACD997239A46534FCA465340CFFFFFF00A46635FCF6EEE6FFEBD7C4FFEAD9 + C9FFA46534FEA465346AFFFFFF00FFFFFF00FFFFFF00A465340BA56635E9C995 + 6C8DB77F53C2A46534FFA4653405FFFFFF00A56737FDF6EEE6FFF5ECE3FFF5ED + E4FFE6D2C1FFB0794DF5A66938CAA4653436FFFFFF00A465346AA96B3CEDB67C + 4FFFA76A3AFEA56837FAFFFFFF00FFFFFF00A66838FDF1E4D8FFD4B295FEF4E9 + E0FFF3E8DDFFEDDCCCFFD2AD8FFEB0784CF5A56635FBA66939FFA66939FEA96D + 3DFFB0784CFFA76A3AA8FFFFFF00FFFFFF00A56737FEB7845BF7A56736D4B17A + 4EF4E3CAB4FFECDAC9FFE7D1BCFFE3C9B0FFDEBEA0FFD2AB88FFCEA582FFD3AE + 8EFFA66838F5A465342AFFFFFF00FFFFFF00A46534FFA5673693FFFFFF00A465 + 3454A66737EEB58055F3CEA684FFD8B697FFDBB999FFD3AC8AFFC2946DFCA668 + 38F6A466355BFFFFFF00FFFFFF00FFFFFF00A46534A2A4653401FFFFFF00FFFF + FF00A4653405A4653453A76A3ABEA66938E9A46635FAA76A3AE4A76B3BAAA465 + 3424FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00CDA47CFFCDA47CFFCAA076FFC99E73FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00CCA37AFFDEC1A4FFDDBFA2FFC5986BFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00CAA076FFDDBFA2FFDCBD9FFFC29365FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C6996DFFDBBC9DFFDABA9AFFBD8C5BFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C39567FFD9B898FFD8B695FFB88451FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BF8F5FFFD8B695FFD7B593FFB5804BFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00BA8755FFD5B18EFFD5B18EFFAF7841FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00B7834FFFD3AE8AFFD3AE8AFFAB723AFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00B17A44FFD2AC87FFD1AB85FFA66C32FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00B0794238B5804BFFD0A983FFCFA881FFA2662BFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AF78 + 41B8AC743CF7C19263FFCEA67EFFCDA47CFFB17A44FF9A5D20F7985A1DBBFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AB72 + 3A06A86E35D9B5804BFFCCA37AFFCCA37AFFAE763FFF97591BDB95571906FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF009F6327CFAF7841FFAD753DFF97591BD1FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00995B1EC496581AC9FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF006D9CD4896A9AD2FB6697CFEEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00709ED6DB6D9C + D4FF85B1DAFF5A91B9FF6093CBEAFFFFFF00FFFFFF00808080FF7E7E7EFF7C7C + 7CFF7A7A7AFF777777FF757575FF727272FF719ED4FF6F9ED6FF87B2DCFFABD3 + E8FFA9D0E6FF5890B8FF598EC6EAFFFFFF00FFFFFF007D7D7DFF999999FF9999 + 99FF9A9A9AFF9A9A9AFF9B9B9BFF9B9B9BFF6F9DD3FFAAD1E7FFABD1E7FF98C7 + E1FF91C2DEFF568FB7FF5289C1EAFFFFFF00FFFFFF007A7A7AFF999999FF5291 + 59FF999A99FF9B9B9BFF9C9C9CFF9C9C9CFF6C9AD0FFA7CEE5FF8FC1DFFF89BD + DCFF8BBDDCFF538DB6FF4B84BCEAFFFFFF00FFFFFF00777777FF9A9A9AFF3D8A + 45FF498A4FFF9C9C9CFF9D9D9DFF9D9D9DFF6696CCFFA2CBE3FF89BDDCFF83B9 + DAFF84B9DAFF518BB5FF437EB6EA44944DFF42914BFF3F8D48FF3D8945FF5DA4 + 65FF5AA061FF45834BFF9E9E9EFF9E9E9EFF6092C9FF9EC7E2FF83B8DAFF7DB4 + D7FF7EB3D7FF4F89B4FF3B79B1EA41904AFF94D29FFF91D09AFF8DCD96FF89CB + 92FF84C88DFF519858FF417C46FF9F9F9FFF5A8EC4FF98C3E0FF7CB3D7FF74AF + D6FF5EC4EDFF4B88B3FF3473ABEA3E8B46FF8FCE99FF7DC687FF78C381FF73C0 + 7CFF74C07CFF79C281FF49904FFF547F57FF5489BFFF94BFDDFF75ADD4FF63B8 + E1FF4BD4FFFF428BB8FF2C6EA6EA3B8742FF89CB92FF84C88DFF80C688FF7BC3 + 83FF77C17FFF478F4DFF3B743FFFA1A1A1FF4C84BAFF8DBBDBFF6EA8D1FF66A6 + D1FF5FB4DFFF4785B1FF2569A1EA37823EFF347E3BFF317937FF2E7534FF4991 + 50FF468F4CFF39733DFFA1A1A1FFA2A2A2FF457EB4FF88B7D9FF67A3CFFF619E + CCFF639FCCFF4583B1FF1F649CEAFFFFFF00FFFFFF00606060FFA0A0A0FF3D76 + 41FF367139FFA2A2A2FFA2A2A2FFA3A3A3FF3D79B0FF82B3D7FF629FCCFF5A9A + C9FF5E9BCAFF4381AFFF196098EAFFFFFF00FFFFFF005C5C5CFFA1A1A1FF3C73 + 40FFA0A1A1FFA3A3A3FFA3A3A3FFA4A4A4FF3674AAFF7DAFD4FF5B9AC9FF5495 + C7FF5896C8FF4180AEFF135C94EAFFFFFF00FFFFFF00585858FFA2A2A2FFA2A2 + A2FFA3A3A3FFA4A4A4FFA4A4A4FFA5A5A5FF2F6FA5FF78ABD2FF78ABD3FF73A7 + D1FF69A0CDFF407FAEFF0F5991EA999999FF717171FF545454FF515151FF4F4F + 4FFF4C4C4CFF4A4A4AFF474747FF454545FF25679DFF3274A8FF3D7CAFFF4784 + B5FF4E8ABAFF3E7EADFF0C578FEAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001D639B1619609839145D9562105A + 92880D5890A4135C92FC0C578FEDFFFFFF008C8E8DFF858A88FF858A88FF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00858A88FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF858A + 88FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF7F8 + F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8 + F8FF858A88FFFFFFFF00FFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FF0E0E + D8FF0E0ED8FF0E0ED8FF858A88FF858A88FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8 + F8FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF7F8 + F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FF02598FFF0259 + 8FFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FF02598FFF02598FFFC7EB + EFFF02598FFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF4F5 + F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FF02598FFFC7EBEFFF02598FFF0259 + 8FFF02598FFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFA369 + 36FFA36936FFA36936FFA36936FF02598FFFC7EBEFFF6AACD2FF5787A4FF0259 + 8FFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF4F5 + F5FFF4F5F5FFF4F5F5FF02598FFFC6EAEEFF69AACFFF5683A0FF02598FFFF3F3 + F3FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FF858A + 88FF858A88FF02598FFFC5E6EDFF68A6CEFF5784A0FF02598FFFF7F8F8FFF1F2 + F2FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF6F7 + F7FF02598FFFC4E5EDFF649FC8FF5787A4FF02598FFFF1F2F2FFF0F1F1FFF0F0 + F0FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF6F7F7FF858A + 88FF325061FF8AABC2FF5585A3FF02598FFF858A88FF858A88FF858A88FFEEEF + EFFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF4F5F5FFF4F5 + F5FF000000FF36576BFF02598FFFF4F5F5FFF4F5F5FFF4F5F5FFEEEEEEFFEDED + EDFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF3F4F4FF858A + 88FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFECECECFFEBEC + ECFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFFFFFFFF888D8BFFFFFFFF00FFFFFF008C8E8DFF888D8BFF888D8BFF888D + 8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D + 8BFF888D8BFF8C8E8DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F9DB + C423F8DAC27DF7D8C0DBF6D7BEF3F4D5BCF3F3D3B9DBF1D1B77DF0CFB423FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6D8BF53F5D6 + BDE6F9E9DCFFF6E8DDFFF3E5DAFFF3E5DAFFF5E7DCFFF5E4D6FFEBC8ACE6E9C6 + A953FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F4D4BB53F2D2B8F4F7EA + DFFFEEDED0FFE3C1A7FFD8AE89FFD7AC86FFDDBB9CFFEBD6C7FFF3E6D9FFE3BE + 9FF4E1BB9C53FFFFFF00FFFFFF00FFFFFF00F1D0B522EFCEB3E5F6E9DDFFECD8 + C6FFD7AC81FFDCBB9AFFF6ECE3FFF5ECE2FFE4C8AEFFD2A77BFFE6CEBAFFF1E2 + D5FFDBB391E5D9B08E22FFFFFF00FFFFFF00EBC9AD7EF4E3D4FFEFDCCDFFD5A8 + 7EFFD0A077FFFBF8F5FFFCF8F5FFFCF8F5FFFBF8F5FFD1A881FFCFA47BFFEAD5 + C3FFEAD4C2FFD2A7837EFFFFFF00FFFFFF00E6C1A3DBF3E5D9FFDFBB9EFFCFA0 + 75FFCD9E72FFF5EBE3FFE4CBB4FFE7D3BFFFFBF8F6FFE5D3BFFFC4986BFFD6B4 + 91FFEEE0D2FFCC9E78DBFFFFFF00FFFFFF00E0B999F6F2E5DAFFD1A67EFFCC9D + 71FFC79A6CFFC5986BFFE2CCB6FFF8F3EEFFF6EEE8FFD9BDA1FFC29468FFC59B + 71FFF0E2D6FFC5956CF6FFFFFF00FFFFFF00D9B08FF6F2E4D9FFD1A57AFFC599 + 6BFFC4976AFFC49669FFFAF6F2FFF3EAE1FFC2956DFFBE8F65FFBE8F64FFC095 + 6DFFEFE3D5FFBF8C61F6FFFFFF00FFFFFF00D3A784DBEFE1D3FFD9B595FFC798 + 6CFFC39569FFC19367FFBF9066FFBF9066FFBB8B63FFB98A63FFB88A62FFCBA7 + 86FFEADCCCFFB88357DBFFFFFF00FFFFFF00CC9E787EE4CCB9FFEAD6C5FFC799 + 71FFBF9066FFBF9066FFF7F1ECFFF6F0EAFFB7895FFFB7895FFFB58963FFE2CE + BBFFD9BDA6FFB27B4D7EFFFFFF00FFFFFF00C6956D22C3926AE5EAD8C9FFE3CD + BAFFC0946BFFBA8C62FFCFB094FFCFB094FFB7895FFFB28761FFDAC0AAFFE4D1 + C0FFAE7546E5AD734322FFFFFF00FFFFFF00FFFFFF00BD895F53BB875BF4E7D5 + C4FFE5D2BFFFC9A685FFB88E67FFB68A65FFC5A180FFE0CCBAFFE3D0BEFFAB70 + 40F4A96E3D53FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B57E5153B37C + 4EE6D7BBA3FFE9DACAFFECE0D1FFECE0D1FFE8D8C8FFD3B59CFFA76C3AE6A66A + 3853FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AD74 + 4423AC72417DAA703FDBA86D3CF3A76B3AF3A56937DBA468357DA3663323FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00848484FF848484FF848484FFC4C4C4FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00848484FF848484FF848484FF848484FF8484 + 84FF848484FFC4C4C4FFFFFFFF00848484FFE5E5E5FFE5E5E5FF848484FF8484 + 84FF848484FF848484FF848484FF848484FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5 + E5FFE5E5E5FF848484FFFFFFFF00C4C4C4FF848484FF848484FF848484FFFFFF + FF00848484FF545655FF545655FF545655FF545655FF545655FF848484FF8484 + 84FF848484FF848484FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00545655FF545655FFD4C3C0FFF9E9D8FFD4C3C0FF545655FF545655FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF545655FFD4B2A4FFD4C3C0FFF9E9D8FFD4C3C0FFBA774FFF545655FF5456 + 55FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF8F746BFFC67B3CFF9D8B86FF9C8D8AFFD8C0AEFFE3BB7EFFE4B881FF5456 + 55FFE5E5E5FF848484FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FFAD795DFFDFBB94FFD4C3C0FFD8C0AEFFAD856BFFC1824DFFA87F66FF5456 + 55FF848484FF848484FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF947868FFE4B881FFDCBAA0FFD9BFA9FFD7C1B4FFDFB896FFE3BB7EFF5456 + 55FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF545655FFE4B881FFE4B881FFB97F5FFFB67A58FFBD7C4FFF545655FF5456 + 55FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00545655FF0EB2 + 5FFF545655FF545655FFE4B881FFB97F5FFFE2B68EFF545655FF545655FFE5E5 + E5FFE5E5E5FF848484FFFFFFFF00FFFFFF00FFFFFF00545655FF0EB25FFF0EB2 + 5FFF7ECAA3FF545655FF545655FF545655FF545655FF545655FF848484FF8484 + 84FF848484FF848484FFFFFFFF00FFFFFF00545655FF0EB25FFF0EB25FFF7ECA + A3FF545655FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00545655FF0EB25FFF0EB25FFF7ECAA3FF5456 + 55FF848484FFFFFFFF00FFFFFF00848484FF848484FF848484FF848484FF8484 + 84FF848484FFC4C4C4FFFFFFFF00545655FF0EB25FFF7ECAA3FF545655FFFFFF + FF00848484FF848484FF848484FF848484FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5 + E5FFE5E5E5FF848484FFFFFFFF00545655FF545655FF545655FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C4C4C4FF848484FF848484FF848484FF8484 + 84FF848484FF848484FFFFFFFF00 + } + end + object SDJSON: TSaveDialog + DefaultExt = '.json' + Filter = 'JSON Files|*.json|All files|*.*' + Options = [ofPathMustExist, ofEnableSizing, ofViewDetail] + left = 104 + top = 157 + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmmain.pp lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmmain.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmmain.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmmain.pp 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,429 @@ +unit frmmain; + +{$mode objfpc}{$H+} + +// Define this if you want to use synapse. +{ $DEFINE USESYNAPSE} + +// For 2.6.4, synapse is currently the only option. +// You will need to add lazsynapsewebclient to the requires list. +{$IFDEF VER2_6} +{$DEFINE USESYNAPSE} +{$ENDIF} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + ComCtrls, ActnList, Menus, ListViewFilterEdit, restbase, googleclient, + googlediscovery, frmgenoptions, frmview; + +type + + { TMainForm } + + TMainForm = class(TForm) + APreViewRest: TAction; + AGenCode: TAction; + AViewHelp: TAction; + ASaveREST: TAction; + APreferredOnly: TAction; + AQuit: TAction; + AFetch: TAction; + ActionList1: TActionList; + EFilter: TEdit; + ILDiscovery: TImageList; + Label1: TLabel; + LVServices: TListView; + MainMenu1: TMainMenu; + MenuItem1: TMenuItem; + MenuItem2: TMenuItem; + MAPI: TMenuItem; + MenuItem3: TMenuItem; + MenuItem4: TMenuItem; + MenuItem5: TMenuItem; + MenuItem6: TMenuItem; + MIQuit: TMenuItem; + MIPreferredOnly: TMenuItem; + MServices: TMenuItem; + SDJSON: TSaveDialog; + SBDiscovery: TStatusBar; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + ToolButton5: TToolButton; + ToolButton6: TToolButton; + procedure APreViewRestExecute(Sender: TObject); + procedure APreViewRestUpdate(Sender: TObject); + procedure ASaveRESTExecute(Sender: TObject); + procedure ASaveRESTUpdate(Sender: TObject); + procedure AGenCodeExecute(Sender: TObject); + procedure AGenCodeUpdate(Sender: TObject); + procedure AQuitExecute(Sender: TObject); + procedure AViewHelpExecute(Sender: TObject); + procedure AViewHelpUpdate(Sender: TObject); + procedure BFetchClick(Sender: TObject); + procedure CBPreferredOnlyChange(Sender: TObject); + procedure EFilterChange(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + { private declarations } + FClient : TGoogleClient; + FDiscoveryAPI : TDiscoveryAPI; + FDirectory : TDirectoryList; + Function CurrentAPI : TDirectoryListTypeitemsItem; + procedure DoFetch; + procedure DownLoadRestAPI(Const AName,AURL: String); + procedure GenerateCode(const AName, AURL: String); + function HttpGetBinary(AURL: String; S: TStream): Boolean; + procedure ShowDiscovery(PreferredOnly: Boolean; FilterOn: String); + procedure UpdateCaption; + procedure ViewFile(AFileName: String); + procedure ViewFile(AStream: TStream; ASyntax: TSyntax; ACaption: String); + procedure ViewRestAPI(const AName, AURL: String); + public + { public declarations } + end; + +var + MainForm: TMainForm; + +implementation + +{$R *.lfm} +uses + ssl_openssl, + jsonparser, // needed + fpoauth2, lclintf, +{$IFDEF USESYNAPSE} + synapsewebclient, + httpsend, +{$ELSE} + fphttpclient, + fphttpwebclient, +{$ENDIF} + googlediscoverytopas; + +{ TMainForm } + +procedure TMainForm.FormCreate(Sender: TObject); +begin + // set up communication. + FClient:=TGoogleClient.Create(Self); +{$IFDEF USESYNAPSE} + FClient.WebClient:=TSynapseWebClient.Create(Self); +{$ELSE} + FClient.WebClient:=TFPHTTPWebClient.Create(Self); +{$ENDIF} + // Register all classes so they can be streamed. + TDiscoveryAPI.RegisterAPIResources; + // create the API and hook it up to the google client. + FDiscoveryAPI:=TDiscoveryAPI.Create(Self); + FDiscoveryAPI.GoogleClient:=FClient; + // The code generator uses it's own objects. + TDiscoveryJSONToPas.RegisterAllObjects; + UpdateCaption; +end; + +procedure TMainForm.BFetchClick(Sender: TObject); + +begin + DoFetch; +end; + +procedure TMainForm.AQuitExecute(Sender: TObject); +begin + Close; +end; + +procedure TMainForm.AViewHelpExecute(Sender: TObject); +begin + OpenURL(CurrentAPI.DocumentationLink); +end; + +procedure TMainForm.AViewHelpUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled:=Assigned(CurrentAPI) and (CurrentAPI.documentationLink<>''); +end; + +procedure TMainForm.ASaveRESTUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled:=Assigned(CurrentAPI) and (CurrentAPI.discoveryRestUrl<>''); +end; + +procedure TMainForm.AGenCodeExecute(Sender: TObject); + +Var + DLI : TDirectoryListTypeitemsItem; + +begin + DLI:=CurrentAPI; + GenerateCode(DLI.Name,DLI.DiscoveryRestUrl); +end; + +procedure TMainForm.AGenCodeUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled:=Assigned(CurrentAPI) and (CurrentAPI.discoveryRestUrl<>'') +end; + +procedure TMainForm.ViewFile(AFileName : String); + +begin + With TViewForm.Create(Nil) do + begin + Caption:='Viewing file: '+AFileName; + FileName:=AFileName; + Show; + end; +end; + +procedure TMainForm.ViewFile(AStream : TStream; ASyntax : TSyntax; ACaption : String); + +begin + With TViewForm.Create(Nil) do + begin + AStream.POsition:=0; + Caption:='Viewing: '+ACaption; + Stream:=AStream; + Syntax:=ASyntax; + FreeStream:=True; + Show; + end; +end; + +Function TMainForm.HttpGetBinary(AURL : String; S : TStream) : Boolean; + +begin +{$IFDEF USESYNAPSE} + Result:=httpsend.HttpGetBinary(AURL,S); +{$ELSE} + try + TFPHTTPClient.SimpleGet(AURL,S); + S.Position:=0; + Result:=True; + except + Result:=False; + end; +{$ENDIF} +end; + +procedure TMainForm.GenerateCode(const AName, AURL: String); + +Var + S : TMemoryStream; + FO : TGenCodeFormOptions; + DP : TDiscoveryJSONToPas; + +begin + FO:=Nil; + DP:=Nil; + S:=TMemoryStream.Create; + try + if HttpGetBinary(AURL,S) then + begin + S.Position:=0; + FO:=TGenCodeFormOptions.Create(Self); + FO.UnitName:=AName; + If FO.ShowModal=mrOK then + begin + DP:=TDiscoveryJSONToPas.Create(Self); + DP.LoadFromStream(S); + DP.BaseClassName:=FO.BaseClass; + DP.OutputUnitName:=FO.UnitName; + DP.ExtraUnits:=FO.ExtraUnits; + DP.ClassPrefix:=FO.Prefix; + DP.SaveToFile(FO.FileName); + if FO.DoPreview then + ViewFile(FO.FileName); + end; + end; + Finally + FO.Free; + DP.Free; + S.Free; + end; +end; + +procedure TMainForm.DownLoadRestAPI(const AName, AURL: String); + +Var + S : TMemoryStream; + +begin + S:=TMemoryStream.Create; + try + if HttpGetBinary(AURL,S) then + begin + SDJSON.FileName:='google'+aname+'.json'; + If SDJSON.Execute then + With TFileStream.Create(SDJSON.FileName,fmCreate) do + try + CopyFrom(S,0); + finally + Free; + end; + end; + finally + S.Free; + end; +end; + +procedure TMainForm.ViewRestAPI(const AName, AURL: String); +Var + S : TMemoryStream; + +begin + S:=TMemoryStream.Create; + try + if HttpGetBinary(AURL,S) then + begin + ViewFile(S,sJSON,'REST discovery for '+AName); + S:=Nil; + end; + finally + S.Free; + end; +end; + +procedure TMainForm.ASaveRESTExecute(Sender: TObject); + +Var + DLI : TDirectoryListTypeitemsItem; +begin + DLI:=CurrentAPI; + DownLoadRestAPI(DLI.Name,DLI.DiscoveryRestUrl); +end; + +procedure TMainForm.APreViewRestUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled:=Assigned(CurrentAPI) and (CurrentAPI.discoveryRestUrl<>''); +end; + +procedure TMainForm.APreViewRestExecute(Sender: TObject); + +Var + DLI : TDirectoryListTypeitemsItem; + +begin + DLI:=CurrentAPI; + ViewRestAPI(DLI.Name,DLI.DiscoveryRestUrl); +end; + +procedure TMainForm.CBPreferredOnlyChange(Sender: TObject); +begin + if (LVServices.Items.Count>0) then + ShowDiscovery(MIPreferredOnly.Checked,EFilter.Text); +end; + +procedure TMainForm.EFilterChange(Sender: TObject); +begin + if (LVServices.Items.Count>0) then + ShowDiscovery(MIPreferredOnly.Checked,EFilter.Text); +end; + +procedure TMainForm.UpdateCaption; + +Var + C : Integer; + +begin + C:=LVServices.Items.Count; + if (C=0) then + Caption:='Google Discovery Service Demo' + else + Caption:=Format('Google Discovery Service Demo (%d services)',[C]); + SBDiscovery.Panels[0].Text:=Format('%d items',[C]); +end; + +function TMainForm.CurrentAPI: TDirectoryListTypeitemsItem; +begin + If Assigned(LVServices.Selected) and Assigned(LVServices.Selected.Data) then + Result:=TDirectoryListTypeitemsItem(LVServices.Selected.Data) + else + Result:=Nil; +end; + +procedure TMainForm.ShowDiscovery(PreferredOnly : Boolean; FilterOn : String); + + Function DoComma(S : TStringArray) : String; + Var + I : String; + begin + Result:=''; + For I in S do + begin + if Result<>'' then + Result:=Result+','; + Result:=Result+I; + end; + end; + + Function Contains(S: String) : Boolean; inline; + begin + Result:=Pos(FilterOn,LowerCase(S))<>0; + end; + + Function ShowItem (DLI : TDirectoryListTypeitemsItem) : Boolean; + + begin + Result:=DLI.Preferred or (Not PreferredOnly); + if Result and (FilterOn<>'') then + begin + Result:=Contains(DLI.Name) + or Contains(DLI.Title) + or Contains(DLI.kind) + or Contains(DLI.description) + or Contains(DoComma(DLI.Labels)); + end; + end; +Var + DLI : TDirectoryListTypeitemsItem; + LI : TListItem; + +begin + FilterOn:=LowerCase(Filteron); + LVServices.Items.BeginUpdate; + try + LVServices.Items.Clear; + LVServices.Column[1].Visible:=Not PreferredOnly; + For DLI in FDirectory.Items do + if ShowItem(DLI) then + begin + LI:=LVServices.Items.Add; + LI.Caption:=DLI.name; + LI.Data:=DLI; + With LI.SubItems,DLI do + begin + Add(BoolToStr(preferred,'True','False')); + Add(id); + Add(title); + Add(version); + Add(description); + Add(discoveryLink); + Add(discoveryRestUrl); + Add(documentationLink); + Add(icons.x16); + Add(icons.x32); + Add(DoComma(labels)); + end; + end; + UpdateCaption; + finally + LVServices.Items.EndUpdate; + end; +end; + +procedure TMainForm.DoFetch; + +begin + // Free any previous list. + FreeAndNil(FDirectory); + // Get the new list using a default ApisResource. + FDirectory:=FDiscoveryAPI.ApisResource.List(); + ShowDiscovery(MIPreferredOnly.Checked,EFilter.Text); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmview.lfm lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmview.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmview.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmview.lfm 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,539 @@ +object ViewForm: TViewForm + Left = 453 + Height = 507 + Top = 289 + Width = 754 + Caption = 'Preview' + ClientHeight = 507 + ClientWidth = 754 + OnDestroy = FormDestroy + Position = poMainFormCenter + LCLVersion = '1.5' + inline SEFile: TSynEdit + Left = 0 + Height = 462 + Top = 0 + Width = 754 + Align = alClient + Font.Height = -13 + Font.Name = 'Courier New' + Font.Pitch = fpFixed + Font.Quality = fqNonAntialiased + ParentColor = False + ParentFont = False + TabOrder = 0 + Gutter.Width = 57 + Gutter.MouseActions = <> + RightGutter.Width = 0 + RightGutter.MouseActions = <> + Keystrokes = < + item + Command = ecUp + ShortCut = 38 + end + item + Command = ecSelUp + ShortCut = 8230 + end + item + Command = ecScrollUp + ShortCut = 16422 + end + item + Command = ecDown + ShortCut = 40 + end + item + Command = ecSelDown + ShortCut = 8232 + end + item + Command = ecScrollDown + ShortCut = 16424 + end + item + Command = ecLeft + ShortCut = 37 + end + item + Command = ecSelLeft + ShortCut = 8229 + end + item + Command = ecWordLeft + ShortCut = 16421 + end + item + Command = ecSelWordLeft + ShortCut = 24613 + end + item + Command = ecRight + ShortCut = 39 + end + item + Command = ecSelRight + ShortCut = 8231 + end + item + Command = ecWordRight + ShortCut = 16423 + end + item + Command = ecSelWordRight + ShortCut = 24615 + end + item + Command = ecPageDown + ShortCut = 34 + end + item + Command = ecSelPageDown + ShortCut = 8226 + end + item + Command = ecPageBottom + ShortCut = 16418 + end + item + Command = ecSelPageBottom + ShortCut = 24610 + end + item + Command = ecPageUp + ShortCut = 33 + end + item + Command = ecSelPageUp + ShortCut = 8225 + end + item + Command = ecPageTop + ShortCut = 16417 + end + item + Command = ecSelPageTop + ShortCut = 24609 + end + item + Command = ecLineStart + ShortCut = 36 + end + item + Command = ecSelLineStart + ShortCut = 8228 + end + item + Command = ecEditorTop + ShortCut = 16420 + end + item + Command = ecSelEditorTop + ShortCut = 24612 + end + item + Command = ecLineEnd + ShortCut = 35 + end + item + Command = ecSelLineEnd + ShortCut = 8227 + end + item + Command = ecEditorBottom + ShortCut = 16419 + end + item + Command = ecSelEditorBottom + ShortCut = 24611 + end + item + Command = ecToggleMode + ShortCut = 45 + end + item + Command = ecCopy + ShortCut = 16429 + end + item + Command = ecPaste + ShortCut = 8237 + end + item + Command = ecDeleteChar + ShortCut = 46 + end + item + Command = ecCut + ShortCut = 8238 + end + item + Command = ecDeleteLastChar + ShortCut = 8 + end + item + Command = ecDeleteLastChar + ShortCut = 8200 + end + item + Command = ecDeleteLastWord + ShortCut = 16392 + end + item + Command = ecUndo + ShortCut = 32776 + end + item + Command = ecRedo + ShortCut = 40968 + end + item + Command = ecLineBreak + ShortCut = 13 + end + item + Command = ecSelectAll + ShortCut = 16449 + end + item + Command = ecCopy + ShortCut = 16451 + end + item + Command = ecBlockIndent + ShortCut = 24649 + end + item + Command = ecLineBreak + ShortCut = 16461 + end + item + Command = ecInsertLine + ShortCut = 16462 + end + item + Command = ecDeleteWord + ShortCut = 16468 + end + item + Command = ecBlockUnindent + ShortCut = 24661 + end + item + Command = ecPaste + ShortCut = 16470 + end + item + Command = ecCut + ShortCut = 16472 + end + item + Command = ecDeleteLine + ShortCut = 16473 + end + item + Command = ecDeleteEOL + ShortCut = 24665 + end + item + Command = ecUndo + ShortCut = 16474 + end + item + Command = ecRedo + ShortCut = 24666 + end + item + Command = ecGotoMarker0 + ShortCut = 16432 + end + item + Command = ecGotoMarker1 + ShortCut = 16433 + end + item + Command = ecGotoMarker2 + ShortCut = 16434 + end + item + Command = ecGotoMarker3 + ShortCut = 16435 + end + item + Command = ecGotoMarker4 + ShortCut = 16436 + end + item + Command = ecGotoMarker5 + ShortCut = 16437 + end + item + Command = ecGotoMarker6 + ShortCut = 16438 + end + item + Command = ecGotoMarker7 + ShortCut = 16439 + end + item + Command = ecGotoMarker8 + ShortCut = 16440 + end + item + Command = ecGotoMarker9 + ShortCut = 16441 + end + item + Command = ecSetMarker0 + ShortCut = 24624 + end + item + Command = ecSetMarker1 + ShortCut = 24625 + end + item + Command = ecSetMarker2 + ShortCut = 24626 + end + item + Command = ecSetMarker3 + ShortCut = 24627 + end + item + Command = ecSetMarker4 + ShortCut = 24628 + end + item + Command = ecSetMarker5 + ShortCut = 24629 + end + item + Command = ecSetMarker6 + ShortCut = 24630 + end + item + Command = ecSetMarker7 + ShortCut = 24631 + end + item + Command = ecSetMarker8 + ShortCut = 24632 + end + item + Command = ecSetMarker9 + ShortCut = 24633 + end + item + Command = EcFoldLevel1 + ShortCut = 41009 + end + item + Command = EcFoldLevel2 + ShortCut = 41010 + end + item + Command = EcFoldLevel3 + ShortCut = 41011 + end + item + Command = EcFoldLevel4 + ShortCut = 41012 + end + item + Command = EcFoldLevel5 + ShortCut = 41013 + end + item + Command = EcFoldLevel6 + ShortCut = 41014 + end + item + Command = EcFoldLevel7 + ShortCut = 41015 + end + item + Command = EcFoldLevel8 + ShortCut = 41016 + end + item + Command = EcFoldLevel9 + ShortCut = 41017 + end + item + Command = EcFoldLevel0 + ShortCut = 41008 + end + item + Command = EcFoldCurrent + ShortCut = 41005 + end + item + Command = EcUnFoldCurrent + ShortCut = 41003 + end + item + Command = EcToggleMarkupWord + ShortCut = 32845 + end + item + Command = ecNormalSelect + ShortCut = 24654 + end + item + Command = ecColumnSelect + ShortCut = 24643 + end + item + Command = ecLineSelect + ShortCut = 24652 + end + item + Command = ecTab + ShortCut = 9 + end + item + Command = ecShiftTab + ShortCut = 8201 + end + item + Command = ecMatchBracket + ShortCut = 24642 + end + item + Command = ecColSelUp + ShortCut = 40998 + end + item + Command = ecColSelDown + ShortCut = 41000 + end + item + Command = ecColSelLeft + ShortCut = 40997 + end + item + Command = ecColSelRight + ShortCut = 40999 + end + item + Command = ecColSelPageDown + ShortCut = 40994 + end + item + Command = ecColSelPageBottom + ShortCut = 57378 + end + item + Command = ecColSelPageUp + ShortCut = 40993 + end + item + Command = ecColSelPageTop + ShortCut = 57377 + end + item + Command = ecColSelLineStart + ShortCut = 40996 + end + item + Command = ecColSelLineEnd + ShortCut = 40995 + end + item + Command = ecColSelEditorTop + ShortCut = 57380 + end + item + Command = ecColSelEditorBottom + ShortCut = 57379 + end> + MouseActions = <> + MouseTextActions = <> + MouseSelActions = <> + Lines.Strings = ( + 'SEFile' + ) + VisibleSpecialChars = [vscSpace, vscTabAtLast] + ReadOnly = True + SelectedColor.BackPriority = 50 + SelectedColor.ForePriority = 50 + SelectedColor.FramePriority = 50 + SelectedColor.BoldPriority = 50 + SelectedColor.ItalicPriority = 50 + SelectedColor.UnderlinePriority = 50 + SelectedColor.StrikeOutPriority = 50 + BracketHighlightStyle = sbhsBoth + BracketMatchColor.Background = clNone + BracketMatchColor.Foreground = clNone + BracketMatchColor.Style = [fsBold] + FoldedCodeColor.Background = clNone + FoldedCodeColor.Foreground = clGray + FoldedCodeColor.FrameColor = clGray + MouseLinkColor.Background = clNone + MouseLinkColor.Foreground = clBlue + LineHighlightColor.Background = clNone + LineHighlightColor.Foreground = clNone + inline SynLeftGutterPartList1: TSynGutterPartList + object SynGutterMarks1: TSynGutterMarks + Width = 24 + MouseActions = <> + end + object SynGutterLineNumber1: TSynGutterLineNumber + Width = 17 + MouseActions = <> + MarkupInfo.Background = clBtnFace + MarkupInfo.Foreground = clNone + DigitCount = 2 + ShowOnlyLineNumbersMultiplesOf = 1 + ZeroStart = False + LeadingZeros = False + end + object SynGutterChanges1: TSynGutterChanges + Width = 4 + MouseActions = <> + ModifiedColor = 59900 + SavedColor = clGreen + end + object SynGutterSeparator1: TSynGutterSeparator + Width = 2 + MouseActions = <> + MarkupInfo.Background = clWhite + MarkupInfo.Foreground = clGray + end + object SynGutterCodeFolding1: TSynGutterCodeFolding + MouseActions = <> + MarkupInfo.Background = clNone + MarkupInfo.Foreground = clGray + MouseActionsExpanded = <> + MouseActionsCollapsed = <> + end + end + end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 33 + Top = 468 + Width = 742 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 1 + ShowButtons = [pbClose] + end + object SynJS: TSynJScriptSyn + left = 46 + top = 19 + end + object SynFPC: TSynFreePascalSyn + StringAttri.Style = [fsBold] + CompilerMode = pcmObjFPC + NestedComments = True + left = 136 + top = 16 + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmview.pp lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmview.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/discovery/frmview.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/discovery/frmview.pp 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,85 @@ +unit frmview; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, + SynEdit, SynHighlighterMulti, SynHighlighterJScript, SynHighlighterPas; + +type + + { TViewForm } + TSyntax = (sPascal,sJSON); + TViewForm = class(TForm) + ButtonPanel1: TButtonPanel; + SEFile: TSynEdit; + SynFPC: TSynFreePascalSyn; + SynJS: TSynJScriptSyn; + procedure FormDestroy(Sender: TObject); + private + FFileName: String; + FFreeStream: Boolean; + FStream: TStream; + FSyntax: TSyntax; + procedure SetFileName(AValue: String); + procedure SetStream(AValue: TStream); + procedure SetSyntax(AValue: TSyntax); + { private declarations } + public + { public declarations } + Property FileName : String Read FFileName Write SetFileName; + Property Syntax : TSyntax Read FSyntax Write SetSyntax; + Property Stream : TStream Read FStream Write SetStream; + Property FreeStream : Boolean Read FFreeStream Write FFreeStream; + end; + +var + ViewForm: TViewForm; + +implementation + +{$R *.lfm} + +{ TViewForm } + +procedure TViewForm.FormDestroy(Sender: TObject); +begin + If Assigned(FStream) and FFreeStream then + FreeAndNil(FStream); +end; + +procedure TViewForm.SetFileName(AValue: String); +begin + if FFileName=AValue then Exit; + FFileName:=AValue; + Case lowercase(ExtractFileExt(FFilename)) of + '.pas','.pp','.inc','.lpr','.dpr' : + Syntax:=sPascal; + '.json','.js': + Syntax:=sJSON; + end; + SEFIle.Lines.LoadFromFile(AValue); +end; + +procedure TViewForm.SetStream(AValue: TStream); +begin + if FStream=AValue then Exit; + FStream:=AValue; + SEFIle.Lines.LoadFromStream(AValue); +end; + +procedure TViewForm.SetSyntax(AValue: TSyntax); +begin + if FSyntax=AValue then Exit; + FSyntax:=AValue; + Case FSyntax of + sPascal: SEFile.Highlighter:=SynFPC; + sJSON : SEFile.Highlighter:=SynJS; + end; + SEFile.Highlighter.Enabled:=True; +end; + +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/drive/drivedemo.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/drive/drivedemo.ico differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/drive/drivedemo.lpi lazarus-1.6+dfsg/components/googleapis/demo/drive/drivedemo.lpi --- lazarus-1.4.4+dfsg/components/googleapis/demo/drive/drivedemo.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/drive/drivedemo.lpi 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="drivedemo"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="laz_synapse"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units Count="3"> + <Unit0> + <Filename Value="drivedemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="frmmain.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="MainForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit1> + <Unit2> + <Filename Value="frmselectdownload.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="SelectDownloadForm"/> + <ResourceBaseClass Value="Form"/> + </Unit2> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="drivedemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <OtherUnitFiles Value="../..;../../../base"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/drive/drivedemo.lpr lazarus-1.6+dfsg/components/googleapis/demo/drive/drivedemo.lpr --- lazarus-1.4.4+dfsg/components/googleapis/demo/drive/drivedemo.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/drive/drivedemo.lpr 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,22 @@ +program drivedemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, frmmain, frmselectdownload + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.CreateForm(TSelectDownloadForm, SelectDownloadForm); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/drive/drivedemo.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/drive/drivedemo.res differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmmain.lfm lazarus-1.6+dfsg/components/googleapis/demo/drive/frmmain.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmmain.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/drive/frmmain.lfm 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,154 @@ +object MainForm: TMainForm + Left = 506 + Height = 396 + Top = 173 + Width = 756 + Caption = 'Google drive demo' + ClientHeight = 396 + ClientWidth = 756 + OnCreate = FormCreate + OnDestroy = FormDestroy + LCLVersion = '1.5' + object BRefreshFolders: TButton + Left = 72 + Height = 25 + Top = 8 + Width = 64 + Caption = 'Refresh' + OnClick = BRefreshFoldersClick + TabOrder = 0 + end + object GBAccess: TGroupBox + Left = 0 + Height = 73 + Top = 323 + Width = 756 + Align = alBottom + Caption = 'Please provide Google API access code' + ClientHeight = 45 + ClientWidth = 752 + TabOrder = 1 + Visible = False + object LEAccess: TLabel + Left = 16 + Height = 12 + Top = 8 + Width = 56 + Caption = 'Access code' + ParentColor = False + end + object BSetAccess: TButton + Left = 582 + Height = 25 + Top = 1 + Width = 75 + Anchors = [akTop, akRight] + Caption = 'OK' + OnClick = BSetAccessClick + TabOrder = 0 + end + object BCancel: TButton + Left = 662 + Height = 25 + Top = 0 + Width = 75 + Anchors = [akTop, akRight] + Caption = 'Cancel' + OnClick = BCancelClick + TabOrder = 1 + end + object EAccessCode: TEdit + Left = 112 + Height = 18 + Top = 8 + Width = 400 + TabOrder = 2 + end + end + object BRefreshFiles: TButton + Left = 614 + Height = 25 + Top = 8 + Width = 112 + Anchors = [akTop, akRight] + Caption = 'Refresh' + Enabled = False + OnClick = BRefreshFilesClick + TabOrder = 2 + end + object LTasks: TLabel + Left = 392 + Height = 12 + Top = 16 + Width = 215 + Anchors = [akTop, akLeft, akRight] + Caption = 'Files in folder' + ParentColor = False + end + object Label1: TLabel + Left = 22 + Height = 12 + Top = 16 + Width = 34 + Caption = 'Folders' + ParentColor = False + end + object TVFolders: TTreeView + Left = 16 + Height = 272 + Top = 35 + Width = 344 + Anchors = [akTop, akLeft, akBottom] + DefaultItemHeight = 14 + ReadOnly = True + TabOrder = 3 + OnSelectionChanged = TVFoldersSelectionChanged + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] + end + object LVFiles: TListView + Left = 384 + Height = 272 + Top = 35 + Width = 360 + Anchors = [akTop, akLeft, akRight, akBottom] + Columns = < + item + Caption = 'Title' + end + item + Caption = 'Date Created' + Width = 100 + end + item + Caption = 'Description' + Width = 200 + end + item + Caption = 'Editable' + end + item + Caption = 'Size' + end + item + Caption = 'Last modified by' + end + item + Caption = 'DownloadURL' + Width = 300 + end + item + Caption = 'Version' + end + item + Caption = 'Mime Type' + Width = 200 + end> + TabOrder = 4 + ViewStyle = vsReport + OnDblClick = LVFilesDblClick + end + object SDDownload: TSaveDialog + left = 415 + top = 163 + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmmain.pp lazarus-1.6+dfsg/components/googleapis/demo/drive/frmmain.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmmain.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/drive/frmmain.pp 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,407 @@ +unit frmmain; + +{$mode objfpc}{$H+} +// Define USESYNAPSE if you want to force use of synapse +{ $DEFINE USESYNAPSE} + +// For version 2.6.4, synapse is the only option. +{$IFDEF VER2_6} +{$DEFINE USESYNAPSE} +{$ENDIF} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + ComCtrls, synautil, IniFiles, googlebase, googleservice, googleclient, + googledrive; + +Const + ILeaf = 0; + ILeafEmpty = 1; + +type + + { TMainForm } + TAccessTokenState = (acsWaiting,acsOK,acsCancel); + + TMainForm = class(TForm) + BCancel: TButton; + BSetAccess: TButton; + BRefreshFolders: TButton; + BRefreshFiles: TButton; + EAccessCode: TEdit; + GBAccess: TGroupBox; + Label1: TLabel; + LVFiles: TListView; + LTasks: TLabel; + LEAccess: TLabel; + SDDownload: TSaveDialog; + TVFolders: TTreeView; + procedure BCancelClick(Sender: TObject); + procedure BRefreshFilesClick(Sender: TObject); + procedure BSetAccessClick(Sender: TObject); + procedure BRefreshFoldersClick(Sender: TObject); + Procedure DoUserConsent(Const AURL : String; Out AAuthCode : String) ; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure LVFilesDblClick(Sender: TObject); + procedure TVFoldersSelectionChanged(Sender: TObject); + private + { private declarations } + FAccessState : TAccessTokenState; + FClient : TGoogleClient; + FDriveAPI: TDriveAPI; + procedure AddFolders(AParent: TTreeNode; AFolderID: String); + procedure ClearFileListView; + procedure ClearTreeView; + procedure LoadAuthConfig; + procedure SaveRefreshToken; + procedure ShowFolder(AFolderID: String); + public + { public declarations } + end; + +var + MainForm: TMainForm; + +implementation + + +uses {$ifdef windows}windows,{$endif} + ssl_openssl, + jsonparser, // needed + fpjson, + fpoauth2, + lclintf, + fpwebclient, + frmselectdownload, +{$IFDEF USESYNAPSE} + ssl_openssl, + synapsewebclient +{$ELSE} + fphttpwebclient +{$ENDIF} + ; + +{$R *.lfm} + +{ TMainForm } + +procedure TMainForm.FormCreate(Sender: TObject); +begin + // Register Tasks resources. + TDriveAPI.RegisterAPIResources; + // Set up google client. + FClient:=TGoogleClient.Create(Self); + {$IFDEF USESYNAPSE} + FClient.WebClient:=TSynapseWebClient.Create(Self); + {$ELSE} + FClient.WebClient:=TFPHTTPWebClient.Create(Self); + {$ENDIF} + FClient.WebClient.RequestSigner:=FClient.AuthHandler; + FClient.WebClient.LogFile:='requests.log'; + FClient.AuthHandler.WebClient:=FClient.WebClient; + FClient.AuthHandler.Config.AccessType:=atOffLine; + // We want to enter a code. + FClient.OnUserConsent:=@DoUserConsent; + // Create a Tasks API and connect it to the client. + FDriveAPI:=TDriveAPI.Create(Self); + FDriveAPI.GoogleClient:=FClient; +end; + +procedure TMainForm.FormDestroy(Sender: TObject); +begin +end; + +procedure TMainForm.LVFilesDblClick(Sender: TObject); + +Var + Entry : TFile; + Request : TWebClientRequest; + Response: TWebClientResponse; + S,URL,LFN: String; + D : TJSONEnum; +begin + If Not (Assigned(LVFiles.Selected) and Assigned(LVFiles.Selected.Data)) then + Exit; + Entry:=TFile(LVFiles.Selected.Data); + if (Entry.DownloadUrl='') + and ((Entry.exportLinks=Nil) or (Entry.exportLinks.additionalProperties=Nil) or ((Entry.exportLinks.additionalProperties.Count)=0)) then + Exit; + if Entry.DownloadUrl<>'' then + URL:=TDriveAPI.APIBaseURL+'files/'+Entry.ID+'?alt=media' + else + begin + With TSelectDownloadForm.Create(Self) do + try + Formats.BeginUpdate; + For D in Entry.exportLinks.additionalProperties do + Formats.Add(D.Key); + if (ShowModal=mrOK) then + S:=Selected; + finally + Free; + end; + URL:=Entry.exportLinks.additionalProperties.Strings[S]; + end; + SDDownload.FileName:=Application.Location+Entry.Title+'.'+Entry.fileExtension; + If Not SDDownload.Execute then + Exit; + Response:=Nil; + Request:=FClient.WebClient.CreateRequest; + try + Response:=FClient.WebClient.ExecuteSignedRequest('GET',URL,Request); + With TFileStream.Create(SDDownLoad.FileName,fmCreate) do + try + CopyFrom(Response.Content,0); + finally + Free; + end; + finally + Response.Free; + Request.Free; + end; +end; + +procedure TMainForm.TVFoldersSelectionChanged(Sender: TObject); +begin + BRefreshFilesClick(Sender) +end; + +procedure TMainForm.LoadAuthConfig; + +Var + ini:TIniFile; + +begin + ini:=TIniFile.Create('google.ini'); + try + // Registered application needs tasks scope + FClient.AuthHandler.Config.ClientID:=ini.ReadString('Credentials','ClientID','');; + FClient.AuthHandler.Config.ClientSecret:=ini.ReadString('Credentials','ClientSecret',''); + FClient.AuthHandler.Config.AuthScope:=ini.ReadString('Credentials','Scope','https://www.googleapis.com/auth/drive'); + // We are offline. + FClient.AuthHandler.Config.RedirectUri:='urn:ietf:wg:oauth:2.0:oob'; + // Session data + FClient.AuthHandler.Session.RefreshToken:=ini.ReadString('Session','RefreshToken',''); + FClient.AuthHandler.Session.AccessToken:=ini.ReadString('Session','AccesToken',''); + FClient.AuthHandler.Session.AuthTokenType:=ini.ReadString('Session','TokenType',''); + FClient.AuthHandler.Session.AuthExpires:=ini.ReadDateTime('Session','AuthExpires',0); + FClient.AuthHandler.Session.AuthExpiryPeriod:=Ini.ReadInteger('Session','AuthPeriod',0); + finally + Ini.Free; + end; +end; + +procedure TMainForm.SaveRefreshToken; + +Var + ini:TIniFile; + +begin + // We save the refresh token for later use. + if FClient.AuthHandler.Session.RefreshToken<>'' then + begin + ini:=TIniFile.Create('google.ini'); + try + ini.WriteString('Session','RefreshToken',FClient.AuthHandler.Session.RefreshToken); + ini.WriteString('Session','AccessToken',FClient.AuthHandler.Session.AccessToken); + ini.WriteString('Session','TokenType',FClient.AuthHandler.Session.AuthTokenType); + ini.WriteDateTime('Session','AuthExpires',FClient.AuthHandler.Session.AuthExpires); + ini.WriteInteger('Session','AuthPeriod',FClient.AuthHandler.Session.AuthExpiryPeriod); + finally + Ini.Free; + end; + end; +end; + +procedure TMainForm.ClearTreeView; + +Var + I : Integer; + +begin + With TVFolders.Items do + begin + BeginUpdate; + try + For I:=0 to Count-1 do + TObject(Item[i].Data).Free; + Clear; + finally + EndUpdate; + end; + end; +end; + +procedure TMainForm.AddFolders(AParent : TTreeNode; AFolderID : String); + +var + Entry: TFile; + Resource : TFilesResource; + EN : String; + Q : TFilesListOptions; + List : TFileList; + i : integer; + N : TTreeNode; + +begin + Resource:=Nil; + try + Resource:=FDriveAPI.CreateFilesResource(Self); + // Search for folders of indicated folder only. + Q.q:='mimeType = ''application/vnd.google-apps.folder'' and '''+AFolderId+''' in parents'; + Q.corpus:=''; + q.maxResults:=0; + Q.pageToken:=''; + Q.projection:=''; + List:=Resource.list(Q); + SaveRefreshToken; + With TVFolders.Items do + begin + BeginUpdate; + try + if Assigned(List) then + for i:= 0 to Length(List.items)-1 do + begin + Entry:=List.items[i]; + List.Items[i]:=Nil; + N:=AddChild(AParent,Entry.title); + N.Data:=Entry; + end; + finally + EndUpdate; + end; + end; + Application.ProcessMessages; + if Assigned(AParent) then + for I:=AParent.Count-1 downto 0 do + AddFolders(AParent.Items[i],TFile(AParent.Items[i].Data).id) + else if (TVFolders.Items.Count>0) then + for I:=TVFolders.Items.Count-1 downto 0 do + AddFolders(TVFolders.Items[i],TFile(TVFolders.Items[i].Data).id) + finally + FreeAndNil(Resource); + end; +end; + +procedure TMainForm.BRefreshFoldersClick(Sender: TObject); + + +begin + LoadAuthConfig; + ClearTreeView; + AddFolders(Nil,'root'); +end; + +procedure TMainForm.BSetAccessClick(Sender: TObject); +begin + FAccessState:=acsOK; + GBAccess.Visible:=False; +end; + +procedure TMainForm.BCancelClick(Sender: TObject); +begin + FAccessState:=acsCancel; + GBAccess.Visible:=False; +end; + +procedure TMainForm.ClearFileListView; + +Var + I : Integer; + +begin + With LVFiles.Items do + begin + BeginUpdate; + try + For I:=0 to Count-1 do + TObject(Item[i].Data).Free; + Clear; + finally + EndUpdate; + end; + end; +end; + +procedure TMainForm.BRefreshFilesClick(Sender: TObject); + +begin + if (TVFolders.Selected=Nil) or (TVFolders.Selected.Data=Nil) then + ShowFolder('root') + else + ShowFolder(TFile(TVFolders.Selected.Data).ID); +end; + +procedure TMainForm.ShowFolder(AFolderID : String); + +var + Entry: TFile; + EN : String; + i:integer; + Q : TFilesListOptions; + List : TFileList; + Resource : TFilesResource; + LI : TListItem; + +begin + ClearFileListView; + Resource:=Nil; + try + Resource:=FDriveAPI.CreateFilesResource(Self); + // Search for files of indicated folder only. + Q.q:='mimeType != ''application/vnd.google-apps.folder'' and '''+AFolderId+''' in parents'; + List:=Resource.list(Q); + SaveRefreshToken; + With LVFiles.Items do + begin + BeginUpdate; + try + Clear; + if Assigned(List) then + for i:= 0 to Length(List.items)-1 do + begin + Entry:=List.items[i]; + List.Items[i]:=Nil; + LI:=Add; + LI.Caption:=Entry.Title; + With LI.SubItems do + begin + Add(DateTimeToStr(Entry.createdDate)); + Add(Entry.Description); + Add(BoolToStr(Entry.Editable,'Yes','No')); + Add(Entry.fileSize); + Add(Entry.lastModifyingUserName); + Add(Entry.downloadUrl); + Add(Entry.version); + Add(Entry.mimeType); + end; + Li.Data:=Entry; + end; + finally + EndUpdate; + end; + end; + Finally + Resource.Free; + end; +end; + +Procedure TMainForm.DoUserConsent(Const AURL: String; Out AAuthCode: String); + +begin + GBAccess.Visible:=True; + EAccessCode.Text:='<enter code here>'; + FAccessState:=acsWaiting; + OpenUrl(AURL); + While (FAccessState=acsWaiting) do + Application.ProcessMessages; + if FAccessState=acsOK then + AAuthCode:=EAccessCode.Text; + GBAccess.Visible:=False; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmselectdownload.lfm lazarus-1.6+dfsg/components/googleapis/demo/drive/frmselectdownload.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmselectdownload.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/drive/frmselectdownload.lfm 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,44 @@ +object SelectDownloadForm: TSelectDownloadForm + Left = 612 + Height = 226 + Top = 344 + Width = 354 + Caption = 'Select download format for file' + ClientHeight = 226 + ClientWidth = 354 + Position = poOwnerFormCenter + LCLVersion = '1.5' + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 33 + Top = 187 + Width = 342 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 0 + ShowButtons = [pbOK, pbCancel] + end + object RGFormat: TRadioGroup + Left = 0 + Height = 181 + Top = 0 + Width = 354 + Align = alClient + AutoFill = True + Caption = 'Available download formats' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + TabOrder = 1 + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmselectdownload.pp lazarus-1.6+dfsg/components/googleapis/demo/drive/frmselectdownload.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/drive/frmselectdownload.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/drive/frmselectdownload.pp 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,48 @@ +unit frmselectdownload; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, + ExtCtrls; + +type + + { TSelectDownloadForm } + + TSelectDownloadForm = class(TForm) + ButtonPanel1: TButtonPanel; + RGFormat: TRadioGroup; + private + function GetFormats: TStrings; + function GetSelected: String; + { private declarations } + public + { public declarations } + Property Formats : TStrings Read GetFormats; + Property Selected : String Read GetSelected; + end; + +var + SelectDownloadForm: TSelectDownloadForm; + +implementation + +{$R *.lfm} + +{ TSelectDownloadForm } + +function TSelectDownloadForm.GetFormats: TStrings; +begin + Result:=RGFormat.Items; +end; + +function TSelectDownloadForm.GetSelected: String; +begin + Result:=RGFormat.Items[RGFormat.ItemIndex]; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/drive/google.ini lazarus-1.6+dfsg/components/googleapis/demo/drive/google.ini --- lazarus-1.4.4+dfsg/components/googleapis/demo/drive/google.ini 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/drive/google.ini 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,11 @@ +[Credentials] +ClientID=Your client ID +ClientSecret=Your secret key +Scope=https://www.googleapis.com/auth/drive + +[Session] +;RefreshToken= +;AccessToken= +;TokenType= +;AuthExpires= +;AuthPeriod= diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/frmmain.lfm lazarus-1.6+dfsg/components/googleapis/demo/gmail/frmmain.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/frmmain.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/gmail/frmmain.lfm 2015-05-16 08:01:27.000000000 +0000 @@ -0,0 +1,148 @@ +object MainForm: TMainForm + Left = 506 + Height = 636 + Top = 173 + Width = 1025 + Caption = 'Google mail demo' + ClientHeight = 636 + ClientWidth = 1025 + OnCreate = FormCreate + OnDestroy = FormDestroy + LCLVersion = '1.5' + object BRefreshFolders: TButton + Left = 104 + Height = 25 + Top = 8 + Width = 120 + Caption = 'Refresh' + OnClick = BRefreshFoldersClick + TabOrder = 0 + end + object GBAccess: TGroupBox + Left = 0 + Height = 91 + Top = 545 + Width = 1025 + Align = alBottom + Caption = 'Please provide Google API access code' + ClientHeight = 63 + ClientWidth = 1021 + TabOrder = 1 + Visible = False + object LEAccess: TLabel + Left = 16 + Height = 12 + Top = 8 + Width = 56 + Caption = 'Access code' + ParentColor = False + end + object BSetAccess: TButton + Left = 792 + Height = 33 + Top = 0 + Width = 107 + Anchors = [akTop, akRight] + Caption = 'OK' + OnClick = BSetAccessClick + TabOrder = 0 + end + object BCancel: TButton + Left = 904 + Height = 33 + Top = 0 + Width = 106 + Anchors = [akTop, akRight] + Caption = 'Cancel' + OnClick = BCancelClick + TabOrder = 1 + end + object EAccessCode: TEdit + Left = 144 + Height = 18 + Top = 2 + Width = 648 + Anchors = [akTop, akLeft, akRight] + TabOrder = 2 + end + end + object BRefreshFiles: TButton + Left = 883 + Height = 25 + Top = 8 + Width = 112 + Anchors = [akTop, akRight] + Caption = 'Refresh' + Enabled = False + OnClick = BRefreshFilesClick + TabOrder = 2 + end + object LMails: TLabel + Left = 392 + Height = 12 + Top = 8 + Width = 484 + Anchors = [akTop, akLeft, akRight] + Caption = 'Messages with label' + ParentColor = False + end + object LLabels: TLabel + Left = 24 + Height = 12 + Top = 8 + Width = 30 + Caption = 'Labels' + ParentColor = False + end + object TVLabels: TTreeView + Left = 8 + Height = 512 + Top = 40 + Width = 344 + Anchors = [akTop, akLeft, akBottom] + DefaultItemHeight = 14 + ReadOnly = True + TabOrder = 3 + OnSelectionChanged = TVLabelsSelectionChanged + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] + end + object LVMessages: TListView + Left = 392 + Height = 512 + Top = 32 + Width = 629 + Anchors = [akTop, akLeft, akRight, akBottom] + Columns = < + item + Caption = 'Title' + Width = 200 + end + item + Caption = 'From' + Width = 200 + end + item + Caption = 'Received' + Width = 200 + end + item + Caption = 'Recipient' + Width = 200 + end + item + Caption = 'Sender' + Width = 200 + end + item + Caption = 'Snippet' + Width = 300 + end> + TabOrder = 4 + ViewStyle = vsReport + OnDblClick = LVMessagesDblClick + end + object SDDownload: TSaveDialog + left = 415 + top = 163 + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/frmmain.pp lazarus-1.6+dfsg/components/googleapis/demo/gmail/frmmain.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/frmmain.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/gmail/frmmain.pp 2015-05-16 08:01:27.000000000 +0000 @@ -0,0 +1,446 @@ +unit frmmain; +// Define USESYNAPSE if you want to force use of synapse +{ $DEFINE USESYNAPSE} + +// For version 2.6.4, synapse is the only option. +{$IFDEF VER2_6} +{$DEFINE USESYNAPSE} +{$ENDIF} + +{$mode objfpc}{$H+} + +interface + +uses + googlegmail, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + ComCtrls, synautil, IniFiles, googlebase, googleservice, googleclient; + +Const + ILeaf = 0; + ILeafEmpty = 1; + +type + + { TMainForm } + TAccessTokenState = (acsWaiting,acsOK,acsCancel); + + TMainForm = class(TForm) + BCancel: TButton; + BSetAccess: TButton; + BRefreshFolders: TButton; + BRefreshFiles: TButton; + EAccessCode: TEdit; + GBAccess: TGroupBox; + LLabels: TLabel; + LVMessages: TListView; + LMails: TLabel; + LEAccess: TLabel; + SDDownload: TSaveDialog; + TVLabels: TTreeView; + procedure BCancelClick(Sender: TObject); + procedure BRefreshFilesClick(Sender: TObject); + procedure BSetAccessClick(Sender: TObject); + procedure BRefreshFoldersClick(Sender: TObject); + Procedure DoUserConsent(Const AURL : String; Out AAuthCode : String) ; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure LVMessagesDblClick(Sender: TObject); + procedure TVLabelsSelectionChanged(Sender: TObject); + private + { private declarations } + FAccessState : TAccessTokenState; + FClient : TGoogleClient; + FGmailAPI: TGmailAPI; + procedure AddLabels; + procedure ClearMailListView; + procedure ClearTreeView; + function CreateNodeWithTextPath(TextPath: string): TTreeNode; + procedure LoadAuthConfig; + procedure SaveRefreshToken; + procedure ShowLabel(ALabelID: String); + public + { public declarations } + end; + +var + MainForm: TMainForm; + +implementation + + +uses + strutils, + ssl_openssl, + jsonparser, // needed + fpjson, + fpoauth2, + lclintf, + fpwebclient, + {$IFDEF USESYNAPSE} + ssl_openssl, + synapsewebclient + {$ELSE} + fphttpwebclient + {$ENDIF} + ; + +{$R *.lfm} + +{ TMainForm } + +procedure TMainForm.FormCreate(Sender: TObject); +begin + // Register Tasks resources. + TGmailAPI.RegisterAPIResources; + // Set up google client. + FClient:=TGoogleClient.Create(Self); + {$IFDEF USESYNAPSE} + FClient.WebClient:=TSynapseWebClient.Create(Self); + {$ELSE} + FClient.WebClient:=TFPHTTPWebClient.Create(Self); + {$ENDIF} + FClient.WebClient.RequestSigner:=FClient.AuthHandler; + FClient.WebClient.LogFile:='requests.log'; + FClient.AuthHandler.WebClient:=FClient.WebClient; + FClient.AuthHandler.Config.AccessType:=atOffLine; + // We want to enter a code. + FClient.OnUserConsent:=@DoUserConsent; + // Create a Tasks API and connect it to the client. + FGmailAPI:=TGmailAPI.Create(Self); + FGmailAPI.GoogleClient:=FClient; +end; + +procedure TMainForm.FormDestroy(Sender: TObject); +begin +end; + +procedure TMainForm.LVMessagesDblClick(Sender: TObject); + +Var + Entry : TMessage; + Request : TWebClientRequest; + Response: TWebClientResponse; + S,URL,LFN: String; + D : TJSONEnum; +begin + If Not (Assigned(LVMessages.Selected) and Assigned(LVMessages.Selected.Data)) then + Exit; + Entry:=TMessage(LVMessages.Selected.Data); + // Add some code here to show the message +end; + +procedure TMainForm.TVLabelsSelectionChanged(Sender: TObject); +begin + BRefreshFilesClick(Sender) +end; + +procedure TMainForm.LoadAuthConfig; + +Var + ini:TIniFile; + +begin + ini:=TIniFile.Create('google.ini'); + try + // Registered application needs tasks scope + FClient.AuthHandler.Config.ClientID:=ini.ReadString('Credentials','ClientID','');; + FClient.AuthHandler.Config.ClientSecret:=ini.ReadString('Credentials','ClientSecret',''); + FClient.AuthHandler.Config.AuthScope:=ini.ReadString('Credentials','Scope','https://www.googleapis.com/auth/drive'); + // We are offline. + FClient.AuthHandler.Config.RedirectUri:='urn:ietf:wg:oauth:2.0:oob'; + // Session data + FClient.AuthHandler.Session.RefreshToken:=ini.ReadString('Session','RefreshToken',''); + FClient.AuthHandler.Session.AccessToken:=ini.ReadString('Session','AccesToken',''); + FClient.AuthHandler.Session.AuthTokenType:=ini.ReadString('Session','TokenType',''); + FClient.AuthHandler.Session.AuthExpires:=ini.ReadDateTime('Session','AuthExpires',0); + FClient.AuthHandler.Session.AuthExpiryPeriod:=Ini.ReadInteger('Session','AuthPeriod',0); + finally + Ini.Free; + end; +end; + +procedure TMainForm.SaveRefreshToken; + +Var + ini:TIniFile; + +begin + // We save the refresh token for later use. + if FClient.AuthHandler.Session.RefreshToken<>'' then + begin + ini:=TIniFile.Create('google.ini'); + try + ini.WriteString('Session','RefreshToken',FClient.AuthHandler.Session.RefreshToken); + ini.WriteString('Session','AccessToken',FClient.AuthHandler.Session.AccessToken); + ini.WriteString('Session','TokenType',FClient.AuthHandler.Session.AuthTokenType); + ini.WriteDateTime('Session','AuthExpires',FClient.AuthHandler.Session.AuthExpires); + ini.WriteInteger('Session','AuthPeriod',FClient.AuthHandler.Session.AuthExpiryPeriod); + finally + Ini.Free; + end; + end; +end; + +procedure TMainForm.ClearTreeView; + +Var + I : Integer; + +begin + With TVLabels.Items do + begin + BeginUpdate; + try + For I:=0 to Count-1 do + TObject(Item[i].Data).Free; + Clear; + finally + EndUpdate; + end; + end; +end; + +function TMainForm.CreateNodeWithTextPath(TextPath: string): TTreeNode; + +var + p: SizeInt; + CurText: String; + AParent : TTreeNode; + +begin + Result:=nil; + AParent:=Nil; + repeat + p:=System.Pos('/',TextPath); + if p>0 then + begin + CurText:=LeftStr(TextPath,p-1); + System.Delete(TextPath,1,p); + end + else + begin + CurText:=TextPath; + TextPath:=''; + end; + //debugln(['TTreeNodes.FindNodeWithTextPath CurText=',CurText,' Rest=',TextPath]); + if AParent=nil then + Result:=TVLabels.Items.FindTopLvlNode(CurText) + else + Result:=AParent.FindNode(CurText); + if (Result=Nil) Then + Result:=TVLabels.Items.AddChild(AParent,CurText); + AParent:=Result; + until (Result=nil) or (TextPath=''); +end; + +procedure TMainForm.AddLabels; + +var + EF,Entry: googlegmail.TLabel; + Resource : TUsersLabelsResource; + EN : String; + List : TListLabelsResponse; + i : integer; + PN,N : TTreeNode; + ShowThisLabel : boolean; + +begin + Resource:=Nil; + List:=Nil; + Entry:=Nil; + try + Resource:=FGmailAPI.CreateUsersLabelsResource(Self); + // Search for folders of indicated folder only. + List:=Resource.list('me'); + SaveRefreshToken; + With TVLabels.Items do + begin + BeginUpdate; + try + I:=0; + if Assigned(List) then + for Entry in List.Labels do + begin + List.Labels[i]:=Nil; + Inc(I); + ShowThisLabel:=False; + Case lowercase(Entry.labelListVisibility) of + 'labelhide' : ShowThisLabel:=False; + 'labelshow' : ShowThisLabel:=True; + 'labelshowifunread' : ShowThisLabel:=Entry.messagesUnread>0; + end; + if not ShowThisLabel then + begin + EF:=Entry; + FreeAndNil(EF); + end + else + begin + N:=CreateNodeWithTextPath(Entry.Name); + N.Data:=Entry; + end; + end; + finally + EndUpdate; + end; + end; + Application.ProcessMessages; + finally + FreeAndNil(List); + FreeAndNil(Resource); + end; +end; + +procedure TMainForm.BRefreshFoldersClick(Sender: TObject); + + +begin + LoadAuthConfig; + ClearTreeView; + AddLabels; + TVLabels.SortType:=stText; +end; + +procedure TMainForm.BSetAccessClick(Sender: TObject); +begin + FAccessState:=acsOK; + GBAccess.Visible:=False; +end; + +procedure TMainForm.BCancelClick(Sender: TObject); +begin + FAccessState:=acsCancel; + GBAccess.Visible:=False; +end; + +procedure TMainForm.ClearMailListView; + +Var + I : Integer; + +begin + With LVMessages.Items do + begin + BeginUpdate; + try + For I:=0 to Count-1 do + TObject(Item[i].Data).Free; + Clear; + finally + EndUpdate; + end; + end; +end; + +procedure TMainForm.BRefreshFilesClick(Sender: TObject); + +begin + if (TVLabels.Selected=Nil) or (TVLabels.Selected.Data=Nil) then + ShowLabel('root') + else + ShowLabel(googlegmail.TLabel(TVLabels.Selected.Data).id); +end; + +procedure TMainForm.ShowLabel(ALabelID: String); + +Type + TMailDescription = Record + Subject : String; + Sender : String; + From : String; + Recipient : String; + Received : String; + Snippet : String; + end; + + Procedure CreateDesc(E : TMessage; var Desc : TMailDescription); + + Var + H : TMessagePartHeader; + + begin + Desc.Subject:=''; + Desc.Sender:=''; + Desc.Received:=''; + Desc.from:=''; + Desc.Recipient:=''; + Desc.Snippet:=E.snippet; + If Assigned(E.payload) then + For H in E.payload.headers do + Case LowerCase(h.name) of + 'subject' : Desc.Subject:=H.value; + 'sender' : Desc.Sender:=H.value; + 'received' : Desc.Received:=H.Value; + 'date' : Desc.Received:=H.Value; + 'from' : Desc.from:=H.Value; + 'to' : Desc.Recipient:=H.Value; + end; + end; + +var + Msg,Entry: Tmessage; + EN : String; + i:integer; + Q : TUsersMessagesListOptions; + Resource : TUsersMessagesResource; + List : TListMessagesResponse; + LI : TListItem; + Desc : TMailDescription; + +begin + ClearMailListView; + Resource:=Nil; + try + Resource:=FGmailAPI.CreateusersMessagesResource(Self); + // Search for files of indicated folder only. + Q.labelIds:=ALabelID; + List:=Resource.list('me',Q); + SaveRefreshToken; + With LVMessages.Items do + begin + BeginUpdate; + try + Clear; + if Assigned(List) then + for Msg in List.messages do + begin + Entry:=Resource.Get(Msg.id,'me','format=full'); + LI:=Add; + CreateDesc(Entry,Desc); + LI.Caption:=Desc.Subject; + With LI.SubItems do + begin + Add(Desc.From); + Add(Desc.Received); + Add(Desc.Recipient); + Add(Desc.Sender); + Add(Desc.Snippet); + end; + Li.Data:=Entry; + Application.ProcessMessages; + end; + finally + EndUpdate; + end; + end; + Finally + Resource.Free; + end; +end; + +Procedure TMainForm.DoUserConsent(Const AURL: String; Out AAuthCode: String); + +begin + GBAccess.Visible:=True; + EAccessCode.Text:='<enter code here>'; + FAccessState:=acsWaiting; + OpenUrl(AURL); + While (FAccessState=acsWaiting) do + Application.ProcessMessages; + if FAccessState=acsOK then + AAuthCode:=EAccessCode.Text; + GBAccess.Visible:=False; +end; + +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/gmaildemo.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/gmail/gmaildemo.ico differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/gmaildemo.lpi lazarus-1.6+dfsg/components/googleapis/demo/gmail/gmaildemo.lpi --- lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/gmaildemo.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/gmail/gmaildemo.lpi 2015-05-16 08:01:27.000000000 +0000 @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <Flags> + <SaveOnlyProjectUnits Value="True"/> + </Flags> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="gmaildemo"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="laz_synapse"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="gmaildemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="frmmain.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="MainForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="gmaildemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <OtherUnitFiles Value="../..;../../../base;../../apis"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/gmaildemo.lpr lazarus-1.6+dfsg/components/googleapis/demo/gmail/gmaildemo.lpr --- lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/gmaildemo.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/gmail/gmaildemo.lpr 2015-05-16 08:01:27.000000000 +0000 @@ -0,0 +1,20 @@ +program gmaildemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, frmmain; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/gmaildemo.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/gmail/gmaildemo.res differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/google.ini lazarus-1.6+dfsg/components/googleapis/demo/gmail/google.ini --- lazarus-1.4.4+dfsg/components/googleapis/demo/gmail/google.ini 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/gmail/google.ini 2015-05-16 08:01:27.000000000 +0000 @@ -0,0 +1,5 @@ +[Credentials] +ClientID=Your client ID +ClientSecret=Your secret key +Scope=https://mail.google.com/ + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/frmmain.lfm lazarus-1.6+dfsg/components/googleapis/demo/tasks/frmmain.lfm --- lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/frmmain.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/tasks/frmmain.lfm 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,111 @@ +object MainForm: TMainForm + Left = 456 + Height = 345 + Top = 191 + Width = 702 + Caption = 'Google Tasks demo' + ClientHeight = 345 + ClientWidth = 702 + OnCreate = FormCreate + OnDestroy = FormDestroy + LCLVersion = '1.5' + object BFetchTaskLists: TButton + Left = 8 + Height = 25 + Top = 8 + Width = 112 + Caption = 'Fetch task lists' + OnClick = BFetchTaskListsClick + TabOrder = 0 + end + object GBAccess: TGroupBox + Left = 0 + Height = 73 + Top = 272 + Width = 702 + Align = alBottom + Caption = 'Please provide Google API access code' + ClientHeight = 45 + ClientWidth = 698 + TabOrder = 1 + Visible = False + object LEAccess: TLabel + Left = 16 + Height = 12 + Top = 8 + Width = 56 + Caption = 'Access code' + ParentColor = False + end + object BSetAccess: TButton + Left = 528 + Height = 25 + Top = 1 + Width = 75 + Anchors = [akTop, akRight] + Caption = 'OK' + OnClick = BSetAccessClick + TabOrder = 0 + end + object BCancel: TButton + Left = 608 + Height = 25 + Top = 0 + Width = 75 + Anchors = [akTop, akRight] + Caption = 'Cancel' + OnClick = BCancelClick + TabOrder = 1 + end + object EAccessCode: TEdit + Left = 112 + Height = 18 + Top = 8 + Width = 400 + TabOrder = 2 + end + end + object BFetchTasks: TButton + Left = 560 + Height = 25 + Top = 8 + Width = 112 + Anchors = [akTop, akRight] + Caption = 'Fetch tasks' + Enabled = False + OnClick = BFetchTasksClick + TabOrder = 2 + end + object LBTaskLists: TListBox + Left = 8 + Height = 210 + Top = 40 + Width = 360 + Anchors = [akTop, akLeft, akBottom] + ItemHeight = 0 + OnSelectionChange = LBTaskListsSelectionChange + ScrollWidth = 356 + TabOrder = 3 + TopIndex = -1 + end + object LBTasks: TListBox + Left = 384 + Height = 218 + Top = 40 + Width = 304 + Anchors = [akTop, akLeft, akRight, akBottom] + ItemHeight = 0 + ScrollWidth = 300 + TabOrder = 4 + TopIndex = -1 + end + object LTasks: TLabel + Left = 392 + Height = 12 + Top = 16 + Width = 161 + Anchors = [akTop, akLeft, akRight] + Caption = 'Tasks for list : <select a tasklist>' + ParentColor = False + end +end diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/frmmain.pp lazarus-1.6+dfsg/components/googleapis/demo/tasks/frmmain.pp --- lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/frmmain.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/tasks/frmmain.pp 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,251 @@ +unit frmmain; + +{$mode objfpc}{$H+} +// Define USESYNAPSE if you want to force use of synapse +{ $DEFINE USESYNAPSE} + +// For version 2.6.4, synapse is the only option. +{$IFDEF VER2_6} +{$DEFINE USESYNAPSE} +{$ENDIF} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + synautil, IniFiles, googlebase, googleservice, googleclient, googletasks; + +type + + { TMainForm } + TAccessTokenState = (acsWaiting,acsOK,acsCancel); + + TMainForm = class(TForm) + BCancel: TButton; + BSetAccess: TButton; + BFetchTaskLists: TButton; + BFetchTasks: TButton; + EAccessCode: TEdit; + GBAccess: TGroupBox; + LTasks: TLabel; + LEAccess: TLabel; + LBTaskLists: TListBox; + LBTasks: TListBox; + procedure BCancelClick(Sender: TObject); + procedure BFetchTasksClick(Sender: TObject); + procedure BSetAccessClick(Sender: TObject); + procedure BFetchTaskListsClick(Sender: TObject); + Procedure DoUserConsent(Const AURL : String; Out AAuthCode : String) ; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure LBTaskListsSelectionChange(Sender: TObject; User: boolean); + private + { private declarations } + FAccessState : TAccessTokenState; + FClient : TGoogleClient; + FTasksAPI: TTasksAPI; + FTaskLists: TTaskLists; + FCurrentList: TTaskList; + FTasks : TTasks; + procedure LoadAuthConfig; + procedure SaveRefreshToken; + public + { public declarations } + end; + +var + MainForm: TMainForm; + +implementation + + +uses {$ifdef windows}windows,{$endif} + jsonparser, // needed + fpoauth2, +{$IFDEF USESYNAPSE} + ssl_openssl, + synapse,webclient +{$ELSE} + fphttpwebclient, +{$ENDIF} + lclintf; + +{$R *.lfm} + +{ TMainForm } + +procedure TMainForm.FormCreate(Sender: TObject); +begin + // Register Tasks resources. + TTasksAPI.RegisterAPIResources; + // Set up google client. + FClient:=TGoogleClient.Create(Self); + {$IFDEF USESYNAPSE} + FClient.WebClient:=TSynapseWebClient.Create(Self); + {$ELSE} + FClient.WebClient:=TFPHTTPWebClient.Create(Self); + {$ENDIF} + FClient.WebClient.RequestSigner:=FClient.AuthHandler; + FClient.WebClient.LogFile:='requests.log'; + FClient.AuthHandler.WebClient:=FClient.WebClient; + FClient.AuthHandler.Config.AccessType:=atOffLine; + // We want to enter a code. + FClient.OnUserConsent:=@DoUserConsent; + // Create a Tasks API and connect it to the client. + FTasksAPI:=TTasksAPI.Create(Self); + FTasksAPI.GoogleClient:=FClient; +end; + +procedure TMainForm.FormDestroy(Sender: TObject); +begin + FreeAndNil(FTaskLists); + FreeAndNil(FTasks); +end; + +procedure TMainForm.LBTaskListsSelectionChange(Sender: TObject; User: boolean); +begin + BFetchTasks.Enabled:=User and (LBTaskLists.ItemIndex<>-1); + if BFetchTasks.Enabled then + begin + FCurrentList:=LBTaskLists.Items.Objects[LBTaskLists.ItemIndex] as TTaskList; + LTasks.Caption:='Tasks for list : '+FCurrentList.Title; + end + else + begin + LTasks.Caption:='Tasks for list : <select as tasklist>'; + LBTasks.Items.Clear; + FCurrentList:=Nil; + end; +end; + +procedure TMainForm.LoadAuthConfig; + +Var + ini:TIniFile; + +begin + ini:=TIniFile.Create('google.ini'); + try + // Registered application needs tasks scope + FClient.AuthHandler.Config.ClientID:=ini.ReadString('Credentials','ClientID','');; + FClient.AuthHandler.Config.ClientSecret:=ini.ReadString('Credentials','ClientSecret',''); + FClient.AuthHandler.Config.AuthScope:=ini.ReadString('Credentials','Scope','https://www.googleapis.com/auth/tasks'); + // We are offline. + FClient.AuthHandler.Config.RedirectUri:='urn:ietf:wg:oauth:2.0:oob'; + // Session data + FClient.AuthHandler.Session.RefreshToken:=ini.ReadString('Session','RefreshToken',''); + FClient.AuthHandler.Session.AccessToken:=ini.ReadString('Session','AccesToken',''); + FClient.AuthHandler.Session.AuthTokenType:=ini.ReadString('Session','TokenType',''); + FClient.AuthHandler.Session.AuthExpires:=ini.ReadDateTime('Session','AuthExpires',0); + FClient.AuthHandler.Session.AuthExpiryPeriod:=Ini.ReadInteger('Session','AuthPeriod',0); + finally + Ini.Free; + end; +end; + +procedure TMainForm.SaveRefreshToken; + +Var + ini:TIniFile; + +begin + // We save the refresh token for later use. + if FClient.AuthHandler.Session.RefreshToken<>'' then + begin + ini:=TIniFile.Create('google.ini'); + try + ini.WriteString('Session','RefreshToken',FClient.AuthHandler.Session.RefreshToken); + ini.WriteString('Session','AccessToken',FClient.AuthHandler.Session.AccessToken); + ini.WriteString('Session','TokenType',FClient.AuthHandler.Session.AuthTokenType); + ini.WriteDateTime('Session','AuthExpires',FClient.AuthHandler.Session.AuthExpires); + ini.WriteInteger('Session','AuthPeriod',FClient.AuthHandler.Session.AuthExpiryPeriod); + finally + Ini.Free; + end; + end; +end; + +procedure TMainForm.BFetchTaskListsClick(Sender: TObject); + +var + Entry: TTaskList; + Resource : TTaskListsResource; + EN : String; + + i:integer; +begin + LBTaskLists.Items.Clear; + FreeAndNil(FTaskLists); + Resource:=Nil; + try + LoadAuthConfig; + Resource:=FTasksAPI.CreateTaskListsResource; + FTaskLists:=Resource.list(''); + SaveRefreshToken; + if assigned(FTaskLists) then + for i:= 0 to Length(FTaskLists.items)-1 do + begin + Entry:=FTaskLists.items[i]; + EN:=Entry.title; + LBTaskLists.Items.AddObject(IntToStr(i)+': '+EN,Entry); + end; + BFetchTasks.Enabled:=LBTaskLists.Items.Count>0; + finally + FreeAndNil(Resource); + end; +end; + +procedure TMainForm.BSetAccessClick(Sender: TObject); +begin + FAccessState:=acsOK; + GBAccess.Visible:=False; +end; + +procedure TMainForm.BCancelClick(Sender: TObject); +begin + FAccessState:=acsCancel; + GBAccess.Visible:=False; +end; + +procedure TMainForm.BFetchTasksClick(Sender: TObject); +var + Entry: TTask; + EN : String; + i:integer; + +begin + if LBTaskLists.ItemIndex<0 then + Exit; + LBTasks.Items.Clear; + FreeAndNil(FTasks); + FTasks:=FTasksAPI.TasksResource.list(FCurrentList.id,''); + SaveRefreshToken; + if assigned(FTasks) then + for i:= 0 to Length(FTasks.items)-1 do + begin + Entry:=FTasks.items[i]; + EN:=Entry.title; + if EN='' then + EN:=Entry.id+' ('+Entry.Status+')'; + if Entry.Completed<>0 then + EN:=EN+' (Completed :'+DateToStr(Entry.Completed)+')'; + LBTasks.Items.AddObject(IntToStr(i)+': '+EN,Entry); + end; +end; + +Procedure TMainForm.DoUserConsent(Const AURL: String; Out AAuthCode: String); + +begin + GBAccess.Visible:=True; + EAccessCode.Text:='<enter code here>'; + FAccessState:=acsWaiting; + OpenUrl(AURL); + While (FAccessState=acsWaiting) do + Application.ProcessMessages; + if FAccessState=acsOK then + AAuthCode:=EAccessCode.Text; + GBAccess.Visible:=False; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/google.ini lazarus-1.6+dfsg/components/googleapis/demo/tasks/google.ini --- lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/google.ini 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/tasks/google.ini 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,12 @@ +[Credentials] +ClientID=Your client ID +ClientSecret=Your secret key +Scope=https://www.googleapis.com/auth/tasks + +[Session] +;RefreshToken= +;AccessToken= +;TokenType= +;AuthExpires= +;AuthPeriod= +;AccessToken= Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/tasksdemo.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/tasks/tasksdemo.ico differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/tasksdemo.lpi lazarus-1.6+dfsg/components/googleapis/demo/tasks/tasksdemo.lpi --- lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/tasksdemo.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/tasks/tasksdemo.lpi 2015-05-09 15:13:23.000000000 +0000 @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="tasksdemo"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="laz_synapse"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="tasksdemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="frmmain.pp"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="MainForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="tasksdemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <OtherUnitFiles Value="../..;../../../base"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/tasksdemo.lpr lazarus-1.6+dfsg/components/googleapis/demo/tasks/tasksdemo.lpr --- lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/tasksdemo.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/demo/tasks/tasksdemo.lpr 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,21 @@ +program tasksdemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, frmmain + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/demo/tasks/tasksdemo.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/demo/tasks/tasksdemo.res differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAdexchangebuyerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAdexchangebuyerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAdexchangesellerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAdexchangesellerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAdminAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAdminAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAdsenseAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAdsenseAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAdsensehostAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAdsensehostAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAnalyticsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAnalyticsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAndroidenterpriseAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAndroidenterpriseAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAndroidpublisherAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAndroidpublisherAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAppsactivityAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAppsactivityAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAppstateAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAppstateAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAuditAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAuditAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TAutoscalerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TAutoscalerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TBigqueryAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TBigqueryAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TBloggerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TBloggerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TBooksAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TBooksAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TCalendarAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TCalendarAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TCivicinfoAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TCivicinfoAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TCloudlatencytestAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TCloudlatencytestAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TCloudmonitoringAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TCloudmonitoringAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TCloudsearchAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TCloudsearchAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TComputeaccountsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TComputeaccountsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TComputeAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TComputeAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TContainerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TContainerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TContentAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TContentAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TCoordinateAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TCoordinateAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TCustomsearchAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TCustomsearchAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDataflowAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDataflowAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDatastoreAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDatastoreAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDeploymentmanagerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDeploymentmanagerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDfareportingAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDfareportingAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDiscoveryAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDiscoveryAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDnsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDnsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDoubleclickbidmanagerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDoubleclickbidmanagerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDoubleclicksearchAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDoubleclicksearchAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TDriveAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TDriveAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TFitnessAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TFitnessAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TFreebaseAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TFreebaseAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TFusiontablesAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TFusiontablesAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGamesAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGamesAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGamesConfigurationAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGamesConfigurationAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGamesManagementAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGamesManagementAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGanAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGanAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGenomicsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGenomicsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGmailAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGmailAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGroupsmigrationAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGroupsmigrationAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TGroupssettingsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TGroupssettingsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TIdentitytoolkitAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TIdentitytoolkitAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TLicensingAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TLicensingAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TLoggingAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TLoggingAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TManagerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TManagerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TMapsengineAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TMapsengineAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TMirrorAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TMirrorAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TOauth2API.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TOauth2API.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TPagespeedonlineAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TPagespeedonlineAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TPlusAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TPlusAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TPlusDomainsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TPlusDomainsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TPredictionAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TPredictionAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TPubsubAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TPubsubAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TQpxExpressAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TQpxExpressAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TReplicapoolAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TReplicapoolAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TReplicapoolupdaterAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TReplicapoolupdaterAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TResellerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TResellerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TResourceviewsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TResourceviewsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TSiteVerificationAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TSiteVerificationAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TSpectrumAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TSpectrumAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TSqladminAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TSqladminAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TStorageAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TStorageAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TTagmanagerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TTagmanagerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TTaskqueueAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TTaskqueueAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TTasksAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TTasksAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TTranslateAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TTranslateAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TUrlshortenerAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TUrlshortenerAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TWebfontsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TWebfontsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TWebmastersAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TWebmastersAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TYoutubeAnalyticsAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TYoutubeAnalyticsAPI.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/googleapis/images/TYoutubeAPI.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/googleapis/images/TYoutubeAPI.png differ diff -Nru lazarus-1.4.4+dfsg/components/googleapis/lazgoogleapis.lpk lazarus-1.6+dfsg/components/googleapis/lazgoogleapis.lpk --- lazarus-1.4.4+dfsg/components/googleapis/lazgoogleapis.lpk 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/lazgoogleapis.lpk 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <Package Version="4"> + <Name Value="lazgoogleapis"/> + <Type Value="DesignTime"/> + <Author Value="Michael Van Canneyt"/> + <CompilerOptions> + <Version Value="11"/> + <SearchPaths> + <OtherUnitFiles Value="2_6_4"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Description Value="A package registering the Google API components present in FPC 3.1 and higher. +"/> + <License Value="Modified LGPL, with the usual exception of the Free Pascal project"/> + <Version Major="1"/> + <Files Count="1"> + <Item1> + <Filename Value="reggoogleapi.pp"/> + <HasRegisterProc Value="True"/> + <UnitName Value="reggoogleapi"/> + </Item1> + </Files> + <RequiredPkgs Count="2"> + <Item1> + <PackageName Value="LCLBase"/> + </Item1> + <Item2> + <PackageName Value="FCL"/> + </Item2> + </RequiredPkgs> + <UsageOptions> + <UnitPath Value="$(PkgOutDir)"/> + </UsageOptions> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <CustomOptions Items="ExternHelp" Version="2"> + <_ExternHelp Items="Count"/> + </CustomOptions> + </Package> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/googleapis/lazgoogleapis.pas lazarus-1.6+dfsg/components/googleapis/lazgoogleapis.pas --- lazarus-1.4.4+dfsg/components/googleapis/lazgoogleapis.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/lazgoogleapis.pas 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,21 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit lazgoogleapis; + +interface + +uses + reggoogleapi, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('reggoogleapi', @reggoogleapi.Register); +end; + +initialization + RegisterPackage('lazgoogleapis', @Register); +end. diff -Nru lazarus-1.4.4+dfsg/components/googleapis/README.txt lazarus-1.6+dfsg/components/googleapis/README.txt --- lazarus-1.4.4+dfsg/components/googleapis/README.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/README.txt 2015-05-09 15:25:35.000000000 +0000 @@ -0,0 +1,134 @@ +This package installs the Google APIs in Free Pascal 3.1 in the lazarus +component palette. + +Each Google Service API is a REST API that offers multiple resources. + +See the end of this file for instructions for compiling with FPC 2.6.x + +================== +Component overview +================== + +A Google API breaks down in 4 parts, all of which have a base class in the +following units: + +TGoogleClient - unit googleclient +--------------------------------- + +This is a simple component that handles the transport and authorization, +it needs a TFPWebClient descendent (such as TFPHTTPWebClient, available in +the weblaz package) and a TFPOauth2Handler descendent to communicate with +Google servers (the component creates a default one). + +These 2 classes are part of fcl-web, a synapse-based TFPWebclient descendant +is available separately. + +TGoogleAPI - unit googleservice +------------------------------- + +There is a descendent of this component for each Google service API, which +handles all calls to the service. It uses a TGoogleClient component to +handle actual communication. + +This class contains a method called ServiceCall which is used by all +resources in the API to execute service requests. It will use the client to +do the actual HTTP request. + +Each unit google*.pp in this package contains a single component that +descends from the TGoogleAPI component. + +TGoogleResource - unit googleservice +------------------------------------ + +For each resource exposed by the service, a descendent of this class is generated +that has all the methods for that resource, as described in the REST service +description. + +TGoogleResource uses an instance of the TGoogleAPI class to handle all calls to +the service. + +Each API unit google*.pp in this package contains one or more +TGoogleResource +descendents, used in the API of that unit. + +TGoogleBaseObject - unit googlebase +----------------------------------- + +For each data type used in the API, a descendent of this class is used: it is a +descendent of TBaseObject (unit restbase, part of fcl-web) and handles +loading from and saving to JSON. + +==================== +Demo programs setup. +==================== +The demo programs create the necessary API components in code, it is +therefor not necessary to install the lazgoogleapis package in the IDE, +it just has to be opened and compiled. + +There are 4 demo programs. Before they can be used, they must be defined in Google. + +The following procedure is not needed for the discovery demo, it does not +need authentication. + +You will need to: + +1. Have a google account + +2. Be registered as a google Developer. Just go to the google developer console at: + https://console.developers.google.com/ + +3. Register a new project in the console. + +4. Create a new client ID and Secret key under Credentials (APIs & Auth) + As a redirect URI, enter: urn:ietf:wg:oauth:2.0:oob + + The Client ID and secret key must be saved in the google.ini file in the example directory: + +[Credentials] +ClientID=Your client ID +ClientSecret=Your secret key +Scope=https://www.googleapis.com/auth/calendar + +The scope must match the API that is used. (the example files contain the +correct scope) + +5. Under credentials, request credentials (under APIs) for + Calendar API + Drive API + Tasks API + +You can re-use the same Client ID and secret for all examples, or you +can create different client IDs and keys, or even create different projects. + +======================== +Compiling with FPC 2.6.4 +======================== + +The code works with FPC 2.6.4. To work with FPC 2.6.4, you need the +following files from the FPC SVN repository (trunk): + +From packages/fcl-web/src/base: + +fpoauth2.pp +fphttpwebclient.pp +fpwebclient.pp +restcodegen.pp +restbase.pp +fpoauth2ini.pp +fpjwt.pp + +From packages/googleapi/src +All *.pp files + +There is a directory 2_6_4 to which the files can be copied. + +Additionally, in the directory 2_6_4 there is a unit synapsewebclient. +This unit implements a TFPWebclient descendent that works with Synapse. +It works with version 2.6.4, and with version 3.x of Free Pascal. + +You need to have compiled the laz_synapse package (distributed with synapse) +for this to work. + +To compile the package and the demos, copy the needed files to directory 2_6_4 and +add this directory to the source path of the lazgoogleapi package and all +demo programs. diff -Nru lazarus-1.4.4+dfsg/components/googleapis/reggoogleapi.inc lazarus-1.6+dfsg/components/googleapis/reggoogleapi.inc --- lazarus-1.4.4+dfsg/components/googleapis/reggoogleapi.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/reggoogleapi.inc 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,1797 @@ +LazarusResources.Add('TAdexchangebuyerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0'3PLTE'#255#255#255#167#182#145#171#196'4'#172#207 + +#10#181#216#9#249#251#247#169#204#1'k'#161#24#147#187#21#23'p+'#0'R0'#144#168 + +'M'#0'W/W'#146'[%'#139'()'#144'+'#255#255#255#136#186#245#168#0#0#0#1'tRNS'#0 + +'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0#9'pHYs'#0#0#0'H'#0#0#0'H'#0 + +'F'#201'k>'#0#0#0'qIDAT'#24#211'M'#143#219#18#196'0'#4'@#'#216'6*'#252#255 + +#223#150#220#186'g<'#196#17#140'R'#18#168'H'#21#202#1#136#16#137#224#203'19' + +#134#235#20#209#197'S'#252#178#154']'#184#5#225#21' '#29'q7'#9#218'MS'#148'G' + +'E%'#162'=kK'#215#129'h_['#172'e&j'#182'f'#152'['#11#236#136'x'#250#136#191 + +#31#3#247#181#5'l'#137'}'#12'w'#31#245#206#251':'#6#143't'#214'_;`'#5'wu'#152 + +#17'1'#0#0#0'%tEXtdate:create'#0'2015-05-03T15:39:58+02:00'#18'c'#6'a'#0#0#0 + +'%tEXtdate:modify'#0'2015-05-03T15:39:58+02:00c>'#190#221#0#0#0#0'IEND'#174 + +'B`'#130 +]); +LazarusResources.Add('TAdexchangesellerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0'3PLTE'#255#255#255#167#182#145#171#196'4'#172#207 + +#10#181#216#9#249#251#247#169#204#1'k'#161#24#147#187#21#23'p+'#0'R0'#144#168 + +'M'#0'W/W'#146'[%'#139'()'#144'+'#255#255#255#136#186#245#168#0#0#0#1'tRNS'#0 + +'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0#9'pHYs'#0#0#0'H'#0#0#0'H'#0 + +'F'#201'k>'#0#0#0'qIDAT'#24#211'M'#143#219#18#196'0'#4'@#'#216'6*'#252#255 + +#223#150#220#186'g<'#196#17#140'R'#18#168'H'#21#202#1#136#16#137#224#203'19' + +#134#235#20#209#197'S'#252#178#154']'#184#5#225#21' '#29'q7'#9#218'MS'#148'G' + +'E%'#162'=kK'#215#129'h_['#172'e&j'#182'f'#152'['#11#236#136'x'#250#136#191 + +#31#3#247#181#5'l'#137'}'#12'w'#31#245#206#251':'#6#143't'#214'_;`'#5'wu'#152 + +#17'1'#0#0#0'%tEXtdate:create'#0'2015-05-03T15:39:58+02:00'#18'c'#6'a'#0#0#0 + +'%tEXtdate:modify'#0'2015-05-03T15:39:58+02:00c>'#190#221#0#0#0#0'IEND'#174 + +'B`'#130 +]); +LazarusResources.Add('TAdminAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:39:58' + +'+02:00'#18'c'#6'a'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:39:58+02:00c>' + +#190#221#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAdsenseAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#0#238'IDAT8'#203'c'#252#255#255'?'#3'%'#128#137#129'B'#192#2'"'#194'&}[' + +#6'tH'#228'?'#16#231'?'#24'1'#252#251#143#139#13'a'#252#253#207#176'hg9w<' + +#216#5' '#205#249'N'#223#192'&'#22'8'#127'c'#192#229'+d'#239'220'#196#193#189 + +#0#18#238#223#199#5'f'#244#239#229'Bh'#128#24#142'i'#16#186#23#146#213#143'2' + +#232#234'h'#194#21#179#176#176'0pss'#225#244'7'#200'%'#7#15#31#3#178'<!'#6 + +#128#244#241#241#241'1'#220#184'q'#3#167#147#145#197'455'#201#139#5'l'#6#178 + +' Khhh'#144'l'#8#11'2'#231#250#245#235'X5'#129#156#236'u'#162#23#18#133'@' + +#176#221#162#24#30#148'L'#152#225#138#195'f'#12#151' '#133#1#190#212#12's2' + +#156'f'#192#225#133'?'#127#254#160#132'.'#186'!'#16'g#'#212#162#24#192#198 + +#202#178#245#232#241'S'#222'Xt'#162#217#247#31#238'Z6V'#214#205#224#20'9'#224 + +#185#17#0'~'#247'{'#193#157#183#204#190#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAdsensehostAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#0#238'IDAT8'#203'c'#252#255#255'?'#3'%'#128#137#129'B'#192#2'"'#194'&}[' + +#6'tH'#228'?'#16#231'?'#24'1'#252#251#143#139#13'a'#252#253#207#176'hg9w<' + +#216#5' '#205#249'N'#223#192'&'#22'8'#127'c'#192#229'+d'#239'220'#196#193#189 + +#0#18#238#223#199#5'f'#244#239#229'Bh'#128#24#142'i'#16#186#23#146#213#143'2' + +#232#234'h'#194#21#179#176#176'0pss'#225#244'7'#200'%'#7#15#31#3#178'<!'#6 + +#128#244#241#241#241'1'#220#184'q'#3#167#147#145#197'455'#201#139#5'l'#6#178 + +' Khhh'#144'l'#8#11'2'#231#250#245#235'X5'#129#156#236'u'#162#23#18#133'@' + +#176#221#162#24#30#148'L'#152#225#138#195'f'#12#151' '#133#1#190#212#12's2' + +#156'f'#192#225#133'?'#127#254#160#132'.'#186'!'#16'g#'#212#162#24#192#198 + +#202#178#245#232#241'S'#222'Xt'#162#217#247#31#238'Z6V'#214#205#224#20'9'#224 + +#185#17#0'~'#247'{'#193#157#183#204#190#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAnalyticsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#1'!IDAT8'#203#165#147#187'N'#195'@'#16'E'#243'#$R(A"'#162#164#162'EB' + +#162#3'":'#144#232'PJ'#138'T'#249#4':HPp'#7#138'B'#3#5#31'A'#149'*|'#0#165'#' + +#237'zm'#188#27#7'_v'#214#207#24'B^#'#29#143#180#235'{<S'#184#4#160#180#14 + +#230#225#223'nX'#26','#137#149#23'`'#21#150#22#168#254#129#192'X'#216#212#231 + +#11#238'~'#131#239#192#163#148#238#174'z9'#254'G@'#129'6Q'#134#223')'#155'.' + +#173'm`'#162'|J'#133'.c'#136'*'#19#164#227'='#235#241'(L'#193#251#140#201'G' + +#207#198'X'#249#252#162#6'vR'#133#219#170'g'#2#217#221#202#143#231#201#199 + +#189'('#216#173'@>T'#160#222#206#204#149'ws'#229#177#211#170#17#16#169' t>GH' + +'J'#127#133'$'#193#160#195'M'#248'i'#7#161#226'<'#24#190#219#172#190#137'?'#5 + +#20#18#215#135#209#133'~A'#190#182#163#29#227#157#169#156#203']'#204#20#240 + +#243'Zz'#152'H'#156#198#190#22#196'k'#233'^'#12'O'#9#166#194#177#128#16#205 + +'#'#17'~'#185'#'#234#201#217'b'#130#130#168#24'\\0'#135#188#192'ZA'#144#253 + +'L'#235#240#3#30#237#210#145'n'#148#24' '#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAndroidenterpriseAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#9'PLTE'#170#202'E'#164#198'9'#255#255#255'f'#249'?)'#0#0#0#3'tRNS'#255#255 + +#0#215#202#13'A'#0#0#0'7IDAT'#24'Wc`'#2#2'F&&8'#197#0'a20'#2#1#19'\'#128#145 + +#9#204#135#171'`'#132#3'\'#2'('#128#129#145#17'Y'#5'##U'#4#136't'#7#136#137 + +#236#23#188#2#0#201#146#1'xt'#166#246'Q'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAndroidpublisherAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#9'PLTE'#170#202'E'#164#198'9'#255#255#255'f'#249'?)'#0#0#0#3'tRNS'#255#255 + +#0#215#202#13'A'#0#0#0'7IDAT'#24'Wc`'#2#2'F&&8'#197#0'a20'#2#1#19'\'#128#145 + +#9#204#135#171'`'#132#3'\'#2'('#128#129#145#17'Y'#5'##U'#4#136't'#7#136#137 + +#236#23#188#2#0#201#146#1'xt'#166#246'Q'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAppsactivityAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:39:59' + +'+02:00'#180#20#13#213#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:39:59+02:00' + +#197'I'#181'i'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAppstateAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:39:59' + +'+02:00'#180#20#13#213#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:39:59+02:00' + +#197'I'#181'i'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAuditAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:39:59' + +'+02:00'#180#20#13#213#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:39:59+02:00' + +#197'I'#181'i'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TAutoscalerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:00' + +'+02:00'#188'Bx+'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:00+02:00'#205#31 + +#192#151#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TBigqueryAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:00' + +'+02:00'#188'Bx+'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:00+02:00'#205#31 + +#192#151#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TBloggerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#4#3#0#0#0#237#221#226 + +'R'#0#0#0#30'PLTE'#255#255#255#255#153'3'#255#255#255#255#249#242#255#153'3' + +#255#179'f'#255#230#204#255#185's'#255#223#191#255#198#140#129#18'-8'#0#0#0#2 + +'tRNS'#0#239'F&2'#209#0#0#0'=IDAT'#8'[c`'#128#1'F'#23'0'#16'``'#129'0'#28#144 + +#25#197'Jj'#16#134#145#146#210#20'0C'#201#197#169#5#194#0#2'4'#134#139#139#18 + +'L'#177'2'#152#17#172#164'd'#138'j '#148#1#183#20#6#0#174#17#23#153#246#157 + +#247#236#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TBooksAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#4#3#0#0#0#237#221#226 + +'R'#0#0#0#15'PLTE'#255#255#255'MMMMMM'#153#153#153#224#224#224'@WN3'#0#0#0#2 + +'tRNS'#0#239'F&2'#209#0#0#0'+IDAT'#8'[c`'#128#3'!% P'#4'2T\'#128#192#9#196'0' + +#6#2'''*'#136#192#24'J`'#0'f('#27#129#25'pK'#161#0#0#215#198#16#172#235#191 + +'9'#147#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TCalendarAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#4#3#0#0#0#237#221#226 + +'R'#0#0#0'!PLTE'#255#255#255#0#0#0#160#195#255'C'#135#253#160#195#255'/^'#177 + +'7m'#206#242#242#242'C'#135#253#161#195#254#231#235#243#246#199'H'#9#0#0#0#4 + +'tRNS'#0#0#159#239'u'#255#15#166#0#0#0'IIDAT'#8'[c`'#128#1#230#14'00`'#224 + +#232#152#209#209#209#217#209#0'd'#128#1'vF{U{'#5'D'#164#189#3#202'('#239'@' + +#19'i'#175#130#137'tt'#164#184'('#128#25'm!N'#2'`Fj'#136#162#0#200#210#182 + +#208' A'#1#184'+'#0#236#19'/'#18#192#171#240#24#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TCivicinfoAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:00' + +'+02:00'#188'Bx+'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:00+02:00'#205#31 + +#192#151#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TCloudlatencytestAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:07' + +'+02:00y'#229'F'#165#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:07+02:00'#8 + +#184#254#25#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TCloudmonitoringAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:00' + +'+02:00'#188'Bx+'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:00+02:00'#205#31 + +#192#151#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TCloudsearchAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:08' + +'+02:00'#143#173'6L'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:08+02:00'#254 + +#240#142#240#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TComputeaccountsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#2'/IDAT8'#141'u'#147'Ko'#18'Q'#24#134'I'#252#3',uGL'#189'l'#148'X'#171 + +#189'(:^'#230'P'#186#211#18#211#132'4'#153'M'#177'nu#'#141'q'#211#25#24'Iu' + +#26'5'#233'N'#127'@5'#196'k'#226'j'#214#154#216'1'#197'j'#193#212'Cm'#186#177 + +'2'#3#211#193#237#235'w'#14#136#128'e'#146'''9'#243#157#247'}'#128#25'N'#8'@' + +'h'#175'K'#213#189#176#170#215#180'&^x'#175#140#236#246#10'T'#221#141'P'#193 + +'R'#141#186'G@5|'#200#181'^'#179'h'#30#233'+`'#243'?'#21#166#255'*'#168#134#7 + +#150#173#131#229'v'#161#154#13'O'#146#11#232'^'#136'hO'#175#22#216#252#142 + +#210'%'#160#178'C'#128#25'U*'#215#192#204']'#206#204#134#246#226#202#140'"`' + +#247'~k'#204#12'8'#203#145#216'pA'#2#136'N'#167#128#204'4'#204'V'#29#150#171 + +')'#159#207#13'ik'#202')'#251#203#133#211#144#208'z'#237#252#144#22'7'#235#10 + +#203#186'N\'#151#2't'#9#226#198#14#226'9'#23#233#204'{'#254'rr'#6#235#151'FP' + +'V'#199'$'#165#203#163'x'#149'L#='#247#129#199'MOf'#187#4#143#166#238#242#169 + +';E'#140#155'.'#198#243'u$'#22#2#164#12#142#185#219#239',A'#202#168#208#172 + +'A{>e<'#136#236'c'#234#180#5#31#135#143#193#25#141'b'#249#234'u'#158#212'+vb' + +#193#199#196#131#0#19#139#141'&V'#128#196'}'#31'I}'#211'^'#158#156#229'"'#187 + +'B'#157#255#4#171#177'A^'#153#29#176#191'?;'#136#252#147'%\{'#184'%'#201'?]' + +#130#152'm'#222#24#176#139#177#147#252#211'X'#143'`='#21#225'+#'#199#177'z' + +#246#4#232#225#201#223#188'}'#243#16#202'V'#212'*/F'#173#237'['#135'Q'#162'g' + +'!'#30'h16(?'#172'D'#157#182' x'#29#130#255'|'#31'~d'#246#131#222#0#23'A!' + +#249#198#206'HD'#249#235#197'a'#208#155#224'['#153#3'2+:]'#130#224#141#196#9 + +#222#134#20#250#22#26'IlQ'#18#136#181#152#137'='#194#145#217#30#129#211'!'#1 + +#133'8'#161'mL'#31'Q6'#166#143#138#146#214#154#225'oYt'#186#254#202'4P'#136 + +'B'#135'D'#224#181#248''''#23#25#202#246'=L'#180#25#161#160'Ex'#237'Rs-f'#253 + +#15'S'#239'E'#162'0'#161#181#232'{'#156#255#0'<'#215'!'#160#16#167#196'U'#0#0 + +#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TComputeAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#2'/IDAT8'#141'u'#147'Ko'#18'Q'#24#134'I'#252#3',uGL'#189'l'#148'X'#171 + +#189'(:^'#230'P'#186#211#18#211#132'4'#153'M'#177'nu#'#141'q'#211#25#24'Iu' + +#26'5'#233'N'#127'@5'#196'k'#226'j'#214#154#216'1'#197'j'#193#212'Cm'#186#177 + +'2'#3#211#193#237#235'w'#14#136#128'e'#146'''9'#243#157#247'}'#128#25'N'#8'@' + +'h'#175'K'#213#189#176#170#215#180'&^x'#175#140#236#246#10'T'#221#141'P'#193 + +'R'#141#186'G@5|'#200#181'^'#179'h'#30#233'+`'#243'?'#21#166#255'*'#168#134#7 + +#150#173#131#229'v'#161#154#13'O'#146#11#232'^'#136'hO'#175#22#216#252#142 + +#210'%'#160#178'C'#128#25'U*'#215#192#204']'#206#204#134#246#226#202#140'"`' + +#247'~k'#204#12'8'#203#145#216'pA'#2#136'N'#167#128#204'4'#204'V'#29#150#171 + +')'#159#207#13'ik'#202')'#251#203#133#211#144#208'z'#237#252#144#22'7'#235#10 + +#203#186'N\'#151#2't'#9#226#198#14#226'9'#23#233#204'{'#254'rr'#6#235#151'FP' + +'V'#199'$'#165#203#163'x'#149'L#='#247#129#199'MOf'#187#4#143#166#238#242#169 + +';E'#140#155'.'#198#243'u$'#22#2#164#12#142#185#219#239',A'#202#168#208#172 + +'A{>e<'#136#236'c'#234#180#5#31#135#143#193#25#141'b'#249#234'u'#158#212'+vb' + +#193#199#196#131#0#19#139#141'&V'#128#196'}'#31'I}'#211'^'#158#156#229'"'#187 + +'B'#157#255#4#171#177'A^'#153#29#176#191'?;'#136#252#147'%\{'#184'%'#201'?]' + +#130#152'm'#222#24#176#139#177#147#252#211'X'#143'`='#21#225'+#'#199#177'z' + +#246#4#232#225#201#223#188'}'#243#16#202'V'#212'*/F'#173#237'['#135'Q'#162'g' + +'!'#30'h16(?'#172'D'#157#182' x'#29#130#255'|'#31'~d'#246#131#222#0#23'A!' + +#249#198#206'HD'#249#235#197'a'#208#155#224'['#153#3'2+:]'#130#224#141#196#9 + +#222#134#20#250#22#26'IlQ'#18#136#181#152#137'='#194#145#217#30#129#211'!'#1 + +#133'8'#161'mL'#31'Q6'#166#143#138#146#214#154#225'oYt'#186#254#202'4P'#136 + +'B'#135'D'#224#181#248''''#23#25#202#246'=L'#180#25#161#160'Ex'#237'Rs-f'#253 + +#15'S'#239'E'#162'0'#161#181#232'{'#156#255#0'<'#215'!'#160#16#167#196'U'#0#0 + +#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TContainerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:01' + +'+02:00'#26'5s'#159#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:01+02:00kh' + +#203'#'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TContentAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:01' + +'+02:00'#26'5s'#159#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:01+02:00kh' + +#203'#'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TCoordinateAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:01' + +'+02:00'#26'5s'#159#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:01+02:00kh' + +#203'#'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TCustomsearchAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:01' + +'+02:00'#26'5s'#159#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:01+02:00kh' + +#203'#'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TDataflowAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:08' + +'+02:00'#143#173'6L'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:08+02:00'#254 + +#240#142#240#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TDatastoreAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:01' + +'+02:00'#26'5s'#159#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:01+02:00kh' + +#203'#'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TDeploymentmanagerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:01' + +'+02:00'#26'5s'#159#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:01+02:00kh' + +#203'#'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TDfareportingAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0'3PLTE'#255#255#255#167#182#145#171#196'4'#172#207 + +#10#181#216#9#249#251#247#169#204#1'k'#161#24#147#187#21#23'p+'#0'R0'#144#168 + +'M'#0'W/W'#146'[%'#139'()'#144'+'#255#255#255#136#186#245#168#0#0#0#1'tRNS'#0 + +'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0#9'pHYs'#0#0#0'H'#0#0#0'H'#0 + +'F'#201'k>'#0#0#0'qIDAT'#24#211'M'#143#219#18#196'0'#4'@#'#216'6*'#252#255 + +#223#150#220#186'g<'#196#17#140'R'#18#168'H'#21#202#1#136#16#137#224#203'19' + +#134#235#20#209#197'S'#252#178#154']'#184#5#225#21' '#29'q7'#9#218'MS'#148'G' + +'E%'#162'=kK'#215#129'h_['#172'e&j'#182'f'#152'['#11#236#136'x'#250#136#191 + +#31#3#247#181#5'l'#137'}'#12'w'#31#245#206#251':'#6#143't'#214'_;`'#5'wu'#152 + +#17'1'#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:02+02:00+'#221'i'#2#0#0#0 + +'%tEXtdate:modify'#0'2015-05-03T15:40:02+02:00Z'#128#209#190#0#0#0#0'IEND' + +#174'B`'#130 +]); +LazarusResources.Add('TDiscoveryAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#2'OPLTE'#162#213'y'#0'z?Q'#183'KI'#179'G'#231#228#213#16'S3'#228#225#209#239 + +#243#241#190#224#137#0#142';$'#135'7'#0'v/L'#180'H,'#167'Fe'#190'V'#0#127'0' + +#134#202'i,'#146'O'#15'{4'#0'a)]'#187'['#130#201'gP'#182'K'#1#152':T'#173'U' + +#239#244#241#16'V4R'#173'S'#137#198'`'#0'6'#21#15#136'<G'#150'K'#223#232#228 + +'{'#198'c'#0'P!M'#161'F'#27'h+'#237#235#223#21'~3z'#193'\l'#192'Z'#23'x2;' + +#155'B'#240#238#226'o'#194'\'#0#147':^'#187'Yb'#189'U'#133#202'h'#143#206'n' + +#161#212'y'#140#205'l'#131#201'k*'#145'NG'#175'M'#152#209'u'#0#136'<'#0#140 + +'<'#142#205'p'#198#227#141#6'm.'#221#226#209'|'#199'dS'#183'L'#4#154':V'#183 + +'U'#0'G%'#178#206#179'd'#189'V'#207#224#215' '#142'IB'#165'N&'#129'EK'#178'O' + +#163#213'zn'#189'Y'#10#139'2g'#191'X'#25#149'6'#19#147'4'#181#220#132#182#213 + +#185#176#218#129'v'#196'e'#172#191#166#207#220#214'i'#170'_'#207#225#215';' + +#173'J'#11#127'D'#14'N''@'#174'Lm'#193'`'#0'V)Z'#186'P '#155':q'#195']'#211 + +#210#194'0z=X'#185'O'#230#227#212#151#197#161#18#134'7V'#184'NP'#179'P'#0#143 + +';*'#167'E1'#169'G<'#159'D'#0'O'''#172#217'~'#5'='#25#0#144';'#167#215'|'#0 + +'8'#22#155#211'u'#237#234#221#155#210'uj'#188'X'#0'W'''#149#208't'#0#149':h' + +#191'X'#0'X(['#183'S'#234#231#217#0'z/'#0'p/'#234#232#218''''#144'M'#226#223 + +#207'U'#184'M'#28#162'A0}EP'#159'OE'#153'K]'#187'R'#136#203'j}'#194']K'#180 + +'HW'#154'm'#227#224#208#19#159'?'#127#174#148'2{F9pK0'#160'G'#184#221#133#169 + +#216'}_'#188'SQ'#147'T1{E'#173#216#127'N'#179'Q'#183#220#131#154#210'tO'#181 + +'J"'#164'C'#130#198'i0lO'#0'r:'#146#186#153'`'#177'`'#161#210's['#186'Q'#12 + +#157'=Q'#166'^'#159#194#174#232#230#215#14'_/,'#146'Q'#0'X''M'#181'I'#0'd+'#0 + +'N!'#139#199'ay'#197'a0sP*'#135'J'#14'r7h'#191'^'#182#220#131#7#134'A0jNTqX' + +#171#216'~c'#180'Yx'#197'f_'#184'T'#137#204'k'#0't.'#159#212'w'#23#156'@'#240 + +#239#227'H'#179'F$~C'#255#255#255#250#198'0'#191#0#0#0#197'tRNS'#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#0'4V'#199#145#0#0#1#6'IDAT'#24'Wc8'#178#190#203'{OFt'#246#220'>' + +#135#202'#@'#192' '#179'x'#214#12'/s+'#147#221'1'#210#7#10'@'#2#234'['#173'9' + +#150#9#154'6.'#218#155#148#147#9#18'('#219#201'1y'#218#132#233#173'a'#2'vZ' + +#156' '#129#26#163#128#160')'#12#165#18'i'#220'Bj'#150' '#1#207#138#188'B' + +#134'bw'#185'T'#231#133#155#133'A'#2#17#193#12#251'g'#207#227#15'<X'#178'"dm' + +'8P'#128'7+'#222#207#223#167'N['#181#129#165'W'#169#31'('#208'"bh'#220#185'k' + +#159'm-'#11'['#226#186#229'@'#129#165'['#12'D'#221#24#235'{R'#216#154'v'#148 + +#187#2#5#196#245#20'7'#180#201#183#219#172#156#24#181#186'z'#163#228#17#6']' + +#199#4#29#141'*'#23'e'#149'"'#217#252#216#220#249#236#12#156'3}'#249#244#167 + +#198#165#139'u'#31#226'Z '#229#180#157#193#194#172'cIr3'#211#26#230'C'#135 + +#184#24'CYY'#25#182'M'#178'g'#154#195#3#228#30':'#164#25'y'#132']'#129#225 + +#200'*'#143#195'P'#176#9#228'}'#0#195#234'o'#139#232#141#205#221#0#0#0#0'IEN' + +'D'#174'B`'#130 +]); +LazarusResources.Add('TDnsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:02' + +'+02:00+'#221'i'#2#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:02+02:00Z'#128 + +#209#190#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TDoubleclickbidmanagerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:02' + +'+02:00+'#221'i'#2#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:02+02:00Z'#128 + +#209#190#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TDoubleclicksearchAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:02' + +'+02:00+'#221'i'#2#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:02+02:00Z'#128 + +#209#190#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TDriveAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#2'+IDAT8'#17#165#193'1k'#157'u'#20#199#241#239#239#156#255#243#220#155 + +'6'#137'UP'#180#136'\'#7'W'#177'X'#169#147'$ '#8#190#132'Z'#165#1#29#133'f' + +#247'%'#8#17'W-'#185#136't'#237#11'ph'#16'7'#145#198#165#184'HCE'#177#162'$8' + +#180#230'>'#207'9'#199'+'#205#16#234#216#207'GU'#197#147#16#143#233#191#184 + +#252#218#205#23'~'#189#189#249#212'1HH'#134'$'#144#144'ta'#242#230#183#251 + +#156'b'#252#223#206''''#247#159'!R'#152'5'#204#27#242#14#179#134#228';<'#198 + +'8e'#242#229#229#171#146'6'#238#12'S'#190#254's'#21#153'#k'#152'5'#228#29#242 + +#182'1|'#255#246'UN'#17''''#166#187'W'#206#9'n'#131'f'#202'b'#253#225'1?'#188 + +'z'#200'sg'#28#153'#'#1'UT'#198'AU]'#232#222#248#230#136'%'#227#132'L'#215 + +#228'6s7Z'#215'x'#224#29#159#254#190#134#172'!k'#200';'#228#14#210#12#234#26 + +''''#196#210#202'W'#239#207#132#238#154#11#199'0'#132#29#7#150#28#252#246#250 + +'!&'#155'IP5R1'#144'1R'#21'/O.'#237#29#24#143#236#200#132#153'0'#23#230#194 + +#187#134#155'o'#129'mUAfP'#153'T'#21'TA'#230#14'K'#154#206#175'l'#200't'#203 + +#205#240'f'#152#12'/a'#139#218#251#227#131#235#155','#253#245#221#187#183'\' + +#177#225'J'#154#5'FP'#25'T'#198'f#k'#23'AU'#145#153#252'G'#9'Dnq'#162'r'#216 + +'ZD'#220#29#135#145'1'#130#222#147#190'%'#157#179#171#201#245#247#14'e:'''#19 + +'f'#194#16'/'#254#248'1+<K'#215'M'#232#167#171#128'x'#233#204#207#244#252#205 + +#24'A'#12'#'#153#129'+'#142'ZUm'#147#236#178#148#9#171#247'/'#226#255#172#195 + +#138#227#253'Y'#204#28#201#184#247#240#21#134'1X'#12'#'#195'02'#12#3'Tm'#219 + +#226#195#27#243#202#218#207'HX'#244#172#255#242#22'j'#19#212#175'Q'#24'`'#152 + +#25'&'#3#4#18#146#16#236#255#244#249#249#185#241#200'6'#5'O'#223'{'#7'c'#29 + +'ug'#169#132#172'"2'#137'H"'#139#172#162#10#10#144#180#205#146#177#180#248 + +#232#198'^'#255#224#252'|'#237#232#18#242')'#17'Id2'#142#201'b'#12#142#135'`' + +'1'#142'D$'#153#9'U'#243';'#159'='#191#199#146#170#138''''#241'/'#153#187#252 + +#179' '#208#170#216#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TFitnessAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:02' + +'+02:00+'#221'i'#2#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:02+02:00Z'#128 + +#209#190#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TFreebaseAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0'3PLTE'#255#255#255#242'g"'#248#179#144#246#151'g'#253#226#213#244#132'L' + +#245#141'Y'#252#217#200#253#236#227#249#188#158#247#160'u'#248#170#131#244'z' + +'>'#254#245#241#250#198#172#243'q0'#251#207#186#200'E'#20'('#0#0#0'aIDAT'#24 + +#25#141#193#209#14#2'!'#12'E'#193's[('#133']\'#255#255'ke'#163#137'<'#25'g' + +#248#203#180'*'#213#163'@Ze'#25#250#26','#167't'#234#163#3'i'#9#148#238#17 + +#222#184#229#195#204#218'dI'#22#215'['#141#168#1#164'6'#7#208#165'0'#179#208 + +'r5'#192#165#228'VZa'#153'Re'#247#148':'#187'!'#21'v'#30#206'O/'#16#224#1#215 + +'('#195#223#141#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TFusiontablesAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:03' + +'+02:00'#141#170'b'#182#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:03+02:00' + +#252#247#218#10#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TGamesAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:03' + +'+02:00'#141#170'b'#182#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:03+02:00' + +#252#247#218#10#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TGamesConfigurationAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:03' + +'+02:00'#141#170'b'#182#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:03+02:00' + +#252#247#218#10#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TGamesManagementAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:03' + +'+02:00'#141#170'b'#182#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:03+02:00' + +#252#247#218#10#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TGanAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#216'PLTE'#255#255#255#212'>3'#212'>4D'#134#249#218'D:'#245#183#0#245#183#0 + +'D'#134#249'E'#133#243#247#187#0'D'#134#249'D'#134#249'D'#133#245#247#185#0 + +#245#183#0'E'#133#243#218'D:'#214'@5'#212'>3'#248#189#0#247#185#0#228#175#0 + +#221'x'#23'D'#134#249#247#185#0#189#152#19'C'#129#235#212'>4'#247#187#0#232 + +#160#9'D'#134#249'D'#133#246'D'#134#249#178'Uj'#217'C8'#215'A6'#210'<2'#249 + +#191#0#248#189#0#247#187#0#247#185#0#230#176#0#224#172#0#212#170#24#146#137 + +'L'#209'w'#21#209'x'#21'D'#134#249'D'#135#247'D'#133#245'D'#133#246'E'#133 + +#243'C'#130#237'_~'#161'A'#127#235'H~'#214'Rt'#206':q'#208'@h'#188#136'W'#127 + +#218'D:'#217'C8'#217'B6'#196'GI'#215'A6'#214'@5'#212'>3'#212'>4'#210'<2'#204 + +'<1'#194'90'#184'6-'#191'"-#'#0#0#0'%tRNS'#0#17#17'""DUUUffww'#136#136#153 + +#153#153#153#170#187#187#187#187#204#204#204#204#221#221#221#221#238#238#238 + +#238#238'c`'#243't'#0#0#0#163'IDAT'#24#25#5#193#189'J'#195'`'#20#0#208'so' + +#210#152#198'B'#177#5'E:'#11#142#190#255#164#147#239#224' .'#214'AH'#253#15 + +#213'$'#159#231#0#0#8#160'^mv'#241#220#191#207#2'U'#187#234'v!2'#30#246#165 + +#166';_["'#195#245#208#167#147#171'5s'#17'p#] '#198#146'I'#22#210'YD'#164'r' + +''''#144'Rdf)'#247'n'#155'EzR;l'#208'\'#142#237'K'#225'Ce'#218'R'#13'm'#179 + +#24#231'i'#254#254'I_'#143#153'1'#253#133#192'Q'#197#241'0'#213'c'#8#194#235 + +'\a'#252#156#187#8#17#246#131#0#150#219#211#240#214#255#2#0#0#0#192'?'#232')' + +'4'#166#172#134'|'#228#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TGenomicsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:03' + +'+02:00'#141#170'b'#182#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:03+02:00' + +#252#247#218#10#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TGmailAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#2#170'IDAT8'#17#165#193'Oh'#28'U'#28#192#241#239#239#189'7'#155#233'N' + +#227#12#153#198#198#154#232'&h+Z-'#214#156#244#226']J)T'#171'VQAs'#241#15'4b' + +#171#130#198'[Q'#16#17'r'#177#8'z('#30'*'#130#210#139#226#189#136#244'f'#144 + +#160#136#21'[K'#133#237'f'#135#217#221#217#157'y'#239''''#17'*'#222#251#249 + +#136#170'r3'#228#202#242#236#177#241#201#245'C'#233#227'O'#12'}oKu\!'#214'rC' + +#8#1'D0"'#168#247#152'8'#198'e'#25#197'gg'#147'kgV'#206#187':_<'#205'w'#223 + +','#134#3#15#16#239#189#135'f0'#128#170#2'c'#216#166#170'l'#19'U'#164#221#198 + +'&'#9#227#205#159#241#223#158'#mu'#30'6'#131#217#133#142#217#252#137#242#165 + +#167#24'~}'#142'(Ipy'#142#168'b'#140#193'Z'#139#5'\'#158#227#146#132#193#151 + +'_'#208'?~'#152#214'/'#27'T;'#247't'#204#164#232'u'#187'K{'#9'MC'#245#230'k' + +#244#214'N'#18#138#2'73'#131#170#162#170#216#153#25'BQp'#253#237'U'#6#171'+8' + +#148#223':w'#177'q'#237#143#174#217'Q'#246'E"'#199#223#175#156#162#218#183 + +#159#240#233':'#221'g'#143'P]'#252#145'('#203#136#178#140#234#226#15't'#159 + +'>D'#243#201'Gp`'#153#171#171'k\'#158#140'h'#23'=q'#141#15'L'#151#5#233'c' + +#135#249#235#254#131'L'#175#191'O'#246#253'y'#250'/'#28#165'y'#239#3'D'#3#229 + +#187'o`'#138'>'#229#209'g'#24#158'x'#135'$'#207#217'u'#230'C&'#2#14#17'&u' + +#195#174'^'#151';'#247#223#203#165#215#215#168#246#221#199#173'_'#157'et'#234 + +'eP'#144#217'9'#186'+'''#168#143#28'c'#247#252'<'#173#223#127#229'r'#8#168#10 + +#142#16#216'V5'#158#184',Y'#202'n'#225#207''''#159#227#202#226#221#236#254'|' + +#157#224#149#238#139#175'2'#245#200#163#204#141'+'#166#250'[L'#148#255'8TA' + +#21#17#168'}'#192#214#19#238'P'#229#234#131#203'l'#237'9'#141#136#176#243#246 + +#5#210#178'O'#240#158#208'n#"'#160#138#0'NQ'#4#229#134'q]'#19'9G'#167#29#211 + +#155'_'#160'ij'#226'j'#136#7'D'#4'c'#12#30'0'#2#1#197#16#248#151#6'%'#132#128 + +#181#134#168#213#194'8G'#26'9ZMC'#29#2'"'#130#177#22#17#16'@D'#0#197#5'CnG#P' + +#165'55'#133#11#158'm'#222'{'#172#181#164'iJY'#150#168'*'#198#8'b'#12'"'#6'-' + +'K'#172#134#220#152'Qu'#161'N3l'#20'a'#141#193'7'#13'M'#211#224#189#167#174 + +'kB'#8#196'q'#140#136#224'}@'#189#7'#'#180#230'nc'#232#185#224'v'#244'Go]_\z' + +'^Eu<'#28#154'0'#30'+"'#252#159'1'#6'U'#197'{O]U'#26#192'%'#7#31#154#190#180 + +#177#249#177#168'*7'#227#31#226#198'C'#160'$z'#177'a'#0#0#0#0'IEND'#174'B`' + +#130 +]); +LazarusResources.Add('TGroupsmigrationAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0'cPLTE'#255#255#255'y'#197#252'l'#191#255']'#191 + +#255'I'#186#253'+'#177#255#19#172#255'7'#180#251'!'#175#255#16#171#255#31#175 + +#254#255#138#0#255#130#0#255'z'#0#255's'#0#255'm'#0#18#170#253#255'h'#0#22 + +#169#249#19#169#251#23#168#248#249'd'#1#24#168#247#165#219#249#253'}'#9#253 + +#150'9'#253#134'6'#27#167#244'0'#170#239'_'#186#238#254#216#181#252'u'#15#255 + +#255#255#151#145'r'#215#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5 + +#29'H'#0#0#0#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0'zIDAT'#24#211'm' + +#142#233#18#130'0'#12#6'#'#20#17#218'@'#211'R'#228#16'x'#255#183'$'#225'P9' + +#246#223#238'|'#153#9#192'='#143'(V'#201'3'#254'z'#196#158#190#178','#23#209 + +'Z'#27#131'X'#148#28#172'Z|'#11#196#193#29#131#245#213#239#162' '#178#222#165 + +#0#198#136#203' xW'#191'%'#224'6'#8#174#226#11'hZ'#6#177#236#186#160#234#254 + +#195#147#134'i'#145#136#228#191'aX'#31#27#167#197#255#24#207#1'.'#1'.ag'#6'~' + +#131#8'&'#213#11#155#186#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:03+02:00' + +#141#170'b'#182#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:03+02:00'#252#247 + +#218#10#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TGroupssettingsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:04' + +'+02:00H'#13'\8'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:04+02:009P'#228 + +#132#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TIdentitytoolkitAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:04' + +'+02:00H'#13'\8'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:04+02:009P'#228 + +#132#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TLicensingAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:04' + +'+02:00H'#13'\8'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:04+02:009P'#228 + +#132#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TLoggingAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:08' + +'+02:00'#143#173'6L'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:08+02:00'#254 + +#240#142#240#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TManagerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:04' + +'+02:00H'#13'\8'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:04+02:009P'#228 + +#132#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TMapsengineAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#141'PLTE'#255#255#255#179#181#183#179#181#183#173#175#178#179#181#183#209 + +';1'#179#181#183#173#175#178#171#173#176#209';1'#184#145#144#179#181#183#176 + +#178#181#211'=3'#179#181#183#176#178#181#179#181#183#173#175#178#179#181#183 + +#176#178#181#181#174#175#173#175#178#187#170#171#184#166#167#190#163#163#186 + +#160#160#189#144#142#193#138#135#198#134#130#202#129'|'#195#130#127#197'{w' + +#199'to'#203'e^'#201'c\'#216'WM'#212'RI'#220'QF'#216'KA'#220'H<'#219'E:'#211 + +'G='#216'C9'#213'@4'#211'=3B'#21#17'A'#19#17#164#197#29#185#0#0#0#18'tRNS'#0 + +#17'""DUfff'#136#170#204#204#204#221#221#238#238'+M'#2#255#0#0#0#130'IDAT'#24 + +#25#5#193#209'J'#195'@'#16#0#192#217#189'k'#212#182#1#193#255#255'?}P'#168 + +#146'T'#233#222#197#25#0#0#13#150#181'U\/'#199'@ _A'#228#215#160'c'#214#249 + +#210#163#182'}'#160#163'?'#175#201'r'#154'['#209'x{zYD'#202#153#215']'#2'qj' + +#196#129#14'G'#8#204'@'#231#179#231#185#151#152#251#173'H'#212'c#'#220#30#133 + +'D[~'#239#225#254#183'4$'#198#247#252#16#239#243'g'#0'`]'#1#29'P'#0#29'P'#0#0 + +#0#254#1#199#162','#249#8'F'#3#19#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TMirrorAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:04' + +'+02:00H'#13'\8'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:04+02:009P'#228 + +#132#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TOauth2API','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:04' + +'+02:00H'#13'\8'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:04+02:009P'#228 + +#132#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TPagespeedonlineAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#0#232'IDAT8'#203'cpj'#253#210#0#196#255#241#224#5#12#248#0#1#205#132#13 + +'!'#210#0'\'#184#129'R'#3#254#131#13#0#1'd'#250#205#231#127'Da'#184#1#20#187 + +#128'X'#27'q'#186#0'Y'#240#225#155#191#255#167#239#249#249'?|'#210'W'#184'- ' + +#246#194#195#191#8#27'p'#230#222#159#255'>'#221#8#141#137'3'#191#193#249' z' + +#251#133#223#184#13#184#254#244'/\q'#249#242#239'`>L'#225#193#235#191#255'?y' + +#245#229#255#202'5'#155#254'O'#152'4'#21#187#1#141#235'~'#128#5'@4'#178'-' + +#183#31#190#254'?c'#246#252#255'iii'#255#235#27#154#254'?<}'#233#255#227#217 + +#179'P'#13#0#249#27#230'L'#16#27#166#25#166#17#166#25#228#138';~'#206#255#239 + +#165#196#160#26#0'r"6'#219#209'5'#131#196#238#231'g'#252#191#237'b'#254#255 + +#213#221#167#132#163'q'#215#190#163'`'#127#195'4'#19#21#141#228#164#131#6'J2' + +#19#0'Gu'#255'-'#207'='#209#28#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TPlusAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#2#0#0#0#144#145'h6'#0 + +#0#1#179'IDAT(S'#149#206#221'+Cq'#24#7#240#223'?'#226#31#192'^'#216'P'#242 + +#178#217'f'#12'EC'#137#16'7JJ'#228#142'(%'#19#229#134'['#238#184#145#18#17 + +#181'"'#145'f'#231#216#206#12#231#204#202#204'p'#140#205#203#216#177#237#204 + +#195#163'9^n'#156'>'#157#158#239#239#251'{N'#135#156'V'#228#253#11#241#152'r' + +'S'#24#163#154'2'#168#246#245#217#200'eTK['#244#185#192#153'r'#233#214#154 + +#144'uU8'#243#138#130#144#252'x'#30#183'6'#254'X'#224#202's'#192'I'#157#238 + +'5t'#199'O'#141#193#236#235'l'#140'='#132'y'#235#154#167'*'#31'[)'#194#150 + +#169#129#223'2'#0#159#228#234#13#24#3#179#211#16#189'm5'#24#165#200#177'Q'#5 + +#252#195'}'#239#11#3#221#24#217#193#158'D4'#202#154'5'#24#161#194#1#144'#C68' + +#169#204#23'.'#253#17'/G'#153'u'#187#165'9'#193#245#229#139#209'~'#172#246'4' + +#10'X'#128'7F'#226#214'g!'#174#209#20'ZYxb'#232#196#171#224#155#30#199#195 + +#228#247#7'N'#136'K'#167'D'#206#18#165']+?h'#170#20#19#137'0C'#239#155'u'#169 + +#10#174#166'f'#194#148'('#192#174'F~4'#212#199'/'#206#241#243'3'#145'CGR'#20 + +#163#193#27'WG'#3#182#176#128#3' N'#173#220'V,'#11#172'-'#133#182#173'L'#169 + +#26'"`'#219'k_'#252'>'#129#191#198'(E'#28#197#178'='#173'R'#140#199'='#147'#' + +'0'#167'0'#189#29#241#199#7#135'V!='#4#132'.'#202#164'4'#242#151#171'@'#244 + +'6'#232#182#12#217#219#234'l'#13#21'p'#251#222'I'#157'O'#12'C'#251#3#161#10 + +'3'#128#187#185#250#222#182'#'#198'b'#240#187#241#231'Hxg'#147#237'j'#193#234 + +#7'b/H'#255'R'#152'A'#235'U'#223'N~!'#19#178#180#127'y'#3'2'#17#150#217#27 + +#128#169#1#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TPlusDomainsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#2#0#0#0#144#145'h6'#0 + +#0#1#179'IDAT(S'#149#206#221'+Cq'#24#7#240#223'?'#226#31#192'^'#216'P'#242 + +#178#217'f'#12'EC'#137#16'7JJ'#228#142'(%'#19#229#134'['#238#184#145#18#17 + +#181'"'#145'f'#231#216#206#12#231#204#202#204'p'#140#205#203#216#177#237#204 + +#195#163'9^n'#156'>'#157#158#239#239#251'{N'#135#156'V'#228#253#11#241#152'r' + +'S'#24#163#154'2'#168#246#245#217#200'eTK['#244#185#192#153'r'#233#214#154 + +#144'uU8'#243#138#130#144#252'x'#30#183'6'#254'X'#224#202's'#192'I'#157#238 + +'5t'#199'O'#141#193#236#235'l'#140'='#132'y'#235#154#167'*'#31'[)'#194#150 + +#169#129#223'2'#0#159#228#234#13#24#3#179#211#16#189'm5'#24#165#200#177'Q'#5 + +#252#195'}'#239#11#3#221#24#217#193#158'D4'#202#154'5'#24#161#194#1#144'#C68' + +#169#204#23'.'#253#17'/G'#153'u'#187#165'9'#193#245#229#139#209'~'#172#246'4' + +#10'X'#128'7F'#226#214'g!'#174#209#20'ZYxb'#232#196#171#224#155#30#199#195 + +#228#247#7'N'#136'K'#167'D'#206#18#165']+?h'#170#20#19#137'0C'#239#155'u'#169 + +#10#174#166'f'#194#148'('#192#174'F~4'#212#199'/'#206#241#243'3'#145'CGR'#20 + +#163#193#27'WG'#3#182#176#128#3' N'#173#220'V,'#11#172'-'#133#182#173'L'#169 + +#26'"`'#219'k_'#252'>'#129#191#198'(E'#28#197#178'='#173'R'#140#199'='#147'#' + +'0'#167'0'#189#29#241#199#7#135'V!='#4#132'.'#202#164'4'#242#151#171'@'#244 + +'6'#232#182#12#217#219#234'l'#13#21'p'#251#222'I'#157'O'#12'C'#251#3#161#10 + +'3'#128#187#185#250#222#182'#'#198'b'#240#187#241#231'Hxg'#147#237'j'#193#234 + +#7'b/H'#255'R'#152'A'#235'U'#223'N~!'#19#178#180#127'y'#3'2'#17#150#217#27 + +#128#169#1#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TPredictionAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#192'PLTE'#255#255#255#1#139#206#1#139#206#8#155#230#132#208#255'y'#205#255 + +'d'#198#255'R'#192#255'='#186#255')'#179#255#18#172#254#13#166#247#140#213 + +#250#30#154#216#24#165#240#9#158#236#14#142#206'#'#164#232'('#159#220#8#155 + +#230#2#141#211'/'#160#222#8#155#230#6#151#225#12#164#244''']'#128#1#139#206 + +#243#241#230'='#186#255'Y'#195#255'y'#205#255'%'#148#212'#x'#173'd'#198#255 + +#30#154#216#182#218#228#140#213#250'('#141#197#25#138#201#12#136#200#27#133 + +#193')~'#180'(m'#154'''Z|'#13#166#247#4#147#219#213#227#224#9#158#236's'#203 + +#255'R'#192#255#132#208#255'i'#200#255#20'p'#160'(i'#147' '#176#255#18#172 + +#254#3#144#214#14#142#206#238#236#223'#'#164#232')'#179#255'K'#184#246';'#184 + +#250#2#141#211#154'-'#162#30#0#0#0#21'tRNS'#0'D333DDDDDDD'#238#238'DDD'#238 + +#238#238#238#207#147'l '#0#0#0#199'IDATx^-'#203#213'v'#195'@'#12'EQ'#141#211 + +' '#148#7#193#200#12'aj'#255#255#175':'#169#189#223't'#214#21#24'/'#211#217 + +'|'#177'\'#173#223'&0'#216#216'^'#167#238#167#178#249#26'C'#223#142#129#252 + +#239'7'#189#189#211'J'#29'O'#172#161#213#183#5'S'#187#221#233'N'#135#225#15 + +'#'#180#18#8'f'#158#167#187#246'*s'#30#17'z6a'#222'a'#173'jY'#243'<'#163#233 + +#254#130'`'#161#242'L'#7#247#135#155'9I'#193#247#8#150#17'?'#224'#I}'#242#8 + +#11#215'E'#176#138#211#24#31#10'~'#173'e'#20#199#230'e]'#150#140#225'<'#147 + +'2'#184#8'!'#16#188#178#166'!'#4#183#129#157#8#227#29'&'#31#183#27#165'U"' + +#204#237';['#11#12#191':'#255#138''''#7#6#159#254#192#217#142#193'B'#163#231 + +#254#15'd'#172#26','#205'@'#198#192#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TPubsubAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:08' + +'+02:00'#143#173'6L'#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:08+02:00'#254 + +#240#142#240#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TQpxExpressAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:05' + +'+02:00'#238'zW'#140#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:05+02:00'#159 + +''''#239'0'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TReplicapoolAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:05' + +'+02:00'#238'zW'#140#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:05+02:00'#159 + +''''#239'0'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TReplicapoolupdaterAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:05' + +'+02:00'#238'zW'#140#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:05+02:00'#159 + +''''#239'0'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TResellerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:05' + +'+02:00'#238'zW'#140#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:05+02:00'#159 + +''''#239'0'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TResourceviewsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:05' + +'+02:00'#238'zW'#140#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:05+02:00'#159 + +''''#239'0'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TSiteVerificationAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:06' + +'+02:00'#223#146'M'#17#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:06+02:00' + +#174#207#245#173#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TSpectrumAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:06' + +'+02:00'#223#146'M'#17#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:06+02:00' + +#174#207#245#173#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TSqladminAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:06' + +'+02:00'#223#146'M'#17#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:06+02:00' + +#174#207#245#173#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TStorageAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#1'3IDAT8'#203'c`@'#3#135'o'#255#231#168'\'#249'W'#8#27'>|'#235'?'#7#3'>' + +#224#219#247'7'#205#169#253#207#127#167#246#191'8'#240#159#255'@5'#153'X5' + +#247'o'#255#195#238#210#254#251#191'3'#1#12'R'#211#190#241#15''''#134#1#158 + +']'#191#22#187#180#253#252#143#29#255'@'#225#3#213'.C'#209#28'9'#245#135':B' + +#209#15#2#24#162'&r'#242'O'#13#184#1#238#157#223'/'#18#214#8#194#223#225#180 + +'{'#199#247#203'`'#205'~='#223#130'!'#130'_'#193#146#184#192#161'k?'#193#180 + +'K'#235'W'#184#129'@'#189'a'#12#238#237'_'#159#192'm@'#146'$'#6#3#245'>c'#240 + +'h'#255#252#4'Y'#144#160#11#160#234'\[?'#255#7#234'}'#202#224#223#251'9'#200 + +#181#229'#I6C'#12#248#244#223#191#251'S(8'#28'<'#218'?^ '#217#144#250#199#151 + +#224#177#16'='#249#163#154'k'#203'{'#146#12#8#235'z'#164#129#146#22#188':' + +#222'-rmyK'#148'f'#183#250'{K1R'#226#212'='#223#216#221#129#6#184#17'aH'#199 + +#186#23#216'3U@'#215#155'4'#215#230#215#255'A'#24#155'F'#135#170'['#255#189 + +#27#239'd'#224#205#145#215#31#255'd'#171'Z'#242'^'#16#3'/'#253'(x'#246#214 + +'''vt'#245#0#255'''0l'#135#20#181#237#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TTagmanagerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:06' + +'+02:00'#223#146'M'#17#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:06+02:00' + +#174#207#245#173#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TTaskqueueAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#1#2'PLTE'#255#255#255'*U'#153'*U'#153'*U'#153'Z'#128#179'*U'#153'z'#149#189 + +'*U'#153'b'#140#194'In'#168#28'V'#160'"j'#180'Wz'#173'$W'#160'Vy'#172#135#159 + +#196'c'#132#177'8'#127#195'7y'#191'6u'#188#28'['#170#21'^'#179'*U'#153'q'#143 + +#185'G|'#183'Lt'#172'-v'#188#146#169#199#143#167#196#141#165#192#129#155#185 + +'j'#149#201#165#185#206#146#169#199'u'#145#176#18'q'#200#11'o'#203#209#219 + +#226#195#207#215#191#207#214#149#161#170#186#199#209#183#198#211#182#196#205 + +#181#192#203#173#183#194#171#182#193#165#176#187#138#175#207#195#208#220'D' + +#149#222'G|'#183#8'}'#220#29'n'#192#139#169#196#155#166#176#141#165#192#176 + +#193#212'u'#167#206'G'#171#240#144#157#166'@'#168#239'~'#154#188#138#150#161 + +'z'#149#189'k'#153#199'8'#161#236')'#161#239#155#174#198'n'#140#182'0'#153 + +#231'|'#135#143'T'#141#197'G'#141#210'('#139#218'Z'#128#179#178#191#201#30 + +#130#216#135#172#207#155#168#180'*U'#153#128#195#243#214#223#229#167#192#212 + +' '#137#223'<'#128#198')5'#245#177#0#0#0'%tRNS'#0#17'"33DDUfffwwww'#136#136 + +#136#136#136#136#153#153#170#170#170#170#187#187#187#187#221#238#238#238#238 + +#238#247'`'''#159#0#0#0#155'IDAT'#24#25#141#193#197#18#130'P'#20#0#208#11#136 + +#133#137#221#201#163#164#193#238#238#246#255#127#197'a`'#161';'#206#1'o'#136 + +'b'#24#254'$'#151'm'#12'~'#209'[3'#131#135#226'1'#12'\'#180'y'#249#12#152#179 + +#216' '#192#145#178'N'#26's'#155#237#228#18'8'#10'S'#196#188#212'N'#143#19#8 + +#176#5#4#22'='#245#163'*s<'#9#182#236'pqe'#140'}_'#225'x?'#0#158'n'#173'&' + +#250#1#173'7'#146#194#9#181' '#228'G'#143#183'etY'#173'#'#141#229#249'='#10 + +#24'E'#145'D'#147'E'#136#21#249#186#15'\X$W'#174'T'#19'8x'#241#5#23#197#19'R' + +';'#247#180'%'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TTasksAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#135'PLTE'#255#255#255#0#0#0#255#225#140#246#195'8'#251#251#249#254#254#253 + +#246#195'8'#253#253#252#248#213'u'#135#135#134#252#252#250#252#251#249#255 + +#225#140#249#214'v'#253#247#229#254#254#254#252#245#227#250#244#224'@@@LLL' + +#210#167'0'#253#252#251#182#182#181#248#212't'#246#199'D'#255#255#255#188#150 + +'+[S='#184#148'+'#230#229#229#239#232#213#254#253#253#217#216#215'ddc'#187 + +#150'+'#182#182#180#186#149'+'#211#168'1'#253#253#251#252#251#250#185#148'+' + +#182#146'*'#251#251#248#147#146#146#251#244#225'9'#236#157'-'#0#0#0#4'tRNS'#0 + +#0#159#239'u'#255#15#166#0#0#0'{IDATx^u'#203'W'#14#194'@'#12'E'#209'$c{Zz' + +#165#246'^'#246#191'>,'#12'#D'#196#253#178#143#244#162'q'#138'>%q'#28'3P(M~' + +#129#229#13'Y'#142#186'4)'#139'@6-Pwv>'#187'\'#5#242#2#215#250#222#172#218 + +#195#226#5#19#196#237#178#175'7@'#237'N@'#235#190#169#247#30#136#142'2)O'#157 + +#181'g'#168#248#20'0'#206'9'#15#183'!'#0#153#135#135#138#127#129#208'?P'#223 + +#160#162'QOJY'#8#12#20#159#179#129#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TTranslateAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0'KPLTE'#255#255#255#0#0#0#228#225#209'C'#135#253#160#195#255'C'#135#253#228 + +#225#209#141#140#134#127#169#237#242#242#242#198#215#245#231#235#243'}'#173 + +#254'7m'#206'YYYz'#168#250#133#175#249#165#195#247'imrD'#132#243'/^'#177#160 + +#195#255'Y'#148#252#218#219#212'jjh'#134#216#207#162#0#0#0#5'tRNS'#0#0#239 + +#239#159#217#131#240#218#0#0#0'jIDATx^e'#206'I'#18#194'@'#12'CQ'#28#144#221 + +'sF'#134#251#159#148'vT'#4#168'|'#175#252'V'#186#156#27#148#13#226'u'#240#167 + +#185#28#208#216#23'<3'#253#5'{'#153#254#195#178#130']w0{'#226#147'C'#8#170#0 + +#166'8'#17#2#16#28'RJ'#4#169#16#1#30#185#31'a'#171'"'#5's'#140'q&'#220#238 + +#189#146'G'#140#153#176'K'#129'G'#240#202#177#227#212#27#154#185#5'M'#232#14 + +'Ya'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TUrlshortenerAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#1'sRGB'#0#174#206#28#233#0#0#0' cHR' + +'M'#0#0'z&'#0#0#128#132#0#0#250#0#0#0#128#232#0#0'u0'#0#0#234'`'#0#0':'#152#0 + +#0#23'p'#156#186'Q<'#0#0#0#189'PLTE'#255#255#255#255#255#255't'#176#231'%' + +#135#221#223#236#248#244'@A'#248#0#0#234#0#1'+'#146#230#27#130#220'Z'#159#225 + +#250#191#192#217#0#0#208#224#242#22'}'#218#12'r'#211#243#249#246#4'i'#205#204 + +#29#11#168'P'#28')z'#205#161#197#234#143#190'co'#196'Bb'#192'AU'#186'@@'#178 + +'>4'#173'=9'#146'4'#131'<'#22'C'#136#210#233#244#232'l'#192'd'#28#164'<'#17 + +#160':'#18'_'#182#197#213#234#152#211#148'H'#182'?'#135#167#208'('#169'<'#9 + +#156':Nv'#176#1#152'9'#252#247#231#246#229#175#248#218#151#242#211'p'#249#196 + +#9#186#225#195#242#184#13#239#179#18#247#221#173#195#228#207#0#147':'#240#179 + +#21#243#177'"'#176#220#194#253#249#242#244#189'SP'#180'x'#0#141';q'#189#146 + +#179'r,'#160#0#0#0#1'tRNS'#0'@'#230#216'f'#0#0#0#1'bKGD'#0#136#5#29'H'#0#0#0 + +#9'pHYs'#0#0#0'H'#0#0#0'H'#0'F'#201'k>'#0#0#0#191'IDAT'#24#211'='#205#233#22 + +#129'`'#20#133#225#179#21'2'#164'R(c'#201#148#20#146#144#225#254'/'#203'9X' + +#246#191#231']'#235'|'#31#17'*'#138#162#2#213#154#172'N'#4'U'#211#26'M'#160 + +#245#13'm'#130#174')'#29#3#192'?'#152#141#142'a'#233'@],'#1'M'#195#178#248 + +#164'k'#219'v'#183'-Au'#156#30#204#254#192#245#134#163#241#132#166#252#3'0' + +#243#7#159#16#204')'#12#157#5#176't]'#215'['#253'B'#184#6'L'#223#19'o'#130 + +#136#182#235#133'.G'#203#161'x'#30#243#163#187'$M'#184#248#27'v'#196'a'#127 + +#224#237#129'c '#142')'#201#216#217')'#199'9b'#198#5#229#151#236#148']'#174 + +')n'#177#184#160#242'~'#229#221'K<'#132#197#147#168#204#211'4'#7'^'#133#240 + +'Io'#216#26#25#29#174#26#5#167#0#0#0'%tEXtdate:create'#0'2015-05-03T15:40:07' + +'+02:00y'#229'F'#165#0#0#0'%tEXtdate:modify'#0'2015-05-03T15:40:07+02:00'#8 + +#184#254#25#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TWebfontsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#2':PLTE'#255#221'E'#212#188#128#203#160')'#255#233#132#216#177'?'#202#175'k' + +#201#175'j'#255#220'E'#254#226'w'#208#167'5'#216#176'>'#231#206#133#226#187 + +'D'#208#181's'#254#228#129#255#225'`'#255#227'`'#255#223'Z'#248#223#132#231 + +#206#131#255#221'Y'#255#236#161#248#214'R'#211#188#130#255#237#163#255#227'd' + +#255#242#180#209#189#139#212#171'7'#255#225'f'#199#171'`'#255#235#137#212#187 + +'y'#222#189'^'#253#233#161#222#211#182#221#211#185#212#176'M'#246#213'_'#254 + +#218'T'#246#212'['#255#228'X'#255#230#127#225#174#18#255#229'}'#201#160'3' + +#255#229'n'#216#205#179#245#221#139#253#220'\'#194#167'g'#255#227'w'#222#183 + +'>'#211#173'>'#255#219'N'#229#194'U'#245#208'K'#242#201':'#248#219'p'#252#221 + +'d'#206#181's'#229#195'_'#218#170' '#255#231#137#216#209#194#254#214';'#255 + +#229'z'#210#176'T'#255#215'7'#198#169'\'#215#203#173#255#228'r'#200#171'^' + +#213#199#161#197#160';'#255#246#192#215#184'b'#232#197'O'#250#204'0'#250#217 + +'d'#213#182'f'#230#189'7'#210#190#136#244#211'b'#253#232#152#230#188'+'#225 + +#179'$'#208#190#144#214#177'E'#215#179'L'#205#194#166#242#220#152#199#156'3' + +#208#181'm'#232#208#133#251#207':'#255#223'_'#252#230#149#253#205''''#254#223 + +'_'#255#232#132#255#230#138#208#182'u'#214#204#178#251#206'+'#255#228#128#250 + +#215'S'#205#161'('#255#252#203#255#232#144#209#190#141#255#221'U'#202#185#141 + +#255#233#130#233#193'<'#225#175#25#222#195'r'#220#184'Q'#255#218'>'#243#214 + +'r'#255#216';'#255#232#146#255#233#149#191#149'+'#251#231#159#208#171'>'#255 + +#220'K'#206#170'G'#239#189#26#247#210'C'#241#219#143#210#175'V'#203#165'@' + +#251#218'\'#210#171'@'#204#175'e'#217#177'9'#231#202'r'#215#176'<'#204#172'U' + +#228#191'R'#255#220'S'#221#182'E'#223#174#24#252#231#149#186#149'6'#255#230 + +'c'#225#193'd'#255#226'\'#255#241#178#236#195'<'#207#164'1'#225#187'F'#242 + +#197'0'#242#210'h'#247#199'"'#255#219'H'#218#192'w'#255#230'|'#250#224#133 + +#250#232#165#255#229'~'#214#173'5'#243#210'Q'#236#204'b'#233#189'/'#185#155 + +'P'#255#233#139#248#216'j'#245#199'('#211#187'x'#234#198'X'#253#224'n'#241 + +#217#142#226#194'a'#226#206#142#226#188'J'#231#181#24#255#238#164#251#234#169 + +#228#220#201#255#224'\'#208#170'D'#238#204'W'#197#161'A'#250#217'a'#212#189 + +#138#214#193#141#210#170'9'#0#0#0#176#1#21#196#0#0#0#190'tRNS'#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#147#176#211 + +#134#0#0#0#244'IDAT'#24'Wc'#216#11#6'Q6'#205#174#16#22#195#222#189#5#226'r' + +#206#145'3'#22'w'#232'C'#4#148#187'K'#184#13'J'#183'm'#159'd'#185#202#1',' + +#176'k}'#142'wH}'#185#154#136#153'LDm:P'#192's'#174'T'#162'bu'#139#173#22#199 + +#10'='#139'X'#144#25#237'JB'#147#163'7K,_'#210#230'+'#208#181#5'(`'#20'W'#200 + +'<'#181'2s^'#207#6#141')'#211#24#247'2('#168'6'#137#218#215#164#234'X'#197'p' + +#242#231#207'1'#221#203'0q'#193#166#170'Y'#235'&'#24#175#9'f'#217#218#203#16 + +#154#199#16'$'#156#226#180#218'|'#173#187#172#228'"'#158':'#134#138'='#12'*' + +#1#242';'#251'Z'#249#22'&$'#155#4':'#174#212#214'e'#216#203':_'#140'+K0W=~fX' + +#246#14#160#161'{wwj'#22'5'#178'['#251'%'#245'/'#131#248#197#205#199'pi'#153 + +'KFC'#241't'#152#231#216#252'go'#180'c'#242'H'#131#251'V'#154#201#139'7'#28 + +#194#3#2#0#19#221't'#170'8['#177#150#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TWebmastersAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#3#0#0#0'(-'#15'S'#0#0 + +#0'NPLTE'#255#255#255#175#177#180#175#177#180#175#177#180#175#177#180#178#180 + +#182#175#177#180#255#255#255#244#244#244#238#239#239#232#232#232#214#214#214 + +#210#211#212#208#209#210#204#204#204#200#200#200#175#177#180#167#167#167'G' + +#142#245#134#134#134'E'#140#245'{{{qqqZZZPPPNNN'#198'o.'#195#0#0#0#7'tRNS'#0 + +'3U'#136#153#238#238'z'#25#211'V'#0#0#0'nIDAT'#24#25#5#193#1#14#130'0'#16#0 + +#176#222#177#201' 1'#242#255'o'#18#17'"n'#182#0#0#2'dY'#29'w'#7#16'['#161'l' + +#1'!'#234#10#224#248#142#136#210':B '#143';'#30's'#159'!'#225#202'O'#174#157 + +#211#153#192'X'#19#154#6#160#232#222#0'&'#143'D'#173#149'W'#181#5#18#208#146 + +'XP'#0',3H'#192'5'#166':.'#164#0'c'#23#231#15'1='#1#192#14#0#224#15'''6'#27 + +#150'IG]'''#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TYoutubeAnalyticsAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#4#3#0#0#0#237#221#226 + +'R'#0#0#0'-PLTE'#255#255#255#224'J?'#224'J?'#224'J?'#224'J?'#224'J?'#248#219 + +#211#253#252#245#251#241#234#228'`V'#233#130'x'#240#174#165#242#185#177#235 + +#141#131#229'ka'#255#220#157#171#0#0#0#5'tRNS'#0#207'P'#239#244#227#207#15'w' + +#0#0#0'7IDAT'#8'[c`'#192#13#152'\C'#129' X'#129#129'1'#20#12#4#24'XCC3'#129 + +#140#0#16#163'b)'#148'Q^'#13'c'#212#192#164#174'B'#25'y`'#197'p'#237'p'#3'q' + +#3#0#182#18#24#1#146'5'#168'w'#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('TYoutubeAPI','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#4#3#0#0#0#237#221#226 + +'R'#0#0#0'-PLTE'#255#255#255#224'J?'#224'J?'#224'J?'#224'J?'#224'J?'#248#219 + +#211#253#252#245#251#241#234#228'`V'#233#130'x'#240#174#165#242#185#177#235 + +#141#131#229'ka'#255#220#157#171#0#0#0#5'tRNS'#0#207'P'#239#244#227#207#15'w' + +#0#0#0'7IDAT'#8'[c`'#192#13#152'\C'#129' X'#129#129'1'#20#12#4#24'XCC3'#129 + +#140#0#16#163'b)'#148'Q^'#13'c'#212#192#164#174'B'#25'y`'#197'p'#237'p'#3'q' + +#3#0#182#18#24#1#146'5'#168'w'#0#0#0#0'IEND'#174'B`'#130 +]); diff -Nru lazarus-1.4.4+dfsg/components/googleapis/reggoogleapi.pp lazarus-1.6+dfsg/components/googleapis/reggoogleapi.pp --- lazarus-1.4.4+dfsg/components/googleapis/reggoogleapi.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/googleapis/reggoogleapi.pp 2015-05-07 20:41:16.000000000 +0000 @@ -0,0 +1,180 @@ +unit reggoogleapi; + +interface + +{$mode objfpc}{$h+} + +uses sysutils,classes; + +procedure register; + +implementation + +uses + restbase, + googleservice, + googlebase, + googleclient, + googleadexchangebuyer, + googleadexchangeseller, + googleadmin, + googleadsense, + googleadsensehost, + googleanalytics, + googleandroidenterprise, + googleandroidpublisher, + googleappsactivity, + googleappstate, + googleaudit, + googleautoscaler, + googlebigquery, + googleblogger, + googlebooks, + googlecalendar, + googlecivicinfo, + googlecloudmonitoring, + googlecompute, + googlecomputeaccounts, + googlecontainer, + googlecontent, + googlecoordinate, + googlecustomsearch, + googledataflow, + googledatastore, + googledeploymentmanager, + googledfareporting, + googlediscovery, + googledns, + googledoubleclickbidmanager, + googledoubleclicksearch, + googledrive, + googlefitness, + googlefreebase, + googlefusiontables, + googlegames, + googlegamesConfiguration, + googlegamesManagement, + googlegan, + googlegenomics, + googlegmail, + googlegroupsmigration, + googlegroupssettings, + googleidentitytoolkit, + googlelicensing, + googlemanager, + googlemapsengine, + googlemirror, + googleoauth2, + googlepagespeedonline, + googleplus, + googleplusDomains, + googleprediction, + googlepubsub, + googleqpxExpress, + googlereplicapool, + googlereplicapoolupdater, + googlereseller, + googleresourceviews, + googlesiteVerification, + googlespectrum, + googlesqladmin, + googlestorage, + googletagmanager, + googletaskqueue, + googletasks, + googletranslate, + googleurlshortener, + googlewebfonts, + googlewebmasters, + googleyoutube, + googleyoutubeAnalytics, + googlecloudlatencytest, + googlecloudsearch, + googlelogging; + + +procedure register; + +begin + RegisterComponents('Google API',[ + TGoogleClient, + TAdexchangebuyerAPI, + TAdexchangesellerAPI, + TAdminAPI, + TAdsenseAPI, + TAdsensehostAPI, + TAnalyticsAPI, + TAndroidenterpriseAPI, + TAndroidpublisherAPI, + TAppsactivityAPI, + TAppstateAPI, + TAuditAPI, + TAutoscalerAPI, + TBigqueryAPI, + TBloggerAPI, + TBooksAPI, + TCalendarAPI, + TCivicinfoAPI, + TCloudmonitoringAPI, + TComputeAPI, + TComputeaccountsAPI, + TContainerAPI, + TContentAPI, + TCoordinateAPI, + TCustomsearchAPI, + TDataflowAPI, + TDatastoreAPI, + TDeploymentmanagerAPI, + TDfareportingAPI, + TDiscoveryAPI, + TDnsAPI, + TDoubleclickbidmanagerAPI, + TDoubleclicksearchAPI, + TDriveAPI, + TFitnessAPI, + TFreebaseAPI, + TFusiontablesAPI, + TGamesAPI, + TGamesConfigurationAPI, + TGamesManagementAPI, + TGanAPI, + TGenomicsAPI, + TGmailAPI, + TGroupsmigrationAPI, + TGroupssettingsAPI, + TIdentitytoolkitAPI, + TLicensingAPI, + TManagerAPI, + TMapsengineAPI, + TMirrorAPI, + TOauth2API, + TPagespeedonlineAPI, + TPlusAPI, + TPlusDomainsAPI, + TPredictionAPI, + TPubsubAPI, + TQpxExpressAPI, + TReplicapoolAPI, + TReplicapoolupdaterAPI, + TResellerAPI, + TResourceviewsAPI, + TSiteVerificationAPI, + TSpectrumAPI, + TSqladminAPI, + TStorageAPI, + TTagmanagerAPI, + TTaskqueueAPI, + TTasksAPI, + TTranslateAPI, + TUrlshortenerAPI, + TWebfontsAPI, + TWebmastersAPI, + TYoutubeAPI, + TYoutubeAnalyticsAPI, + TCloudlatencytestAPI, + TCloudsearchAPI, + TLoggingAPI + ]); +end; + +end. diff -Nru lazarus-1.4.4+dfsg/components/h2pas/h2pasconvert.pas lazarus-1.6+dfsg/components/h2pas/h2pasconvert.pas --- lazarus-1.4.4+dfsg/components/h2pas/h2pasconvert.pas 2014-11-12 19:11:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/h2pasconvert.pas 2015-12-23 23:53:32.000000000 +0000 @@ -23,8 +23,8 @@ interface uses - Classes, SysUtils, LCLProc, LResources, LazConfigStorage, XMLPropStorage, - Forms, Controls, Dialogs, FileUtil, LazFileUtils, LazUTF8Classes, AVL_Tree, + Classes, SysUtils, AVL_Tree, LCLProc, Forms, Controls, Dialogs, LResources, XMLPropStorage, + LazConfigStorage, FileUtil, LazFileUtils, LazFileCache, LazUTF8Classes, // CodeTools CodeAtom, CodeTree, KeywordFuncLists, NonPascalCodeTools, BasicCodeTools, FileProcs, CodeCache, SourceChanger, CodeToolManager, @@ -2726,7 +2726,7 @@ repeat CurAtom:=ReadNextPascalAtom(Src,Position,AtomStart); if CurAtom='' then break; - //DebugLn(['TReplaceImplicitTypes.FindNextImplicitType AAA1 ',CurAtom]); + //DebugLn(['TReplaceImplicitTypes.FindNextImplicitType atom ',CurAtom]); if CurAtom=':' then begin // var, const, out declaration CurAtom:=ReadNextPascalAtom(Src,Position,AtomStart); @@ -3780,7 +3780,7 @@ class function TPostH2PasTools.ClassDescription: string; begin - Result := Format(h2pPostH2PasASetOfCommonToolsToRunAfterH2pasPhReplace, [#13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13]) + Result := Format(h2pPostH2PasASetOfCommonToolsToRunAfterH2pasPhReplace, [#13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13, #13]) ; end; @@ -4253,8 +4253,8 @@ Identifier:=@Tool.Src[Position+Count]; AVLNode:=NeededPointerTypes.FindKey(Identifier, @CompareImplicitTypeStringAndName); - DebugLn(['AddNeededPointerType ',GetIdentifier(Identifier),' Position=',Position,' Count=',Count]); - DebugLn(['AddNeededPointerType AAA1 ',copy(Tool.Src,Position,100)]); + DebugLn(['AddNeededPointerType Identifier ',GetIdentifier(Identifier),' Position=',Position,' Count=',Count]); + DebugLn(['AddNeededPointerType Position ',copy(Tool.Src,Position,100)]); if AVLNode<>nil then begin Item:=TImplicitType(AVLNode.Data); if Item.MaxPosition<Count then @@ -4325,7 +4325,7 @@ if (InsertPos<1) then begin if DefaultTypeSectionPos<1 then begin // start a type section at the beginning - Node:=Tool.FindMainUsesSection(false); + Node:=Tool.FindMainUsesNode(false); if Node<>nil then begin if Node.NextBrother<>nil then Node:=Node.NextBrother; @@ -4462,7 +4462,7 @@ class function TConvertEnumsToTypeDef.ClassDescription: string; begin - Result := h2pGiveAnoymousCEnumsATypedefName; + Result := h2pGiveAnonymousCEnumsATypedefName; end; function TConvertEnumsToTypeDef.Execute(aText: TIDETextConverter diff -Nru lazarus-1.4.4+dfsg/components/h2pas/h2pasdlg.pas lazarus-1.6+dfsg/components/h2pas/h2pasdlg.pas --- lazarus-1.4.4+dfsg/components/h2pas/h2pasdlg.pas 2014-10-19 22:47:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/h2pasdlg.pas 2015-12-24 22:07:45.000000000 +0000 @@ -23,12 +23,11 @@ uses Classes, SysUtils, LCLProc, LCLType, LResources, Forms, Controls, Graphics, - Dialogs, ComCtrls, Buttons, StdCtrls, ExtCtrls, LazConfigStorage, SynEdit, - SynHighlighterCPP, FileProcs, IDEMsgIntf, MenuIntf, IDECommands, BaseIDEIntf, - IDEDialogs, LazIDEIntf, ProjectIntf, CodeToolManager, SrcEditorIntf, - IDETextConverter, H2PasStrConsts, H2PasConvert, IDETextConvListEdit, - IDEExternToolIntf, - CompOptsIntf; + Dialogs, ComCtrls, Buttons, StdCtrls, ExtCtrls, + LazConfigStorage, LazFileUtils, LazFileCache, SynEdit, + FileProcs, IDEMsgIntf, MenuIntf, IDECommands, BaseIDEIntf, + IDEDialogs, LazIDEIntf, SrcEditorIntf, IDEExternToolIntf, CompOptsIntf, + IDETextConverter, H2PasStrConsts, H2PasConvert, IDETextConvListEdit; type @@ -222,6 +221,7 @@ TextConverterToolClasses.RegisterClass(TPostH2PasTools); TextConverterToolClasses.RegisterClass(TReplaceUnitFilenameWithUnitName); + TextConverterToolClasses.RegisterClass(TRemoveIncludeDirectives); TextConverterToolClasses.RegisterClass(TRemoveDoubleSemicolons); TextConverterToolClasses.RegisterClass(TRemoveSystemTypes); TextConverterToolClasses.RegisterClass(TRemoveRedefinedPointerTypes); diff -Nru lazarus-1.4.4+dfsg/components/h2pas/h2passtrconsts.pas lazarus-1.6+dfsg/components/h2pas/h2passtrconsts.pas --- lazarus-1.4.4+dfsg/components/h2pas/h2passtrconsts.pas 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/h2passtrconsts.pas 2015-12-23 23:53:32.000000000 +0000 @@ -40,7 +40,7 @@ h2pAddIncludedHFiles = 'Add included .h files'; h2pMergeAllButThis = 'Merge all but this'; h2pMergeFile = 'Merge file'; - h2pH2pasOptions = 'h2pas Options'; + h2pH2pasOptions = 'H2Pas Options'; h2pOptions = 'Options'; h2pDUseExternalForAllProcedures = '-d Use external; for all procedures'; h2pDUseExternalLibnameNameFunc__nameForFunctions = '-D Use external libname name "func__name" for functions'; @@ -61,19 +61,19 @@ h2pOutputExtensionOfNewFile = 'Output extension of new file'; h2pOutputDirectory = 'Output directory'; h2pLLibraryName = '-l Library name'; - h2pBeforeH2pas = 'Before h2pas'; - h2pConversionsBeforeRunningH2pas = 'Conversions before running h2pas'; - h2pAfterH2pas = 'After h2pas'; - h2pConversionsAfterRunningH2pas = 'Conversions after running h2pas'; + h2pBeforeH2pas = 'Before H2Pas'; + h2pConversionsBeforeRunningH2pas = 'Conversions before running H2Pas'; + h2pAfterH2pas = 'After H2Pas'; + h2pConversionsAfterRunningH2pas = 'Conversions after running H2Pas'; h2pSettings = 'Settings'; - h2pH2pasProgramPath = 'h2pas program path'; + h2pH2pasProgramPath = 'H2Pas program path'; h2pOpenLastSettingsOnStart = 'Open last settings on start'; h2pSaveSettingsAs = 'Save settings as ...'; h2pNewClearSettings = 'New/Clear settings'; h2pOpenSettings = '&Open Settings'; h2pSaveSettings = '&Save Settings'; - h2pRunH2pas = 'Run h2pas'; - h2pRunH2pasAndCompile = 'Run h2pas and compile'; + h2pRunH2pas = 'Run H2Pas'; + h2pRunH2pasAndCompile = 'Run H2Pas and compile'; h2pClose = '&Close'; h2pSaveChanges = 'Save changes?'; h2pSaveSettings2 = 'Save settings?'; @@ -84,7 +84,7 @@ h2pRemoveAllFiles = 'Remove all files'; h2pAddHFiles2 = 'Add *.h files ...'; h2pAddHFiles3 = 'Add .h files?'; - h2pAddTheseHFilesToH2pasProject = 'Add these .h files to h2pas project?%s%s%s'; + h2pAddTheseHFilesToH2pasProject = 'Add these .h files to H2Pas project?%s%s%s'; h2pDeleteTheseHFilesFromList = 'Delete these .h files from list?%s%s%s'; h2pFile = 'File: %s'; h2pERRORFileNotFound2 = 'ERROR: file not found'; @@ -93,7 +93,7 @@ h2pIncludes = 'Includes:'; h2pIncludedBy = 'Included by:'; h2pNoFileSelected = 'No file selected.'; - h2pAddSearchAndReplaceToolBeforeH2pas = 'Add "search and replace" tool before h2pas'; + h2pAddSearchAndReplaceToolBeforeH2pas = 'Add "search and replace" tool before H2Pas'; h2pIncludedBy2 = '%s (included by %s)'; h2pNothingToDo = 'Nothing to do'; h2pPleaseEnableAtLeastOneCHeaderFileThatIsNotMerged = 'Please enable at least one c header file that is not merged.'; @@ -102,13 +102,13 @@ h2pReadError = 'Read error'; h2pErrorReadingGlobalConfig = 'Error reading global config:%s%s'; h2pSaveProjectAsH2p = 'Save project as ... (*.h2p)'; - h2pH2pasProjectH2pH2pAllFiles = 'h2pas project (*.h2p)|*.h2p|All files (*.*)|%s'; + h2pH2pasProjectH2pH2pAllFiles = 'H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s'; h2pReplaceFile = 'Replace file?'; h2pTheFileAlreadyExists = 'The file "%s"%salready exists.'; h2pFileNotFound = 'File not found'; h2pFileNotFound2 = 'File not found: "%s"'; h2pErrorReadingProjectFromFile = 'Error reading project from file%s%s%s%s%s'; - h2pFilenameOfH2pasProgram = 'Filename of h2pas program'; + h2pFilenameOfH2pasProgram = 'Filename of H2Pas program'; h2pOpenProjectH2p = 'Open project (*.h2p) ...'; h2pCHeaderFileHHAllFiles = 'C header file (*.h)|*.h|All files (*.*)|%s'; h2pTextConversionToolsEditor = 'Text conversion tools editor'; @@ -128,7 +128,7 @@ h2pDoYouReallyWantToDelete = 'Do you really want to delete "%s"?'; h2pDelete = 'Delete'; h2pTH2PasDialogH2pasOptionsCheckGroupItemClickUnknown = 'TH2PasDialog.h2pasOptionsCheckGroupItemClick: Unknown option %s'; - h2pH2pasProject = 'h2pas project'; + h2pH2pasProject = 'H2Pas project'; h2pOverwrite = 'Overwrite'; h2pCancel = 'Cancel'; h2pSelectAClass = '&Select a class'; @@ -139,22 +139,22 @@ h2pTAddToUsesSectionExecuteInvalidUnitname = 'TAddToUsesSection.Execute invalid unitname "%s"'; h2pAddUnitsToUsesSection = 'Add units to uses section'; h2pTAddToUsesSectionExecuteFileIsNotPascal = 'TAddToUsesSection.Execute file is not pascal: '; - h2pCommentFunctionsThatAreTooComplexForH2pas = 'Comment functions that are too complex for h2pas'; - h2pCommentMacrosThatAreTooComplexForH2pas = 'Comment macros that are too complex for h2pas'; - h2pGiveAnoymousCEnumsATypedefName = 'Give anoymous c enums a typedef name'; + h2pCommentFunctionsThatAreTooComplexForH2pas = 'Comment functions that are too complex for H2Pas'; + h2pCommentMacrosThatAreTooComplexForH2pas = 'Comment macros that are too complex for H2Pas'; + h2pGiveAnonymousCEnumsATypedefName = 'Give anonymous C enums a typedef name'; h2pAddMissingPointerTypesLikePPPChar = 'Add missing pointer types like PPPChar'; h2pRemoveDoubleSemicolons = 'Remove double semicolons'; h2pFixForwardDefinitionsByReordering = 'Fix forward definitions by reordering'; h2pConvertFunctionTypesToPointers = 'Convert function types to pointers'; h2pRemoveAllIncludeDirectives = 'Remove all include directives'; h2pTPostH2PasToolsExecuteAddToUsesSectionInvalidUnitn = 'TPostH2PasTools.Execute.AddToUsesSection invalid unitname "%s"'; - h2pPostH2PasASetOfCommonToolsToRunAfterH2pasPhReplace = 'Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace "unit filename;" with "unit name;"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace "array of )" with "array of const)"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%' - +'sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s'; - h2pPreH2PasASetOfCommonToolsToRunBeforeH2pasPhRemoveC = 'Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ ''extern "C"'' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s'; + h2pPostH2PasASetOfCommonToolsToRunAfterH2pasPhReplace = 'Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace "unit filename;" with "unit name;"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace "array of )" with "array of const)"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%' + +'sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s'; + h2pPreH2PasASetOfCommonToolsToRunBeforeH2pasPhRemoveC = 'Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ ''extern "C"'' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s'; h2pReplaceSimpleFunctionsWithTypeCasts = 'Replace simple functions with type casts'; h2pReplaceSimpleFunctionsWithConstants = 'Replace simple functions with constants'; h2pReduceCompilerDirectivesInPascalFileShortensExpres = 'Reduce compiler directives in pascal file%sShortens expressions in $IF directives%sand removes unneeded $IFDEF and $DEFINE directives.'; - h2pAddMissingH2pasIFDEFsForFunctionBodies = 'Add missing h2pas IFDEFs for function bodies'; + h2pAddMissingH2pasIFDEFsForFunctionBodies = 'Add missing H2Pas IFDEFs for function bodies'; h2pFixesSectionTypeOfAliasDefinitionsInPascalUnitChec = 'Fixes section type of alias definitions in pascal unit%sChecks all alias definitions of the form%sconst LeftSide = RightSide;%slooks up RightSide in the unit and if RightSide is a type or var, changes the section accordingly'; h2pRemoveRedefinitionsInPascalUnit = 'Remove redefinitions in pascal unit'; h2pFixOpenArraysReplaceArrayOfWithArrayOfConst = 'Fix open arrays%sReplace "array of )" with "array of const)"'; diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.cs.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.cs.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.cs.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.cs.po 2015-12-23 23:53:32.000000000 +0000 @@ -43,7 +43,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -55,11 +55,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -67,7 +67,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -75,7 +75,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -111,11 +111,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -127,11 +127,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -243,7 +243,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -278,8 +278,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -289,19 +289,19 @@ msgstr "H2Pas" #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -413,11 +413,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -509,11 +509,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.de.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.de.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.de.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.de.po 2015-12-23 23:53:32.000000000 +0000 @@ -42,7 +42,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -54,11 +54,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -66,7 +66,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -74,7 +74,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -110,11 +110,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -126,11 +126,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -242,7 +242,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -277,8 +277,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -286,19 +286,19 @@ msgstr "H2Pas ..." #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -410,11 +410,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -506,11 +506,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.es.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.es.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.es.po 2015-04-28 21:42:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.es.po 2015-12-23 23:53:32.000000000 +0000 @@ -44,7 +44,9 @@ msgstr "Añadir corchetes alrrededor de valores macro" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +#, fuzzy +#| msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "Añadir h2pas IFDEFS perdidos para cuerpos de función" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -56,11 +58,15 @@ msgstr "Añadir nueva utilidad" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +#, fuzzy +#| msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "Añadir utilidad \"buscar y reemplazar\" antes de h2pas" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +#, fuzzy +#| msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "¿Añadir éstos ficheros .h al proyecto h2pas?%s%s%s" #: h2passtrconsts.h2paddunitstousessection @@ -68,7 +74,9 @@ msgstr "Añadir unidades a la sección uses" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +#, fuzzy +#| msgid "After h2pas" +msgid "After H2Pas" msgstr "Después de h2pas" #: h2passtrconsts.h2pambiguousmerges @@ -76,7 +84,9 @@ msgstr "Mezcla ambigua:%s%s" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +#, fuzzy +#| msgid "Before h2pas" +msgid "Before H2Pas" msgstr "Antes de h2pas" #: h2passtrconsts.h2pcancel @@ -112,11 +122,13 @@ msgstr "&Cerrar" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +#, fuzzy +#| msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "Comentar macros que son demasiado complicadas para h2pas" #: h2passtrconsts.h2pconfirmdelete @@ -128,11 +140,15 @@ msgstr "Confirmar remover" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +#, fuzzy +#| msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "Conversiones despues de ejecutar h2pas" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +#, fuzzy +#| msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "Conversiones antes de ejecutar h2pas" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -244,7 +260,9 @@ msgstr "Información de fichero" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +#, fuzzy +#| msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "Nombre de fichero de programa h2pas" #: h2passtrconsts.h2pfilenotfound @@ -279,28 +297,34 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "Soluciona abrir matrices%sReemplaza \"array of )\" con \"array of const)\"" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" -msgstr "Dar a las enumeraciones anónimas C un nombre typedef" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" +msgstr "" #: h2passtrconsts.h2ph2pas msgid "H2Pas ..." msgstr "H2Pas ..." #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +#, fuzzy +#| msgid "h2pas Options" +msgid "H2Pas Options" msgstr "Opciones h2pas" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +#, fuzzy +#| msgid "h2pas program path" +msgid "H2Pas program path" msgstr "Ruta a programa h2pas" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +#, fuzzy +#| msgid "h2pas project" +msgid "H2Pas project" msgstr "Proyecto h2pas" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -412,11 +436,15 @@ msgstr "Por favor habilita al menos un fichero de cabecera C que no esté combinado." #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +#, fuzzy +#| msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "Post H2Pas - un conjunto de utilidades habituales para ejecutar después h2pas%sphReplaceUnitFilenameWithUnitName - Reemplaza \"nombrefichero unidad;\" con \"nombre unidad;\"%sphRemoveIncludeDirectives - Remueve include directivesphRemoveSystemTypes - Remueve redefiniciones de tipo como PLongint%sphFixH2PasMissingIFDEFsInUnit - añade IFDEFs perdidos para la función bodies%sphReduceCompilerDirectivesInUnit - remueve directives%sphRemoveRedefinedPointerTypes innecesarias- Remueve punteros redefinidos types%sphRemoveEmptyTypeVarConstSections - Remueve type/var/const sections%sphReplaceImplicitTypes - Busca tipo implícitos en parámetros y añade tipos para them%sphFixArrayOfParameterType - Reemplaza \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Remueve redefinitions de tipos, variables, constantes y resourcestrings%sphFixAliasDefinitionsInUnit - corrije la sección de tipos de alias definitions%sphReplaceConstFunctionsInUnit - reemplaza las funciones de asignación simples con constants%sphReplaceTypeCastFunctionsInUnit - reemplaza las funciones de caracterización simples con types%sphFixForwardDefinitions - repara las definiciones forward mediante reordering%sphAddUnitsToUsesSection - añade unidades a la sección uses%s" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +#, fuzzy +#| msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "Pre H2Pas - un conjunto de utilidades habituales para ejecutar antes de h2pas%sphRemoveCPlusPlusExternCTool - Remueve C++ 'extern \"C\"'lines%sphRemoveEmptyCMacrosTool - Remueve C macros%sphReplaceEdgedBracketPairWithStar vacíos - Reemplaza [] con *%sphReplace0PointerWithNULL - Reemplazae macro values 0 pointer como (char *)0%sphConvertFunctionTypesToPointers - Convierte tipos de función a pointers%sphConvertEnumsToTypeDef - Convierte enumeraciones anónimas a typedef enums%sphCommentComplexCMacros - Comenta macros demasiado complejas para h2pas%sphCommentComplexCFunctions - Comenta funciones demasiado complejas para h2pas%s" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -508,11 +536,15 @@ msgstr "e reemplazado de NULL con nil ha fallado" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +#, fuzzy +#| msgid "Run h2pas" +msgid "Run H2Pas" msgstr "Ejecuta h2pas" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +#, fuzzy +#| msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "Ejecuta h2pas y compila" #: h2passtrconsts.h2psaveandexit @@ -622,3 +654,4 @@ #: h2passtrconsts.h2pxhandlesys__trapofthepalmosheaderfiles msgid "-x Handle SYS__TRAP of the PalmOS header files" msgstr "-x Maneja SYS__TRAP de los ficheros cabecera de PalmOS" + diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.fr.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.fr.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -0,0 +1,624 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: 2015-04-14 07:54+0100\n" +"PO-Revision-Date: 2016-01-25 10:12+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"X-Generator: Poedit 1.8.6\n" + +#: h2passtrconsts.h2padd +msgid "&Add" +msgstr "&Ajouter" + +#: h2passtrconsts.h2paddacopy +msgid "Add a copy" +msgstr "Ajouter une copie" + +#: h2passtrconsts.h2paddfromclipboard +msgid "Add from clipboard" +msgstr "Coller depuis le presse-papier" + +#: h2passtrconsts.h2paddhfiles +msgid "Add .h files ..." +msgstr "Ajouter les fichiers \".h\"..." + +#: h2passtrconsts.h2paddhfiles2 +msgid "Add *.h files ..." +msgstr "Ajouter les fichiers \"*.h\"..." + +#: h2passtrconsts.h2paddhfiles3 +msgid "Add .h files?" +msgstr "Voulez-vous ajouter les fichiers \".h\" ?" + +#: h2passtrconsts.h2paddincludedhfiles +msgid "Add included .h files" +msgstr "Ajouter les fichiers inclus \".h\"" + +#: h2passtrconsts.h2paddmissingbracketsaroundmacrovalues +msgid "Add missing brackets around macro values" +msgstr "Ajouter les parenthèses manquantes autour des valeurs de macros" + +#: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies +msgid "Add missing H2Pas IFDEFs for function bodies" +msgstr "Ajouter les \"IFDEF\" manquants de H2Pas pour les corps de fonctions" + +#: h2passtrconsts.h2paddmissingpointertypeslikepppchar +msgid "Add missing pointer types like PPPChar" +msgstr "Ajouter les types de pointeurs manquants comme \"PPPChar\"" + +#: h2passtrconsts.h2paddnewtool +msgid "Add new tool" +msgstr "Ajouter un nouvel outil" + +#: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas +msgid "Add \"search and replace\" tool before H2Pas" +msgstr "Ajouter l'outil \"chercher et remplacer\" avant H2Pas" + +#: h2passtrconsts.h2paddthesehfilestoh2pasproject +msgid "Add these .h files to H2Pas project?%s%s%s" +msgstr "Voulez-vous ajouter ces fichiers \".h\" au projet H2Pas ?%s%s%s" + +#: h2passtrconsts.h2paddunitstousessection +msgid "Add units to uses section" +msgstr "Ajouter les unités à la clause \"uses\"" + +#: h2passtrconsts.h2pafterh2pas +msgid "After H2Pas" +msgstr "Après H2Pas" + +#: h2passtrconsts.h2pambiguousmerges +msgid "Ambiguous merges:%s%s" +msgstr "Fusions ambiguës : %s%s" + +#: h2passtrconsts.h2pbeforeh2pas +msgid "Before H2Pas" +msgstr "Avant H2Pas" + +#: h2passtrconsts.h2pcancel +msgid "Cancel" +msgstr "Annuler" + +#: h2passtrconsts.h2pcancel2 +msgid "&Cancel" +msgstr "&Annuler" + +#: h2passtrconsts.h2pccompactoutputmodelessspacesandemptylines +msgid "-c Compact outputmode, less spaces and empty lines" +msgstr "-c Mode de production compacté (moins d'espaces et de lignes vides)" + +#: h2passtrconsts.h2pcheaderfileconverter +msgid "C header file converter" +msgstr "Convertisseur de fichiers d'en-tête C" + +#: h2passtrconsts.h2pcheaderfilehhallfiles +msgid "C header file (*.h)|*.h|All files (*.*)|%s" +msgstr "Fichiers d'en-tête C (*.h)|*.h|Tous les fichiers (*.*)|%s" + +#: h2passtrconsts.h2pcheaderfilenotfound +msgid "C header file \"%s\" not found" +msgstr "Fichier d'en-tête C \"%s\" introuvable" + +#: h2passtrconsts.h2pcheaderfiles +msgid "C header files" +msgstr "Fichiers d'en-tête C" + +#: h2passtrconsts.h2pclose +msgid "&Close" +msgstr "&Fermer" + +#: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas +msgid "Comment functions that are too complex for H2Pas" +msgstr "Mettre en commentaires les fonctions trop complexes pour H2Pas" + +#: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas +msgid "Comment macros that are too complex for H2Pas" +msgstr "Mettre en commentaires les macros trop complexes pour H2Pas" + +#: h2passtrconsts.h2pconfirmdelete +msgid "Confirm delete" +msgstr "Confirmer l'effacement" + +#: h2passtrconsts.h2pconfirmremoval +msgid "Confirm removal" +msgstr "Confirmer l'effacement" + +#: h2passtrconsts.h2pconversionsafterrunningh2pas +msgid "Conversions after running H2Pas" +msgstr "Conversions après l'exécution de H2Pas" + +#: h2passtrconsts.h2pconversionsbeforerunningh2pas +msgid "Conversions before running H2Pas" +msgstr "Conversions avant l'exécution de H2Pas" + +#: h2passtrconsts.h2pconvertfunctiontypestopointers +msgid "Convert function types to pointers" +msgstr "Convertir les types de fonction en pointeurs" + +#: h2passtrconsts.h2pcopyingfilefailed +msgid "Copying file failed" +msgstr "La copie du fichier a échoué" + +#: h2passtrconsts.h2pcopytooltoclipboard +msgid "Copy tool to clipboard" +msgstr "Copier l'outil dans le presse-papier" + +#: h2passtrconsts.h2pcreateunitsfromcheaderfiles +msgid "Create units from C header files" +msgstr "Créer les unités à partir des fichiers d'en-tête C" + +#: h2passtrconsts.h2pcusetypesinctypesunit +msgid "-C Use types in ctypes unit" +msgstr "-C Utiliser les types dans l'unité ctypes" + +#: h2passtrconsts.h2pdelete +msgid "Delete" +msgstr "Supprimer" + +#: h2passtrconsts.h2pdeleteselectedhfiles +msgid "Delete selected .h files" +msgstr "Supprimer les fichiers \".h\" sélectionnés" + +#: h2passtrconsts.h2pdeletethesehfilesfromlist +msgid "Delete these .h files from list?%s%s%s" +msgstr "Voulez-vous supprimer ces fichiers \".h\" de la liste ?%s%s%s" + +#: h2passtrconsts.h2pdeletetool +msgid "Delete tool" +msgstr "Supprimer l'outil" + +#: h2passtrconsts.h2pdeletionoffailed +msgid "deletion of \"%s\" failed" +msgstr "la suppression de \"%s\" a échoué" + +#: h2passtrconsts.h2pdisableallhfiles +msgid "Disable all .h files" +msgstr "Désactiver tous les fichiers \".h\"" + +#: h2passtrconsts.h2pdiscardchangesandexit +msgid "Discard changes and exit" +msgstr "Ignorer les changements et quitter" + +#: h2passtrconsts.h2pdonotexit +msgid "Do not exit" +msgstr "Ne pas quitter" + +#: h2passtrconsts.h2pdoyoureallywanttodelete +msgid "Do you really want to delete \"%s\"?" +msgstr "Voulez-vous vraiment supprimer \"%s\" ?" + +#: h2passtrconsts.h2pduseexternalforallprocedures +msgid "-d Use external; for all procedures" +msgstr "-d Utiliser \"external\" pour toutes les procédures" + +#: h2passtrconsts.h2pduseexternallibnamenamefunc__nameforfunctions +msgid "-D Use external libname name \"func__name\" for functions" +msgstr "-D Utiliser le nom de \"libname\" externe \"func__name\" pour les fonctions" + +#: h2passtrconsts.h2peconstantsinsteadofenumerationtypeforcenums +msgid "-e constants instead of enumeration type for C enums" +msgstr "-e constantes au lieu de " + +#: h2passtrconsts.h2penableallhfiles +msgid "Enable all .h files" +msgstr "Activer tous les fichiers \".h\"" + +#: h2passtrconsts.h2perror +msgid "Error" +msgstr "Erreur" + +#: h2passtrconsts.h2perrorconvertingclipboardtexttotexttool +msgid "Error converting clipboard text to text tool:%s%s" +msgstr "Erreur de conversion du texte du presse-papiers vers l'outil de texte :%s%s" + +#: h2passtrconsts.h2perrorconvertingputtingtoolontoclipboard +msgid "Error converting putting tool onto clipboard:%s%s" +msgstr "Erreur outil de conversion vers le presse-papiers :%s%s" + +#: h2passtrconsts.h2perrorfilenotfound2 +msgid "ERROR: file not found" +msgstr "ERREUR : fichier non trouvé" + +#: h2passtrconsts.h2perrorreadingglobalconfig +msgid "Error reading global config:%s%s" +msgstr "Erreur de lecture de la configuration générale : %s%s" + +#: h2passtrconsts.h2perrorreadingprojectfromfile +msgid "Error reading project from file%s%s%s%s%s" +msgstr "Erreur de lecture du projet depuis le fichier%s%s%s%s%s" + +#: h2passtrconsts.h2perrorwritingglobalconfig +msgid "Error writing global config:%s%s" +msgstr "Erreur d'écriture de la configuration générale : %s%s" + +#: h2passtrconsts.h2pfile +msgid "File: %s" +msgstr "Fichier : %s" + +#: h2passtrconsts.h2pfileinformation +msgid "File information" +msgstr "Informations sur le fichier" + +#: h2passtrconsts.h2pfilenameofh2pasprogram +msgid "Filename of H2Pas program" +msgstr "Nom du programme H2Pas" + +#: h2passtrconsts.h2pfilenotfound +msgid "File not found" +msgstr "Fichier introuvable" + +#: h2passtrconsts.h2pfilenotfound2 +msgid "File not found: \"%s\"" +msgstr "Fichier introuvable : \"%s\"" + +#: h2passtrconsts.h2pfindexplicittypesfailedreadingconstsection +msgid "FindExplicitTypes FAILED reading const section" +msgstr "\"FindExplicitTypes\" a échoué en lisant la section \"const\"" + +#: h2passtrconsts.h2pfindexplicittypesfailedreadingtypedefinition +msgid "FindExplicitTypes FAILED reading type definition %s" +msgstr "\"FindExplicitTypes\" a échoué en lisant la définition de type %s" + +#: h2passtrconsts.h2pfindexplicittypesfailedrereadingtypedefinition +msgid "FindExplicitTypes FAILED Rereading type definition %s" +msgstr "\"FindExplicitTypes\" a échoué en relisant la définition de type %s" + +#: h2passtrconsts.h2pfixessectiontypeofaliasdefinitionsinpascalunitchec +msgid "Fixes section type of alias definitions in pascal unit%sChecks all alias definitions of the form%sconst LeftSide = RightSide;%slooks up RightSide in the unit and if RightSide is a type or var, changes the section accordingly" +msgstr "Corrige le type de section des définitions d'alias dans l'unité Pascal%sVérifie toutes les définitions d'alias de la forme%sconst LeftSide = RightSide;%srecherche RightSide dans l'unité et si RightSide est un type ou une variable, modifie la section en conséquence" + +#: h2passtrconsts.h2pfixforwarddefinitionsbyreordering +msgid "Fix forward definitions by reordering" +msgstr "Corriger les définitions suivantes en les réordonnant" + +#: h2passtrconsts.h2pfixopenarraysreplacearrayofwitharrayofconst +msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" +msgstr "Corriger les tableaux ouverts%sRemplacer \"array of)\" par \"array of const)\"" + +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" +msgstr "Donner aux énumérations C un nom de définition de type" + +#: h2passtrconsts.h2ph2pas +msgid "H2Pas ..." +msgstr "H2Pas..." + +#: h2passtrconsts.h2ph2pasoptions +msgid "H2Pas Options" +msgstr "Options de H2Pas" + +#: h2passtrconsts.h2ph2pasprogrampath +msgid "H2Pas program path" +msgstr "Chemin du programme H2Pas" + +#: h2passtrconsts.h2ph2pasproject +msgid "H2Pas project" +msgstr "Projet H2Pas" + +#: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgstr "projet H2Pas (*.h2p)|*.h2p|Tous les fichiers(*.*)|%s" + +#: h2passtrconsts.h2ph2pastool +msgid "H2PasTool" +msgstr "H2PasTool" + +#: h2passtrconsts.h2picreateanincludefileinsteadofaunit +msgid "-i Create an include file instead of a unit" +msgstr "-i Créer un fichier inclus au lieu d'une unité" + +#: h2passtrconsts.h2pincludedby +msgid "Included by:" +msgstr "Inclus par :" + +#: h2passtrconsts.h2pincludedby2 +msgid "%s (included by %s)" +msgstr "%s (inclus par %s)" + +#: h2passtrconsts.h2pincludes +msgid "Includes:" +msgstr "Inclusions :" + +#: h2passtrconsts.h2pinvalidclass +msgid "Invalid class" +msgstr "Classe incorrecte" + +#: h2passtrconsts.h2pllibraryname +msgid "-l Library name" +msgstr "-I Nom de la bibliothèque" + +#: h2passtrconsts.h2pmergeallbutthis +msgid "Merge all but this" +msgstr "Tout fusionner sauf ceci" + +#: h2passtrconsts.h2pmergedinto +msgid "Merged into: %s" +msgstr "Fusionné dans :%s" + +#: h2passtrconsts.h2pmergefile +msgid "Merge file" +msgstr "Fusionner le fichier" + +#: h2passtrconsts.h2pmovedown +msgid "Move down" +msgstr "Déplacer vers le bas" + +#: h2passtrconsts.h2pmovefiledown +msgid "Move file down" +msgstr "Déplacer le fichier vers le bas" + +#: h2passtrconsts.h2pmovefileup +msgid "Move file up" +msgstr "Déplacer le fichier vers le haut" + +#: h2passtrconsts.h2pmoveup +msgid "Move up" +msgstr "Déplacer vers le haut" + +#: h2passtrconsts.h2pnewclearsettings +msgid "New/Clear settings" +msgstr "Créer/Nettoyer les paramètres" + +#: h2passtrconsts.h2pnofileselected +msgid "No file selected." +msgstr "Aucun fichier sélectionné." + +#: h2passtrconsts.h2pnotatcustomtextconvertertool +msgid "not a TCustomTextConverterTool" +msgstr "pas un \"TCustomTextConverterTool\"" + +#: h2passtrconsts.h2pnothingtodo +msgid "Nothing to do" +msgstr "Rien à faire" + +#: h2passtrconsts.h2popenlastsettingsonstart +msgid "Open last settings on start" +msgstr "Ouvrir les derniers paramètres au démarrage" + +#: h2passtrconsts.h2popenprojecth2p +msgid "Open project (*.h2p) ..." +msgstr "Ouvrir un projet (\"*.h2p\")..." + +#: h2passtrconsts.h2popensettings +msgid "&Open Settings" +msgstr "&Ouvrir les paramètres" + +#: h2passtrconsts.h2poptions +msgid "Options" +msgstr "Options" + +#: h2passtrconsts.h2poutput +msgid "Output: %s" +msgstr "Destination : %s" + +#: h2passtrconsts.h2poutputdirectory +msgid "Output directory" +msgstr "Répertoire de destination" + +#: h2passtrconsts.h2poutputextensionofnewfile +msgid "Output extension of new file" +msgstr "Extension de sortie du nouveau fichier" + +#: h2passtrconsts.h2poverwrite +msgid "Overwrite" +msgstr "Mode recouvrement" + +#: h2passtrconsts.h2ppleaseenableatleastonecheaderfilethatisnotmerged +msgid "Please enable at least one c header file that is not merged." +msgstr "Veuillez activer au moins un fichier d'en-tête C qui n'est pas fusionné." + +#: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" +msgstr "Après H2Pas - Un ensemble d'outils à utiliser après H2Pas%sphReplaceUnitFilenameWithUnitName - Remplacement de \"unit filename;\" par \"unit name;\"%sphRemoveIncludeDirectives - Suppression des directives incluses%sphRemoveSystemTypes - Suppression des redéfinitions de types comme PLongint%sphFixH2PasMissingIFDEFsInUnit - Ajout des \"IFDEF\" aux corps des fonctions%sphReduceCompilerDirectivesInUnit - Suppression des directives superflues%sphRemoveRedefinedPointerTypes - Suppression des types de pointeurs redéfinis%sphRemoveEmptyTypeVarConstSections - Suppression des sections type/var/const vides%sphReplaceImplicitTypes - Recherche des types implicites dans les paramètres et attribution d'un type%sphFixArrayOfParameterType - Remplacement de \"array of )\" par \"array of const)\"%sphRemoveRedefinitionsInUnit - Suppression des redéfinitions de types, variables, constantes et chaînes de ressources%sphFixAliasDefinitionsInUnit - Correction du type de section des définitions d'alias%sphReplaceConstFunctionsInUnit - Remplacement des fonctions simples par des constantes%sphReplaceTypeCastFunctionsInUnit - Remplacement des fonctions de transtypage simple par des types%sphFixForwardDefinitions - Correction des définitions anticipées (\"forward\") par un réarrangement%sphAddUnitsToUsesSection - Ajout des unités à la section \"uses\"%s" + +#: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" +msgstr "Avant H2Pas - Un ensemble d'outils à utiliser avant H2Pas%sphRemoveCPlusPlusExternCTool - Suppression des lignes C++ 'extern \"C\"'%sphRemoveEmptyCMacrosTool - Suppression des macros C vides%sphReplaceEdgedBracketPairWithStar - Remplacement des \"[]\" par des \"*\"%sphReplace0PointerWithNULL - Remplacement des pointeurs 0 comme (char *)0%sphConvertFunctionTypesToPointers - Conversion des types de fonctions par des pointeurs%sphConvertEnumsToTypeDef - Conversion des énumérations anonymes par des énumérations d'un type défini%sphCommentComplexCMacros - Mise en commentaire des macros trop complexes pour H2Pas%sphCommentComplexCFunctions - Mise en commentaire des fonctions trop complexes pour H2Pas%s" + +#: h2passtrconsts.h2pprpackallrecords1bytealignment +msgid "-pr Pack all records (1 byte alignment)" +msgstr "-pr Compresser tous les enregistrements (alignement sur 1 octet)" + +#: h2passtrconsts.h2ppuseletterpforpointertypesinsteadof +msgid "-p Use letter P for pointer types instead of \"^\"" +msgstr "-p Utiliser la lettre \"P\" pour les pointeurs au lieu de \"^\"" + +#: h2passtrconsts.h2ppuseprocvarsforimports +msgid "-P use proc. vars for imports" +msgstr "-P Utiliser les variables procédurales pour les importations" + +#: h2passtrconsts.h2preaderror +msgid "Read error" +msgstr "Erreur de lecture" + +#: h2passtrconsts.h2preducecompilerdirectivesinpascalfileshortensexpres +msgid "Reduce compiler directives in pascal file%sShortens expressions in $IF directives%sand removes unneeded $IFDEF and $DEFINE directives." +msgstr "Réduire les directives de compilation dans les fichiers Pascal%sRaccourcit les expressions des directives \"$IF\"%set élimine les \"$IFDEF\" et \"$DEFINE\" inutiles." + +#: h2passtrconsts.h2premoveallfiles +msgid "Remove all files" +msgstr "Supprimer tous les fichiers" + +#: h2passtrconsts.h2premoveallincludedirectives +msgid "Remove all include directives" +msgstr "Supprimer toutes les directives d'inclusion" + +#: h2passtrconsts.h2premovecexternclines +msgid "Remove C++ 'extern \"C\"' lines" +msgstr "Supprimer les lignes 'extern \"C\" ' de C++" + +#: h2passtrconsts.h2premovedoublesemicolons +msgid "Remove double semicolons" +msgstr "Supprimer les points-virgules en double" + +#: h2passtrconsts.h2premoveemptycmacros +msgid "Remove empty C macros" +msgstr "Supprimer les macros C vides" + +#: h2passtrconsts.h2premoveemptytypevarconstsections +msgid "Remove empty type/var/const sections" +msgstr "Supprimer les sections (type/var/const) vides" + +#: h2passtrconsts.h2premoveredefinedpointertypes +msgid "Remove redefined pointer types" +msgstr "Supprimer les types de pointeurs redéfinis" + +#: h2passtrconsts.h2premoveredefinitionsinpascalunit +msgid "Remove redefinitions in pascal unit" +msgstr "Supprimer les redéfinitions dans l'unité Pascal" + +#: h2passtrconsts.h2premovetyperedefinitionslikeplongint +msgid "Remove type redefinitions like PLongint" +msgstr "Supprimer les redéfinitions de type comme \"PLongint\"" + +#: h2passtrconsts.h2preplacefile +msgid "Replace file?" +msgstr "Voulez-vous remplacer le fichier ?" + +#: h2passtrconsts.h2preplaceimplicittypesforexampleprocedureprocnameaar +msgid "Replace implicit types%sFor example:%s procedure ProcName(a: array[0..2] of char)%s is replaced with%s procedure ProcName(a: Tarray_0to2_of_char)%s and a new type is added%s Tarray_0to2_of_char = array[0..2] of char" +msgstr "Remplacer les types implicites%sPar exemple :%s procedure ProcName(a: array[0..2] of char)%s sera remplacé par%s procedure ProcName(a: Tarray_0to2_of_char)%s tandis que seraajouté un nouveau type%s Tarray_0to2_of_char = array[0..2] of char" + +#: h2passtrconsts.h2preplacemacrovalues0pointerlikechar0withnull +msgid "Replace macro values 0 pointer like (char *)0 with NULL" +msgstr "Remplacer les macros pointeurs valant 0 comme \"(char *)0\" par \"NULL\"" + +#: h2passtrconsts.h2preplacesimplefunctionswithconstants +msgid "Replace simple functions with constants" +msgstr "Remplacer les fonctions simples par des constantes" + +#: h2passtrconsts.h2preplacesimplefunctionswithtypecasts +msgid "Replace simple functions with type casts" +msgstr "Remplacer les fonctions simples par des conversions de types" + +#: h2passtrconsts.h2preplaceunitfilenamewithunitname +msgid "Replace \"unit filename;\" with \"unit name;\"" +msgstr "Remplacer 'unit NomDeFichier;\" par \"unit Nom;\"" + +#: h2passtrconsts.h2preplacewith +msgid "Replace [] with *" +msgstr "Remplacer [] par *" + +#: h2passtrconsts.h2preplacingofnullwithnilfailed +msgid "replacing of NULL with nil failed" +msgstr "Le remplacement de \"NULL\" par \"nil\" a échoué" + +#: h2passtrconsts.h2prunh2pas +msgid "Run H2Pas" +msgstr "Exécuter H2Pas" + +#: h2passtrconsts.h2prunh2pasandcompile +msgid "Run H2Pas and compile" +msgstr "Exécuter H2Pas et compiler" + +#: h2passtrconsts.h2psaveandexit +msgid "Save and exit" +msgstr "Enregistrer et quitter" + +#: h2passtrconsts.h2psavechanges +msgid "Save changes?" +msgstr "Voulez-vous enregistrer les modifications ?" + +#: h2passtrconsts.h2psaveprojectash2p +msgid "Save project as ... (*.h2p)" +msgstr "Sauvegarder le projet sous... (*.h2p)" + +#: h2passtrconsts.h2psavesettings +msgid "&Save Settings" +msgstr "&Enregistrer les paramètres" + +#: h2passtrconsts.h2psavesettings2 +msgid "Save settings?" +msgstr "Voulez-vous enregistrer les paramètres ?" + +#: h2passtrconsts.h2psavesettingsas +msgid "Save settings as ..." +msgstr "Enregistrer les paramètres sous..." + +#: h2passtrconsts.h2pselectaclass +msgid "&Select a class" +msgstr "&Choisir une classe" + +#: h2passtrconsts.h2psettings +msgid "Settings" +msgstr "Paramètres" + +#: h2passtrconsts.h2psstripcomments +msgid "-s Strip comments" +msgstr "-s Enlever les commentaires" + +#: h2passtrconsts.h2psstripcommentsandinfo +msgid "-S Strip comments and info" +msgstr "-S Enlever les commentaires et les informations" + +#: h2passtrconsts.h2ptaddtousessectionexecutefileisnotpascal +msgid "TAddToUsesSection.Execute file is not pascal: " +msgstr "Le fichier pour \"TAddToUsesSection.Execute\" n'est pas du Pascal : " + +#: h2passtrconsts.h2ptaddtousessectionexecuteinvalidunitname +msgid "TAddToUsesSection.Execute invalid unitname \"%s\"" +msgstr "Le nom d'unité \"%s\" pour \"TAddToUsesSection.Execute\" est incorrect" + +#: h2passtrconsts.h2ptextconversiontoolseditor +msgid "Text conversion tools editor" +msgstr "Éditeur d'outils de conversion de texte" + +#: h2passtrconsts.h2pth2pasdialogh2pasoptionscheckgroupitemclickunknown +msgid "TH2PasDialog.h2pasOptionsCheckGroupItemClick: Unknown option %s" +msgstr "\"TH2PasDialog.h2pasOptionsCheckGroupItemClick\" : option inconnue %s" + +#: h2passtrconsts.h2pthefilealreadyexists +msgid "The file \"%s\"%salready exists." +msgstr "Le fichier \"%s\"%sexiste déjà." + +#: h2passtrconsts.h2ptools +msgid "Tools:" +msgstr "Outils :" + +#: h2passtrconsts.h2ptposth2pastoolsexecuteaddtousessectioninvalidunitn +msgid "TPostH2PasTools.Execute.AddToUsesSection invalid unitname \"%s\"" +msgstr "\"TPostH2PasTools.Execute.AddToUsesSection\" : nom d'unité incorrect \"%s\"" + +#: h2passtrconsts.h2ptprependtypedeftypeswitht +msgid "-t Prepend typedef types with T" +msgstr "-t Préfixer les définitions de types avec \"T\"" + +#: h2passtrconsts.h2ptprependtypedeftypeswithtandremove__ +msgid "-T Prepend typedef types with T, and remove __" +msgstr "-T Préfixer les définitions de types avec \"T\" et supprimez les \"_\"" + +#: h2passtrconsts.h2punabletocopyfileto +msgid "Unable to copy file \"%s\"%sto \"%s\"" +msgstr "Impossible de copier le fichier \"%s\"%svers \"%s\"" + +#: h2passtrconsts.h2punabletomergefileinto +msgid "Unable to merge file \"%s\" into \"%s\"" +msgstr "Impossible de fusionner le fichier \"%s\" avec \"%s\"" + +#: h2passtrconsts.h2pvreplacepointerparametersbyvar +msgid "-v Replace pointer parameters by var" +msgstr "-v Remplacer les paramètres de pointeurs par des variables" + +#: h2passtrconsts.h2pwarning +msgid "Warning" +msgstr "Avertissement" + +#: h2passtrconsts.h2pwarningthefilewillbemergedintomultiplefiles +msgid "%sWarning: the file \"%s\"%swill be merged into multiple files:%s" +msgstr "%sAvertissement : le fichier \"%s\"%ssera unifié dans plusieurs fichiers : %s" + +#: h2passtrconsts.h2pwhandlespecialwin32macros +msgid "-w Handle special win32 macros" +msgstr "-w Gérer les macros win32 spéciales" + +#: h2passtrconsts.h2pwriteerror +msgid "Write error" +msgstr "Erreur d'écriture" + +#: h2passtrconsts.h2pxhandlesys__trapofthepalmosheaderfiles +msgid "-x Handle SYS__TRAP of the PalmOS header files" +msgstr "-x Gérer SYS-TRAP des fichiers d'en-tête de PalmOS" diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.hu.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.hu.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.hu.po 2015-01-27 23:16:18.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.hu.po 2016-01-06 23:28:59.000000000 +0000 @@ -44,8 +44,8 @@ msgstr "Hiányzó zárójelek hozzáadása a makrók értékéhez" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" -msgstr "Hiányzó H2Pas IFDEF-ek hozzáadása az eljárás testéhez" +msgid "Add missing H2Pas IFDEFs for function bodies" +msgstr "Hiányzó H2Pas IFDEF-ek hozzáadása az eljárások testéhez" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar msgid "Add missing pointer types like PPPChar" @@ -56,11 +56,11 @@ msgstr "Új eszköz hozzáadása" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "\"Keresés és csere\" eszköz a H2Pas előtt" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "Ezen .h fájlok hozzáadása a H2Pas projekthez?%s%s%s" #: h2passtrconsts.h2paddunitstousessection @@ -68,7 +68,7 @@ msgstr "Unit-ok hozzáadása a uses szakaszhoz" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "H2Pas után" #: h2passtrconsts.h2pambiguousmerges @@ -76,7 +76,7 @@ msgstr "Zavaros összeolvasztás:%s%s" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "H2Pas előtt" #: h2passtrconsts.h2pcancel @@ -112,11 +112,11 @@ msgstr "Be&zárás" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "Kerüljenek megjegyzésbe a H2Pas számára túl bonyolult eljárások" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "Kerüljenek megjegyzésbe a H2Pas számára túl bonyolult makrók" #: h2passtrconsts.h2pconfirmdelete @@ -128,11 +128,11 @@ msgstr "Eltávolítás jóváhagyása" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "Átalakítások a H2Pas futtatása után" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "Átalakítások a H2Pas futtatása előtt" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -244,7 +244,7 @@ msgstr "Fájl információ" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "A H2Pas program fájlneve" #: h2passtrconsts.h2pfilenotfound @@ -279,28 +279,28 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "Nyitott tömbök javítása%sAz \"array of )\" kifejezések cseréje erre: \"array of const )\" " -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" -msgstr "A évtelen C felsorolásoknak adjon egy \"typedef\" nevet" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" +msgstr "A névtelen C felsorolásoknak adjon \"typedef\" nevet" #: h2passtrconsts.h2ph2pas msgid "H2Pas ..." msgstr "H2Pas ..." #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "H2Pas beállítások" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "H2Pas program útvonala" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "H2Pas projekt" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "H2Pas projekt (*.h2p)|*.h2p|Minden fájl (*.*)|%s" #: h2passtrconsts.h2ph2pastool @@ -412,11 +412,11 @@ msgstr "Legalább egy be nem olvasztott C fejlécfájlt engedélyezni kell." #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" -msgstr "H2Pas után - általános eszközök a H2Pas utáni futtatásra%sphReplaceUnitFilenameWithUnitName - A \"unit fájlnév;\" cseréje \"unit név;\" kifejezésre%sphRemoveIncludeDirectives - Include direktívák eltávolításaphRemoveSystemTypes - A PLongint szerű típus újradefiniálások eltávolítása%sphFixH2PasMissingIFDEFsInUnit - Hiányzó IFDEF-ek hozzáadása az eljárás testéhez%sphReduceCompilerDirectivesInUnit - szükségtelen direktívák eltávolítása%sphRemoveRedefinedPointerTypes - Újradefiniált mutató-típusok eltávolítása%sphRemoveEmptyTypeVarConstSections - Üres type/var/const szakaszok eltávolítása%sphReplaceImplicitTypes - Közvetlen típusmeghatározások cseréje és típussá alakítása%sphFixArrayOfParameterType - Az \"array of )\" kifejezések cseréje erre: \"array of const)\"%sphRemoveRedefinitionsInUnit - A típus, változó, konstans és erőforrásszöveg újradefiniálások eltávolítása%sphFixAliasDefinitionsInUnit - A típusálnevek definícióinak javítása%sphReplaceConstFunctionsInUnit - Az egyszerű függvények cseréje konstansokra értékadásokban%sphReplaceTypeCastFunctionsInUnit - Az egyszerű függvények cseréje típuskényszerítésre%sphFixForwardDefinitions - Az előzetes definíciók javítása átrendezéssel%sphAddUnitsToUsesSection - Uni-ok hozzáadása a uses szakaszhoz%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" +msgstr "H2Pas után - általános eszközök a H2Pas utáni futtatásra%sphReplaceUnitFilenameWithUnitName - A \"unit fájlnév;\" cseréje \"unit név;\" kifejezésre%sphRemoveIncludeDirectives - Include direktívák eltávolítása%sphRemoveSystemTypes - A PLongint szerű típus újradefiniálások eltávolítása%sphFixH2PasMissingIFDEFsInUnit - Hiányzó IFDEF-ek hozzáadása az eljárások testéhez%sphReduceCompilerDirectivesInUnit - szükségtelen direktívák eltávolítása%sphRemoveRedefinedPointerTypes - Újradefiniált mutató-típusok eltávolítása%sphRemoveEmptyTypeVarConstSections - Üres type/var/const szakaszok eltávolítása%sphReplaceImplicitTypes - Közvetlen típusmeghatározások cseréje és típussá alakítása%sphFixArrayOfParameterType - Az \"array of )\" kifejezések cseréje erre: \"array of const)\"%sphRemoveRedefinitionsInUnit - A típus, változó, konstans és erőforrásszöveg újradefiniálások eltávolítása%sphFixAliasDefinitionsInUnit - A típusálnevek definícióinak javítása%sphReplaceConstFunctionsInUnit - Az egyszerű függvények cseréje konstansokra értékadásokban%sphReplaceTypeCastFunctionsInUnit - Az egyszerű függvények cseréje típuskényszerítésre%sphFixForwardDefinitions - Az előzetes definíciók javítása átrendezéssel%sphAddUnitsToUsesSection - Unit-ok hozzáadása a uses szakaszhoz%s" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "H2Pas előtt - általános eszközök a H2Pas előtti futtatásra%sphRemoveCPlusPlusExternCTool - A C++ 'extern \"C\"' sorok eltávolítása%sphRemoveEmptyCMacrosTool - Üres C makrók eltávolítása%sphReplaceEdgedBracketPairWithStar - [] cseréje * jelre%sphReplace0PointerWithNULL - A 0 mutató értékű makrók, mint a (char *)0 cseréje%sphConvertFunctionTypesToPointers - A függvények típusainak átalakítása mutatókká%sphConvertEnumsToTypeDef - A névtelen felsorolások \"typedef\" felsorolásokká alakítása%sphCommentComplexCMacros - Megjegyzésbe a H2Pas számára túl bonyolult makrók%sphCommentComplexCFunctions - Megjegyzésbe a H2Pas számára túl bonyolult eljárások%s" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -508,11 +508,11 @@ msgstr "a NULL cseréje nil-re nem sikerült" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "H2Pas futtatása" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "H2Pas futtatása és fordítás" #: h2passtrconsts.h2psaveandexit @@ -622,3 +622,4 @@ #: h2passtrconsts.h2pxhandlesys__trapofthepalmosheaderfiles msgid "-x Handle SYS__TRAP of the PalmOS header files" msgstr "-x A SYS__TRAP kezelése PalmOS fejlécfájlokban" + diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.id.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.id.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.id.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.id.po 2015-12-23 23:53:32.000000000 +0000 @@ -42,7 +42,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -54,11 +54,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -66,7 +66,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -74,7 +74,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -110,11 +110,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -126,11 +126,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -242,7 +242,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -277,8 +277,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -288,19 +288,19 @@ msgstr "H2Pas" #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -412,11 +412,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -508,11 +508,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.it.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.it.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.it.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.it.po 2015-12-23 23:53:32.000000000 +0000 @@ -46,7 +46,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -58,11 +58,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -70,7 +70,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -78,7 +78,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -114,11 +114,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -130,11 +130,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -246,7 +246,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -281,8 +281,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -290,19 +290,19 @@ msgstr "H2Pas ..." #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -414,11 +414,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -510,11 +510,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.lt.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.lt.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.lt.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.lt.po 2015-12-23 23:53:32.000000000 +0000 @@ -45,7 +45,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -57,11 +57,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -69,7 +69,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -77,7 +77,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -113,11 +113,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -129,11 +129,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -245,7 +245,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -280,8 +280,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -289,19 +289,19 @@ msgstr "H2Pas…" #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -413,11 +413,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -509,11 +509,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.pl.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.pl.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.pl.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.pl.po 2015-12-23 23:53:32.000000000 +0000 @@ -44,7 +44,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -56,11 +56,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -68,7 +68,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -76,7 +76,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -112,11 +112,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -128,11 +128,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -244,7 +244,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -279,8 +279,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -290,19 +290,19 @@ msgstr "H2Pas" #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -414,11 +414,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -510,11 +510,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.po 2015-12-23 23:53:32.000000000 +0000 @@ -37,7 +37,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -49,11 +49,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -61,7 +61,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -69,7 +69,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -105,11 +105,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -121,11 +121,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -237,7 +237,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -272,8 +272,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -281,19 +281,19 @@ msgstr "" #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -405,11 +405,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -501,11 +501,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.pt_BR.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.pt_BR.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.pt_BR.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.pt_BR.po 2015-12-23 23:53:32.000000000 +0000 @@ -42,7 +42,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -54,11 +54,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -66,7 +66,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -74,7 +74,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -110,11 +110,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -126,11 +126,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -242,7 +242,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -277,8 +277,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -288,19 +288,19 @@ msgstr "H2Pas" #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -412,11 +412,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -508,11 +508,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.ru.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.ru.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.ru.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.ru.po 2015-12-23 23:53:32.000000000 +0000 @@ -2,12 +2,14 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-01-16 23:53+0300\n" +"PO-Revision-Date: 2015-12-24 02:11+0300\n" "Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: h2passtrconsts.h2padd msgid "&Add" @@ -42,8 +44,8 @@ msgstr "Добавить отсутствующие скобки вокруг значений макросов" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" -msgstr "Добавить отсутствующие IFDEF h2pas для тел функций" +msgid "Add missing H2Pas IFDEFs for function bodies" +msgstr "Добавить отсутствующие IFDEF H2Pas для тел функций" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar msgid "Add missing pointer types like PPPChar" @@ -54,28 +56,28 @@ msgstr "Добавить новое средство" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" -msgstr "Добавить средство \"Найти и заменить\" до вызова h2pas" +msgid "Add \"search and replace\" tool before H2Pas" +msgstr "Добавить средство \"Найти и заменить\" до вызова H2Pas" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" -msgstr "Добавить эти файлы .h в проект h2pas?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" +msgstr "Добавить эти файлы .h в проект H2Pas?%s%s%s" #: h2passtrconsts.h2paddunitstousessection msgid "Add units to uses section" msgstr "Добавить модули в выражение Uses" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" -msgstr "После h2pas" +msgid "After H2Pas" +msgstr "После H2Pas" #: h2passtrconsts.h2pambiguousmerges msgid "Ambiguous merges:%s%s" msgstr "Неоднозначные попытки слияния:%s%s" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" -msgstr "До h2pas" +msgid "Before H2Pas" +msgstr "До H2Pas" #: h2passtrconsts.h2pcancel msgid "Cancel" @@ -110,12 +112,12 @@ msgstr "&Закрыть" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" -msgstr "Закомментировать слишком сложные для h2pas функции" +msgid "Comment functions that are too complex for H2Pas" +msgstr "Закомментировать слишком сложные для H2Pas функции" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" -msgstr "Закомментировать слишком сложные для h2pas макросы" +msgid "Comment macros that are too complex for H2Pas" +msgstr "Закомментировать слишком сложные для H2Pas макросы" #: h2passtrconsts.h2pconfirmdelete msgid "Confirm delete" @@ -126,12 +128,12 @@ msgstr "Подтвердите удаление" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" -msgstr "Преобразования после запуска h2pas" +msgid "Conversions after running H2Pas" +msgstr "Преобразования после запуска H2Pas" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" -msgstr "Преобразования до запуска h2pas" +msgid "Conversions before running H2Pas" +msgstr "Преобразования до запуска H2Pas" #: h2passtrconsts.h2pconvertfunctiontypestopointers msgid "Convert function types to pointers" @@ -242,8 +244,8 @@ msgstr "Сведения о файле" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" -msgstr "Имя файла программы h2pas" +msgid "Filename of H2Pas program" +msgstr "Имя файла программы H2Pas" #: h2passtrconsts.h2pfilenotfound msgid "File not found" @@ -277,8 +279,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "Исправить открытые массивы%sЗаменить \"array of )\" на \"array of const)\"" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "Именовать анонимные перечисления C" #: h2passtrconsts.h2ph2pas @@ -286,20 +288,20 @@ msgstr "H2Pas ..." #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" -msgstr "Параметры h2pas" +msgid "H2Pas Options" +msgstr "Параметры H2Pas" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" -msgstr "Путь к программе h2pas" +msgid "H2Pas program path" +msgstr "Путь к программе H2Pas" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" -msgstr "Проект h2pas" +msgid "H2Pas project" +msgstr "Проект H2Pas" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" -msgstr "Проект h2pas (*.h2p)|*.h2p|Все файлы (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgstr "Проект H2Pas (*.h2p)|*.h2p|Все файлы (*.*)|%s" #: h2passtrconsts.h2ph2pastool msgid "H2PasTool" @@ -410,12 +412,12 @@ msgstr "Выберите хотя бы один ещё не слитый заголовочный файл C." #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" -msgstr "Пост-H2Pas - набор средств для запуска после h2pas%sphReplaceUnitFilenameWithUnitName - Заменить \"unit <имя файла>;\" на \"unit <имя>;\"%sphRemoveIncludeDirectives - Удалить директивы включенияphRemoveSystemTypes - Удалить переопределения типов, например PLongint%sphFixH2PasMissingIFDEFsInUnit - Добавить отсутствующие IFDEF в тела функций%sphReduceCompilerDirectivesInUnit - удалить лишние директивы%sphRemoveRedefinedPointerTypes - Удалить переопределённые типы указателей%sphRemoveEmptyTypeVarConstSections - Удалить пустые выражения type/var/const%sphReplaceImplicitTypes - Искать неявные типы параметров и добавлять их объявления%sphFixArrayOfParameterType - Заменить \"array of )\" на \"array of const)\"%sphRemoveRedefinitionsInUnit - Удалить повторные объявления типов, переменных, констант и строк ресурсов%sphFixAliasDefinitionsInUnit - Исправить тип выражения для объявлений псевдонимов%sphReplaceConstFunctionsInUnit - Заменить простые функции присваивания константами%sphReplaceTypeCastFunctionsInUnit - Заменить простые функции приведения типов собственно типами%sphFixForwardDefinitions - Исправить предваряющие объявления переупорядочиванием%sphAddUnitsToUsesSection - Добавить модули в выражение Uses%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" +msgstr "Пост-H2Pas - набор средств для запуска после H2Pas%sphReplaceUnitFilenameWithUnitName - Заменить \"unit <имя файла>;\" на \"unit <имя>;\"%sphRemoveIncludeDirectives - Удалить директивы включения%sphRemoveSystemTypes - Удалить переопределения типов, например PLongint%sphFixH2PasMissingIFDEFsInUnit - Добавить отсутствующие IFDEF в тела функций%sphReduceCompilerDirectivesInUnit - Удалить лишние директивы%sphRemoveRedefinedPointerTypes - Удалить переопределённые типы указателей%sphRemoveEmptyTypeVarConstSections - Удалить пустые выражения type/var/const%sphReplaceImplicitTypes - Искать неявные типы параметров и добавлять их объявления%sphFixArrayOfParameterType - Заменить \"array of )\" на \"array of const)\"%sphRemoveRedefinitionsInUnit - Удалить повторные объявления типов, переменных, констант и строк ресурсов%sphFixAliasDefinitionsInUnit - Исправить тип выражения для объявлений псевдонимов%sphReplaceConstFunctionsInUnit - Заменить простые функции присваивания константами%sphReplaceTypeCastFunctionsInUnit - Заменить простые функции приведения типов собственно типами%sphFixForwardDefinitions - Исправить предваряющие объявления переупорядочиванием%sphAddUnitsToUsesSection - Добавить модули в выражение Uses%s" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" -msgstr "Пред-H2Pas - набор средств для запуска перед h2pas%sphRemoveCPlusPlusExternCTool - Удалить строки 'extern \"C\"' языка C++%sphRemoveEmptyCMacrosTool - Удалить пустые макросы C%sphReplaceEdgedBracketPairWithStar - Заменить [] на *%sphReplace0PointerWithNULL - Заменить значения макросов с указателями на ноль, подобные (char *)0%sphConvertFunctionTypesToPointers - Преобразовывать типы функций в указатели%sphConvertEnumsToTypeDef - Именовать анонимные перечисления%sphCommentComplexCMacros - Закомментировать сложные для h2pas макросы%sphCommentComplexCFunctions - Закомментировать сложные для h2pas функции%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" +msgstr "Пред-H2Pas - набор средств для запуска перед H2Pas%sphRemoveCPlusPlusExternCTool - Удалить строки 'extern \"C\"' языка C++%sphRemoveEmptyCMacrosTool - Удалить пустые макросы C%sphReplaceEdgedBracketPairWithStar - Заменить [] на *%sphReplace0PointerWithNULL - Заменить значения макросов с указателями на ноль, подобные (char *)0%sphConvertFunctionTypesToPointers - Преобразовывать типы функций в указатели%sphConvertEnumsToTypeDef - Именовать анонимные перечисления%sphCommentComplexCMacros - Закомментировать сложные для H2Pas макросы%sphCommentComplexCFunctions - Закомментировать сложные для H2Pas функции%s" #: h2passtrconsts.h2pprpackallrecords1bytealignment msgid "-pr Pack all records (1 byte alignment)" @@ -506,12 +508,12 @@ msgstr "замена NULL на nil не удалась" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" -msgstr "Запустить h2pas" +msgid "Run H2Pas" +msgstr "Запустить H2Pas" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" -msgstr "Запустить h2pas и собрать" +msgid "Run H2Pas and compile" +msgstr "Запустить H2Pas и собрать" #: h2passtrconsts.h2psaveandexit msgid "Save and exit" @@ -620,4 +622,3 @@ #: h2passtrconsts.h2pxhandlesys__trapofthepalmosheaderfiles msgid "-x Handle SYS__TRAP of the PalmOS header files" msgstr "-x Обрабатывать SYS__TRAP в заголовочных файлах PalmOS" - diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.uk.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.uk.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.uk.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.uk.po 2015-12-23 23:53:32.000000000 +0000 @@ -42,7 +42,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -54,11 +54,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -66,7 +66,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -74,7 +74,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -110,11 +110,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -126,11 +126,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -242,7 +242,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -277,8 +277,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -286,19 +286,19 @@ msgstr "H2Pas ..." #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -410,11 +410,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -506,11 +506,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.zh_CN.po lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.zh_CN.po --- lazarus-1.4.4+dfsg/components/h2pas/languages/h2passtrconsts.zh_CN.po 2015-01-16 21:17:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/h2pas/languages/h2passtrconsts.zh_CN.po 2015-12-23 23:53:32.000000000 +0000 @@ -45,7 +45,7 @@ msgstr "" #: h2passtrconsts.h2paddmissingh2pasifdefsforfunctionbodies -msgid "Add missing h2pas IFDEFs for function bodies" +msgid "Add missing H2Pas IFDEFs for function bodies" msgstr "" #: h2passtrconsts.h2paddmissingpointertypeslikepppchar @@ -57,11 +57,11 @@ msgstr "" #: h2passtrconsts.h2paddsearchandreplacetoolbeforeh2pas -msgid "Add \"search and replace\" tool before h2pas" +msgid "Add \"search and replace\" tool before H2Pas" msgstr "" #: h2passtrconsts.h2paddthesehfilestoh2pasproject -msgid "Add these .h files to h2pas project?%s%s%s" +msgid "Add these .h files to H2Pas project?%s%s%s" msgstr "" #: h2passtrconsts.h2paddunitstousessection @@ -69,7 +69,7 @@ msgstr "" #: h2passtrconsts.h2pafterh2pas -msgid "After h2pas" +msgid "After H2Pas" msgstr "" #: h2passtrconsts.h2pambiguousmerges @@ -77,7 +77,7 @@ msgstr "" #: h2passtrconsts.h2pbeforeh2pas -msgid "Before h2pas" +msgid "Before H2Pas" msgstr "" #: h2passtrconsts.h2pcancel @@ -113,11 +113,11 @@ msgstr "" #: h2passtrconsts.h2pcommentfunctionsthataretoocomplexforh2pas -msgid "Comment functions that are too complex for h2pas" +msgid "Comment functions that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pcommentmacrosthataretoocomplexforh2pas -msgid "Comment macros that are too complex for h2pas" +msgid "Comment macros that are too complex for H2Pas" msgstr "" #: h2passtrconsts.h2pconfirmdelete @@ -129,11 +129,11 @@ msgstr "" #: h2passtrconsts.h2pconversionsafterrunningh2pas -msgid "Conversions after running h2pas" +msgid "Conversions after running H2Pas" msgstr "" #: h2passtrconsts.h2pconversionsbeforerunningh2pas -msgid "Conversions before running h2pas" +msgid "Conversions before running H2Pas" msgstr "" #: h2passtrconsts.h2pconvertfunctiontypestopointers @@ -245,7 +245,7 @@ msgstr "" #: h2passtrconsts.h2pfilenameofh2pasprogram -msgid "Filename of h2pas program" +msgid "Filename of H2Pas program" msgstr "" #: h2passtrconsts.h2pfilenotfound @@ -280,8 +280,8 @@ msgid "Fix open arrays%sReplace \"array of )\" with \"array of const)\"" msgstr "" -#: h2passtrconsts.h2pgiveanoymouscenumsatypedefname -msgid "Give anoymous c enums a typedef name" +#: h2passtrconsts.h2pgiveanonymouscenumsatypedefname +msgid "Give anonymous C enums a typedef name" msgstr "" #: h2passtrconsts.h2ph2pas @@ -289,19 +289,19 @@ msgstr "" #: h2passtrconsts.h2ph2pasoptions -msgid "h2pas Options" +msgid "H2Pas Options" msgstr "" #: h2passtrconsts.h2ph2pasprogrampath -msgid "h2pas program path" +msgid "H2Pas program path" msgstr "" #: h2passtrconsts.h2ph2pasproject -msgid "h2pas project" +msgid "H2Pas project" msgstr "" #: h2passtrconsts.h2ph2pasprojecth2ph2pallfiles -msgid "h2pas project (*.h2p)|*.h2p|All files (*.*)|%s" +msgid "H2Pas project (*.h2p)|*.h2p|All files (*.*)|%s" msgstr "" #: h2passtrconsts.h2ph2pastool @@ -413,11 +413,11 @@ msgstr "" #: h2passtrconsts.h2pposth2pasasetofcommontoolstorunafterh2pasphreplace -msgid "Post H2Pas - a set of common tools to run after h2pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directivesphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - fix section type of alias definitions%sphReplaceConstFunctionsInUnit - replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - replace simple type cast functions with types%sphFixForwardDefinitions - fix forward definitions by reordering%sphAddUnitsToUsesSection - add units to uses section%s" +msgid "Post H2Pas - a set of common tools to run after H2Pas%sphReplaceUnitFilenameWithUnitName - Replace \"unit filename;\" with \"unit name;\"%sphRemoveIncludeDirectives - Remove include directives%sphRemoveSystemTypes - Remove type redefinitons like PLongint%sphFixH2PasMissingIFDEFsInUnit - Add missing IFDEFs for function bodies%sphReduceCompilerDirectivesInUnit - Removes unneeded directives%sphRemoveRedefinedPointerTypes - Remove redefined pointer types%sphRemoveEmptyTypeVarConstSections - Remove empty type/var/const sections%sphReplaceImplicitTypes - Search implicit types in parameters and add types for them%sphFixArrayOfParameterType - Replace \"array of )\" with \"array of const)\"%sphRemoveRedefinitionsInUnit - Removes redefinitions of types, variables, constants and resourcestrings%sphFixAliasDefinitionsInUnit - Fix section type of alias definitions%sphReplaceConstFunctionsInUnit - Replace simple assignment functions with constants%sphReplaceTypeCastFunctionsInUnit - Replace simple type cast functions with types%sphFixForwardDefinitions - Fix forward definitions by reordering%sphAddUnitsToUsesSection - Add units to uses section%s" msgstr "" #: h2passtrconsts.h2ppreh2pasasetofcommontoolstorunbeforeh2pasphremovec -msgid "Pre H2Pas - a set of common tools to run before h2pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for h2pas%sphCommentComplexCFunctions - Comment functions too complex for h2pas%s" +msgid "Pre H2Pas - a set of common tools to run before H2Pas%sphRemoveCPlusPlusExternCTool - Remove C++ 'extern \"C\"' lines%sphRemoveEmptyCMacrosTool - Remove empty C macros%sphReplaceEdgedBracketPairWithStar - Replace [] with *%sphReplace0PointerWithNULL - Replace macro values 0 pointer like (char *)0%sphConvertFunctionTypesToPointers - Convert function types to pointers%sphConvertEnumsToTypeDef - Convert anonymous enums to typedef enums%sphCommentComplexCMacros - Comment macros too complex for H2Pas%sphCommentComplexCFunctions - Comment functions too complex for H2Pas%s" msgstr "" #: h2passtrconsts.h2pprpackallrecords1bytealignment @@ -509,11 +509,11 @@ msgstr "" #: h2passtrconsts.h2prunh2pas -msgid "Run h2pas" +msgid "Run H2Pas" msgstr "" #: h2passtrconsts.h2prunh2pasandcompile -msgid "Run h2pas and compile" +msgid "Run H2Pas and compile" msgstr "" #: h2passtrconsts.h2psaveandexit diff -Nru lazarus-1.4.4+dfsg/components/ideintf/actionseditor.lfm lazarus-1.6+dfsg/components/ideintf/actionseditor.lfm --- lazarus-1.4.4+dfsg/components/ideintf/actionseditor.lfm 2010-11-18 18:39:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/actionseditor.lfm 2015-05-17 19:02:37.000000000 +0000 @@ -1,142 +1,62 @@ object ActionListEditor: TActionListEditor - Left = 290 - Height = 300 - Top = 159 - Width = 400 + Left = 497 + Height = 315 + Top = 189 + Width = 404 HorzScrollBar.Page = 399 VertScrollBar.Page = 299 Caption = 'ActionListEditor' - ClientHeight = 300 - ClientWidth = 400 + ClientHeight = 315 + ClientWidth = 404 KeyPreview = True OnClose = ActionListEditorClose + OnCreate = FormCreate OnKeyDown = ActionListEditorKeyDown OnKeyPress = ActionListEditorKeyPress Position = poScreenCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object PanelDescr: TPanel Left = 0 Height = 26 - Top = 26 - Width = 400 + Top = 28 + Width = 404 Align = alTop BevelOuter = bvNone ClientHeight = 26 - ClientWidth = 400 + ClientWidth = 404 FullRepaint = False PopupMenu = PopMenuActions - TabOrder = 1 + TabOrder = 0 object lblCategory: TLabel Left = 6 - Height = 18 + Height = 15 Top = 6 - Width = 79 + Width = 67 Caption = 'Categories:' ParentColor = False end object lblName: TLabel Left = 162 - Height = 18 + Height = 15 Top = 6 - Width = 56 + Width = 48 Caption = 'Actions:' ParentColor = False end end object Splitter: TSplitter Left = 152 - Height = 248 - Top = 52 + Height = 261 + Top = 54 Width = 5 AutoSnap = False OnCanResize = SplitterCanResize end - object PanelToolbar: TPanel - Left = 0 - Height = 26 - Top = 0 - Width = 400 - Align = alTop - BevelInner = bvRaised - BevelOuter = bvLowered - ClientHeight = 26 - ClientWidth = 400 - FullRepaint = False - TabOrder = 0 - object btnAdd: TSpeedButton - Left = 1 - Height = 22 - Top = 2 - Width = 24 - Action = ActNew - Flat = True - NumGlyphs = 0 - Spacing = 0 - ShowHint = True - ParentShowHint = False - end - object btnDelete: TSpeedButton - Left = 35 - Height = 22 - Top = 2 - Width = 24 - Action = ActDelete - Flat = True - NumGlyphs = 0 - Spacing = 0 - ShowHint = True - ParentShowHint = False - end - object btnUp: TSpeedButton - Left = 64 - Height = 22 - Top = 2 - Width = 24 - Action = ActMoveUp - Flat = True - NumGlyphs = 0 - Spacing = 0 - ShowHint = True - ParentShowHint = False - end - object btnDown: TSpeedButton - Left = 89 - Height = 22 - Top = 2 - Width = 24 - Action = ActMoveDown - Flat = True - NumGlyphs = 0 - Spacing = 0 - ShowHint = True - ParentShowHint = False - end - object SBShowMenuNewActions: TSpeedButton - Left = 25 - Height = 22 - Top = 2 - Width = 10 - AllowAllUp = True - Flat = True - Glyph.Data = { - 72000000424D7200000000000000360000002800000005000000030000000100 - 2000000000003C00000064000000640000000000000000000000000000000000 - 0000000000FF000000000000000000000000000000FF000000FF000000FF0000 - 0000000000FF000000FF000000FF000000FF000000FF - } - GroupIndex = 1 - NumGlyphs = 0 - Spacing = 0 - OnClick = SBShowMenuNewActionsClick - ShowHint = True - ParentShowHint = False - end - end object lstActionName: TListBox Left = 157 - Height = 248 - Top = 52 - Width = 243 + Height = 261 + Top = 54 + Width = 247 Align = alClient ItemHeight = 0 OnClick = lstActionNameClick @@ -145,23 +65,79 @@ OnKeyDown = lstActionNameKeyDown OnMouseDown = lstActionNameMouseDown PopupMenu = PopMenuActions + ScrollWidth = 245 Style = lbOwnerDrawFixed - TabOrder = 2 + TabOrder = 1 + TopIndex = -1 end object lstCategory: TListBox Left = 0 - Height = 248 - Top = 52 + Height = 261 + Top = 54 Width = 152 Align = alLeft ItemHeight = 0 OnClick = lstCategoryClick OnMouseDown = lstActionNameMouseDown PopupMenu = PopMenuActions - TabOrder = 3 + ScrollWidth = 150 + TabOrder = 2 + TopIndex = -1 + end + object ToolBar1: TToolBar + Left = 0 + Height = 28 + Top = 0 + Width = 404 + ButtonHeight = 26 + ButtonWidth = 26 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Images = ImageList1 + ParentShowHint = False + ShowHint = True + TabOrder = 4 + object btnAdd: TToolButton + Left = 1 + Top = 0 + Action = ActNew + end + object btnAddMore: TToolButton + Left = 27 + Top = 0 + Caption = 'btnAddMore' + DropdownMenu = PopMenuToolBarActions + ImageIndex = 0 + end + object btnDelete: TToolButton + Left = 53 + Top = 0 + Action = ActDelete + end + object ToolButton4: TToolButton + Left = 79 + Height = 26 + Top = 0 + Width = 5 + Caption = 'ToolButton4' + Style = tbsDivider + end + object btnUp: TToolButton + Left = 84 + Top = 0 + Action = ActMoveUp + end + object btnDown: TToolButton + Left = 110 + Top = 0 + Action = ActMoveDown + end end object ActionListSelf: TActionList - top = 240 + left = 56 + top = 260 object ActDelete: TAction Category = 'AddDelete' OnExecute = ActDeleteExecute @@ -206,8 +182,8 @@ end end object PopMenuActions: TPopupMenu - left = 160 - top = 261 + left = 56 + top = 216 object mItemActListNewAction: TMenuItem Action = ActNew Caption = 'New Action' @@ -253,7 +229,8 @@ end end object PopMenuToolBarActions: TPopupMenu - top = 200 + left = 56 + top = 164 object mItemToolBarNewAction: TMenuItem Action = ActNew Default = True @@ -264,4 +241,44 @@ OnClick = ActNewStdExecute end end + object ImageList1: TImageList + AllocBy = 8 + left = 56 + top = 116 + Bitmap = { + 4C69010000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007F7F7FFF7F7F + 7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F + 7FFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007F7F + 7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF007F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF007F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF007F7F7FFF7F7F7FFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00 + } + end end diff -Nru lazarus-1.4.4+dfsg/components/ideintf/actionseditor.pas lazarus-1.6+dfsg/components/ideintf/actionseditor.pas --- lazarus-1.4.4+dfsg/components/ideintf/actionseditor.pas 2015-03-15 11:15:16.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/actionseditor.pas 2015-12-27 20:15:38.000000000 +0000 @@ -27,7 +27,7 @@ Classes, SysUtils, LCLProc, Forms, Controls, Dialogs, ActnList, ExtCtrls, Buttons, StdCtrls, ObjInspStrConsts, ComponentEditors, PropEdits, PropEditUtils, DBActns, StdActns, LCLIntf, - LCLType, Graphics, Menus, contnrs; + LCLType, Graphics, Menus, ComCtrls, contnrs, IDEWindowIntf; type TActStdPropItem = class; @@ -80,6 +80,7 @@ ActNewStd: TAction; ActionListSelf: TActionList; ActNew: TAction; + ImageList1: TImageList; lblCategory: TLabel; lblName: TLabel; lstCategory: TListBox; @@ -96,16 +97,17 @@ MenuItem6: TMenuItem; mItemActListDelAction: TMenuItem; MenuItem8: TMenuItem; - PanelToolbar: TPanel; PanelDescr: TPanel; - btnAdd: TSpeedButton; - btnDelete: TSpeedButton; - btnUp: TSpeedButton; - btnDown: TSpeedButton; PopMenuActions: TPopupMenu; PopMenuToolBarActions: TPopupMenu; - SBShowMenuNewActions: TSpeedButton; Splitter: TSplitter; + ToolBar1: TToolBar; + btnAdd: TToolButton; + btnAddMore: TToolButton; + btnDelete: TToolButton; + ToolButton4: TToolButton; + btnUp: TToolButton; + btnDown: TToolButton; procedure ActDeleteExecute(Sender: TObject); procedure ActDeleteUpdate(Sender: TObject); procedure ActMoveDownExecute(Sender: TObject); @@ -120,9 +122,9 @@ procedure ActionListEditorKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure ActionListEditorKeyPress(Sender: TObject; var Key: char); + procedure FormCreate(Sender: TObject); procedure lstActionNameDrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); - procedure SBShowMenuNewActionsClick(Sender: TObject); procedure SplitterCanResize(Sender: TObject; var {%H-}NewSize: Integer; var {%H-}Accept: Boolean); procedure lstActionNameKeyDown(Sender: TObject; var Key: Word; @@ -478,7 +480,7 @@ tmpIndex: Integer; tmpValidCategory, tmpIsActCategory: Boolean; begin - if Self.Visible then begin + if Self.Visible and Assigned(GlobalDesignHook) then begin ASelections:= TPersistentSelectionList.Create; GlobalDesignHook.GetSelection(ASelections); try @@ -688,7 +690,7 @@ procedure TActionListEditor.ActPanelToolBarExecute(Sender: TObject); begin - PanelToolBar.Visible := TAction(Sender).Checked; + ToolBar1.Visible := TAction(Sender).Checked; end; procedure TActionListEditor.ActionListEditorClose(Sender: TObject; @@ -713,6 +715,21 @@ if Ord(Key) = VK_ESCAPE then Self.Close; end; +procedure TActionListEditor.FormCreate(Sender: TObject); +begin + //imageindex 0 exists + ImageList1.AddResourceName(HInstance, 'laz_add'); //imageindex 1 + ImageList1.AddResourceName(HInstance, 'laz_delete'); //imageindex 2 + ImageList1.AddResourceName(HInstance, 'arrow_up'); //imadeindex 3 + ImageList1.AddResourceName(HInstance, 'arrow_down'); //imageindex 4 + btnAddMore.ImageIndex := 0; + // These must be set in code because OI does not work with non-existent values. + btnAdd.ImageIndex := 1; + btnDelete.ImageIndex := 2; + btnUp.ImageIndex := 3; + btnDown.ImageIndex := 4; +end; + procedure TActionListEditor.lstActionNameDrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); var @@ -768,15 +785,6 @@ lstActionName.Items.Delete(i); end; -procedure TActionListEditor.SBShowMenuNewActionsClick(Sender: TObject); -var - MousePoint: TPoint; -begin - MousePoint := SBShowMenuNewActions.ClientToScreen(Point(0, btnAdd.Height-1)); - PopMenuToolBarActions.PopUp(MousePoint.X-btnAdd.Width, MousePoint.Y); - SBShowMenuNewActions.Down := False; -end; - procedure TActionListEditor.ActDeleteExecute(Sender: TObject); function IsCategory(Category: String): Boolean; var @@ -885,7 +893,7 @@ ActMoveDown.Hint := cActionListEditorMoveDownAction; ActPanelDescr.Caption := cActionListEditorPanelDescrriptions; ActPanelToolBar.Caption := cActionListEditorPanelToolBar; - SBShowMenuNewActions.Hint := cActionListEditorNewAction; + btnAddMore.Hint := cActionListEditorNewAction; mItemToolBarNewAction.Caption := cActionListEditorNewAction; mItemToolBarNewStdAction.Caption := cActionListEditorNewStdAction; mItemActListNewAction.Caption := cActionListEditorNewAction; @@ -894,23 +902,21 @@ mItemActListMoveUpAction.Caption := cActionListEditorMoveUpAction; mItemActListDelAction.Caption := cActionListEditorDeleteAction; - btnAdd.LoadGlyphFromResourceName(HInstance, 'laz_add'); - btnDelete.LoadGlyphFromResourceName(HInstance, 'laz_delete'); - btnUp.LoadGlyphFromResourceName(HInstance, 'arrow_up'); - btnDown.LoadGlyphFromResourceName(HInstance, 'arrow_down'); - - GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed); - GlobalDesignHook.AddHandlerSetSelection(@OnComponentSelection); - GlobalDesignHook.AddHandlerRefreshPropertyValues(@OnRefreshPropertyValues); - GlobalDesignHook.AddHandlerPersistentDeleting(@OnComponentDelete); + if Assigned(GlobalDesignHook) then + begin + GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed); + GlobalDesignHook.AddHandlerSetSelection(@OnComponentSelection); + GlobalDesignHook.AddHandlerRefreshPropertyValues(@OnRefreshPropertyValues); + GlobalDesignHook.AddHandlerPersistentDeleting(@OnComponentDelete); + end; AddActionEditor(Self); end; destructor TActionListEditor.Destroy; begin - if Assigned(GlobalDesignHook) - then GlobalDesignHook.RemoveAllHandlersForObject(Self); + if Assigned(GlobalDesignHook) then + GlobalDesignHook.RemoveAllHandlersForObject(Self); ReleaseActionEditor(Self); @@ -1070,6 +1076,7 @@ SetActionList(AActionList); end; end; + SetPopupModeParentForPropertyEditor(AEditor); AEditor.ShowOnTop; end; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/baseideintf.pas lazarus-1.6+dfsg/components/ideintf/baseideintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/baseideintf.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/baseideintf.pas 2015-07-04 23:08:00.000000000 +0000 @@ -16,7 +16,7 @@ interface uses - Classes, SysUtils, FileUtil, LazConfigStorage, Dialogs, MacroIntf; + Classes, SysUtils, LazUTF8, LazConfigStorage, Dialogs, MacroIntf; type TGetIDEConfigStorage = function(const Filename: string; LoadFromDisk: Boolean diff -Nru lazarus-1.4.4+dfsg/components/ideintf/collectionpropeditform.pas lazarus-1.6+dfsg/components/ideintf/collectionpropeditform.pas --- lazarus-1.4.4+dfsg/components/ideintf/collectionpropeditform.pas 2014-06-15 11:52:37.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/collectionpropeditform.pas 2015-05-31 13:45:31.000000000 +0000 @@ -339,8 +339,11 @@ if CollectionListBox.Selected[I] then NewSelection.Add(Collection.Items[I]); end; - GlobalDesignHook.SetSelection(NewSelection); - GlobalDesignHook.LookupRoot := GetLookupRootForComponent(OwnerPersistent); + if GlobalDesignHook <> nil then + begin + GlobalDesignHook.SetSelection(NewSelection); + GlobalDesignHook.LookupRoot := GetLookupRootForComponent(OwnerPersistent); + end; finally NewSelection.Free; end; @@ -383,7 +386,8 @@ procedure TCollectionPropertyEditorForm.Modified; begin //debugln(['TCollectionPropertyEditorForm.Modified FOwnerPersistent=',DbgSName(FOwnerPersistent),' FCollection=',DbgSName(FCollection),' GlobalDesignHook.LookupRoot=',DbgSName(GlobalDesignHook.LookupRoot)]); - GlobalDesignHook.Modified(Self); + if GlobalDesignHook <> nil then + GlobalDesignHook.Modified(Self); end; end. diff -Nru lazarus-1.4.4+dfsg/components/ideintf/componenteditors.pas lazarus-1.6+dfsg/components/ideintf/componenteditors.pas --- lazarus-1.4.4+dfsg/components/ideintf/componenteditors.pas 2014-11-12 11:58:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/componenteditors.pas 2015-07-12 23:05:13.000000000 +0000 @@ -75,7 +75,9 @@ Flags: TComponentPasteSelectionFlags ): Boolean; virtual; abstract; function InvokeComponentEditor(AComponent: TComponent; - MenuIndex: integer): boolean; virtual; abstract; + {%H-}MenuIndex: integer): boolean; deprecated; + function InvokeComponentEditor(AComponent: TComponent): boolean; virtual; abstract; + function ChangeClass: boolean; virtual; abstract; function CanUndo: Boolean; virtual; abstract; function CanRedo: Boolean; virtual; abstract; @@ -429,6 +431,12 @@ TPropertyEditorFilterFunc = function(const ATestEditor: TPropertyEditor): Boolean of object; + TIDEComponentsMaster = class + function DrawNonVisualComponents(ALookupRoot: TComponent): Boolean; virtual; abstract; + end; + +var + IDEComponentsMaster: TIDEComponentsMaster = nil; procedure RegisterEditorForm(const AEditorForm: TObject; const AReference: TPersistent); procedure UnregisterEditorForm(const AEditorForm: TObject); @@ -952,7 +960,9 @@ begin APage:=Page; if (APage.Parent<>nil) and (APage.Parent is TCustomTabControl) then - Result:=TCustomTabControl(APage.Parent); + Result:=TCustomTabControl(APage.Parent) + else + Result:=nil; end; function TPageComponentEditor.Page: TCustomPage; @@ -1103,7 +1113,9 @@ begin APage:=Page; if (APage.Parent<>nil) and (APage.Parent is TNotebook) then - Result:=TNotebook(APage.Parent); + Result:=TNotebook(APage.Parent) + else + Result:=nil; end; function TUNBPageComponentEditor.Page: TPage; @@ -1519,6 +1531,12 @@ FHandlers[cedhtModified].CallNotifyEvents(Self); end; +function TComponentEditorDesigner.InvokeComponentEditor(AComponent: TComponent; + MenuIndex: integer): boolean; +begin + Result:=InvokeComponentEditor(AComponent,-1){%H-}; +end; + procedure TComponentEditorDesigner.DisconnectComponent; begin if Form=nil then exit; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/componentreg.pas lazarus-1.6+dfsg/components/ideintf/componentreg.pas --- lazarus-1.4.4+dfsg/components/ideintf/componentreg.pas 2015-08-26 12:24:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/componentreg.pas 2015-11-07 16:37:20.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: componentreg.pas 49716 2015-08-26 12:24:00Z maxim $ } +{ $Id: componentreg.pas 50243 2015-11-07 16:37:20Z juha $ } { /*************************************************************************** componentreg.pas @@ -24,8 +24,11 @@ interface uses - Classes, SysUtils, typinfo, Controls, ComCtrls, Forms, - Laz2_XMLCfg, LCLProc, fgl; + Classes, SysUtils, typinfo, AVL_Tree, fgl, + {$IFDEF CustomIDEComps} + CustomIDEComps, + {$ENDIF} + Controls, Laz2_XMLCfg, LCLProc; type TComponentPriorityCategory = ( @@ -80,23 +83,42 @@ private // Pages removed or renamed. They must be hidden in the palette. FHiddenPageNames: TStringList; + FVisible: boolean; public constructor Create; destructor Destroy; override; procedure Clear; procedure Assign(Source: TCompPaletteOptions); function IsDefault: Boolean; - function Load(XMLConfig: TXMLConfig): boolean; - function Save(XMLConfig: TXMLConfig): boolean; + procedure Load(XMLConfig: TXMLConfig; Path: String); + procedure Save(XMLConfig: TXMLConfig; Path: String); public property HiddenPageNames: TStringList read FHiddenPageNames; + property Visible: boolean read FVisible write FVisible; + end; + + { TCompPaletteUserOrder } + + // Like TCompPaletteOptions but collects all pages and components, + // including the original ones. The palette is later synchronized with this. + TCompPaletteUserOrder = class(TBaseCompPaletteOptions) + private + fPalette: TBaseComponentPalette; + // Reference to either EnvironmentOptions.ComponentPaletteOptions or a copy of it. + fOptions: TCompPaletteOptions; + public + constructor Create(aPalette: TBaseComponentPalette); + destructor Destroy; override; + procedure Clear; + function SortPagesAndCompsUserOrder: Boolean; + public + property Options: TCompPaletteOptions read fOptions write fOptions; end; { TRegisteredComponent } TRegisteredComponent = class private - FButton: TComponent; FComponentClass: TComponentClass; FOnGetCreationClass: TOnGetCreationClass; FOrigPageName: string; @@ -113,18 +135,15 @@ procedure AddToPalette; virtual; function CanBeCreatedInDesigner: boolean; virtual; function GetCreationClass: TComponentClass; virtual; - function IsTControl: boolean; public property ComponentClass: TComponentClass read FComponentClass; property OnGetCreationClass: TOnGetCreationClass read FOnGetCreationClass write FOnGetCreationClass; property OrigPageName: string read FOrigPageName; property RealPage: TBaseComponentPage read FRealPage write FRealPage; - property Button: TComponent read FButton write FButton; property Visible: boolean read FVisible write SetVisible; end; - TRegisteredComponentClass = class of TRegisteredComponent; TRegisteredComponentList = specialize TFPGList<TRegisteredComponent>; @@ -132,23 +151,19 @@ TBaseComponentPage = class private - FPageComponent: TCustomPage; FPageName: string; FPalette: TBaseComponentPalette; - FSelectButton: TComponent; FVisible: boolean; protected + FIndex: Integer; // Index in the Pages container. procedure SetVisible(const AValue: boolean); virtual; - procedure OnComponentVisibleChanged(AComponent: TRegisteredComponent); virtual; + procedure OnComponentVisibleChanged({%H-}AComponent: TRegisteredComponent); virtual; public constructor Create(const ThePageName: string); destructor Destroy; override; - function GetScrollBox: TScrollBox; public property PageName: string read FPageName; property Palette: TBaseComponentPalette read FPalette write FPalette; - property PageComponent: TCustomPage read FPageComponent write FPageComponent; - property SelectButton: TComponent read FSelectButton write FSelectButton; property Visible: boolean read FVisible write SetVisible; end; @@ -157,15 +172,22 @@ { TBaseComponentPalette } TComponentPaletteHandlerType = ( - cphtUpdateVisible, // visibility of component palette icons is recomputed - cphtComponentAdded // Typically selection is changed after component was added. + cphtUpdateVisible, // Visibility of component palette icons is recomputed + cphtComponentAdded, // Typically selection is changed after component was added. + cphtSelectionChanged ); + TComponentSelectionMode = ( + csmSingle, // reset selection on component add + csmMulty // don't reset selection on component add + ); + TEndUpdatePaletteEvent = procedure(Sender: TObject; PaletteChanged: boolean) of object; TGetComponentClassEvent = procedure(const AClass: TComponentClass) of object; TUpdateCompVisibleEvent = procedure(AComponent: TRegisteredComponent; var VoteVisible: integer { Visible>0 } ) of object; - TComponentAddedEvent = procedure of object; + TPaletteHandlerEvent = procedure of object; + TComponentAddedEvent = procedure(ALookupRoot, AComponent: TComponent; ARegisteredComponent: TRegisteredComponent) of object; RegisterUnitComponentProc = procedure(const Page, UnitName: ShortString; ComponentClass: TComponentClass); TBaseComponentPageList = specialize TFPGList<TBaseComponentPage>; @@ -173,94 +195,102 @@ TBaseComponentPalette = class private - FHandlers: array[TComponentPaletteHandlerType] of TMethodList; - FBaseComponentPageClass: TBaseComponentPageClass; - FRegisteredComponentClass: TRegisteredComponentClass; - FOnBeginUpdate: TNotifyEvent; - FOnEndUpdate: TEndUpdatePaletteEvent; - FHideControls: boolean; - FUpdateLock: integer; - fChanged: boolean; - fChangeStamp: integer; - // Used to find names that differ in character case only. - fOrigPageHelper: TStringList; - procedure AddHandler(HandlerType: TComponentPaletteHandlerType; - const AMethod: TMethod; AsLast: boolean = false); - procedure RemoveHandler(HandlerType: TComponentPaletteHandlerType; - const AMethod: TMethod); - protected // List of pages, created based on user ordered and original pages. fPages: TBaseComponentPageList; // List of all components in all pages. fComps: TRegisteredComponentList; // New pages added and their priorities, ordered by priority. fOrigPagePriorities: TPagePriorityList; - procedure DoChange; virtual; - procedure DoBeginUpdate; virtual; - procedure DoEndUpdate(Changed: boolean); virtual; - procedure OnPageAddedComponent({%H-}Component: TRegisteredComponent); virtual; - procedure OnPageRemovedComponent({%H-}Page: TBaseComponentPage; - {%H-}Component: TRegisteredComponent); virtual; - procedure OnComponentVisibleChanged({%H-}AComponent: TRegisteredComponent); virtual; - procedure OnPageVisibleChanged({%H-}APage: TBaseComponentPage); virtual; - function VoteCompVisibility(AComponent: TRegisteredComponent): Boolean; virtual; - function GetSelected: TRegisteredComponent; virtual; - procedure SetBaseComponentPageClass(const AValue: TBaseComponentPageClass); virtual; - procedure SetRegisteredComponentClass(const AValue: TRegisteredComponentClass); virtual; - procedure SetSelected(const AValue: TRegisteredComponent); virtual; abstract; + // User ordered + original pages and components + fUserOrder: TCompPaletteUserOrder; + // Component cache, a tree of TRegisteredComponent sorted for componentclass + fComponentCache: TAVLTree; + // Two page caches, one for original pages, one for user ordered pages. + // Lists have page names. Object holds another StringList for component names. + fOrigComponentPageCache: TStringList; // Original + fUserComponentPageCache: TStringList; // User ordered + // Used to find names that differ in character case only. + fOrigPageHelper: TStringList; + fHandlers: array[TComponentPaletteHandlerType] of TMethodList; + fComponentPageClass: TBaseComponentPageClass; + fSelected: TRegisteredComponent; + fSelectionMode: TComponentSelectionMode; + fHideControls: boolean; + fUpdateLock: integer; + fChanged: boolean; + fChangeStamp: integer; + fOnClassSelected: TNotifyEvent; + procedure AddHandler(HandlerType: TComponentPaletteHandlerType; + const AMethod: TMethod; AsLast: boolean = false); + procedure RemoveHandler(HandlerType: TComponentPaletteHandlerType; + const AMethod: TMethod); + procedure CacheOrigComponentPages; + function CreatePagesFromUserOrder: Boolean; + procedure DoChange; + procedure DoPageAddedComponent(Component: TRegisteredComponent); + procedure DoPageRemovedComponent(Component: TRegisteredComponent); + function VoteCompVisibility(AComponent: TRegisteredComponent): Boolean; + function GetSelected: TRegisteredComponent; + function GetMultiSelect: boolean; + procedure SetSelected(const AValue: TRegisteredComponent); + procedure SetMultiSelect(AValue: boolean); public - constructor Create; + constructor Create(EnvPaletteOptions: TCompPaletteOptions); destructor Destroy; override; procedure Clear; - function AssignOrigCompsForPage(PageName: string; - DestComps: TStringList): Boolean; virtual; abstract; - function AssignOrigVisibleCompsForPage(PageName: string; - DestComps: TStringList): Boolean; virtual; abstract; - function RefUserCompsForPage(PageName: string): TStringList; virtual; abstract; + function AssignOrigCompsForPage(PageName: string; DestComps: TStringList): Boolean; + function AssignOrigVisibleCompsForPage(PageName: string; DestComps: TStringList): Boolean; + function RefUserCompsForPage(PageName: string): TStringList; procedure BeginUpdate(Change: boolean); procedure EndUpdate; function IsUpdateLocked: boolean; procedure IncChangeStamp; - procedure DoAfterComponentAdded; virtual; function IndexOfPageName(const APageName: string): integer; function IndexOfPageWithName(const APageName: string): integer; function GetPage(const APageName: string; aCaseSens: Boolean = False): TBaseComponentPage; procedure AddComponent(NewComponent: TRegisteredComponent); procedure RemoveComponent(AComponent: TRegisteredComponent); - function FindComponent(const CompClassName: string): TRegisteredComponent; virtual; - function FindButton(Button: TComponent): TRegisteredComponent; + function FindComponent(const CompClassName: string): TRegisteredComponent; function CreateNewClassName(const Prefix: string): string; - function IndexOfPageComponent(AComponent: TComponent): integer; - procedure Update(ForceUpdateAll: Boolean); virtual; abstract; + procedure Update({%H-}ForceUpdateAll: Boolean); virtual; procedure IterateRegisteredClasses(Proc: TGetComponentClassEvent); - procedure RegisterCustomIDEComponents( - const RegisterProc: RegisterUnitComponentProc); virtual; abstract; + procedure SetSelectedComp(AComponent: TRegisteredComponent; AMulti: Boolean); + // Registered handlers + procedure DoAfterComponentAdded(ALookupRoot, AComponent: TComponent; + ARegisteredComponent: TRegisteredComponent); virtual; + procedure DoAfterSelectionChanged; procedure RemoveAllHandlersOfObject(AnObject: TObject); - procedure AddHandlerUpdateVisible( - const OnUpdateCompVisibleEvent: TUpdateCompVisibleEvent; - AsLast: boolean = false); - procedure RemoveHandlerUpdateVisible( - const OnUpdateCompVisibleEvent: TUpdateCompVisibleEvent); - procedure AddHandlerComponentAdded( - const OnComponentAddedEvent: TComponentAddedEvent); - procedure RemoveHandlerComponentAdded( - const OnComponentAddedEvent: TComponentAddedEvent); + procedure AddHandlerUpdateVisible(const OnUpdateCompVisibleEvent: TUpdateCompVisibleEvent; + AsLast: boolean = false); + procedure RemoveHandlerUpdateVisible(OnUpdateCompVisibleEvent: TUpdateCompVisibleEvent); + procedure AddHandlerComponentAdded(OnComponentAddedEvent: TComponentAddedEvent); + procedure RemoveHandlerComponentAdded(OnComponentAddedEvent: TComponentAddedEvent); + procedure AddHandlerSelectionChanged(OnSelectionChangedEvent: TPaletteHandlerEvent); + procedure RemoveHandlerSelectionChanged(OnSelectionChangedEvent: TPaletteHandlerEvent); + {$IFDEF CustomIDEComps} + procedure RegisterCustomIDEComponents(RegisterProc: RegisterUnitComponentProc); + {$ENDIF} public property Pages: TBaseComponentPageList read fPages; property Comps: TRegisteredComponentList read fComps; property OrigPagePriorities: TPagePriorityList read fOrigPagePriorities; - property BaseComponentPageClass: TBaseComponentPageClass read FBaseComponentPageClass; - property RegisteredComponentClass: TRegisteredComponentClass - read FRegisteredComponentClass; - property UpdateLock: integer read FUpdateLock; + property ComponentPageClass: TBaseComponentPageClass read FComponentPageClass + write FComponentPageClass; property ChangeStamp: integer read fChangeStamp; - property OnBeginUpdate: TNotifyEvent read FOnBeginUpdate write FOnBeginUpdate; - property OnEndUpdate: TEndUpdatePaletteEvent read FOnEndUpdate write FOnEndUpdate; property HideControls: boolean read FHideControls write FHideControls; property Selected: TRegisteredComponent read GetSelected write SetSelected; + property MultiSelect: boolean read GetMultiSelect write SetMultiSelect; + property SelectionMode: TComponentSelectionMode read FSelectionMode write FSelectionMode; + // User ordered + original pages and components. + property UserOrder: TCompPaletteUserOrder read fUserOrder; + property OnClassSelected: TNotifyEvent read fOnClassSelected write fOnClassSelected; end; + {$IFDEF VerboseComponentPalette} +const + CompPalVerbPgName = 'Dialogs'; //'Standard'; + {$ENDIF} var IDEComponentPalette: TBaseComponentPalette = nil; @@ -296,17 +326,27 @@ Result:=p1.Level-p2.Level; end; -function CompareIDEComponentByClassName(Data1, Data2: pointer): integer; +function CompareIDEComponentByClassName(Data1, Data2: Pointer): integer; var Comp1: TRegisteredComponent absolute Data1; Comp2: TRegisteredComponent absolute Data2; begin - // Both CompareText and AnsiCompareText had problems here sometimes - // for some reason. See reports #27660 and #28546 for details. + // The same case-insensitive compare function should be used in this function + // and in CompareClassNameWithRegisteredComponent. Result:=ShortCompareText(Comp1.ComponentClass.Classname, Comp2.ComponentClass.Classname); end; +function CompareClassNameWithRegisteredComponent(Key, Data: Pointer): integer; +var + AClassName: String; + RegComp: TRegisteredComponent; +begin + AClassName:=String(Key); + RegComp:=TRegisteredComponent(Data); + Result:=ShortCompareText(AClassName, RegComp.ComponentClass.ClassName); +end; + function dbgs(const c: TComponentPriorityCategory): string; begin Result:=GetEnumName(TypeInfo(TComponentPriorityCategory),ord(c)); @@ -366,6 +406,7 @@ begin inherited Create; FHiddenPageNames := TStringList.Create; + FVisible := True; end; destructor TCompPaletteOptions.Destroy; @@ -384,6 +425,7 @@ begin inherited Assign(Source); FHiddenPageNames.Assign(Source.FHiddenPageNames); + FVisible := Source.FVisible; end; function TCompPaletteOptions.IsDefault: Boolean; @@ -393,7 +435,7 @@ and (HiddenPageNames.Count = 0); end; -function TCompPaletteOptions.Load(XMLConfig: TXMLConfig): boolean; +procedure TCompPaletteOptions.Load(XMLConfig: TXMLConfig; Path: String); var CompList: TStringList; SubPath, CompPath: String; @@ -401,10 +443,13 @@ PageCount, CompCount: Integer; i, j: Integer; begin - Result:=False; + Path := Path + BasePath; try + FVisible:=XMLConfig.GetValue(Path+'Visible/Value',true); + + // Pages FPageNames.Clear; - SubPath:=BasePath+'Pages/'; + SubPath:=Path+'Pages/'; PageCount:=XMLConfig.GetValue(SubPath+'Count', 0); for i:=1 to PageCount do begin PageName:=XMLConfig.GetValue(SubPath+'Item'+IntToStr(i)+'/Value', ''); @@ -412,8 +457,9 @@ FPageNames.Add(PageName); end; + // HiddenPages FHiddenPageNames.Clear; - SubPath:=BasePath+'HiddenPages/'; + SubPath:=Path+'HiddenPages/'; PageCount:=XMLConfig.GetValue(SubPath+'Count', 0); for i:=1 to PageCount do begin PageName:=XMLConfig.GetValue(SubPath+'Item'+IntToStr(i)+'/Value', ''); @@ -421,8 +467,9 @@ FHiddenPageNames.Add(PageName); end; + // ComponentPages FComponentPages.Clear; - SubPath:=BasePath+'ComponentPages/'; + SubPath:=Path+'ComponentPages/'; PageCount:=XMLConfig.GetValue(SubPath+'Count', 0); for i:=1 to PageCount do begin CompPath:=SubPath+'Page'+IntToStr(i)+'/'; @@ -441,30 +488,31 @@ exit; end; end; - Result:=True; end; -function TCompPaletteOptions.Save(XMLConfig: TXMLConfig): boolean; +procedure TCompPaletteOptions.Save(XMLConfig: TXMLConfig; Path: String); var CompList: TStringList; SubPath, CompPath: String; i, j: Integer; begin - Result:=False; try - SubPath:=BasePath+'Pages/'; + Path := Path + BasePath; + XMLConfig.SetDeleteValue(Path+'Visible/Value', FVisible,true); + + SubPath:=Path+'Pages/'; XMLConfig.DeletePath(SubPath); XMLConfig.SetDeleteValue(SubPath+'Count', FPageNames.Count, 0); for i:=0 to FPageNames.Count-1 do XMLConfig.SetDeleteValue(SubPath+'Item'+IntToStr(i+1)+'/Value', FPageNames[i], ''); - SubPath:=BasePath+'HiddenPages/'; + SubPath:=Path+'HiddenPages/'; XMLConfig.DeletePath(SubPath); XMLConfig.SetDeleteValue(SubPath+'Count', FHiddenPageNames.Count, 0); for i:=0 to FHiddenPageNames.Count-1 do XMLConfig.SetDeleteValue(SubPath+'Item'+IntToStr(i+1)+'/Value', FHiddenPageNames[i], ''); - SubPath:=BasePath+'ComponentPages/'; + SubPath:=Path+'ComponentPages/'; XMLConfig.DeletePath(SubPath); XMLConfig.SetDeleteValue(SubPath+'Count', FComponentPages.Count, 0); for i:=0 to FComponentPages.Count-1 do begin @@ -481,7 +529,61 @@ exit; end; end; - Result:=true; +end; + +{ TCompPaletteUserOrder } + +constructor TCompPaletteUserOrder.Create(aPalette: TBaseComponentPalette); +begin + inherited Create; + fPalette:=aPalette; +end; + +destructor TCompPaletteUserOrder.Destroy; +begin + Clear; + inherited Destroy; +end; + +procedure TCompPaletteUserOrder.Clear; +begin + inherited Clear; +end; + +function TCompPaletteUserOrder.SortPagesAndCompsUserOrder: Boolean; +// Calculate page order using user config and default order. User config takes priority. +// This order will finally be shown in the palette. +var + DstComps: TStringList; + PageI, i: Integer; + PgName: String; +begin + Result:=True; + Clear; + fPalette.CacheOrigComponentPages; + // First add user defined page order from EnvironmentOptions, + FComponentPages.Assign(fOptions.PageNames); + // then add other pages which don't have user configuration + for PageI := 0 to fPalette.OrigPagePriorities.Count-1 do + begin + PgName:=fPalette.OrigPagePriorities.Keys[PageI]; + if (FComponentPages.IndexOf(PgName) = -1) + and (fOptions.HiddenPageNames.IndexOf(PgName) = -1) then + FComponentPages.Add(PgName); + end; + // Map components with their pages + for PageI := 0 to FComponentPages.Count-1 do + begin + PgName := FComponentPages[PageI]; + DstComps := TStringList.Create; + DstComps.CaseSensitive := True; + FComponentPages.Objects[PageI] := DstComps; + i := fOptions.ComponentPages.IndexOf(PgName); + if i >= 0 then // Add components reordered by user. + DstComps.Assign(fOptions.ComponentPages.Objects[i] as TStringList) + else // Add components that were not reordered. + fPalette.AssignOrigCompsForPage(PgName, DstComps); + end; end; { TRegisteredComponent } @@ -506,7 +608,6 @@ begin if Assigned(FRealPage) and Assigned(FRealPage.Palette) then FRealPage.Palette.RemoveComponent(Self); - FreeAndNil(FButton); inherited Destroy; end; @@ -540,11 +641,6 @@ OnGetCreationClass(Self,Result); end; -function TRegisteredComponent.IsTControl: boolean; -begin - Result:=ComponentClass.InheritsFrom(TControl); -end; - { TBaseComponentPage } constructor TBaseComponentPage.Create(const ThePageName: string); @@ -555,8 +651,6 @@ destructor TBaseComponentPage.Destroy; begin - FreeAndNil(FPageComponent); - FreeAndNil(FSelectButton); inherited Destroy; end; @@ -564,32 +658,34 @@ begin if FVisible=AValue then exit; FVisible:=AValue; - if (FPalette<>nil) then - FPalette.OnPageVisibleChanged(Self); + //if (FPalette<>nil) then + // FPalette.OnPageVisibleChanged(Self); end; procedure TBaseComponentPage.OnComponentVisibleChanged(AComponent: TRegisteredComponent); begin - if FPalette<>nil then - FPalette.OnComponentVisibleChanged(AComponent); -end; -function TBaseComponentPage.GetScrollBox: TScrollBox; -begin - if Assigned(PageComponent) and (PageComponent.ComponentCount > 0) - and (PageComponent.Components[0] is TScrollBox) then - Result := TScrollBox(PageComponent.Components[0]) - else - Result := Nil; end; { TBaseComponentPalette } -constructor TBaseComponentPalette.Create; +constructor TBaseComponentPalette.Create(EnvPaletteOptions: TCompPaletteOptions); begin + fSelectionMode:=csmSingle; fPages:=TBaseComponentPageList.Create; fComps:=TRegisteredComponentList.Create; fOrigPagePriorities:=TPagePriorityList.Create; + fUserOrder:=TCompPaletteUserOrder.Create(Self); + fUserOrder.Options:=EnvPaletteOptions; // EnvironmentOptions.ComponentPaletteOptions; + fComponentCache:=TAVLTree.Create(@CompareIDEComponentByClassName); + fOrigComponentPageCache:=TStringList.Create; + fOrigComponentPageCache.OwnsObjects:=True; + fOrigComponentPageCache.CaseSensitive:=True; + fOrigComponentPageCache.Sorted:=True; + fUserComponentPageCache:=TStringList.Create; + fUserComponentPageCache.OwnsObjects:=True; + fUserComponentPageCache.CaseSensitive:=True; + fUserComponentPageCache.Sorted:=True; fOrigPageHelper:=TStringList.Create; // Note: CaseSensitive = False fOrigPageHelper.Sorted:=True; end; @@ -600,6 +696,10 @@ begin Clear; FreeAndNil(fOrigPageHelper); + FreeAndNil(fUserComponentPageCache); + FreeAndNil(fOrigComponentPageCache); + FreeAndNil(fComponentCache); + FreeAndNil(fUserOrder); FreeAndNil(fOrigPagePriorities); FreeAndNil(fComps); FreeAndNil(fPages); @@ -622,106 +722,225 @@ fOrigPageHelper.Clear; end; -procedure TBaseComponentPalette.AddHandler(HandlerType: TComponentPaletteHandlerType; - const AMethod: TMethod; AsLast: boolean); -begin - if FHandlers[HandlerType]=nil then - FHandlers[HandlerType]:=TMethodList.Create; - FHandlers[HandlerType].Add(AMethod,AsLast); +procedure TBaseComponentPalette.CacheOrigComponentPages; +var + sl: TStringList; + PageI, CompI: Integer; + PgName: string; + Comp: TRegisteredComponent; +begin + if fOrigComponentPageCache.Count > 0 then Exit; // Fill cache only once. + for PageI := 0 to fOrigPagePriorities.Count-1 do + begin + PgName:=fOrigPagePriorities.Keys[PageI]; + Assert((PgName <> '') and not fOrigComponentPageCache.Find(PgName, CompI), + Format('CacheComponentPages: %s already cached.', [PgName])); + // Add a cache StringList for this page name. + sl := TStringList.Create; + sl.CaseSensitive := True; + fOrigComponentPageCache.AddObject(PgName, sl); + // Find all components for this page and add them to cache. + for CompI := 0 to fComps.Count-1 do begin + Comp := fComps[CompI]; + if Comp.OrigPageName = PgName then //if SameText(Comp.OrigPageName, PgName) then + sl.AddObject(Comp.ComponentClass.ClassName, Comp); + end; + end; end; -function TBaseComponentPalette.GetSelected: TRegisteredComponent; +function TBaseComponentPalette.CreatePagesFromUserOrder: Boolean; +var + UserPageI, CurPgInd, CompI: Integer; + aVisibleCompCnt: integer; + PgName: String; + Pg: TBaseComponentPage; + CompNames, UserComps: TStringList; + Comp: TRegisteredComponent; +begin + Result := True; + fUserComponentPageCache.Clear; + for UserPageI := 0 to fUserOrder.ComponentPages.Count-1 do + begin + PgName := fUserOrder.ComponentPages[UserPageI]; + CurPgInd := IndexOfPageName(PgName); + if CurPgInd = -1 then begin + // Create a new page + {$IFDEF VerboseComponentPalette} + DebugLn(['TComponentPalette.CreatePagesFromUserOrder, page ', PgName, ' index ',UserPageI]); + {$ENDIF} + Pg := ComponentPageClass.Create(PgName); + fPages.Insert(UserPageI, Pg); + Pg.Palette := Self; + end + else if CurPgInd <> UserPageI then begin + {$IFDEF VerboseComponentPalette} + DebugLn(['TComponentPalette.CreatePagesFromUserOrder, move ', PgName, ' from ',CurPgInd, ' to ',UserPageI]); + {$ENDIF} + fPages.Move(CurPgInd, UserPageI); // Move page to right place. + end; + Pg := Pages[UserPageI]; + Pg.FIndex := UserPageI; + Assert(PgName = Pg.PageName, + Format('TComponentPalette.CreatePagesFromUserOrder: Page names differ, "%s" and "%s".', + [PgName, Pg.PageName])); + // New cache page + UserComps := TStringList.Create; + UserComps.CaseSensitive := True; + fUserComponentPageCache.AddObject(PgName, UserComps); + // Associate components belonging to this page + aVisibleCompCnt := 0; + CompNames := TStringList(fUserOrder.ComponentPages.Objects[UserPageI]); + for CompI := 0 to CompNames.Count-1 do + begin + Comp := FindComponent(CompNames[CompI]); + if not Assigned(Comp) then Continue; + Comp.RealPage := Pg; + UserComps.AddObject(CompNames[CompI], Comp); + if VoteCompVisibility(Comp) then + inc(aVisibleCompCnt); + end; + {$IFDEF VerboseComponentPalette} + if PgName=CompPalVerbPgName then + debugln(['TComponentPalette.CreatePagesFromUserOrder HideControls=',HideControls,' aVisibleCompCnt=',aVisibleCompCnt]); + {$ENDIF} + Pg.Visible := (CompareText(PgName,'Hidden')<>0) and (aVisibleCompCnt>0); + end; + // Remove left-over pages. + while fPages.Count > fUserOrder.ComponentPages.Count do begin + Pg := fPages[fPages.Count-1]; + {$IFDEF VerboseComponentPalette} + DebugLn(['TComponentPalette.CreatePagesFromUserOrder: Deleting left-over page=', + Pg.PageName, ', Index=', fPages.Count-1]); + {$ENDIF} + fPages.Delete(fPages.Count-1); + Pg.Free; + end; +end; + +function TBaseComponentPalette.AssignOrigCompsForPage(PageName: string; + DestComps: TStringList): Boolean; +// Returns True if the page was found. +var + sl: TStringList; + i: Integer; begin - result := nil; + Result := fOrigComponentPageCache.Find(PageName, i); + if Result then begin + sl := fOrigComponentPageCache.Objects[i] as TStringList; + DestComps.Assign(sl); + end + else + DestComps.Clear; + //raise Exception.Create(Format('AssignOrigCompsForPage: %s not found in cache.', [PageName])); end; -procedure TBaseComponentPalette.RemoveHandler(HandlerType: TComponentPaletteHandlerType; - const AMethod: TMethod); +function TBaseComponentPalette.AssignOrigVisibleCompsForPage(PageName: string; + DestComps: TStringList): Boolean; +// Returns True if the page was found. +var + sl: TStringList; + i: Integer; begin - FHandlers[HandlerType].Remove(AMethod); + DestComps.Clear; + Result := fOrigComponentPageCache.Find(PageName, i); + if not Result then Exit; + sl := fOrigComponentPageCache.Objects[i] as TStringList; + for i := 0 to sl.Count-1 do + if FindComponent(sl[i]).Visible then + DestComps.Add(sl[i]); end; -procedure TBaseComponentPalette.DoChange; +function TBaseComponentPalette.RefUserCompsForPage(PageName: string): TStringList; +var + i: Integer; begin - if FUpdateLock>0 then - fChanged:=true + if fUserComponentPageCache.Find(PageName, i) then + Result := fUserComponentPageCache.Objects[i] as TStringList else - Update(False); + Result := Nil; end; -procedure TBaseComponentPalette.DoBeginUpdate; +function TBaseComponentPalette.GetSelected: TRegisteredComponent; begin - + Result := fSelected; end; -procedure TBaseComponentPalette.DoEndUpdate(Changed: boolean); +function TBaseComponentPalette.GetMultiSelect: boolean; begin - if Assigned(OnEndUpdate) then OnEndUpdate(Self,Changed); + Result := FSelectionMode = csmMulty; end; -procedure TBaseComponentPalette.OnPageAddedComponent(Component: TRegisteredComponent); +procedure TBaseComponentPalette.SetSelected(const AValue: TRegisteredComponent); begin - DoChange; + if fSelected=AValue then exit; + fSelected:=AValue; + if fSelected<>nil then begin + if (fSelected.RealPage=nil) or (fSelected.RealPage.Palette<>Self) + or (not fSelected.Visible) + or (not fSelected.CanBeCreatedInDesigner) then + fSelected:=nil; + end; + DoAfterSelectionChanged; end; -procedure TBaseComponentPalette.OnPageRemovedComponent(Page: TBaseComponentPage; - Component: TRegisteredComponent); +procedure TBaseComponentPalette.SetMultiSelect(AValue: boolean); begin - DoChange; + if AValue then + FSelectionMode := csmMulty + else + FSelectionMode := csmSingle; end; -procedure TBaseComponentPalette.OnComponentVisibleChanged(AComponent: TRegisteredComponent); +procedure TBaseComponentPalette.AddHandler(HandlerType: TComponentPaletteHandlerType; + const AMethod: TMethod; AsLast: boolean); begin - ; + if FHandlers[HandlerType]=nil then + FHandlers[HandlerType]:=TMethodList.Create; + FHandlers[HandlerType].Add(AMethod,AsLast); end; -procedure TBaseComponentPalette.OnPageVisibleChanged(APage: TBaseComponentPage); +procedure TBaseComponentPalette.RemoveHandler(HandlerType: TComponentPaletteHandlerType; + const AMethod: TMethod); begin - ; + FHandlers[HandlerType].Remove(AMethod); end; -function TBaseComponentPalette.VoteCompVisibility(AComponent: TRegisteredComponent): Boolean; -var - i, Vote: Integer; +procedure TBaseComponentPalette.DoChange; begin - Vote:=1; - if HideControls and AComponent.IsTControl then - Dec(Vote); - i:=FHandlers[cphtUpdateVisible].Count; - while FHandlers[cphtUpdateVisible].NextDownIndex(i) do - TUpdateCompVisibleEvent(FHandlers[cphtUpdateVisible][i])(AComponent,Vote); - Result:=Vote>0; - AComponent.Visible:=Result; + if FUpdateLock>0 then + fChanged:=true + else + Update(False); end; -procedure TBaseComponentPalette.SetBaseComponentPageClass( - const AValue: TBaseComponentPageClass); +procedure TBaseComponentPalette.DoPageAddedComponent(Component: TRegisteredComponent); begin - FBaseComponentPageClass:=AValue; + fComponentCache.Add(Component); + DoChange; end; -procedure TBaseComponentPalette.SetRegisteredComponentClass( - const AValue: TRegisteredComponentClass); +procedure TBaseComponentPalette.DoPageRemovedComponent(Component: TRegisteredComponent); begin - FRegisteredComponentClass:=AValue; + fComponentCache.Remove(Component); + DoChange; end; procedure TBaseComponentPalette.BeginUpdate(Change: boolean); begin inc(FUpdateLock); - if FUpdateLock=1 then begin - fChanged:=Change; - DoBeginUpdate; - if Assigned(OnBeginUpdate) then OnBeginUpdate(Self); - end else + if FUpdateLock=1 then + fChanged:=Change + else fChanged:=fChanged or Change; end; procedure TBaseComponentPalette.EndUpdate; begin - if FUpdateLock<=0 then RaiseException('TBaseComponentPalette.EndUpdate'); + if FUpdateLock<=0 then + RaiseException('TBaseComponentPalette.EndUpdate'); dec(FUpdateLock); - if FUpdateLock=0 then DoEndUpdate(fChanged); + if (FUpdateLock=0) and fChanged then + Update(False); end; function TBaseComponentPalette.IsUpdateLocked: boolean; @@ -734,15 +953,6 @@ Inc(fChangeStamp); end; -procedure TBaseComponentPalette.DoAfterComponentAdded; -var - i: Integer; -begin - i:=FHandlers[cphtComponentAdded].Count; - while FHandlers[cphtComponentAdded].NextDownIndex(i) do - TComponentAddedEvent(FHandlers[cphtComponentAdded][i])(); -end; - function TBaseComponentPalette.IndexOfPageName(const APageName: string): integer; begin Result:=Pages.Count-1; // Case sensitive search @@ -784,7 +994,7 @@ and (ComparePriority(NewPriority,Comps[InsertIndex].GetPriority)<=0) do inc(InsertIndex); fComps.Insert(InsertIndex,NewComponent); - OnPageAddedComponent(NewComponent); + DoPageAddedComponent(NewComponent); if NewComponent.FOrigPageName = '' then Exit; @@ -811,30 +1021,19 @@ begin fComps.Remove(AComponent); AComponent.RealPage:=nil; - //ToDo: fix OnPageRemovedComponent(AComponent.RealPage,AComponent); + //ToDo: fix DoPageRemovedComponent(AComponent); end; function TBaseComponentPalette.FindComponent(const CompClassName: string): TRegisteredComponent; var - i: Integer; + ANode: TAVLTreeNode; begin - for i:=0 to Comps.Count-1 do begin - Result:=Comps[i]; - if CompareText(Result.ComponentClass.ClassName,CompClassName) = 0 then - exit; - end; - Result:=nil; -end; - -function TBaseComponentPalette.FindButton(Button: TComponent): TRegisteredComponent; -var - i: Integer; -begin - for i:=0 to Comps.Count-1 do begin - Result:=Comps[i]; - if Result.Button=Button then exit; - end; - Result:=nil; + ANode:=fComponentCache.FindKey(Pointer(CompClassName), + @CompareClassNameWithRegisteredComponent); + if ANode<>nil then + Result:=TRegisteredComponent(ANode.Data) + else + Result:=nil; end; function TBaseComponentPalette.CreateNewClassName(const Prefix: string): string; @@ -852,14 +1051,10 @@ end; end; -function TBaseComponentPalette.IndexOfPageComponent(AComponent: TComponent): integer; +procedure TBaseComponentPalette.Update(ForceUpdateAll: Boolean); begin - if AComponent<>nil then begin - Result:=Pages.Count-1; - while (Result>=0) and (Pages[Result].PageComponent<>AComponent) do - dec(Result); - end else - Result:=-1; + fUserOrder.SortPagesAndCompsUserOrder; + CreatePagesFromUserOrder; end; procedure TBaseComponentPalette.IterateRegisteredClasses(Proc: TGetComponentClassEvent); @@ -870,6 +1065,47 @@ Proc(Comps[i].ComponentClass); end; +procedure TBaseComponentPalette.SetSelectedComp(AComponent: TRegisteredComponent; AMulti: Boolean); +begin + MultiSelect := AMulti; + Selected := AComponent; +end; + +// Execute handlers + +function TBaseComponentPalette.VoteCompVisibility(AComponent: TRegisteredComponent): Boolean; +var + i, Vote: Integer; +begin + Vote:=1; + if HideControls and AComponent.ComponentClass.InheritsFrom(TControl) then + Dec(Vote); + i:=FHandlers[cphtUpdateVisible].Count; + while FHandlers[cphtUpdateVisible].NextDownIndex(i) do + TUpdateCompVisibleEvent(FHandlers[cphtUpdateVisible][i])(AComponent,Vote); + Result:=Vote>0; + AComponent.Visible:=Result; +end; + +procedure TBaseComponentPalette.DoAfterComponentAdded(ALookupRoot, + AComponent: TComponent; ARegisteredComponent: TRegisteredComponent); +var + i: Integer; +begin + i:=FHandlers[cphtComponentAdded].Count; + while FHandlers[cphtComponentAdded].NextDownIndex(i) do + TComponentAddedEvent(FHandlers[cphtComponentAdded][i])(ALookupRoot, AComponent, ARegisteredComponent); +end; + +procedure TBaseComponentPalette.DoAfterSelectionChanged; +var + i: Integer; +begin + i:=FHandlers[cphtSelectionChanged].Count; + while FHandlers[cphtSelectionChanged].NextDownIndex(i) do + TPaletteHandlerEvent(FHandlers[cphtSelectionChanged][i])(); +end; + procedure TBaseComponentPalette.RemoveAllHandlersOfObject(AnObject: TObject); var HandlerType: TComponentPaletteHandlerType; @@ -878,6 +1114,9 @@ FHandlers[HandlerType].RemoveAllMethodsOfObject(AnObject); end; +// Add / Remove handlers + +// UpdateVisible procedure TBaseComponentPalette.AddHandlerUpdateVisible( const OnUpdateCompVisibleEvent: TUpdateCompVisibleEvent; AsLast: boolean); begin @@ -885,22 +1124,45 @@ end; procedure TBaseComponentPalette.RemoveHandlerUpdateVisible( - const OnUpdateCompVisibleEvent: TUpdateCompVisibleEvent); + OnUpdateCompVisibleEvent: TUpdateCompVisibleEvent); begin RemoveHandler(cphtUpdateVisible,TMethod(OnUpdateCompVisibleEvent)); end; +// ComponentAdded procedure TBaseComponentPalette.AddHandlerComponentAdded( - const OnComponentAddedEvent: TComponentAddedEvent); + OnComponentAddedEvent: TComponentAddedEvent); begin AddHandler(cphtComponentAdded,TMethod(OnComponentAddedEvent)); end; procedure TBaseComponentPalette.RemoveHandlerComponentAdded( - const OnComponentAddedEvent: TComponentAddedEvent); + OnComponentAddedEvent: TComponentAddedEvent); begin RemoveHandler(cphtComponentAdded,TMethod(OnComponentAddedEvent)); end; +// SelectionChanged +procedure TBaseComponentPalette.AddHandlerSelectionChanged( + OnSelectionChangedEvent: TPaletteHandlerEvent); +begin + AddHandler(cphtSelectionChanged,TMethod(OnSelectionChangedEvent)); +end; + +procedure TBaseComponentPalette.RemoveHandlerSelectionChanged( + OnSelectionChangedEvent: TPaletteHandlerEvent); +begin + RemoveHandler(cphtSelectionChanged,TMethod(OnSelectionChangedEvent)); +end; + +// +{$IFDEF CustomIDEComps} +procedure TBaseComponentPalette.RegisterCustomIDEComponents( + RegisterProc: RegisterUnitComponentProc); +begin + CustomIDEComps.RegisterCustomComponents(RegisterProc); +end; +{$ENDIF} + end. diff -Nru lazarus-1.4.4+dfsg/components/ideintf/compoptsintf.pas lazarus-1.6+dfsg/components/ideintf/compoptsintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/compoptsintf.pas 2015-02-23 17:01:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/compoptsintf.pas 2015-10-27 17:30:48.000000000 +0000 @@ -136,7 +136,6 @@ procedure SetGenerateDwarf(const AValue: Boolean); procedure SetGenGProfCode(const AValue: Boolean); procedure SetHeapSize(const AValue: Integer); - procedure SetStackSize(const AValue: Integer); procedure SetIncludeAssertionCode(const AValue: Boolean); procedure SetInitConst(const AValue: Boolean); procedure SetIOChecks(const AValue: Boolean); @@ -145,6 +144,7 @@ procedure SetOverflowChecks(const AValue: Boolean); procedure SetPassLinkerOpt(const AValue: Boolean); procedure SetRangeChecks(const AValue: Boolean); + procedure SetRelocatableUnit(const AValue: Boolean); procedure SetShowAll(const AValue: Boolean); procedure SetShowCompProc(const AValue: Boolean); procedure SetShowCond(const AValue: Boolean); @@ -161,23 +161,24 @@ procedure SetShowTriedFiles(const AValue: Boolean); procedure SetShowUsedFiles(const AValue: Boolean); procedure SetShowWarn(const AValue: Boolean); + procedure SetSmallerCode(const AValue: boolean); procedure SetSmartLinkUnit(const AValue: Boolean); - procedure SetRelocatableUnit(const AValue: Boolean); procedure SetStackChecks(const AValue: Boolean); + procedure SetStackSize(const AValue: Integer); procedure SetStaticKeyword(const AValue: Boolean); procedure SetStopAfterErrCount(const AValue: integer); procedure SetStripSymbols(const AValue: Boolean); procedure SetSyntaxMode(const AValue: string); procedure SetTargetFilenameAppplyConventions(const AValue: boolean); + procedure SetTrashVariables(const AValue: Boolean); + procedure SetUncertainOpt(const AValue: Boolean); procedure SetUseAnsiStr(const AValue: Boolean); + procedure SetUseCommentsInCustomOptions(AValue: Boolean); procedure SetUseExternalDbgSyms(const AValue: Boolean); procedure SetUseHeaptrc(const AValue: Boolean); - procedure SetTrashVariables(const AValue: Boolean); procedure SetUseLineInfoUnit(const AValue: Boolean); procedure SetUseValgrind(const AValue: Boolean); - procedure SetUncertainOpt(const AValue: Boolean); procedure SetVarsInReg(const AValue: Boolean); - procedure SetSmallerCode(const AValue: boolean); procedure SetVerifyObjMethodCall(const AValue: boolean); procedure SetWin32GraphicApp(const AValue: boolean); procedure SetWriteFPCLogo(const AValue: Boolean); @@ -434,7 +435,8 @@ property CustomConfigFile: Boolean read fCustomConfigFile write SetCustomConfigFile; property ConfigFilePath: String read fConfigFilePath write SetConfigFilePath; property CustomOptions: string read GetCustomOptions write SetCustomOptions; - property UseCommentsInCustomOptions: Boolean read fUseCommentsInCustomOptions write fUseCommentsInCustomOptions; + property UseCommentsInCustomOptions: Boolean read fUseCommentsInCustomOptions + write SetUseCommentsInCustomOptions; // execute other procedure SetAlternativeCompile(const Command: string; ScanFPCMsgs: boolean); virtual; abstract; // disable normal compile and call this instead @@ -815,6 +817,13 @@ IncreaseChangeStamp; end; +procedure TLazCompilerOptions.SetUseCommentsInCustomOptions(AValue: Boolean); +begin + if fUseCommentsInCustomOptions=AValue then Exit; + fUseCommentsInCustomOptions:=AValue; + IncreaseChangeStamp; +end; + procedure TLazCompilerOptions.SetUseExternalDbgSyms(const AValue: Boolean); begin if FUseExternalDbgSyms=AValue then exit; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/dbgridcolumnspropeditform.pas lazarus-1.6+dfsg/components/ideintf/dbgridcolumnspropeditform.pas --- lazarus-1.4.4+dfsg/components/ideintf/dbgridcolumnspropeditform.pas 2015-09-03 22:27:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/dbgridcolumnspropeditform.pas 2015-09-03 16:32:34.000000000 +0000 @@ -474,8 +474,11 @@ if CollectionListBox.Selected[I] then NewSelection.Add(Collection.Items[I]); end; - GlobalDesignHook.SetSelection(NewSelection); - GlobalDesignHook.LookupRoot := GetLookupRootForComponent(OwnerPersistent); + if GlobalDesignHook <> nil then + begin + GlobalDesignHook.SetSelection(NewSelection); + GlobalDesignHook.LookupRoot := GetLookupRootForComponent(OwnerPersistent); + end; finally NewSelection.Free; end; @@ -517,7 +520,8 @@ procedure TDBGridColumnsPropertyEditorForm.Modified; begin - GlobalDesignHook.Modified(Self); + if GlobalDesignHook <> nil then + GlobalDesignHook.Modified(Self); end; end. diff -Nru lazarus-1.4.4+dfsg/components/ideintf/fieldseditor.pas lazarus-1.6+dfsg/components/ideintf/fieldseditor.pas --- lazarus-1.4.4+dfsg/components/ideintf/fieldseditor.pas 2014-02-19 18:57:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/fieldseditor.pas 2015-09-02 10:10:47.000000000 +0000 @@ -87,6 +87,9 @@ LinkDataset: TDataset; FDesigner: TComponentEditorDesigner; FComponentEditor: TFieldsComponentEditor; + FUpdateSelectionCount: Integer; + procedure BeginUpdateSelection; + procedure EndUpdateSelection; procedure ExchangeItems(const fFirst, fSecond: integer); procedure RefreshFieldsListBox(SelectAllNew: boolean); function FindChild(ACandidate: TPersistent; out AIndex: Integer): Boolean; @@ -171,11 +174,14 @@ FieldsListBox.Clear; RefreshFieldsListBox(False); - GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed); - GlobalDesignHook.AddHandlerPersistentDeleting(@OnPersistentDeleting); - GlobalDesignHook.AddHandlerGetSelection(@OnGetSelection); - GlobalDesignHook.AddHandlerSetSelection(@OnSetSelection); - GlobalDesignHook.AddHandlerPersistentAdded(@OnPersistentAdded); + if Assigned(GlobalDesignHook) then + begin + GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed); + GlobalDesignHook.AddHandlerPersistentDeleting(@OnPersistentDeleting); + GlobalDesignHook.AddHandlerGetSelection(@OnGetSelection); + GlobalDesignHook.AddHandlerSetSelection(@OnSetSelection); + GlobalDesignHook.AddHandlerPersistentAdded(@OnPersistentAdded); + end; SelectionChanged; end; @@ -194,8 +200,9 @@ LinkDataSet.Active := False; if FieldsListBox.SelCount = 0 then exit; + BeginUpdateSelection; FDesigner.DeleteSelection; - SelectionChanged; + EndUpdateSelection; if PreActive then LinkDataSet.Active := True; end; @@ -208,17 +215,19 @@ procedure TDSFieldsEditorFrm.FieldsEditorFrmDestroy(Sender: TObject); begin - if Assigned(FComponentEditor) then begin - if Assigned(LinkDataset) And (Not (csDestroying in LinkDataset.ComponentState)) And (FieldsListBox.SelCount > 0) then - GlobalDesignHook.SelectOnlyThis(LinkDataset); - end; - if Assigned(GlobalDesignHook) then - GlobalDesignHook.RemoveAllHandlersForObject(Self); + if GlobalDesignHook = Nil then + Exit; + if Assigned(FComponentEditor) and Assigned(LinkDataset) + and not (csDestroying in LinkDataset.ComponentState) + and (FieldsListBox.SelCount > 0) then + GlobalDesignHook.SelectOnlyThis(LinkDataset); + GlobalDesignHook.RemoveAllHandlersForObject(Self); end; procedure TDSFieldsEditorFrm.FieldsListBoxDrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); -var fld: TField; +var + fld: TField; begin if Index < 0 then Exit; if not Assigned(FieldsListBox.Items.Objects[Index]) then Exit; @@ -398,6 +407,8 @@ procedure TDSFieldsEditorFrm.SelectionChanged(AOrderChanged: Boolean = false); var SelList: TPersistentSelectionList; begin + if (FUpdateSelectionCount>0) or (GlobalDesignHook=nil) then + exit; GlobalDesignHook.RemoveHandlerSetSelection(@OnSetSelection); try SelList := TPersistentSelectionList.Create; @@ -474,6 +485,18 @@ end; end; +procedure TDSFieldsEditorFrm.BeginUpdateSelection; +begin + Inc(FUpdateSelectionCount); +end; + +procedure TDSFieldsEditorFrm.EndUpdateSelection; +begin + dec(FUpdateSelectionCount); + if FUpdateSelectionCount=0 then + SelectionChanged; +end; + { TFieldsComponentEditor } function TFieldsComponentEditor.GetVerbCount: Integer; @@ -485,6 +508,7 @@ begin case Index of 0: Result := fesFeTitle; + else Result := ''; end; end; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/formeditingintf.pas lazarus-1.6+dfsg/components/ideintf/formeditingintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/formeditingintf.pas 2014-10-08 18:12:10.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/formeditingintf.pas 2015-11-19 13:55:33.000000000 +0000 @@ -24,6 +24,11 @@ ComponentPaletteImageHeight = 24; ComponentPaletteBtnWidth = ComponentPaletteImageWidth + 3; ComponentPaletteBtnHeight = ComponentPaletteImageHeight + 3; + DesignerBaseClassId_TForm = 0; + DesignerBaseClassId_TDataModule = 1; + DesignerBaseClassId_TFrame = 2; + NonControlProxyDesignerFormId = 0; + FrameProxyDesignerFormId = 1; type TDMCompAtPosFlag = ( @@ -32,6 +37,93 @@ ); TDMCompAtPosFlags = set of TDMCompAtPosFlag; + TDesignerMediator = class; + + INonFormDesigner = interface + ['{244DEC6B-80FB-4B28-85EF-FE613D1E2DD3}'] + procedure Create; + + function GetLookupRoot: TComponent; + procedure SetLookupRoot(const AValue: TComponent); + property LookupRoot: TComponent read GetLookupRoot write SetLookupRoot; + + procedure SetBounds(ALeft, ATop, AWidth, AHeight: integer); + procedure Notification(AComponent: TComponent; AOperation: TOperation); + procedure Paint; + + procedure DoSaveBounds; + procedure DoLoadBounds; + end; + + IFrameDesigner = interface(INonFormDesigner) + ['{2B9442B0-6359-450A-88A1-BB6744F84918}'] + end; + + INonControlDesigner = interface(INonFormDesigner) + ['{5943A33C-F812-4052-BFE8-77AEA73199A9}'] + function GetMediator: TDesignerMediator; + procedure SetMediator(AValue: TDesignerMediator); + property Mediator: TDesignerMediator read GetMediator write SetMediator; + end; + + { TNonFormProxyDesignerForm } + + TNonFormProxyDesignerForm = class(TForm, INonFormDesigner) + private + FNonFormDesigner: INonFormDesigner; + FLookupRoot: TComponent; + protected + procedure Notification(AComponent: TComponent; AOperation: TOperation); override; + + procedure SetLookupRoot(AValue: TComponent); virtual; + function GetPublishedBounds(AIndex: Integer): Integer; virtual; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); virtual; + public + constructor Create(AOwner: TComponent; ANonFormDesigner: INonFormDesigner); virtual; reintroduce; + procedure Paint; override; + + procedure SetBounds(ALeft, ATop, AWidth, AHeight: integer); override; + procedure SetDesignerFormBounds(ALeft, ATop, AWidth, AHeight: integer); + procedure SetPublishedBounds(ALeft, ATop, AWidth, AHeight: integer); + procedure SetLookupRootBounds(ALeft, ATop, AWidth, AHeight: integer); virtual; + + function DockedDesigner: boolean; virtual; + + property NonFormDesigner: INonFormDesigner read FNonFormDesigner implements INonFormDesigner; + property LookupRoot: TComponent read FLookupRoot write SetLookupRoot; + published + property Left: Integer index 0 read GetPublishedBounds write SetPublishedBounds; + property Top: Integer index 1 read GetPublishedBounds write SetPublishedBounds; + property Width: Integer index 2 read GetPublishedBounds write SetPublishedBounds; + property Height: Integer index 3 read GetPublishedBounds write SetPublishedBounds; + property ClientWidth: Integer index 2 read GetPublishedBounds write SetPublishedBounds; + property ClientHeight: Integer index 3 read GetPublishedBounds write SetPublishedBounds; + end; + + { TFrameProxyDesignerForm } + + TFrameProxyDesignerForm = class(TNonFormProxyDesignerForm, IFrameDesigner) + private + function GetFrameDesigner: IFrameDesigner; + public + property FrameDesigner: IFrameDesigner read GetFrameDesigner implements IFrameDesigner; + end; + + { TNonControlProxyDesignerForm } + + TNonControlProxyDesignerForm = class(TNonFormProxyDesignerForm, INonControlDesigner) + private + FMediator: TDesignerMediator; + function GetNonControlDesigner: INonControlDesigner; + protected + procedure SetMediator(AValue: TDesignerMediator); virtual; + public + property NonControlDesigner: INonControlDesigner read GetNonControlDesigner implements INonControlDesigner; + property Mediator: TDesignerMediator read FMediator write SetMediator; + end; + + TNonFormProxyDesignerFormClass = class of TNonFormProxyDesignerForm; + { TDesignerMediator To edit designer forms which do not use the LCL, register a TDesignerMediator, which will emulate the painting, handle the mouse and editing bounds. } @@ -89,11 +181,18 @@ { TAbstractFormEditor } TAbstractFormEditor = class + private + FNonFormProxyDesignerFormClass: array[0..1] of TNonFormProxyDesignerFormClass; protected function GetDesignerBaseClasses(Index: integer): TComponentClass; virtual; abstract; + function GetStandardDesignerBaseClasses(Index: integer): TComponentClass; virtual; abstract; + procedure SetStandardDesignerBaseClasses(Index: integer; AValue: TComponentClass); virtual; abstract; function GetDesigner(Index: integer): TIDesigner; virtual; abstract; function GetDesignerMediators(Index: integer): TDesignerMediatorClass; virtual; abstract; + function GetNonFormProxyDesignerForm(Index: Integer): TNonFormProxyDesignerFormClass; virtual; + procedure SetNonFormProxyDesignerForm(Index: Integer; AValue: TNonFormProxyDesignerFormClass); virtual; public + constructor Create; // persistent procedure RegisterDefineProperty(const APersistentClassName, Identifier: string); virtual; abstract; @@ -109,7 +208,7 @@ ): TComponent; virtual; abstract; function GetDefaultComponentPosition(TypeClass: TComponentClass; ParentComp: TComponent; - var X,Y: integer): boolean; virtual; abstract; + out X,Y: integer): boolean; virtual; abstract; function CreateComponent(ParentComp: TComponent; TypeClass: TComponentClass; const AUnitName: shortstring; @@ -138,13 +237,18 @@ function DescendFromDesignerBaseClass(AClass: TComponentClass): integer; virtual; abstract; function FindDesignerBaseClassByName(const AClassName: shortstring; WithDefaults: boolean): TComponentClass; virtual; abstract; + property StandardDesignerBaseClasses[Index: integer]: TComponentClass read GetStandardDesignerBaseClasses + write SetStandardDesignerBaseClasses; + function StandardDesignerBaseClassesCount: Integer; virtual; abstract; // designers function DesignerCount: integer; virtual; abstract; property Designer[Index: integer]: TIDesigner read GetDesigner; function GetCurrentDesigner: TIDesigner; virtual; abstract; function GetDesignerForm(APersistent: TPersistent): TCustomForm; virtual; abstract; - function GetDesignerByComponent(AComponent: TComponent - ): TIDesigner; virtual; abstract; + function GetDesignerByComponent(AComponent: TComponent): TIDesigner; virtual; abstract; + function NonFormProxyDesignerFormCount: integer; virtual; + property NonFormProxyDesignerForm[Index: integer]: TNonFormProxyDesignerFormClass read GetNonFormProxyDesignerForm + write SetNonFormProxyDesignerForm; // mediators for non LCL forms procedure RegisterDesignerMediator(MediatorClass: TDesignerMediatorClass); virtual; abstract; // auto calls RegisterDesignerBaseClass @@ -188,6 +292,7 @@ procedure SetDesignInfoTop(AComponent: TComponent; const aTop: SmallInt); inline; function LeftTopToDesignInfo(const ALeft, ATop: SmallInt): LongInt; inline; procedure DesignInfoToLeftTop(ADesignInfo: LongInt; out ALeft, ATop: SmallInt); inline; +function LookupRoot(AForm: TCustomForm): TComponent; implementation @@ -280,6 +385,153 @@ ATop := LazLongRec(ADesignInfo).Hi; end; +function IsFormDesignFunction(AForm: TWinControl): boolean; +var + LForm: TCustomForm absolute AForm; +begin + if (AForm = nil) or not (AForm is TCustomForm) then + Exit(False); + Result := (csDesignInstance in LForm.ComponentState) + or ((csDesigning in LForm.ComponentState) and (LForm.Designer <> nil)) + or (LForm is TNonFormProxyDesignerForm); +end; + +function LookupRoot(AForm: TCustomForm): TComponent; +begin + if AForm is TNonFormProxyDesignerForm then + Result := TNonFormProxyDesignerForm(AForm).LookupRoot + else if csDesignInstance in AForm.ComponentState then + Result := AForm + else + Result := nil; +end; + +{ TAbstractFormEditor } + +function TAbstractFormEditor.GetNonFormProxyDesignerForm(Index: Integer + ): TNonFormProxyDesignerFormClass; +begin + Result := FNonFormProxyDesignerFormClass[Index]; +end; + +procedure TAbstractFormEditor.SetNonFormProxyDesignerForm(Index: Integer; + AValue: TNonFormProxyDesignerFormClass); +begin + FNonFormProxyDesignerFormClass[Index] := AValue; +end; + +constructor TAbstractFormEditor.Create; +begin + FNonFormProxyDesignerFormClass[NonControlProxyDesignerFormId] := TNonControlProxyDesignerForm; + FNonFormProxyDesignerFormClass[FrameProxyDesignerFormId] := TFrameProxyDesignerForm; +end; + +function TAbstractFormEditor.NonFormProxyDesignerFormCount: integer; +begin + Result := Length(FNonFormProxyDesignerFormClass); +end; + +{ TNonControlProxyDesignerForm } + +function TNonControlProxyDesignerForm.GetNonControlDesigner: INonControlDesigner; +begin + Result := FNonFormDesigner as INonControlDesigner; +end; + +procedure TNonControlProxyDesignerForm.SetMediator(AValue: TDesignerMediator); +begin + FMediator := AValue; +end; + +{ TFrameProxyDesignerForm } + +function TFrameProxyDesignerForm.GetFrameDesigner: IFrameDesigner; +begin + Result := FNonFormDesigner as IFrameDesigner; +end; + +{ TNonFormProxyDesignerForm } + +procedure TNonFormProxyDesignerForm.Notification(AComponent: TComponent; + AOperation: TOperation); +begin + inherited Notification(AComponent, AOperation); + if Assigned(FNonFormDesigner) then + FNonFormDesigner.Notification(AComponent, AOperation); +end; + +procedure TNonFormProxyDesignerForm.SetLookupRoot(AValue: TComponent); +begin + FLookupRoot := AValue; +end; + +function TNonFormProxyDesignerForm.GetPublishedBounds(AIndex: Integer): Integer; +begin + case AIndex of + 0: Result := inherited Left; + 1: Result := inherited Top; + 2: Result := inherited Width; + 3: Result := inherited Height; + end; +end; + +procedure TNonFormProxyDesignerForm.SetPublishedBounds(AIndex: Integer; + AValue: Integer); +begin + case AIndex of + 0: inherited Left := AValue; + 1: inherited Top := AValue; + 2: inherited Width := AValue; + 3: inherited Height := AValue; + end; +end; + +constructor TNonFormProxyDesignerForm.Create(AOwner: TComponent; + ANonFormDesigner: INonFormDesigner); +begin + inherited CreateNew(AOwner, 1); + + FNonFormDesigner := ANonFormDesigner; + FNonFormDesigner.Create; +end; + +procedure TNonFormProxyDesignerForm.Paint; +begin + inherited Paint; + FNonFormDesigner.Paint; +end; + +procedure TNonFormProxyDesignerForm.SetBounds(ALeft, ATop, AWidth, AHeight: integer); +begin + inherited SetBounds(aLeft, aTop, aWidth, aHeight); + if Assigned(FNonFormDesigner) then + FNonFormDesigner.SetBounds(ALeft, ATop, AWidth, AHeight); +end; + +procedure TNonFormProxyDesignerForm.SetDesignerFormBounds(ALeft, ATop, AWidth, AHeight: integer); +begin + inherited SetBounds(aLeft, aTop, aWidth, aHeight); +end; + +procedure TNonFormProxyDesignerForm.SetPublishedBounds(ALeft, ATop, AWidth, AHeight: integer); +begin + SetPublishedBounds(0, ALeft); + SetPublishedBounds(1, ATop); + SetPublishedBounds(2, AWidth); + SetPublishedBounds(3, AHeight); +end; + +procedure TNonFormProxyDesignerForm.SetLookupRootBounds(ALeft, ATop, AWidth, AHeight: integer); +begin + if LookupRoot is TControl then + TControl(LookupRoot).SetBounds(ALeft, ATop, AWidth, AHeight); +end; + +function TNonFormProxyDesignerForm.DockedDesigner: boolean; +begin + Result := False; +end; + { TDesignerMediator } procedure TDesignerMediator.SetRoot(const AValue: TComponent); @@ -556,5 +808,7 @@ end; +initialization + IsFormDesign := @IsFormDesignFunction; end. diff -Nru lazarus-1.4.4+dfsg/components/ideintf/graphpropedits.pas lazarus-1.6+dfsg/components/ideintf/graphpropedits.pas --- lazarus-1.4.4+dfsg/components/ideintf/graphpropedits.pas 2014-11-25 18:53:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/graphpropedits.pas 2015-07-04 23:08:00.000000000 +0000 @@ -17,7 +17,7 @@ uses Classes, TypInfo, SysUtils, LCLProc, Forms, Controls, LCLType, GraphType, - FileUtil, Graphics, Buttons, Menus, ExtCtrls, Dialogs, + LazFileUtils, Graphics, Buttons, Menus, ExtCtrls, Dialogs, LCLIntf, PropEdits, PropEditUtils, ImgList, Math, GraphicPropEdit; // defines TGraphicPropertyEditorForm @@ -220,7 +220,7 @@ procedure AddPackage(Picture: TPicture); begin - if Picture.Graphic=nil then exit; + if (Picture.Graphic=nil) or (GlobalDesignHook=nil) then exit; //DebugLn(['AddPackage ',dbgsname(Picture.Graphic)]); GlobalDesignHook.AddDependency(Picture.Graphic.ClassType,''); end; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/helpfpdoc.pas lazarus-1.6+dfsg/components/ideintf/helpfpdoc.pas --- lazarus-1.4.4+dfsg/components/ideintf/helpfpdoc.pas 2014-10-14 14:07:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/helpfpdoc.pas 2015-07-04 23:08:00.000000000 +0000 @@ -20,7 +20,7 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, MacroIntf, HelpIntfs, LazHelpIntf, + Classes, SysUtils, LCLProc, LazFileUtils, MacroIntf, HelpIntfs, LazHelpIntf, LazHelpHTML; type diff -Nru lazarus-1.4.4+dfsg/components/ideintf/idecommands.pas lazarus-1.6+dfsg/components/ideintf/idecommands.pas --- lazarus-1.4.4+dfsg/components/ideintf/idecommands.pas 2015-02-13 16:20:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/idecommands.pas 2016-02-13 12:36:53.000000000 +0000 @@ -30,7 +30,8 @@ interface uses - Classes, SysUtils, LCLProc, Forms, LCLType, Menus, PropEdits; + Classes, SysUtils, LCLProc, Forms, LCLType, Menus, PropEdits, IDEImagesIntf, + ExtCtrls, LCLIntf; const { editor commands constants. see syneditkeycmds.pp for more @@ -75,6 +76,13 @@ ecFindBlockStart = ecFirstLazarus + 22; ecOpenFileAtCursor = ecFirstLazarus + 23; ecGotoIncludeDirective = ecFirstLazarus + 24; + ecJumpToInterface = ecFirstLazarus + 25; + ecJumpToInterfaceUses = ecFirstLazarus + 26; + ecJumpToImplementation = ecFirstLazarus + 27; + ecJumpToImplementationUses= ecFirstLazarus + 28; + ecJumpToInitialization = ecFirstLazarus + 29; + ecJumpToProcedureHeader = ecFirstLazarus + 30; + ecJumpToProcedureBegin = ecFirstLazarus + 31; // edit selection ecSelectionUpperCase = ecFirstLazarus + 50; @@ -212,6 +220,8 @@ ecCopyEditorNextWindow = ecFirstLazarus + 345; ecCopyEditorPrevWindow = ecFirstLazarus + 346; ecCopyEditorNewWindow = ecFirstLazarus + 347; + ecPrevEditorInHistory = ecFirstLazarus + 348; + ecNextEditorInHistory = ecFirstLazarus + 349; ecGotoEditor1 = ecFirstLazarus + 350; ecGotoEditor2 = ecGotoEditor1 + 1; @@ -288,6 +298,7 @@ ecViewProjectForms = ecFirstLazarus + 511; ecViewProjectSource = ecFirstLazarus + 512; ecProjectOptions = ecFirstLazarus + 513; + ecProjectChangeBuildMode = ecFirstLazarus + 514; // package menu ecOpenPackage = ecFirstLazarus + 600; @@ -312,7 +323,8 @@ ecCodeToolsDefinesEd = ecFirstLazarus + 823; ecExtToolSettings = ecFirstLazarus + 824; - ecManageExamples = ecFirstLazarus + 825; + ecManageDesktops = ecFirstLazarus + 825; + ecManageExamples = ecFirstLazarus + 826; ecConfigBuildLazarus = ecFirstLazarus + 830; ecBuildLazarus = ecFirstLazarus + 831; ecBuildAdvancedLazarus = ecFirstLazarus + 832; @@ -327,6 +339,7 @@ ecEditContextHelp = ecFirstLazarus + 904; ecReportingBug = ecFirstLazarus + 905; ecFocusHint = ecFirstLazarus + 906; + ecSmartHint = ecFirstLazarus + 907; // designer ecDesignerCopy = ecFirstLazarus + 1000; @@ -423,6 +436,8 @@ type TIDECommand = class; TIDECommandCategory = class; + TIDESpecialCommand = class; + TIDESpecialCommands = class; TNotifyProcedure = procedure(Sender: TObject); @@ -503,6 +518,7 @@ destructor Destroy; override; function ScopeIntersects(AScope: TIDECommandScope): boolean; procedure WriteScopeDebugReport; + procedure DoOnUpdate; public property Name: string read FName; property Description: string read FDescription write SetDescription; @@ -513,19 +529,28 @@ { TIDECommand } - { class for storing the keys of a single command - (shortcut-command relationship) } + { class for storing the keys of a single command (shortcut-command relationship) } TIDECommand = class private FCategory: TIDECommandCategory; FCommand: word; FLocalizedName: string; FName: String; - FOnChange: TNotifyEvent; FOnExecute: TNotifyEvent; FOnExecuteProc: TNotifyProcedure; FShortcutA: TIDEShortCut; FShortcutB: TIDEShortCut; + FOnUpdateMethod: TNotifyEvent; + FOnUpdateProc: TNotifyProcedure; + FUsers: TIDESpecialCommands; + + function GetUser(Index: Integer): TIDESpecialCommand; + function GetUserCount: Integer; + procedure SetOnExecute(const aOnExecute: TNotifyEvent); + procedure SetOnExecuteProc(const aOnExecuteProc: TNotifyProcedure); + procedure SetEnabled(const AEnabled: Boolean); + procedure SetCaption(const ACaption: string); + procedure SetHint(const AHint: string); protected function GetLocalizedName: string; virtual; procedure SetLocalizedName(const AValue: string); virtual; @@ -553,6 +578,15 @@ procedure ClearShortcutB; function GetCategoryAndName: string; function Execute(Sender: TObject): boolean; + procedure UserAdded(const aUser: TIDESpecialCommand); + procedure UserRemoved(const aUser: TIDESpecialCommand); + procedure DoOnUpdate; overload; + procedure DoOnUpdate(Sender: TObject); overload; + public + property Enabled: Boolean write SetEnabled; + property Caption: string write SetCaption; + property Hint: string write SetHint; + // don't add Visible property here - it is not generic. Tool buttons should never be hidden programmatically public property Name: String read FName; property Command: word read FCommand;// see the ecXXX constants above @@ -560,18 +594,30 @@ property Category: TIDECommandCategory read FCategory write SetCategory; property ShortcutA: TIDEShortCut read FShortcutA write SetShortcutA; property ShortcutB: TIDEShortCut read FShortcutB write SetShortcutB; - property OnChange: TNotifyEvent read FOnChange write FOnChange; - property OnExecute: TNotifyEvent read FOnExecute write FOnExecute; - property OnExecuteProc: TNotifyProcedure read FOnExecuteProc write FOnExecuteProc; + property OnExecute: TNotifyEvent read FOnExecute write SetOnExecute; + property OnExecuteProc: TNotifyProcedure read FOnExecuteProc write SetOnExecuteProc; + property OnUpdate: TNotifyEvent read FOnUpdateMethod write FOnUpdateMethod; + property OnUpdateProc: TNotifyProcedure read FOnUpdateProc write FOnUpdateProc; + + property Users[Index: Integer]: TIDESpecialCommand read GetUser; + property UserCount: Integer read GetUserCount; end; { TIDECommands } TIDECommands = class + private + FCustomUpdateEvents: TMethodList; + FDontExecuteUpdateEventsUntil: QWord; + + procedure ApplicationOnIdle({%H-}Sender: TObject; var {%H-}Done: Boolean); protected function GetCategory(Index: integer): TIDECommandCategory; virtual; abstract; public + constructor Create; + destructor Destroy; override; + function FindIDECommand(ACommand: word): TIDECommand; virtual; abstract; function CreateCategory(Parent: TIDECommandCategory; const Name, Description: string; @@ -588,9 +634,114 @@ IDEWindowClass: TCustomFormClass = nil): TFPList; virtual; abstract; // list of TIDECommand function CategoryCount: integer; virtual; abstract; public + procedure StartUpdateEvents; + procedure StopUpdateEvents; + + procedure ExecuteUpdateEvents; + procedure CancelPostponeUpdateEvents; + procedure PostponeUpdateEvents; + + procedure AddCustomUpdateEvent(const aEvent: TNotifyEvent); + procedure RemoveCustomUpdateEvent(const aEvent: TNotifyEvent); + public property Categories[Index: integer]: TIDECommandCategory read GetCategory; end; + // MenuItem and ButtonCommand inherit from SpecialCommand. + + TGetHintCaptionEvent = procedure(Sender: TObject; var ACaption, AHint: string) of object; + + TIDESpecialCommand = class(TPersistent) + private + FCommand: TIDECommand; + FName: string; + FCaption: string; + FEnabled: Boolean; + FChecked: Boolean; + FHint: string; + FImageIndex: Integer; + FOnClickMethod: TNotifyEvent; + FOnClickProc: TNotifyProcedure; + FOnRequestCaption: TGetHintCaptionEvent; + FSyncProperties: Boolean; + FBlockSync: Integer; + protected + function SyncAvailable: Boolean; virtual; + function GetCaption: string; virtual; + procedure SetCommand(const AValue: TIDECommand); virtual; + procedure SetName(const aName: string); virtual; + procedure SetCaption(aCaption: string); virtual; + procedure SetEnabled(const aEnabled: Boolean); virtual; + procedure SetChecked(const aChecked: Boolean); virtual; + procedure SetHint(const aHint: string); virtual; + procedure SetImageIndex(const aImageIndex: Integer); virtual; + procedure SetOnClickMethod(const aOnClick: TNotifyEvent); virtual; + procedure SetOnClickProc(const aOnClickProc: TNotifyProcedure); virtual; + procedure SetOnRequestCaption( + const aOnRequestCaptionHint: TGetHintCaptionEvent); virtual; + procedure SetResourceName(const aResourceName: string); virtual; + procedure ShortCutsUpdated(const {%H-}aShortCut, {%H-}aShortCutKey2: TShortCut); virtual; + public + constructor Create(const aName: string); virtual; + destructor Destroy; override; + public + procedure DoOnClick; overload; + procedure DoOnClick(Sender: TObject); virtual; overload; + function DoOnRequestCaption(Sender: TObject): Boolean; virtual; + + procedure BlockSync; + procedure UnblockSync; + public + function GetCaptionWithShortCut: String; virtual; + function GetHintOrCaptionWithShortCut: String; virtual; + function GetShortcut: String; virtual; + + property Command: TIDECommand read FCommand write SetCommand; + property SyncProperties: Boolean read FSyncProperties write FSyncProperties; + property Name: string read FName write SetName; + property Caption: string read GetCaption write SetCaption; + property Hint: string read FHint write SetHint; + property Enabled: Boolean read FEnabled write SetEnabled; + property Checked: Boolean read FChecked write SetChecked; + property ImageIndex: Integer read FImageIndex write SetImageIndex; + property ResourceName: string write SetResourceName; + // don't add Visible property here - it is not generic. Tool buttons should never be hidden programmatically + + property OnClick: TNotifyEvent read FOnClickMethod write SetOnClickMethod; + property OnClickProc: TNotifyProcedure read FOnClickProc write SetOnClickProc; + property OnRequestCaptionHint: TGetHintCaptionEvent read FOnRequestCaption write SetOnRequestCaption; + end; + + TIDESpecialCommandEnumerator = class + private + FList: TIDESpecialCommands; + FPosition: Integer; + public + constructor Create(AButtons: TIDESpecialCommands); + function GetCurrent: TIDESpecialCommand; + function MoveNext: Boolean; + property Current: TIDESpecialCommand read GetCurrent; + end; + + TIDESpecialCommands = class + private + FList: TFPList; + function GetCount: Integer; + function GetItems(Index: Integer): TIDESpecialCommand; + public + constructor Create; + destructor Destroy; override; + public + function GetEnumerator: TIDESpecialCommandEnumerator; + procedure Add(const aUser: TIDESpecialCommand); + procedure Remove(const aUser: TIDESpecialCommand); + + property Count: Integer read GetCount; + property Items[Index: Integer]: TIDESpecialCommand read GetItems; default; + end; + + + const CleanIDEShortCut: TIDEShortCut = (Key1: VK_UNKNOWN; Shift1: []; Key2: VK_UNKNOWN; Shift2: []); @@ -668,9 +819,9 @@ function CompareIDEShortCuts(Data1, Data2: Pointer): integer; function CompareIDEShortCutKey1s(Data1, Data2: Pointer): integer; - function IdentToIDECommand(const Ident: string; var Cmd: longint): boolean; function IDECommandToIdent(Cmd: longint; var Ident: string): boolean; +function IDECommandToIdent(Cmd: longint): string; procedure GetIDEEditorCommandValues(Proc: TGetStrProc); implementation @@ -836,6 +987,230 @@ IDECommandScopes.Add(Result); end; +{ TIDECommandScope } + +function TIDECommandScope.GetCategories(Index: integer): TIDECommandCategory; +begin + Result:=TIDECommandCategory(FCategories[Index]); +end; + +function TIDECommandScope.GetIDEWindowClasses(Index: integer): TCustomFormClass; +begin + Result:=TCustomFormClass(FIDEWindowClasses[Index]); +end; + +constructor TIDECommandScope.Create(const TheName: string); +begin + FName:=TheName; + FIDEWindowClasses:=TFPList.Create; + FCategories:=TFPList.Create; +end; + +destructor TIDECommandScope.Destroy; +var + i: Integer; +begin + for i:=FCategories.Count-1 downto 0 do + Categories[i].Scope:=nil; + FreeAndNil(FIDEWindowClasses); + FreeAndNil(FCategories); + inherited Destroy; +end; + +procedure TIDECommandScope.AddWindowClass(AWindowClass: TCustomFormClass); +begin + if FIDEWindowClasses.IndexOf(AWindowClass)>=0 then + RaiseGDBException('TIDECommandScope.AddWindowClass'); + FIDEWindowClasses.Add(AWindowClass); +end; + +procedure TIDECommandScope.RemoveWindowClass(AWindowClass: TCustomFormClass); +begin + FIDEWindowClasses.Remove(AWindowClass); +end; + +function TIDECommandScope.IDEWindowClassCount: integer; +begin + Result:=FIDEWindowClasses.Count; +end; + +function TIDECommandScope.CategoryCount: integer; +begin + Result:=FCategories.Count; +end; + +function TIDECommandScope.HasIDEWindowClass(AWindowClass: TCustomFormClass): boolean; +var + i: Integer; +begin + if AWindowClass<>nil then begin + for i:=0 to FIDEWindowClasses.Count-1 do begin + if (FIDEWindowClasses[i]=nil) + or AWindowClass.InheritsFrom(TCustomFormClass(FIDEWindowClasses[i])) then + exit(true); + end; + end else begin + if FIDEWindowClasses.IndexOf(nil)>=0 then + exit(true); + end; + Result:=false; +end; + +function TIDECommandScope.Intersects(AScope: TIDECommandScope): boolean; +var + i: Integer; + CurClass: TCustomFormClass; +begin + if AScope=nil then + Result:=true + else begin + for i:=0 to FIDEWindowClasses.Count-1 do begin + CurClass:=TCustomFormClass(FIDEWindowClasses[i]); + if (CurClass=nil) + or (AScope.FIDEWindowClasses.IndexOf(FIDEWindowClasses[i])>=0) then + exit(true); + end; + Result:=false; + end; +end; + +procedure TIDECommandScope.WriteDebugReport; +var + i: Integer; +begin + debugln('TIDECommandScope.WriteDebugReport ',Name); + for i:=0 to FIDEWindowClasses.Count-1 do begin + if FIDEWindowClasses[i]=nil then + debugln(' ',dbgs(i),'/',dbgs(FIDEWindowClasses.Count),' nil') + else + debugln(' ',dbgs(i),'/',dbgs(FIDEWindowClasses.Count),' ',TClass(FIDEWindowClasses[i]).ClassName); + end; +end; + +{ TIDECommandScopes } + +function TIDECommandScopes.GetItems(Index: integer): TIDECommandScope; +begin + Result:=TIDECommandScope(FItems[Index]); +end; + +constructor TIDECommandScopes.Create; +begin + FItems:=TFPList.Create; +end; + +destructor TIDECommandScopes.Destroy; +begin + Clear; + FItems.Free; + inherited Destroy; +end; + +procedure TIDECommandScopes.Clear; +var + i: Integer; +begin + for i:=0 to FItems.Count-1 do Items[i].Free; + FItems.Clear; +end; + +procedure TIDECommandScopes.Add(NewItem: TIDECommandScope); +begin + NewItem.fName:=CreateUniqueName(NewItem.Name); + FItems.Add(NewItem); +end; + +function TIDECommandScopes.IndexOf(AnItem: TIDECommandScope): Integer; +begin + Result:=FItems.IndexOf(AnItem); +end; + +function TIDECommandScopes.IndexByName(const AName: string): Integer; +begin + Result:=Count-1; + while (Result>=0) and (CompareText(AName,Items[Result].Name)<>0) do + dec(Result); +end; + +function TIDECommandScopes.FindByName(const AName: string): TIDECommandScope; +var + i: LongInt; +begin + i:=IndexByName(AName); + if i>=0 then + Result:=Items[i] + else + Result:=nil; +end; + +function TIDECommandScopes.CreateUniqueName(const AName: string): string; +begin + Result:=AName; + if IndexByName(Result)<0 then exit; + Result:=CreateFirstIdentifier(Result); + while IndexByName(Result)>=0 do + Result:=CreateNextIdentifier(Result); +end; + +function TIDECommandScopes.Count: integer; +begin + Result:=FItems.Count; +end; + +{ TIDECommandCategory } + +procedure TIDECommandCategory.SetDescription(const AValue: string); +begin + if FDescription=AValue then exit; + FDescription:=AValue; +end; + +procedure TIDECommandCategory.SetScope(const AValue: TIDECommandScope); +begin + if FScope=AValue then exit; + if FScope<>nil then + FScope.FCategories.Remove(Self); + FScope:=AValue; + if FScope<>nil then + FScope.FCategories.Add(Self); +end; + +destructor TIDECommandCategory.Destroy; +begin + Scope:=nil; + inherited Destroy; +end; + +procedure TIDECommandCategory.DoOnUpdate; +var + i: Integer; +begin + for i := 0 to Count-1 do + TIDECommand(Items[i]).DoOnUpdate; +end; + +function TIDECommandCategory.ScopeIntersects(AScope: TIDECommandScope): boolean; +begin + if (Scope=nil) or (AScope=nil) then + Result:=true + else + Result:=Scope.Intersects(AScope); +end; + +procedure TIDECommandCategory.WriteScopeDebugReport; +begin + debugln('TIDECommandCategory.WriteScopeDebugReport ',Name,'=',Description); + if Scope<>nil then + Scope.WriteDebugReport + else + debugln(' Scope=nil'); +end; + +procedure TIDECommandCategory.Delete(Index: Integer); +begin + inherited Delete(Index); +end; + { TIDECommand } procedure TIDECommand.SetShortcutA(const AValue: TIDEShortCut); @@ -854,9 +1229,25 @@ Change; end; +procedure TIDECommand.UserAdded(const aUser: TIDESpecialCommand); +begin + FUsers.Add(aUser); +end; + +procedure TIDECommand.UserRemoved(const aUser: TIDESpecialCommand); +begin + FUsers.Remove(aUser); +end; + procedure TIDECommand.Change; +var + xUser: TIDESpecialCommand; begin - if Assigned(OnChange) then OnChange(Self); + for xUser in FUsers do + begin + xUser.ShortCutsUpdated(KeyToShortCut(ShortcutA.Key1,ShortcutA.Shift1), + KeyToShortCut(ShortcutA.Key2,ShortcutA.Shift2)); + end; end; procedure TIDECommand.Init; @@ -872,6 +1263,16 @@ Result:=Name; end; +function TIDECommand.GetUser(Index: Integer): TIDESpecialCommand; +begin + Result := FUsers[Index]; +end; + +function TIDECommand.GetUserCount: Integer; +begin + Result := FUsers.Count; +end; + procedure TIDECommand.SetLocalizedName(const AValue: string); begin if FLocalizedName=AValue then exit; @@ -880,6 +1281,42 @@ Change; end; +procedure TIDECommand.SetOnExecute(const aOnExecute: TNotifyEvent); +var + xUser: TIDESpecialCommand; +begin + if CompareMethods(TMethod(FOnExecute), TMethod(aOnExecute)) then Exit; + FOnExecute := aOnExecute; + for xUser in FUsers do + if xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.OnClick := aOnExecute; + finally + xUser.UnblockSync; + end; + end; +end; + +procedure TIDECommand.SetOnExecuteProc(const aOnExecuteProc: TNotifyProcedure); +var + xUser: TIDESpecialCommand; +begin + if FOnExecuteProc = aOnExecuteProc then Exit; + FOnExecuteProc := aOnExecuteProc; + for xUser in FUsers do + if xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.OnClickProc := aOnExecuteProc; + finally + xUser.UnblockSync; + end; + end; +end; + procedure TIDECommand.SetCategory(const AValue: TIDECommandCategory); begin if FCategory=AValue then exit; @@ -894,6 +1331,38 @@ Change; end; +procedure TIDECommand.SetEnabled(const AEnabled: Boolean); +var + xUser: TIDESpecialCommand; +begin + for xUser in FUsers do + if xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.Enabled := AEnabled; + finally + xUser.UnblockSync; + end; + end; +end; + +procedure TIDECommand.SetHint(const AHint: string); +var + xUser: TIDESpecialCommand; +begin + for xUser in FUsers do + if xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.Hint := AHint; + finally + xUser.UnblockSync; + end; + end; +end; + function TIDECommand.AsShortCut: TShortCut; var CurKey: TIDEShortCut; @@ -919,6 +1388,7 @@ const ExecuteMethod: TNotifyEvent; const ExecuteProc: TNotifyProcedure); begin + FUsers:=TIDESpecialCommands.Create; fCommand:=TheCommand; fName:=TheName; FLocalizedName:=TheLocalizedName; @@ -942,21 +1412,31 @@ constructor TIDECommand.Create(ACommand: TIDECommand; ACategory: TIDECommandCategory); begin - fCommand:=ACommand.Command; - fName:=ACommand.Name; - FLocalizedName:=ACommand.LocalizedName; - fShortcutA:=ACommand.ShortcutA; - fShortcutB:=ACommand.ShortcutB; - DefaultShortcutA:=ACommand.ShortcutA; - DefaultShortcutB:=ACommand.ShortcutB; - Category:=ACategory; + Create(ACategory, ACommand.Name, ACommand.LocalizedName, ACommand.Command, + ACommand.ShortcutA, ACommand.ShortcutB, ACommand.OnExecute, ACommand.OnExecuteProc); end; destructor TIDECommand.Destroy; begin + if Category <> nil then + Category := nil; + FUsers.Free; inherited Destroy; end; +procedure TIDECommand.DoOnUpdate(Sender: TObject); +begin + if Assigned(FOnUpdateProc) then + FOnUpdateProc(Sender); + if Assigned(FOnUpdateMethod) then + FOnUpdateMethod(Sender); +end; + +procedure TIDECommand.DoOnUpdate; +begin + DoOnUpdate(Self); +end; + procedure TIDECommand.Assign(ACommand: TIDECommand); begin if IsEqual(ACommand) then exit; @@ -972,6 +1452,22 @@ and (CompareIDEShortCuts(@FShortcutB,@ACommand.FShortcutB)=0); end; +procedure TIDECommand.SetCaption(const ACaption: string); +var + xUser: TIDESpecialCommand; +begin + for xUser in FUsers do + if xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.Caption := ACaption; + finally + xUser.UnblockSync; + end; + end; +end; + procedure TIDECommand.ClearShortcutA; begin ShortcutA:=CleanIDEShortCut; @@ -995,231 +1491,420 @@ if Assigned(OnExecute) then begin Result:=true; OnExecute(Sender); - end; + end else if Assigned(OnExecuteProc) then begin Result:=true; OnExecuteProc(Sender); end; end; -{ TIDECommandScopes } +{ TIDECommands } -function TIDECommandScopes.GetItems(Index: integer): TIDECommandScope; +procedure TIDECommands.AddCustomUpdateEvent(const aEvent: TNotifyEvent); begin - Result:=TIDECommandScope(FItems[Index]); + FCustomUpdateEvents.Add(TMethod(aEvent)); end; -constructor TIDECommandScopes.Create; +procedure TIDECommands.ApplicationOnIdle(Sender: TObject; var Done: Boolean); begin - FItems:=TFPList.Create; + if (FDontExecuteUpdateEventsUntil > 0) and (GetTickCount64 < FDontExecuteUpdateEventsUntil) then + Exit; + + ExecuteUpdateEvents; + FDontExecuteUpdateEventsUntil := 0; end; -destructor TIDECommandScopes.Destroy; +constructor TIDECommands.Create; begin - Clear; - FItems.Free; + inherited Create; + + FCustomUpdateEvents := TMethodList.Create; +end; + +destructor TIDECommands.Destroy; +begin + FCustomUpdateEvents.Free; inherited Destroy; end; -procedure TIDECommandScopes.Clear; +procedure TIDECommands.ExecuteUpdateEvents; var i: Integer; begin - for i:=0 to FItems.Count-1 do Items[i].Free; - FItems.Clear; -end; + if not Application.Active or + (ActivePopupMenu <> nil) or//no popup menus + (Application.ModalLevel > 0) or//no modal windows + not IsWindowEnabled(Application.MainForm.Handle)//main IDE must be enabled + then + Exit; -procedure TIDECommandScopes.Add(NewItem: TIDECommandScope); -begin - NewItem.fName:=CreateUniqueName(NewItem.Name); - FItems.Add(NewItem); + FCustomUpdateEvents.CallNotifyEvents(Self); + for i := 0 to CategoryCount-1 do + Categories[i].DoOnUpdate; end; -function TIDECommandScopes.IndexOf(AnItem: TIDECommandScope): Integer; +procedure TIDECommands.CancelPostponeUpdateEvents; begin - Result:=FItems.IndexOf(AnItem); + FDontExecuteUpdateEventsUntil := 0; end; -function TIDECommandScopes.IndexByName(const AName: string): Integer; +procedure TIDECommands.PostponeUpdateEvents; begin - Result:=Count-1; - while (Result>=0) and (CompareText(AName,Items[Result].Name)<>0) do - dec(Result); + FDontExecuteUpdateEventsUntil := GetTickCount64 + 500; end; -function TIDECommandScopes.FindByName(const AName: string): TIDECommandScope; -var - i: LongInt; +procedure TIDECommands.RemoveCustomUpdateEvent(const aEvent: TNotifyEvent); begin - i:=IndexByName(AName); - if i>=0 then - Result:=Items[i] - else - Result:=nil; + FCustomUpdateEvents.Remove(TMethod(aEvent)); end; -function TIDECommandScopes.CreateUniqueName(const AName: string): string; +procedure TIDECommands.StartUpdateEvents; begin - Result:=AName; - if IndexByName(Result)<0 then exit; - Result:=CreateFirstIdentifier(Result); - while IndexByName(Result)>=0 do - Result:=CreateNextIdentifier(Result); + Application.AddOnIdleHandler(@ApplicationOnIdle, False); end; -function TIDECommandScopes.Count: integer; +procedure TIDECommands.StopUpdateEvents; begin - Result:=FItems.Count; + Application.RemoveOnIdleHandler(@ApplicationOnIdle); end; -{ TIDECommandCategory } +{ TIDESpecialCommand } -procedure TIDECommandCategory.SetDescription(const AValue: string); +constructor TIDESpecialCommand.Create(const aName: string); begin - if FDescription=AValue then exit; - FDescription:=AValue; + inherited Create; + + FSyncProperties:=true; + FName := aName; + FEnabled:=true; + FImageIndex:=-1; end; -procedure TIDECommandCategory.SetScope(const AValue: TIDECommandScope); +procedure TIDESpecialCommand.BlockSync; begin - if FScope=AValue then exit; - if FScope<>nil then - FScope.FCategories.Remove(Self); - FScope:=AValue; - if FScope<>nil then - FScope.FCategories.Add(Self); + Inc(FBlockSync); end; -destructor TIDECommandCategory.Destroy; +destructor TIDESpecialCommand.Destroy; begin - Scope:=nil; + if Assigned(FCommand) then + FCommand.UserRemoved(Self); inherited Destroy; end; -function TIDECommandCategory.ScopeIntersects(AScope: TIDECommandScope): boolean; +procedure TIDESpecialCommand.DoOnClick(Sender: TObject); begin - if (Scope=nil) or (AScope=nil) then - Result:=true + if Assigned(FOnClickProc) then + FOnClickProc(Sender) else - Result:=Scope.Intersects(AScope); + if Assigned(FOnClickMethod) then + FOnClickMethod(Sender); end; -procedure TIDECommandCategory.WriteScopeDebugReport; +procedure TIDESpecialCommand.DoOnClick; begin - debugln('TIDECommandCategory.WriteScopeDebugReport ',Name,'=',Description); - if Scope<>nil then - Scope.WriteDebugReport + DoOnClick(Self); +end; + +function TIDESpecialCommand.DoOnRequestCaption(Sender: TObject): Boolean; +var + xCaption, xHint: string; +begin + Result := Assigned(FOnRequestCaption); + if Result then + begin + xCaption := Caption; + xHint := Hint; + FOnRequestCaption(Sender, xCaption, xHint); + Caption := xCaption; + Hint := xHint; + end; +end; + +function TIDESpecialCommand.GetCaption: string; +begin + if FCaption<>'' then + Result:=FCaption else - debugln(' Scope=nil'); + Result:=FName; end; -procedure TIDECommandCategory.Delete(Index: Integer); +function TIDESpecialCommand.GetCaptionWithShortCut: String; begin - inherited Delete(Index); + Result := Caption; + DeleteAmpersands(Result); + Result := Result + GetShortcut; end; -{ TIDECommandScope } +function TIDESpecialCommand.GetHintOrCaptionWithShortCut: String; +begin + if Hint <> '' then + Result := Hint + else + Result := Caption; + DeleteAmpersands(Result); + Result := Result + GetShortcut; +end; -function TIDECommandScope.GetCategories(Index: integer): TIDECommandCategory; +function TIDESpecialCommand.GetShortcut: String; begin - Result:=TIDECommandCategory(FCategories[Index]); + Result := ''; + if Assigned(FCommand) then + Result := ShortCutToText(FCommand.AsShortCut); + if Result <> '' then + Result := ' (' + Result + ')'; end; -function TIDECommandScope.GetIDEWindowClasses(Index: integer): TCustomFormClass; +procedure TIDESpecialCommand.SetCaption(aCaption: string); +var + xUser: TIDESpecialCommand; begin - Result:=TCustomFormClass(FIDEWindowClasses[Index]); + if FCaption=aCaption then Exit; + FCaption := aCaption; + if (FCommand<> nil) and SyncAvailable then + for xUser in FCommand.FUsers do + if (xUser <> Self) and xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.Caption:=aCaption; + finally + xUser.UnblockSync; + end; + end; end; -constructor TIDECommandScope.Create(const TheName: string); +procedure TIDESpecialCommand.SetChecked(const aChecked: Boolean); +var + xUser: TIDESpecialCommand; begin - FName:=TheName; - FIDEWindowClasses:=TFPList.Create; - FCategories:=TFPList.Create; + if FChecked=aChecked then Exit; + FChecked := aChecked; + if (FCommand<> nil) and SyncAvailable then + for xUser in FCommand.FUsers do + if (xUser <> Self) and xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.Checked:=aChecked; + finally + xUser.UnblockSync; + end; + end; +end; + +procedure TIDESpecialCommand.SetCommand(const AValue: TIDECommand); +begin + if FCommand = AValue then + Exit; + if FCommand <> nil then + begin + //DebugLn('TIDEMenuCommand.SetCommand OLD ',ShortCutToText(FCommand.AsShortCut),' FCommand.Name=',FCommand.Name,' Name=',Name,' FCommand=',dbgs(Pointer(FCommand))); + if FCommand.OnExecute=OnClick then + FCommand.OnExecute:=nil; + if FCommand.OnExecuteProc=OnClickProc then + FCommand.OnExecuteProc:=nil; + end; + FCommand := AValue; + if FCommand <> nil then + begin + if FCommand.OnExecute = nil then + FCommand.OnExecute := OnClick; + if FCommand.OnExecuteProc = nil then + FCommand.OnExecuteProc := OnClickProc; + //DebugLn('TIDEMenuCommand.SetCommand NEW ',ShortCutToText(FCommand.AsShortCut),' FCommand.Name=',FCommand.Name,' Name=',Name,' FCommand=',dbgs(Pointer(FCommand))); + FCommand.UserAdded(Self); + FCommand.Change; + end; end; -destructor TIDECommandScope.Destroy; +procedure TIDESpecialCommand.SetEnabled(const aEnabled: Boolean); var - i: Integer; + xUser: TIDESpecialCommand; begin - for i:=FCategories.Count-1 downto 0 do - Categories[i].Scope:=nil; - FreeAndNil(FIDEWindowClasses); - FreeAndNil(FCategories); - inherited Destroy; + if FEnabled=aEnabled then Exit; + FEnabled := aEnabled; + if (FCommand<> nil) and SyncAvailable then + for xUser in FCommand.FUsers do + if (xUser <> Self) and xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.Enabled:=aEnabled; + finally + xUser.UnblockSync; + end; + end; end; -procedure TIDECommandScope.AddWindowClass(AWindowClass: TCustomFormClass); +procedure TIDESpecialCommand.SetHint(const aHint: string); +var + xUser: TIDESpecialCommand; begin - if FIDEWindowClasses.IndexOf(AWindowClass)>=0 then - RaiseGDBException('TIDECommandScope.AddWindowClass'); - FIDEWindowClasses.Add(AWindowClass); + if FHint=aHint then Exit; + FHint := aHint; + if (FCommand<> nil) and SyncAvailable then + for xUser in FCommand.FUsers do + if (xUser <> Self) and xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.Hint:=aHint; + finally + xUser.UnblockSync; + end; + end; end; -procedure TIDECommandScope.RemoveWindowClass(AWindowClass: TCustomFormClass); +procedure TIDESpecialCommand.SetImageIndex(const aImageIndex: Integer); +var + xUser: TIDESpecialCommand; begin - FIDEWindowClasses.Remove(AWindowClass); + if FImageIndex=aImageIndex then Exit; + FImageIndex := aImageIndex; + if (FCommand<> nil) and SyncAvailable then + for xUser in FCommand.FUsers do + if (xUser <> Self) and xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.ImageIndex:=aImageIndex; + finally + xUser.UnblockSync; + end; + end; end; -function TIDECommandScope.IDEWindowClassCount: integer; +procedure TIDESpecialCommand.SetName(const aName: string); begin - Result:=FIDEWindowClasses.Count; + FName := aName; end; -function TIDECommandScope.CategoryCount: integer; +procedure TIDESpecialCommand.SetOnClickMethod(const aOnClick: TNotifyEvent); begin - Result:=FCategories.Count; + if CompareMethods(TMethod(FOnClickMethod), TMethod(aOnClick)) then Exit; + FOnClickMethod := aOnClick; + if (FCommand<> nil) and SyncAvailable then + FCommand.OnExecute:=aOnClick; end; -function TIDECommandScope.HasIDEWindowClass(AWindowClass: TCustomFormClass): boolean; -var - i: Integer; +procedure TIDESpecialCommand.SetOnClickProc(const aOnClickProc: TNotifyProcedure); begin - if AWindowClass<>nil then begin - for i:=0 to FIDEWindowClasses.Count-1 do begin - if (FIDEWindowClasses[i]=nil) - or AWindowClass.InheritsFrom(TCustomFormClass(FIDEWindowClasses[i])) then - exit(true); - end; - end else begin - if FIDEWindowClasses.IndexOf(nil)>=0 then - exit(true); - end; - Result:=false; + if FOnClickProc = aOnClickProc then Exit; + FOnClickProc := aOnClickProc; + if (FCommand<> nil) and SyncAvailable then + FCommand.OnExecuteProc:=aOnClickProc; end; -function TIDECommandScope.Intersects(AScope: TIDECommandScope): boolean; +procedure TIDESpecialCommand.SetOnRequestCaption( + const aOnRequestCaptionHint: TGetHintCaptionEvent); var - i: Integer; - CurClass: TCustomFormClass; + xUser: TIDESpecialCommand; begin - if AScope=nil then - Result:=true - else begin - for i:=0 to FIDEWindowClasses.Count-1 do begin - CurClass:=TCustomFormClass(FIDEWindowClasses[i]); - if (CurClass=nil) - or (AScope.FIDEWindowClasses.IndexOf(FIDEWindowClasses[i])>=0) then - exit(true); - end; - Result:=false; - end; + if FOnRequestCaption = aOnRequestCaptionHint then Exit; + FOnRequestCaption := aOnRequestCaptionHint; + if (FCommand<> nil) and SyncAvailable then + for xUser in FCommand.FUsers do + if (xUser <> Self) and xUser.SyncProperties then + begin + xUser.BlockSync; + try + xUser.OnRequestCaptionHint:=aOnRequestCaptionHint; + finally + xUser.UnblockSync; + end; + end; end; -procedure TIDECommandScope.WriteDebugReport; +procedure TIDESpecialCommand.SetResourceName(const aResourceName: string); +begin + if aResourceName <> '' then + ImageIndex := IDEImages.LoadImage(16, aResourceName) + else + ImageIndex := -1; +end; + +procedure TIDESpecialCommand.ShortCutsUpdated(const aShortCut, + aShortCutKey2: TShortCut); +begin + //nothing here, override in descendants +end; + +function TIDESpecialCommand.SyncAvailable: Boolean; +begin + Result := FSyncProperties and (FBlockSync=0); +end; + +procedure TIDESpecialCommand.UnblockSync; +begin + Dec(FBlockSync); +end; + +{ TIDESpecialCommandEnumerator } + +constructor TIDESpecialCommandEnumerator.Create(AButtons: TIDESpecialCommands); +begin + inherited Create; + FList := AButtons; + FPosition := -1; +end; + +function TIDESpecialCommandEnumerator.GetCurrent: TIDESpecialCommand; +begin + Result := TIDESpecialCommand(FList[FPosition]); +end; + +function TIDESpecialCommandEnumerator.MoveNext: Boolean; +begin + Inc(FPosition); + Result := FPosition < FList.Count; +end; + +{ TIDESpecialCommands } + +procedure TIDESpecialCommands.Add(const aUser: TIDESpecialCommand); +begin + FList.Add(aUser); +end; + +constructor TIDESpecialCommands.Create; +begin + inherited Create; + FList := TFPList.Create; +end; + +destructor TIDESpecialCommands.Destroy; var - i: Integer; + I: Integer; begin - debugln('TIDECommandScope.WriteDebugReport ',Name); - for i:=0 to FIDEWindowClasses.Count-1 do begin - if FIDEWindowClasses[i]=nil then - debugln(' ',dbgs(i),'/',dbgs(FIDEWindowClasses.Count),' nil') - else - debugln(' ',dbgs(i),'/',dbgs(FIDEWindowClasses.Count),' ',TClass(FIDEWindowClasses[i]).ClassName); - end; + for I := 0 to Count-1 do + Items[I].FCommand := nil; + FList.Free; + inherited Destroy; +end; + +function TIDESpecialCommands.GetCount: Integer; +begin + Result := FList.Count; +end; + +function TIDESpecialCommands.GetEnumerator: TIDESpecialCommandEnumerator; +begin + Result := TIDESpecialCommandEnumerator.Create(Self); +end; + +function TIDESpecialCommands.GetItems(Index: Integer): TIDESpecialCommand; +begin + Result := TIDESpecialCommand(FList[Index]); +end; + +procedure TIDESpecialCommands.Remove(const aUser: TIDESpecialCommand); +begin + FList.Remove(aUser); end; const - IDEEditorCommandStrs: array[0..302] of TIdentMapEntry = ( + IDEEditorCommandStrs: array[0..312] of TIdentMapEntry = ( // search (Value: ecFind; Name: 'ecFind'), (Value: ecFindAgain; Name: 'ecFindAgain'), @@ -1247,6 +1932,11 @@ (Value: ecFindBlockStart; Name: 'ecFindBlockStart'), (Value: ecOpenFileAtCursor; Name: 'ecOpenFileAtCursor'), (Value: ecGotoIncludeDirective; Name: 'ecGotoIncludeDirective'), + (Value: ecJumpToInterface; Name: 'ecJumpToInterface'), + (Value: ecJumpToInterfaceUses; Name: 'ecJumpToInterfaceUses'), + (Value: ecJumpToImplementation; Name: 'ecJumpToImplementation'), + (Value: ecJumpToImplementationUses; Name: 'ecJumpToImplementationUses'), + (Value: ecJumpToInitialization; Name: 'ecJumpToInitialization'), // edit selection (Value: ecSelectionUpperCase; Name: 'ecSelectionUpperCase'), @@ -1384,6 +2074,8 @@ (Value: ecCopyEditorNextWindow; Name: 'ecCopyEditorNextWindow'), (Value: ecCopyEditorPrevWindow; Name: 'ecCopyEditorPrevWindow'), (Value: ecCopyEditorNewWindow; Name: 'ecCopyEditorNewWindow'), + (Value: ecPrevEditorInHistory; Name: 'ecPrevEditorInHistory'), + (Value: ecNextEditorInHistory; Name: 'ecNextEditorInHistory'), (Value: ecGotoEditor1; Name: 'ecGotoEditor1'), (Value: ecGotoEditor2; Name: 'ecGotoEditor2'), @@ -1458,6 +2150,7 @@ (Value: ecViewProjectForms; Name: 'ecViewProjectForms'), (Value: ecViewProjectSource; Name: 'ecViewProjectSource'), (Value: ecProjectOptions; Name: 'ecProjectOptions'), + (Value: ecProjectChangeBuildMode; Name: 'ecProjectChangeBuildMode'), // package menu (Value: ecOpenPackage; Name: 'ecOpenPackage'), @@ -1477,6 +2170,7 @@ // tools menu (Value: ecEnvironmentOptions; Name: 'ecEnvironmentOptions'), + (Value: ecManageDesktops; Name: 'ecManageDesktops'), (Value: ecRescanFPCSrcDir; Name: 'ecRescanFPCSrcDir'), (Value: ecEditCodeTemplates; Name: 'ecEditCodeTemplates'), (Value: ecCodeToolsDefinesEd; Name: 'ecCodeToolsDefinesEd'), @@ -1497,6 +2191,7 @@ (Value: ecEditContextHelp; Name: 'ecEditContextHelp'), (Value: ecReportingBug; Name: 'ecReportingBug'), (Value: ecFocusHint; Name: 'ecFocusHint'), + (Value: ecSmartHint; Name: 'ecSmartHint'), // designer (Value: ecDesignerCopy; Name: 'ecDesignerCopy'), @@ -1588,6 +2283,13 @@ Result := IntToIdent(Cmd, Ident, IDEEditorCommandStrs); end; +function IDECommandToIdent(Cmd: longint): string; +begin + Result := ''; + if not IDECommandToIdent(Cmd, Result) then + raise Exception.CreateFmt('IDECommandToIdent: command %d not found', [Cmd]); +end; + procedure GetIDEEditorCommandValues(Proc: TGetStrProc); var i: integer; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/ideexterntoolintf.pas lazarus-1.6+dfsg/components/ideintf/ideexterntoolintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/ideexterntoolintf.pas 2015-02-28 22:48:16.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/ideexterntoolintf.pas 2015-11-20 15:02:04.000000000 +0000 @@ -23,18 +23,20 @@ SubToolFPCLinker = 'FPCLinker'; SubToolFPCRes = 'FPCRes'; SubToolFPCWindRes = 'FPCWindRes'; + SubToolFPCAssembler = 'FPCAssembler'; SubToolMake = 'make'; SubToolMakePriority = 1000; // higher than FPC - SubToolDefault = 'External Tool'; + SubToolDefault = 'External Tool'; // this parser simply writes all output to Messages window SubToolDefaultPriority = 0; AbortedExitCode = 12321; const IDEToolCompilePackage = 'Package'; - IDEToolCompileProject = 'Project'; + IDEToolCompileProject = 'Project'; // the active project + IDEToolCompileIDE = 'IDE'; type { TIDEExternalToolData @@ -308,6 +310,7 @@ private FHideHintsSenderNotUsed: boolean; FHideHintsUnitNotUsedInMainSource: boolean; + FShowLinesCompiled: boolean; protected FFilesToIgnoreUnitNotUsed: TStrings; public @@ -320,6 +323,8 @@ class function GetFPCMsgValues(Msg: TMessageLine; out Value1, Value2: string): boolean; virtual; abstract; property FilesToIgnoreUnitNotUsed: TStrings read FFilesToIgnoreUnitNotUsed write FFilesToIgnoreUnitNotUsed; + property ShowLinesCompiled: boolean read FShowLinesCompiled + write FShowLinesCompiled default false; property HideHintsSenderNotUsed: boolean read FHideHintsSenderNotUsed write FHideHintsSenderNotUsed default true; property HideHintsUnitNotUsedInMainSource: boolean @@ -1151,6 +1156,9 @@ var h: TExternalToolHandler; begin + {$IFDEF VerboseCheckInterPkgFiles} + debugln(['TAbstractExternalTool.Destroy ',Title]); + {$ENDIF} EnterCriticalSection; try if FreeData then FreeAndNil(FData); @@ -2191,14 +2199,18 @@ function TMessageLine.GetToolData: TIDEExternalToolData; var - View: TExtToolView; + Tool: TAbstractExternalTool; begin Result:=nil; if Lines=nil then exit; - View:=TExtToolView(Lines.Owner); - if not (View is TExtToolView) then exit; - if View.Tool=nil then exit; - Result:=TIDEExternalToolData(View.Tool.Data); + if Lines.Owner is TAbstractExternalTool then + Tool:=TAbstractExternalTool(Lines.Owner) + else if Lines.Owner is TExtToolView then begin + Tool:=TExtToolView(Lines.Owner).Tool; + if Tool=nil then exit; + end else + exit; + Result:=TIDEExternalToolData(Tool.Data); if not (Result is TIDEExternalToolData) then Result:=nil; end; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/ideimagesintf.pas lazarus-1.6+dfsg/components/ideintf/ideimagesintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/ideimagesintf.pas 2013-09-27 12:27:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/ideimagesintf.pas 2015-06-18 15:03:21.000000000 +0000 @@ -172,8 +172,10 @@ try Result := List.AddResourceName(HInstance, ImageName); except - on E: Exception do + on E: Exception do begin DebugLn('While loading IDEImages: ' + e.Message); + Result := -1; + end; end; Names.AddObject(ImageName, TObject(PtrInt(Result))); end; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/ideintf.lpk lazarus-1.6+dfsg/components/ideintf/ideintf.lpk --- lazarus-1.4.4+dfsg/components/ideintf/ideintf.lpk 2014-10-01 21:03:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/ideintf.lpk 2015-10-11 09:11:47.000000000 +0000 @@ -2,6 +2,7 @@ <CONFIG> <Package Version="4"> <Name Value="IDEIntf"/> + <Type Value="RunAndDesignTime"/> <Author Value="Lazarus"/> <CompilerOptions> <Version Value="11"/> @@ -19,7 +20,7 @@ <Description Value="IDEIntf - the interface units for the Lazarus IDE"/> <License Value="Modified LPGL2"/> <Version Major="1"/> - <Files Count="77"> + <Files Count="78"> <Item1> <Filename Value="actionseditor.pas"/> <UnitName Value="ActionsEditor"/> @@ -243,7 +244,7 @@ </Item55> <Item56> <Filename Value="newfield.pas"/> - <UnitName Value="newfield"/> + <UnitName Value="NewField"/> </Item56> <Item57> <Filename Value="newfield.lfm"/> @@ -323,19 +324,22 @@ </Item75> <Item76> <Filename Value="projpackintf.pas"/> - <UnitName Value="projpackintf"/> + <UnitName Value="ProjPackIntf"/> </Item76> <Item77> <Filename Value="dbgridcolumnspropeditform.pas"/> <UnitName Value="DBGridColumnsPropEditForm"/> </Item77> + <Item78> + <Filename Value="toolbarintf.pas"/> + <UnitName Value="ToolBarIntf"/> + </Item78> </Files> <LazDoc Paths="docs"/> <i18n> <EnableI18N Value="True"/> <OutDir Value="languages"/> </i18n> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="1"> <Item1> <PackageName Value="LazControls"/> diff -Nru lazarus-1.4.4+dfsg/components/ideintf/ideintf.pas lazarus-1.6+dfsg/components/ideintf/ideintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/ideintf.pas 2014-10-01 21:03:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/ideintf.pas 2015-10-11 09:11:47.000000000 +0000 @@ -15,12 +15,12 @@ IDECommands, IDEDialogs, IDEExternToolIntf, IDEHelpIntf, IDEImagesIntf, IDEMsgIntf, IDEOptionsIntf, IDETextConverter, IDEUtils, IDEWindowIntf, ImageListEditor, KeyValPropEditDlg, LazIDEIntf, LazStringGridEdit, - ListViewPropEdit, MacroDefIntf, MacroIntf, MaskPropEdit, MenuIntf, newfield, + ListViewPropEdit, MacroDefIntf, MacroIntf, MaskPropEdit, MenuIntf, NewField, NewItemIntf, ObjectInspector, ObjInspStrConsts, OIFavoriteProperties, PackageIntf, ProjectIntf, ProjectResourcesIntf, PropEdits, PropEditUtils, SrcEditorIntf, StatusBarPropEdit, StringsPropEditDlg, TextTools, TreeViewPropEdit, UnitResources, ProjPackIntf, DBGridColumnsPropEditForm, - LazarusPackageIntf; + ToolBarIntf, LazarusPackageIntf; implementation diff -Nru lazarus-1.4.4+dfsg/components/ideintf/idemsgintf.pas lazarus-1.6+dfsg/components/ideintf/idemsgintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/idemsgintf.pas 2014-07-20 20:15:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/idemsgintf.pas 2015-10-12 21:38:54.000000000 +0000 @@ -7,7 +7,7 @@ Author: Mattias Gaertner Abstract: - Interface to the IDE messages (below the source editor). + Interface to the Messages window (below the source editor). } unit IDEMsgIntf; @@ -17,7 +17,7 @@ uses Classes, SysUtils, contnrs, Forms, Menus, - IDECommands, IDEExternToolIntf, MenuIntf, LazFileUtils; + IDECommands, IDEExternToolIntf, MenuIntf, LazFileUtils, LazLoggerBase; type TMsgQuickFixes = class; @@ -97,6 +97,10 @@ var IDEMessagesWindow: TIDEMessagesWindowInterface = nil;// initialized by the IDE +function AddIDEMessage(TheUrgency: TMessageLineUrgency; Msg: string; + aSrcFilename: string = ''; LineNumber: integer = 0; Column: integer = 0; + const ViewCaption: string = ''): TMessageLine; + implementation procedure RegisterIDEMsgQuickFix(Fix: TMsgQuickFix); @@ -104,6 +108,26 @@ MsgQuickFixes.RegisterQuickFix(Fix); end; +function AddIDEMessage(TheUrgency: TMessageLineUrgency; Msg: string; + aSrcFilename: string; LineNumber: integer; Column: integer; + const ViewCaption: string): TMessageLine; +var + s: String; +begin + s:=aSrcFilename; + if LineNumber>0 then + s+='('+IntToStr(LineNumber)+','+IntToStr(Column)+')'; + s+=' '+MessageLineUrgencyNames[TheUrgency]+': '; + if ViewCaption<>'' then + s+='('+ViewCaption+') '; + s+=Msg; + DebugLn(s); + if IDEMessagesWindow<>nil then + Result:=IDEMessagesWindow.AddCustomMessage(TheUrgency,Msg,aSrcFilename,LineNumber,Column,ViewCaption) + else + Result:=nil; +end; + { TIDEMessagesWindowInterface } procedure TIDEMessagesWindowInterface.BeginBlock(ClearOldBlocks: Boolean); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/ideoptionsintf.pas lazarus-1.6+dfsg/components/ideintf/ideoptionsintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/ideoptionsintf.pas 2014-07-06 22:38:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/ideoptionsintf.pas 2015-11-28 19:42:00.000000000 +0000 @@ -26,7 +26,7 @@ uses Classes, SysUtils, LCLProc, Controls, Buttons, Forms, StdCtrls, Graphics, - ComCtrls, Grids; + ComCtrls, Grids, Laz2_XMLCfg; const NoParent = -1; @@ -61,6 +61,20 @@ TIDEOptionsWriteEvent = procedure(Sender: TObject; Restore: boolean) of object; + TAbstractDesktopDockingOpt = class + public + constructor Create; virtual; + procedure StoreWindowPositions; virtual; abstract; + procedure LoadDefaults; virtual; abstract; + procedure Load(Path: String; aXMLCfg: TRttiXMLConfig); virtual; abstract; + procedure Save(Path: String; aXMLCfg: TRttiXMLConfig); virtual; abstract; + procedure ImportSettingsFromIDE; virtual; abstract; + procedure ExportSettingsToIDE; virtual; abstract; + function RestoreDesktop: Boolean; virtual; abstract; + procedure Assign(Source: TAbstractDesktopDockingOpt); virtual; abstract; + end; + TAbstractDesktopDockingOptClass = class of TAbstractDesktopDockingOpt; + { TAbstractIDEOptions base class for all option containers } TAbstractIDEOptions = class(TPersistent) @@ -104,6 +118,47 @@ TAbstractIDEEnvironmentOptions = class(TAbstractIDEOptions); TAbstractIDEHelpOptions = class(TAbstractIDEEnvironmentOptions); + TOnAddToRecent = procedure(Sender: TObject; AFileName: string; var AAllow: Boolean) of object; + TIDERecentHandler = (irhOpenFiles, irhProjectFiles, irhPackageFiles); + + TIDEEnvironmentOptions = class(TAbstractIDEEnvironmentOptions) + private + fRecentHandlers: array[TIDERecentHandler] of TMethodList; + + procedure DoCallRecentHandlers(AHandler: TIDERecentHandler; + const AFileName: string; var AAllow: Boolean); + protected + procedure DoAddToRecentOpenFiles(const AFileName: string; var AAllow: Boolean); + procedure DoAddToRecentProjectFiles(const AFileName: string; var AAllow: Boolean); + procedure DoAddToRecentPackageFiles(const AFileName: string; var AAllow: Boolean); + public + constructor Create; + destructor Destroy; override; + public + procedure AddToRecentOpenFiles(const AFilename: string); virtual; abstract; + procedure RemoveFromRecentOpenFiles(const AFilename: string); virtual; abstract; + procedure AddToRecentProjectFiles(const AFilename: string); virtual; abstract; + procedure RemoveFromRecentProjectFiles(const AFilename: string); virtual; abstract; + procedure AddToRecentPackageFiles(const AFilename: string); virtual; abstract; + procedure RemoveFromRecentPackageFiles(const AFilename: string); virtual; abstract; + + procedure AddHandlerAddToRecentOpenFiles(Handler: TOnAddToRecent; const AsFirst: boolean = true); // AsFirst means: first to call + procedure RemoveHandlerAddToRecentOpenFiles(Handler: TOnAddToRecent); + procedure AddHandlerAddToRecentProjectFiles(Handler: TOnAddToRecent; const AsFirst: boolean = true); // AsFirst means: first to call + procedure RemoveHandlerAddToRecentProjectFiles(Handler: TOnAddToRecent); + procedure AddHandlerAddToRecentPackageFiles(Handler: TOnAddToRecent; const AsFirst: boolean = true); // AsFirst means: first to call + procedure RemoveHandlerAddToRecentPackageFiles(Handler: TOnAddToRecent); + end; + + TIDEEditorOptions = class(TAbstractIDEEnvironmentOptions) + protected + function GetTabPosition: TTabPosition; virtual; abstract; + public + // read-only access to options needed by external packages. + // feel free to extend when needed + property TabPosition: TTabPosition read GetTabPosition; + end; + TOnLoadIDEOptions = procedure(Sender: TObject; AOptions: TAbstractIDEOptions) of object; TOnSaveIDEOptions = procedure(Sender: TObject; AOptions: TAbstractIDEOptions) of object; @@ -219,6 +274,10 @@ function IDEEditorGroups: TIDEOptionsGroupList; +var + IDEEnvironmentOptions: TIDEEnvironmentOptions; + IDEEditorOptions: TIDEEditorOptions; + const // Font style used by filter MatchFontStyle: TFontStyles = [fsBold, fsItalic]; // Color = clFuchsia; @@ -228,6 +287,8 @@ EnvOptionsFiles = 100; EnvOptionsDesktop = 200; EnvOptionsWindow = 300; + EnvOptionsToolbar = 320; + EnvOptionsEditorToolbar = 330; EnvOptionsCompPalette = 350; EnvOptionsFormEd = 400; EnvOptionsOI = 500; @@ -312,6 +373,9 @@ GroupPkgCompiler = 200200; +var + HasGUI: boolean = true; // lazbuild sets this to false + implementation var @@ -358,6 +422,7 @@ for I := AStartIndex to High(Integer) do if IDEEditorGroups.GetByIndex(I) = nil then Exit(I); + Result := -1; end; function GetFreeIDEOptionsIndex(AGroupIndex: Integer; AStartIndex: Integer): Integer; @@ -403,6 +468,102 @@ Result := 0; end; +{ TIDEEnvironmentOptions } + +constructor TIDEEnvironmentOptions.Create; +var + I: TIDERecentHandler; +begin + inherited Create; + + for I := Low(fRecentHandlers) to High(fRecentHandlers) do + fRecentHandlers[I] := TMethodList.Create; +end; + +procedure TIDEEnvironmentOptions.AddHandlerAddToRecentOpenFiles( + Handler: TOnAddToRecent; const AsFirst: boolean); +begin + fRecentHandlers[irhOpenFiles].Add(TMethod(Handler), AsFirst); +end; + +procedure TIDEEnvironmentOptions.AddHandlerAddToRecentPackageFiles( + Handler: TOnAddToRecent; const AsFirst: boolean); +begin + fRecentHandlers[irhPackageFiles].Add(TMethod(Handler), AsFirst); +end; + +procedure TIDEEnvironmentOptions.AddHandlerAddToRecentProjectFiles( + Handler: TOnAddToRecent; const AsFirst: boolean); +begin + fRecentHandlers[irhProjectFiles].Add(TMethod(Handler), AsFirst); +end; + +destructor TIDEEnvironmentOptions.Destroy; +var + I: TIDERecentHandler; +begin + for I := Low(fRecentHandlers) to High(fRecentHandlers) do + fRecentHandlers[I].Free; + + inherited Destroy; +end; + +procedure TIDEEnvironmentOptions.DoAddToRecentOpenFiles( + const AFileName: string; var AAllow: Boolean); +begin + DoCallRecentHandlers(irhOpenFiles, AFileName, AAllow); +end; + +procedure TIDEEnvironmentOptions.DoAddToRecentPackageFiles( + const AFileName: string; var AAllow: Boolean); +begin + DoCallRecentHandlers(irhPackageFiles, AFileName, AAllow); +end; + +procedure TIDEEnvironmentOptions.DoAddToRecentProjectFiles( + const AFileName: string; var AAllow: Boolean); +begin + DoCallRecentHandlers(irhProjectFiles, AFileName, AAllow); +end; + +procedure TIDEEnvironmentOptions.DoCallRecentHandlers( + AHandler: TIDERecentHandler; const AFileName: string; var AAllow: Boolean); +var + xMethod: TOnAddToRecent; + I: Integer; +begin + for I := 0 to fRecentHandlers[AHandler].Count-1 do + begin + xMethod := TOnAddToRecent(fRecentHandlers[AHandler][I]); + xMethod(Self, AFileName, AAllow); + end; +end; + +procedure TIDEEnvironmentOptions.RemoveHandlerAddToRecentOpenFiles( + Handler: TOnAddToRecent); +begin + fRecentHandlers[irhOpenFiles].Remove(TMethod(Handler)); +end; + +procedure TIDEEnvironmentOptions.RemoveHandlerAddToRecentPackageFiles( + Handler: TOnAddToRecent); +begin + fRecentHandlers[irhPackageFiles].Remove(TMethod(Handler)); +end; + +procedure TIDEEnvironmentOptions.RemoveHandlerAddToRecentProjectFiles( + Handler: TOnAddToRecent); +begin + fRecentHandlers[irhProjectFiles].Remove(TMethod(Handler)); +end; + +{ TAbstractDesktopDockingOpt } + +constructor TAbstractDesktopDockingOpt.Create; +begin + inherited Create; +end; + { TDefaultFont } constructor TDefaultFont.Create(AStyles: TFontStyles); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/idetextconverter.pas lazarus-1.6+dfsg/components/ideintf/idetextconverter.pas --- lazarus-1.4.4+dfsg/components/ideintf/idetextconverter.pas 2015-01-26 21:57:42.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/idetextconverter.pas 2015-07-04 23:08:00.000000000 +0000 @@ -21,8 +21,8 @@ interface uses - Classes, SysUtils, TypInfo, LCLProc, Controls, Forms, FileUtil, - LazUTF8Classes, SrcEditorIntf, PropEdits, ObjInspStrConsts; + Classes, SysUtils, TypInfo, LCLProc, Controls, Forms, FileUtil, LazFileUtils, + LazUTF8, LazUTF8Classes, SrcEditorIntf, PropEdits, ObjInspStrConsts; type TCustomTextConverterTool = class; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/idewindowintf.pas lazarus-1.6+dfsg/components/ideintf/idewindowintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/idewindowintf.pas 2014-12-10 03:14:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/idewindowintf.pas 2016-02-06 14:12:55.000000000 +0000 @@ -18,7 +18,11 @@ uses Math, Classes, SysUtils, LCLProc, LazConfigStorage, LazUTF8, Forms, Controls, - LCLIntf; + LCLIntf, IDEOptionsIntf; + +const + IDEWndCfgFileVersion = 2; + // 2: changed default WindowPlacement from iwpRestoreWindowSize to iwpRestoreWindowGeometry //---------------------------------------------------------------------------- // layout settings of modal forms (dialogs) in the IDE @@ -42,6 +46,7 @@ procedure SetHeight(const AValue: integer); public constructor Create(const TheName: string; TheList: TIDEDialogLayoutList); + procedure Assign(Source: TIDEDialogLayout); function SizeValid: boolean; property Width: integer read FWidth write SetWidth; property Height: integer read FHeight write SetHeight; @@ -66,6 +71,7 @@ public constructor Create; destructor Destroy; override; + procedure Assign(Source: TIDEDialogLayoutList); procedure ApplyLayout(ADialog: TControl; DefaultWidth, DefaultHeight: integer; UseAsMin: boolean = true); @@ -202,36 +208,40 @@ FTop: integer; FWidth: integer; FHeight: integer; + FDefaultLeft: integer; + FDefaultTop: integer; + FDefaultWidth: integer; + FDefaultHeight: integer; FWindowState: TIDEWindowState; FForm: TCustomForm; FFormID: string; FDefaultWindowPlacement: TIDEWindowPlacement; FDividers: TSimpleWindowLayoutDividerPosList; + procedure SetForm(const AForm: TCustomForm); function GetFormCaption: string; - function GetFormID: string; - procedure SetForm(const AValue: TCustomForm); procedure OnFormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; public constructor Create(AFormID: string); reintroduce; destructor Destroy; override; - function CreateCopy: TSimpleWindowLayout; procedure Clear; procedure GetCurrentPosition; - function Apply: Boolean; + function Apply(const aForce: Boolean = False): Boolean; procedure ApplyDivider(AForce: Boolean = False); procedure Assign(Layout: TSimpleWindowLayout); reintroduce; procedure ReadCurrentDividers(AForce: Boolean = False); procedure ReadCurrentCoordinates; procedure ReadCurrentState; - procedure LoadFromConfig(Config: TConfigStorage; const Path: string); + procedure LoadFromConfig(Config: TConfigStorage; const Path: string; FileVersion: integer); procedure SaveToConfig(Config: TConfigStorage; const Path: string); function CustomCoordinatesAreValid: boolean; + function DefaultCoordinatesAreValid: boolean; procedure CloseForm; - function ValidateAndSetCoordinates: Boolean; + function ValidateAndSetCoordinates(const aForce: Boolean = False): Boolean; + procedure SetDefaultPosition(const AForm: TCustomForm); public - property FormID: string read GetFormID write FFormID; + property FormID: string read FFormID write FFormID; function FormBaseID(out SubIndex: Integer): String; // split FormID into name+number property FormCaption: string read GetFormCaption; property WindowPlacement: TIDEWindowPlacement read fWindowPlacement write FWindowPlacement; @@ -241,6 +251,10 @@ property Top: integer read FTop write FTop; property Width: integer read FWidth write FWidth; property Height: integer read FHeight write FHeight; + property DefaultLeft: integer read FDefaultLeft write FDefaultLeft; + property DefaultTop: integer read FDefaultTop write FDefaultTop; + property DefaultWidth: integer read FDefaultWidth write FDefaultWidth; + property DefaultHeight: integer read FDefaultHeight write FDefaultHeight; property WindowState: TIDEWindowState read FWindowState write FWindowState; property Form: TCustomForm read FForm write SetForm; property Visible: boolean read FVisible write FVisible; @@ -252,28 +266,31 @@ TLayoutMoveToVisbleMode = ( vmAlwaysMoveToVisible, vmNeverMoveToVisible, - vmOnlyMoveOffScreenToVisible // Only make visible, if fully offscreen (no part of the windov is on screen) + vmOnlyMoveOffScreenToVisible // Only make visible, if offscreen (with a threshold) ); TSimpleWindowLayoutList = class private fItems: TFPList; + fRegisterEventHandlers: Boolean; function GetItems(Index: Integer): TSimpleWindowLayout; procedure OnScreenRemoveForm(Sender: TObject; AForm: TCustomForm); public - constructor Create; + constructor Create(ARegisterEventHandlers: Boolean); destructor Destroy; override; procedure Clear; procedure Delete(Index: Integer); procedure ApplyAndShow(Sender: TObject; AForm: TCustomForm; BringToFront: boolean; - AMoveToVisbleMode: TLayoutMoveToVisbleMode = vmAlwaysMoveToVisible); + AMoveToVisbleMode: TLayoutMoveToVisbleMode = vmOnlyMoveOffScreenToVisible); procedure StoreWindowPositions; - procedure Assign(SrcList: TSimpleWindowLayoutList); + procedure SetDefaultPosition(const AForm: TCustomForm); + procedure CopyItemsFrom(SrcList: TSimpleWindowLayoutList); function Add(ALayout: TSimpleWindowLayout): integer; function CreateWindowLayout(const TheFormID: string): TSimpleWindowLayout; function CreateWindowLayout(const TheForm: TCustomForm): TSimpleWindowLayout; function IndexOf(const FormID: string): integer; + function IndexOf(const AForm: TCustomForm): integer; function ItemByForm(AForm: TCustomForm): TSimpleWindowLayout; function ItemByFormID(const FormID: string): TSimpleWindowLayout; function ItemByFormCaption(const aFormCaption: string): TSimpleWindowLayout; @@ -395,6 +412,8 @@ fItems: TFPList; // list of TIDEWindowCreator FScreenMaxSizeForDefaults: TPoint; FSimpleLayoutStorage: TSimpleWindowLayoutList; + FOnLayoutChanged: TMethodList; + procedure LayoutChanged; function GetItems(Index: integer): TIDEWindowCreator; procedure ErrorIfFormExists(FormName: string); public @@ -422,13 +441,15 @@ function GetForm(aFormName: string; AutoCreate: boolean; DisableAutoSizing: boolean = false): TCustomForm; procedure ShowForm(AForm: TCustomForm; BringToFront: boolean; - AMoveToVisbleMode: TLayoutMoveToVisbleMode = vmAlwaysMoveToVisible); overload; + AMoveToVisbleMode: TLayoutMoveToVisbleMode = vmOnlyMoveOffScreenToVisible); overload; function ShowForm(AFormName: string; BringToFront: boolean): TCustomForm; overload; procedure CreateForm(var AForm; AFormClass: TCustomFormClass; DoDisableAutoSizing: boolean; TheOwner: TComponent); // utility function to create a form with delayed autosizing property SimpleLayoutStorage: TSimpleWindowLayoutList read FSimpleLayoutStorage; procedure RestoreSimpleLayout; + procedure AddLayoutChangedHandler(const aEvent: TNotifyEvent); + procedure RemoveLayoutChangedHandler(const aEvent: TNotifyEvent); property ScreenMaxSizeForDefaults: TPoint read FScreenMaxSizeForDefaults write FScreenMaxSizeForDefaults; // on big screens: do not span the whole screen @@ -452,21 +473,58 @@ procedure MakeIDEWindowDockSite(AForm: TCustomForm; ASides: TDockSides = [alBottom]); virtual; abstract; // make AForm a dock site, AForm can not be docked, its Parent must be kept nil, this does not make it visible procedure ShowForm(AForm: TCustomForm; BringToFront: boolean); virtual; abstract; // make a form visible, set BringToFront=true if form should be shown on active screen and on front of other windows, normally this focus the form function AddableInWindowMenu({%H-}AForm: TCustomForm): boolean; virtual; + procedure AdjustMainIDEWindowHeight(const {%H-}AIDEWindow: TCustomForm; + const {%H-}AAdjustHeight: Boolean; const {%H-}ANewHeight: Integer); virtual; procedure CloseAll; virtual; // close all forms, called after IDE has saved all and shuts down + procedure ResetSplitters; virtual; abstract; // if the dock site has been resized after loading, you have to reset (percentual) splitters + function DockedDesktopOptClass: TAbstractDesktopDockingOptClass; virtual; abstract; property HideSimpleLayoutOptions: boolean read FHideSimpleLayoutOptions; end; + TIDEWindowGlobalOption = class + public + CanSetVisibility: Boolean; + end; + + TIDEWindowsGlobalOptions = class + private + FList: TStringList; + public + constructor Create; + destructor Destroy; override; + public + procedure Add(const aFormIDPrefix: string; CanSetVisibility: Boolean); + function CanSetVisibility(const aFormID: string): Boolean; + end; + var IDEDockMaster: TIDEDockMaster = nil; // can be set by a package procedure MakeIDEWindowDockable(AControl: TWinControl); procedure MakeIDEWindowDockSite(AForm: TCustomForm); procedure CloseAllForms; +function IDEWindowsGlobalOptions: TIDEWindowsGlobalOptions; + +procedure SetPopupModeParentForPropertyEditor(const AEditorDlg: TCustomForm); procedure Register; implementation +uses + LazIDEIntf; + +var + FIDEWindowsGlobalOptions: TIDEWindowsGlobalOptions = nil; + +procedure SetPopupModeParentForPropertyEditor(const AEditorDlg: TCustomForm); +begin + if IDEDockMaster<>nil then + AEditorDlg.PopupParent:=LazarusIDE.GetMainBar// sets PopupMode:=pmExplicit automatically + else + AEditorDlg.PopupMode:=pmNone; +end; + function StrToIDEWindowPlacement(const s: string): TIDEWindowPlacement; begin for Result:=Low(TIDEWindowPlacement) to High(TIDEWindowPlacement) do @@ -527,11 +585,62 @@ end; end; +function IDEWindowsGlobalOptions: TIDEWindowsGlobalOptions; +begin + if not Assigned(FIDEWindowsGlobalOptions) then + FIDEWindowsGlobalOptions := TIDEWindowsGlobalOptions.Create; + + Result := FIDEWindowsGlobalOptions; +end; + procedure Register; begin RegisterComponents('Misc',[TIDEDialogLayoutStorage]); end; +{ TIDEWindowsGlobalOptions } + +procedure TIDEWindowsGlobalOptions.Add(const aFormIDPrefix: string; + CanSetVisibility: Boolean); +var + xIndex: Integer; +begin + xIndex := FList.Add(aFormIDPrefix); + if FList.Objects[xIndex] = nil then + FList.Objects[xIndex] := TIDEWindowGlobalOption.Create; + + TIDEWindowGlobalOption(FList.Objects[xIndex]).CanSetVisibility := CanSetVisibility; +end; + +function TIDEWindowsGlobalOptions.CanSetVisibility(const aFormID: string + ): Boolean; +var + I: Integer; +begin + for I := 0 to FList.Count-1 do + if Copy(aFormID, 1, Length(FList[I])) = FList[I] then + begin + Result := TIDEWindowGlobalOption(FList.Objects[I]).CanSetVisibility; + Exit; + end; + Result := True;//default is true +end; + +constructor TIDEWindowsGlobalOptions.Create; +begin + inherited Create; + + FList := TStringList.Create; + FList.Sorted := True; + FList.OwnsObjects := True; +end; + +destructor TIDEWindowsGlobalOptions.Destroy; +begin + FList.Free; + inherited Destroy; +end; + { TSimpleWindowLayoutDividerPosList } function TSimpleWindowLayoutDividerPosList.GetItems(Index: Integer): TSimpleWindowLayoutDividerPos; @@ -850,13 +959,20 @@ FList:=TheList; end; +procedure TIDEDialogLayout.Assign(Source: TIDEDialogLayout); +begin + FName := Source.FName; + FWidth := Source.FWidth; + FHeight := Source.FHeight; + FModified := True; +end; + function TIDEDialogLayout.SizeValid: boolean; begin Result:=(Width>10) and (Height>10); end; -procedure TIDEDialogLayout.LoadFromConfig(Config: TConfigStorage; - const Path: string); +procedure TIDEDialogLayout.LoadFromConfig(Config: TConfigStorage; const Path: string); begin FName:=Config.GetValue(Path+'Name/Value',''); FWidth:=Config.GetValue(Path+'Size/Width',0); @@ -864,8 +980,7 @@ Modified:=false; end; -procedure TIDEDialogLayout.SaveToConfig(Config: TConfigStorage; - const Path: string); +procedure TIDEDialogLayout.SaveToConfig(Config: TConfigStorage; const Path: string); begin Config.SetValue(Path+'Name/Value',Name); Config.SetValue(Path+'Size/Width',Width); @@ -900,6 +1015,21 @@ inherited Destroy; end; +procedure TIDEDialogLayoutList.Assign(Source: TIDEDialogLayoutList); +var + i: Integer; + Layout: TIDEDialogLayout; +begin + FItemClass := Source.FItemClass; + Clear; + for i:=0 to Source.FItems.Count-1 do begin + Layout := TIDEDialogLayout.Create(Source.Items[i].Name, Self); + Layout.Assign(Source.Items[i]); + FItems.Add(Layout); + end; + FModified := True; +end; + procedure TIDEDialogLayoutList.ApplyLayout(ADialog: TControl; DefaultWidth, DefaultHeight: integer; UseAsMin: boolean); var @@ -1070,15 +1200,11 @@ FDividers.Free; end; -function TSimpleWindowLayout.CreateCopy: TSimpleWindowLayout; -begin - Result := TSimpleWindowLayout.Create(FFormID); - Result.Assign(Self); -end; - -procedure TSimpleWindowLayout.LoadFromConfig(Config: TConfigStorage; const Path: string); +procedure TSimpleWindowLayout.LoadFromConfig(Config: TConfigStorage; + const Path: string; FileVersion: integer); var P: string; + DefaultValue: TIDEWindowPlacement; begin // set all values to default Clear; @@ -1089,8 +1215,12 @@ P:=Path+P+'/'; FFormCaption := Config.GetValue(P+'Caption/Value', fFormID); // placement + if FileVersion=1 then + DefaultValue:=iwpRestoreWindowSize + else + DefaultValue:=iwpRestoreWindowGeometry; fWindowPlacement:=StrToIDEWindowPlacement(Config.GetValue( - P+'WindowPlacement/Value',IDEWindowPlacementNames[fWindowPlacement])); + P+'WindowPlacement/Value',IDEWindowPlacementNames[DefaultValue])); // custom position Left := Config.GetValue(P+'CustomPosition/Left', Left); Top := Config.GetValue(P+'CustomPosition/Top', Top); @@ -1098,12 +1228,24 @@ Height := Config.GetValue(P+'CustomPosition/Height', Height); // state fWindowState:=StrToIDEWindowState(Config.GetValue( - P+'WindowState/Value',IDEWindowStateNames[fWindowState])); + P+'WindowState/Value',IDEWindowStateNames[iwsNormal])); FVisible:=Config.GetValue(P+'Visible/Value',false); //debugln(['TSimpleWindowLayout.LoadFromConfig ',FormID,' ',Left,',',Top,',',Width,',',Height]); FDividers.LoadFromConfig(Config, P + 'Divider/'); end; +procedure TSimpleWindowLayout.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + if Operation=opRemove then begin + if fForm=AComponent then begin + fForm:=nil; + Applied:=false; + end; + end; +end; + procedure TSimpleWindowLayout.SaveToConfig(Config: TConfigStorage; const Path: string); var @@ -1117,56 +1259,67 @@ // placement Config.SetDeleteValue(P+'WindowPlacement/Value', IDEWindowPlacementNames[fWindowPlacement], - IDEWindowPlacementNames[iwpRestoreWindowSize]); + IDEWindowPlacementNames[iwpRestoreWindowGeometry]); // custom position Config.SetDeleteValue(P+'CustomPosition/Left', Left, 0); Config.SetDeleteValue(P+'CustomPosition/Top', Top, 0); Config.SetDeleteValue(P+'CustomPosition/Width', Width, 0); Config.SetDeleteValue(P+'CustomPosition/Height', Height, 0); // state - Config.SetValue(P+'WindowState/Value',IDEWindowStateNames[fWindowState]); + Config.SetDeleteValue(P+'WindowState/Value',IDEWindowStateNames[fWindowState],IDEWindowStateNames[iwsNormal]); Config.SetDeleteValue(P+'Visible/Value',FVisible,false); FDividers.SaveToConfig(Config, P + 'Divider/'); end; +procedure TSimpleWindowLayout.SetDefaultPosition(const AForm: TCustomForm); +begin + FDefaultLeft := AForm.Left; + FDefaultTop := AForm.Top; + FDefaultWidth := AForm.Width; + FDefaultHeight := AForm.Height; +end; + procedure TSimpleWindowLayout.OnFormClose(Sender: TObject; var CloseAction: TCloseAction); begin GetCurrentPosition; end; -procedure TSimpleWindowLayout.Notification(AComponent: TComponent; - Operation: TOperation); +function TSimpleWindowLayout.CustomCoordinatesAreValid: boolean; begin - inherited Notification(AComponent, Operation); - if Operation=opRemove then begin - if fForm=AComponent then begin - fForm:=nil; - Applied:=false; - end; - end; + Result:=(Width>0) and (Height>0); // and (Left>10-Width) and (Top>10-Height); end; -function TSimpleWindowLayout.CustomCoordinatesAreValid: boolean; +function TSimpleWindowLayout.DefaultCoordinatesAreValid: boolean; begin - Result:=(Width>0) and (Height>0); // and (Left>10-Width) and (Top>10-Height); + Result:=(DefaultWidth>0) and (DefaultHeight>0); end; procedure TSimpleWindowLayout.CloseForm; begin GetCurrentPosition; - Form:=nil; end; -function TSimpleWindowLayout.ValidateAndSetCoordinates: Boolean; +function TSimpleWindowLayout.ValidateAndSetCoordinates(const aForce: Boolean + ): Boolean; var i: Integer; NewBounds: TRect; + xForm: TCustomForm; begin Result := False; - if CustomCoordinatesAreValid then begin - // explicit position - NewBounds := Bounds(Left, Top, Width, Height); + xForm := Form; + if Assigned(xForm) and + (aForce or CustomCoordinatesAreValid) then + begin + if not CustomCoordinatesAreValid then//default position + begin + if not DefaultCoordinatesAreValid then//don't change the coordinates if default position is invalid + Exit; + NewBounds := Bounds(DefaultLeft, DefaultTop, DefaultWidth, DefaultHeight) + end else// explicit position + NewBounds := Bounds(Left, Top, Width, Height); + // set minimum size if NewBounds.Right - NewBounds.Left < 60 then NewBounds.Right := NewBounds.Left + 60; @@ -1196,10 +1349,14 @@ NewBounds.Bottom := NewBounds.Bottom + i - NewBounds.Top; end; - // set bounds (do not use SetRestoredBounds - that flickers with the current LCL implementation) - FForm.SetBounds(NewBounds.Left, NewBounds.Top, - NewBounds.Right - NewBounds.Left, - NewBounds.Bottom - NewBounds.Top); + if xForm.WindowState = wsNormal then + xForm.SetBounds(NewBounds.Left, NewBounds.Top, + NewBounds.Right - NewBounds.Left, + NewBounds.Bottom - NewBounds.Top) + else + xForm.SetRestoredBounds(NewBounds.Left, NewBounds.Top, + NewBounds.Right - NewBounds.Left, + NewBounds.Bottom - NewBounds.Top); Result := True; end; end; @@ -1219,17 +1376,18 @@ Result := copy(Result, 1, i); end; -procedure TSimpleWindowLayout.SetForm(const AValue: TCustomForm); +procedure TSimpleWindowLayout.SetForm(const AForm: TCustomForm); begin - if fForm=AValue then exit; + if fForm=AForm then exit; if Assigned(Form) then begin RemoveFreeNotification(Form); Form.RemoveHandlerClose(@OnFormClose); end; - fForm:=AValue; + fForm:=AForm; if Assigned(Form) then begin + Assert(Form.Name <> ''); fFormID := Form.Name; FFormCaption := Form.Caption; FreeNotification(Form); @@ -1238,14 +1396,6 @@ end; end; -function TSimpleWindowLayout.GetFormID: string; -begin - if Form=nil then - Result:=fFormID - else - Result:=Form.Name; -end; - function TSimpleWindowLayout.GetFormCaption: string; begin if Form<>nil then @@ -1258,6 +1408,8 @@ procedure TSimpleWindowLayout.Clear; begin //debugln(['TSimpleWindowLayout.Clear ',FormID]); + fApplied := False; + fVisible := False; fWindowPlacement:=fDefaultWindowPlacement; fLeft:=0; fTop:=0; @@ -1270,16 +1422,28 @@ procedure TSimpleWindowLayout.ReadCurrentCoordinates; var p: TPoint; + xForm: TCustomForm; begin - if (Form<>nil) and (Form.WindowState=wsNormal) then begin - if Form.Parent<>nil then - p:=Form.ClientOrigin + xForm := Form; + if (xForm<>nil) then + begin + if xForm.Parent<>nil then + p:=xForm.ClientOrigin else p:=Point(0,0); - Left:=Form.Left+p.X; - Top:=Form.Top+p.Y; - Width:=Form.Width; - Height:=Form.Height; + if (xForm.WindowState=wsNormal) then + begin + Left:=xForm.Left+p.X; + Top:=xForm.Top+p.Y; + Width:=xForm.Width; + Height:=xForm.Height; + end else + begin + Left:=xForm.RestoredLeft+p.X; + Top:=xForm.RestoredTop+p.Y; + Width:=xForm.RestoredWidth; + Height:=xForm.RestoredHeight; + end; end; end; @@ -1299,15 +1463,15 @@ procedure TSimpleWindowLayout.Assign(Layout: TSimpleWindowLayout); begin Clear; - FApplied:=Layout.Applied; - FForm:=Layout.FForm; + Assert(FFormID = Layout.FFormID); + //IMPORTANT: do not assign FForm and FFormID! + FVisible:=Layout.FVisible; FWindowPlacement:=Layout.FWindowPlacement; FLeft:=Layout.FLeft; FTop:=Layout.FTop; FWidth:=Layout.FWidth; FHeight:=Layout.FHeight; FWindowState:=Layout.FWindowState; - FFormID:=Layout.FFormID; FDefaultWindowPlacement:=Layout.FDefaultWindowPlacement; FDividers.Assign(Layout.FDividers); end; @@ -1317,10 +1481,12 @@ i, j: Integer; f: Boolean; Creator: TIDEWindowCreator; + xForm: TCustomForm; begin Creator:=IDEWindowCreators.FindWithName(FormID); if (Creator = nil) or (Creator.OnGetDividerSize = nil) then exit; - if fForm = nil then exit; + xForm := Form; + if xForm = nil then exit; for i := 0 to FDividers.Count - 1 do begin if FDividers[i].FId < 0 then continue; f := AForce; @@ -1332,7 +1498,7 @@ end; if f then begin j:=-1; - if Creator.OnGetDividerSize(fForm, FDividers[i].Id, j) then + if Creator.OnGetDividerSize(xForm, FDividers[i].Id, j) then FDividers[i].Size := j else FDividers[i].Size := -1; // Default / Not Changed / Unavailable @@ -1352,10 +1518,13 @@ //debugln('TSimpleWindowLayout.GetCurrentPosition ',DbgSName(Self),' ',FormID,' Width=',dbgs(Width)); end; -function TSimpleWindowLayout.Apply: Boolean; +function TSimpleWindowLayout.Apply(const aForce: Boolean): Boolean; +var + xForm: TCustomForm; begin Result := False; - if fForm = nil then exit; + xForm := Form; + if xForm = nil then exit; Applied:=true; {$IFDEF VerboseIDEDocking} debugln(['TSimpleWindowLayoutList.ApplyAndShow restore ', @@ -1368,10 +1537,10 @@ begin //DebugLn(['TMainIDE.OnApplyWindowLayout ',IDEWindowStateNames[WindowState]]); case WindowState of - iwsMinimized: FForm.WindowState:=wsMinimized; - iwsMaximized: FForm.WindowState:=wsMaximized; + iwsMinimized: xForm.WindowState:=wsMinimized; + iwsMaximized: xForm.WindowState:=wsMaximized; end; - Result := ValidateAndSetCoordinates; // Adjust bounds to screen area and apply them. + Result := ValidateAndSetCoordinates(aForce); // Adjust bounds to screen area and apply them. if WindowState in [iwsMinimized, iwsMaximized] then Result := True; end; @@ -1379,7 +1548,7 @@ Result := True; end; - ApplyDivider; + ApplyDivider(aForce); end; procedure TSimpleWindowLayout.ApplyDivider(AForce: Boolean = False); @@ -1400,7 +1569,7 @@ f := WindowPlacement in [iwpRestoreWindowGeometry, iwpRestoreWindowSize]; end; if f then - Creator.OnSetDividerSize(fForm, FDividers[i].Id, FDividers[i].Size); + Creator.OnSetDividerSize(Form, FDividers[i].Id, FDividers[i].Size); end; end; end; @@ -1432,10 +1601,12 @@ CloseForm(AForm); end; -constructor TSimpleWindowLayoutList.Create; +constructor TSimpleWindowLayoutList.Create(ARegisterEventHandlers: Boolean); begin fItems:=TFPList.Create; - Screen.AddHandlerRemoveForm(@OnScreenRemoveForm); + fRegisterEventHandlers := ARegisterEventHandlers; + if ARegisterEventHandlers then + Screen.AddHandlerRemoveForm(@OnScreenRemoveForm); end; destructor TSimpleWindowLayoutList.Destroy; @@ -1449,7 +1620,13 @@ function TSimpleWindowLayoutList.IndexOf(const FormID: string): integer; begin Result:=Count-1; - while (Result>=0) and (FormID<>Items[Result].GetFormID) do dec(Result); + while (Result>=0) and (FormID<>Items[Result].FormID) do dec(Result); +end; + +function TSimpleWindowLayoutList.IndexOf(const AForm: TCustomForm): integer; +begin + Result:=Count-1; + while (Result>=0) and (AForm<>Items[Result].Form) do dec(Result); end; procedure TSimpleWindowLayoutList.LoadFromConfig(Config: TConfigStorage; const Path: string); @@ -1457,27 +1634,37 @@ var i: integer; ID: String; + xLayoutIndex, FileVersion: Integer; begin + FileVersion:=Config.GetValue(Path+'Desktop/Version', IDEWndCfgFileVersion); // create new windows i := Config.GetValue(Path+'Desktop/FormIdCount', 0); //debugln(['TSimpleWindowLayoutList.LoadFromConfig ',i]); while i > 0 do begin ID := Config.GetValue(Path+'Desktop/FormIdList/a'+IntToStr(i), ''); //debugln(['TSimpleWindowLayoutList.LoadFromConfig ',i,' ',ID]); - if (ID <> '') and IsValidIdent(ID) - and (IDEWindowCreators.SimpleLayoutStorage.ItemByFormID(ID) = nil) then - CreateWindowLayout(ID); + if (ID <> '') and IsValidIdent(ID) then + begin + xLayoutIndex := IndexOf(ID); + if (xLayoutIndex = -1) then + begin + CreateWindowLayout(ID); + xLayoutIndex := Count-1; + end; + fItems.Move(xLayoutIndex, 0); + end; dec(i); end; for i:=0 to Count-1 do - Items[i].LoadFromConfig(Config,Path); + Items[i].LoadFromConfig(Config,Path,FileVersion); end; procedure TSimpleWindowLayoutList.SaveToConfig(Config: TConfigStorage; const Path: string); var i: integer; begin + Config.SetValue(Path+'Desktop/Version', IDEWndCfgFileVersion); Config.SetDeleteValue(Path+'Desktop/FormIdCount',Count,0); //debugln(['TSimpleWindowLayoutList.SaveToConfig ',Count]); for i:=0 to Count-1 do begin @@ -1486,6 +1673,18 @@ end; end; +procedure TSimpleWindowLayoutList.SetDefaultPosition(const AForm: TCustomForm); +var + xLayout: TSimpleWindowLayout; +begin + if AForm.Name <> '' then + begin + xLayout:=ItemByFormID(AForm.Name); + if xLayout<>nil then + xLayout.SetDefaultPosition(AForm); + end; +end; + function TSimpleWindowLayoutList.Count: integer; begin Result:=fItems.Count; @@ -1495,13 +1694,11 @@ var i: integer; begin - i:=Count-1; - while (i>=0) do begin - Result:=Items[i]; - if Result.Form=AForm then exit; - dec(i); - end; - Result:=nil; + i:=IndexOf(AForm); + if i>=0 then + Result:=Items[i] + else + Result:=nil; end; function TSimpleWindowLayoutList.ItemByFormID(const FormID: string): TSimpleWindowLayout; @@ -1541,14 +1738,29 @@ procedure TSimpleWindowLayoutList.ApplyAndShow(Sender: TObject; AForm: TCustomForm; BringToFront: boolean; AMoveToVisbleMode: TLayoutMoveToVisbleMode); - function IsAnyCornerVisible(AForm: TCustomForm): Boolean; + function IsFormMovable(AForm: TCustomForm; BorderX: Integer = 100; + BorderTop: Integer = 0; BorderBottom: Integer = 50): Boolean; var - Overlap: TRect; + I: Integer; + xFormRect, xWA, xRectLT, xRectRT, xRectCT: TRect; begin - Overlap:=Rect(0,0,0,0); - IntersectRect(Overlap, AForm.BoundsRect, AForm.Monitor.WorkareaRect); - Result := (Overlap.Bottom > Overlap.Top + 1) and - (Overlap.Right > Overlap.Left + 1); + xFormRect := AForm.BoundsRect; + Result := False; + for I := 0 to Screen.MonitorCount-1 do + begin + xWA := Screen.Monitors[I].WorkareaRect; + //the user must be able to move the window + // - that means we check the topleft, topcenter and topright coordinates of the form + // if they are movable + xRectLT := Rect(xWA.Left-BorderX, xWA.Top-BorderTop, xWA.Right-BorderX, xWA.Bottom-BorderBottom); + xRectCT := Rect(xWA.Left, xWA.Top-BorderTop, xWA.Right, xWA.Bottom-BorderBottom); + xRectRT := Rect(xWA.Left+BorderX, xWA.Top-BorderTop, BorderX, xWA.Bottom-BorderBottom); + if PtInRect(xRectLT, xFormRect.TopLeft) + or PtInRect(xRectCT, Point((xFormRect.Left+xFormRect.Right) div 2, AForm.Top)) + or PtInRect(xRectRT, Point(xFormRect.Right, AForm.Top)) + then + Exit(True); + end; end; var @@ -1643,29 +1855,29 @@ NewBounds.Right:=Max(NewBounds.Left+100,NewBounds.Right); NewBounds.Bottom:=Max(NewBounds.Top+100,NewBounds.Bottom); AForm.BoundsRect:=NewBounds; - AMoveToVisbleMode := vmAlwaysMoveToVisible; + AMoveToVisbleMode := vmOnlyMoveOffScreenToVisible; end; finally if (AForm.WindowState in [wsNormal,wsMaximized]) and BringToFront then begin // do not change Visible property while designing form. issue #20602 // we save it into ARestoreVisible before any changes from here. - if (csDesigning in AForm.ComponentState) and (AForm.Designer <> nil) then + if IsFormDesign(AForm) then ARestoreVisible := AForm.Visible; if (AMoveToVisbleMode = vmAlwaysMoveToVisible) or ( (AMoveToVisbleMode = vmOnlyMoveOffScreenToVisible) and - (not IsAnyCornerVisible(AForm)) ) + (not IsFormMovable(AForm)) ) then AForm.EnsureVisible(true) else AForm.ShowOnTop; - if (csDesigning in AForm.ComponentState) and (AForm.Designer <> nil) then + if IsFormDesign(AForm) then AForm.Visible := ARestoreVisible; end else begin - if (csDesigning in AForm.ComponentState) and (AForm.Designer <> nil) then + if IsFormDesign(AForm) then ARestoreVisible := AForm.Visible; AForm.Visible := True; @@ -1678,7 +1890,7 @@ AForm.Visible := False; if (AMoveToVisbleMode = vmAlwaysMoveToVisible) or ( (AMoveToVisbleMode = vmOnlyMoveOffScreenToVisible) and - (not IsAnyCornerVisible(AForm)) ) + (not IsFormMovable(AForm)) ) then AForm.EnsureVisible(true) else @@ -1686,27 +1898,46 @@ end; end; - if (csDesigning in AForm.ComponentState) and (AForm.Designer <> nil) then + if IsFormDesign(AForm) then AForm.Visible := ARestoreVisible; end; end; end; procedure TSimpleWindowLayoutList.StoreWindowPositions; -var i: integer; +var + i: integer; + xOldLayoutIndex: Integer; begin + //store positions for i:=0 to Count-1 do Items[i].GetCurrentPosition; + + //store z-order + for i:=Screen.CustomFormCount-1 downto 0 do + begin + xOldLayoutIndex := IndexOf(Screen.CustomForms[i]); + if xOldLayoutIndex > 0 then + fItems.Move(xOldLayoutIndex, 0); + end; end; -procedure TSimpleWindowLayoutList.Assign(SrcList: TSimpleWindowLayoutList); +procedure TSimpleWindowLayoutList.CopyItemsFrom(SrcList: TSimpleWindowLayoutList); var - i: integer; + SrcI: Integer;//index in SrcList + SelfI: Integer;//index in Self begin - Clear; if SrcList=nil then exit; - for i:=0 to SrcList.Count-1 do begin - Add(SrcList[i].CreateCopy); + + //do not clear self, always copy items + for SrcI:=0 to SrcList.Count-1 do + begin + SelfI := IndexOf(SrcList[SrcI].FormID); + if SelfI < 0 then + SelfI := Self.Add(TSimpleWindowLayout.Create(SrcList[SrcI].FormID));//not found, create + Self.fItems.Move(SelfI, Min(SrcI, Self.Count-1));//move it to right position + SelfI := SrcI; + Self.Items[SelfI].Assign(SrcList[SrcI]) end; end; @@ -1930,8 +2161,9 @@ constructor TIDEWindowCreatorList.Create; begin fItems:=TFPList.Create; - FSimpleLayoutStorage:=TSimpleWindowLayoutList.Create; + FSimpleLayoutStorage:=TSimpleWindowLayoutList.Create(True); FScreenMaxSizeForDefaults:=Point(1200,900); + FOnLayoutChanged:=TMethodList.Create; end; destructor TIDEWindowCreatorList.Destroy; @@ -1939,6 +2171,7 @@ Clear; FreeAndNil(fItems); FreeAndNil(FSimpleLayoutStorage); + FOnLayoutChanged.Free; inherited Destroy; end; @@ -1962,6 +2195,12 @@ Result:=fItems.Add(aLayout); end; +procedure TIDEWindowCreatorList.AddLayoutChangedHandler( + const aEvent: TNotifyEvent); +begin + FOnLayoutChanged.Add(TMethod(aEvent)); +end; + function TIDEWindowCreatorList.Add(aFormName: string ): TIDEWindowCreator; begin @@ -1996,6 +2235,24 @@ dec(Result); end; +procedure TIDEWindowCreatorList.LayoutChanged; +var + I: Integer; + xEvent: TNotifyEvent; +begin + for I := 0 to FOnLayoutChanged.Count-1 do + begin + xEvent := TNotifyEvent(FOnLayoutChanged[I]); + xEvent(Self); + end; +end; + +procedure TIDEWindowCreatorList.RemoveLayoutChangedHandler( + const aEvent: TNotifyEvent); +begin + FOnLayoutChanged.Remove(TMethod(aEvent)); +end; + function TIDEWindowCreatorList.FindWithName(FormName: string): TIDEWindowCreator; var i: LongInt; @@ -2015,7 +2272,7 @@ Result:=Screen.FindForm(aFormName); if Result<>nil then begin if DisableAutoSizing then - Result.DisableAutoSizing; + Result.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster Delayed'){$ENDIF}; exit; end; if AutoCreate then begin @@ -2036,6 +2293,7 @@ debugln(['TIDEWindowCreatorList.GetForm create failed for ',aFormName]); exit; end; + SimpleLayoutStorage.SetDefaultPosition(Result); end; end; @@ -2050,22 +2308,24 @@ // auto create a layout storage for every shown form Layout:=SimpleLayoutStorage.ItemByFormID(AForm.Name); if Layout=nil then begin - if not (csDesigning in AForm.ComponentState) then + if not IsFormDesign(AForm) then SimpleLayoutStorage.CreateWindowLayout(AForm); end else Layout.Form:=AForm; - if (IDEDockMaster<>nil) and (not (csDesigning in AForm.ComponentState)) + if (IDEDockMaster<>nil) and (not IsFormDesign(AForm)) and (FindWithName(AForm.Name)<>nil) then // show dockable if it has a creator and is not a designer form IDEDockMaster.ShowForm(AForm,BringToFront) else - SimpleLayoutStorage.ApplyAndShow(Self,AForm,BringToFront,AMoveToVisbleMode); + if (IDETabMaster <> nil) and IsFormDesign(AForm) then + IDETabMaster.ShowForm(AForm) + else + SimpleLayoutStorage.ApplyAndShow(Self,AForm,BringToFront,AMoveToVisbleMode); end; -function TIDEWindowCreatorList.ShowForm(AFormName: string; BringToFront: boolean - ): TCustomForm; +function TIDEWindowCreatorList.ShowForm(AFormName: string; BringToFront: boolean): TCustomForm; begin Result:=GetForm(AFormName,true,false); if Result<>nil then @@ -2078,12 +2338,23 @@ begin if TCustomForm(AForm)=nil then begin TCustomForm(AForm):=TCustomForm(AFormClass.NewInstance); + {$IFDEF DebugDisableAutoSizing} + if DoDisableAutoSizing then + TCustomForm(AForm).DisableAutoSizing('TAnchorDockMaster Delayed') + else + TCustomForm(AForm).DisableAutoSizing('TIDEWindowCreatorList.CreateForm'); + {$ELSE} TCustomForm(AForm).DisableAutoSizing; - TCustomForm(AForm).Create(TheOwner); - if not DoDisableAutoSizing then - TCustomForm(AForm).EnableAutoSizing; + {$ENDIF}; + try + TCustomForm(AForm).Create(TheOwner); + finally + if not DoDisableAutoSizing then + TCustomForm(AForm).EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TIDEWindowCreatorList.CreateForm'){$ENDIF}; + end; + SimpleLayoutStorage.SetDefaultPosition(TCustomForm(AForm)); end else if DoDisableAutoSizing then - TCustomForm(AForm).DisableAutoSizing; + TCustomForm(AForm).DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster Delayed'){$ENDIF}; end; procedure TIDEWindowCreatorList.RestoreSimpleLayout; @@ -2091,13 +2362,34 @@ i: Integer; ALayout: TSimpleWindowLayout; AForm: TCustomForm; + HasChanged: Boolean; + AChangeVisibility: Boolean; begin - for i:=0 to SimpleLayoutStorage.Count-1 do begin - ALayout:=SimpleLayoutStorage[i]; - if not ALayout.Visible then continue; - AForm:=GetForm(ALayout.FormID,true); - if AForm=nil then continue; - ShowForm(AForm,false); + if IDEDockMaster=nil then + begin + HasChanged:=false; + for i:=SimpleLayoutStorage.Count-1 downto 0 do//loop down in order to keep z-order of the forms + begin + ALayout:=SimpleLayoutStorage[i]; + AChangeVisibility := IDEWindowsGlobalOptions.CanSetVisibility(ALayout.FormID); + AForm:=GetForm(ALayout.FormID,AChangeVisibility and ALayout.Visible); + if AForm=nil then Continue; + HasChanged:=true; + ALayout.Apply(AChangeVisibility); + if AChangeVisibility then + begin + if ALayout.Visible or (AForm=Application.MainForm) then + ShowForm(AForm,true,vmOnlyMoveOffScreenToVisible) + else if AForm.Visible then + AForm.Close; + end else + begin//do not change visibility + if AForm.Visible then//Only make sure their z-index is OK if they are already visible + ShowForm(AForm,true) + end; + end; + if HasChanged then + LayoutChanged; end; end; @@ -2120,6 +2412,13 @@ Result:=true; end; +procedure TIDEDockMaster.AdjustMainIDEWindowHeight( + const AIDEWindow: TCustomForm; const AAdjustHeight: Boolean; + const ANewHeight: Integer); +begin + +end; + procedure TIDEDockMaster.CloseAll; begin CloseAllForms; @@ -2127,8 +2426,11 @@ initialization IDEWindowCreators:=TIDEWindowCreatorList.Create; + IDEDialogLayoutList:=TIDEDialogLayoutList.Create; finalization FreeAndNil(IDEWindowCreators); + FreeAndNil(IDEDialogLayoutList); + FreeAndNil(FIDEWindowsGlobalOptions); end. diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.ca.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.ca.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.ca.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.ca.po 2015-05-12 21:30:53.000000000 +0000 @@ -430,6 +430,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Caràcter" @@ -738,6 +746,10 @@ msgid "Restricted" msgstr "" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.cs.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.cs.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.cs.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.cs.po 2015-05-12 21:30:53.000000000 +0000 @@ -416,6 +416,14 @@ msgid "Delete?" msgstr "Odstranit?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Znak" @@ -718,6 +726,10 @@ msgid "Restricted" msgstr "Omezené" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Ukázková maska:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.de.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.de.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.de.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.de.po 2015-11-30 22:02:50.000000000 +0000 @@ -2,7 +2,7 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-01-27 16:27+0100\n" +"PO-Revision-Date: 2015-09-29 18:32+0100\n" "Last-Translator: Swen Heinig <swen@heinig.email>\n" "Language-Team: Deutsch <lazarus@miraclec.com>\n" "MIME-Version: 1.0\n" @@ -10,7 +10,7 @@ "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" "Language: de\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.7.5\n" #: objinspstrconsts.cactionlisteditorallcategory msgid "(All)" @@ -417,6 +417,14 @@ msgid "Delete?" msgstr "Löschen?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "Ändere Klasse ..." + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Zeichen" @@ -490,9 +498,8 @@ msgstr "Gewählte(s) Feld(er) löschen" #: objinspstrconsts.oisdlinesdchars -#, fuzzy,badformat msgid "%d lines, %d chars" -msgstr "% Zeilen, % Zeichen" +msgstr "%d Zeilen, %d Zeichen" #: objinspstrconsts.oisenumeration msgid "Enumeration" @@ -690,7 +697,7 @@ #: objinspstrconsts.oispressakey msgid "Press a key ..." -msgstr "" +msgstr "Drücken Sie eine Taste ..." #: objinspstrconsts.oisproperties msgid "Properties" @@ -712,6 +719,10 @@ msgid "Restricted" msgstr "Bedingte Eigenschaften" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Beispielmasken:" @@ -858,9 +869,8 @@ msgstr "Erster" #: objinspstrconsts.oistdactdatasetinsertheadline -#, fuzzy,badformat msgid "&Insert" -msgstr "%Einfügen" +msgstr "E&infügen" #: objinspstrconsts.oistdactdatasetinserthint msgctxt "objinspstrconsts.oistdactdatasetinserthint" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.es.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.es.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.es.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.es.po 2015-05-12 21:30:53.000000000 +0000 @@ -416,6 +416,14 @@ msgid "Delete?" msgstr "¿Eliminar?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "Cambiar Clase ..." + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "Cambiar Contenedor (Parent)" + #: objinspstrconsts.oischar msgid "Char" msgstr "Carácter" @@ -710,6 +718,10 @@ msgid "Restricted" msgstr "Restringido" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "Revertir a heredado" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Máscaras de ejemplo:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.fi.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.fi.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.fi.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.fi.po 2015-12-05 11:32:24.000000000 +0000 @@ -150,7 +150,7 @@ #: objinspstrconsts.dpeunabletoretrievefieldsdefinitions msgid "Unable to retrieve fields definition from dataset." -msgstr "" +msgstr "Kenttämäärittelyjen haku tietokannasta ei onnistu." #: objinspstrconsts.fescalculated msgid "&Calculated" @@ -254,7 +254,7 @@ #: objinspstrconsts.itcssearchandreplace msgid "Search and replace" -msgstr "" +msgstr "Etsi ja korvaa" #: objinspstrconsts.liisaddvalue msgid "Add value" @@ -286,7 +286,7 @@ #: objinspstrconsts.lisunabletofindparserfortool msgid "Unable to find parser for tool \"%s\"" -msgstr "" +msgstr "Jäsentäjää työkalulle \"%s\" ei löydy" #: objinspstrconsts.nbcesaddpage msgid "Add Page" @@ -409,6 +409,14 @@ msgid "Delete?" msgstr "Poista?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "Vaihda luokka ..." + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "Vaihda emo ..." + #: objinspstrconsts.oischar msgid "Char" msgstr "Merkki" @@ -681,7 +689,7 @@ #: objinspstrconsts.oispressakey msgid "Press a key ..." -msgstr "" +msgstr "Paina jotain näppäintä ..." #: objinspstrconsts.oisproperties msgid "Properties" @@ -703,6 +711,10 @@ msgid "Restricted" msgstr "Rajoitettu" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "Palauta perittyyn arvoon" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Näytemaskeja:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.fr.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.fr.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.fr.po 2015-05-15 22:10:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.fr.po 2016-01-03 12:54:33.000000000 +0000 @@ -2,7 +2,7 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-05-14 21:06+0100\n" +"PO-Revision-Date: 2015-12-30 17:15+0100\n" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language: fr_FR\n" @@ -10,7 +10,7 @@ "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: objinspstrconsts.cactionlisteditorallcategory msgid "(All)" @@ -417,6 +417,14 @@ msgid "Delete?" msgstr "Faut-il supprimer ?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "Modifier la classe..." + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "Modifier le parent" + #: objinspstrconsts.oischar msgid "Char" msgstr "Caractère" @@ -711,6 +719,10 @@ msgid "Restricted" msgstr "Restrictions" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "Restaurer vers \"inherited\"" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Exemples de masques :" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.he.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.he.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.he.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.he.po 2015-05-12 21:30:53.000000000 +0000 @@ -432,6 +432,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "תו" @@ -741,6 +749,10 @@ msgid "Restricted" msgstr "מוגבל" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "מסכות לדוגמא" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.hu.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.hu.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.hu.po 2015-07-12 13:36:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.hu.po 2016-02-06 15:11:04.000000000 +0000 @@ -357,11 +357,11 @@ #: objinspstrconsts.oisactionlistcomponenteditor msgid "Action&List Editor ..." -msgstr "Műveletlista-szerkesztő ..." +msgstr "Műveletlista szerkesztő ..." #: objinspstrconsts.oisactionlisteditor msgid "ActionList Editor" -msgstr "Műveletlista-szerkesztő" +msgstr "Műveletlista szerkesztő" #: objinspstrconsts.oisaddcollectionitem msgid "&Add Item" @@ -385,11 +385,11 @@ #: objinspstrconsts.oisarray msgid "Array" -msgstr "Array" +msgstr "Tömb" #: objinspstrconsts.oisboolean msgid "Boolean" -msgstr "Boolean" +msgstr "Logikai érték" #: objinspstrconsts.oisbtncomponents msgid "Co&mponents" @@ -416,9 +416,17 @@ msgid "Delete?" msgstr "Törlés?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "Osztály módosítása ..." + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "Szülő módosítása" + #: objinspstrconsts.oischar msgid "Char" -msgstr "Char" +msgstr "Karakter" #: objinspstrconsts.oischaractersforblanks msgid "Characters for Blanks" @@ -426,7 +434,7 @@ #: objinspstrconsts.oisclass msgid "Class" -msgstr "Class" +msgstr "Osztály" #: objinspstrconsts.oisclear msgid "C&lear" @@ -530,7 +538,7 @@ #: objinspstrconsts.oisfloat msgid "Float" -msgstr "Float" +msgstr "Lebegőpontos szám" #: objinspstrconsts.oishelp msgid "&Help" @@ -538,7 +546,7 @@ #: objinspstrconsts.oisimagelistcomponenteditor msgid "I&mageList Editor ..." -msgstr "Képlista-szerkesztő ..." +msgstr "Képlista szerkesztő ..." #: objinspstrconsts.oisincompatibleidentifier msgid "Incompatible Identifier" @@ -554,11 +562,11 @@ #: objinspstrconsts.oisint64 msgid "Int64" -msgstr "Int64" +msgstr "64 bites egész szám" #: objinspstrconsts.oisinteger msgid "Integer" -msgstr "Integer" +msgstr "Egész szám" #: objinspstrconsts.oisinterface msgid "Interface" @@ -700,7 +708,7 @@ #: objinspstrconsts.oisrecord msgid "Record" -msgstr "Record" +msgstr "Rekord" #: objinspstrconsts.oisremovefromfavorites msgid "Remove from Favorites" @@ -710,6 +718,10 @@ msgid "Restricted" msgstr "Korlátozások" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "Öröklött érték visszaállítása" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Mintamaszkok:" @@ -804,11 +816,11 @@ #: objinspstrconsts.oisstring msgid "String" -msgstr "String" +msgstr "Karakterlánc" #: objinspstrconsts.oisstringseditordialog msgid "Strings Editor Dialog" -msgstr "Karakterlánc-szerkesztő ablak" +msgstr "Karakterlánc szerkesztő ablak" #: objinspstrconsts.oistdactcolorselect1headline msgid "Select &Color ..." @@ -1141,7 +1153,7 @@ #: objinspstrconsts.oisvariant msgid "Variant" -msgstr "Variant" +msgstr "Variáns" #: objinspstrconsts.oisviewrestrictedproperties msgid "View restricted properties" @@ -1153,7 +1165,7 @@ #: objinspstrconsts.oisword msgid "Word" -msgstr "Word" +msgstr "Előjel nélküli egész szám" #: objinspstrconsts.oiszorder msgid "Z-order" @@ -1177,15 +1189,15 @@ #: objinspstrconsts.rscdalignment msgid "Alignment" -msgstr "Alignment" +msgstr "Igazítás" #: objinspstrconsts.rscdautosize msgid "Auto Size" -msgstr "Auto Size" +msgstr "Automatikus méretezés" #: objinspstrconsts.rscdcaption msgid "Caption" -msgstr "Caption" +msgstr "Felirat" #: objinspstrconsts.rscdcolumneditor msgid "Column Editor" @@ -1220,15 +1232,15 @@ #: objinspstrconsts.rscdvisible msgid "Visible" -msgstr "Visible" +msgstr "Láthatóság" #: objinspstrconsts.rscdwidth msgid "Width" -msgstr "Width" +msgstr "Szélesség" #: objinspstrconsts.sccshceditsections msgid "Sections Editor ..." -msgstr "Szakasz-szerkesztő ..." +msgstr "Szakasz szerkesztő ..." #: objinspstrconsts.sccsiledtadd msgid "&Add ..." @@ -1245,7 +1257,7 @@ #: objinspstrconsts.sccsiledtcaption msgid "ImageList Editor" -msgstr "ImageList szerkesztő" +msgstr "Képlista szerkesztő" #: objinspstrconsts.sccsiledtcenter msgid "Center" @@ -1267,7 +1279,7 @@ #: objinspstrconsts.sccsiledtgrplcaption msgid "Images" -msgstr "Images" +msgstr "Képek" #: objinspstrconsts.sccsiledtgrprcaption msgid "Selected Image" @@ -1348,7 +1360,7 @@ #: objinspstrconsts.sccslvedtitem msgctxt "objinspstrconsts.sccslvedtitem" msgid "Item" -msgstr "Item" +msgstr "Elem" #: objinspstrconsts.sccslvedtlabelcaption msgid "Caption:" @@ -1362,7 +1374,7 @@ #: objinspstrconsts.sccslvedtlabelstateindex msgctxt "objinspstrconsts.sccslvedtlabelstateindex" msgid "State Index:" -msgstr "State Index:" +msgstr "Állapot index:" #: objinspstrconsts.sccslvedtnewitem msgctxt "objinspstrconsts.sccslvedtnewitem" @@ -1380,7 +1392,7 @@ #: objinspstrconsts.sccssbeditpanels msgid "Panels Editor ..." -msgstr "Panel-szerkesztő ..." +msgstr "Panel szerkesztő ..." #: objinspstrconsts.sccssgedt msgid "Edit StringGrid ..." diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.id.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.id.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.id.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.id.po 2015-05-12 21:30:53.000000000 +0000 @@ -430,6 +430,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Char" @@ -740,6 +748,10 @@ msgid "Restricted" msgstr "" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Contoh Masks:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.it.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.it.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.it.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.it.po 2015-05-12 21:30:53.000000000 +0000 @@ -417,6 +417,14 @@ msgid "Delete?" msgstr "Cancello?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Carattere" @@ -711,6 +719,10 @@ msgid "Restricted" msgstr "Riservato" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Esempi di Maschere:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.ja.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.ja.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.ja.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.ja.po 2015-05-12 21:30:53.000000000 +0000 @@ -414,6 +414,14 @@ msgid "Delete?" msgstr "削除?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Char" @@ -716,6 +724,10 @@ msgid "Restricted" msgstr "制限" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "サンプルマスク:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.lt.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.lt.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.lt.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.lt.po 2015-05-12 21:30:53.000000000 +0000 @@ -416,6 +416,14 @@ msgid "Delete?" msgstr "Pašalinti?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Simbolis" @@ -718,6 +726,10 @@ msgid "Restricted" msgstr "Apribota" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Kaukių pavyzdžiai:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.nl.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.nl.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.nl.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.nl.po 2015-05-12 21:30:53.000000000 +0000 @@ -425,6 +425,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Char" @@ -727,6 +735,10 @@ msgid "Restricted" msgstr "" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Voorbeeld masker:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.pl.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.pl.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.pl.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.pl.po 2015-05-12 21:30:53.000000000 +0000 @@ -433,6 +433,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Char" @@ -739,6 +747,10 @@ msgid "Restricted" msgstr "Ograniczenia" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.po 2015-05-12 21:30:53.000000000 +0000 @@ -409,6 +409,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "" @@ -703,6 +711,10 @@ msgid "Restricted" msgstr "" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.pt_BR.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.pt_BR.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.pt_BR.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.pt_BR.po 2015-05-12 21:30:53.000000000 +0000 @@ -415,6 +415,14 @@ msgid "Delete?" msgstr "Excluir?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Caracter" @@ -717,6 +725,10 @@ msgid "Restricted" msgstr "Restritos" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Amostra Máscaras:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.ru.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.ru.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.ru.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.ru.po 2015-11-30 22:02:50.000000000 +0000 @@ -5,9 +5,11 @@ "Content-Transfer-Encoding: 8bit\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-05-13 00:24+0300\n" +"PO-Revision-Date: 2015-12-01 00:30+0300\n" "Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" "Language-Team: \n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: objinspstrconsts.cactionlisteditorallcategory msgid "(All)" @@ -234,7 +236,7 @@ #: objinspstrconsts.fesokbtn msgctxt "objinspstrconsts.fesokbtn" msgid "OK" -msgstr "OK" +msgstr "ОК" #: objinspstrconsts.fespersistentcompname msgid "Co&mponent Name:" @@ -414,6 +416,14 @@ msgid "Delete?" msgstr "Удалить?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "Сменить класс ..." + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "Сменить родителя" + #: objinspstrconsts.oischar msgid "Char" msgstr "Char" @@ -702,12 +712,16 @@ #: objinspstrconsts.oisremovefromfavorites msgid "Remove from Favorites" -msgstr "Удалить из Избранного" +msgstr "Удалить из избранного" #: objinspstrconsts.oisrestricted msgid "Restricted" msgstr "Ограничения" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "Возвратить к унаследованному" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Образцы масок:" @@ -1209,7 +1223,7 @@ #: objinspstrconsts.rscdok msgctxt "objinspstrconsts.rscdok" msgid "OK" -msgstr "OK" +msgstr "ОК" #: objinspstrconsts.rscdright msgctxt "objinspstrconsts.rscdright" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.sk.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.sk.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.sk.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.sk.po 2015-05-12 21:30:53.000000000 +0000 @@ -436,6 +436,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Znak" @@ -746,6 +754,10 @@ msgid "Restricted" msgstr "Obmedzenia" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Vzorové masky:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.uk.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.uk.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.uk.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.uk.po 2015-05-12 21:30:53.000000000 +0000 @@ -417,6 +417,14 @@ msgid "Delete?" msgstr "Видалити?" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Символ" @@ -719,6 +727,10 @@ msgid "Restricted" msgstr "Обмежені" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "Приклади Масок:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.zh_CN.po lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.zh_CN.po --- lazarus-1.4.4+dfsg/components/ideintf/languages/objinspstrconsts.zh_CN.po 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/languages/objinspstrconsts.zh_CN.po 2015-05-12 21:30:53.000000000 +0000 @@ -437,6 +437,14 @@ msgid "Delete?" msgstr "" +#: objinspstrconsts.oischangeclass +msgid "Change Class ..." +msgstr "" + +#: objinspstrconsts.oischangeparent +msgid "Change Parent" +msgstr "" + #: objinspstrconsts.oischar msgid "Char" msgstr "Char" @@ -747,6 +755,10 @@ msgid "Restricted" msgstr "限制" +#: objinspstrconsts.oisreverttoinherited +msgid "Revert to inherited" +msgstr "" + #: objinspstrconsts.oissamplemasks msgid "Sample Masks:" msgstr "掩码样例:" diff -Nru lazarus-1.4.4+dfsg/components/ideintf/lazideintf.pas lazarus-1.6+dfsg/components/ideintf/lazideintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/lazideintf.pas 2014-11-15 12:36:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/lazideintf.pas 2015-12-27 20:34:22.000000000 +0000 @@ -21,6 +21,57 @@ IDEExternToolIntf, SrcEditorIntf, IDEWindowIntf; type + TIDEDirective = ( + idedNone, + idedBuildCommand, // Filename plus params to build the file + // default is '$(CompPath) $(EdFile)' + idedBuildWorkingDir,// Working directory for building. Default is the + // directory of the file + idedBuildScan, // Flags controlling what messages should be scanned for + // during building. See TIDEDirBuildScanFlag. + idedRunCommand, // Filename plus params to run the file + // default is '$NameOnly($(EdFile))' + idedRunWorkingDir, // Working directory for building. Default is the + // directory of the file + idedRunFlags // Flags for run. See TIDEDirRunFlag + ); + TIDEDirectives = set of TIDEDirective; + + TIDEDirBuildScanFlag = ( + idedbsfNone, + idedbsfFPC, // scan for FPC messages. FPC+ means on (default) and FPC- off. + idedbsfMake // scan for MAKE messages. MAKE- means on (default) and MAKE- off. + ); + TIDEDirBuildScanFlags = set of TIDEDirBuildScanFlag; + + TIDEDirRunFlag = ( + idedrfNone, + idedrfBuildBeforeRun, // BUILD+ means on (default for non script), BUILD- means off + idedrfMessages // show output in Messages window + ); + TIDEDirRunFlags = set of TIDEDirRunFlag; +const + IDEDirectiveNames: array[TIDEDirective] of string = ( + '', + 'BuildCommand', + 'BuildWorkingDir', + 'BuildScan', + 'RunCommand', + 'RunWorkingDir', + 'RunFlags' + ); + IDEDirBuildScanFlagNames: array[TIDEDirBuildScanFlag] of string = ( + '', + 'FPC', + 'MAKE' + ); + IDEDirRunFlagNames: array[TIDEDirRunFlag] of string = ( + '', + 'BUILD', + 'MESSAGES' + ); + +type // open file flags // Normally you don't need to pass any flags. TOpenFlag = ( @@ -128,6 +179,14 @@ ); TFindUnitFileFlags = set of TFindUnitFileFlag; + // selected part of IDE + TTabDisplayState = ( + tdsNone, + tdsCode, // focussing sourcenotebook or source tab + tdsDesign, // focussing designer form/design tab + tdsOther // focussing other (user defined) tab assigned to module (like History Tab) + ); + // find source flags // Normally you don't need to pass any flags. TFindSourceFlag = ( @@ -149,6 +208,12 @@ // Global options should be prependended, project options should be appended. ): boolean of object; + TShowDesignerFormOfSourceFunction = procedure(Sender: TObject; AEditor: TSourceEditorInterface; + AComponentPaletteClassSelected: Boolean) of object; + TGetFPCFrontEndPath = function(Sender: TObject; + var Path: string // this path is prepended to fpc. + ): boolean of object; + TLazarusIDEHandlerType = ( lihtSavingAll, // called before IDE saves everything lihtSavedAll, // called after IDE saved everything @@ -159,14 +224,37 @@ lihtProjectBuilding, // called before IDE builds the project lihtProjectDependenciesCompiling, // called before IDE compiles dependencies of project lihtProjectDependenciesCompiled, // called after IDE compiled dependencies of project + lihtProjectBuildingFinished, // called after IDE builds the project + lihtLazarusBuilding, // called before IDE builds Lazarus IDE + lihtLazarusBuildingFinished, // called after IDE builds Lazarus IDE lihtQuickSyntaxCheck, // called when quick syntax check is clicked (menu item or shortcut) - lihtGetFPCFrontEndParams // called when the IDE gets the parameters of the 'fpc' front end tool + lihtGetFPCFrontEndParams, // called when the IDE gets the parameters of the 'fpc' front end tool + lihtGetFPCFrontEndPath, // called when the IDE gets the path of the 'fpc' front end tool + lihtShowDesignerFormOfSource, // called after showing a designer form for code editor (AEditor can be nil!) + lihtShowSourceOfActiveDesignerForm, // called after showing a code of designer form + lihtChangeToolStatus//called when IDEToolStatus has changed (e.g. itNone->itBuilder etc.) ); + TLazToolStatus = ( + itNone, // The default mode. All editing allowed. + itExiting, // the ide is shutting down + itBuilder, // compiling (the project, a package, IDE itself, an external tool) + // Loading/Saving/Debugging is not allowed. + itDebugger, // debugging the project. + // Loading/Saving/Compiling is not allowed. + itCodeTools, // the CodeToolBoss is working and has called the progress event. + itCodeToolAborting,// the CodeToolBoss is working and is about to abort + itCustom // this state is not used yet. + ); + TLazToolStatusChangeEvent = procedure(Sender: TObject; OldStatus, NewStatus: TLazToolStatus) of object; + + TLazBuildingFinishedEvent = procedure(Sender: TObject; BuildSuccessful: Boolean) of object; + { TLazIDEInterface } TLazIDEInterface = class(TComponent) private + FToolStatus: TLazToolStatus; FMainBarSubTitle: string; FOpenEditorsOnCodeToolChange: boolean; FOpenMainSourceOnCodeToolChange: boolean; @@ -177,23 +265,39 @@ const AMethod: TMethod); protected FLazarusIDEHandlers: array[TLazarusIDEHandlerType] of TMethodList; - fOwningComponent: TComponent; - LastActivatedWindows: TFPList; + FOwningComponent: TComponent; + FIDEStarted: boolean; + FIDEIsClosing: Boolean; + FLastActivatedWindows: TFPList; + // used to find the last form so you can display the correct tab + FLastFormActivated: TCustomForm; + procedure SetToolStatus(const AToolStatus: TLazToolStatus); virtual; function GetActiveProject: TLazProject; virtual; abstract; - procedure DoCallNotifyHandler(HandlerType: TLazarusIDEHandlerType); + procedure DoCallNotifyHandler(HandlerType: TLazarusIDEHandlerType); overload; function DoCallModalFunctionHandler(HandlerType: TLazarusIDEHandlerType ): TModalResult; function DoCallModalHandledHandler(HandlerType: TLazarusIDEHandlerType; var Handled: boolean): TModalResult; + procedure DoCallNotifyHandler(HandlerType: TLazarusIDEHandlerType; + Sender: TObject); overload; + procedure DoCallShowDesignerFormOfSourceHandler( + HandlerType: TLazarusIDEHandlerType; + Sender: TObject; AEditor: TSourceEditorInterface; + AComponentPaletteClassSelected: Boolean); + procedure DoCallBuildingFinishedHandler(HandlerType: TLazarusIDEHandlerType; + Sender: TObject; BuildSuccessful: Boolean); + procedure SetMainBarSubTitle(const AValue: string); virtual; public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; - property OwningComponent: TComponent read fOwningComponent; + property OwningComponent: TComponent read FOwningComponent; + property ToolStatus: TLazToolStatus read FToolStatus write SetToolStatus; + // the main window with the IDE menu - function GetMainBar: TComponent; virtual; abstract; + function GetMainBar: TForm; virtual; abstract; property MainBarSubTitle: string read FMainBarSubTitle write SetMainBarSubTitle; // find file @@ -231,6 +335,12 @@ out Component: TComponent): TModalResult; virtual; abstract; procedure DoDropFiles(Sender: TObject; const FileNames: array of String; WindowIndex: integer = -1); virtual; abstract; + function DoConfigureBuildFile: TModalResult; virtual; abstract; + function DoBuildFile({%H-}ShowAbort: Boolean; + Filename: string = '' // if empty use active source editor file + ): TModalResult; virtual; abstract; + function DoRunFile(Filename: string = '' // if empty use active source editor file + ): TModalResult; virtual; abstract; // project property ActiveProject: TLazProject read GetActiveProject; @@ -242,21 +352,23 @@ function DoPublishProject(Flags: TSaveFlags; ShowDialog: boolean): TModalResult; virtual; abstract; function DoBuildProject(const AReason: TCompileReason; - Flags: TProjectBuildFlags): TModalResult; virtual; abstract; + Flags: TProjectBuildFlags; + FinalizeResources: boolean = True): TModalResult; virtual; abstract; + function DoRunProject: TModalResult; virtual; abstract; function GetProjectFileForProjectEditor(AEditor: TSourceEditorInterface): TLazProjectFile; virtual; abstract; function DoCallProjectChangedHandler(HandlerType: TLazarusIDEHandlerType; AProject: TLazProject): TModalResult; + function DoAddUnitToProject(AEditor: TSourceEditorInterface): TModalResult; virtual; abstract; // configs class function GetPrimaryConfigPath: String; virtual; abstract; class function GetSecondaryConfigPath: String; virtual; abstract; procedure CopySecondaryConfigFile(const AFilename: String); virtual; abstract; - procedure DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass = nil; - ACaption: String = ''); overload; - procedure DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; - ACaption: String; - AOptionsFilter: array of TAbstractIDEOptionsClass; - ASettings: TIDEOptionsEditorSettings); overload; virtual; abstract; + function DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass = nil; + ACaption: String = ''): Boolean; overload; + function DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; + ACaption: String; AOptionsFilter: array of TAbstractIDEOptionsClass; + ASettings: TIDEOptionsEditorSettings): Boolean; overload; virtual; abstract; // filenames, paths function CreateNewUniqueFilename(const Prefix, Ext: string; @@ -268,6 +380,7 @@ // codetools function BeginCodeTools: boolean; virtual; abstract; + function DoShowCodeToolBossError: TMessageLine; virtual; abstract; procedure DoJumpToCodeToolBossError; virtual; abstract; function NeedSaveSourceEditorChangesToCodeCache(AEditor: TSourceEditorInterface): boolean; virtual; abstract; @@ -283,10 +396,12 @@ // progress and error messages function ShowProgress(const SomeText: string; Step, MaxStep: integer): boolean; virtual; abstract; // False if canceled by user + function GetSelectedCompilerMessage: TMessageLine; virtual; abstract; function DoJumpToCompilerMessage(FocusEditor: boolean; Msg: TMessageLine = nil // if nil then it jumps to first message ): boolean; virtual; abstract; - procedure DoJumpToNextError(DirectionDown: boolean); virtual; abstract; + procedure DoJumpToNextCompilerMessage(aMinUrgency: TMessageLineUrgency; DirectionDown: boolean); virtual; abstract; + procedure DoJumpToNextError(DirectionDown: boolean); procedure DoShowMessagesView(BringToFront: boolean = true); virtual; abstract; function DoCheckFilesOnDisk(Instantaneous: boolean = false): TModalResult; virtual; abstract; // call this after changing TargetOS/TargetCPU of the ActiveProject @@ -305,7 +420,11 @@ LoadForm: boolean): TIDesigner; virtual; abstract; function GetProjectFileWithRootComponent(AComponent: TComponent): TLazProjectFile; virtual; abstract; function GetProjectFileWithDesigner(ADesigner: TIDesigner): TLazProjectFile; virtual; abstract; - + + procedure DoShowDesignerFormOfSrc(AEditor: TSourceEditorInterface); virtual; abstract; overload; + procedure DoShowMethod(AEditor: TSourceEditorInterface; const AMethodName: String); virtual; abstract; + procedure DoShowDesignerFormOfSrc(AEditor: TSourceEditorInterface; out AForm: TCustomForm); virtual; abstract; overload; + // events procedure RemoveAllHandlersOfObject(AnObject: TObject); procedure AddHandlerOnSavingAll(const OnSaveAllEvent: TModalResultFunction; @@ -336,6 +455,11 @@ AsLast: boolean = false); procedure RemoveHandlerOnProjectBuilding( const OnProjBuildingEvent: TModalResultFunction); + procedure AddHandlerOnProjectBuildingFinished( + const OnProjBuildingFinishedEvent: TLazBuildingFinishedEvent; + AsLast: boolean = false); + procedure RemoveHandlerOnProjectBuildingFinished( + const OnProjBuildingFinishedEvent: TLazBuildingFinishedEvent); procedure AddHandlerOnProjectDependenciesCompiling( const OnProjDependenciesCompilingEvent: TModalResultFunction; AsLast: boolean = false); @@ -346,6 +470,16 @@ AsLast: boolean = false); procedure RemoveHandlerOnProjectDependenciesCompiled( const OnProjDependenciesCompiledEvent: TModalResultFunction); + procedure AddHandlerOnLazarusBuilding( + const OnLazBuildingEvent: TModalResultFunction; + AsLast: boolean = false); + procedure RemoveHandlerOnLazarusBuilding( + const OnLazBuildingEvent: TModalResultFunction); + procedure AddHandlerOnLazarusBuildingFinished( + const OnLazBuildingFinishedEvent: TLazBuildingFinishedEvent; + AsLast: boolean = false); + procedure RemoveHandlerOnLazarusBuildingFinished( + const OnLazBuildingFinishedEvent: TLazBuildingFinishedEvent); procedure AddHandlerOnQuickSyntaxCheck( const OnQuickSyntaxCheckEvent: TModalHandledFunction; AsLast: boolean = false); @@ -356,10 +490,55 @@ procedure RemoveHandlerGetFPCFrontEndParams( const Handler: TGetFPCFrontEndParams); function CallHandlerGetFPCFrontEndParams(Sender: TObject; var Params: string): boolean; + procedure AddHandlerGetFPCFrontEndPath( + const Handler: TGetFPCFrontEndPath; AsLast: boolean = false); + procedure RemoveHandlerGetFPCFrontEndPath( + const Handler: TGetFPCFrontEndPath); + function CallHandlerGetFPCFrontEndPath(Sender: TObject; var Path: string): boolean; + procedure AddHandlerOnShowDesignerFormOfSource( + const OnShowDesignerFormOfSourceEvent: TShowDesignerFormOfSourceFunction; + AsLast: boolean = false); + procedure RemoveHandlerOnShowDesignerFormOfSource( + const OnShowDesignerFormOfSourceEvent: TShowDesignerFormOfSourceFunction); + procedure AddHandlerOnShowSourceOfActiveDesignerForm( + const OnShowSourceOfActiveDesignerForm: TNotifyEvent; + AsLast: boolean = false); + procedure RemoveHandlerOnShowSourceOfActiveDesignerForm( + const OnShowSourceOfActiveDesignerForm: TNotifyEvent); + procedure AddHandlerOnChangeToolStatus( + const OnChangeToolStatus: TLazToolStatusChangeEvent; + AsLast: boolean = false); + procedure RemoveHandlerOnChangeToolStatus( + const OnChangeToolStatus: TLazToolStatusChangeEvent); + + property IDEStarted: boolean read FIDEStarted; + property IDEIsClosing: boolean read FIDEIsClosing; + property LastActivatedWindows: TFPList read FLastActivatedWindows; + property LastFormActivated: TCustomForm read FLastFormActivated write FLastFormActivated; end; - + + { TIDETabMaster } + + TIDETabMaster = class + protected + function GetTabDisplayState: TTabDisplayState; virtual; abstract; + function GetTabDisplayStateEditor(Index: TSourceEditorInterface): TTabDisplayState; virtual; abstract; + public + procedure ToggleFormUnit; virtual; abstract; + procedure JumpToCompilerMessage(ASourceEditor: TSourceEditorInterface); virtual; abstract; + + property TabDisplayState: TTabDisplayState read GetTabDisplayState; + property TabDisplayStateEditor[Index: TSourceEditorInterface]: TTabDisplayState read GetTabDisplayStateEditor; + + procedure ShowCode(ASourceEditor: TSourceEditorInterface); virtual; abstract; + procedure ShowDesigner(ASourceEditor: TSourceEditorInterface; AIndex: Integer = 0); virtual; abstract; + + procedure ShowForm(AForm: TCustomForm); virtual; abstract; + end; + var LazarusIDE: TLazIDEInterface = nil; // will be set by the IDE + IDETabMaster: TIDETabMaster = nil; type TLazarusIDEBootHandlerType = ( @@ -416,6 +595,24 @@ FMainBarSubTitle:=AValue; end; +procedure TLazIDEInterface.SetToolStatus(const AToolStatus: TLazToolStatus); +var + xMethod: TLazToolStatusChangeEvent; + I: Integer; + OldToolStatus: TLazToolStatus; +begin + if FToolStatus=aToolStatus then Exit; + + OldToolStatus:=FToolStatus; + FToolStatus:=AToolStatus; + + for I := 0 to FLazarusIDEHandlers[lihtChangeToolStatus].Count-1 do + begin + xMethod := TLazToolStatusChangeEvent(FLazarusIDEHandlers[lihtChangeToolStatus][I]); + xMethod(Self, OldToolStatus, AToolStatus); + end; +end; + procedure TLazIDEInterface.DoCallNotifyHandler( HandlerType: TLazarusIDEHandlerType); begin @@ -468,6 +665,28 @@ Result:=mrOk; end; +procedure TLazIDEInterface.DoCallNotifyHandler(HandlerType: TLazarusIDEHandlerType; Sender: TObject); +begin + FLazarusIDEHandlers[HandlerType].CallNotifyEvents(Sender); +end; + +procedure TLazIDEInterface.DoCallShowDesignerFormOfSourceHandler( + HandlerType: TLazarusIDEHandlerType; Sender: TObject; + AEditor: TSourceEditorInterface; AComponentPaletteClassSelected: Boolean); +var + i: Integer; +begin + i := FLazarusIDEHandlers[HandlerType].Count; + while FLazarusIDEHandlers[HandlerType].NextDownIndex(i) do + TShowDesignerFormOfSourceFunction(FLazarusIDEHandlers[HandlerType][i])(Sender, AEditor, + AComponentPaletteClassSelected); +end; + +procedure TLazIDEInterface.DoJumpToNextError(DirectionDown: boolean); +begin + DoJumpToNextCompilerMessage(mluError, DirectionDown); +end; + constructor TLazIDEInterface.Create(TheOwner: TComponent); begin LazarusIDE:=Self; @@ -491,9 +710,10 @@ Result:=DoNewFile(NewFileDescriptor,NewFilename,NewSource,NewFlags,nil); end; -procedure TLazIDEInterface.DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; ACaption: String); +function TLazIDEInterface.DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; + ACaption: String): Boolean; begin - DoOpenIDEOptions(AEditor, ACaption, [], []); + Result := DoOpenIDEOptions(AEditor, ACaption, [], []); end; procedure TLazIDEInterface.DoShowSearchResultsView(Show: boolean; @@ -512,6 +732,19 @@ DoShowSearchResultsView(State); end; +procedure TLazIDEInterface.DoCallBuildingFinishedHandler( + HandlerType: TLazarusIDEHandlerType; Sender: TObject; BuildSuccessful: Boolean); +var + I: Integer; + xMethod: TLazBuildingFinishedEvent; +begin + for I := 0 to FLazarusIDEHandlers[HandlerType].Count-1 do + begin + xMethod := TLazBuildingFinishedEvent(FLazarusIDEHandlers[HandlerType][I]); + xMethod(Sender, BuildSuccessful); + end; +end; + procedure TLazIDEInterface.RemoveAllHandlersOfObject(AnObject: TObject); var HandlerType: TLazarusIDEHandlerType; @@ -550,12 +783,36 @@ AddHandler(lihtIDERestoreWindows,TMethod(OnIDERestoreWindowsEvent),AsLast); end; +procedure TLazIDEInterface.AddHandlerOnLazarusBuilding( + const OnLazBuildingEvent: TModalResultFunction; AsLast: boolean); +begin + AddHandler(lihtLazarusBuilding,TMethod(OnLazBuildingEvent), AsLast); +end; + +procedure TLazIDEInterface.AddHandlerOnLazarusBuildingFinished( + const OnLazBuildingFinishedEvent: TLazBuildingFinishedEvent; AsLast: boolean); +begin + AddHandler(lihtLazarusBuildingFinished,TMethod(OnLazBuildingFinishedEvent), AsLast); +end; + procedure TLazIDEInterface.RemoveHandlerOnIDERestoreWindows( const OnIDERestoreWindowsEvent: TNotifyEvent); begin RemoveHandler(lihtIDERestoreWindows,TMethod(OnIDERestoreWindowsEvent)); end; +procedure TLazIDEInterface.RemoveHandlerOnLazarusBuilding( + const OnLazBuildingEvent: TModalResultFunction); +begin + RemoveHandler(lihtLazarusBuilding,TMethod(OnLazBuildingEvent)); +end; + +procedure TLazIDEInterface.RemoveHandlerOnLazarusBuildingFinished( + const OnLazBuildingFinishedEvent: TLazBuildingFinishedEvent); +begin + RemoveHandler(lihtLazarusBuildingFinished,TMethod(OnLazBuildingFinishedEvent)); +end; + procedure TLazIDEInterface.AddHandlerOnIDEClose( const OnIDECloseEvent: TNotifyEvent; AsLast: boolean); begin @@ -619,8 +876,7 @@ end; procedure TLazIDEInterface.AddHandlerOnProjectDependenciesCompiled( - const OnProjDependenciesCompiledEvent: TModalResultFunction; AsLast: boolean - ); + const OnProjDependenciesCompiledEvent: TModalResultFunction; AsLast: boolean); begin AddHandler(lihtProjectDependenciesCompiled, TMethod(OnProjDependenciesCompiledEvent),AsLast); @@ -671,6 +927,80 @@ Result:=true; end; +procedure TLazIDEInterface.AddHandlerGetFPCFrontEndPath( + const Handler: TGetFPCFrontEndPath; AsLast: boolean); +begin + AddHandler(lihtGetFPCFrontEndPath,TMethod(Handler),AsLast); +end; + +procedure TLazIDEInterface.AddHandlerOnProjectBuildingFinished( + const OnProjBuildingFinishedEvent: TLazBuildingFinishedEvent; AsLast: boolean); +begin + AddHandler(lihtProjectBuildingFinished,TMethod(OnProjBuildingFinishedEvent),AsLast); +end; + +procedure TLazIDEInterface.AddHandlerOnChangeToolStatus( + const OnChangeToolStatus: TLazToolStatusChangeEvent; AsLast: boolean); +begin + AddHandler(lihtChangeToolStatus,TMethod(OnChangeToolStatus),AsLast); +end; + +procedure TLazIDEInterface.RemoveHandlerGetFPCFrontEndPath( + const Handler: TGetFPCFrontEndPath); +begin + RemoveHandler(lihtGetFPCFrontEndPath,TMethod(Handler)); +end; + +procedure TLazIDEInterface.RemoveHandlerOnProjectBuildingFinished( + const OnProjBuildingFinishedEvent: TLazBuildingFinishedEvent); +begin + RemoveHandler(lihtProjectBuildingFinished,TMethod(OnProjBuildingFinishedEvent)); +end; + +procedure TLazIDEInterface.RemoveHandlerOnChangeToolStatus( + const OnChangeToolStatus: TLazToolStatusChangeEvent); +begin + RemoveHandler(lihtChangeToolStatus,TMethod(OnChangeToolStatus)); +end; + +function TLazIDEInterface.CallHandlerGetFPCFrontEndPath(Sender: TObject; + var Path: string): boolean; +var + i: longint; +begin + i:=FLazarusIDEHandlers[lihtGetFPCFrontEndPath].Count; + while FLazarusIDEHandlers[lihtGetFPCFrontEndPath].NextDownIndex(i) do + begin + if not TGetFPCFrontEndPath(FLazarusIDEHandlers[lihtGetFPCFrontEndPath][i])(Self,Path) + then exit(false); + end; + Result:=true; +end; + +procedure TLazIDEInterface.AddHandlerOnShowDesignerFormOfSource( + const OnShowDesignerFormOfSourceEvent: TShowDesignerFormOfSourceFunction; AsLast: boolean); +begin + AddHandler(lihtShowDesignerFormOfSource,TMethod(OnShowDesignerFormOfSourceEvent),AsLast); +end; + +procedure TLazIDEInterface.RemoveHandlerOnShowDesignerFormOfSource( + const OnShowDesignerFormOfSourceEvent: TShowDesignerFormOfSourceFunction); +begin + RemoveHandler(lihtShowDesignerFormOfSource,TMethod(OnShowDesignerFormOfSourceEvent)); +end; + +procedure TLazIDEInterface.AddHandlerOnShowSourceOfActiveDesignerForm( + const OnShowSourceOfActiveDesignerForm: TNotifyEvent; AsLast: boolean); +begin + AddHandler(lihtShowSourceOfActiveDesignerForm,TMethod(OnShowSourceOfActiveDesignerForm),AsLast); +end; + +procedure TLazIDEInterface.RemoveHandlerOnShowSourceOfActiveDesignerForm( + const OnShowSourceOfActiveDesignerForm: TNotifyEvent); +begin + RemoveHandler(lihtShowSourceOfActiveDesignerForm,TMethod(OnShowSourceOfActiveDesignerForm)); +end; + initialization RegisterPropertyEditor(TypeInfo(AnsiString), THTMLBrowserHelpViewer,'BrowserPath',TFileNamePropertyEditor); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/maskpropedit.pas lazarus-1.6+dfsg/components/ideintf/maskpropedit.pas --- lazarus-1.4.4+dfsg/components/ideintf/maskpropedit.pas 2014-02-19 18:57:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/maskpropedit.pas 2015-07-04 23:08:00.000000000 +0000 @@ -18,8 +18,8 @@ interface uses - Classes, SysUtils, MaskUtils, Forms, Controls, Graphics, Dialogs, - StdCtrls, Buttons, ExtCtrls, FileUtil, MaskEdit, LazIDEIntf, + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, ExtCtrls, LazUTF8, LazFileUtils, MaskEdit, LazIDEIntf, PropEdits, ComponentEditors, ObjInspStrConsts, ButtonPanel; type diff -Nru lazarus-1.4.4+dfsg/components/ideintf/menuintf.pas lazarus-1.6+dfsg/components/ideintf/menuintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/menuintf.pas 2014-02-26 08:51:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/menuintf.pas 2016-02-06 14:26:44.000000000 +0000 @@ -23,6 +23,7 @@ type TIDEMenuItem = class; + TIDEMenuCommand = class; TIDEMenuSection = class; TAddMenuItemProc = @@ -33,51 +34,38 @@ A menu item in one of the IDE's menus. This is only the base class for TIDEMenuSection and TIDEMenuCommand } - { TIDEMenuItem } - - TIDEMenuItem = class(TPersistent) + TIDEMenuItem = class(TIDESpecialCommand) private FAutoFreeMenuItem: boolean; FBitmap: TBitmap; - FCaption: string; - FEnabled: Boolean; - FHint: string; - FImageIndex: Integer; FMenuItem: TMenuItem; FMenuItemClass: TMenuItemClass; - FName: string; - FOnClickMethod: TNotifyEvent; - FOnClickProc: TNotifyProcedure; - FResourceName: String; - FSection: TIDEMenuSection; - FSectionIndex: Integer; - FSize: integer; + FSection: TIDEMenuSection; // parent section + FSectionIndex: Integer;// index in parent section + FSize: integer; // size of this item including separators and children in parent section (e.g. a submenu has size=1) FTag: Integer; FUserTag: PtrUInt; - FVisible: Boolean; FLastVisibleActive: boolean; + FVisible: Boolean; procedure MenuItemDestroy(Sender: TObject); procedure BitmapChange(Sender: TObject); protected + procedure SetCommand(const AValue: TIDECommand); override; procedure MenuItemClick(Sender: TObject); virtual; function GetBitmap: TBitmap; virtual; - function GetCaption: string; virtual; - function GetHint: String; virtual; procedure SetBitmap(const AValue: TBitmap); virtual; - procedure SetCaption(const AValue: string); virtual; - procedure SetEnabled(const AValue: Boolean); virtual; - procedure SetHint(const AValue: String); virtual; - procedure SetImageIndex(const AValue: Integer); virtual; + procedure SetCaption(AValue: string); override; + procedure SetEnabled(const AValue: Boolean); override; + procedure SetChecked(const AValue: Boolean); override; + procedure SetHint(const AValue: String); override; + procedure SetImageIndex(const AValue: Integer); override; procedure SetMenuItem(const AValue: TMenuItem); virtual; - procedure SetName(const AValue: string); virtual; - procedure SetOnClickMethod(const AValue: TNotifyEvent); virtual; - procedure SetOnClickProc(const AValue: TNotifyProcedure); virtual; - procedure SetResourceName(const AValue: String); virtual; procedure SetSection(const AValue: TIDEMenuSection); virtual; procedure SetVisible(const AValue: Boolean); virtual; procedure ClearMenuItems; virtual; + procedure ShortCutsUpdated(const aShortCut, aShortCutKey2: TShortCut); override; public - constructor Create(const TheName: string); virtual; + constructor Create(const TheName: string); override; destructor Destroy; override; function GetImageList: TCustomImageList; virtual; function HasBitmap: Boolean; @@ -85,44 +73,32 @@ function GetPath: string; function GetRoot: TIDEMenuItem; function VisibleActive: boolean; virtual; - function GetContainerSection: TIDEMenuSection; - function GetContainerMenuItem: TMenuItem; - function Size: integer; virtual; + function GetContainerSection: TIDEMenuSection; // returns nearest sub menu section + function GetContainerMenuItem: TMenuItem; // returns nearest sub menu + function Size: integer; virtual; // size of this item including separators and children in parent section (e.g. a submenu has size=1) function HasAsParent(Item: TIDEMenuItem): boolean; procedure WriteDebugReport(const Prefix: string; MenuItemDebugReport: boolean); virtual; procedure ConsistencyCheck; virtual; - procedure TriggerClick; public - property Name: string read FName write SetName; property Bitmap: TBitmap read GetBitmap write SetBitmap; - property Hint: String read GetHint write SetHint; - property ImageIndex: Integer read FImageIndex write SetImageIndex; - property Visible: Boolean read FVisible write SetVisible; - property OnClick: TNotifyEvent read FOnClickMethod write SetOnClickMethod; - property OnClickProc: TNotifyProcedure read FOnClickProc write SetOnClickProc; - property Caption: string read GetCaption write SetCaption; property Section: TIDEMenuSection read FSection write SetSection; - property Enabled: Boolean read FEnabled write SetEnabled; property MenuItem: TMenuItem read FMenuItem write SetMenuItem; property MenuItemClass: TMenuItemClass read FMenuItemClass write FMenuItemClass; property SectionIndex: Integer read FSectionIndex; property AutoFreeMenuItem: boolean read FAutoFreeMenuItem write FAutoFreeMenuItem; - property ResourceName: String read FResourceName write SetResourceName; property Tag: Integer read FTag write FTag; property UserTag: PtrUInt read FUserTag write FUserTag; + property Visible: Boolean read FVisible write SetVisible; end; TIDEMenuItemClass = class of TIDEMenuItem; - - + { TIDEMenuSection An TIDEMenuItem with children, either in a sub menu or separated with separators. If no children are visible, the section will not be visible. } - - { TIDEMenuSection } - + TIDEMenuSectionState = ( imssClearing ); @@ -136,7 +112,7 @@ private FBottomSeparator: TMenuItem; FChildMenuItemsCreated: boolean; - FChildsAsSubMenu: boolean; + FChildrenAsSubMenu: boolean; FInvalidChildEndIndex: Integer; FInvalidChildStartIndex: Integer; FItems: TFPList; @@ -158,11 +134,11 @@ protected procedure MenuItemClick(Sender: TObject); override; procedure SetMenuItem(const AValue: TMenuItem); override; - procedure SetChildsAsSubMenu(const AValue: boolean); virtual; + procedure SetChildrenAsSubMenu(const AValue: boolean); virtual; procedure SetSubMenuImages(const AValue: TCustomImageList); virtual; procedure ClearMenuItems; override; procedure ItemVisibleActiveChanged(AnItem: TIDEMenuItem); - procedure UpdateChildsIndex(StartIndex: Integer); + procedure UpdateAllChildrenIndex(StartIndex: Integer); procedure UpdateMenuStructure; procedure UpdateSize(Diff: integer); procedure Invalidate(FromIndex, ToIndex: integer); @@ -187,7 +163,7 @@ procedure BeginUpdate; procedure EndUpdate; procedure NotifySubSectionOnShow(Sender: TObject; - WithChilds: Boolean = true); virtual; + WithChildren: Boolean = true); virtual; procedure RemoveAllHandlersOfObject(AnObject: TObject); procedure AddHandlerOnShow(const OnShowEvent: TNotifyEvent; AsLast: boolean = false); @@ -196,8 +172,10 @@ MenuItemDebugReport: boolean); override; procedure ConsistencyCheck; override; public - property ChildsAsSubMenu: boolean read FChildsAsSubMenu - write SetChildsAsSubMenu default true; + property ChildsAsSubMenu: boolean read FChildrenAsSubMenu + write SetChildrenAsSubMenu default true; deprecated;// use ChildrenAsSubMenu instead + property ChildrenAsSubMenu: boolean read FChildrenAsSubMenu + write SetChildrenAsSubMenu default true; property SubMenuImages: TCustomImageList read FSubMenuImages write SetSubMenuImages; property Items[Index: Integer]: TIDEMenuItem read GetItems; default; @@ -205,12 +183,11 @@ property BottomSeparator: TMenuItem read FBottomSeparator; property NeedTopSeparator: boolean read FNeedTopSeparator; property NeedBottomSeparator: boolean read FNeedBottomSeparator; - property VisibleCount: integer read FVisibleCount; // without grandchilds + property VisibleCount: integer read FVisibleCount; // without grandchildren property States: TIDEMenuSectionStates read FStates; end; TIDEMenuSectionClass = class of TIDEMenuSection; - { TIDEMenuCommand A leaf menu item. No children. Hint: The shortcut is defined via the Command property. @@ -218,8 +195,6 @@ TIDEMenuCommand = class(TIDEMenuItem) private FAutoCheck: boolean; - FChecked: Boolean; - FCommand: TIDECommand; FDefault: Boolean; FGroupIndex: Byte; FRadioItem: Boolean; @@ -228,21 +203,14 @@ protected procedure MenuItemClick(Sender: TObject); override; procedure SetAutoCheck(const AValue: boolean); virtual; - procedure SetChecked(const AValue: Boolean); virtual; procedure SetDefault(const AValue: Boolean); virtual; procedure SetGroupIndex(const AValue: Byte); virtual; procedure SetRadioItem(const AValue: Boolean); virtual; procedure SetRightJustify(const AValue: boolean); virtual; procedure SetShowAlwaysCheckable(const AValue: boolean); virtual; - procedure SetCommand(const AValue: TIDECommand); virtual; procedure SetMenuItem(const AValue: TMenuItem); override; - procedure SetOnClickMethod(const AValue: TNotifyEvent); override; - procedure SetOnClickProc(const AValue: TNotifyProcedure); override; - procedure CommandChanged(Sender: TObject); public - property Command: TIDECommand read FCommand write SetCommand; property AutoCheck: boolean read FAutoCheck write SetAutoCheck default False; - property Checked: Boolean read FChecked write SetChecked default False; property Default: Boolean read FDefault write SetDefault default False; property GroupIndex: Byte read FGroupIndex write SetGroupIndex default 0; property RadioItem: Boolean read FRadioItem write SetRadioItem; @@ -303,6 +271,7 @@ mnuSearch: TIDEMenuSection; itmSearchFindReplace: TIDEMenuSection; itmJumpings: TIDEMenuSection; + itmJumpToSection: TIDEMenuSection; itmBookmarks: TIDEMenuSection; itmCodeToolSearches: TIDEMenuSection; @@ -357,6 +326,7 @@ itmOptionsDialogs: TIDEMenuSection; itmCustomTools: TIDEMenuSection; itmSecondaryTools: TIDEMenuSection; + itmConversion: TIDEMenuSection; itmDelphiConversion: TIDEMenuSection; itmBuildingLazarus: TIDEMenuSection; @@ -490,7 +460,7 @@ ): TIDEMenuSection; begin Result:=TIDEMenuSection.Create(Name); - Result.ChildsAsSubMenu:=false; + Result.ChildrenAsSubMenu:=false; Parent.AddLast(Result); end; @@ -509,7 +479,7 @@ const ResourceName: String): TIDEMenuSection; begin Result := TIDEMenuSection.Create(Name); - Result.ChildsAsSubMenu := True; + Result.ChildrenAsSubMenu := True; Result.Caption := Caption; Result.OnClick := OnClickMethod; Result.OnClickProc := OnClickProc; @@ -572,8 +542,11 @@ procedure TIDEMenuItem.MenuItemClick(Sender: TObject); begin - if Assigned(OnClick) then OnClick(Self); - if Assigned(OnClickProc) then OnClickProc(Self); + if Assigned(OnClick) then + OnClick(Self) + else + if Assigned(OnClickProc) then + OnClickProc(Self); end; procedure TIDEMenuItem.MenuItemDestroy(Sender: TObject); @@ -587,31 +560,10 @@ if MenuItem<>nil then MenuItem.Bitmap:=Bitmap; end; -procedure TIDEMenuItem.SetOnClickProc(const AValue: TNotifyProcedure); -begin - FOnClickProc := AValue; -end; - -procedure TIDEMenuItem.SetResourceName(const AValue: String); -begin - if FResourceName = AValue then exit; - FResourceName := AValue; - if MenuItem <> nil then - if AValue <> '' then - MenuItem.ImageIndex := IDEImages.LoadImage(16, FResourceName) - else - MenuItem.ImageIndex := -1; -end; - -procedure TIDEMenuItem.SetOnClickMethod(const AValue: TNotifyEvent); -begin - FOnClickMethod := AValue; -end; - procedure TIDEMenuItem.SetEnabled(const AValue: Boolean); begin - if FEnabled=AValue then exit; - FEnabled:=AValue; + if Enabled=AValue then exit; + inherited SetEnabled(AValue); if MenuItem<>nil then MenuItem.Enabled:=Enabled; end; @@ -626,48 +578,69 @@ Result:=FBitmap; end; -function TIDEMenuItem.GetCaption: string; -begin - if FCaption<>'' then - Result:=FCaption - else - Result:=FName; -end; - -function TIDEMenuItem.GetHint: String; -begin - Result:=FHint; -end; - procedure TIDEMenuItem.SetBitmap(const AValue: TBitmap); begin if FBitmap=AValue then exit; if AValue<>nil then Bitmap.Assign(AValue) else - FBitmap.Free; + FreeAndNil(FBitmap); if MenuItem<>nil then MenuItem.Bitmap:=FBitmap; end; -procedure TIDEMenuItem.SetCaption(const AValue: string); +procedure TIDEMenuItem.SetCaption(AValue: string); begin - FCaption:=AValue; + if Caption=AValue then Exit; + inherited SetCaption(AValue); if MenuItem<>nil then MenuItem.Caption:=Caption; end; +procedure TIDEMenuItem.SetChecked(const AValue: Boolean); +begin + if Checked=AValue then exit; + inherited SetChecked(AValue); + if MenuItem<>nil then + MenuItem.Checked:=Checked; +end; + +procedure TIDEMenuItem.SetCommand(const AValue: TIDECommand); +var + I: Integer; + xUser: TIDESpecialCommand; +begin + inherited SetCommand(AValue); + //copy properties to other command users to support legacy code + if (AValue<>nil) and SyncAvailable then + for I := 0 to AValue.UserCount-1 do + if AValue.Users[I] <> Self then + begin + xUser:=AValue.Users[I]; + xUser.BlockSync; + try + xUser.Caption:=Caption; + xUser.Hint:=Hint; + xUser.ImageIndex:=ImageIndex; + xUser.Enabled:=Enabled; + finally + xUser.UnblockSync; + end; + end; +end; + procedure TIDEMenuItem.SetHint(const AValue: String); begin - FHint:=AValue; + if Hint=AValue then Exit; + inherited SetHint(AValue); if MenuItem<>nil then MenuItem.Hint:=Hint; end; procedure TIDEMenuItem.SetImageIndex(const AValue: Integer); begin - if FImageIndex=AValue then exit; - FImageIndex:=AValue; + if ImageIndex=AValue then exit; + inherited SetImageIndex(AValue); if MenuItem<>nil then MenuItem.ImageIndex:=ImageIndex; end; @@ -688,18 +661,11 @@ MenuItem.Visible := Visible; MenuItem.Enabled := Enabled; MenuItem.OnClick := @MenuItemClick; - if ResourceName <> '' then - MenuItem.ImageIndex := IDEImages.LoadImage(16, ResourceName); + MenuItem.ImageIndex := ImageIndex; end else if Section<>nil then Section.Invalidate(SectionIndex,SectionIndex); end; -procedure TIDEMenuItem.SetName(const AValue: string); -begin - if FName=AValue then exit; - FName:=AValue; -end; - procedure TIDEMenuItem.SetSection(const AValue: TIDEMenuSection); var OldSection: TIDEMenuSection; @@ -718,7 +684,7 @@ var OldVisibleActive: Boolean; begin - if FVisible=AValue then exit; + if Visible=AValue then exit; OldVisibleActive:=VisibleActive; FVisible:=AValue; if MenuItem<>nil then @@ -727,6 +693,17 @@ Section.ItemVisibleActiveChanged(Self); end; +procedure TIDEMenuItem.ShortCutsUpdated(const aShortCut, + aShortCutKey2: TShortCut); +begin + inherited ShortCutsUpdated(aShortCut, aShortCutKey2); + if MenuItem<>nil then + begin + MenuItem.ShortCut:=aShortCut; + MenuItem.ShortCutKey2:=aShortCutKey2; + end; +end; + procedure TIDEMenuItem.ClearMenuItems; begin if FMenuItem <> nil then begin @@ -744,14 +721,11 @@ constructor TIDEMenuItem.Create(const TheName: string); begin - inherited Create; - FSize:=1; - FName:=TheName; - FEnabled:=true; + inherited Create(TheName); FVisible:=true; + FSize:=1; FMenuItemClass:=TMenuItem; FSectionIndex:=-1; - FImageIndex:=-1; {$IFDEF VerboseMenuIntf} //debugln('TIDEMenuItem.Create ',dbgsName(Self),' Name="',Name,'"'); {$ENDIF} @@ -839,7 +813,7 @@ Result:=TIDEMenuSection(Self) else Result:=Section; - while (Result<>nil) and (not Result.ChildsAsSubMenu) do + while (Result<>nil) and (not Result.ChildrenAsSubMenu) do Result:=Result.Section; end; @@ -927,11 +901,6 @@ end; end; -procedure TIDEMenuItem.TriggerClick; -begin - MenuItemClick(Self); -end; - { TIDEMenuSection } procedure TIDEMenuSection.SetSubMenuImages(const AValue: TCustomImageList); @@ -952,7 +921,7 @@ Invalidate(0,Count-1); end; -procedure TIDEMenuSection.UpdateChildsIndex(StartIndex: Integer); +procedure TIDEMenuSection.UpdateAllChildrenIndex(StartIndex: Integer); var i: LongInt; begin @@ -970,7 +939,7 @@ procedure UpdateNeedTopSeparator; // a separator at top is needed, if - // - this section is embedded (not ChildsAsSubMenu) + // - this section is embedded (not ChildrenAsSubMenu) // - and this section is visible // - and this section has visible children // - and there is a visible menu item in front @@ -979,7 +948,7 @@ NewNeedTopSeparator: Boolean; begin NewNeedTopSeparator:=false; - if (not ChildsAsSubMenu) and (Section<>nil) and VisibleActive then begin + if (not ChildrenAsSubMenu) and (Section<>nil) and VisibleActive then begin // check for any visible item in front i:=SectionIndex-1; while i>=0 do begin @@ -1021,13 +990,10 @@ {$ENDIF} if ContainerMenuIndex>ContainerMenuItem.Count then begin - {$IFDEF VerboseMenuIntf} debugln('TIDEMenuSection.UpdateNeedTopSeparator CREATE TopSeparator Name="',Name,'" ContainerMenuIndex=',dbgs(ContainerMenuIndex),' ContainerMenuItem.Count=',dbgs(ContainerMenuItem.Count)); GetRoot.WriteDebugReport(' Top ',true); debugln('TIDEMenuSection.UpdateNeedTopSeparator CREATE TopSeparator Name="',Name,'" ContainerMenuIndex ** FORCED VALUE ** FROM ContainerMenuItem.Count=',dbgs(ContainerMenuItem.Count)); - {$ENDIF} - // there's no yet available room for new FTopSeparator.fixes #17321. - ContainerMenuIndex := ContainerMenuItem.Count; + RaiseGDBException('TIDEMenuSection.UpdateNeedTopSeparator inconsistency'); end; ContainerMenuItem.Insert(ContainerMenuIndex,FTopSeparator); end; @@ -1036,19 +1002,20 @@ procedure UpdateNeedBottomSeparator; // a separator at bottom is needed, if - // - this section is imbedded (not ChildsAsSubMenu) + // - this section is imbedded (not ChildrenAsSubMenu) // - and this section is visible // - and this section has visible children - // - and there is a visible menu item behind and it has no top separator + // - and there is a visible menu item behind + // - and the visible menu item is not an embedded section (that creates its own separator) var ItemBehind: TIDEMenuItem; i: Integer; NewNeedBottomSeparator: Boolean; begin NewNeedBottomSeparator:=false; - //debugln('TIDEMenuSection.UpdateNeedBottomSeparator Name="',Name,'" ChildsAsSubMenu=',dbgs(ChildsAsSubMenu),' Section=',dbgs(Section<>nil),' VisibleActive=',dbgs(VisibleActive)); - if (not ChildsAsSubMenu) and (Section<>nil) and VisibleActive then begin - // check for any visible item in front + //debugln('TIDEMenuSection.UpdateNeedBottomSeparator Name="',Name,'" ChildrenAsSubMenu=',dbgs(ChildrenAsSubMenu),' Section=',dbgs(Section<>nil),' VisibleActive=',dbgs(VisibleActive)); + if (not ChildrenAsSubMenu) and (Section<>nil) and VisibleActive then begin + // check for any visible item behind i:=SectionIndex+1; while i<Section.Count do begin ItemBehind:=Section[i]; @@ -1056,7 +1023,7 @@ // there is a visible menu item behind //debugln('TIDEMenuSection.UpdateNeedBottomSeparator Name="',Name,'" ItemBehind="',ItemBehind.Name,'"'); if (ItemBehind is TIDEMenuSection) - and (not TIDEMenuSection(ItemBehind).ChildsAsSubMenu) + and (not TIDEMenuSection(ItemBehind).ChildrenAsSubMenu) then begin // the visible menu item behind will create its own separator end else begin @@ -1087,7 +1054,7 @@ // BottomSeparator is not needed anymore FreeAndNil(FBottomSeparator); {$IFDEF VerboseMenuIntf} - debugln('TIDEMenuSection.UpdateMenuStructure FREE BottomSeparator Name="',Name,'"'); + debugln('TIDEMenuSection.UpdateNeedBottomSeparator FREE BottomSeparator Name="',Name,'"'); {$ENDIF} end else begin // BottomSeparator is needed @@ -1095,11 +1062,12 @@ FBottomSeparator.AddHandlerOnDestroy(@SeparatorDestroy); FBottomSeparator.Caption:='-'; {$IFDEF VerboseMenuIntf} - debugln('TIDEMenuSection.UpdateMenuStructure CREATE BottomSeparator Name="',Name,'" ContainerMenuIndex=',dbgs(ContainerMenuIndex),' ContainerMenuItem.Count=',dbgs(ContainerMenuItem.Count)); + debugln('TIDEMenuSection.UpdateNeedBottomSeparator CREATE BottomSeparator Name="',Name,'" ContainerMenuIndex=',dbgs(ContainerMenuIndex),' ContainerMenuItem.Count=',dbgs(ContainerMenuItem.Count)); {$ENDIF} if ContainerMenuIndex>ContainerMenuItem.Count then begin - debugln('TIDEMenuSection.UpdateMenuStructure CREATE BottomSeparator Name="',Name,'" ContainerMenuIndex=',dbgs(ContainerMenuIndex),' ContainerMenuItem.Count=',dbgs(ContainerMenuItem.Count)); + debugln('TIDEMenuSection.UpdateNeedBottomSeparator CREATE BottomSeparator Name="',Name,'" ContainerMenuIndex=',dbgs(ContainerMenuIndex),' ContainerMenuItem.Count=',dbgs(ContainerMenuItem.Count)); GetRoot.WriteDebugReport(' Bottom ',true); + RaiseGDBException('TIDEMenuSection.UpdateNeedBottomSeparator inconsistency'); end; ContainerMenuItem.Insert(ContainerMenuIndex,FBottomSeparator); end; @@ -1109,14 +1077,13 @@ var i: Integer; begin - if (Section <> nil) and not Section.Visible then exit; if (FInvalidChildStartIndex>FInvalidChildEndIndex) then exit; if FUpdateLock>0 then begin exit; end; if FInvalidChildStartIndex<0 then FInvalidChildStartIndex:=0; - if (Section<>nil) and (not Section.ChildsAsSubMenu) + if (Section<>nil) and (not Section.ChildrenAsSubMenu) and (Section.FInvalidChildStartIndex<=SectionIndex) then begin // the sections in front need update too // => start the update in front @@ -1127,7 +1094,7 @@ end else if FInvalidChildStartIndex<Count then begin // the sections in front are uptodate ContainerMenuItem:=GetContainerMenuItem; - if ChildsAsSubMenu then + if ChildrenAsSubMenu then ContainerMenuIndex:=0 else ContainerMenuIndex:=GetContainerIndex(false); @@ -1158,7 +1125,7 @@ CurSection:=nil; if Visible then begin // insert menu item - if ((CurSection=nil) or CurSection.ChildsAsSubMenu) + if ((CurSection=nil) or CurSection.ChildrenAsSubMenu) and (ContainerMenuItem<>nil) then begin Item.CreateMenuItem; if Item.MenuItem.Parent=nil then begin @@ -1201,7 +1168,7 @@ ASection:=Self; while (ASection<>nil) do begin inc(ASection.FSize,Diff); - if ASection.ChildsAsSubMenu then break; + if ASection.ChildrenAsSubMenu then break; ASection:=ASection.Section; end; end; @@ -1242,17 +1209,18 @@ end; procedure TIDEMenuSection.NotifySubSectionOnShow(Sender: TObject; - WithChilds: Boolean); + WithChildren: Boolean); var i: Integer; Child: TIDEMenuItem; begin - //DebugLn(['TIDEMenuSection.NotifySubSectionOnShow ',Name,' ChildsAsSubMenu=',ChildsAsSubMenu,' Count=',Count]); + //DebugLn(['TIDEMenuSection.NotifySubSectionOnShow ',Name,' ChildrenAsSubMenu=',ChildrenAsSubMenu,' Count=',Count]); FSectionHandlers[imshtOnShow].CallNotifyEvents(Sender); - if WithChilds or (not ChildsAsSubMenu) then begin + if WithChildren or (not ChildrenAsSubMenu) then begin i:=0; while i<Count do begin Child:=Items[i]; + Child.DoOnRequestCaption(Child); if Child is TIDEMenuSection then TIDEMenuSection(Child).NotifySubSectionOnShow(Sender,false); inc(i); @@ -1307,7 +1275,7 @@ begin inherited Create(TheName); FSize := 0; - FChildsAsSubMenu := True; + FChildrenAsSubMenu := True; FNeedTopSeparator := False; FNeedBottomSeparator := False; FItems := TFPList.Create; @@ -1367,9 +1335,9 @@ procedure TIDEMenuSection.Insert(Index: Integer; AnItem: TIDEMenuItem); begin - AnItem.fName:=CreateUniqueName(AnItem.Name); + AnItem.Name:=CreateUniqueName(AnItem.Name); FItems.Insert(Index,AnItem); - UpdateChildsIndex(Index); + UpdateAllChildrenIndex(Index); UpdateSize(AnItem.Size); AnItem.FSection:=Self; if AnItem.VisibleActive then @@ -1383,10 +1351,11 @@ var OldVisibleActive: Boolean; begin + OldVisibleActive:=False; if not (imssClearing in FStates) then begin OldVisibleActive:=AnItem.VisibleActive; FItems.Delete(AnItem.SectionIndex); - UpdateChildsIndex(AnItem.SectionIndex); + UpdateAllChildrenIndex(AnItem.SectionIndex); end; UpdateSize(-AnItem.Size); AnItem.FSection:=nil; @@ -1400,7 +1369,7 @@ procedure TIDEMenuSection.CreateMenuItem; begin - if ChildsAsSubMenu then + if ChildrenAsSubMenu then inherited CreateMenuItem; end; @@ -1412,7 +1381,7 @@ if (Section=nil) then exit; // get the start of the parent Section - if not Section.ChildsAsSubMenu then + if not Section.ChildrenAsSubMenu then inc(Result,Section.GetContainerIndex(true)); // add all siblings in front SiblingIndex:=0; @@ -1430,7 +1399,7 @@ var i: Integer; begin - if ChildsAsSubMenu then + if ChildrenAsSubMenu then Result:=0 else Result:=GetContainerIndex(true); @@ -1477,7 +1446,7 @@ function TIDEMenuSection.Size: integer; begin - if ChildsAsSubMenu then + if ChildrenAsSubMenu then Result:=1 else Result:=inherited Size; @@ -1524,7 +1493,7 @@ begin debugln([Prefix,'SectionIndex=',SectionIndex,' Name="',DbgStr(Name),'"', ' VisibleActive=',VisibleActive, - ' ChildsAsSubMenu=',ChildsAsSubMenu, + ' ChildrenAsSubMenu=',ChildrenAsSubMenu, ' ContainerIndex=',GetContainerIndex(false), ' NeedSep:Top=',NeedTopSeparator,',Bottom=',NeedBottomSeparator, ' Size=',dbgs(Size)]); @@ -1611,15 +1580,15 @@ UpdateMenuStructure; end; -procedure TIDEMenuSection.SetChildsAsSubMenu(const AValue: boolean); +procedure TIDEMenuSection.SetChildrenAsSubMenu(const AValue: boolean); begin - if FChildsAsSubMenu=AValue then exit; - FChildsAsSubMenu:=AValue; + if FChildrenAsSubMenu=AValue then exit; + FChildrenAsSubMenu:=AValue; ClearMenuItems; if Section<>nil then begin Section.Invalidate(SectionIndex,SectionIndex); {$IFDEF VerboseMenuIntf} - debugln('TIDEMenuSection.SetChildsAsSubMenu Name="',Name,'"'); + debugln('TIDEMenuSection.SetChildrenAsSubMenu Name="',Name,'"'); {$ENDIF} if AValue then Section.UpdateSize(1) @@ -1631,20 +1600,6 @@ { TIDEMenuCommand } -procedure TIDEMenuCommand.CommandChanged(Sender: TObject); -begin - //DebugLn('TIDEMenuCommand.CommandChanged ',Name); - if MenuItem<>nil then - if FCommand<>nil then begin - MenuItem.ShortCut:=KeyToShortCut(FCommand.ShortcutA.Key1,FCommand.ShortcutA.Shift1); - MenuItem.ShortCutKey2:=KeyToShortCut(FCommand.ShortcutA.Key2,FCommand.ShortcutA.Shift2); - end - else begin - MenuItem.ShortCut:=0; - MenuItem.ShortCutKey2:=0; - end; -end; - procedure TIDEMenuCommand.MenuItemClick(Sender: TObject); begin inherited MenuItemClick(Sender); @@ -1662,13 +1617,6 @@ if MenuItem<>nil then MenuItem.AutoCheck:=AutoCheck; end; -procedure TIDEMenuCommand.SetChecked(const AValue: Boolean); -begin - if FChecked=AValue then exit; - FChecked:=AValue; - if MenuItem<>nil then MenuItem.Checked:=Checked; -end; - procedure TIDEMenuCommand.SetDefault(const AValue: Boolean); begin if FDefault=AValue then exit; @@ -1708,32 +1656,6 @@ MenuItem.ShowAlwaysCheckable:=ShowAlwaysCheckable; end; -procedure TIDEMenuCommand.SetCommand(const AValue: TIDECommand); -begin - if FCommand = AValue then - Exit; - if FCommand <> nil then - begin - //DebugLn('TIDEMenuCommand.SetCommand OLD ',ShortCutToText(FCommand.AsShortCut),' FCommand.Name=',FCommand.Name,' Name=',Name,' FCommand=',dbgs(Pointer(FCommand))); - FCommand.OnChange := nil; - if FCommand.OnExecute=OnClick then - FCommand.OnExecute:=nil; - if FCommand.OnExecuteProc=OnClickProc then - FCommand.OnExecuteProc:=nil; - end; - FCommand := AValue; - if FCommand <> nil then - begin - if FCommand.OnExecute = nil then - FCommand.OnExecute := OnClick; - if FCommand.OnExecuteProc = nil then - FCommand.OnExecuteProc := OnClickProc; - FCommand.OnChange := @CommandChanged; - //DebugLn('TIDEMenuCommand.SetCommand NEW ',ShortCutToText(FCommand.AsShortCut),' FCommand.Name=',FCommand.Name,' Name=',Name,' FCommand=',dbgs(Pointer(FCommand))); - end; - CommandChanged(nil); -end; - procedure TIDEMenuCommand.SetMenuItem(const AValue: TMenuItem); begin inherited SetMenuItem(AValue); @@ -1744,9 +1666,9 @@ MenuItem.RadioItem:=RadioItem; MenuItem.RightJustify:=RightJustify; MenuItem.ShowAlwaysCheckable:=ShowAlwaysCheckable; - if FCommand<>nil then begin - MenuItem.ShortCut:=KeyToShortCut(FCommand.ShortcutA.Key1,FCommand.ShortcutA.Shift1); - MenuItem.ShortCutKey2:=KeyToShortCut(FCommand.ShortcutA.Key2,FCommand.ShortcutA.Shift2); + if Command<>nil then begin + MenuItem.ShortCut:=KeyToShortCut(Command.ShortcutA.Key1,Command.ShortcutA.Shift1); + MenuItem.ShortCutKey2:=KeyToShortCut(Command.ShortcutA.Key2,Command.ShortcutA.Shift2); end else begin MenuItem.ShortCut:=0; @@ -1756,26 +1678,6 @@ end; end; -procedure TIDEMenuCommand.SetOnClickMethod(const AValue: TNotifyEvent); -var - OldClick: TNotifyEvent; -begin - OldClick:=OnClick; - inherited SetOnClickMethod(AValue); - if Assigned(Command) and (Command.OnExecute = OldClick) then - Command.OnExecute := OnClick; -end; - -procedure TIDEMenuCommand.SetOnClickProc(const AValue: TNotifyProcedure); -var - OldClick: TNotifyProcedure; -begin - OldClick:=OnClickProc; - inherited SetOnClickProc(AValue); - if Assigned(Command) and (Command.OnExecuteProc = OldClick) then - Command.OnExecuteProc := OnClickProc; -end; - { TIDEMenuRoots } function TIDEMenuRoots.GetItems(Index: integer): TIDEMenuSection; @@ -1797,7 +1699,7 @@ procedure TIDEMenuRoots.RegisterMenuRoot(Section: TIDEMenuSection); begin - Section.FName:=CreateUniqueName(Section.Name); + Section.Name:=CreateUniqueName(Section.Name); FItems.Add(Section); end; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/newfield.pas lazarus-1.6+dfsg/components/ideintf/newfield.pas --- lazarus-1.4.4+dfsg/components/ideintf/newfield.pas 2015-05-06 22:18:39.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/newfield.pas 2015-05-31 13:45:31.000000000 +0000 @@ -430,17 +430,20 @@ begin SelectType.Clear; SelectType.Sorted := False; - for i := Low(Fieldtypenames) to High(Fieldtypenames) do begin + for i := Low(Fieldtypenames) to High(Fieldtypenames) do SelectType.Items.AddObject(Fieldtypenames[i], Tobject(PtrUInt(i))); - end; SelectType.Sorted := True; end; function TNewFieldFrm.GetLookupDataset: TDataset; begin - Result := GlobalDesignHook.GetComponent( DataSetsCombo.Items[DataSetsCombo.ItemIndex] ) as TDataset; - if Not Result.InheritsFrom(TDataset) then Result := Nil; + if GlobalDesignHook=Nil then + Result := Nil + else begin + Result := GlobalDesignHook.GetComponent( DataSetsCombo.Items[DataSetsCombo.ItemIndex] ) as TDataset; + if Not Result.InheritsFrom(TDataset) then Result := Nil; + end; end; procedure TNewFieldFrm.AddLookupDataset(const s: ansistring); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/objectinspector.lfm lazarus-1.6+dfsg/components/ideintf/objectinspector.lfm --- lazarus-1.4.4+dfsg/components/ideintf/objectinspector.lfm 2014-10-30 19:47:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/objectinspector.lfm 2015-07-01 09:24:11.000000000 +0000 @@ -8,7 +8,7 @@ ClientHeight = 669 ClientWidth = 300 KeyPreview = True - LCLVersion = '1.3' + LCLVersion = '1.5' object StatusBar: TStatusBar Left = 0 Height = 23 @@ -37,10 +37,11 @@ Left = 0 Height = 184 Top = 23 - Width = 300 + Width = 406 Align = alTop + BevelOuter = bvNone ClientHeight = 184 - ClientWidth = 300 + ClientWidth = 406 TabOrder = 2 object CompFilterEdit: TTreeFilterEdit AnchorSideLeft.Control = FilterLabel @@ -50,7 +51,7 @@ Left = 92 Height = 28 Top = 3 - Width = 204 + Width = 311 UseFormActivate = True ButtonWidth = 23 NumGlyphs = 1 @@ -71,6 +72,7 @@ end object MainPopupMenu: TPopupMenu OnPopup = OnMainPopupMenuPopup + OnClose = MainPopupMenuClose left = 32 top = 64 end diff -Nru lazarus-1.4.4+dfsg/components/ideintf/objectinspector.pp lazarus-1.6+dfsg/components/ideintf/objectinspector.pp --- lazarus-1.4.4+dfsg/components/ideintf/objectinspector.pp 2015-09-02 22:42:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/objectinspector.pp 2016-01-18 23:07:49.000000000 +0000 @@ -32,10 +32,11 @@ // FCL SysUtils, Types, Classes, TypInfo, FPCanvas, // LCL - InterfaceBase, Forms, Buttons, Graphics, GraphType, LCLProc, StdCtrls, - LCLType, LCLIntf, Controls, ComCtrls, ExtCtrls, LMessages, - LazConfigStorage, Menus, Dialogs, Themes, TreeFilterEdit, ObjInspStrConsts, - PropEdits, ListViewPropEdit, ImageListEditor, + {$IFDEF UseOICheckBoxThemed} CheckBoxThemed, {$ENDIF} + InterfaceBase, Forms, Buttons, Graphics, GraphType, StdCtrls, LCLType, + LCLIntf, Controls, ComCtrls, ExtCtrls, LMessages, LazConfigStorage, + LazLoggerBase, Menus, Dialogs, Themes, LCLProc, TreeFilterEdit, + ObjInspStrConsts, PropEdits, ListViewPropEdit, ImageListEditor, ComponentTreeView, ComponentEditors, IDEImagesIntf, IDEHelpIntf, OIFavoriteProperties, PropEditUtils; @@ -294,6 +295,7 @@ FActiveRowBmp: TCustomBitmap; FFirstClickTime: DWORD; FKeySearchText: string; + FHideClassNames: Boolean; // hint stuff FHintTimer: TTimer; @@ -303,7 +305,11 @@ ValueEdit: TEdit; ValueComboBox: TComboBox; + {$IFDEF UseOICheckBoxThemed} + ValueCheckBox: TCheckBoxThemed; + {$ELSE} ValueCheckBox: TCheckBox; + {$ENDIF} ValueButton: TSpeedButton; procedure HintTimer(Sender: TObject); @@ -502,6 +508,7 @@ property TopY: integer read FTopY write SetTopY default 0; property Favorites: TOIFavoriteProperties read FFavorites write SetFavorites; property Filter : TTypeKinds read FFilter write SetFilter; + property HideClassNames: Boolean read FHideClassNames write FHideClassNames; end; @@ -587,11 +594,14 @@ ViewRestrictedPropertiesPopupMenuItem: TMenuItem; CopyPopupmenuItem: TMenuItem; CutPopupmenuItem: TMenuItem; + PastePopupmenuItem: TMenuItem; DeletePopupmenuItem: TMenuItem; + ChangeClassPopupmenuItem: TMenuItem; + ChangeParentPopupmenuItem: TMenuItem; FindDeclarationPopupmenuItem: TMenuItem; OptionsSeparatorMenuItem: TMenuItem; OptionsSeparatorMenuItem2: TMenuItem; - PastePopupmenuItem: TMenuItem; + OptionsSeparatorMenuItem3: TMenuItem; RemoveFromFavoritesPopupMenuItem: TMenuItem; ShowComponentTreePopupMenuItem: TMenuItem; ShowHintsPopupMenuItem: TMenuItem; @@ -621,6 +631,7 @@ procedure ComponentTreeGetNodeImageIndex(APersistent: TPersistent; var AIndex: integer); procedure ComponentTreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ComponentTreeSelectionChanged(Sender: TObject); + procedure MainPopupMenuClose(Sender: TObject); procedure OnGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure OnGridKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure OnGridDblClick(Sender: TObject); @@ -634,6 +645,7 @@ procedure OnCopyPopupmenuItemClick(Sender: TObject); procedure OnPastePopupmenuItemClick(Sender: TObject); procedure OnDeletePopupmenuItemClick(Sender: TObject); + procedure OnChangeClassPopupmenuItemClick(Sender: TObject); procedure OnShowComponentTreePopupMenuItemClick(Sender: TObject); procedure OnShowHintPopupMenuItemClick(Sender: TObject); procedure OnShowInfoBoxPopupMenuItemClick(Sender: TObject); @@ -646,6 +658,7 @@ procedure DoUpdateRestricted; procedure DoViewRestricted; private + StateOfHintsOnMainPopupMenu:Boolean; FFavorites: TOIFavoriteProperties; FInfoBoxHeight: integer; FOnPropertyHint: TOIPropertyHint; @@ -680,6 +693,7 @@ FOnNodeGetImageIndex: TOnOINodeGetImageEvent; procedure CreateTopSplitter; procedure CreateBottomSplitter; + function GetChangeParentCandidates: TFPList; function GetGridControl(Page: TObjectInspectorPage): TOICustomPropertyGrid; procedure SetComponentEditor(const AValue: TBaseComponentEditor); procedure SetFavorites(const AValue: TOIFavoriteProperties); @@ -698,6 +712,7 @@ procedure ShowNextPage(Delta: integer); procedure RestrictedPaint( ABox: TPaintBox; const ARestrictions: TWidgetSetRestrictionsArray); + procedure DoChangeParentItemClick(Sender: TObject); procedure DoComponentEditorVerbMenuItemClick(Sender: TObject); procedure DoCollectionAddItem(Sender: TObject); procedure DoZOrderItemClick(Sender: TObject); @@ -953,13 +968,17 @@ OnMouseWheel:=@OnGridMouseWheel; end; - ValueCheckBox:=TCheckBox.Create(Self); + ValueCheckBox:={$IFDEF UseOICheckBoxThemed} TCheckBoxThemed.Create(Self); {$ELSE} TCheckBox.Create(Self); {$ENDIF} with ValueCheckBox do begin Name:='ValueCheckBox'; Visible:=false; Enabled:=false; - AutoSize:=true; // SetBounds does not work for CheckBox, AutoSize does. + {$IFDEF UseOICheckBoxThemed} + AutoSize := false; + {$ELSE} + AutoSize := true; // SetBounds does not work for CheckBox, AutoSize does. + {$ENDIF} Parent:=Self; Top := -30; OnMouseDown := @ValueControlMouseDown; @@ -1842,6 +1861,8 @@ end; if PropEditor is TClassPropertyEditor then (PropEditor as TClassPropertyEditor).SubPropsTypeFilter := FFilter; + if PropEditor is TClassPropertyEditor then + (PropEditor as TClassPropertyEditor).HideClassName:=FHideClassNames; NewRow := TOIPropertyGridRow.Create(Self, PropEditor, nil, WidgetSets); FRows.Add(NewRow); if FRows.Count>1 then begin @@ -1966,6 +1987,8 @@ begin if PropEditor is TClassPropertyEditor then (PropEditor as TClassPropertyEditor).SubPropsTypeFilter := FFilter; + if PropEditor is TClassPropertyEditor then + (PropEditor as TClassPropertyEditor).HideClassName:=FHideClassNames; NewRow:=TOIPropertyGridRow.Create(Self,PropEditor,FExpandingRow, []); NewIndex:=FExpandingRow.Index+1+FExpandingRow.ChildCount; NewRow.FIndex:=NewIndex; @@ -2073,8 +2096,13 @@ SetActiveControl(FCurrentEdit); if (FCurrentEdit is TCustomEdit) then TCustomEdit(FCurrentEdit).SelectAll + {$IFDEF UseOICheckBoxThemed} + else if (FCurrentEdit is TCheckBoxThemed) and WasValueClick then + TCheckBoxThemed(FCurrentEdit).Checked:=not TCheckBoxThemed(FCurrentEdit).Checked; + {$ELSE} else if (FCurrentEdit is TCheckBox) and WasValueClick then TCheckBox(FCurrentEdit).Checked:=not TCheckBox(FCurrentEdit).Checked; + {$ENDIF} end; end; @@ -2608,7 +2636,6 @@ and (r1.Right=r2.Right) and (r1.Bottom=r2.Bottom); end; -// AlignEditComponents begin if ItemIndex>=0 then begin @@ -2646,7 +2673,7 @@ {$ENDIF} Dec(EditCompRect.Top); end - else if FCurrentEdit is TCheckBox then + else if FCurrentEdit is {$IFDEF UseOICheckBoxThemed} TCheckBoxThemed {$ELSE} TCheckBox {$ENDIF} then begin // Align CheckBox to the middle vertically TopMargin := (EditCompRect.Bottom - EditCompRect.Top - ValueCheckBox.Height) div 2; Inc(EditCompRect.Top, TopMargin); @@ -2671,8 +2698,6 @@ NameBgColor: TColor; Details: TThemedElementDetails; Size: TSize; - -// PaintRow begin CurRow := Rows[ARow]; FullRect := RowRect(ARow); @@ -3651,6 +3676,7 @@ FGutterColor := DefGutterColor; FGutterEdgeColor := DefGutterEdgeColor; + FCheckboxForBoolean := True; FBoldNonDefaultValues := True; FDrawGridLines := True; FShowGutter := True; @@ -3707,7 +3733,7 @@ FShowHints:=ConfigStore.GetValue(Path+'ShowHints',FileVersion>=3); FAutoShow := ConfigStore.GetValue(Path+'AutoShow',True); - FCheckboxForBoolean := ConfigStore.GetValue(Path+'CheckboxForBoolean',False); + FCheckboxForBoolean := ConfigStore.GetValue(Path+'CheckboxForBoolean',True); FBoldNonDefaultValues := ConfigStore.GetValue(Path+'BoldNonDefaultValues',True); FDrawGridLines := ConfigStore.GetValue(Path+'DrawGridLines',True); FShowGutter := ConfigStore.GetValue(Path+'ShowGutter',True); @@ -3761,7 +3787,7 @@ ConfigStore.SetDeleteValue(Path+'ShowHints',FShowHints, True); ConfigStore.SetDeleteValue(Path+'AutoShow',FAutoShow, True); - ConfigStore.SetDeleteValue(Path+'CheckboxForBoolean',FCheckboxForBoolean, False); + ConfigStore.SetDeleteValue(Path+'CheckboxForBoolean',FCheckboxForBoolean, True); ConfigStore.SetDeleteValue(Path+'BoldNonDefaultValues',FBoldNonDefaultValues, True); ConfigStore.SetDeleteValue(Path+'DrawGridLines',FDrawGridLines, True); ConfigStore.SetDeleteValue(Path+'ShowGutter',FShowGutter, True); @@ -3967,6 +3993,15 @@ @OnDeletePopupmenuItemClick,false,true,true); OptionsSeparatorMenuItem2 := AddSeparatorMenuItem(nil, 'OptionsSeparatorMenuItem2', true); + // Change class of the component. ToDo: create a 'change_class' icon resource + AddPopupMenuItem(ChangeClassPopupMenuItem,nil,'ChangeClassPopupMenuItem', + oisChangeClass,'Change Class of component', '', + @OnChangeClassPopupmenuItemClick,false,true,true); + AddPopupMenuItem(ChangeParentPopupMenuItem,nil,'ChangeParentPopupMenuItem', + oisChangeParent,'Change Parent of component', '', + Nil,false,true,true); + OptionsSeparatorMenuItem3 := AddSeparatorMenuItem(nil, 'OptionsSeparatorMenuItem3', true); + AddPopupMenuItem(ShowComponentTreePopupMenuItem,nil ,'ShowComponentTreePopupMenuItem',oisShowComponentTree, '', '' ,@OnShowComponentTreePopupMenuItemClick,FShowComponentTree,true,true); @@ -4040,7 +4075,8 @@ Caption := ''; Height := InfoBoxHeight; Parent := Self; - BevelOuter := bvLowered; + BevelOuter := bvNone; + BevelInner := bvNone; Align := alBottom; PopupMenu := MainPopupMenu; Visible := FShowInfoBox; @@ -4293,6 +4329,8 @@ end; procedure TObjectInspectorDlg.SetSelection(const ASelection: TPersistentSelectionList); +var + OldInSelection: Boolean; begin if ASelection<>nil then begin if FSelection.IsEqual(ASelection) then @@ -4306,6 +4344,7 @@ end else begin if FSelection.Count=0 then exit; end; + OldInSelection := FInSelection; FInSelection := True; try // ToDo: Clear filter only if a selected node is hidden (Visible=False) @@ -4319,7 +4358,7 @@ if Assigned(FOnSelectPersistentsInOI) then FOnSelectPersistentsInOI(Self); finally - FInSelection := False; + FInSelection := OldInSelection; end; end; @@ -4335,7 +4374,7 @@ WidgetSetsRestrictedBox.Invalidate; ComponentRestrictedBox.Invalidate; end; - + for Page := Low(TObjectInspectorPage) to High(TObjectInspectorPage) do if GridControl[Page] <> nil then GridControl[Page].Selection := FSelection; @@ -4473,12 +4512,17 @@ begin if (PropertyEditorHook=nil) or (PropertyEditorHook.LookupRoot=nil) then exit; if FSelection.IsEqual(ComponentTree.Selection) then exit; - Fselection.Assign(ComponentTree.Selection); + FSelection.Assign(ComponentTree.Selection); RefreshSelection; if Assigned(FOnSelectPersistentsInOI) then FOnSelectPersistentsInOI(Self); end; +procedure TObjectInspectorDlg.MainPopupMenuClose(Sender: TObject); +begin + if StateOfHintsOnMainPopupMenu then OnShowHintPopupMenuItemClick(nil); +end; + procedure TObjectInspectorDlg.OnGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var @@ -4650,6 +4694,18 @@ end; end; +procedure TObjectInspectorDlg.OnChangeClassPopupmenuItemClick(Sender: TObject); +var + ADesigner: TIDesigner; +begin + if (Selection.Count = 1) then + begin + ADesigner := FindRootDesigner(Selection[0]); + if ADesigner is TComponentEditorDesigner then + TComponentEditorDesigner(ADesigner).ChangeClass; + end; +end; + procedure TObjectInspectorDlg.OnGridModified(Sender: TObject); begin DoModified(Self); @@ -5050,7 +5106,6 @@ Result := nil; end; -// --- Boolean settings --- procedure TObjectInspectorDlg.OnShowComponentTreePopupMenuItemClick(Sender: TObject); begin ShowComponentTree:=not ShowComponentTree; @@ -5081,6 +5136,56 @@ end; // --- +function TObjectInspectorDlg.GetChangeParentCandidates: TFPList; +var + i, j: Integer; + CurSelected: TPersistent; + Candidate: TWinControl; +begin + Result := TFPList.Create; + if not (FPropertyEditorHook.LookupRoot is TWinControl) then + exit; // only LCL controls are supported at the moment + + // check if any selected control can be moved + i := Selection.Count-1; + while i >= 0 do + begin + if (Selection[i] is TControl) + and (TControl(Selection[i]).Owner = FPropertyEditorHook.LookupRoot) + then + // this one can be moved + break; + dec(i); + end; + if i < 0 then Exit; + + // find possible new parents + for i := 0 to TWinControl(FPropertyEditorHook.LookupRoot).ComponentCount-1 do + begin + Candidate := TWinControl(TWinControl(FPropertyEditorHook.LookupRoot).Components[i]); + if not (Candidate is TWinControl) then continue; + j := Selection.Count-1; + while j >= 0 do + begin + CurSelected := Selection[j]; + if CurSelected is TControl then begin + if CurSelected = Candidate then break; + if (CurSelected is TWinControl) and + (TWinControl(CurSelected) = Candidate.Parent) then + break; + if not ControlAcceptsStreamableChildComponent(Candidate, + TComponentClass(CurSelected.ClassType), FPropertyEditorHook.LookupRoot) + then + break; + end; + dec(j); + end; + if j < 0 then + Result.Add(Candidate); + end; + Result.Add(FPropertyEditorHook.LookupRoot); +end; + procedure TObjectInspectorDlg.OnMainPopupMenuPopup(Sender: TObject); const PropertyEditorMIPrefix = 'PropertyEditorVerbMenuItem'; @@ -5197,15 +5302,44 @@ MainPopupMenu.Items.Insert(ZItem.MenuIndex + 1, Item); end; + function AddChangeParentMenuItems: Boolean; + var + Item: TMenuItem; + Candidates: TFPList; + i: Integer; + begin + Candidates := GetChangeParentCandidates; + try + Result := Candidates.Count>0; + ChangeParentPopupmenuItem.Clear; + for i := 0 to Candidates.Count-1 do + begin + Item := NewItem(TWinControl(Candidates[i]).Name, 0, False, True, + @DoChangeParentItemClick, 0, ''); + ChangeParentPopupmenuItem.Add(Item); + end; + finally + Candidates.Free; + end; + end; + var - b, AtLeastOneComponent, CanBeDeleted: Boolean; + b, AtLeastOneComp, CanChangeClass, HasParentCandidates: Boolean; CurRow: TOIPropertyGridRow; Persistent: TPersistent; + Page: TObjectInspectorPage; begin RemovePropertyEditorMenuItems; RemoveComponentEditorMenuItems; ShowHintsPopupMenuItem.Checked := PropertyGrid.ShowHint; + StateOfHintsOnMainPopupMenu:=PropertyGrid.ShowHint; + for Page := Low(TObjectInspectorPage) to High(TObjectInspectorPage) do + if GridControl[Page] <> nil then + GridControl[Page].ShowHint := False; Persistent := GetSelectedPersistent; + AtLeastOneComp := False; + CanChangeClass := False; + HasParentCandidates := False; // show component editors only for component treeview if MainPopupMenu.PopupComponent = ComponentTree then begin @@ -5220,26 +5354,24 @@ else if Persistent is TCollectionItem then AddCollectionEditorMenuItems(TCollectionItem(Persistent).Collection); end; - + AtLeastOneComp := (Selection.Count > 0) and (Selection[0] is TComponent); + CanChangeClass := (Selection.Count = 1) and (Selection[0] is TComponent) + and (Selection[0] <> FPropertyEditorHook.LookupRoot); // add Z-Order menu if (Selection.Count = 1) and (Selection[0] is TControl) then AddZOrderMenuItems; - AtLeastOneComponent:=(Selection.Count > 0) and (Selection[0] is TComponent); - CanBeDeleted:=AtLeastOneComponent; - CutPopupMenuItem.Visible := CanBeDeleted; - CopyPopupMenuItem.Visible := AtLeastOneComponent; - PastePopupMenuItem.Visible := AtLeastOneComponent; - DeletePopupMenuItem.Visible := CanBeDeleted; - OptionsSeparatorMenuItem2.Visible := AtLeastOneComponent; - end - else - begin - CutPopupMenuItem.Visible := False; - CopyPopupMenuItem.Visible := False; - PastePopupMenuItem.Visible := False; - DeletePopupMenuItem.Visible := False; - OptionsSeparatorMenuItem2.Visible := False; - end; + // add Change Parent menu + if AtLeastOneComp then + HasParentCandidates := AddChangeParentMenuItems; + end; + CutPopupMenuItem.Visible := AtLeastOneComp; + CopyPopupMenuItem.Visible := AtLeastOneComp; + PastePopupMenuItem.Visible := AtLeastOneComp; + DeletePopupMenuItem.Visible := AtLeastOneComp; + OptionsSeparatorMenuItem2.Visible := AtLeastOneComp; + ChangeClassPopupmenuItem.Visible := CanChangeClass; + ChangeParentPopupmenuItem.Visible := HasParentCandidates; + OptionsSeparatorMenuItem3.Visible := CanChangeClass or HasParentCandidates; // The editors can do menu actions, for example set defaults and constraints CurRow := GetActivePropertyRow; @@ -5293,6 +5425,48 @@ if Assigned(FOnViewRestricted) then FOnViewRestricted(Self); end; +procedure TObjectInspectorDlg.DoChangeParentItemClick(Sender: TObject); +var + i: Integer; + Control: TControl; + NewParent: TPersistent; + NewSelection: TPersistentSelectionList; +begin + if not (Sender is TMenuItem) or (Selection.Count < 1) then Exit; + if TMenuItem(Sender).Caption = TWinControl(FPropertyEditorHook.LookupRoot).Name then + NewParent := FPropertyEditorHook.LookupRoot + else + NewParent := TWinControl(FPropertyEditorHook.LookupRoot).FindComponent(TMenuItem(Sender).Caption); + + if not (NewParent is TWinControl) then Exit; + + for i := 0 to Selection.Count-1 do + begin + if not (Selection[i] is TControl) then Continue; + Control := TControl(Selection[i]); + if Control.Parent = nil then Continue; + Control.Parent := TWinControl(NewParent); + end; + + // Following code taken from DoZOrderItemClick(); + // Ensure the order of controls in the OI now reflects the new ZOrder + NewSelection := TPersistentSelectionList.Create; + try + NewSelection.ForceUpdate:=True; + NewSelection.Add(Control.Parent); + SetSelection(NewSelection); + + NewSelection.Clear; + NewSelection.ForceUpdate:=True; + NewSelection.Add(Control); + SetSelection(NewSelection); + finally + NewSelection.Free; + end; + + DoModified(Self); +end; + procedure TObjectInspectorDlg.DoComponentEditorVerbMenuItemClick(Sender: TObject); var Verb: integer; @@ -5460,7 +5634,10 @@ function TCustomPropertiesGrid.GetTIObject: TPersistent; begin - if PropertyEditorHook<>nil then Result:=PropertyEditorHook.LookupRoot; + if PropertyEditorHook<>nil then + Result:=PropertyEditorHook.LookupRoot + else + Result:=Nil; end; procedure TCustomPropertiesGrid.SetAutoFreeHook(const AValue: boolean); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/objinspstrconsts.pas lazarus-1.6+dfsg/components/ideintf/objinspstrconsts.pas --- lazarus-1.4.4+dfsg/components/ideintf/objinspstrconsts.pas 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/objinspstrconsts.pas 2015-05-12 21:30:53.000000000 +0000 @@ -59,6 +59,7 @@ oisOrderForwardOne = 'Forward One'; oisOrderBackOne = 'Back One'; oisSetToDefault = 'Set to default: %s'; + oisRevertToInherited = 'Revert to inherited'; oisSetToDefaultHint = 'Set property value to Default'; oisSetMaxConstraints = 'Set MaxHeight=%d, MaxWidth=%d'; oisSetMinConstraints = 'Set MinHeight=%d, MinWidth=%d'; @@ -433,6 +434,8 @@ oisUnableToChangeParentOfControlToNewParent = 'Unable to change parent of ' +'control "%s" to new parent "%s".%s%s'; oisAddCollectionItem = '&Add Item'; + oisChangeClass = 'Change Class ...'; + oisChangeParent = 'Change Parent'; lisUnableToFindParserForTool = 'Unable to find parser for tool "%s"'; // Dbgrid Columns editor diff -Nru lazarus-1.4.4+dfsg/components/ideintf/packageintf.pas lazarus-1.6+dfsg/components/ideintf/packageintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/packageintf.pas 2014-07-25 18:13:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/packageintf.pas 2015-11-18 11:18:21.000000000 +0000 @@ -347,8 +347,18 @@ property Items[Index: integer]: TPackageDescriptor read GetItems; default; end; + TPackageGraphInterface = class + protected + FChangeStamp: Int64; + protected + procedure IncChangeStamp; virtual; + public + property ChangeStamp: Int64 read FChangeStamp; + end; + var PackageDescriptors: TPackageDescriptors; // will be set by the IDE + PackageGraphInterface: TPackageGraphInterface; // must be set along with PackageSystem.PackageGraph procedure RegisterPackageDescriptor(PkgDesc: TPackageDescriptor); @@ -393,6 +403,15 @@ Result:=PackageDescriptors.FindByName(PkgDescNameStandard); end; +{ TPackageGraphInterface } + +procedure TPackageGraphInterface.IncChangeStamp; +begin + {$push}{$R-} // range check off + Inc(FChangeStamp); + {$pop} +end; + { TPackageDescriptor } procedure TPackageDescriptor.SetName(const AValue: string); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/projectintf.pas lazarus-1.6+dfsg/components/ideintf/projectintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/projectintf.pas 2015-01-04 14:35:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/projectintf.pas 2015-11-20 10:46:35.000000000 +0000 @@ -16,8 +16,9 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, Controls, Forms, AvgLvlTree, - NewItemIntf, ProjPackIntf, IDEOptionsIntf, CompOptsIntf, ObjInspStrConsts; + Classes, SysUtils, FileUtil, LazFileUtils, Controls, Forms, AvgLvlTree, + NewItemIntf, ProjPackIntf, CompOptsIntf, ObjInspStrConsts, LazFileCache, + LazMethodList; const FileDescGroupName = 'File'; @@ -349,6 +350,53 @@ Read fIncludeSystemVariables Write fIncludeSystemVariables; end; + { TLazProjectBuildMode } + + TLazProjectBuildMode = class(TComponent) + private + FChangeStamp: int64; + fSavedChangeStamp: int64; + fOnChanged: TMethodList; + function GetModified: boolean; + procedure SetIdentifier(AValue: string); + procedure SetInSession(AValue: boolean); + procedure SetModified(AValue: boolean); + protected + FIdentifier: string; + FInSession: boolean; + procedure OnItemChanged(Sender: TObject); + function GetLazCompilerOptions: TLazCompilerOptions; virtual; abstract; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property ChangeStamp: int64 read FChangeStamp; + procedure IncreaseChangeStamp; + procedure AddOnChangedHandler(const Handler: TNotifyEvent); + procedure RemoveOnChangedHandler(const Handler: TNotifyEvent); + function GetCaption: string; virtual; abstract; + function GetIndex: integer; virtual; abstract; + property Name; // See Identifier for the name of the buildmode + property InSession: boolean read FInSession write SetInSession; + property Identifier: string read FIdentifier write SetIdentifier;// arbitrary string + property Modified: boolean read GetModified write SetModified; + property LazCompilerOptions: TLazCompilerOptions read GetLazCompilerOptions; + end; + + { TProjectBuildModes } + + { TLazProjectBuildModes } + + TLazProjectBuildModes = class(TComponent) + protected + FChangeStamp: integer; + function GetLazBuildModes(Index: integer): TLazProjectBuildMode; virtual; abstract; + public + function Count: integer; virtual; abstract; + function IndexOf(anIdentifier: string): integer; + property ChangeStamp: integer read FChangeStamp; + property BuildModes[Index: integer]: TLazProjectBuildMode read GetLazBuildModes; + end; + { TLazProject - interface class to a Lazarus project } TProjectFileSearchFlag = ( @@ -387,16 +435,20 @@ procedure SetFPDocPaths(const AValue: string); procedure SetUseAppBundle(AValue: Boolean); protected + FChangeStamp: integer; FFlags: TProjectFlags; FResources: TObject; FRunParameters: TAbstractRunParamsOptions; + function GetActiveBuildModeID: string; virtual; abstract; function GetFileCount: integer; virtual; abstract; function GetFiles(Index: integer): TLazProjectFile; virtual; abstract; function GetMainFile: TLazProjectFile; virtual; abstract; function GetMainFileID: Integer; virtual; abstract; function GetModified: boolean; virtual; abstract; + function GetLazBuildModes: TLazProjectBuildModes; virtual; abstract; function GetProjectInfoFile: string; virtual; abstract; function GetUseManifest: boolean; virtual; abstract; + procedure SetActiveBuildModeID(AValue: string); virtual; abstract; procedure SetExecutableType(const AValue: TProjectExecutableType); virtual; procedure SetFlags(const AValue: TProjectFlags); virtual; procedure SetMainFileID(const AValue: Integer); virtual; abstract; @@ -411,6 +463,7 @@ constructor Create({%H-}ProjectDescription: TProjectDescriptor); virtual; reintroduce; destructor Destroy; override; procedure Clear; virtual; + procedure IncreaseChangeStamp; inline; function IsVirtual: boolean; virtual; abstract; function CreateProjectFile(const Filename: string): TLazProjectFile; virtual; abstract; procedure AddFile(ProjectFile: TLazProjectFile; @@ -431,9 +484,12 @@ function GetDefaultTitle: string; // extract name from lpi file name function GetTitleOrName: string; // GetTitle, if this is '' then GetDefaultTitle public - property MainFileID: Integer read GetMainFileID write SetMainFileID; + property ActiveBuildModeID: string read GetActiveBuildModeID + write SetActiveBuildModeID; + property ChangeStamp: integer read FChangeStamp; property Files[Index: integer]: TLazProjectFile read GetFiles; property FileCount: integer read GetFileCount; + property MainFileID: Integer read GetMainFileID write SetMainFileID; property MainFile: TLazProjectFile read GetMainFile; property Title: String read FTitle write SetTitle; property Flags: TProjectFlags read FFlags write SetFlags; @@ -441,6 +497,7 @@ write SetExecutableType;// read from MainFile, not saved to lpi property ProjectInfoFile: string read GetProjectInfoFile write SetProjectInfoFile; property ProjectSessionFile: string read FProjectSessionFile write SetProjectSessionFile; + property LazBuildModes: TLazProjectBuildModes read GetLazBuildModes; property SessionStorage: TProjectSessionStorage read FSessionStorage write SetSessionStorage; // project data (not units, session), units have their own Modified property Modified: boolean read GetModified write SetModified; @@ -664,6 +721,15 @@ Result:=cetProgram; end; +{ TLazProjectBuildModes } + +function TLazProjectBuildModes.IndexOf(anIdentifier: string): integer; +begin + Result:=Count-1; + while (Result>=0) and (CompareText(BuildModes[Result].Identifier,anIdentifier)<>0) + do dec(Result); +end; + { TProjectFileDescriptor } procedure TProjectFileDescriptor.SetResourceClass( @@ -929,6 +995,7 @@ Result:='initialization'+LE+' {$I '+ResourceFilename+'}'+LE+LE; end; rtRes: Result := '{$R *.lfm}'+LE+LE; + else Result:=''; end; end; @@ -994,12 +1061,92 @@ Result:=mrOk; end; -function TProjectDescriptor.CreateStartFiles(AProject: TLazProject - ): TModalResult; +function TProjectDescriptor.CreateStartFiles(AProject: TLazProject): TModalResult; begin Result:=mrOk; end; +{ TLazProjectBuildMode } + +function TLazProjectBuildMode.GetModified: boolean; +begin + Result:=fSavedChangeStamp<>FChangeStamp; +end; + +procedure TLazProjectBuildMode.SetIdentifier(AValue: string); +begin + if FIdentifier=AValue then exit; + FIdentifier:=AValue; + {$IFDEF VerboseIDEModified} + debugln(['TLazProjectBuildMode.SetIdentifier ',AValue]); + {$ENDIF} + IncreaseChangeStamp; +end; + +procedure TLazProjectBuildMode.SetInSession(AValue: boolean); +begin + if FInSession=AValue then exit; + FInSession:=AValue; + {$IFDEF VerboseIDEModified} + debugln(['TLazProjectBuildMode.SetInSession ',AValue]); + {$ENDIF} + IncreaseChangeStamp; +end; + +procedure TLazProjectBuildMode.OnItemChanged(Sender: TObject); +begin + {$IFDEF VerboseIDEModified} + debugln(['TLazProjectBuildMode.OnItemChanged ',DbgSName(Sender)]); + {$ENDIF} + IncreaseChangeStamp; +end; + +procedure TLazProjectBuildMode.SetModified(AValue: boolean); +begin + if AValue then + IncreaseChangeStamp + else begin + fSavedChangeStamp:=FChangeStamp; + LazCompilerOptions.Modified:=false; + end; +end; + +constructor TLazProjectBuildMode.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + fOnChanged:=TMethodList.Create; + FChangeStamp:=LUInvalidChangeStamp64; + fSavedChangeStamp:=FChangeStamp; +end; + +destructor TLazProjectBuildMode.Destroy; +begin + FreeAndNil(fOnChanged); + inherited Destroy; +end; + +procedure TLazProjectBuildMode.IncreaseChangeStamp; +begin + {$IFDEF VerboseIDEModified} + if not Modified then begin + debugln(['TLazProjectBuildMode.IncreaseChangeStamp ']); + end; + {$ENDIF} + LUIncreaseChangeStamp64(FChangeStamp); + if fOnChanged<>nil then fOnChanged.CallNotifyEvents(Self); +end; + +procedure TLazProjectBuildMode.AddOnChangedHandler(const Handler: TNotifyEvent); +begin + fOnChanged.Add(TMethod(Handler)); +end; + +procedure TLazProjectBuildMode.RemoveOnChangedHandler( + const Handler: TNotifyEvent); +begin + fOnChanged.Remove(TMethod(Handler)); +end; + { TLazProject } procedure TLazProject.SetFlags(const AValue: TProjectFlags); @@ -1143,6 +1290,11 @@ if Result='' then Result:=GetDefaultTitle; end; +procedure TLazProject.IncreaseChangeStamp; +begin + LUIncreaseChangeStamp(FChangeStamp); +end; + { TLazProjectFile } procedure TLazProjectFile.SetIsPartOfProject(const AValue: boolean); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/projectresourcesintf.pas lazarus-1.6+dfsg/components/ideintf/projectresourcesintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/projectresourcesintf.pas 2014-03-17 11:25:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/projectresourcesintf.pas 2016-01-03 12:28:36.000000000 +0000 @@ -18,10 +18,13 @@ { TAbstractProjectResource } TAbstractProjectResource = class - protected + private FModified: boolean; FOnModified: TNotifyEvent; procedure SetModified(const AValue: boolean); + protected + // This resource is used when reading project default options. + FIsDefaultOption: Boolean; public constructor Create; virtual; @@ -33,6 +36,7 @@ property Modified: boolean read FModified write SetModified; property OnModified: TNotifyEvent read FOnModified write FOnModified; + property IsDefaultOption: Boolean read FIsDefaultOption; end; TAbstractProjectResourceClass = class of TAbstractProjectResource; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/propedits.pp lazarus-1.6+dfsg/components/ideintf/propedits.pp --- lazarus-1.4.4+dfsg/components/ideintf/propedits.pp 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/propedits.pp 2016-01-18 23:07:49.000000000 +0000 @@ -11,11 +11,6 @@ A Property Editor is the interface between a row of the object inspector and a property in the RTTI. For more information see the big comment part below. - - ToDo: - -TIntegerSet missing -> taking my own - - -many more... see XXX } unit PropEdits; @@ -28,13 +23,14 @@ uses Classes, TypInfo, SysUtils, types, RtlConsts, Forms, Controls, LCLProc, + {$IFDEF UseOICheckBoxThemed} CheckBoxThemed, {$ENDIF} GraphType, FPCAdds, // for StrToQWord in older fpc versions StringHashList, ButtonPanel, Graphics, StdCtrls, Buttons, Menus, LCLType, ExtCtrls, ComCtrls, LCLIntf, Dialogs, EditBtn, PropertyStorage, Grids, ValEdit, FileUtil, FileCtrl, ObjInspStrConsts, PropEditUtils, Themes, // Forms with .lfm files FrmSelectProps, StringsPropEditDlg, KeyValPropEditDlg, CollectionPropEditForm, - FileFilterPropEditor; + FileFilterPropEditor, IDEWindowIntf; const MaxIdentLength: Byte = 63; @@ -251,13 +247,14 @@ paHasDefaultValue, paCustomDrawn ); - TPropertyAttributes=set of TPropertyAttribute; + TPropertyAttributes = set of TPropertyAttribute; - TPropertyEditor=class; + TPropertyEditor = class; - TInstProp=record - Instance:TPersistent; - PropInfo:PPropInfo; + TInstProp = record + Instance: TPersistent; + PropInfo: PPropInfo; + // ToDo: add list of parent instances, e.g. Label1.Font.Color: Font needs Label1 end; PInstProp = ^TInstProp; @@ -343,6 +340,7 @@ procedure GetValues({%H-}Proc: TGetStrProc); virtual; procedure Initialize; virtual; procedure Revert; virtual; + procedure RevertToInherited; virtual; procedure SetValue(const {%H-}NewValue: ansistring); virtual; procedure SetPropEntry(Index: Integer; AnInstance: TPersistent; APropInfo: PPropInfo); @@ -374,9 +372,10 @@ function SubPropertiesNeedsUpdate: boolean; virtual; function IsDefaultValue: boolean; virtual; function IsNotDefaultValue: boolean; virtual; + function IsRevertableToInherited: boolean; virtual; // These are used for the popup menu in OI function GetVerbCount: Integer; virtual; - function GetVerb({%H-}Index: Integer): string; virtual; + function GetVerb(Index: Integer): string; virtual; procedure PrepareItem({%H-}Index: Integer; const {%H-}AnItem: TMenuItem); virtual; procedure ExecuteVerb({%H-}Index: Integer); virtual; public @@ -572,6 +571,7 @@ TClassPropertyEditor = class(TPropertyEditor) private FSubPropsTypeFilter: TTypeKinds; + FHideClassName: Boolean; procedure SetSubPropsTypeFilter(const AValue: TTypeKinds); function EditorFilter(const AEditor: TPropertyEditor): Boolean; protected @@ -585,6 +585,7 @@ property SubPropsTypeFilter: TTypeKinds read FSubPropsTypeFilter write SetSubPropsTypeFilter default tkAny; + property HideClassName: Boolean read FHideClassName write FHideClassName; end; { TMethodPropertyEditor @@ -1181,10 +1182,12 @@ InstanceMethod:ShortString; TypeData:PTypeData) of object; // components TPropHookGetComponent = function(const ComponentPath: String):TComponent of object; - TPropHookGetComponentName = function(AComponent: TComponent):ShortString of object; + TPropHookGetComponentName = function(AComponent: TComponent):String of object; TPropHookGetComponentNames = procedure(TypeData: PTypeData; Proc: TGetStrProc) of object; TPropHookGetRootClassName = function:ShortString of object; + TPropHookGetAncestorInstProp = function(const InstProp: TInstProp; + out AncestorInstProp: TInstProp): boolean of object; TPropHookAddClicked = function(ADesigner: TIDesigner; MouseDownComponent: TComponent; Button: TMouseButton; Shift: TShiftState; X, Y: Integer; @@ -1197,6 +1200,7 @@ TPropHookPersistentAdded = procedure(APersistent: TPersistent; Select: boolean ) of object; TPropHookPersistentDeleting = procedure(APersistent: TPersistent) of object; + TPropHookPersistentDeleted = procedure of object; TPropHookDeletePersistent = procedure(var APersistent: TPersistent) of object; TPropHookGetSelection = procedure(const ASelection: TPersistentSelectionList ) of object; @@ -1237,12 +1241,14 @@ htGetComponentName, htGetComponentNames, htGetRootClassName, + htGetAncestorInstProp, htAddClicked, // user selected a component class and clicked on a form to add a component htComponentRenamed, // persistent selection htBeforeAddPersistent, htPersistentAdded, htPersistentDeleting, + htPersistentDeleted, htDeletePersistent, htGetSelectedPersistents, htSetSelectedPersistents, @@ -1303,9 +1309,11 @@ InstanceMethod: ShortString; TypeData: PTypeData); // components function GetComponent(const ComponentPath: string): TComponent; - function GetComponentName(AComponent: TComponent): ShortString; + function GetComponentName(AComponent: TComponent): String; procedure GetComponentNames(TypeData: PTypeData; const Proc: TGetStrProc); function GetRootClassName: ShortString; + function GetAncestorInstance(const InstProp: TInstProp; + out AncestorInstProp: TInstProp): boolean; function AddClicked(ADesigner: TIDesigner; MouseDownComponent: TComponent; Button: TMouseButton; Shift: TShiftState; X, Y: Integer; @@ -1317,6 +1325,7 @@ procedure ComponentRenamed(AComponent: TComponent); procedure PersistentAdded(APersistent: TPersistent; Select: boolean); procedure PersistentDeleting(APersistent: TPersistent); + procedure PersistentDeleted; procedure DeletePersistent(var APersistent: TPersistent); procedure GetSelection(const ASelection: TPersistentSelectionList); procedure SetSelection(const ASelection: TPersistentSelectionList); @@ -1399,6 +1408,10 @@ const OnGetRootClassName: TPropHookGetRootClassName); procedure RemoveHandlerGetRootClassName( const OnGetRootClassName: TPropHookGetRootClassName); + procedure AddHandlerGetAncestorInstProp( + const OnGetAncestorInstProp: TPropHookGetAncestorInstProp); + procedure RemoveHandlerGetAncestorInstProp( + const OnGetAncestorInstProp: TPropHookGetAncestorInstProp); // component create, delete, rename procedure AddHandlerComponentRenamed( const OnComponentRenamed: TPropHookComponentRenamed); @@ -1416,6 +1429,10 @@ const OnPersistentDeleting: TPropHookPersistentDeleting); procedure RemoveHandlerPersistentDeleting( const OnPersistentDeleting: TPropHookPersistentDeleting); + procedure AddHandlerPersistentDeleted( + const OnPersistentDeleted: TPropHookPersistentDeleted); + procedure RemoveHandlerPersistentDeleted( + const OnPersistentDeleted: TPropHookPersistentDeleted); procedure AddHandlerDeletePersistent( const OnDeletePersistent: TPropHookDeletePersistent); procedure RemoveHandlerDeletePersistent( @@ -1892,8 +1909,6 @@ type PPropertyClassRec=^TPropertyClassRec; TPropertyClassRec=record - // XXX - //Group:Integer; PropertyType:PTypeInfo; PropertyName:shortstring; PersistentClass:TClass; @@ -1902,8 +1917,6 @@ PPropertyEditorMapperRec=^TPropertyEditorMapperRec; TPropertyEditorMapperRec=record - // XXX - //Group:Integer; Mapper:TPropertyEditorMapperFunc; end; @@ -2072,12 +2085,9 @@ if PropertyClassList=nil then PropertyClassList:=TList.Create; New(P); - // XXX - //P^.Group:=CurrentGroup; P^.PropertyType:=PropertyType; P^.PersistentClass:=PersistentClass; P^.PropertyName:=PropertyName; - //if Assigned(PersistentClass) then P^.PropertyName:=PropertyName; P^.EditorClass:=EditorClass; PropertyClassList.Insert(0,P); end; @@ -2089,8 +2099,6 @@ if PropertyEditorMapperList=nil then PropertyEditorMapperList:=TList.Create; New(P); - // XXX - //P^.Group:=CurrentGroup; P^.Mapper:=Mapper; PropertyEditorMapperList.Insert(0,P); end; @@ -2174,7 +2182,7 @@ I, J, SelCount: Integer; ClassTyp: TClass; Candidates: TPropInfoList; - PropLists: TList; + PropLists: TFPList; PropEditor: TPropertyEditor; EdClass: TPropertyEditorClass; PropInfo: PPropInfo; @@ -2223,7 +2231,7 @@ PropEditor.Free; end; - PropLists := TList.Create; + PropLists := TFPList.Create; try PropLists.Count := SelCount; // Create a property info list for each component in the selection @@ -2425,7 +2433,7 @@ type PPropData = ^TPropData; var - AComponent: TPersistent; + aPersistent: TPersistent; CurPropInfo: PPropInfo; hp: PTypeData; pd: PPropData; @@ -2436,10 +2444,10 @@ ThePropType: PTypeInfo; begin Result:=''; - AComponent:=GetComponent(Index); + aPersistent:=GetComponent(Index); UpperName:=UpCase(GetName); ThePropType:=GetPropType; - ATypeInfo:=PTypeInfo(AComponent.ClassInfo); + ATypeInfo:=PTypeInfo(aPersistent.ClassInfo); while Assigned(ATypeInfo) do begin // skip the name hp:=GetTypeData(ATypeInfo); @@ -2474,11 +2482,10 @@ Result:=GetFloatValueAt(0); end; -Procedure SetIndexValues (P: PPRopInfo; Var Index, IValue : Longint); - +procedure SetIndexValues(P: PPRopInfo; var Index, IValue : Longint); begin Index:=((P^.PropProcs shr 6) and 1); - If Index<>0 then + if Index<>0 then IValue:=P^.Index else IValue:=0; @@ -2691,11 +2698,11 @@ function TPropertyEditor.GetDefaultValue: ansistring; begin if not (paHasDefaultValue in GetAttributes) then - raise EPropertyError.Create('No default property available'); + raise EPropertyError.Create('No property default available'); Result:=''; end; -function TPropertyEditor.GetVisualValue:ansistring; +function TPropertyEditor.GetVisualValue: ansistring; begin if AllEqual then Result:=GetValue @@ -2891,6 +2898,111 @@ with FPropList^[I] do PropertyHook.Revert(Instance,PropInfo); end; +procedure TPropertyEditor.RevertToInherited; +var + i: Integer; + AncestorInstProp: TInstProp; + Changed: Boolean; + InstProp: TInstProp; + NewOrdValue, OldOrdValue: Int64; + OldStr, NewStr: String; + OldWideStr, NewWideStr: WideString; + OldUString, NewUString: UnicodeString; + OldFloat, NewFloat: Extended; + OldObj, NewObj: TObject; + OldMethod, NewMethod: TMethod; + OldInterface, NewInterface: IInterface; +begin + if PropertyHook=nil then exit; + Changed:=false; + try + for i:=0 to FPropCount-1 do + begin + InstProp:=FPropList^[i]; + if not PropertyHook.GetAncestorInstance(InstProp,AncestorInstProp) then + continue; + + case InstProp.PropInfo^.PropType^.Kind of + tkInteger,tkChar,tkEnumeration,tkBool,tkInt64,tkQWord: + begin + OldOrdValue:=GetOrdProp(InstProp.Instance,InstProp.PropInfo); + NewOrdValue:=GetOrdProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if OldOrdValue=NewOrdValue then continue; + Changed:=true; + SetOrdProp(InstProp.Instance,InstProp.PropInfo,NewOrdValue); + end; + tkSet: + begin + OldStr:=GetSetProp(InstProp.Instance,InstProp.PropInfo,false); + NewStr:=GetSetProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo,false); + if OldStr=NewStr then continue; + Changed:=true; + SetSetProp(InstProp.Instance,InstProp.PropInfo,NewStr); + end; + tkString,tkLString,tkAString: + begin + OldStr:=GetStrProp(InstProp.Instance,InstProp.PropInfo); + NewStr:=GetStrProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if OldStr=NewStr then continue; + Changed:=true; + SetStrProp(InstProp.Instance,InstProp.PropInfo,NewStr); + end; + tkWString: + begin + OldWideStr:=GetWideStrProp(InstProp.Instance,InstProp.PropInfo); + NewWideStr:=GetWideStrProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if OldWideStr=NewWideStr then continue; + Changed:=true; + SetWideStrProp(InstProp.Instance,InstProp.PropInfo,NewWideStr); + end; + tkUString: + begin + OldUString:=GetUnicodeStrProp(InstProp.Instance,InstProp.PropInfo); + NewUString:=GetUnicodeStrProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if OldUString=NewUString then continue; + Changed:=true; + SetUnicodeStrProp(InstProp.Instance,InstProp.PropInfo,NewUString); + end; + tkFloat: + begin + OldFloat:=GetFloatProp(InstProp.Instance,InstProp.PropInfo); + NewFloat:=GetFloatProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if OldFloat=NewFloat then continue; + Changed:=true; + SetFloatProp(InstProp.Instance,InstProp.PropInfo,NewFloat); + end; + tkClass: + begin + OldObj:=GetObjectProp(InstProp.Instance,InstProp.PropInfo); + NewObj:=GetObjectProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if OldObj=NewObj then continue; + Changed:=true; + SetObjectProp(InstProp.Instance,InstProp.PropInfo,NewObj); + end; + tkMethod: + begin + OldMethod:=GetMethodProp(InstProp.Instance,InstProp.PropInfo); + NewMethod:=GetMethodProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if CompareMethods(OldMethod,NewMethod) then continue; + Changed:=true; + SetMethodProp(InstProp.Instance,InstProp.PropInfo,NewMethod); + end; + tkInterface: + begin + OldInterface:=GetInterfaceProp(InstProp.Instance,InstProp.PropInfo); + NewInterface:=GetInterfaceProp(AncestorInstProp.Instance,AncestorInstProp.PropInfo); + if OldInterface=NewInterface then continue; + Changed:=true; + SetInterfaceProp(InstProp.Instance,InstProp.PropInfo,NewInterface); + end; + end; + end; + finally + if Changed then + Modified; + end; +end; + procedure TPropertyEditor.SetValue(const NewValue:ansistring); begin end; @@ -3058,17 +3170,51 @@ and (GetDefaultValue<>GetVisualValue); end; +function TPropertyEditor.IsRevertableToInherited: boolean; +begin + Result:=(paRevertable in GetAttributes) and (GetComponent(0) is TComponent) + and (csAncestor in TComponent(GetComponent(0)).ComponentState) + and (PropertyHook<>nil) + and (FPropList^[0].PropInfo^.PropType^.Kind in + [tkInteger,tkChar,tkEnumeration,tkBool,tkInt64,tkQWord, + tkSet, + tkString,tkLString,tkAString, + tkWString, + tkUString, + tkFloat, + tkClass, + tkMethod, + tkInterface]); +end; + function TPropertyEditor.GetVerbCount: Integer; begin + Result:=0; if paHasDefaultValue in GetAttributes then - Result := 1 // Show a menu item for default value only if there is default value - else - Result := 0; + inc(Result); // show a menu item for default value only if there is default value + if IsRevertableToInherited then + inc(Result); // show a menu item for 'Revert to inherited' end; function TPropertyEditor.GetVerb(Index: Integer): string; +var + i: Integer; begin - Result := Format(oisSetToDefault, [GetDefaultValue]); + i:=-1; + if paHasDefaultValue in GetAttributes then begin + inc(i); + if i=Index then begin + Result := Format(oisSetToDefault, [GetDefaultValue]); + exit; + end; + end; + if IsRevertableToInherited then begin + inc(i); + if i=Index then begin + Result := oisRevertToInherited; + exit; + end; + end; end; procedure TPropertyEditor.PrepareItem(Index: Integer; const AnItem: TMenuItem); @@ -3077,8 +3223,24 @@ end; procedure TPropertyEditor.ExecuteVerb(Index: Integer); +var + i: Integer; begin - SetValue(GetDefaultValue); + i:=-1; + if paHasDefaultValue in GetAttributes then begin + inc(i); + if i=Index then begin + SetValue(GetDefaultValue); + exit; + end; + end; + if IsRevertableToInherited then begin + inc(i); + if i=Index then begin + RevertToInherited; + exit; + end; + end; end; { TOrdinalPropertyEditor } @@ -3307,12 +3469,32 @@ AState: TPropEditDrawState); var TxtRect: TRect; + {$IFDEF UseOICheckBoxThemed} + str: string; + stat: TCheckBoxState; + {$ENDIF} begin if FPropertyHook.GetCheckboxForBoolean then - TxtRect := DrawCheckbox(ACanvas, ARect, GetOrdValue<>0) + begin // Checkbox for Booleans. + {$IFDEF UseOICheckBoxThemed} + TxtRect.Top := -100; // Don't call inherited PropDrawValue + if GetOrdValue<>0 then + begin + stat := cbChecked; + str := '(True)'; + end else begin + stat := cbUnchecked; + str := '(False)'; + end; + TCheckBoxThemed.PaintSelf(ACanvas, str, ARect, stat, False, False, False, False, taRightJustify); + {$ELSE} + TxtRect := DrawCheckbox(ACanvas, ARect, GetOrdValue<>0); + {$ENDIF} + end else - TxtRect := ARect; - inherited PropDrawValue(ACanvas, TxtRect, AState); + TxtRect := ARect; // Classic Combobox for Booleans. + if TxtRect.Top <> -100 then + inherited PropDrawValue(ACanvas, TxtRect, AState); end; { TInt64PropertyEditor } @@ -3475,7 +3657,6 @@ FElement := AElement; end; -// XXX // The IntegerSet (a set of size of an integer) // don't know if this is always valid type @@ -3979,6 +4160,7 @@ if CollectionForm = nil then CollectionForm := TCollectionPropertyEditorForm.Create(Application); CollectionForm.SetCollection(ACollection, OwnerPersistent, PropName); + SetPopupModeParentForPropertyEditor(CollectionForm); CollectionForm.EnsureVisible; Result:=CollectionForm; end; @@ -4043,7 +4225,7 @@ function TClassPropertyEditor.GetValue: ansistring; begin - Result:='(' + GetPropType^.Name + ')'; + if not FHideClassName then Result:='(' + GetPropType^.Name + ')'; end; procedure TClassPropertyEditor.SetSubPropsTypeFilter(const AValue: TTypeKinds); @@ -4170,7 +4352,7 @@ PropName: shortstring): shortstring; // returns the default name for a new method var I: Integer; - Postfix: String; + Postfix: shortstring; begin Result:=''; if Root=nil then exit; @@ -4417,9 +4599,8 @@ Persistent: TPersistent; begin if NewValue=GetValue then exit; - if (NewValue = '') or (NewValue=oisNone) then - Persistent := nil - else begin + Persistent := nil; + if (NewValue <> '') and (NewValue<>oisNone) then begin if Assigned(PropertyHook) then begin Persistent := PropertyHook.GetComponent(NewValue); if not (Persistent is GetTypeData(GetPropType)^.ClassType) then begin @@ -4591,6 +4772,7 @@ else Intf := nil; end; + // ToDo: Intf is either Nil or uninitialized. JuMa SetIntfValue(Intf); end; @@ -5302,6 +5484,7 @@ case Index of 0: s := oisSetMaxConstraints; 1: s := oisSetMinConstraints; + else s := ''; end; c := GetComponent(0) as TControl; Result := Format(s, [c.Height, c.Width]); @@ -5527,8 +5710,7 @@ end; end; -function TPropertyEditorHook.GetComponent(const ComponentPath: string - ): TComponent; +function TPropertyEditorHook.GetComponent(const ComponentPath: string): TComponent; var i: Integer; begin @@ -5544,10 +5726,10 @@ Result := TComponent(LookupRoot).FindComponent(ComponentPath); end; -function TPropertyEditorHook.GetComponentName(AComponent: TComponent - ): ShortString; +function TPropertyEditorHook.GetComponentName(AComponent: TComponent): String; var i: Integer; + CompName, ParentName: String; Handler: TPropHookGetComponentName; begin Result := ''; @@ -5559,10 +5741,24 @@ Handler := TPropHookGetComponentName(FHandlers[htGetComponentName][i]); Result := Handler(AComponent); end; - if Result = '' then begin - Result := AComponent.Name; + if Result = '' then + begin + CompName := AComponent.Name; if (AComponent.Owner<>LookupRoot) and (AComponent.Owner<>nil) then - Result:=AComponent.Owner.Name+'.'+Result; + ParentName := AComponent.Owner.Name; + if CompName='' then + DebugLn('TPropertyEditorHook.GetComponentName: AComponent.Name is empty, '+ + 'AComponent.Owner.Name="' + ParentName+'".'); + if ParentName='' then + DebugLn('TPropertyEditorHook.GetComponentName: AComponent.Owner.Name is empty.'); + + Result := CompName; + if ParentName<>'' then + begin + Result := ParentName; + if CompName<>'' then + Result := Result+'.'+CompName; + end; end; end; @@ -5614,6 +5810,22 @@ Result := LookupRoot.ClassName; end; +function TPropertyEditorHook.GetAncestorInstance(const InstProp: TInstProp; out + AncestorInstProp: TInstProp): boolean; +var + i: Integer; + Handler: TPropHookGetAncestorInstProp; +begin + Result:=false; + if (InstProp.Instance=nil) or (InstProp.PropInfo=nil) then exit; + i := GetHandlerCount(htGetAncestorInstProp); + while GetNextHandlerIndex(htGetAncestorInstProp, i) and (not Result) do + begin + Handler := TPropHookGetAncestorInstProp(FHandlers[htGetAncestorInstProp][i]); + Result := Handler(InstProp,AncestorInstProp); + end; +end; + function TPropertyEditorHook.AddClicked(ADesigner: TIDesigner; MouseDownComponent: TComponent; Button: TMouseButton; Shift: TShiftState; X, Y: Integer; var AComponentClass: TComponentClass; var NewParent: TComponent @@ -5679,6 +5891,15 @@ TPropHookPersistentDeleting(FHandlers[htPersistentDeleting][i])(APersistent); end; +procedure TPropertyEditorHook.PersistentDeleted; +var + i: Integer; +begin + i:=GetHandlerCount(htPersistentDeleted); + while GetNextHandlerIndex(htPersistentDeleted,i) do + TPropHookPersistentDeleted(FHandlers[htPersistentDeleted][i])(); +end; + procedure TPropertyEditorHook.DeletePersistent(var APersistent: TPersistent); // Call this to actually free APersistent // One of the hooks will free it. @@ -6116,6 +6337,18 @@ RemoveHandler(htGetRootClassName,TMethod(OnGetRootClassName)); end; +procedure TPropertyEditorHook.AddHandlerGetAncestorInstProp( + const OnGetAncestorInstProp: TPropHookGetAncestorInstProp); +begin + AddHandler(htGetAncestorInstProp,TMethod(OnGetAncestorInstProp)); +end; + +procedure TPropertyEditorHook.RemoveHandlerGetAncestorInstProp( + const OnGetAncestorInstProp: TPropHookGetAncestorInstProp); +begin + RemoveHandler(htGetAncestorInstProp,TMethod(OnGetAncestorInstProp)); +end; + procedure TPropertyEditorHook.AddHandlerBeforeAddPersistent( const OnBeforeAddPersistent: TPropHookBeforeAddPersistent); begin @@ -6164,6 +6397,18 @@ RemoveHandler(htPersistentDeleting,TMethod(OnPersistentDeleting)); end; +procedure TPropertyEditorHook.AddHandlerPersistentDeleted( + const OnPersistentDeleted: TPropHookPersistentDeleted); +begin + AddHandler(htPersistentDeleted,TMethod(OnPersistentDeleted)); +end; + +procedure TPropertyEditorHook.RemoveHandlerPersistentDeleted( + const OnPersistentDeleted: TPropHookPersistentDeleted); +begin + RemoveHandler(htPersistentDeleted,TMethod(OnPersistentDeleted)); +end; + procedure TPropertyEditorHook.AddHandlerDeletePersistent( const OnDeletePersistent: TPropHookDeletePersistent); begin @@ -6652,14 +6897,14 @@ procedure TCustomShortCutGrabBox.OnGrabButtonClick(Sender: TObject); begin FGrabForm:=TForm.Create(Self); - FGrabForm.BorderStyle:=bsToolWindow; + FGrabForm.BorderStyle:=bsDialog; FGrabForm.KeyPreview:=true; FGrabForm.Position:=poScreenCenter; FGrabForm.OnKeyDown:=@OnGrabFormKeyDown; FGrabForm.Caption:=oisPressAKey; with TLabel.Create(Self) do begin Caption:=oisPressAKey; - BorderSpacing.Around:=25; + BorderSpacing.Around:=50; Parent:=FGrabForm; end; FGrabForm.Width:=200; @@ -6919,10 +7164,11 @@ procedure InitPropEdits; begin - PropertyClassList:=TList.Create; - PropertyEditorMapperList:=TList.Create; - // register the standard property editors + // Don't create PropertyClassList and PropertyEditorMapperList lists here. + // RegisterPropertyEditor and RegisterPropertyEditorMapper create them, + // and they are called from many initialization sections in unpredictable order. + // register the standard property editors RegisterPropertyEditor(TypeInfo(AnsiString), TComponent, 'Name', TComponentNamePropertyEditor); RegisterPropertyEditor(TypeInfo(TTranslateString), TCustomLabel, 'Caption', TStringMultilinePropertyEditor); RegisterPropertyEditor(TypeInfo(TTranslateString), TCustomStaticText, 'Caption', TStringMultilinePropertyEditor); @@ -6935,10 +7181,8 @@ RegisterPropertyEditor(TypeInfo(AnsiString), nil, 'SessionProperties', TSessionPropertiesPropertyEditor); RegisterPropertyEditor(TypeInfo(TModalResult), nil, 'ModalResult', TModalResultPropertyEditor); RegisterPropertyEditor(TypeInfo(TShortCut), nil, '', TShortCutPropertyEditor); - //RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TDate'), - // nil,'',TDatePropertyEditor); - //RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TTime'), - // nil,'',TTimePropertyEditor); + //RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TDate'), nil,'',TDatePropertyEditor); + //RegisterPropertyEditor(DummyClassForPropTypes.PTypeInfos('TTime'), nil,'',TTimePropertyEditor); RegisterPropertyEditor(TypeInfo(TDateTime), nil, '', TDateTimePropertyEditor); RegisterPropertyEditor(TypeInfo(TCursor), nil, '', TCursorPropertyEditor); RegisterPropertyEditor(TypeInfo(TComponent), nil, '', TComponentPropertyEditor); @@ -6970,23 +7214,26 @@ end; procedure FinalPropEdits; -var i: integer; +var + i: integer; pm: PPropertyEditorMapperRec; pc: PPropertyClassRec; begin - for i:=0 to PropertyEditorMapperList.Count-1 do begin - pm:=PPropertyEditorMapperRec(PropertyEditorMapperList.Items[i]); - Dispose(pm); - end; - PropertyEditorMapperList.Free; - PropertyEditorMapperList:=nil; - - for i:=0 to PropertyClassList.Count-1 do begin - pc:=PPropertyClassRec(PropertyClassList[i]); - Dispose(pc); + if PropertyEditorMapperList<>nil then begin + for i:=0 to PropertyEditorMapperList.Count-1 do begin + pm:=PPropertyEditorMapperRec(PropertyEditorMapperList.Items[i]); + Dispose(pm); + end; + FreeAndNil(PropertyEditorMapperList); + end; + + if PropertyClassList<>nil then begin + for i:=0 to PropertyClassList.Count-1 do begin + pc:=PPropertyClassRec(PropertyClassList[i]); + Dispose(pc); + end; + FreeAndNil(PropertyClassList); end; - PropertyClassList.Free; - PropertyClassList:=nil; FreeAndNil(ListPropertyEditors); FreeAndNil(VirtualKeyStrings); diff -Nru lazarus-1.4.4+dfsg/components/ideintf/srceditorintf.pas lazarus-1.6+dfsg/components/ideintf/srceditorintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/srceditorintf.pas 2014-07-15 17:28:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/srceditorintf.pas 2015-11-28 10:10:11.000000000 +0000 @@ -85,6 +85,8 @@ function GetLines: TStrings; virtual; abstract; function GetLineText: string; virtual; abstract; function GetModified: Boolean; virtual; abstract; + function GetPageCaption: string; virtual; abstract; + function GetPageName: string; virtual; abstract; function GetReadOnly: Boolean; virtual; abstract; function GetSelection: string; virtual; abstract; function GetSelEnd: Integer; virtual; abstract; @@ -115,7 +117,7 @@ procedure ReplaceText(const StartPos, EndPos: TPoint; const NewText: string); procedure AskReplace(Sender: TObject; const ASearch, AReplace: string; Line, Column: integer; - var Action: TSrcEditReplaceAction); virtual; abstract; + out Action: TSrcEditReplaceAction); virtual; abstract; procedure CopyToClipboard; virtual; abstract; procedure CutToClipboard; virtual; abstract; @@ -152,6 +154,13 @@ function GetProjectFile: TLazProjectFile; virtual; abstract; procedure UpdateProjectFile; virtual; abstract; function GetDesigner(LoadForm: boolean): TIDesigner; virtual; abstract; + + // editor commands + procedure DoEditorExecuteCommand(EditorCommand: word); virtual; abstract; + + // move/copy to another SourceEditorWindow + procedure MoveToWindow(AWindowIndex: Integer); virtual; abstract; + procedure CopyToWindow(AWindowIndex: Integer); virtual; abstract; public property BlockBegin: TPoint read GetBlockBegin write SetBlockBegin; property BlockEnd: TPoint read GetBlockEnd write SetBlockEnd; @@ -162,6 +171,8 @@ property FileName: string read GetFileName; property Lines: TStrings read GetLines write SetLines;// the whole file property CurrentLineText: string read GetLineText write SetLineText;// source of current line + property PageCaption: string read GetPageCaption;// the beatified unit name with modifiers ('*', '#') as it is shown in tab caption + property PageName: string read GetPageName;// the beatified unit name property ReadOnly: Boolean read GetReadOnly write SetReadOnly; property Selection: string read GetSelection write SetSelection; property SelEnd: Integer read GetSelEnd write SetSelEnd; @@ -205,12 +216,21 @@ function GetCompletionPlugins(Index: integer): TSourceEditorCompletionPlugin; virtual; abstract; function GetItems(Index: integer): TSourceEditorInterface; virtual; abstract; procedure SetActiveEditor(const AValue: TSourceEditorInterface); virtual; abstract; + function GetWindowID: Integer; virtual; abstract; public + procedure IncUpdateLock; virtual; abstract; + procedure DecUpdateLock; virtual; abstract; + function IndexOfEditorInShareWith(AnOtherEditor: TSourceEditorInterface): Integer; virtual; abstract; function SourceEditorIntfWithFilename(const Filename: string): TSourceEditorInterface; virtual; abstract; property ActiveEditor: TSourceEditorInterface read GetActiveEditor write SetActiveEditor; function Count: integer; virtual; abstract; property Items[Index: integer]: TSourceEditorInterface read GetItems; default; property ActiveCompletionPlugin: TSourceEditorCompletionPlugin read GetActiveCompletionPlugin; + // The number in the Form.Caption minus 1 (0-based), if multiple Win are open + property WindowID: Integer read GetWindowID; + // Editor Page Caption update + procedure AddUpdateEditorPageCaptionHandler(AEvent: TNotifyEvent; const AsLast: Boolean = True); virtual; abstract; + procedure RemoveUpdateEditorPageCaptionHandler(AEvent: TNotifyEvent); virtual; abstract; end; TsemChangeReason = ( @@ -218,6 +238,8 @@ semWindowDestroy, // Called after removal of a Window semWindowActivate, // Window is now ActiveSourceWindow (does not vave to be focused) semWindowFocused, // The window became the active win of the application + semWindowShow, // Called after a Window is shown + semWindowHide, // Called after a Window is hidden semEditorCreate, // Called after a new editor was created and added to list semEditorDestroy, // Called when an Editor is destroyed / after it is removed fron the list of editors semEditorActivate, // Editor is ActiveEditor @@ -257,11 +279,14 @@ virtual; abstract; function GetMarklingProducers(Index: integer): TSourceMarklingProducer; virtual; abstract; + function GetShowTabs: Boolean; virtual; abstract; + procedure SetShowTabs(const AShowTabs: Boolean); virtual; abstract; public // List of SourceEditorWindows function SourceWindowWithEditor(const AEditor: TSourceEditorInterface): TSourceEditorWindowInterface; virtual; abstract; function IndexOfSourceWindowWithID(const AnID: Integer): Integer; virtual; abstract; + procedure ShowActiveWindowOnTop(Focus: Boolean = False); virtual; abstract; function SourceWindowCount: integer; virtual; abstract; property SourceWindows[Index: integer]: TSourceEditorWindowInterface read GetSourceWindows; @@ -285,7 +310,7 @@ // Messages procedure ClearErrorLines; virtual; abstract; // General source functions - function ReIndent(const Src: string; OldIndent: integer = 0; OldTabWidth: integer = 4): string; virtual; abstract; + function Beautify(const Src: string): string; virtual; abstract; protected // Completion Plugins function GetActiveCompletionPlugin: TSourceEditorCompletionPlugin; virtual; abstract; @@ -314,6 +339,7 @@ procedure UnregisterMarklingProducer(aProducer: TSourceMarklingProducer); virtual; abstract; procedure InvalidateMarklingsOfAllFiles(aProducer: TSourceMarklingProducer); virtual; abstract; procedure InvalidateMarklings(aProducer: TSourceMarklingProducer; aFilename: string); virtual; abstract; + property ShowTabs: Boolean read GetShowTabs write SetShowTabs; end; diff -Nru lazarus-1.4.4+dfsg/components/ideintf/stringspropeditdlg.pas lazarus-1.6+dfsg/components/ideintf/stringspropeditdlg.pas --- lazarus-1.4.4+dfsg/components/ideintf/stringspropeditdlg.pas 2014-03-17 11:25:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/stringspropeditdlg.pas 2015-02-06 18:25:31.000000000 +0000 @@ -16,8 +16,8 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Buttons, Dialogs, StdCtrls, - TextTools, ObjInspStrConsts, ExtCtrls, ButtonPanel; + Classes, SysUtils, Forms, Controls, Buttons, Dialogs, StdCtrls, + TextTools, ObjInspStrConsts, ExtCtrls, ButtonPanel, LazUTF8; type diff -Nru lazarus-1.4.4+dfsg/components/ideintf/toolbarintf.pas lazarus-1.6+dfsg/components/ideintf/toolbarintf.pas --- lazarus-1.4.4+dfsg/components/ideintf/toolbarintf.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/toolbarintf.pas 2015-11-24 20:27:07.000000000 +0000 @@ -0,0 +1,515 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Ondrej Pokorny + + Abstract: + Interface to the IDE toolbars. +} +unit ToolBarIntf; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Controls, ComCtrls, IDECommands, MenuIntf; + +type + TIDEToolButton = class; + TIDEToolButtonClass = class of TIDEToolButton; + TIDEToolButtons = class; + + TIDEButtonCommand = class(TIDESpecialCommand) + private + FToolButtonClass: TIDEToolButtonClass; + FToolButtons: TIDEToolButtons; + protected + procedure SetName(const aName: string); override; + procedure SetEnabled(const aEnabled: Boolean); override; + procedure SetChecked(const aChecked: Boolean); override; + procedure SetCaption(aCaption: string); override; + procedure SetHint(const aHint: string); override; + procedure SetImageIndex(const aImageIndex: Integer); override; + procedure SetResourceName(const aResourceName: string); override; + procedure ShortCutsUpdated(const aShortCut, aShortCutKey2: TShortCut); override; + public + procedure ToolButtonAdded(const aBtn: TIDEToolButton); + public + constructor Create(const TheName: string); override; + destructor Destroy; override; + public + property ToolButtonClass: TIDEToolButtonClass read FToolButtonClass write FToolButtonClass; + property ToolButtons: TIDEToolButtons read FToolButtons; + end; + + { TIDEToolButton } + + TIDEToolButton = class(TToolButton) + private + FItem: TIDEButtonCommand; + protected + procedure DoOnShowHint(HintInfo: PHintInfo); override; + public + procedure DoOnAdded; virtual; + + procedure Click; override; + property Item: TIDEButtonCommand read FItem write FItem; + end; + + TIDEToolButtonCategory = class + private + FButtons: TFPList; + FDescription: string; + FName: string; + function GetButtons(Index: Integer): TIDEButtonCommand; + public + constructor Create; + destructor Destroy; override; + public + property Description: string read FDescription write FDescription; + property Name: string read FName write FName; + function ButtonCount: Integer; + property Buttons[Index: Integer]: TIDEButtonCommand read GetButtons; default; + end; + + TIDEToolButtonCategories = class + private + FButtonNames: TStringList; + FCategories: TStringList; + function GetItems(Index: Integer): TIDEToolButtonCategory; + public + constructor Create; + destructor Destroy; override; + public + function Count: Integer; + function AddButton(const aCategory: TIDEToolButtonCategory; const aName: string; + const aCommand: TIDECommand): TIDEButtonCommand; overload; + function AddButton(const aCommand: TIDECommand): TIDEButtonCommand; overload; + function FindCategory(const aName: string): TIDEToolButtonCategory; + function FindCreateCategory(const aName, aDescription: string): TIDEToolButtonCategory; + function FindItemByName(const aName: string): TIDEButtonCommand; + function FindItemByMenuPathOrName(var aName: string): TIDEButtonCommand; + function FindItemByCommand(const aCommand: TIDECommand): TIDEButtonCommand; + function FindItemByCommand(const aCommand: Word): TIDEButtonCommand; + property Items[Index: Integer]: TIDEToolButtonCategory read GetItems; default; + end; + + TIDEToolButtonsEnumerator = class + private + FList: TIDEToolButtons; + FPosition: Integer; + public + constructor Create(AButtons: TIDEToolButtons); + function GetCurrent: TIDEToolButton; + function MoveNext: Boolean; + property Current: TIDEToolButton read GetCurrent; + end; + + TIDEToolButtons = class(TComponent) + private + FList: TFPList; + function GetCount: Integer; + function GetItems(Index: Integer): TIDEToolButton; + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + public + function GetEnumerator: TIDEToolButtonsEnumerator; + procedure Add(const aBtn: TIDEToolButton); + + property Count: Integer read GetCount; + property Items[Index: Integer]: TIDEToolButton read GetItems; default; + end; + + +var + IDEToolButtonCategories: TIDEToolButtonCategories = nil;// created by the IDE + + +function RegisterIDEButtonCategory(const aName, aDescription: string): TIDEToolButtonCategory; +function RegisterIDEButtonCommand(const aCategory: TIDEToolButtonCategory; const aName: string; + const aCommand: TIDECommand): TIDEButtonCommand; +function RegisterIDEButtonCommand(const aCommand: TIDECommand): TIDEButtonCommand; + +implementation + +function RegisterIDEButtonCategory(const aName, aDescription: string): TIDEToolButtonCategory; +begin + Result := IDEToolButtonCategories.FindCreateCategory(aName, aDescription); +end; + +function RegisterIDEButtonCommand(const aCategory: TIDEToolButtonCategory; + const aName: string; const aCommand: TIDECommand): TIDEButtonCommand; +begin + Result := IDEToolButtonCategories.AddButton(aCategory, aName, aCommand); +end; + +function RegisterIDEButtonCommand(const aCommand: TIDECommand): TIDEButtonCommand; +begin + Result := IDEToolButtonCategories.AddButton(aCommand); +end; + +{ TIDEToolButtonsEnumerator } + +constructor TIDEToolButtonsEnumerator.Create(AButtons: TIDEToolButtons); +begin + inherited Create; + FList := AButtons; + FPosition := -1; +end; + +function TIDEToolButtonsEnumerator.GetCurrent: TIDEToolButton; +begin + Result := FList[FPosition]; +end; + +function TIDEToolButtonsEnumerator.MoveNext: Boolean; +begin + Inc(FPosition); + Result := FPosition < FList.Count; +end; + +{ TIDEToolButtons } + +procedure TIDEToolButtons.Add(const aBtn: TIDEToolButton); +begin + FList.Add(aBtn); + aBtn.FreeNotification(Self); +end; + +constructor TIDEToolButtons.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + FList := TFPList.Create; +end; + +destructor TIDEToolButtons.Destroy; +var + I: Integer; +begin + for I := 0 to Count-1 do + Items[I].RemoveFreeNotification(Self); + FList.Free; + inherited Destroy; +end; + +function TIDEToolButtons.GetCount: Integer; +begin + Result := FList.Count; +end; + +function TIDEToolButtons.GetEnumerator: TIDEToolButtonsEnumerator; +begin + Result := TIDEToolButtonsEnumerator.Create(Self); +end; + +function TIDEToolButtons.GetItems(Index: Integer): TIDEToolButton; +begin + Result := TIDEToolButton(FList[Index]); +end; + +procedure TIDEToolButtons.Notification(AComponent: TComponent; Operation: TOperation); +var + xIndex: Integer; +begin + inherited Notification(AComponent, Operation); + if (Operation = opRemove) then + begin + xIndex := FList.IndexOf(AComponent); + if xIndex >= 0 then + FList.Delete(xIndex); + end; +end; + +{ TIDEButtonCommand } + +constructor TIDEButtonCommand.Create(const TheName: string); +begin + inherited Create(TheName); + FToolButtonClass := TIDEToolButton; + FToolButtons := TIDEToolButtons.Create(nil); +end; + +destructor TIDEButtonCommand.Destroy; +begin + FToolButtons.Free; + inherited Destroy; +end; + +procedure TIDEButtonCommand.SetEnabled(const aEnabled: Boolean); +var + xBtn: TIDEToolButton; +begin + inherited SetEnabled(aEnabled); + for xBtn in FToolButtons do + xBtn.Enabled:=Enabled; +end; + +procedure TIDEButtonCommand.SetHint(const aHint: string); +var + xBtn: TIDEToolButton; +begin + inherited SetHint(aHint); + for xBtn in FToolButtons do + xBtn.Hint:=GetHintOrCaptionWithShortCut; +end; + +procedure TIDEButtonCommand.SetImageIndex(const aImageIndex: Integer); +var + xBtn: TIDEToolButton; +begin + inherited SetImageIndex(aImageIndex); + for xBtn in FToolButtons do + xBtn.ImageIndex:=ImageIndex; +end; + +procedure TIDEButtonCommand.SetName(const aName: string); +var + i: Integer; +begin + if Name=aName then Exit; + i:=IDEToolButtonCategories.FButtonNames.IndexOf(Name); + inherited SetName(aName); + if (i>=0) and (IDEToolButtonCategories.FButtonNames.Objects[i] = Self) then + begin + IDEToolButtonCategories.FButtonNames.Delete(i); + IDEToolButtonCategories.FButtonNames.AddObject(aName, Self); + end; +end; + +procedure TIDEButtonCommand.SetCaption(aCaption: string); +var + xBtn: TIDEToolButton; +begin + inherited SetCaption(aCaption); + for xBtn in FToolButtons do + xBtn.Hint:=GetHintOrCaptionWithShortCut; +end; + +procedure TIDEButtonCommand.SetChecked(const aChecked: Boolean); +var + xBtn: TIDEToolButton; +begin + inherited SetChecked(aChecked); + for xBtn in FToolButtons do + xBtn.Down:=Checked; +end; + +procedure TIDEButtonCommand.SetResourceName(const aResourceName: string); +var + xBtn: TIDEToolButton; +begin + inherited SetResourceName(aResourceName); + for xBtn in FToolButtons do + xBtn.ImageIndex:=ImageIndex; +end; + +procedure TIDEButtonCommand.ShortCutsUpdated(const aShortCut, aShortCutKey2: TShortCut); +var + xBtn: TIDEToolButton; +begin + inherited ShortCutsUpdated(aShortCut, aShortCutKey2); + for xBtn in FToolButtons do + xBtn.Hint:=GetHintOrCaptionWithShortCut; +end; + +procedure TIDEButtonCommand.ToolButtonAdded(const aBtn: TIDEToolButton); +begin + FToolButtons.Add(aBtn); + aBtn.DoOnAdded; +end; + +{ TIDEToolButtonCategory } + +function TIDEToolButtonCategory.ButtonCount: Integer; +begin + Result := FButtons.Count; +end; + +constructor TIDEToolButtonCategory.Create; +begin + FButtons := TFPList.Create; +end; + +destructor TIDEToolButtonCategory.Destroy; +var + i: Integer; +begin + for i := 0 to ButtonCount-1 do + Buttons[i].Free; + FButtons.Free; + inherited Destroy; +end; + +function TIDEToolButtonCategory.GetButtons(Index: Integer): TIDEButtonCommand; +begin + Result := TIDEButtonCommand(FButtons[Index]); +end; + +{ TIDEToolButtonCategories } + +function TIDEToolButtonCategories.AddButton(const aCommand: TIDECommand): TIDEButtonCommand; +var + xCategory: TIDEToolButtonCategory; +begin + Assert(aCommand<>nil, 'TIDEToolButtonCategories.AddButton: aCommand=nil'); + xCategory := RegisterIDEButtonCategory(aCommand.Category.Name, aCommand.Category.Description); + Result := RegisterIDEButtonCommand(xCategory, aCommand.Name, aCommand); +end; + +function TIDEToolButtonCategories.AddButton( + const aCategory: TIDEToolButtonCategory; const aName: string; + const aCommand: TIDECommand): TIDEButtonCommand; +begin + Result := FindItemByName(aName); + if Result=nil then + begin + Result := TIDEButtonCommand.Create(aName); + FButtonNames.AddObject(aName, Result); + aCategory.FButtons.Add(Result); + Result.Command:=aCommand; + end; +end; + +function TIDEToolButtonCategories.Count: Integer; +begin + Result := FCategories.Count; +end; + +constructor TIDEToolButtonCategories.Create; +begin + FButtonNames := TStringList.Create; + FButtonNames.Sorted := True; + FButtonNames.Duplicates := dupIgnore; + FCategories := TStringList.Create; + FCategories.Sorted := True; + FCategories.Duplicates := dupIgnore; + FCategories.OwnsObjects := True; +end; + +destructor TIDEToolButtonCategories.Destroy; +begin + FButtonNames.Free; + FCategories.Free; + inherited Destroy; +end; + +function TIDEToolButtonCategories.FindCategory(const aName: string + ): TIDEToolButtonCategory; +var + i: Integer; +begin + i := FCategories.IndexOf(aName); + if (i>=0) and (FCategories.Objects[i]<>nil) then + Result := FCategories.Objects[i] as TIDEToolButtonCategory + else + Result := nil; +end; + +function TIDEToolButtonCategories.FindItemByMenuPathOrName(var aName: string + ): TIDEButtonCommand; +var + xMI: TIDEMenuItem; +begin + Result := FindItemByName(aName); + if Result<>nil then Exit; + + //find by path from aName (backwards compatibility) + xMI := IDEMenuRoots.FindByPath(aName, False); + if Assigned(xMI) and Assigned(xMI.Command) then + begin + Result := FindItemByCommand(xMI.Command); + if Assigned(Result) then + aName := xMI.Command.Name; + end; +end; + +function TIDEToolButtonCategories.FindCreateCategory(const aName, + aDescription: string): TIDEToolButtonCategory; +var + i: Integer; +begin + i := FCategories.IndexOf(aName); + if (i>=0) and (FCategories.Objects[i]<>nil) then + Result := FCategories.Objects[i] as TIDEToolButtonCategory + else + begin + Result := TIDEToolButtonCategory.Create; + Result.Name := aName; + Result.Description := aDescription; + FCategories.AddObject(aName, Result); + end; +end; + +function TIDEToolButtonCategories.FindItemByCommand(const aCommand: TIDECommand + ): TIDEButtonCommand; +var + i, l: Integer; +begin + for i := 0 to Count-1 do + for l := 0 to Items[i].ButtonCount-1 do + if Items[i].Buttons[l].Command = aCommand then + Exit(Items[i].Buttons[l]); + + Result := nil; +end; + +function TIDEToolButtonCategories.FindItemByCommand(const aCommand: Word + ): TIDEButtonCommand; +var + i, l: Integer; +begin + for i := 0 to Count-1 do + for l := 0 to Items[i].ButtonCount-1 do + if Items[i].Buttons[l].Command.Command = aCommand then + Exit(Items[i].Buttons[l]); + + Result := nil; +end; + +function TIDEToolButtonCategories.FindItemByName(const aName: string + ): TIDEButtonCommand; +var + i: Integer; +begin + i := FButtonNames.IndexOf(aName); + if (i>=0) and (FButtonNames.Objects[i]<>nil) then + Result := FButtonNames.Objects[i] as TIDEButtonCommand + else + Result := nil; +end; + +function TIDEToolButtonCategories.GetItems(Index: Integer): TIDEToolButtonCategory; +begin + Result := TIDEToolButtonCategory(FCategories.Objects[Index]); +end; + +{ TIDEToolButton } + +procedure TIDEToolButton.Click; +begin + inherited Click; + if Assigned(FItem) then + FItem.DoOnClick; +end; + +procedure TIDEToolButton.DoOnAdded; +begin + //override in descendants +end; + +procedure TIDEToolButton.DoOnShowHint(HintInfo: PHintInfo); +begin + inherited DoOnShowHint(HintInfo); + if Assigned(FItem) and FItem.DoOnRequestCaption(Self) then + HintInfo^.HintStr := FItem.GetHintOrCaptionWithShortCut; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/ideintf/unitresources.pas lazarus-1.6+dfsg/components/ideintf/unitresources.pas --- lazarus-1.4.4+dfsg/components/ideintf/unitresources.pas 2014-06-25 10:11:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/ideintf/unitresources.pas 2015-07-12 23:05:08.000000000 +0000 @@ -69,6 +69,9 @@ implementation +uses + FormEditingIntf; + var GUnitResourcefileFormats: TUnitResourcefileFormatArr; @@ -146,11 +149,11 @@ aClassName: string): TComponentClass; begin if CompareText(aClassName,'TForm')=0 then - Result:=TForm + Result:=FormEditingHook.StandardDesignerBaseClasses[DesignerBaseClassId_TForm] else if CompareText(aClassName,'TFrame')=0 then - Result:=TFrame + Result:=FormEditingHook.StandardDesignerBaseClasses[DesignerBaseClassId_TFrame] else if CompareText(aClassName,'TDataModule')=0 then - Result:=TDataModule + Result:=FormEditingHook.StandardDesignerBaseClasses[DesignerBaseClassId_TDataModule] else Result:=nil; end; @@ -167,8 +170,7 @@ Result:=TForm; end; -class function TUnitResourcefileFormat.FindComponentClass(aClassName: string - ): TComponentClass; +class function TUnitResourcefileFormat.FindComponentClass(aClassName: string): TComponentClass; begin Result:=nil; end; diff -Nru lazarus-1.4.4+dfsg/components/IndustrialStuff/source/AdvLed.pas lazarus-1.6+dfsg/components/IndustrialStuff/source/AdvLed.pas --- lazarus-1.4.4+dfsg/components/IndustrialStuff/source/AdvLed.pas 2013-10-23 22:52:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/IndustrialStuff/source/AdvLed.pas 2015-08-15 21:40:09.000000000 +0000 @@ -19,7 +19,7 @@ interface uses - LCLIntf, LCLType,LResources,Classes, Types, ExtCtrls, Controls, Graphics; + LCLType, Classes, ExtCtrls, Controls, Graphics; type @@ -64,7 +64,7 @@ published // kind property must be published before GlyphOn, GlyphOff,GlyphDisable - property Kind: TLedKind read FKind write SetKind ; + property Kind: TLedKind read FKind write SetKind default lkRedLight; property GlyphDisabled: TLedBitmap index 0 read GetGlyph write SetGlyph stored StoredGlyph; property GlyphOff: TLedBitmap index 1 read GetGlyph @@ -151,8 +151,7 @@ begin inherited Create(AOwner); ControlStyle := ControlStyle - [csSetCaption]; - Height := 25; - Width := 25; + AutoSize:=True; FGlyphs[lsOn] := TLedBitmap.Create; FGlyphs[lsOff] := TLedBitmap.Create; FGlyphs[lsDisabled] := TLedBitmap.Create; diff -Nru lazarus-1.4.4+dfsg/components/IndustrialStuff/source/indcyClasses.pas lazarus-1.6+dfsg/components/IndustrialStuff/source/indcyClasses.pas --- lazarus-1.4.4+dfsg/components/IndustrialStuff/source/indcyClasses.pas 2013-05-23 20:39:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/IndustrialStuff/source/indcyClasses.pas 2015-06-06 11:19:40.000000000 +0000 @@ -49,7 +49,7 @@ interface uses - LCLIntf, LCLType, Classes, Forms, Graphics, Math, Controls, ExtCtrls, SysUtils, + LCLIntf, Classes, Graphics, Controls, SysUtils, indcyTypes, indcyGraphics; type diff -Nru lazarus-1.4.4+dfsg/components/IndustrialStuff/source/lednumber.pas lazarus-1.6+dfsg/components/IndustrialStuff/source/lednumber.pas --- lazarus-1.4.4+dfsg/components/IndustrialStuff/source/lednumber.pas 2014-05-14 06:22:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/IndustrialStuff/source/lednumber.pas 2015-08-15 21:40:09.000000000 +0000 @@ -84,8 +84,8 @@ property Columns: Integer read FColumns write SetColumns default 10; property Rows: Integer read FRows write SetRows default 1; property BgColor: TColor read FbgColor write SetbgColor default clBlack; - property OffColor: TColor read FOffColor write SetOffColor default $00104E4A; - property OnColor: TColor read FOnColor write SetOnColor default clYellow; + property OffColor: TColor read FOffColor write SetOffColor default $000E3432; + property OnColor: TColor read FOnColor write SetOnColor default clLime; property Size: TSegmentSize read FSize write SetSize default 2; property Transparent: boolean read FTransparent write SetTransparent default false; {Draws segments with transparent background.BgColor is used as mask color.} {Inherited properties} @@ -273,7 +273,7 @@ function TCustomLEDNumber.GetAbout : string; begin -// Result := VpVersionStr; + Result := ''; //VpVersionStr; end; {=====} diff -Nru lazarus-1.4.4+dfsg/components/IndustrialStuff/source/sensors.pas lazarus-1.6+dfsg/components/IndustrialStuff/source/sensors.pas --- lazarus-1.4.4+dfsg/components/IndustrialStuff/source/sensors.pas 2013-10-05 02:10:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/IndustrialStuff/source/sensors.pas 2015-08-15 21:40:09.000000000 +0000 @@ -62,8 +62,8 @@ property ShowText: Boolean read FShowText write SetShowText; property ShowLevel: Boolean read FShowLevel write SetShowLevel; - property ColorFore: TColor index 0 read FColorFore write SetColorInd default clBlack; - property ColorBack: TColor index 1 read FColorBack write SetColorInd default clWhite; + property ColorFore: TColor index 0 read FColorFore write SetColorInd default clLime; + property ColorBack: TColor index 1 read FColorBack write SetColorInd default clBlack; property ColorRed: TColor index 2 read FColorRed write SetColorInd default clRed; property ColorYellow: TColor index 3 read FColorYellow write SetColorInd default clYellow; @@ -100,6 +100,7 @@ public constructor Create(AOwner: TComponent); override; published + property Center default True; property State: TStopLights read FState write SetState; end; diff -Nru lazarus-1.4.4+dfsg/components/jcf2/IdePlugin/lazarus/jcfideregister.pas lazarus-1.6+dfsg/components/jcf2/IdePlugin/lazarus/jcfideregister.pas --- lazarus-1.4.4+dfsg/components/jcf2/IdePlugin/lazarus/jcfideregister.pas 2013-10-05 12:47:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/IdePlugin/lazarus/jcfideregister.pas 2015-07-04 23:08:00.000000000 +0000 @@ -36,7 +36,7 @@ { rtl } SysUtils, Classes, { lcl } - LCLType, FileUtil; + LCLType, LazFileUtils, LazUTF8; procedure Register; diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Parse/BuildParseTree.pas lazarus-1.6+dfsg/components/jcf2/Parse/BuildParseTree.pas --- lazarus-1.4.4+dfsg/components/jcf2/Parse/BuildParseTree.pas 2014-11-23 16:24:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Parse/BuildParseTree.pas 2015-08-03 22:21:59.000000000 +0000 @@ -248,6 +248,7 @@ procedure RecogniseHintDirectives; procedure RecognisePropertyDirectives; procedure RecogniseExternalProcDirective; + function RecognisePublicProcDirective: boolean; procedure RecogniseAttributes; @@ -3842,14 +3843,14 @@ procedure TBuildParseTree.RecogniseFormalParam; const - PARAM_PREFIXES: TTokenTypeSet = [ttVar, ttConst]; + PARAM_PREFIXES: TTokenTypeSet = [ttVar, ttConst, ttConstRef]; begin PushNode(nFormalParam); if (fcTokenList.FirstSolidTokenType = ttOpenSquareBracket) then RecogniseAttributes; - { FormalParm -> [VAR | CONST | OUT] Parameter + { FormalParm -> [VAR | CONST | CONSTREF | OUT] Parameter 'out' is different as it is also a param name so this is legal procedure Foo(out out: integer); @@ -3950,6 +3951,12 @@ begin RecogniseExternalProcDirective; end; + ttPublic: + begin + { Break the loop if we have found a class visibility "public" } + if not RecognisePublicProcDirective then + break; + end; ttDispId: begin Recognise(ttDispId); @@ -3981,14 +3988,20 @@ { right, i'll fake this one ExternalProcDirective -> - External ["'" libname "'" ["name" "'" procname "'"]] + External ["'" libname "'"] ["name" "'" procname "'"] also allow "index expr" } PushNode(nExternalDirective); Recognise(ttExternal); - if fcTokenList.FirstSolidTokenType in (IdentiferTokens + [ttQuotedLiteralString]) then + + if fcTokenList.FirstSolidTokenType = ttName then + begin + Recognise(ttName); + RecogniseConstantExpression; + end + else if fcTokenList.FirstSolidTokenType in (IdentiferTokens + [ttQuotedLiteralString]) then begin Recognise((IdentiferTokens + [ttQuotedLiteralString])); @@ -4008,6 +4021,27 @@ PopNode; end; +function TBuildParseTree.RecognisePublicProcDirective: boolean; +begin + { + PublicProcDirective -> + Public ["name" "'" symname "'"] + } + result:=false; + if TopNode.HasParentNode([nClassBody, nObjectType]) then + exit; + + Recognise(ttPublic); + + if fcTokenList.FirstSolidTokenType = ttName then + begin + Recognise(ttName); + RecogniseConstantExpression; + end; + + result:=true; +end; + procedure TBuildParseTree.RecogniseObjectType; begin { ObjectType -> OBJECT [ObjHeritage] [ObjFieldList] [MethodList] END @@ -4479,8 +4513,8 @@ Recognise(ttOpenSquareBracket); repeat - if (fcTokenList.FirstSolidTokenType in [ttConst, ttVar, ttOut]) then - Recognise([ttConst, ttVar, ttOut]); + if (fcTokenList.FirstSolidTokenType in [ttConst, ttConstref, ttVar, ttOut]) then + Recognise([ttConst, ttConstref, ttVar, ttOut]); RecogniseIdentList(False); Recognise(ttColon); diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Parse/ParseTreeNodeType.pas lazarus-1.6+dfsg/components/jcf2/Parse/ParseTreeNodeType.pas --- lazarus-1.4.4+dfsg/components/jcf2/Parse/ParseTreeNodeType.pas 2009-03-26 05:55:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Parse/ParseTreeNodeType.pas 2016-01-04 15:04:42.000000000 +0000 @@ -230,7 +230,7 @@ nInterfaceSection: Result := 'Interface section'; nImplementationSection: - Result := 'Implmentation section'; + Result := 'Implementation section'; nBlock: Result := 'Block'; nStatementList: diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Parse/Tokens.pas lazarus-1.6+dfsg/components/jcf2/Parse/Tokens.pas --- lazarus-1.4.4+dfsg/components/jcf2/Parse/Tokens.pas 2015-01-09 17:44:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Parse/Tokens.pas 2015-08-03 22:21:59.000000000 +0000 @@ -93,6 +93,7 @@ ttCase, ttClass, ttConst, + ttConstref, ttContains, ttConstructor, ttDestructor, @@ -188,7 +189,8 @@ ttImplements, ttReintroduce, ttGeneric, - + ttCVar, + ttNostackframe, // used in asm ttOffset, ttPtr, @@ -215,6 +217,7 @@ { Additional Free Pascal directives } ttExperimental, ttUnimplemented, + ttInterrupt, { built-in constants } ttNil, @@ -322,7 +325,7 @@ Declarations: TTokenTypeSet = [ttConst, ttResourceString, ttVar, ttThreadVar, ttType, ttLabel, ttExports]; - ParamTypes: TTokenTypeSet = [ttVar, ttConst, ttOut]; + ParamTypes: TTokenTypeSet = [ttVar, ttConst, ttConstref, ttOut]; BlockOutdentWords: TTokenTypeSet = [ttVar, ttThreadVar, ttConst, ttResourceString, ttType, ttLabel, @@ -349,7 +352,7 @@ ExportDirectives: TTokenTypeSet = [ttIndex, ttName]; VariableDirectives: TTokenTypeSet = [ttAbsolute, ttDeprecated, ttLibrary, ttPlatform, - ttExperimental, ttUnimplemented]; + ttExperimental, ttUnimplemented, ttCVar]; ClassVisibility: TTokenTypeSet = [ttPrivate, ttProtected, ttPublic, ttPublished, ttAutomated]; @@ -360,7 +363,8 @@ ttNear, ttDynamic, ttExport, ttOverride, ttResident, ttLocal, ttOverload, ttReintroduce, ttDeprecated, ttLibrary, ttPlatform, ttExperimental, ttUnimplemented, - ttStatic, ttFinal, ttVarArgs, ttUnsafe, ttEnumerator]; + ttStatic, ttFinal, ttVarArgs, ttUnsafe, ttEnumerator, ttNostackframe, ttInterrupt, + ttPublic]; ClassDirectives: TTokenTypeSet = [ttPrivate, ttProtected, ttPublic, ttPublished, ttAutomated, ttStrict]; @@ -376,7 +380,7 @@ ttNear, ttReadOnly, ttDynamic, ttNoDefault, ttRegister, ttExport, ttOverride, ttOverload, ttResident, ttLocal, ttImplements, ttReintroduce, - ttLibrary, ttPlatform, ttStatic, ttFinal, ttVarArgs]; + ttLibrary, ttPlatform, ttStatic, ttFinal, ttVarArgs, ttCVar]; ProcedureWords: TTokenTypeSet = [ttProcedure, ttFunction, ttConstructor, ttDestructor, ttOperator]; @@ -581,6 +585,7 @@ AddKeyword('case', wtReservedWord, ttCase); AddKeyword('class', wtReservedWord, ttClass); AddKeyword('const', wtReservedWord, ttConst); + AddKeyword('constref', wtReservedWordDirective, ttConstref); AddKeyword('constructor', wtReservedWord, ttConstructor); AddKeyword('destructor', wtReservedWord, ttDestructor); @@ -681,6 +686,9 @@ AddKeyword('implements', wtReservedWordDirective, ttImplements); AddKeyword('reintroduce', wtReservedWordDirective, ttReintroduce); + AddKeyword('cvar', wtReservedWordDirective, ttCVar); + AddKeyword('nostackframe', wtReservedWordDirective, ttNostackframe); + // asm AddKeyword('offset', wtReservedWordDirective, ttOffset); AddKeyword('ptr', wtReservedWordDirective, ttPtr); @@ -708,6 +716,7 @@ { Additional Free Pascal directives } AddKeyword('experimental', wtReservedWordDirective, ttExperimental); AddKeyword('unimplemented', wtReservedWordDirective, ttUnimplemented); + AddKeyword('interrupt', wtReservedWordDirective, ttInterrupt); { operators that are words not symbols } AddKeyword('and', wtOperator, ttAnd); diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Parse/UI/fShowParseTree.pas lazarus-1.6+dfsg/components/jcf2/Parse/UI/fShowParseTree.pas --- lazarus-1.4.4+dfsg/components/jcf2/Parse/UI/fShowParseTree.pas 2010-01-14 03:13:19.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Parse/UI/fShowParseTree.pas 2015-03-06 18:09:07.000000000 +0000 @@ -38,12 +38,8 @@ interface uses - { delphi } - {$ifndef fpc} - Windows, ShellAPI, - {$endif} - SysUtils, Classes, Controls, Forms, - ComCtrls, ExtCtrls, StdCtrls, + SysUtils, Classes, Controls, Forms, ComCtrls, ExtCtrls, StdCtrls, + LCLIntf, LCLType, { local } ParseTreeNode; @@ -319,15 +315,16 @@ procedure TfrmShowParseTree.FormKeyUp(Sender: TObject; var Key: word; Shift: TShiftState); begin -{$ifndef fpc} - if Key = VK_F1 then - try - Application.HelpContext(HELP_MAIN); - except - if FileExists(Application.HelpFile) then - ShellExecute(Handle, 'open', PChar(Application.HelpFile), nil, nil, SW_SHOWNORMAL); - end; -{$endif} + case Key of + VK_F1: + try + Application.HelpContext(HELP_MAIN); + except + if FileExists(Application.HelpFile) then + OpenDocument(Application.HelpFile); + end; + VK_ESCAPE: Close; + end; end; end. diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Process/Transform/AddBeginEnd.pas lazarus-1.6+dfsg/components/jcf2/Process/Transform/AddBeginEnd.pas --- lazarus-1.4.4+dfsg/components/jcf2/Process/Transform/AddBeginEnd.pas 2008-10-09 08:06:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Process/Transform/AddBeginEnd.pas 2015-06-06 11:19:40.000000000 +0000 @@ -129,7 +129,7 @@ const { if there is an if stament with no else case immediately hereunder, should find it by this depth } - IMMEDIATE_IF_DEPTH = 4; + //IMMEDIATE_IF_DEPTH = 4; MAX_IF_CLIMB = 5; var lcParent: TParseTreeNode; diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Settings/JcfSettings.pas lazarus-1.6+dfsg/components/jcf2/Settings/JcfSettings.pas --- lazarus-1.4.4+dfsg/components/jcf2/Settings/JcfSettings.pas 2010-10-13 17:42:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Settings/JcfSettings.pas 2015-07-04 23:08:00.000000000 +0000 @@ -169,7 +169,7 @@ uses { delphi } - {$IFNDEF FPC}Windows,{$ELSE}FileUtil,{$ENDIF} SysUtils, Dialogs, + {$IFNDEF FPC}Windows,{$ELSE}LazFileUtils, LazUTF8,{$ENDIF} SysUtils, Dialogs, { local } JcfStringUtils, JcfSetBase, diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/fAbout.lfm lazarus-1.6+dfsg/components/jcf2/Ui/fAbout.lfm --- lazarus-1.4.4+dfsg/components/jcf2/Ui/fAbout.lfm 2010-07-10 17:33:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/fAbout.lfm 2015-11-06 22:31:47.000000000 +0000 @@ -1,41 +1,26 @@ object frmAboutBox: TfrmAboutBox Left = 326 - Height = 445 + Height = 394 Top = 235 Width = 483 + BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'About JEDI Code Format' - ClientHeight = 445 + ClientHeight = 394 ClientWidth = 483 - Font.CharSet = ANSI_CHARSET - Font.Height = -15 - Font.Name = 'Segoe UI' KeyPreview = True OnCreate = FormCreate OnKeyUp = FormKeyUp Position = poScreenCenter - LCLVersion = '0.9.29' - object bbOK: TBitBtn - Left = 191 - Height = 37 - Top = 399 - Width = 100 - Caption = '&OK' - Default = True - Kind = bkOK - ModalResult = 1 - NumGlyphs = 0 - TabOrder = 1 - end + LCLVersion = '1.5' object pnlClient: TPanel Left = 0 - Height = 393 + Height = 353 Top = 0 Width = 483 - Align = alTop - BevelInner = bvRaised - BevelOuter = bvLowered - ClientHeight = 393 + Align = alClient + BevelOuter = bvNone + ClientHeight = 353 ClientWidth = 483 TabOrder = 0 object imgOpenSource: TImage @@ -423,23 +408,19 @@ } end object hlHomePage: TLabel - AnchorSideLeft.Control = lblMPL + AnchorSideLeft.Control = mWarning AnchorSideTop.Control = lblMPL AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = lblMPL + AnchorSideRight.Control = mWarning AnchorSideRight.Side = asrBottom Cursor = crHandPoint Left = 11 - Height = 18 - Top = 304 + Height = 17 + Top = 303 Width = 462 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 8 Caption = 'hlHomePage' - Font.CharSet = ANSI_CHARSET - Font.Color = clBlack - Font.Height = -15 - Font.Name = 'Segoe UI' ParentColor = False ParentFont = False WordWrap = True @@ -455,12 +436,12 @@ AnchorSideRight.Side = asrBottom Cursor = crHandPoint Left = 11 - Height = 35 + Height = 34 Top = 261 Width = 462 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 8 - Caption = 'This program is open source software. It is released under the Mozilla '#13#10'Public licence (MPL). http://www.mozilla.org/MPL' + Caption = 'This program is open source software. It is released under the Mozilla Public licence (MPL). http://www.mozilla.org/MPL' ParentColor = False WordWrap = True OnClick = lblMPLClick @@ -482,10 +463,13 @@ TabOrder = 0 end object mWhat: TMemo + AnchorSideRight.Control = mWarning + AnchorSideRight.Side = asrBottom Left = 151 Height = 166 Top = 11 - Width = 329 + Width = 322 + Anchors = [akTop, akLeft, akRight] Lines.Strings = ( 'Version %VERSION%' '%DATE%' @@ -500,4 +484,21 @@ TabOrder = 1 end end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 359 + Width = 471 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 1 + ShowButtons = [pbOK] + ShowBevel = False + end end diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/fAbout.pas lazarus-1.6+dfsg/components/jcf2/Ui/fAbout.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/fAbout.pas 2010-07-10 17:33:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/fAbout.pas 2015-11-06 22:31:47.000000000 +0000 @@ -30,13 +30,14 @@ interface uses - { delphi } - Classes, Forms, Graphics, Controls, StdCtrls, - Buttons, ExtCtrls, SysUtils; + Classes, Forms, Graphics, StdCtrls, Buttons, ExtCtrls, ButtonPanel, SysUtils; type + + { TfrmAboutBox } + TfrmAboutBox = class(TForm) - bbOK: TBitBtn; + ButtonPanel1: TButtonPanel; pnlClient: TPanel; imgOpenSource: TImage; mWarning: TMemo; @@ -71,7 +72,7 @@ LCLIntf, {$endif} { local } - JcfVersionConsts, JcfHelp, JcfFontSetFunctions, JcfStringUtils, jcfuiconsts; + JcfVersionConsts, JcfFontSetFunctions, JcfStringUtils, jcfuiconsts; {$ifdef fpc} procedure ShowURL(const ps: string); @@ -105,7 +106,8 @@ begin inherited; - SetObjectFontToSystemFont(Self); + //LCL already has 'default' font + //SetObjectFontToSystemFont(Self); Caption := lisAboutAboutJEDICodeFormat; mWhat.Text := Format(lisAboutVersion, [NativeLineBreak, NativeLineBreak, diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frAnyCapsSettings.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frAnyCapsSettings.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frAnyCapsSettings.pas 2011-08-12 21:16:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frAnyCapsSettings.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, - { local } + Classes, StdCtrls, IDEOptionsIntf; type @@ -60,7 +58,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfrAnyCapsSettings.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frAsm.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frAsm.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frAsm.pas 2010-04-25 19:57:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frAsm.pas 2015-06-06 11:19:40.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls, Spin, - { local} + SysUtils, StdCtrls, ExtCtrls, Spin, IDEOptionsIntf; type @@ -68,9 +66,9 @@ uses { jcf } - JcfHelp, JcfSettings, jcfuiconsts, + JcfSettings, jcfuiconsts, { local } - Capitalisation, SettingsTypes, SetAsm; + SettingsTypes, SetAsm; procedure TfAsm.FrameResize(Sender:TObject); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frBlankLines.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frBlankLines.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frBlankLines.pas 2010-03-14 19:00:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frBlankLines.pas 2015-03-24 17:50:33.000000000 +0000 @@ -29,9 +29,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, Spin, - { local} + Classes, Math, StdCtrls, Spin, IDEOptionsIntf; @@ -68,10 +66,7 @@ {$R *.lfm} uses - { delphi } - Math, - { local } - JcfSettings, SetReturns, JcfHelp, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfBlankLines.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyAlign.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyAlign.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyAlign.pas 2010-03-14 22:48:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyAlign.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, Spin, - { local} + Classes, StdCtrls, Spin, IDEOptionsIntf; type @@ -78,7 +76,7 @@ {$R *.lfm} uses - JcfSettings, JcfHelp, SetAlign, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfClarifyAlign.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyBlocks.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyBlocks.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyBlocks.pas 2011-08-12 21:16:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyBlocks.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,8 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, + Classes, StdCtrls, ExtCtrls, IDEOptionsIntf; type @@ -61,7 +60,7 @@ {$R *.lfm} uses - JcfSettings, SettingsTypes, JcfHelp, jcfuiconsts; + JcfSettings, SettingsTypes, jcfuiconsts; procedure TfClarifyBlocks.FrameResize(Sender:TObject); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyCaseBlocks.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyCaseBlocks.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyCaseBlocks.pas 2010-04-25 15:17:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyCaseBlocks.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, - { local} + Classes, StdCtrls, ExtCtrls, IDEOptionsIntf; type @@ -63,7 +61,7 @@ {$R *.lfm} uses - JcfSettings, SettingsTypes, JcfHelp, jcfuiconsts; + JcfSettings, SettingsTypes, jcfuiconsts; procedure TfClarifyCaseBlocks.FrameResize(Sender:TObject); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyIndent.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyIndent.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyIndent.pas 2010-03-13 23:01:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyIndent.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,8 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, Spin, + Classes, StdCtrls, Spin, IDEOptionsIntf; type @@ -73,7 +72,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, SetIndent, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfClarifyIndent.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyLongLineBreaker.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyLongLineBreaker.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyLongLineBreaker.pas 2010-03-20 17:44:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyLongLineBreaker.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,8 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, Spin, + Classes, StdCtrls, ExtCtrls, Spin, IDEOptionsIntf; type @@ -58,7 +57,7 @@ {$R *.lfm} uses - JcfSettings, SetReturns, JcfHelp, jcfuiconsts; + JcfSettings, SetReturns, jcfuiconsts; constructor TfClarifyLongLineBreaker.Create(AOwner: TComponent); diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarify.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarify.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarify.pas 2010-06-25 02:47:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarify.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, - { local} + Classes, StdCtrls, ExtCtrls, IDEOptionsIntf; type @@ -59,7 +57,7 @@ {$R *.lfm} uses - JcfSettings, JcfHelp, SetClarify, jcfuiconsts; + JcfSettings, SetClarify, jcfuiconsts; constructor TfClarify.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyReturns.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyReturns.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifyReturns.pas 2010-04-25 15:03:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifyReturns.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, - { local} + Classes, StdCtrls, ExtCtrls, IDEOptionsIntf; type @@ -67,7 +65,7 @@ {$R *.lfm} uses - SettingsTypes, JcfSettings, SetReturns, JcfHelp, jcfuiconsts; + SettingsTypes, JcfSettings, jcfuiconsts; procedure TfClarifyReturns.FrameResize(Sender:TObject); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifySpaces.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifySpaces.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frClarifySpaces.pas 2010-04-24 17:32:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frClarifySpaces.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, Spin, - { local} + Classes, StdCtrls, ExtCtrls, Spin, IDEOptionsIntf; type @@ -98,7 +96,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, SetSpaces, SettingsTypes, jcfuiconsts; + JcfSettings, SettingsTypes, jcfuiconsts; constructor TfClarifySpaces.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frComments.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frComments.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frComments.pas 2011-08-12 21:16:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frComments.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - StdCtrls, Classes, Controls, Forms, - { local } + StdCtrls, Classes, IDEOptionsIntf; type @@ -57,7 +55,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, SetComments, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfComments.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frFiles.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frFiles.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frFiles.pas 2010-07-10 16:30:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frFiles.pas 2015-07-04 23:08:00.000000000 +0000 @@ -61,7 +61,7 @@ uses { local } - JcfFileUtils, JcfRegistrySettings, JcfSettings, jcfuiconsts, FileUtil; + JcfFileUtils, JcfRegistrySettings, JcfSettings, jcfuiconsts, LazFileUtils; procedure TfFiles.ReadSettings(AOptions: TAbstractIDEOptions); var diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frIdentifierCapsSettings.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frIdentifierCapsSettings.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frIdentifierCapsSettings.pas 2010-04-04 14:57:37.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frIdentifierCapsSettings.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,8 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, + Classes, StdCtrls, IDEOptionsIntf; type @@ -59,7 +58,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfIdentifierCapsSettings.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frNotIdentifierCapsSettings.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frNotIdentifierCapsSettings.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frNotIdentifierCapsSettings.pas 2010-04-04 15:16:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frNotIdentifierCapsSettings.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,8 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, + Classes, StdCtrls, IDEOptionsIntf; type @@ -59,7 +58,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfNotIdentifierCapsSettings.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frObfuscateSettings.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frObfuscateSettings.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frObfuscateSettings.pas 2011-11-05 17:52:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frObfuscateSettings.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, - { local } + Classes, StdCtrls, ExtCtrls, IDEOptionsIntf; type @@ -61,7 +59,7 @@ {$R *.lfm} uses - JcfSettings, SettingsTypes, JcfHelp, SetObfuscate, jcfuiconsts; + JcfSettings, SettingsTypes, jcfuiconsts; { TfObfuscateSettings } diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frPreProcessor.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frPreProcessor.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frPreProcessor.pas 2011-11-05 17:53:11.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frPreProcessor.pas 2015-06-06 11:19:40.000000000 +0000 @@ -31,8 +31,7 @@ { preprocessor symbols } uses - Classes, Controls, Forms, StdCtrls, - IDEOptionsIntf; + Classes, StdCtrls, IDEOptionsIntf; type @@ -61,7 +60,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfPreProcessor.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frReplace.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frReplace.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frReplace.pas 2010-04-05 21:09:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frReplace.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, - { local } + Classes, StdCtrls, IDEOptionsIntf; type @@ -60,7 +58,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, jcfuiconsts; + JcfSettings, jcfuiconsts; { TfReplace } diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frReservedCapsSettings.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frReservedCapsSettings.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frReservedCapsSettings.pas 2010-04-25 17:54:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frReservedCapsSettings.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, ExtCtrls, - { local } + Classes, StdCtrls, ExtCtrls, IDEOptionsIntf; type @@ -63,7 +61,7 @@ {$R *.lfm} uses - SettingsTypes, JcfHelp, JcfSettings, jcfuiconsts; + SettingsTypes, JcfSettings, jcfuiconsts; constructor TfrReservedCapsSettings.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frTransform.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frTransform.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frTransform.pas 2010-04-10 16:25:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frTransform.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,8 +30,7 @@ interface uses - Classes, Graphics, Controls, Forms, StdCtrls, ExtCtrls, - { local } + Classes, StdCtrls, ExtCtrls, IDEOptionsIntf; type @@ -64,7 +63,7 @@ {$R *.lfm} uses - SettingsTypes, JcfSettings, JcfHelp, SetTransform, jcfuiconsts; + SettingsTypes, JcfSettings, SetTransform, jcfuiconsts; constructor TfTransform.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frUses.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frUses.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frUses.pas 2010-04-25 19:23:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frUses.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - Classes, Controls, Forms, StdCtrls, - { local } + Classes, StdCtrls, IDEOptionsIntf; type @@ -69,7 +67,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfUses.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frWarnings.pas lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frWarnings.pas --- lazarus-1.4.4+dfsg/components/jcf2/Ui/Settings/frWarnings.pas 2011-11-05 17:53:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Ui/Settings/frWarnings.pas 2015-03-24 17:50:33.000000000 +0000 @@ -30,9 +30,7 @@ interface uses - { delphi } - StdCtrls, Classes, Controls, Forms, - { local } + StdCtrls, Classes, IDEOptionsIntf; type @@ -62,7 +60,7 @@ {$R *.lfm} uses - JcfHelp, JcfSettings, jcfuiconsts; + JcfSettings, jcfuiconsts; constructor TfWarnings.Create(AOwner: TComponent); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Utils/JcfFontSetFunctions.pas lazarus-1.6+dfsg/components/jcf2/Utils/JcfFontSetFunctions.pas --- lazarus-1.4.4+dfsg/components/jcf2/Utils/JcfFontSetFunctions.pas 2009-03-26 05:55:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Utils/JcfFontSetFunctions.pas 2015-03-24 17:50:33.000000000 +0000 @@ -40,10 +40,8 @@ implementation uses - { delphi } - StdCtrls, ComCtrls, Graphics, TypInfo, - { local } - JcfStringUtils, JcfSystemUtils; + StdCtrls, Graphics, TypInfo, + JcfSystemUtils; procedure SetCaptionFont(const AObjectFont: TFont); begin diff -Nru lazarus-1.4.4+dfsg/components/jcf2/Utils/JcfStringUtils.pas lazarus-1.6+dfsg/components/jcf2/Utils/JcfStringUtils.pas --- lazarus-1.4.4+dfsg/components/jcf2/Utils/JcfStringUtils.pas 2009-10-18 08:58:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/jcf2/Utils/JcfStringUtils.pas 2015-03-24 17:50:33.000000000 +0000 @@ -160,14 +160,12 @@ uses {$ifdef MSWINDOWS} - Windows, ShellApi + //Windows, ShellApi {$endif} {$ifdef Unix} - Unix + //Unix {$endif} -{$ifdef fpc} - , LCLIntf, fileutil -{$endif}; + LCLIntf, fileutil; {$IFNDEF DELPHI12} {$IFNDEF DELPHI14} diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/checkboxthemed.pas lazarus-1.6+dfsg/components/lazcontrols/checkboxthemed.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/checkboxthemed.pas 2014-12-04 17:44:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/checkboxthemed.pas 2016-02-06 18:59:54.000000000 +0000 @@ -14,7 +14,7 @@ uses Classes, SysUtils, Controls, StdCtrls, Graphics, Math, ActnList, Forms, Menus, - LCLIntf, LMessages, LCLProc, LResources, LCLType, Themes, Types; //PropEdits, + LCLIntf, LMessages, LCLProc, LResources, LCLType, Themes, Types; type TCustomCheckBoxThemed = class; @@ -66,9 +66,6 @@ procedure MouseEnter; override; procedure MouseLeave; override; procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; - class procedure PaintSelf(ACanvas: TCanvas; ACaption: string; ARect: TRect; - AState: TCheckBoxState; ARightToLeft, AHovered, APressed, AFocused: Boolean; - AAlignment: TLeftRight; AEnabled: Boolean = True); procedure Paint; override; procedure TextChanged; override; procedure WMSize(var Message: TLMSize); message LM_SIZE; @@ -78,6 +75,9 @@ cFocusBorder: SmallInt = 2; cIndent: SmallInt = 5; public + class procedure PaintSelf(ACanvas: TCanvas; ACaption: string; ARect: TRect; + AState: TCheckBoxState; ARightToLeft, AHovered, APressed, AFocused: Boolean; + AAlignment: TLeftRight; AEnabled: Boolean = True); constructor Create(AOwner: TComponent); override; property Alignment: TLeftRight read FAlignment write SetAlignment default taRightJustify; property AllowGrayed: Boolean read FAllowGrayed write FAllowGrayed default False; @@ -295,7 +295,7 @@ procedure TCustomCheckBoxThemed.KeyUp(var Key: Word; Shift: TShiftState); begin - inherited KeyDown(Key, Shift); + inherited KeyUp(Key, Shift); if (Key in [VK_RETURN, VK_SPACE]) and not (ssCtrl in Shift) then begin CheckBoxPressed := False; DoClick; @@ -360,33 +360,20 @@ if ARightToLeft then inc(aFlags, DT_RTLREADING); with ThemeServices.GetTextExtent(ACanvas.Handle, aDetails, ACaption, aFlags, nil) do begin aTextSize.cx := Right; - aTextSize.cy := Bottom + 2 * cFocusBorder; + aTextSize.cy := Bottom; end; - aCaptionPoint.Y := (ARect.Bottom - aTextSize.cy) div 2; - aCheckBoxPoint.Y := (ARect.Bottom - CheckBoxSize.cy) div 2; - case AAlignment of - taLeftJustify: begin - if not ARightToLeft then begin { Caption is on the Left, aligned to the Left } - aCaptionPoint.X := cFocusBorder; - aCheckBoxPoint.X := ARect.Right - CheckBoxSize.cx ;//cFocusBorder + aTextSize.cx + cIndent; - end else begin { Caption is on the Right, aligned to the Right } - aCaptionPoint.X := ARect.Right - aTextSize.cx - cFocusBorder; - aCheckBoxPoint.X := 0;//aCaptionPoint.X - cIndent - CheckBoxSize.cx; - end; - end; - taRightJustify: begin - if not ARightToLeft then begin { Caption is on the Right, aligned to the Left } - aCaptionPoint.X := CheckBoxSize.cx + cIndent; - aCheckBoxPoint.X := 0; - end else begin { Caption is on the Left, aligned to the Right } - aCheckBoxPoint.X := ARect.Right - CheckBoxSize.cx; - aCaptionPoint.X := aCheckBoxPoint.X - cIndent - aTextSize.cx; - end; - end; + aCaptionPoint.Y := (ARect.Bottom + ARect.Top - aTextSize.cy) div 2; + aCheckBoxPoint.Y := (ARect.Bottom + ARect.Top - CheckBoxSize.cy) div 2; + if ARightToLeft xor (AAlignment = taLeftJustify) then begin { Caption is on the Left } + aCheckBoxPoint.X := ARect.Right - CheckBoxSize.cx; + aCaptionPoint.X := ARect.Left; + end else begin { Caption is on the Right } + aCheckBoxPoint.X := ARect.Left; + aCaptionPoint.X := aCheckBoxPoint.X + cIndent + CheckBoxSize.cx; end; end else begin if not ARightToLeft then - aCheckBoxPoint.X := 0 + aCheckBoxPoint.X := ARect.Left else aCheckBoxPoint.X := ARect.Right - CheckBoxSize.cx; aCheckBoxPoint.Y := (ARect.Bottom - CheckBoxSize.cy) div 2; diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/dividerbevel.pas lazarus-1.6+dfsg/components/lazcontrols/dividerbevel.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/dividerbevel.pas 2013-09-29 10:47:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/dividerbevel.pas 2015-03-07 03:56:42.000000000 +0000 @@ -17,7 +17,7 @@ uses Classes, LResources, Forms, Controls, Graphics, Dialogs, Types, - LCLType, LCLIntf, LCLProc, Math, GraphType, ComCtrls, ExtCtrls; + LCLType, LCLIntf, LCLProc, Math, GraphType, ComCtrls, ExtCtrls, Themes; type { TDividerBevel } @@ -29,12 +29,14 @@ FCaptionSpacing: Integer; FLeftIndent: Integer; FOrientation: TTrackBarOrientation; + FStyle: TGrabStyle; FTransparent: Boolean; procedure SetBevelStyle(AValue: TBevelStyle); procedure SetBevelWidth(AValue: Integer); procedure SetCaptionSpacing(const AValue: Integer); procedure SetLeftIndent(const AValue: Integer); procedure SetOrientation(AValue: TTrackBarOrientation); + procedure SetStyle(AValue: TGrabStyle); procedure SetTransparent(AValue: Boolean); protected FBevelHeight: Integer; @@ -65,6 +67,9 @@ default 10; property Color; property Constraints; + property DragCursor; + property DragKind; + property DragMode; property Font; property Hint; property LeftIndent: Integer read FLeftIndent write SetLeftIndent default 60; @@ -76,18 +81,23 @@ property ParentShowHint; property PopupMenu; property ShowHint; + property Style: TGrabStyle read FStyle write SetStyle default gsSimple; property Transparent: Boolean read FTransparent write SetTransparent default True; property Visible; property OnChangeBounds; property OnClick; property OnContextPopup; property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDrag; property OnMouseDown; property OnMouseEnter; property OnMouseLeave; property OnMouseMove; property OnMouseUp; property OnResize; + property OnStartDrag; end; procedure Register; @@ -147,6 +157,13 @@ Invalidate; end; +procedure TDividerBevel.SetStyle(AValue: TGrabStyle); +begin + if FStyle=AValue then Exit; + FStyle:=AValue; + Invalidate; +end; + procedure TDividerBevel.SetTransparent(AValue: Boolean); begin if FTransparent = AValue then Exit; @@ -179,8 +196,79 @@ var aBevel: TGraphicsBevelCut; aHorizontal: Boolean; - aIndent, aRight, j: Integer; PaintRect: TRect; + aStyle: TGrabStyle; + + procedure PaintBevel; + var aDetails: TThemedElementDetails; + aRect: TRect; + w, l: Integer; + begin + case aStyle of + gsSimple: Canvas.Frame3D(PaintRect, 1, aBevel); + gsDouble: if aHorizontal then begin + aRect.TopLeft := PaintRect.TopLeft; + aRect.Right := PaintRect.Right; + w := (PaintRect.Bottom - PaintRect.Top - 2) div 2; + aRect.Bottom := aRect.Top + w; + Canvas.Frame3D(aRect, 1, aBevel); + aRect.Left := PaintRect.Left; + aRect.Top := PaintRect.Bottom - w; + aRect.BottomRight := PaintRect.BottomRight; + Canvas.Frame3D(aRect, 1, aBevel); + end else begin + aRect.TopLeft := PaintRect.TopLeft; + w := (PaintRect.Right - PaintRect.Left - 2) div 2; + aRect.Right := aRect.Left + w; + aRect.Bottom := PaintRect.Bottom; + Canvas.Frame3D(aRect, 1, aBevel); + aRect.Left := PaintRect.Right - w; + aRect.Top := PaintRect.Top; + aRect.BottomRight := PaintRect.BottomRight; + Canvas.Frame3D(aRect, 1, aBevel); + end; + gsHorLines: begin + aRect.TopLeft := PaintRect.TopLeft; + aRect.Right := PaintRect.Right; + l := (PaintRect.Bottom - aRect.Top + 1) div 3; + inc(aRect.Top); + Canvas.Pen.Color := clBtnShadow; + for w := 0 to l - 1 do + Canvas.Line(aRect.Left, aRect.Top + w * 3, aRect.Right, aRect.Top + w * 3); + Canvas.Pen.Color := clBtnHighlight; + inc(aRect.Top); + for w := 0 to l - 1 do + Canvas.Line(aRect.Left, aRect.Top + w * 3, aRect.Right, aRect.Top + w * 3); + end; + gsVerLines: begin + aRect.TopLeft := PaintRect.TopLeft; + l := (PaintRect.Right - aRect.Left + 1) div 3; + aRect.Bottom := PaintRect.Bottom + 1; + inc(aRect.Left); + Canvas.Pen.Color := clBtnShadow; + for w := 0 to l - 1 do + Canvas.Line(aRect.Left + w * 3, aRect.Top, aRect.Left + w * 3, aRect.Bottom); + Canvas.Pen.Color := clBtnHighlight; + inc(aRect.Left); + for w := 0 to l - 1 do + Canvas.Line(aRect.Left + w * 3, aRect.Top, aRect.Left + w * 3, aRect.Bottom); + end; + gsGripper: begin + if aHorizontal then + aDetails := ThemeServices.GetElementDetails(trGripper) + else + aDetails := ThemeServices.GetElementDetails(trGripperVert); + ThemeServices.DrawElement(Canvas.Handle, aDetails, PaintRect); + end; + gsButton: begin + aDetails := ThemeServices.GetElementDetails(tbPushButtonNormal); + ThemeServices.DrawElement(Canvas.Handle, aDetails, PaintRect); + end; + end; + end; + +var + aIndent, aRight, j: Integer; begin CalcSize; if not FTransparent then begin @@ -195,6 +283,13 @@ aBevel := bvRaised; aHorizontal := (Orientation = trHorizontal); + aStyle := Style; + if not aHorizontal then + case aStyle of + gsHorLines: aStyle := gsVerLines; + gsVerLines: aStyle := gsHorLines; + end; + if aHorizontal then begin PaintRect.Left := 0; PaintRect.Top := FBevelTop; @@ -210,7 +305,7 @@ PaintRect.Right := Width else PaintRect.Bottom := Height; - Canvas.Frame3D(PaintRect, 1, aBevel); + PaintBevel; exit; end; @@ -238,7 +333,7 @@ PaintRect.Right := aRight else PaintRect.Bottom := aRight; - Canvas.Frame3D(PaintRect, 1, aBevel); + PaintBevel; end; if aIndent > 0 then inc(aIndent, FCaptionSpacing); @@ -255,7 +350,7 @@ PaintRect.Right := FBevelTop + FBevelHeight; PaintRect.Bottom := Height; end; - Canvas.Frame3D(PaintRect, 1, aBevel); + PaintBevel; Canvas.Brush.Style := bsClear; j := Max((FBevelHeight - FTextExtent.cy) div 2, 0); diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/checkboxthemed.xml lazarus-1.6+dfsg/components/lazcontrols/docs/checkboxthemed.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/checkboxthemed.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/checkboxthemed.xml 2015-06-01 23:04:27.000000000 +0000 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="CheckBoxThemed"><element name="TCheckBoxThemed"><short>Custom drawn checkbox, planned to be used in Object Inspector boolean editor.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/dividerbevel.xml lazarus-1.6+dfsg/components/lazcontrols/docs/dividerbevel.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/dividerbevel.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/dividerbevel.xml 2015-06-01 23:04:27.000000000 +0000 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="DividerBevel"><element name="TDividerBevel"><short>Line with text in the middle, used as a divider or header.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/extendednotebook.xml lazarus-1.6+dfsg/components/lazcontrols/docs/extendednotebook.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/extendednotebook.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/extendednotebook.xml 2015-06-01 23:04:27.000000000 +0000 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="ExtendedNotebook"><element name="TExtendedNotebook"><short>ToDo: Explain TExtendedNotebook.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/listfilteredit.xml lazarus-1.6+dfsg/components/lazcontrols/docs/listfilteredit.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/listfilteredit.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/listfilteredit.xml 2015-06-02 11:59:42.000000000 +0000 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="ListFilterEdit"><element name="TListFilterEdit"><short>Filter for an associated ListBox.</short> + </element><element name="TListFilterEdit.FilteredListbox"><short>The associated Listbox.</short> + </element> + <element name="TListFilterEdit.SelectionList"><short>List of selected items. They are restored after filtering.</short> + </element><element name="TListFilterEdit.Items"><short>Maintains the data which is filtered and shown in the Listbox.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/listviewfilteredit.xml lazarus-1.6+dfsg/components/lazcontrols/docs/listviewfilteredit.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/listviewfilteredit.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/listviewfilteredit.xml 2015-06-02 11:59:42.000000000 +0000 @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="ListViewFilterEdit"><element name="TListViewFilterEdit"><short>Filter for an associated ListView.</short> + </element><element name="TListViewFilterEdit.FilteredListview"><short>The associated ListView.</short> + </element> + <element name="TListViewFilterEdit.ByAllFields"><short>Use all ListView fields when searching filter matches. Otherwise just the first field (ListView caption) is used.</short> + </element><element name="TListViewFilterEdit.Items"><short>Maintains the data which is filtered and shown in the ListView.</short> + </element><element name="TListViewFilterEdit.SelectionList"><short>List of selected items. They are restored after filtering.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/lvlgraphctrl.xml lazarus-1.6+dfsg/components/lazcontrols/docs/lvlgraphctrl.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/lvlgraphctrl.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/lvlgraphctrl.xml 2015-06-01 23:04:27.000000000 +0000 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="LvlGraphCtrl"><element name="TLvlGraphControl"><short>ToDo: Explain TLvlGraphControl.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/shortpathedit.xml lazarus-1.6+dfsg/components/lazcontrols/docs/shortpathedit.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/shortpathedit.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/shortpathedit.xml 2015-06-01 23:04:27.000000000 +0000 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="ShortPathEdit"><element name="TShortPathEdit"><short>ToDo: Explain TShortPathEdit.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/docs/treefilteredit.xml lazarus-1.6+dfsg/components/lazcontrols/docs/treefilteredit.xml --- lazarus-1.4.4+dfsg/components/lazcontrols/docs/treefilteredit.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/docs/treefilteredit.xml 2015-06-02 11:59:42.000000000 +0000 @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fpdoc-descriptions><package name="LazControls"><module name="TreeFilterEdit"><element name="TTreeFilterEdit"><short>Filter for an associated TreeView.</short> + <descr>This control has 2 different operation modes. One mode maintains and filters sub-items of root-nodes in a tree, another mode filters a whole existing tree using TreeNode.Visible property. + +<b>Mode 1</b>: Sub-branches under root nodes +Items for each branch are maintained in TTreeFilterBranch class instance. + +<b>Mode 2</b>: A whole tree +When no branches are defined (no calls made to GetBranch), the TreeFilterEdit control filters the whole tree automatically. It uses each TreeNode's Visible property to show/hide it. +</descr> + </element><element name="TTreeFilterEdit.FilteredTreeview"><short>The associated TreeView.</short> + </element> + <element name="TTreeFilterEdit.SelectionList"><short>List of selected items. They are restored after filtering.</short> + </element><element name="TTreeFilterEdit.ShowDirHierarchy"><short>When a filtered text is a directory name, it is split and shown as a tree structure.</short><descr>This has effect only in the "sub-branches" mode. +The "whole tree" mode uses the existing tree nodes as is and only changes their visibility. +</descr> + </element><element name="TTreeFilterEdit.ExpandAllInitially"><short>Tree branches are expanded also initially.</short><descr>The branches are expanded in any case when the tree is filtered and matches are found. This setting only affects the initial state. +</descr> + </element><element name="TTreeFilterEdit.OnGetImageIndex"><short>ImageIndex can be queried while filtering based on the node data.</short> + </element><element name="TTreeFilterEdit.GetExistingBranch"><short>Get an existing branch for a given tree-node, or Nil if there is none.</short><descr>This can be used only with the "sub-branches" mode. +</descr> + </element><element name="TTreeFilterEdit.GetCleanBranch"><short>Get a new or existing branch with data cleared for a given tree-node.</short><descr>This can be used only with the "sub-branches" mode. In fact calling this method switches the filter into "sub-branches" mode. This is the way to add those branches. +</descr> + </element><element name="TTreeFilterBranch"><short>A branch associated with an existing TreeNode when the filter is used in "sub-branches" mode.</short> + </element><element name="TTreeFilterBranch.Create"><short>An existing TreeNode must be passed for the constructor.</short> + </element><element name="TTreeFilterBranch.AddNodeData"><short>Add a data item for this branch. Text, data reference and an associalted file name can be added.</short> + </element> + </module> + </package> +</fpdoc-descriptions> diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/lazcontrols.pas lazarus-1.6+dfsg/components/lazcontrols/lazcontrols.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/lazcontrols.pas 2014-12-10 00:46:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/lazcontrols.pas 2016-01-13 17:26:45.000000000 +0000 @@ -13,8 +13,6 @@ implementation -{$R *.res} - procedure Register; begin RegisterUnit('CheckBoxThemed', @CheckBoxThemed.Register); diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/listfilteredit.pas lazarus-1.6+dfsg/components/lazcontrols/listfilteredit.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/listfilteredit.pas 2014-12-10 00:46:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/listfilteredit.pas 2016-02-13 12:41:40.000000000 +0000 @@ -17,7 +17,8 @@ uses Classes, SysUtils, Forms, LResources, Graphics, Controls, StdCtrls, - LCLProc, LCLType, EditBtn, CheckLst, FileUtil, LazUTF8, AvgLvlTree; + LCLProc, LCLType, EditBtn, CheckLst, LazFileUtils, LazUTF8, AvgLvlTree, + Math; type @@ -36,12 +37,16 @@ fSortedData: TStringList; fCheckedItems: TStringMap; // Only needed for TCheckListBox function CompareFNs(AFilename1,AFilename2: string): integer; - function GetFirstSelected: Integer; procedure SetFilteredListbox(const AValue: TCustomListBox); - procedure UnselectAll; protected - procedure MoveNext; override; - procedure MovePrev; override; + procedure EditEnter; override; + procedure MoveTo(AIndex: Integer; ASelect: Boolean); + procedure MoveNext(ASelect: Boolean = False); override; + procedure MovePrev(ASelect: Boolean = False); override; + procedure MovePageUp(ASelect: Boolean = False); override; + procedure MovePageDown(ASelect: Boolean = False); override; + procedure MoveHome(ASelect: Boolean = False); override; + procedure MoveEnd(ASelect: Boolean = False); override; function ReturnKeyHandled: Boolean; override; procedure SortAndFilter; override; procedure ApplyFilterCore; override; @@ -56,7 +61,6 @@ public property SelectionList: TStringList read fSelectionList; property Items: TStringList read fOriginalData; - property Data: TStringList read fOriginalData; deprecated 'Use property Items instead'; published property FilteredListbox: TCustomListBox read fFilteredListbox write SetFilteredListbox; end; @@ -94,6 +98,14 @@ inherited Destroy; end; +procedure TListFilterEdit.EditEnter; +begin + inherited EditEnter; + Exit; + if (fFilteredListbox.SelCount = 0) and (fFilteredListbox.Count > 0) then + fFilteredListbox.Selected[0] := True; +end; + procedure TListFilterEdit.RemoveItem(AItem: string); var i: Integer; @@ -114,6 +126,18 @@ fCheckedItems.Remove(AItem); end; +procedure TListFilterEdit.MoveEnd(ASelect: Boolean); +begin + if fFilteredListbox.Items.Count > 0 then + MoveTo(fFilteredListbox.Items.Count-1, ASelect); +end; + +procedure TListFilterEdit.MoveHome(ASelect: Boolean); +begin + if fFilteredListbox.Items.Count > 0 then + MoveTo(0, ASelect); +end; + function TListFilterEdit.GetDefaultGlyph: TBitmap; begin Result := ListFilterGlyph; @@ -142,11 +166,12 @@ // Copy data from fOriginalData to fSortedData in sorted order var Origi, i: Integer; - s: string; + s, FilterLC: string; Pass, Done: Boolean; begin Done:=False; fSortedData.Clear; + FilterLC := UTF8LowerCase(Filter); for Origi:=0 to fOriginalData.Count-1 do begin s:=fOriginalData[Origi]; // Filter with event handler if there is one. @@ -156,7 +181,7 @@ Pass:=False; // Filter by item's title text if needed. if not (Pass or Done) then - Pass:=(Filter='') or (Pos(Filter,UTF8LowerCase(s))>0); + Pass:=(FilterLC='') or (Pos(FilterLC,UTF8LowerCase(s))>0); if Pass then begin i:=fSortedData.Count-1; // Always sort the data. while i>=0 do begin @@ -226,49 +251,99 @@ end; end; -function TListFilterEdit.GetFirstSelected: Integer; +procedure TListFilterEdit.MoveNext(ASelect: Boolean); var i: Integer; begin - Result := -1; - for i := 0 to fFilteredListbox.Count - 1 do - if fFilteredListbox.Selected[i] then - Exit(i); + if fFilteredListbox.Count = 0 then Exit; + if (fFilteredListbox.ItemIndex=0) and not fFilteredListbox.Selected[0] then + i := 0 + else + i := fFilteredListbox.ItemIndex + 1; + if i >= fFilteredListbox.Count then + i := fFilteredListbox.Count-1; + MoveTo(i, ASelect); end; -procedure TListFilterEdit.UnselectAll; +procedure TListFilterEdit.MovePrev(ASelect: Boolean); var i: Integer; begin - for i := 0 to fFilteredListbox.Count - 1 do - fFilteredListbox.Selected[i] := False; + if fFilteredListbox.Count = 0 then Exit; + i := fFilteredListbox.ItemIndex - 1; + if i < 0 then + i := 0; + MoveTo(i, ASelect); end; -procedure TListFilterEdit.MoveNext; +procedure TListFilterEdit.MovePageDown(ASelect: Boolean); var - i: Integer; + i, ih: Integer; begin - i := GetFirstSelected + 1; - if fFilteredListbox.Count > 0 then begin - UnselectAll; - if i < fFilteredListbox.Count then - fFilteredListbox.Selected[i] := True - else - fFilteredListbox.Selected[0] := True; - end; + if fFilteredListbox.Items.Count = 0 then + Exit; + ih := fFilteredListbox.ItemHeight; + if ih = 0 then //fFilteredListbox.ItemHeight is always zero. Why? + ih := 22; + i := fFilteredListbox.ItemIndex + Pred(fFilteredListbox.ClientHeight div ih); + if (i < 0) or (i >= fFilteredListbox.Items.Count) then + i := fFilteredListbox.Items.Count-1; + MoveTo(i, ASelect); end; -procedure TListFilterEdit.MovePrev; +procedure TListFilterEdit.MovePageUp(ASelect: Boolean); var - i: Integer; + i, ih: Integer; begin - i := GetFirstSelected - 1; - if fFilteredListbox.Count > 0 then begin - UnselectAll; - if i >= 0 then - fFilteredListbox.Selected[i] := True - else - fFilteredListbox.Selected[fFilteredListbox.Count-1] := True; + if fFilteredListbox.Items.Count = 0 then + Exit; + ih := fFilteredListbox.ItemHeight; + if ih = 0 then + ih := 22; + i := fFilteredListbox.ItemIndex - Pred(fFilteredListbox.ClientHeight div ih); + if (i < 0) or (i >= fFilteredListbox.Items.Count) then + i := 0; + MoveTo(i, ASelect); +end; + +procedure TListFilterEdit.MoveTo(AIndex: Integer; ASelect: Boolean); +var + i, xOldItemIndex, xSelStart, xSelEnd: Integer; +begin + fFilteredListbox.LockSelectionChange; + fFilteredListbox.Items.BeginUpdate; + try + if ASelect and fFilteredListbox.MultiSelect then + begin + xOldItemIndex := fFilteredListbox.ItemIndex; + xSelStart := xOldItemIndex; + xSelEnd := xOldItemIndex; + while (xSelStart>=0) and fFilteredListbox.Selected[xSelStart] do + Dec(xSelStart); + while (xSelEnd<fFilteredListbox.Count) and fFilteredListbox.Selected[xSelEnd] do + Inc(xSelEnd); + fFilteredListbox.ItemIndex := AIndex; + for i := Min(AIndex+1, xSelStart+1) to Max(AIndex-1, xSelEnd-1) do + fFilteredListbox.Selected[i] := True; + //Win32 sets ItemIndex to the last Selected[?] := True - in contrast to Gtk2 -> set selected again to work on all widgetsets + fFilteredListbox.Selected[AIndex] := True; + end else + begin + fFilteredListbox.ItemIndex := AIndex; + fFilteredListbox.Selected[AIndex] := True; + end; + Assert(fFilteredListbox.ItemFullyVisible(AIndex), 'TListFilterEdit.MoveTo: Item not fully visible'); +{ if not fFilteredListbox.ItemFullyVisible(AIndex) then + begin + if fFilteredListbox.TopIndex < AIndex then + fFilteredListbox.TopIndex := AIndex - Pred(fFilteredListbox.ClientHeight div fFilteredListbox.ItemHeight) + else + fFilteredListbox.TopIndex := AIndex; + end; +} + finally + fFilteredListbox.UnlockSelectionChange; + fFilteredListbox.Items.EndUpdate; end; end; diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/listviewfilteredit.pas lazarus-1.6+dfsg/components/lazcontrols/listviewfilteredit.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/listviewfilteredit.pas 2015-04-29 21:37:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/listviewfilteredit.pas 2015-11-14 09:22:00.000000000 +0000 @@ -17,7 +17,7 @@ uses Classes, SysUtils, Forms, LResources, Graphics, Controls, ComCtrls, - LCLProc, LCLType, EditBtn, FileUtil, LazUTF8, fgl; + LCLProc, LCLType, EditBtn, FileUtil, LazUTF8, fgl, Math; type @@ -43,8 +43,14 @@ function MatchesFilter(aData: TStringArray): Boolean; procedure SetFilteredListview(const AValue: TCustomListView); protected - procedure MoveNext; override; - procedure MovePrev; override; + procedure MoveTo(AIndex: Integer; ASelect: Boolean); + function GetLastSelectedIndex: Integer; + procedure MoveNext(ASelect: Boolean = False); override; + procedure MovePrev(ASelect: Boolean = False); override; + procedure MovePageUp(ASelect: Boolean = False); override; + procedure MovePageDown(ASelect: Boolean = False); override; + procedure MoveHome(ASelect: Boolean = False); override; + procedure MoveEnd(ASelect: Boolean = False); override; function ReturnKeyHandled: Boolean; override; procedure SortAndFilter; override; procedure ApplyFilterCore; override; @@ -97,6 +103,14 @@ Result := ListFilterGlyph; end; +function TListViewFilterEdit.GetLastSelectedIndex: Integer; +begin + if fFilteredListview.LastSelected<>nil then + Result := fFilteredListview.LastSelected.Index + else + Result := -1; +end; + function ListItem2Data(AItem: TListItem): TStringArray; var i: Integer; @@ -130,21 +144,37 @@ function TListViewFilterEdit.MatchesFilter(aData: TStringArray): Boolean; var i, EndInd: Integer; + FilterLC: string; begin if Filter='' then Exit(True); + FilterLC := UTF8LowerCase(Filter); if fByAllFields then EndInd := Pred(Length(aData)) else EndInd := 0; for i := 0 to EndInd do begin - Result := Pos(Filter,UTF8LowerCase(aData[i]))>0; + Result := Pos(FilterLC,UTF8LowerCase(aData[i]))>0; if Result then Exit; end; Result := False; end; +procedure TListViewFilterEdit.MoveEnd(ASelect: Boolean); +begin + if fFilteredListview.Items.Count = 0 then + Exit; + MoveTo(fFilteredListview.Items.Count-1, ASelect); +end; + +procedure TListViewFilterEdit.MoveHome(ASelect: Boolean); +begin + if fFilteredListview.Items.Count = 0 then + Exit; + MoveTo(0, ASelect); +end; + procedure TListViewFilterEdit.SortAndFilter; // Copy data from fOriginalData to fSortedData in sorted order var @@ -196,29 +226,77 @@ fFilteredListview.Items[i].Selected:=True; end; -procedure TListViewFilterEdit.MoveNext; +procedure TListViewFilterEdit.MoveNext(ASelect: Boolean); var i: Integer; begin - i := fFilteredListview.ItemIndex + 1; - if fFilteredListview.Items.Count > 0 then begin - if i < fFilteredListview.Items.Count then - fFilteredListview.ItemIndex := i - else - fFilteredListview.ItemIndex := 0; - end; + if fFilteredListview.Items.Count = 0 then Exit; + i := GetLastSelectedIndex + 1; + if i >= fFilteredListview.Items.Count then + i := fFilteredListview.Items.Count-1; + MoveTo(i, ASelect); +end; + +procedure TListViewFilterEdit.MovePageDown(ASelect: Boolean); +var + I: Integer; +begin + if fFilteredListview.Items.Count = 0 then + Exit; + I := GetLastSelectedIndex + fFilteredListview.VisibleRowCount; + if (I < 0) or (I >= fFilteredListview.Items.Count) then + I := fFilteredListview.Items.Count-1; + MoveTo(I, ASelect); +end; + +procedure TListViewFilterEdit.MovePageUp(ASelect: Boolean); +var + I: Integer; +begin + if fFilteredListview.Items.Count = 0 then + Exit; + I := GetLastSelectedIndex - fFilteredListview.VisibleRowCount; + if (I < 0) or (I >= fFilteredListview.Items.Count) then + I := 0; + MoveTo(I, ASelect); end; -procedure TListViewFilterEdit.MovePrev; +procedure TListViewFilterEdit.MovePrev(ASelect: Boolean); var i: Integer; begin - i := fFilteredListview.ItemIndex - 1; - if fFilteredListview.Items.Count > 0 then begin - if i >= 0 then - fFilteredListview.ItemIndex := i - else - fFilteredListview.ItemIndex := fFilteredListview.Items.Count-1; + if fFilteredListview.Items.Count = 0 then Exit; + i := GetLastSelectedIndex - 1; + if i < 0 then + i := 0; + MoveTo(i, ASelect); +end; + +procedure TListViewFilterEdit.MoveTo(AIndex: Integer; ASelect: Boolean); +var + I: Integer; +begin + fFilteredListview.BeginUpdate; + try + if ASelect and fFilteredListview.MultiSelect then + begin + if fFilteredListview.ItemIndex < AIndex then + for I := Max(0, fFilteredListview.ItemIndex) to AIndex do + fFilteredListview.Items[I].Selected := True + else + for I := Max(0, fFilteredListview.ItemIndex) downto AIndex do + fFilteredListview.Items[I].Selected := True; + fFilteredListview.ItemIndex := AIndex; + end else + begin + fFilteredListview.ClearSelection; + fFilteredListview.ItemIndex := AIndex; + end; + + if fFilteredListview.LastSelected<>nil then + fFilteredListview.LastSelected.MakeVisible(False); + finally + fFilteredListview.EndUpdate; end; end; diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/lvlgraphctrl.pas lazarus-1.6+dfsg/components/lazcontrols/lvlgraphctrl.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/lvlgraphctrl.pas 2014-11-19 16:33:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/lvlgraphctrl.pas 2015-03-24 17:52:23.000000000 +0000 @@ -2378,7 +2378,7 @@ for j:=0 to Level.Count-1 do if Level[j].Visible then LevelTxtWidths[i]:=Max(LevelTxtWidths[i], Canvas.TextWidth(Level[j].Caption)); - + p:=0; // Prevent compiler warning. if i=0 then begin // first level case NodeStyle.CaptionPosition of @@ -3349,6 +3349,7 @@ Gap:=0; DrawHeight:=HardMaxTotal; for j:=0 to Level.Count-1 do begin + // ToDo: Node is probably uninitialized. LvlWeight+=Max(Node.InWeight,Node.OutWeight); Gap+=NodeGapAbove+NodeGapBelow; end; diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/shortpathedit.pas lazarus-1.6+dfsg/components/lazcontrols/shortpathedit.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/shortpathedit.pas 2013-09-29 10:47:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/shortpathedit.pas 2016-01-13 17:26:45.000000000 +0000 @@ -2,10 +2,12 @@ {$mode objfpc}{$H+} +{$R lazcontrols.res} + interface uses - Classes, SysUtils, EditBtn, LResources, Dialogs, FileUtil; + Classes, SysUtils, EditBtn, LResources, Dialogs, LazFileUtils; type diff -Nru lazarus-1.4.4+dfsg/components/lazcontrols/treefilteredit.pas lazarus-1.6+dfsg/components/lazcontrols/treefilteredit.pas --- lazarus-1.4.4+dfsg/components/lazcontrols/treefilteredit.pas 2014-12-06 03:44:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazcontrols/treefilteredit.pas 2016-01-18 23:09:29.000000000 +0000 @@ -17,7 +17,7 @@ uses Classes, SysUtils, Forms, Graphics, Controls, ComCtrls, EditBtn, - LResources, LCLType, LCLProc, FileUtil, LazUTF8, AvgLvlTree, fgl; + LResources, LCLType, LCLProc, LazFileUtils, LazUTF8, AvgLvlTree, fgl; type TImageIndexEvent = function (Str: String; Data: TObject; @@ -55,7 +55,9 @@ function GetData(AIndex: integer): TObject; procedure ClearNodeData; procedure InvalidateBranch; - procedure MoveFile(CurIndex, NewIndex: integer); + procedure Move(CurIndex, NewIndex: integer); + public + property Items: TStringList read fOriginalData; end; TBranchList = specialize TFPGObjectList<TTreeFilterBranch>; @@ -71,7 +73,8 @@ fBranches: TBranchList; // Items under these nodes can be sorted. fExpandAllInitially: Boolean; // Expand all levels when searched for the first time. fIsFirstTime: Boolean; // Needed for fExpandAllInitially. - fTempSelected: Boolean; + // First node that matched the filter. Will be selected if old selection is hidden. + fFirstPassedNode: TTreeNode; fOnGetImageIndex: TImageIndexEvent; procedure SetFilteredTreeview(const AValue: TCustomTreeview); procedure SetShowDirHierarchy(const AValue: Boolean); @@ -79,8 +82,12 @@ procedure OnBeforeTreeDestroy(Sender: TObject); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; - procedure MoveNext; override; - procedure MovePrev; override; + procedure MoveNext(ASelect: Boolean = False); override; + procedure MovePrev(ASelect: Boolean = False); override; + procedure MovePageUp(ASelect: Boolean = False); override; + procedure MovePageDown(ASelect: Boolean = False); override; + procedure MoveHome(ASelect: Boolean = False); override; + procedure MoveEnd(ASelect: Boolean = False); override; function ReturnKeyHandled: Boolean; override; procedure SortAndFilter; override; procedure ApplyFilterCore; override; @@ -392,7 +399,7 @@ ApplyFilter; end; -procedure TTreeFilterBranch.MoveFile(CurIndex, NewIndex: integer); +procedure TTreeFilterBranch.Move(CurIndex, NewIndex: integer); begin fOriginalData.Move(CurIndex, NewIndex); end; @@ -461,9 +468,11 @@ // Returns True if Node or its siblings or child nodes have visible items. var Pass, Done: Boolean; + FilterLC: string; begin Result:=False; Done:=False; + FilterLC:=UTF8LowerCase(Filter); while Node<>nil do begin // Call OnFilterItem handler. @@ -473,7 +482,9 @@ Pass:=False; // Filter by item's title text if needed. if not (Pass or Done) then - Pass:=(Filter='') or (Pos(Filter,UTF8LowerCase(Node.Text))>0); + Pass:=(FilterLC='') or (Pos(FilterLC,UTF8LowerCase(Node.Text))>0); + if Pass and (fFirstPassedNode=Nil) then + fFirstPassedNode:=Node; // Recursive call for child nodes. Node.Visible:=FilterTree(Node.GetFirstChild) or Pass; if Node.Visible then @@ -520,7 +531,8 @@ fBranches[i].ApplyFilter; end else begin // Apply filter for the whole tree. - if fExpandAllInitially and fIsFirstTime then begin + if fExpandAllInitially and fIsFirstTime then + begin fFilteredTreeview.FullExpand; fIsFirstTime := False; end; @@ -535,33 +547,44 @@ ANode: TTreeNode; begin if fFilteredTreeview = nil then Exit; + fFirstPassedNode:=Nil; ANode:=fFilteredTreeview.Selected; if (ANode=nil) then Exit; - if fTempSelected and (ANode=fFilteredTreeview.Items.GetFirstVisibleNode) then Exit; + if ANode=fFilteredTreeview.Items.GetFirstVisibleNode then Exit; fSelectionList.Clear; // Clear old selection only if there is new one. fSelectionList.Add(ANode.Text); end; procedure TTreeFilterEdit.RestoreSelection; var - ANode: TTreeNode; + ANode, SelectNode: TTreeNode; CurText: string; - i: Integer; begin - fTempSelected:=fSelectionList.Count>0; - for i:=fSelectionList.Count-1 downto 0 do begin - CurText:=fSelectionList[i]; + if fFilteredTreeview=nil then Exit; + + SelectNode:=Nil; + // ToDo: support more than one items or otherwise clean the code. + Assert(fSelectionList.Count < 2, + 'TTreeFilterEdit.RestoreSelection: fSelectionList has more than one items.'); + if fSelectionList.Count > 0 then + begin + CurText:=fSelectionList[0]; ANode:=fFilteredTreeview.Items.GetFirstVisibleNode; while (ANode<>nil) and (ANode.Text<>CurText) do ANode:=ANode.GetNextVisible; - if ANode<>nil then begin // Selection found - fFilteredTreeview.Selected:=ANode; - fSelectionList.Delete(i); - fTempSelected:=False; + if Assigned(ANode) then // Selection found + begin + SelectNode:=ANode; + fSelectionList.Delete(0); end; end; - if fTempSelected then // Original selection will be restored later. - fFilteredTreeview.Selected:=fFilteredTreeview.Items.GetFirstVisibleNode; + if Assigned(SelectNode) then // Original selection will be restored later. + ANode:=SelectNode + else if Assigned(fFirstPassedNode) then + ANode:=fFirstPassedNode + else + ANode:=fFilteredTreeview.Items.GetFirstVisibleNode; + fFilteredTreeview.Selected:=ANode; end; function TTreeFilterEdit.GetExistingBranch(ARootNode: TTreeNode): TTreeFilterBranch; @@ -572,12 +595,23 @@ Result := Nil; if not Assigned(fBranches) then Exit; for i := 0 to fBranches.Count-1 do - if fBranches[i].fRootNode = ARootNode then begin + if fBranches[i].fRootNode = ARootNode then + begin Result := fBranches[i]; Break; end; end; +procedure TTreeFilterEdit.MoveEnd(ASelect: Boolean); +begin + fFilteredTreeview.MoveEnd(ASelect); +end; + +procedure TTreeFilterEdit.MoveHome(ASelect: Boolean); +begin + fFilteredTreeview.MoveHome(ASelect); +end; + function TTreeFilterEdit.GetCleanBranch(ARootNode: TTreeNode): TTreeFilterBranch; // Get a new or existing branch with data cleared for a given tree-node. begin @@ -607,14 +641,24 @@ end; end; -procedure TTreeFilterEdit.MoveNext; +procedure TTreeFilterEdit.MoveNext(ASelect: Boolean); +begin + fFilteredTreeview.MoveToNextNode(ASelect); +end; + +procedure TTreeFilterEdit.MovePageDown(ASelect: Boolean); +begin + fFilteredTreeview.MovePageDown(ASelect); +end; + +procedure TTreeFilterEdit.MovePageUp(ASelect: Boolean); begin - fFilteredTreeview.MoveToNextNode; + fFilteredTreeview.MovePageUp(ASelect); end; -procedure TTreeFilterEdit.MovePrev; +procedure TTreeFilterEdit.MovePrev(ASelect: Boolean); begin - fFilteredTreeview.MoveToPrevNode; + fFilteredTreeview.MoveToPrevNode(ASelect); end; function TTreeFilterEdit.ReturnKeyHandled: Boolean; diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/cmdlinedebugger.pp lazarus-1.6+dfsg/components/lazdebuggergdbmi/cmdlinedebugger.pp --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/cmdlinedebugger.pp 2015-03-21 13:03:07.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/cmdlinedebugger.pp 2015-03-20 20:13:54.000000000 +0000 @@ -1,11 +1,11 @@ -{ $Id: cmdlinedebugger.pp 48448 2015-03-21 13:03:07Z martin $ } +{ $Id: cmdlinedebugger.pp 48437 2015-03-20 20:13:54Z martin $ } { ---------------------------------------------- CMDLineDebugger.pp - Debugger class for commandline debuggers ---------------------------------------------- @created(Wed Feb 28st WET 2001) - @lastmod($Date: 2015-03-21 14:03:07 +0100 (Sa, 21 Mär 2015) $) + @lastmod($Date: 2015-03-20 21:13:54 +0100 (Fr, 20 Mär 2015) $) @author(Marc Weustink <marc@@lazarus.dommelstein.net>) This unit contains the Commandline debugger class for external commandline diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/debugutils.pp lazarus-1.6+dfsg/components/lazdebuggergdbmi/debugutils.pp --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/debugutils.pp 2015-03-05 22:58:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/debugutils.pp 2015-03-06 00:36:52.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: debugutils.pp 48149 2015-03-05 22:58:52Z martin $ } +{ $Id: debugutils.pp 48151 2015-03-06 00:36:52Z martin $ } { ------------------------------------------- dbgutils.pp - Debugger utility routines ------------------------------------------- @created(Sun Apr 28st WET 2002) - @lastmod($Date: 2015-03-05 23:58:52 +0100 (Do, 05 Mär 2015) $) + @lastmod($Date: 2015-03-06 01:36:52 +0100 (Fr, 06 Mär 2015) $) @author(Marc Weustink <marc@@dommelstein.net>) This unit contains a collection of debugger support routines. @@ -35,7 +35,7 @@ interface uses - DbgIntfBaseTypes, Classes, LCLProc; + DbgIntfBaseTypes, Classes, LCLProc, LazUTF8; type @@ -58,6 +58,7 @@ function ParseGDBString(const AValue: String): String; // remove quotes(') and convert #dd chars: #9'ab'#9'x' function GetLeadingAddr(var AValue: String; out AnAddr: TDBGPtr; ARemoveFromValue: Boolean = False): Boolean; function UpperCaseSymbols(s: string): string; +function ConvertPascalExpression(var AExpression: String): Boolean; procedure SmartWriteln(const s: string); @@ -460,6 +461,170 @@ end; end; +function ConvertPascalExpression(var AExpression: String): Boolean; +var + QuoteChar, R: String; + P: PChar; + InString, WasString, IsText, ValIsChar: Boolean; + n: Integer; + ValMode: Char; + Value: QWord; + + function AppendValue: Boolean; + var + S: String; + begin + if ValMode = #0 then Exit(True); + if not (ValMode in ['h', 'd', 'o', 'b']) then Exit(False); + + if ValIsChar + then begin + if not IsText + then begin + R := R + '"'; + IsText := True; + end; + R := R + '\' + OctStr(Value, 3); + ValIsChar := False; + end + else begin + if IsText + then begin + R := R + '"'; + IsText := False; + end; + Str(Value, S); + R := R + S; + end; + Result := True; + ValMode := #0; + end; + +begin + R := ''; + Instring := False; + WasString := False; + IsText := False; + QuoteChar := '"'; + ValIsChar := False; + ValMode := #0; + Value := 0; + + P := PChar(AExpression); + for n := 1 to Length(AExpression) do + begin + if InString + then begin + case P^ of + '''': begin + InString := False; + // delay setting terminating ", more characters defined through # may follow + WasString := True; + end; + #0..#31, + '\', + #128..#255: begin + R := R + '\' + OctStr(Ord(P^), 3); + end; + else begin + if p^ = QuoteChar then + R := R + '\' + OctStr(Ord(P^), 3) + else + R := R + P^; + end; + end; + Inc(P); + Continue; + end; + + case P^ of + '''': begin + if WasString + then begin + R := R + '\' + OctStr(Ord(''''), 3) + end + else begin + if not AppendValue then Exit(False); + if not IsText + then begin + QuoteChar := '"'; + // single CHAR ? + if ( ((p+1)^ <> '''') and ((p+2)^ = '''') and not((p+3)^ in ['#', '''']) ) or + ( ((p+1)^ = '''') and ((p+2)^ = '''') and ((p+3)^ = '''') and not((p+4)^ in ['#', '''']) ) + then + QuoteChar := ''''; + R := R + QuoteChar; + end + end; + IsText := True; + InString := True; + end; + '#': begin + if not AppendValue then Exit(False); + Value := 0; + ValMode := 'D'; + ValIsChar := True; + end; + '$', '&', '%': begin + if not (ValMode in [#0, 'D']) then Exit(False); + ValMode := P^; + end; + else + case ValMode of + 'D', 'd': begin + case P^ of + '0'..'9': Value := Value * 10 + Ord(P^) - Ord('0'); + else + Exit(False); + end; + ValMode := 'd'; + end; + '$', 'h': begin + case P^ of + '0'..'9': Value := Value * 16 + Ord(P^) - Ord('0'); + 'a'..'f': Value := Value * 16 + Ord(P^) - Ord('a'); + 'A'..'F': Value := Value * 16 + Ord(P^) - Ord('A'); + else + Exit(False); + end; + ValMode := 'h'; + end; + '&', 'o': begin + case P^ of + '0'..'7': Value := Value * 8 + Ord(P^) - Ord('0'); + else + Exit(False); + end; + ValMode := 'o'; + end; + '%', 'b': begin + case P^ of + '0': Value := Value shl 1; + '1': Value := Value shl 1 or 1; + else + Exit(False); + end; + ValMode := 'b'; + end; + else + if IsText + then begin + R := R + QuoteChar; + IsText := False; + end; + R := R + P^; + end; + end; + WasString := False; + Inc(p); + end; + + if not AppendValue then Exit(False); + if IsText then R := R + QuoteChar; + AExpression := R; + Result := True; +end; + function DeleteEscapeChars(const AValue: String; const AEscapeChar: Char): String; var cnt, len: Integer; diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbmidebugger.pp lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbmidebugger.pp --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbmidebugger.pp 2015-06-30 15:51:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbmidebugger.pp 2015-12-09 23:00:11.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: gdbmidebugger.pp 49477 2015-06-30 15:51:51Z martin $ } +{ $Id: gdbmidebugger.pp 50728 2015-12-09 23:00:11Z mattias $ } { ---------------------------------------------- GDBDebugger.pp - Debugger class forGDB ---------------------------------------------- @created(Wed Feb 23rd WET 2002) - @lastmod($Date: 2015-06-30 17:51:51 +0200 (Di, 30 Jun 2015) $) + @lastmod($Date: 2015-12-10 00:00:11 +0100 (Do, 10 Dez 2015) $) @author(Marc Weustink <marc@@lazarus.dommelstein.net>) This unit contains debugger class for the GDB/MI debugger. @@ -34,6 +34,14 @@ {$mode objfpc} {$H+} +{$ifndef VER2} + {$define disassemblernestedproc} +{$endif VER2} + +{$ifdef disassemblernestedproc} + {$modeswitch nestedprocvars} +{$endif disassemblernestedproc} + {$IFDEF linux} {$DEFINE DBG_ENABLE_TERMINAL} {$ENDIF} interface @@ -45,11 +53,14 @@ {$IFDEF UNIX} Unix,BaseUnix,termio, {$ENDIF} - Classes, SysUtils, strutils, Controls, Maps, Variants, FileUtil, Dialogs, - BaseIDEIntf, LCLProc, LazClasses, LazLoggerBase, math, + Classes, SysUtils, strutils, math, Variants, + Controls, Maps, FileUtil, Dialogs, Forms, + BaseIDEIntf, LCLProc, LazUTF8, LazClasses, LazLoggerBase, + {$IFDEF Darwin} + LazFileUtils, + {$ENDIF} DebugUtils, GDBTypeInfo, GDBMIDebugInstructions, GDBMIMiscClasses, - DbgIntfBaseTypes, DbgIntfDebuggerBase, GdbmiStringConstants, - Forms; + DbgIntfBaseTypes, DbgIntfDebuggerBase, GdbmiStringConstants; type TGDBMIProgramInfo = record @@ -94,7 +105,9 @@ TGDBMIDebuggerFlags = set of ( dfImplicidTypes, // Debugger supports implicit types (^Type) dfForceBreak, // Debugger supports insertion of not yet known brekpoints - dfForceBreakDetected + dfForceBreakDetected, + dfSetBreakFailed, + dfSetBreakPending ); // Target info @@ -120,11 +133,15 @@ TGDBMIUseNoneMiRunCmdsState = ( gdnmNever, gdnmAlways, gdnmFallback ); + TGDBMIWarnOnSetBreakpointError = ( + gdbwNone, gdbwAll, gdbwUserBreakPoint, gdbwExceptionsAndRunError + ); { TGDBMIDebuggerPropertiesBase } TGDBMIDebuggerPropertiesBase = class(TDebuggerProperties) private + FDisableForcedBreakpoint: Boolean; FDisableLoadSymbolsForLibraries: Boolean; FEncodeCurrentDirPath: TGDBMIDebuggerFilenameEncoding; FEncodeExeFileName: TGDBMIDebuggerFilenameEncoding; @@ -137,6 +154,7 @@ FTimeoutForEval: Integer; FUseAsyncCommandMode: Boolean; FUseNoneMiRunCommands: TGDBMIUseNoneMiRunCmdsState; + FWarnOnSetBreakpointError: TGDBMIWarnOnSetBreakpointError; FWarnOnInternalError: Boolean; FWarnOnTimeOut: Boolean; procedure SetMaxDisplayLengthForString(AValue: Integer); @@ -165,6 +183,10 @@ read FUseNoneMiRunCommands write FUseNoneMiRunCommands default gdnmFallback; property DisableLoadSymbolsForLibraries: Boolean read FDisableLoadSymbolsForLibraries write FDisableLoadSymbolsForLibraries default False; + property DisableForcedBreakpoint: Boolean read FDisableForcedBreakpoint + write FDisableForcedBreakpoint default False; + property WarnOnSetBreakpointError: TGDBMIWarnOnSetBreakpointError read FWarnOnSetBreakpointError + write FWarnOnSetBreakpointError default gdbwAll; end; TGDBMIDebuggerProperties = class(TGDBMIDebuggerPropertiesBase) @@ -183,6 +205,8 @@ property UseAsyncCommandMode; property UseNoneMiRunCommands; property DisableLoadSymbolsForLibraries; + property DisableForcedBreakpoint; + //property WarnOnSetBreakpointError; end; TGDBMIDebugger = class; @@ -567,51 +591,67 @@ { TGDBMIInternalBreakPoint } TGDBMIInternalBreakPoint = class + private type + TClearOpt = (coClearIfSet, coKeepIfSet); + TBlockOpt = (boNone, boBlock, boUnblock); + TInternalBreakLocation = (iblNamed, iblAddrOfNamed, iblCustomAddr, + iblAddOffset, iblFileLine); + TInternalBreakData = record + BreakGdbId: Integer; + BreakAddr: TDBGPtr; + BreakFunction: String; + BreakFile: String; + BreakLine: String; + end; private + FBreaks: array[TInternalBreakLocation] of TInternalBreakData; + (* F...ID: -1 not set, -2 blocked + *) FEnabled: Boolean; - FLineOffsFunction: string; - // -break-insert name - FNameBreakID: Integer; - FNameBreakAddr: TDBGPtr; - // -break-insert *addr - FAddrBreakID: Integer; - FAddrBreakAddr: TDBGPtr; - // -break-insert *custom - FCustomID: Integer; - FCustomAddr: TDBGPtr; - // -break-insert +x - FLineOffsID: Integer; - FLineOffsAddr: TDBGPtr; - FMainAddrFound: TDBGPtr; - FName: string; + FName: string; // The (function) name of the location "main" or "FPC_RAISE" + FMainAddrFound: TDBGPtr; // The address found for this named location FUseForceFlag: Boolean; - procedure ClearName(ACmd: TGDBMIDebuggerCommand); - procedure ClearAddr(ACmd: TGDBMIDebuggerCommand); // Main-Addr - procedure ClearCustom(ACmd: TGDBMIDebuggerCommand); - procedure ClearLineOffs(ACmd: TGDBMIDebuggerCommand); - function BreakSet(ACmd: TGDBMIDebuggerCommand; ALoc: String; out AId: integer; - out AnAddr: TDBGPtr): Boolean; - function BreakSet(ACmd: TGDBMIDebuggerCommand; ALoc: String; out AId: integer; - out AnAddr: TDBGPtr; out AFuncName: string): Boolean; + function BreakSet(ACmd: TGDBMIDebuggerCommand; ABreakLoc: String; + ALoc: TInternalBreakLocation; + AClearIfSet: TClearOpt): Boolean; + function GetBreakAddr(ALoc: TInternalBreakLocation): TDBGPtr; + function GetBreakFile(ALoc: TInternalBreakLocation): String; + function GetBreakId(ALoc: TInternalBreakLocation): Integer; + function GetBreakLine(ALoc: TInternalBreakLocation): String; function GetInfoAddr(ACmd: TGDBMIDebuggerCommand): TDBGPtr; - procedure InternalSetAddr(ACmd: TGDBMIDebuggerCommand; AnAddr: TDBGPtr); + function HasBreakAtAddr(AnAddr: TDBGPtr): Boolean; + function HasBreakWithId(AnId: Integer): Boolean; + procedure InternalSetAddr(ACmd: TGDBMIDebuggerCommand; ALoc: TInternalBreakLocation; + AnAddr: TDBGPtr); + protected + procedure Clear(ACmd: TGDBMIDebuggerCommand; ALoc: TInternalBreakLocation; + ABlock: TBlockOpt = boNone); + property BreakId[ALoc: TInternalBreakLocation]: Integer read GetBreakId; + property BreakAddr[ALoc: TInternalBreakLocation]: TDBGPtr read GetBreakAddr; + property BreakFile[ALoc: TInternalBreakLocation]: String read GetBreakFile; + property BreakLine[ALoc: TInternalBreakLocation]: String read GetBreakLine; public constructor Create(AName: string); + procedure SetBoth(ACmd: TGDBMIDebuggerCommand); procedure SetByName(ACmd: TGDBMIDebuggerCommand); procedure SetByAddr(ACmd: TGDBMIDebuggerCommand; SetNamedOnFail: Boolean = False); procedure SetAtCustomAddr(ACmd: TGDBMIDebuggerCommand; AnAddr: TDBGPtr); procedure SetAtLineOffs(ACmd: TGDBMIDebuggerCommand; AnOffset: integer); + procedure SetAtFileLine(ACmd: TGDBMIDebuggerCommand; AFile, ALine: String); + procedure Clear(ACmd: TGDBMIDebuggerCommand); function ClearId(ACmd: TGDBMIDebuggerCommand; AnId: Integer): Boolean; + // a blocked id can not be set, until after the next clear (clear all) + function ClearAndBlockId(ACmd: TGDBMIDebuggerCommand; AnId: Integer): Boolean; function MatchAddr(AnAddr: TDBGPtr): boolean; function MatchId(AnId: Integer): boolean; function IsBreakSet: boolean; + function BreakSetCount: Integer; procedure EnableOrSetByAddr(ACmd: TGDBMIDebuggerCommand; SetNamedOnFail: Boolean = False); procedure Enable(ACmd: TGDBMIDebuggerCommand); procedure Disable(ACmd: TGDBMIDebuggerCommand); property MainAddrFound: TDBGPtr read FMainAddrFound; - property LineOffsFunction: string read FLineOffsFunction; property UseForceFlag: Boolean read FUseForceFlag write FUseForceFlag; property Enabled: Boolean read FEnabled; end; @@ -741,7 +781,6 @@ procedure LockRelease; procedure UnlockRelease; - function ConvertPascalExpression(var AExpression: String): Boolean; // --- procedure ClearSourceInfo; function FindBreakpoint(const ABreakpoint: Integer): TDBGBreakPoint; @@ -1297,21 +1336,11 @@ const (* Some values to calculate how many bytes to disassemble for a given amount of lines Those values are only guesses *) - // DAssBytesPerCommandAvg: Average len: Used for LinesBefore/LinesAfter. - // (should rather be to big than to small) - DAssBytesPerCommandAvg = 8; // Max possible len of a statement in byte. Only used for up to 5 lines DAssBytesPerCommandMax = 24; // Maximum alignment between to procedures (for detecion of gaps, after dis-ass with source) DAssBytesPerCommandAlign = 16; - // If we have a range with more then DAssRangeOverFuncTreshold * DAssBytesPerCommandAvg - // then prefer the Range-end as start, rather than the known func start - // (otherwhise re-dissassemble the whole function, including the part already known) - // The assumption is, that no single *source* statement starting before this range, - // will ever reach into the next statement (where the next statement already started / mixed addresses) - DAssRangeOverFuncTreshold = 15; - // Never dis-assemble more bytes in a single go (actually, max-offset before requested addr) - DAssMaxRangeSize = 4096; + type { TGDBMIDisassembleResultList } @@ -1406,6 +1435,14 @@ FRangeIterator: TDBGDisassemblerEntryMapIterator; FMemDumpsNeeded: array of TGDBMIDisAssAddrRange; procedure DoProgress; + {$ifndef disassemblernestedproc} + function AdjustToKnowFunctionStart(var AStartAddr: TDisassemblerAddress): Boolean; + function DoDisassembleRange(AnEntryRanges: TDBGDisassemblerEntryMap; AFirstAddr, ALastAddr: TDisassemblerAddress; StopAfterAddress: TDBGPtr; StopAfterNumLines: Integer): Boolean; + function ExecDisassmble(AStartAddr, AnEndAddr: TDbgPtr; WithSrc: Boolean; + AResultList: TGDBMIDisassembleResultList = nil; + ACutBeforeEndAddr: Boolean = False): TGDBMIDisassembleResultList; + function OnCheckCancel: boolean; + {$endif} protected function DoExecute: Boolean; override; public @@ -1746,14 +1783,14 @@ FTheDebugger.FReRaiseBreak.Clear(Self); if DebuggerState = dsError then Exit; - S := FTheDebugger.ConvertToGDBPath(UTF8ToSys(FTheDebugger.FileName), cgptExeName); + S := FTheDebugger.ConvertToGDBPath(FTheDebugger.FileName, cgptExeName); Result := ExecuteCommand('-file-exec-and-symbols %s', [S], R); if not Result then exit; {$IFDEF darwin} if (R.State = dsError) and (FTheDebugger.FileName <> '') then begin S := FTheDebugger.FileName + '/Contents/MacOS/' + ExtractFileNameOnly(FTheDebugger.FileName); - S := FTheDebugger.ConvertToGDBPath(UTF8ToSys(S), cgptExeName); + S := FTheDebugger.ConvertToGDBPath(S, cgptExeName); Result := ExecuteCommand('-file-exec-and-symbols %s', [S], R); if not Result then exit; end; @@ -2361,6 +2398,9 @@ R: TGDBMIExecResult; List: TGDBMINameValueList; begin + if DebuggerProperties.DisableForcedBreakpoint then + exit; + if not (dfForceBreakDetected in FTheDebugger.FDebuggerFlags) then begin // detect if we can insert a not yet known break ExecuteCommand('-break-insert -f foo', R); @@ -2760,7 +2800,7 @@ var esc: TGDBMIDebuggerFilenameEncoding; begin - Result := APath; + Result := UTF8ToWinCP(APath); // no need to process empty filename if Result = '' then exit; @@ -3809,33 +3849,13 @@ then FOnProgress(Self); end; +{$ifdef disassemblernestedproc} function TGDBMIDebuggerCommandDisassemble.DoExecute: Boolean; - type - TAddressValidity = - (avFoundFunction, avFoundRange, avFoundStatement, // known address - avGuessed, // guessed - avExternRequest, // As requested by external caller - avPadded // Padded, because address was not known for sure - ); - TAddress = record - Value, GuessedValue: TDBGPtr; - Offset: Integer; - Validity: TAddressValidity; - end; - +{$endif} const TrustedValidity = [avFoundFunction, avFoundRange, avFoundStatement]; - function InitAddress(AValue: TDBGPtr; AValidity: TAddressValidity; - AnOffset: Integer = -1): TAddress; - begin - Result.Value := AValue; - Result.GuessedValue := AValue;; - Result.Offset := AnOffset; - Result.Validity := AValidity; - end; - - procedure PadAddress(var AnAddr: TAddress; APad: Integer); + procedure PadAddress(var AnAddr: TDisassemblerAddress; APad: Integer); begin {$PUSH}{$Q-}{$R-}// APad can be negative, but will be expanded to TDbgPtr (QWord) AnAddr.Value := AnAddr.Value + APad; @@ -3844,16 +3864,7 @@ AnAddr.Offset := -1; end; - function DbgsAddr(const AnAddr: TAddress): string; - const - ValidityName: array [TAddressValidity] of string = - ('FoundFunction', 'FoundRange', 'FoundStatemnet', 'Guessed', 'ExternRequest', 'Padded'); - begin - Result := Format('[[ Value=%u, Guessed=%u, Offset=%d, Validity=%s ]]', - [AnAddr.Value, AnAddr.GuessedValue, AnAddr.Offset, ValidityName[AnAddr.Validity]]); - end; - - function ExecDisassmble(AStartAddr, AnEndAddr: TDbgPtr; WithSrc: Boolean; + function {$ifndef disassemblernestedproc}TGDBMIDebuggerCommandDisassemble.{$endif}ExecDisassmble(AStartAddr, AnEndAddr: TDbgPtr; WithSrc: Boolean; AResultList: TGDBMIDisassembleResultList = nil; ACutBeforeEndAddr: Boolean = False): TGDBMIDisassembleResultList; var @@ -3874,20 +3885,8 @@ do Result.Count := Result.Count - 1; end; - function ExecMemDump(AStartAddr: TDbgPtr; ACount: Cardinal; - AResultList: TGDBMIMemoryDumpResultList = nil): TGDBMIMemoryDumpResultList; - var - R: TGDBMIExecResult; - begin - Result := AResultList; - ExecuteCommand('-data-read-memory %u x 1 1 %u', [AStartAddr, ACount], R); - if Result <> nil - then Result.Init(R) - else Result := TGDBMIMemoryDumpResultList.Create(R); - end; - // Set Value, based on GuessedValue - function AdjustToKnowFunctionStart(var AStartAddr: TAddress): Boolean; + function {$ifndef disassemblernestedproc}TGDBMIDebuggerCommandDisassemble.{$endif}AdjustToKnowFunctionStart(var AStartAddr: TDisassemblerAddress): Boolean; var DisAssList: TGDBMIDisassembleResultList; DisAssItm: PDisassemblerEntry; @@ -3910,51 +3909,6 @@ FreeAndNil(DisAssList); end; - // Set Value, based on GuessedValue - function AdjustToRangeOrKnowFunctionStart(var AStartAddr: TAddress; - ARangeBefore: TDBGDisassemblerEntryRange): Boolean; - begin - Result := False; - AStartAddr.Offset := -1; - AStartAddr.Validity := avGuessed; - if AdjustToKnowFunctionStart(AStartAddr) - then begin - // funtion found, check for range - if (ARangeBefore <> nil) and (ARangeBefore.LastAddr > AStartAddr.Value) - and (ARangeBefore.Count > DAssRangeOverFuncTreshold) - and (ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Offset > DAssRangeOverFuncTreshold * DAssBytesPerCommandAvg) - then begin - // got a big overlap, don't redo the whole function - debugln(DBG_DISASSEMBLER, ['INFO: Restarting inside previous range for known function-start=', DbgsAddr(AStartAddr),' and ARangeBefore=', dbgs(ARangeBefore)]); - // redo one statement - {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur - AStartAddr.Value := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Addr; - AStartAddr.Offset := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Offset; - AStartAddr.Validity := avFoundRange; - //AStartAddr - ARangeBefore.EntriesPtr[ARangeBefore.Count - DAssRangeOverFuncTreshold]^.Addr ; - {$POP} - end - end - else begin - debugln(DBG_DISASSEMBLER, ['INFO: No known function-start for ', DbgsAddr(AStartAddr),' ARangeBefore=', dbgs(ARangeBefore)]); - // no function found // check distance to previous range - // The distance of range before has been checked by the caller - if (ARangeBefore <> nil) - then begin - {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur - AStartAddr.Value := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Addr; - AStartAddr.Offset := ARangeBefore.EntriesPtr[ARangeBefore.Count - 1]^.Offset; - AStartAddr.Validity := avFoundRange; - {$POP} - end - else begin - AStartAddr.Value := AStartAddr.GuessedValue; - AStartAddr.Offset := -1; - AStartAddr.Validity := avGuessed;; - end; - end; - end; - procedure AdjustLastEntryEndAddr(const ARange: TDBGDisassemblerEntryRange; const ADisAssList: TGDBMIDisassembleResultList); var @@ -4148,9 +4102,9 @@ *) // Returns True: If some data was added // False: if failed to add anything - function DoDisassembleRange(AFirstAddr, ALastAddr: TAddress; - StopAfterAddress: TDBGPtr; StopAfterNumLines: Integer - ): Boolean; + function {$ifndef disassemblernestedproc}TGDBMIDebuggerCommandDisassemble.{$endif}DoDisassembleRange(AnEntryRanges: TDBGDisassemblerEntryMap;AFirstAddr, + ALastAddr: TDisassemblerAddress; StopAfterAddress: TDBGPtr; + StopAfterNumLines: Integer): Boolean; procedure AddRangetoMemDumpsNeeded(NewRange: TDBGDisassemblerEntryRange); var @@ -4232,7 +4186,7 @@ DisAssList, DisAssListCurrentSub, DisAssListWithSrc: TGDBMIDisassembleResultList; i, Cnt, DisAssStartIdx: Integer; NewRange: TDBGDisassemblerEntryRange; - OrigLastAddress, OrigFirstAddress: TAddress; + OrigLastAddress, OrigFirstAddress: TDisassemblerAddress; TmpAddr: TDBGPtr; BlockOk, SkipDisAssInFirstLoop, ContinueAfterSource: Boolean; Itm: TDisassemblerEntry; @@ -4268,8 +4222,8 @@ if not (ALastAddr.Validity in TrustedValidity) then PadAddress(ALastAddr, 2 * DAssBytesPerCommandMax); - DebugLnEnter(DBG_DISASSEMBLER, ['INFO: DoDisassembleRange for AFirstAddr =', DbgsAddr(AFirstAddr), - ' ALastAddr=', DbgsAddr(ALastAddr), ' OrigFirst=', DbgsAddr(OrigFirstAddress), ' OrigLastAddress=', DbgsAddr(OrigLastAddress), + DebugLnEnter(DBG_DISASSEMBLER, ['INFO: DoDisassembleRange for AFirstAddr =', Dbgs(AFirstAddr), + ' ALastAddr=', Dbgs(ALastAddr), ' OrigFirst=', Dbgs(OrigFirstAddress), ' OrigLastAddress=', Dbgs(OrigLastAddress), ' StopAffterAddr=', StopAfterAddress, ' StopAfterLines=', StopAfterNumLines ]); try // only needed for debugln DBG_DISASSEMBLER, @@ -4346,7 +4300,7 @@ then begin AdjustLastEntryEndAddr(NewRange, DisAssList); AddRangetoMemDumpsNeeded(NewRange); - FKnownRanges.AddRange(NewRange); // NewRange is now owned by FKnownRanges + AnEntryRanges.AddRange(NewRange); // NewRange is now owned by AnEntryRanges NewRange := nil; FreeAndNil(DisAssList); exit; @@ -4393,7 +4347,7 @@ Itm.Offset := 0; itm.Statement := '<error>'; NewRange.Append(@Itm); - FKnownRanges.AddRange(NewRange); // NewRange is now owned by FKnownRanges + AnEntryRanges.AddRange(NewRange); // NewRange is now owned by AnEntryRanges NewRange := nil; FreeAndNil(DisAssList); exit; @@ -4519,7 +4473,7 @@ then NewRange.RangeEndAddr := NewRange.LastEntryEndAddr; AddRangetoMemDumpsNeeded(NewRange); - FKnownRanges.AddRange(NewRange); // NewRange is now owned by FKnownRanges + AnEntryRanges.AddRange(NewRange); // NewRange is now owned by AnEntryRanges NewRange := nil; FreeAndNil(DisAssIterator); @@ -4531,6 +4485,27 @@ end; end; + function {$ifndef disassemblernestedproc}TGDBMIDebuggerCommandDisassemble.{$endif}OnCheckCancel: boolean; + begin + result := dcsCanceled in SeenStates; + end; + +{$ifndef disassemblernestedproc} +function TGDBMIDebuggerCommandDisassemble.DoExecute: Boolean; +{$endif disassemblernestedproc} + + function ExecMemDump(AStartAddr: TDbgPtr; ACount: Cardinal; + AResultList: TGDBMIMemoryDumpResultList = nil): TGDBMIMemoryDumpResultList; + var + R: TGDBMIExecResult; + begin + Result := AResultList; + ExecuteCommand('-data-read-memory %u x 1 1 %u', [AStartAddr, ACount], R); + if Result <> nil + then Result.Init(R) + else Result := TGDBMIMemoryDumpResultList.Create(R); + end; + procedure AddMemDumps; var i: Integer; @@ -4559,172 +4534,22 @@ end; var - TryStartAt, TryEndAt: TAddress; - TmpAddr: TDBGPtr; - GotCnt, LastGotCnt: Integer; - RngBefore, RngAfter: TDBGDisassemblerEntryRange; + DisassembleRangeExtender: TDBGDisassemblerRangeExtender; begin - Result := True; FContext.ThreadContext := ccNotRequired; FContext.StackContext := ccNotRequired; if FEndAddr < FStartAddr then FEndAddr := FStartAddr; - (* Try to find the boundaries for the unknown range containing FStartAddr - If FStartAddr already has known disassembler data, then this will return - the boundaries of the 1ast unknown section after FStartAddr - *) - // Guess the maximum Addr-Range which needs to be disassembled - TryStartAt := InitAddress(FStartAddr, avExternRequest, -1); - // Find the begin of the function at TryStartAt - // or the rng before (if not to far back) - - RngBefore := FRangeIterator.GetRangeForAddr(FStartAddr, True); - {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur - if (RngBefore <> nil) - and (TryStartAt.Value > RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr) - and (TryStartAt.Value - RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr > FLinesBefore * DAssBytesPerCommandAvg) - then RngBefore := nil; - {$POP} - TmpAddr := FStartAddr - Min(FLinesBefore * DAssBytesPerCommandAvg, DAssMaxRangeSize); - TryStartAt.GuessedValue := TmpAddr; - AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore); - // check max size - if (TryStartAt.Value < FStartAddr - DPtrMin(FStartAddr, DAssMaxRangeSize)) - then begin - DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: FStartAddr=', FStartAddr, ' TryStartAt.Value=', TryStartAt.Value ]); - TryStartAt := InitAddress(TmpAddr, avGuessed); - end; - - // Guess Maximum, will adjust later - if TryStartAt.Value > FEndAddr then begin - if (RngBefore <> nil) then begin - GotCnt := RngBefore.IndexOfAddr(FEndAddr); - LastGotCnt := RngBefore.IndexOfAddr(TryStartAt.Value); - if (GotCnt >= 0) and (LastGotCnt >= 0) and (LastGotCnt > GotCnt) then - FLinesAfter := Max(FLinesAfter - (LastGotCnt - GotCnt), 1); - end; - FEndAddr := TryStartAt.Value; // WARNING: modifying FEndAddr - end; - - TryEndAt := InitAddress(FEndAddr + FLinesAfter * DAssBytesPerCommandAvg, avGuessed); - - // Read as many unknown ranges, until LinesAfter is met - GotCnt := -1; - while(True) - do begin - // check if we need any LinesAfter - if (dcsCanceled in SeenStates) then break; - LastGotCnt:= GotCnt; - GotCnt := 0; - TmpAddr := FEndAddr; - if TryStartAt.Value > FEndAddr - then - TmpAddr := TryStartAt.Value; - if RngBefore <> nil - then begin - TmpAddr := RngBefore.RangeEndAddr; - if RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr > TmpAddr - then TmpAddr := RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr; - GotCnt := RngBefore.IndexOfAddrWithOffs(FEndAddr); - if GotCnt >= 0 then begin - GotCnt := RngBefore.Count - 1 - GotCnt; // the amount of LinesAfter, that are already known - if (GotCnt >= FLinesAfter) - then break; - // adjust end address - TryEndAt := InitAddress(RngBefore.RangeEndAddr + (FLinesAfter-GotCnt) * DAssBytesPerCommandAvg, avGuessed); - end - else GotCnt := 0; - end; - if LastGotCnt >= GotCnt - then begin - debugln(['Disassembler: *** Failure to get any more lines while scanning forward LastGotCnt=',LastGotCnt, ' now GotCnt=',GotCnt, ' Requested=',FLinesAfter]); - break; - end; - - if (dcsCanceled in SeenStates) then break; - RngAfter := FRangeIterator.NextRange; - // adjust TryEndAt - if (RngAfter <> nil) and (TryEndAt.Value >= RngAfter.RangeStartAddr) - then begin - TryEndAt.Value := RngAfter.RangeStartAddr; - TryEndAt.Validity := avFoundRange; - end; - - if (dcsCanceled in SeenStates) then break; - // Try to disassemble the range - if not DoDisassembleRange(TryStartAt, TryEndAt, TmpAddr, FLinesAfter-GotCnt) - then begin - // disassemble failed - debugln(['ERROR: Failed to disassemble from ', DbgsAddr(TryStartAt),' to ', DbgsAddr(TryEndAt)]); - break; - end; - - // prepare the next range - RngBefore := FRangeIterator.GetRangeForAddr(FStartAddr, False); - if (RngBefore = nil) - then begin - debugln(['INTERNAL ERROR: (linesafter) Missing the data, that was just disassembled: from ', DbgsAddr(TryStartAt),' to ', DbgsAddr(TryEndAt)]); - break; - end; - - TryStartAt.Value := RngBefore.RangeEndAddr; - TryStartAt.Validity := avFoundRange; - TryEndAt := InitAddress(FEndAddr + FLinesAfter * DAssBytesPerCommandAvg, avGuessed); - end; - - // Find LinesBefore - RngAfter := FRangeIterator.GetRangeForAddr(FStartAddr, False); - GotCnt := -1; - while(True) - do begin - if (dcsCanceled in SeenStates) then break; - LastGotCnt:= GotCnt; - if (RngAfter = nil) - then begin - debugln(['INTERNAL ERROR: (linesbefore) Missing the data, that was disassembled: from ', DbgsAddr(TryStartAt),' to ', DbgsAddr(TryEndAt)]); - break; - end; - - GotCnt := RngAfter.IndexOfAddrWithOffs(FStartAddr); // already known before - if GotCnt >= FLinesBefore - then break; - if LastGotCnt >= GotCnt - then begin - debugln(['Disassembler: *** Failure to get any more lines while scanning backward LastGotCnt=',LastGotCnt, ' now GotCnt=',GotCnt, ' Requested=',FLinesBefore]); - break; - end; - - TryEndAt := InitAddress(RngAfter.RangeStartAddr, avFoundRange); - TmpAddr := TryEndAt.Value - Min((FLinesBefore - GotCnt) * DAssBytesPerCommandAvg, DAssMaxRangeSize); - TryStartAt := InitAddress(TryEndAt.Value - 1, avGuessed); - TryStartAt.GuessedValue := TmpAddr; - // and adjust - RngBefore := FRangeIterator.PreviousRange; - {$PUSH}{$IFnDEF DBGMI_WITH_DISASS_OVERFLOW}{$Q-}{$R-}{$ENDIF} // Overflow is allowed to occur - if (RngBefore <> nil) - and (TryStartAt.Value > RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr) - and (TryStartAt.Value - RngBefore.EntriesPtr[RngBefore.Count - 1]^.Addr > (FLinesBefore - GotCnt) * DAssBytesPerCommandAvg) - then RngBefore := nil; - {$POP} - AdjustToRangeOrKnowFunctionStart(TryStartAt, RngBefore); - if (TryStartAt.Value < TryEndAt.Value - DPtrMin(TryEndAt.Value, DAssMaxRangeSize)) - then begin - DebugLn(DBG_DISASSEMBLER, ['INFO: Limit Range for Disass: TryEndAt.Value=', TryEndAt.Value, ' TryStartAt.Value=', TryStartAt.Value ]); - TryStartAt := InitAddress(TmpAddr, avGuessed); - end; - - if (dcsCanceled in SeenStates) then break; - // Try to disassemble the range - if not DoDisassembleRange(TryStartAt, TryEndAt, 0, -1) - then begin - // disassemble failed - debugln(['ERROR: Failed to disassemble from ', DbgsAddr(TryStartAt),' to ', DbgsAddr(TryEndAt)]); - break; - end; - - RngAfter := FRangeIterator.GetRangeForAddr(FStartAddr, False); + DisassembleRangeExtender := TDBGDisassemblerRangeExtender.Create(FKnownRanges); + try + DisassembleRangeExtender.OnDoDisassembleRange:=@DoDisassembleRange; + DisassembleRangeExtender.OnCheckCancel:=@OnCheckCancel; + DisassembleRangeExtender.OnAdjustToKnowFunctionStart:=@AdjustToKnowFunctionStart; + result := DisassembleRangeExtender.DisassembleRange(FLinesBefore, FLinesAfter, FStartAddr, FStartAddr); + finally + DisassembleRangeExtender.Free; end; DoProgress; @@ -4805,74 +4630,95 @@ end; {$ENDIF} + var + FndOffsFile, FndOffsLine: String; + StoppedFile, StoppedLine: String; + StoppedAddr: TDBGPtr; + StoppedAtEntryPoint: Boolean; + const + MIN_RELOC_ADDRESS = $4000; + procedure RunToMain(EntryPoint: String); type TRunToMainType = (mtMain, mtMainAddr, mtEntry, mtAddZero); - TRunToMainState = ( - msNone, // no more ways to try setting the breakpoint - msDefault, msMainAddr, msMain, msAddZero, msEntryPoint, - msTryNameZero, msTryZero, msTryEntryName, msTryName - ); var - RunToMainState: TRunToMainState; + EntryPointNum: TDBGPtr; - procedure SetMainBrk; - function TrySetMainBrk(AType: TRunToMainType; ANextState: TRunToMainState): Boolean; + function SetMainBrk: boolean; + procedure MaybeAddMainBrk(AType: TRunToMainType; AnSkipIfCntGreater: Integer; + ACheckEntryPoinReloc: Boolean = false); begin - RunToMainState := ANextState; + // Check if the Entrypoint looks promising (if it looks like it matches the relocated address) + if ACheckEntryPoinReloc and not(EntryPointNum > MIN_RELOC_ADDRESS) then + exit; + // Check amount of already set breakpoints + if (AnSkipIfCntGreater >= 0) and (FTheDebugger.FMainAddrBreak.BreakSetCount > AnSkipIfCntGreater) then + exit; case AType of mtMain: FTheDebugger.FMainAddrBreak.SetByName(Self); mtMainAddr: FTheDebugger.FMainAddrBreak.SetByAddr(Self); mtEntry: FTheDebugger.FMainAddrBreak.SetAtCustomAddr(Self, StrToQWordDef(EntryPoint, 0)); mtAddZero: FTheDebugger.FMainAddrBreak.SetAtLineOffs(Self, 0); end; - Result := FTheDebugger.FMainAddrBreak.IsBreakSet; + + if (AType = mtAddZero) and (FndOffsFile = '') then begin + FndOffsLine := FTheDebugger.FMainAddrBreak.BreakLine[iblAddOffset]; + if (FndOffsLine <> '') then + FndOffsFile := FTheDebugger.FMainAddrBreak.BreakFile[iblAddOffset]; + end; end; + var + bcnt: Integer; begin - case RunToMainState of - msMainAddr: begin - if TrySetMainBrk(mtMainAddr, msTryZero) then exit; - if TrySetMainBrk(mtEntry, msTryZero) then exit; - if TrySetMainBrk(mtAddZero, msNone) then exit; - end; - msMain: begin - if TrySetMainBrk(mtMain, msTryZero) then exit; - if TrySetMainBrk(mtAddZero, msNone) then exit; - end; - msAddZero: begin - if TrySetMainBrk(mtAddZero, msTryEntryName) then exit; - if TrySetMainBrk(mtEntry, msTryName) then exit; - end; - msEntryPoint: begin - if TrySetMainBrk(mtEntry, msTryZero) then exit; - if TrySetMainBrk(mtAddZero, msNone) then exit; - end; - msDefault: begin - (* Force mtMain before + 0: gdb 7.4 will pretend to have +0, but fail it later. *) - TrySetMainBrk(mtMain, msNone); // include name - TrySetMainBrk(mtAddZero, msNone); // always include +0 - if TrySetMainBrk(mtEntry, msTryNameZero) then exit; - if TrySetMainBrk(mtMainAddr, msTryZero) then exit; - end; - msTryNameZero: begin - if (FTheDebugger.FMainAddrBreak.LineOffsFunction <> 'main') - then - TrySetMainBrk(mtAddZero, msNone); // include +0, if not at main - if TrySetMainBrk(mtMain, msTryZero) then exit; - end; - msTryZero: begin - if TrySetMainBrk(mtAddZero, msNone) then exit; + Result := False; + bcnt := FTheDebugger.FMainAddrBreak.BreakSetCount; + case DebuggerProperties.InternalStartBreak of + gdsbEntry: begin + MaybeAddMainBrk(mtEntry, -1, true); + if not FTheDebugger.FMainAddrBreak.IsBreakSet then begin + MaybeAddMainBrk(mtEntry, -1, false); + MaybeAddMainBrk(mtAddZero, -1); + // set only, if no other is set (e.g. 2nd attempt) + MaybeAddMainBrk(mtMainAddr, 0); + MaybeAddMainBrk(mtMain, 0); + end; end; - msTryEntryName: begin - if TrySetMainBrk(mtEntry, msTryName) then exit; - if TrySetMainBrk(mtMain, msNone) then exit; + gdsbMainAddr: begin + MaybeAddMainBrk(mtMainAddr, -1); + // set only, if no other is set (e.g. 2nd attempt) + if not FTheDebugger.FMainAddrBreak.IsBreakSet then begin + MaybeAddMainBrk(mtEntry, 0, true); + MaybeAddMainBrk(mtAddZero, 1); + MaybeAddMainBrk(mtEntry, 0, false); + MaybeAddMainBrk(mtMain, 0); + end; end; - msTryName: begin - if TrySetMainBrk(mtMain, msNone) then exit; + gdsbMain: begin + MaybeAddMainBrk(mtMain, -1); + // set only, if no other is set (e.g. 2nd attempt) + MaybeAddMainBrk(mtAddZero, 0); + MaybeAddMainBrk(mtMainAddr, 0); + MaybeAddMainBrk(mtEntry, 0, false); + end; + gdsbAddZero: begin + MaybeAddMainBrk(mtAddZero, -1); + // set only, if no other is set (e.g. 2nd attempt) + MaybeAddMainBrk(mtEntry, 0, true); + MaybeAddMainBrk(mtMain, 0); + MaybeAddMainBrk(mtEntry, 0, false); + MaybeAddMainBrk(mtMainAddr, 0); + end; + else begin // gdsbDefault + // SetByName: "main", this is the best aproach, unless any library also exports main. + MaybeAddMainBrk(mtMain, -1); + MaybeAddMainBrk(mtEntry, -1, true); // Previous versions used "+0" as 2nd in the list + MaybeAddMainBrk(mtAddZero, -1); + MaybeAddMainBrk(mtMainAddr, 2); // set only, if less than 2 are set + // set only, if no other is set (e.g. 2nd attempt) + MaybeAddMainBrk(mtEntry, 0, false); end; - msNone: - FTheDebugger.FMainAddrBreak.Clear(Self); end; + Result := bcnt < FTheDebugger.FMainAddrBreak.BreakSetCount; // added new breaks end; function ParseLogForPid(ALogTxt: String): Integer; @@ -4891,37 +4737,62 @@ Result := StrToIntDef(s, 0); end; + function ParseStopped(AParam: String): Integer; + var + List: TGDBMINameValueList; + Reason: String; + begin + Result := -1; // no id found + List := nil; + try + List := TGDBMINameValueList.Create(AParam); + Reason := List.Values['reason']; + if (Reason = 'exited-normally') or (Reason = 'exited') or + (Reason = 'exited-signalled') + then + Result := -2; + // if Reason = 'signal-received' // Pause ? + if Reason = 'breakpoint-hit' then begin + Result := StrToIntDef(List.Values['bkptno'], -1); + StoppedAtEntryPoint := Result = FTheDebugger.FMainAddrBreak.BreakId[iblCustomAddr]; + List.SetPath('frame'); + StoppedAddr := StrToInt64Def(List.Values['addr'], -1); + StoppedFile := List.Values['fullname']; + if StoppedFile = '' then + StoppedFile := List.Values['file']; + StoppedLine := List.Values['line']; + end; + except + end; + List.Free; + end; + var R: TGDBMIExecResult; Cmd, s, s2, rval: String; - i: integer; + i, j, LoopCnt: integer; List: TGDBMINameValueList; BrkErr: Boolean; begin + EntryPointNum := StrToQWordDef(EntryPoint, 0); TargetInfo^.TargetPID := 0; FDidKillNow := False; - RunToMainState := msEntryPoint; - case DebuggerProperties.InternalStartBreak of - gdsbDefault: RunToMainState := msDefault; - gdsbEntry: RunToMainState := msEntryPoint; - gdsbMainAddr: RunToMainState := msMainAddr; - gdsbMain: RunToMainState := msMain; - gdsbAddZero: RunToMainState := msAddZero; - else assert(false, 'RunToMain missing init'); - end; // TODO: async Cmd := GdbRunCommand;// '-exec-run'; rval := ''; R.State := dsError; FTheDebugger.FMainAddrBreak.Clear(Self); - while true do begin + LoopCnt := 6; // max iterations + while (LoopCnt > 0) and not(DebuggerState = dsError) do begin + dec(LoopCnt); SetMainBrk; if not FTheDebugger.FMainAddrBreak.IsBreakSet then begin (* TODO: If no main break can be set, it may still be possible (desirable) to run the app, without debug-capacbilities + Or maybe even try to set all breakpoints. *) SetDebuggerErrorState(Format(gdbmiCommandStartMainBreakError, [LineEnding]), ErrorStateInfo); @@ -4952,7 +4823,8 @@ ProcessRunning(s2, R); FCanKillNow := False; FTheDebugger.FCurrentCmdIsAsync := False; - if (pos('reason="exited-normally"', s2) > 0) or FDidKillNow then begin + j := ParseStopped(s2); + if (j = -2) or (pos('reason="exited-normally"', s2) > 0) or FDidKillNow then begin // app has already run R.State := dsStop; break; @@ -4969,15 +4841,20 @@ if not BrkErr then break; - while BrkErr do begin - if FTheDebugger.FMainAddrBreak.ClearId(Self, i) then - BrkErr := ParseBreakInsertError(s, i) - else begin - FTheDebugger.FMainAddrBreak.Clear(Self); - BrkErr := False; + j := FTheDebugger.FMainAddrBreak.BreakSetCount; + while BrkErr and not(DebuggerState = dsError) do begin + if not FTheDebugger.FMainAddrBreak.ClearAndBlockId(Self, i) + then begin + DebugLn(DBG_WARNINGS, ['TGDBMIDebugger.RunToMain: An unknown breakpoint id was reported as failing: ', i]); + if not ExecuteCommand('-break-delete %d', [i], [cfCheckError]) // wil set error state if it fails + then break; + inc(j); end; + BrkErr := ParseBreakInsertError(s, i) end; - + // Break, if no breakpoint was removed + if j = FTheDebugger.FMainAddrBreak.BreakSetCount + then break; end; if DebuggerState = dsError then @@ -5111,9 +4988,11 @@ FileType, EntryPoint: String; List: TGDBMINameValueList; CanContinue: Boolean; + StateStopped: Boolean; begin Result := True; FSuccess := False; + StateStopped := False; try if not (DebuggerState in [dsStop]) @@ -5126,7 +5005,11 @@ SetDebuggerErrorState(synfFailedToLoadApplicationExecutable, FErrorMsg); exit; end; - if not DoSetPascal then exit; + if not DoSetPascal then begin + SetDebuggerErrorState(synfFailedToInitializeTheDebuggerSetPascalFailed, + FLastExecResult.Values); + exit; + end; DebugLn(['TGDBMIDebugger.StartDebugging WorkingDir="', FTheDebugger.WorkingDir,'"']); if FTheDebugger.WorkingDir <> '' @@ -5135,7 +5018,7 @@ // otherwise on second run within the same gdb session the workingdir // is set to c:\windows ExecuteCommand('-environment-cd %s', ['.'], []); - ExecuteCommand('-environment-cd %s', [FTheDebugger.ConvertToGDBPath(UTF8ToSys(FTheDebugger.WorkingDir), cgptCurDir)], [cfCheckError]); + ExecuteCommand('-environment-cd %s', [FTheDebugger.ConvertToGDBPath(FTheDebugger.WorkingDir, cgptCurDir)], [cfCheckError]); end; TargetInfo^.TargetFlags := [tfHasSymbols]; // Set until proven otherwise @@ -5146,7 +5029,7 @@ // also call execute -exec-arguments if there are no arguments in this run // so the possible arguments of a previous run are cleared - ExecuteCommand('-exec-arguments %s', [UTF8ToSys(FTheDebugger.Arguments)], [cfCheckState]); + ExecuteCommand('-exec-arguments %s', [UTF8ToWinCP(FTheDebugger.Arguments)], [cfCheckState]); {$IF defined(UNIX) or defined(DBG_ENABLE_TERMINAL)} InitConsole; @@ -5216,6 +5099,8 @@ DebugLn(DBG_VERBOSE, '[Debugger] Target PID: %u', [TargetInfo^.TargetPID]); + Exclude(FTheDebugger.FDebuggerFlags, dfSetBreakFailed); + Exclude(FTheDebugger.FDebuggerFlags, dfSetBreakPending); // they may still exist from prev run, addr will be checked // TODO: defered setting of below beakpoint / e.g. if debugging a library {$IFdef WITH_GDB_FORCE_EXCEPTBREAK} @@ -5227,9 +5112,17 @@ FTheDebugger.FBreakErrorBreak.SetByAddr(Self); FTheDebugger.FRunErrorBreak.SetByAddr(Self); {$ENDIF} + if (not (FTheDebugger.FExceptionBreak.IsBreakSet and + FTheDebugger.FBreakErrorBreak.IsBreakSet and + FTheDebugger.FRunErrorBreak.IsBreakSet)) and + (DebuggerProperties.WarnOnSetBreakpointError in [gdbwAll, gdbwExceptionsAndRunError]) + then + Include(FTheDebugger.FDebuggerFlags, dfSetBreakFailed); SetDebuggerState(dsInit); // triggers all breakpoints to be set. + FTheDebugger.RunQueue; // run all the breakpoints Application.ProcessMessages; // workaround, allow source-editor to queue line info request (Async call) + if FTheDebugger.FBreakAtMain <> nil then begin CanContinue := False; @@ -5237,17 +5130,59 @@ end else CanContinue := True; + //if FTheDebugger.DebuggerFlags * [dfSetBreakFailed, dfSetBreakPending] <> [] then begin + // if FTheDebugger.OnFeedback + // (self, Format(synfTheDebuggerWasUnableToSetAllBreakpointsDuringIniti, + // [LineEnding]), '', ftWarning, [frOk, frStop]) = frStop + // then begin + // StateStopped := True; + // SetDebuggerState(dsStop); + // exit; + // end; + //end; + + if StoppedAtEntryPoint and CanContinue and (FContinueCommand = nil) then begin + // try to step to pascal code + if (FndOffsFile <> '') and (FndOffsLine <> '') and + ( (FndOffsFile <> StoppedFile) or (FndOffsLine <> StoppedLine) ) + then begin + FTheDebugger.FMainAddrBreak.SetAtFileLine(Self, FndOffsFile, FndOffsLine); + if (FTheDebugger.FMainAddrBreak.BreakAddr[iblFileLine] < MIN_RELOC_ADDRESS) or + (FTheDebugger.FMainAddrBreak.BreakAddr[iblFileLine] = StoppedAddr) + then + FTheDebugger.FMainAddrBreak.Clear(Self, iblFileLine); + end; + + FTheDebugger.FMainAddrBreak.SetByName(Self); + if (FTheDebugger.FMainAddrBreak.BreakAddr[iblNamed] < MIN_RELOC_ADDRESS) or + (FTheDebugger.FMainAddrBreak.BreakAddr[iblNamed] = StoppedAddr) or + (FTheDebugger.FMainAddrBreak.BreakFile[iblNamed] = '') or + (FTheDebugger.FMainAddrBreak.BreakLine[iblNamed] = '') or + ( (FTheDebugger.FMainAddrBreak.BreakFile[iblNamed] = StoppedFile) and + (FTheDebugger.FMainAddrBreak.BreakFile[iblNamed] = StoppedLine) ) + then + FTheDebugger.FMainAddrBreak.Clear(Self, iblNamed); + + if FTheDebugger.FMainAddrBreak.IsBreakSet then begin + FContinueCommand := TGDBMIDebuggerCommandExecute.Create(FTheDebugger, ectContinue); + end; + end; + if CanContinue and (FContinueCommand <> nil) then begin FTheDebugger.QueueCommand(FContinueCommand); FContinueCommand := nil; - end else + end + else begin SetDebuggerState(dsPause); + end; if DebuggerState = dsPause then ProcessFrame; finally ReleaseRefAndNil(FContinueCommand); + if not(StateStopped or (DebuggerState in [dsInit, dsRun, dsPause])) then + SetDebuggerErrorState(synfFailedToInitializeDebugger); end; FSuccess := True; @@ -5299,7 +5234,7 @@ FSuccess := False; if not ExecuteCommand('-file-exec-and-symbols %s', - [FTheDebugger.ConvertToGDBPath(UTF8ToSys(''), cgptExeName)], R) + [FTheDebugger.ConvertToGDBPath('', cgptExeName)], R) then R.State := dsError; if R.State = dsError then begin @@ -5395,7 +5330,7 @@ ExecuteCommand('ptype TObject', [], R); if pos('NO SYMBOL TABLE IS LOADED', UpperCase(FFullCmdReply)) > 0 then begin ExecuteCommand('-file-exec-and-symbols %s', - [FTheDebugger.ConvertToGDBPath(UTF8ToSys(FTheDebugger.FileName), cgptExeName)], R); + [FTheDebugger.ConvertToGDBPath(FTheDebugger.FileName, cgptExeName)], R); DoSetPascal; end; end; @@ -6018,6 +5953,14 @@ Exit; end; + if FTheDebugger.FMainAddrBreak.MatchId(BreakID) + then begin + FTheDebugger.FMainAddrBreak.Clear(Self); // done with launch + SetDebuggerState(dsPause); + ProcessFrame(FTheDebugger.FCurrentLocation ); + Exit; + end; + if (FStepBreakPoint > 0) and (BreakID = FStepBreakPoint) then begin SetDebuggerState(dsPause); @@ -6108,41 +6051,29 @@ WatchErrMsg = 'not insert hardware watchpoint '; function HandleBreakPointError(var ARes: TGDBMIExecResult; AError: String): Boolean; - - function ErrPos(s: string): integer; - var - i: SizeInt; - begin - Result := pos(BreaKErrMsg, s); - if Result > 0 - then Result := Result + length(BreaKErrMsg); - i := pos(WatchErrMsg, s); - if (i > 0) and ( (i < Result) or (Result < 1) ) - then Result := i + length(WatchErrMsg); - end; - var c, i: Integer; bp: Array of Integer; s, s2: string; b: TGDBMIBreakPoint; begin - // TODO while ParseBreakInsertError() Result := False; s := AError; c := 0; - i := ErrPos(s); - while i > 0 do begin - s := copy(s, i, length(s)); - i := 1; - while (i <= length(s)) and (s[i] in ['0'..'9']) do inc(i); - if i > 1 then begin - SetLength(bp, c+1); - bp[c] := StrToIntDef(copy(s, 1, i-1), -1); - if bp[c] >= 0 then inc(c); + while ParseBreakInsertError(s, i) do begin + if FTheDebugger.FMainAddrBreak.ClearId(Self, i) then begin + Result := True; + ARes.State := dsRun; + continue; end; - i := ErrPos(s); + SetLength(bp, c+1); + bp[c] := i; + if bp[c] >= 0 then inc(c); end; + + if Result and not FTheDebugger.FMainAddrBreak.IsBreakSet then + ARes.State := dsPause; // no break left + if c = 0 then exit; Result := True; @@ -6559,11 +6490,13 @@ if FDidKillNow or CheckResultForError(R) then exit; + + ContinueExecution := False; if HandleBreakPointError(FResult, RunWarnings + LineEnding + FLogWarnings) then begin if FResult.State = dsStop then exit; + ContinueExecution := FResult.State = dsRun; // no user interaction => FMainAddrBreak end; - ContinueExecution := False; ContinueStep := False; if StoppedParams <> '' then ContinueExecution := ProcessStopped(StoppedParams, FTheDebugger.PauseWaitState = pwsInternal); @@ -6594,6 +6527,7 @@ FStepBreakPoint := -1; FTheDebugger.FPopExceptStack.Disable(Self); FTheDebugger.FCatchesBreak.Disable(Self); + FTheDebugger.FMainAddrBreak.Clear(Self); end; if (not ContinueExecution) and (DebuggerState = dsRun) and @@ -6809,10 +6743,9 @@ if copy(func, i + 4, 3) = '$$_' then inc(i, 3); NameEnd := PosEx('$', func, i + 4); - if NameEnd > 0 - then NameEnd := NameEnd - (i + 4) - else NameEnd := length(func) + 1; - fn := copy(func, i + 4, NameEnd); // function + if NameEnd <= 0 + then NameEnd := length(func) + 1; + fn := copy(func, i + 4, NameEnd - (i + 4)); // function i := pos('$_$', cl); if i > 1 then begin @@ -7255,6 +7188,8 @@ FUseAsyncCommandMode := False; FDisableLoadSymbolsForLibraries := False; FUseNoneMiRunCommands := gdnmFallback; + FDisableForcedBreakpoint := False; + FWarnOnSetBreakpointError := gdbwAll; inherited; end; @@ -7274,6 +7209,8 @@ FUseAsyncCommandMode := TGDBMIDebuggerPropertiesBase(Source).FUseAsyncCommandMode; FDisableLoadSymbolsForLibraries := TGDBMIDebuggerPropertiesBase(Source).FDisableLoadSymbolsForLibraries; FUseNoneMiRunCommands := TGDBMIDebuggerPropertiesBase(Source).FUseNoneMiRunCommands; + FDisableForcedBreakpoint := TGDBMIDebuggerPropertiesBase(Source).FDisableForcedBreakpoint; + FWarnOnSetBreakpointError := TGDBMIDebuggerPropertiesBase(Source).FWarnOnSetBreakpointError; end; @@ -8593,6 +8530,8 @@ env: TStringList; begin Exclude(FDebuggerFlags, dfForceBreakDetected); + Exclude(FDebuggerFlags, dfSetBreakFailed); + Exclude(FDebuggerFlags, dfSetBreakPending); LockRelease; try FPauseWaitState := pwsNone; @@ -8823,157 +8762,6 @@ FSourceNames.Clear; end; -function TGDBMIDebugger.ConvertPascalExpression(var AExpression: String): Boolean; -var - R: String; - P: PChar; - InString, WasString, IsText, ValIsChar: Boolean; - n: Integer; - ValMode: Char; - Value: QWord; - - function AppendValue: Boolean; - var - S: String; - begin - if ValMode = #0 then Exit(True); - if not (ValMode in ['h', 'd', 'o', 'b']) then Exit(False); - - if ValIsChar - then begin - if not IsText - then begin - R := R + '"'; - IsText := True; - end; - R := R + '\' + OctStr(Value, 3); - ValIsChar := False; - end - else begin - if IsText - then begin - R := R + '"'; - IsText := False; - end; - Str(Value, S); - R := R + S; - end; - Result := True; - ValMode := #0; - end; - -begin - R := ''; - Instring := False; - WasString := False; - IsText := False; - ValIsChar := False; - ValMode := #0; - Value := 0; - - P := PChar(AExpression); - for n := 1 to Length(AExpression) do - begin - if InString - then begin - case P^ of - '''': begin - InString := False; - // delay setting terminating ", more characters defined through # may follow - WasString := True; - end; - #0..#31, - '"', '\', - #128..#255: begin - R := R + '\' + OctStr(Ord(P^), 3); - end; - else - R := R + P^; - end; - Inc(P); - Continue; - end; - - case P^ of - '''': begin - if WasString - then begin - R := R + '\' + OctStr(Ord(''''), 3) - end - else begin - if not AppendValue then Exit(False); - if not IsText - then R := R + '"'; - end; - IsText := True; - InString := True; - end; - '#': begin - if not AppendValue then Exit(False); - Value := 0; - ValMode := 'D'; - ValIsChar := True; - end; - '$', '&', '%': begin - if not (ValMode in [#0, 'D']) then Exit(False); - ValMode := P^; - end; - else - case ValMode of - 'D', 'd': begin - case P^ of - '0'..'9': Value := Value * 10 + Ord(P^) - Ord('0'); - else - Exit(False); - end; - ValMode := 'd'; - end; - '$', 'h': begin - case P^ of - '0'..'9': Value := Value * 16 + Ord(P^) - Ord('0'); - 'a'..'f': Value := Value * 16 + Ord(P^) - Ord('a'); - 'A'..'F': Value := Value * 16 + Ord(P^) - Ord('A'); - else - Exit(False); - end; - ValMode := 'h'; - end; - '&', 'o': begin - case P^ of - '0'..'7': Value := Value * 8 + Ord(P^) - Ord('0'); - else - Exit(False); - end; - ValMode := 'o'; - end; - '%', 'b': begin - case P^ of - '0': Value := Value shl 1; - '1': Value := Value shl 1 or 1; - else - Exit(False); - end; - ValMode := 'b'; - end; - else - if IsText - then begin - R := R + '"'; - IsText := False; - end; - R := R + P^; - end; - end; - WasString := False; - Inc(p); - end; - - if not AppendValue then Exit(False); - if IsText then R := R + '"'; - AExpression := R; - Result := True; -end; - function TGDBMIDebugger.StartDebugging(AContinueCommand: TGDBMIExecCommandType): Boolean; begin Result := StartDebugging(TGDBMIDebuggerCommandExecute.Create(Self, AContinueCommand)); @@ -9178,7 +8966,18 @@ ResultList := TGDBMINameValueList.Create(R); case FKind of bpkSource, bpkAddress: - ResultList.SetPath('bkpt'); + begin + ResultList.SetPath('bkpt'); + if (not Result) or (r.State = dsError) and + (DebuggerProperties.WarnOnSetBreakpointError in [gdbwAll, gdbwUserBreakPoint]) + then + Include(FTheDebugger.FDebuggerFlags, dfSetBreakFailed); + if ((ResultList.IndexOf('pending') >= 0) or + (pos('pend', lowercase(ResultList.Values['addr'])) > 0)) and + (DebuggerProperties.WarnOnSetBreakpointError in [gdbwAll, gdbwUserBreakPoint]) + then + Include(FTheDebugger.FDebuggerFlags, dfSetBreakPending); + end; bpkData: case FWatchKind of wpkWrite: begin @@ -9431,7 +9230,7 @@ S: String; begin S := Expression; - if TGDBMIDebugger(Debugger).ConvertPascalExpression(S) + if ConvertPascalExpression(S) then FParsedExpression := S else FParsedExpression := Expression; if (FBreakID = 0) and Enabled and @@ -11405,82 +11204,90 @@ { TGDBMIInternalBreakPoint } -procedure TGDBMIInternalBreakPoint.ClearName(ACmd: TGDBMIDebuggerCommand); +procedure TGDBMIInternalBreakPoint.Clear(ACmd: TGDBMIDebuggerCommand; + ALoc: TInternalBreakLocation; ABlock: TBlockOpt); begin - if FNameBreakID = -1 then exit; - ACmd.ExecuteCommand('-break-delete %d', [FNameBreakID], [cfCheckError]); - FNameBreakID := -1; - FNameBreakAddr := 0; - FEnabled := FEnabled and ((FNameBreakID >= 0) or (FAddrBreakID >= 0) or (FCustomID >= 0) or (FLineOffsID >= 0)); -end; + if (FBreaks[ALoc].BreakGdbId = -2) and (ABlock <> boUnblock) then exit; + if (FBreaks[ALoc].BreakGdbId = -1) then exit; -procedure TGDBMIInternalBreakPoint.ClearAddr(ACmd: TGDBMIDebuggerCommand); -begin - if FAddrBreakID = -1 then exit; - ACmd.ExecuteCommand('-break-delete %d', [FAddrBreakID], [cfCheckError]); - FAddrBreakID := -1; - FAddrBreakAddr := 0; - FMainAddrFound := 0; - FEnabled := FEnabled and ((FNameBreakID >= 0) or (FAddrBreakID >= 0) or (FCustomID >= 0) or (FLineOffsID >= 0)); -end; + if (FBreaks[ALoc].BreakGdbId >= 0) then + ACmd.ExecuteCommand('-break-delete %d', [FBreaks[ALoc].BreakGdbId], [cfCheckError]); + if ABlock = boBlock then + FBreaks[ALoc].BreakGdbId := -2 + else + FBreaks[ALoc].BreakGdbId := -1; -procedure TGDBMIInternalBreakPoint.ClearCustom(ACmd: TGDBMIDebuggerCommand); -begin - if FCustomID = -1 then exit; - ACmd.ExecuteCommand('-break-delete %d', [FCustomID], [cfCheckError]); - FCustomID := -1; - FCustomAddr := 0; - FEnabled := FEnabled and ((FNameBreakID >= 0) or (FAddrBreakID >= 0) or (FCustomID >= 0) or (FLineOffsID >= 0)); -end; + FBreaks[ALoc].BreakAddr := 0; + FBreaks[ALoc].BreakFunction := ''; + FBreaks[ALoc].BreakFile := ''; + FBreaks[ALoc].BreakLine := ''; -procedure TGDBMIInternalBreakPoint.ClearLineOffs(ACmd: TGDBMIDebuggerCommand); -begin - if FLineOffsID = -1 then exit; - ACmd.ExecuteCommand('-break-delete %d', [FLineOffsID], [cfCheckError]); - FLineOffsID := -1; - FLineOffsAddr := 0; - FLineOffsFunction := ''; - FEnabled := FEnabled and ((FNameBreakID >= 0) or (FAddrBreakID >= 0) or (FCustomID >= 0) or (FLineOffsID >= 0)); -end; + FEnabled := FEnabled and IsBreakSet; -function TGDBMIInternalBreakPoint.BreakSet(ACmd: TGDBMIDebuggerCommand; ALoc: String; out - AId: integer; out AnAddr: TDBGPtr): Boolean; -var - FuncName: string; -begin - Result := BreakSet(ACmd, ALoc, AId, AnAddr, FuncName); + if ALoc = iblAddrOfNamed then FMainAddrFound := 0; end; -function TGDBMIInternalBreakPoint.BreakSet(ACmd: TGDBMIDebuggerCommand; ALoc: String; out - AId: integer; out AnAddr: TDBGPtr; out AFuncName: string): Boolean; +function TGDBMIInternalBreakPoint.BreakSet(ACmd: TGDBMIDebuggerCommand; ABreakLoc: String; + ALoc: TInternalBreakLocation; AClearIfSet: TClearOpt): Boolean; var R: TGDBMIExecResult; ResultList: TGDBMINameValueList; begin - AId := -1; - AnAddr := 0; - AFuncName := ''; + Result := True; // true, if already set (dsError does not matter) + if ACmd.DebuggerState = dsError then exit; + + if AClearIfSet = coClearIfSet then + Clear(ACmd, ALoc); // keeps blocked indicator + if FBreaks[ALoc].BreakGdbId <> -1 then exit; // not(set or blocked) + + FBreaks[ALoc].BreakGdbId := -1; + FBreaks[ALoc].BreakAddr := 0; + FBreaks[ALoc].BreakFunction := ''; - if UseForceFlag and (dfForceBreakDetected in ACmd.FTheDebugger.FDebuggerFlags) then + if UseForceFlag and (dfForceBreak in ACmd.FTheDebugger.FDebuggerFlags) then begin - if (not ACmd.ExecuteCommand('-break-insert -f %s', [ALoc], R)) or + if (not ACmd.ExecuteCommand('-break-insert -f %s', [ABreakLoc], R)) or (R.State = dsError) then - ACmd.ExecuteCommand('-break-insert %s', [ALoc], R); + ACmd.ExecuteCommand('-break-insert %s', [ABreakLoc], R); end else - ACmd.ExecuteCommand('-break-insert %s', [ALoc], R); + ACmd.ExecuteCommand('-break-insert %s', [ABreakLoc], R); Result := R.State <> dsError; if not Result then exit; - FEnabled := True; + FEnabled := True; // TODO: What if some bp are disabled? ResultList := TGDBMINameValueList.Create(R, ['bkpt']); - AId := StrToIntDef(ResultList.Values['number'], -1); - AnAddr := StrToQWordDef(ResultList.Values['addr'], 0); - AFuncName := ResultList.Values['func']; + FBreaks[ALoc].BreakGdbId := StrToIntDef(ResultList.Values['number'], -1); + FBreaks[ALoc].BreakAddr := StrToQWordDef(ResultList.Values['addr'], 0); + FBreaks[ALoc].BreakFunction := ResultList.Values['func']; + FBreaks[ALoc].BreakFile := ResultList.Values['fullname']; + if FBreaks[ALoc].BreakFile = '' then + FBreaks[ALoc].BreakFile := ResultList.Values['file']; + FBreaks[ALoc].BreakLine := ResultList.Values['line']; ResultList.Free; end; +function TGDBMIInternalBreakPoint.GetBreakAddr(ALoc: TInternalBreakLocation): TDBGPtr; +begin + Result := FBreaks[ALoc].BreakAddr; +end; + +function TGDBMIInternalBreakPoint.GetBreakFile(ALoc: TInternalBreakLocation): String; +begin + Result := FBreaks[ALoc].BreakFile; +end; + +function TGDBMIInternalBreakPoint.GetBreakId(ALoc: TInternalBreakLocation): Integer; +begin + Result := FBreaks[ALoc].BreakGdbId; +end; + +function TGDBMIInternalBreakPoint.GetBreakLine(ALoc: TInternalBreakLocation): String; +begin + Result := FBreaks[ALoc].BreakLine; +end; + function TGDBMIInternalBreakPoint.GetInfoAddr(ACmd: TGDBMIDebuggerCommand): TDBGPtr; var R: TGDBMIExecResult; @@ -11489,6 +11296,7 @@ Result := FMainAddrFound; if Result <> 0 then exit; + if ACmd.DebuggerState = dsError then Exit; if (not ACmd.ExecuteCommand('info address ' + FName, R)) or (R.State = dsError) then exit; @@ -11498,36 +11306,47 @@ FMainAddrFound := Result; end; -procedure TGDBMIInternalBreakPoint.InternalSetAddr(ACmd: TGDBMIDebuggerCommand; AnAddr: TDBGPtr); +function TGDBMIInternalBreakPoint.HasBreakAtAddr(AnAddr: TDBGPtr): Boolean; +var + i: TInternalBreakLocation; begin - if (AnAddr <> FAddrBreakAddr) then - ClearAddr(ACmd); + Result := True; + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + if (FBreaks[i].BreakGdbId >= 0) and (FBreaks[i].BreakAddr = AnAddr) then + exit; + Result := False; +end; - if (AnAddr = 0) or (AnAddr = FAddrBreakAddr) or - (AnAddr = FCustomAddr) or (AnAddr = FLineOffsAddr) - then exit; +function TGDBMIInternalBreakPoint.HasBreakWithId(AnId: Integer): Boolean; +var + i: TInternalBreakLocation; +begin + Result := True; + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + if (FBreaks[i].BreakGdbId = AnId) then + exit; + Result := False; +end; - if (FCustomID >= 0) and (AnAddr = FCustomAddr) then begin - FAddrBreakID := FCustomID; - FAddrBreakAddr := FCustomAddr; - FCustomID := -1; - FCustomAddr := 0; - end - else - BreakSet(ACmd, Format('*%u', [AnAddr]), FAddrBreakID, FAddrBreakAddr); +procedure TGDBMIInternalBreakPoint.InternalSetAddr(ACmd: TGDBMIDebuggerCommand; + ALoc: TInternalBreakLocation; AnAddr: TDBGPtr); +begin + if (AnAddr = 0) or HasBreakAtAddr(AnAddr) then // HasBreakAddr includes this BP being allready at AnAddr. + exit; + + // Always ClearIfSet since the address changed + BreakSet(ACmd, Format('*%u', [AnAddr]), ALoc, coClearIfSet); end; constructor TGDBMIInternalBreakPoint.Create(AName: string); +var + i: TInternalBreakLocation; begin FMainAddrFound := 0; - FNameBreakID := -1; - FNameBreakAddr := 0; - FAddrBreakID := -1; - FAddrBreakAddr := 0; - FCustomID := -1; - FCustomAddr := 0; - FLineOffsID := -1; - FLineOffsAddr := 0; + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do begin + FBreaks[i].BreakGdbId := -1; + FBreaks[i].BreakAddr := 0; + end; FUseForceFlag := False; FName := AName; FEnabled := False; @@ -11543,110 +11362,111 @@ Therefore during startup a named break point is used as fallback. *) procedure TGDBMIInternalBreakPoint.SetBoth(ACmd: TGDBMIDebuggerCommand); -var - A: TDBGPtr; begin - if ACmd.DebuggerState = dsError then Exit; - - // keep if already set - if FNameBreakID < 0 then - if not BreakSet(ACmd, FName, FNameBreakID, FNameBreakAddr) then exit; + if not BreakSet(ACmd, FName, iblNamed, coKeepIfSet) then exit; + if FBreaks[iblAddrOfNamed].BreakGdbId = -2 then exit; // Try to retrieve the address of the procedure - A := GetInfoAddr(ACmd); - if A = 0 then exit; - if (A <> FNameBreakAddr) then - InternalSetAddr(ACmd, A); + InternalSetAddr(ACmd, iblAddrOfNamed, GetInfoAddr(ACmd)); end; procedure TGDBMIInternalBreakPoint.SetByName(ACmd: TGDBMIDebuggerCommand); begin - if FNameBreakID < 0 then - if not BreakSet(ACmd, FName, FNameBreakID, FNameBreakAddr) then exit; + BreakSet(ACmd, FName, iblNamed, coKeepIfSet); // keep others end; procedure TGDBMIInternalBreakPoint.SetByAddr(ACmd: TGDBMIDebuggerCommand; SetNamedOnFail: Boolean = False); -var - A: TDBGPtr; begin - if ACmd.DebuggerState = dsError then Exit; - if FAddrBreakID >= 0 then exit; // already set - - A := GetInfoAddr(ACmd); - InternalSetAddr(ACmd, A); - - if (A <> 0) and (A = FAddrBreakAddr) then - ClearName(ACmd); + if FBreaks[iblAddrOfNamed].BreakGdbId <> -2 then + InternalSetAddr(ACmd, iblAddrOfNamed, GetInfoAddr(ACmd)); - If SetNamedOnFail and (A = 0) and (FNameBreakID < 0) then - BreakSet(ACmd, FName, FNameBreakID, FNameBreakAddr); + // SetNamedOnFail includes if blocked + If SetNamedOnFail and (FBreaks[iblNamed].BreakGdbId < 0) then + BreakSet(ACmd, FName, iblNamed, coKeepIfSet); end; procedure TGDBMIInternalBreakPoint.SetAtCustomAddr(ACmd: TGDBMIDebuggerCommand; AnAddr: TDBGPtr); begin - if ACmd.DebuggerState = dsError then Exit; - - ClearCustom(ACmd); - if (AnAddr <> 0) and - ((FAddrBreakID < 0) or (AnAddr <> FAddrBreakAddr)) and - ((FLineOffsID < 0) or (AnAddr <> FLineOffsAddr)) and - ((FNameBreakID < 0) or (AnAddr <> FNameBreakAddr)) - then - BreakSet(ACmd, Format('*%u', [AnAddr]), FCustomID, FCustomAddr); + InternalSetAddr(ACmd, iblCustomAddr, AnAddr); end; procedure TGDBMIInternalBreakPoint.SetAtLineOffs(ACmd: TGDBMIDebuggerCommand; AnOffset: integer); begin - if ACmd.DebuggerState = dsError then Exit; - ClearLineOffs(ACmd); - + // always clear, and set again if AnOffset < 0 then - BreakSet(ACmd, Format('%d', [AnOffset]), FLineOffsID, FLineOffsAddr, FLineOffsFunction) + BreakSet(ACmd, Format('%d', [AnOffset]), iblAddOffset, coClearIfSet) else - BreakSet(ACmd, Format('+%d', [AnOffset]), FLineOffsID, FLineOffsAddr, FLineOffsFunction); + BreakSet(ACmd, Format('+%d', [AnOffset]), iblAddOffset, coClearIfSet); +end; + +procedure TGDBMIInternalBreakPoint.SetAtFileLine(ACmd: TGDBMIDebuggerCommand; AFile, + ALine: String); +begin + AFile := StringReplace(AFile, '\', '/', [rfReplaceAll]); + BreakSet(ACmd, Format(' "\"%s\":%s"', [AFile, ALine]), iblFileLine, coKeepIfSet); end; procedure TGDBMIInternalBreakPoint.Clear(ACmd: TGDBMIDebuggerCommand); +var + i: TInternalBreakLocation; begin if ACmd.DebuggerState = dsError then Exit; - ClearName(ACmd); - ClearAddr(ACmd); - ClearCustom(ACmd); - ClearLineOffs(ACmd); + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + Clear(ACmd, i, boUnblock); FEnabled := False; end; function TGDBMIInternalBreakPoint.ClearId(ACmd: TGDBMIDebuggerCommand; AnId: Integer): Boolean; +var + i: TInternalBreakLocation; begin - Result := (AnId > 0) and - ( (AnId = FNameBreakID) or (AnId = FAddrBreakID) or - (AnId = FCustomID) or (AnId = FLineOffsID) ); - if not Result then exit; + Result := False; + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + if (AnId = FBreaks[i].BreakGdbId) then begin + Clear(ACmd, i); + Result := True; + break; + end; +end; - if (AnId = FNameBreakID) then ClearName(ACmd); - if (AnId = FAddrBreakID) then ClearAddr(ACmd); - if (AnId = FCustomID) then ClearCustom(ACmd); - if (AnId = FLineOffsID) then ClearLineOffs(ACmd); +function TGDBMIInternalBreakPoint.ClearAndBlockId(ACmd: TGDBMIDebuggerCommand; + AnId: Integer): Boolean; +var + i: TInternalBreakLocation; +begin + Result := False; + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + if (AnId = FBreaks[i].BreakGdbId) then begin + Clear(ACmd, i, boBlock); + Result := True; + break; + end; end; function TGDBMIInternalBreakPoint.MatchAddr(AnAddr: TDBGPtr): boolean; begin - Result := (AnAddr <> 0) and - ( (AnAddr = FNameBreakAddr) or (AnAddr = FAddrBreakAddr) or - (AnAddr = FCustomAddr) or (AnAddr = FLineOffsAddr)); + Result := (AnAddr <> 0) and HasBreakAtAddr(AnAddr); end; function TGDBMIInternalBreakPoint.MatchId(AnId: Integer): boolean; begin - Result := (AnId >= 0) and - ( (AnId = FNameBreakID) or (AnId = FAddrBreakID) or - (AnId = FCustomID) or (AnId = FLineOffsID)); + Result := (AnId >= 0) and HasBreakWithId(AnId); end; function TGDBMIInternalBreakPoint.IsBreakSet: boolean; begin - Result := (FNameBreakID >= 0) or (FAddrBreakID >= 0) or (FCustomID > 0) or (FLineOffsID > 0); + Result := BreakSetCount > 0; +end; + +function TGDBMIInternalBreakPoint.BreakSetCount: Integer; +var + i: TInternalBreakLocation; +begin + Result := 0; + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + if (FBreaks[i].BreakGdbId >= 0) then + inc(Result); end; procedure TGDBMIInternalBreakPoint.EnableOrSetByAddr(ACmd: TGDBMIDebuggerCommand; @@ -11661,35 +11481,26 @@ procedure TGDBMIInternalBreakPoint.Enable(ACmd: TGDBMIDebuggerCommand); var R: TGDBMIExecResult; + i: TInternalBreakLocation; begin if FEnabled then exit; - FEnabled := (FNameBreakID >= 0) or (FAddrBreakID >= 0) or (FCustomID >= 0) or (FLineOffsID >= 0); - - if FNameBreakID >= 0 then - ACmd.ExecuteCommand('-break-enable %d', [FNameBreakID], R); - if FAddrBreakID >= 0 then - ACmd.ExecuteCommand('-break-enable %d', [FAddrBreakID], R); - if FCustomID >= 0 then - ACmd.ExecuteCommand('-break-enable %d', [FCustomID], R); - if FLineOffsID >= 0 then - ACmd.ExecuteCommand('-break-enable %d', [FLineOffsID], R); + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + if FBreaks[i].BreakGdbId >= 0 then begin + ACmd.ExecuteCommand('-break-enable %d', [FBreaks[i].BreakGdbId], R); + FEnabled := True; + end; end; procedure TGDBMIInternalBreakPoint.Disable(ACmd: TGDBMIDebuggerCommand); var R: TGDBMIExecResult; + i: TInternalBreakLocation; begin if not FEnabled then exit; FEnabled := False; - - if FNameBreakID >= 0 then - ACmd.ExecuteCommand('-break-disable %d', [FNameBreakID], R); - if FAddrBreakID >= 0 then - ACmd.ExecuteCommand('-break-disable %d', [FAddrBreakID], R); - if FCustomID >= 0 then - ACmd.ExecuteCommand('-break-disable %d', [FCustomID], R); - if FLineOffsID >= 0 then - ACmd.ExecuteCommand('-break-disable %d', [FLineOffsID], R); + for i := low(TInternalBreakLocation) to high(TInternalBreakLocation) do + if FBreaks[i].BreakGdbId >= 0 then + ACmd.ExecuteCommand('-break-disable %d', [FBreaks[i].BreakGdbId], R); end; { TGDBMIDebuggerSimpleCommand } diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbmiserverdebugger.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbmiserverdebugger.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbmiserverdebugger.pas 2014-04-19 00:31:42.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbmiserverdebugger.pas 2015-03-27 16:10:17.000000000 +0000 @@ -76,6 +76,7 @@ property InternalStartBreak; property UseNoneMiRunCommands; property DisableLoadSymbolsForLibraries; + //property WarnOnSetBreakpointError; end; procedure Register; diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbmistringconstants.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbmistringconstants.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbmistringconstants.pas 2015-02-11 02:04:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbmistringconstants.pas 2015-02-25 22:13:56.000000000 +0000 @@ -79,6 +79,13 @@ lisResponseContinue = 'Response: %sContinue ?'; dlgGroupDebugger = 'Debugger'; synfFailedToLoadApplicationExecutable = 'Failed to load application executable'; + synfFailedToInitializeTheDebuggerSetPascalFailed = 'Failed to initialize the debugger (set ' + +'pascal failed)'; + synfFailedToInitializeDebugger = 'Failed to initialize debugger'; + synfTheDebuggerWasUnableToSetAllBreakpointsDuringIniti = 'The debugger was unable to set ' + + 'all breakpoints during initialization.%0:s' + + 'You may wish to check if all sources were compiled with debug-info.%0:s' + + 'Press OK to ignore this and continue.'; implementation diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbtypeinfo.pp lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbtypeinfo.pp --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/gdbtypeinfo.pp 2015-03-05 22:58:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/gdbtypeinfo.pp 2015-03-05 22:55:58.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: gdbtypeinfo.pp 48149 2015-03-05 22:58:52Z martin $ } +{ $Id: gdbtypeinfo.pp 48148 2015-03-05 22:55:58Z martin $ } { ---------------------------------------------- GDBTypeInfo.pp - Debugger helper class ---------------------------------------------- @created(Wed Mar 29th WET 2003) - @lastmod($Date: 2015-03-05 23:58:52 +0100 (Do, 05 Mär 2015) $) + @lastmod($Date: 2015-03-05 23:55:58 +0100 (Do, 05 Mär 2015) $) @author(Marc Weustink <marc@@dommelstein.net>) This unit contains a helper class for decoding PType output. @@ -1545,6 +1545,7 @@ function TGDBExpressionPartNumber.GetTextFixed(AOpts: TGDBExprTextOptions): String; begin + if AOpts=[] then ; Result := FTextStr; end; @@ -2834,7 +2835,10 @@ FExprEvaluatedAsText := FExprEvaluatedAsText + ', '; FExprEvaluatedAsText := FExprEvaluatedAsText + s; - FFields.Add(TDBGField.Create(IntToStr(FBoundLow + i), FArrayIndexValues[i], flPublic)); + if FRepeatFirstIndex <> 0 + then m := FRepeatFirstIndex + else m := FBoundLow; + FFields.Add(TDBGField.Create(IntToStr(m + i), FArrayIndexValues[i], flPublic)); end; if Length(FArrayIndexValues) < FLen then FExprEvaluatedAsText := FExprEvaluatedAsText + ', ...'; @@ -2989,6 +2993,7 @@ s: String; Idx: Int64; Error: word; + i: Integer; begin FProcessState := gtpsEvalExprRepeated; @@ -3012,6 +3017,10 @@ exit; end; FExprEvaluatedAsText := FRepeatCountEval.ExprEvaluatedAsText; + FFields.Free; + FFields := TDBGFields.Create; + for i := 0 to FRepeatCountEval.Fields.Count - 1 do + FFields.Add(FRepeatCountEval.Fields[i]); FHasExprEvaluatedAsText := True; FreeAndNil(FRepeatCountEval); Result := True; diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.es.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.es.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.es.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.es.po 2015-04-25 22:56:24.000000000 +0000 @@ -159,7 +159,7 @@ #: gdbmistringconstants.lisnewthegnudebuggerthroughsshallowstoremotedebugviaassh msgid "The GNU debugger through SSH allows to remote debug via a SSH connection. See docs/RemoteDebugging.txt for details. The path must contain the SSH client. Use SSH_Startup_Options for the hostname and optional username. Use Remote_GDB_Exe for the filename of GDB on the remote computer." -msgstr "" +msgstr El depurador GNU a través de SSH permite depuración remota a través de una conexión SSH. Ver documentos/RemoteDebugging.txt para más detalles. La ruta debe contener el cliente SSH. Utiliza SSH_Startup_Options para el nombre de host(hostname) y opcionalmente nombre de usuario (username). Utiliza Remote_GDB para el nombre de fichero (filename) de GDB en el ordenador remoto."" #: gdbmistringconstants.lisresponsecontinue msgid "Response: %sContinue ?" @@ -169,7 +169,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "Resultado inexperado:%sEl depurador finalizará ahora" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "Fallo al iniciar el depurador" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "Fallo al iniciar el depurador (fallo al ejecutar set pascal)" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "Fallo al cargar el ejecutable de la aplicación" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "El depurador no pudo poner todos los puntos de interrupción durante la inicialización.%0:sVerifique que todo el código fuente haya sido compilado con información de depuración.%0:sPresione Aceptar para ignorar esto y continuar." + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.fr.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.fr.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.fr.po 2015-04-28 22:04:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.fr.po 2015-04-28 21:59:04.000000000 +0000 @@ -144,7 +144,18 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "Résultat inattendu : %sLe débogueur va s'arrêter." +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "Échec d'initialisation du débogueur" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "Échec de l'initialisation du débogueur (passage en mode Pascal impossible)" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "Impossible de charger l'exécutable de l'application" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "Le débogueur a été incapable de mettre les points d'arrêt pendant l'initialisation. %0:sVeuillez vérifier si toutes les fichiers sources ont été compilés avec \"debug-info\". %0:sAppuyez sur \"OK\" pour ignorer cela et continuer." diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.hu.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.hu.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.hu.po 2015-06-04 21:52:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.hu.po 2015-06-04 21:26:04.000000000 +0000 @@ -143,6 +143,18 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "Váratlan eredmény:%sA hibakereső leállni" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "A hibakereső előkészítése nem sikerült" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "A hibakereső előkészítése nem sikerült (pascal bekapcsolása) " + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "Nem sikerült betölteni a futtatható alkalmazást" + +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "A hibakereső nem tudta elhelyezni az összes megszakítási pontot az előkészítés folyamán.%0:s Ellenőrizni kell, hogy az összes forráskód hibakeresési információkkal lett-e lefordítva!%0:sAz 'OK'-t választva figyelmen kívül hagyhatja ezt és folytathatja a futtatást." diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.it.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.it.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.it.po 2015-02-11 20:51:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.it.po 2015-02-25 22:34:30.000000000 +0000 @@ -145,7 +145,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "Risultato inatteso:%sIl debugger termina" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ja.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ja.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ja.po 2015-02-11 20:51:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ja.po 2015-02-25 22:34:30.000000000 +0000 @@ -171,7 +171,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.lt.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.lt.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.lt.po 2015-02-11 20:51:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.lt.po 2015-02-25 22:34:30.000000000 +0000 @@ -16,6 +16,7 @@ msgstr "" #: gdbmistringconstants.gdbmibreakpointerroronruncommand +#, fuzzy,badformat msgctxt "gdbmistringconstants.gdbmibreakpointerroronruncommand" msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session." msgstr "Derintuvei vykdant programą ar darant joje žingsnį įvyko klaida:%0:s%0:s%1:s%0:s%0:sPaspaudus „Tinka“ bus pašalinti stabdos taškai ir tęsiamas derinimas (pristabdytas), tai leis pašalinti problemą arba pasirinkti alternatyvią vykdymo komandą.0:sPaspaudus „Stabdyti“ derinimo seansas bus baigtas." @@ -41,6 +42,7 @@ msgstr "Derintuvei nepavyko savęs inicializuoti.%0:sPrograma startavo (ir baigė darbą) dar prieš derintuvei dedant stabdos taškus.%0:sTikėtina to priežastis – nėra derinimo informacijos." #: gdbmistringconstants.gdbmierroronruncommand +#, fuzzy,badformat msgctxt "gdbmistringconstants.gdbmierroronruncommand" msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session." msgstr "Derintuvei vykdant programą ar darant joje žingsnį įvyko klaida:%0:s%0:s%1:s%0:s%0:sPaspaudus „Tinka“ bus tęsiamas derinimas (pristabdytas), tai leis pašalinti problemą arba pasirinkti alternatyvią vykdymo komandą.0:sPaspaudus „Stabdyti“ derinimo seansas bus baigtas." @@ -171,7 +173,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.po 2015-02-11 20:51:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.po 2015-02-25 22:34:30.000000000 +0000 @@ -133,7 +133,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.pt_BR.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.pt_BR.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.pt_BR.po 2015-02-11 20:51:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.pt_BR.po 2015-02-25 22:34:30.000000000 +0000 @@ -176,7 +176,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ru.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ru.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ru.po 2015-02-11 20:51:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.ru.po 2015-02-25 22:34:30.000000000 +0000 @@ -158,7 +158,6 @@ msgstr "Отладчик достиг не ожидавшейся точки останова %1:s(%0:s)%0:sНажмите \"ОК\" для продолжения отладки (приостановлена).%0:sНажмите \"Остановить\", чтобы закончить отладку." #: gdbmistringconstants.lisnewthegnudebuggerthroughsshallowstoremotedebugviaassh -#| msgid "The GNU debugger through SSH allows to remote debug via a SSH connection. See docs/RemoteDebugging.txt for details. The path must contain the SSH client. Use SSH_Startup_Options for the hostname and optional username. USE Remote_GDB_Exe for the filename of GDB on the remote computer." msgid "The GNU debugger through SSH allows to remote debug via a SSH connection. See docs/RemoteDebugging.txt for details. The path must contain the SSH client. Use SSH_Startup_Options for the hostname and optional username. Use Remote_GDB_Exe for the filename of GDB on the remote computer." msgstr "Отладчик GNU через SSH позволяет проводить удалённую отладку через соединение SSH. Обратитесь к файлу docs/RemoteDebugging.txt за подробностями. Клиент SSH должен присутствовать в пути. Используйте SSH_Startup_Options для задания имени удалённой машины и, при необходимости, имени пользователя. Параметром Remote_GDB_Exe задаётся имя файла GDB на удалённой машине." @@ -170,7 +169,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "Неожиданный результат:%sОтладчик прервёт работу." +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "Не удалось инициализировать отладчик" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "Не удалось инициализировать отладчик (ошибка перевода в режим Паскаля)" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "Не удалось загрузить исполнимый файл приложения" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "Отладчику не удалось установить все точки останова при инициализации.%0:sСледует проверить, что все файлы исходного кода были откомпилированы с отладочной информацией.%0:sНажмите OK, чтобы игнорировать и продолжить." + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.uk.po lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.uk.po --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.uk.po 2015-02-11 20:51:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/languages/gdbmistringconstants.uk.po 2015-02-25 22:34:30.000000000 +0000 @@ -168,7 +168,19 @@ msgid "Unexpected result:%sThe debugger will terminate" msgstr "" +#: gdbmistringconstants.synffailedtoinitializedebugger +msgid "Failed to initialize debugger" +msgstr "" + +#: gdbmistringconstants.synffailedtoinitializethedebuggersetpascalfailed +msgid "Failed to initialize the debugger (set pascal failed)" +msgstr "" + #: gdbmistringconstants.synffailedtoloadapplicationexecutable msgid "Failed to load application executable" msgstr "" +#: gdbmistringconstants.synfthedebuggerwasunabletosetallbreakpointsduringiniti +msgid "The debugger was unable to set all breakpoints during initialization.%0:sYou may wish to check if all sources were compiled with debug-info.%0:sPress OK to ignore this and continue." +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/sshgdbmidebugger.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/sshgdbmidebugger.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/sshgdbmidebugger.pas 2014-12-09 00:46:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/sshgdbmidebugger.pas 2015-03-27 16:10:17.000000000 +0000 @@ -1,11 +1,11 @@ -{ $Id: sshgdbmidebugger.pas 47145 2014-12-09 00:46:24Z martin $ } +{ $Id: sshgdbmidebugger.pas 48520 2015-03-27 16:10:17Z martin $ } { ---------------------------------------------- SSHGDBDebugger.pp - Debugger class for GDB through SSH ---------------------------------------------- @created(Wed Jul 23rd WET 2003) - @lastmod($Date: 2014-12-09 01:46:24 +0100 (Di, 09 Dez 2014) $) + @lastmod($Date: 2015-03-27 17:10:17 +0100 (Fr, 27 Mär 2015) $) @author(Marc Weustink <marc@@lazarus.dommelstein.net>) This unit contains the debugger class for the GDB/MI debugger through SSH. @@ -87,6 +87,7 @@ property InternalStartBreak; property UseNoneMiRunCommands; property DisableLoadSymbolsForLibraries; + //property WarnOnSetBreakpointError; end; procedure Register; diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/gdbmitestutils/compilehelpers.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/gdbmitestutils/compilehelpers.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/gdbmitestutils/compilehelpers.pas 2014-03-28 00:21:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/gdbmitestutils/compilehelpers.pas 2015-12-04 17:34:35.000000000 +0000 @@ -28,7 +28,7 @@ implementation -function ReadOutput(AProcess:TProcess): TStringList; +function ReadOutput(AProcess:TProcessUTF8): TStringList; const TIME_OUT = 300; READ_BYTES = 1024; diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/TestApps/breakprog.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/TestApps/breakprog.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/TestApps/breakprog.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/TestApps/breakprog.pas 2015-01-31 13:55:47.000000000 +0000 @@ -0,0 +1,33 @@ +program breakprog; + +procedure WriteLnIpc(aStr: String); +begin + writeln(aStr); + writeln(aStr+aStr); +end; + +function CalcNextUpdTime(aTime: Integer): Integer; +begin + writeln(aTime); + writeln(aTime+aTime); + Result := 5*aTime; +end; + +function StripFileDrive(const FileName: string): string; +begin + writeln(FileName); + writeln(FileName+FileName); + Result := FileName; + Delete(Result, 1, 1); +end; + +begin + {$IFDEF CALL_ALL} StripFileDrive('11'); {$ENDIF} + WriteLnIpc('drive="%s", dir="%s", path="%s", nodrv=%s.'); + CalcNextUpdTime(1); + WriteLnIpc('Now = '); + WriteLnIpc('UpdateTime = '); + WriteLnIpc('RealUpdateTime = '); +end. + + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/TestApps/ExceptPrgStep.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/TestApps/ExceptPrgStep.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/TestApps/ExceptPrgStep.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/TestApps/ExceptPrgStep.pas 2015-01-30 23:16:32.000000000 +0000 @@ -0,0 +1,41 @@ +program ExceptPrgStep; +uses sysutils; + +var + i: integer; + +procedure foo; +begin + raise Exception.create('a'); + writeln(1); +end; + +begin + try + foo; + writeln(1); + foo; + foo; + except + writeln(1); + end; + writeln(2); + + try + try + foo; + writeln(1); + foo; + foo; + except + writeln(1); + end; + writeln(2); + except + writeln(1); + end; + writeln(2); + writeln(2); + writeln(2); + +end. diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/testbreakpoint.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/testbreakpoint.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/testbreakpoint.pas 2014-03-22 12:41:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/testbreakpoint.pas 2015-01-31 13:55:47.000000000 +0000 @@ -34,10 +34,16 @@ published // Due to a linker error breakpoints can point to invalid addresses procedure TestStartMethod; + procedure TestStartMethodBadLinker; // not called prog in front of MAIN // causes bad linker with dwarf + procedure TestStartMethodStep; procedure TestBadAddrBreakpoint; procedure TestInteruptWhilePaused; end; +const + BREAK_LINE_BREAKPROG = 28; + BREAK_LINE_BREAKPROG_MAIN = 24; /// ..26 + implementation procedure TTestBrkGDBMIDebugger.TestInterruptTarget; @@ -104,6 +110,99 @@ AssertTestErrors; end; +procedure TTestBreakPoint.TestStartMethodBadLinker; +var + dbg: TGDBMIDebugger; + TestExeName, s: string; + i: TGDBMIDebuggerStartBreak; + IgnoreRes: String; +begin + if SkipTest then exit; + if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf('TTestBreakPoint')] then exit; + if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf(' TTestBreakPoint.StartMethod')] then exit; + + ClearTestErrors; + FBrkErr := nil; + TestCompile(AppDir + 'breakprog.pas', TestExeName); + + for i := Low(TGDBMIDebuggerStartBreak) to high(TGDBMIDebuggerStartBreak) do begin + WriteStr(s, i); + + try + dbg := StartGDB(AppDir, TestExeName); + dbg.OnCurrent := @DoCurrent; + TGDBMIDebuggerProperties(dbg.GetProperties).InternalStartBreak := i; + with dbg.BreakPoints.Add('breakprog.pas', BREAK_LINE_BREAKPROG) do begin + InitialEnabled := True; + Enabled := True; + end; + + dbg.Run; + + IgnoreRes := ''; + case DebuggerInfo.Version of + 000000..070399: if (i = gdsbAddZero) and + (CompilerInfo.Version = 020604) + then IgnoreRes:= 'gdb below 7.4 and fpc 2.6.4 does not work with gdsbAddZero'; + 070400..070499: if i = gdsbAddZero then IgnoreRes:= 'gdb 7.4.x does not work with gdsbAddZero'; + end; + + TestTrue(s+' not in error state 1', dbg.State <> dsError, 0, IgnoreRes); + TestTrue(s+' at break', FCurLine = BREAK_LINE_BREAKPROG, 0, IgnoreRes); + + TGDBMIDebuggerProperties(dbg.GetProperties).InternalStartBreak := gdsbDefault; + finally + dbg.Done; + CleanGdb; + dbg.Free; + end; + end; + + AssertTestErrors; +end; + +procedure TTestBreakPoint.TestStartMethodStep; +var + dbg: TGDBMIDebugger; + TestExeName, s: string; + i: TGDBMIDebuggerStartBreak; + IgnoreRes: String; +begin + if SkipTest then exit; + if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf('TTestBreakPoint')] then exit; + if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf(' TTestBreakPoint.StartMethod')] then exit; + + ClearTestErrors; + FBrkErr := nil; + TestCompile(AppDir + 'breakprog.pas', TestExeName, '_callall', ' -dCALL_ALL '); + + for i := Low(TGDBMIDebuggerStartBreak) to high(TGDBMIDebuggerStartBreak) do begin + WriteStr(s, i); + + try + dbg := StartGDB(AppDir, TestExeName); + dbg.OnCurrent := @DoCurrent; + TGDBMIDebuggerProperties(dbg.GetProperties).InternalStartBreak := i; + + dbg.StepOver; + + IgnoreRes := ''; + if i = gdsbAddZero then IgnoreRes:= 'launch with step does not work with gdsbAddZero'; + TestTrue(s+' not in error state 1', dbg.State <> dsError, 0, IgnoreRes); + TestTrue(s+' at break', (FCurLine >= BREAK_LINE_BREAKPROG_MAIN) AND (FCurLine <= BREAK_LINE_BREAKPROG_MAIN + 2), + 0, IgnoreRes); + + TGDBMIDebuggerProperties(dbg.GetProperties).InternalStartBreak := gdsbDefault; + finally + dbg.Done; + CleanGdb; + dbg.Free; + end; + end; + + AssertTestErrors; +end; + function TTestBreakPoint.DoGetFeedBack(Sender: TObject; const AText, AInfo: String; AType: TDBGFeedbackType; AButtons: TDBGFeedbackResults): TDBGFeedbackResult; begin @@ -182,6 +281,20 @@ if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf('TTestBreakPoint')] then exit; if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf(' TTestBreakPoint.BadInterrupt')] then exit; + IgnoreRes := ''; + case DebuggerInfo.Version of + 0..069999: IgnoreRes:= 'all gdb 6.x may or may not fail'; + 070000: IgnoreRes:= 'gdb 7.0.0 may or may not fail'; + // 7.0.50 seems to always pass + // 7.1.x seems to always pass + // 7.2.x seems to always pass + 070300..070399: IgnoreRes:= 'gdb 7.3.x may or may not fail'; + 070400..070499: IgnoreRes:= 'gdb 7.4.x may or may not fail'; + 070500..070599: IgnoreRes:= 'gdb 7.5.x may or may not fail'; + 070600..070699: IgnoreRes:= 'gdb 7.6.x may or may not fail'; + 070700..070700: IgnoreRes:= 'gdb 7.7.0 may or may not fail'; + end; + (* Trigger a InterruptTarget while paused. Test if the app can continue, and reach it normal exit somehow (even if multiply interupts must be skipped) *) @@ -399,17 +512,6 @@ dbg.Free; end; end; - IgnoreRes := ''; - case DebuggerInfo.Version of - 0..069999: IgnoreRes:= 'all gdb 6.x may or may not fail'; - 070000: IgnoreRes:= 'gdb 7.0.0 may or may not fail'; - // 7.0.50 seems to always pass - // 7.1.x seems to always pass - // 7.2.x seems to always pass - 070300..070399: IgnoreRes:= 'gdb 7.3.x may or may not fail'; - 070400..070499: IgnoreRes:= 'gdb 7.4.x may or may not fail'; - 070500..070599: IgnoreRes:= 'gdb 7.5.x may or may not fail'; - end; TestEquals('Passed none-pause run', '', Err, 0, IgnoreRes); @@ -468,7 +570,7 @@ if dbg.State <> dsStop then Err := Err + 'Never reached final stop'; finally - TestEquals('Passed none-pause run with steps', '', Err); + TestEquals('Passed none-pause run with steps', '', Err, 0, IgnoreRes); dbg.Done; CleanGdb; dbg.Free; diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/testexception.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/testexception.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/testexception.pas 2014-03-22 12:41:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/testexception.pas 2015-01-30 23:16:32.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, fpcunit, testutils, testregistry, TestGDBMIControl, + Classes, sysutils, fpcunit, testutils, testregistry, TestGDBMIControl, TestBase, GDBMIDebugger, LCLProc, DbgIntfDebuggerBase; type @@ -14,6 +14,9 @@ TTestExceptionOne = class(TGDBTestCase) private + FCurLine: Integer; + FCurFile: string; + FGotExceptCount: Integer; FGotExceptClass: String; FGotExceptMsg: String; @@ -25,12 +28,21 @@ const AExceptionLocation: TDBGLocationRec; const AExceptionText: String; out AContinue: Boolean); + protected + procedure DoCurrent(Sender: TObject; const ALocation: TDBGLocationRec); published procedure TestException; - end; - + procedure TestExceptionStepOut; + end; +const + (* Stepping out of the exception may currently stop one line before the "except statemet. + The lines below are the first line in the statement. (so 2 later) + *) + BREAK_LINE_EXCEPT_1 = 20; // first except blog // may be 18 = at "except" keyword + BREAK_LINE_EXCEPT_2 = 31; // 2nd except + BREAK_LINE_EXCEPT_END = 38; // line for break at end implementation @@ -52,6 +64,12 @@ AContinue := False; end; +procedure TTestExceptionOne.DoCurrent(Sender: TObject; const ALocation: TDBGLocationRec); +begin + FCurFile := ALocation.SrcFile; + FCurLine := ALocation.SrcLine; +end; + procedure TTestExceptionOne.TestException; var TestExeName, TstName: string; @@ -217,6 +235,57 @@ AssertTestErrors; end; + +procedure TTestExceptionOne.TestExceptionStepOut; +var + TestExeName, TstName: string; + dbg: TGDBMIDebugger; +begin + if SkipTest then exit; + if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf('TTestExceptionOne')] then exit; + ClearTestErrors; + + TestCompile(AppDir + 'ExceptPrgStep.pas', TestExeName, '', ''); + try + FGotExceptCount := 0; TstName := 'STEP'; + dbg := StartGDB(AppDir, TestExeName); + dbg.OnException := @DoDebuggerException; + dbg.OnCurrent := @DoCurrent; + + with dbg.BreakPoints.Add('ExceptPrgStep.pas', BREAK_LINE_EXCEPT_END) do begin + InitialEnabled := True; + Enabled := True; + end; + + dbg.Run; + TestEquals(TstName+' Got 1 exception', 1, FGotExceptCount); + + dbg.StepOver; + TestTrue(TstName+' (Stepped) at break '+IntToStr(FCurLine), + (FCurLine <= BREAK_LINE_EXCEPT_1) and (FCurLine >= BREAK_LINE_EXCEPT_1 - 2)); + TestEquals(TstName+' (Stepped) Still Got 1 exception', 1, FGotExceptCount); + + dbg.Run; + TestEquals(TstName+' Got 2 exception', 2, FGotExceptCount); + + dbg.StepOver; + TestTrue(TstName+' (Stepped 2) at break '+IntToStr(FCurLine), + (FCurLine <= BREAK_LINE_EXCEPT_2) and (FCurLine >= BREAK_LINE_EXCEPT_2 - 2)); + TestEquals(TstName+' (Stepped 2) Still Got 2 exception', 2, FGotExceptCount); + + dbg.Run; // run to break (tmp break cleared) + TestEquals(TstName+' at break', BREAK_LINE_EXCEPT_END, FCurLine); + TestEquals(TstName+' Still Got 2 exception', 2, FGotExceptCount); + + dbg.Stop; + finally + dbg.Done; + CleanGdb; + dbg.Free; + end; + + AssertTestErrors; +end; initialization RegisterDbgTest(TTestExceptionOne); diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/testgdbtype.pas lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/testgdbtype.pas --- lazarus-1.4.4+dfsg/components/lazdebuggergdbmi/test/testgdbtype.pas 2015-03-05 22:58:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggergdbmi/test/testgdbtype.pas 2015-03-06 00:36:52.000000000 +0000 @@ -18,6 +18,7 @@ procedure TestPTypeParser; procedure TestExpressionBreaker; procedure TestUnEscape; + procedure TestConvertPascalExpression; end; implementation @@ -829,6 +830,23 @@ AssertEquals('4:a\102\tc\\d (no oct)', 'a\102 c\d', UnEscapeBackslashed('a\102\tc\\d', [uefTab],4)); end; +procedure TTestGdbType.TestConvertPascalExpression; + procedure AssertEqualsConv(n, s1, s2: string); + begin + AssertTrue(n, ConvertPascalExpression(s2)); + AssertEquals(n, s1, s2); + end; +begin + AssertEqualsConv('', 'a=1', 'a=1'); + AssertEqualsConv('', 'a="11"', 'a=''11'''); + AssertEqualsConv('', 'a="1\0471"', 'a=''1''''1'''); + AssertEqualsConv('', 'a="11"', 'a="11"'); + AssertEqualsConv('', 'a="11\061"', 'a=''11''#49'); + AssertEqualsConv('', 'a="1\061"', 'a=''1''#49'); + + AssertEqualsConv('', 'a=''1''', 'a=''1'''); +end; + initialization diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfp/fpdebugdebugger.pas lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfp/fpdebugdebugger.pas --- lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfp/fpdebugdebugger.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfp/fpdebugdebugger.pas 2016-02-10 19:00:30.000000000 +0000 @@ -207,9 +207,14 @@ { TFPCallStackSupplier } TFPCallStackSupplier = class(TCallStackSupplier) + private + FPrettyPrinter: TFpPascalPrettyPrinter; protected + function FpDebugger: TFpDebugDebugger; procedure DoStateLeavePause; override; public + constructor Create(const ADebugger: TDebuggerIntf); + destructor Destroy; override; procedure RequestCount(ACallstack: TCallStackBase); override; procedure RequestEntries(ACallstack: TCallStackBase); override; procedure RequestCurrent(ACallstack: TCallStackBase); override; @@ -405,6 +410,11 @@ { TFPCallStackSupplier } +function TFPCallStackSupplier.FpDebugger: TFpDebugDebugger; +begin + Result := TFpDebugDebugger(Debugger); +end; + procedure TFPCallStackSupplier.DoStateLeavePause; begin if (TFpDebugDebugger(Debugger).FDbgController <> nil) and @@ -415,6 +425,18 @@ inherited DoStateLeavePause; end; +constructor TFPCallStackSupplier.Create(const ADebugger: TDebuggerIntf); +begin + inherited Create(ADebugger); + FPrettyPrinter := TFpPascalPrettyPrinter.Create(sizeof(pointer)); +end; + +destructor TFPCallStackSupplier.Destroy; +begin + inherited Destroy; + FPrettyPrinter.Free; +end; + procedure TFPCallStackSupplier.RequestCount(ACallstack: TCallStackBase); var ThreadCallStack: TDbgCallstackEntryList; @@ -446,27 +468,77 @@ e: TCallStackEntry; It: TMapIterator; ThreadCallStack: TDbgCallstackEntryList; + v, params: String; + i: Integer; + ProcVal, m: TFpDbgValue; + RegList: TDbgRegisterValueList; + Reg: TDbgRegisterValue; + AController: TDbgController; + CurThreadId: Integer; + AContext: TFpDbgInfoContext; + OldContext: TFpDbgAddressContext; begin It := TMapIterator.Create(ACallstack.RawEntries); //TFpDebugDebugger(Debugger).FDbgController.CurrentProcess.MainThread.PrepareCallStackEntryList; - ThreadCallStack := TFpDebugDebugger(Debugger).FDbgController.CurrentProcess.MainThread.CallStackEntryList; + //CurThreadId := FpDebugger.Threads.CurrentThreads.CurrentThreadId; + //ThreadCallStack := FpDebugger.Threads.CurrentThreads.Entries[CurThreadId].CallStackEntryList; + + CurThreadId := FpDebugger.FDbgController.CurrentProcess.MainThread.ID; + ThreadCallStack := FpDebugger.FDbgController.CurrentProcess.MainThread.CallStackEntryList; if not It.Locate(ACallstack.LowestUnknown ) then if not It.EOM then It.Next; + AController := FpDebugger.FDbgController; + OldContext := FpDebugger.FMemManager.DefaultContext; + while (not IT.EOM) and (TCallStackEntry(It.DataPtr^).Index < ACallstack.HighestUnknown) do begin e := TCallStackEntry(It.DataPtr^); if e.Validity = ddsRequested then begin + if ThreadCallStack[e.Index].ProcSymbol <> nil then + ProcVal := ThreadCallStack[e.Index].ProcSymbol.Value; + + params := ''; + if (ProcVal <> nil) then begin + if e.Index = 0 then + RegList := AController.CurrentProcess.MainThread.RegisterValueList + else + RegList := ThreadCallStack[e.Index].RegisterValueList; + if AController.CurrentProcess.Mode=dm32 then + Reg := RegList.FindRegisterByDwarfIndex(8) + else + Reg := RegList.FindRegisterByDwarfIndex(16); + if Reg <> nil then begin + AContext := AController.CurrentProcess.DbgInfo.FindContext(CurThreadId, e.Index, Reg.NumValue); + if AContext <> nil then begin + AContext.MemManager.DefaultContext := AContext; + FPrettyPrinter.AddressSize := AContext.SizeOfAddress; + + for i := 0 to ProcVal.MemberCount - 1 do begin + m := ProcVal.Member[i]; + if (m <> nil) and (sfParameter in m.DbgSymbol.Flags) then begin + FPrettyPrinter.PrintValue(v, m, wdfDefault, -1, [ppoStackParam]); + if params <> '' then params := params + ', '; + params := params + v; + end; + end; + AContext.ReleaseReference; + end; + end; + end; + if params <> '' then + params := '(' + params + ')'; e.Init(ThreadCallStack[e.Index].AnAddress, nil, - ThreadCallStack[e.Index].FunctionName, ThreadCallStack[e.Index].SourceFile, + ThreadCallStack[e.Index].FunctionName+params, ThreadCallStack[e.Index].SourceFile, '', ThreadCallStack[e.Index].Line, ddsValid); end; It.Next; end; It.Free; + FpDebugger.FMemManager.DefaultContext := OldContext; end; procedure TFPCallStackSupplier.RequestCurrent(ACallstack: TCallStackBase); @@ -807,6 +879,7 @@ begin ASrcFileName:=sym.FileName; ASrcFileLine:=sym.Line; + sym.ReleaseReference; end else begin @@ -1268,6 +1341,7 @@ WatchValue.RemoveFreeNotification(@DoWatchFreed); EvaluateExpression(WatchValue, WatchValue.Expression, AVal, AType); + AType.Free; if (not FWatchAsyncQueued) and (FWatchEvalList.Count > 0) then begin @@ -1678,7 +1752,8 @@ inherited DoState(OldState); if not (State in [dsPause, dsInternalPause]) then begin - FWatchEvalList.Clear; + if Assigned(FWatchEvalList) then + FWatchEvalList.Clear; FWatchAsyncQueued := False; end; finally diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebuggercommands.inc lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebuggercommands.inc --- lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebuggercommands.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebuggercommands.inc 2015-06-18 19:05:49.000000000 +0000 @@ -0,0 +1,319 @@ +{ TFPDSendFilenameCommand } + +procedure TFPDSendFilenameCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','filename'); + AJsonObject.Add('filename',FFileName); +end; + +constructor TFPDSendFilenameCommand.create(AFileName: string); +begin + inherited create; + FFileName:=AFileName; +end; + +{ TFPDSendRunCommand } + +procedure TFPDSendRunCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +begin + FServerDebugger.DoOnRunFailed; +end; + +procedure TFPDSendRunCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','run'); +end; + +{ TFPDSendStepOutCommand } + +procedure TFPDSendStepOutCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','stepout'); +end; + +{ TFPDSendStepOverInstrCommand } + +procedure TFPDSendStepOverInstrCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','stepoverinstr'); +end; + +{ TFPDSendStepIntoInstrCommand } + +procedure TFPDSendStepIntoInstrCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','stepintoinstr'); +end; + +{ TFPDSendStepCommand } + +procedure TFPDSendStepCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','step'); +end; + +{ TFPDSendStopCommand } + +procedure TFPDSendStopCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','stop'); +end; + +{ TFPDSendNextCommand } + +procedure TFPDSendNextCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','next'); +end; + +{ TFPDSendDoCurrentCommand } + +procedure TFPDSendDoCurrentCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','getlocationinfo'); +end; + +procedure TFPDSendDoCurrentCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + LocRecJSon: TJSONObject; + LocRec: TDBGLocationRec; +begin + LocRecJSon := ACommandResponse.Find('locationRec') as TJSONObject; + if assigned(LocRecJSon) then + begin + LocRec.Address:=Hex2Dec(LocRecJSon.Get('address','0')); + LocRec.FuncName:=LocRecJSon.Get('funcName',''); + LocRec.SrcFile:=LocRecJSon.Get('srcFile',''); + LocRec.SrcFullName:=LocRecJSon.Get('srcFullName',''); + LocRec.SrcLine:=LocRecJSon.Get('srcLine',-1); + FServerDebugger.DoOnDoCurrentSuccessfull(LocRec); + end; +end; + +{ TFPDSendAddBreakpointCommand } + +procedure TFPDSendAddBreakpointCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +var + ABreakpoint: TFPBreakpoint; +begin + ABreakpoint := TFPBreakpoints(FServerDebugger.BreakPoints).FindByUID(CommandUID); + if assigned(ABreakpoint) then + begin + ABreakpoint.Address:=0; + ABreakpoint.SetInvalid; + ABreakpoint.DoChanged; + end; +end; + +procedure TFPDSendAddBreakpointCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + ABreakpoint: TFPBreakpoint; +begin + ABreakpoint := TFPBreakpoints(FServerDebugger.BreakPoints).FindByUID(CommandUID); + if assigned(ABreakpoint) then + begin + ABreakpoint.Address:=Hex2Dec(ACommandResponse.get('breakpointLocation','0')); + ABreakpoint.SetValid; + ABreakpoint.DoChanged; + end; +end; + +procedure TFPDSendAddBreakpointCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','addbreakpoint'); + if FFileName<>'' then + begin + AJsonObject.Add('filename',FFileName); + AJsonObject.Add('line',FLineNr); + end + else + begin + AJsonObject.Add('location', Dec2Numb(FLocation, 8, 16)); + end; +end; + +constructor TFPDSendAddBreakpointCommand.create(AFileName: string; ALineNr: integer); +begin + inherited create; + FFileName:=AFileName; + FLineNr:=ALineNr; +end; + +constructor TFPDSendAddBreakpointCommand.create(ALocation: TDBGPtr); +begin + inherited create; + FLocation:=ALocation; +end; + +{ TFPDSendContinueCommand } + +procedure TFPDSendContinueCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','continue'); +end; + +procedure TFPDSendContinueCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +begin + inherited DoOnCommandSuccesfull(ACommandResponse); + FServerDebugger.DoOnContinueSuccessfull; +end; + +{ TFPDSendCallStackCommand } + +procedure TFPDSendCallStackCommand.DoCallStackFreed(Sender: TObject); +begin + FCallStack:=nil; +end; + +procedure TFPDSendCallStackCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','stacktrace'); +end; + +constructor TFPDSendCallStackCommand.create(ACallStack: TCallStackBase; ACallStackSupplier: TCallStackSupplier); +begin + inherited create(True); + ACallStack.AddFreeNotification(@DoCallStackFreed); + FCallStack := ACallStack; + FCallStackSupplier := ACallStackSupplier; +end; + +destructor TFPDSendCallStackCommand.Destroy; +begin + if assigned(FCallStack) then + FCallStack.RemoveFreeNotification(@DoCallStackFreed); + inherited Destroy; +end; + +procedure TFPDSendCallStackCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + JSonCallStackArr: TJSONArray; + JSonCallStackEntryObj: TJSONObject; + e: TCallStackEntry; + It: TMapIterator; + AnAddress: TDBGPtr; + FunctionName: string; + SourceFile: string; + Line: integer; + +begin + inherited DoOnCommandSuccesfull(ACommandResponse); + if assigned(FCallStack) then + begin + JSonCallStackArr := ACommandResponse.Get('callstack', TJSONArray(nil)); + if assigned(JSonCallStackArr) and (JSonCallStackArr.Count>0) then + begin + FCallStack.Count:=JSonCallStackArr.Count; + FCallStack.SetCountValidity(ddsValid); + + It := TMapIterator.Create(FCallstack.RawEntries); + + if not It.Locate(FCallstack.LowestUnknown ) + then if not It.EOM + then It.Next; + + while (not IT.EOM) and (TCallStackEntry(It.DataPtr^).Index < FCallstack.HighestUnknown) do + begin + e := TCallStackEntry(It.DataPtr^); + if e.Validity = ddsRequested then + begin + JSonCallStackEntryObj := JSonCallStackArr.Items[e.Index] as TJSONObject; + + AnAddress:=Hex2Dec(JSonCallStackEntryObj.Get('address','0')); + FunctionName:=JSonCallStackEntryObj.Get('functionname',''); + SourceFile:=JSonCallStackEntryObj.Get('sourcefile',''); + Line:=JSonCallStackEntryObj.get('line',-1); + + e.Init(AnAddress, nil, FunctionName, SourceFile, '', Line, ddsValid); + end; + It.Next; + end; + It.Free; + FCallStack.SetCountValidity(ddsValid); + TFPCallStackSupplier(FCallStackSupplier).DoUpdate; + end + else + begin + FCallStack.SetCountValidity(ddsInvalid); + FCallStack.SetHasAtLeastCountInfo(ddsInvalid); + end; + end; +end; + +{ TFPDSendDisassembleCommand } + +procedure TFPDSendDisassembleCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','disassemble'); + if FStartAddr>0 then + AJsonObject.Add('address', Dec2Numb(FStartAddr, 8, 16)); + if FLinesAfter>0 then + AJsonObject.Add('linesafter', FLinesAfter); + if FLinesBefore>0 then + AJsonObject.Add('linesbefore', FLinesBefore); +end; + +constructor TFPDSendDisassembleCommand.create(ADisassembler: TDBGDisassembler; AStartAddr: TDBGPtr; ALinesBefore, ALinesAfter: integer); +begin + inherited create(true); + FDisassembler := ADisassembler; + FLinesBefore:=ALinesBefore; + FLinesAfter:=ALinesAfter; + FStartAddr:=AStartAddr; +end; + +procedure TFPDSendDisassembleCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + JSonCallStackArr: TJSONArray; + JSonCallStackEntryObj: TJSONObject; + ARange: TDBGDisassemblerEntryRange; + AnEntry: TDisassemblerEntry; + i: Integer; +begin + if assigned(FDisassembler) then + begin + JSonCallStackArr := ACommandResponse.Get('disassembly', TJSONArray(nil)); + if assigned(JSonCallStackArr) and (JSonCallStackArr.Count>0) then + begin + ARange := TDBGDisassemblerEntryRange.Create; + ARange.RangeStartAddr:=Hex2Dec(ACommandResponse.Get('startaddress', Dec2Numb(FStartAddr, 8, 16))); + for i := 0 to JSonCallStackArr.Count-1 do + begin + JSonCallStackEntryObj := JSonCallStackArr.Items[i] as TJSONObject; + AnEntry.Addr:=Hex2Dec(JSonCallStackEntryObj.Get('address', '0')); + AnEntry.Dump:=JSonCallStackEntryObj.Get('dump', ''); + AnEntry.Statement:=JSonCallStackEntryObj.Get('statement', ''); + AnEntry.SrcFileName:=JSonCallStackEntryObj.Get('srcfilename', ''); + AnEntry.SrcFileLine:=JSonCallStackEntryObj.Get('srcfileline', 0); + AnEntry.SrcStatementIndex:=JSonCallStackEntryObj.Get('srcstatementindex', 0); + AnEntry.SrcStatementCount:=JSonCallStackEntryObj.Get('srcstatementcount', 0); + AnEntry.FuncName:=JSonCallStackEntryObj.Get('functionname', ''); + AnEntry.Offset:=JSonCallStackEntryObj.Get('offset', 0); + ARange.Append(@AnEntry); + end; + ARange.RangeEndAddr:=Hex2Dec(ACommandResponse.Get('endaddress', Dec2Numb(AnEntry.Addr, 8, 16))); + ARange.LastEntryEndAddr:=Hex2Dec(ACommandResponse.Get('lastentryendaddress', '0')); + TFPDBGDisassembler(FDisassembler).AddRange(ARange); + end + end; +end; + +procedure TFPDSendCallStackCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +begin + FCallStack.SetCountValidity(ddsInvalid); +end; + + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas --- lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/fpdserverdebugger.pas 2015-12-04 17:34:49.000000000 +0000 @@ -0,0 +1,1535 @@ +unit FPDServerDebugger; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, + ssockets, + fgl, + forms, + DbgIntfDebuggerBase, + DbgIntfBaseTypes, + maps, + fpjson, + jsonparser, + BaseUnix, + LazLogger, + process, + dialogs, + syncobjs, + lazCollections, + lazutf8sysutils, + strutils, + SysUtils, UTF8Process; + +type + TThreadedQueueString = specialize TLazThreadedQueue<string>; + TFPDServerDebugger = class; + + { TFPDSendCommand } + + TFPDSendCommand = class + protected + FCommandUID: integer; + FServerDebugger: TFPDServerDebugger; + FAutomaticFree: boolean; + function GetAsString: string; virtual; + procedure ComposeJSon(AJsonObject: TJSONObject); virtual; + public + constructor create(AnAutomaticFree: boolean=true); virtual; + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); virtual; + procedure DoOnCommandReceived(ACommandResponse: TJSonObject); virtual; + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); virtual; + property CommandUID: integer read FCommandUID; + property AsString: string read GetAsString; + property AutomaticFree: boolean read FAutomaticFree; + end; + + { TFPDSendCommandList } + + TFPDCustomSendCommandList = specialize TFPGObjectList<TFPDSendCommand>; + TFPDSendCommandList = class(TFPDCustomSendCommandList) + public + function SearchByUID(const ACommandUID: integer): TFPDSendCommand; + end; + + { TFPDSendQuitDebugServerCommand } + + TFPDSendQuitDebugServerCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + end; + + { TFPDSendRunCommand } + + TFPDSendRunCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); override; + end; + + { TFPDSendContinueCommand } + + TFPDSendContinueCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + end; + + { TFPDSendNextCommand } + + TFPDSendNextCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + end; + + { TFPDSendStepCommand } + + TFPDSendStepCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + end; + + { TFPDSendStepIntoInstrCommand } + + TFPDSendStepIntoInstrCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + end; + + { TFPDSendStepOverInstrCommand } + + TFPDSendStepOverInstrCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + end; + + { TFPDSendStopCommand } + + TFPDSendStopCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + end; + + { TFPDSendStepOutCommand } + + TFPDSendStepOutCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + end; + + { TFPDSendFilenameCommand } + + TFPDSendFilenameCommand = class(TFPDSendCommand) + private + FFileName: string; + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(AFileName: string); virtual; + end; + + { TFPDSendAddBreakpointCommand } + + TFPDSendAddBreakpointCommand = class(TFPDSendCommand) + private + FFileName: string; + FLineNr: integer; + FLocation: TDBGPtr; + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); override; + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + constructor create(AFileName: string; ALineNr: integer); virtual; + constructor create(ALocation: TDBGPtr); virtual; + end; + + { TFPDSendRemoveBreakpointCommand } + + TFPDSendRemoveBreakpointCommand = class(TFPDSendCommand) + private + FLocation: TDBGPtr; + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(ALocation: TDBGPtr); virtual; + end; + + { TFPDSendDoCurrentCommand } + + TFPDSendDoCurrentCommand = class(TFPDSendCommand) + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + end; + + { TFPDSendEvaluateCommand } + + TFPDSendEvaluateCommand = class(TFPDSendCommand) + private + FExpression: string; + FValidity: TDebuggerDataState; + FMessage: string; + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(AnAutomaticFree: boolean; AnExpression: string); + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); override; + property Validity: TDebuggerDataState read FValidity; + property Message: string read FMessage; + end; + + { TFPDSendWatchEvaluateCommand } + + TFPDSendWatchEvaluateCommand = class(TFPDSendCommand) + private + FWatchValue: TWatchValue; + procedure DoWatchFreed(Sender: TObject); + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(AWatchValue: TWatchValue); + destructor Destroy; override; + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); override; + end; + + { TFPDSendCallStackCommand } + + TFPDSendCallStackCommand = class(TFPDSendCommand) + private + FCallStack: TCallStackBase; + FCallStackSupplier: TCallStackSupplier; + procedure DoCallStackFreed(Sender: TObject); + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(ACallStack: TCallStackBase; ACallStackSupplier: TCallStackSupplier); + destructor Destroy; override; + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); override; + end; + + { TFPDSendLocalsCommand } + + TFPDSendLocalsCommand = class(TFPDSendCommand) + private + FLocals: TLocals; + procedure DoLocalsFreed(Sender: TObject); + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(ALocals: TLocals); + destructor Destroy; override; + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); override; + end; + + { TFPDSendRegistersCommand } + + TFPDSendRegistersCommand = class(TFPDSendCommand) + private + FRegisters: TRegisters; + procedure DoRegistersFreed(Sender: TObject); + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(ARegisters: TRegisters); + destructor Destroy; override; + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + procedure DoOnCommandFailed(ACommandResponse: TJSonObject); override; + end; + + { TFPDSendDisassembleCommand } + + TFPDSendDisassembleCommand = class(TFPDSendCommand) + private + FDisassembler: TDBGDisassembler; + FStartAddr: TDBGPtr; + FLinesAfter: integer; + FLinesBefore: integer; + protected + procedure ComposeJSon(AJsonObject: TJSONObject); override; + public + constructor create(ADisassembler: TDBGDisassembler; AStartAddr: TDBGPtr; ALinesBefore, ALinesAfter: integer); + procedure DoOnCommandSuccesfull(ACommandResponse: TJSonObject); override; + end; + + { TFPDSocketThread } + + TFPDSocketThread = class(TThread) + private + FPort: integer; + FHostName: string; + FConnectionIdentifier: integer; + FDebugger: TFPDServerDebugger; + FSendQueue: TThreadedQueueString; + FErrMessage: string; + protected + procedure ReceivedCommand(Data: PtrInt); + procedure ConnectionProblem(Data: PtrInt); + procedure Execute; override; + public + constructor Create(ADebugger: TFPDServerDebugger; AHostName: string; APort: integer); + procedure SendString(AString: string); + destructor Destroy; override; + property ConnectionIdentifier: integer read FConnectionIdentifier; + end; + + { TFPDServerDebugger } + + TFPDServerDebugger = class(TDebuggerIntf) + private + FSocketThread: TFPDSocketThread; + FDebugServerStartedAsChild: boolean; + FIsConnected: boolean; + FDebugProcess: TProcessUTF8; + // This is a list of all commands send to the fpdebug-server, to handle the (asynchrounous) + // callback when a command is a succes or failure. + FCommandList: TFPDSendCommandList; + function ConnectToFPDServer: boolean; + procedure DisconnectFromFPDServer; + protected + // Overrides of TDebuggerIntf methods. + function GetSupportedCommands: TDBGCommands; override; + // Handle Notifications received from the FPDebug-server + procedure HandleNotification(ANotification: TJSONObject); + // Handle log-messages received from the FPDebug-server + procedure HandleLog(ALog: TJSONObject); + // Handle Events received from the FPDebug-server + procedure HandleEvent(ANotification: TJSONObject); + // Event-handlers for events received from the FPDebug-server + procedure DoHandleCreateProcessEvent(AnEvent: TJSONObject); + procedure DoHandleExitProcessEvent(AnEvent: TJSONObject); + procedure DoHandleBreakpointEvent(AnEvent: TJSONObject); + procedure DoHandleConsoleOutputEvent(AnEvent: TJSONObject); + public + constructor Create(const AExternalDebugger: String); override; + destructor Destroy; override; + // This function is called (in the main thread) by the TFPDSocketThread on each JSon-object received + // from the FPD-Server. + procedure ReceivedCommand(ACommand: TJSONObject); + // Queue a command for sending to the FPDebug-server. + procedure QueueCommand(ACommand: TFPDSendCommand); + // Overrides of TDebuggerIntf methods. + class function Caption: String; override; + function CreateBreakPoints: TDBGBreakPoints; override; + function CreateWatches: TWatchesSupplier; override; + function CreateLocals: TLocalsSupplier; override; + function CreateRegisters: TRegisterSupplier; override; + function CreateCallStack: TCallStackSupplier; override; + function CreateDisassembler: TDBGDisassembler; override; + function RequestCommand(const ACommand: TDBGCommand; const AParams: array of const): Boolean; override; + // These methods are called by several TFPDSendCommands after success or failure of a command. (Most common + // because the TFPDSendCommands do not have access to TFPDServerDebugger's protected methods theirself) + procedure DoOnRunFailed; + procedure DoOnContinueSuccessfull; + procedure DoOnDoCurrentSuccessfull(ALocRec: TDBGLocationRec); + // This procedure is called when the socket-thread is shut-down. + procedure DoOnConnectionProblem(AMessage: string); + end; + +procedure Register; + +implementation + +type + + { TFPBreakpoint } + + TFPBreakpoint = class(TDBGBreakPoint) + private + FSetBreakFlag: boolean; + FResetBreakFlag: boolean; + FIsSet: boolean; + FUID: integer; + procedure SetBreak; + procedure ResetBreak; + protected + procedure DoStateChange(const AOldState: TDBGState); override; + procedure DoEnableChange; override; + procedure DoChanged; override; + // Used in the succes or failure callbacks of the TFPDSendAddBreakpointCommand command to set the + // validity of the underlying breakpoint. + procedure SetValid; + procedure SetInvalid; + public + destructor Destroy; override; + property UID: integer read FUID; + end; + + { TFPBreakpoints } + + TFPBreakpoints = class(TDBGBreakPoints) + public + function FindByUID(AnUID: integer): TFPBreakpoint; + end; + + { TFPDBGDisassembler } + + TFPDBGDisassembler = class(TDBGDisassembler) + protected + function PrepareEntries(AnAddr: TDbgPtr; ALinesBefore, ALinesAfter: Integer): boolean; override; + public + // Used in the succes callback of the TFPDSendDisassembleCommand command to add + // the retrieved range of assembly instructions. + procedure AddRange(ARange: TDBGDisassemblerEntryRange); + end; + + { TFPLocals } + + TFPLocals = class(TLocalsSupplier) + public + procedure RequestData(ALocals: TLocals); override; + end; + + { TFPRegisters } + + TFPRegisters = class(TRegisterSupplier) + public + procedure RequestData(ARegisters: TRegisters); override; + end; + + { TFPWatches } + + TFPWatches = class(TWatchesSupplier) + protected + procedure InternalRequestData(AWatchValue: TWatchValue); override; + end; + + { TFPCallStackSupplier } + + TFPCallStackSupplier = class(TCallStackSupplier) + public + procedure RequestCount(ACallstack: TCallStackBase); override; + procedure RequestEntries(ACallstack: TCallStackBase); override; + procedure RequestCurrent(ACallstack: TCallStackBase); override; + // Used in the succes callback of the TFPDSendCallStackCommand command to trigger + // an update og the GUI after the callstack has been read. + procedure DoUpdate; + end; + + +procedure Register; +begin + RegisterDebugger(TFPDServerDebugger); +end; + +{ TFPDSendCommand } + +var GCommandUID: integer = 0; + +{ TFPRegisters } + +procedure TFPRegisters.RequestData(ARegisters: TRegisters); +begin + if (Debugger = nil) or not(Debugger.State = dsPause) + then begin + ARegisters.DataValidity:=ddsInvalid; + exit; + end; + + TFPDServerDebugger(Debugger).QueueCommand(TFPDSendRegistersCommand.create(ARegisters)); + ARegisters.DataValidity := ddsRequested; +end; + +{ TFPDSendRegistersCommand } + +procedure TFPDSendRegistersCommand.DoRegistersFreed(Sender: TObject); +begin + FRegisters := nil; +end; + +procedure TFPDSendRegistersCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','registers'); +end; + +constructor TFPDSendRegistersCommand.create(ARegisters: TRegisters); +begin + inherited create(true); + ARegisters.AddFreeNotification(@DoRegistersFreed); + FRegisters := ARegisters; +end; + +destructor TFPDSendRegistersCommand.Destroy; +begin + if assigned(FRegisters) then + FRegisters.RemoveFreeNotification(@DoRegistersFreed); + inherited Destroy; +end; + +procedure TFPDSendRegistersCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + JSonRegisterArr: TJSONArray; + JSonRegisterEntryObj: TJSONObject; + i: Integer; + RegisterValue: TRegisterValue; +begin + inherited DoOnCommandSuccesfull(ACommandResponse); + if assigned(FRegisters) then + begin + FRegisters.Clear; + + JSonRegisterArr := ACommandResponse.Get('registers', TJSONArray(nil)); + if assigned(JSonRegisterArr) and (JSonRegisterArr.Count>0) then + begin + for i := 0 to JSonRegisterArr.Count - 1 do + begin + JSonRegisterEntryObj := JSonRegisterArr.Items[i] as TJSONObject; + RegisterValue := FRegisters.EntriesByName[JSonRegisterEntryObj.Get('name', '')]; + RegisterValue.ValueObj.SetAsNum(JSonRegisterEntryObj.Get('numvalue', 0), JSonRegisterEntryObj.Get('size', 4)); + RegisterValue.ValueObj.SetAsText(JSonRegisterEntryObj.Get('value', '')); + RegisterValue.DataValidity:=ddsValid; + end; + FRegisters.DataValidity := ddsValid; + end + else + FRegisters.DataValidity := ddsInvalid; + end; +end; + +procedure TFPDSendRegistersCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +begin + FRegisters.DataValidity := ddsInvalid; +end; + +{ TFPDSendLocalsCommand } + +procedure TFPDSendLocalsCommand.DoLocalsFreed(Sender: TObject); +begin + FLocals:=nil; +end; + +procedure TFPDSendLocalsCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','locals'); +end; + +constructor TFPDSendLocalsCommand.create(ALocals: TLocals); +begin + inherited create(True); + ALocals.AddFreeNotification(@DoLocalsFreed); + FLocals := ALocals; +end; + +destructor TFPDSendLocalsCommand.Destroy; +begin + if assigned(FLocals) then + FLocals.RemoveFreeNotification(@DoLocalsFreed); + inherited Destroy; +end; + +procedure TFPDSendLocalsCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + JSonLocalsArr: TJSONArray; + JSonLocalsEntryObj: TJSONObject; + i: Integer; +begin + inherited DoOnCommandSuccesfull(ACommandResponse); + if assigned(FLocals) then + begin + FLocals.Clear; + JSonLocalsArr := ACommandResponse.Get('locals', TJSONArray(nil)); + if assigned(JSonLocalsArr) and (JSonLocalsArr.Count>0) then + begin + for i := 0 to JSonLocalsArr.Count - 1 do + begin + JSonLocalsEntryObj := JSonLocalsArr.Items[i] as TJSONObject; + FLocals.Add(JSonLocalsEntryObj.Get('name', ''), JSonLocalsEntryObj.Get('value', '')); + end; + end; + FLocals.SetDataValidity(ddsValid); + end; +end; + +procedure TFPDSendLocalsCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +begin + FLocals.SetDataValidity(ddsInvalid); +end; + +procedure TFPLocals.RequestData(ALocals: TLocals); +begin + if (Debugger = nil) or not(Debugger.State = dsPause) + then begin + ALocals.SetDataValidity(ddsInvalid); + exit; + end; + + TFPDServerDebugger(Debugger).QueueCommand(TFPDSendLocalsCommand.create(ALocals)); + ALocals.SetDataValidity(ddsRequested); +end; + +{ TFPDBGDisassembler } + +function TFPDBGDisassembler.PrepareEntries(AnAddr: TDbgPtr; ALinesBefore, ALinesAfter: Integer): boolean; +begin + TFPDServerDebugger(Debugger).QueueCommand(TFPDSendDisassembleCommand.create(self, AnAddr, ALinesBefore, ALinesAfter)); + result := false; +end; + +procedure TFPDBGDisassembler.AddRange(ARange: TDBGDisassemblerEntryRange); +begin + EntryRanges.AddRange(ARange); + Changed; +end; + +{ TFPCallStackSupplier } + +procedure TFPCallStackSupplier.RequestCount(ACallstack: TCallStackBase); +begin + if (Debugger = nil) or not(Debugger.State = dsPause) + then begin + ACallstack.SetCountValidity(ddsInvalid); + exit; + end; + + TFPDServerDebugger(Debugger).QueueCommand(TFPDSendCallStackCommand.create(ACallstack, Self)); + ACallstack.SetCountValidity(ddsRequested); +end; + +procedure TFPCallStackSupplier.RequestEntries(ACallstack: TCallStackBase); +begin + if (Debugger = nil) or not(Debugger.State = dsPause) + then begin + ACallstack.SetCountValidity(ddsInvalid); + exit; + end; +end; + +procedure TFPCallStackSupplier.RequestCurrent(ACallstack: TCallStackBase); +begin + ACallstack.CurrentIndex := 0; + ACallstack.SetCurrentValidity(ddsValid); +end; + +procedure TFPCallStackSupplier.DoUpdate; +begin + Changed; +end; + +{ TFPDSendWatchEvaluateCommand } + +procedure TFPDSendWatchEvaluateCommand.DoWatchFreed(Sender: TObject); +begin + FWatchValue:=nil; +end; + +procedure TFPDSendWatchEvaluateCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','evaluate'); + AJsonObject.Add('expression',FWatchValue.Expression); +end; + +constructor TFPDSendWatchEvaluateCommand.create(AWatchValue: TWatchValue); +begin + inherited create(true); + AWatchValue.AddFreeNotification(@DoWatchFreed); + FWatchValue := AWatchValue; +end; + +destructor TFPDSendWatchEvaluateCommand.Destroy; +begin + FWatchValue.RemoveFreeNotification(@DoWatchFreed); + inherited Destroy; +end; + +procedure TFPDSendWatchEvaluateCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + s: string; + i: TDebuggerDataState; +begin + inherited DoOnCommandSuccesfull(ACommandResponse); + + if assigned(FWatchValue) then + begin + FWatchValue.Value:=ACommandResponse.Get('message',''); + s := ACommandResponse.Get('validity',''); + FWatchValue.Validity:=ddsError; + for i := low(TDebuggerDataState) to high(TDebuggerDataState) do + if DebuggerDataStateStr[i]=s then + begin + FWatchValue.Validity:=i; + break; + end; + end; +end; + +procedure TFPDSendWatchEvaluateCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +begin + inherited DoOnCommandFailed(ACommandResponse); + FWatchValue.Validity:=ddsInvalid; +end; + +{ TFPWatches } + +procedure TFPWatches.InternalRequestData(AWatchValue: TWatchValue); +begin + TFPDServerDebugger(Debugger).QueueCommand(TFPDSendWatchEvaluateCommand.create(AWatchValue)); + inherited InternalRequestData(AWatchValue); +end; + +{ TFPDSendEvaluateCommand } + +procedure TFPDSendEvaluateCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','evaluate'); + AJsonObject.Add('expression',FExpression); +end; + +constructor TFPDSendEvaluateCommand.create(AnAutomaticFree: boolean; AnExpression: string); +begin + FExpression:=AnExpression; + FValidity:=ddsRequested; + inherited create(AnAutomaticFree); +end; + +procedure TFPDSendEvaluateCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +var + s: string; + i: TDebuggerDataState; +begin + inherited DoOnCommandSuccesfull(ACommandResponse); + FMessage:=ACommandResponse.Get('message',''); + s := ACommandResponse.Get('validity',''); + FValidity:=ddsError; + for i := low(TDebuggerDataState) to high(TDebuggerDataState) do + if DebuggerDataStateStr[i]=s then + begin + FValidity:=i; + break; + end; +end; + +procedure TFPDSendEvaluateCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +begin + inherited DoOnCommandFailed(ACommandResponse); + FValidity:=ddsInvalid; +end; + +{ TFPDSendQuitDebugServerCommand } + +procedure TFPDSendQuitDebugServerCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','quitdebugserver'); +end; + +{ TFPDSendRemoveBreakpointCommand } + +procedure TFPDSendRemoveBreakpointCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + inherited ComposeJSon(AJsonObject); + AJsonObject.Add('command','removebreakpoint'); + AJsonObject.Add('location', Dec2Numb(FLocation, 8, 16)); +end; + +constructor TFPDSendRemoveBreakpointCommand.create(ALocation: TDBGPtr); +begin + inherited create; + FLocation:=ALocation; +end; + +{ TFPDSendResetBreakpointCommand } + +function TFPDSendCommand.GetAsString: string; +var + AJsonObject: TJSONObject; +begin + AJsonObject := TJSONObject.Create; + try + ComposeJSon(AJsonObject); + result := AJsonObject.AsJSON; + finally + AJsonObject.Free; + end; +end; + +procedure TFPDSendCommand.ComposeJSon(AJsonObject: TJSONObject); +begin + AJsonObject.Add('uid', FCommandUID); +end; + +constructor TFPDSendCommand.create(AnAutomaticFree: boolean); +begin + inc(GCommandUID); + FCommandUID := GCommandUID; + FAutomaticFree:=AnAutomaticFree; +end; + +procedure TFPDSendCommand.DoOnCommandSuccesfull(ACommandResponse: TJSonObject); +begin + // Do nothing +end; + +procedure TFPDSendCommand.DoOnCommandReceived(ACommandResponse: TJSonObject); +begin + // Do nothing +end; + +procedure TFPDSendCommand.DoOnCommandFailed(ACommandResponse: TJSonObject); +begin + // Do nothing; +end; + +{ TFPDSendCommandList } + +function TFPDSendCommandList.SearchByUID(const ACommandUID: integer): TFPDSendCommand; +var + i: Integer; +begin + for i := 0 to count -1 do + begin + if Items[i].CommandUID = ACommandUID then + begin + result := items[i]; + exit; + end; + end; + result := nil; +end; + +{$I fpdserverdebuggercommands.inc} + +{ TFPBreakpoint } + +procedure TFPBreakpoint.SetBreak; +var + ASendCommand: TFPDSendCommand; +begin + ASendCommand := nil; + case Kind of + bpkAddress: ASendCommand := TFPDSendAddBreakpointCommand.create(Address); + bpkSource: ASendCommand := TFPDSendAddBreakpointCommand.create(Source, Line); + else + Raise Exception.Create('Breakpoints of this kind are not suported.'); + end; + if assigned(ASendCommand) then + begin + FUID:=ASendCommand.CommandUID; + TFPDServerDebugger(Debugger).QueueCommand(ASendCommand); + end; + FIsSet:=true; +end; + +procedure TFPBreakpoint.ResetBreak; +begin + if assigned(Debugger) then + TFPDServerDebugger(Debugger).QueueCommand(TFPDSendRemoveBreakpointCommand.create(Address)); + FIsSet:=false; +end; + +procedure TFPBreakpoint.DoStateChange(const AOldState: TDBGState); +begin + if (Debugger.State in [dsPause, dsInternalPause]) then + begin + if Enabled and not FIsSet then + begin + FSetBreakFlag:=true; + Changed; + end + else if not enabled and FIsSet then + begin + FResetBreakFlag:=true; + Changed; + end; + end + else if Debugger.State = dsStop then + begin + FIsSet:=false; + end; + inherited DoStateChange(AOldState); +end; + +procedure TFPBreakpoint.DoEnableChange; +begin + if (Debugger.State in [dsPause, dsInit, dsRun]) then + begin + if FEnabled and not FIsSet then + FSetBreakFlag := True + else if not FEnabled and FIsSet then + FResetBreakFlag := True; + end; + inherited; +end; + +procedure TFPBreakpoint.DoChanged; +begin + if FResetBreakFlag and not FSetBreakFlag then + ResetBreak + else if FSetBreakFlag then + SetBreak; + + FSetBreakFlag := false; + FResetBreakFlag := false; + + inherited DoChanged; +end; + +procedure TFPBreakpoint.SetValid; +begin + FValid:=vsValid; +end; + +procedure TFPBreakpoint.SetInvalid; +begin + FValid:=vsInvalid; +end; + +destructor TFPBreakpoint.Destroy; +begin + if FIsSet then + ResetBreak; + inherited Destroy; +end; + +function TFPBreakpoints.FindByUID(AnUID: integer): TFPBreakpoint; +var + i: integer; +begin + for i := 0 to Count-1 do + if TFPBreakpoint(Items[i]).UID=AnUID then + begin + result := TFPBreakpoint(Items[i]); + exit; + end; + result := nil; +end; + +{ TFPDSocketThread } + +procedure TFPDSocketThread.ReceivedCommand(Data: PtrInt); +var + ACommand: TJSONObject; +begin + ACommand := TObject(data) as TJSONObject; + FDebugger.ReceivedCommand(ACommand); + ACommand.Free; +end; + +procedure TFPDSocketThread.ConnectionProblem(Data: PtrInt); +begin + FDebugger.DoOnConnectionProblem(FErrMessage); +end; + +procedure TFPDSocketThread.Execute; +const + InputBufferSize = 1024; +var + SendStr: string; + s: string; + i: integer; + InputStr: string; + JSonData: TJSONData; + ASocket: TInetSocket; + + function ReadString: string; + var + InputBuffer: array[0..InputBufferSize-1] of char; + s: string; + begin + // First see if there is a string left in the input-buffer. + i := pos(#10, InputStr); + if i > 0 then + begin + s := copy(InputStr, 1, i-1); + delete(InputStr,1,i); + result := s; + exit; + end; + + result := ''; + i := ASocket.Read(InputBuffer[0], InputBufferSize-1); + if i=0 then + begin + // Connection closed + FErrMessage := 'Connection with FPDebug-server closed.'; + Terminate; + end + else if i<0 then + begin + if ASocket.LastError<>35 {EAGAIN} then + begin + FErrMessage := 'Error during write to FPDebug-server. Socket-error: '+inttostr(ASocket.LastError); + Terminate; + end; + end + else if i > 0 then + begin + setlength(s,i); + move(InputBuffer[0],s[1],i); + InputStr:=InputStr+s; + i := pos(#10, InputStr); + if i > 0 then + begin + s := copy(InputStr, 1, i-1); + delete(InputStr,1,i); + result := s; + end; + end; + end; + + function ReadSTringTimeout(ATimeout: integer): string; + var + tc: int64; + begin + tc := GetTickCount64; + result := ReadString; + while not terminated and (result='') and ((GetTickCount64-tc)<ATimeout) do + begin + sleep(1); + result := ReadString; + end; + end; + +var + IsConnected: boolean; +begin + IsConnected:=false; + FErrMessage:=''; + try + ASocket := TInetSocket.Create(FHostName, FPort); + try + if not assigned(ASocket) then + begin + FErrMessage:='Failed to connect to fpdebug-server at '+FHostName+':'+IntToStr(FPort); + Terminate; + end + else + begin + // Set non-blocking + fpfcntl(ASocket.Handle,F_SETFL,O_NONBLOCK); + + // Read and check FPDebug Server greeting + s := ReadSTringTimeout(100); + if s='Welcome to FPDebug-server.' then + begin + // Read connection-identifier + s := ReadSTringTimeout(100); + delete(s,length(s),1); + s := copy(s, rpos(' ',s)+1, 5); + FConnectionIdentifier:=StrToIntDef(s,-1); + if FConnectionIdentifier>-1 then + begin + // Skip help-message + s := ReadSTringTimeout(100); + IsConnected:=True; + end; + end; + + if not IsConnected then + begin + FErrMessage:='Connected to '+FHostName+':'+inttostr(FPort)+', but failed to negotiate handshake.'; + Terminate; + end; + end; + + while not terminated do + begin + repeat + s:=ReadString; + if s<>'' then + begin + JSonData := GetJSON(s); + if JSonData is TJSONObject then + Application.QueueAsyncCall(@ReceivedCommand, ptrint(JSonData)) + else + raise exception.CreateFmt('JSon-command %s is not a JSON-Object.',[s]); + end; + // When one string has been received, there is a large chance that there is more + // input waiting. Keep checking for input until the input-buffer is empty, before + // the thread starts waiting for new commands using FSendQueue.PopItem. + until s=''; + + if not terminated and (FSendQueue.PopItem(SendStr) = wrSignaled) then + begin + SendStr := SendStr + #10; + i := ASocket.Write(SendStr[1], length(SendStr)); + + if i < 0 then + begin + if ASocket.LastError=32 then + begin + // Lost connection + end + else + DebugLn(Format('Error during write. Socket-error: %d',[ASocket.LastError])); + Terminate; + end + else if i < length(SendStr) then + raise exception.create('Message has not been send to client entirely'); + end; + end; + finally + ASocket.Free; + end; + except + on E: Exception do + begin + FErrMessage:='Exception on connection with FPDebug-server: ' + E.Message; + end; + end; + + // There are two different ways in which the thread can terminate: + // 1: The thread terminates itself, due to a lost connection or similar problem. In that case the + // thread is freed in the TFPDServerDebugger.DoConnectionProblem method. + // 2: TFPDServerDebugger.Destroy terminates the thread. In that case it will also free the thread, and + // the asynchrounous call to ConnectionProblem is removed from the async-queue. + Application.QueueAsyncCall(@ConnectionProblem, 0); +end; + +constructor TFPDSocketThread.Create(ADebugger: TFPDServerDebugger; + AHostName: string; APort: integer); +begin + FHostName:=AHostName; + FPort:=APort; + FDebugger := ADebugger; + FSendQueue:=TThreadedQueueString.create(100, INFINITE, 100); + inherited create(false); +end; + +procedure TFPDSocketThread.SendString(AString: string); +begin + if Assigned(FDebugger.OnDbgOutput) then + FDebugger.OnDbgOutput(Self, 'send: '+AString); + FSendQueue.PushItem(AString); +end; + +destructor TFPDSocketThread.Destroy; +begin + FSendQueue.Free; + Application.RemoveAsyncCalls(Self); + inherited destroy; +end; + +{ TFPDServerDebugger } + +function TFPDServerDebugger.ConnectToFPDServer: boolean; +var + buff,s: string; + dw: dword; + tc: Int64; + js: TJSONData; + port: integer; +begin + if not FIsConnected then + begin + result := false; + port := -1; + if pos('gdb', LowerCase(ExtractFileName(ExternalDebugger)))>0 then + ShowMessage('The name of the external debugger contains ''gdb''. The currently selected FPDebug-debugger can not work in combination with gdb. The debugger will most likely fail to start.'); + FDebugProcess := TProcessUTF8.Create(nil); + try + try + FDebugProcess.Executable:=ExternalDebugger; + FDebugProcess.Options:=[poUsePipes, poNoConsole, poNewProcessGroup]; + FDebugProcess.Parameters.Add('--tcp'); + FDebugProcess.Parameters.Add('--daemon'); + FDebugProcess.Parameters.Add('--autoport'); + FDebugProcess.Parameters.Add('--interactive'); + FDebugProcess.ShowWindow:=swoNone; + + DoDbgOutput('Start debugger: '+FDebugProcess.Executable + ' ' + StringReplace(FDebugProcess.Parameters.Text,LineEnding,' ',[rfReplaceAll])); + + FDebugProcess.Execute; + // Wait and scan output for tcp/ip port number + s := ''; + buff := ''; + dw := 0; + tc := GetTickCount64; + while FDebugProcess.Running and ((GetTickCount64-tc)<5000) and (dw<1) do + begin + dw := FDebugProcess.Output.NumBytesAvailable; + if dw > 0 then + begin + setlength(buff, dw); + FDebugProcess.Output.ReadBuffer(buff[1], dw); + s := s + buff; + dw := pos(#10,s); + end; + sleep(5); + end; + if dw>0 then + begin + s := copy(s,1,dw); + + DoDbgOutput('recv stdin: '+S); + + js := GetJSON(s); + try + if js.JSONType=jtObject then + port := TJSONObject(js).Get('port',-1); + finally + js.Free; + end; + if port<1 then + ShowMessage('No valid TCP/IP port to bind to FPDebug Server'); + end + else + ShowMessage('Invalid response from FPDebug Server'); + except + on E: Exception do + ShowMessage('Failed to run FPDebug Server: '+E.Message); + end; + finally + if port<1 then + FDebugProcess.Free; + end; + + if port>-1 then + begin + FSocketThread := TFPDSocketThread.Create(Self, '127.0.0.1', port); + FDebugServerStartedAsChild:=true; + FIsConnected:=true; + result := true; + end; + end + else + result := true; +end; + +procedure TFPDServerDebugger.DisconnectFromFPDServer; +begin + if FDebugServerStartedAsChild then + begin + // Try to send the FPDebug server the command to terminate. It could be that + // the server is already gone, but try anyway and give it some time to terminate + // by itself. + QueueCommand(TFPDSendQuitDebugServerCommand.create); + WaitForThreadTerminate(FSocketThread.Handle, 1000); + end; + + FSocketThread.Terminate; + FSocketThread.WaitFor; + FSocketThread.Free; + + if FDebugServerStartedAsChild then + begin + if FDebugProcess.Running then + FDebugProcess.Terminate(1); + FDebugProcess.Free; + end; +end; + +function TFPDServerDebugger.GetSupportedCommands: TDBGCommands; +begin + Result:=[dcRun, dcStepOver, dcStepInto, dcStepOut, dcStepOverInstr, dcStepIntoInstr, dcStop, dcEvaluate]; +end; + +procedure TFPDServerDebugger.DoHandleCreateProcessEvent(AnEvent: TJSONObject); +begin + SetState(dsInternalPause); + QueueCommand(TFPDSendContinueCommand.create); +end; + +procedure TFPDServerDebugger.DoHandleExitProcessEvent(AnEvent: TJSONObject); +begin + SetState(dsStop); +end; + +procedure TFPDServerDebugger.DoHandleBreakpointEvent(AnEvent: TJSONObject); +var + BrkLocation: string; + Brk: TDBGBreakPoint; + Continue: boolean; +begin + BrkLocation:=AnEvent.Get('breakpointLocation',''); + if BrkLocation<>'' then + begin + Brk := BreakPoints.Find(Hex2Dec(BrkLocation)); + if not assigned(brk) then + debugln('Break on unknown breakpoint') + else + begin + brk.Hit(Continue); + if Continue then + begin + QueueCommand(TFPDSendContinueCommand.create); + Exit; + end; + end; + end; + + SetState(dsPause); + QueueCommand(TFPDSendDoCurrentCommand.create); +end; + +procedure TFPDServerDebugger.DoHandleConsoleOutputEvent(AnEvent: TJSONObject); +var + AMessage: string; +begin + AMessage:=AnEvent.Get('message',''); + OnConsoleOutput(Self, AMessage); +end; + +procedure TFPDServerDebugger.HandleNotification(ANotification: TJSONObject); +var + NotificationType: string; + UID: integer; + SendCommand: TFPDSendCommand; +begin + // Ignore notifications from other connections + if ANotification.get('connIdentifier',-1)=FSocketThread.ConnectionIdentifier then + begin + NotificationType:=ANotification.Get('notificationType',''); + case NotificationType of + 'InvalidCommand': + raise exception.CreateFmt('The FPD-Server complains about an invalid command: %s',[ANotification.get('message', '-')]); + 'ExecutedCommand', 'FailedCommand', 'ReceivedCommand': + begin + uid := ANotification.get('uid',-1); + if uid > -1 then + begin + SendCommand := FCommandList.SearchByUID(uid); + if assigned(SendCommand) then + begin + case NotificationType of + 'ExecutedCommand': + begin + SendCommand.DoOnCommandSuccesfull(ANotification); + if SendCommand.AutomaticFree then + FCommandList.Remove(SendCommand) + else + FCommandList.Extract(SendCommand); + end; + 'FailedCommand' : + begin + SendCommand.DoOnCommandFailed(ANotification); + if SendCommand.AutomaticFree then + FCommandList.Remove(SendCommand) + else + FCommandList.Extract(SendCommand); + end; + 'ReceivedCommand': + SendCommand.DoOnCommandReceived(ANotification); + end; {case} + end + else + debugln('Received command-notification for unknown command-uid '+inttostr(UID)); + end + else + debugln('Received command notification without UID'); + end; + end; {case} + end; +end; + +procedure TFPDServerDebugger.HandleLog(ALog: TJSONObject); +var + LogType: string; + Message: string; +begin + LogType:=ALog.get('logType',''); + Message:=ALog.Get('message',''); + case LogType of + 'debug' : DebugLn(Message); + 'info' : ShowMessage(Message); + 'error' : raise Exception.Create(Message); + else + raise Exception.CreateFmt('Received unknown log-type from FPDebug-server. (%s)', [LogType]); + end; {case} +end; + +procedure TFPDServerDebugger.HandleEvent(ANotification: TJSONObject); +var + EventName: string; +begin + EventName:=ANotification.get('eventName',''); + case EventName of + 'CreateProcess' : DoHandleCreateProcessEvent(ANotification); + 'ExitProcess' : DoHandleExitProcessEvent(ANotification); + 'BreakPoint' : DoHandleBreakPointEvent(ANotification); + 'ConsoleOutput' : DoHandleConsoleOutputEvent(ANotification); + else + debugln('Received unknown event: '+EventName); + end; +end; + +procedure TFPDServerDebugger.QueueCommand(ACommand: TFPDSendCommand); +begin + ACommand.FServerDebugger := self; + FCommandList.Add(ACommand); + FSocketThread.SendString(ACommand.AsString); +end; + +constructor TFPDServerDebugger.Create(const AExternalDebugger: String); +begin + inherited Create(AExternalDebugger); + FCommandList := TFPDSendCommandList.Create(true); +end; + +destructor TFPDServerDebugger.Destroy; +begin + if FIsConnected then + DisconnectFromFPDServer; + FCommandList.Free; + inherited Destroy; +end; + +procedure TFPDServerDebugger.ReceivedCommand(ACommand: TJSONObject); +var + TypeStr: string; +begin + DoDbgOutput('recv: '+ACommand.AsJSON); + + TypeStr := ACommand.Get('type',''); + case TypeStr of + 'event' : HandleEvent(ACommand); + 'log' : HandleLog(ACommand); + 'notification' : HandleNotification(ACommand); + else + raise Exception.CreateFmt('Received unknown event-type. (%s)',[TypeStr]); + end; +end; + +class function TFPDServerDebugger.Caption: String; +begin + Result:='FpDebug external Dwarf-debugger (fpdserver, alpha)'; +end; + +function TFPDServerDebugger.CreateBreakPoints: TDBGBreakPoints; +begin + Result := TFPBreakPoints.Create(Self, TFPBreakpoint); +end; + +function TFPDServerDebugger.CreateWatches: TWatchesSupplier; +begin + Result := TFPWatches.Create(Self); +end; + +function TFPDServerDebugger.CreateLocals: TLocalsSupplier; +begin + Result := TFPLocals.Create(Self); +end; + +function TFPDServerDebugger.CreateRegisters: TRegisterSupplier; +begin + Result:=TFPRegisters.Create(Self); +end; + +function TFPDServerDebugger.CreateCallStack: TCallStackSupplier; +begin + Result:=TFPCallStackSupplier.Create(Self); +end; + +function TFPDServerDebugger.CreateDisassembler: TDBGDisassembler; +begin + Result:=TFPDBGDisassembler.Create(Self); +end; + +function TFPDServerDebugger.RequestCommand(const ACommand: TDBGCommand; const AParams: array of const): Boolean; +var + ASendCommand: TFPDSendEvaluateCommand; + tc: qword; +begin + result := true; + case ACommand of + dcRun: + begin + if State in [dsPause, dsInternalPause] then + begin + QueueCommand(TFPDSendContinueCommand.create); + end + else + begin + result := ConnectToFPDServer; + if result then + begin + QueueCommand(TFPDSendFilenameCommand.create(FileName)); + QueueCommand(TFPDSendRunCommand.create); + SetState(dsInit); + end + else + SetState(dsStop); + end; + end; + dcStepOver: + begin + QueueCommand(TFPDSendNextCommand.create); + SetState(dsRun); + end; + dcStepInto: + begin + QueueCommand(TFPDSendStepCommand.create); + SetState(dsRun); + end; + dcStepIntoInstr: + begin + QueueCommand(TFPDSendStepIntoInstrCommand.create); + SetState(dsRun); + end; + dcStepOverInstr: + begin + QueueCommand(TFPDSendStepOverInstrCommand.create); + SetState(dsRun); + end; + dcStepOut: + begin + QueueCommand(TFPDSendStepOutCommand.create); + SetState(dsRun); + end; + dcStop: + begin + QueueCommand(TFPDSendStopCommand.create); + if state=dsPause then + SetState(dsRun); + end; + dcEvaluate: + begin + ASendCommand := TFPDSendEvaluateCommand.create(False, String(AParams[0].VAnsiString)); + QueueCommand(ASendCommand); + tc := GetTickCount64; + repeat + sleep(5); + Application.ProcessMessages; + until (ASendCommand.Validity<>ddsRequested) or ((GetTickCount64-tc)>2000); + String(AParams[1].VPointer^) := ASendCommand.Message; + TDBGType(AParams[2].VPointer^) := nil; + ASendCommand.Free; + end + else + result := false; + end; +end; + +procedure TFPDServerDebugger.DoOnRunFailed; +begin + // TDebuggerIntf.SetFileName has set the state to dsStop, to make sure + // that dcRun could be requested. Reset the filename so that the state + // is set to dsIdle again and is set to dsStop on the next try + // to run. + FileName := '' +end; + +procedure TFPDServerDebugger.DoOnContinueSuccessfull; +begin + SetState(dsRun); +end; + +procedure TFPDServerDebugger.DoOnDoCurrentSuccessfull(ALocRec: TDBGLocationRec); +begin + DoCurrent(ALocRec); +end; + +procedure TFPDServerDebugger.DoOnConnectionProblem(AMessage: string); +begin + if AMessage<>'' then + ShowMessage(AMessage); + FIsConnected:=false; + DisconnectFromFPDServer; + SetState(dsStop); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.lpk lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.lpk --- lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.lpk 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.lpk 2015-05-14 13:35:15.000000000 +0000 @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <Package Version="4"> + <Name Value="LazDebuggerFPDServer"/> + <Type Value="DesignTime"/> + <Author Value="Joost van der Sluis"/> + <CompilerOptions> + <Version Value="11"/> + <SearchPaths> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Description Value="Use fpdserver to debug applications"/> + <Version Minor="1"/> + <Files Count="2"> + <Item1> + <Filename Value="fpdserverdebugger.pas"/> + <HasRegisterProc Value="True"/> + <UnitName Value="FPDServerDebugger"/> + </Item1> + <Item2> + <Filename Value="fpdserverdebuggercommands.inc"/> + <Type Value="Binary"/> + </Item2> + </Files> + <RequiredPkgs Count="2"> + <Item1> + <PackageName Value="DebuggerIntf"/> + </Item1> + <Item2> + <PackageName Value="FCL"/> + </Item2> + </RequiredPkgs> + <UsageOptions> + <UnitPath Value="$(PkgOutDir)"/> + </UsageOptions> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <CustomOptions Items="ExternHelp" Version="2"> + <_ExternHelp Items="Count"/> + </CustomOptions> + </Package> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.pas lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.pas --- lazarus-1.4.4+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.pas 2015-05-14 13:35:15.000000000 +0000 @@ -0,0 +1,21 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit LazDebuggerFPDServer; + +interface + +uses + FPDServerDebugger, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('FPDServerDebugger', @FPDServerDebugger.Register); +end; + +initialization + RegisterPackage('LazDebuggerFPDServer', @Register); +end. diff -Nru lazarus-1.4.4+dfsg/components/lazreport/images/package_images.sh lazarus-1.6+dfsg/components/lazreport/images/package_images.sh --- lazarus-1.4.4+dfsg/components/lazreport/images/package_images.sh 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/images/package_images.sh 2015-09-20 15:54:45.000000000 +0000 @@ -0,0 +1,2 @@ +../../../tools/lazres ../source/lr_register.res @Package_images.txt +../../../tools/lazres ../source/bullets.res bitmaps/bulletgray.png bitmaps/bulletgreen.png designer/lrd_ins_fields.bmp \ No newline at end of file Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/lazreport/samples/editor/db/disco.dbf and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/lazreport/samples/editor/db/disco.dbf differ diff -Nru lazarus-1.4.4+dfsg/components/lazreport/samples/editor/languages/calleditorwithpkg.hu.po lazarus-1.6+dfsg/components/lazreport/samples/editor/languages/calleditorwithpkg.hu.po --- lazarus-1.4.4+dfsg/components/lazreport/samples/editor/languages/calleditorwithpkg.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/samples/editor/languages/calleditorwithpkg.hu.po 2015-12-01 21:27:14.000000000 +0000 @@ -64,7 +64,7 @@ #: maincalleditor.cerhintthumbnails msgid "This Action will Load and Preview a thumbnails Report" -msgstr "Ez a művelet betölti és megjeleníti a jelentés bélyegképét" +msgstr "Ez a művelet betölti és megjeleníti a \"Bélyegképek\" jelentést" #: maincalleditor.cerindex msgctxt "maincalleditor.cerindex" @@ -217,3 +217,4 @@ #: tfrmmain.menuitem9.caption msgid "Export" msgstr "Exportálás" + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/cairoexport/lr_e_cairo.pas lazarus-1.6+dfsg/components/lazreport/source/addons/cairoexport/lr_e_cairo.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/cairoexport/lr_e_cairo.pas 2014-05-07 05:12:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/cairoexport/lr_e_cairo.pas 2015-06-04 19:29:18.000000000 +0000 @@ -68,7 +68,7 @@ procedure Frame(View: TfrView; x, y, h, w: integer); procedure ShowFrame(View: TfrView; x, y, h, w: integer); procedure Line(View: TfrView; x1,y1, x2,y2: Integer); - procedure ShowBarCode(View: TfrBarCodeView; x, y, h, w: integer); + procedure ShowBarCode(View: TfrCustomBarCodeView; x, y, h, w: integer); procedure ShowPicture(View: TfrPictureView; x, y, h, w: integer); procedure ShowRoundRect(View: TfrRoundRectView; x, y, h, w: integer); procedure ShowShape(View: TfrShapeView; x, y, h, w: integer); @@ -80,6 +80,7 @@ end; implementation +uses LR_Utils; // missing cairo functions to make shared images posible const @@ -158,18 +159,18 @@ ndx: Integer); begin if (View.FillColor <> clNone) - and not (View is TfrBarCodeView) + and not (View is TfrCustomBarCodeView) and not ((View is TfrPictureView) and TfrPictureView(View).Stretched and not TfrPictureView(View).KeepAspect) then ShowBackGround(View, nx, ny, ndy, ndx); - if View is TfrBarCodeView then - ShowBarCode(TfrBarCodeView(View), nx, ny, ndy, ndx) + if View is TfrCustomBarCodeView then + ShowBarCode(TfrCustomBarCodeView(View), nx, ny, ndy, ndx) else if View is TfrPictureView then ShowPicture(TfrPictureView(View), nx, ny, ndy, ndx); - if (View.Frames<>[]) and not (View is TfrBarCodeView) then + if (View.Frames<>[]) and not (View is TfrCustomBarCodeView) then ShowFrame(View, nx, ny, ndy, ndx); end; @@ -370,7 +371,7 @@ {$NOTES ON} {$HINTS ON} -procedure TlrCairoExportFilter.ShowBarCode(View: TfrBarCodeView; x, y, h, +procedure TlrCairoExportFilter.ShowBarCode(View: TfrCustomBarCodeView; x, y, h, w: integer); const cbDefaultText = '12345678'; @@ -752,8 +753,8 @@ aStyle.Layout:=tlTop; // background painting, set to false for the moment aStyle.Wordbreak:= TfrMemoView_(View).WordWrap; - gapx := trunc(View.FrameWidth / 2 + 0.5) + 2; - gapy := trunc(View.FrameWidth / 4 + 0.5) + 1; + gapx := trunc(View.FrameWidth / 2 + 0.5); + gapy := trunc(View.FrameWidth / 4 + 0.5); sgapx := trunc( gapx * ScaleX + 0.5); sgapy := trunc( gapy * ScaleY + 0.5); nx := trunc((x+gapx) * ScaleX + 0.5); @@ -767,7 +768,12 @@ if fCairoPrinter.Canvas.Font.Orientation<>0 then fCairoPrinter.Canvas.TextRect(R, nx, R.Bottom, Text, aStyle) else - fCairoPrinter.Canvas.TextRect(R, R.Left, ny, Text, aStyle); + begin + if TfrMemoView_(View).Justify and not TfrMemoView_(View).LastLine then + CanvasTextRectJustify(fCairoPrinter.Canvas, R, nx, R.Right, ny, Text, true) + else + fCairoPrinter.Canvas.TextRect(R, {R.Left} nx, ny, Text, aStyle); + end; // restore previous clipping //if OldClipping then @@ -783,8 +789,8 @@ nx := Trunc( x * ScaleX + 0.5 ); ny := Trunc( y * ScaleY + 0.5 ); - ndx := Trunc( View.dx * ScaleX + 1.5 ); - ndy := Trunc( View.dy * ScaleY + 1.5 ); + ndx := Trunc( View.dx * ScaleX + 0.5 ); + ndy := Trunc( View.dy * ScaleY + 0.5 ); DataRect := Rect(nx, ny, nx+ndx, ny+ndy); diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/DialogControls/lrdialogcontrols.pas lazarus-1.6+dfsg/components/lazreport/source/addons/DialogControls/lrdialogcontrols.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/DialogControls/lrdialogcontrols.pas 2014-11-05 17:48:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/DialogControls/lrdialogcontrols.pas 2015-08-12 19:28:00.000000000 +0000 @@ -105,6 +105,7 @@ constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property Alignment: TAlignment read GetAlignment write SetAlignment; property WordWrap:boolean read GetWordWrap write SetWordWrap; @@ -170,6 +171,7 @@ constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property AutoSize; property Color; @@ -194,6 +196,7 @@ constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property AutoSize; property Color; @@ -229,6 +232,7 @@ constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property Color; property Enabled; @@ -257,6 +261,7 @@ constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property Color; property Enabled; @@ -283,6 +288,7 @@ constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property Color; property Enabled; @@ -308,6 +314,7 @@ procedure UpdateControlPosition; override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property ButtonOrder: TButtonOrder read GetButtonOrder write SetButtonOrder default boDefault; property ShowButtons: TPanelButtons read GetShowButtons write SetShowButtons default DefShowButtons; @@ -330,13 +337,12 @@ protected procedure PaintDesignControl; override; function CreateControl:TControl;override; - //procedure AfterCreate;override; function ExecMetod(const AName: String; p1, p2, p3: Variant; var Val: Variant):boolean;override; public constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; - + procedure Assign(Source: TPersistent); override; published property Color; property Enabled; @@ -363,6 +369,7 @@ constructor Create(AOwnerPage:TfrPage); override; procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; + procedure Assign(Source: TPersistent); override; published property Color; property Enabled; @@ -558,6 +565,16 @@ XML.SetValue(Path+'ItemIndex/Value'{%H-}, ItemIndex); end; +procedure TlrRadioGroup.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrRadioGroup then + begin + Items.Assign(TlrRadioGroup(Source).Items); + ItemIndex:=TlrRadioGroup(Source).ItemIndex; + end; +end; + { TlrCheckListBox } function TlrCheckListBox.GetItemIndex: integer; @@ -685,6 +702,16 @@ XML.SetValue(Path+'ItemIndex/Value'{%H-}, ItemIndex); end; +procedure TlrCheckListBox.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrCheckListBox then + begin + Items.Assign(TlrCheckListBox(Source).Items); + ItemIndex:=TlrCheckListBox(Source).ItemIndex; + end; +end; + { TlrButtonPanel } function TlrButtonPanel.GetButtonOrder: TButtonOrder; @@ -811,6 +838,16 @@ XML.SetValue(Path+'ShowButtons', GetSaveProperty('ShowButtons')); end; +procedure TlrButtonPanel.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrButtonPanel then + begin + ButtonOrder:=TlrButtonPanel(Source).ButtonOrder; + ShowButtons:=TlrButtonPanel(Source).ShowButtons; + end; +end; + { TlrDateEdit } function TlrDateEdit.GetDate: TDateTime; @@ -863,6 +900,13 @@ inherited SaveToXML(XML, Path); end; +procedure TlrDateEdit.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrDateEdit then + Date:=TlrDateEdit(Source).Date; +end; + { TlrListBox } function TlrListBox.GetItemIndex: integer; @@ -934,6 +978,16 @@ XML.SetValue(Path+'ItemIndex/Value'{%H-}, ItemIndex); end; +procedure TlrListBox.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrListBox then + begin + Items.Assign(TlrListBox(Source).Items); + ItemIndex:=TlrListBox(Source).ItemIndex; + end; +end; + { TlrMemo } procedure TlrMemo.MemoChange(Sender: TObject); @@ -1109,6 +1163,18 @@ XML.SetValue(Path+'DropDownCount/Value'{%H-}, DropDownCount); end; +procedure TlrComboBox.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrComboBox then + begin + Style:=TlrComboBox(Source).Style; + Items.Assign(TlrComboBox(Source).Items); + ItemIndex:=TlrComboBox(Source).ItemIndex; + DropDownCount:=TlrComboBox(Source).DropDownCount; + end; +end; + { TlrCheckBox } type @@ -1177,6 +1243,13 @@ XML.SetValue(Path+'Checked/Value'{%H-}, Checked); end; +procedure TlrCheckBox.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrCheckBox then + Checked:=TlrCheckBox(Source).Checked; +end; + { TlrButton } function TlrButton.GetKind: TBitBtnKind; @@ -1228,6 +1301,13 @@ XML.SetValue(Path+'Kind/Value', GetSaveProperty('Kind')); end; +procedure TlrButton.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrButton then + Kind:=TlrButton(Source).Kind; +end; + { TlrEdit } procedure TlrEdit.PaintDesignControl; @@ -1326,6 +1406,16 @@ XML.SetValue(Path+'Alignment/Value', GetSaveProperty('Alignment')); end; +procedure TlrLabel.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TlrLabel then + begin + Alignment:=TlrLabel(Source).Alignment; + WordWrap:=TlrLabel(Source).WordWrap; + end; +end; + { TlrVisualControl } diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/DialogControls/lrformstorageeditor.lfm lazarus-1.6+dfsg/components/lazreport/source/addons/DialogControls/lrformstorageeditor.lfm --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/DialogControls/lrformstorageeditor.lfm 2014-03-14 19:42:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/DialogControls/lrformstorageeditor.lfm 2015-08-12 19:28:00.000000000 +0000 @@ -8,7 +8,7 @@ ClientWidth = 570 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object ButtonPanel1: TButtonPanel Left = 6 Height = 42 @@ -73,6 +73,7 @@ ItemHeight = 0 OnDblClick = ListBoxPropsDblClick ScrollWidth = 250 + Sorted = True TabOrder = 2 TopIndex = -1 end diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/imgexport/lr_e_htmldiv.pas lazarus-1.6+dfsg/components/lazreport/source/addons/imgexport/lr_e_htmldiv.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/imgexport/lr_e_htmldiv.pas 2013-07-11 21:01:44.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/imgexport/lr_e_htmldiv.pas 2015-03-30 19:12:16.000000000 +0000 @@ -243,7 +243,7 @@ if View.FillColor <> clNone then St := St + 'background-color:' + ColorToCSS(View.FillColor) + ';'; - if ExportImages and ((View is TfrPictureView) or (View is TfrBarCodeView)) then + if ExportImages and ((View is TfrPictureView) or (View is TfrCustomBarCodeView)) then begin WriteString(Format(HTML_IMG1, [St])); Inc(FImgCnt); @@ -257,9 +257,9 @@ CS := TChunkStream.Create(Stream); B64 := TBase64EncodingStream.Create(CS); end; - if View is TfrBarCodeView then + if View is TfrCustomBarCodeView then begin - BCBmp := TfrBarCodeView(View).GenerateBitmap; + BCBmp := TfrCustomBarCodeView(View).GenerateBitmap; Png.Assign(BCBmp); BCBmp.Free; end diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrcodereport/lr_codereport.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrcodereport/lr_codereport.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrcodereport/lr_codereport.pas 2015-09-15 21:02:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrcodereport/lr_codereport.pas 2015-09-05 18:55:30.000000000 +0000 @@ -762,9 +762,9 @@ procedure TlrCodeReport.DrawBarCode(X, Y, W, H: double; Code: string; Style: TlrBarCodeStyle); var - ABarCode: TfrBarCodeView; + ABarCode: TfrBarcodeView; begin - ABarCode := TfrBarCodeView.Create(nil); + ABarCode := TfrBarcodeView.Create(nil); ABarCode.Left := X * XRatio; ABarCode.Top := Y * YRatio; ABarCode.Width := W * XRatio; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilter.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilter.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilter.pas 2014-08-28 18:48:10.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilter.pas 2015-08-30 17:38:01.000000000 +0000 @@ -5,7 +5,11 @@ interface uses - Classes, SysUtils, LR_Class, lr_PreviewToolsAbstract, UTF8Process; + Classes, SysUtils, Forms, Controls, + // LazUtils + LazFileUtils, LazUTF8, UTF8Process, + // LazReport + LR_Class, lr_PreviewToolsAbstract; type TEmailApp = class; @@ -91,8 +95,7 @@ implementation -uses Forms, lrEmailExportFilterSetup, Controls, LCLProc, FileUtil, - lrEmailAppFreeSoft +uses lrEmailExportFilterSetup, lrEmailAppFreeSoft {$IFDEF WINDOWS} , lrEmailAppTheBat, lrEmailAppMS {$ENDIF} @@ -217,11 +220,11 @@ FEmailApp:TEmailApp; begin FilterClass:=nil; - for i:=0 to frFiltersCount - 1 do - if (frFilters[i].FilterDesc = AttachmentFormat) then + for i:=0 to ExportFilters.Count - 1 do + if (ExportFilters[i].FilterDesc = AttachmentFormat) then begin - FilterClass := frFilters[i].ClassRef; - SExt:=ExtractFileExt(frFilters[i].FilterExt); + FilterClass := ExportFilters[i].ClassRef; + SExt:=ExtractFileExt(ExportFilters[i].FilterExt); break; end; if not Assigned(FilterClass) then exit; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilterSetup.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilterSetup.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilterSetup.pas 2014-08-28 04:10:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrEmailExport/lrEmailExportFilterSetup.pas 2015-08-30 17:38:01.000000000 +0000 @@ -138,8 +138,9 @@ i: Integer; begin cbFilterList.Items.Clear; - for i:=0 to frFiltersCount-1 do - cbFilterList.Items.Add(frFilters[i].FilterDesc); + for i:=0 to ExportFilters.Count - 1 do + if ExportFilters[i].Enabled then + cbFilterList.Items.Add(ExportFilters[i].FilterDesc); if (cbFilterList.Items.Count>0) and (FEmailExport.AttachmentFormat<>'') then if cbFilterList.Items.IndexOf(FEmailExport.AttachmentFormat)>-1 then diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrOfficeImport/lrspreadsheetimportunit.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrOfficeImport/lrspreadsheetimportunit.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrOfficeImport/lrspreadsheetimportunit.pas 2015-02-13 21:08:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrOfficeImport/lrspreadsheetimportunit.pas 2015-08-12 19:28:00.000000000 +0000 @@ -138,11 +138,11 @@ FWorksheet := FWorkbook.GetFirstWorksheet; Y:=0; - for Row:=0 to FWorksheet.GetLastRowIndex-1 do + for Row:=0 to FWorksheet.GetLastRowIndex do begin X:=0; DY:=CalcRowHeight(FWorksheet.GetRowHeight(Row)); - for Col:=0 to FWorksheet.GetLastColIndex-1 do + for Col:=0 to FWorksheet.GetLastColIndex do begin Cell := FWorksheet.FindCell(Row, Col); if Assigned(Cell) then @@ -212,7 +212,8 @@ if fssItalic in sFont.Style then AFont.Style := AFont.Style + [fsItalic]; if fssUnderline in sFont.Style then AFont.Style := AFont.Style + [fsUnderline]; if fssStrikeout in sFont.Style then AFont.Style := AFont.Style + [fsStrikeout]; - AFont.Color := FWorkbook.GetPaletteColor(sFont.Color); + //AFont.Color := FWorkbook.GetPaletteColor(sFont.Color); + AFont.Color := sFont.Color; end; end; Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.ico differ diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpi lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpi --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpi 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="project1"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="4"> + <Item1> + <PackageName Value="lrSpreadSheetExport"/> + </Item1> + <Item2> + <PackageName Value="laz_fpspreadsheet"/> + </Item2> + <Item3> + <PackageName Value="lazreport"/> + </Item3> + <Item4> + <PackageName Value="LCL"/> + </Item4> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="project1.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="unit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Unit1"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="project1"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="4"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + <Item4> + <Name Value="RunError(216)"/> + </Item4> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpr lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpr --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lpr 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,20 @@ +program project1; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, laz_fpspreadsheet, Unit1; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lps lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lps --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lps 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.lps 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,506 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectSession> + <Version Value="9"/> + <BuildModes Active="Default"/> + <Units Count="54"> + <Unit0> + <Filename Value="project1.lpr"/> + <IsPartOfProject Value="True"/> + <EditorIndex Value="-1"/> + <UsageCount Value="66"/> + </Unit0> + <Unit1> + <Filename Value="unit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Unit1"/> + <IsVisibleTab Value="True"/> + <TopLine Value="62"/> + <CursorPos X="65" Y="75"/> + <UsageCount Value="66"/> + <Loaded Value="True"/> + <LoadedDesigner Value="True"/> + </Unit1> + <Unit2> + <Filename Value="lr_exportmatrix.pas"/> + <UnitName Value="LR_ExportMatrix"/> + <EditorIndex Value="-1"/> + <TopLine Value="124"/> + <CursorPos X="15" Y="143"/> + <UsageCount Value="60"/> + <Bookmarks Count="2"> + <Item0 Y="478" ID="1"/> + <Item1 X="50" Y="575" ID="2"/> + </Bookmarks> + </Unit2> + <Unit3> + <Filename Value="le_e_spreadsheet.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="286"/> + <CursorPos X="8" Y="306"/> + <UsageCount Value="58"/> + </Unit3> + <Unit4> + <Filename Value="le_e_spreadsheet_params.pas"/> + <ComponentName Value="leSpreadsheetParamsForm"/> + <ResourceBaseClass Value="Form"/> + <EditorIndex Value="-1"/> + <TopLine Value="25"/> + <CursorPos X="34" Y="55"/> + <UsageCount Value="32"/> + </Unit4> + <Unit5> + <Filename Value="le_e_spreadsheet_consts.pas"/> + <EditorIndex Value="-1"/> + <CursorPos X="3" Y="12"/> + <UsageCount Value="24"/> + </Unit5> + <Unit6> + <Filename Value="../../../lr_class.pas"/> + <UnitName Value="LR_Class"/> + <EditorIndex Value="-1"/> + <TopLine Value="12750"/> + <CursorPos Y="12769"/> + <UsageCount Value="26"/> + </Unit6> + <Unit7> + <Filename Value="../../../lr_desgn.pas"/> + <ComponentName Value="frDesignerForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <EditorIndex Value="-1"/> + <TopLine Value="5627"/> + <CursorPos Y="5649"/> + <UsageCount Value="8"/> + </Unit7> + <Unit8> + <Filename Value="../../../lr_crosstab.pas"/> + <UnitName Value="lr_CrossTab"/> + <EditorIndex Value="-1"/> + <TopLine Value="545"/> + <CursorPos Y="569"/> + <UsageCount Value="10"/> + </Unit8> + <Unit9> + <Filename Value="../../../install/source/fpcsrc/rtl/objpas/classes/classesh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="236"/> + <CursorPos X="3" Y="218"/> + <UsageCount Value="10"/> + </Unit9> + <Unit10> + <Filename Value="../../../lr_barc.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="471"/> + <CursorPos X="35" Y="490"/> + <UsageCount Value="8"/> + </Unit10> + <Unit11> + <Filename Value="../../../lr_rrect.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="566"/> + <CursorPos X="56" Y="568"/> + <UsageCount Value="8"/> + </Unit11> + <Unit12> + <Filename Value="../../../lr_shape.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="25"/> + <CursorPos X="15" Y="46"/> + <UsageCount Value="8"/> + </Unit12> + <Unit13> + <Filename Value="../../../lr_chbox.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="145"/> + <CursorPos X="43" Y="168"/> + <UsageCount Value="8"/> + </Unit13> + <Unit14> + <Filename Value="../../../lr_utils.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="917"/> + <CursorPos Y="933"/> + <UsageCount Value="8"/> + </Unit14> + <Unit15> + <Filename Value="../../install/source/fpcsrc/rtl/objpas/classes/classesh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="237"/> + <CursorPos X="15" Y="259"/> + <UsageCount Value="8"/> + </Unit15> + <Unit16> + <Filename Value="../../install/source/fpcsrc/rtl/objpas/classes/lists.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="312"/> + <CursorPos X="11" Y="343"/> + <UsageCount Value="8"/> + </Unit16> + <Unit17> + <Filename Value="../../cairoexport/lr_e_cairo.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="742"/> + <CursorPos X="3" Y="725"/> + <UsageCount Value="19"/> + </Unit17> + <Unit18> + <Filename Value="../../imgexport/lr_e_htmldiv.pas"/> + <UnitName Value="LR_e_htmldiv"/> + <EditorIndex Value="-1"/> + <TopLine Value="282"/> + <CursorPos X="3" Y="295"/> + <UsageCount Value="16"/> + </Unit18> + <Unit19> + <Filename Value="../../imgexport/lr_e_img.pas"/> + <UnitName Value="LR_e_img"/> + <EditorIndex Value="-1"/> + <TopLine Value="47"/> + <CursorPos Y="51"/> + <UsageCount Value="16"/> + </Unit19> + <Unit20> + <Filename Value="../../../../../fpspreadsheet/fpspreadsheet.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="6293"/> + <CursorPos Y="6314"/> + <UsageCount Value="24"/> + </Unit20> + <Unit21> + <Filename Value="../../../../../rxfpc/rxdbgridexportspreadsheet.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="349"/> + <CursorPos X="19" Y="379"/> + <UsageCount Value="8"/> + </Unit21> + <Unit22> + <Filename Value="../../install/source/fpcsrc/rtl/unix/classes.pp"/> + <EditorIndex Value="-1"/> + <TopLine Value="24"/> + <CursorPos X="5" Y="36"/> + <UsageCount Value="8"/> + </Unit22> + <Unit23> + <Filename Value="../../../install/source/fpcsrc/rtl/objpas/classes/lists.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="803"/> + <CursorPos X="3" Y="805"/> + <UsageCount Value="8"/> + </Unit23> + <Unit24> + <Filename Value="../../../lr_view.pas"/> + <ComponentName Value="frPreviewForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="LR_View"/> + <EditorIndex Value="-1"/> + <TopLine Value="885"/> + <CursorPos X="3" Y="888"/> + <UsageCount Value="9"/> + </Unit24> + <Unit25> + <Filename Value="../../../../../../lcl/lclmessageglue.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="99"/> + <CursorPos Y="116"/> + <UsageCount Value="8"/> + </Unit25> + <Unit26> + <Filename Value="../../../../../RxNew/rxdbgridexportspreadsheet.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="345"/> + <CursorPos X="3" Y="352"/> + <UsageCount Value="13"/> + </Unit26> + <Unit27> + <Filename Value="../../../../../../lcl/include/rasterimage.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="283"/> + <CursorPos Y="302"/> + <UsageCount Value="10"/> + </Unit27> + <Unit28> + <Filename Value="../../../../../../lcl/include/canvas.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="1761"/> + <CursorPos Y="1782"/> + <UsageCount Value="9"/> + </Unit28> + <Unit29> + <Filename Value="../../../../../../lcl/graphics.pp"/> + <UnitName Value="Graphics"/> + <EditorIndex Value="-1"/> + <TopLine Value="80"/> + <CursorPos X="3" Y="100"/> + <UsageCount Value="11"/> + </Unit29> + <Unit30> + <Filename Value="../../../../../../lcl/lcltype.pp"/> + <EditorIndex Value="-1"/> + <CursorPos X="13" Y="31"/> + <UsageCount Value="8"/> + </Unit30> + <Unit31> + <Filename Value="../../../install/source/fpcsrc/rtl/objpas/classes/stringl.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="460"/> + <CursorPos X="3" Y="470"/> + <UsageCount Value="8"/> + </Unit31> + <Unit32> + <Filename Value="../../../lr_crossarray.pas"/> + <UnitName Value="lr_CrossArray"/> + <EditorIndex Value="-1"/> + <TopLine Value="37"/> + <CursorPos X="15" Y="73"/> + <UsageCount Value="9"/> + </Unit32> + <Unit33> + <Filename Value="../../../../../lazutils/lazutf8classes.pas"/> + <UnitName Value="LazUTF8Classes"/> + <EditorIndex Value="-1"/> + <CursorPos X="20"/> + <UsageCount Value="14"/> + </Unit33> + <Unit34> + <Filename Value="../../../../../fpspreadsheet/fpstypes.pas"/> + <UnitName Value="fpsTypes"/> + <EditorIndex Value="-1"/> + <TopLine Value="226"/> + <CursorPos X="18" Y="260"/> + <UsageCount Value="15"/> + </Unit34> + <Unit35> + <Filename Value="../../../../../fpspreadsheet/fpsallformats.pas"/> + <EditorIndex Value="-1"/> + <UsageCount Value="14"/> + </Unit35> + <Unit36> + <Filename Value="../../../../../fpspreadsheet/fpsutils.pas"/> + <EditorIndex Value="-1"/> + <UsageCount Value="14"/> + </Unit36> + <Unit37> + <Filename Value="../../../../../fpspreadsheet/fpsclasses.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="69"/> + <CursorPos X="3" Y="76"/> + <UsageCount Value="8"/> + </Unit37> + <Unit38> + <Filename Value="../../../../../rxnew/rxdbgrid.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="876"/> + <CursorPos X="14" Y="894"/> + <UsageCount Value="9"/> + </Unit38> + <Unit39> + <Filename Value="../../../install/source/fpcsrc/rtl/objpas/sysutils/sysinth.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="20"/> + <CursorPos X="3" Y="33"/> + <UsageCount Value="9"/> + </Unit39> + <Unit40> + <Filename Value="../../../install/source/fpcsrc/packages/fv/src/app.pas"/> + <UnitName Value="App"/> + <EditorIndex Value="-1"/> + <TopLine Value="90"/> + <CursorPos Y="21"/> + <UsageCount Value="9"/> + </Unit40> + <Unit41> + <Filename Value="../../../../../../lcl/forms.pp"/> + <UnitName Value="Forms"/> + <EditorIndex Value="-1"/> + <TopLine Value="594"/> + <CursorPos X="14" Y="612"/> + <UsageCount Value="9"/> + </Unit41> + <Unit42> + <Filename Value="../../../../../../lcl/include/customform.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="2834"/> + <CursorPos X="3" Y="2852"/> + <UsageCount Value="9"/> + </Unit42> + <Unit43> + <Filename Value="../../../install/source/fpcsrc/packages/amunits/examples/otherlibs/string.pas"/> + <UnitName Value="Stringtest"/> + <EditorIndex Value="-1"/> + <UsageCount Value="9"/> + </Unit43> + <Unit44> + <Filename Value="../../../../../lazutils/fileutil.pas"/> + <UnitName Value="FileUtil"/> + <EditorIndex Value="-1"/> + <TopLine Value="56"/> + <CursorPos X="10" Y="76"/> + <UsageCount Value="10"/> + </Unit44> + <Unit45> + <Filename Value="../../../install/source/fpcsrc/rtl/objpas/objpas.pp"/> + <EditorIndex Value="-1"/> + <TopLine Value="28"/> + <CursorPos X="19" Y="57"/> + <UsageCount Value="10"/> + </Unit45> + <Unit46> + <Filename Value="../lrspreadsheetexp.pas"/> + <UnitName Value="lrSpreadSheetExp"/> + <EditorIndex Value="3"/> + <TopLine Value="8"/> + <CursorPos X="47" Y="77"/> + <UsageCount Value="11"/> + <Loaded Value="True"/> + </Unit46> + <Unit47> + <Filename Value="../../cairoexport/lr_cairoexp_reg.pas"/> + <EditorIndex Value="-1"/> + <CursorPos X="9" Y="12"/> + <UsageCount Value="10"/> + </Unit47> + <Unit48> + <Filename Value="../lr_exportmatrix.pas"/> + <UnitName Value="LR_ExportMatrix"/> + <EditorIndex Value="2"/> + <TopLine Value="639"/> + <CursorPos Y="692"/> + <UsageCount Value="11"/> + <Loaded Value="True"/> + </Unit48> + <Unit49> + <Filename Value="../le_e_spreadsheet.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="82"/> + <CursorPos Y="345"/> + <UsageCount Value="11"/> + </Unit49> + <Unit50> + <Filename Value="/home/install/source/fpcsrc/rtl/objpas/classes/classesh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="73"/> + <CursorPos X="3" Y="94"/> + <UsageCount Value="11"/> + </Unit50> + <Unit51> + <Filename Value="../le_e_spreadsheet_types.pas"/> + <EditorIndex Value="1"/> + <TopLine Value="11"/> + <CursorPos Y="35"/> + <UsageCount Value="11"/> + <Loaded Value="True"/> + </Unit51> + <Unit52> + <Filename Value="../le_e_spreadsheet_consts.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="31"/> + <CursorPos X="29" Y="35"/> + <UsageCount Value="10"/> + </Unit52> + <Unit53> + <Filename Value="../le_e_spreadsheet_params.pas"/> + <ComponentName Value="leSpreadsheetParamsForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <EditorIndex Value="-1"/> + <TopLine Value="35"/> + <CursorPos Y="35"/> + <UsageCount Value="10"/> + </Unit53> + </Units> + <JumpHistory Count="20" HistoryIndex="19"> + <Position1> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="486" TopLine="467"/> + </Position1> + <Position2> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="454" TopLine="434"/> + </Position2> + <Position3> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="456" TopLine="434"/> + </Position3> + <Position4> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="457" TopLine="434"/> + </Position4> + <Position5> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="458" TopLine="434"/> + </Position5> + <Position6> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="460" TopLine="434"/> + </Position6> + <Position7> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="462" TopLine="434"/> + </Position7> + <Position8> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="464" TopLine="434"/> + </Position8> + <Position9> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="357" TopLine="337"/> + </Position9> + <Position10> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="358" TopLine="337"/> + </Position10> + <Position11> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="361" TopLine="337"/> + </Position11> + <Position12> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="357" TopLine="337"/> + </Position12> + <Position13> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="358" TopLine="337"/> + </Position13> + <Position14> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="361" TopLine="337"/> + </Position14> + <Position15> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="34"/> + </Position15> + <Position16> + <Filename Value="../le_e_spreadsheet_types.pas"/> + <Caret Line="16" Column="66"/> + </Position16> + <Position17> + <Filename Value="../lrspreadsheetexp.pas"/> + <Caret Line="33" Column="44"/> + </Position17> + <Position18> + <Filename Value="../lr_exportmatrix.pas"/> + <Caret Line="689" Column="28" TopLine="663"/> + </Position18> + <Position19> + <Filename Value="unit1.pas"/> + <Caret Line="56" Column="37" TopLine="41"/> + </Position19> + <Position20> + <Filename Value="unit1.pas"/> + <Caret Line="50" Column="3" TopLine="48"/> + </Position20> + </JumpHistory> + </ProjectSession> + <Debugging> + <Watches Count="1"> + <Item1 RepeatCount="20"> + <Expression Value="FColWidth"/> + </Item1> + </Watches> + </Debugging> +</CONFIG> Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/project1.res differ diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/acc_pay.lrf lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/acc_pay.lrf --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/acc_pay.lrf 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/acc_pay.lrf 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,3831 @@ +<?xml version="1.0" encoding="utf-8"?> +<CONFIG> + <LazReport> + <Version Value="29"/> + <Title Value="Счёт на оплату"/> + <Subject Value=""/> + <KeyWords Value=""/> + <Comments Value="" ReportOptions.CreateDate= "/> + <ReportCreateDate Value="2012-06-04 11:24:51"/> + <ReportLastChange Value="2015-08-09 20:47:32"/> + <ReportVersionBuild Value="0"/> + <ReportVersionMajor Value="1"/> + <ReportVersionMinor Value="0"/> + <ReportVersionRelease Value="0"/> + <ReportAutor Value="Лагунов А.А."/> + <Script Value=""/> + <Pages> + <PrintToDefault Value="False"/> + <DoublePass Value="True"/> + <SelectedPrinter Value="Default printer"/> + <PageCount Value="1"/> + <Page1> + <Name Value="Page1"/> + <ClassName Value="TfrPageReport"/> + <Visible Value="True"/> + <Width Value="2100"/> + <Height Value="2970"/> + <Script Value=""/> + <PgSize Value="9"/> + <Margins> + <left Value="54"/> + <Top Value="18"/> + <Right Value="18"/> + <Bottom Value="18"/> + </Margins> + <Orientation Value="poPortrait"/> + <UseMargins Value="True"/> + <PrintToPrevPage Value="False"/> + <ColCount Value="0"/> + <ColGap Value="0"/> + <LayoutOrder Value="loColumns"/> + <Object1> + <Name Value="Band2"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="16"/> + <Width Value="752"/> + <Height Value="348"/> + </Size> + <Flags Value="0"/> + <Data> + <Script Value=" "/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btReportTitle"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value=""/> + </Object1> + <Object2> + <Name Value="MasterData4"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="376"/> + <Width Value="752"/> + <Height Value="16"/> + </Size> + <Flags Value="1"/> + <Data> + <Script Value=" "/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btMasterData"/> + <Condition Value=""/> + <DatasetStr Value="4"/> + <Child Value=""/> + </Object2> + <Object3> + <Name Value="MasterData1"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="456"/> + <Width Value="752"/> + <Height Value="16"/> + </Size> + <Flags Value="0"/> + <Data> + <Script Value=" "/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btMasterData"/> + <Condition Value=""/> + <DatasetStr Value="1"/> + <Child Value=""/> + </Object3> + <Object4> + <Name Value="ReportSummary1"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="492"/> + <Width Value="752"/> + <Height Value="36"/> + </Size> + <Flags Value="1"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btReportSummary"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value="Child1"/> + </Object4> + <Object5> + <Name Value="MasterFooter1"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="420"/> + <Width Value="752"/> + <Height Value="16"/> + </Size> + <Flags Value="48"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btMasterFooter"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value=""/> + </Object5> + <Object6> + <Name Value="Child3"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="872"/> + <Width Value="752"/> + <Height Value="48"/> + </Size> + <Flags Value="48"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btChild"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value=""/> + </Object6> + <Object7> + <Name Value="Child1"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="552"/> + <Width Value="752"/> + <Height Value="24"/> + </Size> + <Flags Value="49"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btChild"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value="Child2"/> + </Object7> + <Object8> + <Name Value="Child2"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="616"/> + <Width Value="752"/> + <Height Value="76"/> + </Size> + <Flags Value="49"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btChild"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value="Child4"/> + </Object8> + <Object9> + <Name Value="Child4"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="708"/> + <Width Value="752"/> + <Height Value="20"/> + </Size> + <Flags Value="48"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btChild"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value="Child5"/> + </Object9> + <Object10> + <Name Value="Child5"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="772"/> + <Width Value="752"/> + <Height Value="84"/> + </Size> + <Flags Value="48"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btChild"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value="Child3"/> + </Object10> + <Object11> + <Name Value="Memo207"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="60"/> + <Width Value="676"/> + <Height Value="16"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Адрес: г.Тьмуторакань "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold,fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object11> + <Object12> + <Name Value="Memo211"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="240"/> + <Width Value="108"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Покупатель "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object12> + <Object13> + <Name Value="Memo239"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="76"/> + <Width Value="676"/> + <Height Value="28"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Образец заполнения платежного поручения "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object13> + <Object14> + <Name Value="Memo194"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="40"/> + <Width Value="568"/> + <Height Value="20"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Филиал № 1 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object14> + <Object15> + <Name Value="Memo195"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="104"/> + <Width Value="312"/> + <Height Value="40"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Получатель ИНН 1234567890 Филиал 1 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object15> + <Object16> + <Name Value="Memo202"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="420"/> + <Top Value="124"/> + <Width Value="312"/> + <Height Value="20"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="1221122112211122211112 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlBottom"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object16> + <Object17> + <Name Value="Memo203"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="144"/> + <Width Value="312"/> + <Height Value="44"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Банк получателя Банк № 123 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object17> + <Object18> + <Name Value="Memo246"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="420"/> + <Top Value="144"/> + <Width Value="312"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="040707644 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object18> + <Object19> + <Name Value="Memo248"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="368"/> + <Top Value="144"/> + <Width Value="52"/> + <Height Value="16"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="БИК "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object19> + <Object20> + <Name Value="Memo249"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="368"/> + <Top Value="104"/> + <Width Value="52"/> + <Height Value="40"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Сч. № "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlBottom"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object20> + <Object21> + <Name Value="Memo250"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="368"/> + <Top Value="160"/> + <Width Value="52"/> + <Height Value="28"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Сч. № "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object21> + <Object22> + <Name Value="Memo254"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="328"/> + <Width Value="24"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="№ "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object22> + <Object23> + <Name Value="Memo258"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="376"/> + <Width Value="24"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="[LINE#] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object23> + <Object24> + <Name Value="Memo275"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="420"/> + <Width Value="424"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Итого "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object24> + <Object25> + <Name Value="Memo277"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="False"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="712"/> + <Width Value="564"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Шетьсот пятьдесят рублей 00 копеек "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object25> + <Object26> + <Name Value="Memo282"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="804"/> + <Width Value="108"/> + <Height Value="40"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Уполномоченное лицо "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object26> + <Object27> + <Name Value="Memo283"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="772"/> + <Width Value="108"/> + <Height Value="32"/> + </Size> + <Flags Value="10"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Уполномоченное лицо "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object27> + <Object28> + <Name Value="Memo290"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="508"/> + <Top Value="828"/> + <Width Value="224"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbTop"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="расшифровка "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object28> + <Object29> + <Name Value="Memo296"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="788"/> + <Width Value="316"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbTop"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="подпись "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object29> + <Object30> + <Name Value="Memo297"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="828"/> + <Width Value="316"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbTop"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="подпись "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object30> + <Object31> + <Name Value="Memo298"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="508"/> + <Top Value="788"/> + <Width Value="224"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbTop"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="расшифровка "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object31> + <Object32> + <Name Value="Memo271"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="False"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="712"/> + <Width Value="108"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Сумма прописью "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object32> + <Object33> + <Name Value="Memo272"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="492"/> + <Width Value="108"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Наименований [COUNT(MasterData4)] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object33> + <Object34> + <Name Value="Memo3"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="492"/> + <Width Value="316"/> + <Height Value="16"/> + </Size> + <Flags Value="11"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="На сумму "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object34> + <Object35> + <Name Value="Memo4"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="376"/> + <Width Value="316"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Самый нужный товар "/> + <Script Value=" "/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object35> + <Object36> + <Name Value="Memo5"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="480"/> + <Top Value="376"/> + <Width Value="28"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value=""/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="7"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object36> + <Object37> + <Name Value="Memo6"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="508"/> + <Top Value="376"/> + <Width Value="48"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="16974636"/> + <FormatStr Value=""/> + <Memo Value="2 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object37> + <Object38> + <Name Value="Memo7"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="604"/> + <Top Value="376"/> + <Width Value="60"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="16974380"/> + <FormatStr Value=""/> + <Memo Value="[100] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object38> + <Object39> + <Name Value="Memo8"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="664"/> + <Top Value="376"/> + <Width Value="68"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="16974380"/> + <FormatStr Value=""/> + <Memo Value="[200] "/> + <Script Value=" "/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object39> + <Object40> + <Name Value="Memo9"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="604"/> + <Top Value="420"/> + <Width Value="128"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="16974380"/> + <FormatStr Value=""/> + <Memo Value="[600] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold,fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object40> + <Object41> + <Name Value="Memo10"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="480"/> + <Top Value="492"/> + <Width Value="252"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="16974380"/> + <FormatStr Value=""/> + <Memo Value="[650] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold,fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object41> + <Object42> + <Name Value="Memo12"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="240"/> + <Width Value="568"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="ООО Василёк "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object42> + <Object43> + <Name Value="Memo14"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="80"/> + <Top Value="376"/> + <Width Value="84"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="123.123.312 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object43> + <Object44> + <Name Value="Memo15"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="80"/> + <Top Value="328"/> + <Width Value="84"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Код продукции "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object44> + <Object45> + <Name Value="Memo216"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="328"/> + <Width Value="316"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Наименование продукции, товара (груза) ТУ, марка, размер, сорт "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object45> + <Object46> + <Name Value="Memo245"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="480"/> + <Top Value="328"/> + <Width Value="28"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Ед. изм. "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object46> + <Object47> + <Name Value="Memo251"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="508"/> + <Top Value="328"/> + <Width Value="48"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Количество "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object47> + <Object48> + <Name Value="Memo252"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="604"/> + <Top Value="328"/> + <Width Value="60"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Цена, руб. коп. "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object48> + <Object49> + <Name Value="Memo253"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="664"/> + <Top Value="328"/> + <Width Value="68"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Сумма, руб. коп. "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object49> + <Object50> + <Name Value="Memo16"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="256"/> + <Width Value="568"/> + <Height Value="40"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Адрес: г.Китеж-Град ИНН: 4321432121 тел. 32-77-77 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object50> + <Object51> + <Name Value="Memo18"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="420"/> + <Top Value="104"/> + <Width Value="312"/> + <Height Value="20"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="КПП 210210021 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object51> + <Object52> + <Name Value="Memo19"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="508"/> + <Width Value="316"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="в т.ч. НДС "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object52> + <Object53> + <Name Value="Memo20"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="480"/> + <Top Value="508"/> + <Width Value="252"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="16974380"/> + <FormatStr Value=""/> + <Memo Value="[28] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object53> + <Object54> + <Name Value="Memo21"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="552"/> + <Width Value="676"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Дополнительные данные по документу "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object54> + <Object55> + <Name Value="Memo24"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="80"/> + <Top Value="456"/> + <Width Value="524"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Услуги доставки "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object55> + <Object56> + <Name Value="Memo25"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="456"/> + <Width Value="24"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="1. "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object56> + <Object57> + <Name Value="Memo26"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="604"/> + <Top Value="456"/> + <Width Value="128"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="16974380"/> + <FormatStr Value=""/> + <Memo Value="[50] "/> + <Script Value=" "/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object57> + <Object58> + <Name Value="Memo11"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="40"/> + <Width Value="108"/> + <Height Value="20"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Поставщик: "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object58> + <Object59> + <Name Value="Memo13"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="556"/> + <Top Value="376"/> + <Width Value="48"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value=""/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object59> + <Object60> + <Name Value="Memo17"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="556"/> + <Top Value="328"/> + <Width Value="48"/> + <Height Value="36"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Вес "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object60> + <Object61> + <Name Value="Memo28"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="508"/> + <Top Value="420"/> + <Width Value="96"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value=""/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold,fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object61> + <Object62> + <Name Value="Memo22"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="872"/> + <Width Value="424"/> + <Height Value="44"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="оператор созд. Иванов В.А. тел. 254-87 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlBottom"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object62> + <Object63> + <Name Value="Memo23"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="480"/> + <Top Value="872"/> + <Width Value="252"/> + <Height Value="44"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="распечатал: Петров В.А. "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlBottom"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object63> + <Object64> + <Name Value="Memo30"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="420"/> + <Top Value="160"/> + <Width Value="312"/> + <Height Value="28"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="12365478909876543210 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="9"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object64> + <Object65> + <Name Value="Memo31"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="188"/> + <Width Value="676"/> + <Height Value="24"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="СЧЕТ № 123 от 12 июля 2015 "/> + <Script Value=" "/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="12"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object65> + <Object66> + <Name Value="Memo32"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="616"/> + <Width Value="676"/> + <Height Value="72"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="1. Счет действителен для оплаты в течение 3-х банковских дней. Оплата данного счета означает согласие с условиями поставки товара и заключении сделки в письменной форме (п. 3 ст. 434 и п. 3 ст. 438 ГК РФ) 2. При непоступлении денежных средств в указанный срок Поставщик вправе отказаться от сделки. 3. При оплате Покупатель должен указать в платежном поручении номер и дату настоящего счета, в противном случае Поставщик вправе отнести оплату в погашение задолженности в календарном порядке её возникновения (в том числе и по другим счетам, ТН) "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="True"/> + <Cursor Value="0"/> + </Object66> + <Object67> + <Name Value="Memo1"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="508"/> + <Top Value="812"/> + <Width Value="224"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value=""/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object67> + <Object68> + <Name Value="Memo27"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="508"/> + <Top Value="772"/> + <Width Value="224"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value=" "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object68> + <Object69> + <Name Value="Memo34"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="212"/> + <Width Value="108"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Грузоотправитель "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object69> + <Object70> + <Name Value="Memo35"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="212"/> + <Width Value="568"/> + <Height Value="28"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Филиал 2 Адрес: г.Китеж-град "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object70> + <Object71> + <Name Value="Memo36"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="56"/> + <Top Value="300"/> + <Width Value="108"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Грузополучатель "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsBold"/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object71> + <Object72> + <Name Value="Memo37"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="300"/> + <Width Value="568"/> + <Height Value="28"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="ООО Василёк Адрес: г.Китеж-Град ИНН: 4321432121 тел. 32-77-77 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="Arial"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="0"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object72> + <Object73> + <Name Value="Line1"/> + <ClassName Value="TfrLineView"/> + <Visible Value="False"/> + <Typ Value="gtLine"/> + <StreamMode Value="0"/> + <Size> + <Left Value="164"/> + <Top Value="376"/> + <Width Value="0"/> + <Height Value="556"/> + </Size> + <Flags Value="0"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="2"/> + <Restrictions Value=""/> + </Frames> + <Tag Value=""/> + <FURLInfo Value=""/> + <Data> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + </Object73> + <ObjectCount Value="73"/> + </Page1> + <FVal> + <Count Value="0"/> + </FVal> + <ParentVars Value=""/> + </Pages> + <DetailReports> + <Count Value="0"/> + </DetailReports> + </LazReport> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/demo_report.lrf lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/demo_report.lrf --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/demo_report.lrf 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/reports/demo_report.lrf 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,669 @@ +<?xml version="1.0" encoding="utf-8"?> +<CONFIG> + <LazReport> + <Version Value="29"/> + <Title Value=""/> + <Subject Value=""/> + <KeyWords Value=""/> + <Comments Value=""/> + <ReportCreateDate Value="2015-08-03 16:39:16"/> + <ReportLastChange Value="2015-08-06 10:43:35"/> + <ReportVersionBuild Value=""/> + <ReportVersionMajor Value=""/> + <ReportVersionMinor Value=""/> + <ReportVersionRelease Value=""/> + <ReportAutor Value=""/> + <Script Value=""/> + <Pages> + <PrintToDefault Value="False"/> + <DoublePass Value="False"/> + <SelectedPrinter Value="Cups-PDF"/> + <PageCount Value="1"/> + <Page1> + <Name Value="Page1"/> + <ClassName Value="TfrPageReport"/> + <Visible Value="True"/> + <Width Value="842"/> + <Height Value="595"/> + <Script Value=""/> + <PgSize Value="9"/> + <Margins> + <left Value="36"/> + <Top Value="36"/> + <Right Value="36"/> + <Bottom Value="36"/> + </Margins> + <Orientation Value="poLandscape"/> + <UseMargins Value="True"/> + <PrintToPrevPage Value="False"/> + <ColCount Value="0"/> + <ColGap Value="0"/> + <LayoutOrder Value="loColumns"/> + <Object1> + <Name Value="MasterData1"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="276"/> + <Width Value="1064"/> + <Height Value="16"/> + </Size> + <Flags Value="49"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btMasterData"/> + <Condition Value=""/> + <DatasetStr Value="100"/> + <Child Value=""/> + </Object1> + <Object2> + <Name Value="ReportTitle1"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="36"/> + <Width Value="1064"/> + <Height Value="40"/> + </Size> + <Flags Value="48"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btReportTitle"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value=""/> + </Object2> + <Object3> + <Name Value="PageHeader1"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="96"/> + <Width Value="1064"/> + <Height Value="16"/> + </Size> + <Flags Value="48"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btPageHeader"/> + <Condition Value=""/> + <DatasetStr Value=""/> + <Child Value=""/> + </Object3> + <Object4> + <Name Value="MasterData2"/> + <ClassName Value="TfrBandView"/> + <Visible Value="True"/> + <Typ Value="gtBand"/> + <StreamMode Value="0"/> + <Size> + <Left Value="0"/> + <Top Value="144"/> + <Width Value="1064"/> + <Height Value="64"/> + </Size> + <Flags Value="49"/> + <Data> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Frames> + <Restrictions Value=""/> + </Frames> + <BandType Value="btMasterData"/> + <Condition Value=""/> + <DatasetStr Value="1"/> + <Child Value=""/> + </Object4> + <Object5> + <Name Value="Memo1"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="36"/> + <Top Value="276"/> + <Width Value="60"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clSilver"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="[LINE#] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object5> + <Object6> + <Name Value="Memo2"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="96"/> + <Top Value="276"/> + <Width Value="852"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Lazarus is a Delphi compatible cross-platform IDE for Rapid Application Development. "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object6> + <Object7> + <Name Value="Memo3"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="948"/> + <Top Value="276"/> + <Width Value="80"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clFuchsia"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="33554476"/> + <FormatStr Value=""/> + <Memo Value="[DATE] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object7> + <Object8> + <Name Value="Memo4"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="68"/> + <Top Value="36"/> + <Width Value="920"/> + <Height Value="40"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clWhite"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="What is Lazarus? "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="14"/> + <Color Value="clMaroon"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object8> + <Object9> + <Name Value="Memo5"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="932"/> + <Top Value="96"/> + <Width Value="96"/> + <Height Value="16"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="Page [PAGE#] "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taRightJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object9> + <Object10> + <Name Value="Memo6"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="36"/> + <Top Value="144"/> + <Width Value="96"/> + <Height Value="64"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clYellow"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="You are ready? "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taCenter"/> + <Layout Value="tlCenter"/> + <Angle Value="90"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object10> + <Object11> + <Name Value="Memo7"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="132"/> + <Top Value="144"/> + <Width Value="96"/> + <Height Value="16"/> + </Size> + <Flags Value="2"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="11 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object11> + <Object12> + <Name Value="Memo8"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="132"/> + <Top Value="160"/> + <Width Value="96"/> + <Height Value="48"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value="frbLeft,frbTop,frbRight,frbBottom"/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="12 "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="10"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value=""/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlCenter"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object12> + <Object13> + <Name Value="Memo9"/> + <ClassName Value="TfrMemoView"/> + <Visible Value="True"/> + <Typ Value="gtMemo"/> + <StreamMode Value="0"/> + <Size> + <Left Value="228"/> + <Top Value="144"/> + <Width Value="800"/> + <Height Value="40"/> + </Size> + <Flags Value="3"/> + <FillColor Value="clNone"/> + <Frames> + <FrameColor Value="clBlack"/> + <FrameStyle Value="frsSolid"/> + <FrameWidth Value="1"/> + <FrameBorders Value=""/> + <Restrictions Value=""/> + </Frames> + <Data> + <Format Value="556"/> + <FormatStr Value=""/> + <Memo Value="You can create your own open source or commercial applications. With Lazarus you can create file browsers, image viewers, database applications, graphics editing software, games, 3D software, medical analysis software or any other type of software. "/> + <Script Value=""/> + <GapX Value="0"/> + <GapY Value="0"/> + <OnClick Value=""/> + <OnMouseEnter Value=""/> + <OnMouseLeave Value=""/> + <DetailReport Value=""/> + <ParagraphGap Value="0"/> + <LineSpacing Value="2"/> + </Data> + <Tag Value=""/> + <FURLInfo Value=""/> + <Font> + <Name Value="helvetica [urw]"/> + <Size Value="8"/> + <Color Value="clBlack"/> + <Charset Value="0"/> + <Style Value="fsItalic"/> + </Font> + <Highlight> + <FontStyle Value="2"/> + <FontColor Value="clBlack"/> + <FillColor Value="clWhite"/> + <HighlightStr Value=""/> + </Highlight> + <Alignment Value="taLeftJustify"/> + <Layout Value="tlTop"/> + <Angle Value="0"/> + <Justify Value="False"/> + <Cursor Value="0"/> + </Object13> + <ObjectCount Value="13"/> + </Page1> + <FVal> + <Count Value="0"/> + </FVal> + <ParentVars Value=""/> + </Pages> + <DetailReports> + <Count Value="0"/> + </DetailReports> + </LazReport> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.lfm lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.lfm --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.lfm 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,181 @@ +object Form1: TForm1 + Left = 667 + Height = 267 + Top = 217 + Width = 490 + Caption = 'Export report demo' + ClientHeight = 267 + ClientWidth = 490 + Position = poScreenCenter + LCLVersion = '1.5' + object Button1: TButton + AnchorSideTop.Control = Owner + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = Button2 + Left = 75 + Height = 20 + Top = 123 + Width = 112 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Right = 6 + Caption = 'Design report' + OnClick = Button1Click + TabOrder = 0 + end + object Button2: TButton + AnchorSideLeft.Control = Owner + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = Owner + AnchorSideTop.Side = asrCenter + Left = 193 + Height = 20 + Top = 123 + Width = 104 + AutoSize = True + Caption = 'Show report' + OnClick = Button2Click + TabOrder = 1 + end + object Button9: TButton + AnchorSideLeft.Control = Button2 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = Owner + AnchorSideTop.Side = asrCenter + Left = 303 + Height = 20 + Top = 123 + Width = 110 + AutoSize = True + BorderSpacing.Left = 6 + Caption = 'Export report' + OnClick = Button9Click + TabOrder = 2 + end + object Button3: TButton + Tag = 1 + AnchorSideTop.Control = Button2 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Button2 + Left = 75 + Height = 20 + Top = 149 + Width = 112 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Top = 6 + BorderSpacing.Right = 6 + Caption = 'Design report' + OnClick = Button1Click + TabOrder = 3 + end + object Button10: TButton + Tag = 1 + AnchorSideLeft.Control = Button2 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = Button2 + AnchorSideTop.Side = asrBottom + Left = 303 + Height = 20 + Top = 149 + Width = 110 + AutoSize = True + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 + Caption = 'Export report' + OnClick = Button9Click + TabOrder = 4 + end + object Button4: TButton + Tag = 1 + AnchorSideLeft.Control = Owner + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = Button2 + AnchorSideTop.Side = asrBottom + Left = 193 + Height = 20 + Top = 149 + Width = 104 + AutoSize = True + BorderSpacing.Top = 6 + Caption = 'Show report' + OnClick = Button2Click + TabOrder = 5 + end + object Label1: TLabel + AnchorSideLeft.Control = Owner + AnchorSideBottom.Control = Button1 + AnchorSideBottom.Side = asrBottom + Left = 6 + Height = 16 + Top = 127 + Width = 54 + Anchors = [akLeft, akBottom] + BorderSpacing.Left = 6 + Caption = 'Demo 1:' + ParentColor = False + end + object Label2: TLabel + AnchorSideLeft.Control = Owner + AnchorSideBottom.Control = Button3 + AnchorSideBottom.Side = asrBottom + Left = 6 + Height = 16 + Top = 153 + Width = 54 + Anchors = [akLeft, akBottom] + BorderSpacing.Left = 6 + Caption = 'Demo 2:' + ParentColor = False + end + object RadioGroup1: TRadioGroup + AnchorSideLeft.Control = Owner + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = Owner + Left = 178 + Height = 76 + Top = 0 + Width = 134 + AutoFill = True + AutoSize = True + Caption = 'File format' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 54 + ClientWidth = 126 + ItemIndex = 0 + Items.Strings = ( + 'Export to ODS' + 'Export to XLS' + 'Export to XLSX' + ) + TabOrder = 6 + end + object frReport1: TfrReport + InitialZoom = pzDefault + Options = [] + PreviewButtons = [pbZoom, pbLoad, pbSave, pbPrint, pbFind, pbHelp, pbExit] + DataType = dtDataSet + left = 48 + top = 24 + end + object frDesigner1: TfrDesigner + left = 88 + top = 24 + end + object lrSpreadSheetExport1: TlrSpreadSheetExport + DataGrouping = ldgLikeReport + DataGroupingChunks = 50 + OpenAfterExport = True + DeleteEmptyRow = False + MergeCell = True + ShowSetupForm = False + left = 232 + top = 24 + end +end diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/demo/unit1.pas 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,94 @@ +unit Unit1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LR_Class, LR_Desgn, Forms, Controls, + Graphics, Dialogs, StdCtrls, ExtCtrls, le_e_spreadsheet, + lrSpreadSheetExp; + +type + + { TForm1 } + + TForm1 = class(TForm) + Button1: TButton; + Button10: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + Button9: TButton; + frDesigner1: TfrDesigner; + frReport1: TfrReport; + Label1: TLabel; + Label2: TLabel; + lrSpreadSheetExport1: TlrSpreadSheetExport; + RadioGroup1: TRadioGroup; + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure Button9Click(Sender: TObject); + private + function RepName(Num:integer):string; + public + { public declarations } + end; + +var + Form1: TForm1; + +implementation +uses LCLIntf, LazUTF8, LazFileUtils; + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.Button1Click(Sender: TObject); +begin + frReport1.Clear; + if FileExistsUTF8(RepName((Sender as TComponent).Tag)) then + frReport1.LoadFromFile(RepName((Sender as TComponent).Tag)) + else + frReport1.FileName:=RepName((Sender as TComponent).Tag); + frReport1.DesignReport; +end; + +procedure TForm1.Button2Click(Sender: TObject); +begin + if FileExistsUTF8(RepName((Sender as TComponent).Tag)) then + begin + frReport1.LoadFromFile(RepName((Sender as TComponent).Tag)); + frReport1.ShowReport; + end; +end; + +procedure TForm1.Button9Click(Sender: TObject); +var + FExportName: String; + FExt:string; +begin + case RadioGroup1.ItemIndex of + 1:FExt:='.xls'; + 2:FExt:='.xlsx'; + else + FExt:='.ods'; + end; + FExportName:=AppendPathDelim(ExtractFileDir(ParamStrUTF8(0))) + AppendPathDelim('export') + 'test1'+FExt; + frReport1.LoadFromFile(RepName((Sender as TComponent).Tag)); + frReport1.PrepareReport; + frReport1.ExportTo(TlrSpreadSheetExportFilter, FExportName); +end; + +function TForm1.RepName(Num: integer): string; +begin + Result:=AppendPathDelim(ExtractFileDir(ParamStrUTF8(0))) + AppendPathDelim('reports'); + case Num of + 0:Result:=Result + 'demo_report.lrf'; + 1:Result:=Result + 'acc_pay.lrf'; + end; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/img.txt lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/img.txt --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/img.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/img.txt 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1 @@ +TlrSpreadSheetExport.png \ No newline at end of file diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/mk_res.sh lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/mk_res.sh --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/mk_res.sh 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/mk_res.sh 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1 @@ +../../../../../../tools/lazres ../lrspreadsheetexp.res @img.txt Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/TlrSpreadSheetExport.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/images/TlrSpreadSheetExport.png differ diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.de.po lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.de.po --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.de.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.de.po 2015-08-19 19:31:33.000000000 +0000 @@ -0,0 +1,101 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Swen Heinig <swen@heinig.email>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.7.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: de\n" + +#: le_e_spreadsheet_consts.sallinonepage +msgid "All in one page" +msgstr "Alles auf eine Seite" + +#: le_e_spreadsheet_consts.sallpages +msgid "All pages" +msgstr "Alle Seiten" + +#: le_e_spreadsheet_consts.sautocreatefile +msgid "Auto create file" +msgstr "Datei automatisch erzeugen" + +#: le_e_spreadsheet_consts.schunkseach +msgid "Chunks. Each chunk has (rows):" +msgstr "Blöcke. Jeder Block hat (Zeilen):" + +#: le_e_spreadsheet_consts.scurrentpage +msgid "Current page" +msgstr "Aktuelle Seite" + +#: le_e_spreadsheet_consts.sdatagrouping +msgid "Data grouping" +msgstr "Datengruppierung" + +#: le_e_spreadsheet_consts.sdeleteemptyrows +msgid "Delete empty rows" +msgstr "Leere Zeilen löschen" + +#: le_e_spreadsheet_consts.senterpagenumbers +msgid "" +"Enter page numbers and/or page ranges,\n" +"separated by commas. For example, 1,3,5-12\n" +msgstr "" +"Seitennummern und/oder Seitenbereiche eingeben,\n" +"durch Kommas getrennt. Zum Beispiel, 1,3,5-12\n" + +#: le_e_spreadsheet_consts.sexportpictures +msgid "Export pictures" +msgstr "Bilder exportieren" + +#: le_e_spreadsheet_consts.sexportsettings +msgid "Export settings" +msgstr "Exporteinstellungen" + +#: le_e_spreadsheet_consts.sexporttospreadsheet +msgid "Export to spreadsheet" +msgstr "In Tabellenkalkulation exportieren" + +#: le_e_spreadsheet_consts.sgeneral +msgid "General" +msgstr "Allgemein" + +#: le_e_spreadsheet_consts.slikethereport +msgid "Like the report" +msgstr "Wie im Report" + +#: le_e_spreadsheet_consts.smergecells +msgid "Merge cells" +msgstr "Zellen verbinden" + +#: le_e_spreadsheet_consts.sonlyonecomponent +msgid "Only one TlrSpreadSheetExport component allowed." +msgstr "Nur eine TlrSpreadSheetExport Komponente erlaubt." + +#: le_e_spreadsheet_consts.sopenafterexport +msgid "Open after export" +msgstr "Nach Export öffnen" + +#: le_e_spreadsheet_consts.spagebreaks +msgid "Page breaks" +msgstr "Seitenumbrüche" + +#: le_e_spreadsheet_consts.spagename +msgid "Page %d" +msgstr "Seite %d" + +#: le_e_spreadsheet_consts.spagerange +msgid "Page range" +msgstr "Seitenbereich" + +#: le_e_spreadsheet_consts.spages +msgid "Pages:" +msgstr "Seiten:" + +#: le_e_spreadsheet_consts.sreportpagename +msgid "Report" +msgstr "Report" diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.fr.po lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.fr.po --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.fr.po 2015-12-21 23:08:28.000000000 +0000 @@ -0,0 +1,101 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: 2015-04-14 07:54+0100\n" +"PO-Revision-Date: 2015-12-19 15:58+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"X-Generator: Poedit 1.8.6\n" + +#: le_e_spreadsheet_consts.sallinonepage +msgid "All in one page" +msgstr "Tout sur une page" + +#: le_e_spreadsheet_consts.sallpages +msgid "All pages" +msgstr "Toutes les pages" + +#: le_e_spreadsheet_consts.sautocreatefile +msgid "Auto create file" +msgstr "Créer automatiquement le fichier" + +#: le_e_spreadsheet_consts.schunkseach +msgid "Chunks. Each chunk has (rows):" +msgstr "Morceaux. Chaque morceau a (lignes) :" + +#: le_e_spreadsheet_consts.scurrentpage +msgid "Current page" +msgstr "Page en cours" + +#: le_e_spreadsheet_consts.sdatagrouping +msgid "Data grouping" +msgstr "Regroupement des données" + +#: le_e_spreadsheet_consts.sdeleteemptyrows +msgid "Delete empty rows" +msgstr "Supprimer les lignes vides" + +#: le_e_spreadsheet_consts.senterpagenumbers +msgid "" +"Enter page numbers and/or page ranges,\n" +"separated by commas. For example, 1,3,5-12\n" +msgstr "" +"Saisir les numéros de pages et/ou les intervalles de pages,\n" +"séparés par des virgules. Par exemple : 1,3,5-12\n" + +#: le_e_spreadsheet_consts.sexportpictures +msgid "Export pictures" +msgstr "Exporter les images" + +#: le_e_spreadsheet_consts.sexportsettings +msgid "Export settings" +msgstr "Exporter les paramètres" + +#: le_e_spreadsheet_consts.sexporttospreadsheet +msgid "Export to spreadsheet" +msgstr "Exporter vers la feuille de calcul" + +#: le_e_spreadsheet_consts.sgeneral +msgid "General" +msgstr "Général" + +#: le_e_spreadsheet_consts.slikethereport +msgid "Like the report" +msgstr "Comme le rapport" + +#: le_e_spreadsheet_consts.smergecells +msgid "Merge cells" +msgstr "Fusionner les cellules" + +#: le_e_spreadsheet_consts.sonlyonecomponent +msgid "Only one TlrSpreadSheetExport component allowed." +msgstr "Seulement un composant \"TlrSpreadSheetExport\" est autorisé." + +#: le_e_spreadsheet_consts.sopenafterexport +msgid "Open after export" +msgstr "Ouvrir après l'exportation" + +#: le_e_spreadsheet_consts.spagebreaks +msgid "Page breaks" +msgstr "Sauts de page" + +#: le_e_spreadsheet_consts.spagename +msgid "Page %d" +msgstr "Page %d" + +#: le_e_spreadsheet_consts.spagerange +msgid "Page range" +msgstr "Intervalle de pages" + +#: le_e_spreadsheet_consts.spages +msgid "Pages:" +msgstr "Pages :" + +#: le_e_spreadsheet_consts.sreportpagename +msgid "Report" +msgstr "Rapport" + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.hu.po lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.hu.po --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.hu.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.hu.po 2015-08-20 22:10:28.000000000 +0000 @@ -0,0 +1,101 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Péter Gábor <ptrg@freemail.hu>\n" +"Language-Team: Magyar (Hungarian)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: le_e_spreadsheet_consts.sallinonepage +msgid "All in one page" +msgstr "Minden egy oldalon" + +#: le_e_spreadsheet_consts.sallpages +msgid "All pages" +msgstr "Minden oldal" + +#: le_e_spreadsheet_consts.sautocreatefile +msgid "Auto create file" +msgstr "Fájl automatikus létrehozása" + +#: le_e_spreadsheet_consts.schunkseach +msgid "Chunks. Each chunk has (rows):" +msgstr "Szakaszokban. Sorok szakaszonként:" + +#: le_e_spreadsheet_consts.scurrentpage +msgid "Current page" +msgstr "Aktuális oldal" + +#: le_e_spreadsheet_consts.sdatagrouping +msgid "Data grouping" +msgstr "Adatok csoportosítása" + +#: le_e_spreadsheet_consts.sdeleteemptyrows +msgid "Delete empty rows" +msgstr "Üres sorok törlése" + +#: le_e_spreadsheet_consts.senterpagenumbers +msgid "" +"Enter page numbers and/or page ranges,\n" +"separated by commas. For example, 1,3,5-12\n" +msgstr "" +"Oldalszámok és/vagy tartományok megadása\n" +"vesszővel elválasztva. Például: 1,3,5-12\n" + +#: le_e_spreadsheet_consts.sexportpictures +msgid "Export pictures" +msgstr "Képek exportálása" + +#: le_e_spreadsheet_consts.sexportsettings +msgid "Export settings" +msgstr "Exportálás beállításai" + +#: le_e_spreadsheet_consts.sexporttospreadsheet +msgid "Export to spreadsheet" +msgstr "Exportálás táblázatba" + +#: le_e_spreadsheet_consts.sgeneral +msgid "General" +msgstr "Általános" + +#: le_e_spreadsheet_consts.slikethereport +msgid "Like the report" +msgstr "Mint a jelentés" + +#: le_e_spreadsheet_consts.smergecells +msgid "Merge cells" +msgstr "Cellák egyesítése" + +#: le_e_spreadsheet_consts.sonlyonecomponent +msgid "Only one TlrSpreadSheetExport component allowed." +msgstr "Csak egy TlrSpreadSheetExport komponens használható." + +#: le_e_spreadsheet_consts.sopenafterexport +msgid "Open after export" +msgstr "Megnyitás exportálás után" + +#: le_e_spreadsheet_consts.spagebreaks +msgid "Page breaks" +msgstr "Oldaltörések" + +#: le_e_spreadsheet_consts.spagename +msgid "Page %d" +msgstr "%d oldal" + +#: le_e_spreadsheet_consts.spagerange +msgid "Page range" +msgstr "Oldaltartomány" + +#: le_e_spreadsheet_consts.spages +msgid "Pages:" +msgstr "Oldalak:" + +#: le_e_spreadsheet_consts.sreportpagename +msgid "Report" +msgstr "Jelentés" + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.po lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.po --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.po 2015-08-18 23:33:31.000000000 +0000 @@ -0,0 +1,89 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: le_e_spreadsheet_consts.sallinonepage +msgid "All in one page" +msgstr "" + +#: le_e_spreadsheet_consts.sallpages +msgid "All pages" +msgstr "" + +#: le_e_spreadsheet_consts.sautocreatefile +msgid "Auto create file" +msgstr "" + +#: le_e_spreadsheet_consts.schunkseach +msgid "Chunks. Each chunk has (rows):" +msgstr "" + +#: le_e_spreadsheet_consts.scurrentpage +msgid "Current page" +msgstr "" + +#: le_e_spreadsheet_consts.sdatagrouping +msgid "Data grouping" +msgstr "" + +#: le_e_spreadsheet_consts.sdeleteemptyrows +msgid "Delete empty rows" +msgstr "" + +#: le_e_spreadsheet_consts.senterpagenumbers +msgid "" +"Enter page numbers and/or page ranges,\n" +"separated by commas. For example, 1,3,5-12\n" +msgstr "" + +#: le_e_spreadsheet_consts.sexportpictures +msgid "Export pictures" +msgstr "" + +#: le_e_spreadsheet_consts.sexportsettings +msgid "Export settings" +msgstr "" + +#: le_e_spreadsheet_consts.sexporttospreadsheet +msgid "Export to spreadsheet" +msgstr "" + +#: le_e_spreadsheet_consts.sgeneral +msgid "General" +msgstr "" + +#: le_e_spreadsheet_consts.slikethereport +msgid "Like the report" +msgstr "" + +#: le_e_spreadsheet_consts.smergecells +msgid "Merge cells" +msgstr "" + +#: le_e_spreadsheet_consts.sonlyonecomponent +msgid "Only one TlrSpreadSheetExport component allowed." +msgstr "" + +#: le_e_spreadsheet_consts.sopenafterexport +msgid "Open after export" +msgstr "" + +#: le_e_spreadsheet_consts.spagebreaks +msgid "Page breaks" +msgstr "" + +#: le_e_spreadsheet_consts.spagename +msgid "Page %d" +msgstr "" + +#: le_e_spreadsheet_consts.spagerange +msgid "Page range" +msgstr "" + +#: le_e_spreadsheet_consts.spages +msgid "Pages:" +msgstr "" + +#: le_e_spreadsheet_consts.sreportpagename +msgid "Report" +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.ru.po lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.ru.po --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.ru.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/languages/le_e_spreadsheet_consts.ru.po 2015-08-18 23:33:31.000000000 +0000 @@ -0,0 +1,101 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" + +#: le_e_spreadsheet_consts.sallinonepage +msgid "All in one page" +msgstr "Всё на одной странице" + +#: le_e_spreadsheet_consts.sallpages +msgid "All pages" +msgstr "Все страницы" + +#: le_e_spreadsheet_consts.sautocreatefile +msgid "Auto create file" +msgstr "Создавать файл автоматически" + +#: le_e_spreadsheet_consts.schunkseach +msgid "Chunks. Each chunk has (rows):" +msgstr "По строкам. Строк на листе:" + +#: le_e_spreadsheet_consts.scurrentpage +msgid "Current page" +msgstr "Текущая страница" + +#: le_e_spreadsheet_consts.sdatagrouping +msgid "Data grouping" +msgstr "Группировка данных" + +#: le_e_spreadsheet_consts.sdeleteemptyrows +msgid "Delete empty rows" +msgstr "Удалять пустые строки" + +#: le_e_spreadsheet_consts.senterpagenumbers +msgid "" +"Enter page numbers and/or page ranges,\n" +"separated by commas. For example, 1,3,5-12\n" +msgstr "" +"Введите номера и/или диапазоны страниц,\n" +"разделённые запятыми. Например, 1,3,5-12\n" + +#: le_e_spreadsheet_consts.sexportpictures +msgid "Export pictures" +msgstr "Экспортировать изображения" + +#: le_e_spreadsheet_consts.sexportsettings +msgid "Export settings" +msgstr "Параметры экспорта" + +#: le_e_spreadsheet_consts.sexporttospreadsheet +msgid "Export to spreadsheet" +msgstr "Экспорт в электронную таблицу" + +#: le_e_spreadsheet_consts.sgeneral +msgid "General" +msgstr "Общие" + +#: le_e_spreadsheet_consts.slikethereport +msgid "Like the report" +msgstr "По страницам, как в отчёте" + +#: le_e_spreadsheet_consts.smergecells +msgid "Merge cells" +msgstr "Объединять ячейки" + +#: le_e_spreadsheet_consts.sonlyonecomponent +msgid "Only one TlrSpreadSheetExport component allowed." +msgstr "Разрешается наличие только одного экземпляра TlrSpreadSheetExport" + +#: le_e_spreadsheet_consts.sopenafterexport +msgid "Open after export" +msgstr "Открывать после процедуры экспорта" + +#: le_e_spreadsheet_consts.spagebreaks +msgid "Page breaks" +msgstr "Разрывы страниц" + +#: le_e_spreadsheet_consts.spagename +msgid "Page %d" +msgstr "Страница %d" + +#: le_e_spreadsheet_consts.spagerange +msgid "Page range" +msgstr "Диапазон страниц" + +#: le_e_spreadsheet_consts.spages +msgid "Pages:" +msgstr "Страницы:" + +#: le_e_spreadsheet_consts.sreportpagename +msgid "Report" +msgstr "Отчёт" + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_consts.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_consts.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_consts.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_consts.pas 2015-08-18 23:33:31.000000000 +0000 @@ -0,0 +1,70 @@ +{ + LazReport matrix for export reports + + Copyright (C) 2014-2015 alexs alexs75.at.yandex.ru + + The module is designed to create an image of the report with the exact + positioning of objects and subsequent binding to the worksheet + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version with the following modification: + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit le_e_spreadsheet_consts; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +resourcestring + sPageName = 'Page %d'; + sReportPageName = 'Report'; + sExportToSpreadsheet = 'Export to spreadsheet'; + sGeneral = 'General'; + sExportSettings = 'Export settings'; + sDataGrouping = 'Data grouping'; + sLikeTheReport = 'Like the report'; + sAllInOnePage = 'All in one page'; + sChunksEach = 'Chunks. Each chunk has (rows):'; + sOpenAfterExport = 'Open after export'; + sAutoCreateFile = 'Auto create file'; + sPageRange = 'Page range'; + sAllPages = 'All pages'; + sCurrentPage = 'Current page'; + sPages = 'Pages:'; + sEnterPageNumbers = 'Enter page numbers and/or page ranges,'#13'separated by commas. For example, 1,3,5-12'; + sExportPictures = 'Export pictures'; + sMergeCells = 'Merge cells'; + sPageBreaks = 'Page breaks'; + sDeleteEmptyRows = 'Delete empty rows'; + sOnlyOneComponent = 'Only one TlrSpreadSheetExport component allowed.'; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.lfm lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.lfm --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.lfm 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,279 @@ +object leSpreadsheetParamsForm: TleSpreadsheetParamsForm + Left = 725 + Height = 326 + Top = 260 + Width = 350 + Caption = 'Export to spreadsheet' + ClientHeight = 326 + ClientWidth = 350 + OnCreate = FormCreate + Position = poScreenCenter + LCLVersion = '1.5' + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 42 + Top = 278 + Width = 338 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 0 + ShowButtons = [pbOK, pbCancel, pbHelp] + end + object PageControl1: TPageControl + Left = 0 + Height = 272 + Top = 0 + Width = 350 + ActivePage = TabSheet2 + Align = alClient + TabIndex = 1 + TabOrder = 1 + object TabSheet1: TTabSheet + Caption = 'General' + ClientHeight = 233 + ClientWidth = 344 + object GroupBox1: TGroupBox + AnchorSideLeft.Control = TabSheet1 + AnchorSideRight.Control = TabSheet1 + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 176 + Top = 208 + Width = 344 + Anchors = [akTop, akLeft, akRight] + AutoSize = True + Caption = 'Page range' + ClientHeight = 153 + ClientWidth = 340 + TabOrder = 0 + Visible = False + object RadioButton1: TRadioButton + AnchorSideLeft.Control = GroupBox1 + AnchorSideTop.Control = GroupBox1 + Left = 6 + Height = 25 + Top = 6 + Width = 76 + BorderSpacing.Around = 6 + Caption = 'All page' + Checked = True + TabOrder = 0 + TabStop = True + end + object RadioButton2: TRadioButton + AnchorSideLeft.Control = GroupBox1 + AnchorSideTop.Control = RadioButton1 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 37 + Width = 109 + BorderSpacing.Around = 6 + Caption = 'Current page' + TabOrder = 1 + end + object RadioButton3: TRadioButton + AnchorSideLeft.Control = GroupBox1 + AnchorSideTop.Control = RadioButton2 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 68 + Width = 67 + BorderSpacing.Around = 6 + Caption = 'Pages:' + TabOrder = 2 + end + object Edit1: TEdit + AnchorSideLeft.Control = RadioButton3 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = RadioButton2 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = GroupBox1 + AnchorSideRight.Side = asrBottom + Left = 79 + Height = 31 + Top = 68 + Width = 255 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + TabOrder = 3 + end + object Label1: TLabel + AnchorSideLeft.Control = GroupBox1 + AnchorSideTop.Control = Edit1 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = GroupBox1 + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 42 + Top = 105 + Width = 328 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + Caption = 'Enter page numbers and/or page ranges,'#10'separated by commas. For example, 1,3,5-12' + ParentColor = False + end + end + object GroupBox2: TGroupBox + AnchorSideLeft.Control = TabSheet1 + AnchorSideTop.Control = TabSheet1 + AnchorSideRight.Control = TabSheet1 + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 128 + Top = 0 + Width = 344 + Anchors = [akTop, akLeft, akRight] + AutoSize = True + Caption = 'Data grouping' + ClientHeight = 105 + ClientWidth = 340 + TabOrder = 1 + object RadioButton4: TRadioButton + AnchorSideLeft.Control = GroupBox2 + AnchorSideTop.Control = GroupBox2 + Left = 6 + Height = 25 + Top = 6 + Width = 119 + BorderSpacing.Around = 6 + Caption = 'Like the report' + Checked = True + TabOrder = 0 + TabStop = True + end + object RadioButton5: TRadioButton + AnchorSideLeft.Control = GroupBox2 + AnchorSideTop.Control = RadioButton4 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 37 + Width = 119 + BorderSpacing.Around = 6 + Caption = 'All in one page' + TabOrder = 1 + end + object RadioButton6: TRadioButton + AnchorSideLeft.Control = GroupBox2 + AnchorSideTop.Control = RadioButton5 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 68 + Width = 228 + BorderSpacing.Around = 6 + Caption = 'Chunks. Each chunk has (rows):' + TabOrder = 2 + Visible = False + end + object SpinEdit1: TSpinEdit + AnchorSideLeft.Control = RadioButton6 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = RadioButton5 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = GroupBox2 + AnchorSideRight.Side = asrBottom + Left = 240 + Height = 31 + Top = 68 + Width = 94 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + MaxValue = 655360 + MinValue = 1 + TabOrder = 3 + Value = 50 + Visible = False + end + end + object CheckBox4: TCheckBox + AnchorSideLeft.Control = TabSheet1 + AnchorSideTop.Control = GroupBox2 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 134 + Width = 141 + BorderSpacing.Around = 6 + Caption = 'Open after export' + TabOrder = 2 + end + object CheckBox5: TCheckBox + AnchorSideLeft.Control = TabSheet1 + AnchorSideTop.Control = CheckBox4 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 165 + Width = 123 + BorderSpacing.Around = 6 + Caption = 'Auto create file' + TabOrder = 3 + Visible = False + end + end + object TabSheet2: TTabSheet + Caption = 'Export settings' + ClientHeight = 233 + ClientWidth = 344 + object CheckBox1: TCheckBox + AnchorSideLeft.Control = TabSheet2 + AnchorSideTop.Control = TabSheet2 + Left = 6 + Height = 25 + Top = 181 + Width = 123 + Anchors = [akLeft] + BorderSpacing.Around = 6 + Caption = 'Export pictures' + TabOrder = 0 + Visible = False + end + object CheckBox2: TCheckBox + AnchorSideLeft.Control = TabSheet2 + AnchorSideTop.Control = TabSheet2 + Left = 6 + Height = 25 + Top = 6 + Width = 99 + BorderSpacing.Around = 6 + Caption = 'Merge cells' + TabOrder = 1 + end + object CheckBox3: TCheckBox + AnchorSideLeft.Control = TabSheet2 + AnchorSideTop.Control = CheckBox2 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 214 + Width = 102 + Anchors = [akLeft] + BorderSpacing.Around = 6 + Caption = 'Page breaks' + TabOrder = 2 + Visible = False + end + object CheckBox6: TCheckBox + AnchorSideLeft.Control = TabSheet2 + AnchorSideTop.Control = CheckBox2 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 25 + Top = 37 + Width = 150 + BorderSpacing.Around = 6 + Caption = 'Delete empty rows' + TabOrder = 3 + end + end + end +end diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_params.pas 2015-08-18 23:33:31.000000000 +0000 @@ -0,0 +1,118 @@ +{ + LazReport matrix for export reports + + Copyright (C) 2014-2015 alexs alexs75.at.yandex.ru + + The module is designed to create an image of the report with the exact + positioning of objects and subsequent binding to the worksheet + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version with the following modification: + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit le_e_spreadsheet_params; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, + ComCtrls, ExtCtrls, StdCtrls, Spin; + +type + + { TleSpreadsheetParamsForm } + + TleSpreadsheetParamsForm = class(TForm) + ButtonPanel1: TButtonPanel; + CheckBox1: TCheckBox; + CheckBox2: TCheckBox; + CheckBox3: TCheckBox; + CheckBox4: TCheckBox; + CheckBox5: TCheckBox; + CheckBox6: TCheckBox; + Edit1: TEdit; + GroupBox1: TGroupBox; + GroupBox2: TGroupBox; + Label1: TLabel; + PageControl1: TPageControl; + RadioButton1: TRadioButton; + RadioButton2: TRadioButton; + RadioButton3: TRadioButton; + RadioButton4: TRadioButton; + RadioButton5: TRadioButton; + RadioButton6: TRadioButton; + SpinEdit1: TSpinEdit; + TabSheet1: TTabSheet; + TabSheet2: TTabSheet; + procedure FormCreate(Sender: TObject); + private + procedure Localize; + public + { public declarations } + end; + +var + leSpreadsheetParamsForm: TleSpreadsheetParamsForm; + +implementation +uses le_e_spreadsheet_consts; + +{$R *.lfm} + +{ TleSpreadsheetParamsForm } + +procedure TleSpreadsheetParamsForm.FormCreate(Sender: TObject); +begin + PageControl1.ActivePageIndex:=0; + Localize; +end; + +procedure TleSpreadsheetParamsForm.Localize; +begin + Caption:=sExportToSpreadsheet; + TabSheet1.Caption:=sGeneral; + TabSheet2.Caption:=sExportSettings; + GroupBox2.Caption:=sDataGrouping; + RadioButton4.Caption:=sLikeTheReport; + RadioButton5.Caption:=sAllInOnePage; + RadioButton6.Caption:=sChunksEach; + CheckBox4.Caption:=sOpenAfterExport; + CheckBox5.Caption:=sAutoCreateFile; + GroupBox1.Caption:=sPageRange; + RadioButton1.Caption:=sAllPages; + RadioButton2.Caption:=sCurrentPage; + RadioButton3.Caption:=sPages; + Label1.Caption:=sEnterPageNumbers; + + CheckBox1.Caption:=sExportPictures; + CheckBox2.Caption:=sMergeCells; + CheckBox3.Caption:=sPageBreaks; + CheckBox6.Caption:=sDeleteEmptyRows; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet.pas 2015-08-30 17:38:01.000000000 +0000 @@ -0,0 +1,434 @@ +{ + LazReport matrix for export reports + + Copyright (C) 2014-2015 alexs alexs75.at.yandex.ru + + The module is designed to create an image of the report with the exact + positioning of objects and subsequent binding to the worksheet + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version with the following modification: + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit le_e_spreadsheet; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LR_ExportMatrix, LR_Class, fpspreadsheet, Graphics, le_e_spreadsheet_types; + +type + + { TlrSpreadSheetExportFilter } + + TlrSpreadSheetExportFilter = class(TfrExportFilter) + private + FDataGrouping: TlreDataGrouping; + FDataGroupingChunks: integer; + FDeleteEmptyRow: boolean; + FExportMatrix:TExportMatrix; + FMergeCell: boolean; + FOpenAfterExport: boolean; + FWorkbook:TsWorkbook; + FWorksheet:TsWorksheet; + FFileName:string; + FCurPage:integer; +{ FTmpTextWidth: Integer; + FTmpTextHeight: Integer;} + FTmpTextWidth: Double; + FTmpTextHeight: Double; + procedure ExportColWidth; + procedure ExportRowHight; + //procedure ExportData; + procedure ExportData1; + + procedure MakeWorksheet; + protected + function Setup:boolean; override; + procedure AfterExport; override; + public + constructor Create(AStream: TStream); override; + destructor Destroy; override; + procedure OnBeginPage; override; + procedure OnEndPage; override; + procedure OnBeginDoc; override; + procedure OnEndDoc; override; +{ procedure ShowBackGround(View: TfrView; x, y, h, w: integer); + procedure Frame(View: TfrView; x, y, h, w: integer); + procedure ShowFrame(View: TfrView; x, y, h, w: integer); + procedure Line(View: TfrView; x1,y1, x2,y2: Integer); + procedure ShowBarCode(View: TfrBarCodeView; x, y, h, w: integer); + procedure ShowPicture(View: TfrPictureView; x, y, h, w: integer); + procedure ShowRoundRect(View: TfrRoundRectView; x, y, h, w: integer); + procedure ShowShape(View: TfrShapeView; x, y, h, w: integer); + procedure OnText(X, Y: Integer; const Text: string; View: TfrView); override; + procedure OnData(x, y: Integer; View: TfrView); override;} + procedure OnExported(x, y: Integer; View: TfrView); override; + public + property DataGrouping:TlreDataGrouping read FDataGrouping write FDataGrouping; + property DataGroupingChunks:integer read FDataGroupingChunks write FDataGroupingChunks; + property OpenAfterExport:boolean read FOpenAfterExport write FOpenAfterExport; + property DeleteEmptyRow:boolean read FDeleteEmptyRow write FDeleteEmptyRow; + property MergeCell:boolean read FMergeCell write FMergeCell; + end; + +implementation +uses LCLType, le_e_spreadsheet_params, fpsTypes, fpsutils, LazUTF8Classes, Forms, Controls, + LCLIntf, LazFileUtils, le_e_spreadsheet_consts, lrSpreadSheetExp, math; + +const + ssAligns : array [TAlignment] of TsHorAlignment = (haLeft, haRight, haCenter); + ssLayout : array [TTextLayout] of TsVertAlignment = (vaTop, vaCenter, vaBottom); + + { TlrSpreadSheetExportFilter } + +procedure TlrSpreadSheetExportFilter.ExportColWidth; +var + i: Integer; +begin + for i:=0 to FExportMatrix.ColumnCount-1 do + //FWorksheet.WriteColWidth(i, round(FExportMatrix.ColumnWidth[i] * 0.161404639)); + //FWorksheet.WriteColWidth(i, Max(FExportMatrix.ColumnWidth[i] / FTmpTextWidth, 1)); + FWorksheet.WriteColWidth(i, FExportMatrix.ColumnWidth[i] / FTmpTextWidth); +end; + +procedure TlrSpreadSheetExportFilter.ExportRowHight; +var + i: Integer; +begin + for i:=0 to FExportMatrix.RowCount - 1 do + FWorksheet.WriteRowHeight(i, FExportMatrix.RowHiht[i] / FTmpTextHeight); +end; + +function sftofs(AFont:TFont):TsFontStyles; +begin + Result:=[]; + if fsBold in AFont.Style then + Result:=Result + [fssBold]; + + if fsItalic in AFont.Style then + Result:=Result + [fssItalic]; + + if fsStrikeOut in AFont.Style then + Result:=Result + [fssStrikeOut]; + + if fsUnderline in AFont.Style then + Result:=Result + [fssUnderline]; +end; +{ +procedure TlrSpreadSheetExportFilter.ExportData; +var + R:TExportObject; + y: Integer; + x: Integer; + scFrm:TsCellBorders; + +begin + for y:=0 to FExportMatrix.RowCount do + for x:=0 to FExportMatrix.ColumnCount do + begin + R:=FExportMatrix.Objects[X, Y]; + if Assigned(R) then + begin + if R.Text<>'' then + begin + FWorksheet.WriteUTF8Text(Y, X, TrimRight(R.Texts.Text)); + if R.Angle <> 0 then + FWorksheet.WriteTextRotation(Y, X, rt90DegreeCounterClockwiseRotation); + FWorksheet.WriteVertAlignment(Y, X, ssLayout[R.Layout]); + FWorksheet.WriteWordwrap(Y, X, R.WordWrap); + end; + FWorksheet.WriteBackgroundColor(Y, X, R.FillColor); + + if (R.Col < R.MergedCol) or (R.Row < R.MergedRow) then + FWorksheet.MergeCells(Y, X, R.MergedRow, R.MergedCol); + + if Assigned(R.Font) then + FWorksheet.WriteFont(Y, X, R.Font.Name, R.Font.Size, sftofs(R.Font), R.Font.Color, fpNormal); + + FWorksheet.WriteHorAlignment(Y, X, ssAligns[R.Alignment]); + + scFrm:=[]; + if frbLeft in R.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbEast, R.FrameColor); + scFrm:=scFrm + [cbEast] + end; + if frbTop in R.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbNorth, R.FrameColor); + scFrm:=scFrm + [cbNorth] + end; + if frbBottom in R.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbSouth, R.FrameColor); + scFrm:=scFrm + [cbSouth] + end; + if frbRight in R.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbWest, R.FrameColor); + scFrm:=scFrm + [cbWest] + end; + + if scFrm <> [] then + FWorksheet.WriteBorders(Y, X, scFrm); + end; + end; +end; +} +procedure TlrSpreadSheetExportFilter.ExportData1; +var + R: Integer; + Row: TExportRow; + C: Integer; + Cel: TExportObject; + X: Integer; + Y: Integer; + scFrm:TsCellBorders; +begin + for R:=0 to FExportMatrix.Rows.Count-1 do + begin + Row:=TExportRow(FExportMatrix.Rows[R]); + for C:=0 to Row.Cells.Count-1 do + begin + Cel:=TExportObject(Row.Cells[C]); + + if Assigned(Cel) then + begin + X:=Cel.Col; + Y:=Row.Row; + if Cel.Text<>'' then + begin + FWorksheet.WriteUTF8Text(Y, X, TrimRight(Cel.Texts.Text)); + if Cel.Angle <> 0 then + FWorksheet.WriteTextRotation(Y, X, rt90DegreeCounterClockwiseRotation); + FWorksheet.WriteVertAlignment(Y, X, ssLayout[Cel.Layout]); + FWorksheet.WriteWordwrap(Y, X, Cel.WordWrap); + end; + FWorksheet.WriteBackgroundColor(Y, X, Cel.FillColor); + + if (Cel.Col < Cel.MergedCol) or (Cel.Row < Cel.MergedRow) then + FWorksheet.MergeCells(Y, X, Cel.MergedRow, Cel.MergedCol); + + if Assigned(Cel.Font) then + FWorksheet.WriteFont(Y, X, Cel.Font.Name, Cel.Font.Size, sftofs(Cel.Font), Cel.Font.Color, fpNormal); + + FWorksheet.WriteHorAlignment(Y, X, ssAligns[Cel.Alignment]); + + scFrm:=[]; + if frbLeft in Cel.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbEast, Cel.FrameColor); + scFrm:=scFrm + [cbEast] + end; + if frbTop in Cel.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbNorth, Cel.FrameColor); + scFrm:=scFrm + [cbNorth] + end; + if frbBottom in Cel.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbSouth, Cel.FrameColor); + scFrm:=scFrm + [cbSouth] + end; + if frbRight in Cel.Frames then + begin + FWorksheet.WriteBorderColor(Y, X, cbWest, Cel.FrameColor); + scFrm:=scFrm + [cbWest] + end; + + if scFrm <> [] then + FWorksheet.WriteBorders(Y, X, scFrm); + end; + end; + end; +end; + +procedure TlrSpreadSheetExportFilter.MakeWorksheet; +var + S: String; +begin + FExportMatrix.PrepareData; + if FDataGrouping = ldgLikeReport then + S:=Format(sPageName, [FCurPage]) + else + S:=sReportPageName; + + FWorksheet := FWorkbook.AddWorksheet(S); + ExportColWidth; + ExportRowHight; + //ExportData; + ExportData1; + FWorksheet:=nil; + FExportMatrix.Clear; +end; + +function TlrSpreadSheetExportFilter.Setup: boolean; +begin + Result:=inherited Setup; + + if Assigned(lrSpreadSheetExportComponent) and not lrSpreadSheetExportComponent.ShowSetupForm then exit; + + leSpreadsheetParamsForm:=TleSpreadsheetParamsForm.Create(Application); + leSpreadsheetParamsForm.RadioButton4.Checked:=FDataGrouping = ldgLikeReport; + leSpreadsheetParamsForm.RadioButton5.Checked:=FDataGrouping = ldgAllInOnePage; + leSpreadsheetParamsForm.RadioButton6.Checked:=FDataGrouping = ldgChunks; + leSpreadsheetParamsForm.SpinEdit1.Value:=FDataGroupingChunks; + leSpreadsheetParamsForm.CheckBox4.Checked:=FOpenAfterExport; + leSpreadsheetParamsForm.CheckBox2.Checked:=FMergeCell; + leSpreadsheetParamsForm.CheckBox6.Checked:=FDeleteEmptyRow; + + + Result:=leSpreadsheetParamsForm.ShowModal = mrOk; + if Result then + begin + if leSpreadsheetParamsForm.RadioButton4.Checked then + FDataGrouping:=ldgLikeReport + else + if leSpreadsheetParamsForm.RadioButton5.Checked then + FDataGrouping:=ldgAllInOnePage + else + begin + FDataGrouping:=ldgChunks; + FDataGroupingChunks:=leSpreadsheetParamsForm.SpinEdit1.Value; + end; + FOpenAfterExport:=leSpreadsheetParamsForm.CheckBox4.Checked; + FMergeCell := leSpreadsheetParamsForm.CheckBox2.Checked; + FDeleteEmptyRow := leSpreadsheetParamsForm.CheckBox6.Checked; + + FExportMatrix.MergeCell:=FMergeCell; + FExportMatrix.DeleteEmptyRow:=FDeleteEmptyRow; + end; + leSpreadsheetParamsForm.Free; +end; + +procedure TlrSpreadSheetExportFilter.AfterExport; +begin + inherited AfterExport; + if FOpenAfterExport and FileExistsUTF8(FFileName) then + OpenDocument(FFileName); +end; + +constructor TlrSpreadSheetExportFilter.Create(AStream: TStream); +begin + inherited Create(AStream); + + if Assigned(lrSpreadSheetExportComponent) then + begin + FDataGrouping:=lrSpreadSheetExportComponent.DataGrouping; + FDataGroupingChunks:=lrSpreadSheetExportComponent.DataGroupingChunks; + FOpenAfterExport:=lrSpreadSheetExportComponent.OpenAfterExport; + FMergeCell:=lrSpreadSheetExportComponent.MergeCell; + FDeleteEmptyRow:=lrSpreadSheetExportComponent.DeleteEmptyRow; + end + else + begin + FDataGrouping:=ldgLikeReport; + FDataGroupingChunks:=50; + FOpenAfterExport:=true; + FMergeCell:=true; + FDeleteEmptyRow:=false; + end; + + FExportMatrix:=TExportMatrix.Create; + FExportMatrix.MergeCell:=FMergeCell; + FExportMatrix.DeleteEmptyRow:=FDeleteEmptyRow; + + if AStream is TFileStreamUTF8 then + FFileName := TFileStreamUTF8(AStream).FileName + else + FFileName := ''; +end; + +destructor TlrSpreadSheetExportFilter.Destroy; +begin + FExportMatrix.Free; + inherited Destroy; +end; + +procedure TlrSpreadSheetExportFilter.OnBeginPage; +var + P: PfrPageInfo; +begin + inherited OnBeginPage; + Inc(FCurPage); + + if (FDataGrouping = ldgAllInOnePage) and (FCurPage>1) then + FExportMatrix.NewPage; +end; + +procedure TlrSpreadSheetExportFilter.OnEndPage; +begin + inherited OnEndPage; + if FDataGrouping = ldgLikeReport then + MakeWorksheet; +end; + +procedure TlrSpreadSheetExportFilter.OnBeginDoc; +begin + inherited OnBeginDoc; +// FTmpTextWidth:=(TempBmp.Canvas.TextWidth('W') + TempBmp.Canvas.TextWidth('i')) div 2; +// FTmpTextWidth:=TempBmp.Canvas.TextWidth('Wi') / 2; +{ FTmpTextWidth:=TempBmp.Canvas.TextWidth('I'); + FTmpTextHeight:=TempBmp.Canvas.TextHeight('Wg');} + FTmpTextWidth:=7; + FTmpTextHeight:=12; + FWorkbook := TsWorkbook.Create; + FCurPage:=0; +end; + +procedure TlrSpreadSheetExportFilter.OnEndDoc; +var + S: String; + sfFileType: TsSpreadsheetFormat; +begin + inherited OnEndDoc; + + if FDataGrouping = ldgAllInOnePage then + MakeWorksheet; + + if not GetFormatFromFileName(FFileName, sfFileType) then + sfFileType:=sfOpenDocument; + + FWorkbook.WriteToStream(Stream, sfFileType); + FWorkbook.Free; + + FWorkbook:=nil; +end; + +procedure TlrSpreadSheetExportFilter.OnExported(x, y: Integer; View: TfrView); +begin + if not Assigned(View) then exit; + FExportMatrix.ExportObject(View); +end; + +initialization + frRegisterExportFilter(TlrSpreadSheetExportFilter, 'Microsoft Excel (*.xls)', '*.xls'); + frRegisterExportFilter(TlrSpreadSheetExportFilter, 'Microsoft Excel 2007/2010 (*.xlsx)', '*.xlsx'); + frRegisterExportFilter(TlrSpreadSheetExportFilter, 'OpenOffice/LibreOffice (*.ods)', '*.ods'); +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_types.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_types.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_types.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/le_e_spreadsheet_types.pas 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,50 @@ +{ + LazReport matrix for export reports + + Copyright (C) 2014-2015 alexs alexs75.at.yandex.ru + + The module is designed to create an image of the report with the exact + positioning of objects and subsequent binding to the worksheet + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version with the following modification: + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit le_e_spreadsheet_types; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +type + TlreDataGrouping = (ldgLikeReport, ldgAllInOnePage, ldgChunks); + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lr_exportmatrix.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lr_exportmatrix.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lr_exportmatrix.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lr_exportmatrix.pas 2015-08-30 17:38:01.000000000 +0000 @@ -0,0 +1,700 @@ +{ + LazReport matrix for export reports + + Copyright (C) 2014-2015 alexs alexs75.at.yandex.ru + + The module is designed to create an image of the report with the exact + positioning of objects and subsequent binding to the worksheet + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version with the following modification: + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit LR_ExportMatrix; +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LR_Class, Graphics; + +type + + { TExportObject } + + TExportObject = class + private + FAlignment: TAlignment; + FCol: Integer; + FLayout: TTextLayout; + FRow: Integer; + FMergedCol: Integer; + FMergedRow: Integer; + + FFillColor: TColor; + FFrameColor: TColor; + FFrames: TfrFrameBorders; + FFrameStyle: TfrFrameStyle; + FFrameWidth: Double; + + FHeight: integer; + FLeft: integer; + FTop: integer; + FWidht: integer; + + FObjType: integer; + FTexts:TStringList; + FFont:TFont; + FName:string; + FAngle:byte; + FWordWrap: boolean; + + function GetText: string; + public + constructor Create(AObj:TfrView); + destructor Destroy; override; + + property Top:integer read FTop write FTop; + property Left:integer read FLeft write FLeft; + property Height:integer read FHeight write FHeight; + property Widht:integer read FWidht write FWidht; + property Alignment : TAlignment read FAlignment; + property Col:Integer read FCol; + property Row:Integer read FRow; + property MergedCol:Integer read FMergedCol; + property MergedRow:Integer read FMergedRow; + property Text:string read GetText; + property Texts:TStringList read FTexts; + property ObjType:integer read FObjType; + property FillColor:TColor read FFillColor; + property Font:TFont read FFont; + property Frames : TfrFrameBorders read FFrames; + property FrameColor : TColor read FFrameColor; + property FrameStyle : TfrFrameStyle read FFrameStyle; + property FrameWidth : Double read FFrameWidth; + property Angle:byte read FAngle; + property Layout : TTextLayout read FLayout; + property WordWrap:boolean read FWordWrap; + end; + + { TExportRows } + + TExportRow = class + private + FCells:TFpList; + FTop: integer; + FRow:integer; + procedure SortCells; + function GetObjects(X: integer): TExportObject; + public + constructor Create; + destructor Destroy; override; + procedure Clear; + function ExportObject(AObj:TfrView):TExportObject; + + property Top:integer read FTop write FTop; + property Row:integer read FRow; + + property Cells:TFpList read FCells; + end; + + { TExportMatrix } + + TExportMatrix =class + private + FDeleteEmptyRow: boolean; + FMergeCell: boolean; + FRows:TFpList; + FColWidth:TBoundArray; + FRowHight:TBoundArray; + FPageMargin:integer; + function FindRow(FTop:integer):TExportRow; + function GetColumnCount: integer; + function GetColumnWidth(AColumn: integer): Integer; + function GetColNumByLeft(ALeft:Integer):integer; + function GetRowNumByTop(ATop:Integer):integer; + + function GetObjects(X, Y: integer): TExportObject; + function GetRowCount: integer; + function GetRowHight(ARow: integer): Integer; + + procedure SortRows; + procedure UpdateColWidth; + procedure UpdateRowHeight; + procedure DoPostitionObject; + procedure DoMergeCell; + procedure DoDeleteEmptyRow; + public + constructor Create; + procedure Clear; + destructor Destroy; override; + function FindObj(AObj:TfrView):TExportObject; + function ExportObject(AObj:TfrView):TExportObject; + procedure PrepareData; + procedure NewPage; + property ColumnCount:integer read GetColumnCount; + property RowCount:integer read GetRowCount; + property ColumnWidth[AColumn:integer]:Integer read GetColumnWidth; + property RowHiht[ARow:integer]:Integer read GetRowHight; + property Objects[X, Y:integer]:TExportObject read GetObjects; + property DeleteEmptyRow:boolean read FDeleteEmptyRow write FDeleteEmptyRow; + property MergeCell:boolean read FMergeCell write FMergeCell; + property PageMargin:integer read FPageMargin write FPageMargin; + + property Rows:TFpList read FRows; + end; + +implementation +uses math; + +{ TExportRows } + +procedure TExportRow.SortCells; +var + R, P:TExportObject; + i: Integer; + j: Integer; +begin + for i:=0 to FCells.Count-2 do + begin + R:=TExportObject(FCells[i]); + for j:=i+1 to FCells.Count-1 do + begin + if R.FLeft > TExportObject(FCells[j]).FLeft then + begin + P:=TExportObject(FCells[j]); + FCells[j]:=R; + R:=P; + end; + end; + FCells[i]:=R; + end; +end; + +function TExportRow.GetObjects(X: integer): TExportObject; +var + i: Integer; +begin + Result:=nil; + for i:=0 to FCells.Count-1 do + if TExportObject(FCells[i]).FCol = X then + begin + Result:=TExportObject(FCells[i]); + exit; + end; +end; + +constructor TExportRow.Create; +begin + inherited Create; + FCells:=TFPList.Create; +end; + +destructor TExportRow.Destroy; +begin + Clear; + FreeAndNil(FCells); + inherited Destroy; +end; + +procedure TExportRow.Clear; +var + i:integer; +begin + for i:=0 to FCells.Count-1 do + TExportObject(FCells[i]).Free; + FCells.Clear; +end; + +function TExportRow.ExportObject(AObj: TfrView): TExportObject; +begin + Result:=TExportObject.Create(AObj); + FCells.Add(Result); +end; + +{ TExportObject } + +function TExportObject.GetText: string; +var + B: Char; + L: Integer; +begin + if Assigned(FTexts) and (FTexts.Count>0) then + Result:=FTexts.Text + else + Result:=''; +end; + +constructor TExportObject.Create(AObj: TfrView); +begin + Inherited Create; + + if Assigned(AObj) then + begin + FName:=AObj.Name; + FTexts:=TStringList.Create; + FFont:=TFont.Create; + + FLeft:=AObj.X; + FTop:=AObj.Y; + FWidht:=AObj.DX; + FHeight:=AObj.DY; + + FFrames:=AObj.Frames; + FFrameColor:=AObj.FrameColor; + FFrameStyle:=AObj.FrameStyle; + FFrameWidth:=AObj.FrameWidth; + + if AObj is TfrMemoView then + begin + Texts.Text:=AObj.Memo.Text; + FObjType:=gtMemo; + FFillColor:=AObj.FillColor; + FFont.Assign(TfrMemoView(AObj).Font); + FAlignment:=TfrMemoView(AObj).Alignment; + FAngle:=TfrMemoView(AObj).Angle; + FLayout:=TfrMemoView(AObj).Layout; + FWordWrap:=TfrMemoView(AObj).WordWrap; + end + else + if AObj is TfrPictureView then + FObjType:=gtPicture + else + if AObj is TfrLineView then + FObjType:=gtLine; + end; +end; + +destructor TExportObject.Destroy; +begin + if Assigned(FTexts) then + FreeAndNil(FTexts); + if Assigned(FFont) then + FreeAndNil(FFont); + inherited Destroy; +end; + +{ TExportMatrix } + +function TExportMatrix.FindRow(FTop: integer): TExportRow; +var + i: Integer; +begin + Result:=nil; + for i:=0 to FRows.Count-1 do + if TExportRow(FRows[i]).Top = FTop + FPageMargin then + begin + Result:=TExportRow(FRows[i]); + exit; + end; + Result:=TExportRow.Create; + FRows.Add(Result); + Result.Top:=FTop + FPageMargin; +end; + +function TExportMatrix.FindObj(AObj: TfrView): TExportObject; +var + i: Integer; + F: TExportRow; +begin + Result:=nil; + F:=nil; + for i:=0 to FRows.Count-1 do + if TExportRow(FRows[i]).Top = AObj.Y + FPageMargin then + begin + F:=TExportRow(FRows[i]); + break; + end; + + if Assigned(F) then + for i:=0 to F.FCells.Count-1 do + if TExportObject(F.FCells[i]).Left = AObj.X then + begin + Result:=TExportObject(F.FCells[i]); + exit; + end; +end; + +function TExportMatrix.GetColumnCount: integer; +begin + Result:=Length(FColWidth); +end; + +function TExportMatrix.GetColumnWidth(AColumn: integer): Integer; +begin + if (AColumn>-1) and (AColumn<Length(FColWidth)) then + Result:=FColWidth[AColumn] + else + Result:=0; +end; + +function TExportMatrix.GetColNumByLeft(ALeft: Integer): integer; +var + i: Integer; +begin + Result:=0; + for i:=0 to Length(FColWidth)-1 do + begin + if FColWidth[i]=ALeft then + begin + Result:=i + 1; + exit; + end; + end; +end; + +function TExportMatrix.GetRowNumByTop(ATop: Integer): integer; +var + i: Integer; +begin + Result:=0; + for i:=0 to Length(FRowHight)-1 do + begin + if FRowHight[i]=ATop then + begin + Result:=i + 1; + exit; + end; + end; +end; + +function TExportMatrix.GetObjects(X, Y: integer): TExportObject; +var + i: Integer; +begin + Result:=nil; + for i:=0 to FRows.Count-1 do + if TExportRow(FRows[i]).FRow = Y then + Result:=TExportRow(FRows[i]).GetObjects(X); +end; + +function TExportMatrix.GetRowCount: integer; +begin + Result:=Length(FRowHight); +end; + +function TExportMatrix.GetRowHight(ARow: integer): Integer; +begin + if (ARow>-1) and (ARow<Length(FRowHight)) then + Result:=FRowHight[ARow] + else + Result:=0; +end; + +procedure TExportMatrix.SortRows; +var + R, P:TExportRow; + i: Integer; + j: Integer; +begin + for i:=0 to FRows.Count-2 do + begin + R:=TExportRow(FRows[i]); + for j:=i+1 to FRows.Count-1 do + begin + if R.FTop > TExportRow(FRows[j]).FTop then + begin + P:=TExportRow(FRows[j]); + FRows[j]:=R; + R:=P; + end; + end; + FRows[i]:=R; + end; + + for i:=0 to FRows.Count-1 do + TExportRow(FRows[i]).SortCells; +end; + +procedure TExportMatrix.UpdateColWidth; + +procedure TestLeftPos(FLeft:Integer); +var + i: Integer; + j: Integer; +begin + if Length(FColWidth)>0 then + begin + i:=0; + while (i<Length(FColWidth)) and (FColWidth[i]<FLeft) do Inc(i); + if (i<Length(FColWidth)) and (FColWidth[i] = FLeft) then exit; + + SetLength(FColWidth, Length(FColWidth) + 1); + + for j:=Length(FColWidth) - 1 downto i + 1 do + FColWidth[j]:=FColWidth[j - 1]; + FColWidth[i]:=FLeft; + end + else + begin + SetLength(FColWidth, 1); + FColWidth[0]:=FLeft; + end; +end; + +var + i: Integer; + R: TExportRow; + j: Integer; + C: TExportObject; +begin + for i:=0 to FRows.Count - 1 do + begin + R:=TExportRow(FRows[i]); + for j:=0 to R.FCells.Count-1 do + begin + C:=TExportObject(R.FCells[j]); + TestLeftPos(C.FLeft); + TestLeftPos(C.FLeft + C.Widht); + end; + end; +end; + +procedure TExportMatrix.UpdateRowHeight; +procedure TestLeftPos(FTop:Integer); +var + i: Integer; + j: Integer; +begin + if Length(FRowHight)>0 then + begin + i:=0; + while (i<Length(FRowHight)) and (FRowHight[i]<FTop) do Inc(i); + if (i<Length(FRowHight)) and (FRowHight[i] = FTop) then exit; + + SetLength(FRowHight, Length(FRowHight) + 1); + + for j:=Length(FRowHight) - 1 downto i + 1 do + FRowHight[j]:=FRowHight[j - 1]; + FRowHight[i]:=FTop; + end + else + begin + SetLength(FRowHight, 1); + FRowHight[0]:=FTop; + end; +end; + +var + i: Integer; + R: TExportRow; + j: Integer; + C: TExportObject; +begin + for i:=0 to FRows.Count - 1 do + begin + R:=TExportRow(FRows[i]); + for j:=0 to R.FCells.Count-1 do + begin + C:=TExportObject(R.FCells[j]); + TestLeftPos(C.FTop); + TestLeftPos(C.FTop + C.Height); + end; + end; +end; + +procedure TExportMatrix.DoPostitionObject; +var + i: Integer; + j: Integer; + FObj: TExportObject; + R: TExportRow; +begin + for i:=0 to FRows.Count-1 do + begin + for j:=0 to TExportRow(FRows[i]).FCells.Count - 1 do + begin + FObj:=TExportObject(TExportRow(FRows[i]).FCells[j]); +// FObj.FRow:=i; + FObj.FCol:=GetColNumByLeft(FObj.FLeft); + end; + end; + + for i:=0 to FRows.Count-1 do + begin + R:=TExportRow(FRows[i]); + R.FRow:=GetRowNumByTop(R.FTop); + for j:=0 to R.FCells.Count-1 do + TExportObject(R.FCells[j]).FRow:=R.FRow; + end; +end; + +procedure TExportMatrix.DoMergeCell; + +function FindCelNum(APos:integer):integer; +begin + Result:=0; + while (Result<Length(FColWidth)) and (FColWidth[Result]<APos) do Inc(Result); +end; + +function FindRowNum(APos:integer):integer; +begin + Result:=0; + while (Result<Length(FRowHight)) and (FRowHight[Result]<APos) do Inc(Result); +end; + +var + i: Integer; + j: Integer; + C: TExportObject; + R: TExportRow; +begin + for i:=0 to FRows.Count - 1 do + begin + R:=TExportRow(FRows[i]); + for j:=0 to R.FCells.Count-1 do + begin + C:=TExportObject(R.FCells[j]); + C.FMergedCol:=FindCelNum(C.FLeft + C.FWidht); + if C.FMergedCol < C.FCol then + C.FMergedCol:=C.FCol; + + C.FMergedRow:=FindRowNum(C.FTop + C.FHeight); + if C.FMergedRow < C.FRow then + C.FMergedRow:=C.FRow; + end; + end; +end; + +procedure TExportMatrix.DoDeleteEmptyRow; +var + R: TExportRow; + i: Integer; +begin + for i:=FRows.Count-1 downto 0 do + begin + R:=TExportRow(FRows[i]); + if R.FCells.Count = 0 then + begin + FRows.Delete(i); + R.Free; + end; + end; +end; + +constructor TExportMatrix.Create; +begin + inherited Create; + FPageMargin:=0; + FRows:=TFpList.Create; + SetLength(FColWidth, 0); + SetLength(FRowHight, 0); +end; + +procedure TExportMatrix.Clear; +var + i:integer; +begin + for i:=0 to FRows.Count-1 do + TExportRow(FRows[i]).Free; + FRows.Clear; + SetLength(FColWidth, 0); + SetLength(FRowHight, 0); +end; + +destructor TExportMatrix.Destroy; +begin + Clear; + FreeAndNil(FRows); + inherited Destroy; +end; + +function TExportMatrix.ExportObject(AObj: TfrView): TExportObject; +var + R: TExportRow; +begin + Result:=nil; + if AObj is TfrMemoView then + begin + R:=FindRow(AObj.Y); + Result:=R.ExportObject(AObj); + Result.Top:=R.Top; + end; +end; + +procedure TExportMatrix.PrepareData; +var + i: Integer; +begin + SortRows; + if FDeleteEmptyRow then + DoDeleteEmptyRow; + + UpdateRowHeight; + UpdateColWidth; + DoPostitionObject; + + if FMergeCell then + DoMergeCell; + + for i:=Length(FColWidth) - 1 downto 1 do + FColWidth[i]:=FColWidth[i] - FColWidth[i - 1]; + + for i:=Length(FRowHight) - 1 downto 1 do + FRowHight[i]:=FRowHight[i] - FRowHight[i - 1]; +end; + +procedure TExportMatrix.NewPage; +var + R: TExportRow; + i: Integer; + imax: Integer; + FTop: Integer; + FHeight: Integer; + C: TExportObject; + O: TExportObject; +begin + if FRows.Count = 0 then exit; + + FTop:=0; + imax:=0; + FHeight:=0; + for i:=0 to FRows.Count-1 do + begin + R:=TExportRow(FRows[i]); + if R.Top > FTop then + begin + FTop:=R.Top; + imax:=i; + end; + end; + + R:=TExportRow(FRows[imax]); + + for i:=0 to R.FCells.Count-1 do + begin + C:=TExportObject(R.FCells[i]); + if C.Height > FHeight then + FHeight:=C.Height; + end; + + R:=FindRow(FTop + FHeight); + R.FTop:=FTop + FHeight + 1; + + FPageMargin:=R.FTop + FHeight + 1; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.lpk lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.lpk --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.lpk 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.lpk 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <Package Version="4"> + <Name Value="lrSpreadSheetExport"/> + <Type Value="RunAndDesignTime"/> + <Author Value="Aleksey Lagunov"/> + <CompilerOptions> + <Version Value="11"/> + <SearchPaths> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Description Value="LazReport Export Addon for exporting to "/> + <Version Minor="9"/> + <Files Count="7"> + <Item1> + <Filename Value="lrspreadsheetexp.pas"/> + <HasRegisterProc Value="True"/> + <UnitName Value="lrSpreadSheetExp"/> + </Item1> + <Item2> + <Filename Value="le_e_spreadsheet.pas"/> + <UnitName Value="le_e_spreadsheet"/> + </Item2> + <Item3> + <Filename Value="le_e_spreadsheet_consts.pas"/> + <UnitName Value="le_e_spreadsheet_consts"/> + </Item3> + <Item4> + <Filename Value="le_e_spreadsheet_params.lfm"/> + <Type Value="LFM"/> + </Item4> + <Item5> + <Filename Value="le_e_spreadsheet_params.pas"/> + <UnitName Value="le_e_spreadsheet_params"/> + </Item5> + <Item6> + <Filename Value="lr_exportmatrix.pas"/> + <UnitName Value="LR_ExportMatrix"/> + </Item6> + <Item7> + <Filename Value="le_e_spreadsheet_types.pas"/> + <UnitName Value="le_e_spreadsheet_types"/> + </Item7> + </Files> + <i18n> + <EnableI18N Value="True"/> + <OutDir Value="languages"/> + </i18n> + <RequiredPkgs Count="3"> + <Item1> + <PackageName Value="laz_fpspreadsheet"/> + </Item1> + <Item2> + <PackageName Value="lazreport"/> + </Item2> + <Item3> + <PackageName Value="IDEIntf"/> + </Item3> + </RequiredPkgs> + <UsageOptions> + <UnitPath Value="$(PkgOutDir)"/> + </UsageOptions> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + </Package> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.pas 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,23 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit lrSpreadSheetExport; + +interface + +uses + lrSpreadSheetExp, le_e_spreadsheet, le_e_spreadsheet_consts, + le_e_spreadsheet_params, LR_ExportMatrix, le_e_spreadsheet_types, + LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('lrSpreadSheetExp', @lrSpreadSheetExp.Register); +end; + +initialization + RegisterPackage('lrSpreadSheetExport', @Register); +end. diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexp.pas lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexp.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexp.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexp.pas 2015-08-18 04:20:14.000000000 +0000 @@ -0,0 +1,111 @@ +{ + LazReport matrix for export reports + + Copyright (C) 2014-2015 alexs alexs75.at.yandex.ru + + The module is designed to create an image of the report with the exact + positioning of objects and subsequent binding to the worksheet + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version with the following modification: + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent modules,and + to copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the terms + and conditions of the license of that module. An independent module is a + module which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the library, + but you are not obligated to do so. If you do not wish to do so, delete this + exception statement from your version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit lrSpreadSheetExp; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, le_e_spreadsheet_types; + +type + + { TlrSpreadSheetExport } + + TlrSpreadSheetExport = class(TComponent) + private + FDataGrouping: TlreDataGrouping; + FDataGroupingChunks: integer; + FDeleteEmptyRow: boolean; + FMergeCell: boolean; + FOpenAfterExport: boolean; + FShowSetupForm: boolean; + { Private declarations } + protected + { Protected declarations } + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + published + property DataGrouping:TlreDataGrouping read FDataGrouping write FDataGrouping; + property DataGroupingChunks:integer read FDataGroupingChunks write FDataGroupingChunks; + property OpenAfterExport:boolean read FOpenAfterExport write FOpenAfterExport; + property DeleteEmptyRow:boolean read FDeleteEmptyRow write FDeleteEmptyRow; + property MergeCell:boolean read FMergeCell write FMergeCell; + property ShowSetupForm:boolean read FShowSetupForm write FShowSetupForm; + end; + +procedure Register; + +var + lrSpreadSheetExportComponent:TlrSpreadSheetExport = nil; + +implementation +uses le_e_spreadsheet, le_e_spreadsheet_consts; + +{$R lrspreadsheetexp.res} + +procedure Register; +begin + RegisterComponents('LazReport',[TlrSpreadSheetExport]); +end; + +{ TlrSpreadSheetExport } + +constructor TlrSpreadSheetExport.Create(AOwner: TComponent); +begin + if Assigned(lrSpreadSheetExportComponent) then + raise Exception.Create(sOnlyOneComponent); + inherited Create(AOwner); + lrSpreadSheetExportComponent:=Self; + + FDataGrouping:=ldgLikeReport; + FDataGroupingChunks:=50; + FOpenAfterExport:=true; + FMergeCell:=true; + FDeleteEmptyRow:=false; + FShowSetupForm:=true; +end; + +destructor TlrSpreadSheetExport.Destroy; +begin + lrSpreadSheetExportComponent:=nil; + inherited Destroy; +end; + +finalization + lrSpreadSheetExportComponent:=nil; +end. Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexp.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexp.res differ diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas lazarus-1.6+dfsg/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas 2014-12-06 03:24:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas 2015-08-27 12:52:54.000000000 +0000 @@ -54,11 +54,12 @@ constructor Create(AStream: TStream); override; destructor Destroy; override; procedure OnBeginPage; override; + procedure OnEndDoc; override; procedure OnEndPage; override; procedure ShowBackGround(View: TfrView; x, y, h, w: integer); procedure Frame(View: TfrView; x, y, h, w: integer); procedure ShowFrame(View: TfrView; x, y, h, w: integer); - procedure ShowBarCode(View: TfrBarCodeView; x, y, h, w: integer); + procedure ShowBarCode(View: TfrCustomBarCodeView; x, y, h, w: integer); procedure ShowPicture(View: TfrPictureView; x, y, h, w: integer); procedure ShowRoundRect(View: TfrRoundRectView; x, y, h, w: integer); procedure ShowShape(View: TfrShapeView; x, y, h, w: integer); @@ -137,17 +138,17 @@ nx, ny, ndy, ndx: Integer); begin if (View.FillColor <> clNone) - and not (View is TfrBarCodeView) + and not (View is TfrCustomBarCodeView) and not (View is TfrPictureView) then ShowBackGround(View, nx, ny, ndy, ndx); - if View is TfrBarCodeView then - ShowBarCode(TfrBarCodeView(View), nx, ny, ndy, ndx) + if View is TfrCustomBarCodeView then + ShowBarCode(TfrCustomBarCodeView(View), nx, ny, ndy, ndx) else if View is TfrPictureView then ShowPicture(TfrPictureView(View), nx, ny, ndy, ndx); - if (View.Frames<>[]) and not (View is TfrBarCodeView) then + if (View.Frames<>[]) and not (View is TfrCustomBarCodeView) then ShowFrame(View, nx, ny, ndy, ndx); end; @@ -166,7 +167,6 @@ destructor TfrTNPDFExportFilter.Destroy; begin - PDF.GetPdfDoc.SaveToStream(Stream); PDF.Free; DummyControl.Free; inherited; @@ -195,6 +195,11 @@ PRPanel.Height := PPage.Height; end; +procedure TfrTNPDFExportFilter.OnEndDoc; +begin + PDF.GetPdfDoc.SaveToStream(Stream); +end; + procedure TfrTNPDFExportFilter.OnEndPage; begin PDF.Print(PPage); @@ -262,7 +267,7 @@ end; end; -procedure TfrTNPDFExportFilter.ShowBarCode(View: TfrBarCodeView; x, y, h, w: +procedure TfrTNPDFExportFilter.ShowBarCode(View: TfrCustomBarCodeView; x, y, h, w: integer); var Bitmap: TBitmap; @@ -274,7 +279,7 @@ View.x := 0; View.y := 0; - Bitmap := TfrBarCodeView(View).GenerateBitmap; + Bitmap := TfrCustomBarCodeView(View).GenerateBitmap; try w := trunc(Bitmap.Width * PDFEscx + 1.5) ; h := trunc(Bitmap.Height * PDFEscy + 1.5) ; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/ZeosDB/lr_db_zeos.pas lazarus-1.6+dfsg/components/lazreport/source/addons/ZeosDB/lr_db_zeos.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/ZeosDB/lr_db_zeos.pas 2013-10-07 17:05:13.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/ZeosDB/lr_db_zeos.pas 2015-04-27 17:50:38.000000000 +0000 @@ -103,7 +103,7 @@ {$R lr_zeos_img.res} uses LR_Utils, DBPropEdits, PropEdits, LazarusPackageIntf, ZDbcIntfs, types, - lr_EditParams, Forms, Controls, variants, Dialogs; + lr_EditParams, Forms, Controls, variants, Dialogs, strutils; var lrBMP_ZQuery:TBitmap = nil; @@ -316,6 +316,9 @@ procedure TLRZQuery.AfterLoad; var D:TComponent; + SPage: String; + S: String; + Z: TLRZConnection; begin D:=frFindComponent(OwnerForm, DataSource); if Assigned(D) and (D is TDataSource)then @@ -326,6 +329,21 @@ begin TZQuery(DataSet).Connection:=TZConnection(D); DataSet.Active:=FActive; + end + else + if Assigned(CurReport) then + begin + S:=FDatabase; + if Pos('.', S)>0 then + SPage:=Copy2SymbDel(S, '.') + else + SPage:=''; + Z:=CurReport.FindObject(S) as TLRZConnection; + if Assigned(Z) then + begin + TZQuery(DataSet).Connection:=Z.FZConnection; + DataSet.Active:=FActive; + end end; end; @@ -339,7 +357,7 @@ DataSet.Active:=false; D:=frFindComponent(TZQuery(DataSet).Owner, FDatabase); if Assigned(D) and (D is TZConnection)then - TZQuery(DataSet).Connection:=TZConnection(D); + TZQuery(DataSet).Connection:=TZConnection(D) end; procedure TLRZQuery.ZQueryBeforeOpen(ADataSet: TDataSet); @@ -610,9 +628,31 @@ { TLRZQueryDataBaseProperty } procedure TLRZQueryDataBaseProperty.FillValues(const Values: TStringList); +var + i: Integer; + j: Integer; + S: String; begin if (GetComponent(0) is TLRZQuery) then + begin frGetComponents(nil, TZConnection, Values, nil); + + if Assigned(CurReport) then + begin + for i:=0 to CurReport.Pages.Count-1 do + if CurReport.Pages[i] is TfrPageDialog then + begin + for j:=0 to CurReport.Pages[i].Objects.Count-1 do + begin + if TfrObject(CurReport.Pages[i].Objects[j]) is TLRZConnection then + begin + S:=CurReport.Pages[i].Name+'.'+TLRDataSetControl(CurReport.Pages[i].Objects[j]).lrDBDataSet.Name; + Values.Add(S); + end; + end; + end; + end; + end; end; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/addons/ZeosDB/lr_zeosdb.lpk lazarus-1.6+dfsg/components/lazreport/source/addons/ZeosDB/lr_zeosdb.lpk --- lazarus-1.4.4+dfsg/components/lazreport/source/addons/ZeosDB/lr_zeosdb.lpk 2013-03-02 20:32:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/addons/ZeosDB/lr_zeosdb.lpk 2015-04-27 17:50:38.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <Package Version="4"> <Name Value="LR_ZeosDB"/> @@ -8,39 +8,29 @@ <SearchPaths> <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> </SearchPaths> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Description Value="Add support to ZEOSdb components for designing LazReport dialogs at runtime with lr_dialogdesign package"/> <License Value="modified LGPL-2 "/> <Version Minor="2" Release="2"/> - <Files Count="5"> + <Files Count="4"> <Item1> <Filename Value="lr_db_zeos.pas"/> <HasRegisterProc Value="True"/> <UnitName Value="LR_DB_Zeos"/> </Item1> <Item2> - <Filename Value="lr_zeos_img.inc"/> - <Type Value="Include"/> - </Item2> - <Item3> <Filename Value="lr_editvariables.pas"/> <UnitName Value="LR_EditVariables"/> - </Item3> - <Item4> + </Item2> + <Item3> <Filename Value="lr_editparams.pas"/> <UnitName Value="lr_EditParams"/> - </Item4> - <Item5> + </Item3> + <Item4> <Filename Value="lrdbzeosconst.pas"/> <UnitName Value="lrDBZeosConst"/> - </Item5> + </Item4> </Files> <i18n> <EnableI18N Value="True"/> diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/fr3tolrf.pas lazarus-1.6+dfsg/components/lazreport/source/fr3tolrf.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/fr3tolrf.pas 2014-09-04 19:28:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/fr3tolrf.pas 2015-03-22 10:17:35.000000000 +0000 @@ -113,6 +113,7 @@ var Reader: Tfr3Reader; begin + Result := 0; Reader := Tfr3Reader.Create; Reader.Report := Report; try @@ -272,7 +273,6 @@ procedure Tfr3Reader.LoadReport(Node: TDOMNode); var Attr: TDOMNode; - S: string; begin Report.Clear; @@ -303,7 +303,6 @@ procedure Tfr3Reader.LoadPages(Node: TDOMNode); var - Page: TfrPage; i: Integer; begin Node := Node.FirstChild; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/languages/lr_const.de.po lazarus-1.6+dfsg/components/lazreport/source/languages/lr_const.de.po --- lazarus-1.4.4+dfsg/components/lazreport/source/languages/lr_const.de.po 2015-02-26 23:13:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/languages/lr_const.de.po 2015-06-16 08:58:34.000000000 +0000 @@ -1,12 +1,12 @@ msgid "" msgstr "" "Last-Translator: Swen Heinig <swen@heinig.email>\n" -"PO-Revision-Date: 2015-01-27 16:33+0100\n" +"PO-Revision-Date: 2015-06-13 19:18+0100\n" "Project-Id-Version: lazreport\n" "Language-Team: Deutsch <lazarus@miraclec.com>\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.7.5\n" "MIME-Version: 1.0\n" "Last-Translator: Olivier Guilbaud\n" "PO-Revision-Date: 2005-05-01 18:33+0200\n" @@ -286,7 +286,7 @@ #: lr_const.sdateformat4 msgid "d mmmm yyyy" -msgstr "d mmmm jjjj" +msgstr "t mmmm jjjj" #: lr_const.sdatetimecategory msgid "Date and time" @@ -462,7 +462,7 @@ #: lr_const.sdesoptionsformcontents msgid "&Contents" -msgstr "&Inhalt" +msgstr "&Inhalte" #: lr_const.sdesoptionsformdes msgctxt "lr_const.sdesoptionsformdes" @@ -2250,7 +2250,7 @@ #: lr_const.sprintformcollate msgid "Collate" -msgstr "" +msgstr "Sortieren" #: lr_const.sprintformcopy msgid "&Copies:" @@ -2348,7 +2348,7 @@ #: lr_const.sroundrectformgradient msgid "Gradient" -msgstr "" +msgstr "Steigung" #: lr_const.sroundrectformhint msgid "Click here to define the shadow color or gradient colors" @@ -2499,11 +2499,11 @@ #: lr_const.susefixedfontsettings msgid "Use fixed font settings" -msgstr "" +msgstr "Feste Schrifteinstellungen verwenden" #: lr_const.susememofontsettings msgid "Use Memo font settings" -msgstr "" +msgstr "Memo-Schrifteinstellungen verwenden" #: lr_const.susesyntaxhighlight msgid "Use syntax highlight" @@ -2533,7 +2533,7 @@ #: lr_const.svar6 msgid "Line through#" -msgstr "" +msgstr "Zeile durchgängig#" #: lr_const.svar7 msgid "Column#" @@ -2604,4 +2604,3 @@ #: lr_const.syes msgid "Yes" msgstr "Ja" - diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/languages/lr_const.ru.po lazarus-1.6+dfsg/components/lazreport/source/languages/lr_const.ru.po --- lazarus-1.4.4+dfsg/components/lazreport/source/languages/lr_const.ru.po 2015-02-26 23:13:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/languages/lr_const.ru.po 2015-06-17 22:03:01.000000000 +0000 @@ -5,9 +5,11 @@ "Content-Transfer-Encoding: 8bit\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-01-23 00:22+0300\n" +"PO-Revision-Date: 2015-06-18 00:58+0300\n" "Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" "Language-Team: \n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: lr_const.saboutformcapt msgid "About FastReport" @@ -1556,7 +1558,7 @@ #: lr_const.sok msgid "Ok" -msgstr "OK" +msgstr "ОК" #: lr_const.sonfirstpage msgid "On first page" @@ -2058,11 +2060,11 @@ #: lr_const.spgoptformbottom msgid "&Bottom, mm" -msgstr "&Нижнее, мм" +msgstr "Н&ижнее, мм" #: lr_const.spgoptformbycolumns msgid "By Colum&ns" -msgstr "По &столбцам" +msgstr "По стол&бцам" #: lr_const.spgoptformbyrows msgid "By Row&s" @@ -2128,7 +2130,7 @@ #: lr_const.spgoptformport msgid "&Portrait" -msgstr "&Портретная" +msgstr "&Книжная" #: lr_const.spgoptformprint msgid "&Print to previous page" @@ -2136,7 +2138,7 @@ #: lr_const.spgoptformright msgid "&Right, mm" -msgstr "&Правое, мм" +msgstr "П&равое, мм" #: lr_const.spgoptformsize msgid "Size" @@ -2594,4 +2596,3 @@ #: lr_const.syes msgid "Yes" msgstr "Да" - diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_barc.pas lazarus-1.6+dfsg/components/lazreport/source/lr_barc.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_barc.pas 2014-09-04 19:28:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_barc.pas 2015-03-30 19:12:16.000000000 +0000 @@ -66,9 +66,9 @@ cAngle : Double; end; - { TfrBarCodeView } + { TfrCustomBarCodeView } - TfrBarCodeView = class(TfrView) + TfrCustomBarCodeView = class(TfrView) private BarC: TBarCode; FText: string; @@ -92,21 +92,29 @@ constructor Create(AOwnerPage:TfrPage);override; destructor Destroy; override; procedure Assign(Source: TPersistent); override; - function GenerateBitmap: TBitmap; + function GenerateBitmap: TBitmap; virtual; procedure LoadFromStream(Stream: TStream); override; procedure SaveToStream(Stream: TStream); override; procedure Draw(aCanvas: TCanvas); override; procedure Print(Stream: TStream); override; procedure DefinePopupMenu({%H-}Popup: TPopupMenu); override; - procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; - published + property CheckSum : Boolean read GetCheckSum write SetCheckSum; property BarType : TBarcodeType read GetBarType write SetBarType; property ShowText : Boolean read GetShowText write SetShowText; property Zoom : Double read GetZoom write SetZoom; property Angle: Double read GetAngle write SetAngle; + end; + + TfrBarcodeView = class(TfrCustomBarcodeView) + published + property CheckSum; + property BarType; + property ShowText; + property Zoom; + property Angle; property Memo; property Frames; property FrameColor; @@ -205,32 +213,32 @@ {$NOTES ON} {$HINTS ON} -function TfrBarCodeView.GetBarType: TBarcodeType; +function TfrCustomBarCodeView.GetBarType: TBarcodeType; begin Result:=Param.cBarType; end; -function TfrBarCodeView.GetAngle: Double; +function TfrCustomBarCodeView.GetAngle: Double; begin Result := Param.cAngle; end; -function TfrBarCodeView.GetCheckSum: Boolean; +function TfrCustomBarCodeView.GetCheckSum: Boolean; begin Result:=Param.cCheckSum; end; -function TfrBarCodeView.GetShowText: Boolean; +function TfrCustomBarCodeView.GetShowText: Boolean; begin Result:=Param.cShowText; end; -function TfrBarCodeView.GetZoom: Double; +function TfrCustomBarCodeView.GetZoom: Double; begin Result:=Param.cRatio; end; -procedure TfrBarCodeView.SetAngle(AValue: Double); +procedure TfrCustomBarCodeView.SetAngle(AValue: Double); begin if (Param.cAngle<>AValue) and ((AValue=0.0) or (AValue=90.0) or (AValue=180.0) or (AValue=270.0)) then @@ -241,7 +249,7 @@ end; end; -procedure TfrBarCodeView.SetBarType(const AValue: TBarcodeType); +procedure TfrCustomBarCodeView.SetBarType(const AValue: TBarcodeType); begin if Param.cBarType<>AValue then begin @@ -251,7 +259,7 @@ end; end; -procedure TfrBarCodeView.SetCheckSum(const AValue: Boolean); +procedure TfrCustomBarCodeView.SetCheckSum(const AValue: Boolean); begin if Param.cCheckSum<>AValue then begin @@ -261,7 +269,7 @@ end; end; -procedure TfrBarCodeView.SetShowText(const AValue: Boolean); +procedure TfrCustomBarCodeView.SetShowText(const AValue: Boolean); begin if Param.cShowText<>AValue then begin @@ -271,7 +279,7 @@ end; end; -procedure TfrBarCodeView.SetZoom(const AValue: Double); +procedure TfrCustomBarCodeView.SetZoom(const AValue: Double); begin if (Param.cRatio<>AValue) and ((AValue>=1.0)and(Avalue<=4.0)) then @@ -282,7 +290,7 @@ end; end; -function TfrBarCodeView.CreateBarcode: TBitmap; +function TfrCustomBarCodeView.CreateBarcode: TBitmap; begin Result := nil; @@ -387,7 +395,7 @@ end; -function TfrBarCodeView.CreateLabelFont(aCanvas: TCanvas) :TFont; +function TfrCustomBarCodeView.CreateLabelFont(aCanvas: TCanvas) :TFont; begin with aCanvas do begin @@ -413,7 +421,7 @@ end; -procedure TfrBarCodeView.DrawLabel(aCanvas: TCanvas; R: TRect); +procedure TfrCustomBarCodeView.DrawLabel(aCanvas: TCanvas; R: TRect); var fs: integer; begin if Param.cShowText then @@ -462,7 +470,7 @@ end; -constructor TfrBarCodeView.Create(AOwnerPage: TfrPage); +constructor TfrCustomBarCodeView.Create(AOwnerPage: TfrPage); begin inherited Create(AOwnerPage); @@ -479,20 +487,20 @@ BaseName := 'Bar'; end; -destructor TfrBarCodeView.Destroy; +destructor TfrCustomBarCodeView.Destroy; begin BarC.Free; inherited Destroy; end; -procedure TfrBarCodeView.Assign(Source: TPersistent); +procedure TfrCustomBarCodeView.Assign(Source: TPersistent); begin inherited Assign(Source); - if Source is TfrBarCodeView then - Param := TfrBarCodeView(Source).Param; + if Source is TfrCustomBarCodeView then + Param := TfrCustomBarCodeView(Source).Param; end; -function TfrBarCodeView.GenerateBitmap: TBitmap; +function TfrCustomBarCodeView.GenerateBitmap: TBitmap; var R: TRect; barcodeFont: TFont; @@ -511,19 +519,19 @@ end; end; -procedure TfrBarCodeView.LoadFromStream(Stream:TStream); +procedure TfrCustomBarCodeView.LoadFromStream(Stream:TStream); begin inherited LoadFromStream(Stream); Stream.Read(Param, SizeOf(Param)); end; -procedure TfrBarCodeView.SaveToStream(Stream:TStream); +procedure TfrCustomBarCodeView.SaveToStream(Stream:TStream); begin inherited SaveToStream(Stream); Stream.Write(Param, SizeOf(Param)); end; -procedure TfrBarCodeView.Draw(aCanvas:TCanvas); +procedure TfrCustomBarCodeView.Draw(aCanvas:TCanvas); var Bmp : TBitMap; R: TRect; @@ -598,7 +606,7 @@ end; end; -procedure TfrBarCodeView.Print(Stream: TStream); +procedure TfrCustomBarCodeView.Print(Stream: TStream); begin BeginDraw(Canvas); Memo1.Assign(Memo); @@ -614,12 +622,12 @@ SaveToStream(Stream); end; -procedure TfrBarCodeView.DefinePopupMenu(Popup: TPopupMenu); +procedure TfrCustomBarCodeView.DefinePopupMenu(Popup: TPopupMenu); begin // no specific items in popup menu end; -procedure TfrBarCodeView.LoadFromXML(XML: TLrXMLConfig; const Path: String); +procedure TfrCustomBarCodeView.LoadFromXML(XML: TLrXMLConfig; const Path: String); begin inherited LoadFromXML(XML, Path); @@ -630,7 +638,7 @@ RestoreProperty('Angle',XML.GetValue(Path+'BarCode/Angle','0')); end; -procedure TfrBarCodeView.SaveToXML(XML: TLrXMLConfig; const Path: String); +procedure TfrCustomBarCodeView.SaveToXML(XML: TLrXMLConfig; const Path: String); begin inherited SaveToXML(XML, Path); diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_class.pas lazarus-1.6+dfsg/components/lazreport/source/lr_class.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_class.pas 2015-05-26 22:06:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_class.pas 2015-09-09 19:19:14.000000000 +0000 @@ -15,12 +15,19 @@ {$I LR_Vers.inc} uses - SysUtils, Math, {$IFDEF UNIX}CLocale,{$ENDIF} - Classes, MaskUtils, Controls, FileUtil, Forms, - Dialogs, Menus, Variants, DB, Graphics, Printers, osPrinters, LazUTF8, DOM, - XMLWrite, XMLRead, XMLConf, LCLType, LCLIntf, TypInfo, LR_View, LR_Pars, - LR_Intrp, LR_DSet, LR_DBSet, LR_DBRel, LR_Const, DbCtrls, LazUtf8Classes, - LCLProc; + SysUtils, Math, strutils, DateUtils, {$IFDEF UNIX}CLocale,{$ENDIF} + Classes, TypInfo, MaskUtils, Variants, DB, DOM, XMLWrite, XMLRead, XMLConf, + Controls, Forms, Dialogs, Menus, Graphics, LCLProc, LCLType, LCLIntf, + Printers, osPrinters, + // LazUtils + LazFileUtils, LazUTF8, LazUTF8Classes, + // IDEIntf + PropEdits, + // LazReport + LR_View, LR_Pars, LR_Intrp, LR_DSet, LR_DBSet, LR_DBRel, LR_Const, DbCtrls; + +const + lrMaxBandsInReport = 256; //temp fix. in future need remove this limit const // object flags @@ -250,6 +257,9 @@ FTag: string; FURLInfo: string; FFindHighlight : boolean; + FGapX:Integer; + FGapY:Integer; + function GetDataField: string; function GetLeft: Double; function GetStretched: Boolean; @@ -268,7 +278,7 @@ SaveX, SaveY, SaveDX, SaveDY: Integer; SaveFW: Double; - gapx, gapy: Integer; + InternalGapX, InternalGapY: Integer; Memo1: TStringList; FDataSet: TfrTDataSet; FField: String; @@ -345,6 +355,8 @@ property StreamMode: TfrStreamMode read fStreamMode write fStreamMode; property Restrictions:TlrRestrictions read FRestrictions write FRestrictions; property FindHighlight : boolean read FFindHighlight write FFindHighlight; + property GapX:Integer read FGapX write FGapX; + property GapY:Integer read FGapY write FGapY; published property Left: double read GetLeft write SetLeft; property Top: double read GetTop write SetTop; @@ -396,8 +408,6 @@ end; - { TfrMemoView } - { TfrCustomMemoView } TfrCustomMemoView = class(TfrStretcheable) @@ -409,6 +419,7 @@ FOnClick: TfrScriptStrings; FOnMouseEnter: TfrScriptStrings; FOnMouseLeave: TfrScriptStrings; + FParagraphGap: integer; function GetAlignment: TAlignment; function GetAngle: Byte; @@ -446,6 +457,7 @@ TextHeight: Integer; CurStrNo: Integer; Exporting: Boolean; + FLineSpacing: Integer; procedure ExpandVariables; procedure AssignFont(aCanvas: TCanvas); @@ -469,8 +481,9 @@ Adjust: Integer; // bit format xxxLLRAA: LL=Layout, R=Rotated, AA=Alignment Highlight: TfrHighlightAttr; HighlightStr: String; - LineSpacing, CharacterSpacing: Integer; + CharacterSpacing: Integer; LastLine: boolean; // are we painting/exporting the last line? + FirstLine: boolean; constructor Create(AOwnerPage:TfrPage); override; destructor Destroy; override; @@ -502,6 +515,8 @@ property OnClick : TfrScriptStrings read FOnClick write SetOnClick; property OnMouseEnter : TfrScriptStrings read FOnMouseEnter write SetOnMouseEnter; property OnMouseLeave : TfrScriptStrings read FOnMouseLeave write SetOnMouseLeave; + property ParagraphGap : integer read FParagraphGap write FParagraphGap; + property LineSpacing : integer read FLineSpacing write FLineSpacing; end; TfrMemoView = class(TfrCustomMemoView) @@ -527,9 +542,13 @@ property Format; property FormatStr; property Restrictions; + property ParagraphGap; property OnClick; property OnMouseEnter; property OnMouseLeave; + property LineSpacing; + property GapX; + property GapY; end; { TfrBandView } @@ -587,8 +606,13 @@ { TfrSubReportView } TfrSubReportView = class(TfrView) + private + FSubPageIndex: Integer; //temp var for find page on load + FSubPage : TfrPage; + protected + procedure AfterLoad;override; public - SubPage: Integer; + //SubPage: Integer; constructor Create(AOwnerPage:TfrPage); override; procedure Assign(Source: TPersistent); override; procedure Draw(aCanvas: TCanvas); override; @@ -597,6 +621,7 @@ procedure SaveToStream(Stream: TStream); override; procedure SaveToXML(XML: TLrXMLConfig; const Path: String); override; procedure DefinePopupMenu({%H-}Popup: TPopupMenu); override; + property SubPage : TfrPage read FSubPage write FSubPage; published property Restrictions; end; @@ -695,8 +720,7 @@ Flags: Word; Next, Prev: TfrBand; SubIndex, MaxY: Integer; - EOFReached: Boolean; - EOFArr: Array[0..31] of Boolean; + EOFArr: Array[0..lrMaxBandsInReport - 1] of Boolean; Positions: Array[TfrDatasetPosition] of Integer; LastGroupValue: Variant; HeaderBand, FooterBand, LastBand: TfrBand; @@ -729,6 +753,7 @@ procedure ResetLastValues; function getName: string; public + EOFReached: Boolean; MaxDY: Integer; Typ: TfrBandType; @@ -783,7 +808,6 @@ TfrPage = class(TfrObject) private - Bands : Array[TfrBandType] of TfrBand; fColCount : Integer; fColGap : Integer; fColWidth : Integer; @@ -799,7 +823,6 @@ CurColumn : Integer; LastStaticColumnY : Integer; XAdjust : Integer; - List : TFpList; LastBand : TfrBand; ColPos : Integer; CurPos : Integer; @@ -810,11 +833,15 @@ procedure ClearRecList; procedure DrawPageFooters; function BandExists(b: TfrBand): Boolean; + function GetPageIndex: integer; procedure LoadFromStream(Stream: TStream); procedure SaveToStream(Stream: TStream); + procedure SetPageIndex(AValue: integer); procedure ShowBand(b: TfrBand); protected + List : TFpList; + Bands : Array[TfrBandType] of TfrBand; Mode : TfrPageMode; PlayFrom : Integer; function PlayRecList: Boolean; @@ -878,6 +905,7 @@ property Script; property Height; property Width; + property PageIndex:integer read GetPageIndex write SetPageIndex; end; TFrPageClass = Class of TfrPage; @@ -949,8 +977,9 @@ destructor Destroy; override; procedure Clear; - procedure Add(const aClassName : string='TfrPageReport'); + function Add(const aClassName : string='TfrPageReport'):TfrPage; procedure Delete(Index: Integer); + procedure Move(OldIndex, NewIndex: Integer); procedure LoadFromStream(Stream: TStream); procedure LoadFromXML(XML: TLrXMLConfig; const Path: String); procedure SaveToStream(Stream: TStream); @@ -1016,6 +1045,7 @@ procedure AddRec(ALineIndex: Integer; ARec: Pointer); virtual; function GetviewText(View:TfrView): string; virtual; function CheckView({%H-}View:TfrView): boolean; virtual; + procedure AfterExport; virtual; public constructor Create(AStream: TStream); virtual; destructor Destroy; override; @@ -1239,7 +1269,7 @@ // report manipulation methods function DesignReport: Integer; function PrepareReport: Boolean; - procedure ExportTo(FilterClass: TfrExportFilterClass; aFileName: String); + function ExportTo(FilterClass: TfrExportFilterClass; aFileName: String):Boolean; procedure ShowReport; procedure ShowPreparedReport; procedure PrintPreparedReport(const PageNumbers: String; Copies: Integer); @@ -1425,12 +1455,13 @@ const lrTemplatePath = 'LazReportTemplate/'; - frCurrentVersion = 28; + frCurrentVersion = 29; // version 2.5: lazreport: added to binary stream ParentBandType variable // on TfrView, used to extend export facilities // version 2.6: lazreport: added to binary stream Tag property on TfrView // version 2.7: lazreport: added to binary stream FOnClick, FOnMouseEnter, FOnMouseLeave, FCursor property on TfrMemoView // version 2.8. lazreport: added support for child bands + // version 2.9. lazreport: added support LineSpacing and GapX, GapY frSpecCount = 9; frSpecFuncs: Array[0..frSpecCount - 1] of String = ('PAGE#', '', @@ -1467,11 +1498,43 @@ EditorProc : TlrObjEditorProc; end; - TfrExportFilterInfo = record - ClassRef: TfrExportFilterClass; - FilterDesc, FilterExt: String; + { TExportFilterItem } + + TExportFilterItem = class + private + FClassRef: TfrExportFilterClass; + FEnabled: boolean; + FFilterDesc: String; + FFilterExt: String; + public + constructor Create; + property ClassRef: TfrExportFilterClass read FClassRef; + property FilterDesc: String read FFilterDesc; + property FilterExt: String read FFilterExt; + property Enabled:boolean read FEnabled write FEnabled; + end; + + { TExportFilters } + + TExportFilters = class + private + FList:TFPList; + function GetCount: integer; + procedure Clear; + function GetItems(AItem: Integer): TExportFilterItem; + public + constructor Create; + destructor Destroy; override; + procedure RegisterFilter(AClassRef: TfrExportFilterClass; const AFilterDesc, AFilterExt: String); + procedure DisableFilter(AFilterExt: String); + procedure EnableFilter(AFilterExt: String); + function FindFilter(AFilterExt: String):TExportFilterItem; + function FilterIndex(AClassRef: TfrExportFilterClass; AFilterExt:string): Integer; + property Count:integer read GetCount; + property Items[AItem:Integer]:TExportFilterItem read GetItems;default; end; + TfrFunctionInfo = record FunctionLibrary: TfrFunctionLibrary; end; @@ -1498,8 +1561,6 @@ DisableDrawing: Boolean; frAddIns: Array[0..31] of TfrAddInObjectInfo; // add-in objects frAddInsCount: Integer; - frFilters: Array[0..31] of TfrExportFilterInfo; // export filters - frFiltersCount: Integer; frFunctions: Array[0..31] of TfrFunctionInfo; // function libraries frFunctionsCount: Integer; frTools: Array[0..31] of TfrToolsInfo; // tools @@ -1526,10 +1587,11 @@ // variables used through report building TempBmp: TBitmap; // temporary bitmap used by TfrMemoView +function ExportFilters:TExportFilters; implementation uses - strutils, LR_Fmted, LR_Prntr, LR_Progr, LR_Utils, DateUtils, PropEdits + LR_Fmted, LR_Prntr, LR_Progr, LR_Utils {$IFDEF JPEG}, JPEG {$ENDIF}, lr_hyphen; type @@ -1576,6 +1638,7 @@ AppendPage, WasPF: Boolean; CompositeMode: Boolean; MaxTitleSize: Integer = 0; + FExportFilters:TExportFilters = nil; {-----------------------------------------------------------------------------} @@ -1701,11 +1764,22 @@ frObj := CurReport.FindObject(FObjName); if Assigned(frObj) then + begin Result:=GetPropInfo(frObj, PropName); //Retreive property informations + if not Assigned(Result) then + IsCustomProp(PropName, PropIndex); + end; end; end; +function ExportFilters: TExportFilters; +begin + if not Assigned(FExportFilters) then + FExportFilters:=TExportFilters.Create; + Result:=FExportFilters; +end; + function DoFindObjMetod(S: string; out AObjProp: string ): TfrObject; begin @@ -1801,7 +1875,7 @@ DebugLn('frCreateObject classname compare %s=%s',[frAddIns[i].ClassRef.ClassName,ClassName]); {$ENDIF} - if frAddIns[i].ClassRef.ClassName = ClassName then + if CompareText(frAddIns[i].ClassRef.ClassName, ClassName)=0 then begin Result := frAddIns[i].ClassRef.Create(AOwnerPage); // Result.Create; @@ -1867,20 +1941,6 @@ end; end; -function frGetExportFilterIndex(AClassRef: TfrExportFilterClass; const AFilterExt:string): Integer; -var - i: Integer; -begin - result := -1; - for i:=0 to Length(frFilters)-1 do - with frFilters[i] do - if (ClassRef=AClassRef) and (FilterExt=AFilterExt) then - begin - result := i; - break; - end; -end; - procedure frSetAddinEditor(ClassRef: TfrViewClass; EditorForm: TfrObjEditorForm); var i: Integer; @@ -1917,13 +1977,7 @@ procedure frRegisterExportFilter(ClassRef: TfrExportFilterClass; const FilterDesc, FilterExt: String); begin - if frGetExportFilterIndex(ClassRef, FilterExt)<0 then - begin - frFilters[frFiltersCount].ClassRef := ClassRef; - frFilters[frFiltersCount].FilterDesc := FilterDesc; - frFilters[frFiltersCount].FilterExt := FilterExt; - Inc(frFiltersCount); - end; + ExportFilters.RegisterFilter(ClassRef, FilterDesc, FilterExt); end; procedure frRegisterFunctionLibrary(ClassRef: TClass); @@ -2078,6 +2132,110 @@ end; end; +{ TExportFilterItem } + +constructor TExportFilterItem.Create; +begin + inherited Create; + FEnabled:=true; +end; + +{ TExportFilters } + +function TExportFilters.GetCount: integer; +begin + Result:=FList.Count; +end; + +procedure TExportFilters.Clear; +var + i: Integer; +begin + for i:=0 to FList.Count-1 do + TExportFilterItem(FList[i]).Free; + FList.Clear; +end; + +function TExportFilters.GetItems(AItem: Integer): TExportFilterItem; +begin + Result:=TExportFilterItem(FList[AItem]); +end; + +constructor TExportFilters.Create; +begin + inherited Create; + FList:=TFPList.Create; +end; + +destructor TExportFilters.Destroy; +begin + Clear; + FList.Free; + inherited Destroy; +end; + +procedure TExportFilters.RegisterFilter(AClassRef: TfrExportFilterClass; + const AFilterDesc, AFilterExt: String); +var + F: TExportFilterItem; +begin + if FilterIndex(AClassRef, AFilterExt) > -1 then exit; + F:=TExportFilterItem.Create; + F.FClassRef:=AClassRef; + F.FFilterExt:=AFilterExt; + F.FFilterDesc:=AFilterDesc; + + FList.Add(F); +end; + +procedure TExportFilters.DisableFilter(AFilterExt: String); +var + F: TExportFilterItem; +begin + F:=FindFilter(AFilterExt); + if Assigned(F) then + F.FEnabled:=true; +end; + +procedure TExportFilters.EnableFilter(AFilterExt: String); +var + F: TExportFilterItem; +begin + F:=FindFilter(AFilterExt); + if Assigned(F) then + F.FEnabled:=false; +end; + +function TExportFilters.FindFilter(AFilterExt: String): TExportFilterItem; +var + i: Integer; +begin + Result:=nil; + AFilterExt:=UTF8UpperCase(AFilterExt); + for i:=0 to FList.Count-1 do + if UTF8UpperCase(TExportFilterItem(FList[i]).FFilterExt) = AFilterExt then + begin + Result:=TExportFilterItem(FList[i]); + exit; + end; +end; + +function TExportFilters.FilterIndex(AClassRef: TfrExportFilterClass; + AFilterExt: string): Integer; +var + i: Integer; +begin + Result:=-1; + AFilterExt:=UTF8UpperCase(AFilterExt); + for i:=0 to FList.Count-1 do + if (TExportFilterItem(FList[i]).FClassRef = AClassRef) and (TExportFilterItem(FList[i]).FilterExt = AFilterExt) then + begin + Result:=i; + exit; + end; +end; + +{ procedure CanvasTextRectJustify(const Canvas:TCanvas; const ARect: TRect; X1, X2, Y: integer; const Text: string; Trimmed: boolean); @@ -2154,7 +2312,7 @@ SetLength(Arr, 0); end; - +} { TlrDetailReports } function TlrDetailReports.GetItems(AReportName: string): TlrDetailReport; @@ -2450,6 +2608,8 @@ FTag := TfrView(Source).FTag; FURLInfo := TfrView(Source).FURLInfo; FRestrictions := TfrView(Source).FRestrictions; + FGapX:=TfrView(Source).FGapX; + FGapY:=TfrView(Source).FGapY; end; end; @@ -2480,8 +2640,10 @@ wy1 := Round((FrameWidth * ScaleY - 1) / 2); wy2 := Round(FrameWidth * ScaleY / 2); fFrameWidth := FrameWidth * ScaleX; - gapx := wx2 + 2; - gapy := wy2 div 2 + 1; + + InternalGapX := wx2 + 2 + FGapX; + InternalGapY := wy2 div 2 + 1 + FGapY; + bx := x; by := y; bx1 := Round((SaveX + SaveDX) * ScaleX + OffsX); @@ -2774,7 +2936,8 @@ Visible:=(Wb<>0); end; - if (frVersion >= 25) then begin + if (frVersion >= 25) then + begin I := 0; Read(I, 4); ParentBandType := TfrBandType(I); @@ -2786,6 +2949,12 @@ FURLInfo := frReadString(Stream); end; + if frVersion >= 29 then + begin + Stream.Read(FGapX, SizeOf(FGapX)); + Stream.Read(FGapY, SizeOf(FGapX)); + end; + end; {$IFDEF DebugLR} DebugLn('%s.TfrView.LoadFromStream end Position=%d',[name, Stream.Position]); @@ -2843,6 +3012,9 @@ S:=XML.GetValue(Path+'Frames/Restrictions/Value',''); if S<>'' then RestoreProperty('Restrictions',S); + + FGapX:=XML.GetValue(Path+'Data/GapX/Value', 0); + FGapY:=XML.GetValue(Path+'Data/GapY/Value', 0); end; procedure TfrView.SaveToStream(Stream: TStream); @@ -2907,6 +3079,9 @@ FTmpS:=lrExpandVariables(FURLInfo); frWriteString(Stream, FTmpS); end; + + Stream.Write(FGapX, SizeOf(FGapX)); + Stream.Write(FGapY, SizeOf(FGapX)); end; {$IFDEF DebugLR} Debugln('%s.SaveToStream end',[name]); @@ -2958,6 +3133,9 @@ if IsPublishedProp(self,'Restrictions') then XML.SetValue(Path+'Frames/Restrictions/Value', GetSaveProperty('Restrictions')); + + XML.SetValue(Path+'Data/GapX/Value', FGapX); + XML.SetValue(Path+'Data/GapY/Value', FGapY); end; procedure TfrView.Resized; @@ -3297,6 +3475,7 @@ FOnMouseEnter:=TfrScriptStrings.Create; FOnMouseLeave:=TfrScriptStrings.Create; FFindHighlight:=false; + FParagraphGap:=0; Typ := gtMemo; FFont := TFont.Create; @@ -3426,6 +3605,7 @@ FOnMouseLeave.Assign(TfrCustomMemoView(Source).FOnMouseLeave); FDetailReport:=TfrCustomMemoView(Source).FDetailReport; FCursor:=TfrCustomMemoView(Source).FCursor; + FParagraphGap:=TfrCustomMemoView(Source).FParagraphGap; end; end; @@ -3558,6 +3738,8 @@ {$ENDIF} SMemo.Add(str + Chr(w div 256) + Chr(w mod 256)); Inc(size, size1); + //!! + maxWidth := dx - InternalGapX - InternalGapX; end; procedure WrapLine(const s: String); @@ -3703,21 +3885,22 @@ var i: Integer; begin - size := y + gapy; + size := y + InternalGapY; size1 := -WCanvas.Font.Height + LineSpacing; - maxWidth := dx - gapx - gapx; +// maxWidth := dx - gapx - gapx; {$IFDEF DebugLR} DebugLn('OutMemo I: Size=%d Size1=%d MaxWidth=%d DIM:%d %d %d %d gapxy:%d %d', [Size,Size1,MaxWidth,x,y,dx,dy,gapx,gapy]); {$ENDIF} for i := 0 to Memo1.Count - 1 do begin + maxWidth := dx - InternalGapX - InternalGapX - FParagraphGap; if (Flags and flWordWrap) <> 0 then WrapLine(Memo1[i]) else OutLine(Memo1[i] + #1); end; - VHeight := size - y + gapy; + VHeight := size - y + InternalGapY; TextHeight := size1; {$IFDEF DebugLR} DebugLn('OutMemo E: Size=%d Size1=%d MaxWidth=%d DIM:%d %d %d %d gapxy:%d %d', @@ -3732,9 +3915,9 @@ begin h := Create90Font(WCanvas.Font); oldh := SelectObject(WCanvas.Handle, h); - size := x + gapx; + size := x + InternalGapX; size1 := -WCanvas.Font.Height + LineSpacing; - maxwidth := dy - gapy - gapy; + maxwidth := dy - InternalGapY - InternalGapY; for i := 0 to Memo1.Count - 1 do begin if (Flags and flWordWrap) <> 0 then @@ -3745,7 +3928,7 @@ SelectObject(WCanvas.Handle, oldh); DeleteObject(h); - VHeight := size - x + gapx; + VHeight := size - x + InternalGapX; TextHeight := size1; end; @@ -3778,6 +3961,7 @@ var i: Integer; curyf, thf, linespc: double; + FTmpFL:boolean; function OutLine(st: String): Boolean; var @@ -3804,8 +3988,12 @@ SetLength(St, n - 2); if Length(St) > 0 then begin + FTmpFL:=false; if St[Length(St)] = #1 then - SetLength(St, Length(St) - 1) + begin + FTmpFL:=true; + SetLength(St, Length(St) - 1); + end else LastLine := false; end; @@ -3840,20 +4028,35 @@ {$ENDIF} *) case Alignment of - Classes.taLeftJustify : CurX :=x+gapx; - Classes.taRightJustify: CurX :=x+dx-1-gapx-Canvas.TextWidth(St); - Classes.taCenter : CurX :=x+gapx+(dx-gapx-gapx-Canvas.TextWidth(St)) div 2; + Classes.taLeftJustify : CurX :=x+InternalGapX; + Classes.taRightJustify: CurX :=x+dx-1-InternalGapX-Canvas.TextWidth(St); + Classes.taCenter : CurX :=x+InternalGapX+(dx-InternalGapX-InternalGapX-Canvas.TextWidth(St)) div 2; end; if not Exporting then begin if Justify and not LastLine then - CanvasTextRectJustify(Canvas, DR, x+gapx, x+dx-1-gapx, round(CurYf), St, true) + begin + if FirstLine then + CanvasTextRectJustify(Canvas, DR, x+InternalGapX + FParagraphGap, x+dx-1-InternalGapX, round(CurYf), St, true) + else + CanvasTextRectJustify(Canvas, DR, x+InternalGapX, x+dx-1-InternalGapX, round(CurYf), St, true) + end else - Canvas.TextRect(DR, CurX, round(curYf), St); + begin + if FirstLine then + Canvas.TextRect(DR, CurX + FParagraphGap, round(curYf), St) + else + Canvas.TextRect(DR, CurX, round(curYf), St); + end; end else - CurReport.InternalOnExportText(X, round(curYf), St, Self); + begin + if FirstLine then + CurReport.InternalOnExportText(X + FParagraphGap, round(curYf), St, Self) + else + CurReport.InternalOnExportText(X, round(curYf), St, Self); + end; Inc(CurStrNo); Result := False; @@ -3862,6 +4065,7 @@ Result := True; curyf := curyf + thf; + FirstLine:=FTmpFL; end; begin {OutMemo} @@ -3869,10 +4073,11 @@ begin if Layout=tlCenter then y:=y+(dy-VHeight) div 2 - else if Layout=tlBottom then + else + if Layout=tlBottom then y:=y+dy-VHeight; end; - curyf := y + gapy; + curyf := y + InternalGapY; LineSpc := LineSpacing * ScaleY; // calc our reference at 100% and then scale it @@ -3886,6 +4091,9 @@ [curyf, thf, Canvas.Font.Height, Canvas.Textheight('H'), dbgs(DR), Memo1.Count]); {$ENDIF} CurStrNo := 0; + + FirstLine:=true; + for i := 0 to Memo1.Count - 1 do if OutLine(Memo1[i]) then break; @@ -3920,9 +4128,9 @@ Canvas.TextStyle := Ts; case Alignment of - Classes.taLeftJustify : CurY :=y + dy-gapy; - Classes.taRightJustify: CurY :=y + gapy + 1 + Canvas.TextWidth(str); - Classes.taCenter : CurY :=y + gapy + (dy + Canvas.TextWidth(str)) div 2; + Classes.taLeftJustify : CurY :=y + dy-InternalGapY; + Classes.taRightJustify: CurY :=y + InternalGapY + 1 + Canvas.TextWidth(str); + Classes.taCenter : CurY :=y + InternalGapY + (dy + Canvas.TextWidth(str)) div 2; end; if not Exporting then canvas.TextOut(curx,cury,str) @@ -3949,7 +4157,7 @@ else if Layout=tlBottom then x:=x+dx-VHeight; end; - curx := x + gapx; + curx := x + InternalGapX; th := -Canvas.Font.Height + Round(LineSpacing * ScaleY); CurStrNo := 0; for i := 0 to Memo1.Count - 1 do @@ -4357,8 +4565,13 @@ frReadMemo(Stream, FOnMouseEnter); frReadMemo(Stream, FOnMouseLeave); FDetailReport:=frReadString(Stream); + Stream.Read(FParagraphGap, SizeOf(FParagraphGap)); end; + if frVersion >= 29 then + begin + Stream.Read(FLineSpacing, SizeOf(FLineSpacing)); + end; end; if frVersion = 21 then @@ -4394,6 +4607,8 @@ FOnMouseLeave.Text:= XML.GetValue(Path+'Data/OnMouseLeave/Value', ''); FDetailReport:= XML.GetValue(Path+'Data/DetailReport/Value', ''); + FParagraphGap:=XML.GetValue(Path+'Data/ParagraphGap/Value', 0); + FLineSpacing:=XML.GetValue(Path+'Data/LineSpacing/Value', 2); end; procedure TfrCustomMemoView.SaveToStream(Stream: TStream); @@ -4434,6 +4649,8 @@ frWriteMemo(Stream, FOnMouseEnter); frWriteMemo(Stream, FOnMouseLeave); frWriteString(Stream, FDetailReport); + Stream.Write(FParagraphGap, SizeOf(FParagraphGap)); + Stream.Write(FLineSpacing, SizeOf(FLineSpacing)); end; end; @@ -4464,6 +4681,8 @@ XML.SetValue(Path+'Data/OnMouseLeave/Value', FOnMouseLeave.Text); XML.SetValue(Path+'Data/DetailReport/Value', FDetailReport); + XML.SetValue(Path+'Data/ParagraphGap/Value', FParagraphGap); + XML.SetValue(Path+'Data/LineSpacing/Value', FLineSpacing); end; procedure TfrCustomMemoView.GetBlob(b: TfrTField); @@ -5259,6 +5478,12 @@ Parent.Visible := Avalue; end; +procedure TfrSubReportView.AfterLoad; +begin + inherited AfterLoad; + FSubPage:= CurReport.Pages[FSubPageIndex]; +end; + {----------------------------------------------------------------------------} constructor TfrSubReportView.Create(AOwnerPage: TfrPage); begin @@ -5271,7 +5496,7 @@ begin inherited Assign(Source); if Source is TfrSubReportView then - SubPage := TfrSubReportView(Source).SubPage; + FSubPage := TfrSubReportView(Source).FSubPage; end; procedure TfrSubReportView.Draw(aCanvas: TCanvas); @@ -5292,8 +5517,7 @@ Brush.Color := clWhite; Rectangle(x, y, x + dx + 1, y + dy + 1); Brush.Style := bsClear; - TextRect(DRect, x + 2, y + 2, sSubReportOnPage + ' ' + - IntToStr(SubPage + 1)); + TextRect(DRect, x + 2, y + 2, sSubReportOnPage + ' ' + IntToStr(SubPage.PageIndex + 1)); end; RestoreCoord; end; @@ -5306,13 +5530,13 @@ procedure TfrSubReportView.LoadFromStream(Stream: TStream); begin inherited LoadFromStream(Stream); - Stream.Read(SubPage, 4); + Stream.Read(FSubPageIndex, 4); end; procedure TfrSubReportView.LoadFromXML(XML: TLrXMLConfig; const Path: String); begin inherited LoadFromXML(XML, Path); - SubPage := XML.GetValue(Path+'SubPage/Value'{%H-}, 0); // todo chk + FSubPageIndex := XML.GetValue(Path+'SubPage/Value'{%H-}, 0); // todo chk end; procedure TfrSubReportView.SaveToStream(Stream: TStream); @@ -5324,7 +5548,8 @@ procedure TfrSubReportView.SaveToXML(XML: TLrXMLConfig; const Path: String); begin inherited SaveToXML(XML, Path); - XML.SetValue(Path+'SubPage/Value'{%H-}, SubPage); + FSubPageIndex:=FSubPage.PageIndex; + XML.SetValue(Path+'SubPage/Value'{%H-}, FSubPageIndex); end; {----------------------------------------------------------------------------} @@ -6221,7 +6446,7 @@ t :=TfrView(Objects[i]); if t is TfrSubReportView then begin - Page := CurReport.Pages[(t as TfrSubReportView).SubPage]; + Page := (t as TfrSubReportView).SubPage; Page.Mode := pmBuildList; Page.FormPage; Page.CurY := y + t.y; @@ -6248,7 +6473,13 @@ t :=TfrView(Objects[i]); if t is TfrSubReportView then begin - Page := CurReport.Pages[(t as TfrSubReportView).SubPage]; + Page := (t as TfrSubReportView).SubPage; + if Typ = btPageFooter then + begin + Parent.CurY := Parent.Bands[btPageFooter].y + t.y; + Parent.CurBottomY := Parent.Bands[btPageFooter].y + + Parent.Bands[btPageFooter].dy; + end; Page.CurY := Parent.CurY; Page.CurBottomY := Parent.CurBottomY; end; @@ -6260,7 +6491,7 @@ t :=TfrView(Objects[i]); if (t is TfrSubReportView) and (not EOFArr[i - SubIndex]) then begin - Page := CurReport.Pages[(t as TfrSubReportView).SubPage]; + Page := (t as TfrSubReportView).SubPage; if Page.PlayRecList then EOFReached := False else @@ -6279,6 +6510,7 @@ Exit; end else + if Typ <> btPageFooter then Parent.NewPage; end; @@ -6289,7 +6521,7 @@ t :=TfrView(Objects[i]); if t is TfrSubReportView then begin - Page := CurReport.Pages[(t as TfrSubReportView).SubPage]; + Page := (t as TfrSubReportView).SubPage; Page.ClearRecList; end; end; @@ -6615,7 +6847,7 @@ // additionally, when objects are drawn, they are offseted t.gapy pixels // but this is object dependant, for TfrMemoView they are. if (t is TfrMemoView) then - ty := ty + t.gapy; + ty := ty + t.InternalGapY; k := Max(TfrStretcheable(t).MinHeight, 1); pgArr[j] := Min(pgArr[j], ty + (newDy-ty) div k * k); @@ -7312,7 +7544,7 @@ bt, t: TfrView; Bnd, Bnd1: TfrBand; FirstBand, Flag: Boolean; - BArr: Array[0..31] of TfrBand; + BArr: Array[0..lrMaxBandsInReport - 1] of TfrBand; s: String; begin for i := 0 to Objects.Count - 1 do @@ -7338,7 +7570,7 @@ t.Parent := nil; frInterpretator.PrepareScript(t.Script, t.Script, SMemo); if t.Typ = gtSubReport then - CurReport.Pages[(t as TfrSubReportView).SubPage].Skip := True; + (t as TfrSubReportView).SubPage.Skip := True; end; Flag := False; for i := 0 to RTObjects.Count - 1 do // search for btCrossXXX bands @@ -7932,7 +8164,7 @@ RowStarted := result; end; -procedure TfrPage.DoAggregate(a: Array of TfrBandType); +procedure TfrPage.DoAggregate(a: array of TfrBandType); var i: Integer; procedure DoAggregate1(bt: TfrBandType); @@ -8329,6 +8561,11 @@ Result := b.Objects.Count > 0; end; +function TfrPage.GetPageIndex: integer; +begin + Result:=CurReport.Pages.FPages.IndexOf(Self); +end; + procedure TfrPage.AfterPrint; var i: Integer; @@ -8422,6 +8659,12 @@ end; end; +procedure TfrPage.SetPageIndex(AValue: integer); +begin + if (AValue>-1) and (AValue < CurReport.Pages.Count) and (GetPageIndex <> AValue) then + CurReport.Pages.Move(GetPageIndex, AValue); +end; + procedure TfrPage.SavetoXML(XML: TLrXMLConfig; const Path: String); begin Inherited SavetoXML(XML,Path); @@ -8473,24 +8716,25 @@ FPages.Clear; end; -procedure TfrPages.Add(const aClassName : string='TfrPageReport'); -Var Pg : TFrPage; - Rf : TFrPageClass; +function TfrPages.Add(const aClassName: string): TfrPage; +var + Rf : TFrPageClass; begin - Pg:=nil; - + Result := nil; + Rf:=TFrPageClass(GetClass(aClassName)); if Assigned(Rf) then begin - Pg:=Rf.CreatePage; + Result := Rf.CreatePage; - if Assigned(Pg) then + if Assigned(Result) then begin - Pg.CreateUniqueName; - FPages.Add(Pg); + Result.CreateUniqueName; + FPages.Add(Result); end; end - else showMessage(Format('Class %s not found',[aClassName])) + else + ShowMessage(Format('Class %s not found',[aClassName])) end; procedure TfrPages.Delete(Index: Integer); @@ -8499,6 +8743,11 @@ FPages.Delete(Index); end; +procedure TfrPages.Move(OldIndex, NewIndex: Integer); +begin + FPages.Move(OldIndex, NewIndex); +end; + procedure TfrPages.LoadFromStream(Stream: TStream); var b: Byte; @@ -8768,6 +9017,7 @@ sx, sy: Double; v, IsPrinting: Boolean; h: THandle; + oldRgn, pageRgn: HRGN; begin IsPrinting := Printer.Printing and (Canvas is TPrinterCanvas); {$IFDEF DebugLR} @@ -8775,52 +9025,68 @@ 'CanvasPPI=%d',[ord(IsPrinting), Index, Canvas.ClassName, Canvas.Font.pixelsPerInch]); {$ENDIF} + pageRgn := 0; + oldRgn := CreateRectRgn(0, 0, 0, 0); + LCLIntf.GetClipRgn(Canvas.Handle, oldRgn); + try - DocMode := dmPrinting; - p := FPages[Index]; - with p^ do - begin - if Visible then + DocMode := dmPrinting; + p := FPages[Index]; + with p^ do begin - if Page = nil then - ObjectsToPage(Index); - - sx:=(DrawRect.Right-DrawRect.Left)/PrnInfo.PgW; - sy:=(DrawRect.Bottom-DrawRect.Top)/PrnInfo.PgH; - h:= Canvas.Handle; - - for i := 0 to Page.Objects.Count - 1 do + if Visible then begin - t :=TfrView(Page.Objects[i]); - v := True; + if Page = nil then + ObjectsToPage(Index); + + sx:=(DrawRect.Right-DrawRect.Left)/PrnInfo.PgW; + sy:=(DrawRect.Bottom-DrawRect.Top)/PrnInfo.PgH; + h:= Canvas.Handle; + pageRgn := CreateRectRgn(DrawRect.Left+1, DrawRect.Top+1, DrawRect.Right-1, DrawRect.Bottom-1); + LCLIntf.SelectClipRGN(Canvas.Handle, pageRgn); - if not IsPrinting then + for i := 0 to Page.Objects.Count - 1 do begin - with t, DrawRect do + t :=TfrView(Page.Objects[i]); + v := True; + + if not IsPrinting then + begin + with t, DrawRect do + begin + v := RectVisible(h, Rect(Round(x * sx) + Left - 10, + Round(y * sy) + Top - 10, + Round((x + dx) * sx) + Left + 10, + Round((y + dy) * sy) + Top + 10)); + end; + end; + + if v then begin - v := RectVisible(h, Rect(Round(x * sx) + Left - 10, - Round(y * sy) + Top - 10, - Round((x + dx) * sx) + Left + 10, - Round((y + dy) * sy) + Top + 10)); + t.ScaleX := sx; + t.ScaleY := sy; + t.OffsX := DrawRect.Left; + t.OffsY := DrawRect.Top; + t.IsPrinting := IsPrinting; + t.Draw(Canvas); end; end; - if v then - begin - t.ScaleX := sx; - t.ScaleY := sy; - t.OffsX := DrawRect.Left; - t.OffsY := DrawRect.Top; - t.IsPrinting := IsPrinting; - t.Draw(Canvas); - end; + LCLIntf.DeleteObject(pageRgn); + pageRgn := 0; + end - end -{ else - begin - Page.Free; - Page := nil; - end;} + { else + begin + Page.Free; + Page := nil; + end;} + end; + finally + if pageRgn<>0 then + LCLIntf.DeleteObject(pageRgn); + LCLIntf.SelectClipRGN(Canvas.Handle, oldRgn); + LCLIntf.DeleteObject(oldRgn); end; end; @@ -10684,7 +10950,8 @@ frProgressForm.ModalResult := mrOk; end; -procedure TfrReport.ExportTo(FilterClass: TfrExportFilterClass; aFileName: String); +function TfrReport.ExportTo(FilterClass: TfrExportFilterClass; aFileName: String + ): Boolean; var s: String; i: Integer; @@ -10692,10 +10959,10 @@ // try to find a export filter from registered list if (FilterClass=nil) and (fDefExportFilterClass<>'') then begin - for i:=0 to Length(frFilters)-1 do - if (frFilters[i].ClassRef.ClassName=fDefExportFilterClass) then + for i:=0 to ExportFilters.Count - 1 do + if (ExportFilters[i].FClassRef.ClassName=fDefExportFilterClass) then begin - FilterClass := frFilters[i].ClassRef; + FilterClass := ExportFilters[i].FClassRef; break; end; end; @@ -10742,10 +11009,18 @@ fDefExportFilterClass := FCurrentFilter.ClassName; fDefExportFileName := aFileName; - end; + Result:=true; + end + else + Result:=false; + //is necessary to destroy the file stream before calling FCurrentFilter.AfterExport + //to ensure the exported file is properly written to the file system + ExportStream.Free; + FCurrentFilter.Stream := nil; + if Result then + FCurrentFilter.AfterExport; FreeAndNil(FCurrentFilter); - ExportStream.Free; end; procedure TfrReport.FillQueryParams; @@ -10822,12 +11097,12 @@ begin for i := 0 to Pages.Count - 1 do if Pages[i] is TfrPageReport then - Pages[i].InitReport; + Pages[i].InitReport; PrepareDataSets; for i := 0 to Pages.Count - 1 do - if Pages[i]is TfrPageReport then - Pages[i].PrepareObjects; + if Pages[i] is TfrPageReport then + Pages[i].PrepareObjects; repeat {$IFDEF DebugLR} @@ -11865,6 +12140,11 @@ result := true; end; +procedure TfrExportFilter.AfterExport; +begin + // abstract method +end; + procedure TfrExportFilter.OnBeginDoc; begin // abstract method @@ -12448,6 +12728,8 @@ frVariables.Free; frCompressor.Free; HookList.Free; + if Assigned(FExportFilters) then + FreeAndNil(FExportFilters); end; { TfrObject } diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_crossarray.pas lazarus-1.6+dfsg/components/lazreport/source/lr_crossarray.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_crossarray.pas 2014-09-05 17:08:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_crossarray.pas 2015-04-27 17:50:38.000000000 +0000 @@ -39,11 +39,32 @@ type + TVariantArray = array of Variant; + + { TVariantList } + + TVariantList = class + private + FItems:TVariantArray; + FCount: integer; + function GetItems(AIndex: integer): Variant; + procedure SetItems(AIndex: integer; AValue: Variant); + public + constructor Create; + destructor Destroy; override; + function Insert(AValue:Variant):integer; + function Find(AValue:Variant; out Index: Integer): Boolean; + function AsString(AIndex: Integer):string; + procedure Clear; + property Count:integer read FCount; + property Items[AIndex:integer]:Variant read GetItems write SetItems; + end; + { TExItem } TExItem = class private - FCelCol:string; + FCelCol:Variant; FValue:Variant; FDataset: TDataset; FBookmark:TBookMark; @@ -59,7 +80,7 @@ TExRow = class(TFPList) private - FRow:string; + FRow:Variant; function GetCell(ACol: Variant): Variant; function GetCellData(ACol: Variant): TExItem; procedure SetCell(ACol: Variant; AValue: Variant); @@ -77,15 +98,15 @@ FColCount: integer; FRowCount: integer; FRows:TFPList; - FColHeader:TStringList; - FRowHeader:TStringList; + FRowHeader:TVariantList; + FColHeader:TVariantList; function GetCell(ACol, ARow: variant): variant; function GetCellData(ACol, ARow : variant): TExItem; function GetColCount: integer; - function GetColHeader(ACol: integer): string; + function GetColHeader(ACol: integer): Variant; function GetRowCount: integer; - function GetRowHeader(ARow: integer): string; - procedure SetCell(ACol, ARow: variant; AValue: variant); + function GetRowHeader(ARow: integer): Variant; + procedure SetCell(ACol, ARow: variant; AValue: Variant); function Find(ARow:variant; out Index: Integer): Boolean; public constructor Create; @@ -95,8 +116,8 @@ property CellData[ACol, ARow : variant]:TExItem read GetCellData; property ColCount:integer read GetColCount; property RowCount:integer read GetRowCount; - property ColHeader[ACol:integer]:string read GetColHeader; - property RowHeader[ARow:integer]:string read GetRowHeader; + property ColHeader[ACol:integer]:Variant read GetColHeader; + property RowHeader[ARow:integer]:Variant read GetRowHeader; end; implementation @@ -104,6 +125,110 @@ { TExItem } +function CompareVariant(AVal1, AVAl2:Variant):integer; +begin + if AVal1>AVAl2 then + Result := 1 + else + if AVal1<AVAl2 then + Result := -1 + else + Result :=0; +end; + +{ TVariantList } + +function TVariantList.GetItems(AIndex: integer): Variant; +begin + if (AIndex>=0) and (AIndex < Count) then + Result:=FItems[AIndex] + else + raise Exception.CreateFmt('Index % out of bounds %d:%d', [AIndex, 0, Count-1]); +end; + +procedure TVariantList.SetItems(AIndex: integer; AValue: Variant); +begin + if (AIndex>=0) and (AIndex < Count) then + FItems[AIndex]:=AValue + else + raise Exception.CreateFmt('Index % out of bounds %d:%d', [AIndex, 0, Count-1]); +end; + +constructor TVariantList.Create; +begin + inherited Create; + SetLength(FItems, 10); + FCount:=0; +end; + +destructor TVariantList.Destroy; +begin + Clear; + SetLength(FItems, 0); + inherited Destroy; +end; + +function TVariantList.Insert(AValue: Variant): integer; +var + FIndex: Integer; + i: Integer; +begin + if Length(FItems) = FCount then + SetLength(FItems, FCount + 100); + + if not Find(AValue, FIndex) then + begin + for i:=FCount-1 downto FIndex do + FItems[i+1]:=FItems[i]; + FItems[FIndex]:=AValue; + Inc(FCount); + end; +end; + +function TVariantList.Find(AValue: Variant; out Index: Integer): Boolean; +var + L: Integer; + R: Integer; + I: Integer; + Dir: Integer; +begin + Result := false; + // Use binary search. + L := 0; + R := Count - 1; + while L<=R do + begin + I := (L+R) div 2; + Dir := CompareVariant(FItems[i], AValue); + if Dir < 0 then + L := I+1 + else + begin + R := I-1; + if Dir = 0 then + begin + Result := true; + L := I; + end; + end; + end; + Index := L; +end; + +function TVariantList.AsString(AIndex: Integer): string; +begin + Result:=VarToStr(GetItems(AIndex)); +end; + +procedure TVariantList.Clear; +var + i: Integer; +begin + for i:=0 to FCount-1 do + FItems[i]:=null; + FCount:=0; +end; + procedure TExItem.SaveBookmark(Ds: TDataset); begin if IsBookmarkValid then @@ -165,7 +290,6 @@ function TExRow.Find(ACol: Variant; out Index: Integer): Boolean; var I,L,R,Dir: Integer; - S1, S2:string; begin Result := false; // Use binary search. @@ -174,10 +298,7 @@ while L<=R do begin I := (L+R) div 2; -// Dir := CompareStr(TExItem(Items[i]).FCelCol, VarToStr(ACol)); - S1:=TExItem(Items[i]).FCelCol; - S2:=VarToStr(ACol); - Dir := CompareStr(S1, S2); + Dir := CompareVariant(TExItem(Items[i]).FCelCol,ACol); if Dir < 0 then L := I+1 else @@ -232,12 +353,12 @@ Result:=FColHeader.Count; end; -function TExVarArray.GetColHeader(ACol: integer): string; +function TExVarArray.GetColHeader(ACol: integer): Variant; begin if (ACol>=0) and (ACol<FColHeader.Count) then - Result:=FColHeader[ACol] + Result:=FColHeader.Items[ACol] else - Result:=''; + Result:=null; end; function TExVarArray.GetRowCount: integer; @@ -245,15 +366,15 @@ Result:=FRowHeader.Count; end; -function TExVarArray.GetRowHeader(ARow: integer): string; +function TExVarArray.GetRowHeader(ARow: integer): Variant; begin if (ARow>=0) and (ARow<FRowHeader.Count) then - Result:=FRowHeader[ARow] + Result:=FRowHeader.Items[ARow] else - Result:=''; + Result:=null; end; -procedure TExVarArray.SetCell(ACol, ARow: variant; AValue: variant); +procedure TExVarArray.SetCell(ACol, ARow: variant; AValue: Variant); var R:TExRow; i:integer; @@ -270,32 +391,25 @@ FRowCount:=Max(FRowCount, FRows.Count); FColCount:=Max(FColCount, R.Count); - i:=FColHeader.IndexOf(VarToStr(ACol)); - if i<0 then - FColHeader.Add(VarToStr(ACol)); - - i:=FRowHeader.IndexOf(VarToStr(ARow)); - if i<0 then - FRowHeader.Add(VarToStr(ARow)); + if not FColHeader.Find(ACol, i) then + FColHeader.Insert(ACol); + if not FRowHeader.Find(ARow, i) then + FRowHeader.Insert(ARow); end; function TExVarArray.Find(ARow: variant; out Index: Integer): Boolean; var I,L,R,Dir: Integer; - S1, S2:string; begin Result := false; // Use binary search. L := 0; R := FRows.Count - 1; - S2:=VarToStr(ARow); while L<=R do begin I := (L+R) div 2; -// Dir := CompareStr(TExRow(FRows[i]).FRow, VarToStr(ARow)); - S1:=TExRow(FRows[i]).FRow; - Dir := CompareStr(S1, S2); + Dir := CompareVariant(TExRow(FRows[i]).FRow, ARow); if Dir < 0 then L := I+1 else @@ -316,10 +430,8 @@ begin inherited Create; FRows:=TFPList.Create; - FColHeader:=TStringList.Create; - FColHeader.Sorted:=true; - FRowHeader:=TStringList.Create; - FRowHeader.Sorted:=true; + FColHeader:=TVariantList.Create; + FRowHeader:=TVariantList.Create; end; destructor TExVarArray.Destroy; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_crosstabeditor.pas lazarus-1.6+dfsg/components/lazreport/source/lr_crosstabeditor.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_crosstabeditor.pas 2014-09-04 19:28:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_crosstabeditor.pas 2015-03-22 10:17:35.000000000 +0000 @@ -238,7 +238,6 @@ procedure TlrCrossViewDataSetProperty.GetValues(Proc: TGetStrProc); var I: Integer; - Values: TStringList; var Lst : TStringList; begin diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_crosstab.pas lazarus-1.6+dfsg/components/lazreport/source/lr_crosstab.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_crosstab.pas 2014-11-13 15:47:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_crosstab.pas 2015-04-27 17:50:38.000000000 +0000 @@ -303,9 +303,9 @@ FD:TField; FR:TField; FC:TField; - S, SR, SC: String; + S: String; P:TBookMark; - V, VT:Variant; + V, VT, SR, SC:Variant; FCalcTotal:boolean; j: Integer; i: Integer; @@ -383,7 +383,7 @@ begin if FCalcTotal then begin - V:=FExVarArray.Cell[FC.DisplayText, FR.DisplayText]; + V:=FExVarArray.Cell[FC.Value, FR.Value]; if V = null then begin if FuncNo in [2,3] then @@ -391,12 +391,12 @@ else V:=0; end; - FExVarArray.Cell[FC.DisplayText, FR.DisplayText]:=DoFunc(V, FD.AsFloat); + FExVarArray.Cell[FC.Value, FR.Value]:=DoFunc(V, FD.AsFloat); end else - FExVarArray.Cell[FC.DisplayText, FR.DisplayText]:=FD.DisplayText; + FExVarArray.Cell[FC.Value, FR.Value]:=FD.DisplayText; - ExItem:=FExVarArray.CellData[FC.DisplayText, FR.DisplayText]; + ExItem:=FExVarArray.CellData[FC.Value, FR.Value]; if Assigned(ExItem) then ExItem.SaveBookmark(FData); FData.Next; @@ -545,10 +545,10 @@ procedure TlrCrossView.OnEnterRect(AMemo: TStringList; AView: TfrView); var - S, SC, SR: String; + S: String; ColNo: Integer; RecNo: Integer; - V : Variant; + V, SC, SR : Variant; ExItem:TExItem; begin ColNo:=FBandCrossRowRT.Parent.DataSet.RecNo; @@ -867,7 +867,12 @@ FPage.ColCount := 1; FPage.PlayFrom := 0; - FPage.PlayRecList; + while FPage.PlayFrom < FPage.List.Count do + begin + FPage.PlayRecList; +{ if FPage.List.Count > FPage.PlayFrom then + FPage.NewPage;} + end; FPage.DoneReport; FPage.Free; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_desgn.lfm lazarus-1.6+dfsg/components/lazreport/source/lr_desgn.lfm --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_desgn.lfm 2014-08-28 04:10:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_desgn.lfm 2015-08-12 19:28:00.000000000 +0000 @@ -9,7 +9,7 @@ VertScrollBar.Range = 149 ActiveControl = frDock1 Caption = 'Designer' - ClientHeight = 407 + ClientHeight = 405 ClientWidth = 695 KeyPreview = True Menu = MainMenu1 @@ -23,12 +23,12 @@ OnResize = FormResize OnShow = FormShow ShowHint = True - LCLVersion = '1.3' + LCLVersion = '1.5' WindowState = wsMaximized object StatusBar1: TStatusBar Left = 0 Height = 25 - Top = 382 + Top = 380 Width = 695 Panels = < item @@ -47,12 +47,12 @@ end object frDock1: TPanel Left = 0 - Height = 83 + Height = 80 Top = 0 Width = 695 Align = alTop BevelOuter = bvNone - ClientHeight = 83 + ClientHeight = 80 ClientWidth = 695 FullRepaint = False TabOrder = 0 @@ -120,42 +120,6 @@ Action = FileOpen Align = alLeft Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000298EDEFF2986DEFF298EDEFF298EDEFF298EDEFF298EDEFF298EDEFF298E - DEFF298EDEFF298EDEFF2986DEFF298EDEFF2986DEFF0000000000000000318E - DEFFDEF7FFFFA5DFF7FF9CDFF7FF94DFF7FF8CDFF7FF84D7F7FF7BD7F7FF7BD7 - F7FF73D7F7FF6BD7F7FF6BCFF7FFC6EFFFFF318EDEFF00000000000000003196 - DEFFEFFFFFFFA5EFFFFF94E7FFFF84E7F7FF73DFF7FF63DFF7FF52D7F7FF42D7 - F7FF39D7F7FF29CFF7FF21CFF7FFCEF7FFFF3196DEFF0000000000000000319E - DEFFF7FFFFFFB5EFFFFFA5EFFFFF94E7FFFF84E7F7FF73DFF7FF63DFF7FF52D7 - F7FF4AD7F7FF39D7F7FF31CFF7FFCEF7FFFF319EDEFF000000000000000031A6 - DEFFF7FFFFFFCEF7FFFFBDEFFFFFADEFFFFF9CEFFFFF8CE7F7FF7BE7F7FF6BDF - F7FF5ADFF7FF4AD7F7FF42D7F7FFD6F7FFFF319EDEFF000000000000000031A6 - DEFFFFFFFFFFFFFFFFFFF7FFFFFFF7FFFFFFF7FFFFFFDEF7FFFF94E7FFFF84E7 - F7FF73DFF7FF6BDFF7FF5ADFF7FFD6F7FFFF31A6DEFF000000000000000031AE - DEFFEFF7FFFF94D7EFFF8CCFEFFF73C7EFFFCEEFF7FFF7FFFFFFF7FFFFFFF7FF - FFFFF7FFFFFFEFFFFFFFEFFFFFFFFFFFFFFF31AEDEFF000000000000000031AE - DEFFF7FFFFFF94DFF7FF94DFF7FF84D7F7FF6BCFEFFF6BCFEFFF84D7EFFF84D7 - EFFF7BD7EFFF73CFEFFF73CFEFFFEFF7FFFF31AEDEFF000000000000000031AE - DEFFF7FFFFFF8CE7FFFF94DFF7FF9CE7F7FFADE7F7FFEFFFFFFFF7FFFFFFF7FF - FFFFF7FFFFFFEFFFFFFFEFFFFFFFFFFFFFFF31AEDEFF000000000000000031B6 - DEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF7FFFF6BC7E7FF6BC7 - E7FF6BC7E7FF6BC7E7FF7BCFE7FF73CFE7FF00000000000000000000000031B6 - DEFF5AC7E7FF63C7E7FF63C7E7FF63C7E7FF5AC7E7FF39B6DEFF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000 - } ShowCaption = False end object FileBtn3: TSpeedButton @@ -167,42 +131,6 @@ Action = FileSave Align = alLeft Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000BD6931FFBD69 - 31FFBD6931FFB56931FFB56931FFB56531FFB56531FFB56531FFAD6531FFAD61 - 31FFAD6131FFAD6131FFAD6131FFA56131FFA56131FFAD6131FFBD6931FFEFC7 - ADFFEFC7ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9E7BFFC69E7BFFA56131FFBD6931FFEFCF - B5FFE7A67BFFFFFFF7FF63C78CFF63C78CFF63C78CFF63C78CFF63C78CFF63C7 - 8CFF63C78CFF63C78CFFFFFFF7FFCE8E63FFCE9E7BFFA56131FFBD6D39FFEFCF - B5FFE7A67BFFFFFFF7FFBDDFC6FFBDDFC6FFBDDFC6FFBDDFC6FFBDDFC6FFBDDF - C6FFBDDFC6FFBDDFC6FFFFFFF7FFCE966BFFCE9E84FFAD6131FFBD6939FFEFCF - BDFFE7A67BFFFFFFF7FF63C78CFF63C78CFF63C78CFF63C78CFF63C78CFF63C7 - 8CFF63C78CFF63C78CFFFFFFF7FFCE966BFFCEA684FFAD6131FFBD6931FFEFD7 - BDFFE7A67BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFD6966BFFD6A68CFFAD6131FFBD6931FFF7D7 - BDFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFDE9E73FFDE9E - 73FFDE9E73FFDE9E73FFDE9E73FFD69E73FFD6AE8CFFAD6131FFBD6931FFF7D7 - C6FFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFDEA6 - 73FFDE9E73FFDE9E73FFDE9E73FFDE9E73FFDEB694FFAD6531FFBD6931FFF7DF - C6FFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFE7A67BFFDEA6 - 73FFDE9E73FFDE9E73FFDE9E73FFDE9E73FFDEB69CFFB56531FFBD6931FFF7DF - C6FFE7A67BFFCE8E63FFCE8E63FFCE8E63FFCE966BFFCE966BFFCE966BFFCE8E - 63FFCE8E63FFCE8E63FFCE8E63FFDE9E73FFE7BE9CFFB56531FFBD6931FFF7DF - CEFFE7A67BFFFFEFE7FFFFEFE7FFFFEFE7FFFFF7EFFFFFFFF7FFFFF7F7FFFFEF - E7FFF7E7DEFFF7E7DEFFF7E7DEFFDEA673FFE7BEA5FFB56531FFBD6931FFF7DF - CEFFE7AE7BFFFFF7EFFFFFF7EFFFCE8E63FFFFF7EFFFFFFFF7FFFFFFFFFFFFF7 - EFFFFFEFDEFFF7E7DEFFF7E7DEFFE7A67BFFE7C7ADFFB56931FFBD6931FFF7DF - D6FFEFAE7BFFFFF7F7FFFFF7F7FFCE8E63FFFFF7EFFFFFF7EFFFFFFFF7FFFFFF - F7FFFFF7EFFFFFEFDEFFF7E7DEFFE7A67BFFEFD7C6FFB56931FFBD6931FFF7DF - D6FFEFAE84FFFFFFF7FFFFFFF7FFCE8E63FFFFF7EFFFFFF7EFFFFFF7F7FFFFFF - FFFFFFF7F7FFFFEFE7FFFFE7DEFFEFD7BDFFEFD7BDFFBD7139FFBD6931FFF7E7 - D6FFF7E7D6FFFFFFFFFFFFFFF7FFFFFFF7FFFFF7F7FFFFF7EFFFFFF7EFFFFFFF - F7FFFFFFF7FFFFF7EFFFFFEFDEFFEFD7BDFFCE8E5AFF0000000000000000BD69 - 31FFBD6931FFBD6931FFBD6931FFBD6931FFBD6931FFBD6931FFBD6931FFBD6D - 39FFBD6D39FFBD6D39FFBD6939FFBD7139FF0000000000000000 - } ShowCaption = False end object FileBtn4: TSpeedButton @@ -214,42 +142,6 @@ Action = FilePreview Align = alLeft Flat = True - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000005A7DADFF5A86B5FF5A86B5FF5A86BDFF5A7D - B5FF5275ADFF0000000000000000000000000000000000000000000000000000 - 0000BDC7CEFF94AEC6FF84AEDEFF8CB6EFFF9CBEEFFFA5C7E7FFA5BEE7FFA5BE - E7FF94B6E7FF6B9EE7FF6386C6FF8496B5FF000000000000000000000000C6CF - DEFF9CBEE7FF9CC7EFFFBDD7EFFFD6DFEFFFE7E7EFFFEFEFEFFFEFEFEFFFEFEF - EFFFEFEFEFFFCED7EFFF94B6E7FF6396E7FF738EBDFF00000000D6DFE7FFADCF - EFFFC6D7EFFFE7E7EFFFEFEFEFFFEFDFD6FFE7BEA5FFDE9E73FFDE9E73FFDEB6 - 94FFEFD7CEFFF7F7F7FFE7EFEFFFB5CFEFFF6396E7FF849EC6FFC6D7E7FFD6E7 - EFFFF7F7F7FFF7F7F7FFF7E7DEFFE7B69CFFE7A67BFFE79E73FFDE9E6BFFDE96 - 63FFE7A67BFFEFDFCEFFF7F7F7FFF7F7F7FFCED7E7FF7BA6DEFFDEE7E7FFEFEF - EFFFF7F7F7FFFFFFFFFFF7D7BDFFEFB68CFFE7AE84FFE7A67BFFE7A673FFE79E - 73FFE7966BFFEFBE9CFFFFFFFFFFF7F7F7FFEFEFEFFF94B6DEFFB5CFDEFFDEE7 - EFFFF7F7F7FFFFFFFFFFF7C7ADFFEFBE9CFFEFB694FF181008FF181008FFE7A6 - 7BFFE79E73FFE7A67BFFFFFFFFFFF7F7F7FFD6DFEFFF6B8ECEFFD6DFE7FFADCF - E7FFBDCFD6FFFFFFFFFFF7CFB5FFEFBEA5FFEFBE9CFF181410FF181408FFEFAE - 84FFEFA67BFFEFAE84FFFFFFFFFFC6D7E7FF7BA6E7FF739ED6FFE7E7E7FFC6D7 - E7FFB5D7EFFF94AEBDFFD6CFC6FFEFC7ADFFEFC7A5FFEFBE9CFFEFB694FFEFB6 - 8CFFEFAE84FFEFC7B5FFA5BEDEFF84AEE7FF84B6F7FFC6D7E7FF00000000E7E7 - E7FFC6D7E7FFBDD7EFFFA5BED6FF8CA6B5FF9CA6ADFFB5AEA5FFB5A6A5FFB5A6 - 9CFF9C9EA5FF849EC6FF94BEEFFF94BEEFFFBDD7EFFF00000000000000000000 - 0000E7E7E7FFCEDFE7FFBDD7EFFFBDD7EFFFB5CFEFFFA5BEDEFF9CBED6FF9CBE - DEFFADCFF7FFA5C7EFFFA5C7EFFFD6DFEFFF0000000000000000000000000000 - 00000000000000000000DEDFE7FFC6D7E7FFBDD7E7FFBDCFE7FFB5CFE7FFB5CF - E7FFB5CFE7FFC6D7E7FF00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000 - } ShowCaption = False end object CutB: TSpeedButton @@ -970,78 +862,10 @@ Height = 24 Top = 1 Width = 22 + Action = edtUndo Align = alLeft Flat = True - Glyph.Data = { - 36080000424D3608000000000000360000002800000020000000100000000100 - 2000000000000008000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFBFFFF0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000A5A2A5FFA50000FF000000000000000000000000000000000000 - 000000000000FFFBFFFFFFFBFFFFFFFBFFFFFFFBFFFFFFFBFFFF000000000000 - 00000000000000000000A5A2A5FFFFFBFFFF0000000000000000000000000000 - 0000A50000FFA50000FFA50000FFA50000FFA50000FF00000000000000000000 - 00000000000000000000A50000FFA5A2A5FF0000000000000000000000000000 - 0000A5A2A5FFA5A2A5FFA5A2A5FFA5A2A5FFA5A2A5FF00000000000000000000 - 00000000000000000000A5A2A5FF00000000FFFBFFFF00000000000000000000 - 0000A50000FFA50000FFA50000FFA50000FF0000000000000000000000000000 - 0000000000000000000000000000A50000FF0000000000000000000000000000 - 0000A5A2A5FFA5A2A5FFA5A2A5FFA5A2A5FF0000000000000000000000000000 - 0000000000000000000000000000A5A2A5FFFFFBFFFF00000000000000000000 - 0000A50000FFA50000FFA50000FF000000000000000000000000000000000000 - 0000000000000000000000000000A50000FF0000000000000000000000000000 - 0000A5A2A5FFA5A2A5FFA5A2A5FF00000000FFFBFFFF00000000000000000000 - 0000000000000000000000000000A5A2A5FFFFFBFFFF00000000000000000000 - 0000A50000FFA50000FF00000000A50000FF0000000000000000000000000000 - 0000000000000000000000000000A50000FF0000000000000000000000000000 - 0000A5A2A5FFA5A2A5FF00000000A5A2A5FF00000000FFFBFFFFFFFBFFFF0000 - 0000000000000000000000000000A5A2A5FF0000000000000000000000000000 - 0000A50000FF000000000000000000000000A50000FFA50000FF000000000000 - 00000000000000000000A50000FFA5A2A5FF0000000000000000000000000000 - 0000A5A2A5FF000000000000000000000000A5A2A5FFA5A2A5FF00000000FFFB - FFFFFFFBFFFFFFFBFFFFA5A2A5FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A50000FFA500 - 00FFA50000FFA50000FFA5A2A5FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A5A2A5FFA5A2 - A5FFA5A2A5FFA5A2A5FF00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000 - } - NumGlyphs = 2 - OnClick = UndoBClick + ShowCaption = False end object RedoB: TSpeedButton Tag = 48 @@ -1049,78 +873,10 @@ Height = 24 Top = 1 Width = 22 + Action = edtRedo Align = alLeft Flat = True - Glyph.Data = { - 36080000424D3608000000000000360000002800000020000000100000000100 - 2000000000000008000064000000640000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000FFFBFFFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000A50000FFA5A2A5FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000A5A2A5FFFFFBFFFF000000000000000000000000000000000000 - 0000FFFBFFFFFFFBFFFFFFFBFFFFFFFBFFFFFFFBFFFF00000000000000000000 - 0000A5A2A5FFA50000FF0000000000000000000000000000000000000000A500 - 00FFA50000FFA50000FFA50000FFA50000FF0000000000000000000000000000 - 000000000000A5A2A5FF0000000000000000000000000000000000000000A5A2 - A5FFA5A2A5FFA5A2A5FFA5A2A5FFA5A2A5FFFFFBFFFF00000000000000000000 - 0000A50000FF0000000000000000000000000000000000000000000000000000 - 0000A50000FFA50000FFA50000FFA50000FF0000000000000000000000000000 - 0000A5A2A5FFFFFBFFFF00000000000000000000000000000000000000000000 - 0000A5A2A5FFA5A2A5FFA5A2A5FFA5A2A5FFFFFBFFFF00000000000000000000 - 0000A50000FF0000000000000000000000000000000000000000000000000000 - 000000000000A50000FFA50000FFA50000FF0000000000000000000000000000 - 0000A5A2A5FFFFFBFFFF00000000000000000000000000000000000000000000 - 000000000000A5A2A5FFA5A2A5FFA5A2A5FFFFFBFFFF00000000000000000000 - 0000A50000FF0000000000000000000000000000000000000000000000000000 - 0000A50000FF00000000A50000FFA50000FF0000000000000000000000000000 - 0000A5A2A5FF00000000FFFBFFFF00000000000000000000000000000000FFFB - FFFFA5A2A5FF00000000A5A2A5FFA5A2A5FFFFFBFFFF00000000000000000000 - 0000A5A2A5FFA50000FF00000000000000000000000000000000A50000FFA500 - 00FF000000000000000000000000A50000FF0000000000000000000000000000 - 000000000000A5A2A5FF00000000FFFBFFFFFFFBFFFFFFFBFFFFA5A2A5FFA5A2 - A5FF000000000000000000000000A5A2A5FF0000000000000000000000000000 - 000000000000A5A2A5FFA50000FFA50000FFA50000FFA50000FF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000A5A2A5FFA5A2A5FFA5A2A5FFA5A2A5FF000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000 - } - NumGlyphs = 2 - OnClick = RedoBClick + ShowCaption = False end object HelpBtn: TSpeedButton Left = 431 @@ -1927,7 +1683,7 @@ object C2: TComboBox Tag = 7 Left = 1 - Height = 33 + Height = 35 Top = 2 Width = 155 ItemHeight = 13 @@ -2389,21 +2145,21 @@ end object frDock2: TPanel Left = 0 - Height = 299 - Top = 83 + Height = 300 + Top = 80 Width = 27 Align = alLeft - ClientHeight = 299 + ClientHeight = 300 ClientWidth = 27 FullRepaint = False TabOrder = 1 object panForDlg: TPanel Left = 1 - Height = 297 + Height = 298 Top = 1 Width = 25 Align = alClient - ClientHeight = 297 + ClientHeight = 298 ClientWidth = 25 FullRepaint = False TabOrder = 1 @@ -2469,11 +2225,11 @@ end object Panel4: TPanel Left = 1 - Height = 297 + Height = 298 Top = 1 Width = 25 Align = alClient - ClientHeight = 297 + ClientHeight = 298 ClientWidth = 25 FullRepaint = False TabOrder = 0 @@ -2772,8 +2528,8 @@ end object Tab1: TTabControl Left = 27 - Height = 299 - Top = 83 + Height = 300 + Top = 80 Width = 641 TabStop = False OnChange = Tab1Change @@ -2786,24 +2542,24 @@ TabOrder = 2 object panTab: TPanel Left = 2 - Height = 267 - Top = 30 + Height = 262 + Top = 36 Width = 637 Align = alClient BevelOuter = bvNone Caption = 'panTab' - ClientHeight = 267 + ClientHeight = 262 ClientWidth = 637 TabOrder = 1 object ScrollBox1: TScrollBox Left = 0 - Height = 267 + Height = 262 Top = 0 Width = 637 HorzScrollBar.Page = 488 VertScrollBar.Page = 174 Align = alClient - ClientHeight = 265 + ClientHeight = 260 ClientWidth = 635 Color = clGray ParentColor = False @@ -4066,12 +3822,12 @@ end object frDock4: TPanel Left = 668 - Height = 299 - Top = 83 + Height = 300 + Top = 80 Width = 27 Align = alRight Anchors = [akTop, akRight] - ClientHeight = 299 + ClientHeight = 300 ClientWidth = 27 FullRepaint = False TabOrder = 3 @@ -4668,8 +4424,8 @@ end object Popup1: TPopupMenu OnPopup = Popup1Popup - left = 272 - top = 96 + left = 368 + top = 48 object N2: TMenuItem Caption = ' ' ShortCut = 16472 @@ -4687,7 +4443,6 @@ end object N5: TMenuItem Caption = ' ' - ShortCut = 46 OnClick = N5Click end object N16: TMenuItem @@ -4705,8 +4460,8 @@ end object MainMenu1: TMainMenu Images = ActionsImageList - left = 208 - top = 88 + left = 320 + top = 48 object FileMenu: TMenuItem Caption = '&File' object N23: TMenuItem @@ -4866,14 +4621,10 @@ object EditMenu: TMenuItem Caption = '&Edit' object N46: TMenuItem - Caption = 'Undo' - ShortCut = 16474 - OnClick = UndoBClick + Action = edtUndo end object N48: TMenuItem - Caption = 'Redo' - ShortCut = 16473 - OnClick = RedoBClick + Action = edtRedo end object N47: TMenuItem Caption = '-' @@ -4895,7 +4646,6 @@ end object N27: TMenuItem Caption = 'Delete' - ShortCut = 46 OnClick = N5Click end object N28: TMenuItem @@ -5223,8 +4973,8 @@ object ImgIndic: TImageList Height = 8 Width = 8 - left = 328 - top = 96 + left = 584 + top = 8 Bitmap = { 4C69030000000800000008000000000000000000000000000000000000000000 00000000000000000000000000FF0000000000F900FF00F900FF00F900FF00F9 @@ -5255,8 +5005,8 @@ end object actList: TActionList Images = ActionsImageList - left = 560 - top = 36 + left = 640 + top = 8 object acDuplicate: TAction Category = 'Edit' Caption = 'Duplicate object' @@ -5304,12 +5054,24 @@ Caption = 'Data inspector' OnExecute = tlsDBFieldsExecute end + object edtUndo: TAction + Category = 'Edit' + Caption = 'Undo' + ImageIndex = 3 + OnExecute = edtUndoExecute + end + object edtRedo: TAction + Category = 'Edit' + Caption = 'Redo' + ImageIndex = 4 + OnExecute = edtRedoExecute + end end object ActionsImageList: TImageList - left = 328 - top = 156 + left = 584 + top = 48 Bitmap = { - 4C6903000000100000001000000000000000BD6931FFBD6931FFBD6931FFBD69 + 4C6905000000100000001000000000000000BD6931FFBD6931FFBD6931FFBD69 31FFBD6931FFBD6931FFBD6931FFBD6931FFBD6D39FFBD6D39FFBD6D39FFBD69 39FFBD7139FF0000000000000000BD6931FFF7E7D6FFF7E7D6FFFFFFFFFFFFFF F7FFFFFFF7FFFFF7F7FFFFF7EFFFFFF7EFFFFFFFF7FFFFFFF7FFFFF7EFFFFFEF @@ -5405,7 +5167,71 @@ F6FF8EDEF5FF89DCF5FF85DAF4FF80D9F4FF7AD7F3FF74D5F3FF70D3F2FFC2EA F8FF3594DAFFFFFFFF00FFFFFF002C86D8D12D88D8F72D87D8F72D88D8F72D88 D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87D8F72D88 - D8F72C86D8D1FFFFFF00FFFFFF00 + D8F72C86D8D1FFFFFF00FFFFFF00000000000000000000000000000000000000 + 00000000000000A0C4FF00000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000009D + BF1400A0C4FF00A0C4FF00000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000005797D1100A0 + C4FFADF3FBFF00A0C4FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000005797D1100A0C4FFADF3 + FBFF25E4FBFF00A0C4FF00A0C4FF13A1BEE7159FBBCF1BA1BBA4067A7C0B0000 + 00000000000000000000000000000000000005797D1100A0C4FFADF3FBFF31E1 + F6FF20E3FAFF73ECFAFF6FEBFAFF6EE8F7FF6CE8F7F814A1BCD414A3C1D50579 + 7D1C00000000000000000000000005797D0A00A0C4FFADF3FBFF2FE0F6FF32E2 + F7FF29DBF1FF2FE0F5FF29DBF1FF16CDE3FF36D9ECFF69E7F6FF41CEE3FE13A3 + C1E405797D32000000000000000000A0C4FFADF3FBFF2FE0F6FF32E2F8FF32E2 + F7FF32E2F7FF2FE0F5FF29DBF1FF1DD2E8FF1DD2E8FF1DD2E8FF36D9ECFF40CD + E1FF16A1BDCA05797D0A0000000005797E1100A0C4FF79EDFBFF32E2F8FF2CDF + F4FF04C0D6FF04C0D6FF04C0D6FF1DD2E8FF1DD2E8FF1DD2E8FF0BC8DFFF6AE5 + F3FF1BABC5F815A0BCCB000000000000000005797D1100A0C4FF76EDFBFF04C3 + DAFF76EDFBFF69EAF9FF69EAF9FF69EAF9FF69EAF9FF05DDF7FF0AC8DFFF07C2 + D8FF6FDCEBFF1BA3BFF400000000000000000000000005797D1100A0C4FF76ED + FBFF76EDFBFF00A0C4FF00A0C4FF00A0C4FF00A0C4FF01A9C4FF6EE1EEFF0FC9 + DFFF69E4F2FF1AA4C0F80000000000000000000000000000000005797D1100A0 + C4FF76EDFBFF00A0C4FF000000000000000000A0C4300099B95000A0C4C96DE6 + F5FF76E2EFFF19A3C1FF00000000000000000000000000000000000000000000 + 000000A0C4FF00A0C4FF00000000000000000000000000000000009EC11A02AC + C8FF88E7F2FE11A2C2FF00000000000000000000000000000000000000000000 + 00000000000000A0C4FF00000000000000000000000000000000000000000EAA + CBFE5DDAE9FE23A6C0EF00000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000A0C42243C4 + DBFC43C5D8FE23A6C07F00000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000A0C45D66DB + EAB211A6C2AE0000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000018A6C3691AA7 + C46900A0C4180000000000000000FFFFFF000000000000000000000000000000 + 00000000000000000000000000000000000000A0C4FF00000000000000000000 + 0000000000000000000000000000FFFFFF000000000000000000000000000000 + 00000000000000000000000000000000000000A0C4FF00A0C4FF009DBF140000 + 0000000000000000000000000000FFFFFF000000000000000000000000000000 + 00000000000000000000000000000000000000A0C4FFADF3FBFF00A0C4FF0579 + 7D11000000000000000000000000FFFFFF00000000000000000000000000067A + 7C0B1BA1BBA4159FBBCF13A1BEE700A0C4FF00A0C4FF25E4FBFFADF3FBFF00A0 + C4FF05797D110000000000000000FFFFFF00000000000000000005797D1C14A3 + C1D514A1BCD46CE8F7F86EE8F7FF6FEBFAFF73ECFAFF20E3FAFF31E1F6FFADF3 + FBFF00A0C4FF05797D1100000000FFFFFF000000000005797D3213A3C1E441CE + E3FE69E7F6FF36D9ECFF16CDE3FF29DBF1FF2FE0F5FF29DBF1FF32E2F7FF2FE0 + F6FFADF3FBFF00A0C4FF05797D0AFFFFFF0005797D0A16A1BDCA40CDE1FF36D9 + ECFF1DD2E8FF1DD2E8FF1DD2E8FF29DBF1FF2FE0F5FF32E2F7FF32E2F7FF32E2 + F8FF2FE0F6FFADF3FBFF00A0C4FFFFFFFF0015A0BCCB1BABC5F86AE5F3FF0BC8 + DFFF1DD2E8FF1DD2E8FF1DD2E8FF04C0D6FF04C0D6FF04C0D6FF2CDFF4FF32E2 + F8FF79EDFBFF00A0C4FF05797E11FFFFFF001BA3BFF46FDCEBFF07C2D8FF0AC8 + DFFF05DDF7FF69EAF9FF69EAF9FF69EAF9FF69EAF9FF76EDFBFF04C3DAFF76ED + FBFF00A0C4FF05797D1100000000FFFFFF001AA4C0F869E4F2FF0FC9DFFF6EE1 + EEFF01A9C4FF00A0C4FF00A0C4FF00A0C4FF00A0C4FF76EDFBFF76EDFBFF00A0 + C4FF05797D110000000000000000FFFFFF0019A3C1FF76E2EFFF6DE6F5FF00A0 + C4C90099B95000A0C430000000000000000000A0C4FF76EDFBFF00A0C4FF0579 + 7D11000000000000000000000000FFFFFF0011A2C2FF88E7F2FE02ACC8FF009E + C11A0000000000000000000000000000000000A0C4FF00A0C4FF000000000000 + 0000000000000000000000000000FFFFFF0023A6C0EF5DDAE9FE0EAACBFE0000 + 00000000000000000000000000000000000000A0C4FF00000000000000000000 + 0000000000000000000000000000FFFFFF0023A6C07F43C5D8FE43C4DBFC00A0 + C422000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF000000000011A6C2AE66DBEAB200A0 + C45D000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF000000000000A0C4181AA7C46918A6 + C369000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000 } end end diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_desgn.pas lazarus-1.6+dfsg/components/lazreport/source/lr_desgn.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_desgn.pas 2014-11-05 17:48:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_desgn.pas 2015-08-30 17:38:01.000000000 +0000 @@ -18,13 +18,13 @@ {$define sbod} // status bar owner draw {$define ppaint} uses - Classes, SysUtils, FileUtil, LResources, LMessages, - Forms, Controls, Graphics, Dialogs,ComCtrls, - ExtCtrls, Buttons, StdCtrls,Menus, + Classes, SysUtils, LazFileUtils, LazUTF8, LMessages, + Forms, Controls, Graphics, Dialogs, ComCtrls, + ExtCtrls, Buttons, StdCtrls, Menus, LCLType,LCLIntf,LCLProc,GraphType,Printers, ActnList, - ObjectInspector, PropEdits,TypInfo, + ObjectInspector, PropEdits, LR_Class, LR_Color,LR_Edit; @@ -43,6 +43,7 @@ SaveAs: Boolean; var Saved: Boolean) of object; TfrDesignerForm = class; + TlrTabEditControl = class(TCustomTabControl); { TfrDesigner } @@ -244,6 +245,8 @@ TfrDesignerForm = class(TfrReportDesigner) acDuplicate: TAction; + edtRedo: TAction; + edtUndo: TAction; MenuItem2: TMenuItem; tlsDBFields: TAction; FileBeforePrintScript: TAction; @@ -430,6 +433,8 @@ procedure acDuplicateExecute(Sender: TObject); procedure acToggleFramesExecute(Sender: TObject); procedure C2GetItems(Sender: TObject); + procedure edtRedoExecute(Sender: TObject); + procedure edtUndoExecute(Sender: TObject); procedure FileBeforePrintScriptExecute(Sender: TObject); procedure FileOpenExecute(Sender: TObject); procedure FilePreviewExecute(Sender: TObject); @@ -489,8 +494,6 @@ procedure Tab1Change(Sender: TObject); procedure N34Click(Sender: TObject); procedure GB3Click(Sender: TObject); - procedure UndoBClick(Sender: TObject); - procedure RedoBClick(Sender: TObject); //procedure N20Click(Sender: TObject); procedure PBox1Paint(Sender: TObject); procedure SB1Click(Sender: TObject); @@ -623,6 +626,14 @@ procedure DuplicateView(View: TfrView; Data: PtrInt); procedure ResetDuplicateCount; function lrDesignAcceptDrag(const Source: TObject): TControl; + private + FTabMouseDown:boolean; + FTabsPage:TlrTabEditControl; + procedure TabsEditDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); + procedure TabsEditDragDrop(Sender, Source: TObject; X, Y: Integer); + procedure TabsEditMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure TabsEditMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); + procedure TabsEditMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); protected procedure SetModified(AValue: Boolean);override; function IniFileName:string; @@ -1777,11 +1788,8 @@ procedure CreateSubReport; begin -{ Objects.Add(TfrSubReportView.Create(FDesigner.Page)); - t := TfrView(Objects.Last);} t:=TfrSubReportView.Create(FDesigner.Page); - (t as TfrSubReportView).SubPage := CurReport.Pages.Count; - CurReport.Pages.Add; + (t as TfrSubReportView).SubPage := CurReport.Pages.Add; end; begin @@ -2907,6 +2915,14 @@ StatusBar1.OnDrawPanel := @StatusBar1Drawpanel; Panel7.Visible := false; {$endif} + + FTabsPage:=TlrTabEditControl((Tab1.Tabs as TTabControlNoteBookStrings).NoteBook); + FTabsPage.DragMode:=dmManual; + FTabsPage.OnDragOver:=@TabsEditDragOver; + FTabsPage.OnDragDrop:=@TabsEditDragDrop; + FTabsPage.OnMouseDown:=@TabsEditMouseDown; + FTabsPage.OnMouseMove:=@TabsEditMouseMove; + FTabsPage.OnMouseUp:=@TabsEditMouseUp; end; destructor TfrDesignerForm.Destroy; @@ -2924,7 +2940,6 @@ var DC: HDC; Lf: TLogFont; - S: String; {$IFDEF USE_PRINTER_FONTS} Lst: TStrings; i: Integer; @@ -3060,11 +3075,14 @@ FileSave.Hint:= sFRDesignerFormSaveRp; FilePreview.Hint := sFRDesignerFormPreview; + edtUndo.Caption := sFRDesignerForm_Undo; + edtUndo.Hint := sFRDesignerFormUndo; + edtRedo.Caption := sFRDesignerForm_Redo; + edtRedo.Hint := sFRDesignerFormRedo; + CutB.Hint := sFRDesignerFormCut; CopyB.Hint := sFRDesignerFormCopy; PstB.Hint := sFRDesignerFormPast; - UndoB.Hint := sFRDesignerFormUndo; - RedoB.Hint := sFRDesignerFormRedo; ZB1.Hint := sFRDesignerFormBring; ZB2.Hint := sFRDesignerFormBack; SelAllB.Hint := sFRDesignerFormSelectAll; @@ -3137,8 +3155,6 @@ N39.Caption := sFRDesignerForm_preview; N10.Caption := sFRDesignerForm_Exit; EditMenu.Caption := sFRDesignerForm_Edit2; - N46.Caption := sFRDesignerForm_Undo; - N48.Caption := sFRDesignerForm_Redo; N11.Caption := sFRDesignerForm_Cut; N12.Caption := sFRDesignerForm_Copy; N13.Caption := sFRDesignerForm_Paste; @@ -3191,6 +3207,16 @@ end; end; +procedure TfrDesignerForm.edtRedoExecute(Sender: TObject); +begin + Undo(@FRedoBuffer); +end; + +procedure TfrDesignerForm.edtUndoExecute(Sender: TObject); +begin + Undo(@FUndoBuffer); +end; + procedure TfrDesignerForm.FileBeforePrintScriptExecute(Sender: TObject); begin EditorForm.View := nil; @@ -3259,7 +3285,6 @@ procedure TfrDesignerForm.FilePreviewExecute(Sender: TObject); // preview var - v1, v2: Boolean; TestRepStream:TMemoryStream; Rep, SaveR:TfrReport; @@ -3313,6 +3338,7 @@ try Rep.LoadFromXMLStream(TestRepStream); + Rep.FileName:=SaveR.FileName; Rep.ShowReport; FreeAndNil(Rep) except @@ -3761,30 +3787,28 @@ end; procedure TfrDesignerForm.RemovePage(n: Integer); - procedure AdjustSubReports; - var - i, j: Integer; - t: TfrView; + +procedure AdjustSubReports(APage:TfrPage); +var + i, j: Integer; + t: TfrView; +begin + for i := 0 to CurReport.Pages.Count - 1 do begin - with CurReport do - for i := 0 to Pages.Count - 1 do + j := 0; + while j < CurReport.Pages[i].Objects.Count do + begin + t := TfrView(CurReport.Pages[i].Objects[j]); + if (T is TfrSubReportView) and (TfrSubReportView(t).SubPage = APage) then begin - j := 0; - while j < Pages[i].Objects.Count do - begin - t := TfrView(Pages[i].Objects[j]); - if t.Typ = gtSubReport then - if TfrSubReportView(t).SubPage = n then - begin - Pages[i].Delete(j); - Dec(j); - end - else if TfrSubReportView(t).SubPage > n then - Dec(TfrSubReportView(t).SubPage); - Inc(j); - end; + CurReport.Pages[i].Delete(j); + Dec(j); end; + Inc(j); + end; end; +end; + begin fInBuildPage:=True; try @@ -3796,10 +3820,10 @@ Pages[n].Clear else begin + AdjustSubReports(Pages[n]); CurReport.Pages.Delete(n); Tab1.Tabs.Delete(n); Tab1.TabIndex := 0; - AdjustSubReports; CurPage := 0; end; end; @@ -3815,37 +3839,35 @@ i: Integer; s: String; - function IsSubreport(PageN: Integer): Boolean; - var - i, j: Integer; - t: TfrView; - begin - Result := False; - with CurReport do - for i := 0 to Pages.Count - 1 do - for j := 0 to Pages[i].Objects.Count - 1 do - begin - t := TfrView(Pages[i].Objects[j]); - if t.Typ = gtSubReport then - if TfrSubReportView(t).SubPage = PageN then - begin - s := t.Name; - Result := True; - Exit; - end; - end; - end; - +function IsSubreport(PageN: Integer): Boolean; +var + i, j: Integer; + t: TfrView; begin - if Tab1.Tabs.Count = CurReport.Pages.Count then - begin - for i := 0 to Tab1.Tabs.Count - 1 do + Result := False; + for i := 0 to CurReport.Pages.Count - 1 do + for j := 0 to CurReport.Pages[i].Objects.Count - 1 do begin - if not IsSubreport(i) then - s := sPg + IntToStr(i + 1); - if Tab1.Tabs[i] <> s then - Tab1.Tabs[i] := s; + t := TfrView(CurReport.Pages[i].Objects[j]); + if (T is TfrSubReportView) and (TfrSubReportView(t).SubPage = CurReport.Pages[PageN]) then + begin + s := t.Name; + Result := True; + Exit; + end; end; +end; + +begin + if Tab1.Tabs.Count = CurReport.Pages.Count then + begin + for i := 0 to Tab1.Tabs.Count - 1 do + begin + if not IsSubreport(i) then + s := sPg + IntToStr(i + 1); + if Tab1.Tabs[i] <> s then + Tab1.Tabs[i] := s; + end; end else begin @@ -3870,7 +3892,8 @@ t := TfrView(Objects[i]); if (t.Selected) and not (lrrDontDelete in T.Restrictions) and not (doChildComponent in T.DesignOptions) then begin - ClipBd.Add(frCreateObject(t.Typ, t.ClassName, Page)); +// ClipBd.Add(frCreateObject(t.Typ, t.ClassName, Page)); + ClipBd.Add(frCreateObject(t.Typ, t.ClassName, nil)); TfrView(ClipBd.Last).Assign(t); end; end; @@ -4467,6 +4490,52 @@ {$endif} +procedure TfrDesignerForm.TabsEditDragOver(Sender, Source: TObject; X, + Y: Integer; State: TDragState; var Accept: Boolean); +begin + Accept:=(Source = FTabsPage) and (FTabsPage.IndexOfTabAt(X, Y) <> Tab1.TabIndex); +end; + +procedure TfrDesignerForm.TabsEditDragDrop(Sender, Source: TObject; X, + Y: Integer); +var + NewIndex: Integer; +begin + NewIndex:=FTabsPage.IndexOfTabAt(X, Y); + //ShowMessageFmt('New index = %d', [NewIndex]); + if (NewIndex>-1) and (NewIndex < CurReport.Pages.Count) then + begin + CurReport.Pages.Move(CurPage, NewIndex); + Tab1.Tabs.Move(CurPage, NewIndex); + SetPageTitles; + + ClearUndoBuffer; + ClearRedoBuffer; + Modified := True; + Tab1.TabIndex:=NewIndex; + RedrawPage; + end; +end; + +procedure TfrDesignerForm.TabsEditMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + FTabMouseDown:=true; +end; + +procedure TfrDesignerForm.TabsEditMouseMove(Sender: TObject; + Shift: TShiftState; X, Y: Integer); +begin + if FTabMouseDown then + FTabsPage.BeginDrag(false); +end; + +procedure TfrDesignerForm.TabsEditMouseUp(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + FTabMouseDown:=false; +end; + procedure TfrDesignerForm.SetModified(AValue: Boolean); begin inherited SetModified(AValue); @@ -5292,7 +5361,7 @@ end else if t.Typ = gtSubReport then - CurPage := (t as TfrSubReportView).SubPage + CurPage := (t as TfrSubReportView).SubPage.PageIndex else if t.Typ = gtAddIn then begin @@ -5348,15 +5417,13 @@ procedure TfrDesignerForm.ClearUndoBuffer; begin ClearBuffer(FUndoBuffer, FUndoBufferLength); - N46.Enabled := False; - UndoB.Enabled := N46.Enabled; + edtUndo.Enabled := False; end; procedure TfrDesignerForm.ClearRedoBuffer; begin ClearBuffer(FRedoBuffer, FRedoBufferLength); - N48.Enabled := False; - RedoB.Enabled := N48.Enabled; + edtRedo.Enabled := False; end; procedure TfrDesignerForm.Undo(Buffer: PfrUndoBuffer); @@ -5431,10 +5498,8 @@ ResetSelection; PageView.Invalidate; - N46.Enabled := FUndoBufferLength > 0; - UndoB.Enabled := N46.Enabled; - N48.Enabled := FRedoBufferLength > 0; - RedoB.Enabled := N48.Enabled; + edtUndo.Enabled := FUndoBufferLength > 0; + edtRedo.Enabled := FRedoBufferLength > 0; end; procedure TfrDesignerForm.AddAction(Buffer: PfrUndoBuffer; a: TfrUndoAction; List: TFpList); @@ -5495,14 +5560,12 @@ if Buffer = @FUndoBuffer then begin FUndoBufferLength := BufferLength + 1; - N46.Enabled := True; - UndoB.Enabled := True; + edtUndo.Enabled := True; end else begin FRedoBufferLength := BufferLength + 1; - N48.Enabled := True; - RedoB.Enabled := True; + edtRedo.Enabled := True; end; Modified := True; //FileModified := True; @@ -5668,6 +5731,8 @@ var i, minx, miny: Integer; t, t1: TfrView; + S: String; + P: TObject; begin Unselect; SelNum := 0; @@ -5706,16 +5771,6 @@ AddUndoAction(acInsert); end; -procedure TfrDesignerForm.UndoBClick(Sender: TObject); // undo -begin - Undo(@FUndoBuffer); -end; - -procedure TfrDesignerForm.RedoBClick(Sender: TObject); // redo -begin - Undo(@FRedoBuffer); -end; - procedure TfrDesignerForm.SelAllBClick(Sender: TObject); // select all begin PageView.NPEraseSelection; @@ -6273,7 +6328,7 @@ end; begin - Ini:=TIniFile.Create(IniFileName); + Ini:=TIniFile.Create(UTF8ToSys(IniFileName)); Ini.WriteString('frEditorForm', 'ScriptFontName', edtScriptFontName); Ini.WriteInteger('frEditorForm', 'ScriptFontSize', edtScriptFontSize); @@ -6320,7 +6375,7 @@ begin if FileExistsUTF8(IniFileName) then begin - Ini:=TIniFile.Create(IniFileName); + Ini:=TIniFile.Create(UTF8ToSys(IniFileName)); edtScriptFontName:=Ini.ReadString('frEditorForm', 'ScriptFontName', edtScriptFontName); edtScriptFontSize:=Ini.ReadInteger('frEditorForm', 'ScriptFontSize', edtScriptFontSize); GridSize := Ini.ReadInteger('frEditorForm', rsGridSize, 4); @@ -6382,8 +6437,6 @@ {----------------------------------------------------------------------------} // menu bitmaps procedure TfrDesignerForm.SetMenuBitmaps; -var - i: Integer; begin MaxItemWidth := 0; MaxShortCutWidth := 0; @@ -6398,8 +6451,6 @@ // SetMenuItemBitmap(N39, FileBtn4); SetMenuItemBitmap(N10, ExitB); - SetMenuItemBitmap(N46, UndoB); - SetMenuItemBitmap(N48, RedoB); SetMenuItemBitmap(N11, CutB); SetMenuItemBitmap(N12, CopyB); SetMenuItemBitmap(N13, PstB); @@ -7638,6 +7689,35 @@ procedure Edit; override; end; + { TTfrBandViewChildProperty } + + TTfrBandViewChildProperty = class(TStringProperty) + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + end; + +{ TTfrBandViewChildProperty } + +function TTfrBandViewChildProperty.GetAttributes: TPropertyAttributes; +begin + Result:=inherited GetAttributes + [paValueList, paSortList]; +end; + +procedure TTfrBandViewChildProperty.GetValues(Proc: TGetStrProc); +var + I: Integer; +begin + if Assigned(frDesigner) and Assigned(frDesigner.Page) then + begin + for i:=0 to frDesigner.Page.Objects.Count-1 do + if TObject(frDesigner.Page.Objects[i]) is TfrBandView then + if (TfrBandView(frDesigner.Page.Objects[i]).BandType = btChild) and + (TfrBandView(GetComponent(0)) <> TfrBandView(frDesigner.Page.Objects[i])) then + Proc(TfrBandView(frDesigner.Page.Objects[i]).Name); + end; +end; + { TfrPictureViewDataFieldProperty } function TfrViewDataFieldProperty.GetAttributes: TPropertyAttributes; @@ -7771,7 +7851,6 @@ procedure TfrCustomMemoViewDetailReportProperty.GetValues(Proc: TGetStrProc); var I: Integer; - Values: TStringList; begin if Assigned(CurReport) then begin @@ -7821,7 +7900,7 @@ procedure TlrInternalTools.InsertDbFields; var - i, x, y, dx, dy, pdx, adx, tdx, tdy: Integer; + i, x, y, dx, dy, pdx, adx: Integer; HeaderL, DataL: TFpList; t, t1: TfrView; b: TfrBandView; @@ -8097,6 +8176,8 @@ RegisterPropertyEditor(TypeInfo(String), TfrCustomMemoView, 'DetailReport', TfrCustomMemoViewDetailReportProperty); RegisterPropertyEditor(TypeInfo(String), TfrView, 'DataField', TfrViewDataFieldProperty); + RegisterPropertyEditor(TypeInfo(String), TfrBandView, 'Child', TTfrBandViewChildProperty); + FlrInternalTools:=TlrInternalTools.Create; finalization If Assigned(frDesigner) then diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_design_ins_filed.pas lazarus-1.6+dfsg/components/lazreport/source/lr_design_ins_filed.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_design_ins_filed.pas 2014-08-28 04:10:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_design_ins_filed.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,8 @@ interface uses - Classes, SysUtils, DB, Forms, Controls, ExtCtrls, StdCtrls, Buttons, ComCtrls; + Classes, SysUtils, DB, Forms, Controls, ExtCtrls, StdCtrls, Buttons, ComCtrls, + IniFiles, LazFileUtils; type @@ -56,7 +57,7 @@ lrFieldsList:TlrFieldsList = nil; implementation -uses LR_Utils, LR_Class, LR_DBRel, IniFiles, FileUtil, LR_Desgn, LR_Const; +uses LR_Utils, LR_Class, LR_DBRel, LR_Desgn, LR_Const; {$R *.lfm} diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_dsopt.pas lazarus-1.6+dfsg/components/lazreport/source/lr_dsopt.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_dsopt.pas 2015-01-23 22:06:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_dsopt.pas 2015-03-22 10:17:35.000000000 +0000 @@ -137,12 +137,6 @@ var DC: HDC; Lf: TLogFont; - S: String; - {$IFDEF USE_PRINTER_FONTS} - Lst: TStrings; - i: Integer; - j: PtrInt; - {$ENDIF} begin ComboBox1.Clear; DC := GetDC(0); diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_hyphen.pas lazarus-1.6+dfsg/components/lazreport/source/lr_hyphen.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_hyphen.pas 2013-03-27 21:28:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_hyphen.pas 2015-03-22 10:17:35.000000000 +0000 @@ -213,7 +213,7 @@ function THyphen.BreakWord(Word: string): string; var - i, j: cardinal; + i: cardinal; hyphens: PChar; rep: PPChar; pos: Pointer; @@ -234,10 +234,8 @@ pos := nil; cut := nil; try - if hnj_hyphen_hyphenate2(pdict^, PChar(word), Len, hyphens, nil, - rep, pos, cut) = 0 then + if hnj_hyphen_hyphenate2(pdict^, PChar(word), Len, hyphens, nil, rep, pos, cut) = 0 then begin - j := 0; for i := 1 to length(hyphens)-1 do if Odd(Ord(hyphens[i])) then begin result := result + chr(i+1); diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_newrp.pas lazarus-1.6+dfsg/components/lazreport/source/lr_newrp.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_newrp.pas 2014-08-28 04:10:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_newrp.pas 2015-07-04 23:08:00.000000000 +0000 @@ -15,8 +15,8 @@ {$I LR_Vers.inc} uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Buttons, StdCtrls,ExtCtrls, ButtonPanel, LR_Const; + Classes, SysUtils, LazFileUtils, LResources, Forms, Controls, Graphics, Dialogs, + Buttons, StdCtrls, ExtCtrls, ButtonPanel, LR_Const; type diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_pgrid.pas lazarus-1.6+dfsg/components/lazreport/source/lr_pgrid.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_pgrid.pas 2014-09-04 19:28:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_pgrid.pas 2015-03-22 10:17:59.000000000 +0000 @@ -373,6 +373,7 @@ FReportDataSet.Free; FColumnDataSet.Free; end; + // ToDo: invert this assignment. Now SaveDesign is only assigned but not used. SaveDesign:=frDesigner; end; diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_previewtoolsabstract.pas lazarus-1.6+dfsg/components/lazreport/source/lr_previewtoolsabstract.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_previewtoolsabstract.pas 2014-08-28 16:57:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_previewtoolsabstract.pas 2015-03-22 10:17:35.000000000 +0000 @@ -53,7 +53,6 @@ procedure RegisterLRExportFilter(AFilter: TlrPreviewToolsAbstract); var - C: Integer; i: Integer; begin for i:=0 to lrExportFilters.Count - 1 do @@ -65,7 +64,6 @@ procedure UnRegisterLRExportFilter(AFilter: TlrPreviewToolsAbstract); var - C: Integer; i: Integer; begin i:=lrExportFilters.IndexOf(AFilter); diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_shape.pas lazarus-1.6+dfsg/components/lazreport/source/lr_shape.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_shape.pas 2014-09-05 05:06:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_shape.pas 2015-03-22 10:17:35.000000000 +0000 @@ -287,7 +287,7 @@ const Delta = 10; var - x1, y1, xp, yp : Integer; + xp : Integer; Pts : Array[0..6] of TPoint; min, bx, by, bx1, by1, w1, w2, fw: Integer; begin diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_utils.pas lazarus-1.6+dfsg/components/lazreport/source/lr_utils.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_utils.pas 2015-05-26 22:06:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_utils.pas 2015-10-25 09:22:43.000000000 +0000 @@ -15,12 +15,12 @@ {$I LR_Vers.inc} uses - SysUtils, Classes, Graphics, Controls, + SysUtils, Classes, strutils, Graphics, Controls, LR_DBRel, Forms, StdCtrls, ClipBrd, Menus, db, {$IFDEF WIN32} Windows, {$ENDIF} - LCLType, LCLIntf, LazUTF8, LConvEncoding; + LCLType, LCLIntf, LConvEncoding, LazFileUtils, LazUTF8; type TUTF8Item=packed record @@ -71,6 +71,10 @@ function lrConfigFolderName(ACreatePath: boolean): string; function lrCanReadName(Stream: TStream): boolean; +procedure CanvasTextRectJustify(const Canvas:TCanvas; + const ARect: TRect; X1, X2, Y: integer; const Text: string; + Trimmed: boolean); + // utf8 tools function UTF8Desc(S:string; var Desc: string): Integer; deprecated; function UTF8Char(S:string; index:Integer; Desc:string): TUTF8Char; deprecated; @@ -83,8 +87,7 @@ implementation -uses LR_Class, LR_Const, LR_Pars, FileUtil, LazUtilsStrConsts, LR_DSet, - LR_DBComponent, strutils; +uses LR_Class, LR_Const, LR_Pars, LazUtilsStrConsts, LR_DSet, LR_DBComponent; var PreviousFormatSettings: TFormatSettings; @@ -125,7 +128,7 @@ procedure RemoveQuotes(var s: String); begin - if (s[1] = '"') and (s[Length(s)] = '"') then + if (Length(s) > 1) and (s[1] = '"') and (s[Length(s)] = '"') then s := Copy(s, 2, Length(s) - 2); end; @@ -391,7 +394,7 @@ procedure frGetDataSetAndField(ComplexName: String; var DataSet: TfrTDataSet; out Field: TfrTField); var - n, i, j: Integer; + n: Integer; Owner, Component: TComponent; s1, s2, s3, s4: String; frDS, F:TfrObject; @@ -1078,7 +1081,7 @@ function UTF8CountWords(const str:string; out WordCount,SpcCount,SpcSize:Integer): TArrUTF8Item; var - b,i,j,n,len: Integer; + b,i,j,len: Integer; spc: boolean; begin i := 1; @@ -1115,4 +1118,81 @@ end; end; +procedure CanvasTextRectJustify(const Canvas:TCanvas; + const ARect: TRect; X1, X2, Y: integer; const Text: string; + Trimmed: boolean); +var + WordCount,SpcCount,SpcSize:Integer; + Arr: TArrUTF8Item; + PxSpc,RxSpc,Extra: Integer; + i: Integer; + Cini,Cend: Integer; + SpaceWidth, AvailWidth: Integer; + s:string; +begin + + AvailWidth := (X2-X1); + // count words + Arr := UTF8CountWords(Text, WordCount, SpcCount, SpcSize); + + // handle trimmed text + s := Text; + if (SpcCount>0) then + begin + Cini := 0; + CEnd := Length(Arr)-1; + if Trimmed then + begin + s := UTF8Trim(Text, [u8tKeepStart]); + if Arr[CEnd].Space then + begin + Dec(CEnd); + Dec(SpcCount); + end; + end; + AvailWidth := AvailWidth - Canvas.TextWidth(s); + end; + + // check if long way is needed + if (SpcCount>0) and (AvailWidth>0) then + begin + + SpaceWidth := Canvas.TextWidth(' '); + PxSpc := AvailWidth div SpcCount; + RxSpc := AvailWidth mod SpcCount; + if PxSPC=0 then + begin + PxSPC := 1; + RxSpc := 0; + end; + + for i:=CIni to CEnd do + if Arr[i].Space then + begin + X1 := X1 + Arr[i].Count * SpaceWidth; + if AvailWidth>0 then + begin + Extra := PxSpc; + if RxSpc>0 then + begin + Inc(Extra); + Dec(RxSpc); + end; + X1 := X1 + Extra; + Dec(AvailWidth, Extra); + end; + end + else + begin + s := Copy(Text, Arr[i].Index, Arr[i].Count); + Canvas.TextRect(ARect, X1, Y, s); + X1 := X1 + Canvas.TextWidth(s); + end; + + end else + Canvas.TextRect(ARect, X1, Y, s); + + SetLength(Arr, 0); +end; + end. diff -Nru lazarus-1.4.4+dfsg/components/lazreport/source/lr_view.pas lazarus-1.6+dfsg/components/lazreport/source/lr_view.pas --- lazarus-1.4.4+dfsg/components/lazreport/source/lr_view.pas 2015-02-13 21:08:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazreport/source/lr_view.pas 2015-08-30 17:38:01.000000000 +0000 @@ -438,8 +438,9 @@ begin result := false; AExt := ExtractFileExt(AFileName); - for i:=0 to frFiltersCount-1 do - if SameText(AExt, ExtractFileExt(frFilters[i].FilterExt)) then begin + for i:=0 to ExportFilters.Count - 1 do + if SameText(AExt, ExtractFileExt(ExportFilters[i].FilterExt)) then + begin FWindow.ExportToWithFilterIndex(i, AFileName); result := true; break; @@ -706,8 +707,7 @@ begin FindBtn.Visible := pbFind in TfrReport(Doc).PreviewButtons; ZoomBtn.Visible := pbZoom in TfrReport(Doc).PreviewButtons; - SaveBtn.Visible := (pbSave in TfrReport(Doc).PreviewButtons) and not - ((frFiltersCount = 0) and (roHideDefaultFilter in TfrReport(Doc).Options)); + SaveBtn.Visible := (pbSave in TfrReport(Doc).PreviewButtons) and not ((ExportFilters.Count = 0) and (roHideDefaultFilter in TfrReport(Doc).Options)); LoadBtn.Visible := pbLoad in TfrReport(Doc).PreviewButtons; PrintBtn.Visible := pbPrint in TfrReport(Doc).PreviewButtons; ExitBtn.Visible := pbExit in TfrReport(Doc).PreviewButtons; @@ -885,10 +885,10 @@ function TfrPreviewForm.ExportToWithFilterIndex(AFilterIndex: Integer; const AFileName: string):boolean; begin - if (AFilterIndex<0) or (AFilterIndex>=frFiltersCount) then + if (AFilterIndex<0) or (AFilterIndex>=ExportFilters.Count) then raise exception.Create(sExportFilterIndexError); ConnectBack; - TfrReport(Doc).ExportTo(frFilters[AFilterIndex].ClassRef, AFileName); + TfrReport(Doc).ExportTo(ExportFilters[AFilterIndex].ClassRef, AFileName); Connect(Doc); Result:=true; end; @@ -1349,12 +1349,15 @@ var i, Index, IndexOffset: Integer; FilterStr, FilterExtension, FileExtension: String; - FilterInfo: TfrExportFilterInfo; + FilterInfo: TExportFilterItem; + FExtList:TStringList; begin if EMFPages = nil then Exit; + FExtList:=TStringList.Create; Index := 1; if not (roHideDefaultFilter in TfrReport(Doc).Options) then begin + FExtList.Add('*.frp'); FilterStr := sRepFile + ' (*.frp)|*.frp'; IndexOffset := 2; end @@ -1364,30 +1367,46 @@ IndexOffset := 1; end; FileExtension := ExtractFileExt(SaveDialog.FileName); - for i := 0 to frFiltersCount - 1 do + + for i := 0 to ExportFilters.Count - 1 do begin - FilterInfo := frFilters[i]; - if FilterStr <> '' then - FilterStr := FilterStr + '|'; - FilterStr := FilterStr + FilterInfo.FilterDesc + '|' + FilterInfo.FilterExt; - FilterExtension := ExtractFileExt(FilterInfo.FilterExt); - if (Index = 1) and (Comparetext(FilterExtension, FileExtension)=0) then - Index := i + IndexOffset; + FilterInfo := ExportFilters[i]; + if FilterInfo.Enabled then + begin + FExtList.Add(FilterInfo.FilterExt); + if FilterStr <> '' then + FilterStr := FilterStr + '|'; + FilterStr := FilterStr + FilterInfo.FilterDesc + '|' + FilterInfo.FilterExt; + FilterExtension := ExtractFileExt(FilterInfo.FilterExt); + if (Index = 1) and (Comparetext(FilterExtension, FileExtension)=0) then + Index := i + IndexOffset; + end; end; + SaveDialog.Filter := FilterStr; SaveDialog.FilterIndex := Index; if SaveDialog.Execute then begin - Index := SaveDialog.FilterIndex - IndexOffset; - if Index = -1 then + FileExtension:=ExtractFileExt(SaveDialog.FileName); + if FileExtension = '' then + FileExtension:=UTF8Copy(FExtList[SaveDialog.FilterIndex - 1], 2, UTF8Length(FExtList[SaveDialog.FilterIndex - 1]) - 1); + + if FileExtension = '.frp' then SaveToFile(SaveDialog.FileName) else begin - FilterExtension := Copy(frFilters[Index].FilterExt, 2, 255); - ExportToWithFilterIndex(Index, - ChangeFileExt(SaveDialog.FileName, FilterExtension)); + for i := 0 to ExportFilters.Count - 1 do + begin + FilterInfo := ExportFilters[i]; + if FilterInfo.Enabled and (FileExtension = UTF8Copy(FilterInfo.FilterExt, 2, UTF8Length(FilterInfo.FilterExt) - 1)) then + begin + ExportToWithFilterIndex(i, ChangeFileExt(SaveDialog.FileName, FileExtension)); + break; + end; + end; end; end; + FExtList.Free; end; procedure TfrPreviewForm.PrintBtnClick(Sender: TObject); diff -Nru lazarus-1.4.4+dfsg/components/lazsvnpkg/svnclasses.pas lazarus-1.6+dfsg/components/lazsvnpkg/svnclasses.pas --- lazarus-1.4.4+dfsg/components/lazsvnpkg/svnclasses.pas 2015-02-07 12:06:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazsvnpkg/svnclasses.pas 2015-12-04 17:35:10.000000000 +0000 @@ -23,7 +23,7 @@ interface uses - Classes, SysUtils, ComCtrls, FileUtil, LCLProc, Controls, + Classes, SysUtils, ComCtrls, FileUtil, UTF8Process, LCLProc, Controls, XMLRead, DOM, Process, StdCtrls, Forms, fgl; resourcestring @@ -145,7 +145,7 @@ procedure CmdLineToMemo(CmdLine: string; Memo: TMemo); var - AProcess: TProcess; + AProcess: TProcessUTF8; BytesRead: LongInt; n: LongInt; M: TMemoryStream; @@ -167,7 +167,7 @@ end; begin - AProcess := TProcess.Create(nil); + AProcess := TProcessUTF8.Create(nil); AProcess.CommandLine := CmdLine; debugln('CmdLineToMemo commandline=', AProcess.CommandLine); AProcess.Options := AProcess.Options + [poUsePipes, poStdErrToOutput]; @@ -380,11 +380,11 @@ function ExecuteSvnReturnXml(ACommand: string): TXMLDocument; var - AProcess: TProcess; + AProcess: TProcessUTF8; M: TMemoryStream; n, BytesRead: Integer; begin - AProcess := TProcess.Create(nil); + AProcess := TProcessUTF8.Create(nil); AProcess.CommandLine := SVNExecutable + ' ' + ACommand; debugln('TSVNLogFrm.ExecuteSvnReturnXml CommandLine ' + AProcess.CommandLine); AProcess.Options := AProcess.Options + [poUsePipes, poStdErrToOutput]; diff -Nru lazarus-1.4.4+dfsg/components/lazsvnpkg/svndiffform.pas lazarus-1.6+dfsg/components/lazsvnpkg/svndiffform.pas --- lazarus-1.4.4+dfsg/components/lazsvnpkg/svndiffform.pas 2013-09-28 04:18:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazsvnpkg/svndiffform.pas 2015-07-04 23:08:00.000000000 +0000 @@ -23,7 +23,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Dialogs, + Classes, SysUtils, LazFileUtils, Forms, Dialogs, ButtonPanel, StdCtrls, Buttons, LazIDEIntf, SynEdit, SynHighlighterDiff; type diff -Nru lazarus-1.4.4+dfsg/components/lazsvnpkg/svnlogform.pas lazarus-1.6+dfsg/components/lazsvnpkg/svnlogform.pas --- lazarus-1.4.4+dfsg/components/lazsvnpkg/svnlogform.pas 2013-09-28 04:18:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazsvnpkg/svnlogform.pas 2015-07-04 23:08:00.000000000 +0000 @@ -23,8 +23,8 @@ interface uses - Classes, SysUtils, LResources, Forms, Dialogs, Controls, FileUtil, - ComCtrls, StdCtrls, ButtonPanel, ExtCtrls, Process, Spin, XMLRead, DOM, + Classes, SysUtils, Forms, Dialogs, Controls, FileUtil, LazFileUtils, + ComCtrls, StdCtrls, ButtonPanel, ExtCtrls, Spin, DOM, Menus, LCLProc, LazIDEIntf, fgl; type diff -Nru lazarus-1.4.4+dfsg/components/lazsvnpkg/svnstatusform.pas lazarus-1.6+dfsg/components/lazsvnpkg/svnstatusform.pas --- lazarus-1.4.4+dfsg/components/lazsvnpkg/svnstatusform.pas 2013-09-28 04:18:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazsvnpkg/svnstatusform.pas 2015-12-04 17:35:10.000000000 +0000 @@ -23,9 +23,14 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Dialogs, - ComCtrls, StdCtrls, ButtonPanel, ExtCtrls, LCLProc, Process, - SVNClasses, Menus, LazIDEIntf, BaseIDEIntf, LazConfigStorage; + Classes, SysUtils, Process, LCLProc, + Forms, Controls, Dialogs, ComCtrls, StdCtrls, ButtonPanel, ExtCtrls, Menus, + // LazUtils + FileUtil, LazFileUtils, LazConfigStorage, UTF8Process, + // IDEIntf + LazIDEIntf, BaseIDEIntf, + // LazSvn + SVNClasses; type { TSVNStatusFrm } @@ -168,9 +173,9 @@ procedure TSVNStatusFrm.ExecuteSvnCommand(ACommand: String; AFile: String); var - AProcess: TProcess; + AProcess: TProcessUTF8; begin - AProcess := TProcess.Create(nil); + AProcess := TProcessUTF8.Create(nil); if pos(RepositoryPath, AFile) <> 0 then AProcess.CommandLine := SVNExecutable + ' ' + ACommand + ' "' + AFile + '"' @@ -224,7 +229,7 @@ CmdLine := CmdLine + ' "' + StatusItem.Path + '"'; end; - FileName := GetTempFileName('',''); + FileName := GetTempFileNameUTF8('',''); SVNCommitMsgMemo.Lines.SaveToFile(FileName); CmdLine := CmdLine + ' --file ' + FileName; diff -Nru lazarus-1.4.4+dfsg/components/lazsvnpkg/svnupdateform.pas lazarus-1.6+dfsg/components/lazsvnpkg/svnupdateform.pas --- lazarus-1.4.4+dfsg/components/lazsvnpkg/svnupdateform.pas 2013-09-28 04:18:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazsvnpkg/svnupdateform.pas 2015-12-04 17:35:10.000000000 +0000 @@ -23,8 +23,8 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ComCtrls, ButtonPanel, Process, Buttons, Menus, LCLProc; + Classes, SysUtils, FileUtil, UTF8Process, LResources, Forms, Controls, + Graphics, Dialogs, ComCtrls, ButtonPanel, Process, Buttons, Menus, LCLProc; type @@ -170,7 +170,7 @@ procedure TSVNUpdateFrm.Execute(Data: PtrInt); var - AProcess: TProcess; + AProcess: TProcessUTF8; n: LongInt; MemStream: TMemoryStream; BytesRead: LongInt; @@ -180,7 +180,7 @@ MemStream := TMemoryStream.Create; BytesRead := 0; - AProcess := TProcess.Create(nil); + AProcess := TProcessUTF8.Create(nil); AProcess.CommandLine := SVNExecutable + ' update "' + RepositoryPath + '" --non-interactive'; debugln('TSVNUpdateFrm.Execute CommandLine ' + AProcess.CommandLine); AProcess.Options := [poUsePipes, poStdErrToOutput]; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/asiancodepagefunctions.inc lazarus-1.6+dfsg/components/lazutils/asiancodepagefunctions.inc --- lazarus-1.4.4+dfsg/components/lazutils/asiancodepagefunctions.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/asiancodepagefunctions.inc 2015-11-24 16:23:18.000000000 +0000 @@ -92,6 +92,7 @@ Result := DBCSToUTF8(s, 932); end; +{$IfNDef UseSystemCPConv} function UnicodeToCP936(Unicode: cardinal): integer; begin case Unicode of @@ -127,9 +128,68 @@ Result := CP932CU[SearchTable(Uni932U, Unicode)]; end; end; +{$endif} -function UTF8ToDBCS(const s: string; - const UTF8CharConvFunc: TUnicodeToCharID): string; +{$ifdef FPC_HAS_CPSTRING} +procedure InternalUTF8ToDBCS(const s: string; TargetCodePage: TSystemCodePage; + SetTargetCodePage: boolean; + {$IfNDef UseSystemCPConv}const UTF8CharConvFunc: TUnicodeToCharID;{$endif} + out TheResult: RawByteString); inline; +begin + {$ifdef UseSystemCPConv} + TheResult:=s; + SetCodePage(TheResult, TargetCodePage, True); + if not SetTargetCodePage then + SetCodePage(TheResult, CP_ACP, False); + {$else} + TheResult:=UTF8ToDBCS(s,UTF8CharConvFunc); + if SetTargetCodePage then + SetCodePage(TheResult, TargetCodePage, False); + {$endif} +end; + +function UTF8ToCP932(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToDBCS(s,932,SetTargetCodePage{$IfNDef UseSystemCPConv},@UnicodeToCP932{$endif},Result); +end; + +function UTF8ToCP936(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToDBCS(s,936,SetTargetCodePage{$IfNDef UseSystemCPConv},@UnicodeToCP936{$endif},Result); +end; + +function UTF8ToCP949(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToDBCS(s,949,SetTargetCodePage{$IfNDef UseSystemCPConv},@UnicodeToCP949{$endif},Result); +end; + +function UTF8ToCP950(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToDBCS(s,950,SetTargetCodePage{$IfNDef UseSystemCPConv},@UnicodeToCP950{$endif},Result); +end; +{$ELSE} +function UTF8ToCP932(const s: string): string; +begin + Result := UTF8ToDBCS(s, @UnicodeToCP932); +end; + +function UTF8ToCP936(const s: string): string; +begin + Result := UTF8ToDBCS(s, @UnicodeToCP936); +end; + +function UTF8ToCP949(const s: string): string; +begin + Result := UTF8ToDBCS(s, @UnicodeToCP949); +end; + +function UTF8ToCP950(const s: string): string; +begin + Result := UTF8ToDBCS(s, @UnicodeToCP950); +end; +{$ENDIF} + +function UTF8ToDBCS(const s: string; const UTF8CharConvFunc: TUnicodeToCharID): string; var len: integer; Src: PChar; @@ -181,23 +241,3 @@ SetLength(Result, {%H-}PtrUInt(Dest) - PtrUInt(Result)); end; -function UTF8ToCP936(const s: string): string; -begin - Result := UTF8ToDBCS(s, @UnicodeToCP936); -end; - -function UTF8ToCP950(const s: string): string; -begin - Result := UTF8ToDBCS(s, @UnicodeToCP950); -end; - -function UTF8ToCP949(const s: string): string; -begin - Result := UTF8ToDBCS(s, @UnicodeToCP949); -end; - -function UTF8ToCP932(const s: string): string; -begin - Result := UTF8ToDBCS(s, @UnicodeToCP932); -end; - diff -Nru lazarus-1.4.4+dfsg/components/lazutils/asiancodepages.inc lazarus-1.6+dfsg/components/lazutils/asiancodepages.inc --- lazarus-1.4.4+dfsg/components/lazutils/asiancodepages.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/asiancodepages.inc 2015-10-16 21:48:15.000000000 +0000 @@ -3403,6 +3403,7 @@ $F9F1,$FA0C,$FA0D,$FA0E,$FA0F,$FA11,$FA13,$FA14,$FA18,$FA1F,$FA20,$FA21,$FA23, $FA24,$FA27,$FA28,$FA29); +{$IfNDef UseSystemCPConv} const CP936CU: CP936Arr = ($81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F,$90,$91,$92,$93, $94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F,$A0,$A1,$A2,$A3,$A4,$A5,$A6, @@ -6788,6 +6789,7 @@ $FF48,$FF49,$FF4A,$FF4B,$FF4C,$FF4D,$FF4E,$FF4F,$FF50,$FF51,$FF52,$FF53,$FF54, $FF55,$FF56,$FF57,$FF58,$FF59,$FF5A,$FF5B,$FF5C,$FF5D,$FF5E,$FFE0,$FFE1,$FFE2, $FFE3,$FFE4,$FFE5); +{$endif} const CP950CC: CP950Arr = ($00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$10,$11,$12, @@ -8900,6 +8902,7 @@ $255E,$256A,$2561,$2558,$2567,$255B,$2553,$2565,$2556,$255F,$256B,$2562,$2559, $2568,$255C,$2551,$2550,$256D,$256E,$2570,$256F,$2593); +{$IfNDef UseSystemCPConv} const CP950CU: CP950Arr = ($80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F,$90,$91,$92, $93,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F,$A0,$A1,$A2,$A3,$A4,$A5, @@ -11010,6 +11013,7 @@ $FF3F,$FF41,$FF42,$FF43,$FF44,$FF45,$FF46,$FF47,$FF48,$FF49,$FF4A,$FF4B,$FF4C, $FF4D,$FF4E,$FF4F,$FF50,$FF51,$FF52,$FF53,$FF54,$FF55,$FF56,$FF57,$FF58,$FF59, $FF5A,$FF5B,$FF5C,$FF5D,$FF5E,$FFE0,$FFE1,$FFE3,$FFE5); +{$endif} const CP949CC: CP949Arr = ($00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$10,$11,$12, @@ -13667,6 +13671,7 @@ $566B,$56CD,$59EC,$5B09,$5E0C,$6199,$6198,$6231,$665E,$66E6,$7199,$71B9,$71BA, $72A7,$79A7,$7A00,$7FB2,$8A70); +{$IfNDef UseSystemCPConv} const CP949CU: CP949Arr = ($80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F,$90,$91,$92, $93,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F,$A0,$A1,$A2,$A3,$A4,$A5, @@ -16322,6 +16327,7 @@ $FF46,$FF47,$FF48,$FF49,$FF4A,$FF4B,$FF4C,$FF4D,$FF4E,$FF4F,$FF50,$FF51,$FF52, $FF53,$FF54,$FF55,$FF56,$FF57,$FF58,$FF59,$FF5A,$FF5B,$FF5C,$FF5D,$FF5E,$FFE0, $FFE1,$FFE2,$FFE3,$FFE5,$FFE6); +{$endif} const CP932CC: CP932Arr = ($00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$10,$11,$12, @@ -17547,6 +17553,7 @@ $9865,$FA2A,$FA2B,$9927,$FA2C,$999E,$9A4E,$9AD9,$9ADC,$9B75,$9B72,$9B8F,$9BB1, $9BBB,$9C00,$9D70,$9D6B,$FA2D,$9E19,$9ED1); +{$IfNDef UseSystemCPConv} const CP932CU: CP932Arr = ($80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F,$90,$91,$92, $93,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F,$A0,$E0,$E1,$E2,$E3,$E4, @@ -18770,6 +18777,7 @@ $FF8A,$FF8B,$FF8C,$FF8D,$FF8E,$FF8F,$FF90,$FF91,$FF92,$FF93,$FF94,$FF95,$FF96, $FF97,$FF98,$FF99,$FF9A,$FF9B,$FF9C,$FF9D,$FF9E,$FF9F,$FFE0,$FFE1,$FFE2,$FFE2, $FFE2,$FFE3,$FFE4,$FFE4,$FFE5); +{$endif} function SearchTable(CodePageArr: array of word; id: cardinal): word; var diff -Nru lazarus-1.4.4+dfsg/components/lazutils/dictionarystringlist.pas lazarus-1.6+dfsg/components/lazutils/dictionarystringlist.pas --- lazarus-1.4.4+dfsg/components/lazutils/dictionarystringlist.pas 2015-01-10 15:35:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/dictionarystringlist.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ -{ - ***************************************************************************** - This file is part of the Lazarus Component Library (LCL) - - See the file COPYING.modifiedLGPL.txt, included in this distribution, - for details about the license. - ***************************************************************************** - - Author: Juha Manninen / Antônio Galvão - - Abstract: - This is an unsorted StringList with a fast lookup feature. - Internally it uses a map container to store the strings again - which is then used for Contains, IndexOf and Find methods. - - The extra container does not reserve too much memory because the strings are - reference counted and not really copied. - - All Duplicates property values are fully supported, - including dupIgnore and dupError, unlike in unsorted StringList. - - This class is useful only when you must preserve the order in list, but - also need to do fast lookups to see if a string exists, or must prevent duplicates. -} -unit DictionaryStringList; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, AvgLvlTree; - -type - - { TDictionaryStringList } - - TDictionaryStringList = class(TStringList) - private - FMap: TStringMap; - protected - procedure InsertItem(Index: Integer; const S: string); override; - public - constructor Create; - destructor Destroy; override; - procedure Assign(Source: TPersistent); override; - procedure Clear; override; - procedure Delete(Index: Integer); override; - function Add(const S: string): Integer; override; - function AddObject(const S: string; AObject: TObject): Integer; override; - function Contains(const S: string): Boolean; // A new function - function Find(const S: string; out Index: Integer): Boolean; override; - function IndexOf(const S: string): Integer; override; - end; - -function Deduplicate(AStrings: TStrings; AStringsOwnsObjects: Boolean = True): Boolean; - -implementation - -{ - Removes duplicate strings (case sensitive) from AStrings. - When the AStrings owns and contains objects, the function will return false. -} -function Deduplicate(AStrings: TStrings; AStringsOwnsObjects: Boolean): Boolean; -var - i: Integer; - DSL: TDictionaryStringList; -begin - Result := False; - if AStringsOwnsObjects then - begin - for i := 0 to AStrings.Count - 1 do - if Assigned(AStrings.Objects[i]) then Exit; - end; - DSL := TDictionaryStringList.Create; - try - DSL.Assign(AStrings); - AStrings.Assign(DSL); - Result := True; - finally - DSL.Free; - end; -end; - -{ TDictionaryStringList } - -constructor TDictionaryStringList.Create; -begin - inherited Create; - FMap := TStringMap.Create(True); -end; - -destructor TDictionaryStringList.Destroy; -begin - FMap.Free; - inherited Destroy; -end; - -procedure TDictionaryStringList.Assign(Source: TPersistent); -begin - inherited Assign(Source); - if Source is TDictionaryStringList then - FMap.Assign(TDictionaryStringList(Source).FMap); -end; - -procedure TDictionaryStringList.Clear; -begin - inherited Clear; - FMap.Clear; -end; - -procedure TDictionaryStringList.Delete(Index: Integer); -var - s: String; -begin - s := Strings[Index]; - inherited Delete(Index); - // The string must not be deleted from map if there are duplicates. - // Calling IndexOf is slow but it is needed. - if (Duplicates <> dupAccept) or (inherited IndexOf(s) = -1) then - FMap.Remove(s); -end; - -function TDictionaryStringList.Add(const S: string): Integer; -begin - if not Sorted and (Duplicates = dupIgnore) and FMap.Contains(S) then - Result := -1 - else - Result := inherited Add(S); -end; - -function TDictionaryStringList.AddObject(const S: string; AObject: TObject): Integer; -begin - Result := Add(S); - if Result > -1 then - Objects[Result] := AObject; -end; - -procedure TDictionaryStringList.InsertItem(Index: Integer; const S: string); -begin - if not Sorted and (Duplicates <> dupAccept) then - if FMap.Contains(S) then - case Duplicates of - DupIgnore : Exit; - DupError : raise Exception.Create('TDictionaryStringList.InsertItem:' - +' Duplicates are not allowed.'); - end; - inherited InsertItem(Index, S); - FMap.Add(S); // Insert string to map, too. -end; - -function TDictionaryStringList.Contains(const S: string): Boolean; -begin - Result := FMap.Contains(S); -end; - -function TDictionaryStringList.Find(const S: string; out Index: Integer): Boolean; -begin - Index := IndexOf(S); - Result := Index <> -1; -end; - -function TDictionaryStringList.IndexOf(const S: string): Integer; -begin - if FMap.Contains(S) then - Result := inherited IndexOf(S) - else - Result := -1 -end; - -end. - diff -Nru lazarus-1.4.4+dfsg/components/lazutils/easylazfreetype.pas lazarus-1.6+dfsg/components/lazutils/easylazfreetype.pas --- lazarus-1.4.4+dfsg/components/lazutils/easylazfreetype.pas 2013-05-05 17:56:23.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/easylazfreetype.pas 2015-05-23 12:44:54.000000000 +0000 @@ -48,11 +48,23 @@ TFreeTypeGlyph = class; TFreeTypeFont = class; - TFontCollectionItemDestroyListener = procedure() of object; + TFontCollectionItemDestroyProc = procedure() of object; + TFontCollectionItemDestroyListener = record + TargetObject: TObject; + NotifyProc: TFontCollectionItemDestroyProc; + end; + + function FontCollectionItemDestroyListener(ATargetObject: TObject; ANotifyProc: TFontCollectionItemDestroyProc): TFontCollectionItemDestroyListener; + +type ArrayOfFontCollectionItemDestroyListener = array of TFontCollectionItemDestroyListener; + TCustomFamilyCollectionItem = class; + + { TCustomFontCollectionItem } TCustomFontCollectionItem = class protected + FFamily: TCustomFamilyCollectionItem; function GetBold: boolean; virtual; abstract; function GetInformation(AIndex: TFreeTypeInformation): string; virtual; abstract; function GetItalic: boolean; virtual; abstract; @@ -76,6 +88,7 @@ property VersionNumber: string read GetVersionNumber; property Style[AIndex: integer]: string read GetStyle; property StyleCount: integer read GetStyleCount; + property Family: TCustomFamilyCollectionItem read FFamily write FFamily; end; IFreeTypeFontEnumerator = interface @@ -127,7 +140,9 @@ procedure Clear; virtual; abstract; procedure BeginUpdate; virtual; abstract; procedure AddFolder(AFolder: string); virtual; abstract; + procedure RemoveFolder(AFolder: string); virtual; abstract; function AddFile(AFilename: string): boolean; virtual; abstract; + function RemoveFile(AFilename: string): boolean; virtual; abstract; function AddStream(AStream: TStream; AOwned: boolean): boolean; virtual; abstract; procedure EndUpdate; virtual; abstract; function FontFileEnumerator: IFreeTypeFontEnumerator; virtual; abstract; @@ -184,6 +199,8 @@ procedure DrawText(AText: string; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor; AAlign: TFreeTypeAlignments); virtual; overload; procedure DrawTextWordBreak(AText: string; AFont: TFreeTypeRenderableFont; x, y, AMaxWidth: Single; AColor: TFPColor; AAlign: TFreeTypeAlignments); procedure DrawTextRect(AText: string; AFont: TFreeTypeRenderableFont; X1,Y1,X2,Y2: Single; AColor: TFPColor; AAlign: TFreeTypeAlignments); + procedure DrawGlyph(AGlyph: integer; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor); virtual; abstract; overload; + procedure DrawGlyph(AGlyph: integer; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor; AAlign: TFreeTypeAlignments); virtual; overload; end; {********************************* Font implementation **********************************} @@ -193,6 +210,8 @@ TFreeTypeFont = class(TFreeTypeRenderableFont) private FName: String; + FFaceChanged: boolean; + FDPI: integer; FStream: TStream; FOwnedStream: boolean; FPointSize: single; @@ -203,7 +222,7 @@ FNamesArray: array of string; FCollection: TCustomFreeTypeFontCollection; function FindGlyphNode(Index: Integer): TAvgLvlTreeNode; - function GetCharIndex(AChar: integer): integer; + function GetCharIndex(AUnicodeChar: integer): integer; function GetDPI: integer; function GetFamily: string; function GetFreeTypeStyles: TFreeTypeStyles; @@ -216,7 +235,7 @@ procedure SetFreeTypeStyles(AValue: TFreeTypeStyles); procedure SetLineFullHeight(AValue: single); procedure SetStyleAsString(AValue: string); - procedure UpdateFace(const AName: String); + procedure LoadFace; procedure SetName(const AValue: String); procedure DiscardFace; procedure DiscardInstance; @@ -240,8 +259,9 @@ FInstanceCreated : boolean; FGlyphTable: TAvgLvlTree; FCharMap: TT_CharMap; - FCharmapOk: boolean; + FCharmapOk, FCharmapSymbol: boolean; FAscentValue, FDescentValue, FLineGapValue, FLargeLineGapValue, FCapHeight: single; + procedure FaceChanged; function GetClearType: boolean; override; procedure SetClearType(const AValue: boolean); override; function GetLineFullHeight: single; override; @@ -254,6 +274,7 @@ procedure OnDestroyFontItem; procedure FetchNames; function GetCollection: TCustomFreeTypeFontCollection; + function CheckFace: boolean; public Quality : TGlyphRenderQuality; SmallLinePadding: boolean; @@ -261,14 +282,17 @@ destructor Destroy; override; procedure AccessFromStream(AStream: TStream; AStreamOwner: boolean); procedure RenderText(AText: string; x,y: single; ARect: TRect; OnRender : TDirectRenderingFunction); override; + procedure RenderGlyph(AGlyph: Integer; x,y: single; ARect: TRect; OnRender : TDirectRenderingFunction); procedure SetNameAndStyle(AName: string; AStyle: string); overload; procedure SetNameAndStyle(AName: string; AStyle: TFreeTypeStyles); overload; function TextWidth(AText: string): single; override; function TextHeight(AText: string): single; override; - function CharWidthFromUnicode(AUnicode: integer): single; override; + function CharWidthFromUnicode(AUnicodeChar: integer): single; override; + function CharWidthFromGlyph(AGlyph: integer): single; function CharsWidth(AText: string): ArrayOfSingle; function CharsPosition(AText: string): ArrayOfCharPosition; overload; function CharsPosition(AText: string; AAlign: TFreeTypeAlignments): ArrayOfCharPosition; overload; + function CheckInstance: boolean; property Name: String read FName write SetName; property DPI: integer read GetDPI write SetDPI; property SizeInPoints: single read FPointSize write SetPointSize; @@ -276,7 +300,7 @@ property CapHeight: single read GetCapHeight; property Glyph[Index: integer]: TFreeTypeGlyph read GetGlyph; property GlyphCount: integer read GetGlyphCount; - property CharIndex[AChar: integer]: integer read GetCharIndex; + property CharIndex[AUnicodeChar: integer]: integer read GetCharIndex; property Hinted: boolean read FHinted write SetHinted; property WidthFactor: single read FWidthFactor write SetWidthFactor; property LineFullHeight: single read GetLineFullHeight write SetLineFullHeight; @@ -388,6 +412,22 @@ uses Math; +const + TT_PLATFORM_APPLE_UNICODE = 0; + //TT_PLATFORM_MACINTOSH = 1; + TT_PLATFORM_ISO = 2; // deprecated + TT_PLATFORM_MICROSOFT = 3; + //TT_PLATFORM_CUSTOM = 4; + //TT_PLATFORM_ADOBE = 7; // artificial + +function FontCollectionItemDestroyListener(ATargetObject: TObject; + ANotifyProc: TFontCollectionItemDestroyProc + ): TFontCollectionItemDestroyListener; +begin + result.TargetObject := ATargetObject; + result.NotifyProc := ANotifyProc; +end; + function StylesToArray(AStyles: string): ArrayOfString; var StartIndex, EndIndex: integer; @@ -655,6 +695,29 @@ DrawTextWordBreak(AText,AFont,X,Y,X2-X1,AColor,AAlign); end; +procedure TFreeTypeDrawer.DrawGlyph(AGlyph: integer; + AFont: TFreeTypeRenderableFont; x, y: single; AColor: TFPColor; + AAlign: TFreeTypeAlignments); +var f: TFreeTypeFont; +begin + if not (AFont is TFreeTypeFont) then exit; + f := TFreeTypeFont(Afont); + + if ftaTop in AAlign then + y += AFont.Ascent + else if ftaVerticalCenter in AALign then + y += AFont.Ascent - AFont.LineFullHeight*0.5 + else if ftaBottom in AAlign then + y += AFont.Ascent - AFont.LineFullHeight; + + if ftaCenter in AAlign then + x -= f.CharWidthFromGlyph(AGlyph)*0.5 + else if ftaRight in AAlign then + x -= f.CharWidthFromGlyph(AGlyph); + + DrawGlyph(AGlyph, AFont, x,y, AColor); +end; + { TFreeTypeGlyph } {$hints off} @@ -690,7 +753,7 @@ constructor TFreeTypeGlyph.Create(AFont: TFreeTypeFont; AIndex: integer); begin - if TT_New_Glyph(AFont.FFace, FGlyphData) <> TT_Err_Ok then + if not AFont.CheckFace or (TT_New_Glyph(AFont.FFace, FGlyphData) <> TT_Err_Ok) then raise Exception.Create('Cannot create empty glyph'); FLoaded := AFont.LoadGlyphInto(FGlyphData, AIndex); FIndex := AIndex; @@ -772,65 +835,63 @@ { TFreeTypeFont } -procedure TFreeTypeFont.UpdateFace(const AName: String); +procedure TFreeTypeFont.LoadFace; var errorNum: TT_Error; - PrevDPI: integer; familyItem: TCustomFamilyCollectionItem; fontItem: TCustomFontCollectionItem; begin - PrevDPI := DPI; DiscardFace; - if FStream <> nil then begin errorNum := TT_Open_Face(FStream,False,FFace); if errorNum <> TT_Err_Ok then raise exception.Create('Cannot open font (TT_Error ' + intToStr(errorNum)+') <Stream>'); end else - if (Pos(PathDelim, AName) <> 0) or (Collection = nil) or (Collection.FontFileCount = 0) then - begin - if AName = '' then exit; - - errorNum := TT_Open_Face(AName,FFace); - if errorNum <> TT_Err_Ok then - raise exception.Create('Cannot open font (TT_Error ' + intToStr(errorNum)+') "'+AName+'"'); - end else begin - familyItem := Collection.Family[AName]; - if familyItem = nil then - raise exception.Create('Font family not found'); - fontItem := familyItem.GetFont(FStyleStr); - if fontItem = nil then - raise exception.Create('Font style not found'); - FFace := fontItem.QueryFace(@OnDestroyFontItem); - FFaceItem := fontItem; + if Pos(PathDelim, FName) <> 0 then + begin + errorNum := TT_Open_Face(FName,FFace); + if errorNum <> TT_Err_Ok then + raise exception.Create('Cannot open font (TT_Error ' + intToStr(errorNum)+') "'+FName+'"'); + end else + begin + familyItem := Collection.Family[FName]; + if familyItem = nil then + raise exception.Create('Font family not found ("'+FName+'")'); + fontItem := familyItem.GetFont(FStyleStr); + if fontItem = nil then + raise exception.Create('Font style not found ("'+FStyleStr+'")'); + FFace := fontItem.QueryFace(FontCollectionItemDestroyListener(self,@OnDestroyFontItem)); + FFaceItem := fontItem; + end; end; FFaceLoaded:= true; - FName:=AName; UpdateInstance; - DPI := PrevDPI; end; procedure TFreeTypeFont.SetName(const AValue: String); begin DiscardStream; if FName=AValue then exit; - UpdateFace(AValue); + FName := AValue; + FaceChanged; end; {$hints off} function TFreeTypeFont.GetDPI: integer; var metrics: TT_Instance_Metrics; begin - if not FInstanceCreated then - result := 96 + if not CheckInstance then + begin + result := FDPI; + end else begin if TT_Get_Instance_Metrics(FInstance,metrics) = TT_Err_Ok then result := metrics.y_resolution else - result := 96; + result := FDPI; end; end; {$hints on} @@ -868,11 +929,13 @@ function TFreeTypeFont.GetAscent: single; begin + CheckInstance; result := FAscentValue*SizeInPixels; end; function TFreeTypeFont.GetCapHeight: single; begin + CheckInstance; result := FCapHeight*SizeInPixels; end; @@ -881,16 +944,27 @@ Result:= FClearType; end; -function TFreeTypeFont.GetCharIndex(AChar: integer): integer; +function TFreeTypeFont.GetCharIndex(AUnicodeChar: integer): integer; begin + if not CheckInstance then + begin + result := 0; + exit; + end; if FCharmapOk then - result := TT_Char_Index(FCharMap, AChar) + begin + if FCharmapSymbol then + result := TT_Char_Index(FCharMap, AUnicodeChar or $F000) + else + result := TT_Char_Index(FCharMap, AUnicodeChar); + end else - result := AChar; + result := 0; end; function TFreeTypeFont.GetDescent: single; begin + CheckInstance; result := FDescentValue*SizeInPixels; end; @@ -898,7 +972,7 @@ var node: TAvgLvlTreeNode; lGlyph: TFreeTypeGlyph; begin - if not FInstanceCreated then + if not CheckInstance then begin result := nil; exit; @@ -917,7 +991,7 @@ function TFreeTypeFont.GetGlyphCount: integer; var prop : TT_Face_Properties; begin - if not FFaceLoaded then + if not CheckFace then result := 0 else begin @@ -941,11 +1015,13 @@ function TFreeTypeFont.GetLineFullHeight: single; begin + CheckInstance; result := (FAscentValue + FDescentValue)*SizeInPixels + GetLineSpacing; end; function TFreeTypeFont.GetLineSpacing: single; begin + CheckInstance; if not SmallLinePadding then result := FLargeLineGapValue*SizeInPixels else @@ -955,6 +1031,7 @@ procedure TFreeTypeFont.OnDestroyFontItem; begin DiscardFace; + FaceChanged; end; function TFreeTypeFont.GetPixelSize: single; @@ -986,6 +1063,8 @@ procedure TFreeTypeFont.SetDPI(const AValue: integer); begin + if FDPI = AValue then exit; + FDPI := AValue; if FInstanceCreated then begin TT_Set_Instance_Resolutions(FInstance, AValue,AValue); @@ -1017,6 +1096,7 @@ procedure TFreeTypeFont.SetLineFullHeight(AValue: single); var Ratio: single; begin + CheckInstance; Ratio := FAscentValue + FDescentValue; if not SmallLinePadding then Ratio += FLargeLineGapValue @@ -1033,7 +1113,7 @@ AValue := Trim(AValue); if FStyleStr=AValue then Exit; FStyleStr:=AValue; - UpdateFace(FName); + FaceChanged; end; procedure TFreeTypeFont.DiscardFace; @@ -1043,7 +1123,7 @@ DiscardInstance; if FFaceItem <> nil then begin - FFaceItem.ReleaseFace(@OnDestroyFontItem); + FFaceItem.ReleaseFace(FontCollectionItemDestroyListener(self,@OnDestroyFontItem)); FFaceItem := nil; end else @@ -1077,8 +1157,7 @@ procedure TFreeTypeFont.SetPixelSize(const AValue: single); begin - if FInstanceCreated then - SizeInPoints := AValue*72/DPI; + SizeInPoints := AValue*72/DPI; end; procedure TFreeTypeFont.SetPointSize(AValue: single); @@ -1086,14 +1165,13 @@ if AValue < FreeTypeMinPointSize then AValue := FreeTypeMinPointSize; if FPointSize=AValue then exit; FPointSize:=AValue; - if FInstanceCreated then - UpdateSizeInPoints; + UpdateSizeInPoints; end; function TFreeTypeFont.LoadGlyphInto(_glyph: TT_Glyph; glyph_index: Word): boolean; var flags: integer; begin - if not FInstanceCreated then + if not CheckInstance then raise Exception.Create('No font instance'); flags := TT_Load_Scale_Glyph; if FHinted then flags := flags or TT_Load_Hint_Glyph; @@ -1105,8 +1183,7 @@ if FWidthFactor=AValue then exit; FWidthFactor:=AValue; FGlyphTable.FreeAndClear; - if FInstanceCreated then - UpdateSizeInPoints; + UpdateSizeInPoints; end; procedure TFreeTypeFont.UpdateInstance; @@ -1119,6 +1196,8 @@ if errorNum = TT_Err_Ok then begin FInstanceCreated := true; + TT_Set_Instance_Resolutions(FInstance, FDPI,FDPI); + UpdateSizeInPoints; UpdateMetrics; UpdateCharmap; end else @@ -1144,7 +1223,7 @@ procedure TFreeTypeFont.UpdateMetrics; var prop: TT_Face_Properties; begin - if FFaceLoaded then + if CheckFace then begin TT_Get_Face_Properties(FFace,prop); FAscentValue := prop.horizontal^.ascender; @@ -1193,12 +1272,13 @@ FAscentValue := -0.5; FDescentValue := 0.5; FLineGapValue := 0; + FLargeLineGapValue:= 0; end; end; procedure TFreeTypeFont.UpdateCharmap; var i,n: integer; - platform,encoding: integer; + lPlatform,encoding: integer; begin if FCharmapOk then exit; if not FFaceLoaded then @@ -1208,29 +1288,41 @@ end; n := TT_Get_CharMap_Count(FFace); - platform := 0; + lPlatform := -1; encoding := 0; + FCharmapSymbol := false; //MS Unicode for i := 0 to n-1 do begin - if TT_Get_CharMap_ID(FFace, i, platform, encoding) = TT_Err_Ok then + if TT_Get_CharMap_ID(FFace, i, lPlatform, encoding) = TT_Err_Ok then begin - if (platform = 3) and (encoding = 1) then + if (lPlatform = TT_PLATFORM_MICROSOFT) and (encoding = 1) then + begin + if TT_Get_CharMap(FFace, i, FCharMap) = TT_Err_Ok then + begin + FCharmapOk := true; + exit; + end + end else + if (lPlatform = TT_PLATFORM_MICROSOFT) and (encoding = 0) then + begin if TT_Get_CharMap(FFace, i, FCharMap) = TT_Err_Ok then begin FCharmapOk := true; + FCharmapSymbol:= true; exit; end; + end; end; end; //Apple Unicode for i := 0 to n-1 do begin - if TT_Get_CharMap_ID(FFace, i, platform, encoding) = TT_Err_Ok then + if TT_Get_CharMap_ID(FFace, i, lPlatform, encoding) = TT_Err_Ok then begin - if (platform = 0) then + if (lPlatform = TT_PLATFORM_APPLE_UNICODE) then if TT_Get_CharMap(FFace, i, FCharMap) = TT_Err_Ok then begin FCharmapOk := true; @@ -1242,9 +1334,9 @@ //ISO Unicode for i := 0 to n-1 do begin - if TT_Get_CharMap_ID(FFace, i, platform, encoding) = TT_Err_Ok then + if TT_Get_CharMap_ID(FFace, i, lPlatform, encoding) = TT_Err_Ok then begin - if (platform = 2) and (encoding = 1) then + if (lPlatform = TT_PLATFORM_ISO) and (encoding = 1) then if TT_Get_CharMap(FFace, i, FCharMap) = TT_Err_Ok then begin FCharmapOk := true; @@ -1314,6 +1406,15 @@ end; end; +procedure TFreeTypeFont.FaceChanged; +begin + if not FFaceChanged then + begin + FFaceChanged := true; + DiscardFace; + end; +end; + constructor TFreeTypeFont.Create; begin EnsureFreeTypeInitialized; @@ -1322,6 +1423,7 @@ FInstanceCreated := false; FCharmapOk := false; FPointSize := 10; + FDPI := 96; FGlyphTable := TAvgLvlTree.Create; FHinted := true; FWidthFactor := 1; @@ -1329,8 +1431,7 @@ FStyleStr:= 'Regular'; SmallLinePadding:= true; Quality := grqHighQuality; - - UpdateFace(''); + FFaceChanged := true; end; destructor TFreeTypeFont.Destroy; @@ -1347,7 +1448,7 @@ DiscardStream; FStream := AStream; FOwnedStream:= AStreamOwner; - UpdateFace(''); + FaceChanged; end; procedure TFreeTypeFont.RenderText(AText: string; x, y: single; ARect: TRect; @@ -1358,7 +1459,7 @@ idx: integer; g: TFreeTypeGlyph; begin - if not FInstanceCreated then exit; + if not CheckInstance then exit; if AText = '' then exit; idx := pos(LineEnding,AText); while idx <> 0 do @@ -1394,13 +1495,30 @@ end; end; -procedure TFreeTypeFont.SetNameAndStyle(AName: String; AStyle: string); +procedure TFreeTypeFont.RenderGlyph(AGlyph: Integer; x, y: single; + ARect: TRect; OnRender: TDirectRenderingFunction); +var + g: TFreeTypeGlyph; +begin + if not CheckInstance then exit; + g := Glyph[AGlyph]; + if g <> nil then + with g do + begin + if Hinted then + RenderDirectly(x,round(y),ARect,OnRender,quality,FClearType) + else + RenderDirectly(x,y,ARect,OnRender,quality,FClearType); + end; +end; + +procedure TFreeTypeFont.SetNameAndStyle(AName: string; AStyle: string); begin AStyle := Trim(AStyle); if (AName = FName) and (AStyle = FStyleStr) then exit; FName := AName; FStyleStr := AStyle; - UpdateFace(FName); + FaceChanged; end; procedure TFreeTypeFont.SetNameAndStyle(AName: string; AStyle: TFreeTypeStyles); @@ -1421,7 +1539,7 @@ g: TFreeTypeGlyph; begin result := 0; - if not FInstanceCreated then exit; + if not CheckInstance then exit; if AText = '' then exit; maxWidth := 0; @@ -1480,10 +1598,20 @@ end; end; -function TFreeTypeFont.CharWidthFromUnicode(AUnicode: integer): single; +function TFreeTypeFont.CharWidthFromUnicode(AUnicodeChar: integer): single; +var g: TFreeTypeGlyph; +begin + g := Glyph[CharIndex[AUnicodeChar]]; + if g = nil then result := 0 + else + result := g.Advance; + if FClearType then result /= 3; +end; + +function TFreeTypeFont.CharWidthFromGlyph(AGlyph: integer): single; var g: TFreeTypeGlyph; begin - g := Glyph[CharIndex[AUnicode]]; + g := Glyph[AGlyph]; if g = nil then result := 0 else result := g.Advance; @@ -1560,7 +1688,7 @@ g: TFreeTypeGlyph; begin result := nil; - if not FInstanceCreated then exit; + if not CheckInstance then exit; if AText = '' then exit; StrLineEnding := LineEnding; pstr := @AText[1]; @@ -1683,7 +1811,7 @@ begin setlength(FNamesArray, maxNameIndex+1); - if FFaceLoaded then + if CheckFace then begin for i := 0 to TT_Get_Name_Count(FFace)-1 do begin @@ -1693,12 +1821,12 @@ if (nrNameID < 0) or (nrNameID > maxNameIndex) then continue; { check for Microsoft, Unicode, English } - if ((nrPlatformID=3) and (nrEncodingID=1) and + if ((nrPlatformID=TT_PLATFORM_MICROSOFT) and (nrEncodingID in[0,1]) and ((nrLanguageID=$0409) or (nrLanguageID=$0809) or (nrLanguageID=$0c09) or (nrLanguageID=$1009) or (nrLanguageID=$1409) or (nrLanguageID=$1809))) or { or for Unicode, English } - ((nrPlatformID=0) and + ((nrPlatformID=TT_PLATFORM_APPLE_UNICODE) and (nrLanguageID=0)) then begin value := TT_Get_Name_String(FFace, i); @@ -1725,6 +1853,21 @@ result := FCollection; end; +function TFreeTypeFont.CheckFace: boolean; +begin + if FFaceChanged then + begin + FFaceChanged:= false; + LoadFace; + end; + result := FFaceLoaded; +end; + +function TFreeTypeFont.CheckInstance: boolean; +begin + result := CheckFace and FInstanceCreated; +end; + { TFreeTypeGrayscaleMap } procedure TFreeTypeGrayscaleMap.Init(AWidth, AHeight: integer); diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/main.lfm lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/main.lfm --- lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/main.lfm 2013-04-22 09:05:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/main.lfm 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -object Form1: TForm1 - Left = 291 - Height = 353 - Top = 215 - Width = 535 - BorderStyle = bsSingle - Caption = 'TDictionaryStringList Demo' - ClientHeight = 353 - ClientWidth = 535 - OnCreate = FormCreate - OnDestroy = FormDestroy - OnShow = FormShow - Position = poScreenCenter - LCLVersion = '1.1' - object btnDedupeMemo: TButton - Left = 346 - Height = 25 - Top = 8 - Width = 183 - Anchors = [akTop, akRight] - Caption = 'Dedupe Memo' - OnClick = btnDedupeMemoClick - TabOrder = 0 - end - object Memo: TMemo - Left = 0 - Height = 281 - Top = 72 - Width = 535 - Align = alBottom - ScrollBars = ssAutoBoth - TabOrder = 1 - end - object lblTime: TLabel - Left = 16 - Height = 15 - Top = 48 - Width = 33 - Caption = 'Time:' - ParentColor = False - end - object lblLines: TLabel - Left = 130 - Height = 15 - Top = 48 - Width = 107 - Caption = 'Duplicated Lines:' - ParentColor = False - end - object SpinEdit1: TSpinEdit - Left = 8 - Height = 23 - Top = 8 - Width = 94 - Increment = 1000 - MaxValue = 1000000000 - TabOrder = 2 - end - object btnGenerate: TButton - Left = 112 - Height = 25 - Top = 8 - Width = 125 - Caption = 'Generate Data' - OnClick = btnGenerateClick - TabOrder = 3 - end - object btnDedupeFile: TButton - AnchorSideLeft.Control = btnDedupeMemo - AnchorSideRight.Control = btnDedupeMemo - AnchorSideRight.Side = asrBottom - Left = 346 - Height = 25 - Top = 38 - Width = 183 - Anchors = [akTop, akLeft, akRight] - Caption = 'Create File and Dedupe it' - OnClick = btnDedupeFileClick - TabOrder = 4 - end -end diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/main.pas lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/main.pas --- lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/main.pas 2013-04-22 09:05:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/main.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,149 +0,0 @@ -unit Main; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - Spin, DictionaryStringList, Math; - -type - - { TForm1 } - - TForm1 = class(TForm) - btnDedupeMemo: TButton; - btnDedupeFile: TButton; - btnGenerate: TButton; - lblLines: TLabel; - lblTime: TLabel; - Memo: TMemo; - SpinEdit1: TSpinEdit; - procedure btnDedupeFileClick(Sender: TObject); - procedure btnGenerateClick(Sender: TObject); - procedure btnDedupeMemoClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure FormShow(Sender: TObject); - private - inList :TStringList; - procedure UpdateDuplicates(aDuplicateCount: string); - procedure UpdateTime(aTime: TDateTime); - public - - end; - -var - Form1: TForm1; - -implementation - -{$R *.lfm} - -{ TForm1 } - -procedure TForm1.UpdateDuplicates(aDuplicateCount: string); -begin - lblLines.Caption := 'Duplicated Lines: ' + aDuplicateCount; -end; - -procedure TForm1.UpdateTime(aTime: TDateTime); -begin - lblTime.Caption := 'Time: ' + TimeToStr(aTime); -end; - -procedure TForm1.btnGenerateClick(Sender: TObject); -var - i, j: Integer; - s :string; -begin - UpdateDuplicates('?'); - UpdateTime(0); - Memo.Clear; - Application.ProcessMessages; - Screen.Cursor := crHourGlass; - try - InList.Clear; - for i := 0 to SpinEdit1.Value - 1 do - begin - s := ''; - for j := 0 to 5 do - s := s + chr(randomrange(97, 123)); - InList.Add(s); - end; - Memo.Lines.Assign(inList); - finally - Screen.Cursor := crDefault; - end; -end; - -procedure TForm1.btnDedupeMemoClick(Sender: TObject); -var - DSL :TDictionaryStringList; - T :TDateTime; -begin - Screen.Cursor := crHourGlass; - try - T := Now; - DSL := TDictionaryStringList.Create; - try - DSL.Assign(Memo.Lines); - UpdateDuplicates(IntToStr(Memo.Lines.Count - DSL.Count)); - Memo.Lines.Assign(DSL); - finally - DSL.Free; - end; - UpdateTime(Now - T); - finally - Screen.Cursor := crDefault; - end; -end; - -procedure TForm1.btnDedupeFileClick(Sender: TObject); -var - T :TDateTime; - N :integer; - DSL :TDictionaryStringList; -begin - lblTime.Caption := 'Time:'; - lblLines.Caption := 'Duplicated lines:'; - Application.ProcessMessages; - ShowMessage('Generating data. Please wait.'); - SpinEdit1.Value := 1000000; - btnGenerateClick(nil); - ShowMessage('Saving it to a file. Please wait.'); - Memo.Lines.SaveToFile('temp.txt'); - ShowMessage('Dedupping the file.'); - T := Now; - N := Memo.Lines.Count; - DSL := TDictionaryStringList.Create; - try - DSL.LoadFromFile('temp.txt'); - lblLines.Caption := 'Duplicated Lines: ' + IntToStr(N - DSL.Count); - DSL.SaveToFile('temp.txt'); - lblTime.Caption := 'Time: ' + TimeToStr(Now - T); - ShowMessage('Deleting the file.'); - DeleteFile('temp.txt'); - finally - DSL.Free; - end; -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - inList := TStringList.Create; - Randomize; -end; - -procedure TForm1.FormDestroy(Sender: TObject); -begin - inList.Free; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - spinedit1.Value := 1000000; -end; - -end. diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/ReadMe.txt lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/ReadMe.txt --- lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/ReadMe.txt 2013-04-21 21:49:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/ReadMe.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -Demonstrate how TDictionaryStringList can quicly remove duplicates from a list. - -Author: Antônio Galvão diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpi lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpi --- lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpi 2013-04-21 21:49:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpi 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -<?xml version="1.0"?> -<CONFIG> - <ProjectOptions> - <Version Value="9"/> - <PathDelim Value="\"/> - <General> - <SessionStorage Value="InProjectDir"/> - <MainUnit Value="0"/> - <Title Value="TDictionaryStringListDemo"/> - <ResourceType Value="res"/> - <UseXPManifest Value="True"/> - </General> - <i18n> - <EnableI18N LFM="False"/> - </i18n> - <VersionInfo> - <StringTable ProductVersion=""/> - </VersionInfo> - <BuildModes Count="1"> - <Item1 Name="Default" Default="True"/> - </BuildModes> - <PublishOptions> - <Version Value="2"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> - </PublishOptions> - <RunParams> - <local> - <FormatVersion Value="1"/> - </local> - </RunParams> - <RequiredPackages Count="1"> - <Item1> - <PackageName Value="LCL"/> - </Item1> - </RequiredPackages> - <Units Count="2"> - <Unit0> - <Filename Value="TDictionaryStringListDemo.lpr"/> - <IsPartOfProject Value="True"/> - <UnitName Value="TDictionaryStringListDemo"/> - </Unit0> - <Unit1> - <Filename Value="main.pas"/> - <IsPartOfProject Value="True"/> - <ComponentName Value="Form1"/> - <HasResources Value="True"/> - <ResourceBaseClass Value="Form"/> - <UnitName Value="Main"/> - </Unit1> - </Units> - </ProjectOptions> - <CompilerOptions> - <Version Value="11"/> - <PathDelim Value="\"/> - <Target> - <Filename Value="TDictionaryStringListDemo"/> - </Target> - <SearchPaths> - <IncludeFiles Value="$(ProjOutDir)"/> - <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> - </SearchPaths> - <Linking> - <Options> - <Win32> - <GraphicApplication Value="True"/> - </Win32> - </Options> - </Linking> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> - </CompilerOptions> - <Debugging> - <Exceptions Count="3"> - <Item1> - <Name Value="EAbort"/> - </Item1> - <Item2> - <Name Value="ECodetoolError"/> - </Item2> - <Item3> - <Name Value="EFOpenError"/> - </Item3> - </Exceptions> - </Debugging> -</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpr lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpr --- lazarus-1.4.4+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpr 2013-04-21 21:49:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/DictionaryStringList/TDictionaryStringListDemo.lpr 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -program TDictionaryStringListDemo; - -{$mode objfpc}{$H+} - -uses - {$IFDEF UNIX}{$IFDEF UseCThreads} - cthreads, - {$ENDIF}{$ENDIF} - Interfaces, // this includes the LCL widgetset - Forms, Main; - -{$R *.res} - -begin - RequireDerivedFormResource := True; - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. - diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/main.lfm lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/main.lfm --- lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/main.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/main.lfm 2015-07-07 12:05:03.000000000 +0000 @@ -0,0 +1,90 @@ +object Form1: TForm1 + Left = 353 + Height = 353 + Top = 194 + Width = 535 + BorderStyle = bsSingle + Caption = 'TLookupStringList Demo' + ClientHeight = 353 + ClientWidth = 535 + OnCreate = FormCreate + OnDestroy = FormDestroy + OnShow = FormShow + Position = poScreenCenter + LCLVersion = '1.5' + object btnDedupeMemo: TButton + Left = 346 + Height = 25 + Top = 72 + Width = 183 + Anchors = [akTop, akRight] + Caption = 'Dedupe Memo' + OnClick = btnDedupeMemoClick + TabOrder = 0 + end + object Memo: TMemo + Left = 0 + Height = 281 + Top = 72 + Width = 336 + ScrollBars = ssAutoBoth + TabOrder = 1 + end + object lblTime: TLabel + Left = 16 + Height = 17 + Top = 48 + Width = 32 + Caption = 'Time:' + ParentColor = False + end + object lblLines: TLabel + Left = 130 + Height = 17 + Top = 48 + Width = 98 + Caption = 'Duplicated Lines:' + ParentColor = False + end + object SpinEdit1: TSpinEdit + Left = 8 + Height = 23 + Top = 8 + Width = 94 + Increment = 1000 + MaxValue = 1000000000 + TabOrder = 2 + end + object btnGenerate: TButton + Left = 112 + Height = 25 + Top = 8 + Width = 125 + Caption = 'Generate Data' + OnClick = btnGenerateClick + TabOrder = 3 + end + object btnDedupeFile: TButton + AnchorSideLeft.Control = btnDedupeMemo + AnchorSideRight.Control = btnDedupeMemo + AnchorSideRight.Side = asrBottom + Left = 346 + Height = 32 + Top = 232 + Width = 183 + Anchors = [akTop, akLeft, akRight] + Caption = 'Create File and Dedupe it' + OnClick = btnDedupeFileClick + TabOrder = 4 + end + object Label1: TLabel + Left = 346 + Height = 64 + Top = 168 + Width = 182 + AutoSize = False + Caption = 'Deduplicating from a file is very much faster than using a GUI control. Use the button below to see the whole process.' + ParentColor = False + WordWrap = True + end +end diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/main.pas lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/main.pas --- lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/main.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/main.pas 2015-07-07 12:05:03.000000000 +0000 @@ -0,0 +1,154 @@ +unit Main; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Math, Forms, Controls, Dialogs, StdCtrls, Spin, + LookupStringList; + +type + + { TForm1 } + + TForm1 = class(TForm) + btnDedupeMemo: TButton; + btnDedupeFile: TButton; + btnGenerate: TButton; + Label1 :TLabel; + lblLines: TLabel; + lblTime: TLabel; + Memo: TMemo; + SpinEdit1: TSpinEdit; + procedure btnDedupeFileClick(Sender: TObject); + procedure btnGenerateClick(Sender: TObject); + procedure btnDedupeMemoClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure FormShow(Sender: TObject); + private + inList :TStringList; + procedure UpdateDuplicates(aDuplicateCount: string); + procedure UpdateTime(aTime: TDateTime); + public + + end; + +var + Form1: TForm1; + +implementation + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.UpdateDuplicates(aDuplicateCount: string); +begin + lblLines.Caption := 'Duplicated Lines: ' + aDuplicateCount; +end; + +procedure TForm1.UpdateTime(aTime: TDateTime); +begin + lblTime.Caption := 'Time: ' + TimeToStr(aTime); +end; + +procedure TForm1.btnGenerateClick(Sender: TObject); +var + i, j: Integer; + s :string; +begin + UpdateDuplicates('?'); + UpdateTime(0); + Memo.Clear; + Application.ProcessMessages; + Screen.Cursor := crHourGlass; + try + InList.Clear; + for i := 0 to SpinEdit1.Value - 1 do + begin + s := ''; + for j := 0 to 5 do + s := s + chr(randomrange(97, 123)); + InList.Add(s); + end; + Memo.Lines.Assign(inList); + finally + Screen.Cursor := crDefault; + end; +end; + +procedure TForm1.btnDedupeMemoClick(Sender: TObject); +var + DSL :TLookupStringList; + T :TDateTime; +begin + Screen.Cursor := crHourGlass; + try + T := Now; + DSL := TLookupStringList.Create; + try + DSL.Assign(Memo.Lines); + UpdateDuplicates(IntToStr(Memo.Lines.Count - DSL.Count)); + Memo.Lines.Assign(DSL); + finally + DSL.Free; + end; + UpdateTime(Now - T); + finally + Screen.Cursor := crDefault; + end; +end; + +procedure TForm1.btnDedupeFileClick(Sender: TObject); +var + T :TDateTime; + N :integer; + DSL :TLookupStringList; +begin + lblTime.Caption := 'Time:'; + lblLines.Caption := 'Duplicated lines:'; + Application.ProcessMessages; + + if Trim(Memo.Text) = '' then + begin + ShowMessage('Generating data. Please wait.'); + btnGenerateClick(nil); + end; + + ShowMessage('Saving memo to a file. Please wait.'); + Memo.Lines.SaveToFile('temp.txt'); + ShowMessage('Dedupping the file.'); + T := Now; + N := Memo.Lines.Count; + DSL := TLookupStringList.Create; + try + DSL.LoadFromFile('temp.txt'); + lblLines.Caption := 'Duplicated Lines: ' + IntToStr(N - DSL.Count); + DSL.SaveToFile('temp.txt'); + lblTime.Caption := 'Time: ' + TimeToStr(Now - T); + ShowMessage('Deleting the file.'); + DeleteFile('temp.txt'); + finally + DSL.Free; + end; +end; + +procedure TForm1.FormCreate(Sender: TObject); +begin + inList := TStringList.Create; + Randomize; +end; + +procedure TForm1.FormDestroy(Sender: TObject); +begin + inList.Free; +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + spinedit1.Value := 100000; +end; + +end. diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/ReadMe.txt lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/ReadMe.txt --- lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/ReadMe.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/ReadMe.txt 2015-07-07 12:05:03.000000000 +0000 @@ -0,0 +1,3 @@ +Demonstrate how TLookupStringList can quickly remove duplicates from a list without changing the order. + +Author: Antônio Galvão diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpi lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpi --- lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpi 2015-07-07 12:05:03.000000000 +0000 @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <PathDelim Value="\"/> + <General> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="TDedupeDemo"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> + <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="TDedupeDemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="main.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Main"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="TDedupeDemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpr lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpr --- lazarus-1.4.4+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/examples/LookupStringList/TDedupeDemo.lpr 2015-07-07 12:05:03.000000000 +0000 @@ -0,0 +1,20 @@ +program TDedupeDemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, Main; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazutils/fileutil.inc lazarus-1.6+dfsg/components/lazutils/fileutil.inc --- lazarus-1.4.4+dfsg/components/lazutils/fileutil.inc 2015-04-25 18:44:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/fileutil.inc 2015-12-28 22:21:41.000000000 +0000 @@ -11,7 +11,7 @@ ***************************************************************************** } - +{$IFnDEF DisableWrapperFunctions} function NeedRTLAnsi: boolean; begin Result := LazUtf8.NeedRTLAnsi; @@ -22,7 +22,6 @@ LazUtf8.SetNeedRTLAnsi(NewValue); end; - function UTF8ToSys(const s: string): string; begin Result := LazUtf8.UTF8ToSys(s); @@ -58,14 +57,24 @@ Result := LazUtf8.GetEnvironmentVariableUTF8(EnvVar); end; -function FileGetAttrUTF8(const FileName: String): Longint; +function SysErrorMessageUTF8(ErrorCode: Integer): String; begin - Result := LazFileUtils.FileGetAttrUtf8(FileName); + Result := LazUtf8.SysErrorMessageUTF8(ErrorCode); end; -function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; +function GetAppConfigDirUTF8(Global: Boolean; Create: boolean = false): string; begin - Result := LazFileUtils.FileSetAttrUtf8(Filename, Attr); + Result := LazFileUtils.GetAppConfigDirUTF8(Global, Create); +end; + +function GetAppConfigFileUTF8(Global: Boolean; SubDir: boolean; CreateDir: boolean): string; +begin + Result := LazFileUtils.GetAppConfigFileUTF8(Global, SubDir, CreateDir); +end; + +function ExtractFileNameOnly(const AFilename: string): string; +begin + Result := LazFileUtils.ExtractFileNameOnly(AFilename); end; function FileExistsUTF8(const Filename: string): boolean; @@ -73,14 +82,29 @@ Result := LazFileUtils.FileExistsUTF8(FileName); end; +function FileAgeUTF8(const FileName: string): Longint; +begin + Result := LazFileUtils.FileAgeUTF8(FileName); +end; + function DirectoryExistsUTF8(const Directory: string): Boolean; inline; begin Result := LazFileUtils.DirectoryExistsUTF8(Directory); end; -function FileAgeUTF8(const FileName: string): Longint; +function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; begin - Result := LazFileUtils.FileAgeUTF8(FileName); + Result := LazFileUtils.FindFirstUtf8(Path, Attr, Rslt); +end; + +function FindNextUTF8(var Rslt: TSearchRec): Longint; +begin + Result := LazFileUtils.FindNextUTF8(Rslt); +end; + +procedure FindCloseUTF8(var F: TSearchrec); +begin + LazFileUtils.FindCloseUtf8(F); end; function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; @@ -88,44 +112,60 @@ Result := LazFileUtils.FileSetDateUTF8(FileName, Age); end; -function FileSize(const Filename: string): int64; +function FileGetAttrUTF8(const FileName: String): Longint; begin - Result := LazFileUtils.FileSizeUtf8(FileName); + Result := LazFileUtils.FileGetAttrUtf8(FileName); end; -function GetFileDescription(const AFilename: string): string; +function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; begin - Result := LazFileUtils.GetFileDescription(AFilename); + Result := LazFileUtils.FileSetAttrUtf8(Filename, Attr); end; -{$IFDEF darwin} -function GetDarwinSystemFilename(Filename: string): string; +function DeleteFileUTF8(const FileName: String): Boolean; begin - Result := LazFileUtils.GetDarwinSystemFilename(Filename); + Result := LazFileUtils.DeleteFileUtf8(FileName); end; -{$ENDIF} -function ExpandFileNameUTF8(const FileName: string): string; +function RenameFileUTF8(const OldName, NewName: String): Boolean; begin - Result := LazFileUtils.ExpandFileNameUtf8(Filename); + Result := LazFileUtils.RenameFileUtf8(OldName, NewName); end; -// ToDo: For ExpandUNCFileNameUTF8 -// -// Don't convert to and from Sys, because this RTL routines -// simply work in simple string operations, without calling native -// APIs which would really require Ansi -// -// The Ansi conversion just ruins Unicode strings -// -// See bug http://bugs.freepascal.org/view.php?id=20229 -// It needs fixing like we did for LazFileUtils.ExpandFileNameUtf8(Filename) on Windows +function FileSearchUTF8(const Name, DirList: String; ImplicitCurrentDir : Boolean = True): String; +begin + Result := LazFileUtils.FileSearchUTF8(Name, DirList, ImplicitCurrentDir); +end; -function ExpandUNCFileNameUTF8(const FileName: string): string; +function FileIsReadOnlyUTF8(const FileName: String): Boolean; begin - Result:=SysUtils.ExpandUNCFileName(Filename); + Result := LazFileUtils.FileIsReadOnlyUTF8(FileName); +end; + +function GetCurrentDirUTF8: String; +begin + Result := LazFileUtils.GetCurrentDirUtf8(); +end; + +function SetCurrentDirUTF8(const NewDir: String): Boolean; +begin + Result := LazFileUtils.SetCurrentDirUtf8(NewDir); +end; + +function CreateDirUTF8(const NewDir: String): Boolean; +begin + Result := LazFileUtils.CreateDirUtf8(NewDir); +end; + +function RemoveDirUTF8(const Dir: String): Boolean; +begin + Result := LazFileUtils.RemoveDirUtf8(Dir); end; +function ForceDirectoriesUTF8(const Dir: string): Boolean; +begin + Result := LazFileUtils.ForceDirectoriesUTF8(Dir); +end; function FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle; begin @@ -137,72 +177,129 @@ Result := LazFileUtils.FileCreateUtf8(FileName); end; +function GetTempFilename(const Directory, Prefix: string): string; +begin + Result := LazFileUtils.GetTempFileNameUTF8(Directory, Prefix); +end; + function FileCreateUTF8(Const FileName : string; Rights: Cardinal) : THandle; begin Result := LazFileUtils.FileCreateUtf8(FileName, Rights); end; -function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; +function CleanAndExpandFilename(const Filename: string): string; begin - Result := LazFileUtils.FindFirstUtf8(Path, Attr, Rslt); + Result := LazFileutils.CleanAndExpandFilename(FileName); end; -function FindNextUTF8(var Rslt: TSearchRec): Longint; +function CleanAndExpandDirectory(const Filename: string): string; begin - Result := LazFileUtils.FindNextUTF8(Rslt); + Result := LazFileUtils.CleanAndExpandDirectory(FileName); end; -procedure FindCloseUTF8(var F: TSearchrec); +function ExpandFileNameUTF8(const FileName: string): string; begin - LazFileUtils.FindCloseUtf8(F); + Result := LazFileUtils.ExpandFileNameUTF8(Filename); end; -function DeleteFileUTF8(const FileName: String): Boolean; +function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; begin - Result := LazFileUtils.DeleteFileUtf8(FileName); + Result := LazFileUtils.CompareFileExt(Filename, Ext, CaseSensitive); end; -function RenameFileUTF8(const OldName, NewName: String): Boolean; +function CompareFileExt(const Filename, Ext: string): integer; begin - Result := LazFileUtils.RenameFileUtf8(OldName, NewName); + Result := LazFileUtils.CompareFileExt(Filename, Ext); end; -function GetCurrentDirUTF8: String; +function CompareFilenames(const Filename1, Filename2: string): integer; begin - Result := LazFileUtils.GetCurrentDirUtf8(); + Result := LazFileUtils.CompareFilenames(Filename1, Filename2); end; -function SetCurrentDirUTF8(const NewDir: String): Boolean; +function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; begin - Result := LazFileUtils.SetCurrentDirUtf8(NewDir); + Result := LazFileUtils.CompareFilenamesIgnoreCase(Filename1, Filename2); end; -function CreateDirUTF8(const NewDir: String): Boolean; +function FilenameIsAbsolute(const TheFilename: string):boolean; begin - Result := LazFileUtils.CreateDirUtf8(NewDir); + Result := LazFileUtils.FilenameIsAbsolute(TheFileName); end; -function RemoveDirUTF8(const Dir: String): Boolean; +function FilenameIsWinAbsolute(const TheFilename: string): boolean; begin - Result := LazFileUtils.RemoveDirUtf8(Dir); + Result := LazFileUtils.FilenameIsWinAbsolute(TheFileName); end; +function FilenameIsUnixAbsolute(const TheFilename: string): boolean; +begin + Result := LazFileUtils.FilenameIsUnixAbsolute(TheFileName); +end; +procedure CheckIfFileIsExecutable(const AFilename: string); +begin + LazFileUtils.CheckIfFileIsExecutable(AFileName); +end; -function GetAppConfigDirUTF8(Global: Boolean; Create: boolean = false): string; +procedure CheckIfFileIsSymlink(const AFilename: string); begin - Result := LazFileUtils.GetAppConfigDirUTF8(Global, Create); + LazFileUtils.CheckIfFileIsSymlink(AFilename); end; -function GetAppConfigFileUTF8(Global: Boolean; SubDir: boolean; - CreateDir: boolean): string; +function FileIsReadable(const AFilename: string): boolean; begin - Result := LazFileUtils.GetAppConfigFileUTF8(Global, SubDir, CreateDir); + Result:= LazFileUtils.FileIsReadable(AFilename); end; -function SysErrorMessageUTF8(ErrorCode: Integer): String; +function FileIsWritable(const AFilename: string): boolean; begin - Result := LazUtf8.SysErrorMessageUTF8(ErrorCode); + Result := LazFileUtils.FileIsWritable(AFilename); +end; + +function FileIsText(const AFilename: string): boolean; +begin + Result := LazFileUtils.FileIsText(AFilename); +end; + +function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; +begin + Result := LazFileUtils.FileIsText(AFileName, FileReadable); +end; + +function FileIsExecutable(const AFilename: string): boolean; +begin + Result := LazFileUtils.FileIsExecutable(AFileName); +end; + +function FileIsSymlink(const AFilename: string): boolean; +begin + Result := LazFileUtils.FileIsSymlink(AFilename); +end; + +function FileIsHardLink(const AFilename: string): boolean; +begin + Result := LazFileUtils.FileIsHardLink(AFilename); +end; + +function GetFileDescription(const AFilename: string): string; +begin + Result := LazFileUtils.GetFileDescription(AFilename); +end; + +function ReadAllLinks(const Filename: string; ExceptionOnError: boolean): string; +begin + Result:=LazFileUtils.ReadAllLinks(Filename,ExceptionOnError); +end; + +function TryReadAllLinks(const Filename: string): string; +begin + Result:=LazFileUtils.TryReadAllLinks(Filename); +end; + +function TrimFilename(const AFilename: string): string; +begin + Result := LazFileUtils.TrimFilename(AFileName); end; function DirPathExists(const FileName: String): Boolean; @@ -210,14 +307,60 @@ Result := LazFileUtils.DirPathExists(FileName); end; -function CompareFilenames(const Filename1, Filename2: string): integer; +function ForceDirectory(DirectoryName: string): boolean; begin - Result := LazFileUtils.CompareFilenames(Filename1, Filename2); + Result := LazFileUtils.ForceDirectory(DirectoryName); end; -function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; +function DirectoryIsWritable(const DirectoryName: string): boolean; begin - Result := LazFileUtils.CompareFilenamesIgnoreCase(Filename1, Filename2); + Result := LazFileUtils.DirectoryIsWritable(DirectoryName); +end; + +function AppendPathDelim(const Path: string): string; +begin + Result := LazFileUtils.AppendPathDelim(Path); +end; + +function ChompPathDelim(const Path: string): string; +begin + Result := LazFileUtils.ChompPathDelim(Path); +end; + +function CreateRelativePath(const Filename, BaseDirectory: string; + UsePointDirectory: boolean; AlwaysRequireSharedBaseFolder: Boolean): string; +begin + Result := LazFileUtils.CreateRelativePath(FileName, BaseDirectory, UsePointDirectory, AlwaysRequireSharedBaseFolder); +end; + +{$IFDEF darwin} +function GetDarwinSystemFilename(Filename: string): string; +begin + Result := LazFileUtils.GetDarwinSystemFilename(Filename); +end; +{$ENDIF} + +{$ENDIF DisableWrapperFunctions} + +// ToDo: For ExpandUNCFileNameUTF8 +// +// Don't convert to and from Sys, because this RTL routines +// simply work in simple string operations, without calling native +// APIs which would really require Ansi +// +// The Ansi conversion just ruins Unicode strings +// +// See bug http://bugs.freepascal.org/view.php?id=20229 +// It needs fixing like we did for LazFileUtils.ExpandFileNameUtf8(Filename) on Windows + +function ExpandUNCFileNameUTF8(const FileName: string): string; +begin + Result:=SysUtils.ExpandUNCFileName(Filename); +end; + +function FileSize(const Filename: string): int64; +begin + Result := LazFileUtils.FileSizeUtf8(FileName); end; function ComparePhysicalFilenames(const Filename1, Filename2: string): integer; @@ -227,7 +370,7 @@ begin File1:=GetPhysicalFilename(Filename1,pfeOriginal); File2:=GetPhysicalFilename(Filename2,pfeOriginal); - Result:=CompareFilenames(File1,File2); + Result:=LazFileUtils.CompareFilenames(File1,File2); end; function CompareFilenames(Filename1: PChar; Len1: integer; @@ -251,14 +394,14 @@ if ResolveLinks then Result:=ComparePhysicalFilenames(File1,File2) else - Result:=CompareFilenames(File1,File2); + Result:=LazFileUtils.CompareFilenames(File1,File2); end else begin {$IFDEF NotLiteralFilenames} SetLength(File1,Len1); System.Move(Filename1^,File1[1],Len1); SetLength(File2,Len2); System.Move(Filename2^,File2[1],Len2); - Result:=CompareFilenames(File1,File2); + Result:=LazFileUtils.CompareFilenames(File1,File2); {$ELSE} Result:=0; i:=0; @@ -273,41 +416,16 @@ end; end; -function FilenameIsAbsolute(const TheFilename: string):boolean; -begin - Result := LazFileUtils.FilenameIsAbsolute(TheFileName); -end; - -function FilenameIsWinAbsolute(const TheFilename: string): boolean; -begin - Result := LazFileUtils.FilenameIsWinAbsolute(TheFileName); -end; - -function FilenameIsUnixAbsolute(const TheFilename: string): boolean; -begin - Result := LazFileUtils.FilenameIsUnixAbsolute(TheFileName); -end; - function FilenameIsPascalUnit(const Filename: string): boolean; var i: Integer; begin for i:=Low(PascalFileExt) to High(PascalFileExt) do - if CompareFileExt(Filename,PascalFileExt[i],false)=0 then + if LazFileUtils.CompareFileExt(Filename,PascalFileExt[i],false)=0 then exit(true); Result:=false; end; -function AppendPathDelim(const Path: string): string; -begin - Result := LazFileUtils.AppendPathDelim(Path); -end; - -function TrimFilename(const AFilename: string): string; -begin - Result := LazFileUtils.TrimFilename(AFileName); -end; - function ExtractFileNameWithoutExt(const AFilename: string): string; var p: Integer; @@ -326,96 +444,6 @@ end; end; -function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; -begin - Result := LazFileUtils.CompareFileExt(Filename, Ext, CaseSensitive); -end; - -function CompareFileExt(const Filename, Ext: string): integer; -begin - Result := LazFileUtils.CompareFileExt(Filename, Ext); -end; - -function ChompPathDelim(const Path: string): string; -begin - Result := LazFileUtils.ChompPathDelim(Path); -end; - -function FileIsText(const AFilename: string): boolean; -begin - Result := LazFileUtils.FileIsText(AFilename); -end; - -function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; -begin - Result := LazFileUtils.FileIsText(AFileName, FileReadable); -end; - -function FileIsExecutable(const AFilename: string): boolean; -begin - Result := LazFileUtils.FileIsExecutable(AFileName); -end; - -procedure CheckIfFileIsExecutable(const AFilename: string); -begin - LazFileUtils.CheckIfFileIsExecutable(AFileName); -end; - -function FileIsSymlink(const AFilename: string): boolean; -begin - Result := LazFileUtils.FileIsSymlink(AFilename); -end; - -procedure CheckIfFileIsSymlink(const AFilename: string); -begin - LazFileUtils.CheckIfFileIsSymlink(AFilename); -end; - -function FileIsHardLink(const AFilename: string): boolean; -begin - Result := LazFileUtils.FileIsHardLink(AFilename); -end; - -function FileIsReadable(const AFilename: string): boolean; -begin - Result:= LazFileUtils.FileIsReadable(AFilename); -end; - -function FileIsWritable(const AFilename: string): boolean; -begin - Result := LazFileUtils.FileIsWritable(AFilename); -end; - -function ReadAllLinks(const Filename: string; ExceptionOnError: boolean - ): string; -begin - Result:=LazFileUtils.ReadAllLinks(Filename,ExceptionOnError); -end; - -function TryReadAllLinks(const Filename: string): string; -begin - Result:=LazFileUtils.TryReadAllLinks(Filename); -end; - -{------------------------------------------------------------------------------ - function ExtractFileNameOnly(const AFilename: string): string; - ------------------------------------------------------------------------------} -function ExtractFileNameOnly(const AFilename: string): string; -begin - Result := LazFileUtils.ExtractFileNameOnly(AFilename); -end; - -{------------------------------------------------------------------------------ - function ForceDirectory(DirectoryName: string): boolean; - ------------------------------------------------------------------------------} -function ForceDirectory(DirectoryName: string): boolean; -begin - Result := LazFileUtils.ForceDirectory(DirectoryName); -end; - -{------------------------------------------------------------------------------ - function DeleteDirectory(const DirectoryName: string; OnlyChilds: boolean): boolean; - ------------------------------------------------------------------------------} function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean; const //Don't follow symlinks on *nix, just delete them @@ -426,8 +454,8 @@ CurFilename: String; begin Result:=false; - CurSrcDir:=CleanAndExpandDirectory(DirectoryName); - if FindFirstUTF8(CurSrcDir+GetAllFilesMask,DeleteMask,FileInfo)=0 then begin + CurSrcDir:=LazFileUtils.CleanAndExpandDirectory(DirectoryName); + if LazFileUtils.FindFirstUTF8(CurSrcDir+GetAllFilesMask,DeleteMask,FileInfo)=0 then begin repeat // check if special file if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='') then @@ -437,23 +465,20 @@ {$ifdef unix} and ((FileInfo.Attr and faSymLink)=0) {$endif unix} then begin if not DeleteDirectory(CurFilename,false) then exit; end else begin - if not DeleteFileUTF8(CurFilename) then exit; + if not LazFileUtils.DeleteFileUTF8(CurFilename) then exit; end; - until FindNextUTF8(FileInfo)<>0; + until LazFileUtils.FindNextUTF8(FileInfo)<>0; end; - FindCloseUTF8(FileInfo); - if (not OnlyChildren) and (not RemoveDirUTF8(CurSrcDir)) then exit; + LazFileUtils.FindCloseUTF8(FileInfo); + if (not OnlyChildren) and (not LazFileUtils.RemoveDirUTF8(CurSrcDir)) then exit; Result:=true; end; -{------------------------------------------------------------------------------ - function ProgramDirectory: string; - ------------------------------------------------------------------------------} function ProgramDirectory: string; var Flags: TSearchFileInPathFlags; begin - Result:=ParamStrUTF8(0); + Result:=LazUTF8.ParamStrUTF8(0); if ExtractFilePath(Result)='' then begin // program was started via PATH {$IFDEF WINDOWS} @@ -461,37 +486,15 @@ {$ELSE} Flags:=[sffDontSearchInBasePath]; {$ENDIF} - Result:=SearchFileInPath(Result,'',GetEnvironmentVariableUTF8('PATH'),':',Flags); + Result:=SearchFileInPath(Result,'',LazUTF8.GetEnvironmentVariableUTF8('PATH'),PathSeparator,Flags); end; // resolve links Result:=GetPhysicalFilename(Result,pfeOriginal); // extract file path and expand to full name - Result:=ExpandFileNameUTF8(ExtractFilePath(Result)); -end; - -function DirectoryIsWritable(const DirectoryName: string): boolean; -begin - Result := LazFileUtils.DirectoryIsWritable(DirectoryName); -end; - -{------------------------------------------------------------------------------ - function CleanAndExpandFilename(const Filename: string): string; - ------------------------------------------------------------------------------} -function CleanAndExpandFilename(const Filename: string): string; -begin - Result := LazFileutils.CleanAndExpandFilename(FileName); -end; - -{------------------------------------------------------------------------------ - function CleanAndExpandDirectory(const Filename: string): string; - ------------------------------------------------------------------------------} -function CleanAndExpandDirectory(const Filename: string): string; -begin - Result := LazFileUtils.CleanAndExpandDirectory(FileName); + Result:=LazFileUtils.ExpandFileNameUTF8(ExtractFilePath(Result)); end; -function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string - ): string; +function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; var PathLen: Integer; EndPos: Integer; @@ -503,7 +506,7 @@ begin Result:=SearchPath; if (SearchPath='') or (BaseDirectory='') then exit; - BaseDir:=AppendPathDelim(BaseDirectory); + BaseDir:=LazFileUtils.AppendPathDelim(BaseDirectory); PathLen:=length(Result); EndPos:=1; @@ -516,7 +519,7 @@ EndPos:=StartPos; while (EndPos<=PathLen) and (Result[EndPos]<>';') do inc(EndPos); CurDir:=copy(Result,StartPos,EndPos-StartPos); - if not FilenameIsAbsolute(CurDir) then begin + if not LazFileUtils.FilenameIsAbsolute(CurDir) then begin NewCurDir:=BaseDir+CurDir; if NewCurDir<>CurDir then begin DiffLen:=length(NewCurDir)-length(CurDir); @@ -530,15 +533,9 @@ end; end; -function CreateRelativePath(const Filename, BaseDirectory: string; - UsePointDirectory: boolean; AlwaysRequireSharedBaseFolder: Boolean): string; -begin - Result := LazFileUtils.CreateRelativePath(FileName, BaseDirectory, UsePointDirectory, AlwaysRequireSharedBaseFolder); -end; - function CreateAbsolutePath(const Filename, BaseDirectory: string): string; begin - if (Filename='') or FilenameIsAbsolute(Filename) then + if (Filename='') or LazFileUtils.FilenameIsAbsolute(Filename) then Result:=Filename {$IFDEF Windows} else if (Filename[1]='\') then @@ -546,8 +543,8 @@ Result:=ExtractFileDrive(BaseDirectory)+Filename {$ENDIF} else - Result:=AppendPathDelim(BaseDirectory)+Filename; - Result:=TrimFilename(Result); + Result:=LazFileUtils.AppendPathDelim(BaseDirectory)+Filename; + Result:=LazFileUtils.TrimFilename(Result); end; function FileIsInPath(const Filename, Path: string): boolean; @@ -556,11 +553,11 @@ ExpPath: String; l: integer; begin - ExpFile:=CleanAndExpandFilename(Filename); - ExpPath:=CleanAndExpandDirectory(Path); + ExpFile:=LazFileUtils.CleanAndExpandFilename(Filename); + ExpPath:=LazFileUtils.CleanAndExpandDirectory(Path); l:=length(ExpPath); Result:=(l>0) and (length(ExpFile)>l) and (ExpFile[l] in AllowDirectorySeparators) - and (CompareFilenames(ExpPath,LeftStr(ExpFile,l))=0); + and (LazFileUtils.CompareFilenames(ExpPath,LeftStr(ExpFile,l))=0); end; function FileIsInDirectory(const Filename, Directory: string): boolean; @@ -571,18 +568,18 @@ LenDir: Integer; p: LongInt; begin - ExpFile:=CleanAndExpandFilename(Filename); - ExpDir:=CleanAndExpandDirectory(Directory); + ExpFile:=LazFileUtils.CleanAndExpandFilename(Filename); + ExpDir:=LazFileUtils.CleanAndExpandDirectory(Directory); LenFile:=length(ExpFile); LenDir:=length(ExpDir); p:=LenFile; while (p>0) and not (ExpFile[p] in AllowDirectorySeparators) do dec(p); Result:=(p=LenDir) and (p<LenFile) - and (CompareFilenames(ExpDir,LeftStr(ExpFile,p))=0); + and (LazFileUtils.CompareFilenames(ExpDir,LeftStr(ExpFile,p))=0); end; function CopyFile(const SrcFilename, DestFilename: String; - Flags: TCopyFileFlags=[cffOverwriteFile]): Boolean; + Flags: TCopyFileFlags=[cffOverwriteFile]; ExceptionOnError: Boolean=False): Boolean; var SrcHandle: THandle; DestHandle: THandle; @@ -591,16 +588,16 @@ begin Result := False; // check overwrite - if (not (cffOverwriteFile in Flags)) and FileExistsUTF8(DestFileName) then + if (not (cffOverwriteFile in Flags)) and LazFileUtils.FileExistsUTF8(DestFileName) then exit; // check directory if (cffCreateDestDirectory in Flags) - and (not DirectoryExistsUTF8(ExtractFilePath(DestFileName))) - and (not ForceDirectoriesUTF8(ExtractFilePath(DestFileName))) then + and (not LazFileUtils.DirectoryExistsUTF8(ExtractFilePath(DestFileName))) + and (not LazFileUtils.ForceDirectoriesUTF8(ExtractFilePath(DestFileName))) then exit; TryCount := 0; While TryCount <> 3 Do Begin - SrcHandle := FileOpenUTF8(SrcFilename, fmOpenRead or fmShareDenyWrite); + SrcHandle := LazFileUtils.FileOpenUTF8(SrcFilename, fmOpenRead or fmShareDenyWrite); if (THandle(SrcHandle)=feInvalidHandle) then Begin Inc(TryCount); Sleep(10); @@ -611,31 +608,46 @@ End; End; If TryCount > 0 Then - raise EFOpenError.Createfmt({SFOpenError}'Unable to open file "%s"', [SrcFilename]); + begin + if ExceptionOnError then + raise EFOpenError.CreateFmt({SFOpenError}'Unable to open file "%s"', [SrcFilename]) + else + exit; + end; try - DestHandle := FileCreateUTF8(DestFileName); + DestHandle := LazFileUtils.FileCreateUTF8(DestFileName); if (THandle(DestHandle)=feInvalidHandle) then - raise EFCreateError.createfmt({SFCreateError}'Unable to create file "%s"',[DestFileName]); + begin + if ExceptionOnError then + raise EFCreateError.CreateFmt({SFCreateError}'Unable to create file "%s"',[DestFileName]) + else + Exit; + end; try repeat ReadCount:=FileRead(SrcHandle,Buffer[1],High(Buffer)); if ReadCount<=0 then break; WriteCount:=FileWrite(DestHandle,Buffer[1],ReadCount); if WriteCount<ReadCount then - raise EWriteError.createfmt({SFCreateError}'Unable to write to file "%s"',[DestFileName]) + begin + if ExceptionOnError then + raise EWriteError.CreateFmt({SFCreateError}'Unable to write to file "%s"',[DestFileName]) + else + Exit; + end; until false; finally FileClose(DestHandle); end; if (cffPreserveTime in Flags) then - FileSetDateUTF8(DestFilename, FileGetDate(SrcHandle)); + LazFileUtils.FileSetDateUTF8(DestFilename, FileGetDate(SrcHandle)); Result := True; finally FileClose(SrcHandle); end; end; -function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: Boolean): boolean; +function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: Boolean; ExceptionOnError: Boolean): boolean; // Flags parameter can be used for the same thing. var Flags: TCopyFileFlags; @@ -644,7 +656,7 @@ Flags:=[cffPreserveTime, cffOverwriteFile] else Flags:=[cffOverwriteFile]; - Result := CopyFile(SrcFilename, DestFilename, Flags); + Result := CopyFile(SrcFilename, DestFilename, Flags, ExceptionOnError); end; { TCopyDirTree for CopyDirTree function } @@ -676,14 +688,16 @@ begin NewPath:=StringReplace(FileName, FSourceDir, FTargetDir, []); // ToDo: make directories also respect cffPreserveTime flag. - if not DirectoryExistsUTF8(NewPath) then - if not ForceDirectoriesUTF8(NewPath) then + if not LazFileUtils.DirectoryExistsUTF8(NewPath) then + if not LazFileUtils.ForceDirectoriesUTF8(NewPath) then Inc(FCopyFailedCount); end; function CopyDirTree(const SourceDir, TargetDir: string; Flags: TCopyFileFlags=[]): Boolean; var Searcher: TCopyDirTree; + RelPath: String; + B: Boolean; begin Result:=False; Searcher:=TCopyDirTree.Create; @@ -692,19 +706,64 @@ Flags:=Flags+[cffCreateDestDirectory]; Searcher.FFlags:=Flags; Searcher.FCopyFailedCount:=0; - Searcher.FSourceDir:=SetDirSeparators(SourceDir); - Searcher.FTargetDir:=SetDirSeparators(TargetDir); + Searcher.FSourceDir:=LazFileUtils.TrimFilename(SetDirSeparators(SourceDir)); + Searcher.FTargetDir:=LazFileUtils.TrimFilename(SetDirSeparators(TargetDir)); + + // Don't even try to copy to a subdirectory of SourceDir. + B := TryCreateRelativePath(LazFileUtils.ExpandFilenameUtf8(Searcher.FSourceDir), + LazFileUtils.ExpandFilenameUtf8(Searcher.FTargetDir), False, True, RelPath); + if B and ((Copy(RelPath,1,2) = '..') or (RelPath = '')) then Exit; + Searcher.Search(SourceDir); - Result:=True; - finally Result:=Searcher.FCopyFailedCount=0; + finally Searcher.Free; end; end; -function GetTempFilename(const Directory, Prefix: string): string; +function GetAllFilesMask: string; begin - Result := LazFileUtils.GetTempFileNameUTF8(Directory, Prefix); + {$IFDEF WINDOWS} + Result:='*.*'; + {$ELSE} + Result:='*'; + {$ENDIF} +end; + +function GetExeExt: string; +begin + {$IFDEF WINDOWS} + Result:='.exe'; + {$ELSE} + Result:=''; + {$ENDIF} +end; + +function ReadFileToString(const Filename: String): String; +var + SrcHandle: THandle; + ReadCount: LongInt; + s: String; +begin + Result := ''; + s:=''; + try + Setlength(s, FileSize(Filename)); + if s='' then exit; + SrcHandle := LazFileUtils.FileOpenUTF8(Filename, fmOpenRead or fmShareDenyWrite); + if (THandle(SrcHandle)=feInvalidHandle) then + exit; + try + ReadCount:=FileRead(SrcHandle,s[1],length(s)); + if ReadCount<length(s) then + exit; + finally + FileClose(SrcHandle); + end; + Result:=s; + except + // ignore errors, Result string will be empty + end; end; function SearchFileInPath(const Filename, BasePath, SearchPath, @@ -719,20 +778,20 @@ exit; end; // check if filename absolute - if FilenameIsAbsolute(Filename) then begin - if FileExistsUTF8(Filename) then begin - Result:=CleanAndExpandFilename(Filename); + if LazFileUtils.FilenameIsAbsolute(Filename) then begin + if LazFileUtils.FileExistsUTF8(Filename) then begin + Result:=LazFileUtils.CleanAndExpandFilename(Filename); exit; end else begin Result:=''; exit; end; end; - Base:=CleanAndExpandDirectory(BasePath); + Base:=LazFileUtils.CleanAndExpandDirectory(BasePath); // search in current directory if (not (sffDontSearchInBasePath in Flags)) - and FileExistsUTF8(Base+Filename) then begin - Result:=CleanAndExpandFilename(Base+Filename); + and LazFileUtils.FileExistsUTF8(Base+Filename) then begin + Result:=LazFileUtils.CleanAndExpandFilename(Base+Filename); exit; end; // search in search path @@ -741,12 +800,12 @@ while StartPos<=l do begin p:=StartPos; while (p<=l) and (pos(SearchPath[p],Delimiter)<1) do inc(p); - CurPath:=TrimFilename(copy(SearchPath,StartPos,p-StartPos)); + CurPath:=LazFileUtils.TrimFilename(copy(SearchPath,StartPos,p-StartPos)); if CurPath<>'' then begin - if not FilenameIsAbsolute(CurPath) then + if not LazFileUtils.FilenameIsAbsolute(CurPath) then CurPath:=Base+CurPath; - Result:=CleanAndExpandFilename(AppendPathDelim(CurPath)+Filename); - if FileExistsUTF8(Result) then exit; + Result:=LazFileUtils.CleanAndExpandFilename(LazFileUtils.AppendPathDelim(CurPath)+Filename); + if LazFileUtils.FileExistsUTF8(Result) then exit; end; StartPos:=p+1; end; @@ -760,13 +819,13 @@ var i: Integer; begin - NewFilename:=TrimFilename(NewFilename); - if not FileExistsUTF8(NewFilename) then exit; + NewFilename:=LazFileUtils.TrimFilename(NewFilename); + if not LazFileUtils.FileExistsUTF8(NewFilename) then exit; if Result=nil then begin Result:=TStringList.Create; end else begin for i:=0 to Result.Count-1 do - if CompareFilenames(Result[i],NewFilename)=0 then exit; + if LazFileUtils.CompareFilenames(Result[i],NewFilename)=0 then exit; end; Result.Add(NewFilename); end; @@ -778,14 +837,14 @@ Result:=nil; if (Filename='') then exit; // check if filename absolute - if FilenameIsAbsolute(Filename) then begin - Add(CleanAndExpandFilename(Filename)); + if LazFileUtils.FilenameIsAbsolute(Filename) then begin + Add(LazFileUtils.CleanAndExpandFilename(Filename)); exit; end; - Base:=CleanAndExpandDirectory(BasePath); + Base:=LazFileUtils.CleanAndExpandDirectory(BasePath); // search in current directory if (not (sffDontSearchInBasePath in Flags)) then begin - Add(CleanAndExpandFilename(Base+Filename)); + Add(LazFileUtils.CleanAndExpandFilename(Base+Filename)); end; // search in search path StartPos:=1; @@ -793,11 +852,11 @@ while StartPos<=l do begin p:=StartPos; while (p<=l) and (pos(SearchPath[p],Delimiter)<1) do inc(p); - CurPath:=TrimFilename(copy(SearchPath,StartPos,p-StartPos)); + CurPath:=LazFileUtils.TrimFilename(copy(SearchPath,StartPos,p-StartPos)); if CurPath<>'' then begin - if not FilenameIsAbsolute(CurPath) then + if not LazFileUtils.FilenameIsAbsolute(CurPath) then CurPath:=Base+CurPath; - Add(CleanAndExpandFilename(AppendPathDelim(CurPath)+Filename)); + Add(LazFileUtils.CleanAndExpandFilename(LazFileUtils.AppendPathDelim(CurPath)+Filename)); end; StartPos:=p+1; end; @@ -818,7 +877,7 @@ Ambiguous: Boolean; begin Result:=Filename; - if not FileExistsUTF8(Filename) then exit; + if not LazFileUtils.FileExistsUTF8(Filename) then exit; //Sanitize result first (otherwise result can contain things like foo/\bar on Windows) Result := ResolveDots(Result); // check every directory and filename @@ -846,14 +905,14 @@ CurFile:=copy(Result,StartPos,EndPos-StartPos); AliasFile:=''; Ambiguous:=false; - if FindFirstUTF8(CurDir+GetAllFilesMask,faAnyFile,FileInfo)=0 then + if LazFileUtils.FindFirstUTF8(CurDir+GetAllFilesMask,faAnyFile,FileInfo)=0 then begin repeat // check if special file if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='') then continue; - if CompareFilenamesIgnoreCase(FileInfo.Name,CurFile)=0 then begin + if LazFileUtils.CompareFilenamesIgnoreCase(FileInfo.Name,CurFile)=0 then begin //debugln('FindDiskFilename ',FileInfo.Name,' ',CurFile); if FileInfo.Name=CurFile then begin // file found, has already the correct name @@ -869,9 +928,9 @@ end; end; end; - until FindNextUTF8(FileInfo)<>0; + until LazFileUtils.FindNextUTF8(FileInfo)<>0; end; - FindCloseUTF8(FileInfo); + LazFileUtils.FindCloseUTF8(FileInfo); if (AliasFile<>'') and (not Ambiguous) then begin // better filename found -> replace Result:=CurDir+AliasFile+copy(Result,EndPos,length(Result)); @@ -889,14 +948,14 @@ begin Result:=''; CurDir:=ExtractFilePath(ResolveDots(Filename)); - if FindFirstUTF8(CurDir+GetAllFilesMask,faAnyFile, FileInfo)=0 then begin + if LazFileUtils.FindFirstUTF8(CurDir+GetAllFilesMask,faAnyFile, FileInfo)=0 then begin ShortFilename:=ExtractFilename(Filename); repeat // check if special file if (FileInfo.Name='.') or (FileInfo.Name='..') or (FileInfo.Name='') then continue; - if CompareFilenamesIgnoreCase(FileInfo.Name,ShortFilename)=0 then begin + if LazFileUtils.CompareFilenamesIgnoreCase(FileInfo.Name,ShortFilename)=0 then begin if FileInfo.Name=ShortFilename then begin // fits exactly //Don't return (unaltered) Filename: otherwise possible changes by ResolveDots get lost @@ -907,32 +966,32 @@ Result:=CurDir+FileInfo.Name; // search further end; - until FindNextUTF8(FileInfo)<>0; + until LazFileUtils.FindNextUTF8(FileInfo)<>0; end; - FindCloseUTF8(FileInfo); + LazFileUtils.FindCloseUTF8(FileInfo); end; function FindDefaultExecutablePath(const Executable: string; const BaseDir: string): string; begin - if FilenameIsAbsolute(Executable) then begin + if LazFileUtils.FilenameIsAbsolute(Executable) then begin Result:=Executable; - if FileExistsUTF8(Result) then exit; + if LazFileUtils.FileExistsUTF8(Result) then exit; {$IFDEF Windows} if ExtractFileExt(Result)='' then begin Result:=Result+'.exe'; - if FileExistsUTF8(Result) then exit; + if LazFileUtils.FileExistsUTF8(Result) then exit; end; {$ENDIF} end else begin Result:=SearchFileInPath(Executable,BaseDir, - GetEnvironmentVariableUTF8('PATH'), PathSeparator, + LazUTF8.GetEnvironmentVariableUTF8('PATH'), PathSeparator, [sffDontSearchInBasePath]); if Result<>'' then exit; {$IFDEF Windows} if ExtractFileExt(Executable)='' then begin Result:=SearchFileInPath(Executable+'.exe',BaseDir, - GetEnvironmentVariableUTF8('PATH'), PathSeparator, + LazUTF8.GetEnvironmentVariableUTF8('PATH'), PathSeparator, [sffDontSearchInBasePath]); if Result<>'' then exit; end; @@ -1071,7 +1130,7 @@ begin P := APath + AllDirectoryEntriesMask; - if FindFirstUTF8(P, FileAttribute, PathInfo) = 0 then + if LazFileUtils.FindFirstUTF8(P, FileAttribute, PathInfo) = 0 then try repeat // skip special files @@ -1099,19 +1158,19 @@ DoDirectoryFound; end; - until (FindNextUTF8(PathInfo) <> 0) or not FSearching; + until (LazFileUtils.FindNextUTF8(PathInfo) <> 0) or not FSearching; finally - FindCloseUTF8(PathInfo); + LazFileUtils.FindCloseUTF8(PathInfo); end; if ASearchSubDirs or (ALevel > 0) then // search recursively in directories - if FindFirstUTF8(P, DirectoryAttribute, PathInfo) = 0 then + if LazFileUtils.FindFirstUTF8(P, DirectoryAttribute, PathInfo) = 0 then try repeat if (PathInfo.Name = '.') or (PathInfo.Name = '..') or (PathInfo.Name = '') or ((PathInfo.Attr and faDirectory) = 0) or - (not FFollowSymLink and FileIsSymlink(APath + PathInfo.Name)) + (not FFollowSymLink and LazFileUtils.FileIsSymlink(APath + PathInfo.Name)) then Continue; FPath := APath; @@ -1120,11 +1179,11 @@ DoDirectoryEnter; if not FSearching then Break; - DoSearch(AppendPathDelim(APath + PathInfo.Name), Succ(ALevel)); + DoSearch(LazFileUtils.AppendPathDelim(APath + PathInfo.Name), Succ(ALevel)); - until (FindNextUTF8(PathInfo) <> 0); + until (LazFileUtils.FindNextUTF8(PathInfo) <> 0); finally - FindCloseUTF8(PathInfo); + LazFileUtils.FindCloseUTF8(PathInfo); end; end; @@ -1148,14 +1207,14 @@ p:=Pos(';',ASearchPath); if p<1 then p:=length(ASearchPath)+1; - Dir:=TrimFilename(LeftStr(ASearchPath,p-1)); + Dir:=LazFileUtils.TrimFilename(LeftStr(ASearchPath,p-1)); Delete(ASearchPath,1,p); if Dir='' then continue; - Dir:=ChompPathDelim(Dir); + Dir:=LazFileUtils.ChompPathDelim(Dir); for i:=SearchDirectories.Count-1 downto 0 do begin OtherDir:=SearchDirectories[i]; - if (CompareFilenames(Dir,OtherDir)=0) + if (LazFileUtils.CompareFilenames(Dir,OtherDir)=0) or (ASearchSubDirs and (FileIsInPath(Dir,OtherDir))) then begin // directory Dir is already searched @@ -1175,7 +1234,7 @@ else begin for i:=0 to SearchDirectories.Count-1 do - DoSearch(AppendPathDelim(SearchDirectories[i]), 0); + DoSearch(LazFileUtils.AppendPathDelim(SearchDirectories[i]), 0); end; finally SearchDirectories.Free; @@ -1184,76 +1243,3 @@ end; end; -function GetAllFilesMask: string; -begin - {$IFDEF WINDOWS} - Result:='*.*'; - {$ELSE} - Result:='*'; - {$ENDIF} -end; - -function GetExeExt: string; -begin - {$IFDEF WINDOWS} - Result:='.exe'; - {$ELSE} - Result:=''; - {$ENDIF} -end; - -{------------------------------------------------------------------------------ - function ReadFileToString(const Filename: string): string; - ------------------------------------------------------------------------------} -function ReadFileToString(const Filename: String): String; -var - SrcHandle: THandle; - ReadCount: LongInt; - s: String; -begin - Result := ''; - s:=''; - try - Setlength(s, FileSize(Filename)); - if s='' then exit; - SrcHandle := FileOpenUTF8(Filename, fmOpenRead or fmShareDenyWrite); - if (THandle(SrcHandle)=feInvalidHandle) then - exit; - try - ReadCount:=FileRead(SrcHandle,s[1],length(s)); - if ReadCount<length(s) then - exit; - finally - FileClose(SrcHandle); - end; - Result:=s; - except - // ignore errors, Result string will be empty - end; -end; - -{------------------------------------------------------------------------------ - function FileSearchUTF8(const Name, DirList: String): String; - ------------------------------------------------------------------------------} -function FileSearchUTF8(const Name, DirList: String; ImplicitCurrentDir : Boolean = True): String; -begin - Result := LazFileUtils.FileSearchUTF8(Name, DirList, ImplicitCurrentDir); -end; - -{------------------------------------------------------------------------------ - function ForceDirectoriesUTF8(const Dir: string): Boolean; - ------------------------------------------------------------------------------} -function ForceDirectoriesUTF8(const Dir: string): Boolean; -begin - Result := LazFileUtils.ForceDirectoriesUTF8(Dir); -end; - -{------------------------------------------------------------------------------ - function ForceDirectoriesUTF8(const Dir: string): Boolean; - ------------------------------------------------------------------------------} -function FileIsReadOnlyUTF8(const FileName: String): Boolean; -begin - Result := LazFileUtils.FileIsReadOnlyUTF8(FileName); -end; - - diff -Nru lazarus-1.4.4+dfsg/components/lazutils/fileutil.pas lazarus-1.6+dfsg/components/lazutils/fileutil.pas --- lazarus-1.4.4+dfsg/components/lazutils/fileutil.pas 2014-12-08 21:51:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/fileutil.pas 2016-01-18 22:47:58.000000000 +0000 @@ -32,7 +32,8 @@ interface uses - Classes, SysUtils, Masks, LazUTF8, LazFileUtils; + Classes, SysUtils, + Masks, LazUTF8, LazFileUtils; {$if defined(Windows) or defined(darwin)} {$define CaseInsensitiveFilenames} @@ -46,57 +47,114 @@ FilenamesCaseSensitive = {$IFDEF CaseInsensitiveFilenames}false{$ELSE}true{$ENDIF};// lower and upper letters are treated the same FilenamesLiteral = {$IFDEF NotLiteralFilenames}false{$ELSE}true{$ENDIF};// file names can be compared using = string operator -// file attributes and states -function CompareFilenames(const Filename1, Filename2: string): integer; inline; -function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; inline; -function ComparePhysicalFilenames(const Filename1, Filename2: string): integer; -function CompareFilenames(Filename1: PChar; Len1: integer; - Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer; -function FilenameIsAbsolute(const TheFilename: string):boolean; inline; -function FilenameIsWinAbsolute(const TheFilename: string):boolean; inline; -function FilenameIsUnixAbsolute(const TheFilename: string):boolean; inline; -procedure CheckIfFileIsExecutable(const AFilename: string); inline; -procedure CheckIfFileIsSymlink(const AFilename: string); inline; -function FileIsReadable(const AFilename: string): boolean; inline; -function FileIsWritable(const AFilename: string): boolean; inline; -function FileIsText(const AFilename: string): boolean; inline; -function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; inline; -function FileIsExecutable(const AFilename: string): boolean; inline; -function FileIsSymlink(const AFilename: string): boolean; inline; -function FileIsHardLink(const AFilename: string): boolean; inline; -function FileSize(const Filename: string): int64; overload; inline; -function GetFileDescription(const AFilename: string): string; inline; -function ReadAllLinks(const Filename: string; ExceptionOnError: boolean): string; inline; -function TryReadAllLinks(const Filename: string): string; inline; +// basic functions similar to the RTL but working with UTF-8 instead of the +// system encoding +// AnsiToUTF8 and UTF8ToAnsi need a widestring manager under Linux, BSD, MacOSX +// but normally these OS use UTF-8 as system encoding so the widestringmanager +// is not needed. +{$IFnDEF DisableWrapperFunctions} +// *** Wrappers for LazUTF8 *** +function NeedRTLAnsi: boolean; inline; deprecated 'Use the function in LazUTF8 unit'; +procedure SetNeedRTLAnsi(NewValue: boolean); inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8ToSys(const s: string): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function SysToUTF8(const s: string): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function ConsoleToUTF8(const s: string): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8ToConsole(const s: string): string; inline; deprecated 'Use the function in LazUTF8 unit'; +// environment +function ParamStrUTF8(Param: Integer): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function GetEnvironmentStringUTF8(Index: Integer): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function GetEnvironmentVariableUTF8(const EnvVar: string): String; inline; deprecated 'Use the function in LazUTF8 unit'; +// other +function SysErrorMessageUTF8(ErrorCode: Integer): String; inline; deprecated 'Use the function in LazUTF8 unit'; +// *** Wrappers for LazFileUtils *** +// environment +function GetAppConfigDirUTF8(Global: Boolean; Create: boolean = false): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function GetAppConfigFileUTF8(Global: Boolean; SubDir: boolean = false; + CreateDir: boolean = false): string; inline; deprecated 'Use the function in LazFileUtils unit'; +// file operations +function ExtractFileNameOnly(const AFilename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileExistsUTF8(const Filename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileAgeUTF8(const FileName: string): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function DirectoryExistsUTF8(const Directory: string): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function FindNextUTF8(var Rslt: TSearchRec): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +procedure FindCloseUTF8(var F: TSearchrec); inline; deprecated 'Use the function in LazFileUtils unit'; +function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileGetAttrUTF8(const FileName: String): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; inline; deprecated 'Use the function in LazFileUtils unit'; +function DeleteFileUTF8(const FileName: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function RenameFileUTF8(const OldName, NewName: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileSearchUTF8(const Name, DirList : String; ImplicitCurrentDir : Boolean = True): String; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsReadOnlyUTF8(const FileName: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function GetCurrentDirUTF8: String; inline; deprecated 'Use the function in LazFileUtils unit'; +function SetCurrentDirUTF8(const NewDir: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function CreateDirUTF8(const NewDir: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function RemoveDirUTF8(const Dir: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function ForceDirectoriesUTF8(const Dir: string): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileCreateUTF8(Const FileName : string) : THandle; overload; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileCreateUTF8(Const FileName : string; Rights: Cardinal) : THandle; overload; inline; deprecated 'Use the function in LazFileUtils unit'; +function GetTempFilename(const Directory, Prefix: string): string; inline; deprecated 'Use the function GetTempFileNameUTF8 in LazFileUtils unit'; +// file names, attributes and states +function CleanAndExpandFilename(const Filename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function CleanAndExpandDirectory(const Filename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function ExpandFileNameUTF8(const FileName: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; overload; inline; deprecated 'Use the function in LazFileUtils unit'; +function CompareFileExt(const Filename, Ext: string): integer; overload; inline; deprecated 'Use the function in LazFileUtils unit'; +function CompareFilenames(const Filename1, Filename2: string): integer; inline; deprecated 'Use the function in LazFileUtils unit'; +function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsAbsolute(const TheFilename: string):boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsWinAbsolute(const TheFilename: string):boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FilenameIsUnixAbsolute(const TheFilename: string):boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +procedure CheckIfFileIsExecutable(const AFilename: string); inline; deprecated 'Use the function in LazFileUtils unit'; +procedure CheckIfFileIsSymlink(const AFilename: string); inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsReadable(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsWritable(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsText(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsExecutable(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsSymlink(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function FileIsHardLink(const AFilename: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function GetFileDescription(const AFilename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function ReadAllLinks(const Filename: string; ExceptionOnError: boolean): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function TryReadAllLinks(const Filename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function TrimFilename(const AFilename: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; // directories -function DirPathExists(const FileName: String): Boolean; inline; -function ForceDirectory(DirectoryName: string): boolean; inline; +function DirPathExists(const FileName: String): Boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function ForceDirectory(DirectoryName: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function DirectoryIsWritable(const DirectoryName: string): boolean; inline; deprecated 'Use the function in LazFileUtils unit'; +function AppendPathDelim(const Path: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function ChompPathDelim(const Path: string): string; inline; deprecated 'Use the function in LazFileUtils unit'; +function CreateRelativePath(const Filename, BaseDirectory: string; + UsePointDirectory: boolean = false; AlwaysRequireSharedBaseFolder: Boolean = True): string; inline; deprecated 'Use the function in LazFileUtils unit'; +{$IFDEF darwin} +function GetDarwinSystemFilename(Filename: string): string; inline; +{$ENDIF} + +{$ENDIF DisableWrapperFunctions} + +// file and directory operations +function ComparePhysicalFilenames(const Filename1, Filename2: string): integer; +function CompareFilenames(Filename1: PChar; Len1: integer; + Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer; overload; +function ExtractShortPathNameUTF8(Const FileName : String) : String; function DeleteDirectory(const DirectoryName: string; OnlyChildren: boolean): boolean; function ProgramDirectory: string; -function DirectoryIsWritable(const DirectoryName: string): boolean; inline; -// filename parts -const - PascalFileExt: array[1..3] of string = ('.pas','.pp','.p'); - -function ExtractFileNameOnly(const AFilename: string): string; inline; +function ExpandUNCFileNameUTF8(const FileName: string): string; +function FileSize(const Filename: string): int64; overload; inline; function ExtractFileNameWithoutExt(const AFilename: string): string; -function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; overload; inline; -function CompareFileExt(const Filename, Ext: string): integer; overload; inline; function FilenameIsPascalUnit(const Filename: string): boolean; -function AppendPathDelim(const Path: string): string; inline; -function ChompPathDelim(const Path: string): string; inline; -function TrimFilename(const AFilename: string): string; inline; -function CleanAndExpandFilename(const Filename: string): string; inline; -function CleanAndExpandDirectory(const Filename: string): string; inline; function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; -function CreateRelativePath(const Filename, BaseDirectory: string; - UsePointDirectory: boolean = false; AlwaysRequireSharedBaseFolder: Boolean = True): string; inline; function CreateAbsolutePath(const Filename, BaseDirectory: string): string; function FileIsInPath(const Filename, Path: string): boolean; function FileIsInDirectory(const Filename, Directory: string): boolean; +function GetAllFilesMask: string; inline; +function GetExeExt: string; inline; +function ReadFileToString(const Filename: string): string; + // file search type TSearchFileInPathFlag = ( @@ -105,21 +163,13 @@ ); TSearchFileInPathFlags = set of TSearchFileInPathFlag; -const - AllDirectoryEntriesMask = '*'; - -function GetAllFilesMask: string; inline; -function GetExeExt: string; inline; function SearchFileInPath(const Filename, BasePath, SearchPath, - Delimiter: string; Flags: TSearchFileInPathFlags): string; + Delimiter: string; Flags: TSearchFileInPathFlags): string; overload; function SearchAllFilesInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): TStrings; function FindDiskFilename(const Filename: string): string; function FindDiskFileCaseInsensitive(const Filename: string): string; function FindDefaultExecutablePath(const Executable: string; const BaseDir: string = ''): string; -{$IFDEF darwin} -function GetDarwinSystemFilename(Filename: string): string; inline; -{$ENDIF} type @@ -222,63 +272,16 @@ // Copy a file and a whole directory tree function CopyFile(const SrcFilename, DestFilename: string; - Flags: TCopyFileFlags=[cffOverwriteFile]): boolean; -function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean): boolean; + Flags: TCopyFileFlags=[cffOverwriteFile]; ExceptionOnError: Boolean=False): boolean; +function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean; ExceptionOnError: Boolean=False): boolean; function CopyDirTree(const SourceDir, TargetDir: string; Flags: TCopyFileFlags=[]): Boolean; -// file actions -function ReadFileToString(const Filename: string): string; -function GetTempFilename(const Directory, Prefix: string): string; inline; - -// basic functions similar to the RTL but working with UTF-8 instead of the -// system encoding - -// AnsiToUTF8 and UTF8ToAnsi need a widestring manager under Linux, BSD, MacOSX -// but normally these OS use UTF-8 as system encoding so the widestringmanager -// is not needed. -function NeedRTLAnsi: boolean; inline;// true if system encoding is not UTF-8 -procedure SetNeedRTLAnsi(NewValue: boolean); inline; -function UTF8ToSys(const s: string): string; inline;// as UTF8ToAnsi but more independent of widestringmanager -function SysToUTF8(const s: string): string; inline;// as AnsiToUTF8 but more independent of widestringmanager -function ConsoleToUTF8(const s: string): string; inline;// converts OEM encoded string to UTF8 (used with some Windows specific functions) -function UTF8ToConsole(const s: string): string; inline;// converts UTF8 string to console encoding (used by Write, WriteLn) - -// file operations -function FileExistsUTF8(const Filename: string): boolean; inline; -function FileAgeUTF8(const FileName: string): Longint; inline; -function DirectoryExistsUTF8(const Directory: string): Boolean; inline; -function ExpandFileNameUTF8(const FileName: string): string; inline; -function ExpandUNCFileNameUTF8(const FileName: string): string; -function ExtractShortPathNameUTF8(Const FileName : String) : String; -function FindFirstUTF8(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint; inline; -function FindNextUTF8(var Rslt: TSearchRec): Longint; inline; -procedure FindCloseUTF8(var F: TSearchrec); inline; -function FileSetDateUTF8(const FileName: String; Age: Longint): Longint; inline; -function FileGetAttrUTF8(const FileName: String): Longint; inline; -function FileSetAttrUTF8(const Filename: String; Attr: longint): Longint; inline; -function DeleteFileUTF8(const FileName: String): Boolean; inline; -function RenameFileUTF8(const OldName, NewName: String): Boolean; inline; -function FileSearchUTF8(const Name, DirList : String; ImplicitCurrentDir : Boolean = True): String; inline; -function FileIsReadOnlyUTF8(const FileName: String): Boolean; inline; -function GetCurrentDirUTF8: String; inline; -function SetCurrentDirUTF8(const NewDir: String): Boolean; inline; -function CreateDirUTF8(const NewDir: String): Boolean; inline; -function RemoveDirUTF8(const Dir: String): Boolean; inline; -function ForceDirectoriesUTF8(const Dir: string): Boolean; inline; -function FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle; inline; -function FileCreateUTF8(Const FileName : string) : THandle; overload; inline; -function FileCreateUTF8(Const FileName : string; Rights: Cardinal) : THandle; overload; inline; - -// environment -function ParamStrUTF8(Param: Integer): string; inline; -function GetEnvironmentStringUTF8(Index: Integer): string; inline; -function GetEnvironmentVariableUTF8(const EnvVar: string): String; inline; -function GetAppConfigDirUTF8(Global: Boolean; Create: boolean = false): string; inline; -function GetAppConfigFileUTF8(Global: Boolean; SubDir: boolean = false; - CreateDir: boolean = false): string; inline; +// filename parts +const + PascalFileExt: array[1..3] of string = ('.pas','.pp','.p'); + PascalSourceExt: array[1..6] of string = ('.pas','.pp','.p','.lpr','.dpr','.dpk'); -// other -function SysErrorMessageUTF8(ErrorCode: Integer): String; inline; + AllDirectoryEntriesMask = '*'; implementation diff -Nru lazarus-1.4.4+dfsg/components/lazutils/fpcadds.pas lazarus-1.6+dfsg/components/lazutils/fpcadds.pas --- lazarus-1.4.4+dfsg/components/lazutils/fpcadds.pas 2014-12-10 02:16:39.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/fpcadds.pas 2015-11-24 16:23:18.000000000 +0000 @@ -16,9 +16,7 @@ {$mode objfpc}{$H+}{$inline on} -{$IF defined(EnableUTF8RTL) and (FPC_FULLVERSION<20701)} - {$error UTF8 RTL requires fpc 2.7.1+} -{$ENDIF} +{$i lazutils_defines.inc} interface @@ -68,11 +66,11 @@ {$ENDIF} end; -{$IFDEF EnableUTF8RTL} +{$ifdef UTF8_RTL} initialization SetMultiByteConversionCodePage(CP_UTF8); // SetMultiByteFileSystemCodePage(CP_UTF8); not needed, this is the default under Windows SetMultiByteRTLFileSystemCodePage(CP_UTF8); -{$ENDIF} +{$IFEND} end. diff -Nru lazarus-1.4.4+dfsg/components/lazutils/fpmake.pp lazarus-1.6+dfsg/components/lazutils/fpmake.pp --- lazarus-1.4.4+dfsg/components/lazutils/fpmake.pp 2015-01-02 20:45:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/fpmake.pp 2015-07-07 12:10:35.000000000 +0000 @@ -88,7 +88,7 @@ t.Dependencies.AddUnit('lazconfigstorage'); t.Dependencies.AddUnit('utf8process'); t.Dependencies.AddUnit('laz2_xpath'); - t.Dependencies.AddUnit('dictionarystringlist'); + t.Dependencies.AddUnit('lookupstringlist'); t.Dependencies.AddUnit('lazloggerprofiling'); t.Dependencies.AddUnit('fpcadds'); t.Dependencies.AddUnit('lazutilities'); @@ -142,7 +142,7 @@ T:=P.Targets.AddUnit('lazconfigstorage.pas'); T:=P.Targets.AddUnit('utf8process.pp'); T:=P.Targets.AddUnit('laz2_xpath.pas'); - T:=P.Targets.AddUnit('dictionarystringlist.pas'); + T:=P.Targets.AddUnit('lookupstringlist.pas'); T:=P.Targets.AddUnit('lazloggerprofiling.pas'); T:=P.Targets.AddUnit('fpcadds.pas'); T:=P.Targets.AddUnit('lazutilities.pas'); diff -Nru lazarus-1.4.4+dfsg/components/lazutils/FTL.TXT lazarus-1.6+dfsg/components/lazutils/FTL.TXT --- lazarus-1.4.4+dfsg/components/lazutils/FTL.TXT 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/FTL.TXT 2015-05-15 16:23:59.000000000 +0000 @@ -0,0 +1,169 @@ + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright <year> The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace <year> with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + http://www.freetype.org + + +--- end of FTL.TXT --- diff -Nru lazarus-1.4.4+dfsg/components/lazutils/laz2_xmlcfg.pas lazarus-1.6+dfsg/components/lazutils/laz2_xmlcfg.pas --- lazarus-1.4.4+dfsg/components/lazutils/laz2_xmlcfg.pas 2014-12-10 11:26:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/laz2_xmlcfg.pas 2015-09-07 22:01:22.000000000 +0000 @@ -93,6 +93,9 @@ procedure SetDeleteValue(const APath: String; AValue, DefValue: Integer); procedure SetValue(const APath: String; AValue: Boolean); procedure SetDeleteValue(const APath: String; AValue, DefValue: Boolean); + procedure GetValue(const APath: String; out ARect: TRect; + const ADefault: TRect); + procedure SetDeleteValue(const APath: String; const AValue, DefValue: TRect); procedure SetExtendedValue(const APath: String; const AValue: extended); procedure SetDeleteExtendedValue(const APath: String; const AValue, DefValue: extended); @@ -257,6 +260,15 @@ Result := StrToIntDef(GetValue(APath, IntToStr(ADefault)),ADefault); end; +procedure TXMLConfig.GetValue(const APath: String; out ARect: TRect; + const ADefault: TRect); +begin + ARect.Left:=GetValue(APath+'Left',ADefault.Left); + ARect.Top:=GetValue(APath+'Top',ADefault.Top); + ARect.Right:=GetValue(APath+'Right',ADefault.Right); + ARect.Bottom:=GetValue(APath+'Bottom',ADefault.Bottom); +end; + function TXMLConfig.GetValue(const APath: String; ADefault: Boolean): Boolean; var s: String; @@ -327,6 +339,15 @@ SetValue(APath,AValue); end; +procedure TXMLConfig.SetDeleteValue(const APath: String; const AValue, + DefValue: TRect); +begin + SetDeleteValue(APath+'Left',AValue.Left,DefValue.Left); + SetDeleteValue(APath+'Top',AValue.Top,DefValue.Top); + SetDeleteValue(APath+'Right',AValue.Right,DefValue.Right); + SetDeleteValue(APath+'Bottom',AValue.Bottom,DefValue.Bottom); +end; + procedure TXMLConfig.SetValue(const APath: String; AValue: Boolean); begin if AValue then @@ -398,8 +419,7 @@ SetFilename(Filename); // Load the XML config file end; -function TXMLConfig.FindNode(const APath: String; - PathHasValue: boolean): TDomNode; +function TXMLConfig.FindNode(const APath: String; PathHasValue: boolean): TDomNode; var PathLen: Integer; begin @@ -411,8 +431,7 @@ Result:=InternalFindNode(APath,PathLen); end; -function TXMLConfig.HasPath(const APath: string; PathHasValue: boolean - ): boolean; +function TXMLConfig.HasPath(const APath: string; PathHasValue: boolean): boolean; begin Result:=FindNode(APath,PathHasValue)<>nil; end; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/laz2_xpath.pas lazarus-1.6+dfsg/components/lazutils/laz2_xpath.pas --- lazarus-1.4.4+dfsg/components/lazutils/laz2_xpath.pas 2013-10-22 12:56:19.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/laz2_xpath.pas 2015-03-24 17:52:23.000000000 +0000 @@ -657,6 +657,7 @@ ATTRIBUTE_NODE, PROCESSING_INSTRUCTION_NODE, COMMENT_NODE, TEXT_NODE, CDATA_SECTION_NODE, ENTITY_REFERENCE_NODE: Result := Node.NodeValue; + else Result := ''; end; // !!!: What to do with 'namespace nodes'? end; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazcollections.pas lazarus-1.6+dfsg/components/lazutils/lazcollections.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazcollections.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazcollections.pas 2015-05-12 14:24:43.000000000 +0000 @@ -5,11 +5,7 @@ interface uses - sysutils, -{$if (defined(ver2))} - LazUTF8SysUtils, -{$endif} - syncobjs; + sysutils, syncobjs, LazUTF8SysUtils; type diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazconfigstorage.pas lazarus-1.6+dfsg/components/lazutils/lazconfigstorage.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazconfigstorage.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazconfigstorage.pas 2015-03-24 17:52:43.000000000 +0000 @@ -320,7 +320,7 @@ begin FloatValue := GetFloatProp(Instance, PropInfo); if (DefInstance <> nil) then - DefFloatValue := GetFloatProp(DefInstance, PropInfo); + DefFloatValue := GetFloatProp(DefInstance, PropInfo); if (DefInstance <> nil) and (DefFloatValue = FloatValue) then DeleteValue(Path) else diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazfglhash.pas lazarus-1.6+dfsg/components/lazutils/lazfglhash.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazfglhash.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazfglhash.pas 2015-04-26 21:10:30.000000000 +0000 @@ -80,8 +80,8 @@ begin Result:=nil; continue:=True; - if FHashTableSize>0 then - for i:=0 to FHashTableSize-1 do + if HashTableSize>0 then + for i:=0 to HashTableSize-1 do if Assigned(Chain(i)) then if chain(i).Count>0 then for j:=0 to Chain(i).Count-1 do diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazfileutils.inc lazarus-1.6+dfsg/components/lazutils/lazfileutils.inc --- lazarus-1.4.4+dfsg/components/lazutils/lazfileutils.inc 2015-03-04 15:26:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazfileutils.inc 2015-03-07 17:25:44.000000000 +0000 @@ -374,3 +374,21 @@ begin SysUtils.FindClose(F); end; + +function DbgSFileAttr(Attr: LongInt): String; +begin + if (Attr = -1) then + Result := ('[Invalid]') + else + begin + Result := '[-------]'; + if (faDirectory and Attr) > 0 then Result[2] := 'D'; + if (faArchive and Attr) > 0 then Result[3] := 'A'; + if (faSysFile and Attr) > 0 then Result[4] := 'S'; + if (faReadOnly and Attr) > 0 then Result[5] := 'R'; + if (faHidden and Attr) > 0 then Result[6] := 'H'; + if (faVolumeId and Attr) > 0 then Result[7] := 'V'; + if (faSymLink and Attr) > 0 then Result[8] := 'L'; + end; +end; + diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazfileutils.pas lazarus-1.6+dfsg/components/lazutils/lazfileutils.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazfileutils.pas 2014-10-04 22:15:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazfileutils.pas 2015-11-24 16:23:18.000000000 +0000 @@ -4,7 +4,7 @@ unit LazFileUtils; {$mode objfpc}{$H+} - +{$i lazutils_defines.inc} interface uses @@ -22,7 +22,7 @@ {$DEFINE NotLiteralFilenames} // e.g. HFS+ normalizes file names {$ENDIF} -function CompareFilenames(const Filename1, Filename2: string): integer; +function CompareFilenames(const Filename1, Filename2: string): integer; overload; function CompareFilenamesIgnoreCase(const Filename1, Filename2: string): integer; function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; overload; @@ -30,7 +30,7 @@ function CompareFilenameStarts(const Filename1, Filename2: string): integer; function CompareFilenames(Filename1: PChar; Len1: integer; - Filename2: PChar; Len2: integer): integer; + Filename2: PChar; Len2: integer): integer; overload; function CompareFilenamesP(Filename1, Filename2: PChar; IgnoreCase: boolean = false // false = use default ): integer; @@ -74,7 +74,8 @@ function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string; function MinimizeSearchPath(const SearchPath: string): string; function FindPathInSearchPath(APath: PChar; APathLen: integer; - SearchPath: PChar; SearchPathLen: integer): PChar; + SearchPath: PChar; SearchPathLen: integer): PChar; overload; +function FindPathInSearchPath(const APath, SearchPath: string): integer; overload; // file operations function FileExistsUTF8(const Filename: string): boolean; @@ -109,6 +110,9 @@ function TryReadAllLinks(const Filename: string): string; // if a link is broken returns Filename function GetShellLinkTarget(const FileName: string): string; +// for debugging +function DbgSFileAttr(Attr: LongInt): String; + type TPhysicalFilenameOnError = (pfeException,pfeEmpty,pfeOriginal); @@ -132,6 +136,7 @@ // darwin paths {$IFDEF darwin} function GetDarwinSystemFilename(Filename: string): string; +function GetDarwinNormalizedFilename(Filename: string; nForm:Integer=2): string; {$ENDIF} procedure SplitCmdLineParams(const Params: string; ParamList: TStrings; @@ -283,6 +288,59 @@ end; CFRelease(s); end; + +// borrowed from CarbonProcs +function CFStringToStr(AString: CFStringRef; Encoding: CFStringEncoding): String; +var + Str: Pointer; + StrSize: CFIndex; + StrRange: CFRange; +begin + if AString = nil then + begin + Result := ''; + Exit; + end; + + // Try the quick way first + Str := CFStringGetCStringPtr(AString, Encoding); + if Str <> nil then + Result := PChar(Str) + else + begin + // if that doesn't work this will + StrRange.location := 0; + StrRange.length := CFStringGetLength(AString); + + CFStringGetBytes(AString, StrRange, Encoding, + Ord('?'), False, nil, 0, StrSize{%H-}); + SetLength(Result, StrSize); + + if StrSize > 0 then + CFStringGetBytes(AString, StrRange, Encoding, + Ord('?'), False, @Result[1], StrSize, StrSize); + end; +end; + +//NForm can be one of +//kCFStringNormalizationFormD = 0; // Canonical Decomposition +//kCFStringNormalizationFormKD = 1; // Compatibility Decomposition +//kCFStringNormalizationFormC = 2; // Canonical Decomposition followed by Canonical Composition +//kCFStringNormalizationFormKC = 3; // Compatibility Decomposition followed by Canonical Composition +function GetDarwinNormalizedFilename(Filename: string; nForm:Integer=2): string; +var + theString: CFStringRef; + Mutable: CFMutableStringRef; +begin + theString:=CFStringCreateWithCString(nil, Pointer(FileName), kCFStringEncodingUTF8); + Mutable := CFStringCreateMutableCopy(nil, 0, theString); + if (NForm<0) or (NForm>3) then NForm := kCFStringNormalizationFormC; + CFStringNormalize(Mutable, NForm); + Result := CFStringToStr(Mutable, kCFStringEncodingUTF8); + CFRelease(Mutable); + CFRelease(theString); +end; + {$ENDIF} function CompareFilenameStarts(const Filename1, Filename2: string): integer; @@ -409,8 +467,9 @@ s: String; fHandle: THANDLE; begin - TempFilename:=SysUtils.GetTempFilename(AppendPathDelim(DirectoryName),'tstperm'); Result:=false; + if not DirPathExists(DirectoryName) then exit; + TempFilename:=SysUtils.GetTempFilename(AppendPathDelim(DirectoryName),'tstperm'); fHandle := FileCreateUtf8(TempFileName, fmCreate, 438); if (THandle(fHandle) <> feInvalidHandle) then begin @@ -887,6 +946,19 @@ end; end; +function FindPathInSearchPath(const APath, SearchPath: string): integer; +var + p: PChar; + SearchP: PChar; +begin + SearchP:=PChar(SearchPath); + p:=FindPathInSearchPath(PChar(APath),length(APath),SearchP,length(SearchPath)); + if p=nil then + Result:=-1 + else + Result:=p-SearchP+1; +end; + function FileSearchUTF8(const Name, DirList: String; ImplicitCurrentDir : Boolean = True): String; Var I : longint; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazfreetypefontcollection.pas lazarus-1.6+dfsg/components/lazutils/lazfreetypefontcollection.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazfreetypefontcollection.pas 2014-12-09 11:31:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazfreetypefontcollection.pas 2015-05-24 22:05:14.000000000 +0000 @@ -65,13 +65,16 @@ function GetFontIndexByStyles(AStyles: string): integer; function GetStyle(AIndex: integer): string; override; procedure AddStyle(AName: string); + function RemoveStyle(AName: string): boolean; function GetStyles: string; override; function GetFamilyName: string; override; function GetFontCount: integer; override; function GetStyleCount: integer; override; + procedure RebuildStyleList(out ADuplicates: boolean); public constructor Create(AName: string); procedure AddFont(AFontItem: TFontCollectionItem); + function RemoveFont(AFontItem: TCustomFontCollectionItem): boolean; function GetFont(const AStyles: array of string; NeedAllStyles: boolean = false; NoMoreStyle: boolean = false): TCustomFontCollectionItem; override; function GetFont(AStyle: string; NeedAllStyles: boolean = false; NoMoreStyle: boolean = false): TCustomFontCollectionItem; override; function GetFontIndex(const AStyles: array of string; NeedAllStyles: boolean = false; NoMoreStyle: boolean = false): integer; override; @@ -101,13 +104,15 @@ function GetFamily(AName: string): TCustomFamilyCollectionItem; override; function GetFamilyCount: integer; override; function GetFontCount: integer; override; - + function RemoveAndFreeFamily(AFamily: TCustomFamilyCollectionItem): boolean; public constructor Create; override; procedure Clear; override; procedure BeginUpdate; override; procedure AddFolder(AFolder: string); override; + procedure RemoveFolder(AFolder: string); override; function AddFile(AFilename: string): boolean; override; + function RemoveFile(AFilename: string): boolean; override; function AddStream(AStream: TStream; AOwned: boolean): boolean; override; procedure EndUpdate; override; destructor Destroy; override; @@ -119,6 +124,12 @@ implementation +const + //one of these files will be used as a default font + ArialLikeFonts: array[0..8] of string = ('Helvetica', 'Helvetica Neue', + 'Arial', 'Nimbus Sans L', 'Microsoft Sans Serif', 'FreeSans', + 'Liberation Sans', 'DejaVu Sans Condensed', 'Tahoma'); + type { TFamilyEnumerator } @@ -268,10 +279,17 @@ end; procedure TFontCollectionItem.NotifyDestroy; -var i: integer; +var + listener: TFontCollectionItemDestroyListener; begin - for i := 0 to high(FDestroyListeners) do - FDestroyListeners[i](); + //the list of listeners may change during the process + //so it is safer to avoid the 'for' loop + while length(FDestroyListeners) > 0 do + begin + listener := FDestroyListeners[high(FDestroyListeners)]; + setlength(FDestroyListeners, length(FDestroyListeners)-1); + listener.NotifyProc(); + end; FDestroyListeners := nil; end; @@ -336,7 +354,7 @@ end; result := FFace; inc(FFaceUsage); - if Assigned(AListener) then + if Assigned(AListener.NotifyProc) then begin setlength(FDestroyListeners,length(FDestroyListeners)+1); FDestroyListeners[high(FDestroyListeners)] := AListener; @@ -347,7 +365,8 @@ var i,j: integer; begin for i := 0 to high(FDestroyListeners) do - if FDestroyListeners[i] = AListener then + if (FDestroyListeners[i].TargetObject = AListener.TargetObject) and + (FDestroyListeners[i].NotifyProc = AListener.NotifyProc) then begin for j := i to high(FDestroyListeners)-1 do FDestroyListeners[j] := FDestroyListeners[j+1]; @@ -457,6 +476,21 @@ inc(FStyleCount); end; +function TFamilyCollectionItem.RemoveStyle(AName: string): boolean; +var i,j: integer; +begin + for i := 0 to FStyleCount-1 do + if CompareText(FStyles[i],AName)=0 then + begin + for j := i to FStyleCount-2 do + FStyles[j] := FStyles[j+1]; + dec(FStyleCount); + result := true; + exit; + end; + result := false; +end; + function TFamilyCollectionItem.GetStyles: string; var i: integer; begin @@ -483,6 +517,31 @@ result := FStyleCount; end; +procedure TFamilyCollectionItem.RebuildStyleList(out ADuplicates: boolean); +var + i: Integer; + j: Integer; +begin + FStyleCount := 0; + ADuplicates := false; + for i := 0 to FFontCount-1 do + begin + FFonts[i].UsePostscriptStyle := true; + for j := 0 to FFonts[i].StyleCount -1 do + AddStyle(FFonts[i].Style[j]); + + //add regular style if no other style + if FFonts[i].StyleCount = 0 then AddStyle('Regular'); + + for j := 0 to i-1 do + if FFonts[j].Styles = FFonts[i].Styles then + begin + ADuplicates:= true; + break; + end; + end; +end; + constructor TFamilyCollectionItem.Create(AName: string); begin FFamilyName:= AName; @@ -494,15 +553,24 @@ end; procedure TFamilyCollectionItem.AddFont(AFontItem: TFontCollectionItem); -var i,j: integer; +var i: integer; DuplicateStyle: boolean; StyleNumber: integer; TempStyles,BaseStyle: string; begin + if AFontItem = nil then exit; + + for i := 0 to FFontCount-1 do + if FFonts[i] = AFontItem then exit; + + if AFontItem.Family <> nil then + raise exception.Create('This font already belongs to another family'); + if FFontCount = length(FFonts) then setlength(FFonts, length(FFonts)+4); FFonts[FFontCount] := AFontItem; + AFontItem.Family := self; inc(FFontCount); if FUsePostscriptStyle then AFontItem.UsePostscriptStyle := true; @@ -510,6 +578,9 @@ for i := 0 to AFontItem.StyleCount -1 do AddStyle(AFontItem.Style[i]); + //add regular style if no other style + if AFontItem.StyleCount = 0 then AddStyle('Regular'); + DuplicateStyle := false; for i := 0 to FFontCount-2 do if FFonts[i].Styles = AFontItem.Styles then @@ -521,21 +592,7 @@ if DuplicateStyle and not FUsePostscriptStyle then begin //try with postscript styles instead FUsePostscriptStyle:= true; - FStyleCount := 0; - DuplicateStyle := false; - for i := 0 to FFontCount-1 do - begin - FFonts[i].UsePostscriptStyle := true; - for j := 0 to FFonts[i].StyleCount -1 do - AddStyle(FFonts[i].Style[j]); - - for j := 0 to i-1 do - if FFonts[j].Styles = FFonts[i].Styles then - begin - DuplicateStyle:= true; - break; - end; - end; + RebuildStyleList(DuplicateStyle); end; if DuplicateStyle then @@ -558,8 +615,6 @@ until not DuplicateStyle; AFontItem.Information[ftiStyle] := TempStyles; end; - - if AFontItem.StyleCount = 0 then AddStyle('Regular'); end; function TFamilyCollectionItem.GetFont(const AStyles: array of string; @@ -627,6 +682,25 @@ result := GetFontIndex(StylesToArray(AStyle),NeedAllStyles,NoMoreStyle); end; +function TFamilyCollectionItem.RemoveFont(AFontItem: TCustomFontCollectionItem + ): boolean; +var i,j: integer; + dummy: boolean; +begin + for i := 0 to FFontCount-1 do + if FFonts[i] = AFontItem then + begin + for j := i to FFontCount-2 do + FFonts[j] := FFonts[j+1]; + dec(FFontCount); + AFontItem.Family := nil; + RebuildStyleList(dummy); + result := true; + exit; + end; + result := false; +end; + function TFamilyCollectionItem.GetFont(AStyle: string; NeedAllStyles: boolean; NoMoreStyle: boolean): TCustomFontCollectionItem; begin result := GetFontByStyles(AStyle); //exact match @@ -653,6 +727,17 @@ result := FFontList.Count; end; +function TFreeTypeFontCollection.RemoveAndFreeFamily( + AFamily: TCustomFamilyCollectionItem): boolean; +begin + if FFamilyList.Remove(Pointer(AFamily)) then + begin + result := true; + AFamily.Free; + end else + result := false; +end; + function TFreeTypeFontCollection.GetFamilyCount: integer; begin result := FFamilyList.Count; @@ -680,6 +765,8 @@ function TFreeTypeFontCollection.GetFamily(AName: string ): TCustomFamilyCollectionItem; +var + i,j: Integer; begin if AName = '' then begin @@ -687,14 +774,43 @@ exit; end; result := FindFamily(AName); - if (result = nil) and (CompareText(AName,'Arial')=0) then result := FindFamily('Helvetica'); - if (result = nil) and (CompareText(AName,'Helvetica')=0) then result := FindFamily('Arial'); + if result <> nil then exit; + + if (CompareText(AName,'Arial')=0) then + begin + if result = nil then result := FindFamily('Helvetica Neue'); + if result = nil then result := FindFamily('Helvetica'); + end else + if (CompareText(AName,'Helvetica')=0) then + begin + if result = nil then result := FindFamily('Helvetica Neue'); + if result = nil then result := FindFamily('Arial'); + end else + if (CompareText(AName,'Helvetica Neue')=0) then + begin + if result = nil then result := FindFamily('Helvetica'); + if result = nil then result := FindFamily('Arial'); + end; + if result <> nil then exit; + + for i := low(ArialLikeFonts) to high(ArialLikeFonts) do + if CompareText(AName,ArialLikeFonts[i])=0 then + begin + for j := 0 to high(ArialLikeFonts) do + begin + result := FindFamily(ArialLikeFonts[j]); + if result <> nil then break; + end; + break; + end; + if (result = nil) and (CompareText(AName,'Courier New')=0) then result := FindFamily('Nimbus Monospace'); if (result = nil) and (CompareText(AName,'Courier New')=0) then result := FindFamily('Courier'); if (result = nil) and (CompareText(AName,'Nimbus Monospace')=0) then result := FindFamily('Courier New'); if (result = nil) and (CompareText(AName,'Nimbus Monospace')=0) then result := FindFamily('Courier'); if (result = nil) and (CompareText(AName,'Courier')=0) then result := FindFamily('Courier New'); if (result = nil) and (CompareText(AName,'Courier')=0) then result := FindFamily('Nimbus Monospace'); + if (result = nil) and (CompareText(AName,'Times')=0) then result := FindFamily('Times New Roman'); if (result = nil) and (CompareText(AName,'Times')=0) then result := FindFamily('CG Times'); if (result = nil) and (CompareText(AName,'Times New Roman')=0) then result := FindFamily('Times'); @@ -751,6 +867,7 @@ function TFreeTypeFontCollection.GetFont(AFileName: string ): TCustomFontCollectionItem; begin + AFilename:= ExpandFileName(AFilename); result := FindFont(AFilename); end; @@ -780,6 +897,7 @@ files: TStringList; i: integer; begin + AFolder := ExpandFileName(AFolder); if (length(AFolder) <> 0) and (AFolder[length(AFolder)] <> PathDelim) then AFolder += PathDelim; @@ -801,12 +919,39 @@ files.Free; end; +procedure TFreeTypeFontCollection.RemoveFolder(AFolder: string); +var toBeDeleted: TStringList; + enumerator: TAvgLvlTreeNodeEnumerator; + i: Integer; +begin + AFolder := ExpandFileName(AFolder); + if (length(AFolder) <> 0) and (AFolder[length(AFolder)] <> PathDelim) then + AFolder += PathDelim; + + toBeDeleted := TStringList.Create; + enumerator := FFontList.GetEnumerator; + while enumerator.MoveNext do + begin + with TCustomFontCollectionItem(enumerator.Current.Data) do + begin + if copy(Filename, 1, length(AFolder)) = AFolder then + toBeDeleted.Add(Filename); + end; + end; + enumerator.Free; + + for i := 0 to toBeDeleted.Count-1 do + RemoveFile(toBeDeleted[i]); + toBeDeleted.Free; +end; + function TFreeTypeFontCollection.AddFile(AFilename: string): boolean; var info: TFreeTypeInformation; fName: string; item: TFontCollectionItem; f: TFamilyCollectionItem; begin + AFilename:= ExpandFileName(AFilename); result := false; BeginUpdate; try @@ -831,6 +976,27 @@ end; end; +function TFreeTypeFontCollection.RemoveFile(AFilename: string): boolean; +var fontItem : TCustomFontCollectionItem; + f: TFamilyCollectionItem; +begin + AFilename:= ExpandFileName(AFilename); + fontItem := GetFont(AFilename); + if (fontItem = nil) or not (fontItem.Family is TFamilyCollectionItem) then + begin + result := false; + exit; + end; + FFontList.Remove(Pointer(fontItem)); + f := fontItem.Family as TFamilyCollectionItem; + result := f.RemoveFont(fontItem); + if result then + begin + if f.FontCount = 0 then + RemoveAndFreeFamily(f); + end; +end; + function TFreeTypeFontCollection.AddStream(AStream: TStream; AOwned: boolean): boolean; var info: TFreeTypeInformation; fName: string; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazfreetypefpimagedrawer.pas lazarus-1.6+dfsg/components/lazutils/lazfreetypefpimagedrawer.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazfreetypefpimagedrawer.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazfreetypefpimagedrawer.pas 2015-05-19 16:11:36.000000000 +0000 @@ -0,0 +1,503 @@ +unit LazFreeTypeFPImageDrawer; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, EasyLazFreeType, FPimage; + +type + TLazIntfImageGetPixelAtProc = procedure(p: pointer; out Color: TFPColor); + TLazIntfImageSetPixelAtProc = procedure(p: pointer; const Color: TFPColor); + + { TFPImageFreeTypeDrawer } + + TFPImageFreeTypeDrawer = class(TFreeTypeDrawer) + private + FColor: TFPColor; + FCurX,FCurY: integer; + protected + FImage: TFPCustomImage; + procedure MoveToPixel(x,y: integer); virtual; + function GetCurrentColor: TFPColor; virtual; + procedure SetCurrentColorAndMoveRight(const AColor: TFPColor); virtual; + procedure MoveRight; virtual; + function GetClipRect: TRect; virtual; + protected + procedure RenderDirectly(x, y, tx: integer; data: pointer); + procedure RenderDirectlyClearType(x, y, tx: integer; data: pointer); + procedure InternalMergeColorOver(var merge: TFPColor; const c: TFPColor; calpha: word); inline; + procedure MergeColorOver(var merge: TFPColor; const c: TFPColor); inline; + procedure MergeColorOver(var merge: TFPColor; const c: TFPColor; ApplyOpacity: byte); inline; + procedure DrawPixelAndMoveRight(const c: TFPColor); + procedure DrawPixelAndMoveRight(const c: TFPColor; applyOpacity: byte); + procedure ClearTypePixelAndMoveRight(Cr,Cg,Cb: byte; const Color: TFPColor); + procedure UnclippedDrawPixel(x,y: integer; const c: TFPColor); + public + ClearTypeRGBOrder: boolean; + constructor Create(AImage: TFPCustomImage); virtual; + procedure DrawPixel(x,y: integer; const c: TFPColor); + procedure ClearTypePixel(x,y: integer; Cr,Cg,Cb: byte; const Color: TFPColor); + procedure SetVertLine(x,y1,y2: integer; const c: TFPColor); + procedure DrawVertLine(x,y1,y2: integer; const c: TFPColor); + procedure SetHorizLine(x1,y,x2: integer; const c: TFPColor); + procedure DrawHorizLine(x1,y,x2: integer; const c: TFPColor); + procedure FillPixels(const c: TFPColor); + procedure DrawText(AText: string; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor); override; + destructor Destroy; override; + property Image: TFPCustomImage read FImage; + end; + + { TFPMemoryImageWithScanline } + + TFPMemoryImageWithScanline = class(TFPMemoryImage) + protected + function GetScanline(y: integer): PFPColor; + procedure SetUsePalette ({%H-}Value:boolean);override; + public + property ScanLine[y: integer]: PFPColor read GetScanline; + end; + + { TFPImageWithScanlineFreeTypeDrawer } + + TFPImageWithScanlineFreeTypeDrawer= class(TFPImageFreeTypeDrawer) + protected + FCurrentColor: PFPColor; + procedure MoveToPixel(x,y: integer); override; + function GetCurrentColor: TFPColor; override; + procedure SetCurrentColorAndMoveRight(const AColor: TFPColor); override; + procedure MoveRight; override; + function GetClipRect: TRect; override; + public + constructor Create(AImage: TFPCustomImage); override; //requires TFPMemoryImageWithScanline + end; + +implementation + +{ TFPImageFreeTypeDrawer } + +procedure TFPImageFreeTypeDrawer.MergeColorOver(var merge: TFPColor; const c: TFPColor); +begin + InternalMergeColorOver(merge,c,c.alpha); +end; + +procedure TFPImageFreeTypeDrawer.MergeColorOver(var merge: TFPColor; + const c: TFPColor; ApplyOpacity: byte); +var + calpha: longword; +begin + calpha := c.alpha*applyOpacity div 255; + InternalMergeColorOver(merge,c,calpha); +end; + +procedure TFPImageFreeTypeDrawer.UnclippedDrawPixel(x, y: integer; const c: TFPColor); +var + merge: TFPColor; +begin + if c.alpha = 0 then exit; + MoveToPixel(x,y); + if c.alpha = $ffff then + SetCurrentColorAndMoveRight(c) + else + begin + merge := GetCurrentColor; + MergeColorOver(merge,c); + SetCurrentColorAndMoveRight(merge); + end; +end; + +procedure TFPImageFreeTypeDrawer.DrawPixelAndMoveRight(const c: TFPColor; applyOpacity: byte); +var + merge: TFPColor; + calpha: longword; +begin + calpha := c.alpha*applyOpacity div 255; + if calpha = 0 then + begin + MoveRight; + exit; + end; + if calpha = $ffff then + SetCurrentColorAndMoveRight(c) + else + begin + merge := GetCurrentColor; + InternalMergeColorOver(merge,c,calpha); + SetCurrentColorAndMoveRight(merge); + end; +end; + +procedure TFPImageFreeTypeDrawer.DrawPixelAndMoveRight(const c: TFPColor); +var + merge: TFPColor; +begin + if (c.alpha = 0) then + begin + MoveRight; + exit; + end; + if (c.alpha = $ffff) then + SetCurrentColorAndMoveRight(c) + else + begin + merge := GetCurrentColor; + InternalMergeColorOver(merge,c,c.alpha); + SetCurrentColorAndMoveRight(merge); + end; +end; + +procedure TFPImageFreeTypeDrawer.SetVertLine(x, y1, y2: integer; + const c: TFPColor); +var y: integer; +begin + with GetClipRect do + begin + if (x < Left) or (x >= Right) then exit; + if (y1 > y2) then + begin + y := y1; + y1:= y2; + y2 := y; + end; + if y1 < Top then y1 := Top; + if y2 >= Bottom then y2 := Bottom-1; + end; + for y := y1 to y2 do + begin + MoveToPixel(x,y1); + SetCurrentColorAndMoveRight(c); + end; +end; + +procedure TFPImageFreeTypeDrawer.DrawVertLine(x, y1, y2: integer; const c: TFPColor + ); +var y: integer; +begin + with GetClipRect do + begin + if (x < Left) or (x >= Right) then exit; + if (y1 > y2) then + begin + y := y1; + y1:= y2; + y2 := y; + end; + if y1 < Top then y1 := Top; + if y2 >= Bottom then y2 := Bottom-1; + end; + for y := y1 to y2 do + UnclippedDrawPixel(x,y, c); +end; + +procedure TFPImageFreeTypeDrawer.SetHorizLine(x1, y, x2: integer; const c: TFPColor); +var i: integer; +begin + with GetClipRect do + begin + if (y < Top) or (y >= Bottom) then exit; + if (x1 > x2) then + begin + i := x1; + x1:= x2; + x2 := i; + end; + if x1 < Left then x1 := Left; + if x2 >= Right then x2 := Right-1; + end; + MoveToPixel(x1,y); + i := x2-x1+1; + while i > 0 do + begin + SetCurrentColorAndMoveRight(c); + dec(i); + end; +end; + +procedure TFPImageFreeTypeDrawer.DrawHorizLine(x1, y, x2: integer; + const c: TFPColor); +var i: integer; +begin + with GetClipRect do + begin + if (y < Top) or (y >= Bottom) then exit; + if (x1 > x2) then + begin + i := x1; + x1:= x2; + x2 := i; + end; + if x1 < Left then x1 := Left; + if x2 >= Right then x2 := Right-1; + end; + MoveToPixel(x1,y); + i := x2-x1+1; + while i > 0 do + begin + DrawPixelAndMoveRight(c); + dec(i); + end; +end; + +procedure TFPImageFreeTypeDrawer.FillPixels(const c: TFPColor); +var yb: integer; +begin + with GetClipRect do + begin + for yb := Top to Bottom-1 do + SetHorizLine(Left,yb,Right-1,c); + end; +end; + +procedure TFPImageFreeTypeDrawer.ClearTypePixel(x, y: integer; Cr, Cg, Cb: byte; const Color: TFPColor); +begin + with GetClipRect do + if (x < Left) or (y < Top) or (x >= Right) or (y >= Bottom) then exit; + + MoveToPixel(x,y); + ClearTypePixelAndMoveRight(Cr,Cg,Cb,Color); +end; + +procedure TFPImageFreeTypeDrawer.ClearTypePixelAndMoveRight(Cr, Cg, Cb: byte; + const Color: TFPColor); +var merge,mergeClearType: TFPColor; + acc: longword; + keep,dont_keep: word; +begin + Cr := Cr*(color.alpha+1) shr 16; + Cg := Cg*(color.alpha+1) shr 16; + Cb := Cb*(color.alpha+1) shr 16; + acc := Cr+Cg+Cb; + if acc = 0 then exit; + + merge := GetCurrentColor; + mergeClearType.red := (merge.red * (not byte(Cr)) + + color.red * Cr + 128) div 255; + mergeClearType.green := (merge.green * (not byte(Cg)) + + color.green * Cg + 128) div 255; + mergeClearType.blue := (merge.blue * (not byte(Cb)) + + color.blue * Cb + 128) div 255; + mergeClearType.alpha := merge.alpha; + + if (mergeClearType.alpha = $ffff) then + SetCurrentColorAndMoveRight(mergeClearType) + else + begin + if Cg <> 0 then + MergeColorOver(merge,color,Cg); + dont_keep := mergeClearType.alpha shr 1; + if dont_keep > 0 then + begin + keep := 32767 - dont_keep; + merge.red := (merge.red * keep + mergeClearType.red * dont_keep) div 32767; + merge.green := (merge.green * keep + mergeClearType.green * dont_keep) div 32767; + merge.blue := (merge.blue * keep + mergeClearType.blue * dont_keep) div 32767; + merge.alpha := mergeClearType.alpha + ((not mergeClearType.alpha)*merge.alpha div 65535); + end; + SetCurrentColorAndMoveRight(merge); + end; +end; + +procedure TFPImageFreeTypeDrawer.MoveToPixel(x, y: integer); +begin + FCurX := x; + FCurY := y; +end; + +function TFPImageFreeTypeDrawer.GetCurrentColor: TFPColor; +begin + result := FImage.Colors[FCurX,FCurY]; +end; + +procedure TFPImageFreeTypeDrawer.SetCurrentColorAndMoveRight( + const AColor: TFPColor); +begin + FImage.Colors[FCurX,FCurY] := AColor; + Inc(FCurX); +end; + +procedure TFPImageFreeTypeDrawer.MoveRight; +begin + inc(FCurX); +end; + +function TFPImageFreeTypeDrawer.GetClipRect: TRect; +begin + result := rect(0,0,FImage.Width,FImage.Height); +end; + +procedure TFPImageFreeTypeDrawer.RenderDirectly( x,y,tx: integer; + data: pointer ); +var psrc: pbyte; + c: TFPColor; + tempValue: byte; +begin + //ensure rendering in bounds + with GetClipRect do + if (y < Top) or (y >= Bottom) or (x < Left) or (x > Right-tx) then exit; + + c := FColor; + psrc := pbyte(data); + + MoveToPixel(x,y); + inc(psrc,tx); + while tx > 0 do + begin + tempValue := (psrc-tx)^; + if tempValue <> 0 then + DrawPixelAndMoveRight(c,tempValue) + else + MoveRight; + dec(tx); + end; +end; + +procedure TFPImageFreeTypeDrawer.RenderDirectlyClearType(x, y, tx: integer; data: pointer); +var xb: integer; + psrc: pbyte; + Cr,Cg,Cb: byte; +begin + //ClearType position in third of pixels horizontally (multiple of 3) + x := x div 3; + tx := tx div 3; + //ensure rendering in bounds + with GetClipRect do + if (y < Top) or (y >= Bottom) or (x < Left) or (x > Right-tx) then exit; + if tx=0 then exit; + + psrc := pbyte(data); + Cr := (psrc^ + psrc^ + (psrc+1)^) div 3; + Cg := (psrc^+ (psrc+1)^ + (psrc+2)^) div 3; + if tx > 1 then + Cb := ((psrc+1)^ + (psrc+2)^ + (psrc+3)^) div 3 + else + Cb := ((psrc+1)^ + (psrc+2)^ + (psrc+2)^) div 3; + + MoveToPixel(x,y); + if Cr+Cg+Cb <> 0 then + ClearTypePixelAndMoveRight(Cr,Cg,Cb, FColor) + else + MoveRight; + inc(psrc,3); + for xb := 1 to tx-2 do + begin + Cr := ((psrc-1)^+ psrc^ + (psrc+1)^) div 3; + Cg := (psrc^+ (psrc+1)^ + (psrc+2)^) div 3; + Cb := ((psrc+1)^ + (psrc+2)^ + (psrc+3)^) div 3; + if Cr+Cg+Cb <> 0 then + ClearTypePixelAndMoveRight(Cr,Cg,Cb, FColor) + else + MoveRight; + inc(psrc,3); + end; + if tx > 1 then + begin + Cr := ((psrc-1)^+ psrc^ + (psrc+1)^) div 3; + Cg := (psrc^+ (psrc+1)^ + (psrc+2)^) div 3; + Cb := ((psrc+1)^ + (psrc+2)^ + (psrc+2)^) div 3; + if Cr+Cg+Cb <> 0 then + ClearTypePixelAndMoveRight(Cr,Cg,Cb, FColor); + end; +end; + +procedure TFPImageFreeTypeDrawer.InternalMergeColorOver(var merge: TFPColor; + const c: TFPColor; calpha: word); +var + a1f, a2f, a12, a12m: cardinal; +begin + if calpha = 0 then exit; + a12 := 65534 - ((not merge.alpha) * (not calpha) shr 16); + a12m := a12 shr 1; + + a1f := merge.alpha * (not calpha) shr 16; + a2f := calpha - (calpha shr 15); + + merge.red := (merge.red * a1f + c.red * a2f + a12m) div a12; + merge.green := (merge.green * a1f + c.green * a2f + a12m) div a12; + merge.blue := (merge.blue * a1f + c.blue * a2f + a12m) div a12; + merge.alpha := a12 + (a12 shr 15); +end; + +constructor TFPImageFreeTypeDrawer.Create(AImage: TFPCustomImage); +begin + ClearTypeRGBOrder:= true; + FImage := AImage; +end; + +procedure TFPImageFreeTypeDrawer.DrawPixel(x, y: integer; const c: TFPColor + ); +begin + with GetClipRect do + if (x < Left) or (y < Top) or (x >= Right) or (y >= Bottom) then exit; + UnclippedDrawPixel(x,y,c); +end; + +procedure TFPImageFreeTypeDrawer.DrawText(AText: string; AFont: TFreeTypeRenderableFont; x, y: single; + AColor: TFPColor); +begin + FColor := AColor; + if AFont.ClearType then + AFont.RenderText(AText, x, y, GetClipRect, @RenderDirectlyClearType) + else + AFont.RenderText(AText, x, y, GetClipRect, @RenderDirectly); +end; + +destructor TFPImageFreeTypeDrawer.Destroy; +begin + inherited Destroy; +end; + +{ TFPImageWithScanlineFreeTypeDrawer } + +procedure TFPImageWithScanlineFreeTypeDrawer.MoveToPixel(x, y: integer); +begin + FCurrentColor:= TFPMemoryImageWithScanline(FImage).ScanLine[y]+x; +end; + +function TFPImageWithScanlineFreeTypeDrawer.GetCurrentColor: TFPColor; +begin + result := FCurrentColor^; +end; + +procedure TFPImageWithScanlineFreeTypeDrawer.SetCurrentColorAndMoveRight( + const AColor: TFPColor); +begin + FCurrentColor^ := AColor; + inc(FCurrentColor); +end; + +procedure TFPImageWithScanlineFreeTypeDrawer.MoveRight; +begin + inc(FCurrentColor); +end; + +function TFPImageWithScanlineFreeTypeDrawer.GetClipRect: TRect; +begin + result := rect(0,0,FImage.Width,FImage.Height); +end; + +constructor TFPImageWithScanlineFreeTypeDrawer.Create(AImage: TFPCustomImage); +begin + inherited Create(AImage); + if not (AImage is TFPMemoryImageWithScanline) then + raise Exception.Create('Scanline not available'); +end; + +{ TFPMemoryImageWithScanline } + +function TFPMemoryImageWithScanline.GetScanline(y: integer): PFPColor; +begin + if (y < 0) or (y >= Height) then + raise ERangeError.Create('Scanline out of bounds'); + result := PFPColor(FData)+(y*Width); +end; + +procedure TFPMemoryImageWithScanline.SetUsePalette(Value: boolean); +begin + if Value then + raise Exception.Create('Palette not supported with scanlines'); +end; + +end. + + diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazloggerbase.pas lazarus-1.6+dfsg/components/lazutils/lazloggerbase.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazloggerbase.pas 2014-02-06 09:32:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazloggerbase.pas 2015-07-04 23:08:00.000000000 +0000 @@ -11,7 +11,7 @@ interface uses - Classes, SysUtils, types, math, LazClasses, FileUtil; + Classes, SysUtils, types, math, LazClasses, LazUTF8; type diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazlogger.pas lazarus-1.6+dfsg/components/lazutils/lazlogger.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazlogger.pas 2015-02-13 20:35:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazlogger.pas 2015-07-04 23:08:00.000000000 +0000 @@ -4,7 +4,7 @@ interface uses - Classes, SysUtils, types, math, LazUTF8, LazLoggerBase, LazClasses, FileUtil; + Classes, SysUtils, types, math, LazUTF8, LazLoggerBase, LazClasses, LazFileUtils; type diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazloggerprofiling.pas lazarus-1.6+dfsg/components/lazutils/lazloggerprofiling.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazloggerprofiling.pas 2013-09-19 13:58:38.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazloggerprofiling.pas 2015-03-18 18:52:45.000000000 +0000 @@ -49,7 +49,7 @@ // %0:s Current block, since enter // %1:s Sum of Nested blocks frame -// %2:s Paren block, since enter +// %2:s Parent block, since enter // %4:s Sum of Nested blocks in parent frame function DbgsMemUsed(AFormat: String = '%0:d'): string; function DbgsTimeUsed(AFormat: String = '%0:n'): string; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazutf16.pas lazarus-1.6+dfsg/components/lazutils/lazutf16.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazutf16.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazutf16.pas 2015-08-05 14:22:46.000000000 +0000 @@ -34,6 +34,8 @@ function UTF16Length(p: PWideChar; WordCount: PtrInt): PtrInt; function UTF16CharacterToUnicode(p: PWideChar; out CharLen: integer): Cardinal; function UnicodeToUTF16(u: cardinal): widestring; +function IsUTF16CharValid(AChar, ANextChar: WideChar): Boolean; +function IsUTF16StringValid(AWideStr: widestring): Boolean; function UnicodeLowercase(u: cardinal): cardinal; function UTF8LowerCaseViaTables(const s: string): string; @@ -113,6 +115,33 @@ Result:=system.widechar($D800+((u - $10000) shr 10))+system.widechar($DC00+((u - $10000) and $3ff)); end; +// Specification here: http://unicode.org/faq/utf_bom.html#utf16-7 +// Q: Are there any 16-bit values that are invalid? +// A: Unpaired surrogates are invalid in UTFs. These include any value in the +// range D800 to DBFF not followed by a value in the range DC00 to DFFF, +// or any value in the range DC00 to DFFF not preceded by a value in the range D800 to DBFF. [AF] +// +// Use ANextChar = #0 to indicate that there is no next char +function IsUTF16CharValid(AChar, ANextChar: WideChar): Boolean; +begin + if AChar = #0 then Exit(False); + Result := ((AChar >= #$D800) and (AChar <= #$DBFF)) and not ((ANextChar >= #$DC00) and (ANextChar <= #$DFFF)); + //Result := (Word(AChar) in [$D800..$DBFF]) and not (Word(ANextChar) in [$DC00..$DFFF]); <= generates range check error + Result := not Result; +end; + +function IsUTF16StringValid(AWideStr: widestring): Boolean; +var + i: Integer; +begin + Result := True; + for i := 1 to Length(AWideStr)-1 do + begin + Result := Result and IsUTF16CharValid(AWideStr[i], AWideStr[i+1]); + if not Result then Exit; + end; +end; + // Lowercase Unicode Tables which match UTF-16 but also UTF-32 var UnicodeLower00C0_00DE: array[$00C0..$00DE] of word; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazutf8classes.pas lazarus-1.6+dfsg/components/lazutils/lazutf8classes.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazutf8classes.pas 2015-03-01 13:55:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazutf8classes.pas 2015-03-01 13:55:40.000000000 +0000 @@ -119,6 +119,12 @@ constructor TFileStreamUTF8.Create(const AFileName: string; Mode: Word); begin Create(AFileName,Mode,438); + { Rights 438 is the default in the FCL TFileStream + Under Unix: + 438 = &666 = owner/group/others can read/write + Note: the real rights are "Rights and not umask" + Under Windows Rights is not used. + } end; constructor TFileStreamUTF8.Create(const AFileName: string; Mode: Word; Rights: Cardinal); diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazutf8.pas lazarus-1.6+dfsg/components/lazutils/lazutf8.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazutf8.pas 2015-02-20 14:29:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazutf8.pas 2015-12-24 22:17:53.000000000 +0000 @@ -18,20 +18,21 @@ {$mode objfpc}{$H+}{$inline on} -{$IF defined(EnableUTF8RTL) and (FPC_FULLVERSION<20701)} - {$error UTF8 in RTL requires fpc 2.7.1+} -{$ENDIF} +{$i lazutils_defines.inc} interface uses - {$IFDEF EnableUTF8RTL} + {$IFDEF UTF8_RTL} + {$ifdef unix} + cwstring, // UTF8 RTL on Unix requires this. Must be used although it pulls in clib. + {$endif} FPCAdds, {$ENDIF} {$ifdef windows} Windows, {$endif} - Classes, SysUtils; + Classes, SysUtils; // AnsiToUTF8 and UTF8ToAnsi need a widestring manager under Linux, BSD, MacOSX // but normally these OS use UTF-8 as system encoding so the widestringmanager @@ -40,20 +41,23 @@ procedure SetNeedRTLAnsi(NewValue: boolean); // UTF8ToSys works like UTF8ToAnsi but more independent of widestringmanager -function UTF8ToSys(const s: string): string; overload; {$IFDEF EnableUTF8RTL}inline;{$ENDIF} -function UTF8ToSys(const AFormatSettings: TFormatSettings): TFormatSettings; overload; {$IFDEF EnableUTF8RTL}inline;{$ENDIF} +function UTF8ToSys(const s: string): string; overload; {$IFDEF UTF8_RTL}inline;{$ENDIF} +function UTF8ToSys(const AFormatSettings: TFormatSettings): TFormatSettings; overload; {$IFDEF UTF8_RTL}inline;{$ENDIF} // SysToUTF8 works like AnsiToUTF8 but more independent of widestringmanager function SysToUTF8(const s: string): string; overload; function SysToUTF8(const AFormatSettings: TFormatSettings): TFormatSettings; overload; -function ConsoleToUTF8(const s: string): string;// converts OEM encoded string to UTF8 (used with some Windows specific functions) -function UTF8ToConsole(const s: string): string;// converts UTF8 string to console encoding (used by Write, WriteLn) -{$IFDEF MSWindows} +// converts OEM encoded string to UTF8 (used with some Windows specific functions) +function ConsoleToUTF8(const s: string): string; +// converts UTF8 string to console encoding (used by Write, WriteLn) +function UTF8ToConsole(const s: string): string; + // for all Windows supporting 8bit codepages (e.g. not WinCE) -function WinCPToUTF8(const s: string): string;// converts string in Windows code page to UTF8 (used with some Windows specific functions) -function UTF8ToWinCP(const s: string): string;// converts UTF8 string to Windows code page encoding (used by Write, WriteLn) -{$ENDIF} +// converts string in Windows code page to UTF8 (used with some Windows specific functions) +function WinCPToUTF8(const s: string): string; {$ifdef WinCe}inline;{$endif} +// converts UTF8 string to Windows code page encoding (used by Write, WriteLn) +function UTF8ToWinCP(const s: string): string; {$ifdef WinCe}inline;{$endif} function ParamStrUTF8(Param: Integer): string; @@ -62,7 +66,6 @@ function SysErrorMessageUTF8(ErrorCode: Integer): String; - function UTF8CharacterLength(p: PChar): integer; function UTF8Length(const s: string): PtrInt; function UTF8Length(p: PChar; ByteCount: PtrInt): PtrInt; @@ -88,8 +91,14 @@ function UTF8PosP(SearchForText: PChar; SearchForTextLen: SizeInt; SearchInText: PChar; SearchInTextLen: SizeInt): PChar; function UTF8Copy(const s: string; StartCharIndex, CharCount: PtrInt): string; +{$IFnDEF NO_CP_RTL} +procedure UTF8Delete(var s: Utf8String; StartCharIndex, CharCount: PtrInt); +{$ENDIF} procedure UTF8Delete(var s: String; StartCharIndex, CharCount: PtrInt); -procedure UTF8Insert(const source: String; var s: string; StartCharIndex: PtrInt); +{$IFnDEF NO_CP_RTL} +procedure UTF8Insert(const source: Utf8String; var s: Utf8String; StartCharIndex: PtrInt); +{$ENDIF} +procedure UTF8Insert(const source: String; var s: String; StartCharIndex: PtrInt); function UTF8StringReplace(const S, OldPattern, NewPattern: String; Flags: TReplaceFlags; ALanguage: string=''): String; @@ -97,6 +106,7 @@ function UTF8LowerString(const s: string): string; function UTF8UpperCase(const AInStr: string; ALanguage: string=''): string; function UTF8UpperString(const s: string): string; +function UTF8SwapCase(const AInStr: string; ALanguage: string=''): string; function FindInvalidUTF8Character(p: PChar; Count: PtrInt; StopOnNonUTF8: Boolean = true): PtrInt; function ValidUTF8String(const s: String): String; @@ -111,6 +121,9 @@ function UTF8QuotedStr(const S, Quote: string): string; //Utf8 version of MidStr is just Utf8Copy with same parameters, so it is not implemented here +function UTF8WrapText(S, BreakStr :string; BreakChars :TSysCharSet; MaxCol: integer): string; overload; +function UTF8WrapText(S :string; MaxCol :integer) :string; overload; + type TUTF8TrimFlag = ( u8tKeepStart, @@ -242,7 +255,7 @@ function UTF8ToSys(const s: string): string; begin - {$IFDEF EnableUTF8RTL} + {$IFDEF UTF8_RTL} Result:=s; {$ELSE} if NeedRTLAnsi and (not IsASCII(s)) then @@ -254,7 +267,7 @@ function SysToUTF8(const s: string): string; begin - {$IFDEF EnableUTF8RTL} + {$IFDEF UTF8_RTL} Result:=s; {$ELSE} if NeedRTLAnsi and (not IsASCII(s)) then @@ -288,13 +301,13 @@ end; function UTF8ToSys(const AFormatSettings: TFormatSettings): TFormatSettings; -{$IFNDEF EnableUTF8RTL} +{$IFnDEF UTF8_RTL} var i: Integer; {$ENDIF} begin Result := AFormatSettings; - {$IFNDEF EnableUTF8RTL} + {$IFnDEF UTF8_RTL} Result.CurrencyString := UTF8ToSys(AFormatSettings.CurrencyString); for i:=1 to 12 do begin Result.LongMonthNames[i] := UTF8ToSys(AFormatSettings.LongMonthNames[i]); @@ -880,6 +893,26 @@ end; end; +{$IFnDEF NO_CP_RTL} +procedure UTF8Delete(var s: Utf8String; StartCharIndex, CharCount: PtrInt); +var + tmp: String; +begin + tmp := RawByteString(s); + {.$IFDEF ACP_RTL} + { change code page without converting the data } + SetCodePage(RawByteString(tmp), CP_UTF8, False); + {.$ENDIF} + { keep refcount to 1 if it was 1, to avoid unnecessary copies } + s := ''; + UTF8Delete(tmp,StartCharIndex,CharCount); + { same as above } + s := RawByteString(tmp); + tmp := ''; + SetCodePage(RawByteString(s), CP_UTF8, False); +end; +{$ENDIF NO_ACP_RTL} + procedure UTF8Delete(var s: String; StartCharIndex, CharCount: PtrInt); var StartBytePos: PChar; @@ -898,7 +931,20 @@ end; end; -procedure UTF8Insert(const source: String; var s: string; StartCharIndex: PtrInt); +{$IFnDEF NO_CP_RTL} +{It's simper to copy the code from the variant with String parameters than writing a wrapper} +procedure UTF8Insert(const source: UTF8String; var s: UTF8string; + StartCharIndex: PtrInt); +var + StartBytePos: PChar; +begin + StartBytePos:=UTF8CharStart(PChar(s),length(s),StartCharIndex-1); + if StartBytePos <> nil then + Insert(source, s, StartBytePos-PChar(s)+1); +end; +{$ENDIF NO_CP_RTL} + +procedure UTF8Insert(const source: String; var s: String; StartCharIndex: PtrInt); var StartBytePos: PChar; begin @@ -949,6 +995,38 @@ end; { + UTF8SwapCase - a "naive" implementation that uses UTF8UpperCase and UTF8LowerCase. + It serves its purpose and performs OK for short and resonably long strings + but it should be rewritten in the future if better performance and lower + memory consumption is needed. + + AInStr - The input string. + ALanguage - The language. Use '' for maximum speed if one desires to ignore the language + (See UTF8LowerCase comment for more details on ALanguage parameter.) +} +function UTF8SwapCase(const AInStr: string; ALanguage: string=''): string; +var + xUpperCase: string; + xLowerCase: string; + I: Integer; +begin + if AInStr = '' then + Exit(''); + + xUpperCase := UTF8UpperCase(AInStr, ALanguage); + xLowerCase := UTF8LowerCase(AInStr, ALanguage); + if (Length(xUpperCase) <> Length(AInStr)) or (Length(xLowerCase) <> Length(AInStr)) then + Exit(AInStr);//something went wrong -> the lengths of utf8 strings changed + + SetLength(Result, Length(AInStr)); + for I := 1 to Length(AInStr) do + if AInStr[I] <> xUpperCase[I] then + Result[I] := xUpperCase[I] + else + Result[I] := xLowerCase[I]; +end; + +{ AInStr - The input string ALanguage - The language. Use '' for maximum speed if one desires to ignore the language The language should be specified in the format from ISO 639-1, @@ -2731,6 +2809,60 @@ Result+=copy(S,CopyPos-PChar(S)+1,p-CopyPos)+Quote; end; +function UTF8WrapText(S, BreakStr :string; BreakChars :TSysCharSet; MaxCol: integer): string; +var + P :PChar; + CharLen :integer; + RightSpace : Integer = 0; + N :integer = 0; + i : Integer; + j : Integer; + Len :integer = 0; + ResultLen, RP :Integer; +begin + Result := ''; + if (S = '') or (MaxCol = 0) or (BreakStr = '') or (BreakChars = []) then Exit; + P := PChar(S); + while P^ <> #0 do + begin + CharLen := UTF8CharacterLength(P); + i := 1; + j := 0; + ResultLen := Length(Result); + SetLength(Result, ResultLen + CharLen); + while i <= CharLen do + begin + Result[ResultLen + i] := (P + J)^; + Inc(i); + Inc(j); + end; + Inc(N); + if P^ = BreakStr[Length(BreakStr)] then + N := 0; + if N > MaxCol then + begin + Len := Length(Result); + RP := Len; + while not (Result[RP] in BreakChars) do + Dec(RP); + RightSpace := Len - RP; + if (RightSpace > 0) and (RightSpace < MaxCol) then + begin + Dec(P, RightSpace); + SetLength(Result, Len - RightSpace); + end; + Result := Result + BreakStr; + N := 0; + end; + Inc(P, CharLen); + end; +end; + +function UTF8WrapText(S :string; MaxCol: integer): string; +begin + Result := UTF8WrapText(S, LineEnding, [' ', '-', #9], MaxCol); +end; + function UTF8Trim(const s: string; Flags: TUTF8TrimFlags): string; var p: PChar; @@ -2855,8 +2987,9 @@ {------------------------------------------------------------------------------ Name: UTF8CompareStr Params: S1, S2 - UTF8 encoded strings - Returns: < 0 if S1 < S2, 0 if S1 = S2, > 0 if S2 > S1. - Compare 2 UTF8 encoded strings, case sensitive. + Returns: < 0 if S1 < S2, 0 if S1 = S2, > 0 if S1 > S2. + Compare two UTF8 encoded strings, case sensitive. + Internally it uses CompareMemRange, which returns -1 if a byte of S1 is lower than S2. ------------------------------------------------------------------------------} function UTF8CompareStr(const S1, S2: string): PtrInt; begin @@ -2892,10 +3025,11 @@ {------------------------------------------------------------------------------ Name: UTF8CompareText Params: S1, S2 - UTF8 encoded strings - Returns: < 0 if S1 < S2, 0 if S1 = S2, > 0 if S2 > S1. - Compare 2 UTF8 encoded strings, case insensitive. + Returns: < 0 if S1 < S2, 0 if S1 = S2, > 0 if S1 > S2. + Compare two UTF8 encoded strings, case insensitive. Note: Use this function instead of AnsiCompareText. This function guarantees proper collation on all supported platforms. + Internally it uses UTF8CompareStr. ------------------------------------------------------------------------------} function UTF8CompareText(const S1, S2: string): PtrInt; var diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazutf8sysutils.pas lazarus-1.6+dfsg/components/lazutils/lazutf8sysutils.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazutf8sysutils.pas 2014-04-01 18:02:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazutf8sysutils.pas 2015-05-12 14:24:43.000000000 +0000 @@ -1,4 +1,4 @@ -unit lazutf8sysutils; +unit LazUTF8SysUtils; {$mode objfpc}{$H+} diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazutils_defines.inc lazarus-1.6+dfsg/components/lazutils/lazutils_defines.inc --- lazarus-1.4.4+dfsg/components/lazutils/lazutils_defines.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazutils_defines.inc 2015-11-24 16:24:54.000000000 +0000 @@ -0,0 +1,18 @@ +// Add defines here. This file should be included in all LazUtils units headers + + +{$undef UTF8_RTL} +{$undef ACP_RTL} +{$undef NO_CP_RTL} + + +{$ifdef FPC_HAS_CPSTRING} + {$ifndef DisableUTF8RTL} + {$define UTF8_RTL} + {$else DisableUTF8RTL} + {$define ACP_RTL} + {$endif DisableUTF8RTL} +{$else FPC_HAS_CPSTRING} + {$define NO_CP_RTL} + {$undef DisableUTF8RTL} +{$endif FPC_HAS_CPSTRING} diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazutils.lpk lazarus-1.6+dfsg/components/lazutils/lazutils.lpk --- lazarus-1.4.4+dfsg/components/lazutils/lazutils.lpk 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazutils.lpk 2015-12-04 03:25:14.000000000 +0000 @@ -16,7 +16,7 @@ <Description Value="Useful units for Lazarus packages."/> <License Value="Modified LGPL-2"/> <Version Major="1"/> - <Files Count="77"> + <Files Count="80"> <Item1> <Filename Value="laz2_dom.pas"/> <UnitName Value="Laz2_DOM"/> @@ -139,7 +139,7 @@ </Item30> <Item31> <Filename Value="lazutf8sysutils.pas"/> - <UnitName Value="lazutf8sysutils"/> + <UnitName Value="LazUTF8SysUtils"/> </Item31> <Item32> <Filename Value="lazmethodlist.pas"/> @@ -295,37 +295,49 @@ <UnitName Value="laz2_xpath"/> </Item69> <Item70> - <Filename Value="dictionarystringlist.pas"/> - <UnitName Value="DictionaryStringList"/> + <Filename Value="unixlazutf8.inc"/> + <Type Value="Include"/> </Item70> <Item71> - <Filename Value="unixlazutf8.inc"/> + <Filename Value="winlazutf8.inc"/> <Type Value="Include"/> </Item71> <Item72> - <Filename Value="winlazutf8.inc"/> - <Type Value="Include"/> - </Item72> - <Item73> <Filename Value="lazloggerprofiling.pas"/> <UnitName Value="LazLoggerProfiling"/> - </Item73> - <Item74> + </Item72> + <Item73> <Filename Value="fpcadds.pas"/> <UnitName Value="FPCAdds"/> - </Item74> - <Item75> + </Item73> + <Item74> <Filename Value="lazutilities.pas"/> <UnitName Value="LazUtilities"/> - </Item75> - <Item76> + </Item74> + <Item75> <Filename Value="lazfglhash.pas"/> <UnitName Value="lazfglhash"/> + </Item75> + <Item76> + <Filename Value="lcsvutils.pas"/> + <UnitName Value="lcsvutils"/> </Item76> <Item77> <Filename Value="lazcollections.pas"/> - <UnitName Value="lazcollections"/> + <UnitName Value="lazCollections"/> </Item77> + <Item78> + <Filename Value="lazfreetypefpimagedrawer.pas"/> + <UnitName Value="LazFreeTypeFPImageDrawer"/> + </Item78> + <Item79> + <Filename Value="lookupstringlist.pas"/> + <UnitName Value="LookupStringList"/> + </Item79> + <Item80> + <Filename Value="lazutils_defines.inc"/> + <Type Value="Include"/> + </Item80> </Files> <LazDoc Paths="../../docs/xml/lazutils"/> <i18n> diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lazutils.pas lazarus-1.6+dfsg/components/lazutils/lazutils.pas --- lazarus-1.4.4+dfsg/components/lazutils/lazutils.pas 2015-05-18 22:54:40.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lazutils.pas 2015-12-04 03:25:14.000000000 +0000 @@ -10,13 +10,14 @@ Laz2_DOM, Laz2_XMLCfg, laz2_XMLRead, laz2_xmlutils, laz2_XMLWrite, Laz_DOM, Laz_XMLCfg, Laz_XMLRead, Laz_XMLStreaming, Laz_XMLWrite, LazFileUtils, LazFileCache, LazUTF8, LazDbgLog, PasWString, FileUtil, LazUTF8Classes, - Masks, LazUtilsStrConsts, LConvEncoding, lazutf16, lazutf8sysutils, + Masks, LazUtilsStrConsts, LConvEncoding, lazutf16, LazUTF8SysUtils, LazMethodList, AvgLvlTree, LazLogger, LazFreeType, TTCache, TTCalc, TTCMap, TTDebug, TTError, TTFile, TTGLoad, TTInterp, TTLoad, TTMemory, TTObjs, TTProfile, TTRASTER, TTTables, TTTypes, EasyLazFreeType, LazLoggerBase, LazLoggerDummy, LazClasses, LazFreeTypeFontCollection, LazConfigStorage, - UTF8Process, laz2_xpath, DictionaryStringList, LazLoggerProfiling, FPCAdds, - LazUtilities, lazfglhash, lazCollections, LazarusPackageIntf; + UTF8Process, laz2_xpath, LazLoggerProfiling, FPCAdds, LazUtilities, + lazfglhash, lcsvutils, lazCollections, + LazFreeTypeFPImageDrawer, LookupStringList, LazarusPackageIntf; implementation diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lconvencoding.pas lazarus-1.6+dfsg/components/lazutils/lconvencoding.pas --- lazarus-1.4.4+dfsg/components/lazutils/lconvencoding.pas 2014-10-08 20:19:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lconvencoding.pas 2015-11-24 16:23:18.000000000 +0000 @@ -13,19 +13,62 @@ {$mode objfpc}{$H+} +{$i lazutils_defines.inc} + interface { $Define DisableAsianCodePages} +//{$if FPC_FULLVERSION >= 30000} + {$IFDEF UTF8_RTL} + // Windows provides conversion functions. + // Unix: unit cwstring provides conversion functions which are used by default UTF-8 encoding system. + {$Define UseSystemCPConv} // use system conversions + {$ENDIF} +//{$IFEND} +{$ifdef UseLCPConv}{$undef UseSystemCPConv}{$endif} uses SysUtils, Classes, dos, LazUTF8 {$IFDEF EnableIconvEnc},iconvenc{$ENDIF}; + +//encoding names const EncodingUTF8 = 'utf8'; EncodingAnsi = 'ansi'; EncodingUTF8BOM = 'utf8bom'; // UTF-8 with byte order mark EncodingUCS2LE = 'ucs2le'; // UCS 2 byte little endian EncodingUCS2BE = 'ucs2be'; // UCS 2 byte big endian + + EncodingCP1250 = 'cp1250'; + EncodingCP1251 = 'cp1251'; + EncodingCP1252 = 'cp1252'; + EncodingCP1253 = 'cp1253'; + EncodingCP1254 = 'cp1254'; + EncodingCP1255 = 'cp1255'; + EncodingCP1256 = 'cp1256'; + EncodingCP1257 = 'cp1257'; + EncodingCP1258 = 'cp1258'; + + EncodingCP437 = 'cp437'; + EncodingCP850 = 'cp850'; + EncodingCP852 = 'cp852'; + EncodingCP866 = 'cp866'; + EncodingCP874 = 'cp874'; + + EncodingCP932 = 'cp932'; + EncodingCP936 = 'cp936'; + EncodingCP949 = 'cp949'; + EncodingCP950 = 'cp950'; + + EncodingCPMac = 'macintosh'; + EncodingCPKOI8 = 'koi8'; + + EncodingCPIso1 = 'iso88591'; + EncodingCPIso2 = 'iso88592'; + EncodingCPIso15 = 'iso885915'; + +//signatures in ansi +const UTF8BOM = #$EF#$BB#$BF; UTF16BEBOM = #$FE#$FF; UTF16LEBOM = #$FF#$FE; @@ -34,7 +77,12 @@ function GuessEncoding(const s: string): string; -function ConvertEncoding(const s, FromEncoding, ToEncoding: string): string; +function ConvertEncodingFromUTF8(const s, ToEncoding: string; out Encoded: boolean + {$ifdef FPC_HAS_CPSTRING}; SetTargetCodePage: boolean = false{$endif}): string; +function ConvertEncodingToUTF8(const s, FromEncoding: string; out Encoded: boolean): string; +// For UTF8 use the above functions, they save you one parameter +function ConvertEncoding(const s, FromEncoding, ToEncoding: string + {$ifdef FPC_HAS_CPSTRING}; SetTargetCodePage: boolean = false{$endif}): string; // This routine should obtain the encoding utilized by ansistring in the RTL function GetDefaultTextEncoding: string; @@ -46,11 +94,16 @@ type TConvertEncodingFunction = function(const s: string): string; + {$ifdef FPC_HAS_CPSTRING} + TConvertUTF8ToEncodingFunc = function(const s: string; SetTargetCodePage: boolean = false): RawByteString; + {$else} + TConvertUTF8ToEncodingFunc = function(const s: string): string; + {$endif} TCharToUTF8Table = array[char] of PChar; TUnicodeToCharID = function(Unicode: cardinal): integer; var ConvertAnsiToUTF8: TConvertEncodingFunction = nil; - ConvertUTF8ToAnsi: TConvertEncodingFunction = nil; + ConvertUTF8ToAnsi: TConvertUTF8ToEncodingFunc = nil; function UTF8BOMToUTF8(const s: string): string; // UTF8 with BOM function ISO_8859_1ToUTF8(const s: string): string; // central europe @@ -71,12 +124,35 @@ function CP866ToUTF8(const s: string): string; // DOS and Windows console's cyrillic function CP874ToUTF8(const s: string): string; // thai function KOI8ToUTF8(const s: string): string; // russian cyrillic -function SingleByteToUTF8(const s: string; - const Table: TCharToUTF8Table): string; +function MacintoshToUTF8(const s: string): string; // Macintosh, alias Mac OS Roman +function SingleByteToUTF8(const s: string; const Table: TCharToUTF8Table): string; function UCS2LEToUTF8(const s: string): string; // UCS2-LE 2byte little endian function UCS2BEToUTF8(const s: string): string; // UCS2-BE 2byte big endian function UTF8ToUTF8BOM(const s: string): string; // UTF8 with BOM +{$ifdef FPC_HAS_CPSTRING} +function UTF8ToISO_8859_1(const s: string; SetTargetCodePage: boolean = false): RawByteString; // central europe +function UTF8ToISO_8859_2(const s: string; SetTargetCodePage: boolean = false): RawByteString; // eastern europe +function UTF8ToISO_8859_15(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Western European languages +function UTF8ToCP1250(const s: string; SetTargetCodePage: boolean = false): RawByteString; // central europe +function UTF8ToCP1251(const s: string; SetTargetCodePage: boolean = false): RawByteString; // cyrillic +function UTF8ToCP1252(const s: string; SetTargetCodePage: boolean = false): RawByteString; // latin 1 +function UTF8ToCP1253(const s: string; SetTargetCodePage: boolean = false): RawByteString; // greek +function UTF8ToCP1254(const s: string; SetTargetCodePage: boolean = false): RawByteString; // turkish +function UTF8ToCP1255(const s: string; SetTargetCodePage: boolean = false): RawByteString; // hebrew +function UTF8ToCP1256(const s: string; SetTargetCodePage: boolean = false): RawByteString; // arabic +function UTF8ToCP1257(const s: string; SetTargetCodePage: boolean = false): RawByteString; // baltic +function UTF8ToCP1258(const s: string; SetTargetCodePage: boolean = false): RawByteString; // vietnam +function UTF8ToCP437(const s: string; SetTargetCodePage: boolean = false): RawByteString; // DOS central europe +function UTF8ToCP850(const s: string; SetTargetCodePage: boolean = false): RawByteString; // DOS western europe +function UTF8ToCP852(const s: string; SetTargetCodePage: boolean = false): RawByteString; // DOS central europe +function UTF8ToCP866(const s: string; SetTargetCodePage: boolean = false): RawByteString; // DOS and Windows console's cyrillic +function UTF8ToCP874(const s: string; SetTargetCodePage: boolean = false): RawByteString; // thai +function UTF8ToKOI8(const s: string; SetTargetCodePage: boolean = false): RawByteString; // russian cyrillic +function UTF8ToKOI8U(const s: string; SetTargetCodePage: boolean = false): RawByteString; // ukrainian cyrillic +function UTF8ToKOI8RU(const s: string; SetTargetCodePage: boolean = false): RawByteString; // belarussian cyrillic +function UTF8ToMacintosh(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Macintosh, alias Mac OS Roman +{$ELSE} function UTF8ToISO_8859_1(const s: string): string; // central europe function UTF8ToISO_8859_15(const s: string): string; // Western European languages function UTF8ToISO_8859_2(const s: string): string; // eastern europe @@ -97,12 +173,15 @@ function UTF8ToKOI8(const s: string): string; // russian cyrillic function UTF8ToKOI8U(const s: string): string; // ukrainian cyrillic function UTF8ToKOI8RU(const s: string): string; // belarussian cyrillic -function UTF8ToSingleByte(const s: string; - const UTF8CharConvFunc: TUnicodeToCharID): string; +function UTF8ToMacintosh(const s: string): string; // Macintosh, alias Mac OS Roman +{$ENDIF} +// custom conversion +function UTF8ToSingleByte(const s: string; const UTF8CharConvFunc: TUnicodeToCharID): string; + function UTF8ToUCS2LE(const s: string): string; // UCS2-LE 2byte little endian without BOM function UTF8ToUCS2BE(const s: string): string; // UCS2-BE 2byte big endian without BOM -{$IFNDEF DisableAsianCodePages} +{$IFnDEF DisableAsianCodePages} // Asian encodings function CP932ToUTF8(const s: string): string; // Japanese function CP936ToUTF8(const s: string): string; // Chinese @@ -111,13 +190,19 @@ function DBCSToUTF8(const s: string; CodeP: integer): string; +{$ifdef FPC_HAS_CPSTRING} +function UTF8ToCP932(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Japanese +function UTF8ToCP936(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Chinese, essentially the same as GB 2312 and a predecessor to GB 18030 +function UTF8ToCP949(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Korea +function UTF8ToCP950(const s: string; SetTargetCodePage: boolean = false): RawByteString; // Chinese Complex +{$ELSE} function UTF8ToCP932(const s: string): string; // Japanese function UTF8ToCP936(const s: string): string; // Chinese, essentially the same as GB 2312 and a predecessor to GB 18030 function UTF8ToCP949(const s: string): string; // Korea function UTF8ToCP950(const s: string): string; // Chinese Complex - -function UTF8ToDBCS(const s: string; - const UTF8CharConvFunc: TUnicodeToCharID): string; +{$ENDIF} +// Common function used by all UTF8ToXXX functions. +function UTF8ToDBCS(const s: string; const UTF8CharConvFunc: TUnicodeToCharID): string; {$ENDIF} procedure GetSupportedEncodings(List: TStrings); @@ -128,10 +213,11 @@ uses Windows; {$ENDIF} -var EncodingValid: boolean = false; - DefaultTextEncoding: string = EncodingAnsi; +var + EncodingValid: boolean = false; + DefaultTextEncoding: string = EncodingAnsi; -{$IFNDEF DisableAsianCodePages} +{$IFnDEF DisableAsianCodePages} {$include asiancodepages.inc} {$include asiancodepagefunctions.inc} {$ENDIF} @@ -159,7 +245,7 @@ end; {$ELSE} {$IFNDEF Darwin} -function GetUnixEncoding:string; +function GetUnixEncoding: string; var Lang: string; i: integer; @@ -4888,6 +4974,265 @@ '' // #255 ); + ArrayMacintoshToUTF8: TCharToUTF8Table = ( + #0, // #0 + #1, // #1 + #2, // #2 + #3, // #3 + #4, // #4 + #5, // #5 + #6, // #6 + #7, // #7 + #8, // #8 + #9, // #9 + #10, // #10 + #11, // #11 + #12, // #12 + #13, // #13 + #14, // #14 + #15, // #15 + #16, // #16 + #17, // #17 + #18, // #18 + #19, // #19 + #20, // #20 + #21, // #21 + #22, // #22 + #23, // #23 + #24, // #24 + #25, // #25 + #26, // #26 + #27, // #27 + #28, // #28 + #29, // #29 + #30, // #30 + #31, // #31 + ' ', // ' ' + '!', // '!' + '"', // '"' + '#', // '#' + '$', // '$' + '%', // '%' + '&', // '&' + '''', // '''' + '(', // '(' + ')', // ')' + '*', // '*' + '+', // '+' + ',', // ',' + '-', // '-' + '.', // '.' + '/', // '/' + '0', // '0' + '1', // '1' + '2', // '2' + '3', // '3' + '4', // '4' + '5', // '5' + '6', // '6' + '7', // '7' + '8', // '8' + '9', // '9' + ':', // ':' + ';', // ';' + '<', // '<' + '=', // '=' + '>', // '>' + '?', // '?' + '@', // '@' + 'A', // 'A' + 'B', // 'B' + 'C', // 'C' + 'D', // 'D' + 'E', // 'E' + 'F', // 'F' + 'G', // 'G' + 'H', // 'H' + 'I', // 'I' + 'J', // 'J' + 'K', // 'K' + 'L', // 'L' + 'M', // 'M' + 'N', // 'N' + 'O', // 'O' + 'P', // 'P' + 'Q', // 'Q' + 'R', // 'R' + 'S', // 'S' + 'T', // 'T' + 'U', // 'U' + 'V', // 'V' + 'W', // 'W' + 'X', // 'X' + 'Y', // 'Y' + 'Z', // 'Z' + '[', // '[' + '\', // '\' + ']', // ']' + '^', // '^' + '_', // '_' + '`', // '`' + 'a', // 'a' + 'b', // 'b' + 'c', // 'c' + 'd', // 'd' + 'e', // 'e' + 'f', // 'f' + 'g', // 'g' + 'h', // 'h' + 'i', // 'i' + 'j', // 'j' + 'k', // 'k' + 'l', // 'l' + 'm', // 'm' + 'n', // 'n' + 'o', // 'o' + 'p', // 'p' + 'q', // 'q' + 'r', // 'r' + 's', // 's' + 't', // 't' + 'u', // 'u' + 'v', // 'v' + 'w', // 'w' + 'x', // 'x' + 'y', // 'y' + 'z', // 'z' + '{', // '{' + '|', // '|' + '}', // '}' + '~', // '~' + #127, // #127 + #195#132, // #128 + #195#133, // #129 + #195#135, // #130 + #195#137, // #131 + #195#145, // #132 + #195#150, // #133 + #195#156, // #134 + #195#161, // #135 + #195#160, // #136 + #195#162, // #137 + #195#164, // #138 + #195#163, // #139 + #195#165, // #140 + #195#167, // #141 + #195#169, // #142 + #195#168, // #143 + #195#170, // #144 + #195#171, // #145 + #195#173, // #146 + #195#172, // #147 + #195#174, // #148 + #195#175, // #149 + #195#177, // #150 + #195#179, // #151 + #195#178, // #152 + #195#180, // #153 + #195#182, // #154 + #195#181, // #155 + #195#186, // #156 + #195#185, // #157 + #195#187, // #158 + #195#188, // #159 + #226#128#160, // #160 + #194#176, // #161 + #194#162, // #162 + #194#163, // #163 + #194#167, // #164 + #226#128#162, // #165 + #194#182, // #166 + #195#159, // #167 + #194#174, // #168 + #194#169, // #169 + #226#132#162, // #170 + #194#180, // #171 + #194#168, // #172 + #226#137#160, // #173 + #195#134, // #174 + #195#152, // #175 + #226#136#158, // #176 + #194#177, // #177 + #226#137#164, // #178 + #226#137#165, // #179 + #194#165, // #180 + #194#181, // #181 + #226#136#130, // #182 + #226#136#145, // #183 + #226#136#143, // #184 + #207#128, // #185 + #226#136#171, // #186 + #194#170, // #187 + #194#186, // #188 + #206#169, // #189 + #195#166, // #190 + #195#184, // #191 + #194#191, // #192 + #194#161, // #193 + #194#172, // #194 + #226#136#154, // #195 + #198#146, // #196 + #226#137#136, // #197 + #206#148, // #198 + #194#171, // #199 + #194#187, // #200 + #226#128#166, // #201 + #194#160, // #202 + #195#128, // #203 + #195#131, // #204 + #195#149, // #205 + #197#146, // #206 + #197#147, // #207 + #226#128#147, // #208 + #226#128#148, // #209 + #226#128#156, // #210 + #226#128#157, // #211 + #226#128#152, // #212 + #226#128#153, // #213 + #195#183, // #214 + #226#151#138, // #215 + #195#191, // #216 + #197#184, // #217 + #226#129#132, // #218 + #226#130#172, // #219 + #226#128#185, // #220 + #226#128#186, // #221 + #239#172#129, // #222 + #239#172#130, // #223 + #226#128#161, // #224 + #194#183, // #225 + #226#128#154, // #226 + #226#128#158, // #227 + #226#128#176, // #228 + #195#130, // #229 + #195#138, // #230 + #195#129, // #231 + #195#139, // #232 + #195#136, // #233 + #195#141, // #234 + #195#142, // #235 + #195#143, // #236 + #195#140, // #237 + #195#147, // #238 + #195#148, // #239 + #238#128#158, // #240 + #195#146, // #241 + #195#154, // #242 + #195#155, // #243 + #195#153, // #244 + #196#177, // #245 + #203#134, // #246 + #203#156, // #247 + #194#175, // #248 + #203#152, // #249 + #203#153, // #250 + #203#154, // #251 + #194#184, // #252 + #203#157, // #253 + #203#155, // #254 + #203#135 // #255 + ); + function UTF8BOMToUTF8(const s: string): string; begin Result:=copy(s,4,length(s)); @@ -4983,8 +5328,12 @@ Result:=SingleByteToUTF8(s,ArrayKOI8ToUTF8); end; -function SingleByteToUTF8(const s: string; const Table: TCharToUTF8Table - ): string; +function MacintoshToUTF8(const s: string): string; +begin + Result:=SingleByteToUTF8(s,ArrayMacintoshToUTF8); +end; + +function SingleByteToUTF8(const s: string; const Table: TCharToUTF8Table): string; var len: Integer; i: Integer; @@ -4994,7 +5343,7 @@ c: Char; begin if s='' then begin - Result:=s; + Result:=''; exit; end; len:=length(s); @@ -5085,319 +5434,16 @@ SetLength(Result,len); end; -function UnicodeToCP1250(Unicode: cardinal): integer; +function UTF8ToUTF8BOM(const s: string): string; +begin + Result:=UTF8BOM+s; +end; + +{$IfNdef UseSystemCPConv} +function UnicodeToCP1256(Unicode: cardinal): integer; begin case Unicode of - 0..127,129,131,136,144,152: Result:=Unicode; - 160: Result:=160; - 164: Result:=164; - 166..169: Result:=Unicode; - 171..174: Result:=Unicode; - 176..177: Result:=Unicode; - 180..184: Result:=Unicode; - 187: Result:=187; - 193..194: Result:=Unicode; - 196: Result:=196; - 199: Result:=199; - 201: Result:=201; - 203: Result:=203; - 205..206: Result:=Unicode; - 211..212: Result:=Unicode; - 214..215: Result:=Unicode; - 218: Result:=218; - 220..221: Result:=Unicode; - 223: Result:=223; - 225..226: Result:=Unicode; - 228: Result:=228; - 231: Result:=231; - 233: Result:=233; - 235: Result:=235; - 237..238: Result:=Unicode; - 243..244: Result:=Unicode; - 246..247: Result:=Unicode; - 250: Result:=250; - 252..253: Result:=Unicode; - 258: Result:=195; - 259: Result:=227; - 260: Result:=165; - 261: Result:=185; - 262: Result:=198; - 263: Result:=230; - 268: Result:=200; - 269: Result:=232; - 270: Result:=207; - 271: Result:=239; - 272: Result:=208; - 273: Result:=240; - 280: Result:=202; - 281: Result:=234; - 282: Result:=204; - 283: Result:=236; - 313: Result:=197; - 314: Result:=229; - 317: Result:=188; - 318: Result:=190; - 321: Result:=163; - 322: Result:=179; - 323: Result:=209; - 324: Result:=241; - 327: Result:=210; - 328: Result:=242; - 336: Result:=213; - 337: Result:=245; - 340: Result:=192; - 341: Result:=224; - 344: Result:=216; - 345: Result:=248; - 346: Result:=140; - 347: Result:=156; - 350: Result:=170; - 351: Result:=186; - 352: Result:=138; - 353: Result:=154; - 354: Result:=222; - 355: Result:=254; - 356: Result:=141; - 357: Result:=157; - 366: Result:=217; - 367: Result:=249; - 368: Result:=219; - 369: Result:=251; - 377: Result:=143; - 378: Result:=159; - 379: Result:=175; - 380: Result:=191; - 381: Result:=142; - 382: Result:=158; - 711: Result:=161; - 728: Result:=162; - 729: Result:=255; - 731: Result:=178; - 733: Result:=189; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1251(Unicode: cardinal): integer; -begin - case Unicode of - 0..127,152: Result:=Unicode; - 160: Result:=160; - 164: Result:=164; - 166..167: Result:=Unicode; - 169: Result:=169; - 171..174: Result:=Unicode; - 176..177: Result:=Unicode; - 181..183: Result:=Unicode; - 187: Result:=187; - 1025: Result:=168; - 1026..1027: Result:=Unicode-898; - 1028: Result:=170; - 1029: Result:=189; - 1030: Result:=178; - 1031: Result:=175; - 1032: Result:=163; - 1033: Result:=138; - 1034: Result:=140; - 1035: Result:=142; - 1036: Result:=141; - 1038: Result:=161; - 1039: Result:=143; - 1040..1103: Result:=Unicode-848; - 1105: Result:=184; - 1106: Result:=144; - 1107: Result:=131; - 1108: Result:=186; - 1109: Result:=190; - 1110: Result:=179; - 1111: Result:=191; - 1112: Result:=188; - 1113: Result:=154; - 1114: Result:=156; - 1115: Result:=158; - 1116: Result:=157; - 1118: Result:=162; - 1119: Result:=159; - 1168: Result:=165; - 1169: Result:=180; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=136; - 8470: Result:=185; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1252(Unicode: cardinal): integer; -begin - case Unicode of - 0..127,129,141,143,144,157: Result:=Unicode; - 160..255: Result:=Unicode; - 338: Result:=140; - 339: Result:=156; - 352: Result:=138; - 353: Result:=154; - 376: Result:=159; - 381: Result:=142; - 382: Result:=158; - 402: Result:=131; - 710: Result:=136; - 732: Result:=152; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1253(Unicode: cardinal): integer; -begin - case Unicode of - 0..127,129,136,138,140,141,142,143,144,152,154,156,157,158,159,170: Result:=Unicode; - 160: Result:=160; - 163..169: Result:=Unicode; - 171..174: Result:=Unicode; - 176..179: Result:=Unicode; - 181..183: Result:=Unicode; - 187: Result:=187; - 189: Result:=189; - 402: Result:=131; - 900: Result:=180; - 901..902: Result:=Unicode-740; - 904..906: Result:=Unicode-720; - 908: Result:=188; - 910..975: Result:=Unicode-720; - 8211..8212: Result:=Unicode-8061; - 8213: Result:=175; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1254(Unicode: cardinal): integer; -begin - case Unicode of - 0..127,129,141,142,143,144,157,158: Result:=Unicode; - 160..207: Result:=Unicode; - 209..220: Result:=Unicode; - 223..239: Result:=Unicode; - 241..252: Result:=Unicode; - 255: Result:=255; - 286: Result:=208; - 287: Result:=240; - 304: Result:=221; - 305: Result:=253; - 338: Result:=140; - 339: Result:=156; - 350: Result:=222; - 351: Result:=254; - 352: Result:=138; - 353: Result:=154; - 376: Result:=159; - 402: Result:=131; - 710: Result:=136; - 732: Result:=152; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1255(Unicode: cardinal): integer; -begin - case Unicode of - 0..127,129,138,140..144,154: Result:=Unicode; - 156..163: Result:=Unicode; - 165..169: Result:=Unicode; - 171..185: Result:=Unicode; - 187..191: Result:=Unicode; - 215: Result:=170; - 247: Result:=186; - 402: Result:=131; - 710: Result:=136; - 732: Result:=152; - 1456..1475: Result:=Unicode-1264; - 1488..1516: Result:=Unicode-1264; - 1517: Result:=255; - 1520..1535: Result:=Unicode-1308; - 8206..8207: Result:=Unicode-7953; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8362: Result:=164; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1256(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; + 0..127: Result:=Unicode; 160: Result:=160; 162..169: Result:=Unicode; 171..185: Result:=Unicode; @@ -5459,171 +5505,7 @@ end; end; -function UnicodeToCP1257(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 129: Result:=129; - 131: Result:=131; - 136: Result:=136; - 138: Result:=138; - 140: Result:=140; - 144: Result:=144; - 152: Result:=152; - 154: Result:=154; - 156: Result:=156; - 159..167: Result:=Unicode; - 168: Result:=141; - 169: Result:=169; - 171..174: Result:=Unicode; - 175: Result:=157; - 176..183: Result:=Unicode; - 184: Result:=143; - 185: Result:=185; - 187..190: Result:=Unicode; - 196..197: Result:=Unicode; - 198: Result:=175; - 201: Result:=201; - 211: Result:=211; - 213..215: Result:=Unicode; - 216: Result:=168; - 220: Result:=220; - 223: Result:=223; - 228..229: Result:=Unicode; - 230: Result:=191; - 233: Result:=233; - 243: Result:=243; - 245..247: Result:=Unicode; - 248: Result:=184; - 252: Result:=252; - 256: Result:=194; - 257: Result:=226; - 260: Result:=192; - 261: Result:=224; - 262: Result:=195; - 263: Result:=227; - 268: Result:=200; - 269: Result:=232; - 274: Result:=199; - 275: Result:=231; - 278: Result:=203; - 279: Result:=235; - 280: Result:=198; - 281: Result:=230; - 290: Result:=204; - 291: Result:=236; - 298: Result:=206; - 299: Result:=238; - 302: Result:=193; - 303: Result:=225; - 310: Result:=205; - 311: Result:=237; - 315: Result:=207; - 316: Result:=239; - 321: Result:=217; - 322: Result:=249; - 323: Result:=209; - 324: Result:=241; - 325: Result:=210; - 326: Result:=242; - 332: Result:=212; - 333: Result:=244; - 342: Result:=170; - 343: Result:=186; - 346: Result:=218; - 347: Result:=250; - 352: Result:=208; - 353: Result:=240; - 362: Result:=219; - 363: Result:=251; - 370: Result:=216; - 371: Result:=248; - 377: Result:=202; - 378: Result:=234; - 379: Result:=221; - 380: Result:=253; - 381: Result:=222; - 382: Result:=254; - 711: Result:=142; - 729: Result:=255; - 731: Result:=158; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP1258(Unicode: cardinal): integer; -begin - case Unicode of - 0..127: Result:=Unicode; - 129: Result:=129; - 138: Result:=138; - 141..144: Result:=Unicode; - 154: Result:=154; - 157..158: Result:=Unicode; - 160..194: Result:=Unicode; - 196..203: Result:=Unicode; - 205..207: Result:=Unicode; - 209: Result:=209; - 211..212: Result:=Unicode; - 214..220: Result:=Unicode; - 223..226: Result:=Unicode; - 228..235: Result:=Unicode; - 237..239: Result:=Unicode; - 241: Result:=241; - 243..244: Result:=Unicode; - 246..252: Result:=Unicode; - 255: Result:=255; - 258: Result:=195; - 259: Result:=227; - 272: Result:=208; - 273: Result:=240; - 338: Result:=140; - 339: Result:=156; - 376: Result:=159; - 402: Result:=131; - 416: Result:=213; - 417: Result:=245; - 431: Result:=221; - 432: Result:=253; - 710: Result:=136; - 732: Result:=152; - 768: Result:=204; - 769: Result:=236; - 771: Result:=222; - 777: Result:=210; - 803: Result:=242; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8218: Result:=130; - 8220..8221: Result:=Unicode-8073; - 8222: Result:=132; - 8224..8225: Result:=Unicode-8090; - 8226: Result:=149; - 8230: Result:=133; - 8240: Result:=137; - 8249: Result:=139; - 8250: Result:=155; - 8363: Result:=254; - 8364: Result:=128; - 8482: Result:=153; - else Result:=-1; - end; -end; - -function UnicodeToCP437(Unicode: cardinal): integer; +function UnicodeToCP437(Unicode: cardinal): integer; begin case Unicode of 0..127: Result:=Unicode; @@ -5677,6 +5559,16 @@ 251: Result:=150; 252: Result:=129; 255: Result:=152; + 262: Result := 93; + 263: Result := 125; + 268: Result := 94; + 269: Result := 126; + 272: Result := 92; + 273: Result := 124; + 381: Result := 64; + 382: Result := 96; + 352: Result := 91; + 353: Result := 123; 402: Result:=159; 915: Result:=226; 920: Result:=233; @@ -5792,9 +5684,9 @@ 199: Result:=128; 200: Result:=212; 201: Result:=144; - 202..203: Result:=Unicode--8; + 202..203: Result:=Unicode+8; 204: Result:=222; - 205..207: Result:=Unicode--9; + 205..207: Result:=Unicode+9; 208: Result:=209; 209: Result:=165; 210: Result:=227; @@ -5805,7 +5697,7 @@ 215: Result:=158; 216: Result:=157; 217: Result:=235; - 218..219: Result:=Unicode--15; + 218..219: Result:=Unicode+15; 220: Result:=154; 221: Result:=237; 222: Result:=232; @@ -5896,7 +5788,7 @@ 199: Result:=128; 201: Result:=144; 203: Result:=211; - 205..206: Result:=Unicode--9; + 205..206: Result:=Unicode+9; 211: Result:=224; 212: Result:=226; 214: Result:=153; @@ -6067,222 +5959,943 @@ end; end; -function UnicodeToCP874(Unicode: cardinal): integer; +function UnicodeToKOI8(Unicode: cardinal): integer; +begin + case Unicode of + 0..127: Result:=Unicode; + 1040..1041: Result:=Unicode-815; + 1042: Result:=247; + 1043: Result:=231; + 1044..1045: Result:=Unicode-816; + 1046: Result:=246; + 1047: Result:=250; + 1048..1055: Result:=Unicode-815; + 1056..1059: Result:=Unicode-814; + 1060: Result:=230; + 1061: Result:=232; + 1062: Result:=227; + 1063: Result:=254; + 1064: Result:=251; + 1065: Result:=253; + 1067: Result:=249; + 1068: Result:=248; + 1069: Result:=252; + 1070: Result:=224; + 1071: Result:=241; + 1072..1073: Result:=Unicode-879; + 1074: Result:=215; + 1075: Result:=199; + 1076..1077: Result:=Unicode-880; + 1078: Result:=214; + 1079: Result:=218; + 1080..1087: Result:=Unicode-879; + 1088..1091: Result:=Unicode-878; + 1092: Result:=198; + 1093: Result:=200; + 1094: Result:=195; + 1095: Result:=222; + 1096: Result:=219; + 1097: Result:=221; + 1098: Result:=223; + 1099: Result:=217; + 1100: Result:=216; + 1101: Result:=220; + 1102: Result:=192; + 1103: Result:=209; + else Result:=-1; + end; +end; + +function UnicodeToKOI8U(Unicode: cardinal): integer; +begin + case Unicode of + 1025: Result:=179; + 1028: Result:=180; + 1030..1031: Result:=Unicode-848; + 1105: Result:=163; + 1108: Result:=164; + 1110..1111: Result:=Unicode-944; + 1168: Result:=189; + 1169: Result:=173; + else + Result:=UnicodeToKOI8(Unicode); + end; +end; + +function UnicodeToKOI8RU(Unicode: cardinal): integer; +begin + case Unicode of + 1038: Result:=190; + 1118: Result:=174; + else + Result:=UnicodeToKOI8U(Unicode); + end; +end; + +function UnicodeToISO_8859_1(Unicode: cardinal): integer; +begin + case Unicode of + 0..255: Result:=Unicode; + else Result:=-1; + end; +end; + +function UnicodeToISO_8859_15(Unicode: cardinal): integer; +begin + case Unicode of + 0..255: Result:=Unicode; + 8364: Result:=164; + 352: Result:=166; + 353: Result:=168; + 381: Result:=180; + 382: Result:=184; + 338: Result:=188; + 339: Result:=189; + 376: Result:=190; + else Result:=-1; + end; +end; + +function UnicodeToISO_8859_2(Unicode: cardinal): integer; +begin + case Unicode of + 0..127: Result:=Unicode; + 128..160: Result:=Unicode; + 164: Result:=164; + 167..168: Result:=Unicode; + 173: Result:=173; + 176: Result:=176; + 180: Result:=180; + 184: Result:=184; + 193..194: Result:=Unicode; + 196: Result:=196; + 199: Result:=199; + 201: Result:=201; + 203: Result:=203; + 205..206: Result:=Unicode; + 211..212: Result:=Unicode; + 214..215: Result:=Unicode; + 218: Result:=218; + 220..221: Result:=Unicode; + 223: Result:=223; + 225..226: Result:=Unicode; + 228: Result:=228; + 231: Result:=231; + 233: Result:=233; + 235: Result:=235; + 237..238: Result:=Unicode; + 243..244: Result:=Unicode; + 246..247: Result:=Unicode; + 250: Result:=250; + 252..253: Result:=Unicode; + 258: Result:=195; + 259: Result:=227; + 260: Result:=161; + 261: Result:=177; + 262: Result:=198; + 263: Result:=230; + 268: Result:=200; + 269: Result:=232; + 270: Result:=207; + 271: Result:=239; + 272: Result:=208; + 273: Result:=240; + 280: Result:=202; + 281: Result:=234; + 282: Result:=204; + 283: Result:=236; + 313: Result:=197; + 314: Result:=229; + 317: Result:=165; + 318: Result:=181; + 321: Result:=163; + 322: Result:=179; + 323: Result:=209; + 324: Result:=241; + 327: Result:=210; + 328: Result:=242; + 336: Result:=213; + 337: Result:=245; + 340: Result:=192; + 341: Result:=224; + 344: Result:=216; + 345: Result:=248; + 346: Result:=166; + 347: Result:=182; + 350: Result:=170; + 351: Result:=186; + 352: Result:=169; + 353: Result:=185; + 354: Result:=222; + 355: Result:=254; + 356: Result:=171; + 357: Result:=187; + 366: Result:=217; + 367: Result:=249; + 368: Result:=219; + 369: Result:=251; + 377: Result:=172; + 378: Result:=188; + 379: Result:=175; + 380: Result:=191; + 381: Result:=174; + 382: Result:=190; + 711: Result:=183; + 728: Result:=162; + 729: Result:=255; + 731: Result:=178; + 733: Result:=189; + else Result:=-1; + end; +end; + +function UnicodeToMacintosh(Unicode: cardinal): integer; +begin + case Unicode of + 0..127: Result:=Unicode; + 160: Result:=202; + 161: Result:=193; + 162..163: Result:=Unicode; + 165: Result:=180; + 167: Result:=164; + 168: Result:=172; + 169: Result:=169; + 170: Result:=187; + 171: Result:=199; + 172: Result:=194; + 174: Result:=168; + 175: Result:=248; + 176: Result:=161; + 177: Result:=177; + 180: Result:=171; + 181: Result:=181; + 182: Result:=166; + 183: Result:=225; + 184: Result:=252; + 186: Result:=188; + 187: Result:=200; + 191: Result:=192; + 192: Result:=203; + 193: Result:=231; + 194: Result:=229; + 195: Result:=204; + 196..197: Result:=Unicode-68; + 198: Result:=174; + 199: Result:=130; + 200: Result:=233; + 201: Result:=131; + 202: Result:=230; + 203: Result:=232; + 204: Result:=237; + 205..207: Result:=Unicode+29; + 209: Result:=132; + 210: Result:=241; + 211..212: Result:=Unicode+27; + 213: Result:=205; + 214: Result:=133; + 216: Result:=175; + 217: Result:=244; + 218..219: Result:=Unicode+24; + 220: Result:=134; + 223: Result:=167; + 224: Result:=136; + 225: Result:=135; + 226: Result:=137; + 227: Result:=139; + 228: Result:=138; + 229: Result:=140; + 230: Result:=190; + 231: Result:=141; + 232: Result:=143; + 233: Result:=142; + 234..235: Result:=Unicode-90; + 236: Result:=147; + 237: Result:=146; + 238..239: Result:=Unicode-90; + 241: Result:=150; + 242: Result:=152; + 243: Result:=151; + 244: Result:=153; + 245: Result:=155; + 246: Result:=154; + 247: Result:=214; + 248: Result:=191; + 249: Result:=157; + 250: Result:=156; + 251..252: Result:=Unicode-93; + 255: Result:=216; + 305: Result:=245; + 338..339: Result:=Unicode-132; + 376: Result:=217; + 402: Result:=196; + 710: Result:=246; + 711: Result:=255; + 728..730: Result:=Unicode-479; + 731: Result:=254; + 732: Result:=247; + 733: Result:=253; + 916: Result:=198; + 937: Result:=189; + 960: Result:=185; + 8211..8212: Result:=Unicode-8003; + 8216..8217: Result:=Unicode-8004; + 8218: Result:=226; + 8220..8221: Result:=Unicode-8010; + 8222: Result:=227; + 8224: Result:=160; + 8225: Result:=224; + 8226: Result:=165; + 8230: Result:=201; + 8240: Result:=228; + 8249..8250: Result:=Unicode-8029; + 8260: Result:=218; + 8364: Result:=219; + 8482: Result:=170; + 8706: Result:=182; + 8719: Result:=184; + 8721: Result:=183; + 8730: Result:=195; + 8734: Result:=176; + 8747: Result:=186; + 8776: Result:=197; + 8800: Result:=173; + 8804..8805: Result:=Unicode-8626; + 9674: Result:=215; + 57374: Result:=240; + 64257..64258: Result:=Unicode-64035; + else Result:=-1; + end; +end; +{$endif} + +function UnicodeToCP1250(Unicode: cardinal): integer; +begin + case Unicode of + 0..127,129,131,136,144,152: Result:=Unicode; + 160: Result:=160; + 164: Result:=164; + 166..169: Result:=Unicode; + 171..174: Result:=Unicode; + 176..177: Result:=Unicode; + 180..184: Result:=Unicode; + 187: Result:=187; + 193..194: Result:=Unicode; + 196: Result:=196; + 199: Result:=199; + 201: Result:=201; + 203: Result:=203; + 205..206: Result:=Unicode; + 211..212: Result:=Unicode; + 214..215: Result:=Unicode; + 218: Result:=218; + 220..221: Result:=Unicode; + 223: Result:=223; + 225..226: Result:=Unicode; + 228: Result:=228; + 231: Result:=231; + 233: Result:=233; + 235: Result:=235; + 237..238: Result:=Unicode; + 243..244: Result:=Unicode; + 246..247: Result:=Unicode; + 250: Result:=250; + 252..253: Result:=Unicode; + 258: Result:=195; + 259: Result:=227; + 260: Result:=165; + 261: Result:=185; + 262: Result:=198; + 263: Result:=230; + 268: Result:=200; + 269: Result:=232; + 270: Result:=207; + 271: Result:=239; + 272: Result:=208; + 273: Result:=240; + 280: Result:=202; + 281: Result:=234; + 282: Result:=204; + 283: Result:=236; + 313: Result:=197; + 314: Result:=229; + 317: Result:=188; + 318: Result:=190; + 321: Result:=163; + 322: Result:=179; + 323: Result:=209; + 324: Result:=241; + 327: Result:=210; + 328: Result:=242; + 336: Result:=213; + 337: Result:=245; + 340: Result:=192; + 341: Result:=224; + 344: Result:=216; + 345: Result:=248; + 346: Result:=140; + 347: Result:=156; + 350: Result:=170; + 351: Result:=186; + 352: Result:=138; + 353: Result:=154; + 354: Result:=222; + 355: Result:=254; + 356: Result:=141; + 357: Result:=157; + 366: Result:=217; + 367: Result:=249; + 368: Result:=219; + 369: Result:=251; + 377: Result:=143; + 378: Result:=159; + 379: Result:=175; + 380: Result:=191; + 381: Result:=142; + 382: Result:=158; + 711: Result:=161; + 728: Result:=162; + 729: Result:=255; + 731: Result:=178; + 733: Result:=189; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8364: Result:=128; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP1251(Unicode: cardinal): integer; +begin + case Unicode of + 0..127,152: Result:=Unicode; + 160: Result:=160; + 164: Result:=164; + 166..167: Result:=Unicode; + 169: Result:=169; + 171..174: Result:=Unicode; + 176..177: Result:=Unicode; + 181..183: Result:=Unicode; + 187: Result:=187; + 1025: Result:=168; + 1026..1027: Result:=Unicode-898; + 1028: Result:=170; + 1029: Result:=189; + 1030: Result:=178; + 1031: Result:=175; + 1032: Result:=163; + 1033: Result:=138; + 1034: Result:=140; + 1035: Result:=142; + 1036: Result:=141; + 1038: Result:=161; + 1039: Result:=143; + 1040..1103: Result:=Unicode-848; + 1105: Result:=184; + 1106: Result:=144; + 1107: Result:=131; + 1108: Result:=186; + 1109: Result:=190; + 1110: Result:=179; + 1111: Result:=191; + 1112: Result:=188; + 1113: Result:=154; + 1114: Result:=156; + 1115: Result:=158; + 1116: Result:=157; + 1118: Result:=162; + 1119: Result:=159; + 1168: Result:=165; + 1169: Result:=180; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8364: Result:=136; + 8470: Result:=185; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP1252(Unicode: cardinal): integer; +begin + case Unicode of + 0..127,129,141,143,144,157: Result:=Unicode; + 160..255: Result:=Unicode; + 338: Result:=140; + 339: Result:=156; + 352: Result:=138; + 353: Result:=154; + 376: Result:=159; + 381: Result:=142; + 382: Result:=158; + 402: Result:=131; + 710: Result:=136; + 732: Result:=152; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8364: Result:=128; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP1253(Unicode: cardinal): integer; +begin + case Unicode of + 0..127,129,136,138,140,141,142,143,144,152,154,156,157,158,159,170: Result:=Unicode; + 160: Result:=160; + 163..169: Result:=Unicode; + 171..174: Result:=Unicode; + 176..179: Result:=Unicode; + 181..183: Result:=Unicode; + 187: Result:=187; + 189: Result:=189; + 402: Result:=131; + 900: Result:=180; + 901..902: Result:=Unicode-740; + 904..906: Result:=Unicode-720; + 908: Result:=188; + 910..975: Result:=Unicode-720; + 8211..8212: Result:=Unicode-8061; + 8213: Result:=175; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8364: Result:=128; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP1254(Unicode: cardinal): integer; +begin + case Unicode of + 0..127,129,141,142,143,144,157,158: Result:=Unicode; + 160..207: Result:=Unicode; + 209..220: Result:=Unicode; + 223..239: Result:=Unicode; + 241..252: Result:=Unicode; + 255: Result:=255; + 286: Result:=208; + 287: Result:=240; + 304: Result:=221; + 305: Result:=253; + 338: Result:=140; + 339: Result:=156; + 350: Result:=222; + 351: Result:=254; + 352: Result:=138; + 353: Result:=154; + 376: Result:=159; + 402: Result:=131; + 710: Result:=136; + 732: Result:=152; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8364: Result:=128; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP1255(Unicode: cardinal): integer; +begin + case Unicode of + 0..127,129,138,140..144,154: Result:=Unicode; + 156..163: Result:=Unicode; + 165..169: Result:=Unicode; + 171..185: Result:=Unicode; + 187..191: Result:=Unicode; + 215: Result:=170; + 247: Result:=186; + 402: Result:=131; + 710: Result:=136; + 732: Result:=152; + 1456..1475: Result:=Unicode-1264; + 1488..1516: Result:=Unicode-1264; + 1517: Result:=255; + 1520..1535: Result:=Unicode-1308; + 8206..8207: Result:=Unicode-7953; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8362: Result:=164; + 8364: Result:=128; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP1257(Unicode: cardinal): integer; +begin + case Unicode of + 0..127: Result:=Unicode; + 129: Result:=129; + 131: Result:=131; + 136: Result:=136; + 138: Result:=138; + 140: Result:=140; + 144: Result:=144; + 152: Result:=152; + 154: Result:=154; + 156: Result:=156; + 159..167: Result:=Unicode; + 168: Result:=141; + 169: Result:=169; + 171..174: Result:=Unicode; + 175: Result:=157; + 176..183: Result:=Unicode; + 184: Result:=143; + 185: Result:=185; + 187..190: Result:=Unicode; + 196..197: Result:=Unicode; + 198: Result:=175; + 201: Result:=201; + 211: Result:=211; + 213..215: Result:=Unicode; + 216: Result:=168; + 220: Result:=220; + 223: Result:=223; + 228..229: Result:=Unicode; + 230: Result:=191; + 233: Result:=233; + 243: Result:=243; + 245..247: Result:=Unicode; + 248: Result:=184; + 252: Result:=252; + 256: Result:=194; + 257: Result:=226; + 260: Result:=192; + 261: Result:=224; + 262: Result:=195; + 263: Result:=227; + 268: Result:=200; + 269: Result:=232; + 274: Result:=199; + 275: Result:=231; + 278: Result:=203; + 279: Result:=235; + 280: Result:=198; + 281: Result:=230; + 290: Result:=204; + 291: Result:=236; + 298: Result:=206; + 299: Result:=238; + 302: Result:=193; + 303: Result:=225; + 310: Result:=205; + 311: Result:=237; + 315: Result:=207; + 316: Result:=239; + 321: Result:=217; + 322: Result:=249; + 323: Result:=209; + 324: Result:=241; + 325: Result:=210; + 326: Result:=242; + 332: Result:=212; + 333: Result:=244; + 342: Result:=170; + 343: Result:=186; + 346: Result:=218; + 347: Result:=250; + 352: Result:=208; + 353: Result:=240; + 362: Result:=219; + 363: Result:=251; + 370: Result:=216; + 371: Result:=248; + 377: Result:=202; + 378: Result:=234; + 379: Result:=221; + 380: Result:=253; + 381: Result:=222; + 382: Result:=254; + 711: Result:=142; + 729: Result:=255; + 731: Result:=158; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8364: Result:=128; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP1258(Unicode: cardinal): integer; +begin + case Unicode of + 0..127: Result:=Unicode; + 129: Result:=129; + 138: Result:=138; + 141..144: Result:=Unicode; + 154: Result:=154; + 157..158: Result:=Unicode; + 160..194: Result:=Unicode; + 196..203: Result:=Unicode; + 205..207: Result:=Unicode; + 209: Result:=209; + 211..212: Result:=Unicode; + 214..220: Result:=Unicode; + 223..226: Result:=Unicode; + 228..235: Result:=Unicode; + 237..239: Result:=Unicode; + 241: Result:=241; + 243..244: Result:=Unicode; + 246..252: Result:=Unicode; + 255: Result:=255; + 258: Result:=195; + 259: Result:=227; + 272: Result:=208; + 273: Result:=240; + 338: Result:=140; + 339: Result:=156; + 376: Result:=159; + 402: Result:=131; + 416: Result:=213; + 417: Result:=245; + 431: Result:=221; + 432: Result:=253; + 710: Result:=136; + 732: Result:=152; + 768: Result:=204; + 769: Result:=236; + 771: Result:=222; + 777: Result:=210; + 803: Result:=242; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8218: Result:=130; + 8220..8221: Result:=Unicode-8073; + 8222: Result:=132; + 8224..8225: Result:=Unicode-8090; + 8226: Result:=149; + 8230: Result:=133; + 8240: Result:=137; + 8249: Result:=139; + 8250: Result:=155; + 8363: Result:=254; + 8364: Result:=128; + 8482: Result:=153; + else Result:=-1; + end; +end; + +function UnicodeToCP874(Unicode: cardinal): integer; +begin + case Unicode of + 0..127: Result:=Unicode; + 129..132: Result:=Unicode; + 134..144: Result:=Unicode; + 152..160: Result:=Unicode; + 219..222: Result:=Unicode; + 252..255: Result:=Unicode; + 3585..3642: Result:=Unicode-3424; + 3647..3675: Result:=Unicode-3424; + 8211..8212: Result:=Unicode-8061; + 8216..8217: Result:=Unicode-8071; + 8220..8221: Result:=Unicode-8073; + 8226: Result:=149; + 8230: Result:=133; + 8364: Result:=128; + else Result:=-1; + end; +end; + +//{$if FPC_FULLVERSION >= 20701} +{$IFDEF FPC_HAS_CPSTRING} +procedure InternalUTF8ToCP(const s: string; TargetCodePage: TSystemCodePage; + SetTargetCodePage: boolean; + const UTF8CharConvFunc: TUnicodeToCharID; + out TheResult: RawByteString); inline; +begin + if not Assigned(UTF8CharConvFunc) then + begin + TheResult:=s; + SetCodePage(TheResult, TargetCodePage, True); + if not SetTargetCodePage then + SetCodePage(TheResult, CP_ACP, False); + end else begin + TheResult:=UTF8ToSingleByte(s,UTF8CharConvFunc); + if SetTargetCodePage then + SetCodePage(TheResult, TargetCodePage, False); + end; +end; + +function UTF8ToISO_8859_1(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToCP(s,28591,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToISO_8859_1{$endif},Result); +end; + +function UTF8ToISO_8859_2(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToCP(s,28592,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToISO_8859_2{$endif},Result); +end; + +function UTF8ToISO_8859_15(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToCP(s,28605,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToISO_8859_15{$endif},Result); +end; + +function UTF8ToCP1250(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + // system conversion fails for character #129 -> using table + InternalUTF8ToCP(s,1250,SetTargetCodePage,@UnicodeToCP1250,Result); +end; + +function UTF8ToCP1251(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + // system conversion fails for character #152 -> using table + InternalUTF8ToCP(s,1251,SetTargetCodePage,@UnicodeToCP1251,Result); +end; + +function UTF8ToCP1252(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + // system conversion fails for character #128 -> using table + InternalUTF8ToCP(s,1252,SetTargetCodePage,@UnicodeToCP1252,Result); +end; + +function UTF8ToCP1253(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + // system conversion fails for character #129 -> using table + InternalUTF8ToCP(s,1253,SetTargetCodePage,@UnicodeToCP1253,Result); +end; + +function UTF8ToCP1254(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + // system conversion fails for character #129 -> using table + InternalUTF8ToCP(s,1254,SetTargetCodePage,@UnicodeToCP1254,Result); +end; + +function UTF8ToCP1255(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + // system conversion fails for character #129 -> using table + InternalUTF8ToCP(s,1255,SetTargetCodePage,@UnicodeToCP1255,Result); +end; + +function UTF8ToCP1256(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToCP(s,1256,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToCP1256{$endif},Result); +end; + +function UTF8ToCP1257(const s: string; SetTargetCodePage: boolean): RawByteString; begin - case Unicode of - 0..127: Result:=Unicode; - 129..132: Result:=Unicode; - 134..144: Result:=Unicode; - 152..160: Result:=Unicode; - 219..222: Result:=Unicode; - 252..255: Result:=Unicode; - 3585..3642: Result:=Unicode-3424; - 3647..3675: Result:=Unicode-3424; - 8211..8212: Result:=Unicode-8061; - 8216..8217: Result:=Unicode-8071; - 8220..8221: Result:=Unicode-8073; - 8226: Result:=149; - 8230: Result:=133; - 8364: Result:=128; - else Result:=-1; - end; + // system conversion fails for character #129 -> using table + InternalUTF8ToCP(s,1257,SetTargetCodePage,@UnicodeToCP1257,Result); end; -function UnicodeToKOI8(Unicode: cardinal): integer; +function UTF8ToCP1258(const s: string; SetTargetCodePage: boolean): RawByteString; begin - case Unicode of - 0..127: Result:=Unicode; - 1040..1041: Result:=Unicode-815; - 1042: Result:=247; - 1043: Result:=231; - 1044..1045: Result:=Unicode-816; - 1046: Result:=246; - 1047: Result:=250; - 1048..1055: Result:=Unicode-815; - 1056..1059: Result:=Unicode-814; - 1060: Result:=230; - 1061: Result:=232; - 1062: Result:=227; - 1063: Result:=254; - 1064: Result:=251; - 1065: Result:=253; - 1067: Result:=249; - 1068: Result:=248; - 1069: Result:=252; - 1070: Result:=224; - 1071: Result:=241; - 1072..1073: Result:=Unicode-879; - 1074: Result:=215; - 1075: Result:=199; - 1076..1077: Result:=Unicode-880; - 1078: Result:=214; - 1079: Result:=218; - 1080..1087: Result:=Unicode-879; - 1088..1091: Result:=Unicode-878; - 1092: Result:=198; - 1093: Result:=200; - 1094: Result:=195; - 1095: Result:=222; - 1096: Result:=219; - 1097: Result:=221; - 1098: Result:=223; - 1099: Result:=217; - 1100: Result:=216; - 1101: Result:=220; - 1102: Result:=192; - 1103: Result:=209; - else Result:=-1; - end; + // system conversion fails for character #129 -> using table + InternalUTF8ToCP(s,1258,SetTargetCodePage,@UnicodeToCP1258,Result); end; -function UnicodeToKOI8U(Unicode: cardinal): integer; +function UTF8ToCP437(const s: string; SetTargetCodePage: boolean): RawByteString; begin - case Unicode of - 1025: Result:=179; - 1028: Result:=180; - 1030..1031: Result:=Unicode-848; - 1105: Result:=163; - 1108: Result:=164; - 1110..1111: Result:=Unicode-944; - 1168: Result:=189; - 1169: Result:=173; - else - Result:=UnicodeToKOI8(Unicode); - end; + InternalUTF8ToCP(s,437,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToCP437{$endif},Result); end; -function UnicodeToKOI8RU(Unicode: cardinal): integer; +function UTF8ToCP850(const s: string; SetTargetCodePage: boolean): RawByteString; begin - case Unicode of - 1038: Result:=190; - 1118: Result:=174; - else - Result:=UnicodeToKOI8U(Unicode); - end; + InternalUTF8ToCP(s,850,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToCP850{$endif},Result); end; -function UnicodeToISO_8859_1(Unicode: cardinal): integer; +function UTF8ToCP852(const s: string; SetTargetCodePage: boolean): RawByteString; begin - case Unicode of - 0..255: Result:=Unicode; - else Result:=-1; - end; + InternalUTF8ToCP(s,852,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToCP852{$endif},Result); end; -function UnicodeToISO_8859_15(Unicode: cardinal): integer; +function UTF8ToCP866(const s: string; SetTargetCodePage: boolean): RawByteString; begin - case Unicode of - 0..255: Result:=Unicode; - 8364: Result:=164; - 352: Result:=166; - 353: Result:=168; - 381: Result:=180; - 382: Result:=184; - 338: Result:=188; - 339: Result:=189; - 376: Result:=190; - else Result:=-1; - end; + InternalUTF8ToCP(s,866,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToCP866{$endif},Result); end; -function UnicodeToISO_8859_2(Unicode: cardinal): integer; +function UTF8ToCP874(const s: string; SetTargetCodePage: boolean): RawByteString; begin - case Unicode of - 0..127: Result:=Unicode; - 128..160: Result:=Unicode; - 164: Result:=164; - 167..168: Result:=Unicode; - 173: Result:=173; - 176: Result:=176; - 180: Result:=180; - 184: Result:=184; - 193..194: Result:=Unicode; - 196: Result:=196; - 199: Result:=199; - 201: Result:=201; - 203: Result:=203; - 205..206: Result:=Unicode; - 211..212: Result:=Unicode; - 214..215: Result:=Unicode; - 218: Result:=218; - 220..221: Result:=Unicode; - 223: Result:=223; - 225..226: Result:=Unicode; - 228: Result:=228; - 231: Result:=231; - 233: Result:=233; - 235: Result:=235; - 237..238: Result:=Unicode; - 243..244: Result:=Unicode; - 246..247: Result:=Unicode; - 250: Result:=250; - 252..253: Result:=Unicode; - 258: Result:=195; - 259: Result:=227; - 260: Result:=161; - 261: Result:=177; - 262: Result:=198; - 263: Result:=230; - 268: Result:=200; - 269: Result:=232; - 270: Result:=207; - 271: Result:=239; - 272: Result:=208; - 273: Result:=240; - 280: Result:=202; - 281: Result:=234; - 282: Result:=204; - 283: Result:=236; - 313: Result:=197; - 314: Result:=229; - 317: Result:=165; - 318: Result:=181; - 321: Result:=163; - 322: Result:=179; - 323: Result:=209; - 324: Result:=241; - 327: Result:=210; - 328: Result:=242; - 336: Result:=213; - 337: Result:=245; - 340: Result:=192; - 341: Result:=224; - 344: Result:=216; - 345: Result:=248; - 346: Result:=166; - 347: Result:=182; - 350: Result:=170; - 351: Result:=186; - 352: Result:=169; - 353: Result:=185; - 354: Result:=222; - 355: Result:=254; - 356: Result:=171; - 357: Result:=187; - 366: Result:=217; - 367: Result:=249; - 368: Result:=219; - 369: Result:=251; - 377: Result:=172; - 378: Result:=188; - 379: Result:=175; - 380: Result:=191; - 381: Result:=174; - 382: Result:=190; - 711: Result:=183; - 728: Result:=162; - 729: Result:=255; - 731: Result:=178; - 733: Result:=189; - else Result:=-1; - end; + // system conversion fails for character #129 -> using table + InternalUTF8ToCP(s,874,SetTargetCodePage,@UnicodeToCP874,Result); end; -function UTF8ToUTF8BOM(const s: string): string; +function UTF8ToKOI8(const s: string; SetTargetCodePage: boolean): RawByteString; begin - Result:=UTF8BOM+s; + InternalUTF8ToCP(s,20866,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToKOI8{$endif},Result); end; +function UTF8ToKOI8U(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToCP(s,21866,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToKOI8U{$endif},Result); +end; + +function UTF8ToKOI8RU(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToCP(s,21866,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToKOI8RU{$endif},Result); +end; + +function UTF8ToMacintosh(const s: string; SetTargetCodePage: boolean): RawByteString; +begin + InternalUTF8ToCP(s,10000,SetTargetCodePage,{$IfDef UseSystemCPConv}nil{$else}@UnicodeToMacintosh{$endif},Result); +end; +{$ELSE} function UTF8ToISO_8859_1(const s: string): string; begin Result:=UTF8ToSingleByte(s,@UnicodeToISO_8859_1); @@ -6383,6 +6996,12 @@ Result:=UTF8ToSingleByte(s,@UnicodeToKOI8RU); end; +function UTF8ToMacintosh(const s: string): string; +begin + Result:=UTF8ToSingleByte(s,@UnicodeToMacintosh); +end; +{$ENDIF} + function UTF8ToSingleByte(const s: string; const UTF8CharConvFunc: TUnicodeToCharID): string; var @@ -6414,6 +7033,7 @@ inc(Src,CharLen); dec(len,CharLen); i:=UTF8CharConvFunc(Unicode); + //writeln('UTF8ToSingleByte Unicode=',Unicode,' CharLen=',CharLen,' c="',copy(s,Src-PChar(s)+1-CharLen,CharLen),'" i=',i); if i>=0 then begin Dest^:=chr(i); inc(Dest); @@ -6508,32 +7128,37 @@ List.Add('UTF-8'); List.Add('UTF-8BOM'); List.Add('Ansi'); - List.Add('CP1250'); - List.Add('CP1251'); - List.Add('CP1252'); - List.Add('CP1253'); - List.Add('CP1254'); - List.Add('CP1255'); - List.Add('CP1256'); - List.Add('CP1257'); - List.Add('CP1258'); - List.Add('CP437'); - List.Add('CP850'); - List.Add('CP852'); - List.Add('CP866'); - List.Add('CP874'); - - {$IFNDEF DisableAsianCodePages} - // asian - List.Add('CP932'); - List.Add('CP936'); - List.Add('CP949'); - List.Add('CP950'); + + List.Add(UpperCase(EncodingCP1250)); + List.Add(UpperCase(EncodingCP1251)); + List.Add(UpperCase(EncodingCP1252)); + List.Add(UpperCase(EncodingCP1253)); + List.Add(UpperCase(EncodingCP1254)); + List.Add(UpperCase(EncodingCP1255)); + List.Add(UpperCase(EncodingCP1256)); + List.Add(UpperCase(EncodingCP1257)); + List.Add(UpperCase(EncodingCP1258)); + List.Add(UpperCase(EncodingCP437)); + List.Add(UpperCase(EncodingCP850)); + List.Add(UpperCase(EncodingCP852)); + List.Add(UpperCase(EncodingCP866)); + List.Add(UpperCase(EncodingCP874)); + + {$IFnDEF DisableAsianCodePages} + List.Add(UpperCase(EncodingCP932)); + List.Add(UpperCase(EncodingCP936)); + List.Add(UpperCase(EncodingCP949)); + List.Add(UpperCase(EncodingCP950)); {$ENDIF} List.Add('ISO-8859-1'); List.Add('ISO-8859-2'); + List.Add('ISO-8859-15'); + List.Add('KOI-8'); + List.Add('Macintosh'); + + // UCS2 are less common, list them last List.Add('UCS-2LE'); List.Add('UCS-2BE'); end; @@ -6663,7 +7288,109 @@ end; end; -function ConvertEncoding(const s, FromEncoding, ToEncoding: string): string; + +function ConvertEncodingFromUTF8(const s, ToEncoding: string; out Encoded: boolean + {$ifdef FPC_HAS_CPSTRING}; SetTargetCodePage: boolean = false{$endif}): string; +var + ATo: string; + + {$ifdef FPC_HAS_CPSTRING} + procedure CheckKeepCP; inline; + begin + if SetTargetCodePage then + raise Exception.Create('ConvertEncodingFromUTF8: cannot set AnsiString codepage to "'+ATo+'"'); + end; + {$endif} + +begin + Result:=s; + Encoded:=true; + ATo:=NormalizeEncoding(ToEncoding); + + if ATo=EncodingUTF8BOM then begin Result:=UTF8ToUTF8BOM(s); exit; end; + if ATo=EncodingCPIso1 then begin Result:=UTF8ToISO_8859_1(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCPIso15 then begin Result:=UTF8ToISO_8859_15(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCPIso2 then begin Result:=UTF8ToISO_8859_2(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1250 then begin Result:=UTF8ToCP1250(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1251 then begin Result:=UTF8ToCP1251(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1252 then begin Result:=UTF8ToCP1252(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1253 then begin Result:=UTF8ToCP1253(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1254 then begin Result:=UTF8ToCP1254(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1255 then begin Result:=UTF8ToCP1255(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1256 then begin Result:=UTF8ToCP1256(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1257 then begin Result:=UTF8ToCP1257(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP1258 then begin Result:=UTF8ToCP1258(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP437 then begin Result:=UTF8ToCP437(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP850 then begin Result:=UTF8ToCP850(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP852 then begin Result:=UTF8ToCP852(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP866 then begin Result:=UTF8ToCP866(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP874 then begin Result:=UTF8ToCP874(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + {$IFnDEF DisableAsianCodePages} + if ATo=EncodingCP936 then begin Result:=UTF8ToCP936(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP950 then begin Result:=UTF8ToCP950(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP949 then begin Result:=UTF8ToCP949(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCP932 then begin Result:=UTF8ToCP932(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + {$ENDIF} + if ATo=EncodingCPKOI8 then begin Result:=UTF8ToKOI8(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingCPMac then begin Result:=UTF8ToMacintosh(s{$ifdef FPC_HAS_CPSTRING},SetTargetCodePage{$endif}); exit; end; + if ATo=EncodingUCS2LE then begin {$ifdef FPC_HAS_CPSTRING}CheckKeepCP;{$endif} Result:=UTF8ToUCS2LE(s); exit; end; + if ATo=EncodingUCS2BE then begin {$ifdef FPC_HAS_CPSTRING}CheckKeepCP;{$endif} Result:=UTF8ToUCS2BE(s); exit; end; + + if (ATo=GetDefaultTextEncoding) and Assigned(ConvertUTF8ToAnsi) then begin + Result:=ConvertUTF8ToAnsi(s); + exit; + end; + + Encoded:= false; +end; + +function ConvertEncodingToUTF8(const s, FromEncoding: string; out Encoded: boolean): string; +var + AFrom: string; +begin + Result:=s; + Encoded:=true; + AFrom:=NormalizeEncoding(FromEncoding); + + if AFrom=EncodingUTF8BOM then begin Result:=UTF8BOMToUTF8(s); exit; end; + if AFrom=EncodingCPIso1 then begin Result:=ISO_8859_1ToUTF8(s); exit; end; + if AFrom=EncodingCPIso15 then begin Result:=ISO_8859_15ToUTF8(s); exit; end; + if AFrom=EncodingCPIso2 then begin Result:=ISO_8859_2ToUTF8(s); exit; end; + if AFrom=EncodingCP1250 then begin Result:=CP1250ToUTF8(s); exit; end; + if AFrom=EncodingCP1251 then begin Result:=CP1251ToUTF8(s); exit; end; + if AFrom=EncodingCP1252 then begin Result:=CP1252ToUTF8(s); exit; end; + if AFrom=EncodingCP1253 then begin Result:=CP1253ToUTF8(s); exit; end; + if AFrom=EncodingCP1254 then begin Result:=CP1254ToUTF8(s); exit; end; + if AFrom=EncodingCP1255 then begin Result:=CP1255ToUTF8(s); exit; end; + if AFrom=EncodingCP1256 then begin Result:=CP1256ToUTF8(s); exit; end; + if AFrom=EncodingCP1257 then begin Result:=CP1257ToUTF8(s); exit; end; + if AFrom=EncodingCP1258 then begin Result:=CP1258ToUTF8(s); exit; end; + if AFrom=EncodingCP437 then begin Result:=CP437ToUTF8(s); exit; end; + if AFrom=EncodingCP850 then begin Result:=CP850ToUTF8(s); exit; end; + if AFrom=EncodingCP852 then begin Result:=CP852ToUTF8(s); exit; end; + if AFrom=EncodingCP866 then begin Result:=CP866ToUTF8(s); exit; end; + if AFrom=EncodingCP874 then begin Result:=CP874ToUTF8(s); exit; end; + {$IFnDEF DisableAsianCodePages} + if AFrom=EncodingCP936 then begin Result:=CP936ToUTF8(s); exit; end; + if AFrom=EncodingCP950 then begin Result:=CP950ToUTF8(s); exit; end; + if AFrom=EncodingCP949 then begin Result:=CP949ToUTF8(s); exit; end; + if AFrom=EncodingCP932 then begin Result:=CP932ToUTF8(s); exit; end; + {$ENDIF} + if AFrom=EncodingCPKOI8 then begin Result:=KOI8ToUTF8(s); exit; end; + if AFrom=EncodingCPMac then begin Result:=MacintoshToUTF8(s); exit; end; + if AFrom=EncodingUCS2LE then begin Result:=UCS2LEToUTF8(s); exit; end; + if AFrom=EncodingUCS2BE then begin Result:=UCS2BEToUTF8(s); exit; end; + + if (AFrom=GetDefaultTextEncoding) and Assigned(ConvertAnsiToUTF8) then begin + Result:=ConvertAnsiToUTF8(s); + exit; + end; + + Encoded:= false; +end; + +function ConvertEncoding(const s, FromEncoding, ToEncoding: string + {$ifdef FPC_HAS_CPSTRING}; SetTargetCodePage: boolean{$endif}): string; var AFrom, ATo, SysEnc : String; Encoded : Boolean; @@ -6673,7 +7400,7 @@ begin AFrom:=NormalizeEncoding(FromEncoding); ATo:=NormalizeEncoding(ToEncoding); - SysEnc:=NormalizeEncoding(GetDefaultTextEncoding); + SysEnc:=GetDefaultTextEncoding; if AFrom=EncodingAnsi then AFrom:=SysEnc else if AFrom='' then AFrom:=EncodingUTF8; if ATo=EncodingAnsi then ATo:=SysEnc @@ -6690,297 +7417,26 @@ end; //DebugLn(['ConvertEncoding ',AFrom,' ',ATo]); - if (AFrom=EncodingUTF8) then begin - if ATo=EncodingUTF8BOM then begin Result:=UTF8ToUTF8BOM(s); exit; end; - if ATo='iso88591' then begin Result:=UTF8ToISO_8859_1(s); exit; end; - if ATo='iso885915' then begin Result:=UTF8ToISO_8859_15(s); exit; end; - if ATo='iso88592' then begin Result:=UTF8ToISO_8859_2(s); exit; end; - if ATo='cp1250' then begin Result:=UTF8ToCP1250(s); exit; end; - if ATo='cp1251' then begin Result:=UTF8ToCP1251(s); exit; end; - if ATo='cp1252' then begin Result:=UTF8ToCP1252(s); exit; end; - if ATo='cp1253' then begin Result:=UTF8ToCP1253(s); exit; end; - if ATo='cp1254' then begin Result:=UTF8ToCP1254(s); exit; end; - if ATo='cp1255' then begin Result:=UTF8ToCP1255(s); exit; end; - if ATo='cp1256' then begin Result:=UTF8ToCP1256(s); exit; end; - if ATo='cp1257' then begin Result:=UTF8ToCP1257(s); exit; end; - if ATo='cp1258' then begin Result:=UTF8ToCP1258(s); exit; end; - if ATo='cp437' then begin Result:=UTF8ToCP437(s); exit; end; - if ATo='cp850' then begin Result:=UTF8ToCP850(s); exit; end; - if ATo='cp852' then begin Result:=UTF8ToCP852(s); exit; end; - if ATo='cp866' then begin Result:=UTF8ToCP866(s); exit; end; - if ATo='cp874' then begin Result:=UTF8ToCP874(s); exit; end; - {$IFNDEF DisableAsianCodePages} - if ATo='cp936' then begin Result := UTF8ToCP936(s); exit; end; - if ATo='cp950' then begin Result := UTF8ToCP950(s); exit; end; - if ATo='cp949' then begin Result := UTF8ToCP949(s); exit; end; - if ATo='cp932' then begin Result := UTF8ToCP932(s); exit; end; - {$ENDIF} - if ATo='koi8' then begin Result:=UTF8ToKOI8(s); exit; end; - if ATo=EncodingUCS2LE then begin Result:=UTF8ToUCS2LE(s); exit; end; - if ATo=EncodingUCS2BE then begin Result:=UTF8ToUCS2BE(s); exit; end; - - if (ATo=SysEnc) and Assigned(ConvertUTF8ToAnsi) then begin - Result:=ConvertUTF8ToAnsi(s); - exit; - end; - end else if ATo=EncodingUTF8 then begin - if AFrom=EncodingUTF8BOM then begin Result:=UTF8BOMToUTF8(s); exit; end; - if AFrom='iso88591' then begin Result:=ISO_8859_1ToUTF8(s); exit; end; - if AFrom='iso885915' then begin Result:=ISO_8859_15ToUTF8(s); exit; end; - if AFrom='iso88592' then begin Result:=ISO_8859_2ToUTF8(s); exit; end; - if AFrom='cp1250' then begin Result:=CP1250ToUTF8(s); exit; end; - if AFrom='cp1251' then begin Result:=CP1251ToUTF8(s); exit; end; - if AFrom='cp1252' then begin Result:=CP1252ToUTF8(s); exit; end; - if AFrom='cp1253' then begin Result:=CP1253ToUTF8(s); exit; end; - if AFrom='cp1254' then begin Result:=CP1254ToUTF8(s); exit; end; - if AFrom='cp1255' then begin Result:=CP1255ToUTF8(s); exit; end; - if AFrom='cp1256' then begin Result:=CP1256ToUTF8(s); exit; end; - if AFrom='cp1257' then begin Result:=CP1257ToUTF8(s); exit; end; - if AFrom='cp1258' then begin Result:=CP1258ToUTF8(s); exit; end; - if AFrom='cp437' then begin Result:=CP437ToUTF8(s); exit; end; - if AFrom='cp850' then begin Result:=CP850ToUTF8(s); exit; end; - if AFrom='cp852' then begin Result:=CP852ToUTF8(s); exit; end; - if AFrom='cp866' then begin Result:=CP866ToUTF8(s); exit; end; - if AFrom='cp874' then begin Result:=CP874ToUTF8(s); exit; end; - {$IFNDEF DisableAsianCodePages} - if AFrom='cp936' then begin Result := CP936ToUTF8(s); exit; end; - if AFrom='cp950' then begin Result := CP950ToUTF8(s); exit; end; - if AFrom='cp949' then begin Result := CP949ToUTF8(s); exit; end; - if AFrom='cp932' then begin Result := CP932ToUTF8(s); exit; end; - {$ENDIF} - if AFrom='koi8' then begin Result:=KOI8ToUTF8(s); exit; end; - if AFrom=EncodingUCS2LE then begin Result:=UCS2LEToUTF8(s); exit; end; - if AFrom=EncodingUCS2BE then begin Result:=UCS2BEToUTF8(s); exit; end; - - if (AFrom=SysEnc) and Assigned(ConvertAnsiToUTF8) then begin - Result:=ConvertAnsiToUTF8(s); - exit; - end; + if AFrom=EncodingUTF8 then begin + Result:=ConvertEncodingFromUTF8(s, ATo, Encoded{$ifdef FPC_HAS_CPSTRING}, SetTargetCodePage{$endif}); + if Encoded then exit; end - else begin - //ATo and AFrom <> EncodingUTF8. Need to do ANSI->UTF8->ANSI. - //TempStr := s; - Encoded := false; - - //ANSI->UTF8 - if AFrom='iso88591' then begin - Result:=ISO_8859_1ToUTF8(s); - Encoded := true; - end - else if AFrom='iso885915' then begin - Result:=ISO_8859_15ToUTF8(s); - Encoded := true; - end - else if AFrom='iso88592' then begin - Result:=ISO_8859_2ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1250' then begin - Result:=CP1250ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1251' then begin - Result:=CP1251ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1252' then begin - Result:=CP1252ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1253' then begin - Result:=CP1253ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1254' then begin - Result:=CP1254ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1255' then begin - Result:=CP1255ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1256' then begin - Result:=CP1256ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1257' then begin - Result:=CP1257ToUTF8(s); - Encoded := true; - end - else if AFrom='cp1258' then begin - Result:=CP1258ToUTF8(s); - Encoded := true; - end - else if AFrom='cp850' then begin - Result:=CP850ToUTF8(s); - Encoded := true; - end - else if AFrom='cp852' then begin - Result:=CP852ToUTF8(s); - Encoded := true; - end - else if AFrom='cp866' then begin - Result:=CP866ToUTF8(s); - Encoded := true; - end - else if AFrom='cp874' then begin - Result:=CP874ToUTF8(s); - Encoded := true; - end - {$IFNDEF DisableAsianCodePages} - else if AFrom = 'cp936' then - begin - Result := CP936ToUTF8(s); - Encoded := True; - end - else if AFrom = 'cp950' then - begin - Result := CP950ToUTF8(s); - Encoded := True; - end - else if AFrom = 'cp949' then - begin - Result := CP949ToUTF8(s); - Encoded := True; - end - else if AFrom = 'cp932' then - begin - Result := CP932ToUTF8(s); - Encoded := True; - end - {$ENDIF} - else if AFrom='koi8' then begin - Result:=KOI8ToUTF8(s); - Encoded := true; - end - else if AFrom = EncodingUCS2LE then begin - Result := UCS2LEToUTF8(s); - Encoded := true; - end - else if AFrom = EncodingUCS2BE then begin - Result := UCS2BEToUTF8(s); - Encoded := true; - end - else if (AFrom=SysEnc) and Assigned(ConvertAnsiToUTF8) then begin - Result:=ConvertAnsiToUTF8(s); - Encoded := true; - end; - - if Encoded = true then begin - //UTF8->ANSI - Encoded := false; - if ATo='iso88591' then begin - Result:=UTF8ToISO_8859_1(Result); - Encoded := true; - end - else if ATo='iso885915' then begin - Result:=UTF8ToISO_8859_15(Result); - Encoded := true; - end - else if ATo='iso88592' then begin - Result:=UTF8ToISO_8859_2(Result); - Encoded := true; - end - else if ATo='cp1250' then begin - Result:=UTF8ToCP1250(Result); - Encoded := true; - end - else if ATo='cp1251' then begin - Result:=UTF8ToCP1251(Result); - Encoded := true; - end - else if ATo='cp1252' then begin - Result:=UTF8ToCP1252(Result); - Encoded := true; - end - else if ATo='cp1253' then begin - Result:=UTF8ToCP1253(Result); - Encoded := true; - end - else if ATo='cp1254' then begin - Result:=UTF8ToCP1254(Result); - Encoded := true; - end - else if ATo='cp1255' then begin - Result:=UTF8ToCP1255(Result); - Encoded := true; - end - else if ATo='cp1256' then begin - Result:=UTF8ToCP1256(Result); - Encoded := true; - end - else if ATo='cp1257' then begin - Result:=UTF8ToCP1257(Result); - Encoded := true; - end - else if ATo='cp1258' then begin - Result:=UTF8ToCP1258(Result); - Encoded := true; - end - else if ATo='cp850' then begin - Result:=UTF8ToCP850(Result); - Encoded := true; - end - else if ATo='cp852' then begin - Result:=UTF8ToCP852(Result); - Encoded := true; - end - else if ATo='cp866' then begin - Result:=UTF8ToCP866(Result); - Encoded := true; - end - else if ATo='cp874' then begin - Result:=UTF8ToCP874(Result); - Encoded := true; - end - {$IFNDEF DisableAsianCodePages} - else if ATo = 'cp936' then - begin - Result := UTF8ToCP936(Result); - Encoded := True; - end - else if ATo = 'cp950' then - begin - Result := UTF8ToCP950(Result); - Encoded := True; - end - else if ATo = 'cp949' then - begin - Result := UTF8ToCP949(Result); - Encoded := True; - end - else if ATo = 'cp932' then - begin - Result := UTF8ToCP932(Result); - Encoded := True; - end - {$ENDIF} - else if ATo='koi8' then begin - Result:=UTF8ToKOI8(Result); - Encoded := true; - end - else if ATo = EncodingUCS2LE then begin - Result := UTF8ToUCS2LE(Result); - Encoded := true; - end - else if ATo = EncodingUCS2BE then begin - Result := UTF8ToUCS2BE(Result); - Encoded := true; - end - else if (ATo=SysEnc) and Assigned(ConvertUTF8ToAnsi) then begin - Result:=ConvertUTF8ToAnsi(Result); - Encoded := true; - end; - end; - - //Exit if encoded successfully. - if Encoded = true then begin - exit; - end; - + else + if ATo=EncodingUTF8 then begin + Result:=ConvertEncodingToUTF8(s, AFrom, Encoded); + if Encoded then exit; + end + else + begin + Result:=ConvertEncodingToUTF8(s, AFrom, Encoded); + if Encoded then + Result:=ConvertEncodingFromUTF8(Result, ATo, Encoded{$ifdef FPC_HAS_CPSTRING}, SetTargetCodePage{$endif}); + if Encoded then exit; end; + //cannot encode: return orig str Result:=s; + {$ifdef EnableIconvEnc} try if not IconvLibFound and not InitIconv(Dummy) then diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lcsvutils.pas lazarus-1.6+dfsg/components/lazutils/lcsvutils.pas --- lazarus-1.4.4+dfsg/components/lazutils/lcsvutils.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lcsvutils.pas 2015-11-12 14:30:42.000000000 +0000 @@ -0,0 +1,287 @@ +unit lcsvutils; + +{$mode objfpc}{$H+} +{$modeswitch nestedprocvars} + +interface + +uses + Classes, SysUtils; + +type + TCSVRecordProc = procedure(Fields: TStringList) is nested; + TCSVEncoding = (ceAuto, ceUTF8, ceUTF16, ceUTF16be); + + procedure LoadFromCSVStream(AStream:TStream; AProc: TCSVRecordProc; + ADelimiter:Char=','; CSVEncoding:TCSVEncoding=ceAuto); + procedure LoadFromCSVFile(aFilename: string; AProc: TCSVRecordProc; + ADelimiter:Char=','; CSVEncoding:TCSVEncoding=ceAuto); + +implementation + +const + BUFSIZE=1024; + MAXGROW = 1 shl 29; + +type + TSoc = set of char; + +procedure LoadFromCSVStream(AStream: TStream; AProc: TCSVRecordProc; + ADelimiter:Char; CSVEncoding: TCSVEncoding); +var + Buffer, curWord: ansistring; + BytesRead, BufLen, I, BufDelta: Longint; + leadPtr, tailPtr, wordPtr, X:Pchar; + Line: TStringList = nil; + + function SkipSet(const aSet: TSoc): boolean; + begin + while (leadPtr<tailPtr) and (leadPtr^ in aSet) do Inc(leadPtr); + result := leadPtr<tailPtr; + end; + + function FindSet(const aSet: TSoc): boolean; + begin + while (leadPtr<tailPtr) and (not (leadPtr^ in ASet)) do Inc(leadPtr); + result := leadPtr<tailPtr; + end; + + procedure NotifyLine; + begin + if (Line<>nil) and (Line.Count>0) then begin + AProc(Line); + Line.Clear; + end; + end; + + procedure StorePart; + var + Len, AddLen: SizeInt; + begin + Len := Length(curWord); + AddLen := leadPtr-wordPtr; + if AddLen > 0 then begin + SetLength(curWord, Len+AddLen); + Move(wordPtr^, curWord[Len+1], AddLen); + end; + if leadPtr<tailPtr then + Inc(leadPtr); + wordPtr := leadPtr; + end; + + procedure StoreWord; + begin + StorePart; + if Line=nil then + Line := TStringList.Create; + Line.Add(curWord); + curWord := ''; + end; + + procedure StoreLine; + begin + StoreWord; + NotifyLine; + end; + + procedure ProcessEndline; + var + le: PChar; + begin + le := leadPtr; + StoreLine; + if leadPtr>=tailPtr then + exit; + if (le^=#13) and (leadPtr^=#10) then + Inc(leadPtr); + wordPtr := leadPtr; + end; + + procedure ProcessQuote; + var + endQuote,endField: pchar; + isDelimiter: boolean; + begin + // got a valid opening quote + Inc(leadPtr); + wordPtr := leadPtr; + // look for valid ending quote + while leadPtr<tailPtr do begin + if FindSet(['"']) then begin + // is this an encoded quote? + if (leadPtr+1)^='"' then begin + // yes, store part and keep looking + inc(leadPtr); // points to second quote + StorePart; // add to current word including the first " + end else begin + // try to match: "\s*(,|$|EOF) + endQuote := leadPtr; // points to valid closing quote (if found later) + Inc(leadPtr); // points to \s if exists + SkipSet([' ']); // skip \s if exists + endField := leadPtr; // points to field terminator + if (leadPtr>=tailPtr) or (leadPtr^ in [ADelimiter, #10, #13]) then begin + isDelimiter := (leadPtr<tailPtr) and (leadPtr^=ADelimiter); + if leadPtr<tailPtr then begin + if (leadPtr^=#13) and (leadPtr[1]=#10) then + Inc(endField); // point to second byte of line ending + Inc(endField); // skip last byte of line ending or delimiter + end; + leadPtr := endQuote; // leadPtr points to closing quote + if isDelimiter then + StoreWord + else + StoreLine; + leadPtr := endField; // restore next position + wordPtr := leadPtr; + break; + end; + end; + end; + end; + if leadPtr<>wordPtr then begin + StoreLine; + wordPtr := leadPtr; + end; + end; + + procedure ConvertToUTF16; + var + n: Integer; + u: pchar; + ch: char; + begin + n := (tailPtr-leadPtr) div 2; + u := leadPtr; + while n>0 do begin + ch := u^; + u^ := (u+1)^; + (u+1)^ := ch; + inc(u, 2); + dec(n); + end; + end; + + procedure ConvertEncoding; + var + W: WideString; + begin + if (CSVEncoding=ceAuto) and (BufLen>1) then begin + if (leadPtr[0]=#$FF) and (leadPtr[1]=#$FE) then begin + inc(leadPtr,2); // skip little endian UTF-16 BOM + CSVEncoding := ceUTF16; + end else + if (leadPtr[0]=#$FE) and (leadPtr[1]=#$FF) then begin + inc(leadPtr,2); // skip big endian UTF-16 BOM + CSVEncoding := ceUTF16be; + end else + if (leadPtr[0]<>#$00) and (leadPtr[1]=#$00) then // quick guess + CSVEncoding := ceUTF16 + else + if (leadPtr[0]=#$00) and (leadPtr[1]<>#$00) then // quick guess + CSVEncoding := ceUTF16be + end; + if (CSVEncoding=ceAuto) and (BufLen>2) then begin + if (leadPtr[0]=#$EF) and (leadPtr[1]=#$BB) and (leadPtr[2]=#$BF) then + inc(leadPtr,3); // skip UTF-8 BOM + end; + if CSVEncoding=ceAuto then + CSVEncoding := ceUTF8; + + case CSVEncoding of + ceUTF16, ceUTF16be: + begin + if CSVEncoding=ceUTF16be then + ConvertToUTF16; + SetLength(W,(tailPtr-leadPtr) div 2); + System.Move(leadPtr^,W[1],length(W)*2); + Buffer := UTF8Encode(W); + leadPtr := @Buffer[1]; + tailPtr := leadPtr+length(Buffer); + end; + end; + end; + +begin + + if AProc=nil then + exit; + + // read buffer ala fpc tstrings + Buffer:=''; + BufLen:=0; + I:=1; + repeat + BufDelta:=BUFSIZE*I; + SetLength(Buffer,BufLen+BufDelta); + BytesRead:=AStream.Read(Buffer[BufLen+1],BufDelta); + inc(BufLen,BufDelta); + If I<MAXGROW then + I:=I shl 1; + until BytesRead<>BufDelta; + BufLen := BufLen-BufDelta+BytesRead; + SetLength(Buffer, BufLen); + if BufLen=0 then + exit; + + curWord := ''; + leadPtr := @Buffer[1]; + tailPtr := leadPtr + BufLen; + + ConvertEncoding; + // Note: BufLen now invalid and leadPtr points into Buffer, not neccesarily at Buffer[1] + + try + wordPtr := leadPtr; // wordPtr always points to starting word or part + while leadPtr<tailPtr do begin + // skip initial spaces + SkipSet([' ']); + X := leadPtr; + // find next marker + if not FindSet([ADelimiter, '"', #10, #13]) then + break; + case leadPtr^ of + '"': + begin + // is the first char? + if leadPtr=X then + ProcessQuote + else begin + // got an invalid open quote, sync until next delimiter, $ or EOB + FindSet([ADelimiter, #10, #13]); + if leadPtr^=ADelimiter then + StoreWord + else + ProcessEndline; + end; + end; + #10, #13: + ProcessEndline; + else + if leadPtr^=ADelimiter then + StoreWord + end; + end; + if wordPtr<>leadPtr then + StoreWord; + NotifyLine; + finally + Line.Free; + SetLength(Buffer,0); + end; +end; + +procedure LoadFromCSVFile(aFilename: string; AProc: TCSVRecordProc; + ADelimiter: Char; CSVEncoding: TCSVEncoding); +var + Stream: TFileStream; +begin + Stream := TFileStream.Create(aFilename, fmOpenRead); + try + LoadFromCSVStream(Stream, AProc, ADelimiter, CSVEncoding); + finally + Stream.Free; + end; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazutils/lookupstringlist.pas lazarus-1.6+dfsg/components/lazutils/lookupstringlist.pas --- lazarus-1.4.4+dfsg/components/lazutils/lookupstringlist.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/lookupstringlist.pas 2015-07-07 12:05:03.000000000 +0000 @@ -0,0 +1,169 @@ +{ + ***************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Juha Manninen / Antônio Galvão + + Abstract: + This is an unsorted StringList with a fast lookup feature. + Internally it uses a map container to store the strings again + which is then used for Contains, IndexOf and Find methods. + + The extra container does not reserve too much memory because the strings are + reference counted and not really copied. + + All Duplicates property values are fully supported, + including dupIgnore and dupError, unlike in unsorted StringList. + + This class is useful only when you must preserve the order in list, but + also need to do fast lookups to see if a string exists, or must prevent duplicates. +} +unit LookupStringList; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, AvgLvlTree; + +type + + { TLookupStringList } + + TLookupStringList = class(TStringList) + private + FMap: TStringMap; + protected + procedure InsertItem(Index: Integer; const S: string); override; + public + constructor Create; + destructor Destroy; override; + procedure Assign(Source: TPersistent); override; + procedure Clear; override; + procedure Delete(Index: Integer); override; + function Add(const S: string): Integer; override; + function AddObject(const S: string; AObject: TObject): Integer; override; + function Contains(const S: string): Boolean; // A new function + function Find(const S: string; out Index: Integer): Boolean; override; + function IndexOf(const S: string): Integer; override; + end; + + TDictionaryStringList = class(TLookupStringList) + end deprecated 'The class was renamed to TLookupStringList.'; + +function Deduplicate(AStrings: TStrings): Boolean; + +implementation + +{ + Removes duplicate strings (case sensitive) from AStrings. + When the AStrings owns and contains objects, the function will return false. +} +function Deduplicate(AStrings: TStrings): Boolean; +var + DSL: TLookupStringList; +begin + Result := False; + DSL := TLookupStringList.Create; + try + DSL.Assign(AStrings); + AStrings.Assign(DSL); + Result := True; + finally + DSL.Free; + end; +end; + +{ TLookupStringList } + +constructor TLookupStringList.Create; +begin + inherited Create; + FMap := TStringMap.Create(True); +end; + +destructor TLookupStringList.Destroy; +begin + FMap.Free; + inherited Destroy; +end; + +procedure TLookupStringList.Assign(Source: TPersistent); +begin + inherited Assign(Source); + if Source is TLookupStringList then + FMap.Assign(TLookupStringList(Source).FMap); +end; + +procedure TLookupStringList.Clear; +begin + inherited Clear; + FMap.Clear; +end; + +procedure TLookupStringList.Delete(Index: Integer); +var + s: String; +begin + s := Strings[Index]; + inherited Delete(Index); + // The string must not be deleted from map if there are duplicates. + // Calling IndexOf is slow but it is needed. + if (Duplicates <> dupAccept) or (inherited IndexOf(s) = -1) then + FMap.Remove(s); +end; + +function TLookupStringList.Add(const S: string): Integer; +begin + if not Sorted and (Duplicates = dupIgnore) and FMap.Contains(S) then + Result := -1 + else + Result := inherited Add(S); +end; + +function TLookupStringList.AddObject(const S: string; AObject: TObject): Integer; +begin + Result := Add(S); + if Result > -1 then + Objects[Result] := AObject; +end; + +procedure TLookupStringList.InsertItem(Index: Integer; const S: string); +begin + if not Sorted and (Duplicates <> dupAccept) then + if FMap.Contains(S) then + case Duplicates of + DupIgnore : Exit; + DupError : raise Exception.Create('TLookupStringList.InsertItem:' + +' Duplicates are not allowed.'); + end; + inherited InsertItem(Index, S); + FMap.Add(S); // Insert string to map, too. +end; + +function TLookupStringList.Contains(const S: string): Boolean; +begin + Result := FMap.Contains(S); +end; + +function TLookupStringList.Find(const S: string; out Index: Integer): Boolean; +begin + Index := IndexOf(S); + Result := Index <> -1; +end; + +function TLookupStringList.IndexOf(const S: string): Integer; +begin + if FMap.Contains(S) then + Result := inherited IndexOf(S) + else + Result := -1 +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/lazutils/paswstring.pas lazarus-1.6+dfsg/components/lazutils/paswstring.pas --- lazarus-1.4.4+dfsg/components/lazutils/paswstring.pas 2014-12-04 18:11:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/paswstring.pas 2015-11-24 16:23:18.000000000 +0000 @@ -16,21 +16,20 @@ {$mode objfpc} {$inline on} +{$i lazutils_defines.inc} + //{$define PASWSTRING_VERBOSE} //{.$define PASWSTRING_SUPPORT_NONUTF8_ANSISTRING} disabled by default because // non utf-8 ansistring is rare in UNIXes and lconvencoding makes the executable big // sanity checks for defines -{$IFDEF EnableUTF8RTL} - {$IF FPC_FULLVERSION<20701} - {$error UTF8 RTl requires fpc 2.7.1+} - {$ENDIF} - {$IFDEF PASWSTRING_SUPPORT_NONUTF8_ANSISTRING} - {$error UTF8 or not UTF8} +//{$IF FPC_FULLVERSION >= 30000} +{$IFnDEF NO_CP_RTL} + {$IFDEF UTF8_RTL} + {$IFDEF PASWSTRING_SUPPORT_NONUTF8_ANSISTRING} + {$error UTF8 or not UTF8} + {$ENDIF} {$ENDIF} -{$ENDIF} - -{$IF FPC_FULLVERSION>=20701} {$DEFINE DisablePasWString} {$ENDIF} @@ -41,13 +40,13 @@ {$ifdef PASWSTRING_SUPPORT_NONUTF8_ANSISTRING}, lconvencoding{$endif} ; -{$IFNDEF DisablePasWString} +{$IFnDEF DisablePasWString} procedure SetPasWidestringManager; {$ENDIF} implementation -{$IFNDEF DisablePasWString} +{$IFnDEF DisablePasWString} procedure fpc_rangeerror; [external name 'FPC_RANGEERROR']; function IsASCII(const s: string): boolean; inline; diff -Nru lazarus-1.4.4+dfsg/components/lazutils/ttfile.pas lazarus-1.6+dfsg/components/lazutils/ttfile.pas --- lazarus-1.4.4+dfsg/components/lazutils/ttfile.pas 2013-06-03 10:40:18.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/ttfile.pas 2015-05-16 11:09:18.000000000 +0000 @@ -246,7 +246,7 @@ try ftstream := TFreeTypeStream.Create(name); if ftstream.Activate then - raise exception.Create('Cannot activate'); + raise exception.Create('Cannot activate stream, file may not exist'); except on ex: Exception do begin diff -Nru lazarus-1.4.4+dfsg/components/lazutils/ttgload.pas lazarus-1.6+dfsg/components/lazutils/ttgload.pas --- lazarus-1.4.4+dfsg/components/lazutils/ttgload.pas 2013-02-08 12:35:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/ttgload.pas 2015-03-15 10:19:37.000000000 +0000 @@ -122,7 +122,7 @@ var left_bearing, advance : TT_Pos; begin - TT_Get_Metrics( face^.horizontalHeader, index, left_bearing{%H-}, advance {%H-}); + TT_Get_Metrics( face^.horizontalHeader, index, left_bearing{%H-}, advance{%H-}); lsb := Int(left_bearing); aw := Int(advance); diff -Nru lazarus-1.4.4+dfsg/components/lazutils/unixlazutf8.inc lazarus-1.6+dfsg/components/lazutils/unixlazutf8.inc --- lazarus-1.4.4+dfsg/components/lazutils/unixlazutf8.inc 2014-11-26 22:12:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/unixlazutf8.inc 2015-12-09 23:35:22.000000000 +0000 @@ -10,6 +10,29 @@ Result := UTF8ToSys(s); end; +function WinCPToUTF8(const s: string): string; +begin + if NeedRTLAnsi and (not IsASCII(s)) then + begin + Result:=AnsiToUTF8(s); + {$ifdef FPC_HAS_CPSTRING} + // prevent UTF8 codepage appear in the strings - we don't need codepage + // conversion magic in LCL code + SetCodePage(RawByteString(Result), StringCodePage(s), False); + {$endif} + end + else + Result:=s; +end; + +function UTF8ToWinCP(const s: string): string; +begin + if NeedRTLAnsi and (not IsASCII(s)) then + Result:=UTF8ToAnsi(s) + else + Result:=s; +end; + function ParamStrUTF8(Param: Integer): string; begin Result:=SysToUTF8(ObjPas.ParamStr(Param)); diff -Nru lazarus-1.4.4+dfsg/components/lazutils/utf8process.pp lazarus-1.6+dfsg/components/lazutils/utf8process.pp --- lazarus-1.4.4+dfsg/components/lazutils/utf8process.pp 2014-09-20 20:55:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/utf8process.pp 2015-12-05 18:51:42.000000000 +0000 @@ -19,11 +19,29 @@ {$mode objfpc}{$H+} +{$IF FPC_FULLVERSION<20701} + {$DEFINE UseOldTProcess} +{$ENDIF} + +{$IFNDEF UseOldTProcess} + {$IFDEF MSWINDOWS} + {$DEFINE UseTProcessW} + {$ELSE} + {$DEFINE UseTProcessAlias} + {$ENDIF} +{$ENDIF} + + interface uses - Classes, SysUtils, Process, FileUtil, LazUTF8, LazUtilsStrConsts; + Classes, SysUtils, Process, + {$IF defined(UseSeparateTProcessW) or defined(UseTProcessW)} + pipes, + {$ENDIF} + FileUtil, LazFileUtils, LazUTF8, LazUtilsStrConsts; + {$IFDEF UseOldTProcess} type { TProcessUTF8 } @@ -60,6 +78,30 @@ property Executable: string read FExecutableUTF8 Write SetExecutableUTF8; property Parameters: TStrings read FParametersUTF8 write SetParametersUTF8; end; + {$ENDIF} + + {$IFDEF UseTProcessW} +const + SNoCommandLine = 'Cannot execute empty command-line'; + SErrCannotExecute = 'Failed to execute %s : %d'; +type + { TProcessUTF8 } + + TProcessUTF8 = class(TProcess) + protected + procedure SetProcessHandle(aProcessHandle : THandle); + procedure SetThreadHandle(aThreadHandle : THandle); + procedure SetProcessID(aProcessID : Integer); + public + procedure Execute; override; + end; + {$ENDIF} + + {$IFDEF UseTProcessAlias} +type + TProcessUTF8 = class(TProcess) + end; + {$ENDIF} procedure RunCmdFromPath(ProgramFilename, CmdLineParameters: string); function FindFilenameOfCmd(ProgramFilename: string): string; @@ -97,7 +139,7 @@ {$ENDIF} begin {$IFnDEF WinCE} - if GetProcessAffinityMask(GetCurrentProcess, ProcessAffinityMask, SystemAffinityMask) + if GetProcessAffinityMask(GetCurrentProcess, ProcessAffinityMask{%H-}, SystemAffinityMask{%H-}) then begin Result := 0; for i := 0 to 31 do begin @@ -109,7 +151,7 @@ end; {$ENDIF} //can't get the affinity mask so we just report the total number of processors - GetSystemInfo(SystemInfo); + GetSystemInfo(SystemInfo{%H-}); Result := SystemInfo.dwNumberOfProcessors; end; {$ELSEIF defined(UNTESTEDsolaris)} @@ -139,8 +181,67 @@ end; {$ENDIF} -{$WARN SYMBOL_DEPRECATED OFF} +function FindFilenameOfCmd(ProgramFilename: string): string; +begin + Result:=TrimFilename(ProgramFilename); + if not FilenameIsAbsolute(Result) then begin + if Pos(PathDelim,Result)>0 then begin + // with sub directory => relative to current directory + Result:=CleanAndExpandFilename(Result); + end else begin + // search in PATH + Result:=FindDefaultExecutablePath(Result); + end; + end; + if (Result<>'') and not FileExistsUTF8(Result) then + Result:=''; +end; +// Runs a short command which should point to an executable in +// the environment PATH +// For example: ProgramFilename=ls CmdLineParameters=-l /home +// Will locate and execute the file /bin/ls +// If the command isn't found, an exception will be raised +procedure RunCmdFromPath(ProgramFilename, CmdLineParameters: string); +var + OldProgramFilename: String; + BrowserProcess: TProcessUTF8; +begin + OldProgramFilename:=ProgramFilename; + ProgramFilename:=FindFilenameOfCmd(ProgramFilename); + + if ProgramFilename='' then + raise EFOpenError.Create(Format(lrsProgramFileNotFound, [OldProgramFilename])); + if not FileIsExecutable(ProgramFilename) then + raise EFOpenError.Create(Format(lrsCanNotExecute, [ProgramFilename])); + + // run + BrowserProcess := TProcessUTF8.Create(nil); + try + BrowserProcess.InheritHandles:=false; + // Encloses the executable with "" if its name has spaces + if Pos(' ',ProgramFilename)>0 then + ProgramFilename:='"'+ProgramFilename+'"'; + + {$Push} + {$WARN SYMBOL_DEPRECATED OFF} + BrowserProcess.CommandLine := ProgramFilename; + if CmdLineParameters<>'' then + BrowserProcess.CommandLine := BrowserProcess.CommandLine + ' ' + CmdLineParameters; + {$Pop} + BrowserProcess.Execute; + finally + BrowserProcess.Free; + end; +end; + +procedure Register; +begin + RegisterComponents('System',[TProcessUTF8]); +end; + +{$IFDEF UseOldTProcess} +{$WARN SYMBOL_DEPRECATED OFF} { TProcessUTF8 } procedure TProcessUTF8.SetApplicationNameUTF8(const AValue: string); @@ -247,60 +348,316 @@ inherited Execute; end; -function FindFilenameOfCmd(ProgramFilename: string): string; +{$ENDIF} + +{$IFDEF UseTProcessW} +Const + PriorityConstants : Array [TProcessPriority] of Cardinal = + (HIGH_PRIORITY_CLASS,IDLE_PRIORITY_CLASS, + NORMAL_PRIORITY_CLASS,REALTIME_PRIORITY_CLASS); + +function WStrAsUniquePWideChar(var s: UnicodeString): PWideChar; inline; begin - Result:=TrimFilename(ProgramFilename); - if not FilenameIsAbsolute(Result) then begin - if Pos(PathDelim,Result)>0 then begin - // with sub directory => relative to current directory - Result:=CleanAndExpandFilename(Result); - end else begin - // search in PATH - Result:=FindDefaultExecutablePath(Result); - end; - end; - if (Result<>'') and not FileExistsUTF8(Result) then - Result:=''; + UniqueString(s); + if s<>'' then + Result:=PWideChar(s) + else + Result:=nil; end; -// Runs a short command which should point to an executable in -// the environment PATH -// For example: ProgramFilename=ls CmdLineParameters=-l /home -// Will locate and execute the file /bin/ls -// If the command isn't found, an exception will be raised -procedure RunCmdFromPath(ProgramFilename, CmdLineParameters: string); +Function GetStartupFlags (P : TProcessUTF8): Cardinal; + +begin + Result:=0; + if poUsePipes in P.Options then + Result:=Result or Startf_UseStdHandles; + if suoUseShowWindow in P.StartupOptions then + Result:=Result or startf_USESHOWWINDOW; + if suoUSESIZE in P.StartupOptions then + Result:=Result or startf_usesize; + if suoUsePosition in P.StartupOptions then + Result:=Result or startf_USEPOSITION; + if suoUSECOUNTCHARS in P.Startupoptions then + Result:=Result or startf_usecountchars; + if suoUsefIllAttribute in P.StartupOptions then + Result:=Result or startf_USEFILLATTRIBUTE; +end; + +Function GetCreationFlags(P : TProcessUTF8) : Cardinal; + +begin + Result:=CREATE_UNICODE_ENVIRONMENT; + if poNoConsole in P.Options then + Result:=Result or Detached_Process; + if poNewConsole in P.Options then + Result:=Result or Create_new_console; + if poNewProcessGroup in P.Options then + Result:=Result or CREATE_NEW_PROCESS_GROUP; + If poRunSuspended in P.Options Then + Result:=Result or Create_Suspended; + if poDebugProcess in P.Options Then + Result:=Result or DEBUG_PROCESS; + if poDebugOnlyThisProcess in P.Options Then + Result:=Result or DEBUG_ONLY_THIS_PROCESS; + if poDefaultErrorMode in P.Options Then + Result:=Result or CREATE_DEFAULT_ERROR_MODE; + result:=result or PriorityConstants[P.Priority]; +end; + +Function MaybeQuote(Const S : String) : String; + +begin + If (Pos(' ',S)<>0) then + Result:='"'+S+'"' + else + Result:=S; +end; + +Function MaybeQuoteIfNotQuoted(Const S : String) : String; + +begin + If (Pos(' ',S)<>0) and (pos('"',S)=0) then + Result:='"'+S+'"' + else + Result:=S; +end; + +Function StringsToWChars(List : TStrings): pointer; + var - OldProgramFilename: String; - BrowserProcess: TProcessUTF8; + EnvBlock: UnicodeString; + I: Integer; + begin - OldProgramFilename:=ProgramFilename; - ProgramFilename:=FindFilenameOfCmd(ProgramFilename); + EnvBlock := ''; + For I:=0 to List.Count-1 do + EnvBlock := EnvBlock + UTF8Decode(List[i]) + #0; + EnvBlock := EnvBlock + #0; + GetMem(Result, Length(EnvBlock)*2); + CopyMemory(Result, @EnvBlock[1], Length(EnvBlock)*2); +end; - if ProgramFilename='' then - raise EFOpenError.Create(Format(lrsProgramFileNotFound, [OldProgramFilename])); - if not FileIsExecutable(ProgramFilename) then - raise EFOpenError.Create(Format(lrsCanNotExecute, [ProgramFilename])); +Procedure InitProcessAttributes(Out PA : TSecurityAttributes); - // run - BrowserProcess := TProcessUTF8.Create(nil); - try - BrowserProcess.InheritHandles:=false; - // Encloses the executable with "" if its name has spaces - if Pos(' ',ProgramFilename)>0 then - ProgramFilename:='"'+ProgramFilename+'"'; +begin + FillChar(PA{%H-},SizeOf(PA),0); + PA.nLength := SizeOf(PA); +end; - BrowserProcess.CommandLine := ProgramFilename; - if CmdLineParameters<>'' then - BrowserProcess.CommandLine := BrowserProcess.CommandLine + ' ' + CmdLineParameters; - BrowserProcess.Execute; - finally - BrowserProcess.Free; +Procedure InitThreadAttributes(Out TA : TSecurityAttributes); + +begin + FillChar(TA{%H-},SizeOf(TA),0); + TA.nLength := SizeOf(TA); +end; + +Procedure InitStartupInfo(P : TProcessUTF8; Out SI : STARTUPINFOW); + +Const + SWC : Array [TShowWindowOptions] of Cardinal = + (0,SW_HIDE,SW_Maximize,SW_Minimize,SW_Restore,SW_Show, + SW_ShowDefault,SW_ShowMaximized,SW_ShowMinimized, + SW_showMinNOActive,SW_ShowNA,SW_ShowNoActivate,SW_ShowNormal); + +begin + FillChar(SI{%H-},SizeOf(SI),0); + SI.dwFlags:=GetStartupFlags(P); + if P.ShowWindow<>swoNone then + SI.dwFlags:=SI.dwFlags or Startf_UseShowWindow + else + SI.dwFlags:=SI.dwFlags and not Startf_UseShowWindow; + SI.wShowWindow:=SWC[P.ShowWindow]; + if (poUsePipes in P.Options) then + begin + SI.dwFlags:=SI.dwFlags or Startf_UseStdHandles; + end; + if P.FillAttribute<>0 then + begin + SI.dwFlags:=SI.dwFlags or Startf_UseFillAttribute; + SI.dwFillAttribute:=P.FillAttribute; + end; + SI.dwXCountChars:=P.WindowColumns; + SI.dwYCountChars:=P.WindowRows; + SI.dwYsize:=P.WindowHeight; + SI.dwXsize:=P.WindowWidth; + SI.dwy:=P.WindowTop; + SI.dwX:=P.WindowLeft; +end; + +{ The handles that are to be passed to the child process must be + inheritable. On the other hand, only non-inheritable handles + allow the sending of EOF when the write-end is closed. This + function is used to duplicate the child process's ends of the + handles into inheritable ones, leaving the parent-side handles + non-inheritable. +} +function DuplicateHandleFP(var handle: THandle): Boolean; + +var + oldHandle: THandle; +begin + oldHandle := handle; + Result := DuplicateHandle + ( GetCurrentProcess(), + oldHandle, + GetCurrentProcess(), + @handle, + 0, + true, + DUPLICATE_SAME_ACCESS + ); + if Result then + Result := CloseHandle(oldHandle); +end; + + +Procedure CreatePipes(Var HI,HO,HE : Thandle; Var SI : TStartupInfoW; CE : Boolean; APipeBufferSize : Cardinal); + +begin + CreatePipeHandles(SI.hStdInput,HI, APipeBufferSize); + DuplicateHandleFP(SI.hStdInput); + CreatePipeHandles(HO,Si.hStdOutput, APipeBufferSize); + DuplicateHandleFP( Si.hStdOutput); + if CE then begin + CreatePipeHandles(HE,SI.hStdError, APipeBufferSize); + DuplicateHandleFP( SI.hStdError); + end + else + begin + SI.hStdError:=SI.hStdOutput; + HE:=HO; + end; +end; + +type + TProcessClassTemplate = class(TComponent) + private + {%H-}FProcessOptions : TProcessOptions; + {%H-}FStartupOptions : TStartupOptions; + FProcessID : Integer; + {%H-}FTerminalProgram: String; + {%H-}FThreadID : Integer; + FProcessHandle : Thandle; + FThreadHandle : Thandle; end; + +{ TProcessUTF8 } + +procedure TProcessUTF8.SetProcessHandle(aProcessHandle: THandle); +var + o: TProcessClassTemplate; +begin + o:=TProcessClassTemplate.Create(nil); + PHANDLE(Pointer(Self)+(@o.FProcessHandle-Pointer(o)))^:=aProcessHandle; + if aProcessHandle<>ProcessHandle then + raise Exception.Create('TProcessUTF8.SetProcessHandle failed'); + o.Free; end; -procedure Register; +procedure TProcessUTF8.SetThreadHandle(aThreadHandle: THandle); +var + o: TProcessClassTemplate; begin - RegisterComponents('System',[TProcessUTF8]); + o:=TProcessClassTemplate.Create(nil); + PHANDLE(Pointer(Self)+(@o.FThreadHandle-Pointer(o)))^:=aThreadHandle; + if aThreadHandle<>ThreadHandle then + raise Exception.Create('TProcessUTF8.SetThreadHandle failed'); + o.Free; end; +procedure TProcessUTF8.SetProcessID(aProcessID: Integer); +var + o: TProcessClassTemplate; +begin + o:=TProcessClassTemplate.Create(nil); + PHANDLE(Pointer(Self)+(@o.FProcessID-Pointer(o)))^:=aProcessID; + if aProcessID<>ProcessID then + raise Exception.Create('TProcessUTF8.SetProcessID failed'); + o.Free; +end; + +procedure TProcessUTF8.Execute; +Var + i : Integer; + WName,WDir,WCommandLine : UnicodeString; + PWName,PWDir,PWCommandLine : PWideChar; + FEnv: pointer; + FCreationFlags : Cardinal; + FProcessAttributes : TSecurityAttributes; + FThreadAttributes : TSecurityAttributes; + FProcessInformation : TProcessInformation; + FStartupInfo : STARTUPINFOW; + HI,HO,HE : THandle; + Cmd : String; + +begin + WName:=''; + WCommandLine:=''; + WDir:=''; + + if (ApplicationName{%H-}='') and (CommandLine{%H-}='') and (Executable='') then + Raise EProcess.Create(SNoCommandline); + if (ApplicationName{%H-}<>'') then + begin + WName:=UTF8Decode(ApplicationName{%H-}); + WCommandLine:=UTF8Decode(CommandLine{%H-}); + end + else If (CommandLine{%H-}<>'') then + WCommandLine:=UTF8Decode(CommandLine{%H-}) + else if (Executable<>'') then + begin + Cmd:=MaybeQuoteIfNotQuoted(Executable); + For I:=0 to Parameters.Count-1 do + Cmd:=Cmd+' '+MaybeQuoteIfNotQuoted(Parameters[i]); + WCommandLine:=UTF8Decode(Cmd); + end; + If CurrentDirectory<>'' then + WDir:=UTF8Decode(CurrentDirectory); + if Environment.Count<>0 then + FEnv:=StringsToWChars(Environment) + else + FEnv:=Nil; + Try + FCreationFlags:=GetCreationFlags(Self); + InitProcessAttributes(FProcessAttributes); + InitThreadAttributes(FThreadAttributes); + InitStartupInfo(Self,FStartupInfo); + If poUsePipes in Options then + CreatePipes(HI{%H-},HO{%H-},HE{%H-},FStartupInfo,Not(poStdErrToOutPut in Options), PipeBufferSize); + Try + // Beware: CreateProcess can alter the strings + // Beware: nil is not the same as a pointer to a #0 + PWName:=WStrAsUniquePWideChar(WName); + PWCommandLine:=WStrAsUniquePWideChar(WCommandLine); + PWDir:=WStrAsUniquePWideChar(WDir); + + If Not CreateProcessW (PWName,PWCommandLine,@FProcessAttributes,@FThreadAttributes, + InheritHandles,FCreationFlags,FEnv,PWDir,FStartupInfo, + fProcessInformation{%H-}) then + Raise EProcess.CreateFmt(SErrCannotExecute,[CommandLine{%H-},GetLastError]); + SetProcessHandle(FProcessInformation.hProcess); + SetThreadHandle(FProcessInformation.hThread); + SetProcessID(FProcessINformation.dwProcessID); + Finally + if POUsePipes in Options then + begin + FileClose(FStartupInfo.hStdInput); + FileClose(FStartupInfo.hStdOutput); + if Not (poStdErrToOutPut in Options) then + FileClose(FStartupInfo.hStdError); + CreateStreams(HI,HO,HE); + end; + end; + FRunning:=True; + Finally + If FEnv<>Nil then + FreeMem(FEnv); + end; + if not (csDesigning in ComponentState) and // This would hang the IDE ! + (poWaitOnExit in Options) and + not (poRunSuspended in Options) then + WaitOnExit; +end; +{$ENDIF} + end. diff -Nru lazarus-1.4.4+dfsg/components/lazutils/winlazfileutils.inc lazarus-1.6+dfsg/components/lazutils/winlazfileutils.inc --- lazarus-1.4.4+dfsg/components/lazutils/winlazfileutils.inc 2015-07-19 11:38:11.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/winlazfileutils.inc 2015-12-05 11:31:03.000000000 +0000 @@ -362,9 +362,11 @@ end; function GetCurrentDirWide: String; +{$ifndef WinCE} var w : WideString; res : Integer; + {$endif} begin {$ifdef WinCE} Result := '\'; @@ -382,10 +384,12 @@ procedure GetDirWide(DriveNr: Byte; var Dir: String); {This procedure may not be threadsafe, because SetCurrentDirectory isn't} +{$ifndef WinCE} var w, D: WideString; SavedDir: WideString; res : Integer; +{$endif} begin {$ifdef WinCE} Dir := '\'; @@ -535,10 +539,9 @@ {$endif} end; -{$IF DEFINED(WinCE) OR (FPC_FULLVERSION>=20701)} +{$IF DEFINED(WinCE) OR (FPC_FULLVERSION>=30000)} {$define FindData_W} -{$endif} - +{$IFEND} function FindMatch(var f: TSearchRec) : Longint; begin @@ -559,7 +562,11 @@ in win32 it is the ansi structure with a utf-8 string in wince it is a wide structure } {$ifdef FindData_W} + {$IFDEF ACP_RTL} + f.Name:=String(UnicodeString(F.FindData.cFileName)); + {$ELSE} f.Name:=UTF8Encode(UnicodeString(F.FindData.cFileName)); + {$ENDIF} {$else} f.Name:=F.FindData.cFileName; {$endif} @@ -611,7 +618,11 @@ Rslt.ExcludeAttr:=(not Attr) and ($1e); { $1e = faHidden or faSysFile or faVolumeID or faDirectory } { FindFirstFile is a Win32 Call } - Rslt.FindHandle:=Windows.FindFirstFileW( PWideChar(UTF8Decode(Path)),find{%H-}); + {$IFDEF ACP_RTL} + Rslt.FindHandle:=Windows.FindFirstFileW(PWideChar(WideString(Path)),find{%H-}); + {$ELSE} + Rslt.FindHandle:=Windows.FindFirstFileW(PWideChar(UTF8Decode(Path)),find{%H-}); + {$ENDIF} If Rslt.FindHandle=Windows.Invalid_Handle_value then begin Result:=GetLastError; @@ -644,21 +655,6 @@ Result := Integer(GetLastError); end; -//fpc 2.6.0 does not have StrLen for WideChar. -//Remove this when we have 2.6.4 or higher -{$if FPC_FULLVERSION < 20602} -function StrLen(PW: PWideChar): SizeInt; overload; -var - i: SizeInt; -begin - i:=0; - if assigned(PW) then - while (PW[i] <> #0) do inc(i); - Result := i; -end; -{$endif} - - {$IFDEF WINCE} // In WinCE these API calls are in Windows unit function GetWindowsSpecialDirW(ID : Integer) : String; @@ -930,7 +926,7 @@ Fn := IncludeTrailingPathDelimiter(CurDir) + Fn else begin - if (Fn[1] = DirectorySeparator) then Delete(Fn,1,1); + if (Length(Fn) > 0) and (Fn[1] = DirectorySeparator) then Delete(Fn,1,1); Fn := IncludeTrailingPathDelimiter(BaseDir) + Fn; end; @@ -1024,9 +1020,11 @@ function FileIsHardLink(const AFilename: string): boolean; +{$ifndef wince} var H: THandle; FileInfo: BY_HANDLE_FILE_INFORMATION; + {$endif} begin Result := false; {$ifndef wince} diff -Nru lazarus-1.4.4+dfsg/components/lazutils/winlazutf8.inc lazarus-1.6+dfsg/components/lazutils/winlazutf8.inc --- lazarus-1.4.4+dfsg/components/lazutils/winlazutf8.inc 2015-02-19 10:33:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/lazutils/winlazutf8.inc 2015-12-24 22:17:53.000000000 +0000 @@ -7,10 +7,10 @@ var ArgsW: Array of WideString; ArgsWCount: Integer; // length(ArgsW)+1 - {$IFDEF EnableUTF8RTL} + {$IF DEFINED(UTF8_RTL) AND NOT DEFINED(WINCE)} ArgsUTF8: Array of String; // the ArgsW array as UTF8 OldArgV: PPChar = nil; - {$ENDIF} + {$IFEND} //************ START "Stubs" that just call Ansi or Wide implementation @@ -37,21 +37,23 @@ //*************** START WideString impementations -//fpc 2.6.0 does not have StrLen for WideChar. -//Remove this when we have 2.6.4 or higher -{$if FPC_FULLVERSION < 20602} -function StrLen(PW: PWideChar): SizeInt; overload; -var - i: SizeInt; -begin - i:=0; - if assigned(PW) then - while (PW[i] <> #0) do inc(i); - Result := i; + +{$IF DEFINED(UTF8_RTL) AND NOT DEFINED(WINCE)} +procedure SetupArgvAsUtf8; +var + i: Integer; +begin + SetLength(ArgsUTF8,length(ArgsW)); + OldArgV:=argv; + GetMem(argv,SizeOf(Pointer)*length(ArgsW)); + for i:=0 to length(ArgsW)-1 do + begin + ArgsUTF8[i]:=ArgsW{%H-}[i]; + argv[i]:=PChar(ArgsUTF8[i]); + end; end; {$endif} - procedure SetupCommandlineParametersWide; var ArgLen, Start, CmdLen, i, j: SizeInt; @@ -187,19 +189,13 @@ end; Dec(ArgsWCount); - - {$IFDEF EnableUTF8RTL} - if DefaultSystemCodePage=CP_UTF8 then begin - SetLength(ArgsUTF8,length(ArgsW)); - OldArgV:=argv; - GetMem(argv,SizeOf(Pointer)*length(ArgsW)); - for i:=0 to length(ArgsW)-1 do - begin - ArgsUTF8[i]:=ArgsW{%H-}[i]; - argv[i]:=PChar(ArgsUTF8[i]); - end; - end; - {$ENDIF} + //Note: + //On WinCe Argsv is a static function, so we cannot change it. + //This might change in the future if Argsv on WinCE will be declared as a function variable + {$IF DEFINED(UTF8_RTL) AND NOT DEFINED(WINCE)} + if DefaultSystemCodePage=CP_UTF8 then + SetupArgvAsUtf8; + {$IFEND} end; function ParamStrUtf8Wide(Param: Integer): String; @@ -212,7 +208,11 @@ else begin if (Param <= ArgsWCount) then + {$IFDEF ACP_RTL} + Result := String(UnicodeString(ArgsW[Param])) + {$ELSE} Result := Utf8Encode(ArgsW[Param]) + {$ENDIF ACP_RTL} else Result := ''; end; @@ -237,7 +237,7 @@ else Result := s; FreeMem(Dst); - Result := SysToUTF8(Result); + Result := WinCPToUTF8(Result); {$endif} end; @@ -249,23 +249,33 @@ begin {$ifdef WinCE} Result := UTF8ToSys(s); - {$else} - Result := UTF8ToSys(s); + {$else WinCE} + {$ifndef NO_CP_RTL} + Result := UTF8ToWinCP(s); + {$else NO_CP_RTL} + Result := UTF8ToSys(s); // Kept for compatibility + {$endif NO_CP_RTL} Dst := AllocMem((Length(Result) + 1) * SizeOf(Char)); if CharToOEM(PChar(Result), Dst) then Result := StrPas(Dst); FreeMem(Dst); - {$endif} + {$ifndef NO_CP_RTL} + SetCodePage(RawByteString(Result), CP_OEMCP, False); + {$endif NO_CP_RTL} + {$endif WinCE} end; -{$IFDEF MSWindows} +{$IFDEF Windows} // for all Windows supporting 8bit codepages (e.g. not WinCE) -function WinCPToUTF8(const s: string): string; +function WinCPToUTF8(const s: string): string; {$ifdef WinCe}inline;{$endif} // result has codepage CP_ACP var UTF16WordCnt: SizeInt; UTF16Str: UnicodeString; begin + {$ifdef WinCE} + Result := SysToUtf8(s); + {$else} Result:=s; if IsASCII(Result) then begin {$ifdef FPC_HAS_CPSTRING} @@ -286,14 +296,18 @@ SetCodePage(RawByteString(Result), CP_ACP, False); {$endif} end; + {$endif} end; -function UTF8ToWinCP(const s: string): string; +function UTF8ToWinCP(const s: string): string; {$ifdef WinCe}inline;{$endif} // result has codepage CP_ACP var src: UnicodeString; len: LongInt; begin + {$ifdef WinCE} + Result := Utf8ToSys(s); + {$else} Result:=s; if IsASCII(Result) then begin {$ifdef FPC_HAS_CPSTRING} @@ -314,6 +328,7 @@ SetCodePage(RawByteString(Result), CP_ACP, False); {$endif} end; + {$endif} end; {$ENDIF} @@ -331,7 +346,7 @@ end; {$endif} -{$IFDEF EnableUTF8RTL} +{$IFDEF UTF8_RTL} function GetLocaleStr(aLocaleID, aLCType: Longint; const Def: string): String; var L: Integer; @@ -349,13 +364,16 @@ function GetLocaleCharUTF8(aLocaleID, aLCType: Longint; Def: Char): Char; var - Buf: array[0..3] of Char; // sdate allows 4 chars. + Buf: array[0..3] of WChar; // sdate allows 4 chars. + GLI: LongInt; begin - if (GetLocaleInfoA(aLocaleID, aLCType, Buf, sizeof(buf)) > 0) - and (ord(Buf[0])<128) then + //Use Widestring Api so it works on WinCE as well + GLI := GetLocaleInfoW(aLocaleID, aLCType, Buf, sizeof(buf)); + if (GLI > 0) and (ord(Buf[0])<128) then Result := Buf[0] else begin Result := Def; + { case Buf[0] of #$C2: case Buf[1] of @@ -383,6 +401,35 @@ #$8E: if Buf[2]=#$96 then Result := ''''; // codepoint 9110 decimal separator end; end; + } + if (GLI = 1) then begin + case Buf[0] of + #$00A0: Result := ' '; // non breakable space + #$00B7: Result := '.'; // middle stop + #$02D9: Result := ''''; // dot above, italian handwriting + #$066B: Result := ','; // arabic decimal separator, persian thousand separator + #$066C: Result := ''''; // arabic thousand separator + #$2002: Result := ' '; // long space + #$2003: Result := ' '; // long space + #$2009: Result := ' '; // thin space + #$202F: Result := ' '; // narrow non breakable space + #$2014: Result := '-'; // persian decimal mark + #$2396: Result := ''''; // codepoint 9110 decimal separator + { Utf8 Utf16 + C2 A0 -> 00A0 + C2 B7 -> 00B7 + CB 99 -> 02D9 + D9 AB -> 066B + D9 AC -> 066C + E2 80 82 -> 2002 + E2 80 83 -> 2003 + E2 80 89 -> 2009 + E2 80 AF -> 202F + E2 80 94 -> 2014 + E2 8E 96 -> 2396 + } + end; //case + end; //GLI = 1 end; end; @@ -493,8 +540,12 @@ end; end; end; - {$ifdef EnableUTF8RTL} + {$IFDEF UTF8_RTL} + {$ifndef wince} GetFormatSettingsUTF8(GetThreadLocale,FormatSettings); + {$else} + GetFormatSettingsUTF8(GetUserDefaultLCID ,FormatSettings); + {$endif} widestringmanager.UpperAnsiStringProc:=@UTF8UpperString; widestringmanager.LowerAnsiStringProc:=@UTF8LowerString; widestringmanager.CompareStrAnsiStringProc:=@UTF8CompareStr; @@ -506,14 +557,16 @@ // Does anyone need these two? //widestringmanager.StrLowerAnsiStringProc; //widestringmanager.StrUpperAnsiStringProc; - {$endif} + {$IFEND} end; procedure FinalizeLazUTF8; +{$IFDEF UTF8_RTL} var p: PPChar; +{$ENDIF} begin - {$IFDEF EnableUTF8RTL} + {$IF DEFINED(UTF8_RTL) AND NOT DEFINED(WINCE)} // restore argv and free memory if OldArgV<>nil then begin @@ -521,5 +574,5 @@ argv:=OldArgV; Freemem(p); end; - {$ENDIF} + {$IFEND} end; diff -Nru lazarus-1.4.4+dfsg/components/leakview/dbginforeader.pas lazarus-1.6+dfsg/components/leakview/dbginforeader.pas --- lazarus-1.4.4+dfsg/components/leakview/dbginforeader.pas 2013-06-25 09:44:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/dbginforeader.pas 2015-08-11 12:06:23.000000000 +0000 @@ -122,8 +122,8 @@ ---------------------------------------------------------------------------} var - base, limit : SizeInt; - index : SizeInt; + base, limit : int64; + index : int64; function Init(aBase, aLimit : Int64) : Boolean; begin @@ -161,7 +161,7 @@ an error } function ReadNext() : Longint; inline; var - bytesread : SizeInt; + bytesread : integer; begin ReadNext := -1; if EBufPos >= EBufCnt then begin diff -Nru lazarus-1.4.4+dfsg/components/leakview/heaptrcview.lfm lazarus-1.6+dfsg/components/leakview/heaptrcview.lfm --- lazarus-1.4.4+dfsg/components/leakview/heaptrcview.lfm 2012-05-29 22:45:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/heaptrcview.lfm 2015-08-01 10:00:54.000000000 +0000 @@ -1,22 +1,25 @@ object HeapTrcViewForm: THeapTrcViewForm - Left = 440 + Left = 677 Height = 516 - Top = 302 + Top = 155 Width = 689 + BorderIcons = [biSystemMenu, biMaximize] Caption = 'HeapTrcViewForm' ClientHeight = 516 ClientWidth = 689 FormStyle = fsStayOnTop OnCreate = FormCreate OnDestroy = FormDestroy - LCLVersion = '1.1' + Position = poScreenCenter + LCLVersion = '1.5' object lblTrcFile: TLabel AnchorSideLeft.Control = Owner + AnchorSideTop.Control = edtTrcFileName AnchorSideTop.Side = asrCenter Left = 6 - Height = 14 - Top = 9 - Width = 35 + Height = 17 + Top = 14 + Width = 47 BorderSpacing.Left = 6 Caption = '.trc file' ParentColor = False @@ -25,58 +28,61 @@ AnchorSideLeft.Control = Owner AnchorSideTop.Side = asrBottom Left = 6 - Height = 23 + Height = 29 Top = 40 - Width = 61 + Width = 62 AutoSize = True BorderSpacing.Left = 6 BorderSpacing.Top = 12 Caption = 'Update' OnClick = btnUpdateClick - TabOrder = 0 + TabOrder = 2 end object chkStayOnTop: TCheckBox AnchorSideTop.Control = btnUpdate AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 609 - Height = 17 - Top = 43 - Width = 74 + Left = 581 + Height = 24 + Top = 42 + Width = 102 Anchors = [akTop, akRight] BorderSpacing.Right = 6 Caption = 'Stay on top' OnChange = chkStayOnTopChange - TabOrder = 1 + TabOrder = 6 end object btnBrowse: TButton - AnchorSideTop.Side = asrCenter - Left = 645 - Height = 20 - Top = 9 - Width = 38 - Anchors = [akTop, akRight] + AnchorSideTop.Control = edtTrcFileName + AnchorSideBottom.Control = edtTrcFileName + AnchorSideBottom.Side = asrBottom + Left = 616 + Height = 29 + Top = 8 + Width = 67 + Anchors = [akTop, akRight, akBottom] + BorderSpacing.Left = 6 BorderSpacing.Right = 6 Caption = '...' OnClick = btnBrowseClick - TabOrder = 2 + TabOrder = 1 end object chkUseRaw: TCheckBox AnchorSideLeft.Control = BtnResolve AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = btnUpdate AnchorSideTop.Side = asrCenter - Left = 266 - Height = 17 - Top = 43 - Width = 86 + Left = 293 + Height = 24 + Top = 42 + Width = 119 BorderSpacing.Left = 6 Caption = 'Raw leak data' Checked = True OnChange = chkUseRawChange State = cbChecked - TabOrder = 3 + TabOrder = 5 end object ctrlPanel: TPanel AnchorSideLeft.Control = Owner @@ -87,24 +93,23 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 6 - Height = 441 - Top = 69 + Height = 435 + Top = 75 Width = 677 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 BevelOuter = bvNone - ClientHeight = 441 + ClientHeight = 435 ClientWidth = 677 - TabOrder = 4 + TabOrder = 7 object trvTraceInfo: TTreeView AnchorSideTop.Side = asrBottom Left = 0 - Height = 349 + Height = 343 Top = 6 Width = 677 Align = alClient BorderSpacing.Top = 6 - DefaultItemHeight = 16 ReadOnly = True TabOrder = 0 OnDblClick = trvTraceInfoDblClick @@ -113,7 +118,7 @@ object memoSummary: TMemo Left = 0 Height = 81 - Top = 360 + Top = 354 Width = 677 Align = alBottom ReadOnly = True @@ -124,7 +129,7 @@ Cursor = crVSplit Left = 0 Height = 5 - Top = 355 + Top = 349 Width = 677 Align = alBottom ResizeAnchor = akBottom @@ -134,43 +139,47 @@ AnchorSideLeft.Control = btnUpdate AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = btnUpdate - Left = 73 - Height = 23 + Left = 74 + Height = 29 Top = 40 - Width = 101 + Width = 120 AutoSize = True BorderSpacing.Left = 6 Caption = 'Paste Clipboard' OnClick = btnClipboardClick - TabOrder = 5 + TabOrder = 3 end object edtTrcFileName: TComboBox AnchorSideLeft.Control = lblTrcFile AnchorSideLeft.Side = asrBottom AnchorSideRight.Control = btnBrowse - Left = 47 - Height = 21 + Left = 59 + Height = 29 Top = 8 - Width = 592 + Width = 551 Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Right = 6 - ItemHeight = 13 - TabOrder = 6 + BorderSpacing.Around = 6 + ItemHeight = 0 + TabOrder = 0 end object BtnResolve: TButton AnchorSideLeft.Control = btnClipboard AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = btnUpdate AnchorSideTop.Side = asrCenter - Left = 180 - Height = 23 + Left = 200 + Height = 29 Top = 40 - Width = 80 + Width = 87 AutoSize = True BorderSpacing.Left = 6 Caption = 'BtnResolve' OnClick = BtnResolveClick - TabOrder = 7 + TabOrder = 4 + end + object OpenDialog: TOpenDialog + Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail] + left = 579 + top = 142 end end diff -Nru lazarus-1.4.4+dfsg/components/leakview/heaptrcview.pas lazarus-1.6+dfsg/components/leakview/heaptrcview.pas --- lazarus-1.4.4+dfsg/components/leakview/heaptrcview.pas 2014-05-30 08:54:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/heaptrcview.pas 2015-08-07 17:20:40.000000000 +0000 @@ -5,9 +5,14 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ComCtrls, ExtCtrls, LeakInfo, LazIDEIntf, MenuIntf, contnrs, Clipbrd, - XMLConf, LCLProc; + Classes, SysUtils, XMLConf, contnrs, Clipbrd, LCLProc, + LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, ExtCtrls, + // LazUtils + FileUtil, LazFileUtils, + // IDEIntf + LazIDEIntf, MenuIntf, + // LeakView + LeakInfo; type TJumpProc = procedure (Sender: TObject; const SourceName: string; @@ -26,6 +31,7 @@ lblTrcFile: TLabel; ctrlPanel: TPanel; memoSummary: TMemo; + OpenDialog: TOpenDialog; splitter: TSplitter; trvTraceInfo: TTreeView; procedure btnClipboardClick(Sender: TObject); @@ -86,7 +92,8 @@ schkRaw = 'Raw leak data'; schkTop = 'Stay on top'; sfrmCap = 'Leaks and Traces - HeapTrc and GDB backtrace output viewer'; - sfrmSelectFileWithDebugInfo = 'Select File with debug info'; + sfrmSelectFileWithDebugInfo = 'Select file with debug info'; + sfrmSelectTrcFile = 'Select file with trace log'; var HeapTrcViewForm: THeapTrcViewForm = nil; @@ -126,36 +133,28 @@ end; procedure THeapTrcViewForm.BtnResolveClick(Sender: TObject); -var - OpenDialog : TOpenDialog; begin if Finfo = nil then exit; - OpenDialog := TOpenDialog.Create(nil); - try - OpenDialog.Title := sfrmSelectFileWithDebugInfo; - if not OpenDialog.Execute then Exit; - - Finfo.ResolveLeakInfo(OpenDialog.FileName, fItems); - ChangeTreeText; - finally - OpenDialog.Free; - end; + OpenDialog.FileName := ''; + OpenDialog.Filter := ''; + OpenDialog.Title := sfrmSelectFileWithDebugInfo; + if not OpenDialog.Execute then Exit; + + Finfo.ResolveLeakInfo(OpenDialog.FileName, fItems); + ChangeTreeText; end; procedure THeapTrcViewForm.btnBrowseClick(Sender: TObject); -var - OpenDialog : TOpenDialog; begin - OpenDialog := TOpenDialog.Create(nil); - try - if not OpenDialog.Execute then Exit; - edtTrcFileName.Text := OpenDialog.FileName; - DoUpdateLeaks; - AddFileToList(edtTrcFileName.Text); - finally - OpenDialog.Free; - end; + OpenDialog.FileName := ''; + OpenDialog.Filter := slblTrace + '|*.trc'; + OpenDialog.Title := sfrmSelectTrcFile; + if not OpenDialog.Execute then Exit; + + edtTrcFileName.Text := OpenDialog.FileName; + DoUpdateLeaks; + AddFileToList(edtTrcFileName.Text); end; procedure THeapTrcViewForm.chkStayOnTopChange(Sender: TObject); diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.cs.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.cs.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.cs.po 2014-05-30 08:54:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.cs.po 2015-08-06 22:01:32.000000000 +0000 @@ -50,7 +50,11 @@ msgstr "Prohlížeč úniků(LeakView) - prohlížeč výstupu HeapTrc" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +msgid "Select file with debug info" +msgstr "" + +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" msgstr "" #: heaptrcview.slbltrace @@ -78,6 +82,7 @@ msgstr "Počet uniklých bloků: %d" #: heaptrcview.strleakingmemsize +#, fuzzy,badformat msgid "Leaking Mem Size: %d" msgstr "Velikost uniklé paměti: %s" diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.es.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.es.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.es.po 2015-04-28 21:42:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.es.po 2015-08-06 22:01:32.000000000 +0000 @@ -38,7 +38,11 @@ msgstr "" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +msgid "Select file with debug info" +msgstr "" + +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" msgstr "" #: heaptrcview.slbltrace diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.fr.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.fr.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.fr.po 2015-04-24 12:31:05.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -1,15 +1,16 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" +"PO-Revision-Date: 2015-12-18 09:27+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: heaptrcview.rsdtimes msgid " (%d times)" @@ -48,9 +49,13 @@ msgstr "Fuites et Traces - Afficheur de traces \"HeapTrc\" et \"GDB\"" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +msgid "Select file with debug info" msgstr "Choisir le fichier contenant les informations de débogage" +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" +msgstr "Choisir le fichier contenant un journal d'exécution" + #: heaptrcview.slbltrace msgid ".trc file" msgstr "Fichier \".trc\"" @@ -82,3 +87,4 @@ #: heaptrcview.strtotalmemalloc msgid "Total Mem allocated: %d" msgstr "Mémoire totale allouée : %d" + diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.hu.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.hu.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.hu.po 2015-07-12 13:36:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -48,9 +48,13 @@ msgstr "Szivárgás és Nyomkövetés - HeapTrc és GDB visszakövetési kimenet megjelenítő" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +msgid "Select file with debug info" msgstr "Hibakeresési infókat tartalmazó fájl választása" +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" +msgstr "Nyomkövetési naplót tartalmazó fájl választása" + #: heaptrcview.slbltrace msgid ".trc file" msgstr ".trc fájl" @@ -82,3 +86,4 @@ #: heaptrcview.strtotalmemalloc msgid "Total Mem allocated: %d" msgstr "Teljes lefoglalt memória: %d" + diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.it.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.it.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.it.po 2014-10-25 08:55:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.it.po 2015-08-06 22:01:32.000000000 +0000 @@ -49,9 +49,15 @@ msgstr "Perdite e tracce - Visore dell'output di HeapTrc e GDB backtrace" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +#, fuzzy +#| msgid "Select File with debug info" +msgid "Select file with debug info" msgstr "Seleziona file con informazioni di debug" +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" +msgstr "" + #: heaptrcview.slbltrace msgid ".trc file" msgstr "file .trc" diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.lt.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.lt.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.lt.po 2014-05-30 08:54:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.lt.po 2015-08-06 22:01:32.000000000 +0000 @@ -52,9 +52,15 @@ msgstr "LeakView - HeapTrc išvesties žiūryklė" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +#, fuzzy +#| msgid "Select File with debug info" +msgid "Select file with debug info" msgstr "Parinkite failą su derinimo informacija" +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" +msgstr "" + #: heaptrcview.slbltrace msgid ".trc file" msgstr "failas „.trc“" diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.po 2014-05-30 08:54:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.po 2015-08-06 22:01:32.000000000 +0000 @@ -38,7 +38,11 @@ msgstr "" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +msgid "Select file with debug info" +msgstr "" + +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" msgstr "" #: heaptrcview.slbltrace diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.pt_BR.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.pt_BR.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.pt_BR.po 2014-05-30 08:54:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.pt_BR.po 2015-08-06 22:01:32.000000000 +0000 @@ -50,9 +50,15 @@ msgstr "Exibição Rastreamento Pilha" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +#, fuzzy +#| msgid "Select File with debug info" +msgid "Select file with debug info" msgstr "Selecionar arquivo com informações de depuração" +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" +msgstr "" + #: heaptrcview.slbltrace msgid ".trc file" msgstr "arquivo .trc" diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.ru.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.ru.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.ru.po 2014-06-25 22:17:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.ru.po 2015-08-06 22:01:32.000000000 +0000 @@ -8,6 +8,8 @@ "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: heaptrcview.rsdtimes msgid " (%d times)" @@ -18,7 +20,6 @@ msgstr "Ошибка анализа файла стека вызовов" #: heaptrcview.rsleakview -#| msgid "Find source lines for leak/stack-traces" msgid "Leaks and Traces" msgstr "Утечки памяти и стек вызовов" @@ -43,14 +44,17 @@ msgstr "Поверх других окон" #: heaptrcview.sfrmcap -#| msgid "LeakView - HeapTrc output viewer" msgid "Leaks and Traces - HeapTrc and GDB backtrace output viewer" msgstr "Утечки памяти и стек вызовов - программа просмотра вывода HeapTrc и стека вызовов GDB" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +msgid "Select file with debug info" msgstr "Выберите файл с отладочной информацией" +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" +msgstr "Выберите файл стека вызовов" + #: heaptrcview.slbltrace msgid ".trc file" msgstr "Файл .trc" @@ -80,7 +84,6 @@ msgstr "Размер утерянной памяти: %d" #: heaptrcview.strtotalmemalloc -#| msgid "Total Mem alloced: %d" msgid "Total Mem allocated: %d" msgstr "Размер выделенной памяти: %d" diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.uk.po lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.uk.po --- lazarus-1.4.4+dfsg/components/leakview/languages/heaptrcview.uk.po 2014-05-30 08:54:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/heaptrcview.uk.po 2015-08-06 22:01:32.000000000 +0000 @@ -50,7 +50,11 @@ msgstr "LeakView - програма перегляду виводу HeapTrc" #: heaptrcview.sfrmselectfilewithdebuginfo -msgid "Select File with debug info" +msgid "Select file with debug info" +msgstr "" + +#: heaptrcview.sfrmselecttrcfile +msgid "Select file with trace log" msgstr "" #: heaptrcview.slbltrace diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/leakinfo.fr.po lazarus-1.6+dfsg/components/leakview/languages/leakinfo.fr.po --- lazarus-1.4.4+dfsg/components/leakview/languages/leakinfo.fr.po 2015-04-21 21:42:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/leakinfo.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -1,25 +1,26 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" +"PO-Revision-Date: 2015-12-18 09:27+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: leakinfo.calltraceprefix msgid "Call trace for block " -msgstr "Call trace for block " +msgstr "Appeler le suivi pour le bloc " #: leakinfo.rawtraceprefix msgid "Stack trace:" -msgstr "Stack trace:" +msgstr "Suivi de pile :" #: leakinfo.rsstacktrace msgid "Stack trace" -msgstr "Stack trace" +msgstr "Suivi de pile" diff -Nru lazarus-1.4.4+dfsg/components/leakview/languages/leakinfo.hu.po lazarus-1.6+dfsg/components/leakview/languages/leakinfo.hu.po --- lazarus-1.4.4+dfsg/components/leakview/languages/leakinfo.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/languages/leakinfo.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -22,3 +22,4 @@ #: leakinfo.rsstacktrace msgid "Stack trace" msgstr "Verem" + diff -Nru lazarus-1.4.4+dfsg/components/leakview/leakinfo.pas lazarus-1.6+dfsg/components/leakview/leakinfo.pas --- lazarus-1.4.4+dfsg/components/leakview/leakinfo.pas 2014-07-20 21:46:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/leakview/leakinfo.pas 2015-08-07 17:20:40.000000000 +0000 @@ -7,8 +7,15 @@ interface uses - Classes, SysUtils, FileUtil, LazClasses, LazLoggerBase, DbgInfoReader, - TextTools, LazIDEIntf, ProjectIntf, CodeToolManager, CodeCache; + Classes, SysUtils, + // CodeTools + CodeToolManager, CodeCache, + // LazUtils + FileUtil, LazFileUtils, LazClasses, + // IDEIntf + TextTools, + // LeakView + DbgInfoReader; type { TStackLine } diff -Nru lazarus-1.4.4+dfsg/components/macfiles/macapplicationres.pas lazarus-1.6+dfsg/components/macfiles/macapplicationres.pas --- lazarus-1.4.4+dfsg/components/macfiles/macapplicationres.pas 2014-11-12 19:18:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/macfiles/macapplicationres.pas 2015-09-20 15:13:29.000000000 +0000 @@ -15,7 +15,7 @@ interface uses - Classes, SysUtils, FileUtil, LazUTF8Classes; + Classes, SysUtils, LazUTF8Classes, LazFileUtils; type EMacResourceException = Exception; diff -Nru lazarus-1.4.4+dfsg/components/Makefile.fpc lazarus-1.6+dfsg/components/Makefile.fpc --- lazarus-1.4.4+dfsg/components/Makefile.fpc 2014-09-13 17:20:37.000000000 +0000 +++ lazarus-1.6+dfsg/components/Makefile.fpc 2015-06-21 10:45:24.000000000 +0000 @@ -1,4 +1,4 @@ -# $Id: Makefile.fpc 46209 2014-09-13 17:20:37Z juha $ +# $Id: Makefile.fpc 49382 2015-06-21 10:45:24Z juha $ # # Makefile.fpc for Lazarus for Free Pascal # @@ -48,7 +48,6 @@ $(MAKE) -C sdf $(MAKE) -C tachart $(MAKE) -C todolist - $(MAKE) -C editortoolbar $(MAKE) -C datetimectrls $(MAKE) -C jcf2/IdePlugin/lazarus $(MAKE) -C chmhelp/packages/help @@ -85,7 +84,6 @@ $(MAKE) -C sdf clean $(MAKE) -C tachart clean $(MAKE) -C todolist clean - $(MAKE) -C editortoolbar clean $(MAKE) -C datetimectrls clean $(MAKE) -C jcf2/IdePlugin/lazarus clean $(MAKE) -C chmhelp/packages/help clean @@ -122,7 +120,6 @@ $(MAKE) -C sdf distclean $(MAKE) -C tachart distclean $(MAKE) -C todolist distclean - $(MAKE) -C editortoolbar distclean $(MAKE) -C datetimectrls distclean $(MAKE) -C jcf2/IdePlugin/lazarus distclean $(MAKE) -C chmhelp/packages/help distclean diff -Nru lazarus-1.4.4+dfsg/components/messagecomposer/messagecomposer.lfm lazarus-1.6+dfsg/components/messagecomposer/messagecomposer.lfm --- lazarus-1.4.4+dfsg/components/messagecomposer/messagecomposer.lfm 2012-03-14 23:29:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/messagecomposer/messagecomposer.lfm 2015-09-05 15:45:19.000000000 +0000 @@ -1,9 +1,10 @@ object FormMessagesComposer: TFormMessagesComposer AnchorSideLeft.Side = asrBottom - Left = 650 + Left = 658 Height = 591 - Top = 195 + Top = 123 Width = 584 + ActiveControl = KindMessageComboBox BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'Messages Composer' @@ -11,12 +12,12 @@ ClientWidth = 584 OnCreate = MessagesInitExecute Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object CaptionLabel: TLabel Left = 6 - Height = 16 + Height = 15 Top = 70 - Width = 71 + Width = 70 Caption = 'CaptionLabel' ParentColor = False end @@ -24,18 +25,18 @@ AnchorSideTop.Control = CaptionEdit AnchorSideTop.Side = asrBottom Left = 6 - Height = 16 - Top = 124 - Width = 52 + Height = 15 + Top = 123 + Width = 51 BorderSpacing.Top = 12 Caption = 'MsgLabel' ParentColor = False end object DlgTypeLabel: TLabel Left = 154 - Height = 16 + Height = 15 Top = 70 - Width = 45 + Width = 44 Caption = 'DlgType' ParentColor = False end @@ -43,9 +44,9 @@ AnchorSideTop.Control = HelpCtxBevel AnchorSideTop.Side = asrBottom Left = 8 - Height = 16 - Top = 296 - Width = 70 + Height = 15 + Top = 294 + Width = 69 Caption = 'Help Context' ParentColor = False end @@ -53,9 +54,9 @@ AnchorSideTop.Control = HelpContextLabel AnchorSideTop.Side = asrCenter Left = 103 - Height = 16 - Top = 296 - Width = 77 + Height = 15 + Top = 294 + Width = 76 Caption = 'Help KeyWord' ParentColor = False end @@ -63,9 +64,9 @@ AnchorSideTop.Control = XSpinEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 16 - Top = 261 - Width = 8 + Height = 15 + Top = 260 + Width = 7 Caption = 'X' ParentColor = False end @@ -74,10 +75,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = YSpinEdit AnchorSideTop.Side = asrCenter - Left = 92 - Height = 16 - Top = 261 - Width = 8 + Left = 91 + Height = 15 + Top = 260 + Width = 7 BorderSpacing.Left = 8 Caption = 'Y' ParentColor = False @@ -86,34 +87,34 @@ AnchorSideTop.Control = HelpContextSpinEdit AnchorSideTop.Side = asrBottom Left = 8 - Height = 16 - Top = 344 - Width = 79 + Height = 15 + Top = 341 + Width = 78 BorderSpacing.Top = 6 Caption = 'Help FileName' ParentColor = False end object PromptLabel: TLabel Left = 16 - Height = 16 + Height = 15 Top = 425 - Width = 69 + Width = 68 Caption = 'PromptLabel' ParentColor = False end object ValueLabel: TLabel Left = 16 - Height = 16 + Height = 15 Top = 478 - Width = 57 + Width = 56 Caption = 'Value (var)' ParentColor = False end object DefaultValue: TLabel Left = 138 - Height = 16 + Height = 15 Top = 478 - Width = 39 + Width = 38 Caption = 'Default' ParentColor = False end @@ -122,7 +123,7 @@ AnchorSideTop.Side = asrBottom Left = 5 Height = 9 - Top = 243 + Top = 241 Width = 269 BorderSpacing.Top = 6 Shape = bsTopLine @@ -139,13 +140,13 @@ AnchorSideTop.Side = asrBottom Left = 8 Height = 9 - Top = 287 + Top = 285 Width = 266 Shape = bsTopLine end object KindMessageLabel: TLabel Left = 6 - Height = 16 + Height = 15 Top = 6 Width = 572 Align = alTop @@ -160,7 +161,7 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 23 - Top = 89 + Top = 88 Width = 136 BorderSpacing.Top = 3 TabOrder = 0 @@ -171,7 +172,7 @@ AnchorSideTop.Side = asrBottom Left = 154 Height = 23 - Top = 89 + Top = 88 Width = 120 BorderSpacing.Top = 3 ItemHeight = 15 @@ -192,7 +193,7 @@ AnchorSideTop.Side = asrBottom Left = 8 Height = 23 - Top = 315 + Top = 312 Width = 61 BorderSpacing.Top = 3 MaxValue = 9999 @@ -203,7 +204,7 @@ AnchorSideTop.Side = asrBottom Left = 103 Height = 23 - Top = 315 + Top = 312 Width = 171 BorderSpacing.Top = 3 TabOrder = 3 @@ -214,9 +215,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = PositionBevel AnchorSideTop.Side = asrBottom - Left = 18 + Left = 17 Height = 23 - Top = 258 + Top = 256 Width = 66 BorderSpacing.Left = 4 BorderSpacing.Top = 6 @@ -228,9 +229,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = XSpinEdit AnchorSideTop.Side = asrCenter - Left = 104 + Left = 102 Height = 23 - Top = 258 + Top = 256 Width = 66 BorderSpacing.Left = 4 TabOrder = 5 @@ -240,7 +241,7 @@ AnchorSideTop.Side = asrBottom Left = 8 Height = 23 - Top = 363 + Top = 359 Width = 244 DialogOptions = [] FilterIndex = 0 @@ -256,7 +257,7 @@ AnchorSideTop.Side = asrBottom Left = 16 Height = 23 - Top = 444 + Top = 443 Width = 164 BorderSpacing.Top = 3 TabOrder = 7 @@ -267,7 +268,7 @@ AnchorSideTop.Side = asrCenter Left = 191 Height = 19 - Top = 446 + Top = 445 Width = 76 Caption = 'MaskInput' TabOrder = 8 @@ -277,7 +278,7 @@ AnchorSideTop.Side = asrBottom Left = 16 Height = 23 - Top = 497 + Top = 496 Width = 112 BorderSpacing.Top = 3 TabOrder = 9 @@ -288,7 +289,7 @@ AnchorSideTop.Side = asrBottom Left = 138 Height = 23 - Top = 497 + Top = 496 Width = 136 BorderSpacing.Top = 3 TabOrder = 10 @@ -300,7 +301,7 @@ Top = 264 Width = 285 Caption = 'SourceWrapperGroupBox' - ClientHeight = 238 + ClientHeight = 236 ClientWidth = 281 TabOrder = 12 object IfThenRadioButton: TRadioButton @@ -364,7 +365,7 @@ object SourceNotebook: TNotebook Left = 0 Height = 152 - Top = 86 + Top = 84 Width = 281 PageIndex = 0 Align = alBottom @@ -373,9 +374,9 @@ object PageIf: TPage object Label1: TLabel Left = 7 - Height = 16 + Height = 15 Top = 6 - Width = 61 + Width = 60 Caption = '"if" RESULT' ParentColor = False end @@ -384,7 +385,7 @@ AnchorSideTop.Side = asrBottom Left = 7 Height = 23 - Top = 25 + Top = 24 Width = 175 BorderSpacing.Top = 3 ItemHeight = 15 @@ -416,6 +417,8 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 3 + ClientHeight = 128 + ClientWidth = 238 Columns = 3 Items.Strings = ( 'mbOK' @@ -455,46 +458,32 @@ object KindMessageComboBox: TComboBox Left = 6 Height = 23 - Top = 26 + Top = 25 Width = 572 Align = alTop BorderSpacing.Left = 6 BorderSpacing.Top = 4 BorderSpacing.Right = 6 ItemHeight = 15 - ItemIndex = 0 Items.Strings = ( - 'MessageDlg[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx]' - 'MessageDlg[Caption, Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx]' - 'MessageDlg[Caption, Msg, DlgType, Buttons(TMsgDlgButtons), HelpKeyword]' - 'MessageDlgPos[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx, X, Y]' - 'MessageDlgPosHelp[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx, X, Y, HelpFileName]' - 'QuestionDlg[Caption, Msg, DlgType, Buttons(array of const), HelpCtx]' - 'QuestionDlg[Caption, Msg, DlgType, Buttons(array of const), HelpKeyword]' - 'ShowMessage[Msg: string];' - 'ShowMessageFmt[Msg, Params(array of const)];' - 'ShowMessagePos[Msg, X, Y];' - 'InputQuery[Caption, Prompt, MaskInput(Boolean), Value(String)]' - 'InputQuery[Caption, Prompt, Value(String)]' - 'InputBox[Caption, Prompt, Default]' - 'PasswordBox[Caption, Prompt]' + '{Filled @runtime}' ) OnChange = MessageSetupExecute Style = csDropDownList TabOrder = 14 - Text = 'MessageDlg[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx]' end object MsgMemo: TMemo AnchorSideTop.Control = MsgLabel AnchorSideTop.Side = asrBottom Left = 6 Height = 94 - Top = 143 + Top = 141 Width = 268 BorderSpacing.Top = 3 Lines.Strings = ( 'MsgLabel' ) + OnChange = GetParamsFmtExecute OnEditingDone = GetParamsFmtExecute ScrollBars = ssAutoVertical TabOrder = 11 @@ -525,6 +514,8 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 2 + ClientHeight = 157 + ClientWidth = 281 Columns = 2 Items.Strings = ( 'mbYes' @@ -620,7 +611,6 @@ Width = 128 Action = AddConst Align = alLeft - NumGlyphs = 0 TabOrder = 0 end object BitBtn2: TBitBtn @@ -630,7 +620,6 @@ Width = 128 Action = DelConst Align = alRight - NumGlyphs = 0 TabOrder = 1 end end @@ -675,7 +664,6 @@ Default = True Kind = bkOK ModalResult = 1 - NumGlyphs = 0 TabOrder = 1 end object CancelButton: TBitBtn @@ -695,7 +683,6 @@ Constraints.MinWidth = 100 Kind = bkCancel ModalResult = 2 - NumGlyphs = 0 TabOrder = 2 end end diff -Nru lazarus-1.4.4+dfsg/components/messagecomposer/messagecomposer.pas lazarus-1.6+dfsg/components/messagecomposer/messagecomposer.pas --- lazarus-1.4.4+dfsg/components/messagecomposer/messagecomposer.pas 2013-01-13 21:49:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/messagecomposer/messagecomposer.pas 2015-09-05 15:45:19.000000000 +0000 @@ -15,7 +15,8 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Abstract: - This unit is a message dialog composer for Lazarus/FPC. It take in account all message dialogs platform indipendent. + This unit is a message dialog composer for Lazarus/FPC. + It takes into account all message dialogs platform indpendently. } unit MessageComposer; @@ -26,7 +27,7 @@ uses Classes, SysUtils, LResources, LCLType, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls, Spin, Grids, ActnList, ComCtrls, Buttons, EditBtn, + StdCtrls, ExtCtrls, Spin, Grids, ActnList, Buttons, EditBtn, IDECommands, MenuIntf, LazIDEIntf, SrcEditorIntf; type @@ -101,9 +102,9 @@ XSpinEdit: TSpinEdit; YSpinEdit: TSpinEdit; procedure AddConstExecute(Sender: TObject); - procedure ButtonsCheckGroupItemClick(Sender: TObject; Index: integer); + procedure ButtonsCheckGroupItemClick(Sender: TObject; {%H-}Index: integer); procedure ButtonsStringGridSelectEditor(Sender: TObject; aCol, - aRow: Integer; var Editor: TWinControl); + {%H-}aRow: Integer; var Editor: TWinControl); procedure DelConstExecute(Sender: TObject); procedure GetMessageForSourceExecute(Sender: TObject); procedure GetParamsFmtExecute(Sender: TObject); @@ -130,6 +131,47 @@ const cMessageComposer = 'Message Composer'; DoubleSpace = ' '; + idxPageIf = 0; + idxPageCase = 1; + idxPageString = 2; + +type + TComposedMsgKind = ( + cmkMsgDlgSimple, //MessageDlg[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx] + cmkMsgDlgCaption, //MessageDlg[Caption, Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx] + cmkMsgDlgCaptionHelpKeyWord, //MessageDlg[Caption, Msg, DlgType, Buttons(TMsgDlgButtons), HelpKeyword] + cmkMsgDlgPosSimple, //MessageDlgPos[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx, X, Y] + cmkMsgDlgPosHelpSimple, //MessageDlgPosHelp[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx, X, Y, HelpFileName] + cmkQDlgHelpCtx, //QuestionDlg[Caption, Msg, DlgType, Buttons(array of const), HelpCtx] + cmkQDlgHelpKeyword, //QuestionDlg[Caption, Msg, DlgType, Buttons(array of const), HelpKeyword] + cmkShowMsg, //ShowMessage[Msg: string]; + cmkShowMsgFmt, //ShowMessageFmt[Msg, Params(array of const)]; + cmkShowMsgPos, //ShowMessagePos[Msg, X, Y]; + cmkInpQMask, //InputQuery[Caption, Prompt, MaskInput(Boolean), Value(String)] + cmkInpQSimple, //InputQuery[Caption, Prompt, Value(String)] + cmkInpBox, //InputBox[Caption, Prompt, Default] + cmkPasswBox //PasswordBox[Caption, Prompt] + ); + + const ComposedMsgStrings: array[TComposedMsgKind] of string = ( + 'MessageDlg[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx]', + 'MessageDlg[Caption, Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx]', + 'MessageDlg[Caption, Msg, DlgType, Buttons(TMsgDlgButtons), HelpKeyword]', + 'MessageDlgPos[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx, X, Y]', + 'MessageDlgPosHelp[Msg, DlgType, Buttons(TMsgDlgButtons), HelpCtx, X, Y, HelpFileName]', + 'QuestionDlg[Caption, Msg, DlgType, Buttons(array of const), HelpCtx]', + 'QuestionDlg[Caption, Msg, DlgType, Buttons(array of const), HelpKeyword]', + 'ShowMessage[Msg: string];', + 'ShowMessageFmt[Msg, Params(array of const)];', + 'ShowMessagePos[Msg, X, Y];', + 'InputQuery[Caption, Prompt, MaskInput(Boolean), Value(String)]', + 'InputQuery[Caption, Prompt, Value(String)]', + 'InputBox[Caption, Prompt, Default]', + 'PasswordBox[Caption, Prompt]' + ); + + + resourcestring SMessageComposerMenuCaption = 'Message Composer ...'; @@ -224,10 +266,13 @@ procedure TFormMessagesComposer.ButtonsStringGridSelectEditor(Sender: TObject; aCol, aRow: Integer; var Editor: TWinControl); +var + ComposedMsgKind: TComposedMsgKind; begin if aCol<>1 then exit; - case KindMessageComboBox.ItemIndex of - 5, 6: begin + ComposedMsgKind := TComposedMsgKind(KindMessageComboBox.ItemIndex); + case ComposedMsgKind of + cmkQDlgHelpCtx, cmkQDlgHelpKeyword: begin Editor := TStringGrid(Sender).EditorByStyle(cbsPickList); TPickListCellEditor(Editor).Style := csDropDownList; TPickListCellEditor(Editor).Clear; @@ -243,7 +288,7 @@ TPickListCellEditor(Editor).Items.Add(ModalResultStr[mrNoToAll]); TPickListCellEditor(Editor).Items.Add(ModalResultStr[mrYesToAll]); end; - 8: begin + cmkShowMsgFmt: begin Editor := TStringGrid(Sender).EditorByStyle(cbsAuto); //D Decimal format. Precision digits in it //E Scientific format. Args is a Floating point value. Precision is used to specify the total number of decimals (exponent is3 digits) @@ -274,7 +319,11 @@ i: integer; intParam: integer; floatParam: double; + ComposedMsgKind: TComposedMsgKind; +const + BoolS: Array[Boolean] of String = ('False','True'); begin + ComposedMsgKind := TComposedMsgKind(KindMessageComboBox.ItemIndex); Msg := QuotedStr(MsgMemo.Lines.Text); if Copy(Msg,Length(Msg)-Length(LineEnding),Length(LineEnding))=LineEnding then @@ -314,7 +363,7 @@ if ButtonsCheckGroup.Checked[11] then MsgButtons := MsgButtons+' mbClose,'; end else begin //maybe QuestionDlg() or ShowMessageFmt(); - if KindMessageComboBox.ItemIndex=8 then begin //ShowMessageFmt(); + if ComposedMsgKind=cmkShowMsgFmt then begin //ShowMessageFmt(); for i := 1 to ButtonsStringGrid.RowCount-1 do begin //'D', 'E', 'F', 'G', 'M', 'N', 'P', 'S', 'U', 'X' format strParam := #32; @@ -371,34 +420,34 @@ Prompt := QuotedStr(PromptEdit.Text); MsgDefault := QuotedStr(DefaultEdit.Text); Value := ValueEdit.Text;//user must knows Value var in his source - case KindMessageComboBox.ItemIndex of - 0: srcMessage := 'MessageDlg('+Msg+', '+DlgType+', '+MsgButtons+','+HelpCtx+')'; - 1: srcMessage := 'MessageDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ + case ComposedMsgKind of + cmkMsgDlgSimple: srcMessage := 'MessageDlg('+Msg+', '+DlgType+', '+MsgButtons+','+HelpCtx+')'; + cmkMsgDlgCaption: srcMessage := 'MessageDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ MsgButtons+', '+HelpCtx+')'; - 2: srcMessage := 'MessageDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ + cmkMsgDlgCaptionHelpKeyWord: srcMessage := 'MessageDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ MsgButtons+', '+MsgHelpKeyword+')'; - 3: srcMessage := 'MessageDlgPos('+Msg+', '+DlgType+', '+MsgButtons+', '+ + cmkMsgDlgPosSimple: srcMessage := 'MessageDlgPos('+Msg+', '+DlgType+', '+MsgButtons+', '+ HelpCtx+', '+X+', '+Y+')'; - 4: srcMessage := 'MessageDlgPosHelp('+Msg+', '+DlgType+', '+MsgButtons+', '+ + cmkMsgDlgPosHelpSimple: srcMessage := 'MessageDlgPosHelp('+Msg+', '+DlgType+', '+MsgButtons+', '+ HelpCtx+', '+X+', '+Y+', '+HelpFileName+')'; - 5: srcMessage := 'QuestionDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ + cmkQDlgHelpCtx: srcMessage := 'QuestionDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ MsgButtons+', '+HelpCtx+')'; - 6: srcMessage := 'QuestionDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ + cmkQDlgHelpKeyword: srcMessage := 'QuestionDlg('+MsgCaption+', '+Msg+', '+DlgType+', '+ MsgButtons+', '+MsgHelpKeyword+')'; - 7: srcMessage := 'ShowMessage('+Msg+')'; - 8: srcMessage := 'ShowMessageFmt('+Msg+', '+MsgButtons+')'; - 9: srcMessage := 'ShowMessagePos('+Msg+', '+X+', '+Y+')'; - 10: srcMessage := 'InputQuery('+MsgCaption+', '+Prompt+', '+ - LowerCase(BoolToStr(MaskInputCheckBox.Checked))+', '+Value+')'; - 11: srcMessage := 'InputQuery('+MsgCaption+', '+Prompt+', '+Value+')'; - 12: srcMessage := 'InputBox('+MsgCaption+', '+Prompt+', '+MsgDefault+')'; - 13: srcMessage := 'PasswordBox('+MsgCaption+', '+Prompt+')' + cmkShowMsg: srcMessage := 'ShowMessage('+Msg+')'; + cmkShowMsgFmt: srcMessage := 'ShowMessageFmt('+Msg+', '+MsgButtons+')'; + cmkShowMsgPos: srcMessage := 'ShowMessagePos('+Msg+', '+X+', '+Y+')'; + cmkInpQMask: srcMessage := 'InputQuery('+MsgCaption+', '+Prompt+', '+ + BoolS[MaskInputCheckBox.Checked]+', '+Value+')'; + cmkInpQSimple: srcMessage := 'InputQuery('+MsgCaption+', '+Prompt+', '+Value+')'; + cmkInpBox: srcMessage := 'InputBox('+MsgCaption+', '+Prompt+', '+MsgDefault+')'; + cmkPasswBox: srcMessage := 'PasswordBox('+MsgCaption+', '+Prompt+')' end; if SourceWrapperGroupBox.Enabled then begin //no showmessages if (IfThenRadioButton.Checked)or(IfThenElseRadioButton.Checked) then begin srcMessage := 'if '+srcMessage+' = '; - if IfResultComboBox.Enabled then + if SourceNoteBook.PageIndex <> idxPageString then srcMessage := srcMessage+IfResultComboBox.Text else srcMessage := srcMessage+QuotedStr(StringResultEdit.Text); @@ -450,8 +499,10 @@ ListParams: TStringList; indx: integer; chrtmp: Char; + ComposedMsgKind: TComposedMsgKind; begin - if KindMessageComboBox.ItemIndex<>8 then exit; + ComposedMsgKind := TComposedMsgKind(KindMessageComboBox.ItemIndex); + if ComposedMsgKind<>cmkShowMsgFmt then exit; ButtonsStringGrid.Cells[0, 0] := 'Params (array of const)'; ButtonsStringGrid.Cells[1, 0] := 'Values'; ButtonsStringGrid.FixedCols := 1; @@ -482,14 +533,21 @@ procedure TFormMessagesComposer.MessageSetupExecute(Sender: TObject); var indx: integer; ListResult: TStringList; + ComposedMsgKind: TComposedMsgKind; begin - if KindMessageComboBox.ItemIndex in [0,1,2,3,4] then + ComposedMsgKind := TComposedMsgKind(KindMessageComboBox.ItemIndex); + if ComposedMsgKind in [cmkMsgDlgSimple,cmkMsgDlgCaption,cmkMsgDlgCaptionHelpKeyWord, + cmkMsgDlgPosSimple,cmkMsgDlgPosHelpSimple] then ButtonsNotebook.PageIndex := 0 // ButtonsCheckGroup else ButtonsNotebook.PageIndex := 1; // ButtonsPanel //Msg - case KindMessageComboBox.ItemIndex of - 0,1,2,3,4,5,6,7,8,9: begin + case ComposedMsgKind of + cmkMsgDlgSimple,cmkMsgDlgCaption,cmkMsgDlgCaptionHelpKeyWord, + cmkMsgDlgPosSimple,cmkMsgDlgPosHelpSimple, + cmkQDlgHelpCtx,cmkQDlgHelpKeyword,cmkShowMsg, + cmkShowMsgFmt,cmkShowMsgPos: + begin MsgMemo.Color := clWindow; MsgMemo.Enabled := true; end; @@ -499,8 +557,15 @@ end; end; //Caption - case KindMessageComboBox.ItemIndex of - 1,2,5,6,10,11,12,13: begin + case ComposedMsgKind of + cmkMsgDlgCaption, + cmkMsgDlgCaptionHelpKeyWord, + cmkQDlgHelpCtx, + cmkQDlgHelpKeyword, + cmkInpQMask, + cmkInpQSimple, + cmkInpBox, + cmkPasswBox: begin CaptionEdit.Color := clWindow; CaptionEdit.Enabled := true; end; @@ -510,8 +575,14 @@ end; end; //DlgType; - case KindMessageComboBox.ItemIndex of - 0,1,2,3,4,5,6: begin + case ComposedMsgKind of + cmkMsgDlgSimple, + cmkMsgDlgCaption, + cmkMsgDlgCaptionHelpKeyWord, + cmkMsgDlgPosSimple, + cmkMsgDlgPosHelpSimple, + cmkQDlgHelpCtx, + cmkQDlgHelpKeyword: begin DlgTypeComboBox.Color := clWindow; DlgTypeComboBox.Enabled := true; end; @@ -521,8 +592,12 @@ end; end; //HelpContext - case KindMessageComboBox.ItemIndex of - 0,1,3,4,5: begin + case ComposedMsgKind of + cmkMsgDlgSimple, + cmkMsgDlgCaption, + cmkMsgDlgPosSimple, + cmkMsgDlgPosHelpSimple, + cmkQDlgHelpCtx: begin HelpContextSpinEdit.Color := clWindow; HelpContextSpinEdit.Enabled := true; end; @@ -532,8 +607,9 @@ end; end; //HelpKeyword - case KindMessageComboBox.ItemIndex of - 2,6: begin + case ComposedMsgKind of + cmkMsgDlgCaptionHelpKeyWord, + cmkQDlgHelpKeyword: begin HelpKeyWordEdit.Color := clWindow; HelpKeyWordEdit.Enabled := true; end; @@ -543,8 +619,10 @@ end; end; //Position X Y - case KindMessageComboBox.ItemIndex of - 3,4,9: begin + case ComposedMsgKind of + cmkMsgDlgPosSimple, + cmkMsgDlgPosHelpSimple, + cmkShowMsgPos: begin XSpinEdit.Color := clWindow; XSpinEdit.Enabled := true; YSpinEdit.Color := clWindow; @@ -558,8 +636,8 @@ end; end; //HelpFileName - case KindMessageComboBox.ItemIndex of - 4: begin + case ComposedMsgKind of + cmkMsgDlgPosHelpSimple: begin HelpFileNameEdit.Color := clWindow; HelpFileNameEdit.Enabled := true; end; @@ -569,8 +647,8 @@ end; end; //Params (array of const) - case KindMessageComboBox.ItemIndex of - 8: begin + case ComposedMsgKind of + cmkShowMsgFmt: begin GetParamsFmt.Execute; end; else begin @@ -581,8 +659,11 @@ end; end; //Prompt - case KindMessageComboBox.ItemIndex of - 10,11,12,13: begin + case ComposedMsgKind of + cmkInpQMask, + cmkInpQSimple, + cmkInpBox, + cmkPasswBox: begin PromptEdit.Color := clWindow; PromptEdit.Enabled := true; end; @@ -592,8 +673,8 @@ end; end; //MaskInput - case KindMessageComboBox.ItemIndex of - 10: begin + case ComposedMsgKind of + cmkInpQMask: begin MaskInputCheckBox.Enabled := true; end; else begin @@ -601,8 +682,9 @@ end; end; //Value - case KindMessageComboBox.ItemIndex of - 10,11: begin + case ComposedMsgKind of + cmkInpQMask, + cmkInpQSimple: begin ValueEdit.Color := clWindow; ValueEdit.Enabled := true; end; @@ -612,8 +694,8 @@ end; end; //Default - case KindMessageComboBox.ItemIndex of - 12: begin + case ComposedMsgKind of + cmkInpBox: begin DefaultEdit.Color := clWindow; DefaultEdit.Enabled := true; end; @@ -626,9 +708,14 @@ ///// Results and Source Wrapper for message ////// //InputBox(); PasswordBox(); - case KindMessageComboBox.ItemIndex of - 12,13: begin - SourceNotebook.PageIndex := 2; + case ComposedMsgKind of + cmkInpBox, + cmkPasswBox: begin + SourceNotebook.PageIndex := idxPageString; + if CaseOfEndRadioButton.Checked then IfThenRadioButton.Checked := True; + if CaseOfEndElseRadioButton.Checked then IfThenElseRadioButton.Checked := True; + CaseOfEndRadioButton.Enabled := False; + CaseOfEndElseRadioButton.Enabled := False; //StringResultEdit.Enabled := true; //StringResultEdit.Color := clWindow; //IfResultComboBox.Enabled := false; @@ -638,10 +725,12 @@ //CaseOfEndRadioButton.Enabled := false; end; else begin + CaseOfEndRadioButton.Enabled := True; + CaseOfEndElseRadioButton.Enabled := True; if IfThenRadioButton.Checked or IfThenElseRadioButton.Checked then - SourceNotebook.PageIndex := 0 + SourceNotebook.PageIndex := idxPageIf else - SourceNotebook.PageIndex := 1; + SourceNotebook.PageIndex := idxPageCase; //StringResultEdit.Enabled := false; //StringResultEdit.Color := clBtnFace; //IfResultComboBox.Enabled := true; @@ -653,15 +742,21 @@ end; //ShowMessage(); ShowMessageFmt(); ShowMessagePos(); - case KindMessageComboBox.ItemIndex of - 7,8,9: SourceWrapperGroupBox.Enabled := false; + case ComposedMsgKind of + cmkShowMsg, + cmkShowMsgFmt, + cmkShowMsgPos: SourceWrapperGroupBox.Enabled := false; else SourceWrapperGroupBox.Enabled := true; end; //MessageDlg() Result - case KindMessageComboBox.ItemIndex of - 0,1,2,3,4: begin + case ComposedMsgKind of + cmkMsgDlgSimple, + cmkMsgDlgCaption, + cmkMsgDlgCaptionHelpKeyWord, + cmkMsgDlgPosSimple, + cmkMsgDlgPosHelpSimple: begin ListResult := TStringList.Create; for indx := 0 to ButtonsCheckGroup.Items.Count-1 do if ButtonsCheckGroup.Checked[indx] then begin @@ -702,8 +797,9 @@ end; //QuestionDlg() Result - case KindMessageComboBox.ItemIndex of - 5,6: begin + case ComposedMsgKind of + cmkQDlgHelpCtx, + cmkQDlgHelpKeyword: begin ListResult := TStringList.Create; ListResult.Assign(ButtonsStringGrid.Cols[1]); ListResult.Delete(0); @@ -720,8 +816,9 @@ end; //InputQuery() Result - case KindMessageComboBox.ItemIndex of - 10,11: if CaseResultCheckGroup.Items[0]<>'false' then begin + case ComposedMsgKind of + cmkInpQMask, + cmkInpQSimple: if (CaseResultCheckGroup.Items.Count=0) or (CaseResultCheckGroup.Items[0]<>'false') then begin CaseResultCheckGroup.Items.Clear; CaseResultCheckGroup.Items.Add('false'); CaseResultCheckGroup.Items.Add('true'); @@ -731,6 +828,8 @@ end; end; ButtonsStringGrid.AutoAdjustColumns; + ButtonsPanel.Visible := not (ComposedMsgKind in [cmkShowMsg,cmkShowMsgPos, + cmkInpQMask,cmkInpQSimple,cmkInpBox,cmkPasswBox]); end; procedure TFormMessagesComposer.MessagesInitExecute(Sender: TObject); @@ -743,6 +842,9 @@ XSpinEdit.Width := 60; YSpinEdit.Width := 60; + KindMessageComboBox.Clear; + KindMessageCombobox.Items.AddStrings(ComposedMsgStrings); + KindMessageComboBox.ItemIndex := 0; Caption := SMessageComposerCaption; CaptionLabel.Caption := SDlgCaption; DlgTypeLabel.Caption := SDlgType; @@ -770,13 +872,15 @@ end; procedure TFormMessagesComposer.SetIfOrCaseExecute(Sender: TObject); +var + ComposedMsgKind: TComposedMsgKind; begin - if (KindMessageComboBox.ItemIndex = 12)or - (KindMessageComboBox.ItemIndex = 13) then exit; + ComposedMsgKind := TComposedMsgKind(KindMessageComboBox.ItemIndex); + if (ComposedMsgKind in [cmkInpBox, cmkPasswBox]) then exit; if IfThenRadioButton.Checked or IfThenElseRadioButton.Checked then - SourceNotebook.PageIndex := 0 + SourceNotebook.PageIndex := idxPageIf else - SourceNotebook.PageIndex := 1; + SourceNotebook.PageIndex := idxPageCase; end; procedure TFormMessagesComposer.TestExecute(Sender: TObject); @@ -786,6 +890,7 @@ MsgButtons: TMsgDlgButtons; HelpCtx: Longint; X, Y: integer; + ComposedMsgKind: TComposedMsgKind; begin Msg := MsgMemo.Lines.Text; DlgType := TMsgDlgType(DlgTypeComboBox.ItemIndex); @@ -824,23 +929,24 @@ Value := ValueEdit.Text; HelpFileName:=''; MsgHelpKeyword:=''; - case KindMessageComboBox.ItemIndex of - 0: MessageDlg(Msg, DlgType, MsgButtons, HelpCtx); - 1: MessageDlg(MsgCaption, Msg, DlgType, MsgButtons, HelpCtx); - 2: MessageDlg(MsgCaption, Msg, DlgType, MsgButtons, MsgHelpKeyword); - 3: MessageDlgPos(Msg, DlgType, MsgButtons, HelpCtx, X, Y); - 4: MessageDlgPosHelp(Msg, DlgType, MsgButtons, HelpCtx, X, Y, HelpFileName); - 5: QuestionDlg(MsgCaption, Msg+' ('+SNotImplementedYet+')', DlgType, [mrYes, 'Yes', mrNo, 'No', + ComposedMsgKind := TComposedMsgKind(KindMessageComboBox.ItemIndex); + case ComposedMsgKind of + cmkMsgDlgSimple: MessageDlg(Msg, DlgType, MsgButtons, HelpCtx); + cmkMsgDlgCaption: MessageDlg(MsgCaption, Msg, DlgType, MsgButtons, HelpCtx); + cmkMsgDlgCaptionHelpKeyWord: MessageDlg(MsgCaption, Msg, DlgType, MsgButtons, MsgHelpKeyword); + cmkMsgDlgPosSimple: MessageDlgPos(Msg, DlgType, MsgButtons, HelpCtx, X, Y); + cmkMsgDlgPosHelpSimple: MessageDlgPosHelp(Msg, DlgType, MsgButtons, HelpCtx, X, Y, HelpFileName); + cmkQDlgHelpCtx: QuestionDlg(MsgCaption, Msg+' ('+SNotImplementedYet+')', DlgType, [mrYes, 'Yes', mrNo, 'No', mrCancel, 'Cancel'], HelpCtx); - 6: QuestionDlg(MsgCaption, Msg+' ('+SNotImplementedYet+')', DlgType, [mrYes, 'Yes', mrNo, 'No', + cmkQDlgHelpKeyword: QuestionDlg(MsgCaption, Msg+' ('+SNotImplementedYet+')', DlgType, [mrYes, 'Yes', mrNo, 'No', mrCancel, 'Cancel'], HelpKeyword); - 7: ShowMessage(Msg); - 8: ShowMessageFmt(Msg+' ('+SNotImplementedYet+')', ['Yes','No','Cancel']); - 9: ShowMessagePos(Msg, X, Y); - 10: InputQuery(MsgCaption, Prompt, MaskInputCheckBox.Checked, Value); - 11: InputQuery(MsgCaption, Prompt, Value); - 12: InputBox(Caption, Prompt, MsgDefault); - 13: PasswordBox(MsgCaption, Prompt) + cmkShowMsg: ShowMessage(Msg); + cmkShowMsgFmt: ShowMessageFmt(Msg+' ('+SNotImplementedYet+')', ['Yes','No','Cancel']); + cmkShowMsgPos: ShowMessagePos(Msg, X, Y); + cmkInpQMask: InputQuery(MsgCaption, Prompt, MaskInputCheckBox.Checked, Value); + cmkInpQSimple: InputQuery(MsgCaption, Prompt, Value); + cmkInpBox: InputBox(Caption, Prompt, MsgDefault); + cmkPasswBox: PasswordBox(MsgCaption, Prompt) end; end; diff -Nru lazarus-1.4.4+dfsg/components/multithreadprocs/examples/parallelloop1.lpr lazarus-1.6+dfsg/components/multithreadprocs/examples/parallelloop1.lpr --- lazarus-1.4.4+dfsg/components/multithreadprocs/examples/parallelloop1.lpr 2012-08-09 17:02:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/multithreadprocs/examples/parallelloop1.lpr 2015-10-03 18:36:25.000000000 +0000 @@ -54,7 +54,7 @@ Results[Index]:=-1; i:=Index; while i<List.Count-1 do begin - if List[i]=Value then // hier wuerde die teure Vergleichsoperation stehen + if List[i]=Value then // imagine here an expensive compare function Results[Index]:=i; inc(i,BlockCount); end; @@ -72,7 +72,7 @@ BlockCount:=ProcThreadPool.MaxThreadCount; SetLength(Results,BlockCount); ProcThreadPool.DoParallel(@FindBestParallel,0,BlockCount-1,@Data); - // Ergebnisse zusammenfassen + // collect results Result:=-1; for Index:=0 to BlockCount-1 do if Results[Index]>=0 then @@ -87,7 +87,7 @@ Result:=-1; i:=0; while i<List.Count do begin - if List[i]=Value then // hier wuerde die teure Vergleichsoperation stehen + if List[i]=Value then // imagine here an expensive compare function Result:=i; inc(i); end; diff -Nru lazarus-1.4.4+dfsg/components/opengl/example/testopenglcontext1.lpi lazarus-1.6+dfsg/components/opengl/example/testopenglcontext1.lpi --- lazarus-1.4.4+dfsg/components/opengl/example/testopenglcontext1.lpi 2013-02-25 23:17:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/example/testopenglcontext1.lpi 2015-11-20 07:29:44.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -63,11 +63,5 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/opengl/glcarbonaglcontext.pas lazarus-1.6+dfsg/components/opengl/glcarbonaglcontext.pas --- lazarus-1.4.4+dfsg/components/opengl/glcarbonaglcontext.pas 2013-09-04 00:22:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/glcarbonaglcontext.pas 2015-08-16 13:44:25.000000000 +0000 @@ -100,17 +100,16 @@ begin Control:=TCarbonCustomControl(Handle); Info:=GetAGLControlInfo(Control.Widget); - debugln(['LOpenGLMakeCurrent AAA0']); + debugln(['LOpenGLMakeCurrent got ingo...']); if Info=nil then exit; AGLContext:=Info^.AGLContext; aglSetCurrentContext(AGLContext); - debugln(['LOpenGLMakeCurrent AAA1 ',dbgs(Handle)]); - debugln(['LOpenGLMakeCurrent AAA2']); + debugln(['LOpenGLMakeCurrent set current ',dbgs(Handle)]); Form:=GetParentForm(Info^.WinControl); - debugln(['LOpenGLMakeCurrent AAA3']); + debugln(['LOpenGLMakeCurrent got parent form: ',DbgSName(Form)]); Win:=TCarbonWindow(Form.Handle).Window; - debugln(['LOpenGLMakeCurrent ']); + debugln(['LOpenGLMakeCurrent set clipping ...']); //GetWindowPortBounds(Win,b); clipRgn:=NewRgn; SetRectRgn(clipRgn,10,10,100,100); @@ -190,7 +189,7 @@ C.Height := AWinControl.Height; // create a custom control Control := TCarbonCustomControl.Create(AWinControl, C); - //debugln(['LOpenGLCreateContext ',dbgsName(Control)]); + //debugln(['LOpenGLCreateContext ',dbgsName(AWinControl)]); // create the AGL context disp := GetMainDevice (); @@ -215,8 +214,8 @@ InstallControlEventHandler(Control.Widget, RegisterEventHandler(@CarbonGLControl_Resize), 1, @TempSpec, Control, nil); TempSpec:=MakeEventSpec(kEventClassControl, kEventControlOwningWindowChanged); - // The control might be embeded into a window, after the its creation - // the example of the situation is give at bug report #17244 + // The control might be embeded into a window after its creation. + // See example for this in bug report #17244 InstallControlEventHandler(Control.Widget, RegisterEventHandler(@CarbonGLControl_WindowChange), 1, @TempSpec, Control, nil); diff -Nru lazarus-1.4.4+dfsg/components/opengl/glcocoanscontext.pas lazarus-1.6+dfsg/components/opengl/glcocoanscontext.pas --- lazarus-1.4.4+dfsg/components/opengl/glcocoanscontext.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/glcocoanscontext.pas 2015-11-20 07:29:44.000000000 +0000 @@ -0,0 +1,488 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Mattias Gaertner + + ToDo: + use custom pixelformat + attributes: doublebufferd, version, ... + It should work with initWithFrame_pixelFormat, but this paints nothing + SwapBuffers - there is no function like aglSwapBuffers in CGL/NS + Mouse: + the TLCLCommonCallback mouse handlers check Owner.isEnabled, which + for a NSView always returns false. + SharedControl +} +unit GLCocoaNSContext; + +{$mode objfpc}{$H+} +{$ModeSwitch objectivec1} + +interface + +uses + Classes, SysUtils, types, CocoaWSCommon, CocoaPrivate, CocoaUtils, LCLType, + Controls, LazLoggerBase, WSLCLClasses, gl, MacOSAll, CocoaAll; + +procedure LOpenGLViewport(Left, Top, Width, Height: integer); +procedure LOpenGLSwapBuffers(Handle: HWND); +function LOpenGLMakeCurrent(Handle: HWND): boolean; +function LOpenGLReleaseContext(Handle: HWND): boolean; +procedure LOpenGLClip(Handle: HWND); +function LOpenGLCreateContext(AWinControl: TWinControl; + {%H-}WSPrivate: TWSPrivateClass; SharedControl: TWinControl; + DoubleBuffered: boolean; + MajorVersion, MinorVersion: Cardinal; + MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers: Cardinal; + const {%H-}AParams: TCreateParams): HWND; +procedure LOpenGLDestroyContextInfo(AWinControl: TWinControl); +function CreateOpenGLContextAttrList(DoubleBuffered: boolean; + MajorVersion, MinorVersion: Cardinal; + MultiSampling, AlphaBits, DepthBits, + StencilBits, AUXBuffers: cardinal): NSOpenGLPixelFormatAttributePtr; + +const + // missing constants in FPC 3.1.1 rev 31197 and below + NSOpenGLPFAOpenGLProfile = 99; //cr: name changed to match https://developer.apple.com/library/mac/documentation//Cocoa/Reference/ApplicationKit/Classes/NSOpenGLPixelFormat_Class/index.html + NSOpenGLProfileLegacy = $1000; + NSOpenGLProfileVersion3_2Core = $3200; + NSOpenGLProfileVersion4_1Core = $4100; //requires OSX SDK 10.10 or later, https://github.com/google/gxui/issues/98 + +type + TDummyNoWarnObjCNotUsed = objc.BOOL; + TDummyNoWarnObjCBaseNotUsed = objcbase.NSInteger; + + { TCocoaOpenGLView } + + TCocoaOpenGLView = objcclass(NSOpenGLView) + public + Owner: TWinControl; + //nsGL: NSOpenGLContext; + callback: TLCLCommonCallback; + function acceptsFirstResponder: Boolean; override; + function becomeFirstResponder: Boolean; override; + function resignFirstResponder: Boolean; override; + procedure drawRect(dirtyRect: NSRect); override; + procedure dealloc; override; + function lclGetCallback: ICommonCallback; override; + procedure lclClearCallback; override; + function lclIsHandle: Boolean; override; + function lclIsEnabled: Boolean; override; + // mouse + procedure mouseDown(event: NSEvent); override; + procedure mouseUp(event: NSEvent); override; + procedure rightMouseDown(event: NSEvent); override; + procedure rightMouseUp(event: NSEvent); override; + procedure otherMouseDown(event: NSEvent); override; + procedure otherMouseUp(event: NSEvent); override; + procedure mouseDragged(event: NSEvent); override; + procedure mouseEntered(event: NSEvent); override; + procedure mouseExited(event: NSEvent); override; + procedure mouseMoved(event: NSEvent); override; + procedure scrollWheel(event: NSEvent); override; + // key + procedure keyDown(event: NSEvent); override; + procedure keyUp(event: NSEvent); override; + procedure flagsChanged(event: NSEvent); override; + // other + procedure resetCursorRects; override; + end; + +function GetCGLContextObj(OpenGLControlHandle: HWND): CGLContextObj; +(*function CreateCGLContextAttrList(DoubleBuffered: boolean; + {$IFDEF UsesModernGL} + MajorVersion, MinorVersion: Cardinal; + {$ENDIF} + MultiSampling, AlphaBits, DepthBits, + StencilBits, AUXBuffers: cardinal): PInteger; +function IsCGLPixelFormatAvailable(Attribs: PInteger): boolean;*) + +implementation + +procedure LOpenGLViewport(Left, Top, Width, Height: integer); +begin + glViewport(Left,Top,Width,Height); +end; + +procedure LOpenGLSwapBuffers(Handle: HWND); +//var +// View: TCocoaOpenGLView; //TCocoaOpenGLView +begin + if Handle=0 then exit; + glFlush(); + // View:=TCocoaOpenGLView(Handle); + // View.nsGL.flushBuffer; +end; + +function LOpenGLMakeCurrent(Handle: HWND): boolean; +var + CGLContext: CGLContextObj; +begin + if Handle=0 then exit(false); + CGLContext:=GetCGLContextObj(Handle); + Result:=CGLSetCurrentContext(CGLContext)=kCGLNoError; +end; + +function LOpenGLReleaseContext(Handle: HWND): boolean; +begin + if Handle=0 then exit(false); + Result:=CGLSetCurrentContext(nil)=kCGLNoError; + //Result:=true; +end; + +procedure LOpenGLClip(Handle: HWND); +begin + if Handle=0 then exit; + // ToDo +end; + +function LOpenGLCreateContext(AWinControl: TWinControl; + WSPrivate: TWSPrivateClass; SharedControl: TWinControl; DoubleBuffered: boolean; + MajorVersion, MinorVersion: Cardinal; + MultiSampling, AlphaBits, DepthBits, StencilBits, + AUXBuffers: Cardinal; const AParams: TCreateParams): HWND; +var + View: TCocoaOpenGLView; + Attrs: NSOpenGLPixelFormatAttributePtr; + PixFmt: NSOpenGLPixelFormat; + p: NSView; + ns: NSRect; + aNSOpenGLContext: NSOpenGLContext; + CGLContext: CGLContextObj; +begin + Result:=0; + p := nil; + if (AParams.WndParent <> 0) then + p := CocoaUtils.GetNSObjectView(NSObject(AParams.WndParent)); + if Assigned(p) then + LCLToNSRect(types.Bounds(AParams.X, AParams.Y, AParams.Width, AParams.Height), + p.frame.size.height, ns) + else + ns := GetNSRect(AParams.X, AParams.Y, AParams.Width, AParams.Height); + Attrs:=CreateOpenGLContextAttrList(DoubleBuffered,MajorVersion,MinorVersion, MultiSampling,AlphaBits,DepthBits,StencilBits,AUXBuffers); + try + PixFmt:=NSOpenGLPixelFormat(NSOpenGLPixelFormat.alloc).initWithAttributes(Attrs); + aNSOpenGLContext:=NSOpenGLContext(NSOpenGLContext.alloc).initWithFormat_shareContext(PixFmt,nil); + if aNSOpenGLContext = nil then + debugln(['LOpenGLCreateContext Error']); + View := TCocoaOpenGLView(TCocoaOpenGLView.alloc).initWithFrame_pixelFormat(ns,PixFmt); + if not Assigned(View) then Exit; + finally + FreeMem(Attrs); + end; + View.setHidden(AParams.Style and WS_VISIBLE = 0); + if Assigned(p) then + p.addSubview(View); + SetViewDefaults(View); + View.Owner:=AWinControl; + //View.nsGL := aNSOpenGLContext; + View.callback:=TLCLCommonCallback.Create(View, AWinControl); + //View.setPixelFormat(PixFmt); + Result:=TLCLIntfHandle(View); +end; + +procedure LOpenGLDestroyContextInfo(AWinControl: TWinControl); +begin + // no special needed, simply release handle + if AWinControl=nil then + raise Exception.Create(''); +end; + +function CreateOpenGLContextAttrList(DoubleBuffered: boolean; MajorVersion, + MinorVersion: Cardinal; MultiSampling, AlphaBits, DepthBits, StencilBits, + AUXBuffers: cardinal): NSOpenGLPixelFormatAttributePtr; +var + p: integer; +procedure AddUInt32(i: NSOpenGLPixelFormatAttribute); + begin + if Result<>nil then + Result[p]:=i; + inc(p); + end; + + procedure CreateList; + begin + //see https://developer.apple.com/library/mac/documentation//Cocoa/Reference/ApplicationKit/Classes/NSOpenGLPixelFormat_Class/index.html + //AddUInt32(NSOpenGLPFAAccelerated); // <- comment out: we can run in software if hardware is not available + //AddUInt32(NSOpenGLPFAOpenGLProfile); //Versions beyond 'Legacy' appear to break CULL_FACE and DEPTH_BUFFER, legacy seems to be default, so comment out whole instruction + //if (MajorVersion>=4) and (MinorVersion>=1) + // AddUInt32(NSOpenGLProfileVersion4_1Core); + //else if (MajorVersion>=3) and (MinorVersion>=2) then + // AddUInt32(NSOpenGLProfileVersion3_2Core); + //else + //AddUInt32(NSOpenGLProfileLegacy); // NSOpenGLProfileLegacy is default and sufficient, later versions depend on SDK we are building against + AddUInt32(NSOpenGLPFAOpenGLProfile); + if (MajorVersion>=4) and (MinorVersion>=1) then + AddUInt32(NSOpenGLProfileVersion4_1Core) //OpenGL 4.1, GLSL 4.1 + else if (MajorVersion>=3) and (MinorVersion>=2) then + AddUInt32(NSOpenGLProfileVersion3_2Core) + else + AddUInt32(NSOpenGLProfileLegacy); //OpenGL 2.1, GLSL 1.2 + AddUInt32(NSOpenGLPFAColorSize); AddUInt32(24); + if DepthBits > 0 then begin + AddUInt32(NSOpenGLPFADepthSize); AddUInt32(32); + end; + if AlphaBits>0 then begin + AddUInt32(NSOpenGLPFAAlphaSize); AddUInt32(AlphaBits); + end; + AddUInt32(NSOpenGLPFAAccelerated); + if MultiSampling > 1 then begin + AddUInt32(NSOpenGLPFAMultisample); + AddUInt32(NSOpenGLPFASampleBuffers); AddUInt32(1); + AddUInt32(NSOpenGLPFASamples); AddUInt32(MultiSampling); + end; + if StencilBits>0 then + begin + AddUInt32(NSOpenGLPFAStencilSize); AddUInt32(StencilBits); + end; + if AUXBuffers>0 then + begin + AddUInt32(NSOpenGLPFAAuxBuffers); AddUInt32(AUXBuffers); + end; + //if DoubleBuffered then //requires fix for nsGL + // AddUInt32(NSOpenGLPFADoubleBuffer); //this doen't work with Lazarus + AddUInt32(NSOpenGLPFAMaximumPolicy); //allows future changes to make attributes more demanding, e.g. add multisampling + + + AddUInt32(NSOpenGLPFANoRecovery); //see apple web page: "not generally useful" but might help with multisample + AddUInt32(0); // end of list + end; + +begin + Result:=nil; + p:=0; + CreateList; + GetMem(Result,SizeOf(NSOpenGLPixelFormatAttribute)*(p+1)); + p:=0; + CreateList; +end; + +function GetCGLContextObj(OpenGLControlHandle: HWND): CGLContextObj; +var + View: NSOpenGLView; +begin + Result:=nil; + if OpenGLControlHandle=0 then exit; + View:=TCocoaOpenGLView(OpenGLControlHandle); + Result:=CGLContextObj(View.openGLContext.CGLContextObj); +end; + +(* +//these functions are commented out: this was an attempt to use CGL, porting NSOpenGLView instead was more successful +function CreateCGLContextAttrList(DoubleBuffered: boolean; MultiSampling, + AlphaBits, DepthBits, StencilBits, AUXBuffers: cardinal): PInteger; +var + p: integer; + + procedure Add(i: integer); + begin + if Result<>nil then + Result[p]:=i; + inc(p); + end; + + procedure CreateList; + begin + //Add(kCGLPFAWindow); deprecated since 10.9 + Add(kCGLPFAAccelerated); + if DoubleBuffered then + Add(kCGLPFADoubleBuffer); + //if (MajorVersion>=3) and (MinorVersion>=2) then + // Add(kCGLOGLPVersion); + Add(kCGLPFANoRecovery); + Add(kCGLPFAMaximumPolicy); + Add(kCGLPFASingleRenderer); + if AlphaBits>0 then + begin + Add(kCGLPFAAlphaSize); Add(AlphaBits); + end; + if DepthBits>0 then + begin + Add(kCGLPFADepthSize); Add(DepthBits); + end; + if StencilBits>0 then + begin + Add(kCGLPFAStencilSize); Add(StencilBits); + end; + if AUXBuffers>0 then + begin + //Add(kCGLPFAAuxBuffers); Add(AUXBuffers); ToDo + end; + if MultiSampling > 1 then + begin + Add(kCGLPFASampleBuffers); Add(1); + Add(kCGLPFASamples); Add(MultiSampling); + end; + + Add(0); // end of list + end; + +begin + Result:=nil; + p:=0; + CreateList; + GetMem(Result,SizeOf(integer)*p); + p:=0; + CreateList; +end; + +function IsCGLPixelFormatAvailable(Attribs: PInteger): boolean; +var + //display: CGDirectDisplayID; + aPixFormatObj: CGLPixelFormatObj; + aPixObjCountAttrList: GLint; +begin + //display := CGMainDisplayID(); + if CGLChoosePixelFormat(Attribs, @aPixFormatObj, @aPixObjCountAttrList)<>kCGLNoError + then + exit(false); + if aPixFormatObj=nil then + exit(false); + Result:=true; + // ToDo: free aPixFormatObj +end; *) + +{ TCocoaOpenGLView } + +function TCocoaOpenGLView.acceptsFirstResponder: Boolean; +begin + Result := True; +end; + +function TCocoaOpenGLView.becomeFirstResponder: Boolean; +begin + Result:=inherited becomeFirstResponder; + callback.BecomeFirstResponder; +end; + +function TCocoaOpenGLView.resignFirstResponder: Boolean; +begin + Result:=inherited resignFirstResponder; + callback.ResignFirstResponder; +end; + +procedure TCocoaOpenGLView.dealloc; +begin + inherited dealloc; +end; + +function TCocoaOpenGLView.lclGetCallback: ICommonCallback; +begin + Result := callback; +end; + +procedure TCocoaOpenGLView.lclClearCallback; +begin + callback := nil; +end; + +function TCocoaOpenGLView.lclIsHandle: Boolean; +begin + Result:=true; +end; + +function TCocoaOpenGLView.lclIsEnabled: Boolean; +begin + Result := Owner.Enabled; +end; + +procedure TCocoaOpenGLView.mouseDown(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited mouseDown(event); +end; + +procedure TCocoaOpenGLView.mouseUp(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited mouseUp(event); +end; + +procedure TCocoaOpenGLView.rightMouseDown(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited rightMouseDown(event); +end; + +procedure TCocoaOpenGLView.rightMouseUp(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited rightMouseUp(event); +end; + +procedure TCocoaOpenGLView.otherMouseDown(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited otherMouseDown(event); +end; + +procedure TCocoaOpenGLView.otherMouseUp(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited otherMouseUp(event); +end; + +procedure TCocoaOpenGLView.mouseDragged(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseMove(event) then + inherited mouseDragged(event); +end; + +procedure TCocoaOpenGLView.mouseEntered(event: NSEvent); +begin + inherited mouseEntered(event); +end; + +procedure TCocoaOpenGLView.mouseExited(event: NSEvent); +begin + inherited mouseExited(event); +end; + +procedure TCocoaOpenGLView.mouseMoved(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseMove(event) then + inherited mouseMoved(event); +end; + +procedure TCocoaOpenGLView.scrollWheel(event: NSEvent); +begin + if not Assigned(callback) or not callback.scrollWheel(event) then + inherited scrollWheel(event); +end; + +procedure TCocoaOpenGLView.keyDown(event: NSEvent); +begin + if not Assigned(callback) or not callback.KeyEvent(event) then + inherited keyDown(event); +end; + +procedure TCocoaOpenGLView.keyUp(event: NSEvent); +begin + if not Assigned(callback) or not callback.KeyEvent(event) then + inherited keyUp(event); +end; + +procedure TCocoaOpenGLView.flagsChanged(event: NSEvent); +begin + if not Assigned(callback) or not callback.KeyEvent(event) then + inherited flagsChanged(event); +end; + +procedure TCocoaOpenGLView.resetCursorRects; +begin + if not Assigned(callback) or not callback.resetCursorRects then + inherited resetCursorRects; +end; + +procedure TCocoaOpenGLView.drawRect(dirtyRect: NSRect); +begin + inherited drawRect(dirtyRect); + if CheckMainThread and Assigned(callback) then + callback.Draw(NSGraphicsContext.currentContext, bounds, dirtyRect); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/opengl/glgtkglxcontext.pas lazarus-1.6+dfsg/components/opengl/glgtkglxcontext.pas --- lazarus-1.4.4+dfsg/components/opengl/glgtkglxcontext.pas 2014-01-02 18:16:19.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/glgtkglxcontext.pas 2015-09-15 12:47:22.000000000 +0000 @@ -85,6 +85,7 @@ MajorVersion: Cardinal; MinorVersion: Cardinal; MultiSampling: Cardinal; + ContextFlags: Cardinal; end; function GTK_TYPE_GL_AREA: TGtkType; @@ -109,10 +110,10 @@ procedure LOpenGLViewport(Left, Top, Width, Height: integer); procedure LOpenGLSwapBuffers(Handle: HWND); function LOpenGLMakeCurrent(Handle: HWND): boolean; -function LOpenGLReleaseContext(Handle: HWND): boolean; +function LOpenGLReleaseContext({%H-}Handle: HWND): boolean; function LOpenGLCreateContext(AWinControl: TWinControl; WSPrivate: TWSPrivateClass; SharedControl: TWinControl; - DoubleBuffered, RGBA: boolean; + DoubleBuffered, RGBA, DebugContext: boolean; const RedBits, GreenBits, BlueBits, MajorVersion, MinorVersion, MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers: Cardinal; const AParams: TCreateParams): HWND; @@ -595,7 +596,7 @@ Result:=PGtkWidget(gl_area); end; -function CustomXErrorHandler(para1:PDisplay; para2:PXErrorEvent):cint;cdecl; +function CustomXErrorHandler({%H-}para1:PDisplay; para2:PXErrorEvent):cint;cdecl; begin if para2^.error_code=8 then begin raise Exception.Create('A BadMatch X error occured. Most likely the requested OpenGL version is invalid.'); @@ -623,7 +624,7 @@ GLXContext: TGLXContext; i: Integer; { Used with glXCreateContextAttribsARB to select 3.X and above context } - Context3X: array [0..4] of Integer; + Context3X: array [0..6] of Integer; begin Result:=nil; @@ -679,7 +680,9 @@ Context3X[1]:=Attribs.MajorVersion; Context3X[2]:=GLX_CONTEXT_MINOR_VERSION_ARB; Context3X[3]:=Attribs.MinorVersion; - Context3X[4]:=None; + Context3X[4]:=GLX_CONTEXT_FLAGS_ARB; + Context3X[5]:=Attribs.ContextFlags; + Context3X[6]:=None; if (ShareList<>nil) then begin GLXContext:=glXCreateContextAttribsARB(XDisplay, FBConfig, PrivateShareList^.glxcontext, true, @@ -846,7 +849,7 @@ function LOpenGLCreateContextCore(AWinControl: TWinControl; WSPrivate: TWSPrivateClass; SharedControl: TWinControl; - DoubleBuffered, RGBA: boolean; + DoubleBuffered, RGBA, DebugContext: boolean; const RedBits, GreenBits, BlueBits, MajorVersion, MinorVersion, MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers: Cardinal; const AParams: TCreateParams): HWND; @@ -863,6 +866,12 @@ BlueBits,AlphaBits,DepthBits,StencilBits,AUXBuffers); Attribs.MajorVersion:=MajorVersion; Attribs.MinorVersion:=MinorVersion; + + // fill in context flags + Attribs.ContextFlags:=0; + if DebugContext then + Attribs.ContextFlags:=Attribs.ContextFlags or GLX_CONTEXT_DEBUG_BIT_ARB; + if MultiSampling>1 then begin Attribs.MultiSampling:=MultiSampling; end else begin @@ -893,7 +902,7 @@ function LOpenGLCreateContext(AWinControl: TWinControl; WSPrivate: TWSPrivateClass; SharedControl: TWinControl; - DoubleBuffered, RGBA: boolean; + DoubleBuffered, RGBA, DebugContext: boolean; const RedBits, GreenBits, BlueBits, MajorVersion, MinorVersion, MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers: Cardinal; const AParams: TCreateParams): HWND; @@ -909,7 +918,7 @@ {$ENDIF} try Result := LOpenGLCreateContextCore(AWinControl, WSPrivate, SharedControl, - DoubleBuffered, RGBA, RedBits, GreenBits, BlueBits, MajorVersion, + DoubleBuffered, RGBA, DebugContext, RedBits, GreenBits, BlueBits, MajorVersion, MinorVersion, MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers, AParams); except @@ -918,14 +927,14 @@ {$ENDIF} { retry without MultiSampling } Result := LOpenGLCreateContextCore(AWinControl, WSPrivate, SharedControl, - DoubleBuffered, RGBA, RedBits, GreenBits, BlueBits, MajorVersion, + DoubleBuffered, RGBA, DebugContext, RedBits, GreenBits, BlueBits, MajorVersion, MinorVersion, 1, AlphaBits, DepthBits, StencilBits, AUXBuffers, AParams); end; end else begin { no multi-sampling requested (or GLX_ARB_multisample not available), just pass to LOpenGLCreateContextCore } Result := LOpenGLCreateContextCore(AWinControl, WSPrivate, SharedControl, - DoubleBuffered, RGBA, RedBits, GreenBits, BlueBits, MajorVersion, + DoubleBuffered, RGBA, DebugContext, RedBits, GreenBits, BlueBits, MajorVersion, MinorVersion, MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers, AParams); end; diff -Nru lazarus-1.4.4+dfsg/components/opengl/glwin32wglcontext.pas lazarus-1.6+dfsg/components/opengl/glwin32wglcontext.pas --- lazarus-1.4.4+dfsg/components/opengl/glwin32wglcontext.pas 2013-09-04 00:22:36.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/glwin32wglcontext.pas 2015-09-27 14:11:28.000000000 +0000 @@ -23,7 +23,7 @@ function LOpenGLReleaseContext(Handle: HWND): boolean; function LOpenGLCreateContext(AWinControl: TWinControl; WSPrivate: TWSPrivateClass; SharedControl: TWinControl; - DoubleBuffered, RGBA: boolean; + DoubleBuffered, RGBA, DebugContext: boolean; const RedBits, GreenBits, BlueBits, MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers: Cardinal; const AParams: TCreateParams): HWND; @@ -137,6 +137,9 @@ WGL_DEPTH_BUFFER_BIT_ARB = $00000004; WGL_STENCIL_BUFFER_BIT_ARB = $00000008; + WGL_CONTEXT_FLAGS_ARB = $2094; + WGL_CONTEXT_DEBUG_BIT_ARB = $0001; + const opengl32 = 'OpenGL32.dll'; glu32 = 'GLU32.dll'; @@ -183,6 +186,7 @@ // ARB wgl extensions + wglCreateContextAttribsARB : function (DC: HDC; hShareContext:HGLRC; attribList:PInteger ):HGLRC;stdcall; wglGetExtensionsStringARB: function(DC: HDC): PChar; stdcall; wglGetPixelFormatAttribivARB: function(DC: HDC; iPixelFormat, iLayerPlane: Integer; nAttributes: TGLenum; const piAttributes: PGLint; piValues : PGLint) : BOOL; stdcall; @@ -406,7 +410,7 @@ function LOpenGLCreateContext(AWinControl: TWinControl; WSPrivate: TWSPrivateClass; SharedControl: TWinControl; - DoubleBuffered, RGBA: boolean; + DoubleBuffered, RGBA, DebugContext: boolean; const RedBits, GreenBits, BlueBits, MultiSampling, AlphaBits, DepthBits, StencilBits, AUXBuffers: Cardinal; const AParams: TCreateParams): HWND; @@ -419,6 +423,8 @@ VisualAttrList: PInteger; VisualAttrFloat: array [0..1] of Single; MsInitSuccess: WINBOOL; + FailReason : string; + attribList : array [0..2] of Integer; begin InitWGL; //InitOpenGLContextGLWindowClass; @@ -497,9 +503,28 @@ end; // create WGL context - Info^.WGLContext:=wglCreateContext(Info^.DC); + Info^.WGLContext:=0; + if not DebugContext then + begin + Info^.WGLContext:=wglCreateContext(Info^.DC); + FailReason:='wglCreateContext failed'; + end + else if wglCreateContextAttribsARB = nil then + begin + FailReason:='wglCreateContextAttribsARB not supported'; + end + else + begin + // try to create debug context + attribList[0]:=WGL_CONTEXT_FLAGS_ARB; + attribList[1]:=WGL_CONTEXT_DEBUG_BIT_ARB; + attribList[2]:=0; + Info^.WGLContext:=wglCreateContextAttribsARB(Info^.DC, 0, @attribList); + FailReason:='wglCreateContextAttribsARB failed'; + end; + if Info^.WGLContext=0 then - raise Exception.Create('LOpenGLCreateContext wglCreateContext failed'); + raise Exception.CreateFmt('LOpenGLCreateContext: %s', [FailReason]); // share context objects if Assigned(SharedControl) then begin @@ -546,6 +571,7 @@ LGlMsCreateTemporaryWindow; // ARB wgl extensions + Pointer(wglCreateContextAttribsARB) := GLGetProcAddress('wglCreateContextAttribsARB'); Pointer(wglGetExtensionsStringARB) := GLGetProcAddress('wglGetExtensionsStringARB'); Pointer(wglGetPixelFormatAttribivARB) := GLGetProcAddress('wglGetPixelFormatAttribivARB'); Pointer(wglGetPixelFormatAttribfvARB) := GLGetProcAddress('wglGetPixelFormatAttribfvARB'); diff -Nru lazarus-1.4.4+dfsg/components/opengl/lazopenglcontext.lpk lazarus-1.6+dfsg/components/opengl/lazopenglcontext.lpk --- lazarus-1.4.4+dfsg/components/opengl/lazopenglcontext.lpk 2013-02-25 23:17:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/lazopenglcontext.lpk 2015-08-16 20:42:05.000000000 +0000 @@ -1,7 +1,8 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <Package Version="4"> <Name Value="LazOpenGLContext"/> + <Type Value="RunAndDesignTime"/> <AddToProjectUsesSection Value="True"/> <Author Value="Mattias Gaertner"/> <CompilerOptions> @@ -10,7 +11,12 @@ <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/> </SearchPaths> <Conditionals Value="if LazOpenGLContext_VerboseMultiSampling='1' then - CustomOptions+='-dVerboseMultiSampling';"/> + CustomOptions+='-dVerboseMultiSampling'; + +if LCLWidgetType='cocoa' then begin + UsageLinkerOptions := ' -framework OpenGL' + +' ''-dylib_file'' ''/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib'''; +end;"/> <BuildMacros> <Count Value="1"/> <Item1> @@ -19,15 +25,13 @@ <Item1 Value="1"/> <Item2 Value="0"/> </Values> + <ValueDescriptions Count="2"/> </Item1> </BuildMacros> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Description Value="Simple cross-platform OpenGL viewer control"/> <Version Release="1"/> - <Files Count="5"> + <Files Count="6"> <Item1> <Filename Value="openglcontext.pas"/> <HasRegisterProc Value="True"/> @@ -53,8 +57,12 @@ <AddToUsesPkgSection Value="False"/> <UnitName Value="glqtcontext"/> </Item5> + <Item6> + <Filename Value="glcocoanscontext.pas"/> + <AddToUsesPkgSection Value="False"/> + <UnitName Value="GLCocoaNSContext"/> + </Item6> </Files> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="2"> <Item1> <PackageName Value="FCL"/> diff -Nru lazarus-1.4.4+dfsg/components/opengl/lazopenglcontext.pas lazarus-1.6+dfsg/components/opengl/lazopenglcontext.pas --- lazarus-1.4.4+dfsg/components/opengl/lazopenglcontext.pas 2010-07-14 15:34:12.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/lazopenglcontext.pas 2015-08-16 20:42:05.000000000 +0000 @@ -2,7 +2,7 @@ This source is only used to compile and install the package. } -unit LazOpenGLContext; +unit LazOpenGLContext; interface @@ -11,11 +11,11 @@ implementation -procedure Register; +procedure Register; begin - RegisterUnit('OpenGLContext', @OpenGLContext.Register); -end; + RegisterUnit('OpenGLContext', @OpenGLContext.Register); +end; initialization - RegisterPackage('LazOpenGLContext', @Register); + RegisterPackage('LazOpenGLContext', @Register); end. diff -Nru lazarus-1.4.4+dfsg/components/opengl/openglcontext.pas lazarus-1.6+dfsg/components/opengl/openglcontext.pas --- lazarus-1.4.4+dfsg/components/opengl/openglcontext.pas 2014-11-21 12:07:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/opengl/openglcontext.pas 2015-09-27 14:11:28.000000000 +0000 @@ -27,26 +27,43 @@ {$IFDEF LCLGTK} {$IFDEF Linux} {$DEFINE UseGtkGLX} + {$DEFINE HasRGBA} + {$DEFINE HasRGBBits} {$DEFINE OpenGLTargetDefined} {$ENDIF} {$ENDIF} {$IFDEF LCLGTK2} {$IFDEF Linux} {$DEFINE UseGtk2GLX} + {$DEFINE UsesModernGL} + {$DEFINE HasRGBA} + {$DEFINE HasRGBBits} + {$DEFINE HasDebugContext} {$DEFINE OpenGLTargetDefined} {$ENDIF} {$ENDIF} {$IFDEF LCLCarbon} {$DEFINE UseCarbonAGL} + {$DEFINE HasRGBA} + {$DEFINE HasRGBBits} + {$DEFINE OpenGLTargetDefined} +{$ENDIF} +{$IFDEF LCLCocoa} + {$DEFINE UseCocoaNS} + {$DEFINE UsesModernGL} {$DEFINE OpenGLTargetDefined} {$ENDIF} {$IFDEF LCLWin32} {$DEFINE UseWin32WGL} + {$DEFINE HasRGBA} + {$DEFINE HasRGBBits} + {$DEFINE HasDebugContext} {$DEFINE OpenGLTargetDefined} {$ENDIF} {$IFDEF LCLQT} {$DEFINE UseQTGLX} {$DEFINE UsesModernGL} + {$DEFINE HasRGBA} {$DEFINE HasRGBBits} {$DEFINE OpenGLTargetDefined} {$ENDIF} @@ -61,20 +78,18 @@ Graphics, LMessages, WSLCLClasses, WSControls, {$IFDEF UseGtkGLX} GLGtkGlxContext; - {$DEFINE HasRGBBits} {$ENDIF} {$IFDEF UseGtk2GLX} GLGtkGlxContext; - {$DEFINE UsesModernGL} - {$DEFINE HasRGBBits} {$ENDIF} {$IFDEF UseCarbonAGL} GLCarbonAGLContext; - {$DEFINE HasRGBBits} +{$ENDIF} +{$IFDEF UseCocoaNS} + GLCocoaNSContext; {$ENDIF} {$IFDEF UseWin32WGL} GLWin32WGLContext; - {$DEFINE HasRGBBits} {$ENDIF} {$IFDEF UseQTGLX} GLQTContext; @@ -105,6 +120,7 @@ private FAutoResizeViewport: boolean; FCanvas: TCanvas; // only valid at designtime + FDebugContext: boolean; FDoubleBuffered: boolean; FFrameDiffTime: integer; FOnMakeCurrent: TOpenGlCtrlMakeCurrentEvent; @@ -122,6 +138,7 @@ FSharingOpenGlControls: TList; function GetSharingControls(Index: integer): TCustomOpenGLControl; procedure SetAutoResizeViewport(const AValue: boolean); + procedure SetDebugContext(AValue: boolean); procedure SetDoubleBuffered(const AValue: boolean); procedure SetOpenGLMajorVersion(AValue: Cardinal); procedure SetOpenGLMinorVersion(AValue: Cardinal); @@ -166,6 +183,7 @@ property AutoResizeViewport: boolean read FAutoResizeViewport write SetAutoResizeViewport default false; property DoubleBuffered: boolean read FDoubleBuffered write SetDoubleBuffered default true; + property DebugContext: boolean read FDebugContext write SetDebugContext default false; // create context with debugging enabled. Requires OpenGLMajorVersion! property RGBA: boolean read FRGBA write SetRGBA default true; {$IFDEF HasRGBBits} property RedBits: Cardinal read FRedBits write SetRedBits default 8; @@ -287,6 +305,13 @@ LOpenGLViewport(0,0,Width,Height); end; +procedure TCustomOpenGLControl.SetDebugContext(AValue: boolean); +begin + if FDebugContext=AValue then Exit; + FDebugContext:=AValue; + OpenGLAttributesChanged; +end; + procedure TCustomOpenGLControl.SetDoubleBuffered(const AValue: boolean); begin if FDoubleBuffered=AValue then exit; @@ -615,7 +640,13 @@ AttrControl:=OpenGlControl; Result:=LOpenGLCreateContext(OpenGlControl,WSPrivate, OpenGlControl.SharedControl, - AttrControl.DoubleBuffered,AttrControl.RGBA, + AttrControl.DoubleBuffered, + {$IFDEF HasRGBA} + AttrControl.RGBA, + {$ENDIF} + {$IFDEF HasDebugContext} + AttrControl.DebugContext, + {$ENDIF} {$IFDEF HasRGBBits} AttrControl.RedBits, AttrControl.GreenBits, diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.fr.po lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.fr.po --- lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -0,0 +1,46 @@ +msgid "" +msgstr "" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-12-18 09:27+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.6\n" + +#: packagetabsstr.saddtoproject +msgid "Add To Project" +msgstr "Ajouter au projet" + +#: packagetabsstr.scloneto +msgid "Clone To" +msgstr "Cloner vers" + +#: packagetabsstr.scopyfilepathtoclipboard +msgid "Copy File Path To Clipboard" +msgstr "Copier le chemin du fichier dans le presse-papier" + +#: packagetabsstr.sfindinotherwindow +msgid "Find In Other Window" +msgstr "Chercher dans une autre fenêtre" + +#: packagetabsstr.smoveto +msgid "Move To" +msgstr "Déplacer dans" + +#: packagetabsstr.snewwindow +msgid "New Window" +msgstr "Nouvelle fenêtre" + +#: packagetabsstr.sopenpackage +msgid "Open package" +msgstr "Ouvrir un paquet" + +#: packagetabsstr.sother +msgid "Other" +msgstr "Autre " + diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.hu.po lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.hu.po --- lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.hu.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.hu.po 2015-12-21 23:18:06.000000000 +0000 @@ -0,0 +1,44 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Péter Gábor <ptrg@freemail.hu>\n" +"Language-Team: Magyar (Hungarian)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: packagetabsstr.saddtoproject +msgid "Add To Project" +msgstr "Hozzáadás a projekthez" + +#: packagetabsstr.scloneto +msgid "Clone To" +msgstr "Klónozás" + +#: packagetabsstr.scopyfilepathtoclipboard +msgid "Copy File Path To Clipboard" +msgstr "Fájl útvonalának másolása a vágólapra" + +#: packagetabsstr.sfindinotherwindow +msgid "Find In Other Window" +msgstr "Keresés másik ablakban" + +#: packagetabsstr.smoveto +msgid "Move To" +msgstr "Áthelyezés" + +#: packagetabsstr.snewwindow +msgid "New Window" +msgstr "Új ablak" + +#: packagetabsstr.sopenpackage +msgid "Open package" +msgstr "Csomag megnyitása" + +#: packagetabsstr.sother +msgid "Other" +msgstr "Egyéb" diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.po lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.po --- lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.po 2015-12-13 22:40:35.000000000 +0000 @@ -0,0 +1,35 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: packagetabsstr.saddtoproject +msgid "Add To Project" +msgstr "" + +#: packagetabsstr.scloneto +msgid "Clone To" +msgstr "" + +#: packagetabsstr.scopyfilepathtoclipboard +msgid "Copy File Path To Clipboard" +msgstr "" + +#: packagetabsstr.sfindinotherwindow +msgid "Find In Other Window" +msgstr "" + +#: packagetabsstr.smoveto +msgid "Move To" +msgstr "" + +#: packagetabsstr.snewwindow +msgid "New Window" +msgstr "" + +#: packagetabsstr.sopenpackage +msgid "Open package" +msgstr "" + +#: packagetabsstr.sother +msgid "Other" +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.ru.po lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.ru.po --- lazarus-1.4.4+dfsg/components/packagetabs/languages/packagetabsstr.ru.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/languages/packagetabsstr.ru.po 2015-12-13 22:40:35.000000000 +0000 @@ -0,0 +1,45 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" + +#: packagetabsstr.saddtoproject +msgid "Add To Project" +msgstr "Добавить к проекту" + +#: packagetabsstr.scloneto +msgid "Clone To" +msgstr "Клонировать в" + +#: packagetabsstr.scopyfilepathtoclipboard +msgid "Copy File Path To Clipboard" +msgstr "Копировать путь к файлу в буфер обмена" + +#: packagetabsstr.sfindinotherwindow +msgid "Find In Other Window" +msgstr "Найти в другом окне" + +#: packagetabsstr.smoveto +msgid "Move To" +msgstr "Переместить в" + +#: packagetabsstr.snewwindow +msgid "New Window" +msgstr "Новое окно" + +#: packagetabsstr.sopenpackage +msgid "Open package" +msgstr "Открыть пакет" + +#: packagetabsstr.sother +msgid "Other" +msgstr "Прочие" + diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/packagetabs_impl.pas lazarus-1.6+dfsg/components/packagetabs/packagetabs_impl.pas --- lazarus-1.4.4+dfsg/components/packagetabs/packagetabs_impl.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/packagetabs_impl.pas 2016-02-06 14:30:41.000000000 +0000 @@ -0,0 +1,1267 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Ondrej Pokorny + + Abstract: + Replacement of source editor tabs/pages with buttons sorted by package and name. +} +unit packagetabs_impl; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Types, Contnrs, Controls, SrcEditorIntf, StdCtrls, Buttons, + ComCtrls, Forms, LazFileUtils, PackageIntf, Graphics, Menus, LazIDEIntf, + ExtCtrls, IDEImagesIntf, Laz2_XMLCfg, IDECommands, LCLIntf, + IDEOptionsIntf, packagetabsstr, Clipbrd, LCLProc; + +type + TPackageTabButton = class(TSpeedButton) + public + Editor: TSourceEditorInterface; + IsOtherFile: Boolean; + protected + procedure CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); override; + public + constructor Create(aOwner: TComponent); override; + end; + + TGroupTabLabel = class(TLabel) + private + FLeftClickPopupBlock: QWord; + protected + procedure CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; + procedure MouseEnter; override; + procedure MouseLeave; override; + public + constructor Create(aOwner: TComponent); override; + end; + TGroupTabLabelClass = class of TGroupTabLabel; + + TPackageTabLabel = class(TGroupTabLabel) + public + Package: TIDEPackage; + end; + + TProjectTabLabel = class(TGroupTabLabel); + TOtherTabLabel = class(TGroupTabLabel); + + TPackageTabScrollBox = class(TScrollBox) + protected + procedure DoAlignControls; + public + constructor Create(AOwner: TComponent); override; + end; + + TPackageTabFlowPanel = class(TFlowPanel) + public + constructor Create(aOwner: TComponent); override; + end; + + TGroupType = (gtProject, gtPackage, gtOther); + TGroupItem = class + public + &Type: TGroupType; + Title: string; + Package: TIDEPackage; + GroupTabLabel: TGroupTabLabelClass; + Files: TStringList; + + constructor Create(AType: TGroupType; const ATitle: string; APackage: TIDEPackage); + destructor Destroy; override; + end; + + TGroupList = class(TObjectList) + private + function GetPackage(Index: Integer): TGroupItem; + public + function Find(AType: TGroupType; APackage: TIDEPackage; out Index: Integer): Boolean; + property Items[Index: Integer]: TGroupItem read GetPackage; + function Add(AItem: TGroupItem): Integer; + end; + + TMenuItemCommand = class(TMenuItem) + public + IDECommand: Word; + NeedsActiveEditor: Boolean; + end; + + TMenuItemWindow = class(TMenuItem) + public + WindowIndex: Integer; + end; + + TRecreateToolBarStamps = class + private + FCurProjectChangeStamp: Int64; + FPackagesChangeStamp: Int64; + FInternalChangeStamp: Int64; + FLastInternalChangeStamp: Int64; + FLastFiles: TStringList; + public + constructor Create; + destructor Destroy; override; + public + function Changed: Boolean; + function PanelChanged(AWindow: TSourceEditorWindowInterface): Boolean; + + procedure IncInternalStamp; + end; + + TPackageTabPanel = class(TComponent) + private + FTabPosition: TTabPosition; + FPanel: TWinControl; + FSplitter: TSplitter; + FWindow: TSourceEditorWindowInterface; + FNoteBook: TPageControl; + FRecreateToolBar: TRecreateToolBarStamps; + FSetActiveEditor: Boolean; + FAppIdleLocked: Boolean; + FTabLabelMenu: TPopupMenu; + FTabLabelMenuCloseAllGroup: TMenuItem; + FTabLabelCopyToClipboard: TMenuItem; + FTabLabelMenuPkgSep: TMenuItem; + FTabLabelMenuOpenPackage: TMenuItem; + FTabLabelMenuViewProjectSource: TMenuItem; + FTabButtonMenu: TPopupMenu; + FTabButtonMenuClose: TMenuItem; + FTabButtonMenuLock: TMenuItemCommand; + FTabButtonCopyToClipboard: TMenuItem; + FTabButtonMenuProjSep: TMenuItem; + FTabButtonMenuAddToProject: TMenuItem; + FTabButtonMenuMoveCloneSep: TMenuItem; + FTabButtonMenuMoveTo: TMenuItem; + FTabButtonMenuCloneTo: TMenuItem; + FTabButtonMenuFindIn: TMenuItem; + FTabButtonMenuMoveToNew: TMenuItemCommand; + FTabButtonMenuCloneToNew: TMenuItemCommand; + + procedure RecreatePanel; + procedure DoEditorPageUpdated(Sender: TObject); + procedure RecreateToolBar; + procedure SetActiveEditor; + procedure AppOnIdle(Sender: TObject; var {%H-}Done: Boolean); + function FindEditorInWindow(AEditor: TSourceEditorInterface): Integer; + + procedure EditorActivated; + procedure EditorCreated; + procedure EditorDestroyed; + + procedure LoadConfig(ACfg: TXMLConfig; APath: string); + procedure SaveConfig(ACfg: TXMLConfig; APath: string); + + procedure TabButtonMenuAddToProjectClick(Sender: TObject); + procedure MenuItemCommandClick(Sender: TObject); + procedure TabButtonMenuCloneToClick(Sender: TObject); + procedure TabButtonMenuCloseClick(Sender: TObject); + procedure TabButtonMenuMoveToClick(Sender: TObject); + procedure TabButtonMenuFindInClick(Sender: TObject); + procedure TabButtonCopyToClipboardClick(Sender: TObject); + procedure TabButtonMenuPopup(Sender: TObject); + procedure TabButtonMouseDown(Sender: TObject; Button: TMouseButton; + {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); + procedure TabLabelCloseAllGroupClick(Sender: TObject); + procedure TabLabelCopyToClipboardClick(Sender: TObject); + procedure TabLabelMenuOpenPackageClick(Sender: TObject); + procedure TabLabelMenuPopup(Sender: TObject); + procedure TabLabelMenuViewProjectSourceClick(Sender: TObject); + public + constructor Create(AParentWindow: TSourceEditorWindowInterface); reintroduce; + destructor Destroy; override; + end; + + TPackageTabPanels = class(TComponent) + private + FTabPanels: TObjectList; + FConfig: TXMLConfig; + function GetTabPanel(Index: Integer): TPackageTabPanel; + function GetTabPanelCount: Integer; + procedure EditorActivated(Sender: TObject); + procedure EditorCreated(Sender: TObject); + procedure EditorDestroyed(Sender: TObject); + procedure WindowCreated(Sender: TObject); + procedure WindowDestroyed(Sender: TObject); + public + property TabPanels[Index: Integer]: TPackageTabPanel read GetTabPanel; + property TabPanelCount: Integer read GetTabPanelCount; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + end; + + TSourceEditorWindowInterfaceHelper = class helper for TSourceEditorWindowInterface + public + function GetNotebook: TPageControl; + function FindSourceEditorWithPageIndex(APageIndex:integer; + ANoteBook: TPageControl): TSourceEditorInterface; + function FindPageWithEditor(ASourceEditor: TSourceEditorInterface; + ANoteBook: TPageControl):integer; + end; + +function CompareGroupItem(const AGroupItem: TGroupItem; AType: TGroupType; APackage: TIDEPackage): Integer; +function CompareGroupItem(const AGroupItem1, AGroupItem2: TGroupItem): Integer; + +procedure Register; + +implementation + +var + xPackageTabPanels: TPackageTabPanels = nil; + +function CompareGroupItem(const AGroupItem: TGroupItem; AType: TGroupType; + APackage: TIDEPackage): Integer; +begin + Result := Ord(AType)-Ord(AGroupItem.&Type); + if Result<>0 then + Exit; + if AType = gtPackage then + Result := ComparePointers(AGroupItem.Package, APackage); +end; + +function CompareGroupItem(const AGroupItem1, AGroupItem2: TGroupItem): Integer; +begin + Result := CompareGroupItem(AGroupItem1, AGroupItem2.&Type, AGroupItem2.Package); +end; + +procedure Register; +begin + xPackageTabPanels := TPackageTabPanels.Create(nil); +end; + +{ TGroupList } + +function TGroupList.Add(AItem: TGroupItem): Integer; +begin + if Find(AItem.&Type,AItem.Package, Result) then + raise Exception.Create('TGroupList.Add: the same item is already in the list.'); + Self.Insert(Result,AItem); +end; + +function TGroupList.GetPackage(Index: Integer): TGroupItem; +begin + Result := TGroupItem(inherited GetItem(Index)); +end; + +function TGroupList.Find(AType: TGroupType; APackage: TIDEPackage; out + Index: Integer): Boolean; +var + L, R, I, xCompareRes: Integer; +begin + Result := False; + L := 0; + R := Count-1; + while L<=R do + begin + I := L+(R-L) div 2; + xCompareRes := CompareGroupItem(Items[I], AType, APackage); + if (xCompareRes>0) then + L := I+1 + else begin + R := I-1; + if xCompareRes=0 then + begin + Result := True; + L := I; // forces end of while loop + end; + end; + end; + Index := L; +end; + +{ TSourceEditorWindowInterfaceHelper } + +function TSourceEditorWindowInterfaceHelper.FindPageWithEditor( + ASourceEditor: TSourceEditorInterface; ANoteBook: TPageControl): integer; +var + LParent: TWinControl; + LTabSheet: TWinControl; +begin + if (ASourceEditor.EditorControl.Parent is TTabSheet) then + begin + LParent := ASourceEditor.EditorControl.Parent.Parent; + LTabSheet := ASourceEditor.EditorControl.Parent; + while (LParent <> ANoteBook) and (LParent <> nil) do + begin + LTabSheet := LParent; + LParent := LParent.Parent; + end; + + if (LParent <> nil) and (LTabSheet is TTabSheet) then + Result:=TTabSheet(LTabSheet).PageIndex + else + Result:=-1; + end + else + Result:=-1; +end; + +function TSourceEditorWindowInterfaceHelper.FindSourceEditorWithPageIndex( + APageIndex: integer; ANoteBook: TPageControl): TSourceEditorInterface; + +var + I: integer; + xPage: TCustomPage; +begin + Result := nil; + if (APageIndex < 0) or (APageIndex >= ANoteBook.PageCount) then exit; + + xPage := ANoteBook.Page[APageIndex]; + + for I := 0 to Count-1 do + begin + Result := Items[I]; + + if xPage.IsParentOf(Result.EditorControl) then + Exit; + end; + + Result := nil; +end; + +function TSourceEditorWindowInterfaceHelper.GetNotebook: TPageControl; + function _Find(AParent: TWinControl): TPageControl; + var + I: Integer; + begin + for I := 0 to AParent.ControlCount-1 do + begin + if AParent.Controls[I] is TPageControl then + Exit(TPageControl(Controls[I])); + end; + + for I := 0 to AParent.ControlCount-1 do + if AParent.Controls[I] is TWinControl then + begin + Result := _Find(TWinControl(Controls[I])); + if Result <> nil then + Exit; + end; + + Result := nil; + end; +begin + Result := _Find(Self); +end; + +{ TRecreateToolBarStamps } + +constructor TRecreateToolBarStamps.Create; +begin + FLastFiles := TStringList.Create; +end; + +function TRecreateToolBarStamps.Changed: Boolean; +var + LProjectChangeStamp: Integer; +begin + if LazarusIDE.ActiveProject <> nil then + LProjectChangeStamp := LazarusIDE.ActiveProject.ChangeStamp + else + LProjectChangeStamp := Low(LProjectChangeStamp); + Result := not( + (FCurProjectChangeStamp = LProjectChangeStamp) + and (FPackagesChangeStamp = PackageGraphInterface.ChangeStamp) + and (FInternalChangeStamp = FLastInternalChangeStamp) + ); + + if not Result then Exit; + + FCurProjectChangeStamp := LProjectChangeStamp; + FPackagesChangeStamp := PackageGraphInterface.ChangeStamp; + FLastInternalChangeStamp := FInternalChangeStamp; +end; + +destructor TRecreateToolBarStamps.Destroy; +begin + FLastFiles.Free; + inherited Destroy; +end; + +procedure TRecreateToolBarStamps.IncInternalStamp; +begin + {$push}{$R-} // range check off + Inc(FInternalChangeStamp); + {$pop} +end; + +function TRecreateToolBarStamps.PanelChanged( + AWindow: TSourceEditorWindowInterface): Boolean; +var + I: Integer; +begin + if AWindow.Count <> FLastFiles.Count then + Exit(True); + + for I := 0 to AWindow.Count-1 do + if AWindow[I].FileName <> FLastFiles[I] then + Exit(True); + + Result := False; +end; + +{ TPackageTabFlowPanel } + +constructor TPackageTabFlowPanel.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + BevelInner := bvNone; + BevelOuter := bvNone; +end; + +{ TPackageTabScrollBox } + +constructor TPackageTabScrollBox.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + + BorderStyle := bsNone; + HorzScrollBar.Smooth := False; + VertScrollBar.Smooth := False; + HorzScrollBar.Tracking := True; + VertScrollBar.Tracking := True; + HorzScrollBar.Increment := TPackageTabButton.GetControlClassDefaultSize.cy; + VertScrollBar.Increment := TPackageTabButton.GetControlClassDefaultSize.cy; + HorzScrollBar.Visible := False; +end; + +procedure TPackageTabScrollBox.DoAlignControls; +var + xNextY, I: Integer; + xControl: TControl; + xClientRect: TRect; + xBS: TControlBorderSpacing; +begin + xClientRect := GetClientRect; + AdjustClientRect(xClientRect); + DisableAlign; + try + xNextY := 0; + for I := 0 to ControlCount-1 do + begin + xControl := Controls[I]; + + xControl.Anchors := [akLeft, akRight, akTop]; + xBS := xControl.BorderSpacing; + xControl.SetBounds( + xBS.Left+xBS.Around, xNextY+xBS.Top+xBS.Around, + xClientRect.Right-xClientRect.Left-xBS.Left-xBS.Right-xBS.Around*2, + xBS.ControlHeight); + Inc(xNextY, xControl.Height); + end; + finally + EnableAlign; + end; +end; + +{ TPackageTabButton } + +constructor TPackageTabButton.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + Transparent := True; + Flat := True; + AutoSize := True; + GroupIndex := 1; + AllowAllUp := False; +end; + +procedure TPackageTabButton.CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); +begin + inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, + WithThemeSpace); + + PreferredHeight := Height; // ignore PreferredHeight + PreferredWidth := PreferredWidth + 6; +end; + +{ TGroupTabLabel } + +constructor TGroupTabLabel.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + AutoSize := True; + Font.Style := Font.Style + [fsBold]; + Layout := tlCenter; + Alignment := taCenter; + Cursor := crHandPoint; +end; + +procedure TGroupTabLabel.CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); +begin + inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, + WithThemeSpace); + + PreferredHeight := Height; // ignore PreferredHeight + PreferredWidth := PreferredWidth + 8; +end; + +procedure TGroupTabLabel.MouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: Integer); +var + xPt: Types.TPoint; +begin + inherited MouseDown(Button, Shift, X, Y); + + if (Button = mbLeft) and (GetTickCount64 > FLeftClickPopupBlock) then + begin + xPt := ClientToScreen(Point(0, Height)); + PopupMenu.PopupComponent := Self; + PopupMenu.PopUp(xPt.X, xPt.Y); + FLeftClickPopupBlock := GetTickCount64 + 10; + end; +end; + +procedure TGroupTabLabel.MouseEnter; +begin + inherited MouseEnter; + + Font.Style := Font.Style + [fsUnderline]; +end; + +procedure TGroupTabLabel.MouseLeave; +begin + inherited MouseLeave; + + Font.Style := Font.Style - [fsUnderline]; +end; + +{ TGroupItem } + +constructor TGroupItem.Create(AType: TGroupType; const ATitle: string; + APackage: TIDEPackage); +begin + &Type := AType; + Title := ATitle; + Package := APackage; + Files := TStringList.Create; + Files.Sorted := True; + Files.Duplicates := dupAccept; +end; + +destructor TGroupItem.Destroy; +begin + Files.Free; + inherited Destroy; +end; + +{ TPackageTabPanel } + +constructor TPackageTabPanel.Create(AParentWindow: TSourceEditorWindowInterface + ); +begin + inherited Create(nil); + + FWindow := AParentWindow; + FNoteBook := FWindow.GetNotebook; + + FTabPosition := IDEEditorOptions.TabPosition; + FRecreateToolBar := TRecreateToolBarStamps.Create; + + FWindow.AddUpdateEditorPageCaptionHandler(@DoEditorPageUpdated); + + RecreatePanel; + + FTabLabelMenu := TPopupMenu.Create(Self); + FTabLabelMenu.Images := IDEImages.Images_16; + FTabLabelMenu.OnPopup := @TabLabelMenuPopup; + FTabLabelMenuCloseAllGroup := TMenuItem.Create(Self); + FTabLabelMenuCloseAllGroup.Caption := IDECommandList.FindIDECommand(ecCloseAll).LocalizedName; + FTabLabelMenuCloseAllGroup.OnClick := @TabLabelCloseAllGroupClick; + FTabLabelMenuCloseAllGroup.ImageIndex := IDEImages.LoadImage(16, 'menu_close_all'); + FTabLabelMenu.Items.Add(FTabLabelMenuCloseAllGroup); + FTabLabelMenuPkgSep := TMenuItem.Create(Self); + FTabLabelMenuPkgSep.Caption := '-'; + FTabLabelMenu.Items.Add(FTabLabelMenuPkgSep); + FTabLabelMenuOpenPackage := TMenuItem.Create(Self); + FTabLabelMenuOpenPackage.Caption := sOpenPackage; + FTabLabelMenuOpenPackage.OnClick := @TabLabelMenuOpenPackageClick; + FTabLabelMenuOpenPackage.ImageIndex := IDEImages.LoadImage(16, 'pkg_open'); + FTabLabelMenu.Items.Add(FTabLabelMenuOpenPackage); + FTabLabelMenuViewProjectSource := TMenuItem.Create(Self); + FTabLabelMenuViewProjectSource.Caption := IDECommandList.FindIDECommand(ecViewProjectSource).LocalizedName; + FTabLabelMenuViewProjectSource.OnClick := @TabLabelMenuViewProjectSourceClick; + FTabLabelMenuViewProjectSource.ImageIndex := IDEImages.LoadImage(16, 'menu_project_viewsource'); + FTabLabelMenu.Items.Add(FTabLabelMenuViewProjectSource); + FTabLabelCopyToClipboard := TMenuItem.Create(Self); + FTabLabelCopyToClipboard.Caption := sCopyFilePathToClipboard; + FTabLabelCopyToClipboard.OnClick := @TabLabelCopyToClipboardClick; + FTabLabelMenu.Items.Add(FTabLabelCopyToClipboard); + + FTabButtonMenu := TPopupMenu.Create(Self); + FTabButtonMenu.Images := IDEImages.Images_16; + FTabButtonMenu.OnPopup := @TabButtonMenuPopup; + FTabButtonMenuClose := TMenuItem.Create(Self); + FTabButtonMenuClose.Caption := IDECommandList.FindIDECommand(ecClose).LocalizedName; + FTabButtonMenuClose.OnClick := @TabButtonMenuCloseClick; + FTabButtonMenuClose.ImageIndex := IDEImages.LoadImage(16, 'menu_close'); + FTabButtonMenu.Items.Add(FTabButtonMenuClose); + FTabButtonMenuLock := TMenuItemCommand.Create(Self); + FTabButtonMenuLock.Caption := IDECommandList.FindIDECommand(ecLockEditor).LocalizedName; + FTabButtonMenuLock.IDECommand := ecLockEditor; + FTabButtonMenuLock.OnClick := @MenuItemCommandClick; + FTabButtonMenu.Items.Add(FTabButtonMenuLock); + FTabButtonCopyToClipboard := TMenuItem.Create(Self); + FTabButtonCopyToClipboard.Caption := sCopyFilePathToClipboard; + FTabButtonCopyToClipboard.OnClick := @TabButtonCopyToClipboardClick; + FTabButtonMenu.Items.Add(FTabButtonCopyToClipboard); + + FTabButtonMenuProjSep := TMenuItem.Create(Self); + FTabButtonMenuProjSep.Caption := '-'; + FTabButtonMenu.Items.Add(FTabButtonMenuProjSep); + FTabButtonMenuAddToProject := TMenuItem.Create(Self); + FTabButtonMenuAddToProject.Caption := sAddToProject; + FTabButtonMenuAddToProject.OnClick := @TabButtonMenuAddToProjectClick; + FTabButtonMenuAddToProject.ImageIndex := IDEImages.LoadImage(16, 'menu_project_add'); + FTabButtonMenu.Items.Add(FTabButtonMenuAddToProject); + + FTabButtonMenuMoveCloneSep := TMenuItem.Create(Self); + FTabButtonMenuMoveCloneSep.Caption := '-'; + FTabButtonMenu.Items.Add(FTabButtonMenuMoveCloneSep); + FTabButtonMenuMoveTo := TMenuItem.Create(Self); + FTabButtonMenuMoveTo.Caption := sMoveTo; + FTabButtonMenu.Items.Add(FTabButtonMenuMoveTo); + FTabButtonMenuMoveToNew := TMenuItemCommand.Create(Self); + FTabButtonMenuMoveToNew.Caption := sNewWindow; + FTabButtonMenuMoveToNew.IDECommand := ecMoveEditorNewWindow; + FTabButtonMenuMoveToNew.NeedsActiveEditor := True; + FTabButtonMenuMoveToNew.OnClick := @MenuItemCommandClick; + FTabButtonMenuMoveTo.Add(FTabButtonMenuMoveToNew); + FTabButtonMenuCloneTo := TMenuItem.Create(Self); + FTabButtonMenuCloneTo.Caption := sCloneTo; + FTabButtonMenu.Items.Add(FTabButtonMenuCloneTo); + FTabButtonMenuCloneToNew := TMenuItemCommand.Create(Self); + FTabButtonMenuCloneToNew.Caption := sNewWindow; + FTabButtonMenuCloneToNew.IDECommand := ecCopyEditorNewWindow; + FTabButtonMenuCloneToNew.NeedsActiveEditor := True; + FTabButtonMenuCloneToNew.OnClick := @MenuItemCommandClick; + FTabButtonMenuCloneTo.Add(FTabButtonMenuCloneToNew); + FTabButtonMenuFindIn := TMenuItem.Create(Self); + FTabButtonMenuFindIn.Caption := sFindInOtherWindow; + FTabButtonMenu.Items.Add(FTabButtonMenuFindIn); + + Application.AddOnIdleHandler(@AppOnIdle, False); +end; + +procedure TPackageTabPanel.AppOnIdle(Sender: TObject; var Done: Boolean); +begin + if FAppIdleLocked then + Exit; + + if FTabPosition <> IDEEditorOptions.TabPosition then + begin + FTabPosition := IDEEditorOptions.TabPosition; + RecreatePanel; + end; + + if FRecreateToolBar.Changed then + RecreateToolBar + else if FSetActiveEditor then + SetActiveEditor; +end; + +procedure TPackageTabPanel.RecreatePanel; +const + cSideToAlign: array[TTabPosition] of TAlign = (alTop, alBottom, alLeft, alRight); +begin + FreeAndNil(FPanel); + FreeAndNil(FSplitter); + if FTabPosition in [tpTop, tpBottom] then + begin + FPanel := TPackageTabFlowPanel.Create(Self); + FPanel.Parent := FWindow; + FPanel.Align := cSideToAlign[FTabPosition]; + FPanel.AutoSize := True; + end else + begin + FPanel := TPackageTabScrollBox.Create(Self); + FPanel.Parent := FWindow; + FPanel.Align := cSideToAlign[FTabPosition]; + FPanel.AutoSize := False; + + FSplitter := TSplitter.Create(Self); + FSplitter.Parent := FWindow; + FSplitter.Align := FPanel.Align; + if FTabPosition = tpLeft then + FSplitter.Left := FPanel.BoundsRect.Right + else + FSplitter.Top := FPanel.BoundsRect.Bottom; + end; + FRecreateToolBar.IncInternalStamp; +end; + +destructor TPackageTabPanel.Destroy; +begin + Application.RemoveOnIdleHandler(@AppOnIdle); + FRecreateToolBar.Free; + + inherited Destroy; +end; + +procedure TPackageTabPanel.DoEditorPageUpdated(Sender: TObject); +var + xEditor: TSourceEditorInterface; + xBtn: TPackageTabButton; + I: Integer; +begin + xEditor := (Sender as TSourceEditorInterface); + for I := 0 to FPanel.ControlCount-1 do + if (FPanel.Controls[I] is TPackageTabButton) then + begin + xBtn := TPackageTabButton(FPanel.Controls[I]); + if (xBtn.Editor = xEditor) then + begin + xBtn.Caption := xBtn.Editor.PageCaption; + break; + end; + end; +end; + +procedure TPackageTabPanel.EditorActivated; +begin + FSetActiveEditor := True; +end; + +procedure TPackageTabPanel.EditorCreated; +begin + FRecreateToolBar.IncInternalStamp; +end; + +procedure TPackageTabPanel.EditorDestroyed; +begin + FRecreateToolBar.IncInternalStamp; +end; + +function TPackageTabPanel.FindEditorInWindow(AEditor: TSourceEditorInterface + ): Integer; +var + I: Integer; +begin + for I := 0 to FWindow.Count-1 do + if FWindow[I] = AEditor then + Exit(I); + Result := -1; +end; + +procedure TPackageTabPanel.LoadConfig(ACfg: TXMLConfig; APath: string); +begin + APath := APath+'Panel'+IntToStr(FWindow.WindowID)+'/'; + + if FTabPosition in [tpLeft, tpRight] then + FPanel.Width := ACfg.GetValue(APath+'Panel.Width', FPanel.Width); +end; + +procedure TPackageTabPanel.RecreateToolBar; +var + I, L, xPkgIndex, xNewIndex, xOldIndex: Integer; + xBtn, xActBtn: TPackageTabButton; + xPackages: TGroupList; + xPackage: TIDEPackage; + xEditor, xOldActive: TSourceEditorInterface; + xLbl: TGroupTabLabel; + xPkgItem: TGroupItem; + xGroupTitle: string; + xGroupType: TGroupType; +begin + xActBtn := nil; + FRecreateToolBar.FLastFiles.Clear; + FWindow.IncUpdateLock; + FWindow.DisableAlign; + try + xOldActive := FWindow.ActiveEditor; + for I := FPanel.ControlCount-1 downto 0 do + FPanel.Controls[I].Free; + + xPackages := TGroupList.Create; + try + for I := 0 to FWindow.Count-1 do + begin + xEditor := FWindow.Items[I]; + FRecreateToolBar.FLastFiles.Add(xEditor.FileName); + xPackage := nil; + if xEditor.GetProjectFile.IsPartOfProject then + begin + xGroupType := gtProject; + xGroupTitle := LazarusIDE.ActiveProject.GetTitleOrName + end else + begin + PackageEditingInterface.GetPackageOfSourceEditor(xPackage, xEditor); + if (xPackage<>nil) and (xPackage.Name<>'') then + begin + xGroupType := gtPackage; + xGroupTitle := xPackage.Name; + end else + begin + xGroupType := gtOther; + xGroupTitle := sOther; + end; + end; + if not xPackages.Find(xGroupType, xPackage, xPkgIndex) then + xPkgIndex := xPackages.Add(TGroupItem.Create(xGroupType, xGroupTitle, xPackage)); + xPackages.Items[xPkgIndex].Files.AddObject(xEditor.PageCaption, xEditor); + end; + + xNewIndex := 0; + for I := 0 to xPackages.Count-1 do + begin + xPkgItem := xPackages.Items[I]; + + case xPkgItem.&Type of + gtProject: + begin + xLbl := TProjectTabLabel.Create(Self); + if LazarusIDE.ActiveProject <> nil then + begin + xLbl.Hint := LazarusIDE.ActiveProject.MainFile.Filename; + xLbl.ShowHint := True; + end; + end; + gtOther: + begin + xLbl := TOtherTabLabel.Create(Self); + end; + gtPackage: + begin + xLbl := TPackageTabLabel.Create(Self); + TPackageTabLabel(xLbl).Package := xPkgItem.Package; + xLbl.Hint := xPkgItem.Package.Filename; + xLbl.ShowHint := True; + end; + end; + xLbl.Caption := xPkgItem.Title; + xLbl.Parent := FPanel; + xLbl.PopupMenu := FTabLabelMenu; + xLbl.Height := TPackageTabButton.GetControlClassDefaultSize.cy; + if FPanel is TPackageTabScrollBox then + begin + xLbl.Alignment := taLeftJustify; + xLbl.BorderSpacing.Left := 10; + end + else if FPanel is TPackageTabFlowPanel then + begin + TPackageTabFlowPanel(FPanel).ControlList[TPackageTabFlowPanel(FPanel).ControlList.Count-1].WrapAfter := waAvoid; + end; + for L := 0 to xPkgItem.Files.Count-1 do + begin + xEditor := TSourceEditorInterface(xPkgItem.Files.Objects[L]); + if FWindow.FindSourceEditorWithPageIndex(xNewIndex, FNoteBook) <> xEditor then // speed things up - check correct index + begin + xOldIndex := FWindow.FindPageWithEditor(xEditor, FNoteBook); + if (xOldIndex>=0) and (xOldIndex<>xNewIndex) then + TCustomTabControl(FNotebook).Pages.Move(xOldIndex, xNewIndex); + end; + xEditor.UpdateProjectFile; // updates FNewEditorInfo.PageIndex + Inc(xNewIndex); + xBtn := TPackageTabButton.Create(Self); + xBtn.Height := xLbl.Height; + xBtn.Caption := xEditor.PageCaption; + xBtn.Hint := xEditor.FileName; + xBtn.ShowHint := True; + xBtn.Parent := FPanel; + xBtn.Editor := xEditor; + xBtn.OnMouseDown := @TabButtonMouseDown; + xBtn.PopupMenu := FTabButtonMenu; + xBtn.Down := xEditor = xOldActive; + if xBtn.Down then + xActBtn := xBtn; + xBtn.IsOtherFile := xPkgItem.&Type = gtOther; + end; + end; + finally + xPackages.Free; + end; + + if FPanel is TPackageTabScrollBox then + TPackageTabScrollBox(FPanel).DoAlignControls; + + if Assigned(xOldActive) and (xOldActive <> FWindow.ActiveEditor) then // the pageorder change could change activeeditor + FWindow.ActiveEditor := xOldActive; + + if (xActBtn<>nil) and (FPanel is TPackageTabScrollBox) then + TPackageTabScrollBox(FPanel).ScrollInView(xActBtn); + finally + FWindow.EnableAlign; + FWindow.DecUpdateLock; + end; + + FRecreateToolBar.Changed; // set changestamps + FSetActiveEditor := False; +end; + +procedure TPackageTabPanel.SaveConfig(ACfg: TXMLConfig; APath: string); +begin + APath := APath+'Panel'+IntToStr(FWindow.WindowID)+'/'; + + if FTabPosition in [tpLeft, tpRight] then + ACfg.SetValue(APath+'Panel.Width', FPanel.Width) + else + ACfg.DeleteValue(APath+'Panel.Width'); +end; + +procedure TPackageTabPanel.SetActiveEditor; +var + I: Integer; + xBtn, xActBtn: TPackageTabButton; + xActEditor: TSourceEditorInterface; +begin + if FRecreateToolBar.PanelChanged(FWindow) then + begin + RecreateToolBar; + Exit; + end; + + xActEditor := FWindow.ActiveEditor; + xActBtn := nil; + + for I := 0 to FPanel.ControlCount-1 do + if FPanel.Controls[I] is TPackageTabButton then + begin + xBtn := TPackageTabButton(FPanel.Controls[I]); + xBtn.Down := xBtn.Editor = xActEditor; + if xBtn.Editor = xActEditor then + xActBtn := xBtn; + end; + + if (xActBtn<>nil) and (FPanel is TPackageTabScrollBox) then + TPackageTabScrollBox(FPanel).ScrollInView(xActBtn); + + FSetActiveEditor := False; +end; + +procedure TPackageTabPanel.TabButtonCopyToClipboardClick(Sender: TObject); +var + xBtn: TPackageTabButton; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + Clipboard.AsText := xBtn.Editor.FileName; +end; + +procedure TPackageTabPanel.TabButtonMenuAddToProjectClick(Sender: TObject); +var + xBtn: TPackageTabButton; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + LazarusIDE.DoAddUnitToProject(xBtn.Editor); +end; + +procedure TPackageTabPanel.TabButtonMenuCloneToClick(Sender: TObject); +var + xBtn: TPackageTabButton; + xToWindow: Integer; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + xToWindow := (Sender as TMenuItemWindow).WindowIndex; + xBtn.Editor.CopyToWindow(xToWindow); +end; + +procedure TPackageTabPanel.MenuItemCommandClick(Sender: TObject); +var + xBtn: TPackageTabButton; + xItem: TMenuItemCommand; + xOldEditor: TSourceEditorInterface; + I: Integer; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + xItem := (Sender as TMenuItemCommand); + xOldEditor := nil; + if xItem.NeedsActiveEditor then + begin + xOldEditor := FWindow.ActiveEditor; + FWindow.ActiveEditor := xBtn.Editor; + xBtn.Editor.EditorControl.SetFocus; + end; + xBtn.Editor.DoEditorExecuteCommand(xItem.IDECommand); + if xOldEditor<>nil then + begin + for I := 0 to FWindow.Count-1 do + if FWindow[I] = xOldEditor then + begin + FWindow.ActiveEditor := xOldEditor; + if GetParentForm(xOldEditor.EditorControl) = Screen.ActiveCustomForm then + xOldEditor.EditorControl.SetFocus; + break; + end; + end; +end; + +procedure TPackageTabPanel.TabButtonMenuCloseClick(Sender: TObject); +var + xBtn: TPackageTabButton; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + LazarusIDE.DoCloseEditorFile(xBtn.Editor, [cfSaveFirst]); +end; + +procedure TPackageTabPanel.TabButtonMenuFindInClick(Sender: TObject); +var + TargetIndex, SharedEditorIdx: Integer; + DestWin: TSourceEditorWindowInterface; + xBtn: TPackageTabButton; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + TargetIndex := (Sender as TMenuItemWindow).WindowIndex; + if (TargetIndex < 0) or (TargetIndex >= SourceEditorManagerIntf.SourceWindowCount) then + exit; + DestWin := SourceEditorManagerIntf.SourceWindows[TargetIndex]; + SharedEditorIdx := DestWin.IndexOfEditorInShareWith(xBtn.Editor); + If SharedEditorIdx < 0 then + exit; + SourceEditorManagerIntf.ActiveEditor := DestWin.Items[SharedEditorIdx]; + SourceEditorManagerIntf.ShowActiveWindowOnTop(True); +end; + +procedure TPackageTabPanel.TabButtonMenuMoveToClick(Sender: TObject); +var + xBtn: TPackageTabButton; + xToWindow: Integer; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + xToWindow := (Sender as TMenuItemWindow).WindowIndex; + xBtn.Editor.MoveToWindow(xToWindow); +end; + +procedure TPackageTabPanel.TabButtonMenuPopup(Sender: TObject); +var + xBtn: TPackageTabButton; + + procedure RecreateMoveClone(const aMenuItem: TMenuItem; + const aOnClickMethod: TNotifyEvent; aWinForFind: Boolean = False); + var + I, SharedEditor: Integer; + xWin: TSourceEditorWindowInterface; + xNewItem: TMenuItemWindow; + begin + for I := aMenuItem.Count-1 downto 0 do + if aMenuItem[I] is TMenuItemWindow then + aMenuItem[I].Free; + + for I := 0 to SourceEditorManagerIntf.SourceWindowCount - 1 do + begin + xWin := SourceEditorManagerIntf.SourceWindows[I]; + SharedEditor := xWin.IndexOfEditorInShareWith(xBtn.Editor); + if (xWin <> FWindow) and ((SharedEditor < 0) <> aWinForFind) then + begin + xNewItem := TMenuItemWindow.Create(Self); + xNewItem.Caption := xWin.Caption; + xNewItem.OnClick := aOnClickMethod; + xNewItem.WindowIndex := I; + aMenuItem.Add(xNewItem); + end; + end; + end; +begin + xBtn := (FTabButtonMenu.PopupComponent as TPackageTabButton); + FTabButtonMenuProjSep.Visible := xBtn.IsOtherFile; + FTabButtonMenuAddToProject.Visible := xBtn.IsOtherFile; + + RecreateMoveClone(FTabButtonMenuMoveTo, @TabButtonMenuMoveToClick); + RecreateMoveClone(FTabButtonMenuCloneTo, @TabButtonMenuCloneToClick); + RecreateMoveClone(FTabButtonMenuFindIn, @TabButtonMenuFindInClick, True); + FTabButtonMenuFindIn.Visible := FTabButtonMenuFindIn.Count > 0; +end; + +procedure TPackageTabPanel.TabButtonMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var + xBtn: TPackageTabButton; +begin + xBtn := (Sender as TPackageTabButton); + case Button of + mbLeft: FWindow.ActiveEditor := xBtn.Editor; + mbMiddle: LazarusIDE.DoCloseEditorFile(xBtn.Editor, [cfSaveFirst]); + end; +end; + +procedure TPackageTabPanel.TabLabelCloseAllGroupClick(Sender: TObject); +var + xPopupControl: TControl; + I: Integer; + xDelete: Boolean; + xBtn: TPackageTabButton; +begin + xPopupControl := FTabLabelMenu.PopupComponent as TControl; + + FAppIdleLocked := True; + try + I := 0; + xDelete := False; + while I < FPanel.ControlCount do + begin + if xDelete then + begin + if FPanel.Controls[I] is TPackageTabButton then + begin + xBtn := TPackageTabButton(FPanel.Controls[I]); + LazarusIDE.DoCloseEditorFile(xBtn.Editor, [cfSaveFirst]); + end else + Exit; // close only group from label + end else + if FPanel.Controls[I] = xPopupControl then + xDelete := True; + + Inc(I); + end; + finally + FAppIdleLocked := False; + end; +end; + +procedure TPackageTabPanel.TabLabelCopyToClipboardClick(Sender: TObject); +var + xFileName: string; +begin + if (FTabLabelMenu.PopupComponent is TPackageTabLabel) then + xFileName := (FTabLabelMenu.PopupComponent as TPackageTabLabel).Package.Filename + else + if (FTabLabelMenu.PopupComponent is TProjectTabLabel) then + xFileName := LazarusIDE.ActiveProject.MainFile.Filename + else + xFileName := ''; + + if xFileName<>'' then + Clipboard.AsText := xFileName; +end; + +procedure TPackageTabPanel.TabLabelMenuOpenPackageClick(Sender: TObject); +var + xLbl: TPackageTabLabel; +begin + xLbl := (FTabLabelMenu.PopupComponent as TPackageTabLabel); + PackageEditingInterface.DoOpenPackageFile(xLbl.Package.Filename,[pofAddToRecent],false); +end; + +procedure TPackageTabPanel.TabLabelMenuPopup(Sender: TObject); +var + xLbl: TGroupTabLabel; +begin + xLbl := (FTabLabelMenu.PopupComponent as TGroupTabLabel); + FTabLabelMenuOpenPackage.Visible := (xLbl is TPackageTabLabel); + FTabLabelMenuViewProjectSource.Visible := (xLbl is TProjectTabLabel); + FTabLabelMenuPkgSep.Visible := + FTabLabelMenuOpenPackage.Visible or FTabLabelMenuViewProjectSource.Visible; + FTabLabelCopyToClipboard.Visible := not(xLbl is TOtherTabLabel); +end; + +procedure TPackageTabPanel.TabLabelMenuViewProjectSourceClick(Sender: TObject); +var + xCmd: TIDECommand; +begin + xCmd := IDECommandList.FindIDECommand(ecViewProjectSource); + Assert(xCmd<>nil); + xCmd.Execute(Sender); +end; + +{ TPackageTabPanels } + +constructor TPackageTabPanels.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + FTabPanels := TObjectList.Create(True); + FConfig := TXMLConfig.Create(IncludeTrailingPathDelimiter(LazarusIDE.GetPrimaryConfigPath)+'packagetabs.xml'); + + Assert(SourceEditorManagerIntf <> nil); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowCreate, @WindowCreated); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowDestroy, @WindowDestroyed); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorCreate, @EditorCreated); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorDestroy, @EditorDestroyed); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorActivate, @EditorActivated); + SourceEditorManagerIntf.ShowTabs := False; +end; + +destructor TPackageTabPanels.Destroy; +begin + FConfig.Free; + FTabPanels.Free; + inherited Destroy; +end; + +function TPackageTabPanels.GetTabPanel(Index: Integer): TPackageTabPanel; +begin + Result := TPackageTabPanel(FTabPanels[Index]); +end; + +function TPackageTabPanels.GetTabPanelCount: Integer; +begin + Result := FTabPanels.Count; +end; + +procedure TPackageTabPanels.EditorActivated(Sender: TObject); +var + I: Integer; +begin + for I := 0 to TabPanelCount-1 do + TabPanels[I].EditorActivated; +end; + +procedure TPackageTabPanels.EditorCreated(Sender: TObject); +var + I: Integer; +begin + for I := 0 to TabPanelCount-1 do + TabPanels[I].EditorCreated; +end; + +procedure TPackageTabPanels.EditorDestroyed(Sender: TObject); +var + I: Integer; +begin + for I := 0 to TabPanelCount-1 do + TabPanels[I].EditorDestroyed; +end; + +procedure TPackageTabPanels.WindowCreated(Sender: TObject); +var + PTP: TPackageTabPanel; +begin + PTP := TPackageTabPanel.Create(Sender as TSourceEditorWindowInterface); + FTabPanels.Add(PTP); + PTP.LoadConfig(FConfig, 'PackageTabs/'); +end; + +procedure TPackageTabPanels.WindowDestroyed(Sender: TObject); +var + xWindow: TSourceEditorWindowInterface; + I: Integer; +begin + xWindow := Sender as TSourceEditorWindowInterface; + for I := TabPanelCount-1 downto 0 do + if TabPanels[I].FWindow = xWindow then + begin + TabPanels[I].SaveConfig(FConfig, 'PackageTabs/'); + FTabPanels.Delete(I); + end; +end; + +finalization + FreeAndNil(xPackageTabPanels); +end. + diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/packagetabs.lpk lazarus-1.6+dfsg/components/packagetabs/packagetabs.lpk --- lazarus-1.4.4+dfsg/components/packagetabs/packagetabs.lpk 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/packagetabs.lpk 2015-12-13 22:40:35.000000000 +0000 @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <Package Version="4"> + <PathDelim Value="\"/> + <Name Value="packagetabs"/> + <Type Value="DesignTime"/> + <Author Value="Ondrej Pokorny"/> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <SearchPaths> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <CodeGeneration> + <Checks> + <IOChecks Value="True"/> + <RangeChecks Value="True"/> + <OverflowChecks Value="True"/> + </Checks> + </CodeGeneration> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf2Set"/> + <UseHeaptrc Value="True"/> + <TrashVariables Value="True"/> + <UseExternalDbgSyms Value="True"/> + </Debugging> + </Linking> + </CompilerOptions> + <Description Value="Replacement of source editor tabs/pages with buttons sorted by package and name."/> + <License Value="GPL-2"/> + <Version Minor="1" Release="1"/> + <Files Count="2"> + <Item1> + <Filename Value="packagetabs_impl.pas"/> + <HasRegisterProc Value="True"/> + <UnitName Value="packagetabs_impl"/> + </Item1> + <Item2> + <Filename Value="packagetabsstr.pas"/> + <UnitName Value="packagetabsstr"/> + </Item2> + </Files> + <i18n> + <EnableI18N Value="True"/> + <OutDir Value="languages"/> + <EnableI18NForLFM Value="True"/> + </i18n> + <RequiredPkgs Count="2"> + <Item1> + <PackageName Value="IDEIntf"/> + </Item1> + <Item2> + <PackageName Value="FCL"/> + </Item2> + </RequiredPkgs> + <UsageOptions> + <UnitPath Value="$(PkgOutDir)"/> + </UsageOptions> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + </Package> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/packagetabs.pas lazarus-1.6+dfsg/components/packagetabs/packagetabs.pas --- lazarus-1.4.4+dfsg/components/packagetabs/packagetabs.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/packagetabs.pas 2015-12-13 22:40:35.000000000 +0000 @@ -0,0 +1,21 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit packagetabs; + +interface + +uses + packagetabs_impl, packagetabsstr, LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('packagetabs_impl', @packagetabs_impl.Register); +end; + +initialization + RegisterPackage('packagetabs', @Register); +end. diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/packagetabsstr.pas lazarus-1.6+dfsg/components/packagetabs/packagetabsstr.pas --- lazarus-1.4.4+dfsg/components/packagetabs/packagetabsstr.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/packagetabsstr.pas 2015-12-13 22:40:35.000000000 +0000 @@ -0,0 +1,20 @@ +unit packagetabsstr; + +{$mode objfpc}{$H+} + +interface + +resourcestring + sOpenPackage = 'Open package'; + sMoveTo = 'Move To'; + sNewWindow = 'New Window'; + sCloneTo = 'Clone To'; + sFindInOtherWindow = 'Find In Other Window'; + sOther = 'Other'; + sAddToProject = 'Add To Project'; + sCopyFilePathToClipboard = 'Copy File Path To Clipboard'; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/packagetabs/README.txt lazarus-1.6+dfsg/components/packagetabs/README.txt --- lazarus-1.4.4+dfsg/components/packagetabs/README.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/packagetabs/README.txt 2015-11-24 21:44:22.000000000 +0000 @@ -0,0 +1,7 @@ +IDE add-on: +When installed, this package replaces source editor tabs/pages with buttons sorted by package and name. + +Author: Ondrej Pokorny + +Documentation: +http://wiki.lazarus.freepascal.org/Package_Tabs diff -Nru lazarus-1.4.4+dfsg/components/PascalScript/Source/Makefile.compiled lazarus-1.6+dfsg/components/PascalScript/Source/Makefile.compiled --- lazarus-1.4.4+dfsg/components/PascalScript/Source/Makefile.compiled 2015-02-14 09:39:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/PascalScript/Source/Makefile.compiled 2015-10-01 18:40:54.000000000 +0000 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <Makefile Value="2"/> - <Params Value=" -Fu../../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);../../../lcl/units/$(CPU_TARGET)-$(OS_TARGET);../../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);. -MObjFPC -Scghi -O1 -g -gl -l -vh- -vewnibq -dLCL -dLCL$(LCL_PLATFORM) pascalscript.pas"/> + <Params Value=" -Fu../../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);../../../lcl/units/$(CPU_TARGET)-$(OS_TARGET);../../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);. -MObjFPC -Scghi -O1 -g -gl -l -vewnibq -vh- -dLCL -dLCL$(LCL_PLATFORM) pascalscript.pas"/> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/PascalScript/Source/Makefile.fpc lazarus-1.6+dfsg/components/PascalScript/Source/Makefile.fpc --- lazarus-1.4.4+dfsg/components/PascalScript/Source/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/PascalScript/Source/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for pascalscript 0.0.0.1 # -# This file was generated on 3-10-15 +# This file was generated on 1-10-15 [package] name=pascalscript @@ -11,7 +11,7 @@ [compiler] unittargetdir=lib/$(CPU_TARGET)-$(OS_TARGET) unitdir=../../../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) ../../../lcl/units/$(CPU_TARGET)-$(OS_TARGET) ../../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) . -options= -MObjFPC -Scghi -O1 -g -gl -l -vh- -vewnibq -dLCL -dLCL$(LCL_PLATFORM) $(DBG_OPTIONS) +options= -MObjFPC -Scghi -O1 -g -gl -l -vewnibq -vh- -dLCL -dLCL$(LCL_PLATFORM) $(DBG_OPTIONS) [target] units=pascalscript.pas diff -Nru lazarus-1.4.4+dfsg/components/PascalScript/Source/uPSDebugger.pas lazarus-1.6+dfsg/components/PascalScript/Source/uPSDebugger.pas --- lazarus-1.4.4+dfsg/components/PascalScript/Source/uPSDebugger.pas 2012-08-27 11:02:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/PascalScript/Source/uPSDebugger.pas 2015-03-24 17:52:23.000000000 +0000 @@ -461,6 +461,7 @@ LastCol := 0; if fi <> nil then begin pt := fi^.FPositionTable; + LastFn := ''; for i := 0 to pt.Count -1 do begin r := pt[I]; diff -Nru lazarus-1.4.4+dfsg/components/PascalScript/Source/uPSRuntime.pas lazarus-1.6+dfsg/components/PascalScript/Source/uPSRuntime.pas --- lazarus-1.4.4+dfsg/components/PascalScript/Source/uPSRuntime.pas 2015-01-14 20:20:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/PascalScript/Source/uPSRuntime.pas 2015-02-15 22:24:17.000000000 +0000 @@ -9137,6 +9137,11 @@ Stack.SetInt(-1,length(tbtstring(arr.Dta^))); Result:=true; end; + btChar: + begin + Stack.SetInt(-1, 1); + Result:=true; + end; {$IFNDEF PS_NOWIDESTRING} btWideString: begin diff -Nru lazarus-1.4.4+dfsg/components/PascalScript/Source/x64.inc lazarus-1.6+dfsg/components/PascalScript/Source/x64.inc --- lazarus-1.4.4+dfsg/components/PascalScript/Source/x64.inc 2015-01-14 15:16:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/PascalScript/Source/x64.inc 2015-02-15 22:24:17.000000000 +0000 @@ -31,9 +31,9 @@ (* Registers: RCX: Address RDX: *_RAX - R8: _XMM0 + R8: * _XMM0 R9: _REGISTERS - fpc inserts an 20h emty space + fpc inserts an 20h empty space *) //{$IFDEF FPC} push rbp @@ -83,10 +83,10 @@ bt rcx, 3 jnc @g3 - cvtsd2ss xmm3, [rax+40] + cvtsd2ss xmm3, [rax+48] jmp @g3e @g3: - movsd xmm3, [rax+40] + movsd xmm3, [rax+48] @g3e: @@ -131,8 +131,9 @@ movd [rsi],xmm1 @g5: - mov RDX, [rbp-24] - movd [rdx],xmm0 + mov rdx,[rbp-24] + movsd qword ptr [rdx], xmm0 + @g5e: leave diff -Nru lazarus-1.4.4+dfsg/components/pochecker/languages/pocheckerconsts.hu.po lazarus-1.6+dfsg/components/pochecker/languages/pocheckerconsts.hu.po --- lazarus-1.4.4+dfsg/components/pochecker/languages/pocheckerconsts.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/pochecker/languages/pocheckerconsts.hu.po 2015-12-21 23:18:06.000000000 +0000 @@ -319,11 +319,11 @@ #: pocheckerconsts.spercfuzzy msgid "%s: %4.1f%% fuzzy strings." -msgstr "%s: %4.1f%% bizonytalan szövegek." +msgstr "%s: %4.1f%% bizonytalan szöveg." #: pocheckerconsts.sperctranslated msgid "%s: %4.1f%% translated strings." -msgstr "%s: %4.1f%% lefordított szövegek." +msgstr "%s: %4.1f%% lefordított szöveg." #: pocheckerconsts.spercuntranslated msgid "%s: %4.1f%% untranslated strings." diff -Nru lazarus-1.4.4+dfsg/components/pochecker/pocheckermain.pp lazarus-1.6+dfsg/components/pochecker/pocheckermain.pp --- lazarus-1.4.4+dfsg/components/pochecker/pocheckermain.pp 2014-10-22 10:50:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/pochecker/pocheckermain.pp 2015-12-19 14:54:59.000000000 +0000 @@ -24,11 +24,12 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, ComCtrls, Types, - LCLType, Translations, - {$IFnDEF POCHECKERSTANDALONE} - IDEIntf, MenuIntf, + Classes, SysUtils, FileUtil, LazFileUtils, Forms, Controls, Graphics, Dialogs, + StdCtrls, CheckLst, Buttons, ExtCtrls, ComCtrls, Types, + LCLType, LazUTF8, Translations, + {$IFDEF POCHECKERSTANDALONE} + {$ELSE} + {IDEIntf,} MenuIntf, {$ENDIF} PoFamilies, ResultDlg, pocheckerconsts, PoCheckerSettings, PoFamilyLists, PoCheckerMemoDlg; @@ -741,6 +742,7 @@ end; FPoCheckerSettings.SaveConfig; end; + function ListSortFunc(List: TStringList; Index1, Index2: Integer): Integer; begin Result := Utf8CompareText(List.Strings[Index1], List.Strings[Index2]); @@ -889,7 +891,7 @@ Lang := GetEnvironmentVariableUTF8('LANG'); T := ''; if Lang = '' then - LCLGetLanguageIDs(Lang, T); + LazGetLanguageIDs(Lang, T); if Lang <> '' then begin //debugln('TPoCheckerForm.GetTranslations: Lang = ',Lang); diff -Nru lazarus-1.4.4+dfsg/components/pochecker/pocheckersettings.pp lazarus-1.6+dfsg/components/pochecker/pocheckersettings.pp --- lazarus-1.4.4+dfsg/components/pochecker/pocheckersettings.pp 2014-10-15 21:42:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/pochecker/pocheckersettings.pp 2015-03-22 22:39:33.000000000 +0000 @@ -345,10 +345,12 @@ end; function TPoCheckerSettings.LoadLangPath: String; +{$IFDEF POCHECKERSTANDALONE} var SL: TStringList; i: Integer; S: String; +{$ENDIF} begin {$IFDEF POCHECKERSTANDALONE} //allow override on commandline @@ -378,7 +380,7 @@ Result := FConfig.GetValue(pLangPath+'Value',''); {$ELSE} Result := ''; - {$eNDIF} + {$ENDIF} end; diff -Nru lazarus-1.4.4+dfsg/components/pochecker/pofamilies.pp lazarus-1.6+dfsg/components/pochecker/pofamilies.pp --- lazarus-1.4.4+dfsg/components/pochecker/pofamilies.pp 2014-10-22 11:01:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/pochecker/pofamilies.pp 2015-07-04 23:08:00.000000000 +0000 @@ -7,7 +7,7 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, StringHashList, ContNrs, Math, + Classes, SysUtils, ContNrs, Math, LCLProc, FileUtil, LazFileUtils, Masks, Translations, PoCheckerConsts; Type diff -Nru lazarus-1.4.4+dfsg/components/pochecker/pofamilylists.pp lazarus-1.6+dfsg/components/pochecker/pofamilylists.pp --- lazarus-1.4.4+dfsg/components/pochecker/pofamilylists.pp 2014-10-12 11:21:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/pochecker/pofamilylists.pp 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface Uses - Classes, SysUtils, LCLProc, FileUtil, StringHashList, ContNrs, + Classes, SysUtils, ContNrs, LCLProc, LazFileUtils, //{$IFDEF UNIX}{$IFNDEF DisableCWString}, cwstring{$ENDIF}{$ENDIF}, PoFamilies, PoCheckerConsts; diff -Nru lazarus-1.4.4+dfsg/components/printers/carbon/carbonprinters_h.inc lazarus-1.6+dfsg/components/printers/carbon/carbonprinters_h.inc --- lazarus-1.4.4+dfsg/components/printers/carbon/carbonprinters_h.inc 2014-09-14 17:41:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/carbon/carbonprinters_h.inc 2015-03-30 17:14:55.000000000 +0000 @@ -1,7 +1,7 @@ {%MainUnit ../osprinters.pas} uses MacOSAll, - Classes, SysUtils, Printers, LCLType, CarbonCanvas, CarbonPrinting; + Classes, SysUtils, Printers, LCLType, CarbonCanvas, CarbonPrinting, ppdresolution; type { TCarbonPrinterContext } @@ -14,6 +14,11 @@ procedure Reset; override; end; + TPrinterResolution = record + Valid: boolean; + HorzRes, VertRes: Integer; + end; + { TCarbonPrinter } TCarbonPrinter = class(TPrinter) @@ -27,6 +32,7 @@ FPrinterArray: CFArrayRef; FPaperArray: CFArrayRef; FDefaultPrinter: String; + FDefaultResolution: TPrinterResolution; procedure CreatePrintSession; procedure CreatePrintSettings; diff -Nru lazarus-1.4.4+dfsg/components/printers/carbon/carbonprinters.inc lazarus-1.6+dfsg/components/printers/carbon/carbonprinters.inc --- lazarus-1.4.4+dfsg/components/printers/carbon/carbonprinters.inc 2014-09-14 17:41:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/carbon/carbonprinters.inc 2015-08-08 08:26:38.000000000 +0000 @@ -2,7 +2,7 @@ {************************************************************** Implementation for carbonprinter ***************************************************************} -Uses InterfaceBase, LCLIntf, CarbonProc, LCLProc; +Uses InterfaceBase, LCLIntf, CarbonProc, LCLProc, dl; { TCarbonPrinterContext } @@ -335,17 +335,58 @@ Validate; end; +type + TPMPrinterGetOutputResolution = function( printer: PMPrinter; + printSettings: PMPrintSettings; + var resolutionP: PMResolution ): OSStatus; cdecl; + +var + _PMPrinterGetOutputResolution: TPMPrinterGetOutputResolution = nil; + _PMPrinterGetOutputResolutionLoaded: Boolean; + function TCarbonPrinter.GetOutputResolution: PMResolution; var res: OSStatus; + r : PMresolution; + prn: PMPrinter; + cnt: UInt32; + i : Integer; begin - // PMPrinterGetOutputResolution is supported on OS X 10.5 and later - // TODO: check version instead, because 10.5 may still support PowerPC - {$if defined(PowerPC) or defined(__ppc__) or defined(ppc)} - res := noErr+1; - {$else} - res := PMPrinterGetOutputResolution(GetCurrentPrinter, PrintSettings, Result{%H-}); - {$endif} + prn := GetCurrentPrinter; + + if not _PMPrinterGetOutputResolutionLoaded then + begin + // loading in run-time, because the function isn't available on OSX 10.4 + _PMPrinterGetOutputResolutionLoaded := true; + _PMPrinterGetOutputResolution := TPMPrinterGetOutputResolution(dlsym(RTLD_DEFAULT,'PMPrinterGetOutputResolution')); + end; + if Assigned(_PMPrinterGetOutputResolution) then begin + // the function might return kPMKeyNotFound, see function description in MacOSAll + res := _PMPrinterGetOutputResolution(prn, PrintSettings, Result{%H-}); + if (res=kPMKeyNotFound) and (FDefaultResolution.Valid) then begin + res := noErr; + Result.hRes := fDefaultResolution.HorzRes; + Result.vRes := fDefaultResolution.VertRes; + end; + end + else + res := noErr+1; + + if res <> noErr then + begin + res := PMPrinterGetPrinterResolutionCount(prn, cnt{%H-}); + if res = noErr then + begin + PMPrinterGetIndexedPrinterResolution(prn, 1, Result); + for i := 2 to cnt do + begin + if PMPrinterGetIndexedPrinterResolution(prn, i, r{%H-}) = noErr then + if (r.hRes > Result.hRes) and (r.vRes > Result.vRes) then + Result := r; + end; + end; + end; + if res<>noErr then begin Result.vRes:=72; @@ -532,6 +573,7 @@ var S: TStringList; P: PMPrinter; + ResCount: UInt32; begin S := TStringList.Create; BeginEnumPrinters(S); @@ -546,6 +588,14 @@ if OSError(PMSessionSetCurrentPMPrinter(PrintSession, P), Self, 'DoSetPrinter', 'PMSessionSetCurrentPMPrinter') then raise EPrinter.CreateFmt('The system is unable to select printer "%s"!', [AName]); + // + with FDefaultResolution do + begin + ResCount := 0; + Valid := (PMPrinterGetPrinterResolutionCount(P, ResCount)=noErr) and (ResCount>1); + if Valid then + Valid := GetDefaultPPDResolution(P, HorzRes, VertRes); + end; end; finally EndEnumPrinters; diff -Nru lazarus-1.4.4+dfsg/components/printers/carbon/ppdresolution.pas lazarus-1.6+dfsg/components/printers/carbon/ppdresolution.pas --- lazarus-1.4.4+dfsg/components/printers/carbon/ppdresolution.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/carbon/ppdresolution.pas 2015-03-30 17:14:55.000000000 +0000 @@ -0,0 +1,185 @@ +unit ppdresolution; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, MacOSAll, CarbonProc; + + function GetDefaultPPDResolution(aPrinter: PMPrinter; out HorzRes, VertRes: Integer): boolean; + +implementation + + +function StrPasP(A,B: pchar): ansistring; +begin + SetLength(Result, B-A); + system.Move(A^, Result[1], B-A); +end; + +procedure SkipBlanks(var A: pchar); +begin + while A^ in [' ', #9] do + Inc(A); // skip white space +end; + +function GetNumber(var B: pchar; var Number: Integer): boolean; +var + A: pchar; + Code: Integer; +begin + Number := 0; + result := false; + A := B; + while B^ in ['0'..'9'] do Inc(B); + if A=B then + exit; + + Val(StrPasP(A, B), Number, Code); + result := Code=0; +end; + +function ParseDefaultResolution(A:Pchar; out ResTag: ansistring; out HorzRes, VertRes: Integer): boolean; +var + B: PChar; +begin + + result := false; + HorzRes := 300; + VertRes := 300; + if A=nil then + exit; + + inc(A, 19); // skip *DefaultResolution: + SkipBlanks(A); + B := A; + while not (B^ in [' ', #9, #10, #13]) do inc(B); + if A=B then + exit; + + ResTag := StrPasP(A, B); + A := @ResTag[1]; + + // get first number + B := A; + result := GetNumber(B, HorzRes); + if not result then + exit; + + if B^='d' then begin // start of dpi, we are done + VertRes := HorzRes; + result := true; + exit; + end; + if B^<>'x' then // unexpected res format, expected NNNxMMMdpi + exit; + + // get second number + inc(B); + A := B; + result := GetNumber(B, VertRes); +end; + +function GetDefaultResolutionFromPtr(Buf: PChar; + var HorzRes, VertRes:Integer): boolean; +var + A, B: PChar; + ResTag: ansistring; +begin + + result := false; + A := strpos(Buf, '*DefaultResolution:'); + if A=nil then + exit; + + result := ParseDefaultResolution(A, ResTag, HorzRes, VertRes); + if not result then + exit; + + // now check for *OpenUI: *Resolution, maybe ResTag is just a tag + A := strpos(Buf, '*OpenUI *Resolution'); + if A=nil then begin + // not found, assume ResTag is a valid value + exit; + end; + + // restrict ourselves to this block + B := strpos(A, '*CloseUI: *Resolution'); + if B=nil then + exit; // something is wrong but we have a standalone default resolution + // we take it + B^ := #0; + + result := false; + repeat + // find default resolution entry + B := strpos(A, #10'*Resolution'); + if B<>nil then begin + inc(B, 12); + SkipBlanks(B); + // is this the one we are looking for? + if strlcomp(B, @ResTag[1], Length(ResTag))=0 then begin + // it is, look for /HWResolution + A := strpos(B, '/HWResolution'); + if A<>nil then begin + // found + inc(A, 13); + SkipBlanks(A); + // we are not a postscript interpreter, only look for + // resolution values like NNN or [NNN MMM] + if A^='[' then begin + Inc(A); + SkipBlanks(A); + Result := GetNumber(A, HorzRes); + if Result then begin + SkipBlanks(A); + Result := GetNumber(A, VertRes); + end; + end else begin + result := GetNumber(A, HorzRes); + VertRes := HorzRes; + end; + end else + // /HWResolution not found, assume ResTag was in valid format + result := true; + + break; + end; + A := B; + end; + until B=nil; +end; + +function GetDefaultPPDResolution(aPrinter: PMPrinter; out HorzRes, VertRes: Integer + ): boolean; +var + PPD: ansistring; + Name: CFStringRef; + aURL: CFURLRef = nil; + Range: CFRange; + Data: CFDataRef = nil; +begin + VertRes := 0; + HorzRes := 0; + + CreateCFString('PMPPDDescriptionType', Name); + Result := PMPrinterCopyDescriptionURL(aPrinter, Name, aURL)=noErr; + FreeCFString(Name); + if Result then begin + PMCopyPPDData(aURL, Data); + FreeCFString(aURL); + if Data<>nil then begin + Range.length := CFDataGetLength(Data); + Range.location := 0; + SetLength(PPD, Range.length); + CFDataGetBytes(Data, Range, @PPD[1]); + CFRelease(Data); + result := GetDefaultResolutionFromPtr(@PPD[1], HorzRes, VertRes); + end; + end; + +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprintcanvas.pas lazarus-1.6+dfsg/components/printers/cocoa/cocoaprintcanvas.pas --- lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprintcanvas.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/cocoa/cocoaprintcanvas.pas 2015-05-08 10:34:19.000000000 +0000 @@ -0,0 +1,747 @@ +// custom-page in cocoa example: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Printing/osxp_pagination/osxp_pagination.html +unit cocoaprintcanvas; + +{$mode objfpc}{$H+} +{$modeswitch objectivec1} + +interface + +uses + // fpc + MacOSAll, CocoaAll, Classes, SysUtils, fpcanvas, Contnrs, Types, + // lcl-widgetset + CocoaUtils, CocoaGDIObjects, + // lcl + Printers, LCLType, Graphics; + +type + + { TCanvasOperation } + + TCanvasOperation = class(TObject) + public + procedure DrawTo(const ADest: TCocoaContext); virtual; abstract; + end; + + { TCanvasOperation_Pen } + + TCanvasOperation_Pen = class(TCanvasOperation) + public + Pen_Color: TColor; // default clBlack; + Pen_Cosmetic: Boolean; // default True; + Pen_Style: TFPPenStyle; + Pen_Width: Integer; + Pen_Mode: TFPPenMode; + Pen_EndCap: TFPPenEndCap; + Pen_JoinStyle: TFPPenJoinStyle; + // + DisablePen: Boolean; // for descendents to disable pen setting in DrawTo + procedure DrawTo(const ADest: TCocoaContext); override; + end; + + { TCanvasOperation_Pen_Brush } + + TCanvasOperation_Pen_Brush = class(TCanvasOperation_Pen) + public + Brush_Color: TColor; // default clBlack; + Brush_Style: TFPBrushStyle; + Brush_Pattern: TBrushPattern; + procedure DrawTo(const ADest: TCocoaContext); override; + end; + + TCanvasOperation_Font = class(TCanvasOperation_Pen_Brush) + public + Font_Name: string; + Font_Size: integer; + Font_Bold: boolean; + Font_Italic: boolean; + Font_Underline: boolean; + Font_StrikeThrough: boolean; + Font_Orientation: Integer; + // + Font_Pitch: TFontPitch; + Font_Quality: TFontQuality; + procedure DrawTo(const ADest: TCocoaContext); override; + end; + + { TCanvasOperation_Ellipse } + + TCanvasOperation_Ellipse = class(TCanvasOperation_Pen_Brush) + public + X1, Y1, X2, Y2: Integer; + constructor Create(AX1, AY1, AX2, AY2: Integer); + procedure DrawTo(const ADest: TCocoaContext); override; + end; + + TCanvasOperation_Rectangle = class(TCanvasOperation_Pen_Brush) + public + X1, Y1, X2, Y2: Integer; + constructor Create(AX1, AY1, AX2, AY2: Integer); + procedure DrawTo(const ADest: TCocoaContext); override; + end; + + TCanvasOperation_TextOut = class(TCanvasOperation_Font) + public + X, Y: Integer; + Text: string; + constructor Create(AX, AY: Integer; AText: string); + procedure DrawTo(const ADest: TCocoaContext); override; + end; + + { TCocoaPrinterCanvas } + + TCocoaPrinterCanvas = class(TFilePrinterCanvas) + private + FLazClipRect: TRect; + FRecordingPages: TFPObjectList; // list of 1 (FCurRecording: TFPObjectList) per page + FCurRecording: TFPObjectList; // this is the current recording + function SetCurPage(APageNum: Integer): Boolean; + function GetOperationCount: Integer; + function GetOperation(ANum: Integer): TCanvasOperation; + procedure SetPenProperties(ADest: TCanvasOperation_Pen); + procedure SetBrushProperties(ADest: TCanvasOperation_Pen_Brush); + procedure SetFontProperties(ADest: TCanvasOperation_Font); + procedure SetPenAndBrush(ADest: TCanvasOperation_Pen_Brush); + procedure SetFontAndBrush(ADest: TCanvasOperation_Font); + protected + ScaleX, ScaleY, FontScale: Double; + procedure SetLazClipRect(r: TRect); + procedure DoLineTo(X1,Y1: Integer); override; + procedure DoMoveTo({%H-}x, {%H-}y: integer); override; + procedure SetHandle(NewHandle: HDC); override; + function GetClipRect: TRect; override; + procedure SetClipRect(const ARect: TRect); override; + function GetClipping: Boolean; override; + procedure SetClipping(const AValue: boolean); override; + // + procedure CreateBrush; override; + procedure CreateFont; override; + procedure CreateHandle; override; + procedure CreatePen; override; + procedure CreateRegion; override; + procedure RealizeAntialiasing; override; + procedure DestroyHandle; + public + SurfaceXDPI, SurfaceYDPI: Integer; + constructor Create(APrinter : TPrinter); override; + constructor Create; overload; + destructor Destroy; override; + procedure BeginDoc; override; + procedure EndDoc; override; + procedure NewPage; override; + procedure FillRect(const ARect: TRect); override; + procedure Rectangle(X1,Y1,X2,Y2: Integer); override; + procedure Polyline(Points: PPoint; NumPts: Integer); override; + procedure Polygon(Points: PPoint; NumPts: Integer; {%H-}Winding: boolean = False); override; + procedure FrameRect(const ARect: TRect); override; + procedure Frame(const ARect: TRect); override; + procedure RoundRect(X1, Y1, X2, Y2: Integer; RX, RY: Integer); override; + procedure Ellipse(X1, Y1, X2, Y2: Integer); override; + procedure Arc(ALeft, ATop, ARight, ABottom, Angle16Deg, Angle16DegLength: Integer); override; + procedure Arc(ALeft, ATop, ARight, ABottom, StX, StY, EX, EY: Integer); override; + procedure Chord(X1, Y1, X2, Y2, Angle1, Angle2: Integer); override; + procedure Chord(X1, Y1, X2, Y2, StX, StY, EX, EY: Integer); override; + procedure Pie(EllipseX1, EllipseY1, EllipseX2, EllipseY2, StartX, StartY, EndX, EndY: Integer); override; + procedure RadialPie(Left, Top, Right, Bottom, Angle1, Angle2: Integer); override; + procedure PolyBezier(Points: PPoint; NumPts: Integer; Filled: boolean = False; Continuous: boolean = False); override; + procedure TextOut(X,Y: Integer; const Text: String); override; + procedure TextRect(ARect: TRect; X1, Y1: integer; const Text: string; const Style: TTextStyle); override; + function TextExtent(const Text: string): TSize; override; + function GetTextMetrics(out M: TLCLTextMetric): boolean; override; + procedure StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); override; + procedure SetPixel(X,Y: Integer; Value: TColor); override; + public + procedure DrawRecording(const ADest: NSView; dirtyRect: NSRect; APageNum: Integer); + end; + +implementation + +{ TCanvasOperation_Pen } + +procedure TCanvasOperation_Pen.DrawTo(const ADest: TCocoaContext); +var + lCocoaPen: TCocoaPen; +begin + if DisablePen then Exit; + + lCocoaPen := TCocoaPen.Create(Pen_Color, Pen_Style, Pen_Cosmetic, + Pen_Width, Pen_Mode, Pen_EndCap, Pen_JoinStyle); + lCocoaPen.Apply(ADest); + lCocoaPen.Free; +end; + +{ TCanvasOperation_Pen_Brush } + +procedure TCanvasOperation_Pen_Brush.DrawTo(const ADest: TCocoaContext); +var + lCocoaBrush: TCocoaBrush; +begin + inherited DrawTo(ADest); + lCocoaBrush := TCocoaBrush.Create(Brush_Color, Brush_Style, Brush_Pattern); + lCocoaBrush.Apply(ADest); + lCocoaBrush.Free; +end; + +{ TCanvasOperation_Font } + +procedure TCanvasOperation_Font.DrawTo(const ADest: TCocoaContext); +const + LF_BOOL: array[Boolean] of Byte = (0, 255); + LF_WEIGHT: array[Boolean] of Integer = (FW_NORMAL, FW_BOLD); + LF_QUALITY: array[TFontQuality] of Integer = (DEFAULT_QUALITY, + DRAFT_QUALITY, PROOF_QUALITY, NONANTIALIASED_QUALITY, ANTIALIASED_QUALITY, + CLEARTYPE_QUALITY, CLEARTYPE_NATURAL_QUALITY); +var + lLogFont: TLogFont; + lCocoaFont: TCocoaFont; +begin + lLogFont.lfHeight := Font_Size; + lLogFont.lfWidth := 0; + lLogFont.lfEscapement := Font_Orientation; + lLogFont.lfOrientation := Font_Orientation; + lLogFont.lfWeight := LF_WEIGHT[Font_Bold]; + lLogFont.lfItalic := LF_BOOL[Font_Italic]; + lLogFont.lfUnderline := LF_BOOL[Font_Underline]; + lLogFont.lfStrikeOut := LF_BOOL[Font_StrikeThrough]; + lLogFont.lfCharSet := DEFAULT_CHARSET; + lLogFont.lfOutPrecision := OUT_DEFAULT_PRECIS; + lLogFont.lfClipPrecision := CLIP_DEFAULT_PRECIS; + lLogFont.lfQuality := LF_QUALITY[Font_Quality]; + case Font_Pitch of + fpVariable: lLogFont.lfPitchAndFamily := VARIABLE_PITCH; + fpFixed: lLogFont.lfPitchAndFamily := FIXED_PITCH; + else + lLogFont.lfPitchAndFamily := DEFAULT_PITCH; + end; + + lLogFont.lfFaceName := Font_Name; + + {lCocoaFont := TCocoaFont.Create(lLogFont, Font_Name); + ADest.Font.Free; + ADest.Font := lCocoaFont;} + + inherited DrawTo(ADest); +end; + +{ TCanvasOperation_Ellipse } + +constructor TCanvasOperation_Ellipse.Create(AX1, AY1, AX2, AY2: Integer); +begin + inherited Create; + X1 := AX1; + Y1 := AY1; + X2 := AX2; + Y2 := AY2; +end; + +procedure TCanvasOperation_Ellipse.DrawTo(const ADest: TCocoaContext); +begin + inherited DrawTo(ADest); // apply pen and brush + ADest.Ellipse(X1, Y1, X2, Y2); +end; + +{ TCanvasOperation_Rectangle } + +constructor TCanvasOperation_Rectangle.Create(AX1, AY1, AX2, AY2: Integer); +begin + inherited Create; + X1 := AX1; + Y1 := AY1; + X2 := AX2; + Y2 := AY2; +end; + +procedure TCanvasOperation_Rectangle.DrawTo(const ADest: TCocoaContext); +begin + inherited DrawTo(ADest); // apply pen and brush + ADest.Rectangle(X1, Y1, X2, Y2, True, nil); +end; + +{ TCanvasOperation_TextOut } + +constructor TCanvasOperation_TextOut.Create(AX, AY: Integer; AText: string); +begin + inherited Create; + DisablePen := True; + X := AX; + Y := AY; + Text := AText; +end; + +procedure TCanvasOperation_TextOut.DrawTo(const ADest: TCocoaContext); +begin + inherited DrawTo(ADest); // apply pen and brush + ADest.TextOut(X, Y, 0, nil, PChar(Text), Length(Text), nil); +end; + +{ TCocoaPrinterCanvas } + +function TCocoaPrinterCanvas.SetCurPage(APageNum: Integer): Boolean; +begin + Result := False; + if (APageNum < 0) or (APageNum >= FRecordingPages.Count) then Exit; + FCurRecording := TFPObjectList(FRecordingPages.Items[APageNum]); + Result := True; +end; + +function TCocoaPrinterCanvas.GetOperationCount: Integer; +begin + Result := FCurRecording.Count; +end; + +function TCocoaPrinterCanvas.GetOperation(ANum: Integer): TCanvasOperation; +begin + Result := TCanvasOperation(FCurRecording.Items[ANum]); +end; + +procedure TCocoaPrinterCanvas.SetPenProperties(ADest: TCanvasOperation_Pen); +begin + ADest.Pen_Color := Pen.Color; + ADest.Pen_Cosmetic := Pen.Cosmetic; + ADest.Pen_Style := Pen.Style; + ADest.Pen_Width := Pen.Width; + ADest.Pen_Mode := Pen.Mode; + ADest.Pen_EndCap := Pen.EndCap; + ADest.Pen_JoinStyle := Pen.JoinStyle; +end; + +procedure TCocoaPrinterCanvas.SetBrushProperties(ADest: TCanvasOperation_Pen_Brush); +begin + ADest.Brush_Color := Brush.Color; + ADest.Brush_Style := Brush.Style; + ADest.Brush_Pattern := Brush.Pattern; +end; + +procedure TCocoaPrinterCanvas.SetFontProperties(ADest: TCanvasOperation_Font); +begin +end; + +procedure TCocoaPrinterCanvas.SetPenAndBrush(ADest: TCanvasOperation_Pen_Brush); +begin + SetPenProperties(ADest); + SetBrushProperties(ADest); +end; + +procedure TCocoaPrinterCanvas.SetFontAndBrush(ADest: TCanvasOperation_Font); +begin + SetBrushProperties(ADest); + SetFontProperties(ADest); +end; + +procedure TCocoaPrinterCanvas.DoLineTo(X1, Y1: Integer); +begin + {Changing; + RequiredState([csHandleValid, csPenValid]); + SetPenProperties; + cairo_move_to(cr, SX(PenPos.X), SY(PenPos.Y)); + cairo_line_to(cr, SX(X1), SY(Y1)); + SetInternalPenPos(Point(X1,Y1)); + StrokeOnly; + Changed;} +end; + +procedure TCocoaPrinterCanvas.DoMoveTo(x, y: integer); +begin + // should not call inherited DoMoveTo which would end calling + // interface MoveToEx which breaks things for Qt +end; + +procedure TCocoaPrinterCanvas.SetHandle(NewHandle: HDC); +begin + inherited SetHandle(NewHandle); +end; + +procedure TCocoaPrinterCanvas.BeginDoc; +begin + inherited BeginDoc; + if assigned(printer) then + FLazClipRect:=printer.PaperSize.PaperRect.WorkRect; +end; + +procedure TCocoaPrinterCanvas.EndDoc; +begin + inherited EndDoc; + {cairo_show_page(cr); + FLazClipRect := Rect(0, 0, 0, 0); + //if caller is printer, then at the end destroy cairo handles (flush output) + //and establishes CreateCairoHandle call on the next print} + Handle := 0; +end; + +procedure TCocoaPrinterCanvas.NewPage; +begin + inherited NewPage; + //cairo_show_page(cr); +end; + +procedure TCocoaPrinterCanvas.CreateBrush; +begin +end; + +procedure TCocoaPrinterCanvas.CreateFont; +begin +end; + +procedure TCocoaPrinterCanvas.CreateHandle; +begin + ScaleX := SurfaceXDPI/XDPI; + ScaleY := SurfaceYDPI/YDPI; + + if FRecordingPages = nil then + begin + FCurRecording := TFPObjectList.Create; + FRecordingPages := TFPObjectList.Create; + FRecordingPages.Add(FCurRecording); + end; + Handle := HWND(FRecordingPages); +end; + +procedure TCocoaPrinterCanvas.CreatePen; +begin +end; + +procedure TCocoaPrinterCanvas.CreateRegion; +begin +end; + +procedure TCocoaPrinterCanvas.RealizeAntialiasing; +begin +end; + +procedure TCocoaPrinterCanvas.DestroyHandle; +var + i: Integer; +begin + for i := 0 to FRecordingPages.Count-1 do + FRecordingPages.Items[i].Free; + FCurRecording := nil; +end; + +function TCocoaPrinterCanvas.GetClipRect: TRect; +var + x1,y1,x2,y2: double; +begin + RequiredState([csHandleValid]); + + {// it doesn't matter what the clip is in use, default or user + // this returns always the current clip + + result.Left:=round(x1/ScaleX); + result.Top:=round(y1/ScaleY); + result.Right:=round(x2/ScaleX); + result.Bottom:=round(y2/ScaleY);} +end; + +procedure TCocoaPrinterCanvas.SetClipRect(const ARect: TRect); +begin + {RequiredState([csHandleValid]); + if FUserClipRect=nil then + New(FUserClipRect); + + fUserClipRect^.x := SX(ARect.Left); + fUserClipRect^.y := SY(ARect.Top); + fUserClipRect^.width := SX2(ARect.Right-ARect.Left); + fUserClipRect^.height:= SY2(ARect.Bottom-ARect.Top); + } +end; + +function TCocoaPrinterCanvas.GetClipping: Boolean; +begin + //result := (fUserClipRect<>nil); +end; + +procedure TCocoaPrinterCanvas.SetClipping(const AValue: boolean); +begin + RequiredState([csHandleValid]); + {cairo_reset_clip(cr); + + if not AValue then begin + // free user cliprect if exists + if fUserClipRect<>nil then + Dispose(fUserClipRect); + fUserClipRect := nil; + end + else begin + if fUserClipRect<>nil then + begin + with fUserClipRect^ do + begin + cairo_rectangle(cr, x, y, width, height); + cairo_clip(cr); + end; + end else + ; // cairo_reset_clip always clip + end;} +end; + +procedure TCocoaPrinterCanvas.SetLazClipRect(r: TRect); +begin + FLazClipRect := r; +end; + +constructor TCocoaPrinterCanvas.Create(APrinter: TPrinter); +begin + inherited Create(APrinter); + ScaleX := 1; + ScaleY := 1; + FontScale := 1; + SurfaceXDPI := 72; + SurfaceYDPI := 72; + XDPI := SurfaceXDPI; + YDPI := SurfaceXDPI; + + CreateHandle; +end; + +constructor TCocoaPrinterCanvas.Create; +begin + Create(nil); +end; + +destructor TCocoaPrinterCanvas.Destroy; +begin + DestroyHandle; + + inherited Destroy; +end; + +procedure TCocoaPrinterCanvas.Rectangle(X1, Y1, X2, Y2: Integer); +var + lRect: TCanvasOperation_Rectangle; +begin + Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + lRect := TCanvasOperation_Rectangle.Create(X1, Y1, X2, Y2); + SetPenAndBrush(lRect); + FCurRecording.Add(lRect); + Changed; +end; + +//1 point rectangle in _Brush_ color +procedure TCocoaPrinterCanvas.FrameRect(const ARect: TRect); +begin + {Changing; + RequiredState([csHandleValid, csBrushValid]); + cairo_rectangle(cr, SX(ARect.Left), SY(ARect.Top), SX2(ARect.Right-ARect.Left), SY2(ARect.Bottom-ARect.Top)); + SetSourceColor(Brush.Color); + cairo_set_line_width(cr, 1); + cairo_stroke(cr); //Don't touch + Changed;} +end; + +procedure TCocoaPrinterCanvas.Frame(const ARect: TRect); +begin + {Changing; + RequiredState([csHandleValid, csPenValid]); + cairo_rectangle(cr, SX(ARect.Left), SY(ARect.Top), SX2(ARect.Right-ARect.Left), SY2(ARect.Bottom-ARect.Top)); + cairo_set_line_width(cr, 1); + SetSourceColor(Pen.Color); + cairo_stroke(cr); //Don't touch + Changed;} +end; + +procedure TCocoaPrinterCanvas.RoundRect(X1, Y1, X2, Y2: Integer; RX, RY: Integer); +begin + {Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + cairo_move_to(cr, SX(X1+RX), SY(Y1)); + cairo_line_to(cr, SX(X2-RX), SY(Y1)); + EllipseArcPath(X2-RX, Y1+RY, RX, RY, -PI/2, 0, True, True); + cairo_line_to(cr, SX(X2), SY(Y2-RY)); + EllipseArcPath(X2-RX, Y2-RY, RX, RY, 0, PI/2, True, True); + cairo_line_to(cr, SX(X1+RX), SY(Y2)); + EllipseArcPath(X1+RX, Y2-RY, RX, RY, PI/2, PI, True, True); + cairo_line_to(cr, SX(X1), SY(Y1+RX)); + EllipseArcPath(X1+RX, Y1+RY, RX, RY, PI, PI*1.5, True, True); + FillAndStroke; + Changed;} +end; + +procedure TCocoaPrinterCanvas.Ellipse(X1, Y1, X2, Y2: Integer); +var + lEllipse: TCanvasOperation_Ellipse; +begin + Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + lEllipse := TCanvasOperation_Ellipse.Create(X1, Y1, X2, Y2); + SetPenAndBrush(lEllipse); + FCurRecording.Add(lEllipse); + Changed; +end; + +procedure TCocoaPrinterCanvas.Arc(ALeft, ATop, ARight, ABottom, Angle16Deg, Angle16DegLength: Integer); +begin + {Changing; + RequiredState([csHandleValid, csPenValid]); + ArcPath(ALeft, ATop, ARight, ABottom, Angle16Deg, Angle16DegLength); + StrokeOnly; + Changed;} +end; + +procedure TCocoaPrinterCanvas.Chord(X1, Y1, X2, Y2, Angle1, Angle2: Integer); +begin + {Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + ArcPath(X1, Y1, X2, Y2, Angle1, Angle2); + cairo_close_path(cr); + FillAndStroke; + Changed;} +end; + +procedure TCocoaPrinterCanvas.RadialPie(Left, Top, Right, Bottom, Angle1, Angle2: Integer); +{var + cx, cy: double;} +begin + {Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + ArcPath(Left, Top, Right, Bottom, Angle1, Angle2); + cx := (Right+Left)/2; + cy := (Bottom+Top)/2; + cairo_line_to(cr, SX(cx), SY(cy)); + cairo_close_path(cr); + FillAndStroke; + Changed;} +end; + +procedure TCocoaPrinterCanvas.Arc(ALeft, ATop, ARight, ABottom, StX, StY, EX, EY: Integer); +begin + {Changing; + RequiredState([csHandleValid, csPenValid]); + ArcPath(ALeft, ATop, ARight, ABottom, StX, StY, EX, EY); + StrokeOnly; + Changed;} +end; + +procedure TCocoaPrinterCanvas.Chord(X1, Y1, X2, Y2, StX, StY, EX, EY: Integer); +begin + {Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + ArcPath(X1, Y1, X2, Y2, StX, StY, EX, EY); + cairo_close_path(cr); + FillAndStroke; + Changed;} +end; + +procedure TCocoaPrinterCanvas.Pie(EllipseX1, EllipseY1, EllipseX2, EllipseY2, + StartX, StartY, EndX, EndY: Integer); +var + cx, cy: double; +begin + {Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + ArcPath(EllipseX1, EllipseY1, EllipseX2, EllipseY2, StartX, StartY, EndX, EndY); + cx := (EllipseX2+EllipseX1)/2; + cy := (EllipseY2+EllipseY1)/2; + cairo_line_to(cr, SX(cx), SY(cy)); + cairo_close_path(cr); + FillAndStroke; + Changed;} +end; + +procedure TCocoaPrinterCanvas.PolyBezier(Points: PPoint; NumPts: Integer; Filled: boolean; Continuous: boolean); +begin +end; + +procedure TCocoaPrinterCanvas.TextOut(X, Y: Integer; const Text: String); +var + lText: TCanvasOperation_TextOut; +begin + Changing; + RequiredState([csHandleValid, csPenValid, csBrushValid]); + lText := TCanvasOperation_TextOut.Create(X, Y, Text); + SetFontAndBrush(lText); + FCurRecording.Add(lText); + Changed; +end; + +procedure TCocoaPrinterCanvas.TextRect(ARect: TRect; X1, Y1: integer; const Text: string; const Style: TTextStyle); +var + s: string; +begin + Changing; + RequiredState([csHandleValid, csFontValid, csBrushValid]); + Changed; +end; + +function TCocoaPrinterCanvas.TextExtent(const Text: string): TSize; +begin + RequiredState([csHandleValid, csFontValid]); + //SelectFont; +end; + +function TCocoaPrinterCanvas.GetTextMetrics(out M: TLCLTextMetric): boolean; +begin + {RequiredState([csHandleValid, csFontValid]); + SelectFont; + cairo_font_extents(cr, @e); //transformation matrix is here ignored + FillChar(M{%H-}, SizeOf(M), 0); + M.Ascender := Round(e.ascent/ScaleY); + M.Descender := Round(e.descent/ScaleY); + M.Height := Round(e.height/ScaleY); + Result := True;} +end; + +procedure TCocoaPrinterCanvas.StretchDraw(const DestRect: TRect; SrcGraphic: TGraphic); +begin +end; + +procedure TCocoaPrinterCanvas.SetPixel(X, Y: Integer; Value: TColor); +begin + {Changing; + RequiredState([csHandleValid, csPenValid]); + SetSourceColor(Value); + cairo_rectangle(cr, SX(X), SY(Y), 1, 1); + cairo_fill(cr); + Changed;} +end; + +procedure TCocoaPrinterCanvas.Polyline(Points: PPoint; NumPts: Integer); +begin + {if NumPts <= 0 then + Exit; + Changing; + RequiredState([csHandleValid, csPenValid]); + PolylinePath(Points, NumPts); + StrokeOnly; + Changed;} +end; + +procedure TCocoaPrinterCanvas.Polygon(Points: PPoint; NumPts: Integer; Winding: boolean); +begin + {if NumPts <= 0 then + Exit; + Changing; + RequiredState([csHandleValid, csBrushValid, csPenValid]); + PolylinePath(Points, NumPts); + cairo_close_path(cr); + FillAndStroke; + Changed;} +end; + +procedure TCocoaPrinterCanvas.FillRect(const ARect: TRect); +begin + {Changing; + RequiredState([csHandleValid, csBrushValid]); + cairo_rectangle(cr, SX(ARect.Left), SY(ARect.Top), SX2(ARect.Right-ARect.Left), SY2(ARect.Bottom-ARect.Top)); + FillOnly; + Changed;} +end; + +procedure TCocoaPrinterCanvas.DrawRecording(const ADest: NSView; dirtyRect: NSRect; APageNum: Integer); +var + i: Integer; + lCurOperation: TCanvasOperation; + lCocoaContext: TCocoaContext; +begin + if not SetCurPage(APageNum) then Exit; + lCocoaContext := TCocoaContext.Create(NSGraphicsContext.currentContext); + for i := 0 to GetOperationCount()-1 do + begin + lCurOperation := GetOperation(i); + lCurOperation.DrawTo(lCocoaContext); + end; + lCocoaContext.Free; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprinters_h.inc lazarus-1.6+dfsg/components/printers/cocoa/cocoaprinters_h.inc --- lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprinters_h.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/cocoa/cocoaprinters_h.inc 2015-04-14 06:35:26.000000000 +0000 @@ -0,0 +1,111 @@ +{%MainUnit ../osprinters.pas} + +{$modeswitch objectivec1} +{$H+} + +uses + // fpc + MacOSAll, CocoaAll, Classes, SysUtils, + // lcl-widgetset + CocoaUtils, + // lcl + Printers, LCLType, + // Cocoa Print + CocoaPrintCanvas; + +type + { TCocoaPrinterView } + + TCocoaPrinterView = objcclass(NSView) + public + //Image: NSImage; + Canvas: TCocoaPrinterCanvas; + // TPrintDialog info + PageMin, PageMax, PageFrom, PageTo: Integer; + function initWithFrame(frameRect: NSRect): id; override; + procedure dealloc(); override; + // drawing + procedure drawRect(dirtyRect: NSRect); override; + // manual paging, see https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Printing/osxp_pagination/osxp_pagination.html + function knowsPageRange(range: NSRangePointer): Boolean; override; + function rectForPage(page: NSInteger): NSRect; override; + function calculatePrintHeight: Double; message 'calculatePrintHeight'; + function calculatePrintWidth: Double; message 'calculatePrintWidth'; + function updateSize(ADoSetFrame: Boolean): NSRect; message 'updateSize:'; + end; + + { TCocoaPrinter } + + TCocoaPrinter = class(Printers.TPrinter) + private + FDefaultPrinter: String; + FPrintView: TCocoaPrinterView; + FPrintOp: NSPrintOperation; + FPrintInfo: NSPrintInfo; + + function GetCurrentCarbonPrinter: PMPrinter; + function GetPrintSession: PMPrintSession; + function GetPrintSettings: PMPrintSettings; + function GetPageFormat: PMPageFormat; + + function CreatePageFormat(APaper: String): PMPageFormat; + + function ValidatePageFormat: Boolean; + function ValidatePrintSettings: Boolean; + + procedure BeginPage; + procedure EndPage; + + procedure FindDefaultPrinter; + function GetOutputResolution: PMResolution; + + function DoDoGetPaperName(APageFormat: PMPageFormat): string; + + protected + procedure DoBeginDoc; override; + procedure DoNewPage; override; + procedure DoEndDoc(aAborded : Boolean); override; + procedure DoAbort; override; + + procedure DoEnumPrinters(Lst : TStrings); override; + procedure DoResetPrintersList; override; + + procedure DoEnumPapers(Lst : TStrings); override; + function DoGetPaperName(): string; override; + function DoGetDefaultPaperName: string; override; + procedure DoSetPaperName(aName : string); override; + function DoGetPaperRect(aName : string; Var aPaperRc : TPaperRect) : Integer; override; + + function DoSetPrinter(aName : string): Integer; override; + + function DoGetCopies : Integer; override; + procedure DoSetCopies(aValue : Integer); override; + function DoGetOrientation: TPrinterOrientation; override; + procedure DoSetOrientation(aValue : TPrinterOrientation); override; + + function GetXDPI: Integer; override; + function GetYDPI: Integer; override; + function GetPrinterType: TPrinterType; override; + function DoGetPrinterState: TPrinterState; override; + function DoGetDefaultCanvasClass: TPrinterCanvasRef; override; + + function GetCanPrint: Boolean; override; + function GetCanRenderCopies : Boolean; override; + procedure RawModeChanging; override; + procedure DoDestroy; override; + private + procedure Validate; + procedure UpdatePrinter; + public + constructor Create; override; + function Write(const {%H-}Buffer; {%H-}Count:Integer; var {%H-}Written: Integer): Boolean; override; + // Warning not portable properties here + //property CurrentPrinterName: String read GetCurrentPrinterName; + property PrintSession: PMPrintSession read GetPrintSession; + property PrintSettings: PMPrintSettings read GetPrintSettings; + property PageFormat: PMPageFormat read GetPageFormat; + property PrintOperation: NSPrintOperation read FPrintOp; + property PrintInfo: NSPrintInfo read FPrintInfo; + property PrintView: TCocoaPrinterView read FPrintView; + end; + diff -Nru lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprinters.inc lazarus-1.6+dfsg/components/printers/cocoa/cocoaprinters.inc --- lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprinters.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/cocoa/cocoaprinters.inc 2015-04-14 06:35:26.000000000 +0000 @@ -0,0 +1,701 @@ +{%MainUnit ../osprinters.pas} +{************************************************************** +Implementation for carbonprinter +***************************************************************} +uses InterfaceBase, LCLIntf, LCLProc; + +const + CleanPMRect: PMRect = (top: 0; left: 0; bottom: 0; right: 0); + CleanPMOrientation: PMOrientation = 0; + +{ TCocoaPrinterView } + +function TCocoaPrinterView.initWithFrame(frameRect: NSRect): id; +begin + PageMin := 1; + PageMax := 1; + PageFrom := 1; + PageTo := 1; + Result:=inherited initWithFrame(frameRect); + //Image := NSImage.alloc.initWithSize(Size); +end; + +procedure TCocoaPrinterView.dealloc; +begin + //Image.release(); + inherited dealloc(); +end; + +procedure TCocoaPrinterView.drawRect(dirtyRect: NSRect); +var + pageHeight: Double; + lRect: NSRect; + lCurPage: Integer; +begin + // image page printing alternative + //Image.drawInRect_fromRect_operation_fraction(Self.frame, NSZeroRect, NSCompositeSourceAtop, 1.0); + + if Canvas = nil then Exit; + + pageHeight := calculatePrintHeight(); + lRect := updateSize(False); + + // figure out which page this is + lCurPage := Round((lRect.size.height - dirtyRect.origin.y) / pageHeight); + + Canvas.DrawRecording(Self, dirtyRect, lCurPage - PageFrom); +end; + +// Return the number of pages available for printing +function TCocoaPrinterView.knowsPageRange(range: NSRangePointer): Boolean; +begin + updateSize(True); + range^.location := PageFrom; + range^.length := PageTo - PageFrom + 1; + Result := True; +end; + +function TCocoaPrinterView.rectForPage(page: NSInteger): NSRect; +var + lBounds: NSRect; + pageHeight, pageWidth: Double; +begin + pageHeight := calculatePrintHeight(); + pageWidth := calculatePrintWidth(); + // page Y starting pos is Bottom-Left of page 1 - (pagenr-zero-based) * pageHeight, so: + // pageHeight * ((PageTo - PageFrom) - (page - PageFrom)), which simplifies to: + Result := NSMakeRect(0, pageHeight * (PageTo - page), + pageWidth, pageHeight); +end; + +// Calculate the vertical size of the view that fits on a single page +function TCocoaPrinterView.calculatePrintHeight: Double; +var + pi: NSPrintInfo; + paperSize: NSSize; + pageHeight, scale: Double; +begin + // Obtain the print info object for the current operation + pi := NSPrintOperation.currentOperation.printInfo; + + // Calculate the page height in points + paperSize := pi.paperSize; + pageHeight := paperSize.height - pi.topMargin - pi.bottomMargin; + + // Convert height to the scaled view + scale := pi.dictionary.objectForKey(NSPrintScalingFactor).floatValue; + Result := pageHeight / scale; +end; + +function TCocoaPrinterView.calculatePrintWidth: Double; +var + pi: NSPrintInfo; + paperSize: NSSize; + pageWidth, scale: Double; +begin + // Obtain the print info object for the current operation + pi := NSPrintOperation.currentOperation.printInfo; + + // Calculate the page width in points + paperSize := pi.paperSize; + pageWidth := paperSize.width - pi.leftMargin - pi.rightMargin; + + // Convert height to the scaled view + scale := pi.dictionary.objectForKey(NSPrintScalingFactor).floatValue; + Result := pageWidth / scale; +end; + +function TCocoaPrinterView.updateSize(ADoSetFrame: Boolean): NSRect; +var + Size: NSSize; +begin + Size.height := calculatePrintHeight(); + Size.height := Size.height * (PageTo - PageFrom + 1); + Size.width := calculatePrintWidth(); + if ADoSetFrame then + Self.setFrameSize(Size); + Result := NSMakeRect(0, 0, Size.width, Size.height); +end; + +{ TCocoaPrinter } + +function TCocoaPrinter.CreatePageFormat(APaper: String): PMPageFormat; +var + I: Integer; + S: TStringList; +const + SName = 'CreatePageFormat'; +begin +{ if APaper = '' then + begin + I := -1; + S := nil; + end + else + begin + S := TStringList.Create; + BeginEnumPapers(S); + I := S.IndexOf(APaper); + end; + + try + if I < 0 then + begin + Result:=nil; + if OSError(PMCreatePageFormat(Result), Self, SName, 'PMCreatePageFormat') then + raise EPrinter.Create('Error initializing printing for Carbon: Unable to create page format!'); + + OSError(PMSessionDefaultPageFormat(PrintSession, Result), Self, SName, 'PMSessionDefaultPageFormat'); + end + else + begin + OSError(PMCreatePageFormatWithPMPaper(Result, + PMPaper(CFArrayGetValueAtIndex(FPaperArray, I))), + Self, SName, 'PMCreatePageFormatWithPMPaper'); + + end; + finally + if S <> nil then + begin + EndEnumPapers; + S.Free; + end; + end; } +end; + +function TCocoaPrinter.ValidatePageFormat: Boolean; +begin + Result := False; + if PMSessionValidatePageFormat(GetPrintSession(), GetPageFormat(), @Result) <> noErr then Exit; +end; + +function TCocoaPrinter.ValidatePrintSettings: Boolean; +begin + Result := False; + if PMSessionValidatePrintSettings(GetPrintSession(), GetPrintSettings(), @Result) <> noErr then Exit; +end; + +function TCocoaPrinter.GetCurrentCarbonPrinter: PMPrinter; +begin + Result := nil; + if PMSessionGetCurrentPrinter(GetPrintSession(), Result) <> noErr then Exit; + { Result := CFStringToStr(PMPrinterGetName(P)); + if Trim(Result) = '' then + Result := ''; } +end; + +function TCocoaPrinter.GetPrintSession: PMPrintSession; +begin + Result := FPrintInfo.PMPrintSession(); +end; + +function TCocoaPrinter.GetPrintSettings: PMPrintSettings; +begin + Result := FPrintInfo.PMPrintSettings(); +end; + +function TCocoaPrinter.GetPageFormat: PMPageFormat; +begin + Result := FPrintInfo.PMPageFormat(); +end; + +procedure TCocoaPrinter.BeginPage; +{var + PaperRect: PMRect; } +begin + {if FBeginDocumentStatus = noErr then + begin + FNewPageStatus := PMSessionBeginPage(PrintSession, nil, nil); + OSError(FNewPageStatus, Self, 'BeginPage', 'PMSessionBeginPage', '', kPMCancel); + + // update printer context + if OSError(PMSessionGetCGGraphicsContext(PrintSession, FPrinterContext.CGContext), + Self, 'BeginPage', 'PMSessionGetCGGraphicsContext') then + FPrinterContext.Release + else + FPrinterContext.Reset; + + // translate the context from his paper (0,0) origin + // to our working imageable area + if PMGetAdjustedPaperRect(PageFormat, PaperRect{%H-})=noErr then + CGContextTranslateCTM(FPrinterContext.CGContext, -PaperRect.left, -PaperRect.top); + + if Assigned(Canvas) then + Canvas.Handle := HDC(FPrinterContext); + end; } +end; + +procedure TCocoaPrinter.EndPage; +begin + {FPrinterContext.Release; + if Assigned(Canvas) then Canvas.Handle := 0; + + if FBeginDocumentStatus = noErr then + begin + if FNewPageStatus = noErr then + OSError(PMSessionEndPage(PrintSession), Self, 'EndPage', 'PMSessionEndPage', '', kPMCancel); + end; } +end; + +procedure TCocoaPrinter.FindDefaultPrinter; +{var + P: PMPrinter; + I, C: CFIndex; + pa: CFArrayRef; } +begin + {pa:=nil; + if OSError(PMServerCreatePrinterList(kPMServerLocal, pa), + Self, 'DoEnumPrinters', 'PMServerCreatePrinterList') then Exit; + + if not Assigned(pa) then Exit; + + C := CFArrayGetCount(pa); + for I := 0 to C - 1 do + begin + P := CFArrayGetValueAtIndex(pa, I); + + if PMPrinterIsDefault(P) then + begin + FDefaultPrinter := CFStringToStr(PMPrinterGetName(P)); + Break; + end; + end; + CFRelease(pa); } +end; + +constructor TCocoaPrinter.Create; +var + FPrintViewRect: NSRect; +begin + inherited Create; + + FPrintViewRect := GetNSRect(0, 0, 1000, 1000); + FPrintView := TCocoaPrinterView.alloc.initWithFrame(FPrintViewRect); + FPrintView.Canvas := Canvas as TCocoaPrinterCanvas; + + FPrintOp := NSPrintOperation.printOperationWithView(FPrintView); + FPrintInfo := FPrintOp.printInfo(); + + //CreatePrintSettings; + //FPageFormat := CreatePageFormat(''); + //FindDefaultPrinter; + //UpdatePrinter; + + //DebugLn('Current ' + GetCurrentPrinterName); + //DebugLn('Default ' + FDefaultPrinter); +end; + +procedure TCocoaPrinter.DoDestroy; +begin + FPrintView.release(); + + inherited DoDestroy; +end; + +function TCocoaPrinter.Write(const Buffer; Count: Integer; + var Written: Integer): Boolean; +begin + Result := False; + CheckRawMode(True); + + DebugLn('TCocoaPrinter.Write Error: Raw mode is not supported for Cocoa!'); +end; + +procedure TCocoaPrinter.RawModeChanging; +begin + // +end; + +procedure TCocoaPrinter.Validate; +var + P: String; +begin + ValidatePrintSettings(); + ValidatePageFormat(); + + // if target paper is not supported, use the default + P := DoGetPaperName(); + if PaperSize.SupportedPapers.IndexOf(P) = -1 then + DoSetPaperName(DoGetDefaultPaperName()); +end; + +procedure TCocoaPrinter.UpdatePrinter; +{var + s: string; + Res: PMResolution;} +begin + {s := GetCurrentPrinterName; + if trim(s) = '' then // Observed if Default printer set to "Use last printer", and no printing done + s := '*'; // so select lcl default + SetPrinter(s); + // set the page format resolution + Res := GetOutputResolution; + PMSetResolution(PageFormat, Res); + Validate; } +end; + +function TCocoaPrinter.GetOutputResolution: PMResolution; +var + res: OSStatus; + FPrintSettings: PMPrintSettings; +begin + FPrintSettings := GetPrintSettings(); + res := PMPrinterGetOutputResolution(GetCurrentCarbonPrinter(), FPrintSettings, Result); + if res <> noErr then + begin + Result.vRes := 72; + Result.hRes := 72; + end; +end; + +function TCocoaPrinter.DoDoGetPaperName(APageFormat: PMPageFormat): string; +var + FPaper: PMPaper = nil; + lCFString: CFStringRef = nil; +begin + Result := ''; + if APageFormat = nil then APageFormat := GetPageFormat(); + if PMGetPageFormatPaper(APageFormat, FPaper) <> noErr then Exit; + if PMPaperGetName(FPaper, lCFString) <> noErr then Exit; + + Result := CFStringToStr(lCFString); +end; + +function TCocoaPrinter.GetXDPI: Integer; +var + dpi: PMResolution; +begin + dpi := GetOutputResolution; + result := round(dpi.hRes); +end; + +function TCocoaPrinter.GetYDPI: Integer; +var + dpi: PMResolution; +begin + dpi := GetOutputResolution; + result := round(dpi.hRes); +end; + +procedure TCocoaPrinter.DoBeginDoc; +begin + inherited DoBeginDoc; + + //DebugLn('TCocoaPrinter.DoBeginDoc ' + DbgS(Printing)); + Validate; + + //FBeginDocumentStatus := PMSessionBeginCGDocument(PrintSession, PrintSettings, PageFormat); + //OSError(FBeginDocumentStatus, Self, 'DoBeginDoc', 'PMSessionBeginCGDocument', '', kPMCancel); + + BeginPage; +end; + +procedure TCocoaPrinter.DoNewPage; +begin + inherited DoNewPage; + + EndPage; + BeginPage; +end; + +procedure TCocoaPrinter.DoEndDoc(aAborded: Boolean); +begin + inherited DoEndDoc(aAborded); + + EndPage; + FPrintOp.setShowsPrintPanel(False); + FPrintOp.runOperation(); +end; + +procedure TCocoaPrinter.DoAbort; +begin + inherited DoAbort; + + //OSError(PMSessionSetError(PrintSession, kPMCancel), Self, 'DoAbort', 'PMSessionSetError'); +end; + +//Enum all defined printers. First printer it's default +procedure TCocoaPrinter.DoEnumPrinters(Lst: TStrings); +var + I, PrinterCount: CFIndex; + NewPrinterNSName: NSString; + NewPrinterName: String; + FPrinterArray: NSArray; + //NewPrinter: NSPrinter; +begin + FPrinterArray := NSPrinter.printerNames(); + FPrinterArray.retain; + if FPrinterArray = nil then Exit; + + for I := 0 to FPrinterArray.count - 1 do + begin + NewPrinterNSName := NSString(FPrinterArray.objectAtIndex(i)); + NewPrinterName := NSStringToString(NewPrinterNSName); + + // Felipe: This could be used for appending the printer to the TStrings, but what for? + // also it would be hard to release the NSPrinter later + //NewPrinter := NSPrinter.printerWithName(NewPrinterNSName); + //NewPrinter.retain; + + //DebugLn(DbgS(I) + ' ' + PrinterName); + if NewPrinterName = FDefaultPrinter then + Lst.InsertObject(0, NewPrinterName, nil{TObject(NewPrinter)}) + else + Lst.AddObject(NewPrinterName, nil{TObject(NewPrinter)}); + end; +end; + +procedure TCocoaPrinter.DoResetPrintersList; +begin + inherited DoResetPrintersList; +end; + +// Cocoa doesn't support this =( We need to use Carbon here +// http://lists.apple.com/archives/cocoa-dev/2005/Nov/msg01227.html +// See Also "Using Cocoa and Core Printing Together" +// https://developer.apple.com/library/mac/technotes/tn2248/_index.html +procedure TCocoaPrinter.DoEnumPapers(Lst: TStrings); +var + P: PMPaper; + FPaperArray: CFArrayRef; + I, C: CFIndex; + CFString: CFStringRef; + PaperName: String; + CarbonCurrentPrinter: PMPrinter; +begin + FPaperArray := nil; + + CarbonCurrentPrinter := GetCurrentCarbonPrinter(); + + if PMPrinterGetPaperList(CarbonCurrentPrinter, FPaperArray) <> noErr then Exit; + FPaperArray := CFRetain(FPaperArray); + + C := CFArrayGetCount(FPaperArray); + for I := 0 to C - 1 do + begin + P := CFArrayGetValueAtIndex(FPaperArray, I); + CFString:=nil; + if PMPaperGetName(P, CFString) <> noErr then Continue; + PaperName := CFStringToStr(CFString); + Lst.Add(PaperName); + end; + + if FPaperArray<>nil then + CFRelease(FPaperArray); +end; + +function TCocoaPrinter.DoGetPaperName: string; +begin + Result := DoDoGetPaperName(FPrintInfo.PMPageFormat()); +end; + +function TCocoaPrinter.DoGetDefaultPaperName: string; +var + FPageFormat: PMPageFormat; +begin + Result := ''; + + FPageFormat := CreatePageFormat(''); + Result := DoDoGetPaperName(FPageFormat); +end; + +procedure TCocoaPrinter.DoSetPaperName(aName: string); +var + FOrientation: TPrinterOrientation; +begin + FOrientation := DoGetOrientation(); + {if FPageFormat <> nil then PMRelease(PMObject(FPageFormat)); + + FPageFormat := CreatePageFormat(AName); + DoSetOrientation(FOrientation);} + + ValidatePageFormat; +end; + +function TCocoaPrinter.DoGetPaperRect(aName: string; var aPaperRc: TPaperRect + ): Integer; +{var + T: PMPageFormat; + PaperRect, PageRect: PMRect; + S: Double; + O: PMOrientation; + Res: PMResolution; +const + SName = 'DoGetPaperRect'; } +begin + {Result := -1; + + T := CreatePageFormat(AName); + try + // copy scale + S:=0.0; + OSError(PMGetScale(PageFormat, S), Self, SName, 'PMGetScale'); + OSError(PMSetScale(T, S), Self, SName, 'PMSetScale'); + + // copy orientation + O:=CleanPMOrientation; + OSError(PMGetOrientation(PageFormat, O), Self, SName, 'PMGetOrientation'); + OSError(PMSetOrientation(T, O, False), Self, SName, 'PMSetOrientation'); + + // copy resolution + Res := GetOutputResolution; + OSError(PMSetResolution(T, Res), self, SName, 'PMSetResolution'); + + // update + OSError(PMSessionValidatePageFormat(PrintSession, T, nil), + Self, SName, 'PMSessionValidatePageFormat'); + + PaperRect:=CleanPMRect; + OSError(PMGetAdjustedPaperRect(T, PaperRect), Self, SName, 'PMGetAdjustedPaperRect'); + PageRect:=CleanPMRect; + OSError(PMGetAdjustedPageRect(T, PageRect), Self, SName, 'PMGetAdjustedPageRect'); + finally + PMRelease(PMObject(T)); + end; + + ValidatePageFormat; + + APaperRc.PhysicalRect.Left := 0; + APaperRc.PhysicalRect.Top := 0; + APaperRc.PhysicalRect.Right := Round(PaperRect.right - PaperRect.left); + APaperRc.PhysicalRect.Bottom := Round(PaperRect.bottom - PaperRect.top); + + APaperRc.WorkRect.Left := Round(-PaperRect.left); + APaperRc.WorkRect.Top := Round(-PaperRect.top); + APaperRc.WorkRect.Right := Round(PageRect.right - PageRect.left - PaperRect.left); + APaperRc.WorkRect.Bottom := Round(PageRect.bottom - PageRect.top - PaperRect.top); + + Result := 1; } +end; + +function TCocoaPrinter.DoSetPrinter(aName: string): Integer; +{var + S: TStringList; + P: PMPrinter; } +begin + {S := TStringList.Create; + BeginEnumPrinters(S); + try + Result := S.IndexOf(AName); + if Result >= 0 then + begin + //DebugLn('DoSetPrinter ' + DbgS(Result)); + //DebugLn('TCocoaPrinter.DoSetPrinter ' + AName + ' ' + DbgS(PrintSession) + ' ' + DbgS(Printers.Objects[Result])); + P := PMPrinter(CFArrayGetValueAtIndex(FPrinterArray, Integer(S.Objects[Result]))); + PMRetain(PMObject(P)); + if OSError(PMSessionSetCurrentPMPrinter(PrintSession, P), + Self, 'DoSetPrinter', 'PMSessionSetCurrentPMPrinter') then + raise EPrinter.CreateFmt('The system is unable to select printer "%s"!', [AName]); + end; + finally + EndEnumPrinters; + S.Free; + end; } +end; + +function TCocoaPrinter.DoGetCopies: Integer; +var + NumCopies: UInt32; +begin + Result := inherited DoGetCopies; + NumCopies := 0; + if PMGetCopies(GetPrintSettings(), NumCopies) <> noErr then Exit; + Result := NumCopies; +end; + +procedure TCocoaPrinter.DoSetCopies(aValue: Integer); +begin + inherited DoSetCopies(AValue); + if PMSetCopies(GetPrintSettings(), AValue, False) <> noErr then Exit; + FPrintInfo.updateFromPMPrintSettings(); + + ValidatePrintSettings; +end; + +function TCocoaPrinter.DoGetOrientation: TPrinterOrientation; +var + FOrientation: PMOrientation; + FPageFormat: PMPageFormat; +begin + Result := inherited DoGetOrientation; + FOrientation := CleanPMOrientation; + FPageFormat := FPrintInfo.PMPageFormat(); + if PMGetOrientation(FPageFormat, FOrientation) <> noErr then Exit; + + case FOrientation of + kPMPortrait: Result := poPortrait; + kPMLandscape: Result := poLandscape; + kPMReversePortrait: Result := poReversePortrait; + kPMReverseLandscape: Result := poReverseLandscape; + end; +end; + +procedure TCocoaPrinter.DoSetOrientation(aValue: TPrinterOrientation); +var + FOrientation: PMOrientation; + FPageFormat: PMPageFormat; +begin + inherited DoSetOrientation(aValue); + + case AValue of + poPortrait: FOrientation := kPMPortrait; + poLandscape: FOrientation := kPMLandscape; + poReversePortrait: FOrientation := kPMReversePortrait; + poReverseLandscape: FOrientation := kPMReverseLandscape; + end; + + FPageFormat := FPrintInfo.PMPageFormat(); + PMSetOrientation(FPageFormat, FOrientation, kPMUnlocked); + FPrintInfo.updateFromPMPageFormat(); + ValidatePageFormat; +end; + +function TCocoaPrinter.GetPrinterType: TPrinterType; +var + IsRemote: Boolean; +begin + Result := ptLocal; + IsRemote := false; + if PMPrinterIsRemote(GetCurrentCarbonPrinter(), IsRemote) <> noErr then Exit; + if IsRemote then Result := ptNetwork; +end; + + +function TCocoaPrinter.DoGetPrinterState: TPrinterState; +var + State: PMPrinterState; +begin + Result := psNoDefine; + + State:=0; + if PMPrinterGetState(GetCurrentCarbonPrinter(), State) <> noErr then Exit; + + case State of + kPMPrinterIdle: Result := psReady; + kPMPrinterProcessing: Result := psPrinting; + kPMPrinterStopped: Result := psStopped; + end; +end; + +function TCocoaPrinter.DoGetDefaultCanvasClass: TPrinterCanvasRef; +begin + Result := TCocoaPrinterCanvas; +end; + +function TCocoaPrinter.GetCanPrint: Boolean; +begin + Result := (DoGetPrinterState() <> psStopped); +end; + +function TCocoaPrinter.GetCanRenderCopies: Boolean; +begin + Result := True; +end; + +initialization + + Printer := TCocoaPrinter.Create; + +finalization + + FreeAndNil(Printer); diff -Nru lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprndialogs.inc lazarus-1.6+dfsg/components/printers/cocoa/cocoaprndialogs.inc --- lazarus-1.4.4+dfsg/components/printers/cocoa/cocoaprndialogs.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/cocoa/cocoaprndialogs.inc 2015-04-10 07:28:57.000000000 +0000 @@ -0,0 +1,127 @@ +{%MainUnit ../printersdlgs.pp} + + +const + SExecute = 'Execute'; + +{ TPageSetupDialog } + +function TPageSetupDialog.Execute: Boolean; +var + CocoaPrinter: TCocoaPrinter; +begin + Result := False; + // TODO: set and get paper margins, title + + if not Assigned(Printer) then Exit; + + CocoaPrinter := Printer as TCocoaPrinter; + +{ if OSError(PMSessionPageSetupDialog(CarbonPrinter.PrintSession, + CarbonPrinter.PageFormat, Result), + Self, SExecute, 'PMSessionPageSetupDialog') then Exit; + + if Result then CarbonPrinter.Validate; } +end; + + +{ TPrinterSetupDialog } + +function TPrinterSetupDialog.Execute: Boolean; +begin + Result := False; + if not Assigned(Printer) then Exit; + if Printer.Printers.Count <= 0 then Exit; + + raise Printers.EPrinter.Create('TPrinterSetupDialog is not supported in Cocoa!'); +end; + + +{ TPrintDialog } + +function TPrintDialog.Execute: Boolean; +var + CocoaPrinter: TCocoaPrinter; + PrintPanel: NSPrintPanel; + PrintPanelInfo: NSPrintInfo; + PrintSettings: PMPrintSettings; + V: UInt32; + B: Boolean; + PMin, PMax, PFrom, PTo: Integer; + lDialogResult: NSInteger; +begin + Result := False; + // TODO: Options, Title + + if not Assigned(Printer) then Exit; + + CocoaPrinter := Printer as TCocoaPrinter; + //DebugLn('TPrintDialog.Execute ' + CarbonPrinter.CurrentPrinterName); + + // Create the panel and the info object + PrintPanel := NSPrintPanel.printPanel(); + PrintPanelInfo := NSPrintInfo.alloc.initWithDictionary(NSDictionary.dictionary()); + try + // Set all properties + PrintSettings := PrintPanelInfo.PMPrintSettings(); + + PMSetCollate(PrintSettings, Collate); + PMSetCopies(PrintSettings, Copies, False); + + PMin := MinPage; + PMax := Max(PMin, MaxPage); + PFrom := Min(Max(FromPage, PMin), PMax); + PTo := Max(PFrom, Min(ToPage, PMax)); + + PMSetPageRange(PrintSettings, PMin, PMax); + if PrintRange <> prAllPages then + begin + PMSetFirstPage(PrintSettings, PFrom, False); + PMSetLastPage(PrintSettings, PTo, False); + end; + + // Run the dialog + PrintPanelInfo.updateFromPMPrintSettings(); + lDialogResult := PrintPanel.runModalWithPrintInfo(PrintPanelInfo); + + if lDialogResult = NSOKButton then // NSCancelButton for Cancel + begin + Result := True; + + PrintSettings := PrintPanelInfo.PMPrintSettings(); + + B := Collate; + PMGetCollate(PrintSettings, B); + Collate := B; + + V := Copies; + PMGetCopies(PrintSettings, V); + Copies := V; + + PMGetLastPage(PrintSettings, V); + if V > $FFFF then + begin + PrintRange := prAllPages; + FromPage := PMin; + ToPage := PMax; + end + else + begin + PrintRange := prSelection; + ToPage := V; + PMGetFirstPage(PrintSettings, V); + FromPage := V; + end; + + PMCopyPrintSettings(PrintSettings, CocoaPrinter.PrintSettings); + CocoaPrinter.PrintInfo.updateFromPMPrintSettings(); + + CocoaPrinter.PrintView.PageMin := PMin; + CocoaPrinter.PrintView.PageMax := PMax; + CocoaPrinter.PrintView.PageFrom := FromPage; + CocoaPrinter.PrintView.PageTo := ToPage; + end; + finally + end; +end; + diff -Nru lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.cs.po lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.cs.po --- lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.cs.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.cs.po 2015-11-16 21:54:01.000000000 +0000 @@ -0,0 +1,41 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Chronos <robie@centrum.cz>\n" +"Language-Team: \n" +"Language: cs\n" +"X-Generator: Poedit 1.8.4\n" + +#: ideprinting.sdescrformatting +msgid "Formatting" +msgstr "Formátování" + +#: ideprinting.sdescrpfselection +msgid "Print ..." +msgstr "Tisknout ..." + +#: ideprinting.spfselectioncmd +msgid "Print" +msgstr "Tisknout" + +#: ideprinting.sprintfile +msgid "Complete file" +msgstr "Dokončit soubor" + +#: ideprinting.sprintselection +msgid "Selected text" +msgstr "Vybraný text" + +#: ideprinting.sprintsources +msgid "Print sources" +msgstr "Tisknout zdroje" + +#: ideprinting.sprintwhat +msgid "What would you like to print ?" +msgstr "Chcete tisknout?" + diff -Nru lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.de.po lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.de.po --- lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.de.po 2013-09-28 18:35:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.de.po 2015-11-16 21:44:44.000000000 +0000 @@ -15,7 +15,6 @@ msgstr "Formatiere" #: ideprinting.sdescrpfselection -#| msgid "Print..." msgid "Print ..." msgstr "Drucken ..." diff -Nru lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.fi.po lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.fi.po --- lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.fi.po 2013-12-22 11:49:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.fi.po 2015-07-04 23:08:30.000000000 +0000 @@ -18,7 +18,7 @@ #: ideprinting.sprintfile msgid "Complete file" -msgstr "Täydennä tiedosto" +msgstr "Koko tiedosto" #: ideprinting.sprintselection msgid "Selected text" @@ -26,7 +26,7 @@ #: ideprinting.sprintsources msgid "Print sources" -msgstr "Tulosta lähteet" +msgstr "Tulostusalue" #: ideprinting.sprintwhat msgid "What would you like to print ?" diff -Nru lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.hu.po lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.hu.po --- lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.hu.po 2015-01-04 14:21:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.hu.po 2015-11-16 21:44:44.000000000 +0000 @@ -38,3 +38,4 @@ #: ideprinting.sprintwhat msgid "What would you like to print ?" msgstr "Mit szeretne nyomtatni?" + diff -Nru lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.lt.po lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.lt.po --- lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.lt.po 2012-02-19 14:28:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.lt.po 2015-11-16 21:44:44.000000000 +0000 @@ -15,7 +15,6 @@ msgstr "Formatavimas" #: ideprinting.sdescrpfselection -#| msgid "Print..." msgid "Print ..." msgstr "Spausdinti..." diff -Nru lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.pt_BR.po lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.pt_BR.po --- lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.pt_BR.po 2011-01-29 12:23:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.pt_BR.po 2015-11-16 21:44:44.000000000 +0000 @@ -14,7 +14,6 @@ msgstr "Formatando" #: ideprinting.sdescrpfselection -#| msgid "Print..." msgid "Print ..." msgstr "Imprimir..." diff -Nru lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.ru.po lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.ru.po --- lazarus-1.4.4+dfsg/components/printers/design/languages/ideprinting.ru.po 2010-09-22 16:29:13.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/design/languages/ideprinting.ru.po 2015-11-16 21:44:44.000000000 +0000 @@ -14,7 +14,6 @@ msgstr "Форматирование" #: ideprinting.sdescrpfselection -#| msgid "Print..." msgid "Print ..." msgstr "Печать ..." diff -Nru lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.cs.po lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.cs.po --- lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.cs.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.cs.po 2015-11-16 21:54:01.000000000 +0000 @@ -0,0 +1,89 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Chronos <robie@centrum.cz>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"X-Generator: Poedit 1.8.4\n" + +#: printer4lazstrconst.p4lrsadvanced +msgid "Advanced" +msgstr "Pokročilé" + +#: printer4lazstrconst.p4lrsbanners +msgid "Banners" +msgstr "Banery" + +#: printer4lazstrconst.p4lrscancel +msgid "Cancel" +msgstr "Zrušit" + +#: printer4lazstrconst.p4lrsend +msgid "End" +msgstr "Konec" + +#: printer4lazstrconst.p4lrsgeneral +msgid "General" +msgstr "Obecné" + +#: printer4lazstrconst.p4lrslandscape +msgid "Landscape" +msgstr "Krajina" + +#: printer4lazstrconst.p4lrsmargins +msgid "Margins" +msgstr "Okraje" + +#: printer4lazstrconst.p4lrsok +msgid "Ok" +msgstr "Ok" + +#: printer4lazstrconst.p4lrsorientation +msgid "Orientation" +msgstr "Orientace" + +#: printer4lazstrconst.p4lrspagespersheet +msgid "Pages per sheet" +msgstr "Stránek na list" + +#: printer4lazstrconst.p4lrspapersize +msgid "Paper size" +msgstr "Velikost papíru" + +#: printer4lazstrconst.p4lrspapersource +msgid "Paper source" +msgstr "Zdroj papíru" + +#: printer4lazstrconst.p4lrspapertype +msgid "Paper type" +msgstr "Typ papíru" + +#: printer4lazstrconst.p4lrsportrait +msgid "Portrait" +msgstr "Portrét" + +#: printer4lazstrconst.p4lrsprinterproperties +msgid "Printer properties" +msgstr "Vlastnosti tiskárny" + +#: printer4lazstrconst.p4lrsresolution +msgid "Resolution" +msgstr "Rozlišení" + +#: printer4lazstrconst.p4lrsreverselandscape +msgid "Reverse landscape" +msgstr "Převrácená krajina" + +#: printer4lazstrconst.p4lrsreverseportrait +msgid "Reverse portrait" +msgstr "Převrácený portrét" + +#: printer4lazstrconst.p4lrsstart +msgid "Start" +msgstr "Začít" + diff -Nru lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.de.po lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.de.po --- lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.de.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.de.po 2015-12-19 00:06:27.000000000 +0000 @@ -0,0 +1,90 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Swen Heinig <swen@heinig.email>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: de\n" + +#: printer4lazstrconst.p4lrsadvanced +msgid "Advanced" +msgstr "Erweitert" + +#: printer4lazstrconst.p4lrsbanners +msgid "Banners" +msgstr "Banner" + +#: printer4lazstrconst.p4lrscancel +msgid "Cancel" +msgstr "Abbrechen" + +#: printer4lazstrconst.p4lrsend +msgid "End" +msgstr "Ende" + +#: printer4lazstrconst.p4lrsgeneral +msgid "General" +msgstr "Allgemein" + +#: printer4lazstrconst.p4lrslandscape +msgid "Landscape" +msgstr "Querformat" + +#: printer4lazstrconst.p4lrsmargins +msgid "Margins" +msgstr "Ränder" + +#: printer4lazstrconst.p4lrsok +msgid "Ok" +msgstr "OK" + +#: printer4lazstrconst.p4lrsorientation +msgid "Orientation" +msgstr "Ausrichtung" + +#: printer4lazstrconst.p4lrspagespersheet +msgid "Pages per sheet" +msgstr "Seiten pro Blatt" + +#: printer4lazstrconst.p4lrspapersize +msgid "Paper size" +msgstr "Papiergröße" + +#: printer4lazstrconst.p4lrspapersource +msgid "Paper source" +msgstr "Papierschacht" + +#: printer4lazstrconst.p4lrspapertype +msgid "Paper type" +msgstr "Papiertyp" + +#: printer4lazstrconst.p4lrsportrait +msgid "Portrait" +msgstr "Hochformat" + +#: printer4lazstrconst.p4lrsprinterproperties +msgid "Printer properties" +msgstr "Druckereigenschaften" + +#: printer4lazstrconst.p4lrsresolution +msgid "Resolution" +msgstr "Auflösung" + +#: printer4lazstrconst.p4lrsreverselandscape +msgid "Reverse landscape" +msgstr "Querformat gedreht" + +#: printer4lazstrconst.p4lrsreverseportrait +msgid "Reverse portrait" +msgstr "Hochformat gedreht" + +#: printer4lazstrconst.p4lrsstart +msgid "Start" +msgstr "Start" + diff -Nru lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.fr.po lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.fr.po --- lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -0,0 +1,90 @@ +msgid "" +msgstr "" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2015-12-18 09:27+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.6\n" + +#: printer4lazstrconst.p4lrsadvanced +msgid "Advanced" +msgstr "Avancé" + +#: printer4lazstrconst.p4lrsbanners +msgid "Banners" +msgstr "Bannières" + +#: printer4lazstrconst.p4lrscancel +msgid "Cancel" +msgstr "Annuler" + +#: printer4lazstrconst.p4lrsend +msgid "End" +msgstr "Fin" + +#: printer4lazstrconst.p4lrsgeneral +msgid "General" +msgstr "Général" + +#: printer4lazstrconst.p4lrslandscape +msgid "Landscape" +msgstr "Paysage" + +#: printer4lazstrconst.p4lrsmargins +msgid "Margins" +msgstr "Marges" + +#: printer4lazstrconst.p4lrsok +msgid "Ok" +msgstr "Ok" + +#: printer4lazstrconst.p4lrsorientation +msgid "Orientation" +msgstr "Orientation" + +#: printer4lazstrconst.p4lrspagespersheet +msgid "Pages per sheet" +msgstr "Pages par feuille" + +#: printer4lazstrconst.p4lrspapersize +msgid "Paper size" +msgstr "Taille du papier" + +#: printer4lazstrconst.p4lrspapersource +msgid "Paper source" +msgstr "Source du papier" + +#: printer4lazstrconst.p4lrspapertype +msgid "Paper type" +msgstr "Type de papier" + +#: printer4lazstrconst.p4lrsportrait +msgid "Portrait" +msgstr "Portrait" + +#: printer4lazstrconst.p4lrsprinterproperties +msgid "Printer properties" +msgstr "Propriétés de l'imprimante" + +#: printer4lazstrconst.p4lrsresolution +msgid "Resolution" +msgstr "Résolution" + +#: printer4lazstrconst.p4lrsreverselandscape +msgid "Reverse landscape" +msgstr "Inverser le paysage" + +#: printer4lazstrconst.p4lrsreverseportrait +msgid "Reverse portrait" +msgstr "Inverser le portrait" + +#: printer4lazstrconst.p4lrsstart +msgid "Start" +msgstr "Démarrer" + diff -Nru lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.hu.po lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.hu.po --- lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.hu.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.hu.po 2015-12-01 21:27:14.000000000 +0000 @@ -0,0 +1,89 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Péter Gábor <ptrg@freemail.hu>\n" +"Language-Team: Magyar (Hungarian)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: printer4lazstrconst.p4lrsadvanced +msgid "Advanced" +msgstr "Haladó" + +#: printer4lazstrconst.p4lrsbanners +msgid "Banners" +msgstr "Kísérőlapok" + +#: printer4lazstrconst.p4lrscancel +msgid "Cancel" +msgstr "Mégse" + +#: printer4lazstrconst.p4lrsend +msgid "End" +msgstr "Végén" + +#: printer4lazstrconst.p4lrsgeneral +msgid "General" +msgstr "Általános" + +#: printer4lazstrconst.p4lrslandscape +msgid "Landscape" +msgstr "Fekvő" + +#: printer4lazstrconst.p4lrsmargins +msgid "Margins" +msgstr "Margók" + +#: printer4lazstrconst.p4lrsok +msgid "Ok" +msgstr "OK" + +#: printer4lazstrconst.p4lrsorientation +msgid "Orientation" +msgstr "Tájolás" + +#: printer4lazstrconst.p4lrspagespersheet +msgid "Pages per sheet" +msgstr "Oldalak laponként" + +#: printer4lazstrconst.p4lrspapersize +msgid "Paper size" +msgstr "Papírméret" + +#: printer4lazstrconst.p4lrspapersource +msgid "Paper source" +msgstr "Papírforrás" + +#: printer4lazstrconst.p4lrspapertype +msgid "Paper type" +msgstr "Papírtípus" + +#: printer4lazstrconst.p4lrsportrait +msgid "Portrait" +msgstr "Álló" + +#: printer4lazstrconst.p4lrsprinterproperties +msgid "Printer properties" +msgstr "Nyomtató tulajdonságai" + +#: printer4lazstrconst.p4lrsresolution +msgid "Resolution" +msgstr "Felbontás" + +#: printer4lazstrconst.p4lrsreverselandscape +msgid "Reverse landscape" +msgstr "Fekvő (fordítva)" + +#: printer4lazstrconst.p4lrsreverseportrait +msgid "Reverse portrait" +msgstr "Álló (fordítva)" + +#: printer4lazstrconst.p4lrsstart +msgid "Start" +msgstr "Elején" + diff -Nru lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.po lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.po --- lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.po 2015-10-07 13:37:55.000000000 +0000 @@ -0,0 +1,79 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: printer4lazstrconst.p4lrsadvanced +msgid "Advanced" +msgstr "" + +#: printer4lazstrconst.p4lrsbanners +msgid "Banners" +msgstr "" + +#: printer4lazstrconst.p4lrscancel +msgid "Cancel" +msgstr "" + +#: printer4lazstrconst.p4lrsend +msgid "End" +msgstr "" + +#: printer4lazstrconst.p4lrsgeneral +msgid "General" +msgstr "" + +#: printer4lazstrconst.p4lrslandscape +msgid "Landscape" +msgstr "" + +#: printer4lazstrconst.p4lrsmargins +msgid "Margins" +msgstr "" + +#: printer4lazstrconst.p4lrsok +msgid "Ok" +msgstr "" + +#: printer4lazstrconst.p4lrsorientation +msgid "Orientation" +msgstr "" + +#: printer4lazstrconst.p4lrspagespersheet +msgid "Pages per sheet" +msgstr "" + +#: printer4lazstrconst.p4lrspapersize +msgid "Paper size" +msgstr "" + +#: printer4lazstrconst.p4lrspapersource +msgid "Paper source" +msgstr "" + +#: printer4lazstrconst.p4lrspapertype +msgid "Paper type" +msgstr "" + +#: printer4lazstrconst.p4lrsportrait +msgid "Portrait" +msgstr "" + +#: printer4lazstrconst.p4lrsprinterproperties +msgid "Printer properties" +msgstr "" + +#: printer4lazstrconst.p4lrsresolution +msgid "Resolution" +msgstr "" + +#: printer4lazstrconst.p4lrsreverselandscape +msgid "Reverse landscape" +msgstr "" + +#: printer4lazstrconst.p4lrsreverseportrait +msgid "Reverse portrait" +msgstr "" + +#: printer4lazstrconst.p4lrsstart +msgid "Start" +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.ru.po lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.ru.po --- lazarus-1.4.4+dfsg/components/printers/languages/printer4lazstrconst.ru.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/languages/printer4lazstrconst.ru.po 2015-11-16 21:44:44.000000000 +0000 @@ -0,0 +1,89 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" + +#: printer4lazstrconst.p4lrsadvanced +msgid "Advanced" +msgstr "Расширенные" + +#: printer4lazstrconst.p4lrsbanners +msgid "Banners" +msgstr "Колонтитулы" + +#: printer4lazstrconst.p4lrscancel +msgid "Cancel" +msgstr "Отмена" + +#: printer4lazstrconst.p4lrsend +msgid "End" +msgstr "Нижний" + +#: printer4lazstrconst.p4lrsgeneral +msgid "General" +msgstr "Общие" + +#: printer4lazstrconst.p4lrslandscape +msgid "Landscape" +msgstr "Альбомная" + +#: printer4lazstrconst.p4lrsmargins +msgid "Margins" +msgstr "Поля" + +#: printer4lazstrconst.p4lrsok +msgid "Ok" +msgstr "ОК" + +#: printer4lazstrconst.p4lrsorientation +msgid "Orientation" +msgstr "Ориентация" + +#: printer4lazstrconst.p4lrspagespersheet +msgid "Pages per sheet" +msgstr "Страниц на листе" + +#: printer4lazstrconst.p4lrspapersize +msgid "Paper size" +msgstr "Размер бумаги" + +#: printer4lazstrconst.p4lrspapersource +msgid "Paper source" +msgstr "Источник бумаги" + +#: printer4lazstrconst.p4lrspapertype +msgid "Paper type" +msgstr "Тип бумаги" + +#: printer4lazstrconst.p4lrsportrait +msgid "Portrait" +msgstr "Книжная" + +#: printer4lazstrconst.p4lrsprinterproperties +msgid "Printer properties" +msgstr "Свойства принтера" + +#: printer4lazstrconst.p4lrsresolution +msgid "Resolution" +msgstr "Разрешение" + +#: printer4lazstrconst.p4lrsreverselandscape +msgid "Reverse landscape" +msgstr "Обратная альбомная" + +#: printer4lazstrconst.p4lrsreverseportrait +msgid "Reverse portrait" +msgstr "Обратная книжная" + +#: printer4lazstrconst.p4lrsstart +msgid "Start" +msgstr "Верхний" + diff -Nru lazarus-1.4.4+dfsg/components/printers/Makefile.compiled lazarus-1.6+dfsg/components/printers/Makefile.compiled --- lazarus-1.4.4+dfsg/components/printers/Makefile.compiled 2014-11-18 11:03:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/Makefile.compiled 2015-02-14 15:18:23.000000000 +0000 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <CONFIG> <Makefile Value="2"/> - <Params Value=" -Fuunix;win32;carbon;qt;../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);../cairocanvas/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);. -Fiunix;win32;carbon;qt -MObjFPC -Scgi -O1 -g -gl -l -vewnhibq -dLCL -dLCL$(LCL_PLATFORM) -dUseCache -dNativePrint -dUSEUNICODE printer4lazarus.pas"/> + <Params Value=" -Fuunix;win32;carbon;qt;cocoa;../../packager/units/$(CPU_TARGET)-$(OS_TARGET);../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET);../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);../cairocanvas/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM);. -Fiunix;win32;carbon;qt;cocoa -MObjFPC -Scgi -O1 -g -gl -l -vewnhibq -dLCL -dLCL$(LCL_PLATFORM) -dUseCache -dNativePrint -dUSEUNICODE printer4lazarus.pas"/> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/printers/Makefile.fpc lazarus-1.6+dfsg/components/printers/Makefile.fpc --- lazarus-1.4.4+dfsg/components/printers/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for Printer4Lazarus 0.5 # -# This file was generated on 18-11-14 +# This file was generated on 1-10-15 [package] name=printer4lazarus @@ -10,8 +10,8 @@ [compiler] unittargetdir=lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) -unitdir=unix win32 carbon qt ../../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) ../cairocanvas/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) . -includedir=unix win32 carbon qt +unitdir=unix win32 carbon qt cocoa ../../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) ../cairocanvas/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) . +includedir=unix win32 carbon qt cocoa options= -MObjFPC -Scgi -O1 -g -gl -l -vewnhibq -dLCL -dLCL$(LCL_PLATFORM) -dUseCache -dNativePrint -dUSEUNICODE $(DBG_OPTIONS) [target] diff -Nru lazarus-1.4.4+dfsg/components/printers/osprinters.pas lazarus-1.6+dfsg/components/printers/osprinters.pas --- lazarus-1.4.4+dfsg/components/printers/osprinters.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/osprinters.pas 2015-10-26 10:28:40.000000000 +0000 @@ -28,13 +28,23 @@ interface - {$IFDEF UNIX} - {$IFDEF LCLCarbon} - {$IFNDEF NativePrint} + {$IFDEF DARWIN} + {$IFDEF LCLCarbon} + {$IFNDEF NativePrint} + {$I cupsprinters_h.inc} + {$ELSE} + {$I carbonprinters_h.inc} + {$ENDIF} + {$ENDIF} + {$IFDEF LCLCocoa} + {$I cocoaprinters_h.inc} + {$ENDIF} + {$IFDEF LCLQt} + {$I qtprinters_h.inc} + {$ENDIF} + {$IFDEF LCLGtk2} {$I cupsprinters_h.inc} - {$ELSE} - {$I carbonprinters_h.inc} {$ENDIF} {$ELSE} {$IFDEF LCLQt} @@ -56,11 +66,22 @@ implementation {$IFDEF UNIX} - {$IFDEF LCLCarbon} - {$IFNDEF NativePrint} + {$IFDEF DARWIN} + {$IFDEF LCLCarbon} + {$IFNDEF NativePrint} + {$I cupsprinters.inc} + {$ELSE} + {$I carbonprinters.inc} + {$ENDIF} + {$ENDIF} + {$IFDEF LCLCocoa} + {$I cocoaprinters.inc} + {$ENDIF} + {$IFDEF LCLQt} + {$I qtprinters.inc} + {$ENDIF} + {$IFDEF LCLGtk2} {$I cupsprinters.inc} - {$ELSE} - {$I carbonprinters.inc} {$ENDIF} {$ELSE} {$IFDEF LCLQt} diff -Nru lazarus-1.4.4+dfsg/components/printers/printer4lazarus.lpk lazarus-1.6+dfsg/components/printers/printer4lazarus.lpk --- lazarus-1.4.4+dfsg/components/printers/printer4lazarus.lpk 2014-12-02 12:12:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/printer4lazarus.lpk 2015-06-16 09:16:18.000000000 +0000 @@ -3,14 +3,15 @@ <Package Version="4"> <PathDelim Value="\"/> <Name Value="Printer4Lazarus"/> + <Type Value="RunAndDesignTime"/> <AddToProjectUsesSection Value="True"/> <Author Value="Olivier Guilbaud"/> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> - <IncludeFiles Value="unix;win32;carbon;qt"/> - <OtherUnitFiles Value="unix;win32;carbon;qt"/> + <IncludeFiles Value="unix;win32;carbon;qt;cocoa"/> + <OtherUnitFiles Value="unix;win32;carbon;qt;cocoa"/> <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)\$(LCLWidgetType)"/> </SearchPaths> <Parsing> @@ -29,7 +30,7 @@ <License Value="LGPL "/> <Version Minor="5"/> - <Files Count="33"> + <Files Count="39"> <Item1> <Filename Value="printersdlgs.pp"/> <HasRegisterProc Value="True"/> @@ -121,60 +122,89 @@ <UnitName Value="CarbonPrinting"/> </Item21> <Item22> - <Filename Value="qt\qtprndialogs.inc"/> + <Filename Value="cocoa\cocoaprinters.inc"/> <Type Value="Include"/> </Item22> <Item23> - <Filename Value="qt\qtprinters_h.inc"/> + <Filename Value="cocoa\cocoaprinters_h.inc"/> <Type Value="Include"/> </Item23> <Item24> - <Filename Value="qt\qtprinters.inc"/> + <Filename Value="cocoa\cocoaprndialogs.inc"/> <Type Value="Include"/> </Item24> <Item25> - <Filename Value="carbon\issues.xml"/> - <Type Value="Issues"/> + <Filename Value="qt\qtprndialogs.inc"/> + <Type Value="Include"/> </Item25> <Item26> - <Filename Value="unix\udlgpagesetup.lfm"/> - <Type Value="LFM"/> + <Filename Value="qt\qtprinters_h.inc"/> + <Type Value="Include"/> </Item26> <Item27> + <Filename Value="qt\qtprinters.inc"/> + <Type Value="Include"/> + </Item27> + <Item28> + <Filename Value="carbon\issues.xml"/> + <Type Value="Issues"/> + </Item28> + <Item29> + <Filename Value="unix\udlgpagesetup.lfm"/> + <Type Value="LFM"/> + </Item29> + <Item30> <Filename Value="unix\udlgpagesetup.pas"/> <AddToUsesPkgSection Value="False"/> <UnitName Value="udlgpagesetup"/> - </Item27> - <Item28> + </Item30> + <Item31> <Filename Value="unix\framepagesetup.lfm"/> <Type Value="LFM"/> - </Item28> - <Item29> + </Item31> + <Item32> <Filename Value="unix\framepagesetup.pas"/> <AddToUsesPkgSection Value="False"/> <UnitName Value="framePageSetup"/> - </Item29> - <Item30> + </Item32> + <Item33> <Filename Value="unix\frameprinterselector.lfm"/> <Type Value="LFM"/> - </Item30> - <Item31> + </Item33> + <Item34> <Filename Value="unix\frameprinterselector.pas"/> <AddToUsesPkgSection Value="False"/> <UnitName Value="frameprinterselector"/> - </Item31> - <Item32> + </Item34> + <Item35> <Filename Value="unix\udlgprintersetup.pas"/> <AddToUsesPkgSection Value="False"/> <UnitName Value="udlgprintersetup"/> - </Item32> - <Item33> + </Item35> + <Item36> <Filename Value="unix\cupslcl.pas"/> <AddToUsesPkgSection Value="False"/> <UnitName Value="cupslcl"/> - </Item33> + </Item36> + <Item37> + <Filename Value="carbon\ppdresolution.pas"/> + <AddToUsesPkgSection Value="False"/> + <UnitName Value="ppdresolution"/> + </Item37> + <Item38> + <Filename Value="cocoa\cocoaprintcanvas.pas"/> + <AddToUsesPkgSection Value="False"/> + <UnitName Value="cocoaprintcanvas"/> + </Item38> + <Item39> + <Filename Value="printer4lazstrconst.pas"/> + <UnitName Value="printer4lazstrconst"/> + </Item39> </Files> - <Type Value="RunAndDesignTime"/> + <i18n> + <EnableI18N Value="True"/> + <OutDir Value="languages"/> + </i18n> <RequiredPkgs Count="1"> <Item1> <PackageName Value="cairocanvas_pkg"/> diff -Nru lazarus-1.4.4+dfsg/components/printers/printer4lazarus.pas lazarus-1.6+dfsg/components/printers/printer4lazarus.pas --- lazarus-1.4.4+dfsg/components/printers/printer4lazarus.pas 2010-07-14 15:52:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/printer4lazarus.pas 2015-06-16 09:16:18.000000000 +0000 @@ -2,20 +2,20 @@ This source is only used to compile and install the package. } -unit Printer4Lazarus; +unit Printer4Lazarus; interface uses - PrintersDlgs, OSPrinters, LazarusPackageIntf; + PrintersDlgs, OSPrinters, Printer4LazStrConst, LazarusPackageIntf; implementation -procedure Register; +procedure Register; begin - RegisterUnit('PrintersDlgs', @PrintersDlgs.Register); -end; + RegisterUnit('PrintersDlgs', @PrintersDlgs.Register); +end; initialization - RegisterPackage('Printer4Lazarus', @Register); + RegisterPackage('Printer4Lazarus', @Register); end. diff -Nru lazarus-1.4.4+dfsg/components/printers/printer4lazstrconst.pas lazarus-1.6+dfsg/components/printers/printer4lazstrconst.pas --- lazarus-1.4.4+dfsg/components/printers/printer4lazstrconst.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/printer4lazstrconst.pas 2015-10-03 21:32:08.000000000 +0000 @@ -0,0 +1,41 @@ +{ + ***************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Abstract: Resourcestrings. +} +unit Printer4LazStrConst; + +{$mode objfpc}{$H+} + +interface + +resourcestring + p4lrsCancel = 'Cancel'; + p4lrsPrinterProperties = 'Printer properties'; + p4lrsOk = 'Ok'; + p4lrsGeneral = 'General'; + p4lrsPaperSize = 'Paper size'; + p4lrsPaperType = 'Paper type'; + p4lrsPaperSource = 'Paper source'; + p4lrsResolution = 'Resolution'; + p4lrsOrientation = 'Orientation'; + p4lrsPortrait = 'Portrait'; + p4lrsLandscape = 'Landscape'; + p4lrsReverseLandscape = 'Reverse landscape'; + p4lrsReversePortrait = 'Reverse portrait'; + p4lrsBanners = 'Banners'; + p4lrsStart = 'Start'; + p4lrsEnd = 'End'; + p4lrsPagesPerSheet = 'Pages per sheet'; + p4lrsMargins = 'Margins'; + p4lrsAdvanced = 'Advanced'; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/printers/printersdlgs.pp lazarus-1.6+dfsg/components/printers/printersdlgs.pp --- lazarus-1.4.4+dfsg/components/printers/printersdlgs.pp 2013-10-04 15:30:52.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/printersdlgs.pp 2015-06-12 22:09:43.000000000 +0000 @@ -13,12 +13,16 @@ ------------------------------------------------------------------------------} unit PrintersDlgs; -{$mode objfpc}{$H+} +{$mode objfpc} +{$IFDEF LCLCocoa} + {$modeswitch objectivec1} +{$ENDIF} +{$H+} interface uses - Classes, SysUtils, Forms, Dialogs, LResources, Printers, OsPrinters; + Classes, SysUtils, Forms, Controls, Dialogs, LResources, Printers, OsPrinters; type @@ -70,42 +74,48 @@ {$R printersdlgs.res} {$IFDEF UNIX} - {$IFDEF LCLCarbon} - {$IFNDEF NativePrint} - -// add units as needed for carbon, for the moment use cups ones. -uses Controls, udlgSelectPrinter, udlgPropertiesPrinter, FileUtil; -{$I cupsprndialogs.inc} - - {$ELSE} - -uses - Controls, Math, CarbonProc, - MacOSAll, - LCLProc; -{$I carbonprndialogs.inc} - + {$IFDEF DARWIN} + {$IFDEF LCLCarbon} + {$IFNDEF NativePrint} + // add units as needed for carbon, for the moment use cups ones. + uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, FileUtil; + {$I cupsprndialogs.inc} + {$ELSE} + uses Math, CarbonProc, MacOSAll, LCLProc; + {$I carbonprndialogs.inc} + {$ENDIF} + {$ENDIF} + {$IFDEF LCLCocoa} + uses Math, CocoaAll, MacOSAll, LCLProc; + {$I cocoaprndialogs.inc} + {$ENDIF} + {$IFDEF LCLQt} + uses qtobjects, qt4, qtint; + {$I qtprndialogs.inc} + {$ENDIF} + {$IFDEF LCLGtk2} + uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup; + {$I cupsprndialogs.inc} {$ENDIF} {$ELSE} {$IFDEF LCLQt} - uses Controls, qtobjects, qt4, qtint, FileUtil; - {$I qtprndialogs.inc} - {$ELSE} -uses Controls, udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup, FileUtil; -{$I cupsprndialogs.inc} - {$ENDIF} + uses qtobjects, qt4, qtint; + {$I qtprndialogs.inc} + {$ELSE} + uses udlgSelectPrinter, udlgPropertiesPrinter, udlgPageSetup; + {$I cupsprndialogs.inc} + {$ENDIF} {$ENDIF} {$ENDIF} {$IFDEF MSWindows} {$IFDEF LCLQt} - uses Windows, Controls, - qtobjects, qtwidgets, qt4, LCLIntf, LCLType, FileUtil; + uses Windows, + qtobjects, qtwidgets, qt4, LCLIntf, LCLType; {$I qtprndialogs.inc} {$ELSE} - - uses Windows, WinUtilPrn, InterfaceBase, LCLIntf, LCLType, WinVer; - {$I winprndialogs.inc} + uses Windows, WinUtilPrn, InterfaceBase, LCLIntf, LCLType, WinVer; + {$I winprndialogs.inc} {$ENDIF} {$ENDIF} diff -Nru lazarus-1.4.4+dfsg/components/printers/unix/cupsprinters_h.inc lazarus-1.6+dfsg/components/printers/unix/cupsprinters_h.inc --- lazarus-1.4.4+dfsg/components/printers/unix/cupsprinters_h.inc 2014-09-14 17:41:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/unix/cupsprinters_h.inc 2015-10-26 10:28:40.000000000 +0000 @@ -168,6 +168,7 @@ --------------------------------------------------} procedure SetJobState(aJobId : LongInt; aOp : ipp_op_t); function PrintFile(aFileName: String): longint; + function GetLastError: string; procedure DebugOptions(AOPtions:Pcups_option_t=nil; n:Integer=0); function cupsGetOption(aKeyWord: string): String; function CopyOptions(out AOptions: Pcups_option_t): Integer; diff -Nru lazarus-1.4.4+dfsg/components/printers/unix/cupsprinters.inc lazarus-1.6+dfsg/components/printers/unix/cupsprinters.inc --- lazarus-1.4.4+dfsg/components/printers/unix/cupsprinters.inc 2014-09-14 17:41:24.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/unix/cupsprinters.inc 2016-01-04 15:04:42.000000000 +0000 @@ -9,7 +9,7 @@ uses {%H-}udlgSelectPrinter, // used to compile it on this target {%H-}udlgpropertiesprinter, // used to compile it on this target - FileUtil; + FileUtil, LazFileUtils; //Return always 72 because, PostScript it's 72 only function TCUPSPrinter.GetXDPI: Integer; @@ -255,7 +255,7 @@ if not CUPSLibInstalled then Exit; fcupsHttp:=httpConnect(cupsServer(),ippPort()); if not Assigned(fcupsHttp) then - raise Exception.Create('Unable to contact server!'); + raise Exception.Create('Unable to contact server: '+GetLastError); end; end; @@ -467,36 +467,44 @@ end; {$ENDIF} -//Print the file aFileName with a selected printer an options +//Print the file aFileName with a selected printer and options function TCUPSPrinter.PrintFile(aFileName: String): longint; var aPrinterName : string; begin Result:=-1; + //debugln(['TCUPSPrinter.PrintFile START ',aFileName]); + if aFileName='' then + raise Exception.Create('TCUPSPrinter.PrintFile missing Filename'); if not CUPSLibInstalled then Exit; aFileName:=ExpandFileNameUTF8(aFileName); if (Printers.Count>0) then begin if not Assigned(fcupsOptions) then - SetOptionsOfPrinter; + SetOptionsOfPrinter; if Assigned(fcupsPrinter) then - aPrinterName:=fcupsPrinter^.Name + aPrinterName:=fcupsPrinter^.Name else - aPrinterName:=''; + aPrinterName:=''; {$IFDEF DebugCUPS} DebugOptions; + debugln(['TCUPSPrinter.PrintFile aPrinterName="',aPrinterName,'" aFileName="',aFileName,'" Size=',FileSizeUtf8(aFileName)]); {$ENDIF} Result:=cupsdyn.cupsPrintFile(PChar(aPrinterName),PChar(aFileName), PChar(Self.Title), fcupsNumOpts,fcupsOptions); - end; end; +function TCUPSPrinter.GetLastError: string; +begin + Result:=ippErrorString(cupsdyn.cupsLastError()); +end; + function TCUPSPrinter.IsOptionValueValid(AKeyword, AValue: pchar): boolean; var Option: pppd_option_t; @@ -755,7 +763,7 @@ Reponse:=GetCupsRequest; if not Assigned(Reponse) then begin - DebugLn(['TCUPSPrinter.GetEnumAttributeString no Reponse']); + DebugLn(['TCUPSPrinter.GetEnumAttributeString no Response']); end else begin try Attribute:=ippFindAttribute(Reponse,aName, IPP_TAG_ZERO); @@ -847,14 +855,18 @@ procedure TCUPSPrinter.DoBeginDoc; var NewPath: String; + fs: TFileStream; function TryTemporaryPath(const Path: string): Boolean; var CurPath: String; begin + Result:=false; CurPath:=CleanAndExpandDirectory(Path); - Result:=DirPathExists(CurPath); - if Result then NewPath:=CurPath; + if CurPath='' then exit(false); + if not DirectoryIsWritable(CurPath) then exit; + NewPath:=CurPath; + Result:=true; end; begin @@ -870,18 +882,29 @@ FOutputFileName := AppendPathDelim(NewPath)+ 'OutPrinter_'+FormatDateTime('yyyymmmddd-hhnnss',Now); - + if RawMode then FOutputFileName := FOutputFileName + '.raw' else begin FOutputFileName := FOutputFileName + '.ps'; TFilePrinterCanvas(Canvas).OutputFileName := FOutputFileName; end; + + // test writing, on error this raises exception showing the user the filename + fs:=TFileStream.Create(FOutputFilename,fmCreate); + try + fs.Write(FOutputFilename[1],1); + finally + fs.free; + end; + DeleteFileUTF8(FOutputFilename); end; //If not aborted, send PostScript file to printer. //After, delete this file. procedure TCUPSPrinter.DoEndDoc(aAborted: Boolean); +var + CupsResult: LongInt; begin inherited DoEndDoc(aAborted); dec(FBeginDocCount); @@ -900,21 +923,28 @@ end; end else - TFilePrinterCanvas(Canvas).OutPutFileName:=''; - - if not aAborted and FileExistsUTF8(FOutputFileName) then begin + TFilePrinterCanvas(Canvas).OutputFileName:=''; + + if not aAborted then begin + if not FileExistsUTF8(FOutputFileName) then + raise Exception.Create('Unable to write to "'+FOutputFileName+'"'); {$IFDEF LogPrintoutFile} CopyFile(FOutputFileName, 'printjob'+ExtractFileExt(FOutputFileName)); {$ENDIF} - {$IFNDEF DoNotPrint} - if Filename<>'' then - CopyFile(FOutputFileName, FileName) - else - PrintFile(FOutputFileName); - {$ENDIF} - DeleteFileUTF8(FOutputFilename); + try + {$IFNDEF DoNotPrint} + if Filename<>'' then + CopyFile(FOutputFileName, FileName) + else begin + CupsResult:=PrintFile(FOutputFileName); + if CupsResult<=0 then + raise Exception.Create('CUPS printing: '+GetLastError); + end; + {$ENDIF} + finally + DeleteFileUTF8(FOutputFilename); + end; end; - end; procedure TCUPSPrinter.DoResetPrintersList; diff -Nru lazarus-1.4.4+dfsg/components/printers/unix/udlgpropertiesprinter.lfm lazarus-1.6+dfsg/components/printers/unix/udlgpropertiesprinter.lfm --- lazarus-1.4.4+dfsg/components/printers/unix/udlgpropertiesprinter.lfm 2011-02-17 00:04:37.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/unix/udlgpropertiesprinter.lfm 2015-10-08 10:03:03.000000000 +0000 @@ -1,130 +1,126 @@ object dlgpropertiesprinter: Tdlgpropertiesprinter - Left = 379 - Height = 464 - Top = 53 + Left = 363 + Height = 468 + Top = 180 Width = 457 ActiveControl = Notebook1 + BorderIcons = [biSystemMenu] Caption = 'dlgpropertiesprinter' - ClientHeight = 464 + ClientHeight = 468 ClientWidth = 457 OnCreate = dlgpropertiesprinterCREATE OnDestroy = FormDestroy OnShow = dlgpropertiesprinterSHOW Position = poScreenCenter - LCLVersion = '0.9.31' - object Panel1: TPanel - Left = 0 - Height = 41 - Top = 423 - Width = 457 - Align = alBottom - Anchors = [akLeft, akBottom] - BevelOuter = bvNone - ClientHeight = 41 - ClientWidth = 457 - FullRepaint = False - TabOrder = 0 - TabStop = True - object btnCancel1: TButton - Left = 352 - Height = 25 - Top = 8 - Width = 91 - Anchors = [akTop, akRight] - BorderSpacing.InnerBorder = 4 - Cancel = True - Caption = 'Cancel' - ModalResult = 2 - TabOrder = 0 - end - object btnOk: TButton - Left = 255 - Height = 25 - Top = 8 - Width = 91 - Anchors = [akTop, akRight] - BorderSpacing.InnerBorder = 4 - Caption = 'Ok' - Default = True - ModalResult = 1 - TabOrder = 1 - end - end + LCLVersion = '1.5' object Notebook1: TPageControl + AnchorSideRight.Side = asrBottom Left = 0 - Height = 423 + Height = 427 Top = 0 Width = 457 ActivePage = pgGeneral Align = alClient TabIndex = 0 - TabOrder = 1 + TabOrder = 0 object pgGeneral: TTabSheet Caption = 'General' - ClientHeight = 397 - ClientWidth = 449 + ClientHeight = 396 + ClientWidth = 453 object labPaperSize: TLabel - Left = 15 - Height = 14 - Top = 19 - Width = 50 + AnchorSideLeft.Control = pgGeneral + AnchorSideTop.Control = cbPaperSize + AnchorSideTop.Side = asrCenter + Left = 6 + Height = 17 + Top = 13 + Width = 69 + BorderSpacing.Left = 6 Caption = 'Paper size' ParentColor = False end object labPaperType: TLabel - Left = 15 - Height = 14 - Top = 55 - Width = 54 + AnchorSideLeft.Control = labPaperSize + AnchorSideTop.Control = cbPaperType + AnchorSideTop.Side = asrCenter + Left = 6 + Height = 17 + Top = 50 + Width = 73 Caption = 'Paper type' ParentColor = False end object labPaperSrc: TLabel - Left = 15 - Height = 14 - Top = 92 - Width = 64 + AnchorSideLeft.Control = labPaperSize + AnchorSideTop.Control = cbPaperSrc + AnchorSideTop.Side = asrCenter + Left = 6 + Height = 17 + Top = 87 + Width = 88 Caption = 'Paper source' ParentColor = False end object labResolution: TLabel - Left = 15 - Height = 14 - Top = 125 - Width = 51 + AnchorSideLeft.Control = labPaperSize + AnchorSideTop.Control = cbResolution + AnchorSideTop.Side = asrCenter + Left = 6 + Height = 17 + Top = 124 + Width = 72 Caption = 'Resolution' ParentColor = False end object cbPaperSize: TComboBox - Left = 130 - Height = 21 - Top = 9 - Width = 310 + AnchorSideTop.Control = pgGeneral + AnchorSideRight.Control = pgGeneral + AnchorSideRight.Side = asrBottom + Left = 172 + Height = 31 + Top = 6 + Width = 275 + Anchors = [akTop, akRight] + BorderSpacing.Around = 6 DropDownCount = 10 - ItemHeight = 13 + ItemHeight = 0 OnKeyPress = cbPaperSizeKEYPRESS Style = csDropDownList TabOrder = 0 end object cbPaperType: TComboBox - Left = 130 - Height = 21 - Top = 45 - Width = 310 - ItemHeight = 13 + AnchorSideLeft.Control = cbPaperSize + AnchorSideTop.Control = cbPaperSize + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = cbPaperSize + AnchorSideRight.Side = asrBottom + Left = 172 + Height = 31 + Top = 43 + Width = 275 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + ItemHeight = 0 OnKeyPress = cbPaperSizeKEYPRESS Style = csDropDownList TabOrder = 1 end object cbPaperSrc: TComboBox - Left = 130 - Height = 21 - Top = 81 - Width = 310 - ItemHeight = 13 + AnchorSideLeft.Control = cbPaperSize + AnchorSideTop.Control = cbPaperType + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = cbPaperSize + AnchorSideRight.Side = asrBottom + Left = 172 + Height = 31 + Top = 80 + Width = 275 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + ItemHeight = 0 OnKeyPress = cbPaperSizeKEYPRESS Style = csDropDownList - TabOrder = 3 + TabOrder = 2 end object gbOrientation: TGroupBox Left = 13 @@ -132,9 +128,9 @@ Top = 162 Width = 233 Caption = ' Orientation ' - ClientHeight = 101 + ClientHeight = 100 ClientWidth = 229 - TabOrder = 5 + TabOrder = 4 object imgOrientation: TImage Left = 167 Height = 48 @@ -143,9 +139,9 @@ end object rbPortrait: TRadioButton Left = 7 - Height = 17 + Height = 24 Top = 5 - Width = 54 + Width = 80 Caption = 'Portrait' Checked = True DragCursor = crDefault @@ -155,9 +151,9 @@ end object rbLandscape: TRadioButton Left = 7 - Height = 17 + Height = 24 Top = 29 - Width = 69 + Width = 98 Caption = 'Landscape' DragCursor = crDefault OnClick = rbPortraitCLICK @@ -165,9 +161,9 @@ end object rbrev_Landscape: TRadioButton Left = 7 - Height = 17 + Height = 24 Top = 53 - Width = 109 + Width = 150 Caption = 'Reverse landscape' DragCursor = crDefault OnClick = rbPortraitCLICK @@ -175,9 +171,9 @@ end object rbrev_portrait: TRadioButton Left = 7 - Height = 17 + Height = 24 Top = 77 - Width = 97 + Width = 136 Caption = 'Reverse portrait' DragCursor = crDefault OnClick = rbPortraitCLICK @@ -190,41 +186,60 @@ Top = 290 Width = 427 Caption = ' Banners ' - ClientHeight = 78 + ClientHeight = 77 ClientWidth = 423 - TabOrder = 2 + TabOrder = 6 object labBanStart: TLabel + AnchorSideLeft.Control = gbBanners + AnchorSideTop.Control = cbBanStart + AnchorSideTop.Side = asrCenter Left = 6 - Height = 14 - Top = 9 - Width = 25 + Height = 17 + Top = 13 + Width = 34 + BorderSpacing.Left = 6 Caption = 'Start' ParentColor = False end object labBanEnd: TLabel + AnchorSideLeft.Control = labBanStart + AnchorSideTop.Control = cbBanEnd + AnchorSideTop.Side = asrCenter Left = 6 - Height = 14 - Top = 49 - Width = 19 + Height = 17 + Top = 50 + Width = 25 Caption = 'End' ParentColor = False end object cbBanStart: TComboBox - Left = 94 - Height = 21 - Top = 1 - Width = 317 - ItemHeight = 13 + AnchorSideTop.Control = gbBanners + AnchorSideRight.Control = gbBanners + AnchorSideRight.Side = asrBottom + Left = 112 + Height = 31 + Top = 6 + Width = 305 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + ItemHeight = 0 OnKeyPress = cbPaperSizeKEYPRESS Style = csDropDownList TabOrder = 0 end object cbBanEnd: TComboBox - Left = 94 - Height = 21 - Top = 41 - Width = 317 - ItemHeight = 13 + AnchorSideLeft.Control = cbBanStart + AnchorSideTop.Control = cbBanStart + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = cbBanStart + AnchorSideRight.Side = asrBottom + Left = 112 + Height = 31 + Top = 43 + Width = 305 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + ItemHeight = 0 OnKeyPress = cbPaperSizeKEYPRESS Style = csDropDownList TabOrder = 1 @@ -236,9 +251,9 @@ Top = 163 Width = 185 Caption = ' Pages per sheet ' - ClientHeight = 100 + ClientHeight = 99 ClientWidth = 181 - TabOrder = 4 + TabOrder = 5 object imgPageSheet: TImage Left = 78 Height = 50 @@ -247,9 +262,9 @@ end object rbSheet1: TRadioButton Left = 6 - Height = 17 + Height = 24 Top = 5 - Width = 24 + Width = 34 Caption = '1' Checked = True DragCursor = crDefault @@ -259,9 +274,9 @@ end object rbSheet2: TRadioButton Left = 6 - Height = 17 + Height = 24 Top = 29 - Width = 24 + Width = 34 Caption = '2' DragCursor = crDefault OnClick = rbPortraitCLICK @@ -269,9 +284,9 @@ end object rbSheet4: TRadioButton Left = 6 - Height = 17 + Height = 24 Top = 53 - Width = 24 + Width = 34 Caption = '4' DragCursor = crDefault OnClick = rbPortraitCLICK @@ -279,14 +294,21 @@ end end object cbResolution: TComboBox - Left = 130 - Height = 21 + AnchorSideLeft.Control = cbPaperSize + AnchorSideTop.Control = cbPaperSrc + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = cbPaperSize + AnchorSideRight.Side = asrBottom + Left = 172 + Height = 31 Top = 117 - Width = 310 - ItemHeight = 13 + Width = 275 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + ItemHeight = 0 OnKeyPress = cbPaperSizeKEYPRESS Style = csDropDownList - TabOrder = 6 + TabOrder = 3 end end object pgMargins: TTabSheet @@ -294,16 +316,36 @@ end object pgAdvanced: TTabSheet Caption = 'Advanced' - ClientHeight = 397 - ClientWidth = 449 + ClientHeight = 396 + ClientWidth = 453 object sb: TScrollBox Left = 0 - Height = 397 + Height = 396 Top = 0 - Width = 449 + Width = 453 + HorzScrollBar.Page = 1 + VertScrollBar.Page = 1 Align = alClient TabOrder = 0 end end end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 433 + Width = 445 + Anchors = [akLeft, akBottom] + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 1 + ShowButtons = [pbOK, pbCancel] + ShowBevel = False + end end diff -Nru lazarus-1.4.4+dfsg/components/printers/unix/udlgpropertiesprinter.pp lazarus-1.6+dfsg/components/printers/unix/udlgpropertiesprinter.pp --- lazarus-1.4.4+dfsg/components/printers/unix/udlgpropertiesprinter.pp 2013-10-07 08:29:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/unix/udlgpropertiesprinter.pp 2015-10-08 10:03:03.000000000 +0000 @@ -28,17 +28,15 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, - StdCtrls, Buttons, Printers, CupsLCL, OsPrinters in '../osprinters.pas', LCLProc, - CupsDyn; + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls, + ExtCtrls, StdCtrls, Buttons, Printers, CupsLCL, OsPrinters, LCLProc, + ButtonPanel, CupsDyn, Printer4LazStrConst; type { Tdlgpropertiesprinter } Tdlgpropertiesprinter = class(TForm) - btnCancel1: TBUTTON; - btnOk: TBUTTON; cbPaperSize: TCOMBOBOX; cbResolution: TComboBox; cbPaperType: TCOMBOBOX; @@ -56,11 +54,11 @@ labResolution: TLabel; labPaperType: TLABEL; labPaperSize: TLABEL; + ButtonPanel1: TButtonPanel; pgAdvanced: TTabSheet; Notebook1: TPageControl; pgGeneral: TTabSheet; pgMargins: TTabSheet; - Panel1: TPANEL; rbSheet1: TRADIOBUTTON; rbSheet2: TRADIOBUTTON; rbSheet4: TRADIOBUTTON; @@ -70,10 +68,10 @@ rbPortrait: TRADIOBUTTON; sb: TScrollBox; procedure FormDestroy(Sender: TObject); - procedure rbPortraitCLICK(Sender: TObject); - procedure cbPaperSizeKEYPRESS(Sender: TObject; var Key: Char); - procedure dlgpropertiesprinterCREATE(Sender: TObject); - procedure dlgpropertiesprinterSHOW(Sender: TObject); + procedure rbPortraitClick(Sender: TObject); + procedure cbPaperSizeKeypress(Sender: TObject; var Key: Char); + procedure dlgpropertiesprinterCreate(Sender: TObject); + procedure dlgpropertiesprinterShow(Sender: TObject); private { private declarations } procedure RefreshInfos; @@ -98,13 +96,13 @@ Type THackCUPSPrinter=Class(TCUPSPrinter); -procedure Tdlgpropertiesprinter.dlgpropertiesprinterSHOW(Sender: TObject); +procedure Tdlgpropertiesprinter.dlgpropertiesprinterShow(Sender: TObject); begin if Sender=nil then ; RefreshInfos; end; -procedure Tdlgpropertiesprinter.cbPaperSizeKEYPRESS(Sender: TObject; +procedure Tdlgpropertiesprinter.cbPaperSizeKeypress(Sender: TObject; var Key: Char); begin if Sender=nil then ; @@ -338,14 +336,35 @@ end; //Initialization -procedure Tdlgpropertiesprinter.dlgpropertiesprinterCREATE(Sender: TObject); +procedure Tdlgpropertiesprinter.dlgpropertiesprinterCreate(Sender: TObject); begin if Sender=nil then ; Notebook1.PageIndex:=0; + + Caption := p4lrsPrinterProperties; + ButtonPanel1.CancelButton.Caption := p4lrsCancel; + ButtonPanel1.OKButton.Caption := p4lrsOk; + pgGeneral.Caption := p4lrsGeneral; + labPaperSize.Caption := p4lrsPaperSize; + labPaperType.Caption := p4lrsPaperType; + labPaperSrc.Caption := p4lrsPaperSource; + labResolution.Caption := p4lrsResolution; + gbOrientation.Caption := ' '+p4lrsOrientation+' '; + rbPortrait.Caption := p4lrsPortrait; + rbLandscape.Caption := p4lrsLandscape; + rbrev_Landscape.Caption := p4lrsReverseLandscape; + rbrev_portrait.Caption := p4lrsReversePortrait; + gbBanners.Caption := ' '+p4lrsBanners+' '; + labBanStart.Caption := p4lrsStart; + labBanEnd.Caption := p4lrsEnd; + gbPagesSheet.Caption := ' '+p4lrsPagesPerSheet+' '; + pgMargins.Caption := p4lrsMargins; + pgAdvanced.Caption := p4lrsAdvanced; + SetupOptions; end; -procedure Tdlgpropertiesprinter.rbPortraitCLICK(Sender: TObject); +procedure Tdlgpropertiesprinter.rbPortraitClick(Sender: TObject); begin if Sender=nil then ; RefreshInfos; diff -Nru lazarus-1.4.4+dfsg/components/printers/unix/udlgselectprinter.lfm lazarus-1.6+dfsg/components/printers/unix/udlgselectprinter.lfm --- lazarus-1.4.4+dfsg/components/printers/unix/udlgselectprinter.lfm 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/unix/udlgselectprinter.lfm 2015-11-06 23:11:39.000000000 +0000 @@ -1,48 +1,50 @@ object dlgSelectPrinter: TdlgSelectPrinter Left = 330 - Height = 406 + Height = 441 Top = 111 - Width = 530 + Width = 563 ActiveControl = btnProp + BorderIcons = [biSystemMenu] + BorderStyle = bsDialog Caption = 'Printing' - ClientHeight = 406 - ClientWidth = 530 + ClientHeight = 441 + ClientWidth = 563 OnCreate = dlgSelectPrinterCREATE OnShow = dlgSelectPrinterSHOW Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object PrinterGroupbox: TGroupBox Left = 6 Height = 137 Top = 6 - Width = 518 + Width = 551 Align = alTop BorderSpacing.Around = 6 Caption = ' Printer ' ClientHeight = 118 - ClientWidth = 514 + ClientWidth = 547 TabOrder = 0 object labState: TLabel Left = 96 - Height = 15 + Height = 17 Top = 49 - Width = 53 + Width = 57 Caption = 'labState' ParentColor = False end object labLocation: TLabel Left = 96 - Height = 15 + Height = 17 Top = 73 - Width = 72 + Width = 80 Caption = 'labLocation' ParentColor = False end object labComment: TLabel Left = 96 - Height = 15 + Height = 17 Top = 97 - Width = 78 + Width = 87 Caption = 'labComment' ParentColor = False end @@ -53,74 +55,81 @@ Width = 17 end object PrinterNameLabel: TLabel - Left = 236 - Height = 15 - Top = 9 - Width = 36 + Left = 250 + Height = 17 + Top = 8 + Width = 40 Anchors = [] Caption = 'Name' ParentColor = False end object PrinterStateLabel: TLabel Left = 10 - Height = 15 + Height = 17 Top = 49 - Width = 34 + Width = 36 Caption = 'State' ParentColor = False OnChangeBounds = PrinterStateLabelChangeBounds end object PrinterLocationLabel: TLabel Left = 10 - Height = 15 + Height = 17 Top = 73 - Width = 53 + Width = 59 Caption = 'Location' ParentColor = False end object PrinterDescriptionLabel: TLabel Left = 10 - Height = 15 + Height = 17 Top = 97 - Width = 71 + Width = 78 Caption = 'Description' ParentColor = False end object labPrinterName: TLabel Left = 10 - Height = 15 + Height = 17 Top = 12 - Width = 36 + Width = 40 Caption = 'Name' ParentColor = False OnChangeBounds = PrinterStateLabelChangeBounds end object btnProp: TButton - Left = 415 - Height = 25 - Top = 8 - Width = 95 - Anchors = [] + AnchorSideLeft.Control = cbPrinters + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = cbPrinters + AnchorSideRight.Side = asrBottom + Left = 442 + Height = 29 + Top = 7 + Width = 99 + Anchors = [akTop, akRight] AutoSize = True Caption = 'Properties ...' OnClick = btnPropCLICK TabOrder = 0 end object cbPrintToFile: TCheckBox - Left = 414 - Height = 21 - Top = 42 - Width = 92 + AnchorSideRight.Side = asrBottom + Left = 438 + Height = 24 + Top = 39 + Width = 101 Anchors = [akRight, akBottom] Caption = 'Print to file' TabOrder = 1 end object cbPrinters: TComboBox + AnchorSideRight.Control = btnProp Left = 120 - Height = 25 + Height = 31 Top = 7 - Width = 287 + Width = 316 Anchors = [akTop, akLeft, akRight] + BorderSpacing.Right = 6 ItemHeight = 0 OnChange = cbPrintersCHANGE OnKeyPress = cbPrintersKEYPRESS @@ -130,9 +139,9 @@ end object NbOpts: TPageControl Left = 6 - Height = 180 + Height = 217 Top = 177 - Width = 518 + Width = 551 ActivePage = pgCopies Align = alClient Anchors = [akLeft] @@ -141,28 +150,28 @@ TabOrder = 1 object pgCopies: TTabSheet Caption = 'Copies' - ClientHeight = 155 - ClientWidth = 514 + ClientHeight = 186 + ClientWidth = 547 object gbPages: TGroupBox AnchorSideBottom.Control = pgCopies AnchorSideBottom.Side = asrBottom Left = 8 - Height = 142 + Height = 173 Top = 7 Width = 262 Anchors = [akTop, akLeft, akBottom] BorderSpacing.Around = 6 Caption = ' Select pages ' - ClientHeight = 123 + ClientHeight = 154 ClientWidth = 258 TabOrder = 0 object Bevel1: TBevel AnchorSideTop.Control = edRange AnchorSideTop.Side = asrBottom - Left = 18 - Height = 3 - Top = 102 - Width = 230 + Left = 8 + Height = 2 + Top = 110 + Width = 240 BorderSpacing.Top = 6 Shape = bsTopLine Style = bsRaised @@ -170,10 +179,10 @@ object labPage: TLabel AnchorSideTop.Control = Bevel1 AnchorSideTop.Side = asrBottom - Left = 14 - Height = 15 - Top = 117 - Width = 38 + Left = 8 + Height = 17 + Top = 124 + Width = 40 BorderSpacing.Top = 12 Caption = 'Pages' ParentColor = False @@ -185,10 +194,10 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = gbPages AnchorSideRight.Side = asrBottom - Left = 92 - Height = 25 - Top = 71 - Width = 160 + Left = 90 + Height = 27 + Top = 77 + Width = 162 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 15 BorderSpacing.Right = 6 @@ -200,8 +209,8 @@ AnchorSideRight.Control = gbPages AnchorSideRight.Side = asrBottom Left = 104 - Height = 25 - Top = 112 + Height = 27 + Top = 119 Width = 148 Anchors = [akTop, akRight] BorderSpacing.Right = 6 @@ -219,10 +228,10 @@ object rbCurrentPage: TRadioButton AnchorSideTop.Control = rbAllPage AnchorSideTop.Side = asrBottom - Left = 14 - Height = 21 - Top = 27 - Width = 106 + Left = 8 + Height = 24 + Top = 26 + Width = 113 BorderSpacing.Around = 2 Caption = 'Current page' DragCursor = crDefault @@ -232,21 +241,20 @@ object rbRange: TRadioButton AnchorSideTop.Control = rbSelection AnchorSideTop.Side = asrBottom - Left = 14 - Height = 21 - Top = 73 - Width = 63 + Left = 8 + Height = 24 + Top = 78 + Width = 67 BorderSpacing.Around = 2 Caption = 'Range' DragCursor = crDefault TabOrder = 4 end object rbAllPage: TRadioButton - Left = 14 - Height = 21 + Left = 8 + Height = 24 Top = 0 - Width = 41 - BorderSpacing.Around = 6 + Width = 47 Caption = 'All ' Checked = True DragCursor = crDefault @@ -256,10 +264,10 @@ object rbSelection: TRadioButton AnchorSideTop.Control = rbCurrentPage AnchorSideTop.Side = asrBottom - Left = 14 - Height = 21 - Top = 50 - Width = 81 + Left = 8 + Height = 24 + Top = 52 + Width = 88 BorderSpacing.Around = 2 Caption = 'Selection' DragCursor = crDefault @@ -275,21 +283,21 @@ AnchorSideBottom.Control = pgCopies AnchorSideBottom.Side = asrBottom Left = 276 - Height = 142 + Height = 173 Top = 7 - Width = 232 + Width = 265 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 Caption = ' Copies ' - ClientHeight = 123 - ClientWidth = 228 + ClientHeight = 154 + ClientWidth = 261 TabOrder = 1 object imgCollate: TImage AnchorSideTop.Control = lanNumCopies AnchorSideTop.Side = asrBottom Left = 6 Height = 37 - Top = 27 + Top = 29 Width = 93 AutoSize = True BorderSpacing.Top = 6 @@ -297,9 +305,9 @@ end object lanNumCopies: TLabel Left = 6 - Height = 15 + Height = 17 Top = 6 - Width = 110 + Width = 120 Caption = 'Number of copies' ParentColor = False end @@ -308,10 +316,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = lanNumCopies AnchorSideTop.Side = asrCenter - Left = 122 - Height = 25 + Left = 132 + Height = 27 Top = 1 - Width = 50 + Width = 60 BorderSpacing.Left = 6 TabOrder = 0 end @@ -319,9 +327,9 @@ AnchorSideTop.Control = edCopies AnchorSideTop.Side = asrBottom Left = 119 - Height = 21 - Top = 32 - Width = 67 + Height = 24 + Top = 34 + Width = 74 AllowGrayed = True BorderSpacing.Around = 6 Caption = 'Collate' @@ -333,9 +341,9 @@ AnchorSideTop.Control = cbCollate AnchorSideTop.Side = asrBottom Left = 119 - Height = 21 - Top = 59 - Width = 73 + Height = 24 + Top = 64 + Width = 79 AllowGrayed = True BorderSpacing.Around = 6 Caption = 'Reverse' @@ -347,8 +355,8 @@ end object pgAdvance: TTabSheet Caption = 'Advanced' - ClientHeight = 156 - ClientWidth = 510 + ClientHeight = 186 + ClientWidth = 547 object labTask: TLabel Left = 7 Height = 14 @@ -436,42 +444,43 @@ end end object BtnPanel: TPanel - Left = 6 - Height = 37 - Top = 363 - Width = 518 + Left = 0 + Height = 41 + Top = 400 + Width = 563 Align = alBottom Anchors = [akLeft, akBottom] AutoSize = True - BorderSpacing.Around = 6 BevelOuter = bvNone - ClientHeight = 37 - ClientWidth = 518 + ClientHeight = 41 + ClientWidth = 563 FullRepaint = False TabOrder = 2 TabStop = True object btnCancel: TButton - Left = 456 - Height = 25 + Left = 477 + Height = 29 Top = 6 - Width = 56 + Width = 80 Align = alRight AutoSize = True BorderSpacing.Around = 6 Cancel = True Caption = 'Cancel' + Constraints.MinWidth = 80 ModalResult = 2 TabOrder = 0 end object btnPrint: TButton - Left = 407 - Height = 25 + Left = 391 + Height = 29 Top = 6 - Width = 43 + Width = 80 Align = alRight AutoSize = True BorderSpacing.Around = 6 Caption = 'Print' + Constraints.MinWidth = 80 Default = True ModalResult = 1 OnClick = btnPrintCLICK @@ -479,25 +488,27 @@ end object btnReduc: TButton Left = 6 - Height = 25 + Height = 29 Top = 6 - Width = 61 + Width = 80 Align = alLeft AutoSize = True BorderSpacing.Around = 6 Caption = 'More ...' + Constraints.MinWidth = 80 OnClick = btnReducCLICK TabOrder = 2 end object btnPreview: TButton - Left = 340 - Height = 25 + Left = 305 + Height = 29 Top = 6 - Width = 61 + Width = 80 Align = alRight AutoSize = True BorderSpacing.Around = 6 Caption = 'Preview' + Constraints.MinWidth = 80 ModalResult = 6 TabOrder = 3 end @@ -506,28 +517,30 @@ Left = 6 Height = 22 Top = 149 - Width = 518 + Width = 551 Align = alTop BorderSpacing.Around = 6 BevelOuter = bvNone ClientHeight = 22 - ClientWidth = 518 + ClientWidth = 551 TabOrder = 3 object labCUPS: TLabel AnchorSideTop.Side = asrBottom Left = 8 - Height = 15 + Height = 17 Top = 3 - Width = 232 + Width = 251 Caption = 'CUPS (Common Unix Printing System)' ParentColor = False end object labCUPSServer: TLabel + AnchorSideLeft.Control = labCUPS AnchorSideLeft.Side = asrBottom - Left = 248 - Height = 15 + Left = 265 + Height = 17 Top = 3 - Width = 92 + Width = 100 + BorderSpacing.Around = 6 Caption = 'labCUPSServer' ParentColor = False end diff -Nru lazarus-1.4.4+dfsg/components/printers/unix/udlgselectprinter.pp lazarus-1.6+dfsg/components/printers/unix/udlgselectprinter.pp --- lazarus-1.4.4+dfsg/components/printers/unix/udlgselectprinter.pp 2014-02-05 12:07:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/unix/udlgselectprinter.pp 2015-11-06 23:11:39.000000000 +0000 @@ -26,6 +26,7 @@ mar 08 2005 OG - Dynamique CUPS link - Some bug compile fix mar 08 2005 OG - Modifications for Printer4Lazarus pakage + oct 2015 - property BigMode, refactor, anchors fix ------------------------------------------------------------------------------*) unit uDlgSelectPrinter; @@ -36,7 +37,7 @@ uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, ExtCtrls, Spin, ComCtrls, LCLType, InterfaceBase, - Printers, OsPrinters, CUPSDyn; + Printers, OsPrinters, CUPSDyn, Math; type @@ -103,11 +104,15 @@ { private declarations } fPropertiesSetting : Boolean; FOptions: TPrintDialogOptions; - + FBig: boolean; + FHeightInit: integer; + FHeightDec: integer; function GetPrintRange: TPrintRange; procedure RefreshInfos; procedure InitPrinterOptions; + procedure SetBigMode(AValue: boolean); procedure SetPrintRange(const AValue: TPrintRange); + property BigMode: boolean read FBig write SetBigMode; public { public declaration} constructor Create(aOwner : TComponent); override; @@ -150,15 +155,16 @@ begin Inherited Create(aOwner); - //Set Height of form - btnReduc.Tag:=1; - btnReducCLICK(nil); + FHeightInit:=Height; + FHeightDec:=NbOpts.Height+6; + if WidgetSet.LCLPlatform = lpCarbon then - begin //Can't hide tabs with button on Carbon, so just expand dialog. - btnReduc.Tag:=0; - btnReducCLICK(nil); - btnReduc.Visible:=False; - end; + begin //Can't hide tabs with button on Carbon, so just expand dialog. + BigMode:=true; + btnReduc.Visible:=false; + end + else + BigMode:=false; end; @@ -419,32 +425,27 @@ Key:=#0; end; -//If tag of btnReduc is 0 then the caption is "More ..." and -//if it's 1 then "Less ..." procedure TdlgSelectPrinter.btnReducCLICK(Sender: TObject); begin if Sender=nil then ; + BigMode:=not BigMode; +end; + +procedure TdlgSelectPrinter.SetBigMode(AValue: boolean); +begin + FBig:= AValue; + NbOpts.Visible:= FBig; Constraints.MinHeight:=0; Constraints.MaxHeight:=0; - if btnReduc.Tag=1 then - begin - btnReduc.Tag:=0; - btnReduc.Caption:='More ...'; - Height:=217; - Constraints.MinHeight:=Height; - Constraints.MaxHeight:=Height; - end + Height:=FHeightInit-IfThen(not FBig, FHeightDec); + Constraints.MinHeight:=Height; + Constraints.MaxHeight:=Height; + + if not FBig then + btnReduc.Caption:='More >>' else - begin - Constraints.MinHeight:=0; - Constraints.MaxHeight:=0; - btnReduc.Tag:=1; - btnReduc.Caption:='Less ...'; - Height:=440; - Constraints.MinHeight:=Height; - Constraints.MaxHeight:=0; - end; + btnReduc.Caption:='<< Less'; end; procedure TdlgSelectPrinter.btnPrintCLICK(Sender: TObject); diff -Nru lazarus-1.4.4+dfsg/components/printers/win32/winprndialogs.inc lazarus-1.6+dfsg/components/printers/win32/winprndialogs.inc --- lazarus-1.4.4+dfsg/components/printers/win32/winprndialogs.inc 2013-12-15 16:29:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/printers/win32/winprndialogs.inc 2015-06-12 21:42:18.000000000 +0000 @@ -61,6 +61,15 @@ Result := 0; end; +function GetOwnerHandle(ADialog : TCommonDialog): HWND; +begin + with ADialog do + if Owner is TWinControl then + Result := TWinControl(Owner).Handle + else + Result := WidgetSet.AppHandle; +end; + { TPageSetupDialog } @@ -96,7 +105,7 @@ else lCustData := 0; Flags := PSD_MARGINS or PSD_ENABLEPAGESETUPHOOK; - hWndOwner := Widgetset.AppHandle; + hWndOwner := GetOwnerHandle(Self); rtMargin := fMargins; PDev := TPrinterDevice(Printer.Printers.Objects[Printer.PrinterIndex]); // Pdev.DevMode has the required size, just copy to the global memory @@ -207,7 +216,7 @@ else lCustData := 0; Flags := PD_PRINTSETUP or PD_RETURNDC or PD_ENABLESETUPHOOK; - hWndOwner := Widgetset.AppHandle; + hWndOwner := GetOwnerHandle(self); PDev := TPrinterDevice(Printer.Printers.Objects[Printer.PrinterIndex]); // Pdev.DevMode has the required size, just copy to the global memory DeviceMode := GlobalAlloc(GHND, PDev.DevModeSize); @@ -335,7 +344,7 @@ if (poHelp in Options) then Flags := Flags or PD_SHOWHELP; if not (poWarning in Options) then Flags := Flags or PD_NOWARNING; - hWndOwner := Widgetset.AppHandle; + hWndOwner := GetOwnerHandle(self); PDev := TPrinterDevice(Printer.Printers.Objects[Printer.PrinterIndex]); // Pdev.DevMode has the required size, just copy to the global memory DeviceMode := GlobalAlloc(GHND, PDEV.DevModeSize); diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/lazprojectgroup.pas lazarus-1.6+dfsg/components/projectgroups/lazprojectgroup.pas --- lazarus-1.4.4+dfsg/components/projectgroups/lazprojectgroup.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/lazprojectgroup.pas 2015-10-16 07:54:33.000000000 +0000 @@ -0,0 +1,22 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit lazprojectgroup; + +interface + +uses + projectgroupintf, projectgroup, projectgroupeditor, regprojectgroup, + LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('regprojectgroup', @regprojectgroup.Register); +end; + +initialization + RegisterPackage('lazprojectgroup', @Register); +end. diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/lazprojectgroups.lpk lazarus-1.6+dfsg/components/projectgroups/lazprojectgroups.lpk --- lazarus-1.4.4+dfsg/components/projectgroups/lazprojectgroups.lpk 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/lazprojectgroups.lpk 2015-11-21 13:41:20.000000000 +0000 @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <Package Version="4"> + <Name Value="lazprojectgroups"/> + <Type Value="RunAndDesignTime"/> + <Author Value="Mattias Gaertner, Michael Van Canneyt"/> + <CompilerOptions> + <Version Value="11"/> + <SearchPaths> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + </CompilerOptions> + <Description Value="IDE Add-on for grouping projects, packages and project groups."/> + <License Value="Same as IDEIntf. +Modified LGPL-2."/> + <Version Minor="2"/> + <Files Count="6"> + <Item1> + <Filename Value="projectgroupintf.pp"/> + <UnitName Value="ProjectGroupIntf"/> + </Item1> + <Item2> + <Filename Value="projectgroup.pp"/> + <UnitName Value="ProjectGroup"/> + </Item2> + <Item3> + <Filename Value="projectgroupeditor.pas"/> + <UnitName Value="ProjectGroupEditor"/> + </Item3> + <Item4> + <Filename Value="regprojectgroup.pp"/> + <HasRegisterProc Value="True"/> + <UnitName Value="RegProjectGroup"/> + </Item4> + <Item5> + <Filename Value="README.txt"/> + <Type Value="Binary"/> + </Item5> + <Item6> + <Filename Value="projectgroupstrconst.pas"/> + <UnitName Value="ProjectGroupStrConst"/> + </Item6> + </Files> + <RequiredPkgs Count="2"> + <Item1> + <PackageName Value="CodeTools"/> + </Item1> + <Item2> + <PackageName Value="IDEIntf"/> + </Item2> + </RequiredPkgs> + <UsageOptions> + <UnitPath Value="$(PkgOutDir)"/> + </UsageOptions> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + </Package> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/projectgroupeditor.lfm lazarus-1.6+dfsg/components/projectgroups/projectgroupeditor.lfm --- lazarus-1.4.4+dfsg/components/projectgroups/projectgroupeditor.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/projectgroupeditor.lfm 2015-12-19 15:59:32.000000000 +0000 @@ -0,0 +1,1430 @@ +object ProjectGroupEditorForm: TProjectGroupEditorForm + Left = 383 + Height = 358 + Top = 187 + Width = 646 + Caption = 'ProjectGroupEditorForm' + ClientHeight = 358 + ClientWidth = 646 + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + OnDestroy = FormDestroy + LCLVersion = '1.7' + object TBProjectGroup: TToolBar + Left = 0 + Height = 48 + Top = 0 + Width = 646 + AutoSize = True + ButtonHeight = 46 + Images = ImageListMain + ShowCaptions = True + TabOrder = 0 + object TBSave: TToolButton + Left = 1 + Top = 2 + Action = AProjectGroupSave + end + object TBAdd: TToolButton + Left = 106 + Top = 2 + Action = AProjectGroupAddExisting + end + object TBNewTarget: TToolButton + Left = 34 + Top = 2 + Action = AProjectGroupAddNew + Visible = False + end + object TBDelete: TToolButton + Left = 136 + Top = 2 + Action = AProjectGroupDelete + end + object TBCompile: TToolButton + Left = 189 + Top = 2 + Action = ATargetCompile + end + object TBCompileClean: TToolButton + Left = 241 + Top = 2 + Action = ATargetCompileClean + end + object ToolButton1: TToolButton + Left = 326 + Height = 46 + Top = 2 + Width = 10 + Caption = 'ToolButton1' + Style = tbsSeparator + end + object TBTargetUp: TToolButton + Left = 390 + Top = 2 + Action = ATargetEarlier + end + object TBTargetLater: TToolButton + Left = 434 + Top = 2 + Action = ATargetLater + end + object TBMore: TToolButton + Left = 517 + Top = 2 + Caption = 'More...' + DropdownMenu = PopupMenuMore + Style = tbsDropDown + end + object TBActivate: TToolButton + Left = 336 + Top = 2 + Action = ATargetActivate + Visible = False + end + object TBReload: TToolButton + Left = 471 + Top = 2 + Action = AProjectGroupReload + end + end + object TVPG: TTreeView + Left = 0 + Height = 291 + Top = 48 + Width = 646 + Align = alClient + DefaultItemHeight = 18 + HideSelection = False + Images = ImageListMain + PopupMenu = PopupMenuTree + ReadOnly = True + RightClickSelect = True + StateImages = ImageListMain + TabOrder = 1 + OnDblClick = TVPGDblClick + OnMouseDown = TVPGMouseDown + OnSelectionChanged = TVPGSelectionChanged + Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] + end + object SBPG: TStatusBar + Left = 0 + Height = 19 + Top = 339 + Width = 646 + Panels = < + item + Text = '0 targets' + Width = 85 + end + item + Text = 'Current target: ' + Width = 50 + end> + SimplePanel = False + end + object ImageListMain: TImageList + left = 128 + top = 184 + Bitmap = { + 4C691A0000001000000010000000FFFFFF009E6E4D2B9D6D4CD69D6D4BC59D6C + 4BFF9C6C4AFF9C6B49FF9B6A49FF9B6A48FF9A6947FF996846FF986745FF9364 + 43FF845D3EDEFFFFFF00FFFFFF00FFFFFF009D6D4C919D6D4BFEBB9778FFAC82 + 62FFAC8161FFAB8060FFAB7F5FFFAA7F5EFFA87E5DFFA87C5CFF9D6D4CFF9766 + 43FF885C3CFFFFFFFF00FFFFFF00FFFFFF009D6D4BCFBA9778FFD8C5B9FFE8DE + D7FFE7DDD6FFE6DCD6FFE4DBD4FFE3DAD3FFE2D8D1FFE1D7D0FFEBE7E5FFEFEF + EFFF573E2AFFFFFFFF00FFFFFF00FFFFFF009C6C4BE0D9C2A5FFB59170FFAB80 + 5FFFA97E5EFFA97E5EFFA87D5CFFA87C5BFFA77B5AFFA67959FF9C6B49FF9664 + 41FF573E2AFFFFFFFF00FFFFFF00FFFFFF009C6B4AE1DDC8A9FFD4BD95FFE6D4 + B9FFE6D1B6FFE4D0B5FFE3CEB3FFE2CBB0FFE0C9ADFFDFC7A9FFDABFA0FF9A6B + 4AFF573E2AFFFFFFFF00FFFFFF00FFFFFF009B6A49E1DBC5A6FFC6A776FFD9BF + 9BFFD1B793FFCBB08EFFCAAE8AFFC8AB87FFCBAB83FFD1B087FFD8BB9BFF996A + 48FF573E2AFFFFFFFF00FFFFFF00FFFFFF009B6A48E1D9C2A4FFC1A472FFD2B8 + 94FFF5EDE4FFF4ECE2FFF4ECE1FFF4EBE0FFF3EADFFFCBA97FFFD6B896FF9969 + 47FF573E2AFFFFFFFF00FFFFFF00FFFFFF009A6947E1D7BF9FFFBD9F6FFFD4B5 + 90FFCBAD88FFC7A881FFC6A57DFFC4A17AFFC5A176FFCBA77BFFD4B490FF9868 + 46FF573E2AFFFFFFFF00FFFFFF00FFFFFF00996846E1D5BB9BFFB89A69FFD4B3 + 8AFFD2AF87FFD0AD82FFCFAA7DFFCDA678FFCBA474FFCCA475FFD2B18AFF9767 + 45FF573E2AFFFFFFFF00FFFFFF00FFFFFF00996745E1D2B796FFB49265FFD1AE + 83FFCFAB7FFFCDA87AFFCBA576FFCAA271FFC89E6DFFC89F6DFFD0AE86FF9665 + 44FF573E2AFFFFFFFF00FFFFFF00FFFFFF00986644E1D0B492FFAF8B60FFCEA9 + 7CFFCCA677FFCBA374FFC9A06EFFC79D6AFFC69A66FFC69B68FFCDA882FF9564 + 42FF573E2AFFFFFFFF00FFFFFF00FFFFFF00976543E1CEB08EFFAA855BFFCBA4 + 75FFCAA271FFC89E6BFFC69B68FFC59963FFC2945EFFC49461FFCCA57DFF9463 + 41FF573E2AFFFFFFFF00FFFFFF00FFFFFF00966441E1CBAC88FFA67E57FFC99F + 6EFFC79D69FFC69966FFC39761FFC2925CFFC18F59FFC18E5BFFCAA178FF9462 + 40FF573E2AFFFFFFFF00FFFFFF00FFFFFF00966340E1CAA985FFA37854FFC69A + 67FFC49862FFC2945EFFC1905AFFC08C56FFBE8953FFBF8855FFC99D75FF9362 + 3FFF553C28E1FFFFFF00FFFFFF00FFFFFF0095623FE1CCAB85FFD1AF89FFD2B0 + 88FFD1AD85FFD0AA81FFCFA77FFFCEA47BFFCDA17AFFCB9F77FFC79971FF9361 + 3EFF4E3421A1FFFFFF00FFFFFF00FFFFFF0094613E9C94603DFF93603CFF925F + 3BFF925E3AFF915D39FF905D38FF905C38FF8F5B37FF8F5A36FF8E5A35FF8E59 + 35B1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0078CF82D475CD80FF73CA7DFE70C77AB4FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0077CF + 821278CD82FF9CD9A7FF98D8A2FF6DC476ECFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0072C97CF497D8A2FF8DD297FF69C072BEFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0079D083FF76CE81FF74CB7EFF71C9 + 7BFF6FC678FE97D7A1FF93D59DFF65BC6EF062B86AED5FB567EF5BB163EFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0076CE80FF9BD9A6FF99D8A4FF98D7 + A2FF96D7A1FF95D59EFF93D49CFF8FD198FF8CD095FF8ACF94FF57AD5EFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0073CB7DFF99D8A3FF97D7A1FF79CB + 87FF69C377FF65C273FF64C171FF67C273FF66C071FF8BCF94FF53A95AFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0070C77AFF6DC477FF7CC985FF93D4 + 9CFF65C172FF62C06FFF5FBE6CFF5DBD69FF5ABB66FF88CF90FF66B56DFF4CA1 + 52FF489D4EFF45994AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF0066BD6FFF90D2 + 99FF60BF6DFF5EBD6AFF5BBC68FF59BB64FF56BA61FF65BF6FFF83CC8BFF82CA + 89FF80CA88FF419646FFFFFFFF00FFFFFF00FFFFFF00FFFFFF0063B96BFF8DD1 + 96FF5DBC69FF5ABB66FF58BA63FF55B960FF52B75DFF62BD6BFF81CA88FF7EC8 + 85FF7EC884FF3E9242FFFFFFFF00FFFFFF0065BC6EFF62B86AFF72C07AFF8BCF + 93FF58BB64FF56BA61FF53B85FFF51B65BFF4FB559FF80CA87FF5CAC62FF4094 + 45F93D9142FF3A8E3FFFFFFFFF00FFFFFF0062B86AFF8BCF95FF8ACF92FF69C1 + 72FF86CD8EFF84CC8CFF83CB8AFF81CA88FF5DBB66FF7EC884FF409445FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005EB465FF88CF91FF56B961FF85CD + 8DFF65B56CFF4CA152FF499E4FFF5DAD63FF7CC783FF7BC681FF3C9041FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005AAF61FF86CD8EFF84CC8CFF83CA + 89FF4CA152FFFFFFFF00FFFFFF00429647FF7AC681FF76C37CFF398D3DFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AB5DFF52A759FF4FA455FF4BA0 + 51FF489C4DF7FFFFFF00FFFFFF003E9243FD3B8F40FD398C3DF4368A3AE6FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0078CF82D475CD80FF73CA7DFE70C77AB4FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0077CF + 821278CD82FF9CD9A7FF98D8A2FF6DC476ECFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001414FFFF1414 + FFFF72C97CF497D8A2FF8DD297FF69C072BEFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0079D083FF76CE81FF74CB7EFF1414 + FFFF1414FFFF97D7A1FF93D59DFF65BC6EF062B86AED5FB567EF1414FFFF1414 + FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF0076CE80FF9BD9A6FF99D8A4FF98D7 + A2FF1414FFFF1414FFFF93D49CFF8FD198FF8CD095FF1414FFFF1414FFFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0073CB7DFF99D8A3FF97D7A1FF79CB + 87FF69C377FF1414FFFF1414FFFF67C273FF1414FFFF1414FFFF53A95AFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0070C77AFF6DC477FF7CC985FF93D4 + 9CFF65C172FF62C06FFF1414FFFF1414FFFF1414FFFF88CF90FF66B56DFF4CA1 + 52FF489D4EFF45994AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF0066BD6FFF90D2 + 99FF60BF6DFF5EBD6AFF1414FFFF1414FFFF1414FFFF65BF6FFF83CC8BFF82CA + 89FF80CA88FF419646FFFFFFFF00FFFFFF00FFFFFF00FFFFFF0063B96BFF8DD1 + 96FF5DBC69FF1414FFFF1414FFFF55B960FF1414FFFF1414FFFF81CA88FF7EC8 + 85FF7EC884FF3E9242FFFFFFFF00FFFFFF0065BC6EFF62B86AFF72C07AFF8BCF + 93FF1414FFFF1414FFFF53B85FFF51B65BFF4FB559FF1414FFFF1414FFFF4094 + 45F93D9142FF3A8E3FFFFFFFFF00FFFFFF0062B86AFF8BCF95FF8ACF92FF1414 + FFFF1414FFFF84CC8CFF83CB8AFF81CA88FF5DBB66FF7EC884FF1414FFFF1414 + FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF005EB465FF88CF91FF1414FFFF1414 + FFFF65B56CFF4CA152FF499E4FFF5DAD63FF7CC783FF7BC681FF3C9041FF1414 + FFFF1414FFFFFFFFFF00FFFFFF00FFFFFF005AAF61FF1414FFFF1414FFFF83CA + 89FF4CA152FFFFFFFF00FFFFFF00429647FF7AC681FF76C37CFF398D3DFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AB5DFF52A759FF4FA455FF4BA0 + 51FF489C4DF7FFFFFF00FFFFFF003E9243FD3B8F40FD398C3DF4368A3AE6FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFE00636CA5FF233EC2FFFEFE + FE00F7F7FB00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CFD2 + D1FF868B89FF868B89FF868B89FF868B89FF868B89FF1F2777FF0A37CAFF0B45 + F3FFFEFEFE00FAFAFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00868B89FF868B + 89FF8D908FFFCFD2D1FFFFFFFF00FFFFFF006B6995FF232971FF0C2CBAFF0641 + F2FF4661CEFFFEFEFE00FFFFFF00FFFFFF00FFFFFF00868B89FFB86F6CFFB973 + 70FFFFFFFF00FEFEFD00FFFFFF00FFFFFF00232971FF232971FF0920A8FF0B45 + F3FF0B45F3FF5666C1FFFFFFFF00FFFFFF00A9524AFFBA5E54FFC47269FFC170 + 67FFB06358FFFFFFFF00FFFFFF009091ADFF232971FF232971FF031E8EFF0B45 + F3FF0B45F3FF0B45F3FFFFFFFF009C5048FFB14E45FFC17D71FFE7BAABFFD096 + 89FFC87A6EFFB4554BFFFFFFFF00FFFFFF00232971FF232971FF232971FF0B45 + F3FF0B45F3FF7C8ECFFFFFFFFF00832316FFBC5047FFC1786FFFDDA59BFFD29C + 92FFC37C71FFB4554BFFFFFFFF00FFFFFF00FFFFFF00232971FF232971FF0B45 + F3FF3E5CCCFF868B89FFFFFFFF00721F11FFAB4135FFBD6359FFC4746EFFD18B + 83FFB86B5EFFB15849FFFFFFFF00F9F9FA00FFFFFF00FFFFFF00232971FFFFFF + FF00FFFFFF00868B89FFFFFFFF00FFFFFF00852213FFB54236FFB55046FFBA53 + 49FFB44537FFFFFFFF00FFFFFF0072D4FDFF72D4FDFFF3F9FA00FFFFFF00FFFF + FF00FFFFFF00868B89FFFFFFFF00FFFFFF00868B89FF94362AFFAB4033FFB244 + 36FFF1F9FC00FFFFFF0072D4FDFF67D3FCFF6AD3FBFF72D4FDFFE2F5FCFFFFFF + FF00CFD2D1FF868B89FFFFFFFF00FFFFFF00868B89FF868B89FFFFFFFF00FFFF + FF00FFFFFF0072D4FDFF6AD1FEFF72D4FDFF6CD4FBFF72D4FDFF72D4FDFFFFFF + FF00868B89FF868B89FFFFFFFF00FFFFFF00CFD2D1FF868B89FFCFD2D1FFFFFF + FF00FFFFFF001799DAFF66D4FBFF6BD4FBFF72D4FDFF72D4FDFF29638CFFCFD2 + D1FF868B89FFCFD2D1FFFFFFFF00FFFFFF00FFFFFF00868B89FF868B89FFCFD2 + D1FFFFFFFF001799DAFF1799DAFF72D4FDFF72D4FDFF29638CFF29638CFF868B + 89FF868B89FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00CFD2D1FF868B89FF868B + 89FF868B89FF1799DAFF1799DAFF1799DAFF29638CFF29638CFF29638CFF868B + 89FFCFD2D1FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CFD2 + D1FF868B89FF868B89FF1799DAFF1799DAFF29638CFF29638CFFCFD2D1FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF001799DAFF29638CFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DB4D82B4BB2D8AF4AB0D7BC48AED631FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004EB6 + D9164DB4D8844BB2D7EF9CD5EAFF88CCE7FF45ACD5F344AAD48C42A7D31AFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004FB7DA054EB6D9654CB4 + D8DB92CFE5FFE6F8FCFFE3F6FEFFAFDDF2FFB2E4F7FF72C0E1FF3FA4D1E03DA2 + D06C3BA0CF09FFFFFF00FFFFFF00FFFFFF004FB7D9464EB5D9C27EC6E0FFD1EE + F7FFF6FFFFFFF0FEFFFFCBEDFBFF50ADDAFF8BD7F7FFAAE1F9FF95D6F2FF62B2 + DBFF399DCEC8369ACD4DFFFFFF004FB7D99F4DB5D9FEA5D9EDFFD2EBF5FFBEDE + EDFF95C9DEFF89C3DBFF70B8D6FF69B9DDFF90D7F5FF7FCFF5FF9DDBF8FFAAE3 + FAFF84CAECFF51A6D5FF3295CBA64DB4D8FBE1F8FEFFCDEBF9FF92D2EDFF84CC + EBFF6FBFE5FF56B1DBFF3B94C8FFCEECFAFFD9F5FFFFB9EAFFFF95DFFEFF77D5 + FFFFA5E4FFFF84DCFBFF2F92C9FB4BB2D7F0E2F8FDFFD4F3FFFFB0E4FAFF86CF + F1FF7FD0F5FF78D0F5FF4CB1E4FFB0E4FAFFB6E9FFFF9BE1FFFF78D6FEFF40BD + F5FF3DB5E9FF90D5F1FF2D8FC8F049B0D6F0E2F6FDFFDAF4FFFFD5F3FFFFBDEB + FFFF89D5F7FF69C9F5FF4CB4E9FF8DDAFBFF8CDCFFFF48C4F9FF38B6ECFF48BF + E8FF4FBBE8FF8CD0F0FF2B8DC7F047ADD5F0E2F6FCFFD7F4FFFFCEF2FFFFC8EF + FFFFBAEBFFFF92DBFBFF56C1F1FF48C2F9FF3BBDF0FF47C5ECFF45BDE9FF42B5 + E6FF47B1E6FF88CAEEFF288AC6F044AAD4F0E2F6FCFFD4F3FFFFC9F0FFFFBEED + FFFFB3EAFFFFADE7FFFF7CD9FEFF48C7EFFF43C4EAFF43BEE8FF3FB5E6FF3AAB + E3FF40A7E1FF83C5ECFF2687C5F042A8D3F9E7FBFEFFDDF6FFFFC1EFFFFFB7EB + FFFFABE8FFFFA4E4FFFF96E1FEFF48C6EBFF40BDE9FF3DB4E6FF38A9E2FF329F + DEFF6BB6E6FF83C4EEFF2485C4F840A5D2BB77BDDCFFBFE5F6FFDBF6FFFFC1EE + FFFFA5E5FFFF9FE3FFFF94E1FEFF46C1EAFF3AB5E6FF37AAE2FF56AFE5FF87C6 + EDFF74B3E4FF4A90CAFF2283C3C13DA2D0063BA0CF65399DCEDB7DC0E0FFC7EE + FCFFCCF2FFFFA8E8FFFF94E0FEFF41BAE7FF45B1E4FF8ACAEFFF82C1EBFF5397 + D0FF2384C3E02282C26D2080C20AFFFFFF00FFFFFF00369ACD163498CC853295 + CBEF82C4E5FFCCF4FFFFC4EFFFFF8BD2F1FF8ACEF0FF5FA4D7FF2586C4F32384 + C38D2182C21BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003093 + CA2B2E90C9A52C8EC8FE8FCDEBFF6FB7E2FF408EC8FF2485C4AC2383C331FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF002A8BC6462889C5BE2687C5C42485C44DFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009E6E4D2B9D6D4CD69D6D4BC59D6C + 4BFF9C6C4AFF9C6B49FF9B6A49FF9B6A48FF9A6947FF996846FF986745FF9364 + 43FF845D3EDEFFFFFF00FFFFFF00FFFFFF009D6D4C919D6D4BFEBB9778FFAC82 + 62FFAC8161FFAB8060FFAB7F5FFFAA7F5EFFA87E5DFFA87C5CFF9D6D4CFF9766 + 43FF885C3CFFFFFFFF00FFFFFF00FFFFFF009D6D4BCFBA9778FFD8C5B9FFE8DE + D7FFE7DDD6FFE6DCD6FFE4DBD4FFE3DAD3FFE2D8D1FFE1D7D0FFEBE7E5FFEFEF + EFFF573E2AFFFFFFFF00FFFFFF00FFFFFF009C6C4BE0D9C2A5FFB59170FFAB80 + 5FFFA97E5EFFA97E5EFFA87D5CFFA87C5BFFA77B5AFFA67959FF9C6B49FF9664 + 41FF573E2AFFFFFFFF00FFFFFF00FFFFFF009C6B4AE1DDC8A9FFD4BD95FFE6D4 + B9FFE6D1B6FFE4D0B5FFE3CEB3FFE2CBB0FFE0C9ADFFDFC7A9FFDABFA0FF9A6B + 4AFF573E2AFFFFFFFF00FFFFFF00FFFFFF009B6A49E1DBC5A6FFC6A776FFD9BF + 9BFFD1B793FFCBB08EFFCAAE8AFFC8AB87FFCBAB83FFD1B087FFD8BB9BFF996A + 48FF573E2AFFFFFFFF00FFFFFF00FFFFFF009B6A48E1D9C2A4FFC1A472FFD2B8 + 94FFF5EDE4FFF4ECE2FFF4ECE1FFF4EBE0FFF3EADFFFCBA97FFFD6B896FF9969 + 47FF573E2AFFFFFFFF00FFFFFF00FFFFFF009A6947E1D7BF9FFFBD9F6FFFD4B5 + 90FFCBAD88FFC7A881FFC6A57DFFC4A17AFFC5A176FFCBA77BFFD4B490FF9868 + 46FF573E2AFFFFFFFF00FFFFFF00FFFFFF00996846E1D5BB9BFFB89A69FFD4B3 + 8AFFD2AF87FFD0AD82FFCFAA7DFFCDA678FFCBA474FFCCA475FFD2B18AFF9767 + 45FF573E2AFFFFFFFF00FFFFFF00FFFFFF00996745E1D2B796FFB49265FFD1AE + 83FFCFAB7FFFCDA87AFFCBA576FFCAA271FFC89E6DFFC89F6DFFD0AE86FF9665 + 44FF573E2AFFFFFFFF00FFFFFF00FFFFFF00986644E1D0B492FFAF8B60FFCEA9 + 7CFFCCA677FFCBA374FFC9A06EFFC79D6AFFC69A66FFC69B68FFCDA882FF9564 + 42FF573E2AFFFFFFFF00FFFFFF00FFFFFF00976543E1CEB08EFFAA855BFFCBA4 + 75FFCAA271FFC89E6BFFC69B68FFC59963FFC2945EFFC49461FFCCA57DFF9463 + 41FF573E2AFFFFFFFF00FFFFFF00FFFFFF00966441E1CBAC88FFA67E57FFC99F + 6EFFC79D69FFC69966FFC39761FFC2925CFFC18F59FFC18E5BFFCAA178FF9462 + 40FF573E2AFFFFFFFF00FFFFFF00FFFFFF00966340E1CAA985FFA37854FFC69A + 67FFC49862FFC2945EFFC1905AFFC08C56FFBE8953FFBF8855FFC99D75FF9362 + 3FFF553C28E1FFFFFF00FFFFFF00FFFFFF0095623FE1CCAB85FFD1AF89FFD2B0 + 88FFD1AD85FFD0AA81FFCFA77FFFCEA47BFFCDA17AFFCB9F77FFC79971FF9361 + 3EFF4E3421A1FFFFFF00FFFFFF00FFFFFF0094613E9C94603DFF93603CFF925F + 3BFF925E3AFF915D39FF905D38FF905C38FF8F5B37FF8F5A36FF8E5A35FF8E59 + 35B1FFFFFF00FFFFFF00FFFFFF00FFFFFF00C17D4460C88B4DBBC88C4FEEC88C + 4FF6C88C4FF7C88C4FF7C88D4FF7C98C4FF7C78B4FF7C5894BD4C4763B91B368 + 3C06FFFFFF00FFFFFF00FFFFFF00FFFFFF00C48549C3F7F2ECECF8F4EEFCF8F4 + EDFFF8F3EDFFF8F3EDFFF8F3EDFFF8F2ECFFF7F2ECFFF2E6D7FFE2B27DFFDB94 + 65F5B3683B07FFFFFF00FFFFFF00FFFFFF00C5884BEAFAF6F2FCFAE0C7FFFBE1 + C9FFFBE2C9FFFBE0C8FFF9DFC5FFF8DBC1FFF4D6B8FFFFFBF8FFF6D8B4FFE1B0 + 7DFFDB9264F6B46B3E07FFFFFF00FFFFFF00C6894CF6F9F5F1FFFCE3CDFFFBE3 + CEFFFBE3CDFFFBE2CBFFF9E0C8FFF8DCC2FFF5D6BAFFFDFBF8FFFCE6CDFFFAE5 + C9FFE2B684FFBF7942A6FFFFFF00FFFFFF00C6894BF7F9F5F1FFFCE3CFFFFBE4 + D0FFFCE4CFFFFCE3CDFFFAE1CAFFF9DDC4FFF6D9BCFFF4E9DFFFF7F2ECFFFBF7 + F3FFF5EFE9FFC27E45FBFFFFFF00FFFFFF00C6894BF7F9F4F0FFFCE6D3FFFCE6 + D4FFFDE7D3FFFCE4D1FFFBE3CDFFFAE0C8FFF8DCC2FFF5D6BBFFF3D4B5FFF1D2 + B3FFF8F4F0FFC48246F7FFFFFF00FFFFFF00C6884AF7F9F4EFFFFEE7D7FFFDE7 + D6FFFDE7D5FFFDE6D4FFFCE6D2FFFBE1CCFFFADFC7FFF8DCC2FFF6DABDFFF6D8 + BBFFFAF4EFFFC68346F7FFFFFF00FFFFFF00C68849F7F9F4EDFFFEE8D8FFFEE8 + D8FFFEE8D7FFFEE7D6FFFDE5D3FFFCE4D1FFFBE1CCFFFAE0C7FFF9DDC3FFF8DC + C2FFFAF4EDFFC68245F7FFFFFF00FFFFFF00C68447F7F9F3ECFFFEE8D6FFFEE8 + D7FFFDE7D6FFFDE7D6FFFDE7D5FFFDE5D3FFFBE4D0FFFBE3CCFFFADFC7FFFADF + C6FFFAF2EAFFC68042F7FFFFFF00FFFFFF00C58245F7F8F2EBFFFEE7D6FFFDE7 + D6FFFDE7D6FFFDE7D6FFFDE6D5FFFDE5D3FFFCE4D1FFFCE2CDFFFBE1CBFFFBE1 + C9FFFBF7F2FFC57C3FF7FFFFFF00FFFFFF00C58042F7F8F1E8FFFEE5D5FFFDE5 + D3FFFDE5D3FFFCE5D3FFFCE5D3FFFCE4D1FFFCE2CEFFFCE2CCFFFBE0C9FFFBE1 + C8FFFDFAF7FFC1763BF7FFFFFF00FFFFFF00C47C40F7F7F0E6FFF8B455FFF7B4 + 56FFF7B554FFF8B453FFF8B253FFF7B352FFF7B352FFF7B251FFF7B24FFFF7B2 + 4FFFFCF9F5FFBF6F36F7FFFFFF00FFFFFF00C1783CF7F7EDE3FFFDC26EFFFFD8 + A0FFFFD79EFFFFD69BFFFFD798FFFFD696FFFFD695FFFFD594FFFFD493FFFBBE + 65FFFBF7F4FFBB6731F7FFFFFF00FFFFFF00BF7138F5F5EBDFFEFDBF68FFFCBD + 67FFFBBE65FFFCBE64FFFCBE64FFFCBD62FFFBBD63FFFBBC61FFFCBE60FFFCBC + 62FFFDFBF8FDB9642DF3FFFFFF00FFFFFF00BC6933DEF8F1EAF2F7ECDFFDF6EB + DEFFF6EADEFFF6EADCFFF6EADCFFFAF3EBFFFAF3EBFFFAF2EAFFFCF7F3FFFCF8 + F4FDFEFEFDF0B7602AD5FFFFFF00FFFFFF00BB6A346BBA6530BCBB6631EDBA66 + 30F7BA6630F7BA6630F7BA6530F7BA652FF7B9652EF7B9652EF7B9642EF7B964 + 2EEFB7622CBDB7622E63FFFFFF00BC6B3671BC6B3690BC6B36CCBC6B36EEBC6B + 36FABB6B36FEBB6B36FFBB6A36FFBB6A36FFBC6C39FFBD6E3BFFBB6D3AFFBB6B + 38EFBB703ECBB6693554FFFFFF00BC6B369BF6E0D1FFF7E0D1FFFEFBF8FFFEFB + F7FFFDF9F6FFFCF5F0FFFAF0EAFFFBF2EDFFFDF9F6FFFDFAF7FFFBF1EBFFF8E9 + DFFEECD0BDFBC9895EECB5693563BC6B36D8F6DFD1FFE9AA80FFFEFAF6FFFDFA + F6FFC88C64FFFBF3EEFFFBF1EAFFFCF6F2FFFEFBF8FFFCF6F1FFF9ECE2FFF8E7 + DBFFEED0BAFFECD0BDFFBB703EF8BC6B36F0F6DFD0FFE8A87EFFFCF6F1FFFCF6 + F1FFC88C64FFFAF1E9FFFBF4EEFFFDFAF7FFFDF9F6FFFAF0E8FFF8E8DDFFF7E6 + DBFFE1A37AFFEFD5C3FFB76935FEBC6B36FAF5DDCCFFE7A87EFFFAF0E8FFFAF0 + E8FFC98D66FFFAF0E9FFFDF8F3FFFEFAF8FFFCF4EFFFF9E9DFFFF7E7DBFFF7E5 + D9FFE0A278FFE7C2A9FFB66835FFBB6B36FEF4DCC9FFE7A77DFFF9ECE1FFF9EC + E1FFF9EDE3FFFCF4EEFFFDFAF7FFFDF7F3FFFAEDE5FFF7E7DBFFF7E5D9FFF6E5 + D8FFDEA077FFE4BEA4FFB46734FFBB6B36FFF4D9C7FFE6A67DFFC88C64FFC98D + 65FFC98E67FFCB926CFFCB926DFFCA9069FFC88C65FFC88C64FFC88C64FFC88C + 64FFDA9C74FFE1BA9FFFB36634FFBB6A36FFF2D8C5FFE3A47BFFE3A37AFFE3A4 + 7AFFE2A47BFFE2A37BFFE1A37BFFE1A279FFDFA077FFDE9F76FFDD9E74FFDB9C + 72FFDC9D74FFDDB59AFFB16534FFBB6A36FFF2D5C2FFE3A37AFFE3A37AFFE2A3 + 7BFFE2A37BFFE2A47BFFE1A279FFE0A178FFDEA077FFDE9E75FFDC9D74FFDA9B + 73FFD99B73FFDAB095FFAF6433FFBB6A36FFF0D2BEFFE2A37AFFE2A37AFFE1A3 + 7AFFE2A37BFFE1A37BFFE0A178FFDE9F77FFDD9F76FFDC9D74FFD99B72FFD899 + 71FFD69970FFD5AB8EFFAD6333FFBA6A36FFEFD0BBFFE2A27AFFFEFBF8FFFEFB + F8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB + F8FFD3966DFFD2A78AFFAB6232FFBB6B38FFEFCEB8FFE1A279FFFEFAF7FF62C0 + 88FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FFFDF9 + F6FFCF936AFFCEA384FFAA6132FFBB6C38FFEECCB6FFE1A27AFFFEFAF7FFBFDC + C2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFFDF9 + F6FFCD9068FFCC9E81FFA86132FFBA6B37FEEDCAB3FFE0A27AFFFEFAF7FF62C0 + 88FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FFFDF9 + F6FFCA8D65FFC99B7CFFA76031FEBA6A35DEEBC6ADFFEAC5ADFFFEFBF8FFFEFB + F8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB + F8FFC89A7CFFC79879FFA76031EDBA6A368FB96935B5B86935EEB76835FFB568 + 35FFB46734FFB26634FFB06533FFAE6433FFAC6332FFAA6232FFA96132FFA860 + 31FFA76031FEA66031F1A86131C4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FC00FFFFF700806D5EFF7C614CFF7C614CFF806D5EFFFFFFF700FFFFFC00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FB00FFFFF2007C614CFFE8CDB8FFE8CDB8FF7C614CFFFFFFF200FFFFFA00FFFF + FF00FFFFFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFC00FFFFFB00FFFF + F500FFFFED00836248FFEACEB6FFEACEB6FF836248FFFFFFEB00FFFFF500FFFF + F900FFFFFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFFFF200FFFF + EB00FFFFE6008A6245FFECCEB5FFECCEB5FF8A6245FFFFFFE600FFFFEB00FFFF + F100FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7A624CFF8362 + 48FF8A6343FF8A6343FFEDCFB4FFEDCFB4FF8C6343FF8C6342FF856346FF7F63 + 4BFF816F5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFEED4BCFFEFD2 + B7FFF2D2B5FFF1CFB2FFEDCFB2FFEFCFB2FFF5CFB1FFF4CEB0FFEFCDB0FFEBCD + B2FF7F634BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFE6CCB4FFD3B5 + 9CFFD4B497FFD5B395FFD4B294FFCFAC8BFFCFA989FFCCA688FFC6A487FFDCBE + A3FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7C614DFF8362 + 48FF8A6343FF8E6342FFD2AC8AFFD4AB8AFF906341FF8E6342FF876246FF7E62 + 4AFF826D5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF800FFFFF200FFFF + ED00FFFFE6008E6342FFF6D0AEFFD2AC8AFF8E6342FFFFFFE600FFFFED00FFFF + F200FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFC00FFFFFB00FFFF + F500FFFFED00856346FFEFCFB2FFCBAB8EFF856346FFFFFFEB00FFFFF500FFFF + FB00FFFFFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FB00FFFFF2007C614CFFECCEB5FFECCEB5FF7C614CFFFFFFF200FFFFFB00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FC00FFFFF700806D5EFF7B604BFF7D624DFF806D5EFFFFFFF700FFFFFC00FDFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7C614CFF8062 + 49FF816249FF816249FF826449FF816348FF836248FF836248FF84624AFF7E61 + 4CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFEED4BCFFEDD2 + B8FFEFD2B7FFEDCFB4FFEFCFB2FFEECEB1FFF1CFB2FFF0CEB1FFEFCCB2FFEBCC + B3FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFE6CCB4FFD1B6 + 9CFFD2B59AFFD1B398FFD2B295FFCBAB8EFFCBA98CFFC8A689FFC6A389FFDCBD + A4FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7C614CFF8062 + 49FF816249FF816249FF816249FF816249FF836248FF816348FF816249FF7C61 + 4CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0067C673C965C270C4FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0066C572D17ECA88FF7BC885FF5DB868CFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C7 + 740666C472DB7CCA87FF9ED6A7FF9CD4A5FF73C07DFF55AC5ED950A65906FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0065C3 + 71BB62BF6EF779C683FF9AD4A3FF98D3A1FF7DC386FF4FA458F74A9E53B8FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF005BB465FF96D29FFF94D09CFF5DAC65FF499C5238FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A50FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0050A659FF8ECC95FF8BCB93FF42924AFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A43FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0045954CFF85C78CFF82C689FF36823DFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF003F8D46FF81C587FF7EC385FF317A36FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0039853FFF7DC282FF7AC180FF2B7230FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00337D39FF79C07EFF76BF7CFF266B2BFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF002D7533FF74BD7AFF72BD78FF226526FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00286E2DFF256929FF216425FF1E6022FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774FF67C673FF65C270FF62BE6DFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0066C572FFA2D8ABFFA0D7A9FF5DB868FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0063C06FFF9ED6A7FF9CD4A5FF59B263FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF005FBB6AFF9AD4A3FF98D3A1FF53AA5DFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF005BB465FF96D29FFF94D09CFF4EA257FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A50FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0050A659FF8ECC95FF8BCB93FF42924AFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A43FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0045954CFF85C78CFF82C689FF36823DFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0043944B384E9A55FF81C587FF7EC385FF317A36FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004292 + 4AB83D8C45F765AD6CFF7DC282FF7AC180FF4B9250FF276D2CF7246828BBFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003C8A + 430638833ED9519957FF79C07EFF76BF7CFF468D4BFF236627DB20622306FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF002D7533CF488F4DFF458C4AFF226526D1FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00256929C4216425C9FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BE7A45FFBE7A45FFBE7A45FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000078553958BE7A45FFBE7A + 45FF78553958BE7A45FFE3CDBCFFBE7A45FF78553958BE7A45FFBE7A45FF0000 + 00000000000000000000000000000000000000000000BE7A45FFE3CDBCFFD2A7 + 86FFBE7A45FFC79064FFDAB89DFFC79064FFBE7A45FFD2A786FFE3CDBCFFBE7A + 45FF0000000000000000000000000000000000000000BE7A45FFD2A786FFDAB8 + 9DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFD2A786FFBE7A + 45FF000000000000000000000000000000000000000078553958BE7A45FFDAB8 + 9DFFCFA17CFFBA7A46F4C38656FFBA7A46F4D1A582FFDAB89DFFBE7A45FF7855 + 395800000000000000000000000000000000BE7A45FFBE7A45FFC79064FFDAB8 + 9DFFBA7A46F49C6B42AE785539598F633F97BA7C49EEDAB89DFFC79064FFBE7A + 45FFBE7A45FF000000000000000000000000BE7A45FFE3CDBCFFDAB89DFFDAB8 + 9DFFC38656FF785539590000000078553959C38656FFDAB89DFFDAB89DFFE3CD + BCFFBE7A45FF000000000000000000000000BE7A45FFBE7A45FFC79064FFDAB8 + 9DFFBD7F4CF8B78256CD78553959A56F43C0BA7A46F4DAB89DFFC79064FFBE7A + 45FFBE7A45FF0000000000000000000000000000000078553958BE7A45FFE3CD + BCFFCFA17CFFBD7F4CF8C38656FFBA7A46F4D5AE8FFFDAB89DFFBE7A45FF7855 + 39580000000000000000000000000000000000000000BE7A45FFD2A786FFDAB8 + 9DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFD2A786FFBE7A + 45FF0000000000000000000000000000000000000000BE7A45FFE3CDBCFFD2A7 + 86FFBE7A45FFC79064FFDAB89DFFC79064FFBE7A45FFD2A786FFE3CDBCFFBE7A + 45FF000000000000000000000000000000000000000000000000BE7A45FFBE7A + 45FF78553958BE7A45FFE3CDBCFFBE7A45FF78553958BE7A45FFBE7A45FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BE7A45FFBE7A45FFBE7A45FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00000000000000 + 0000000000000000000000000000BE7A45FFBE7A45FFBE7A45FF000000000000 + 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00000000007855 + 3958BE7A45FFBE7A45FF78553958BE7A45FFE3CDBCFFBE7A45FF78553958BE7A + 45FFBE7A45FF0000000000000000FFFFFF00FFFFFF00FFFFFF0000000000BE7A + 45FFE3CDBCFFD2A786FFBE7A45FFC79064FFDAB89DFFC79064FFBE7A45FFD2A7 + 86FFE3CDBCFFBE7A45FF00000000004B7CDA004A7BE300487847FFFFFF00BE7A + 45FFD2A786FFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB8 + 9DFFD2A786FFBE7A45FF000000000A69A6FF0B6DABFF004A7BF5004878447855 + 3958BE7A45FFDAB89DFFCFA17CFFBA7A46F4C38656FFBA7A46F4D1A582FFDAB8 + 9DFFBE7A45FF78553958000000000C72B2FF107DC1FF0A6BA9FF1C5173FFBD7A + 46FF628D81FFCAB59DFFBA7A46F49C6B42AE785539598F633F97BA7C49EEDAB8 + 9DFFC79064FFBE7A45FFBE7A45FF035286F40F7ABCFF107DC1FF0B5481FF2C93 + A1FF008B9CFFB7B19DFFC38656FF78553959FFFFFF0078553959C38656FFDAB8 + 9DFFDAB89DFFE3CDBCFFBE7A45FF004A7B95014E80F40B76B2FF0188A1FF33AE + BEFF269FADFFA6AD9DFFBD7F4CF8B78256CD78553959A56F43C0BA7A46F4DAB8 + 9DFFC79064FFBE7A45FFBE7A45FFFFFFFF000064878100889CFE41BDCDFF77DE + EBFF1C6AADFF1846A3FF25929AFF638572FBB3865CFFBA7A46F4D5AE8FFFDAB8 + 9DFFBE7A45FF7855395800000000008B9C5A018D9EF64FC8D8FF68DCECFF336D + C8FF0D1BABFF62B1D7FF72DCEAFF48BDCBFF1091A2FF539E9EFFC3B39DFFDAB8 + 9DFFD2A786FFBE7A45FF00000000008B9C5F008D9EEB29A5BBF6284ABBFF1D38 + B8FF61D8F6FF63EAFDFF6CEBFDFF7DEEFDFF88EAF8FF48BDCBFF0B8E9CFF4C97 + 96FFAABCB4FFBD7A46FF00000000FFFFFF00008B9C070024A1D71342ADFC84EA + FBFF6BECFDFF84EFFDFF6DECFDFF52E9FDFF44E5FBFF65E3F3FF77DDEBFF49C1 + CEFF239CA9FF008C9DEA00000000FFFFFF00FFFFFF00007F9C5F2FB0C0F58AEF + FDFF5FEAFDFF61EBFDFF52E9FDFF3CE6FDFF2ADBF3FF18D0E7FF10C6DCFF49D2 + E4FF67D4E2FF018D9FE900000000FFFFFF00FFFFFF00008B9C1A1194A5F78BED + FBFF3CE5FCFF37E4FBFF2FDEF6FF23D7EEFF14CDE5FF04C3DBFF03C2DAFF56D6 + E6FF33B6C6FB008E9FA8FFFFFF00FFFFFF00FFFFFF00FFFFFF00018EA0D45ECF + DDFF46DAEDFF18D0E7FF11CBE3FF07C4DCFF03C2DAFF03C2DAFF4CD3E4FF58CD + DCFF048E9FF4008B9C1CFFFFFF00FFFFFF00FFFFFF00FFFFFF00008B9C431A9B + ABF66CDAE8FF10C5DCFF03C2DAFF03C2DAFF15C6DCFF5BD7E7FF56C8D6FE058F + A0F1008B9C3FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DB4D82B4BB2D8AF4AB0D7BC48AED631FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004EB6 + D9164DB4D8844BB2D7EF9CD5EAFF88CCE7FF45ACD5F344AAD48C42A7D31AFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004FB7DA054EB6D9654CB4 + D8DB92CFE5FFE6F8FCFFE3F6FEFFAFDDF2FFB2E4F7FF72C0E1FF3FA4D1E03DA2 + D06C3BA0CF09FFFFFF00FFFFFF00FFFFFF004FB7D9464EB5D9C27EC6E0FFD1EE + F7FFF6FFFFFFF0FEFFFFCBEDFBFF50ADDAFF8BD7F7FFAAE1F9FF95D6F2FF62B2 + DBFF399DCEC8369ACD4DFFFFFF004FB7D99F4DB5D9FEA5D9EDFFD2EBF5FFBEDE + EDFF95C9DEFF89C3DBFF70B8D6FF69B9DDFF90D7F5FF7FCFF5FF9DDBF8FFAAE3 + FAFF84CAECFF51A6D5FF3295CBA64DB4D8FBE1F8FEFFCDEBF9FF92D2EDFF84CC + EBFF6FBFE5FF56B1DBFF3B94C8FFCEECFAFFD9F5FFFFAFCDDAFF9CA3A6FF9A9C + 9DFF9EB9C5FF84DCFBFF2F92C9FB4BB2D7F0E2F8FDFFD4F3FFFFB0E4FAFF86CF + F1FF7FD0F5FF78D0F5FF4CB1E4FFB0E4FAFFB3E1F5FF9CA3A6FFE1E1E1FFD2D2 + D2FF79A0B1FF90D5F1FF2D8FC8F049B0D6F0E2F6FDFFDAF4FFFFD5F3FFFFBDEB + FFFF89D5F7FF69C9F5FF4CB4E9FF8DDAFBFF91C7DEFFB5B5B5FFE6E6E6FF8F97 + 99FF7D9FADFF8EA6B1FF648DA5F847ADD5F0E2F6FCFFD7F4FFFFCEF2FFFFC8EF + FFFFBAEBFFFF92DBFBFF56C1F1FF48C2F9FF5AB1D3FFB2B2B2FFD6D6D6FF8696 + 9DFF8B8F91FFC0C0C0FF888989FF44AAD4F0E2F6FCFFD4F3FFFFC9F0FFFFBEED + FFFFB3EAFFFFADE7FFFF7CD9FEFF49C7EEFF829FA8FFCBCBCBFFD2D2D2FFC9C9 + C9FFD2D2D2FFC6C6C6FF7D858BFE42A8D3F9E7FBFEFFDDF6FFFFC1EFFFFFB7EB + FFFFABE8FFFFA4E4FFFFBDC8C7FFD9AC8FFFC4AFA3FFD5D5D5FFBBBBBBFFA6A6 + A6FFA0A0A0FF848B8FFF4984AAFB40A5D2BB77BDDCFFBFE5F6FFDBF6FFFFC1EE + FFFFA5E5FFFFBECBCBFFE0A987FFEBC7B0FFDDA17CFFBCA595FF7894A5FF86AE + C6FF79A3C4FF4F8FC3FF2283C3C13DA2D0063BA0CF65399DCEDB7DC0E0FFC7EE + FCFFD5CFC6FFDEA37EFFECC7B0FFEDCAB5FFE9BEA3FFD48E64FF82C1EBFF5397 + D0FF2384C3E02282C26D2080C20AFFFFFF00FFFFFF00369ACD163498CC853295 + CBEFDA9E79FFEBC4ADFFECC8B2FFEAC1A9FFDEA17CFFA0928FFF2586C4F32384 + C38D2182C21B8181810082828200FFFFFF00FFFFFF00FFFFFF00FFFFFF003093 + CA2BD4936BF9E6B89CFFE9BFA5FFDC9B74FF8C8688FF2485C4AC2383C3318585 + 8500838383008181810082828200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00D587595BD28353F4CB7D4DFC8C7F78E32485C44DD5835300D58353008585 + 8500838383008181810082828200000000000000000004733AFF2D8859FF859C + 90FF000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000004733AFFA4D9BEFF3D93 + 66FF5F8873FF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000004733AFFA9DCC1FF9BD5 + B7FF4C9F73FF3D7D5CFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000004733AFFA5DABFFF57BB + 87FF90D2B0FF5BAB82FF23774CFFD4D5D4FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000004733AFFA9DCC1FF45B4 + 7BFF47B47CFF82CCA6FF67B68CFF177745FFC1C5C3FF00000000000000000000 + 0000000000000000000000000000000000000000000004733AFFA9DCC1FF3EB1 + 76FF3AAF73FF36AE70FF6FC598FF71BF97FF187B49FFA6B0ABFF000000000000 + 0000000000000000000000000000000000000000000004733AFFA9DCC1FF36AD + 70FF32AC6DFF2DAA6AFF28A866FF58BC89FF78C59DFF1F804EFF839A8EFF0000 + 0000000000000000000000000000000000000000000004733AFFA9DCC1FF2EAD + 6BFF2BAD6AFF27AB68FF22A964FF1CA55FFF41B278FF78C69FFF298858FF678C + 79FF000000000000000000000000000000000000000004733AFFA9DCC1FF0CAA + 58FF12AE5EFF15AF60FF16AD61FF13AA5DFF3AB677FF75C79DFF288957FF4E83 + 67FF000000000000000000000000000000000000000004733AFFA9DCC1FF0DB3 + 5EFF0EB660FF0EB660FF0DB45FFF47C484FF70CA9CFF1D824DFF678C79FF0000 + 0000000000000000000000000000000000000000000004733AFFA9DCC1FF10BD + 65FF11C167FF13C269FF59D395FF67C998FF167C47FF889C92FF000000000000 + 0000000000000000000000000000000000000000000004733AFF83DCAFFF11C3 + 69FF1ACC73FF69DFA3FF5AC28DFF137643FF9EA7A3FF00000000000000000000 + 0000000000000000000000000000000000000000000009773FFF83DBAEFF1FC6 + 71FF72DEA7FF4BB27FFF177445FFA8ADAAFF0000000000000000000000000000 + 0000000000000000000000000000000000000000000004733AFF82D8ACFF76D6 + A6FF3C9D6AFF27744CFFACAEADFF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000004733AFF7ACFA4FF2C8C + 5AFF3D7659FFAEAEAEFF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000004733AFF21824FFF6382 + 72FF000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C88C4FFFC88C4FFFC88C4FFFC88C + 4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFF41000000440000000000 + 000000000000000000000000000000000000C88C4FFFFEFAF6FFFEFAF6FFFEFA + F6FFFEFAF6FFFEFAF6FFFEFAF6FFEFD1ACFFC88C4FFFD4825800430000000000 + 000000000000FFFFFF000000000000000000C88C4FFFFEFAF6FFC88C4FFFC88C + 4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFFFFF + FF0000000000000000000000000000000000C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFEFD1ACFFC88C4FFF62B2 + DB0064B2D900000000000000000000000000C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C + 4FFFC88C4FFF51A6D5004400000050B5D900C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFEFD1 + ACFFC88C4FFF84DCFB003294CA0056B7D900C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFA + F6FFF3D5B0FFC88C4FFF3996CB0054B5D800C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFFFEFAF6FFFFFAF5FFF7F7F5FFC9E9F3FFAFE1F1FFE1EFF3FFFEF9 + F4FFFEFAF6FFC88C4FFF3794CA0052B2D700C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFFFEFAF6FFDBEFF3FFAEE1F4FFA1DEF5FF8FDAF9FF84D3F8FFB3E0 + F3FFFEFAF6FFC88C4FFF3591C9004FAFD700C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFFFEFAF6FF98DCF2FFAEE6FEFF7DD2F9FF76D3FEFF79D8FFFF51C4 + F9FFFEFAF6FFC88C4FFFBE7A450046AAD400C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFFFEFAF6FF93DAF1FFD3F3FFFF91DFFFFF53D0FFFF3BC5FFFF40B8 + F6FFFEFAF6FFC88C4FFFBE7A45003A000000C88C4FFFC88C4FFFC88C4FFFFEFA + F6FFC88C4FFFFEFAF6FF87D2F1FFA6E3FCFFA1E6FFFF5DCFFFFF3BB7F7FF5EB5 + ECFFFEFAF6FFC88C4FFFBE7A450038000000885C5C0055ABD500C88C4FFFFEFA + F6FFC88C4FFFFEFAF6FFDEEEF4FFBDE5F5FF72D1F8FF53C3F7FF68C2F0FFCBE4 + F1FFFEFAF6FFC88C4FFFBE7A45003900000082565600FEFEFE00C88C4FFFC88C + 4FFFC88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFA + F6FFFEFAF6FFC88C4FFFBE7A4500470000003003030005090900080505000805 + 0500C88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFA + F6FFFEFAF6FFC88C4FFFBE7A4500260000008C757500B3B5B500B2B3B300B2B2 + B200C88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C + 4FFFC88C4FFFC88C4FFFBE7A4500000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C27F4500C78A5282CF9B66D4CE9A + 64F4CE9963F8CE9963F8CE9A63F8CF9963F8CD9963F0CC925BC3CC844C61D48C + 5E0EB3683B00000000000000000000000000C4864A00D3A67AD9F8F4EDFFF8F4 + EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF2E1CEFFE2AF82FBDB97 + 6887D58C5E12B46B3E000000000000000000C5884B00D3A576F3F8F4EDFFFBC1 + 80FFFBC180FFFBC180FFFBC180FFFBC180FFFBC180FFF8F4EDFFF1DFCAFFE2B0 + 85FBD08E5C70BE7842000000000000000000C6894B00D3A475F9F8F4EDFFF8F4 + EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF1E1 + CCFFCE9666DCC17C44000000000000000000C6894B00D3A474F9F8F4EDFFFBC1 + 80FFFBC180FFFBC180FFFBC180FFFBC180FFFBC180FFFBC180FFFBC180FFF8F4 + EDFFD19E70FAC38046000000000000000000C6884A00D3A474F9F8F4EDFFF8F4 + EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4 + EDFFD2A071F9C58346000000000000000000C6884900D3A473F9F8F4EDFFFBD4 + A7FFFBD4A7FFFBD4A7FFFBD4A7FFFBD4A7FFFBD4A7FFFBD4A7FFFBD4A7FFF8F4 + EDFFD39F70F9C68245000000000000000000C6844700D3A071F9F8F4EDFFF8F4 + EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4 + EDFFD39D6EF9C67F42000000000000000000C5814400D29F6FF9F8F4EDFFFBDD + BBFFFBDDBBFFFBDDBBFFFBDDBBFFFBDDBBFFFBDDBBFFFBDDBBFFFBDDBBFFF8F4 + EDFFD19A6BF9C47A3E000000000000000000C57E4100D29D6DF9F8F4EDFFF8F4 + EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4 + EDFFCF9467F9C07339000000000000000000C27A3E00D0996BF9F8F4EDFFFBEA + D7FFFBEAD7FFFBEAD7FFFBEAD7FFFBEAD7FFFBEAD7FFFBEAD7FFFBEAD7FFF8F4 + EDFFCC8E63F9BD6B33000000000000000000C0743A00CE9568F8F8F4EDFFF8F4 + EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4 + EDFFCA8A60F7BA652F000000000000000000BD6B3400CD9067EBF8F4EDFFF8F4 + EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4EDFFF8F4 + EDFFC98A61E5B8612B000000000000000000BB6A3400BE703D8CC47B4DD4C379 + 49F4C27848F8C27848F8C27748F8C27747F8C17747F8C17747F8C17747F4C178 + 49D6BB6A3886B7622D0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000C88C4FFFC88C4FFFC88C4FFFC88C + 4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFF41000000440000000000 + 000000000000000000000000000000000000C88C4FFFFEFAF6FFFEFAF6FFFEFA + F6FFFEFAF6FFFEFAF6FFFEFAF6FFEFD1ACFFC88C4FFF4F000000440000000000 + 00001315FF001414FF001414FF0000000000C88C4FFFFEFAF6FFC88C4FFFC88C + 4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFF1414 + FF001314FF001414FF001414FF0000000000C88C4FFF1414FFFF1414FFFFFEFA + F6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFEFD1ACFFC88C4FFF62B2 + DB0064B2D9000D17FF000000000000000000C88C4FFFFEFAF6FF1414FFFF1414 + FFFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFF1414FFFF1414 + FFFFC88C4FFF51A6D5004700000050B5D900C88C4FFFFEFAF6FFC88C4FFF1414 + FFFF1414FFFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FF1414FFFF1414FFFFEFD1 + ACFFC88C4FFF84DCFB003294CA0056B7D900C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FF1414FFFF1414FFFFFEFAF6FFFEFAF6FF1414FFFF1414FFFFFEFAF6FFFEFA + F6FFF3D5B0FFC88C4FFF3996CB0054B5D800C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFF1414FFFF1414FFFF1414FFFF1414FFFFAFE1F1FFE1EFF3FFFEF9 + F4FFFEFAF6FFC88C4FFF1414FF0052B2D700C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FFC88C4FFF1414FFFF1414FFFF1414FFFF1414FFFF8FDAF9FF84D3F8FFB3E0 + F3FFFEFAF6FFC88C4FFF1414FF004FAFD700C88C4FFFFEFAF6FFC88C4FFFFEFA + F6FF1414FFFF1414FFFF98DCF2FFAEE6FEFF1414FFFF1414FFFF79D8FFFF51C4 + F9FFFEFAF6FFC88C4FFFBE7A450046AAD400C88C4FFFFEFAF6FFC88C4FFF1414 + FFFF1414FFFFFEFAF6FF93DAF1FFD3F3FFFF91DFFFFF1414FFFF1414FFFF40B8 + F6FFFEFAF6FFC88C4FFFBE7A45003A000000C88C4FFFC88C4FFF1414FFFF1414 + FFFFC88C4FFFFEFAF6FF87D2F1FFA6E3FCFFA1E6FFFF5DCFFFFF1414FFFF1414 + FFFFFEFAF6FFC88C4FFFBE7A4500380000008A5E5A001414FFFF1414FFFFFEFA + F6FFC88C4FFFFEFAF6FFDEEEF4FFBDE5F5FF72D1F8FF53C3F7FF68C2F0FF1414 + FFFF1414FFFFC88C4FFFBE7A4500390000001414FFFF1414FFFFC88C4FFFC88C + 4FFFC88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFA + F6FFFEFAF6FFC88C4FFFBE7A450046000000380A5500161BFF000505EA000000 + 0900C88C4FFFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFAF6FFFEFA + F6FFFEFAF6FFC88C4FFF1414FF00240000008F78A800BBBCFF00BFBFF800B9B9 + B100C88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C4FFFC88C + 4FFFC88C4FFFC88C4FFF1414FF00000000000000000000000000000000002A6F + 51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F + 51FF2A6F51FF2A6F51FF2A6F51FF000000000000000000000000000000002A6F + 51FFC1DCD0FFA0CBB6FFA0CBB6FFA0CBB6FFA0CBB6FFA4CFBCFFA5D0BDFFA9D4 + C1FFABD6C3FFABD6C3FF2A6F51FF000000000000000000000000000000002A6F + 51FFA0CBB6FF6EB191FF6EB191FF6EB191FF72B595FF72B597FF76B89BFF7BBD + A0FF7ABD9FFF83C3A8FF2A6F51FF000000000000000000000000000000002A6F + 51FFA0CBB6FF6EB191FF6EB191FF70B393FF74B797FF73B698FF7ABA9EFF7DC0 + A2FF82C2A7FF84C3A8FF2A6F51FF000000000000000000000000000000002A6F + 51FFA0CBB6FF6EB191FF6EB191FF72B495FF75B798FF76B89BFF79BC9EFF80C1 + A5FF84C3A8FF85C6AAFF2A6F51FF000000000000000000000000000000002A6F + 51FFA0CBB6FF6EB191FF6EB191FF75B798FF77B89CFF7ABC9FFF7EC1A4FF83C2 + A7FF83C4A8FF88C7ADFF2A6F51FF0000000000000000684C3034684C30702A6F + 51FFA0CBB6FF6EB191FF6EB191FF77B89BFF7BBDA0FF7FC1A3FF7DBFA3FF81C0 + A5FF87C6ABFF88C9ADFF2A6F51FF00000000684C30527C604695B5A290952A6F + 51FFA0CBB6FF6EB194FF73B498FF77B89CFF7CBFA2FF7CBEA1FF82C1A6FF85C8 + ABFF89C8AEFF8DCEB3FF2A6F51FF684C30347C604695C2B2A495AB927D952A6F + 51FFA0CBB6FF6FB295FF74B79AFF78B99DFF7ABC9FFF7FBFA3FF84C5A9FF89C8 + AEFF8DCEB3FF8FD0B5FF2A6F51FF684C3070B5A29095B19A8795A78C74952A6F + 51FFA1CCB7FF71B497FF75B79BFF7CBEA1FF7FC2A5FF81C1A6FF88C8ADFF8ACB + B0FF8FCFB4FF90D1B6FF2A6F51FF684C3090C4B4A695A78C7495A98E76952A6F + 51FFA2CDBBFF73B699FF75B89BFF7BBEA1FF82C2A7FF85C4A8FF88C9ADFF8FCF + B4FF90D1B6FF92D3B8FF2A6F51FF684C3090C6B6A795A98E7695AC9179952A6F + 51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F51FF2A6F + 51FF2A6F51FF2A6F51FF2A6F51FF684C3070BEAC9D95AC917995AF937B95B196 + 7D95B4998095B69B8295B99E8495B3977E95684C307000000000000000000000 + 0000000000000000000000000000684C30347E634895BEA89595B79E8795B499 + 8095B69B8295B99E8495BB9F869585694E95684C303400000000000000000000 + 000000000000000000000000000000000000684C305289705895BCA79395BAA1 + 8A95B89D8395B3977E9585694E95684C30520000000000000000000000000000 + 00000000000000000000000000000000000000000000684C3034684C3070684C + 3090684C3090684C3070684C3034000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000082221000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000134E4C6C000000FF0616152300000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000009000000FF3EF6EEFF000000FF00000000000000000000 + 0000000000000000000000000000000000000000000000000000041110071A67 + 6478000000FF000000FF3DF1EAFF3FF8F0FF35D2CBF8000000FF000000FF134C + 4A6B00000000041110001A676400000000000000000000000000071D1C000000 + 00FF3FF8F0FF3FF8F0FF3FF8F0FF3FF8F0FF3FF8F0FF3FF8F0FF3DF0E9FF0000 + 00FF00000000000000000000000000000000000000000000000000000000081F + 1F25000000FF3FF8F0FF3FF8F0FF3FF8F0FF3FF8F0FF3CECE5FF000000FF0105 + 05070000000000000000081F1F00000000000000000000000000000000000000 + 0000000000FF3DF0E8FF3FF8F0FF3FF8F0FF3FF8F0FF2DB0ABFA000000FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000FF3FF8F0FF3EF3ECFF000000FF3FF7EFFF36D6CEFF000000FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000FF2FBAB4F3000000FF0618183F000000FF35D4CDFD000000FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000081F1E67000000FF000000000000000000000000000000FF051716460000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E1BDA6FFD9AB8DFFC9895EFFC07543FFBD6E + 3AFFBB6C37FFBB6B36FFBB6A36FFBB6A36FFBC6C39FFBD6E3BFFBB6D3AFFBF74 + 44FFC98D65FFE7CEBCFF00000000D6A585FFF6E0D1FFF7E0D1FFFEFBF8FFFEFB + F7FFFDF9F6FFFCF5F0FFFAF0EAFFFBF2EDFFFDF9F6FFFDFAF7FFFBF1EBFFF8E9 + DFFFECD1BEFFCD926AFFE2C5B1FFC68255FFF6DFD1FFE9AA80FFFEFAF6FFFDFA + F6FFDAF1F3FFAFF4FAFF99F6FEFF99F6FEFFAFF4FAFFDAF1F3FFF9ECE2FFF8E7 + DBFFEED0BAFFECD0BDFFBD7443FFC07442FFF6DFD0FFE8A87EFFFCF6F1FFC6F2 + F6FF94F7FFFF94F7FFFF94F7FFFF94F7FFFF94F7FFFF94F7FFFFB8E4E8FFF7E6 + DBFFE1A37AFFEFD5C3FFB76A36FFBD6E3AFFF5DDCCFFE7A87EFFFAF0E8FFB5EF + FFFF849CA5FF292929FF292929FF292929FF292929FF849CA5FFB5EFFFFFF7E5 + D9FFE0A278FFE7C2A9FFB66835FFBB6C37FFF4DCC9FFE7A77DFFC9E6F0FFB5EF + FFFF292929FF292929FFB5EFFFFF849CA5FF292929FF292929FFB5EFFFFFC9EF + F9FFDEA077FFE4BEA4FFB46734FFBB6B36FFF4D9C7FFE6A67DFFBAECFAFFB5EF + FFFF292929FF525252FFB5EFFFFFB5EFFFFF292929FF292929FFB5EFFFFFBAEF + FDFFDA9C74FFE1BA9FFFB36634FFBB6A36FFF2D8C5FFE3A47BFFB5EEFEFFB5EF + FFFFB5EFFFFFB5EFFFFFB5EFFFFF525252FF292929FF525252FFB5EFFFFFB5EF + FEFFDC9D74FFDDB59AFFB16534FFBB6A36FFF2D5C2FFE3A37AFFD0F2FAFFCEF7 + FFFFCEF7FFFFCEF7FFFF525252FF292929FF849CA5FFCEF7FFFFCEF7FFFFD2F7 + FEFFD99B73FFDAB095FFAF6433FFBB6A36FFF0D2BEFFE2A37AFFE2A37AFFCEF7 + FFFFCEF7FFFFCEF7FFFF292929FF525252FFCEF7FFFFCEF7FFFFCEF7FFFFD899 + 71FFD69970FFD5AB8EFFAD6333FFBA6A36FFEFD0BBFFE2A27AFFFEFBF8FFCEF7 + FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFFEFB + F8FFD3966DFFD2A78AFFAB6232FFBB6B38FFEFCEB8FFE1A279FFFEFAF7FF62C0 + 88FF62C088FFCEF7FFFF292929FF525252FFCEF7FFFF62C088FF62C088FFFDF9 + F6FFCF936AFFCEA384FFAA6132FFBB6C38FFEECCB6FFE1A27AFFFEFAF7FFBFDC + C2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFFDF9 + F6FFCD9068FFCC9E81FFA86132FFBA6C38FFEDCAB3FFE0A27AFFFEFAF7FF62C0 + 88FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FFFDF9 + F6FFCA8D65FFC99B7CFFA76132FFC37D4FFFEBC6ADFFEAC5ADFFFEFBF8FFFEFB + F8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB + F8FFC89A7CFFC79879FFAD6B40FFD8AB8EFFCD9570FFBD7342FFB76835FFB568 + 35FFB46734FFB26634FFB06533FFAE6433FFAC6332FFAA6232FFA96132FFA860 + 31FFA76132FFAB693CFFBC8661FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004EA2 + 57914A9D527FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004DA1569163B3 + 6DFF5FAF69FF41914979FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004CA0559162B26CFF82D1 + 8FFF7AC885FF57A660FF38843F7BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004B9F549160B06AFF81CF8DFF7FCF + 8BFF58A761FF398540FF347E3A08FFFFFF00FFFFFF005FBB6A435CB76765FFFF + FF00FFFFFF00FFFFFF00FFFFFF004B9E53915FAF69FF7FCE8AFF7ECE89FF57A6 + 60FF37823DFC337D3908FFFFFF00FFFFFF005FBA6A3C5CB666E66DC079FF55AC + 5F6FFFFFFF00FFFFFF004A9D52915EAE68FF7DCD89FF7CCD87FF56A55FFF3681 + 3CFC327C3808FFFFFF00FFFFFF005EB969465BB566E479C986FF80CE8DFF51A6 + 5AFC4DA1566F499C518B5CAD67FF7CCC86FF79CB85FF54A45DFF35803BFC317B + 3708FFFFFF00FFFFFF00FFFFFF005AB4650959B063FF6BBD76FF84D290FF7AC9 + 85FF60B26AFF63B46DFF78C983FF78CB82FF53A35CFF347F3AFD317A3608FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0053A95C0A51A65AFF63B56DFF7ECE + 89FF7BCC87FF76CA81FF76C981FF52A25AFF347E3AFE30793508FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004B9E530A499A51FF5BAC + 64FF77CA82FF74C87EFF51A059FF337D39FE2F783508FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004292490A408E + 47FF54A35CFF4F9F57FF327C38FE2E773408FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003985 + 400A37833DFF317B37FB2E763307FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00317A360A2D753207FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006360 + F80AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007774FF1F7774 + FF2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00625FF82B5D5B + F76F5956F53EFFFFFF00FFFFFF00FFFFFF00FFFFFF007774FF1F7A77FFFF7976 + FEFF726FFD2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00615EF82B6461F8FF6A68 + F9FF5451F3A84F4DF229FFFFFF00FFFFFF007774FF1F7A77FFFF817EFFFF817E + FEFF7471FDFF6C69FB2BFFFFFF00FFFFFF00605DF72B625FF8FF6F6DFBFF7E7C + FFFF625FF8FF4A47F06F4542EE02FFFFFF007673FF087471FEFD7D7AFEFF8A87 + FFFF7C79FDFF6C69FBFF6361F92B5F5CF72B615EF8FF6E6CFAFF7D7AFFFF615F + F7FF4946F0FC4441EE05FFFFFF00FFFFFF00FFFFFF00716EFD086E6BFCFC7774 + FDFF8682FFFF7673FCFF6462F8FF605DF7FF6D6AFAFF7B79FFFF605DF7FF4845 + EFFC4341EE08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006967FB086663 + F9FC706DFBFF807EFFFF7E7BFFFF7C79FFFF7977FFFF5E5CF7FF4744EFFC4240 + EE08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00615E + F8085D5AF6FD7D79FFFF5E5BFFFF5B58FFFF7674FFFF4643EFFD413FED08FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005C59 + F62B5D5BF7FF7976FFFF5956FFFF5754FFFF7270FFFF4846F0FF3C39EB2BFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005B58F62B5C5A + F6FF6764FAFF7472FFFF7370FFFF706EFFFF6E6CFFFF5755F7FF3F3DEEFF3230 + E82BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005A57F52B5B59F6FF6663 + FAFF7471FFFF5A58F6FF4341EEFC3E3CECFD504DF4FF6867FFFF504EF5FF3634 + EBFF2A27E52BFFFFFF00FFFFFF00FFFFFF005956F52B5B58F6FF6562FAFF7170 + FFFF5956F6FF4240EEFC3E3BEC083937EB083532E9FC4745F2FF6362FFFF4A48 + F4FF2F2DE9FF2220E32BFFFFFF00FFFFFF005451F3415856F5FF6361FAFF5855 + F6FF413FEDFC3D3AEC08FFFFFF00FFFFFF00302DE7082C2AE6FC413FF1FF4C4A + F6FF312FEAFF1F1DE241FFFFFF00FFFFFF00FFFFFF004A47F0414F4CF2FF403E + EDFD3C39EB08FFFFFF00FFFFFF00FFFFFF00FFFFFF002725E5082422E4FC312F + EAFF1F1DE241FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003F3DED413B38 + EB08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00211FE3081E1C + E241FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00C0C0C0FFB7B7B7FFB6B6B6FFBCBCBCFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DEDEDEFFDEDEDEFFF2F2 + F200FFFFFF00C1C1C1FFE5E5E5FFE4E4E4FFA9A9A9FFFEFEFE00F1F1F100D9D9 + D9FFD9D9D9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00BABABAFFCDCDCDFFC2C2 + C2FFE7E7E7FFC8C8C8FFDEDEDEFFDDDDDDFFBABABAFFE5E5E5FFA9A9A9FFA7A7 + A7FFA5A5A5FFFFFFFF00FFFFFF00FFFFFF00BCBCBCFFDCDCDCFFEDEDEDFFDBDB + DBFFC4C4C4FFBDBDBDFFD6D6D6FFD4D4D4FFAFAFAFFFB0B0B0FFCBCBCBFFE7E7 + E7FFB7B7B7FFA3A3A3FFFFFFFF00FFFFFF00BABABAFFC3C3C3FFDCDCDCFFD4D4 + D4FFD9D9D9FFDBDBDBFFD6D6D6FFD4D4D4FFD9D9D9FFD2D2D2FFCBCBCBFFC8C8 + C8FF797979FF999999FFFFFFFF00FFFFFF00FFFFFF00B7B7B7FFD4D4D4FFCCCC + CCFFC9C9C9FFBABABAFF9C9C9CFFA1A1A1FFC2C2C2FFC6C6C6FFC1C1C1FFB7B7 + B7FF9F9F9FFFFFFFFF00FFFFFF00BBBBBBFFBBBBBBFFC4C4C4FFD8D8D8FFCDCD + CDFFBCBCBCFF8C8C8CFFDBDBDBCDDDDDDDCD959595FFC3C3C3FFC2C2C2FFCDCD + CDFF979797FF8B8B8BFF8B8B8BFFC2C2C2FFE9E9E9FFD6D6D6FFC9C9C9FFCECE + CEFFA5A5A5FFDEDEDECDFFFFFF00FFFFFF00E4E4E4CDACACACFFC4C4C4FFBABA + BAFFC6C6C6FFDDDDDDFF6B6B6BFFBEBEBEFFE2E2E2FFD2D2D2FFC6C6C6FFCDCD + CDFFB1B1B1FFE2E2E2CDFFFFFF00FFFFFF00E3E3E3CDA8A8A8FFC2C2C2FFB7B7 + B7FFC0C0C0FFD2D2D2FF616161FFA1A1A1FF919191FFA8A8A8FFCFCFCFFFC6C6 + C6FFCCCCCCFF9E9E9EFFE4E4E4CDE2E2E2CD959595FFC1C1C1FFBCBCBCFFB9B9 + B9FF737373FF656565FF6B6B6BFFFFFFFF00FFFFFF00ADADADFFC5C5C5FFC1C1 + C1FFC5C5C5FFC7C7C7FFAAAAAAFFA7A7A7FFC1C1C1FFBEBEBEFFB5B5B5FFAAAA + AAFF939393FFFFFFFF00FFFFFF00FFFFFF00AEAEAEFFA5A5A5FFD5D5D5FFC5C5 + C5FFCBCBCBFFD1D1D1FFC9C9C9FFC7C7C7FFCCCCCCFFC5C5C5FFBDBDBDFFCBCB + CBFF6E6E6EFF959595FFFFFFFF00FFFFFF00ACACACFFBCBCBCFFDEDEDEFFA6A6 + A6FF898989FF858585FFC4C4C4FFC2C2C2FF6E6E6EFF767676FFA6A6A6FFD2D2 + D2FF808080FF8F8F8FFFFFFFFF00FFFFFF00FFFFFF00959595FF707070FF6E6E + 6EFFE1E1E1FF949494FFCBCBCBFFC7C7C7FF787878FFDEDEDEFF646464FF4F4F + 4FFF7B7B7BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00D0D0D0FFD0D0D0FFEDED + ED66FEFEFE00848484FFBDBDBDFFB2B2B2FF656565FFFEFEFE00ECECEC88CCCC + CCFFCCCCCCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00A4A4A4FF747474FF707070FF9C9C9CFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A465341DA769 + 3A9FA76A3ADEA56736F6A76939E5A76A3ABCA4653453A4653405FFFFFF00FFFF + FF00FFFFFF00A4653479A4653410FFFFFF00FFFFFF00A4653550A66838F6C090 + 68FAD3B08FFFDFC2A8FFDEC1A8FFD4B193FFB9875FF4A56737F0A4653458FFFF + FF00A4663566A46534FFA465340FFFFFFF00A4653429A66939F5D3AD8CFFDCBD + 9DFFDDBEA1FFE5CBB4FFE9D3BFFFEEDDCCFFF0E2D5FFE7D2BFFFAF774BF5A567 + 36C0AB7143F7A46635FCA465340EFFFFFF00A769399BC09069FDC59872FFA86B + 3CFFA46635FFA76A3AFCB7855DF3D9BBA1FEF1E4D8FFF2E6DBFFF3E8DDFFCEA7 + 88FDEAD8C8FFA76A3AF9A465340DFFFFFF00A66838F3AB7041FFA96C3CFEA76A + 3AF5A4653475A4653419A4653445A66938CDB98861F5EBDBCDFFF5EBE2FFF6EE + E6FFF6EEE6FFA76A3AFAA465340BFFFFFF00A46535FEA76A3AFBC791689DA567 + 37E6A4653423FFFFFF00FFFFFF00FFFFFF00A4653460A46635FFE9D7C7FFEBD8 + C6FFF5ECE3FFA66A3AFAA465340AFFFFFF00A46534FCB3794C7ECF9D762BBB83 + 5713A4653402FFFFFF00FFFFFF00A4653404A66838C4D0AC8FFAF6EEE7FFF2E6 + DBFFF6EEE6FFA66A3AFBA4653409FFFFFF00A465340DFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00A46534A0A46534FFAD7447F8AF774CF7AF77 + 4CF7AF784CF7A46534FFA4653408FFFFFF00A46534F9A46534FEA46534FEA465 + 34FDA46534FCA46534FBA46534B9A465341DA4653418A4653418A4653418A465 + 3418A4653418A465341CFFFFFF00FFFFFF00A46534FCF5EDE5FFF6EDE5FFF5EC + E4FFD7B79CFDA66837E0A4653410FFFFFF00FFFFFF00FFFFFF00FFFFFF00D5A4 + 7E1ACD997239A46534FCA465340CFFFFFF00A46635FCF6EEE6FFEBD7C4FFEAD9 + C9FFA46534FEA465346AFFFFFF00FFFFFF00FFFFFF00A465340BA56635E9C995 + 6C8DB77F53C2A46534FFA4653405FFFFFF00A56737FDF6EEE6FFF5ECE3FFF5ED + E4FFE6D2C1FFB0794DF5A66938CAA4653436FFFFFF00A465346AA96B3CEDB67C + 4FFFA76A3AFEA56837FAFFFFFF00FFFFFF00A66838FDF1E4D8FFD4B295FEF4E9 + E0FFF3E8DDFFEDDCCCFFD2AD8FFEB0784CF5A56635FBA66939FFA66939FEA96D + 3DFFB0784CFFA76A3AA8FFFFFF00FFFFFF00A56737FEB7845BF7A56736D4B17A + 4EF4E3CAB4FFECDAC9FFE7D1BCFFE3C9B0FFDEBEA0FFD2AB88FFCEA582FFD3AE + 8EFFA66838F5A465342AFFFFFF00FFFFFF00A46534FFA5673693FFFFFF00A465 + 3454A66737EEB58055F3CEA684FFD8B697FFDBB999FFD3AC8AFFC2946DFCA668 + 38F6A466355BFFFFFF00FFFFFF00FFFFFF00A46534A2A4653401FFFFFF00FFFF + FF00A4653405A4653453A76A3ABEA66938E9A46635FAA76A3AE4A76B3BAAA465 + 3424FFFFFF00FFFFFF00FFFFFF00 + } + end + object PopupMenuMore: TPopupMenu + Images = ImageListMain + OnPopup = PopupMenuMorePopup + left = 208 + top = 96 + object PMISaveAs: TMenuItem + Action = AProjectGroupSaveAs + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000D8AB8EFFCD95 + 70FFBD7342FFB76835FFB56835FFB46734FFB26634FFB06533FFAE6433FFAC63 + 32FFAA6232FFA96132FFA86031FFA76132FFAB693CFFBC8661FFC37D4FFFEBC6 + ADFFEAC5ADFFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB + F8FFFEFBF8FFFEFBF8FFFEFBF8FFC89A7CFFC79879FFAD6B40FFBA6C38FFEDCA + B3FFE0A27AFFFEFAF7FF62C088FF62C088FF62C088FF62C088FF62C088FF62C0 + 88FF62C088FF62C088FFFDF9F6FFCA8D65FFC99B7CFFA76132FFBB6C38FFEECC + B6FFE1A27AFFFEFAF7FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDC + C2FFBFDCC2FFBFDCC2FFFDF9F6FFCD9068FFCC9E81FFA86132FFBB6B38FFEFCE + B8FFE1A279FFFEFAF7FF62C088FF62C088FFCEF7FFFF292929FF525252FFCEF7 + FFFF62C088FF62C088FFFDF9F6FFCF936AFFCEA384FFAA6132FFBA6A36FFEFD0 + BBFFE2A27AFFFEFBF8FFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7 + FFFFCEF7FFFFCEF7FFFFFEFBF8FFD3966DFFD2A78AFFAB6232FFBB6A36FFF0D2 + BEFFE2A37AFFE2A37AFFCEF7FFFFCEF7FFFFCEF7FFFF292929FF525252FFCEF7 + FFFFCEF7FFFFCEF7FFFFD89971FFD69970FFD5AB8EFFAD6333FFBB6A36FFF2D5 + C2FFE3A37AFFD0F2FAFFCEF7FFFFCEF7FFFFCEF7FFFF525252FF292929FF849C + A5FFCEF7FFFFCEF7FFFFD2F7FEFFD99B73FFDAB095FFAF6433FFBB6A36FFF2D8 + C5FFE3A47BFFB5EEFEFFB5EFFFFFB5EFFFFFB5EFFFFFB5EFFFFF525252FF2929 + 29FF525252FFB5EFFFFFB5EFFEFFDC9D74FFDDB59AFFB16534FFBB6B36FFF4D9 + C7FFE6A67DFFBAECFAFFB5EFFFFF292929FF525252FFB5EFFFFFB5EFFFFF2929 + 29FF292929FFB5EFFFFFBAEFFDFFDA9C74FFE1BA9FFFB36634FFBB6C37FFF4DC + C9FFE7A77DFFC9E6F0FFB5EFFFFF292929FF292929FFB5EFFFFF849CA5FF2929 + 29FF292929FFB5EFFFFFC9EFF9FFDEA077FFE4BEA4FFB46734FFBD6E3AFFF5DD + CCFFE7A87EFFFAF0E8FFB5EFFFFF849CA5FF292929FF292929FF292929FF2929 + 29FF849CA5FFB5EFFFFFF7E5D9FFE0A278FFE7C2A9FFB66835FFC07442FFF6DF + D0FFE8A87EFFFCF6F1FFC6F2F6FF94F7FFFF94F7FFFF94F7FFFF94F7FFFF94F7 + FFFF94F7FFFFB8E4E8FFF7E6DBFFE1A37AFFEFD5C3FFB76A36FFC68255FFF6DF + D1FFE9AA80FFFEFAF6FFFDFAF6FFDAF1F3FFAFF4FAFF99F6FEFF99F6FEFFAFF4 + FAFFDAF1F3FFF9ECE2FFF8E7DBFFEED0BAFFECD0BDFFBD7443FFD6A585FFF6E0 + D1FFF7E0D1FFFEFBF8FFFEFBF7FFFDF9F6FFFCF5F0FFFAF0EAFFFBF2EDFFFDF9 + F6FFFDFAF7FFFBF1EBFFF8E9DFFFECD1BEFFCD926AFFE2C5B1FFE1BDA6FFD9AB + 8DFFC9895EFFC07543FFBD6E3AFFBB6C37FFBB6B36FFBB6A36FFBB6A36FFBC6C + 39FFBD6E3BFFBB6D3AFFBF7444FFC98D65FFE7CEBCFF00000000 + } + end + end + object ActionListMain: TActionList + Images = ImageListMain + left = 48 + top = 152 + object AProjectGroupSave: TAction + Category = 'ProjectGroupActions' + Caption = 'Save' + ImageIndex = 7 + OnExecute = AProjectGroupSaveExecute + OnUpdate = AProjectGroupSaveUpdate + end + object AProjectGroupSaveAs: TAction + Category = 'ProjectGroupActions' + Caption = 'Save As' + ImageIndex = 21 + OnExecute = AProjectGroupSaveAsExecute + OnUpdate = AProjectGroupSaveAsUpdate + end + object AProjectGroupAddExisting: TAction + Category = 'ProjectGroupActions' + Caption = 'Add' + ImageIndex = 8 + OnExecute = AProjectGroupAddExistingExecute + end + object AProjectGroupDelete: TAction + Category = 'ProjectGroupActions' + Caption = 'Remove' + ImageIndex = 9 + OnExecute = AProjectGroupDeleteExecute + OnUpdate = AProjectGroupDeleteUpdate + end + object AProjectGroupAddNew: TAction + Category = 'ProjectGroupActions' + Caption = 'New Target' + ImageIndex = 6 + end + object ATargetEarlier: TAction + Category = 'TargetAction' + Caption = 'Earlier' + ImageIndex = 10 + OnExecute = ATargetEarlierExecute + OnUpdate = ATargetEarlierUpdate + end + object ATargetLater: TAction + Category = 'TargetAction' + Caption = 'Later' + ImageIndex = 11 + OnExecute = ATargetLaterExecute + OnUpdate = ATargetLaterUpdate + end + object ATargetCompile: TAction + Category = 'TargetAction' + Caption = 'Compile' + ImageIndex = 12 + OnExecute = ATargetCompileExecute + OnUpdate = ATargetCompileUpdate + end + object ATargetCompileClean: TAction + Category = 'TargetAction' + Caption = 'Compile Clean' + ImageIndex = 13 + OnExecute = ATargetCompileCleanExecute + OnUpdate = ATargetCompileCleanUpdate + end + object ATargetCompileFromHere: TAction + Category = 'TargetAction' + Caption = 'Compile from here' + OnExecute = ATargetCompileFromHereExecute + OnUpdate = ATargetCompileFromHereUpdate + end + object ATargetProperties: TAction + Category = 'TargetAction' + Caption = 'Properties' + ImageIndex = 14 + OnExecute = ATargetPropertiesExecute + OnUpdate = ATargetPropertiesUpdate + end + object ATargetRun: TAction + Category = 'TargetAction' + Caption = 'Run' + ImageIndex = 15 + OnExecute = ATargetRunExecute + OnUpdate = ATargetRunUpdate + end + object ATargetInstall: TAction + Category = 'TargetAction' + Caption = 'Install' + OnExecute = ATargetInstallExecute + OnUpdate = ATargetInstallUpdate + end + object ATargetUninstall: TAction + Category = 'TargetAction' + Caption = 'Uninstall' + OnExecute = ATargetUninstallExecute + OnUpdate = ATargetUninstallUpdate + end + object ATargetActivate: TAction + Category = 'TargetAction' + Caption = 'Activate' + ImageIndex = 19 + OnExecute = ATargetActivateExecute + OnUpdate = ATargetActivateUpdate + end + object ATargetOpen: TAction + Category = 'TargetAction' + Caption = 'Open' + OnExecute = ATargetOpenExecute + OnUpdate = ATargetOpenUpdate + end + object ATargetCopyFilename: TAction + Category = 'TargetAction' + Caption = 'Copy Filename' + OnExecute = ATargetCopyFilenameExecute + OnUpdate = ATargetCopyFilenameUpdate + end + object AProjectGroupReload: TAction + Category = 'ProjectGroupActions' + Caption = 'Reload' + ImageIndex = 25 + OnExecute = AProjectGroupReloadExecute + end + end + object PopupMenuTree: TPopupMenu + Images = ImageListMain + left = 208 + top = 152 + object PMICopyFilenameMenuItem: TMenuItem + Action = ATargetCopyFilename + end + object PMIRunMenuItem: TMenuItem + Action = ATargetRun + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000000000000000 + 000004733AFF21824FFF638272FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000004733AFF7ACFA4FF2C8C5AFF3D7659FFAEAEAEFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000004733AFF82D8ACFF76D6A6FF3C9D6AFF27744CFFACAEADFF000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000009773FFF83DBAEFF1FC671FF72DEA7FF4BB27FFF177445FFA8ADAAFF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000004733AFF83DCAFFF11C369FF1ACC73FF69DFA3FF5AC28DFF137643FF9EA7 + A3FF000000000000000000000000000000000000000000000000000000000000 + 000004733AFFA9DCC1FF10BD65FF11C167FF13C269FF59D395FF67C998FF167C + 47FF889C92FF0000000000000000000000000000000000000000000000000000 + 000004733AFFA9DCC1FF0DB35EFF0EB660FF0EB660FF0DB45FFF47C484FF70CA + 9CFF1D824DFF678C79FF00000000000000000000000000000000000000000000 + 000004733AFFA9DCC1FF0CAA58FF12AE5EFF15AF60FF16AD61FF13AA5DFF3AB6 + 77FF75C79DFF288957FF4E8367FF000000000000000000000000000000000000 + 000004733AFFA9DCC1FF2EAD6BFF2BAD6AFF27AB68FF22A964FF1CA55FFF41B2 + 78FF78C69FFF298858FF678C79FF000000000000000000000000000000000000 + 000004733AFFA9DCC1FF36AD70FF32AC6DFF2DAA6AFF28A866FF58BC89FF78C5 + 9DFF1F804EFF839A8EFF00000000000000000000000000000000000000000000 + 000004733AFFA9DCC1FF3EB176FF3AAF73FF36AE70FF6FC598FF71BF97FF187B + 49FFA6B0ABFF0000000000000000000000000000000000000000000000000000 + 000004733AFFA9DCC1FF45B47BFF47B47CFF82CCA6FF67B68CFF177745FFC1C5 + C3FF000000000000000000000000000000000000000000000000000000000000 + 000004733AFFA5DABFFF57BB87FF90D2B0FF5BAB82FF23774CFFD4D5D4FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000004733AFFA9DCC1FF9BD5B7FF4C9F73FF3D7D5CFF00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000004733AFFA4D9BEFF3D9366FF5F8873FF0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000004733AFF2D8859FF859C90FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000 + } + end + object PMICompile: TMenuItem + Action = ATargetCompile + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BE7A45FFBE7A45FFBE7A45FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000BE7A45FFBE7A45FF78553958BE7A45FFE3CDBCFFBE7A45FF7855 + 3958BE7A45FFBE7A45FF00000000000000000000000000000000000000000000 + 0000BE7A45FFE3CDBCFFD2A786FFBE7A45FFC79064FFDAB89DFFC79064FFBE7A + 45FFD2A786FFE3CDBCFFBE7A45FF000000000000000000000000000000000000 + 0000BE7A45FFD2A786FFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB8 + 9DFFDAB89DFFD2A786FFBE7A45FF000000000000000000000000000000000000 + 000078553958BE7A45FFE3CDBCFFCFA17CFFBD7F4CF8C38656FFBA7A46F4D5AE + 8FFFDAB89DFFBE7A45FF7855395800000000000000000000000000000000BE7A + 45FFBE7A45FFC79064FFDAB89DFFBD7F4CF8B78256CD78553959A56F43C0BA7A + 46F4DAB89DFFC79064FFBE7A45FFBE7A45FF000000000000000000000000BE7A + 45FFE3CDBCFFDAB89DFFDAB89DFFC38656FF785539590000000078553959C386 + 56FFDAB89DFFDAB89DFFE3CDBCFFBE7A45FF000000000000000000000000BE7A + 45FFBE7A45FFC79064FFDAB89DFFBA7A46F49C6B42AE785539598F633F97BA7C + 49EEDAB89DFFC79064FFBE7A45FFBE7A45FF0000000000000000000000000000 + 000078553958BE7A45FFDAB89DFFCFA17CFFBA7A46F4C38656FFBA7A46F4D1A5 + 82FFDAB89DFFBE7A45FF78553958000000000000000000000000000000000000 + 0000BE7A45FFD2A786FFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB89DFFDAB8 + 9DFFDAB89DFFD2A786FFBE7A45FF000000000000000000000000000000000000 + 0000BE7A45FFE3CDBCFFD2A786FFBE7A45FFC79064FFDAB89DFFC79064FFBE7A + 45FFD2A786FFE3CDBCFFBE7A45FF000000000000000000000000000000000000 + 000078553958BE7A45FFBE7A45FF78553958BE7A45FFE3CDBCFFBE7A45FF7855 + 3958BE7A45FFBE7A45FF00000000000000000000000000000000000000000000 + 000000000000000000000000000000000000BE7A45FFBE7A45FFBE7A45FF0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000 + } + end + object PMICompileClean: TMenuItem + Action = ATargetCompileClean + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00008B9C431A9BABF66CDAE8FF10C5DCFF03C2DAFF03C2DAFF15C6 + DCFF5BD7E7FF56C8D6FE058FA0F1008B9C3FFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00018EA0D45ECFDDFF46DAEDFF18D0E7FF11CBE3FF07C4DCFF03C2 + DAFF03C2DAFF4CD3E4FF58CDDCFF048E9FF4008B9C1CFFFFFF00FFFFFF00FFFF + FF00008B9C1A1194A5F78BEDFBFF3CE5FCFF37E4FBFF2FDEF6FF23D7EEFF14CD + E5FF04C3DBFF03C2DAFF56D6E6FF33B6C6FB008E9FA8FFFFFF00FFFFFF00FFFF + FF00007F9C5F2FB0C0F58AEFFDFF5FEAFDFF61EBFDFF52E9FDFF3CE6FDFF2ADB + F3FF18D0E7FF10C6DCFF49D2E4FF67D4E2FF018D9FE900000000FFFFFF00008B + 9C070024A1D71342ADFC84EAFBFF6BECFDFF84EFFDFF6DECFDFF52E9FDFF44E5 + FBFF65E3F3FF77DDEBFF49C1CEFF239CA9FF008C9DEA00000000008B9C5F008D + 9EEB29A5BBF6284ABBFF1D38B8FF61D8F6FF63EAFDFF6CEBFDFF7DEEFDFF88EA + F8FF48BDCBFF0B8E9CFF4C9796FFAABCB4FFBD7A46FF00000000008B9C5A018D + 9EF64FC8D8FF68DCECFF336DC8FF0D1BABFF62B1D7FF72DCEAFF48BDCBFF1091 + A2FF539E9EFFC3B39DFFDAB89DFFD2A786FFBE7A45FF00000000FFFFFF000064 + 878100889CFE41BDCDFF77DEEBFF1C6AADFF1846A3FF25929AFF638572FBB386 + 5CFFBA7A46F4D5AE8FFFDAB89DFFBE7A45FF7855395800000000004A7B95014E + 80F40B76B2FF0188A1FF33AEBEFF269FADFFA6AD9DFFBD7F4CF8B78256CD7855 + 3959A56F43C0BA7A46F4DAB89DFFC79064FFBE7A45FFBE7A45FF035286F40F7A + BCFF107DC1FF0B5481FF2C93A1FF008B9CFFB7B19DFFC38656FF78553959FFFF + FF0078553959C38656FFDAB89DFFDAB89DFFE3CDBCFFBE7A45FF0C72B2FF107D + C1FF0A6BA9FF1C5173FFBD7A46FF628D81FFCAB59DFFBA7A46F49C6B42AE7855 + 39598F633F97BA7C49EEDAB89DFFC79064FFBE7A45FFBE7A45FF0A69A6FF0B6D + ABFF004A7BF50048784478553958BE7A45FFDAB89DFFCFA17CFFBA7A46F4C386 + 56FFBA7A46F4D1A582FFDAB89DFFBE7A45FF7855395800000000004B7CDA004A + 7BE300487847FFFFFF00BE7A45FFD2A786FFDAB89DFFDAB89DFFDAB89DFFDAB8 + 9DFFDAB89DFFDAB89DFFDAB89DFFD2A786FFBE7A45FF00000000FFFFFF00FFFF + FF00FFFFFF0000000000BE7A45FFE3CDBCFFD2A786FFBE7A45FFC79064FFDAB8 + 9DFFC79064FFBE7A45FFD2A786FFE3CDBCFFBE7A45FF00000000FFFFFF00FFFF + FF00FFFFFF000000000078553958BE7A45FFBE7A45FF78553958BE7A45FFE3CD + BCFFBE7A45FF78553958BE7A45FFBE7A45FF0000000000000000FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000BE7A45FFBE7A + 45FFBE7A45FF0000000000000000000000000000000000000000 + } + end + object PMICompileFromHere: TMenuItem + Action = ATargetCompileFromHere + end + object PMIDelete: TMenuItem + Action = AProjectGroupDelete + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00806D5EFF7C614CFF806249FF816249FF816249FF816249FF816249FF8362 + 48FF816348FF816249FF7C614CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF007C614CFFE6CCB4FFD1B69CFFD2B59AFFD1B398FFD2B295FFCBAB8EFFCBA9 + 8CFFC8A689FFC6A389FFDCBDA4FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF007C614CFFEED4BCFFEDD2B8FFEFD2B7FFEDCFB4FFEFCFB2FFEECEB1FFF1CF + B2FFF0CEB1FFEFCCB2FFEBCCB3FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00806D5EFF7C614CFF806249FF816249FF816249FF826449FF816348FF8362 + 48FF836248FF84624AFF7E614CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + object PMIEarlier: TMenuItem + Action = ATargetEarlier + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00286E2DFF256929FF216425FF1E60 + 22FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533FF74BD7AFF72BD78FF2265 + 26FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00337D39FF79C07EFF76BF7CFF266B + 2BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0039853FFF7DC282FF7AC180FF2B72 + 30FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003F8D46FF81C587FF7EC385FF317A + 36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682 + 3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A + 43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292 + 4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A + 50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF5DAC + 65FF499C5238FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0065C371BB62BF6EF779C683FF9AD4A3FF98D3A1FF7DC3 + 86FF4FA458F74A9E53B8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0068C7740666C472DB7CCA87FF9ED6A7FF9CD4A5FF73C0 + 7DFF55AC5ED950A65906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572D17ECA88FF7BC885FF5DB8 + 68CFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0067C673C965C270C4FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + object PMILater: TMenuItem + Action = ATargetLater + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00256929C4216425C9FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533CF488F4DFF458C4AFF2265 + 26D1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF003C8A430638833ED9519957FF79C07EFF76BF7CFF468D + 4BFF236627DB20622306FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF0042924AB83D8C45F765AD6CFF7DC282FF7AC180FF4B92 + 50FF276D2CF7246828BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0043944B384E9A55FF81C587FF7EC385FF317A + 36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682 + 3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A + 43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292 + 4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A + 50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF4EA2 + 57FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005FBB6AFF9AD4A3FF98D3A1FF53AA + 5DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0063C06FFF9ED6A7FF9CD4A5FF59B2 + 63FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572FFA2D8ABFFA0D7A9FF5DB8 + 68FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C774FF67C673FF65C270FF62BE + 6DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + object PMIOpen: TMenuItem + Action = ATargetOpen + end + object PMIProperties: TMenuItem + Action = ATargetProperties + Caption = 'Options' + Bitmap.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00D587595BD28353F4CB7D4DFC8C7F78E32485 + C44DD5835300D583530085858500838383008181810082828200FFFFFF00FFFF + FF00FFFFFF00FFFFFF003093CA2BD4936BF9E6B89CFFE9BFA5FFDC9B74FF8C86 + 88FF2485C4AC2383C33185858500838383008181810082828200FFFFFF00FFFF + FF00369ACD163498CC853295CBEFDA9E79FFEBC4ADFFECC8B2FFEAC1A9FFDEA1 + 7CFFA0928FFF2586C4F32384C38D2182C21B81818100828282003DA2D0063BA0 + CF65399DCEDB7DC0E0FFC7EEFCFFD5CFC6FFDEA37EFFECC7B0FFEDCAB5FFE9BE + A3FFD48E64FF82C1EBFF5397D0FF2384C3E02282C26D2080C20A40A5D2BB77BD + DCFFBFE5F6FFDBF6FFFFC1EEFFFFA5E5FFFFBECBCBFFE0A987FFEBC7B0FFDDA1 + 7CFFBCA595FF7894A5FF86AEC6FF79A3C4FF4F8FC3FF2283C3C142A8D3F9E7FB + FEFFDDF6FFFFC1EFFFFFB7EBFFFFABE8FFFFA4E4FFFFBDC8C7FFD9AC8FFFC4AF + A3FFD5D5D5FFBBBBBBFFA6A6A6FFA0A0A0FF848B8FFF4984AAFB44AAD4F0E2F6 + FCFFD4F3FFFFC9F0FFFFBEEDFFFFB3EAFFFFADE7FFFF7CD9FEFF49C7EEFF829F + A8FFCBCBCBFFD2D2D2FFC9C9C9FFD2D2D2FFC6C6C6FF7D858BFE47ADD5F0E2F6 + FCFFD7F4FFFFCEF2FFFFC8EFFFFFBAEBFFFF92DBFBFF56C1F1FF48C2F9FF5AB1 + D3FFB2B2B2FFD6D6D6FF86969DFF8B8F91FFC0C0C0FF888989FF49B0D6F0E2F6 + FDFFDAF4FFFFD5F3FFFFBDEBFFFF89D5F7FF69C9F5FF4CB4E9FF8DDAFBFF91C7 + DEFFB5B5B5FFE6E6E6FF8F9799FF7D9FADFF8EA6B1FF648DA5F84BB2D7F0E2F8 + FDFFD4F3FFFFB0E4FAFF86CFF1FF7FD0F5FF78D0F5FF4CB1E4FFB0E4FAFFB3E1 + F5FF9CA3A6FFE1E1E1FFD2D2D2FF79A0B1FF90D5F1FF2D8FC8F04DB4D8FBE1F8 + FEFFCDEBF9FF92D2EDFF84CCEBFF6FBFE5FF56B1DBFF3B94C8FFCEECFAFFD9F5 + FFFFAFCDDAFF9CA3A6FF9A9C9DFF9EB9C5FF84DCFBFF2F92C9FB4FB7D99F4DB5 + D9FEA5D9EDFFD2EBF5FFBEDEEDFF95C9DEFF89C3DBFF70B8D6FF69B9DDFF90D7 + F5FF7FCFF5FF9DDBF8FFAAE3FAFF84CAECFF51A6D5FF3295CBA6FFFFFF004FB7 + D9464EB5D9C27EC6E0FFD1EEF7FFF6FFFFFFF0FEFFFFCBEDFBFF50ADDAFF8BD7 + F7FFAAE1F9FF95D6F2FF62B2DBFF399DCEC8369ACD4DFFFFFF00FFFFFF00FFFF + FF004FB7DA054EB6D9654CB4D8DB92CFE5FFE6F8FCFFE3F6FEFFAFDDF2FFB2E4 + F7FF72C0E1FF3FA4D1E03DA2D06C3BA0CF09FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF004EB6D9164DB4D8844BB2D7EF9CD5EAFF88CCE7FF45AC + D5F344AAD48C42A7D31AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004DB4D82B4BB2D8AF4AB0D7BC48AE + D631FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + end + end + object OpenDialogTarget: TOpenDialog + Options = [ofFileMustExist, ofEnableSizing, ofViewDetail] + left = 48 + top = 96 + end + object SaveDialogPG: TSaveDialog + Options = [ofPathMustExist, ofEnableSizing, ofViewDetail] + left = 128 + top = 120 + end +end diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/projectgroupeditor.pas lazarus-1.6+dfsg/components/projectgroups/projectgroupeditor.pas --- lazarus-1.4.4+dfsg/components/projectgroups/projectgroupeditor.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/projectgroupeditor.pas 2015-12-19 15:59:32.000000000 +0000 @@ -0,0 +1,1543 @@ +{ + Todo: + - activate project when project is opened + - deactivate project when project is closed + - show active build mode +} +unit ProjectGroupEditor; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus, + ActnList, LCLProc, Clipbrd, LazIDEIntf, PackageIntf, ProjectIntf, + ProjectGroupIntf, MenuIntf, IDEDialogs, IDEWindowIntf, LazFileUtils, + LazLogger, LazFileCache, ProjectGroupStrConst, ProjectGroup; + +type + TNodeType = ( + ntUnknown, + ntProjectGroup, + ntTargets, + ntRemovedTargets, + ntTarget, + ntRemovedTarget, + ntBuildModes, + ntBuildMode, + ntFiles, + ntFile, + ntDependencies, + ntDependency + ); + + TNodeData = class(TObject) + NodeType: TNodeType; + Target, ParentTarget: TPGCompileTarget; + Value: string; // ntFile = Filename, ntDependency = PkgName, ntBuildMode = BuildMode name + end; + TTargetNodes = Array[Boolean] of TTreeNode; + + { TProjectGroupEditorForm } + + TProjectGroupEditorForm = class(TForm) + AProjectGroupReload: TAction; + ATargetCompileFromHere: TAction; + ATargetCopyFilename: TAction; + AProjectGroupAddExisting: TAction; + ATargetCompile: TAction; + ATargetCompileClean: TAction; + AProjectGroupAddNew: TAction; + ATargetActivate: TAction; + ATargetOpen: TAction; + AProjectGroupSaveAs: TAction; + ATargetUninstall: TAction; + ATargetInstall: TAction; + ATargetRun: TAction; + ATargetProperties: TAction; + ATargetLater: TAction; + ATargetEarlier: TAction; + AProjectGroupDelete: TAction; + AProjectGroupSave: TAction; + ActionListMain: TActionList; + ImageListMain: TImageList; + PMICompileFromHere: TMenuItem; + PMIRunMenuItem: TMenuItem; + PMICopyFilenameMenuItem: TMenuItem; + PMIOpen: TMenuItem; + PMISaveAs: TMenuItem; + PMIProperties: TMenuItem; + PMILater: TMenuItem; + PMIEarlier: TMenuItem; + PMIDelete: TMenuItem; + PMICompileClean: TMenuItem; + PMICompile: TMenuItem; + OpenDialogTarget: TOpenDialog; + PopupMenuMore: TPopupMenu; + PopupMenuTree: TPopupMenu; + SaveDialogPG: TSaveDialog; + SBPG: TStatusBar; + TBProjectGroup: TToolBar; + TBSave: TToolButton; + TBAdd: TToolButton; + TBNewTarget: TToolButton; + TBDelete: TToolButton; + TBCompile: TToolButton; + TBCompileClean: TToolButton; + ToolButton1: TToolButton; + TBTargetUp: TToolButton; + TBTargetLater: TToolButton; + TBMore: TToolButton; + TBActivate: TToolButton; + TBReload: TToolButton; + TVPG: TTreeView; + procedure AProjectGroupAddExistingExecute(Sender: TObject); + procedure AProjectGroupDeleteExecute(Sender: TObject); + procedure AProjectGroupDeleteUpdate(Sender: TObject); + procedure AProjectGroupReloadExecute(Sender: TObject); + procedure AProjectGroupSaveAsExecute(Sender: TObject); + procedure AProjectGroupSaveAsUpdate(Sender: TObject); + procedure AProjectGroupSaveExecute(Sender: TObject); + procedure AProjectGroupSaveUpdate(Sender: TObject); + procedure ATargetActivateExecute(Sender: TObject); + procedure ATargetActivateUpdate(Sender: TObject); + procedure ATargetCompileCleanExecute(Sender: TObject); + procedure ATargetCompileCleanUpdate(Sender: TObject); + procedure ATargetCompileExecute(Sender: TObject); + procedure ATargetCompileFromHereExecute(Sender: TObject); + procedure ATargetCompileFromHereUpdate(Sender: TObject); + procedure ATargetCompileUpdate(Sender: TObject); + procedure ATargetCopyFilenameExecute(Sender: TObject); + procedure ATargetCopyFilenameUpdate(Sender: TObject); + procedure ATargetEarlierExecute(Sender: TObject); + procedure ATargetEarlierUpdate(Sender: TObject); + procedure ATargetInstallExecute(Sender: TObject); + procedure ATargetInstallUpdate(Sender: TObject); + procedure ATargetLaterExecute(Sender: TObject); + procedure ATargetLaterUpdate(Sender: TObject); + procedure ATargetOpenExecute(Sender: TObject); + procedure ATargetOpenUpdate(Sender: TObject); + procedure ATargetPropertiesExecute(Sender: TObject); + procedure ATargetPropertiesUpdate(Sender: TObject); + procedure ATargetRunExecute(Sender: TObject); + procedure ATargetRunUpdate(Sender: TObject); + procedure ATargetUninstallExecute(Sender: TObject); + procedure ATargetUninstallUpdate(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure PopupMenuMorePopup(Sender: TObject); + procedure TVPGDblClick(Sender: TObject); + procedure TVPGMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure TVPGSelectionChanged(Sender: TObject); + private + FProjectGroup: TProjectGroup; + FProjectGroupTVNode: TTreeNode; + FActiveTarget: TPGCompileTarget; + FTargetNodes: TTargetNodes; + // Project group callbacks + procedure InitTVNode(Node: TTreeNode; Const ACaption: String; + ANodeData: TNodeData); + procedure OnProjectGroupDestroy(Sender: TObject); + procedure OnProjectGroupFileNameChanged(Sender: TObject); + procedure OnTargetAdded(Sender: TObject; Target: TPGCompileTarget); + procedure OnTargetReadded(Sender: TObject; Target: TPGCompileTarget); + procedure OnTargetDeleted(Sender: TObject; Target: TPGCompileTarget); + procedure OnTargetActiveChanged(Sender: TObject; Target: TPGCompileTarget); + procedure OnTargetExchanged(Sender: TObject; Target1, Target2: TPGCompileTarget); + function AllowPerform(ATargetAction: TPGTargetAction; AAction: TAction= Nil): Boolean; + procedure ClearEventCallBacks(AProjectGroup: TProjectGroup); + procedure SetEventCallBacks(AProjectGroup: TProjectGroup); + // Some helpers + procedure SetProjectGroup(AValue: TProjectGroup); + procedure ShowDependencies(AParent: TTreeNode; T: TPGCompileTarget; Out PD: TTargetNodes); + procedure ShowFileName; + procedure Perform(ATargetAction: TPGTargetAction); + function GetActiveTarget: TPGCompileTarget; + // Treeview Node management + function FindTVNodeOfTarget(ATarget: TPGCompileTarget): TTreeNode; + function FindBuildModeNodeRecursively(TVNode: TTreeNode; aMode: string): TTreeNode; + function FindTVNodeOfBuildMode(aMode: TPGBuildMode): TTreeNode; + procedure FreeNodeData; + class function TargetFromNode(N: TTreeNode): TPGCompileTarget; + function DisplayFileName(aTarget: TPGCompileTarget): string; + function DisplayFileName(Node: TTreeNode): string; + function DisplayFileName(NodeData: TNodeData): string; + function CreateSectionNode(AParent: TTreeNode; Const ACaption: String; ANodeType: TNodeType): TTreeNode; + function CreateTargetNode(AParent: TTreeNode; ANodeType: TNodeType; aTarget: TPGCompileTarget): TTreeNode; + function CreateSubNode(AParent: TTreeNode; ANodeType: TNodeType; aParentTarget: TPGCompileTarget; aValue: string): TTreeNode; + procedure ClearChildNodes(TVNode: TTreeNode); + procedure FillPackageNode(TVNode: TTreeNode; T: TPGCompileTarget); + procedure FillProjectNode(TVNode: TTreeNode; T: TPGCompileTarget); + procedure FillTargetNode(TVNode: TTreeNode; T: TPGCompileTarget); + procedure FillProjectGroupNode(TVNode: TTreeNode; AProjectGroup: TProjectGroup; Out TargetNodes: TTargetNodes); + function GetNodeImageIndex(ANodeType: TNodeType; ANodeData: TPGCompileTarget ): Integer; + function SelectedNodeData: TNodeData; + function SelectedTarget: TPGCompileTarget; + function GetTVNodeFilename(TVNode: TTreeNode): string; + function GetBuildMode(TVNode: TTreeNode): TPGBuildMode; + function GetNearestTargget(TVNode: TTreeNode): TPGCompileTarget; + function SelectedNodeType: TPGCompileTarget; + procedure UpdateIDEMenuCommandFromAction(Sender: TObject; Item: TIDEMenuCommand); + procedure UpdateStatusBarTargetCount; + protected + procedure Localize; + procedure ShowProjectGroup; + procedure UpdateShowing; override; + public + property ProjectGroup: TProjectGroup Read FProjectGroup Write SetProjectGroup; + property ActiveTarget: TPGCompileTarget Read GetActiveTarget; + end; + +var + ProjectGroupEditorForm: TProjectGroupEditorForm; + ProjectGroupEditorCreator: TIDEWindowCreator; // set by RegProjectGroup.Register + +const + ProjectGroupEditorName = 'ProjectGroupEditor'; +procedure ShowProjectGroupEditor(Sender: TObject; AProjectGroup: TProjectGroup); +procedure CreateProjectGroupEditor(Sender: TObject; aFormName: string; + var AForm: TCustomForm; DoDisableAutoSizing: boolean); +procedure SetProjectGroupEditorCallBack; + +function dbgs(NodeType: TNodeType): string; overload; + +implementation + +{$R *.lfm} + +var + // Nodelist image indexes + NIProjectGroup : integer = 0; + NITargets : integer = 1; + NIRemovedTargerts : integer = 2; + NITargetProject : integer = 3; + NITargetPackage : integer = 4; + NITargetProjectGroup : integer = 5; + NIRemovedTargetProject : integer = 3; + NIRemovedTargetPackage : integer = 4; + NIRemovedTargetProjectGroup: integer = 5; + NIBuildModes : integer = 12; + NIBuildMode : integer = 12; + NIFiles : integer = 16; + NIFile : integer = 17; + //NIRemovedFiles : integer = 18; + //NIRemovedFile : integer = 17; + NIDependencies : integer = 1; + NIDependency : integer = 1; + //NIRemovedDependencies : integer = 2; + //NIRemovedDependency : integer = 2; + + // Node state image index + NSIActive : Integer = 20; // State index for active. + + // overlay index + NSIChecked : Integer = 22; + NSIUnchecked : Integer = 23; + + // Action image indexes + iiProjectGroupSave : Integer = -1; + iiProjectGroupSaveAs : Integer = -1; + iiProjectGroupAddExisting : Integer = -1; + iiProjectGroupDelete : Integer = -1; + iiProjectGroupAddNew : Integer = -1; + iiTargetEarlier : Integer = -1; + iiTargetLater : Integer = -1; + iiTargetCompile : Integer = -1; + iiTargetCompileClean : Integer = -1; + iiTargetProperties : Integer = -1; + iiTargetRun : Integer = -1; + iiTargetInstall : Integer = -1; + iiTargetUninstall : Integer = -1; + iiTargetActivate : Integer = -1; + iiTargetOpen : Integer = -1; + +const + // Status bar Panel indexes + piTargetCount = 0; + piActiveTarget = 1; + +procedure ShowProjectGroupEditor(Sender: TObject; AProjectGroup: TProjectGroup); +begin + IDEWindowCreators.ShowForm(ProjectGroupEditorCreator.FormName,true); + if AProjectGroup<>nil then + ProjectGroupEditorForm.ProjectGroup:=AProjectGroup; +end; + +procedure CreateProjectGroupEditor(Sender: TObject; aFormName: string; + var AForm: TCustomForm; DoDisableAutoSizing: boolean); +begin + if CompareText(aFormName,ProjectGroupEditorName)<>0 then begin + DebugLn(['ERROR: CreateProjectGroupEditor: there is already a form with this name']); + exit; + end; + IDEWindowCreators.CreateForm(AForm,TProjectGroupEditorForm,DoDisableAutoSizing, + LazarusIDE.OwningComponent); + AForm.Name:=aFormName; +end; + +procedure SetProjectGroupEditorCallBack; +begin + ProjectGroupEditorCreator:=IDEWindowCreators.Add(ProjectGroupEditorName, + @CreateProjectGroupEditor,nil, + '30%','30%','+30%','+40%','ProjectGroupEditor',alNone); + OnShowProjectGroupEditor:=@ShowProjectGroupEditor; +end; + +function dbgs(NodeType: TNodeType): string; +begin + str(NodeType,Result); +end; + +{ TProjectGroupEditorForm } + +procedure TProjectGroupEditorForm.ClearEventCallBacks(AProjectGroup: TProjectGroup); +Var + PG: TIDEProjectGroup; +begin + //debugln(['TProjectGroupEditorForm.ClearEventCallBacks ']); + PG:=AProjectGroup as TIDEProjectGroup; + PG.RemoveAllHandlersOfObject(Self); + PG.OnFileNameChange:=Nil; + PG.OnTargetAdded:=Nil; + PG.OnTargetDeleted:=Nil; + PG.OnTargetReadded:=Nil; + PG.OnTargetActiveChanged:=Nil; + PG.OnTargetsExchanged:=Nil; +end; + +procedure TProjectGroupEditorForm.SetEventCallBacks(AProjectGroup: TProjectGroup); +Var + PG: TIDEProjectGroup; +begin + PG:=AProjectGroup as TIDEProjectGroup; + PG.AddHandlerOnDestroy(@OnProjectGroupDestroy); + PG.OnFileNameChange:=@OnProjectGroupFileNameChanged; + PG.OnTargetAdded:=@OnTargetAdded; + PG.OnTargetDeleted:=@OnTargetDeleted; + PG.OnTargetReadded:=@OnTargetReadded; + PG.OnTargetActiveChanged:=@OnTargetActiveChanged; + PG.OnTargetsExchanged:=@OnTargetExchanged; +end; + +procedure TProjectGroupEditorForm.SetProjectGroup(AValue: TProjectGroup); +begin + //debugln(['TProjectGroupEditorForm.SetProjectGroup START ',FProjectGroup=AValue,' new=',DbgSName(AValue)]); + if FProjectGroup=AValue then Exit; + if ProjectGroup<>nil then + begin + ClearEventCallBacks(ProjectGroup); + end; + FProjectGroup:=AValue; + if ProjectGroup<>nil then begin + SetEventCallBacks(ProjectGroup); + end; + FActiveTarget:=Nil; + ShowProjectGroup; +end; + +procedure TProjectGroupEditorForm.Localize; + + procedure ConfigAction(A: TAction; AImageIndex: Integer; Const ACaption,AHint: String; Mnu: TIDEMenuCommand); + begin + A.Caption:=ACaption; + A.Hint:=AHint; + if AImageIndex<>-1 then + A.ImageIndex:=AImageIndex; + If Assigned(mnu) then + Mnu.OnClick:=A.OnExecute; + end; + +begin + ConfigAction(AProjectGroupSave,iiProjectGroupSave,lisProjectGroupSaveCaption,lisProjectGroupSaveHint,Nil); + ConfigAction(AProjectGroupSaveAs,iiProjectGroupSaveAs,lisProjectGroupSaveAsCaption,lisProjectGroupSaveAsHint,Nil); + ConfigAction(AProjectGroupAddExisting,iiProjectGroupAddExisting,lisProjectGroupAddExistingCaption,lisProjectGroupAddExistingHint,Nil); + ConfigAction(AProjectGroupDelete,iiProjectGroupDelete,lisProjectGroupDeleteCaption,lisProjectGroupDeleteHint,Nil); + ConfigAction(AProjectGroupAddNew,iiProjectGroupAddNew,lisProjectGroupAddNewCaption,lisProjectGroupAddNewHint,Nil); + ConfigAction(ATargetEarlier,iiTargetEarlier,lisTargetEarlierCaption,lisTargetEarlierHint,Nil); + ConfigAction(ATargetLater,iiTargetLater,lisTargetLaterCaption,lisTargetLaterHint,Nil); + ConfigAction(ATargetCompile,iiTargetCompile,lisTargetCompileCaption,lisTargetCompileHint,Nil); + ConfigAction(ATargetCompileClean,iiTargetCompileClean,lisTargetCompileCleanCaption,lisTargetCompileCleanHint,Nil); + ConfigAction(ATargetProperties,iiTargetProperties,lisTargetPropertiesCaption,lisTargetPropertiesHint,Nil); + ConfigAction(ATargetRun,iiTargetRun,lisTargetRunCaption,lisTargetRunHint,Nil); + ConfigAction(ATargetInstall,iiTargetInstall,lisTargetInstallCaption,lisTargetInstallHint,Nil); + ConfigAction(ATargetUninstall,iiTargetUninstall,lisTargetUninstallCaption,lisTargetUninstallHint,Nil); + ConfigAction(ATargetActivate,iiTargetActivate,lisTargetActivateCaption,lisTargetActivateHint,Nil); + ConfigAction(ATargetOpen,iiTargetOpen,lisTargetOpenCaption,lisTargetOpenHint,Nil); +end; + +procedure TProjectGroupEditorForm.AProjectGroupSaveUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled:=(FProjectGroup<>nil) + and (FProjectGroup.Modified or (FProjectGroup.FileName='')); + UpdateIDEMenuCommandFromAction(Sender,cmdSaveProjectGroup); +end; + +procedure TProjectGroupEditorForm.ATargetEarlierExecute(Sender: TObject); +Var + T: TNodeData; + I: Integer; + PG: TProjectGroup; +begin + T:=SelectedNodeData; + if (T=nil) or (T.Target=nil) or (T.Target.Parent=nil) then + exit; + PG:=T.Target.Parent.ProjectGroup; + if PG=nil then exit; + I:=PG.IndexOfTarget(T.Target); + if I>0 then + PG.ExchangeTargets(I,I-1); +end; + +procedure TProjectGroupEditorForm.ATargetEarlierUpdate(Sender: TObject); +Var + T: TNodeData; + I: Integer; + PG: TProjectGroup; +begin + I:=0; + T:=SelectedNodeData; + if (T<>nil) and (T.Target<>nil) and (T.Target.Parent<>nil) then + begin + PG:=T.Target.Parent.ProjectGroup; + if PG<>nil then begin + I:=PG.IndexOfTarget(T.Target); + end; + end; + (Sender as TAction).Enabled:=I>0; + UpdateIDEMenuCommandFromAction(Sender,cmdTargetEarlier); +end; + +procedure TProjectGroupEditorForm.ATargetLaterExecute(Sender: TObject); +Var + T: TNodeData; + I: Integer; + PG: TProjectGroup; +begin + T:=SelectedNodeData; + if (T=nil) or (T.Target=nil) or (T.Target.Parent=nil) then + exit; + PG:=T.Target.Parent.ProjectGroup; + if PG=nil then exit; + I:=PG.IndexOfTarget(T.Target); + if I<0 then exit; + if (I+1<PG.TargetCount) then + PG.ExchangeTargets(I,I+1); +end; + +procedure TProjectGroupEditorForm.ATargetLaterUpdate(Sender: TObject); +Var + T: TNodeData; + I: Integer; + PG: TProjectGroup; +begin + T:=SelectedNodeData; + I:=-1; + PG:=nil; + if (T<>nil) and (T.Target<>nil) and (T.Target.Parent<>nil) then + begin + PG:=T.Target.Parent.ProjectGroup; + if PG<>nil then + I:=PG.IndexOfTarget(T.Target); + end; + (Sender as TAction).Enabled:=(PG<>nil) and (I+1<PG.TargetCount); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetLater); +end; + +procedure TProjectGroupEditorForm.ATargetUninstallExecute(Sender: TObject); +begin + Perform(taInstall); +end; + +procedure TProjectGroupEditorForm.ATargetUninstallUpdate(Sender: TObject); +begin + AllowPerform(taUninstall,Sender as TAction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetUninstall); +end; + +procedure TProjectGroupEditorForm.FormCloseQuery(Sender: TObject; + var CanClose: boolean); +begin + CanClose:=IDEProjectGroupManager.CheckSaved; +end; + +procedure TProjectGroupEditorForm.UpdateIDEMenuCommandFromAction( + Sender: TObject; Item: TIDEMenuCommand); +begin + Item.Enabled:=(Sender as TAction).Enabled; + Item.Visible:=(Sender as TAction).Visible; +end; + +procedure TProjectGroupEditorForm.UpdateStatusBarTargetCount; +var + Cnt: Integer; +begin + if FProjectGroup<>nil then + Cnt:=FProjectGroup.TargetCount + else + Cnt:=0; + SBPG.Panels[piTargetCount].Text:=Format(lisTargetCount, [Cnt]); +end; + +procedure TProjectGroupEditorForm.FormCreate(Sender: TObject); + + procedure SetItem(Item: TIDEMenuCommand; AnOnClick: TNotifyEvent; + aShow: boolean = true; AEnable: boolean = true); + begin + //debugln(['SetItem ',Item.Caption,' Visible=',aShow,' Enable=',AEnable]); + Item.OnClick:=AnOnClick; + Item.Visible:=aShow; + Item.Enabled:=AEnable; + end; + +begin + if ProjectGroupEditorForm=nil then + ProjectGroupEditorForm:=Self; + PGEditMenuSectionMisc.MenuItem:=PopupMenuMore.Items; + SetItem(cmdTargetAdd,@AProjectGroupAddExistingExecute); + SetItem(cmdTargetRemove,@AProjectGroupDeleteExecute); + SetItem(cmdTargetCompile,@ATargetCompileExecute); + SetItem(cmdTargetCompileClean,@ATargetCompileCleanExecute); + SetItem(cmdTargetCompileFromHere,@ATargetCompileFromHereExecute); + SetItem(cmdTargetInstall,@ATargetInstallExecute); + SetItem(cmdTargetUnInstall,@ATargetUnInstallExecute); + SetItem(cmdTargetLater,@ATargetLaterExecute); + SetItem(cmdTargetEarlier,@ATargetEarlierExecute); + SetItem(cmdTargetCopyFilename,@ATargetCopyFilenameExecute); +end; + +procedure TProjectGroupEditorForm.FormDestroy(Sender: TObject); +begin + debugln(['TProjectGroupEditorForm.FormDestroy ',ProjectGroup<>nil]); + ProjectGroup:=nil; + if ProjectGroupEditorForm=Self then + ProjectGroupEditorForm:=nil; +end; + +procedure TProjectGroupEditorForm.PopupMenuMorePopup(Sender: TObject); +var + ND: TNodeData; + AllowedActions: TPGTargetActions; +begin + ND:=SelectedNodeData; + if (ND<>nil) and (ND.Target<>nil) then begin + AllowedActions:=PGTargetActions[ND.Target.TargetType]; + end else begin + AllowedActions:=[taOpen,taSettings]; + end; + PMIOpen.Visible:=taOpen in AllowedActions; + PMIProperties.Visible:=taSettings in AllowedActions; + PMICompile.Visible:=taCompile in AllowedActions; + PMICompileClean.Visible:=taCompileClean in AllowedActions; + PMIRunMenuItem.Visible:=taRun in AllowedActions; +end; + +procedure TProjectGroupEditorForm.TVPGDblClick(Sender: TObject); +Var + ND: TNodeData; + aFilename, PkgName: String; + PG: TProjectGroup; +begin + ND:=SelectedNodeData; + //debugln(['TProjectGroupEditorForm.TVPGDblClick ',DbgSName(Sender),' ',TVPG.Selected.Text,' ',ND<>nil]); + if ND=nil then exit; + case ND.NodeType of + ntProjectGroup, + ntTarget: + begin + PG:=ND.Target.GetOwnerProjectGroup; + if PG=nil then exit; + case ND.Target.TargetType of + ttProject, + ttPackage, + ttPascalFile: + PG.Perform(ND.Target,taOpen) + end; + end; + ntRemovedTarget: + begin + PG:=ND.Target.GetOwnerProjectGroup; + if PG=nil then exit; + case ND.Target.TargetType of + ttProject, + ttPackage, + ttPascalFile: + PG.Perform(ND.Target,taOpen); + end; + end; + ntFile: + begin + // open file in source editor + aFilename:=ND.Value; + //debugln(['TProjectGroupEditorForm.TVPGDblClick File=',aFilename]); + if aFilename='' then exit; + LazarusIDE.DoOpenEditorFile(aFilename,-1,-1,[ofAddToRecent, + ofRegularFile,ofDoNotLoadResource,ofOnlyIfExists]); + end; + ntDependency: + begin + // open package editor + PkgName:=ND.Value; + if PackageEditingInterface.DoOpenPackageWithName(PkgName,[pofAddToRecent],false)<>mrOk + then begin + IDEMessageDialog('Package not found','Package "'+PkgName+'" not found.',mtError,[mbOk]); + exit; + end; + end; + end; +end; + +procedure TProjectGroupEditorForm.TVPGMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var + TVNode: TTreeNode; + ND: TNodeData; + aMode: TPGBuildMode; +begin + TVNode:=TVPG.GetNodeAt(X,Y); + if TVNode=nil then exit; + ND:=TNodeData(TVNode.Data); + if ND=nil then exit; + if mbLeft=Button then begin + if (ND.NodeType=ntBuildMode) and ([ssShift,ssCtrl]*Shift=[]) then + begin + if (TVNode.DisplayStateIconLeft<X) and (X<TVNode.DisplayIconLeft) then + begin + if TVNode.StateIndex=NSIChecked then + TVNode.StateIndex:=NSIUnchecked + else + TVNode.StateIndex:=NSIChecked; + aMode:=GetBuildMode(TVNode); + if aMode<>nil then + aMode.Compile:=TVNode.StateIndex=NSIChecked; + end; + end; + end; +end; + +procedure TProjectGroupEditorForm.TVPGSelectionChanged(Sender: TObject); +var + TVNode: TTreeNode; + ND: TNodeData; + s: String; +begin + TVNode:=TVPG.Selected; + s:=''; + if (TVNode<>nil) and (TVNode.Data<>nil) then begin + ND:=TNodeData(TVNode.Data); + if ND.Target<>nil then begin + s:=ND.Target.Filename; + end else begin + case ND.NodeType of + ntBuildMode: s:='Build Mode "'+ND.Value+'"'; + ntFile: s:=ND.Value; + end; + end; + end; + + SBPG.Panels[piActiveTarget].Text:=s; +end; + +procedure TProjectGroupEditorForm.OnTargetAdded(Sender: TObject; + Target: TPGCompileTarget); +Var + N: TTreeNode; +begin + (Target as TIDECompileTarget).LoadTarget(true); + if Sender<>ProjectGroup then exit; // ToDo: sub groups + N:=CreateTargetNode(FTargetNodes[False],ntTarget,Target); + FillTargetNode(N,Target); + TVPG.Selected:=N; + UpdateStatusBarTargetCount; +end; + +procedure TProjectGroupEditorForm.OnTargetReadded(Sender: TObject; + Target: TPGCompileTarget); +var + N, NewNode: TTreeNode; +begin + if Sender<>ProjectGroup then exit; // ToDo: sub groups + N:=FindTVNodeOfTarget(Target); + TVPG.BeginUpdate; + try + TVPG.Items.Delete(N); + NewNode:=CreateTargetNode(FTargetNodes[False],ntTarget,Target); + FillTargetNode(NewNode,Target); + TVPG.Selected:=FProjectGroupTVNode; + finally + TVPG.EndUpdate; + end; + UpdateStatusBarTargetCount; +end; + +procedure TProjectGroupEditorForm.OnTargetDeleted(Sender: TObject; + Target: TPGCompileTarget); +Var + N: TTreeNode; +begin + if Sender<>ProjectGroup then exit; // ToDo: sub groups + N:=FindTVNodeOfTarget(Target); + TVPG.BeginUpdate; + try + TVPG.Items.Delete(N); + CreateTargetNode(FTargetNodes[True],ntRemovedTarget,Target); + TVPG.Selected:=FProjectGroupTVNode; + finally + TVPG.EndUpdate; + end; + UpdateStatusBarTargetCount; +end; + +procedure TProjectGroupEditorForm.OnTargetActiveChanged(Sender: TObject; + Target: TPGCompileTarget); +Var + OldActiveTVNode,NewActiveTVNode: TTreeNode; +begin + OldActiveTVNode:=FindTVNodeOfTarget(FActiveTarget); + NewActiveTVNode:=FindTVNodeOfTarget(Target); + if (OldActiveTVNode<>NewActiveTVNode) then + begin + if Assigned(OldActiveTVNode) then + OldActiveTVNode.StateIndex:=-1; + if Assigned(NewActiveTVNode) then + NewActiveTVNode.StateIndex:=NSIActive; + FActiveTarget:=Target; + end; + //N:=DisplayFileName(Target); + //SBPG.Panels[piActiveTarget].Text:=Format(lisActiveTarget,[N]); +end; + +procedure TProjectGroupEditorForm.OnTargetExchanged(Sender: TObject; Target1, + Target2: TPGCompileTarget); +var + N1, N2: TTreeNode; + OldIndex: Integer; +begin + N1:=FindTVNodeOfTarget(Target1); + N2:=FindTVNodeOfTarget(Target2); + If (N1=Nil) or (N2=Nil) then + exit; + OldIndex:=N1.Index; + N1.Index:=N2.Index; + N2.Index:=OldIndex; +end; + +procedure TProjectGroupEditorForm.AProjectGroupSaveExecute(Sender: TObject); +Var + P: String; +begin + if FProjectGroup=nil then exit; + P:=FProjectGroup.FileName; + ProjectGroupManager.SaveProjectGroup; + if CompareFilenames(ExtractFilePath(P),ExtractFilePath(FProjectGroup.FileName))<>0 then + ShowProjectGroup; +end; + +procedure TProjectGroupEditorForm.AProjectGroupAddExistingExecute(Sender: TObject); +var + aTarget: TIDECompileTarget; + aMode: TPGBuildMode; + TVNode: TTreeNode; +begin + if FProjectGroup=nil then exit; + + aTarget:=TIDECompileTarget(SelectedTarget); + if (aTarget<>nil) and aTarget.Removed then + begin + aTarget.Parent.ProjectGroup.ReAddTarget(aTarget); + end else begin + InitIDEFileDialog(OpenDialogTarget); + With OpenDialogTarget do + begin + Filter:='Lazarus projects (*.lpi)|*.lpi' + +'|Lazarus packages (*.lpk)|*.lpk' + +'|Lazarus project groups (*.lpg)|*.lpg' + +'|Pascal file (*.pas;*.pp;*.p)|*.pas;*.pp;*.p'; + If Execute then + begin + aTarget:=FProjectGroup.AddTarget(FileName) as TIDECompileTarget; + aTarget.LoadTarget(true); + if aTarget.BuildModeCount>1 then begin + aMode:=aTarget.BuildModes[0]; + aMode.Compile:=true; + // ToDo: implement changed notification + TVNode:=FindTVNodeOfBuildMode(aMode); + TVNode.StateIndex:=NSIChecked; + end; + end; + end; + StoreIDEFileDialog(OpenDialogTarget); + end; +end; + +procedure TProjectGroupEditorForm.ATargetActivateUpdate(Sender: TObject); +Var + T: TPGCompileTarget; +begin + T:=SelectedTarget; + (Sender as TAction).Enabled:=Assigned(T) and Not T.Active; + UpdateIDEMenuCommandFromAction(Sender,cmdTargetActivate); +end; + +procedure TProjectGroupEditorForm.ATargetActivateExecute(Sender: TObject); +Var + ND: TNodeData; +begin + ND:=SelectedNodeData; + if (ND=nil) or (ND.Target=nil) then + exit; + ND.Target.Activate; +end; + +procedure TProjectGroupEditorForm.AProjectGroupReloadExecute(Sender: TObject); +var + PG: TIDEProjectGroup; +begin + if ProjectGroup=nil then exit; + if FileExistsCached(ProjectGroup.FileName) then + begin + PG:=TIDEProjectGroup(ProjectGroup); + if PG.Modified then begin + IDEMessageDialog('Need save','Please save your changes before reloading the project group.', + mtError,[mbOK]); + exit; + end; + ProjectGroup:=nil; + PG.LoadFromFile([pgloLoadRecursively]); + ProjectGroup:=PG; + end; +end; + +procedure TProjectGroupEditorForm.AProjectGroupSaveAsUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled:=(FProjectGroup<>nil); + UpdateIDEMenuCommandFromAction(Sender,cmdSaveProjectGroupAs); +end; + +procedure TProjectGroupEditorForm.ATargetCompileCleanExecute(Sender: TObject); +begin + Perform(taCompileClean); +end; + +procedure TProjectGroupEditorForm.ATargetCompileCleanUpdate(Sender: TObject); +begin + AllowPerform(taCompileClean,Sender as TAction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetCompileClean); +end; + +function TProjectGroupEditorForm.AllowPerform(ATargetAction: TPGTargetAction; AAction: TAction = Nil): Boolean; +Var + ND: TNodeData; + aTarget: TPGCompileTarget; +begin + Result:=false; + ND:=SelectedNodeData; + if ND<>nil then begin + if ND.Target<>nil then begin + Result:=(not ND.Target.Removed) and (ATargetAction in ND.Target.AllowedActions); + end else begin + aTarget:=GetNearestTargget(TVPG.Selected); + case ND.NodeType of + ntBuildMode: + Result:=(not aTarget.Removed) + and (ATargetAction in [taCompile,taCompileClean,taCompileFromHere,taRun]); + end; + end; + end; + If Assigned(AAction) then + AAction.Enabled:=Result; +end; + +procedure TProjectGroupEditorForm.Perform(ATargetAction: TPGTargetAction); +Var + ND: TNodeData; + aTarget: TPGCompileTarget; +begin + ND:=SelectedNodeData; + if (ND=nil) then exit; + aTarget:=ND.Target; + if aTarget<>nil then + aTarget.GetOwnerProjectGroup.Perform(aTarget,ATargetAction) + else begin + aTarget:=GetNearestTargget(TVPG.Selected); + case ND.NodeType of + ntBuildMode: + aTarget.PerformBuildModeAction(ATargetAction,ND.Value); + end; + end; +end; + +procedure TProjectGroupEditorForm.ATargetCompileExecute(Sender: TObject); +begin + Perform(taCompile); +end; + +procedure TProjectGroupEditorForm.ATargetCompileFromHereExecute(Sender: TObject + ); +begin + Perform(taCompileFromHere); +end; + +procedure TProjectGroupEditorForm.ATargetCompileFromHereUpdate(Sender: TObject); +begin + AllowPerform(taCompileFromHere,Sender as TAction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetCompile); +end; + +procedure TProjectGroupEditorForm.ATargetCompileUpdate(Sender: TObject); +begin + AllowPerform(taCompile,Sender as TAction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetCompile); +end; + +procedure TProjectGroupEditorForm.AProjectGroupDeleteExecute(Sender: TObject); +Var + T: TPGCompileTarget; +begin + T:=SelectedTarget; + if (T=nil) or (T.Parent=nil) then exit; + T.Parent.ProjectGroup.RemoveTarget(T); +end; + +procedure TProjectGroupEditorForm.AProjectGroupDeleteUpdate(Sender: TObject); +Var + T: TPGCompileTarget; +begin + T:=SelectedTarget; + (Sender as TAction).Enabled:=(T<>nil) and (T<>ProjectGroup.CompileTarget) and Not T.Removed; + UpdateIDEMenuCommandFromAction(Sender,cmdTargetRemove); +end; + +procedure TProjectGroupEditorForm.ATargetCopyFilenameExecute(Sender: TObject); +var + ND: TNodeData; + aFilename: String; +begin + ND:=SelectedNodeData; + if ND=nil then exit; + if ND.Target<>nil then + aFilename:=ND.Target.Filename + else if ND.NodeType=ntFile then + aFilename:=ND.Value + else + exit; + Clipboard.AsText:=aFilename; +end; + +procedure TProjectGroupEditorForm.ATargetCopyFilenameUpdate(Sender: TObject); +var + ND: TNodeData; +begin + ND:=SelectedNodeData; + (Sender as TAction).Enabled:=(ND<>nil) + and ((ND.Target<>nil) or (ND.NodeType in [ntFile])); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetCopyFilename); +end; + +procedure TProjectGroupEditorForm.ATargetInstallExecute(Sender: TObject); +begin + Perform(taInstall); +end; + +procedure TProjectGroupEditorForm.ATargetInstallUpdate(Sender: TObject); +begin + AllowPerform(taInstall,Sender as TAction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetInstall); +end; + +procedure TProjectGroupEditorForm.ATargetOpenExecute(Sender: TObject); +begin + Perform(taOpen); +end; + +procedure TProjectGroupEditorForm.ATargetOpenUpdate(Sender: TObject); +begin + AllowPerform(taOpen,Sender as TAction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetOpen); +end; + +procedure TProjectGroupEditorForm.ATargetPropertiesExecute(Sender: TObject); +begin + Perform(taSettings); +end; + +procedure TProjectGroupEditorForm.ATargetPropertiesUpdate(Sender: TObject); +begin + AllowPerform(taSettings,Sender as Taction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetProperties); +end; + +procedure TProjectGroupEditorForm.ATargetRunExecute(Sender: TObject); +begin + Perform(taRun); +end; + +procedure TProjectGroupEditorForm.ATargetRunUpdate(Sender: TObject); +begin + AllowPerform(taRun,Sender as TAction); + UpdateIDEMenuCommandFromAction(Sender,cmdTargetRun); +end; + +procedure TProjectGroupEditorForm.AProjectGroupSaveAsExecute(Sender: TObject); +begin + IDEProjectGroupManager.DoSaveAsClick(Sender); +end; + +procedure TProjectGroupEditorForm.FreeNodeData; +Var + N: TTreeNode; + I: Integer; +begin + FActiveTarget:=nil; + FProjectGroupTVNode:=Nil; + FTargetNodes[False]:=Nil; + FTargetNodes[True]:=Nil; + For I:=0 to TVPG.Items.Count-1 do + begin + N:=TVPG.Items[I]; + TNodeData(N.Data).Free; // Would be nice to have a FreeAndNilData method in TTreeNode. + N.Data:=Nil; + end; +end; + +function TProjectGroupEditorForm.GetNodeImageIndex(ANodeType: TNodeType; + ANodeData: TPGCompileTarget): Integer; +begin + case ANodeType of + ntProjectGroup: Result:=NIProjectGroup; + ntTargets: Result:=NITargets; + ntRemovedTargets: Result:=NIRemovedTargerts; + ntTarget : + Case ANodeData.TargetType of + ttProject: Result:=NITargetProject; + ttPackage: Result:=NITargetPackage; + ttProjectGroup: Result:=NITargetProjectGroup; + ttPascalFile: Result:=NIFile; + end; + ntRemovedTarget: + Case ANodeData.TargetType of + ttProject: Result:=NIRemovedTargetProject; + ttPackage: Result:=NIRemovedTargetPackage; + ttProjectGroup: Result:=NIRemovedTargetProjectGroup; + ttPascalFile: Result:=NIFile; + end; + ntBuildModes: Result:=NIBuildModes; + ntBuildMode: Result:=NIBuildMode; + ntFiles: Result:=NIFiles; + ntFile: Result:=NIFile; + //ntRemovedFiles: Result:=NIRemovedFiles; + //ntRemovedFile: Result:=NIRemovedFile; + ntDependencies: Result:=NIDependencies; + ntDependency: Result:=NIDependency; + //ntRemovedDependencies: Result:=NIRemovedDependencies; + //ntRemovedDependency: Result:=NIRemovedDependency; + else + Result:=-1; + end; +end; + +function TProjectGroupEditorForm.SelectedNodeData: TNodeData; +Var + N: TTreeNode; +begin + N:=TVPG.Selected; + If Assigned(N) then + Result:=TNodeData(N.Data) + else + Result:=Nil; +end; + +function TProjectGroupEditorForm.SelectedTarget: TPGCompileTarget; +Var + N: TNodeData; +begin + N:=SelectedNodeData; + if Assigned(N) then + Result:=N.Target + else + Result:=Nil; +end; + +function TProjectGroupEditorForm.GetTVNodeFilename(TVNode: TTreeNode): string; +var + ND: TNodeData; +begin + Result:=''; + if (TVNode=nil) then exit; + ND:=TNodeData(TVNode.Data); + if (ND.Target<>nil) then + exit(ND.Target.Filename); + case ND.NodeType of + ntFile: Result:=ND.Value; + end; +end; + +function TProjectGroupEditorForm.GetBuildMode(TVNode: TTreeNode): TPGBuildMode; +var + ND: TNodeData; +begin + Result:=nil; + if TVNode=nil then exit; + ND:=TNodeData(TVNode.Data); + if (ND=nil) or (ND.NodeType<>ntBuildMode) then exit; + while TVNode<>nil do begin + if (TVNode.Data<>nil) and (TNodeData(TVNode.Data).Target<>nil) then + begin + Result:=TNodeData(TVNode.Data).Target.FindBuildMode(ND.Value); + exit; + end; + TVNode:=TVNode.Parent; + end; +end; + +function TProjectGroupEditorForm.GetNearestTargget(TVNode: TTreeNode + ): TPGCompileTarget; +begin + Result:=nil; + while (TVNode<>nil) do begin + if (TVNode.Data<>nil) then begin + Result:=TNodeData(TVNode.Data).Target; + if Result<>nil then exit; + end; + TVNode:=TVNode.Parent; + end; + Result:=nil; +end; + +function TProjectGroupEditorForm.SelectedNodeType: TPGCompileTarget; +Var + N: TNodeData; +begin + N:=SelectedNodeData; + if Assigned(N) then + Result:=N.Target + else + Result:=Nil; +end; + +procedure TProjectGroupEditorForm.InitTVNode(Node: TTreeNode; + const ACaption: String; ANodeData: TNodeData); +begin + Node.Data:=ANodeData; + If (ACaption<>'') then + Node.Text:=ACaption; + Node.ImageIndex:=GetNodeImageIndex(ANodeData.NodeType,ANodeData.Target); + Node.SelectedIndex:=Node.ImageIndex; + if Assigned(ANodeData.Target) and ANodeData.Target.Active then + Node.StateIndex:=NSIActive + else + Node.StateIndex:=-1; +end; + +procedure TProjectGroupEditorForm.OnProjectGroupDestroy(Sender: TObject); +begin + if Sender=FProjectGroup then begin + ProjectGroup:=nil; + end; +end; + +procedure TProjectGroupEditorForm.OnProjectGroupFileNameChanged(Sender: TObject); +var + TVNode: TTreeNode; + NodeData: TNodeData; +begin + if Sender<>ProjectGroup then exit; // ToDo: sub groups + ShowFileName; + // update all nodes with file names + TVPG.BeginUpdate; + TVNode:=TVPG.Items.GetFirstNode; + while TVNode<>nil do begin + NodeData:=TNodeData(TVNode.Data); + if NodeData is TNodeData then begin + if NodeData.NodeType in [ntTarget] then begin + TVNode.Text:=DisplayFileName(NodeData); + end; + end; + TVNode:=TVNode.GetNext; + end; + TVPG.EndUpdate; +end; + +function TProjectGroupEditorForm.CreateSectionNode(AParent: TTreeNode; + const ACaption: String; ANodeType: TNodeType): TTreeNode; +Var + ND: TNodeData; +begin + ND:=TNodeData.Create; + ND.NodeType:=ANodeType; + Result:=TVPG.Items.AddChild(AParent,ACaption); + InitTVNode(Result,'',ND); +end; + +function TProjectGroupEditorForm.CreateTargetNode(AParent: TTreeNode; + ANodeType: TNodeType; aTarget: TPGCompileTarget): TTreeNode; +var + ND: TNodeData; +begin + ND:=TNodeData.Create; + ND.NodeType:=ANodeType; + ND.Target:=aTarget; + if aTarget<>nil then + ND.ParentTarget:=aTarget.Parent; + Result:=TVPG.Items.AddChild(AParent,DisplayFileName(ND)); + InitTVNode(Result,'',ND); +end; + +function TProjectGroupEditorForm.CreateSubNode(AParent: TTreeNode; + ANodeType: TNodeType; aParentTarget: TPGCompileTarget; aValue: string + ): TTreeNode; +var + ND: TNodeData; + aCaption: String; +begin + ND:=TNodeData.Create; + ND.NodeType:=ANodeType; + ND.ParentTarget:=aParentTarget; + ND.Value:=aValue; + aCaption:=aValue; + if ANodeType=ntFile then + aCaption:=CreateRelativePath(aCaption,ExtractFilePath(aParentTarget.Filename)); + Result:=TVPG.Items.AddChild(AParent,aCaption); + InitTVNode(Result,'',ND); +end; + +procedure TProjectGroupEditorForm.ClearChildNodes(TVNode: TTreeNode); + + procedure FreeChildrenNodeData(aTVNode: TTreeNode); + var + i: Integer; + ChildNode: TTreeNode; + begin + if aTVNode=nil then exit; + for i:=0 to aTVNode.Count-1 do + begin + ChildNode:=aTVNode[i]; + if ChildNode.Data<>nil then + begin + TObject(ChildNode.Data).Free; + ChildNode.Data:=nil; + end; + FreeChildrenNodeData(ChildNode); + end; + end; + +begin + FreeChildrenNodeData(TVNode); + TVNode.DeleteChildren; +end; + +function TProjectGroupEditorForm.DisplayFileName(aTarget: TPGCompileTarget + ): string; +var + BaseDir: String; +begin + Result:=''; + if aTarget=nil then exit('?'); + if IDEProjectGroupManager.Options.ShowTargetPaths then + begin + if aTarget.Parent<>nil then + BaseDir:=ExtractFilePath(aTarget.Parent.Filename) + else + BaseDir:=''; + Result:=aTarget.Filename; + if Result='' then + Result:='?' + else + Result:=CreateRelativePath(Result,BaseDir); + end else begin + //debugln(['TProjectGroupEditorForm.DisplayFileName ',aTarget.Filename,' ',aTarget.TargetType=ttPascalFile]); + if aTarget.TargetType in [ttPascalFile] then + Result:=ExtractFileName(aTarget.Filename) + else + Result:=ExtractFileNameOnly(aTarget.Filename); + end; +end; + +function TProjectGroupEditorForm.DisplayFileName(Node: TTreeNode): string; +begin + Result:=''; + if (Node=nil) or (Node.Data=nil) then exit; + Result:=DisplayFileName(TNodeData(Node.Data)); +end; + +function TProjectGroupEditorForm.DisplayFileName(NodeData: TNodeData): string; +var + BaseDir: String; +begin + if (NodeData.Target<>nil) + and (not IDEProjectGroupManager.Options.ShowTargetPaths) then + begin + if NodeData.Target.TargetType in [ttPascalFile] then + Result:=ExtractFileName(NodeData.Target.Filename) + else + Result:=ExtractFileNameOnly(NodeData.Target.Filename); + end else begin + Result:=''; + if NodeData.ParentTarget<>nil then + BaseDir:=ExtractFilePath(NodeData.ParentTarget.Filename) + else + BaseDir:=''; + if NodeData.Target<>nil then + Result:=NodeData.Target.Filename; + if Result='' then + Result:='?' + else + Result:=CreateRelativePath(Result,BaseDir); + end; +end; + +procedure TProjectGroupEditorForm.ShowFileName; +Var + N: String; +begin + if FProjectGroup=nil then + N:='' + else + N:=FProjectGroup.FileName; + if (N='') then + Caption:=lisNewProjectGroup + else + Caption:=Format(LisProjectGroup,[DisplayFileName(FProjectGroup.CompileTarget)]); + if Assigned(FProjectGroupTVNode) then + FProjectGroupTVNode.Text:=DisplayFileName(FProjectGroupTVNode); +end; + +function TProjectGroupEditorForm.FindTVNodeOfTarget(ATarget: TPGCompileTarget): TTreeNode; +Var + I: Integer; +begin + Result:=Nil; + if ATarget=nil then exit; + I:=0; + While (Result=Nil) and (I<TVPG.Items.Count) do + begin + Result:=TVPG.Items[I]; + If Not (Assigned(Result.Data) and (TNodeData(Result.Data).Target=ATarget)) then + Result:=Nil; + Inc(I); + end; +end; + +function TProjectGroupEditorForm.FindBuildModeNodeRecursively( + TVNode: TTreeNode; aMode: string): TTreeNode; +var + ND: TNodeData; +begin + Result:=nil; + if TVNode=nil then exit; + if (TVNode.Data=nil) then exit; + ND:=TNodeData(TVNode.Data); + if (ND.NodeType=ntBuildMode) and (CompareText(ND.Value,aMode)=0) then + exit(TVNode); + TVNode:=TVNode.GetFirstChild; + while TVNode<>nil do begin + Result:=FindBuildModeNodeRecursively(TVNode,aMode); + if Result<>nil then exit; + TVNode:=TVNode.GetNextSibling; + end; +end; + +function TProjectGroupEditorForm.FindTVNodeOfBuildMode(aMode: TPGBuildMode + ): TTreeNode; +begin + Result:=nil; + if aMode=nil then exit; + // find project node + Result:=FindTVNodeOfTarget(aMode.Target); + if Result=nil then exit; + // find build mdoe node + Result:=FindBuildModeNodeRecursively(Result,aMode.Identifier); +end; + +procedure TProjectGroupEditorForm.ShowProjectGroup; +Var + N: TTreeNode; +begin + TVPG.BeginUpdate; + try + FreeNodeData; + ShowFileName; // Needs FProjectGroupTVNode + TVPG.Items.Clear; + FTargetNodes[False]:=Nil; + FTargetNodes[True]:=Nil; + if FProjectGroup<>nil then begin + FProjectGroupTVNode:=CreateTargetNode(Nil, + ntProjectGroup,ProjectGroup.CompileTarget); + FillProjectGroupNode(FProjectGroupTVNode,FProjectGroup,FTargetNodes); + N:=FindTVNodeOfTarget(FActiveTarget); + if (N=Nil) then + begin + FActiveTarget:=ProjectGroup.CompileTarget; + TVPG.Selected:=FProjectGroupTVNode; + end else + TVPG.Selected:=N; + end else begin + FProjectGroupTVNode:=nil; + end; + UpdateStatusBarTargetCount; + finally + TVPG.EndUpdate; + end; +end; + +procedure TProjectGroupEditorForm.UpdateShowing; +begin + inherited UpdateShowing; + if IsVisible then + Localize; +end; + +procedure TProjectGroupEditorForm.FillProjectGroupNode(TVNode: TTreeNode; + AProjectGroup: TProjectGroup; out TargetNodes: TTargetNodes); +Const + TNT: Array[Boolean] of TNodeType = (ntTarget,ntRemovedTarget); +Var + T: TPGCompileTarget; + aTargetsNode,TN: TTreeNode; + I: Integer; +begin + TVPG.BeginUpdate; + try + ClearChildNodes(TVNode); + aTargetsNode:=CreateSectionNode(TVNode,lisNodeTargets,ntTargets); + TargetNodes[False]:=aTargetsNode; + TargetNodes[True]:=CreateSectionNode(TVNode,lisNodeRemovedTargets,ntTargets); + // 2 Passes: one to show all nodes, one to fill them with target-specific data. + // Display all nodes + For I:=0 to AProjectGroup.TargetCount-1 do + begin + T:=AProjectGroup.Targets[i]; + CreateTargetNode(TargetNodes[T.Removed],TNT[T.Removed],T); + end; + // Fill all nodes. + For I:=0 to aTargetsNode.Count-1 do + begin + TN:=aTargetsNode.Items[i]; + FillTargetNode(TN,TargetFromNode(TN)); + end; + TVNode.Expand(False); + TargetNodes[False].Expand(False); + TargetNodes[True].Expand(False); + finally + TVPG.EndUpdate; + end; +end; + +procedure TProjectGroupEditorForm.ShowDependencies(AParent: TTreeNode; + T: TPGCompileTarget; out PD: TTargetNodes); +Var + i: Integer; + Pkg: TIDEPackage; + PkgName: String; +begin + PD[False]:=CreateSectionNode(AParent,lisNodeDependencies,ntDependencies); + PD[True]:=nil; //CreateNode(AParent,lisNodeRemovedDependencies,ntRemovedDependencies,Nil,AProjectGroup); + For i:=0 to T.RequiredPackageCount-1 do + begin + PkgName:=T.RequiredPackages[i].PackageName; + Pkg:=PackageEditingInterface.FindPackageWithName(PkgName); + if Pkg<>nil then + PkgName:=Pkg.Name; + CreateSubNode(PD[False],ntDependency,T,PkgName); + end; +end; + +procedure TProjectGroupEditorForm.FillProjectNode(TVNode: TTreeNode; + T: TPGCompileTarget); +Var + FileNodes,DepNodes: TTargetNodes; + i: Integer; + BuildModeNode, SubTVNode: TTreeNode; + aMode: TPGBuildMode; +begin + TVPG.BeginUpdate; + try + ClearChildNodes(TVNode); + + // buildmodes + if T.BuildModeCount>1 then + begin + BuildModeNode:=CreateSectionNode(TVNode,lisNodeBuildModes,ntBuildModes); + for i:=0 to T.BuildModeCount-1 do + begin + aMode:=T.BuildModes[i]; + SubTVNode:=CreateSubNode(BuildModeNode,ntBuildMode,T,aMode.Identifier); + if aMode.Compile then + SubTVNode.StateIndex:=NSIChecked + else + SubTVNode.StateIndex:=NSIUnchecked; + end; + end; + // files + FileNodes[False]:=CreateSectionNode(TVNode,lisNodeFiles,ntFiles); + FileNodes[True]:=nil; //CreateNode(TVNode,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup); + for i:=0 to T.FileCount-1 do + CreateSubNode(FileNodes[False],ntFile,T,T.Files[i]); + // dependencies + ShowDependencies(TVNode,T,DepNodes); + finally + TVPG.EndUpdate; + end; +end; + +procedure TProjectGroupEditorForm.FillPackageNode(TVNode: TTreeNode; + T: TPGCompileTarget); +Var + PF,PD: TTargetNodes; + i: Integer; +begin + TVPG.BeginUpdate; + try + ClearChildNodes(TVNode); + PF[False]:=CreateSectionNode(TVNode,lisNodeFiles,ntFiles); + PF[True]:=nil; //CreateNode(TVNode,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup); + for i:=0 to T.FileCount-1 do + CreateSubNode(PF[False],ntFile,T,T.Files[i]); + ShowDependencies(TVNode,T,PD); + finally + TVPG.EndUpdate; + end; +end; + +procedure TProjectGroupEditorForm.FillTargetNode(TVNode: TTreeNode; + T: TPGCompileTarget); +Var + PN: TTargetNodes; +begin + TVPG.BeginUpdate; + try + ClearChildNodes(TVNode); + If T=Nil then + T:=TargetFromNode(TVNode); + if T=Nil then + exit; + case T.TargetType of + ttProject: FillProjectNode(TVNode,T); + ttPackage: FillPackageNode(TVNode,T); + ttProjectGroup: FillProjectgroupNode(TVNode,T.ProjectGroup,PN); + ttPascalFile: ; + end; + finally + TVPG.EndUpdate; + end; +end; + +function TProjectGroupEditorForm.GetActiveTarget: TPGCompileTarget; +begin + Result:=FActiveTarget; +end; + +class function TProjectGroupEditorForm.TargetFromNode(N: TTreeNode + ): TPGCompileTarget; +begin + if (N<>Nil) and (N.Data<>Nil) then + Result:=TNodeData(N.Data).Target + else + Result:=Nil; +end; + + +end. + diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/projectgroupintf.pp lazarus-1.6+dfsg/components/projectgroups/projectgroupintf.pp --- lazarus-1.4.4+dfsg/components/projectgroups/projectgroupintf.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/projectgroupintf.pp 2015-11-21 18:37:45.000000000 +0000 @@ -0,0 +1,615 @@ +{ If you want to extend the package only access this unit. +} +unit ProjectGroupIntf; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, IDEOptionsIntf, PackageIntf, ProjectIntf, LazFileUtils, + LazFileCache, LazMethodList, LazLogger; + +Type + TPGTargetType = ( + ttUnknown, + ttProject, + ttPackage, + ttProjectGroup, // nested group + ttPascalFile, // build/run file, parameters stored IDE directives + ttExternalTool + ); + TPGTargetTypes = set of TPGTargetType; + + TPGTargetAction = ( + taOpen, + taSettings, + taCompile, + taCompileClean, + taCompileFromHere, + taRun, + taInstall, + taUninstall); + TPGTargetActions = set of TPGTargetAction; + + TPGActionResult = (arNotAllowed,arOK,arFailed); + TPGActionResults = set of TPGActionResult; + + TProjectGroup = class; + TPGCompileTarget = class; + + { TPGBuildMode } + + TPGBuildMode = class + private + FCompile: boolean; + FIdentifier: string; + FTarget: TPGCompileTarget; + procedure SetCompile(AValue: boolean); + public + constructor Create(aTarget: TPGCompileTarget; const anIdentifier: string; aCompile: boolean); + property Target: TPGCompileTarget read FTarget; + property Identifier: string read FIdentifier; + property Compile: boolean read FCompile write SetCompile; + end; + + { TPGDependency } + + TPGDependency = class + private + FPackageName: string; + FTarget: TPGCompileTarget; + public + constructor Create(aTarget: TPGCompileTarget; const aPkgName: string); + property Target: TPGCompileTarget read FTarget; + property PackageName: string read FPackageName; + end; + + { TPGCompileTarget - a node in the tree, see TPGTargetType } + + TPGCompileTarget = class + private + FActive: Boolean; + FFilename: string; + FTargetType: TPGTargetType; + FRemoved: boolean; + protected + FParent: TPGCompileTarget; + FProjectGroup: TProjectGroup; + function GetAllowedActions: TPGTargetActions; virtual; // By default, return all allowed actions for target type. + function GetBuildModeCount: integer; virtual; abstract; + function GetBuildModes(Index: integer): TPGBuildMode; virtual; abstract; + function GetFileCount: integer; virtual; abstract; + function GetFiles(Index: integer): string; virtual; abstract; + function GetRequiredPackageCount: integer; virtual; abstract; + function GetRequiredPackages(Index: integer): TPGDependency; virtual; abstract; + function Perform(AAction: TPGTargetAction): TPGActionResult; + function PerformAction(AAction: TPGTargetAction): TPGActionResult; virtual; abstract; + procedure SetFilename(const AValue: string); virtual; + procedure SetRemoved(const AValue: boolean); virtual; + procedure SetTargetType(AValue: TPGTargetType); virtual; + procedure DoDeactivateChildren; + procedure ActiveChanged(Sender: TPGCompileTarget); virtual; abstract; + procedure DoActivate(DeactivateChildren: boolean); + procedure DoDeActivate(DeactivateParents: boolean); + public + constructor Create(aParent: TPGCompileTarget); + procedure Activate; + procedure DeActivate; + function GetOwnerProjectGroup: TProjectGroup; + function GetRootProjectGroup: TProjectGroup; + function GetNext(SkipChildren: boolean): TPGCompileTarget; + function IndexOfBuildMode(aName: string): integer; + function FindBuildMode(aName: string): TPGBuildMode; + function PerformBuildModeAction(AAction: TPGTargetAction; aModeIdentifier: string): TPGActionResult; virtual; abstract; + procedure Modified; virtual; abstract; + property Parent: TPGCompileTarget read FParent; + property Filename: string read FFilename write SetFilename; // Absolute, not relative. + property Removed: boolean read FRemoved write SetRemoved; + property TargetType: TPGTargetType read FTargetType write SetTargetType; + property Active: Boolean Read FActive; + // Currently allowed actions. + property AllowedActions: TPGTargetActions Read GetAllowedActions; + // + property ProjectGroup: TProjectGroup read FProjectGroup; // set if TargetType is ttProjectGroup + property BuildModes[Index: integer]: TPGBuildMode read GetBuildModes; + property BuildModeCount: integer read GetBuildModeCount; + property Files[Index: integer]: string read GetFiles; + property FileCount: integer read GetFileCount; + property RequiredPackages[Index: integer]: TPGDependency read GetRequiredPackages; + property RequiredPackageCount: integer read GetRequiredPackageCount; + end; + + TProjectGroupHandler = ( + pghDestroy + ); + + { TProjectGroup } + + TProjectGroup = class(TPersistent) + private + FHandlers: array[TProjectGroupHandler] of TMethodList; + FChangeStamp: int64; + FFileName: String; + FLastSavedChangeStamp: int64; + procedure SetModified(AValue: Boolean); + protected + FCompileTarget: TPGCompileTarget; + FParent: TProjectGroup; + procedure SetFileName(AValue: String); virtual; + function GetModified: Boolean; virtual; + function GetTargetCount: Integer; virtual; abstract; + function GetTarget(Index: Integer): TPGCompileTarget; virtual; abstract; + function GetRemovedTargetCount: Integer; virtual; abstract; + function GetRemovedTarget(Index: Integer): TPGCompileTarget; virtual; abstract; + procedure DoCallNotifyHandler(HandlerType: TProjectGroupHandler; + Sender: TObject); overload; + procedure AddHandler(HandlerType: TProjectGroupHandler; + const AMethod: TMethod; AsLast: boolean = false); + procedure RemoveHandler(HandlerType: TProjectGroupHandler; + const AMethod: TMethod); + function GetActiveTarget: TPGCompileTarget; virtual; abstract; + procedure SetActiveTarget(AValue: TPGCompileTarget); virtual; abstract; + public + destructor Destroy; override; + function GetRootGroup: TProjectGroup; + property FileName: String Read FFileName Write SetFileName; // absolute + property CompileTarget: TPGCompileTarget read FCompileTarget; + property Parent: TProjectGroup read FParent; + // actions + function Perform(Index: Integer; AAction: TPGTargetAction): TPGActionResult; + function Perform(Const AFileName: String; AAction: TPGTargetAction): TPGActionResult; + function Perform(Target: TPGCompileTarget; AAction: TPGTargetAction): TPGActionResult; virtual; + function ActionAllowsFrom(Index: Integer; AAction: TPGTargetAction): Boolean; virtual; + function PerformFrom(AIndex: Integer; AAction: TPGTargetAction): TPGActionResult; virtual; + // targets + function IndexOfTarget(Const Target: TPGCompileTarget): Integer; virtual; abstract; + function IndexOfTarget(Const AFilename: String): Integer; virtual; + function IndexOfRemovedTarget(Const Target: TPGCompileTarget): Integer; virtual; abstract; + function IndexOfRemovedTarget(Const AFilename: String): Integer; virtual; + function AddTarget(Const AFileName: String): TPGCompileTarget; virtual; abstract; + procedure ReAddTarget(Target: TPGCompileTarget); virtual; abstract; + procedure ExchangeTargets(ASource, ATarget: Integer); virtual; abstract; + procedure RemoveTarget(Index: Integer); virtual; abstract; + procedure RemoveTarget(Const AFileName: String); + procedure RemoveTarget(Target: TPGCompileTarget); + property Targets[Index: Integer]: TPGCompileTarget Read GetTarget; + property TargetCount: Integer Read GetTargetCount; + property RemovedTargets[Index: Integer]: TPGCompileTarget Read GetRemovedTarget; + property RemovedTargetCount: Integer Read GetRemovedTargetCount; + property ActiveTarget: TPGCompileTarget Read GetActiveTarget Write SetActiveTarget; + public + // modified + procedure IncreaseChangeStamp; + property Modified: Boolean Read GetModified write SetModified; + property ChangeStamp: int64 read FChangeStamp; + public + // handlers + procedure RemoveAllHandlersOfObject(AnObject: TObject); + procedure AddHandlerOnDestroy(const OnDestroy: TNotifyEvent; AsLast: boolean = false); + procedure RemoveHandlerOnDestroy(const OnDestroy: TNotifyEvent); + end; + + TProjectGroupLoadOption = ( + pgloRemoveInvalid, // Mark non-existing targets from group as removed. + pgloSkipInvalid, // Ignore non-existing, add as-is. + pgloErrorInvalid, // Stop with error on non-existing. + pgloSkipDialog, // do not show Project Group editor. + pgloLoadRecursively // load all sub nodes + ); + TProjectGroupLoadOptions = set of TProjectGroupLoadOption; + + { TProjectGroupManager } + + TProjectGroupManager = Class(TPersistent) + protected + function GetCurrentProjectGroup: TProjectGroup; virtual; abstract; + public + procedure LoadProjectGroup(AFileName: string; AOptions: TProjectGroupLoadOptions); virtual; abstract; + procedure SaveProjectGroup; virtual; abstract; + property CurrentProjectGroup: TProjectGroup Read GetCurrentProjectGroup; // Always top-level. + end; + +var + ProjectGroupManager: TProjectGroupManager = nil; + +const + PGTargetActions: array[TPGTargetType] of TPGTargetActions = ( + [], // ttUnknown + [taOpen,taSettings,taCompile,taCompileClean,taCompileFromHere,taRun], // ttProject + [taOpen,taSettings,taCompile,taCompileClean,taCompileFromHere,taInstall,taUninstall], // ttPackage + [taOpen,taCompile,taCompileClean,taCompileFromHere], // ttProjectGroup + [taOpen,taSettings,taCompile,taCompileFromHere,taRun], // ttPascalFile + [taOpen,taCompile,taCompileClean,taCompileFromHere,taRun] // ttExternalTool + ); + +function TargetTypeFromExtenstion(AExt: String): TPGTargetType; +function TargetSupportsAction(ATarget: TPGTargetType; AAction: TPGTargetAction): Boolean; +function ActionAllowsMulti(AAction: TPGTargetAction): Boolean; + +implementation + +function TargetTypeFromExtenstion (AExt: String): TPGTargetType; +begin + while (AExt<>'') and (AExt[1]='.') do + Delete(AExt,1,1); + case LowerCase(AExt) of + 'lpi', + 'lpr': Result:=ttProject; + 'lpk': Result:=ttPackage; + 'lpg': Result:=ttProjectGroup; + 'pas', + 'pp', + 'p' : Result:=ttPascalFile; + else + Result:=ttUnknown; + end; +end; + +function TargetSupportsAction(ATarget: TPGTargetType; AAction: TPGTargetAction + ): Boolean; +begin + Result:=AAction in PGTargetActions[ATarget]; +end; + +function ActionAllowsMulti(AAction: TPGTargetAction): Boolean; +begin + Result:=AAction in [taCompile,taCompileClean]; +end; + +{ TPGBuildMode } + +procedure TPGBuildMode.SetCompile(AValue: boolean); +begin + if FCompile=AValue then Exit; + FCompile:=AValue; + Target.Modified; +end; + +constructor TPGBuildMode.Create(aTarget: TPGCompileTarget; const anIdentifier: string; + aCompile: boolean); +begin + FTarget:=aTarget; + FIdentifier:=anIdentifier; + FCompile:=aCompile; +end; + +{ TPGDependency } + +constructor TPGDependency.Create(aTarget: TPGCompileTarget; + const aPkgName: string); +begin + FTarget:=aTarget; + FPackageName:=aPkgName; +end; + +{ TProjectGroup } + +procedure TProjectGroup.SetModified(AValue: Boolean); +begin + if AValue then + IncreaseChangeStamp + else + FLastSavedChangeStamp:=FChangeStamp; +end; + +procedure TProjectGroup.SetFileName(AValue: String); +begin + if FFileName=AValue then Exit; + FFileName:=AValue; + IncreaseChangeStamp; + if CompileTarget<>nil then + CompileTarget.Filename:=Filename; +end; + +function TProjectGroup.GetModified: Boolean; +begin + Result:=FLastSavedChangeStamp<>FChangeStamp; +end; + +procedure TProjectGroup.DoCallNotifyHandler(HandlerType: TProjectGroupHandler; + Sender: TObject); +begin + FHandlers[HandlerType].CallNotifyEvents(Sender); +end; + +procedure TProjectGroup.AddHandler(HandlerType: TProjectGroupHandler; + const AMethod: TMethod; AsLast: boolean); +begin + if FHandlers[HandlerType]=nil then + FHandlers[HandlerType]:=TMethodList.Create; + FHandlers[HandlerType].Add(AMethod,AsLast); +end; + +procedure TProjectGroup.RemoveHandler(HandlerType: TProjectGroupHandler; + const AMethod: TMethod); +begin + FHandlers[HandlerType].Remove(AMethod); +end; + +destructor TProjectGroup.Destroy; +var + HandlerType: TProjectGroupHandler; +begin + DoCallNotifyHandler(pghDestroy,Self); + for HandlerType:=Low(FHandlers) to High(FHandlers) do + FreeAndNil(FHandlers[HandlerType]); + inherited Destroy; +end; + +function TProjectGroup.GetRootGroup: TProjectGroup; +begin + Result:=Self; + while Result.Parent<>nil do + Result:=Result.Parent; +end; + +function TProjectGroup.Perform(Index: Integer; AAction: TPGTargetAction + ): TPGActionResult; +begin + Result:=Perform(GetTarget(Index),AAction); +end; + +function TProjectGroup.Perform(const AFileName: String; AAction: TPGTargetAction + ): TPGActionResult; +begin + Result:=Perform(IndexOfTarget(AFileName),AAction); +end; + +function TProjectGroup.Perform(Target: TPGCompileTarget; AAction: TPGTargetAction): TPGActionResult; +begin + Result:=Target.Perform(AAction); +end; + +function TProjectGroup.ActionAllowsFrom(Index: Integer; AAction: TPGTargetAction + ): Boolean; +Var + C: Integer; + T: TPGCompileTarget; +begin + Result:=ActionAllowsMulti(AAction); + C:=TargetCount; + while Result and (Index<C) do + begin + T:=GetTarget(Index); + if not T.Removed then + Result:=AAction in T.AllowedActions;; + Inc(Index); + end; +end; + +function TProjectGroup.PerformFrom(AIndex: Integer; AAction: TPGTargetAction + ): TPGActionResult; +Var + I: Integer; +begin + Result:=arOK; + I:=AIndex; + while (Result=arOK) and (I<TargetCount) do + if Not GetTarget(i).Removed then + begin + Result:=Perform(I,AAction); + Inc(I); + end; +end; + +function TProjectGroup.IndexOfTarget(const AFilename: String): Integer; +begin + Result:=TargetCount-1; + while (Result>=0) and (CompareFilenames(AFileName,GetTarget(Result).Filename)<>0) do + Dec(Result); +end; + +function TProjectGroup.IndexOfRemovedTarget(const AFilename: String): Integer; +begin + Result:=RemovedTargetCount-1; + while (Result>=0) and (CompareFilenames(AFileName,GetRemovedTarget(Result).Filename)<>0) do + Dec(Result); +end; + +procedure TProjectGroup.RemoveTarget(const AFileName: String); +begin + RemoveTarget(IndexOfTarget(AFileName)) +end; + +procedure TProjectGroup.RemoveTarget(Target: TPGCompileTarget); +begin + RemoveTarget(IndexOfTarget(Target)) +end; + +procedure TProjectGroup.IncreaseChangeStamp; +begin + LUIncreaseChangeStamp64(FChangeStamp); + if Parent<>nil then + Parent.IncreaseChangeStamp; +end; + +procedure TProjectGroup.RemoveAllHandlersOfObject(AnObject: TObject); +var + HandlerType: TProjectGroupHandler; +begin + for HandlerType in TProjectGroupHandler do + FHandlers[HandlerType].RemoveAllMethodsOfObject(AnObject); +end; + +procedure TProjectGroup.AddHandlerOnDestroy(const OnDestroy: TNotifyEvent; + AsLast: boolean); +begin + AddHandler(pghDestroy,TMethod(OnDestroy),AsLast); +end; + +procedure TProjectGroup.RemoveHandlerOnDestroy(const OnDestroy: TNotifyEvent); +begin + RemoveHandler(pghDestroy,TMethod(OnDestroy)); +end; + +{ TPGCompileTarget } + +function TPGCompileTarget.GetAllowedActions: TPGTargetActions; +begin + Result:=PGTargetActions[TargetType]; +end; + +procedure TPGCompileTarget.SetTargetType(AValue: TPGTargetType); +begin + if FTargetType=AValue then Exit; + FTargetType:=AValue; +end; + +procedure TPGCompileTarget.DoDeactivateChildren; +var + i: Integer; +begin + if ProjectGroup=nil then exit; + for i:=0 to ProjectGroup.TargetCount-1 do + ProjectGroup.Targets[i].DoDeActivate(false); +end; + +procedure TPGCompileTarget.DoActivate(DeactivateChildren: boolean); +var + OldActive: TPGCompileTarget; + PG: TProjectGroup; +begin + if DeactivateChildren then + DoDeactivateChildren; + if Active then exit; + if Parent<>nil then + begin + PG:=Parent.ProjectGroup; + if PG<>nil then + begin + OldActive:=PG.ActiveTarget; + if OldActive<>nil then + OldActive.DoDeActivate(false); + end; + Parent.DoActivate(false); + PG.IncreaseChangeStamp; + end; + FActive:=True; +end; + +procedure TPGCompileTarget.DoDeActivate(DeactivateParents: boolean); +begin + if not Active then exit; + if ProjectGroup<>nil then + begin + ProjectGroup.IncreaseChangeStamp; + DoDeactivateChildren; + end; + FActive:=False; + if DeactivateParents and (Parent<>nil) then + Parent.DoDeActivate(true); +end; + +constructor TPGCompileTarget.Create(aParent: TPGCompileTarget); +begin + FParent:=aParent; +end; + +procedure TPGCompileTarget.SetFilename(const AValue: string); +begin + if FFileName=AValue then Exit; + FFileName:=AValue; + TargetType:=TargetTypeFromExtenstion(ExtractFileExt(AValue)); + if ProjectGroup<>nil then + ProjectGroup.FileName:=Filename; +end; + +procedure TPGCompileTarget.SetRemoved(const AValue: boolean); +begin + if Removed=AValue then exit; + FRemoved:=AValue; +end; + +procedure TPGCompileTarget.Activate; +begin + if Active then exit; + DoActivate(true); + ActiveChanged(Self); +end; + +procedure TPGCompileTarget.DeActivate; +begin + if not Active then exit; + DoDeActivate(true); + ActiveChanged(Self); +end; + +function TPGCompileTarget.GetOwnerProjectGroup: TProjectGroup; +var + aTarget: TPGCompileTarget; +begin + aTarget:=Self; + while (aTarget<>nil) do begin + Result:=aTarget.ProjectGroup; + if Result<>nil then exit; + aTarget:=aTarget.Parent; + end; + Result:=nil; +end; + +function TPGCompileTarget.GetRootProjectGroup: TProjectGroup; +var + aTarget: TPGCompileTarget; +begin + aTarget:=Self; + while (aTarget.Parent<>nil) do aTarget:=aTarget.Parent; + Result:=aTarget.ProjectGroup; +end; + +function TPGCompileTarget.GetNext(SkipChildren: boolean): TPGCompileTarget; +var + aTarget: TPGCompileTarget; + PG: TProjectGroup; + i: Integer; +begin + // check first child + if (not SkipChildren) and (ProjectGroup<>nil) and (ProjectGroup.TargetCount>0) + then begin + Result:=ProjectGroup.Targets[0]; + exit(Result); + end; + // check next sibling + aTarget:=Self; + while aTarget.Parent<>nil do begin + PG:=aTarget.Parent.ProjectGroup; + if PG<>nil then begin + i:=PG.IndexOfTarget(aTarget); + if (i>=0) and (i+1<PG.TargetCount) then begin + Result:=PG.Targets[i+1]; + exit(Result); + end; + end; + aTarget:=aTarget.Parent; + end; + Result:=nil; +end; + +function TPGCompileTarget.IndexOfBuildMode(aName: string): integer; +begin + Result:=BuildModeCount-1; + while (Result>=0) and (CompareText(aName,BuildModes[Result].Identifier)<>0) do + dec(Result); +end; + +function TPGCompileTarget.FindBuildMode(aName: string): TPGBuildMode; +var + i: Integer; +begin + i:=IndexOfBuildMode(aName); + if i>=0 then + Result:=BuildModes[i] + else + Result:=nil; +end; + +function TPGCompileTarget.Perform(AAction: TPGTargetAction): TPGActionResult; +begin + if Not (AAction in AllowedActions) then + Result:=arNotAllowed + else + Result:=PerformAction(AAction); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/projectgroup.pp lazarus-1.6+dfsg/components/projectgroups/projectgroup.pp --- lazarus-1.4.4+dfsg/components/projectgroups/projectgroup.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/projectgroup.pp 2015-12-19 15:59:32.000000000 +0000 @@ -0,0 +1,1628 @@ +{ + ToDo: + - update files when project/package/file changes in IDE + - update dependencies when changed in IDE + - update when files changed on disk + - show active build mode, active project + - upate menu items enabled state + - "find" as in the Messages window + - find in files + - options: show file names with relative paths + - options: show icons, show text, show icons+text + - "New" button to create a package/project/file and add to project groups + - clean function, like the Run / Clean up and build dialog + - drag and drop within the editor + - order targets + - move targets between sub groups + - move file to another project + - save session in project group, allowing to quickly switch the active project + - load sub projects in IDE to use code navigation for files not in the active project + - find references in files + + - menu item: open project in new IDE instance + - add menu items for project for all project inspector functions. + - add menu items for package for all package editor functions. + - add root node for packages: when opening a package editor add node instead + - multiple project groups in editor +} +unit ProjectGroup; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, contnrs, Laz2_XMLCfg, Controls, Forms, Dialogs, LCLProc, + LazFileUtils, LazFileCache, LazConfigStorage, FileUtil, PackageIntf, + ProjectIntf, MenuIntf, LazIDEIntf, IDEDialogs, CompOptsIntf, BaseIDEIntf, + IDECommands, IDEExternToolIntf, MacroIntf, IDEMsgIntf, ProjectGroupIntf, + ProjectGroupStrConst, FileProcs, CodeToolManager, CodeCache; + +const + PGOptionsFileName = 'projectgroupsoptions.xml'; + PGFileVersion = 1; + +type + { TIDECompileTarget } + + TIDECompileTarget = class(TPGCompileTarget) + private + FBuildModes: TObjectList; + FFiles: TStringList; + FRequiredPackages: TObjectList; // list of TPGDependency + function CheckIDEIsReadyForBuild: boolean; + function CompileUsingLazBuild(const AAction: TPGTargetAction; aBuildMode: string = ''): TPGActionResult; + protected + function GetBuildModeCount: integer; override; + function GetBuildModes(Index: integer): TPGBuildMode; override; + function GetFileCount: integer; override; + function GetFiles(Index: integer): string; override; + function GetRequiredPackageCount: integer; override; + function GetRequiredPackages(Index: integer): TPGDependency; override; + procedure LoadPackage; + procedure LoadProject; + procedure LoadProject_GroupSettings(XMLConfig: TXMLConfig; aPath: string); + procedure SaveProject_GroupSettings(XMLConfig: TXMLConfig; aPath: string); + procedure LoadProjectGroup(Recursively: boolean); + function ProjectAction(AAction: TPGTargetAction; StartBuildMode: string = ''): TPGActionResult; + function PackageAction(AAction: TPGTargetAction): TPGActionResult; + function ProjectGroupAction(AAction: TPGTargetAction): TPGActionResult; + function PascalFileAction(AAction: TPGTargetAction): TPGActionResult; + function ExternalToolAction(AAction: TPGTargetAction): TPGActionResult; + function PerformAction(AAction: TPGTargetAction): TPGActionResult; override; + function PerformNextTarget(AAction: TPGTargetAction): TPGActionResult; + procedure ActiveChanged(Sender: TPGCompileTarget); override; + public + destructor Destroy; override; + procedure LoadTarget(Recursively: boolean); virtual; + procedure LoadGroupSettings(XMLConfig: TXMLConfig; aPath: string); + procedure SaveGroupSettings(XMLConfig: TXMLConfig; aPath: string); + procedure UnLoadTarget; virtual; + procedure Modified; override; + function PerformBuildModeAction(AAction: TPGTargetAction; + aModeIdentifier: string): TPGActionResult; override; + end; + + // Since a project group iself is also a target, we need a target to represent + // the root projectgroup. + + { TRootProjectGroupTarget } + + TRootProjectGroupTarget = class(TIDECompileTarget) + protected + procedure SetTargetType(AValue: TPGTargetType); override; + public + constructor Create(aOwner: TProjectGroup); + end; + + TTargetEvent = procedure(Sender: TObject; Target: TPGCompileTarget) of object; + TTargetExchangeEvent = procedure(Sender: TObject; Target1,Target2: TPGCompileTarget) of object; + + { TIDEProjectGroup } + + TIDEProjectGroup = class(TProjectGroup) + private + FActiveTarget: TPGCompileTarget; + FOnFileNameChange: TNotifyEvent; + FOnTargetActiveChanged: TTargetEvent; + FOnTargetAdded: TTargetEvent; + FOnTargetDeleted: TTargetEvent; + FOnTargetReadded: TTargetEvent; + FOnTargetsExchanged: TTargetExchangeEvent; + FTargets: TFPObjectList; + FRemovedTargets: TFPObjectList; + protected + procedure SetFileName(AValue: String); override; + function GetTarget(Index: Integer): TPGCompileTarget; override; + function GetTargetCount: Integer; override; + function GetRemovedTargetCount: Integer; override; + function GetRemovedTarget(Index: Integer): TPGCompileTarget; override; + function GetActiveTarget: TPGCompileTarget; override; + procedure SetActiveTarget(AValue: TPGCompileTarget); override; + public + constructor Create(aCompileTarget: TIDECompileTarget); + destructor Destroy; override; + procedure Clear; + function IndexOfTarget(const Target: TPGCompileTarget): Integer; override; + function IndexOfRemovedTarget(const Target: TPGCompileTarget): Integer; override; + function AddTarget(Const AFileName: String): TPGCompileTarget; override; + procedure ReAddTarget(Target: TPGCompileTarget); override; + procedure RemoveTarget(Index: Integer); override; + procedure ExchangeTargets(ASource, ATarget: Integer); override; + procedure ActiveTargetChanged(T: TPGCompileTarget); + function LoadFromFile(Options: TProjectGroupLoadOptions): Boolean; + function SaveToFile: Boolean; + property OnFileNameChange: TNotifyEvent Read FOnFileNameChange Write FOnFileNameChange; + property OnTargetAdded: TTargetEvent Read FOnTargetAdded Write FOnTargetAdded; + property OnTargetDeleted: TTargetEvent Read FOnTargetDeleted Write FOnTargetDeleted; + property OnTargetReadded: TTargetEvent Read FOnTargetReadded Write FOnTargetReadded; + property OnTargetActiveChanged: TTargetEvent Read FOnTargetActiveChanged Write FOnTargetActiveChanged; + property OnTargetsExchanged: TTargetExchangeEvent Read FOnTargetsExchanged Write FOnTargetsExchanged; + end; + + { TIDEProjectGroupOptions } + + TIDEProjectGroupOptions = class + private + FChangeStamp: integer; + FLastSavedChangeStamp: integer; + FRecentProjectGroups: TStringList; + FShowTargetPaths: boolean; + function GetModified: boolean; + procedure SetModified(AValue: boolean); + procedure SetShowTargetPaths(AValue: boolean); + public + constructor Create; + destructor Destroy; override; + procedure SaveSafe; + procedure LoadSafe; + procedure SaveToFile(aFilename: string); + procedure LoadFromFile(aFilename: string); + // changestamp + procedure IncreaseChangeStamp; + property ChangeStamp: integer read FChangeStamp; + property Modified: boolean read GetModified write SetModified; + // recent project groups + property RecentProjectGroups: TStringList read FRecentProjectGroups; + procedure AddToRecentProjectGroups(aFilename: string); + // misc + property ShowTargetPaths: boolean read FShowTargetPaths write SetShowTargetPaths; + end; + + { TIDEProjectGroupManager } + + TIDEProjectGroupManager = Class(TProjectGroupManager) + private + FOptions: TIDEProjectGroupOptions; + procedure AddToRecentGroups(aFilename: string); + function GetNewFileName: Boolean; + protected + FProjectGroup: TIDEProjectGroup; + protected + function GetCurrentProjectGroup: TProjectGroup; override; + function ShowProjectGroupEditor: Boolean; + public + constructor Create; + destructor Destroy; override; + procedure UpdateRecentProjectGroupMenu; + function CheckSaved: Boolean; + // Events for main menu + procedure DoNewClick(Sender: TObject); + procedure DoOpenClick(Sender: TObject); + procedure DoOpenRecentClick(Sender: TObject); + procedure DoSaveClick(Sender: TObject); + procedure DoSaveAsClick(Sender: TObject); + // Public interface + procedure LoadProjectGroup(AFileName: string; AOptions: TProjectGroupLoadOptions); override; + procedure SaveProjectGroup; override; + public + property Options: TIDEProjectGroupOptions read FOptions; + end; + + TEditProjectGroupHandler = procedure(Sender: TObject; AProjectGroup: TProjectGroup); + // Method variant. + TEditProjectGroupEvent = procedure(Sender: TObject; AProjectGroup: TProjectGroup) of object; + +var + OnShowProjectGroupEditor: TEditProjectGroupHandler; // Takes precedence + OnShowProjectGroupEditorEvent: TEditProjectGroupEvent; // method variant + + IDEProjectGroupManager: TIDEProjectGroupManager; + + ProjectGroupMenuRoot: TIDEMenuSection = nil; + PGEditMenuSectionFiles, // e.g. sort files, clean up files + PGEditMenuSectionAddRemove, // e.g. add unit, add dependency + PGEditMenuSectionCompile, // e.g. build clean, create Makefile + PGEditMenuSectionUse, // Target up/down + PGEditMenuSectionMisc: TIDEMenuSection; // e.g. options + +var + cmdOpenProjectGroup, + cmdSaveProjectGroup, + cmdSaveProjectGroupAs, + cmdCreateProjectGroup, + + cmdTargetAdd, + cmdTargetRemove, + cmdTargetEarlier, + cmdTargetActivate, + cmdTargetLater, + cmdTargetCompile, + cmdTargetCompileClean, + cmdTargetCompileFromHere, + cmdTargetInstall, + cmdTargetOpen, + cmdTargetRun, + cmdTargetProperties, + cmdTargetUninstall, + cmdTargetCopyFilename: TIDEMenuCommand; + + OpenRecentProjectGroupSubMenu: TIDEMenuSection; + +function LoadXML(aFilename: string; Quiet: boolean): TXMLConfig; +function CreateXML(aFilename: string; Quiet: boolean): TXMLConfig; +function GetLazBuildFilename: string; + +implementation + +function LoadXML(aFilename: string; Quiet: boolean): TXMLConfig; +var + Code: TCodeBuffer; +begin + Result:=nil; + aFilename:=TrimFilename(aFilename); + if (aFilename='') or (not FilenameIsAbsolute(aFilename)) then begin + debugln(['Error: (lazarus) [TIDECompileTarget.LoadXML] invalid filename "',aFilename,'"']); + if not Quiet then + IDEMessageDialog('Invalid File','Invalid xml file name "'+aFilename+'"',mtError,[mbOk]); + exit; + end; + Code:=CodeToolBoss.LoadFile(aFilename,true,false); + if Code=nil then begin + debugln(['Error: (lazarus) [TIDECompileTarget.LoadXML] unable to load file "',aFilename,'"']); + if not Quiet then + IDEMessageDialog('Read error','Unable to load file "'+aFilename+'"',mtError,[mbOk]); + exit; + end; + try + Result:=TXMLConfig.CreateWithSource(aFilename,Code.Source); + except + on E: Exception do begin + debugln(['Error: (lazarus) [TIDECompileTarget.LoadXML] xml syntax error in "',aFilename,'": '+E.Message]); + if not Quiet then + IDEMessageDialog('Read error','XML syntax error in file "'+aFilename+'": '+E.Message,mtError,[mbOk]); + end; + end; +end; + +function CreateXML(aFilename: string; Quiet: boolean): TXMLConfig; +begin + Result:=nil; + aFilename:=TrimFilename(aFilename); + if (aFilename='') or (not FilenameIsAbsolute(aFilename)) then begin + debugln(['Error: (lazarus) [TIDECompileTarget.CreateXML] invalid filename "',aFilename,'"']); + exit; + end; + try + Result:=TXMLConfig.CreateClean(aFilename); + except + on E: Exception do begin + debugln(['Error: (lazarus) [TIDECompileTarget.CreateXML] unable to create file "',aFilename,'": '+E.Message]); + if not Quiet then + IDEMessageDialog('Write error','Unable to create file "'+aFilename+'": '+E.Message,mtError,[mbOk]); + end; + end; +end; + +function GetLazBuildFilename: string; +begin + // first check the lazbuild executable in the lazarus directory + Result:='$(LazarusDir)'+PathDelim+'$MakeExe(lazbuild)'; + IDEMacros.SubstituteMacros(Result); + if FileExistsCached(Result) then + exit; + // then search in PATH + Result:=FindDefaultExecutablePath('lazbuild'+ExeExt); +end; + +{ TIDEProjectGroupOptions } + +function TIDEProjectGroupOptions.GetModified: boolean; +begin + Result:=FLastSavedChangeStamp<>FChangeStamp +end; + +procedure TIDEProjectGroupOptions.SetModified(AValue: boolean); +begin + if AValue then + IncreaseChangeStamp + else + FLastSavedChangeStamp:=FChangeStamp; +end; + +procedure TIDEProjectGroupOptions.SetShowTargetPaths(AValue: boolean); +begin + if FShowTargetPaths=AValue then Exit; + FShowTargetPaths:=AValue; + IncreaseChangeStamp; +end; + +constructor TIDEProjectGroupOptions.Create; +begin + FRecentProjectGroups:=TStringList.Create; +end; + +destructor TIDEProjectGroupOptions.Destroy; +begin + FreeAndNil(FRecentProjectGroups); + inherited Destroy; +end; + +procedure TIDEProjectGroupOptions.SaveSafe; +begin + try + SaveToFile(PGOptionsFileName); + Modified:=false; + except + on E: Exception do + debugln(['Error: (lazarus) [TIDEProjectGroupOptions.SaveSafe] ',E.Message]); + end; +end; + +procedure TIDEProjectGroupOptions.LoadSafe; +begin + try + LoadFromFile(PGOptionsFileName); + except + on E: Exception do + debugln(['Error: (lazarus) [TIDEProjectGroupOptions.LoadSafe] ',E.Message]); + end; + Modified:=false; +end; + +procedure TIDEProjectGroupOptions.SaveToFile(aFilename: string); +var + Cfg: TConfigStorage; +begin + Cfg:=GetIDEConfigStorage(aFilename,false); + try + Cfg.SetValue('RecentProjectGroups/',FRecentProjectGroups); + Cfg.SetDeleteValue('ShowTargetPaths/',ShowTargetPaths,false); + finally + Cfg.Free; + end; +end; + +procedure TIDEProjectGroupOptions.LoadFromFile(aFilename: string); +var + Cfg: TConfigStorage; +begin + Cfg:=GetIDEConfigStorage(aFilename,true); + try + Cfg.GetValue('RecentProjectGroups/',FRecentProjectGroups); + ShowTargetPaths:=Cfg.GetValue('ShowTargetPaths/',false); + finally + Cfg.Free; + end; +end; + +procedure TIDEProjectGroupOptions.AddToRecentProjectGroups(aFilename: string); +var + i: Integer; +begin + FRecentProjectGroups.Insert(0,aFilename); + for i:=FRecentProjectGroups.Count-1 downto 1 do + if CompareFilenames(FRecentProjectGroups[i],aFilename)=0 then + FRecentProjectGroups.Delete(i); + while FRecentProjectGroups.Count>30 do + FRecentProjectGroups.Delete(FRecentProjectGroups.Count-1); +end; + +procedure TIDEProjectGroupOptions.IncreaseChangeStamp; +begin + LUIncreaseChangeStamp(FChangeStamp); +end; + +{ TIDEProjectGroupManager } + +function TIDEProjectGroupManager.CheckSaved: Boolean; +begin + if (FProjectGroup=nil) or (not FProjectGroup.Modified) then exit(true); + case IDEQuestionDialog(lisProjectGroupModified, + Format(lisProjectGroupModifiedConfirm,[FProjectGroup.FileName]), + mtWarning, + [mrYes,lisSavePG, + mrNo,lisDiscard, + mrAbort,lisAbort],'') of + mrYes : + begin + SaveProjectGroup; + Result:=true; + end; + mrNo : + begin + FProjectGroup.Modified:=False; + Result:=True; + end + else + Result:=False; + end; +end; + +function TIDEProjectGroupManager.GetCurrentProjectGroup: TProjectGroup; +begin + Result:=FProjectGroup; +end; + +function TIDEProjectGroupManager.ShowProjectGroupEditor: Boolean; +begin + Result:=Assigned(FProjectGroup); + if Result then + begin + if Assigned(OnShowProjectGroupEditor) then + OnShowProjectGroupEditor(FProjectGroup,FProjectGroup) + else if Assigned(OnShowProjectGroupEditorEvent) then + OnShowProjectGroupEditorEvent(FProjectGroup,FProjectGroup) + else + Result:=False; + end; +end; + +constructor TIDEProjectGroupManager.Create; +begin + FOptions:=TIDEProjectGroupOptions.Create; +end; + +destructor TIDEProjectGroupManager.Destroy; +begin + FreeAndNil(FProjectGroup); + FreeAndNil(FOptions); + inherited Destroy; +end; + +procedure TIDEProjectGroupManager.UpdateRecentProjectGroupMenu; +var + i: Integer; + Item: TIDEMenuItem; + aFilename: String; +begin + i:=0; + while i<Options.RecentProjectGroups.Count do begin + aFilename:=Options.RecentProjectGroups[i]; + if i<OpenRecentProjectGroupSubMenu.Count then begin + Item:=OpenRecentProjectGroupSubMenu[i]; + Item.Caption:=aFilename; + end + else begin + Item:=RegisterIDEMenuCommand(OpenRecentProjectGroupSubMenu,'OpenRecentProjectGroup'+IntToStr(i),aFilename,@DoOpenRecentClick); + end; + inc(i); + end; + while i<OpenRecentProjectGroupSubMenu.Count do + OpenRecentProjectGroupSubMenu[i].Free; +end; + +procedure TIDEProjectGroupManager.DoNewClick(Sender: TObject); +var + AProject: TLazProject; + aTarget: TIDECompileTarget; +begin + if Not CheckSaved then + Exit; + FreeAndNil(FProjectGroup); + FProjectGroup:=TIDEProjectGroup.Create(nil); + cmdSaveProjectGroupAs.Enabled:=true; + + // add current project + AProject:=LazarusIDE.ActiveProject; + if (AProject<>nil) and FilenameIsAbsolute(AProject.ProjectInfoFile) + and FileExistsCached(AProject.ProjectInfoFile) then begin + aTarget:=FProjectGroup.AddTarget(AProject.ProjectInfoFile) as TIDECompileTarget; + aTarget.LoadTarget(true); + end; + + ShowProjectGroupEditor; +end; + +procedure TIDEProjectGroupManager.DoOpenClick(Sender: TObject); +var + F: TOpenDialog; +begin + if Not CheckSaved then + Exit; + F:=TOpenDialog.Create(Nil); + With F do + try + InitIDEFileDialog(F); + F.Options:=[ofFileMustExist,ofEnableSizing]; + F.Filter:='Lazarus project group (*.lpg)|*.lpg|All files|'+AllFilesMask; + if F.Execute then + LoadProjectGroup(FileName,[pgloLoadRecursively]); + StoreIDEFileDialog(F); + finally + F.Free; + end; +end; + +procedure TIDEProjectGroupManager.DoOpenRecentClick(Sender: TObject); +var + Item: TIDEMenuCommand; + aFilename: String; +begin + Item:=Sender as TIDEMenuCommand; + aFilename:=Item.Caption; + //debugln(['TIDEProjectGroupManager.DoOpenRecentClick ',aFilename]); + LoadProjectGroup(aFilename,[pgloLoadRecursively]); +end; + +procedure TIDEProjectGroupManager.DoSaveClick(Sender: TObject); +begin + SaveProjectGroup; +end; + +function TIDEProjectGroupManager.GetNewFileName: Boolean; +var + F: TSaveDialog; +begin + Result:=False; + F:=TSaveDialog.Create(Nil); + With F do + try + FileName:=FProjectGroup.FileName; + InitIDEFileDialog(F); + F.Options:=[ofOverwritePrompt,ofPathMustExist,ofEnableSizing]; + F.Filter:=lisLazarusProjectGroup+'|*.lpg|'+lisAllFiles+'|'+AllFilesMask; + F.DefaultExt:='.lpg'; + Result:=F.Execute; + if Result then begin + FProjectGroup.FileName:=TrimAndExpandFilename(FileName); + end; + StoreIDEFileDialog(F); + finally + F.Free; + end; +end; + +procedure TIDEProjectGroupManager.AddToRecentGroups(aFilename: string); +begin + Options.AddToRecentProjectGroups(AFileName); + Options.SaveSafe; + UpdateRecentProjectGroupMenu; +end; + +procedure TIDEProjectGroupManager.DoSaveAsClick(Sender: TObject); +begin + if FProjectGroup=nil then exit; + if GetNewFileName then + SaveProjectGroup; +end; + +procedure TIDEProjectGroupManager.LoadProjectGroup(AFileName: string; + AOptions: TProjectGroupLoadOptions); +begin + AFileName:=TrimAndExpandFilename(AFileName); + if Not CheckSaved then + Exit; + FreeAndNil(FProjectGroup); + + AddToRecentGroups(AFileName); + FProjectGroup:=TIDEProjectGroup.Create(nil); + FProjectGroup.FileName:=AFileName; + FProjectGroup.LoadFromFile(AOptions); + if not (pgloSkipDialog in AOptions) then + ShowProjectGroupEditor; + cmdSaveProjectGroupAs.Enabled:=true; +end; + +procedure TIDEProjectGroupManager.SaveProjectGroup; +begin + if not Assigned(FProjectGroup) then exit; + if (FProjectGroup.FileName<>'') or GetNewFileName then begin + FProjectGroup.SaveToFile; + AddToRecentGroups(FProjectGroup.FileName); + end; +end; + +{ TRootProjectGroupTarget } + +procedure TRootProjectGroupTarget.SetTargetType(AValue: TPGTargetType); +begin + if (AValue<>ttProjectGroup) then + Raise Exception.Create(lisErronlyProjectGroupAllowed); + inherited SetTargetType(AValue); +end; + +constructor TRootProjectGroupTarget.Create(aOwner: TProjectGroup); +begin + inherited Create(nil); + TargetType:=ttProjectGroup; + FProjectGroup:=aOwner; + Filename:=ProjectGroup.FileName; +end; + +{ TIDEProjectGroup } + +procedure TIDEProjectGroup.SetFileName(AValue: String); +begin + if FileName=AValue then Exit; + inherited SetFileName(AValue); + if Assigned(FOnFileNameChange) then + FOnFileNameChange(Self); +end; + +function TIDEProjectGroup.GetTarget(Index: Integer): TPGCompileTarget; +begin + Result:=TPGCompileTarget(FTargets[Index]); +end; + +function TIDEProjectGroup.GetTargetCount: Integer; +begin + Result:=FTargets.Count; +end; + +function TIDEProjectGroup.GetRemovedTargetCount: Integer; +begin + Result:=FRemovedTargets.Count; +end; + +function TIDEProjectGroup.GetRemovedTarget(Index: Integer): TPGCompileTarget; +begin + Result:=TPGCompileTarget(FRemovedTargets[Index]); +end; + +function TIDEProjectGroup.GetActiveTarget: TPGCompileTarget; +begin + Result:=FActiveTarget; +end; + +procedure TIDEProjectGroup.SetActiveTarget(AValue: TPGCompileTarget); +begin + if AValue=FActiveTarget then exit; + if FActiveTarget<>nil then + FActiveTarget.DeActivate; + if AValue<>nil then + AValue.Activate; +end; + +constructor TIDEProjectGroup.Create(aCompileTarget: TIDECompileTarget); +begin + inherited Create; + if aCompileTarget=nil then begin + FCompileTarget:=TRootProjectGroupTarget.Create(Self); + end else begin + FCompileTarget:=aCompileTarget; + if FCompileTarget.Parent<>nil then + FParent:=FCompileTarget.Parent.ProjectGroup; + end; + FTargets:=TFPObjectList.Create(True); + FRemovedTargets:=TFPObjectList.Create(True); +end; + +destructor TIDEProjectGroup.Destroy; +begin + FreeAndNil(FTargets); + FreeAndNil(FRemovedTargets); + inherited Destroy; +end; + +procedure TIDEProjectGroup.Clear; +begin + FTargets.Clear; + FRemovedTargets.Clear; +end; + +function TIDEProjectGroup.IndexOfTarget(const Target: TPGCompileTarget): Integer; +begin + Result:=FTargets.IndexOf(Target); +end; + +function TIDEProjectGroup.IndexOfRemovedTarget(const Target: TPGCompileTarget + ): Integer; +begin + Result:=FRemovedTargets.IndexOf(Target); +end; + +function TIDEProjectGroup.AddTarget(const AFileName: String): TPGCompileTarget; +var + Root: TIDEProjectGroup; +begin + Result:=Nil; + if not FilenameIsAbsolute(AFileName) then + RaiseGDBException(AFileName); + if CompareFilenames(AFileName,FileName)=0 then + raise Exception.Create('Invalid cycle. A project group cannot have itself as target.'); + if not FileExistsCached(AFileName) then exit; + Result:=TIDECompileTarget.Create(CompileTarget); + Result.FileName:=AFileName; + FTargets.Add(Result); + IncreaseChangeStamp; + Root:=TIDEProjectGroup(GetRootGroup); + if Assigned(Root.OnTargetAdded) then + Root.OnTargetAdded(Self,Result); +end; + +procedure TIDEProjectGroup.ReAddTarget(Target: TPGCompileTarget); +var + Root: TIDEProjectGroup; +begin + if (Target=nil) or (not Target.Removed) then + raise Exception.Create(''); + FRemovedTargets.OwnsObjects:=false; + FRemovedTargets.Remove(Target); + FRemovedTargets.OwnsObjects:=true; + FTargets.Add(Target); + Target.Removed:=false; + Modified:=true; + Root:=TIDEProjectGroup(GetRootGroup); + if Assigned(Root.OnTargetReadded) then + Root.OnTargetReadded(Self,Target); +end; + +procedure TIDEProjectGroup.RemoveTarget(Index: Integer); +var + Target: TPGCompileTarget; + Root: TIDEProjectGroup; +begin + Target:=Targets[Index]; + Target.DeActivate; + FTargets.OwnsObjects:=false; + FTargets.Delete(Index); + FTargets.OwnsObjects:=true; + FRemovedTargets.Add(Target); + Target.Removed:=true; + Modified:=true; + Root:=TIDEProjectGroup(GetRootGroup); + if Assigned(Root.OnTargetDeleted) then + Root.OnTargetDeleted(Self,Target); +end; + +procedure TIDEProjectGroup.ExchangeTargets(ASource, ATarget: Integer); +var + Root: TIDEProjectGroup; +begin + if ASource=ATarget then exit; + FTargets.Exchange(ASource,ATarget); + Root:=TIDEProjectGroup(GetRootGroup); + if Assigned(Root.OnTargetsExchanged) then + Root.OnTargetsExchanged(Self,GetTarget(ASource),GetTarget(ATarget)); + IncreaseChangeStamp; +end; + +procedure TIDEProjectGroup.ActiveTargetChanged(T: TPGCompileTarget); +var + Root: TIDEProjectGroup; +begin + if T.Active then begin + FActiveTarget:=T; + end else begin + if FActiveTarget=T then + FActiveTarget:=nil; + end; + Root:=TIDEProjectGroup(GetRootGroup); + if Assigned(Root.OnTargetActiveChanged) then + Root.OnTargetActiveChanged(Self,T); +end; + +function TIDEProjectGroup.LoadFromFile(Options: TProjectGroupLoadOptions + ): Boolean; +Var + ARoot: String; + TargetFileName: String; + BaseDir, APath: String; + XMLConfig: TXMLConfig; + i,ACount: Integer; + Target: TIDECompileTarget; + aGroup: TProjectGroup; +begin + Result:=false; + if not FilenameIsAbsolute(FileName) then exit; + if not FileExistsCached(Filename) then exit; + + Clear; + + aGroup:=Parent; + while aGroup<>nil do begin + if CompareFilenames(aGroup.FileName,Filename)=0 then + exit; // circular + aGroup:=aGroup.Parent; + end; + + BaseDir:=AppendPathDelim(ExtractFilePath(FileName)); + try + XMLConfig := LoadXML(Filename,pgloSkipDialog in Options); + try + ARoot:='ProjectGroup'; + ACount:=XMLConfig.GetValue(ARoot+'/Targets/Count',0); + for i:=0 to ACount-1 do + begin + Target:=Nil; + APath:=Format(ARoot+'/Targets/Target%d/',[i]); + TargetFileName:=XMLConfig.GetValue(APath+'FileName',''); + TargetFileName:=TrimFilename(SetDirSeparators(TargetFileName)); + if not FilenameIsAbsolute(TargetFileName) then + TargetFileName:=TrimFilename(BaseDir+TargetFileName); + If (TargetFileName<>'') and FileExistsCached(TargetFileName) then begin + Target:=TIDECompileTarget(AddTarget(TargetFileName)); + if pgloLoadRecursively in Options then + Target.LoadTarget(true); + end + else if (pgloRemoveInvalid in Options) then + begin + Target:=TIDECompileTarget(AddTarget(TargetFileName)); + Target.Removed:=True; + end + else if (pgloSkipInvalid in options) then + // Do nothing + else if (pgloErrorInvalid in options) then + exit + else + case IDEQuestionDialog(lisErrTargetDoesNotExist, + Format(lisErrNoSuchFile,[TargetFileName]),mtWarning, + [mrYes,lisRemoveTarget, + mrNo,lisAbortLoadingProjectGroup, + mrYesToAll,lisSkipAllTargets],'') of + mrYes : + begin + Target:=TIDECompileTarget(AddTarget(TargetFileName)); + Target.Removed:=True; + end; + mrNo: + exit; + mrYesToAll: + begin + Target:=TIDECompileTarget(AddTarget(TargetFileName)); + Target.Removed:=True; + end; + else + exit; + end; + Target.LoadGroupSettings(XMLConfig,APath); + end; + finally + Modified:=false; + XMLConfig.Free; + end; + Result:=true; + except + on E: Exception do begin + IDEMessageDialog('Read Error','Error reading project group file "'+Filename+'"'#13+E.Message, + mtError,[mbOk]); + end; + end; +end; + +function TIDEProjectGroup.SaveToFile: Boolean; +Var + TargetPath: String; + RelativeFileName: String; + ARoot, APath: String; + XMLConfig: TXMLConfig; + i,ACount: Integer; + aTarget: TIDECompileTarget; + SubPG: TIDEProjectGroup; +begin + Result:=True; + // save .lpg + try + XMLConfig := CreateXML(FileName,false); + try + TargetPath:=ExtractFilePath(FileName); + ARoot:='ProjectGroup'; + XMLConfig.SetValue(ARoot+'/FileVersion',PGFileVersion); + ACount:=0; + For i:=0 to TargetCount-1 do + begin + aTarget:=TIDECompileTarget(GetTarget(i)); + if aTarget.Removed then continue; + APath:=Format(ARoot+'/Targets/Target%d/',[ACount]); + RelativeFileName:=ExtractRelativepath(TargetPath,aTarget.FileName); + XMLConfig.SetDeleteValue(APath+'FileName',RelativeFileName,''); + aTarget.SaveGroupSettings(XMLConfig,APath); + Inc(ACount); + end; + XMLConfig.SetDeleteValue(ARoot+'/Targets/Count',ACount,0); + XMLConfig.Flush; + finally + XMLConfig.Free; + end; + except + on E: Exception do begin + IDEMessageDialog('Write Error','Unable to write project group file "'+Filename+'"'#13+E.Message, + mtError,[mbOk]); + Result:=false; + end; + end; + if not Result then exit; + // save nested .plg + For i:=0 to TargetCount-1 do + begin + aTarget:=TIDECompileTarget(GetTarget(i)); + if aTarget.Removed then continue; + if aTarget.TargetType=ttProjectGroup then + begin + SubPG:=TIDEProjectGroup(aTarget.ProjectGroup); + if not SubPG.SaveToFile then + exit(false); + end; + end; + + Modified:=False; + Result:=true; +end; + +{ TIDECompileTarget } + +procedure TIDECompileTarget.LoadTarget(Recursively: boolean); +begin + case TargetType of + ttProject: LoadProject; + ttPackage: LoadPackage; + ttProjectGroup: LoadProjectGroup(Recursively); + end; +end; + +procedure TIDECompileTarget.LoadGroupSettings(XMLConfig: TXMLConfig; + aPath: string); +begin + case TargetType of + ttProject: LoadProject_GroupSettings(XMLConfig,aPath); + end; + if not Removed then + if XMLConfig.GetValue(APath+'Active',False) then + Activate; +end; + +procedure TIDECompileTarget.SaveGroupSettings(XMLConfig: TXMLConfig; + aPath: string); +begin + case TargetType of + ttProject: SaveProject_GroupSettings(XMLConfig,aPath); + end; + XMLConfig.SetDeleteValue(APath+'Active',Active and not Removed,False); +end; + +procedure TIDECompileTarget.UnLoadTarget; +begin + if (FProjectGroup<>nil) and not (Self is TRootProjectGroupTarget) then + FreeAndNil(FProjectGroup); + if FBuildModes<>nil then + FreeAndNil(FBuildModes); + if FFiles<>nil then + FreeAndNil(FFiles); + if FRequiredPackages<>nil then + FreeAndNil(FRequiredPackages); +end; + +destructor TIDECompileTarget.Destroy; +begin + UnLoadTarget; + inherited Destroy; +end; + +procedure TIDECompileTarget.Modified; +var + PG: TProjectGroup; +begin + PG:=GetOwnerProjectGroup; + PG.Modified:=true; +end; + +function TIDECompileTarget.PerformBuildModeAction(AAction: TPGTargetAction; + aModeIdentifier: string): TPGActionResult; +begin + if TargetType<>ttProject then exit(arNotAllowed); + Result:=ProjectAction(AAction,aModeIdentifier); +end; + +function TIDECompileTarget.CompileUsingLazBuild(const AAction: TPGTargetAction; + aBuildMode: string): TPGActionResult; +var + FPCParser: TFPCParser; + Params: TStringList; + WorkingDir: String; + LazBuildFilename: String; + CompileHint: String; + ToolTitle, ToolKind: String; + Tool: TAbstractExternalTool; +begin + Result:=arFailed; + case TargetType of + ttProject: + begin + ToolTitle:='Compile Project '+ExtractFileNameOnly(Filename); + if aBuildMode<>'' then + ToolTitle+=', build mode "'+aBuildMode+'"'; + ToolKind:='Other Project'; + end; + ttPackage: + begin + ToolTitle:='Compile Package '+ExtractFileNameOnly(Filename); + ToolKind:='Package'; + end; + else exit; + end; + + CompileHint:='Project Group: '+Parent.Filename+LineEnding; + + LazBuildFilename:=GetLazBuildFilename; + if LazBuildFilename='' then begin + IDEMessageDialog('lazbuild not found', 'The lazbuild'+ExeExt+' was not ' + +'found.' + , mtError, [mbOk]); + exit(arFailed); + end; + + WorkingDir:=ExtractFilePath(Filename); + Params:=TStringList.Create; + if AAction=taCompileClean then + Params.Add('-B'); + if aBuildMode<>'' then + Params.Add('--build-mode='+aBuildMode); + Params.Add(Filename); + + Tool:=ExternalToolList.Add(ToolTitle); + Tool.Reference(Self, ClassName); + try + Tool.Data:=TIDEExternalToolData.Create(ToolKind, ExtractFileNameOnly( + Filename), Filename); + Tool.FreeData:=true; + Tool.Hint:=CompileHint; + Tool.Process.Executable:=LazBuildFilename; + Tool.Process.Parameters:=Params; + Tool.Process.CurrentDirectory:=WorkingDir; + FPCParser:=TFPCParser(Tool.AddParsers(SubToolFPC)); + FPCParser.HideHintsSenderNotUsed:=true; //not AProject.CompilerOptions.ShowHintsForSenderNotUsed; + FPCParser.HideHintsUnitNotUsedInMainSource:=true; //not AProject.CompilerOptions.ShowHintsForUnusedUnitsInMainSrc; + //if (not AProject.CompilerOptions.ShowHintsForUnusedUnitsInMainSrc) + //and (AProject.MainFilename<>'') then + // FPCParser.FilesToIgnoreUnitNotUsed.Add(AProject.MainFilename); + Tool.AddParsers(SubToolMake); + Tool.Execute; + Tool.WaitForExit; + if Tool.ErrorMessage='' then + Result:=arOK; + finally + Tool.Release(Self); + Params.Free; + end; +end; + +function TIDECompileTarget.CheckIDEIsReadyForBuild: boolean; +begin + // check toolstatus + if LazarusIDE.ToolStatus<>itNone then begin + IDEMessageDialog('Be patient!', 'There is still another build in progress.', + mtInformation, [mbOk]); + exit(false); + end; + Result:=true; +end; + +function TIDECompileTarget.GetBuildModeCount: integer; +begin + if FBuildModes=nil then + Result:=0 + else + Result:=FBuildModes.Count; +end; + +function TIDECompileTarget.GetBuildModes(Index: integer): TPGBuildMode; +begin + Result:=TPGBuildMode(FBuildModes[Index]); +end; + +function TIDECompileTarget.GetFileCount: integer; +begin + if FFiles=nil then + Result:=0 + else + Result:=FFiles.Count; +end; + +function TIDECompileTarget.GetFiles(Index: integer): string; +begin + Result:=FFiles[Index]; +end; + +function TIDECompileTarget.GetRequiredPackageCount: integer; +begin + if FRequiredPackages<>nil then + Result:=FRequiredPackages.Count + else + Result:=0; +end; + +function TIDECompileTarget.GetRequiredPackages(Index: integer): TPGDependency; +begin + Result:=TPGDependency(FRequiredPackages[Index]); +end; + +procedure TIDECompileTarget.LoadPackage; +var + MR: TModalResult; + I: Integer; + Pkg, RequiredPkg: TIDEPackage; + PkgName: String; + PkgList: TFPList; +begin + if FFiles<>nil then exit; // already loaded + + debugln(['TIDECompileTarget.LoadPackage ',Filename]); + FFiles:=TStringList.Create; + FRequiredPackages:=TObjectList.Create(True); + + PkgName:=ExtractFileUnitname(Filename,true); + if PkgName='' then begin + debugln(['Warning: (lazarus) [TIDECompileTarget.LoadPackage] invalid package filename "',Filename,'"']); + exit; + end; + + Pkg:=PackageEditingInterface.FindPackageWithName(PkgName); + if Pkg=nil then begin + MR:=PackageEditingInterface.DoOpenPackageFile(Filename, + [pofDoNotOpenEditor],False); + if MR<>mrOk then begin + debugln(['Warning: (lazarus) [TIDECompileTarget.LoadPackage] DoOpenPackageFile failed on file "',Filename,'"']); + exit; + end; + Pkg:=PackageEditingInterface.FindPackageWithName(PkgName); + if Pkg=nil then begin + debugln(['Warning: (lazarus) [TIDECompileTarget.LoadPackage] DoOpenPackageFile failed pkgname="',PkgName,'" on file "',Filename,'"']); + exit; + end; + end; + if CompareFilenames(Pkg.Filename,Filename)<>0 then begin + debugln(['Warning: (lazarus) [TIDECompileTarget.LoadPackage] there is already a package with that name: wanted="',Filename,'" loaded="',Pkg.Filename,'"']); + exit; + end; + + // load list of file + for i:=0 to Pkg.FileCount-1 do + FFiles.Add(Pkg.Files[i].Filename); + + // load list of required package + PkgList:=nil; + try + PackageEditingInterface.GetRequiredPackages(Pkg,PkgList,[pirNotRecursive]); + if PkgList<>nil then + for i:=0 to PkgList.Count-1 do begin + RequiredPkg:=TIDEPackage(PkgList[i]); + PkgName:=ExtractFileUnitname(RequiredPkg.Filename,true); + FRequiredPackages.Add(TPGDependency.Create(Self,PkgName)); + end; + finally + PkgList.Free; + end; +end; + +procedure TIDECompileTarget.LoadProject; +var + AProject: TLazProject; + i, Cnt: Integer; + ProjFile: TLazProjectFile; + PkgList: TFPList; + Pkg: TIDEPackage; + PkgName, Path, SubPath, CurFilename, BaseDir, BuildMode: String; + xml: TXMLConfig; + LazBuildMode: TLazProjectBuildMode; +begin + if FFiles<>nil then exit; // already loaded + + //debugln(['TIDECompileTarget.LoadProject ',Filename]); + FBuildModes:=TObjectList.Create(True); + FFiles:=TStringList.Create; + FRequiredPackages:=TObjectList.Create(True); + + AProject:=LazarusIDE.ActiveProject; + if (AProject<>nil) and (CompareFilenames(AProject.ProjectInfoFile,Filename)=0) + then begin + // load from active project + for i:=0 to AProject.FileCount-1 do begin + ProjFile:=AProject.Files[i]; + if not ProjFile.IsPartOfProject then continue; + FFiles.Add(ProjFile.Filename); + end; + + // load dependencies from active project + PkgList:=nil; + try + PackageEditingInterface.GetRequiredPackages(AProject,PkgList,[pirNotRecursive,pirCompileOrder]); + if PkgList<>nil then begin + for i:=0 to PkgList.Count-1 do begin + Pkg:=TIDEPackage(PkgList[i]); + PkgName:=ExtractFileUnitname(Pkg.Filename,true); + FRequiredPackages.Add(TPGDependency.Create(Self,PkgName)); + end; + end; + finally + PkgList.Free; + end; + + // load buildmodes + for i:=0 to AProject.LazBuildModes.Count-1 do begin + LazBuildMode:=AProject.LazBuildModes.BuildModes[i]; + FBuildModes.Add(TPGBuildMode.Create(Self,LazBuildMode.Identifier,false)); + end; + end else begin + // load from .lpi file + + xml:=LoadXML(Filename,true); + try + if xml<>nil then begin + // load list of files from lpi + BaseDir:=ExtractFilePath(Filename); + Path:='ProjectOptions/Units/'; + Cnt:=xml.GetValue(Path+'Count',0); + for i:=0 to Cnt-1 do begin + SubPath:=Path+'Unit'+IntToStr(i)+'/'; + if xml.GetValue(SubPath+'IsPartOfProject/Value','')<>'True' then + continue; + CurFilename:=xml.GetValue(SubPath+'Filename/Value',''); + if CurFilename='' then continue; + if not FilenameIsAbsolute(CurFilename) then + CurFilename:=TrimFilename(BaseDir+CurFilename); + FFiles.Add(CurFilename); + end; + + // load list of RequiredPackages from lpi + Path:='ProjectOptions/RequiredPackages/'; + Cnt:=xml.GetValue(Path+'Count',0); + for i:=1 to Cnt do begin + SubPath:=Path+'Item'+IntToStr(i)+'/'; + PkgName:=xml.GetValue(SubPath+'PackageName/Value',''); + if PkgName='' then continue; + FRequiredPackages.Add(TPGDependency.Create(Self,PkgName)); + end; + + // load build modes + Path:='ProjectOptions/BuildModes/'; + Cnt:=xml.GetValue(Path+'Count',0); + for i:=1 to Cnt do begin + SubPath:=Path+'Item'+IntToStr(i)+'/'; + BuildMode:=xml.GetValue(SubPath+'Name',''); + // load/store compile in lpg + if BuildMode<>'' then + FBuildModes.Add(TPGBuildMode.Create(Self,BuildMode,false)); + end; + end; + finally + xml.Free; + end; + end; +end; + +procedure TIDECompileTarget.LoadProject_GroupSettings(XMLConfig: TXMLConfig; + aPath: string); +var + Cnt, i: Integer; + SubPath, aName: String; + aMode: TPGBuildMode; +begin + Cnt:=XMLConfig.GetValue(aPath+'BuildModes/Count',0); + for i:=1 to Cnt do begin + SubPath:=aPath+'Mode'+IntToStr(i)+'/'; + aName:=XMLConfig.GetValue(SubPath+'Name',''); + aMode:=FindBuildMode(aName); + if aMode=nil then continue; + aMode.Compile:=XMLConfig.GetValue(SubPath+'Compile',false); + end; +end; + +procedure TIDECompileTarget.SaveProject_GroupSettings(XMLConfig: TXMLConfig; + aPath: string); +var + i: Integer; + SubPath: String; + aMode: TPGBuildMode; +begin + XMLConfig.SetDeleteValue(aPath+'BuildModes/Count',BuildModeCount,0); + for i:=1 to BuildModeCount do begin + SubPath:=aPath+'Mode'+IntToStr(i)+'/'; + aMode:=BuildModes[i-1]; + XMLConfig.SetDeleteValue(SubPath+'Name',aMode.Identifier,''); + XMLConfig.SetDeleteValue(SubPath+'Compile',aMode.Compile,false); + end; +end; + +procedure TIDECompileTarget.LoadProjectGroup(Recursively: boolean); +var + PG: TIDEProjectGroup; + Flags: TProjectGroupLoadOptions; +begin + if ProjectGroup<>nil then exit; + + debugln(['TIDECompileTarget.LoadProjectGroup ',Filename]); + PG:=TIDEProjectGroup.Create(Self); + FProjectGroup:=PG; + PG.FileName:=Self.FileName; + Flags:=[]; + if Recursively then + Include(Flags,pgloLoadRecursively); + PG.LoadFromFile(Flags); +end; + +function TIDECompileTarget.ProjectAction(AAction: TPGTargetAction; + StartBuildMode: string): TPGActionResult; +var + F: TProjectBuildFlags; + i: Integer; + aMode: TPGBuildMode; + aProject: TLazProject; +begin + Result:=arFailed; + + debugln(['TIDECompileTarget.ProjectAction ',Filename]); + aProject:=LazarusIDE.ActiveProject; + if (aProject<>nil) + and (CompareFilenames(aProject.ProjectInfoFile,Filename)=0) + then begin + // project loaded => use IDE functions + + if StartBuildMode<>'' then begin + // switch to build mode + if CompareText(StartBuildMode,aProject.ActiveBuildModeID)<>0 then + begin + if not CheckIDEIsReadyForBuild then exit; + aProject.ActiveBuildModeID:=StartBuildMode; + end; + end; + + case AAction of + taSettings : + begin + if not ExecuteIDECommand(Self,ecProjectOptions) then + Result:=arOK; + end; + taCompile, + taCompileClean, + taCompileFromHere: + begin + if not CheckIDEIsReadyForBuild then exit; + // save project + if LazarusIDE.DoSaveProject([])<>mrOk then exit; + + F:=[]; + if (AAction=taCompileClean) then + Include(F,pbfCleanCompile); + if BuildModeCount>1 then begin + i:=0; + if StartBuildMode<>'' then begin + i:=aProject.LazBuildModes.IndexOf(StartBuildMode); + if i<0 then exit; + end; + while i<BuildModeCount do begin + aMode:=BuildModes[i]; + inc(i); + debugln(['TIDECompileTarget.ProjectAction ',(aMode.Identifier<>StartBuildMode),' ',aMode.Identifier,' StartBuildMode=',StartBuildMode,' ',AAction=taCompileFromHere]); + if (aMode.Identifier<>StartBuildMode) and (not aMode.Compile) then continue; + // switch build mode + aProject.ActiveBuildModeID:=aMode.Identifier; + if aProject.ActiveBuildModeID<>aMode.Identifier + then begin + IDEMessageDialog('Build mode not found','Build mode "'+aMode.Identifier+'" not found.',mtError,[mbOk]); + exit; + end; + // compile project in active buildmode + if LazarusIDE.DoBuildProject(crCompile,F)<>mrOk then + exit; + if (StartBuildMode<>'') and (AAction<>taCompileFromHere) then + exit(arOK); + StartBuildMode:=''; + end; + end else begin + // compile default buildmode + if LazarusIDE.DoBuildProject(crCompile,F)<>mrOk then + exit; + end; + Result:=arOK; + if AAction=taCompileFromHere then + Result:=PerformNextTarget(taCompileFromHere); + end; + taRun : + begin + if LazarusIDE.DoRunProject<>mrOk then exit; + Result:=arOk; + end; + end; + end else begin + // project not loaded => use lazbuild + case AAction of + taOpen,taSettings: + begin + // open project + if LazarusIDE.DoOpenProjectFile(Filename,[ofAddToRecent])<>mrOk then + exit; + if AAction=taSettings then + if not ExecuteIDECommand(Self,ecProjectOptions) then + exit; + Result:=arOK; + end; + taCompile, + taCompileClean, + taCompileFromHere: + begin + if not CheckIDEIsReadyForBuild then exit; + + // save files + if LazarusIDE.DoSaveProject([])<>mrOk then exit; + + LazarusIDE.ToolStatus:=itBuilder; + try + if BuildModeCount>1 then begin + IDEMessagesWindow.Clear; + i:=0; + if StartBuildMode<>'' then begin + while (i<BuildModeCount) and (CompareText(BuildModes[i].Identifier,StartBuildMode)<>0) + do inc(i); + end; + while i<BuildModeCount do begin + aMode:=BuildModes[i]; + inc(i); + if (aMode.Identifier<>StartBuildMode) and (not aMode.Compile) then continue; + // run lazbuild as external tool + Result:=CompileUsingLazBuild(AAction,aMode.Identifier); + if Result<>arOK then exit; + + if (StartBuildMode<>'') and (AAction<>taCompileFromHere) then + exit(arOK); + StartBuildMode:=''; + end; + end else begin + IDEMessagesWindow.Clear; + // run lazbuild as external tool + Result:=CompileUsingLazBuild(AAction); + if Result<>arOK then exit; + end; + finally + LazarusIDE.ToolStatus:=itNone; + end; + Result:=arOK; + if AAction=taCompileFromHere then + Result:=PerformNextTarget(taCompileFromHere); + end; + taRun: + begin + // open project, then run + if LazarusIDE.DoOpenProjectFile(Filename,[ofAddToRecent])<>mrOk then + exit; + if LazarusIDE.DoRunProject<>mrOk then + exit; + Result:=arOk; + end; + end; + end; +end; + +function TIDECompileTarget.PackageAction(AAction: TPGTargetAction): TPGActionResult; +begin + Result:=arFailed; + + case AAction of + taOpen, + taSettings: + begin + if PackageEditingInterface.DoOpenPackageFile(FileName,[],False)<>mrOk then + exit(arFailed); + Result:=arOK; + end; + taCompile, + taCompileClean, + taCompileFromHere: + begin + if not CheckIDEIsReadyForBuild then exit; + // compile independent of active project => use lazbuild + Result:=CompileUsingLazBuild(AAction); + if Result<>arOK then exit; + if AAction=taCompileFromHere then + Result:=PerformNextTarget(taCompileFromHere); + end; + taInstall: ; // ToDo install + taUninstall: ; // ToDo uninstall + end; +end; + +function TIDECompileTarget.ProjectGroupAction(AAction: TPGTargetAction + ): TPGActionResult; +var + i: Integer; + aTarget: TIDECompileTarget; +begin + Result:=arFailed; + + case AAction of + taOpen: + ProjectGroupManager.LoadProjectGroup(FileName,[]); + taSettings: ; + taCompile, + taCompileClean: + begin + for i:=0 to ProjectGroup.TargetCount-1 do begin + aTarget:=TIDECompileTarget(ProjectGroup.Targets[i]); + if AAction in aTarget.AllowedActions then + if aTarget.PerformAction(AAction)<>arOk then + exit; + end; + Result:=arOk; + end; + taCompileFromHere: + begin + if ProjectGroupAction(taCompile)<>arOK then + exit; + Result:=arOK; + aTarget:=TIDECompileTarget(GetNext(true)); + if aTarget=nil then exit; + Result:=aTarget.PerformAction(taCompileFromHere); + end; + end; +end; + +function TIDECompileTarget.PascalFileAction(AAction: TPGTargetAction + ): TPGActionResult; +begin + Result:=arFailed; + case AAction of + taOpen, + taSettings: + begin + if LazarusIDE.DoOpenEditorFile(Filename,-1,-1,[ofAddToRecent,ofRegularFile])<>mrOK then + exit; + if AAction=taSettings then + if LazarusIDE.DoConfigureBuildFile<>mrOk then exit; + Result:=arOK; + end; + taCompile, + taCompileClean, + taCompileFromHere: + begin + if not CheckIDEIsReadyForBuild then exit; + if LazarusIDE.DoBuildFile(false,Filename)<>mrOK then + exit; + Result:=arOK; + if AAction=taCompileFromHere then + Result:=PerformNextTarget(taCompileFromHere); + end; + taRun: + begin + if not CheckIDEIsReadyForBuild then exit; + if LazarusIDE.DoRunFile(Filename)<>mrOK then + exit; + Result:=arOK; + end; + end; +end; + +function TIDECompileTarget.ExternalToolAction(AAction: TPGTargetAction + ): TPGActionResult; +begin + Result:=arFailed; + debugln(['TIDECompileTarget.ExternalToolAction ToDo']); + // ToDo + case AAction of + taSettings: ; + taCompile, + taCompileClean, + taCompileFromHere: + begin + if AAction=taCompileFromHere then + Result:=PerformNextTarget(taCompileFromHere); + end; + taRun: ; + end; +end; + +function TIDECompileTarget.PerformAction(AAction: TPGTargetAction): TPGActionResult; +begin + case TargetType of + ttProject: Result:=ProjectAction(AAction); + ttPackage: Result:=PackageAction(AAction); + ttProjectGroup: Result:=ProjectGroupAction(AAction); + ttPascalFile: Result:=PascalFileAction(AAction); + ttExternalTool: Result:=ExternalToolAction(AAction); + end; +end; + +function TIDECompileTarget.PerformNextTarget(AAction: TPGTargetAction + ): TPGActionResult; +var + aTarget: TIDECompileTarget; +begin + aTarget:=TIDECompileTarget(GetNext(false)); + while (aTarget<>nil) do + begin + if AAction in aTarget.AllowedActions then + begin + Result:=aTarget.PerformAction(AAction); + exit; + end; + aTarget:=TIDECompileTarget(aTarget.GetNext(false)); + end; + Result:=arOK; +end; + +procedure TIDECompileTarget.ActiveChanged(Sender: TPGCompileTarget); +begin + (GetRootProjectGroup as TIDEProjectGroup).ActiveTargetChanged(Sender); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/projectgroupstrconst.pas lazarus-1.6+dfsg/components/projectgroups/projectgroupstrconst.pas --- lazarus-1.4.4+dfsg/components/projectgroups/projectgroupstrconst.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/projectgroupstrconst.pas 2015-11-19 23:31:50.000000000 +0000 @@ -0,0 +1,94 @@ +unit ProjectGroupStrConst; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils; + +Resourcestring + lisErrTargetDoesNotExist = 'Target does not exist. Remove ?'; + lisErrNoSuchFile = 'Could not find target file'+sLineBreak+ + '"%s"'+sLineBreak+ + 'What do you want to do ?'; + lisRemoveTarget = 'Remove target'; + lisAbortLoadingProjectGroup = 'Abort loading project group'; + lisSkipAllTargets = 'Remove all invalid targets'; + lisErrOnlyProjectGroupAllowed = 'Only target type "projectgroup" is allowed for root project group'; + lisLazarusProjectGroup = 'Lazarus project group'; + lisAllFiles = 'All files'; + lisProjectGroupModified = 'Project group modified'; + lisProjectGroupModifiedConfirm = 'Project group "%s" is modified.'+sLineBreak+ + 'what do you want to do?'; + + lisSavePG = 'Save project group'; + lisDiscard = 'Discard changes'; + lisAbort = 'Abort'; + + lisTargetAdd = 'Add target'; + lisTargetRemove = 'Remove target'; + lisTargetCompile = 'Compile'; + lisTargetCompileClean = 'Compile clean'; + lisTargetCompileFromHere = 'Compile from here'; + lisTargetInstall = 'Install'; + lisTargetUnInstall = 'Uninstall'; + lisTargetActivate = 'Activate target'; + lisTargetOpen = 'Open Target'; + lisTargetRun = 'Run Target'; + lisTargetProperties = 'Target properties'; + lisTargetLater = 'Compile target later'; + lisTargetEarlier = 'Compile target earlier'; + lisNewProjectGroup = 'New project group'; + lisOpenProjectGroup = 'Open project group'; + lisOpenRecentProjectGroup = 'Open recent project group'; + lisSaveProjectGroup = 'Save project group'; + lisSaveProjectGroupAs = 'Save project group as'; + lisTargetCopyFilename = 'Copy file name'; + + lisProjectGroup = 'Project group %s'; + lisNodeTargets = 'Targets'; + lisNodeRemovedTargets = 'Removed targets'; + lisNodeBuildModes = 'Build Modes'; + lisNodeFiles = 'Files'; + lisNodeRemovedFiles = 'Removed files'; + lisNodeDependencies = 'Dependencies'; + lisNodeRemovedDependencies = 'Removed dependencies'; + lisTargetCount = '%d targets'; + lisActiveTarget = 'Target: %s'; + + lisProjectGroupSaveCaption = 'Save'; + lisProjectGroupSaveHint = 'Save project group'; + lisProjectGroupSaveAsCaption = 'Save As'; + lisProjectGroupSaveAsHint = 'Save project group with a new name'; + lisProjectGroupAddExistingCaption = 'Add'; + lisProjectGroupAddExistingHint = 'Add existing target to project group'; + lisProjectGroupDeleteCaption = 'Remove'; + lisProjectGroupDeleteHint = 'Remove target from project group'; + lisProjectGroupAddNewCaption = 'New'; + lisProjectGroupAddNewHint = 'Add new target to project group'; + lisTargetEarlierCaption = 'Earlier'; + lisTargetEarlierHint = 'Build target earlier'; + lisTargetLaterCaption = 'Later'; + lisTargetLaterHint = 'Build target later'; + lisTargetCompileCaption = 'Compile'; + lisTargetCompileHint = 'Compile selected target'; + lisTargetCompileCleanCaption = 'Compile clean'; + lisTargetCompileCleanHint = 'Compile selected target clean'; + lisTargetPropertiesCaption = 'Properties'; + lisTargetPropertiesHint = 'Show property dialog for selected target'; + lisTargetRunCaption = 'Run'; + lisTargetRunHint = 'Run selected target'; + lisTargetInstallCaption = 'Install'; + lisTargetInstallHint = 'Install selected target'; + lisTargetUninstallCaption = 'Uninstall'; + lisTargetUninstallHint = 'Uninstall selected target'; + lisTargetActivateCaption = 'Activate'; + lisTargetActivateHint = 'Activate selected target'; + lisTargetOpenCaption = 'Open'; + lisTargetOpenHint = 'Open selected target'; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/README.txt lazarus-1.6+dfsg/components/projectgroups/README.txt --- lazarus-1.4.4+dfsg/components/projectgroups/README.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/README.txt 2015-11-23 18:03:28.000000000 +0000 @@ -0,0 +1,9 @@ +IDE add-on for Project Groups. +Project Groups allows to build groups of projects with a few mouse clicks. + +Original code from Michael Van Canneyt. + +Author: Mattias Gaertner mattias@freepascal.org + +Documentation: +http://wiki.lazarus.freepascal.org/Project_Groups diff -Nru lazarus-1.4.4+dfsg/components/projectgroups/regprojectgroup.pp lazarus-1.6+dfsg/components/projectgroups/regprojectgroup.pp --- lazarus-1.4.4+dfsg/components/projectgroups/regprojectgroup.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/projectgroups/regprojectgroup.pp 2015-12-19 15:59:32.000000000 +0000 @@ -0,0 +1,93 @@ +unit RegProjectGroup; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, ProjectGroupIntf, MenuIntf, + ProjectGroupStrConst, ProjectGroup, ProjectGroupEditor; + +procedure RegisterStandardProjectGroupMenuItems; +procedure Register; + +implementation + +const + ProjectGroupEditorMenuRootName = 'ProjectGroupEditorMenu'; + +procedure RegisterStandardProjectGroupMenuItems; +var + Section,Root : TIDEMenuSection; +begin + Root:=RegisterIDEMenuRoot(ProjectGroupEditorMenuRootName); + ProjectGroupMenuRoot:=Root; + PGEditMenuSectionFiles:=RegisterIDEMenuSection(Root,'File'); + + Section:=RegisterIDEMenuSection(Root,'Compile'); + PGEditMenuSectionCompile:=Section; + cmdTargetCompile:=RegisterIDEMenuCommand(Section,'TargetCompile',lisTargetCompile); + cmdTargetCompileClean:=RegisterIDEMenuCommand(Section,'TargetCompileClean',lisTargetCompileClean); + cmdTargetCompileFromHere:=RegisterIDEMenuCommand(Section,'TargetCompileFromHere',lisTargetCompileFromHere); + // ToDo: clean ... -> clean up dialog + // ToDo: set build mode of all projects + + Section:=RegisterIDEMenuSection(Root,'AddRemove'); + PGEditMenuSectionAddRemove:=Section; + cmdTargetAdd:=RegisterIDEMenuCommand(Section,'TargetAdd',lisTargetAdd); + cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove); + // ToDo: re-add + + Section:=RegisterIDEMenuSection(Root,'Use'); + PGEditMenuSectionUse:=Section; + cmdTargetInstall:=RegisterIDEMenuCommand(Section,'TargetInstall',lisTargetInstall);// ToDo + cmdTargetUninstall:=RegisterIDEMenuCommand(Section,'TargetUninstall',lisTargetUninstall);// ToDo + cmdTargetEarlier:=RegisterIDEMenuCommand(Section,'TargetEarlier',lisTargetEarlier);// ToDo: Ctrl+Up + cmdTargetLater:=RegisterIDEMenuCommand(Section,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down + cmdTargetActivate:=RegisterIDEMenuCommand(Section,'TargetActivate',lisTargetActivate); + cmdTargetOpen:=RegisterIDEMenuCommand(Section,'TargetOpen',lisTargetOpen); + cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun); + cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties); + + Section:=RegisterIDEMenuSection(Root,'Misc'); + PGEditMenuSectionMisc:=Section; + + cmdTargetCopyFilename:=RegisterIDEMenuCommand(Section,'CopyFilename',lisTargetCopyFilename); + // ToDo: View source (project) + + // ToDo: find in files + // ToDo: find references in files + + // ToDo: D&D order compile targets +end; + +procedure Register; +begin + RegisterStandardProjectGroupMenuItems; + IDEProjectGroupManager:=TIDEProjectGroupManager.Create; + IDEProjectGroupManager.Options.LoadSafe; + + cmdCreateProjectGroup:=RegisterIDEMenuCommand(itmProjectNewSection, + 'NewProjectGroup',lisNewProjectGroup,@IDEProjectGroupManager.DoNewClick); + cmdOpenProjectGroup:=RegisterIDEMenuCommand(itmProjectOpenSection, + 'OpenProjectGroup',lisOpenProjectGroup,@IDEProjectGroupManager.DoOpenClick); + OpenRecentProjectGroupSubMenu:=RegisterIDESubMenu(itmProjectOpenSection, + 'OpenRecentProjectGroup',lisOpenRecentProjectGroup); + cmdSaveProjectGroup:=RegisterIDEMenuCommand(itmProjectSaveSection, + 'SaveProjectGroup',lisSaveProjectGroup,@IDEProjectGroupManager.DoSaveClick); + cmdSaveProjectGroup.Enabled:=false; + cmdSaveProjectGroupAs:=RegisterIDEMenuCommand(itmProjectSaveSection, + 'SaveProjectGroupAs',lisSaveProjectGroupAs,@IDEProjectGroupManager.DoSaveAsClick); + cmdSaveProjectGroupAs.Enabled:=false; + + IDEProjectGroupManager.UpdateRecentProjectGroupMenu; + + ProjectGroupManager:=IDEProjectGroupManager; + SetProjectGroupEditorCallBack; +end; + +finalization + FreeAndNil(IDEProjectGroupManager); + +end. + diff -Nru lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatesettings.lfm lazarus-1.6+dfsg/components/projecttemplates/frmtemplatesettings.lfm --- lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatesettings.lfm 2011-10-03 22:48:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/projecttemplates/frmtemplatesettings.lfm 2015-10-02 11:28:07.000000000 +0000 @@ -1,53 +1,66 @@ object TemplateSettingsForm: TTemplateSettingsForm - Left = 470 - Height = 127 - Top = 175 - Width = 400 + Left = 472 + Height = 103 + Top = 287 + Width = 409 HorzScrollBar.Page = 399 VertScrollBar.Page = 126 + BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'Project templates settings' - ClientHeight = 127 - ClientWidth = 400 + ClientHeight = 103 + ClientWidth = 409 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' + Visible = False object Label1: TLabel - Left = 8 + AnchorSideLeft.Control = Owner + Left = 6 Height = 24 - Top = 16 + Top = 8 Width = 160 AutoSize = False + BorderSpacing.Around = 6 Caption = '&Directory with templates:' FocusControl = DETemplates Layout = tlCenter ParentColor = False end object DETemplates: TDirectoryEdit - Left = 8 - Height = 23 - Top = 41 - Width = 360 + AnchorSideLeft.Control = Owner + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 27 + Top = 32 + Width = 397 ShowHidden = False - ButtonWidth = 23 + ButtonWidth = 40 NumGlyphs = 1 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 MaxLength = 0 TabOrder = 0 end object ButtonPanel1: TButtonPanel Left = 6 - Height = 34 - Top = 87 - Width = 388 + Height = 29 + Top = 68 + Width = 397 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True OKButton.OnClick = OKButtonClick HelpButton.Name = 'HelpButton' - HelpButton.Enabled = False + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CloseButton.Enabled = False CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 1 - ShowButtons = [pbOK, pbCancel] + ShowButtons = [pbOK, pbCancel, pbHelp] ShowBevel = False end end diff -Nru lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatesettings.pas lazarus-1.6+dfsg/components/projecttemplates/frmtemplatesettings.pas --- lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatesettings.pas 2011-05-04 22:02:18.000000000 +0000 +++ lazarus-1.6+dfsg/components/projecttemplates/frmtemplatesettings.pas 2015-10-02 11:28:07.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, - Buttons, EditBtn, ButtonPanel, ProjectTemplates; + Classes, LclIntf, Forms, StdCtrls, EditBtn, ButtonPanel, ProjectTemplates; type @@ -17,13 +16,12 @@ DETemplates: TDirectoryEdit; Label1: TLabel; procedure FormCreate(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); procedure OKButtonClick(Sender: TObject); private - { private declarations } FTemplates : TProjectTemplates; procedure SetTemplates(const AValue: TProjectTemplates); public - { public declarations } Property Templates : TProjectTemplates Read FTemplates Write SetTemplates; end; @@ -48,6 +46,11 @@ ButtonPanel1.CancelButton.Caption:=SbtnCancel; end; +procedure TTemplateSettingsForm.HelpButtonClick(Sender: TObject); +begin + OpenUrl('http://wiki.lazarus.freepascal.org/Project_Templates'); +end; + procedure TTemplateSettingsForm.OKButtonClick(Sender: TObject); begin if (Templates.TemplateDir<>DETemplates.Directory) then diff -Nru lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatevariables.lfm lazarus-1.6+dfsg/components/projecttemplates/frmtemplatevariables.lfm --- lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatevariables.lfm 2010-06-14 17:17:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/projecttemplates/frmtemplatevariables.lfm 2015-05-17 11:41:45.000000000 +0000 @@ -1,20 +1,20 @@ object ProjectVariablesForm: TProjectVariablesForm Left = 505 - Height = 326 + Height = 350 Top = 306 - Width = 573 + Width = 584 Caption = 'New project from template' - ClientHeight = 326 - ClientWidth = 573 + ClientHeight = 350 + ClientWidth = 584 OnCreate = FormCreate OnShow = ProjectVariablesFormShow Position = poScreenCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object Label1: TLabel Left = 8 - Height = 14 + Height = 15 Top = 16 - Width = 109 + Width = 118 Alignment = taRightJustify Caption = '&Name for new project:' Layout = tlCenter @@ -22,9 +22,9 @@ end object Label2: TLabel Left = 8 - Height = 14 + Height = 15 Top = 48 - Width = 95 + Width = 100 Alignment = taRightJustify Caption = 'Create in &directory:' Layout = tlCenter @@ -34,7 +34,7 @@ Left = 8 Height = 58 Top = 80 - Width = 559 + Width = 570 Anchors = [akTop, akLeft, akRight] BevelInner = bvRaised BevelOuter = bvLowered @@ -44,72 +44,64 @@ end object SGVariables: TStringGrid Left = 10 - Height = 138 + Height = 162 Top = 144 - Width = 557 + Width = 568 Anchors = [akTop, akLeft, akRight, akBottom] AutoFillColumns = True ColCount = 3 DefaultColWidth = 120 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goAlwaysShowEditor, goDblClickAutoSize, goSmoothScroll] - TabOrder = 5 + TabOrder = 3 ColWidths = ( 120 - 216 - 217 + 222 + 222 ) end - object BOK: TButton - Left = 485 - Height = 25 - Top = 290 - Width = 75 - Anchors = [akRight, akBottom] - BorderSpacing.InnerBorder = 4 - Caption = '&OK' - Default = True - ModalResult = 1 - OnClick = BOKClick - TabOrder = 1 - end - object BCancel: TButton - Left = 397 - Height = 25 - Top = 290 - Width = 75 - Anchors = [akRight, akBottom] - BorderSpacing.InnerBorder = 4 - Cancel = True - Caption = '&Cancel' - ModalResult = 2 - TabOrder = 2 - end object EProjectName: TEdit AnchorSideLeft.Control = Label1 AnchorSideLeft.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 123 - Height = 21 + Left = 132 + Height = 23 Top = 16 - Width = 444 + Width = 446 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Right = 6 - TabOrder = 3 + TabOrder = 1 end object DEProject: TDirectoryEdit AnchorSideLeft.Control = EProjectName AnchorSideRight.Side = asrBottom - Left = 123 - Height = 21 + Left = 132 + Height = 23 Top = 48 - Width = 420 + Width = 444 ShowHidden = False ButtonWidth = 23 NumGlyphs = 1 Anchors = [akTop, akLeft, akRight] MaxLength = 0 + TabOrder = 2 + end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 34 + Top = 310 + Width = 572 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + OKButton.OnClick = BOKClick + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 4 + ShowButtons = [pbOK, pbCancel] end end diff -Nru lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatevariables.pas lazarus-1.6+dfsg/components/projecttemplates/frmtemplatevariables.pas --- lazarus-1.4.4+dfsg/components/projecttemplates/frmtemplatevariables.pas 2011-05-04 22:02:18.000000000 +0000 +++ lazarus-1.6+dfsg/components/projecttemplates/frmtemplatevariables.pas 2015-07-07 15:35:28.000000000 +0000 @@ -5,16 +5,15 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, - Grids, ProjectTemplates, Buttons, StdCtrls, EditBtn; + Classes, Forms, ExtCtrls, + Grids, ProjectTemplates, StdCtrls, EditBtn, ButtonPanel; type { TProjectVariablesForm } TProjectVariablesForm = class(TForm) - BOK: TButton; - BCancel: TButton; + ButtonPanel1: TButtonPanel; DEProject: TDirectoryEdit; EProjectName: TEdit; Label1: TLabel; @@ -27,13 +26,11 @@ private FSChanged: Boolean; FTemplates: TProjectTemplates; - { private declarations } FVariables : TStrings; function GetProjectDir: String; function GetProjectName: String; procedure SetVariables(const AValue: TStrings); public - { public declarations } Property Templates : TProjectTemplates Read FTemplates Write FTemplates; Property ProjectName : String Read GetProjectName; Property ProjectDir : String Read GetProjectDir; @@ -73,7 +70,6 @@ Var N,V : String; I : Integer; - begin For I:=0 to FVariables.Count-1 do begin @@ -91,8 +87,8 @@ Label1.Caption:= SNameforProject; Label2.Caption:= SCreateinDir; PDescription.Caption:= SThisProject; - BCancel.Caption:= SbtnCancel; - BOK.Caption:= SbtnOK; + ButtonPanel1.CancelButton.Caption:= SbtnCancel; + ButtonPanel1.OKButton.Caption:= SbtnOK; end; procedure TProjectVariablesForm.SetVariables(const AValue: TStrings); diff -Nru lazarus-1.4.4+dfsg/components/projecttemplates/languages/projecttemplates.fr.po lazarus-1.6+dfsg/components/projecttemplates/languages/projecttemplates.fr.po --- lazarus-1.4.4+dfsg/components/projecttemplates/languages/projecttemplates.fr.po 2015-04-20 21:25:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/projecttemplates/languages/projecttemplates.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -10,7 +10,7 @@ "Last-Translator: Yann Mérignac <yann.merignac@laposte.net>\n" "Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language: fr_FR\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: projecttemplates.sbtncancel msgid "Cancel" @@ -30,4 +30,4 @@ #: projecttemplates.serrnosuchtemplate msgid "\"%s\": No such template." -msgstr "\"%s\" : modèle inexistant" +msgstr "\"%s\" : modèle inexistant." diff -Nru lazarus-1.4.4+dfsg/components/projecttemplates/projecttemplates.pp lazarus-1.6+dfsg/components/projecttemplates/projecttemplates.pp --- lazarus-1.4.4+dfsg/components/projecttemplates/projecttemplates.pp 2014-11-12 19:19:54.000000000 +0000 +++ lazarus-1.6+dfsg/components/projecttemplates/projecttemplates.pp 2015-07-07 15:35:28.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LazUTF8Classes, IniFiles; + Classes, SysUtils, FileUtil, LazFileUtils, LazUTF8Classes, IniFiles; type diff -Nru lazarus-1.4.4+dfsg/components/README.txt lazarus-1.6+dfsg/components/README.txt --- lazarus-1.4.4+dfsg/components/README.txt 2014-11-10 12:00:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/README.txt 2015-11-24 11:32:10.000000000 +0000 @@ -6,6 +6,8 @@ aggpas Anti-Grain Geometry - an antialiased graphic library + License: 3-clause BSD license - free for open source and commercial software + with the exception of aggpas/gpc/gpc.pas which has a "not free for commercial use". anchordocking ? @@ -48,9 +50,6 @@ debuggerintf ? -editortoolbar - A customizable toolbar for the source editor. - educationlaz Extends/configures the IDE for education, training, courses @@ -150,6 +149,9 @@ opengl An OpenGL control. +packagetabs + Replacement of source editor tabs/pages with buttons sorted by package and name. + paradox Support for Paradox databases. diff -Nru lazarus-1.4.4+dfsg/components/rx/apputils.pp lazarus-1.6+dfsg/components/rx/apputils.pp --- lazarus-1.4.4+dfsg/components/rx/apputils.pp 2008-08-25 23:08:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/rx/apputils.pp 2015-07-04 23:08:00.000000000 +0000 @@ -15,7 +15,7 @@ interface uses - Classes, Controls, FileUtil, Forms, IniFiles, Grids; + Classes, Controls, Forms, LazFileUtils, LazUTF8, IniFiles, Grids; function GetDefaultSection(Component: TComponent): string; procedure GetDefaultIniData(Control: TControl; var IniFileName, Section: string ); diff -Nru lazarus-1.4.4+dfsg/components/rx/placement.pp lazarus-1.6+dfsg/components/rx/placement.pp --- lazarus-1.4.4+dfsg/components/rx/placement.pp 2008-08-25 23:08:26.000000000 +0000 +++ lazarus-1.6+dfsg/components/rx/placement.pp 2015-07-04 23:08:00.000000000 +0000 @@ -14,7 +14,7 @@ interface -uses Controls, Classes, FileUtil, Forms, IniFiles, Dialogs, RTTIUtils; +uses Controls, Classes, LazUTF8, Forms, IniFiles, Dialogs, RTTIUtils; type diff -Nru lazarus-1.4.4+dfsg/components/rx/rx.lpk lazarus-1.6+dfsg/components/rx/rx.lpk --- lazarus-1.4.4+dfsg/components/rx/rx.lpk 2010-01-20 01:26:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/rx/rx.lpk 2015-02-14 15:18:23.000000000 +0000 @@ -1,16 +1,20 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> - <Package Version="3"> + <Package Version="4"> <Name Value="rx"/> + <Type Value="RunAndDesignTime"/> + <AddToProjectUsesSection Value="True"/> <Author Value="Michael Van Canneyt, AO ROSNO, Master-Bank"/> <CompilerOptions> - <Version Value="8"/> + <Version Value="11"/> <SearchPaths> - <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/> </SearchPaths> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> <Description Value="Delphi VCL Extensions (RX)"/> <Version Major="1"/> @@ -34,7 +38,6 @@ <UnitName Value="StrHolder"/> </Item4> </Files> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="2"> <Item1> <PackageName Value="LCL"/> @@ -45,7 +48,7 @@ </Item2> </RequiredPkgs> <UsageOptions> - <UnitPath Value="$(PkgOutDir)/"/> + <UnitPath Value="$(PkgOutDir)"/> </UsageOptions> <PublishOptions> <Version Value="2"/> diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/spartaapi.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/spartaapi.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/spartaapi.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/spartaapi.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,123 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit SpartaAPI; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls; + +type + IResizer = interface + ['{C3D1A2C0-8AED-493B-9809-1F5C3A54A8A8}'] + procedure TryBoundSizerToDesignedForm(Sender: TObject); + end; + + + ISTADesignTimeUtil = interface + ['{E135BF89-AFA9-402A-9663-4F1536C7717A}'] + function GetRoot: TPersistent; + procedure SetRoot(ARoot: TPersistent); + + property Root: TPersistent read GetRoot write SetRoot; + end; + + // Sparta Tools API + ISTAMainDesignTimeUtil = interface(ISTADesignTimeUtil) + ['{53491607-D285-4050-9064-C764EB8E59B9}'] + function GetShowNonVisualComponents: Boolean; + property ShowNonVisualComponents: Boolean read GetShowNonVisualComponents; + end; + + ISTANonVisualComponentsUtil = interface(ISTADesignTimeUtil) + ['{A181688F-572E-4724-AAF1-575B979A1EC2}'] + function GetShowNonVisualComponents: Boolean; + property ShowNonVisualComponents: Boolean read GetShowNonVisualComponents; + end; + + ISTAExtendedDesignTimeUtil = interface(ISTADesignTimeUtil) + ['{1F484121-2295-4847-BFD9-A77C643EA3A7}'] + // TODO OnShow + // TODO OnHide + // TODO UpdateRoot + // TODO FreeOnStrongHide...? free mem for some utils + procedure RefreshValues; + + procedure SetParent(AWinCtrl: TWinControl); + function GetParent: TWinControl; + procedure SetVisible(AValue: Boolean); + function GetVisible: Boolean; + + property Visible: Boolean read GetVisible write SetVisible; + property Parent: TWinControl read GetParent write SetParent; + end; + + TSTADesignTimeUtil = class + + end; + + TSTADesignTimeUtilClass = class of TSTADesignTimeUtil; + + TEDTU = class + public + class function AvailableForRoot(ARoot: TPersistent): Boolean; virtual; abstract; + class function CreateEDTUForRoot(TheOwner: TComponent; ARoot: TPersistent): ISTAExtendedDesignTimeUtil; virtual; abstract; + class function GlyphName: string; virtual; abstract; + end; + + TEDTUClass = class of TEDTU; + + { TSTADesignTimeUtilsManager } + + TSTADesignTimeUtilsManager = class + protected + function GetEDTUCount: Integer; virtual; + function GetEDTU(Index: Integer): TEDTUClass; virtual; abstract; + public + function CreateMainDTU(AParent, AAddons: TWinControl): ISTAMainDesignTimeUtil; virtual; + procedure RegisterEDTU(AEDTUClass: TEDTUClass); virtual; + procedure UnregisterEDTU(AEDTUClass: TEDTUClass); virtual; + property EDTUCount: Integer read GetEDTUCount; + property EDTU[Index: Integer]: TEDTUClass read GetEDTU; + end; + +var + DTUManager: TSTADesignTimeUtilsManager = nil; + +implementation + +{ TSTADesignTimeUtilsManager } + +function TSTADesignTimeUtilsManager.GetEDTUCount: Integer; +begin + Result := 0; +end; + +function TSTADesignTimeUtilsManager.CreateMainDTU(AParent, AAddons: TWinControl + ): ISTAMainDesignTimeUtil; +begin + Result := nil; +end; + +procedure TSTADesignTimeUtilsManager.RegisterEDTU(AEDTUClass: TEDTUClass); +begin +end; + +procedure TSTADesignTimeUtilsManager.UnregisterEDTU(AEDTUClass: TEDTUClass); +begin +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_designedform.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_designedform.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_designedform.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_designedform.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,147 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_DesignedForm; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Controls, Forms, SrcEditorIntf; + +type + IDesignedRealForm = interface + ['{AAEC32EE-4ABE-4691-A172-FC67B66118DD}'] + // bounds + function GetRealBounds(AIndex: Integer): Integer; + procedure SetRealBounds(AIndex: Integer; AValue: Integer); + + property RealLeft: Integer index 0 read GetRealBounds write SetRealBounds; + property RealTop: Integer index 1 read GetRealBounds write SetRealBounds; + property RealWidth: Integer index 2 read GetRealBounds write SetRealBounds; + property RealHeight: Integer index 3 read GetRealBounds write SetRealBounds; + + // setters + procedure SetRealBorderStyle(AVal: TFormBorderStyle); + procedure SetRealBorderIcons(AVal: TBorderIcons); + procedure SetRealFormStyle(AVal: TFormStyle); + procedure SetRealPopupMode(AVal: TPopupMode); + procedure SetRealPopupParent(AVal: TCustomForm); + + // getters + function GetRealBorderStyle: TFormBorderStyle; + function GetRealBorderIcons: TBorderIcons; + function GetRealFormStyle: TFormStyle; + function GetRealPopupMode: TPopupMode; + function GetRealPopupParent: TCustomForm; + + // properties + property RealBorderStyle: TFormBorderStyle read GetRealBorderStyle write SetRealBorderStyle; + property RealBorderIcons: TBorderIcons read GetRealBorderIcons write SetRealBorderIcons; + property RealFormStyle: TFormStyle read GetRealFormStyle write SetRealFormStyle; + + property RealPopupMode: TPopupMode read GetRealPopupMode write SetRealPopupMode; + property RealPopupParent: TCustomForm read GetRealPopupParent write SetRealPopupParent; + end; + + IDesignedRealFormHelper = interface(IDesignedRealForm) + function GetLogicalClientRect(ALogicalClientRect: TRect): TRect; + end; + + IDesignedForm = interface(IDesignedRealForm) + ['{5D30C0DE-4D51-4FB5-99FC-88900FAE6B66}'] + procedure BeginUpdate; + procedure EndUpdate(AModified: Boolean = False); + + function GetUpdate: Boolean; + property Update: Boolean read GetUpdate; + + procedure ShowWindow; + procedure HideWindow; + + // hacked values + function GetPublishedBounds(AIndex: Integer): Integer; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); + property Left: Integer index 0 read GetPublishedBounds write SetPublishedBounds; + property Top: Integer index 1 read GetPublishedBounds write SetPublishedBounds; + property Width: Integer index 2 read GetPublishedBounds write SetPublishedBounds; + property Height: Integer index 3 read GetPublishedBounds write SetPublishedBounds; + + // design form scroll system + procedure SetHorzScrollPosition(AValue: Integer); + procedure SetVertScrollPosition(AValue: Integer); + function GetHorzScrollPosition: Integer; + function GetVertScrollPosition: Integer; + property HorzScrollPosition: Integer read GetHorzScrollPosition write SetHorzScrollPosition; + property VertScrollPosition: Integer read GetVertScrollPosition write SetVertScrollPosition; + + // on notify change + procedure SetOnChangeHackedBounds(const AValue: TNotifyEvent); + function GetOnChangeHackedBounds: TNotifyEvent; + property OnChangeHackedBounds: TNotifyEvent read GetOnChangeHackedBounds write SetOnChangeHackedBounds; + + // + function GetForm: TCustomForm; + property Form: TCustomForm read GetForm; + + // for last active window + function GetLastActiveSourceWindow: TSourceEditorWindowInterface; + procedure SetLastActiveSourceWindow(AValue: TSourceEditorWindowInterface); + property LastActiveSourceWindow: TSourceEditorWindowInterface read GetLastActiveSourceWindow write SetLastActiveSourceWindow; + end; + + IDesignedFakeControl = interface + ['{31708772-D9FF-42D8-88AD-D27663393177}'] + end; + + IDesignedFakeForm = interface + ['{A887F50D-13A3-4048-AFFD-F07816FDD08A}'] + // other hacked values + procedure SetFormBorderStyle(ANewStyle: TFormBorderStyle); + procedure SetBorderIcons(AVal: TBorderIcons); + procedure SetFormStyle(AValue : TFormStyle); + procedure SetCaption(const AValue: string); + function GetBorderStyle: TFormBorderStyle; + function GetBorderIcons: TBorderIcons; + function GetFormStyle: TFormStyle; + function GetCaption: string; + + property BorderIcons: TBorderIcons read GetBorderIcons write SetBorderIcons; + property BorderStyle: TFormBorderStyle read GetBorderStyle write SetFormBorderStyle; + property FormStyle: TFormStyle read GetFormStyle write SetFormStyle; + property Caption: string read GetCaption write SetCaption; + end; + + IDesignedFormBackground = interface + ['{AC7F6594-1C2D-4424-977B-28053A79CE99}'] + function GetMargin(const AIndex: Integer): Integer; + + property LeftMargin: Integer index 0 read GetMargin; + property TopMargin: Integer index 1 read GetMargin; + property RightMargin: Integer index 2 read GetMargin; + property BottomMargin: Integer index 3 read GetMargin; + + procedure SetParent(AValue: TWinControl); + function GetParent: TWinControl; + property Parent: TWinControl read GetParent write SetParent; + + function GetDesignedForm: IDesignedForm; + property DesignedForm: IDesignedForm read GetDesignedForm; + + procedure RefreshValues; + end; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakecustom.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakecustom.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakecustom.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakecustom.pas 2015-11-20 13:43:15.000000000 +0000 @@ -0,0 +1,1045 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_FakeCustom; + +{$mode delphi}{$H+} + +interface + +uses + Classes, SysUtils, Forms, FormEditingIntf, Controls, TypInfo, LCLIntf, + LCLType, sparta_DesignedForm, Math, +{$IFDEF USE_GENERICS_COLLECTIONS} + Generics.Defaults, +{$ENDIF} + SrcEditorIntf; + +type + { TDesignedFormImpl } + +{$IFDEF USE_GENERICS_COLLECTIONS} + TDesignedFormImpl = class(TSingletonImplementation, IDesignedRealFormHelper, IDesignedForm) +{$ELSE} + TDesignedFormImpl = class(TComponent, IDesignedRealFormHelper, IDesignedForm) +{$ENDIF} + private + FOwner: TForm; + FDesignedRealForm: IDesignedRealForm; + FHackLeft: Integer; + FHackTop: Integer; + FHackWidth: Integer; + FHackHeight: Integer; + + private + FHorzScrollPosition: Integer; + FVertScrollPosition: Integer; + FOnChangeHackedBounds: TNotifyEvent; + FLastActiveSourceWindow: TSourceEditorWindowInterface; + + procedure SetOnChangeHackedBounds(const AValue: TNotifyEvent); + function GetOnChangeHackedBounds: TNotifyEvent; + function PositionDelta: TPoint; + protected + FUpdate: boolean; + protected + function GetRealBounds(AIndex: Integer): Integer; virtual; + procedure SetRealBounds(AIndex: Integer; AValue: Integer); virtual; + function GetPublishedBounds(AIndex: Integer): Integer; virtual; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); virtual; + + procedure SetHorzScrollPosition(AValue: Integer); virtual; + procedure SetVertScrollPosition(AValue: Integer); virtual; + + // own custom form scrool system + function GetHorzScrollPosition: Integer; virtual; + function GetVertScrollPosition: Integer; virtual; + + procedure SetRealBorderStyle(AVal: TFormBorderStyle); virtual; + procedure SetRealBorderIcons(AVal: TBorderIcons); virtual; + procedure SetRealFormStyle(AVal: TFormStyle); virtual; + procedure SetRealPopupMode(AVal: TPopupMode); virtual; + procedure SetRealPopupParent(AVal: TCustomForm); virtual; + + function GetRealBorderStyle: TFormBorderStyle; virtual; + function GetRealBorderIcons: TBorderIcons; virtual; + function GetRealFormStyle: TFormStyle; virtual; + function GetRealPopupMode: TPopupMode; virtual; + function GetRealPopupParent: TCustomForm; virtual; + + function GetLastActiveSourceWindow: TSourceEditorWindowInterface; virtual; + procedure SetLastActiveSourceWindow(AValue: TSourceEditorWindowInterface); virtual; + + function GetForm: TCustomForm; virtual; + function GetUpdate: Boolean; virtual; + protected + procedure DoChangeHackedBounds; virtual; + + function GetLogicalClientRect(ALogicalClientRect: TRect): TRect; virtual; + public + property RealLeft: Integer index 0 read GetRealBounds write SetRealBounds; + property RealTop: Integer index 1 read GetRealBounds write SetRealBounds; + property RealWidth: Integer index 2 read GetRealBounds write SetRealBounds; + property RealHeight: Integer index 3 read GetRealBounds write SetRealBounds; + property RealBorderStyle: TFormBorderStyle read GetRealBorderStyle write SetRealBorderStyle; + property RealBorderIcons: TBorderIcons read GetRealBorderIcons write SetRealBorderIcons; + property RealFormStyle: TFormStyle read GetRealFormStyle write SetRealFormStyle; + + constructor Create(AOwner: TForm); virtual; + + procedure BeginUpdate; virtual; + procedure EndUpdate(AModified: Boolean = False); virtual; + + procedure ShowWindow; virtual; + procedure HideWindow; virtual; + + property Update: Boolean read GetUpdate; + public + property Left: Integer index 0 read GetPublishedBounds write SetPublishedBounds; + property Top: Integer index 1 read GetPublishedBounds write SetPublishedBounds; + property Width: Integer index 2 read GetPublishedBounds write SetPublishedBounds; + property Height: Integer index 3 read GetPublishedBounds write SetPublishedBounds; + public + function QueryInterface(constref IID: TGUID; out Obj): HResult; override; + end; + + { TFakeCustomForm } + + TFakeCustomForm = class(TForm, IDesignedRealForm, IDesignedForm) + private + FDesignedForm: TDesignedFormImpl; + function GetDesignedForm: TDesignedFormImpl; + protected + property DesignedForm: TDesignedFormImpl read GetDesignedForm implements IDesignedForm; + function GetLogicalClientRect: TRect; override; + protected + function GetRealBounds(AIndex: Integer): Integer; virtual; + procedure SetRealBounds(AIndex: Integer; AValue: Integer); virtual; + function GetPublishedBounds(AIndex: Integer): Integer; virtual; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); virtual; + + procedure SetRealBorderStyle(AVal: TFormBorderStyle); virtual; + procedure SetRealBorderIcons(AVal: TBorderIcons); virtual; + procedure SetRealFormStyle(AVal: TFormStyle); virtual; + procedure SetRealPopupMode(AVal: TPopupMode); virtual; + procedure SetRealPopupParent(AVal: TCustomForm); virtual; + + function GetRealBorderStyle: TFormBorderStyle; virtual; + function GetRealBorderIcons: TBorderIcons; virtual; + function GetRealFormStyle: TFormStyle; virtual; + function GetRealPopupMode: TPopupMode; virtual; + function GetRealPopupParent: TCustomForm; virtual; + public + constructor CreateNew(AOwner: TComponent; Num: Integer = 0); override; + destructor Destroy; override; + published + property Left: Integer index 0 read GetPublishedBounds write SetPublishedBounds; + property Top: Integer index 1 read GetPublishedBounds write SetPublishedBounds; + property Width: Integer index 2 read GetPublishedBounds write SetPublishedBounds; + property Height: Integer index 3 read GetPublishedBounds write SetPublishedBounds; + property ClientWidth: Integer index 2 read GetPublishedBounds write SetPublishedBounds; + property ClientHeight: Integer index 3 read GetPublishedBounds write SetPublishedBounds; + end; + + { TDesignedNonControlFormImpl } + + TDesignedNonControlFormImpl = class(TDesignedFormImpl) + protected + function GetPublishedBounds(AIndex: Integer): Integer; override; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); override; + end; + + { TFakeCustomNonControl } + + TFakeCustomNonControl = class(TNonControlProxyDesignerForm, IDesignedRealForm, IDesignedForm) + private + FDesignedForm: TDesignedFormImpl; + function GetDesignedForm: TDesignedFormImpl; + protected + property DesignedForm: TDesignedFormImpl read GetDesignedForm implements IDesignedForm; + function GetLogicalClientRect: TRect; override; + protected + function GetRealBounds(AIndex: Integer): Integer; virtual; + procedure SetRealBounds(AIndex: Integer; AValue: Integer); virtual; + function GetPublishedBounds(AIndex: Integer): Integer; override; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); override; + + procedure SetRealBorderStyle(AVal: TFormBorderStyle); virtual; + procedure SetRealBorderIcons(AVal: TBorderIcons); virtual; + procedure SetRealFormStyle(AVal: TFormStyle); virtual; + procedure SetRealPopupMode(AVal: TPopupMode); virtual; + procedure SetRealPopupParent(AVal: TCustomForm); virtual; + + function GetRealBorderStyle: TFormBorderStyle; virtual; + function GetRealBorderIcons: TBorderIcons; virtual; + function GetRealFormStyle: TFormStyle; virtual; + function GetRealPopupMode: TPopupMode; virtual; + function GetRealPopupParent: TCustomForm; virtual; + protected + procedure SetLookupRoot(AValue: TComponent); override; + procedure SetMediator(AValue: TDesignerMediator); override; + public + constructor Create(AOwner: TComponent; ANonFormDesigner: INonFormDesigner); override; + destructor Destroy; override; + function DockedDesigner: boolean; override; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: integer); override; + end; + + + { TDesignedFrameFormImpl } + + TDesignedFrameFormImpl = class(TDesignedFormImpl) + protected + function GetPublishedBounds(AIndex: Integer): Integer; override; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); override; + end; + + { TFakeCustomFrame } + + TFakeCustomFrame = class(TFrameProxyDesignerForm, IDesignedRealForm, IDesignedForm) + private + FDesignedForm: TDesignedFormImpl; + function GetDesignedForm: TDesignedFormImpl; + protected + property DesignedForm: TDesignedFormImpl read GetDesignedForm implements IDesignedForm; + function GetLogicalClientRect: TRect; override; + protected + function GetRealBounds(AIndex: Integer): Integer; virtual; + procedure SetRealBounds(AIndex: Integer; AValue: Integer); virtual; + function GetPublishedBounds(AIndex: Integer): Integer; override; + procedure SetPublishedBounds(AIndex: Integer; AValue: Integer); override; + + procedure SetRealBorderStyle(AVal: TFormBorderStyle); virtual; + procedure SetRealBorderIcons(AVal: TBorderIcons); virtual; + procedure SetRealFormStyle(AVal: TFormStyle); virtual; + procedure SetRealPopupMode(AVal: TPopupMode); virtual; + procedure SetRealPopupParent(AVal: TCustomForm); virtual; + + function GetRealBorderStyle: TFormBorderStyle; virtual; + function GetRealBorderIcons: TBorderIcons; virtual; + function GetRealFormStyle: TFormStyle; virtual; + function GetRealPopupMode: TPopupMode; virtual; + function GetRealPopupParent: TCustomForm; virtual; + protected + procedure SetLookupRoot(AValue: TComponent); override; + public + constructor Create(AOwner: TComponent; ANonFormDesigner: INonFormDesigner); override; + destructor Destroy; override; + + function DockedDesigner: boolean; override; + end; + +implementation + +uses + sparta_MainIDE; + +type + TFormHack = class(TForm); + +{ TDesignedNonControlFormImpl } + +function TDesignedNonControlFormImpl.GetPublishedBounds(AIndex: Integer + ): Integer; +var + LBounds, LClientRect: TRect; + LMediator: TDesignerMediator; + LLookupRoot: TComponent; +begin + LLookupRoot := (FOwner as TNonFormProxyDesignerForm).LookupRoot; + if LLookupRoot is TDataModule then + with TDataModule(LLookupRoot) do + case AIndex of + 0: Result := DesignOffset.x; + 1: Result := DesignOffset.y; + 2: Result := DesignSize.x; + 3: Result := DesignSize.y; + end + else + begin + LMediator := (FOwner as TNonControlProxyDesignerForm).Mediator; + if (LLookupRoot <> nil) and (LMediator <> nil) then + begin + LMediator.GetFormBounds(LLookupRoot, LBounds, LClientRect); + //WriteLn(Format('get Bounds >>> %d %d %d %d',[LBounds.Left,LBounds.Top,LBounds.Right,LBounds.Bottom])); + //WriteLn(Format('get Client Rect >>> %d %d %d %d',[LClientRect.Left,LClientRect.Top,LClientRect.Right,LClientRect.Bottom])); + case AIndex of + 0: Result := LBounds.Left; + 1: Result := LBounds.Top; + 2: Result := LClientRect.Right; + 3: Result := LClientRect.Bottom; + end; + end + else + Result := 0; //inherited GetPublishedBounds(AIndex); + end +end; + +procedure TDesignedNonControlFormImpl.SetPublishedBounds(AIndex: Integer; + AValue: Integer); +var + LBounds, LClientRect: TRect; + LMediator: TDesignerMediator; + LLookupRoot: TComponent; +begin + LLookupRoot := (FOwner as TNonFormProxyDesignerForm).LookupRoot; + if LLookupRoot is TDataModule then + with TDataModule(LLookupRoot) do + case AIndex of + 0: DesignOffset := Point(AValue, DesignOffset.y); + 1: DesignOffset := Point(DesignOffset.x, AValue); + 2: DesignSize := Point(AValue, DesignSize.y); + 3: DesignSize := Point(DesignSize.x, AValue); + end + else + begin + LMediator := (FOwner as TNonControlProxyDesignerForm).Mediator; + if (LLookupRoot <> nil) and (LMediator <> nil) then + begin + LMediator.GetFormBounds(LLookupRoot, LBounds, LClientRect); + //WriteLn(Format('set Bounds >>> %d %d %d %d',[LBounds.Left,LBounds.Top,LBounds.Right,LBounds.Bottom])); + //WriteLn(Format('set Client Rect >>> %d %d %d %d',[LClientRect.Left,LClientRect.Top,LClientRect.Right,LClientRect.Bottom])); + case AIndex of + 0: LBounds := Rect(AValue, LBounds.Top, AValue + LClientRect.Right, LBounds.Bottom); + 1: LBounds := Rect(LBounds.Left, AValue, LBounds.Right, AValue + LClientRect.Bottom); + 2: LClientRect := Rect(0, 0, AValue, LClientRect.Bottom); + 3: LClientRect := Rect(0, 0, LClientRect.Right, AValue); + end; + if AIndex in [2, 3] then + LBounds := Rect(LBounds.Left, LBounds.Top, LBounds.Left + LClientRect.Right, LBounds.Top + LClientRect.Bottom); + LMediator.SetFormBounds(LLookupRoot,LBounds,LClientRect); + end; + end; + + // refresh for OI + inherited SetPublishedBounds(AIndex, AValue); +end; + +{ TDesignedFrameFormImpl } + +function TDesignedFrameFormImpl.GetPublishedBounds(AIndex: Integer): Integer; +begin + if (FOwner as TNonFormProxyDesignerForm).LookupRoot <> nil then + with (TNonFormProxyDesignerForm(FOwner).LookupRoot as TFrame) do + case AIndex of + 0: Result := Left; + 1: Result := Top; + 2: Result := Width; + 3: Result := Height; + end + else + Result:=inherited GetPublishedBounds(AIndex); +end; + +procedure TDesignedFrameFormImpl.SetPublishedBounds(AIndex: Integer; + AValue: Integer); +begin + if (FOwner as TNonFormProxyDesignerForm).LookupRoot <> nil then + with (TNonFormProxyDesignerForm(FOwner).LookupRoot as TControl) do + case AIndex of + 0: Left := AValue; + 1: Top := AValue; + 2: Width := AValue; + 3: Height := AValue; + end; + + // refresh for OI + inherited SetPublishedBounds(AIndex, AValue); +end; + +{ TFakeCustomFrame } + +function TFakeCustomFrame.GetDesignedForm: TDesignedFormImpl; +begin + if not Assigned(FDesignedForm) then + FDesignedForm := TDesignedFrameFormImpl.Create(Self); + + Result := FDesignedForm; +end; + +function TFakeCustomFrame.GetLogicalClientRect: TRect; +begin + Result := DesignedForm.GetLogicalClientRect(inherited GetLogicalClientRect); +end; + +function TFakeCustomFrame.GetRealBounds(AIndex: Integer): Integer; +begin + Result := inherited GetPublishedBounds(AIndex); +end; + +procedure TFakeCustomFrame.SetRealBounds(AIndex: Integer; AValue: Integer); +begin + inherited SetPublishedBounds(AIndex, AValue); +end; + +function TFakeCustomFrame.GetPublishedBounds(AIndex: Integer): Integer; +begin + Result := DesignedForm.GetPublishedBounds(AIndex); +end; + +procedure TFakeCustomFrame.SetPublishedBounds(AIndex: Integer; AValue: Integer); +begin + DesignedForm.SetPublishedBounds(AIndex, AValue); +end; + +constructor TFakeCustomFrame.Create(AOwner: TComponent; + ANonFormDesigner: INonFormDesigner); +begin + inherited Create(AOwner, ANonFormDesigner); + + //NonFormDesignerOptions := NonFormDesignerOptions - [nfdokSetBounds]; + + Left := inherited Left; + Top := inherited Top; + Width := inherited Width; + Height := inherited Height; +end; + +destructor TFakeCustomFrame.Destroy; +begin + // we need to call "Screen.RemoveForm" to perform + // references back to nil by IDesignedForm to FDesignedForm + inherited Destroy; + if Assigned(FDesignedForm) then + FDesignedForm.Free; +end; + +function TFakeCustomFrame.DockedDesigner: boolean; +begin + Result := True; +end; + +procedure TFakeCustomFrame.SetRealBorderStyle(AVal: TFormBorderStyle); +begin + inherited BorderStyle := AVal; +end; + +procedure TFakeCustomFrame.SetRealBorderIcons(AVal: TBorderIcons); +begin + inherited BorderIcons := AVal; +end; + +procedure TFakeCustomFrame.SetRealFormStyle(AVal: TFormStyle); +begin + inherited FormStyle := AVal; +end; + +procedure TFakeCustomFrame.SetRealPopupMode(AVal: TPopupMode); +begin + inherited PopupMode := AVal; +end; + +procedure TFakeCustomFrame.SetRealPopupParent(AVal: TCustomForm); +begin + inherited PopupParent := AVal; +end; + +function TFakeCustomFrame.GetRealBorderStyle: TFormBorderStyle; +begin + Result := inherited BorderStyle; +end; + +function TFakeCustomFrame.GetRealBorderIcons: TBorderIcons; +begin + Result := inherited BorderIcons; +end; + +function TFakeCustomFrame.GetRealFormStyle: TFormStyle; +begin + Result := inherited FormStyle; +end; + +function TFakeCustomFrame.GetRealPopupMode: TPopupMode; +begin + Result := inherited PopupMode; +end; + +function TFakeCustomFrame.GetRealPopupParent: TCustomForm; +begin + Result := inherited PopupParent; +end; + +procedure TFakeCustomFrame.SetLookupRoot(AValue: TComponent); +begin + inherited SetLookupRoot(AValue); + + if AValue <> nil then + begin + Left := (LookupRoot as TFrame).Left; + Top := (LookupRoot as TFrame).Top; + Width := (LookupRoot as TFrame).Width; + Height := (LookupRoot as TFrame).Height; + + DesignedForm.RealWidth := Width; + DesignedForm.RealHeight := Height; + end + else + TSpartaMainIDE.TryFreeFormData(Self); +end; + +{ TFakeCustomNonControl } + +function TFakeCustomNonControl.GetDesignedForm: TDesignedFormImpl; +begin + if not Assigned(FDesignedForm) then + FDesignedForm := TDesignedNonControlFormImpl.Create(Self); + + Result := FDesignedForm; +end; + +function TFakeCustomNonControl.GetLogicalClientRect: TRect; +begin + Result := DesignedForm.GetLogicalClientRect(inherited GetLogicalClientRect); +end; + +function TFakeCustomNonControl.GetRealBounds(AIndex: Integer): Integer; +begin + Result := inherited GetPublishedBounds(AIndex); +end; + +procedure TFakeCustomNonControl.SetRealBounds(AIndex: Integer; AValue: Integer); +begin + inherited SetPublishedBounds(AIndex, AValue); +end; + +function TFakeCustomNonControl.GetPublishedBounds(AIndex: Integer): Integer; +begin + Result := DesignedForm.GetPublishedBounds(AIndex); +end; + +procedure TFakeCustomNonControl.SetPublishedBounds(AIndex: Integer; AValue: Integer); +begin + DesignedForm.SetPublishedBounds(AIndex, AValue); +end; + +constructor TFakeCustomNonControl.Create(AOwner: TComponent; + ANonFormDesigner: INonFormDesigner); +begin + inherited Create(AOwner, ANonFormDesigner); + + //NonFormDesignerOptions := []; + + Left := inherited Left; + Top := inherited Top; + Width := inherited Width; + Height := inherited Height; +end; + +destructor TFakeCustomNonControl.Destroy; +begin + // we need to call "Screen.RemoveForm" to perform + // references back to nil by IDesignedForm to FDesignedForm + inherited Destroy; + if Assigned(FDesignedForm) then + FDesignedForm.Free; +end; + +function TFakeCustomNonControl.DockedDesigner: boolean; +begin + Result := True; +end; + +procedure TFakeCustomNonControl.SetBounds(ALeft, ATop, AWidth, AHeight: integer + ); +begin + SetDesignerFormBounds(ALeft, ATop, AWidth, AHeight); +end; + +procedure TFakeCustomNonControl.SetRealBorderStyle(AVal: TFormBorderStyle); +begin + inherited BorderStyle := AVal; +end; + +procedure TFakeCustomNonControl.SetRealBorderIcons(AVal: TBorderIcons); +begin + inherited BorderIcons := AVal; +end; + +procedure TFakeCustomNonControl.SetRealFormStyle(AVal: TFormStyle); +begin + inherited FormStyle := AVal; +end; + +procedure TFakeCustomNonControl.SetRealPopupMode(AVal: TPopupMode); +begin + inherited PopupMode := AVal; +end; + +procedure TFakeCustomNonControl.SetRealPopupParent(AVal: TCustomForm); +begin + inherited PopupParent := AVal; +end; + +function TFakeCustomNonControl.GetRealBorderStyle: TFormBorderStyle; +begin + Result := inherited BorderStyle; +end; + +function TFakeCustomNonControl.GetRealBorderIcons: TBorderIcons; +begin + Result := inherited BorderIcons; +end; + +function TFakeCustomNonControl.GetRealFormStyle: TFormStyle; +begin + Result := inherited FormStyle; +end; + +function TFakeCustomNonControl.GetRealPopupMode: TPopupMode; +begin + Result := inherited PopupMode; +end; + +function TFakeCustomNonControl.GetRealPopupParent: TCustomForm; +begin + Result := inherited PopupParent; +end; + +procedure TFakeCustomNonControl.SetLookupRoot(AValue: TComponent); +var + LBounds, LClientRect: TRect; +begin + inherited SetLookupRoot(AValue); + + if AValue <> nil then + begin + if LookupRoot is TDataModule then + begin + Width := (LookupRoot as TDataModule).DesignSize.x; + Height := (LookupRoot as TDataModule).DesignSize.y; + end + else if (LookupRoot <> nil) and (Mediator <> nil) then + begin + Mediator.GetFormBounds(LookupRoot,LBounds,LClientRect); + //WriteLn(Format('Bounds >>> %d %d %d %d',[LBounds.Left,LBounds.Top,LBounds.Right,LBounds.Bottom])); + //WriteLn(Format('Client Rect >>> %d %d %d %d',[LClientRect.Left,LClientRect.Top,LClientRect.Right,LClientRect.Bottom])); + Width := LClientRect.Right; + Height := LClientRect.Bottom; + end else + Width := 1; + + DesignedForm.RealWidth := Width; + DesignedForm.RealHeight := Height; + end + else + TSpartaMainIDE.TryFreeFormData(Self); +end; + +procedure TFakeCustomNonControl.SetMediator(AValue: TDesignerMediator); +var + LBounds, LClientRect: TRect; +begin + inherited SetMediator(AValue); + + if (LookupRoot <> nil) and (Mediator <> nil) then + begin + Mediator.GetFormBounds(LookupRoot,LBounds,LClientRect); + //WriteLn(Format('Bounds >>> %d %d %d %d',[LBounds.Left,LBounds.Top,LBounds.Right,LBounds.Bottom])); + //WriteLn(Format('Client Rect >>> %d %d %d %d',[LClientRect.Left,LClientRect.Top,LClientRect.Right,LClientRect.Bottom])); + Width := LClientRect.Right; + Height := LClientRect.Bottom; + end else + ;//WriteLn('o kurwa eh'); +end; + +{ TFakeCustomForm } + +function TFakeCustomForm.GetDesignedForm: TDesignedFormImpl; +begin + if not Assigned(FDesignedForm) then + FDesignedForm := TDesignedFormImpl.Create(Self); + + Result := FDesignedForm; +end; + +function TFakeCustomForm.GetLogicalClientRect: TRect; +begin + Result := DesignedForm.GetLogicalClientRect(inherited GetLogicalClientRect); +end; + +function TFakeCustomForm.GetRealBounds(AIndex: Integer): Integer; +begin + case AIndex of + 0: Result := inherited Left; + 1: Result := inherited Top; + 2: Result := inherited Width; + 3: Result := inherited Height; + end; +end; + +procedure TFakeCustomForm.SetRealBounds(AIndex: Integer; AValue: Integer); +begin + case AIndex of + 0: inherited Left := AValue; + 1: inherited Top := AValue; + 2: inherited Width := AValue; + 3: inherited Height := AValue; + end; +end; + +function TFakeCustomForm.GetPublishedBounds(AIndex: Integer): Integer; +begin + Result := DesignedForm.GetPublishedBounds(AIndex); +end; + +procedure TFakeCustomForm.SetPublishedBounds(AIndex: Integer; AValue: Integer); +begin + case AIndex of + 0, 1: DesignedForm.SetPublishedBounds(AIndex, AValue); + 2, 3: + begin + DesignedForm.SetPublishedBounds(AIndex, AValue); + SetRealBounds(AIndex, DesignedForm.GetPublishedBounds(AIndex)); + end; + end; +end; + +constructor TFakeCustomForm.CreateNew(AOwner: TComponent; Num: Integer); +begin + inherited CreateNew(AOwner, Num); + + Left := inherited Left; + Top := inherited Top; + Width := inherited Width; + Height := inherited Height; +end; + +destructor TFakeCustomForm.Destroy; +begin + // we need to call "Screen.RemoveForm" to perform + // references back to nil by IDesignedForm to FDesignedForm + inherited Destroy; + if Assigned(FDesignedForm) then + FDesignedForm.Free; +end; + +procedure TFakeCustomForm.SetRealBorderStyle(AVal: TFormBorderStyle); +begin + inherited BorderStyle := AVal; +end; + +procedure TFakeCustomForm.SetRealBorderIcons(AVal: TBorderIcons); +begin + inherited BorderIcons := AVal; +end; + +procedure TFakeCustomForm.SetRealFormStyle(AVal: TFormStyle); +begin + inherited FormStyle := AVal; +end; + +procedure TFakeCustomForm.SetRealPopupMode(AVal: TPopupMode); +begin + inherited PopupMode := AVal; +end; + +procedure TFakeCustomForm.SetRealPopupParent(AVal: TCustomForm); +begin + inherited PopupParent := AVal; +end; + +function TFakeCustomForm.GetRealBorderStyle: TFormBorderStyle; +begin + Result := inherited BorderStyle; +end; + +function TFakeCustomForm.GetRealBorderIcons: TBorderIcons; +begin + Result := inherited BorderIcons; +end; + +function TFakeCustomForm.GetRealFormStyle: TFormStyle; +begin + Result := inherited FormStyle; +end; + +function TFakeCustomForm.GetRealPopupMode: TPopupMode; +begin + Result := inherited PopupMode; +end; + +function TFakeCustomForm.GetRealPopupParent: TCustomForm; +begin + Result := inherited PopupParent; +end; + + +{ TDesignedFormImpl } + +function TDesignedFormImpl.GetPublishedBounds(AIndex: Integer): Integer; +begin + case AIndex of + 0: Result := FHackLeft; + 1: Result := FHackTop; + 2: Result := FHackWidth; + 3: Result := FHackHeight; + end; +end; + +procedure TDesignedFormImpl.SetPublishedBounds(AIndex: Integer; AValue: Integer); +begin + if AIndex = 2 then + if AValue < 135 then + AValue := 135; + + if AIndex in [2, 3] then + if AValue > 4096 then + AValue := 4096; + + case AIndex of + 0: FHackLeft := AValue; + 1: FHackTop := AValue; + 2: FHackWidth := AValue; + 3: FHackHeight := AValue; + end; + DoChangeHackedBounds; +end; + +{----------------------------------------------- + Real values inherited for design form +{----------------------------------------------} + +function TDesignedFormImpl.GetRealBounds(AIndex: Integer): Integer; +begin + Result := FDesignedRealForm.GetRealBounds(AIndex); +end; + +procedure TDesignedFormImpl.SetRealBounds(AIndex: Integer; AValue: Integer); +begin + FDesignedRealForm.SetRealBounds(AIndex, AValue); +end; + +procedure TDesignedFormImpl.SetRealBorderStyle(AVal: TFormBorderStyle); +begin + FDesignedRealForm.SetRealBorderStyle(AVal); +end; + +procedure TDesignedFormImpl.SetRealBorderIcons(AVal: TBorderIcons); +begin + FDesignedRealForm.SetRealBorderIcons(AVal); +end; + +procedure TDesignedFormImpl.SetRealFormStyle(AVal: TFormStyle); +begin + FDesignedRealForm.SetRealFormStyle(AVal); +end; + +procedure TDesignedFormImpl.SetRealPopupMode(AVal: TPopupMode); +begin + FDesignedRealForm.SetRealPopupMode(AVal); +end; + +procedure TDesignedFormImpl.SetRealPopupParent(AVal: TCustomForm); +begin + FDesignedRealForm.SetRealPopupParent(AVal); +end; + +function TDesignedFormImpl.GetRealBorderStyle: TFormBorderStyle; +begin + Result := FDesignedRealForm.GetRealBorderStyle; +end; + +function TDesignedFormImpl.GetRealBorderIcons: TBorderIcons; +begin + Result := FDesignedRealForm.GetRealBorderIcons; +end; + +function TDesignedFormImpl.GetRealFormStyle: TFormStyle; +begin + Result := FDesignedRealForm.GetRealFormStyle; +end; + +function TDesignedFormImpl.GetRealPopupMode: TPopupMode; +begin + Result := FDesignedRealForm.GetRealPopupMode; +end; + +function TDesignedFormImpl.GetRealPopupParent: TCustomForm; +begin + Result := FDesignedRealForm.GetRealPopupParent; +end; + +////// + +function TDesignedFormImpl.GetLastActiveSourceWindow: TSourceEditorWindowInterface; +begin + Result := FLastActiveSourceWindow; +end; + +procedure TDesignedFormImpl.SetLastActiveSourceWindow( + AValue: TSourceEditorWindowInterface); +begin + FLastActiveSourceWindow := AValue; +end; + +function TDesignedFormImpl.GetForm: TCustomForm; +begin + Result := FOwner; +end; + +function TDesignedFormImpl.GetUpdate: Boolean; +begin + Result := FUpdate; +end; + +function TDesignedFormImpl.GetOnChangeHackedBounds: TNotifyEvent; +begin + Result := FOnChangeHackedBounds; +end; + +function TDesignedFormImpl.PositionDelta: TPoint; + + procedure FormBorderDelta; + var + LTestCtrl: TWinControl; + LTestRec, LFormRect: TRect; + LForm: TCustomForm; + begin + LForm := GetForm; + LTestCtrl := TWinControl.Create(Self); + try + LTestCtrl.Parent := LForm; + LTestCtrl.Left := 0; + LTestCtrl.Top := 0; + + GetWindowRect(LForm.Handle, LFormRect); + GetWindowRect(LTestCtrl.Handle, LTestRec); + + Result.x := Result.x + Max(LTestRec.Left - LFormRect.Left, 0); + Result.y := Result.y + Max(LTestRec.Top - LFormRect.Top, 0); + finally + LTestCtrl.free; + end; + end; + + procedure MainMenuDelta; + var + LForm: TCustomForm; + begin + LForm := GetForm; + if LForm.Menu <> nil then + if LForm.Menu.Items.Count>0 then + Result.y := Result.y - LCLIntf.GetSystemMetrics(SM_CYMENU); + end; + +begin + Result := Point(0, 0); + {$IFDEF WINDOWS} + FormBorderDelta; + MainMenuDelta; + {$ENDIF} +end; + +procedure TDesignedFormImpl.SetOnChangeHackedBounds(const AValue: TNotifyEvent); +begin + FOnChangeHackedBounds := AValue; +end; + +/////// positions + +procedure TDesignedFormImpl.SetHorzScrollPosition(AValue: Integer); +begin + RealLeft := -PositionDelta.x - AValue; +end; + +procedure TDesignedFormImpl.SetVertScrollPosition(AValue: Integer); +begin + RealTop := -PositionDelta.y - AValue; +end; + +function TDesignedFormImpl.GetHorzScrollPosition: Integer; +begin + Result := -(RealLeft + PositionDelta.x); +end; + +function TDesignedFormImpl.GetVertScrollPosition: Integer; +begin + Result := -(RealTop + PositionDelta.y); +end; + +procedure TDesignedFormImpl.BeginUpdate; +begin + TFormHack(FOwner).SetDesigning(False, False); + FUpdate := True; +end; + +procedure TDesignedFormImpl.EndUpdate(AModified: Boolean); +begin + TFormHack(FOwner).SetDesigning(True, False); + FUpdate := False; + if AModified and (FormEditingHook <> nil) then + if (FormEditingHook.GetCurrentDesigner = FOwner.Designer) and (FormEditingHook.GetCurrentObjectInspector <> nil) then + FormEditingHook.GetCurrentObjectInspector.RefreshPropertyValues; +end; + +procedure TDesignedFormImpl.ShowWindow; +begin +{$IFDEF USE_POPUP_PARENT_DESIGNER} + LCLIntf.ShowWindow(FOwner.Handle, SW_SHOW); +{$ELSE} + if FOwner.ParentWindow = 0 then + LCLIntf.ShowWindow(FOwner.Handle, SW_SHOW); +{$ENDIF} +end; + +procedure TDesignedFormImpl.HideWindow; +begin +{$IFDEF USE_POPUP_PARENT_DESIGNER} + LCLIntf.ShowWindow(FOwner.Handle, SW_HIDE); +{$ELSE} + if FOwner.ParentWindow = 0 then + LCLIntf.ShowWindow(FOwner.Handle, SW_HIDE); +{$ENDIF} +end; + +function TDesignedFormImpl.QueryInterface(constref IID: TGUID; out Obj + ): HResult; +begin + Result := inherited QueryInterface(IID, Obj); + if Result <> S_OK then + Result := TFormHack(FOwner).QueryInterface(IID, Obj); +end; + +procedure TDesignedFormImpl.DoChangeHackedBounds; +begin + if not FUpdate and Assigned(FOnChangeHackedBounds) then + FOnChangeHackedBounds(FOwner); +end; + +function TDesignedFormImpl.GetLogicalClientRect(ALogicalClientRect: TRect): TRect; +var + i: Integer; +begin + Result:=ALogicalClientRect; + + Result.Right := Width; + if (FOwner.Menu <> nil) and (FOwner.Menu.Items.Count <> 0) then + begin + for i := 0 to FOwner.Menu.Items.Count - 1 do + if FOwner.Menu.Items[i].Visible then + begin + Result.Bottom:= Height - LCLIntf.GetSystemMetrics(SM_CYMENU); + Exit; + end; + end; + + Result.Bottom:= Height; +end; + +constructor TDesignedFormImpl.Create(AOwner: TForm); +begin + FOwner := AOwner; + FDesignedRealForm := FOwner as IDesignedRealForm; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakeform.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakeform.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakeform.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakeform.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,215 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_FakeForm; + +{$mode delphi}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, TypInfo, LCLIntf, + LCLType, sparta_DesignedForm, sparta_FakeCustom; + + +const + BorderStylesAllowAutoScroll = [bsSizeable, bsSizeToolWin]; + +type + { TFakeForm } + + TFakeForm = class(TFakeCustomForm, IDesignedFakeForm) + private + FHackVisible: Boolean; + FHackAutoScroll: Boolean; + FHackBorderStyle: TFormBorderStyle; + FHackBorderIcons: TBorderIcons; + FHackFormStyle: TFormStyle; + + FPopupMode: TPopupMode; + FPopupParent: TCustomForm; + + FHorzScrollBar: TControlScrollBar; + FVertScrollBar: TControlScrollBar; + + FControlForHackedConstraints: TControl; + FHackConstraints: TSizeConstraints; + + function IsAutoScrollStored: Boolean; + procedure SetHorzScrollBar(AValue: TControlScrollBar); + procedure SetVertScrollBar(AValue: TControlScrollBar); + procedure SetPopupMode(const AValue: TPopupMode); + procedure SetPopupParent(const AValue: TCustomForm); + + procedure SetFormBorderStyle(ANewStyle: TFormBorderStyle); + procedure SetBorderIcons(AVal: TBorderIcons); + procedure SetFormStyle(AValue : TFormStyle); + procedure SetCaption(const AValue: string); + function GetBorderStyle: TFormBorderStyle; + function GetBorderIcons: TBorderIcons; + function GetFormStyle: TFormStyle; + function GetCaption: string; + public + property RealPopupMode: TPopupMode read GetRealPopupMode write SetRealPopupMode; + property RealPopupParent: TCustomForm read GetRealPopupParent write SetRealPopupParent; + + constructor CreateNew(AOwner: TComponent; Num: Integer = 0); override; + destructor Destroy; override; + published + property AutoScroll: Boolean read FHackAutoScroll write FHackAutoScroll stored IsAutoScrollStored default False; + property BorderIcons: TBorderIcons read GetBorderIcons write SetBorderIcons default [biSystemMenu, biMinimize, biMaximize]; + property BorderStyle: TFormBorderStyle read GetBorderStyle write SetFormBorderStyle default bsSizeable; + property FormStyle: TFormStyle read GetFormStyle write SetFormStyle default fsNormal; + + property PopupMode: TPopupMode read FPopupMode write SetPopupMode default pmNone; + property PopupParent: TCustomForm read FPopupParent write SetPopupParent; + + property HorzScrollBar: TControlScrollBar read FHorzScrollBar write SetHorzScrollBar; + property VertScrollBar: TControlScrollBar read FVertScrollBar write SetVertScrollBar; + + property Constraints: TSizeConstraints read FHackConstraints write FHackConstraints; + property Caption: string read GetCaption write SetCaption; + property Visible: boolean read FHackVisible write FHackVisible; + end; + +implementation + +{ TFakeForm } + +procedure TFakeForm.SetHorzScrollBar(AValue: TControlScrollBar); +begin + FHorzScrollBar.Assign(AValue); +end; + +function TFakeForm.IsAutoScrollStored: Boolean; +begin + Result := BorderStyle in BorderStylesAllowAutoScroll; +end; + +procedure TFakeForm.SetFormBorderStyle(ANewStyle: TFormBorderStyle); +begin + if FHackBorderStyle = ANewStyle then exit; + + if not (ANewStyle in BorderStylesAllowAutoScroll) then + AutoScroll := False; + + FHackBorderStyle := ANewStyle; +end; + +procedure TFakeForm.SetBorderIcons(AVal: TBorderIcons); +begin + FHackBorderIcons := AVal; +end; + +procedure TFakeForm.SetFormStyle(AValue: TFormStyle); +var + LHackFormStyle: TFormStyle; +Begin + if FHackFormStyle = AValue then + exit; + + LHackFormStyle := FHackFormStyle; + FHackFormStyle := AValue; + + if FHackFormStyle = fsSplash then + BorderStyle := bsNone + else + if LHackFormStyle = fsSplash then + BorderStyle := bsSizeable; +end; + +procedure TFakeForm.SetCaption(const AValue: string); +begin + inherited Caption := AValue; +end; + +procedure TFakeForm.SetPopupMode(const AValue: TPopupMode); +begin + if FPopupMode <> AValue then + begin + FPopupMode := AValue; + if FPopupMode = pmAuto then + PopupParent := nil; + end; +end; + +procedure TFakeForm.SetPopupParent(const AValue: TCustomForm); +begin + if FPopupParent <> AValue then + begin + if FPopupParent <> nil then + FPopupParent.RemoveFreeNotification(Self); + FPopupParent := AValue; + if FPopupParent <> nil then + begin + FPopupParent.FreeNotification(Self); + FPopupMode := pmExplicit; + end; + end; +end; + + +function TFakeForm.GetBorderStyle: TFormBorderStyle; +begin + Result := FHackBorderStyle; +end; + +function TFakeForm.GetBorderIcons: TBorderIcons; +begin + Result := FHackBorderIcons; +end; + +function TFakeForm.GetFormStyle: TFormStyle; +begin + Result := FHackFormStyle; +end; + +function TFakeForm.GetCaption: string; +begin + Result := inherited Caption; +end; + +procedure TFakeForm.SetVertScrollBar(AValue: TControlScrollBar); +begin + FVertScrollBar.Assign(AValue); +end; + +constructor TFakeForm.CreateNew(AOwner: TComponent; Num: Integer); +begin + inherited CreateNew(AOwner, Num); + + FHorzScrollBar := TControlScrollBar.Create(Self, sbHorizontal); + FVertScrollBar := TControlScrollBar.Create(Self, sbVertical); + + BorderIcons := inherited BorderIcons; + BorderStyle := inherited BorderStyle; + FormStyle := inherited FormStyle; + + PopupMode := inherited PopupMode; + + FControlForHackedConstraints := TControl.Create(nil); + FHackConstraints := TSizeConstraints.Create(FControlForHackedConstraints); +end; + +destructor TFakeForm.Destroy; +begin + FHorzScrollBar.Free; + FVertScrollBar.Free; + + FHackConstraints.Free; + FControlForHackedConstraints.Free; + + inherited Destroy; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakeframe.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakeframe.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakeframe.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakeframe.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,29 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_FakeFrame; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, sparta_FakeCustom; + +type + TFakeFrame = class(TFakeCustomFrame) + end; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakenoncontrol.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakenoncontrol.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_fakenoncontrol.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_fakenoncontrol.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,29 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_FakeNonControl; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, sparta_FakeCustom; + +type + TFakeNonControl = class(TFakeCustomNonControl) + end; + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_hashutils.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_hashutils.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_hashutils.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_hashutils.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,30 @@ +unit sparta_HashUtils; + +{$mode delphi}{$H+} + +interface + +uses + Classes, SysUtils; + +{$IFNDEF USE_GENERICS_COLLECTIONS} +type + THash_TObject = record + class function Hash(A: TObject; B: SizeUInt): SizeUInt; static; + end; +{$ENDIF} + +implementation + +{$IFNDEF USE_GENERICS_COLLECTIONS} +class function THash_TObject.Hash(A: TObject; B: SizeUInt): SizeUInt; +begin + if A = nil then + Exit($2A and (b - 1)); + + Result := A.GetHashCode() and (b - 1); +end; +{$ENDIF} + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_mainide.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_mainide.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_mainide.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_mainide.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,1713 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_MainIDE; + +{$mode delphi}{$H+} +{$IFDEF USE_POPUP_PARENT_DESIGNER} +{$IFNDEF WINDOWS} +{$MESSAGE Error 'USE_POPUP_PARENT_DESIGNER mode can be used only on Windows'} +{$ENDIF} +{$ELSE} +{.$DEFINE POPUP_WINDOWS} +{$ENDIF} + +interface + +uses + Classes, SysUtils, SrcEditorIntf, LazIDEIntf, ComCtrls, Controls, Forms, {$IFDEF USE_POPUP_PARENT_DESIGNER}Windows,{$ENDIF} IDEImagesIntf, + Buttons, ExtCtrls, Graphics, IDEWindowIntf, + sparta_DesignedForm, sparta_resizer, PropEdits, PropEditUtils, FormEditingIntf, ComponentEditors, EditBtn, +{$IFDEF USE_GENERICS_COLLECTIONS} + Generics.Collections, Generics.Defaults, +{$ELSE} + ghashmap, sparta_HashUtils, gvector, +{$ENDIF} + TypInfo, LCLIntf, LCLType, LMessages, sparta_FakeForm, sparta_FakeFrame, SpartaAPI; + +const + WM_SETNOFRAME = WM_USER; + WM_BoundToDesignTabSheet = WM_USER + 1; + +type + { TDesignFormData } + +{$IFDEF USE_GENERICS_COLLECTIONS} + TDesignFormData = class(TSingletonImplementation, IDesignedForm) +{$ELSE} + TDesignFormData = class(TComponent, IDesignedForm) +{$ENDIF} + private + FWndMethod: TWndMethod; + +{$IFDEF USE_POPUP_PARENT_DESIGNER} + FWinD: Integer; +{$ENDIF} + + FForm: IDesignedForm; + FLastScreenshot: TBitmap; + FPopupParent: TSourceEditorWindowInterface; + FHiding: boolean; +{$IFDEF USE_GENERICS_COLLECTIONS} + FFormImages: TList<TImage>; +{$ELSE} + FFormImages: TList; +{$ENDIF} + protected + procedure WndMethod(var TheMessage: TLMessage); + + procedure SetPopupParent(AVal: TSourceEditorWindowInterface); + procedure DoAddForm; + public +{$IFDEF USE_GENERICS_COLLECTIONS} + class var AddFormEvents: TList<TNotifyEvent>; +{$ELSE} + class var AddFormEvents: TVector<TNotifyEvent>; +{$ENDIF} + + class constructor Init; + class destructor Finit; + + procedure AddFormImage(AImage: TImage); + procedure RemoveFormImage(AImage: TImage); + procedure RepaintFormImages; + + property Form: IDesignedForm read FForm implements IDesignedForm; + property LastScreenshot: TBitmap read FLastScreenshot; + property PopupParent: TSourceEditorWindowInterface read FPopupParent write SetPopupParent; + + constructor Create(AForm: TCustomForm); + destructor Destroy; override; + end; + + { TModulePageControl } + + TModulePageControl = class(TPageControl) + private + FResizer: TResizer; + FDesignFormData: TDesignFormData; + protected + procedure SetDesignFormData(const AValue: TDesignFormData); virtual; + public + destructor Destroy; override; + + procedure ShowDesignPage; + procedure HideDesignPage; + + property Resizer: TResizer read FResizer; + + property DesignFormData: TDesignFormData read FDesignFormData write SetDesignFormData; + + procedure BoundToDesignTabSheet; + end; + + { TSourceEditorWindowData } + + TSourceEditorWindowData = class + private + FActiveDesignFormData: TDesignFormData; + private + FWndMethod: TWndMethod; + FForm: TSourceEditorWindowInterface; +{$IFDEF USE_GENERICS_COLLECTIONS} + FPageCtrlList: TDictionary<TSourceEditorInterface, TModulePageControl>; +{$ELSE} + FPageCtrlList: THashmap<TSourceEditorInterface, TModulePageControl, THash_TObject>; +{$ENDIF} + FLastTopParent: TControl; + + procedure SetActiveDesignFormData(const AValue: TDesignFormData); + protected + procedure WndMethod(var TheMessage: TLMessage); + constructor Create(AForm: TSourceEditorWindowInterface); + destructor Destroy; override; + procedure OnChangeBounds(Sender: TObject); + procedure AddPageCtrl(ASrcEditor: TSourceEditorInterface; APage: TModulePageControl); + procedure RemovePageCtrl(ASrcEditor: TSourceEditorInterface); + public + property ActiveDesignFormData: TDesignFormData read FActiveDesignFormData write SetActiveDesignFormData; + end; + + { TDTXTabMaster } + + TDTXTabMaster = class(TIDETabMaster) + protected + function GetTabDisplayState: TTabDisplayState; override; + function GetTabDisplayStateEditor(Index: TSourceEditorInterface): TTabDisplayState; override; + public + procedure ToggleFormUnit; override; + procedure JumpToCompilerMessage(ASourceEditor: TSourceEditorInterface); override; + + procedure ShowCode(ASourceEditor: TSourceEditorInterface); override; + procedure ShowDesigner(ASourceEditor: TSourceEditorInterface; AIndex: Integer = 0); override; + procedure ShowForm(AForm: TCustomForm); override; + end; + + { TDTXComponentsMaster } + + TDTXComponentsMaster = class(TIDEComponentsMaster) + function DrawNonVisualComponents(ALookupRoot: TComponent): Boolean; override; + end; + + TFormHack = class(TCustomForm); + + { TSpartaMainIDE } + + TSpartaMainIDE = class(TObject) + public + class procedure TryFreeFormData(Form: TCustomForm); + + class procedure Screen_FormAdded(Sender: TObject; Form: TCustomForm); + class procedure Screen_FormDel(Sender: TObject; Form: TCustomForm); + + class procedure WindowCreate(Sender: TObject); + class procedure WindowDestroy(Sender: TObject); + class procedure WindowShow(Sender: TObject); + class procedure WindowHide(Sender: TObject); + + class procedure EditorActivated(Sender: TObject); + class procedure EditorDestroyed(Sender: TObject); + class procedure EditorCreate(Sender: TObject); + + class procedure TabChange(Sender: TObject); + + class procedure GlobalOnChangeBounds(Sender: TObject); + class procedure GlobalSNOnChangeBounds(Sender: TObject); +{$IFDEF USE_POPUP_PARENT_DESIGNER} + class procedure OnBeforeClose(Sender: TObject); +{$ENDIF} + class procedure OnShowDesignerForm(Sender: TObject; AEditor: TSourceEditorInterface; + AComponentPaletteClassSelected: Boolean); + class procedure OnShowSrcEditor(Sender: TObject); + + class procedure OnShowMethod(const Name: String); + class procedure OnDesignRefreshPropertyValues; + end; + +var + Forms: Classes.TList; // normal forms + dsgForms: Classes.TList; // design forms +{$IFDEF USE_GENERICS_COLLECTIONS} + SourceEditorWindows: TObjectDictionary<TSourceEditorWindowInterface, TSourceEditorWindowData>; +{$ELSE} + SourceEditorWindows: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>; +{$ENDIF} + + LastActiveSourceEditorWindow: TSourceEditorWindowInterface = nil; + LastActiveSourceEditor: TSourceEditorInterface = nil; + + BoundInitialized: Boolean; +{$IFDEF USE_POPUP_PARENT_DESIGNER} + isIdeDestroyed: boolean = False; +{$ENDIF} + +function FindModulePageControl(AForm: TSourceEditorWindowInterface): TModulePageControl; overload; +function FindSourceEditorForDesigner(ADesigner: TIDesigner): TSourceEditorInterface; + +implementation + +// FUTURE USE +// +//function FindDesignForm(ADesigner: TIDesigner): TCustomForm; +//var +// f: TDesignFormData; +//begin +// for Pointer(f) in dsgForms do +// with f as IDesignedForm do +// if Form.Designer = ADesigner then +// Exit(Form); +// +// Result := nil; +//end; +// +//function FindDesignFormData(AForm: TSourceEditorWindowInterface): TDesignFormData; overload; +//begin +// Result := FindDesignFormData( +// FindModulePageControl(AForm) +// ); +//end; +// +//procedure HideAllForms; +//var +// f: TDesignFormData; +//begin +// for Pointer(f) in dsgForms do +// ShowWindow(f.Form.Form.Handle, SW_HIDE); +//end; + +function FindModulePageControl(ASourceEditor: TSourceEditorInterface): TModulePageControl; overload; +var + LParent: TWinControl; +begin + if ASourceEditor = nil then + Exit(nil); + + LParent := ASourceEditor.EditorControl.Parent; + while LParent <> nil do + begin + if LParent is TModulePageControl then + Exit(TModulePageControl(LParent)); + LParent := LParent.Parent; + end; + + Result := nil; +end; + +function FindModulePageControl(AForm: TSourceEditorWindowInterface): TModulePageControl; overload; +begin + Result := FindModulePageControl(AForm.ActiveEditor); +end; + +function AbsoluteFindModulePageControl(ASrcEditor: TSourceEditorInterface): TModulePageControl; +var + LSEWD: TSourceEditorWindowData; +{$IFNDEF USE_GENERICS_COLLECTIONS} + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; +{$ENDIF} +begin + Result := nil; +{$IFDEF USE_GENERICS_COLLECTIONS} + for LSEWD in SourceEditorWindows.Values do + if LSEWD.FPageCtrlList.ContainsKey(ASrcEditor) then + Exit(LSEWD.FPageCtrlList[ASrcEditor]); +{$ELSE} + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + LSEWD := LIterator.Value; + if LSEWD.FPageCtrlList.contains(ASrcEditor) then + Exit(LSEWD.FPageCtrlList[ASrcEditor]); + until not LIterator.next; + finally + LIterator.Free; + end; +{$ENDIF} + +end; + +function FindSourceEditorForDesigner(ADesigner: TIDesigner): TSourceEditorInterface; +var + i: Integer; +begin + for i := 0 to SourceEditorManagerIntf.SourceEditorCount - 1 do + if SourceEditorManagerIntf.SourceEditors[i].GetDesigner(False) = ADesigner then + Exit(SourceEditorManagerIntf.SourceEditors[i]); + Result := nil; +end; + +function FindDesignFormData(ADesigner: TIDesigner): TDesignFormData; overload; +var + p: Pointer; + f: TDesignFormData absolute p; + fi: IDesignedForm = nil; +begin + Result := nil; + + if ADesigner = nil then + Exit; + + for p in dsgForms do + begin + fi := f.FForm; + with fi do + begin + if (Form.Designer = ADesigner) then + begin + Exit(f); + end; + end; + end; +end; + +procedure RefreshAllSourceWindowsModulePageControl; +var + LWindow: TSourceEditorWindowInterface; + LPageCtrl: TModulePageControl; +{$IFNDEF USE_GENERICS_COLLECTIONS} + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; +{$ENDIF} +begin +{$IFDEF USE_GENERICS_COLLECTIONS} + for LWindow in SourceEditorWindows.Keys do + begin + LPageCtrl := FindModulePageControl(LWindow); + + // for example LPageCtrl is nil when we clone module to new window + if (LPageCtrl = nil) or (csDestroying in LWindow.ComponentState) then + Continue; + + if LWindow.ActiveEditor = nil then + LPageCtrl.HideDesignPage + else + if LWindow.ActiveEditor.GetDesigner(True) <> nil then + // TODO some check function: is displayed right form? + LPageCtrl.ShowDesignPage + else + LPageCtrl.HideDesignPage; + end; +{$ELSE} + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + LWindow := LIterator.Key; + + LPageCtrl := FindModulePageControl(LWindow); + + // for example LPageCtrl is nil when we clone module to new window + if (LPageCtrl = nil) or (csDestroying in LWindow.ComponentState) then + Continue; + + if LWindow.ActiveEditor = nil then + LPageCtrl.HideDesignPage + else + if LWindow.ActiveEditor.GetDesigner(True) <> nil then + // TODO some check function: is displayed right form? + LPageCtrl.ShowDesignPage + else + LPageCtrl.HideDesignPage; + until not LIterator.next; + finally + LIterator.Free; + end; +{$ENDIF} +end; + +// sometimes at some level of initialization form can not contain TIDesigner +// (during ide run and when is oppened default project with some TForm1) +function FindDesignFormData(AForm: TCustomForm): TDesignFormData; overload; +var + f: TDesignFormData; +begin + Result := nil; + + if AForm = nil then + Exit; + + for Pointer(f) in dsgForms do + with f as IDesignedForm do + if (Form = AForm) then + Exit(f); +end; + +function FindDesignFormData(AModulePageCtrl: TModulePageControl): TDesignFormData; overload; +var + LSourceWindow: TSourceEditorWindowInterface; + LSourceEditor: TSourceEditorInterface; +{$IFNDEF USE_GENERICS_COLLECTIONS} + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; +{$ENDIF} +begin + Result := nil; + + if AModulePageCtrl = nil then + Exit; + +{$IFDEF USE_GENERICS_COLLECTIONS} + for LSourceWindow in SourceEditorWindows.Keys do + begin + if AModulePageCtrl.Owner = LSourceWindow then + begin + LSourceEditor := LSourceWindow.ActiveEditor; + if LSourceEditor = nil then + Exit; + + Result := FindDesignFormData(LSourceEditor.GetDesigner(True)); + + Exit; + end; + end; +{$ELSE} + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + LSourceWindow := LIterator.Key; + + if AModulePageCtrl.Owner = LSourceWindow then + begin + LSourceEditor := LSourceWindow.ActiveEditor; + if LSourceEditor = nil then + Exit; + + Result := FindDesignFormData(LSourceEditor.GetDesigner(True)); + + Exit; + end; + until not LIterator.next; + finally + LIterator.Free; + end; +{$ENDIF} +end; + +{ TDesignFormData } + +procedure TDesignFormData.WndMethod(var TheMessage: TLMessage); + + // Without this button F12 don't work. (after creating new for editor is inactive) :< + procedure FixF12_ActiveEditor; + var + i: Integer; + begin + SourceEditorManagerIntf.ActiveEditor := nil; + for i := 0 to SourceEditorManagerIntf.UniqueSourceEditorCount - 1 do + if Form.Form.Designer = SourceEditorManagerIntf.UniqueSourceEditors[i].GetDesigner(True) then + begin + SourceEditorManagerIntf.ActiveEditor := SourceEditorManagerIntf.UniqueSourceEditors[i]; + Break; + end; + end; + +begin +{$IFDEF USE_POPUP_PARENT_DESIGNER} + if isIdeDestroyed then + FWinD:=-1; + + if FWinD <> -1 then + if (TheMessage.msg = WM_ERASEBKGND) + and (not IsWindowVisible(TCustomForm(LazarusIDE.GetMainBar).Handle)) then + begin + if Form.LastActiveSourceWindow <> nil then + begin + if Form.LastActiveSourceWindow.ActiveEditor.GetDesigner(True) = Form.Form.Designer then + begin + LPageCtrl := FindModulePageControl(Form.LastActiveSourceWindow.ActiveEditor); + if LPageCtrl.PageIndex = 1 then + begin + LPageCtrl.PageIndex := 0; + end; + end; + end; + end; +{$ENDIF} + + if TheMessage.msg = WM_SETNOFRAME then + begin + ShowWindow(Form.Form.Handle, SW_HIDE); + FHiding := False; + + FixF12_ActiveEditor; + + if Form.Form is TFakeForm then + RepaintFormImages; + end; + + // during docking, form position was in wrong place... we need to delay changing position :) + if TheMessage.msg = WM_BoundToDesignTabSheet then + if Form.LastActiveSourceWindow <> nil then + SourceEditorWindows[Form.LastActiveSourceWindow].OnChangeBounds(nil); + + // we need to correct ActiveEditor to right form + // this code works correctly on Windows platform + // (is necessery for selecting controls after form resizing). + // in Linux platforms below code brings problems with QT (inactive form) + {$IFDEF WINDOWS} + case TheMessage.msg of + LM_LBUTTONDOWN, LM_RBUTTONDOWN, LM_MBUTTONDOWN, LM_XBUTTONDOWN: + if Form.LastActiveSourceWindow <> nil then + begin + SourceEditorManagerIntf.ActiveSourceWindow := Form.LastActiveSourceWindow; + SourceEditorManagerIntf.ActiveEditor := Form.LastActiveSourceWindow.ActiveEditor; + end; + end; + {$ENDIF} + + FWndMethod(TheMessage); +end; + +procedure TDesignFormData.SetPopupParent(AVal: TSourceEditorWindowInterface); +begin + FPopupParent := AVal; + Form.RealPopupParent := FPopupParent; +end; + +class constructor TDesignFormData.Init; +begin +{$IFDEF USE_GENERICS_COLLECTIONS} + AddFormEvents := TList<TNotifyEvent>.Create; +{$ELSE} + AddFormEvents := TVector<TNotifyEvent>.Create; +{$ENDIF} +end; + +class destructor TDesignFormData.Finit; +begin + AddFormEvents.Free; +end; + +procedure TDesignFormData.AddFormImage(AImage: TImage); +begin + if FFormImages <> nil then + FFormImages.Add(AImage); +end; + +procedure TDesignFormData.RemoveFormImage(AImage: TImage); +begin + if FFormImages <> nil then + FFormImages.Remove(AImage); +end; + +procedure TDesignFormData.RepaintFormImages; +var + LImage: TImage; +begin + if FFormImages <> nil then + begin + for LImage in FFormImages do + LImage.OnResize(LImage); + end; +end; + +procedure TDesignFormData.DoAddForm; +var +{$IFDEF USE_GENERICS_COLLECTIONS} + ne: TNotifyEvent; +{$ELSE} + i: Integer; +{$ENDIF} +begin +{$IFDEF USE_GENERICS_COLLECTIONS} + for ne in AddFormEvents do + ne(Self); +{$ELSE} + if AddFormEvents.Size > 0 then // Arithmetic overflow without a test. Size = unsigned. + for i := 0 to AddFormEvents.Size-1 do + AddFormEvents[i](Self); +{$ENDIF} + +end; + +constructor TDesignFormData.Create(AForm: TCustomForm); +begin + FForm := AForm as IDesignedForm; + + FLastScreenshot := TBitmap.Create; + FWndMethod := FForm.Form.WindowProc; + FForm.Form.WindowProc := WndMethod; + + if FForm.Form is TFakeForm then + begin +{$IFDEF USE_GENERICS_COLLECTIONS} + FFormImages := TList<TImage>.Create; +{$ELSE} + FFormImages := TList.Create; +{$ENDIF} + DoAddForm; + end; +end; + +destructor TDesignFormData.Destroy; +var + LImage: TImage; +begin + FForm.Form.WindowProc := FWndMethod; // ! important risky point :P + + if FFormImages <> nil then + begin + for LImage in FFormImages do + LImage.Free; + + FreeAndNil(FFormImages); + end; + FLastScreenshot.Free; + + inherited Destroy; +end; + +{ TModulePageControl } + +procedure TModulePageControl.SetDesignFormData(const AValue: TDesignFormData); +begin + if (AValue = FDesignFormData) then + // for show lfm code, if we want after editing lfm go back to form without any error + // (when we restart IDE some error can be raised ) + if Assigned(FResizer) then + begin + if FResizer.DesignedForm = AValue as IDesignedForm then + Exit; + end + else + Exit; + + FDesignFormData := AValue; + if AValue = nil then + begin + //find + if Assigned(FResizer) then + FResizer.DesignedForm := nil; + end + else + begin + AValue.Form.LastActiveSourceWindow := Owner as TSourceEditorWindowInterface; + if Assigned(FResizer) then + FResizer.DesignedForm := AValue; + BoundToDesignTabSheet; + end; +end; + +destructor TModulePageControl.Destroy; +begin + DesignFormData := nil; + inherited Destroy; +end; + +procedure TModulePageControl.ShowDesignPage; +begin + Pages[1].TabVisible := True; +end; + +procedure TModulePageControl.HideDesignPage; +begin + Pages[1].TabVisible:=False; +end; + +procedure TModulePageControl.BoundToDesignTabSheet; +begin + if (ActivePageIndex <> 1) then + Exit; + + if Assigned(FResizer) then + FResizer.TryBoundSizerToDesignedForm(nil); +end; + +{ TSourceEditorWindowData } + +procedure TSourceEditorWindowData.SetActiveDesignFormData( + const AValue: TDesignFormData); +var + LPageCtrl: TModulePageControl; +begin + if FActiveDesignFormData = AValue then + Exit; + + if FActiveDesignFormData <> nil then + // don't hide now if soon form will be hidden (for example on the IDE start) + if not FActiveDesignFormData.FHiding then + begin + FActiveDesignFormData.FForm.HideWindow; + end; + FActiveDesignFormData := AValue; + + LPageCtrl := FindModulePageControl(FForm); + if (AValue <> nil) then + begin + with AValue as IDesignedForm do + if not AValue.FHiding and (RealBorderStyle <> bsNone) then + begin + BeginUpdate; + //RealBorderIcons := []; + //RealBorderStyle := bsNone; + Form.Show; + EndUpdate; + end; + // important when we want back to tab where was oppened form :< + LazarusIDE.DoShowDesignerFormOfSrc(FForm.ActiveEditor); + end; + + // when is fired DestroyEditor - from this place we can't navigate to pagecontrol by FForm (we need to handle lastactiveeditor) + if LPageCtrl = nil then + Exit; + + LPageCtrl.DesignFormData := AValue; + // for USE_POPUP_PARENT_DESIGNER to eliminate form over code + LPageCtrl.OnChange(LPageCtrl); +end; + +procedure TSourceEditorWindowData.WndMethod(var TheMessage: TLMessage); +begin + FWndMethod(TheMessage); +end; + +constructor TSourceEditorWindowData.Create(AForm: TSourceEditorWindowInterface); +begin + FWndMethod := AForm.WindowProc; + AForm.WindowProc := WndMethod; + FForm := AForm; +{$IFDEF USE_GENERICS_COLLECTIONS} + FPageCtrlList := TDictionary<TSourceEditorInterface, TModulePageControl>.Create; +{$ELSE} + FPageCtrlList := THashmap<TSourceEditorInterface, TModulePageControl, THash_TObject>.Create; +{$ENDIF} +end; + +destructor TSourceEditorWindowData.Destroy; +begin + FForm.WindowProc := FWndMethod; + FPageCtrlList.Free; + inherited Destroy; +end; + +procedure TSourceEditorWindowData.OnChangeBounds(Sender: TObject); +var + LPageCtrl: TModulePageControl; +begin + LPageCtrl := FindModulePageControl(FForm); + if LPageCtrl <> nil then + //LPageCtrl.BoundToDesignTabSheet; +end; + +procedure TSourceEditorWindowData.AddPageCtrl(ASrcEditor: TSourceEditorInterface; APage: TModulePageControl); +begin +{$IFDEF USE_GENERICS_COLLECTIONS} + FPageCtrlList.Add(ASrcEditor, APage); +{$ELSE} + FPageCtrlList.insert(ASrcEditor, APage); +{$ENDIF} + APage.Pages[1].OnChangeBounds:=OnChangeBounds; +end; + +procedure TSourceEditorWindowData.RemovePageCtrl(ASrcEditor: TSourceEditorInterface); +begin +{$IFDEF USE_GENERICS_COLLECTIONS} + FPageCtrlList.Remove(ASrcEditor); +{$ELSE} + FPageCtrlList.Delete(ASrcEditor); +{$ENDIF} +end; + +{ TDTXTabMaster } + +function TDTXTabMaster.GetTabDisplayState: TTabDisplayState; +begin + Result := GetTabDisplayStateEditor(SourceEditorManagerIntf.ActiveEditor); +end; + +function TDTXTabMaster.GetTabDisplayStateEditor(Index: TSourceEditorInterface + ): TTabDisplayState; +var + LPageCtrl: TModulePageControl; +begin + if Index = nil then + Exit(tdsNone); + + LPageCtrl := FindModulePageControl(Index); + if LPageCtrl = nil then + Exit(tdsNone); + + case LPageCtrl.PageIndex of + 0: Exit(tdsCode); + 1: Exit(tdsDesign); + else + Exit(tdsOther); + end; +end; + +procedure TDTXTabMaster.ToggleFormUnit; +begin + case TabDisplayState of + tdsCode: + ShowDesigner(SourceEditorManagerIntf.ActiveEditor); + tdsDesign: + ShowCode(SourceEditorManagerIntf.ActiveEditor); + end; +end; + +procedure TDTXTabMaster.JumpToCompilerMessage( + ASourceEditor: TSourceEditorInterface); +begin + SourceEditorManagerIntf.ActiveEditor := ASourceEditor; + + ShowCode(ASourceEditor); +end; + +procedure TDTXTabMaster.ShowCode(ASourceEditor: TSourceEditorInterface); +begin + if ASourceEditor = nil then + Exit; + + FindModulePageControl(ASourceEditor).PageIndex := 0; +end; + +procedure TDTXTabMaster.ShowDesigner(ASourceEditor: TSourceEditorInterface; AIndex: Integer); +var + LPageCtrl: TModulePageControl; +begin + if ASourceEditor = nil then + Exit; + + LPageCtrl := FindModulePageControl(ASourceEditor); + + if not LPageCtrl.Pages[1].TabVisible then + Exit; + + LPageCtrl.PageIndex := 1; +end; + +procedure TDTXTabMaster.ShowForm(AForm: TCustomForm); +var + LEditor: TSourceEditorInterface; +begin + LEditor := FindSourceEditorForDesigner(AForm.Designer); + + SourceEditorManagerIntf.ActiveEditor := LEditor; + + ShowDesigner(LEditor); +end; + +{ TDTXComponentsMaster } + +function TDTXComponentsMaster.DrawNonVisualComponents(ALookupRoot: TComponent + ): Boolean; +var + LFormData: TDesignFormData; + LPageCtrl: TModulePageControl; +begin + Result := True; + + LFormData := FindDesignFormData(FormEditingHook.GetDesignerForm(ALookupRoot){ALookupRoot as TCustomForm}); + if LFormData = nil then + Exit; + + LPageCtrl := FindModulePageControl(LFormData.Form.LastActiveSourceWindow); + if (LPageCtrl = nil) or (LPageCtrl.Resizer = nil) or (LPageCtrl.Resizer.FMainDTU = nil) then + Exit; + + Result := LPageCtrl.Resizer.FMainDTU.ShowNonVisualComponents; +end; + +{ TSpartaMainIDE } + +class procedure TSpartaMainIDE.Screen_FormAdded(Sender: TObject; Form: TCustomForm); +var + LSourceEditor: TSourceEditorInterface; + LFormData: TDesignFormData; + i: Integer; + LPageCtrl: TModulePageControl; +begin + if IsFormDesign(Form) then + begin + // Form like TForm1 etc... + if (csDesignInstance in Form.ComponentState) or (Form is TNonFormProxyDesignerForm) then + begin + LFormData := TDesignFormData.Create(Form); + LFormData.FHiding:=True; + dsgForms.Add(LFormData); + + LSourceEditor := FindSourceEditorForDesigner(Form.Designer); + + if LSourceEditor <> nil then + begin + LPageCtrl := FindModulePageControl(LSourceEditor); + if LPageCtrl <> nil then + begin + LPageCtrl.ShowDesignPage; + LPageCtrl.DesignFormData := LFormData; + end; + end; + + PostMessage(Form.Handle, WM_SETNOFRAME, 0, 0); + end; + end + else + begin + if not BoundInitialized then + begin + for i := 0 to Screen.FormCount - 1 do + if Screen.Forms[i] = Form then + Continue + else + begin + Screen.Forms[i].AddHandlerOnChangeBounds(GlobalOnChangeBounds); + + // if POPUP_WINDOWS is defined then show all forms on main form + if (LazarusIDE.GetMainBar = Screen.Forms[i]) then + Continue; + +{$IFDEF POPUP_WINDOWS} + Screen.Forms[i].PopupMode := pmExplicit; + Screen.Forms[i].PopupParent := LazarusIDE.GetMainBar as TCustomForm; +{$ENDIF} + end; + BoundInitialized := True; + end; + + if Form is TSourceEditorWindowInterface then + begin + Form.AddHandlerOnChangeBounds(GlobalSNOnChangeBounds); + Form.PopupMode := pmExplicit; + end + else + begin + Form.AddHandlerOnChangeBounds(GlobalOnChangeBounds); +{$IFDEF POPUP_WINDOWS} + Form.PopupMode := pmExplicit; +{$ENDIF} + end; + +{$IFDEF POPUP_WINDOWS} + Form.PopupParent := LazarusIDE.GetMainBar as TCustomForm; +{$ENDIF} + + Forms.Add(Form); + end; +end; + +class procedure TSpartaMainIDE.TryFreeFormData(Form: TCustomForm); +var + LSEWD: TSourceEditorWindowData; + mpc: TModulePageControl; + LFormData: TDesignFormData; +{$IFNDEF USE_GENERICS_COLLECTIONS} + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; + LIterator2: THashmap<TSourceEditorInterface, TModulePageControl, THash_TObject>.TIterator; +{$ENDIF} +begin +{$IFNDEF USE_POPUP_PARENT_DESIGNER} + Form.ParentWindow := 0; + Application.ProcessMessages; // For TFrame - System Error. Code: 1400. Invalid window handle. +{$ENDIF} + + LFormData := FindDesignFormData(Form); + dsgForms.Remove(LFormData); + +{$IFDEF USE_GENERICS_COLLECTIONS} + for LSEWD in SourceEditorWindows.Values do + begin + if LSEWD.ActiveDesignFormData <> nil then + if LSEWD.ActiveDesignFormData.Form.Form = Form then + LSEWD.FActiveDesignFormData := nil; // important - we can't call OnChange tab, because tab don't exist anymore + + for mpc in LSEWD.FPageCtrlList.Values do + if mpc.DesignFormData <> nil then + if mpc.DesignFormData.Form.Form = Form then + mpc.DesignFormData := nil; + end; +{$ELSE} + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + LSEWD := LIterator.Value; + if LSEWD.ActiveDesignFormData <> nil then + if LSEWD.ActiveDesignFormData.Form.Form = Form then + LSEWD.FActiveDesignFormData := nil; // important - we can't call OnChange tab, because tab don't exist anymore + + LIterator2 := LSEWD.FPageCtrlList.Iterator; + if LIterator2 <> nil then + try + repeat + mpc := LIterator2.Value; + if mpc.DesignFormData <> nil then + if mpc.DesignFormData.Form.Form = Form then + mpc.DesignFormData := nil; + until not LIterator2.next; + finally + LIterator2.Free; + end; + until not LIterator.next; + finally + LIterator.Free; + end; +{$ENDIF} + + LFormData.Free; +end; + +class procedure TSpartaMainIDE.Screen_FormDel(Sender: TObject; Form: TCustomForm); +begin + if not IsFormDesign(Form) then + begin + if Form is TSourceEditorWindowInterface then + Form.RemoveHandlerOnChangeBounds(GlobalSNOnChangeBounds) + else + Form.RemoveHandlerOnChangeBounds(GlobalOnChangeBounds) + end + else + TryFreeFormData(Form); +end; + +class procedure TSpartaMainIDE.WindowCreate(Sender: TObject); +var + LSourceEditorWindow: TSourceEditorWindowInterface; +begin + if Sender.ClassNameIs('TSourceNotebook') then + begin + LSourceEditorWindow := Sender as TSourceEditorWindowInterface; +{$IFDEF USE_GENERICS_COLLECTIONS} + SourceEditorWindows.Add(LSourceEditorWindow, TSourceEditorWindowData.Create(LSourceEditorWindow)); +{$ELSE} + SourceEditorWindows.insert(LSourceEditorWindow, TSourceEditorWindowData.Create(LSourceEditorWindow)); +{$ENDIF} + end; +end; + +class procedure TSpartaMainIDE.WindowDestroy(Sender: TObject); +var + p: Pointer; + f: TDesignFormData absolute p; +begin + for p in dsgForms do + if f.FForm.LastActiveSourceWindow = Sender then + f.FForm.LastActiveSourceWindow := nil; +{$IFDEF USE_GENERICS_COLLECTIONS} + SourceEditorWindows.Remove(Sender as TSourceEditorWindowInterface); +{$ELSE} + SourceEditorWindows[Sender as TSourceEditorWindowInterface].Free; + SourceEditorWindows.Delete(Sender as TSourceEditorWindowInterface); +{$ENDIF} + if LastActiveSourceEditorWindow = Sender then + LastActiveSourceEditorWindow := nil; +end; + +class procedure TSpartaMainIDE.WindowShow(Sender: TObject); +var + LWindow: TSourceEditorWindowInterface; + LWindowData: TSourceEditorWindowData; + LDesignedForm: IDesignedForm; +begin + LWindow := Sender as TSourceEditorWindowInterface; + +{$IFDEF USE_GENERICS_COLLECTIONS} + if not SourceEditorWindows.TryGetValue(LWindow, LWindowData) or + (LWindowData.ActiveDesignFormData = nil) + then + Exit; +{$ELSE} + if not SourceEditorWindows.contains(LWindow) then + Exit; + if SourceEditorWindows.GetData(LWindow).ActiveDesignFormData = nil then + Exit; +{$ENDIF} + + LDesignedForm := LWindowData.ActiveDesignFormData as IDesignedForm; + LDesignedForm.ShowWindow; +end; + +class procedure TSpartaMainIDE.WindowHide(Sender: TObject); +var + LWindow: TSourceEditorWindowInterface; + LWindowData: TSourceEditorWindowData; + LDesignedForm: IDesignedForm; +begin + LWindow := Sender as TSourceEditorWindowInterface; + +{$IFDEF USE_GENERICS_COLLECTIONS} + if not SourceEditorWindows.TryGetValue(LWindow, LWindowData) or + (LWindowData.ActiveDesignFormData = nil) + then + Exit; +{$ELSE} + if not SourceEditorWindows.contains(LWindow) then + Exit; + LWindowData := SourceEditorWindows[LWindow]; + if LWindowData.ActiveDesignFormData = nil then + Exit; +{$ENDIF} + + LDesignedForm := LWindowData.ActiveDesignFormData as IDesignedForm; + LDesignedForm.HideWindow; +end; + +class procedure TSpartaMainIDE.EditorActivated(Sender: TObject); +var + LDesigner: TIDesigner; + LSourceEditor: TSourceEditorInterface; +{$IFNDEF USE_GENERICS_COLLECTIONS} + LIterator: THashmap<TSourceEditorInterface, TModulePageControl, THash_TObject>.TIterator; +{$ENDIF} + + function LastSourceEditorNotFound: boolean; + var + i: Integer; + se: TSourceEditorInterface; + begin + if (LastActiveSourceEditorWindow = nil) or (LastActiveSourceEditor = nil) then + Exit(False); + +{$IFDEF USE_GENERICS_COLLECTIONS} + for se in SourceEditorWindows[LastActiveSourceEditorWindow].FPageCtrlList.Keys do + begin + Result := True; + for i := 0 to LastActiveSourceEditorWindow.Count - 1 do + if se = LastActiveSourceEditorWindow.Items[i] then + begin + Result := False; + Break; + end; + + if Result then + begin + LastActiveSourceEditor := se; // after moving code editor into other window, sometimes IDE switch to other tab :\ damn... this line prevent this. + Exit; + end; + end; +{$ELSE} + LIterator := SourceEditorWindows[LastActiveSourceEditorWindow].FPageCtrlList.Iterator; + if LIterator <> nil then + try + repeat + se := LIterator.Key; + Result := True; + for i := 0 to LastActiveSourceEditorWindow.Count - 1 do + if se = LastActiveSourceEditorWindow.Items[i] then + begin + Result := False; + Break; + end; + if Result then + begin + LastActiveSourceEditor := se; // after moving code editor into other window, sometimes IDE switch to other tab :\ damn... this line prevent this. + Exit; + end; + until not LIterator.next; + finally + LIterator.Free; + end; +{$ENDIF} + + Result := False; + end; + +var + LPageCtrl: TModulePageControl; + LSourceEditorWindow: TSourceEditorWindowInterface; + LDesignFormData: TDesignFormData; +begin + if Sender is TSourceEditorInterface then + begin + LSourceEditor := TSourceEditorInterface(Sender); + // if we create directly new project then Activate is called without EditorCreate... + if not (LSourceEditor.EditorControl.Parent.Parent is TModulePageControl) then + begin + // possible is situation when we moved tab into other window + // then was not called event EditorDestroy - that generates problems with switching tabs + // or when we moving tab to first window ( then is raising : duplicates not allowed in dictionary). + if LastSourceEditorNotFound then + EditorDestroyed(nil); + EditorCreate(Sender); + end; + + LDesigner := LSourceEditor.GetDesigner(True); + + // should be performed during EditorCreate (parent of parent is module page ctrl) + LPageCtrl := TModulePageControl(LSourceEditor.EditorControl.Parent.Parent); + if LPageCtrl = nil then + Exit; + + if LDesigner = nil then + LPageCtrl.HideDesignPage + else + begin + if LPageCtrl.Resizer = nil then + LPageCtrl.FResizer := TResizer.Create(LPageCtrl.Pages[1]); + + LPageCtrl.ShowDesignPage; + end; + + LSourceEditorWindow := TSourceEditorWindowInterface(LPageCtrl.Owner); + + LastActiveSourceEditorWindow := LSourceEditorWindow; + LastActiveSourceEditor := LSourceEditor; + + LDesignFormData := FindDesignFormData(LPageCtrl); + + // when we switch tab, design form should be hidden + if (LDesigner = nil) or (LDesignFormData = nil) then + SourceEditorWindows[LSourceEditorWindow].ActiveDesignFormData := nil + else + begin + // during form loading for example from package, ActiveDesignFormData assignment, + // blocks the message queue responsible for hiding form + // We can't check it because there are some forms where designing is not handled yet. + // (for that kind of forms is returned empty designformdata) + // maybe we can fix this in future + if not LDesignFormData.FHiding then + // Prevent unexpected events (when is deactivated some control outside designed form) + if (LDesignFormData.Form.LastActiveSourceWindow = LSourceEditorWindow) + // important!!! for many error - switching between editors... + and (LPageCtrl.PageIndex = 1) then + SourceEditorWindows[LSourceEditorWindow].ActiveDesignFormData := LDesignFormData + else + SourceEditorWindows[LSourceEditorWindow].ActiveDesignFormData := nil; + end; + + case LPageCtrl.PageIndex of + 0: if LDesignFormData <> nil then {$IFNDEF USE_POPUP_PARENT_DESIGNER}LDesignFormData.Form.HideWindow{$ENDIF}; + 1: + begin + LazarusIDE.DoShowDesignerFormOfSrc(LSourceEditorWindow.ActiveEditor); + + // for lfm edition... + with LDesignFormData as IDesignedForm do + if not LDesignFormData.FHiding and (RealBorderStyle <> bsNone) then + begin + BeginUpdate; + //RealBorderIcons := []; + //RealBorderStyle := bsNone; + Form.Show; + EndUpdate; + LPageCtrl.BoundToDesignTabSheet; + + PostMessage(Form.Handle, WM_BoundToDesignTabSheet, 0, 0); + end; + end; + end; + end + else + begin + RefreshAllSourceWindowsModulePageControl; + end; +end; + +class procedure TSpartaMainIDE.EditorDestroyed(Sender: TObject); +var + LSourceEditor: TSourceEditorInterface; + LPageCtrl: TModulePageControl; + LSourceEditorWindow: TSourceEditorWindowInterface; + LFormData: TDesignFormData; +begin + // sender is here as special parameter, because is possible situation where is moved editor + // to another window and was not triggered EditorDestroy - for more info goto editoractivate + if Sender = nil then + LSourceEditor := LastActiveSourceEditor + else + LSourceEditor := TSourceEditorInterface(Sender); + + // parent don't exist anymore and we must search in each window... + if Sender = nil then // but not for Sender = nil :P + LPageCtrl := SourceEditorWindows[LastActiveSourceEditorWindow].FPageCtrlList[LastActiveSourceEditor] + else + LPageCtrl := AbsoluteFindModulePageControl(LSourceEditor); + + if LPageCtrl = nil then + Exit; + + LFormData := FindDesignFormData(LSourceEditor.GetDesigner(False)); + + // goto first comment (forced destroy) + if Sender = nil then + LSourceEditorWindow := LastActiveSourceEditorWindow + else + LSourceEditorWindow := TSourceEditorWindowInterface(LPageCtrl.Owner); + + if LFormData <> nil then + begin + SourceEditorWindows[LSourceEditorWindow].ActiveDesignFormData := nil; + LFormData.Form.LastActiveSourceWindow := nil; + end; + + SourceEditorWindows[LSourceEditorWindow].RemovePageCtrl(LSourceEditor); + LPageCtrl.Free; + + if LastActiveSourceEditor = LSourceEditor then + LastActiveSourceEditor := nil; +end; + +class procedure TSpartaMainIDE.EditorCreate(Sender: TObject); + +var + LSourceEditor: TSourceEditorInterface; + + function CreateModulePageControl: TModulePageControl; + var + LNewTabSheet: TTabSheet; + LSourceEditorWindow: TSourceEditorWindowInterface; + LParent: TWinControl; + begin + Result := TModulePageControl.Create(LSourceEditor.EditorControl.Owner); + + Result.TabPosition := tpBottom; + Result.Align:=alClient; + LParent := LSourceEditor.EditorControl.Parent; + + LNewTabSheet := TTabSheet.Create(Result); + LNewTabSheet.PageControl := Result; + LNewTabSheet.Caption := 'Code'; + LSourceEditor.EditorControl.Parent := LNewTabSheet; // ! SynEdit :) + + LNewTabSheet := TTabSheet.Create(Result); + LNewTabSheet.PageControl := Result; + LNewTabSheet.Caption := 'Designer'; + + Result.OnChange := TabChange; + + Result.Parent := LParent; + + LSourceEditorWindow := TSourceEditorWindowInterface(Result.Owner); + SourceEditorWindows[LSourceEditorWindow].AddPageCtrl(LSourceEditor, Result) + end; + +begin + LSourceEditor := Sender as TSourceEditorInterface; + if not (LSourceEditor.EditorControl.Parent.Parent is TModulePageControl) then + CreateModulePageControl; +end; + +class procedure TSpartaMainIDE.TabChange(Sender: TObject); +var + LActiveSourceWindow: TSourceEditorWindowInterface; + w: TSourceEditorWindowInterface; +{$IFDEF USE_GENERICS_COLLECTIONS} + p: TPair<TSourceEditorInterface, TModulePageControl>; +{$ELSE} + p: THashmap<TSourceEditorInterface, TModulePageControl, THash_TObject>.TPair; + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; + LIterator2: THashmap<TSourceEditorInterface, TModulePageControl, THash_TObject>.TIterator; +{$ENDIF} + LDesigner: TIDesigner; + LFormData: TDesignFormData; + LPageCtrl: TModulePageControl; + LSourceWndData: TSourceEditorWindowData; +begin + // activate proper source editor window when user is clicking on page. + // (at clicking time can be active other source window) + LActiveSourceWindow := TComponent(Sender).Owner as TSourceEditorWindowInterface; + if LActiveSourceWindow <> SourceEditorManagerIntf.ActiveSourceWindow then + SourceEditorManagerIntf.ActiveSourceWindow := LActiveSourceWindow; + + LPageCtrl := TModulePageControl(Sender); + // in case there is no module and is visible page other than code page. + if (LActiveSourceWindow.ActiveEditor <> nil) and (LPageCtrl <> nil) then + begin + LDesigner := LActiveSourceWindow.ActiveEditor.GetDesigner(True); + LFormData := FindDesignFormData(LDesigner); + +{$IFDEF USE_GENERICS_COLLECTIONS} + if (LFormData <> nil) and SourceEditorWindows.TryGetValue(LActiveSourceWindow, LSourceWndData) then + begin + case LPageCtrl.ActivePageIndex of + 0: + begin + LSourceWndData.ActiveDesignFormData := nil; + end; + 1: + begin + // deactivate design tab in other page control :) + for w in SourceEditorWindows.Keys do + if w = LActiveSourceWindow then + Continue + else + for p in SourceEditorWindows[w].FPageCtrlList do + if (p.Value.DesignFormData = LFormData) and (p.Value <> Sender) then + begin + IDETabMaster.ShowCode(p.Key); + end; + + LSourceWndData.ActiveDesignFormData := LFormData; + // to handle windows with different size + LPageCtrl.BoundToDesignTabSheet; + end; + end; + end; +{$ELSE} + if (LFormData <> nil) and SourceEditorWindows.contains(LActiveSourceWindow) then + begin + LSourceWndData := SourceEditorWindows[LActiveSourceWindow]; + case LPageCtrl.ActivePageIndex of + 0: + begin + LSourceWndData.ActiveDesignFormData := nil; + end; + 1: + begin + // deactivate design tab in other page control :) + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + w := LIterator.Key; + if w = LActiveSourceWindow then + Continue + else + begin + LIterator2 := SourceEditorWindows[w].FPageCtrlList.Iterator; + if LIterator2 <> nil then + try + repeat + p := LIterator2.Data; + if (p.Value.DesignFormData = LFormData) and (p.Value <> Sender) then + IDETabMaster.ShowCode(p.Key); + until not LIterator2.next; + finally + LIterator2.Free; + end; + end; + until not LIterator.next; + finally + LIterator.Free; + end; + + LSourceWndData.ActiveDesignFormData := LFormData; + // to handle windows with different size + LPageCtrl.BoundToDesignTabSheet; + end; + end; + end; +{$ENDIF} + end; +end; + +class procedure TSpartaMainIDE.GlobalOnChangeBounds(Sender: TObject); +var + sewd: TSourceEditorWindowData; +{$IFNDEF USE_GENERICS_COLLECTIONS} + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; +{$ENDIF} +begin +{$IFDEF USE_GENERICS_COLLECTIONS} + for sewd in SourceEditorWindows.Values do + begin + sewd.OnChangeBounds(Sender); + end; +{$ELSE} + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + sewd := LIterator.Value; + sewd.OnChangeBounds(Sender) + until not LIterator.next; + finally + LIterator.Free; + end; +{$ENDIF} +end; + +class procedure TSpartaMainIDE.GlobalSNOnChangeBounds(Sender: TObject); +var + LWindow: TSourceEditorWindowInterface; + LWindowData: TSourceEditorWindowData; + LDesignForm: TDesignFormData; +begin + // Check parent. Maybe is different? If yes then window changed state (docked/undocked) and we need to perform few actions + LWindow := Sender as TSourceEditorWindowInterface; + + // dock/undock event :) +{$IFDEF USE_GENERICS_COLLECTIONS} + if not SourceEditorWindows.TryGetValue(LWindow, LWindowData) then + Exit; +{$ELSE} + if not SourceEditorWindows.contains(LWindow) then + Exit; + LWindowData := SourceEditorWindows[LWindow]; +{$ENDIF} + if LWindowData.FLastTopParent <> LWindow.GetTopParent then + begin + LWindowData.FLastTopParent := LWindow.GetTopParent; + // refresh for popupparent + LDesignForm := LWindowData.ActiveDesignFormData; + LWindowData.ActiveDesignFormData := nil; + LWindowData.ActiveDesignFormData := LDesignForm; + // ... + //PostMessage(LWindow.Handle, WM_BoundToDesignTabSheet, 0, 0); + if LDesignForm <> nil then + begin +{$IFNDEF USE_POPUP_PARENT_DESIGNER} + LDesignForm.Form.Form.ParentWindow := FindModulePageControl(LWindow).Resizer.FResizerFrame.pClient.Handle; +{$ENDIF} + PostMessage(LDesignForm.Form.Form.Handle, WM_BoundToDesignTabSheet, 0, 0); + end; + end; + + LWindowData.OnChangeBounds(Sender); +end; + +{$IFDEF USE_POPUP_PARENT_DESIGNER} +class procedure TDesignerIDEBoss.OnBeforeClose(Sender: TObject); +begin + isIdeDestroyed := True; +end; +{$ENDIF} + +class procedure TSpartaMainIDE.OnShowDesignerForm(Sender: TObject; AEditor: TSourceEditorInterface; + AComponentPaletteClassSelected: Boolean); +var + LForm: TDesignFormData; + LPageCtrl, p: TModulePageControl; + w: TSourceEditorWindowInterface; + e: TSourceEditorInterface; +{$IFNDEF USE_GENERICS_COLLECTIONS} + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; +{$ENDIF} +begin + LForm := FindDesignFormData(TCustomForm(Sender).Designer); + if LForm = nil then + Exit; + + if LForm.FHiding then + Exit; + + LPageCtrl := FindModulePageControl(SourceEditorManagerIntf.ActiveEditor); + + if LPageCtrl = nil then + Exit; // it should not happen but who knows :P Lazarus IDE is sometimes mischievous + + if AComponentPaletteClassSelected then + begin + // if form is already opened do nothing, if not then show form for active module. +{$IFDEF USE_GENERICS_COLLECTIONS} + for w in SourceEditorWindows.Keys do + begin + e := w.ActiveEditor; + if (e = nil) or (e.GetDesigner(True) <> LForm.Form.Form.Designer) then + Continue; + + p := FindModulePageControl(e); + if p.PageIndex = 1 then + Exit; + end; +{$ELSE} + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + w := LIterator.Key; + e := w.ActiveEditor; + if (e = nil) or (e.GetDesigner(True) <> LForm.Form.Form.Designer) then + Continue; + + p := FindModulePageControl(e); + if p.PageIndex = 1 then + Exit; + until not LIterator.next; + finally + LIterator.Free; + end; +{$ENDIF} + end; + + IDETabMaster.ShowDesigner(SourceEditorManagerIntf.ActiveEditor); +end; + +class procedure TSpartaMainIDE.OnShowSrcEditor(Sender: TObject); +begin + IDETabMaster.ShowCode(Sender as TSourceEditorInterface); +end; + +class procedure TSpartaMainIDE.OnShowMethod(const Name: String); +var + LForm: TDesignFormData; + LSecondEditor: TSourceEditorInterface = nil; + i: Integer; + LSourceWindow: TSourceEditorWindowInterface; +begin + LForm := FindDesignFormData(FormEditingHook.GetCurrentDesigner); + if LForm = nil then + Exit; + + for i := 0 to SourceEditorManagerIntf.SourceWindowCount - 1 do + begin + LSourceWindow := SourceEditorManagerIntf.SourceWindows[i]; + if LForm.Form.LastActiveSourceWindow = LSourceWindow then + Continue; + + if LSourceWindow.ActiveEditor <> nil then + if LSourceWindow.ActiveEditor.GetDesigner(True) = LForm.Form.Form.Designer then + begin + LSecondEditor := LSourceWindow.ActiveEditor; + Break; + end; + end; + + if LSecondEditor = nil then + begin + if LForm.Form.LastActiveSourceWindow <> nil then + begin + IDETabMaster.ShowCode(LForm.Form.LastActiveSourceWindow.ActiveEditor); + end; + end + else + begin + IDETabMaster.ShowCode(LSecondEditor); + end; + + if LSecondEditor <> nil then + begin + LazarusIDE.DoShowMethod(LSecondEditor, Name); + end; +end; + +class procedure TSpartaMainIDE.OnDesignRefreshPropertyValues; +var + LForm: TCustomForm; + LSourceWindow: TSourceEditorWindowInterface; + LFormData: TDesignFormData; + LPageCtrl: TModulePageControl; + + function RootIsSelected: Boolean; + var + LSelection: TPersistentSelectionList; + i: integer; + begin + Result := False; + LSelection := TPersistentSelectionList.Create; + GlobalDesignHook.GetSelection(LSelection); + for i := 0 to LSelection.Count - 1 do + if LSelection.Items[i] = GlobalDesignHook.LookupRoot then + begin + Result := True; + Break; + end; + LSelection.Free; + end; + +begin + if (GlobalDesignHook.LookupRoot is TCustomFrame) then + begin + if not RootIsSelected then + Exit; + + LForm := FormEditingHook.GetDesignerForm(GlobalDesignHook.LookupRoot); + LFormData := FindDesignFormData(LForm); + LSourceWindow := (LFormData as IDesignedForm).LastActiveSourceWindow; + LPageCtrl := FindModulePageControl(LSourceWindow); + TFakeFrame(LForm).SetBounds(LForm.Left-1,LForm.Top-1,TFakeFrame(LForm).Width,TFakeFrame(LForm).Height); + //LPageCtrl.BoundToDesignTabSheet; + end + else + if (GlobalDesignHook.LookupRoot is TCustomForm) then + begin + if not RootIsSelected then + Exit; + + LForm := TCustomForm(GlobalDesignHook.LookupRoot); + LFormData := FindDesignFormData(LForm); + LFormData.RepaintFormImages; + end; +end; + +{$IFNDEF USE_GENERICS_COLLECTIONS} +class procedure FreeSourceEditorWindowsValues; +var + LIterator: THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.TIterator; +begin + LIterator := SourceEditorWindows.Iterator; + if LIterator <> nil then + try + repeat + LIterator.Value.Free; + until not LIterator.next; + finally + LIterator.Free; + end; +end; +{$ENDIF} + +initialization + dsgForms := Classes.TList.Create; +{$IFDEF USE_GENERICS_COLLECTIONS} + SourceEditorWindows := TObjectDictionary<TSourceEditorWindowInterface, TSourceEditorWindowData>.Create([doOwnsValues]); +{$ELSE} + SourceEditorWindows := THashmap<TSourceEditorWindowInterface, TSourceEditorWindowData, THash_TObject>.Create(); +{$ENDIF} + Forms := Classes.TList.Create; +finalization + Forms.Free; +{$IFNDEF USE_GENERICS_COLLECTIONS} + FreeSourceEditorWindowsValues; +{$ENDIF} + SourceEditorWindows.Free; + FreeAndNil(dsgForms); +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_reg_dockedformeditor.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_reg_dockedformeditor.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_reg_dockedformeditor.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_reg_dockedformeditor.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,65 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_reg_DockedFormEditor; + +{$mode delphi}{$H+} + +interface + +uses + Classes, SysUtils, SrcEditorIntf, LazIDEIntf, ComCtrls, Controls, Forms, IDEImagesIntf, + Buttons, ExtCtrls, Graphics, IDEWindowIntf, sparta_MainIDE, + PropEdits, PropEditUtils, FormEditingIntf, ComponentEditors, EditBtn, TypInfo, + LCLIntf, LCLType, sparta_FakeForm, sparta_FakeNonControl, sparta_FakeFrame; + +procedure Register; + +implementation + +procedure Register; +begin + FormEditingHook.StandardDesignerBaseClasses[DesignerBaseClassId_TForm] := TFakeForm; + FormEditingHook.NonFormProxyDesignerForm[NonControlProxyDesignerFormId] := TFakeNonControl; + FormEditingHook.NonFormProxyDesignerForm[FrameProxyDesignerFormId] := TFakeFrame; + + Screen.AddHandlerFormAdded(TSpartaMainIDE.Screen_FormAdded); + Screen.AddHandlerRemoveForm(TSpartaMainIDE.Screen_FormDel); +{$IFDEF USE_POPUP_PARENT_DESIGNER} + TCustomForm(LazarusIDE.GetMainBar).AddHandlerOnBeforeDestruction(spartaIDE.OnBeforeClose); +{$ENDIF} + SourceEditorManagerIntf.RegisterChangeEvent(semWindowCreate, TSpartaMainIDE.WindowCreate); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowDestroy, TSpartaMainIDE.WindowDestroy); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowShow, TSpartaMainIDE.WindowShow); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowHide, TSpartaMainIDE.WindowHide); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorActivate, TSpartaMainIDE.EditorActivated); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorDestroy, TSpartaMainIDE.EditorDestroyed); + SourceEditorManagerIntf.RegisterChangeEvent(semEditorCreate, TSpartaMainIDE.EditorCreate); + + LazarusIDE.AddHandlerOnShowDesignerFormOfSource(TSpartaMainIDE.OnShowDesignerForm); + LazarusIDE.AddHandlerOnShowSourceOfActiveDesignerForm(TSpartaMainIDE.OnShowSrcEditor); + + GlobalDesignHook.AddHandlerShowMethod(TSpartaMainIDE.OnShowMethod); + GlobalDesignHook.AddHandlerRefreshPropertyValues(TSpartaMainIDE.OnDesignRefreshPropertyValues); + + IDETabMaster := TDTXTabMaster.Create; + IDEComponentsMaster := TDTXComponentsMaster.Create; +end; + +finalization + Screen.RemoveHandlerFormAdded(TSpartaMainIDE.Screen_FormAdded); + Screen.RemoveHandlerRemoveForm(TSpartaMainIDE.Screen_FormDel); + + IDETabMaster.Free; + IDEComponentsMaster.Free; +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.lfm lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.lfm --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.lfm 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,188 @@ +object ResizerFrame: TResizerFrame + Left = 0 + Height = 460 + Top = 0 + Width = 320 + ClientHeight = 460 + ClientWidth = 320 + Color = clDefault + ParentColor = False + TabOrder = 0 + object pR: TPanel + AnchorSideTop.Control = Owner + Cursor = crSizeWE + Left = 295 + Height = 443 + Top = 0 + Width = 8 + Anchors = [] + BevelOuter = bvNone + ClientHeight = 443 + ClientWidth = 8 + Color = clNone + ParentColor = False + TabOrder = 0 + object pMarginR: TPanel + AnchorSideLeft.Control = pR + AnchorSideTop.Control = pR + AnchorSideBottom.Control = pR + AnchorSideBottom.Side = asrBottom + Left = 0 + Height = 429 + Top = 7 + Width = 1 + Anchors = [akTop, akLeft, akBottom] + BorderSpacing.Top = 7 + BorderSpacing.Bottom = 7 + BevelOuter = bvNone + Color = clWhite + ParentColor = False + TabOrder = 0 + end + end + object pB: TPanel + AnchorSideLeft.Control = Owner + Cursor = crSizeNS + Left = 0 + Height = 8 + Top = 435 + Width = 303 + Anchors = [akLeft, akRight] + BevelOuter = bvNone + ClientHeight = 8 + ClientWidth = 303 + Color = clNone + ParentColor = False + TabOrder = 1 + object pMarginB: TPanel + AnchorSideLeft.Control = pB + AnchorSideTop.Control = pB + AnchorSideRight.Control = pB + AnchorSideRight.Side = asrBottom + Left = 7 + Height = 1 + Top = 0 + Width = 289 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 7 + BorderSpacing.Right = 7 + TabOrder = 0 + end + end + object pL: TPanel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = Owner + Left = 0 + Height = 443 + Top = 0 + Width = 8 + Anchors = [] + BevelOuter = bvNone + ClientHeight = 443 + ClientWidth = 8 + Color = clNone + ParentColor = False + TabOrder = 2 + object pMarginL: TPanel + AnchorSideTop.Control = pL + AnchorSideRight.Control = pL + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = pL + AnchorSideBottom.Side = asrBottom + Left = 7 + Height = 429 + Top = 7 + Width = 1 + Anchors = [akTop, akRight, akBottom] + BorderSpacing.Top = 7 + BorderSpacing.Bottom = 7 + BevelOuter = bvNone + Color = clWhite + ParentColor = False + TabOrder = 0 + end + end + object pT: TPanel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = Owner + Left = 0 + Height = 8 + Top = 0 + Width = 303 + Anchors = [akLeft, akRight] + BevelOuter = bvNone + ClientHeight = 8 + ClientWidth = 303 + Color = clNone + ParentColor = False + TabOrder = 3 + object pMarginT: TPanel + AnchorSideLeft.Control = pT + AnchorSideRight.Control = pT + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = pT + AnchorSideBottom.Side = asrBottom + Left = 7 + Height = 1 + Top = 7 + Width = 289 + Anchors = [akLeft, akRight, akBottom] + BorderSpacing.Left = 7 + BorderSpacing.Right = 7 + BevelOuter = bvNone + Color = clWhite + ParentColor = False + TabOrder = 0 + end + end + object iResizerLineImg: TImage + Left = 216 + Height = 6 + Top = 32 + Width = 6 + AutoSize = True + Picture.Data = { + 1754506F727461626C654E6574776F726B477261706869639100000089504E47 + 0D0A1A0A0000000D4948445200000006000000060806000000E0CCEF48000000 + 06624B474400FF00FF00FFA0BDA793000000097048597300000EC400000EC401 + 952B0E1B0000000774494D4507DD0A07131110E51DAB140000001E4944415408 + D76358B060C17F06060606749A019BE082050BFE33D04107001B6C33AF54FD1B + 500000000049454E44AE426082 + } + Visible = False + end + object pBG: TPanel + AnchorSideLeft.Control = pL + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = pT + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = pR + AnchorSideBottom.Control = pB + Left = 8 + Height = 427 + Top = 8 + Width = 287 + Anchors = [akTop, akLeft, akRight, akBottom] + BevelOuter = bvNone + Color = clNone + ParentColor = False + TabOrder = 4 + end + object pClient: TPanel + AnchorSideLeft.Control = pL + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = pT + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = pR + AnchorSideBottom.Control = pB + Left = 0 + Height = 152 + Top = 0 + Width = 152 + Anchors = [] + BevelOuter = bvNone + Color = clNone + ParentColor = False + TabOrder = 5 + end +end diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_resizerframe.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,832 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_ResizerFrame; + +{$mode delphi}{$H+} + +interface + +uses + Classes, contnrs, SysUtils, FileUtil, Forms, Controls, ExtCtrls, StdCtrls, Graphics, LCLType, + lclintf, sparta_DesignedForm, Math, FormEditingIntf, PropEdits; + +type + + { TResizerFrame } + TPositioningCode = (pcPositioning, pcPositioningEnd); + TPositioningKind = set of (pkBottom, pkRight); + TPositioningEvent = procedure(Sender: TObject; PositioningKind: TPositioningKind; PositioningCode: TPositioningCode) of object; + + TResizerFrame = class(TFrame) + iResizerLineImg: TImage; + pBG: TPanel; + pB: TPanel; + pClient: TPanel; + pL: TPanel; + pMarginB: TPanel; + pMarginL: TPanel; + pMarginR: TPanel; + pMarginT: TPanel; + pR: TPanel; + pT: TPanel; + procedure sbVerticalScroll(Sender: TObject; ScrollCode: TScrollCode; + var ScrollPos: Integer); + procedure sbHorizontalScroll(Sender: TObject; ScrollCode: TScrollCode; + var ScrollPos: Integer); + public const + SIZER_RECT_SIZE = 8; + SIZER_LINE_WIDTH = 8; + private + FVerticalScrollPos: Integer; + FHorizontalScrollPos: Integer; + FDesignedForm: IDesignedForm; + FBackground: IDesignedFormBackground; + + procedure SetDesignedForm(const AValue: IDesignedForm); + private + { private declarations } + FOnNodePositioning: TPositioningEvent; + FOnHorizontalScroll, FOnVerticalScroll: TScrollEvent; + FLastRightMarign: Integer; + FLastBottomMarign: Integer; + FNodes: TObjectList; + FNodePositioning: Boolean; + FOldPos, FDelta: TPoint; + FPositioningKind: TPositioningKind; + FMaxWidth, FMaxHeight: Integer; + FActivePropertyGridItemIndex: Integer; + FLastClientWidth, FLastClientHeight: Integer; + + procedure PanelPaint(Sender: TObject); + procedure BGChangeBounds(Sender: TObject); + + procedure CreateNodes; + procedure NodeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure NodeMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); + procedure NodeMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + + function GetRightMargin: Integer; + function GetBottomMargin: Integer; + + // dependent on scroll position + // for Vertical + function BottomSizerRectHeight: Integer; + function BottomSizerLineWidth: Integer; + function TopSizerRectTop: Integer; + function TopSizerLineWidth: Integer; + function VerticalSizerLineLength: Integer; + // for Horizontal + function RightSizerRectWidth: Integer; + function RightSizerLineWidth: Integer; + function LeftSizerRectLeft: Integer; + function LeftSizerLineWidth: Integer; + function HorizontalSizerLineLength: Integer; + + function GetBackgroundMargin(const AIndex: Integer): Integer; + + procedure TryBoundDesignedForm; + public + constructor Create(TheOwner: TComponent); override; + destructor Destroy; override; + + property DesignedForm: IDesignedForm read FDesignedForm write SetDesignedForm; + + procedure PositionNodes(AroundControl: TWinControl); + property NodePositioning: Boolean read FNodePositioning; + procedure ClientChangeBounds(Sender: TObject); + + property RightMargin: Integer read GetRightMargin; + property BottomMargin: Integer read GetBottomMargin; + property OnNodePositioning: TPositioningEvent read FOnNodePositioning write FOnNodePositioning; + + property BgLeftMargin: Integer index 0 read GetBackgroundMargin; + property BgTopMargin: Integer index 1 read GetBackgroundMargin; + property BgRightMargin: Integer index 2 read GetBackgroundMargin; + property BgBottomMargin: Integer index 3 read GetBackgroundMargin; + + function DesignedWidthToScroll: Integer; + function DesignedHeightToScroll: Integer; + + procedure HideSizeRects; + procedure HideSizeControls; + procedure ShowSizeRects; + procedure ShowSizeControls; + + property VerticalScrollPos: Integer read FVerticalScrollPos write FVerticalScrollPos; + property HorizontalScrollPos: Integer read FHorizontalScrollPos write FHorizontalScrollPos; + end; + +resourcestring + SArgumentOutOfRange = 'Argument out of range'; + +implementation + +{$R *.lfm} + +{ TResizerFrame } + +// Tiles the source image over the given target canvas +procedure TileImage(const ASource: TImage; ATarget: TCanvas; AX, AY, + AWidth, AHeight: Integer); +var + LX, LY, LDeltaX, LDeltaY: Integer; +begin + LDeltaX := ASource.Width; + LDeltaY := ASource.Height; + LY := 0; + while LY < AHeight do + begin + LX := 0; + while LX < AWidth do + begin + ATarget.Draw(AX + LX, AY + LY, ASource.Picture.graphic); + Inc(LX, LDeltaX); + end; + Inc(LY, LDeltaY); + end; +end; + +procedure TResizerFrame.sbVerticalScroll(Sender: TObject; + ScrollCode: TScrollCode; var ScrollPos: Integer); +begin + if ScrollCode <> scEndScroll then + HideSizeRects + else + ShowSizeRects; + + FVerticalScrollPos := ScrollPos; + + PositionNodes(Self); + + if Assigned(FOnVerticalScroll) + // for refresh from this class, pass sender as nil. + // In other case program will go into infinity loop + and (Sender <> nil) then + FOnVerticalScroll(Sender, ScrollCode, ScrollPos); +end; + +procedure TResizerFrame.sbHorizontalScroll(Sender: TObject; + ScrollCode: TScrollCode; var ScrollPos: Integer); +begin + if ScrollCode <> scEndScroll then + HideSizeRects + else + ShowSizeRects; + + FHorizontalScrollPos := ScrollPos; + + PositionNodes(Self); + + if Assigned(FOnHorizontalScroll) + // for refresh from this class, pass sender as nil. + // In other case program will go into infinity loop + and (Sender <> nil) then + FOnHorizontalScroll(Sender, ScrollCode, ScrollPos); +end; + +procedure TResizerFrame.SetDesignedForm(const AValue: IDesignedForm); +begin + FDesignedForm := AValue; + if FDesignedForm = nil then + FBackground := nil + else + if Supports(FDesignedForm, IDesignedFormBackground, FBackground) then + begin + FBackground.Parent := pBG; + end; + // special for QT (at start "design form" has wrong position) + TryBoundDesignedForm; +end; + +procedure TResizerFrame.PanelPaint(Sender: TObject); +begin + if FNodePositioning then + Exit; + if Sender = pR then + TileImage(iResizerLineImg, pR.Canvas, 0, 0, SIZER_LINE_WIDTH, Height) + else if Sender = pB then + TileImage(iResizerLineImg, pB.Canvas, 0, 0, Width, SIZER_LINE_WIDTH) + else if Sender = pL then + TileImage(iResizerLineImg, pL.Canvas, 0, 0, SIZER_LINE_WIDTH, Height) + else if Sender = pT then + TileImage(iResizerLineImg, pT.Canvas, 0, 0, Width, SIZER_LINE_WIDTH); +end; + +procedure TResizerFrame.ClientChangeBounds(Sender: TObject); +{$IFDEF USE_POPUP_PARENT_DESIGNER} +var + p: TPoint; +{$ENDIF} +begin + if (DesignedForm = nil) or FNodePositioning then + Exit; + + FLastClientWidth := pClient.Width; + FLastClientHeight := pClient.Height; + +(* + DesignedForm.BeginUpdate; + +{$IFDEF USE_POPUP_PARENT_DESIGNER} + p := Point(0, 0); + p := pClient.ClientToScreen(p); + DesignedForm.RealLeft := p.x; + DesignedForm.RealTop := p.y; +{$ELSE} + DesignedForm.RealLeft := 0; + DesignedForm.RealTop := 0; +{$ENDIF} + DesignedForm.RealWidth := pClient.Width; + DesignedForm.RealHeight := pClient.Height; + DesignedForm.EndUpdate; +*) +end; + +procedure TResizerFrame.BGChangeBounds(Sender: TObject); +begin + PositionNodes(Self); +end; + +procedure TResizerFrame.HideSizeRects; +var + p: TObject; + wc: TWinControl absolute p; +begin + for p in FNodes do + if not (wc is TPanel) then + wc.Visible := False; +end; + +procedure TResizerFrame.HideSizeControls; +begin + pL.Repaint; + pT.Repaint; + pR.Repaint; + pB.Repaint; + + HideSizeRects; + pBG.Visible := False; +end; + +procedure TResizerFrame.ShowSizeRects; +var + p: TObject; + wc: TWinControl absolute p; +begin + for p in FNodes do + wc.Visible := True; +end; + +procedure TResizerFrame.ShowSizeControls; +begin + pL.Repaint; + pT.Repaint; + pR.Repaint; + pB.Repaint; + + ShowSizeRects; + pBG.Visible := True; +end; + +procedure TResizerFrame.CreateNodes; +var + Node: Integer; + Panel: TPanel; +begin + for Node := 0 to 7 do + begin + Panel := TPanel.Create(self); + with Panel do + begin + BevelOuter := bvNone; + Color := clBlack; + + Name := 'Node' + IntToStr(Node); + Caption:=''; + Width := SIZER_RECT_SIZE; + Height := SIZER_RECT_SIZE; + Parent := Self; + Visible := True; + FNodes.Add(Panel); + + with TShape.Create(Panel) do + begin + Parent := Panel; + Align:= alClient; + + if Node in [3,4,5] then + Brush.Color:=clBtnFace + else + Brush.Color:=clGray; + + case Node of + {0,}4: Cursor := crSizeNWSE; + {1,}5: Cursor := crSizeNS; + //{2,}6: Cursor := crSizeNESW; + 3{,7}: Cursor := crSizeWE; + end; + if Node in [3,4,5] then + begin + OnMouseDown := NodeMouseDown; + OnMouseMove := NodeMouseMove; + OnMouseUp := NodeMouseUp; + end; + + end; + end; + end; + // extra resizers + pB.OnMouseDown := NodeMouseDown; + pB.OnMouseMove := NodeMouseMove; + pB.OnMouseUp := NodeMouseUp; + + pR.OnMouseDown := NodeMouseDown; + pR.OnMouseMove := NodeMouseMove; + pR.OnMouseUp := NodeMouseUp; + + FNodes.Add(pL); + FNodes.Add(pT); + FNodes.Add(pR); + FNodes.Add(pB); +end; + +procedure TResizerFrame.NodeMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +var + LCtrlPoint: TPoint; +begin + if Sender is TGraphicControl then + Sender := TGraphicControl(Sender).Parent; + + if (Enabled) AND (Sender is TWinControl) then + begin + FNodePositioning:=True; + + // when we start resizing the rules do not apply to us :) + FMaxWidth := Constraints.MaxWidth; + FMaxHeight := Constraints.MaxHeight; + Constraints.MaxWidth := 0; + Constraints.MaxHeight := 0; + with pClient do + begin + Align := alClient; + if pBG.Left + BgLeftMargin <= 0 then + BorderSpacing.Left := Max(-pBG.Left - (FHorizontalScrollPos - SIZER_RECT_SIZE), 0) + else + BorderSpacing.Left := Max(pBG.Left + BgLeftMargin, 0); + + if pBG.Top + BgTopMargin <= 0 then + BorderSpacing.Top := Max(-pBG.Top - (FVerticalScrollPos - SIZER_RECT_SIZE), 0) + else + BorderSpacing.Top := Max(pBG.Top + BgTopMargin, 0); + + BorderSpacing.Right := Max(Self.Width - (pR.Left - BgRightMargin), 0); + BorderSpacing.Bottom := Max(Self.Height - (pB.Top - BgBottomMargin), 0); + end; + + // when was active ActivePropertyGrid.ItemIndex for height or width during scaling + // there was problem with values :< + if ((Sender = pR) or (Sender = pB) or (FNodes.IndexOf(Sender) in [3,4,5])) and (FormEditingHook.GetCurrentObjectInspector <> nil) then + begin + FActivePropertyGridItemIndex := FormEditingHook.GetCurrentObjectInspector.GetActivePropertyGrid.ItemIndex; + FormEditingHook.GetCurrentObjectInspector.GetActivePropertyGrid.ItemIndex := -1; + end + else + FActivePropertyGridItemIndex := -1; + + {$IF Defined(LCLWin32) or Defined(LCLWin64)} + SetCapture(TWinControl(Sender).Handle); + {$ENDIF} + GetCursorPos(FOldPos); + // perform first "click delta" to reduce leap + // + calculate delta created by scrollbars and theirs position... + FillChar(FDelta, SizeOf(FDelta), #0); + LCtrlPoint := (Sender as TWinControl).ScreenToClient(Mouse.CursorPos); + if Sender = pR then + begin + FDelta.X := -(LCtrlPoint.x - RightSizerLineWidth) + RightMargin; + FPositioningKind := [pkRight]; + end + else if Sender = pB then + begin + FDelta.Y := -(LCtrlPoint.y - BottomSizerLineWidth) + BottomMargin; + FPositioningKind := [pkBottom]; + end + else + case FNodes.IndexOf(Sender) of + 3: // middle right + begin + FDelta.X := -(LCtrlPoint.x - RightSizerRectWidth) + RightMargin; + FPositioningKind := [pkRight]; + end; + 4: // right bottom + begin + FDelta.X := -(LCtrlPoint.x - RightSizerRectWidth) + RightMargin; + FDelta.Y := -(LCtrlPoint.y - BottomSizerRectHeight) + BottomMargin; + FPositioningKind := [pkRight, pkBottom]; + end; + 5: // middle bottom + begin + FDelta.Y := -(LCtrlPoint.y - BottomSizerRectHeight) + BottomMargin; + FPositioningKind := [pkBottom]; + end; + end; + end; +end; + +procedure TResizerFrame.NodeMouseMove(Sender: TObject; Shift: TShiftState; X, + Y: Integer); +var + newPos: TPoint; + frmPoint : TPoint; + OldRect: TRect; + AdjL,AdjR,AdjT,AdjB: Boolean; +begin + // handle TPanel for resizing rectangles + if Sender is TGraphicControl then + Sender := TGraphicControl(Sender).Parent; + + if FNodePositioning then + begin + begin + with TWinControl(Sender) do + begin + GetCursorPos(newPos); + + if (newPos.x = FOldPos.x) and (newPos.y = FOldPos.y) then + Exit; + + HideSizeControls; + + with Self do + begin //resize + frmPoint := Self.ScreenToClient(Mouse.CursorPos); + frmPoint.x:= frmPoint.x + FDelta.x; + frmPoint.y:= frmPoint.y + FDelta.y; + + OldRect := Self.BoundsRect; + AdjL := False; + AdjR := False; + AdjT := False; + AdjB := False; + case FNodes.IndexOf(TWinControl(Sender)) of + 0: begin + //AdjL := True; + //AdjT := True; + end; + 1: begin + //AdjT := True; + end; + 2: begin + //AdjR := True; + //AdjT := True; + end; + 3, 10: begin + AdjR := True; + end; + 4: begin + AdjR := True; + AdjB := True; + end; + 5, 11: begin + AdjB := True; + end; + 6: begin + //AdjL := True; + //AdjB := True; + end; + 7: begin + //AdjL := True; + end; + end; + + if AdjL then + OldRect.Left := frmPoint.X; + if AdjR then + OldRect.Right := frmPoint.X; + if AdjT then + OldRect.Top := frmPoint.Y; + if AdjB then + OldRect.Bottom := frmPoint.Y; + + SetBounds(OldRect.Left,OldRect.Top,OldRect.Right - OldRect.Left,OldRect.Bottom - OldRect.Top); + end; + //move node + Left := Left - FOldPos.X + newPos.X; + Top := Top - FOldPos.Y + newPos.Y; + FOldPos := newPos; + end; + end; + PositionNodes(Self); + if Assigned(OnNodePositioning) then + OnNodePositioning(Self, FPositioningKind, pcPositioning); + + // the same operation as belowe exist in ClientChangeBounds but it is + // disabled for FNodePositioning = true + // we need to refresh this values after OnNodePositioning + FLastClientWidth := pClient.Width; + FLastClientHeight:= pClient.Height; + end; +end; + +procedure TResizerFrame.NodeMouseUp(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +begin + if Sender is TGraphicControl then + Sender := TGraphicControl(Sender).Parent; + + if FNodePositioning then + begin + Screen.Cursor := crDefault; + {$IF Defined(LCLWin32) or Defined(LCLWin64)} + ReleaseCapture; + {$ENDIF} + + // restore last selected item in OI. + if FActivePropertyGridItemIndex <> -1 then + begin + if FormEditingHook.GetCurrentObjectInspector <> nil then + FormEditingHook.GetCurrentObjectInspector.GetActivePropertyGrid.ItemIndex := FActivePropertyGridItemIndex; + FActivePropertyGridItemIndex := -1; + end; + + Constraints.MaxWidth := FMaxWidth; + Constraints.MaxHeight := FMaxHeight; + FNodePositioning := False; + ShowSizeControls; + if Assigned(OnNodePositioning) then + OnNodePositioning(Sender, FPositioningKind, pcPositioningEnd); + FPositioningKind := []; + + pClient.Align := alNone; + BorderSpacing.Left := 0; + BorderSpacing.Top := 0; + BorderSpacing.Right := 0; + BorderSpacing.Bottom := 0; + PositionNodes(Self); + + GlobalDesignHook.RefreshPropertyValues; + + // after resizing, TFrame is frozen in Windows OS + // this is trick to workaraund IDE bug. Also for proper size for normal form + TryBoundDesignedForm; + end; +end; + +function TResizerFrame.GetRightMargin: Integer; +begin + if not FNodePositioning then + FLastRightMarign := Width - (pR.Left + pR.Width); + Result := FLastRightMarign; +end; + +function TResizerFrame.GetBottomMargin: Integer; +begin + if not FNodePositioning then + FLastBottomMarign := Height - (pB.Top + pB.Height); + Result := FLastBottomMarign; +end; + +{----------------------------------------------------------------------------------------------------------------------- + for Vertical scroll +{----------------------------------------------------------------------------------------------------------------------} + +function TResizerFrame.BottomSizerRectHeight: Integer; +begin + Result := SIZER_RECT_SIZE; +end; + +function TResizerFrame.BottomSizerLineWidth: Integer; +begin + Result := SIZER_LINE_WIDTH; +end; + +function TResizerFrame.TopSizerRectTop: Integer; +begin + Result := -FVerticalScrollPos; +end; + +function TResizerFrame.TopSizerLineWidth: Integer; +begin + Result := SIZER_LINE_WIDTH; +end; + +function TResizerFrame.VerticalSizerLineLength: Integer; +begin + Result := Height - BottomMargin; +end; + +{----------------------------------------------------------------------------------------------------------------------- + for Horizontal scroll +{----------------------------------------------------------------------------------------------------------------------} + +function TResizerFrame.RightSizerRectWidth: Integer; +begin + Result := SIZER_RECT_SIZE; +end; + +function TResizerFrame.RightSizerLineWidth: Integer; +begin + Result := SIZER_LINE_WIDTH; +end; + +function TResizerFrame.LeftSizerRectLeft: Integer; +begin + Result := -FHorizontalScrollPos; +end; + +function TResizerFrame.LeftSizerLineWidth: Integer; +begin + Result := SIZER_LINE_WIDTH; +end; + +function TResizerFrame.HorizontalSizerLineLength: Integer; +begin + Result := Width - RightMargin; +end; + +function TResizerFrame.GetBackgroundMargin(const AIndex: Integer): Integer; +begin + if FBackground = nil then + Result := 0 + else + Result := FBackground.GetMargin(AIndex); +end; + +procedure TResizerFrame.TryBoundDesignedForm; +begin + if DesignedForm = nil then + Exit; + + DesignedForm.BeginUpdate; + DesignedForm.RealWidth := DesignedForm.RealWidth + 1; + DesignedForm.RealWidth := DesignedForm.RealWidth - 1; + DesignedForm.EndUpdate; + + HideSizeControls; + ShowSizeControls; + + // for GTK2 resizing form (pClient is hidden under pBG) + {$IF DEFINED(LCLGtk2) OR DEFINED(LCLQt)} + pClient.SendToBack; // <--- this is a must. + {$ENDIF} + pClient.BringToFront; +end; + +function TResizerFrame.DesignedWidthToScroll: Integer; +begin + if DesignedForm = nil then + Exit(0); + + Result := DesignedForm.Width - FLastClientWidth; + //Result := DesignedForm.Width - DesignedForm.RealWidth; +end; + +function TResizerFrame.DesignedHeightToScroll: Integer; +begin + if DesignedForm = nil then + Exit(0); + + Result := DesignedForm.Height - FLastClientHeight; + //Result := DesignedForm.Height - DesignedForm.RealHeight; +end; + +{} + +constructor TResizerFrame.Create(TheOwner: TComponent); +begin + inherited Create(TheOwner); + + FNodes := TObjectList.Create(False); + CreateNodes; + + pL.OnPaint := PanelPaint; + pT.OnPaint := PanelPaint; + pR.OnPaint := PanelPaint; + pB.OnPaint := PanelPaint; + + pClient.OnChangeBounds := ClientChangeBounds; + pBG.OnChangeBounds := BGChangeBounds; + PositionNodes(Self); +end; + +destructor TResizerFrame.Destroy; +begin + FNodes.Free; + inherited Destroy; +end; + +procedure TResizerFrame.PositionNodes(AroundControl: TWinControl); +var + Node,T,L,CT,CL,FR,FB,FT,FL: Integer; + TopLeft: TPoint; +begin + if FDesignedForm = nil then + Exit; + + // positions of bars + if not FNodePositioning then + begin + pL.Left := -FHorizontalScrollPos; + pR.Left := FDesignedForm.Width - FHorizontalScrollPos + pL.Width + BgRightMargin + BgLeftMargin; + pT.Top := -FVerticalScrollPos; + pB.Top := FDesignedForm.Height - FVerticalScrollPos + pT.Height + BgBottomMargin + BgTopMargin; + + // width and height + pL.Top:=0; + pL.Height := FDesignedForm.Height + 2*SIZER_RECT_SIZE + BgTopMargin + BgBottomMargin; + pR.Top:=0; + pR.Height := FDesignedForm.Height + 2*SIZER_RECT_SIZE + BgTopMargin + BgBottomMargin; + pT.Left:=0; + pT.Width := FDesignedForm.Width + 2*SIZER_RECT_SIZE + BgLeftMargin + BgRightMargin; + pB.Left:=0; + pB.Width := FDesignedForm.Width + 2*SIZER_RECT_SIZE + BgLeftMargin + BgRightMargin; + + // client + if pBG.Left + BgLeftMargin <= 0 then + pClient.Left := -(pBG.Left) - (FHorizontalScrollPos - SIZER_RECT_SIZE) + else + pClient.Left := pBG.Left + BgLeftMargin; + if pBG.Top + BgTopMargin <= 0 then + pClient.Top := -(pBG.Top) - (FVerticalScrollPos - SIZER_RECT_SIZE) + else + pClient.Top := pBG.Top + BgTopMargin; + + pClient.Height := Height - pClient.Top - Max(Height - (pB.Top - BgBottomMargin), 0); + pClient.Width := Width - pClient.Left - Max(Width - (pR.Left - BgRightMargin), 0); + end; + + for Node := 0 to 7 do + begin + with AroundControl do + begin + FR := Width - RightSizerRectWidth - RightMargin; + FB := Height - BottomSizerRectHeight - BottomMargin; + + FT := TopSizerRectTop; + FL := LeftSizerRectLeft; + + CL := (FR - FL) div 2 + FL; + CT := (FB - FT) div 2 + FT; + + case Node of + 0: begin + T := FT; + L := FL; + end; + 1: begin + T := FT; + L := CL; + end; + 2: begin + T := FT; + L := FR; + end; + 3: begin + T := CT; + L := FR; + end; + 4: begin + T := FB; + L := FR; + end; + 5: begin + T := FB; + L := CL; + end; + 6: begin + T := FB; + L := FL; + end; + 7: begin + T := CT; + L := FL; + end; + else + T := 0; + L := 0; + end; + + TopLeft := (Classes.Point(L,T)); + end; + with TPanel(FNodes[Node]) do + begin + Top := TopLeft.Y; + Left := TopLeft.X; + Repaint; + end; + end; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_resizer.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_resizer.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/source/sparta_resizer.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/source/sparta_resizer.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,452 @@ +{ + ***************************************************************************** + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Maciej Izak + + DaThoX 2004-2015 + FreeSparta.com +} + +unit sparta_Resizer; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Controls, ExtCtrls, sparta_ResizerFrame, sparta_DesignedForm, Forms, Math, StdCtrls, + LCLType, LazIDEIntf, Buttons, SpartaAPI, Dialogs, +{$IFDEF USE_GENERICS_COLLECTIONS} + Generics.Defaults, +{$ENDIF} + FormEditingIntf; + +type + + { TResizer } + + TResizer = class(TComponent, IResizer) + private + FDesignedForm: IDesignedForm; + + procedure SetDesignedForm(const AValue: IDesignedForm); + procedure SetDesignScroll(AIndex: Integer; AValue: Boolean); + procedure sbScroll(Sender: TObject; ScrollCode: TScrollCode; + var ScrollPos: Integer); + + procedure FunnyButtonClick(Sender: TObject); + protected + // To perform proper behaviour for scroolbar with "PageSize" we need to remember real + // maximal values (is possible to scroll outside of range 0..(Max - PageSize), + // after mouse click in button responsible for changing value of scrollbar, + // our value is equal to Max :\). Workaround: we need to remember real max value in our own place + FRealMaxH: Integer; + FRealMaxV: Integer; + FSpecialMargin: array[0..3] of Integer; + FDesignScroll: array[0..1] of Boolean; + FParent: TWinControl; + + class var + FStarter, FProfessional: TNotifyEvent; + public + pMainDTU: TPanel; + pMain: TPanel; + pAddons: TPanel; + pComponents: TPanel; + lInfo: TLabel; + sbShowComponents : TSpeedButton; + sbShowFormEditor: TSpeedButton; + sbShowAnchorEditor: TSpeedButton; + sbShowNonVisualEditor: TSpeedButton; + pDesignTimeUtils: TPanel; + sbV: TScrollBar; + sbH: TScrollBar; + bR: TButton; + FResizerFrame: TResizerFrame; + + FMainDTU: ISTAMainDesignTimeUtil; + + FEDTU: TList; + + constructor Create(AParent: TWinControl); + destructor Destroy; override; + + property DesignedForm: IDesignedForm read FDesignedForm write SetDesignedForm; + + procedure TryBoundSizerToDesignedForm(Sender: TObject); + + procedure NodePositioning(Sender: TObject; PositioningKind: TPositioningKind; PositioningCode: TPositioningCode); + + property DesignScrollRight: Boolean index SB_Vert read FDesignScroll[SB_Vert] write SetDesignScroll; + property DesignScrollBottom: Boolean index SB_Horz read FDesignScroll[SB_Horz] write SetDesignScroll; + end; + +implementation + +{ TResizer } + +procedure TResizer.SetDesignedForm(const AValue: IDesignedForm); + + function FindFirstFormParent: TCustomForm; + begin + Result := TCustomForm(FResizerFrame.Parent); + while not (Result is TCustomForm) do + Result := TCustomForm(Result.Parent); + end; + +var + LLookupRoot: TComponent; +begin + if FDesignedForm <> nil then + begin + FDesignedForm.OnChangeHackedBounds := nil; + end; + + FDesignedForm := AValue; + + if FDesignedForm <> nil then + begin + FDesignedForm.BeginUpdate; + +{$IFDEF USE_POPUP_PARENT_DESIGNER} + FDesignedForm.RealPopupMode := pmExplicit; + // for dock/undock + FDesignedForm.RealPopupParent := nil; + FDesignedForm.RealPopupParent := FindFirstFormParent; +{$ELSE} + FDesignedForm.Form.ParentWindow := FResizerFrame.pClient.Handle; +{$ENDIF} + // for big forms (bigger than screen resolution) we need to refresh Real* values + DesignedForm.RealWidth := DesignedForm.Width; + DesignedForm.RealHeight := DesignedForm.Height; + + FDesignedForm.EndUpdate; + FDesignedForm.OnChangeHackedBounds := @TryBoundSizerToDesignedForm; + // in this place DesignedForm should be initialized by current editor (+ "sizer") + // TODO some interfaces for utils (Design Time Utils - DTU) ? + LLookupRoot := LookupRoot(DesignedForm.Form); + + if FMainDTU <> nil then + FMainDTU.Root := LLookupRoot; + end + else + begin + if FMainDTU <> nil then + FMainDTU.Root := nil; + end; + + FResizerFrame.DesignedForm := AValue; +end; + +procedure TResizer.SetDesignScroll(AIndex: Integer; AValue: Boolean); + + procedure PerformScroll(AScroll: TScrollBar); + begin + AScroll.Visible := AValue; + AScroll.Position:=0; + end; + +begin + if FDesignScroll[AIndex] = AValue then + Exit; + + FDesignScroll[AIndex] := AValue; + + case AIndex of + SB_Horz: PerformScroll(sbH); + SB_Vert: PerformScroll(sbV); + else + raise EArgumentOutOfRangeException.CreateRes(@SArgumentOutOfRange); + end; +end; + +procedure TResizer.sbScroll(Sender: TObject; ScrollCode: TScrollCode; + var ScrollPos: Integer); +var + LScrollPos: Integer; +begin + if FDesignedForm = nil then + Exit; + + if ScrollCode <> scEndScroll then + FResizerFrame.HideSizeRects + else + FResizerFrame.ShowSizeRects; + + + FDesignedForm.BeginUpdate; + if Sender = sbV then + begin + // Warning - don't overflow the range! (go to description for FRealMaxV) + ScrollPos := Min(ScrollPos, FRealMaxV); + FResizerFrame.VerticalScrollPos := ScrollPos; + // scroll for form + with FResizerFrame do // -8 when we scaling the form and we don't need to scroll -> there is Max + LScrollPos := Max(ifthen(pBG.Top + BgTopMargin <= 0, ScrollPos - SIZER_RECT_SIZE - BgTopMargin, 0), 0); + FDesignedForm.VertScrollPosition := LScrollPos; + end; + if Sender = sbH then + begin + ScrollPos := Min(ScrollPos, FRealMaxH); + FResizerFrame.HorizontalScrollPos := ScrollPos; + // scroll for form + with FResizerFrame do + LScrollPos := Max(ifthen(pBG.Left + BgLeftMargin <= 0, ScrollPos - SIZER_RECT_SIZE - BgLeftMargin, 0), 0); + FDesignedForm.HorzScrollPosition := LScrollPos; + end; + FDesignedForm.EndUpdate; + + FResizerFrame.PositionNodes(FResizerFrame); + + FDesignedForm.Form.Invalidate; +end; + +constructor TResizer.Create(AParent: TWinControl); +begin + inherited Create(AParent); + FParent := AParent; + // create layout + FEDTU := TList.Create; + + if Assigned(FStarter) then + FStarter(Self); + + pMainDTU := TPanel.Create(AParent); + with pMainDTU do + begin + Parent := AParent; + Align := alTop; + BevelOuter := bvNone; + Height := 0; + end; + + pAddons := TPanel.Create(AParent); + pAddons.Parent := AParent; + pAddons.Align := alRight; + pAddons.BevelOuter := bvNone; + pAddons.Width:=0; + + if DTUManager <> nil then + begin + FMainDTU := DTUManager.CreateMainDTU(pMainDTU, pAddons); + end; + + // Funny button + bR := TButton.Create(AParent); + with bR do + begin + Parent := AParent; + Height := 17; + Width := 17; + AnchorSideRight.Control := pAddons; + AnchorSideBottom.Control := AParent; + AnchorSideBottom.Side := asrBottom; + Anchors := [akRight, akBottom]; + Caption := 'R'; + Visible := True; + OnClick := @FunnyButtonClick; + end; + + sbV := TScrollBar.Create(AParent); + with sbV do + begin + Kind := sbVertical; + Parent := AParent; + AnchorSideTop.Control := pMainDTU; + AnchorSideTop.Side := asrBottom; + AnchorSideRight.Control := pAddons; + AnchorSideBottom.Control := bR; + Width := 17; + Anchors := [akTop, akRight, akBottom]; + Visible := False; + OnScroll := @sbScroll; + end; + + sbH := TScrollBar.Create(AParent); + with sbH do + begin + Parent := AParent; + AnchorSideLeft.Control := AParent; + AnchorSideRight.Control := bR; + AnchorSideBottom.Control := AParent; + AnchorSideBottom.Side := asrBottom; + Anchors := [akLeft, akRight, akBottom]; + Visible := False; + OnScroll := @sbScroll; + end; + + pMain := TPanel.Create(AParent); + with pMain do + begin + Parent := AParent; + AnchorSideLeft.Control := AParent; + AnchorSideTop.Control := pMainDTU; + AnchorSideTop.Side := asrBottom; + AnchorSideRight.Control := sbV; + AnchorSideBottom.Control := sbH; + Anchors := [akTop, akLeft, akRight, akBottom]; + BevelOuter := bvNone; + end; + + FResizerFrame := TResizerFrame.Create(AParent); + FResizerFrame.Parent := pMain; + FResizerFrame.Left := 0; + FResizerFrame.Top := 0; + FResizerFrame.OnNodePositioning := @NodePositioning; + + pMain.OnChangeBounds:=@TryBoundSizerToDesignedForm; +end; + +destructor TResizer.Destroy; +begin + FMainDTU := nil; + FEDTU.Free; + inherited Destroy; +end; + +procedure TResizer.TryBoundSizerToDesignedForm(Sender: TObject); +var + LWidth, LHeight: Integer; + LScrollPos: Integer; +begin + if DesignedForm = nil then + Exit; + + FResizerFrame.Constraints.MaxWidth := pMain.Width; + FResizerFrame.Constraints.MaxHeight := pMain.Height; + + LWidth := DesignedForm.Width + FResizerFrame.BgLeftMargin + FResizerFrame.BgRightMargin + 2*FResizerFrame.SIZER_RECT_SIZE; + LHeight := DesignedForm.Height + FResizerFrame.BgTopMargin + FResizerFrame.BgBottomMargin + 2*FResizerFrame.SIZER_RECT_SIZE; + if not FResizerFrame.NodePositioning then + begin + FResizerFrame.Width := LWidth; + FResizerFrame.Height := LHeight; + // after enlargement and after reducing constrait not work for frame (LCL bug) + if FResizerFrame.Width > FResizerFrame.Constraints.MaxWidth then + FResizerFrame.Width := FResizerFrame.Constraints.MaxWidth; + if FResizerFrame.Height > FResizerFrame.Constraints.MaxHeight then + FResizerFrame.Height := FResizerFrame.Constraints.MaxHeight; + end; + + FResizerFrame.PositionNodes(FResizerFrame); + + DesignScrollBottom := FResizerFrame.Width < LWidth; + sbH.Max := LWidth; + FRealMaxH := LWidth - FResizerFrame.Width; + sbH.PageSize := FResizerFrame.Width; + if FResizerFrame.HorizontalScrollPos > FRealMaxH then + begin + FResizerFrame.HorizontalScrollPos := FRealMaxH; + LScrollPos := FResizerFrame.HorizontalScrollPos; + sbScroll(sbH, scEndScroll, LScrollPos); + end; + + DesignScrollRight := FResizerFrame.Height < LHeight; + sbV.Max := LHeight; + FRealMaxV := LHeight - FResizerFrame.Height; + sbV.PageSize := FResizerFrame.Height; + if FResizerFrame.VerticalScrollPos > FRealMaxV then + begin + FResizerFrame.VerticalScrollPos := FRealMaxV; + LScrollPos := FResizerFrame.VerticalScrollPos; + sbScroll(sbV, scEndScroll, LScrollPos); + end; + + {!} + FResizerFrame.ClientChangeBounds(nil); + + // each editor can have scrolls in different positions. + // this is our place where we can call event to set scroll positions. + LScrollPos := FResizerFrame.VerticalScrollPos; + sbScroll(sbV, scEndScroll, LScrollPos); + LScrollPos := FResizerFrame.HorizontalScrollPos; + sbScroll(sbH, scEndScroll, LScrollPos); + + if Supports(FDesignedForm, IDesignedFormBackground) then + (FDesignedForm as IDesignedFormBackground).RefreshValues; +end; + +procedure TResizer.NodePositioning(Sender: TObject; PositioningKind: TPositioningKind; PositioningCode: TPositioningCode); + + procedure Positioning; + var + LHiddenHeight, LNewHeight: Integer; + LHiddenWidth, LNewWidth: Integer; + begin + DesignedForm.BeginUpdate; + + if pkRight in PositioningKind then + begin + LHiddenWidth := sbH.Position; + if LHiddenWidth > FResizerFrame.DesignedWidthToScroll then + LHiddenWidth := FResizerFrame.DesignedWidthToScroll; + + // TODO - better handling of min width - same in TDesignedFormImpl.SetPublishedBounds (sparta_FakeCustom.pas) + + LNewWidth := FResizerFrame.pClient.Width + LHiddenWidth; + DesignedForm.RealWidth := LNewWidth; + DesignedForm.Width := LNewWidth; + + // perform minimal width (TODO) + {if LNewWidth < DesignedForm.Width then + begin + FResizerFrame.pClient.Width := DesignedForm.Width; + Application.HandleMessage; + Application.ProcessMessages; + end;} + end; + + if pkBottom in PositioningKind then + begin + LHiddenHeight := sbV.Position; + if LHiddenHeight > FResizerFrame.DesignedHeightToScroll then + LHiddenHeight := FResizerFrame.DesignedHeightToScroll; + + LNewHeight := FResizerFrame.pClient.Height + LHiddenHeight; + DesignedForm.RealHeight := LNewHeight; + DesignedForm.Height := LNewHeight; + + // perform minimal height (TODO) + {if LNewHeight < DesignedForm.RealHeight then + begin + if FResizerFrame.pClient.Height < DesignedForm.RealHeight then + FResizerFrame.pClient.Height := DesignedForm.RealHeight; + Application.ProcessMessages; + end;} + end; + + DesignedForm.EndUpdate; + end; + + procedure PositioningEnd; + begin + TryBoundSizerToDesignedForm(nil); + end; + +begin + if DesignedForm = nil then + Exit; + + case PositioningCode of + pcPositioningEnd: PositioningEnd; + pcPositioning: Positioning; + end; +end; + +procedure TResizer.FunnyButtonClick(Sender: TObject); +begin + ShowMessage('Funny button with no functionality!' + + sLineBreak + + sLineBreak + + 'Regards' + + sLineBreak + + 'Maciej Izak' + + sLineBreak + + sLineBreak + 'DaThoX team FreeSparta.com project'); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.lpk lazarus-1.6+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.lpk --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.lpk 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.lpk 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <Package Version="4"> + <PathDelim Value="\"/> + <Name Value="sparta_DockedFormEditor"/> + <Type Value="RunAndDesignTime"/> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <SearchPaths> + <IncludeFiles Value="source"/> + <OtherUnitFiles Value="source"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)\$(LCLWidgetType)"/> + </SearchPaths> + <Linking> + <Debugging> + <UseValgrind Value="True"/> + <UseExternalDbgSyms Value="True"/> + </Debugging> + </Linking> + <Other> + <CustomOptions Value="$(IDEBuildOptions)"/> + </Other> + </CompilerOptions> + <Files Count="11"> + <Item1> + <Filename Value="source\sparta_reg_dockedformeditor.pas"/> + <HasRegisterProc Value="True"/> + <UnitName Value="sparta_reg_DockedFormEditor"/> + </Item1> + <Item2> + <Filename Value="source\sparta_designedform.pas"/> + <UnitName Value="sparta_DesignedForm"/> + </Item2> + <Item3> + <Filename Value="source\sparta_resizer.pas"/> + <UnitName Value="sparta_Resizer"/> + </Item3> + <Item4> + <Filename Value="source\sparta_resizerframe.pas"/> + <UnitName Value="sparta_ResizerFrame"/> + </Item4> + <Item5> + <Filename Value="source\spartaapi.pas"/> + <UnitName Value="SpartaAPI"/> + </Item5> + <Item6> + <Filename Value="source\sparta_fakecustom.pas"/> + <UnitName Value="sparta_FakeCustom"/> + </Item6> + <Item7> + <Filename Value="source\sparta_fakeform.pas"/> + <UnitName Value="sparta_FakeForm"/> + </Item7> + <Item8> + <Filename Value="source\sparta_fakeframe.pas"/> + <UnitName Value="sparta_FakeFrame"/> + </Item8> + <Item9> + <Filename Value="source\sparta_fakenoncontrol.pas"/> + <UnitName Value="sparta_FakeNonControl"/> + </Item9> + <Item10> + <Filename Value="source\sparta_mainide.pas"/> + <UnitName Value="sparta_MainIDE"/> + </Item10> + <Item11> + <Filename Value="source\sparta_hashutils.pas"/> + <UnitName Value="sparta_HashUtils"/> + </Item11> + </Files> + <RequiredPkgs Count="1"> + <Item1> + <PackageName Value="IDEIntf"/> + </Item1> + </RequiredPkgs> + <UsageOptions> + <UnitPath Value="$(PkgOutDir)"/> + </UsageOptions> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + </Package> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.pas lazarus-1.6+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.pas --- lazarus-1.4.4+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/sparta/dockedformeditor/sparta_dockedformeditor.pas 2015-11-19 00:19:56.000000000 +0000 @@ -0,0 +1,25 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit sparta_DockedFormEditor; + +interface + +uses + sparta_reg_DockedFormEditor, sparta_DesignedForm, sparta_Resizer, + sparta_ResizerFrame, SpartaAPI, sparta_FakeCustom, sparta_FakeForm, + sparta_FakeFrame, sparta_FakeNonControl, sparta_MainIDE, sparta_HashUtils, + LazarusPackageIntf; + +implementation + +procedure Register; +begin + RegisterUnit('sparta_reg_DockedFormEditor', + @sparta_reg_DockedFormEditor.Register); +end; + +initialization + RegisterPackage('sparta_DockedFormEditor', @Register); +end. diff -Nru lazarus-1.4.4+dfsg/components/sqldb/languages/registersqldb.fr.po lazarus-1.6+dfsg/components/sqldb/languages/registersqldb.fr.po --- lazarus-1.4.4+dfsg/components/sqldb/languages/registersqldb.fr.po 2015-04-29 21:31:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/sqldb/languages/registersqldb.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -1,7 +1,7 @@ msgid "" msgstr "" "Last-Translator: Philippe BOUCAULT <philbouc@users.sourceforge.net>\n" -"PO-Revision-Date: 2015-04-28 16:14+0100\n" +"PO-Revision-Date: 2016-01-25 10:23+0100\n" "Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -9,7 +9,7 @@ "POT-Creation-Date: \n" "MIME-Version: 1.0\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: registersqldb.sfirebirddatabases msgid "Firebird databases" @@ -29,7 +29,7 @@ #: registersqldb.ssqlscriptdesc msgid "Create a new SQL Script file" -msgstr "Créer un nouveau fichier script SQL." +msgstr "Créer un nouveau fichier script SQL" #: registersqldb.ssqlsource msgid "Insert your SQL statements here" @@ -37,4 +37,4 @@ #: registersqldb.ssqlstringspropertyeditordlgtitle msgid "Editing %s" -msgstr "Édition de %s" +msgstr "Édition de %s." diff -Nru lazarus-1.4.4+dfsg/components/sqldb/languages/registersqldb.lt.po lazarus-1.6+dfsg/components/sqldb/languages/registersqldb.lt.po --- lazarus-1.4.4+dfsg/components/sqldb/languages/registersqldb.lt.po 2013-09-06 23:01:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/sqldb/languages/registersqldb.lt.po 2015-05-21 23:43:59.000000000 +0000 @@ -1,4 +1,3 @@ - Valdas Jankunas <zmuogs@gmail.com>, 2010, 2012. msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" diff -Nru lazarus-1.4.4+dfsg/components/sqldb/Makefile.fpc lazarus-1.6+dfsg/components/sqldb/Makefile.fpc --- lazarus-1.4.4+dfsg/components/sqldb/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/sqldb/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for SQLDBLaz 1.0.2 # -# This file was generated on 18-4-15 +# This file was generated on 1-10-15 [package] name=sqldblaz diff -Nru lazarus-1.4.4+dfsg/components/sqldb/registersqldb.pas lazarus-1.6+dfsg/components/sqldb/registersqldb.pas --- lazarus-1.4.4+dfsg/components/sqldb/registersqldb.pas 2015-03-03 12:02:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/sqldb/registersqldb.pas 2015-04-10 20:51:38.000000000 +0000 @@ -66,9 +66,10 @@ {$DEFINE HASMYSQL56CONNECTION} {$ENDIF} -{$IFNDEF Solaris} +{ IFNDEF Solaris} +// Reflects missing fcl-db support around FPC 2.6.1. {$DEFINE HASIBCONNECTION} -{$ENDIF} +{ ENDIF} interface @@ -514,8 +515,10 @@ procedure Register; begin +{$IFDEF HASIBCONNECTION} RegisterPropertyEditor(TypeInfo(AnsiString), TIBConnection, 'DatabaseName', TSQLFirebirdFileNamePropertyEditor); +{$ENDIF} RegisterPropertyEditor(TypeInfo(AnsiString), TSQLConnector, 'ConnectorType', TSQLDBConnectorTypePropertyEditor); {$IFDEF HASLIBLOADER} @@ -526,8 +529,9 @@ {$endif} RegisterPropertyEditor(TStrings.ClassInfo, TSQLQuery, 'SQL' , TSQLStringsPropertyEditor); RegisterPropertyEditor(TStrings.ClassInfo, TSQLQuery, 'InsertSQL', TSQLStringsPropertyEditor); - RegisterPropertyEditor(TStrings.ClassInfo, TSQLQuery, 'DeleteSQL', TSQLStringsPropertyEditor); RegisterPropertyEditor(TStrings.ClassInfo, TSQLQuery, 'UpdateSQL', TSQLStringsPropertyEditor); + RegisterPropertyEditor(TStrings.ClassInfo, TSQLQuery, 'DeleteSQL', TSQLStringsPropertyEditor); + RegisterPropertyEditor(TStrings.ClassInfo, TSQLQuery, 'RefreshSQL',TSQLStringsPropertyEditor); RegisterPropertyEditor(TStrings.ClassInfo, TSQLScript, 'Script' , TSQLStringsPropertyEditor); RegisterProjectFileDescriptor(TSQLFileDescriptor.Create); diff -Nru lazarus-1.4.4+dfsg/components/sqlite/sqlitecomponenteditor.pas lazarus-1.6+dfsg/components/sqlite/sqlitecomponenteditor.pas --- lazarus-1.4.4+dfsg/components/sqlite/sqlitecomponenteditor.pas 2015-02-10 22:46:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/sqlite/sqlitecomponenteditor.pas 2016-01-18 22:59:25.000000000 +0000 @@ -11,7 +11,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Dialogs, StdCtrls, + Classes, SysUtils, FileUtil, LazFileUtils, LResources, Forms, Controls, Dialogs, StdCtrls, Buttons, customsqliteds, ComponentEditors, LazarusPackageIntf, LazIdeIntf, fieldseditor, sqlitecompstrings; diff -Nru lazarus-1.4.4+dfsg/components/synedit/allsynedit.pas lazarus-1.6+dfsg/components/synedit/allsynedit.pas --- lazarus-1.4.4+dfsg/components/synedit/allsynedit.pas 2013-05-06 14:03:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/allsynedit.pas 2015-03-14 10:42:05.000000000 +0000 @@ -9,24 +9,28 @@ uses SynBeautifier, SynCompletion, SynEdit, SynEditAutoComplete, SynEditExport, SynEditFoldedView, SynEditHighlighter, SynEditHighlighterFoldBase, - SynEditHighlighterXMLBase, SynEditKeyCmds, LazSynEditMouseCmdsTypes, SynHighlighterPo, - SynEditLines, SynEditMarks, SynEditMarkup, SynEditMarkupBracket, - SynEditMarkupCtrlMouseLink, SynEditMarkupHighAll, SynEditMarkupSelection, - SynEditMarkupSpecialLine, SynEditMarkupWordGroup, SynEditMiscClasses, SynEditMiscProcs, - SynEditMouseCmds, SynEditPlugins, SynEditPointClasses, SynEditRegexSearch, SynEditSearch, - SynEditStrConst, SynEditTextBase, SynEditTextBuffer, SynEditTextBidiChars, - SynEditTextTabExpander, SynEditTextTrimmer, SynEditTypes, SynExportHTML, SynGutter, - SynGutterBase, SynGutterChanges, SynGutterCodeFolding, SynGutterLineNumber, - SynGutterLineOverview, SynGutterMarks, SynHighlighterAny, SynHighlighterCpp, - SynHighlighterCss, SynHighlighterDiff, SynHighlighterHashEntries, SynHighlighterHTML, - SynHighlighterJava, SynHighlighterJScript, SynHighlighterLFM, SynHighlighterMulti, - SynHighlighterPas, SynHighlighterPerl, SynHighlighterPHP, SynHighlighterPosition, - SynHighlighterPython, SynHighlighterSQL, SynHighlighterTeX, synhighlighterunixshellscript, - SynHighlighterVB, SynHighlighterXML, SynMacroRecorder, SynMemo, SynPluginSyncroEdit, - SynPluginSyncronizedEditBase, SynPluginTemplateEdit, LazSynEditText, LazSynTextArea, - SynRegExpr, SynTextDrawer, SynEditMarkupGutterMark, SynHighlighterBat, SynHighlighterIni, - SynEditMarkupSpecialChar, SynEditTextDoubleWidthChars, SynEditTextSystemCharWidth, - SynEditMarkupIfDef, LazarusPackageIntf; + SynEditHighlighterXMLBase, SynEditKeyCmds, LazSynEditMouseCmdsTypes, + SynHighlighterPo, SynEditLines, SynEditMarks, SynEditMarkup, + SynEditMarkupBracket, SynEditMarkupCtrlMouseLink, SynEditMarkupHighAll, + SynEditMarkupSelection, SynEditMarkupSpecialLine, SynEditMarkupWordGroup, + SynEditMiscClasses, SynEditMiscProcs, SynEditMouseCmds, SynEditPlugins, + SynEditPointClasses, SynEditRegexSearch, SynEditSearch, SynEditStrConst, + SynEditTextBase, SynEditTextBuffer, SynEditTextBidiChars, + SynEditTextTabExpander, SynEditTextTrimmer, SynEditTypes, SynExportHTML, + SynGutter, SynGutterBase, SynGutterChanges, SynGutterCodeFolding, + SynGutterLineNumber, SynGutterLineOverview, SynGutterMarks, + SynHighlighterAny, SynHighlighterCpp, SynHighlighterCss, SynHighlighterDiff, + SynHighlighterHashEntries, SynHighlighterHTML, SynHighlighterJava, + SynHighlighterJScript, SynHighlighterLFM, SynHighlighterMulti, + SynHighlighterPas, SynHighlighterPerl, SynHighlighterPHP, + SynHighlighterPosition, SynHighlighterPython, SynHighlighterSQL, + SynHighlighterTeX, synhighlighterunixshellscript, SynHighlighterVB, + SynHighlighterXML, SynMacroRecorder, SynMemo, SynPluginSyncroEdit, + SynPluginSyncronizedEditBase, SynPluginTemplateEdit, LazSynEditText, + LazSynTextArea, SynRegExpr, SynTextDrawer, SynEditMarkupGutterMark, + SynHighlighterBat, SynHighlighterIni, SynEditMarkupSpecialChar, + SynEditTextDoubleWidthChars, SynEditTextSystemCharWidth, SynEditMarkupIfDef, + SynPluginMultiCaret, synhighlighterpike, LazarusPackageIntf; implementation diff -Nru lazarus-1.4.4+dfsg/components/synedit/design/Makefile.fpc lazarus-1.6+dfsg/components/synedit/design/Makefile.fpc --- lazarus-1.4.4+dfsg/components/synedit/design/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/design/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for SynEditDsgn 1.0 # -# This file was generated on 3-10-15 +# This file was generated on 1-10-15 [package] name=syneditdsgn diff -Nru lazarus-1.4.4+dfsg/components/synedit/design/syneditlazdsgn.pas lazarus-1.6+dfsg/components/synedit/design/syneditlazdsgn.pas --- lazarus-1.4.4+dfsg/components/synedit/design/syneditlazdsgn.pas 2013-10-05 04:36:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/design/syneditlazdsgn.pas 2015-03-31 22:52:08.000000000 +0000 @@ -81,7 +81,11 @@ procedure RegisterSynMemo; begin + {$IfDef WithSynMemo} RegisterComponents('SynEdit',[TSynMemo]); + {$Else} + RegisterNoIcon([TSynMemo]); + {$EndIF} end; procedure RegisterSynHighlighterPas; diff -Nru lazarus-1.4.4+dfsg/components/synedit/design/synpropertyeditobjectlist.pas lazarus-1.6+dfsg/components/synedit/design/synpropertyeditobjectlist.pas --- lazarus-1.4.4+dfsg/components/synedit/design/synpropertyeditobjectlist.pas 2014-06-15 11:52:37.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/design/synpropertyeditobjectlist.pas 2015-03-07 10:11:02.000000000 +0000 @@ -214,6 +214,7 @@ var CValue: Integer; begin + CValue:=0; if not IdentToSynMouseCmd(GetVisualValue, CValue) then Proc(GetVisualValue); GetEditorCommandValues(Proc); end; @@ -238,6 +239,7 @@ function TSynMouseCommandPropertyEditor.OrdValueToVisualValue(OrdValue: longint): string; begin + Result:=''; if not SynMouseCmdToIdent(OrdValue, Result) then Result := inherited OrdValueToVisualValue(OrdValue); end; @@ -248,6 +250,8 @@ CName: String; i: TSynEditorMouseCommand; begin + CValue:=0; + CName:=''; if not IdentToSynMouseCmd(GetVisualValue, CValue) then Proc(GetVisualValue); for i := 0 to emcMax do if SynMouseCmdToIdent(i, CName) then Proc(CName); @@ -257,6 +261,7 @@ var CValue: Integer; begin + CValue:=0; if IdentToSynMouseCmd(NewValue, CValue) then SetOrdValue(CValue) else inherited SetValue(NewValue); end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/docs/xml/synedittextbase.xml lazarus-1.6+dfsg/components/synedit/docs/xml/synedittextbase.xml --- lazarus-1.4.4+dfsg/components/synedit/docs/xml/synedittextbase.xml 2010-04-06 22:15:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/docs/xml/synedittextbase.xml 2016-01-04 15:04:42.000000000 +0000 @@ -54,7 +54,7 @@ <p>SynEdit needs no special knowledge about the Views, all Views have the same interface as the Textbuffer. This interface is defined in <link id="TSynEditStrings">TSynEditStrings</link>. Since Views act the same as the Textbuffer they can also be stacked, each View acting on the input/output of the next View. If a View does not need to modify a specific call to the textbuffer, it must simply forward it. A special base class provides the implementation: <link id="TSynEditStringsLinked">TSynEditStringsLinked</link> </p> <p>Views allow to implement certain Tasks in a single place, and often without the need of making any modification to the code in SynEdit.</p> - <p>In additon to the examples at the start of this doc, Views can also store additional data, which may not be needed (or wanted) to be written to the Textbuffer. An example for this is the trimming of trailing spaces. If the user inputs spaces at the end of line, they are treaded as uncommited text. They are stored in the View, untill they are either committed (along with other text entered after the spaces), or discarded (trimmed)</p> + <p>In additon to the examples at the start of this doc, Views can also store additional data, which may not be needed (or wanted) to be written to the Textbuffer. An example for this is the trimming of trailing spaces. If the user inputs spaces at the end of line, they are treaded as uncommitted text. They are stored in the View, until they are either committed (along with other text entered after the spaces), or discarded (trimmed)</p> <p/> <p/> <p>Todos:</p> diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.ca.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.ca.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.ca.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.ca.po 2015-03-23 22:22:49.000000000 +0000 @@ -225,6 +225,10 @@ msgid "Math Mode" msgstr "" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "" @@ -337,6 +341,10 @@ msgid "Section" msgstr "" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "" @@ -479,6 +487,14 @@ msgid "Quick Paste Selection" msgstr "" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "" @@ -507,10 +523,18 @@ msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.cs.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.cs.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.cs.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.cs.po 2015-03-23 22:22:49.000000000 +0000 @@ -227,6 +227,10 @@ msgid "Math Mode" msgstr "Matematický režim" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Zpráva" @@ -339,6 +343,10 @@ msgid "Section" msgstr "Sekce" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Mezerník" @@ -479,6 +487,14 @@ msgid "Quick Paste Selection" msgstr "Rychle vložit výběr" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Režim,Začít,Pokračovat" @@ -507,10 +523,18 @@ msgid "Drag Selection" msgstr "Uchop výběr" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Výběr řádky" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Výběr" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.de.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.de.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.de.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.de.po 2015-04-20 21:47:17.000000000 +0000 @@ -229,6 +229,10 @@ msgid "Math Mode" msgstr "Mathematischer Modus" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Nachricht" @@ -341,6 +345,10 @@ msgid "Section" msgstr "Abschnitt" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Leerzeichen" @@ -481,6 +489,14 @@ msgid "Quick Paste Selection" msgstr "Ausgewählten Text einfügen" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Modus,Beginn,Weiter" @@ -509,10 +525,18 @@ msgid "Drag Selection" msgstr "Auswahl verschieben" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Zeilenmodus" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Auswahl" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.es.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.es.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.es.po 2015-04-28 21:42:48.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.es.po 2015-12-21 23:08:28.000000000 +0000 @@ -227,6 +227,10 @@ msgid "Math Mode" msgstr "Modo Matemático" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "Unidad de medida" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Mensaje" @@ -339,6 +343,10 @@ msgid "Section" msgstr "Sección" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "Selector" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Espacio" @@ -479,6 +487,14 @@ msgid "Quick Paste Selection" msgstr "Pegado Rapido de Selección" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "Colocar puntos de inserción en EOL en las lineas seleccionadas" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Intercambiar punto de inserción extra" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Modo,Comenzar,Continuar" @@ -507,10 +523,18 @@ msgid "Drag Selection" msgstr "Arrastre la selección" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "\"Cursor de texto hacia arriba si no es arrastrado\",si,no" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Selección de línea" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "Selección de línea (selección inmediata)" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Selección" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.fi.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.fi.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.fi.po 2015-01-21 00:40:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.fi.po 2015-12-05 11:32:24.000000000 +0000 @@ -220,6 +220,10 @@ msgid "Math Mode" msgstr "Matematiikkamoodi" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "Mittayksikkö" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Viesti" @@ -332,6 +336,10 @@ msgid "Section" msgstr "Lohko" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "Valitsija" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Välilyönti" @@ -472,6 +480,14 @@ msgid "Quick Paste Selection" msgstr "Pika-liitä valinta" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "Aseta kursori valittujen rivien loppuun" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Vaihda toinen kursori" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Moodi,Ala,Jatka" @@ -500,10 +516,18 @@ msgid "Drag Selection" msgstr "Vedä valinta" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Rivivalinta" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "Rivivalinta (valitse heti)" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Valinta" @@ -574,31 +598,31 @@ #: syneditstrconst.syns_filteradsp21xx msgid "DSP Files (*.dsp,*.inc)|*.DSP;*.INC" -msgstr "" +msgstr "DSP tiedostot (*.dsp,*.inc)|*.DSP;*.INC" #: syneditstrconst.syns_filterasm68hc11 msgid "68HC11 Assembler Files (*.hc11,*.asm,*.asc)|*.HC11;*.ASM;*.ASC" -msgstr "" +msgstr "68HC11 Assembler tiedostot (*.hc11,*.asm,*.asc)|*.HC11;*.ASM;*.ASC" #: syneditstrconst.syns_filterawk msgid "AWK Script (*.awk)|*.awk" -msgstr "" +msgstr "AWK Script (*.awk)|*.awk" #: syneditstrconst.syns_filterbaan msgid "Baan 4GL Files (*.cln)|*.cln" -msgstr "" +msgstr "Baan 4GL tiedostot (*.cln)|*.cln" #: syneditstrconst.syns_filterbatch msgid "MS-DOS Batch Files (*.bat;*.cmd)|*.bat;*.cmd" -msgstr "" +msgstr "MS-DOS Batch tiedostot (*.bat;*.cmd)|*.bat;*.cmd" #: syneditstrconst.syns_filtercache msgid "Cache Files (*.mac,*.inc,*.int)|*.mac;*.inc;*.int" -msgstr "" +msgstr "Cache tiedostot (*.mac,*.inc,*.int)|*.mac;*.inc;*.int" #: syneditstrconst.syns_filtercaclipper msgid "CA-Clipper Files (*.prg,*.ch,*.inc)|*.prg;*.ch;*.inc" -msgstr "" +msgstr "CA-Clipper tiedostot (*.prg,*.ch,*.inc)|*.prg;*.ch;*.inc" #: syneditstrconst.syns_filtercorbaidl msgid "CORBA IDL files (*.idl)|*.idl" @@ -606,43 +630,43 @@ #: syneditstrconst.syns_filtercpm msgid "CPM reports (*.rdf,*.rif,*.rmf,*.rxf)|*.rdf;*.rif;*.rmf;*.rxf" -msgstr "" +msgstr "CPM raportit (*.rdf,*.rif,*.rmf,*.rxf)|*.rdf;*.rif;*.rmf;*.rxf" #: syneditstrconst.syns_filtercpp msgid "C++ Files (*.c,*.cpp,*.h,*.hpp,*.hh)|*.c;*.cpp;*.h;*.hpp;*.hh" -msgstr "" +msgstr "C++ tiedostot (*.c,*.cpp,*.h,*.hpp,*.hh)|*.c;*.cpp;*.h;*.hpp;*.hh" #: syneditstrconst.syns_filtercss msgid "Cascading Stylesheets (*.css)|*.css" -msgstr "" +msgstr "Kaskadiset tyyliohjeet (*.css)|*.css" #: syneditstrconst.syns_filterdfm msgid "Borland Form Files (*.dfm;*.xfm)|*.dfm;*.xfm" -msgstr "Borland Form tiedostot (*.dfm;*.xfm)|*.dfm;*.xfm" +msgstr "Borland lomake tiedostot (*.dfm;*.xfm)|*.dfm;*.xfm" #: syneditstrconst.syns_filterfortran msgid "Fortran Files (*.for)|*.for" -msgstr "" +msgstr "Fortran tiedostot (*.for)|*.for" #: syneditstrconst.syns_filterfoxpro msgid "Foxpro Files (*.prg)|*.prg" -msgstr "" +msgstr "Foxpro tiedostot (*.prg)|*.prg" #: syneditstrconst.syns_filtergalaxy msgid "Galaxy Files (*.gtv,*.galrep,*.txt)|*.gtv;*.galrep;*.txt" -msgstr "" +msgstr "Galaxy tiedostot (*.gtv,*.galrep,*.txt)|*.gtv;*.galrep;*.txt" #: syneditstrconst.syns_filtergembase msgid "GEMBASE Files (*.dml,*.gem)|*.DML;*.GEM" -msgstr "" +msgstr "GEMBASE tiedostot (*.dml,*.gem)|*.DML;*.GEM" #: syneditstrconst.syns_filtergws msgid "GW-TEL Script Files (*.gws)|*.gws" -msgstr "" +msgstr "GW-TEL Script tiedostot (*.gws)|*.gws" #: syneditstrconst.syns_filterhp48 msgid "HP48 Files (*.s,*.sou,*.a,*.hp)|*.s;*.sou;*.a;*.hp" -msgstr "" +msgstr "HP48 tiedostot (*.s,*.sou,*.a,*.hp)|*.s;*.sou;*.a;*.hp" #: syneditstrconst.syns_filterhtml msgid "HTML Document (*.htm,*.html)|*.htm;*.html" @@ -650,23 +674,23 @@ #: syneditstrconst.syns_filterini msgid "INI Files (*.ini)|*.ini" -msgstr "" +msgstr "INI tiedostot (*.ini)|*.ini" #: syneditstrconst.syns_filterinno msgid "Inno Setup Script Files (*.iss)|*.iss" -msgstr "" +msgstr "Inno Setup Script tiedostot (*.iss)|*.iss" #: syneditstrconst.syns_filterjava msgid "Java Files (*.java)|*.java" -msgstr "" +msgstr "Java tiedostot (*.java)|*.java" #: syneditstrconst.syns_filterjscript msgid "Javascript Files (*.js)|*.js" -msgstr "" +msgstr "Javascript tiedostot (*.js)|*.js" #: syneditstrconst.syns_filterkix msgid "KiXtart scripts (*.kix)|*.kix" -msgstr "" +msgstr "KiXtart scriptit (*.kix)|*.kix" #: syneditstrconst.syns_filterlfm msgid "Lazarus Form Files (*.lfm)|*.lfm" @@ -674,11 +698,11 @@ #: syneditstrconst.syns_filtermodelica msgid "Modelica Files (*.mo)|*.mo" -msgstr "" +msgstr "Modelica tiedostot (*.mo)|*.mo" #: syneditstrconst.syns_filtermodula3 msgid "Modula-3 Files (*.m3)|*.m3" -msgstr "" +msgstr "Modula-3 tiedostot (*.m3)|*.m3" #: syneditstrconst.syns_filterpascal msgid "Pascal Files (*.pas,*.dpr,*.dpk,*.inc)|*.pas;*.dpr;*.dpk;*.inc" @@ -686,23 +710,23 @@ #: syneditstrconst.syns_filterperl msgid "Perl Files (*.pl,*.pm,*.cgi)|*.pl;*.pm;*.cgi" -msgstr "" +msgstr "Perl tiedostot (*.pl,*.pm,*.cgi)|*.pl;*.pm;*.cgi" #: syneditstrconst.syns_filterphp msgid "PHP Files (*.php,*.php3,*.phtml,*.inc)|*.php;*.php3;*.phtml;*.inc" -msgstr "" +msgstr "PHP tiedostot (*.php,*.php3,*.phtml,*.inc)|*.php;*.php3;*.phtml;*.inc" #: syneditstrconst.syns_filterpo msgid "Po Files (*.po)|*.po" -msgstr "" +msgstr "Po tiedostot (*.po)|*.po" #: syneditstrconst.syns_filterprogress msgid "Progress Files (*.w,*.p,*.i)|*.w;*.p;*.i" -msgstr "" +msgstr "Progress tiedostot (*.w,*.p,*.i)|*.w;*.p;*.i" #: syneditstrconst.syns_filterpython msgid "Python Files (*.py)|*.py" -msgstr "" +msgstr "Python tiedostot (*.py)|*.py" #: syneditstrconst.syns_filterrtf msgid "Rich Text Format (*.rtf)|*.rtf" @@ -710,15 +734,15 @@ #: syneditstrconst.syns_filtersdd msgid "Semanta DD files (*.sdd)|*.sdd" -msgstr "" +msgstr "Semanta DD tiedostot (*.sdd)|*.sdd" #: syneditstrconst.syns_filtersml msgid "Standard ML Files (*.sml)|*.sml" -msgstr "" +msgstr "Standard ML tiedostot (*.sml)|*.sml" #: syneditstrconst.syns_filtersql msgid "SQL Files (*.sql)|*.sql" -msgstr "" +msgstr "SQL tiedostot (*.sql)|*.sql" #: syneditstrconst.syns_filtersyngenmsgfiles msgid "Msg files (*.msg)|*.msg" @@ -726,27 +750,27 @@ #: syneditstrconst.syns_filtertcltk msgid "Tcl/Tk Files (*.tcl)|*.tcl" -msgstr "" +msgstr "Tcl/Tk tiedostot (*.tcl)|*.tcl" #: syneditstrconst.syns_filtertex msgid "TeX Files (*.tex)|*.tex" -msgstr "" +msgstr "TeX tiedostot (*.tex)|*.tex" #: syneditstrconst.syns_filterunixshellscript msgid "UNIX Shell Scripts (*.sh)|*.sh" -msgstr "" +msgstr "UNIX Shell Scriptit (*.sh)|*.sh" #: syneditstrconst.syns_filtervbscript msgid "VBScript Files (*.vbs)|*.vbs" -msgstr "" +msgstr "VBScript tiedostot (*.vbs)|*.vbs" #: syneditstrconst.syns_filtervisualbasic msgid "Visual Basic Files (*.bas)|*.bas" -msgstr "" +msgstr "Visual Basic tiedostot (*.bas)|*.bas" #: syneditstrconst.syns_filterx86asm msgid "x86 Assembly Files (*.asm)|*.ASM" -msgstr "" +msgstr "x86 Assembly tiedostot (*.asm)|*.ASM" #: syneditstrconst.syns_filterxml msgid "XML Document (*.xml,*.xsd,*.xsl,*.xslt,*.dtd)|*.xml;*.xsd;*.xsl;*.xslt;*.dtd" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.fr.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.fr.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.fr.po 2015-04-23 11:59:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.fr.po 2015-12-21 23:08:28.000000000 +0000 @@ -9,7 +9,7 @@ "Last-Translator: Yann Mérignac <yann.merignac@laposte.net>\n" "Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: syneditstrconst.syns_attrannotation msgid "Annotation" @@ -227,6 +227,10 @@ msgid "Math Mode" msgstr "Mode maths" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "Unité de mesure" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Message" @@ -339,6 +343,10 @@ msgid "Section" msgstr "Section" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "Sélecteur" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Espace" @@ -479,6 +487,14 @@ msgid "Quick Paste Selection" msgstr "Sélection rapide pour coller" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "Placer les curseurs en fin de lignes dans les lignes sélectionnées" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Commuter le curseur supplémentaire" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Mode, Commencer, Continuer" @@ -507,10 +523,18 @@ msgid "Drag Selection" msgstr "Déplacer la sélection" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "Curseur sur place s'il n'est pas déplacé : oui, non" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Sélection de la ligne" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "Sélection de la ligne (immédiate)" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Sélection" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.he.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.he.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.he.po 2015-04-12 21:36:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.he.po 2015-04-12 21:11:35.000000000 +0000 @@ -225,6 +225,10 @@ msgid "Math Mode" msgstr "מצב מתמטי" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "הודעה" @@ -337,6 +341,10 @@ msgid "Section" msgstr "סעיף" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "רווח" @@ -477,6 +485,14 @@ msgid "Quick Paste Selection" msgstr "העתקה מהירה של הבחירה" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "מצב, התחלה, המשך" @@ -505,10 +521,18 @@ msgid "Drag Selection" msgstr "גרור את הבחירה" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "בחירת שורה" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "בחירה" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.hu.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.hu.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.hu.po 2015-04-23 11:59:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.hu.po 2015-06-04 21:26:04.000000000 +0000 @@ -227,6 +227,10 @@ msgid "Math Mode" msgstr "Matematikai mód" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "Mértékegység" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Üzenet" @@ -339,6 +343,10 @@ msgid "Section" msgstr "Szakasz" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "Választó" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Szóköz" @@ -479,6 +487,14 @@ msgid "Quick Paste Selection" msgstr "Kijelölés gyors beillesztése" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "Kurzorok elhelyezése a kijelölt sorok végein" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Extra kurzor ki/be" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Mód,Kezdés,Folytatás" @@ -507,10 +523,18 @@ msgid "Drag Selection" msgstr "Kijelölés húzása" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "\"Kurzor a felengedéshez ha nem volt húzás\",Igen,Nem" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Sor kijelölés" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "Sor kijelölése (közvetlenül)" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Kijelölés" @@ -778,4 +802,3 @@ #: syneditstrconst.syns_untitled msgid "Untitled" msgstr "Névtelen" - diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.id.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.id.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.id.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.id.po 2015-03-23 22:22:49.000000000 +0000 @@ -228,6 +228,10 @@ msgid "Math Mode" msgstr "" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "" @@ -340,6 +344,10 @@ msgid "Section" msgstr "" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "" @@ -482,6 +490,14 @@ msgid "Quick Paste Selection" msgstr "" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "" @@ -510,10 +526,18 @@ msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.it.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.it.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.it.po 2014-10-25 08:55:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.it.po 2015-03-23 22:22:49.000000000 +0000 @@ -228,6 +228,10 @@ msgid "Math Mode" msgstr "Modo matematica" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Messaggio" @@ -340,6 +344,10 @@ msgid "Section" msgstr "Sezione" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Spazio" @@ -480,6 +488,14 @@ msgid "Quick Paste Selection" msgstr "Selezione incolla veloce" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Modo,inizia,continua" @@ -508,10 +524,18 @@ msgid "Drag Selection" msgstr "Trascina la selezione" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Selezione riga" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Selezione" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.lt.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.lt.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.lt.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.lt.po 2015-04-20 21:47:17.000000000 +0000 @@ -227,6 +227,10 @@ msgid "Math Mode" msgstr "Matematikos veiksena" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Pranešimas" @@ -339,6 +343,10 @@ msgid "Section" msgstr "Sekcija" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Tarpas" @@ -479,6 +487,14 @@ msgid "Quick Paste Selection" msgstr "Spartusis atrankos įdėjimas" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Veiksena,Pradėti,Tęsti" @@ -507,10 +523,18 @@ msgid "Drag Selection" msgstr "Vilkti atranką" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Eilutės žymėjimas" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Žymėjimas" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.nl.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.nl.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.nl.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.nl.po 2015-03-23 22:22:49.000000000 +0000 @@ -225,6 +225,10 @@ msgid "Math Mode" msgstr "" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "" @@ -337,6 +341,10 @@ msgid "Section" msgstr "" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "" @@ -479,6 +487,14 @@ msgid "Quick Paste Selection" msgstr "" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "" @@ -507,10 +523,18 @@ msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.pl.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.pl.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.pl.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.pl.po 2015-03-23 22:22:49.000000000 +0000 @@ -229,6 +229,10 @@ msgid "Math Mode" msgstr "" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "" @@ -341,6 +345,10 @@ msgid "Section" msgstr "" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "" @@ -483,6 +491,14 @@ msgid "Quick Paste Selection" msgstr "" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "" @@ -511,10 +527,18 @@ msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Zaznaczenie wiersza" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Zaznaczenie" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.po 2015-03-23 22:22:49.000000000 +0000 @@ -217,6 +217,10 @@ msgid "Math Mode" msgstr "" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "" @@ -329,6 +333,10 @@ msgid "Section" msgstr "" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "" @@ -469,6 +477,14 @@ msgid "Quick Paste Selection" msgstr "" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "" @@ -497,10 +513,18 @@ msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.pt_BR.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.pt_BR.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.pt_BR.po 2014-08-05 23:02:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.pt_BR.po 2015-03-23 22:22:49.000000000 +0000 @@ -226,6 +226,10 @@ msgid "Math Mode" msgstr "Modo Aritmético" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Mensagem" @@ -338,6 +342,10 @@ msgid "Section" msgstr "Seção" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Espaço" @@ -478,6 +486,14 @@ msgid "Quick Paste Selection" msgstr "Colar Seleção Rapidamente" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Modo,Iniciar,Continuar" @@ -506,10 +522,18 @@ msgid "Drag Selection" msgstr "Arrastar Seleção" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Seleção Linha" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Seleção" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.ru.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.ru.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.ru.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.ru.po 2015-04-20 21:47:17.000000000 +0000 @@ -5,7 +5,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2013-09-04 23:26+0400\n" +"PO-Revision-Date: 2015-03-24 01:17+0300\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -225,6 +225,10 @@ msgid "Math Mode" msgstr "Математический режим" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "Единица измерения" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Сообщение" @@ -337,6 +341,10 @@ msgid "Section" msgstr "Секция" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "Селектор" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Фон" @@ -477,6 +485,14 @@ msgid "Quick Paste Selection" msgstr "Быстрая вставка выделенного" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "Устанавливать курсоры на концах выделенных строк" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Включить или выключить дополнительный курсор" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Режим,Начать,Продолжить" @@ -505,10 +521,18 @@ msgid "Drag Selection" msgstr "Перетаскивание выделенного" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "\"Курсор при отпускании кнопки мыши без перетаскивания\",да,нет" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Выбор строки" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "Выделение строки (немедленное)" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Выделение" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.uk.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.uk.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.uk.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.uk.po 2015-03-23 22:22:49.000000000 +0000 @@ -228,6 +228,10 @@ msgid "Math Mode" msgstr "Математичний Режим" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "Повідомлення" @@ -340,6 +344,10 @@ msgid "Section" msgstr "Секція" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "Пробіл" @@ -480,6 +488,14 @@ msgid "Quick Paste Selection" msgstr "Швидкий Вибір Вставки" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "Режим,Почати,Продовжити" @@ -508,10 +524,18 @@ msgid "Drag Selection" msgstr "Вибір Перетягування" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "Вибір Рядка" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "Вибір" diff -Nru lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.zh_CN.po lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.zh_CN.po --- lazarus-1.4.4+dfsg/components/synedit/languages/syneditstrconst.zh_CN.po 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/languages/syneditstrconst.zh_CN.po 2015-03-23 22:22:49.000000000 +0000 @@ -228,6 +228,10 @@ msgid "Math Mode" msgstr "" +#: syneditstrconst.syns_attrmeasurementunitvalue +msgid "Measurement unit" +msgstr "" + #: syneditstrconst.syns_attrmessage msgid "Message" msgstr "" @@ -340,6 +344,10 @@ msgid "Section" msgstr "" +#: syneditstrconst.syns_attrselectorvalue +msgid "Selector" +msgstr "" + #: syneditstrconst.syns_attrspace msgid "Space" msgstr "" @@ -482,6 +490,14 @@ msgid "Quick Paste Selection" msgstr "" +#: syneditstrconst.syns_emcpluginmulticaretselectiontocarets +msgid "Set carets at EOL in selected lines" +msgstr "" + +#: syneditstrconst.syns_emcpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + #: syneditstrconst.syns_emcselection_opt msgid "Mode,Begin,Continue" msgstr "" @@ -510,10 +526,18 @@ msgid "Drag Selection" msgstr "" +#: syneditstrconst.syns_emcstartdragmove_opt +msgid "\"Caret on up if not dragged\",yes,no" +msgstr "" + #: syneditstrconst.syns_emcstartlineselections msgid "Line Selection" msgstr "" +#: syneditstrconst.syns_emcstartlineselectionsnoneempty +msgid "Line Selection (select immediate)" +msgstr "" + #: syneditstrconst.syns_emcstartselection msgid "Selection" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/synedit/lazsynedittext.pas lazarus-1.6+dfsg/components/synedit/lazsynedittext.pas --- lazarus-1.4.4+dfsg/components/synedit/lazsynedittext.pas 2014-02-05 12:07:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/lazsynedittext.pas 2015-03-24 23:13:33.000000000 +0000 @@ -63,8 +63,10 @@ senrDecOwnedPaintLock, senrIncPaintLock, // Actual PaintLock senrDecPaintLock, - senrAfterIncPaintLock, // For plugins, etc... + senrBeforeIncPaintLock, // For plugins, etc... + senrAfterIncPaintLock, senrBeforeDecPaintLock, + senrAfterDecPaintLock, senrTextBufferChanging, // About to change senrTextBufferChanged ); diff -Nru lazarus-1.4.4+dfsg/components/synedit/lazsynimm.pas lazarus-1.6+dfsg/components/synedit/lazsynimm.pas --- lazarus-1.4.4+dfsg/components/synedit/lazsynimm.pas 2015-03-31 22:28:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/lazsynimm.pas 2015-12-04 01:52:52.000000000 +0000 @@ -9,8 +9,8 @@ interface uses - windows, imm, Classes, SysUtils, LazLoggerBase, LCLType, LCLProc, Controls, - Graphics, SynEditMiscClasses, SynTextDrawer, SynEditPointClasses, SynEditMarkupSelection, + windows, imm, Classes, SysUtils, Controls, LazLoggerBase, LCLType, LazUTF8, Graphics, + SynEditMiscClasses, SynTextDrawer, SynEditPointClasses, SynEditMarkupSelection, SynEditMarkup, SynEditTypes, SynEditKeyCmds, LazSynEditText, SynEditTextBase, SynEditMiscProcs; @@ -80,6 +80,8 @@ LazSynImeFull = class(LazSynIme) private + FAdjustLeftCharForTargets: Boolean; + FLeftPosForTarget, FRightPosForTarget: Integer; FImeBlockSelection, FImeBlockSelection2, FImeBlockSelection3: TSynEditSelection; // TODO: create a custom markup FImeMarkupSelection, FImeMarkupSelection2, FImeMarkupSelection3: TSynEditMarkupSelection; FInImeMsg: Boolean; @@ -97,6 +99,7 @@ procedure DoOnMouse(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure DoStatusChanged(Sender: TObject; Changes: TSynStatusChanges); + procedure EnsureLeftChar; protected procedure StopIme(Success: Boolean); override; public @@ -108,6 +111,8 @@ procedure WMImeStartComposition(var Msg: TMessage); override; procedure WMImeEndComposition(var Msg: TMessage); override; procedure FocusKilled; override; + public + property AdjustLeftCharForTargets: Boolean read FAdjustLeftCharForTargets write FAdjustLeftCharForTargets; end; implementation @@ -423,6 +428,23 @@ StopIme(True); end; +procedure LazSynImeFull.EnsureLeftChar; +var + r: Integer; +begin + if (FLeftPosForTarget < 1) or not FAdjustLeftCharForTargets then + exit; + + r := FRightPosForTarget - TCustomSynEdit(FriendEdit).CharsInWindow; + + if (TCustomSynEdit(FriendEdit).LeftChar < r) then + TCustomSynEdit(FriendEdit).LeftChar := r; + + if (TCustomSynEdit(FriendEdit).LeftChar > FLeftPosForTarget) then + TCustomSynEdit(FriendEdit).LeftChar := FLeftPosForTarget; + +end; + procedure LazSynImeFull.StopIme(Success: Boolean); begin inherited StopIme(Success); @@ -457,6 +479,7 @@ constructor LazSynImeFull.Create(AOwner: TSynEditBase); begin inherited Create(AOwner); + FAdjustLeftCharForTargets := True; FImeBlockSelection := TSynEditSelection.Create(ViewedTextBuffer, False); FImeBlockSelection.InvalidateLinesMethod := @InvalidateLines; @@ -474,13 +497,21 @@ TSynEditMarkupManager(MarkupMgr).AddMarkUp(FImeMarkupSelection3); FImeMarkupSelection.MarkupInfo.Clear; - FImeMarkupSelection.MarkupInfo.FramePriority := 999; + FImeMarkupSelection.MarkupInfo.FramePriority := MaxInt-1; FImeMarkupSelection.MarkupInfo.FrameColor := clDefault; FImeMarkupSelection.MarkupInfo.FrameStyle := slsDotted; FImeMarkupSelection.MarkupInfo.FrameEdges := sfeBottom; + // TODO: prevent any other frame in the active IME (as it distracts from IME underlines + // this includes left/right frame edges (can not currently be prevented) + + // prevent any underline + FImeMarkupSelection.MarkupInfo.StylePriority[fsUnderline] := MaxInt; + FImeMarkupSelection.MarkupInfo.Style:= []; + FImeMarkupSelection.MarkupInfo.StyleMask:= [fsUnderline]; + FImeMarkupSelection2.MarkupInfo.Clear; - FImeMarkupSelection2.MarkupInfo.FramePriority := 999+1; + FImeMarkupSelection2.MarkupInfo.FramePriority := MaxInt; FImeMarkupSelection2.MarkupInfo.FrameColor := clDefault; FImeMarkupSelection2.MarkupInfo.FrameStyle := slsSolid; FImeMarkupSelection2.MarkupInfo.FrameEdges := sfeBottom; @@ -725,11 +756,12 @@ if ((Msg.LParam and GCS_COMPATTR) <> 0) then begin //ATTR_INPUT = $00; // dotted undurline - //ATTR_TARGET_CONVERTED = $01; // full underline - //ATTR_CONVERTED = $02; // light underline + //ATTR_TARGET_CONVERTED = $01; // full underline (bold underline / double width line) + //ATTR_CONVERTED = $02; // light underline (single width line) //ATTR_TARGET_NOTCONVERTED = $03; // Show as selected ? //ATTR_INPUT_ERROR = $04; // ? none //ATTR_FIXEDCONVERTED = $05; // ? none + // low confidence => green underline. if imc = 0 then imc := ImmGetContext(FriendEdit.Handle); ImeCount := ImmGetCompositionStringW(imc, GCS_COMPATTR, nil, 0); @@ -737,6 +769,8 @@ DebugLn(['***** GCS_COMPATTR ', dbgHex(ImeCount)]); {$ENDIF} if ImeCount > 0 then begin + FLeftPosForTarget := -1; + FRightPosForTarget := -1; xy := FImeBlockSelection.StartLineBytePos; FImeBlockSelection2.StartLineBytePos := xy; FImeBlockSelection2.EndLineBytePos := xy; @@ -747,40 +781,38 @@ ImmGetCompositionStringW(imc, GCS_COMPATTR, p, ImeCount + 2); DebugLn(dbgMemRange(PByte( p), ImeCount)); i := 0; - while {%H-}i < ImeCount do begin + while longword(i) < ImeCount do begin if ord(p[i]) = ATTR_TARGET_CONVERTED then begin x := FImeBlockSelection.StartBytePos; xy.x := x + CharToByte(x, i); FImeBlockSelection2.StartLineBytePos := xy; + if (FLeftPosForTarget < 0) or (FLeftPosForTarget > xy.x) then + FLeftPosForTarget := xy.x; inc(i); - while {%H-}i < ImeCount do begin - if (ord(p[i]) <> ATTR_TARGET_CONVERTED) or (i = ImeCount-1) then begin - if (ord(p[i]) = ATTR_TARGET_CONVERTED) then - inc(i); - xy.x := x + CharToByte(x, i); - FImeBlockSelection2.EndLineBytePos := xy; - break; - end; + + while (longword(i) < ImeCount) and (ord(p[i]) = ATTR_TARGET_CONVERTED) do inc(i); - end; + xy.x := x + CharToByte(x, i); + FImeBlockSelection2.EndLineBytePos := xy; + if (FRightPosForTarget < 0) or (FRightPosForTarget < xy.x) then + FRightPosForTarget := xy.x; //break; end; if ord(p[i]) = ATTR_TARGET_NOTCONVERTED then begin x := FImeBlockSelection.StartBytePos; xy.x := x + CharToByte(x, i); + if (FLeftPosForTarget < 0) or (FLeftPosForTarget > xy.x) then + FLeftPosForTarget := xy.x; FImeBlockSelection3.StartLineBytePos := xy; inc(i); - while longword(i) < ImeCount do begin - if (ord(p[i]) <> ATTR_TARGET_NOTCONVERTED) or (i = ImeCount-1) then begin - if (ord(p[i]) = ATTR_TARGET_NOTCONVERTED) then - inc(i); - xy.x := x + CharToByte(x, i); - FImeBlockSelection3.EndLineBytePos := xy; - break; - end; + + while (longword(i) < ImeCount) and (ord(p[i]) = ATTR_TARGET_NOTCONVERTED) do inc(i); - end; + xy.x := x + CharToByte(x, i); + FImeBlockSelection3.EndLineBytePos := xy; + if (FRightPosForTarget < 0) or (FRightPosForTarget < xy.x) then + FRightPosForTarget := xy.x; //break; end; @@ -791,6 +823,15 @@ finally FreeMem(p, ImeCount + 2); end; + + if (FLeftPosForTarget > 0) and FAdjustLeftCharForTargets then begin + FLeftPosForTarget := ViewedTextBuffer.LogicalToPhysicalPos + (Point(FLeftPosForTarget, FImeBlockSelection.FirstLineBytePos.Y)).x; + if FRightPosForTarget > 0 then + FRightPosForTarget := ViewedTextBuffer.LogicalToPhysicalPos + (Point(FRightPosForTarget, FImeBlockSelection.FirstLineBytePos.Y)).x; + EnsureLeftChar; + end; end; end; @@ -822,13 +863,15 @@ ImeCount := ImmGetCompositionStringW(imc, GCS_CURSORPOS, nil, 0); {$IFDEF WinIMEDebug} - DebugLn(['--- GCS_CURSORPOS ', dbgs(ImeCount)]); + DebugLn(['--- GCS_CURSORPOS ', dbgs(ImeCount), ' FLeftPosForTarget=',FLeftPosForTarget]); {$ENDIF} - if ImeCount >= 0 then begin + if ImeCount >= 0 then begin // ToDo: Comparison is always True. ImeCount := ImeCount and $ffff; x := FImeBlockSelection.StartBytePos; x := x + CharToByte(x, ImeCount); CaretObj.CharPos := ViewedTextBuffer.LogicalToPhysicalPos(Point(x, FImeBlockSelection.StartLinePos)).x; + // TODO: this causes full repaints + EnsureLeftChar; end; end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/lazsyntextarea.pp lazarus-1.6+dfsg/components/synedit/lazsyntextarea.pp --- lazarus-1.4.4+dfsg/components/synedit/lazsyntextarea.pp 2015-03-17 02:44:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/lazsyntextarea.pp 2015-03-24 23:13:33.000000000 +0000 @@ -103,6 +103,7 @@ FCharWidth: integer; FLinesInWindow: Integer; fOnStatusChange: TStatusChangeEvent; + FTextSizeChangeList: TMethodList; FTextHeight: integer; FCanvas: TCanvas; @@ -153,6 +154,8 @@ function PixelsToRowColumn(Pixels: TPoint; aFlags: TSynCoordinateMappingFlags): TPoint; // ignores scmLimitToLines procedure FontChanged; + procedure AddTextSizeChangeHandler(AHandler: TNotifyEvent); + procedure RemoveTextSizeChangeHandler(AHandler: TNotifyEvent); // Settings controlled by SynEdit property Padding[Side: TLazSynBorderSide]: integer read GetPadding write SetPadding; @@ -1222,6 +1225,7 @@ i: TLazSynBorderSide; begin inherited Create(AOwner); + FTextSizeChangeList := TMethodList.Create; FTokenBreaker := TLazSynPaintTokenBreaker.Create; FTextDrawer := ATextDrawer; FTextDrawer.RegisterOnFontChangeHandler(@DoDrawerFontChanged); @@ -1243,6 +1247,7 @@ FTextDrawer.UnRegisterOnFontChangeHandler(@DoDrawerFontChanged); FreeAndNil(FPaintLineColor); FreeAndNil(FPaintLineColor2); + FreeAndNil(FTextSizeChangeList); inherited Destroy; end; @@ -1328,6 +1333,17 @@ if (Chg <> []) then fOnStatusChange(Self, Chg); end; + FTextSizeChangeList.CallNotifyEvents(Self); +end; + +procedure TLazSynTextArea.AddTextSizeChangeHandler(AHandler: TNotifyEvent); +begin + FTextSizeChangeList.Add(TMethod(AHandler)); +end; + +procedure TLazSynTextArea.RemoveTextSizeChangeHandler(AHandler: TNotifyEvent); +begin + FTextSizeChangeList.Remove(TMethod(AHandler)); end; procedure TLazSynTextArea.DoPaint(ACanvas: TCanvas; AClip: TRect); @@ -1545,8 +1561,10 @@ FEtoBuf := FTextDrawer.Eto; FEtoBuf.SetMinLength(Len + ATokenInfo.ExpandedExtraBytes + 1); c := FTextDrawer.GetCharWidth; + end + else + c := 0; e := 0; - end; CWLen := Length(CharWidths); diff -Nru lazarus-1.4.4+dfsg/components/synedit/Makefile.fpc lazarus-1.6+dfsg/components/synedit/Makefile.fpc --- lazarus-1.4.4+dfsg/components/synedit/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for SynEdit 1.0 # -# This file was generated on 3-10-15 +# This file was generated on 1-10-15 [package] name=synedit diff -Nru lazarus-1.4.4+dfsg/components/synedit/syncompletion.pas lazarus-1.6+dfsg/components/synedit/syncompletion.pas --- lazarus-1.4.4+dfsg/components/synedit/syncompletion.pas 2015-01-26 16:06:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syncompletion.pas 2015-11-12 17:01:27.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: syncompletion.pas 47526 2015-01-26 16:06:53Z martin $ +$Id: syncompletion.pas 50323 2015-11-12 17:01:27Z ondrej $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -44,10 +44,10 @@ interface uses - LCLProc, LCLIntf, LCLType, LMessages, Classes, Graphics, Forms, + LCLProc, LCLIntf, LCLType, LazUTF8, LMessages, Classes, Graphics, Forms, Controls, StdCtrls, ExtCtrls, Menus, SysUtils, types, SynEditMiscProcs, SynEditKeyCmds, SynEdit, SynEditTypes, SynEditPlugins - {$IF FPC_FULLVERSION >= 20701}, character, LazUTF8{$ENDIF}; + {$IF FPC_FULLVERSION >= 20701}, character{$ENDIF}; type TSynBaseCompletionPaintItem = @@ -251,6 +251,7 @@ TSynBaseCompletion = class(TLazSynMultiEditPlugin) private + FAutoUseSingleIdent: Boolean; Form: TSynBaseCompletionForm; FAddedPersistentCaret: boolean; FOnExecute: TNotifyEvent; @@ -354,6 +355,7 @@ write SetLongLineHintType default sclpExtendRightOnly; property DoubleClickSelects: Boolean read GetDoubleClickSelects write SetDoubleClickSelects default True; property ShowSizeDrag: Boolean read GetShowSizeDrag write SetShowSizeDrag default False; + property AutoUseSingleIdent: Boolean read FAutoUseSingleIdent write FAutoUseSingleIdent; end; { TSynCompletion } @@ -1316,6 +1318,7 @@ inherited Create(AOwner); Form := GetCompletionFormClass.Create(nil); // Do not create with owner, or the designer will make it visible Form.Width := FWidth; + FAutoUseSingleIdent := True; end; destructor TSynBaseCompletion.Destroy; @@ -1398,7 +1401,7 @@ CurrentString := s; if Assigned(OnExecute) then OnExecute(Self); - if (ItemList.Count=1) and Assigned(OnValidate) then begin + if (ItemList.Count=1) and Assigned(OnValidate) and FAutoUseSingleIdent then begin OnValidate(Form, '', []); exit; end; @@ -1732,6 +1735,7 @@ Value, CurLine: string; NewBlockBegin, NewBlockEnd: TPoint; LogCaret: TPoint; + HighlighterIdentChars: TSynIdentChars; begin //debugln('TSynCompletion.Validate ',dbgsName(Sender),' ',dbgs(Shift),' Position=',dbgs(Position)); F := Sender as TSynBaseCompletionForm; @@ -1741,11 +1745,17 @@ BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSynCompletion.Validate'){$ENDIF}; BeginUpdate; try + if Editor.Highlighter<>nil then + HighlighterIdentChars := Editor.Highlighter.IdentChars + else + HighlighterIdentChars := []; LogCaret := LogicalCaretXY; NewBlockBegin:=LogCaret; CurLine:=Lines[NewBlockBegin.Y - 1]; while (NewBlockBegin.X>1) and (NewBlockBegin.X-1<=length(CurLine)) - and (IsIdentifierChar(@CurLine[NewBlockBegin.X-1])) do + and ((IsIdentifierChar(@CurLine[NewBlockBegin.X-1])) + or (CurLine[NewBlockBegin.X-1] in HighlighterIdentChars)) + do dec(NewBlockBegin.X); //BlockBegin:=NewBlockBegin; if ssShift in Shift then begin @@ -1756,7 +1766,9 @@ NewBlockEnd := LogCaret; CurLine:=Lines[NewBlockEnd.Y - 1]; while (NewBlockEnd.X<=length(CurLine)) - and (IsIdentifierChar(@CurLine[NewBlockEnd.X])) do + and ((IsIdentifierChar(@CurLine[NewBlockEnd.X])) + or (CurLine[NewBlockEnd.X] in HighlighterIdentChars)) + do inc(NewBlockEnd.X); end; //debugln('TSynCompletion.Validate B Position=',dbgs(Position)); diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditexport.pas lazarus-1.6+dfsg/components/synedit/syneditexport.pas --- lazarus-1.4.4+dfsg/components/synedit/syneditexport.pas 2012-09-07 11:34:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditexport.pas 2015-09-16 11:10:38.000000000 +0000 @@ -29,7 +29,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: syneditexport.pas 38554 2012-09-07 11:34:35Z martin $ +$Id: syneditexport.pas 49838 2015-09-16 11:10:38Z bart $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -70,7 +70,6 @@ fBuffer: TMemoryStream; fFirstAttribute: boolean; procedure AssignFont(Value: TFont); - procedure SetExportAsText(Value: boolean); procedure SetFont(Value: TFont); procedure SetHighlighter(Value: TSynCustomHighlighter); procedure SetTitle(const Value: string); @@ -147,6 +146,7 @@ { Returns a string that has all the invalid chars of the output format replaced with the entries in the replacement array. } function ReplaceReservedChars(AToken: string; out IsSpace: boolean): string; + procedure SetExportAsText(Value: boolean); virtual; //TSynExportHtml needs to override it { Sets the token attribute of the next token to determine the changes of colors and font styles so the properties of the next token can be added to the output buffer. } @@ -272,6 +272,9 @@ procedure TSynCustomExporter.CopyToClipboardFormat(AFormat: UINT); begin fBuffer.Position:=0; + //if we don't clear the clipboard, external applications will only ever see the + //first Copy we put there + ClipBoard.Clear; ClipBoard.AddFormat(AFormat,fBuffer); end; @@ -330,7 +333,7 @@ if (i = Start.Y) and (X < Start.X) then UTF8Delete(Token, 1, Start.X - X); - X := X + l; // TODO: combound chars + X := X + l; // TODO: compound chars if Token = '' then continue; diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditfoldedview.pp lazarus-1.6+dfsg/components/synedit/syneditfoldedview.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditfoldedview.pp 2013-11-11 20:28:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditfoldedview.pp 2015-03-24 17:50:59.000000000 +0000 @@ -2680,6 +2680,7 @@ if not OnlyNested then RemoveNode(ANode.fData); + NestedLine := 0; If ANode.fData.Nested <> nil then begin (*Todo: should we mark the tree as NO balancing needed ???*) @@ -4923,6 +4924,7 @@ EndLvl, CurLvl: Array of integer; i, c, t, n, o: Integer; nd: TSynFoldNodeInfo; + procedure GetEndLvl(l: Integer); var i: integer; begin @@ -4939,11 +4941,18 @@ CurLvl[0] := EndLvl[0]; end; end; + begin hl := TSynCustomFoldHighlighter(HighLighter); if not assigned(hl) then - exit; + exit; // ToDo: Initialize Result + nd.LogXStart := 0; + nd.LogXEnd := 0; + nd.FoldAction := []; + nd.FoldType := Nil; + nd.FoldGroup := 0; + n := 0; if AType <> 0 then TypeCnt := 1 else diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedithighlighter.pp lazarus-1.6+dfsg/components/synedit/synedithighlighter.pp --- lazarus-1.4.4+dfsg/components/synedit/synedithighlighter.pp 2015-03-29 22:12:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedithighlighter.pp 2015-12-23 07:44:39.000000000 +0000 @@ -17,7 +17,7 @@ Contributors to the SynEdit and mwEdit projects are listed in the Contributors.txt file. -$Id: synedithighlighter.pp 48533 2015-03-29 22:12:43Z martin $ +$Id: synedithighlighter.pp 51002 2015-12-23 07:44:39Z ondrej $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -33,7 +33,7 @@ uses SysUtils, Classes, - Graphics, FileUtil, LCLProc, LCLIntf, LCLType, Registry, IniFiles, + Graphics, LazUTF8, LCLProc, LCLIntf, LCLType, Registry, IniFiles, SynEditTypes, SynEditTextBase; type @@ -1480,7 +1480,7 @@ function TSynCustomHighlighter.GetIdentChars: TSynIdentChars; begin - Result := [#33..#255]; + Result := ['_', 'A'..'Z', 'a'..'z', '0'..'9']; end; function TSynCustomHighlighter.GetEndOfLineAttribute: TSynHighlighterAttributes; diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditkeycmds.pp lazarus-1.6+dfsg/components/synedit/syneditkeycmds.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditkeycmds.pp 2015-01-26 16:06:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditkeycmds.pp 2015-10-17 01:39:01.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: syneditkeycmds.pp 47526 2015-01-26 16:06:53Z martin $ +$Id: syneditkeycmds.pp 50091 2015-10-17 01:39:01Z martin $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -149,8 +149,8 @@ ecColSelEditorBottom = ecEditorBottom + ecColumnSelection; ecColSelLineTextStart= ecLineTextStart + ecColumnSelection; - ecSelColCmdRangeStart = ecLeft + ecColumnSelection; - ecSelColCmdRangeEnd = ecLeft + ecColumnSelection + 48; // 1 less for ecSelectAll + ecSelColCmdRangeStart = ecColumnSelection; + ecSelColCmdRangeEnd = ecColumnSelection + 48; // 1 less for ecSelectAll ecSelectAll = 199; // Select entire contents of editor, cursor to end @@ -229,6 +229,10 @@ EcUnFoldCurrent = 382; EcToggleMarkupWord = 383; + ecZoomOut = 400; + ecZoomIn = 401; + ecZoomNorm = 402; + ecDeleteLastChar = 501; // Delete last char (i.e. backspace key) ecDeleteChar = 502; // Delete char at cursor (i.e. delete key) ecDeleteWord = 503; // Delete from cursor to end of word @@ -277,6 +281,7 @@ ecPluginFirstCompletion = 19000; ecPluginFirstSyncro = 19010; ecPluginFirstTemplEdit = 19030; + ecPluginFirstMultiCaret = 19050; ecPluginFirst = 20000; @@ -1253,6 +1258,7 @@ finalization ExtraIdentToIntFn := nil; ExtraIntToIdentFn := nil; + ExtraGetEditorCommandValues := nil; end. diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedit.lpk lazarus-1.6+dfsg/components/synedit/synedit.lpk --- lazarus-1.4.4+dfsg/components/synedit/synedit.lpk 2013-05-06 14:10:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedit.lpk 2015-03-14 10:42:05.000000000 +0000 @@ -1,8 +1,9 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <Package Version="4"> <PathDelim Value="\"/> <Name Value="SynEdit"/> + <Type Value="RunAndDesignTime"/> <Author Value="Lazarus Team, SynEdit"/> <CompilerOptions> <Version Value="11"/> @@ -17,10 +18,9 @@ <ShowGenInfo Value="False"/> </Verbosity> <CompilerMessages> - <IgnoredMessages idx4055="True" idx5024="True"/> + <IgnoredMessages idx5024="True" idx4055="True"/> </CompilerMessages> <CustomOptions Value="$(IDEBuildOptions) -CR -dgc"/> - <CompilerPath Value="$(CompPath)"/> </Other> </CompilerOptions> <Description Value="SynEdit is a line-based editing component with support for syntax-highlighting. @@ -37,7 +37,7 @@ If you wish to allow use of your version of these files only under the terms of the GPL and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the GPL. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. "/> <Version Major="1"/> - <Files Count="81"> + <Files Count="83"> <Item1> <Filename Value="synbeautifier.pas"/> <UnitName Value="SynBeautifier"/> @@ -365,13 +365,20 @@ <Filename Value="syneditmarkupifdef.pp"/> <UnitName Value="syneditmarkupifdef"/> </Item81> + <Item82> + <Filename Value="synpluginmulticaret.pp"/> + <UnitName Value="SynPluginMultiCaret"/> + </Item82> + <Item83> + <Filename Value="synhighlighterpike.pas"/> + <UnitName Value="synhighlighterpike"/> + </Item83> </Files> <LazDoc Paths="docs\xml"/> <i18n> <EnableI18N Value="True"/> <OutDir Value="languages"/> </i18n> - <Type Value="RunAndDesignTime"/> <RequiredPkgs Count="1"> <Item1> <PackageName Value="LCL"/> diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditmarks.pp lazarus-1.6+dfsg/components/synedit/syneditmarks.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditmarks.pp 2013-08-03 18:39:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditmarks.pp 2015-03-24 17:50:59.000000000 +0000 @@ -826,7 +826,7 @@ function TSynEditMarkLineList.RemoveMark(Item: TSynEditMark): Integer; begin if Item.MarkLine = nil then - exit; + exit(-1); Result := Item.MarkLine.GetSizesBeforeSum; Result := Result + Item.MarkLine.Remove(Item); end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditmarkuphighall.pp lazarus-1.6+dfsg/components/synedit/syneditmarkuphighall.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditmarkuphighall.pp 2015-09-29 22:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditmarkuphighall.pp 2015-09-29 01:29:20.000000000 +0000 @@ -28,7 +28,7 @@ uses Classes, SysUtils, ExtCtrls, SynEditMarkup, SynEditTypes, SynEditSearch, SynEditMiscClasses, Controls, LCLProc, SynEditHighlighter, SynEditPointClasses, - SynEditMiscProcs, SynEditFoldedView, SynEditTextBase, LazClasses; + SynEditMiscProcs, SynEditFoldedView, SynEditTextBase, LazClasses, LazUTF8; type @@ -1371,6 +1371,8 @@ o: TSynSearchTerm; MatchBegin: PChar; begin + Len := 0; + MatchBegin := nil; while MatchIdx >= 0 do begin o := FTermDict[MatchIdx]; diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditmiscclasses.pp lazarus-1.6+dfsg/components/synedit/syneditmiscclasses.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditmiscclasses.pp 2014-02-05 12:07:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditmiscclasses.pp 2015-02-06 02:07:31.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: syneditmiscclasses.pp 43900 2014-02-05 12:07:46Z mattias $ +$Id: syneditmiscclasses.pp 47596 2015-02-06 02:07:31Z martin $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -89,12 +89,15 @@ property WhiteChars: TSynIdentChars read FWhiteChars write SetWhiteChars; end; + TLazSynSurface = class; + { TSynEditBase } TSynEditBase = class(TCustomControl) protected FWordBreaker: TSynWordBreaker; FBlockSelection: TSynEditSelection; + FScreenCaret: TSynEditScreenCaret; function GetMarkupMgr: TObject; virtual; abstract; function GetLines: TStrings; virtual; abstract; function GetCaretObj: TSynEditCaret; virtual; abstract; @@ -102,6 +105,7 @@ function GetViewedTextBuffer: TSynEditStrings; virtual; abstract; function GetFoldedTextBuffer: TObject; virtual; abstract; function GetTextBuffer: TSynEditStrings; virtual; abstract; + function GetPaintArea: TLazSynSurface; virtual; abstract; // TLazSynSurfaceManager property MarkupMgr: TObject read GetMarkupMgr; property FoldedTextBuffer: TObject read GetFoldedTextBuffer; // TSynEditFoldedView @@ -123,6 +127,8 @@ function GetIsRedoing: Boolean; function GetIsUndoing: Boolean; function GetMarkupMgr: TObject; + function GetPaintArea: TLazSynSurface; // TLazSynSurfaceManager + function GetScreenCaret: TSynEditScreenCaret; function GetSelectionObj: TSynEditSelection; function GetTextBuffer: TSynEditStrings; function GetViewedTextBuffer: TSynEditStrings; @@ -133,7 +139,9 @@ property ViewedTextBuffer: TSynEditStrings read GetViewedTextBuffer; // As viewed internally (with uncommited spaces / TODO: expanded tabs, folds). This may change, use with care property TextBuffer: TSynEditStrings read GetTextBuffer; // (TSynEditStringList) property CaretObj: TSynEditCaret read GetCaretObj; + property ScreenCaret: TSynEditScreenCaret read GetScreenCaret; // TODO: should not be exposed property SelectionObj: TSynEditSelection read GetSelectionObj; + property PaintArea: TLazSynSurface read GetPaintArea; // TLazSynSurfaceManager property MarkupMgr: TObject read GetMarkupMgr; property IsUndoing: Boolean read GetIsUndoing; property IsRedoing: Boolean read GetIsRedoing; @@ -308,6 +316,7 @@ TLazSynSurface = class private FBounds: TRect; + FBoundsChangeList: TMethodList; FDisplayView: TLazSynDisplayView; FOwner: TWinControl; function GetHandle: HWND; @@ -319,7 +328,11 @@ property Handle: HWND read GetHandle; public constructor Create(AOwner: TWinControl); + destructor Destroy; override; procedure Assign(Src: TLazSynSurface); virtual; + procedure AddBoundsChangeHandler(AHandler: TNotifyEvent); + procedure RemoveBoundsChangeHandler(AHandler: TNotifyEvent); + procedure Paint(ACanvas: TCanvas; AClip: TRect); procedure InvalidateLines(FirstTextLine, LastTextLine: TLineIdx); virtual; procedure SetBounds(ATop, ALeft, ABottom, ARight: Integer); @@ -616,6 +629,16 @@ Result := FFriendEdit.MarkupMgr; end; +function TSynEditFriend.GetPaintArea: TLazSynSurface; +begin + Result := FFriendEdit.GetPaintArea; +end; + +function TSynEditFriend.GetScreenCaret: TSynEditScreenCaret; +begin + Result := FFriendEdit.FScreenCaret; +end; + function TSynEditFriend.GetSelectionObj: TSynEditSelection; begin Result := FFriendEdit.FBlockSelection; @@ -1239,6 +1262,13 @@ constructor TLazSynSurface.Create(AOwner: TWinControl); begin FOwner := AOwner; + FBoundsChangeList := TMethodList.Create; +end; + +destructor TLazSynSurface.Destroy; +begin + inherited Destroy; + FreeAndNil(FBoundsChangeList); end; procedure TLazSynSurface.Assign(Src: TLazSynSurface); @@ -1247,6 +1277,16 @@ DisplayView := Src.DisplayView; end; +procedure TLazSynSurface.AddBoundsChangeHandler(AHandler: TNotifyEvent); +begin + FBoundsChangeList.Add(TMethod(AHandler)); +end; + +procedure TLazSynSurface.RemoveBoundsChangeHandler(AHandler: TNotifyEvent); +begin + FBoundsChangeList.Remove(TMethod(AHandler)); +end; + procedure TLazSynSurface.Paint(ACanvas: TCanvas; AClip: TRect); begin if (AClip.Left >= Bounds.Right) or @@ -1280,6 +1320,7 @@ FBounds.Right := ARight; FBounds.Bottom := ABottom; BoundsChanged; + FBoundsChangeList.CallNotifyEvents(Self); end; { TSynBookMarkOpt } diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditmousecmds.pp lazarus-1.6+dfsg/components/synedit/syneditmousecmds.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditmousecmds.pp 2015-01-26 16:06:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditmousecmds.pp 2015-03-07 14:10:39.000000000 +0000 @@ -35,8 +35,8 @@ interface uses - LazSynEditMouseCmdsTypes, Classes, Controls, SysUtils, SynEditStrConst, SynEditPointClasses, Dialogs, - LCLProc, Menus; + LazSynEditMouseCmdsTypes, Classes, Controls, SysUtils, SynEditStrConst, SynEditPointClasses, + SynEditKeyCmds, Dialogs, LCLProc, Menus; type @@ -56,9 +56,19 @@ TSynMouseButton = LazSynEditMouseCmdsTypes.TSynMouseButton; TSynMAClickCount = (ccSingle, ccDouble, ccTriple, ccQuad, ccAny); TSynMAClickDir = (cdUp, cdDown); + TSynMAUpRestriction = ( // Restrict cdUp + crLastDownPos, // check if the lasth MouseDown had same Pos (as in would have triggered the same command) + crLastDownPosSameLine, // check if the last dow + crLastDownPosSearchAll, // allow to find downclick at lower priority or parent list + crLastDownButton, crLastDownShift, // check if the lasth MouseDown had same Button / Shift + crAllowFallback // If action is restricted, continue search for up action in (fallback, or parent list) + ); + TSynMAUpRestrictions = set of TSynMAUpRestriction; ESynMouseCmdError = class(Exception); const + crRestrictAll = [crLastDownPos, crLastDownPosSameLine, crLastDownButton, crLastDownShift]; + mbXLeft = LazSynEditMouseCmdsTypes.mbLeft; mbXRight = LazSynEditMouseCmdsTypes.mbRight; mbXMiddle = LazSynEditMouseCmdsTypes.mbMiddle; @@ -100,6 +110,7 @@ TSynEditMouseAction = class(TCollectionItem) private + FButtonUpRestrictions: TSynMAUpRestrictions; FClickDir: TSynMAClickDir; FIgnoreUpClick: Boolean; FOption: TSynEditorMouseCommandOpt; @@ -111,6 +122,7 @@ FCommand: TSynEditorMouseCommand; FMoveCaret: Boolean; procedure SetButton(const AValue: TSynMouseButton); + procedure SetButtonUpRestrictions(AValue: TSynMAUpRestrictions); procedure SetClickCount(const AValue: TSynMAClickCount); procedure SetClickDir(AValue: TSynMAClickDir); procedure SetCommand(const AValue: TSynEditorMouseCommand); @@ -138,11 +150,14 @@ property Button: TSynMouseButton read FButton write SetButton default mbXLeft; property ClickCount: TSynMAClickCount read FClickCount write SetClickCount default ccSingle; property ClickDir: TSynMAClickDir read FClickDir write SetClickDir default cdUp; + property ButtonUpRestrictions: TSynMAUpRestrictions + read FButtonUpRestrictions write SetButtonUpRestrictions default []; property Command: TSynEditorMouseCommand read FCommand write SetCommand; property MoveCaret: Boolean read FMoveCaret write SetMoveCaret default False; property IgnoreUpClick: Boolean read FIgnoreUpClick write SetIgnoreUpClick default False; // only for mouse down property Option: TSynEditorMouseCommandOpt read FOption write SetOption default 0; property Option2: Integer read FOption2 write SetOption2 default 0; + // Priority: 0 = highest / MaxInt = lowest property Priority: TSynEditorMouseCommandOpt read FPriority write SetPriority default 0; end; @@ -177,7 +192,16 @@ const AOpt: TSynEditorMouseCommandOpt = 0; const APrior: Integer = 0; const AOpt2: integer = 0; - const AIgnoreUpClick: Boolean = False); + const AIgnoreUpClick: Boolean = False); overload; + procedure AddCommand(const ACmd: TSynEditorMouseCommand; + const AMoveCaret: Boolean; + const AButton: TSynMouseButton; const AClickCount: TSynMAClickCount; + const ADir: TSynMAClickDir; const AnUpRestrict: TSynMAUpRestrictions; + const AShift, AShiftMask: TShiftState; + const AOpt: TSynEditorMouseCommandOpt = 0; + const APrior: Integer = 0; + const AOpt2: integer = 0; + const AIgnoreUpClick: Boolean = False); overload; public property Items[Index: Integer]: TSynEditMouseAction read GetItem write SetItem; default; @@ -239,6 +263,7 @@ emcStartSelections = TSynEditorMouseCommand(1); // Start BlockSelection (Default Left Mouse Btn) emcStartColumnSelections = TSynEditorMouseCommand(3); // Column BlockSelection (Default Alt - Left Mouse Btn) emcStartLineSelections = TSynEditorMouseCommand(4); // Line BlockSelection (Default Alt - Left Mouse Btn) + emcStartLineSelectionsNoneEmpty = TSynEditorMouseCommand(5); // Line BlockSelection (Default Alt - Left Mouse Btn) emcSelectWord = TSynEditorMouseCommand(6); emcSelectLine = TSynEditorMouseCommand(7); @@ -277,6 +302,7 @@ emcMax = 29; emcPluginFirstSyncro = 19000; + emcPluginFirstMultiCaret = 19010; emcPluginFirst = 20000; // Options @@ -288,6 +314,9 @@ emcoMouseLinkShow = TSynEditorMouseCommandOpt(0); emcoMouseLinkHide = TSynEditorMouseCommandOpt(1); + emcoNotDragedSetCaretOnUp = TSynEditorMouseCommandOpt(0); + emcoNotDragedNoCaretOnUp = TSynEditorMouseCommandOpt(1); + emcoCodeFoldCollapsOne = TSynEditorMouseCommandOpt(0); emcoCodeFoldCollapsAll = TSynEditorMouseCommandOpt(1); emcoCodeFoldCollapsAtCaret = TSynEditorMouseCommandOpt(2); @@ -305,6 +334,9 @@ emcoWheelScrollPages = TSynEditorMouseCommandOpt(2); // Opt2 > 0 ==> percentage emcoWheelScrollPagesLessOne = TSynEditorMouseCommandOpt(3); // Opt2 > 0 ==> percentage +type + TMouseCmdNameAndOptProcs = function(emc: TSynEditorMouseCommand): String; + // Plugins don't know of other plugins, so they need to map the codes // Plugins all start at ecPluginFirst (overlapping) // If ask by SynEdit they add an offset @@ -315,8 +347,14 @@ function MouseCommandName(emc: TSynEditorMouseCommand): String; function MouseCommandConfigName(emc: TSynEditorMouseCommand): String; -function SynMouseCmdToIdent(SynMouseCmd: Longint; out Ident: String): Boolean; -function IdentToSynMouseCmd(const Ident: string; out SynMouseCmd: Longint): Boolean; +function SynMouseCmdToIdent(SynMouseCmd: Longint; var Ident: String): Boolean; +function IdentToSynMouseCmd(const Ident: string; var SynMouseCmd: Longint): Boolean; +procedure GetEditorMouseCommandValues(Proc: TGetStrProc); + +procedure RegisterMouseCmdIdentProcs(IdentToIntFn: TIdentToInt; IntToIdentFn: TIntToIdent); +procedure RegisterExtraGetEditorMouseCommandValues(AProc: TGetEditorCommandValuesProc); + +procedure RegisterMouseCmdNameAndOptProcs(ANamesProc: TMouseCmdNameAndOptProcs; AOptProc: TMouseCmdNameAndOptProcs = nil); const SYNEDIT_LINK_MODIFIER = {$IFDEF LCLcarbon}ssMeta{$ELSE}ssCtrl{$ENDIF}; @@ -324,29 +362,30 @@ implementation const - SynMouseCommandNames: array [0..27] of TIdentMapEntry = ( - (Value: emcNone; Name: 'emcNone'), - (Value: emcStartSelections; Name: 'emcStartSelections'), + SynMouseCommandNames: array [0..28] of TIdentMapEntry = ( + (Value: emcNone; Name: 'emcNone'), + (Value: emcStartSelections; Name: 'emcStartSelections'), (Value: emcStartColumnSelections; Name: 'emcStartColumnSelections'), - (Value: emcStartLineSelections; Name: 'emcStartLineSelections'), + (Value: emcStartLineSelections; Name: 'emcStartLineSelections'), + (Value: emcStartLineSelectionsNoneEmpty; Name: 'emcStartLineSelectionsNoneEmpty'), - (Value: emcSelectWord; Name: 'emcSelectWord'), - (Value: emcSelectLine; Name: 'emcSelectLine'), - (Value: emcSelectPara; Name: 'emcSelectPara'), + (Value: emcSelectWord; Name: 'emcSelectWord'), + (Value: emcSelectLine; Name: 'emcSelectLine'), + (Value: emcSelectPara; Name: 'emcSelectPara'), - (Value: emcStartDragMove; Name: 'emcStartDragMove'), - (Value: emcPasteSelection; Name: 'emcPasteSelection'), - (Value: emcMouseLink; Name: 'emcMouseLink'), + (Value: emcStartDragMove; Name: 'emcStartDragMove'), + (Value: emcPasteSelection; Name: 'emcPasteSelection'), + (Value: emcMouseLink; Name: 'emcMouseLink'), - (Value: emcContextMenu; Name: 'emcContextMenu'), + (Value: emcContextMenu; Name: 'emcContextMenu'), - (Value: emcOnMainGutterClick; Name: 'emcOnMainGutterClick'), + (Value: emcOnMainGutterClick; Name: 'emcOnMainGutterClick'), - (Value: emcCodeFoldCollaps; Name: 'emcCodeFoldCollaps'), - (Value: emcCodeFoldExpand; Name: 'emcCodeFoldExpand'), - (Value: emcCodeFoldContextMenu; Name: 'emcCodeFoldContextMenu'), + (Value: emcCodeFoldCollaps; Name: 'emcCodeFoldCollaps'), + (Value: emcCodeFoldExpand; Name: 'emcCodeFoldExpand'), + (Value: emcCodeFoldContextMenu; Name: 'emcCodeFoldContextMenu'), - (Value: emcSynEditCommand; Name: 'emcSynEditCommand'), + (Value: emcSynEditCommand; Name: 'emcSynEditCommand'), (Value: emcWheelScrollDown; Name: 'emcWheelScrollDown'), (Value: emcWheelScrollUp; Name: 'emcWheelScrollUp'), @@ -355,16 +394,23 @@ (Value: emcWheelHorizScrollDown; Name: 'emcWheelHorizScrollDown'), (Value: emcWheelHorizScrollUp; Name: 'emcWheelHorizScrollUp'), - (Value: emcWheelZoomOut; Name: 'emcWheelZoomOut'), - (Value: emcWheelZoomIn; Name: 'emcWheelZoomIn'), - (Value: emcWheelZoomNorm; Name: 'emcWheelZoomNorm'), - - (Value: emcStartSelectTokens; Name: 'emcStartSelectTokens'), - (Value: emcStartSelectWords; Name: 'emcStartSelectWords'), - (Value: emcStartSelectLines; Name: 'emcStartSelectLines') + (Value: emcWheelZoomOut; Name: 'emcWheelZoomOut'), + (Value: emcWheelZoomIn; Name: 'emcWheelZoomIn'), + (Value: emcWheelZoomNorm; Name: 'emcWheelZoomNorm'), + + (Value: emcStartSelectTokens; Name: 'emcStartSelectTokens'), + (Value: emcStartSelectWords; Name: 'emcStartSelectWords'), + (Value: emcStartSelectLines; Name: 'emcStartSelectLines') ); +var + ExtraIdentToIntFn: Array of TIdentToInt = nil; + ExtraIntToIdentFn: Array of TIntToIdent = nil; + ExtraGetEditorCommandValues: Array of TGetEditorCommandValuesProc = nil; + ExtraMouseCmdNameFn: Array of TMouseCmdNameAndOptProcs = nil; + ExtraMouseCmdOptFn: Array of TMouseCmdNameAndOptProcs = nil; + function AllocatePluginMouseRange(Count: Integer; OffsetOnly: Boolean = False): integer; const CurOffset : integer = 0; @@ -376,12 +422,15 @@ end; function MouseCommandName(emc: TSynEditorMouseCommand): String; +var + i: Integer; begin case emc of emcNone: Result := SYNS_emcNone; emcStartSelections: Result := SYNS_emcStartSelection; emcStartColumnSelections: Result := SYNS_emcStartColumnSelections; emcStartLineSelections: Result := SYNS_emcStartLineSelections; + emcStartLineSelectionsNoneEmpty: Result := SYNS_emcStartLineSelectionsNoneEmpty; emcSelectWord: Result := SYNS_emcSelectWord; emcSelectLine: Result := SYNS_emcSelectLine; emcSelectPara: Result := SYNS_emcSelectPara; @@ -413,37 +462,118 @@ emcStartSelectWords: Result := SYNS_emcStartSelectWords; emcStartSelectLines: Result := SYNS_emcStartSelectLines; - else Result := '' + else begin + Result := ''; + i := 0; + while (i < length(ExtraMouseCmdNameFn)) and (Result = '') do begin + Result := ExtraMouseCmdNameFn[i](emc); + inc(i); + end; + end; end; end; function MouseCommandConfigName(emc: TSynEditorMouseCommand): String; +var + i: Integer; begin case emc of emcStartSelections, emcStartColumnSelections, - emcStartLineSelections: Result := SYNS_emcSelection_opt; + emcStartLineSelections, + emcStartLineSelectionsNoneEmpty: Result := SYNS_emcSelection_opt; emcSelectLine: Result := SYNS_emcSelectLine_opt; emcMouseLink: Result := SYNS_emcMouseLink_opt; + emcStartDragMove: Result := SYNS_emcStartDragMove_opt; emcCodeFoldCollaps: Result := SYNS_emcCodeFoldCollaps_opt; emcCodeFoldExpand: Result := SYNS_emcCodeFoldExpand_opt; emcContextMenu: Result := SYNS_emcContextMenuCaretMove_opt; emcWheelScrollDown..emcWheelVertScrollUp: Result := SYNS_emcWheelScroll_opt; - else Result := '' + else begin + Result := ''; + i := 0; + while (i < length(ExtraMouseCmdOptFn)) and (Result = '') do begin + Result := ExtraMouseCmdOptFn[i](emc); + inc(i); + end; + end; end; end; -function SynMouseCmdToIdent(SynMouseCmd: Longint; out Ident: String): Boolean; +function SynMouseCmdToIdent(SynMouseCmd: Longint; var Ident: String): Boolean; +var + i: Integer; begin Ident := ''; Result := IntToIdent(SynMouseCmd, Ident, SynMouseCommandNames); + i := 0; + while (i < length(ExtraIntToIdentFn)) and (not Result) do begin + Result := ExtraIntToIdentFn[i](SynMouseCmd, Ident); + inc(i); + end; end; -function IdentToSynMouseCmd(const Ident: string; out SynMouseCmd: Longint): Boolean; +function IdentToSynMouseCmd(const Ident: string; var SynMouseCmd: Longint): Boolean; +var + i: Integer; begin SynMouseCmd := 0; Result := IdentToInt(Ident, SynMouseCmd, SynMouseCommandNames); + i := 0; + while (i < length(ExtraIdentToIntFn)) and (not Result) do begin + Result := ExtraIdentToIntFn[i](Ident, SynMouseCmd); + inc(i); + end; +end; + +procedure GetEditorMouseCommandValues(Proc: TGetStrProc); +var + i: Integer; +begin + for i := Low(SynMouseCommandNames) to High(SynMouseCommandNames) do + Proc(SynMouseCommandNames[I].Name); + i := 0; + while (i < length(ExtraGetEditorCommandValues)) do begin + ExtraGetEditorCommandValues[i](Proc); + inc(i); + end; +end; + +procedure RegisterMouseCmdIdentProcs(IdentToIntFn: TIdentToInt; IntToIdentFn: TIntToIdent); +var + i: Integer; +begin + i := length(ExtraIdentToIntFn); + SetLength(ExtraIdentToIntFn, i + 1); + ExtraIdentToIntFn[i] := IdentToIntFn; + i := length(ExtraIntToIdentFn); + SetLength(ExtraIntToIdentFn, i + 1); + ExtraIntToIdentFn[i] := IntToIdentFn; +end; + +procedure RegisterExtraGetEditorMouseCommandValues(AProc: TGetEditorCommandValuesProc); +var + i: Integer; +begin + i := length(ExtraGetEditorCommandValues); + SetLength(ExtraGetEditorCommandValues, i + 1); + ExtraGetEditorCommandValues[i] := AProc; +end; + +procedure RegisterMouseCmdNameAndOptProcs(ANamesProc: TMouseCmdNameAndOptProcs; + AOptProc: TMouseCmdNameAndOptProcs); +var + i: Integer; +begin + i := length(ExtraMouseCmdNameFn); + SetLength(ExtraMouseCmdNameFn, i + 1); + ExtraMouseCmdNameFn[i] := ANamesProc; + if AOptProc = nil then + exit; + i := length(ExtraMouseCmdOptFn); + SetLength(ExtraMouseCmdOptFn, i + 1); + ExtraMouseCmdOptFn[i] := AOptProc; end; { TSynEditMouseInternalActions } @@ -526,6 +656,14 @@ ClickDir := cdDown; end; +procedure TSynEditMouseAction.SetButtonUpRestrictions(AValue: TSynMAUpRestrictions); +begin + if FButtonUpRestrictions = AValue then Exit; + FButtonUpRestrictions := AValue; + if Collection <> nil then + TSynEditMouseActions(Collection).AssertNoConflict(self); +end; + procedure TSynEditMouseAction.SetClickCount(const AValue: TSynMAClickCount); begin if FClickCount = AValue then exit; @@ -620,6 +758,7 @@ FCommand := TSynEditMouseAction(Source).Command; FClickCount := TSynEditMouseAction(Source).ClickCount; FClickDir := TSynEditMouseAction(Source).ClickDir; + FButtonUpRestrictions := TSynEditMouseAction(Source).ButtonUpRestrictions; FButton := TSynEditMouseAction(Source).Button; FShift := TSynEditMouseAction(Source).Shift; FShiftMask := TSynEditMouseAction(Source).ShiftMask; @@ -689,6 +828,7 @@ Result := (Other.Button = self.Button) and (Other.ClickCount = self.ClickCount) and (Other.ClickDir = self.ClickDir) + and (Other.ButtonUpRestrictions = self.ButtonUpRestrictions) and (Other.Shift = self.Shift) and (Other.ShiftMask = self.ShiftMask) and (Other.Priority = self.Priority) @@ -845,6 +985,17 @@ const AClickCount: TSynMAClickCount; const ADir: TSynMAClickDir; const AShift, AShiftMask: TShiftState; const AOpt: TSynEditorMouseCommandOpt = 0; const APrior: Integer = 0; const AOpt2: integer = 0; const AIgnoreUpClick: Boolean = False); +begin + AddCommand(ACmd, AMoveCaret, AButton, AClickCount, ADir, [], AShift, AShiftMask, AOpt, APrior, + AOpt2, AIgnoreUpClick); +end; + +procedure TSynEditMouseActions.AddCommand(const ACmd: TSynEditorMouseCommand; + const AMoveCaret: Boolean; const AButton: TSynMouseButton; + const AClickCount: TSynMAClickCount; const ADir: TSynMAClickDir; + const AnUpRestrict: TSynMAUpRestrictions; const AShift, AShiftMask: TShiftState; + const AOpt: TSynEditorMouseCommandOpt; const APrior: Integer; const AOpt2: integer; + const AIgnoreUpClick: Boolean); var new: TSynEditMouseAction; begin @@ -857,6 +1008,7 @@ Button := AButton; ClickCount := AClickCount; ClickDir := ADir; + ButtonUpRestrictions := AnUpRestrict; Shift := AShift; ShiftMask := AShiftMask; Option := AOpt; @@ -927,7 +1079,14 @@ end; initialization - RegisterIntegerConsts(TypeInfo(TSynEditorMouseCommand), TIdentToInt(@IdentToSynMouseCmd), TIntToIdent(@SynMouseCmdToIdent)); + RegisterIntegerConsts(TypeInfo(TSynEditorMouseCommand), @IdentToSynMouseCmd, @SynMouseCmdToIdent); + +finalization + ExtraIdentToIntFn := nil; + ExtraIntToIdentFn := nil; + ExtraGetEditorCommandValues := nil; + ExtraMouseCmdNameFn := nil; + ExtraMouseCmdOptFn := nil; end. diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditplugins.pas lazarus-1.6+dfsg/components/synedit/syneditplugins.pas --- lazarus-1.4.4+dfsg/components/synedit/syneditplugins.pas 2012-06-25 22:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditplugins.pas 2015-03-24 17:50:59.000000000 +0000 @@ -26,7 +26,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: syneditplugins.pas 37782 2012-06-25 22:49:31Z martin $ +$Id: syneditplugins.pas 48478 2015-03-24 17:50:59Z juha $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -433,6 +433,7 @@ cCol: integer; iIdentChars: TSynIdentChars; begin + Result := ''; iString := CurrentEditor.LineText; if (CurrentEditor.CaretX > 1) and (CurrentEditor.CaretX -1 <= Length(iString)) then diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditpointclasses.pas lazarus-1.6+dfsg/components/synedit/syneditpointclasses.pas --- lazarus-1.4.4+dfsg/components/synedit/syneditpointclasses.pas 2015-05-19 23:45:18.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditpointclasses.pas 2016-02-13 12:40:25.000000000 +0000 @@ -36,7 +36,7 @@ interface uses - Classes, SysUtils, Controls, LCLProc, LCLType, LCLIntf, + Classes, SysUtils, Controls, LCLProc, LCLType, LCLIntf, ExtCtrls, Graphics, Forms, {$IFDEF SYN_MBCSSUPPORT} Imm, {$ENDIF} @@ -81,10 +81,20 @@ sbpStrong // selstart/end are treated as inside the block ); + TSynBeforeSetSelTextEvent = procedure(Sender: TObject; AMode: TSynSelectionMode; ANewText: PChar) of object; + + { TSynBeforeSetSelTextList } + + TSynBeforeSetSelTextList = Class(TMethodList) + public + procedure CallBeforeSetSelTextHandlers(Sender: TObject; AMode: TSynSelectionMode; ANewText: PChar); + end; + { TSynEditSelection } TSynEditSelection = class(TSynEditPointBase) private + FOnBeforeSetSelText: TSynBeforeSetSelTextList; FAutoExtend: Boolean; FCaret: TSynEditCaret; FHide: Boolean; @@ -93,6 +103,7 @@ FEnabled: Boolean; FHookedLines: Boolean; FIsSettingText: Boolean; + FForceSingleLineSelected: Boolean; FActiveSelectionMode: TSynSelectionMode; FSelectionMode: TSynSelectionMode; FStartLinePos: Integer; // 1 based @@ -112,10 +123,12 @@ function AdjustBytePosToCharacterStart(Line: integer; BytePos: integer): integer; function GetFirstLineBytePos: TPoint; function GetLastLineBytePos: TPoint; + function GetLastLineHasSelection: Boolean; procedure SetAutoExtend(AValue: Boolean); procedure SetCaret(const AValue: TSynEditCaret); procedure SetEnabled(const Value : Boolean); procedure SetActiveSelectionMode(const Value: TSynSelectionMode); + procedure SetForceSingleLineSelected(AValue: Boolean); procedure SetHide(const AValue: Boolean); procedure SetPersistent(const AValue: Boolean); procedure SetSelectionMode (const AValue: TSynSelectionMode); @@ -150,7 +163,10 @@ procedure IncPersistentLock(AMode: TSynBlockPersistMode = sbpDefault); // Weak: Do not extend (but rather move) block, if at start/end procedure DecPersistentLock; procedure Clear; + procedure AddBeforeSetSelTextHandler(AHandler: TSynBeforeSetSelTextEvent); + procedure RemoveBeforeSetSelTextHandler(AHandler: TSynBeforeSetSelTextEvent); property Enabled: Boolean read FEnabled write SetEnabled; + property ForceSingleLineSelected: Boolean read FForceSingleLineSelected write SetForceSingleLineSelected; property ActiveSelectionMode: TSynSelectionMode read FActiveSelectionMode write SetActiveSelectionMode; property SelectionMode: TSynSelectionMode @@ -171,6 +187,7 @@ // First and Last Pos are ordered according to the text flow (LTR) property FirstLineBytePos: TPoint read GetFirstLineBytePos; property LastLineBytePos: TPoint read GetLastLineBytePos; + property LastLineHasSelection: Boolean read GetLastLineHasSelection; property InvalidateLinesMethod : TInvalidateLines write FInvalidateLinesMethod; property Caret: TSynEditCaret read FCaret write SetCaret; property Persistent: Boolean read FPersistent write SetPersistent; @@ -211,11 +228,13 @@ function GetBytePos: Integer; function GetBytePosOffset: Integer; function GetCharPos: Integer; + function GetFullLogicalPos: TLogCaretPoint; function GetLineBytePos: TPoint; function GetLineCharPos: TPoint; procedure SetBytePos(AValue: Integer); procedure SetBytePosOffset(AValue: Integer); procedure SetCharPos(AValue: Integer); + procedure SetFullLogicalPos(AValue: TLogCaretPoint); procedure SetLineBytePos(AValue: TPoint); procedure SetLineCharPos(AValue: TPoint); procedure SetLinePos(AValue: Integer); @@ -247,6 +266,7 @@ property BytePos: Integer read GetBytePos write SetBytePos; property BytePosOffset: Integer read GetBytePosOffset write SetBytePosOffset; property LineBytePos: TPoint read GetLineBytePos write SetLineBytePos; + property FullLogicalPos: TLogCaretPoint read GetFullLogicalPos write SetFullLogicalPos; property LineText: string read GetLineText write SetLineText; end; @@ -277,6 +297,7 @@ function GetOldLineCharPos: TPoint; function GetOldLineBytePos: TPoint; + function GetOldFullLogicalPos: TLogCaretPoint; procedure SetAllowPastEOL(const AValue: Boolean); procedure SetSkipTabs(const AValue: Boolean); @@ -306,6 +327,7 @@ procedure IncAutoMoveOnEdit; procedure DecAutoMoveOnEdit; procedure ChangeOnTouch; + procedure Touch(aChangeOnTouch: Boolean = False); function WasAtLineChar(aPoint: TPoint): Boolean; function WasAtLineByte(aPoint: TPoint): Boolean; @@ -315,17 +337,161 @@ property OldCharPos: Integer read FOldCharPos; property OldLineCharPos: TPoint read GetOldLineCharPos; property OldLineBytePos: TPoint read GetOldLineBytePos; + property OldFullLogicalPos: TLogCaretPoint read GetOldFullLogicalPos; property AdjustToNextChar: Boolean read FAdjustToNextChar write FAdjustToNextChar; deprecated; property SkipTabs: Boolean read FSkipTabs write SetSkipTabs; property AllowPastEOL: Boolean read FAllowPastEOL write SetAllowPastEOL; property KeepCaretX: Boolean read FKeepCaretX write SetKeepCaretX; - property MaxLeftChar: TMaxLeftCharFunc write FMaxLeftChar; + property KeepCaretXPos: Integer read FLastCharPos write FLastCharPos; + property MaxLeftChar: TMaxLeftCharFunc read FMaxLeftChar write FMaxLeftChar; end; TSynCaretType = (ctVerticalLine, ctHorizontalLine, ctHalfBlock, ctBlock, ctCostum); TSynCaretLockFlags = set of (sclfUpdateDisplay, sclfUpdateDisplayType); + { TSynEditScreenCaretTimer + Allow sync between carets which use an internal painter + } + + TSynEditScreenCaretTimer = class + private + FDisplayCycle: Boolean; + FTimer: TTimer; + FTimerList: TMethodList; + FAfterPaintList: TMethodList; + FLocCount: Integer; + FLocFlags: set of (lfTimer, lfRestart); + procedure DoTimer(Sender: TObject); + procedure DoAfterPaint(Data: PtrInt); + public + constructor Create; + destructor Destroy; override; + procedure AddAfterPaintHandler(AHandler: TNotifyEvent); // called once + procedure AddHandler(AHandler: TNotifyEvent); + procedure RemoveHandler(AHandler: TNotifyEvent); + procedure RemoveHandler(AHandlerOwner: TObject); + procedure IncLock; + procedure DecLock; + procedure AfterPaintEvent; + + procedure RestartCycle; + property DisplayCycle: Boolean read FDisplayCycle; + end; + + TSynEditScreenCaret = class; + + { TSynEditScreenCaretPainter } + + TSynEditScreenCaretPainter = class + private + FLeft, FTop, FHeight, FWidth: Integer; + FCreated, FShowing: Boolean; + FInPaint, FInScroll: Boolean; + FPaintClip: TRect; + FScrollX, FScrollY: Integer; + FScrollRect, FScrollClip: TRect; + + function GetHandle: HWND; + function GetHandleAllocated: Boolean; + protected + FHandleOwner: TWinControl; + FOwner: TSynEditScreenCaret; + FNeedPositionConfirmed: boolean; + procedure Init; virtual; + property Handle: HWND read GetHandle; + property HandleAllocated: Boolean read GetHandleAllocated; + + procedure BeginScroll(dx, dy: Integer; const rcScroll, rcClip: TRect); virtual; + procedure FinishScroll(dx, dy: Integer; const rcScroll, rcClip: TRect; Success: Boolean); virtual; + procedure BeginPaint(rcClip: TRect); virtual; + procedure FinishPaint(rcClip: TRect); virtual; + public + constructor Create(AHandleOwner: TWinControl; AOwner: TSynEditScreenCaret); + function CreateCaret(w, h: Integer): Boolean; virtual; + function DestroyCaret: Boolean; virtual; + function HideCaret: Boolean; virtual; + function ShowCaret: Boolean; virtual; + function SetCaretPosEx(x, y: Integer): Boolean; virtual; + + property Left: Integer read FLeft; + property Top: Integer read FTop; + property Width: Integer read FWidth; + property Height: Integer read FHeight; + property Created: Boolean read FCreated; + property Showing: Boolean read FShowing; + property InPaint: Boolean read FInPaint; + property InScroll: Boolean read FInScroll; + property NeedPositionConfirmed: boolean read FNeedPositionConfirmed; + end; + + TSynEditScreenCaretPainterClass = class of TSynEditScreenCaretPainter; + + { TSynEditScreenCaretPainterSystem } + + TSynEditScreenCaretPainterSystem = class(TSynEditScreenCaretPainter) + protected + //procedure BeginScroll(dx, dy: Integer; const rcScroll, rcClip: TRect); override; + procedure FinishScroll(dx, dy: Integer; const rcScroll, rcClip: TRect; Success: Boolean); override; + procedure BeginPaint(rcClip: TRect); override; + //procedure FinishPaint(rcClip: TRect); override; // unhide, currently done by editor + public + function CreateCaret(w, h: Integer): Boolean; override; + function DestroyCaret: Boolean; override; + function HideCaret: Boolean; override; + function ShowCaret: Boolean; override; + function SetCaretPosEx(x, y: Integer): Boolean; override; + end; + + { TSynEditScreenCaretPainterInternal } + + TSynEditScreenCaretPainterInternal = class(TSynEditScreenCaretPainter) + private type + TIsInRectState = (irInside, irPartInside, irOutside); + TPainterState = (psAfterPaintAdded, psCleanOld, psRemoveTimer); + TPainterStates = set of TPainterState; + private + FColor: TColor; + FForcePaintEvents: Boolean; + FIsDrawn: Boolean; + FSavePen: TPen; + FOldX, FOldY, FOldW, FOldH: Integer; + FState: TPainterStates; + FCanPaint: Boolean; + + procedure DoTimer(Sender: TObject); + procedure DoPaint(ACanvas: TCanvas; X, Y, H, W: Integer); + procedure Paint; + procedure Invalidate; + procedure AddAfterPaint(AStates: TPainterStates = []); + procedure DoAfterPaint(Sender: TObject); + procedure ExecAfterPaint; + function CurrentCanvas: TCanvas; + procedure SetColor(AValue: TColor); + function IsInRect(ARect: TRect): TIsInRectState; + function IsInRect(ARect: TRect; X, Y, W, H: Integer): TIsInRectState; + protected + procedure Init; override; + + procedure BeginScroll(dx, dy: Integer; const rcScroll, rcClip: TRect); override; + procedure FinishScroll(dx, dy: Integer; const rcScroll, rcClip: TRect; Success: Boolean); override; + procedure BeginPaint(rcClip: TRect); override; + procedure FinishPaint(rcClip: TRect); override; + public + destructor Destroy; override; + function CreateCaret(w, h: Integer): Boolean; override; + function DestroyCaret: Boolean; override; + function HideCaret: Boolean; override; + function ShowCaret: Boolean; override; + function SetCaretPosEx(x, y: Integer): Boolean; override; + property Color: TColor read FColor write SetColor; + property ForcePaintEvents: Boolean read FForcePaintEvents write FForcePaintEvents; + end; + + // relative dimensions in percent from 0 to 1024 (=100%) + TSynCustomCaretSizeFlag = (ccsRelativeLeft, ccsRelativeTop, ccsRelativeWidth, ccsRelativeHeight); + TSynCustomCaretSizeFlags = set of TSynCustomCaretSizeFlag; + { TSynEditScreenCaret } TSynEditScreenCaret = class @@ -342,6 +508,9 @@ FOnExtraLineCharsChanged: TNotifyEvent; FVisible: Boolean; FHandleOwner: TWinControl; + FCaretPainter: TSynEditScreenCaretPainter; + FPaintTimer: TSynEditScreenCaretTimer; + FPaintTimerOwned: Boolean; function GetHandle: HWND; function GetHandleAllocated: Boolean; procedure SetCharHeight(const AValue: Integer); @@ -359,34 +528,48 @@ FOffsetX, FOffsetY: Integer; FCustomPixelWidth, FCustomPixelHeight: Array [TSynCaretType] of Integer; FCustomOffsetX, FCustomOffsetY: Array [TSynCaretType] of Integer; - FCurrentPosX, FCurrentPosY: Integer; - FCurrentVisible, FCurrentCreated: Boolean; - FCurrentClippedWidth, FCurrentClippedHeight: Integer; + FCustomFlags: Array [TSynCaretType] of TSynCustomCaretSizeFlags; FLockCount: Integer; FLockFlags: TSynCaretLockFlags; + function GetHasPaintTimer: Boolean; + function GetPaintTimer: TSynEditScreenCaretTimer; procedure SetClipBottom(const AValue: Integer); procedure SetClipExtraPixel(AValue: Integer); procedure SetClipLeft(const AValue: Integer); procedure SetClipRect(const AValue: TRect); procedure SetClipTop(const AValue: Integer); procedure CalcExtraLineChars; + procedure SetPaintTimer(AValue: TSynEditScreenCaretTimer); procedure UpdateDisplayType; procedure UpdateDisplay; procedure ShowCaret; procedure HideCaret; - property Handle: HWND read GetHandle; property HandleAllocated: Boolean read GetHandleAllocated; + protected + property Handle: HWND read GetHandle; public constructor Create(AHandleOwner: TWinControl); + constructor Create(AHandleOwner: TWinControl; APainterClass: TSynEditScreenCaretPainterClass); + procedure ChangePainter(APainterClass: TSynEditScreenCaretPainterClass); destructor Destroy; override; + + procedure BeginScroll(dx, dy: Integer; const rcScroll, rcClip: TRect); + procedure FinishScroll(dx, dy: Integer; const rcScroll, rcClip: TRect; Success: Boolean); + procedure BeginPaint(rcClip: TRect); + procedure FinishPaint(rcClip: TRect); + procedure Lock; + procedure UnLock; + procedure AfterPaintEvent; // next async + procedure Hide; // Keep visible = true procedure DestroyCaret(SkipHide: boolean = False); - procedure Lock; - procedure UnLock; - procedure InvalidatePos; procedure ResetCaretTypeSizes; - procedure SetCaretTypeSize(AType: TSynCaretType; AWidth, AHeight, AXOffs, AYOffs: Integer); + procedure SetCaretTypeSize(AType: TSynCaretType; AWidth, AHeight, AXOffs, AYOffs: Integer; + AFlags: TSynCustomCaretSizeFlags = []); property HandleOwner: TWinControl read FHandleOwner; + property PaintTimer: TSynEditScreenCaretTimer read GetPaintTimer write SetPaintTimer; + property HasPaintTimer: Boolean read GetHasPaintTimer; + property Painter: TSynEditScreenCaretPainter read FCaretPainter; property CharWidth: Integer read FCharWidth write SetCharWidth; property CharHeight: Integer read FCharHeight write SetCharHeight; property ClipLeft: Integer read FClipLeft write SetClipLeft; @@ -405,6 +588,18 @@ implementation +{ TSynBeforeSetSelTextList } + +procedure TSynBeforeSetSelTextList.CallBeforeSetSelTextHandlers(Sender: TObject; + AMode: TSynSelectionMode; ANewText: PChar); +var + i: Integer; +begin + i:=Count; + while NextDownIndex(i) do + TSynBeforeSetSelTextEvent(Items[i])(Sender, AMode, ANewText); +end; + { TSynEditBaseCaret } function TSynEditBaseCaret.GetBytePos: Integer; @@ -425,6 +620,14 @@ Result := FCharPos; end; +function TSynEditBaseCaret.GetFullLogicalPos: TLogCaretPoint; +begin + ValidateBytePos; + Result.Y := FLinePos; + Result.X := FBytePos; + Result.Offs := FBytePosOffset; +end; + function TSynEditBaseCaret.GetLineBytePos: TPoint; begin ValidateBytePos; @@ -453,6 +656,11 @@ InternalSetLineCharPos(FLinePos, AValue, [scuChangedX]); end; +procedure TSynEditBaseCaret.SetFullLogicalPos(AValue: TLogCaretPoint); +begin + InternalSetLineByterPos(AValue.y, AValue.x, AValue.Offs, [scuChangedX, scuChangedY]); +end; + procedure TSynEditBaseCaret.SetLineBytePos(AValue: TPoint); begin InternalSetLineByterPos(AValue.y, AValue.x, 0, [scuChangedX, scuChangedY]); @@ -1052,6 +1260,12 @@ Result := FLines.PhysicalToLogicalPos(OldLineCharPos); end; +function TSynEditCaret.GetOldFullLogicalPos: TLogCaretPoint; +begin + Result.Y := FOldLinePos; + Result.X := FLines.LogPhysConvertor.PhysicalToLogical(ToIdx(FOldLinePos), FOldCharPos, Result.Offs); +end; + procedure TSynEditCaret.SetAllowPastEOL(const AValue: Boolean); begin if FAllowPastEOL = AValue then exit; @@ -1128,6 +1342,13 @@ FTouched := False; end; +procedure TSynEditCaret.Touch(aChangeOnTouch: Boolean); +begin + if aChangeOnTouch then + ChangeOnTouch; + FTouched := True; +end; + function TSynEditCaret.WasAtLineChar(aPoint: TPoint): Boolean; begin @@ -1225,6 +1446,7 @@ constructor TSynEditSelection.Create(ALines : TSynEditStrings; aActOnLineChanges: Boolean); begin Inherited Create(ALines); + FOnBeforeSetSelText := TSynBeforeSetSelTextList.Create; FInternalCaret := TSynEditBaseCaret.Create; FInternalCaret.Lines := FLines; @@ -1246,6 +1468,7 @@ destructor TSynEditSelection.Destroy; begin + FreeAndNil(FOnBeforeSetSelText); FreeAndNil(FInternalCaret); if FHookedLines then begin FLines.RemoveEditHandler(@DoLinesEdited); @@ -1878,6 +2101,7 @@ end; begin + FOnBeforeSetSelText.CallBeforeSetSelTextHandlers(Self, PasteMode, Value); FIsSettingText := True; FStickyAutoExtend := False; FLines.BeginUpdate; // Todo: can we get here, without paintlock? @@ -1974,6 +2198,7 @@ FInvalidateLinesMethod(nInval1, nInval2); end; FActiveSelectionMode := FSelectionMode; + FForceSingleLineSelected := False; FHide := False; FStartLinePos := Value.Y; FStartBytePos := Value.X; @@ -2076,6 +2301,21 @@ end; end; +procedure TSynEditSelection.SetForceSingleLineSelected(AValue: Boolean); +var + WasAvail: Boolean; +begin + if FForceSingleLineSelected = AValue then Exit; + WasAvail := SelAvail; + FForceSingleLineSelected := AValue; + + if WasAvail <> SelAvail then begin + FInvalidateLinesMethod(Min(FStartLinePos, FEndLinePos), + Max(FStartLinePos, FEndLinePos) ); + fOnChangeList.CallNotifyEvents(self); + end; +end; + procedure TSynEditSelection.SetHide(const AValue: Boolean); begin if FHide = AValue then exit; @@ -2124,6 +2364,11 @@ Result := EndLineBytePos; end; +function TSynEditSelection.GetLastLineHasSelection: Boolean; +begin + Result := (LastLineBytePos.x > 1) or ((FActiveSelectionMode = smLine) and FForceSingleLineSelected); +end; + procedure TSynEditSelection.SetAutoExtend(AValue: Boolean); begin if FAutoExtend = AValue then Exit; @@ -2152,7 +2397,8 @@ end; end else - Result := (FStartBytePos <> FEndBytePos) or (FStartLinePos <> FEndLinePos); + Result := (FStartBytePos <> FEndBytePos) or (FStartLinePos <> FEndLinePos) + or ( (FActiveSelectionMode = smLine) and FForceSingleLineSelected); end; function TSynEditSelection.SelCanContinue(ACaret: TSynEditCaret): Boolean; @@ -2222,31 +2468,662 @@ StartLineBytePos := StartLineBytePos; end; +procedure TSynEditSelection.AddBeforeSetSelTextHandler(AHandler: TSynBeforeSetSelTextEvent); +begin + FOnBeforeSetSelText.Add(TMethod(AHandler)); +end; + +procedure TSynEditSelection.RemoveBeforeSetSelTextHandler(AHandler: TSynBeforeSetSelTextEvent); +begin + FOnBeforeSetSelText.Remove(TMethod(AHandler)); +end; + +{ TSynEditScreenCaretTimer } + +procedure TSynEditScreenCaretTimer.DoAfterPaint(Data: PtrInt); +begin + FAfterPaintList.CallNotifyEvents(Self); + while FAfterPaintList.Count > 0 do + FAfterPaintList.Delete(FAfterPaintList.Count - 1); +end; + +procedure TSynEditScreenCaretTimer.DoTimer(Sender: TObject); +begin + if FLocCount > 0 then begin + include(FLocFlags, lfTimer); + exit; + end; + FDisplayCycle := not FDisplayCycle; + FTimerList.CallNotifyEvents(Self); +end; + +constructor TSynEditScreenCaretTimer.Create; +begin + FTimerList := TMethodList.Create; + FAfterPaintList := TMethodList.Create; + FTimer := TTimer.Create(nil); + FTimer.Enabled := False; + FTimer.Interval := 500; + FTimer.OnTimer := @DoTimer; +end; + +destructor TSynEditScreenCaretTimer.Destroy; +begin + Application.RemoveAsyncCalls(Self); + FreeAndNil(FTimer); + FreeAndNil(FTimerList); + FreeAndNil(FAfterPaintList); + inherited Destroy; +end; + +procedure TSynEditScreenCaretTimer.AddAfterPaintHandler(AHandler: TNotifyEvent); +begin + if FAfterPaintList.Count = 0 then + Application.QueueAsyncCall(@DoAfterPaint, 0); + FAfterPaintList.Add(TMethod(AHandler)); +end; + +procedure TSynEditScreenCaretTimer.AddHandler(AHandler: TNotifyEvent); +begin + FTimerList.Add(TMethod(AHandler)); + if not FTimer.Enabled then + RestartCycle; +end; + +procedure TSynEditScreenCaretTimer.RemoveHandler(AHandler: TNotifyEvent); +begin + FTimerList.Remove(TMethod(AHandler)); + if FTimerList.Count = 0 then + FTimer.Enabled := False; +end; + +procedure TSynEditScreenCaretTimer.RemoveHandler(AHandlerOwner: TObject); +begin + FTimerList.RemoveAllMethodsOfObject(AHandlerOwner); + FAfterPaintList.RemoveAllMethodsOfObject(AHandlerOwner); + if FTimerList.Count = 0 then FTimer.Enabled := False; +end; + +procedure TSynEditScreenCaretTimer.IncLock; +begin + inc(FLocCount); +end; + +procedure TSynEditScreenCaretTimer.DecLock; +begin + if FLocCount > 0 then + dec(FLocCount); + if FLocCount > 0 then + exit; + + if lfRestart in FLocFlags then + RestartCycle + else; + if lfTimer in FLocFlags then + DoTimer(nil); + + FLocFlags := []; +end; + +procedure TSynEditScreenCaretTimer.AfterPaintEvent; +begin + Application.RemoveAsyncCalls(Self); + DoAfterPaint(0); +end; + +procedure TSynEditScreenCaretTimer.RestartCycle; +begin + if FLocCount > 0 then begin + include(FLocFlags, lfRestart); + exit; + end; + if FTimerList.Count = 0 then exit; + FTimer.Enabled := False; + FDisplayCycle := False; + DoTimer(nil); + FTimer.Enabled := True; +end; + +{ TSynEditScreenCaretPainter } + +function TSynEditScreenCaretPainter.GetHandle: HWND; +begin + Result := FHandleOwner.Handle; +end; + +function TSynEditScreenCaretPainter.GetHandleAllocated: Boolean; +begin + Result := FHandleOwner.HandleAllocated; +end; + +procedure TSynEditScreenCaretPainter.Init; +begin + // +end; + +constructor TSynEditScreenCaretPainter.Create(AHandleOwner: TWinControl; + AOwner: TSynEditScreenCaret); +begin + FLeft := -1; + FTop := -1; + inherited Create; + FHandleOwner := AHandleOwner; + FOwner := AOwner; + Init; +end; + +function TSynEditScreenCaretPainter.CreateCaret(w, h: Integer): Boolean; +begin + FLeft := -1; + FTop := -1; + FWidth := w; + FHeight := h; + FCreated := True; + FShowing := False; + Result := True; +end; + +function TSynEditScreenCaretPainter.DestroyCaret: Boolean; +begin + FCreated := False; + FShowing := False; + Result := True; +end; + +function TSynEditScreenCaretPainter.HideCaret: Boolean; +begin + FShowing := False; + Result := True; +end; + +function TSynEditScreenCaretPainter.ShowCaret: Boolean; +begin + FShowing := True; + Result := True; +end; + +function TSynEditScreenCaretPainter.SetCaretPosEx(x, y: Integer): Boolean; +begin + FLeft := x; + FTop := y; + FNeedPositionConfirmed := False; + Result := True; +end; + +procedure TSynEditScreenCaretPainter.BeginScroll(dx, dy: Integer; const rcScroll, + rcClip: TRect); +begin + FInScroll := True; + FScrollX := dx; + FScrollY := dy; + FScrollRect := rcScroll; + FScrollClip := rcClip; +end; + +procedure TSynEditScreenCaretPainter.FinishScroll(dx, dy: Integer; const rcScroll, + rcClip: TRect; Success: Boolean); +begin + FInScroll := False; +end; + +procedure TSynEditScreenCaretPainter.BeginPaint(rcClip: TRect); +begin + FInPaint := True; + FPaintClip := rcClip; +end; + +procedure TSynEditScreenCaretPainter.FinishPaint(rcClip: TRect); +begin + FInPaint := False; +end; + +{ TSynEditScreenCaretPainterSystem } + +procedure TSynEditScreenCaretPainterSystem.FinishScroll(dx, dy: Integer; const rcScroll, + rcClip: TRect; Success: Boolean); +begin + inherited FinishScroll(dx, dy, rcScroll, rcClip, Success); + if Success then + inherited SetCaretPosEx(-1, -1); + FNeedPositionConfirmed := True; +end; + +procedure TSynEditScreenCaretPainterSystem.BeginPaint(rcClip: TRect); +begin + inherited BeginPaint(rcClip); + if Showing then + if not HideCaret then + DestroyCaret; // only if was Showing +end; + +function TSynEditScreenCaretPainterSystem.CreateCaret(w, h: Integer): Boolean; +begin + // do not create caret during paint / Issue 0021924 + Result := HandleAllocated and not InPaint; + if not Result then + exit; + inherited CreateCaret(w, h); + inherited SetCaretPosEx(-1, -1); + Result := LCLIntf.CreateCaret(Handle, 0, w, h); + SetCaretRespondToFocus(Handle, False); // Only for GTK + if not Result then inherited DestroyCaret; +end; + +function TSynEditScreenCaretPainterSystem.DestroyCaret: Boolean; +begin + Result := inherited DestroyCaret; + if HandleAllocated then + Result := LCLIntf.DestroyCaret(Handle); +end; + +function TSynEditScreenCaretPainterSystem.HideCaret: Boolean; +begin + inherited HideCaret; + if HandleAllocated then + Result := LCLIntf.HideCaret(Handle) + else + Result := False; +end; + +function TSynEditScreenCaretPainterSystem.ShowCaret: Boolean; +begin + Result := HandleAllocated; + if not Result then + exit; + inherited ShowCaret; + Result := LCLIntf.ShowCaret(Handle); +end; + +function TSynEditScreenCaretPainterSystem.SetCaretPosEx(x, y: Integer): Boolean; +begin + Result := HandleAllocated; + if not Result then + exit; + inherited SetCaretPosEx(x, y); + Result := LCLIntf.SetCaretPosEx(Handle, x, y); +end; + +{ TSynEditScreenCaretPainterInternal } + +procedure TSynEditScreenCaretPainterInternal.DoTimer(Sender: TObject); +begin + assert(not((not Showing) and FIsDrawn), 'TSynEditScreenCaretPainterInternal.DoTimer: not((not Showing) and FIsDrawn)'); + if (FState <> []) then + ExecAfterPaint; + + if (not Showing) or NeedPositionConfirmed then exit; + if FIsDrawn <> FOwner.PaintTimer.DisplayCycle then + Paint; +end; + +procedure TSynEditScreenCaretPainterInternal.DoPaint(ACanvas: TCanvas; X, Y, H, W: Integer); +var + l: Integer; + am: TAntialiasingMode; +begin + if ForcePaintEvents and (not FInPaint) then begin + Invalidate; + exit; + end; + + am := ACanvas.AntialiasingMode; + FSavePen.Assign(ACanvas.Pen); + + l := X + W div 2; + ACanvas.MoveTo(l, Y); + ACanvas.Pen.Mode := pmNotXOR; + ACanvas.Pen.Style := psSolid; + ACanvas.Pen.Color := FColor; + ACanvas.AntialiasingMode := amOff; + ACanvas.pen.EndCap := pecFlat; + ACanvas.pen.Width := Width; + ACanvas.LineTo(l, Y+H); + + ACanvas.Pen.Assign(FSavePen); + ACanvas.AntialiasingMode := am; +end; + +procedure TSynEditScreenCaretPainterInternal.Paint; +begin + if not HandleAllocated then begin + FIsDrawn := False; + exit; + end; + + if FInPaint or FInScroll then begin + if FCanPaint then + FIsDrawn := not FIsDrawn; //change the state, that is applied at the end of paint + exit; + end; + + if (FState <> []) then + ExecAfterPaint; + + FIsDrawn := not FIsDrawn; + DoPaint(CurrentCanvas, FLeft, FTop, FHeight, FWidth); +end; + +procedure TSynEditScreenCaretPainterInternal.Invalidate; +var + r: TRect; +begin + r.Left := Left; + r.Top := Top; + r.Right := Left+Width+1; + r.Bottom := Top+Height+1; + InvalidateRect(Handle, @r, False); +end; + +procedure TSynEditScreenCaretPainterInternal.AddAfterPaint(AStates: TPainterStates); +begin + if not(psAfterPaintAdded in FState) then + FOwner.PaintTimer.AddAfterPaintHandler(@DoAfterPaint); + FState := FState + [psAfterPaintAdded] + AStates; +end; + +procedure TSynEditScreenCaretPainterInternal.DoAfterPaint(Sender: TObject); +begin + Exclude(FState, psAfterPaintAdded); + DoTimer(nil); +end; + +procedure TSynEditScreenCaretPainterInternal.ExecAfterPaint; +begin + if FInPaint or FInScroll then + exit; + + if (psCleanOld in FState) then begin + DoPaint(CurrentCanvas, FOldX, FOldY, FOldH, FOldW); + Exclude(FState, psCleanOld); + end; + + if (psRemoveTimer in FState) and not(FInPaint or FInScroll) then begin + FOwner.PaintTimer.RemoveHandler(@DoTimer); + Exclude(FState, psRemoveTimer); + end; + +end; + +function TSynEditScreenCaretPainterInternal.CurrentCanvas: TCanvas; +begin + Result := TCustomControl(FHandleOwner).Canvas; +end; + +procedure TSynEditScreenCaretPainterInternal.SetColor(AValue: TColor); +var + d: Boolean; +begin + if FColor = AValue then Exit; + + d := FIsDrawn; + if FIsDrawn then Paint; + FColor := AValue; + if d then Paint; +end; + +function TSynEditScreenCaretPainterInternal.IsInRect(ARect: TRect): TIsInRectState; +begin + Result := IsInRect(ARect, Left, Top, Width, Height); +end; + +function TSynEditScreenCaretPainterInternal.IsInRect(ARect: TRect; X, Y, W, + H: Integer): TIsInRectState; +begin + if (Y >= ARect.Bottom) or (X >= ARect.Right) or (Y+H < ARect.Top) or (X+W < ARect.Left) + then + Result := irOutside + else + if (Y >= ARect.Top) and (X >= ARect.Left) and (Y+H < ARect.Bottom) and (X+W < ARect.Right) + then + Result := irInside + else + Result := irPartInside; +end; + +procedure TSynEditScreenCaretPainterInternal.Init; +begin + {$IFDEF LCLCarbon} + FForcePaintEvents := True; + {$ELSE} + {$IFDEF LCLQt} + FForcePaintEvents := True; + {$ELSE} + FForcePaintEvents := False; + {$ENDIF} + {$ENDIF} + FSavePen := TPen.Create; + FColor := clBlack; + FOldY := -1; + FCanPaint := True; + inherited Init; +end; + +procedure TSynEditScreenCaretPainterInternal.BeginScroll(dx, dy: Integer; const rcScroll, + rcClip: TRect); +{$IFDEF SynCaretNoHideInSroll} +var + rs: TIsInRectState; +{$ENDIF} +begin + assert(not((FInPaint or FInScroll)), 'TSynEditScreenCaretPainterInternal.BeginScroll: not((FInPaint or FInScroll))'); + if (FState <> []) then + ExecAfterPaint; + + {$IFnDEF SynCaretNoHideInSroll} + if not ((IsInRect(rcClip) = irOutside) and (IsInRect(rcScroll) = irOutside)) then begin + HideCaret; + inherited SetCaretPosEx(-1,-1); + end; + {$ELSE} + rs := IsInRect(rcScroll); + if not( ((IsInRect(rcClip) = irOutside) and (rs = irOutside)) or + ((IsInRect(rcClip, Left+dx, Top+dy, Width, Height) = irInside) and (rs = irInside)) + ) + then begin + HideCaret; + inherited SetCaretPosEx(-1,-1); + end; + {$ENDIF} + + FCanPaint := False; + + inherited BeginScroll(dx, dy, rcScroll, rcClip); +end; + +procedure TSynEditScreenCaretPainterInternal.FinishScroll(dx, dy: Integer; const rcScroll, + rcClip: TRect; Success: Boolean); +begin + assert(FInScroll, 'TSynEditScreenCaretPainterInternal.FinishScroll: FInScroll'); + assert((FState-[psAfterPaintAdded]) = [], 'TSynEditScreenCaretPainterInternal.FinishScroll: FState = []'); + inherited FinishScroll(dx, dy, rcScroll, rcClip, Success); + FCanPaint := True; + {$IFDEF SynCaretNoHideInSroll} + if Success and ((IsInRect(rcClip) = irInside) or (IsInRect(rcScroll) = irInside)) then begin + inherited SetCaretPosEx(Left+dx, Top+dy); + FNeedPositionConfirmed := True; + end; + {$ENDIF} +end; + +procedure TSynEditScreenCaretPainterInternal.BeginPaint(rcClip: TRect); +begin + assert(not (FInPaint or FInScroll), 'TSynEditScreenCaretPainterInternal.BeginPaint: not (FInPaint or FInScroll)'); + + FCanPaint := IsInRect(rcClip)= irInside; + + if (psCleanOld in FState) and not FCanPaint then begin + if IsInRect(rcClip, FOldX, FOldY, FOldW, FOldH) <> irInside then begin + debugln(['TSynEditScreenCaretPainterInternal.BeginPaint Invalidate for psCleanOld']); + Invalidate; + end; + Exclude(FState, psCleanOld); + end; + + if not(psCleanOld in FState) then begin + FOldX := Left; + FOldY := Top; + FOldW := Width; + FOldH := Height; + end; + + inherited BeginPaint(rcClip); +end; + +procedure TSynEditScreenCaretPainterInternal.FinishPaint(rcClip: TRect); +begin + assert(FInPaint, 'TSynEditScreenCaretPainterInternal.FinishPaint: FInPaint'); + assert(FCanPaint = (IsInRect(rcClip)= irInside), 'TSynEditScreenCaretPainterInternal.FinishPaint: FCanPaint = (IsInRect(rcClip)= irInside)'); + assert(FCanPaint = (IsInRect(FPaintClip)= irInside), 'TSynEditScreenCaretPainterInternal.FinishPaint: FCanPaint = (IsInRect(rcClip)= irInside)'); + + // partly restore IF irPartInside; + // Better recalc size to remainder outside cliprect + if (psCleanOld in FState) and (not ForcePaintEvents) then + DoPaint(CurrentCanvas, FOldX, FOldY, FOldH, FOldW); + + // if changes where made, then FIsDrawn is alvays false + if FIsDrawn then + DoPaint(CurrentCanvas, FLeft, FTop, FHeight, FWidth); // restore any part that is in the cliprect + + inherited FinishPaint(rcClip); + FCanPaint := True; +end; + +destructor TSynEditScreenCaretPainterInternal.Destroy; +begin + assert(not(FInPaint or FInScroll), 'TSynEditScreenCaretPainterInternal.Destroy: not(FInPaint or FInScroll)'); + if FOwner.HasPaintTimer then + FOwner.PaintTimer.RemoveHandler(Self); + HideCaret; + FreeAndNil(FSavePen); + inherited Destroy; +end; + +function TSynEditScreenCaretPainterInternal.CreateCaret(w, h: Integer): Boolean; +begin + DestroyCaret; + Result := inherited CreateCaret(w, h); + if InPaint then // InScroll ?? + FCanPaint := IsInRect(FPaintClip) = irInside; + Result := True; +end; + +function TSynEditScreenCaretPainterInternal.DestroyCaret: Boolean; +begin + HideCaret; + inherited DestroyCaret; + Result := True; +end; + +function TSynEditScreenCaretPainterInternal.HideCaret: Boolean; +begin + inherited HideCaret; + + if (not FCanPaint) and FIsDrawn then begin + AddAfterPaint([psCleanOld, psRemoveTimer]); + FIsDrawn := False; + exit(True); + end; + + FOwner.PaintTimer.RemoveHandler(@DoTimer); + if FIsDrawn then Paint; + assert(not FIsDrawn, 'TSynEditScreenCaretPainterInternal.HideCaret: not FIsDrawn'); + Result := True; +end; + +function TSynEditScreenCaretPainterInternal.ShowCaret: Boolean; +begin + if Showing then exit(True); + inherited ShowCaret; + Exclude(FState, psRemoveTimer); +// Exclude(FState, psCleanOld); // only if not moved + + FOwner.PaintTimer.RemoveHandler(@DoTimer); + FOwner.PaintTimer.AddHandler(@DoTimer); + FOwner.PaintTimer.RestartCycle; + Result := True; +end; + +function TSynEditScreenCaretPainterInternal.SetCaretPosEx(x, y: Integer): Boolean; +var + d: Boolean; +begin + if (not FCanPaint) and FIsDrawn then begin + AddAfterPaint([psCleanOld]); + FIsDrawn := False; + end; + + d := FIsDrawn; + if d then Paint; + inherited SetCaretPosEx(x, y); + + if InPaint then // InScroll ?? + FCanPaint := IsInRect(FPaintClip) = irInside; + + if d then Paint; + // else aftecpaint needs show + FOwner.PaintTimer.RestartCycle; // if not d ?? + Result := True; +end; + { TSynEditScreenCaret } constructor TSynEditScreenCaret.Create(AHandleOwner: TWinControl); begin + Create(AHandleOwner, TSynEditScreenCaretPainterSystem); + //Create(AHandleOwner, TSynEditScreenCaretPainterInternal); +end; + +constructor TSynEditScreenCaret.Create(AHandleOwner: TWinControl; + APainterClass: TSynEditScreenCaretPainterClass); +begin inherited Create; + FCaretPainter := APainterClass.Create(AHandleOwner, Self); FLockCount := -1; ResetCaretTypeSizes; FHandleOwner := AHandleOwner; FVisible := False; - FCurrentVisible := False; - FCurrentCreated := False; - FCurrentPosX := -1; - FCurrentPosY := -1; - FCurrentClippedWidth := -1; - FCurrentClippedHeight := -1; FClipExtraPixel := 0; FLockCount := 0; end; +procedure TSynEditScreenCaret.ChangePainter(APainterClass: TSynEditScreenCaretPainterClass); +begin + DestroyCaret; + FreeAndNil(FCaretPainter); + FCaretPainter := APainterClass.Create(FHandleOwner, Self); + UpdateDisplay; +end; + destructor TSynEditScreenCaret.Destroy; begin DestroyCaret; + FreeAndNil(FCaretPainter); + if FPaintTimerOwned then + FreeAndNil(FPaintTimer); inherited Destroy; end; +procedure TSynEditScreenCaret.BeginScroll(dx, dy: Integer; const rcScroll, rcClip: TRect); +begin + Painter.BeginScroll(dx, dy, rcScroll, rcClip); +end; + +procedure TSynEditScreenCaret.FinishScroll(dx, dy: Integer; const rcScroll, rcClip: TRect; + Success: Boolean); +begin + Painter.FinishScroll(dx, dy, rcScroll, rcClip, Success); +end; + +procedure TSynEditScreenCaret.BeginPaint(rcClip: TRect); +begin + Painter.BeginPaint(rcClip); +end; + +procedure TSynEditScreenCaret.FinishPaint(rcClip: TRect); +begin + Painter.FinishPaint(rcClip); +end; + procedure TSynEditScreenCaret.Hide; begin HideCaret; @@ -2254,14 +3131,12 @@ procedure TSynEditScreenCaret.DestroyCaret(SkipHide: boolean = False); begin - if FCurrentCreated and HandleAllocated then begin + if Painter.Created then begin {$IFDeF SynCaretDebug} - debugln(['SynEditCaret DestroyCaret for HandleOwner=',FHandleOwner, ' DebugShowCount=', FDebugShowCount, ' FVisible=', FVisible, ' FCurrentVisible=', FCurrentVisible]); + debugln(['SynEditCaret DestroyCaret for HandleOwner=',FHandleOwner, ' DebugShowCount=', FDebugShowCount, ' FVisible=', FVisible, ' FCurrentVisible=', Painter.Showing]); {$ENDIF} - LCLIntf.DestroyCaret(Handle); + FCaretPainter.DestroyCaret; end; - FCurrentCreated := False; - FCurrentVisible := False; if not SkipHide then FVisible := False; end; @@ -2269,6 +3144,8 @@ procedure TSynEditScreenCaret.Lock; begin inc(FLockCount); + if FPaintTimer <> nil then + FPaintTimer.IncLock; end; procedure TSynEditScreenCaret.UnLock; @@ -2278,12 +3155,15 @@ if (sclfUpdateDisplayType in FLockFlags) then UpdateDisplayType; if (sclfUpdateDisplay in FLockFlags) then UpdateDisplay; end; + if FPaintTimer <> nil then + FPaintTimer.DecLock; end; -procedure TSynEditScreenCaret.InvalidatePos; +procedure TSynEditScreenCaret.AfterPaintEvent; begin - FCurrentPosY := -1; - FCurrentPosX := -1; + if FPaintTimer <> nil then + FPaintTimer.AfterPaintEvent; + end; procedure TSynEditScreenCaret.ResetCaretTypeSizes; @@ -2297,12 +3177,13 @@ end; procedure TSynEditScreenCaret.SetCaretTypeSize(AType: TSynCaretType; AWidth, AHeight, AXOffs, - AYOffs: Integer); + AYOffs: Integer; AFlags: TSynCustomCaretSizeFlags); begin FCustomPixelWidth[AType] := AWidth; FCustomPixelHeight[AType] := AHeight; FCustomOffsetX[AType] := AXOffs; FCustomOffsetY[AType] := AYOffs; + FCustomFlags[AType] := AFlags; if FDisplayType = AType then UpdateDisplayType; end; @@ -2340,7 +3221,7 @@ procedure TSynEditScreenCaret.SetDisplayPos(const AValue: TPoint); begin if (FDisplayPos.x = AValue.x) and (FDisplayPos.y = AValue.y) and - (FVisible = FCurrentVisible) + (FVisible = Painter.Showing) and (not Painter.NeedPositionConfirmed) then exit; FDisplayPos := AValue; @@ -2405,13 +3286,21 @@ end; if (FCustomPixelWidth[FDisplayType] <> 0) then begin - FPixelWidth := FCustomPixelWidth[FDisplayType]; - FOffsetX := FCustomOffsetX[FDisplayType]; + if ccsRelativeWidth in FCustomFlags[FDisplayType] + then FPixelWidth := FCharWidth * FCustomPixelWidth[FDisplayType] div 1024 + else FPixelWidth := FCustomPixelWidth[FDisplayType]; + if ccsRelativeLeft in FCustomFlags[FDisplayType] + then FOffsetX := FCharWidth * FCustomOffsetX[FDisplayType] div 1024 + else FOffsetX := FCustomOffsetX[FDisplayType]; FExtraLinePixel := Max(0, FPixelWidth + FOffsetX); end; if (FCustomPixelHeight[FDisplayType] <> 0) then begin - FPixelHeight := FCustomPixelHeight[FDisplayType]; - FOffsetY := FCustomOffsetY[FDisplayType]; + if ccsRelativeHeight in FCustomFlags[FDisplayType] + then FPixelHeight := FCharHeight * FCustomPixelHeight[FDisplayType] div 1024 + else FPixelHeight := FCustomPixelHeight[FDisplayType]; + if ccsRelativeTop in FCustomFlags[FDisplayType] + then FOffsetY := FCharHeight * FCustomOffsetY[FDisplayType] div 1024 + else FOffsetY := FCustomOffsetY[FDisplayType]; end; CalcExtraLineChars; @@ -2426,6 +3315,21 @@ UpdateDisplay; end; +function TSynEditScreenCaret.GetPaintTimer: TSynEditScreenCaretTimer; +begin + if FPaintTimer = nil then begin + FPaintTimer := TSynEditScreenCaretTimer.Create; + FPaintTimerOwned := True; + FPaintTimer.FLocCount := FLockCount; + end; + Result := FPaintTimer; +end; + +function TSynEditScreenCaret.GetHasPaintTimer: Boolean; +begin + Result := FPaintTimer <> nil; +end; + procedure TSynEditScreenCaret.SetClipExtraPixel(AValue: Integer); begin if FClipExtraPixel = AValue then Exit; @@ -2472,6 +3376,7 @@ var OldExtraChars: Integer; begin + if FCharWidth = 0 then exit; OldExtraChars := FExtraLineChars; FExtraLineChars := Max(0, FExtraLinePixel - FClipExtraPixel + FCharWidth - 1) div FCharWidth; @@ -2479,6 +3384,13 @@ FOnExtraLineCharsChanged(Self); end; +procedure TSynEditScreenCaret.SetPaintTimer(AValue: TSynEditScreenCaretTimer); +begin + assert(FPaintTimer = nil, 'TSynEditScreenCaret.SetPaintTimer: FPaintTimer = nil'); + if FPaintTimer = nil then + FPaintTimer := AValue; +end; + procedure TSynEditScreenCaret.UpdateDisplay; begin if FLockCount > 0 then begin @@ -2508,13 +3420,13 @@ if x < FClipLeft then begin w := w - (FClipLeft - w); x := FClipLeft; - end; + end; if y + h >= FClipBottom then h := FClipBottom - y - 1; if y < FClipTop then begin h := h - (FClipTop - y); y := FClipTop; - end; + end; if (w <= 0) or (h < 0) or (x < FClipLeft) or (x >= FClipRight) or (y < FClipTop) or (y >= FClipBottom) @@ -2523,38 +3435,26 @@ exit; end; - if (not FCurrentCreated) or (FCurrentClippedWidth <> w) or (FCurrentClippedHeight <> h) then begin + if (not Painter.Created) or (FCaretPainter.Width <> w) or (FCaretPainter.Height <> h) then begin {$IFDeF SynCaretDebug} - debugln(['SynEditCaret CreateCaret for HandleOwner=',FHandleOwner, ' DebugShowCount=', FDebugShowCount, ' Width=', w, ' pref-width=', FPixelWidth, ' Height=', FPixelHeight, ' FCurrentCreated=',FCurrentCreated, ' FCurrentVisible=',FCurrentVisible]); + debugln(['SynEditCaret CreateCaret for HandleOwner=',FHandleOwner, ' DebugShowCount=', FDebugShowCount, ' Width=', w, ' pref-width=', FPixelWidth, ' Height=', FPixelHeight, ' FCurrentCreated=',Painter.Created, ' FCurrentVisible=',Painter.Showing]); FDebugShowCount := 0; {$ENDIF} - //if FCurrentCreated then - // LCLIntf.DestroyCaret(Handle); // // Create caret includes destroy - CreateCaret(Handle, 0, w, h); - FCurrentCreated := True; - FCurrentVisible := False; - FCurrentClippedWidth := w; - FCurrentClippedHeight := h; - FCurrentPosX := x - 1; - SetCaretRespondToFocus(Handle, False); // Only for GTK + FCaretPainter.CreateCaret(w, h); end; - if (x <> FCurrentPosX) or (y <> FCurrentPosY) then begin + if (x <> Painter.Left) or (y <> Painter.Top) or (Painter.NeedPositionConfirmed) then begin {$IFDeF SynCaretDebug} debugln(['SynEditCaret SetPos for HandleOwner=',FHandleOwner, ' x=', x, ' y=',y]); {$ENDIF} - SetCaretPosEx(Handle, x, y); - FCurrentPosX := x; - FCurrentPosY := y; + FCaretPainter.SetCaretPosEx(x, y); end; - if (not FCurrentVisible) then begin + if (not Painter.Showing) then begin {$IFDeF SynCaretDebug} - debugln(['SynEditCaret ShowCaret for HandleOwner=',FHandleOwner, ' FDebugShowCount=',FDebugShowCount, ' FVisible=', FVisible, ' FCurrentVisible=', FCurrentVisible]); + debugln(['SynEditCaret ShowCaret for HandleOwner=',FHandleOwner, ' FDebugShowCount=',FDebugShowCount, ' FVisible=', FVisible, ' FCurrentVisible=', Painter.Showing]); inc(FDebugShowCount); {$ENDIF} - if LCLIntf.ShowCaret(Handle) then - FCurrentVisible := True - else begin + if not FCaretPainter.ShowCaret then begin {$IFDeF SynCaretDebug} debugln(['SynEditCaret ShowCaret FAILED for HandleOwner=',FHandleOwner, ' FDebugShowCount=',FDebugShowCount]); {$ENDIF} @@ -2567,14 +3467,13 @@ begin if not HandleAllocated then exit; - if not FCurrentCreated then exit; - if FCurrentVisible then begin + if not Painter.Created then exit; + if Painter.Showing then begin {$IFDeF SynCaretDebug} - debugln(['SynEditCaret HideCaret for HandleOwner=',FHandleOwner, ' FDebugShowCount=',FDebugShowCount, ' FVisible=', FVisible, ' FCurrentVisible=', FCurrentVisible]); + debugln(['SynEditCaret HideCaret for HandleOwner=',FHandleOwner, ' FDebugShowCount=',FDebugShowCount, ' FVisible=', FVisible, ' FCurrentVisible=', Painter.Showing]); dec(FDebugShowCount); {$ENDIF} - if LCLIntf.HideCaret(Handle) then - FCurrentVisible := False + if FCaretPainter.HideCaret then else begin {$IFDeF SynCaretDebug} debugln(['SynEditCaret HideCaret FAILED for HandleOwner=',FHandleOwner, ' FDebugShowCount=',FDebugShowCount]); diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedit.pp lazarus-1.6+dfsg/components/synedit/synedit.pp --- lazarus-1.4.4+dfsg/components/synedit/synedit.pp 2015-09-29 22:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedit.pp 2016-02-13 12:40:25.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synedit.pp 49899 2015-09-29 22:22:25Z maxim $ +$Id: synedit.pp 51609 2016-02-13 12:40:25Z maxim $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -137,6 +137,8 @@ var Handled: boolean; var Command: TSynEditorCommand; FinishComboOnly: Boolean; var ComboKeyStrokes: TSynEditKeyStrokes) of object; + TSynUndoRedoItemEvent = function (Caller: TObject; Item: TSynEditUndoItem): Boolean of object; + TPaintEvent = procedure(Sender: TObject; ACanvas: TCanvas) of object; TChangeUpdatingEvent = procedure(ASender: TObject; AnUpdating: Boolean) of object; @@ -182,13 +184,14 @@ TSynStateFlag = (sfCaretChanged, sfHideCursor, sfEnsureCursorPos, sfEnsureCursorPosAtResize, - sfIgnoreNextChar, sfPainting, sfHasScrolled, + sfExplicitTopLine, sfExplicitLeftChar, // when doing EnsureCursorPos keep top/Left, if they where set explicitly after the caret (only applies before handle creation) + sfIgnoreNextChar, sfPainting, sfHasPainted, sfHasScrolled, sfScrollbarChanged, sfHorizScrollbarVisible, sfVertScrollbarVisible, sfAfterLoadFromFileNeeded, // Mouse-states sfLeftGutterClick, sfRightGutterClick, - sfDblClicked, sfTripleClicked, sfQuadClicked, - sfWaitForDragging, sfIsDragging, sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting, + sfInClick, sfDblClicked, sfTripleClicked, sfQuadClicked, + sfWaitForDragging, sfWaitForDraggingNoCaret, sfIsDragging, sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting, sfIgnoreUpClick, sfSelChanged ); //mh 2000-10-30 @@ -368,6 +371,13 @@ ); end; + { TSynUndoRedoItemHandlerList } + + TSynUndoRedoItemHandlerList = Class(TMethodList) + public + function CallUndoRedoItemHandlers(Caller: TObject; Item: TSynEditUndoItem): Boolean; + end; + { TLazSynMouseDownEventList } TLazSynMouseDownEventList = Class(TMethodList) @@ -449,7 +459,7 @@ FBlockTabIndent: integer; FCaret: TSynEditCaret; FInternalCaret: TSynEditCaret; - FScreenCaret: TSynEditScreenCaret; + //FScreenCaret: TSynEditScreenCaret; FInternalBlockSelection: TSynEditSelection; FOnChangeUpdating: TChangeUpdatingEvent; FMouseSelectionMode: TSynSelectionMode; @@ -512,6 +522,10 @@ FBookMarks: array[0..9] of TSynEditMark; fMouseDownX: integer; fMouseDownY: integer; + FMouseDownButton: TMouseButton; + FMouseDownShift: TShiftState; + FConfirmMouseDownMatchAct: TSynEditMouseAction; + FConfirmMouseDownMatchFound: Boolean; fBookMarkOpt: TSynBookMarkOpt; FMouseWheelAccumulator, FMouseWheelLinesAccumulator: integer; fHideSelection: boolean; @@ -538,11 +552,14 @@ fTSearch: TSynEditSearch; fHookedCommandHandlers: TList; FHookedKeyTranslationList: TSynHookedKeyTranslationList; + FUndoRedoItemHandlerList: TSynUndoRedoItemHandlerList; FMouseDownEventList: TLazSynMouseDownEventList; FKeyDownEventList: TLazSynKeyDownEventList; FKeyPressEventList: TLazSynKeyPressEventList; FUtf8KeyPressEventList: TLazSynUtf8KeyPressEventList; FStatusChangedList: TObject; + FPaintEventHandlerList: TObject; // TSynPaintEventHandlerList + FScrollEventHandlerList: TObject; // TSynScrollEventHandlerList FPlugins: TList; fScrollTimer: TTimer; FScrollDeltaX, FScrollDeltaY: Integer; @@ -736,11 +753,13 @@ FTextArea: TLazSynTextArea; FLeftGutterArea, FRightGutterArea: TLazSynGutterArea; FPaintArea: TLazSynSurfaceManager; + property ScreenCaret: TSynEditScreenCaret read FScreenCaret; procedure Paint; override; procedure StartPaintBuffer(const ClipRect: TRect); procedure EndPaintBuffer(const ClipRect: TRect); procedure DoOnPaint; virtual; + function GetPaintArea: TLazSynSurfaceManager; override; procedure IncPaintLock; procedure DecPaintLock; @@ -841,7 +860,7 @@ function DoOnReplaceText(const ASearch, AReplace: string; Line, Column: integer): TSynReplaceAction; virtual; procedure DoOnStatusChange(Changes: TSynStatusChanges); virtual; - property LastMouseCaret: TPoint read FLastMouseCaret write SetLastMouseCaret; + property LastMouseCaret: TPoint read FLastMouseCaret write SetLastMouseCaret; // TODO: deprecate? see MouseMove function GetSelEnd: integer; //L505 function GetSelStart: integer; procedure SetSelEnd(const Value: integer); @@ -893,7 +912,13 @@ property IsBackwardSel: Boolean read GetIsBackwardSel; property SelText: string read GetSelText write SetSelTextExternal; - // Text + // Text Raw (not undo-able) + procedure Clear; + procedure Append(const Value: String); + property LineText: string read GetLineText write SetLineText; // textline at CaretY + property Text: string read SynGetText write SynSetText; // No uncommited (trailing/trimmable) spaces + + // Text (unho-able) procedure ClearAll; procedure InsertTextAtCaret(aText: String; aCaretMode : TSynCaretAdjustMode = scamEnd); @@ -909,8 +934,6 @@ aSelectionMode: TSynSelectionMode = smNormal ); - property LineText: string read GetLineText write SetLineText; - property Text: string read SynGetText write SynSetText; // No uncommited (trailing/trimmable) spaces function GetLineState(ALine: Integer): TSynLineState; procedure MarkTextAsSaved; @@ -941,7 +964,8 @@ function ExecuteAction(ExeAction: TBasicAction): boolean; override; procedure CommandProcessor(Command:TSynEditorCommand; AChar: TUTF8Char; - Data:pointer); virtual; + Data:pointer; + ASkipHooks: THookedCommandFlags = []); virtual; procedure ExecuteCommand(Command: TSynEditorCommand; const AChar: TUTF8Char; Data: pointer); virtual; @@ -950,6 +974,7 @@ function GetHighlighterAttriAtRowColEx(XY: TPoint; out Token: string; out TokenType, Start: Integer; out Attri: TSynHighlighterAttributes): boolean; //L505 + procedure CaretAtIdentOrString(XY: TPoint; out AtIdent, NearString: Boolean); procedure GetWordBoundsAtRowCol(const XY: TPoint; out StartX, EndX: integer); function GetWordAtRowCol(XY: TPoint): string; function NextTokenPos: TPoint; virtual; deprecated; // use next word pos instead @@ -1004,6 +1029,9 @@ procedure RegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent); procedure UnRegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent); + procedure RegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); + procedure UnRegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); + procedure RegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent; AChanges: TSynStatusChanges); procedure UnRegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent); @@ -1017,6 +1045,11 @@ procedure RegisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent); procedure UnregisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent); + procedure RegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc; AnEvents: TSynPaintEvents); + procedure UnRegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc); + procedure RegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc; AnEvents: TSynScrollEvents); + procedure UnRegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc); + function SearchReplace(const ASearch, AReplace: string; AOptions: TSynSearchOptions): integer; function SearchReplaceEx(const ASearch, AReplace: string; @@ -1087,6 +1120,7 @@ property SelectedColor: TSynSelectedColor read GetSelectedColor write SetSelectedColor; // Colors + property MarkupManager: TSynEditMarkupManager read fMarkupManager; property Color default clWhite; property IncrementColor: TSynSelectedColor read GetIncrementColor write SetIncrementColor; property HighlightAllColor: TSynSelectedColor read GetHighlightAllColor write SetHighlightAllColor; @@ -1296,6 +1330,25 @@ procedure CallStatusChangedHandlers(Sender: TObject; Changes: TSynStatusChanges); end; + { TSynPaintEventHandlerList } + + TSynPaintEventHandlerList = Class(TSynFilteredMethodList) + public + procedure Add(AHandler: TSynPaintEventProc; Changes: TSynPaintEvents); + procedure Remove(AHandler: TSynPaintEventProc); + procedure CallPaintEventHandlers(Sender: TObject; AnEvent: TSynPaintEvent; const rcClip: TRect); + end; + + { TSynScrollEventHandlerList} + + TSynScrollEventHandlerList = Class(TSynFilteredMethodList) + public + procedure Add(AHandler: TSynScrollEventProc; Changes: TSynScrollEvents); + procedure Remove(AHandler: TSynScrollEventProc); + procedure CallScrollEventHandlers(Sender: TObject; AnEvent: TSynScrollEvent; + dx, dy: Integer; const rcScroll, rcClip: TRect); + end; + { TSynEditUndoCaret } TSynEditUndoCaret = class(TSynEditUndoItem) @@ -1884,6 +1937,8 @@ FRecalcCharsAndLinesLock := 0; FStatusChangedList := TSynStatusChangedHandlerList.Create; + FPaintEventHandlerList := TSynPaintEventHandlerList.Create; + FScrollEventHandlerList := TSynScrollEventHandlerList.Create; FDefaultBeautifier := TSynBeautifier.Create(self); FBeautifier := FDefaultBeautifier; @@ -1904,7 +1959,8 @@ (FTrimmedLinesView); {$IFDEF WithSynExperimentalCharWidth} - FSysCharWidthLinesView := TSynEditStringSystemWidthChars.Create(FDoubleWidthChrLinesView, Self.Canvas); + //FSysCharWidthLinesView := TSynEditStringSystemWidthChars.Create(FDoubleWidthChrLinesView, Self.Canvas); + FSysCharWidthLinesView := TSynEditStringSystemWidthChars.Create(FTrimmedLinesView, Self.Canvas); FBidiChrLinesView := TSynEditStringBidiChars.Create(FSysCharWidthLinesView); FTabbedLinesView := TSynEditStringTabExpander.Create(FBidiChrLinesView); @@ -1988,6 +2044,9 @@ {$ENDIF} fTextDrawer := TheTextDrawer.Create([fsBold], fFontDummy); + {$IFDEF WithSynExperimentalCharWidth} + FSysCharWidthLinesView.TextDrawer := fTextDrawer; + {$ENDIF} // WithSynExperimentalCharWidth FPaintLineColor := TSynSelectedColor.Create; FPaintLineColor2 := TSynSelectedColor.Create; fBookMarkOpt := TSynBookMarkOpt.Create(Self); @@ -2006,6 +2065,8 @@ Cursor := crIBeam; fPlugins := TList.Create; FHookedKeyTranslationList := TSynHookedKeyTranslationList.Create; + FUndoRedoItemHandlerList := TSynUndoRedoItemHandlerList.Create; + // needed before setting color fMarkupHighCaret := TSynEditMarkupHighlightAllCaret.Create(self); fMarkupHighCaret.Selection := FBlockSelection; @@ -2358,6 +2419,7 @@ FRightGutter.UnRegisterResizeHandler(@GutterResized); FreeAndNil(FHookedKeyTranslationList); + FreeAndNil(FUndoRedoItemHandlerList); fHookedCommandHandlers:=nil; fPlugins:=nil; FCaret.Lines := nil; @@ -2407,6 +2469,8 @@ FreeAndNil(fInternalCaret); FreeAndNil(FScreenCaret); FreeAndNil(FStatusChangedList); + FreeAndNil(FPaintEventHandlerList); + FreeAndNil(FScrollEventHandlerList); FBeautifier := nil; FreeAndNil(FDefaultBeautifier); FreeAndNil(FKeyDownEventList); @@ -2967,6 +3031,8 @@ i, j: integer; p1, p2: TPoint; s: String; + AnActionResultDummy: TSynEditMouseActionResult; + DownMisMatch: Boolean; begin AnAction := nil; Result := False; @@ -2974,6 +3040,46 @@ AnAction := AnActionList.FindCommand(AnInfo, AnAction); if AnAction = nil then exit(False); + + if (FConfirmMouseDownMatchAct <> nil) then begin + // simulated up click at the coordinates of the down click + if FConfirmMouseDownMatchAct = AnAction then begin + FConfirmMouseDownMatchFound := True; + exit(True); + end; + if not(crLastDownPosSearchAll in FConfirmMouseDownMatchAct.ButtonUpRestrictions) then + exit(True); + + continue; + end; + + if (AnAction.ClickDir = cdUp) and (AnAction.ButtonUpRestrictions - [crAllowFallback] <> []) then + begin + DownMisMatch := ( (crLastDownButton in AnAction.ButtonUpRestrictions) and + (SynMouseButtonMap[FMouseDownButton] <> AnInfo.Button) ) or + ( (crLastDownShift in AnAction.ButtonUpRestrictions) and + (FMouseDownShift * [ssShift, ssAlt, ssCtrl, ssMeta, ssSuper, ssHyper, ssAltGr, ssCaps, ssNum, ssScroll] + <> AnInfo.Shift * [ssShift, ssAlt, ssCtrl, ssMeta, ssSuper, ssHyper, ssAltGr, ssCaps, ssNum, ssScroll]) ) or + ( (crLastDownPosSameLine in AnAction.ButtonUpRestrictions) and + (PixelsToRowColumn(Point(fMouseDownX, fMouseDownY)).y <> AnInfo.NewCaret.LinePos) ); + + If (not DownMisMatch) and (crLastDownPos in AnAction.ButtonUpRestrictions) then begin + try + FConfirmMouseDownMatchAct := AnAction; + FConfirmMouseDownMatchFound := False; + // simulate up click at the coordinates of the down click + FindAndHandleMouseAction(AnInfo.Button, AnInfo.Shift, fMouseDownX, fMouseDownY, AnInfo.CCount, cdUp, AnActionResultDummy); + finally + FConfirmMouseDownMatchAct := nil; + end; + DownMisMatch := not FConfirmMouseDownMatchFound; + end; + + If DownMisMatch then + exit(not(crAllowFallback in AnAction.ButtonUpRestrictions)); + end; + + ACommand := AnAction.Command; AnInfo.CaretDone := False; @@ -3032,7 +3138,7 @@ case ACommand of emcNone: ; // do nothing, but result := true - emcStartSelections, emcStartColumnSelections, emcStartLineSelections, + emcStartSelections, emcStartColumnSelections, emcStartLineSelections, emcStartLineSelectionsNoneEmpty, emcStartSelectTokens, emcStartSelectWords, emcStartSelectLines: begin FMouseSelectionCmd := emcNone; @@ -3045,6 +3151,13 @@ FMouseSelectionMode := smColumn; emcStartLineSelections: FMouseSelectionMode := smLine; + emcStartLineSelectionsNoneEmpty: begin + FMouseSelectionMode := smLine; + if (AnAction.Option <> emcoSelectionContinue) or (not SelAvail) then + FBlockSelection.StartLineBytePos := FCaret.LineBytePos; + FBlockSelection.ActiveSelectionMode := smLine; + FBlockSelection.ForceSingleLineSelected := True; + end; emcStartSelectTokens, emcStartSelectWords, emcStartSelectLines: begin FMouseSelectionCmd := ACommand; AnInfo.NewCaret.LineCharPos := PixelsToRowColumn(Point(AnInfo.MouseX, AnInfo.MouseY), [scmLimitToLines, scmForceLeftSidePos]); @@ -3126,6 +3239,8 @@ begin if SelAvail and (SelectionMode = smNormal) then begin Include(fStateFlags, sfWaitForDragging); + if AnAction.Option = emcoNotDragedNoCaretOnUp then + Include(fStateFlags, sfWaitForDraggingNoCaret); MouseCapture := True; ResetMouseCapture := False; end @@ -3155,8 +3270,11 @@ begin if assigned(fMarkupCtrlMouse) and fMarkupCtrlMouse.IsMouseOverLink and assigned(FOnClickLink) - then - FOnClickLink(Self, SynMouseButtonBackMap[AnInfo.Button], AnInfo.Shift, AnInfo.MouseX, AnInfo.MouseY) + then begin + if AnAction.MoveCaret then + MoveCaret; + FOnClickLink(Self, SynMouseButtonBackMap[AnInfo.Button], AnInfo.Shift, AnInfo.MouseX, AnInfo.MouseY); + end else Result := False; end; @@ -3356,13 +3474,17 @@ LastMouseCaret:=PixelsToRowColumn(Point(X,Y)); fMouseDownX := X; fMouseDownY := Y; + FMouseDownButton := Button; + FMouseDownShift := Shift; fStateFlags := fStateFlags - [sfDblClicked, sfTripleClicked, sfQuadClicked, sfLeftGutterClick, sfRightGutterClick, sfWaitForMouseSelecting, sfMouseSelecting, sfMouseDoneSelecting, - sfWaitForDragging, sfIgnoreUpClick + sfWaitForDragging, sfWaitForDraggingNoCaret, sfIgnoreUpClick ]; + Include(fStateFlags, sfInClick); + if ssQuad in Shift then begin CType := ccQuad; Include(fStateFlags, sfQuadClicked); @@ -3416,7 +3538,7 @@ FRightGutter.MouseMove(Shift, X, Y); FLastMousePoint := Point(X,Y); - LastMouseCaret := PixelsToRowColumn(Point(X,Y)); + LastMouseCaret := PixelsToRowColumn(Point(X,Y)); // TODO: Used for ctrl-Link => Use LastMousePoint, and calculate only, if modifier is down UpdateCursor; if (sfWaitForMouseSelecting in fStateFlags) and MouseCapture and @@ -3433,7 +3555,7 @@ or (Abs(fMouseDownY - Y) >= GetSystemMetrics(SM_CYDRAG)) then begin FStateFlags := FStateFlags - -[sfWaitForDragging, sfWaitForMouseSelecting, sfMouseSelecting] + -[sfWaitForDragging, sfWaitForDraggingNoCaret, sfWaitForMouseSelecting, sfMouseSelecting] + [sfIsDragging]; FBlockSelection.StickyAutoExtend := False; //debugln('TCustomSynEdit.MouseMove BeginDrag'); @@ -3520,8 +3642,9 @@ if (sfMouseSelecting in fStateFlags) and ((fScrollDeltaX <> 0) or (fScrollDeltaY <> 0)) then Include(fStateFlags, sfMouseDoneSelecting); end; - if sfMouseDoneSelecting in fStateFlags then + if sfMouseDoneSelecting in fStateFlags then begin FBlockSelection.ActiveSelectionMode := FMouseSelectionMode; + end; if sfIsDragging in fStateFlags then FBlockSelection.DecPersistentLock; end @@ -3624,24 +3747,23 @@ fScrollTimer.Enabled := False; inherited MouseUp(Button, Shift, X, Y); MouseCapture := False; + if not (sfInClick in fStateFlags) then + exit; if sfQuadClicked in fStateFlags then begin CType := ccQuad; - Include(fStateFlags, sfQuadClicked); end else if sfTripleClicked in fStateFlags then begin CType := ccTriple; - Include(fStateFlags, sfTripleClicked); end else if sfDblClicked in fStateFlags then begin CType := ccDouble; - Include(fStateFlags, sfDblClicked); end else CType := ccSingle; - fStateFlags:=fStateFlags - [sfDblClicked,sfTripleClicked,sfQuadClicked]; + fStateFlags:=fStateFlags - [sfInClick, sfDblClicked,sfTripleClicked,sfQuadClicked]; - if sfWaitForDragging in fStateFlags then + if fStateFlags * [sfWaitForDragging, sfWaitForDraggingNoCaret] = [sfWaitForDragging] then begin ComputeCaret(X, Y); SetBlockBegin(LogicalCaretXY); @@ -3713,17 +3835,21 @@ Include(fStateFlags,sfPainting); Exclude(fStateFlags, sfHasScrolled); + TSynPaintEventHandlerList(FPaintEventHandlerList).CallPaintEventHandlers(Self, peBeforePaint, rcClip); + FScreenCaret.BeginPaint(rcClip); // Now paint everything while the caret is hidden. - FScreenCaret.Hide; try FPaintArea.Paint(Canvas, rcClip); DoOnPaint; finally + UpdateCaret; // Todo: this is to call only ShowCaret() / do not create caret here / Issue 0021924 + FScreenCaret.FinishPaint(rcClip); // after update caret + TSynPaintEventHandlerList(FPaintEventHandlerList).CallPaintEventHandlers(Self, peAfterPaint, rcClip); {$IFDEF EnableDoubleBuf} EndPaintBuffer(rcClip); {$ENDIF} - UpdateCaret; // Todo: only ShowCaret() / do not create caret here / Issue 0021924 Exclude(fStateFlags,sfPainting); + Include(fStateFlags, sfHasPainted); end; end; @@ -4151,6 +4277,16 @@ SetParagraphBlock(CaretXY); end; +procedure TCustomSynEdit.Clear; +begin + FTheLinesView.Clear; +end; + +procedure TCustomSynEdit.Append(const Value: String); +begin + FTheLinesView.Append(Value); +end; + procedure TCustomSynEdit.DoBlockSelectionChanged(Sender : TObject); begin StatusChanged([scSelection]); @@ -4236,6 +4372,7 @@ procedure TCustomSynEdit.CaretChanged(Sender: TObject); begin Include(fStateFlags, sfCaretChanged); + fStateFlags := fStateFlags - [sfExplicitTopLine, sfExplicitLeftChar]; if FCaret.OldCharPos <> FCaret.CharPos then Include(fStatusChanges, scCaretX); if FCaret.OldLinePos <> FCaret.LinePos then begin @@ -4272,6 +4409,8 @@ //{BUG21996} DebugLn(['TCustomSynEdit.SetLeftChar=',Value,' Caret=',dbgs(CaretXY),', BlockBegin=',dbgs(BlockBegin),' BlockEnd=',dbgs(BlockEnd), ' StateFlags=',dbgs(fStateFlags), ' paintlock', FPaintLock]); Value := Min(Value, CurrentMaxLeftChar); Value := Max(Value, 1); + if not HandleAllocated then + Include(fStateFlags, sfExplicitLeftChar); if Value <> FTextArea.LeftChar then begin FTextArea.LeftChar := Value; UpdateScrollBars; @@ -4393,6 +4532,8 @@ if FFoldedLinesView.FoldedAtTextIndex[Value-1] then Value := FindNextUnfoldedLine(Value, True); + if not HandleAllocated then + Include(fStateFlags, sfExplicitTopLine); NewTopView := FFoldedLinesView.TextIndexToViewPos(Value-1); if NewTopView <> TopView then begin TopView := NewTopView; @@ -4422,17 +4563,23 @@ srect := FPaintArea.Bounds; srect.Top := FTextArea.TextBounds.Top; srect.Bottom := FTextArea.TextBounds.Bottom; + TSynScrollEventHandlerList(FScrollEventHandlerList).CallScrollEventHandlers(Self, peBeforeScroll, + 0, LineHeight * Delta, srect, srect); + FScreenCaret.BeginScroll(0, LineHeight * Delta, srect, srect); if ScrollWindowEx(Handle, 0, LineHeight * Delta, @srect, @srect, 0, nil, SW_INVALIDATE) then begin {$IFDEF SYNSCROLLDEBUG} debugln(['ScrollAfterTopLineChanged did scroll Delta=',Delta]); {$ENDIF} include(fStateFlags, sfHasScrolled); - {$IFDEF Windows} // May be needed in other OS ? Trunk does that for all OS, but testing is needed Include(fStateFlags, sfCaretChanged); // need to update - {$ENDIF} - FScreenCaret.InvalidatePos; // Wine (Win emulator) may have changed the pos with the scroll + FScreenCaret.FinishScroll(0, LineHeight * Delta, srect, srect, True); + TSynScrollEventHandlerList(FScrollEventHandlerList).CallScrollEventHandlers(Self, peAfterScroll, + 0, LineHeight * Delta, srect, srect); end else begin + FScreenCaret.FinishScroll(0, LineHeight * Delta, srect, srect, False); + TSynScrollEventHandlerList(FScrollEventHandlerList).CallScrollEventHandlers(Self, peAfterScrollFailed, + 0, LineHeight * Delta, srect, srect); Invalidate; // scrollwindow failed, invalidate all {$IFDEF SYNSCROLLDEBUG} debugln(['ScrollAfterTopLineChanged does invalidet (scroll failed) Delta=',Delta]); @@ -4675,6 +4822,7 @@ begin if fCaret = nil then exit; // This SynEdit is in Destroy Exclude(FStateFlags, sfHideCursor); + Exclude(fStateFlags, sfInClick); {$IFDEF VerboseFocus} DebugLn(['[TCustomSynEdit.WMKillFocus] A ',DbgSName(Self), ' time=', dbgs(Now*86640)]); {$ENDIF} @@ -4690,6 +4838,7 @@ FImeHandler.FocusKilled; {$ENDIF} inherited; + StatusChanged([scFocus]); end; procedure TCustomSynEdit.WMSetFocus(var Msg: TLMSetFocus); @@ -4706,6 +4855,7 @@ // Invalidate; inherited; //DebugLn('[TCustomSynEdit.WMSetFocus] END'); + StatusChanged([scFocus]); end; procedure TCustomSynEdit.DoOnResize; @@ -4915,7 +5065,7 @@ if (FChangedLinesStart<1) or (FChangedLinesStart>AIndex+1) then FChangedLinesStart:=AIndex+1; if (FChangedLinesEnd >= 0) and (FChangedLinesEnd<AIndex+1) then - FChangedLinesEnd:=AIndex + 1 + MaX(ACount, 0); + FChangedLinesEnd:=AIndex + 1 + MaX(ACount, 0); // TODO: why 2 (TWO) extra lines? end else begin ScanRanges; InvalidateLines(AIndex + 1, AIndex + ACount); @@ -4982,6 +5132,9 @@ AValue := Min(AValue, CurrentMaxTopView); AValue := Max(AValue, 1); + if not HandleAllocated then + Include(fStateFlags, sfExplicitTopLine); + (* ToDo: FFoldedLinesView.TopLine := AValue; Required, if "TopView := TopView" or "TopLine := TopLine" is called, after ScanRanges (used to be: LineCountChanged / LineTextChanged) @@ -5203,7 +5356,8 @@ end else if not Item.PerformUndo(self) then - FTheLinesView.EditRedo(Item); + if not FUndoRedoItemHandlerList.CallUndoRedoItemHandlers(Self, Item) then + FTheLinesView.EditRedo(Item); finally FCaret.DecForcePastEOL; Item.Free; @@ -5336,7 +5490,8 @@ else if not Item.PerformUndo(self) then - FTheLinesView.EditUndo(Item); + if not FUndoRedoItemHandlerList.CallUndoRedoItemHandlers(Self, Item) then + FTheLinesView.EditUndo(Item); finally FTrimmedLinesView.UndoTrimmedSpaces := False; FCaret.DecForcePastEOL; @@ -5436,6 +5591,7 @@ FreeAndNil(FMarkList); end; end; + StatusChanged([scOptions]); end; procedure TCustomSynEdit.ChangeTextBuffer(NewBuffer: TSynEditStringList); @@ -5702,6 +5858,7 @@ then FPaintArea.VisibleSpecialChars := AValue else FPaintArea.VisibleSpecialChars := []; if eoShowSpecialChars in Options then Invalidate; + StatusChanged([scOptions]); end; function TCustomSynEdit.GetLineState(ALine: Integer): TSynLineState; @@ -5775,6 +5932,12 @@ const ALT_KEY_DOWN = $20000000; begin + // ASAP after a paint // in case an App.AsyncCall takes longer + if (Msg.msg <> WM_PAINT) and (Msg.msg <> LM_PAINT) and + (sfHasPainted in fStateFlags) and (FScreenCaret <> nil) + then + FScreenCaret.AfterPaintEvent; + if (Msg.Msg = WM_SYSCHAR) and (Msg.wParam = VK_BACK) and (Msg.lParam and ALT_KEY_DOWN <> 0) then @@ -6040,6 +6203,7 @@ FInsertCaret := Value; if InsertMode then FScreenCaret.DisplayType := fInsertCaret; + StatusChanged([scOptions]); end; end; @@ -6049,6 +6213,7 @@ FOverwriteCaret := Value; if not InsertMode then FScreenCaret.DisplayType := fOverwriteCaret; + StatusChanged([scOptions]); end; end; @@ -6110,24 +6275,28 @@ MaxX:=Min(PhysBlockEndXY.X,MinX+CharsInWindow-1); end; end; - {DebugLn('TCustomSynEdit.EnsureCursorPosVisible A CaretX=',dbgs(PhysCaretXY.X), - ' BlockX=',dbgs(PhysBlockBeginXY.X)+'-'+dbgs(PhysBlockEndXY.X), - ' CharsInWindow='+dbgs(CharsInWindow), MinX='+dbgs(MinX),' MaxX='+dbgs(MaxX), - ' LeftChar='+dbgs(LeftChar), '');} - if MinX < LeftChar then - LeftChar := MinX - else if LeftChar < MaxX - (Max(1, CharsInWindow) - 1 - FScreenCaret.ExtraLineChars) then - LeftChar := MaxX - (Max(1, CharsInWindow) - 1 - FScreenCaret.ExtraLineChars) - else - LeftChar := LeftChar; //mh 2000-10-19 - //DebugLn(['TCustomSynEdit.EnsureCursorPosVisible B LeftChar=',LeftChar,' MinX=',MinX,' MaxX=',MaxX,' CharsInWindow=',CharsInWindow]); - // Make sure Y is visible - if CaretY < TopLine then - TopLine := CaretY - else if CaretY > ScreenRowToRow(Max(1, LinesInWindow) - 1) then //mh 2000-10-19 - TopLine := FFoldedLinesView.TextPosAddLines(CaretY, -Max(0, LinesInWindow-1)) - else - TopView := TopView; //mh 2000-10-19 + if not (sfExplicitLeftChar in fStateFlags) then begin + {DebugLn('TCustomSynEdit.EnsureCursorPosVisible A CaretX=',dbgs(PhysCaretXY.X), + ' BlockX=',dbgs(PhysBlockBeginXY.X)+'-'+dbgs(PhysBlockEndXY.X), + ' CharsInWindow='+dbgs(CharsInWindow), MinX='+dbgs(MinX),' MaxX='+dbgs(MaxX), + ' LeftChar='+dbgs(LeftChar), '');} + if MinX < LeftChar then + LeftChar := MinX + else if LeftChar < MaxX - (Max(1, CharsInWindow) - 1 - FScreenCaret.ExtraLineChars) then + LeftChar := MaxX - (Max(1, CharsInWindow) - 1 - FScreenCaret.ExtraLineChars) + else + LeftChar := LeftChar; //mh 2000-10-19 + end; + if not (sfExplicitTopLine in fStateFlags) then begin + //DebugLn(['TCustomSynEdit.EnsureCursorPosVisible B LeftChar=',LeftChar,' MinX=',MinX,' MaxX=',MaxX,' CharsInWindow=',CharsInWindow]); + // Make sure Y is visible + if CaretY < TopLine then + TopLine := CaretY + else if CaretY > ScreenRowToRow(Max(1, LinesInWindow) - 1) then //mh 2000-10-19 + TopLine := FFoldedLinesView.TextPosAddLines(CaretY, -Max(0, LinesInWindow-1)) + else + TopView := TopView; //mh 2000-10-19 + end; finally DoDecPaintLock(Self); //{BUG21996} DebugLnExit(['TCustomSynEdit.EnsureCursorPosVisible Caret=',dbgs(CaretXY),', BlockBegin=',dbgs(BlockBegin),' BlockEnd=',dbgs(BlockEnd), ' StateFlags=',dbgs(fStateFlags), ' paintlock', FPaintLock]); @@ -6177,9 +6346,8 @@ FRightGutter.ResetMouseActions; end; -procedure TCustomSynEdit.CommandProcessor(Command: TSynEditorCommand; - AChar: TUTF8Char; - Data: pointer); +procedure TCustomSynEdit.CommandProcessor(Command: TSynEditorCommand; AChar: TUTF8Char; + Data: pointer; ASkipHooks: THookedCommandFlags); var InitialCmd: TSynEditorCommand; BeautifyWorker: TSynCustomBeautifier; @@ -6192,7 +6360,8 @@ {$ENDIF} // first the program event handler gets a chance to process the command InitialCmd := Command; - NotifyHookedCommandHandlers(Command, AChar, Data, hcfInit); + if not(hcfInit in ASkipHooks) then + NotifyHookedCommandHandlers(Command, AChar, Data, hcfInit); DoOnProcessCommand(Command, AChar, Data); if Command <> ecNone then begin try @@ -6206,14 +6375,14 @@ end; // notify hooked command handlers before the command is executed inside of // the class - if Command <> ecNone then + if (Command <> ecNone) and not(hcfPreExec in ASkipHooks) then NotifyHookedCommandHandlers(Command, AChar, Data, hcfPreExec); // internal command handler if (Command <> ecNone) and (Command < ecUserFirst) then ExecuteCommand(Command, AChar, Data); // notify hooked command handlers after the command was executed inside of - // the class - if Command <> ecNone then + // the class (only if NOT handled by hcfPreExec) + if (Command <> ecNone) and not(hcfPostExec in ASkipHooks) then NotifyHookedCommandHandlers(Command, AChar, Data, hcfPostExec); if Command <> ecNone then DoOnCommandProcessed(Command, AChar, Data); @@ -6235,7 +6404,9 @@ {$ENDIF} end; end; - NotifyHookedCommandHandlers(Command, AChar, Data, hcfFinish); + Command := InitialCmd; + if not(hcfFinish in ASkipHooks) then + NotifyHookedCommandHandlers(Command, AChar, Data, hcfFinish); finally DecLCLRefCount; end; @@ -6767,9 +6938,15 @@ DefaultSelectionMode := SEL_MODE[Command]; end; EcFoldLevel1..EcFoldLevel9: - FoldAll(Command - EcFoldLevel1); + begin + FoldAll(Command - EcFoldLevel1); + FCaret.Touch; + end; EcFoldLevel0: - UnfoldAll; + begin + UnfoldAll; + FCaret.Touch; + end; EcFoldCurrent: begin CY := FFoldedLinesView.ExpandedLineForBlockAtLine(CaretY); @@ -6779,9 +6956,28 @@ end; end; EcUnFoldCurrent: + begin FFoldedLinesView.UnFoldAtTextIndex(CaretY-1); + FCaret.Touch; + end; EcToggleMarkupWord: FMarkupHighCaret.ToggleCurrentWord; + ecZoomOut, ecZoomIn: begin + if not (( (Command = ecZoomOut) and (abs(Font.Height) < 3) ) or + ( (Command = ecZoomIn) and (abs(Font.Height) > 50) )) + then begin + CY := 1; + if Command = ecZoomIn then CY := -1; + CX := FLastSetFontSize; + if Font.Height < 0 + then Font.Height := Font.Height + CY + else Font.Height := Font.Height - CY; + FLastSetFontSize := CX; + end; + end; + ecZoomNorm: begin + Font.Height := FLastSetFontSize; + end; end; finally DecPaintLock; @@ -7521,6 +7717,7 @@ FOptions := Value; // undo changes applied by MouseOptions + StatusChanged([scOptions]); end; procedure TCustomSynEdit.UpdateOptions; @@ -7544,6 +7741,7 @@ MoveCaretToVisibleArea; if (eoAutoHideCursor in ChangedOptions) and not(eoAutoHideCursor in fOptions2) then UpdateCursor; + StatusChanged([scOptions]); end; end; @@ -7578,6 +7776,7 @@ fMarkupCtrlMouse.UpdateCtrlMouse; UpdateCursor; end; + StatusChanged([scOptions]); end; procedure TCustomSynEdit.UpdateMouseOptions; @@ -7973,9 +8172,9 @@ end else begin BB := BlockBegin; BE := BlockEnd; - if (BE.X = 1) - then e := BE.y - 1 - else e := BE.y; + if FBlockSelection.LastLineHasSelection + then e := BE.y + else e := BE.y - 1; end; Spaces := StringOfChar(#32, FBlockIndent); @@ -8038,10 +8237,10 @@ BB := BlockBegin; BE := BlockEnd; // convert selection to complete lines - if BE.X = 1 then - e := BE.y - 1 + if FBlockSelection.LastLineHasSelection then + e := BE.y else - e := BE.y; + e := BE.y - 1; end; IncPaintLock; @@ -8641,8 +8840,7 @@ if (PosX >= Start) and (PosX < Start + Length(Token)) then begin Attri := Highlighter.GetTokenAttribute; TokenType := Highlighter.GetTokenKind; - Result := TRUE; - exit; + exit(True); end; Highlighter.Next; end; @@ -8651,7 +8849,53 @@ Token := ''; Attri := nil; TokenType := -1; - Result := FALSE; + Result := False; +end; + +procedure TCustomSynEdit.CaretAtIdentOrString(XY: TPoint; out AtIdent, NearString: Boolean); +// This is optimized to check if cursor is on identifier or string. +var + PosX, PosY: integer; + Line, Token: string; + Start: Integer; + Attri, PrevAttri: TSynHighlighterAttributes; +begin + PosY := XY.Y -1; + PrevAttri := nil; + AtIdent := False; + NearString := False; + //DebugLn(''); + //DebugLn('TCustomSynEdit.CaretAtIdentOrString: Enter'); + if Assigned(Highlighter) and (PosY >= 0) and (PosY < FTheLinesView.Count) then + begin + Line := FTheLinesView[PosY]; + fHighlighter.CurrentLines := FTheLinesView; + Highlighter.StartAtLineIndex(PosY); + PosX := XY.X; + //DebugLn([' TCustomSynEdit.CaretAtIdentOrString: Line="', Line, '", PosX=', PosX, ', PosY=', PosY]); + if (PosX > 0) and (PosX <= Length(Line)) then + begin + while not Highlighter.GetEol do + begin + Start := Highlighter.GetTokenPos + 1; + Token := Highlighter.GetToken; + //TokenType := Highlighter.GetTokenKind; + Attri := Highlighter.GetTokenAttribute; + //DebugLn([' TCustomSynEdit.CaretAtIdentOrString: Start=', Start, ', Token=', Token]); + if (PosX >= Start) and (PosX < Start + Length(Token)) then + begin + AtIdent := Attri = Highlighter.IdentifierAttribute; + NearString := (Attri = Highlighter.StringAttribute) + or (PrevAttri = Highlighter.StringAttribute); // If cursor is on end-quote. + //DebugLn([' TCustomSynEdit.CaretAtIdentOrString: Success! Attri=', Attri, + // ', AtIdent=', AtIdent, ', AtString=', AtString]); + exit; + end; + PrevAttri := Attri; + Highlighter.Next; + end; + end; + end; end; function TCustomSynEdit.IdentChars: TSynIdentChars; @@ -8861,6 +9105,16 @@ FHookedKeyTranslationList.Remove(TMEthod(AHandlerProc)); end; +procedure TCustomSynEdit.RegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); +begin + FUndoRedoItemHandlerList.Add(TMEthod(AHandlerProc)); +end; + +procedure TCustomSynEdit.UnRegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); +begin + FUndoRedoItemHandlerList.Remove(TMEthod(AHandlerProc)); +end; + procedure TCustomSynEdit.RegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent; AChanges: TSynStatusChanges); begin @@ -8924,6 +9178,28 @@ FUtf8KeyPressEventList.Remove(TMethod(AHandlerProc)); end; +procedure TCustomSynEdit.RegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc; + AnEvents: TSynPaintEvents); +begin + TSynPaintEventHandlerList(FPaintEventHandlerList).Add(APaintEventProc, AnEvents); +end; + +procedure TCustomSynEdit.UnRegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc); +begin + TSynPaintEventHandlerList(FPaintEventHandlerList).Remove(APaintEventProc); +end; + +procedure TCustomSynEdit.RegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc; + AnEvents: TSynScrollEvents); +begin + TSynScrollEventHandlerList(FScrollEventHandlerList).Add(AScrollEventProc, AnEvents); +end; + +procedure TCustomSynEdit.UnRegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc); +begin + TSynScrollEventHandlerList(FScrollEventHandlerList).Remove(AScrollEventProc); +end; + procedure TCustomSynEdit.NotifyHookedCommandHandlers(var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer; ATime: THookedCommandFlag); var @@ -8954,6 +9230,11 @@ end; end; +function TCustomSynEdit.GetPaintArea: TLazSynSurfaceManager; +begin + Result := FPaintArea; +end; + function TCustomSynEdit.DoOnReplaceText(const ASearch, AReplace: string; Line, Column: integer): TSynReplaceAction; begin @@ -9165,8 +9446,12 @@ procedure TLazSynEditPlugin.DoEditorDestroyed(const AValue: TCustomSynEdit); begin if Editor <> AValue then exit; - if OwnedByEditor then - Free + if OwnedByEditor then begin + // if no DoEditorDestroyed + if TMethod(@DoEditorRemoving).Code = Pointer(@TLazSynEditPlugin.DoEditorDestroyed) then + DoEditorRemoving(AValue); + Free; + end else Editor := nil; end; @@ -9255,6 +9540,19 @@ TKeyPressEvent(Items[i])(Sender, Key); end; +{ TSynUndoRedoItemHandlerList } + +function TSynUndoRedoItemHandlerList.CallUndoRedoItemHandlers(Caller: TObject; + Item: TSynEditUndoItem): Boolean; +var + i: LongInt; +begin + i:=Count; + Result := False; + while NextDownIndex(i) and (not Result) do + Result := TSynUndoRedoItemEvent(Items[i])(Caller, Item); +end; + { TLazSynMouseDownEventList } procedure TLazSynMouseDownEventList.CallMouseDownHandlers(Sender: TObject; @@ -9301,6 +9599,52 @@ TStatusChangeEvent(FItems[i].FHandler)(Sender, Changes); end; +{ TSynPaintEventHandlerList } + +procedure TSynPaintEventHandlerList.Add(AHandler: TSynPaintEventProc; + Changes: TSynPaintEvents); +begin + AddBitFilter(TMethod(AHandler), LongInt(Changes)); +end; + +procedure TSynPaintEventHandlerList.Remove(AHandler: TSynPaintEventProc); +begin + inherited Remove(TMethod(AHandler)); +end; + +procedure TSynPaintEventHandlerList.CallPaintEventHandlers(Sender: TObject; + AnEvent: TSynPaintEvent; const rcClip: TRect); +var + i: Integer; +begin + i:=Count; + while NextDownIndexBitFilter(i, LongInt([AnEvent])) do + TSynPaintEventProc(FItems[i].FHandler)(Sender, AnEvent, rcClip); +end; + +{ TSynScrollEventHandlerList} + +procedure TSynScrollEventHandlerList.Add(AHandler: TSynScrollEventProc; + Changes: TSynScrollEvents); +begin + AddBitFilter(TMethod(AHandler), LongInt(Changes)); +end; + +procedure TSynScrollEventHandlerList.Remove(AHandler: TSynScrollEventProc); +begin + inherited Remove(TMethod(AHandler)); +end; + +procedure TSynScrollEventHandlerList.CallScrollEventHandlers(Sender: TObject; + AnEvent: TSynScrollEvent; dx, dy: Integer; const rcScroll, rcClip: TRect); +var + i: Integer; +begin + i:=Count; + while NextDownIndexBitFilter(i, LongInt([AnEvent])) do + TSynScrollEventProc(FItems[i].FHandler)(Sender, AnEvent, dx, dy, rcScroll, rcClip); +end; + { TSynEditMarkListInternal } function TSynEditMarkListInternal.GetLinesView: TSynEditStrings; diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditsearch.pp lazarus-1.6+dfsg/components/synedit/syneditsearch.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditsearch.pp 2015-01-24 17:10:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditsearch.pp 2015-02-06 18:25:31.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: syneditsearch.pp 47505 2015-01-24 17:10:25Z martin $ +$Id: syneditsearch.pp 47604 2015-02-06 18:25:31Z juha $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -42,7 +42,8 @@ interface uses - Classes, LCLProc, SynRegExpr, SynEditMiscProcs, SynEditTypes; + Classes, SysUtils, + LCLIntf, LCLType, LCLProc, LazUTF8, SynRegExpr, SynEditMiscProcs, SynEditTypes; procedure MakeCompTable; @@ -131,9 +132,6 @@ implementation -uses - LCLIntf, LCLType, SysUtils; - var CompTableSensitive: TByteArray256; CompTableNoneSensitive: TByteArray256; @@ -815,36 +813,29 @@ // multi line pattern forward, multi line pattern backward // regex case insensitive, regex multi line forward, // regex multi line whole word - repeat + + if fRegExpr then begin + // ************ RegExp ************ + // prepare for firs iteration LineStr:=Lines[y]; - if ASupportUnicodeCase and (not fSensitive) and (not fRegExpr) then LineStr := UTF8LowerCase(LineStr); LineLen:=length(LineStr); Line:=PChar(LineStr); - if not IsFirstLine then begin - if FBackwards then begin - if fRegExpr then - x:=LineLen-1 - else - x:=LineLen-SearchLen; - end else - x:=0; - end else begin - IsFirstLine:=false; - if FBackwards then begin - if fRegExpr then - x:=EndPos.X-2 - else - x:=EndPos.X-SearchLen-1; - end else begin + if IsFirstLine then begin + if FBackwards then + x:=EndPos.X-2 + else x:=StartPos.X-1; - end; + end else begin + if FBackwards then + x:=LineLen-1 + else + x:=0; end; x:=MinMax(x,0,LineLen-1); //DebugLn(['TSynEditSearch.FindNextOne Line="',LineStr,'" x=',x,' LineLen=',LineLen]); - // search in the line - if fRegExpr then begin - // regular expression + repeat + // search in the line if SearchRegExprInLine(Max(1,x+1),LineStr) then begin //DebugLn(['TSynEditSearch.FindNextOne Found RegExpr']); FoundStartPos:=Point(RegExprEngine.MatchPos[0],y+1); @@ -856,8 +847,53 @@ fRegExprReplace:=RegExprEngine.Substitute(Replacement); exit; end; + + // next line + if FBackwards then + dec(y) + else + inc(y); + + LineStr:=Lines[y]; + LineLen:=length(LineStr); + Line:=PChar(LineStr); + if FBackwards then + x:=LineLen-1 + else + x:=0; + x:=MinMax(x,0,LineLen-1); + //DebugLn(['TSynEditSearch.FindNextOne Line="',LineStr,'" x=',x,' LineLen=',LineLen]); + until (y<MinY) or (y>MaxY); + + end // fRegExpr + else begin + // ************ NOT RegExp ************ + // prepare for firs iteration + LineStr:=Lines[y]; + if ASupportUnicodeCase and (not fSensitive) then LineStr := UTF8LowerCase(LineStr); + LineLen:=length(LineStr); + Line:=PChar(LineStr); + if IsFirstLine then begin + if FBackwards then + x:=EndPos.X-SearchLen-1 + else + x:=StartPos.X-1; + if IsMultiLinePattern then begin + if FBackwards then + x:=Min(x, 0) // keep negative to indicate pattern does not fit into line + else + x:=Max(x, LineLen-SearchLen) // keep higher x, if pattern does not fit + end; end else begin - // normal search + if FBackwards xor IsMultiLinePattern then + x:=LineLen-SearchLen + else + x:=0; + end; + //DebugLn(['TSynEditSearch.FindNextOne Line="',LineStr,'" x=',x,' LineLen=',LineLen]); + + repeat + // search in the line MaxPos:=LineLen-SearchLen; if (SearchLen=0) and ((LineLen=0) or IsMultiLinePattern) then begin @@ -871,7 +907,9 @@ end; FoundEndPos:=FoundStartPos; if CheckFound then exit(true); - end else begin + end else + if (x >= 0) and (x+SearchLen <= LineLen) then // otherwise searchterm does not fit in this line + begin //DebugLn(['TSynEditSearch.FindNextOne x=',x,' MaxPos=',MaxPos,' Line="',Line,'"']); while (x>=0) and (x<=MaxPos) do begin //DebugLn(['TSynEditSearch.FindNextOne x=',x]); @@ -912,13 +950,26 @@ inc(x,xStep); end; end; - end; - // next line - if FBackwards then - dec(y) - else - inc(y); - until (y<MinY) or (y>MaxY); + + // next line + if FBackwards then + dec(y) + else + inc(y); + + LineStr:=Lines[y]; + if ASupportUnicodeCase and (not fSensitive) then LineStr := UTF8LowerCase(LineStr); + LineLen:=length(LineStr); + Line:=PChar(LineStr); + // IsMultiLinePattern must be at other end of line (continues in next/prev line) + if FBackwards xor IsMultiLinePattern then + x:=LineLen-SearchLen + else + x:=0; + //DebugLn(['TSynEditSearch.FindNextOne Line="',LineStr,'" x=',x,' LineLen=',LineLen]); + until (y<MinY) or (y>MaxY); + + end; // NOT RegExp end; destructor TSynEditSearch.Destroy; diff -Nru lazarus-1.4.4+dfsg/components/synedit/syneditstrconst.pp lazarus-1.6+dfsg/components/synedit/syneditstrconst.pp --- lazarus-1.4.4+dfsg/components/synedit/syneditstrconst.pp 2013-08-24 23:44:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syneditstrconst.pp 2015-03-23 22:22:49.000000000 +0000 @@ -26,7 +26,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: syneditstrconst.pp 42488 2013-08-24 23:44:34Z martin $ +$Id: syneditstrconst.pp 48466 2015-03-23 22:22:49Z maxim $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -155,6 +155,8 @@ SYNS_AttrLineChanged = 'Diff Changed Line'; SYNS_AttrLineContext = 'Diff Context Line'; SYNS_AttrPrevValue = 'Previous value'; + SYNS_AttrMeasurementUnitValue = 'Measurement unit'; + SYNS_AttrSelectorValue = 'Selector'; SYNS_AttrFlags = 'Flags'; (* End of Attribute Names *) @@ -270,6 +272,8 @@ SYNS_XML_AttrLineChanged = 'Diff Changed Line'; SYNS_XML_AttrLineContext = 'Diff Context Line'; SYNS_XML_AttrPrevValue = 'Previous value'; + SYNS_XML_AttrMeasurementUnitValue = 'Measurement unit'; + SYNS_XML_AttrSelectorValue = 'Selector'; SYNS_XML_AttrFlags = 'Flags'; (* End of Stored Attribute Names *) @@ -389,7 +393,8 @@ SYNS_LangSynGenMsgfiles = 'SynGen Msg files'; SYNS_LangUnreal = 'Unreal'; SYNS_LangTeX = 'TeX'; - SYNS_LangPo = 'po language files'; + SYNS_LangPo = 'po language files'; + SYNS_LangPike = 'Pike'; resourcestring @@ -397,6 +402,7 @@ SYNS_emcStartSelection = 'Selection'; SYNS_emcStartColumnSelections = 'Column Selection'; SYNS_emcStartLineSelections = 'Line Selection'; + SYNS_emcStartLineSelectionsNoneEmpty = 'Line Selection (select immediate)'; SYNS_emcSelection_opt = 'Mode,Begin,Continue'; SYNS_emcSelectWord = 'Select Word'; SYNS_emcSelectLine = 'Select Line'; @@ -406,6 +412,7 @@ SYNS_emcPasteSelection = 'Quick Paste Selection'; SYNS_emcMouseLink = 'Source Link'; SYNS_emcMouseLink_opt = 'Underline,yes, no'; + SYNS_emcStartDragMove_opt = '"Caret on up if not dragged",yes,no'; SYNS_emcContextMenu = 'Popup Menu'; SYNS_emcBreakPointToggle = 'Toggle Breakpoint'; SYNS_emcCodeFoldCollaps = 'Fold Code'; @@ -430,6 +437,8 @@ SYNS_emcContextMenuCaretMove_opt = '"Move caret, when selection exists", Never, "Click outside", Always'; SYNS_emcWheelScroll_opt = 'Speed,"System settings",Lines,Pages,"Pages (less one line)"'; + SYNS_emcPluginMultiCaretToggleCaret = 'Toggle extra caret'; + SYNS_emcPluginMultiCaretSelectionToCarets = 'Set carets at EOL in selected lines'; implementation end. diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedittextbase.pas lazarus-1.6+dfsg/components/synedit/synedittextbase.pas --- lazarus-1.4.4+dfsg/components/synedit/synedittextbase.pas 2015-03-24 23:55:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedittextbase.pas 2015-03-23 14:50:59.000000000 +0000 @@ -128,9 +128,9 @@ protected // IsEqual is only needed/implemented for Carets function IsEqualContent(AnItem: TSynEditUndoItem): Boolean; virtual; - function IsEqual(AnItem: TSynEditUndoItem): Boolean; function DebugString: String; virtual; public + function IsEqual(AnItem: TSynEditUndoItem): Boolean; function IsCaretInfo: Boolean; virtual; function PerformUndo(Caller: TObject): Boolean; virtual; abstract; end; @@ -143,7 +143,7 @@ FCount, FCapacity: Integer; FReason: TSynEditorCommand; function GetItem(Index: Integer): TSynEditUndoItem; - procedure Grow; + procedure Grow(ANeededCapacity: Integer = 0); protected Function HasUndoInfo: Boolean; procedure Append(AnUndoGroup: TSynEditUndoItem); @@ -158,7 +158,7 @@ procedure Assign(AnUndoGroup: TSynEditUndoGroup); procedure Add(AnItem: TSynEditUndoItem); - procedure Clear; + procedure Clear(OnlyFreeItems: Boolean = False); procedure Insert(AIndex: Integer; AnItem: TSynEditUndoItem); procedure Delete(AIndex: Integer); function Pop: TSynEditUndoItem; @@ -169,6 +169,14 @@ TSynGetCaretUndoProc = function: TSynEditUndoItem of object; + TSynUpdateCaretUndoProc = procedure(var AnUndoItem: TSynEditUndoItem; AnIsBeginUndo: Boolean) of object; + + { TSynEditUpdateCaretUndoProcList } + + TSynEditUpdateCaretUndoProcList = Class(TMethodList) + public + procedure CallSearchUpdateCaretUndoProcs(var AnUndoItem: TSynEditUndoItem; AnIsBeginUndo: Boolean); + end; { TSynEditUndoList } @@ -184,6 +192,7 @@ fMaxUndoActions: integer; fOnAdded: TNotifyEvent; FOnNeedCaretUndo: TSynGetCaretUndoProc; + FOnNeedCaretUndoList: TSynEditUpdateCaretUndoProcList; fUnModifiedItem: integer; FForceGroupEnd: Boolean; procedure EnsureMaxEntries; @@ -220,6 +229,9 @@ property InGroupCount: integer read FInGroupCount; {$ENDIF} public + procedure RegisterUpdateCaretUndo(AnUpdateProc: TSynUpdateCaretUndoProc); + procedure UnregisterUpdateCaretUndo(AnUpdateProc: TSynUpdateCaretUndoProc); + property CanUndo: boolean read GetCanUndo; property FullUndoImpossible: boolean read fFullUndoImposible; property ItemCount: integer read GetItemCount; @@ -247,6 +259,18 @@ raise ESynEditStorageMem.CreateFmt(SListIndexOutOfBounds, [Index]); end; +{ TSynEditUpdateCaretUndoProcList } + +procedure TSynEditUpdateCaretUndoProcList.CallSearchUpdateCaretUndoProcs(var AnUndoItem: TSynEditUndoItem; + AnIsBeginUndo: Boolean); +var + i: LongInt; +begin + i:=Count; + while NextDownIndex(i) do + TSynUpdateCaretUndoProc(Items[i])(AnUndoItem, AnIsBeginUndo); +end; + { TSynEditStringsBase } function TSynEditStringsBase.GetPChar(ALineIndex: Integer): PChar; @@ -262,6 +286,7 @@ begin inherited Create; // Create and keep one undo group => avoids resizing the FItems list + FOnNeedCaretUndoList := TSynEditUpdateCaretUndoProcList.Create; FUndoGroup := TSynEditUndoGroup.Create; FIsInsideRedo := False; fItems := TList.Create; @@ -275,6 +300,7 @@ Clear; fItems.Free; FreeAndNil(FUndoGroup); + FreeAndNil(FOnNeedCaretUndoList); inherited Destroy; end; @@ -350,12 +376,18 @@ end; procedure TSynEditUndoList.BeginBlock; +var + c: TSynEditUndoItem; begin Inc(FInGroupCount); if (FInGroupCount = 1) then begin FUndoGroup.Clear; + c := nil; if assigned(FOnNeedCaretUndo) then - FUndoGroup.add(FOnNeedCaretUndo()); + c := FOnNeedCaretUndo(); + FOnNeedCaretUndoList.CallSearchUpdateCaretUndoProcs(c, True); + if c <> nil then + FUndoGroup.add(c); end; {$IFDEF SynUndoDebugCalls} DebugLnEnter(['>> TSynEditUndoList.BeginBlock ', DebugName, ' ', DbgSName(self), ' ', dbgs(Self), ' fLockCount=', fLockCount, ' Cnt=', fItems.Count, ' FInGroupCount=', FInGroupCount, ' fUnModifiedItem=', fUnModifiedItem]); @@ -379,15 +411,21 @@ procedure TSynEditUndoList.EndBlock; var ugroup: TSynEditUndoGroup; + c: TSynEditUndoItem; begin if FInGroupCount > 0 then begin Dec(FInGroupCount); if (FInGroupCount = 0) and FUndoGroup.HasUndoInfo then begin // Keep position for REDO; Do not replace if present - if (not FUndoGroup.Items[FUndoGroup.Count - 1].IsCaretInfo) - and assigned(FOnNeedCaretUndo) then - FUndoGroup.Add(FOnNeedCaretUndo()); + if (not FUndoGroup.Items[FUndoGroup.Count - 1].IsCaretInfo) then begin + c := nil; + if assigned(FOnNeedCaretUndo) then + c := FOnNeedCaretUndo(); + FOnNeedCaretUndoList.CallSearchUpdateCaretUndoProcs(c, False); + if c <> nil then + FUndoGroup.add(c); + end; if (fItems.Count > 0) and FGroupUndo and (not IsTopMarkedAsUnmodified) and (not FForceGroupEnd) and FUndoGroup.CanMergeWith(TSynEditUndoGroup(fItems[fItems.Count - 1])) then @@ -528,6 +566,16 @@ Result := fUnModifiedItem >= 0; end; +procedure TSynEditUndoList.RegisterUpdateCaretUndo(AnUpdateProc: TSynUpdateCaretUndoProc); +begin + FOnNeedCaretUndoList.Add(TMethod(AnUpdateProc)); +end; + +procedure TSynEditUndoList.UnregisterUpdateCaretUndo(AnUpdateProc: TSynUpdateCaretUndoProc); +begin + FOnNeedCaretUndoList.Remove(TMethod(AnUpdateProc)); +end; + { TSynEditUndoItem } function TSynEditUndoItem.IsEqualContent(AnItem: TSynEditUndoItem): Boolean; @@ -571,9 +619,12 @@ { TSynEditUndoGroup } -procedure TSynEditUndoGroup.Grow; +procedure TSynEditUndoGroup.Grow(ANeededCapacity: Integer); begin - FCapacity := FCapacity + Max(10, FCapacity Div 8); + if ANeededCapacity > 0 then + FCapacity := Max(ANeededCapacity, FCapacity) + else + FCapacity := FCapacity + Max(10, FCapacity Div 8); SetLength(FItems, FCapacity); end; @@ -629,8 +680,16 @@ procedure TSynEditUndoGroup.TranferTo(AnUndoGroup: TSynEditUndoGroup); begin - AnUndoGroup.Assign(self); + //AnUndoGroup.Assign(self); + AnUndoGroup.Clear(True); + AnUndoGroup.FCapacity := Count; + AnUndoGroup.FCount := Count; + AnUndoGroup.FItems := FItems; + FItems := nil; + FCapacity := 0; FCount := 0; // Do not clear; that would free the items + + AnUndoGroup.FReason := Reason; end; function TSynEditUndoGroup.CanMergeWith(AnUndoGroup: TSynEditUndoGroup): Boolean; @@ -646,12 +705,20 @@ begin // Merge other group to start AnUndoGroup.Pop.Free; - if AnUndoGroup.Count > 0 then begin - fItems[0].Free; - fItems[0] := AnUndoGroup.Pop; - end; - while AnUndoGroup.Count > 0 do - Insert(0, AnUndoGroup.Pop); + if AnUndoGroup.Count = 0 then + exit; + + Grow(Count + AnUndoGroup.Count); // since we replace item[0], this is one extra + + If AnUndoGroup.Count > 1 then + System.Move(FItems[1], FItems[AnUndoGroup.Count], + (FCount - 1) * SizeOf(TSynEditUndoItem)); + assert(Count > 0, 'TSynEditUndoGroup.MergeWith: Count > 0'); + FItems[0].Free; + System.Move(AnUndoGroup.FItems[0], FItems[0], + (AnUndoGroup.Count) * SizeOf(TSynEditUndoItem)); + FCount := FCount + AnUndoGroup.FCount - 1; + AnUndoGroup.FCount := 0; end; function TSynEditUndoGroup.GetItem(Index: Integer): TSynEditUndoItem; @@ -667,7 +734,7 @@ destructor TSynEditUndoGroup.Destroy; begin - Clear; + Clear(True); FItems := nil; inherited Destroy; end; @@ -699,13 +766,13 @@ inc (FCount); end; -procedure TSynEditUndoGroup.Clear; +procedure TSynEditUndoGroup.Clear(OnlyFreeItems: Boolean); begin while FCount > 0 do begin dec(FCount); FItems[FCount].Free; end; - if FCapacity > 100 then begin + if (not OnlyFreeItems) and (FCapacity > 100) then begin FCapacity := 100; SetLength(FItems, FCapacity); end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedittextbuffer.pp lazarus-1.6+dfsg/components/synedit/synedittextbuffer.pp --- lazarus-1.4.4+dfsg/components/synedit/synedittextbuffer.pp 2014-01-18 19:06:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedittextbuffer.pp 2015-03-24 17:50:59.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synedittextbuffer.pp 43764 2014-01-18 19:06:02Z martin $ +$Id: synedittextbuffer.pp 48478 2015-03-24 17:50:59Z juha $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -1231,6 +1231,7 @@ begin if FIsInDecPaintLock then exit; if Updating then begin + SendNotification(senrBeforeIncPaintLock, Sender); SendNotification(senrIncPaintLock, Sender); // DoIncPaintLock SendNotification(senrAfterIncPaintLock, Sender); FCachedNotify := False; @@ -1245,6 +1246,7 @@ try SendNotification(senrBeforeDecPaintLock, Sender); SendNotification(senrDecPaintLock, Sender); // DoDecPaintLock + SendNotification(senrAfterDecPaintLock, Sender); finally FIsInDecPaintLock := False; end; @@ -1273,6 +1275,7 @@ var s: string; begin + Result := ''; if ByteLen <= 0 then exit; IncIsInEditAction; @@ -1438,6 +1441,7 @@ FModifiedNotifyOldCount := FModifiedNotifyOldCount + i; end; + oldcount := 0; if AReason = senrLineCount then begin if aCount < 0 then begin oldcount := -aCount; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedittextdoublewidthchars.pas lazarus-1.6+dfsg/components/synedit/synedittextdoublewidthchars.pas --- lazarus-1.4.4+dfsg/components/synedit/synedittextdoublewidthchars.pas 2014-05-12 19:58:07.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedittextdoublewidthchars.pas 2015-04-12 17:28:23.000000000 +0000 @@ -33,6 +33,7 @@ interface uses + {$ifdef windows}{$IFDEF SynForceDoubeWidthHack} Windows, {$endif}{$endif} Classes, SysUtils, LazSynEditText; type @@ -47,6 +48,370 @@ implementation +{$IFDEF SynForceDoubeWidthHack} +type +{ For more information, see UAX #11: East Asian Width, + at http://www.unicode.org/reports/tr11/ + EastAsianWidth-7.0.0.txt +# Date: 2014-02-28, 23:15:00 GMT [KW, LI] +# This file is an informative contributory data file in the +# Unicode Character Database. +} + TCharWidth = (cwN, cwA, cwH, cwW, cwF, cwNa); + TCharRange = record + l, h : Integer; + l8 : Int64; // utf8 encoding. UTF8 character is no longer that 6-bytes + h8 : Int64; // utf8 encoding + w : TCharWidth; + end; + +var + cjkarr : array of TCharRange = nil; + +procedure InitCJKWidth; +begin + // Copyright (c) 1991-2014 Unicode, Inc. + // For terms of use, see http://www.unicode.org/terms_of_use.html + // this part is automatically generated based on EastAsianWidth.txt + SetLength(cjkarr,222); + SetLength(cjkarr,222); + with cjkarr[0] do begin l:=32; h:=126; w:=cwNa; l8:=$20; h8:=$7E; end; + with cjkarr[1] do begin l:=161; h:=161; w:=cwA; l8:=$C2A1; h8:=$C2A1; end; + with cjkarr[2] do begin l:=162; h:=163; w:=cwNa; l8:=$C2A2; h8:=$C2A3; end; + with cjkarr[3] do begin l:=164; h:=164; w:=cwA; l8:=$C2A4; h8:=$C2A4; end; + with cjkarr[4] do begin l:=165; h:=166; w:=cwNa; l8:=$C2A5; h8:=$C2A6; end; + with cjkarr[5] do begin l:=167; h:=168; w:=cwA; l8:=$C2A7; h8:=$C2A8; end; + with cjkarr[6] do begin l:=170; h:=170; w:=cwA; l8:=$C2AA; h8:=$C2AA; end; + with cjkarr[7] do begin l:=172; h:=172; w:=cwNa; l8:=$C2AC; h8:=$C2AC; end; + with cjkarr[8] do begin l:=173; h:=174; w:=cwA; l8:=$C2AD; h8:=$C2AE; end; + with cjkarr[9] do begin l:=175; h:=175; w:=cwNa; l8:=$C2AF; h8:=$C2AF; end; + with cjkarr[10] do begin l:=176; h:=180; w:=cwA; l8:=$C2B0; h8:=$C2B4; end; + with cjkarr[11] do begin l:=182; h:=186; w:=cwA; l8:=$C2B6; h8:=$C2BA; end; + with cjkarr[12] do begin l:=188; h:=191; w:=cwA; l8:=$C2BC; h8:=$C2BF; end; + with cjkarr[13] do begin l:=198; h:=198; w:=cwA; l8:=$C386; h8:=$C386; end; + with cjkarr[14] do begin l:=208; h:=208; w:=cwA; l8:=$C390; h8:=$C390; end; + with cjkarr[15] do begin l:=215; h:=216; w:=cwA; l8:=$C397; h8:=$C398; end; + with cjkarr[16] do begin l:=222; h:=225; w:=cwA; l8:=$C39E; h8:=$C3A1; end; + with cjkarr[17] do begin l:=230; h:=230; w:=cwA; l8:=$C3A6; h8:=$C3A6; end; + with cjkarr[18] do begin l:=232; h:=234; w:=cwA; l8:=$C3A8; h8:=$C3AA; end; + with cjkarr[19] do begin l:=236; h:=237; w:=cwA; l8:=$C3AC; h8:=$C3AD; end; + with cjkarr[20] do begin l:=240; h:=240; w:=cwA; l8:=$C3B0; h8:=$C3B0; end; + with cjkarr[21] do begin l:=242; h:=243; w:=cwA; l8:=$C3B2; h8:=$C3B3; end; + with cjkarr[22] do begin l:=247; h:=250; w:=cwA; l8:=$C3B7; h8:=$C3BA; end; + with cjkarr[23] do begin l:=252; h:=252; w:=cwA; l8:=$C3BC; h8:=$C3BC; end; + with cjkarr[24] do begin l:=254; h:=254; w:=cwA; l8:=$C3BE; h8:=$C3BE; end; + with cjkarr[25] do begin l:=257; h:=257; w:=cwA; l8:=$C481; h8:=$C481; end; + with cjkarr[26] do begin l:=273; h:=273; w:=cwA; l8:=$C491; h8:=$C491; end; + with cjkarr[27] do begin l:=275; h:=275; w:=cwA; l8:=$C493; h8:=$C493; end; + with cjkarr[28] do begin l:=283; h:=283; w:=cwA; l8:=$C49B; h8:=$C49B; end; + with cjkarr[29] do begin l:=294; h:=295; w:=cwA; l8:=$C4A6; h8:=$C4A7; end; + with cjkarr[30] do begin l:=299; h:=299; w:=cwA; l8:=$C4AB; h8:=$C4AB; end; + with cjkarr[31] do begin l:=305; h:=307; w:=cwA; l8:=$C4B1; h8:=$C4B3; end; + with cjkarr[32] do begin l:=312; h:=312; w:=cwA; l8:=$C4B8; h8:=$C4B8; end; + with cjkarr[33] do begin l:=319; h:=322; w:=cwA; l8:=$C4BF; h8:=$C582; end; + with cjkarr[34] do begin l:=324; h:=324; w:=cwA; l8:=$C584; h8:=$C584; end; + with cjkarr[35] do begin l:=328; h:=331; w:=cwA; l8:=$C588; h8:=$C58B; end; + with cjkarr[36] do begin l:=333; h:=333; w:=cwA; l8:=$C58D; h8:=$C58D; end; + with cjkarr[37] do begin l:=338; h:=339; w:=cwA; l8:=$C592; h8:=$C593; end; + with cjkarr[38] do begin l:=358; h:=359; w:=cwA; l8:=$C5A6; h8:=$C5A7; end; + with cjkarr[39] do begin l:=363; h:=363; w:=cwA; l8:=$C5AB; h8:=$C5AB; end; + with cjkarr[40] do begin l:=462; h:=462; w:=cwA; l8:=$C78E; h8:=$C78E; end; + with cjkarr[41] do begin l:=464; h:=464; w:=cwA; l8:=$C790; h8:=$C790; end; + with cjkarr[42] do begin l:=466; h:=466; w:=cwA; l8:=$C792; h8:=$C792; end; + with cjkarr[43] do begin l:=468; h:=468; w:=cwA; l8:=$C794; h8:=$C794; end; + with cjkarr[44] do begin l:=470; h:=470; w:=cwA; l8:=$C796; h8:=$C796; end; + with cjkarr[45] do begin l:=472; h:=472; w:=cwA; l8:=$C798; h8:=$C798; end; + with cjkarr[46] do begin l:=474; h:=474; w:=cwA; l8:=$C79A; h8:=$C79A; end; + with cjkarr[47] do begin l:=476; h:=476; w:=cwA; l8:=$C79C; h8:=$C79C; end; + with cjkarr[48] do begin l:=593; h:=593; w:=cwA; l8:=$C991; h8:=$C991; end; + with cjkarr[49] do begin l:=609; h:=609; w:=cwA; l8:=$C9A1; h8:=$C9A1; end; + with cjkarr[50] do begin l:=708; h:=708; w:=cwA; l8:=$CB84; h8:=$CB84; end; + with cjkarr[51] do begin l:=711; h:=711; w:=cwA; l8:=$CB87; h8:=$CB87; end; + with cjkarr[52] do begin l:=713; h:=715; w:=cwA; l8:=$CB89; h8:=$CB8B; end; + with cjkarr[53] do begin l:=717; h:=717; w:=cwA; l8:=$CB8D; h8:=$CB8D; end; + with cjkarr[54] do begin l:=720; h:=720; w:=cwA; l8:=$CB90; h8:=$CB90; end; + with cjkarr[55] do begin l:=728; h:=731; w:=cwA; l8:=$CB98; h8:=$CB9B; end; + with cjkarr[56] do begin l:=733; h:=733; w:=cwA; l8:=$CB9D; h8:=$CB9D; end; + with cjkarr[57] do begin l:=735; h:=735; w:=cwA; l8:=$CB9F; h8:=$CB9F; end; + with cjkarr[58] do begin l:=768; h:=879; w:=cwA; l8:=$CC80; h8:=$CDAF; end; + with cjkarr[59] do begin l:=913; h:=929; w:=cwA; l8:=$CE91; h8:=$CEA1; end; + with cjkarr[60] do begin l:=931; h:=937; w:=cwA; l8:=$CEA3; h8:=$CEA9; end; + with cjkarr[61] do begin l:=945; h:=961; w:=cwA; l8:=$CEB1; h8:=$CF81; end; + with cjkarr[62] do begin l:=963; h:=969; w:=cwA; l8:=$CF83; h8:=$CF89; end; + with cjkarr[63] do begin l:=1025; h:=1025; w:=cwA; l8:=$D081; h8:=$D081; end; + with cjkarr[64] do begin l:=1040; h:=1103; w:=cwA; l8:=$D090; h8:=$D18F; end; + with cjkarr[65] do begin l:=1105; h:=1105; w:=cwA; l8:=$D191; h8:=$D191; end; + with cjkarr[66] do begin l:=4352; h:=4447; w:=cwW; l8:=$E18480; h8:=$E1859F; end; + with cjkarr[67] do begin l:=8208; h:=8208; w:=cwA; l8:=$E28090; h8:=$E28090; end; + with cjkarr[68] do begin l:=8211; h:=8214; w:=cwA; l8:=$E28093; h8:=$E28096; end; + with cjkarr[69] do begin l:=8216; h:=8217; w:=cwA; l8:=$E28098; h8:=$E28099; end; + with cjkarr[70] do begin l:=8220; h:=8221; w:=cwA; l8:=$E2809C; h8:=$E2809D; end; + with cjkarr[71] do begin l:=8224; h:=8226; w:=cwA; l8:=$E280A0; h8:=$E280A2; end; + with cjkarr[72] do begin l:=8228; h:=8231; w:=cwA; l8:=$E280A4; h8:=$E280A7; end; + with cjkarr[73] do begin l:=8240; h:=8240; w:=cwA; l8:=$E280B0; h8:=$E280B0; end; + with cjkarr[74] do begin l:=8242; h:=8243; w:=cwA; l8:=$E280B2; h8:=$E280B3; end; + with cjkarr[75] do begin l:=8245; h:=8245; w:=cwA; l8:=$E280B5; h8:=$E280B5; end; + with cjkarr[76] do begin l:=8251; h:=8251; w:=cwA; l8:=$E280BB; h8:=$E280BB; end; + with cjkarr[77] do begin l:=8254; h:=8254; w:=cwA; l8:=$E280BE; h8:=$E280BE; end; + with cjkarr[78] do begin l:=8308; h:=8308; w:=cwA; l8:=$E281B4; h8:=$E281B4; end; + with cjkarr[79] do begin l:=8319; h:=8319; w:=cwA; l8:=$E281BF; h8:=$E281BF; end; + with cjkarr[80] do begin l:=8321; h:=8324; w:=cwA; l8:=$E28281; h8:=$E28284; end; + with cjkarr[81] do begin l:=8361; h:=8361; w:=cwH; l8:=$E282A9; h8:=$E282A9; end; + with cjkarr[82] do begin l:=8364; h:=8364; w:=cwA; l8:=$E282AC; h8:=$E282AC; end; + with cjkarr[83] do begin l:=8451; h:=8451; w:=cwA; l8:=$E28483; h8:=$E28483; end; + with cjkarr[84] do begin l:=8453; h:=8453; w:=cwA; l8:=$E28485; h8:=$E28485; end; + with cjkarr[85] do begin l:=8457; h:=8457; w:=cwA; l8:=$E28489; h8:=$E28489; end; + with cjkarr[86] do begin l:=8467; h:=8467; w:=cwA; l8:=$E28493; h8:=$E28493; end; + with cjkarr[87] do begin l:=8470; h:=8470; w:=cwA; l8:=$E28496; h8:=$E28496; end; + with cjkarr[88] do begin l:=8481; h:=8482; w:=cwA; l8:=$E284A1; h8:=$E284A2; end; + with cjkarr[89] do begin l:=8486; h:=8486; w:=cwA; l8:=$E284A6; h8:=$E284A6; end; + with cjkarr[90] do begin l:=8491; h:=8491; w:=cwA; l8:=$E284AB; h8:=$E284AB; end; + with cjkarr[91] do begin l:=8531; h:=8532; w:=cwA; l8:=$E28593; h8:=$E28594; end; + with cjkarr[92] do begin l:=8539; h:=8542; w:=cwA; l8:=$E2859B; h8:=$E2859E; end; + with cjkarr[93] do begin l:=8544; h:=8555; w:=cwA; l8:=$E285A0; h8:=$E285AB; end; + with cjkarr[94] do begin l:=8560; h:=8569; w:=cwA; l8:=$E285B0; h8:=$E285B9; end; + with cjkarr[95] do begin l:=8585; h:=8585; w:=cwA; l8:=$E28689; h8:=$E28689; end; + with cjkarr[96] do begin l:=8592; h:=8601; w:=cwA; l8:=$E28690; h8:=$E28699; end; + with cjkarr[97] do begin l:=8632; h:=8633; w:=cwA; l8:=$E286B8; h8:=$E286B9; end; + with cjkarr[98] do begin l:=8658; h:=8658; w:=cwA; l8:=$E28792; h8:=$E28792; end; + with cjkarr[99] do begin l:=8660; h:=8660; w:=cwA; l8:=$E28794; h8:=$E28794; end; + with cjkarr[100] do begin l:=8679; h:=8679; w:=cwA; l8:=$E287A7; h8:=$E287A7; end; + with cjkarr[101] do begin l:=8704; h:=8704; w:=cwA; l8:=$E28880; h8:=$E28880; end; + with cjkarr[102] do begin l:=8706; h:=8707; w:=cwA; l8:=$E28882; h8:=$E28883; end; + with cjkarr[103] do begin l:=8711; h:=8712; w:=cwA; l8:=$E28887; h8:=$E28888; end; + with cjkarr[104] do begin l:=8715; h:=8715; w:=cwA; l8:=$E2888B; h8:=$E2888B; end; + with cjkarr[105] do begin l:=8719; h:=8719; w:=cwA; l8:=$E2888F; h8:=$E2888F; end; + with cjkarr[106] do begin l:=8721; h:=8721; w:=cwA; l8:=$E28891; h8:=$E28891; end; + with cjkarr[107] do begin l:=8725; h:=8725; w:=cwA; l8:=$E28895; h8:=$E28895; end; + with cjkarr[108] do begin l:=8730; h:=8730; w:=cwA; l8:=$E2889A; h8:=$E2889A; end; + with cjkarr[109] do begin l:=8733; h:=8736; w:=cwA; l8:=$E2889D; h8:=$E288A0; end; + with cjkarr[110] do begin l:=8739; h:=8739; w:=cwA; l8:=$E288A3; h8:=$E288A3; end; + with cjkarr[111] do begin l:=8741; h:=8741; w:=cwA; l8:=$E288A5; h8:=$E288A5; end; + with cjkarr[112] do begin l:=8743; h:=8748; w:=cwA; l8:=$E288A7; h8:=$E288AC; end; + with cjkarr[113] do begin l:=8750; h:=8750; w:=cwA; l8:=$E288AE; h8:=$E288AE; end; + with cjkarr[114] do begin l:=8756; h:=8759; w:=cwA; l8:=$E288B4; h8:=$E288B7; end; + with cjkarr[115] do begin l:=8764; h:=8765; w:=cwA; l8:=$E288BC; h8:=$E288BD; end; + with cjkarr[116] do begin l:=8776; h:=8776; w:=cwA; l8:=$E28988; h8:=$E28988; end; + with cjkarr[117] do begin l:=8780; h:=8780; w:=cwA; l8:=$E2898C; h8:=$E2898C; end; + with cjkarr[118] do begin l:=8786; h:=8786; w:=cwA; l8:=$E28992; h8:=$E28992; end; + with cjkarr[119] do begin l:=8800; h:=8801; w:=cwA; l8:=$E289A0; h8:=$E289A1; end; + with cjkarr[120] do begin l:=8804; h:=8807; w:=cwA; l8:=$E289A4; h8:=$E289A7; end; + with cjkarr[121] do begin l:=8810; h:=8811; w:=cwA; l8:=$E289AA; h8:=$E289AB; end; + with cjkarr[122] do begin l:=8814; h:=8815; w:=cwA; l8:=$E289AE; h8:=$E289AF; end; + with cjkarr[123] do begin l:=8834; h:=8835; w:=cwA; l8:=$E28A82; h8:=$E28A83; end; + with cjkarr[124] do begin l:=8838; h:=8839; w:=cwA; l8:=$E28A86; h8:=$E28A87; end; + with cjkarr[125] do begin l:=8853; h:=8853; w:=cwA; l8:=$E28A95; h8:=$E28A95; end; + with cjkarr[126] do begin l:=8857; h:=8857; w:=cwA; l8:=$E28A99; h8:=$E28A99; end; + with cjkarr[127] do begin l:=8869; h:=8869; w:=cwA; l8:=$E28AA5; h8:=$E28AA5; end; + with cjkarr[128] do begin l:=8895; h:=8895; w:=cwA; l8:=$E28ABF; h8:=$E28ABF; end; + with cjkarr[129] do begin l:=8978; h:=8978; w:=cwA; l8:=$E28C92; h8:=$E28C92; end; + with cjkarr[130] do begin l:=9001; h:=9002; w:=cwW; l8:=$E28CA9; h8:=$E28CAA; end; + with cjkarr[131] do begin l:=9312; h:=9449; w:=cwA; l8:=$E291A0; h8:=$E293A9; end; + with cjkarr[132] do begin l:=9451; h:=9547; w:=cwA; l8:=$E293AB; h8:=$E2958B; end; + with cjkarr[133] do begin l:=9552; h:=9587; w:=cwA; l8:=$E29590; h8:=$E295B3; end; + with cjkarr[134] do begin l:=9600; h:=9615; w:=cwA; l8:=$E29680; h8:=$E2968F; end; + with cjkarr[135] do begin l:=9618; h:=9621; w:=cwA; l8:=$E29692; h8:=$E29695; end; + with cjkarr[136] do begin l:=9632; h:=9633; w:=cwA; l8:=$E296A0; h8:=$E296A1; end; + with cjkarr[137] do begin l:=9635; h:=9641; w:=cwA; l8:=$E296A3; h8:=$E296A9; end; + with cjkarr[138] do begin l:=9650; h:=9651; w:=cwA; l8:=$E296B2; h8:=$E296B3; end; + with cjkarr[139] do begin l:=9654; h:=9655; w:=cwA; l8:=$E296B6; h8:=$E296B7; end; + with cjkarr[140] do begin l:=9660; h:=9661; w:=cwA; l8:=$E296BC; h8:=$E296BD; end; + with cjkarr[141] do begin l:=9664; h:=9665; w:=cwA; l8:=$E29780; h8:=$E29781; end; + with cjkarr[142] do begin l:=9670; h:=9672; w:=cwA; l8:=$E29786; h8:=$E29788; end; + with cjkarr[143] do begin l:=9675; h:=9675; w:=cwA; l8:=$E2978B; h8:=$E2978B; end; + with cjkarr[144] do begin l:=9678; h:=9681; w:=cwA; l8:=$E2978E; h8:=$E29791; end; + with cjkarr[145] do begin l:=9698; h:=9701; w:=cwA; l8:=$E297A2; h8:=$E297A5; end; + with cjkarr[146] do begin l:=9711; h:=9711; w:=cwA; l8:=$E297AF; h8:=$E297AF; end; + with cjkarr[147] do begin l:=9733; h:=9734; w:=cwA; l8:=$E29885; h8:=$E29886; end; + with cjkarr[148] do begin l:=9737; h:=9737; w:=cwA; l8:=$E29889; h8:=$E29889; end; + with cjkarr[149] do begin l:=9742; h:=9743; w:=cwA; l8:=$E2988E; h8:=$E2988F; end; + with cjkarr[150] do begin l:=9748; h:=9749; w:=cwA; l8:=$E29894; h8:=$E29895; end; + with cjkarr[151] do begin l:=9756; h:=9756; w:=cwA; l8:=$E2989C; h8:=$E2989C; end; + with cjkarr[152] do begin l:=9758; h:=9758; w:=cwA; l8:=$E2989E; h8:=$E2989E; end; + with cjkarr[153] do begin l:=9792; h:=9792; w:=cwA; l8:=$E29980; h8:=$E29980; end; + with cjkarr[154] do begin l:=9794; h:=9794; w:=cwA; l8:=$E29982; h8:=$E29982; end; + with cjkarr[155] do begin l:=9824; h:=9825; w:=cwA; l8:=$E299A0; h8:=$E299A1; end; + with cjkarr[156] do begin l:=9827; h:=9829; w:=cwA; l8:=$E299A3; h8:=$E299A5; end; + with cjkarr[157] do begin l:=9831; h:=9834; w:=cwA; l8:=$E299A7; h8:=$E299AA; end; + with cjkarr[158] do begin l:=9836; h:=9837; w:=cwA; l8:=$E299AC; h8:=$E299AD; end; + with cjkarr[159] do begin l:=9839; h:=9839; w:=cwA; l8:=$E299AF; h8:=$E299AF; end; + with cjkarr[160] do begin l:=9886; h:=9887; w:=cwA; l8:=$E29A9E; h8:=$E29A9F; end; + with cjkarr[161] do begin l:=9918; h:=9919; w:=cwA; l8:=$E29ABE; h8:=$E29ABF; end; + with cjkarr[162] do begin l:=9924; h:=9933; w:=cwA; l8:=$E29B84; h8:=$E29B8D; end; + with cjkarr[163] do begin l:=9935; h:=9953; w:=cwA; l8:=$E29B8F; h8:=$E29BA1; end; + with cjkarr[164] do begin l:=9955; h:=9955; w:=cwA; l8:=$E29BA3; h8:=$E29BA3; end; + with cjkarr[165] do begin l:=9960; h:=9983; w:=cwA; l8:=$E29BA8; h8:=$E29BBF; end; + with cjkarr[166] do begin l:=10045; h:=10045; w:=cwA; l8:=$E29CBD; h8:=$E29CBD; end; + with cjkarr[167] do begin l:=10071; h:=10071; w:=cwA; l8:=$E29D97; h8:=$E29D97; end; + with cjkarr[168] do begin l:=10102; h:=10111; w:=cwA; l8:=$E29DB6; h8:=$E29DBF; end; + with cjkarr[169] do begin l:=10214; h:=10221; w:=cwNa; l8:=$E29FA6; h8:=$E29FAD; end; + with cjkarr[170] do begin l:=10629; h:=10630; w:=cwNa; l8:=$E2A685; h8:=$E2A686; end; + with cjkarr[171] do begin l:=11093; h:=11097; w:=cwA; l8:=$E2AD95; h8:=$E2AD99; end; + with cjkarr[172] do begin l:=11904; h:=11929; w:=cwW; l8:=$E2BA80; h8:=$E2BA99; end; + with cjkarr[173] do begin l:=11931; h:=12019; w:=cwW; l8:=$E2BA9B; h8:=$E2BBB3; end; + with cjkarr[174] do begin l:=12032; h:=12245; w:=cwW; l8:=$E2BC80; h8:=$E2BF95; end; + with cjkarr[175] do begin l:=12272; h:=12283; w:=cwW; l8:=$E2BFB0; h8:=$E2BFBB; end; + with cjkarr[176] do begin l:=12288; h:=12288; w:=cwF; l8:=$E38080; h8:=$E38080; end; + with cjkarr[177] do begin l:=12289; h:=12350; w:=cwW; l8:=$E38081; h8:=$E380BE; end; + with cjkarr[178] do begin l:=12353; h:=12438; w:=cwW; l8:=$E38181; h8:=$E38296; end; + with cjkarr[179] do begin l:=12441; h:=12543; w:=cwW; l8:=$E38299; h8:=$E383BF; end; + with cjkarr[180] do begin l:=12549; h:=12589; w:=cwW; l8:=$E38485; h8:=$E384AD; end; + with cjkarr[181] do begin l:=12593; h:=12686; w:=cwW; l8:=$E384B1; h8:=$E3868E; end; + with cjkarr[182] do begin l:=12688; h:=12730; w:=cwW; l8:=$E38690; h8:=$E386BA; end; + with cjkarr[183] do begin l:=12736; h:=12771; w:=cwW; l8:=$E38780; h8:=$E387A3; end; + with cjkarr[184] do begin l:=12784; h:=12830; w:=cwW; l8:=$E387B0; h8:=$E3889E; end; + with cjkarr[185] do begin l:=12832; h:=12871; w:=cwW; l8:=$E388A0; h8:=$E38987; end; + with cjkarr[186] do begin l:=12872; h:=12879; w:=cwA; l8:=$E38988; h8:=$E3898F; end; + with cjkarr[187] do begin l:=12880; h:=13054; w:=cwW; l8:=$E38990; h8:=$E38BBE; end; + with cjkarr[188] do begin l:=13056; h:=19903; w:=cwW; l8:=$E38C80; h8:=$E4B6BF; end; + with cjkarr[189] do begin l:=19968; h:=42124; w:=cwW; l8:=$E4B880; h8:=$EA928C; end; + with cjkarr[190] do begin l:=42128; h:=42182; w:=cwW; l8:=$EA9290; h8:=$EA9386; end; + with cjkarr[191] do begin l:=43360; h:=43388; w:=cwW; l8:=$EAA5A0; h8:=$EAA5BC; end; + with cjkarr[192] do begin l:=44032; h:=55203; w:=cwW; l8:=$EAB080; h8:=$ED9EA3; end; + with cjkarr[193] do begin l:=57344; h:=63743; w:=cwA; l8:=$EE8080; h8:=$EFA3BF; end; + with cjkarr[194] do begin l:=63744; h:=64255; w:=cwW; l8:=$EFA480; h8:=$EFABBF; end; + with cjkarr[195] do begin l:=65024; h:=65039; w:=cwA; l8:=$EFB880; h8:=$EFB88F; end; + with cjkarr[196] do begin l:=65040; h:=65049; w:=cwW; l8:=$EFB890; h8:=$EFB899; end; + with cjkarr[197] do begin l:=65072; h:=65106; w:=cwW; l8:=$EFB8B0; h8:=$EFB992; end; + with cjkarr[198] do begin l:=65108; h:=65126; w:=cwW; l8:=$EFB994; h8:=$EFB9A6; end; + with cjkarr[199] do begin l:=65128; h:=65131; w:=cwW; l8:=$EFB9A8; h8:=$EFB9AB; end; + with cjkarr[200] do begin l:=65281; h:=65376; w:=cwF; l8:=$EFBC81; h8:=$EFBDA0; end; + with cjkarr[201] do begin l:=65377; h:=65470; w:=cwH; l8:=$EFBDA1; h8:=$EFBEBE; end; + with cjkarr[202] do begin l:=65474; h:=65479; w:=cwH; l8:=$EFBF82; h8:=$EFBF87; end; + with cjkarr[203] do begin l:=65482; h:=65487; w:=cwH; l8:=$EFBF8A; h8:=$EFBF8F; end; + with cjkarr[204] do begin l:=65490; h:=65495; w:=cwH; l8:=$EFBF92; h8:=$EFBF97; end; + with cjkarr[205] do begin l:=65498; h:=65500; w:=cwH; l8:=$EFBF9A; h8:=$EFBF9C; end; + with cjkarr[206] do begin l:=65504; h:=65510; w:=cwF; l8:=$EFBFA0; h8:=$EFBFA6; end; + with cjkarr[207] do begin l:=65512; h:=65518; w:=cwH; l8:=$EFBFA8; h8:=$EFBFAE; end; + with cjkarr[208] do begin l:=65533; h:=65533; w:=cwA; l8:=$EFBFBD; h8:=$EFBFBD; end; + with cjkarr[209] do begin l:=110592; h:=110593; w:=cwW; l8:=$F09B8080; h8:=$F09B8081; end; + with cjkarr[210] do begin l:=127232; h:=127242; w:=cwA; l8:=$F09F8480; h8:=$F09F848A; end; + with cjkarr[211] do begin l:=127248; h:=127277; w:=cwA; l8:=$F09F8490; h8:=$F09F84AD; end; + with cjkarr[212] do begin l:=127280; h:=127337; w:=cwA; l8:=$F09F84B0; h8:=$F09F85A9; end; + with cjkarr[213] do begin l:=127344; h:=127386; w:=cwA; l8:=$F09F85B0; h8:=$F09F869A; end; + with cjkarr[214] do begin l:=127488; h:=127490; w:=cwW; l8:=$F09F8880; h8:=$F09F8882; end; + with cjkarr[215] do begin l:=127504; h:=127546; w:=cwW; l8:=$F09F8890; h8:=$F09F88BA; end; + with cjkarr[216] do begin l:=127552; h:=127560; w:=cwW; l8:=$F09F8980; h8:=$F09F8988; end; + with cjkarr[217] do begin l:=127568; h:=127569; w:=cwW; l8:=$F09F8990; h8:=$F09F8991; end; + with cjkarr[218] do begin l:=131072; h:=196605; w:=cwW; l8:=$F0A08080; h8:=$F0AFBFBD; end; + with cjkarr[219] do begin l:=196608; h:=262141; w:=cwW; l8:=$F0B08080; h8:=$F0BFBFBD; end; + with cjkarr[220] do begin l:=917760; h:=917999; w:=cwA; l8:=$F3A08480; h8:=$F3A087AF; end; + with cjkarr[221] do begin l:=983040; h:=1048573; w:=cwA; l8:=$F3B08080; h8:=$F3BFBFBD; end; + // end of automatically generated part +end; + + + + +function GetCJKWidth(u: Integer; defaultWidth: TCharWidth = cwN): TCharWidth; +var + b: Integer; + e: Integer; + i: Integer; +begin + if length(cjkarr)=0 then InitCJKWidth; + + // simple binary search + b := 0; + e := length(cjkarr)-1; + Result := defaultWidth; + + while (b <= e) do + begin + i := (b + e) div 2; + if (u>=cjkarr[i].l) and (u<=cjkarr[i].h) then begin + Result := cjkarr[i].w; + Break; + end else if cjkarr[i].l > u then + e := i - 1 + else + b := i + 1; + end; +end; + +function GetCJKWidth(utf8: PChar; charLen: Integer; defWidth: TCharWidth): TCharWidth; forward; + +function GetCJKWidth(utf8: PChar; defWidth: TCharWidth): TCharWidth; +var + l : integer; +const + len1 = $01 shl 7; mask1 = $00; + len2 = $07 shl 5; mask2 = $C0; + len3 = $0F shl 4; mask3 = $E0; + len4 = $1F shl 4; mask4 = $F0; + len5 = $3F shl 4; mask5 = $F8; + len6 = $7F shl 4; mask6 = $FC; +begin + if not AssigneD(utf8) then begin + Result:=defWidth; + Exit; + end; + l:=0; + if byte(utf8^) and len1 = mask1 then l:=1 + else if byte(utf8^) and len2 = mask2 then l:=2 + else if byte(utf8^) and len3 = mask3 then l:=3 + else if byte(utf8^) and len4 = mask4 then l:=4 + else if byte(utf8^) and len5 = mask5 then l:=5 + else if byte(utf8^) and len6 = mask6 then l:=6; + if l=0 then Result:=defWidth + else Result:=GetCJKWidth(utf8, l, defWidth) +end; + +function GetCJKWidth(utf8: PChar; charLen: Integer; defWidth: TCharWidth): TCharWidth; +var + c : Int64; + pb : PByteArray; + b: Integer; + e: Integer; + i: Integer; +begin + {$IFDEF ENDIAN_LITTLE} + case charLen of + 1: c:=byte(utf8^); + 2: c:=SwapEndian(PWord(utf8)^); + 3: begin + pb:=PByteArray(utf8); + c:=(pb^[0] shl 16) or (pb^[1] shl 8) or (pb^[2]); + end; + 4: c:=SwapEndian(PLongWord(utf8)^); + 5: begin + pb:=PByteArray(utf8); + c:=(pb^[0] shl 32) or (pb^[1] shl 24) or (pb^[2] shl 16) or (pb^[3] shl 8) or (pb^[4]); + end; + 6: begin + pb:=PByteArray(utf8); + c:=(pb^[0] shl 40) or (pb^[1] shl 32) or (pb^[2] shl 24) or (pb^[3] shl 16) or (pb^[4] shl 8) or (pb^[5]); + end; + else + Result:=defWidth; + Exit; + end; + {$ELSE} + c:=0; + move(utf8^, c, charLen); + {$ENDIF} + + // simple binary search + b := 0; + e := length(cjkarr)-1; + Result := defWidth; + + while (b <= e) do + begin + i := (b + e) div 2; + if (c>=cjkarr[i].l8) and (c<=cjkarr[i].h8) then begin + Result := cjkarr[i].w; + Break; + end else if cjkarr[i].l8 > c then + e := i - 1 + else + b := i + 1; + end; +end; + +{$ENDIF} + + { SynEditTextDoubleWidthChars } procedure SynEditStringDoubleWidthChars.DoGetPhysicalCharWidths(Line: PChar; @@ -60,6 +425,40 @@ dec(Line); dec(PWidths); + + {$IFDEF SynForceDoubeWidthHack} + {$IF FPC_FULLVERSION>=20701} + if (DefaultSystemCodePage = 932) {Japanese} + {$ELSE} + if (GetACP = 932) {Japanese} + {$ENDIF} + then begin + for i := 0 to LineLen - 1 do begin + inc(Line); + inc(PWidths); + if PWidths^ = 0 then continue; + + case GetCJKWidth(Line, cwN) of + cwN, cwH, cwNa: PWidths^ := 1; + cwA, cwW, cwF: PWidths^ := 2; + end; + + (* + PWidths^:=2; + case Line^ of + #$01..#$7F: PWidths^ := 1; + #$80..#$BF: PWidths^ := 0; + #$EF: begin + if (Line[1] = #$bd) and (Line[2] in [#$A1..#$bf]) then PWidths^ := 1; + if (Line[1] = #$be) and (Line[2] in [#$80..#$9f]) then PWidths^ := 1; + end; + end; + *) + end; + exit; + end; + {$ENDIF} + for i := 0 to LineLen - 1 do begin inc(Line); inc(PWidths); @@ -187,5 +586,11 @@ 30000 f0 b0 80 80 .. 3FFFD f0 bf bf bd *) + +{$IFDEF SynForceDoubeWidthHack} +initialization + InitCJKWidth; +{$ENDIF} + end. diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedittextsystemcharwidth.pas lazarus-1.6+dfsg/components/synedit/synedittextsystemcharwidth.pas --- lazarus-1.4.4+dfsg/components/synedit/synedittextsystemcharwidth.pas 2013-06-08 19:35:20.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedittextsystemcharwidth.pas 2015-04-29 09:58:01.000000000 +0000 @@ -36,28 +36,39 @@ uses {$IFDEF WindowsDesktop} windows, {$endif} - Classes, SysUtils, LazSynEditText, LazUTF8, Controls, Graphics, LazLoggerBase; + Classes, SysUtils, + {$IFDEF WindowsDesktop} + Types, + {$endif} + LazSynEditText, SynTextDrawer, LazUTF8, Controls, Graphics, + LazLoggerBase; type - { TSynEditStringBidiChars } - { TSynEditStringSystemWidthChars } TSynEditStringSystemWidthChars = class(TSynEditStringsLinked) private + FCharWidth: Integer; FHandleOwner: TCanvas; + fTextDrawer: TheTextDrawer; protected + {$IFDEF WindowsDesktop} // Do nothing on other OS/ parent handles default procedure DoGetPhysicalCharWidths(Line: PChar; LineLen, Index: Integer; PWidths: PPhysicalCharWidth); override; + {$endif} public constructor Create(ASynStringSource: TSynEditStrings; AHandleOwner: TCanvas); property HandleOwner: TCanvas read FHandleOwner; + property CharWidth: Integer read FCharWidth write FCharWidth; + property TextDrawer: TheTextDrawer read fTextDrawer write fTextDrawer; end; implementation +{$IFDEF WindowsDesktop} var LOG_SynSystemWidthChars: PLazLoggerLogGroup; +{$ENDIF} { TSynEditStringSystemWidthChars } @@ -68,9 +79,9 @@ FHandleOwner := AHandleOwner; end; +{$IFDEF WindowsDesktop} procedure TSynEditStringSystemWidthChars.DoGetPhysicalCharWidths(Line: PChar; LineLen, Index: Integer; PWidths: PPhysicalCharWidth); - {$IFDEF WindowsDesktop} var //s: UnicodeString;// wideString; i: DWORD; @@ -82,7 +93,6 @@ s: WideString; j, k: Integer; l: SizeUInt; - {$endif} begin inherited DoGetPhysicalCharWidths(Line, LineLen, Index, PWidths); if (not IsUtf8) then @@ -94,9 +104,8 @@ debugln(LOG_SynSystemWidthChars, ['TSynEditStringSystemWidthChars NO HANDLE ']); exit; end; +if TextDrawer= nil then exit;; - - {$IFDEF WindowsDesktop} SetLength(s, LineLen+1); // wide chars of UTF-16 <= bytes of UTF-8 string if ConvertUTF8ToUTF16(PWideChar(S), LineLen+1, Line, LineLen, [toInvalidCharToSymbol], l) <> trNoError then exit; @@ -111,8 +120,19 @@ SetLength(glyph, Length(s)+1); cpRes.lpGlyphs := @glyph[0]; cpRes.nGlyphs := length(s); - i := GetCharacterPlacementW(FHandleOwner.Handle, pwidechar(s), length(s), 0, - @cpRes, GCP_DIACRITIC + GCP_KASHIDA + GCP_LIGATE); +//exit; + {$IFDEF WithSynExperimentalCharWidth} + // Need to find fallback font(s), and measure with them too. + TextDrawer.BeginDrawing(FHandleOwner.Handle); + i := GetFontLanguageInfo(textdrawer.StockDC); + if (i and GCP_ERROR) <> 0 then i := 0; //exit; + i := i and FLI_MASK or GCP_GLYPHSHAPE; + + i := GetCharacterPlacementW( + textdrawer.StockDC, //FHandleOwner.Handle, + pwidechar(s), length(s), 0, @cpRes, i); //GCP_DIACRITIC + GCP_KASHIDA + GCP_LIGATE); + TextDrawer.EndDrawing; + {$endif} if i = 0 then begin debugln(LOG_SynSystemWidthChars, ['TSynEditStringSystemWidthChars FAILED for line ', Index]); exit; @@ -127,6 +147,8 @@ debugln(LOG_SynSystemWidthChars, ['TSynEditStringSystemWidthChars for line ', Index, ' set char at ', j, '(', k, ') to be drawn with previous']); PWidths^ := 0; end; + if dx[k] > fTextDrawer.CharWidth then + PWidths^ := 2; // assums that is the max size, if font is proportional end; inc(k); end; @@ -135,12 +157,14 @@ inc(Line); end; - {$endif} end; +{$endif} +{$IFDEF WindowsDesktop} initialization LOG_SynSystemWidthChars := DebugLogger.RegisterLogGroup('SynSystemWidthChars' {$IFDEF SynSystemWidthChars} , True {$ENDIF} ); +{$ENDIF} end. diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedittexttabexpander.pas lazarus-1.6+dfsg/components/synedit/synedittexttabexpander.pas --- lazarus-1.4.4+dfsg/components/synedit/synedittexttabexpander.pas 2014-02-05 12:07:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedittexttabexpander.pas 2015-05-22 15:12:33.000000000 +0000 @@ -26,7 +26,7 @@ interface uses - LCLProc, Classes, SysUtils, LazSynEditText, SynEditTextBase; + LCLProc, Classes, SysUtils, math, LazSynEditText, SynEditTextBase; type @@ -55,11 +55,13 @@ private FTabWidth: integer; FIndexOfLongestLine: Integer; + FFirstUnknownLongestLine, FLastUnknownLongestLine: Integer; FTabData: TSynEditStringTabData; FLastLineHasTab: Boolean; // Last line, parsed by GetPhysicalCharWidths FLastLinePhysLen: Integer; FViewChangeStamp: int64; procedure TextBufferChanged(Sender: TObject); + procedure LineTextChanged(Sender: TSynEditStrings; aIndex, aCount: Integer); procedure LineCountChanged(Sender: TSynEditStrings; AIndex, ACount : Integer); function ExpandedString(Index: integer): string; function ExpandedStringLength(Index: integer): Integer; @@ -135,11 +137,13 @@ constructor TSynEditStringTabExpander.Create(ASynStringSource: TSynEditStrings); begin FIndexOfLongestLine := -1; + FFirstUnknownLongestLine := -1; + FLastUnknownLongestLine := -1; inherited Create(ASynStringSource); TextBufferChanged(nil); TabWidth := 8; fSynStrings.AddChangeHandler(senrLineCount, @LineCountChanged); - fSynStrings.AddChangeHandler(senrLineChange, @LineCountChanged); + fSynStrings.AddChangeHandler(senrLineChange, @LineTextChanged); fSynStrings.AddNotifyHandler(senrTextBufferChanged, @TextBufferChanged); end; @@ -155,7 +159,7 @@ Data.Free; end; end; - fSynStrings.RemoveChangeHandler(senrLineChange, @LineCountChanged); + fSynStrings.RemoveChangeHandler(senrLineChange, @LineTextChanged); fSynStrings.RemoveChangeHandler(senrLineCount, @LineCountChanged); fSynStrings.RemoveNotifyHandler(senrTextBufferChanged, @TextBufferChanged); inherited Destroy; @@ -178,6 +182,8 @@ FTabWidth := AValue; FIndexOfLongestLine := -1; + FFirstUnknownLongestLine := -1; + FLastUnknownLongestLine := -1; for i := 0 to Count - 1 do if not(FTabData[i] >= NO_TAB_IN_LINE_OFFSET) then FTabData[i] := LINE_LEN_UNKNOWN; @@ -219,14 +225,47 @@ end else FTabData.IncRefCount; - LineCountChanged(TSynEditStrings(Sender), 0, Count); + LineTextChanged(TSynEditStrings(Sender), 0, Count); +end; + +procedure TSynEditStringTabExpander.LineTextChanged(Sender: TSynEditStrings; aIndex, + aCount: Integer); +var + i: integer; +begin + if (FIndexOfLongestLine >= AIndex) and (FIndexOfLongestLine < AIndex+ACount) then + FIndexOfLongestLine := -1; + if (FFirstUnknownLongestLine < 0) or (AIndex < FFirstUnknownLongestLine) then + FFirstUnknownLongestLine := AIndex; + if AIndex+ACount-1 > FLastUnknownLongestLine then + FLastUnknownLongestLine := AIndex+ACount-1; + for i := AIndex to AIndex + ACount - 1 do + FTabData[i] := LINE_LEN_UNKNOWN; end; procedure TSynEditStringTabExpander.LineCountChanged(Sender: TSynEditStrings; AIndex, ACount: Integer); var i: integer; begin - FIndexOfLongestLine := -1; + if ACount < 0 then begin + if (FIndexOfLongestLine >= AIndex) and (FIndexOfLongestLine < AIndex-ACount) then + FIndexOfLongestLine := -1; + if (FFirstUnknownLongestLine >= 0) then begin + if (AIndex < FFirstUnknownLongestLine) then + FFirstUnknownLongestLine := Max(AIndex, FFirstUnknownLongestLine + ACount); + if (AIndex < FLastUnknownLongestLine) then + FLastUnknownLongestLine := Max(AIndex, FLastUnknownLongestLine + ACount); + end; + + exit; + end; + + if (FIndexOfLongestLine >= AIndex) then + FIndexOfLongestLine := FIndexOfLongestLine + ACount; + if (FFirstUnknownLongestLine < 0) or (AIndex < FFirstUnknownLongestLine) then + FFirstUnknownLongestLine := AIndex; + if (AIndex < FLastUnknownLongestLine) or (FLastUnknownLongestLine < 0) then + FLastUnknownLongestLine := Max(AIndex, FLastUnknownLongestLine) +ACount; for i := AIndex to AIndex + ACount - 1 do FTabData[i] := LINE_LEN_UNKNOWN; end; @@ -334,20 +373,40 @@ i, j, m: Integer; Line1, Line2: Integer; begin + Result := 0; Line1 := 0; Line2 := Count - 1; + if (fIndexOfLongestLine >= 0) and (fIndexOfLongestLine < Count) then begin Result := FTabData[fIndexOfLongestLine]; if Result <> LINE_LEN_UNKNOWN then begin if Result >= NO_TAB_IN_LINE_OFFSET then Result := Result - NO_TAB_IN_LINE_OFFSET; - exit; + if (FFirstUnknownLongestLine < 0) then + exit; + // Result has the value from index + Line1 := FFirstUnknownLongestLine; + if (FLastUnknownLongestLine < Line2) then + Line2 := FLastUnknownLongestLine; + end + else begin + Result := 0; + if (FFirstUnknownLongestLine < 0) then begin + Line1 := fIndexOfLongestLine; + Line2 := fIndexOfLongestLine; + end + else begin // TODO: Calculate for fIndexOfLongestLine, instead of extending the range + Line1 := Min(fIndexOfLongestLine, FFirstUnknownLongestLine); + if (FLastUnknownLongestLine < Line2) then + Line2 := Max(fIndexOfLongestLine, FLastUnknownLongestLine); + end; end; - Line1 := fIndexOfLongestLine; - Line2 := fIndexOfLongestLine; end; + FFirstUnknownLongestLine := -1; + FLastUnknownLongestLine := -1; + try - Result := 0; + //Result := 0; m := 0; CharWidths := nil; for i := Line1 to Line2 do begin diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedittexttrimmer.pas lazarus-1.6+dfsg/components/synedit/synedittexttrimmer.pas --- lazarus-1.4.4+dfsg/components/synedit/synedittexttrimmer.pas 2014-03-10 15:44:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedittexttrimmer.pas 2015-03-24 17:50:59.000000000 +0000 @@ -1125,6 +1125,7 @@ Len: Integer; SaveByteLen: LongInt; begin + Result := ''; if (not fEnabled) or (ByteLen <= 0) then begin fSynStrings.EditDelete(LogX, LogY, ByteLen); exit; @@ -1140,7 +1141,6 @@ IncIsInEditAction; FlushNotificationCache; SaveByteLen := ByteLen; - Result := ''; IgnoreSendNotification(senrEditAction, True); // Delete uncommited spaces (could also be ByteLen too big, due to past EOL) diff -Nru lazarus-1.4.4+dfsg/components/synedit/synedittypes.pp lazarus-1.6+dfsg/components/synedit/synedittypes.pp --- lazarus-1.4.4+dfsg/components/synedit/synedittypes.pp 2014-10-01 00:15:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synedittypes.pp 2015-03-10 11:51:09.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synedittypes.pp 46389 2014-10-01 00:15:17Z martin $ +$Id: synedittypes.pp 48197 2015-03-10 11:51:09Z martin $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -41,7 +41,7 @@ interface uses - SysUtils; + SysUtils, types; const TSynSpecialChars = [#128..#255]; // MG: special chars. Meaning depends on system encoding/codepage. @@ -59,6 +59,11 @@ TLinePos = type integer; // 1..high(Integer); TLineIdx = type integer; // 0..high(Integer); + TLogCaretPoint = record + X, Y, Offs: Integer; + end; + + TSynCoordinateMappingFlag = ( scmLimitToLines, scmIncludePartVisible, @@ -91,12 +96,26 @@ TSynStatusChange = (scCaretX, scCaretY, scLeftChar, scTopLine, scLinesInWindow, scCharsInWindow, - scInsertMode, scModified, scSelection, scReadOnly + scInsertMode, scModified, scSelection, scReadOnly, + scFocus, // received or lost focus + scOptions // some Options were changed (only triggered by some optinos) ); TSynStatusChanges = set of TSynStatusChange; TStatusChangeEvent = procedure(Sender: TObject; Changes: TSynStatusChanges) of object; + TSynPaintEvent = (peBeforePaint, peAfterPaint); + TSynPaintEvents = set of TSynPaintEvent; + TSynPaintEventProc = procedure(Sender: TObject; EventType: TSynPaintEvent; + const rcClip: TRect + ) of object; + + TSynScrollEvent = (peBeforeScroll, peAfterScroll, peAfterScrollFailed); + TSynScrollEvents = set of TSynScrollEvent; + TSynScrollEventProc = procedure(Sender: TObject; EventType: TSynScrollEvent; + dx, dy: Integer; const rcScroll, rcClip: TRect + ) of object; + TSynVisibleSpecialChar = (vscSpace, vscTabAtFirst, vscTabAtLast); TSynVisibleSpecialChars = set of TSynVisibleSpecialChar; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synexporthtml.pas lazarus-1.6+dfsg/components/synedit/synexporthtml.pas --- lazarus-1.4.4+dfsg/components/synedit/synexporthtml.pas 2012-06-25 22:49:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synexporthtml.pas 2015-09-27 19:19:24.000000000 +0000 @@ -29,7 +29,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synexporthtml.pas 37782 2012-06-25 22:49:31Z martin $ +$Id: synexporthtml.pas 49880 2015-09-27 19:19:24Z mattias $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -46,17 +46,31 @@ uses Classes, LCLIntf, LCLType, Graphics, ClipBrd, - SynEditExport; + SynEditExport, LCLProc, LazUtf8; type THTMLFontSize = (fs01, fs02, fs03, fs04, fs05, fs06, fs07, fsDefault); //eb 2000-10-12 + TExportHtmlOption = ( + heoFragmentOnly, //no surrounding <html><body>...</body><html> Note: will exclude heoDoctype, heoCharset + heoDoctype, //add doctype declaration + heoCharset, //add charset (UTF-8) information + heoWinClipHeader //add Clipboard header (affects Windows only) Note: cannot be set if ExportAsText = True! + ); + TExportHtmlOptions = set of TExportHtmlOption; + + + { TSynExporterHTML } + TSynExporterHTML = class(TSynCustomExporter) private + fOptions: TExportHtmlOptions; fFontSize: THTMLFontSize; function ColorToHTML(AColor: TColor): string; + procedure SetExportHtmlOptions(Value: TExportHtmlOptions); + function GetCreateHTMLFragment: Boolean; + procedure SetCreateHTMLFragment(Value: Boolean); protected - fCreateHTMLFragment: boolean; procedure FormatAfterLastAttribute; override; procedure FormatAttributeDone(BackgroundChanged, ForegroundChanged: boolean; FontStylesChanged: TFontStyles); override; @@ -70,13 +84,15 @@ function GetFooter: string; override; function GetFormatName: string; override; function GetHeader: string; override; + procedure SetExportAsText(Value: boolean); override; public constructor Create(AOwner: TComponent); override; published property Color; - property CreateHTMLFragment: boolean read fCreateHTMLFragment - write fCreateHTMLFragment default FALSE; + property CreateHTMLFragment: boolean read GetCreateHTMLFragment + write SetCreateHTMLFragment default FALSE; deprecated 'Use Options instead'; property DefaultFilter; + property Options: TExportHtmlOptions read fOptions write SetExportHtmlOptions default [heoDoctype, heoCharset]; property Font; property Highlighter; property HTMLFontSize: THTMLFontSize read fFontSize write fFontSize; //eb 2000-10-12 @@ -90,117 +106,144 @@ SysUtils, SynEditStrConst; +const + DocType = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"' + LineEnding + + '"http://www.w3.org/TR/html4/loose.dtd">'; //cannot use strict, because we use <font> tag + Generator = '<meta name="generator" content="Lazarus SynEdit Html Exporter">'; + CharSet = '<meta http-equiv="content-type" content="text/html; charset=utf-8">'; + DocumentStart = '<html>'+LineEnding+ + '<head>'+LineEnding+ + '%s'+LineEnding+ + '</head>'+LineEnding+ + '<body text=%s bgcolor=%s>'; + DocumentEnd = '</body>'+LineEnding+'</html>'; + CodeStart = '<pre><code>'; + CodeEnd = '</code></pre>'; + FontStart = '<font %s face="%s">'; + FontEnd = '</font>'; + WinClipHeaderFmt = 'Version:0.9' + LineEnding + + 'StartHTML:%.8d' + LineEnding + + 'EndHTML:%.8d' + LineEnding + + 'StartFragment:%.8d' + LineEnding + + 'EndFragment:%.8d' + LineEnding; + + StartFragmentComment = '<!--StartFragment-->'; + EndFragmentComment = '<!--EndFragment-->'; + { TSynExporterHTML } constructor TSynExporterHTML.Create(AOwner: TComponent); const - CF_HTML = 'HTML Format'; + HTML_Format = {$ifdef windows}'HTML Format'{$else}'text/html'{$endif}; begin inherited Create(AOwner); {**************} - fClipboardFormat := RegisterClipboardFormat(CF_HTML); + fClipboardFormat := RegisterClipboardFormat(HTML_Format); fFontSize := fs03; + fOptions := [heoDocType, heoCharset]; fDefaultFilter := SYNS_FilterHTML; // setup array of chars to be replaced fReplaceReserved['&'] := '&'; fReplaceReserved['<'] := '<'; fReplaceReserved['>'] := '>'; - fReplaceReserved['"'] := '"'; - fReplaceReserved[''] := '™'; - fReplaceReserved[''] := '©'; - fReplaceReserved[''] := '®'; - fReplaceReserved[''] := 'À'; - fReplaceReserved[''] := 'Á'; - fReplaceReserved[''] := 'Â'; - fReplaceReserved[''] := 'Ã'; - fReplaceReserved[''] := 'Ä'; - fReplaceReserved[''] := 'Å'; - fReplaceReserved[''] := 'Æ'; - fReplaceReserved[''] := 'Ç'; - fReplaceReserved[''] := 'È'; - fReplaceReserved[''] := 'É'; - fReplaceReserved[''] := 'Ê'; - fReplaceReserved[''] := 'Ë'; - fReplaceReserved[''] := 'Ì'; - fReplaceReserved[''] := 'Í'; - fReplaceReserved[''] := 'Î'; - fReplaceReserved[''] := 'Ï'; - fReplaceReserved[''] := 'Ð'; - fReplaceReserved[''] := 'Ñ'; - fReplaceReserved[''] := 'Ò'; - fReplaceReserved[''] := 'Ó'; - fReplaceReserved[''] := 'Ô'; - fReplaceReserved[''] := 'Õ'; - fReplaceReserved[''] := 'Ö'; - fReplaceReserved[''] := 'Ø'; - fReplaceReserved[''] := 'Ù'; - fReplaceReserved[''] := 'Ú'; - fReplaceReserved[''] := 'Û'; - fReplaceReserved[''] := 'Ü'; - fReplaceReserved[''] := 'Ý'; - fReplaceReserved[''] := 'Þ'; - fReplaceReserved[''] := 'ß'; - fReplaceReserved[''] := 'à'; - fReplaceReserved[''] := 'á'; - fReplaceReserved[''] := 'â'; - fReplaceReserved[''] := 'ã'; - fReplaceReserved[''] := 'ä'; - fReplaceReserved[''] := 'å'; - fReplaceReserved[''] := 'æ'; - fReplaceReserved[''] := 'ç'; - fReplaceReserved[''] := 'è'; - fReplaceReserved[''] := 'é'; - fReplaceReserved[''] := 'ê'; - fReplaceReserved[''] := 'ë'; - fReplaceReserved[''] := 'ì'; - fReplaceReserved[''] := 'í'; - fReplaceReserved[''] := 'î'; - fReplaceReserved[''] := 'ï'; - fReplaceReserved[''] := 'ð'; - fReplaceReserved[''] := 'ñ'; - fReplaceReserved[''] := 'ò'; - fReplaceReserved[''] := 'ó'; - fReplaceReserved[''] := 'ô'; - fReplaceReserved[''] := 'õ'; - fReplaceReserved[''] := 'ö'; - fReplaceReserved[''] := 'ø'; - fReplaceReserved[''] := 'ù'; - fReplaceReserved[''] := 'ú'; - fReplaceReserved[''] := 'û'; - fReplaceReserved[''] := 'ü'; - fReplaceReserved[''] := 'ý'; - fReplaceReserved[''] := 'þ'; - fReplaceReserved[''] := 'ÿ'; - fReplaceReserved[''] := '¡'; - fReplaceReserved[''] := '¢'; - fReplaceReserved[''] := '£'; - fReplaceReserved[''] := '¤'; - fReplaceReserved[''] := '¥'; - fReplaceReserved[''] := '¦'; - fReplaceReserved[''] := '§'; - fReplaceReserved[''] := '¨'; - fReplaceReserved[''] := 'ª'; - fReplaceReserved[''] := '«'; - fReplaceReserved[''] := '­'; - fReplaceReserved[''] := '¯'; - fReplaceReserved[''] := '°'; - fReplaceReserved[''] := '±'; - fReplaceReserved[''] := '²'; - fReplaceReserved[''] := '³'; - fReplaceReserved[''] := '´'; - fReplaceReserved[''] := 'µ'; - fReplaceReserved[''] := '·'; - fReplaceReserved[''] := '¸'; - fReplaceReserved[''] := '¹'; - fReplaceReserved[''] := 'º'; - fReplaceReserved[''] := '»'; - fReplaceReserved[''] := '¼'; - fReplaceReserved[''] := '½'; - fReplaceReserved[''] := '¾'; - fReplaceReserved[''] := '¿'; - fReplaceReserved[''] := '×'; - fReplaceReserved[''] := '÷'; - fReplaceReserved[''] := '€'; + //fReplaceReserved['"'] := '"'; //no need to replace this + //fReplaceReserved[''''] := '''; //no need to replace this +{ The following characters are multi-byte in UTF-8: + fReplaceReserved['™'] := '™'; + fReplaceReserved['©'] := '©'; + fReplaceReserved['®'] := '®'; + fReplaceReserved['À'] := 'À'; + fReplaceReserved['Á'] := 'Á'; + fReplaceReserved['Â'] := 'Â'; + fReplaceReserved['Ã'] := 'Ã'; + fReplaceReserved['Ä'] := 'Ä'; + fReplaceReserved['Å'] := 'Å'; + fReplaceReserved['Æ'] := 'Æ'; + fReplaceReserved['Ç'] := 'Ç'; + fReplaceReserved['È'] := 'È'; + fReplaceReserved['É'] := 'É'; + fReplaceReserved['Ê'] := 'Ê'; + fReplaceReserved['Ë'] := 'Ë'; + fReplaceReserved['Ì'] := 'Ì'; + fReplaceReserved['Í'] := 'Í'; + fReplaceReserved['Î'] := 'Î'; + fReplaceReserved['Ï'] := 'Ï'; + fReplaceReserved['Ð'] := 'Ð'; + fReplaceReserved['Ñ'] := 'Ñ'; + fReplaceReserved['Ò'] := 'Ò'; + fReplaceReserved['Ó'] := 'Ó'; + fReplaceReserved['Ô'] := 'Ô'; + fReplaceReserved['Õ'] := 'Õ'; + fReplaceReserved['Ö'] := 'Ö'; + fReplaceReserved['Ø'] := 'Ø'; + fReplaceReserved['Ù'] := 'Ù'; + fReplaceReserved['Ú'] := 'Ú'; + fReplaceReserved['Û'] := 'Û'; + fReplaceReserved['Ü'] := 'Ü'; + fReplaceReserved['Ý'] := 'Ý'; + fReplaceReserved['Þ'] := 'Þ'; + fReplaceReserved['ß'] := 'ß'; + fReplaceReserved['à'] := 'à'; + fReplaceReserved['á'] := 'á'; + fReplaceReserved['â'] := 'â'; + fReplaceReserved['ã'] := 'ã'; + fReplaceReserved['ä'] := 'ä'; + fReplaceReserved['å'] := 'å'; + fReplaceReserved['æ'] := 'æ'; + fReplaceReserved['ç'] := 'ç'; + fReplaceReserved['è'] := 'è'; + fReplaceReserved['é'] := 'é'; + fReplaceReserved['ê'] := 'ê'; + fReplaceReserved['ë'] := 'ë'; + fReplaceReserved['ì'] := 'ì'; + fReplaceReserved['í'] := 'í'; + fReplaceReserved['î'] := 'î'; + fReplaceReserved['ï'] := 'ï'; + fReplaceReserved['ð'] := 'ð'; + fReplaceReserved['ñ'] := 'ñ'; + fReplaceReserved['ò'] := 'ò'; + fReplaceReserved['ó'] := 'ó'; + fReplaceReserved['ô'] := 'ô'; + fReplaceReserved['õ'] := 'õ'; + fReplaceReserved['ö'] := 'ö'; + fReplaceReserved['ø'] := 'ø'; + fReplaceReserved['ù'] := 'ù'; + fReplaceReserved['ú'] := 'ú'; + fReplaceReserved['û'] := 'û'; + fReplaceReserved['ü'] := 'ü'; + fReplaceReserved['ý'] := 'ý'; + fReplaceReserved['þ'] := 'þ'; + fReplaceReserved['ÿ'] := 'ÿ'; + fReplaceReserved['¡'] := '¡'; + fReplaceReserved['¢'] := '¢'; + fReplaceReserved['£'] := '£'; + fReplaceReserved['¤'] := '¤'; + fReplaceReserved['¥'] := '¥'; + fReplaceReserved['¦'] := '¦'; + fReplaceReserved['§'] := '§'; + fReplaceReserved['¨'] := '¨'; + fReplaceReserved['ª'] := 'ª'; + fReplaceReserved['«'] := '«'; + fReplaceReserved['¬'] := '­'; + fReplaceReserved['¯'] := '¯'; + fReplaceReserved['°'] := '°'; + fReplaceReserved['±'] := '±'; + fReplaceReserved['²'] := '²'; + fReplaceReserved['³'] := '³'; + fReplaceReserved['´'] := '´'; + fReplaceReserved['µ'] := 'µ'; + fReplaceReserved['·'] := '·'; + fReplaceReserved['¸'] := '¸'; + fReplaceReserved['¹'] := '¹'; + fReplaceReserved['º'] := 'º'; + fReplaceReserved['»'] := '»'; + fReplaceReserved['¼'] := '¼'; + fReplaceReserved['½'] := '½'; + fReplaceReserved['¾'] := '¾'; + fReplaceReserved['¿'] := '¿'; + fReplaceReserved['×'] := '×'; + fReplaceReserved['÷'] := '÷'; + fReplaceReserved['€'] := '€';} end; function TSynExporterHTML.ColorToHTML(AColor: TColor): string; @@ -317,11 +360,15 @@ function TSynExporterHTML.GetFooter: string; begin - Result := ''; - if fExportAsText then - Result := '</font>'#13#10'</code></pre>'#13#10; - if not fCreateHTMLFragment then - Result := Result + '</body>'#13#10'</html>'; + Result := FontEnd + LineEnding + CodeEnd; + if (heoWinClipHeader in Options) then + Result := Result + EndFragmentComment; + + if not (heoFragmentOnly in Options) then + begin + if (Result <> '') then Result := Result + LineEnding; + Result := Result + DocumentEnd; + end; end; function TSynExporterHTML.GetFormatName: string; @@ -330,48 +377,101 @@ end; function TSynExporterHTML.GetHeader: string; -const - DescriptionSize = 105; - HeaderSize = 47; - FooterSize1 = 58; - FooterSize2 = 24; - NativeHeader = 'Version:0.9'#13#10 + - 'StartHTML:%.10d'#13#10 + - 'EndHTML:%.10d'#13#10 + - 'StartFragment:%.10d'#13#10 + - 'EndFragment:%.10d'#13#10; - HTMLAsTextHeader = '<html>'#13#10 + - '<head>'#13#10 + - '<title>%s'#13#10 + - ''#13#10 + - ''#13#10 + - ''#13#10; var sFontSize: string; //eb 2000-10-12 + DocHeader, HeadText, WinClipHeader, SFooter: String; + WinClipHeaderSize, FooterLen: Integer; begin Result := ''; - if fExportAsText then begin - if not fCreateHTMLFragment then - Result := Format(HTMLAsTextHeader, [Title, ColorToHtml(fFont.Color), - ColorToHTML(fBackgroundColor)]); -{begin} //eb 2000-10-12 - if fFontSize <> fsDefault then - sFontSize := Format(' size=%d', [1 + Ord(fFontSize)]) + DocHeader := ''; + if not (heoFragmentOnly in Options) then + begin + if (heoDocType in fOptions) then + DocHeader := DocHeader + DocType + LineEnding; + HeadText := Generator; + if (heoCharSet in fOptions) then + HeadText := HeadText + LineEnding + CharSet; + HeadText := HeadText + LineEnding + Format('%s',[Title]); + DocHeader := DocHeader + Format(DocumentStart,[HeadText,ColorToHtml(fFont.Color),ColorToHTML(fBackgroundColor)]); + if (heoWinClipHeader in fOptions) then + DocHeader := DocHeader + LineEnding + StartFragmentComment; + DocHeader := DocHeader + CodeStart; //Don't add LineEndings after this point, because of
 tag
+  end  //not heoFragmentOnly
+  else
+  begin
+    if (heoWinClipHeader in fOptions) then
+      DocHeader := DocHeader + StartFragmentComment + CodeStart
     else
-      sFontSize := '';
-    Result := Result + Format('
'#13#10'',
-      [sFontSize, fFont.Name]);
-{end}                                                                           //eb 2000-10-12
-  end else begin
+      DocHeader := DocHeader + CodeStart;
+  end;
+  if fFontSize <> fsDefault then
+    sFontSize := Format(' size=%d', [1 + Ord(fFontSize)])
+  else
+    sFontSize := '';
+  DocHeader := DocHeader + Format(FontStart,[sFontSize, fFont.Name]);
+
+  if (heoWinClipHeader in fOptions) then
+  begin
+    WinClipHeaderSize := Length(Format(WinClipHeaderFmt,[0,0,0,0]));
+    SFooter := GetFooter;
+    FooterLen := Length(SFooter);
+
+    //debugln(['TSynExporterHtml.GetHeader: WinClipHeaderSize=',WinClipHeadersize]);
+    //debugln(['  Footer="',Sfooter,'"']);
+    //debugln(['  FooterLen=',FooterLen]);
+    //debugln(['  BufferSize=',getBufferSize]);
+    //debugln(['  length(docHeader)=',length(docheader)]);
+
     // Described in http://msdn.microsoft.com/library/sdkdoc/htmlclip/htmlclipboard.htm
-    Result := Format(NativeHeader, [DescriptionSize,
-      DescriptionSize + HeaderSize + GetBufferSize + FooterSize1,
-      DescriptionSize + HeaderSize,
-      DescriptionSize + HeaderSize + GetBufferSize + FooterSize2]);
-    if not fCreateHTMLFragment then
-      Result := Result + ''#13#10''#13#10'';
-    Result := Result + '
';
-    AddData('
'); + WinClipHeader := Format(WinClipHeaderFmt, + [WinClipHeaderSize, //HtmlStart + WinClipHeaderSize + Length(DocHeader) + FooterLen + GetBufferSize - 1, //HtmlEnd + WinClipHeaderSize + Utf8Pos(StartFragmentComment, DocHeader) + Length(StartfragmentComment) - 1, //StartFragment + WinClipHeaderSize + Length(DocHeader) + Utf8Pos(EndFragmentComment, SFooter) + GetBufferSize - 1 //EndFragment + ]); + DocHeader := WinClipHeader + DocHeader; + end; + + Result := DocHeader; +end; + +procedure TSynExporterHTML.SetExportAsText(Value: boolean); +begin + if (Value <> ExportAsText) then + begin + inherited SetExportAsText(Value); + if Value then + fOptions := fOptions - [heoWinClipHeader]; + end; +end; + +procedure TSynExporterHTML.SetExportHtmlOptions(Value: TExportHtmlOptions); +begin + if (fOptions <> Value) then + begin + Clear; + fOptions := Value; + if ExportAsText then fOptions := fOptions - [heoWinClipHeader]; + if (heoFragmentOnly in Value) then + begin + fOptions := fOptions - [heoDoctype, heoCharSet]; + end; + end; +end; + +function TSynExporterHTML.GetCreateHTMLFragment: Boolean; +begin + Result := (heoFragmentOnly in fOptions); +end; + +procedure TSynExporterHTML.SetCreateHTMLFragment(Value: Boolean); +begin + if (GetCreateHTMLFragment <> Value) then + begin + if Value then + Options := Options + [heoFragmentOnly] + else + Options := Options - [heoFragmentOnly]; end; end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synguttercodefolding.pp lazarus-1.6+dfsg/components/synedit/synguttercodefolding.pp --- lazarus-1.4.4+dfsg/components/synedit/synguttercodefolding.pp 2013-09-11 21:06:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synguttercodefolding.pp 2015-03-24 23:13:33.000000000 +0000 @@ -494,14 +494,13 @@ begin AliasMode := Canvas.AntialiasingMode; Canvas.AntialiasingMode:=amOff; + OdlCosmetic := Canvas.Pen.Cosmetic; if nsoLostHl in SubType then begin Canvas.Pen.Style := psDot; - OdlCosmetic := Canvas.Pen.Cosmetic; Canvas.Pen.Cosmetic := False; end; if nsoBlockSel in SubType then begin Canvas.Pen.Style := psDash; - OdlCosmetic := Canvas.Pen.Cosmetic; Canvas.Pen.Cosmetic := False; end; Canvas.Rectangle(Rect); diff -Nru lazarus-1.4.4+dfsg/components/synedit/syngutterlineoverview.pp lazarus-1.6+dfsg/components/synedit/syngutterlineoverview.pp --- lazarus-1.4.4+dfsg/components/synedit/syngutterlineoverview.pp 2015-06-08 23:47:17.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syngutterlineoverview.pp 2015-06-06 11:38:01.000000000 +0000 @@ -542,7 +542,7 @@ begin if PixelHeight < 1 then exit(0); - Result := Int64({%H-}ATxtLine - 1) * Int64(PixelHeight) div TextLineCount; + Result := (Int64(ATxtLine) - 1) * Int64(PixelHeight) div TextLineCount; If FPixelPerLine * 2 < ItemHeight then dec(Result) @@ -740,7 +740,9 @@ Insert(i, LMarks); end; if i >= 0 then - Result := Items[i]; + Result := Items[i] + else + Result := nil; end; procedure TSynGutterLOvLineMarksList.SetItemHeight(const AValue: Integer); diff -Nru lazarus-1.4.4+dfsg/components/synedit/syngutter.pp lazarus-1.6+dfsg/components/synedit/syngutter.pp --- lazarus-1.4.4+dfsg/components/synedit/syngutter.pp 2013-02-09 02:27:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syngutter.pp 2015-03-24 23:13:33.000000000 +0000 @@ -312,7 +312,9 @@ begin MouseDownPart := PixelToPartIndex(AnInfo.MouseX); if MouseDownPart < PartCount then - Result := Parts[MouseDownPart].MaybeHandleMouseAction(AnInfo, HandleActionProc); + Result := Parts[MouseDownPart].MaybeHandleMouseAction(AnInfo, HandleActionProc) + else + Result := False; if not Result then Result := inherited MaybeHandleMouseAction(AnInfo, HandleActionProc); end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterany.pas lazarus-1.6+dfsg/components/synedit/synhighlighterany.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterany.pas 2013-12-14 13:40:04.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterany.pas 2015-07-04 23:08:00.000000000 +0000 @@ -57,7 +57,7 @@ interface uses - SysUtils, Classes, FileUtil, Controls, Graphics, Registry, + SysUtils, Classes, LazUTF8, LazFileUtils, Controls, Graphics, Registry, SynEditTypes, SynEditHighlighter; type diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlightercss.pas lazarus-1.6+dfsg/components/synedit/synhighlightercss.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlightercss.pas 2015-09-29 22:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlightercss.pas 2015-09-29 00:27:43.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synhighlightercss.pas 49899 2015-09-29 22:22:25Z maxim $ +$Id: synhighlightercss.pas 49890 2015-09-29 00:27:43Z martin $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -57,9 +57,10 @@ type TtkTokenKind = (tkComment, tkIdentifier, tkKey, tkNull, tkNumber, tkSpace, - tkString, tkSymbol, tkUnknown); + tkString, tkSymbol, tkMeasurementUnit, tkSelector, tkUnknown); - TRangeState = (rsUnknown, rsCStyle); + TRangeState = (rsCStyle, rsInDeclarationBlock); + TRangeStates = set of TRangeState; TProcTableProc = procedure of object; @@ -67,9 +68,12 @@ TIdentFuncTableFunc = function: TtkTokenKind of object; type + + { TSynCssSyn } + TSynCssSyn = class(TSynCustomHighlighter) private - fRange: TRangeState; + fRange: TRangeStates; fLine: PChar; fLineNumber: Integer; fProcTable: array[#0..#255] of TProcTableProc; @@ -86,6 +90,8 @@ fSpaceAttri: TSynHighlighterAttributes; fStringAttri: TSynHighlighterAttributes; fSymbolAttri: TSynHighlighterAttributes; + fMeasurementUnitAttri: TSynHighlighterAttributes; + fSelectorAttri: TSynHighlighterAttributes; function KeyHash(ToHash: PChar): Integer; function KeyComp(const aKey: String): Boolean; function Func16: TtkTokenKind; @@ -237,11 +243,17 @@ function Func250: TtkTokenKind; function Func253: TtkTokenKind; function Func275: TtkTokenKind; - procedure AsciiCharProc; + procedure SymbolProc; + procedure ColonProc; + procedure SelectorProc; + procedure PercentProc; + procedure CurlyOpenProc; + procedure CurlyCloseProc; procedure CRProc; procedure CStyleCommentProc; procedure DashProc; procedure IdentProc; + procedure HashProc; procedure IntegerProc; procedure LFProc; procedure NullProc; @@ -293,6 +305,10 @@ write fStringAttri; property SymbolAttri: TSynHighlighterAttributes read fSymbolAttri write fSymbolAttri; + property MeasurementUnitAttri: TSynHighlighterAttributes read fMeasurementUnitAttri + write fMeasurementUnitAttri; + property SelectorAttri: TSynHighlighterAttributes read fSelectorAttri + write fSelectorAttri; end; implementation @@ -493,7 +509,7 @@ FStringLen := ToHash - FToIdent; end; -function TSynCssSyn.KeyComp(const aKey: string): Boolean; +function TSynCssSyn.KeyComp(const aKey: String): Boolean; var iI : Integer; Temp: PChar; @@ -514,7 +530,10 @@ function TSynCssSyn.Func16: TtkTokenKind; begin - if KeyComp('cm') or KeyComp('deg') then + if KeyComp('cm') then + Result := tkMeasurementUnit + else + if KeyComp('deg') then Result := tkKey else Result := tkIdentifier; @@ -523,14 +542,16 @@ function TSynCssSyn.Func18: TtkTokenKind; begin if KeyComp('em') then - Result := tkKey + Result := tkMeasurementUnit else Result := tkIdentifier; end; function TSynCssSyn.Func19: TtkTokenKind; begin - if KeyComp('pc') or KeyComp('s') then + if KeyComp('pc') then + Result := tkMeasurementUnit + else if KeyComp('s') then Result := tkKey else Result := tkIdentifier; @@ -538,7 +559,10 @@ function TSynCssSyn.Func23: TtkTokenKind; begin - if KeyComp('in') or KeyComp('rad') then + if KeyComp('in') then + Result := tkMeasurementUnit + else + if KeyComp('rad') then Result := tkKey else Result := tkIdentifier; @@ -555,15 +579,17 @@ function TSynCssSyn.Func26: TtkTokenKind; begin if KeyComp('mm') then - Result := tkKey + Result := tkMeasurementUnit else Result := tkIdentifier; end; function TSynCssSyn.Func29: TtkTokenKind; begin - if KeyComp('page') or KeyComp('cue') or KeyComp('ex') then + if KeyComp('page') or KeyComp('cue') then Result := tkKey + else if KeyComp('ex') then + Result := tkMeasurementUnit else Result := tkIdentifier; end; @@ -595,7 +621,7 @@ function TSynCssSyn.Func36: TtkTokenKind; begin if KeyComp('pt') then - Result := tkKey + Result := tkMeasurementUnit else Result := tkIdentifier; end; @@ -610,7 +636,10 @@ function TSynCssSyn.Func40: TtkTokenKind; begin - if KeyComp('px') or KeyComp('clip') or KeyComp('src') then + if KeyComp('px') then + Result := tkMeasurementUnit + else + if KeyComp('clip') or KeyComp('src') then Result := tkKey else Result := tkIdentifier; @@ -1746,11 +1775,17 @@ begin for chI := #0 to #255 do case chI of - '{', '}' : FProcTable[chI] := @AsciiCharProc; + '{' : FProcTable[chI] := @CurlyOpenProc; + '}' : FProcTable[chI] := @CurlyCloseProc; + ';' : FProcTable[chI] := @SymbolProc; + ':' : FProcTable[chI] := @ColonProc; + '.', '*', ',','>','+','~' : FProcTable[chI] := @SelectorProc; + '%' : FProcTable[chI] := @PercentProc; #13 : FProcTable[chI] := @CRProc; '-' : FProcTable[chI] := @DashProc; 'A'..'Z', 'a'..'z', '_','@' : FProcTable[chI] := @IdentProc; - '#', '$' : FProcTable[chI] := @IntegerProc; + '#' : FProcTable[chI] := @HashProc; + '$' : FProcTable[chI] := @IntegerProc; #10 : FProcTable[chI] := @LFProc; #0 : FProcTable[chI] := @NullProc; '0'..'9' : FProcTable[chI] := @NumberProc; @@ -1782,11 +1817,15 @@ AddAttribute(fStringAttri); fSymbolAttri := TSynHighlighterAttributes.Create(@SYNS_AttrSymbol, SYNS_XML_AttrSymbol); AddAttribute(fSymbolAttri); + fMeasurementUnitAttri := TSynHighlighterAttributes.Create(@SYNS_AttrMeasurementUnitValue, SYNS_XML_AttrMeasurementUnitValue); + AddAttribute(fMeasurementUnitAttri); + fSelectorAttri := TSynHighlighterAttributes.Create(@SYNS_AttrSelectorValue, SYNS_XML_AttrSelectorValue); + AddAttribute(fSelectorAttri); SetAttributesOnChange(@DefHighlightChange); InitIdent; MakeMethodTables; fDefaultFilter := SYNS_FilterCSS; - fRange := rsUnknown; + fRange := []; end; procedure TSynCssSyn.SetLine(const NewValue: String; LineNumber: Integer); @@ -1798,12 +1837,54 @@ Next; end; -procedure TSynCssSyn.AsciiCharProc; +procedure TSynCssSyn.SymbolProc; begin - FTokenID := tkString; + if rsInDeclarationBlock in fRange then + FTokenID := tkSymbol + else + FTokenID := tkIdentifier; + Inc(Run); +end; + +procedure TSynCssSyn.ColonProc; +begin + if not(rsInDeclarationBlock in fRange) then + FTokenID := tkSelector + else + FTokenID := tkSymbol; Inc(Run); - while FLine[Run] in ['0'..'9'] do - Inc(Run); +end; + +procedure TSynCssSyn.SelectorProc; +begin + if not(rsInDeclarationBlock in fRange) then + FTokenID := tkSelector + else + FTokenID := tkIdentifier; + Inc(Run); +end; + +procedure TSynCssSyn.PercentProc; +begin + if rsInDeclarationBlock in fRange then + FTokenID := tkMeasurementUnit + else + FTokenID := tkIdentifier; + Inc(Run); +end; + +procedure TSynCssSyn.CurlyOpenProc; +begin + FTokenID := tkSymbol; + Inc(Run); + fRange := fRange + [rsInDeclarationBlock]; +end; + +procedure TSynCssSyn.CurlyCloseProc; +begin + FTokenID := tkSymbol; + Inc(Run); + fRange := fRange - [rsInDeclarationBlock]; end; procedure TSynCssSyn.CRProc; @@ -1822,7 +1903,7 @@ FTokenID := tkComment; repeat if (fLine[Run] = '*') and (fLine[Run + 1] = '/') then begin - FRange := rsUnKnown; + FRange := fRange - [rsCStyle]; Inc(Run, 2); Break; end; @@ -1853,9 +1934,25 @@ Inc(Run); end; +procedure TSynCssSyn.HashProc; +begin + if (rsInDeclarationBlock in fRange) then begin + IntegerProc; + exit; + end; + + Inc(Run); + FTokenID := tkSelector; +end; + procedure TSynCssSyn.IntegerProc; begin Inc(Run); + if not(rsInDeclarationBlock in fRange) then begin + FTokenID := tkIdentifier; + exit; + end; + FTokenID := tkNumber; while FLine[Run] in ['0'..'9', 'A'..'F', 'a'..'f'] do Inc(Run); @@ -1895,12 +1992,12 @@ Inc(Run); if fLine[Run] = '*' then begin FTokenID := tkComment; - FRange := rsCStyle; + FRange := fRange + [rsCStyle]; Inc(Run); if not (FLine[Run] in [#0, #10, #13]) then CStyleCommentProc; end else - FTokenID := tkSymbol; + FTokenID := tkIdentifier; end; procedure TSynCssSyn.SpaceProc; @@ -1942,13 +2039,13 @@ procedure TSynCssSyn.Next; begin FTokenPos := Run; - if FRange = rsCStyle then + if rsCStyle in fRange then CStyleCommentProc else FProcTable[FLine[Run]](); end; -function TSynCssSyn.GetDefaultAttribute(Index: Integer): TSynHighlighterAttributes; +function TSynCssSyn.GetDefaultAttribute(Index: integer): TSynHighlighterAttributes; begin case Index of SYN_ATTR_COMMENT : Result := FCommentAttri; @@ -1970,7 +2067,7 @@ function TSynCssSyn.GetRange: Pointer; begin - Result := Pointer(PtrInt(fRange)); + Result := {%H-}Pointer(Integer(fRange)); end; function TSynCssSyn.GetToken: string; @@ -2003,6 +2100,8 @@ tkSpace : Result := FSpaceAttri; tkString : Result := FStringAttri; tkSymbol : Result := FSymbolAttri; + tkMeasurementUnit: Result := fMeasurementUnitAttri; + tkSelector : Result := fSelectorAttri; tkUnknown : Result := FIdentifierAttri; else Result := nil; @@ -2021,12 +2120,12 @@ procedure TSynCssSyn.ReSetRange; begin - FRange := rsUnknown; + FRange := []; end; procedure TSynCssSyn.SetRange(Value: Pointer); begin - FRange := TRangeState(PtrUInt(Value)); + FRange := TRangeStates({%H-}Cardinal(Value)); end; function TSynCssSyn.GetIdentChars: TSynIdentChars; @@ -2049,7 +2148,7 @@ '}'; end; -function TSynCSSSyn.KeyHash2(ToHash: PChar): Integer; +function TSynCssSyn.KeyHash2(ToHash: PChar): Integer; begin Result := KeyHash(ToHash); end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterhtml.pp lazarus-1.6+dfsg/components/synedit/synhighlighterhtml.pp --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterhtml.pp 2015-09-29 22:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterhtml.pp 2015-09-29 00:25:46.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synhighlighterhtml.pp 49899 2015-09-29 22:22:25Z maxim $ +$Id: synhighlighterhtml.pp 49889 2015-09-29 00:25:46Z martin $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -2769,7 +2769,7 @@ function TSynHTMLSyn.StartHtmlNodeCodeFoldBlock(ABlockType: THtmlCodeFoldBlockType; OpenPos: Integer; AName: String): TSynCustomCodeFoldBlock; begin - if not FFoldConfig[ord(cfbtHtmlNode)].Enabled then exit; + if not FFoldConfig[ord(cfbtHtmlNode)].Enabled then exit(nil); Result := inherited StartXmlNodeCodeFoldBlock(ord(ABlockType), OpenPos, AName); end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterjava.pas lazarus-1.6+dfsg/components/synedit/synhighlighterjava.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterjava.pas 2014-09-30 23:57:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterjava.pas 2015-03-14 10:42:05.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synhighlighterjava.pas 46388 2014-09-30 23:57:55Z martin $ +$Id: synhighlighterjava.pas 48339 2015-03-14 10:42:05Z sekelsenmat $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -88,7 +88,6 @@ FTokenID: TtkTokenKind; FExtTokenID: TxtkTokenKind; fEol: Boolean; - fIdentFuncTable: array[0..172] of TIdentFuncTableFunc; fLineNumber: Integer; fCommentAttri: TSynHighlighterAttributes; fDocumentAttri: TSynHighlighterAttributes; @@ -100,8 +99,6 @@ fStringAttri: TSynHighlighterAttributes; fSymbolAttri: TSynHighlighterAttributes; fAnnotationAttri: TSynHighlighterAttributes; - function KeyHash(ToHash: PChar): Integer; - function KeyComp(const aKey: String): Boolean; function Func17: TtkTokenKind; function Func21: TtkTokenKind; function Func32: TtkTokenKind; @@ -183,11 +180,14 @@ procedure TildeProc; procedure XOrSymbolProc; procedure UnknownProc; - function AltFunc: TtkTokenKind; - procedure InitIdent; function IdentKind(MayBe: PChar): TtkTokenKind; procedure MakeMethodTables; protected + fIdentFuncTable: array[0..172] of TIdentFuncTableFunc; + function AltFunc: TtkTokenKind; + function KeyHash(ToHash: PChar): Integer; + function KeyComp(const aKey: String): Boolean; + procedure InitIdent; virtual; function GetIdentChars: TSynIdentChars; override; function GetSampleSource: string; override; function GetExtTokenID: TxtkTokenKind; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterlfm.pas lazarus-1.6+dfsg/components/synedit/synhighlighterlfm.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterlfm.pas 2015-05-18 23:05:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterlfm.pas 2015-05-18 20:43:25.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synhighlighterlfm.pas 49102 2015-05-18 23:05:43Z martin $ +$Id: synhighlighterlfm.pas 49091 2015-05-18 20:43:25Z martin $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlightermulti.pas lazarus-1.6+dfsg/components/synedit/synhighlightermulti.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlightermulti.pas 2013-06-14 21:41:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlightermulti.pas 2015-03-24 23:13:33.000000000 +0000 @@ -713,7 +713,9 @@ NewVLine := NewVLine + s.EndPos.y - s.StartPos.y; LastEnd := s.EndPos.y; end; - end; + end + else + LastVline := 0; // ToDo: Initialize LastVline properly. if VDiff = 0 then VDiff := Count - FRScanStartedWithLineCount; if VDiff < 0 then begin @@ -1141,7 +1143,9 @@ CurRegStart.y := 0; CurRegStart.x := 1; CurRegTokenPos := 1; - end; + end + else + CurRegTokenPos := 0; StartAtLineIndex(Result); // Set FCurScheme dec(Result); diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterpas.pp lazarus-1.6+dfsg/components/synedit/synhighlighterpas.pp --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterpas.pp 2014-09-30 14:04:46.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterpas.pp 2015-11-12 17:01:27.000000000 +0000 @@ -28,7 +28,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synhighlighterpas.pp 46372 2014-09-30 14:04:46Z martin $ +$Id: synhighlighterpas.pp 50323 2015-11-12 17:01:27Z ondrej $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -78,6 +78,7 @@ // we need to detect: type TFoo = procedure; // must not fold // var foo: procedure; // must not fold rsAfterEqualOrColon, // very first word after "=" or ":" + rsAfterEqual, // between "=" and ";" (or block end) // a ^ means ctrl-char, not pointer to type // Detect if class/object is type TFoo = class; // forward declaration // TBar = class of TFoo; @@ -85,14 +86,17 @@ // Also included after class modifiers "sealed" and "abstract" rsAtClass, rsAfterClass, + rsAfterIdentifierOrValue, // anywhere where a ^ deref can happen "foo^", "foo^^", "foo()^", "foo[]^" + rsAfterIdentifierOrValueAdd, rsAtClosingBracket, // ')' rsAtCaseLabel, rsInProcHeader, // Declaration or implementation header of a Procedure, function, constructor... rsAfterClassMembers, // Encountered a procedure, function, property, constructor or destructor in a class rsAfterClassField, // after ";" of a field (static needs highlight) - rsVarTypeInSpecification // between ":"/"=" and ";" in a var or type section (or class members) - // var a: Integer; type b = Int64; + rsVarTypeInSpecification, // between ":"/"=" and ";" in a var or type section (or class members) + // var a: Integer; type b = Int64; + rsInTypeBlock ); TRangeStates = set of TRangeState; @@ -450,6 +454,7 @@ procedure OctalProc; procedure LFProc; procedure LowerProc; + procedure CaretProc; procedure NullProc; procedure NumberProc; procedure PointProc; @@ -1374,6 +1379,7 @@ if TopPascalCodeFoldBlockType in [cfbtProcedure] then StartPascalCodeFoldBlock(cfbtLocalVarType) else StartPascalCodeFoldBlock(cfbtVarType); + fRange := fRange + [rsInTypeBlock]; end; Result := tkKey; end @@ -2283,8 +2289,9 @@ '0'..'9': fProcTable[I] := @NumberProc; 'A'..'Z', 'a'..'z', '_': fProcTable[I] := @IdentProc; + '^': fProcTable[I] := @CaretProc; '{': fProcTable[I] := @BraceOpenProc; - '}', '!', '"', '('..'/', ':'..'@', '['..'^', '`', '~': + '}', '!', '"', '('..'/', ':'..'@', '[', ']', '\', '`', '~': begin case I of '(': fProcTable[I] := @RoundOpenProc; @@ -2737,6 +2744,36 @@ if fLine[Run] in ['=', '>'] then inc(Run); end; +procedure TSynPasSyn.CaretProc; +var + t: TPascalCodeFoldBlockType; +begin + inc(Run); + fTokenID := tkSymbol; + + t := TopPascalCodeFoldBlockType; + if ( (t in PascalStatementBlocks - [cfbtAsm]) or //cfbtClass, cfbtClassSection, + ( ( (t in [cfbtVarType, cfbtLocalVarType]) or + ((t in [cfbtProcedure]) and (PasCodeFoldRange.BracketNestLevel > 0)) + ) and + (fRange * [rsInTypeBlock, rsAfterEqual] = [rsAfterEqual]) + )) and + not(rsAfterIdentifierOrValue in fRange) + then begin + if Run []) then @@ -2861,6 +2899,7 @@ begin inc(Run); fTokenID := tkSymbol; + fRange := fRange + [rsAfterIdentifierOrValueAdd]; PasCodeFoldRange.DecBracketNestLevel; end; @@ -2868,7 +2907,7 @@ begin inc(Run); fTokenID := tkSymbol; - fRange := fRange + [rsAfterEqualOrColon]; + fRange := fRange + [rsAfterEqualOrColon, rsAfterEqual]; if (TopPascalCodeFoldBlockType in [cfbtVarType, cfbtLocalVarType, cfbtClass, cfbtClassSection, cfbtRecord]) and not(rsAfterClassMembers in fRange) then @@ -2906,7 +2945,7 @@ (PasCodeFoldRange.BracketNestLevel = 0) then fRange := fRange - [rsProperty, rsInProcHeader]; - fRange := fRange - [rsVarTypeInSpecification]; + fRange := fRange - [rsVarTypeInSpecification, rsAfterEqual]; end; procedure TSynPasSyn.SlashProc; @@ -3029,18 +3068,17 @@ if (FTokenID = tkKey) then fRange := fRange - [rsAtCaseLabel]; end; + if not (FTokenID in [tkSpace, tkComment, tkIDEDirective, tkDirective]) then begin if (PasCodeFoldRange.BracketNestLevel = 0) and not(rsAtClosingBracket in fRange) then fRange := fRange - [rsAfterClass]; - if rsAfterEqualOrColon in FOldRange then - fRange := fRange - [rsAfterEqualOrColon]; - if rsAtPropertyOrReadWrite in FOldRange then - fRange := fRange - [rsAtPropertyOrReadWrite]; - fRange := fRange - [rsAtClosingBracket]; - if rsAfterClassField in FOldRange then - fRange := fRange - [rsAfterClassField]; + + fRange := fRange - + (FOldRange * [rsAfterEqualOrColon, rsAtPropertyOrReadWrite, rsAfterClassField, rsAfterIdentifierOrValue]) - + [rsAtClosingBracket]; + if rsAtClass in fRange then begin if FOldRange * [rsAtClass, rsAfterClass] <> [] then fRange := fRange + [rsAfterClass] - [rsAtClass] @@ -3053,6 +3091,9 @@ if rsAtClass in fRange then fRange := fRange + [rsAfterClass]; end; + + if (FTokenID = tkIdentifier) or (rsAfterIdentifierOrValueAdd in fRange) then + fRange := fRange + [rsAfterIdentifierOrValue] - [rsAfterIdentifierOrValueAdd]; end end; if FAtLineStart and not(FTokenID in [tkSpace, tkComment, tkIDEDirective]) then @@ -3720,7 +3761,7 @@ begin BlockEnabled := FFoldConfig[ord(ABlockType)].Enabled; if (not BlockEnabled) and OnlyEnabled then - exit; + exit(nil); FoldBlock := BlockEnabled and (FFoldConfig[ord(ABlockType)].Modes * [fmFold, fmHide] <> []); p := 0; if FCatchNodeInfo then begin // exclude subblocks, because they do not increase the foldlevel yet @@ -3745,6 +3786,9 @@ nd: TSynFoldNodeInfo; begin BlockType := TopPascalCodeFoldBlockType; + if BlockType in [cfbtVarType, cfbtLocalVarType] then + fRange := fRange - [rsInTypeBlock]; + fRange := fRange - [rsAfterEqual]; DecreaseLevel := TopCodeFoldBlockType < CountPascalCodeFoldBlockOffset; if FCatchNodeInfo then begin // exclude subblocks, because they do not increase the foldlevel yet BlockEnabled := FFoldConfig[ord(BlockType)].Enabled; @@ -4182,7 +4226,7 @@ function TSynPasSyn.GetIdentChars: TSynIdentChars; begin - Result := ['_', '0'..'9', 'a'..'z', 'A'..'Z']; + Result := ['&', '_', '0'..'9', 'a'..'z', 'A'..'Z']; end; class function TSynPasSyn.GetLanguageName: string; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterpike.pas lazarus-1.6+dfsg/components/synedit/synhighlighterpike.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterpike.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterpike.pas 2015-03-15 10:27:56.000000000 +0000 @@ -0,0 +1,421 @@ +{------------------------------------------------------------------------------- +The contents of this file are subject to the Mozilla Public License +Version 1.1 (the "License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for +the specific language governing rights and limitations under the License. + +The Original Code is: SynHighlighterJava.pas, released 2000-04-10. +The Original Code is based on the DcjSynJava.pas file from the +mwEdit component suite by Martin Waldenburg and other developers, the Initial +Author of this file is Michael Trier. +All Rights Reserved. + +Contributors to the SynEdit and mwEdit projects are listed in the +Contributors.txt file. + +Alternatively, the contents of this file may be used under the terms of the +GNU General Public License Version 2 or later (the "GPL"), in which case +the provisions of the GPL are applicable instead of those above. +If you wish to allow use of your version of this file only under the terms +of the GPL and not to allow others to use your version of this file +under the MPL, indicate your decision by deleting the provisions above and +replace them with the notice and other provisions required by the GPL. +If you do not delete the provisions above, a recipient may use your version +of this file under either the MPL or the GPL. + +$Id: synhighlighterjava.pas 46388 2014-09-30 23:57:55Z martin $ + +You may retrieve the latest version of this file at the SynEdit home page, +located at http://SynEdit.SourceForge.net + +Known Issues: +-------------------------------------------------------------------------------} +{ +@abstract(Provides a Pike highlighter for SynEdit) +@author(Felipe Monteiro de Carvalho) +@created(March 2015) +@lastmod(2015-03-14) +The SynHighlighterPike unit provides SynEdit with a Pike source (.pike) highlighter. +} +unit synhighlighterpike; + +{$I SynEdit.inc} + +interface + +uses + SysUtils, Classes, + LCLIntf, LCLType, Graphics, + SynEditHighlighter, synhighlighterjava; + +type + TSynPikeSyn = class(TSynJavaSyn) + private + function Func17: TtkTokenKind; + function Func21: TtkTokenKind; + function Func32: TtkTokenKind; + function Func34: TtkTokenKind; + function Func39: TtkTokenKind; + function Func40: TtkTokenKind; + function Func42: TtkTokenKind; + function Func45: TtkTokenKind; + function Func46: TtkTokenKind; + function Func47: TtkTokenKind; + function Func48: TtkTokenKind; + function Func54: TtkTokenKind; + function Func55: TtkTokenKind; + function Func57: TtkTokenKind; + function Func59: TtkTokenKind; + function Func60: TtkTokenKind; + function Func61: TtkTokenKind; + function Func62: TtkTokenKind; + function Func63: TtkTokenKind; + function Func66: TtkTokenKind; + function Func68: TtkTokenKind; + function Func69: TtkTokenKind; + function Func76: TtkTokenKind; + function Func78: TtkTokenKind; + function Func79: TtkTokenKind; + function Func83: TtkTokenKind; + function Func86: TtkTokenKind; + function Func88: TtkTokenKind; + function Func89: TtkTokenKind; + function Func90: TtkTokenKind; + function Func92: TtkTokenKind; + function Func93: TtkTokenKind; + function Func95: TtkTokenKind; + function Func97: TtkTokenKind; + function Func98: TtkTokenKind; + function Func102: TtkTokenKind; + function Func109: TtkTokenKind; + function Func110: TtkTokenKind; + function Func114: TtkTokenKind; + function Func115: TtkTokenKind; + function Func119: TtkTokenKind; + function Func127: TtkTokenKind; + function Func136: TtkTokenKind; + function Func172: TtkTokenKind; + protected + procedure InitIdent; override; + function GetSampleSource: string; override; + public + class function Pike_GetSampleSource: string; + class function GetLanguageName: string; override; + end; + +implementation + +uses + SynEditStrConst; + +procedure TSynPikeSyn.InitIdent; +var + I: Integer; +begin + for I := 0 to 172 do + Case I of + 17: fIdentFuncTable[I] := @Func17; + 21: fIdentFuncTable[I] := @Func21; + 32: fIdentFuncTable[I] := @Func32; + 34: fIdentFuncTable[I] := @Func34; + 39: fIdentFuncTable[I] := @Func39; + 40: fIdentFuncTable[I] := @Func40; + 42: fIdentFuncTable[I] := @Func42; + 45: fIdentFuncTable[I] := @Func45; + 46: fIdentFuncTable[I] := @Func46; + 47: fIdentFuncTable[I] := @Func47; + 48: fIdentFuncTable[I] := @Func48; + 54: fIdentFuncTable[I] := @Func54; + 55: fIdentFuncTable[I] := @Func55; + 57: fIdentFuncTable[I] := @Func57; + 59: fIdentFuncTable[I] := @Func59; + 60: fIdentFuncTable[I] := @Func60; + 61: fIdentFuncTable[I] := @Func61; + 62: fIdentFuncTable[I] := @Func62; + 63: fIdentFuncTable[I] := @Func63; + 66: fIdentFuncTable[I] := @Func66; + 68: fIdentFuncTable[I] := @Func68; + 69: fIdentFuncTable[I] := @Func69; + 76: fIdentFuncTable[I] := @Func76; + 78: fIdentFuncTable[I] := @Func78; + 79: fIdentFuncTable[I] := @Func79; + 83: fIdentFuncTable[I] := @Func83; + 86: fIdentFuncTable[I] := @Func86; + 88: fIdentFuncTable[I] := @Func88; + 89: fIdentFuncTable[I] := @Func89; + 90: fIdentFuncTable[I] := @Func90; + 92: fIdentFuncTable[I] := @Func92; + 93: fIdentFuncTable[I] := @Func93; + 95: fIdentFuncTable[I] := @Func95; + 97: fIdentFuncTable[I] := @Func97; + 98: fIdentFuncTable[I] := @Func98; + 102: fIdentFuncTable[I] := @Func102; + 109: fIdentFuncTable[I] := @Func109; + 110: fIdentFuncTable[I] := @Func110; + 114: fIdentFuncTable[I] := @Func114; + 115: fIdentFuncTable[I] := @Func115; + 119: fIdentFuncTable[I] := @Func119; + 127: fIdentFuncTable[I] := @Func127; + 136: fIdentFuncTable[I] := @Func136; + 172: fIdentFuncTable[I] := @Func172; + else fIdentFuncTable[I] := @AltFunc; + end; +end; + +function TSynPikeSyn.Func17: TtkTokenKind; +begin + if KeyComp('if') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func21: TtkTokenKind; +begin + if KeyComp('do') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func32: TtkTokenKind; +begin + if KeyComp('case') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func34: TtkTokenKind; +begin + if KeyComp('char') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func39: TtkTokenKind; +begin + if KeyComp('lambda') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func40: TtkTokenKind; +begin + if KeyComp('catch') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func42: TtkTokenKind; +begin + if KeyComp('for') then Result := tkKey else + if KeyComp('break') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func45: TtkTokenKind; +begin + if KeyComp('else') or KeyComp('new') then + Result := tkKey + else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func46: TtkTokenKind; +begin + if KeyComp('int') or KeyComp('gauge') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func47: TtkTokenKind; +begin + if KeyComp('final') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func48: TtkTokenKind; +begin + if KeyComp('false') or KeyComp('local') or KeyComp('bool') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func54: TtkTokenKind; +begin + if KeyComp('void') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func55: TtkTokenKind; +begin + if KeyComp('global') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func57: TtkTokenKind; +begin + if KeyComp('enum') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func59: TtkTokenKind; +begin + if KeyComp('class') or KeyComp('float') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func60: TtkTokenKind; +begin + if KeyComp('this') or KeyComp('mixed') or KeyComp('prefed') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func61: TtkTokenKind; +begin + if KeyComp('goto') or KeyComp('object') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func62: TtkTokenKind; +begin + if KeyComp('while') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func63: TtkTokenKind; +begin + if KeyComp('null') or KeyComp('foreach') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func66: TtkTokenKind; +begin + if KeyComp('try') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func68: TtkTokenKind; +begin + if KeyComp('true') or KeyComp('array') or KeyComp('sscanf') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func69: TtkTokenKind; +begin + if KeyComp('public') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func76: TtkTokenKind; +begin + if KeyComp('default') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func78: TtkTokenKind; +begin + if KeyComp('static') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func79: TtkTokenKind; +begin + if KeyComp('nomask') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func83: TtkTokenKind; +begin + if KeyComp('mapping') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func86: TtkTokenKind; +begin + if KeyComp('finally') or KeyComp('sizeof') or KeyComp('inline') then + Result := tkKey + else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func88: TtkTokenKind; +begin + if KeyComp('switch') or KeyComp('typedef') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func89: TtkTokenKind; +begin + if KeyComp('throw') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func90: TtkTokenKind; +begin + if KeyComp('inherit') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func92: TtkTokenKind; +begin + if KeyComp('variant') or KeyComp('extern') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func93: TtkTokenKind; +begin + if KeyComp('string') or KeyComp('typeof') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func95: TtkTokenKind; +begin + if KeyComp('program') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func97: TtkTokenKind; +begin + if KeyComp('import') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func98: TtkTokenKind; +begin + if KeyComp('private') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func102: TtkTokenKind; +begin + if KeyComp('return') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func109: TtkTokenKind; +begin + if KeyComp('continue') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func110: TtkTokenKind; +begin + if KeyComp('function') or KeyComp('optional') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func114: TtkTokenKind; +begin + if KeyComp('constant') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func115: TtkTokenKind; +begin + if KeyComp('protected') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func119: TtkTokenKind; +begin + if KeyComp('strictfp') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func127: TtkTokenKind; +begin + if KeyComp('multiset') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func136: TtkTokenKind; +begin + if KeyComp('implements') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.Func172: TtkTokenKind; +begin + if KeyComp('synchronized') then Result := tkKey else Result := tkIdentifier; +end; + +function TSynPikeSyn.GetSampleSource: string; +begin + Result := Pike_GetSampleSource(); +end; + +class function TSynPikeSyn.Pike_GetSampleSource: string; +begin + Result := '/* Pike syntax highlighting */'#13#10 + + 'int main()'#13#10 + + '{'#13#10 + + ' array(string) words = ({ "first", "second" });'#13#10 + + ' foreach(words, string cur_word)'#13#10 + + ' write("%O\n", cur_word);'#13#10 + + ' return 0;'#13#10 + + '}'#13#10 + + '/* Text Block */'#13#10 + #13#10; +end; + +class function TSynPikeSyn.GetLanguageName: string; +begin + Result := SYNS_LangPike; +end; + +initialization + RegisterPlaceableHighlighter(TSynPikeSyn); + +end. + diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterpo.pp lazarus-1.6+dfsg/components/synedit/synhighlighterpo.pp --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterpo.pp 2013-06-14 21:41:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterpo.pp 2015-12-24 15:05:23.000000000 +0000 @@ -359,7 +359,7 @@ function TSynPoSyn.GetIdentChars: TSynIdentChars; begin - Result := inherited GetIdentChars; //TSynValidStringChars; + Result := [#33..#255]; end; class function TSynPoSyn.GetLanguageName: string; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlightertex.pas lazarus-1.6+dfsg/components/synedit/synhighlightertex.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlightertex.pas 2013-06-14 21:41:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlightertex.pas 2015-02-06 18:25:31.000000000 +0000 @@ -25,7 +25,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synhighlightertex.pas 41721 2013-06-14 21:41:35Z mattias $ +$Id: synhighlightertex.pas 47604 2015-02-06 18:25:31Z juha $ You may retrieve the latest version of this file from sproessig@bs-webdesign.de @@ -42,7 +42,7 @@ uses SysUtils, Classes, - LCLProc, LCLIntf, LCLType, + LCLIntf, LCLType, LazUTF8, Controls, Graphics, SynEditTypes, SynEditHighlighter; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synhighlighterxml.pas lazarus-1.6+dfsg/components/synedit/synhighlighterxml.pas --- lazarus-1.4.4+dfsg/components/synedit/synhighlighterxml.pas 2013-06-14 21:41:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synhighlighterxml.pas 2015-03-24 17:50:59.000000000 +0000 @@ -25,7 +25,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synhighlighterxml.pas 41721 2013-06-14 21:41:35Z mattias $ +$Id: synhighlighterxml.pas 48478 2015-03-24 17:50:59Z juha $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -962,7 +962,7 @@ function TSynXMLSyn.StartXmlNodeCodeFoldBlock(ABlockType: TXmlCodeFoldBlockType; OpenPos: Integer; AName: String): TSynCustomCodeFoldBlock; begin - if not FFoldConfig[ord(cfbtXmlNode)].Enabled then exit; + if not FFoldConfig[ord(cfbtXmlNode)].Enabled then exit(nil); Result := inherited StartXmlNodeCodeFoldBlock(ord(ABlockType), OpenPos, AName); end; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synmemo.pas lazarus-1.6+dfsg/components/synedit/synmemo.pas --- lazarus-1.4.4+dfsg/components/synedit/synmemo.pas 2014-05-04 22:32:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synmemo.pas 2015-03-31 22:52:08.000000000 +0000 @@ -27,7 +27,7 @@ If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the GPL. -$Id: synmemo.pas 44913 2014-05-04 22:32:14Z bart $ +$Id: synmemo.pas 48565 2015-03-31 22:52:08Z martin $ You may retrieve the latest version of this file at the SynEdit home page, located at http://SynEdit.SourceForge.net @@ -58,7 +58,7 @@ function RowColToCharIndex(RowCol: TPoint): integer; //as 2000-11-09 procedure Append(const Value: String); procedure Clear; - end; + end deprecated 'use SynEdit instead'; TSynMemo = class(TCustomSynMemo) {begin} //mh 2000-09-23 @@ -113,12 +113,15 @@ property InsertMode; property Keystrokes; property MouseActions; + property MouseTextActions; property MouseSelActions; property Lines; property MaxLeftChar; property MaxUndo; property Options; property Options2; + property MouseOptions; + property VisibleSpecialChars; property OverwriteCaret; property ReadOnly; property RightEdge; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synpluginmulticaret.pp lazarus-1.6+dfsg/components/synedit/synpluginmulticaret.pp --- lazarus-1.4.4+dfsg/components/synedit/synpluginmulticaret.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synpluginmulticaret.pp 2015-03-24 23:13:33.000000000 +0000 @@ -0,0 +1,2782 @@ +unit SynPluginMultiCaret; + +{$mode objfpc}{$H+} + +{$DEFINE SynMultiCaretAssert} +{off $DEFINE SynMultiCaretDebug} + +{$IfDef SynMultiCaretAssert} + {$ASSERTIONS on} +{$ENDIF} +{ $INLINE off} +interface + +uses + Classes, SysUtils, SynEdit, SynEditPointClasses, SynEditKeyCmds, SynEditTypes, + LazSynTextArea, SynEditMiscProcs, LazSynEditText, SynEditMiscClasses, SynEditMouseCmds, + SynEditStrConst, SynEditTextTrimmer, SynEditTextBase, + {$IfDef SynMultiCaretDebug} LazLoggerBase, {$ELSE} LazLoggerDummy, {$ENDIF} + LCLType, Controls, Graphics, Clipbrd; + +const + + emcPluginMultiCaretToggleCaret = emcPluginFirstMultiCaret + 0; + emcPluginMultiCaretSelectionToCarets = emcPluginFirstMultiCaret + 1; + + ecPluginMultiCaretSetCaret = ecPluginFirstMultiCaret + 0; + ecPluginMultiCaretUnsetCaret = ecPluginFirstMultiCaret + 1; + ecPluginMultiCaretToggleCaret = ecPluginFirstMultiCaret + 2; + ecPluginMultiCaretClearAll = ecPluginFirstMultiCaret + 3; + + ecPluginMultiCaretModeCancelOnMove = ecPluginFirstMultiCaret + 4; + ecPluginMultiCaretModeMoveAll = ecPluginFirstMultiCaret + 5; + + // last + ecPluginLastMultiCaret = ecPluginFirstMultiCaret + 5; + +const + EMPTY_LIST_LEN = 8; + +type + + TSynMultiCaretCommandAction = ( + ccaDefaultAction, // build in default, if any + ccaNoneRepeatCommand, // Run Command (onc), clear carets IF any changes (text,selection,main-caret) + ccaRepeatCommand, // Repeat the command for each caret + ccaRepeatCommandPerLine, // Repeat the command for the first caret on each line + ccaClearCarets, // Always Clear all carets + ccaAdjustCarets // Run the command once (for main-caret), keep and adjust all carets + ); + TSynMultiCaretCommandFlag = ( // for extension + ccfDummy // do not use + ); + TSynMultiCaretCommandFlags = set of TSynMultiCaretCommandFlag; + + TSynMultiCaretBeforeCommand = procedure(Sender: TObject; + ACommand: TSynEditorCommand; + var AnAction: TSynMultiCaretCommandAction; + var AFlags: TSynMultiCaretCommandFlags) of object; + + TLogCaretPointArray = Array of TLogCaretPoint; + TSynPluginMultiCaretVisualList = class; + + { TSynPluginMultiCaretVisual } + + TSynPluginMultiCaretVisual = class(TSynEditScreenCaret) + private + FListIndex: Integer; + FUsedList: TSynPluginMultiCaretVisualList; + FUnUsedList: TSynPluginMultiCaretVisualList; + {$IfDef SynMultiCaretAssert} + FIsUsed: Boolean; + {$ENDIF} + public + constructor Create(AHandleOwner: TWinControl; + APainterClass: TSynEditScreenCaretPainterClass; + AnUsedList, AnUnUsedList: TSynPluginMultiCaretVisualList); + procedure MoveToUsed; + procedure MoveToUnUsed; + property ListIndex: Integer read FListIndex; + property UsedList: TSynPluginMultiCaretVisualList read FUsedList; + property UnUsedList: TSynPluginMultiCaretVisualList read FUnUsedList; + end; + + { TSynPluginMultiCaretVisualList } + + TSynPluginMultiCaretVisualList = class + private + FList: Array of TSynPluginMultiCaretVisual; + FCount: Integer; + function GetScreenCaret(Index: Integer): TSynPluginMultiCaretVisual; + public + destructor Destroy; override; + procedure Add(AScreenCaret: TSynPluginMultiCaretVisual); + procedure Remove(AScreenCaret: TSynPluginMultiCaretVisual); + procedure Clear; // free visuals + function Count: Integer; + property ScreenCaret[Index: Integer]: TSynPluginMultiCaretVisual read GetScreenCaret; default; + end; + + TCaretFlag = (cfMainCaret, cfNoneVisual, cfAddDuplicate, cfIterationDone); + TCaretFlags = set of TCaretFlag; + + { TSynPluginMultiCaretList } + + TSynPluginMultiCaretList = class + private type + //TCaretFlag = (cfMainCaret, cfNoneVisual); + //TCaretFlags = set of TCaretFlag; + TCaretData = record + x, y, offs: Integer; // logical + KeepX: Integer; + Flags: TCaretFlags; + Visual: TSynPluginMultiCaretVisual; + end; + PCaretData = ^TCaretData; + private + FLowIndex, FHighIndex: Integer; + FMainCaretIndex: Integer; + FMergeLock: Integer; + FCarets: Array of TCaretData; + function FindEqOrNextCaretRawIdx(X, Y, Offs: Integer; LowIdx: integer = -1; HighIdx: integer = -1): Integer; + function GetCaret(Index: Integer): TPoint; inline; + function GetCaretFull(Index: Integer): TLogCaretPoint; inline; + function GetCaretKeepX(Index: Integer): Integer; inline; + function GetCaretOffs(Index: Integer): Integer; inline; + function GetCaretX(Index: Integer): Integer; inline; + function GetCaretY(Index: Integer): Integer; inline; + function GetFlags(Index: Integer): TCaretFlags; + function GetMainCaretIndex: Integer; + function GetVisual(Index: Integer): TSynPluginMultiCaretVisual; inline; + procedure SetCaret(Index: Integer; AValue: TPoint); inline; + procedure SetCaretFull(Index: Integer; AValue: TLogCaretPoint); inline; + procedure SetCaretKeepX(Index: Integer; AValue: Integer); inline; + procedure SetCaretOffs(Index: Integer; AValue: Integer); inline; + procedure SetCaretX(Index: Integer; AValue: Integer); inline; + procedure SetCaretY(Index: Integer; AValue: Integer); inline; + procedure SetVisual(Index: Integer; AValue: TSynPluginMultiCaretVisual); inline; + + function InternalRemoveCaretEx(RawIndex: Integer; AlternativeRawIndex: Integer = -1): Integer; + function InternalRemoveCaret(RawIndex: Integer): integer; + procedure AdjustAfterChange(RawIndex: Integer); inline; + public + constructor Create; + function AddCaret(X, Y, Offs: Integer; flags: TCaretFlags = []; PhysX: Integer = -1): Integer; + procedure RemoveCaret(Index: Integer); + procedure Clear(AFreeVisual: Boolean = False; ACapacity: Integer = EMPTY_LIST_LEN); + function Count: Integer; + function Capacity: Integer; + procedure ImportFromSortedList(AMultiCaretList: TLogCaretPointArray); + function FindCaretIdx(X, Y, Offs: Integer): Integer; + function FindEqOrNextCaretIdx(X, Y, Offs: Integer; LowIdx: integer = -1; HighIdx: integer = -1): Integer; + procedure AdjustAllAfterEdit(aLinePos, aBytePos, aCount, aLineBrkCnt: Integer); + procedure FindAndRemoveMergedCarets; + procedure IncMergeLock; + procedure DecMergeLock; + + property Caret[Index: Integer]: TPoint read GetCaret write SetCaret; + property CaretFull[Index: Integer]: TLogCaretPoint read GetCaretFull write SetCaretFull; + property CaretX[Index: Integer]: Integer read GetCaretX write SetCaretX; + property CaretOffs[Index: Integer]: Integer read GetCaretOffs write SetCaretOffs; + property CaretKeepX[Index: Integer]: Integer read GetCaretKeepX write SetCaretKeepX; + property CaretY[Index: Integer]: Integer read GetCaretY write SetCaretY; + property Visual[Index: Integer]: TSynPluginMultiCaretVisual read GetVisual write SetVisual; + property Flags[Index: Integer]: TCaretFlags read GetFlags; + property MainCaretIndex: Integer read GetMainCaretIndex; + + private + FCurrenCaret, FBeforeNextCaret: PCaretData; + FIterationDoneCount: Integer; + FLowCaret, FHighCaret: PCaretData; // used in AdjustAfterChange + FIteratoreMode: (mciNone, mciUp, mciDown); + function GetCurrentCaretFlags: TCaretFlags; inline; + function GetCurrentCaretFull: TLogCaretPoint; inline; + function GetCurrentCaretKeepX: Integer; inline; + procedure SetCurrentCaretFull(AValue: TLogCaretPoint); inline; + procedure SetCurrentCaretKeepX(AValue: Integer); inline; + + procedure AdjustAfterChange(ACaret: PCaretData); + public + // During iteration no calls to add/remove are allowed + procedure StartIteratorAtFirst; // valid after first call to IterateNextUp + function IterateNextUp: Boolean; inline; + procedure StartIteratorAtLast; + function IterateNextDown: Boolean; inline; + function CanPeekCaret(AIndexOffset: Integer): Boolean; inline; + function PeekCaretY(AIndexOffset: Integer): Integer; inline; + function PeekCaretFull(AIndexOffset: Integer): TLogCaretPoint; inline; + //procedure AbortIterator; + + property CurrentCaretFull: TLogCaretPoint read GetCurrentCaretFull write SetCurrentCaretFull; + property CurrentCaretKeepX: Integer read GetCurrentCaretKeepX write SetCurrentCaretKeepX; + property CurrentCaretFlags: TCaretFlags read GetCurrentCaretFlags; + //property CurrentCaret: TPoint read GetCurrentCaret write SetCurrentCaret; + //property CurrentCaretX: Integer read GetCurrentCaretX write SetCurrentCaretX; + //property CurrentCaretOffs: Integer read GetCurrentCaretOffs write SetCurrentCaretOffs; + //property CurrentCaretY: Integer read GetCurrentCaretY write SetCurrentCaretY; + end; + + { TSynPluginMultiCaretBase } + + TSynPluginMultiCaretBase = class(TLazSynEditPlugin) + private + FCarets: TSynPluginMultiCaretList; + FColor: TColor; + FUsedList: TSynPluginMultiCaretVisualList; + FUnUsedList: TSynPluginMultiCaretVisualList; + FInPaint: Boolean; + FPaintClip: TRect; + + FCustomPixelWidth, FCustomPixelHeight: Array [TSynCaretType] of Integer; + FCustomOffsetX, FCustomOffsetY: Array [TSynCaretType] of Integer; + FCustomFlags: Array [TSynCaretType] of TSynCustomCaretSizeFlags; + + FPaintLock: Integer; + FPaintLockFlags: set of + (plfUpdateCaretsPos, plfDeferUpdateCaretsPos, plfMergeCarets, + plfBoundsChanged, plfTextSizeChanged); + + function GetTextArea: TLazSynTextArea; + procedure DoTextSizeChanged(Sender: TObject); + procedure DoBoundsChanged(Sender: TObject); + procedure MergeAndRemoveCarets(AForce: Boolean = False); + function IsCaretMergeRequested: Boolean; + procedure DoEditorPaintEvent(Sender: TObject; EventType: TSynPaintEvent; + const prcClip: TRect); + procedure DoEditorScrollEvent(Sender: TObject; EventType: TSynScrollEvent; dx, + dy: Integer; const prcScroll, prcClip: TRect); + procedure DoEditorStatusChanged(Sender: TObject; Changes: TSynStatusChanges); + procedure DoAfterDecPaintLock(Sender: TObject); virtual; + procedure DoBeforeIncPaintLock(Sender: TObject); virtual; + procedure DoBufferChanged(Sender: TObject); virtual; + procedure SetColor(AValue: TColor); + property TextArea: TLazSynTextArea read GetTextArea; + function CreateVisual: TSynPluginMultiCaretVisual; virtual; + function GetVisual: TSynPluginMultiCaretVisual; + protected + function AddCaret(X, Y, Offs: Integer; flags: TCaretFlags = []; PhysX: Integer = -1): Integer; + procedure RemoveCaret(Index: Integer); + procedure UpdateCaretsPos; + procedure ClearCarets; + function CaretsCount: Integer; + procedure DoCleared; virtual; + + procedure DoLinesEdited(Sender: TSynEditStrings; aLinePos, aBytePos, aCount, + aLineBrkCnt: Integer; aText: String); virtual; + procedure DoEditorRemoving(AValue: TCustomSynEdit); override; + procedure DoEditorAdded(AValue: TCustomSynEdit); override; + + property Carets: TSynPluginMultiCaretList read FCarets; + property PaintLock: Integer read FPaintLock; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + procedure SetCaretTypeSize(AType: TSynCaretType; AWidth, AHeight, AXOffs, AYOffs: Integer; AFlags: TSynCustomCaretSizeFlags); + property Color: TColor read FColor write SetColor; + end; + + { TSynPluginMultiCaretMouseActions } + + TSynPluginMultiCaretMouseActions = class(TSynEditMouseActions) + public + procedure ResetDefaults; override; + end; + + { TSynPluginMultiCaretKeyStrokes } + + TSynPluginMultiCaretKeyStrokes = class(TSynEditKeyStrokes) + public + procedure ResetDefaults; override; + end; + + TSynPluginMultiCaretMode = ( + mcmCancelOnCaretMove, + mcmMoveAllCarets, + // Osly for ActiveMode + mcmNoCarets, + mcmAddingCarets // move main caret, keep others + ); + TSynPluginMultiCaretDefaultMode = mcmCancelOnCaretMove..mcmMoveAllCarets; + + TSynPluginMultiCaretStateFlag = ( + sfProcessingCmd, sfProcessingMain, sfProcessingRepeat, + sfNoChangeIndicator, + sfExtendingColumnSel, sfSkipCaretsAtSelection, + sfCreateCaretAtCurrentPos, + sfSkipSelChanged, sfSkipCaretChanged, + sfSkipUndoCarets + ); + TSynPluginMultiCaretStateFlags = set of TSynPluginMultiCaretStateFlag; + + { TSynEditUndoMultiCaret } + + TSynEditUndoMultiCaret = class(TSynEditUndoItem) + private + FCaretUndoItem: TSynEditUndoItem; + FBeginBlock: Boolean; + FActiveMode: TSynPluginMultiCaretMode; + FMultiCaretList: TLogCaretPointArray; + protected + function IsEqualContent(AnItem: TSynEditUndoItem): Boolean; override; + function DebugString: String; override; + public + constructor Create(ACaretUndoItem: TSynEditUndoItem; ABeginBlock: Boolean); + destructor Destroy; override; + constructor AddCaretsFrom(AList: TSynPluginMultiCaretList); + function IsCaretInfo: Boolean; override; + function PerformUndo(Caller: TObject): Boolean; override; + property ActiveMode: TSynPluginMultiCaretMode read FActiveMode write FActiveMode; + end; + + { TSynCustomPluginMultiCaret } + + TSynCustomPluginMultiCaret = class(TSynPluginMultiCaretBase) + private + FActiveMode: TSynPluginMultiCaretMode; + FDefaultColumnSelectMode: TSynPluginMultiCaretDefaultMode; + FDefaultMode: TSynPluginMultiCaretDefaultMode; + FEnableWithColumnSelection: Boolean; + FKeyStrokes: TSynPluginMultiCaretKeyStrokes; + FOnBeforeCommand: TSynMultiCaretBeforeCommand; + FStateFlags: TSynPluginMultiCaretStateFlags; + FMouseActions: TSynPluginMultiCaretMouseActions; + FSelY1, FSelY2, FSelX: Integer; + FColSelDoneY1, FColSelDoneY2, FColSelDonePhysX: Integer; + FSpaceTrimmerLocked: Boolean; + FForeignPaintLock, FNestedCommandProcessor: Integer; + + function GetIsInMainExecution: Boolean; + function GetIsInRepeatExecution: Boolean; + procedure RemoveCaretsInSelection; + procedure SetActiveMode(AValue: TSynPluginMultiCaretMode); + procedure SetDefaultColumnSelectMode(AValue: TSynPluginMultiCaretDefaultMode); + procedure SetDefaultMode(AValue: TSynPluginMultiCaretDefaultMode); + procedure SetSkipCaretAtSel; + + procedure UpdateCaretForUndo(var AnUndoItem: TSynEditUndoItem; AnIsBeginUndo: Boolean); + function HandleUndoRedoItem(Caller: TObject; Item: TSynEditUndoItem): Boolean; + + procedure LockSpaceTrimmer; // Todo: per line lock / reverse: trimmer should ask / add event for trimmer via caretObj + procedure UnLockSpaceTrimmer; + protected + function LogPhysConvertor: TSynLogicalPhysicalConvertor; inline; + function PhysicalToLogical(AIndex, AColumn: Integer; out AColOffset: Integer; + ACharSide: TSynPhysCharSide= cspDefault; + AFlags: TSynLogPhysFlags = []): Integer; inline; + + + procedure DoEditorRemoving(AValue: TCustomSynEdit); override; + procedure DoEditorAdded(AValue: TCustomSynEdit); override; + procedure DoBufferChanged(Sender: TObject); override; + + procedure DoAfterDecPaintLock(Sender: TObject); override; + procedure DoIncForeignPaintLock(Sender: TObject); + procedure DoDecForeignPaintLock(Sender: TObject); + + procedure DoCleared; override; + procedure DoLinesEdited(Sender: TSynEditStrings; aLinePos, aBytePos, aCount, + aLineBrkCnt: Integer; aText: String); override; + procedure DoCaretChanged(Sender: TObject); + procedure DoSelectionChanged(Sender: TObject); + procedure DoBeforeSetSelText(Sender: TObject; AMode: TSynSelectionMode; ANewText: PChar); + procedure TranslateKey(Sender: TObject; Code: word; SState: TShiftState; + var Data: pointer; var IsStartOfCombo: boolean; var Handled: boolean; + var Command: TSynEditorCommand; FinishComboOnly: Boolean; + var ComboKeyStrokes: TSynEditKeyStrokes); + procedure ProcessMySynCommand(Sender: TObject; AfterProcessing: boolean; + var Handled: boolean; var Command: TSynEditorCommand; var AChar: TUTF8Char; + Data: pointer; HandlerData: pointer); + procedure ProcessAllSynCommand(Sender: TObject; AfterProcessing: boolean; + var Handled: boolean; var Command: TSynEditorCommand; + var AChar: TUTF8Char; Data: pointer; HandlerData: pointer); + function MaybeHandleMouseAction(var AnInfo: TSynEditMouseActionInfo; + HandleActionProc: TSynEditMouseActionHandler): Boolean; + function DoHandleMouseAction(AnAction: TSynEditMouseAction; + var AnInfo: TSynEditMouseActionInfo): Boolean; + + procedure AddStateFlags(AFlags: TSynPluginMultiCaretStateFlags; AnOnlyIfLocked: Boolean); + function CreateVisual: TSynPluginMultiCaretVisual; override; + property ViewedTextBuffer; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure AddCaretAtLogPos(X, Y, Offs: Integer); + property IsInMainExecution: Boolean read GetIsInMainExecution; + property IsInRepeatExecution: Boolean read GetIsInRepeatExecution; + property MouseActions: TSynPluginMultiCaretMouseActions read FMouseActions; + property KeyStrokes: TSynPluginMultiCaretKeyStrokes read FKeyStrokes; + property EnableWithColumnSelection: Boolean read FEnableWithColumnSelection write FEnableWithColumnSelection default True; + property ActiveMode: TSynPluginMultiCaretMode read FActiveMode write SetActiveMode; + property DefaultMode: TSynPluginMultiCaretDefaultMode read FDefaultMode write SetDefaultMode default mcmMoveAllCarets; + property DefaultColumnSelectMode: TSynPluginMultiCaretDefaultMode + read FDefaultColumnSelectMode write SetDefaultColumnSelectMode default mcmCancelOnCaretMove; + property OnBeforeCommand: TSynMultiCaretBeforeCommand read FOnBeforeCommand write FOnBeforeCommand; + end; + + TSynPluginMultiCaret = class(TSynCustomPluginMultiCaret) + published + property MouseActions; + property KeyStrokes; + property EnableWithColumnSelection; + property DefaultMode; + property DefaultColumnSelectMode; + property OnBeforeCommand; + end; + +implementation + +{$IfDef SynMultiCaretDebug} +var + SynMCaretDebug: PLazLoggerLogGroup; +{$EndIf} + +const + SynMouseCommandNames: array [0..1] of TIdentMapEntry = ( + (Value: emcPluginMultiCaretToggleCaret; Name: 'emcPluginMultiCaretToggleCaret'), + (Value: emcPluginMultiCaretSelectionToCarets; Name: 'emcPluginMultiCaretSelectionToCarets') + ); + +const + EditorKeyCommandStrs: array[0..5] of TIdentMapEntry = ( + (Value: ecPluginMultiCaretSetCaret; Name: 'ecPluginMultiCaretSetCaret'), + (Value: ecPluginMultiCaretUnsetCaret; Name: 'ecPluginMultiCaretUnsetCaret'), + (Value: ecPluginMultiCaretToggleCaret; Name: 'ecPluginMultiCaretToggleCaret'), + (Value: ecPluginMultiCaretClearAll; Name: 'ecPluginMultiCaretClearAll'), + (Value: ecPluginMultiCaretModeCancelOnMove; Name: 'ecPluginMultiCaretModeCancelOnMove'), + (Value: ecPluginMultiCaretModeMoveAll; Name: 'ecPluginMultiCaretModeMoveAll') + ); + +function IdentToKeyCommand(const Ident: string; var Cmd: longint): boolean; +begin + Result := IdentToInt(Ident, Cmd, EditorKeyCommandStrs); +end; + +function KeyCommandToIdent(Cmd: longint; var Ident: string): boolean; +begin + Result := (Cmd >= ecPluginFirstMultiCaret) and (Cmd <= ecPluginLastMultiCaret); + if not Result then exit; + Result := IntToIdent(Cmd, Ident, EditorKeyCommandStrs); +end; + +procedure GetEditorCommandValues(Proc: TGetStrProc); +var + i: integer; +begin + for i := Low(EditorKeyCommandStrs) to High(EditorKeyCommandStrs) do + Proc(EditorKeyCommandStrs[I].Name); +end; + +function SynMouseCmdToIdent(SynMouseCmd: Longint; var Ident: String): Boolean; +begin + Ident := ''; + Result := IntToIdent(SynMouseCmd, Ident, SynMouseCommandNames); +end; + +function IdentToSynMouseCmd(const Ident: string; var SynMouseCmd: Longint): Boolean; +begin + SynMouseCmd := 0; + Result := IdentToInt(Ident, SynMouseCmd, SynMouseCommandNames); +end; + +procedure GetEditorMouseCommandValues(Proc: TGetStrProc); +var + i: Integer; +begin + for i := Low(SynMouseCommandNames) to High(SynMouseCommandNames) do + Proc(SynMouseCommandNames[I].Name); +end; + +function MouseCommandName(emc: TSynEditorMouseCommand): String; +begin + case emc of + emcPluginMultiCaretToggleCaret: Result := SYNS_emcPluginMultiCaretToggleCaret; + emcPluginMultiCaretSelectionToCarets: Result := SYNS_emcPluginMultiCaretSelectionToCarets; + else + Result := ''; + end; +end; + +function MouseCommandConfigName(emc: TSynEditorMouseCommand): String; +begin + case emc of + emcPluginMultiCaretToggleCaret, + emcPluginMultiCaretSelectionToCarets: Result := ''; + else + Result := ''; + end; +end; + +{ TSynPluginMultiCaretVisual } + +constructor TSynPluginMultiCaretVisual.Create(AHandleOwner: TWinControl; + APainterClass: TSynEditScreenCaretPainterClass; AnUsedList, + AnUnUsedList: TSynPluginMultiCaretVisualList); +begin + FListIndex := -1; + FUsedList := AnUsedList; + FUnUsedList := AnUnUsedList; + inherited Create(AHandleOwner, APainterClass); +end; + +procedure TSynPluginMultiCaretVisual.MoveToUsed; +begin + {$IfDef SynMultiCaretAssert} + assert((FListIndex < 0) or (not FIsUsed), 'TSynPluginMultiCaretVisual.MoveToUsed: not yet on list'); + FIsUsed := True; + {$ENDIF} + if FListIndex >= 0 then + FUnUsedList.Remove(Self); + FUsedList.Add(Self); +end; + +procedure TSynPluginMultiCaretVisual.MoveToUnUsed; +begin + {$IfDef SynMultiCaretAssert} + assert((FListIndex < 0) or FIsUsed, 'TSynPluginMultiCaretVisual.MoveToUnUsed: not yet on list'); + FIsUsed := False; + {$ENDIF} + if FListIndex >= 0 then + FUsedList.Remove(Self); + FUnUsedList.Add(Self); + Visible := False; +end; + +{ TSynPluginMultiCaretVisualList } + +function TSynPluginMultiCaretVisualList.GetScreenCaret(Index: Integer): TSynPluginMultiCaretVisual; +begin + Result := FList[Index]; +end; + +destructor TSynPluginMultiCaretVisualList.Destroy; +begin + inherited Destroy; + Clear; +end; + +procedure TSynPluginMultiCaretVisualList.Add(AScreenCaret: TSynPluginMultiCaretVisual); +begin + if (AScreenCaret.ListIndex >= 0) and (AScreenCaret.ListIndex < FCount) and + (FList[AScreenCaret.ListIndex] = AScreenCaret) + then begin + assert(False, 'TSynPluginMultiCaretVisualList.Add: not on list'); + exit; + end; + + {$IfDef SynMultiCaretDebug} + if FCount = Length(FList) then debugln(SynMCaretDebug, ['TSynPluginMultiCaretVisualList.Add ', FCount + max(16, FCount div 16)]); + {$EndIf} + if FCount = Length(FList) then + SetLength(FList, FCount + max(16, FCount div 16)); + + FList[FCount] := AScreenCaret; + AScreenCaret.FListIndex := FCount; + inc(FCount); +end; + +procedure TSynPluginMultiCaretVisualList.Remove(AScreenCaret: TSynPluginMultiCaretVisual); +var + t: TSynPluginMultiCaretVisual; +begin + if (AScreenCaret.ListIndex < 0) or (AScreenCaret.ListIndex >= FCount) or + (FList[AScreenCaret.ListIndex] <> AScreenCaret) + then begin + assert(False, 'TSynPluginMultiCaretVisualList.Remove: not on list'); + exit; + end; + if AScreenCaret.ListIndex < FCount then begin + t := FList[FCount - 1]; + FList[AScreenCaret.ListIndex] := t; + t.FListIndex := AScreenCaret.ListIndex; + end; + AScreenCaret.FListIndex := -1; + dec(FCount); +end; + +procedure TSynPluginMultiCaretVisualList.Clear; +var + i: Integer; +begin + for i := 0 to FCount - 1 do + FList[i].Free; + FCount := 0; + SetLength(FList, EMPTY_LIST_LEN); +end; + +function TSynPluginMultiCaretVisualList.Count: Integer; +begin + Result := FCount; +end; + +{ TSynPluginMultiCaretList } + +function TSynPluginMultiCaretList.FindEqOrNextCaretRawIdx(X, Y, Offs: Integer; + LowIdx: integer; HighIdx: integer): Integer; +var + l, h: integer; + cp: ^TCaretData; +begin + if LowIdx < 0 + then l := FLowIndex + else l := LowIdx; + if HighIdx < 0 + then h := FHighIndex + else h := HighIdx; + + if h < l then begin + Result := h; + exit; + end; + + Result := (l + h) div 2; + // FPC does not optimize the repeated array access + while (h > l) do begin + cp := @FCarets[Result]; + if (cp^.y > y) or + ( (cp^.y = y) and + ( (cp^.x > x) or + ((cp^.x = x) and (cp^.offs >= Offs)) + ) + ) + then + h := Result + else + l := Result + 1; + Result := cardinal(l + h) div 2; + end; + cp := @FCarets[Result]; + if (cp^.y < y) or + ( (cp^.y = y) and + (cp^.x < x) or + ((cp^.x = x) and (cp^.offs < Offs)) + ) + then + inc(Result); +end; + +function TSynPluginMultiCaretList.GetCaret(Index: Integer): TPoint; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetCaret: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result.x := FCarets[Index].x; + Result.y := FCarets[Index].y; +end; + +function TSynPluginMultiCaretList.GetCaretFull(Index: Integer): TLogCaretPoint; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result.X := FCarets[Index].x; + Result.Y := FCarets[Index].y; + Result.Offs := FCarets[Index].offs; +end; + +function TSynPluginMultiCaretList.GetCaretKeepX(Index: Integer): Integer; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result := FCarets[Index].KeepX; +end; + +function TSynPluginMultiCaretList.GetCaretOffs(Index: Integer): Integer; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result := FCarets[Index].offs; +end; + +function TSynPluginMultiCaretList.GetCaretX(Index: Integer): Integer; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result := FCarets[Index].x; +end; + +function TSynPluginMultiCaretList.GetCaretY(Index: Integer): Integer; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetCaretY: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result := FCarets[Index].y; +end; + +function TSynPluginMultiCaretList.GetFlags(Index: Integer): TCaretFlags; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetFlags: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result := FCarets[Index].Flags; +end; + +function TSynPluginMultiCaretList.GetMainCaretIndex: Integer; +begin + if FMainCaretIndex >= FLowIndex then + Result := FMainCaretIndex - FLowIndex + else + Result := -1; +end; + +function TSynPluginMultiCaretList.GetVisual(Index: Integer): TSynPluginMultiCaretVisual; +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.GetVisual: (Index>=FLowIndex) and (Index <= FHighIndex)'); + Result := FCarets[Index].Visual; +end; + +procedure TSynPluginMultiCaretList.SetCaret(Index: Integer; AValue: TPoint); +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.SetCaret: (Index>=FLowIndex) and (Index <= FHighIndex)'); + if (FCarets[Index].x = AValue.x) and (FCarets[Index].y = AValue.y) then exit; + FCarets[Index].x := AValue.x; + FCarets[Index].y := AValue.y; + AdjustAfterChange(Index); +end; + +procedure TSynPluginMultiCaretList.SetCaretFull(Index: Integer; AValue: TLogCaretPoint); +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.SetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + if (FCarets[Index].x = AValue.x) and (FCarets[Index].y = AValue.y) and (FCarets[Index].offs = AValue.Offs) then + exit; + FCarets[Index].x := AValue.X; + FCarets[Index].y := AValue.Y; + FCarets[Index].offs := AValue.Offs; + AdjustAfterChange(Index); +end; + +procedure TSynPluginMultiCaretList.SetCaretKeepX(Index: Integer; AValue: Integer); +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.SetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + //if FCarets[Index].KeepX = AValue then exit; + FCarets[Index].KeepX := AValue; +end; + +procedure TSynPluginMultiCaretList.SetCaretOffs(Index: Integer; AValue: Integer); +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.SetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + if FCarets[Index].offs = AValue then exit; + FCarets[Index].offs := AValue; + AdjustAfterChange(Index); +end; + +procedure TSynPluginMultiCaretList.SetCaretX(Index: Integer; AValue: Integer); +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.SetCaretX: (Index>=FLowIndex) and (Index <= FHighIndex)'); + if FCarets[Index].x = AValue then exit; + FCarets[Index].x := AValue; + AdjustAfterChange(Index); +end; + +procedure TSynPluginMultiCaretList.SetCaretY(Index: Integer; AValue: Integer); +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.SetCaretY: (Index>=FLowIndex) and (Index <= FHighIndex)'); + if FCarets[Index].y = AValue then exit; + FCarets[Index].y := AValue; + AdjustAfterChange(Index); +end; + +procedure TSynPluginMultiCaretList.SetVisual(Index: Integer; AValue: TSynPluginMultiCaretVisual); +begin + Index := Index + FLowIndex; + assert((Index>=FLowIndex) and (Index <= FHighIndex), 'TSynPluginMultiCaretList.SetVisual: (Index>=FLowIndex) and (Index <= FHighIndex)'); + if FCarets[Index].Visual <> nil then + FCarets[Index].Visual.MoveToUnUsed; + FCarets[Index].Visual := AValue; + if AValue <> nil then + AValue.MoveToUsed; +end; + +function TSynPluginMultiCaretList.InternalRemoveCaretEx(RawIndex: Integer; + AlternativeRawIndex: Integer): Integer; +begin + assert((RawIndex>=FLowIndex) and (RawIndex <= FHighIndex), 'TSynPluginMultiCaretList.InternalRemoveCaretEx: (Index>=FLowIndex) and (Index <= FHighIndex)'); + if (RawIndex = FMainCaretIndex) and (AlternativeRawIndex >= FLowIndex) then + Result := InternalRemoveCaret(AlternativeRawIndex) + else + Result := InternalRemoveCaret(RawIndex); +end; + +function TSynPluginMultiCaretList.InternalRemoveCaret(RawIndex: Integer): integer; +begin + assert(FIteratoreMode=mciNone, 'TSynPluginMultiCaretList.AddCaret: FIteratoreMode=mciNone'); + assert((RawIndex>=FLowIndex) and (RawIndex <= FHighIndex), 'TSynPluginMultiCaretList.InternalRemoveCaret: (RawIndex>=FLowIndex) and (RawIndex <= FHighIndex)'); + Result := 0; // change to LowCaret .. RawIndex + + if FCarets[RawIndex].Visual <> nil then + FCarets[RawIndex].Visual.MoveToUnUsed; + if RawIndex = FMainCaretIndex then + FMainCaretIndex := -1; + + if RawIndex > (FHighIndex + FLowIndex) div 2 then begin + if (RawIndex < FHighIndex) then + Move(FCarets[RawIndex+1], FCarets[RawIndex], (FHighIndex - RawIndex) * SizeOf(FCarets[0])); + dec(FHighIndex); + if RawIndex < FMainCaretIndex then + dec(FMainCaretIndex); + end + else begin + if (RawIndex > FLowIndex) then + Move(FCarets[FLowIndex], FCarets[FLowIndex+1], (RawIndex - FLowIndex) * SizeOf(FCarets[0])); + inc(FLowIndex); + if RawIndex > FMainCaretIndex then + inc(FMainCaretIndex); + Result := 1; // FLowIndex was increasde by 1; + end; + + //debugln(SynMCaretDebug, ['TSynPluginMultiCaretList.InternalRemoveCaret ', RawIndex, ' , ', count]); +end; + +procedure TSynPluginMultiCaretList.AdjustAfterChange(RawIndex: Integer); +begin + assert(FIteratoreMode=mciNone, 'TSynPluginMultiCaretList.AddCaret: FIteratoreMode=mciNone'); + FLowCaret := @FCarets[FLowIndex]; + FHighCaret := @FCarets[FHighIndex]; + AdjustAfterChange(@FCarets[RawIndex]); +end; + +constructor TSynPluginMultiCaretList.Create; +begin + FLowIndex := 0; + FHighIndex := -1; + FMainCaretIndex := -1; +end; + +function TSynPluginMultiCaretList.AddCaret(X, Y, Offs: Integer; flags: TCaretFlags; + PhysX: Integer): Integer; +var + NewCarets: Array of TCaretData; + Len, AddLen, i, Middle: Integer; +begin + assert(FIteratoreMode=mciNone, 'TSynPluginMultiCaretList.AddCaret: FIteratoreMode=mciNone'); + Result := FindEqOrNextCaretRawIdx(x, y, Offs); + if Result < FLowIndex then + Result := FLowIndex; + if (Result <= FHighIndex) and (FCarets[Result].x = x) and (FCarets[Result].y = y) and + (FCarets[Result].offs = Offs) and not(cfAddDuplicate in flags) + then begin + if cfMainCaret in flags then begin + FMainCaretIndex := Result; + FCarets[Result].Flags := flags + [cfMainCaret]; + end; + // TODO maybe update PhysX; + Result := Result - FLowIndex; + exit; + end; + + Len := length(FCarets) - 1; + Middle := (FLowIndex + FHighIndex) div 2; + if (FLowIndex > 0) and ((Result < Middle) or (FHighIndex = len)) + then begin + // use space in front of list + if (Result > FHighIndex) and (FHighIndex = High(FCarets)) // moving all entries + then i := max(FLowIndex div 2 - 1, 0) // Make some room at the end of the list + else i := 0; + if Result > FLowIndex then + Move(FCarets[FLowIndex], FCarets[FLowIndex-1-i], (Result-FLowIndex) * SizeOf(FCarets[0])); + FLowIndex := FLowIndex - 1 - i; + FHighIndex := FHighIndex - i; + Result := Result - 1 - i; + if Result > FMainCaretIndex + then FMainCaretIndex := FMainCaretIndex - 1 - i + else FMainCaretIndex := FMainCaretIndex - i; + end + else + if FHighIndex < Len then begin + // use space at end of list + if (Result = FLowIndex) and (FLowIndex = 0) // moving all entries + then i := max((High(FCarets)-FHighIndex) div 2 - 1, 0) // Make some room at the start of the list + else i := 0; + if Result <= FHighIndex then + Move(FCarets[Result], FCarets[Result+1+i], (FHighIndex-Result+1) * SizeOf(FCarets[0])); + FHighIndex := FHighIndex + 1 + i; + FLowIndex := FLowIndex + i; + Result := Result + i; + if Result <= FMainCaretIndex + then FMainCaretIndex := FMainCaretIndex + 1 + i + else FMainCaretIndex := FMainCaretIndex + i; + end + else begin + // realloc all + AddLen := Max(32, Len div 8); + SetLength(NewCarets, Len + 2 * AddLen); + i := Result-FLowIndex; + if i > 0 then + Move(FCarets[FLowIndex], NewCarets[AddLen], (i) * SizeOf(FCarets[0])); + if Result <= FHighIndex then + Move(FCarets[Result], NewCarets[AddLen+i+1], (FHighIndex-Result+1) * SizeOf(FCarets[0])); + + if Result <= FMainCaretIndex + then FMainCaretIndex := FMainCaretIndex - FLowIndex + AddLen + 1 + else FMainCaretIndex := FMainCaretIndex - FLowIndex + AddLen; + + FLowIndex := AddLen; + FHighIndex := AddLen + Len + 1; + Result := i + AddLen; + FCarets := NewCarets; + end; + + FCarets[Result].x := x; + FCarets[Result].offs := Offs; + FCarets[Result].y := y; + FCarets[Result].KeepX := PhysX; + FCarets[Result].Visual := nil; + FCarets[Result].Flags := flags - [cfAddDuplicate]; + + if cfMainCaret in flags then + FMainCaretIndex := Result; + + Result := Result - FLowIndex; +end; + +procedure TSynPluginMultiCaretList.RemoveCaret(Index: Integer); +begin + assert(FIteratoreMode=mciNone, 'TSynPluginMultiCaretList.RemoveCaret: FIteratoreMode=mciNone'); + InternalRemoveCaret(Index+FLowIndex); +end; + +procedure TSynPluginMultiCaretList.Clear(AFreeVisual: Boolean; ACapacity: Integer); +var + i: Integer; +begin + assert(FIteratoreMode=mciNone, 'TSynPluginMultiCaretList.Clear: FIteratoreMode=mciNone'); + if AFreeVisual then + begin + for i := FLowIndex to FHighIndex do + if FCarets[i].Visual <> nil then begin + FCarets[i].Visual.UsedList.Remove(FCarets[i].Visual); + FCarets[i].Visual.Free; + end + end + else + for i := FLowIndex to FHighIndex do + if FCarets[i].Visual <> nil then + FCarets[i].Visual.MoveToUnUsed; + SetLength(FCarets, ACapacity); + FLowIndex := Cardinal(ACapacity) div 2; + FHighIndex := FLowIndex - 1; + FMainCaretIndex := -1; +end; + +function TSynPluginMultiCaretList.Count: Integer; +begin + Result := FHighIndex - FLowIndex + 1; +end; + +function TSynPluginMultiCaretList.Capacity: Integer; +begin + Result := Length(FCarets); +end; + +procedure TSynPluginMultiCaretList.ImportFromSortedList(AMultiCaretList: TLogCaretPointArray); +var + i: Integer; + c: PCaretData; +begin + Clear(False, Length(AMultiCaretList) + 32); + FLowIndex := 16; + FHighIndex := FLowIndex + High(AMultiCaretList); + c := @FCarets[FLowIndex]; + for i := 0 to High(AMultiCaretList) do begin + c^.x := AMultiCaretList[i].X; + c^.offs := AMultiCaretList[i].Offs; + c^.y := AMultiCaretList[i].Y; + c^.KeepX := -1; + c^.Visual := nil; + c^.Flags := []; + inc(c); + end; +end; + +function TSynPluginMultiCaretList.FindCaretIdx(X, Y, Offs: Integer): Integer; +begin + Result := FindEqOrNextCaretRawIdx(x, y, offs); + if Result < FLowIndex then + exit(-1); + if (Result > FHighIndex) or (FCarets[Result].x <> x) or (FCarets[Result].offs <> Offs) or + (FCarets[Result].y <> y) + then + Result := -1 + else + Result := Result - FLowIndex; +end; + +function TSynPluginMultiCaretList.FindEqOrNextCaretIdx(X, Y, Offs: Integer; LowIdx: integer; + HighIdx: integer): Integer; +begin + if LowIdx >= 0 then inc(LowIdx, FLowIndex); + if HighIdx >= 0 then inc(HighIdx, FLowIndex); + Result := FindEqOrNextCaretRawIdx(x, y, offs, LowIdx, HighIdx); + if (Result > FHighIndex) + then + Result := -1 + else + Result := Result - FLowIndex; +end; + +procedure TSynPluginMultiCaretList.AdjustAllAfterEdit(aLinePos, aBytePos, aCount, + aLineBrkCnt: Integer); +var + i, j, lowest: Integer; +begin + if Count = 0 then exit; + lowest := FindEqOrNextCaretRawIdx(aBytePos, aLinePos, 0); + if lowest < FLowIndex then lowest := FLowIndex; + + if aLineBrkCnt = 0 then begin + if aCount < 0 then begin + i := lowest; + while i <= FHighIndex do begin + if (FCarets[i].y = aLinePos) and (FCarets[i].x >= aBytePos) then + FCarets[i].x := Max(aBytePos, FCarets[i].x + aCount) + else + break; + inc(i); + end; + end + else begin // aCount >= 0 + for i := lowest to FHighIndex do begin + if (FCarets[i].y = aLinePos) and (FCarets[i].x >= aBytePos) then + FCarets[i].x := FCarets[i].x + aCount + else + break; + end; + end; + end + else // aLineBrkCnt = 0 + begin // aCount is always 0 (aBytePos:=max(1,aBytePos+aCount)) // aBytePos is the end of line + if aLineBrkCnt < 0 then begin + j := aLinePos+(-aLineBrkCnt); + i := lowest; + while i <= FHighIndex do begin + if (FCarets[i].y < j) then + FCarets[i].x := aBytePos; + if (FCarets[i].y = j) then + FCarets[i].x := FCarets[i].x - 1 + aBytePos + else + break; + FCarets[i].y := aLinePos; + inc(i); + end; + while i <= FHighIndex do begin + FCarets[i].y := FCarets[i].y + aLineBrkCnt; + inc(i); + end; + end + else begin // aLineBrkCnt >= 0 + i := lowest; + while i <= FHighIndex do begin + if (FCarets[i].y = aLinePos) then + FCarets[i].x := FCarets[i].x + 1 - aBytePos + else + break; + FCarets[i].y := FCarets[i].y + aLineBrkCnt; + inc(i); + end; + while i <= FHighIndex do begin + FCarets[i].y := FCarets[i].y + aLineBrkCnt; + inc(i); + end; + end; + end; +end; + +procedure TSynPluginMultiCaretList.FindAndRemoveMergedCarets; +var + i, i2: Integer; + c: TCaretData; +begin + i := FLowIndex + 1; + while i <= FHighIndex do begin + if (FCarets[i].y = FCarets[i-1].y) and (FCarets[i].x = FCarets[i-1].x) then begin + i := i + InternalRemoveCaretEx(i, i-1); + continue; + end; + if (FCarets[i].y < FCarets[i-1].y) or + ((FCarets[i].y = FCarets[i-1].y) and (FCarets[i].x < FCarets[i-1].x)) + then begin + // should not happen + {$IfDef SynMultiCaretDebug} + debugln(SynMCaretDebug, ['TSynPluginMultiCaretList.FindAndRemoveMergedCarets BUBBLE SORTING']); + {$EndIf} + i2 := i; + c := FCarets[i2]; + repeat + FCarets[i2] := FCarets[i2-1]; + dec(i2); + until (i2 = FLowIndex) or (FCarets[i2].y > FCarets[i2-1].y) or + ((FCarets[i2].y = FCarets[i2-1].y) and (FCarets[i2].x > FCarets[i2-1].x)); + FCarets[i2] := c; + if FMainCaretIndex = i then + FMainCaretIndex := i2; + if (FMainCaretIndex < i) and (FMainCaretIndex >= i2) then + inc(FMainCaretIndex); + end; + inc(i); + end; +end; + +procedure TSynPluginMultiCaretList.IncMergeLock; +begin + inc(FMergeLock); +end; + +procedure TSynPluginMultiCaretList.DecMergeLock; +begin + dec(FMergeLock); +end; + +function TSynPluginMultiCaretList.GetCurrentCaretFull: TLogCaretPoint; +begin + Result.X := FCurrenCaret^.x; + Result.Y := FCurrenCaret^.y; + Result.Offs := FCurrenCaret^.offs; +end; + +function TSynPluginMultiCaretList.GetCurrentCaretFlags: TCaretFlags; +begin + Result := FCurrenCaret^.Flags; +end; + +function TSynPluginMultiCaretList.GetCurrentCaretKeepX: Integer; +begin + Result := FCurrenCaret^.KeepX; +end; + +procedure TSynPluginMultiCaretList.SetCurrentCaretFull(AValue: TLogCaretPoint); +begin + FCurrenCaret^.x := AValue.X; + FCurrenCaret^.y := AValue.Y; + FCurrenCaret^.offs := AValue.Offs; + AdjustAfterChange(FCurrenCaret); +end; + +procedure TSynPluginMultiCaretList.SetCurrentCaretKeepX(AValue: Integer); +begin + FCurrenCaret^.KeepX := AValue; + AdjustAfterChange(FCurrenCaret); +end; + +procedure TSynPluginMultiCaretList.AdjustAfterChange(ACaret: PCaretData); + function ToRawIndex(C: PCaretData): Integer; + begin + Result := (C - PCaretData(@FCarets[0])); // div SizeOf(FCarets[0]); + end; +var + NewCaretPos, HelpCaretPos: PCaretData; + NewCaretIdx, y, x, o: Integer; + v: TCaretData; +begin + assert((ACaret>=FLowCaret) and (ACaret <= FHighCaret) and (ACaret <> nil), 'TSynPluginMultiCaretList.AdjustAfterChange: (ACaret>=FLowCaret) and (ACaret <= FHighCaret)'); + // if iterating then this must only be called with fcurrentcaret + assert((FIteratoreMode=mciNone) or ((ACaret = FCurrenCaret)), 'TSynPluginMultiCaretList.AdjustAfterChange: (FIteratoreMode=mciNone) or (ACaret = FCurrenCaret)'); + + y := ACaret^.y; + + if (ACaret > FLowCaret) then begin + NewCaretPos := ACaret - 1; + if (y <= NewCaretPos^.y) then begin + x := ACaret^.x; + if (y < NewCaretPos^.y) or (x <= NewCaretPos^.x) then begin + o := ACaret^.offs; + if (x < NewCaretPos^.x) or ( (x = NewCaretPos^.x) and (o <= NewCaretPos^.offs) ) + then begin + HelpCaretPos := NewCaretPos - 1; + if (HelpCaretPos >= FLowCaret) and + ( (y < HelpCaretPos^.y) or + ( (y = HelpCaretPos^.y) and + ( (x < HelpCaretPos^.x) or ( (x = HelpCaretPos^.x) and (o < HelpCaretPos^.offs) ) ) + ) ) + then begin + NewCaretIdx := FindEqOrNextCaretRawIdx(x,y,o, FLowIndex, ToRawIndex(HelpCaretPos)); + if NewCaretIdx > FHighIndex then NewCaretIdx := FHighIndex; + NewCaretPos := @FCarets[NewCaretIdx]; + end; + + if (y = NewCaretPos^.y) and (x = NewCaretPos^.x) and (o = NewCaretPos^.offs) then begin + if FMergeLock = 0 then + InternalRemoveCaretEx(ToRawIndex(ACaret), ToRawIndex(NewCaretPos)); + exit; + end; + v := ACaret^; + {$IfDef SynMultiCaretDebug} + debugln(SynMCaretDebug, ['TSynPluginMultiCaretList.AdjustAfterChange ', ToRawIndex(NewCaretPos), ' ',ToRawIndex(ACaret)]); + {$EndIf} + Move(NewCaretPos^, (NewCaretPos+1)^, Pointer(ACaret)-Pointer(NewCaretPos)); + NewCaretPos^ := v; + + assert(FBeforeNextCaret=nil, 'TSynPluginMultiCaretList.AdjustAfterChange: FBeforeNextCaret=nil'); + FCurrenCaret := NewCaretPos; // move down + case FIteratoreMode of + mciUp: FBeforeNextCaret := ACaret; // continue at ACaret+1; + mciDown: begin + FBeforeNextCaret := ACaret + 1; // continue at ACaret; + Include(FCurrenCaret^.Flags, cfIterationDone); + inc(FIterationDoneCount); + end; + end; + end + end; + end; + end; + + if (ACaret < FHighCaret) then begin + NewCaretPos := ACaret + 1; + if (y >= NewCaretPos^.y) then begin + x := ACaret^.x; + if (y > NewCaretPos^.y) or (x >= NewCaretPos^.x) then begin + o := ACaret^.offs; + if (x > NewCaretPos^.x) or ( (x = NewCaretPos^.x) and (o >= NewCaretPos^.offs) ) + then begin + HelpCaretPos := NewCaretPos + 1; + if (HelpCaretPos <= FHighCaret) and + ( (y > HelpCaretPos^.y) or + ( (y = HelpCaretPos^.y) and + ( (x > HelpCaretPos^.x) or ( (x = HelpCaretPos^.x) and (o > HelpCaretPos^.offs) ) ) + ) ) + then begin + NewCaretIdx := FindEqOrNextCaretRawIdx(x,y,o, ToRawIndex(HelpCaretPos), FHighIndex); + if NewCaretIdx < FLowIndex then NewCaretIdx := FLowIndex; + NewCaretPos := @FCarets[NewCaretIdx]; + end; + + if (y = NewCaretPos^.y) and (x = NewCaretPos^.x) and (o = NewCaretPos^.offs) then begin + if FMergeLock = 0 then + InternalRemoveCaretEx(ToRawIndex(ACaret), ToRawIndex(NewCaretPos)); + exit; + end; + v := ACaret^; + {$IfDef SynMultiCaretDebug} + debugln(SynMCaretDebug, ['TSynPluginMultiCaretList.AdjustAfterChange ', ToRawIndex(NewCaretPos), ' ',ToRawIndex(ACaret)]); + {$EndIf} + Move((ACaret+1)^, ACaret^, Pointer(NewCaretPos)-Pointer(ACaret)); + NewCaretPos^ := v; + + assert(FBeforeNextCaret=nil, 'TSynPluginMultiCaretList.AdjustAfterChange: FBeforeNextCaret=nil'); + FCurrenCaret := NewCaretPos; // move down + case FIteratoreMode of + mciDown: FBeforeNextCaret := ACaret; // continue at ACaret-1; + mciUp: begin + FBeforeNextCaret := ACaret - 1; // continue at ACaret; + Include(FCurrenCaret^.Flags, cfIterationDone); + inc(FIterationDoneCount); + end; + end; + end; + end; + end; + end; + +end; + +procedure TSynPluginMultiCaretList.StartIteratorAtFirst; +begin + FBeforeNextCaret := nil; + if Length(FCarets) = 0 then begin + FLowCaret := nil; + FHighCaret := nil; + FCurrenCaret := nil; + exit; + end; + FLowCaret := @FCarets[FLowIndex]; + FHighCaret := @FCarets[FHighIndex]; + FCurrenCaret := FLowCaret - 1; + FIteratoreMode := mciUp; +end; + +function TSynPluginMultiCaretList.IterateNextUp: Boolean; +begin + if FBeforeNextCaret <> nil then begin + FCurrenCaret := FBeforeNextCaret; + FBeforeNextCaret := nil; + end; + repeat + Result := FCurrenCaret < FHighCaret; + if not Result then begin + FIteratoreMode := mciNone; + assert(FIterationDoneCount = 0, 'TSynPluginMultiCaretList.IterateNextUp: FIterationDoneCount = 0'); + exit; + end; + inc(FCurrenCaret); + if not(cfIterationDone in FCurrenCaret^.Flags) then + break; + Exclude(FCurrenCaret^.Flags, cfIterationDone); + dec(FIterationDoneCount); + until False; +end; + +procedure TSynPluginMultiCaretList.StartIteratorAtLast; +begin + FBeforeNextCaret := nil; + if Length(FCarets) = 0 then begin + FLowCaret := nil; + FHighCaret := nil; + FCurrenCaret := nil; + exit; + end; + FLowCaret := @FCarets[FLowIndex]; + FHighCaret := @FCarets[FHighIndex]; + FCurrenCaret := FHighCaret + 1; + FIteratoreMode := mciDown; +end; + +function TSynPluginMultiCaretList.IterateNextDown: Boolean; +begin + if FBeforeNextCaret <> nil then begin + FCurrenCaret := FBeforeNextCaret; + FBeforeNextCaret := nil; + end; + repeat + Result := FCurrenCaret > FLowCaret; + if not Result then begin + FIteratoreMode := mciNone; + assert(FIterationDoneCount = 0, 'TSynPluginMultiCaretList.IterateNextDown: FIterationDoneCount = 0'); + exit; + end; + dec(FCurrenCaret); + if not(cfIterationDone in FCurrenCaret^.Flags) then + break; + Exclude(FCurrenCaret^.Flags, cfIterationDone); + dec(FIterationDoneCount); + until False; +end; + +function TSynPluginMultiCaretList.CanPeekCaret(AIndexOffset: Integer): Boolean; +begin + if AIndexOffset < 0 then + Result := FCurrenCaret + AIndexOffset >= FLowCaret + else + Result := FCurrenCaret + AIndexOffset <= FHighCaret; +end; + +function TSynPluginMultiCaretList.PeekCaretY(AIndexOffset: Integer): Integer; +begin + Result := (FCurrenCaret+AIndexOffset)^.y; +end; + +function TSynPluginMultiCaretList.PeekCaretFull(AIndexOffset: Integer): TLogCaretPoint; +begin + Result.X := (FCurrenCaret+AIndexOffset)^.x; + Result.Y := (FCurrenCaret+AIndexOffset)^.y; + Result.Offs := (FCurrenCaret+AIndexOffset)^.offs; +end; + +{ TSynPluginMultiCaretBase } + +procedure TSynPluginMultiCaretBase.DoBoundsChanged(Sender: TObject); +var + i: Integer; + ta: TLazSynTextArea; +begin + if FPaintLock > 0 then begin + include(FPaintLockFlags, plfBoundsChanged); + exit; + end; + + ta := TextArea; + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].ClipRect := ta.Bounds; + UpdateCaretsPos; +end; + +procedure TSynPluginMultiCaretBase.MergeAndRemoveCarets(AForce: Boolean); +var + i: Integer; +begin + if (FPaintLock > 0) and (not AForce) then begin + include(FPaintLockFlags, plfMergeCarets); + exit; + end; + + Carets.FindAndRemoveMergedCarets; + i := Carets.FindCaretIdx(CaretObj.BytePos, CaretObj.LinePos, CaretObj.BytePosOffset); + if i >= 0 then + Carets.RemoveCaret(i); +end; + +function TSynPluginMultiCaretBase.IsCaretMergeRequested: Boolean; +begin + Result := plfMergeCarets in FPaintLockFlags; +end; + +procedure TSynPluginMultiCaretBase.DoLinesEdited(Sender: TSynEditStrings; aLinePos, aBytePos, + aCount, aLineBrkCnt: Integer; aText: String); +begin + Carets.AdjustAllAfterEdit(aLinePos, aBytePos, aCount, aLineBrkCnt); + MergeAndRemoveCarets; +end; + +procedure TSynPluginMultiCaretBase.SetColor(AValue: TColor); +var + i: Integer; +begin + if FColor = AValue then Exit; + FColor := AValue; + for i := 0 to FUsedList.Count - 1 do + TSynEditScreenCaretPainterInternal(FUsedList[i].Painter).Color := FColor; +end; + +function TSynPluginMultiCaretBase.CreateVisual: TSynPluginMultiCaretVisual; +begin + Result := TSynPluginMultiCaretVisual.Create(Editor, + TSynEditScreenCaretPainterInternal, + FUsedList, FUnUsedList); + Result.PaintTimer:= ScreenCaret.PaintTimer; +end; + +function TSynPluginMultiCaretBase.GetVisual: TSynPluginMultiCaretVisual; +var + ta: TLazSynTextArea; + i: TSynCaretType; +begin + if FUnUsedList.Count > 0 then + Result := FUnUsedList[FUnUsedList.Count-1] + else + Result := CreateVisual; + + ta := TextArea; + Result.ClipRect := ta.Bounds; + Result.CharHeight := ta.LineHeight - Max(0, ta.ExtraLineSpacing); + Result.CharWidth := ta.CharWidth; + if Editor.InsertMode then + Result.DisplayType := Editor.InsertCaret + else + Result.DisplayType := Editor.OverwriteCaret; + for i := low(TSynCaretType) to high(TSynCaretType) do + Result.SetCaretTypeSize(i, FCustomPixelWidth[i], FCustomPixelHeight[i], FCustomOffsetX[i], FCustomOffsetY[i], FCustomFlags[i]); + TSynEditScreenCaretPainterInternal(Result.Painter).Color := FColor; +end; + +procedure TSynPluginMultiCaretBase.DoTextSizeChanged(Sender: TObject); +var + i: Integer; + ta: TLazSynTextArea; +begin + if FPaintLock > 0 then begin + include(FPaintLockFlags, plfTextSizeChanged); + exit; + end; + + ta := TextArea; + for i := 0 to FUsedList.Count - 1 do begin + FUsedList[i].CharHeight := ta.LineHeight - Max(0, ta.ExtraLineSpacing); + FUsedList[i].CharWidth := ta.CharWidth; + end; + UpdateCaretsPos; +end; + +procedure TSynPluginMultiCaretBase.DoEditorPaintEvent(Sender: TObject; + EventType: TSynPaintEvent; const prcClip: TRect); +var + i: Integer; +begin + if EventType = peAfterPaint then + UpdateCaretsPos; + + case EventType of + peBeforePaint: + begin + FInPaint := True; + FPaintClip := prcClip; + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].BeginPaint(prcClip); + for i := 0 to FUnUsedList.Count - 1 do + FUnUsedList[i].BeginPaint(prcClip); + end; + peAfterPaint: + begin + FInPaint := False; + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].FinishPaint(prcClip); + for i := 0 to FUnUsedList.Count - 1 do + FUnUsedList[i].FinishPaint(prcClip); + end; + end; +end; + +procedure TSynPluginMultiCaretBase.DoEditorScrollEvent(Sender: TObject; + EventType: TSynScrollEvent; dx, dy: Integer; const prcScroll, prcClip: TRect); +var + i: Integer; +begin + case EventType of + peBeforeScroll: + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].BeginScroll(dx, dy, prcScroll, prcClip); + peAfterScroll: + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].FinishScroll(dx, dy, prcScroll, prcClip, True); + peAfterScrollFailed: + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].FinishScroll(dx, dy, prcScroll, prcClip, False); + end; + + if EventType = peAfterScroll then + UpdateCaretsPos; +end; + +procedure TSynPluginMultiCaretBase.DoEditorStatusChanged(Sender: TObject; + Changes: TSynStatusChanges); +var + i: Integer; + v: Boolean; +begin + if scFocus in Changes then begin + v := (Editor.Focused or (eoPersistentCaret in Editor.Options)) and not (eoNoCaret in Editor.Options); + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].Visible := v; + end; + if scInsertMode in Changes then + for i := 0 to FUsedList.Count - 1 do + if Editor.InsertMode + then FUsedList[i].DisplayType := Editor.InsertCaret + else FUsedList[i].DisplayType := Editor.OverwriteCaret; + if scOptions in Changes then begin + for i := 0 to FUsedList.Count - 1 do begin + if Editor.InsertMode + then FUsedList[i].DisplayType := Editor.InsertCaret + else FUsedList[i].DisplayType := Editor.OverwriteCaret; + UpdateCaretsPos; + end; + end; +end; + +procedure TSynPluginMultiCaretBase.DoAfterDecPaintLock(Sender: TObject); +begin + if FPaintLock > 0 then + Dec(FPaintLock); + if FPaintLock > 0 then + exit; + + Include(FPaintLockFlags, plfDeferUpdateCaretsPos); + if plfBoundsChanged in FPaintLockFlags then + DoBoundsChanged(nil); + if plfTextSizeChanged in FPaintLockFlags then + DoTextSizeChanged(nil); + if plfMergeCarets in FPaintLockFlags then + MergeAndRemoveCarets; + Exclude(FPaintLockFlags, plfDeferUpdateCaretsPos); + if plfUpdateCaretsPos in FPaintLockFlags then + UpdateCaretsPos; + FPaintLockFlags := []; + + ScreenCaret.UnLock; // unlock timer +end; + +procedure TSynPluginMultiCaretBase.DoBeforeIncPaintLock(Sender: TObject); +begin + inc(FPaintLock); + + if FPaintLock = 1 then + ScreenCaret.Lock; // lock timer +end; + +function TSynPluginMultiCaretBase.GetTextArea: TLazSynTextArea; +begin + Result := TLazSynSurfaceManager(PaintArea).TextArea; +end; + +function TSynPluginMultiCaretBase.AddCaret(X, Y, Offs: Integer; flags: TCaretFlags; + PhysX: Integer): Integer; +var + y1, y2: Integer; +begin + Result := Carets.AddCaret(x,y, Offs, flags, PhysX); + if cfNoneVisual in flags then + exit; + + if FPaintLock > 0 then begin + UpdateCaretsPos; + exit; + end; + + if (eoNoCaret in Editor.Options) then begin + Carets.Visual[Result] := nil; + exit; + end; + + y1 := Editor.RowToScreenRow(y); + if (y1 < 0) or (y1 > Editor.LinesInWindow + 1) then + y := -1; // not visible + if y > 1 then + y2 := Editor.RowToScreenRow(y-1); + + if (y > 0) and (y1 <> y2) or (y=1) then begin + if Carets.Visual[Result] = nil then + Carets.Visual[Result] := GetVisual; + x := ViewedTextBuffer.LogPhysConvertor.LogicalToPhysical(ToIdx(y), x, Offs); // TODO: check if offs was adjusted? But should not happen for NEW caret + Carets.Visual[Result].DisplayPos := TextArea.RowColumnToPixels(Point(x, y1)); + Carets.Visual[Result].Visible := (eoPersistentCaret in Editor.Options) or Editor.Focused; + end + else + Carets.Visual[Result] := nil; +end; + +procedure TSynPluginMultiCaretBase.RemoveCaret(Index: Integer); +begin + Carets.RemoveCaret(Index); +end; + +procedure TSynPluginMultiCaretBase.UpdateCaretsPos; +var + i, x, y, o, w: Integer; + y1, y2: Integer; + vis: Boolean; +begin + if plfDeferUpdateCaretsPos in FPaintLockFlags then exit; + if FPaintLock > 0 then begin + include(FPaintLockFlags, plfUpdateCaretsPos); + exit; + end; + if (eoNoCaret in Editor.Options) then begin + for i := 0 to CaretsCount - 1 do + Carets.Visual[i] := nil; + exit; + end; + + vis := (eoPersistentCaret in Editor.Options) or Editor.Focused; + + w := Editor.LinesInWindow + 1; + for i := 0 to CaretsCount - 1 do begin + if cfNoneVisual in Carets.Flags[i] then continue; + + x := Carets.CaretX[i]; + y := Carets.CaretY[i]; + o := Carets.CaretOffs[i]; + y1 := Editor.RowToScreenRow(y); + if (y1 < 0) or (y1 > w) then begin + Carets.Visual[i] := nil; + continue; + end; + + if y > 1 then + y2 := Editor.RowToScreenRow(y-1); + + if (y1 <> y2) or (y=1) then begin + if Carets.Visual[i] = nil then + Carets.Visual[i] := GetVisual; + x := ViewedTextBuffer.LogPhysConvertor.LogicalToPhysical(ToIdx(y), x, o); + Carets.Visual[i].DisplayPos := TextArea.RowColumnToPixels(Point(x, y1)); + Carets.Visual[i].Visible := vis; +//todo: remove if duplicate + // check if offs was adjusted + //if o <> Carets.CaretOffs[i] then + // Carets.CaretOffs[i] := o; + end + else + Carets.Visual[i] := nil; + end; +end; + +procedure TSynPluginMultiCaretBase.ClearCarets; +begin + Carets.Clear(True); + FUsedList.Clear; + FUnUsedList.Clear; + DoCleared; +end; + +function TSynPluginMultiCaretBase.CaretsCount: Integer; +begin + Result := Carets.Count; +end; + +procedure TSynPluginMultiCaretBase.DoCleared; +begin + // +end; + +procedure TSynPluginMultiCaretBase.DoBufferChanged(Sender: TObject); +begin + TSynEditStrings(Sender).RemoveNotifyHandler(senrAfterDecPaintLock, @DoAfterDecPaintLock); + TSynEditStrings(Sender).RemoveNotifyHandler(senrBeforeIncPaintLock, @DoBeforeIncPaintLock); + TSynEditStrings(Sender).RemoveEditHandler(@DoLinesEdited); + ViewedTextBuffer.AddEditHandler(@DoLinesEdited); + ViewedTextBuffer.AddNotifyHandler(senrBeforeIncPaintLock, @DoBeforeIncPaintLock); + ViewedTextBuffer.AddNotifyHandler(senrAfterDecPaintLock, @DoAfterDecPaintLock); +end; + +procedure TSynPluginMultiCaretBase.DoEditorRemoving(AValue: TCustomSynEdit); +begin + inherited DoEditorRemoving(AValue); + if Editor <> nil then begin + ClearCarets; + TextArea.RemoveBoundsChangeHandler(@DoBoundsChanged); + TextArea.RemoveTextSizeChangeHandler(@DoTextSizeChanged); + Editor.UnRegisterStatusChangedHandler(@DoEditorStatusChanged); + Editor.UnRegisterScrollEventHandler(@DoEditorScrollEvent); + Editor.UnRegisterPaintEventHandler(@DoEditorPaintEvent); + ViewedTextBuffer.RemoveNotifyHandler(senrAfterDecPaintLock, @DoAfterDecPaintLock); + ViewedTextBuffer.RemoveNotifyHandler(senrBeforeIncPaintLock, @DoBeforeIncPaintLock); + ViewedTextBuffer.RemoveEditHandler(@DoLinesEdited); + ViewedTextBuffer.RemoveGenericHandler(senrTextBufferChanged, TMethod(@DoBufferChanged)); + end; +end; + +procedure TSynPluginMultiCaretBase.DoEditorAdded(AValue: TCustomSynEdit); +begin + if Editor <> nil then begin + ViewedTextBuffer.AddGenericHandler(senrTextBufferChanged, TMethod(@DoBufferChanged)); + ViewedTextBuffer.AddEditHandler(@DoLinesEdited); + ViewedTextBuffer.AddNotifyHandler(senrBeforeIncPaintLock, @DoBeforeIncPaintLock); + ViewedTextBuffer.AddNotifyHandler(senrAfterDecPaintLock, @DoAfterDecPaintLock); + Editor.RegisterPaintEventHandler(@DoEditorPaintEvent, [peBeforePaint, peAfterPaint]); + Editor.RegisterScrollEventHandler(@DoEditorScrollEvent, [peBeforeScroll, peAfterScroll, peAfterScrollFailed]); + Editor.RegisterStatusChangedHandler(@DoEditorStatusChanged, [scInsertMode, scFocus, scOptions]); + TextArea.AddTextSizeChangeHandler(@DoTextSizeChanged); + TextArea.AddBoundsChangeHandler(@DoBoundsChanged); + + if ScreenCaret.Painter.ClassType = TSynEditScreenCaretPainterSystem then + ScreenCaret.ChangePainter(TSynEditScreenCaretPainterInternal); + end; + inherited DoEditorAdded(AValue); +end; + +constructor TSynPluginMultiCaretBase.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FColor := clBlack; + FCarets := TSynPluginMultiCaretList.Create; + FUsedList := TSynPluginMultiCaretVisualList.Create; + FUnUsedList := TSynPluginMultiCaretVisualList.Create; +end; + +destructor TSynPluginMultiCaretBase.Destroy; +begin + inherited Destroy; + FreeAndNil(FCarets); + FreeAndNil(FUsedList); + FreeAndNil(FUnUsedList); +end; + +procedure TSynPluginMultiCaretBase.SetCaretTypeSize(AType: TSynCaretType; AWidth, AHeight, + AXOffs, AYOffs: Integer; AFlags: TSynCustomCaretSizeFlags); +var + i: Integer; +begin + FCustomPixelWidth[AType] := AWidth; + FCustomPixelHeight[AType] := AHeight; + FCustomOffsetX[AType] := AXOffs; + FCustomOffsetY[AType] := AYOffs; + FCustomFlags[AType] := AFlags; + + for i := 0 to FUsedList.Count - 1 do + FUsedList[i].SetCaretTypeSize(AType, AWidth, AHeight, AXOffs, AYOffs, AFlags) +end; + +{ TSynPluginMultiCaretMouseActions } + +procedure TSynPluginMultiCaretMouseActions.ResetDefaults; +begin + Clear; + AddCommand(emcPluginMultiCaretToggleCaret, False, mbXLeft, ccAny, cdDown, [ssShift, ssCtrl], [ssShift,ssCtrl,ssAlt]); +end; + +{ TSynPluginMultiCaretKeyStrokes } + +procedure TSynPluginMultiCaretKeyStrokes.ResetDefaults; + procedure AddKey(const ACmd: TSynEditorCommand; const AKey: word; + const AShift: TShiftState; const AShiftMask: TShiftState = []); + begin + with Add do + begin + Key := AKey; + Shift := AShift; + ShiftMask := AShiftMask; + Command := ACmd; + end; + end; +begin + inherited ResetDefaults; + AddKey(ecPluginMultiCaretToggleCaret, VK_SPACE, [ssShift, ssCtrl], [ssShift,ssCtrl,ssAlt]); + AddKey(ecPluginMultiCaretClearAll, VK_ESCAPE, [ssShift, ssCtrl], [ssShift,ssCtrl,ssAlt]); +end; + +{ TSynEditUndoMultiCaret } + +function TSynEditUndoMultiCaret.IsEqualContent(AnItem: TSynEditUndoItem): Boolean; +begin + Result := (FCaretUndoItem = nil) or + FCaretUndoItem.IsEqual(TSynEditUndoMultiCaret(AnItem).FCaretUndoItem); + Result := Result and + (FActiveMode = TSynEditUndoMultiCaret(AnItem).FActiveMode) and + (Length(FMultiCaretList) = Length(TSynEditUndoMultiCaret(AnItem).FMultiCaretList)); + if Result then + Result := 0 = CompareByte(FMultiCaretList[0], TSynEditUndoMultiCaret(AnItem).FMultiCaretList[0], + Length(FMultiCaretList)*SizeOf(FMultiCaretList[0])); +end; + +function TSynEditUndoMultiCaret.DebugString: String; +begin + Result := 'TSynEditUndoMultiCaret '+IntToStr(Length(FMultiCaretList)); + //if FCaretUndoItem <> nil then + // Result := Result + ' / ' + FCaretUndoItem.DebugString; +end; + +constructor TSynEditUndoMultiCaret.Create(ACaretUndoItem: TSynEditUndoItem; + ABeginBlock: Boolean); +begin + FBeginBlock := ABeginBlock; + FCaretUndoItem := ACaretUndoItem; +end; + +destructor TSynEditUndoMultiCaret.Destroy; +begin + FCaretUndoItem.Free; + inherited Destroy; +end; + +constructor TSynEditUndoMultiCaret.AddCaretsFrom(AList: TSynPluginMultiCaretList); +var + i, j: Integer; +begin + SetLength(FMultiCaretList, AList.Count); + j := 0; + for i := 0 to AList.Count-1 do + if not (cfNoneVisual in AList.Flags[i]) then begin + FMultiCaretList[j] := AList.CaretFull[i]; + inc(j); + end; + SetLength(FMultiCaretList, j); +end; + +function TSynEditUndoMultiCaret.IsCaretInfo: Boolean; +begin + Result := True; +end; + +function TSynEditUndoMultiCaret.PerformUndo(Caller: TObject): Boolean; +var + C: TSynCustomPluginMultiCaret; + AnRedoItem: TSynEditUndoMultiCaret; + UList: TSynEditUndoList; +begin + Result := Caller is TSynCustomPluginMultiCaret; + if not Result then exit; + C := TSynCustomPluginMultiCaret(Caller); + Result := (FCaretUndoItem <> nil) and FCaretUndoItem.PerformUndo(C.Editor); + if Result then begin + if FBeginBlock then begin + C.Carets.ImportFromSortedList(FMultiCaretList); + C.ActiveMode := ActiveMode; + C.UpdateCaretsPos; + C.AddStateFlags([sfSkipSelChanged, sfSkipCaretChanged], True); + end; + // redo + UList := C.ViewedTextBuffer.CurUndoList; + if UList.CurrentGroup = nil then exit; // should never happen / just added the caret. + AnRedoItem := TSynEditUndoMultiCaret.Create(UList.CurrentGroup.Pop, not FBeginBlock); + AnRedoItem.FMultiCaretList := FMultiCaretList; + AnRedoItem.ActiveMode := ActiveMode; + UList.AddChange(AnRedoItem); + end; +end; + +{ TSynCustomPluginMultiCaret } + +procedure TSynCustomPluginMultiCaret.TranslateKey(Sender: TObject; Code: word; + SState: TShiftState; var Data: pointer; var IsStartOfCombo: boolean; var Handled: boolean; + var Command: TSynEditorCommand; FinishComboOnly: Boolean; + var ComboKeyStrokes: TSynEditKeyStrokes); +begin + if Handled then + exit; + if not FinishComboOnly then + FKeyStrokes.ResetKeyCombo; + Command := FKeyStrokes.FindKeycodeEx(Code, SState, Data, IsStartOfCombo, FinishComboOnly, ComboKeyStrokes); + + Handled := (Command <> ecNone) or IsStartOfCombo; +end; + +procedure TSynCustomPluginMultiCaret.RemoveCaretsInSelection; +var + i, x, y: Integer; + bb, be: TPoint; + sm: TSynSelectionMode; +begin + bb := SelectionObj.FirstLineBytePos; + be := SelectionObj.LastLineBytePos; + sm := SelectionObj.ActiveSelectionMode; + if sm = smLine then begin + bb.x := 0; + be.x := MaxInt; + end; + if (sm = smColumn) and (bb.x > be.x) then begin + if bb.x = be.x then + exit; + i := bb.x; + bb.x := be.x; + be.x := i; + end; + + i := CaretsCount; + while i > 0 do begin + dec(i); + x := Carets.Caret[i].x; + y := Carets.Caret[i].y; + if (y < bb.y) or + (y > be.y) or + ( ((y = bb.y) or (sm = smColumn)) and (x <= bb.x) ) or + ( ((y = be.y) or (sm = smColumn)) and (x >= be.x) ) + then + Continue; + Carets.RemoveCaret(i); + end; +end; + +function TSynCustomPluginMultiCaret.GetIsInMainExecution: Boolean; +begin + Result := sfProcessingMain in FStateFlags; +end; + +function TSynCustomPluginMultiCaret.GetIsInRepeatExecution: Boolean; +begin + Result := sfProcessingRepeat in FStateFlags; +end; + +procedure TSynCustomPluginMultiCaret.SetActiveMode(AValue: TSynPluginMultiCaretMode); +begin + if FActiveMode = AValue then Exit; + FActiveMode := AValue; + if FActiveMode = mcmNoCarets then begin + ClearCarets; + UnLockSpaceTrimmer; + end + else + LockSpaceTrimmer; +end; + +procedure TSynCustomPluginMultiCaret.SetDefaultColumnSelectMode(AValue: TSynPluginMultiCaretDefaultMode); +begin + if FDefaultColumnSelectMode = AValue then Exit; + FDefaultColumnSelectMode := AValue; +end; + +procedure TSynCustomPluginMultiCaret.SetDefaultMode(AValue: TSynPluginMultiCaretDefaultMode); +begin + if FDefaultMode = AValue then Exit; + FDefaultMode := AValue; +end; + +procedure TSynCustomPluginMultiCaret.SetSkipCaretAtSel; +begin + Include(FStateFlags, sfSkipCaretsAtSelection); + FSelY1 := SelectionObj.FirstLineBytePos.y; + FSelY2 := SelectionObj.LastLineBytePos.y; + FSelX := SelectionObj.FirstLineBytePos.x; +end; + +procedure TSynCustomPluginMultiCaret.UpdateCaretForUndo(var AnUndoItem: TSynEditUndoItem; + AnIsBeginUndo: Boolean); +begin + if (FStateFlags * [sfProcessingCmd, sfSkipUndoCarets] = [sfProcessingCmd]) and // active edit + (CaretsCount > 0) + then begin + AnUndoItem := TSynEditUndoMultiCaret.Create(AnUndoItem, AnIsBeginUndo); + TSynEditUndoMultiCaret(AnUndoItem).AddCaretsFrom(Carets); + TSynEditUndoMultiCaret(AnUndoItem).ActiveMode := ActiveMode; + end; +end; + +function TSynCustomPluginMultiCaret.HandleUndoRedoItem(Caller: TObject; + Item: TSynEditUndoItem): Boolean; +begin + Result := Caller = Editor; + if not Result then exit; + Result := Item.PerformUndo(Self); +end; + +procedure TSynCustomPluginMultiCaret.LockSpaceTrimmer; +var + b: TSynEditStrings; +begin + if FSpaceTrimmerLocked then exit; + FSpaceTrimmerLocked := True; + b := ViewedTextBuffer; + while b <> nil do begin + if b is TSynEditStringTrimmingList then TSynEditStringTrimmingList(b).Lock; + if b is TSynEditStringsLinked then + b := TSynEditStringsLinked(b).NextLines + else + b := nil; + end; +end; + +procedure TSynCustomPluginMultiCaret.UnLockSpaceTrimmer; +var + b: TSynEditStrings; +begin + if not FSpaceTrimmerLocked then exit; + FSpaceTrimmerLocked := False; + b := ViewedTextBuffer; + while b <> nil do begin + if b is TSynEditStringTrimmingList then TSynEditStringTrimmingList(b).UnLock; + if b is TSynEditStringsLinked then + b := TSynEditStringsLinked(b).NextLines + else + b := nil; + end; +end; + +function TSynCustomPluginMultiCaret.LogPhysConvertor: TSynLogicalPhysicalConvertor; +begin + Result := ViewedTextBuffer.LogPhysConvertor; +end; + +function TSynCustomPluginMultiCaret.PhysicalToLogical(AIndex, AColumn: Integer; out + AColOffset: Integer; ACharSide: TSynPhysCharSide; AFlags: TSynLogPhysFlags): Integer; +var + s: String; +begin + Result := LogPhysConvertor.PhysicalToLogical(AIndex, AColumn, AColOffset, ACharSide, AFlags); + if (AColOffset > 0) then begin + if (eoCaretSkipTab in Editor.Options2) then + AColOffset := 0 + else + begin + s := ViewedTextBuffer[AIndex]; + if (Result > Length(s)) or (s[Result] <> #9) then + AColOffset := 0; + end; + end; +end; + +procedure TSynCustomPluginMultiCaret.DoEditorRemoving(AValue: TCustomSynEdit); +begin + if Editor <> nil then begin + ViewedTextBuffer.RemoveNotifyHandler(senrDecOwnedPaintLock, @DoDecForeignPaintLock); + ViewedTextBuffer.RemoveNotifyHandler(senrIncOwnedPaintLock, @DoIncForeignPaintLock); + ViewedTextBuffer.UndoList.UnregisterUpdateCaretUndo(@UpdateCaretForUndo); + CaretObj.RemoveChangeHandler(@DoCaretChanged); + SelectionObj.RemoveChangeHandler(@DoSelectionChanged); + Editor.UnregisterCommandHandler(@ProcessAllSynCommand); + Editor.UnregisterCommandHandler(@ProcessMySynCommand); + Editor.UnRegisterKeyTranslationHandler(@TranslateKey); + Editor.UnregisterMouseActionSearchHandler(@MaybeHandleMouseAction); + Editor.UnregisterMouseActionExecHandler(@DoHandleMouseAction); + Editor.UnRegisterUndoRedoItemHandler(@HandleUndoRedoItem); + end; + inherited DoEditorRemoving(AValue); +end; + +procedure TSynCustomPluginMultiCaret.DoEditorAdded(AValue: TCustomSynEdit); +begin + inherited DoEditorAdded(AValue); + if Editor <> nil then begin + Editor.RegisterUndoRedoItemHandler(@HandleUndoRedoItem); + Editor.RegisterMouseActionSearchHandler(@MaybeHandleMouseAction); + Editor.RegisterMouseActionExecHandler(@DoHandleMouseAction); + Editor.RegisterCommandHandler(@ProcessAllSynCommand, nil, [hcfInit, hcfFinish]); + Editor.RegisterCommandHandler(@ProcessMySynCommand, nil, [hcfPreExec]); + Editor.RegisterKeyTranslationHandler(@TranslateKey); + SelectionObj.AddChangeHandler(@DoSelectionChanged); + CaretObj.AddChangeHandler(@DoCaretChanged); + ViewedTextBuffer.UndoList.RegisterUpdateCaretUndo(@UpdateCaretForUndo); + ViewedTextBuffer.AddNotifyHandler(senrIncOwnedPaintLock, @DoIncForeignPaintLock); + ViewedTextBuffer.AddNotifyHandler(senrDecOwnedPaintLock, @DoDecForeignPaintLock); + end; +end; + +procedure TSynCustomPluginMultiCaret.DoBufferChanged(Sender: TObject); +begin + inherited DoBufferChanged(Sender); + TSynEditStrings(Sender).RemoveNotifyHandler(senrDecOwnedPaintLock, @DoDecForeignPaintLock); + TSynEditStrings(Sender).RemoveNotifyHandler(senrIncOwnedPaintLock, @DoIncForeignPaintLock); + TSynEditStrings(Sender).UndoList.UnregisterUpdateCaretUndo(@UpdateCaretForUndo); + ViewedTextBuffer.UndoList.RegisterUpdateCaretUndo(@UpdateCaretForUndo); + ViewedTextBuffer.AddNotifyHandler(senrIncOwnedPaintLock, @DoIncForeignPaintLock); + ViewedTextBuffer.AddNotifyHandler(senrDecOwnedPaintLock, @DoDecForeignPaintLock); +end; + +procedure TSynCustomPluginMultiCaret.DoAfterDecPaintLock(Sender: TObject); +begin + if FPaintLock > 1 then begin + inherited DoAfterDecPaintLock(Sender); + exit; + end; + + UpdateCaretsPos; + inherited DoAfterDecPaintLock(Sender); + FStateFlags := FStateFlags - [sfExtendingColumnSel, sfSkipSelChanged, sfSkipCaretChanged]; +end; + +procedure TSynCustomPluginMultiCaret.DoIncForeignPaintLock(Sender: TObject); +begin + if Sender = Editor then exit; + inc(FForeignPaintLock); +end; + +procedure TSynCustomPluginMultiCaret.DoDecForeignPaintLock(Sender: TObject); +begin + if Sender = Editor then exit; + dec(FForeignPaintLock); +end; + +procedure TSynCustomPluginMultiCaret.DoCleared; +begin + inherited DoCleared; + ActiveMode := mcmNoCarets; + Exclude(FStateFlags, sfCreateCaretAtCurrentPos); + FColSelDoneY1 := -1; + FColSelDoneY2 := -2; + FColSelDonePhysX := -1; +end; + +procedure TSynCustomPluginMultiCaret.DoLinesEdited(Sender: TSynEditStrings; aLinePos, + aBytePos, aCount, aLineBrkCnt: Integer; aText: String); +begin + if (FStateFlags * [sfProcessingCmd] = []) and + (FForeignPaintLock = 0) + then + ClearCarets; + + + inherited DoLinesEdited(Sender, aLinePos, aBytePos, aCount, aLineBrkCnt, aText); + FStateFlags := FStateFlags - [sfCreateCaretAtCurrentPos, sfSkipCaretsAtSelection, sfNoChangeIndicator]; +end; + +procedure TSynCustomPluginMultiCaret.DoCaretChanged(Sender: TObject); +var + p: TLogCaretPoint; +begin + Exclude(FStateFlags, sfNoChangeIndicator); + if (sfCreateCaretAtCurrentPos in FStateFlags) then begin + p := CaretObj.OldFullLogicalPos; + AddCaret(p.x, p.y, p.Offs); + exclude(FStateFlags, sfCreateCaretAtCurrentPos); + exit; + end; + if (FStateFlags * [sfProcessingCmd, sfExtendingColumnSel, sfSkipCaretChanged] <> []) or + (ActiveMode = mcmAddingCarets) or + (FForeignPaintLock > 0) + then + exit; + + ClearCarets; +end; + +procedure TSynCustomPluginMultiCaret.DoSelectionChanged(Sender: TObject); + procedure AddCarets(StartY, EndY, PhysX: Integer); + var + i, XLog, Offs: Integer; + CurCar: TLogCaretPoint; + begin + i:= -1; + CurCar.Y := -1; + while StartY <= EndY do begin + XLog := PhysicalToLogical(ToIdx(StartY), PhysX, Offs); + if StartY >= CurCar.Y then begin + i := Carets.FindEqOrNextCaretIdx(XLog, StartY, Offs, i+1); + if i >= 0 then + CurCar := Carets.CaretFull[i]; + end; + if (CurCar.x <> XLog) or (CurCar.Offs <> Offs) or (CurCar.y <> StartY) then + AddCaret(XLog, StartY, Offs, [], PhysX); // TODO: pass "i-1" as KnowIndexOfCaretBefore (limit bin search) + inc(StartY); + end; + end; + procedure RemoveCarets(StartY, EndY, PhysX: Integer); + var + i, XLog, Offs: Integer; + begin + XLog := PhysicalToLogical(ToIdx(StartY), PhysX, Offs); + i := Carets.FindEqOrNextCaretIdx(XLog, StartY, Offs); + if i >= 0 then begin + while Carets.CaretY[i] <= EndY do begin + if (Carets.CaretX[i] = XLog) and (Carets.CaretOffs[i] = Offs) then + Carets.RemoveCaret(i) + else + inc(i); + if i >= CaretsCount then + break; + if StartY <> Carets.CaretY[i] then begin + StartY := Carets.CaretY[i]; + XLog := PhysicalToLogical(ToIdx(StartY), PhysX, Offs); + end; + end; + end; + end; +var + i: Integer; + XPhys, XLog, Offs: Integer; + SelFirstY, SelLastY, CurY: Integer; + CurCaret: TLogCaretPoint; +begin + Exclude(FStateFlags, sfNoChangeIndicator); + if (FStateFlags * [sfProcessingCmd, sfSkipSelChanged] <> []) or + (FForeignPaintLock > 0) + then exit; + SelFirstY := Editor.BlockBegin.y; + SelLastY := Editor.BlockEnd.y; + If not ((SelFirstY <> SelLastY) and (Editor.SelectionMode = smColumn) and EnableWithColumnSelection) then begin + ClearCarets; + exit; + end; + + + Include(FStateFlags, sfExtendingColumnSel); + if SelFirstY = CaretObj.LinePos then inc(SelFirstY); + if SelLastY = CaretObj.LinePos then dec(SelLastY); + + if (FColSelDoneY2 >= FColSelDoneY1) then begin + // Delete carets at top, that are no longer in selection + if SelFirstY > FColSelDoneY1 then begin + RemoveCarets(FColSelDoneY1, SelFirstY - 1, FColSelDonePhysX); + FColSelDoneY1 := SelFirstY; + end; + // Delete carets at bottom, that are no longer in selection + if SelLastY < FColSelDoneY2 then begin + RemoveCarets(SelLastY + 1, FColSelDoneY2, FColSelDonePhysX); + FColSelDoneY2 := SelLastY; + end; + end; + + XPhys := Editor.CaretX; + if (FColSelDoneY2 >= FColSelDoneY1) and (XPhys <> FColSelDonePhysX) then begin + // Move carets X + CurY := FColSelDoneY1; + XLog := PhysicalToLogical(ToIdx(CurY), FColSelDonePhysX, Offs); + i := Carets.FindEqOrNextCaretIdx(XLog, CurY, Offs); + if i >= 0 then begin + while True do begin + CurCaret := Carets.CaretFull[i]; + if CurCaret.Y > FColSelDoneY2 then + break; + if (CurCaret.X = XLog) and (CurCaret.Offs = Offs) then begin + CurCaret.X := PhysicalToLogical(ToIdx(CurCaret.Y), XPhys, CurCaret.Offs); + Carets.CaretFull[i] := CurCaret; + Carets.CaretKeepX[i] := XPhys; + end; + inc(i); + if i >= CaretsCount then + break; + if CurY <> Carets.CaretY[i] then begin + CurY := Carets.CaretY[i]; + XLog := PhysicalToLogical(ToIdx(CurY), FColSelDonePhysX, Offs); + end; + end; + end; + FColSelDonePhysX := XPhys; + end; + + if (FColSelDoneY2 < FColSelDoneY1) then begin + // New Selection + AddCarets(SelFirstY, SelLastY, XPhys); + FColSelDoneY1 := SelFirstY; + FColSelDoneY2 := SelLastY; + FColSelDonePhysX := XPhys; + end + else + begin + // Extend + if SelFirstY < FColSelDoneY1 then begin + AddCarets(SelFirstY, FColSelDoneY1 - 1, FColSelDonePhysX); + FColSelDoneY1 := SelFirstY; + end; + if SelLastY > FColSelDoneY2 then begin + AddCarets(FColSelDoneY2 + 1, SelLastY, FColSelDonePhysX); + FColSelDoneY2 := SelLastY; + end; + end; + + i := Carets.FindCaretIdx(CaretObj.BytePos, CaretObj.LinePos, CaretObj.BytePosOffset); + if i >= 0 then + Carets.RemoveCaret(i); + + if ActiveMode = mcmNoCarets then + ActiveMode := DefaultColumnSelectMode; +end; + +procedure TSynCustomPluginMultiCaret.DoBeforeSetSelText(Sender: TObject; AMode: TSynSelectionMode; + ANewText: PChar); +var + skip: Boolean; +begin + SelectionObj.RemoveBeforeSetSelTextHandler(@DoBeforeSetSelText); + + // only here if selectionexists and is smColumn; + skip := //Editor.SelAvail and (SelectionObj.ActiveSelectionMode = smColumn) and + not(eoPersistentBlock in Editor.Options2); + if skip then + SetSkipCaretAtSel; + + RemoveCaretsInSelection; + SelectionObj.SelText := ''; + + if Carets.MainCaretIndex >= 0 then begin + Editor.LogicalCaretXY := Carets.Caret[Carets.MainCaretIndex]; + FSelX := Carets.Caret[Carets.MainCaretIndex].x; + end + else + assert(False, 'TSynCustomPluginMultiCaret.ProcessAllSynCommand: Maincaret index not found'); + + if skip then + Include(FStateFlags, sfSkipCaretsAtSelection); // restore the flag +end; + +procedure TSynCustomPluginMultiCaret.ProcessMySynCommand(Sender: TObject; + AfterProcessing: boolean; var Handled: boolean; var Command: TSynEditorCommand; + var AChar: TUTF8Char; Data: pointer; HandlerData: pointer); +var + i: Integer; +begin + // hcfPreExec + if Handled then exit; + + Handled := True; + case Command of + ecPluginMultiCaretSetCaret: begin + if Carets.FindCaretIdx(CaretObj.BytePos, CaretObj.LinePos, CaretObj.BytePosOffset) < 0 then + include(FStateFlags, sfCreateCaretAtCurrentPos); + ActiveMode := mcmAddingCarets; + end; + ecPluginMultiCaretUnsetCaret: begin + exclude(FStateFlags, sfCreateCaretAtCurrentPos); + i := Carets.FindCaretIdx(CaretObj.BytePos, CaretObj.LinePos, CaretObj.BytePosOffset); + if i >= 0 then + RemoveCaret(i); + ActiveMode := mcmAddingCarets; + end; + ecPluginMultiCaretToggleCaret: begin + i := Carets.FindCaretIdx(CaretObj.BytePos, CaretObj.LinePos, CaretObj.BytePosOffset); + if (i > 0) or (sfCreateCaretAtCurrentPos in FStateFlags) then begin + exclude(FStateFlags, sfCreateCaretAtCurrentPos); + if i >= 0 then + RemoveCaret(i); + end + else begin + include(FStateFlags, sfCreateCaretAtCurrentPos); + end; + ActiveMode := mcmAddingCarets; + end; + ecPluginMultiCaretClearAll: begin + ClearCarets; + if not SelectionObj.SelAvail then + SelectionObj.Clear; // clear invisibel selection + end; + + ecPluginMultiCaretModeCancelOnMove: ActiveMode := mcmCancelOnCaretMove; + ecPluginMultiCaretModeMoveAll: ActiveMode := mcmMoveAllCarets; + else + Handled := False; + end; +end; + +procedure TSynCustomPluginMultiCaret.ProcessAllSynCommand(Sender: TObject; AfterProcessing: boolean; + var Handled: boolean; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer; + HandlerData: pointer); + + procedure ExecCommandRepeated(AOnePerLine: Boolean = False); + var + i, y: Integer; + p: TLogCaretPoint; + skip, noChange, SelAvail, IsUser: Boolean; + MainY: Integer; + begin + Handled := True; + Editor.BeginUpdate(True); + FCarets.IncMergeLock; + try + AddCaret(Editor.LogicalCaretXY.x, Editor.CaretY, CaretObj.BytePosOffset, + [cfMainCaret, cfNoneVisual {, cfAddDuplicate}], CaretObj.KeepCaretXPos); + + // Execute Command at current caret pos + Include(FStateFlags, sfProcessingMain); + Include(FStateFlags, sfNoChangeIndicator); + if Editor.SelAvail and (SelectionObj.ActiveSelectionMode = smColumn) then + SelectionObj.AddBeforeSetSelTextHandler(@DoBeforeSetSelText); + Editor.CommandProcessor(Command, AChar, data, [hcfInit, hcfFinish]); + SelectionObj.RemoveBeforeSetSelTextHandler(@DoBeforeSetSelText); + Exclude(FStateFlags, sfProcessingMain); + noChange := sfNoChangeIndicator in FStateFlags; + Exclude(FStateFlags, sfNoChangeIndicator); + + if noChange then begin + if Carets.MainCaretIndex >= 0 then + RemoveCaret(Carets.MainCaretIndex) + else + assert(False, 'TSynCustomPluginMultiCaret.ProcessAllSynCommand: Maincaret index not found'); + exit; + end; + + // Repeat command + Include(FStateFlags, sfProcessingRepeat); + CaretObj.IncForcePastEOL; + skip := sfSkipCaretsAtSelection in FStateFlags; + MainY := CaretObj.LinePos; + SelAvail := Editor.SelAvail; + IsUser := Command >= ecUserFirst; + + y := FSelY2; + Carets.StartIteratorAtLast; + while Carets.IterateNextDown do begin + if cfMainCaret in Carets.CurrentCaretFlags then + continue; + p := Carets.CurrentCaretFull; + if y > p.y then y := p.y; + if (skip) and (y >= FSelY1) and + (y = p.y) and (FSelX = p.x) + then begin + dec(y); + continue; + end; + if AOnePerLine and + ( (p.y = MainY) or + ( Carets.CanPeekCaret(-1) and (Carets.PeekCaretY(-1) = p.y) ) ) + then + continue; + + CaretObj.FullLogicalPos := p; + if IsUser and not SelAvail then + SelectionObj.StartLineBytePos := Point(p.x, p.y); + i := Carets.CurrentCaretKeepX; + if i > 0 then + CaretObj.KeepCaretXPos := i; + Editor.CommandProcessor(Command, AChar, nil, [hcfInit, hcfFinish]); + Carets.CurrentCaretFull := CaretObj.FullLogicalPos; + Carets.CurrentCaretKeepX := -1; + end; + + CaretObj.DecForcePastEOL; + Exclude(FStateFlags, sfProcessingRepeat); + + if Carets.MainCaretIndex >= 0 then begin + CaretObj.FullLogicalPos := Carets.CaretFull[Carets.MainCaretIndex]; + //CaretObj.KeepCaretXPos := Carets.CaretKeepX[Carets.MainCaretIndex]; + RemoveCaret(Carets.MainCaretIndex); + end + else + assert(False, 'TSynCustomPluginMultiCaret.ProcessAllSynCommand: Maincaret index not found'); + finally + Exclude(FStateFlags, sfSkipCaretsAtSelection); + FCarets.DecMergeLock; + MergeAndRemoveCarets; + Editor.EndUpdate; + end; + end; + + procedure ExecCaretMoveRepeated; + var + k, xk: Integer; + c: TLogCaretPoint; + begin + Handled := True; + Editor.BeginUpdate(True); + FCarets.IncMergeLock; + try + // Execute Command at current caret pos + Include(FStateFlags, sfProcessingMain); + Editor.CommandProcessor(Command, AChar, data, [hcfInit, hcfFinish]); + c := CaretObj.FullLogicalPos; + xk := CaretObj.KeepCaretXPos; + Exclude(FStateFlags, sfProcessingMain); + + // Repeat command + Include(FStateFlags, sfProcessingRepeat); + case Command of + ecLeft, ecUp, ecWordLeft, ecLineStart, ecPageUp, ecPageLeft, + ecPageTop, ecLineTextStart, ecWordEndLeft, ecHalfWordLeft: + begin + Carets.StartIteratorAtFirst; + while Carets.IterateNextUp do begin + CaretObj.FullLogicalPos := Carets.CurrentCaretFull; + k := Carets.CurrentCaretKeepX; + if k > 0 then + CaretObj.KeepCaretXPos := k; + Editor.CommandProcessor(Command, AChar, nil, [hcfInit, hcfFinish]); + Carets.CurrentCaretFull := CaretObj.FullLogicalPos; + Carets.CurrentCaretKeepX := CaretObj.KeepCaretXPos; + end; + end; + ecEditorTop, ecEditorBottom: ClearCarets; + else + begin + Carets.StartIteratorAtLast; + while Carets.IterateNextDown do begin + CaretObj.FullLogicalPos := Carets.CurrentCaretFull; + k := Carets.CurrentCaretKeepX; + if k > 0 then + CaretObj.KeepCaretXPos := k; + Editor.CommandProcessor(Command, AChar, nil, [hcfInit, hcfFinish]); + Carets.CurrentCaretFull := CaretObj.FullLogicalPos; + Carets.CurrentCaretKeepX := CaretObj.KeepCaretXPos; + end; + end; + end; + Exclude(FStateFlags, sfProcessingRepeat); + + finally + FCarets.DecMergeLock; + CaretObj.FullLogicalPos := c; + CaretObj.KeepCaretXPos := xk; + MergeAndRemoveCarets; + Editor.EndUpdate; + end; + end; + + procedure StartEditing; + begin + Include(FStateFlags, sfProcessingCmd); + if (ActiveMode = mcmAddingCarets) and (not Editor.ReadOnly) then + ActiveMode := DefaultMode; + end; + +var + ClipHelper: TSynClipboardStream; + Action: TSynMultiCaretCommandAction; + Flags: TSynMultiCaretCommandFlags; +begin + // hcfFinish + if AfterProcessing then begin + if (FNestedCommandProcessor > 0) then begin + dec(FNestedCommandProcessor); + exit; + end; + + FStateFlags := FStateFlags - [sfProcessingCmd, sfSkipUndoCarets, sfExtendingColumnSel]; + if (CaretsCount = 0) then + exit; + + if IsCaretMergeRequested then + MergeAndRemoveCarets(True); // is case of several commands in one paintlock + UpdateCaretsPos; + + exit; + end; + + + // hcfInit + (* use Editor.CommandProcessor(... SkipInit=[hcfInit, hcfFinish]) + command is already initialized / prevent macro recorder from recording again. + *) + + if (sfProcessingCmd in FStateFlags) then + inc(FNestedCommandProcessor); + if (sfProcessingCmd in FStateFlags) or (CaretsCount = 0) then + exit; + if Handled then + exit; + + + case Command of + ecCopy, ecCut: Action := ccaNoneRepeatCommand; + ecGotoMarker0..ecGotoMarker9: Action := ccaClearCarets; + ecSelectAll: Action := ccaClearCarets; + else + if Command >= ecUserFirst then + Action := ccaNoneRepeatCommand + else + Action := ccaDefaultAction; + end; + Flags := []; + if FOnBeforeCommand <> nil then + FOnBeforeCommand(Self, Command, Action, Flags); + + case Action of + //ccaDefaultAction: ; + ccaNoneRepeatCommand: begin + exit; + end; + ccaRepeatCommand: begin + StartEditing; + ExecCommandRepeated; + exit; + end; + ccaRepeatCommandPerLine: begin + StartEditing; + ExecCommandRepeated(True); + exit; + end; + ccaClearCarets: begin + ClearCarets; + exit; + end; + ccaAdjustCarets: begin + Include(FStateFlags, sfProcessingCmd); + exit; + end; + end; + + case Command of + // TODO: delete and smColumn -- only delete once + ecDeleteLastChar..ecDeleteLine, + ecLineBreak..ecChar: + begin + StartEditing; + if Editor.ReadOnly then exit; + ExecCommandRepeated; + end; + ecPaste: + begin + StartEditing; + if Editor.ReadOnly then exit; + + if (SelectionObj.ActiveSelectionMode = smColumn) and + (SelectionObj.StartLinePos <> SelectionObj.EndLinePos) + then begin + ClipHelper := TSynClipboardStream.Create; + try + ClipHelper.ReadFromClipboard(Clipboard); + if ClipHelper.SelectionMode = smColumn then begin + Exclude(FStateFlags, sfProcessingCmd); + exit; + end; + finally + ClipHelper.Free; + end; + end; + + ExecCommandRepeated; + end; + ecTab..ecShiftTab: + begin + StartEditing; + if Editor.ReadOnly then exit; + if (eoTabIndent in Editor.Options) and Editor.SelAvail then begin + if (SelectionObj.ActiveSelectionMode = smColumn) then begin + // no indent for column mode, when multicaret + Editor.BeginUpdate(True); + try + AddCaret(Editor.LogicalCaretXY.x, Editor.CaretY, CaretObj.BytePosOffset, [cfMainCaret, cfNoneVisual, cfAddDuplicate]); + Editor.SelText := ''; + if Carets.MainCaretIndex >= 0 then begin + Editor.LogicalCaretXY := Carets.Caret[Carets.MainCaretIndex]; + RemoveCaret(Carets.MainCaretIndex); + end + else + assert(False, 'TSynCustomPluginMultiCaret.ProcessAllSynCommand: Maincaret index not found'); + ExecCommandRepeated; + finally + Editor.EndUpdate; + end; + end + else // exec once and adjust + exit; + end + else + ExecCommandRepeated; + end; + ecSelColCmdRangeStart..ecSelColCmdRangeEnd: + begin + Include(FStateFlags, sfSkipUndoCarets); + Include(FStateFlags, sfExtendingColumnSel); + end; + ecLeft..ecHalfWordRight: begin + Include(FStateFlags, sfSkipUndoCarets); + if ActiveMode = mcmMoveAllCarets then begin + Include(FStateFlags, sfProcessingCmd); + ExecCaretMoveRepeated; + end + else + if ActiveMode = mcmAddingCarets then + Include(FStateFlags, sfProcessingCmd) + else + ClearCarets; + end; + ecUndo, ecRedo: + begin + // handle now / prevent carets from being cleared + Include(FStateFlags, sfProcessingCmd); + Include(FStateFlags, sfSkipUndoCarets); + Carets.Clear(False, Carets.Capacity); // will be restored at end of undo + Editor.CommandProcessor(Command, AChar, data, [hcfInit, hcfFinish]); + Handled := True; + end; + ecPluginFirstMultiCaret..ecPluginLastMultiCaret: ; // ignore and handle in hcfPreExec + else + begin + StartEditing; + if Editor.ReadOnly then exit; + ExecCommandRepeated; + end; + end; + + //Exclude(FStateFlags, sfSkipCaretsAtSelection); +end; + +function TSynCustomPluginMultiCaret.MaybeHandleMouseAction(var AnInfo: TSynEditMouseActionInfo; + HandleActionProc: TSynEditMouseActionHandler): Boolean; +begin + Result := HandleActionProc(FMouseActions, AnInfo); +end; + +function TSynCustomPluginMultiCaret.DoHandleMouseAction(AnAction: TSynEditMouseAction; + var AnInfo: TSynEditMouseActionInfo): Boolean; +var + i, j: Integer; +begin + Result := False; + + case AnAction.Command of + emcPluginMultiCaretToggleCaret: + begin + Result := True; + i := Carets.FindCaretIdx(AnInfo.NewCaret.BytePos, AnInfo.NewCaret.LinePos, AnInfo.NewCaret.BytePosOffset); + if i >= 0 then + RemoveCaret(i) + else + if (AnInfo.NewCaret.BytePos <> CaretObj.BytePos) or (AnInfo.NewCaret.LinePos <> CaretObj.LinePos) then begin + AddCaret(AnInfo.NewCaret.BytePos, AnInfo.NewCaret.LinePos, AnInfo.NewCaret.BytePosOffset); + end; + if CaretsCount > 0 then + ActiveMode := DefaultMode + else + ActiveMode := mcmNoCarets; + exclude(FStateFlags, sfCreateCaretAtCurrentPos); + end; + emcPluginMultiCaretSelectionToCarets: + begin + Result := True; + j := SelectionObj.LastLineBytePos.y; + i := SelectionObj.FirstLineBytePos.y; + SelectionObj.Clear; + CaretObj.LineBytePos := Point(Length(ViewedTextBuffer[ToIdx(j)])+1, j); + while i < j do begin + AddCaret(Length(ViewedTextBuffer[ToIdx(i)])+1, i, 0); + inc(i); + end; + if CaretsCount > 0 then + ActiveMode := DefaultMode; + if FPaintLock > 0 then + FStateFlags := FStateFlags + [sfSkipSelChanged, sfSkipCaretChanged]; + end; + end; +end; + +procedure TSynCustomPluginMultiCaret.AddStateFlags(AFlags: TSynPluginMultiCaretStateFlags; + AnOnlyIfLocked: Boolean); +begin + if (not AnOnlyIfLocked) or (FPaintLock > 0) then + FStateFlags := FStateFlags + AFlags; +end; + +function TSynCustomPluginMultiCaret.CreateVisual: TSynPluginMultiCaretVisual; +begin + Result := inherited CreateVisual; + if FInPaint then + Result.BeginPaint(FPaintClip); +end; + +constructor TSynCustomPluginMultiCaret.Create(AOwner: TComponent); +begin + FMouseActions := TSynPluginMultiCaretMouseActions.Create(Self); + FMouseActions.ResetDefaults; + FKeyStrokes := TSynPluginMultiCaretKeyStrokes.Create(Self); + FKeyStrokes.ResetDefaults; + FEnableWithColumnSelection := True; + FActiveMode := mcmNoCarets; + FDefaultMode := mcmMoveAllCarets; + FDefaultColumnSelectMode := mcmCancelOnCaretMove; + inherited Create(AOwner); +end; + +destructor TSynCustomPluginMultiCaret.Destroy; +begin + inherited Destroy; + FreeAndNil(FMouseActions); + FreeAndNil(FKeyStrokes); +end; + +procedure TSynCustomPluginMultiCaret.AddCaretAtLogPos(X, Y, Offs: Integer); +begin + AddCaret(x, y, Offs); + if ActiveMode = mcmNoCarets then + ActiveMode := FDefaultMode; +end; + +initialization + RegisterMouseCmdIdentProcs(@IdentToSynMouseCmd, @SynMouseCmdToIdent); + RegisterExtraGetEditorMouseCommandValues(@GetEditorMouseCommandValues); + RegisterMouseCmdNameAndOptProcs(@MouseCommandName, @MouseCommandConfigName); + + RegisterKeyCmdIdentProcs(@IdentToKeyCommand, @KeyCommandToIdent); + RegisterExtraGetEditorCommandValues(@GetEditorCommandValues); + +{$IfDef SynMultiCaretDebug} + SynMCaretDebug := DebugLogger.FindOrRegisterLogGroup('SynMultiCaretDebug' {$IFDEF SynMultiCaretDebug} , True {$ENDIF} ); +{$ENDIF} +end. + diff -Nru lazarus-1.4.4+dfsg/components/synedit/synpluginsyncroedit.pp lazarus-1.6+dfsg/components/synedit/synpluginsyncroedit.pp --- lazarus-1.4.4+dfsg/components/synedit/synpluginsyncroedit.pp 2015-01-26 16:06:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synpluginsyncroedit.pp 2015-02-06 18:25:31.000000000 +0000 @@ -26,9 +26,9 @@ interface uses - Classes, Controls, SysUtils, LCLProc, Forms, Graphics, SynEditMiscClasses, + Classes, Controls, SysUtils, Forms, Graphics, SynEditMiscClasses, LCLType, SynEdit, SynPluginSyncronizedEditBase, LazSynEditText, SynEditMiscProcs, - SynEditMouseCmds, SynEditKeyCmds, SynEditTypes, LCLIntf; + SynEditMouseCmds, SynEditKeyCmds, SynEditTypes, LCLIntf, LazUTF8; type diff -Nru lazarus-1.4.4+dfsg/components/synedit/synpluginsyncronizededitbase.pp lazarus-1.6+dfsg/components/synedit/synpluginsyncronizededitbase.pp --- lazarus-1.4.4+dfsg/components/synedit/synpluginsyncronizededitbase.pp 2013-05-22 01:01:29.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synpluginsyncronizededitbase.pp 2015-03-16 16:42:16.000000000 +0000 @@ -183,7 +183,7 @@ FAreaMarkupEnabled: Boolean; FMarkupEnabled: Boolean; FEnabled: Boolean; - FEditing: Boolean; + FEditing: Boolean; // In ApplyChangeList, edit actions are caused by the plugin itself FPaintLock: Integer; FOwnPaintLock: Integer; FTextBufferChanging: Boolean; diff -Nru lazarus-1.4.4+dfsg/components/synedit/synregexpr.pas lazarus-1.6+dfsg/components/synedit/synregexpr.pas --- lazarus-1.4.4+dfsg/components/synedit/synregexpr.pas 2013-07-20 11:18:42.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/synregexpr.pas 2015-03-24 17:50:59.000000000 +0000 @@ -2245,6 +2245,8 @@ begin Result := nil; flagp := WORST; // Tentatively. + RangeBeg := #0; + ret := nil; inc (regparse); case (regparse - 1)^ of @@ -3545,6 +3547,7 @@ function TRegExpr.GetInputString : RegExprString; begin + Result := ''; if not Assigned (fInputString) then begin Error (reeGetInputStringWithoutInputString); EXIT; @@ -3695,6 +3698,7 @@ end; begin + Result := ''; // Check programm and input string if not IsProgrammOk then EXIT; @@ -3704,10 +3708,8 @@ end; // Prepare for working TemplateLen := length (ATemplate); - if TemplateLen = 0 then begin // prevent nil pointers - Result := ''; + if TemplateLen = 0 then // prevent nil pointers EXIT; - end; TemplateBeg := pointer (ATemplate); TemplateEnd := TemplateBeg + TemplateLen; // Count result length for speed optimization. @@ -3896,6 +3898,7 @@ function TRegExpr.DumpOp (op : TREOp) : RegExprString; // printable representation of opcode begin + Result := ''; case op of BOL: Result := 'BOL'; EOL: Result := 'EOL'; @@ -3962,11 +3965,11 @@ Ch : REChar; {$ENDIF} begin + Result := ''; if not IsProgrammOk //###0.929 then EXIT; op := EXACTLY; - Result := ''; s := programm + REOpSz; while op <> EEND do begin // While that wasn't END last time... op := s^; diff -Nru lazarus-1.4.4+dfsg/components/synedit/syntextdrawer.pp lazarus-1.6+dfsg/components/synedit/syntextdrawer.pp --- lazarus-1.4.4+dfsg/components/synedit/syntextdrawer.pp 2015-03-17 02:44:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/syntextdrawer.pp 2015-08-07 17:20:40.000000000 +0000 @@ -55,7 +55,7 @@ Added BaseStyle property to TheFontFont class. ==============================================================================} -// $Id: syntextdrawer.pp 48403 2015-03-17 02:44:32Z martin $ +// $Id: syntextdrawer.pp 49612 2015-08-07 17:20:40Z juha $ // SynEdit note: The name had to be changed to get SynEdit to install // together with mwEdit into the same Delphi installation @@ -67,7 +67,7 @@ interface uses - LCLProc, LCLType, LCLIntf, SysUtils, Classes, Graphics, GraphUtil, Types, + Classes, Types, SysUtils, LCLProc, LCLType, LCLIntf, Graphics, GraphUtil, SynEditTypes, SynEditMiscProcs; type @@ -224,7 +224,6 @@ function GetUseUTF8: boolean; function GetMonoSpace: boolean; function CreateColorPen(AColor: TColor; AStyle: LongWord = PS_SOLID): HPen; - property StockDC: HDC read FDC; property DrawingCount: Integer read FDrawingCount; property FontStock: TheFontStock read FFontStock; property BaseCharWidth: Integer read FBaseCharWidth; @@ -277,6 +276,7 @@ property CharExtra: Integer read GetCharExtra write SetCharExtra; property UseUTF8: boolean read GetUseUTF8; property MonoSpace: boolean read GetMonoSpace; + property StockDC: HDC read FDC; end; { TheTextDrawerEx } diff -Nru lazarus-1.4.4+dfsg/components/synedit/test/testbase.pas lazarus-1.6+dfsg/components/synedit/test/testbase.pas --- lazarus-1.4.4+dfsg/components/synedit/test/testbase.pas 2015-01-24 17:10:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/test/testbase.pas 2015-03-11 18:27:30.000000000 +0000 @@ -103,6 +103,7 @@ procedure TearDown; override; public procedure TestIsCaret(Name: String; X, Y: Integer); // logical caret + procedure TestIsCaret(Name: String; X, Y, Offs: Integer); // logical caret procedure TestIsCaretPhys(Name: String; X, Y: Integer); procedure TestIsCaretAndSel(Name: String; LogX1, LogY1, LogX2, LogY2: Integer); // logical caret procedure TestIsCaretAndSelBackward(Name: String; LogX1, LogY1, LogX2, LogY2: Integer); // logical caret @@ -121,6 +122,13 @@ procedure TestIsFullText(Name: String; Lines: Array of String); procedure TestIsFullText(Name: String; Lines: Array of String; Repl: Array of const); + procedure TestIsCaretLogAndFullText(Name: String; X, Y: Integer; Text: String); // logical caret + procedure TestIsCaretLogAndFullText(Name: String; X, Y: Integer; Lines: Array of String); // logical caret + procedure TestIsCaretLogAndFullText(Name: String; X, Y: Integer; Lines: Array of String; Repl: Array of const); // logical caret + + procedure TestIsCaretLogAndFullText(Name: String; X, Y, Offs: Integer; Text: String); // logical caret + procedure TestIsCaretLogAndFullText(Name: String; X, Y, Offs: Integer; Lines: Array of String); // logical caret + procedure TestIsCaretLogAndFullText(Name: String; X, Y, Offs: Integer; Lines: Array of String; Repl: Array of const); // logical caret end; function MyDbg(t: String): String; @@ -269,6 +277,16 @@ Format('X/Y=(%d, %d)', [SynEdit.LogicalCaretXY.X, SynEdit.LogicalCaretXY.Y])); end; +procedure TTestBase.TestIsCaret(Name: String; X, Y, Offs: Integer); +begin + if (SynEdit.LogicalCaretXY.X <> X) or (SynEdit.LogicalCaretXY.Y <> Y) or + (SynEdit.CaretObj.BytePosOffset <> Offs) + then + TestFail(Name, 'IsCaret', + Format('X/Y=(%d, %d, %d)', [X, Y, Offs]), + Format('X/Y=(%d, %d, %d)', [SynEdit.LogicalCaretXY.X, SynEdit.LogicalCaretXY.Y, SynEdit.CaretObj.BytePosOffset])); +end; + procedure TTestBase.TestIsCaretPhys(Name: String; X, Y: Integer); begin if (SynEdit.CaretXY.X <> X) or (SynEdit.CaretXY.Y <> Y) then @@ -400,6 +418,46 @@ TestIsFullText(Name, LinesToText(LinesReplace(Lines, Repl))); end; +procedure TTestBase.TestIsCaretLogAndFullText(Name: String; X, Y: Integer; Text: String); +begin + TestIsCaret(Name, X, Y); + TestIsFullText(Name, Text); +end; + +procedure TTestBase.TestIsCaretLogAndFullText(Name: String; X, Y: Integer; + Lines: array of String); +begin + TestIsCaret(Name, X, Y); + TestIsFullText(Name, Lines); +end; + +procedure TTestBase.TestIsCaretLogAndFullText(Name: String; X, Y: Integer; + Lines: array of String; Repl: array of const); +begin + TestIsCaret(Name, X, Y); + TestIsFullText(Name, Lines, Repl); +end; + +procedure TTestBase.TestIsCaretLogAndFullText(Name: String; X, Y, Offs: Integer; Text: String); +begin + TestIsCaret(Name, X, Y, Offs); + TestIsFullText(Name, Text); +end; + +procedure TTestBase.TestIsCaretLogAndFullText(Name: String; X, Y, Offs: Integer; + Lines: array of String); +begin + TestIsCaret(Name, X, Y, Offs); + TestIsFullText(Name, Lines); +end; + +procedure TTestBase.TestIsCaretLogAndFullText(Name: String; X, Y, Offs: Integer; + Lines: array of String; Repl: array of const); +begin + TestIsCaret(Name, X, Y, Offs); + TestIsFullText(Name, Lines, Repl); +end; + procedure TTestBase.TestFail(Name, Func, Expect, Got: String; Result: Boolean = False); begin if Result then exit; diff -Nru lazarus-1.4.4+dfsg/components/synedit/test/testbasicsynedit.pas lazarus-1.6+dfsg/components/synedit/test/testbasicsynedit.pas --- lazarus-1.4.4+dfsg/components/synedit/test/testbasicsynedit.pas 2015-01-24 17:10:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/test/testbasicsynedit.pas 2015-03-30 22:58:24.000000000 +0000 @@ -2342,6 +2342,17 @@ TestCoord(Name, ExpSearchCoord); PopBaseName; + PushBaseName('Search ssoRegExprMultiLine'); + SetLines(TheTestText); + if NextTestSetSelection.BBx > 0 then + with NextTestSetSelection do SetCaretAndSel(BBx, BBy, BEx, BEy) + else + SetCaret(CaretX, CaretY); + got := SynEdit.SearchReplace(Find, '', SrcOpts - [ssoReplace, ssoReplaceAll]+[ssoRegExprMultiLine]); + AssertEquals(BaseTestName + Name + 'Result Count', Min(ExpCnt,1), got); + TestCoord(Name, ExpSearchCoord); + PopBaseName; + if (SrcOpts * [ssoReplace, ssoReplaceAll]) = [] then exit; PushBaseName('Replace'); @@ -2356,6 +2367,18 @@ TestCoord(Name, ExpReplCoord); PopBaseName; + PushBaseName('Replace ssoRegExprMultiLine'); + SetLines(TheTestText); + if NextTestSetSelection.BBx > 0 then + with NextTestSetSelection do SetCaretAndSel(BBx, BBy, BEx, BEy) + else + SetCaret(CaretX, CaretY); + got := SynEdit.SearchReplace(Find, Repl, SrcOpts+[ssoRegExprMultiLine]); + AssertEquals(BaseTestName + Name + 'Result Count', ExpCnt, got); + TestIsText(Name + 'Result Text', TheTestText, ExpTxt); + TestCoord(Name, ExpReplCoord); + PopBaseName; + NextTestSetSelection := expCNo(-1,-1); end; @@ -2390,6 +2413,7 @@ begin TheTestText := TestText1; txl := length(TheTestText)-1; + NextTestSetSelection := nextSel(0,0, 0,0); PushBaseName('Find single line term '); PushBaseName('no match '); diff -Nru lazarus-1.4.4+dfsg/components/synedit/test/testhighlightpas.pas lazarus-1.6+dfsg/components/synedit/test/testhighlightpas.pas --- lazarus-1.4.4+dfsg/components/synedit/test/testhighlightpas.pas 2014-01-26 15:16:02.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/test/testhighlightpas.pas 2015-01-25 15:20:40.000000000 +0000 @@ -58,6 +58,7 @@ procedure TestContextForClassHelper; procedure TestContextForRecordHelper; procedure TestContextForStatic; + procedure TestCaretAsString; procedure TestFoldNodeInfo; end; @@ -1076,6 +1077,93 @@ ]); end; +procedure TTestHighlighterPas.TestCaretAsString; +begin + ReCreateEdit; + SetLines + ([ 'Unit A; interface', // 0 + 'var', + 'a:char=^o;', + 'b:^char=nil;', + 'type', + 'c=^char;', // 5 + 'implementation', + 'function x(f:^char=^k):^v;', // actually the compiler does not allow ^ as pointer for result + 'var', + 'a:char=^o;', + 'b:^char=nil;', // 10 + 'type', + 'c=^char;', + 'begin', + 'i:=^f;', + 'x:=GetTypeData(PropInfo^.PropType{$IFNDEF FPC}^{$ENDIF});', // 15 + 'c:=p^;', + 'c:=p ^;', + 'c:=p(**)^;', + 'c:=p{} ^;', + 'i:=f(1)^;', // 20 + 'i:=f[1]^;', + 'i:=f^^;', + 'c:=p^+^i''e''^a#13^x;', + 'c:=x=^a and ^a=k and(^a^a=z);', + 'end;', + '' + ]); + + CheckTokensForLine('a:char=^o;', 2, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkString, tkSymbol]); + CheckTokensForLine('b:^char=nil;', 3, + [tkIdentifier, tkSymbol, tkSymbol, tkIdentifier, tkSymbol, tkKey, tkSymbol]); + CheckTokensForLine('c=^char;', 5, + [tkIdentifier, tkSymbol, tkSymbol, tkIdentifier, tkSymbol]); + + CheckTokensForLine('function x(f:^char=^k):^v;', 7, + [tkKey, tkSpace, tkIdentifier, tkSymbol, tkIdentifier, // function x(f + tkSymbol, tkSymbol, tkIdentifier, tkSymbol, tkString, // :^char=^k + tkSymbol, tkSymbol, tkSymbol, tkIdentifier, tkSymbol]); // ):^v; + CheckTokensForLine('LOCAL a:char=^o;', 9, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkString, tkSymbol]); + CheckTokensForLine('LOCAL b:^char=nil;', 10, + [tkIdentifier, tkSymbol, tkSymbol, tkIdentifier, tkSymbol, tkKey, tkSymbol]); + CheckTokensForLine('LOCAL c=^char;', 12, + [tkIdentifier, tkSymbol, tkSymbol, tkIdentifier, tkSymbol]); + CheckTokensForLine('i:=^f', 14, + [tkIdentifier, tkSymbol, tkString, tkSymbol]); + + CheckTokensForLine('x:=GetTypeData(PropInfo^.PropType{$IFNDEF FPC}^{$ENDIF});', 15, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, // x:=GetTypeData( + tkIdentifier, tkSymbol, tkSymbol, tkIdentifier, // PropInfo^.PropType + tkDirective, tkSymbol, tkDirective, tkSymbol, tkSymbol]); // {$IFNDEF FPC}^{$ENDIF}); + + CheckTokensForLine('c:=p^;', 16, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkSymbol]); + CheckTokensForLine('c:=p ^;', 17, + [tkIdentifier, tkSymbol, tkIdentifier, tkSpace, tkSymbol, tkSymbol]); + CheckTokensForLine('c:=p(**)^;', 18, + [tkIdentifier, tkSymbol, tkIdentifier, tkComment, tkSymbol, tkSymbol]); + CheckTokensForLine('c:=p{} ^;', 19, + [tkIdentifier, tkSymbol, tkIdentifier, tkComment, tkSpace, tkSymbol, tkSymbol]); + + CheckTokensForLine('c:=p(1)^;', 20, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkNumber, tkSymbol, tkSymbol]); + CheckTokensForLine('c:=p[1]^;', 21, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkNumber, tkSymbol, tkSymbol]); + CheckTokensForLine('c:=p^^;', 22, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkSymbol, tkSymbol]); + + CheckTokensForLine('c:=p^+^i''e''^a#13^x;', 23, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkSymbol, // c:=p^+ + tkString, tkString, tkString, tkString, tkString, tkSymbol // ^i'e'^a#13^x; + ]); + CheckTokensForLine('c:=x=^a and ^a=k and(^a^a=z);', 24, + [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkString, tkSpace, // c:=x=^a + tkKey, tkSpace, tkString, tkSymbol, tkIdentifier, tkSpace, // and ^a=k + tkKey, tkSymbol, tkString, tkString, tkSymbol, tkIdentifier, // and(^a^a=z + tkSymbol, tkSymbol // );' + ]); + +end; + procedure TTestHighlighterPas.TestFoldNodeInfo; Procedure CheckNode(ALine: TLineIdx; AFilter: TSynFoldActions; AFoldGroup: Integer; AColumn: integer; diff -Nru lazarus-1.4.4+dfsg/components/synedit/test/testmulticaret.pas lazarus-1.6+dfsg/components/synedit/test/testmulticaret.pas --- lazarus-1.4.4+dfsg/components/synedit/test/testmulticaret.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/synedit/test/testmulticaret.pas 2015-03-16 16:42:16.000000000 +0000 @@ -0,0 +1,1582 @@ +unit TestMultiCaret; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, TestBase, SynEditKeyCmds, SynPluginMultiCaret, SynEdit, Clipbrd, Forms, + testregistry; + +type + + TSynPluginMultiCaretTest = class(TSynPluginMultiCaret) + public + property Carets; + end; + + { TTestMultiCaret } + + TTestMultiCaret = class(TTestBase) + protected + FMultiCaret, FMultiCaret2: TSynPluginMultiCaretTest; + FOptAdd, FOptRemove: TSynEditorOptions; + FOpt2Add, FOpt2Remove: TSynEditorOptions2; + FEnableWithColumnSelection: Boolean; + FDefaultMode: TSynPluginMultiCaretDefaultMode; + FDefaultColumnSelectMode: TSynPluginMultiCaretDefaultMode; + FSynEdit2: TTestSynEdit; + + procedure SetUp; override; + procedure TearDown; override; + + + procedure SetCaretAndColumnSelect(X, Y, Down, Right: Integer); + procedure SetCaretsByKey(X, Y: Integer; CaretMoves: Array of Integer; EndMode: TSynPluginMultiCaretMode = mcmAddingCarets); // [ {SET}, Right,DOwn, {SET}, Right,DOwn,..] + procedure SetCaretsByKey(CaretMoves: Array of Integer; EndMode: TSynPluginMultiCaretMode = mcmAddingCarets); // [ {SET}, Right,DOwn, {SET}, Right,DOwn,..] + + procedure TestExtraCaretCount(AName: String; ExpCount: Integer); + procedure TestExtraCaretPos(AName: String; ExpCount: Integer; ExpPos: array of integer); // x,y + procedure TestExtraCaretPosAndOffs(AName: String; ExpCount: Integer; ExpPos: array of integer); // x,y,offs + + procedure TestExtraCaretPos(AName: String; X, Y: Integer; ExpCount: Integer; ExpPos: array of integer); // x,y + procedure TestExtraCaretPosAndOffs(AName: String; X, Y, Offs: Integer; ExpCount: Integer; ExpPos: array of integer); // x,y,offs + + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; chars: array of String; + X, Y: Integer; ExpLines: Array of String + ); + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; // no chars + X, Y: Integer; ExpLines: Array of String + ); + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; chars: array of String; + X, Y, Offs: Integer; ExpLines: Array of String + ); + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; // no chars + X, Y, Offs: Integer; ExpLines: Array of String + ); + + + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; chars: array of String; + X, Y: Integer; ExpLines: Array of String; + ExpCount: Integer; ExpPos: array of integer // x, [offs,] y + ); + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; // no chars + X, Y: Integer; ExpLines: Array of String; + ExpCount: Integer; ExpPos: array of integer // x, [offs,] y + ); + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; chars: array of String; + X, Y, Offs: Integer; ExpLines: Array of String; + ExpCount: Integer; ExpPos: array of integer // x, [offs,] y + ); + procedure RunAndTest(AName: String; + cmds: Array of TSynEditorCommand; // no chars + X, Y, Offs: Integer; ExpLines: Array of String; + ExpCount: Integer; ExpPos: array of integer // x, [offs,] y + ); + + // y1/2 1-based + function DelCol(Lines: Array of String; y1,y2,X: Integer; Cnt: Integer = 1): TStringArray; + // ADel: y,x,cnt, y,x,cnt, .... 1-based + function DelCol(Lines: Array of String; ADel: Array of Integer): TStringArray; + + function TestText1: TStringArray; + function TestText1(DelY1, DelY2, DelX: Integer; DelCnt: Integer = 1): TStringArray; + function TestText1(ADel: Array of Integer): TStringArray; + function TestText2: TStringArray; + function TestText2(DelY1, DelY2, DelX: Integer; DelCnt: Integer = 1): TStringArray; + function TestText2(ADel: Array of Integer): TStringArray; + public + procedure ReCreateEdit; reintroduce; + procedure ReCreateEdit(ALines: TStringArray); + procedure ReCreateSharedEdit(Reverse: boolean = False); + procedure SwapEdit; reintroduce; + + procedure RunCmdSeq(cmds: Array of TSynEditorCommand; chars: array of String); + published + procedure CaretList; + procedure ColumnSelect; + procedure CursorMove; + procedure Edit; + procedure Delete; + procedure ReplaceColSel; + procedure TabKey; + procedure Paste; + procedure Undo; + end; + +implementation + +{ TTestMultiCaret } + +procedure TTestMultiCaret.SetUp; +begin + FOptAdd := []; + FOptRemove := []; + FOpt2Add := []; + FOpt2Remove := []; + FEnableWithColumnSelection := True; + FDefaultMode := mcmMoveAllCarets; + FDefaultColumnSelectMode := mcmCancelOnCaretMove; + + inherited SetUp; +end; + +procedure TTestMultiCaret.TearDown; +begin + FreeAndNil(FSynEdit2); + inherited TearDown; +end; + +procedure TTestMultiCaret.SetCaretAndColumnSelect(X, Y, Down, Right: Integer); +var + i: Integer; +begin + SetCaret(X, Y); + if Down > 0 then + for i := 1 to Down do + RunCmdSeq([ecColSelDown], []) + else + if Down < 0 then + for i := 1 to -Down do + RunCmdSeq([ecColSelUp], []); + + if Right > 0 then + for i := 1 to Right do + RunCmdSeq([ecColSelRight], []) + else + if Right < 0 then + for i := 1 to -Right do + RunCmdSeq([ecColSelLeft], []); +end; + +procedure TTestMultiCaret.SetCaretsByKey(X, Y: Integer; CaretMoves: array of Integer; + EndMode: TSynPluginMultiCaretMode); +begin + SetCaret(X, Y); + SetCaretsByKey(CaretMoves, EndMode); +end; + +procedure TTestMultiCaret.SetCaretsByKey(CaretMoves: array of Integer; + EndMode: TSynPluginMultiCaretMode); +var + i, j: Integer; +begin + for i := 0 to (Length(CaretMoves) div 2) - 1 do begin + RunCmdSeq([ecPluginMultiCaretSetCaret], []); + if CaretMoves[i*2+1] > 0 then + for j := 1 to CaretMoves[i*2+1] do + RunCmdSeq([ecDown], []) + else + if CaretMoves[i*2+1] < 0 then + for j := 1 to -CaretMoves[i*2+1] do + RunCmdSeq([ecUp], []); + + if CaretMoves[i*2+0] > 0 then + for j := 1 to CaretMoves[i*2+0] do + RunCmdSeq([ecRight], []) + else + if CaretMoves[i*2+0] < 0 then + for j := 1 to -CaretMoves[i*2+0] do + RunCmdSeq([ecLeft], []); + end; + FMultiCaret.ActiveMode := EndMode; +end; + +procedure TTestMultiCaret.TestExtraCaretCount(AName: String; ExpCount: Integer); +begin + AssertEquals(BaseTestName+' '+AName + ' extra count', ExpCount, FMultiCaret.Carets.Count); +end; + +procedure TTestMultiCaret.TestExtraCaretPos(AName: String; ExpCount: Integer; + ExpPos: array of integer); +var + i: Integer; +begin + AssertEquals(BaseTestName+' '+AName + ' extra count', ExpCount, FMultiCaret.Carets.Count); + AssertEquals(BaseTestName+' '+AName + 'selftest',length(ExpPos), ExpCount*2); + for i := 0 to ExpCount - 1 do begin + AssertEquals(BaseTestName+' '+AName + ' extra pos x', ExpPos[i*2+0], FMultiCaret.Carets.CaretX[i]); + AssertEquals(BaseTestName+' '+AName + ' extra pos y', ExpPos[i*2+1], FMultiCaret.Carets.CaretY[i]); + end +end; + +procedure TTestMultiCaret.TestExtraCaretPosAndOffs(AName: String; ExpCount: Integer; + ExpPos: array of integer); +var + i: Integer; +begin + AssertEquals(BaseTestName+' '+AName + ' extra count', ExpCount, FMultiCaret.Carets.Count); + AssertEquals(BaseTestName+' '+AName + 'selftest',length(ExpPos), ExpCount*3); + for i := 0 to ExpCount - 1 do begin + AssertEquals(BaseTestName+' '+AName + ' extra pos x', ExpPos[i*3+0], FMultiCaret.Carets.CaretX[i]); + AssertEquals(BaseTestName+' '+AName + ' extra pos y', ExpPos[i*3+1], FMultiCaret.Carets.CaretY[i]); + AssertEquals(BaseTestName+' '+AName + ' extra pos O', ExpPos[i*3+2], FMultiCaret.Carets.CaretOffs[i]); + end +end; + +procedure TTestMultiCaret.TestExtraCaretPos(AName: String; X, Y: Integer; ExpCount: Integer; + ExpPos: array of integer); +begin + TestIsCaret(AName, X, Y); + TestExtraCaretPos(AName, ExpCount, ExpPos); +end; + +procedure TTestMultiCaret.TestExtraCaretPosAndOffs(AName: String; X, Y, Offs: Integer; + ExpCount: Integer; ExpPos: array of integer); +begin + TestIsCaret(AName, X, Y, Offs); + TestExtraCaretPosAndOffs(AName, ExpCount, ExpPos); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; + chars: array of String; X, Y: Integer; ExpLines: array of String); +begin + RunCmdSeq(cmds, chars); + TestIsCaretLogAndFullText(AName, X, Y, ExpLines); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; X, + Y: Integer; ExpLines: array of String); +begin + RunAndTest(AName, cmds, [], X, Y, ExpLines); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; + chars: array of String; X, Y, Offs: Integer; ExpLines: array of String); +begin + RunCmdSeq(cmds, chars); + TestIsCaretLogAndFullText(AName, X, Y, Offs, ExpLines); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; X, Y, + Offs: Integer; ExpLines: array of String); +begin + RunAndTest(AName, cmds, [], X, Y, Offs, ExpLines); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; + chars: array of String; X, Y: Integer; ExpLines: array of String; ExpCount: Integer; + ExpPos: array of integer); +begin + RunAndTest(AName, cmds, chars, X, Y, 0, ExpLines, ExpCount, ExpPos); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; X, + Y: Integer; ExpLines: array of String; ExpCount: Integer; ExpPos: array of integer); +begin + RunAndTest(AName, cmds, [], X, Y, ExpLines, ExpCount, ExpPos); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; + chars: array of String; X, Y, Offs: Integer; ExpLines: array of String; ExpCount: Integer; + ExpPos: array of integer); +begin + RunAndTest(AName, cmds, chars, X, Y, Offs, ExpLines); + if length(ExpPos) = 0 then + TestExtraCaretCount(AName, ExpCount) + else + if length(ExpPos) = ExpCount * 2 then + TestExtraCaretPos(AName, ExpCount, ExpPos) + else + if length(ExpPos) = ExpCount * 3 then + TestExtraCaretPosAndOffs(AName, ExpCount, ExpPos) + else + AssertTrue(BaseTestName+' '+AName + 'selftest CaretCOUNT <> pos-array-len', false); +end; + +procedure TTestMultiCaret.RunAndTest(AName: String; cmds: array of TSynEditorCommand; X, Y, + Offs: Integer; ExpLines: array of String; ExpCount: Integer; ExpPos: array of integer); +begin + RunAndTest(AName, cmds, [], X, Y, Offs, ExpLines, ExpCount, ExpPos); +end; + +function TTestMultiCaret.DelCol(Lines: array of String; y1, y2, X: Integer; + Cnt: Integer): TStringArray; +var + i: Integer; +begin + SetLength(Result, length(Lines)); + for i := 0 to high(Lines) do + Result[i] := Lines[i]; + for i := y1-1 to y2-1 do + system.Delete(Result[i], X, Cnt); +end; + +function TTestMultiCaret.DelCol(Lines: array of String; ADel: array of Integer): TStringArray; +var + i: Integer; +begin + SetLength(Result, length(Lines)); + for i := 0 to high(Lines) do + Result[i] := Lines[i]; + for i := 0 to (length(ADel) div 3) - 1 do + system.Delete(Result[ADel[i*3+0]-1], ADel[i*3+1], ADel[i*3+2]); +end; + +function TTestMultiCaret.TestText1: TStringArray; +begin + SetLength(Result, 8); + Result[0] := '1abc def gh'; + Result[1] := '2mno pqr st'; + Result[2] := '3ABC DEF GH'; + Result[3] := '4MNO PQR ST'; + Result[4] := '5xyz klm op'; + Result[5] := '6aA bB cC dD'; + Result[6] := '7mM nN oO pP'; + Result[7] := ''; +end; + +function TTestMultiCaret.TestText1(DelY1, DelY2, DelX: Integer; DelCnt: Integer): TStringArray; +begin + Result := DelCol(TestText1(), DelY1, DelY2, DelX, DelCnt); +end; + +function TTestMultiCaret.TestText1(ADel: array of Integer): TStringArray; +begin + Result := DelCol(TestText1(), ADel); +end; + +function TTestMultiCaret.TestText2: TStringArray; +begin + SetLength(Result, 18); + Result[0] := '1abc def gh'; + Result[1] := '2mno pqr st'; + Result[2] := '1abc def gh Oo xx 99'; + Result[3] := '2äöü pqr st Oo xx 99'; + Result[4] := '3ÄÖÜ DEF GH Oo xx 99'; + Result[5] := '4MNä PQR ST Oo xx 99'; + Result[6] := '5xyÜ klm op'; + Result[7] := '6aA b'#9#9'B cC dD'; + Result[8] := '7mM n'#9#9'N oO pP'; + Result[9] := '6aA b'#9#9'B cC dD'; + Result[10] := '1abc アアウ gh Oo xx 99'; + Result[11] := '2mno pqr アウ Oo xx 99'; + Result[12] := '3アアウアアウ GH Oo xx 99'; + Result[13] := '4Mアアウアアウ ST Oo xx 99'; + Result[14] := '5xyz klm op bB cC dD'; + Result[15] := '6a'#9#9#9#9'A'; + Result[16] := '7mM nN oO pP'; + Result[17] := ''; +end; + +function TTestMultiCaret.TestText2(DelY1, DelY2, DelX: Integer; DelCnt: Integer): TStringArray; +begin + Result := DelCol(TestText2(), DelY1, DelY2, DelX, DelCnt); +end; + +function TTestMultiCaret.TestText2(ADel: array of Integer): TStringArray; +begin + Result := DelCol(TestText2(), ADel); +end; + +procedure TTestMultiCaret.ReCreateEdit; +begin + inherited; + FMultiCaret := TSynPluginMultiCaretTest.Create(SynEdit); + + SynEdit.Options := SynEdit.Options - FOptRemove + FOptAdd; + SynEdit.Options2 := SynEdit.Options2 - FOpt2Remove + FOpt2Add; + + FMultiCaret.EnableWithColumnSelection := FEnableWithColumnSelection; + FMultiCaret.DefaultMode := FDefaultMode; + FMultiCaret.DefaultColumnSelectMode := FDefaultColumnSelectMode; + + SynEdit.BlockIndent := 2; + SynEdit.BlockTabIndent := 0; + SynEdit.TabWidth := 4; +end; + +procedure TTestMultiCaret.ReCreateEdit(ALines: TStringArray); +begin + ReCreateEdit; + SetLines(ALines); +end; + +procedure TTestMultiCaret.ReCreateSharedEdit(Reverse: boolean); +begin + FSynEdit2.Free; + Form.Height := 600; + Form.Width := 500; + + FSynEdit2 := TTestSynEdit.Create(Form); + FSynEdit2.Parent := Form; + FSynEdit2.Top := 250; + FSynEdit2.Left := 0; + FSynEdit2.Width:= 500; + FSynEdit2.Height := 250; + + FMultiCaret2 := TSynPluginMultiCaretTest.Create(FSynEdit2); + + if Reverse then begin + FSynEdit2.Lines.Assign(FSynEdit.Lines); + FSynEdit.ShareTextBufferFrom(FSynEdit2) + end + else + FSynEdit2.ShareTextBufferFrom(FSynEdit); +end; + +procedure TTestMultiCaret.SwapEdit; +var + m: TSynPluginMultiCaretTest; + e: TTestSynEdit; +begin + m := FMultiCaret; + e := FSynEdit; + + FMultiCaret := FMultiCaret2; + FSynEdit := FSynEdit2; + + FMultiCaret2 := m; + FSynEdit2 := e; +end; + +procedure TTestMultiCaret.RunCmdSeq(cmds: array of TSynEditorCommand; chars: array of String); +var + i, j: Integer; + a: String; +begin + j := 0; + for i := 0 to high(cmds) do begin + a := ''; + if (cmds[i] = ecChar) and (j <= high(chars)) then begin + a := chars[j]; + inc(j); + end; + SynEdit.CommandProcessor(cmds[i], a, nil); + Application.ProcessMessages; + end; +end; + +procedure TTestMultiCaret.CaretList; + procedure TestSequence(name: string; a: Array of Integer); + var + c: TSynPluginMultiCaretList; + i, j, k, n, m: Integer; + begin + + c := TSynPluginMultiCaretList.Create; + for i := 0 to high(a) do begin + c.AddCaret(1,a[i],0); + for j := 1 to c.Count-1 do + AssertTrue(Format(name+' Test %d %d', [i, j]), c.Caret[j].y > c.Caret[j-1].y); + end; + + c.Clear; + for i := 0 to high(a) do begin + k := c.AddCaret(1,a[i],0); + AssertEquals(Format(name+' Test %d %d', [i, j]),a[i], c.Caret[k].y); + for j := 1 to c.Count-1 do + AssertTrue(Format(name+' Test %d %d', [i, j]), c.Caret[j].y > c.Caret[j-1].y); + end; + + c.Clear; + for i := 0 to high(a) do begin + c.AddCaret(1,a[i],0); + end; + for j := 1 to c.Count-1 do + AssertTrue(Format(name+' Test %d %d', [i, j]), c.Caret[j].y > c.Caret[j-1].y); + + c.Clear; + for i := high(a) downto 0 do begin + k := c.AddCaret(1,a[i],0); + AssertEquals(Format(name+' Test %d %d', [i, j]),a[i], c.Caret[k].y); + for j := 1 to c.Count-1 do + AssertTrue(Format(name+' Test %d %d', [i, j]), c.Caret[j].y > c.Caret[j-1].y); + end; + + + for m := 0 to length(a)-1 do begin + for n := 0 to m do begin + c.Clear; + for i := 0 to m do begin + k := c.AddCaret(1,a[i],0); + AssertEquals(Format(name+' Test %d %d', [i, j]),a[i], c.Caret[k].y); + end; + for j := 1 to c.Count-1 do + AssertTrue(Format(name+' Test %d %d', [i, j]), c.Caret[j].y > c.Caret[j-1].y); + k := c.Caret[n].y; + c.RemoveCaret(n); + for j := 1 to c.Count-1 do begin + AssertTrue(Format(name+' Test %d %d', [i, j]), c.Caret[j].y > c.Caret[j-1].y); + AssertTrue(Format(name+' Test %d %d', [i, j]), c.Caret[j].y <> k); + end; + + + end; + end; + + c.Free; + end; + procedure TestSequenceEx(n: string; a: Array of Integer); + var + i, j: Integer; + b: Array of Integer; + begin + for i := 1 to length(a) do begin + TestSequence(n+IntToStr(i),a); + j := a[0]; + if Length(a) > 1 then + move(a[1],a[0],(Length(a)-1)*SizeOf(a[0])); + a[high(a)] := j; + end; + + SetLength(b, Length(a)); + for i := 0 to length(a)-1 do + b[i] := a[high(a)-i]; + + for i := 1 to length(b) do begin + TestSequence(n+IntToStr(i),b); + j := b[0]; + if Length(b) > 1 then + move(b[1],b[0],(Length(b)-1)*SizeOf(b[0])); + b[high(b)] := j; + end; + end; +begin + TestSequence('XXX', [3,2,1,12,11,10,9,8,7,6,5,4]); + TestSequence('XXX', [4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3]); + + TestSequenceEx('1', [1,2]); + TestSequenceEx('1', [1,2,3,4,5,6,7,8,9,10,11,12]); + TestSequenceEx('1', [1,99,2,98,3,97,4,96,5,95,6,94]); + TestSequenceEx('1', [1,2,99,98,3,4,97,96,5,6,95,94,7,8,93,92,9,10]); + TestSequenceEx('1', [1,2,3,4,5,6,7,8,9,10,11,12,-1]); + TestSequenceEx('1', [1,2,3,4,5,6,7,8,9,10,-1]); + TestSequenceEx('1', [1,2,3,4,5,6,7,8,9,-1]); + TestSequenceEx('1', [1,2,3,4,5,6,7,8,-1]); + TestSequenceEx('1', [1,2,3,4,5,6,7,-1]); + TestSequenceEx('1', [1,2,3,4,5,6,-1]); + TestSequenceEx('1', [1,2,3,4,5,-1]); + TestSequenceEx('1', [1,2,3,4,-1]); +end; + +procedure TTestMultiCaret.ColumnSelect; +begin + PushBaseName('Simple 0 width col select ep/down'); + ReCreateEdit(TestText1); + SetCaret(3,3); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelUp], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelUp], 3,3, TestText1, 0, []); + RunAndTest('', [ecColSelUp], 3,2, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,3, TestText1, 0, []); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + PopPushBaseName('column sel left/right'); + RunAndTest('', [ecColSelLeft], 2,5, TestText1, 2, [2,3,0, 2,4,0]); + RunAndTest('', [ecColSelRight], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelRight], 4,5, TestText1, 2, [4,3,0, 4,4,0]); + RunAndTest('', [ecColSelRight], 5,5, TestText1, 2, [5,3,0, 5,4,0]); + PopPushBaseName('column sel, 2 width up/down'); + RunAndTest('', [ecColSelDown], 5,6, TestText1, 3, [5,3,0, 5,4,0, 5,5,0]); + RunAndTest('', [ecColSelUp], 5,5, TestText1, 2, [5,3,0, 5,4,0]); + RunAndTest('', [ecColSelUp], 5,4, TestText1, 1, [5,3,0]); + PopBaseName; + + PushBaseName('double width char'); + FOptAdd := [eoKeepCaretX]; + ReCreateEdit(TestText2); + // X at log pos 4 / phys 4 / 3 chars before + SetCaret(4,12); + // X goes to log pos 5 / phys 4 / 2 chars => 1 double width char + RunAndTest('', [ecColSelDown], 5,13, TestText2, 1, [4,12,0]); + // X goes to log pos 3 / phys 3 / 2 chars => pushed forward by following dbl-w char + RunAndTest('', [ecColSelDown], 3,14, TestText2, 2, [3,12,0, 2,13,0]); // 2,13 is pushed forward + // X goes to log pos 4 / phys 4 => keepcaretX // 1,14 is oout of line + RunAndTest('', [ecColSelDown], 4,15, TestText2, 3, [4,12,0, 5,13,0, 3,14,0]); + + // X goes to log pos 3 / phys 3 / 2 chars => pushed forward by following dbl-w char + RunAndTest('', [ecColSelUp], 3,14, TestText2, 2, [3,12,0, 2,13,0]); + // X goes to log pos 5 / phys 4 / 2 chars => 1 double width char + RunAndTest('', [ecColSelUp], 5,13, TestText2, 1, [4,12,0]); + + // X goes to log pos 3 / phys 3 / 2 chars => pushed forward by following dbl-w char + RunAndTest('', [ecColSelDown], 3,14, TestText2, 2, [3,12,0, 2,13,0]); // 2,13 is pushed forward + +end; + +procedure TTestMultiCaret.CursorMove; + function LocalText1: TStringArray; + begin + SetLength(Result, 4); + Result[0] := ' 123 '; + Result[1] := ' abc '; + Result[2] := ' abc '; + Result[3] := ''; + end; +begin + PushBaseName('eoScrollPastEol, eoCaretSkipTab'); + FOptAdd := [eoScrollPastEol]; + FOptRemove := []; + FOpt2Add := [eoCaretSkipTab]; + FOpt2Remove := []; + FDefaultColumnSelectMode := mcmMoveAllCarets; + + + PushBaseName('ecUp'); + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 1,0); + RunAndTest('Height 2', [ecUp], 3,3, TestText1, 1, [3,2,0]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 2,0); + RunAndTest('Height 3', [ecUp], 3,4, TestText1, 2, [3,2,0, 3,3,0]); + + ReCreateEdit(TestText1); + SetCaretsByKey(3,3, [1,0, 1,0], mcmMoveAllCarets); + RunAndTest('Width 3', [ecUp], 5,2, TestText1, 2, [3,2,0, 4,2,0]); + PopBaseName; + + PushBaseName('ecUp'); + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 1,0); + RunAndTest('Height 2', [ecDown], 3,5, TestText1, 1, [3,4,0]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 2,0); + RunAndTest('Height 3', [ecDown], 3,6, TestText1, 2, [3,4,0, 3,5,0]); + + ReCreateEdit(TestText1); + SetCaretsByKey(3,3, [1,0, 1,0], mcmMoveAllCarets); + RunAndTest('Width 3', [ecDown], 5,4, TestText1, 2, [3,4,0, 4,4,0]); + PopBaseName; + + PushBaseName('ecLeft'); + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 1,0); + RunAndTest('Height 2', [ecLeft], 2,4, TestText1, 1, [2,3,0]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 2,0); + RunAndTest('Height 3', [ecLeft], 2,5, TestText1, 2, [2,3,0, 2,4,0]); + + ReCreateEdit(TestText1); + SetCaretsByKey(3,3, [1,0, 1,0], mcmMoveAllCarets); + RunAndTest('Width 3', [ecLeft], 4,3, TestText1, 2, [2,3,0, 3,3,0]); + PopBaseName; + + PushBaseName('ecRight'); + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 1,0); + RunAndTest('Height 2', [ecRight], 4,4, TestText1, 1, [4,3,0]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,3, 2,0); + RunAndTest('Height 3', [ecRight], 4,5, TestText1, 2, [4,3,0, 4,4,0]); + + ReCreateEdit(TestText1); + SetCaretsByKey(3,3, [1,0, 1,0], mcmMoveAllCarets); + RunAndTest('Width 3', [ecRight], 6,3, TestText1, 2, [4,3,0, 5,3,0]); + PopBaseName; + PopBaseName; + + PushBaseName('eoScrollPastEol, NO eoCaretSkipTab - move through tab'); + FOptAdd := [eoScrollPastEol]; + FOptRemove := []; + FOpt2Add := []; + FOpt2Remove := [eoCaretSkipTab]; + FDefaultColumnSelectMode := mcmMoveAllCarets; + + PushBaseName('ecRight'); + ReCreateEdit(TestText2); // tabw=4 + SetCaretAndColumnSelect(6,8, 2,0); // before both tabs + RunAndTest('Height 3', [ecRight], 6,10,1, TestText2, 2, [6,8,1, 6,9,1]); + RunAndTest('Height 3', [ecRight], 6,10,2, TestText2, 2, [6,8,2, 6,9,2]); + RunAndTest('Height 3', [ecRight], 7,10,0, TestText2, 2, [7,8,0, 7,9,0]); + RunAndTest('Height 3', [ecRight], 7,10,1, TestText2, 2, [7,8,1, 7,9,1]); + PopBaseName; + + PushBaseName('ecLeft'); + ReCreateEdit(TestText2); // tabw=4 + SetCaretAndColumnSelect(8,8, 2,0); // after both tabs + RunAndTest('Height 3', [ecLeft], 7,10,3, TestText2, 2, [7,8,3, 7,9,3]); + RunAndTest('Height 3', [ecLeft], 7,10,2, TestText2, 2, [7,8,2, 7,9,2]); + RunAndTest('Height 3', [ecLeft], 7,10,1, TestText2, 2, [7,8,1, 7,9,1]); + RunAndTest('Height 3', [ecLeft], 7,10,0, TestText2, 2, [7,8,0, 7,9,0]); + RunAndTest('Height 3', [ecLeft], 6,10,2, TestText2, 2, [6,8,2, 6,9,2]); + PopBaseName; + PopBaseName; + + // move through tab, but not double-widths + + PushBaseName('ecLineStart swap to carets'); + FOptAdd := [eoScrollPastEol, eoEnhanceHomeKey]; + FOptRemove := [eoTrimTrailingSpaces]; + FOpt2Add := [eoEnhanceEndKey]; + FOpt2Remove := []; + + ReCreateEdit(LocalText1); + SetCaretsByKey(1,1, [2,0, 0,1], mcmMoveAllCarets); + TestExtraCaretPosAndOffs('', 3,2,0, 2, [1,1,0, 3,1,0]); + RunAndTest('3 carets', [ecLineStart], 1,2,0, LocalText1, 2, [1,1,0, 5,1,0]); + RunAndTest('3 carets Right', [ecRight], 2,2,0, LocalText1, 2, [2,1,0, 6,1,0]); + RunAndTest('3 carets', [ecLineStart], 1,2,0, LocalText1, 2, [1,1,0, 5,1,0]); + RunAndTest('3 carets', [ecLineStart], 7,2,0, LocalText1, 2, [1,1,0, 5,1,0]); + + PopBaseName; +end; + +procedure TTestMultiCaret.Edit; + function LocalText1: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1'; + Result[1] := '2'; + Result[2] := '3'; + Result[3] := '4'; + Result[4] := '5'; + Result[5] := '6'; + Result[6] := '7'; + Result[7] := ''; + end; + function LocalText1A: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1'; + Result[1] := 'A2'; + Result[2] := 'A3'; + Result[3] := 'A4'; + Result[4] := 'A5'; + Result[5] := 'A6'; + Result[6] := '7'; + Result[7] := ''; + end; + function LocalText1Del: TStringArray; + begin + SetLength(Result, 3); + Result[0] := '123456'; + Result[1] := '7'; + Result[2] := ''; + end; + +begin + ReCreateEdit; + SetLines(LocalText1); + + SetCaretAndColumnSelect(1,2, 4,0); + TestIsCaretLogAndFullText('', 1, 6, LocalText1); + + RunCmdSeq([ecChar], ['A']); + TestIsCaretLogAndFullText('', 2, 6, LocalText1A); + TestExtraCaretPos('', 4, [2,2, 2,3, 2,4, 2,5]); + + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 1, 6, LocalText1); + TestExtraCaretPos('', 4, [1,2, 1,3, 1,4, 1,5]); + + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 6, 1, LocalText1Del); + TestExtraCaretPos('', 4, [2,1, 3,1, 4,1, 5,1]); + + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 1, 1, LocalText1Del, [1, '6']); + // NO extra carets + AssertEquals(BaseTestName+'', 0, FMultiCaret.Carets.Count); + + + +end; + +procedure TTestMultiCaret.Delete; + function LocalText1: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1aA'; + Result[1] := '2bB'; + Result[2] := '3cC'; + Result[3] := '4dD'; + Result[4] := '5eE'; + Result[5] := '6fF'; + Result[6] := '7gG'; + Result[7] := ''; + end; + function LocalText1Del: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1aA'; + Result[1] := '2B'; + Result[2] := '3C'; + Result[3] := '4D'; + Result[4] := '5E'; + Result[5] := '6F'; + Result[6] := '7gG'; + Result[7] := ''; + end; + function LocalText1DelAndBS: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1aA'; + Result[1] := 'B'; + Result[2] := 'C'; + Result[3] := 'D'; + Result[4] := 'E'; + Result[5] := 'F'; + Result[6] := '7gG'; + Result[7] := ''; + end; + function LocalText1Del2: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1aA'; + Result[1] := 'B'; + Result[2] := 'C'; + Result[3] := 'D'; + Result[4] := 'E'; + Result[5] := 'F'; + Result[6] := '7gG'; + Result[7] := ''; + end; + function LocalText1DelExtra: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1aA'; + Result[1] := '2B'; + Result[2] := '3'; + Result[3] := 'D'; + Result[4] := '5E'; + Result[5] := '6F'; + Result[6] := '7gG'; + Result[7] := ''; + end; +begin + PushBaseName('NO eoPersistentBlock, HAS eoOverwriteBlock'); + FOpt2Add := [eoOverwriteBlock]; + FOpt2Remove := [eoPersistentBlock]; + + PushBaseName('ecDeleteLastChar'); + + PushBaseName('ecDeleteLastChar - zero width sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(3,2, 4,0); + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + + PopPushBaseName('ecDeleteLastChar - ONE width backward sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(3,2, 4,-1); + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('BS again', 1, 6, LocalText1DelAndBS); + + PopPushBaseName('ecDeleteLastChar - ONE width sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(2,2, 4,1); + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + + PopPushBaseName('ecDeleteLastChar - Two width sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(1,2, 4,2); + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 1, 6, LocalText1Del2); + + PopPushBaseName('ecDeleteLastChar - ONE width sel / extra caret'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(2,2, 4,1); + FMultiCaret.AddCaretAtLogPos(4,3,0); + FMultiCaret.AddCaretAtLogPos(2,4,0); + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1DelExtra); + + PopPushBaseName('ecDeleteChar'); + + PushBaseName('ecDeleteChar - zero width sel'); + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(2,2, 1,0); + RunAndTest('Height 2', [ecDeleteChar], 2, 3, TestText1(2,3, 2,1), 1, []); + RunAndTest('Height 2', [ecRight], 3, 3, TestText1(2,3, 2,1), 0, []); + RunCmdSeq([ecRight, ecUndo],[]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(2,2, 2,0); + RunAndTest('Height 3', [ecDeleteChar], 2, 4, TestText1(2,4, 2,1), 2, []); + RunAndTest('Height 3', [ecRight], 3, 4, TestText1(2,4, 2,1), 0, []); + RunCmdSeq([ecRight, ecUndo],[]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(2,2, 3,0); + RunAndTest('Height 4', [ecDeleteChar], 2, 5, TestText1(2,5, 2,1), 3, []); + RunAndTest('Height 4', [ecRight], 3, 5, TestText1(2,5, 2,1), 0, []); + RunCmdSeq([ecRight, ecUndo],[]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(2,2, 4,0); + RunAndTest('Height 5', [ecDeleteChar], 2, 6, TestText1(2,6, 2,1), 4, []); + RunAndTest('Height 5', [ecRight], 3, 6, TestText1(2,6, 2,1), 0, []); + RunCmdSeq([ecRight, ecUndo],[]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(2,2, 5,0); + RunAndTest('Height 5', [ecDeleteChar], 2, 7, TestText1(2,7, 2,1), 5, []); + RunAndTest('Height 5', [ecRight], 3, 7, TestText1(2,7, 2,1), 0, []); + RunCmdSeq([ecRight, ecUndo],[]); + + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(2,2, 4,0); + RunAndTest('', [ecDeleteChar], 2, 6, TestText1(2,6, 2,1), 4, []); + RunAndTest('', [ecRight], 3, 6, TestText1(2,6, 2,1), 0, []); + + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(1,2, 1,0); + RunAndTest('X=0, Height 2', [ecDeleteChar], 1, 3, TestText1(2,3, 1,1), 1, []); + RunAndTest('X=0, Height 2', [ecRight], 2, 3, TestText1(2,3, 1,1), 0, []); + RunCmdSeq([ecRight, ecUndo],[]); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(1,2, 2,0); + RunAndTest('X=0, Height 3', [ecDeleteChar], 1, 4, TestText1(2,4, 1,1), 2, []); + RunAndTest('X=0, Height 3', [ecRight], 2, 4, TestText1(2,4, 1,1), 0, []); + RunCmdSeq([ecRight, ecUndo],[]); + + ReCreateEdit(TestText1); +FMultiCaret.DefaultColumnSelectMode := mcmMoveAllCarets; + SetCaretAndColumnSelect(1,2, 2,0); + RunAndTest('X=0, Height 3', [ecDeleteChar], 1, 4, TestText1(2,4, 1,1), 2, [1,2, 1,3]); + RunAndTest('X=0, Height 3', [ecRight], 2, 4, TestText1(2,4, 1,1), 2, [2,2, 2,3]); + RunCmdSeq([ecUndo],[]); + + PopPushBaseName('ecDeleteChar - ONE width backward sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(3,2, 4,-1); + RunCmdSeq([ecDeleteChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + + PopPushBaseName('ecDeleteChar - ONE width sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(2,2, 4,1); + RunCmdSeq([ecDeleteChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + + PopPushBaseName('ecDeleteChar - Two width sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(1,2, 4,2); + RunCmdSeq([ecDeleteChar], []); + TestIsCaretLogAndFullText('', 1, 6, LocalText1Del2); + + PopBaseName; + PopBaseName; + + PopPushBaseName('NO eoPersistentBlock, NO eoOverwriteBlock'); + FOpt2Add := []; + FOpt2Remove := [eoOverwriteBlock, eoPersistentBlock]; + + PushBaseName('ecDeleteLastChar'); + PopPushBaseName('ecDeleteLastChar - Two width sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(1,2, 4,2); + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + + PopPushBaseName('ecDeleteChar'); + PopPushBaseName('ecDeleteChar - Two width backward sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(4,2, 4,-2); + RunCmdSeq([ecDeleteChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + PopBaseName; + PopBaseName; + + PopPushBaseName('NO eoPersistentBlock, NO eoOverwriteBlock'); + FOpt2Add := [eoPersistentBlock]; + FOpt2Remove := [eoOverwriteBlock]; + + PopPushBaseName('ecDeleteLastChar - Two width sel'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(1,2, 4,2); + RunCmdSeq([ecDeleteLastChar], []); + TestIsCaretLogAndFullText('', 2, 6, LocalText1Del); + + PopBaseName; + + // Delete and merge caret + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(4,2, 0,0); + SetCaretsByKey([2,0, 2,0, 2,0]); // 4carets / main caret at end + RunAndTest('', [ecDeleteLastChar], 6,2, TestText1([2,9,1, 2,7,1, 2,5,1, 2,3,1]), 3, [3,2,0, 4,2,0, 5,2,0]); + RunAndTest('', [ecDeleteLastChar], 2,2, TestText1([2,2,8]), 0, []); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(10,2, 0,0); + SetCaretsByKey([-2,0, -2,0, -2,0]); // 4carets / main caret at start + RunAndTest('', [ecDeleteLastChar], 3,2, TestText1([2,9,1, 2,7,1, 2,5,1, 2,3,1]), 3, [4,2,0, 5,2,0, 6,2,0]); + RunAndTest('', [ecDeleteLastChar], 2,2, TestText1([2,2,8]), 0, []); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(10,2, 0,0); + SetCaretsByKey([-2,0, -4,0, +2,0]); // 4carets / main caret in middle + RunAndTest('', [ecDeleteLastChar], 4,2, TestText1([2,9,1, 2,7,1, 2,5,1, 2,3,1]), 3, [3,2,0, 5,2,0, 6,2,0]); + RunAndTest('', [ecDeleteLastChar], 2,2, TestText1([2,2,8]), 0, []); + + ReCreateEdit(TestText1); + SetCaretAndColumnSelect(3,2, 0,0); + SetCaretsByKey([2,0, 2,0, 2,0]); // 4carets / main caret at end + RunAndTest('', [ecDeleteChar], 6,2, TestText1([2,9,1, 2,7,1, 2,5,1, 2,3,1]), 3, [3,2,0, 4,2,0, 5,2,0]); + RunAndTest('', [ecDeleteChar], 3,2, TestText1([2,3,8]), 0, []); + + +end; + +procedure TTestMultiCaret.ReplaceColSel; + function LocalText1: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1aA'; + Result[1] := '2bB'; + Result[2] := '3cC'; + Result[3] := '4dD'; + Result[4] := '5eE'; + Result[5] := '6fF'; + Result[6] := '7gG'; + Result[7] := ''; + end; + function LocalText1X: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1aA'; + Result[1] := '2XB'; + Result[2] := '3XC'; + Result[3] := '4XD'; + Result[4] := '5XE'; + Result[5] := '6XF'; + Result[6] := '7gG'; + Result[7] := ''; + end; +begin + ReCreateEdit; + SetLines(LocalText1); + + SetCaretAndColumnSelect(2,2, 4,1); + TestIsCaretLogAndFullText('', 3, 6, LocalText1); + + RunCmdSeq([ecChar], ['X']); + TestIsCaretLogAndFullText('', 3, 6, LocalText1X); + // 4 extra carets + main caret + AssertEquals(BaseTestName+'', 4, FMultiCaret.Carets.Count); + +end; + +procedure TTestMultiCaret.TabKey; + function LocalText1: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '2b'; + Result[2] := '3c'; + Result[3] := '4d'; + Result[4] := '5e'; + Result[5] := '6f'; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1Tab: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '2'#9'b'; + Result[2] := '3'#9'c'; + Result[3] := '4'#9'd'; + Result[4] := '5'#9'e'; + Result[5] := '6'#9'f'; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1Indent: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := ' 2b'; + Result[2] := ' 3c'; + Result[3] := ' 4d'; + Result[4] := ' 5e'; + Result[5] := ' 6f'; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1IndentX: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := ' 2b'; + Result[2] := ' 3c'; + Result[3] := ' 4d'; + Result[4] := ' 5e'; + Result[5] := ' 6f'; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1TabOver: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '2'#9; + Result[2] := '3'#9; + Result[3] := '4'#9; + Result[4] := '5'#9; + Result[5] := '6'#9; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1AfterIndent: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := ' 2b'; + Result[2] := ' 3c'; + Result[3] := ' 4d'; + Result[4] := '5e'; + Result[5] := '6f'; + Result[6] := '7g'; + Result[7] := ''; + end; +begin + PushBaseName('WITH eoTabIndent'); + FOptAdd := [eoTabIndent]; + FOptRemove := [eoTabsToSpaces, eoSmartTabs, eoTrimTrailingSpaces]; + + PushBaseName('ZERO width selection'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(2,2, 4,0); + TestIsCaretLogAndFullText('', 2, 6, LocalText1); + + RunCmdSeq([ecTab], []); + TestIsCaretLogAndFullText('', 3, 6, LocalText1Tab); + // 4 extra carets + main caret + AssertEquals(BaseTestName+'', 4, FMultiCaret.Carets.Count); + + PopPushBaseName('ONE width selection'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(2,2, 4,1); + TestIsCaretLogAndFullText('', 3, 6, LocalText1); + + RunCmdSeq([ecTab], []); + TestIsCaretLogAndFullText('', 3, 6, LocalText1TabOver); + // 4 extra carets + main caret + AssertEquals(BaseTestName+'', 4, FMultiCaret.Carets.Count); + PopBaseName; + + PopPushBaseName('indent selection'); + ReCreateEdit(LocalText1); + SetCaretAndSel(2,2, 2,4); + FMultiCaret.AddCaretAtLogPos(3,4,0); + FMultiCaret.ActiveMode := mcmMoveAllCarets; + + RunCmdSeq([ecTab], []); + TestIsCaretLogAndFullText('', 4, 4, LocalText1AfterIndent); + TestExtraCaretPos('', 1, [5,4]); + PopBaseName; + + PopBaseName; + + PushBaseName('WITHOUT eoTabIndent'); + FOptAdd := []; + FOptRemove := [eoTabIndent, eoTabsToSpaces, eoSmartTabs, eoTrimTrailingSpaces]; + + PushBaseName('ZERO width selection'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(2,2, 4,0); + TestIsCaretLogAndFullText('', 2, 6, LocalText1); + + RunCmdSeq([ecTab], []); + TestIsCaretLogAndFullText('', 3, 6, LocalText1Tab); + // 4 extra carets + main caret + AssertEquals(BaseTestName+'', 4, FMultiCaret.Carets.Count); + + + PopPushBaseName('ONE width selection'); + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(2,2, 4,1); + TestIsCaretLogAndFullText('', 3, 6, LocalText1); + + RunCmdSeq([ecTab], []); + TestIsCaretLogAndFullText('', 3, 6, LocalText1TabOver); + // 4 extra carets + main caret + AssertEquals(BaseTestName+'', 4, FMultiCaret.Carets.Count); + PopBaseName; + + PopBaseName; +end; + +procedure TTestMultiCaret.Paste; + function LocalText1: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '2b'; + Result[2] := '3c'; + Result[3] := '4d'; + Result[4] := '5e'; + Result[5] := '6f'; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1PasteNorm: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '21ab'; + Result[2] := '31ac'; + Result[3] := '41ad'; + Result[4] := '51ae'; + Result[5] := '61af'; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1PasteNormOver: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '21a'; + Result[2] := '31a'; + Result[3] := '41a'; + Result[4] := '51a'; + Result[5] := '61a'; + Result[6] := '7g'; + Result[7] := ''; + end; + function LocalText1PasteCol: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '2b'; + Result[2] := '3c'; + Result[3] := '4d'; + Result[4] := '5e'; + Result[5] := '61f'; + Result[6] := '72g'; + Result[7] := ''; + end; + function LocalText1PasteColOver: TStringArray; + begin + SetLength(Result, 8); + Result[0] := '1a'; + Result[1] := '21'; + Result[2] := '32'; + Result[3] := '4'; + Result[4] := '5'; + Result[5] := '6'; + Result[6] := '7g'; + Result[7] := ''; + end; +begin + PushBaseName('ZERO width selection -- paste normal'); + ReCreateEdit; + SynEdit.Options := SynEdit.Options + [eoTabIndent] - [eoTabsToSpaces, eoSmartTabs, eoTrimTrailingSpaces]; + SetLines(LocalText1); + + SetCaret(1,1); + RunCmdSeq([ecSelRight, ecSelRight, ecCopy], []); // copy + + SetCaretAndColumnSelect(2,2, 4,0); + TestIsCaretLogAndFullText('', 2, 6, LocalText1); + + RunCmdSeq([ecPaste], []); + TestIsCaretLogAndFullText('', 4, 6, LocalText1PasteNorm); + // 4 extra carets + main caret + AssertEquals(BaseTestName+'', 4, FMultiCaret.Carets.Count); + + + PopPushBaseName('ONE width selection -- paste normal'); + ReCreateEdit; + SynEdit.Options := SynEdit.Options + [eoTabIndent] - [eoTabsToSpaces, eoSmartTabs, eoTrimTrailingSpaces]; + SetLines(LocalText1); + + SetCaret(1,1); + RunCmdSeq([ecSelRight, ecSelRight, ecCopy], []); // copy + + SetCaretAndColumnSelect(2,2, 4,1); + TestIsCaretLogAndFullText('', 3, 6, LocalText1); + + RunCmdSeq([ecPaste], []); + TestIsCaretLogAndFullText('', 4, 6, LocalText1PasteNormOver); + // 4 extra carets + main caret + AssertEquals(BaseTestName+'', 4, FMultiCaret.Carets.Count); + + + + PushBaseName('ZERO width selection -- paste column'); + ReCreateEdit; + SynEdit.Options := SynEdit.Options + [eoTabIndent] - [eoTabsToSpaces, eoSmartTabs, eoTrimTrailingSpaces]; + SetLines(LocalText1); + + SetCaretAndColumnSelect(1,1, 1,1); + RunCmdSeq([ecCopy], []); // copy + + SetCaretAndColumnSelect(2,2, 4,0); + TestIsCaretLogAndFullText('', 2, 6, LocalText1); + + RunCmdSeq([ecPaste], []); + TestIsCaretLogAndFullText('', 3, 7, LocalText1PasteCol); + AssertEquals(BaseTestName+'', 0, FMultiCaret.Carets.Count); + + + PopPushBaseName('ONE width selection -- paste column'); + ReCreateEdit; + SynEdit.Options := SynEdit.Options + [eoTabIndent] - [eoTabsToSpaces, eoSmartTabs, eoTrimTrailingSpaces]; + SetLines(LocalText1); + + SetCaretAndColumnSelect(1,1, 1,1); + RunCmdSeq([ecCopy], []); // copy + + SetCaretAndColumnSelect(2,2, 4,1); + TestIsCaretLogAndFullText('', 3, 6, LocalText1); + + RunCmdSeq([ecPaste], []); + TestIsCaretLogAndFullText('', 3, 3, LocalText1PasteColOver); + AssertEquals(BaseTestName+'', 0, FMultiCaret.Carets.Count); + +end; + +procedure TTestMultiCaret.Undo; + function LocalText1: TStringArray; + begin + SetLength(Result, 8); + Result[0] := 'abcde'; + Result[1] := 'ABCDE'; + Result[2] := 'mnopq'; + Result[3] := 'MNOPQ'; + Result[4] := 'KLMXYZ'; + Result[5] := 'klmxyz'; + Result[6] := 'rsthi'; + Result[7] := ''; + end; + function LocalText1X: TStringArray; + begin + SetLength(Result, 8); + Result[0] := 'acde'; // b missing + Result[1] := 'ABCDE'; + Result[2] := 'mnopq'; + Result[3] := 'MNOPQ'; + Result[4] := 'KLMXYZ'; + Result[5] := 'klmxyz'; + Result[6] := 'rsthi'; + Result[7] := ''; + end; + function LocalText1A: TStringArray; + begin + SetLength(Result, 8); + Result[0] := 'abcde'; + Result[1] := 'AB123CDE'; + Result[2] := 'mn123opq'; + Result[3] := 'MN123OPQ'; + Result[4] := 'KL123MXYZ'; + Result[5] := 'kl123mxyz'; + Result[6] := 'rsthi'; + Result[7] := ''; + end; + function LocalText1B: TStringArray; + begin + SetLength(Result, 8); + Result[0] := 'abcde'; + Result[1] := 'AB145623CDE'; + Result[2] := 'mn145623opq'; + Result[3] := 'MN145623OPQ'; + Result[4] := 'KL145623MXYZ'; + Result[5] := 'kl145623mxyz'; + Result[6] := 'rsthi'; + Result[7] := ''; + end; + function LocalText1C: TStringArray; + begin + SetLength(Result, 8); + Result[0] := 'abcde'; + Result[1] := 'AB14578623CDE'; + Result[2] := 'mn14578623opq'; + Result[3] := 'MN14578623OPQ'; + Result[4] := 'KL14578623MXYZ'; + Result[5] := 'kl14578623mxyz'; + Result[6] := 'rsthi'; + Result[7] := ''; + end; +begin + FOptAdd := [eoGroupUndo]; + PushBaseName('undo mcmCancelOnCaretMove'); + FDefaultColumnSelectMode := mcmCancelOnCaretMove; + ReCreateEdit(TestText1); + SetCaret(3,3); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelDown], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + PopPushBaseName('undo mcmMoveAllCarets'); + FDefaultColumnSelectMode := mcmMoveAllCarets; + ReCreateEdit(TestText1); + SetCaret(3,3); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelDown], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecLeft], 2,6, TestText1(3,6,3,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + PopBaseName(); + + +PopPushBaseName('SHARED'); + PushBaseName('undo mcmCancelOnCaretMove'); + FDefaultColumnSelectMode := mcmCancelOnCaretMove; + ReCreateEdit(TestText1); + ReCreateSharedEdit; + SetCaret(3,3); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelDown], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + SwapEdit; + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + + PopPushBaseName('undo mcmMoveAllCarets'); + FDefaultColumnSelectMode := mcmMoveAllCarets; + ReCreateEdit(TestText1); + ReCreateSharedEdit; + SetCaret(3,3); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelDown], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecLeft], 2,6, TestText1(3,6,3,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + SwapEdit; + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + PopBaseName(); +PopBaseName(); + +PopPushBaseName('SHARED'); + PushBaseName('undo mcmCancelOnCaretMove'); + FDefaultColumnSelectMode := mcmCancelOnCaretMove; + ReCreateEdit(TestText1); + ReCreateSharedEdit(True); + SetCaret(3,3); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelDown], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + SwapEdit; + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + + PopPushBaseName('undo mcmMoveAllCarets'); + FDefaultColumnSelectMode := mcmMoveAllCarets; + ReCreateEdit(TestText1); + ReCreateSharedEdit(True); + SetCaret(3,3); + RunAndTest('', [ecColSelDown], 3,4, TestText1, 1, [3,3,0]); + RunAndTest('', [ecColSelDown], 3,5, TestText1, 2, [3,3,0, 3,4,0]); + RunAndTest('', [ecColSelDown], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteChar], 3,6, TestText1(3,6,3,1), 3, [3,3,0, 3,4,0, 3,5,0]); + RunAndTest('', [ecLeft], 2,6, TestText1(3,6,3,1), 3, [2,3,0, 2,4,0, 2,5,0]); + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + + RunAndTest('', [ecDeleteLastChar], 2,6, TestText1(3,6,2,1), 3, [2,3,0, 2,4,0, 2,5,0]); + SwapEdit; + RunAndTest('', [ecUndo], 3,6, TestText1, 3, [3,3,0, 3,4,0, 3,5,0]); + PopBaseName(); +PopBaseName(); + + PushBaseName('undo redo mcmMoveAllCarets'); + FDefaultColumnSelectMode := mcmMoveAllCarets; + ReCreateEdit(LocalText1); + SetCaretAndColumnSelect(3,2, 4,0); + RunAndTest('', [ecChar,ecChar,ecChar], ['1','2','3'], 6,6, LocalText1A, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecLeft,ecLeft], 4,6, LocalText1A, 4, [4,2, 4,3, 4,4, 4,5]); + RunAndTest('', [ecChar,ecChar,ecChar], ['4','5','6'], 7,6, LocalText1B, 4, [7,2, 7,3, 7,4, 7,5]); + RunAndTest('', [ecLeft], 6,6, LocalText1B, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecChar,ecChar], ['7','8'], 8,6, LocalText1C, 4, [8,2, 8,3, 8,4, 8,5]); + RunAndTest('', [ecUndo], 6,6, LocalText1B, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecUndo], 4,6, LocalText1A, 4, [4,2, 4,3, 4,4, 4,5]); + RunAndTest('', [ecUndo], 3,6, LocalText1, 4, [3,2, 3,3, 3,4, 3,5]); + + RunAndTest('', [ecRedo], 6,6, LocalText1A, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecRedo], 7,6, LocalText1B, 4, [7,2, 7,3, 7,4, 7,5]); + RunAndTest('', [ecRedo], ['7','8'], 8,6, LocalText1C, 4, [8,2, 8,3, 8,4, 8,5]); + + RunAndTest('', [ecUndo], 6,6, LocalText1B, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecUndo], 4,6, LocalText1A, 4, [4,2, 4,3, 4,4, 4,5]); + RunAndTest('', [ecUndo], 3,6, LocalText1, 4, [3,2, 3,3, 3,4, 3,5]); + + RunAndTest('', [ecRedo], 6,6, LocalText1A, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecRedo], 7,6, LocalText1B, 4, [7,2, 7,3, 7,4, 7,5]); + + + ReCreateEdit(LocalText1X); + SetCaret(2,1); + RunAndTest('', [ecChar], ['b'], 3,1, LocalText1, 0, []); // Undo to just ONE caret + RunCmdSeq([ecDown], []); + SetCaretsByKey([0,1, 0,1, 0,1, 0,1], mcmMoveAllCarets); + RunAndTest('', [ecChar,ecChar,ecChar], ['1','2','3'], 6,6, LocalText1A, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecLeft,ecLeft], 4,6, LocalText1A, 4, [4,2, 4,3, 4,4, 4,5]); + RunAndTest('', [ecChar,ecChar,ecChar], ['4','5','6'], 7,6, LocalText1B, 4, [7,2, 7,3, 7,4, 7,5]); + RunAndTest('', [ecUndo], 4,6, LocalText1A, 4, [4,2, 4,3, 4,4, 4,5]); + RunAndTest('', [ecUndo], 3,6, LocalText1, 4, [3,2, 3,3, 3,4, 3,5]); + RunAndTest('', [ecUndo], 2,1, LocalText1X, 0, []); + + RunAndTest('', [ecRedo], 3,1, LocalText1, 0, []); + RunAndTest('', [ecRedo], 6,6, LocalText1A, 4, [6,2, 6,3, 6,4, 6,5]); + RunAndTest('', [ecRedo], 7,6, LocalText1B, 4, [7,2, 7,3, 7,4, 7,5]); + + +// RunAndTest('', [ecColSelDown], 3,4, LocalText1, 1, [3,3,0]); + + PopBaseName; +end; + +initialization + RegisterTest(TTestMultiCaret); + +end. + diff -Nru lazarus-1.4.4+dfsg/components/tachart/aggpas/tadraweraggpas.pas lazarus-1.6+dfsg/components/tachart/aggpas/tadraweraggpas.pas --- lazarus-1.4.4+dfsg/components/tachart/aggpas/tadraweraggpas.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/aggpas/tadraweraggpas.pas 2016-01-18 23:01:48.000000000 +0000 @@ -56,6 +56,7 @@ AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; procedure SetBrushColor(AColor: TChartColor); procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor); procedure SetPenParams(AStyle: TFPPenStyle; AColor: TChartColor); @@ -196,6 +197,11 @@ FCanvas.Rectangle(ARect); end; +procedure TAggPasDrawer.ResetFont; +begin + FCanvas.Font.Orientation := 0; +end; + procedure TAggPasDrawer.SetBrush(ABrush: TFPCustomBrush); begin with FCanvas.Brush do begin diff -Nru lazarus-1.4.4+dfsg/components/tachart/demo/fit/fitdemo.lpi lazarus-1.6+dfsg/components/tachart/demo/fit/fitdemo.lpi --- lazarus-1.4.4+dfsg/components/tachart/demo/fit/fitdemo.lpi 2012-08-16 16:12:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/demo/fit/fitdemo.lpi 2015-07-27 16:09:41.000000000 +0000 @@ -1,4 +1,4 @@ - + @@ -41,7 +41,6 @@ - @@ -49,7 +48,6 @@ - @@ -76,12 +74,6 @@ - - - - - - diff -Nru lazarus-1.4.4+dfsg/components/tachart/demo/fit/Main.lfm lazarus-1.6+dfsg/components/tachart/demo/fit/Main.lfm --- lazarus-1.4.4+dfsg/components/tachart/demo/fit/Main.lfm 2012-11-22 10:26:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/demo/fit/Main.lfm 2015-07-27 16:09:41.000000000 +0000 @@ -8,7 +8,7 @@ ClientWidth = 800 OnCreate = FormCreate ShowHint = True - LCLVersion = '1.1' + LCLVersion = '1.5' object pnlParams: TPanel Left = 8 Height = 487 @@ -27,7 +27,7 @@ Width = 376 Align = alTop Caption = ' Data generation ' - ClientHeight = 87 + ClientHeight = 85 ClientWidth = 372 TabOrder = 0 object btnSave: TSpeedButton @@ -76,42 +76,42 @@ end object cbTestFunction: TComboBox Left = 94 - Height = 21 + Height = 23 Hint = 'Select a dataset for fitting' Top = 8 Width = 264 - ItemHeight = 13 + ItemHeight = 15 OnSelect = cbTestFunctionSelect Style = csDropDownList TabOrder = 0 end object lblTestFunction: TLabel Left = 14 - Height = 13 + Height = 15 Top = 12 - Width = 63 + Width = 70 Caption = 'Test function' ParentColor = False end object lblOfRange: TLabel Left = 195 - Height = 13 + Height = 15 Top = 46 - Width = 55 + Width = 57 Caption = '% of range' ParentColor = False end object lblNoiseY: TLabel Left = 14 - Height = 13 + Height = 15 Top = 46 - Width = 78 + Width = 90 Caption = 'Noise amplitude ' ParentColor = False end object edNoiseY: TFloatSpinEdit Left = 118 - Height = 21 + Height = 23 Top = 44 Width = 66 DecimalPlaces = 0 @@ -130,22 +130,22 @@ Width = 376 Align = alClient Caption = ' Fitting ' - ClientHeight = 364 + ClientHeight = 362 ClientWidth = 372 TabOrder = 1 object gbResults: TGroupBox Left = 14 - Height = 142 + Height = 140 Top = 207 Width = 344 Anchors = [akTop, akLeft, akBottom] Caption = ' Fit results ' - ClientHeight = 124 + ClientHeight = 120 ClientWidth = 340 TabOrder = 0 object lbResults: TListBox Left = 12 - Height = 104 + Height = 100 Top = 8 Width = 316 Align = alClient @@ -164,30 +164,30 @@ Top = 84 Width = 344 Caption = 'Fit range' - ClientHeight = 97 + ClientHeight = 95 ClientWidth = 340 TabOrder = 1 object cbFitRangeUseMin: TCheckBox Left = 17 - Height = 17 + Height = 19 Top = 7 - Width = 81 + Width = 95 Caption = 'Use minimum' OnClick = cbFitRangeUseMinClick TabOrder = 0 end object cbFitRangeUseMax: TCheckBox Left = 17 - Height = 17 + Height = 19 Top = 33 - Width = 85 + Width = 96 Caption = 'Use maximum' OnClick = cbFitRangeUseMaxClick TabOrder = 1 end object edFitRangeMin: TFloatSpinEdit Left = 150 - Height = 21 + Height = 23 Top = 7 Width = 90 Increment = 1 @@ -200,7 +200,7 @@ end object edFitRangeMax: TFloatSpinEdit Left = 150 - Height = 21 + Height = 23 Top = 35 Width = 90 Increment = 1 @@ -213,9 +213,9 @@ end object cbDrawFitRangeOnly: TCheckBox Left = 17 - Height = 17 + Height = 19 Top = 64 - Width = 166 + Width = 179 Caption = 'Draw fit curve in fit range only' Checked = True Enabled = False @@ -226,7 +226,7 @@ end object edFitOrder: TSpinEdit Left = 169 - Height = 21 + Height = 23 Top = 48 Width = 53 OnChange = edFitOrderChange @@ -235,19 +235,19 @@ end object lblFitOrder: TLabel Left = 14 - Height = 13 + Height = 15 Top = 50 - Width = 101 + Width = 114 Caption = 'Degree of polynomial' ParentColor = False end object cbFitEquation: TComboBox Left = 86 - Height = 21 + Height = 23 Hint = 'Select a function type to be used for fitting to the generated data' Top = 16 Width = 272 - ItemHeight = 13 + ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'Polynomial (y = b0 + b1*x + ... bn*x^n)' @@ -262,9 +262,9 @@ end object lblFitEquation: TLabel Left = 14 - Height = 13 + Height = 15 Top = 19 - Width = 57 + Width = 63 Caption = 'Fit equation' ParentColor = False end @@ -327,7 +327,6 @@ ) Align = alClient DoubleBuffered = True - ParentColor = False object DataSeries: TLineSeries Title = 'Test data' AxisIndexX = 1 @@ -362,18 +361,18 @@ TabOrder = 1 object cbLogX: TCheckBox Left = 48 - Height = 17 + Height = 19 Top = 3 - Width = 83 + Width = 92 Caption = 'Logarithmic x' OnClick = cbLogClick TabOrder = 0 end object cbLogY: TCheckBox Left = 176 - Height = 17 + Height = 19 Top = 3 - Width = 83 + Width = 93 Caption = 'Logarithmic y' OnClick = cbLogClick TabOrder = 1 diff -Nru lazarus-1.4.4+dfsg/components/tachart/demo/fit/Main.pas lazarus-1.6+dfsg/components/tachart/demo/fit/Main.pas --- lazarus-1.4.4+dfsg/components/tachart/demo/fit/Main.pas 2012-11-22 10:26:35.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/demo/fit/Main.pas 2015-07-27 16:09:41.000000000 +0000 @@ -96,14 +96,17 @@ s: TStream; fs: TFormatSettings; si: PChartDataItem; + line: String; begin if not SaveDialog.Execute then exit; fs := DefaultFormatSettings; fs.DecimalSeparator := '.'; s := TFileStream.Create(SaveDialog.FileName, fmCreate); try - for si in ListChartSource do - s.WriteAnsiString(Format('%.9g'#9'%.9g'#13#10, [si^.X, si^.Y], fs)); + for si in ListChartSource do begin + line := Format('%.9g'#9'%.9g'#13#10, [si^.X, si^.Y], fs); + s.WriteBuffer(line[1], Length(line)); + end; finally s.Free; end; @@ -250,6 +253,7 @@ Add(Format('a = %g', [FitSeries.Param[0]])); Add(Format('b = %g', [FitSeries.Param[1]])); end; + Add(Format('R-squared = %g', [FitSeries.GoodnessOfFit])); EndUpdate; end; end; @@ -264,7 +268,6 @@ Items.Add(eq.Equation(feLinear).Params(LIN_PARAMS)); Items.Add(eq.Equation(feExp).Params(EXP_PARAMS)); Items.Add(eq.Equation(fePower).Params(PWR_PARAMS)); - Items.Add(eq.Equation(fePower).Params(PWR_PARAMS)); ItemIndex := Ord(fePolynomial); end; diff -Nru lazarus-1.4.4+dfsg/components/tachart/editors/tadatapointseditor.lfm lazarus-1.6+dfsg/components/tachart/editors/tadatapointseditor.lfm --- lazarus-1.4.4+dfsg/components/tachart/editors/tadatapointseditor.lfm 2011-10-03 22:48:51.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/editors/tadatapointseditor.lfm 2015-12-28 22:17:43.000000000 +0000 @@ -3,10 +3,10 @@ Height = 303 Top = 235 Width = 357 - Caption = 'DataPoints editor' ClientHeight = 303 ClientWidth = 357 - LCLVersion = '0.9.31' + OnCreate = FormCreate + LCLVersion = '1.7' object sgData: TStringGrid Left = 0 Height = 257 @@ -18,40 +18,37 @@ item Alignment = taRightJustify Title.Alignment = taCenter - Title.Caption = 'X' Title.Font.Style = [fsBold] - Title.PrefixOption = poNone + Title.Caption = 'X' Width = 80 end item Alignment = taRightJustify Title.Alignment = taCenter - Title.Caption = 'Y' Title.Font.Style = [fsBold] - Title.PrefixOption = poNone + Title.Caption = 'Y' Width = 80 end item ButtonStyle = cbsEllipsis Title.Alignment = taCenter - Title.Caption = 'Color' Title.Font.Style = [fsBold] - Title.PrefixOption = poNone + Title.Caption = 'Color' Width = 80 end item Title.Alignment = taCenter - Title.Caption = 'Text' Title.Font.Style = [fsBold] - Title.PrefixOption = poNone + Title.Caption = 'Text' Width = 81 end> DefaultColWidth = 32 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowMoving, goEditing, goAutoAddRows, goRowSelect, goAlwaysShowEditor, goSmoothScroll, goFixedRowNumbering] + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowMoving, goEditing, goAutoAddRows, goAlwaysShowEditor, goSmoothScroll, goFixedRowNumbering] PopupMenu = pmRows TabOrder = 0 OnDrawCell = sgDataDrawCell OnButtonClick = sgDataButtonClick + OnPrepareCanvas = sgDataPrepareCanvas ColWidths = ( 32 80 @@ -66,9 +63,13 @@ Top = 263 Width = 345 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 1 ShowButtons = [pbOK, pbCancel] end diff -Nru lazarus-1.4.4+dfsg/components/tachart/editors/tadatapointseditor.pas lazarus-1.6+dfsg/components/tachart/editors/tadatapointseditor.pas --- lazarus-1.4.4+dfsg/components/tachart/editors/tadatapointseditor.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/editors/tadatapointseditor.pas 2015-12-28 22:17:43.000000000 +0000 @@ -18,6 +18,9 @@ Graphics, Dialogs; type + + { TDataPointsEditorForm } + TDataPointsEditorForm = class(TForm) ButtonPanel1: TButtonPanel; cdItemColor: TColorDialog; @@ -25,6 +28,7 @@ miDeleteRow: TMenuItem; pmRows: TPopupMenu; sgData: TStringGrid; + procedure FormCreate(Sender: TObject); procedure miDeleteRowClick(Sender: TObject); procedure miInsertRowClick(Sender: TObject); procedure pmRowsPopup(Sender: TObject); @@ -32,13 +36,15 @@ procedure sgDataDrawCell( ASender: TObject; ACol, ARow: Integer; ARect: TRect; AState: TGridDrawState); + procedure sgDataPrepareCanvas(sender: TObject; aCol, aRow: Integer; + aState: TGridDrawState); strict private FCurrentRow: Integer; FDataPoints: TStrings; FYCount: Integer; public procedure InitData(AYCount: Integer; ADataPoints: TStrings); - procedure ExtractData; + procedure ExtractData(out AModified: Boolean); end; procedure Register; @@ -46,7 +52,8 @@ implementation uses - LCLIntf, Math, PropEdits, TAChartUtils, TASources; + LCLIntf, Math, PropEdits, + TAChartStrConsts, TAChartUtils, TASources; {$R *.lfm} @@ -67,11 +74,13 @@ { TDataPointsEditorForm } -procedure TDataPointsEditorForm.ExtractData; +procedure TDataPointsEditorForm.ExtractData(out AModified: Boolean); var i: Integer; s: String; + oldDataPoints: String; begin + oldDataPoints := FDataPoints.Text; FDataPoints.BeginUpdate; try FDataPoints.Clear; @@ -86,6 +95,7 @@ end; finally FDataPoints.EndUpdate; + AModified := FDataPoints.Text <> oldDataPoints; end; end; @@ -122,6 +132,15 @@ sgData.DeleteRow(FCurrentRow); end; +procedure TDataPointsEditorForm.FormCreate(Sender: TObject); +begin + Caption := desDatapointEditor; + sgData.Columns[2].Title.Caption := desColor; + sgData.Columns[3].Title.Caption := desText; + miInsertRow.Caption := desInsertRow; + miDeleteRow.Caption := desDeleteRow; +end; + procedure TDataPointsEditorForm.miInsertRowClick(Sender: TObject); begin sgData.InsertColRow(false, FCurrentRow); @@ -160,17 +179,33 @@ sgData.Canvas.Rectangle(ARect); end; +procedure TDataPointsEditorForm.sgDataPrepareCanvas(sender: TObject; aCol, + aRow: Integer; aState: TGridDrawState); +var + ts: TTextStyle; +begin + if ACol = 0 then begin + ts := TStringGrid(Sender).Canvas.TextStyle; + ts.Alignment := taRightJustify; + TStringGrid(Sender).Canvas.TextStyle := ts; + end; +end; + { TDataPointsPropertyEditor } procedure TDataPointsPropertyEditor.Edit; +var + dataModified: Boolean; begin with TDataPointsEditorForm.Create(nil) do try InitData( (GetComponent(0) as TListChartSource).YCount, GetObjectValue as TStrings); - if ShowModal = mrOK then - ExtractData; + if ShowModal = mrOK then begin + ExtractData(dataModified); + if dataModified then Modified; + end; finally Free; end; diff -Nru lazarus-1.4.4+dfsg/components/tachart/editors/taserieseditor.pas lazarus-1.6+dfsg/components/tachart/editors/taserieseditor.pas --- lazarus-1.4.4+dfsg/components/tachart/editors/taserieseditor.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/editors/taserieseditor.pas 2015-12-17 21:49:22.000000000 +0000 @@ -23,14 +23,12 @@ procedure Register; -resourcestring - sesSeriesEditorTitle = 'Edit series'; implementation uses Classes, ComponentEditors, Forms, Menus, PropEdits, SysUtils, - TAGraph, TASubcomponentsEditor; + TAChartStrConsts, TAGraph, TASubcomponentsEditor; type { TSeriesComponentEditor } @@ -120,7 +118,7 @@ i: Integer; begin for i := 0 to SeriesClassRegistry.Count - 1 do - AddSubcomponentClass(SeriesClassRegistry[i], i); + AddSubcomponentClass(SeriesClassRegistry.GetCaption(i), i); end; function TSeriesEditorForm.GetChildrenList: TFPList; @@ -131,7 +129,7 @@ function TSeriesEditorForm.MakeSubcomponent( AOwner: TComponent; ATag: Integer): TComponent; begin - Result := TSeriesClass(SeriesClassRegistry.Objects[ATag]).Create(AOwner); + Result := TSeriesClass(SeriesClassRegistry.GetClass(ATag)).Create(AOwner); end; end. diff -Nru lazarus-1.4.4+dfsg/components/tachart/editors/tasubcomponentseditor.lfm lazarus-1.6+dfsg/components/tachart/editors/tasubcomponentseditor.lfm --- lazarus-1.4.4+dfsg/components/tachart/editors/tasubcomponentseditor.lfm 2012-09-21 17:30:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/editors/tasubcomponentseditor.lfm 2015-12-17 21:49:22.000000000 +0000 @@ -10,7 +10,7 @@ OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.7' object ChildrenListBox: TListBox Left = 0 Height = 198 diff -Nru lazarus-1.4.4+dfsg/components/tachart/editors/tasubcomponentseditor.pas lazarus-1.6+dfsg/components/tachart/editors/tasubcomponentseditor.pas --- lazarus-1.4.4+dfsg/components/tachart/editors/tasubcomponentseditor.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/editors/tasubcomponentseditor.pas 2015-12-17 21:49:22.000000000 +0000 @@ -92,7 +92,8 @@ implementation uses - IDEImagesIntf, Math, SysUtils, TAChartUtils; + IDEImagesIntf, Math, SysUtils, + TAChartStrConsts, TAChartUtils; {$R *.lfm} @@ -188,15 +189,15 @@ FDesigner := FindRootDesigner(FParent) as TComponentEditorDesigner; BuildCaption; EnumerateSubcomponentClasses; - RefreshList; - - GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed); - GlobalDesignHook.AddHandlerPersistentDeleting(@OnPersistentDeleting); - GlobalDesignHook.AddHandlerGetSelection(@OnGetSelection); - GlobalDesignHook.AddHandlerSetSelection(@OnSetSelection); - GlobalDesignHook.AddHandlerPersistentAdded(@OnPersistentAdded); - + if Assigned(GlobalDesignHook) then + begin + GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed); + GlobalDesignHook.AddHandlerPersistentDeleting(@OnPersistentDeleting); + GlobalDesignHook.AddHandlerGetSelection(@OnGetSelection); + GlobalDesignHook.AddHandlerSetSelection(@OnSetSelection); + GlobalDesignHook.AddHandlerPersistentAdded(@OnPersistentAdded); + end; SelectionChanged; end; @@ -229,18 +230,21 @@ tbDelete.ImageIndex := IDEImages.LoadImage(16, 'laz_delete'); tbMoveDown.ImageIndex := IDEImages.LoadImage(16, 'arrow_down'); tbMoveUp.ImageIndex := IDEImages.LoadImage(16, 'arrow_up'); + tbAdd.Caption := rsAdd; + tbDelete.Caption := rsDelete; + tbMoveUp.Caption := rsMoveUp; + tbMoveDown.Caption := rsMoveDown; end; procedure TComponentListEditorForm.FormDestroy(Sender: TObject); begin - if - (FComponentEditor <> nil) and (FParent <> nil) and - (not (csDestroying in FParent.ComponentState)) and - (ChildrenListBox.SelCount > 0) - then + if GlobalDesignHook = Nil then + Exit; + if Assigned(FComponentEditor) and Assigned(FParent) + and not (csDestroying in FParent.ComponentState) + and (ChildrenListBox.SelCount > 0) then GlobalDesignHook.SelectOnlyThis(FParent); - if Assigned(GlobalDesignHook) then - GlobalDesignHook.RemoveAllHandlersForObject(Self); + GlobalDesignHook.RemoveAllHandlersForObject(Self); end; procedure TComponentListEditorForm.miAddClick(Sender: TObject); @@ -365,6 +369,7 @@ var sel: TPersistentSelectionList; begin + if GlobalDesignHook=nil then exit; GlobalDesignHook.RemoveHandlerSetSelection(@OnSetSelection); try sel := TPersistentSelectionList.Create; diff -Nru lazarus-1.4.4+dfsg/components/tachart/editors/tatooleditors.pas lazarus-1.6+dfsg/components/tachart/editors/tatooleditors.pas --- lazarus-1.4.4+dfsg/components/tachart/editors/tatooleditors.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/editors/tatooleditors.pas 2015-12-17 21:49:22.000000000 +0000 @@ -17,14 +17,11 @@ procedure Register; -resourcestring - tasToolsEditorTitle = 'Edit tools'; - implementation uses Classes, ComponentEditors, Forms, PropEdits, SysUtils, - TATools, TASubcomponentsEditor; + TAChartStrConsts, TATools, TASubcomponentsEditor; type { TToolsComponentEditor } @@ -116,7 +113,7 @@ i: Integer; begin for i := 0 to ToolsClassRegistry.Count - 1 do - AddSubcomponentClass(ToolsClassRegistry[i], i); + AddSubcomponentClass(ToolsClassRegistry.GetCaption(i), i); end; function TToolsEditorForm.GetChildrenList: TFPList; @@ -127,7 +124,7 @@ function TToolsEditorForm.MakeSubcomponent( AOwner: TComponent; ATag: Integer): TComponent; begin - Result := TChartToolClass(ToolsClassRegistry.Objects[ATag]).Create(AOwner); + Result := TChartToolClass(ToolsClassRegistry.GetClass(ATag)).Create(AOwner); end; end. diff -Nru lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.de.po lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.de.po --- lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.de.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.de.po 2015-12-23 23:49:40.000000000 +0000 @@ -0,0 +1,208 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Project-Id-Version: tachartlazaruspkg\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"X-Generator: Poedit 1.8.6\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: tachartstrconsts.descolor +msgid "Color" +msgstr "Farbe" + +#: tachartstrconsts.desdatapointeditor +msgid "DataPoints editor" +msgstr "Datenpunkt-Editor" + +#: tachartstrconsts.desdeleterow +msgid "Delete row" +msgstr "Zeile löschen" + +#: tachartstrconsts.desinsertrow +msgid "Insert row" +msgstr "Zeile einfügen" + +#: tachartstrconsts.destext +msgid "Text" +msgstr "Text" + +#: tachartstrconsts.rsadd +msgid "Add" +msgstr "Hinzuf." + +#: tachartstrconsts.rsareaseries +msgid "Area series" +msgstr "Fläche-Diagramm" + +#: tachartstrconsts.rsautoscale +msgid "Auto scale" +msgstr "Auto-Skalierung" + +#: tachartstrconsts.rsbarseries +msgid "Bar series" +msgstr "Säulen/Balken-Diagramm" + +#: tachartstrconsts.rsboxandwhiskerseries +msgid "Box-and-whiskers series" +msgstr "Box-und-Whisker-Plot" + +#: tachartstrconsts.rsbsplineseries +msgid "B-Spline series" +msgstr "B-Spline" + +#: tachartstrconsts.rsbubbleseries +msgid "Bubble series" +msgstr "Blasen-Diagramm" + +#: tachartstrconsts.rscolormapseries +msgid "Color map series" +msgstr "Farbkarten-Plot" + +#: tachartstrconsts.rsconstantline +msgid "Constant line" +msgstr "Konstante Linie" + +#: tachartstrconsts.rscubicsplineseries +msgid "Cubic spline series" +msgstr "Kubischer Spline" + +#: tachartstrconsts.rscumulativenormaldistribution +msgid "Cumulative normal distribution" +msgstr "Kumulative Normalverteilung" + +#: tachartstrconsts.rsdatapointclick +msgid "Data point click" +msgstr "Klick auf Datenpunkt" + +#: tachartstrconsts.rsdatapointcrosshair +msgid "Data point crosshair" +msgstr "Fadenkreuz für Datenpunkte" + +#: tachartstrconsts.rsdatapointdrag +msgid "Data point drag" +msgstr "Datenpunkt verschieben" + +#: tachartstrconsts.rsdatapointhint +msgid "Data point hint" +msgstr "Datenpunkt-Hinweis" + +#: tachartstrconsts.rsdelete +msgid "Delete" +msgstr "Entf." + +#: tachartstrconsts.rsdistancemeasurement +msgid "Distance measurement" +msgstr "Distanzmessung" + +#: tachartstrconsts.rsfunctionseries +msgid "Function series" +msgstr "Funktions-Diagramm" + +#: tachartstrconsts.rsinvalidlogbase +msgid "Logarithm base must be > 0 and <> 1." +msgstr "Die Logarithmus-Basis muss größer als 0 und darf nicht gleich 1 sein." + +#: tachartstrconsts.rsleastsquaresfitseries +msgid "Least-squares fit series" +msgstr "Fit" + +#: tachartstrconsts.rslinear +msgid "Linear" +msgstr "Linear" + +#: tachartstrconsts.rslineseries +msgid "Line series" +msgstr "Linien-Diagramm" + +#: tachartstrconsts.rslogarithmic +msgid "Logarithmic" +msgstr "Logarithmisch" + +#: tachartstrconsts.rsmanhattanplotseries +msgid "Manhattan plot series" +msgstr "Manhatten-Plot" + +#: tachartstrconsts.rsmovedown +msgid "Down" +msgstr "Ab" + +#: tachartstrconsts.rsmoveup +msgid "Up" +msgstr "Auf" + +#: tachartstrconsts.rsopenhighlowcloseseries +msgid "Open-high-low-close series" +msgstr "Öffnung-Höchst-Tiefst-Geschlossen" + +#: tachartstrconsts.rspanningbyclick +msgid "Panning by click" +msgstr "Verschieben durch Klicken" + +#: tachartstrconsts.rspanningbydrag +msgid "Panning by drag" +msgstr "Verschieben durch Ziehen" + +#: tachartstrconsts.rspanningbymousewheel +msgid "Panning by mouse wheel" +msgstr "Verschieben mit Mausrad" + +#: tachartstrconsts.rsparametriccurveseries +msgid "Parametric curve series" +msgstr "Parametrische Kurve" + +#: tachartstrconsts.rspieseries +msgid "Pie series" +msgstr "Torten-Diagramm" + +#: tachartstrconsts.rspolarseries +msgid "Polar series" +msgstr "Polar-Diagramm" + +#: tachartstrconsts.rsuserdefined +msgctxt "tachartstrconsts.rsuserdefined" +msgid "User-defined" +msgstr "Benutzerdefiniert" + +#: tachartstrconsts.rsuserdefinedtool +msgctxt "tachartstrconsts.rsuserdefinedtool" +msgid "User-defined" +msgstr "Benutzerdefiniert" + +#: tachartstrconsts.rsuserdrawnseries +msgid "User-drawn series" +msgstr "Benutzer-definiertes Diagramm" + +#: tachartstrconsts.rszoombyclick +msgid "Zoom by click" +msgstr "Zoomen durch Klicken" + +#: tachartstrconsts.rszoombydrag +msgid "Zoom by drag" +msgstr "Zommen durch Ziehen" + +#: tachartstrconsts.rszoombymousewheel +msgid "Zoom by mouse-wheel" +msgstr "Zoomen mit Mausrad" + +#: tachartstrconsts.sesserieseditortitle +msgid "Edit series" +msgstr "Datenreihe bearbeiten" + +#: tachartstrconsts.tasaxistransformseditortitle +msgid "Edit axis transformations" +msgstr "Achsentransformation bearbeiten" + +#: tachartstrconsts.tasfailedsubcomponentrename +msgid "Failed to rename components: %s" +msgstr "Fehler beim Umbenennen von Komponenten: %s" + +#: tachartstrconsts.tastoolseditortitle +msgid "Edit tools" +msgstr "Werkzeuge bearbeiten" diff -Nru lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.fi.po lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.fi.po --- lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.fi.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.fi.po 2015-12-23 23:49:40.000000000 +0000 @@ -0,0 +1,198 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: tachartstrconsts.descolor +msgid "Color" +msgstr "Väri" + +#: tachartstrconsts.desdatapointeditor +msgid "DataPoints editor" +msgstr "Datapisteiden muokkain" + +#: tachartstrconsts.desdeleterow +msgid "Delete row" +msgstr "" + +#: tachartstrconsts.desinsertrow +msgid "Insert row" +msgstr "" + +#: tachartstrconsts.destext +msgid "Text" +msgstr "Teksti" + +#: tachartstrconsts.rsadd +msgid "Add" +msgstr "Lisää" + +#: tachartstrconsts.rsareaseries +msgid "Area series" +msgstr "Aluekuvaaja" + +#: tachartstrconsts.rsautoscale +msgid "Auto scale" +msgstr "Automaattinen skaalaus" + +#: tachartstrconsts.rsbarseries +msgid "Bar series" +msgstr "Pylväskuvaaja" + +#: tachartstrconsts.rsboxandwhiskerseries +msgid "Box-and-whiskers series" +msgstr "Laatikko-jana kuvaaja" + +#: tachartstrconsts.rsbsplineseries +msgid "B-Spline series" +msgstr "B-käyrä kuvaaja" + +#: tachartstrconsts.rsbubbleseries +msgid "Bubble series" +msgstr "Kuplakuvaaja" + +#: tachartstrconsts.rscolormapseries +msgid "Color map series" +msgstr "Värikarttakuvaaja" + +#: tachartstrconsts.rsconstantline +msgid "Constant line" +msgstr "Kiinteä viiva" + +#: tachartstrconsts.rscubicsplineseries +msgid "Cubic spline series" +msgstr "Kuutiokäyräkuvaaja" + +#: tachartstrconsts.rscumulativenormaldistribution +msgid "Cumulative normal distribution" +msgstr "Kumulatiivinen normaalijakauma" + +#: tachartstrconsts.rsdatapointclick +msgid "Data point click" +msgstr "Datapisteen klikkaus" + +#: tachartstrconsts.rsdatapointcrosshair +msgid "Data point crosshair" +msgstr "Datapisteen tähtäin" + +#: tachartstrconsts.rsdatapointdrag +msgid "Data point drag" +msgstr "Datapisteen vetäminen" + +#: tachartstrconsts.rsdatapointhint +msgid "Data point hint" +msgstr "Datapisteen vihje" + +#: tachartstrconsts.rsdelete +msgid "Delete" +msgstr "Poista" + +#: tachartstrconsts.rsdistancemeasurement +msgid "Distance measurement" +msgstr "Etäisyysmittaus" + +#: tachartstrconsts.rsfunctionseries +msgid "Function series" +msgstr "Funktiokuvaaja" + +#: tachartstrconsts.rsinvalidlogbase +msgid "Logarithm base must be > 0 and <> 1." +msgstr "" + +#: tachartstrconsts.rsleastsquaresfitseries +msgid "Least-squares fit series" +msgstr "Pienimpään neliösummaan sopiva kuvaaja" + +#: tachartstrconsts.rslinear +msgid "Linear" +msgstr "Lineaarinen" + +#: tachartstrconsts.rslineseries +msgid "Line series" +msgstr "Viivakuvaaja" + +#: tachartstrconsts.rslogarithmic +msgid "Logarithmic" +msgstr "Logaritminen" + +#: tachartstrconsts.rsmanhattanplotseries +msgid "Manhattan plot series" +msgstr "Manhattan-kuvaaja" + +#: tachartstrconsts.rsmovedown +msgid "Down" +msgstr "Alas" + +#: tachartstrconsts.rsmoveup +msgid "Up" +msgstr "Ylös" + +#: tachartstrconsts.rsopenhighlowcloseseries +msgid "Open-high-low-close series" +msgstr "" + +#: tachartstrconsts.rspanningbyclick +msgid "Panning by click" +msgstr "Vieritys klikkaamalla" + +#: tachartstrconsts.rspanningbydrag +msgid "Panning by drag" +msgstr "Vieritys vetämällä" + +#: tachartstrconsts.rspanningbymousewheel +msgid "Panning by mouse wheel" +msgstr "Vieritys hiiren rullalla" + +#: tachartstrconsts.rsparametriccurveseries +msgid "Parametric curve series" +msgstr "" + +#: tachartstrconsts.rspieseries +msgid "Pie series" +msgstr "Piirakkakuvaaja" + +#: tachartstrconsts.rspolarseries +msgid "Polar series" +msgstr "Napakuvaaja" + +#: tachartstrconsts.rsuserdefined +msgctxt "tachartstrconsts.rsuserdefined" +msgid "User-defined" +msgstr "Käyttäjän määrittelemä" + +#: tachartstrconsts.rsuserdefinedtool +#, fuzzy +msgctxt "tachartstrconsts.rsuserdefinedtool" +msgid "User-defined" +msgstr "Käyttäjän määrittelemä" + +#: tachartstrconsts.rsuserdrawnseries +msgid "User-drawn series" +msgstr "Käyttäjän piirtämä kuvaaja" + +#: tachartstrconsts.rszoombyclick +msgid "Zoom by click" +msgstr "Zoomaus klikkaamalla" + +#: tachartstrconsts.rszoombydrag +msgid "Zoom by drag" +msgstr "Zoomaus vetämällä" + +#: tachartstrconsts.rszoombymousewheel +msgid "Zoom by mouse-wheel" +msgstr "Zoomaus hiiren rullalla" + +#: tachartstrconsts.sesserieseditortitle +msgid "Edit series" +msgstr "Muokkaa kuvaajia" + +#: tachartstrconsts.tasaxistransformseditortitle +msgid "Edit axis transformations" +msgstr "Muokkaa akselimuunnoksia" + +#: tachartstrconsts.tasfailedsubcomponentrename +msgid "Failed to rename components: %s" +msgstr "Uudelleennimeäminen epäonnistui komponenteissa: %s" + +#: tachartstrconsts.tastoolseditortitle +msgid "Edit tools" +msgstr "Muokkaustyökalut" + diff -Nru lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.fr.po lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.fr.po --- lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.fr.po 2016-01-03 12:54:33.000000000 +0000 @@ -0,0 +1,207 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: 2015-04-14 07:54+0100\n" +"PO-Revision-Date: 2015-12-23 22:25+0100\n" +"Last-Translator: Vasseur Gilles \n" +"Language-Team: Vasseur Gilles \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"X-Generator: Poedit 1.8.6\n" + +#: tachartstrconsts.descolor +msgid "Color" +msgstr "Couleur" + +#: tachartstrconsts.desdatapointeditor +msgid "DataPoints editor" +msgstr "Éditeur de points de données" + +#: tachartstrconsts.desdeleterow +msgid "Delete row" +msgstr "Supprimer la ligne" + +#: tachartstrconsts.desinsertrow +msgid "Insert row" +msgstr "Insérer une ligne" + +#: tachartstrconsts.destext +msgid "Text" +msgstr "Texte" + +#: tachartstrconsts.rsadd +msgid "Add" +msgstr "Ajouter" + +#: tachartstrconsts.rsareaseries +msgid "Area series" +msgstr "Séries de surfaces" + +#: tachartstrconsts.rsautoscale +msgid "Auto scale" +msgstr "Échelle automatique" + +#: tachartstrconsts.rsbarseries +msgid "Bar series" +msgstr "Séries de barres" + +#: tachartstrconsts.rsboxandwhiskerseries +msgid "Box-and-whiskers series" +msgstr "Séries de boîtes à moustaches" + +#: tachartstrconsts.rsbsplineseries +msgid "B-Spline series" +msgstr "Séries de B-Splines" + +#: tachartstrconsts.rsbubbleseries +msgid "Bubble series" +msgstr "Séries de bulles" + +#: tachartstrconsts.rscolormapseries +msgid "Color map series" +msgstr "Séries de cartes de couleur" + +#: tachartstrconsts.rsconstantline +msgid "Constant line" +msgstr "Ligne constante" + +#: tachartstrconsts.rscubicsplineseries +msgid "Cubic spline series" +msgstr "Séries de splines cubiques" + +#: tachartstrconsts.rscumulativenormaldistribution +msgid "Cumulative normal distribution" +msgstr "Répartition de distribution normale" + +#: tachartstrconsts.rsdatapointclick +msgid "Data point click" +msgstr "Clic de point de donnée" + +#: tachartstrconsts.rsdatapointcrosshair +msgid "Data point crosshair" +msgstr "Viseur de point de donnée" + +#: tachartstrconsts.rsdatapointdrag +msgid "Data point drag" +msgstr "Glissement de point de donnée" + +#: tachartstrconsts.rsdatapointhint +msgid "Data point hint" +msgstr "Indicateur de point de données" + +#: tachartstrconsts.rsdelete +msgid "Delete" +msgstr "Supprimer" + +#: tachartstrconsts.rsdistancemeasurement +msgid "Distance measurement" +msgstr "Mesure des distances" + +#: tachartstrconsts.rsfunctionseries +msgid "Function series" +msgstr "Séries de fonctions" + +#: tachartstrconsts.rsinvalidlogbase +msgid "Logarithm base must be > 0 and <> 1." +msgstr "La base de logarithme doit être > 0 et <>1." + +#: tachartstrconsts.rsleastsquaresfitseries +msgid "Least-squares fit series" +msgstr "Séries de moindres carrés ajustés" + +#: tachartstrconsts.rslinear +msgid "Linear" +msgstr "Linéaire" + +#: tachartstrconsts.rslineseries +msgid "Line series" +msgstr "Séries de lignes" + +#: tachartstrconsts.rslogarithmic +msgid "Logarithmic" +msgstr "Logarithmique" + +#: tachartstrconsts.rsmanhattanplotseries +msgid "Manhattan plot series" +msgstr "Séries de points de Manhattan" + +#: tachartstrconsts.rsmovedown +msgid "Down" +msgstr "Bas" + +#: tachartstrconsts.rsmoveup +msgid "Up" +msgstr "Haut" + +#: tachartstrconsts.rsopenhighlowcloseseries +msgid "Open-high-low-close series" +msgstr "Séries ouverture-max-min-clôture" + +#: tachartstrconsts.rspanningbyclick +msgid "Panning by click" +msgstr "Panoramique par clic" + +#: tachartstrconsts.rspanningbydrag +msgid "Panning by drag" +msgstr "Panoramique par glissement" + +#: tachartstrconsts.rspanningbymousewheel +msgid "Panning by mouse wheel" +msgstr "Panoramique par molette de la souris" + +#: tachartstrconsts.rsparametriccurveseries +msgid "Parametric curve series" +msgstr "Séries de courbes paramétriques" + +#: tachartstrconsts.rspieseries +msgid "Pie series" +msgstr "Séries de camemberts" + +#: tachartstrconsts.rspolarseries +msgid "Polar series" +msgstr "Séries polaires" + +#: tachartstrconsts.rsuserdefined +msgctxt "tachartstrconsts.rsuserdefined" +msgid "User-defined" +msgstr "Défini par l'utilisateur" + +#: tachartstrconsts.rsuserdefinedtool +msgctxt "tachartstrconsts.rsuserdefinedtool" +msgid "User-defined" +msgstr "Défini par l'utilisateur" + +#: tachartstrconsts.rsuserdrawnseries +msgid "User-drawn series" +msgstr "Séries personnalisées" + +#: tachartstrconsts.rszoombyclick +msgid "Zoom by click" +msgstr "Zoom sur clic" + +#: tachartstrconsts.rszoombydrag +msgid "Zoom by drag" +msgstr "Zoom sur déplacement" + +#: tachartstrconsts.rszoombymousewheel +msgid "Zoom by mouse-wheel" +msgstr "Zoom sur molette de la souris" + +#: tachartstrconsts.sesserieseditortitle +msgid "Edit series" +msgstr "Éditer les séries" + +#: tachartstrconsts.tasaxistransformseditortitle +msgid "Edit axis transformations" +msgstr "Éditer les transformations d'axes" + +#: tachartstrconsts.tasfailedsubcomponentrename +msgid "Failed to rename components: %s" +msgstr "Impossible de renommer les composants : %s" + +#: tachartstrconsts.tastoolseditortitle +msgid "Edit tools" +msgstr "Éditer les outils" + diff -Nru lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.hu.po lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.hu.po --- lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.hu.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.hu.po 2016-01-06 23:28:59.000000000 +0000 @@ -0,0 +1,206 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Péter Gábor \n" +"Language-Team: Magyar (Hungarian)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: tachartstrconsts.descolor +msgid "Color" +msgstr "Szín" + +#: tachartstrconsts.desdatapointeditor +msgid "DataPoints editor" +msgstr "Adatpontok szerkesztése" + +#: tachartstrconsts.desdeleterow +msgid "Delete row" +msgstr "Sor törlése" + +#: tachartstrconsts.desinsertrow +msgid "Insert row" +msgstr "Sor beszúrása" + +#: tachartstrconsts.destext +msgid "Text" +msgstr "Szöveg" + +#: tachartstrconsts.rsadd +msgid "Add" +msgstr "Hozzáadás" + +#: tachartstrconsts.rsareaseries +msgid "Area series" +msgstr "Terület" + +#: tachartstrconsts.rsautoscale +msgid "Auto scale" +msgstr "Automatikus méretezés" + +#: tachartstrconsts.rsbarseries +msgid "Bar series" +msgstr "Sávok" + +#: tachartstrconsts.rsboxandwhiskerseries +msgid "Box-and-whiskers series" +msgstr "Bajszos dobozok" + +#: tachartstrconsts.rsbsplineseries +msgid "B-Spline series" +msgstr "B-Spline" + +#: tachartstrconsts.rsbubbleseries +msgid "Bubble series" +msgstr "Buborékok" + +#: tachartstrconsts.rscolormapseries +msgid "Color map series" +msgstr "Színtérkép" + +#: tachartstrconsts.rsconstantline +msgid "Constant line" +msgstr "Folyamatos vonal" + +#: tachartstrconsts.rscubicsplineseries +msgid "Cubic spline series" +msgstr "Cubic Spline" + +#: tachartstrconsts.rscumulativenormaldistribution +msgid "Cumulative normal distribution" +msgstr "Halmozott normális eloszlás" + +#: tachartstrconsts.rsdatapointclick +msgid "Data point click" +msgstr "Adatpontra kattintás" + +#: tachartstrconsts.rsdatapointcrosshair +msgid "Data point crosshair" +msgstr "Adatpontra mutatás" + +#: tachartstrconsts.rsdatapointdrag +msgid "Data point drag" +msgstr "Adatpont húzása" + +#: tachartstrconsts.rsdatapointhint +msgid "Data point hint" +msgstr "Adatpont tipp" + +#: tachartstrconsts.rsdelete +msgid "Delete" +msgstr "Törlés" + +#: tachartstrconsts.rsdistancemeasurement +msgid "Distance measurement" +msgstr "Távolságmérés" + +#: tachartstrconsts.rsfunctionseries +msgid "Function series" +msgstr "Függvény" + +#: tachartstrconsts.rsinvalidlogbase +msgid "Logarithm base must be > 0 and <> 1." +msgstr "A logaritmus alapja > 0 és <> 1 lehet." + +#: tachartstrconsts.rsleastsquaresfitseries +msgid "Least-squares fit series" +msgstr "Legkisebb illeszkedő négyzetek" + +#: tachartstrconsts.rslinear +msgid "Linear" +msgstr "Lineáris" + +#: tachartstrconsts.rslineseries +msgid "Line series" +msgstr "Vonal" + +#: tachartstrconsts.rslogarithmic +msgid "Logarithmic" +msgstr "Logaritmikus" + +#: tachartstrconsts.rsmanhattanplotseries +msgid "Manhattan plot series" +msgstr "Manhattan ábra" + +#: tachartstrconsts.rsmovedown +msgid "Down" +msgstr "Le" + +#: tachartstrconsts.rsmoveup +msgid "Up" +msgstr "Fel" + +#: tachartstrconsts.rsopenhighlowcloseseries +msgid "Open-high-low-close series" +msgstr "Nyitó-max-min-záró értékek" + +#: tachartstrconsts.rspanningbyclick +msgid "Panning by click" +msgstr "Eltolás kattintással" + +#: tachartstrconsts.rspanningbydrag +msgid "Panning by drag" +msgstr "Eltolás húzással" + +#: tachartstrconsts.rspanningbymousewheel +msgid "Panning by mouse wheel" +msgstr "Eltolás egérgörgővel" + +#: tachartstrconsts.rsparametriccurveseries +msgid "Parametric curve series" +msgstr "Parametrikus görbe" + +#: tachartstrconsts.rspieseries +msgid "Pie series" +msgstr "Tortaszeletek" + +#: tachartstrconsts.rspolarseries +msgid "Polar series" +msgstr "Polár" + +#: tachartstrconsts.rsuserdefined +msgctxt "tachartstrconsts.rsuserdefined" +msgid "User-defined" +msgstr "Felhasználó által megadva" + +#: tachartstrconsts.rsuserdefinedtool +msgctxt "tachartstrconsts.rsuserdefinedtool" +msgid "User-defined" +msgstr "Felhasználó által megadva" + +#: tachartstrconsts.rsuserdrawnseries +msgid "User-drawn series" +msgstr "Felhasználó által rajzolva" + +#: tachartstrconsts.rszoombyclick +msgid "Zoom by click" +msgstr "Nagyítás kattintással" + +#: tachartstrconsts.rszoombydrag +msgid "Zoom by drag" +msgstr "Nagyítás húzással" + +#: tachartstrconsts.rszoombymousewheel +msgid "Zoom by mouse-wheel" +msgstr "Nagyítás egérgögővel" + +#: tachartstrconsts.sesserieseditortitle +msgid "Edit series" +msgstr "Adatmegjelenítés szerkesztése" + +#: tachartstrconsts.tasaxistransformseditortitle +msgid "Edit axis transformations" +msgstr "Tengelyértelmezések szerkesztése" + +#: tachartstrconsts.tasfailedsubcomponentrename +msgid "Failed to rename components: %s" +msgstr "Nem sikerült átnevezni a komponenseket: %s" + +#: tachartstrconsts.tastoolseditortitle +msgid "Edit tools" +msgstr "Eszközök szerkesztése" diff -Nru lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.po lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.po --- lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.po 2015-12-23 23:49:40.000000000 +0000 @@ -0,0 +1,197 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: tachartstrconsts.descolor +msgid "Color" +msgstr "" + +#: tachartstrconsts.desdatapointeditor +msgid "DataPoints editor" +msgstr "" + +#: tachartstrconsts.desdeleterow +msgid "Delete row" +msgstr "" + +#: tachartstrconsts.desinsertrow +msgid "Insert row" +msgstr "" + +#: tachartstrconsts.destext +msgid "Text" +msgstr "" + +#: tachartstrconsts.rsadd +msgid "Add" +msgstr "" + +#: tachartstrconsts.rsareaseries +msgid "Area series" +msgstr "" + +#: tachartstrconsts.rsautoscale +msgid "Auto scale" +msgstr "" + +#: tachartstrconsts.rsbarseries +msgid "Bar series" +msgstr "" + +#: tachartstrconsts.rsboxandwhiskerseries +msgid "Box-and-whiskers series" +msgstr "" + +#: tachartstrconsts.rsbsplineseries +msgid "B-Spline series" +msgstr "" + +#: tachartstrconsts.rsbubbleseries +msgid "Bubble series" +msgstr "" + +#: tachartstrconsts.rscolormapseries +msgid "Color map series" +msgstr "" + +#: tachartstrconsts.rsconstantline +msgid "Constant line" +msgstr "" + +#: tachartstrconsts.rscubicsplineseries +msgid "Cubic spline series" +msgstr "" + +#: tachartstrconsts.rscumulativenormaldistribution +msgid "Cumulative normal distribution" +msgstr "" + +#: tachartstrconsts.rsdatapointclick +msgid "Data point click" +msgstr "" + +#: tachartstrconsts.rsdatapointcrosshair +msgid "Data point crosshair" +msgstr "" + +#: tachartstrconsts.rsdatapointdrag +msgid "Data point drag" +msgstr "" + +#: tachartstrconsts.rsdatapointhint +msgid "Data point hint" +msgstr "" + +#: tachartstrconsts.rsdelete +msgid "Delete" +msgstr "" + +#: tachartstrconsts.rsdistancemeasurement +msgid "Distance measurement" +msgstr "" + +#: tachartstrconsts.rsfunctionseries +msgid "Function series" +msgstr "" + +#: tachartstrconsts.rsinvalidlogbase +msgid "Logarithm base must be > 0 and <> 1." +msgstr "" + +#: tachartstrconsts.rsleastsquaresfitseries +msgid "Least-squares fit series" +msgstr "" + +#: tachartstrconsts.rslinear +msgid "Linear" +msgstr "" + +#: tachartstrconsts.rslineseries +msgid "Line series" +msgstr "" + +#: tachartstrconsts.rslogarithmic +msgid "Logarithmic" +msgstr "" + +#: tachartstrconsts.rsmanhattanplotseries +msgid "Manhattan plot series" +msgstr "" + +#: tachartstrconsts.rsmovedown +msgid "Down" +msgstr "" + +#: tachartstrconsts.rsmoveup +msgid "Up" +msgstr "" + +#: tachartstrconsts.rsopenhighlowcloseseries +msgid "Open-high-low-close series" +msgstr "" + +#: tachartstrconsts.rspanningbyclick +msgid "Panning by click" +msgstr "" + +#: tachartstrconsts.rspanningbydrag +msgid "Panning by drag" +msgstr "" + +#: tachartstrconsts.rspanningbymousewheel +msgid "Panning by mouse wheel" +msgstr "" + +#: tachartstrconsts.rsparametriccurveseries +msgid "Parametric curve series" +msgstr "" + +#: tachartstrconsts.rspieseries +msgid "Pie series" +msgstr "" + +#: tachartstrconsts.rspolarseries +msgid "Polar series" +msgstr "" + +#: tachartstrconsts.rsuserdefined +msgctxt "tachartstrconsts.rsuserdefined" +msgid "User-defined" +msgstr "" + +#: tachartstrconsts.rsuserdefinedtool +msgctxt "tachartstrconsts.rsuserdefinedtool" +msgid "User-defined" +msgstr "" + +#: tachartstrconsts.rsuserdrawnseries +msgid "User-drawn series" +msgstr "" + +#: tachartstrconsts.rszoombyclick +msgid "Zoom by click" +msgstr "" + +#: tachartstrconsts.rszoombydrag +msgid "Zoom by drag" +msgstr "" + +#: tachartstrconsts.rszoombymousewheel +msgid "Zoom by mouse-wheel" +msgstr "" + +#: tachartstrconsts.sesserieseditortitle +msgid "Edit series" +msgstr "" + +#: tachartstrconsts.tasaxistransformseditortitle +msgid "Edit axis transformations" +msgstr "" + +#: tachartstrconsts.tasfailedsubcomponentrename +msgid "Failed to rename components: %s" +msgstr "" + +#: tachartstrconsts.tastoolseditortitle +msgid "Edit tools" +msgstr "" + diff -Nru lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.ru.po lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.ru.po --- lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.ru.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.ru.po 2015-12-23 23:49:40.000000000 +0000 @@ -0,0 +1,206 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Maxim Ganetsky \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" + +#: tachartstrconsts.descolor +msgid "Color" +msgstr "Цвет" + +#: tachartstrconsts.desdatapointeditor +msgid "DataPoints editor" +msgstr "Редактор величин" + +#: tachartstrconsts.desdeleterow +msgid "Delete row" +msgstr "Удалить строку" + +#: tachartstrconsts.desinsertrow +msgid "Insert row" +msgstr "Вставить строку" + +#: tachartstrconsts.destext +msgid "Text" +msgstr "Текст" + +#: tachartstrconsts.rsadd +msgid "Add" +msgstr "Добавить" + +#: tachartstrconsts.rsareaseries +msgid "Area series" +msgstr "Диаграмма с областями" + +#: tachartstrconsts.rsautoscale +msgid "Auto scale" +msgstr "Автоматический масштаб" + +#: tachartstrconsts.rsbarseries +msgid "Bar series" +msgstr "Гистограмма" + +#: tachartstrconsts.rsboxandwhiskerseries +msgid "Box-and-whiskers series" +msgstr "Диаграмма размаха" + +#: tachartstrconsts.rsbsplineseries +msgid "B-Spline series" +msgstr "Диаграмма с B-сплайнами" + +#: tachartstrconsts.rsbubbleseries +msgid "Bubble series" +msgstr "Пузырьковая диаграмма" + +#: tachartstrconsts.rscolormapseries +msgid "Color map series" +msgstr "Диаграмма с картой цветов" + +#: tachartstrconsts.rsconstantline +msgid "Constant line" +msgstr "Линия постоянной" + +#: tachartstrconsts.rscubicsplineseries +msgid "Cubic spline series" +msgstr "Диаграмма с кубическими сплайнами" + +#: tachartstrconsts.rscumulativenormaldistribution +msgid "Cumulative normal distribution" +msgstr "Масштаб нормального распределения" + +#: tachartstrconsts.rsdatapointclick +msgid "Data point click" +msgstr "Щелчок по величине" + +#: tachartstrconsts.rsdatapointcrosshair +msgid "Data point crosshair" +msgstr "Перекрестие для величины" + +#: tachartstrconsts.rsdatapointdrag +msgid "Data point drag" +msgstr "Перетаскивание величины" + +#: tachartstrconsts.rsdatapointhint +msgid "Data point hint" +msgstr "Всплывающая подсказка для величины" + +#: tachartstrconsts.rsdelete +msgid "Delete" +msgstr "Удалить" + +#: tachartstrconsts.rsdistancemeasurement +msgid "Distance measurement" +msgstr "Измерение расстояния" + +#: tachartstrconsts.rsfunctionseries +msgid "Function series" +msgstr "Диаграмма по функции" + +#: tachartstrconsts.rsinvalidlogbase +msgid "Logarithm base must be > 0 and <> 1." +msgstr "Основание логарифма должно быть больше нуля и не равно единице." + +#: tachartstrconsts.rsleastsquaresfitseries +msgid "Least-squares fit series" +msgstr "Диаграмма по методу наименьших квадратов" + +#: tachartstrconsts.rslinear +msgid "Linear" +msgstr "Линейный масштаб" + +#: tachartstrconsts.rslineseries +msgid "Line series" +msgstr "График" + +#: tachartstrconsts.rslogarithmic +msgid "Logarithmic" +msgstr "Логарифмический масштаб" + +#: tachartstrconsts.rsmanhattanplotseries +msgid "Manhattan plot series" +msgstr "Манхэттенская диаграмма" + +#: tachartstrconsts.rsmovedown +msgid "Down" +msgstr "Вниз" + +#: tachartstrconsts.rsmoveup +msgid "Up" +msgstr "Вверх" + +#: tachartstrconsts.rsopenhighlowcloseseries +msgid "Open-high-low-close series" +msgstr "Биржевая диаграмма" + +#: tachartstrconsts.rspanningbyclick +msgid "Panning by click" +msgstr "Панорамирование щелчком" + +#: tachartstrconsts.rspanningbydrag +msgid "Panning by drag" +msgstr "Панорамирование перетаскиванием" + +#: tachartstrconsts.rspanningbymousewheel +msgid "Panning by mouse wheel" +msgstr "Панорамирование колёсиком мыши" + +#: tachartstrconsts.rsparametriccurveseries +msgid "Parametric curve series" +msgstr "Диаграмма с параметрическими кривыми" + +#: tachartstrconsts.rspieseries +msgid "Pie series" +msgstr "Круговая диаграмма" + +#: tachartstrconsts.rspolarseries +msgid "Polar series" +msgstr "Лепестковая диаграмма" + +#: tachartstrconsts.rsuserdefined +msgctxt "tachartstrconsts.rsuserdefined" +msgid "User-defined" +msgstr "Пользовательский масштаб" + +#: tachartstrconsts.rsuserdefinedtool +msgctxt "tachartstrconsts.rsuserdefinedtool" +msgid "User-defined" +msgstr "Пользовательское средство" + +#: tachartstrconsts.rsuserdrawnseries +msgid "User-drawn series" +msgstr "Пользовательская диаграмма" + +#: tachartstrconsts.rszoombyclick +msgid "Zoom by click" +msgstr "Изменение масштаба щелчком" + +#: tachartstrconsts.rszoombydrag +msgid "Zoom by drag" +msgstr "Изменение масштаба перетаскиванием" + +#: tachartstrconsts.rszoombymousewheel +msgid "Zoom by mouse-wheel" +msgstr "Изменение масштаба колёсиком мыши" + +#: tachartstrconsts.sesserieseditortitle +msgid "Edit series" +msgstr "Редактор диаграмм" + +#: tachartstrconsts.tasaxistransformseditortitle +msgid "Edit axis transformations" +msgstr "Редактор масштабов осей" + +#: tachartstrconsts.tasfailedsubcomponentrename +msgid "Failed to rename components: %s" +msgstr "Невозможно переименовать компоненты: %s" + +#: tachartstrconsts.tastoolseditortitle +msgid "Edit tools" +msgstr "Редактор средств диаграмм" diff -Nru lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.se.po lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.se.po --- lazarus-1.4.4+dfsg/components/tachart/languages/tachartstrconsts.se.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/languages/tachartstrconsts.se.po 2015-12-23 23:49:40.000000000 +0000 @@ -0,0 +1,212 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: tachartlazaruspkg\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: se\n" +"X-Generator: Poedit 1.8.6\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: tachartstrconsts.descolor +msgid "Color" +msgstr "Färg" + +#: tachartstrconsts.desdatapointeditor +msgid "DataPoints editor" +msgstr "Redigera datapunkter" + +#: tachartstrconsts.desdeleterow +msgid "Delete row" +msgstr "" + +#: tachartstrconsts.desinsertrow +msgid "Insert row" +msgstr "" + +#: tachartstrconsts.destext +msgid "Text" +msgstr "Text" + +#: tachartstrconsts.rsadd +msgid "Add" +msgstr "Lägg till" + +#: tachartstrconsts.rsareaseries +msgid "Area series" +msgstr "Områdesdiagram" + +#: tachartstrconsts.rsautoscale +msgid "Auto scale" +msgstr "Autoskala" + +#: tachartstrconsts.rsbarseries +msgid "Bar series" +msgstr "Stapeldiagram" + +#: tachartstrconsts.rsboxandwhiskerseries +msgid "Box-and-whiskers series" +msgstr "Box-and-whiskers diagram" + +#: tachartstrconsts.rsbsplineseries +msgid "B-Spline series" +msgstr "B-Spline diagram" + +#: tachartstrconsts.rsbubbleseries +#, fuzzy +#| msgid "Bubbel series" +msgid "Bubble series" +msgstr "Bubbeldiagram" + +#: tachartstrconsts.rscolormapseries +msgid "Color map series" +msgstr "Färglandskap" + +#: tachartstrconsts.rsconstantline +msgid "Constant line" +msgstr "Konstant linje" + +#: tachartstrconsts.rscubicsplineseries +msgid "Cubic spline series" +msgstr "Kubisk spline" + +#: tachartstrconsts.rscumulativenormaldistribution +msgid "Cumulative normal distribution" +msgstr "Kumulativ normalfördelning" + +#: tachartstrconsts.rsdatapointclick +msgid "Data point click" +msgstr "Klicka på datapunkt" + +#: tachartstrconsts.rsdatapointcrosshair +msgid "Data point crosshair" +msgstr "Hårkors för datapunkter" + +#: tachartstrconsts.rsdatapointdrag +msgid "Data point drag" +msgstr "Flytta datapunkt" + +#: tachartstrconsts.rsdatapointhint +msgid "Data point hint" +msgstr "Datapunkt tips" + +#: tachartstrconsts.rsdelete +msgid "Delete" +msgstr "Radera" + +#: tachartstrconsts.rsdistancemeasurement +msgid "Distance measurement" +msgstr "Avståndsmätning" + +#: tachartstrconsts.rsfunctionseries +msgid "Function series" +msgstr "Funktionskurva" + +#: tachartstrconsts.rsinvalidlogbase +msgid "Logarithm base must be > 0 and <> 1." +msgstr "" + +#: tachartstrconsts.rsleastsquaresfitseries +msgid "Least-squares fit series" +msgstr "Least-squares fit kurva" + +#: tachartstrconsts.rslinear +msgid "Linear" +msgstr "Linjär" + +#: tachartstrconsts.rslineseries +msgid "Line series" +msgstr "Linjediagram" + +#: tachartstrconsts.rslogarithmic +msgid "Logarithmic" +msgstr "Logaritmisk" + +#: tachartstrconsts.rsmanhattanplotseries +msgid "Manhattan plot series" +msgstr "Manhattan plot" + +#: tachartstrconsts.rsmovedown +msgid "Down" +msgstr "Ner" + +#: tachartstrconsts.rsmoveup +msgid "Up" +msgstr "Upp" + +#: tachartstrconsts.rsopenhighlowcloseseries +msgid "Open-high-low-close series" +msgstr "Först-högst-lägst-sist kurva" + +#: tachartstrconsts.rspanningbyclick +msgid "Panning by click" +msgstr "Panorera med klick" + +#: tachartstrconsts.rspanningbydrag +msgid "Panning by drag" +msgstr "Panorera med drag" + +#: tachartstrconsts.rspanningbymousewheel +msgid "Panning by mouse wheel" +msgstr "Panorera med mushjul" + +#: tachartstrconsts.rsparametriccurveseries +msgid "Parametric curve series" +msgstr "parametrisk kurva" + +#: tachartstrconsts.rspieseries +msgid "Pie series" +msgstr "Cirkeldiagram" + +#: tachartstrconsts.rspolarseries +msgid "Polar series" +msgstr "Polardiagram" + +#: tachartstrconsts.rsuserdefined +msgctxt "tachartstrconsts.rsuserdefined" +msgid "User-defined" +msgstr "Användardefinierad" + +#: tachartstrconsts.rsuserdefinedtool +#, fuzzy +msgctxt "tachartstrconsts.rsuserdefinedtool" +msgid "User-defined" +msgstr "Användardefinierad" + +#: tachartstrconsts.rsuserdrawnseries +msgid "User-drawn series" +msgstr "Användardefinierat diagram" + +#: tachartstrconsts.rszoombyclick +msgid "Zoom by click" +msgstr "Zooma med klick" + +#: tachartstrconsts.rszoombydrag +msgid "Zoom by drag" +msgstr "Zooma med drag" + +#: tachartstrconsts.rszoombymousewheel +msgid "Zoom by mouse-wheel" +msgstr "Zooma med mushjul" + +#: tachartstrconsts.sesserieseditortitle +msgid "Edit series" +msgstr "Redigera diagram" + +#: tachartstrconsts.tasaxistransformseditortitle +msgid "Edit axis transformations" +msgstr "Redigera axelomvandlingar" + +#: tachartstrconsts.tasfailedsubcomponentrename +#, c-format +msgid "Failed to rename components: %s" +msgstr "Namnbyte av komponent misslyckades: %s" + +#: tachartstrconsts.tastoolseditortitle +msgid "Edit tools" +msgstr "Redigera verktyg" + diff -Nru lazarus-1.4.4+dfsg/components/tachart/tachartaxis.pas lazarus-1.6+dfsg/components/tachart/tachartaxis.pas --- lazarus-1.4.4+dfsg/components/tachart/tachartaxis.pas 2015-07-09 22:27:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tachartaxis.pas 2015-07-09 16:13:01.000000000 +0000 @@ -600,6 +600,8 @@ FValueMax := GetTransform.AxisToGraph(axisMax); FMinForMarks := Min(FMinForMarks, GetTransform.AxisToGraph(d.FMin)); FMaxForMarks := Max(FMaxForMarks, GetTransform.AxisToGraph(d.FMax)); + EnsureOrder(FValueMin, FValueMax); + EnsureOrder(FMinForMarks, FMaxForMarks); end; if Assigned(FOnMarkToText) then diff -Nru lazarus-1.4.4+dfsg/components/tachart/tachartlazaruspkg.lpk lazarus-1.6+dfsg/components/tachart/tachartlazaruspkg.lpk --- lazarus-1.4.4+dfsg/components/tachart/tachartlazaruspkg.lpk 2014-11-19 10:24:39.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tachartlazaruspkg.lpk 2015-12-17 21:49:22.000000000 +0000 @@ -3,6 +3,7 @@ + @@ -28,7 +29,7 @@ for details about the copyright. "/> - + @@ -235,9 +236,17 @@ + + + + - + + + + + diff -Nru lazarus-1.4.4+dfsg/components/tachart/tachartlazaruspkg.pas lazarus-1.6+dfsg/components/tachart/tachartlazaruspkg.pas --- lazarus-1.4.4+dfsg/components/tachart/tachartlazaruspkg.pas 2014-10-19 22:27:57.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tachartlazaruspkg.pas 2015-12-17 21:49:22.000000000 +0000 @@ -16,7 +16,7 @@ TAToolEditors, TAMath, TAChartImageList, TAChartTeeChart, TADataTools, TAAnimatedSource, TATextElements, TAAxisSource, TASeriesPropEditors, TACustomFuncSeries, TAFitUtils, TAGUIConnector, TADiagram, TADiagramDrawing, - TADiagramLayout, LazarusPackageIntf; + TADiagramLayout, TAChartStrConsts, LazarusPackageIntf; implementation diff -Nru lazarus-1.4.4+dfsg/components/tachart/tachartlistbox.pas lazarus-1.6+dfsg/components/tachart/tachartlistbox.pas --- lazarus-1.4.4+dfsg/components/tachart/tachartlistbox.pas 2014-09-11 07:12:58.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tachartlistbox.pas 2015-05-06 17:21:32.000000000 +0000 @@ -470,20 +470,42 @@ OnPopulate if you don't omit special series from the listbox (RemoveSeries) } var li: TLegendItem; + list: TFPList; + ser: TCustomChartSeries; + i, idx: Integer; begin Items.BeginUpdate; + list := TFPList.Create; try + // In case of multiselect, the selected items would get lost here. + // Store series belonging to selected items in temporary list + for i:=0 to Items.Count-1 do + if Selected[i] then begin + li := TLegendItem(Items.Objects[i]); + if (li <> nil) and (li.Owner is TCustomChartSeries) then begin + ser := TCustomChartSeries(li.Owner); + list.Add(ser); + end; + end; + Items.Clear; if (FChart = nil) or (FChart.Series = nil) then exit; FreeAndNil(FLegendItems); FLegendItems := CreateLegendItems; Chart.Legend.SortItemsByOrder(FLegendItems); - for li in FLegendItems do + for li in FLegendItems do begin // The caption is owner-drawn, but add it anyway for user convenience. - Items.AddObject(li.Text, li); + idx := Items.AddObject(li.Text, li); + // Restore selected state from temporary list + if (li.Owner is TCustomChartSeries) then begin + ser := TCustomChartSeries(li.Owner); + if list.IndexOf(ser) <> -1 then Selected[idx] := true; + end; + end; if Assigned(OnPopulate) then OnPopulate(Self); finally + list.Free; Items.EndUpdate; end; end; diff -Nru lazarus-1.4.4+dfsg/components/tachart/tachartstrconsts.pas lazarus-1.6+dfsg/components/tachart/tachartstrconsts.pas --- lazarus-1.4.4+dfsg/components/tachart/tachartstrconsts.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tachartstrconsts.pas 2015-12-23 23:49:40.000000000 +0000 @@ -0,0 +1,76 @@ +unit TAChartStrConsts; + +{$mode objfpc}{$H+} + +interface + +resourcestring + // Series types + rsAreaSeries = 'Area series'; + rsBarSeries = 'Bar series'; + rsBoxAndWhiskerSeries = 'Box-and-whiskers series'; + rsBubbleSeries = 'Bubble series'; + rsBSplineSeries = 'B-Spline series'; + rsColorMapSeries = 'Color map series'; + rsConstantLine = 'Constant line'; + rsCubicSplineSeries = 'Cubic spline series'; + rsFunctionSeries = 'Function series'; + rsLeastSquaresFitSeries = 'Least-squares fit series'; + rsLineSeries = 'Line series'; + rsManhattanPlotSeries = 'Manhattan plot series'; + rsOpenHighLowCloseSeries = 'Open-high-low-close series'; + rsParametricCurveSeries = 'Parametric curve series'; + rsPieSeries = 'Pie series'; + rsPolarSeries = 'Polar series'; + rsUserDrawnSeries = 'User-drawn series'; + + // Series editor + sesSeriesEditorTitle = 'Edit series'; + + // Data points editor + desDatapointEditor = 'DataPoints editor'; + desColor = 'Color'; + desText = 'Text'; + desInsertRow = 'Insert row'; + desDeleteRow = 'Delete row'; + + // Subcomponents editor + rsAdd = 'Add'; + rsDelete = 'Delete'; + rsMoveUp = 'Up'; + rsMoveDown = 'Down'; + + // Tool editor + tasToolsEditorTitle = 'Edit tools'; + + rsZoomByDrag = 'Zoom by drag'; + rsZoomByClick = 'Zoom by click'; + rsZoomByMousewheel = 'Zoom by mouse-wheel'; + rsPanningByDrag = 'Panning by drag'; + rsPanningByClick = 'Panning by click'; + rsPanningByMousewheel = 'Panning by mouse wheel'; + //rsReticule = 'Reticule'; + rsDataPointClick = 'Data point click'; + rsDataPointDrag = 'Data point drag'; + rsDataPointHint = 'Data point hint'; + rsDataPointCrossHair = 'Data point crosshair'; + rsUserDefinedTool = 'User-defined'; + rsDistanceMeasurement = 'Distance measurement'; + + // Transformations + tasAxisTransformsEditorTitle = 'Edit axis transformations'; + rsAutoScale = 'Auto scale'; + rsCumulativeNormalDistribution = 'Cumulative normal distribution'; + rsLinear = 'Linear'; + rsLogarithmic = 'Logarithmic'; + rsUserDefined = 'User-defined'; + rsInvalidLogBase = 'Logarithm base must be > 0 and <> 1.'; + + // ChartUtils + tasFailedSubcomponentRename = 'Failed to rename components: %s'; + + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/components/tachart/tachartutils.pas lazarus-1.6+dfsg/components/tachart/tachartutils.pas --- lazarus-1.4.4+dfsg/components/tachart/tachartutils.pas 2014-02-06 19:18:55.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tachartutils.pas 2015-12-17 21:49:22.000000000 +0000 @@ -256,6 +256,25 @@ property Item[AIndex: Integer]: TElem read GetItem; default; end; + PStr = ^String; // PString is declared in system and in objpas! + + TClassRegistryItem = class + FClass: TClass; + FCaption: String; + FCaptionPtr: PStr; + constructor Create(AClass: TClass; const ACaption: String); + constructor CreateRes(AClass: TClass; ACaptionPtr: PStr); + end; + + TClassRegistry = class(TFPList) + public + destructor Destroy; override; + procedure Clear; + function GetCaption(AIndex: Integer): String; + function GetClass(AIndex: Integer): TClass; + function IndexOfClass(AClass: TClass): Integer; + end; + const PUB_INT_SET_ALL = ''; PUB_INT_SET_EMPTY = '-'; @@ -329,13 +348,11 @@ DrawData: TDrawDataRegistry; ShowMessageProc: TShowMessageProc; -resourcestring - tasFailedSubcomponentRename = 'Failed to rename components: %s'; implementation uses - StrUtils, TypInfo; + StrUtils, TypInfo, TAChartStrConsts; const ORIENTATION_UNITS_PER_DEG = 10; @@ -971,6 +988,64 @@ end; end; + +{ TClassRegistryItem } + +constructor TClassRegistryItem.Create(AClass: TClass; const ACaption: String); +begin + FClass := AClass; + FCaption := ACaption; +end; + +constructor TClassRegistryItem.CreateRes(AClass: TClass; ACaptionPtr: PStr); +begin + FClass := AClass; + FCaptionPtr := ACaptionPtr; + if FCaptionPtr <> nil then FCaption := ACaptionPtr^; +end; + + +{ TClassRegistry } + +destructor TClassRegistry.Destroy; +begin + Clear; + inherited; +end; + +procedure TClassRegistry.Clear; +var + i: Integer; +begin + for i:= Count-1 downto 0 do + TObject(Items[i]).Free; + inherited; +end; + +function TClassRegistry.GetCaption(AIndex: Integer): String; +var + item: TClassRegistryItem; +begin + item := TClassRegistryItem(Items[AIndex]); + if item.FCaptionPtr <> nil then + Result := item.FCaptionPtr^ else + Result := item.FCaption; +end; + +function TClassRegistry.GetClass(AIndex: Integer): TClass; +begin + Result := TClassRegistryItem(Items[AIndex]).FClass; +end; + +function TClassRegistry.IndexOfClass(AClass: TClass): Integer; +begin + for Result := 0 to Count-1 do + if TClassRegistryItem(Items[Result]).FClass = AClass then + exit; + Result := -1; +end; + + initialization DrawData := TDrawDataRegistry.Create; diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadatatools.pas lazarus-1.6+dfsg/components/tachart/tadatatools.pas --- lazarus-1.4.4+dfsg/components/tachart/tadatatools.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadatatools.pas 2015-12-17 21:49:22.000000000 +0000 @@ -123,7 +123,7 @@ uses GraphMath, Math, SysUtils, Types, - TAChartAxis, TACustomSeries, TAGeometry; + TAChartStrConsts, TAChartAxis, TACustomSeries, TAGeometry; const DEF_DISTANCE_FORMAT = '%0:.9g'; @@ -407,7 +407,7 @@ initialization - RegisterChartToolClass(TDataPointDistanceTool, 'Distance measurement'); + RegisterChartToolClass(TDataPointDistanceTool, @rsDistanceMeasurement); end. diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadrawerbgra.pas lazarus-1.6+dfsg/components/tachart/tadrawerbgra.pas --- lazarus-1.4.4+dfsg/components/tachart/tadrawerbgra.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadrawerbgra.pas 2016-01-18 23:01:48.000000000 +0000 @@ -54,11 +54,13 @@ const APoints: array of TPoint; AStartIndex, ANumPts: Integer); procedure PrepareSimplePen(AColor: TChartColor); procedure PutImage(AX, AY: Integer; AImage: TFPCustomImage); override; + procedure PutPixel(AX, AY: Integer; AColor: TChartColor); override; procedure RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; procedure SetBrushColor(AColor: TChartColor); procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor); procedure SetPenParams(AStyle: TFPPenStyle; AColor: TChartColor); @@ -190,6 +192,11 @@ Canvas.Colors[AX + x, AY + y] := AImage[x, y]; end; +procedure TBGRABitmapDrawer.PutPixel(AX, AY: Integer; AColor: TChartColor); +begin + Canvas.Pixels[AX, AY] := AColor; +end; + procedure TBGRABitmapDrawer.RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); begin @@ -208,6 +215,11 @@ Rectangle(Left, Top, Right, Bottom) end; +procedure TBGRABitmapDrawer.ResetFont; +begin + Canvas.Font.Orientation := 0; +end; + procedure TBGRABitmapDrawer.SetAntialiasingMode(AValue: TChartAntialiasingMode); begin Canvas.AntialiasingMode := TAntialiasingMode(AValue); diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadrawercanvas.pas lazarus-1.6+dfsg/components/tachart/tadrawercanvas.pas --- lazarus-1.4.4+dfsg/components/tachart/tadrawercanvas.pas 2014-03-30 19:51:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadrawercanvas.pas 2016-01-18 23:01:48.000000000 +0000 @@ -59,11 +59,13 @@ const APoints: array of TPoint; AStartIndex, ANumPts: Integer); procedure PrepareSimplePen(AColor: TChartColor); procedure PutImage(AX, AY: Integer; AImage: TFPCustomImage); override; + procedure PutPixel(AX, AY: Integer; AColor: TChartColor); override; procedure RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; procedure SetAntialiasingMode(AValue: TChartAntialiasingMode); procedure SetBrushColor(AColor: TChartColor); procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor); @@ -240,6 +242,11 @@ end; end; +procedure TCanvasDrawer.PutPixel(AX, AY: Integer; AColor: TChartColor); +begin + GetCanvas.Pixels[AX, AY] := AColor; +end; + procedure TCanvasDrawer.RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); @@ -258,6 +265,11 @@ GetCanvas.Rectangle(ARect); end; +procedure TCanvasDrawer.ResetFont; +begin + GetCanvas.Font.Orientation := 0; +end; + procedure TCanvasDrawer.SetAntialiasingMode(AValue: TChartAntialiasingMode); begin GetCanvas.AntialiasingMode := TAntialiasingMode(AValue); diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadrawerfpcanvas.pas lazarus-1.6+dfsg/components/tachart/tadrawerfpcanvas.pas --- lazarus-1.4.4+dfsg/components/tachart/tadrawerfpcanvas.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadrawerfpcanvas.pas 2016-01-18 23:01:48.000000000 +0000 @@ -59,11 +59,13 @@ procedure Polyline( const APoints: array of TPoint; AStartIndex, ANumPts: Integer); procedure PrepareSimplePen(AColor: TChartColor); + procedure PutPixel(AX, AY: Integer; AColor: TChartColor); procedure RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; procedure SetBrushColor(AColor: TChartColor); procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor); procedure SetPenParams(AStyle: TFPPenStyle; AColor: TChartColor); @@ -203,6 +205,11 @@ FCanvas.Pen.Style := psSolid; end; +procedure TFPCanvasDrawer.PutPixel(AX, AY: Integer; AColor: TChartColor); +begin + FCanvas.Colors[AX, AY] := FChartColorToFPColorFunc(AColor); +end; + procedure TFPCanvasDrawer.RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); var @@ -225,6 +232,11 @@ FCanvas.Rectangle(ARect); end; +procedure TFPCanvasDrawer.ResetFont; +begin + FCanvas.Font.Orientation := 0; +end; + procedure TFPCanvasDrawer.SetBrush(ABrush: TFPCustomBrush); begin AssignFPCanvasHelper(FCanvas.Brush, ABrush); diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadrawerfpvectorial.pas lazarus-1.6+dfsg/components/tachart/tadrawerfpvectorial.pas --- lazarus-1.4.4+dfsg/components/tachart/tadrawerfpvectorial.pas 2015-03-15 11:14:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadrawerfpvectorial.pas 2016-01-18 23:01:48.000000000 +0000 @@ -62,11 +62,13 @@ procedure Polyline( const APoints: array of TPoint; AStartIndex, ANumPts: Integer); procedure PrepareSimplePen(AColor: TChartColor); + procedure PutPixel(AX, AY: Integer; AColor: TChartColor); override; procedure RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; procedure SetBrushColor(AColor: TChartColor); procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor); procedure SetPenParams(AStyle: TFPPenStyle; AColor: TChartColor); @@ -241,6 +243,37 @@ FPenWidth := 1; end; +procedure TFPVectorialDrawer.PutPixel(AX, AY: Integer; AColor: TChartColor); +const + d = 0.2; +var + pencol: TFPColor; + penSty: TFPPenStyle; + brushCol: TFPColor; + brushSty: TFPBrushStyle; +begin + penCol := FPenColor; + penSty := FPenStyle; + brushCol := FBrushColor; + brushSty := FBrushStyle; + SetPenParams(psSolid, AColor); + SetBrushParams(bsSolid, AColor); + AY := InvertY(AY); + FCanvas.StartPath; + FCanvas.AddMoveToPath(AX-d, AY-d); + FCanvas.AddLineToPath(AX-d, AY+d); + FCanvas.AddLineTopath(AX+d, AY+d); + FCanvas.AddLineToPath(AX+d, AY-d); + FCanvas.AddLineToPath(AX-d, AY-d); + ApplyBrush; + ApplyPen; + FCanvas.EndPath; + FPenColor := penCol; + FPenStyle := penSty; + FBrushColor := brushCol; + FBrushStyle := brushSty; +end; + procedure TFPVectorialDrawer.RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); var @@ -271,6 +304,11 @@ Rectangle(Left, Top, Right, Bottom); end; +procedure TFPVectorialDrawer.ResetFont; +begin + FFont.Orientation := 0; +end; + procedure TFPVectorialDrawer.SetBrush(ABrush: TFPCustomBrush); begin if ABrush is TBrush then diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadraweropengl.pas lazarus-1.6+dfsg/components/tachart/tadraweropengl.pas --- lazarus-1.4.4+dfsg/components/tachart/tadraweropengl.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadraweropengl.pas 2016-01-18 23:01:48.000000000 +0000 @@ -61,6 +61,7 @@ AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; procedure SetAntialiasingMode(AValue: TChartAntialiasingMode); procedure SetBrushColor(AColor: TChartColor); procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor); @@ -215,6 +216,14 @@ FPenStyle := psSolid; end; +procedure TOpenGLDrawer.PutPixel(AX, AY: Integer; AColor: TChartColor); +begin + ChartGLColor(FChartColorToFPColorFunc(AColor)); + glBegin(GL_POINTS); + glVertex2i(AX, AY); + glEnd; +end; + procedure TOpenGLDrawer.RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); var @@ -246,6 +255,10 @@ Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom); end; +procedure TOpenGLDrawer.ResetFont; +begin +end; + procedure TOpenGLDrawer.SetAntialiasingMode(AValue: TChartAntialiasingMode); begin case AValue of diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadrawersvg.pas lazarus-1.6+dfsg/components/tachart/tadrawersvg.pas --- lazarus-1.4.4+dfsg/components/tachart/tadrawersvg.pas 2015-03-15 11:14:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadrawersvg.pas 2016-01-18 23:01:48.000000000 +0000 @@ -83,11 +83,13 @@ const APoints: array of TPoint; AStartIndex, ANumPts: Integer); procedure PrepareSimplePen(AColor: TChartColor); procedure PutImage(AX, AY: Integer; AImage: TFPCustomImage); override; + procedure PutPixel(AX, AY: Integer; AColor: TChartColor); override; procedure RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; procedure SetAntialiasingMode(AValue: TChartAntialiasingMode); procedure SetBrushColor(AColor: TChartColor); procedure SetBrushParams(AStyle: TFPBrushStyle; AColor: TChartColor); @@ -343,6 +345,14 @@ end; end; +procedure TSVGDrawer.PutPixel(AX, AY: Integer; AColor: TChartColor); +var + stroke: String; +begin + stroke := 'stroke:'+ColorToHex(FChartColorToFPColorFunc(ColorOrMono(AColor))) + ';stroke-width:1;'; + WriteFmt(RECT_FMT, [AX, AY, 1, 1, stroke]); +end; + procedure TSVGDrawer.RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); var @@ -369,6 +379,11 @@ Rectangle(Left, Top, Right, Bottom); end; +procedure TSVGDrawer.ResetFont; +begin + FFont.Orientation := 0; +end; + procedure TSVGDrawer.SetAntialiasingMode(AValue: TChartAntialiasingMode); const AM_TO_CSS: array [amOn .. amOff] of String = diff -Nru lazarus-1.4.4+dfsg/components/tachart/tadrawutils.pas lazarus-1.6+dfsg/components/tachart/tadrawutils.pas --- lazarus-1.4.4+dfsg/components/tachart/tadrawutils.pas 2014-03-30 16:23:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tadrawutils.pas 2016-01-18 23:01:48.000000000 +0000 @@ -84,11 +84,13 @@ const APoints: array of TPoint; AStartIndex, ANumPts: Integer); procedure PrepareSimplePen(AColor: TChartColor); procedure PutImage(AX, AY: Integer; AImage: TFPCustomImage); + procedure PutPixel(AX, AY: Integer; AColor: TChartColor); procedure RadialPie( AX1, AY1, AX2, AY2: Integer; AStartAngle16Deg, AAngleLength16Deg: Integer); procedure Rectangle(const ARect: TRect); procedure Rectangle(AX1, AY1, AX2, AY2: Integer); + procedure ResetFont; function Scale(ADistance: Integer): Integer; procedure SetAntialiasingMode(AValue: TChartAntialiasingMode); procedure SetBrushColor(AColor: TChartColor); @@ -146,6 +148,7 @@ procedure Polygon( const APoints: array of TPoint; AStartIndex, ANumPts: Integer); virtual; abstract; procedure PutImage(AX, AY: Integer; AImage: TFPCustomImage); virtual; + procedure PutPixel(AX, AY: Integer; AColor: TChartColor); virtual; function Scale(ADistance: Integer): Integer; virtual; procedure SetAntialiasingMode(AValue: TChartAntialiasingMode); procedure SetDoChartColorToFPColorFunc(AValue: TChartColorToFPColorFunc); @@ -356,6 +359,12 @@ Unused(AImage); end; +procedure TBasicDrawer.PutPixel(AX, AY: Integer; AColor: TChartColor); +begin + Unused(AX, AY); + Unused(AColor); +end; + function TBasicDrawer.Scale(ADistance: Integer): Integer; begin Result := ADistance; diff -Nru lazarus-1.4.4+dfsg/components/tachart/tafuncseries.pas lazarus-1.6+dfsg/components/tachart/tafuncseries.pas --- lazarus-1.4.4+dfsg/components/tachart/tafuncseries.pas 2015-05-15 21:55:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tafuncseries.pas 2015-12-17 21:49:22.000000000 +0000 @@ -247,6 +247,9 @@ TFitParamsState = (fpsUnknown, fpsInvalid, fpsValid); + TCalcGoodnessOfFitEvent = procedure (Sender: TObject; var x,y: ArbFloat; + n: Integer; out AResult: Double) of object; + TFitSeries = class(TBasicPointSeries) strict private FDrawFitRangeOnly: Boolean; @@ -257,6 +260,8 @@ FPen: TChartPen; FState: TFitParamsState; FStep: TFuncSeriesStep; + FGoodnessOfFit: Double; + FOnCalcGoodnessOfFit: TCalcGoodnessOfFitEvent; function GetParam(AIndex: Integer): Double; function GetParamCount: Integer; function PrepareIntervals: TIntervalList; @@ -272,6 +277,7 @@ procedure Transform(AX, AY: Double; out ANewX, ANewY: Extended); protected procedure AfterAdd; override; + function CalcGoodnessOfFit(var x,y: ArbFloat; n: Integer): Double; virtual; procedure GetLegendItems(AItems: TChartLegendItems); override; procedure SourceChanged(ASender: TObject); override; public @@ -289,26 +295,30 @@ const AParams: TNearestPointParams; out AResults: TNearestPointResults): Boolean; override; property Param[AIndex: Integer]: Double read GetParam write SetParam; + property GoodnessOfFit: Double read FGoodnessOfFit; property State: TFitParamsState read FState; published property AxisIndexX; property AxisIndexY; property DrawFitRangeOnly: Boolean read FDrawFitRangeOnly write SetDrawFitRangeOnly default true; - property FitEquation: TFitEquation read FFitEquation write SetFitEquation default fePolynomial; + property FitEquation: TFitEquation + read FFitEquation write SetFitEquation default fePolynomial; property FitRange: TChartRange read FFitRange write SetFitRange; - property OnFitComplete: TNotifyEvent read FOnFitComplete write FOnFitComplete; property ParamCount: Integer read GetParamCount write SetParamCount default DEF_FIT_PARAM_COUNT; property Pen: TChartPen read FPen write SetPen; property Source; property Step: TFuncSeriesStep read FStep write SetStep default DEF_FIT_STEP; + property OnCalcGoodnessOfFit: TCalcGoodnessOfFitEvent + read FOnCalcGoodnessOfFit write FOnCalcGoodnessOfFit; + property OnFitComplete: TNotifyEvent + read FOnFitComplete write FOnFitComplete; end; TFuncCalculate3DEvent = procedure (const AX, AY: Double; out AZ: Double) of object; - TColorMapSeries = class(TBasicFuncSeries) public type @@ -371,7 +381,7 @@ uses ipf, GraphType, IntfGraphics, Math, StrUtils, SysUtils, - TAGeometry, TAGraph, TAMath; + TAChartStrConsts, TAGeometry, TAGraph, TAMath; const DEF_PARAM_MIN = 0.0; @@ -1307,6 +1317,39 @@ FFitRange.SetOwner(ParentChart); end; +{ Calculates the R-squared parameter as a simple measure for the goodness-of-fit. + More advanced calculations require the standard deviation of the y values + which are not available. + Method can be overridden for more advanced calculations. + x and y are the first values of arrays containing the transformed values + used during fitting. n indicates the number of these value pairs. } +function TFitSeries.CalcGoodnessOfFit(var x,y: ArbFloat; n: Integer): Double; +type + TArbFloatArray = array[0..0] of Arbfloat; +var + yave, ycalc, SStot, SSres: Double; + i, j: Integer; +begin + {$PUSH} + {$R-} + yave := 0; + for i:=0 to n-1 do + yave := yave + TArbFloatArray(y)[i]; + yave := yave / n; + + SStot := 0.0; + SSres := 0.0; + for i:=0 to n-1 do begin + SStot := SStot + sqr(TArbFloatArray(y)[i] - yave); + ycalc := 0.0; + for j:=High(FFitParams) downto 0 do + ycalc := ycalc * TArbFloatArray(x)[i] + FFitParams[j]; + SSres := SSres + sqr(TArbFloatArray(y)[i] - ycalc); + end; + Result := 1.0 - SSres / SStot; + {$POP} +end; + function TFitSeries.Calculate(AX: Double): Double; var i: Integer; @@ -1357,6 +1400,7 @@ FPen.OnChange := @StyleChanged; FStep := DEF_FIT_STEP; ParamCount := DEF_FIT_PARAM_COUNT; // Parabolic fit as default. + FGoodnessOfFit := NaN; end; destructor TFitSeries.Destroy; @@ -1441,6 +1485,12 @@ for i := 0 to High(FFitParams) do FFitParams[i] := fp[i]; + // Calculate goodness-of-fit parameter + if Assigned(FOnCalcGoodnessOfFit) then + FOnCalcGoodnessOfFit(Self, xv[0], yv[0], Length(yv), FGoodnessOfFit) + else + FGoodnessOfFit := CalcGoodnessOfFit(xv[0], yv[0], Length(yv)); + // See comment for "Transform": for exponential and power fit equations, the // first fitted parameter is the logarithm of the "real" parameter. It needs // to be transformed back to real units by exp function. @@ -1890,12 +1940,12 @@ end; initialization - RegisterSeriesClass(TFuncSeries, 'Function series'); - RegisterSeriesClass(TParametricCurveSeries, 'Parametric curve series'); - RegisterSeriesClass(TBSplineSeries, 'B-Spline series'); - RegisterSeriesClass(TCubicSplineSeries, 'Cubic spline series'); - RegisterSeriesClass(TFitSeries, 'Least-squares fit series'); - RegisterSeriesClass(TColorMapSeries, 'Color map series'); + RegisterSeriesClass(TFuncSeries, @rsFunctionSeries); + RegisterSeriesClass(TParametricCurveSeries, @rsParametricCurveSeries); + RegisterSeriesClass(TBSplineSeries, @rsBSplineSeries); + RegisterSeriesClass(TCubicSplineSeries, @rsCubicSplineSeries); + RegisterSeriesClass(TFitSeries, @rsLeastSquaresFitSeries); + RegisterSeriesClass(TColorMapSeries, @rsColorMapSeries); end. diff -Nru lazarus-1.4.4+dfsg/components/tachart/tagraph.pas lazarus-1.6+dfsg/components/tachart/tagraph.pas --- lazarus-1.4.4+dfsg/components/tachart/tagraph.pas 2015-09-15 21:00:09.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tagraph.pas 2016-01-18 23:01:48.000000000 +0000 @@ -447,10 +447,11 @@ end; procedure Register; -procedure RegisterSeriesClass(ASeriesClass: TSeriesClass; const ACaption: string); +procedure RegisterSeriesClass(ASeriesClass: TSeriesClass; const ACaption: String); overload; +procedure RegisterSeriesClass(ASeriesClass: TSeriesClass; ACaptionPtr: PStr); overload; var - SeriesClassRegistry: TStringList; + SeriesClassRegistry: TClassRegistry = nil; OnInitBuiltinTools: function(AChart: TChart): TBasicChartToolset; implementation @@ -474,17 +475,22 @@ begin RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChart]); for i := 0 to SeriesClassRegistry.Count - 1 do begin - sc := TSeriesClass(SeriesClassRegistry.Objects[i]); + sc := TSeriesClass(SeriesClassRegistry.GetClass(i)); RegisterClass(sc); RegisterNoIcon([sc]); end; end; -procedure RegisterSeriesClass( - ASeriesClass: TSeriesClass; const ACaption: String); +procedure RegisterSeriesClass(ASeriesClass: TSeriesClass; const ACaption: String); begin - if SeriesClassRegistry.IndexOfObject(TObject(ASeriesClass)) < 0 then - SeriesClassRegistry.AddObject(ACaption, TObject(ASeriesClass)); + if SeriesClassRegistry.IndexOfClass(ASeriesClass) < 0 then + SeriesClassRegistry.Add(TClassRegistryItem.Create(ASeriesClass, ACaption)); +end; + +procedure RegisterSeriesClass(ASeriesClass: TSeriesClass; ACaptionPtr: PStr); +begin + if SeriesClassRegistry.IndexOfClass(ASeriesClass) < 0 then + SeriesClassRegistry.Add(TClassRegistryItem.CreateRes(ASeriesClass, ACaptionPtr)); end; procedure WriteComponentToStream(AStream: TStream; AComponent: TComponent); @@ -811,7 +817,6 @@ var ldd: TChartLegendDrawingData; s: TBasicChartSeries; - fnt: TFont; begin Prepare; @@ -825,7 +830,7 @@ FClipRect.Bottom -= Bottom; end; - with ClipRect do begin; + with ClipRect do begin FTitle.Measure(ADrawer, 1, Left, Right, Top); FFoot.Measure(ADrawer, -1, Left, Right, Bottom); end; @@ -836,6 +841,8 @@ try PrepareAxis(ADrawer); + if Legend.Visible and not Legend.UseSidebar then + Legend.Prepare(ldd, FClipRect); if (FPrevLogicalExtent <> FLogicalExtent) and Assigned(OnExtentChanging) then OnExtentChanging(Self); ADrawer.DrawingBegin(ARect); @@ -874,14 +881,8 @@ // Undo changes made by the drawer (mainly for printing). The user may print // something else after the chart and, for example, would not expect the font - // to be rotated. - // (Workaround for issue #0027163) - fnt := TFont.Create; // to effectively reset font orientation - try - ADrawer.Font := fnt; - finally - fnt.Free; - end; + // to be rotated (Fix for issue #0027163) + ADrawer.ResetFont; ADrawer.SetPenParams(psSolid, clDefault); ADrawer.SetBrushParams(bsSolid, clWhite); ADrawer.SetAntialiasingMode(amDontCare); @@ -985,7 +986,7 @@ exit; end; for i := 0 to SeriesClassRegistry.Count - 1 do begin - AClass := TSeriesClass(SeriesClassRegistry.Objects[i]); + AClass := TSeriesClass(SeriesClassRegistry.GetClass(i)); if AClass.ClassNameIs(AClassName) then exit; end; AClass := nil; @@ -1894,7 +1895,7 @@ initialization SkipObsoleteChartProperties; - SeriesClassRegistry := TStringList.Create; + SeriesClassRegistry := TClassRegistry.Create; ShowMessageProc := @ShowMessage; finalization diff -Nru lazarus-1.4.4+dfsg/components/tachart/taintervalsources.pas lazarus-1.6+dfsg/components/tachart/taintervalsources.pas --- lazarus-1.4.4+dfsg/components/tachart/taintervalsources.pas 2014-12-22 22:52:49.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/taintervalsources.pas 2015-06-26 09:49:19.000000000 +0000 @@ -314,6 +314,7 @@ AParams.FMin := AParams.FAxisToGraph(AParams.FMin); AParams.FMax := AParams.FAxisToGraph(AParams.FMax); end; + EnsureOrder(AParams.FMin, AParams.FMax); CalculateIntervals(AParams, start, step); if step <= 0 then exit; m := start; diff -Nru lazarus-1.4.4+dfsg/components/tachart/tamultiseries.pas lazarus-1.6+dfsg/components/tachart/tamultiseries.pas --- lazarus-1.4.4+dfsg/components/tachart/tamultiseries.pas 2015-01-12 23:35:28.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tamultiseries.pas 2015-12-17 21:49:22.000000000 +0000 @@ -189,7 +189,8 @@ implementation uses - FPCanvas, Math, SysUtils, TACustomSource, TAGeometry, TAGraph, TAMath; + FPCanvas, Math, SysUtils, + TAChartStrConsts, TACustomSource, TAGeometry, TAGraph, TAMath; type @@ -939,8 +940,8 @@ initialization - RegisterSeriesClass(TBubbleSeries, 'Bubble series'); - RegisterSeriesClass(TBoxAndWhiskerSeries, 'Box-and-whiskers series'); - RegisterSeriesClass(TOpenHighLowCloseSeries, 'Open-high-low-close series'); + RegisterSeriesClass(TBubbleSeries, @rsBubbleSeries); + RegisterSeriesClass(TBoxAndWhiskerSeries, @rsBoxAndWhiskerSeries); + RegisterSeriesClass(TOpenHighLowCloseSeries, @rsOpenHighLowCloseSeries); end. diff -Nru lazarus-1.4.4+dfsg/components/tachart/tanavigation.pas lazarus-1.6+dfsg/components/tachart/tanavigation.pas --- lazarus-1.4.4+dfsg/components/tachart/tanavigation.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tanavigation.pas 2015-11-12 04:35:51.000000000 +0000 @@ -320,12 +320,10 @@ function GraphRect(ARect: TDoubleRect): TRect; begin - with ARect do begin - a := a * FScale + FOffset; - b := b * FScale + FOffset; - Result := Rect( - Round(a.X), Height - Round(b.Y), Round(b.X), Height - Round(a.Y)); - end; + ARect.a := ARect.a * FScale + FOffset; + ARect.b := ARect.b * FScale + FOffset; + Result := Rect( + Round(ARect.a.X), Height - Round(ARect.b.Y), Round(ARect.b.X), Height - Round(ARect.a.Y)); end; var diff -Nru lazarus-1.4.4+dfsg/components/tachart/taradialseries.pas lazarus-1.6+dfsg/components/tachart/taradialseries.pas --- lazarus-1.4.4+dfsg/components/tachart/taradialseries.pas 2015-05-15 21:55:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/taradialseries.pas 2015-12-17 21:49:22.000000000 +0000 @@ -80,6 +80,7 @@ function TryRadius(ADrawer: IChartDrawer): TRect; protected procedure GetLegendItems(AItems: TChartLegendItems); override; + property Radius: Integer read FRadius; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -145,7 +146,7 @@ uses Math, - TACustomSource, TAGeometry, TAGraph; + TAChartStrConsts, TACustomSource, TAGeometry, TAGraph; { TPieSlice } @@ -672,7 +673,7 @@ initialization - RegisterSeriesClass(TPolarSeries, 'Polar series'); + RegisterSeriesClass(TPolarSeries, @rsPolarSeries); end. diff -Nru lazarus-1.4.4+dfsg/components/tachart/taseries.pas lazarus-1.6+dfsg/components/tachart/taseries.pas --- lazarus-1.4.4+dfsg/components/tachart/taseries.pas 2015-04-12 21:47:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/taseries.pas 2015-12-17 21:49:22.000000000 +0000 @@ -107,6 +107,8 @@ { TPieSeries } TPieSeries = class(TCustomPieSeries) + public + property Radius; published property EdgePen; property Depth; @@ -342,7 +344,7 @@ uses GraphMath, GraphType, IntfGraphics, LResources, Math, PropEdits, SysUtils, - TADrawerCanvas, TAGeometry, TAGraph, TAMath, TAStyles; + TAChartStrConsts, TADrawerCanvas, TAGeometry, TAGraph, TAMath, TAStyles; { TLineSeries } @@ -1494,14 +1496,14 @@ end; initialization - RegisterSeriesClass(TLineSeries, 'Line series'); - RegisterSeriesClass(TAreaSeries, 'Area series'); - RegisterSeriesClass(TBarSeries, 'Bar series'); - RegisterSeriesClass(TPieSeries, 'Pie series'); - RegisterSeriesClass(TUserDrawnSeries, 'User-drawn series'); - RegisterSeriesClass(TConstantLine, 'Constant line'); - RegisterSeriesClass(TManhattanSeries, 'Manhattan plot series'); - {$WARNINGS OFF}RegisterSeriesClass(TLine, '');{$WARNINGS ON} + RegisterSeriesClass(TLineSeries, @rsLineSeries); + RegisterSeriesClass(TAreaSeries, @rsAreaSeries); + RegisterSeriesClass(TBarSeries, @rsBarSeries); + RegisterSeriesClass(TPieSeries, @rsPieSeries); + RegisterSeriesClass(TUserDrawnSeries, @rsUserDrawnSeries); + RegisterSeriesClass(TConstantLine, @rsConstantLine); + RegisterSeriesClass(TManhattanSeries, @rsManhattanPlotSeries); +// {$WARNINGS OFF}RegisterSeriesClass(TLine, nil);{$WARNINGS ON} SkipObsoleteProperties; end. diff -Nru lazarus-1.4.4+dfsg/components/tachart/tatextelements.pas lazarus-1.6+dfsg/components/tachart/tatextelements.pas --- lazarus-1.4.4+dfsg/components/tachart/tatextelements.pas 2014-03-30 16:23:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tatextelements.pas 2015-11-16 23:40:20.000000000 +0000 @@ -163,6 +163,7 @@ strict private FAdditionalAngle: Double; FArrow: TChartArrow; + FLinkDistance: Integer; FAttachment: TChartMarkAttachment; FAutoMargins: Boolean; FFrame: _TFramePen; @@ -177,6 +178,7 @@ procedure SetFrame(AValue: _TFramePen); procedure SetLabelBrush(AValue: _TLabelBrush); procedure SetLabelFont(AValue: TFont); + procedure SetLinkDistance(AValue: Integer); procedure SetLinkPen(AValue: _TLinkPen); procedure SetStyle(AValue: TSeriesMarksStyle); procedure SetYIndex(AValue: Integer); @@ -214,6 +216,7 @@ property Format: String read FFormat write SetFormat; property Frame: _TFramePen read FFrame write SetFrame; property LabelBrush: _TLabelBrush read FLabelBrush write SetLabelBrush; + property LinkDistance: Integer read FLinkDistance write SetLinkDistance default 0; property LinkPen: _TLinkPen read FLinkPen write SetLinkPen; property Style: TSeriesMarksStyle read FStyle write SetStyle; property YIndex: Integer read FYIndex write SetYIndex default 0; @@ -259,6 +262,7 @@ property Format; property Frame; property LabelBrush; + property LinkDistance; property LinkPen; property OverlapPolicy; property Style default smsNone; @@ -606,6 +610,7 @@ Self.FAutoMargins := FAutoMargins; Self.FAttachment := FAttachment; Self.FDistance := FDistance; + Self.FLinkDistance := FLinkDistance; Self.FFormat := FFormat; Self.FFrame.Assign(FFrame); // FPC miscompiles virtual calls to generic type arguments, @@ -655,10 +660,18 @@ procedure TGenericChartMarks.DrawLink( ADrawer: IChartDrawer; ADataPoint, ALabelCenter: TPoint); +var + phi: Double; begin + if ADataPoint = ALabelCenter then exit; + + with (ADataPoint - ALabelCenter) do phi := ArcTan2(Y, X); + if (FLinkDistance <> 0) then + ADataPoint := ADataPoint + Point(round(FLinkDistance*cos(phi)), -round(FLinkDistance*sin(phi))); + inherited; - with (ADataPoint - ALabelCenter) do - Arrow.Draw(ADrawer, ADataPoint, ArcTan2(Y, X), GetLinkPen); + + Arrow.Draw(ADrawer, ADataPoint, phi, GetLinkPen); end; function TGenericChartMarks.GetDistanceToCenter: Boolean; @@ -769,6 +782,13 @@ StyleChanged(Self); end; +procedure TGenericChartMarks.SetLinkDistance(AValue: Integer); +begin + if FLinkDistance = AValue then exit; + FLinkDistance := AValue; + StyleChanged(Self); +end; + procedure TGenericChartMarks.SetLinkPen(AValue: _TLinkPen); begin if FLinkPen = AValue then exit; diff -Nru lazarus-1.4.4+dfsg/components/tachart/tatools.pas lazarus-1.6+dfsg/components/tachart/tatools.pas --- lazarus-1.4.4+dfsg/components/tachart/tatools.pas 2014-10-27 22:05:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tatools.pas 2016-02-13 12:42:53.000000000 +0000 @@ -398,6 +398,7 @@ FAffectedSeries: TPublishedIntegerSet; FDistanceMode: TChartDistanceMode; FGrabRadius: Integer; + FMouseInsideOnly: Boolean; function GetAffectedSeries: String; inline; function GetIsSeriesAffected(AIndex: Integer): Boolean; inline; procedure SetAffectedSeries(AValue: String); inline; @@ -407,6 +408,8 @@ FPointIndex: Integer; FSeries: TBasicChartSeries; procedure FindNearestPoint(APoint: TPoint); + property MouseInsideOnly: Boolean + read FMouseInsideOnly write FMouseInsideOnly default false; public constructor Create(AOwner: TComponent); override; public @@ -504,11 +507,12 @@ property OnHintLocation: TChartToolHintLocationEvent read FOnHintLocation write FOnHintLocation; property OnHintPosition: TChartToolHintPositionEvent - read FOnHintPosition write FOnHintPosition; //deprecated; + read FOnHintPosition write FOnHintPosition; property UseApplicationHint: Boolean read FUseApplicationHint write SetUseApplicationHint default false; property UseDefaultHintText: Boolean read FUseDefaultHintText write FUseDefaultHintText default true; + property MouseInsideOnly; end; { TDataPointDrawTool } @@ -534,6 +538,7 @@ property DrawingMode; property GrabRadius default 20; property OnDraw: TChartDataPointDrawEvent read FOnDraw write FOnDraw; + property MouseInsideOnly; end; TChartCrosshairShape = (ccsNone, ccsVertical, ccsHorizontal, ccsCross); @@ -568,17 +573,20 @@ end; procedure Register; - procedure RegisterChartToolClass( - AToolClass: TChartToolClass; const ACaption: String); + + procedure RegisterChartToolClass(AToolClass: TChartToolClass; + const ACaption: String); overload; + procedure RegisterChartToolClass(AToolClass: TChartToolClass; + ACaptionPtr: PStr); overload; var - ToolsClassRegistry: TStringList; + ToolsClassRegistry: TClassRegistry = nil; implementation uses GraphMath, InterfaceBase, LCLType, LCLIntf, Math, SysUtils, - TACustomSeries, TAEnumerators, TAGeometry, TAMath; + TAChartStrConsts, TACustomSeries, TAEnumerators, TAGeometry, TAMath; function InitBuiltinTools(AChart: TChart): TBasicChartToolset; var @@ -602,15 +610,23 @@ i: Integer; begin for i := 0 to ToolsClassRegistry.Count - 1 do - RegisterNoIcon([TChartToolClass(ToolsClassRegistry.Objects[i])]); + RegisterNoIcon([TChartToolClass(ToolsClassRegistry.GetClass(i))]); RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartToolset]); end; -procedure RegisterChartToolClass( - AToolClass: TChartToolClass; const ACaption: String); +procedure RegisterChartToolClass(AToolClass: TChartToolClass; + const ACaption: String); +begin + RegisterClass(AToolClass); + if ToolsClassRegistry.IndexOfClass(AToolClass) < 0 then + ToolsClassRegistry.Add(TClassRegistryItem.Create(AToolClass, ACaption)); +end; + +procedure RegisterChartToolClass(AToolClass: TChartToolClass; ACaptionPtr: PStr); begin RegisterClass(AToolClass); - ToolsClassRegistry.AddObject(ACaption, TObject(AToolClass)); + if ToolsClassRegistry.IndexOfClass(AToolClass) < 0 then + ToolsClassRegistry.Add(TClassRegistryItem.CreateRes(AToolClass, ACaptionPtr)); end; { TDataPointTool.TPointRef } @@ -1318,12 +1334,14 @@ ext: TDoubleRect; begin ext := FChart.LogicalExtent; - center := FChart.ImageToGraph(APoint); sz := ext.b - ext.a; - if FixedPoint and (sz.X <> 0) and (sz.Y <> 0) then - ratio := (center - ext.a) / sz - else + if FixedPoint and (sz.X <> 0) and (sz.Y <> 0) then begin + center := FChart.ImageToGraph(APoint); + ratio := (center - ext.a) / sz; + end else begin + center := DoublePoint((ext.a.x + ext.b.X) / 2, (ext.a.y + ext.b.y) / 2); ratio := DoublePoint(0.5, 0.5); + end; ext.a := center - sz * ratio / AFactor; ext.b := center + sz * (DoublePoint(1, 1) - ratio) / AFactor; DoZoom(ext, false); @@ -1570,9 +1588,19 @@ function InBoundaryBox(ASeries: TCustomChartSeries): Boolean; var r, gr: TDoubleRect; + p: TDoublePoint; + ext: TDoubleRect; begin r := ASeries.GetGraphBounds; - if not RectIntersectsRect(r, FChart.CurrentExtent) then exit(false); + ext := FChart.CurrentExtent; + if not RectIntersectsRect(r, ext) then exit(false); + + if FMouseInsideOnly then begin + p := FChart.ImageToGraph(APoint); + if not (SafeInRange(p.x, ext.a.x, ext.b.x) and SafeInRange(p.y, ext.a.y, ext.b.y)) then + exit(false); + end; + case DistanceMode of cdmOnlyX: begin gr.a := DoublePoint(FChart.XImageToGraph(APoint.X - GrabRadius), NegInfinity); @@ -1947,20 +1975,20 @@ initialization - ToolsClassRegistry := TStringList.Create; + ToolsClassRegistry := TClassRegistry.Create; OnInitBuiltinTools := @InitBuiltinTools; - RegisterChartToolClass(TZoomDragTool, 'Zoom by drag'); - RegisterChartToolClass(TZoomClickTool, 'Zoom by click'); - RegisterChartToolClass(TZoomMouseWheelTool, 'Zoom by mouse wheel'); - RegisterChartToolClass(TPanDragTool, 'Panning by drag'); - RegisterChartToolClass(TPanClickTool, 'Panning by click'); - RegisterChartToolClass(TPanMouseWheelTool, 'Panning by mouse wheel'); - RegisterChartToolClass(TReticuleTool, 'Reticule'); - RegisterChartToolClass(TDataPointClickTool, 'Data point click'); - RegisterChartToolClass(TDataPointDragTool, 'Data point drag'); - RegisterChartToolClass(TDataPointHintTool, 'Data point hint'); - RegisterChartToolClass(TDataPointCrosshairTool, 'Data point crosshair'); - RegisterChartToolClass(TUserDefinedTool, 'User-defined'); + RegisterChartToolClass(TZoomDragTool, @rsZoomByDrag); + RegisterChartToolClass(TZoomClickTool, @rsZoomByClick); + RegisterChartToolClass(TZoomMouseWheelTool, @rsZoomByMouseWheel); + RegisterChartToolClass(TPanDragTool, @rsPanningByDrag); + RegisterChartToolClass(TPanClickTool, @rsPanningbyClick); + RegisterChartToolClass(TPanMouseWheelTool, @rsPanningByMouseWheel); +// RegisterChartToolClass(TReticuleTool, @rsReticule); + RegisterChartToolClass(TDataPointClickTool, @rsDataPointClick); + RegisterChartToolClass(TDataPointDragTool, @rsDataPointDrag); + RegisterChartToolClass(TDataPointHintTool, @rsDataPointHint); + RegisterChartToolClass(TDataPointCrosshairTool, @rsDataPointCrosshair); + RegisterChartToolClass(TUserDefinedTool, @rsUserDefinedTool); finalization diff -Nru lazarus-1.4.4+dfsg/components/tachart/tatransformations.pas lazarus-1.6+dfsg/components/tachart/tatransformations.pas --- lazarus-1.4.4+dfsg/components/tachart/tatransformations.pas 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tatransformations.pas 2015-12-23 23:49:40.000000000 +0000 @@ -194,14 +194,16 @@ procedure Register; -resourcestring - tasAxisTransformsEditorTitle = 'Edit axis transformations'; + procedure RegisterAxisTransformClass(AAxisTransformClass: TAxisTransformClass; + const ACaption: String); overload; + procedure RegisterAxisTransformClass(AAxisTransformClass: TAxisTransformClass; + ACaptionPtr: PStr); overload; implementation uses ComponentEditors, Forms, Math, PropEdits, - TAMath, TASubcomponentsEditor; + TAChartStrConsts, TAMath, TASubcomponentsEditor; type { TAxisTransformsComponentEditor } @@ -240,7 +242,7 @@ end; var - AxisTransformsClassRegistry: TStringList; + AxisTransformsClassRegistry: TClassRegistry; procedure Register; var @@ -248,7 +250,7 @@ begin with AxisTransformsClassRegistry do for i := 0 to Count - 1 do - RegisterNoIcon([TAxisTransformClass(Objects[i])]); + RegisterNoIcon([TAxisTransformClass(GetClass(i))]); RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartAxisTransformations]); RegisterPropertyEditor( TypeInfo(TAxisTransformList), TChartAxisTransformations, @@ -257,11 +259,22 @@ TChartAxisTransformations, TAxisTransformsComponentEditor); end; -procedure RegisterAxisTransformClass( - AAxisTransformClass: TAxisTransformClass; const ACaption: String); +procedure RegisterAxisTransformClass(AAxisTransformClass: TAxisTransformClass; + const ACaption: String); begin RegisterClass(AAxisTransformClass); - AxisTransformsClassRegistry.AddObject(ACaption, TObject(AAxisTransformClass)); + with AxisTransformsClassRegistry do + if IndexOfClass(AAxisTransformClass) < 0 then + Add(TClassRegistryItem.Create(AAxisTransformClass, ACaption)); +end; + +procedure RegisterAxisTransformClass(AAxisTransformClass: TAxisTransformClass; + ACaptionPtr: PStr); +begin + RegisterClass(AAxisTransformClass); + with AxisTransformsClassRegistry do + if IndexOfClass(AAxisTransformClass) < 0 then + Add(TClassRegistryItem.CreateRes(AAxisTransformClass, ACaptionPtr)); end; { TAxisTransformList } @@ -323,7 +336,7 @@ i: Integer; begin for i := 0 to AxisTransformsClassRegistry.Count - 1 do - AddSubcomponentClass(AxisTransformsClassRegistry[i], i); + AddSubcomponentClass(AxisTransformsClassRegistry.GetCaption(i), i); end; function TAxisTransformsEditorForm.GetChildrenList: TFPList; @@ -335,7 +348,7 @@ AOwner: TComponent; ATag: Integer): TComponent; begin with AxisTransformsClassRegistry do - Result := TAxisTransformClass(Objects[ATag]).Create(AOwner); + Result := TAxisTransformClass(GetClass(ATag)).Create(AOwner); end; { TAxisTransform } @@ -643,6 +656,8 @@ procedure TLogarithmAxisTransform.SetBase(AValue: Double); begin if FBase = AValue then exit; + if (AValue <= 0) or (AValue = 1.0) then + raise Exception.Create(rsInvalidLogBase); FBase := AValue; Changed; end; @@ -790,13 +805,13 @@ initialization - AxisTransformsClassRegistry := TStringList.Create; - RegisterAxisTransformClass(TAutoScaleAxisTransform, 'Auto scale'); + AxisTransformsClassRegistry := TClassRegistry.Create; + RegisterAxisTransformClass(TAutoScaleAxisTransform, @rsAutoScale); RegisterAxisTransformClass( - TCumulNormDistrAxisTransform, 'Cumulative normal distribution'); - RegisterAxisTransformClass(TLinearAxisTransform, 'Linear'); - RegisterAxisTransformClass(TLogarithmAxisTransform, 'Logarithmic'); - RegisterAxisTransformClass(TUserDefinedAxisTransform, 'User defined'); + TCumulNormDistrAxisTransform, @rsCumulativeNormalDistribution); + RegisterAxisTransformClass(TLinearAxisTransform, @rsLinear); + RegisterAxisTransformClass(TLogarithmAxisTransform, @rsLogarithmic); + RegisterAxisTransformClass(TUserDefinedAxisTransform, @rsUserDefined); finalization diff -Nru lazarus-1.4.4+dfsg/components/tachart/tatypes.pas lazarus-1.6+dfsg/components/tachart/tatypes.pas --- lazarus-1.4.4+dfsg/components/tachart/tatypes.pas 2015-04-02 22:03:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/tachart/tatypes.pas 2015-09-27 19:36:31.000000000 +0000 @@ -93,7 +93,7 @@ TSeriesPointerStyle = ( psNone, psRectangle, psCircle, psCross, psDiagCross, psStar, psLowBracket, psHighBracket, psLeftBracket, psRightBracket, psDiamond, - psTriangle, psLeftTriangle, psRightTriangle, psVertBar, psHorBar); + psTriangle, psLeftTriangle, psRightTriangle, psVertBar, psHorBar, psPoint); { TSeriesPointer } @@ -428,10 +428,10 @@ DRAW_STRINGS: array [TSeriesPointerStyle] of String = ( // psNone, psRectangle, psCircle, psCross, psDiagCross, psStar, // psLowBracket, psHighBracket, psLeftBracket, psRightBracket, psDiamond, - // psTriangle, psLeftTriangle, psRightTriangle, psVertBar, psHorBar + // psTriangle, psLeftTriangle, psRightTriangle, psVertBar, psHorBar, psPoint '', '17931', '', '28 46', '19 73', '28 46 19 73', '41236', '47896', '87412', '89632', '84268', - '183', '842', '862', '82', '46'); + '183', '842', '862', '82', '46', ''); begin ADrawer.Brush := Brush; if (ocBrush in OverrideColor) and (AColor <> clTAColor) then @@ -440,6 +440,9 @@ if (ocPen in OverrideColor) and (AColor <> clTAColor) then ADrawer.SetPenParams(Pen.Style, AColor); + if Style = psPoint then + ADrawer.PutPixel(ACenter.X, ACenter.Y, Pen.Color) + else if Style = psCircle then ADrawer.Ellipse( ACenter.X - ASize.X, ACenter.Y - ASize.Y, diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.cs.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.cs.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.cs.po 2013-09-06 23:01:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.cs.po 2015-12-19 00:06:27.000000000 +0000 @@ -10,6 +10,10 @@ "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Volby" @@ -55,7 +59,6 @@ msgstr "Modul" #: todoliststrconsts.listodolist -#| msgid "ToDo list" msgid "ToDo List" msgstr "Seznam úkolů" @@ -64,7 +67,6 @@ msgstr "Přeskočí na umístění úkolu ve zdroji" #: todoliststrconsts.listodolistoptions -#| msgid "ToDo options..." msgid "ToDo options ..." msgstr "Volby úkolů ..." @@ -93,7 +95,6 @@ msgstr "Kategorie" #: todoliststrconsts.lisviewtodolist -#| msgid "View ToDo list" msgid "View ToDo List" msgstr "Ukaž seznam úkolů" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.de.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.de.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.de.po 2013-09-24 10:05:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.de.po 2015-12-19 00:06:27.000000000 +0000 @@ -10,6 +10,10 @@ "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Einstellungen" @@ -55,7 +59,6 @@ msgstr "Modul" #: todoliststrconsts.listodolist -#| msgid "ToDo list" msgid "ToDo List" msgstr "ToDo-Liste" @@ -64,7 +67,6 @@ msgstr "Zur gewählten Quelltextzeile springen" #: todoliststrconsts.listodolistoptions -#| msgid "ToDo options..." msgid "ToDo options ..." msgstr "ToDo-Einstellungen ..." @@ -93,6 +95,6 @@ msgstr "Kategorie" #: todoliststrconsts.lisviewtodolist -#| msgid "View ToDo list" msgid "View ToDo List" msgstr "ToDo-Liste anzeigen" + diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.es.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.es.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.es.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.es.po 2015-06-24 22:03:17.000000000 +0000 @@ -9,6 +9,10 @@ "POT-Creation-Date: \n" "MIME-Version: 1.0\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Opciones" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.fi.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.fi.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.fi.po 2015-01-21 00:40:14.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.fi.po 2015-12-05 11:32:24.000000000 +0000 @@ -1,6 +1,10 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "CSV tiedostot" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Asetukset" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.fr.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.fr.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.fr.po 2015-04-20 21:25:03.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -9,7 +9,11 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" + +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "Fichier CSV" #: todoliststrconsts.dlgfropts msgid "Options" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.hu.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.hu.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -11,6 +11,10 @@ "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "CSV fájlok" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Beállítások" @@ -94,3 +98,4 @@ #: todoliststrconsts.lisviewtodolist msgid "View ToDo List" msgstr "ToDo lista megjelenítése" + diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.it.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.it.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.it.po 2014-10-25 08:53:32.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.it.po 2015-06-24 22:03:17.000000000 +0000 @@ -12,6 +12,10 @@ "Project-Id-Version: \n" "POT-Creation-Date: \n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Opzioni" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.lt.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.lt.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.lt.po 2013-09-06 23:01:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.lt.po 2015-06-24 22:03:17.000000000 +0000 @@ -1,4 +1,3 @@ - Valdas Jankunas , 2012. msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" @@ -12,6 +11,10 @@ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.5\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Parinktys" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.pl.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.pl.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.pl.po 2012-04-10 00:51:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.pl.po 2015-06-24 22:03:17.000000000 +0000 @@ -12,6 +12,10 @@ "X-Poedit-Country: POLAND\n" "X-Poedit-SourceCharset: utf-8\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Opcje" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.po 2012-04-10 00:51:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.po 2015-06-24 22:03:17.000000000 +0000 @@ -1,6 +1,10 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.pt_BR.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.pt_BR.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.pt_BR.po 2012-04-10 00:51:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.pt_BR.po 2015-06-24 22:03:17.000000000 +0000 @@ -9,6 +9,10 @@ "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Opções" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.ru.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.ru.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.ru.po 2012-04-10 00:51:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.ru.po 2015-12-19 00:06:27.000000000 +0000 @@ -8,6 +8,12 @@ "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" + +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "Файлы CSV" #: todoliststrconsts.dlgfropts msgid "Options" @@ -54,7 +60,6 @@ msgstr "Модуль" #: todoliststrconsts.listodolist -#| msgid "ToDo list" msgid "ToDo List" msgstr "Список ToDo" @@ -63,7 +68,6 @@ msgstr "Перейти к выделенной строке исходного кода" #: todoliststrconsts.listodolistoptions -#| msgid "ToDo options..." msgid "ToDo options ..." msgstr "Параметры ToDo ..." @@ -92,7 +96,6 @@ msgstr "Категория" #: todoliststrconsts.lisviewtodolist -#| msgid "View ToDo list" msgid "View ToDo List" msgstr "Показать список ToDo" diff -Nru lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.uk.po lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.uk.po --- lazarus-1.4.4+dfsg/components/todolist/languages/todoliststrconsts.uk.po 2013-09-06 23:01:30.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/languages/todoliststrconsts.uk.po 2015-12-19 00:06:27.000000000 +0000 @@ -1,4 +1,3 @@ - Igor Paliychuk , 2012. msgid "" msgstr "" "Project-Id-Version: \n" @@ -13,6 +12,10 @@ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Virtaal 0.7.1\n" +#: todoliststrconsts.dlgfiltercsv +msgid "CSV files" +msgstr "" + #: todoliststrconsts.dlgfropts msgid "Options" msgstr "Параметри" @@ -58,7 +61,6 @@ msgstr "Модуль" #: todoliststrconsts.listodolist -#| msgid "ToDo list" msgid "ToDo List" msgstr "Список ToDo" @@ -67,7 +69,6 @@ msgstr "Перейти до вибраного рядка поч. коду" #: todoliststrconsts.listodolistoptions -#| msgid "ToDo options..." msgid "ToDo options ..." msgstr "Параметри ToDo ..." @@ -96,7 +97,6 @@ msgstr "Категорія" #: todoliststrconsts.lisviewtodolist -#| msgid "View ToDo list" msgid "View ToDo List" msgstr "Перегляд списку ToDo" diff -Nru lazarus-1.4.4+dfsg/components/todolist/todolist.lfm lazarus-1.6+dfsg/components/todolist/todolist.lfm --- lazarus-1.4.4+dfsg/components/todolist/todolist.lfm 2015-07-19 11:36:45.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/todolist.lfm 2015-09-09 15:25:17.000000000 +0000 @@ -1,7 +1,7 @@ object IDETodoWindow: TIDETodoWindow - Left = 263 + Left = 415 Height = 300 - Top = 409 + Top = 429 Width = 643 ActiveControl = lvTodo Caption = 'IDETodoWindow' @@ -12,23 +12,16 @@ OnKeyDown = FormKeyDown OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.1' - object StatusBar: TStatusBar - Left = 0 - Height = 22 - Top = 278 - Width = 643 - Panels = <> - end + LCLVersion = '1.5' object lvTodo: TListView - Left = 0 - Height = 230 - Top = 48 - Width = 643 + Left = 6 + Height = 205 + Top = 54 + Width = 631 Align = alClient + BorderSpacing.Around = 6 Columns = < item - AutoSize = False Caption = 'Done' Width = 100 end @@ -37,27 +30,22 @@ Width = 700 end item - AutoSize = False Caption = 'Priority' Width = 100 end item - AutoSize = False Caption = 'Module' Width = 100 end item - AutoSize = False Caption = 'Line' Width = 100 end item - AutoSize = False Caption = 'Owner' Width = 100 end item - AutoSize = False Caption = 'Category' Width = 100 end> @@ -84,7 +72,7 @@ ShowHint = True TabOrder = 1 object tbOptions: TToolButton - Left = 199 + Left = 209 Top = 2 AllowAllUp = True AutoSize = True @@ -92,7 +80,7 @@ Visible = False end object tbPrint: TToolButton - Left = 152 + Left = 162 Top = 2 AutoSize = True Caption = 'Print' @@ -105,18 +93,36 @@ AutoSize = True end object tbGoto: TToolButton - Left = 56 + Left = 61 Top = 2 Action = acGoto AutoSize = True end object tbExport: TToolButton - Left = 103 + Left = 108 Top = 2 Action = acExport AutoSize = True end end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 265 + Width = 631 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 2 + ShowButtons = [pbClose, pbHelp] + ShowBevel = False + end object ActionList: TActionList left = 414 top = 11 diff -Nru lazarus-1.4.4+dfsg/components/todolist/todolist.pas lazarus-1.6+dfsg/components/todolist/todolist.pas --- lazarus-1.4.4+dfsg/components/todolist/todolist.pas 2014-11-12 19:17:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/todolist.pas 2015-09-10 14:20:04.000000000 +0000 @@ -63,8 +63,9 @@ uses // FCL, RTL, LCL Classes, SysUtils, Math, LCLProc, Forms, Controls, Dialogs, StrUtils, - ComCtrls, ActnList, AvgLvlTree, LazUTF8Classes, LCLType, CodeCache, - CodeToolManager, BasicCodeTools, FileProcs, + ComCtrls, ActnList, AvgLvlTree, LazUTF8Classes, LCLType, ButtonPanel, + CodeCache, CodeToolManager, BasicCodeTools, FileProcs, LazFileUtils, + LclIntf, // IDEIntf LazIDEIntf, IDEImagesIntf, PackageIntf, ProjectIntf, // IDE @@ -138,9 +139,9 @@ acRefresh: TAction; acExport: TAction; ActionList: TActionList; + ButtonPanel1: TButtonPanel; lvTodo: TListView; SaveDialog1: TSaveDialog; - StatusBar: TStatusBar; ToolBar: TToolBar; tbGoto: TToolButton; tbOptions: TToolButton; @@ -153,6 +154,7 @@ procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift:TShiftState); procedure FormShow(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); procedure lvTodoClick(Sender: TObject); procedure lvTodoColumnClick(Sender : TObject; Column : TListColumn); procedure lvTodoCompare(Sender : TObject; Item1, Item2 : TListItem; @@ -223,6 +225,8 @@ acGoto.ImageIndex := IDEImages.LoadImage(16, 'menu_goto_line'); acRefresh.ImageIndex := IDEImages.LoadImage(16, 'laz_refresh'); acExport.ImageIndex := IDEImages.LoadImage(16, 'menu_saveas'); + + SaveDialog1.Filter:= dlgFilterCsv+'|*.csv'; end; destructor TIDETodoWindow.Destroy; @@ -286,7 +290,7 @@ //debugln(['TIDETodoWindow.UpdateTodos Owner=',DbgSName(CurOwner)]); if CurProject<>nil then begin // scan all units of project - Caption:=lisToDoList+' '+CurProject.ProjectInfoFile; + Caption:=lisToDoList+' - '+ExtractFileName(CurProject.ProjectInfoFile); FBaseDirectory:=ExtractFilePath(CurProject.ProjectInfoFile); if (CurProject.MainFile<>nil) and (pfMainUnitIsPascalSource in CurProject.Flags) then @@ -300,7 +304,7 @@ end; end else if CurPackage<>nil then begin // scan all units of package - Caption:=lisToDoList+' '+CurPackage.Filename; + Caption:=lisToDoList+' - '+ExtractFilename(CurPackage.Filename); FBaseDirectory:=ExtractFilePath(CurPackage.Filename); for i:=0 to CurPackage.FileCount-1 do begin CurPkgFile:=CurPackage.Files[i]; @@ -336,6 +340,12 @@ IdleConnected:=true; end; +procedure TIDETodoWindow.HelpButtonClick(Sender: TObject); +begin + // usual API from IdeHelpIntf don't work + OpenURL('http://wiki.freepascal.org/IDE_Window:_ToDo_List'); +end; + procedure TIDETodoWindow.lvTodoClick(Sender: TObject); begin acGoto.Execute; diff -Nru lazarus-1.4.4+dfsg/components/todolist/todoliststrconsts.pas lazarus-1.6+dfsg/components/todolist/todoliststrconsts.pas --- lazarus-1.4.4+dfsg/components/todolist/todoliststrconsts.pas 2012-04-09 08:24:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/todolist/todoliststrconsts.pas 2015-06-24 22:03:17.000000000 +0000 @@ -49,6 +49,7 @@ lisViewToDoList = 'View ToDo List'; lisToDoList = 'ToDo List'; lisPkgFileTypeText = 'Text'; + dlgFilterCsv = 'CSV files'; implementation diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browserfrm.lfm lazarus-1.6+dfsg/components/turbopower_ipro/examples/browserfrm.lfm --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browserfrm.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/browserfrm.lfm 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,212 @@ +object frMain: TfrMain + Left = 41 + Height = 314 + Top = 31 + Width = 591 + Caption = 'IPro browser' + ClientHeight = 314 + ClientWidth = 591 + LCLVersion = '1.7' + object pnTop: TPanel + Left = 0 + Height = 42 + Top = 0 + Width = 591 + Align = alTop + ClientHeight = 42 + ClientWidth = 591 + TabOrder = 0 + object btBack: TSpeedButton + Left = 5 + Height = 32 + Top = 5 + Width = 40 + Action = acBack + Align = alLeft + BorderSpacing.Around = 4 + Glyph.Data = { + 36060000424D3606000000000000360400002800000020000000100000000100 + 0800000000000002000000000000000000000000000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA + A6000020400000206000002080000020A0000020C0000020E000004000000040 + 20000040400000406000004080000040A0000040C0000040E000006000000060 + 20000060400000606000006080000060A0000060C0000060E000008000000080 + 20000080400000806000008080000080A0000080C0000080E00000A0000000A0 + 200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0 + 200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0 + 200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000 + 20004000400040006000400080004000A0004000C0004000E000402000004020 + 20004020400040206000402080004020A0004020C0004020E000404000004040 + 20004040400040406000404080004040A0004040C0004040E000406000004060 + 20004060400040606000406080004060A0004060C0004060E000408000004080 + 20004080400040806000408080004080A0004080C0004080E00040A0000040A0 + 200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0 + 200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0 + 200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000 + 20008000400080006000800080008000A0008000C0008000E000802000008020 + 20008020400080206000802080008020A0008020C0008020E000804000008040 + 20008040400080406000804080008040A0008040C0008040E000806000008060 + 20008060400080606000806080008060A0008060C0008060E000808000008080 + 20008080400080806000808080008080A0008080C0008080E00080A0000080A0 + 200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0 + 200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0 + 200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000 + 2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020 + 2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040 + 2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060 + 2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080 + 2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0 + 2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0 + 2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FDFDFDFDFDFD + FDF5F5FDFDFDFDFDFDFDFDFDFDFDFDFDFD0707FDFDFDFDFDFDFDFDFDFDFDFDFD + B51111FDFDFDFDFDFDFDFDFDFDFDFDFD07F7F7FDFDFDFDFDFDFDFDFDFDFDFDB5 + 196219FDFDFDFDFDFDFDFDFDFDFDFD07F707F7FDFDFDFDFDFDFDFDFDFDFDAC11 + 627362FDFDFDFDFDFDFDFDFDFDFD07F7070707FDFDFDFDFDFDFDFDFDFDAC1962 + 737361B4B4F7ACADF7FDFDFDFD07F707070707070707070707FDFDFDAC1162B3 + 696A61181919191951FDFDFD07F70707070707F7F7F7F7F7F7FDFDAC1162BCB3 + 69697272737373B462FDFD07F7070707F707070707070707F7FDB41162B3B3B3 + B2686969727272B462FD07F7070707070707070707070707F7FD616AF4B3B3B3 + BB696869696969B361FDF7070707070707F7070707070707F7FDFD61AABBB3B4 + BCBB6968696969BB61FDFDF7070707070707F7F7F7F7F707F7FDFDFD61AABCBC + B4F4BCBCBCBCBCBC61FDFDFDF70707070707070707070707F7FDFDFDFD61AAF4 + B4F561616162616262FDFDFDFDF707070707F7F7F7F7F7F7F7FDFDFDFDFD61AA + BCF561FDFDFDFDFDFDFDFDFDFDFDF7070707F7FDFDFDFDFDFDFDFDFDFDFDFD61 + AAF462FDFDFDFDFDFDFDFDFDFDFDFDF70707F7FDFDFDFDFDFDFDFDFDFDFDFDFD + 61AA61FDFDFDFDFDFDFDFDFDFDFDFDFDF707F7FDFDFDFDFDFDFDFDFDFDFDFDFD + FD6161FDFDFDFDFDFDFDFDFDFDFDFDFDFDF7F7FDFDFDFDFDFDFD + } + NumGlyphs = 2 + end + object btForward: TSpeedButton + Left = 49 + Height = 32 + Top = 5 + Width = 40 + Action = acForward + Align = alLeft + BorderSpacing.Around = 4 + Glyph.Data = { + 36060000424D3606000000000000360400002800000020000000100000000100 + 0800000000000002000000000000000000000000000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA + A6000020400000206000002080000020A0000020C0000020E000004000000040 + 20000040400000406000004080000040A0000040C0000040E000006000000060 + 20000060400000606000006080000060A0000060C0000060E000008000000080 + 20000080400000806000008080000080A0000080C0000080E00000A0000000A0 + 200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0 + 200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0 + 200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000 + 20004000400040006000400080004000A0004000C0004000E000402000004020 + 20004020400040206000402080004020A0004020C0004020E000404000004040 + 20004040400040406000404080004040A0004040C0004040E000406000004060 + 20004060400040606000406080004060A0004060C0004060E000408000004080 + 20004080400040806000408080004080A0004080C0004080E00040A0000040A0 + 200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0 + 200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0 + 200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000 + 20008000400080006000800080008000A0008000C0008000E000802000008020 + 20008020400080206000802080008020A0008020C0008020E000804000008040 + 20008040400080406000804080008040A0008040C0008040E000806000008060 + 20008060400080606000806080008060A0008060C0008060E000808000008080 + 20008080400080806000808080008080A0008080C0008080E00080A0000080A0 + 200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0 + 200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0 + 200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000 + 2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020 + 2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040 + 2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060 + 2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080 + 2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0 + 2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0 + 2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FDFDFDFDFDFD + FDF5F5FDFDFDFDFDFDFDFDFDFDFDFDFDFD0707FDFDFDFDFDFDFDFDFDFDFDFDFD + FD1111B5FDFDFDFDFDFDFDFDFDFDFDFDFDF7F707FDFDFDFDFDFDFDFDFDFDFDFD + FD196219B5FDFDFDFDFDFDFDFDFDFDFDFDF707F707FDFDFDFDFDFDFDFDFDFDFD + FD62736211ACFDFDFDFDFDFDFDFDFDFDFD070707F707FDFDFDFDFDF7ADACF7B4 + B46173736219ACFDFDFDFD07070707070707070707F707FDFDFDFD5119191919 + 18616A69B36211ACFDFDFDF7F7F7F7F7F70707070707F707FDFDFD62B4737373 + 72726969B3BC6211ACFDFDF707070707070707F7070707F707FDFD62B4727272 + 696968B2B3B3B36211B4FDF7070707070707070707070707F707FD61B3696969 + 696869BBB3B3B3F46A61FDF707070707070707070707070707F7FD61BB696969 + 6869BBBCB4B3BBAA61FDFDF70707F707F7F7070707070707F7FDFD61BCBCBCBC + BCBCF4B4BCBCAA61FDFDFDF70707070707070707070707F7FDFDFD6262616261 + 6161F5B4F4AA61FDFDFDFDF7F707F7F707F707070707F7FDFDFDFDFDFDFDFDFD + FD61F5BCAA61FDFDFDFDFDFDFDFDFDFDFDF7070707F7FDFDFDFDFDFDFDFDFDFD + FD62F4AA61FDFDFDFDFDFDFDFDFDFDFDFDF70707F7FDFDFDFDFDFDFDFDFDFDFD + FD61AA61FDFDFDFDFDFDFDFDFDFDFDFDFDF707F7FDFDFDFDFDFDFDFDFDFDFDFD + FD6161FDFDFDFDFDFDFDFDFDFDFDFDFDFDF7F7FDFDFDFDFDFDFD + } + NumGlyphs = 2 + end + object edUrl: TEdit + AnchorSideLeft.Control = btForward + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = pnTop + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = btGo + Left = 93 + Height = 23 + Top = 10 + Width = 449 + Anchors = [akTop, akLeft, akRight] + ParentBidiMode = False + TabOrder = 0 + Text = 'http://freepascal.org/' + end + object btGo: TSpeedButton + Left = 546 + Height = 32 + Top = 5 + Width = 40 + Action = acGo + Align = alRight + BorderSpacing.Around = 4 + NumGlyphs = 2 + end + end + object IpHtmlPanel1: TIpHtmlPanel + Left = 0 + Height = 272 + Top = 42 + Width = 591 + Align = alClient + DataProvider = IpHttpDataProvider1 + FixedTypeface = 'Courier New' + DefaultTypeFace = 'default' + DefaultFontSize = 12 + FlagErrors = False + PrintSettings.MarginLeft = 0.5 + PrintSettings.MarginTop = 0.5 + PrintSettings.MarginRight = 0.5 + PrintSettings.MarginBottom = 0.5 + TabOrder = 1 + OnDocumentOpen = IpHtmlPanel1DocumentOpen + end + object IpHttpDataProvider1: TIpHttpDataProvider + left = 64 + top = 64 + end + object alMain: TActionList + OnUpdate = alMainUpdate + left = 160 + top = 64 + object acBack: TAction + Category = 'Browser' + Enabled = False + OnExecute = acBackExecute + end + object acForward: TAction + Category = 'Browser' + Enabled = False + OnExecute = acForwardExecute + end + object acGo: TAction + Category = 'Browser' + Caption = 'Go!' + OnExecute = acGoExecute + ShortCut = 13 + end + end +end diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browserfrm.pas lazarus-1.6+dfsg/components/turbopower_ipro/examples/browserfrm.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browserfrm.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/browserfrm.pas 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,71 @@ +unit browserfrm; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Iphttpbroker, IpHtml, Forms, Buttons, ExtCtrls, StdCtrls, + ActnList; + +type + + { TfrMain } + + TfrMain = class(TForm) + acBack: TAction; + acForward: TAction; + acGo: TAction; + alMain: TActionList; + btGo: TSpeedButton; + edUrl: TEdit; + IpHtmlPanel1: TIpHtmlPanel; + IpHttpDataProvider1: TIpHttpDataProvider; + pnTop: TPanel; + btBack: TSpeedButton; + btForward: TSpeedButton; + procedure acBackExecute(Sender: TObject); + procedure acForwardExecute(Sender: TObject); + procedure acGoExecute(Sender: TObject); + procedure alMainUpdate(AAction: TBasicAction; var Handled: Boolean); + procedure IpHtmlPanel1DocumentOpen(Sender: TObject); + end; + +var + frMain: TfrMain; + +implementation + +{$R *.lfm} + +{ TfrMain } + +procedure TfrMain.IpHtmlPanel1DocumentOpen(Sender: TObject); +begin + edUrl.Text := IpHtmlPanel1.CurURL; +end; + +procedure TfrMain.alMainUpdate(AAction: TBasicAction; var Handled: Boolean); +begin + acBack.Enabled := IpHtmlPanel1.CanGoBack; + acForward.Enabled := IpHtmlPanel1.CanGoForward; + acGo.Enabled := Trim(edUrl.Text) <> ''; +end; + +procedure TfrMain.acBackExecute(Sender: TObject); +begin + IpHtmlPanel1.GoBack; +end; + +procedure TfrMain.acForwardExecute(Sender: TObject); +begin + IpHtmlPanel1.GoForward; +end; + +procedure TfrMain.acGoExecute(Sender: TObject); +begin + IpHtmlPanel1.OpenURL(edUrl.Text); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browser.lpi lazarus-1.6+dfsg/components/turbopower_ipro/examples/browser.lpi --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browser.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/browser.lpi 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,93 @@ + + + + + + + + + + + + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1" Active="Default"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="TurboPowerIPro"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="browser.lpr"/> + <IsPartOfProject Value="True"/> + <UsageCount Value="20"/> + </Unit0> + <Unit1> + <Filename Value="browserfrm.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="frMain"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <IsVisibleTab Value="True"/> + <UsageCount Value="20"/> + <Loaded Value="True"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="browser"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <UseExternalDbgSyms Value="True"/> + </Debugging> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browser.lpr lazarus-1.6+dfsg/components/turbopower_ipro/examples/browser.lpr --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/browser.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/browser.lpr 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,19 @@ +program browser; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, Forms, browserfrm; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TfrMain, frMain); + Application.Run; +end. + diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumabfrm.lfm lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumabfrm.lfm --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumabfrm.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumabfrm.lfm 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,33 @@ +object Form1: TForm1 + Left = 237 + Height = 240 + Top = 144 + Width = 320 + Caption = 'Sum A+B' + ClientHeight = 240 + ClientWidth = 320 + OnShow = FormShow + LCLVersion = '1.7' + object IpHtmlPanel1: TIpHtmlPanel + Left = 0 + Height = 240 + Top = 0 + Width = 320 + Align = alClient + DataProvider = IpFileDataProvider1 + FixedTypeface = 'Courier New' + DefaultTypeFace = 'default' + DefaultFontSize = 12 + FlagErrors = False + PrintSettings.MarginLeft = 0.5 + PrintSettings.MarginTop = 0.5 + PrintSettings.MarginRight = 0.5 + PrintSettings.MarginBottom = 0.5 + TabOrder = 0 + OnControlClick2 = IpHtmlPanel1ControlClick2 + end + object IpFileDataProvider1: TIpFileDataProvider + left = 56 + top = 23 + end +end diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumabfrm.pas lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumabfrm.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumabfrm.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumabfrm.pas 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,51 @@ +unit sumabfrm; + +{$mode objfpc}{$H+} +{$MODESWITCH NESTEDPROCVARS} + +interface + +uses + Classes, SysUtils, Ipfilebroker, IpHtml, Forms, Dialogs; + +type + + { TForm1 } + + TForm1 = class(TForm) + IpFileDataProvider1: TIpFileDataProvider; + IpHtmlPanel1: TIpHtmlPanel; + procedure FormShow(Sender: TObject); + procedure IpHtmlPanel1ControlClick2(Sender: TIpHtmlCustomPanel; + Frame: TIpHtmlFrame; Html: TIpHtml; Node: TIpHtmlNodeControl; + var cancel: boolean); + end; + +var + Form1: TForm1; + +implementation + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.FormShow(Sender: TObject); +begin + IpHtmlPanel1.OpenURL( + ExpandLocalHtmlFileName(ExtractFilePath(ParamStr(0)) + 'sum.html')); +end; + +procedure TForm1.IpHtmlPanel1ControlClick2(Sender: TIpHtmlCustomPanel; + Frame: TIpHtmlFrame; Html: TIpHtml; Node: TIpHtmlNodeControl; + var cancel: boolean); +var + A, B: TIpHtmlNodeINPUT; +begin + A := FindNodeByElemId(Html.HtmlNode, 'a') as TIpHtmlNodeINPUT; + B := FindNodeByElemId(Html.HtmlNode, 'b') as TIpHtmlNodeINPUT; + ShowMessageFmt('Sum: %d', [StrToInt(A.Value) + StrToInt(B.Value)]); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumab.lpi lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumab.lpi --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumab.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumab.lpi 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <PathDelim Value="\"/> + <General> + <Flags> + <SaveOnlyProjectUnits Value="True"/> + </Flags> + <MainUnit Value="0"/> + <Title Value="sumab"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1" Active="Default"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="TurboPowerIPro"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="sumab.lpr"/> + <IsPartOfProject Value="True"/> + <UsageCount Value="20"/> + </Unit0> + <Unit1> + <Filename Value="sumabfrm.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <IsVisibleTab Value="True"/> + <UsageCount Value="20"/> + <Loaded Value="True"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="sumab"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumab.lpr lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumab.lpr --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sumab.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/sumab.lpr 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,19 @@ +program sumab; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, Forms, sumabfrm; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sum.html lazarus-1.6+dfsg/components/turbopower_ipro/examples/sum.html --- lazarus-1.4.4+dfsg/components/turbopower_ipro/examples/sum.html 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/examples/sum.html 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,14 @@ +<!DOCTYPE HTML> +<html lang="en-US"> +<head> + <meta charset="UTF-8"> + <title>Sum + + +
+ Value A:
+ Value B:
+ +
+ + \ No newline at end of file diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/icons_list.txt lazarus-1.6+dfsg/components/turbopower_ipro/icons_list.txt --- lazarus-1.4.4+dfsg/components/turbopower_ipro/icons_list.txt 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/icons_list.txt 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,3 @@ +tipfiledataprovider.png +tiphtmlpanel.png +tiphttpdataprovider.png diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/ipdefine.inc lazarus-1.6+dfsg/components/turbopower_ipro/ipdefine.inc --- lazarus-1.4.4+dfsg/components/turbopower_ipro/ipdefine.inc 2014-08-11 20:06:06.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/ipdefine.inc 2016-02-06 14:36:36.000000000 +0000 @@ -47,6 +47,7 @@ {$DEFINE VERSION5} {$DEFINE Version6OrHigher} {$DEFINE Version7OrHigher} +{$MODESWITCH NESTEDPROCVARS} {$ELSE} diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/ipfilebroker.pas lazarus-1.6+dfsg/components/turbopower_ipro/ipfilebroker.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/ipfilebroker.pas 2009-11-27 07:48:27.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/ipfilebroker.pas 2015-07-04 23:08:00.000000000 +0000 @@ -32,7 +32,7 @@ interface {$IFDEF IP_LAZARUS} -uses Classes, SysUtils, LResources, Graphics, LCLProc, FileUtil, +uses Classes, SysUtils, LResources, Graphics, LCLProc, LazFileUtils, LazUTF8, ipconst, iputils, iphtml, ipmsg; {$ELSE} uses diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/iphtmlblocklayout.pas lazarus-1.6+dfsg/components/turbopower_ipro/iphtmlblocklayout.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/iphtmlblocklayout.pas 2014-07-18 22:14:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/iphtmlblocklayout.pas 2016-01-03 12:33:35.000000000 +0000 @@ -183,7 +183,13 @@ procedure TIpNodeBlockLayouter.Layout(RenderProps: TIpHtmlProps; TargetRect: TRect); begin - if EqualRect(TargetRect, FBlockOwner.PageRect) then Exit; + if EqualRect(TargetRect, FBlockOwner.PageRect) then + exit; + + if FBlockOwner is TIpHtmlNodeBody then + RemoveLeadingLFs; + RemoveDuplicateLFs; + if not RenderProps.IsEqualTo(Props) then begin Props.Assign(RenderProps); @@ -505,7 +511,7 @@ FBlockDescent := PropA.tmDescent; end; if (FCurProps = nil) or not BIsEqualTo(FCurProps) then begin - FAl := Alignment; + FAl := self.Props.Alignment; // was: FAl := Alignment FVAL := VAlignment; FBaseOffset := FontBaseline; aPrefor := Preformatted; @@ -1358,25 +1364,63 @@ inherited Destroy; end; +procedure GetAlignment(ANode: TIpHtmlNode; AProps: TIpHtmlProps; var Done: Boolean); +begin + if (ANode is TIpHtmlNodeSpan) then + begin + if (ANode as TIpHtmlNodeSpan).Align <> haDefault then + begin + AProps.Alignment := (ANode as TIpHtmlNodeSpan).Align; + Done := true; + end; + end else + if (ANode is TIpHtmlNodeTableHeaderOrCell) then + begin + if (ANode as TIpHtmlNodeTableHeaderOrCell).Align <> haDefault then + begin + AProps.Alignment := (ANode as TIpHtmlNodeTableHeaderOrCell).Align; + Done := true; + end; + end; +end; + procedure TIpNodeTableElemLayouter.Layout(RenderProps: TIpHtmlProps; TargetRect: TRect); begin Props.Assign(RenderProps); + + IterateParents(@GetAlignment); + if (Props.Alignment = haDefault) then + begin + if (FOwner is TIpHtmlNodeTD) then + Props.Alignment := haLeft + else + if (FOwner is TIpHtmlNodeTH) then + Props.Alignment := haCenter; + end; + +{ if FTableElemOwner.Align <> haDefault then Props.Alignment := FTableElemOwner.Align else if FOwner is TIpHtmlNodeTH then Props.Alignment := haCenter; + } + if FOwner is TIpHtmlNodeTH then Props.FontStyle := Props.FontStyle + [fsBold]; + if FTableElemOwner.NoWrap then Props.NoBreak := True; + case FTableElemOwner.VAlign of hva3Default :; else Props.VAlignment := FTableElemOwner.VAlign; end; + if FTableElemOwner.BgColor <> -1 then Props.BgColor := FTableElemOwner.BgColor; + inherited Layout(Props, TargetRect); end; @@ -1436,7 +1480,8 @@ begin FIpHtml.Target.Brush.Color := Props.BGColor; FIpHtml.Target.FillRect(R); - end; + end else + FIpHtml.Target.Brush.Style := bsClear; end; Props.DelayCache:=False; inherited Render(Props); diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/iphtml.pas lazarus-1.6+dfsg/components/turbopower_ipro/iphtml.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/iphtml.pas 2015-02-10 22:52:01.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/iphtml.pas 2016-02-09 23:18:03.000000000 +0000 @@ -2,7 +2,7 @@ {* IPHTML.PAS - HTML Browser and associated classes *} {******************************************************************} -{ $Id: iphtml.pas 47694 2015-02-10 22:52:01Z maxim $ } +{ $Id: iphtml.pas 51561 2016-02-09 23:18:03Z maxim $ } (* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 @@ -53,8 +53,8 @@ {$IFDEF IP_LAZARUS} //MemCheck, Types, contnrs, - LCLType, LCLPRoc, GraphType, LCLIntf, LResources, LMessages, LCLMemManager, - Translations, FileUtil, LConvEncoding, + LCLType, GraphType, LCLProc, LCLIntf, LResources, LMessages, LCLMemManager, + Translations, FileUtil, LConvEncoding, LazUTF8, IpHtmlTabList, {$ELSE} Windows, @@ -127,7 +127,7 @@ {$ENDIF} TIpHtml = class; - + {$IFDEF IP_LAZARUS} TIpAbstractHtmlDataProvider = class; {$DEFINE CSS_INTERFACE} @@ -228,6 +228,9 @@ { TIpHtmlBaseLayouter } + TIpHtmlNodeIterator = procedure (ANode: TIpHtmlNode; AProps: TIpHtmlProps; + var Done: Boolean); + // Abstract base class for the HTML Layout engine TIpHtmlBaseLayouter = class protected @@ -236,6 +239,8 @@ FCurProps : TIpHtmlProps; FBlockMin, FBlockMax : Integer; function GetProps: TIpHtmlProps; + procedure RemoveLeadingLFs; + procedure RemoveDuplicateLFs; public FPageRect : TRect; constructor Create(AOwner: TIpHtmlNodeCore); virtual; @@ -246,6 +251,7 @@ procedure CalcMinMaxPropWidth(RenderProps: TIpHtmlProps; var aMin, aMax: Integer); virtual; abstract; procedure Render(RenderProps: TIpHtmlProps); virtual; abstract; + procedure IterateParents(AProc: TIpHtmlNodeIterator); public property Props : TIpHtmlProps read GetProps; end; @@ -297,6 +303,7 @@ TRectMethod = procedure(const R : TRect) of object; TIpHtmlNodeEnumProc = procedure(Node: TIpHtmlNode; const UserData: Pointer) of object; + TIpHtmlNodeClass = class of TIpHtmlNode; {abstract base node} TIpHtmlNode = class(TPersistent) @@ -326,7 +333,7 @@ procedure UnmarkControl; virtual; procedure HideUnmarkedControl; virtual; procedure EnumChildren(EnumProc: TIpHtmlNodeEnumProc; UserData: Pointer); virtual; - procedure AppendSelection(var S : string); virtual; + procedure AppendSelection(var S : string; var Completed: Boolean); virtual; public constructor Create(ParentNode : TIpHtmlNode); destructor Destroy; override; @@ -362,7 +369,7 @@ protected procedure ReportDrawRects(M : TRectMethod); override; procedure ReportMapRects(M : TRectMethod); override; - procedure AppendSelection(var S : string); override; + procedure AppendSelection(var S : string; var Completed: Boolean); override; procedure EnumChildren(EnumProc: TIpHtmlNodeEnumProc; UserData: Pointer); override; public constructor Create(ParentNode : TIpHtmlNode); @@ -481,7 +488,6 @@ TIpHtmlNodeBlock = class(TIpHtmlNodeCore) private - function CheckSelection(aSelIndex: Integer): Boolean; function GetPageRect: TRect; protected FLayouter : TIpHtmlBaseLayouter; @@ -496,7 +502,7 @@ function GetHeight(const RenderProps: TIpHtmlProps; const Width: Integer): Integer; procedure InvalidateSize; override; procedure ReportCurDrawRects(aOwner: TIpHtmlNode; M : TRectMethod); override; - procedure AppendSelection(var S : string); override; + procedure AppendSelection(var S : string; var Completed: Boolean); override; procedure SetBackground(const AValue: string); procedure SetBgColor(const AValue: TColor); procedure SetTextColor(const AValue: TColor); @@ -1457,16 +1463,24 @@ { TIpHtmlNodeTR } - TIpHtmlNodeTR = class(TIpHtmlNodeBlock) + TIpHtmlNodeTR = class(TIpHtmlNodeCore) private FAlign: TIpHtmlAlign; FVAlign: TIpHtmlVAlign; + FBgColor: TColor; + FTextColor: TColor; + procedure SetBgColor(const AValue: TColor); + procedure SetTextColor(const AValue: TColor); + protected + procedure AppendSelection(var S: String; var Completed: Boolean); override; public constructor Create(ParentNode : TIpHtmlNode); procedure SetProps(const RenderProps: TIpHtmlProps); override; public property Align : TIpHtmlAlign read FAlign write FAlign; property VAlign : TIpHtmlVAlign read FVAlign write FVAlign; + property BgColor: TColor read FBgColor write SetBgColor; + property TextColor: TColor read FTextColor write SetTextColor; end; TIpHtmlCellScope = (hcsUnspec, hcsRow, hcsCol, hcsRowGroup, hcsColGroup); @@ -1485,6 +1499,7 @@ FWidth: TIpHtmlLength; FVAlign: TIpHtmlVAlign3; protected + procedure AppendSelection(var S: String; var Completed: Boolean); override; procedure DimChanged(Sender: TObject); public FPadRect : TRect; @@ -1722,7 +1737,7 @@ TIpHtmlRectListEntry = record Rect : TRect; - Node : PIpHtmlElement; + Element : PIpHtmlElement; Block : TIpHtmlNodeBlock; end; PIpHtmlRectListEntry = ^TIpHtmlRectListEntry; @@ -2048,7 +2063,7 @@ destructor Destroy; override; function PagePtToScreen(const Pt: TPoint): TPoint; function PageRectToScreen(const Rect: TRect; var ScreenRect: TRect): Boolean; - procedure AddRect(const R: TRect; Node: PIpHtmlElement; Block: TIpHtmlNodeBlock); + procedure AddRect(const R: TRect; AElement: PIpHtmlElement; ABlock: TIpHtmlNodeBlock); procedure LoadFromStream(S : TStream); procedure Render(TargetCanvas: TCanvas; TargetPageRect : TRect; UsePaintBuffer: Boolean; const TopLeft: TPoint); @@ -2318,6 +2333,7 @@ function getFrame(i: integer): TIpHtmlFrame; procedure InternalFreeFrames; procedure InternalCreateFrames; + procedure RemoveDataProvider; public constructor Create(Viewer: TIpHtmlCustomPanel; Parent: TCustomPanel; DataProvider : TIpAbstractHtmlDataProvider; FlagErrors, NoScroll: Boolean; @@ -2641,6 +2657,8 @@ property FlagErrors; end; + TIdFindNodeCriteria = function(ACurrNode: TIpHtmlNodeCore): Boolean is nested; + const NAnchorChar = #3 ; {character used to represent an Anchor } var @@ -2665,6 +2683,13 @@ function GetAlignmentForStr(str: string; pDefault: TIpHtmlAlign = haDefault): TIpHtmlAlign; function dbgs(et: TElementType): string; overload; +function GetNextSiblingNode(ANode: TIpHtmlNode): TIpHtmlNode; +function GetPrevSiblingNode(ANode: TIpHtmlNode): TIpHtmlNode; +function GetParentNodeOfClass(ANode: TIpHtmlNode; AClass: TIpHtmlNodeClass): TIpHtmlNode; +function FindNode(ANode: TIpHtmlNode; ACriteria: TIdFindNodeCriteria): TIpHtmlNodeCore; +function FindNodeByElemId(ANode: TIpHtmlNode; const AElemId: string): TIpHtmlNodeCore; +function FindNodeByElemClass(ANode: TIpHtmlNode; const AElemClass: string): TIpHtmlNodeCore; + procedure Register; implementation @@ -2675,7 +2700,7 @@ {$IFDEF Html_Print} Printers, PrintersDlgs, IpHtmlPv, {$ENDIF} - ipHtmlBlockLayout, ipHtmlTableLayout; + StrUtils, ipHtmlBlockLayout, ipHtmlTableLayout; {$R *.res} @@ -2699,6 +2724,7 @@ MaxElements = 1024*1024; ShyChar = #1; {character used to represent soft-hyphen in strings} NbspChar = #2; {character used to represent no-break space in strings} + NbspUtf8 = #194#160; {utf8 code of no-break space character} WheelDelta = 8; const @@ -2798,6 +2824,117 @@ writestr(Result,et); end; +function GetNextSiblingNode(ANode: TIpHtmlNode): TIpHtmlNode; +var + node: TIpHtmlNode; + parent: TIpHtmlNodeMulti; + i: Integer; +begin + Result := nil; + if ANode = nil then + exit; + if (ANode.FParentNode = nil) or not (ANode.ParentNode is TIpHtmlNodeMulti) then + exit; + parent := TIpHtmlNodeMulti(ANode.FParentNode); + if parent.ChildCount = 1 then + exit; + Result := parent.ChildNode[parent.ChildCount-1]; + for i := parent.ChildCount-2 downto 0 do + begin + node := parent.ChildNode[i]; + if node = ANode then + exit; + Result := node; + end; + Result := nil; +end; + +function GetPrevSiblingNode(ANode: TIpHtmlNode): TIpHtmlNode; +var + node: TIpHtmlNode; + parent: TIpHtmlNodeMulti; + i: Integer; +begin + Result := nil; + if ANode = nil then + exit; + if (ANode.FParentNode = nil) or not (ANode.ParentNode is TIpHtmlNodeMulti) then + exit; + parent := TIpHtmlNodeMulti(ANode.FParentNode); + if parent.ChildCount = 1 then + exit; + Result := parent.ChildNode[0]; + for i:=1 to parent.ChildCount-1 do + begin + node := parent.ChildNode[i]; + if node = ANode then + exit; + Result := node; + end; + Result := nil; +end; + +function GetParentNodeOfClass(ANode: TIpHtmlNode; + AClass: TIpHtmlNodeClass): TIpHtmlNode; +begin + Result := ANode; + while Assigned(Result) and not (Result is AClass) do + Result := Result.FParentNode; +end; + +function FindNode(ANode: TIpHtmlNode; ACriteria: TIdFindNodeCriteria): TIpHtmlNodeCore; +var + I: Integer; + VNode: TIpHtmlNodeMulti; + VPrevNode, VNextNode: TIpHtmlNode; +begin + if not Assigned(ANode) or not (ANode is TIpHtmlNodeMulti) then + Exit(nil); + VNode := ANode as TIpHtmlNodeMulti; + if VNode.ChildCount < 1 then + Exit(nil); + for I := 0 to Pred(VNode.ChildCount) do + begin + VPrevNode := VNode.ChildNode[I]; + VNextNode := FindNode(VPrevNode, ACriteria); + if not Assigned(VNextNode) then + VNextNode := VPrevNode; + if VNextNode is TIpHtmlNodeCore then + begin + Result := VNextNode as TIpHtmlNodeCore; + if ACriteria(Result) then + Exit; + end; + end; + Result := nil; +end; + +function FindNodeByElemId(ANode: TIpHtmlNode; const AElemId: string): TIpHtmlNodeCore; + + function Criteria(ACurrNode: TIpHtmlNodeCore): Boolean; + begin + if ACurrNode.Id = AElemId then + Exit(True); + Result := False; + end; + +begin + Result := FindNode(ANode, Criteria); +end; + +function FindNodeByElemClass(ANode: TIpHtmlNode; const AElemClass: string): TIpHtmlNodeCore; + + function Criteria(ACurrNode: TIpHtmlNodeCore): Boolean; + begin + if ACurrNode.ClassId = AElemClass then + Exit(True); + Result := False; + end; + +begin + Result := FindNode(ANode, Criteria); +end; + procedure Register; begin RegisterComponents('IPro', [TIpHtmlPanel]); @@ -3151,7 +3288,10 @@ if not OnUTF8 and (Index1 >= 32) and (Index1 <= 255) then Result := Chr(Index1) else + begin Result := UnicodeToUTF8(Index1); + if Result = NbspUTF8 then Result := NbspChar; + end; end; end else begin @@ -3238,12 +3378,25 @@ function NoBreakToSpace(const S: string): string; var - P : Integer; + P, n : Integer; begin - Result := S; - for P := length(Result) downto 1 do - if Result[P] = NbspChar then - Result[P] := ' '; + SetLength(Result, Length(S)); + n := 0; + P := 1; + while P <= Length(S) do + begin + inc(n); + if S[P] = NbspChar then + Result[n] := ' ' + else if (P < Length(S)) and (S[P] = NbspUtf8[1]) and (S[P+1] = NbspUtf8[2]) then + begin + Result[n] := ' '; + inc(P); + end else + Result[n] := S[P]; + inc(P); + end; + SetLength(Result, n); end; procedure SetRawWordValue(Entry: PIpHtmlElement; const Value: string); @@ -3515,6 +3668,52 @@ Result := FOwner.Props; end; +procedure TIpHtmlBaseLayouter.IterateParents(AProc: TIpHtmlNodeIterator); +var + p: TIpHtmlNode; + done: Boolean; +begin + p := FOwner; //.FParentNode; + done := false; + while Assigned(p) do + begin + AProc(p, Props, done); + if done then + break + else + p := p.FParentNode; + end; +end; + +procedure TIpHtmlBaseLayouter.RemoveLeadingLFs; +begin + while PIpHtmlElement(FElementQueue[0])^.ElementType in [etSoftLF, etHardLF] do + FElementQueue.Delete(0); +end; + +procedure TIpHtmlBaseLayouter.RemoveDuplicateLFs; +var + i: Integer; +begin + i := pred(FElementQueue.Count); + while i >= 0 do begin + case PIpHtmlElement(FElementQueue[i])^.ElementType of + etSoftLF: + if (i > 0) and (PIpHtmlElement(FElementQueue[i-1])^.ElementType in [etSoftLF, etHardLF]) + then FElementQueue.Delete(i); + { + etHardLF: + if (i > 0) and (PIpHtmlElement(FElementQueue[i-1])^.ElementType in [etSoftLF, etHardLF]) + then begin + FElementQueue.Delete(i-1); + dec(i); + end; + } + end; + dec(i); + end; +end; + { TIpHtmlBaseTableLayouter } constructor TIpHtmlBaseTableLayouter.Create(AOwner: TIpHtmlNodeCore); @@ -3727,7 +3926,7 @@ FParentNode.ReportCurDrawRects(Owner, M); end; -procedure TIpHtmlNode.AppendSelection(var S: string); +procedure TIpHtmlNode.AppendSelection(var S: string; var Completed: Boolean); begin end; @@ -4172,13 +4371,17 @@ TIpHtmlNode(FChildren[i]).EnumChildren(EnumProc, UserData); end; -procedure TIpHtmlNodeMulti.AppendSelection(var S: string); +procedure TIpHtmlNodeMulti.AppendSelection(var S: string; var Completed: Boolean); var i : Integer; begin - inherited; + if Completed then + exit; for i := 0 to Pred(FChildren.Count) do - TIpHtmlNode(FChildren[i]).AppendSelection(S); + begin + TIpHtmlNode(FChildren[i]).AppendSelection(S, Completed); + if Completed then exit; + end; end; { TIpHtmlNodeBODY } @@ -4815,9 +5018,9 @@ SeenEqual := False; SeenQuotes := False; end; - ' ' : + ' ', '/' : if InQuote then - AddParmChar(' ') + AddParmChar(ch) else if InAttr then begin InAttr := False; @@ -6190,6 +6393,7 @@ FixupPercentages(CurRow); CurRow := TIpHtmlNodeTR.Create(Parent); CurRow.ParseBaseProps(Self); + CurRow.BgColor := ColorFromString(FindAttribute(htmlAttrBGCOLOR)); CurRow.Align := ParseAlignment; CurRow.VAlign := ParseVAlignment; CurRow.LoadAndApplyCSSProps; @@ -6315,11 +6519,11 @@ Border := ParseInteger(htmlAttrBORDER, 0); CellSpacing := ParseInteger(htmlAttrCELLSPACING, 2); CellPadding := ParseInteger(htmlAttrCELLPADDING, 2); + BgColor := ColorFromString(FindAttribute(htmlAttrBGCOLOR)); ParseBaseProps(Self); Summary := FindAttribute(htmlAttrSUMMARY); Frame := ParseFrameProp(Frame); Rules := ParseRules(Rules); - BgColor := ColorFromString(FindAttribute(htmlAttrBGCOLOR)); end; repeat @@ -6431,7 +6635,10 @@ ParseMAP(Parent, EndTokens); IpHtmlTagText : begin - TIpHtmlNodeText.Create(Parent).FEscapedText := GetTokenString; + if InPre > 0 then + TIpHtmlNodeText.Create(Parent).ANSIText := GetTokenString + else + TIpHtmlNodeText.Create(Parent).FEscapedText := GetTokenString; NextToken; end; IpHtmlTagINPUT, @@ -7518,7 +7725,7 @@ function TIpHtml.ParseCellAlign(Default : TIpHtmlAlign): TIpHtmlAlign; begin - Result := GetAlignmentForStr(FindAttribute(htmlAttrALIGN), haCenter); + Result := GetAlignmentForStr(FindAttribute(htmlAttrALIGN), Default); // if FlagErrors then // ReportError(SHtmlInvAlign); end; @@ -7644,24 +7851,23 @@ function TIpHtml.GetSelectionBlocks(out StartSelIndex,EndSelIndex: Integer): boolean; var R : TRect; - CurBlock: TIpHtmlNodeBlock; + //CurBlock: TIpHtmlNodeBlock; begin Result := false; if not FAllSelected and ((FStartSel.x < 0) or (FEndSel.x < 0)) then Exit; - if not FAllSelected then begin - CurBlock := nil; + //CurBlock := nil; // search blocks that intersect the selection - // 1.- find first block that intersect upleft point of sel. (start from 0) + // 1.- find first block that intersects upleft point of sel. (start from 0) StartSelIndex := 0; while StartSelIndex < RectList.Count do begin - CurBlock := PIpHtmlRectListEntry(RectList[StartSelIndex]).Block; + //CurBlock := PIpHtmlRectListEntry(RectList[StartSelIndex]).Block; {if FAllSelected and (CurBlock <> nil) then break;} - if PtInRect(CurBlock.PageRect, FStartSel) then begin +// if PtInRect(CurBlock.PageRect, FStartSel) then begin R := PIpHtmlRectListEntry(RectList[StartSelIndex]).Rect; if R.Bottom = 0 then else @@ -7679,14 +7885,14 @@ else if (R.Left >= FStartSel.x) and (R.Right <= FEndSel.x) then break; - end; +// end; Inc(StartSelIndex); end; if StartSelIndex >= RectList.Count then Exit; - // 2.- find first block thta intersect downright point of sel. (start from count-1) + // 2.- find first block that intersects downright point of sel. (start from count-1) EndSelIndex := Pred(RectList.Count); while EndSelIndex >= StartSelIndex do begin - if PIpHtmlRectListEntry(RectList[EndSelIndex]).Block = CurBlock then begin + // if PIpHtmlRectListEntry(RectList[EndSelIndex]).Block = CurBlock then begin {if FAllSelected then break;} R := PIpHtmlRectListEntry(RectList[EndSelIndex]).Rect; @@ -7704,7 +7910,7 @@ else if (R.Left >= FStartSel.x) and (R.Right <= FEndSel.x) then break; - end; +// end; Dec(EndSelIndex); end; end else begin @@ -7717,12 +7923,12 @@ function TIpHtml.getControlCount:integer; begin - result := FControlList.Count; + result := FControlList.Count; end; function TIpHtml.getControl(i:integer):TIpHtmlNode; begin - result := FControlList[i]; + result := FControlList[i]; end; procedure TIpHtml.PaintSelection; @@ -8238,7 +8444,7 @@ FCurElement := nil; for i := 0 to Pred(RectList.Count) do if PtInRect(PIpHtmlRectListEntry(RectList[i]).Rect, Pt) then begin - FCurElement := PIpHtmlRectListEntry(RectList[i]).Node; + FCurElement := PIpHtmlRectListEntry(RectList[i]).Element; break; end; end; @@ -8324,14 +8530,15 @@ FOnPost(Self, URL, FormData); end; -procedure TIpHtml.AddRect(const R : TRect; Node : PIpHtmlElement; Block: TIpHtmlNodeBlock); +procedure TIpHtml.AddRect(const R: TRect; AElement: PIpHtmlElement; + ABlock: TIpHtmlNodeBlock); var NewEntry : PIpHtmlRectListEntry; begin New(NewEntry); NewEntry.Rect := R; - NewEntry.Node := Node; - NewEntry.Block := Block; + NewEntry.Element := AElement; + NewEntry.Block := ABlock; RectList.Add(NewEntry); end; @@ -8395,15 +8602,15 @@ for i:= 0 to RectList.Count-1 do begin item := PIpHtmlRectListEntry(RectList[i]); // (de)select only text elements - if Item.Node.ElementType<>etWord then + if Item.Element.ElementType<>etWord then Continue; if DeselectAll then Selected := false else Selected := (StartSelIndex<=i)and(i<=EndSelIndex); // Invalidate only changed elements - if Item.Node.IsSelected<>Selected then begin - Item.Node.IsSelected := Selected; + if Item.Element.IsSelected<>Selected then begin + Item.Element.IsSelected := Selected; if Body.PageRectToScreen(Item^.Rect, R) then InvalidateRect(R); end; @@ -8433,11 +8640,14 @@ procedure TIpHtml.CopyToClipboard; var S : string; + completed: Boolean; begin if HaveSelection then begin S := ''; - if FHtml <> nil then - FHtml.AppendSelection(S); + if FHtml <> nil then begin + completed := false; // terminate recursion if selection-end-point is found + FHtml.AppendSelection(S, completed); + end; if S <> '' then begin Clipboard.Open; try @@ -9003,82 +9213,153 @@ end; end; -function TIpHtmlNodeBlock.CheckSelection(aSelIndex: Integer): Boolean; -var - CurElem : PIpHtmlElement; - R : TRect; -begin - CurElem := PIpHtmlElement(FLayouter.FElementQueue[aSelIndex]); - R := CurElem.WordRect2; - if (R.Bottom <> 0) and (R.Top > Owner.FStartSel.Y) - and (R.Bottom < Owner.FEndSel.Y) then - Exit(False) - else - if PtInRect(R, Owner.FStartSel) or PtInRect(R, Owner.FEndSel) then - Exit(False) - else - if (R.Bottom >= Owner.FStartSel.Y) and (R.Top <= Owner.FEndSel.Y) - and (R.Left >= Owner.FStartSel.X) and (R.Right <= Owner.FEndSel.X) then - Exit(False); - Result := True; -end; - function TIpHtmlNodeBlock.GetPageRect: TRect; begin Result := FLayouter.FPageRect; end; -procedure TIpHtmlNodeBlock.AppendSelection(var S: string); +procedure TIpHtmlNodeBlock.AppendSelection(var S: string; var Completed: Boolean); + + // Avoid adding too many linefeeds - at most one blank line! + procedure AddLF(var S: String); + const + DBL_LF = LineEnding + LineEnding; + var + endPart: String; + begin + if S <> '' then begin + endpart := Copy(S, Length(S) - Length(DBL_LF) + 1, Length(DBL_LF)); + if endpart <> DBL_LF then + S := S + LineEnding; + end; + end; + var - LastY, StartSelIndex, EndSelIndex, i : Integer; + LastY, StartSelIndex, EndSelIndex, i, istart, iend : Integer; + LastNode: TIpHtmlNode; CurElem : PIpHtmlElement; R : TRect; LFDone : Boolean; + EndPt: TPoint; begin - if not Owner.FAllSelected then begin - StartSelIndex := 0; - while StartSelIndex < FLayouter.FElementQueue.Count do begin - if not CheckSelection(StartSelIndex) then - Break; - Inc(StartSelIndex); - end; - EndSelIndex := Pred(FLayouter.FElementQueue.Count); - while EndSelIndex >= 0 do begin - if not CheckSelection(EndSelIndex) then - Break; - Dec(EndSelIndex); + if Completed then + exit; + + StartSelIndex := 0; + EndSelIndex := pred(FLayouter.FElementQueue.Count); + EndPt := Point(-1, -1); + + if not Owner.FAllSelected then + begin + // Find elements which contain the start-/end-selection-points + // Note: they may not be in correct order because the y coords of the start/end + // clicks may be reversed if in the same line of an etObject element! + istart := -1; + iend := -1; + for i:=0 to pred(FLayouter.FElementQueue.Count) do + begin + CurElem := PIpHtmlElement(FLayouter.FElementQueue[i]); + if PtInRect(CurElem^.WordRect2, Owner.FStartSel) then + istart := i; + if PtInRect(CurElem^.WordRect2, Owner.FEndSel) then + iend := i; + if (istart <> -1) and (iend <> -1) then + break; + end; + + // Start click could have been before first char of a line + if (istart = -1) then + for i:=0 to pred(FLayouter.FElementQueue.Count) do + begin + CurElem := PIpHtmlElement(FLayouter.FElementQueue[i]); + R := CurElem^.WordRect2; + if (Owner.FEndSel.Y >= R.Top) and (Owner.FEndSel.Y <= R.Bottom) and (Owner.FEndSel.X < R.Left) then + begin + istart := i; + break; + end; + end; + + // End click could have been beyond line end + if (iend = -1) then + for i:=pred(FLayouter.FElementQueue.Count) downto 0 do + begin + CurElem := PIpHtmlElement(FLayouter.FElementQueue[i]); + R := CurElem^.WordRect2; + if (Owner.FEndSel.Y >= R.Top) and (Owner.FEndSel.Y <= R.Bottom) and (Owner.FEndSel.X > R.Right) then + begin + iend := i; + EndPt := Point((R.Left + R.Right) div 2, (R.Top + R.Bottom) div 2); + break; + end; + end; + + if (istart <> -1) and (iend <> -1) then + begin + if istart < iend then + begin + StartSelIndex := istart; + EndSelIndex := iend; + if (EndPt.X = -1) and (EndPt.Y = -1) then + EndPt := Owner.FEndSel; + end else + begin + StartSelIndex := iend; + EndSelIndex := istart; + if (EndPt.X = -1) and (EndPt.Y = -1) then + EndPt := Owner.FStartSel; + end; + end else + if (istart <> -1) and (iend = -1) then + StartSelIndex := istart + else + if (istart = -1) and (iend <> -1) then + begin + EndSelIndex := iend; + if (EndPt.X = -1) and (EndPt.Y = -1) then + EndPt := Owner.FEndSel; end; - end else begin - StartSelIndex := 0; - EndSelIndex := FLayouter.FElementQueue.Count - 1; end; + + LastNode := nil; LastY := -1; LFDone := True; for i := StartSelIndex to EndSelIndex do begin CurElem := PIpHtmlElement(FLayouter.FElementQueue[i]); R := CurElem.WordRect2; - if not LFDone and (R.Top <> LastY) then begin - S := S + #13#10; - LFDone := True; - end; + + // Take care of inserting blank lines after headers etc., but don't insert + // line breaks in long text elements. + if not LFDone and (R.Top <> LastY) and (LastNode <> CurElem.Owner) then + AddLF(S); + case CurElem.ElementType of etWord : - begin + if CurElem.AnsiWord <> NAnchorChar then begin S := S + NoBreakToSpace(CurElem.AnsiWord); LFDone := False; end; etObject : begin - TIpHtmlNodeAlignInline(CurElem.Owner).AppendSelection(S); + TIpHtmlNodeAlignInline(CurElem.Owner).AppendSelection(S, Completed); LFDone := False; end; etSoftLF..etClearBoth : if not LFDone then begin - S := S + #13#10; + AddLF(S); LFDone := True; end; end; LastY := R.Top; + LastNode := CurElem.Owner; + + // Prevent running over selection end if there is an etObject element at + // current level of recursion. + if not Owner.FAllSelected then + if PtInRect(R, EndPt) then begin + Completed := true; + exit; + end; end; end; @@ -9110,15 +9391,20 @@ procedure TIpHtmlNodeP.Enqueue; begin if FChildren.Count > 0 then begin - if not (FParentNode is TIpHtmlNodeLI) then begin + if not ((FParentNode is TIpHtmlNodeLI) or (FParentNode is TIpHtmlNodeTD)) then + begin EnqueueElement(Owner.SoftLF); EnqueueElement(Owner.HardLF); end; end; + inherited Enqueue; + if FChildren.Count > 0 then begin - EnqueueElement(Owner.SoftLF); - EnqueueElement(Owner.HardLF); + if not (FParentNode is TIpHtmlNodeTD) then begin + EnqueueElement(Owner.SoftLF); + EnqueueElement(Owner.HardLF); + end; end; end; @@ -9276,7 +9562,7 @@ inherited Enqueue; if FChildren.Count > 0 then begin EnqueueElement(Owner.SoftLF); - EnqueueElement(Owner.HardLF); +// EnqueueElement(Owner.HardLF); // Remove large spacing after header line end; end; @@ -9714,7 +10000,9 @@ SetRectEmpty(R); for i := 0 to Pred(AreaList.Count) do UnionRect(R, R, PRect(AreaList[i])^); - Owner.MakeVisible(R{$IFDEF IP_LAZARUS}, False{$ENDIF}); + + Owner.MakeVisible(R{$IFDEF IP_LAZARUS}, true {$ENDIF}); + //Owner.MakeVisible(R{$IFDEF IP_LAZARUS}, False {$ENDIF}); // original end; procedure TIpHtmlNodeA.SetProps(const RenderProps: TIpHtmlProps); @@ -9884,10 +10172,14 @@ aCanvas : TCanvas; begin aCanvas := Owner.Target; + + Props.BGColor := BGColor; if (Props.BGColor <> -1) and PageRectToScreen(BorderRect, R) then begin - aCanvas.Brush.Color := Props.BGColor; + aCanvas.Brush.Color :=Props.BGColor; aCanvas.FillRect(R); - end; + end + else if (Props.BGColor = -1) then + aCanvas.Brush.Style := bsClear; aCanvas.Pen.Color := clBlack; Al := Props.VAlignment; @@ -9926,11 +10218,8 @@ end; // set TR color, Render override them anyway if TD/TH have own settings - if TrBgColor <> -1 then - Props.BGColor := TrBgColor; - - if TrTextColor <> -1 then - Props.FontColor := TrTextColor; + Props.BGColor := TrBgColor; + Props.FontColor := TrTextColor; Props.VAlignment := Al; Render(Props); @@ -10083,9 +10372,15 @@ hiaCenter : EnqueueElement(Owner.SoftLF); end; -} + } + EnqueueElement(Owner.SoftLF); + EnqueueElement(Owner.HardLF); + EnqueueElement(Element); -{ + + EnqueueElement(Owner.SoftLF); + EnqueueElement(Owner.hardLF); // LFs needed otherwise next element is too close + { case Align of hiaTop, hiaMiddle, @@ -10093,7 +10388,7 @@ hiaCenter : EnqueueElement(Owner.SoftLF); end; -} + } end; procedure TIpHtmlNodeTABLE.SetBorder(const Value: Integer); @@ -10193,6 +10488,8 @@ end; {$ENDIF} +{ TIpNodeTR } + procedure TIpHtmlNodeTR.SetProps(const RenderProps: TIpHtmlProps); begin Props.Assign(RenderProps); @@ -10207,6 +10504,35 @@ FElementName := 'tr'; FAlign := haDefault; FValign := hvaMiddle; + FBgColor := -1; + FTextColor := -1; +end; + +procedure TIpHtmlNodeTR.AppendSelection(var S: String; var Completed: Boolean); +var + prev: TIpHtmlNode; +begin + if Completed then + exit; + prev := GetPrevSiblingNode(Self); + if prev is TIpHtmlNodeTR then S := S + LineEnding; + inherited AppendSelection(S, Completed); +end; + +procedure TIpHtmlNodeTR.SetBgColor(const AValue: TColor); +begin + if AValue <> FBgColor then begin + FBgColor := AValue; + InvalidateSize; + end; +end; + +procedure TIpHtmlNodeTR.SetTextColor(const AValue: TColor); +begin + if AValue <> FTextColor then begin + FTextColor := AValue; + InvalidateSize; + end; end; { TIpHtmlNodeMAP } @@ -10931,8 +11257,10 @@ if FChildren.Count > 0 then EnqueueElement(Owner.HardLF); inherited Enqueue; + { if FChildren.Count > 0 then EnqueueElement(Owner.HardLF); + } end; { TIpHtmlNodeBLOCKQUOTE } @@ -11074,19 +11402,19 @@ procedure setCommonProperties; begin - FControl.Visible := False; - FControl.Parent := Parent; - adjustFromCss; - aCanvas.Font.Size := FControl.Font.Size; + FControl.Parent := Parent; + FControl.Visible := False; + AdjustFromCss; + aCanvas.Font.Size := FControl.Font.Size; end; - procedure setWidhtHeight(iSize, iTopPlus, iSidePlus: integer); + procedure SetWidthHeight(iSize, iTopPlus, iSidePlus: integer); begin - if iSize <> -1 then - FControl.Width := iSize * aCanvas.TextWidth('0') + iSidePlus - else - FControl.Width := 20 * aCanvas.TextWidth('0') + iSidePlus; - FControl.Height := aCanvas.TextHeight('Wy') + iTopPlus; + if iSize <> -1 then + FControl.Width := iSize * aCanvas.TextWidth('0') + iSidePlus + else + FControl.Width := 20 * aCanvas.TextWidth('0') + iSidePlus; + FControl.Height := aCanvas.TextHeight('Wy') + iTopPlus; end; begin @@ -11099,9 +11427,10 @@ FControl := TEdit.Create(Parent); setCommonProperties; with TEdit(FControl) do begin + Color := Brush.Color; Text := Value; MaxLength := Self.MaxLength; - setWidhtHeight(Self.Size, 8, 0); + SetWidthHeight(Self.Size, 8, 0); Enabled := not Self.Disabled; ReadOnly := Self.ReadOnly; OnChange := ButtonClick; @@ -11113,9 +11442,10 @@ FControl := TEdit.Create(Parent); setCommonProperties; with TEdit(FControl) do begin + Color := Brush.Color; Text := Value; MaxLength := Self.MaxLength; - setWidhtHeight(1, 8, 0); + SetWidthHeight(Self.Size, 8, 0); Enabled := not Self.Disabled; ReadOnly := Self.ReadOnly; PasswordChar := '*'; @@ -11128,7 +11458,8 @@ FControl := TCheckBox.Create(Parent); setCommonProperties; with TCheckBox(FControl) do begin - setWidhtHeight(1, 8, 0); + Color := Brush.Color; + SetWidthHeight(1, 8, 0); Checked := Self.Checked; Enabled := not Self.Disabled and not Self.Readonly; OnClick := ButtonClick; @@ -11149,7 +11480,8 @@ {$ELSE} with THtmlRadioButton(FControl) do begin {$ENDIF} - setWidhtHeight(1, 8, 0); + Color := Brush.Color; + SetWidthHeight(1, 8, 0); Checked := Self.Checked; Enabled := not Self.Disabled and not Self.Readonly; OnClick := ButtonClick; @@ -11165,6 +11497,7 @@ Caption := Self.Value else Caption := SHtmlDefSubmitCaption; + Color := Brush.Color; Width := aCanvas.TextWidth(Caption) + 40; Height := aCanvas.TextHeight(Caption) + 10; Enabled := not Self.Disabled and not Self.Readonly; @@ -11180,6 +11513,7 @@ Caption := Self.Value else Caption := SHtmlDefResetCaption; + Color := Brush.Color; Width := aCanvas.TextWidth(Caption) + 40; Height := aCanvas.TextHeight(Caption) + 10; Enabled := not Self.Disabled and not Self.Readonly; @@ -11211,6 +11545,7 @@ FFileEdit := TEdit.Create(Parent); with FFileEdit do begin Parent := FControl; + Color := Brush.Color; Left := 1; Top := 1; Width := FControl.Width - FFileSelect.Width; @@ -11265,18 +11600,10 @@ end; } inherited; -{$IFDEF VERSION3ONLY} - if FControl is TRadioButton then begin -{$ELSE} - if FControl is THtmlRadioButton then begin -{$ENDIF} - if Props.BgColor <> -1 then -{$IFDEF VERSION3ONLY} - TRadioButton(FControl).Color := Props.BgColor; -{$ELSE} - THtmlRadioButton(FControl).Color := Props.BgColor; -{$ENDIF} - end; + if (Props.BgColor <> -1) and ( + (FControl is {$IFDEF VERSION3ONLY}TRadioButton{$ELSE}THtmlRadioButton{$ENDIF}) or + (FControl is TCustomEdit)) then + FControl.Color := Props.BgColor; end; procedure TIpHtmlNodeINPUT.ImageChange(NewPicture: TPicture); @@ -11414,6 +11741,7 @@ begin inherited; FElementName := 'input'; + Props.BgColor := clWhite; end; destructor TIpHtmlNodeINPUT.Destroy; @@ -12312,6 +12640,18 @@ inherited; end; +procedure TIpHtmlNodeTableHeaderOrCell.AppendSelection(var S: String; + var Completed: Boolean); +var + prev: TIpHtmlNode; +begin + if Completed then + exit; + prev := GetPrevSiblingNode(self); + if prev is TIpHtmlNodeTableHeaderOrCell then S := S + #9; + inherited AppendSelection(S, Completed); +end; + procedure TIpHtmlNodeTableHeaderOrCell.CalcMinMaxPropWidth(RenderProps: TIpHtmlProps; var Min, Max: Integer); begin @@ -12772,10 +13112,17 @@ {$IFDEF IP_LAZARUS} Self.SetFocus; if (Button=mbLeft) and HtmlPanel.AllowTextSelect then begin - ClearSelection; - SelStart := Point(X + ViewLeft, Y + ViewTop); - NewSelection := False; - HaveSelection := True; + if Shift * [ssShift] = [] then begin + ClearSelection; + SelStart := Point(X + ViewLeft, Y + ViewTop); + NewSelection := False; + HaveSelection := True; + end else + if (Shift * [ssShift] = [ssShift]) and HaveSelection then begin + SelEnd := Point(X + ViewLeft, Y + ViewTop); + SetSelection; + ScrollPtInView(SelEnd); + end; end; {$ELSE} IPHC := HtmlPanel; @@ -12790,9 +13137,8 @@ begin inherited; MouseIsDown := False; - if (abs(MouseDownX - X) < 4) - and (abs(MouseDownY - Y) < 4) then - if (Button = mbLeft) and (Hyper.HotNode <> nil) then + if (abs(MouseDownX - X) < 4) and (abs(MouseDownY - Y) < 4) then + if (Button = mbLeft) and (Shift = []) and (Hyper.HotNode <> nil) then {$IFDEF IP_LAZARUS} // to avoid references to invalid objects do it asynchronously Application.QueueAsyncCall(AsyncHotInvoke, 0) @@ -12902,6 +13248,19 @@ TIpHtmlCustomPanel(Owner).Scroll(hsaEnd); Key := 0 end + else if ((key = VK_C) or (key = VK_INSERT)) and (Shift = [ssCtrl]) then // copy to clipboard + begin + HtmlPanel.CopyToClipboard; +// FHyper.CopyToClipboard; + Key := 0; + end + else if (key = VK_A) and (Shift = [ssCtrl]) then // select all + begin + HtmlPanel.SelectAll; +// FHyper.SelectAll; +// Invalidate; + Key := 0; + end else if key = VK_RETURN then // return begin if (FHyper.FTabList.TabItem <> nil) and (FHyper.FTabList.TabItem is TIpHtmlNodeA) then @@ -12914,6 +13273,8 @@ Key := 0 end; end + else if ((key = VK_C) or (key = VK_INSERT)) and (ssCtrl in Shift) then + FHyper.CopyToClipboard else inherited KeyDown(Key, Shift); end; @@ -13955,6 +14316,7 @@ E := FHtml.FindElement(URL); FCurAnchor := ''; if E <> nil then begin + HyperPanel.GetPageRect; // Make sure that layout is valid E.MakeVisible; FCurAnchor := '#'+URL; end else @@ -14253,6 +14615,16 @@ result := FFrames[i]; end; +procedure TIpHtmlFrame.RemoveDataProvider; +var + i: Integer; +begin + FDataProvider := nil; + for i:=0 to High(FFrames) do + if FFrames[i] <> nil then FFrames[i].FDataProvider := nil; +end; + + { TIpHtmlNvFrame } procedure TIpHtmlNvFrame.InitHtml; @@ -14738,6 +15110,7 @@ if (Operation = opRemove) then if (AComponent = DataProvider) then begin DataProvider := nil; + FMasterFrame.RemoveDataProvider; end; inherited Notification(AComponent, Operation); end; @@ -15506,5 +15879,6 @@ initialization InitScrollProcs; + end. diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/iphtmlpv.pas lazarus-1.6+dfsg/components/turbopower_ipro/iphtmlpv.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/iphtmlpv.pas 2012-04-09 08:24:59.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/iphtmlpv.pas 2016-01-18 11:20:17.000000000 +0000 @@ -32,6 +32,10 @@ unit IpHtmlPv; +{$IFNDEF Html_Print} + {$ERROR requires -dHTML_Print} +{$ENDIF} + interface uses Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/turbopower_ipro/iphtml.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/turbopower_ipro/iphtml.res differ diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/iphttpbroker.pas lazarus-1.6+dfsg/components/turbopower_ipro/iphttpbroker.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/iphttpbroker.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/iphttpbroker.pas 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1,191 @@ +(* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is TurboPower Internet Professional + * + * The Initial Developer of the Original Code is + * TurboPower Software + * + * Portions created by the Initial Developer are Copyright (C) 2000-2002 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Silvio Clecio - https://github.com/silvioprog + * + * ***** END LICENSE BLOCK ***** *) + +(* Part of Ipbroker.pas allowing to use online files Silvio Clecio Jan 2016 *) + +unit Iphttpbroker; + +{$I ipdefine.inc} + +interface + +uses + IpFileBroker, FPHttpClient, IpMsg, IpUtils, IpHtml, Graphics, Classes; + +type + + { TIpHttpClient } + + TIpHttpClient = class(TFPHTTPClient) + end; + + { TIpHttpDataProvider } + + TIpHttpDataProvider = class(TIpCustomHtmlDataProvider) + private + FClient: TIpHttpClient; + FDocumment: TMemoryStream; + FContentType: string; + protected + property Documment: TMemoryStream read FDocumment; + property Client: TIpHttpClient read FClient; + public + constructor Create(AOwner : TComponent); override; + destructor Destroy; override; + function GetHtmlStream(const AUrl: string; + APostData: TIpFormDataEntity): TStream; override; + {$IFDEF IP_LAZARUS} + function DoGetStream(const AUrl: string): TStream; override; + {$ENDIF} + function CheckURL(const AUrl: string; + var AContentType: string): Boolean; override; + procedure Leave(AHtml: TIpHtml); override; + procedure Reference(const AUrl: string); override; + procedure GetImage(ASender: TIpHtmlNode; const AUrl: string; + var APicture: TPicture); override; + function CanHandle(const AUrl: string): Boolean; override; + end; + +procedure Register; + +implementation + +{ TIpHttpDataProvider } + +constructor TIpHttpDataProvider.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FClient := TIpHttpClient.Create(nil); + FDocumment := TMemoryStream.Create; + HandledProtocols.Add('HTTP'); + FClient.ResponseHeaders.NameValueSeparator := ':'; +{$IF FPC_FULLVERSION > 30000} + FClient.AllowRedirect := True; + FClient.MaxRedirects := High(Byte); +{$ENDIF} +end; + +destructor TIpHttpDataProvider.Destroy; +begin + FDocumment.Free; + FClient.Free; + inherited Destroy; +end; + +function TIpHttpDataProvider.GetHtmlStream(const AUrl: string; + APostData: TIpFormDataEntity): TStream; +begin + Result := TMemoryStream.Create; + Result.CopyFrom(FDocumment, 0); + Result.Seek(0, soFromBeginning); +end; + +{$IFDEF IP_LAZARUS} +function TIpHttpDataProvider.DoGetStream(const AUrl: string): TStream; +begin + Result := TMemoryStream.Create; + Result.CopyFrom(FDocumment, 0); + Result.Seek(0, soFromBeginning); +end; +{$ENDIF} + +function TIpHttpDataProvider.CheckURL(const AUrl: string; + var AContentType: string): Boolean; +var + VAddrRec: TIpAddrRec; +begin +{$IFDEF VER2_6} + FillChar(VAddrRec, SizeOf(TIpAddrRec), 0); +{$ELSE} + VAddrRec := Default(TIpAddrRec); +{$ENDIF} + Initialize(VAddrRec); + try + IpParseURL(AUrl, VAddrRec); + FDocumment.Clear; + FClient.Get(AUrl, FDocumment); + Result := (FClient.ResponseStatusCode = 200) +{$IF FPC_FULLVERSION > 30000}or FClient.IsRedirect(FClient.ResponseStatusCode){$ENDIF}; + if Result then + begin + FContentType := FClient.ResponseHeaders.Values['Content-Type']; + AContentType := FContentType; + end; + finally + Finalize(VAddrRec); + end; +end; + +procedure TIpHttpDataProvider.Leave(AHtml: TIpHtml); +begin + inherited Leave(AHtml); +end; + +procedure TIpHttpDataProvider.Reference(const AUrl: string); +begin + inherited Reference(AUrl); +end; + +procedure TIpHttpDataProvider.GetImage(ASender: TIpHtmlNode; + const AUrl: string; var APicture: TPicture); +var + VImgRaw: TStream; +begin + APicture := nil; + VImgRaw := TMemoryStream.Create; + try + FClient.Get(AUrl, VImgRaw); + if (FClient.ResponseStatusCode = 200) and + (Pos('image/', FClient.ResponseHeaders.Values['Content-Type']) > 0) then + try + VImgRaw.Seek(0, soFromBeginning); + APicture := TPicture.Create; + APicture.LoadFromStream(VImgRaw); + except + on EInvalidGraphic do + begin + APicture.Free; + APicture := nil; + end; + end; + finally + VImgRaw.Free; + end; +end; + +function TIpHttpDataProvider.CanHandle(const AUrl: string): Boolean; +begin + Result := Assigned(FDocumment) and ((Pos('text/html', FContentType) > 0) or + (Pos('image/', FContentType) > 0)); +end; + +procedure Register; +begin + RegisterComponents('IPro', [TIpHttpDataProvider]); +end; + +end. diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/ipmsg.pas lazarus-1.6+dfsg/components/turbopower_ipro/ipmsg.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/ipmsg.pas 2014-11-12 19:08:47.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/ipmsg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -2,7 +2,7 @@ {* IPMSG.PAS - MIME message classes *} {******************************************************************} -{ $Id: ipmsg.pas 46818 2014-11-12 19:08:47Z mattias $ } +{ $Id: ipmsg.pas 49494 2015-07-04 23:08:00Z juha $ } (* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 @@ -43,7 +43,7 @@ {$IFDEF IP_LAZARUS} LCLType, LCLIntf, - FileUtil, LazUTF8Classes, + LazFileUtils, LazUTF8Classes, {$ELSE} Windows, {$ENDIF} diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/ipstrms.pas lazarus-1.6+dfsg/components/turbopower_ipro/ipstrms.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/ipstrms.pas 2013-07-19 10:53:33.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/ipstrms.pas 2015-07-04 23:08:00.000000000 +0000 @@ -2,7 +2,7 @@ {* IPSTRMS.PAS - Various stream classes *} {******************************************************************} -{ $Id: ipstrms.pas 42142 2013-07-19 10:53:33Z martin $ } +{ $Id: ipstrms.pas 49494 2015-07-04 23:08:00Z juha $ } (* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1 @@ -48,7 +48,7 @@ LCLType, GraphType, LCLIntf, - FileUtil, + LazFileUtils, {$ELSE} Windows, // put Windows behind Classes because of THandle {$ENDIF} diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/iputils.pas lazarus-1.6+dfsg/components/turbopower_ipro/iputils.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/iputils.pas 2015-02-07 12:04:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/iputils.pas 2015-07-04 23:08:00.000000000 +0000 @@ -37,7 +37,7 @@ uses SysUtils, Classes, Controls, Registry, ComCtrls, {$IFDEF IP_LAZARUS} - LCLType, GraphType, LCLIntf, LMessages, FileUtil, lazutf8classes, LCLProc; + LCLType, GraphType, LCLIntf, LMessages, LazFileUtils, lazutf8classes, LCLProc; {$ELSE} Messages, Windows, ExtCtrls, SyncObjs; {$ENDIF} @@ -2790,7 +2790,7 @@ function GetTemporaryFile(const Path : string) : string; {$IFDEF IP_LAZARUS} begin - Result:=FileUtil.GetTempFileName(Path,'IP_'); + Result:=GetTempFileNameUTF8(Path,'IP_'); end; {$ELSE} var diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.de.po lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.de.po --- lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.de.po 2014-11-04 21:06:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.de.po 2016-01-05 13:18:21.000000000 +0000 @@ -294,7 +294,6 @@ msgstr "- erwartet" #: ipconst.shtmldefbrowsecaption -#| msgid "Browse..." msgid "Browse ..." msgstr "Durchsuchen ..." @@ -435,10 +434,12 @@ msgstr "Pinge %s mit %d Byte Daten" #: ipconst.sicmpthreadexecute +#, fuzzy,badformat msgid "Thread %d executing (Hop number = %d)" msgstr "Thread %s wird ausgefühlt (Hop-Nummer ist %d)" #: ipconst.sicmpthreadterminate +#, fuzzy,badformat msgid "Thread %d terminating (Hop number = %d)" msgstr "Thread %s wird beendet (Hop-Nummer ist %d)" @@ -547,6 +548,7 @@ msgstr "Unbekannter Status" #: ipconst.slesszero +#, fuzzy,badformat msgid "%s: new col count %d is less than zero" msgstr "%s: Die neue Spaltenzählung %s ist kleiner als Null" @@ -1249,6 +1251,7 @@ msgstr "Bei einem Ursprung von soFromEnd muß der Offset <= 0 sein" #: ipconst.spngbadbitdepth +#, fuzzy,badformat msgid "Unsupported Bit Depth of %d" msgstr "Nicht unterstützte Bit-Tiefe von %s" @@ -1257,6 +1260,7 @@ msgstr "Unerkannter Chunk-Typ: %s" #: ipconst.spngbadcolortype +#, fuzzy,badformat msgid "Unrecognized color type of %d" msgstr "Unerkannter Farbtyp von %s" @@ -1297,6 +1301,7 @@ msgstr "PNG-Chunk: %s Länge: %d" #: ipconst.spngcolortype +#, fuzzy,badformat msgid "Color Type: %d" msgstr "Farbtyp: %s" @@ -1317,6 +1322,7 @@ msgstr "**** FEHLER ****" #: ipconst.spngfilterchange +#, fuzzy,badformat msgid "Filter changed on Row %d to %x" msgstr "Filter in Zeile %s auf %x geändert" @@ -1345,6 +1351,7 @@ msgstr "IHDR-Chunk ist kurz." #: ipconst.spngimagesize +#, fuzzy,badformat msgid "Image size is %dx%d pixels" msgstr "Bildgröße ist %sx%d Pixel" @@ -1373,6 +1380,7 @@ msgstr "PNG-Zwischenablage nicht unterstützt." #: ipconst.spngpaletteentry +#, fuzzy,badformat msgid "Palette Entry %d - Red: %d Green: %d Blue: %d" msgstr "Paletteneintrag %d - Rot: %s, Grün: %d, Blau: %d" @@ -1715,6 +1723,7 @@ msgstr "Benenne Datei um in" #: ipconst.srowcoloor +#, fuzzy,badformat msgid "%s: either row %d or col %d is out of range" msgstr "%s: Entweder Zeile %s oder Spalte %s überschreitet den Bereich" diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.fr.po lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.fr.po --- lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.fr.po 2014-11-04 21:06:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.fr.po 2016-01-05 13:18:21.000000000 +0000 @@ -1,408 +1,412 @@ msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Beuselinck Vincent \n" -"Language-Team: \n" +"PO-Revision-Date: 2016-01-03 20:32+0100\n" +"Last-Translator: Alcatiz \n" +"Language-Team: Vasseur Gilles \n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.6\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ipconst.cacheadding msgid "Caching item (%s = %s)" -msgstr "" +msgstr "Mise en cache de l'élément (%s = %s)" #: ipconst.cachecheckfreshness msgid "Checking Freshness (%s)" -msgstr "" +msgstr "Vérification de la fraîcheur (%s)" #: ipconst.cachedirnotexist msgid "Cache directory %s does not exist." -msgstr "" +msgstr "Répertoire cache %s inexistant." #: ipconst.cacheretrieving msgid "Loading from Cache (%s = %s)" -msgstr "" +msgstr "Chargement depuis le cache (%s =%s)" #: ipconst.httpcantloadgraphic msgid "Unable to load graphic %s" -msgstr "" +msgstr "Impossible de charger le graphique %s" #: ipconst.httpconnect msgid "Connected: (%s)" -msgstr "" +msgstr "Connecté : (%s)" #: ipconst.httpdisconnect msgid "Disconnected: (%s), %s Total bytes received" -msgstr "" +msgstr "Déconnecté : (%s) - %s octets reçus au total" #: ipconst.httpdownload msgid "Download: (%s), Error downloading" -msgstr "" +msgstr "Téléchargement : (%s) - Erreur de téléchargement" #: ipconst.httpget msgid "GET: (%s)" -msgstr "" +msgstr "GET : (%s)" #: ipconst.httpgeterror msgid "GET: (%s) FAILED" -msgstr "" +msgstr "GET : (%s) ÉCHEC" #: ipconst.httpgotheader msgid "Download: (%s), Got Header Data" -msgstr "" +msgstr "Téléchargement : (%s) - En-tête de données reçu" #: ipconst.httphead msgid "HEAD: (%s)" -msgstr "" +msgstr "HEAD : (%s)" #: ipconst.httpheaderror msgid "HEAD: (%s) FAILED" -msgstr "" +msgstr "HEAD : (%s) ÉCHEC" #: ipconst.httpnoheaderdata msgid "No Header Data for Entity" -msgstr "" +msgstr "Aucune donnée d'en-tête pour l'entité" #: ipconst.httppost msgid "POST: (%s)" -msgstr "" +msgstr "POST : (%s)" #: ipconst.httpposterror msgid "POST: (%s) FAILED" -msgstr "" +msgstr "POST : (%s) ÉCHEC" #: ipconst.httpprogress msgid "Progress Made: (%s), %s bytes received" -msgstr "" +msgstr "Réalisation : (%s) - %s octets reçus" #: ipconst.httpsizemismatch msgid "Download: (%s), Size Mismatch expecting %s , got %s" -msgstr "" +msgstr "Téléchargement : (%s) - Différence de taille : attendu = %s ; obtenu = %s" #: ipconst.providerunknownformat msgid "Don't know how to handle %s" -msgstr "" +msgstr "Je ne sais pas comment gérer %s" #: ipconst.providerunknownpicture msgid "Invalid picture format" -msgstr "" +msgstr "Format d'image incorrect" #: ipconst.providerunknownrequest msgid "Unknown request type \"%s\"" -msgstr "" +msgstr "Type de requête inconnue : \"%s\"" #: ipconst.saccessprocerr msgid "Win32 error loading '%s' pointer: %s" -msgstr "Win32 erreur en chargeant '%s' pointeur: %s" +msgstr "Erreur Win32 en chargeant le pointeur '%s' : %s" #: ipconst.sactiveerr msgid "Cannot set property on an active socket" -msgstr "Ne peut assigner une propriété sur la socket active" +msgstr "Impossible d'assigner une propriété à un socket actif" #: ipconst.sattemptingtoread msgid "Attempting to read " -msgstr "" +msgstr "Essai de lire " #: ipconst.sattemptingtowrite msgid "Attempting to write " -msgstr "" +msgstr "Essai d'écrire " #: ipconst.sbadframelistobject msgid "Unrecognized object of class %s in GIF Frame List" -msgstr "" +msgstr "Objet non reconnu de la classe %s dans la liste des couches GIF" #: ipconst.sbadimagelibfileformat msgid "Unrecognized file format" -msgstr "" +msgstr "Format de fichier inconnu" #: ipconst.sbadimagelibstream msgid "ImageLib must use TMemoryStreams" -msgstr "" +msgstr "\"ImageLib\" doit utiliser des \"TMemoryStreams\"" #: ipconst.sbadlinelength msgid "Invalid line length" -msgstr "" +msgstr "Longueur de ligne incorrecte" #: ipconst.sbadlineterminator msgid "Invalid line terminator" -msgstr "" +msgstr "Terminateur de ligne incorrect" #: ipconst.sbadoffset msgid "Invalid stream offset" -msgstr "" +msgstr "Offset de flux invalide" #: ipconst.sbadpath msgid "Path does not exist" -msgstr "" +msgstr "Le chemin n'existe pas" #: ipconst.sbadseekorigin msgid "Invalid seek origin" -msgstr "" +msgstr "Origine de recherche incorrecte" #: ipconst.sbibuffernotassigned msgid "Buffer not assigned" -msgstr "" +msgstr "Buffer non assigné" #: ipconst.sbinhexbadchar msgid "Invalid BinHex character" -msgstr "" +msgstr "Caractère \"BinHex\" incorrect" #: ipconst.sbinhexbaddatacrc msgctxt "ipconst.sbinhexbaddatacrc" msgid "Bad header CRC" -msgstr "" +msgstr "Mauvais CRC d'en-tête" #: ipconst.sbinhexbadformat msgid "Invalid BinHex format" -msgstr "" +msgstr "Format \"BinHex\" incorrect" #: ipconst.sbinhexbadheadercrc msgctxt "ipconst.sbinhexbadheadercrc" msgid "Bad header CRC" -msgstr "" +msgstr "Mauvais CRC d'en-tête" #: ipconst.sbinhexcolonexpected msgid "\":\" expected" -msgstr "" +msgstr "\":\" attendu" #: ipconst.sbinhexlengtherr msgid "Invalid data length" -msgstr "" +msgstr "Longueur des données incorrecte" #: ipconst.sbinhexoddchar msgid "One odd character" -msgstr "" +msgstr "Un caractère impair" #: ipconst.sbinhexresourceforkerr msgid "Resource fork present" -msgstr "" +msgstr "\"Resource fork\" présent" #: ipconst.sbrokerdownloadreq msgid "Download %s?" -msgstr "" +msgstr "Voulez-vous télécharger %s ?" #: ipconst.sbrokerdownloadtitle msgid "Download?" -msgstr "" +msgstr "Voulez-vous télécharger ?" #: ipconst.sbytesfromstream msgid " bytes from stream" -msgstr "" +msgstr " octets depuis le flux" #: ipconst.sbytesreadfromstream msgid " bytes read from stream" -msgstr "" +msgstr " octets lus depuis le flux" #: ipconst.sbytestostream msgid " bytes to stream" -msgstr "" +msgstr " octets vers le flux" #: ipconst.sbyteswrittentostream msgid " bytes written to stream" -msgstr "" +msgstr " octets écrits vers le flux" #: ipconst.scannotwritetostream msgid "Cannot write to stream" -msgstr "" +msgstr "Impossible d'écrire dans le flux" #: ipconst.scounttoosmall msgid "%s: new count too small" -msgstr "%s: nouveau compteur trop petit" +msgstr "%s : nouveau compteur trop petit" #: ipconst.sdestroying msgid "Destroying" -msgstr "" +msgstr "Destruction en cours" #: ipconst.seventconnect msgid "Connect: Loc: %s Rem: %s" -msgstr "" +msgstr "Connexion : Loc : %s Rem : %s" #: ipconst.seventdisconnect msgid "Close: Loc: %s Rem: %s" -msgstr "" +msgstr "Fermeture : Loc : %s Rem : %s" #: ipconst.sfilename msgid " Filename: " -msgstr "" +msgstr " Nom de fichier : " #: ipconst.sftpbytestransferred msgid " bytes Transferred" -msgstr "" +msgstr " octets transférés" #: ipconst.sftpclose msgctxt "ipconst.sftpclose" msgid "Disconnected" -msgstr "" +msgstr "Déconnecté" #: ipconst.sftpcomplete msgid "Transfer complete. " -msgstr "" +msgstr "Transfert terminé. " #: ipconst.sftpdelete msgid "Deleting " -msgstr "" +msgstr "Suppression " #: ipconst.sftplogin msgid " logged in" -msgstr "" +msgstr " connecté" #: ipconst.sftplogout msgid " logged out" -msgstr "" +msgstr " déconnecté" #: ipconst.sftpopen msgid "Connected to " -msgstr "" +msgstr "Connecté à " #: ipconst.sftprename msgid "Renaming " -msgstr "" +msgstr "Renommage en cours " #: ipconst.sftprestart msgid "Attempting to re-start transfer of " -msgstr "" +msgstr "Tentative de recommencer le transfert de " #: ipconst.sftpretrieve msgid "Retrieving " -msgstr "" +msgstr "Récupération en cours " #: ipconst.sftpstore msgid "Storing " -msgstr "" +msgstr "Stockage en cours " #: ipconst.sftptimeout msgid "Transfer timed out" -msgstr "" +msgstr "Délai de transfert écoulé" #: ipconst.sftpuserabort msgid "Transfer aborted by user" -msgstr "" +msgstr "Transfert arrêté par l'utilisateur" #: ipconst.shtmlcharstackoverfl msgid "Character stack overflow" -msgstr "" +msgstr "Débordement de pile de caractères" #: ipconst.shtmldashexp msgid "- expected" -msgstr "" +msgstr "\"-\" attendu" #: ipconst.shtmldefbrowsecaption msgid "Browse ..." -msgstr "" +msgstr "Parcourir…" #: ipconst.shtmldefresetcaption msgid "Reset" -msgstr "" +msgstr "Réinitialiser" #: ipconst.shtmldefsubmitcaption msgid "Submit" -msgstr "" +msgstr "Valider" #: ipconst.shtmlencnotsupported msgid " encoding not supported" -msgstr "" +msgstr " encodage non supporté" #: ipconst.shtmlexp msgid " expected" -msgstr "" +msgstr " prévu" #: ipconst.shtmlinternal msgid "Internal error" -msgstr "" +msgstr "Erreur interne" #: ipconst.shtmlinvalign msgid "Invalid alignment specified" -msgstr "" +msgstr "Alignement spécifié invalide" #: ipconst.shtmlinvcolor msgid "Invalid color constant:" -msgstr "" +msgstr "Constante de couleur incorrecte :" #: ipconst.shtmlinvdir msgid "Invalid dir value specified" -msgstr "" +msgstr "Valeur de répertoire spécifié incorrecte" #: ipconst.shtmlinvframe msgid "Invalid frame specified" -msgstr "" +msgstr "Cadre spécifié incorrect" #: ipconst.shtmlinvgraphic msgid "Invalid graphic returned" -msgstr "" +msgstr "Graphique retourné incorrect" #: ipconst.shtmlinvint msgid "Invalid integer constant" -msgstr "" +msgstr "Constante entière incorrecte" #: ipconst.shtmlinvmethod msgid "Invalid method specified" -msgstr "" +msgstr "Méthode spécifiée incorrecte" #: ipconst.shtmlinvpicture msgid "Invalid picture returned" -msgstr "" +msgstr "Image retournée incorrecte" #: ipconst.shtmlinvrule msgid "Invalid rule specified" -msgstr "" +msgstr "Règle spécifiée incorrecte" #: ipconst.shtmlinvscope msgid "Invalid scope specified" -msgstr "" +msgstr "Étendue spécifiée incorrecte" #: ipconst.shtmlinvscroll msgid "Invalid scrolling specified" -msgstr "" +msgstr "Déroulement spécifié incorrect" #: ipconst.shtmlinvshape msgid "Invalid shape specified" -msgstr "" +msgstr "Forme spécifiée incorrecte" #: ipconst.shtmlinvtype msgid "Invalid type specified" -msgstr "" +msgstr "Type spécifié incorrect" #: ipconst.shtmlinvvaltype msgid "Invalid value type specified" -msgstr "" +msgstr "Type incorrect de valeur spécifié" #: ipconst.shtmllineerror msgid "Error \"%s\" at line %d, position %d" -msgstr "" +msgstr "Erreur \"%s\" à la ligne %d - position %d" #: ipconst.shtmlnodataprovider msgid "No data provider assigned" -msgstr "" +msgstr "Aucun fournisseur de données assigné" #: ipconst.shtmlnogetimage msgid "No OnGetImage event handler assigned" -msgstr "" +msgstr "Aucun gestionnaire d'événement \"OnGetImage\" assigné" #: ipconst.shtmlnographic msgid "Picture object contains no graphic object" -msgstr "" +msgstr "Objet image ne contenant aucun objet graphique" #: ipconst.shtmlnotcontainer msgid "Parent is not a container" -msgstr "" +msgstr "Le parent n'est pas un conteneur" #: ipconst.shtmlresunavail msgid "Resource unavailable:" -msgstr "" +msgstr "Ressource indisponible :" #: ipconst.shtmltokenstackoverfl msgid "Token stack overflow" -msgstr "" +msgstr "Débordement de pile de jetons (\"tokens\")" #: ipconst.shtmlunknowntok msgid "Unknown token" -msgstr "" +msgstr "Jeton (\"token\") inconnu" #: ipconst.shtmlunsupprotocol msgid "Unsupported protocol in URL:%s" -msgstr "" +msgstr "Protocole non supporté dans l'URL :%s" #: ipconst.sicmpecho msgid "" @@ -413,641 +417,647 @@ " Tos = %d\n" " IpFlags = %d\n" msgstr "" +"Réponse Echo (Numéro Hop : %d)\n" +" Statut = %d\n" +" RTTime = %d\n" +" Ttl = %d\n" +" Tos = %d\n" +" IpFlags = %d\n" #: ipconst.sicmpechostring msgid "Echo string: %s" -msgstr "" +msgstr "Chaîne d'écho : %s" #: ipconst.sicmppingstart msgid "Pinging %s with %d bytes data" -msgstr "" +msgstr "Ping de %s avec %d octets de données" #: ipconst.sicmpthreadexecute msgid "Thread %d executing (Hop number = %d)" -msgstr "" +msgstr "Exécution du processus %d (numéro de Hop = %d)" #: ipconst.sicmpthreadterminate msgid "Thread %d terminating (Hop number = %d)" -msgstr "" +msgstr "Terminaison du processus %d (numéro de Hop = %d)" #: ipconst.sicmptracecomplete msgid "Trace complete (%s), %d hops" -msgstr "" +msgstr "Trace achevée (%s) - %d Hops" #: ipconst.sicmptracestart msgid "Trace to %s started" -msgstr "" +msgstr "Début de trace jusque %s" #: ipconst.sindexerr msgid "Index out of range" -msgstr "Index hors des limites" +msgstr "Index hors limites" #: ipconst.sinvalrespcode msgid "Invalid response code" -msgstr "" +msgstr "Code de réponse incorrect" #: ipconst.sinvitemsize msgid "TIpTerminalArray.GetItemPtr: invalid item size" -msgstr "" +msgstr "\"TIpTerminalArray.GetItemPtr\" : taille d'élément incorrect" #: ipconst.sinvscrollrow msgid "TIpTerminalBuffer.SetScrollRegion: invalid row number(s)" -msgstr "" +msgstr "\"TIpTerminalBuffer.SetScrollRegion\" : numéro(s) de rangée(s) incorrect(s)" #: ipconst.sipicmp_bad_destination msgid "Bad destination" -msgstr "" +msgstr "Mauvaise destination" #: ipconst.sipicmp_bad_option msgid "Bad option" -msgstr "" +msgstr "Mauvaise option" #: ipconst.sipicmp_bad_req msgid "Bad request" -msgstr "" +msgstr "Mauvaise requête" #: ipconst.sipicmp_bad_route msgid "Bad route" -msgstr "" +msgstr "Route incorrecte" #: ipconst.sipicmp_buf_too_small msgid "Buffer too small" -msgstr "" +msgstr "Buffer trop petit" #: ipconst.sipicmp_dest_host_unreachable msgid "Destination host unreachable" -msgstr "" +msgstr "Hôte de destination injoignable" #: ipconst.sipicmp_dest_net_unreachable msgid "Destination network unreachable" -msgstr "" +msgstr "Réseau de destination injoignable" #: ipconst.sipicmp_dest_port_unreachable msgid "Destination port unreachable" -msgstr "" +msgstr "Port de destination injoignable" #: ipconst.sipicmp_dest_prot_unreachable msgid "Destination protocol unreachable" -msgstr "" +msgstr "Protocole de destination injoignable" #: ipconst.sipicmp_hw_error msgid "Hardware error" -msgstr "" +msgstr "Erreur matérielle" #: ipconst.sipicmp_no_resources msgid "Destination does not have resources to complete" -msgstr "" +msgstr "La destination n'a pas de ressources pour achever l'opération" #: ipconst.sipicmp_option_too_big msgid "Option too large" -msgstr "" +msgstr "Option trop grande" #: ipconst.sipicmp_packet_too_big msgid "Packet too large" -msgstr "" +msgstr "Paquet trop grand" #: ipconst.sipicmp_param_problem msgid "Parameter problem" -msgstr "" +msgstr "Problème de paramètre" #: ipconst.sipicmp_req_timed_out msgid "Request timed out" -msgstr "" +msgstr "Délai de requête expiré" #: ipconst.sipicmp_source_quench msgid "Destination is busy" -msgstr "" +msgstr "La destination est occupée" #: ipconst.sipicmp_success msgid "Successful" -msgstr "" +msgstr "Réussi" #: ipconst.sipicmp_ttl_expired_reassem msgid "Time to live expired during reassembly" -msgstr "" +msgstr "Expiration du délai TTL durant la reconstruction" #: ipconst.sipicmp_ttl_expired_transit msgid "Time to live expired during transmit" -msgstr "" +msgstr "Expiration du délai TTL durant la transmission" #: ipconst.sipicmp_unknown msgid "Unknown status" -msgstr "" +msgstr "Statut inconnu" #: ipconst.slesszero msgid "%s: new col count %d is less than zero" -msgstr "%s: le nouveau compteur col %d est inférieur à zéro" +msgstr "%s : le nouveau compteur col %d est inférieur à zéro" #: ipconst.slinelengtherr msgid "Invalid line length for encoded text" -msgstr "" +msgstr "Longueur de ligne incorrecte pour le texte encodé" #: ipconst.slistnotassigned msgid "List not assigned" -msgstr "" +msgstr "Liste non assignée" #: ipconst.slogarticle msgid "Generating OnArticle event" -msgstr "" +msgstr "Génération d'un événement \"OnArticle\"" #: ipconst.slogauthlogin msgid " (ssAuthLogin)" -msgstr "" +msgstr " (ssAuthLogin)" #: ipconst.slogauthpass msgid " (ssAuthPass)" -msgstr "" +msgstr " (ssAuthPass)" #: ipconst.slogauthuser msgid " (ssAuthUser)" -msgstr "" +msgstr " (ssAuthUser)" #: ipconst.slogdata msgid " (ssData)" -msgstr "" +msgstr " (ssData)" #: ipconst.slogehlo msgid " (ssEhlo)" -msgstr "" +msgstr " (ssEhlo)" #: ipconst.slogencodeactionstart msgid "Generating OnEncodeAction(Start)" -msgstr "" +msgstr "Génération de \"OnEncodeAction(Start)\"" #: ipconst.slogencodeactionstop msgid "Generating OnEncodeAction(Stop)" -msgstr "" +msgstr "Génération de \"OnEncodeAction(Stop)\"" #: ipconst.slogexpand msgid " (ssExpand)" -msgstr "" +msgstr " (ssExpand)" #: ipconst.sloghelo msgid " (ssHelo)" -msgstr "" +msgstr " (ssHelo)" #: ipconst.sloghelp msgid " (ssHelp)" -msgstr "" +msgstr " (ssHelp)" #: ipconst.slogicmpclass msgid "[ICMP] " -msgstr "" +msgstr "[ICMP] " #: ipconst.slogmailfrom msgid " (ssMailFrom)" -msgstr "" +msgstr " (ssMailFrom)" #: ipconst.slogmultiline msgid "Generating OnMultiLineResponse event" -msgstr "" +msgstr "Génération d'un événement \"OnMultiLineResponse\"" #: ipconst.slognextmessagenotready msgid "Next message not ready" -msgstr "" +msgstr "Message suivant non prêt" #: ipconst.slognextmessageready msgid "Next message ready" -msgstr "" +msgstr "Message suivant prêt" #: ipconst.slognntpclass msgid "[NNTP] " -msgstr "" +msgstr "[NNTP] " #: ipconst.slognsarticle msgid " (nsArticle)" -msgstr "" +msgstr " (nsArticle)" #: ipconst.slognsauthpass msgid " (nsAuthPass)" -msgstr "" +msgstr " (nsAuthPass)" #: ipconst.slognsauthuser msgid " (nsAuthUser)" -msgstr "" +msgstr " (nsAuthUser)" #: ipconst.slognsbody msgid " (nsBody)" -msgstr "" +msgstr " (nsBody)" #: ipconst.slognsconnect msgid " (nsConnect)" -msgstr "" +msgstr " (nsConnect)" #: ipconst.slognsdate msgid " (nsDate)" -msgstr "" +msgstr " (nsDate)" #: ipconst.slognsgroup msgid " (nsGroup)" -msgstr "" +msgstr " (nsGroup)" #: ipconst.slognshead msgid " (nsHead)" -msgstr "" +msgstr " (nsHead)" #: ipconst.slognshelp msgid " (nsHelp)" -msgstr "" +msgstr " (nsHelp)" #: ipconst.slognslast msgid " (nsLast)" -msgstr "" +msgstr " (nsLast)" #: ipconst.slognslist msgid " (nsList)" -msgstr "" +msgstr " (nsList)" #: ipconst.slognslistactivetimes msgid " (nsListActiveTimes)" -msgstr "" +msgstr " (nsListActiveTimes)" #: ipconst.slognslistdistribpats msgid " (nsListDistribPats)" -msgstr "" +msgstr " (nsListDistribPats)" #: ipconst.slognslistdistributions msgid " (nsListDistributions)" -msgstr "" +msgstr " (nsListDistributions)" #: ipconst.slognslistext msgid " (nsListExt)" -msgstr "" +msgstr " (nsListExt)" #: ipconst.slognslistgroup msgid " (nsListGroup)" -msgstr "" +msgstr " (nsListGroup)" #: ipconst.slognslistnewsgroups msgid " (nsListNewsGroups)" -msgstr "" +msgstr " (nsListNewsGroups)" #: ipconst.slognslistoverviewfmt msgid " (nsListOverviewFmt)" -msgstr "" +msgstr " (nsListOverviewFmt)" #: ipconst.slognsnewgroups msgid " (nsNewGroups)" -msgstr "" +msgstr " (nsNewGroups)" #: ipconst.slognsnewnews msgid " (nsNewNews)" -msgstr "" +msgstr " (nsNewNews)" #: ipconst.slognsnext msgid " (nsNext)" -msgstr "" +msgstr " (nsNext)" #: ipconst.slognsnoop msgid " (nsNoOp)" -msgstr "" +msgstr " (nsNoOp)" #: ipconst.slognsover msgid " (nsOver)" -msgstr "" +msgstr " (nsOver)" #: ipconst.slognspat msgid " (nsPat)" -msgstr "" +msgstr " (nsPat)" #: ipconst.slognspost msgid " (nsPost)" -msgstr "" +msgstr " (nsPost)" #: ipconst.slognsprepost msgid " (nsPrePost)" -msgstr "" +msgstr " (nsPrePost)" #: ipconst.slognsquit msgid " (nsQuit)" -msgstr "" +msgstr " (nsQuit)" #: ipconst.slognsspecial msgid " (nsSpecial)" -msgstr "" +msgstr " (nsSpecial)" #: ipconst.slognsstat msgid " (nsStat)" -msgstr "" +msgstr " (nsStat)" #: ipconst.slogntauthenticate msgid " (ntAuthenticate)" -msgstr "" +msgstr " (ntAuthenticate)" #: ipconst.slogntnewnews msgid " (ntNewNews)" -msgstr "" +msgstr " (ntNewNews)" #: ipconst.slogntnotask msgid " (ntNoTask)" -msgstr "" +msgstr " (ntNoTask)" #: ipconst.slogntpostto msgid " (ntPostTo)" -msgstr "" +msgstr " (ntPostTo)" #: ipconst.slogntselectgroup msgid " (ntSelectGroup)" -msgstr "" +msgstr " (ntSelectGroup)" #: ipconst.slogoslist msgid " (psList)" -msgstr "" +msgstr " (psList)" #: ipconst.slogpop3class msgid "[POP3] " -msgstr "" +msgstr "[POP3] " #: ipconst.slogpop3message msgid "Generating OnMessage event" -msgstr "" +msgstr "Génération d'un événement \"OnMessage\"" #: ipconst.slogpop3top msgid "Generating OnTop event" -msgstr "" +msgstr "Génération d'un événement \"OnTop\"" #: ipconst.slogpsapop msgid " (psApop)" -msgstr "" +msgstr " (psApop)" #: ipconst.slogpsconnect msgid " (psConnect)" -msgstr "" +msgstr " (psConnect)" #: ipconst.slogpsdele msgid " (psDele)" -msgstr "" +msgstr " (psDele)" #: ipconst.slogpsnoop msgid " {psNoOp)" -msgstr "" +msgstr " {psNoOp)" #: ipconst.slogpspass msgid " (psPass)" -msgstr "" +msgstr " (psPass)" #: ipconst.slogpsquit msgid " (psQuit)" -msgstr "" +msgstr " (psQuit)" #: ipconst.slogpsretr msgid " (psRetr)" -msgstr "" +msgstr " (psRetr)" #: ipconst.slogpsrset msgid " (psRSet)" -msgstr "" +msgstr " (psRSet)" #: ipconst.slogpsspecial msgid " (psSpecial)" -msgstr "" +msgstr " (psSpecial)" #: ipconst.slogpsstat msgid " (psStat)" -msgstr "" +msgstr " (psStat)" #: ipconst.slogpstop msgid " (psTop)" -msgstr "" +msgstr " (psTop)" #: ipconst.slogpsuidl msgid " (psUidl)" -msgstr "" +msgstr " (psUidl)" #: ipconst.slogpsuser msgid " (psUser)" -msgstr "" +msgstr " (psUser)" #: ipconst.slogptlist msgid " (ptList)" -msgstr "" +msgstr " (ptList)" #: ipconst.slogptlogon msgid " (ptLogon)" -msgstr "" +msgstr " (ptLogon)" #: ipconst.slogptnone msgid " (ptNone)" -msgstr "" +msgstr " (ptNone)" #: ipconst.slogptuidl msgid " (ptUIDL)" -msgstr "" +msgstr " (ptUIDL)" #: ipconst.slogquit msgid " (ssQuit)" -msgstr "" +msgstr " (ssQuit)" #: ipconst.slogrcptbcc msgid " (ssRcptBcc)" -msgstr "" +msgstr " (ssRcptBcc)" #: ipconst.slogrcptcc msgid " (ssRcptCc)" -msgstr "" +msgstr " (ssRcptCc)" #: ipconst.slogrcptto msgid " (ssRcptTo)" -msgstr "" +msgstr " (ssRcptTo)" #: ipconst.slogresponse msgid "Generating OnResponse event, Code = " -msgstr "" +msgstr "Génération d'un événement \"OnResponse\" - Code = " #: ipconst.slogrset msgid " (ssRSet)" -msgstr "" +msgstr " (ssRSet)" #: ipconst.slogsaml msgid " (ssSaml)" -msgstr "" +msgstr " (ssSaml)" #: ipconst.slogsend msgid " (ssSend)" -msgstr "" +msgstr " (ssSend)" #: ipconst.slogsendenvelope msgid " (ssSendEnvelope)" -msgstr "" +msgstr " (ssSendEnvelope)" #: ipconst.slogsendmessage msgid " (ssSendMessage)" -msgstr "" +msgstr " (ssSendMessage)" #: ipconst.slogsmtpclass msgid "[SMTP] " -msgstr "" +msgstr "[SMTP] " #: ipconst.slogsmtpnextmessage msgid "Generating OnNextMessage event" -msgstr "" +msgstr "Génération d'un événement \"OnNextMessage\"" #: ipconst.slogsoml msgid " (ssSoml)" -msgstr "" +msgstr " (ssSoml)" #: ipconst.slogspecial msgid " (ssSpecial)" -msgstr "" +msgstr " (ssSpecial)" #: ipconst.slogssconnect msgid " (ssConnect)" -msgstr "" +msgstr " (ssConnect)" #: ipconst.slogssnoop msgid " (ssNoOp)" -msgstr "" +msgstr " (ssNoOp)" #: ipconst.slogstate msgid "State change: " -msgstr "" +msgstr "Changement d'état : " #: ipconst.slogstlogon msgid " (stLogon)" -msgstr "" +msgstr " (stLogon)" #: ipconst.slogstnotask msgid " (stNoTask)" -msgstr "" +msgstr " (stNoTask)" #: ipconst.slogstsendmail msgid " (stSendMail)" -msgstr "" +msgstr " (stSendMail)" #: ipconst.slogtaskcomplete msgid "Generating OnTaskComplete event " -msgstr "" +msgstr "Génération d'un événement \"OnTaskComplete\"" #: ipconst.slogtaskstart msgid "Starting task: " -msgstr "" +msgstr "Démarrage de la tâche : " #: ipconst.slogturn msgid " (ssTurn)" -msgstr "" +msgstr " (ssTurn)" #: ipconst.slogverify msgid " (ssVerify)" -msgstr "" +msgstr " (ssVerify)" #: ipconst.smemmapfilenamerequired msgid "You must specify a file name for TIpMemMapStream" -msgstr "" +msgstr "Vous devez spécifier un nom de fichier pour \"TIpMemMapStream\"" #: ipconst.smemmapmustbeclosed msgid "The %s method requires the TIpMemMapStream instance to be closed" -msgstr "" +msgstr "La méthode %s requiert que l'instance de \"TIpMemMapStream\" soit fermée" #: ipconst.smemmapmustbeopen msgid "The %s method requires the TIpMemMapStream instance to be opened" -msgstr "" +msgstr "La méthode %s requiert que l'instance de \"TIpMemMapStream\" soit ouverte" #: ipconst.snntpcmdarticle msgid "ARTICLE" -msgstr "" +msgstr "ARTICLE" #: ipconst.snntpcmdauthpass msgid "AUTHINFO PASS" -msgstr "" +msgstr "AUTHINFO PASS" #: ipconst.snntpcmdauthuser msgid "AUTHINFO USER" -msgstr "" +msgstr "AUTHINFO USER" #: ipconst.snntpcmdbody msgid "BODY" -msgstr "" +msgstr "BODY" #: ipconst.snntpcmddate msgid "DATE" -msgstr "" +msgstr "DATE" #: ipconst.snntpcmdgroup msgid "GROUP" -msgstr "" +msgstr "GROUP" #: ipconst.snntpcmdhead msgid "HEAD" -msgstr "" +msgstr "HEAD" #: ipconst.snntpcmdhelp msgid "HELP" -msgstr "" +msgstr "HELP" #: ipconst.snntpcmdlast msgid "LAST" -msgstr "" +msgstr "LAST" #: ipconst.snntpcmdlist msgctxt "ipconst.snntpcmdlist" msgid "LIST" -msgstr "" +msgstr "LIST" #: ipconst.snntpcmdlistacttimes msgid "LIST ACTIVE.TIMES" -msgstr "" +msgstr "LIST ACTIVE.TIMES" #: ipconst.snntpcmdlistdistrib msgid "LIST DISTRIBUTIONS" -msgstr "" +msgstr "LIST DISTRIBUTIONS" #: ipconst.snntpcmdlistdistribpats msgid "LIST DISTRIB.PATS" -msgstr "" +msgstr "LIST DISTRIB.PATS" #: ipconst.snntpcmdlistext msgid "LIST EXTENSIONS" -msgstr "" +msgstr "LIST EXTENSIONS" #: ipconst.snntpcmdlistgroup msgid "LISTGROUP" -msgstr "" +msgstr "LISTGROUP" #: ipconst.snntpcmdlistnewsgroups msgid "LIST NEWSGROUPS" -msgstr "" +msgstr "LIST NEWSGROUPS" #: ipconst.snntpcmdlistoverfmt msgid "LIST OVERVIEW.FMT" -msgstr "" +msgstr "LIST OVERVIEW.FMT" #: ipconst.snntpcmdnewgroups msgid "NEWGROUPS" -msgstr "" +msgstr "NEWGROUPS" #: ipconst.snntpcmdnewnews msgid "NEWNEWS" -msgstr "" +msgstr "NEWNEWS" #: ipconst.snntpcmdnext msgid "NEXT" -msgstr "" +msgstr "NEXT" #: ipconst.snntpcmdpat msgid "PAT" -msgstr "" +msgstr "PAT" #: ipconst.snntpcmdpost msgid "POST" -msgstr "" +msgstr "POST" #: ipconst.snntpcmdquit msgctxt "ipconst.snntpcmdquit" msgid "QUIT" -msgstr "" +msgstr "QUIT" #: ipconst.snntpcmdstat msgctxt "ipconst.snntpcmdstat" msgid "STAT" -msgstr "" +msgstr "STAT" #: ipconst.snntpcmdxover msgid "XOVER" -msgstr "" +msgstr "XOVER" #: ipconst.snoboundary msgid "No Mime boundary" -msgstr "" +msgstr "Pas de type MIME associé" #: ipconst.snomemorystreamerr msgid "No Memory Stream assigned" @@ -1055,19 +1065,19 @@ #: ipconst.snorecipients msgid "No recipients specified" -msgstr "" +msgstr "Aucun destinataire spécifié" #: ipconst.snoseekforread msgid "No seek for read" -msgstr "" +msgstr "Pas d'origine pour la lecture" #: ipconst.snoseekforwrite msgid "No seek for write" -msgstr "" +msgstr "Pas d'origine pour l'écriture" #: ipconst.snosockerr msgid "Socket not assigned" -msgstr "Socket non assignée" +msgstr "Socket non assigné" #: ipconst.snostreamerr msgid "Stream not assigned" @@ -1075,1190 +1085,1190 @@ #: ipconst.snotenoughdata msgid "Not enough data in queue (%s bytes) to satisfy read request (%s bytes)" -msgstr "Pas assez de données dans la queue (%s bytes) pour satisfaire la demande de lecture (%s bytes)" +msgstr "Pas assez de données dans la queue (%s octets) pour satisfaire la demande de lecture (%s octets)" #: ipconst.snotimererr msgid "Not enough system timers available" -msgstr "Pas assez de temporisation système disponibles" +msgstr "Pas assez de timers système disponibles" #: ipconst.snowinsock2err msgid "%s requires WinSock 2, and this system only has WinSock 1" -msgstr "%s nécessite WinSock 2, et ce système a seulement WinSock 1" +msgstr "%s nécessite WinSock 2, et ce système n'a que WinSock 1" #: ipconst.snsarticle msgid "Retrieving article" -msgstr "" +msgstr "Récupération en cours de l'article" #: ipconst.snsauthpass msgid "Authorizing password" -msgstr "" +msgstr "Autorisation en cours du mot de passe" #: ipconst.snsauthuser msgid "Authorizing user" -msgstr "" +msgstr "Autorisation en cours de l'utilisateur" #: ipconst.snsbody msgid "Retrieving body" -msgstr "" +msgstr "Récupération en cours du contenu" #: ipconst.snsconnect msgctxt "ipconst.snsconnect" msgid "Connecting" -msgstr "" +msgstr "Connexion en cours" #: ipconst.snsdate msgid "Retrieving server date" -msgstr "" +msgstr "Récupération en cours de la date du serveur" #: ipconst.snsgroup msgid "Selecting group" -msgstr "" +msgstr "Sélection en cours d'un groupe" #: ipconst.snshead msgid "Retrieving heading" -msgstr "" +msgstr "Récupération en cours de l'en-tête" #: ipconst.snshelp msgid "Retrieving help" -msgstr "" +msgstr "Récupération en cours de l'aide" #: ipconst.snslast msgid "Selecting previous article" -msgstr "" +msgstr "Sélection en cours de l'article précédent" #: ipconst.snslist msgid "Retrieving list" -msgstr "" +msgstr "Récupération en cours de la liste" #: ipconst.snslistactivetimes msgid "Retrieving active times" -msgstr "" +msgstr "Récupération en cours des périodes d'activité" #: ipconst.snslistdistribpats msgid "Retrieving distribution patterns" -msgstr "" +msgstr "Récupération en cours des modèles de distribution" #: ipconst.snslistdistributions msgid "Retrieving list of distributions" -msgstr "" +msgstr "Récupération en cours de la liste de distribution" #: ipconst.snslistext msgid "Retrieving list of extended commands" -msgstr "" +msgstr "Récupération en cours de la liste des commandes étendues" #: ipconst.snslistgroup msgid "Retrieving article numbers" -msgstr "" +msgstr "Récupération en cours des numéros d'articles" #: ipconst.snslistnewsgroups msgid "Retrieving list of available news groups" -msgstr "" +msgstr "Récupération en cours de la liste des newsgroups disponibles" #: ipconst.snslistoverviewfmt msgid "Retrieving overview format" -msgstr "" +msgstr "Récupération en cours du format d'aperçu" #: ipconst.snsnewgroups msgid "Getting new news groups" -msgstr "" +msgstr "Réception en cours des nouveaux newsgroups" #: ipconst.snsnewnews msgid "Getting new articles" -msgstr "" +msgstr "Réception en cours des nouveaux articles" #: ipconst.snsnext msgid "Selecting next article" -msgstr "" +msgstr "Sélection en cours de l'article suivant" #: ipconst.snsnoop msgctxt "ipconst.snsnoop" msgid "No operation" -msgstr "" +msgstr "Pas d'opération" #: ipconst.snsover msgid "Retrieving overview" -msgstr "" +msgstr "Récupération en cours de l'aperçu" #: ipconst.snspat msgid "Retrieving patterns" -msgstr "" +msgstr "Récupération en cours des modèles" #: ipconst.snspost msgctxt "ipconst.snspost" msgid "Posting article" -msgstr "" +msgstr "Envoi en cours de l'article" #: ipconst.snsprepost msgid "Preparing to post article" -msgstr "" +msgstr "Préparation en cours de l'envoi de l'article" #: ipconst.snsquit msgctxt "ipconst.snsquit" msgid "Disconnecting" -msgstr "" +msgstr "Déconnexion en cours " #: ipconst.snsspecial msgctxt "ipconst.snsspecial" msgid "Sending special command" -msgstr "" +msgstr "Envoi en cours d'une commande spéciale" #: ipconst.snsstat msgid "Retrieving status" -msgstr "" +msgstr "Récupération en cours du statut" #: ipconst.sntauthenticate msgid "Authenticating" -msgstr "" +msgstr "Authentification en cours " #: ipconst.sntnewnews msgid "Retrieving new news" -msgstr "" +msgstr "Récupération en cours des nouvelles news" #: ipconst.sntnotask msgctxt "ipconst.sntnotask" msgid "No task" -msgstr "" +msgstr "Aucune tâche" #: ipconst.sntpostto msgctxt "ipconst.sntpostto" msgid "Posting article" -msgstr "" +msgstr "Envoi en cours de l'article" #: ipconst.sntselectgroup msgid "Selecting Group" -msgstr "" +msgstr "Sélection en cours du groupe" #: ipconst.soriginfrombegin msgid "When origin is soFromBeginning, Offset must be >= 0" -msgstr "" +msgstr "Quand l'origine est \"soFromBeginning\", l'offset doit être >= 0" #: ipconst.soriginfromend msgid "When origin is soFromEnd, Offset must be <= 0" -msgstr "" +msgstr "Quand l'origine est \"soFromEnd\", l'offset doit être <= 0" #: ipconst.spngbadbitdepth msgid "Unsupported Bit Depth of %d" -msgstr "" +msgstr "Bit Depth de %d non supporté" #: ipconst.spngbadchunktype msgid "Unrecognized Chunk Type: %s" -msgstr "" +msgstr "Type de bloc non reconnu : %s" #: ipconst.spngbadcolortype msgid "Unrecognized color type of %d" -msgstr "" +msgstr "Type de couleur de %d non reconnu" #: ipconst.spngbadinterlacemethod msgid "Unrecognized Interlace Method" -msgstr "" +msgstr "Méthode d'entrelacement non reconnue" #: ipconst.spngbadmodificationtime msgid "Invalid Modification Time" -msgstr "" +msgstr "Heure de modification inconnue" #: ipconst.spngbadpalettelength msgid "Invalid Palette Length" -msgstr "" +msgstr "Longueur de palette incorrecte" #: ipconst.spngbadpixeldepth msgid "Unrecognized pixel depth of %d" -msgstr "" +msgstr "Pixel Depth de %d non reconnu" #: ipconst.spngbadsignature msgid "Invalid PNG Signature" -msgstr "" +msgstr "Signature PNG incorrecte" #: ipconst.spngbitdepth msgid "Bit Depth: %d" -msgstr "" +msgstr "Bit Depth : %d" #: ipconst.spngbuffertoosmall msgid "PNG Buffer too small." -msgstr "" +msgstr "Buffer PNG trop petit." #: ipconst.spngcannotsave msgid "PNG Saving is not supported" -msgstr "" +msgstr "La sauvegarde de PNG n'est pas supportée" #: ipconst.spngchunkidandlength msgid "PNG Chunk: %s Length: %d" -msgstr "" +msgstr "PNG - Bloc : %s - Longueur : %d" #: ipconst.spngcolortype msgid "Color Type: %d" -msgstr "" +msgstr "Type de couleur : %d" #: ipconst.spngcompressionmethod msgid "Compression Method: %d" -msgstr "" +msgstr "Méthode de compression : %d" #: ipconst.spngdefilterpass msgid "Unfiltering Pass %d Size: %dx%d From: %dx%d" -msgstr "" +msgstr "Défiltrage en cours : Passe %d - Taille : %dx%d De : %dx%d" #: ipconst.spngeffectivefilter msgid "Effective filter is %s" -msgstr "" +msgstr "Le filtre effectif est %s" #: ipconst.spngerrorconstant msgid "**** ERROR ****" -msgstr "" +msgstr "**** ERREUR ****" #: ipconst.spngfilterchange msgid "Filter changed on Row %d to %x" -msgstr "" +msgstr "Filtre modifié sur les rangées de %d à %x" #: ipconst.spngfiltermethod msgid "Filter Method: %d" -msgstr "" +msgstr "Méthode de filtrage : %d" #: ipconst.spnggamatoolong msgid "gAMA chunk is long" -msgstr "" +msgstr "Le bloc gAMA est long" #: ipconst.spnggamatooshort msgid "gAMA chunk is short" -msgstr "" +msgstr "Le bloc gAMA est court" #: ipconst.spnggammacorrection msgid "Gamma Correction: %f" -msgstr "" +msgstr "Correction gamma : %f" #: ipconst.spngihdrtoolong msgid "IHDR chunk is long." -msgstr "" +msgstr "Le bloc IHDR est long." #: ipconst.spngihdrtooshort msgid "IHDR chunk is short." -msgstr "" +msgstr "Le bloc IHDS est court." #: ipconst.spngimagesize msgid "Image size is %dx%d pixels" -msgstr "" +msgstr "La taille de l'image est de %dx%d pixels" #: ipconst.spnginterlacemethod msgid "Interlace Method: %d" -msgstr "" +msgstr "Méthode d'entrelacement : %d" #: ipconst.spngmemoryrequired msgid "Memory required for image: %d bytes" -msgstr "" +msgstr "Mémoire nécessaire pour l'image : %d octets" #: ipconst.spngmissingiend msgid "End of PNG found with no IEND chunk" -msgstr "" +msgstr "Fin de PNG atteinte sans bloc IEND" #: ipconst.spngmissingihdr msgid "IHDR Chunk is missing" -msgstr "" +msgstr "Le bloc IHDE est absent" #: ipconst.spngmodificationdate msgid "Modification Date: %s" -msgstr "" +msgstr "Date de modification : %s" #: ipconst.spngnoclipboard msgid "PNG Clipboard support is not supported." -msgstr "" +msgstr "Le format PNG n'est pas supporté par le presse-papier." #: ipconst.spngpaletteentry msgid "Palette Entry %d - Red: %d Green: %d Blue: %d" -msgstr "" +msgstr "Entrée de palette %d - Rouge : %d Vert : %d Bleu : %d" #: ipconst.spngpalettetoolong msgid "Too many palette entries" -msgstr "" +msgstr "Trop d'entrées dans la palette" #: ipconst.spngpalettetransparency msgid "Palette Transparency: %d Alpha %d" -msgstr "" +msgstr "Transparence de la palette : %d - Alpha %d" #: ipconst.spngtimetoolong msgid "tIME chunk is long." -msgstr "" +msgstr "Le bloc tIME est long." #: ipconst.spngtimetooshort msgid "tIME chunk is short." -msgstr "" +msgstr "Le bloc tIME est court." #: ipconst.spngtransparentcolor msgid "Transparent Color: %x" -msgstr "" +msgstr "Couleur de transparence : %x" #: ipconst.spngtruncatedcrc msgid "CRC Code is truncated" -msgstr "" +msgstr "Le CRC est tronqué" #: ipconst.spngtruncateddata msgid "Chunk data is truncated" -msgstr "" +msgstr "Données du bloc tronquées" #: ipconst.spngunsupportedfeature msgid "A %s chunk was found in the PNG File. This feature is not supported in this version of the PNG decoder" -msgstr "" +msgstr "Un bloc %s a été trouvé dans le fichier PNG. Cette option n'est pas supportée dans cette version du décodeur PNG" #: ipconst.spngwarningconstant msgid "**** WARNING ****" -msgstr "" +msgstr "**** AVERTISSEMENT ****" #: ipconst.spop3cmdapop msgid "APOP" -msgstr "" +msgstr "APOP" #: ipconst.spop3cmddele msgid "DELE" -msgstr "" +msgstr "DELE" #: ipconst.spop3cmdlist msgctxt "ipconst.spop3cmdlist" msgid "LIST" -msgstr "" +msgstr "LIST" #: ipconst.spop3cmdnoop msgid "NOOP" -msgstr "" +msgstr "NOOP" #: ipconst.spop3cmdpass msgid "PASS" -msgstr "" +msgstr "PASS" #: ipconst.spop3cmdquit msgctxt "ipconst.spop3cmdquit" msgid "QUIT" -msgstr "" +msgstr "QUIT" #: ipconst.spop3cmdretr msgid "RETR" -msgstr "" +msgstr "RETR" #: ipconst.spop3cmdrset msgid "RSET" -msgstr "" +msgstr "RSET" #: ipconst.spop3cmdstat msgctxt "ipconst.spop3cmdstat" msgid "STAT" -msgstr "" +msgstr "STAT" #: ipconst.spop3cmdtop msgid "TOP" -msgstr "" +msgstr "TOP" #: ipconst.spop3cmduidl msgid "UIDL" -msgstr "" +msgstr "UIDL" #: ipconst.spop3cmduser msgid "USER" -msgstr "" +msgstr "USER" #: ipconst.spop3errresp msgid "-ERR" -msgstr "" +msgstr "-ERR" #: ipconst.spop3notauthenticating msgid "%s can not be called in transaction state" -msgstr "" +msgstr "%s ne peut être appelé en mode transaction" #: ipconst.spop3nottransacting msgid "%s can not be called in authentication state" -msgstr "" +msgstr "%s ne peut être appelé en mode authentification" #: ipconst.spop3okresp msgid "+OK" -msgstr "" +msgstr "+OK" #: ipconst.sposreqd msgid "%s: count must be positive" -msgstr "%s: compteur doit être positif" +msgstr "%s : le compteur doit être positif" #: ipconst.spsapop msgid "Logging on with APOP" -msgstr "" +msgstr "Connexion en cours avec APOP" #: ipconst.spsconnect msgid "Connecting to server" -msgstr "" +msgstr "Connexion en cours au serveur" #: ipconst.spsdele msgid "Marking message for deletion" -msgstr "" +msgstr "Marquage en cours du message pour effacement" #: ipconst.spslist msgctxt "ipconst.spslist" msgid "Retrieving mailbox list" -msgstr "" +msgstr "Récupération en cours de la liste des boîtes mail" #: ipconst.spsnoop msgctxt "ipconst.spsnoop" msgid "No operation" -msgstr "" +msgstr "Pas d'opération" #: ipconst.spspass msgid "Logging on with Password" -msgstr "" +msgstr "Connexion en cours avec mot de passe" #: ipconst.spsquit msgctxt "ipconst.spsquit" msgid "Disconnecting" -msgstr "" +msgstr "Déconnexion en cours" #: ipconst.spsretr msgid "Retrieving message" -msgstr "" +msgstr "Récupération en cours du message" #: ipconst.spsrset msgid "Resetting messages" -msgstr "" +msgstr "Réinitialisation en cours des messages" #: ipconst.spsspecial msgid "Special command" -msgstr "" +msgstr "Commande spéciale" #: ipconst.spsstat msgid "Retrieving mailbox status" -msgstr "" +msgstr "Récupération en cours du statut de la boîte mail" #: ipconst.spstop msgid "Retrieving top of message" -msgstr "" +msgstr "Récupération en cours du début du message" #: ipconst.spsuidl msgctxt "ipconst.spsuidl" msgid "Retrieving mailbox UID list" -msgstr "" +msgstr "Récupération en cours de la liste des UID de boîtes mail" #: ipconst.spsunknown msgid "Unknown state" -msgstr "" +msgstr "État inconnu" #: ipconst.spsuser msgid "Logging on with User" -msgstr "" +msgstr "Connexion en cours avec l'utilisateur" #: ipconst.spterror msgid "An error occurred with the last task." -msgstr "" +msgstr "Une erreur est survenue lors de la dernière tâche." #: ipconst.sptlist msgctxt "ipconst.sptlist" msgid "Retrieving mailbox list" -msgstr "" +msgstr "Récupération en cours de la liste des boîtes mail" #: ipconst.sptlogon msgctxt "ipconst.sptlogon" msgid "Logging on" -msgstr "" +msgstr "Connexion en cours " #: ipconst.sptnone msgctxt "ipconst.sptnone" msgid "No task" -msgstr "" +msgstr "Aucune tâche" #: ipconst.sptuidl msgctxt "ipconst.sptuidl" msgid "Retrieving mailbox UID list" -msgstr "" +msgstr "Récupération en cours de la liste des UID de boîtes mail" #: ipconst.sptunknown msgid "Unknown task" -msgstr "" +msgstr "Tâche inconnue" #: ipconst.srasalldevicesconnected msgid "All devices connected" -msgstr "" +msgstr "Tous les périphériques sont connectés" #: ipconst.srasauthack msgid "Authenticate acknowledged" -msgstr "" +msgstr "Authentification acceptée" #: ipconst.srasauthcallback msgid "Authenticate callback" -msgstr "" +msgstr "Authentifier le rappel" #: ipconst.srasauthchangepassword msgid "Authenticate change password" -msgstr "" +msgstr "Authentifier le changement de mot de passe" #: ipconst.srasauthenticate msgid "Authenticate" -msgstr "" +msgstr "Authentifier" #: ipconst.srasauthenticated msgid "Authenticated" -msgstr "" +msgstr "Authentifié" #: ipconst.srasauthlinkspeed msgid "Authenticate link speed" -msgstr "" +msgstr "Authentifier la vitesse de liaison" #: ipconst.srasauthnotify msgid "Authenticate notify" -msgstr "" +msgstr "Notification d'authentification" #: ipconst.srasauthproject msgid "Authenticate project" -msgstr "" +msgstr "Authentifier le projet" #: ipconst.srasauthretry msgid "Authenticate retry" -msgstr "" +msgstr "Nouvel essai d'authentification" #: ipconst.srascallbackcomplete msgid "Callback complete" -msgstr "" +msgstr "Rappel terminé" #: ipconst.srascallbacksetbycaller msgid "Callback set by caller" -msgstr "" +msgstr "Rappel demandé par l'appelant" #: ipconst.srasconnectdevice msgid "Connect device" -msgstr "" +msgstr "Connexion du périphérique" #: ipconst.srasconnected msgid "Connected" -msgstr "" +msgstr "Connecté" #: ipconst.srasdeviceconnected msgid "Device connected" -msgstr "" +msgstr "Périphérique connecté" #: ipconst.srasdisconnected msgctxt "ipconst.srasdisconnected" msgid "Disconnected" -msgstr "" +msgstr "Déconnecté" #: ipconst.sraserr msgid "Ras Error (%d): on API '%s'" -msgstr "Ras Erreur (%d): sur API '%s'" +msgstr "Erreur Ras (%d) : sur API '%s'" #: ipconst.srasinteractive msgid "Interactive" -msgstr "" +msgstr "Interactif" #: ipconst.sraslogonnetwork msgid "Logon network" -msgstr "" +msgstr "Connexion réseau" #: ipconst.srasopenport msgid "Open port" -msgstr "" +msgstr "Ouvrir le port" #: ipconst.sraspasswordexpired msgid "Password expired" -msgstr "" +msgstr "Mot de passe périmé" #: ipconst.sraspaused msgid "Paused" -msgstr "" +msgstr "En pause" #: ipconst.srasportopened msgid "Port opened" -msgstr "" +msgstr "Port ouvert" #: ipconst.srasprepareforcallback msgid "Prepare for callback" -msgstr "" +msgstr "Préparer un rappel" #: ipconst.srasprojected msgid "Projected" -msgstr "" +msgstr "Projeté" #: ipconst.srasreauthenticate msgid "Re-authenticate" -msgstr "" +msgstr "Ré-authentification" #: ipconst.srasretryauthentication msgid "Retry authentication" -msgstr "" +msgstr "Nouvel essai d'authentification" #: ipconst.srasstartauthentication msgid "Start authentication" -msgstr "" +msgstr "Début d'authentification" #: ipconst.srassubentryconnected msgid "Sub-entry connected" -msgstr "" +msgstr "Sous-entrée connectée" #: ipconst.srassubentrydisconnected msgid "Sub-entry disconnected" -msgstr "" +msgstr "Sous-entrée déconnectée" #: ipconst.sraswaitforcallback msgid "Wait for callback" -msgstr "" +msgstr "Attendre un rappel" #: ipconst.sraswaitformodemreset msgid "Wait for modem reset" -msgstr "" +msgstr "Attendre la réinitialisation du modem" #: ipconst.sreadlineerr msgid "Received line too long, exceeds MaxLineBuf" -msgstr "Ligne reçue trop longue, dépasse MaxLineBuf" +msgstr "Ligne reçue trop longue : elle dépasse \"MaxLineBuf\"" #: ipconst.srenameddiskfileto msgid "Renamed disk file to " -msgstr "" +msgstr "Fichier renommé en " #: ipconst.srowcoloor msgid "%s: either row %d or col %d is out of range" -msgstr "%s: soit row %d ou col %d est en dehors des limites" +msgstr "%s : soit la rangée %d soit la colonne %d est en dehors des limites" #: ipconst.srowoor msgid "%s: row number is out of range" -msgstr "%s: le nombre row est hors des limites" +msgstr "%s : le numéro de rangée est hors limites" #: ipconst.srowrowoor msgid "TIpTerminalArray.ScrollRows: either start row %d or end row %d is out of range" -msgstr "" +msgstr "\"TIpTerminalArray.ScrollRows\" : débordement de valeur de rangée de début %d ou de fin %d" #: ipconst.sseekingdiskfileto msgid "Seeking disk file to " -msgstr "" +msgstr "Recherche en cours sur fichier disque jusque " #: ipconst.sslnopremastersecret msgid "No pre-master secret." -msgstr "" +msgstr "Pas de clé \"premaster secret\"." #: ipconst.ssmtpresponse02 msgid "Success, " -msgstr "" +msgstr "Succès, " #: ipconst.ssmtpresponse04 msgid "Transient, " -msgstr "" +msgstr "Transitoire, " #: ipconst.ssmtpresponse05 msgid "Persistent, " -msgstr "" +msgstr "Persistent, " #: ipconst.ssmtpresponse10 msgid "Other address status" -msgstr "" +msgstr "Autre statut d'adresse" #: ipconst.ssmtpresponse11 msgid "Bad destination mailbox address" -msgstr "" +msgstr "Adresse de boîte mail de destination erronée" #: ipconst.ssmtpresponse12 msgid "Bad destination system address" -msgstr "" +msgstr "Mauvaise adresse du système de destination" #: ipconst.ssmtpresponse13 msgid "Bad destination mailbox address syntax" -msgstr "" +msgstr "Erreur de syntaxe dans l'adresse de boîte mail de destination" #: ipconst.ssmtpresponse14 msgid "Destination mailbox address ambiguous" -msgstr "" +msgstr "Adresse de boîte mail de destination ambiguë" #: ipconst.ssmtpresponse15 msgid "Destination mailbox address valid" -msgstr "" +msgstr "Adresse de boîte mail de destination correcte" #: ipconst.ssmtpresponse16 msgid "Mailbox has moved" -msgstr "" +msgstr "La boîte mail a été déplacée" #: ipconst.ssmtpresponse17 msgid "Bad sender's mailbox address syntax" -msgstr "" +msgstr "Erreur de syntaxe dans l'adresse de boîte mail de l'émetteur" #: ipconst.ssmtpresponse18 msgid "Bad sender's system address" -msgstr "" +msgstr "Mauvaise adresse du système émetteur" #: ipconst.ssmtpresponse20 msgid "Other or undefined mailbox status" -msgstr "" +msgstr "Autre statut de boîte mail ou statut inconnu" #: ipconst.ssmtpresponse21 msgid "Mailbox disabled, not accepting messages" -msgstr "" +msgstr "Boîte mail désactivée, ne peut accepter de message" #: ipconst.ssmtpresponse22 msgid "Mailbox full" -msgstr "" +msgstr "Boîte mail pleine" #: ipconst.ssmtpresponse23 msgid "Message length exceeds administrative limit." -msgstr "" +msgstr "La longueur du message excède la limite administrative." #: ipconst.ssmtpresponse24 msgid "Mailing list expansion problem" -msgstr "" +msgstr "Problème d'extension de liste de diffusion" #: ipconst.ssmtpresponse30 msgid "Other or undefined mail system status" -msgstr "" +msgstr "Autre statut du système de mail ou statut inconnu" #: ipconst.ssmtpresponse31 msgid "Mail system full" -msgstr "" +msgstr "Système de mail saturé" #: ipconst.ssmtpresponse32 msgid "System not accepting network messages" -msgstr "" +msgstr "Système n'acceptant pas de messages réseau" #: ipconst.ssmtpresponse33 msgid "System not capable of selected features" -msgstr "" +msgstr "Système ne supportant pas les options sélectionnées" #: ipconst.ssmtpresponse34 msgid "Message too big for system" -msgstr "" +msgstr "Message trop volumineux pour le système" #: ipconst.ssmtpresponse40 msgid "Other or undefined network or routing status" -msgstr "" +msgstr "Autre statut du réseau ou du routage, ou statut inconnu" #: ipconst.ssmtpresponse41 msgid "No answer from host" -msgstr "" +msgstr "Pas de réponse de l'hôte" #: ipconst.ssmtpresponse42 msgid "Bad connection" -msgstr "" +msgstr "Mauvaise connexion" #: ipconst.ssmtpresponse43 msgid "Routing server failure" -msgstr "" +msgstr "Panne du serveur de routage" #: ipconst.ssmtpresponse44 msgid "Unable to route" -msgstr "" +msgstr "Impossible de router" #: ipconst.ssmtpresponse45 msgid "Network congestion" -msgstr "" +msgstr "Engorgement du réseau" #: ipconst.ssmtpresponse46 msgid "Routing loop detected" -msgstr "" +msgstr "Boucle de routage détectée" #: ipconst.ssmtpresponse47 msgid "Delivery time expired" -msgstr "" +msgstr "Délai de livraison expiré" #: ipconst.ssmtpresponse50 msgid "Other or undefined protocol status" -msgstr "" +msgstr "Autre protocole ou protocole non défini" #: ipconst.ssmtpresponse51 msgid "Invalid command" -msgstr "" +msgstr "Commande incorrecte" #: ipconst.ssmtpresponse52 msgid "Syntax error" -msgstr "" +msgstr "Erreur de syntaxe" #: ipconst.ssmtpresponse53 msgid "Too many recipients" -msgstr "" +msgstr "Trop de destinataires" #: ipconst.ssmtpresponse54 msgid "Invalid command arguments" -msgstr "" +msgstr "Paramètres de commande incorrects" #: ipconst.ssmtpresponse55 msgid "Wrong protocol version" -msgstr "" +msgstr "Mauvaise version du protocole" #: ipconst.ssmtpresponse60 msgid "Other or undefined media error" -msgstr "" +msgstr "Erreur : autre média ou média non défini" #: ipconst.ssmtpresponse61 msgid "Media not supported" -msgstr "" +msgstr "Média non supporté" #: ipconst.ssmtpresponse62 msgid "Conversion required and prohibited" -msgstr "" +msgstr "Conversion requise mais interdite" #: ipconst.ssmtpresponse63 msgid "Conversion required but not supported" -msgstr "" +msgstr "Conversion requise mais non supportée" #: ipconst.ssmtpresponse64 msgid "Conversion with loss performed" -msgstr "" +msgstr "Conversion avec perte effectuée" #: ipconst.ssmtpresponse65 msgid "Conversion failed" -msgstr "" +msgstr "La conversion a échoué" #: ipconst.ssmtpresponse70 msgid "Other or undefined security status" -msgstr "" +msgstr "Autre statut de sécurité ou statut non défini" #: ipconst.ssmtpresponse71 msgid "Delivery not authorized, message refused" -msgstr "" +msgstr "Délivrance non autorisée - message refusé" #: ipconst.ssmtpresponse72 msgid "Mailing list expansion prohibited" -msgstr "" +msgstr "Extension de liste de diffusion interdite" #: ipconst.ssmtpresponse73 msgid "Security conversion required but not possible" -msgstr "" +msgstr "Conversion de sécurité requise mais impossible" #: ipconst.ssmtpresponse74 msgid "Security features not supported" -msgstr "" +msgstr "Options de sécurité non supportées" #: ipconst.ssmtpresponse75 msgid "Cryptographic failure" -msgstr "" +msgstr "Erreur de cryptage" #: ipconst.ssmtpresponse76 msgid "Cryptographic algorithm not supported" -msgstr "" +msgstr "Algorithme de cryptage non supporté" #: ipconst.ssmtpresponse77 msgid "Message integrity failure" -msgstr "" +msgstr "Erreur d'intégrité du message" #: ipconst.ssmtpresponsesubunknown msgid "Unknown subcode" -msgstr "" +msgstr "Sous-code inconnu" #: ipconst.ssmtpresponseunknown msgid "Unknown response code" -msgstr "" +msgstr "Code de réponse inconnu" #: ipconst.ssockserr msgid "SOCKS request refused - %d" -msgstr "SOCKS demande refusée - %d" +msgstr "Requête SOCKS refusée - %d" #: ipconst.sssauthlogin msgid "Requesting authentication" -msgstr "" +msgstr "Demande en cours d'authentification" #: ipconst.sssauthpass msgid "Authenticating password" -msgstr "" +msgstr "Authentification en cours du mot de passe" #: ipconst.sssauthuser msgid "Authenticating username" -msgstr "" +msgstr "Authentification en cours de l'utilisateur" #: ipconst.sssconnect msgctxt "ipconst.sssconnect" msgid "Connecting" -msgstr "" +msgstr "Connexion en cours" #: ipconst.sssdata msgid "Sending Data" -msgstr "" +msgstr "Envoi en cours de données" #: ipconst.sssehlo msgid "Logging on with EHLO" -msgstr "" +msgstr "Connexion en cours avec EHLO" #: ipconst.sssexpand msgid "Expanding" -msgstr "" +msgstr "Extension en cours" #: ipconst.ssshelo msgid "Logging on with HELO" -msgstr "" +msgstr "Connexion en cours avec HELO" #: ipconst.ssshelp msgid "Help" -msgstr "" +msgstr "Aide" #: ipconst.ssslbadcertificate msgid "Bad certificate." -msgstr "" +msgstr "Certificat incorrect." #: ipconst.ssslbadcerttype msgid "Cert type not found" -msgstr "" +msgstr "Type de certificat non trouvé" #: ipconst.ssslbadcompressionvalue msgid "Compression value is wrong." -msgstr "" +msgstr "La valeur de compression est erronée." #: ipconst.ssslbadkeyexchangetype msgid "Key exchange message expected but not received" -msgstr "" +msgstr "Message d'échange de clé attendu mais non reçu" #: ipconst.ssslbadmac msgid "MAC did not match." -msgstr "" +msgstr "Les données MAC ne correspondent pas." #: ipconst.ssslbadmd5hash msgid "MD5 hash did not match." -msgstr "" +msgstr "La clé MD5 ne correspond pas." #: ipconst.ssslbadpublicencoding msgid "Bad public encoding type." -msgstr "" +msgstr "Mauvais type de codage public." #: ipconst.ssslbadrecordmac msgid "Server received a bad record MAC." -msgstr "" +msgstr "Le serveur a reçu un mauvais enregistrement MAC." #: ipconst.ssslbadsha1hash msgid "SHA1 hash did not match." -msgstr "" +msgstr "La clé SHA1 ne correspond pas." #: ipconst.ssslblocksizeerror msgid "Block size error" -msgstr "" +msgstr "Erreur de taille de bloc" #: ipconst.ssslbufferoverflow msgid "Buffer overflow error." -msgstr "" +msgstr "Erreur de débordement de buffer." #: ipconst.ssslbuffersizemissmatch msgid "Buffer size miss-match." -msgstr "" +msgstr "Non correspondance de taille de buffer." #: ipconst.ssslclosenotify msgid "Server sent close notify." -msgstr "" +msgstr "Le serveur a envoyé une alerte \"close notify\"." #: ipconst.ssslcompressionfailure msgid "Compression failure." -msgstr "" +msgstr "Erreur de compression." #: ipconst.ssslconnectchange msgid "Can not change SSL status while connected." -msgstr "" +msgstr "Impossible de changer le statut SSL pendant la connexion." #: ipconst.ssslencryptbuf2small msgid "Encrypt buffer to small." -msgstr "" +msgstr "Buffer de cryptage trop petit." #: ipconst.ssslencryptiontype msgid "Encryption type not defined." -msgstr "" +msgstr "Type de cryptage non défini." #: ipconst.ssslexpiredcertificate msgid "Expired Certificate." -msgstr "" +msgstr "Certificat périmé." #: ipconst.ssslfailedhelloparse msgid "Did not parse server hello correctly." -msgstr "" +msgstr "Interprétation incorrecte du \"hello\" du serveur." #: ipconst.ssslhandshakefailure msgid "Handshake failure." -msgstr "" +msgstr "Erreur de Handshake." #: ipconst.ssslillegalparameter msgid "Illegal Parameter." -msgstr "" +msgstr "Paramètre illégal." #: ipconst.ssslinvalidcipher msgid "Invalid cipher." -msgstr "" +msgstr "Chiffrement incorrect." #: ipconst.ssslnocertificate msgid "Certificate is not available." -msgstr "" +msgstr "Le certificat est indisponible." #: ipconst.ssslnohashtype msgid "No hash type selected." -msgstr "" +msgstr "Aucun type de cryptage détecté." #: ipconst.ssslnomessageencslected msgid "No message encoding type selected." -msgstr "" +msgstr "Aucun type d'encodage sélectionné pour le message." #: ipconst.ssslnoroom msgid "Not enough memory available to read SSL record." -msgstr "" +msgstr "Mémoire insuffisante pour lire l'enregistrement SSL." #: ipconst.ssslnotenoughkeymaterail msgid "Not enough key material." -msgstr "" +msgstr "Contenu de clé insuffisant." #: ipconst.ssslpaddingerror msgid "Padding error." -msgstr "" +msgstr "Erreur de remplissage." #: ipconst.ssslparsererror msgid "Parsing error." -msgstr "" +msgstr "Erreur d'analyse." #: ipconst.ssslpointernotassigned msgid "Pointer not assigned." -msgstr "" +msgstr "Pointeur non initialisé." #: ipconst.ssslreaderror msgid "Read error." -msgstr "" +msgstr "Erreur de lecture." #: ipconst.ssslreadsizemissmatch msgid "Read size miss-match." -msgstr "" +msgstr "Non correspondance de taille de lecture." #: ipconst.ssslrevokedcertificate msgid "Revoked Certificate." -msgstr "" +msgstr "Certificat révoqué." #: ipconst.ssslservernohandshake msgid "Server did not return a handshake message." -msgstr "" +msgstr "Le serveur n'a pas retourné de message \"Handshake\"." #: ipconst.ssslservernoserverhello msgid "Server did not return a server hello message." -msgstr "" +msgstr "Le serveur n'a pas retourné de message \"Hello\"." #: ipconst.ssslsessidtolong msgid "Session ID is longer than 32 bytes." -msgstr "" +msgstr "L'ID de session est plus long que 32 octets." #: ipconst.ssslshabuf2small msgid "SHA1 buffer to small." -msgstr "" +msgstr "Buffer SHA1 trop petit." #: ipconst.ssslunexpectedmessage msgid "Server received an unexpected message." -msgstr "" +msgstr "Le serveur a reçu un message inattendu." #: ipconst.ssslunknowncertificate msgid "Unknown Certificate." -msgstr "" +msgstr "Certificat inconnu." #: ipconst.ssslunprocesseddata msgid "SSL data processing error." -msgstr "" +msgstr "Erreur de traitement des données SSL." #: ipconst.ssslunsupportedcertificate msgid "Unsupported Certificate." -msgstr "" +msgstr "Certificat non supporté." #: ipconst.ssslunsupportedchiper msgid "Unsupported cipher chosen." -msgstr "" +msgstr "Le chiffrement choisi n'est pas supporté." #: ipconst.ssslunsupportedencoding msgid "Unsupported public encoding." -msgstr "" +msgstr "Encodage public non supporté." #: ipconst.sssmailfrom msgid "Sending sender's info" -msgstr "" +msgstr "Envoi en cours des informations de l'expéditeur" #: ipconst.sssnoop msgctxt "ipconst.sssnoop" msgid "No operation" -msgstr "" +msgstr "Pas d'opération" #: ipconst.sssquit msgid "Quit" -msgstr "" +msgstr "Quitter" #: ipconst.sssrcptbcc msgid "Sending BCC info" -msgstr "" +msgstr "Envoi en cours de l'information BCC" #: ipconst.sssrcptcc msgid "Sending CC info" -msgstr "" +msgstr "Envoi en cours de l'information CC" #: ipconst.sssrcptto msgid "Sending MailTo info" -msgstr "" +msgstr "Envoi en cours de l'information MailTo" #: ipconst.sssrset msgid "Resetting server" -msgstr "" +msgstr "Réinitialisation en cours du serveur" #: ipconst.ssssaml msgid "ssSaml" -msgstr "" +msgstr "ssSaml" #: ipconst.ssssend msgid "ssSend" -msgstr "" +msgstr "ssSend" #: ipconst.ssssendenvelope msgid "Sending Envelope" -msgstr "" +msgstr "Envoi en cours de l'enveloppe" #: ipconst.ssssendmessage msgid "Sending Message" -msgstr "" +msgstr "Envoi en cours du message" #: ipconst.ssssoml msgid "ssSoml" -msgstr "" +msgstr "ssSoml" #: ipconst.sssspecial msgctxt "ipconst.sssspecial" msgid "Sending special command" -msgstr "" +msgstr "Envoi en cours d'une commande spéciale" #: ipconst.sssturn msgid "ssTurn" -msgstr "" +msgstr "ssTurn" #: ipconst.sssverify msgid "Verifying" -msgstr "" +msgstr "Vérification en cours" #: ipconst.ssterror msgid "An error has occurred during this task." -msgstr "" +msgstr "Une erreur est survenue pendant l'exécution de cette tâche." #: ipconst.sstlogon msgctxt "ipconst.sstlogon" msgid "Logging on" -msgstr "" +msgstr "Connexion en cours" #: ipconst.sstnotask msgid "None" -msgstr "" +msgstr "Aucun" #: ipconst.sstreamcreated msgid "Successfully created " -msgstr "" +msgstr "Créé avec succès " #: ipconst.sstreamcreateerror msgid "Stream create error " -msgstr "" +msgstr "Erreur de création du flux " #: ipconst.sstsendmail msgid "Sending mail" -msgstr "" +msgstr "Envoi en cours du mail" #: ipconst.sunsupportedencoding msgid "Encoding method not supported" -msgstr "" +msgstr "Méthode d'encodage non supportée" #: ipconst.suuencodecounterr msgid "Count <> Len or Count > 63" -msgstr "" +msgstr "\"Compte <> Longueur\" ou \"Compte > 63\"" #: ipconst.swebimagecannotload msgid "Cannot load %s" -msgstr "" +msgstr "Impossible de charger %s" #: ipconst.swebimagenotfound msgid "%s was not found" -msgstr "" +msgstr "%s est introuvable" #: ipconst.swebimagestreambad msgid "Cannot load image from stream" -msgstr "" +msgstr "Impossible de charger l'image depuis le flux" #: ipconst.swinsockerr msgid "WinSock Error (%d): %s, on API '%s'" -msgstr "Erreur WinSock (%d): %s, sur API '%s'" +msgstr "Erreur WinSock (%d) : %s, sur API '%s'" #: ipconst.swriteafterrename msgid "***Write after rename" -msgstr "" +msgstr "***Écriture après renommage" #: ipconst.swrongstateerr msgid "Can not comply, wrong state" -msgstr "" +msgstr "Impossible de satisfaire la demande - état incorrect" #: ipconst.swsaeacces msgid "Permission denied" @@ -2266,7 +2276,7 @@ #: ipconst.swsaeaddrinuse msgid "Address already in use" -msgstr "Adresse déjà utilisée" +msgstr "Adresse déjà utilisée" #: ipconst.swsaeaddrnotavail msgid "Cannot assign requested address" @@ -2274,7 +2284,7 @@ #: ipconst.swsaeafnosupport msgid "Address family not supported by protocol family" -msgstr "Famille d'adresses non pris en charge par la famille de protocole" +msgstr "Famille d'adresses non prise en charge par la famille de protocole" #: ipconst.swsaealready msgid "Operation already in progress" @@ -2286,19 +2296,19 @@ #: ipconst.swsaecancelled msgid "Cancelled" -msgstr "" +msgstr "Opération annulée" #: ipconst.swsaeconnaborted msgid "Software caused connection abort" -msgstr "" +msgstr "Le programme a déclenché une annulation de connexion" #: ipconst.swsaeconnrefused msgid "Connection refused" -msgstr "" +msgstr "Connexion refusée" #: ipconst.swsaeconnreset msgid "Connection reset by peer" -msgstr "" +msgstr "Connexion réinitialisée par un pair" #: ipconst.swsaedestaddrreq msgid "Destination address required" @@ -2306,11 +2316,11 @@ #: ipconst.swsaediscon msgid "Graceful shutdown in progress" -msgstr "" +msgstr "Arrêt progressif en cours" #: ipconst.swsaedquot msgid "Disk quota exceeded" -msgstr "" +msgstr "Le quota sur le disque est dépassé" #: ipconst.swsaefault msgid "Bad address" @@ -2318,11 +2328,11 @@ #: ipconst.swsaehostdown msgid "Host is down" -msgstr "" +msgstr "L'hôte est indisponible" #: ipconst.swsaehostunreach msgid "No route to host" -msgstr "" +msgstr "Aucune route vers l'hôte" #: ipconst.swsaeinprogress msgid "Operation now in progress" @@ -2330,27 +2340,27 @@ #: ipconst.swsaeintr msgid "Interrupted function call" -msgstr "" +msgstr "Appel de fonction interrompu" #: ipconst.swsaeinval msgid "Invalid argument" -msgstr "Argument invalide" +msgstr "Argument incorrect" #: ipconst.swsaeinvalidproctable msgid "Invalid procedure table from service provider" -msgstr "" +msgstr "Table de procédures reçue du fournisseur de services incorrecte" #: ipconst.swsaeinvalidprovider msgid "Invalid service provider version number" -msgstr "" +msgstr "Numéro de version incorrect du fournisseur de services" #: ipconst.swsaeisconn msgid "Socket is already connected" -msgstr "" +msgstr "Le socket est déjà connecté" #: ipconst.swsaeloop msgid "Too many levels of symbolic links" -msgstr "" +msgstr "Trop de niveaux de liens symboliques" #: ipconst.swsaemfile msgid "Too many open files" @@ -2362,7 +2372,7 @@ #: ipconst.swsaenametoolong msgid "File name too long" -msgstr "" +msgstr "Nom de fichier trop long" #: ipconst.swsaenetdown msgid "Network is down" @@ -2370,20 +2380,20 @@ #: ipconst.swsaenetreset msgid "Network dropped connection on reset" -msgstr "" +msgstr "Le réseau a interrompu la connexion par réinitialisation" #: ipconst.swsaenetunreach msgid "Network is unreachable" -msgstr "Le réseau est inacessible" +msgstr "Le réseau est inaccessible" #: ipconst.swsaenobufs msgid "No buffer space available" -msgstr "" +msgstr "Aucun espace tampon disponible" #: ipconst.swsaenomore msgctxt "ipconst.swsaenomore" msgid "No more data available" -msgstr "" +msgstr "Aucune donnée disponible" #: ipconst.swsaenoprotoopt msgid "Bad protocol option" @@ -2391,15 +2401,15 @@ #: ipconst.swsaenotconn msgid "Socket is not connected" -msgstr "" +msgstr "Le socket n'est pas connecté" #: ipconst.swsaenotempty msgid "Directory not empty" -msgstr "" +msgstr "Répertoire non vide" #: ipconst.swsaenotsock msgid "Socket operation on non socket" -msgstr "" +msgstr "Opération socket tentée sur non-socket" #: ipconst.swsaeopnotsupp msgid "Operation not supported" @@ -2411,7 +2421,7 @@ #: ipconst.swsaeproclim msgid "Too many processes" -msgstr "" +msgstr "Trop de processus" #: ipconst.swsaeprotonosupport msgid "Protocol not supported" @@ -2423,19 +2433,19 @@ #: ipconst.swsaeproviderfailedinit msgid "Unable to initialize a service provider" -msgstr "" +msgstr "Impossible d'initialiser un fournisseur de service" #: ipconst.swsaerefused msgid "Refused" -msgstr "" +msgstr "Refus" #: ipconst.swsaeremote msgid "Too many levels of remote in path" -msgstr "" +msgstr "Trop de niveaux de montage réseau dans le path" #: ipconst.swsaeshutdown msgid "Cannot send after socket shutdown" -msgstr "" +msgstr "Envoi impossible - socket fermé" #: ipconst.swsaesocktnosupport msgid "Socket type not supported" @@ -2443,114 +2453,114 @@ #: ipconst.swsaestale msgid "Stale NFS file handle" -msgstr "" +msgstr "Handle de fichier NFS incorrect" #: ipconst.swsaetimedout msgid "Connection timed out" -msgstr "" +msgstr "Délai de connexion écoulé" #: ipconst.swsaetoomanyrefs msgid "Too many references; cannot splice" -msgstr "" +msgstr "Trop de références ; impossible à raccorder" #: ipconst.swsaeusers msgid "Too many users" -msgstr "" +msgstr "Trop d'utilisateurs" #: ipconst.swsaewouldblock msgid "Resource temporarily unavailable" -msgstr "Ressource temporairement invalide" +msgstr "Ressource temporairement indisponible" #: ipconst.swsahost_not_found msgid "Host not found" -msgstr "" +msgstr "Hôte introuvable" #: ipconst.swsanotinitialised msgid "Successful WSAStartup not yet performed" -msgstr "" +msgstr "\"WSAStartup\" pas encore exécuté avec succès" #: ipconst.swsano_data msgid "Valid name, no data record of requested type" -msgstr "" +msgstr "Nom correct - pas d'enregistrement de données de ce type" #: ipconst.swsano_recovery msgid "This is a nonrecoverable error" -msgstr "" +msgstr "Cette erreur n'est pas récupérable" #: ipconst.swsaservice_not_found msgid "Service not found" -msgstr "" +msgstr "Service introuvable" #: ipconst.swsasyscallfailure msgid "System call failure" -msgstr "" +msgstr "Erreur d'appel système" #: ipconst.swsasysnotready msgid "Network subsystem is unavailable" -msgstr "" +msgstr "Sous-système réseau indisponible" #: ipconst.swsatry_again msgid "Non-authoritative host not found" -msgstr "" +msgstr "Hôte non trouvé (non-authoritative)" #: ipconst.swsatype_not_found msgid "Type not found" -msgstr "" +msgstr "Type non trouvé" #: ipconst.swsavernotsupported msgid "WinSock DLL version not supported" -msgstr "" +msgstr "Version de DLL WinSock non supportée" #: ipconst.swsa_e_cancelled msgid "Lookup cancelled" -msgstr "" +msgstr "Recherche annulée" #: ipconst.swsa_e_no_more msgctxt "ipconst.swsa_e_no_more" msgid "No more data available" -msgstr "" +msgstr "Plus aucune donnée disponible" #: ipconst.swsa_qos_admission_failure msgid "Error due to lack of resources" -msgstr "" +msgstr "Erreur due au manque de ressources" #: ipconst.swsa_qos_bad_object msgid "Problem filterspec or provider specific buffer" -msgstr "" +msgstr "Problème de \"filterspec\" ou de buffer spécifique au fournisseur" #: ipconst.swsa_qos_bad_style msgid "Unknown or conflicting style" -msgstr "" +msgstr "Style inconnu ou incompatible" #: ipconst.swsa_qos_generic_error msgid "General error" -msgstr "" +msgstr "Erreur générale" #: ipconst.swsa_qos_no_receivers msgid "There are no receivers" -msgstr "" +msgstr "Il n'y a pas de destinataires" #: ipconst.swsa_qos_no_senders msgid "There are no senders" -msgstr "" +msgstr "Il n'y a pas d'expéditeurs" #: ipconst.swsa_qos_policy_failure msgid "Rejected for administrative reasons - bad credentials" -msgstr "" +msgstr "Rejet pour raisons administratives : mauvaises références" #: ipconst.swsa_qos_receivers msgid "At least one Reserve has arrived" -msgstr "" +msgstr "Qualité de service : réception d'au moins une réserve" #: ipconst.swsa_qos_request_confirmed msgid "Reserve has been confirmed" -msgstr "" +msgstr "Qualité de service : réserve confirmée" #: ipconst.swsa_qos_senders msgid "At least one Path has arrived" -msgstr "" +msgstr "Réception d'au moins une liste de routeurs du chemin des données" #: ipconst.swsa_qos_traffic_ctrl_error msgid "Problem with some part of the flowspec" -msgstr "" +msgstr "Problème avec une partie du flot de données" diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.it.po lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.it.po --- lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.it.po 2014-11-11 17:38:50.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.it.po 2016-01-05 13:18:21.000000000 +0000 @@ -224,7 +224,6 @@ msgstr "Connetti: Loc: %s Comm: %s" #: ipconst.seventdisconnect -#| msgid "Close: Loc: %s Rem: %s" msgid "Close: Loc: %s Rem: %s" msgstr "Chiudo: Loc: %s Rem: %s" @@ -1547,7 +1546,6 @@ msgstr "Connessione con Utente" #: ipconst.spterror -#| msgid "An error occured with the last task." msgid "An error occurred with the last task." msgstr "Si è verificato un errore nell'ultimo task." @@ -2114,12 +2112,10 @@ msgstr "Certificato revocato." #: ipconst.ssslservernohandshake -#| msgid "Server cid not return a handshake message." msgid "Server did not return a handshake message." msgstr "Il server non ha restituito un messaggio di handshake." #: ipconst.ssslservernoserverhello -#| msgid "Server cid not return a server hello message." msgid "Server did not return a server hello message." msgstr "Il server non ha restituito un messaggio di hello server." @@ -2218,7 +2214,6 @@ msgstr "Verifica" #: ipconst.ssterror -#| msgid "An error has occured during this task." msgid "An error has occurred during this task." msgstr "Si è verificato un errore in questo task." @@ -2413,7 +2408,6 @@ msgstr "Cartella non vuota" #: ipconst.swsaenotsock -#| msgid "Socket operation on nonsocket" msgid "Socket operation on non socket" msgstr "Operazione di socket su qualcosa che non è un socket" @@ -2506,7 +2500,6 @@ msgstr "Sottosistema di rete non disponibile" #: ipconst.swsatry_again -#| msgid "Nonauthoritative host not found" msgid "Non-authoritative host not found" msgstr "Host non autoritativo non trovato" @@ -2532,7 +2525,6 @@ msgstr "Errore per mancanza di risorse" #: ipconst.swsa_qos_bad_object -#| msgid "Problem filterspec or providerspecific buffer" msgid "Problem filterspec or provider specific buffer" msgstr "Problema con buffer specifico per filtro o fornitore" @@ -2571,3 +2563,4 @@ #: ipconst.swsa_qos_traffic_ctrl_error msgid "Problem with some part of the flowspec" msgstr "Problema con alcune parti del flowspec" + diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.lt.po lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.lt.po --- lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.lt.po 2014-11-04 21:06:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.lt.po 2016-01-05 13:18:21.000000000 +0000 @@ -293,7 +293,6 @@ msgstr "- tikėtasi" #: ipconst.shtmldefbrowsecaption -#| msgid "Browse..." msgid "Browse ..." msgstr "Naršyti…" @@ -442,6 +441,7 @@ msgstr "Gija %d baigia darbą (Hop numeris = %d)" #: ipconst.sicmptracecomplete +#, fuzzy,badformat msgid "Trace complete (%s), %d hops" msgstr "Sekimas baigtas (%s), %s Hop'sų" diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.pt_BR.po lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.pt_BR.po --- lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.pt_BR.po 2014-11-04 21:06:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.pt_BR.po 2016-01-05 13:18:21.000000000 +0000 @@ -18,6 +18,7 @@ msgstr "Verificando Novidade (%s)" #: ipconst.cachedirnotexist +#, fuzzy,badformat msgid "Cache directory %s does not exist." msgstr "Diretório \"Cache\" não existe." @@ -291,7 +292,6 @@ msgstr "- esperado" #: ipconst.shtmldefbrowsecaption -#| msgid "Browse..." msgid "Browse ..." msgstr "Navegar ..." diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.ru.po lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.ru.po --- lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.ru.po 2014-11-21 01:06:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.ru.po 2016-02-13 12:47:57.000000000 +0000 @@ -5,9 +5,11 @@ "Content-Transfer-Encoding: 8bit\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2014-11-21 04:02+0300\n" +"PO-Revision-Date: 2016-02-13 15:23+0300\n" "Last-Translator: Maxim Ganetsky \n" "Language-Team: \n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: ipconst.cacheadding msgid "Caching item (%s = %s)" @@ -143,7 +145,7 @@ #: ipconst.sbibuffernotassigned msgid "Buffer not assigned" -msgstr "Буфер не назначен" +msgstr "Буфер не присвоен" #: ipconst.sbinhexbadchar msgid "Invalid BinHex character" @@ -220,7 +222,6 @@ msgstr "Соединение: Loc: %s Rem: %s" #: ipconst.seventdisconnect -#| msgid "Close: Loc: %s Rem: %s" msgid "Close: Loc: %s Rem: %s" msgstr "Завершение: Loc: %s Rem: %s" @@ -290,7 +291,6 @@ msgstr "- ожидается" #: ipconst.shtmldefbrowsecaption -#| msgid "Browse..." msgid "Browse ..." msgstr "Обзор ..." @@ -376,11 +376,11 @@ #: ipconst.shtmlnodataprovider msgid "No data provider assigned" -msgstr "Не назначен провайдер данных" +msgstr "Не присвоен провайдер данных" #: ipconst.shtmlnogetimage msgid "No OnGetImage event handler assigned" -msgstr "Не назначен обработчик события OnGetImage" +msgstr "Не присвоен обработчик события OnGetImage" #: ipconst.shtmlnographic msgid "Picture object contains no graphic object" @@ -552,7 +552,7 @@ #: ipconst.slistnotassigned msgid "List not assigned" -msgstr "Список не назначен" +msgstr "Список не присвоен" #: ipconst.slogarticle msgid "Generating OnArticle event" @@ -1059,7 +1059,7 @@ #: ipconst.snomemorystreamerr msgid "No Memory Stream assigned" -msgstr "Не назначен поток для записи в память" +msgstr "Не присвоен поток для записи в память" #: ipconst.snorecipients msgid "No recipients specified" @@ -1075,11 +1075,11 @@ #: ipconst.snosockerr msgid "Socket not assigned" -msgstr "Сокет не назначен" +msgstr "Сокет не присвоен" #: ipconst.snostreamerr msgid "Stream not assigned" -msgstr "Поток не назначен" +msgstr "Поток не присвоен" #: ipconst.snotenoughdata msgid "Not enough data in queue (%s bytes) to satisfy read request (%s bytes)" @@ -1544,7 +1544,6 @@ msgstr "Вход под именем пользователя" #: ipconst.spterror -#| msgid "An error occured with the last task." msgid "An error occurred with the last task." msgstr "Во время выполнения последней задачи произошла ошибка." @@ -2096,7 +2095,7 @@ #: ipconst.ssslpointernotassigned msgid "Pointer not assigned." -msgstr "Указатель не назначен." +msgstr "Указатель не присвоен." #: ipconst.ssslreaderror msgid "Read error." @@ -2111,12 +2110,10 @@ msgstr "Отозванный сертификат." #: ipconst.ssslservernohandshake -#| msgid "Server cid not return a handshake message." msgid "Server did not return a handshake message." msgstr "Сервер не возвратил инициализационное (handshake) сообщение." #: ipconst.ssslservernoserverhello -#| msgid "Server cid not return a server hello message." msgid "Server did not return a server hello message." msgstr "Сервер не возвратил сообщение server hello." @@ -2215,7 +2212,6 @@ msgstr "Проверка" #: ipconst.ssterror -#| msgid "An error has occured during this task." msgid "An error has occurred during this task." msgstr "Во время выполнения этой задачи произошла ошибка." @@ -2282,7 +2278,7 @@ #: ipconst.swsaeaddrnotavail msgid "Cannot assign requested address" -msgstr "Невозможно назначить запрашиваемый адрес" +msgstr "Невозможно присвоить запрашиваемый адрес" #: ipconst.swsaeafnosupport msgid "Address family not supported by protocol family" @@ -2410,7 +2406,6 @@ msgstr "Каталог не пустой" #: ipconst.swsaenotsock -#| msgid "Socket operation on nonsocket" msgid "Socket operation on non socket" msgstr "Сокет-операция над не-сокетом" @@ -2503,7 +2498,6 @@ msgstr "Сетевая подсистема недоступна" #: ipconst.swsatry_again -#| msgid "Nonauthoritative host not found" msgid "Non-authoritative host not found" msgstr "Неполномочный хост не найден" @@ -2529,7 +2523,6 @@ msgstr "Ошибка из-за отсутствия ресурсов" #: ipconst.swsa_qos_bad_object -#| msgid "Problem filterspec or providerspecific buffer" msgid "Problem filterspec or provider specific buffer" msgstr "Ошибка буфера провайдера либо фильтра" diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.uk.po lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.uk.po --- lazarus-1.4.4+dfsg/components/turbopower_ipro/languages/ipconst.uk.po 2014-11-04 21:06:15.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/languages/ipconst.uk.po 2016-01-05 13:18:21.000000000 +0000 @@ -294,7 +294,6 @@ msgstr "- очікується" #: ipconst.shtmldefbrowsecaption -#| msgid "Browse..." msgid "Browse ..." msgstr "Огляд ..." @@ -1253,6 +1252,7 @@ msgstr "Непідтримувана бітова глибина %d" #: ipconst.spngbadchunktype +#, fuzzy,badformat msgid "Unrecognized Chunk Type: %s" msgstr "Неопізнаний тип послідовності %d" diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/Makefile.compiled lazarus-1.6+dfsg/components/turbopower_ipro/Makefile.compiled --- lazarus-1.4.4+dfsg/components/turbopower_ipro/Makefile.compiled 2015-02-14 09:39:22.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/Makefile.compiled 2015-10-01 18:40:54.000000000 +0000 @@ -1,5 +1,5 @@ - + diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/Makefile.fpc lazarus-1.6+dfsg/components/turbopower_ipro/Makefile.fpc --- lazarus-1.4.4+dfsg/components/turbopower_ipro/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile.fpc for TurboPowerIPro 1.0 # -# This file was generated on 3-10-15 +# This file was generated on 1-10-15 [package] name=turbopoweripro @@ -11,7 +11,7 @@ [compiler] unittargetdir=units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) unitdir=../../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET) ../../lcl/units/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) ../cairocanvas/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) ../printers/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) . -options= -MObjFPC -Scgi -O1 -g -gl -l -vh- -vewnibq -dLCL -dLCL$(LCL_PLATFORM) $(DBG_OPTIONS) +options= -MObjFPC -Scgi -O1 -g -gl -l -vewnibq -vh- -dLCL -dLCL$(LCL_PLATFORM) $(DBG_OPTIONS) [target] units=turbopoweripro.pas diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/make_icons.bat lazarus-1.6+dfsg/components/turbopower_ipro/make_icons.bat --- lazarus-1.4.4+dfsg/components/turbopower_ipro/make_icons.bat 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/make_icons.bat 2016-02-06 14:36:36.000000000 +0000 @@ -0,0 +1 @@ +..\..\tools\lazres.exe iphtml.res @icons_list.txt Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/turbopower_ipro/tiphttpdataprovider.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/turbopower_ipro/tiphttpdataprovider.png differ diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/turbopoweripro.lpk lazarus-1.6+dfsg/components/turbopower_ipro/turbopoweripro.lpk --- lazarus-1.4.4+dfsg/components/turbopower_ipro/turbopoweripro.lpk 2014-07-19 07:42:21.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/turbopoweripro.lpk 2016-02-06 14:36:36.000000000 +0000 @@ -2,6 +2,7 @@ + @@ -24,7 +25,7 @@ - + @@ -47,56 +48,61 @@ - + - + - - + + + - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + - + - diff -Nru lazarus-1.4.4+dfsg/components/turbopower_ipro/turbopoweripro.pas lazarus-1.6+dfsg/components/turbopower_ipro/turbopoweripro.pas --- lazarus-1.4.4+dfsg/components/turbopower_ipro/turbopoweripro.pas 2014-08-11 20:06:06.000000000 +0000 +++ lazarus-1.6+dfsg/components/turbopower_ipro/turbopoweripro.pas 2016-02-06 14:36:36.000000000 +0000 @@ -7,8 +7,8 @@ interface uses - IpAnim, IpConst, Ipfilebroker, IpHtml, {$IFDEF Html_Print}IpHtmlPv,{$ENDIF} IpMsg, IpStrms, IpUtils, - IpHtmlTabList, iphtmlprop, ipHtmlBlockLayout, ipHtmlTableLayout, + IpAnim, IpConst, Ipfilebroker, Iphttpbroker, IpHtml, IpMsg, IpStrms, + IpUtils, IpHtmlTabList, iphtmlprop, ipHtmlBlockLayout, ipHtmlTableLayout, LazarusPackageIntf; implementation @@ -16,6 +16,7 @@ procedure Register; begin RegisterUnit('Ipfilebroker', @Ipfilebroker.Register); + RegisterUnit('Iphttpbroker', @Iphttpbroker.Register); RegisterUnit('IpHtml', @IpHtml.Register); end; diff -Nru lazarus-1.4.4+dfsg/components/wiki/chm/wiki.css lazarus-1.6+dfsg/components/wiki/chm/wiki.css --- lazarus-1.4.4+dfsg/components/wiki/chm/wiki.css 2012-02-28 19:22:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/chm/wiki.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -body { - margin:0; - color:#111111; - background-color:#FFFFFF; - font-family:"Trebuchet MS", Arial, Verdana, sans-serif; - text-align:left; - margin-right:10.2em; - padding:0.7em; -} - -/* Bi-Directional support */ -*[lang="he"], *[lang="ar"] /* not supported by IE */ -{ - direction : rtl; - text-align : right; -} - -body[lang="he"], body[lang="ar"] -{ - margin:0; - color:#111111; - background-color:#FFFFFF; - font-family:"Trebuchet MS", Arial, Verdana, sans-serif; - text-align : right; - direction : rtl; - margin-right:10.2em; - padding-right:0.7em; -} - -p { - line-height: 1.5em; - margin: 0.4em 0 0.5em; -} - -a { - color:#4D87CE; - text-decoration:none; -} -a:hover { - color:#2a65ad; -} - -ul li { - list-style-image:url(../pic/backgrounds/li.gif); - line-height:20px; - text-align:left; -} - -#logoheader { - width:80%; - margin:0 auto 0 auto; - text-align:right; -} - -#content { - margin:0 40px; - padding:0; - text-align:left; -} - -h1 { - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:150%; - text-transform:uppercase; - font-weight:normal; - border-bottom:1px solid #eeeeee; - color:#253183; - margin-top: 10px; -} - -#content h1{ - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:150%; - margin-bottom: 0.6em; -} -h2{ - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:130%; - margin-bottom: 0.3em; -} -h3{ - font-family: sans-serif; - font-size:120%; - margin-bottom: 0.3em; -} -h4, h5, h6, .subTitle{ - font-family: sans-serif; - font-size:100%; - font-weight:bold; - margin-bottom: 0.3em; -} - -pre, .pascal { - background-color: #F9F9F9; - border: 1px dashed #2F6FAB; - color: black; - padding: 1em; -} - -.num { - color: #0000DD; -} - -.string { - color: #0000DD; -} - -.var { - color: #000000; -} - -.key { - font-weight:bold; -} - -.sym { - color: red; -} - -.cmt { - color: blue; -} - -ul li p { - margin: 0; -} - -blockquote { - margin: 0 3%; -} - -/* roadmap.css */ - -td.working { - background-color: #88FF88; - padding: 3px; - text-align: center; -} -td.unknown { - background-color: #FFFFFF; - padding: 3px; - text-align: center; -} -td.partial { - background-color: #FFFF88; - padding: 3px; - text-align: center; -} -td.not { - background-color: #FF8888; - padding: 3px; - text-align: center; -} -td.progress { - background-color: #8888FF; - padding: 3px; - text-align: center; -} -tr.working { - background-color: #88FF88; - padding: 3px; - text-align: center; -} -tr.unknown { - background-color: #FFFFFF; - padding: 3px; - text-align: center; -} -tr.partial { - background-color: #FFFF88; - padding: 3px; - text-align: center; -} -tr.not { - background-color: #FF8888; - padding: 3px; - text-align: center; -} -tr.progress { - background-color: #8888FF; - padding: 3px; - text-align: center; -} - -span.keypress { - border: 0.2em outset #cecbc7; - background: #f0ece8; - padding: 0.1em 0.4em; - font-size: 0.8em; - white-space: nowrap; -} - diff -Nru lazarus-1.4.4+dfsg/components/wiki/css/wiki.css lazarus-1.6+dfsg/components/wiki/css/wiki.css --- lazarus-1.4.4+dfsg/components/wiki/css/wiki.css 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/css/wiki.css 2015-06-25 17:11:53.000000000 +0000 @@ -0,0 +1,288 @@ +body { + margin: 0; + color: #111111; + background-color: #FFFFFF; + font-family: "Segoe UI", "Trebuchet MS", Arial, Verdana, sans-serif; + font-size: 10pt; + text-align: left; + padding: 0.7em; +} + + +/* Bi-Directional support */ + +*[lang="he"], *[lang="ar"] /* not supported by IE */ +{ + direction: rtl; + text-align: right; +} + +body[lang="he"], body[lang="ar"] +{ + margin: 0; + color: #111111; + background-color: #FFFFFF; + font-family: "Segoe UI", "Trebuchet MS", Arial, Verdana, sans-serif; + text-align: right; + direction: rtl; + margin-right: 10.2em; + padding-right: 0.7em; +} + +p { + line-height: 1.25em; + margin: 5px 0 5px 0; +} + +a { + color:#4D87CE; + text-decoration:none; +} +a:hover { + color:#2a65ad; +} + +ul li { + list-style-image:url(../pic/backgrounds/li.gif); + text-align:left; + margin-bottom: 2px; + margin-top: 2px; +} + +#logoheader { + width:80%; + margin:0 auto 0 auto; + text-align:right; +} + +#content { + margin:0 40px; + padding:0; + text-align:left; +} + + +/* Headers */ + +h1 { + font-family: "Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; + font-size:150%; + font-weight:normal; + text-transform:uppercase; + border-bottom:1px solid #eeeeee; + margin-top: 10px; +} + +#content h1 { + font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; + font-size:150%; + margin-bottom: 10px; +} + +h2 { + font-family: "Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; + font-size: 130%; + margin-top: 25px; + margin-bottom: 10px; + border-bottom: 1px solid #CCCCCC; +} + +h3 { + font-family: "Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; + font-size:120%; + margin-top: 15px; + margin-bottom: 5px; +} + +h4, h5, h6, .subTitle { + font-family: sans-serif; + font-size: 100%; + font-weight: bold; + margin-bottom: 5px; +} + + +/* Code */ + +pre, .pascal { + background-color: #F9F9F9; + border: 1px dashed #2F6FAB; + color: black; + padding: 8px; + overflow: auto; + line-height: 125%; +} + +.num { + color: #0000DD; +} + +.string { + color: #800080; +} + +.var { + color: #000000; +} + +.key { + font-weight:bold; +} + +.sym { + color: red; +} + +.cmt { + color: #777777; + font-style: italic; +} + +blockquote { + margin: 0 3%; +} + + +/* templates */ + +div.template-with-icon { + border-width: 1px; + border-color: #C0C0C0; + padding: 4px 8px 8px 8px; + border-style:solid; + display: block; + margin-top: 10px; + min-height: 28px; +} + +div.icon { + clear: left; + float: left; + margin-right: 8px; + margin-top:0px; +} + +span.keypress { + border: 0.2em outset #cecbc7; + background: #f0ece8; + padding: 0.1em 0.4em; + font-size: 80%; + white-space: nowrap; +} + +div.catlinks { + background-color: #F9F9F9; + border: 1px solid #aaa; + color: #aaa; + padding: 10px; + margin-top: 20px; +} + + +/* images */ + +div.image { + border: 1px solid $C0C0C0; + padding: 3px; + margin: 8px; + font-size: 80%; + vertical-align: text-top; +} + +.image-no-border { + border: 0px; + padding: 0px; + margin: 8px; + font-size: 80%; + vertical-align: text-top; +} + + +/* roadmap.css */ + +table { + margin-top: 10px; + margin-bottom: 10px; + border-collapse: collapse; + padding: 4px; + font-family: "Segoe UI", "Trebuchet MS", Arial, Verdana, sans-serif; + font-size: 10pt; +} + +th { + border: 1px solid #999; + border-collapse: collapse; + padding: 4px; + background-color: #CCCCCC; + font-size: 10pt; + font-weight: bold; + text-align: center; +} + +td { + border: 1px solid #999; + border-collapse: collapse; + background-color: #F7F7F7; + padding: 3px; + font-size: 10pt; +} + +td.working { + background-color: #88FF88; + padding: 3px; + text-align: center; +} + +td.unknown { + background-color: #FFFFFF; + padding: 3px; + text-align: center; +} + +td.partial { + background-color: #FFFF88; + padding: 3px; + text-align: center; +} + +td.not { + background-color: #FF8888; + padding: 3px; + text-align: center; +} + +td.progress { + background-color: #8888FF; + padding: 3px; + text-align: center; +} + +tr.working { + background-color: #88FF88; + padding: 3px; + text-align: center; +} + +tr.unknown { + background-color: #FFFFFF; + padding: 3px; + text-align: center; +} + +tr.partial { + background-color: #FFFF88; + padding: 3px; + text-align: center; +} + +tr.not { + background-color: #FF8888; + padding: 3px; + text-align: center; +} + +tr.progress { + background-color: #8888FF; + padding: 3px; + text-align: center; +} diff -Nru lazarus-1.4.4+dfsg/components/wiki/html/wiki.css lazarus-1.6+dfsg/components/wiki/html/wiki.css --- lazarus-1.4.4+dfsg/components/wiki/html/wiki.css 2012-02-28 19:22:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/html/wiki.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -body { - margin:0; - color:#111111; - background-color:#FFFFFF; - font-family:"Trebuchet MS", Arial, Verdana, sans-serif; - text-align:left; - margin-right:10.2em; - padding:0.7em; -} - -/* Bi-Directional support */ -*[lang="he"], *[lang="ar"] /* not supported by IE */ -{ - direction : rtl; - text-align : right; -} - -body[lang="he"], body[lang="ar"] -{ - margin:0; - color:#111111; - background-color:#FFFFFF; - font-family:"Trebuchet MS", Arial, Verdana, sans-serif; - text-align : right; - direction : rtl; - margin-right:10.2em; - padding-right:0.7em; -} - -p { - line-height: 1.5em; - margin: 0.4em 0 0.5em; -} - -a { - color:#4D87CE; - text-decoration:none; -} -a:hover { - color:#2a65ad; -} - -ul li { - list-style-image:url(../pic/backgrounds/li.gif); - line-height:20px; - text-align:left; -} - -#logoheader { - width:80%; - margin:0 auto 0 auto; - text-align:right; -} - -#content { - margin:0 40px; - padding:0; - text-align:left; -} - -h1 { - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:150%; - text-transform:uppercase; - font-weight:normal; - border-bottom:1px solid #eeeeee; - color:#253183; - margin-top: 10px; -} - -#content h1{ - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:150%; - margin-bottom: 0.6em; -} -h2{ - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:130%; - margin-bottom: 0.3em; -} -h3{ - font-family: sans-serif; - font-size:120%; - margin-bottom: 0.3em; -} -h4, h5, h6, .subTitle{ - font-family: sans-serif; - font-size:100%; - font-weight:bold; - margin-bottom: 0.3em; -} - -pre, .pascal { - background-color: #F9F9F9; - border: 1px dashed #2F6FAB; - color: black; - padding: 1em; -} - -.num { - color: #0000DD; -} - -.string { - color: #0000DD; -} - -.var { - color: #000000; -} - -.key { - font-weight:bold; -} - -.sym { - color: red; -} - -.cmt { - color: blue; -} - -ul li p { - margin: 0; -} - -blockquote { - margin: 0 3%; -} - -/* roadmap.css */ - -td.working { - background-color: #88FF88; - padding: 3px; - text-align: center; -} -td.unknown { - background-color: #FFFFFF; - padding: 3px; - text-align: center; -} -td.partial { - background-color: #FFFF88; - padding: 3px; - text-align: center; -} -td.not { - background-color: #FF8888; - padding: 3px; - text-align: center; -} -td.progress { - background-color: #8888FF; - padding: 3px; - text-align: center; -} -tr.working { - background-color: #88FF88; - padding: 3px; - text-align: center; -} -tr.unknown { - background-color: #FFFFFF; - padding: 3px; - text-align: center; -} -tr.partial { - background-color: #FFFF88; - padding: 3px; - text-align: center; -} -tr.not { - background-color: #FF8888; - padding: 3px; - text-align: center; -} -tr.progress { - background-color: #8888FF; - padding: 3px; - text-align: center; -} - -span.keypress { - border: 0.2em outset #cecbc7; - background: #f0ece8; - padding: 0.1em 0.4em; - font-size: 0.8em; - white-space: nowrap; -} - Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/wiki/images/internal/note.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/wiki/images/internal/note.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/components/wiki/images/internal/warning.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/components/wiki/images/internal/warning.png differ diff -Nru lazarus-1.4.4+dfsg/components/wiki/lazwiki/wiki2chmconvert.pas lazarus-1.6+dfsg/components/wiki/lazwiki/wiki2chmconvert.pas --- lazarus-1.4.4+dfsg/components/wiki/lazwiki/wiki2chmconvert.pas 2012-03-10 14:52:06.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/lazwiki/wiki2chmconvert.pas 2015-07-04 23:08:00.000000000 +0000 @@ -39,7 +39,7 @@ {$ELSE} chmwriter, chmfilewriter, chmsitemap, {$ENDIF} - LazUTF8, FileUtil, CodeToolsStructs; + LazUTF8, LazFileUtils, CodeToolsStructs; const CHMImagesDir = '/images/'; @@ -57,20 +57,27 @@ TWiki2CHMConverter = class(TWiki2HTMLConverter) private FCHMFile: string; - FIndexFileName: string; + FTOCRootName: String; + FIndexFileName, FTOCFileName: String; + FTocSitemap, FIndexSitemap: TCHMSiteMap; + FTocStream, FIndexStream: TMemoryStream; procedure SetCHMFile(AValue: string); procedure SetIndexFileName(AValue: string); + procedure SetTOCFilename(AValue: string); protected Writer: TChmWriter; FilesCompressed: integer; DocumentNameToPage: TStringToPointerTree; // Page.WikiDocumentName+'.html' to Page + procedure AddIndexItem(AText, AUrl: String); override; + procedure AddTocItem(ALevel: Integer; AText, AUrl: String); override; procedure ConvertInit; override; function OnWriterGetFileData(const DataName: String; out PathInChm: String; out FileName: String; var Stream: TStream): Boolean; - procedure WriteIndexToStream(aStream: TStream); procedure OnWriterLastFileAdded(Sender: TObject); function GetImageLink(ImgFilename: string): string; override; + function GetInternalImageLink(ImgFilename: String): String; override; function GetPageLink(Page: TW2XHTMLPage): string; override; + function GetRelativeCSSFileName: String; override; procedure SaveAllPages; override; public constructor Create; override; @@ -78,6 +85,8 @@ procedure Clear; override; property CHMFile: string read FCHMFile write SetCHMFile; property IndexFileName: string read FIndexFileName write SetIndexFileName; + property TOCFileName: String read FTOCFilename write SetTOCFilename; + property TOCRootName: String read FTOCRootName write FTOCRootName; end; implementation @@ -115,90 +124,100 @@ raise Exception.Create('TWiki2CHMConverter.OnWriterGetFileData failed DataName="'+dbgstr(DataName)+'"'); end; -procedure TWiki2CHMConverter.WriteIndexToStream(aStream: TStream); - - procedure w(const s: string); - begin - if s='' then exit; - aStream.Write(s[1],length(s)); - {$IFDEF VerboseCHMIndex} - dbgout(s); - {$ENDIF} +procedure TWiki2CHMConverter.AddIndexItem(AText, AUrl: String); +var + item: TCHMSiteMapItem; + i: Integer; + txt, url, itemtxt, itemurl, itemlocal: String; +begin + // Avoid empty index data + if (AText = '') or (AUrl = '') then + exit; + + AText := EscapeToHTML(AText); + + // Avoid duplicate index items. + txt := UTF8Trim(UTF8Lowercase(AText)); + url := UTF8Trim(UTF8Lowercase(AUrl)); + for i:=0 to FIndexSiteMap.Items.Count-1 do begin + item := FIndexSiteMap.Items.Item[i]; + itemtxt := UTF8Lowercase(item.Text); + itemurl := UTF8Lowercase(item.URL); + itemlocal := UTF8Lowercase(item.Local); + if (txt = itemtxt) and ((url = itemurl) or (url = itemlocal)) then + exit; end; - procedure wl(const s: string); + item := FIndexSiteMap.Items.NewItem; + item.Local := Trim(AUrl); + item.Text := UTF8Trim(AText); + item.Keyword := UTF8Trim(AText); +end; + +procedure TWiki2CHMConverter.AddTocItem(ALevel: Integer; AText, AUrl: String); +// Is called whenever a new node is added to the xml TOC + + function NewItemAtLevel(ALevel: Integer): TChmSiteMapItem; + var + item: TChmSiteMapItem; + items: TChmSiteMapItems; + level: Integer; begin - w(s); - w(#13#10); + level := 0; + items := FTOCSiteMap.Items; + while level < ALevel do begin + if items.Count = 0 then + item := items.NewItem + else + item := items.Item[items.Count-1]; + items := item.Children; + inc(level); + end; + Result := items.NewItem; end; var - i: Integer; - Page: TW2CHMPage; - List: TStringList; - CurTitle: String; + item: TCHMSitemapItem; begin - wl(''); - wl(''); - wl(''); - wl(''); - wl(''); - wl(''); - wl(''); - wl(''); - wl('
    '); - List:=TStringList.Create; - try - // add pages sorted by title - for i:=0 to Count-1 do begin - Page:=TW2CHMPage(Pages[i]); - CurTitle:=UTF8Trim(Page.WikiPage.Title); - if CurTitle='' then continue; - List.AddObject(CurTitle,Page); - end; - List.Sort; - for i:=0 to List.Count-1 do begin - Page:=TW2CHMPage(List.Objects[i]); - wl('
  • '); - wl(' '); - wl(' '); - end; - finally - List.Free; - end; - wl(''); - wl(''); - wl(''); + item := NewItemAtLevel(ALevel); + item.Local := AUrl; + item.Text := EscapeToHTML(AText); + item.ImageNumber := 0; +end; + +function CompareIndex(Item1, Item2: Pointer): Integer; +var + indexItem1, indexItem2: TChmSiteMapItem; +begin + indexItem1 := TChmSiteMapItem(Item1); + indexItem2 := TChmSiteMapItem(Item2); + Result := UTF8CompareStr(UTF8Lowercase(indexItem1.Text), UTF8Lowercase(indexItem2.Text)); end; procedure TWiki2CHMConverter.OnWriterLastFileAdded(Sender: TObject); var - IndexStream: TMemoryStream; - IndexSitemap: TChmSiteMap; CurWriter: TChmWriter; begin // Assign the TOC and index files CurWriter := TChmWriter(Sender); if CurWriter=nil then exit; - // write Index see TChmProject.LastFileAdded + // write Index (see TChmProject.LastFileAdded) if (IndexFileName <> '') then begin - IndexSitemap := nil; - IndexStream := TMemoryStream.Create; - try - WriteIndexToStream(IndexStream); - CurWriter.AppendIndex(IndexStream); - IndexStream.Position := 0; - IndexSitemap := TChmSiteMap.Create(stIndex); - indexSitemap.LoadFromStream(IndexStream); - CurWriter.AppendBinaryIndexFromSiteMap(IndexSitemap,False); - finally - IndexSitemap.Free; - IndexStream.Free; - end; + FIndexStream := TMemoryStream.Create; + FIndexSiteMap.Items.Sort(@CompareIndex); + FIndexSiteMap.SaveToStream(FIndexStream); + CurWriter.AppendIndex(FIndexStream); + CurWriter.AppendBinaryIndexFromSitemap(FIndexSitemap,false); end; - // ToDo: write TOC see TChmProject.LastFileAdded + // write TOC (see TChmProject.LastFileAdded) + if (TOCFileName <> '') then begin + FTOCStream := TMemoryStream.Create; + FTocSitemap.SaveToStream(FTOCStream); + CurWriter.AppendTOC(FTocStream); + CurWriter.AppendBinaryTOCFromSiteMap(FTOCSitemap); + end; end; function TWiki2CHMConverter.GetImageLink(ImgFilename: string): string; @@ -206,16 +225,27 @@ Result:=CHMImagesDir+ExtractFileName(ImgFilename); end; +function TWiki2CHMConverter.GetInternalImageLink(ImgFilename: String): String; +begin + Result := CHMImagesDir + 'internal/' + ExtractFilename(ImgFilename); +end; + function TWiki2CHMConverter.GetPageLink(Page: TW2XHTMLPage): string; begin - Result:=Page.WikiDocumentName+'.html'; +// Result:=Page.WikiDocumentName+'.html'; + Result :=Page.Filename; +end; + +function TWiki2CHMConverter.GetRelativeCSSFilename: String; +begin + Result := ExtractFileName(CSSFilename); end; procedure TWiki2CHMConverter.SetCHMFile(AValue: string); var NewValue: String; begin - NewValue:=AppendPathDelim(TrimFilename(AValue)); + NewValue:=TrimFilename(AValue); if FCHMFile=NewValue then Exit; FCHMFile:=NewValue; end; @@ -226,14 +256,26 @@ FIndexFileName:=AValue; end; +procedure TWiki2CHMConverter.SetTOCFilename(AValue: String); +begin + if FTOCFileName = AValue then Exit; + FTOCFilename := AValue; +end; + procedure TWiki2CHMConverter.ConvertInit; var i: Integer; Page: TW2CHMPage; begin inherited ConvertInit; + if CHMFile='' then raise Exception.Create('chm file not set'); + + FIndexSitemap := TChmSitemap.Create(stIndex); + FTOCSitemap := TChmSitemap.Create(stTOC); + AddTocItem(0, FTOCRootName, ''); + for i:=0 to Count-1 do begin Page:=TW2CHMPage(Pages[i]); DocumentNameToPage[GetPageLink(Page)]:=Page; @@ -278,8 +320,8 @@ Writer.FullTextSearch := true; Writer.HasBinaryIndex := true; Writer.IndexName := IndexFileName; - //Writer.HasBinaryTOC := MakeBinaryTOC; - //Writer.TocName := TableOfContentsFileName; + Writer.HasBinaryTOC := true; + Writer.TOCName := FTOCFileName; //Writer.ReadmeMessage := ReadmeMessage; {for i:=0 to Count-1 do begin @@ -290,6 +332,9 @@ //if FWindows.Count>0 then // Writer.Windows:=FWIndows; + if assigned(FTocSiteMap) then + Writer.TocSitemap := FTocSiteMap; + // and write! debugln(['creating chm ...']); Writer.Execute; @@ -309,18 +354,25 @@ FOutputDir:='chm'; FCHMFile:='wiki.chm'; FIndexFileName:='_index.hhk'; + FTOCFileName:='_table_of_contents.hhc'; + FTOCRootName:='Pages available'; DocumentNameToPage:=TStringToPointerTree.Create(true); end; destructor TWiki2CHMConverter.Destroy; begin - inherited Destroy; + FreeAndNil(FTocSiteMap); + FreeAndNil(FTocStream); + FreeAndNil(FIndexSitemap); + FreeAndNil(FIndexStream); FreeAndNil(DocumentNameToPage); + inherited Destroy; end; procedure TWiki2CHMConverter.Clear; begin - DocumentNameToPage.Clear; + if DocumentNameToPage <> nil then + DocumentNameToPage.Clear; inherited Clear; end; diff -Nru lazarus-1.4.4+dfsg/components/wiki/lazwiki/wiki2fpdocconvert.pas lazarus-1.6+dfsg/components/wiki/lazwiki/wiki2fpdocconvert.pas --- lazarus-1.4.4+dfsg/components/wiki/lazwiki/wiki2fpdocconvert.pas 2012-03-05 20:04:53.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/lazwiki/wiki2fpdocconvert.pas 2015-01-27 23:33:52.000000000 +0000 @@ -111,6 +111,7 @@ procedure SavePage(Page: TW2FPDocPage); procedure SetPackageName(AValue: string); procedure SetRootName(AValue: string); + procedure SaveProject; public constructor Create; override; procedure Convert; override; @@ -277,14 +278,80 @@ debugln(['TWiki2FPDocConverter.OnWikiToken ToDo: Token=',dbgs(Token.Token),' Range=',dbgs(Token.Range),' Class=',Token.ClassName,' ',W.PosToStr(W.CurrentPos)]); end; +{ IsValidIdent returns true if the first character of Ident is in: + 'A' to 'Z', 'a' to 'z' or '_' and the following characters are + on of: 'A' to 'Z', 'a' to 'z', '0'..'9' or '_' } +function IsValidNodeName(const Ident: string): boolean; +var + p: PChar; +begin + p:=PChar(Ident); + if not (p^ in ['A'..'Z', 'a'..'z', '_', '-']) then exit(false); + inc(p); + while true do begin + if p^ in ['A'..'Z', 'a'..'z', '0'..'9', '_', '-'] then + inc(p) + else if (p^=#0) and (p-PChar(Ident)=length(Ident)) then + exit(true) + else + exit(false); + end; +end; + procedure TWiki2FPDocConverter.SetRootName(AValue: string); begin - if (AValue='') or not IsValidIdent(AValue) then + if (AValue='') or not IsValidNodeName(AValue) then raise Exception.Create('invalid root name "'+AValue+'"'); if FRootName=AValue then Exit; FRootName:=AValue; end; +procedure TWiki2FPDocConverter.SaveProject; +var + sl: TStringList; + Filename: String; + i: Integer; +begin + Filename:=AppendPathDelim(OutputDir)+PackageName+'.xml'; + sl:=TStringList.Create; + try + sl.Add(''); + sl.Add(''); + sl.Add(' '); + sl.Add(' '); + sl.Add(' '); + // chm + //sl.Add(' '); + // html + sl.Add(' '); + sl.Add(' '); + sl.Add(' '); + sl.Add(' '); + for i:=0 to Count-1 do + sl.Add(' '); + sl.Add(' '); + sl.Add(' '); + sl.Add(''); + + sl.SaveToFile(Filename); + if not Quiet then + debugln(['fpdoc project file: ',Filename]); + finally + sl.Free; + end; +end; + procedure TWiki2FPDocConverter.ConvertPage(Page: TW2FPDocPage); var doc: TXMLDocument; @@ -357,7 +424,7 @@ FPageClass:=TW2FPDocPage; FOutputDir:='fpdocxml'; FPackageName:='wiki'; - FRootName:='fpdoc'; + FRootName:='fpdoc-descriptions'; end; procedure TWiki2FPDocConverter.Convert; @@ -371,6 +438,7 @@ // save for i:=0 to Count-1 do SavePage(TW2FPDocPage(Pages[i])); + SaveProject; end; end. diff -Nru lazarus-1.4.4+dfsg/components/wiki/lazwiki/wiki2xhtmlconvert.pas lazarus-1.6+dfsg/components/wiki/lazwiki/wiki2xhtmlconvert.pas --- lazarus-1.4.4+dfsg/components/wiki/lazwiki/wiki2xhtmlconvert.pas 2012-03-26 18:28:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/lazwiki/wiki2xhtmlconvert.pas 2015-06-27 14:27:26.000000000 +0000 @@ -68,6 +68,10 @@ FLinkToBaseDocument: string; FMaxH: integer; FPageFileExt: string; + FUseTemplateIcons: Boolean; + FAddCategories: Boolean; + FIndexOfflineLinksOnly: Boolean; + procedure DoAddCategories(Page: TW2XHTMLPage); procedure DoAddLinksToTranslations(Page: TW2XHTMLPage); procedure DoAddLinkToBaseDocument(Page: TW2XHTMLPage); procedure OnHeaderToken(Token: TWPToken); @@ -80,6 +84,7 @@ procedure OnWikiToken(Token: TWPToken); virtual; procedure RaiseNodeNotOpen(Token: TWPToken); function GetImageLink(ImgFilename: string): string; virtual; + function GetInternalImageLink(ImgFilename: string): string; virtual; function FindImage(const ImgFilename: string): string; virtual; procedure MarkImageAsUsed(const ImgFilename: string; Page: TW2XHTMLPage); virtual; function GetPageLink(Page: TW2XHTMLPage): string; virtual; @@ -91,6 +96,8 @@ procedure ConvertInit; virtual; procedure ConvertAllPages; virtual; procedure SaveAllPages; virtual; + procedure AddIndexItem({%H-}AText, {%H-}AUrl: String); virtual; + procedure AddTocItem({%H-}ALevel:Integer; {%H-}AText, {%H-}AUrl: String); virtual; public constructor Create; override; destructor Destroy; override; @@ -102,14 +109,65 @@ function PageToFilename(Page: string; IsInternalLink, Full: boolean): string; virtual; function PageToFilename(Page: TW2XHTMLPage; Full: boolean): string; virtual; property PageFileExt: string read FPageFileExt write SetPageFileExt; - property LinkToBaseDocument: string read FLinkToBaseDocument write FLinkToBaseDocument; - property AddLinksToTranslations: boolean read FAddLinksToTranslations write FAddLinksToTranslations default true; - property AddTOCIfHeaderCountMoreThan: integer read FAddTOCIfHeaderCountMoreThan - write FAddTOCIfHeaderCountMoreThan default 2; + property LinkToBaseDocument: string + read FLinkToBaseDocument write FLinkToBaseDocument; + property AddLinksToTranslations: boolean + read FAddLinksToTranslations write FAddLinksToTranslations default true; + property AddTOCIfHeaderCountMoreThan: integer + read FAddTOCIfHeaderCountMoreThan write FAddTOCIfHeaderCountMoreThan default 2; + property AddCategories: Boolean + read FAddCategories write FAddCategories default true; + property IndexOfflineLinksOnly: Boolean + read FIndexOfflineLinksOnly write FIndexOfflineLinksOnly default true; + property UseTemplateIcons: Boolean + read FUseTemplateIcons write FUseTemplateIcons; end; +function EscapeToHTML(AText: String): String; + implementation +const + NOTE_ICON = 'note.png'; + WARNING_ICON = 'warning.png'; + +{ Replaces some special characters by their HTML code } +function EscapeToHTML(AText: string): string; +var + i: Integer; + ampStr: string; +begin + Result := ''; + + for i := 1 to Length(AText) do + begin + case AText[i] of + '&': begin + ampStr := Copy(AText, i, 6); + if (Pos('&', ampStr) = 1) or + (Pos('<', ampStr) = 1) or + (Pos('>', ampStr) = 1) or + (Pos('"', ampStr) = 1) or + (Pos(''', ampStr) = 1) or + (Pos('%', ampStr) = 1) // % + then + //'&' is the first char of a special char, it must not be converted + Result := Result + AText[i] + else + Result := Result + '&'; + end; + '<': Result := Result + '<'; + '>': Result := Result + '>'; + '"': Result := Result + '"'; + '''': Result := Result + '''; + '%': Result := Result + '%'; + '\': Result := Result + '\'; + else Result := Result + AText[i]; + end; + end; +end; + + { TWiki2XHTMLConverter } procedure TWiki2XHTMLConverter.SetCSSFilename(AValue: string); @@ -118,6 +176,52 @@ FCSSFilename:=AValue; end; +procedure TWiki2XHTMLConverter.DoAddCategories(Page: TW2XHTMLPage); +var + doc: TXMLDocument; + CategoriesNode: TDOMElement; + node: TDOMElement; + category, url, txt: String; + i: Integer; +begin + doc := Page.XHTML; + url := Page.WikiPage.BaseURL; + if (url <> '') and (url[Length(url)] <> '/') then + url += '/'; + + if Page.CategoryList.Count = 0 then + exit; + + CategoriesNode := doc.CreateElement('div'); + CategoriesNode.SetAttribute('class', 'catlinks'); + Page.BodyDOMNode.AppendChild(CategoriesNode); + + // Add "Categories:" + node := doc.CreateElement('a'); + node.SetAttribute('href', url+'Special:Categories'); + node.AppendChild(doc.CreateTextNode('Categories:')); + CategoriesNode.AppendChild(node); + if not FIndexOfflineLinksOnly then + AddIndexItem('Categories (external)', url+'Special:Categories'); + CategoriesNode.AppendChild(doc.CreateTextNode('  ')); + for i:=0 to Page.CategoryList.Count-1 do begin + category := Page.CategoryList[i]; + // Add link to category + node := doc.CreateElement('a'); + node.SetAttribute('href', url + category); + txt := Copy(category, pos(':', category)+1, MaxInt); + node.AppendChild(doc.CreateTextNode(txt)); + CategoriesNode.AppendChild(node); + if not FIndexOfflineLinksOnly then + AddIndexItem('Category: '+txt+' (external)', url+category); + + // Add separator + if i < Page.CategoryList.Count-1 then + CategoriesNode.AppendChild(doc.CreateTextNode(' | ')); + end; +end; + + procedure TWiki2XHTMLConverter.DoAddLinksToTranslations(Page: TW2XHTMLPage); var TranslationPage: TW2XHTMLPage; @@ -164,7 +268,7 @@ else begin // add link to other translations LinkNode:=doc.CreateElement('a'); - LinkNode.SetAttribute('href',TranslationPage.WikiDocumentName); + LinkNode.SetAttribute('href',TranslationPage.FileName); TranslationsNode.AppendChild(LinkNode); LinkNode.AppendChild(doc.CreateTextNode(LinkCaption)); end; @@ -178,21 +282,26 @@ procedure TWiki2XHTMLConverter.DoAddLinkToBaseDocument(Page: TW2XHTMLPage); var Link: String; + MainNode: TDOMElement; Node: TDOMElement; doc: TXMLDocument; begin // add LinkToBaseDocument
    doc:=Page.XHTML; + MainNode := doc.CreateElement('p'); + Page.BodyDOMNode.AppendChild(MainNode); + Node:=doc.CreateElement('a'); - Page.BodyDOMNode.AppendChild(Node); + MainNode.AppendChild(Node); Link:=Page.WikiPage.BaseURL; if (Link<>'') and (Link[length(Link)]<>'/') then Link+='/'; Link+=Page.WikiDocumentName; Node.SetAttribute('href', Link); Node.AppendChild(doc.CreateTextNode(LinkToBaseDocument)); - Node:=doc.CreateElement('br'); - Page.BodyDOMNode.AppendChild(Node); + + if not FIndexOfflineLinksOnly then + AddIndexItem(LinkToBaseDocument + ' (external)', Link); end; procedure TWiki2XHTMLConverter.OnHeaderToken(Token: TWPToken); @@ -235,11 +344,17 @@ HeaderTxt:=TDOMText(Page.CurDOMNode.FirstChild).Data; if HeaderTxt<>'' then begin HRef:=WikiHeaderToLink(HeaderTxt); - // add anchor - LinkNode:=doc.CreateElement('a'); - LinkNode.SetAttribute('name', HRef); - Page.CurDOMNode.ParentNode.InsertBefore(LinkNode, Page.CurDOMNode); + // add anchor - use both old an new syntax: + // modern version:

    Text - commented because not understood by IpHTMLPanel: + Page.CurDOMNode.SetAttribute('id', HRef); + // old version:

    Text

    + Node := doc.CreateElement('a'); + Node.SetAttribute('name', HRef); + Node.AppendChild(Page.CurDOMNode.DetachChild(Page.CurDOMNode.FirstChild)); + Page.CurDOMNode.AppendChild(Node); + // add TOC link + //
  • Text
  • LINode:=doc.CreateElement('li'); LINode.SetAttribute('class', 'toclevel-'+IntToStr(Page.SectionLevel)); Page.CurTOCNode.AppendChild(LINode); @@ -248,6 +363,8 @@ LinkNode.AppendChild(doc.CreateTextNode(HeaderTxt)); LINode.AppendChild(LinkNode); inc(Page.TOCNodeCount); + AddTocItem(Page.SectionLevel, HeaderTxt, Page.Filename+'#'+HRef); + AddIndexItem(HeaderTxt, page.Filename+'#'+HRef); end; Page.CurDOMNode:=Page.CurDOMNode.ParentNode as TDOMElement; Page.Pop; @@ -294,12 +411,157 @@ Result:=true; end; + procedure HandleImgLink(const AFileName, Value: String); + type + THorPos = (hpDefault, hpLeft, hpCenter, hpRight); + var + L: TStringList; + hpos: THorPos; + thumb: Boolean; + factor: Double; + frame: Boolean; + alt: String; + cap: String; + w, h: Integer; // -2 auto, -1 not used, else: pixels + i, p: Integer; + s: String; + node: TDOMElement; + imgnode: TDOMElement; + capnode: TDOMElement; + begin + hpos := hpDefault; + w := -1; // not used + h := -1; + thumb := false; + frame := false; + factor := 1.0; + cap := ''; + alt := ''; + + L := TStringList.Create; + try + L.Delimiter := '|'; + L.StrictDelimiter := true; + L.DelimitedText := Value; + + for i:=0 to L.Count-1 do begin + s := L[i]; + case Lowercase(s) of + 'thumb', 'thumbnail': + begin + w := 220; + h := -2; // auto + thumb := true; + factor := 1.0; + frame := true; + end; + 'frame': + frame := true; + 'frameless': + frame := false; + 'left': + hpos := hpLeft; + 'center': + hpos := hpCenter; + 'right': + hpos := hpRight; + 'none': + hpos := hpDefault; + else + if pos('alt=', s) = 1 then + alt := copy(s, Length('alt='), MaxInt) + else + if pos('link=', s) = 1 then + // currently not supported + else + if pos('px', s) = Length(s)-1 then + begin + if s[1]='x' then // e.g: "x100px" -- height + h := StrToInt(Copy(s, 2, Length(s)-3)) + else begin + p := pos('x', s); + if p = Length(s) then // e.g: "200px" --> width + w := StrToInt(Copy(s, 1, Length(s)-2)) + else + if p > 0 then // e.g: "200x100px" --> width x height + begin + w := StrToInt(copy(s, 1, p-1)); + h := StrToInt(copy(s, p+1, Length(s)-p-2)); + end else + cap := s; + end; + end else + if (pos('upright', s) = 1) then + begin + thumb := true; + s := trim(copy(s, Length('upright')+1, MaxInt)); + if s <> '' then val(s, factor, p) else factor := 1.0; + end + else + cap := s; + end; + end; + + if thumb or frame then begin + node := doc.CreateElement('div'); + if frame then + node.SetAttribute('class', 'image') + else + node.SetAttribute('class', 'image-no-border'); + case hpos of + hpDefault: node.SetAttribute('style', 'float:right;'); + hpLeft : node.SetAttribute('style', 'float:left;'); + hpCenter : node.SetAttribute('style', 'display:block; margin:0px auto;'); + hpRight : node.SetAttribute('style', 'float:right;'); + end; + Page.CurDOMNode.AppendChild(node); + imgnode := doc.CreateElement('img'); + node.AppendChild(imgnode); + if cap <> '' then begin + capnode := doc.CreateElement('figcaption'); + capnode.SetAttribute('style', 'margin-top: 4px'); + capnode.AppendChild(doc.CreateTextNode(cap)); + node.AppendChild(capnode); + end; + end else + begin + imgnode := doc.CreateElement('img'); + imgnode.SetAttribute('class', 'image-no-border'); + Page.CurDOMNode.AppendChild(imgnode); + end; + + imgnode.SetAttribute('src', AFileName); + if alt <> '' then + imgnode.SetAttribute('alt', alt); + if w > 0 then + begin + if thumb and (factor <> 1.0) then w := round(w*factor); + imgnode.SetAttribute('width', IntToStr(w)+'px'); + end; + if h = -2 then + imgnode.SetAttribute('height', 'auto') + else + if h > 0 then + begin + if thumb and (factor <> 1.0) then h := round(h * factor); + imgnode.SetAttribute('height', IntToStr(h)+'px'); + end; + case hpos of + hpLeft : imgnode.SetAttribute('style', 'float:left'); + hpCenter: imgnode.SetAttribute('style', 'display:block; margin:0px auto;'); + hpRight : imgNode.SetAttribute('style', 'float:right'); + end; + + finally + L.Free; + end; + end; + function HandleLink(var URL, Caption: string): boolean; var p: SizeInt; Scheme: String; Filename: String; - Node: TDOMElement; TargetPage: TW2XHTMLPage; FoundImgFile: String; DocumentName: String; @@ -317,24 +579,22 @@ exit; end else if Scheme='category' then begin - URL:=''; // show category without link + Page.CategoryList.Add(URL); + URL:=''; + Caption := ''; exit; end - else if Scheme='image' then begin + else if (Scheme='image') or (Scheme='file') then begin URL:=copy(URL,p+1,length(URL)); URL:=UTF8Trim(URL); - URL:=WikiInternalLinkToPage(URL); + URL:=WikiTitleToPage(URL); if URL='' then exit; Filename:=WikiImageToFilename(URL,false,true,true); FoundImgFile:=FindImage(Filename); if FoundImgFile<>'' then begin Filename:=GetImageLink(FoundImgFile); MarkImageAsUsed(Filename,Page); - Node:=doc.CreateElement('img'); - Node.SetAttribute('src', Filename); - if Caption<>'' then - Node.SetAttribute('alt', Caption); - Page.CurDOMNode.AppendChild(Node); + HandleImgLink(FileName, Caption); exit(true); end; if WarnURL(LinkToken.Link) then @@ -345,7 +605,7 @@ end; // convert %hh and remove special characters - URL:=WikiInternalLinkToPage(URL); + URL:=WikiTitleToPage(URL); // check if link to wiki page but with a full baseurl if (Page.WikiPage.BaseURL<>'') @@ -381,10 +641,19 @@ URL:=GetPageLink(TargetPage); if Anchor<>'' then URL+='#'+Anchor; - end else if (not FileExistsUTF8(Filename)) then begin - if WarnMissingPageLinks and WarnURL(LinkToken.Link) then - Log('WARNING: TWiki2XHTMLConverter.InsertLink "'+dbgstr(LinkToken.Link)+'": file not found: "'+Filename+'" at '+W.PosToStr(LinkToken.LinkStartPos,true)); - URL:=''; + end else + if (FileName <> '') then begin + if FileExistsUTF8(OutputDir+Filename) or + (GetPageWithDocumentName(DocumentName) <> nil) // will be converted lated + then + URL := Filename + else begin + if WarnMissingPageLinks and WarnURL(LinkToken.Link) then + Log('WARNING: TWiki2XHTMLConverter.InsertLink "'+ + dbgstr(LinkToken.Link)+'": file not found: "'+Filename+'" at '+ + W.PosToStr(LinkToken.LinkStartPos,true)+'. Linking to online version.'); + URL := Page.WikiPage.BaseURL + '/' + DocumentName; + end; end; end; end; @@ -402,14 +671,23 @@ if URL='' then exit; Caption:=copy(W.Src, LinkToken.CaptionStartPos, LinkToken.CaptionEndPos- LinkToken.CaptionStartPos); - if Caption='' then exit(true); if HandleLink(URL,Caption) then exit; if URL<>'' then begin Node:=doc.CreateElement('a'); Node.SetAttribute('href', URL); - if Caption<>'' then + if Caption<>'' then begin Node.AppendChild(doc.CreateTextNode(Caption)); + if ((pos('http', URL) = 1) or (pos('wiki.', URL) = 1) or (pos('bugs.', URL) = 1)) + then begin + if not FIndexOfflineLinksOnly then + AddIndexItem(Caption + ' (external)', URL); + end else begin + if URL[1]='#' then + URL := Page.Filename + URL; + AddIndexItem(Caption, URL); + end; + end; Page.CurDOMNode.AppendChild(Node); end else if Caption<>'' then begin InsertText(LinkToken, Caption); @@ -428,6 +706,8 @@ Node: TDOMElement; CurCSSFilename: String; begin + AddTocItem(1, UTF8Trim(Page.WikiPage.Title), Page.FileName); + Page.ClearConversion; if Page.WikiPage=nil then exit; Page.XHTML:=TXMLDocument.Create; @@ -475,10 +755,13 @@ Page.TOCNodeCount:=0; Page.CurTOCNode:=Page.TOCNode; Page.BodyDOMNode.AppendChild(Page.TOCNode); - Page.CurDOMNode:=Page.BodyDOMNode; + Page.WikiPage.Parse(@OnWikiToken,Page); + if FAddCategories then + DoAddCategories(Page); + if LinkToBaseDocument<>'' then DoAddLinkToBaseDocument(Page); @@ -507,11 +790,14 @@ doc: TXMLDocument; NodeName: string; Node: TDOMElement; + childNode1, childNode2: TDOMElement; LinkToken: TWPLinkToken; NodeClass: String; NameValueToken: TWPNameValueToken; CurName: String; CurValue: String; + fn: String; + captn, iconfile: String; begin Page:=TW2XHTMLPage(Token.UserData); W:=Page.WikiPage; @@ -611,7 +897,6 @@ Node:=doc.CreateElement('ul'); Page.CurTOCNode.AppendChild(Node); Page.CurTOCNode:=Node; - Page.Push(Node,Token.Token); exit; end else if Token.Range=wprClose then begin @@ -673,6 +958,64 @@ exit; end; CurValue:=copy(W.Src,NameValueToken.ValueStartPos,NameValueToken.ValueEndPos-NameValueToken.ValueStartPos); + + case Lowercase(CurName) of + 'note', 'warning': + begin + case Lowercase(CurName) of + 'note' : begin captn := 'Note'; iconfile := NOTE_ICON; end; + 'warning': begin captn := 'Warning'; iconfile := WARNING_ICON; end; + end; + Node := doc.CreateElement('div'); + Node.SetAttribute('class', 'template-with-icon'); + Page.CurDOMNode.AppendChild(Node); + + childnode1 := doc.CreateElement('div'); + Node.AppendChild(childnode1); + childnode1.SetAttribute('class', 'icon'); + if FUseTemplateIcons then begin + fn := FindImage('internal/'+iconfile); + if fn <> '' then + fn := GetInternalImageLink(fn); + MarkImageAsUsed(fn, Page); + childnode2 := doc.CreateElement('img'); + childnode2.SetAttribute('src', fn); + childnode1.AppendChild(childnode2); + end; + + childnode2 := doc.CreateElement('b'); + childnode2.AppendChild(doc.createTextNode(captn + ': ')); + Node.AppendChild(childnode2); + Node.AppendChild(doc.CreateTextNode(CurValue)); + // to do: CurValue can contain further html tags! + exit; + end; + + 'mantislink': + begin + Node := doc.CreateElement('a'); + Node.SetAttribute('href', 'http://bugs.freepascal.org/view.php?id='+CurValue); + Node.AppendChild(doc.CreateTextNode('MantisLink #')); + Node.AppendChild(doc.CreateTextNode(Curvalue)); + Page.CurDOMNode.AppendChild(Node); + if not FIndexOfflineLinksOnly then + AddIndexItem('MantisLink #'+CurValue+' (external)', 'http://bugs.freepascal.org/view.php?id='+CurValue); + exit; + end; + + 'menutranslate': + // Translation menu is written by DoAddLinksToTranslations + exit; + + else + Node := doc.CreateElement('span'); + if CurName <> '' then Node.SetAttribute('class', CurName); + Page.CurDOMNode.AppendChild(Node); + if CurValue <> '' then + Node.AppendChild(doc.CreateTextNode(CurValue)); + exit; + end; + Node:=doc.CreateElement('span'); if CurName<>'' then Node.SetAttribute('class',CurName); @@ -714,6 +1057,11 @@ Result:=CreateRelativePath(ImgFilename,OutputDir); end; +function TWiki2XHTMLConverter.GetInternalImagelink(ImgFilename: String): string; +begin + Result := CreateRelativepath(ImgFilename,OutputDir); +end; + function TWiki2XHTMLConverter.FindImage(const ImgFilename: string): string; begin if ImagesDir='' then exit(''); @@ -825,55 +1173,62 @@ doc:=Page.XHTML; CurName:=lowercase(copy(W.Src,Token.NameStartPos,Token.NameEndPos-Token.NameStartPos)); CurValue:=copy(W.Src,Token.ValueStartPos,Token.ValueEndPos-Token.ValueStartPos); - CodeNode:=doc.CreateElement('pre'); - if (CurName='pascal') - or (CurName='delphi') - or (CurName='code') - or (CurName='syntaxhighlight') - or (CurName='source') - or (CurName='fpc') - then - CurName:='pascal'; - if CurName<>'' then - CodeNode.SetAttribute('class',CurName); - Page.CurDOMNode.AppendChild(CodeNode); - if CurValue<>'' then begin - if (CurName='pascal') then begin - p:=PChar(CurValue); - AtomStart:=p; - LastToken:=pNone; - LastRangeStart:=p; - repeat - // skip space - while p^ in [#1..#31,' '] do inc(p); - // read token - if (p^='{') or ((p^='/') and (p[1]='/')) or ((p^='(') and (p[1]='*')) - then begin - // comment - AddSpan(pComment,p); - p:=FindCommentEnd(p,false); - end else begin - ReadRawNextPascalAtom(p,AtomStart); - if AtomStart^=#0 then break; - case AtomStart^ of - '''','#': - AddSpan(pString,AtomStart); - '0'..'9','%','$','&': - AddSpan(pNumber,AtomStart); - 'a'..'z','A'..'Z','_': - if WordIsKeyWord.DoIdentifier(AtomStart) then - AddSpan(pKey,AtomStart) + + if CurName = 'code' then begin + CodeNode := doc.CreateElement('code'); + Page.CurDomNode.AppendChild(CodeNode); + CodeNode.AppendChild(doc.CreateTextNode(CurValue)); + end else + begin + CodeNode:=doc.CreateElement('pre'); + if (CurName='pascal') + or (CurName='delphi') + or (CurName='syntaxhighlight') + or (CurName='source') + or (CurName='fpc') + then + CurName:='pascal'; + if CurName<>'' then + CodeNode.SetAttribute('class',CurName); + Page.CurDOMNode.AppendChild(CodeNode); + if CurValue<>'' then begin + if (CurName='pascal') then begin + p:=PChar(CurValue); + AtomStart:=p; + LastToken:=pNone; + LastRangeStart:=p; + repeat + // skip space + while p^ in [#1..#31,' '] do inc(p); + // read token + if (p^='{') or ((p^='/') and (p[1]='/')) or ((p^='(') and (p[1]='*')) + then begin + // comment + AddSpan(pComment,p); + p:=FindCommentEnd(p,false); + end else begin + ReadRawNextPascalAtom(p,AtomStart); + if AtomStart^=#0 then break; + case AtomStart^ of + '''','#': + AddSpan(pString,AtomStart); + '0'..'9','%','$','&': + AddSpan(pNumber,AtomStart); + 'a'..'z','A'..'Z','_': + if WordIsKeyWord.DoIdentifier(AtomStart) then + AddSpan(pKey,AtomStart) + else + AddSpan(pNone,AtomStart); else - AddSpan(pNone,AtomStart); - else - AddSpan(pSymbol,AtomStart); + AddSpan(pSymbol,AtomStart); + end; end; - end; - until false; - Flush(p); - end else begin - // default: add as text - CodeNode.AppendChild(doc.CreateTextNode(CurValue)); + until false; + Flush(p); + end else begin + // default: add as text + CodeNode.AppendChild(doc.CreateTextNode(CurValue)); + end; end; end; end; @@ -921,6 +1276,16 @@ SavePage(TW2XHTMLPage(Pages[i])); end; +procedure TWiki2XHTMLConverter.AddIndexItem(AText, AUrl: String); +begin + // nothing to do here - will be overridden by CHMConverter +end; + +procedure TWiki2XHTMLConverter.AddTocItem(ALevel: Integer; AText, AUrl: String); +begin + // nothing to do here - will be overridden by CHMConverter +end; + constructor TWiki2XHTMLConverter.Create; begin inherited Create; @@ -931,8 +1296,11 @@ ShortFilenameToPage:=TFilenameToPointerTree.Create(false); UsedImages:=TFilenameToPointerTree.Create(false); fLinkToBaseDocument:='Online version'; + FAddCategories := true; FAddLinksToTranslations:=true; FAddTOCIfHeaderCountMoreThan:=2; + FUseTemplateIcons := true; + FIndexOfflineLinksOnly := true; end; destructor TWiki2XHTMLConverter.Destroy; diff -Nru lazarus-1.4.4+dfsg/components/wiki/lazwiki/wikiformat.pas lazarus-1.6+dfsg/components/wiki/lazwiki/wikiformat.pas --- lazarus-1.4.4+dfsg/components/wiki/lazwiki/wikiformat.pas 2012-03-26 18:28:31.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/lazwiki/wikiformat.pas 2015-06-21 16:46:18.000000000 +0000 @@ -22,6 +22,8 @@ {$mode objfpc}{$H+} +{off $DEFINE VerboseWikiFileCode} + interface uses @@ -37,6 +39,7 @@ TW2FormatPage = class public Converter: TWiki2FormatConverter; + CategoryList: TStringList; WikiFilename: string; WikiErrorMsg: string; WikiDoc: TXMLDocument; @@ -58,7 +61,9 @@ FCodeTags: TKeyWordFunctionList; FNoWarnBaseURLs: TStringToStringTree; FOnLog: TWikiOnLog; + FQuiet: boolean; FTitle: string; + FVerbose: boolean; FWarnMissingPageLinks: boolean; procedure SetTitle(AValue: string); protected @@ -92,6 +97,8 @@ property CodeTags: TKeyWordFunctionList read FCodeTags write FCodeTags; function CollectAllLangCodes(Delimiter: char = ','): string; procedure GetPageTranslations(DocumentName: string; out LangToPage: TStringToPointerTree); + property Verbose: boolean read FVerbose write FVerbose; + property Quiet: boolean read FQuiet write FQuiet; end; function WikiPageToFilename(DocumentName: string; IsInternalLink, AppendCaseID: boolean): string; @@ -101,6 +108,10 @@ function WikiHeaderToLink(Header: string): string; function WikiCreateCommonCodeTagList(AddLazWikiLangs: boolean): TKeyWordFunctionList; +function UTF8ToWikiFileCode(AnUTF8: string): string; +function WikiFileCodeToUTF8(aFileCode: string): string; +procedure TestWikiPageToFilename; + // language function GetWikiPageLanguage(const DocumentName: string): string; function GetWikiPageLanguageDelimiterPos(const DocumentName: string): integer; @@ -299,12 +310,14 @@ constructor TW2FormatPage.Create(TheConverter: TWiki2FormatConverter); begin Converter:=TheConverter; + CategoryList := TStringList.Create; end; destructor TW2FormatPage.Destroy; begin ClearPageConnections; ClearConversion; + FreeAndNil(CategoryList); FreeAndNil(WikiDoc); FreeAndNil(WikiPage); inherited Destroy; @@ -352,25 +365,17 @@ end; function WikiPageToFilename(DocumentName: string; IsInternalLink, AppendCaseID: boolean): string; -var - i: Integer; - s: string; +{ IsInternalLink: + AppendCaseID=true: append a string encoding upper/lower case of letters +} begin Result:=DocumentName; + // optional: convert title to wiki link if IsInternalLink then - Result:=WikiInternalLinkToPage(Result); - i:=1; - while i<=length(Result) do begin - s:=Result[i]; - case s[1] of - ',','-','_','0'..'9','a'..'z','A'..'Z': ; - // Note: UTF-8 characters do not work with svn on OS X - else s:='%'+HexStr(ord(s[1]),2); - end; - if s<>Result[i] then - ReplaceSubstring(Result,i,1,s); - inc(i,length(s)); - end; + Result:=WikiTitleToPage(Result); + // convert special characaters + Result:=UTF8ToWikiFileCode(Result); + // append case if if AppendCaseID and (Result<>'') then Result:=Result+'.'+WikiPageToCaseID(Result); end; @@ -379,10 +384,6 @@ var Ext: String; p: Integer; - i: Integer; - Code: Integer; - j: Integer; - c: Char; begin Result:=ExtractFileName(Filename); if Result='' then exit; @@ -396,22 +397,8 @@ dec(p); if (p>=1) and (Result[p]='.') then Delete(Result,p,length(Result)); - // convert non literals - for i:=length(Result) downto 1 do begin - if Result[i]<>'%' then continue; - Code:=0; - for j:=1 to 2 do begin - if i+j>length(Result) then break; - c:=Result[i+j]; - case c of - '0'..'9': Code:=Code*16+ord(c)-ord('0'); - 'a'..'z': Code:=Code*16+ord(c)-ord('a')+10; - 'A'..'Z': Code:=Code*16+ord(c)-ord('A')+10; - else break; - end; - end; - ReplaceSubstring(Result,i,1+j,chr(Code)); - end; + // convert special characaters + Result:=WikiFileCodeToUTF8(Result); end; function WikiImageToFilename(Image: string; @@ -430,7 +417,7 @@ Delete(Result,1,p); end; if IsInternalLink then - Result:=WikiInternalLinkToPage(Result); + Result:=WikiTitleToPage(Result); Ext:=ExtractFileExt(Result); // encode file name without extension Result:=WikiPageToFilename(copy(Result,1,Length(Result)-length(Ext)),false,false); @@ -483,6 +470,291 @@ Add('objc',@AllwaysTrue); end; end; + Result.Sort; // init now, so that multiple threads can use it +end; + +const + WFCAllowedChars = ['a'..'z','A'..'Z','0'..'9',',','!','#','%','(',')','-','_',' ']; +function UTF8ToWikiFileCode(AnUTF8: string): string; +{ Keep a..z, A..Z, 0..9, ,!#-%()-_ + Replace + with +- + Replace = with =- + Replace single invalid byte with =HexHex + Replace sequences of invalid bytes as +base64- +} +const + Base64Chars: array[0..63] of char = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789,_'; +var + p: PChar; + CharLen: integer; + BufBits: byte; + BufBitLen: integer; + c: Char; + SrcBits: Integer; + i: Integer; + AtEnd: Boolean; +begin + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode START AnUTF8="',AnUTF8,'"'); + {$endif} + Result:=''; + if AnUTF8='' then exit; + p:=PChar(AnUTF8); + repeat + c:=p^; + if (c=#0) and (p-PChar(AnUTF8)=length(AnUTF8)) then break; + AtEnd:=(p[1]=#0) and (p+1-PChar(AnUTF8)=length(AnUTF8)); + if c in WFCAllowedChars then begin + // common English character: keep + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode normal char "',c,'"'); + {$endif} + Result+=c; + inc(p); + end else if (c in ['+','=']) and ((p[1] in WFCAllowedChars) or AtEnd) then begin + // replace '+' with '+-' and '=' with '=-' + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode single + or = "',c,'"'); + {$endif} + Result+=c+'-'; + inc(p); + end else if (p[1] in WFCAllowedChars) or AtEnd then begin + // replace single special byte with =HexHex + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode single special char "',HexStr(ord(c),2),'"'); + {$endif} + Result+='='+HexStr(ord(c),2); + inc(p); + end else begin + // special characters -> encode base64 + // start marker: '+' + Result+='+'; + // encode as base64 + BufBits:=0; + BufBitLen:=0; + repeat + if (p^=#0) and (p-PChar(AnUTF8)=length(AnUTF8)) then + break; // end of string + if (p^ in WFCAllowedChars) and (p[1] in WFCAllowedChars) + and (p[2] in WFCAllowedChars) then + break; // the next three are normal characters -> stop encoding as base64 + CharLen:=UTF8CharacterLength(p); + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode sequence UTF8CharLen=',CharLen); + {$endif} + for i:=1 to CharLen do begin + SrcBits:=ord(p^); + BufBits:=BufBits or (SrcBits shr (2+BufBitLen)); + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode sequence 6bitA Byte=',i,' SrcBits=',binstr(SrcBits,8),' BufBits=',binstr(BufBits,6),' BufBitLen=',6); + {$endif} + Result+=Base64Chars[BufBits]; + BufBits:=(SrcBits shl (4-BufBitLen)) and %111111; + BufBitLen:=2+BufBitLen; + if BufBitLen=6 then begin + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode sequence 6bitB Byte=',i,' SrcBits=',binstr(SrcBits,8),' BufBits=',binstr(BufBits,6),' BufBitLen=',BufBitLen); + {$endif} + Result+=Base64Chars[BufBits]; + BufBitLen:=0; + BufBits:=0; + end else begin + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode sequence <6bit Byte=',i,' SrcBits=',binstr(SrcBits,8),' BufBits=',binstr(BufBits,6),' BufBitLen=',BufBitLen); + {$endif} + end; + inc(p); + end; + until false; + if BufBitLen>0 then begin + {$ifdef VerboseWikiFileCode} + writeln('UTF8ToWikiFileCode sequence Paddi Byte=',i,' SrcBits=',binstr(SrcBits,8),' BufBits=',binstr(BufBits,6),' BufBitLen=',BufBitLen); + {$endif} + Result+=Base64Chars[BufBits]; + end; + // end marker: '-' + Result+='-'; + end; + until false; +end; + +function WikiFileCodeToUTF8(aFileCode: string): string; +var + p: PChar; + SrcBits: Integer; + BufBits: byte; + BufBitLen: Integer; + c: Char; +begin + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 Code="',aFileCode,'"'); + {$endif} + Result:=''; + if aFileCode='' then exit; + p:=PChar(aFileCode); + repeat + c:=p^; + if (c=#0) and (p-PChar(aFileCode)=length(aFileCode)) then break; + if c='+' then begin + inc(p); + if p^='-' then begin + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 +- to +'); + {$endif} + inc(p); + Result+='+'; // single '+' + end else begin + // decode base64, read til '-' + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 base64 sequence'); + {$endif} + BufBits:=0; + BufBitLen:=0; + repeat + c:=p^; + case c of + '-': + begin + inc(p); + break; + end; + 'A'..'Z': SrcBits:=ord(c)-ord('A'); + 'a'..'z': SrcBits:=ord(c)-ord('a')+26; + '0'..'9': SrcBits:=ord(c)-ord('0')+52; + ',': SrcBits:=62; + '_': SrcBits:=63; + else + raise Exception.Create('invalid wiki file code: invalid base64 character'); + end; + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 SrcBits=',binstr(SrcBits,6)); + {$endif} + if BufBitLen=0 then begin + BufBits:=BufBits or (SrcBits shl 2); + BufBitLen:=6; + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 new byte BufBits=',binstr(BufBits,8),' BufBitLen=',BufBitLen); + {$endif} + end else begin + BufBits:=BufBits or (SrcBits shr (BufBitLen-2)); + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 byte complete BufBits=',binstr(BufBits,8),' BufBitLen=',8); + {$endif} + Result+=chr(BufBits); + BufBitLen-=2; + BufBits:=(SrcBits shl (8-BufBitLen)) and $FF; + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 rest byte BufBits=',binstr(BufBits,8),' BufBitLen=',BufBitLen); + {$endif} + end; + inc(p); + until false; + // Note: BufBitLen can be >0 (the last byte contains padding bits) + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 D BufBits=',binstr(BufBits,8),' BufBitLen=',BufBitLen); + {$endif} + if (BufBits shr (8-BufBitLen))>0 then + raise Exception.Create('invalid wiki file code: padding bits not empty'); + end; + end else if c='=' then begin + inc(p); + if p^='-' then begin + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 =- to ='); + {$endif} + Result+='='; + inc(p); + end else begin + // one byte as hex code + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 =hex ',p^,p[1]); + {$endif} + SrcBits:=0; + case p^ of + '0'..'9': SrcBits:=ord(p^)-ord('0'); + 'A'..'F': SrcBits:=ord(p^)-ord('A')+10; + 'a'..'f': SrcBits:=ord(p^)-ord('a')+10; + else + raise Exception.Create('invalid wiki file code: invalid hex code'); + end; + inc(p); + SrcBits:=SrcBits*16; + case p^ of + '0'..'9': SrcBits+=ord(p^)-ord('0'); + 'A'..'F': SrcBits+=ord(p^)-ord('A')+10; + 'a'..'f': SrcBits+=ord(p^)-ord('a')+10; + else + raise Exception.Create('invalid wiki file code: invalid hex code'); + end; + inc(p); + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 =hex byte=',SrcBits); + {$endif} + Result+=chr(SrcBits); + end; + end else if c in WFCAllowedChars then begin + // normal char + {$ifdef VerboseWikiFileCode} + writeln('WikiFileCodeToUTF8 normal char "',c,'"'); + {$endif} + Result+=c; + inc(p); + end else + raise Exception.Create('invalid wiki file code: invalid character'); + until false; + if FindInvalidUTF8Character(PChar(Result),length(Result))>=0 then + raise Exception.Create('invalid wiki file code: result is not UTF-8'); +end; + +procedure TestWikiPageToFilename; + + procedure t(PageName: string); + var + Filename: String; + NewPageName: String; + step: integer; + begin + step:=0; + try + Filename:=WikiPageToFilename(PageName,false,true); + NewPageName:=WikiFilenameToPage(Filename); + inc(step); + if PageName=NewPageName then + inc(step); + finally + if step<2 then begin + writeln('TestPageToFilename failed:'); + writeln(' PageName ="',PageName,'"'); + writeln(' NewPageName="',NewPageName,'"'); + writeln(' Filename ="',Filename,'"'); + end; + if step=0 then + raise Exception.Create('TestPageToFilename failed'); + end; + end; + +begin + t(''); + t('a'); + t('A'); + t('A1'); + t('3'); + t('/'); + t('A/B'); + t('A+B'); + t('A-B'); + t('A=B'); + t('A+=B'); + t('A+-B'); + t('A+'); + t('A='); + t('A*'); + t('A*$'); + t('A*$%'); + t('A*$*$'); + t('A*$*$*'); + t('A*$*$*$'); end; function GetWikiPageLanguage(const DocumentName: string): string; diff -Nru lazarus-1.4.4+dfsg/components/wiki/lazwiki/wikiparser.pas lazarus-1.6+dfsg/components/wiki/lazwiki/wikiparser.pas --- lazarus-1.4.4+dfsg/components/wiki/lazwiki/wikiparser.pas 2015-02-13 20:35:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/lazwiki/wikiparser.pas 2015-06-24 21:59:51.000000000 +0000 @@ -268,6 +268,7 @@ FOnToken: TWikiTokenEvent; FVerbosity: TWikiPageVerbosity; FInPre: integer; // >0 means in a pre range + FInTableHeader: Boolean; procedure HandleAngleBracket; // tags procedure HandleCode; // procedure HandleApostroph; // bold, italic @@ -333,8 +334,8 @@ IsWikiTagStartChar, IsWikiTagChar: array[char] of boolean; -// normalize link to get the page, e.g. convert spaces to underscores -function WikiInternalLinkToPage(Link: string): string; +// normalize link to get the page, e.g. convert spaces to underscores, delete #0,$[]{}<> +function WikiTitleToPage(Link: string): string; function WikiIsExternalLink(Link: string): boolean; function GetWikiPageID(doc: TDOMNode): string; @@ -1064,12 +1065,11 @@ while not (FCurP^ in [#0..#31, ']']) do inc(FCurP); FLinkToken.CaptionEndPos:=StrPos(FCurP); end; + if FCurP^=']' then begin inc(FCurP); if (FLinkToken.SubToken=wptInternLink) and (FCurP^=']') then inc(FCurP); - - DoToken(FLinkToken); end; FLastEmitPos:=FCurP; @@ -1089,10 +1089,19 @@ CloseTableCell; if TopToken=wptTable then EmitFlag(wptTableRow, wprOpen, 0); - if AtLineStart(FCurP) then - EmitFlag(wptTableCell, wprOpen, 1) // linestart | or linestart ! - else - EmitFlag(wptTableCell, wprOpen, 2); // || + + if AtLineStart(FCurP) then begin + FInTableHeader := (FCurP^='!'); + if FInTableHeader then + EmitFlag(wptTableHeadCell, wprOpen, 1) // linestart ! + else + EmitFlag(wptTableCell, wprOpen, 1) // linestart | + end else begin + if FInTableHeader then + EmitFlag(wptTableHeadCell, wprOpen, 2) // !! + else + EmitFlag(wptTableCell, wprOpen, 2); // || + end; NextBar:=FCurP; while not (NextBar^ in [#0, #10, #13, '|']) do begin if NextBar^='[' then begin @@ -1437,7 +1446,9 @@ FNameValueToken:=TWPNameValueToken.Create(Self,Data); while FCurP^<>#0 do begin case FCurP^ of - + { wp: this case is responsible that backslashes do no appear in converted + windows pathnames. I don't know if a backslash has a special meaning + in the wiki syntax. '\': begin // special character as normal character @@ -1446,7 +1457,7 @@ FLastEmitPos:=FCurP; if FCurP^<>#0 then inc(FCurP); end; - + } #10,#13: begin EmitTextToken; @@ -1513,7 +1524,7 @@ end; end; -function WikiInternalLinkToPage(Link: string): string; +function WikiTitleToPage(Link: string): string; var i: Integer; j: Integer; @@ -1536,8 +1547,8 @@ c:=Result[i+j]; case c of '0'..'9': if Code<16 then Code:=Code*16+ord(c)-ord('0'); - 'a'..'z': if Code<16 then Code:=Code*16+ord(c)-ord('a')+10; - 'A'..'Z': if Code<16 then Code:=Code*16+ord(c)-ord('A')+10; + 'a'..'f': if Code<16 then Code:=Code*16+ord(c)-ord('a')+10; + 'A'..'F': if Code<16 then Code:=Code*16+ord(c)-ord('A')+10; else break; end; if j=2 then break; diff -Nru lazarus-1.4.4+dfsg/components/wiki/parsewikipage.lpi lazarus-1.6+dfsg/components/wiki/parsewikipage.lpi --- lazarus-1.4.4+dfsg/components/wiki/parsewikipage.lpi 2012-02-28 19:22:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/parsewikipage.lpi 2015-06-10 14:35:14.000000000 +0000 @@ -1,4 +1,4 @@ - + @@ -45,17 +45,11 @@ - + - - - - - - @@ -67,12 +61,6 @@ - - - - - - diff -Nru lazarus-1.4.4+dfsg/components/wiki/README.txt lazarus-1.6+dfsg/components/wiki/README.txt --- lazarus-1.4.4+dfsg/components/wiki/README.txt 2012-03-12 08:08:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/README.txt 2015-06-27 14:27:26.000000000 +0000 @@ -20,15 +20,15 @@ Creating XHTML pages: -./wikiconvert --format=xhtml --css=html/wiki.css 'wikixml/*.xml' +./wikiconvert --format=xhtml --css=css/wiki.css 'wikixml/*.xml' Creating HTML pages: -./wikiconvert --format=html --css=html/wiki.css 'wikixml/*.xml' +./wikiconvert --format=html --css=css/wiki.css 'wikixml/*.xml' Creating chm: -./wikiconvert --format=chm --css=chm/wiki.css wikixml/Lazarus_Documentation.g400.xml 'wikixml/*.xml' +./wikiconvert --format=chm --css=css/wiki.css wikixml/Lazarus_Documentation.g400.xml 'wikixml/*.xml' ToDos @@ -36,8 +36,12 @@ ToDos iphtml: -too big space between paragraphs --jump to anchor after loading, Note: before first paint the areas are all 0,0,0,0 -background for pre --backslashes in text are not shown -slow on some pages (e.g. lazarus_documentation) +Todos: convert to fpdoc + ./wikiconvert --format=fpdoc --outputdir=fpdocxml wikixml/1-dimensional_arrays.0000.xml + cd fpdochtml/ + fpdoc --format=html --charset=UTF8 --image-url=../images --package=wiki --descr=../fpdocxml/1-dimensional_arrays.0000.xml --verbose +ToDo: find out why fpdoc does not use the description. + diff -Nru lazarus-1.4.4+dfsg/components/wiki/test/wikisearchmain.pas lazarus-1.6+dfsg/components/wiki/test/wikisearchmain.pas --- lazarus-1.4.4+dfsg/components/wiki/test/wikisearchmain.pas 2012-03-12 08:08:43.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/test/wikisearchmain.pas 2015-06-24 17:33:05.000000000 +0000 @@ -1,4 +1,4 @@ -{ Browse and search form for offline wiki +{ Browse and search form of offline wiki Copyright (C) 2012 Mattias Gaertner mattias@freepascal.org @@ -611,9 +611,9 @@ end; end else if Anchor<>'' then begin // same page - PageIpHtmlPanel.MakeAnchorVisible(Anchor+'/'); // ipHTML stores anchor names with / at end - end else begin - exit; + // PageIpHtmlPanel.MakeAnchorVisible(Anchor+'/'); // ipHTML stores anchor names with / at end + PageIpHtmlPanel.MakeAnchorVisible(Anchor); // ... not any longer, fixed in r49421 + FPageAnchor := Anchor; end; if AddToHistory and (FPageDocumentName<>'') then begin PageHistory.AddAfterCurrent(FPageDocumentName,FPageAnchor,FPageTitle); @@ -653,9 +653,9 @@ NewHTML:=TIpHtml.Create; // Beware: Will be freed automatically by IpHtmlPanel Target.SetHtml(NewHTML); NewHTML.LoadFromStream(aStream); - // ToDo: fix TIpHtmlNodeA.MakeVisible, the areas are all 0,0,0,0 at this time if Anchor<>'' then - Target.MakeAnchorVisible(Anchor+'/'); // ipHTML stores anchor names with / at end + //Target.MakeAnchorVisible(Anchor+'/'); // ipHTML stores anchor names with / at end + Target.MakeAnchorVisible(Anchor); // ... not any longer, fixed in r49421 except on E: Exception do begin debugln(['TWikiSearchDemoForm.LoadHTML ',E.Message]); diff -Nru lazarus-1.4.4+dfsg/components/wiki/wikiconvert.lpi lazarus-1.6+dfsg/components/wiki/wikiconvert.lpi --- lazarus-1.4.4+dfsg/components/wiki/wikiconvert.lpi 2012-02-28 19:22:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/wikiconvert.lpi 2015-01-26 18:23:55.000000000 +0000 @@ -1,4 +1,4 @@ - + @@ -30,7 +30,6 @@ - @@ -45,21 +44,15 @@ - + - - - - - - - + @@ -71,12 +64,6 @@ - - - - - - diff -Nru lazarus-1.4.4+dfsg/components/wiki/wikiconvert.lpr lazarus-1.6+dfsg/components/wiki/wikiconvert.lpr --- lazarus-1.4.4+dfsg/components/wiki/wikiconvert.lpr 2013-07-19 10:39:08.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/wikiconvert.lpr 2015-06-27 16:31:20.000000000 +0000 @@ -23,7 +23,7 @@ uses Classes, SysUtils, CustApp, WikiParser, WikiFormat, - Wiki2FPDocConvert, Wiki2XHTMLConvert, Wiki2HTMLConvert, Wiki2CHMConvert, + Wiki2XHTMLConvert, Wiki2HTMLConvert, Wiki2CHMConvert, Wiki2FPDocConvert, LazFileUtils, FileUtil, LazLogger, KeywordFuncLists; type @@ -37,7 +37,11 @@ FFPDocConverter: TWiki2FPDocConverter; FHTMLConverter: TWiki2HTMLConverter; FLanguageTags: TKeyWordFunctionList; + FQuiet: boolean; + FVerbose: boolean; FXHTMLConverter: TWiki2XHTMLConverter; + procedure SetQuiet(AValue: boolean); + procedure SetVerbose(AValue: boolean); procedure Test; protected procedure DoRun; override; @@ -53,6 +57,8 @@ property CHMConverter: TWiki2CHMConverter read FCHMConverter; property Converter: TWiki2FormatConverter read FConverter; property LanguageTags: TKeyWordFunctionList read FLanguageTags; + property Verbose: boolean read FVerbose write SetVerbose; + property Quiet: boolean read FQuiet write SetQuiet; end; { TMyApplication } @@ -103,7 +109,8 @@ if not HasOption('format') then begin writeln('Error: missing option --format='); writeln('use option -h to see all options'); - Terminate; exit; + Terminate; + exit; end; // wiki files @@ -112,6 +119,12 @@ if Param='' then continue; if (length(Param)>2) and (Param[1]='-') and (Param[2]='-') then begin ParamName:=copy(Param,3,length(Param)); + if (Converter is TWiki2XHTMLConverter) then begin + if ParamName = 'nowikicategories' then begin + TWiki2XHTMLConverter(FConverter).AddCategories:= false; + continue; + end; + end; p:=Pos('=',ParamName); if p<1 then begin E('invalid parameter "'+Param+'"'); @@ -140,7 +153,7 @@ Converter.ImagesDir:=Param; continue; end else if ParamName='title' then begin - Converter.Title:=Param; + Converter.Title:=ParamValue; continue; end else if ParamName='nowarnurl' then begin Converter.NoWarnBaseURLs[ParamName]:='1'; @@ -157,12 +170,18 @@ continue; end; end; - if Converter is TWiki2XHTMLConverter then begin + if Converter is TWiki2HTMLConverter then begin // HTML parameters - if ParamName='css' then begin - TWiki2XHTMLConverter(Converter).CSSFilename:=ParamValue; - continue; - end + if ParamName='html' then begin + ParamValue := TrimAndExpandFilename(ParamValue); + if (ParamValue='') or (not DirPathExists(ExtractFilepath(ParamValue))) + then begin + E('Directory for html files does not exist: '+Paramvalue); + exit; + end; + TWiki2HTMLConverter(Converter).OutputDir := ExtractFilepath(Paramvalue); + Continue; + end; end; if Converter is TWiki2CHMConverter then begin // CHM parameters @@ -170,12 +189,24 @@ ParamValue:=TrimAndExpandFilename(ParamValue); if (ParamValue='') or (not DirPathExists(ExtractFilePath(ParamValue))) then begin - E('directory of chm file does not exists: '+ParamValue); + E('directory of chm file does not exist: '+ParamValue); exit; end; TWiki2CHMConverter(Converter).CHMFile:=ParamValue; + TWiki2CHMConverter(Converter).OutputDir := ExtractFilepath(ParamValue); continue; - end + end else + if ParamName='root' then begin + TWiki2CHMConverter(Converter).TOCRootName := ParamValue; + Continue; + end; + end; + if Converter is TWiki2XHTMLConverter then begin + // shared parameters for HTML and CHM + if ParamName='css' then begin + TWiki2XHTMLConverter(Converter).CSSFilename:=ParamValue; + continue; + end; end; end else if Param[1]<>'-' then begin AddFiles(Param); @@ -253,6 +284,22 @@ Halt; end; +procedure TWiki2FPDocApplication.SetQuiet(AValue: boolean); +begin + if FQuiet=AValue then Exit; + FQuiet:=AValue; + if Converter<>nil then + Converter.Quiet:=Quiet; +end; + +procedure TWiki2FPDocApplication.SetVerbose(AValue: boolean); +begin + if FVerbose=AValue then Exit; + FVerbose:=AValue; + if Converter<>nil then + Converter.Verbose:=Verbose; +end; + constructor TWiki2FPDocApplication.Create(TheOwner: TComponent); begin inherited Create(TheOwner); @@ -289,24 +336,28 @@ writeln(' --imagesdir= : directory of image files. default: ',Converter.ImagesDir); writeln(' --title= : the title of the wiki. default: "',Converter.Title,'"'); writeln(' --nowarnurl= : do not warn for URLs starting with this. Can be given multiple times.'); + writeln(' --verbose'); + writeln(' --quiet'); writeln(' : wiki page in xml format, can be given multiple times'); writeln(' Duplicates are ignored.'); writeln(' You can use globbing, like "wikixml/*.xml". You must quote such parameters on console/shell.'); writeln; - writeln('Options for --format=fpdoc :'); - writeln(' --root= : default: ',FPDocConverter.RootName); - writeln(' --package= : default: ',FPDocConverter.PackageName); - writeln; writeln('Options for --format=xhtml,html,chm :'); writeln(' --css= : default: ',XHTMLConverter.CSSFilename); + writeln(' --nowikicategories : do not add links to wiki categories.'); writeln; writeln('Options for --format=chm :'); writeln(' Note: the default page is the first page'); writeln(' --chm= : default: ',CHMConverter.CHMFile); + writeln(' --root= : default: "', CHMConverter.TocRootName, '"'); + writeln; + writeln('Options for --format=fpdoc :'); + writeln(' --root= : default: ',FPDocConverter.RootName); + writeln(' --package= : default: ',FPDocConverter.PackageName); writeln; writeln('Examples:'); - writeln(' ',ParamStrUTF8(0),' --format=fpdoc --outputdir=fpdoc wikipage1.xml wikipage2.xml'); writeln(' ',ParamStrUTF8(0),' --format=html --outputdir=html --css=html/wiki.css "wikixml/*.xml"'); + writeln(' ',ParamStrUTF8(0),' --format=fpdoc --outputdir=fpdocxml wikipage1.xml wikipage2.xml'); end; var diff -Nru lazarus-1.4.4+dfsg/components/wiki/wikiget.lpi lazarus-1.6+dfsg/components/wiki/wikiget.lpi --- lazarus-1.4.4+dfsg/components/wiki/wikiget.lpi 2012-02-28 19:22:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/wikiget.lpi 2015-01-20 01:18:23.000000000 +0000 @@ -1,4 +1,4 @@ - + @@ -29,7 +29,6 @@ - @@ -48,7 +47,6 @@ - @@ -61,12 +59,6 @@ - - - - - - diff -Nru lazarus-1.4.4+dfsg/components/wiki/wikiget.lpr lazarus-1.6+dfsg/components/wiki/wikiget.lpr --- lazarus-1.4.4+dfsg/components/wiki/wikiget.lpr 2015-02-13 20:35:56.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/wikiget.lpr 2015-06-10 14:35:14.000000000 +0000 @@ -30,7 +30,7 @@ cthreads, {$ENDIF} Classes, SysUtils, LazFileUtils, laz2_XMLRead, laz2_DOM, laz2_XMLWrite, - LazLogger, LazUTF8, CodeToolsStructs, CustApp, AVL_Tree, + LazLogger, LazUTF8, CodeToolsStructs, CustApp, AVL_Tree, strutils, {$IF FPC_FULLVERSION<20701} myfphttpclient, {$ELSE} @@ -194,7 +194,7 @@ Param:=GetParams(i); //writeln('TWikiGet.DoRun Param="',Param,'"'); if copy(Param,1,length(pPage))=pPage then - NeedWikiPage(WikiInternalLinkToPage(copy(Param,length(pPage)+1,length(Param)))); + NeedWikiPage(WikiTitleToPage(copy(Param,length(pPage)+1,length(Param)))); end; if (NeedSinglePage) and (FNeededPages.Tree.Count=0) then E('nothing to do',true); @@ -296,7 +296,7 @@ Page:=copy(s,StartPos,p-StartPos); while (Page<>'') and (Page[1]='/') do System.Delete(Page,1,1); - if (Page<>'') and (not IsIgnoredPage(Page)) then begin; + if (Page<>'') and (not IsIgnoredPage(Page)) then begin //writeln('TWikiGet.GetAll Page="',Page,'"'); Filename:=PageToFilename(Page,false); AddWikiPage(Page); @@ -523,7 +523,7 @@ if ColonPos<1 then exit; if ColonPos=length(Link) then exit; Prefix:=lowercase(copy(Link,1,ColonPos-1)); - if Prefix<>'image' then exit; + if (Prefix<>'image') and (Prefix<>'file') then exit; Link:=UTF8Trim(copy(Link,ColonPos+1,length(Link))); if Link='' then exit; Filename:=ImageToFilename(Link,true,true); @@ -539,7 +539,7 @@ try Client:=TFPHTTPClient.Create(nil); Response:=TMemoryStream.Create; - URL:=BaseURL+EscapeDocumentName('Image:'+WikiInternalLinkToPage(Link)); + URL:=BaseURL+EscapeDocumentName(AnsiPropercase(Prefix, StdWordDelims)+':'+WikiTitleToPage(Link)); writeln('getting image page "',URL,'" ...'); Client.Get(URL,Response); //Client.ResponseHeaders.SaveToFile('responseheaders.txt'); @@ -722,13 +722,15 @@ Filename: String; begin debugln(['TWikiGet.Test [',URL,']']); - Page:=WikiInternalLinkToPage(URL); + Page:=WikiTitleToPage(URL); debugln([' URL=[',dbgstr(URL),'] Page=[',Page,']']); Filename:=WikiImageToFilename(Page,false,true); debugln([' URL=[',dbgstr(URL),'] Filename="',Filename,'"']); end; begin + TestWikiPageToFilename; + //w('Image:Acs_demos.jpg'); //w('Image:Acs demos.jpg'); w('Image:Acs%20demos.jpg'); @@ -773,10 +775,10 @@ writeln(' ToDo: check more than last 500 changes.'); writeln('--ignore-recent= : do not download again files younger than this on disk.'); writeln(' combine with --recent. Default: ',IgnoreFilesYoungerThanMin); - writeln('--shownotusedpages : show not used files in the output directory.'); - writeln('--deletenotusedpages : delete the files in the output directory that are not used.'); - writeln('--shownotusedimages : show not used files in the images directory.'); - writeln('--deletenotusedimages : delete the files in the images directory that are not used.'); + writeln('--shownotusedpages : show files in the output directory which are not used by the wiki.'); + writeln('--deletenotusedpages : delete the files in the output directory which are not used by the wiki.'); + writeln('--shownotusedimages : show files in the images directory, which are not used by the wiki.'); + writeln('--deletenotusedimages : delete the files in the images directory, which are not used by the wiki.'); writeln('--nowrite : do not write files, just print what would be written.'); writeln; writeln('Example: download one page'); @@ -791,6 +793,7 @@ Application: TWikiGet; begin Application:=TWikiGet.Create(nil); + //Application.Test; Application.Title:='Wiki Get'; Application.Run; Application.Free; diff -Nru lazarus-1.4.4+dfsg/components/wiki/xhtml/wiki.css lazarus-1.6+dfsg/components/wiki/xhtml/wiki.css --- lazarus-1.4.4+dfsg/components/wiki/xhtml/wiki.css 2012-02-28 19:22:41.000000000 +0000 +++ lazarus-1.6+dfsg/components/wiki/xhtml/wiki.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -body { - margin:0; - color:#111111; - background-color:#FFFFFF; - font-family:"Trebuchet MS", Arial, Verdana, sans-serif; - text-align:left; - margin-right:10.2em; - padding:0.7em; -} - -/* Bi-Directional support */ -*[lang="he"], *[lang="ar"] /* not supported by IE */ -{ - direction : rtl; - text-align : right; -} - -body[lang="he"], body[lang="ar"] -{ - margin:0; - color:#111111; - background-color:#FFFFFF; - font-family:"Trebuchet MS", Arial, Verdana, sans-serif; - text-align : right; - direction : rtl; - margin-right:10.2em; - padding-right:0.7em; -} - -p { - line-height: 1.5em; - margin: 0.4em 0 0.5em; -} - -a { - color:#4D87CE; - text-decoration:none; -} -a:hover { - color:#2a65ad; -} - -ul li { - list-style-image:url(../pic/backgrounds/li.gif); - line-height:20px; - text-align:left; -} - -#logoheader { - width:80%; - margin:0 auto 0 auto; - text-align:right; -} - -#content { - margin:0 40px; - padding:0; - text-align:left; -} - -h1 { - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:150%; - text-transform:uppercase; - font-weight:normal; - border-bottom:1px solid #eeeeee; - color:#253183; - margin-top: 10px; -} - -#content h1{ - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:150%; - margin-bottom: 0.6em; -} -h2{ - font-family:"Century Gothic", "Trebuchet MS", "Arial Narrow", Arial, sans-serif; - font-size:130%; - margin-bottom: 0.3em; -} -h3{ - font-family: sans-serif; - font-size:120%; - margin-bottom: 0.3em; -} -h4, h5, h6, .subTitle{ - font-family: sans-serif; - font-size:100%; - font-weight:bold; - margin-bottom: 0.3em; -} - -pre, .pascal { - background-color: #F9F9F9; - border: 1px dashed #2F6FAB; - color: black; - padding: 1em; -} - -.num { - color: #0000DD; -} - -.string { - color: #0000DD; -} - -.var { - color: #000000; -} - -.key { - font-weight:bold; -} - -.sym { - color: red; -} - -.cmt { - color: blue; -} - -ul li p { - margin: 0; -} - -blockquote { - margin: 0 3%; -} - -/* roadmap.css */ - -td.working { - background-color: #88FF88; - padding: 3px; - text-align: center; -} -td.unknown { - background-color: #FFFFFF; - padding: 3px; - text-align: center; -} -td.partial { - background-color: #FFFF88; - padding: 3px; - text-align: center; -} -td.not { - background-color: #FF8888; - padding: 3px; - text-align: center; -} -td.progress { - background-color: #8888FF; - padding: 3px; - text-align: center; -} -tr.working { - background-color: #88FF88; - padding: 3px; - text-align: center; -} -tr.unknown { - background-color: #FFFFFF; - padding: 3px; - text-align: center; -} -tr.partial { - background-color: #FFFF88; - padding: 3px; - text-align: center; -} -tr.not { - background-color: #FF8888; - padding: 3px; - text-align: center; -} -tr.progress { - background-color: #8888FF; - padding: 3px; - text-align: center; -} - -span.keypress { - border: 0.2em outset #cecbc7; - background: #f0ece8; - padding: 0.1em 0.4em; - font-size: 0.8em; - white-space: nowrap; -} - diff -Nru lazarus-1.4.4+dfsg/converter/chgencodingdlg.lfm lazarus-1.6+dfsg/converter/chgencodingdlg.lfm --- lazarus-1.4.4+dfsg/converter/chgencodingdlg.lfm 2014-08-10 23:28:23.000000000 +0000 +++ lazarus-1.6+dfsg/converter/chgencodingdlg.lfm 2015-06-08 16:10:57.000000000 +0000 @@ -4,36 +4,35 @@ Top = 191 Width = 683 ActiveControl = OwnerComboBox + BorderIcons = [biSystemMenu, biMaximize] Caption = 'ChgEncodingDialog' ClientHeight = 560 ClientWidth = 683 OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object FilesGroupBox: TGroupBox Left = 6 - Height = 164 - Top = 74 + Height = 151 + Top = 67 Width = 671 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'FilesGroupBox' - ClientHeight = 143 - ClientWidth = 663 - TabOrder = 0 + ClientHeight = 131 + ClientWidth = 667 + TabOrder = 1 object FileFilterLabel: TLabel AnchorSideLeft.Control = FilesGroupBox AnchorSideTop.Control = NonUTF8FilesCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 17 - Top = 71 - Width = 84 - BorderSpacing.Left = 6 - BorderSpacing.Top = 15 - BorderSpacing.Bottom = 2 + Height = 15 + Top = 56 + Width = 72 + BorderSpacing.Around = 6 Caption = 'FileFilterLabel' ParentColor = False end @@ -41,9 +40,9 @@ AnchorSideLeft.Control = FilesGroupBox AnchorSideTop.Control = FilesGroupBox Left = 6 - Height = 22 + Height = 19 Top = 6 - Width = 149 + Width = 122 BorderSpacing.Around = 6 Caption = 'UTF8FilesCheckBox' Checked = True @@ -56,9 +55,9 @@ AnchorSideTop.Control = UTF8FilesCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 22 - Top = 34 - Width = 175 + Height = 19 + Top = 31 + Width = 145 BorderSpacing.Around = 6 Caption = 'NonUTF8FilesCheckBox' Checked = True @@ -71,14 +70,13 @@ AnchorSideTop.Control = FileFilterCombobox AnchorSideTop.Side = asrBottom Left = 6 - Height = 22 - Top = 121 - Width = 141 - BorderSpacing.Left = 6 - BorderSpacing.Top = 2 + Height = 19 + Top = 106 + Width = 114 + BorderSpacing.Around = 6 Caption = 'RegExprCheckBox' OnChange = PreviewClick - TabOrder = 2 + TabOrder = 3 end object FileFilterCombobox: TComboBox AnchorSideLeft.Control = FilesGroupBox @@ -87,15 +85,14 @@ AnchorSideRight.Control = FilesGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 29 - Top = 90 - Width = 651 + Height = 23 + Top = 77 + Width = 655 Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Right = 6 - ItemHeight = 0 + BorderSpacing.Around = 6 + ItemHeight = 15 OnChange = PreviewClick - TabOrder = 3 + TabOrder = 2 Text = 'FileFilterCombobox' end object RegExprErrorLabel: TLabel @@ -103,11 +100,11 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = RegExprCheckBox AnchorSideTop.Side = asrCenter - Left = 167 + Left = 126 Height = 15 - Top = 116 - Width = 114 - BorderSpacing.Left = 27 + Top = 108 + Width = 95 + BorderSpacing.Around = 6 Caption = 'RegExprErrorLabel' Font.Color = clFuchsia ParentColor = False @@ -116,33 +113,33 @@ end object BtnPanel: TPanel Left = 0 - Height = 45 - Top = 515 + Height = 38 + Top = 522 Width = 683 Align = alBottom AutoSize = True BevelOuter = bvNone - ClientHeight = 45 + ClientHeight = 38 ClientWidth = 683 - TabOrder = 1 + TabOrder = 3 object CloseButton: TBitBtn - Left = 585 - Height = 33 + Left = 586 + Height = 26 Top = 6 - Width = 92 + Width = 91 Align = alRight AutoSize = True BorderSpacing.Around = 6 Caption = 'CloseButton' Constraints.MinWidth = 75 ModalResult = 1 - TabOrder = 0 + TabOrder = 2 end object ApplyButton: TBitBtn Left = 487 - Height = 33 + Height = 26 Top = 6 - Width = 92 + Width = 93 Align = alRight AutoSize = True BorderSpacing.Around = 6 @@ -153,41 +150,41 @@ end object HelpButton: TBitBtn Left = 6 - Height = 33 + Height = 26 Top = 6 - Width = 77 + Width = 71 Align = alLeft AutoSize = True BorderSpacing.Around = 6 Caption = '&Help' Kind = bkHelp OnClick = HelpButtonClick - TabOrder = 2 + TabOrder = 0 end end object ScopeGroupBox: TGroupBox Left = 6 - Height = 62 + Height = 55 Top = 6 Width = 671 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'ScopeGroupBox' - ClientHeight = 41 - ClientWidth = 663 - TabOrder = 2 + ClientHeight = 35 + ClientWidth = 667 + TabOrder = 0 object NewEncodingLabel: TLabel AnchorSideLeft.Control = NewEncodingComboBox AnchorSideTop.Control = NewEncodingComboBox AnchorSideTop.Side = asrCenter AnchorSideRight.Control = NewEncodingComboBox - Left = 411 - Height = 17 - Top = 12 - Width = 119 + Left = 426 + Height = 15 + Top = 10 + Width = 102 Anchors = [akTop, akRight] - BorderSpacing.Left = 15 + BorderSpacing.Around = 6 Caption = 'NewEncodingLabel' ParentColor = False end @@ -196,61 +193,60 @@ AnchorSideTop.Control = ScopeGroupBox AnchorSideRight.Control = NewEncodingLabel Left = 6 - Height = 29 + Height = 23 Top = 6 - Width = 390 + Width = 414 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 OnChange = PreviewClick + Style = csDropDownList TabOrder = 0 - Text = 'OwnerComboBox' end object NewEncodingComboBox: TComboBox AnchorSideTop.Control = ScopeGroupBox AnchorSideRight.Control = ScopeGroupBox AnchorSideRight.Side = asrBottom - Left = 530 - Height = 29 + Left = 534 + Height = 23 Top = 6 Width = 127 Anchors = [akTop, akRight] - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 - ItemHeight = 0 + BorderSpacing.Around = 6 + ItemHeight = 15 OnChange = PreviewClick + Style = csDropDownList TabOrder = 1 - Text = 'NewEncodingComboBox' end end object PreviewGroupBox: TGroupBox Left = 6 - Height = 265 - Top = 244 + Height = 292 + Top = 224 Width = 671 Align = alClient BorderSpacing.Around = 6 Caption = 'PreviewGroupBox' - ClientHeight = 244 - ClientWidth = 663 - TabOrder = 3 + ClientHeight = 272 + ClientWidth = 667 + TabOrder = 2 object PreviewListView: TListView - Left = 0 - Height = 244 - Top = 0 - Width = 663 + Left = 5 + Height = 262 + Top = 5 + Width = 657 Align = alClient + BorderSpacing.Around = 5 Columns = < item AutoSize = True Caption = 'Files' - Width = 32 + Width = 659 end item AutoSize = True Caption = 'Encoding' - Width = 615 + Width = 62 end> SortType = stText TabOrder = 0 diff -Nru lazarus-1.4.4+dfsg/converter/chgencodingdlg.pas lazarus-1.6+dfsg/converter/chgencodingdlg.pas --- lazarus-1.4.4+dfsg/converter/chgencodingdlg.pas 2014-10-02 21:58:03.000000000 +0000 +++ lazarus-1.6+dfsg/converter/chgencodingdlg.pas 2015-08-07 17:20:40.000000000 +0000 @@ -21,8 +21,7 @@ Author: Mattias Gaertner Abstract: - Dialog and functions to change encodings (e.g. UTF-8) of projects and - packages. + Dialog and functions to change encodings (e.g. UTF-8) of projects and packages. } unit ChgEncodingDlg; @@ -31,13 +30,19 @@ interface uses - Classes, SysUtils, LCLProc, FileProcs, Forms, Controls, Graphics, - Dialogs, LConvEncoding, ExtCtrls, StdCtrls, ComCtrls, Buttons, - IDEWindowIntf, SynRegExpr, SrcEditorIntf, IDEHelpIntf, - CodeCache, CodeToolsStructs, CodeToolManager, AVL_Tree, + // RTL + FCL + LCL + Classes, SysUtils, AVL_Tree, + LCLProc, Forms, Controls, ExtCtrls, StdCtrls, ComCtrls, Buttons, + // CodeTools + CodeCache, CodeToolsStructs, CodeToolManager, FileProcs, + // LazUtils + LConvEncoding, LazFileUtils, LazFileCache, + // IDEIntf + IDEWindowIntf, SrcEditorIntf, IDEHelpIntf, + // SynEdit + SynRegExpr, // IDE - IDEProcs, CodeBrowser, PackageDefs, PackageSystem, Project, - LazarusIDEStrConsts; + IDEProcs, PackageDefs, PackageSystem, Project, LazarusIDEStrConsts; type @@ -179,6 +184,7 @@ HasChanged: boolean; li: TListItem; begin + HasChanged:=False; NewEncoding:=NormalizeEncoding(NewEncodingComboBox.Text); PreviewListView.BeginUpdate; PreviewListView.Items.Clear; diff -Nru lazarus-1.4.4+dfsg/converter/convcodetool.pas lazarus-1.6+dfsg/converter/convcodetool.pas --- lazarus-1.4.4+dfsg/converter/convcodetool.pas 2014-10-02 15:10:29.000000000 +0000 +++ lazarus-1.6+dfsg/converter/convcodetool.pas 2015-08-07 17:20:40.000000000 +0000 @@ -31,16 +31,17 @@ interface uses - // LCL+FCL - Classes, SysUtils, FileProcs, Forms, Controls, DialogProcs, Dialogs, - contnrs, strutils, - // IDE - LazarusIDEStrConsts, LazIDEIntf, FormEditor, IDEMsgIntf, IDEExternToolIntf, - // codetools - CodeToolManager, StdCodeTools, CodeTree, CodeAtom, - FindDeclarationTool, PascalReaderTool, PascalParserTool, LFMTrees, + // RTL + FCL + LCL + Classes, SysUtils, contnrs, strutils, Forms, Controls, Dialogs, + // CodeTools + CodeToolManager, StdCodeTools, CodeTree, CodeAtom, FileProcs, + FindDeclarationTool, LFMTrees, ExprEval, KeywordFuncLists, BasicCodeTools, LinkScanner, - CodeCache, SourceChanger, CustomCodeTool, CodeToolsStructs, EventCodeTool, + CodeCache, SourceChanger, CustomCodeTool, CodeToolsStructs, + // LazUtils + LazFileUtils, + // IDE + LazIDEIntf, IDEExternToolIntf, FormEditor, LazarusIDEStrConsts, // Converter ConverterTypes, ConvertSettings, ReplaceNamesUnit, ReplaceFuncsUnit; @@ -308,26 +309,29 @@ s: string; begin Result:=false; - if fCTLink.CodeTool=nil then exit; - CleanPos:=1; - // find $R directive - with fCTLink.CodeTool do begin - if Scanner=nil then exit; + with fCTLink do begin + if CodeTool=nil then exit; + CleanPos:=1; + // find $R directive + if CodeTool.Scanner=nil then exit; repeat - CleanPos:=FindNextCompilerDirectiveWithName(Src, CleanPos, 'R', - Scanner.NestedComments, ParamPos); - if (CleanPos<1) or (CleanPos>SrcLen) or (ParamPos>SrcLen-6) then break; + CleanPos:=FindNextCompilerDirectiveWithName(Code.Source, CleanPos, 'R', + CodeTool.Scanner.NestedComments, ParamPos); + if (CleanPos<1) or (CleanPos>CodeTool.SrcLen) + or (ParamPos>CodeTool.SrcLen-6) then break; NewKey:=''; - if (Src[CleanPos]='{') and - (Src[ParamPos]='*') and (Src[ParamPos+1]='.') and (Src[ParamPos+5]='}') - then begin - Key:=copy(Src,ParamPos+2,3); + if (Code.Source[CleanPos]='{') + and (Code.Source[ParamPos]='*') + and (Code.Source[ParamPos+1]='.') + and (Code.Source[ParamPos+5]='}') then + begin + Key:=copy(Code.Source, ParamPos+2, 3); LowKey:=LowerCase(Key); // Form file resource rename or lowercase: if (LowKey='dfm') or (LowKey='xfm') then begin - if Assigned(fCTLink.Settings) and fCTLink.Settings.SupportDelphi then begin + if Assigned(Settings) and Settings.SupportDelphi then begin // Use the same dfm file. Lowercase existing key. - if fCTLink.Settings.SameDfmFile then begin + if Settings.SameDfmFile then begin if Key<>LowKey then NewKey:=LowKey; end @@ -338,7 +342,8 @@ '{$ELSE}'+LineEnding+ ' {$R *.lfm}'+LineEnding+ '{$ENDIF}'; - if not fCTLink.SrcCache.Replace(gtNone,gtNone,CleanPos,ParamPos+6,s) then exit; + if not SrcCache.ReplaceEx(gtNone, gtNone, CleanPos, ParamPos+5, + Code, CleanPos, ParamPos+6, s) then exit; end; end else // Change .dfm to .lfm. @@ -351,15 +356,18 @@ if Key='RES' then NewKey:=LowKey; raDelete: // Make it a comment by adding a dot (.) - if not fCTLink.SrcCache.Replace(gtNone,gtNone,CleanPos,CleanPos+1,'{.') then exit; + if not SrcCache.ReplaceEx(gtNone, gtNone, CleanPos, CleanPos+1, + Code, CleanPos, CleanPos+1, '{.') then exit; end; end; // Change a single resource name. if NewKey<>'' then - if not fCTLink.SrcCache.Replace(gtNone,gtNone,ParamPos+2,ParamPos+5,NewKey) then exit; + if not SrcCache.ReplaceEx(gtNone, gtNone, ParamPos+2, ParamPos+5, + Code, ParamPos+2, ParamPos+5, NewKey) then exit; end; - CleanPos:=FindCommentEnd(Src, CleanPos, Scanner.NestedComments); + CleanPos:=FindCommentEnd(Code.Source, CleanPos, CodeTool.Scanner.NestedComments); until false; + //SrcCache.Apply; end; Result:=true; end; @@ -468,6 +476,7 @@ CommChBeg, CommBeg, CommEnd, i: Integer; // Start and end of comment. begin Result:=''; + CommBeg:=0; CommEnd:=Length(aStr); CommChBeg:=PosEx('//', aStr, aPossibleStartPos); if CommChBeg<>0 then diff -Nru lazarus-1.4.4+dfsg/converter/convertdelphi.pas lazarus-1.6+dfsg/converter/convertdelphi.pas --- lazarus-1.4.4+dfsg/converter/convertdelphi.pas 2014-11-12 19:27:26.000000000 +0000 +++ lazarus-1.6+dfsg/converter/convertdelphi.pas 2015-10-26 22:09:12.000000000 +0000 @@ -32,15 +32,16 @@ interface uses - // LCL+FCL - Classes, SysUtils, LCLProc, Forms, Controls, Dialogs, LConvEncoding, - FileUtil, LazFileUtils, LazUTF8Classes, contnrs, IniFiles, - // codetools + // RTL + FCL + LCL + Classes, SysUtils, contnrs, IniFiles, LCLProc, Forms, Controls, Dialogs, + // CodeTools CodeToolManager, DefineTemplates, CodeCache, LinkScanner, FileProcs, CodeToolsStructs, + // LazUtils + LConvEncoding, FileUtil, LazFileUtils, LazUTF8, LazUTF8Classes, // IDEIntf - ComponentReg, LazIDEIntf, PackageIntf, ProjectIntf, + ComponentReg, LazIDEIntf, PackageIntf, ProjectIntf, IDEDialogs, // IDE - IDEProcs, DialogProcs, IDEDialogs, EditorOptions, CompilerOptions, + IDEProcs, DialogProcs, EditorOptions, CompilerOptions, ProjPackBase, Project, ProjectDefs, PackageDefs, PackageSystem, PackageEditor, BasePkgManager, LazarusIDEStrConsts, // Converter @@ -132,7 +133,7 @@ fPrevSelectedPath: string; // Missing units that are commented automatically in all units. fAllCommentedUnits: TStringList; - function DoMissingUnits(AUsedUnitsTool: TUsedUnitsTool): integer; virtual; + function DoMissingUnits({%H-}AUsedUnitsTool: TUsedUnitsTool): integer; virtual; function GetCachedUnitPath(const AUnitName: string): string; protected function EndConvert(AStatus: TModalResult): Boolean; @@ -200,7 +201,7 @@ function ExtractOptionsFromDelphiSource: TModalResult; virtual; abstract; // Abstract base for the fake Project / Package virtual methods. function GetMainName: string; virtual; abstract; - function SaveAndMaybeClose(aFilename: string): TModalResult; virtual; + function SaveAndMaybeClose({%H-}aFilename: string): TModalResult; virtual; function ContainsFile(aFileName: string): Boolean; virtual; abstract; function FindDependencyByName(const PackageName: string): TPkgDependency; virtual; abstract; public @@ -391,7 +392,7 @@ var RelPath, SubPath, sUnitName, fn: String; begin - RelPath:=FileUtil.CreateRelativePath(FileName, fConverter.fSettings.MainPath); + RelPath:=CreateRelativePath(FileName, fConverter.fSettings.MainPath); SubPath:=ExtractFilePath(RelPath); fn:=ExtractFileName(RelPath); sUnitName:=ExtractFileNameOnly(fn); @@ -1400,7 +1401,9 @@ else AddToProjectLater(aFileName); // Add to project later. end; - end; + end + else + Result:=False; end; function TConvertDelphiProjPack.CheckPackageDep(AUnitName: string): Boolean; @@ -1801,7 +1804,6 @@ // open new package. If .lpk does not exist, create it var PkgName: String; - CurEditor: TPackageEditorForm; begin fProjPack:=nil; if FileExistsUTF8(fLazPMainFilename) then begin @@ -1833,8 +1835,7 @@ LazPackage.Filename:=fLazPMainFilename; fProjPack.BaseCompilerOptions.SyntaxMode:='delphi'; // open a package editor - CurEditor:=PackageEditors.OpenEditor(LazPackage); - CurEditor.Show; + PackageEditors.OpenEditor(LazPackage,true); // save .lpk file PackageEditors.SavePackage(LazPackage,false); Result:=mrOK; diff -Nru lazarus-1.4.4+dfsg/converter/convertertypes.pas lazarus-1.6+dfsg/converter/convertertypes.pas --- lazarus-1.4.4+dfsg/converter/convertertypes.pas 2013-06-13 10:47:12.000000000 +0000 +++ lazarus-1.6+dfsg/converter/convertertypes.pas 2015-03-10 15:12:17.000000000 +0000 @@ -61,7 +61,7 @@ public constructor Create; destructor Destroy; override; - function Find(aParentType: string; var Index: Integer): Boolean; + function Find(aParentType: string; out Index: Integer): Boolean; function AddVisualOffset(const aParentType: string; aTop, aLeft: Integer): integer; property Items[Index: Integer]: TVisualOffset read GetVisualOffset write SetVisualOffset; default; @@ -152,7 +152,7 @@ inherited Destroy; end; -function TVisualOffsets.Find(aParentType: string; var Index: Integer): Boolean; +function TVisualOffsets.Find(aParentType: string; out Index: Integer): Boolean; var i: Integer; begin diff -Nru lazarus-1.4.4+dfsg/converter/convertsettings.pas lazarus-1.6+dfsg/converter/convertsettings.pas --- lazarus-1.4.4+dfsg/converter/convertsettings.pas 2014-11-15 20:40:55.000000000 +0000 +++ lazarus-1.6+dfsg/converter/convertsettings.pas 2016-02-06 14:22:05.000000000 +0000 @@ -30,12 +30,16 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, IDEProcs, - StdCtrls, EditBtn, Buttons, ExtCtrls, DialogProcs, ButtonPanel, ComCtrls, + Classes, SysUtils, Forms, Controls, Dialogs, IDEProcs, StdCtrls, Buttons, + ButtonPanel, ComCtrls, DialogProcs, FileUtil, LazFileUtils, LazarusIDEStrConsts, CodeToolsStructs, CodeToolManager, CodeCache, DividerBevel, BaseIDEIntf, IDEMsgIntf, IDEExternToolIntf, AVL_Tree, LazConfigStorage, ConverterTypes, ReplaceNamesUnit, ReplaceFuncsUnit; +const + ConverterVersion: integer = 2; + // 2 removed conversion of string functions into their UTF8 versions. + type TReplaceModeLong = (rlDisabled, rlInteractive, rlAutomatic); @@ -48,6 +52,7 @@ TConvertSettings = class private + fVersion: Integer; fEnabled: Boolean; fTitle: String; // Used for form caption. fLog: TStringList; @@ -81,6 +86,14 @@ fReplaceFuncs: TFuncsAndCategories; // Coordinate offsets of components in a visual container. fCoordOffsets: TVisualOffsets; + procedure Load; + procedure LoadFuncReplacements; + procedure LoadStringToStringTree(Path: string; Tree: TStringToStringTree); + procedure LoadVisualOffsets; + procedure Save; + procedure SaveFuncReplacements; + procedure SaveStringToStringTree(Path: string; Tree: TStringToStringTree); + procedure SaveVisualOffsets; // Getter / setter: function GetBackupPath: String; function GetMainFilename: String; @@ -194,8 +207,6 @@ property CacheUnitsThread: TThread read fCacheUnitsThread; end; -var - ConvertSettingsForm: TConvertSettingsForm; function IsWinSpecificUnit(const ALowercaseUnitName: string): Boolean; @@ -206,42 +217,131 @@ {$R *.lfm} +function IsWinSpecificUnit(const ALowercaseUnitName: string): Boolean; +// These units exist in Windows only. +// They must be treated as missing units when converting for multi-platform. +begin + Result := (ALowercaseUnitName = 'windows') + or (ALowercaseUnitName = 'shellapi') + or (ALowercaseUnitName = 'wintypes') + or (ALowercaseUnitName = 'winproc') ; +end; + +{ TConvertSettings } + +constructor TConvertSettings.Create(const ATitle: string); +begin + fTitle:=ATitle; + fLog:=TStringList.Create; + fMainFilenames:=TStringList.Create; + fEnabled:=True; + fSettingsForm:=Nil; + fOmitProjUnits:=TStringToStringTree.Create(false); + fReplaceUnits:=TStringToStringTree.Create(false); + fReplaceTypes:=TStringToStringTree.Create(false); + fReplaceFuncs:=TFuncsAndCategories.Create; + fCoordOffsets:=TVisualOffsets.Create; + fConfigStorage:=GetIDEConfigStorage('delphiconverter.xml', true); + + // Units left out of project. Some projects include them although there are + // Lazarus packages for them. This setting is not saved in configuration. + // Key = Unit name, Value = Lazarus Package to be added to project as dependency + fOmitProjUnits['FastMM4'] :=''; // FastMM4 is not needed as FPC's + fOmitProjUnits['FastMM4Messages'] :=''; // memory manager does its job well. + fOmitProjUnits['GR32'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Blend'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Containers'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_DrawingEx'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Filters'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Image'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Layers'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_LowLevel'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Math'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_MicroTiles'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_OrdinalMaps'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_RangeBars'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Rasterizers'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_RepaintOpt'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Resamplers'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_System'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_Transforms'] :='GR32_Lazarus'; + fOmitProjUnits['GR32_VectorMaps'] :='GR32_Lazarus'; + // OpenGL will be replaced with dglOpenGL in uses section. Download dglOpenGL : + // http://wiki.delphigl.com/index.php/dglOpenGL.pas/en#Download + fOmitProjUnits['OpenGL'] :=''; + fOmitProjUnits['uPSCompiler'] :='pascalscript'; + fOmitProjUnits['uPSUtils'] :='pascalscript'; + fOmitProjUnits['uPSComponent'] :='pascalscript'; + fOmitProjUnits['uPSRuntime'] :='pascalscript'; + fOmitProjUnits['uPSDebugger'] :='pascalscript'; + fOmitProjUnits['uPSPreProcessor'] :='pascalscript'; + fOmitProjUnits['uPSR_dll'] :='pascalscript'; + fOmitProjUnits['uPSC_dll'] :='pascalscript'; + fOmitProjUnits['SynEdit'] :='SynEdit'; + fOmitProjUnits['SynEditMiscProcs'] :='SynEdit'; + fOmitProjUnits['SynEditTextBuffer'] :='SynEdit'; + fOmitProjUnits['SynEditTypes'] :='SynEdit'; + fOmitProjUnits['SynEditHighlighter'] :='SynEdit'; + fOmitProjUnits['SynEditKbdHandler'] :='SynEdit'; + fOmitProjUnits['SynEditKeyCmds'] :='SynEdit'; + fOmitProjUnits['SynEditKeyConst'] :='SynEdit'; + fOmitProjUnits['SynEditMiscClasses'] :='SynEdit'; + fOmitProjUnits['SynEditStrConst'] :='SynEdit'; + fOmitProjUnits['SynEditWordWrap'] :='SynEdit'; + fOmitProjUnits['SynHighlighterMulti']:='SynEdit'; + fOmitProjUnits['SynHighlighterPas'] :='SynEdit'; + fOmitProjUnits['SynTextDrawer'] :='SynEdit'; + fOmitProjUnits['SynRegExpr'] :='SynEdit'; +end; + +destructor TConvertSettings.Destroy; +begin + fConfigStorage.Free; + fCoordOffsets.Free; + fReplaceFuncs.Clear; + fReplaceFuncs.Free; + fReplaceTypes.Free; + fReplaceUnits.Free; + fOmitProjUnits.Free; + fMainFilenames.Free; + fLog.Free; + inherited Destroy; +end; + // Load and store configuration in StringToStringTree : -procedure LoadStringToStringTree(Config: TConfigStorage; const Path: string; - Tree: TStringToStringTree); +procedure TConvertSettings.LoadStringToStringTree(Path: string; Tree: TStringToStringTree); var SubPath: String; CurName, CurValue: String; Cnt, i: Integer; begin Tree.Clear; - Cnt:=Config.GetValue(Path+'Count', 0); + Cnt:=fConfigStorage.GetValue(Path+'Count', 0); for i:=0 to Cnt-1 do begin SubPath:=Path+'Item'+IntToStr(i)+'/'; - CurName:=Config.GetValue(SubPath+'Name',''); - CurValue:=Config.GetValue(SubPath+'Value',''); + CurName:=fConfigStorage.GetValue(SubPath+'Name',''); + CurValue:=fConfigStorage.GetValue(SubPath+'Value',''); Tree[CurName]:=CurValue; end; end; -procedure SaveStringToStringTree(Config: TConfigStorage; const Path: string; - Tree: TStringToStringTree); +procedure TConvertSettings.SaveStringToStringTree(Path: string; Tree: TStringToStringTree); var Node: TAVLTreeNode; Item: PStringToStringTreeItem; SubPath: String; i: Integer; begin - Config.DeletePath(Path); // Make sure there are no old leftover items. - Config.SetDeleteValue(Path+'Count', Tree.Tree.Count, 0); + fConfigStorage.DeletePath(Path); // Make sure there are no old leftover items. + fConfigStorage.SetDeleteValue(Path+'Count', Tree.Tree.Count, 0); Node:=Tree.Tree.FindLowest; i:=0; while Node<>nil do begin Item:=PStringToStringTreeItem(Node.Data); SubPath:=Path+'Item'+IntToStr(i)+'/'; - Config.SetDeleteValue(SubPath+'Name',Item^.Name,''); - Config.SetDeleteValue(SubPath+'Value',Item^.Value,''); + fConfigStorage.SetDeleteValue(SubPath+'Name',Item^.Name,''); + fConfigStorage.SetDeleteValue(SubPath+'Value',Item^.Value,''); Node:=Tree.Tree.FindSuccessor(Node); inc(i); end; @@ -249,132 +349,109 @@ // Load and store configuration in TFuncsAndCategories : -procedure LoadFuncReplacements(Config: TConfigStorage; - const FuncPath, CategPath: string; aFuncsAndCateg: TFuncsAndCategories); +procedure TConvertSettings.LoadFuncReplacements; var SubPath: String; xCategory, xDelphiFunc, xReplacement, xPackage, xUnitName: String; CategUsed: Boolean; Cnt, i: Integer; begin - aFuncsAndCateg.Clear; + fReplaceFuncs.Clear; // Replacement functions - Cnt:=Config.GetValue(FuncPath+'Count', 0); + Cnt:=fConfigStorage.GetValue('FuncReplacements/Count', 0); for i:=0 to Cnt-1 do begin - SubPath:=FuncPath+'Item'+IntToStr(i)+'/'; - xCategory :=Config.GetValue(SubPath+'Category',''); - xDelphiFunc :=Config.GetValue(SubPath+'DelphiFunction',''); - xReplacement:=Config.GetValue(SubPath+'Replacement',''); - xPackage :=Config.GetValue(SubPath+'Package',''); - xUnitName :=Config.GetValue(SubPath+'UnitName',''); - aFuncsAndCateg.AddFunc(xCategory, xDelphiFunc, xReplacement, xPackage, xUnitName); + SubPath:='FuncReplacements/Item'+IntToStr(i)+'/'; + xCategory :=fConfigStorage.GetValue(SubPath+'Category',''); + // Delete UTF8 func conversion from old configuration. + if (fVersion < 2) and (xCategory = 'UTF8Names') then Continue; + xDelphiFunc :=fConfigStorage.GetValue(SubPath+'DelphiFunction',''); + xReplacement:=fConfigStorage.GetValue(SubPath+'Replacement',''); + xPackage :=fConfigStorage.GetValue(SubPath+'Package',''); + xUnitName :=fConfigStorage.GetValue(SubPath+'UnitName',''); + fReplaceFuncs.AddFunc(xCategory, xDelphiFunc, xReplacement, xPackage, xUnitName); end; // Categories - Cnt:=Config.GetValue(CategPath+'Count', 0); + Cnt:=fConfigStorage.GetValue('Categories/Count', 0); for i:=0 to Cnt-1 do begin - SubPath:=CategPath+'Item'+IntToStr(i)+'/'; - xCategory:=Config.GetValue(SubPath+'Name',''); - CategUsed:=Config.GetValue(SubPath+'InUse',True); - aFuncsAndCateg.AddCategory(xCategory, CategUsed); + SubPath:='Categories/Item'+IntToStr(i)+'/'; + xCategory:=fConfigStorage.GetValue(SubPath+'Name',''); + // Delete UTF8 category from old configuration. + if (fVersion < 2) and (xCategory = 'UTF8Names') then Continue; + CategUsed:=fConfigStorage.GetValue(SubPath+'InUse',True); + fReplaceFuncs.AddCategory(xCategory, CategUsed); end; end; -procedure SaveFuncReplacements(Config: TConfigStorage; - const FuncPath, CategPath: string; aFuncsAndCateg: TFuncsAndCategories); +procedure TConvertSettings.SaveFuncReplacements; var FuncRepl: TFuncReplacement; SubPath, s: String; i: Integer; begin // Replacement functions - Config.SetDeleteValue(FuncPath+'Count', aFuncsAndCateg.Funcs.Count, 0); - for i:=0 to aFuncsAndCateg.Funcs.Count-1 do begin - FuncRepl:=aFuncsAndCateg.FuncAtInd(i); + fConfigStorage.DeletePath('FuncReplacements/'); + fConfigStorage.SetDeleteValue('FuncReplacements/Count', fReplaceFuncs.Funcs.Count, 0); + for i:=0 to fReplaceFuncs.Funcs.Count-1 do begin + FuncRepl:=fReplaceFuncs.FuncAtInd(i); if FuncRepl<>nil then begin - SubPath:=FuncPath+'Item'+IntToStr(i)+'/'; - Config.SetDeleteValue(SubPath+'Category' ,FuncRepl.Category,''); - Config.SetDeleteValue(SubPath+'DelphiFunction',aFuncsAndCateg.Funcs[i],''); - Config.SetDeleteValue(SubPath+'Replacement' ,FuncRepl.ReplClause,''); - Config.SetDeleteValue(SubPath+'Package' ,FuncRepl.PackageName,''); - Config.SetDeleteValue(SubPath+'UnitName' ,FuncRepl.UnitName,''); + SubPath:='FuncReplacements/Item'+IntToStr(i)+'/'; + fConfigStorage.SetDeleteValue(SubPath+'Category' ,FuncRepl.Category,''); + fConfigStorage.SetDeleteValue(SubPath+'DelphiFunction',fReplaceFuncs.Funcs[i],''); + fConfigStorage.SetDeleteValue(SubPath+'Replacement' ,FuncRepl.ReplClause,''); + fConfigStorage.SetDeleteValue(SubPath+'Package' ,FuncRepl.PackageName,''); + fConfigStorage.SetDeleteValue(SubPath+'UnitName' ,FuncRepl.UnitName,''); end; end; - // Remove leftover items in case the list has become shorter. - for i:=aFuncsAndCateg.Funcs.Count to aFuncsAndCateg.Funcs.Count+10 do begin - SubPath:=FuncPath+'Item'+IntToStr(i)+'/'; - Config.DeletePath(SubPath); - end; // Categories - Config.SetDeleteValue(CategPath+'Count', aFuncsAndCateg.Categories.Count, 0); - for i:=0 to aFuncsAndCateg.Categories.Count-1 do begin - s:=aFuncsAndCateg.Categories[i]; + fConfigStorage.DeletePath('Categories/'); + fConfigStorage.SetDeleteValue('Categories/Count', fReplaceFuncs.Categories.Count, 0); + for i:=0 to fReplaceFuncs.Categories.Count-1 do begin + s:=fReplaceFuncs.Categories[i]; if s<>'' then begin - SubPath:=CategPath+'Item'+IntToStr(i)+'/'; - Config.SetDeleteValue(SubPath+'Name',s,''); - Config.SetDeleteValue(SubPath+'InUse',aFuncsAndCateg.CategoryIsUsed(i),True); + SubPath:='Categories/Item'+IntToStr(i)+'/'; + fConfigStorage.SetDeleteValue(SubPath+'Name',s,''); + fConfigStorage.SetDeleteValue(SubPath+'InUse',fReplaceFuncs.CategoryIsUsed(i),True); end; end; - for i:=aFuncsAndCateg.Categories.Count to aFuncsAndCateg.Categories.Count+10 do begin - SubPath:=CategPath+'Item'+IntToStr(i)+'/'; - Config.DeletePath(SubPath); - end; end; // Load and store configuration in VisualOffsets : -procedure LoadVisualOffsets(Config: TConfigStorage; const Path: string; - aVisualOffsets: TVisualOffsets); +procedure TConvertSettings.LoadVisualOffsets; var ParentType, SubPath: String; xTop, xLeft: Integer; Cnt, i: Integer; begin - aVisualOffsets.Clear; - Cnt:=Config.GetValue(Path+'Count', 0); + fCoordOffsets.Clear; + Cnt:=fConfigStorage.GetValue('VisualOffsets/Count', 0); for i:=0 to Cnt-1 do begin - SubPath:=Path+'Item'+IntToStr(i)+'/'; - ParentType:=Config.GetValue(SubPath+'ParentType',''); - xTop :=Config.GetValue(SubPath+'Top',0); - xLeft:=Config.GetValue(SubPath+'Left',0); - aVisualOffsets.Add(TVisualOffset.Create(ParentType, xTop, xLeft)); + SubPath:='VisualOffsets/Item'+IntToStr(i)+'/'; + ParentType:=fConfigStorage.GetValue(SubPath+'ParentType',''); + xTop :=fConfigStorage.GetValue(SubPath+'Top',0); + xLeft:=fConfigStorage.GetValue(SubPath+'Left',0); + fCoordOffsets.Add(TVisualOffset.Create(ParentType, xTop, xLeft)); end; end; -procedure SaveVisualOffsets(Config: TConfigStorage; const Path: string; - aVisualOffsets: TVisualOffsets); +procedure TConvertSettings.SaveVisualOffsets; var offs: TVisualOffset; SubPath: String; i: Integer; begin - Config.SetDeleteValue(Path+'Count', aVisualOffsets.Count, 0); - for i:=0 to aVisualOffsets.Count-1 do begin - offs:=aVisualOffsets[i]; - SubPath:=Path+'Item'+IntToStr(i)+'/'; - Config.SetDeleteValue(SubPath+'ParentType',offs.ParentType,''); - Config.SetDeleteValue(SubPath+'Top' ,offs.Top,0); - Config.SetDeleteValue(SubPath+'Left' ,offs.Left,0); - end; - // Remove leftover items in case the list has become shorter. - for i:=aVisualOffsets.Count to aVisualOffsets.Count+10 do begin - SubPath:=Path+'Item'+IntToStr(i)+'/'; - Config.DeletePath(SubPath); + fConfigStorage.DeletePath('VisualOffsets/'); + fConfigStorage.SetDeleteValue('VisualOffsets/Count', fCoordOffsets.Count, 0); + for i:=0 to fCoordOffsets.Count-1 do begin + offs:=fCoordOffsets[i]; + SubPath:='VisualOffsets/Item'+IntToStr(i)+'/'; + fConfigStorage.SetDeleteValue(SubPath+'ParentType',offs.ParentType,''); + fConfigStorage.SetDeleteValue(SubPath+'Top' ,offs.Top,0); + fConfigStorage.SetDeleteValue(SubPath+'Left' ,offs.Left,0); end; end; -function IsWinSpecificUnit(const ALowercaseUnitName: string): Boolean; -// These units exist in Windows only. -// They must be treated as missing units when converting for multi-platform. -begin - Result := (ALowercaseUnitName = 'windows') - or (ALowercaseUnitName = 'shellapi') - or (ALowercaseUnitName = 'wintypes') - or (ALowercaseUnitName = 'winproc') ; -end; - -{ TConvertSettings } - -constructor TConvertSettings.Create(const ATitle: string); +procedure TConvertSettings.Load; var TheMap: TStringToStringTree; Categ: string; @@ -395,18 +472,7 @@ end; begin - fTitle:=ATitle; - fLog:=TStringList.Create; - fMainFilenames:=TStringList.Create; - fEnabled:=True; - fSettingsForm:=Nil; - fOmitProjUnits:=TStringToStringTree.Create(false); - fReplaceUnits:=TStringToStringTree.Create(false); - fReplaceTypes:=TStringToStringTree.Create(false); - fReplaceFuncs:=TFuncsAndCategories.Create; - fCoordOffsets:=TVisualOffsets.Create; - // Load settings from ConfigStorage. - fConfigStorage:=GetIDEConfigStorage('delphiconverter.xml', true); + fVersion :=fConfigStorage.GetValue('Version', 0); fCrossPlatform :=fConfigStorage.GetValue('CrossPlatform', true); fSupportDelphi :=fConfigStorage.GetValue('SupportDelphi', false); fSameDfmFile :=fConfigStorage.GetValue('SameDfmFile', false); @@ -420,65 +486,11 @@ fTypeReplaceMode:=TReplaceModeAllow(fConfigStorage.GetValue('TypeReplaceMode', 1)); fFuncReplaceMode:=TReplaceModeShort(fConfigStorage.GetValue('FuncReplaceMode', 1)); fCoordOffsMode :=TReplaceModeShort(fConfigStorage.GetValue('CoordOffsMode', 1)); - LoadStringToStringTree(fConfigStorage, 'UnitReplacements/', fReplaceUnits); - LoadStringToStringTree(fConfigStorage, 'TypeReplacements/', fReplaceTypes); - LoadFuncReplacements(fConfigStorage, 'FuncReplacements/', 'Categories/', fReplaceFuncs); - LoadVisualOffsets(fConfigStorage, 'VisualOffsets/', fCoordOffsets); - - // Units left out of project. Some projects include them although there are - // Lazarus packages for them. This setting is not saved in configuration. - // Key = Unit name, Value = Lazarus Package to be added to project as dependency - fOmitProjUnits['FastMM4'] :=''; // FastMM4 is not needed as FPC's - fOmitProjUnits['FastMM4Messages'] :=''; // memory manager does its job well. - fOmitProjUnits['GR32'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Blend'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Containers'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_DrawingEx'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Filters'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Image'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Layers'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_LowLevel'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Math'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_MicroTiles'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_OrdinalMaps'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_RangeBars'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Rasterizers'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_RepaintOpt'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Resamplers'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_System'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_Transforms'] :='GR32_Lazarus'; - fOmitProjUnits['GR32_VectorMaps'] :='GR32_Lazarus'; - // OpenGL will be replaced with dglOpenGL in uses section. Download dglOpenGL : - // http://wiki.delphigl.com/index.php/dglOpenGL.pas/en#Download - fOmitProjUnits['OpenGL'] :=''; - fOmitProjUnits['uPSCompiler'] :='pascalscript'; - fOmitProjUnits['uPSUtils'] :='pascalscript'; - fOmitProjUnits['uPSComponent'] :='pascalscript'; - fOmitProjUnits['uPSRuntime'] :='pascalscript'; - fOmitProjUnits['uPSDebugger'] :='pascalscript'; - fOmitProjUnits['uPSPreProcessor'] :='pascalscript'; - fOmitProjUnits['uPSR_dll'] :='pascalscript'; - fOmitProjUnits['uPSC_dll'] :='pascalscript'; - fOmitProjUnits['SynEdit'] :='SynEdit'; - fOmitProjUnits['SynEditMiscProcs'] :='SynEdit'; - fOmitProjUnits['SynEditTextBuffer'] :='SynEdit'; - fOmitProjUnits['SynEditTypes'] :='SynEdit'; - fOmitProjUnits['SynEditHighlighter'] :='SynEdit'; - fOmitProjUnits['SynEditKbdHandler'] :='SynEdit'; - fOmitProjUnits['SynEditKeyCmds'] :='SynEdit'; - fOmitProjUnits['SynEditKeyConst'] :='SynEdit'; - fOmitProjUnits['SynEditMiscClasses'] :='SynEdit'; - fOmitProjUnits['SynEditStrConst'] :='SynEdit'; - fOmitProjUnits['SynEditWordWrap'] :='SynEdit'; - fOmitProjUnits['SynHighlighterMulti']:='SynEdit'; - fOmitProjUnits['SynHighlighterPas'] :='SynEdit'; - fOmitProjUnits['SynTextDrawer'] :='SynEdit'; - fOmitProjUnits['SynRegExpr'] :='SynEdit'; - - // * Add default values for configuration if ConfigStorage doesn't have them * - // Map Delphi units to Lazarus units. + // * Map Delphi units to Lazarus units * TheMap:=fReplaceUnits; + LoadStringToStringTree('UnitReplacements/', TheMap); + // Add default values for configuration if ConfigStorage doesn't have them MapReplacement('Windows', 'LCLIntf, LCLType, LMessages'); MapReplacement('WinTypes', 'LCLIntf, LCLType, LMessages'); MapReplacement('WinProcs', 'LCLIntf, LCLType, LMessages'); @@ -518,8 +530,10 @@ MapReplacement('^TntLX(.+)', '$1'); MapReplacement('^Tnt(([^L]|L[^X]).*)','$1'); - // Map Delphi types to LCL types. + // * Map Delphi types to LCL types * TheMap:=fReplaceTypes; + LoadStringToStringTree('TypeReplacements/', TheMap); + // Add default values for configuration if ConfigStorage doesn't have them MapReplacement('TFlowPanel', 'TPanel'); MapReplacement('TGridPanel', 'TPanel'); MapReplacement('TRichEdit', 'TMemo'); // or TRichMemo from CRC. @@ -567,40 +581,10 @@ MapReplacement('^TTnt(.+)LX$', 'T$1'); MapReplacement('^TTnt(.+[^L][^X])$','T$1'); - // Coordinate offsets for some visual containers - with fCoordOffsets do begin - AddVisualOffset('TGroupBox' , 14,2); - AddVisualOffset('TPanel', 2,2); - AddVisualOffset('RadioGroup', 14,2); - AddVisualOffset('CheckGroup', 14,2); - end; - - // Map Delphi function names to FCL/LCL functions + // * Map Delphi function names to FCL/LCL functions * + LoadFuncReplacements; + // Add default values for configuration if ConfigStorage doesn't have them with fReplaceFuncs do begin - // File name encoding. - Categ:='UTF8Names'; - AddDefaultCategory(Categ); - AddFunc(Categ,'FileExists', 'FileExistsUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'FileAge', 'FileAgeUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'DirectoryExists', 'DirectoryExistsUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'ExpandFileName', 'ExpandFileNameUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'ExpandUNCFileName', 'ExpandUNCFileNameUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'ExtractShortPathName','ExtractShortPathNameUTF8($1)','LCL','FileUtil'); - AddFunc(Categ,'FindFirst', 'FindFirstUTF8($1,$2,$3)', 'LCL','FileUtil'); - AddFunc(Categ,'FindNext', 'FindNextUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'FindClose', 'FindCloseUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'FileSetDate', 'FileSetDateUTF8($1,$2)', 'LCL','FileUtil'); - AddFunc(Categ,'FileGetAttr', 'FileGetAttrUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'FileSetAttr', 'FileSetAttrUTF8($1,$2)', 'LCL','FileUtil'); - AddFunc(Categ,'DeleteFile', 'DeleteFileUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'RenameFile', 'RenameFileUTF8($1,$2)', 'LCL','FileUtil'); - AddFunc(Categ,'FileSearch', 'FileSearchUTF8($1,$2)', 'LCL','FileUtil'); - AddFunc(Categ,'FileIsReadOnly', 'FileIsReadOnlyUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'GetCurrentDir', 'GetCurrentDirUTF8', 'LCL','FileUtil'); - AddFunc(Categ,'SetCurrentDir', 'SetCurrentDirUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'CreateDir', 'CreateDirUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'RemoveDir', 'RemoveDirUTF8($1)', 'LCL','FileUtil'); - AddFunc(Categ,'ForceDirectories', 'ForceDirectoriesUTF8($1)', 'LCL','FileUtil'); // File functions using a handle Categ:='FileHandle'; AddDefaultCategory(Categ); @@ -631,11 +615,22 @@ // SysUtils has AnsiSameStr and SameText but no SameStr. AddFunc(Categ, 'SameStr','(CompareStr($1,$2) = 0)' ,'', 'SysUtils'); end; + + // * Coordinate offsets for some visual containers * + LoadVisualOffsets; + // Add default values for configuration if ConfigStorage doesn't have them + with fCoordOffsets do begin + AddVisualOffset('TGroupBox' , 14,2); + AddVisualOffset('TPanel', 2,2); + AddVisualOffset('RadioGroup', 14,2); + AddVisualOffset('CheckGroup', 14,2); + end; end; -destructor TConvertSettings.Destroy; +procedure TConvertSettings.Save; begin // Save possibly modified settings to ConfigStorage. + fConfigStorage.SetDeleteValue('Version', ConverterVersion, 0); fConfigStorage.SetDeleteValue('CrossPlatform', fCrossPlatform, true); fConfigStorage.SetDeleteValue('SupportDelphi', fSupportDelphi, false); fConfigStorage.SetDeleteValue('SameDfmFile', fSameDfmFile, false); @@ -643,34 +638,25 @@ fConfigStorage.SetDeleteValue('BackupFiles', fBackupFiles, true); fConfigStorage.SetDeleteValue('KeepFileOpen', fKeepFileOpen, false); fConfigStorage.SetDeleteValue('ScanParentDir', fScanParentDir, true); - fConfigStorage.SetDeleteValue('FuncReplaceComment',fFuncReplaceComment, true); + fConfigStorage.SetDeleteValue('FuncReplaceComment', fFuncReplaceComment, true); fConfigStorage.SetDeleteValue('UnitsReplaceMode', integer(fUnitsReplaceMode), 2); fConfigStorage.SetDeleteValue('UnknownPropsMode', integer(fPropReplaceMode), 2); fConfigStorage.SetDeleteValue('TypeReplaceMode', integer(fTypeReplaceMode), 1); fConfigStorage.SetDeleteValue('FuncReplaceMode', integer(fFuncReplaceMode), 1); fConfigStorage.SetDeleteValue('CoordOffsMode', integer(fCoordOffsMode), 1); - SaveStringToStringTree(fConfigStorage, 'UnitReplacements/', fReplaceUnits); - SaveStringToStringTree(fConfigStorage, 'TypeReplacements/', fReplaceTypes); - SaveFuncReplacements(fConfigStorage, 'FuncReplacements/', 'Categories/', fReplaceFuncs); - SaveVisualOffsets(fConfigStorage, 'VisualOffsets/', fCoordOffsets); - // Free stuff - fConfigStorage.Free; - fCoordOffsets.Free; - fReplaceFuncs.Clear; - fReplaceFuncs.Free; - fReplaceTypes.Free; - fReplaceUnits.Free; - fOmitProjUnits.Free; - fMainFilenames.Free; - fLog.Free; - inherited Destroy; + SaveStringToStringTree('UnitReplacements/', fReplaceUnits); + SaveStringToStringTree('TypeReplacements/', fReplaceTypes); + SaveFuncReplacements; + SaveVisualOffsets; end; function TConvertSettings.RunForm(ACacheUnitsThread: TThread): TModalResult; begin fSettingsForm:=TConvertSettingsForm.Create(nil, Self); try - with fSettingsForm do begin + Load; // Load settings from ConfigStorage. + with fSettingsForm do + begin Caption:=fTitle + ' - ' + ExtractFileName(MainFilename); InputPathListBox.Items.Assign(fMainFilenames); // Settings --> UI. Loaded from ConfigSettings earlier. @@ -693,8 +679,9 @@ fCacheUnitsThread := ACacheUnitsThread; StartThreadIfValid; - Result:=ShowModal; // Let the user change settings in a form. - if Result=mrOK then begin // The thread will finished before the form closes. + Result:=ShowModal; // Let the user change the settings. + if Result=mrOK then // The thread will be finished before the form closes. + begin // UI --> Settings. Will be saved to ConfigSettings later. fCrossPlatform :=CrossPlatformCheckBox.Checked; fSupportDelphi :=SupportDelphiCheckBox.Checked; @@ -712,6 +699,7 @@ fCoordOffsMode :=TReplaceModeShort(CoordOffsComboBox.ItemIndex); if fBackupFiles then DeleteDirectory(BackupPath, True); // Delete old backup if there is any. + Save; end; end; finally @@ -730,7 +718,7 @@ var RelPath, SubPath, fn: string; begin - RelPath:=FileUtil.CreateRelativePath(DelphiFilename, MainPath); + RelPath:=CreateRelativePath(DelphiFilename, MainPath); SubPath:=ExtractFilePath(RelPath); if LazExt='' then // Include ext in filename if not defined. fn:=ExtractFileName(RelPath) @@ -752,7 +740,7 @@ var RelPath, SubPath, fn: string; begin - RelPath:=FileUtil.CreateRelativePath(DelphiFilename, MainPath); + RelPath:=CreateRelativePath(DelphiFilename, MainPath); SubPath:=ExtractFilePath(RelPath); if LazExt='' then // Include ext in filename if not defined. fn:=ExtractFileName(RelPath) diff -Nru lazarus-1.4.4+dfsg/converter/missingpropertiesdlg.pas lazarus-1.6+dfsg/converter/missingpropertiesdlg.pas --- lazarus-1.4.4+dfsg/converter/missingpropertiesdlg.pas 2015-05-01 10:39:09.000000000 +0000 +++ lazarus-1.6+dfsg/converter/missingpropertiesdlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -33,17 +33,17 @@ uses // FCL+LCL - Classes, SysUtils, Math, LCLProc, Forms, Controls, Grids, LResources, + Classes, SysUtils, LCLProc, Forms, Controls, Grids, LResources, LConvEncoding, Graphics, Dialogs, Buttons, StdCtrls, ExtCtrls, contnrs, - FileUtil, LazUTF8Classes, LCLType, + LazFileUtils, LazUTF8Classes, LCLType, LazUTF8, // components SynHighlighterLFM, SynEdit, SynEditMiscClasses, LFMTrees, // codetools - BasicCodeTools, CodeCache, CodeToolManager, CodeToolsStructs, CodeCompletionTool, + CodeCache, CodeToolManager, CodeToolsStructs, CodeCompletionTool, // IDE - IDEDialogs, ComponentReg, PackageIntf, IDEWindowIntf, DialogProcs, + ComponentReg, PackageIntf, IDEWindowIntf, CustomFormEditor, LazarusIDEStrConsts, IDEProcs, - EditorOptions, CheckLFMDlg, IDEMsgIntf, Project, SourceMarks, + EditorOptions, CheckLFMDlg, Project, SourceMarks, // Converter ConverterTypes, ConvertSettings, ReplaceNamesUnit, ConvCodeTool, FormFileConv, UsedUnits; @@ -135,7 +135,6 @@ implementation -uses strutils; {$R *.lfm} diff -Nru lazarus-1.4.4+dfsg/converter/missingunits.lfm lazarus-1.6+dfsg/converter/missingunits.lfm --- lazarus-1.4.4+dfsg/converter/missingunits.lfm 2013-08-23 11:47:16.000000000 +0000 +++ lazarus-1.6+dfsg/converter/missingunits.lfm 2015-09-14 14:30:28.000000000 +0000 @@ -5,31 +5,33 @@ Width = 732 HorzScrollBar.Page = 411 VertScrollBar.Page = 342 + BorderIcons = [biSystemMenu] Caption = 'Units not Found' ClientHeight = 261 ClientWidth = 732 Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object ButtonPanel: TPanel Left = 0 - Height = 35 - Top = 226 + Height = 41 + Top = 220 Width = 732 Align = alBottom AutoSize = True - ClientHeight = 35 + BevelOuter = bvNone + ClientHeight = 41 ClientWidth = 732 - TabOrder = 0 + TabOrder = 3 object CommentButton: TBitBtn AnchorSideLeft.Control = ButtonPanel AnchorSideTop.Control = AbortButton AnchorSideTop.Side = asrCenter - Left = 12 - Height = 26 - Top = 4 - Width = 73 + Left = 6 + Height = 29 + Top = 1 + Width = 78 AutoSize = True - BorderSpacing.Left = 11 + BorderSpacing.Around = 6 Caption = 'Comment' Default = True ModalResult = 1 @@ -40,12 +42,12 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = CommentButton AnchorSideTop.Side = asrCenter - Left = 96 - Height = 26 - Top = 4 - Width = 58 + Left = 90 + Height = 29 + Top = 1 + Width = 57 AutoSize = True - BorderSpacing.Left = 11 + BorderSpacing.Around = 6 Caption = 'Search' ModalResult = 6 TabOrder = 1 @@ -55,12 +57,12 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = SearchButton AnchorSideTop.Side = asrCenter - Left = 165 - Height = 26 - Top = 4 - Width = 40 + Left = 153 + Height = 29 + Top = 1 + Width = 41 AutoSize = True - BorderSpacing.Left = 11 + BorderSpacing.Around = 6 Caption = 'Skip' ModalResult = 5 TabOrder = 2 @@ -68,13 +70,13 @@ object AbortButton: TBitBtn AnchorSideRight.Control = ButtonPanel AnchorSideRight.Side = asrBottom - Left = 638 - Height = 33 + Left = 654 + Height = 29 Top = 1 - Width = 82 + Width = 72 Anchors = [akTop, akRight] AutoSize = True - BorderSpacing.Right = 11 + BorderSpacing.Around = 6 DefaultCaption = True Kind = bkAbort ModalResult = 3 @@ -82,50 +84,51 @@ end end object MissingUnitsGroupBox: TGroupBox - Left = 0 - Height = 223 - Top = 0 + Left = 6 + Height = 208 + Top = 6 Width = 233 Align = alLeft - BorderSpacing.Bottom = 3 + BorderSpacing.Around = 6 Caption = 'Missing Units Info' - ClientHeight = 204 + ClientHeight = 189 ClientWidth = 229 - TabOrder = 1 + TabOrder = 0 object MissingUnitsCheckListBox: TCheckListBox Left = 0 - Height = 204 + Height = 189 Top = 0 Width = 229 Align = alClient ItemHeight = 0 PopupMenu = PopupMenu1 TabOrder = 0 + TopIndex = -1 end end object Splitter1: TSplitter - Left = 233 - Height = 226 + Left = 245 + Height = 220 Top = 0 Width = 5 end object InfoPanel: TPanel - Left = 238 - Height = 217 + Left = 250 + Height = 211 Top = 9 - Width = 494 + Width = 482 Align = alClient BorderSpacing.Top = 9 BevelOuter = bvNone - ClientHeight = 217 - ClientWidth = 494 - TabOrder = 3 + ClientHeight = 211 + ClientWidth = 482 + TabOrder = 2 object ChoicesLabel: TLabel AnchorSideLeft.Side = asrBottom Left = 8 - Height = 15 + Height = 17 Top = 16 - Width = 53 + Width = 56 BorderSpacing.Left = 16 BorderSpacing.Top = 23 Caption = 'Choices:' @@ -135,9 +138,9 @@ AnchorSideLeft.Control = ChoicesLabel AnchorSideTop.Control = ChoicesLabel Left = 8 - Height = 15 + Height = 17 Top = 39 - Width = 31 + Width = 35 BorderSpacing.Top = 23 Caption = 'Info1' ParentColor = False @@ -146,9 +149,9 @@ AnchorSideLeft.Control = ChoicesLabel AnchorSideTop.Control = Info1Label Left = 8 - Height = 15 + Height = 17 Top = 62 - Width = 31 + Width = 35 BorderSpacing.Top = 23 Caption = 'Info2' ParentColor = False @@ -157,9 +160,9 @@ AnchorSideLeft.Control = ChoicesLabel AnchorSideTop.Control = Info2Label Left = 8 - Height = 15 + Height = 17 Top = 85 - Width = 31 + Width = 35 BorderSpacing.Top = 23 Caption = 'Info3' ParentColor = False diff -Nru lazarus-1.4.4+dfsg/converter/missingunits.pas lazarus-1.6+dfsg/converter/missingunits.pas --- lazarus-1.4.4+dfsg/converter/missingunits.pas 2013-09-27 12:27:04.000000000 +0000 +++ lazarus-1.6+dfsg/converter/missingunits.pas 2015-03-10 13:27:41.000000000 +0000 @@ -35,12 +35,12 @@ Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, Buttons, StdCtrls, FileUtil, CheckLst, Menus, ExtCtrls, // Components - SynEdit, CodeAtom, CodeCache, CodeToolManager, DefineTemplates, + SynEdit, CodeToolManager, DefineTemplates, // IDEIntf - LazIDEIntf, IDEMsgIntf, + LazIDEIntf, // IDE CompilerOptions, - PackageDefs, Project, DialogProcs, IDEProcs, LazarusIDEStrConsts; + PackageDefs, Project, IDEProcs, LazarusIDEStrConsts; type diff -Nru lazarus-1.4.4+dfsg/converter/replacefuncsunit.pas lazarus-1.6+dfsg/converter/replacefuncsunit.pas --- lazarus-1.4.4+dfsg/converter/replacefuncsunit.pas 2014-12-05 12:37:55.000000000 +0000 +++ lazarus-1.6+dfsg/converter/replacefuncsunit.pas 2015-03-10 13:27:41.000000000 +0000 @@ -6,7 +6,7 @@ uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - Buttons, ButtonPanel, ComCtrls, Grids, CheckLst, Menus, StdCtrls, SynRegExpr, + Buttons, ButtonPanel, Grids, CheckLst, Menus, StdCtrls, SynRegExpr, LazarusIDEStrConsts, ConverterTypes; type @@ -102,8 +102,8 @@ procedure PopupMenu1Popup(Sender: TObject); procedure InsertRow1Click(Sender: TObject); procedure DeleteRow1Click(Sender: TObject); - procedure GridPrepareCanvas(sender: TObject; aCol, aRow: Integer; - aState: TGridDrawState); + procedure GridPrepareCanvas(sender: TObject; {%H-}aCol, aRow: Integer; + {%H-}aState: TGridDrawState); procedure OKButtonClick(Sender: TObject); public function FromFuncListToUI(aFuncsAndCateg: TFuncsAndCategories): boolean; diff -Nru lazarus-1.4.4+dfsg/converter/replacenamesunit.pas lazarus-1.6+dfsg/converter/replacenamesunit.pas --- lazarus-1.4.4+dfsg/converter/replacenamesunit.pas 2013-08-25 10:26:45.000000000 +0000 +++ lazarus-1.6+dfsg/converter/replacenamesunit.pas 2015-03-22 10:17:35.000000000 +0000 @@ -277,7 +277,9 @@ fGrid.Cells[0,GridEndInd]:=AOldIdent; fGrid.Cells[1,GridEndInd]:=Result; Inc(GridEndInd); - end; + end + else + Result:=''; end; diff -Nru lazarus-1.4.4+dfsg/converter/usedunits.pas lazarus-1.6+dfsg/converter/usedunits.pas --- lazarus-1.4.4+dfsg/converter/usedunits.pas 2014-10-02 15:10:29.000000000 +0000 +++ lazarus-1.6+dfsg/converter/usedunits.pas 2015-06-16 09:22:42.000000000 +0000 @@ -33,9 +33,9 @@ uses Classes, SysUtils, Forms, Controls, Dialogs, // IDE - LazarusIDEStrConsts, IDEMsgIntf, IDEExternToolIntf, + LazarusIDEStrConsts, IDEExternToolIntf, // codetools - CodeToolManager, StdCodeTools, CodeTree, CodeCache, CodeToolsStructs, AVL_Tree, + CodeToolManager, StdCodeTools, CodeTree, CodeToolsStructs, AVL_Tree, LinkScanner, KeywordFuncLists, SourceChanger, CodeAtom, CodeToolsStrConsts, FileProcs, // Converter ConverterTypes, ConvCodeTool, ConvertSettings, ReplaceNamesUnit; @@ -61,7 +61,7 @@ fUnitsToFixCase: TStringToStringTree;// Like rename but done for every target. fUnitsToComment: TStringList; // List of units to be commented. fMissingUnits: TStringList; // Units not found in search path. - function FindMissingUnits(AUnitUpdater: TStringMapUpdater): boolean; + function FindMissingUnits: boolean; procedure ToBeRenamedOrRemoved(AOldName, ANewName: string); procedure FindReplacement(AUnitUpdater: TStringMapUpdater; AMapToEdit: TStringToStringTree); @@ -210,7 +210,7 @@ inherited Destroy; end; -function TUsedUnits.FindMissingUnits(AUnitUpdater: TStringMapUpdater): boolean; +function TUsedUnits.FindMissingUnits: boolean; var UsesNode: TCodeTreeNode; InAtom, UnitNameAtom: TAtomPosition; @@ -361,7 +361,7 @@ with fCTLink do begin ResetMainScanner; ParseToUsesSectionEnd; - // Calls either FindMainUsesSection or FindImplementationUsesSection + // Calls either FindMainUsesNode or FindImplementationUsesNode UsesNode:=UsesSectionNode; Assert(Assigned(UsesNode), 'UsesNode should be assigned in AddDelphiAndLCLSections->MoveToDelphi'); @@ -511,7 +511,7 @@ begin s:=ExtractFileExt(fOwnerTool.fFilename); IsPackage := (s='.dpk') or (s='.lpk'); - Result:=fCTLink.CodeTool.FindMainUsesSection(IsPackage); + Result:=fCTLink.CodeTool.FindMainUsesNode(IsPackage); end; procedure TMainUsedUnits.ParseToUsesSectionEnd; @@ -539,7 +539,7 @@ function TImplUsedUnits.UsesSectionNode: TCodeTreeNode; begin - Result:=fCTLink.CodeTool.FindImplementationUsesSection; + Result:=fCTLink.CodeTool.FindImplementationUsesNode; end; procedure TImplUsedUnits.ParseToUsesSectionEnd; @@ -595,8 +595,8 @@ if fCTLink.Settings.UnitsReplaceMode=rlInteractive then MapToEdit:=TStringToStringTree.Create(false); fCTLink.CodeTool.BuildTree(lsrEnd); - if not (fMainUsedUnits.FindMissingUnits(UnitUpdater) and - fImplUsedUnits.FindMissingUnits(UnitUpdater)) then + if not (fMainUsedUnits.FindMissingUnits and + fImplUsedUnits.FindMissingUnits) then exit(mrCancel); // Find replacements for missing units from settings. @@ -690,10 +690,10 @@ CodeTool.BuildTree(lsrInitializationStart); if fMainUsedUnits.fUnitsToComment.Count > 0 then if not CodeTool.CommentUnitsInUsesSection(fMainUsedUnits.fUnitsToComment, - SrcCache, CodeTool.FindMainUsesSection) then exit; + SrcCache, CodeTool.FindMainUsesNode) then exit; if fImplUsedUnits.fUnitsToComment.Count > 0 then if not CodeTool.CommentUnitsInUsesSection(fImplUsedUnits.fUnitsToComment, - SrcCache, CodeTool.FindImplementationUsesSection) then exit; + SrcCache, CodeTool.FindImplementationUsesNode) then exit; if not SrcCache.Apply then exit; end; // Add more units meant for only LCL. diff -Nru lazarus-1.4.4+dfsg/debian/changelog lazarus-1.6+dfsg/debian/changelog --- lazarus-1.4.4+dfsg/debian/changelog 2016-01-31 16:25:35.000000000 +0000 +++ lazarus-1.6+dfsg/debian/changelog 2016-03-01 19:58:24.000000000 +0000 @@ -1,8 +1,34 @@ -lazarus (1.4.4+dfsg-2build1) xenial; urgency=medium +lazarus (1.6+dfsg-1) unstable; urgency=medium - * Rebuild against fpc 3.0.0. + * Upload to unstable + * New upstream release (named 1.6 iso upstream 1.6.0 to be in line with + the release candidates) + * Update Vcs-* fields to use https + * Bump standards (no changes) - -- Colin Watson Sun, 31 Jan 2016 16:25:34 +0000 + -- Paul Gevers Tue, 01 Mar 2016 20:55:33 +0100 + +lazarus (1.6~rc2+dfsg-1) experimental; urgency=medium + + * New upstream release + * Drop obsolete fix_some_typos_found_by_lintian.patch, applied upstream + + -- Paul Gevers Wed, 27 Jan 2016 21:19:43 +0100 + +lazarus (1.6~rc1+dfsg-1) experimental; urgency=medium + + * New upstream release + - Update d/copyright + - Refresh d/control + * Enable '-z relro' again on arm* now that fpc is fixed, requires fpc >3 + (Closes: #798089) + * Fix several minor issues reported by Lintian: + - Typo in d/copyright + - Add fix_some_typos_found_by_lintian.patch + - Add add_sh-bang_to_sh_scripts.patch + - Typo's in overrides + + -- Paul Gevers Mon, 11 Jan 2016 20:30:29 +0100 lazarus (1.4.4+dfsg-2) unstable; urgency=medium diff -Nru lazarus-1.4.4+dfsg/debian/control lazarus-1.6+dfsg/debian/control --- lazarus-1.4.4+dfsg/debian/control 2015-11-08 04:31:17.000000000 +0000 +++ lazarus-1.6+dfsg/debian/control 2016-02-27 11:14:19.000000000 +0000 @@ -6,26 +6,26 @@ Carlos Laviola , Abou Al Montacir , Paul Gevers -Standards-Version: 3.9.6 +Standards-Version: 3.9.7 Build-Depends: debhelper (>= 9), - fp-utils, - fpc, - fpc-source, + fp-utils (>= 3), + fpc (>= 3), + fpc-source (>= 3), imagemagick, libgtk2.0-dev, libqt4pas-dev, po-debconf, rdfind, symlinks -Vcs-Git: git://anonscm.debian.org/pkg-pascal/lazarus.git -Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-pascal/lazarus.git +Vcs-Git: https://anonscm.debian.org/git/pkg-pascal/lazarus.git +Vcs-Browser: https://anonscm.debian.org/git/pkg-pascal/lazarus.git Homepage: http://www.lazarus.freepascal.org -Package: lazarus-1.4.4 +Package: lazarus-1.6 Architecture: all -Depends: lazarus-doc-1.4.4 (>= ${source:Version}), - lazarus-ide-1.4.4 (>= ${source:Version}), - lazarus-src-1.4.4 (>= ${source:Version}), +Depends: lazarus-doc-1.6 (>= ${source:Version}), + lazarus-ide-1.6 (>= ${source:Version}), + lazarus-src-1.6 (>= ${source:Version}), ${misc:Depends} Recommends: fpc, fpc-source @@ -54,10 +54,10 @@ This metapackage pulls in all the packages needed to have a typical Lazarus installation. -Package: lazarus-src-1.4.4 +Package: lazarus-src-1.6 Architecture: all Depends: ${misc:Depends} -Suggests: lazarus-ide-1.4.4 +Suggests: lazarus-ide-1.6 Provides: lazarus-src Breaks: lazarus-src (<< 0.9.28.2-13) Replaces: lazarus-src (<< 0.9.18.2-13) @@ -82,16 +82,16 @@ the IDE code tool to work properly (retrieving declarations and navigating in code). -Package: lazarus-ide-1.4.4 +Package: lazarus-ide-1.6 Architecture: any Depends: fp-compiler, - lazarus-ide-gtk-1.4.4 | lazarus-ide-qt-1.4.4, - lazarus-src-1.4.4, + lazarus-ide-gtk-1.6 | lazarus-ide-qt-1.6, + lazarus-src-1.6, ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, gdb, - lcl-1.4.4 + lcl-1.6 Suggests: fp-utils Provides: lazarus-ide Breaks: lazarus-ide (<< 0.9.28.2-13) @@ -115,17 +115,17 @@ . This package contains the common files required to run Lazarus IDE. -Package: lazarus-ide-gtk2-1.4.4 +Package: lazarus-ide-gtk2-1.6 Architecture: any -Depends: lazarus-ide-1.4.4, +Depends: lazarus-ide-1.6, ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, gdb, - lcl-1.4.4 + lcl-1.6 Suggests: fp-utils Provides: lazarus-ide, - lazarus-ide-gtk-1.4.4, + lazarus-ide-gtk-1.6, lazarus-ide-gtk2 Breaks: lazarus-ide (<< 0.9.28.2-13), lazarus-ide-gtk2 (<< 0.9.28.2-13) @@ -150,17 +150,17 @@ . This package contains the GTK+ version of the Lazarus IDE. -Package: lazarus-ide-qt4-1.4.4 +Package: lazarus-ide-qt4-1.6 Architecture: any -Depends: lazarus-ide-1.4.4, +Depends: lazarus-ide-1.6, ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, gdb, - lcl-1.4.4 + lcl-1.6 Suggests: fp-utils Provides: lazarus-ide, - lazarus-ide-qt-1.4.4, + lazarus-ide-qt-1.6, lazarus-ide-qt4 Breaks: lazarus-ide (<< 0.9.28.2-13), lazarus-ide-qt4(<< 0.9.28.2-13) @@ -185,14 +185,14 @@ . This package contains the Qt version of the Lazarus IDE. -Package: lcl-1.4.4 +Package: lcl-1.6 Architecture: any -Depends: lcl-units-1.4.4, - lcl-utils-1.4.4, +Depends: lcl-units-1.6, + lcl-utils-1.6, ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, - lazarus-ide-1.4.4 + lazarus-ide-1.6 Suggests: gdb Provides: lcl Breaks: lcl (<< 0.9.28.2-13) @@ -216,13 +216,13 @@ . This metapackage installs the full LCL and components. -Package: lcl-utils-1.4.4 +Package: lcl-utils-1.6 Architecture: any Depends: fp-compiler, ${misc:Depends}, ${shlibs:Depends} -Recommends: lazarus-ide-1.4.4, - lcl-1.4.4 +Recommends: lazarus-ide-1.6, + lcl-1.6 Provides: lcl-utils Breaks: lcl-utils (<< 0.9.28.2-13) Replaces: lcl-utils (<< 0.9.28.2-13) @@ -246,14 +246,14 @@ This package contains command line tools to ease building LCL based applications. -Package: lcl-units-1.4.4 +Package: lcl-units-1.6 Architecture: any -Depends: lcl-gtk2-1.4.4 (= ${binary:Version}) | lcl-qt4-1.4.4 (= ${binary:Version}), +Depends: lcl-gtk2-1.6 (= ${binary:Version}) | lcl-qt4-1.6 (= ${binary:Version}), ${fpc-abi:Depends}, ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, - lazarus-ide-1.4.4 + lazarus-ide-1.6 Suggests: gdb Provides: lcl-units Breaks: lcl-units (<< 0.9.28.2-13) @@ -277,7 +277,7 @@ . This package contains common components of the LCL. -Package: lcl-nogui-1.4.4 +Package: lcl-nogui-1.6 Architecture: any Depends: fp-units-base, fp-units-fcl, @@ -286,7 +286,7 @@ ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, - lazarus-ide-1.4.4 + lazarus-ide-1.6 Suggests: gdb Provides: lcl-nogui Breaks: lcl-nogui (<< 0.9.28.2-13), @@ -313,18 +313,18 @@ This package contains the part of the LCL for developing non-graphical applications and command line tools. -Package: lcl-gtk2-1.4.4 +Package: lcl-gtk2-1.6 Architecture: any Depends: fp-units-base, fp-units-fcl, fp-units-gtk2, fp-units-rtl, - lcl-nogui-1.4.4, + lcl-nogui-1.6, ${fpc-abi:Depends}, ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, - lazarus-ide-1.4.4 + lazarus-ide-1.6 Suggests: gdb Provides: lcl-gtk, lcl-gtk2 @@ -351,19 +351,19 @@ . This package contains the part of the LCL for developing GTK+ applications. -Package: lcl-qt4-1.4.4 +Package: lcl-qt4-1.6 Architecture: any Depends: fp-units-base, fp-units-fcl, fp-units-rtl, libqt4pas-dev, - lcl-gtk2-1.4.4, - lcl-nogui-1.4.4, + lcl-gtk2-1.6, + lcl-nogui-1.6, ${fpc-abi:Depends}, ${misc:Depends}, ${shlibs:Depends} Recommends: fpc, - lazarus-ide-1.4.4 + lazarus-ide-1.6 Suggests: gdb Provides: lcl-qt, lcl-qt4 @@ -386,11 +386,11 @@ . This package contains the part of the LCL for developing Qt applications. -Package: lazarus-doc-1.4.4 +Package: lazarus-doc-1.6 Section: doc Architecture: all Depends: ${misc:Depends} -Suggests: lazarus-ide-1.4.4 +Suggests: lazarus-ide-1.6 Provides: lazarus-doc Breaks: lazarus-doc (<< 0.9.28.2-13) Replaces: lazarus-doc (<< 0.9.28.2-13) @@ -418,7 +418,7 @@ Package: lazarus Architecture: all -Depends: lazarus-1.4.4, +Depends: lazarus-1.6, ${misc:Depends} Description: IDE for Free Pascal - SDK dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -443,7 +443,7 @@ Package: lazarus-src Architecture: all -Depends: lazarus-src-1.4.4, +Depends: lazarus-src-1.6, ${misc:Depends} Description: IDE for Free Pascal - LCL source code dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -468,7 +468,7 @@ Package: lazarus-ide Architecture: all -Depends: lazarus-ide-1.4.4, +Depends: lazarus-ide-1.6, ${misc:Depends} Description: IDE for Free Pascal - common IDE files dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -492,7 +492,7 @@ Package: lazarus-ide-gtk2 Architecture: all -Depends: lazarus-ide-gtk2-1.4.4, +Depends: lazarus-ide-gtk2-1.6, ${misc:Depends} Description: IDE for Free Pascal - Last GTK+ version dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -516,7 +516,7 @@ Package: lazarus-ide-qt4 Architecture: all -Depends: lazarus-ide-qt4-1.4.4, +Depends: lazarus-ide-qt4-1.6, ${misc:Depends} Description: IDE for Free Pascal - Last Qt version dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -541,7 +541,7 @@ Package: lcl Architecture: all -Depends: lcl-1.4.4, +Depends: lcl-1.6, ${misc:Depends} Description: Lazarus Components Library - LCL dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -565,7 +565,7 @@ Package: lcl-utils Architecture: all -Depends: lcl-utils-1.4.4, +Depends: lcl-utils-1.6, ${misc:Depends} Description: Lazarus Components Library - command line build tools dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -590,7 +590,7 @@ Package: lcl-units Architecture: all -Depends: lcl-units-1.4.4, +Depends: lcl-units-1.6, ${misc:Depends} Description: Lazarus Components Library - backend independent components dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -614,7 +614,7 @@ Package: lcl-nogui Architecture: all -Depends: lcl-nogui-1.4.4, +Depends: lcl-nogui-1.6, ${misc:Depends} Description: Lazarus Components Library - no GUI backend dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -639,7 +639,7 @@ Package: lcl-gtk2 Architecture: all -Depends: lcl-gtk2-1.4.4, +Depends: lcl-gtk2-1.6, ${misc:Depends} Description: Lazarus Components Library - GTK+ backend dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -664,7 +664,7 @@ Package: lcl-qt4 Architecture: all -Depends: lcl-qt4-1.4.4, +Depends: lcl-qt4-1.6, ${misc:Depends} Description: Lazarus Components Library - Qt backend dependency package Lazarus is an IDE to create (graphical and console) applications with Free @@ -690,7 +690,7 @@ Package: lazarus-doc Section: doc Architecture: all -Depends: lazarus-doc-1.4.4, +Depends: lazarus-doc-1.6, ${misc:Depends} Description: IDE for Free Pascal - documentation dependency package Lazarus is an IDE to create (graphical and console) applications with Free diff -Nru lazarus-1.4.4+dfsg/debian/control.in lazarus-1.6+dfsg/debian/control.in --- lazarus-1.4.4+dfsg/debian/control.in 2015-11-05 12:40:07.000000000 +0000 +++ lazarus-1.6+dfsg/debian/control.in 2016-02-27 10:51:03.000000000 +0000 @@ -6,19 +6,19 @@ Carlos Laviola , Abou Al Montacir , Paul Gevers -Standards-Version: 3.9.6 +Standards-Version: 3.9.7 Build-Depends: debhelper (>= 9), - fp-utils, - fpc, - fpc-source, + fp-utils (>= 3), + fpc (>= 3), + fpc-source (>= 3), imagemagick, libgtk2.0-dev, libqt4pas-dev, po-debconf, rdfind, symlinks -Vcs-Git: git://anonscm.debian.org/pkg-pascal/lazarus.git -Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-pascal/lazarus.git +Vcs-Git: https://anonscm.debian.org/git/pkg-pascal/lazarus.git +Vcs-Browser: https://anonscm.debian.org/git/pkg-pascal/lazarus.git Homepage: http://www.lazarus.freepascal.org Package: lazarus${PACKAGESUFFIX} diff -Nru lazarus-1.4.4+dfsg/debian/copyright lazarus-1.6+dfsg/debian/copyright --- lazarus-1.4.4+dfsg/debian/copyright 2015-11-06 11:05:03.000000000 +0000 +++ lazarus-1.6+dfsg/debian/copyright 2016-01-19 20:06:20.000000000 +0000 @@ -28,6 +28,10 @@ 2013-2015 Joost van der Sluis 2014 Jurassic Pork 2014 Lagunov A.A + Andrew Haines + Balázs Székely + Juha Manninen + Ondrej Pokorny License: GPL-2+ Files: debian/* @@ -102,6 +106,7 @@ components/ideintf/macrointf.pas components/ideintf/maskpropedit.pas components/ideintf/newfield.pas + components/ideintf/toolbarintf.pas components/ideintf/treeviewpropedit.pas components/lazcontrols/checkboxthemed.pas components/lazcontrols/dividerbevel.pas @@ -126,14 +131,18 @@ components/lazutils/laz_xmlcfg.pas components/lazutils/laz_xmlstreaming.pas components/lazutils/laz_xmlstreaming.pas + components/lazutils/lookupstringlist.pas components/multithreadprocs/mtpcpu.pas components/multithreadprocs/mtpcpu.pas components/multithreadprocs/mtprocs.pas components/multithreadprocs/mtprocs.pas components/multithreadprocs/mtputils.pas components/multithreadprocs/mtputils.pas + components/opengl/glcocoanscontext.pas components/paradox/regparadox.pp components/paradox/regparadox.pp + components/printers/printer4lazstrconst.pas + components/sparta/dockedformeditor/source/* components/tachart/numlib_fix/ipf.pas components/tachart/numlib_fix/ipf.pas components/tachart/numlib_fix/mdt.pas @@ -150,6 +159,7 @@ ide/findinfilesdlg.pas ide/findreplacedialog.pp ide/inputfiledialog.pas + ide/lazadvancedipc.pp ide/patheditordlg.pas ide/transfermacros.pp ide/wordcompletion.pp @@ -158,15 +168,21 @@ lcl/customdrawncontrols.pas lcl/dbextctrls.pp lcl/dbgrids.pas + lcl/forms/calcform.pas + lcl/forms/timepopup.pas lcl/grids.pas lcl/include/comboex.inc lcl/include/controlconsts.inc + lcl/include/customflowpanel.inc lcl/include/dbdateedit.inc lcl/include/tiffimage.inc lcl/interfacebase.pp lcl/interfaces/cocoa/cocoacaret.pas + lcl/interfaces/cocoa/cocoawschecklst.pas lcl/interfaces/cocoa/cocoawsdialogs.pp lcl/interfaces/cocoa/cocoawsspin.pas + lcl/interfaces/cocoa/cocoa_extra.pas + lcl/interfaces/customdrawn/customdrawn_winextra.pas lcl/interfaces/gtk3/gtk3wsextdlgs.pp lcl/interfaces/qt/qt45.pas lcl/interfaces/qt/qt45.pas @@ -202,6 +218,7 @@ 2004 Radek Cervinka 2004-2012 Mattias Gaertner 2004-2013 Lagunov Aleksey + 2004-2015 Maciej Izak DaThoX FreeSparta.com 2005 Alexandru Alexandrov 2005 Andrew Haines 2005 Darius Blaszijk @@ -215,9 +232,14 @@ 2012 Julio Jiménez Borreguero 2012 Michał Gawrycki 2014 by Lagunov A.A. + 2014-2015 alexs + 2015 Ondrej Pokorny Andreas Hausladen + Antônio Galvão Felipe Monteiro de Carvalho Guilbaud Olivier for FR 2.3x + Juha Manninen + Michael Fuchs License: LGPL-2+ with staticLink exception Files: components/PascalScript/* @@ -245,513 +267,6 @@ License: BSD-2-clause Files: - components/chmhelp/lhelp/lhelpstrconsts.pas - components/chmhelp/packages/idehelp/lazchmhelpregister.pas - components/codetools/basiccodetools.pas - components/codetools/cachecodetools.pas - components/codetools/ccodeparsertool.pas - components/codetools/changedeclarationtool.pas - components/codetools/codeatom.pas - components/codetools/codebeautifier.pas - components/codetools/codecache.pas - components/codetools/codecompletiontemplater.pas - components/codetools/codecompletiontool.pas - components/codetools/codegraph.pas - components/codetools/codeindex.pas - components/codetools/codetemplatestool.pas - components/codetools/codetoolgdbtracer.pas - components/codetools/codetoolmanager.pas - components/codetools/codetoolmemmanager.pas - components/codetools/codetools.inc - components/codetools/codetoolscfgscript.pas - components/codetools/codetoolsconfig.pas - components/codetools/codetoolsfpcmsgs.pas - components/codetools/codetoolsstrconsts.pas - components/codetools/codetoolsstructs.pas - components/codetools/codetree.pas - components/codetools/ctloadlaz.pas - components/codetools/ctunitgraph.pas - components/codetools/ctunitgroupgraph.pas - components/codetools/ctxmlfixfragment.pas - components/codetools/customcodetool.pas - components/codetools/definetemplates.pas - components/codetools/directivestree.pas - components/codetools/directorycacher.pas - components/codetools/eventcodetool.pas - components/codetools/examples/addclass.lpr - components/codetools/examples/addeventmethod.lpr - components/codetools/examples/addfpprofcalls.lpr - components/codetools/examples/addmethod.lpr - components/codetools/examples/addmethodassign.lpr - components/codetools/examples/addwith.lpr - components/codetools/examples/autoindent.pas - components/codetools/examples/changeparamlist.lpr - components/codetools/examples/codecompletion.lpr - components/codetools/examples/completeabstractmethods.lpr - components/codetools/examples/completeblock.pas - components/codetools/examples/finddeclaration.lpr - components/codetools/examples/findunusedunits.lpr - components/codetools/examples/findusedunitreferences.lpr - components/codetools/examples/fixdefinitionorder.lpr - components/codetools/examples/fixfilenames.pas - components/codetools/examples/fixh2pasdirectives.lpr - components/codetools/examples/getexpandedoperand.pas - components/codetools/examples/h2pastest.lpr - components/codetools/examples/identifiercompletion.lpr - components/codetools/examples/parsefpcmsg.pas - components/codetools/examples/ppudependencies.lpr - components/codetools/examples/proctomethod.lpr - components/codetools/examples/reduceifdefs.lpr - components/codetools/examples/removeemptymethods.lpr - components/codetools/examples/removewith.lpr - components/codetools/examples/replaceresourcedirectives.lpr - components/codetools/examples/retypepublishedvars.lpr - components/codetools/examples/runcfgscript.lpr - components/codetools/examples/scanexamples/completion1.pas - components/codetools/examples/scanexamples/simpleunit1.pas - components/codetools/examples/testexpreval.pas - components/codetools/examples/testfpcsrcunitrules.lpr - components/codetools/examples/testunitdirectives.lpr - components/codetools/examples/unitdicttest.lpr - components/codetools/examples/usedbyunits.lpr - components/codetools/expreval.pas - components/codetools/extractproctool.pas - components/codetools/fileprocs.pas - components/codetools/finddeclarationcache.pas - components/codetools/finddeclarationtool.pas - components/codetools/findoverloads.pas - components/codetools/fpmake.pas - components/codetools/h2pastool.pas - components/codetools/ide/addassignmethoddlg.pas - components/codetools/ide/addwithblockdlg.pas - components/codetools/ide/codycopydeclaration.pas - components/codetools/ide/codyctrls.pas - components/codetools/ide/codyfrm.pas - components/codetools/ide/codyidentifiersdlg.pas - components/codetools/ide/codynodeinfodlg.pas - components/codetools/ide/codyregistration.pas - components/codetools/ide/codystrconsts.pas - components/codetools/ide/codyutils.pas - components/codetools/ide/declarevardlg.pas - components/codetools/ide/ppulistdlg.pas - components/codetools/identcompletiontool.pas - components/codetools/keywordfunclists.pas - components/codetools/lfmtrees.pas - components/codetools/linkscanner.pas - components/codetools/methodjumptool.pas - components/codetools/multikeywordlisttool.pas - components/codetools/nonpascalcodetools.pas - components/codetools/otheridentifiertree.pas - components/codetools/pascalparsertool.pas - components/codetools/pascalreadertool.pas - components/codetools/ppucodetools.pas - components/codetools/ppugraph.pas - components/codetools/ppuparser.pas - components/codetools/resourcecodetool.pas - components/codetools/sourcechanger.pas - components/codetools/sourcelog.pas - components/codetools/stdcodetools.pas - components/codetools/unitdictionary.pas - components/custom/customidecomps.pas.template - components/debuggerintf/dbgintfdebuggerbase.pp - components/fpdebug/app/fpd/fpd.lpr - components/fpdebug/app/fpd/fpdcommand.pas - components/fpdebug/app/fpd/fpdglobal.pas - components/fpdebug/app/fpd/fpdloop.pas - components/fpdebug/app/fpd/fpdpeimage.pas - components/fpdebug/app/fpdd/fpdumpdwarf.lpr - components/fpdebug/fpdbgclasses.pp - components/fpdebug/fpdbgdisasx86.pp - components/fpdebug/fpdbgdwarf.pas - components/fpdebug/fpdbgdwarfdataclasses.pas - components/fpdebug/fpdbgloader.pp - components/fpdebug/fpdbgsymbols.pas - components/fpdebug/fpdbgutil.pp - components/fpdebug/fpdbgwinclasses.pas - components/fpdebug/fpdbgwinextra.pp - components/fpdebug/fpimgreaderelf.pas - components/fpdebug/fpimgreaderelftypes.pas - components/fpdebug/fpimgreaderwinpe.pas - components/fpdebug/fppascalparser.pas - components/ideintf/fieldslist.pas - components/ideintf/ideimagesintf.pas - components/ideintf/ideoptionsintf.pas - components/ideintf/projpackintf.pas - components/lazdebuggergdbmi/cmdlinedebugger.pp - components/lazdebuggergdbmi/debugutils.pp - components/lazdebuggergdbmi/gdbmidebugger.pp - components/lazdebuggergdbmi/gdbmimiscclasses.pp - components/lazdebuggergdbmi/gdbmiserverdebugger.pas - components/lazdebuggergdbmi/gdbtypeinfo.pp - components/lazdebuggergdbmi/sshgdbmidebugger.pas - components/pochecker/pocheckermain.pp - components/pochecker/pocheckerxmlconfig.pp - components/printers/unix/cupsdyn.pp - components/sqldb/registersqldb.pas - components/synedit/design/syneditlazdsgn.pas - components/todolist/tododlg.pas - components/todolist/todolist.pas - components/todolist/todoliststrconsts.pas - converter/chgencodingdlg.pas - converter/convcodetool.pas - converter/convertdelphi.pas - converter/convertsettings.pas - converter/lazxmlforms.pas - converter/missingpropertiesdlg.pas - converter/missingunits.pas - converter/usedunits.pas - debugger/breakpointsdlg.pp - debugger/callstackdlg.pp - debugger/debugeventsform.pp - debugger/debugger.pp - debugger/debuggerdlg.pp - debugger/debuggerstrconst.pp - debugger/debugoutputform.pp - debugger/evaluatedlg.pp - debugger/exceptiondlg.pas - debugger/frames/debugger_eventlog_options.pas - debugger/frames/debugger_general_options.pas - debugger/frames/debugger_language_exceptions_options.pas - debugger/frames/debugger_signals_options.pas - debugger/inspectdlg.pas - debugger/localsdlg.pp - debugger/processdebugger.pp - debugger/processlist.pas - debugger/registersdlg.pp - debugger/watchesdlg.pp - debugger/watchpropertydlg.pp - designer/aligncompsdlg.pp - designer/anchoreditor.pas - designer/askcompnamedlg.pas - designer/changeclassdialog.pas - designer/controlselection.pp - designer/customnonformdesigner.pas - designer/designer.pp - designer/designermenu.pp - designer/designerprocs.pas - designer/framedesigner.pas - designer/jitforms.pp - designer/menueditorform.pas - designer/noncontroldesigner.pas - designer/scalecompsdlg.pp - designer/sizecompsdlg.pp - designer/taborderdlg.pas - doceditor/fpdeutil.pp - doceditor/fpdocupdater/fpdocfiles.pas - doceditor/fpdocupdater/mainunit.pas - doceditor/fpdocupdater/unitmove.pas - doceditor/freditor.pp - doceditor/frmbuild.pp - doceditor/frmexample.pp - doceditor/frmlink.pp - doceditor/frmlists.pp - doceditor/frmmain.pp - doceditor/frmmakeskel.pp - doceditor/frmnewnode.pp - doceditor/frmoptions.pp - doceditor/frmsource.pas - doceditor/frmtable.pp - doceditor/frpeditor.pas - doceditor/lazdeopts.pp - doceditor/pgeditor.pp - doceditor/pkedit.pp - examples/address_book/addrbook.lpr - examples/address_book/frmmain.pas - examples/autosize/childsizinglayout/mainunit.pas - examples/bitbtnform.pp - examples/bitbutton.pp - examples/checkbox.pp - examples/codepageconverter/mainunit.pas - examples/combobox.pp - examples/comdialogs.pp - examples/dlgform.pp - examples/edittest.pp - examples/gridexamples/grid_semaphor/example/project1.lpr - examples/gridexamples/grid_semaphor/example/unit1.pas - examples/groupbox.pp - examples/groupboxnested.pas - examples/hello.pp - examples/helloform.pp - examples/helphtml/unit1.pas - examples/htmlhelp_ipro/htmlhelp2unit1.pas - examples/htmlhelp_ipro/htmlhelp2viewer.pas - examples/idequickfix/quickfixdemo1.pas - examples/imgviewer/frmmain.pas - examples/imgviewer/imgview.lpr - examples/listboxtest.pp - examples/listviewtest.pp - examples/loadpicture.pas - examples/memotest.pp - examples/messagedialogs.pp - examples/multithreading/criticalsectionunit1.pas - examples/multithreading/mainunit.pas - examples/multithreading/processmessagesunit1.pas - examples/multithreading/waitforunit1.pas - examples/notebk.pp - examples/notebku.pp - examples/notebooktest.pp - examples/openglcontrol/exampleform.pp - examples/openglcontrol/openglcontrol_demo.pas - examples/progressbar.pp - examples/scanline/unit1.pas - examples/scrollbar.pp - examples/selection.pp - examples/selectionform.pp - examples/speedtest.pp - examples/synchronize.pp - examples/synedit1.pas - examples/testall.pp - examples/testallform.pp - examples/testtools.inc - examples/toolbar.pp - examples/trackbar.pp - examples/widestringstreaming/mainunit.pas - ide/aboutfrm.pas - ide/abstractsmethodsdlg.pas - ide/addtoprojectdlg.pas - ide/applicationbundle.pas - ide/basebuildmanager.pas - ide/basedebugmanager.pas - ide/buildlazdialog.pas - ide/buildmanager.pas - ide/buildmodediffdlg.pas - ide/buildmodesmanager.pas - ide/buildprofilemanager.pas - ide/buildprojectdlg.pas - ide/charactermapdlg.pas - ide/checkcompileropts.pas - ide/checkcompoptsfornewunitdlg.pas - ide/checklfmdlg.pas - ide/cleandirdlg.pas - ide/clipboardhistory.pas - ide/codebrowser.pas - ide/codecontextform.pas - ide/codeexplopts.pas - ide/codeexplorer.pas - ide/codehelp.pas - ide/codemacroprompt.pas - ide/codemacroselect.pas - ide/codetemplatesdlg.pas - ide/codetoolsdefines.pas - ide/codetoolsdefpreview.pas - ide/codetoolsoptions.pas - ide/compatibilityrestrictions.pas - ide/compiler.pp - ide/compileroptions.pp - ide/componentlist.pas - ide/componentpalette.pas - ide/compoptsmodes.pas - ide/condef.pas - ide/customdefines.pas - ide/customformeditor.pp - ide/debugmanager.pas - ide/dialogprocs.pas - ide/diffdialog.pas - ide/diffpatch.pas - ide/diskdiffsdialog.pas - ide/editdefinetree.pas - ide/editoroptions.pp - ide/emptymethodsdlg.pas - ide/encloseselectiondlg.pas - ide/environmentopts.pp - ide/etfpcmsgparser.pas - ide/etmakemsgparser.pas - ide/etmessageframe.pas - ide/etmessageswnd.pas - ide/etquickfixes.pas - ide/etsrceditmarks.pas - ide/extractprocdlg.pas - ide/exttooldialog.pas - ide/exttooleditdlg.pas - ide/exttools.pas - ide/filereferencelist.pas - ide/findoverloadsdlg.pas - ide/findrenameidentifier.pas - ide/findunitdlg.pas - ide/formeditor.pp - ide/fpcsrcscan.pas - ide/fpdoceditwindow.pas - ide/fpdochints.pas - ide/fpdocselectinherited.pas - ide/fpdocselectlink.pas - ide/frames/atom_checkboxes_options.pas - ide/frames/backup_options.pas - ide/frames/codeexplorer_categories_options.pas - ide/frames/codeexplorer_update_options.pas - ide/frames/codeobserver_options.pas - ide/frames/codetools_classcompletion_options.pas - ide/frames/codetools_codecreation_options.pas - ide/frames/codetools_general_options.pas - ide/frames/codetools_identifiercompletion_options.pas - ide/frames/codetools_linesplitting_options.pas - ide/frames/codetools_space_options.pas - ide/frames/codetools_wordpolicy_options.pas - ide/frames/compiler_buildmacro_options.pas - ide/frames/compiler_config_target.pas - ide/frames/compiler_modematrix.pas - ide/frames/compiler_other_options.pas - ide/frames/componentpalette_options.pas - ide/frames/desktop_options.pas - ide/frames/editor_codefolding_options.pas - ide/frames/editor_codetools_options.pas - ide/frames/editor_color_options.pas - ide/frames/editor_display_options.pas - ide/frames/editor_dividerdraw_options.pas - ide/frames/editor_general_misc_options.pas - ide/frames/editor_general_options.pas - ide/frames/editor_indent_options.pas - ide/frames/editor_keymapping_options.pas - ide/frames/editor_markup_options.pas - ide/frames/editor_mouseaction_options.pas - ide/frames/editor_mouseaction_options_advanced.pas - ide/frames/editor_multiwindow_options.pas - ide/frames/files_options.pas - ide/frames/formed_options.pas - ide/frames/fpdoc_options.pas - ide/frames/modematrixctrl.pas - ide/frames/msgwnd_options.pas - ide/frames/naming_options.pas - ide/frames/oi_options.pas - ide/frames/window_options.pas - ide/frmcustomapplicationoptions.pas - ide/gotofrm.pas - ide/helpfpcmessages.pas - ide/helpoptions.pas - ide/idecmdline.pas - ide/idecontexthelpedit.pas - ide/idedefs.pas - ide/idefpcinfo.pas - ide/ideguicmdline.pas - ide/idehelpmanager.pas - ide/ideinfodlg.pas - ide/ideinfoneedbuild.pas - ide/ideoptiondefs.pas - ide/ideoptionsdlg.pas - ide/ideprocs.pp - ide/ideprotocol.pas - ide/idetranslations.pas - ide/idewindowhelp.pas - ide/imexportcompileropts.pas - ide/include/darwin/lazconf.inc - ide/include/freebsd/lazconf.inc - ide/include/haiku/lazconf.inc - ide/include/ide.inc - ide/include/linux/lazconf.inc - ide/include/netbsd/lazconf.inc - ide/include/openbsd/lazconf.inc - ide/include/solaris/lazconf.inc - ide/include/unix/lazbaseconf.inc - ide/include/win/lazbaseconf.inc - ide/include/win32/lazconf.inc - ide/include/win64/lazconf.inc - ide/initialsetupdlgs.pas - ide/initialsetupproc.pas - ide/inputhistory.pas - ide/inspectchksumchangeddlg.pas - ide/invertassigntool.pas - ide/jumphistoryview.pas - ide/keymapping.pp - ide/keymapschemedlg.pas - ide/keymapshortcutdlg.pas - ide/lazarus.pp - ide/lazarusidestrconsts.pas - ide/lazarusmanager.pas - ide/lazbuild.lpr - ide/lazconf.pp - ide/lfmunitresource.pas - ide/macropromptdlg.pas - ide/main.pp - ide/mainbar.pas - ide/mainbase.pas - ide/mainintf.pas - ide/makeresstrdlg.pas - ide/miscoptions.pas - ide/modematrixopts.pas - ide/msgvieweditor.pas - ide/multireplacedlg.pas - ide/newdialog.pas - ide/newprojectdlg.pp - ide/objectlists.pas - ide/procedurelist.pas - ide/progressdlg.pas - ide/progresswnd.pas - ide/project.pp - ide/projectdefs.pas - ide/projecticon.pas - ide/projectinspector.pas - ide/projectresources.pas - ide/projectuserresources.pas - ide/projectwizarddlg.pas - ide/publishmodule.pas - ide/publishprojectdlg.pas - ide/raw_window.pas - ide/redirect_stderr.pas - ide/restrictionbrowser.pas - ide/runparamsopts.pas - ide/searchfrm.pas - ide/searchresultview.pp - ide/showcompileropts.pas - ide/sortselectiondlg.pas - ide/sourceeditor.pp - ide/sourceeditprocs.pas - ide/sourcefilemanager.pas - ide/sourcemarks.pas - ide/sourcesyneditor.pas - ide/splash.pp - ide/srcedithintfrm.pas - ide/startlazarus.lpr - ide/sysvaruseroverridedlg.pas - ide/unitdependencies.pas - ide/unitinfodlg.pp - ide/unusedunitsdlg.pas - ide/viewunit_dlg.pp - ide/w32manifest.pas - ide/w32versioninfo.pas - packager/adddirtopkgdlg.pas - packager/addfiletoapackagedlg.pas - packager/addtopackagedlg.pas - packager/basepkgmanager.pas - packager/brokendependenciesdlg.pas - packager/cleanpkgdeps.pas - packager/confirmpkglistdlg.pas - packager/installpkgsetdlg.pas - packager/lpkcache.pas - packager/missingpkgfilesdlg.pas - packager/newpkgcomponentdlg.pas - packager/oldcustomcompadddlg.pas - packager/oldcustomcompdlg.pas - packager/openinstalledpkgdlg.pas - packager/packagedefs.pas - packager/packageeditor.pas - packager/packagelinks.pas - packager/packagesystem.pas - packager/pkggraphexplorer.pas - packager/pkglinksdlg.pas - packager/pkgmanager.pas - packager/pkgvirtualuniteditor.pas - packager/registration/registerfcl.pas - tools/apiwizz/apiwizard.pp - tools/apiwizz/apiwizz.pp - tools/glazres/glazresmain.pp - tools/lazdatadesktop/conneditor.pp - tools/lazdatadesktop/datapanel.pp - tools/lazdatadesktop/dicteditor.pp - tools/lazdatadesktop/frmgeneratesql.pp - tools/lazdatadesktop/frmimportdd.pp - tools/lazdatadesktop/frmmain.pp - tools/lazdatadesktop/frmsqlconnect.pp - tools/lazdatadesktop/querypanel.pp - tools/lazres.pp - tools/lrstolfm.lpr - tools/svn2revisioninc.pas - tools/updatepofiles.pas -Copyright: - Lazarus team - Andrew Haines - 2005 Mattias Gaertner -License: GPL-2+ - -Files: components/IndustrialStuff/source/indcyBaseLed.pas components/IndustrialStuff/source/indcyClasses.pas components/IndustrialStuff/source/indcyGraphics.pas @@ -970,7 +485,6 @@ components/synedit/synedittextbase.pas components/synedit/synedittextbidichars.pas components/synedit/synedittextbuffer.pp - components/synedit/synedittextdoublewidthchars.pas components/synedit/synedittextsystemcharwidth.pas components/synedit/synedittexttabexpander.pas components/synedit/synedittexttrimmer.pas @@ -992,6 +506,7 @@ components/synedit/synhighlightermulti.pas components/synedit/synhighlighterpas.pp components/synedit/synhighlighterperl.pas + components/synedit/synhighlighterpike.pas components/synedit/synhighlighterphp.pas components/synedit/synhighlighterpython.pas components/synedit/synhighlightersql.pas @@ -1017,8 +532,22 @@ 2001 Flávio Etrusco 2009 Martn Friebe Lazarus team + Michael Trier License: GPL-2+ or MPL-1.1 +Files: examples/ReSizeImageDemo/unit1.pas +Copyright: 2015 Mike Sapsard +License: GPL-3 + On Debian systems, the complete text of version 3 of the GNU General + Public License can be found in `/usr/share/common-licenses/GPL-3'. + +Files: components/synedit/synedittextdoublewidthchars.pas +Copyright: + Lazarus team + synedit + 1991-2014 Unicode, Inc. +License: GPL-2+ or MPL-1.1, and unicode + Files: components/IndustrialStuff/source/lednumber.pas components/synedit/synedithighlighter.pp @@ -1061,9 +590,6 @@ components/compilers/c/lazcutil.pas components/datadict/ldd_consts.pas components/dbexport/sdb_consts.pas - components/editortoolbar/editortoolbar_impl.pas - components/editortoolbar/edttbconfigfrm.pas - components/editortoolbar/jumpto_impl.pas components/externhelp/externhelpfrm.pas components/fpcunit/console/consoletestrunner.pas components/fpcunit/guitestrunner.pas @@ -1132,6 +658,8 @@ examples/exploremenu/frmexploremenu.pas examples/gridexamples/columneditors/main.pas examples/gridexamples/columneditors/stringgrideditor.lpr + ide/editortoolbarstatic.pas + ide/toolbarconfig.pas lcl/comboex.pas lcl/defaulttranslator.pas lcl/interfaces/gtk3/gtk3bindings/lazpangocairo1.pas @@ -1147,7 +675,7 @@ 2004 Luiz Américo Pereira Câmara 2004 Olivier GUILBAUD 2004-2007 Vincent Snijders - 2004-2014 Dean Zobec, contributors + 2004-2015 Dean Zobec, contributors 2004-2015 Lazarus Developers Team 2004-2015 V.I.Volchenko 2005-2013 Michael Van Canneyt @@ -1158,7 +686,7 @@ 2010-2013 Lagunov Aleksey 2011 Darius Blaszyk 2011 Ludo Brands - 2012-2014 alexs + 2012-2015 alexs 2013 Jesús Reyes Aguilar 2013 Theo 2013 Windsurfer contact via fpc/Lazarus forum @@ -1259,10 +787,7 @@ components/lazutils/tttypes.pas Copyright: 1996-1997 David Turner, Robert Wilhelm and Werner Lemberg -Comment: The header in the relevant files only mentions the FreeType license - which is "a BSD-style license with a credit clause and thus compatible with - the GNU Public License (GPL) version 3, but not with the GPL version 2." - However, the whole FreeType project is now also licensed under GPL-2+. +Comment: The whole FreeType project is now also licensed under GPL-2+. License: FreeType The FreeType Project LICENSE ---------------------------- @@ -1787,7 +1312,7 @@ Reluctantly he granted that. Althought the e-mail exchange was not on a publically archived list (albeit multiple requests) the current upstream website http://www.soft-gems.net/index.php/controls/windows-xp-theme-manager - now (2015-06-28) notes explicitely: + now (2015-06-28) notes explicitly: """ Update June 2015: the Free Pascal project asked me for a license change to make the package compatible with their software. So I decided to switch to the @@ -2743,3 +2268,41 @@ limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +License: unicode + COPYRIGHT AND PERMISSION NOTICE + . + Copyright © 1991-2015 Unicode, Inc. All rights reserved. + Distributed under the Terms of Use in + http://www.unicode.org/copyright.html. + . + Permission is hereby granted, free of charge, to any person obtaining a copy + of the Unicode data files and any associated documentation (the "Data Files") + or Unicode software and any associated documentation (the "Software") to deal + in the Data Files or Software without restriction, including without + limitation the rights to use, copy, modify, merge, publish, distribute, and/or + sell copies of the Data Files or Software, and to permit persons to whom the + Data Files or Software are furnished to do so, provided that + . + (a) this copyright and permission notice appear with all copies of the Data + Files or Software, + (b) this copyright and permission notice appear in associated documentation, + and + (c) there is clear notice in each modified Data File or in the Software as + well as in the documentation associated with the Data File(s) or Software that + the data or software has been modified. + . + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD + PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL + DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE + DATA FILES OR SOFTWARE. + . + Except as contained in this notice, the name of a copyright holder shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in these Data Files or Software without prior written authorization of the + copyright holder. diff -Nru lazarus-1.4.4+dfsg/debian/overrides/lazarus-ide lazarus-1.6+dfsg/debian/overrides/lazarus-ide --- lazarus-1.4.4+dfsg/debian/overrides/lazarus-ide 2015-11-05 12:40:07.000000000 +0000 +++ lazarus-1.6+dfsg/debian/overrides/lazarus-ide 2016-01-19 20:06:20.000000000 +0000 @@ -1,4 +1,4 @@ -# False spell error detectios +# False spell error detections lazarus-ide: spelling-error-in-binary * Childs Children # This package is compiled by the FPC and Lazarus. These compilers don't have diff -Nru lazarus-1.4.4+dfsg/debian/overrides/lcl-utils lazarus-1.6+dfsg/debian/overrides/lcl-utils --- lazarus-1.4.4+dfsg/debian/overrides/lcl-utils 2015-11-05 12:40:07.000000000 +0000 +++ lazarus-1.6+dfsg/debian/overrides/lcl-utils 2016-01-19 20:06:20.000000000 +0000 @@ -1,5 +1,10 @@ -# False spell error detectios +# False spell error detections lcl-utils: spelling-error-in-binary */lazbuild Childs Children lcl-utils: spelling-error-in-binary */tools/lazres Childs Children lcl-utils: spelling-error-in-binary */tools/lrstolfm Childs Children lcl-utils: statically-linked-binary + +# This package is compiled by FPC and Lazarus. These compilers don't have +# hardening flags yet, so ignoring these lintian warnings for now +# Paul Gevers , 27 Dec 2015 +lcl-utils: hardening-no-fortify-functions diff -Nru lazarus-1.4.4+dfsg/debian/patches/add_sh-bang_to_sh_scripts.patch lazarus-1.6+dfsg/debian/patches/add_sh-bang_to_sh_scripts.patch --- lazarus-1.4.4+dfsg/debian/patches/add_sh-bang_to_sh_scripts.patch 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/debian/patches/add_sh-bang_to_sh_scripts.patch 2016-01-19 20:06:20.000000000 +0000 @@ -0,0 +1,43 @@ +Description: these shell scripts are missing a sh-bang +Author: Paul Gevers +Forwarded: http://bugs.freepascal.org/view.php?id=29324 + +Index: lazarus/components/lazreport/images/package_images.sh +=================================================================== +--- lazarus.orig/components/lazreport/images/package_images.sh ++++ lazarus/components/lazreport/images/package_images.sh +@@ -1,2 +1,3 @@ ++#!/bin/sh + ../../../tools/lazres ../source/lr_register.res @Package_images.txt +-../../../tools/lazres ../source/bullets.res bitmaps/bulletgray.png bitmaps/bulletgreen.png designer/lrd_ins_fields.bmp +\ No newline at end of file ++../../../tools/lazres ../source/bullets.res bitmaps/bulletgray.png bitmaps/bulletgreen.png designer/lrd_ins_fields.bmp +Index: lazarus/components/lazreport/source/addons/DialogControls/resources/mk_res.sh +=================================================================== +--- lazarus.orig/components/lazreport/source/addons/DialogControls/resources/mk_res.sh ++++ lazarus/components/lazreport/source/addons/DialogControls/resources/mk_res.sh +@@ -1,2 +1,3 @@ ++#!/bin/sh + ../../../../../../tools/lazres ../lrdbdialogcontrols_img.res tlrdblookupcombobox.bmp + ../../../../../../tools/lazres ../lrdialogcontrols_img.res @lrdialogcontrols_img.txt +Index: lazarus/components/lazreport/source/addons/lrEmailExport/images/mk_res.sh +=================================================================== +--- lazarus.orig/components/lazreport/source/addons/lrEmailExport/images/mk_res.sh ++++ lazarus/components/lazreport/source/addons/lrEmailExport/images/mk_res.sh +@@ -1 +1,2 @@ ++#!/bin/sh + ../../../../../../tools/lazres ../lremailexport.res @img.txt +Index: lazarus/components/lazreport/source/addons/lrOfficeImport/resources/mk_res.sh +=================================================================== +--- lazarus.orig/components/lazreport/source/addons/lrOfficeImport/resources/mk_res.sh ++++ lazarus/components/lazreport/source/addons/lrOfficeImport/resources/mk_res.sh +@@ -1 +1,2 @@ ++#!/bin/sh + ../../../../../../tools/lazres ../lr_officeimport_img.res @lrimport_img.txt +Index: lazarus/components/lazreport/source/addons/lrspreadsheetexport/images/mk_res.sh +=================================================================== +--- lazarus.orig/components/lazreport/source/addons/lrspreadsheetexport/images/mk_res.sh ++++ lazarus/components/lazreport/source/addons/lrspreadsheetexport/images/mk_res.sh +@@ -1 +1,2 @@ ++#!/bin/sh + ../../../../../../tools/lazres ../lrspreadsheetexp.res @img.txt diff -Nru lazarus-1.4.4+dfsg/debian/patches/series lazarus-1.6+dfsg/debian/patches/series --- lazarus-1.4.4+dfsg/debian/patches/series 2015-11-05 15:41:38.000000000 +0000 +++ lazarus-1.6+dfsg/debian/patches/series 2016-01-27 20:24:11.000000000 +0000 @@ -1,3 +1,4 @@ default_config.diff lcl-with-multple-widget-sets.diff drop_carbon_from_Makefiles.patch +add_sh-bang_to_sh_scripts.patch diff -Nru lazarus-1.4.4+dfsg/debian/rules lazarus-1.6+dfsg/debian/rules --- lazarus-1.4.4+dfsg/debian/rules 2015-11-08 04:48:01.000000000 +0000 +++ lazarus-1.6+dfsg/debian/rules 2016-01-19 20:06:20.000000000 +0000 @@ -71,13 +71,6 @@ LDFLAGS=$(strip $(shell dpkg-buildflags --get LDFLAGS | sed -e 's/-Wl,//g' -e 's/,/ /g')) -# Temporarily disable '-z relro' for armel and armhf builds -# to work around problem of builds stalling (bug #793991) -DEB_HOST_ARCH ?=$(shell dpkg-architecture -qDEB_HOST_ARCH) -ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) -LDFLAGS:=$(shell echo $(LDFLAGS) | sed -e 's/-z relro//g') -endif - # Until we switch to shorthand dh, we need to set this ourselves for # reproducible builds export SOURCE_DATE_EPOCH = $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s) diff -Nru lazarus-1.4.4+dfsg/debian/TODO lazarus-1.6+dfsg/debian/TODO --- lazarus-1.4.4+dfsg/debian/TODO 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/debian/TODO 2016-01-19 20:06:20.000000000 +0000 @@ -0,0 +1,4 @@ +The documentation was missing on the build with 3.0.0.. need to investigate. + +* Send patches upstream: + - lcl-with-multple-widget-sets.diff diff -Nru lazarus-1.4.4+dfsg/debugger/assemblerdlg.pp lazarus-1.6+dfsg/debugger/assemblerdlg.pp --- lazarus-1.4.4+dfsg/debugger/assemblerdlg.pp 2014-11-22 00:04:14.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/assemblerdlg.pp 2016-01-18 23:11:29.000000000 +0000 @@ -73,11 +73,11 @@ procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormResize(Sender: TObject); procedure pbAsmClick(Sender: TObject); - procedure pbAsmMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); - procedure pbAsmMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); - procedure pbAsmMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, - Y: Integer); - procedure pbAsmMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); + procedure pbAsmMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; {%H-}X, Y: Integer); + procedure pbAsmMouseMove(Sender: TObject; {%H-}Shift: TShiftState; {%H-}X, Y: Integer); + procedure pbAsmMouseUp(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, + {%H-}Y: Integer); + procedure pbAsmMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; {%H-}MousePos: TPoint; var Handled: Boolean); procedure pbAsmPaint(Sender: TObject); procedure sbHorizontalChange(Sender: TObject); procedure sbVerticalChange(Sender: TObject); @@ -117,8 +117,8 @@ FImgSourceLine: Integer; FImgNoSourceLine: Integer; - procedure BreakPointChanged(const ASender: TIDEBreakPoints; - const ABreakpoint: TIDEBreakPoint); + procedure BreakPointChanged(const {%H-}ASender: TIDEBreakPoints; + const {%H-}ABreakpoint: TIDEBreakPoint); function GetBreakpointFor(AnAsmDlgLineEntry: TAsmDlgLineEntry): TIDEBreakPoint; procedure CheckImageIndexFor(var AnAsmDlgLineEntry: TAsmDlgLineEntry); procedure DoDebuggerDestroyed(Sender: TObject); @@ -141,7 +141,7 @@ procedure SetSelection(ALine: Integer; AMakeVisible: Boolean; AKeepSelEnd: Boolean = False); procedure SetLineCount(ALineCount: Integer); procedure SetTopLine(ALine: Integer); - function IndexOfAddr(const AAddr: TDBGPtr): Integer; + function IndexOfAddr(const AnAddr: TDBGPtr): Integer; procedure UpdateLocation(const AAddr: TDBGPtr); procedure DoEditorOptsChanged(Sender: TObject; Restore: boolean); protected @@ -408,6 +408,7 @@ var Handled: Boolean; begin + Handled:=false; if Assigned(OnProcessCommand) then OnProcessCommand(Self, ecStepOverInstr, Handled); end; @@ -421,8 +422,8 @@ function TAssemblerDlg.GetBreakpointFor(AnAsmDlgLineEntry: TAsmDlgLineEntry): TIDEBreakPoint; begin - if BreakPoints = nil then exit; Result := nil; + if BreakPoints = nil then exit; case AnAsmDlgLineEntry.State of lmsStatement: Result := BreakPoints.Find(AnAsmDlgLineEntry.Addr); lmsSource: Result := BreakPoints.Find(AnAsmDlgLineEntry.FullFileName, AnAsmDlgLineEntry.SourceLine); @@ -450,6 +451,7 @@ var Handled: Boolean; begin + Handled:=false; if Assigned(OnProcessCommand) then OnProcessCommand(Self, ecStepIntoInstr, Handled); end; @@ -801,11 +803,11 @@ UpdateView; end; -function TAssemblerDlg.IndexOfAddr(const AAddr: TDBGPtr): Integer; +function TAssemblerDlg.IndexOfAddr(const AnAddr: TDBGPtr): Integer; begin Result := length(FLineMap) - 1; while Result >= 0 do begin - if (FLineMap[Result].State = lmsStatement) and (FLineMap[Result].Addr = FCurrentLocation) + if (FLineMap[Result].State = lmsStatement) and (FLineMap[Result].Addr = AnAddr) then exit; dec(Result); end; @@ -839,6 +841,7 @@ var TM: TTextMetric; begin + if Restore then exit; pbAsm.Font.Size := EditorOpts.EditorFontSize; pbAsm.Font.Name := EditorOpts.EditorFont; if EditorOpts.DisableAntialiasing then @@ -846,12 +849,13 @@ else pbAsm.Font.Quality := fqDefault; - GetTextMetrics(pbAsm.Canvas.Handle, TM); - FCharWidth := TM.tmMaxCharWidth; // EditorOpts.ExtraCharSpacing + - sbHorizontal.SmallChange := FCHarWidth; - - FLineHeight := Max(6,EditorOpts.ExtraLineSpacing + TM.tmHeight); - SetLineCount(pbAsm.Height div FLineHeight); + if GetTextMetrics(pbAsm.Canvas.Handle, TM{%H-}) then + begin + FCharWidth := TM.tmMaxCharWidth; // EditorOpts.ExtraCharSpacing + + sbHorizontal.SmallChange := FCharWidth; + FLineHeight := Max(6,EditorOpts.ExtraLineSpacing + TM.tmHeight); + SetLineCount(pbAsm.Height div FLineHeight); + end; end; procedure TAssemblerDlg.SetLocation(ADebugger: TDebuggerIntf; const AAddr: TDBGPtr; diff -Nru lazarus-1.4.4+dfsg/debugger/breakpointsdlg.pp lazarus-1.6+dfsg/debugger/breakpointsdlg.pp --- lazarus-1.4.4+dfsg/debugger/breakpointsdlg.pp 2014-06-15 11:52:27.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/breakpointsdlg.pp 2015-09-09 11:02:48.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: breakpointsdlg.pp 45521 2014-06-15 11:52:27Z juha $ } +{ $Id: breakpointsdlg.pp 49795 2015-09-09 11:02:48Z martin $ } { ---------------------------------------------- breakpointsdlg.pp - Overview of breakpoints ---------------------------------------------- @created(Fri Dec 14st WET 2001) - @lastmod($Date: 2014-06-15 13:52:27 +0200 (So, 15 Jun 2014) $) + @lastmod($Date: 2015-09-09 13:02:48 +0200 (Mi, 09 Sep 2015) $) @author(Shane Miller) @author(Marc Weustink ) @@ -38,8 +38,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Dialogs, - IDEWindowIntf, DebuggerStrConst, Menus, ComCtrls, IDEProcs, Debugger, DebuggerDlg, ActnList, MainBase, + Classes, SysUtils, LazFileUtils, Forms, Controls, Dialogs, + IDEWindowIntf, DebuggerStrConst, Menus, ComCtrls, Debugger, DebuggerDlg, ActnList, MainBase, IDEImagesIntf, DbgIntfDebuggerBase, DbgIntfMiscClasses, SourceEditor, MainIntf; type @@ -114,7 +114,7 @@ procedure BreakpointsDlgCREATE(Sender: TObject); procedure lvBreakPointsClick(Sender: TObject); procedure lvBreakPointsDBLCLICK(Sender: TObject); - procedure lvBreakPointsSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure lvBreakPointsSelectItem(Sender: TObject; {%H-}Item: TListItem; {%H-}Selected: Boolean); procedure mnuPopupPopup(Sender: TObject); procedure popDeleteAllSameSourceCLICK(Sender: TObject); procedure popDisableAllSameSourceCLICK(Sender: TObject); @@ -129,11 +129,11 @@ FBaseDirectory: string; FStates: TBreakPointsDlgStates; FLockActionUpdate: Integer; - procedure BreakPointAdd(const ASender: TIDEBreakPoints; + procedure BreakPointAdd(const {%H-}ASender: TIDEBreakPoints; const ABreakpoint: TIDEBreakPoint); procedure BreakPointUpdate(const ASender: TIDEBreakPoints; const ABreakpoint: TIDEBreakPoint); - procedure BreakPointRemove(const ASender: TIDEBreakPoints; + procedure BreakPointRemove(const {%H-}ASender: TIDEBreakPoints; const ABreakpoint: TIDEBreakPoint); procedure SetBaseDirectory(const AValue: string); procedure popSetGroupItemClick(Sender: TObject); @@ -874,6 +874,7 @@ case ABreakpoint.WatchScope of wpsGlobal: s:= lisWatchScopeGlobal; wpsLocal: s:= lisWatchScopeLocal; + else s := ''; end; s := s +' / '; case ABreakpoint.WatchKind of @@ -927,8 +928,9 @@ CurBreakPoint: TIDEBreakPoint; Msg: String; List: TList; - n: Integer; + n, Idx: Integer; begin + Idx := lvBreakPoints.ItemIndex; Item:=lvBreakPoints.Selected; if Item = nil then exit; @@ -949,25 +951,29 @@ if lvBreakPoints.SelCount = 1 then begin TBaseBreakPoint(Item.Data).ReleaseReference; - Exit; - end; - - List := TList.Create; - for n := 0 to lvBreakPoints.Items.Count - 1 do - begin - Item := lvBreakPoints.Items[n]; - if Item.Selected - then List.Add(Item.Data); - end; + end + else begin + List := TList.Create; + for n := 0 to lvBreakPoints.Items.Count - 1 do + begin + Item := lvBreakPoints.Items[n]; + if Item.Selected + then List.Add(Item.Data); + end; - lvBreakPoints.BeginUpdate; - try - for n := 0 to List.Count - 1 do - TBaseBreakPoint(List[n]).ReleaseReference; - finally - lvBreakPoints.EndUpdate; + lvBreakPoints.BeginUpdate; + try + for n := 0 to List.Count - 1 do + TBaseBreakPoint(List[n]).ReleaseReference; + finally + lvBreakPoints.EndUpdate; + end; + List.Free; end; - List.Free; + if Idx > lvBreakPoints.Items.Count - 1 then + Idx := lvBreakPoints.Items.Count - 1; + if Idx >= 0 then + lvBreakPoints.ItemIndex := Idx; end; procedure TBreakPointsDlg.JumpToCurrentBreakPoint; diff -Nru lazarus-1.4.4+dfsg/debugger/breakpropertydlg.pas lazarus-1.6+dfsg/debugger/breakpropertydlg.pas --- lazarus-1.4.4+dfsg/debugger/breakpropertydlg.pas 2014-02-16 14:29:53.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/breakpropertydlg.pas 2015-03-10 14:51:21.000000000 +0000 @@ -54,10 +54,10 @@ rgWatchScope: TPanel; procedure btnHelpClick(Sender: TObject); procedure btnOKClick(Sender: TObject); - procedure BreakPointRemove(const ASender: TIDEBreakPoints; - const ABreakpoint: TIDEBreakPoint); - procedure BreakPointUpdate(const ASender: TIDEBreakPoints; + procedure BreakPointRemove(const {%H-}ASender: TIDEBreakPoints; const ABreakpoint: TIDEBreakPoint); + procedure BreakPointUpdate(const {%H-}ASender: TIDEBreakPoints; + const {%H-}ABreakpoint: TIDEBreakPoint); procedure chkDisableGroupsChange(Sender: TObject); procedure chkEnableGroupsChange(Sender: TObject); procedure chkEvalExpressionChange(Sender: TObject); diff -Nru lazarus-1.4.4+dfsg/debugger/callstackdlg.pp lazarus-1.6+dfsg/debugger/callstackdlg.pp --- lazarus-1.4.4+dfsg/debugger/callstackdlg.pp 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/callstackdlg.pp 2015-06-11 00:00:17.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: callstackdlg.pp 49314 2015-06-11 00:13:46Z maxim $ } +{ $Id: callstackdlg.pp 49312 2015-06-11 00:00:17Z maxim $ } { ---------------------------------------------- callstackdlg.pp - Overview of the callstack ---------------------------------------------- @created(Sun Apr 28th WET 2002) - @lastmod($Date: 2015-06-11 02:13:46 +0200 (Do, 11 Jun 2015) $) + @lastmod($Date: 2015-06-11 02:00:17 +0200 (Do, 11 Jun 2015) $) @author(Marc Weustink ) This unit contains the Call Stack debugger dialog. @@ -128,7 +128,7 @@ function GetSelectedThreads(Snap: TSnapshot): TIdeThreads; function GetSelectedCallstack: TIdeCallStack; procedure DoBreakPointsChanged; override; - procedure BreakPointChanged(const ASender: TIDEBreakPoints; const ABreakpoint: TIDEBreakPoint); + procedure BreakPointChanged(const ASender: TIDEBreakPoints; const {%H-}ABreakpoint: TIDEBreakPoint); procedure CallStackChanged(Sender: TObject); procedure CallStackCurrent(Sender: TObject); function ColSizeGetter(AColId: Integer; var ASize: Integer): Boolean; @@ -268,8 +268,16 @@ end; procedure TCallStackDlg.UpdateView; + function LastDelimPos(const FileName: string): Integer; + begin + Result := Length(FileName); + if FileName[Result] in ['/', '\'] then + exit(-1); + while (Result > 0) and not (FileName[Result] in ['/', '\']) do + Dec(Result); + end; var - n: Integer; + i, n: Integer; Item: TListItem; Entry: TIdeCallStackEntry; First, Count, MaxCnt: Integer; @@ -369,10 +377,23 @@ Item.ImageIndex := GetImageIndex(Entry); Item.SubItems[0] := IntToStr(Entry.Index); Source := Entry.Source; + if (Source = '') and (Entry.UnitInfo <> nil) and (Entry.UnitInfo.LocationFullFile <> '') then + Source := Entry.UnitInfo.LocationFullFile; if Source = '' then // we do not have a source file => just show an adress - Source := ':' + IntToHex(Entry.Address, 8); + Source := ':' + IntToHex(Entry.Address, 8) + else begin + i := LastDelimPos(Source); + if i > 1 then + Source := copy(Source, i+1, length(Source)) + ' (' + copy(Source, 1, i) + ')' + end; Item.SubItems[1] := Source; - Item.SubItems[2] := IntToStr(Entry.Line); // TODO: if editor is open, map line SrcEdit.DebugToSourceLine + if (Entry.Line = 0) and (Entry.UnitInfo <> nil) and (Entry.UnitInfo.SrcLine > 0) then + Item.SubItems[2] := '~'+IntToStr(Entry.UnitInfo.SrcLine) + else + if Entry.Line > 0 then + Item.SubItems[2] := IntToStr(Entry.Line) // TODO: if editor is open, map line SrcEdit.DebugToSourceLine + else + Item.SubItems[2] := '-'; Item.SubItems[3] := GetFunction(Entry); end; end; @@ -529,6 +550,7 @@ idx := FViewStart + Item.Index; if idx >= GetSelectedCallstack.CountLimited(idx+1) then Exit; Entry := GetSelectedCallstack.Entries[idx]; + if Entry.Line <= 0 then exit; if not DebugBoss.GetFullFilename(Entry.UnitInfo, FileName, False) then Exit; BreakPoint := BreakPoints.Find(FileName, Entry.Line); diff -Nru lazarus-1.4.4+dfsg/debugger/debugattachdialog.pas lazarus-1.6+dfsg/debugger/debugattachdialog.pas --- lazarus-1.4.4+dfsg/debugger/debugattachdialog.pas 2015-01-09 11:33:13.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/debugattachdialog.pas 2015-11-19 22:39:15.000000000 +0000 @@ -8,10 +8,17 @@ interface uses - Classes, SysUtils, FileUtil, DbgIntfDebuggerBase, Forms, Controls, Graphics, Dialogs, - StdCtrls, ComCtrls, LCLType, Contnrs, LazarusIDEStrConsts, BaseDebugManager, Debugger; + Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, ComCtrls, + LCLType, LazFileUtils, DbgIntfDebuggerBase, + LazarusIDEStrConsts, BaseDebugManager, Debugger; type + {$IFDEF darwin} + TMyDummyObcCClass = objcclass(NSObject) + // dummy class to get rid of FPC messages unit objcbase not used + b: BOOL; + end; + {$ENDIF} { TDebugAttachDialogForm } @@ -24,12 +31,12 @@ procedure btnRefreshClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure lvProcessesChange(Sender: TObject; Item: TListItem; - Change: TItemChange); + {%H-}Change: TItemChange); procedure lvProcessesColumnClick(Sender: TObject; Column: TListColumn); procedure lvProcessesData(Sender: TObject; Item: TListItem); procedure lvProcessesDblClick(Sender: TObject); procedure lvProcessesKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); + {%H-}Shift: TShiftState); private FPidString: string; FList: TRunningProcessInfoList; @@ -80,7 +87,7 @@ Exit; try - FillByte(pe, SizeOf(pe), 0); + FillByte(pe{%H-}, SizeOf(pe), 0); pe.dwSize := SizeOf(pe); if Process32FirstW(hShot, pe) then repeat @@ -167,6 +174,7 @@ StrRange.location := 0; StrRange.length := CFStringGetLength(AString); + StrSize:=0; CFStringGetBytes(AString, StrRange, Encoding, Ord('?'), False, nil, 0, StrSize); SetLength(Result, StrSize); diff -Nru lazarus-1.4.4+dfsg/debugger/debugeventsform.pp lazarus-1.6+dfsg/debugger/debugeventsform.pp --- lazarus-1.4.4+dfsg/debugger/debugeventsform.pp 2014-02-16 14:29:53.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/debugeventsform.pp 2015-07-04 23:08:00.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: debugeventsform.pp 44097 2014-02-16 14:29:53Z martin $ } +{ $Id: debugeventsform.pp 49494 2015-07-04 23:08:00Z juha $ } { ------------------------------------------ debugeventsform.pp - Shows target output ------------------------------------------ @created(Wed Mar 1st 2010) - @lastmod($Date: 2014-02-16 15:29:53 +0100 (So, 16 Feb 2014) $) + @lastmod($Date: 2015-07-05 01:08:00 +0200 (So, 05 Jul 2015) $) @author Lazarus Project *************************************************************************** @@ -35,7 +35,7 @@ uses Classes, SysUtils, Controls, ComCtrls, ActnList, BaseDebugManager, IDEWindowIntf, - StdActns, ClipBrd, Menus, Dialogs, FileUtil, Debugger, DebuggerDlg, + StdActns, ClipBrd, Menus, Dialogs, LazFileUtils, Debugger, DebuggerDlg, LazarusIDEStrConsts, EnvironmentOpts, InputHistory, IDEImagesIntf, LazIDEIntf, DbgIntfDebuggerBase, debugger_eventlog_options; @@ -65,7 +65,7 @@ procedure EditCopy1Update(Sender: TObject); procedure tvFilteredEventsAdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; - var PaintImages, DefaultDraw: Boolean); + var {%H-}PaintImages, DefaultDraw: Boolean); private function GetFilter: TDBGEventCategories; private diff -Nru lazarus-1.4.4+dfsg/debugger/debuggerdlg.pp lazarus-1.6+dfsg/debugger/debuggerdlg.pp --- lazarus-1.4.4+dfsg/debugger/debuggerdlg.pp 2014-03-29 22:32:48.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/debuggerdlg.pp 2015-07-04 23:08:00.000000000 +0000 @@ -1,11 +1,11 @@ -{ $Id: debuggerdlg.pp 44553 2014-03-29 22:32:48Z martin $ } +{ $Id: debuggerdlg.pp 49494 2015-07-04 23:08:00Z juha $ } { ---------------------------------------- DebuggerDlg.pp - Base class for all debugger related forms ---------------------------------------- @created(Wed Mar 16st WET 2001) - @lastmod($Date: 2014-03-29 23:32:48 +0100 (Sa, 29 Mär 2014) $) + @lastmod($Date: 2015-07-05 01:08:00 +0200 (So, 05 Jul 2015) $) @author(Marc Weustink ) This unit contains the base class for all debugger related dialogs. @@ -37,9 +37,9 @@ interface uses - Classes, Forms, Controls, IDEProcs, FileUtil, LCLProc, LazLoggerBase, Debugger, - IDEImagesIntf, MainIntf, EditorOptions, IDECommands, DbgIntfDebuggerBase, DbgIntfMiscClasses, - BaseDebugManager; + Classes, Forms, Controls, IDEProcs, LazFileUtils, LCLProc, LazLoggerBase, Debugger, + IDEImagesIntf, MainIntf, EditorOptions, IDECommands, DbgIntfDebuggerBase, + DbgIntfMiscClasses, BaseDebugManager; type @@ -367,6 +367,7 @@ if DebugBoss.GetFullFilename(AnUnitInfo, Filename, False) then begin debugln(DBG_LOCATION_INFO, ['JumpToUnitSource Filename=', Filename]); ok := false; + if ALine <= 0 then ALine := AnUnitInfo.SrcLine; if FilenameIsAbsolute(Filename) then ok := MainIDEInterface.DoJumpToSourcePosition(Filename, 0, ALine, 0, [jfAddJumpPoint, jfFocusEditor, jfMarkLine, jfMapLineFromDebug, jfSearchVirtualFullPath] @@ -505,6 +506,7 @@ if Assigned(OnProcessCommand) and (Command <> ecNone) and (Command <> ecContextHelp) and(Command <> ecEditContextHelp) then begin + Handled:=false; OnProcessCommand(Self,Command,Handled); Key := 0; end; diff -Nru lazarus-1.4.4+dfsg/debugger/debugger.pp lazarus-1.6+dfsg/debugger/debugger.pp --- lazarus-1.4.4+dfsg/debugger/debugger.pp 2014-03-29 22:32:48.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/debugger.pp 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: debugger.pp 44553 2014-03-29 22:32:48Z martin $ } +{ $Id: debugger.pp 49494 2015-07-04 23:08:00Z juha $ } { ---------------------------------------- Debugger.pp - Debugger base classes ---------------------------------------- @@ -38,7 +38,7 @@ interface uses - TypInfo, Classes, SysUtils, Laz2_XMLCfg, math, FileUtil, LazLoggerBase, + TypInfo, Classes, SysUtils, Laz2_XMLCfg, math, LazFileUtils, LazLoggerBase, LCLProc, LazConfigStorage, LazClasses, maps, DbgIntfBaseTypes, DbgIntfMiscClasses, DbgIntfDebuggerBase; @@ -116,6 +116,7 @@ FFunctionName: String; FLocationName, FLocationOwnerName, FLocationFullFile: String; FLocationType: TDebuggerLocationType; + FSrcLine: Integer; FUnitName: String; function GetFileName: String; function GetDbgFullName: String; @@ -137,6 +138,7 @@ procedure SaveDataToXMLConfig(const AConfig: TXMLConfig; const APath: string); virtual; property FileName: String read GetFileName; + property SrcLine: Integer read FSrcLine write FSrcLine; property DbgFullName: String read GetDbgFullName; property LocationType: TDebuggerLocationType read GetLocationType write SetLocationType; property LocationOwnerName: String read GetLocationOwnerName; @@ -147,6 +149,7 @@ property SrcClassName: String read FSrcClassName; property FunctionName: String read FFunctionName; property FunctionArgs: String read FFunctionArgs; // comma separated list of types. e.g. "integer, boolean" + // functions have result type at end, after ",," end; { TDebuggerUnitInfoList } @@ -1859,7 +1862,7 @@ function TIDEBreakPointGroupList.Add(const AGroup: TIDEBreakPointGroup): Integer; begin - if (AGroup = nil) or (IndexOf(AGroup) >= 0) then exit; + if (AGroup = nil) or (IndexOf(AGroup) >= 0) then exit(-1); Result := FList.Add(AGroup); AGroup.AddReference(Self); FOwner.DoChanged; @@ -2193,7 +2196,8 @@ Result := Result and (FLocationType = AnOther.FLocationType) and (FLocationOwnerName = AnOther.FLocationOwnerName) and - (FLocationName = AnOther.FLocationName); + (FLocationName = AnOther.FLocationName) and + (FSrcLine = AnOther.FSrcLine); end; end; @@ -2213,6 +2217,7 @@ else exclude(FFlags, dlfSearchByFunctionName); FFileName := AConfig.GetValue(APath + 'File', ''); + FSrcLine := AConfig.GetValue(APath + 'SrcLine', 0); FLocationOwnerName := AConfig.GetValue(APath + 'UnitOwner', ''); FLocationName := AConfig.GetValue(APath + 'UnitFile', ''); FDbgFullName := AConfig.GetValue(APath + 'DbgFile', ''); @@ -2231,6 +2236,7 @@ WriteStr(s{%H-}, LocationType); AConfig.SetValue(APath + 'Type', s); AConfig.SetValue(APath + 'File', FileName); + AConfig.SetValue(APath + 'SrcLine', FSrcLine); AConfig.SetDeleteValue(APath + 'ByFunction', dlfSearchByFunctionName in FFlags, False); AConfig.SetValue(APath + 'UnitOwner', LocationOwnerName); @@ -3304,10 +3310,9 @@ var i: Integer; begin - if not Watch.Enabled then begin - Result := ''; - exit; - end; + Result := ''; + if not Watch.Enabled then + exit(''); i := DbgStateChangeCounter; // workaround for state changes during TWatchValue.GetValue if Validity = ddsUnknown then begin Result := ''; diff -Nru lazarus-1.4.4+dfsg/debugger/evaluatedlg.pp lazarus-1.6+dfsg/debugger/evaluatedlg.pp --- lazarus-1.4.4+dfsg/debugger/evaluatedlg.pp 2015-01-14 20:20:48.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/evaluatedlg.pp 2015-03-10 14:51:21.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: evaluatedlg.pp 47389 2015-01-14 20:20:48Z martin $ } +{ $Id: evaluatedlg.pp 48218 2015-03-10 14:51:21Z mattias $ } { ---------------------------------------------- evaluatedlg.pp - Evaluate and Modify ---------------------------------------------- @created(Mon Nov 22st WET 2004) - @lastmod($Date: 2015-01-14 21:20:48 +0100 (Mi, 14 Jan 2015) $) + @lastmod($Date: 2015-03-10 15:51:21 +0100 (Di, 10 Mär 2015) $) @author(Marc Weustink ) This unit contains the evaluate and modify dialog. @@ -69,14 +69,14 @@ tbModify: TToolButton; tbEvaluate: TToolButton; procedure cmbNewValueKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + {%H-}Shift: TShiftState); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormShow(Sender: TObject); procedure cmbExpressionChange(Sender: TObject); procedure cmbExpressionKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); + {%H-}Shift: TShiftState); procedure MenuItem1Click(Sender: TObject); procedure MenuItem2Click(Sender: TObject); procedure MenuItem3Click(Sender: TObject); @@ -154,6 +154,7 @@ Opts := []; if chkTypeCast.Checked then Opts := [defClassAutoCast]; + R:=''; if DebugBoss.Evaluate(S, R, DBGType, Opts) then begin if cmbExpression.Items.IndexOf(S) = -1 @@ -263,6 +264,7 @@ then cmbNewValue.Items.Insert(0, V); DBGType:=nil; + R:=''; if not DebugBoss.Evaluate(S, R, DBGType) then Exit; FreeAndNil(DBGType); if fHistDirection<>EHDNone then diff -Nru lazarus-1.4.4+dfsg/debugger/feedbackdlg.pp lazarus-1.6+dfsg/debugger/feedbackdlg.pp --- lazarus-1.4.4+dfsg/debugger/feedbackdlg.pp 2014-02-16 14:29:53.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/feedbackdlg.pp 2015-03-22 10:17:35.000000000 +0000 @@ -95,7 +95,7 @@ case ShowModal of mrOk: Result := frOk; - mrCancel: Result := frStop; + else {mrCancel:} Result := frStop; end; end; diff -Nru lazarus-1.4.4+dfsg/debugger/frames/debugger_eventlog_options.pas lazarus-1.6+dfsg/debugger/frames/debugger_eventlog_options.pas --- lazarus-1.4.4+dfsg/debugger/frames/debugger_eventlog_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/frames/debugger_eventlog_options.pas 2015-03-10 14:51:21.000000000 +0000 @@ -50,8 +50,8 @@ procedure chkUseEventLogColorsChange(Sender: TObject); procedure ColorTreeAdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; - var PaintImages, DefaultDraw: Boolean); - procedure ColorTreeChange(Sender: TObject; Node: TTreeNode); + var {%H-}PaintImages, DefaultDraw: Boolean); + procedure ColorTreeChange(Sender: TObject; {%H-}Node: TTreeNode); procedure ColorTreeClick(Sender: TObject); procedure ForegroundColorBoxChange(Sender: TObject); private @@ -60,9 +60,9 @@ procedure UpdateSelectedColor; public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; - procedure ReadSettings(AOptions: TAbstractIDEOptions); override; - procedure WriteSettings(AOptions: TAbstractIDEOptions); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override; + procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; end; diff -Nru lazarus-1.4.4+dfsg/debugger/frames/debugger_general_options.pas lazarus-1.6+dfsg/debugger/frames/debugger_general_options.pas --- lazarus-1.4.4+dfsg/debugger/frames/debugger_general_options.pas 2015-01-23 22:03:06.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/frames/debugger_general_options.pas 2015-07-04 23:08:00.000000000 +0000 @@ -25,12 +25,11 @@ interface uses - Classes, SysUtils, TypInfo, FileUtil, LazFileCache, Forms, Controls, StdCtrls, - ExtCtrls, Buttons, Dialogs, LCLProc, PropEdits, ObjectInspector, - TransferMacros, LazarusIDEStrConsts, IDEOptionsIntf, IDEUtils, + Classes, SysUtils, TypInfo, Forms, Controls, StdCtrls, + ExtCtrls, Buttons, Dialogs, LCLProc, FileUtil, LazFileUtils, LazFileCache, PropEdits, + ObjectInspector, TransferMacros, LazarusIDEStrConsts, IDEOptionsIntf, IDEUtils, DbgIntfDebuggerBase, PathEditorDlg, InputHistory, IDEProcs, DialogProcs, - EnvironmentOpts, - BaseDebugManager, Debugger; + EnvironmentOpts, BaseDebugManager, Debugger; type @@ -68,10 +67,10 @@ destructor Destroy; override; function Check: Boolean; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; - procedure ReadSettings(AOptions: TAbstractIDEOptions); override; - procedure WriteSettings(AOptions: TAbstractIDEOptions); override; - procedure RestoreSettings(AOptions: TAbstractIDEOptions); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override; + procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override; + procedure RestoreSettings({%H-}AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; end; diff -Nru lazarus-1.4.4+dfsg/debugger/frames/debugger_language_exceptions_options.pas lazarus-1.6+dfsg/debugger/frames/debugger_language_exceptions_options.pas --- lazarus-1.4.4+dfsg/debugger/frames/debugger_language_exceptions_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/frames/debugger_language_exceptions_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -50,9 +50,9 @@ constructor Create(AOwner: TComponent); override; destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; - procedure ReadSettings(AOptions: TAbstractIDEOptions); override; - procedure WriteSettings(AOptions: TAbstractIDEOptions); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override; + procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; end; @@ -68,6 +68,7 @@ idx: Integer; S: String; begin + S:=''; if not InputQuery(lisDebugOptionsFrmAddException, lisDebugOptionsFrmEnterExceptionName, S) then Exit; diff -Nru lazarus-1.4.4+dfsg/debugger/frames/debugger_signals_options.pas lazarus-1.6+dfsg/debugger/frames/debugger_signals_options.pas --- lazarus-1.4.4+dfsg/debugger/frames/debugger_signals_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/frames/debugger_signals_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -47,9 +47,9 @@ procedure AddSignalLine(const ASignal: TIDESignal); public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; - procedure ReadSettings(AOptions: TAbstractIDEOptions); override; - procedure WriteSettings(AOptions: TAbstractIDEOptions); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override; + procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; end; diff -Nru lazarus-1.4.4+dfsg/debugger/historydlg.pp lazarus-1.6+dfsg/debugger/historydlg.pp --- lazarus-1.4.4+dfsg/debugger/historydlg.pp 2013-05-01 08:44:51.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/historydlg.pp 2015-06-02 23:56:03.000000000 +0000 @@ -31,7 +31,7 @@ ToolButton4: TToolButton; tbImport: TToolButton; procedure lvHistoryDblClick(Sender: TObject); - procedure lvHistorySelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure lvHistorySelectItem(Sender: TObject; {%H-}Item: TListItem; {%H-}Selected: Boolean); procedure tbClearClick(Sender: TObject); procedure tbHistClick(Sender: TObject); procedure tbHistorySelectedClick(Sender: TObject); @@ -362,6 +362,11 @@ for i := low(COL_WIDTHS) to high(COL_WIDTHS) do lvHistory.Column[i].Width := COL_WIDTHS[i]; + OpenDialog1.Title := lisImport; + SaveDialog1.Title := lisExport; + + OpenDialog1.Filter := Format('%s|*.xml|%s|*.*|', [dlgFilterXML, dlgFilterAll]); + SaveDialog1.Filter := OpenDialog1.Filter; end; initialization diff -Nru lazarus-1.4.4+dfsg/debugger/inspectdlg.pas lazarus-1.6+dfsg/debugger/inspectdlg.pas --- lazarus-1.4.4+dfsg/debugger/inspectdlg.pas 2014-03-01 14:34:39.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/inspectdlg.pas 2015-06-06 11:19:40.000000000 +0000 @@ -38,10 +38,6 @@ { TOIDBGGrid } TOIDBGGrid=class(TOIPropertyGrid) - private - protected - procedure BuildPropertyList(OnlyIfNeeded: boolean=false); - public end; { TIDEInspectDlg } @@ -67,13 +63,13 @@ procedure btnForwardClick(Sender: TObject); procedure btnUseInstanceClick(Sender: TObject); procedure EdInspectEditingDone(Sender: TObject); - procedure EdInspectKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure EdInspectKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); - procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure DataGridDoubleClick(Sender: TObject); - procedure DataGridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, - Y: Integer); + procedure DataGridMouseDown(Sender: TObject; Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, + {%H-}Y: Integer); private //FDataGridHook, //FPropertiesGridHook, @@ -108,7 +104,7 @@ protected function ColSizeGetter(AColId: Integer; var ASize: Integer): Boolean; procedure ColSizeSetter(AColId: Integer; ASize: Integer); - procedure InternalExecute(const AExpression: ansistring; ARepeatCount: Integer = -1); + procedure InternalExecute(const AExpression: ansistring); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -224,6 +220,7 @@ if btnUseInstance.Down then include(TestOpts, defClassAutoCast); TestDBGInfo := nil; + TestHumanReadable:=''; if DebugBoss.Evaluate('(' + FExpression + ')^', TestHumanReadable, TestDBGInfo, TestOpts) and assigned(TestDBGInfo) then @@ -502,7 +499,7 @@ TypeName, 2, length(FDBGInfo.TypeName))]) else FGridData.Cells[2,1]:=FDBGInfo.TypeName; {$PUSH}{$RANGECHECKS OFF} - FGridData.Cells[3,1]:=format('$%x',[PtrUInt(FDBGInfo.Value.AsPointer)]); + FGridData.Cells[3,1]:=format('$%x',[{%H-}PtrUInt(FDBGInfo.Value.AsPointer)]); {$POP} //FGridData.AutoSizeColumn(2); end; @@ -740,30 +737,8 @@ end; constructor TIDEInspectDlg.Create(AOwner: TComponent); - - function NewGrid(AName: String; AParent: TWinControl; AHook: TPropertyEditorHook): TOIDBGGrid; - begin - Result := TOIDBGGrid.Create(Self); - with Result do - begin - Name := AName; - Parent := AParent; - Visible := True; - Align := alClient; - end; - end; - begin inherited Create(AOwner); - //FDBGInfo := nil; - //FDataGridHook := TPropertyEditorHook.Create; - //FDataGrid := NewGrid('DataGrid', DataPage, FDataGridHook); - // - //FPropertiesGridHook := TPropertyEditorHook.Create; - //FPropertiesGrid := NewGrid('PropertiesGrid', PropertiesPage, FPropertiesGridHook); - // - //FMethodsGridHook := TPropertyEditorHook.Create; - //FMethodsGrid := NewGrid('MethodsGrid', MethodsPage, FMethodsGridHook); FUpdateLock := False; FUpdateNeeded := False; @@ -815,7 +790,7 @@ inherited Destroy; end; -procedure TIDEInspectDlg.InternalExecute(const AExpression: ansistring; ARepeatCount: Integer); +procedure TIDEInspectDlg.InternalExecute(const AExpression: ansistring); begin if FHistoryIndex >= FHistory.Count then FHistoryIndex := FHistory.Count - 1; @@ -914,13 +889,6 @@ UpdateData; end; -{ TOIDBGGrid } - -procedure TOIDBGGrid.BuildPropertyList(OnlyIfNeeded: boolean); -begin - -end; - initialization InspectDlgWindowCreator := IDEWindowCreators.Add(DebugDialogNames[ddtInspect]); diff -Nru lazarus-1.4.4+dfsg/debugger/processdebugger.pp lazarus-1.6+dfsg/debugger/processdebugger.pp --- lazarus-1.4.4+dfsg/debugger/processdebugger.pp 2014-12-04 19:14:22.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/processdebugger.pp 2015-12-04 17:36:32.000000000 +0000 @@ -1,11 +1,11 @@ -{ $Id: processdebugger.pp 47107 2014-12-04 19:14:22Z mattias $ } +{ $Id: processdebugger.pp 50616 2015-12-04 17:36:32Z mattias $ } { ------------------------------------------------ ProcessDebugger.pp - Debugger class which only executes a target ------------------------------------------------ @created(Sun Nov 27st WET 2005) - @lastmod($Date: 2014-12-04 20:14:22 +0100 (Do, 04 Dez 2014) $) + @lastmod($Date: 2015-12-04 18:36:32 +0100 (Fr, 04 Dez 2015) $) @author(Marc Weustink ) This unit contains the process debugger class. It simply creates a process. @@ -47,9 +47,9 @@ TProcessDebugger = class(TDebugger) private - FProcess: TProcess; + FProcess: TProcessUTF8; procedure ProcessDestroyed(Sender: TObject); - function ProcessEnvironment(const AVariable: String; const ASet: Boolean): Boolean; + function ProcessEnvironment(const {%H-}AVariable: String; const {%H-}ASet: Boolean): Boolean; function ProcessRun: Boolean; function ProcessStop: Boolean; protected @@ -161,6 +161,7 @@ dcRun: Result := ProcessRun; dcStop: Result := ProcessStop; dcEnvironment: Result := ProcessEnvironment(String(APArams[0].VAnsiString), AParams[1].VBoolean); + else Result := False; end; end; diff -Nru lazarus-1.4.4+dfsg/debugger/processlist.pas lazarus-1.6+dfsg/debugger/processlist.pas --- lazarus-1.4.4+dfsg/debugger/processlist.pas 2006-01-07 15:53:17.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/processlist.pas 2015-12-04 17:35:37.000000000 +0000 @@ -25,7 +25,7 @@ interface uses - Classes, SysUtils, Process, LCLProc; + Classes, SysUtils, LCLProc, UTF8Process; type { The TProcessList is used by the IDE to store all running programs and @@ -34,19 +34,19 @@ zombies. } TProcessList = class private - FItems: TList; // list of TProcess + FItems: TList; // list of TProcessUTF8 FFreeing: Boolean; // set wehn freeing stopped processes function GetCount: integer; - function GetItems(Index: integer): TProcess; + function GetItems(Index: integer): TProcessUTF8; public constructor Create; destructor Destroy; override; - function Add(NewProcess: TProcess): integer; + function Add(NewProcess: TProcessUTF8): integer; procedure Clear; procedure FreeStoppedProcesses; public property Count: integer read GetCount; - property Items[Index: integer]: TProcess read GetItems; default; + property Items[Index: integer]: TProcessUTF8 read GetItems; default; end; function GetDefaultProcessList: TProcessList; @@ -69,9 +69,9 @@ Result:=FItems.Count; end; -function TProcessList.GetItems(Index: integer): TProcess; +function TProcessList.GetItems(Index: integer): TProcessUTF8; begin - Result:=TProcess(FItems[Index]); + Result:=TProcessUTF8(FItems[Index]); end; constructor TProcessList.Create; @@ -87,7 +87,7 @@ inherited Destroy; end; -function TProcessList.Add(NewProcess: TProcess): integer; +function TProcessList.Add(NewProcess: TProcessUTF8): integer; begin Result:=FItems.Add(NewProcess); end; @@ -103,7 +103,7 @@ procedure TProcessList.FreeStoppedProcesses; var - AProcess: TProcess; + AProcess: TProcessUTF8; i: Integer; begin // waitonexit or free may trigger another idle diff -Nru lazarus-1.4.4+dfsg/debugger/registersdlg.pp lazarus-1.6+dfsg/debugger/registersdlg.pp --- lazarus-1.4.4+dfsg/debugger/registersdlg.pp 2014-02-24 01:44:49.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/registersdlg.pp 2015-03-10 14:51:21.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: registersdlg.pp 44216 2014-02-24 01:44:49Z martin $ } +{ $Id: registersdlg.pp 48218 2015-03-10 14:51:21Z mattias $ } { ---------------------------------------------- registersdlg.pp - Overview of registers ---------------------------------------------- @created(Sun Nov 16th WET 2008) - @lastmod($Date: 2014-02-24 02:44:49 +0100 (Mo, 24 Feb 2014) $) + @lastmod($Date: 2015-03-10 15:51:21 +0100 (Di, 10 Mär 2015) $) @author(Marc Weustink ) This unit contains the registers debugger dialog. @@ -78,7 +78,7 @@ procedure actCopyValueExecute(Sender: TObject); procedure actPowerExecute(Sender: TObject); procedure DispDefaultClick(Sender: TObject); - procedure lvRegistersSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure lvRegistersSelectItem(Sender: TObject; Item: TListItem; {%H-}Selected: Boolean); procedure ToolButtonDispTypeClick(Sender: TObject); function GetCurrentRegisters: TRegisters; private diff -Nru lazarus-1.4.4+dfsg/debugger/watchesdlg.pp lazarus-1.6+dfsg/debugger/watchesdlg.pp --- lazarus-1.4.4+dfsg/debugger/watchesdlg.pp 2014-05-02 13:13:39.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/watchesdlg.pp 2015-03-10 14:51:21.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: watchesdlg.pp 44888 2014-05-02 13:13:39Z martin $ } +{ $Id: watchesdlg.pp 48218 2015-03-10 14:51:21Z mattias $ } { ---------------------------------------------- watchesdlg.pp - Overview of watches ---------------------------------------------- @created(Fri Dec 14st WET 2001) - @lastmod($Date: 2014-05-02 15:13:39 +0200 (Fr, 02 Mai 2014) $) + @lastmod($Date: 2015-03-10 15:51:21 +0100 (Di, 10 Mär 2015) $) @author(Shane Miller) @author(Marc Weustink ) @@ -121,7 +121,7 @@ procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormShow(Sender: TObject); procedure lvWatchesDblClick(Sender: TObject); - procedure lvWatchesSelectItem(Sender: TObject; AItem: TListItem; Selected: Boolean); + procedure lvWatchesSelectItem(Sender: TObject; {%H-}AItem: TListItem; {%H-}Selected: Boolean); procedure popAddClick(Sender: TObject); procedure popPropertiesClick(Sender: TObject); procedure popEnabledClick(Sender: TObject); @@ -142,9 +142,9 @@ function GetThreadId: Integer; function GetSelectedThreads(Snap: TSnapshot): TIdeThreads; function GetStackframe: Integer; - procedure WatchAdd(const ASender: TIdeWatches; const AWatch: TIdeWatch); + procedure WatchAdd(const {%H-}ASender: TIdeWatches; const AWatch: TIdeWatch); procedure WatchUpdate(const ASender: TIdeWatches; const AWatch: TIdeWatch); - procedure WatchRemove(const ASender: TIdeWatches; const AWatch: TIdeWatch); + procedure WatchRemove(const {%H-}ASender: TIdeWatches; const AWatch: TIdeWatch); procedure UpdateInspectPane; procedure UpdateItem(const AItem: TListItem; const AWatch: TIdeWatch); diff -Nru lazarus-1.4.4+dfsg/debugger/watchpropertydlg.lfm lazarus-1.6+dfsg/debugger/watchpropertydlg.lfm --- lazarus-1.4.4+dfsg/debugger/watchpropertydlg.lfm 2013-11-06 01:14:01.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/watchpropertydlg.lfm 2015-11-23 17:15:54.000000000 +0000 @@ -1,136 +1,25 @@ object WatchPropertyDlg: TWatchPropertyDlg - Left = 542 - Height = 203 - Top = 214 - Width = 420 - ActiveControl = chkAllowFunc - AutoSize = True + Left = 513 + Height = 270 + Top = 271 + Width = 428 BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'Watch Properties' - ClientHeight = 203 - ClientWidth = 420 + ClientHeight = 270 + ClientWidth = 428 Constraints.MinWidth = 400 Position = poScreenCenter - LCLVersion = '1.1' - object lblExpression: TLabel - AnchorSideTop.Control = txtExpression - AnchorSideTop.Side = asrCenter - Left = 6 - Height = 15 - Top = 10 - Width = 58 - BorderSpacing.Left = 6 - Caption = 'Expression:' - ParentColor = False - end - object lblRepCount: TLabel - AnchorSideTop.Control = txtRepCount - AnchorSideTop.Side = asrCenter - Left = 6 - Height = 15 - Top = 39 - Width = 75 - BorderSpacing.Left = 6 - Caption = 'Repeat Count:' - ParentColor = False - end - object lblDigits: TLabel - AnchorSideLeft.Control = txtRepCount - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = txtDigits - AnchorSideTop.Side = asrCenter - Left = 159 - Height = 15 - Top = 39 - Width = 33 - BorderSpacing.Left = 12 - Caption = 'Digits:' - ParentColor = False - end - object txtExpression: TEdit - AnchorSideLeft.Control = lblExpression - AnchorSideLeft.Side = asrBottom - AnchorSideRight.Side = asrBottom - Left = 70 - Height = 23 - Top = 6 - Width = 344 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - TabOrder = 1 - end - object txtRepCount: TEdit - AnchorSideLeft.Control = lblRepCount - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = txtExpression - AnchorSideTop.Side = asrBottom - Left = 87 - Height = 23 - Top = 35 - Width = 60 - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - TabOrder = 2 - Text = '0' - end - object txtDigits: TEdit - AnchorSideLeft.Control = lblDigits - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = txtRepCount - AnchorSideTop.Side = asrCenter - Left = 198 - Height = 23 - Top = 35 - Width = 60 - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - TabOrder = 3 - Text = '0' - end - object chkEnabled: TCheckBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = txtRepCount - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 19 - Top = 64 - Width = 62 - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - Caption = 'Enabled' - TabOrder = 4 - end - object chkAllowFunc: TCheckBox - AnchorSideLeft.Control = chkEnabled - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = txtRepCount - AnchorSideTop.Side = asrBottom - Left = 98 - Height = 19 - Top = 64 - Width = 128 - AllowGrayed = True - BorderSpacing.Left = 30 - BorderSpacing.Top = 6 - Caption = 'Allow Function Calls' - TabOrder = 0 - end + LCLVersion = '1.5' object rgStyle: TRadioGroup - AnchorSideTop.Control = chkEnabled - AnchorSideTop.Side = asrBottom - AnchorSideRight.Side = asrBottom Left = 6 Height = 87 - Top = 89 - Width = 408 - Anchors = [akTop, akLeft, akRight] + Top = 142 + Width = 416 + Align = alClient AutoFill = True AutoSize = True BorderSpacing.Left = 6 - BorderSpacing.Top = 6 BorderSpacing.Right = 6 Caption = 'Style' ChildSizing.LeftRightSpacing = 6 @@ -141,8 +30,8 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 3 - ClientHeight = 69 - ClientWidth = 404 + ClientHeight = 68 + ClientWidth = 412 Columns = 3 ItemIndex = 7 Items.Strings = ( @@ -156,16 +45,13 @@ 'Default' 'Memory Dump' ) - TabOrder = 6 + TabOrder = 1 end object ButtonPanel: TButtonPanel - AnchorSideTop.Control = rgStyle - AnchorSideTop.Side = asrBottom Left = 6 - Height = 15 - Top = 182 - Width = 408 - Anchors = [akTop, akLeft, akRight, akBottom] + Height = 29 + Top = 235 + Width = 416 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True OKButton.OnClick = btnOKClick @@ -177,21 +63,135 @@ CloseButton.Enabled = False CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 7 + TabOrder = 2 ShowButtons = [pbOK, pbCancel, pbHelp] ShowBevel = False end - object chkUseInstanceClass: TCheckBox - AnchorSideLeft.Control = chkAllowFunc - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = chkAllowFunc - AnchorSideTop.Side = asrCenter - Left = 232 - Height = 19 - Top = 64 - Width = 129 - BorderSpacing.Left = 6 - Caption = 'chkUseInstanceClass' - TabOrder = 5 + object PanelTop: TPanel + Left = 0 + Height = 142 + Top = 0 + Width = 428 + Align = alTop + AutoSize = True + BevelOuter = bvNone + ClientHeight = 142 + ClientWidth = 428 + TabOrder = 0 + object lblExpression: TLabel + AnchorSideLeft.Control = PanelTop + AnchorSideTop.Control = txtExpression + AnchorSideTop.Side = asrCenter + Left = 6 + Height = 17 + Top = 11 + Width = 78 + BorderSpacing.Left = 6 + Caption = 'Expression:' + ParentColor = False + end + object txtExpression: TEdit + AnchorSideLeft.Control = lblExpression + AnchorSideLeft.Side = asrBottom + AnchorSideRight.Control = PanelTop + AnchorSideRight.Side = asrBottom + Left = 90 + Height = 27 + Top = 6 + Width = 332 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 + BorderSpacing.Right = 6 + TabOrder = 0 + end + object lblRepCount: TLabel + AnchorSideLeft.Control = PanelTop + AnchorSideTop.Control = txtRepCount + AnchorSideTop.Side = asrCenter + Left = 6 + Height = 17 + Top = 44 + Width = 95 + BorderSpacing.Left = 6 + Caption = 'Repeat Count:' + ParentColor = False + end + object txtRepCount: TEdit + AnchorSideLeft.Control = lblRepCount + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = txtExpression + AnchorSideTop.Side = asrBottom + Left = 107 + Height = 27 + Top = 39 + Width = 60 + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 + TabOrder = 1 + Text = '0' + end + object txtDigits: TEdit + AnchorSideLeft.Control = lblDigits + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = txtRepCount + AnchorSideTop.Side = asrCenter + Left = 228 + Height = 27 + Top = 39 + Width = 60 + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 + TabOrder = 2 + Text = '0' + end + object lblDigits: TLabel + AnchorSideLeft.Control = txtRepCount + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = lblRepCount + AnchorSideTop.Side = asrCenter + Left = 179 + Height = 17 + Top = 44 + Width = 43 + BorderSpacing.Left = 12 + Caption = 'Digits:' + ParentColor = False + end + object chkEnabled: TCheckBox + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 24 + Top = 64 + Width = 80 + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 + Caption = 'Enabled' + TabOrder = 3 + end + object chkAllowFunc: TCheckBox + AnchorSideLeft.Control = chkEnabled + AnchorSideTop.Control = chkEnabled + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 24 + Top = 88 + Width = 160 + AllowGrayed = True + Caption = 'Allow Function Calls' + TabOrder = 4 + end + object chkUseInstanceClass: TCheckBox + AnchorSideLeft.Control = chkEnabled + AnchorSideTop.Control = chkAllowFunc + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 24 + Top = 112 + Width = 165 + BorderSpacing.Bottom = 6 + Caption = 'chkUseInstanceClass' + TabOrder = 5 + end end end diff -Nru lazarus-1.4.4+dfsg/debugger/watchpropertydlg.pp lazarus-1.6+dfsg/debugger/watchpropertydlg.pp --- lazarus-1.4.4+dfsg/debugger/watchpropertydlg.pp 2014-03-20 14:59:29.000000000 +0000 +++ lazarus-1.6+dfsg/debugger/watchpropertydlg.pp 2015-11-23 17:15:54.000000000 +0000 @@ -1,11 +1,11 @@ -{ $Id: watchpropertydlg.pp 44476 2014-03-20 14:59:29Z martin $ } +{ $Id: watchpropertydlg.pp 50485 2015-11-23 17:15:54Z juha $ } { ---------------------------------------------- watchproperydlg.pp - property editor for watches ---------------------------------------------- @created(Fri Dec 14st WET 2001) - @lastmod($Date: 2014-03-20 15:59:29 +0100 (Do, 20 Mär 2014) $) + @lastmod($Date: 2015-11-23 18:15:54 +0100 (Mo, 23 Nov 2015) $) @author(Shane Miller) @author(Marc Weustink ) @@ -48,16 +48,17 @@ TWatchPropertyDlg = class(TForm) ButtonPanel: TButtonPanel; + chkAllowFunc: TCheckBox; + chkEnabled: TCheckBox; chkUseInstanceClass: TCheckBox; + lblDigits: TLabel; lblExpression: TLabel; lblRepCount: TLabel; - lblDigits: TLabel; - chkEnabled: TCHeckbox; - chkAllowFunc: TCheckbox; + PanelTop: TPanel; rgStyle: TRadioGroup; + txtDigits: TEdit; txtExpression: TEdit; txtRepCount: TEdit; - txtDigits: TEdit; procedure btnHelpClick(Sender: TObject); procedure btnOKClick(Sender: TObject); private diff -Nru lazarus-1.4.4+dfsg/designer/aligncompsdlg.pp lazarus-1.6+dfsg/designer/aligncompsdlg.pp --- lazarus-1.4.4+dfsg/designer/aligncompsdlg.pp 2010-01-14 09:26:08.000000000 +0000 +++ lazarus-1.6+dfsg/designer/aligncompsdlg.pp 2015-03-10 15:04:30.000000000 +0000 @@ -44,13 +44,14 @@ constructor Create(AOwner: TComponent); override; end; -function ShowAlignComponentsDialog(var HorizAlignID, VertAlignID: integer): TModalResult; +function ShowAlignComponentsDialog(out HorizAlignID, VertAlignID: integer): TModalResult; implementation {$R *.lfm} -function ShowAlignComponentsDialog(var HorizAlignID, VertAlignID: integer): TModalResult; +function ShowAlignComponentsDialog(out HorizAlignID, VertAlignID: integer + ): TModalResult; var AlignComponentsDialog: TAlignComponentsDialog; begin diff -Nru lazarus-1.4.4+dfsg/designer/anchoreditor.pas lazarus-1.6+dfsg/designer/anchoreditor.pas --- lazarus-1.4.4+dfsg/designer/anchoreditor.pas 2014-09-11 16:52:52.000000000 +0000 +++ lazarus-1.6+dfsg/designer/anchoreditor.pas 2015-03-10 15:41:06.000000000 +0000 @@ -152,8 +152,8 @@ function AnchorDesignerNoSiblingText: string; function AnchorDesignerNeighbourText(direction: TAnchorKind): string; procedure CollectValues(const ASelection: TList; - var TheValues: TAnchorDesignerValues; - var SelectedControlCount: integer); + out TheValues: TAnchorDesignerValues; + out SelectedControlCount: integer); protected procedure KeyUp(var Key: Word; Shift: TShiftState); override; procedure UpdateShowing; override; @@ -964,9 +964,8 @@ Result:=AControl.Name+':'+AControl.ClassName; end; -procedure TAnchorDesigner.CollectValues( - const ASelection: TList; var TheValues: TAnchorDesignerValues; - var SelectedControlCount: integer); +procedure TAnchorDesigner.CollectValues(const ASelection: TList; out + TheValues: TAnchorDesignerValues; out SelectedControlCount: integer); var i: Integer; AControl: TControl; diff -Nru lazarus-1.4.4+dfsg/designer/askcompnamedlg.lfm lazarus-1.6+dfsg/designer/askcompnamedlg.lfm --- lazarus-1.4.4+dfsg/designer/askcompnamedlg.lfm 2009-10-18 11:37:56.000000000 +0000 +++ lazarus-1.6+dfsg/designer/askcompnamedlg.lfm 2015-10-08 07:39:15.000000000 +0000 @@ -1,32 +1,34 @@ object AskCompNameDialog: TAskCompNameDialog Left = 299 - Height = 91 + Height = 140 Top = 177 - Width = 366 + Width = 389 + BorderIcons = [biSystemMenu] + BorderStyle = bsDialog Caption = 'AskCompNameDialog' - ClientHeight = 91 - ClientWidth = 366 + ClientHeight = 140 + ClientWidth = 389 OnCreate = FormCreate - Position = poDesktopCenter - LCLVersion = '0.9.29' + Position = poScreenCenter + LCLVersion = '1.5' object Label1: TLabel Left = 6 - Height = 18 + Height = 17 Top = 6 - Width = 300 + Width = 377 Align = alTop BorderSpacing.Around = 6 Caption = 'Label1' - Constraints.MaxWidth = 300 - Constraints.MinWidth = 300 ParentColor = False WordWrap = True end object NameEdit: TEdit + AnchorSideTop.Control = Label1 + AnchorSideRight.Side = asrBottom Left = 6 - Height = 22 - Top = 30 - Width = 354 + Height = 27 + Top = 29 + Width = 377 Align = alTop BorderSpacing.Around = 6 OnChange = NameEditChange @@ -35,24 +37,43 @@ TabOrder = 0 Text = 'NameEdit' end - object OkButton: TButton + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 105 + Width = 377 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 2 + ShowButtons = [pbOK, pbCancel] + ShowBevel = False + end + object InfoPanel: TPanel + AnchorSideLeft.Control = NameEdit AnchorSideTop.Control = NameEdit AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner + AnchorSideRight.Control = NameEdit AnchorSideRight.Side = asrBottom - Left = 276 - Height = 20 - Top = 58 - Width = 84 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'OkButton' - Constraints.MinWidth = 75 - Default = True - OnClick = OkButtonClick - ParentShowHint = False - ShowHint = True + AnchorSideBottom.Control = ButtonPanel1 + Left = 6 + Height = 37 + Top = 62 + Width = 377 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Top = 6 + BorderSpacing.Bottom = 6 + BevelOuter = bvNone + Caption = 'InfoPanel' + Color = clInfoBk + Font.Color = clInfoText + ParentColor = False + ParentFont = False TabOrder = 1 end end diff -Nru lazarus-1.4.4+dfsg/designer/askcompnamedlg.pas lazarus-1.6+dfsg/designer/askcompnamedlg.pas --- lazarus-1.4.4+dfsg/designer/askcompnamedlg.pas 2014-11-06 22:31:48.000000000 +0000 +++ lazarus-1.6+dfsg/designer/askcompnamedlg.pas 2015-05-19 21:05:37.000000000 +0000 @@ -26,53 +26,49 @@ uses Classes, SysUtils, LCLProc, FileUtil, Forms, Controls, Graphics, - Dialogs, StdCtrls, PropEdits, LazarusIDEStrConsts; + Dialogs, StdCtrls, ButtonPanel, ExtCtrls, PropEdits, LazarusIDEStrConsts; type { TAskCompNameDialog } TAskCompNameDialog = class(TForm) - OkButton: TButton; + ButtonPanel1: TButtonPanel; + InfoPanel: TPanel; NameEdit: TEdit; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure NameEditChange(Sender: TObject); - procedure OkButtonClick(Sender: TObject); private FLookupRoot: TComponent; FNewComponent: TComponent; function GetNewName: TComponentName; - procedure SetLookupRoot(const AValue: TComponent); - procedure SetNewComponent(const AValue: TComponent); procedure SetNewName(const AValue: TComponentName); public function IsValidName(AName: TComponentName; out ErrorMsg: string): boolean; - property LookupRoot: TComponent read FLookupRoot write SetLookupRoot; + property LookupRoot: TComponent read FLookupRoot write FLookupRoot; property NewName: TComponentName read GetNewName write SetNewName; - property NewComponent: TComponent read FNewComponent write SetNewComponent; + property NewComponent: TComponent read FNewComponent write FNewComponent; end; -function ShowComponentNameDialog(LookupRoot: TComponent; NewComponent: TComponent): string; +function ShowComponentNameDialog(ALookupRoot: TComponent; ANewComponent: TComponent): string; implementation {$R *.lfm} -function ShowComponentNameDialog(LookupRoot: TComponent; NewComponent: TComponent): string; -var - AskCompNameDialog: TAskCompNameDialog; +function ShowComponentNameDialog(ALookupRoot: TComponent; ANewComponent: TComponent): string; begin - AskCompNameDialog:=TAskCompNameDialog.Create(nil); + with TAskCompNameDialog.Create(nil) do try - AskCompNameDialog.LookupRoot:=LookupRoot; - AskCompNameDialog.NewComponent:=NewComponent; - AskCompNameDialog.NewName:=NewComponent.Name; - Result:=NewComponent.Name; // Default name is the component's current name. - if AskCompNameDialog.ShowModal=mrOk then - Result:=AskCompNameDialog.NewName; + LookupRoot:=ALookupRoot; + NewComponent:=ANewComponent; + NewName:=NewComponent.Name; + Result:=NewComponent.Name; // Default name is the component's current name. + if ShowModal=mrOk then + Result:=NewName; finally - AskCompNameDialog.Free; + Free; end; end; @@ -83,34 +79,20 @@ Caption:=lisChooseName; Label1.Caption:=lisChooseANameForTheComponent; NameEdit.Hint:=lisTheComponentNameMustBeUniqueInAllComponentsOnTheFo; - OkButton.Caption:=lisMenuOk; - OkButton.Enabled:=false; + ButtonPanel1.OKButton.Caption:=lisOk; + ButtonPanel1.CancelButton.Caption:=lisCancel; + ButtonPanel1.OKButton.Enabled:=false; end; procedure TAskCompNameDialog.NameEditChange(Sender: TObject); var + Ok: boolean; ErrorMsg: string; begin - OkButton.Enabled:=IsValidName(NameEdit.Text,ErrorMsg); - OkButton.ShowHint:=ErrorMsg<>''; - OkButton.Hint:=ErrorMsg; -end; - -procedure TAskCompNameDialog.OkButtonClick(Sender: TObject); -begin - ModalResult:=mrOk; -end; - -procedure TAskCompNameDialog.SetLookupRoot(const AValue: TComponent); -begin - if FLookupRoot=AValue then exit; - FLookupRoot:=AValue; -end; - -procedure TAskCompNameDialog.SetNewComponent(const AValue: TComponent); -begin - if FNewComponent=AValue then exit; - FNewComponent:=AValue; + Ok:=IsValidName(NameEdit.Text, ErrorMsg); + ButtonPanel1.OKButton.Enabled:=Ok; + InfoPanel.Caption:=ErrorMsg; + InfoPanel.Visible:=not Ok; end; function TAskCompNameDialog.GetNewName: TComponentName; diff -Nru lazarus-1.4.4+dfsg/designer/changeclassdialog.lfm lazarus-1.6+dfsg/designer/changeclassdialog.lfm --- lazarus-1.4.4+dfsg/designer/changeclassdialog.lfm 2014-04-26 11:55:39.000000000 +0000 +++ lazarus-1.6+dfsg/designer/changeclassdialog.lfm 2015-11-16 22:42:34.000000000 +0000 @@ -3,22 +3,23 @@ Height = 350 Top = 163 Width = 470 + ActiveControl = NewClassComboBox BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsToolWindow Caption = 'ChangeClassDlg' ClientHeight = 350 ClientWidth = 470 OnCreate = ChangeClassDlgCreate - LCLVersion = '1.3' + Position = poScreenCenter + LCLVersion = '1.5' object OldGroupBox: TGroupBox Left = 6 - Height = 299 + Height = 304 Top = 6 Width = 228 Align = alClient BorderSpacing.Around = 6 Caption = 'OldGroupBox' - ClientHeight = 280 + ClientHeight = 287 ClientWidth = 224 TabOrder = 0 object OldClassLabel: TLabel @@ -27,7 +28,7 @@ Left = 6 Height = 15 Top = 6 - Width = 101 + Width = 83 BorderSpacing.Around = 6 Caption = 'OldClassLabel' Font.Style = [fsBold] @@ -43,25 +44,27 @@ AnchorSideBottom.Control = OldGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 247 + Height = 254 Top = 27 Width = 212 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 ClickOnSelChange = False ItemHeight = 0 + ScrollWidth = 210 TabOrder = 0 + TopIndex = -1 end end object NewGroupBox: TGroupBox Left = 240 - Height = 299 + Height = 304 Top = 6 Width = 224 Align = alRight BorderSpacing.Around = 6 Caption = 'NewGroupBox' - ClientHeight = 280 + ClientHeight = 287 ClientWidth = 220 TabOrder = 1 object NewClassComboBox: TComboBox @@ -70,7 +73,7 @@ AnchorSideRight.Control = NewGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 25 + Height = 27 Top = 2 Width = 208 Anchors = [akTop, akLeft, akRight] @@ -94,8 +97,8 @@ AnchorSideBottom.Control = NewGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 244 - Top = 30 + Height = 249 + Top = 32 Width = 208 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 @@ -104,13 +107,15 @@ BorderSpacing.Bottom = 6 ClickOnSelChange = False ItemHeight = 0 + ScrollWidth = 206 TabOrder = 1 + TopIndex = -1 end end object BtnPanel: TButtonPanel Left = 6 - Height = 33 - Top = 311 + Height = 28 + Top = 316 Width = 458 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True diff -Nru lazarus-1.4.4+dfsg/designer/changeclassdialog.pas lazarus-1.6+dfsg/designer/changeclassdialog.pas --- lazarus-1.4.4+dfsg/designer/changeclassdialog.pas 2014-04-26 11:56:06.000000000 +0000 +++ lazarus-1.6+dfsg/designer/changeclassdialog.pas 2015-11-16 22:42:34.000000000 +0000 @@ -57,7 +57,7 @@ procedure ChangeClassDlgCreate(Sender: TObject); procedure NewClassComboBoxEditingDone(Sender: TObject); procedure NewClassComboBoxKeyUp(Sender: TObject; var Key: Word; - Shift: TShiftState); + {%H-}Shift: TShiftState); private FClasses: TAvgLvlTree; FNewClass: TClass; @@ -70,7 +70,7 @@ procedure FillAncestorListBox(AClass: TClass; AListBox: TListBox); procedure AddClass(const AClass: TPersistentClass); procedure AddComponentClass(const AClass: TComponentClass); - function CompareClasses(Tree: TAvgLvlTree; Class1, Class2: TClass): integer; + function CompareClasses({%H-}Tree: TAvgLvlTree; Class1, Class2: TClass): integer; public destructor Destroy; override; procedure FillNewClassComboBox; @@ -78,7 +78,6 @@ property NewClass: TClass read FNewClass write SetNewClass; end; - function ShowChangeClassDialog(ADesigner: TIDesigner; APersistent: TPersistent): TModalResult; function ChangePersistentClass(ADesigner: TIDesigner; diff -Nru lazarus-1.4.4+dfsg/designer/controlselection.pp lazarus-1.6+dfsg/designer/controlselection.pp --- lazarus-1.4.4+dfsg/designer/controlselection.pp 2015-04-13 10:33:29.000000000 +0000 +++ lazarus-1.6+dfsg/designer/controlselection.pp 2015-08-07 16:36:17.000000000 +0000 @@ -43,7 +43,7 @@ // IDEIntf PropEditUtils, ComponentEditors, FormEditingIntf, // IDE - EnvironmentOpts, NonControlDesigner, DesignerProcs; + EnvironmentOpts, DesignerProcs; type TArrSize = array of array [0 .. 3] of integer; @@ -889,6 +889,7 @@ var r: TRect; begin + Result := 0; if FIsTComponent then begin if Owner.Mediator<>nil then begin Owner.Mediator.GetBounds(TComponent(FPersistent),r); @@ -1159,8 +1160,8 @@ InvalidateGrabbers; OldCustomForm:=FForm; FForm:=NewCustomForm; - if FForm is TNonControlDesignerForm then - FMediator:=TNonControlDesignerForm(FForm).Mediator + if FForm is FormEditingHook.NonFormProxyDesignerForm[NonControlProxyDesignerFormId] then + FMediator:=(FForm as INonControlDesigner).Mediator else FMediator:=nil; FLookupRoot:=GetSelectionOwner; @@ -1176,8 +1177,7 @@ Result:=FGrabbers[AGrabIndex]; end; -procedure TControlSelection.SetGrabbers(AGrabIndex:TGrabIndex; - const AGrabber: TGrabber); +procedure TControlSelection.SetGrabbers(AGrabIndex:TGrabIndex; const AGrabber: TGrabber); begin FGrabbers[AGrabIndex]:=AGrabber; end; @@ -2812,6 +2812,9 @@ ARight:=ALeft+TControl(AComponent).Width; ABottom:=ATop+TControl(AComponent).Height; end else begin + if Assigned(IDEComponentsMaster) then + if not IDEComponentsMaster.DrawNonVisualComponents(ALookupRoot) then + Exit; ARight:=ALeft+NonVisualCompWidth; ABottom:=ATop+NonVisualCompWidth; end; diff -Nru lazarus-1.4.4+dfsg/designer/customnonformdesigner.pas lazarus-1.6+dfsg/designer/customnonformdesigner.pas --- lazarus-1.4.4+dfsg/designer/customnonformdesigner.pas 2013-04-02 10:11:26.000000000 +0000 +++ lazarus-1.6+dfsg/designer/customnonformdesigner.pas 2015-08-07 16:36:17.000000000 +0000 @@ -31,27 +31,32 @@ uses Classes, SysUtils, LCLProc, Graphics, GraphType, Forms, Controls, - IDEProcs; + IDEProcs, FormEditingIntf; type { TCustomNonFormDesignerForm } - TCustomNonFormDesignerForm = class(TForm) + TCustomNonFormDesignerForm = class(TInterfacedObject, INonFormDesigner) private - FLookupRoot: TComponent; + FNonFormProxyDesignerForm: TNonFormProxyDesignerForm; FOnLoadBounds: TNotifyEvent; FOnSaveBounds: TNotifyEvent; protected + function GetLookupRoot: TComponent; virtual; procedure SetLookupRoot(const AValue: TComponent); virtual; - procedure Notification(AComponent: TComponent; Operation: TOperation); - override; + procedure Notification(AComponent: TComponent; Operation: TOperation); virtual; public - constructor Create(AOwner: TComponent); override; + procedure Create; virtual; overload; + constructor Create(ANonFormProxyDesignerForm: TNonFormProxyDesignerForm); virtual; overload; + destructor Destroy; override; procedure DoLoadBounds; virtual; procedure DoSaveBounds; virtual; + procedure SetBounds({%H-}ALeft, {%H-}ATop, {%H-}AWidth, {%H-}AHeight: integer); virtual; + procedure Paint; virtual; public - property LookupRoot: TComponent read FLookupRoot write SetLookupRoot; + property LookupRoot: TComponent read GetLookupRoot write SetLookupRoot; + property NonFormProxyDesignerForm: TNonFormProxyDesignerForm read FNonFormProxyDesignerForm; property OnLoadBounds: TNotifyEvent read FOnLoadBounds write FOnLoadBounds; property OnSaveBounds: TNotifyEvent read FOnSaveBounds write FOnSaveBounds; end; @@ -65,42 +70,42 @@ function CompareNonFormDesignerForms(Data1, Data2: Pointer): integer; var - Form1: TCustomNonFormDesignerForm; - Form2: TCustomNonFormDesignerForm; + Form1: INonFormDesigner; + Form2: INonFormDesigner; begin - Form1 := TCustomNonFormDesignerForm(Data1); - Form2 := TCustomNonFormDesignerForm(Data2); + Form1 := TNonFormProxyDesignerForm(Data1) as INonFormDesigner; + Form2 := TNonFormProxyDesignerForm(Data2) as INonFormDesigner; Result := PtrInt(Form1.LookupRoot) - PtrInt(Form2.LookupRoot); end; function CompareLookupRootAndNonFormDesignerForm(Key, Data: Pointer): integer; var LookupRoot: TComponent; - Form: TCustomNonFormDesignerForm; + Form: INonFormDesigner; begin LookupRoot := TComponent(Key); - Form := TCustomNonFormDesignerForm(Data); + Form := TNonFormProxyDesignerForm(Data) as INonFormDesigner; Result := PtrInt(LookupRoot) - PtrInt(Form.LookupRoot); end; { TCustomNonFormDesignerForm } -constructor TCustomNonFormDesignerForm.Create(AOwner: TComponent); +function TCustomNonFormDesignerForm.GetLookupRoot: TComponent; begin - inherited CreateNew(AOwner, 1); + Result := FNonFormProxyDesignerForm.LookupRoot; end; procedure TCustomNonFormDesignerForm.SetLookupRoot(const AValue: TComponent); begin - if FLookupRoot = AValue then + if FNonFormProxyDesignerForm.LookupRoot = AValue then Exit; - if FLookupRoot<>nil then - FLookupRoot.RemoveFreeNotification(Self); + if FNonFormProxyDesignerForm.LookupRoot<>nil then + FNonFormProxyDesignerForm.LookupRoot.RemoveFreeNotification(FNonFormProxyDesignerForm); DoSaveBounds; - FLookupRoot := AValue; - if FLookupRoot <> nil then begin - FLookupRoot.FreeNotification(Self); - Caption := FLookupRoot.Name; + FNonFormProxyDesignerForm.LookupRoot := AValue; + if FNonFormProxyDesignerForm.LookupRoot <> nil then begin + FNonFormProxyDesignerForm.LookupRoot.FreeNotification(FNonFormProxyDesignerForm); + FNonFormProxyDesignerForm.Caption := FNonFormProxyDesignerForm.LookupRoot.Name; end; DoLoadBounds; end; @@ -108,23 +113,48 @@ procedure TCustomNonFormDesignerForm.Notification(AComponent: TComponent; Operation: TOperation); begin - inherited Notification(AComponent, Operation); if Operation=opRemove then begin - if AComponent=FLookupRoot then FLookupRoot:=nil; + if AComponent=FNonFormProxyDesignerForm.LookupRoot then FNonFormProxyDesignerForm.LookupRoot:=nil; end; end; +constructor TCustomNonFormDesignerForm.Create( + ANonFormProxyDesignerForm: TNonFormProxyDesignerForm); +begin + FNonFormProxyDesignerForm := ANonFormProxyDesignerForm; +end; + +destructor TCustomNonFormDesignerForm.Destroy; +begin + inherited Destroy; +end; + +procedure TCustomNonFormDesignerForm.Create; +begin + inherited Create; +end; + procedure TCustomNonFormDesignerForm.DoLoadBounds; begin - if Assigned(OnLoadBounds) then + if Assigned(OnLoadBounds) then OnLoadBounds(Self); end; procedure TCustomNonFormDesignerForm.DoSaveBounds; begin - if Assigned(OnSaveBounds) then + if Assigned(OnSaveBounds) then OnSaveBounds(Self); end; +procedure TCustomNonFormDesignerForm.SetBounds(ALeft, ATop, AWidth, + AHeight: integer); +begin +end; + +procedure TCustomNonFormDesignerForm.Paint; +begin + +end; + end. diff -Nru lazarus-1.4.4+dfsg/designer/designermenu.pp lazarus-1.6+dfsg/designer/designermenu.pp --- lazarus-1.4.4+dfsg/designer/designermenu.pp 2015-05-26 22:36:51.000000000 +0000 +++ lazarus-1.6+dfsg/designer/designermenu.pp 2015-06-03 17:23:26.000000000 +0000 @@ -36,7 +36,7 @@ uses Classes, SysUtils, LCLProc, Forms, Controls, Menus, Graphics, GraphType, - Buttons, StdCtrls, ExtCtrls, ComponentEditors, LazConf, ComCtrls, Arrow, + Buttons, StdCtrls, ExtCtrls, ComponentEditors, LazConf, Arrow, ButtonPanel, Laz2_XMLCfg, LazFileUtils, LazarusIDEStrConsts, PropEdits, IDEProcs; @@ -141,15 +141,15 @@ procedure RealignDesigner; procedure Draw(DMenuItem: TDesignerMenuItem; FormPanel,SubMenuPanel: TPanel); //draw function procedure SetCoordinates(Coord_Left,Coord_Top,Coord_Right: Integer; DMenuItem: TDesignerMenuItem); //coord. of each designermenuitem - function GetSubMenuHeight(DMenuItem: TDesignerMenuItem; LeftPos,TopPos: Integer; Ident: string): TRect; //width and height of submenu panel + function GetSubMenuHeight(DMenuItem: TDesignerMenuItem): TRect; //width and height of submenu panel function GetMaxCoordinates(DMenuItem: TDesignerMenuItem; Max_Width, Max_Height: Integer): TRect; //width and height of all expanded menu items // Event handling procedure MenuItemMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); procedure MenuItemDblClick(Sender: TObject); - procedure MenuItemDragDrop(Sender, Source: TObject; X, Y: Integer); - procedure MenuItemDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; + procedure MenuItemDragDrop(Sender, {%H-}Source: TObject; X, Y: Integer); + procedure MenuItemDragOver(Sender, Source: TObject; {%H-}X, {%H-}Y: Integer; {%H-}State: TDragState; var Accept: Boolean); procedure AddNewItemBeforeClick(Sender: TObject); procedure AddNewItemAfterClick(Sender: TObject); @@ -198,8 +198,6 @@ DESIGNER_MENU_ITEM_HEIGHT=20; DESIGNER_MENU_ITEM_SPACE=30; MIN_DESIGNER_MENU_ITEM_WIDTH=100; - DESIGNER_MENU_ITEM_PANEL_HEIGHT=22; - MIN_SUB_MENU_PANEL_WIDTH=100; POSITION_LEFT=10; POSITION_TOP=10; NUMBER_OF_DEFAULT_TEMPLATES = 3; @@ -417,9 +415,10 @@ DMenuItem.SubMenuArrow.Name:='SubMenuArrow_' + DMenuItem.ID; DMenuItem.SubMenuArrow.Parent:=DMenuItem.SelfPanel; DMenuItem.SubMenuArrow.ArrowType:=atright; - DMenuItem.SubMenuArrow.Width:=20; - DMenuItem.SubMenuArrow.Height:=13; - DMenuItem.SubMenuArrow.ShadowType:=stout; + DMenuItem.SubMenuArrow.ArrowPointerAngle:=90; + DMenuItem.SubMenuArrow.ShadowType:=stNone; + DMenuItem.SubMenuArrow.Width:=14; + DMenuItem.SubMenuArrow.Height:=14; DMenuItem.SubMenuArrow.Visible:=false; DMenuItem.SubMenuArrow.OnMouseDown:=@MenuItemMouseDown; DMenuItem.SubMenuArrow.OnDragOver:=@MenuItemDragOver; @@ -536,7 +535,7 @@ begin if (DMenuItem.PrevItem = nil) then begin - SubMenuDimensions:=GetSubMenuHeight(Root, 0, 0, DMenuItem.ID); + SubMenuDimensions:=GetSubMenuHeight(Root); with temp_panel do begin Parent:=FormPanel; @@ -588,9 +587,9 @@ ((DMenuItem.SubMenu.Selected) or (DMenuItem.SubMenu.Active)))) then begin if (fMenu is TpopupMenu) and (DMenuItem.Level = 1) then - SubMenuDimensions:=GetSubMenuHeight(GetDesignerMenuItem(Root, DMenuItem.SubMenu.ID), DMenuItem.coord.right + 1, 0, DMenuItem.SubMenu.ID) + SubMenuDimensions:=GetSubMenuHeight(GetDesignerMenuItem(Root, DMenuItem.SubMenu.ID)) else - SubMenuDimensions:=GetSubMenuHeight(GetDesignerMenuItem(Root, DMenuItem.SubMenu.ID), 0, 1, DMenuItem.SubMenu.ID); + SubMenuDimensions:=GetSubMenuHeight(GetDesignerMenuItem(Root, DMenuItem.SubMenu.ID)); with DMenuItem.SubMenuPanel do begin Parent:=SubMenuPanel; @@ -692,7 +691,8 @@ // -------------------------------------------------------------------------------------------------------------------// // Determines a position of the SubMenuPanel of some DesignerMenuItem ------------------------------------------------// //--------------------------------------------------------------------------------------------------------------------// -function TDesignerMainMenu.GetSubMenuHeight(DMenuItem: TDesignerMenuItem; LeftPos,TopPos: Integer; Ident: string): TRect; +function TDesignerMainMenu.GetSubMenuHeight(DMenuItem: TDesignerMenuItem + ): TRect; var coords: TRect; SubItemCount: Integer; @@ -734,7 +734,9 @@ temp_coord:=GetMaxCoordinates(DMenuItem.SubMenu, Max_Width, Max_Height); Max_Width:=temp_coord.Right; Max_Height:=temp_coord.Bottom; - end; + end + else + temp_coord:=Rect(0,0,0,0); if (DMenuItem.NextItem <> nil) then temp_coord:=GetMaxCoordinates(DMenuItem.NextItem, Max_Width, Max_Height); @@ -1587,6 +1589,7 @@ UpdateMenu(fMenu.Items, tempdesignermenuitem, 1, 3); end else begin + // ToDo: tempdesignermenuitem is not initialized here. tempdesignermenuitem:=AddNewItemAfter(Root, tempdesignermenuitem.ID); SetCoordinates(POSITION_LEFT,POSITION_TOP,0,Root); ChangeCaption(tempdesignermenuitem,XMLConfig.GetValue(templatesubmenuitem + '/Name/Value','')); @@ -1780,6 +1783,7 @@ DesignerMenuItem: TDesignerMenuItem; begin if not (Sender is TPropertyEditor) then Exit; + InvalidateNeeded := False; for i := 0 to TPropertyEditor(Sender).PropCount - 1 do begin Instance := TPropertyEditor(Sender).GetComponent(i); @@ -2254,6 +2258,7 @@ i: Integer; temp_menuitem: TMenuItem; begin + Result := Nil; case TheAction of // Insert new AMenuItem after selected AMenuItem 1: begin diff -Nru lazarus-1.4.4+dfsg/designer/designer.pp lazarus-1.6+dfsg/designer/designer.pp --- lazarus-1.4.4+dfsg/designer/designer.pp 2015-04-14 21:31:44.000000000 +0000 +++ lazarus-1.6+dfsg/designer/designer.pp 2015-12-15 15:34:28.000000000 +0000 @@ -37,20 +37,20 @@ {off $DEFINE VerboseDesignerSelect} uses - // FCL + LCL - Types, Classes, Math, SysUtils, contnrs, variants, TypInfo, + // RTL + FCL + LCL + Types, Classes, Math, SysUtils, variants, TypInfo, LCLProc, LCLType, LResources, LCLIntf, LMessages, InterfaceBase, - Forms, Controls, GraphType, Graphics, Dialogs, ExtCtrls, Menus, - ClipBrd, + Forms, Controls, GraphType, Graphics, Dialogs, ExtCtrls, Menus, ClipBrd, + // LazUtils + LazFileUtils, LazFileCache, // IDEIntf IDEDialogs, PropEdits, PropEditUtils, ComponentEditors, MenuIntf, IDEImagesIntf, - FormEditingIntf, ComponentReg, + FormEditingIntf, ComponentReg, IDECommands, LazIDEIntf, ProjectIntf, // IDE - LazarusIDEStrConsts, EnvironmentOpts, IDECommands, LazIDEIntf, ProjectIntf, - LazFileUtils, LazFileCache, NonControlDesigner, FrameDesigner, AlignCompsDlg, - SizeCompsDlg, ScaleCompsDlg, TabOrderDlg, AnchorEditor, DesignerProcs, - CustomFormEditor, AskCompNameDlg, ControlSelection, ChangeClassDialog, - EditorOptions; + LazarusIDEStrConsts, EnvironmentOpts, EditorOptions, + // Designer + AlignCompsDlg, SizeCompsDlg, ScaleCompsDlg, TabOrderDlg, AnchorEditor, DesignerProcs, + CustomFormEditor, AskCompNameDlg, ControlSelection, ChangeClassDialog; type TDesigner = class; @@ -71,6 +71,8 @@ const NewName: string) of object; TOnProcessCommand = procedure(Sender: TObject; Command: word; var Handled: boolean) of object; + TOnComponentAdded = procedure(Sender: TObject; AComponent: TComponent; + ARegisteredComponent: TRegisteredComponent) of object; TDesignerFlag = ( dfHasSized, @@ -121,7 +123,7 @@ FOnSaveAsXML: TNotifyEvent; FOnSetDesigning: TOnSetDesigning; FOnShowOptions: TNotifyEvent; - FOnComponentAdded: TNotifyEvent; + FOnComponentAdded: TOnComponentAdded; FOnViewLFM: TNotifyEvent; FShiftState: TShiftState; FTheFormEditor: TCustomFormEditor; @@ -155,7 +157,6 @@ procedure SetGridColor(const AValue: TColor); procedure SetGridSizeX(const AValue: integer); procedure SetGridSizeY(const AValue: integer); - procedure SetIsControl(Value: Boolean); procedure SetMediator(const AValue: TDesignerMediator); procedure SetPopupMenuComponentEditor(const AValue: TBaseComponentEditor); procedure SetShowBorderSpacing(const AValue: boolean); @@ -185,8 +186,8 @@ procedure KeyUp(Sender: TControl; var TheMessage: TLMKEY); function HandleSetCursor(var TheMessage: TLMessage): boolean; procedure HandlePopupMenu(Sender: TControl; var Message: TLMContextMenu); - procedure GetMouseMsgShift(TheMessage: TLMMouse; var Shift: TShiftState; - var Button: TMouseButton); + procedure GetMouseMsgShift(TheMessage: TLMMouse; out Shift: TShiftState; + out Button: TMouseButton); // procedures for working with components and persistents function GetDesignControl(AControl: TControl): TControl; @@ -215,7 +216,6 @@ procedure DoShowAnchorEditor; procedure DoShowTabOrderEditor; - procedure DoShowChangeClassDialog; procedure DoShowObjectInspector; procedure DoChangeZOrder(TheAction: Integer); @@ -282,8 +282,9 @@ function CopySelectionToStream(AllComponentsStream: TStream): boolean; override; function InsertFromStream(s: TStream; Parent: TWinControl; PasteFlags: TComponentPasteSelectionFlags): Boolean; override; - function InvokeComponentEditor(AComponent: TComponent; - MenuIndex: integer): boolean; override; + function InvokeComponentEditor(AComponent: TComponent): boolean; override; + function ChangeClass: boolean; override; + procedure DoProcessCommand(Sender: TObject; var Command: word; var Handled: boolean); @@ -317,7 +318,7 @@ var TheMessage: TLMessage): Boolean; override; function UniqueName(const BaseName: string): string; override; Procedure RemovePersistentAndChilds(APersistent: TPersistent); - procedure Notification(AComponent: TComponent; + procedure Notification({%H-}AComponent: TComponent; Operation: TOperation); override; procedure ValidateRename(AComponent: TComponent; const CurName, NewName: string); override; @@ -337,7 +338,7 @@ property GridSizeX: integer read GetGridSizeX write SetGridSizeX; property GridSizeY: integer read GetGridSizeY write SetGridSizeY; property GridColor: TColor read GetGridColor write SetGridColor; - property IsControl: Boolean read GetIsControl write SetIsControl; + property IsControl: Boolean read GetIsControl; property Mediator: TDesignerMediator read FMediator write SetMediator; property ProcessingDesignerEvent: Integer read FProcessingDesignerEvent; property OnActivated: TNotifyEvent read FOnActivated write FOnActivated; @@ -361,8 +362,8 @@ property OnRenameComponent: TOnRenameComponent read FOnRenameComponent write FOnRenameComponent; property OnSetDesigning: TOnSetDesigning read FOnSetDesigning write FOnSetDesigning; - property OnComponentAdded: TNotifyEvent read FOnComponentAdded - write FOnComponentAdded; + property OnComponentAdded: TOnComponentAdded read FOnComponentAdded + write FOnComponentAdded; property OnShowOptions: TNotifyEvent read FOnShowOptions write FOnShowOptions; property OnViewLFM: TNotifyEvent read FOnViewLFM write FOnViewLFM; property OnSaveAsXML: TNotifyEvent read FOnSaveAsXML write FOnSaveAsXML; @@ -421,6 +422,7 @@ type TCustomFormAccess = class(TCustomForm); TControlAccess = class(TControl); + TWinControlAccess = class(TWinControl); TComponentAccess = class(TComponent); { TComponentSearch } @@ -476,6 +478,10 @@ else IsNonVisual := DesignerProcs.ComponentIsNonVisual(Child); + if IsNonVisual and Assigned(IDEComponentsMaster) then + if not IDEComponentsMaster.DrawNonVisualComponents(Root) then + Exit; + if Child.InheritsFrom(MinClass) and (IsNonVisual or not OnlyNonVisual) then begin Best := Child; @@ -590,7 +596,7 @@ 'Change class',lisDlgChangeClass); DesignerMenuChangeParent:=RegisterIDEMenuSection(DesignerMenuSectionMisc, 'Change parent'); - DesignerMenuChangeParent.ChildsAsSubMenu:=true; + DesignerMenuChangeParent.ChildrenAsSubMenu:=true; DesignerMenuChangeParent.Caption:=lisChangeParent; DesignerMenuViewLFM:=RegisterIDEMenuCommand(DesignerMenuSectionMisc, 'View LFM',lisViewSourceLfm); @@ -606,7 +612,7 @@ DesignerMenuSnapToGuideLinesOption:=RegisterIDEMenuCommand(DesignerMenuSectionOptions, 'Snap to guide lines',fdmSnapToGuideLinesOption); DesignerMenuShowOptions:=RegisterIDEMenuCommand(DesignerMenuSectionOptions, - 'Show options',dlgFROpts, nil, nil, nil, 'menu_environment_options'); + 'Show options',lisOptions, nil, nil, nil, 'menu_environment_options'); end; // inline @@ -618,17 +624,19 @@ constructor TDesigner.Create(TheDesignerForm: TCustomForm; AControlSelection: TControlSelection); var + LNonControlDesigner: INonControlDesigner; i: integer; begin inherited Create; //debugln(['TDesigner.Create Self=',dbgs(Pointer(Self)),' TheDesignerForm=',DbgSName(TheDesignerForm)]); FForm := TheDesignerForm; - if FForm is TNonControlDesignerForm then begin - FLookupRoot := TNonControlDesignerForm(FForm).LookupRoot; - Mediator:=TNonControlDesignerForm(FForm).Mediator; + if FForm is BaseFormEditor1.NonFormProxyDesignerForm[NonControlProxyDesignerFormId] then begin + LNonControlDesigner := FForm as INonControlDesigner; + FLookupRoot := LNonControlDesigner.LookupRoot; + Mediator := LNonControlDesigner.Mediator; end - else if FForm is TFrameDesignerForm then - FLookupRoot := TFrameDesignerForm(FForm).LookupRoot + else if FForm is BaseFormEditor1.NonFormProxyDesignerForm[FrameProxyDesignerFormId] then + FLookupRoot := (FForm as IFrameDesigner).LookupRoot else FLookupRoot := FForm; @@ -1193,7 +1201,7 @@ NewSelection:=TControlSelection.Create; NewComponents:=TFPList.Create; try - Form.DisableAutoSizing; + Form.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDesigner.DoInsertFromStream'){$ENDIF}; try // read component stream from clipboard @@ -1222,7 +1230,7 @@ FOnPastedComponents(Self,FLookupRoot); finally - Form.EnableAutoSizing; + Form.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDesigner.DoInsertFromStream'){$ENDIF}; end; finally NewComponents.Free; @@ -1406,12 +1414,6 @@ FOnShowTabOrderEditor(Self); end; -procedure TDesigner.DoShowChangeClassDialog; -begin - if (ControlSelection.Count=1) and (not ControlSelection.LookupRootSelected) then - ShowChangeClassDialog(Self,ControlSelection[0].Persistent); -end; - procedure TDesigner.DoShowObjectInspector; begin if Assigned(FOnShowObjectInspector) then @@ -1515,8 +1517,7 @@ Result:=DoDeleteSelectedPersistents; end; -function TDesigner.InvokeComponentEditor(AComponent: TComponent; - MenuIndex: integer): boolean; +function TDesigner.InvokeComponentEditor(AComponent: TComponent): boolean; var CompEditor: TBaseComponentEditor; begin @@ -1551,6 +1552,14 @@ end; end; +function TDesigner.ChangeClass: boolean; +begin + if (ControlSelection.Count=1) and (not ControlSelection.LookupRootSelected) then + Result:=ShowChangeClassDialog(Self,ControlSelection[0].Persistent)=mrOK + else + Result:=false; +end; + procedure TDesigner.DoProcessCommand(Sender: TObject; var Command: word; var Handled: boolean); begin @@ -1859,10 +1868,11 @@ Message.Result := 1; end; -procedure TDesigner.GetMouseMsgShift(TheMessage: TLMMouse; - var Shift: TShiftState; var Button: TMouseButton); +procedure TDesigner.GetMouseMsgShift(TheMessage: TLMMouse; out + Shift: TShiftState; out Button: TMouseButton); begin Shift := []; + Button := mbLeft; if (TheMessage.Keys and MK_Shift) = MK_Shift then Include(Shift, ssShift); if (TheMessage.Keys and MK_Control) = MK_Control then @@ -1989,6 +1999,8 @@ DesignSender: TControl; Button: TMouseButton; Handled: Boolean; + MouseDownControl: TControl; + p: types.TPoint; begin FHintTimer.Enabled := False; FHintWindow.Visible := False; @@ -2011,6 +2023,13 @@ if ComponentIsIcon(MouseDownComponent) then begin + if Assigned(IDEComponentsMaster) then + if not IDEComponentsMaster.DrawNonVisualComponents(FLookupRoot) then + begin + MouseDownComponent := nil; + Exit; + end; + NonVisualComp := MouseDownComponent; MoveNonVisualComponentIntoForm(NonVisualComp); end; @@ -2041,12 +2060,14 @@ if (MouseDownComponent <> nil) and (MouseDownComponent is TControl) then begin - with TControl(MouseDownComponent).ScreenToClient(Form.ClientToScreen(MouseDownPos)) do - if TControl(MouseDownComponent).Perform(CM_DESIGNHITTEST, TheMessage.Keys, Longint(SmallPoint(X, Y))) > 0 then - begin - TControlAccess(MouseDownComponent).MouseDown(Button, Shift, X, Y); - Exit; - end; + MouseDownControl:=TControl(MouseDownComponent); + p:=MouseDownControl.ScreenToClient(Form.ClientToScreen(MouseDownPos)); + if (csDesignInteractive in MouseDownControl.ControlStyle) + or (MouseDownControl.Perform(CM_DESIGNHITTEST, TheMessage.Keys, Longint(SmallPoint(p.X, p.Y))) > 0) then + begin + TControlAccess(MouseDownComponent).MouseDown(Button, Shift, p.X, p.Y); + Exit; + end; end; if Mediator<>nil then begin @@ -2251,7 +2272,7 @@ NewLeft,NewTop,NewWidth,NewHeight,DisableAutoSize); if NewComponent=nil then exit; if DisableAutoSize and (NewComponent is TControl) then - TControl(NewComponent).EnableAutoSizing; + TControl(NewComponent).EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDesigner.MouseUpOnControl'){$ENDIF}; TheFormEditor.FixupReferences(NewComponent); // e.g. frame references a datamodule // modified @@ -2279,7 +2300,7 @@ // -> select new component SelectOnlyThisComponent(NewComponent); if Assigned(FOnComponentAdded) then // this resets the component palette to the selection tool - FOnComponentAdded(Self); + FOnComponentAdded(Self, NewComponent, SelectedCompClass); {$IFDEF VerboseDesigner} DebugLn('NEW COMPONENT ADDED: Form.ComponentCount=',DbgS(Form.ComponentCount), @@ -2343,7 +2364,7 @@ begin // Double Click -> invoke 'Edit' of the component editor FShiftState := Shift; - InvokeComponentEditor(MouseDownComponent, -1); + InvokeComponentEditor(MouseDownComponent); FShiftState := []; end; end; @@ -2359,6 +2380,8 @@ Handled: Boolean; i, j: Integer; SelectedPersistent: TSelectedControl; + MouseDownControl: TControl; + p: types.TPoint; begin FHintTimer.Enabled := False; FHintWindow.Visible := False; @@ -2396,12 +2419,14 @@ if (MouseDownComponent <> nil) and (MouseDownComponent is TControl) then begin - with TControl(MouseDownComponent).ScreenToClient(Form.ClientToScreen(MouseUpPos)) do - if TControl(MouseDownComponent).Perform(CM_DESIGNHITTEST, TheMessage.Keys, Longint(SmallPoint(X, Y))) > 0 then - begin - TControlAccess(MouseDownComponent).MouseUp(Button, Shift, X, Y); - Exit; - end; + MouseDownControl:=TControl(MouseDownComponent); + p:=MouseDownControl.ScreenToClient(Form.ClientToScreen(MouseUpPos)); + if (csDesignInteractive in MouseDownControl.ControlStyle) + or (MouseDownControl.Perform(CM_DESIGNHITTEST, TheMessage.Keys, Longint(SmallPoint(p.X, p.Y))) > 0) then + begin + TControlAccess(MouseDownComponent).MouseUp(Button, Shift, p.X, p.Y); + Exit; + end; end; if Mediator<>nil then @@ -2521,6 +2546,8 @@ DesignSender: TControl; Handled: Boolean; MouseMoveComponent: TComponent; + MouseMoveControl: TControl; + p: types.TPoint; begin GetMouseMsgShift(TheMessage, Shift, Button); @@ -2548,12 +2575,14 @@ MouseMoveComponent := ComponentAtPos(LastMouseMovePos.X, LastMouseMovePos.Y, True, True); if (MouseMoveComponent <> nil) and (MouseMoveComponent is TControl) then begin - with TControl(MouseMoveComponent).ScreenToClient(Form.ClientToScreen(LastMouseMovePos)) do - if TControl(MouseMoveComponent).Perform(CM_DESIGNHITTEST, TheMessage.Keys, Longint(SmallPoint(X, Y))) > 0 then - begin - TControlAccess(MouseMoveComponent).MouseMove(Shift, X, Y); - Exit; - end; + MouseMoveControl:=TControl(MouseMoveComponent); + p:=MouseMoveControl.ScreenToClient(Form.ClientToScreen(LastMouseMovePos)); + if (csDesignInteractive in MouseMoveControl.ControlStyle) + or (MouseMoveControl.Perform(CM_DESIGNHITTEST, TheMessage.Keys, Longint(SmallPoint(p.X, p.Y))) > 0) then + begin + TControlAccess(MouseMoveComponent).MouseMove(Shift, p.X, p.Y); + Exit; + end; end; if Mediator <> nil then @@ -2905,6 +2934,8 @@ // call ComponentDeleted handler if Assigned(FOnPersistentDeleted) then FOnPersistentDeleted(Self,APersistent); + if Hook<>nil then + Hook.PersistentDeleted; end; procedure TDesigner.MarkPersistentForDeletion(APersistent: TPersistent); @@ -3088,7 +3119,8 @@ ADDC.Canvas.Pen.Color := GridColor; ADDC.Canvas.Pen.Width := 1; ADDC.Canvas.Pen.Style := psSolid; - DrawGrid(ADDC.Canvas.Handle, AWinControl.ClientRect, GridSizeX, GridSizeY); + DrawGrid(ADDC.Canvas.Handle, TWinControlAccess(AWinControl).GetLogicalClientRect, + GridSizeX, GridSizeY); end; if ShowBorderSpacing then @@ -3185,7 +3217,7 @@ procedure TDesigner.OnChangeClassMenuClick(Sender: TObject); begin - DoShowChangeClassDialog; + ChangeClass; end; procedure TDesigner.OnChangeParentMenuClick(Sender: TObject); @@ -3355,11 +3387,6 @@ EnvironmentOptions.GridSizeY:=AValue; end; -procedure TDesigner.SetIsControl(Value: Boolean); -begin - -end; - procedure TDesigner.SetMediator(const AValue: TDesignerMediator); begin if Mediator=AValue then exit; @@ -3574,7 +3601,10 @@ ControlSelection.DrawMarkers(DDC); end; // non visual component icons - DrawNonVisualComponents(DDC); + if not Assigned(IDEComponentsMaster) + or IDEComponentsMaster.DrawNonVisualComponents(FLookupRoot) then + DrawNonVisualComponents(DDC); + // guidelines and grabbers if (ControlSelection.SelectionForm=Form) then begin @@ -3965,7 +3995,6 @@ if ShowAlignComponentsDialog(HorizAlignID,VertAlignID)=mrOk then begin case HorizAlignID of - 0: HorizAlignment:=csaNone; 1: HorizAlignment:=csaSides1; 2: HorizAlignment:=csaCenters; 3: HorizAlignment:=csaSides2; @@ -3973,9 +4002,9 @@ 5: HorizAlignment:=csaSpaceEqually; 6: HorizAlignment:=csaSide1SpaceEqually; 7: HorizAlignment:=csaSide2SpaceEqually; + else HorizAlignment:=csaNone; // value=0, this prevents compiler warning. end; case VertAlignID of - 0: VertAlignment:=csaNone; 1: VertAlignment:=csaSides1; 2: VertAlignment:=csaCenters; 3: VertAlignment:=csaSides2; @@ -3983,6 +4012,7 @@ 5: VertAlignment:=csaSpaceEqually; 6: VertAlignment:=csaSide1SpaceEqually; 7: VertAlignment:=csaSide2SpaceEqually; + else VertAlignment:=csaNone; // value=0, this prevents compiler warning. end; ControlSelection.AlignComponents(HorizAlignment,VertAlignment); Modified; @@ -4021,16 +4051,16 @@ if ShowSizeComponentsDialog(HorizSizingID,AWidth,VertSizingID,AHeight) = mrOk then begin case HorizSizingID of - 0: HorizSizing:=cssNone; 1: HorizSizing:=cssShrinkToSmallest; 2: HorizSizing:=cssGrowToLargest; 3: HorizSizing:=cssFixed; + else HorizSizing:=cssNone; // value=0, this prevents compiler warning. end; case VertSizingID of - 0: VertSizing:=cssNone; 1: VertSizing:=cssShrinkToSmallest; 2: VertSizing:=cssGrowToLargest; 3: VertSizing:=cssFixed; + else VertSizing:=cssNone; // value=0, this prevents compiler warning. end; ControlSelection.SizeComponents(HorizSizing,AWidth,VertSizing,AHeight); Modified; @@ -4078,7 +4108,7 @@ lisSelectedAndChildControls, mrCancel]); if not (MsgResult in [mrYes,mrYesToAll]) then exit; HasChanged:=false; - Form.DisableAutoSizing; + Form.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDesigner.OnResetPopupMenuClick'){$ENDIF}; ResetComps:=TFPList.Create; try for i:=0 to ControlSelection.Count-1 do begin @@ -4100,7 +4130,7 @@ end; finally ResetComps.Free; - Form.EnableAutoSizing; + Form.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDesigner.OnResetPopupMenuClick'){$ENDIF}; if HasChanged then Modified; end; diff -Nru lazarus-1.4.4+dfsg/designer/designerprocs.pas lazarus-1.6+dfsg/designer/designerprocs.pas --- lazarus-1.4.4+dfsg/designer/designerprocs.pas 2014-02-27 12:49:45.000000000 +0000 +++ lazarus-1.6+dfsg/designer/designerprocs.pas 2015-03-10 16:02:54.000000000 +0000 @@ -107,7 +107,7 @@ function GetFormRelativeMousePosition(Form: TCustomForm): TPoint; procedure GetComponentBounds(AComponent: TComponent; - var Left, Top, Width, Height: integer); + out Left, Top, Width, Height: integer); function GetComponentLeft(AComponent: TComponent): integer; function GetComponentTop(AComponent: TComponent): integer; function GetComponentWidth(AComponent: TComponent): integer; @@ -250,8 +250,8 @@ dec(Result.Y,FormClientOrigin.Y); end; -procedure GetComponentBounds(AComponent: TComponent; - var Left, Top, Width, Height: integer); +procedure GetComponentBounds(AComponent: TComponent; out Left, Top, Width, + Height: integer); begin if AComponent is TControl then begin diff -Nru lazarus-1.4.4+dfsg/designer/framedesigner.pas lazarus-1.6+dfsg/designer/framedesigner.pas --- lazarus-1.4.4+dfsg/designer/framedesigner.pas 2012-09-02 00:32:29.000000000 +0000 +++ lazarus-1.6+dfsg/designer/framedesigner.pas 2015-07-12 23:05:08.000000000 +0000 @@ -37,7 +37,7 @@ { TFrameDesignerForm } - TFrameDesignerForm = class(TCustomNonFormDesignerForm) + TFrameDesignerForm = class(TCustomNonFormDesignerForm, INonFormDesigner, IFrameDesigner) protected FChangingBounds: Boolean; FResizing: Boolean; @@ -45,7 +45,8 @@ procedure OnControlChangeBounds(Sender: TObject); procedure OnControlResize(Sender: TObject); public - constructor Create(AOwner: TComponent); override; + procedure Create; override; + constructor Create(ANonFormProxyDesignerForm: TNonFormProxyDesignerForm); override; destructor Destroy; override; procedure DoLoadBounds; override; procedure DoSaveBounds; override; @@ -57,14 +58,6 @@ { TFrameDesignerForm } -constructor TFrameDesignerForm.Create(AOwner: TComponent); -begin - Position := poDesigned; - inherited Create(AOwner); - // workaround problem with out assumption that Width = ClientWidth, Height = ClientHeight - AutoScroll := False; -end; - destructor TFrameDesignerForm.Destroy; begin if LookupRoot is TControl then @@ -82,7 +75,7 @@ if (AValue is TControl) then begin AControl := TControl(AValue); - AControl.Parent := Self; + AControl.Parent := NonFormProxyDesignerForm; AControl.AddHandlerOnChangeBounds(@OnControlChangeBounds, True); AControl.AddHandlerOnResize(@OnControlResize, True); end; @@ -102,7 +95,7 @@ for a := Low(TAnchorKind) to High(TAnchorKind) do AControl.AnchorSide[a].Control := nil; // reset left, top but save width and height - AControl.SetBounds(0, 0, AControl.Width, AControl.Height); + NonFormProxyDesignerForm.SetLookupRootBounds(0, 0, AControl.Width, AControl.Height); finally FChangingBounds := False; end; @@ -117,22 +110,48 @@ FResizing := True; try // update form bounds - SetBounds(Left, Top, AControl.Width, AControl.Height); + with NonFormProxyDesignerForm do + SetPublishedBounds(Left, Top, AControl.Width, AControl.Height); finally FResizing := False; end; end; +procedure TFrameDesignerForm.Create; +begin + inherited Create; + // workaround problem with out assumption that Width = ClientWidth, Height = ClientHeight + NonFormProxyDesignerForm.AutoScroll := False; +end; + +constructor TFrameDesignerForm.Create( + ANonFormProxyDesignerForm: TNonFormProxyDesignerForm); +begin + inherited Create(ANonFormProxyDesignerForm); + NonFormProxyDesignerForm.Position := poDesigned; +end; + procedure TFrameDesignerForm.DoLoadBounds; procedure SetNewBounds(NewLeft, NewTop, NewWidth, NewHeight: integer); begin - if NewWidth <= 0 then NewWidth := Width; - if NewHeight <= 0 then NewHeight := Height; - - NewWidth := Max(20, Min(NewWidth, Screen.Width - 50)); - NewHeight := Max(20, Min(NewHeight, Screen.Height - 50)); - SetBounds(NewLeft, NewTop, Max(20, NewWidth), Max(NewHeight, 20)); + with NonFormProxyDesignerForm do + begin + if NewWidth <= 0 then NewWidth := Width; + if NewHeight <= 0 then NewHeight := Height; + + if DockedDesigner then + begin + NewLeft:=Max(0,NewLeft); + NewTop:=Max(0,NewTop); + end + else + begin + NewWidth := Max(20, Min(NewWidth, Screen.Width - 50)); + NewHeight := Max(20, Min(NewHeight, Screen.Height - 50)); + end; + SetPublishedBounds(NewLeft, NewTop, NewWidth, NewHeight); + end; end; var @@ -159,11 +178,12 @@ procedure TFrameDesignerForm.DoSaveBounds; begin if LookupRoot is TControl then + with NonFormProxyDesignerForm do begin // store designer position LookupRoot.DesignInfo := LeftTopToDesignInfo(Left, Top); // always fill the whole designer form - TControl(LookupRoot).SetBounds(0, 0, Width, Height); + SetLookupRootBounds(0, 0, Width, Height); //DebugLn(['TFrameDesignerForm.DoSaveBounds ',Left,',',Top,' ',LazLongRec(LookupRoot.DesignInfo).Lo,',',LazLongRec(LookupRoot.DesignInfo).hi]); end else @@ -176,8 +196,9 @@ begin // auto apply width and height inherited SetBounds(aLeft, aTop, aWidth, aHeight); - if (LookupRoot is TControl) then - TControl(LookupRoot).SetBounds(0, 0, Width, Height); + + with NonFormProxyDesignerForm do + SetLookupRootBounds(0, 0, Width, Height); end; end. diff -Nru lazarus-1.4.4+dfsg/designer/jitforms.pp lazarus-1.6+dfsg/designer/jitforms.pp --- lazarus-1.4.4+dfsg/designer/jitforms.pp 2014-02-27 12:49:45.000000000 +0000 +++ lazarus-1.6+dfsg/designer/jitforms.pp 2015-10-26 22:21:14.000000000 +0000 @@ -1043,7 +1043,7 @@ //debugln('[TJITForms.DoCreateJITComponent] Creating an instance of JIT class "'+NewClassName+'" = class('+AncestorClass.ClassName+') ...'); Instance:=TComponent(FCurReadClass.NewInstance); if DisableAutoSize and (Instance is TControl) then - TControl(Instance).DisableAutoSizing; + TControl(Instance).DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster Delayed'){$ENDIF}; //debugln('[TJITForms.DoCreateJITComponent] Initializing new instance ... ',DbgS(Instance)); TComponent(FCurReadJITComponent):=Instance; try diff -Nru lazarus-1.4.4+dfsg/designer/menueditorform.pas lazarus-1.6+dfsg/designer/menueditorform.pas --- lazarus-1.4.4+dfsg/designer/menueditorform.pas 2012-06-15 20:25:23.000000000 +0000 +++ lazarus-1.6+dfsg/designer/menueditorform.pas 2015-03-22 10:17:35.000000000 +0000 @@ -50,7 +50,7 @@ Panel: TPanel; Panel_MenuList:TPanel; Splitter_BoxPanel:TSplitter; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure List_menusClick(Sender: TObject); @@ -59,7 +59,7 @@ FMenu: TMenu; FDesigner: TComponentEditorDesigner; procedure OnPersistentDeleting(APersistent: TPersistent); - procedure OnPersistentAdded(APersistent: TPersistent; Select: boolean); + procedure OnPersistentAdded(APersistent: TPersistent; {%H-}Select: boolean); procedure UpdateListOfMenus; public procedure SetMenu(NewMenu: TMenu); @@ -252,6 +252,7 @@ begin case Index of 0: Result := lisMenuEditor; + else Result := '';; end; end; diff -Nru lazarus-1.4.4+dfsg/designer/noncontroldesigner.pas lazarus-1.6+dfsg/designer/noncontroldesigner.pas --- lazarus-1.4.4+dfsg/designer/noncontroldesigner.pas 2014-05-28 23:12:11.000000000 +0000 +++ lazarus-1.6+dfsg/designer/noncontroldesigner.pas 2015-09-08 10:42:17.000000000 +0000 @@ -38,25 +38,25 @@ { TNonControlDesignerForm } - TNonControlDesignerForm = class(TCustomNonFormDesignerForm) + TNonControlDesignerForm = class(TCustomNonFormDesignerForm, INonFormDesigner, INonControlDesigner) private FFrameWidth: integer; - FMediator: TDesignerMediator; - procedure SetMediator(const AValue: TDesignerMediator); + function GetMediator: TDesignerMediator; + procedure SetMediator(AValue: TDesignerMediator); protected procedure SetFrameWidth(const AValue: integer); virtual; - procedure DoSetBounds(ALeft, ATop, AWidth, AHeight: integer); override; procedure Notification(AComponent: TComponent; Operation: TOperation); override; public - constructor Create(TheOwner: TComponent); override; + procedure Create; override; overload; destructor Destroy; override; procedure Paint; override; + procedure SetBounds(aLeft, aTop, aWidth, aHeight: integer); override; procedure DoLoadBounds; override; procedure DoSaveBounds; override; public property FrameWidth: integer read FFrameWidth write SetFrameWidth; - property Mediator: TDesignerMediator read FMediator write SetMediator; + property Mediator: TDesignerMediator read GetMediator write SetMediator; end; @@ -65,18 +65,26 @@ { TNonControlDesignerForm } -procedure TNonControlDesignerForm.SetMediator(const AValue: TDesignerMediator); +function TNonControlDesignerForm.GetMediator: TDesignerMediator; begin - if FMediator=AValue then exit; - if FMediator<>nil then begin - FMediator.LCLForm:=nil; - FMediator.RemoveFreeNotification(Self); - end; - FMediator:=AValue; - if FMediator<>nil then begin - FMediator.LCLForm:=Self; - FMediator.FreeNotification(Self); - DoLoadBounds; + Result := TNonControlProxyDesignerForm(NonFormProxyDesignerForm).Mediator; +end; + +procedure TNonControlDesignerForm.SetMediator(AValue: TDesignerMediator); +begin + with TNonControlProxyDesignerForm(NonFormProxyDesignerForm) do + begin + if Mediator=AValue then exit; + if Mediator<>nil then begin + Mediator.LCLForm:=nil; + Mediator.RemoveFreeNotification(NonFormProxyDesignerForm); + end; + Mediator:=AValue; + if Mediator<>nil then begin + Mediator.LCLForm:=NonFormProxyDesignerForm; + Mediator.FreeNotification(NonFormProxyDesignerForm); + DoLoadBounds; + end; end; end; @@ -85,15 +93,15 @@ if FFrameWidth = AValue then Exit; FFrameWidth := AValue; - Invalidate; + NonFormProxyDesignerForm.Invalidate; end; -procedure TNonControlDesignerForm.DoSetBounds(ALeft, ATop, AWidth, - AHeight: integer); +procedure TNonControlDesignerForm.SetBounds(aLeft, aTop, aWidth, + aHeight: integer); begin - inherited DoSetBounds(ALeft, ATop, AWidth, AHeight); + inherited SetBounds(ALeft, ATop, AWidth, AHeight); if Mediator<>nil then - Mediator.SetFormBounds(LookupRoot,BoundsRect,ClientRect); + Mediator.SetFormBounds(LookupRoot,NonFormProxyDesignerForm.BoundsRect,NonFormProxyDesignerForm.ClientRect); end; procedure TNonControlDesignerForm.Notification(AComponent: TComponent; @@ -101,21 +109,25 @@ begin inherited Notification(AComponent, Operation); if Operation=opRemove then begin - if FMediator=AComponent then FMediator:=nil; + if Mediator=AComponent then Mediator:=nil; end; end; -constructor TNonControlDesignerForm.Create(TheOwner: TComponent); +procedure TNonControlDesignerForm.Create; begin - inherited Create(TheOwner); + inherited; FFrameWidth := 1; - ControlStyle := ControlStyle - [csAcceptsControls]; + NonFormProxyDesignerForm.ControlStyle := NonFormProxyDesignerForm.ControlStyle - [csAcceptsControls]; end; destructor TNonControlDesignerForm.Destroy; +var + tmp: TDesignerMediator; begin try - FreeAndNil(FMediator); + tmp := Mediator; + Mediator := nil; + tmp.Free; except on E: Exception do begin debugln(['TNonControlDesignerForm.Destroy freeing mediator failed: ',E.Message]); @@ -129,15 +141,16 @@ ARect: TRect; begin inherited Paint; + with NonFormProxyDesignerForm do with Canvas do begin if LookupRoot is TDataModule then begin Brush.Color:=clWhite; ARect:=Rect(FrameWidth,FrameWidth, - Self.ClientWidth-FrameWidth, - Self.ClientHeight-FrameWidth); + ClientWidth-FrameWidth, + ClientHeight-FrameWidth); FillRect(ARect); - ARect:=Rect(0,0,Self.ClientWidth+1,Self.ClientHeight+1); + ARect:=Rect(0,0,ClientWidth+1,ClientHeight+1); Pen.Color:=clBlack; Frame3d(ARect, FrameWidth, bvLowered); end; @@ -150,16 +163,27 @@ procedure SetNewBounds(NewLeft, NewTop, NewWidth, NewHeight: integer); begin - if NewWidth<=0 then NewWidth:=Width; - if NewHeight<=0 then NewHeight:=Height; - - NewWidth:=Max(20,Min(NewWidth,Screen.Width-50)); - NewHeight:=Max(20,Min(NewHeight,Screen.Height-50)); - NewLeft:=Max(0,Min(NewLeft,Screen.Width-NewWidth-50)); - NewTop:=Max(0,Min(NewTop,Screen.Height-NewHeight-50)); + with NonFormProxyDesignerForm do + begin + if NewWidth<=0 then NewWidth:=Width; + if NewHeight<=0 then NewHeight:=Height; - //debugln('TNonControlDesignerForm.DoLoadBounds (TDataModule) ',dbgsName(LookupRoot),' ',dbgs(NewLeft),',',dbgs(NewTop),',',dbgs(NewWidth),',',dbgs(NewHeight)); - SetBounds(NewLeft,NewTop,Max(20,NewWidth),Max(NewHeight,20)); + if DockedDesigner then + begin + NewLeft:=Max(0,NewLeft); + NewTop:=Max(0,NewTop); + SetPublishedBounds(NewLeft,NewTop,Max(0,NewWidth),Max(NewHeight,0)); + end + else + begin + NewWidth:=Max(20,Min(NewWidth,Screen.Width-50)); + NewHeight:=Max(20,Min(NewHeight,Screen.Height-50)); + NewLeft:=Max(0,Min(NewLeft,Screen.Width-NewWidth-50)); + NewTop:=Max(0,Min(NewTop,Screen.Height-NewHeight-50)); + SetPublishedBounds(NewLeft,NewTop,Max(20,NewWidth),Max(NewHeight,20)); + end; + //debugln('TNonControlDesignerForm.DoLoadBounds (TDataModule) ',dbgsName(LookupRoot),' ',dbgs(NewLeft),',',dbgs(NewTop),',',dbgs(NewWidth),',',dbgs(NewHeight)); + end; end; var @@ -180,7 +204,7 @@ NewHeight := CurDataModule.DesignSize.Y; SetNewBounds(NewLeft, NewTop, NewWidth, NewHeight); - end else begin + end else with NonFormProxyDesignerForm do begin if Mediator<>nil then begin Mediator.GetFormBounds(LookupRoot,NewBounds,NewClientRect); NewLeft:=NewBounds.Left; @@ -203,17 +227,23 @@ end; procedure TNonControlDesignerForm.DoSaveBounds; +var + LBoundsRect: TRect; + LClientRect: TRect; begin if LookupRoot is TDataModule then begin - with TDataModule(LookupRoot) do begin + with NonFormProxyDesignerForm, TDataModule(LookupRoot) do begin DesignOffset:=Point(Left,Top); DesignSize:=Point(Width,Height); //debugln('TNonControlDesignerForm.DoSaveBounds (TDataModule) ',dbgsName(LookupRoot),' ',dbgs(DesignOffset.X),',',dbgs(DesignOffset.Y)); end; - end else if LookupRoot<>nil then begin + end else if LookupRoot<>nil then with NonFormProxyDesignerForm do begin //debugln(['TNonControlDesignerForm.DoSaveBounds ',dbgsName(LookupRoot),' ',dbgs(Left),',',dbgs(Top),' ',DbgSName(Mediator)]); if Mediator<>nil then begin - Mediator.SetFormBounds(LookupRoot,BoundsRect,ClientRect); + LBoundsRect := Rect(Left, Top, Left + Width, Top + Height); + LClientRect := Rect(0, 0, Width, Height); + + Mediator.SetFormBounds(LookupRoot, LBoundsRect, LClientRect); end else begin SetComponentLeftTopOrDesignInfo(LookupRoot,Left,Top); end; diff -Nru lazarus-1.4.4+dfsg/designer/objinspext.pas lazarus-1.6+dfsg/designer/objinspext.pas --- lazarus-1.4.4+dfsg/designer/objinspext.pas 2014-06-15 11:52:27.000000000 +0000 +++ lazarus-1.6+dfsg/designer/objinspext.pas 2015-07-04 23:08:00.000000000 +0000 @@ -17,11 +17,11 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Buttons, StdCtrls, TypInfo, + Classes, SysUtils, LCLProc, Forms, Controls, Buttons, StdCtrls, ExtCtrls, Dialogs, Menus, ComCtrls, Grids, CustomTimer, - DirectoryCacher, CodeToolManager, CodeCache, PropEdits, + CodeToolManager, CodeCache, PropEdits, LazIDEIntf, ProjectIntf, ObjectInspector, OIFavoriteProperties, - DialogProcs, FileUtil, LazConf, BaseIDEIntf, IDEDialogs, LazConfigStorage, + DialogProcs, LazFileUtils, LazConf, BaseIDEIntf, IDEDialogs, LazConfigStorage, LazarusIDEStrConsts; type diff -Nru lazarus-1.4.4+dfsg/designer/scalecompsdlg.lfm lazarus-1.6+dfsg/designer/scalecompsdlg.lfm --- lazarus-1.4.4+dfsg/designer/scalecompsdlg.lfm 2009-05-01 12:41:29.000000000 +0000 +++ lazarus-1.6+dfsg/designer/scalecompsdlg.lfm 2015-05-17 11:41:35.000000000 +0000 @@ -1,65 +1,75 @@ object ScaleComponentsDialog: TScaleComponentsDialog - Left = 642 - Height = 87 - Top = 378 - Width = 256 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsToolWindow + Left = 391 + Height = 107 + Top = 430 + Width = 301 + ActiveControl = PercentEdit + BorderIcons = [biSystemMenu] + BorderStyle = bsDialog Caption = 'ScaleComponentsDialog' - ClientHeight = 87 - ClientWidth = 256 + ClientHeight = 107 + ClientWidth = 301 Position = poScreenCenter - LCLVersion = '0.9.27' + LCLVersion = '1.5' object PercentLabel: TLabel + AnchorSideLeft.Control = PercentEdit + AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = PercentEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 187 - Height = 14 - Top = 10 - Width = 63 - Anchors = [akTop, akRight] - BorderSpacing.Right = 6 + Left = 186 + Height = 15 + Top = 35 + Width = 68 + BorderSpacing.Left = 6 Caption = 'PercentLabel' ParentColor = False end object ScaleLabel: TLabel AnchorSideLeft.Control = Owner - AnchorSideTop.Control = PercentEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 14 + Height = 15 Top = 10 - Width = 51 + Width = 55 BorderSpacing.Left = 6 Caption = 'ScaleLabel' ParentColor = False end - object PercentEdit: TEdit - AnchorSideLeft.Control = ScaleLabel - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Owner - AnchorSideRight.Control = PercentLabel - Left = 63 - Height = 23 - Top = 6 - Width = 118 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - TabOrder = 0 - Text = 'PercentEdit' - end object ButtonPanel1: TButtonPanel - AnchorSideTop.Control = PercentEdit AnchorSideTop.Side = asrBottom Left = 6 - Height = 34 - Top = 47 - Width = 244 + Height = 26 + Top = 75 + Width = 289 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 1 ShowButtons = [pbOK, pbCancel] + ShowBevel = False + end + object PercentEdit: TSpinEdit + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = ScaleLabel + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Owner + Left = 112 + Height = 23 + Top = 31 + Width = 68 + Anchors = [akTop] + BorderSpacing.Top = 6 + Increment = 10 + MaxValue = 2000 + MinValue = 5 + TabOrder = 0 + Value = 5 end end diff -Nru lazarus-1.4.4+dfsg/designer/scalecompsdlg.pp lazarus-1.6+dfsg/designer/scalecompsdlg.pp --- lazarus-1.4.4+dfsg/designer/scalecompsdlg.pp 2010-01-14 09:26:08.000000000 +0000 +++ lazarus-1.6+dfsg/designer/scalecompsdlg.pp 2015-05-17 11:41:35.000000000 +0000 @@ -31,7 +31,7 @@ uses Classes, SysUtils, LCLIntf, LCLProc, Forms, Controls, Buttons, StdCtrls, - ExtCtrls, LazarusIDEStrConsts, ButtonPanel; + ExtCtrls, LazarusIDEStrConsts, ButtonPanel, Spin; type @@ -39,29 +39,27 @@ TScaleComponentsDialog = class(TForm) ButtonPanel1: TButtonPanel; + PercentEdit: TSpinEdit; ScaleLabel: TLabel; - PercentEdit: TEdit; PercentLabel: TLabel; public constructor Create(AOwner: TComponent); override; end; -function ShowScaleComponentsDialog(var ScaleInPercent: integer): TModalResult; +function ShowScaleComponentsDialog(out ScaleInPercent: integer): TModalResult; implementation {$R *.lfm} -function ShowScaleComponentsDialog(var ScaleInPercent: integer): TModalResult; -var - ScaleComponentsDialog: TScaleComponentsDialog; +function ShowScaleComponentsDialog(out ScaleInPercent: integer): TModalResult; begin - ScaleComponentsDialog:=TScaleComponentsDialog.Create(nil); - with ScaleComponentsDialog do - begin - PercentEdit.Text:='100'; + with TScaleComponentsDialog.Create(nil) do + try + PercentEdit.Value:=100; Result:=ShowModal; - ScaleInPercent:=StrToIntDef(ScaleComponentsDialog.PercentEdit.Text,100); + ScaleInPercent:=PercentEdit.Value; + finally Free; end; end; diff -Nru lazarus-1.4.4+dfsg/designer/sizecompsdlg.pp lazarus-1.6+dfsg/designer/sizecompsdlg.pp --- lazarus-1.4.4+dfsg/designer/sizecompsdlg.pp 2012-11-28 22:00:51.000000000 +0000 +++ lazarus-1.6+dfsg/designer/sizecompsdlg.pp 2015-03-10 15:00:35.000000000 +0000 @@ -53,7 +53,7 @@ constructor Create(AOwner: TComponent); override; end; -function ShowSizeComponentsDialog(var HorizSizingID, FixedWidth, +function ShowSizeComponentsDialog(out HorizSizingID, FixedWidth, VertSizingID, FixedHeight: integer): TModalResult; implementation @@ -63,8 +63,8 @@ uses LazarusIDEStrConsts; -function ShowSizeComponentsDialog(var HorizSizingID, FixedWidth, - VertSizingID, FixedHeight: integer): TModalResult; +function ShowSizeComponentsDialog(out HorizSizingID, FixedWidth, VertSizingID, + FixedHeight: integer): TModalResult; var SizeComponentsDialog: TSizeComponentsDialog; begin @@ -76,6 +76,7 @@ FixedWidth := StrToIntDef(WidthEdit.Text,0); VertSizingID := HeightRadioGroup.ItemIndex; FixedHeight := StrToIntDef(HeightEdit.Text,0); + Free; end; end; diff -Nru lazarus-1.4.4+dfsg/designer/taborderdlg.pas lazarus-1.6+dfsg/designer/taborderdlg.pas --- lazarus-1.4.4+dfsg/designer/taborderdlg.pas 2015-06-25 20:38:58.000000000 +0000 +++ lazarus-1.6+dfsg/designer/taborderdlg.pas 2015-06-28 12:27:53.000000000 +0000 @@ -32,7 +32,7 @@ interface uses - Classes, SysUtils, Forms, Controls, Dialogs, Buttons, ComCtrls, + Classes, SysUtils, Forms, Controls, Dialogs, Buttons, ComCtrls, IDEOptionDefs, LCLType, LCLProc, PropEdits, IDEDialogs, LazarusIDEStrConsts, AvgLvlTree; type @@ -47,9 +47,9 @@ procedure SortByPositionButtonClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure ItemTreeviewClick(Sender: TObject); - procedure TabOrderDialogCREATE(Sender: TObject); - procedure UpSpeedbuttonCLICK(Sender: TObject); - procedure DownSpeedbuttonCLICK(Sender: TObject); + procedure TabOrderDialogCreate(Sender: TObject); + procedure UpSpeedbuttonClick(Sender: TObject); + procedure DownSpeedbuttonClick(Sender: TObject); procedure ItemTreeviewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private FUpdating: Boolean; @@ -60,9 +60,9 @@ Candidates: TAvgLvlTree); procedure RefreshTree; procedure OnSomethingChanged; - procedure OnPersistentAdded(APersistent: TPersistent; Select: boolean); - procedure OnPersistentDeleting(APersistent: TPersistent); - procedure OnDeletePersistent(var APersistent: TPersistent); + procedure OnPersistentAdded({%H-}APersistent: TPersistent; {%H-}Select: boolean); + procedure OnPersistentDeleting({%H-}APersistent: TPersistent); + procedure OnDeletePersistent(var {%H-}APersistent: TPersistent); procedure OnSetSelection(const ASelection: TPersistentSelectionList); end; @@ -121,8 +121,10 @@ { TTabOrderDialog } -procedure TTabOrderDialog.TabOrderDialogCREATE(Sender: TObject); +procedure TTabOrderDialog.TabOrderDialogCreate(Sender: TObject); begin + Name := NonModalIDEWindowNames[nmiwTabOrderEditor]; + GlobalDesignHook.AddHandlerChangeLookupRoot(@OnSomethingChanged); GlobalDesignHook.AddHandlerRefreshPropertyValues(@OnSomethingChanged); GlobalDesignHook.AddHandlerPersistentAdded(@OnPersistentAdded); @@ -202,7 +204,7 @@ CheckButtonsEnabled; end; -procedure TTabOrderDialog.UpSpeedbuttonCLICK(Sender: TObject); +procedure TTabOrderDialog.UpSpeedbuttonClick(Sender: TObject); var CurItem, NewItem: TTreeNode; begin @@ -212,7 +214,7 @@ SwapNodes(NewItem, CurItem, CurItem); end; -procedure TTabOrderDialog.DownSpeedbuttonCLICK(Sender: TObject); +procedure TTabOrderDialog.DownSpeedbuttonClick(Sender: TObject); var CurItem, NewItem: TTreeNode; begin @@ -369,7 +371,8 @@ Candidates.Free; end; Caption := Format(lisTabOrderOf, [TWinControl(LookupRoot).Name]); - end; + end else + Caption := lisMenuViewTabOrder; finally ItemTreeview.EndUpdate; FUpdating := false; diff -Nru lazarus-1.4.4+dfsg/doceditor/freditor.pp lazarus-1.6+dfsg/doceditor/freditor.pp --- lazarus-1.4.4+dfsg/doceditor/freditor.pp 2013-09-29 09:56:37.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/freditor.pp 2015-02-06 18:25:31.000000000 +0000 @@ -27,9 +27,11 @@ interface -uses SysUtils, Classes, DOM, xmlread, xmlwrite, Forms, Controls, ExtCtrls, - StdCtrls, Dialogs, Menus, fpdeutil, Lazdemsg, Lazdeopts, - GraphType, ActnList, LResources, Buttons; +uses + SysUtils, Classes, StrUtils, + Forms, Controls, ExtCtrls, Buttons, StdCtrls, Dialogs, Menus, + DOM, xmlread, xmlwrite, fpdeutil, Lazdemsg, Lazdeopts, + GraphType, ActnList, LResources, LazUTF8; Type @@ -154,7 +156,7 @@ implementation -uses frmexample, frmLink, StrUtils, LCLProc, FrmMain; +uses frmexample, frmLink, FrmMain; Function JoinLinkText(lblShortDescr,T : String): String; begin diff -Nru lazarus-1.4.4+dfsg/doceditor/frmabout.pp lazarus-1.6+dfsg/doceditor/frmabout.pp --- lazarus-1.4.4+dfsg/doceditor/frmabout.pp 2010-03-10 21:45:34.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/frmabout.pp 2015-07-04 23:08:27.000000000 +0000 @@ -27,8 +27,7 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons, - StdCtrls, ButtonPanel; + SysUtils, Forms, StdCtrls, ButtonPanel, LazFileUtils; const LicenseFile = 'COPYING.GPL.txt'; @@ -54,7 +53,7 @@ AboutForm: TAboutForm; implementation -uses LazDEMsg, FileUtil; +uses LazDEMsg; {$R *.lfm} diff -Nru lazarus-1.4.4+dfsg/doceditor/frmbuild.pp lazarus-1.6+dfsg/doceditor/frmbuild.pp --- lazarus-1.4.4+dfsg/doceditor/frmbuild.pp 2013-07-23 22:18:51.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/frmbuild.pp 2015-07-04 23:08:27.000000000 +0000 @@ -27,9 +27,8 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, - FileUtil, Buttons, ComCtrls, EditBtn, ExtCtrls, ActnList, Grids, - UTF8Process; + Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, + LazFileUtils, ComCtrls, EditBtn, ExtCtrls, ActnList, Grids, UTF8Process; type { TBuildForm } diff -Nru lazarus-1.4.4+dfsg/doceditor/frmexample.pp lazarus-1.6+dfsg/doceditor/frmexample.pp --- lazarus-1.4.4+dfsg/doceditor/frmexample.pp 2010-02-19 02:59:18.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/frmexample.pp 2015-07-04 23:08:27.000000000 +0000 @@ -27,8 +27,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Buttons, EditBtn, StdCtrls, ButtonPanel; + SysUtils, LazFileUtils, Forms, Controls, Dialogs, EditBtn, StdCtrls, ButtonPanel; type diff -Nru lazarus-1.4.4+dfsg/doceditor/frmmain.pp lazarus-1.6+dfsg/doceditor/frmmain.pp --- lazarus-1.4.4+dfsg/doceditor/frmmain.pp 2015-01-07 10:18:23.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/frmmain.pp 2015-07-04 23:08:27.000000000 +0000 @@ -27,9 +27,9 @@ interface uses - Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, - FileUtil, Menus, ActnList, ExtCtrls, ComCtrls, pgeditor, - process, UTF8Process, StdActns, fpdeutil; + Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, + Menus, ActnList, ExtCtrls, ComCtrls, pgeditor, + LazFileUtils, LazUTF8, process, UTF8Process, StdActns, fpdeutil; type TNodeType = (ntFile,ntPackage,ntModule,ntElement,ntTopic); diff -Nru lazarus-1.4.4+dfsg/doceditor/languages/lazde.fr.po lazarus-1.6+dfsg/doceditor/languages/lazde.fr.po --- lazarus-1.4.4+dfsg/doceditor/languages/lazde.fr.po 2015-05-06 22:54:21.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/languages/lazde.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -3,12 +3,12 @@ "Content-Type: text/plain; charset=UTF-8\n" "Last-Translator: Yann Merignac \n" "Language-Team: Vasseur Gilles \n" -"PO-Revision-Date: 2015-04-29 15:02+0100\n" +"PO-Revision-Date: 2016-01-25 10:17+0100\n" "Language: fr\n" "Content-Transfer-Encoding: 8bit\n" "MIME-Version: 1.0\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" @@ -60,7 +60,7 @@ #: lazdemsg.scopyright1 msgid "This application is (c) by Michael Van Canneyt and the Lazarus team" -msgstr "Ce programme est (c) Michael Van Canneyt et l'équipe Lazarus" +msgstr "Ce programme est (c) de Michael Van Canneyt et de l'équipe Lazarus" #: lazdemsg.scopyright2 msgid "It is released under the terms of the GENERAL PUBLIC LICENSE:" @@ -172,7 +172,7 @@ #: lazdemsg.shideprotectedmethods msgid "&Hide protected methods" -msgstr "Cacher les méthodes protégées" +msgstr "Cac&her les méthodes protégées" #: lazdemsg.shinteditelementlink msgid "Edit element link" @@ -672,7 +672,7 @@ #: lazdemsg.ssavebeforebuildquestion msgid "You have unsaved changes in \"%s\".%sThey should be saved in order to be visible in built documentation. Save them?" -msgstr "Il reste des modifications non enregistrées dans \"%s\".%s Elles doivent être enregistrées pour être visibles dans la documentation produite. Voulez-vous les enregistrer ?" +msgstr "Il reste des modifications non enregistrées dans \"%s\".%sElles doivent être enregistrées pour être visibles dans la documentation produite. Voulez-vous les enregistrer ?" #: lazdemsg.sseealso msgid "See Also" @@ -712,7 +712,7 @@ #: lazdemsg.sstartnodenotfound msgid "Start element \"%s\" could not be found" -msgstr "L'élément de départ \"%s\" ne peut pas être trouvé." +msgstr "L'élément de départ \"%s\" est introuvable" #: lazdemsg.stablecols msgid "Columns" @@ -732,9 +732,8 @@ #: lazdemsg.susingcommand msgid "Building docs using command: " -msgstr "Produire la documentation avec la commande :" +msgstr "Production de la documentation avec la commande :" #: lazdemsg.swarnifnodocumentationnodefound msgid "Warn if no documentation node found" msgstr "Avertir si aucun noeud de documentation n'est trouvé" - diff -Nru lazarus-1.4.4+dfsg/doceditor/lazdeopts.pp lazarus-1.6+dfsg/doceditor/lazdeopts.pp --- lazarus-1.4.4+dfsg/doceditor/lazdeopts.pp 2015-01-07 10:18:23.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/lazdeopts.pp 2015-07-04 23:08:27.000000000 +0000 @@ -26,7 +26,7 @@ Interface -uses SysUtils, IniFiles, FileUtil; +uses SysUtils, IniFiles, LazFileUtils, LazUTF8; Var SkipEmptyNodes : Boolean; diff -Nru lazarus-1.4.4+dfsg/doceditor/pgeditor.pp lazarus-1.6+dfsg/doceditor/pgeditor.pp --- lazarus-1.4.4+dfsg/doceditor/pgeditor.pp 2014-02-05 12:07:46.000000000 +0000 +++ lazarus-1.6+dfsg/doceditor/pgeditor.pp 2015-07-04 23:08:27.000000000 +0000 @@ -51,8 +51,8 @@ interface -uses SysUtils,Classes,dom,xmlread,xmlwrite,Forms,Controls,FileUtil,extctrls, - comctrls,Dialogs,menus,freditor,frpeditor,fpdeutil; +uses SysUtils, Classes, dom, xmlread, xmlwrite, Forms, Controls, ExtCtrls, + ComCtrls, Dialogs, freditor, frpeditor, fpdeutil, LazFileUtils, LazUTF8; type TEditorPageNew = class(TFrame) Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/fcl.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/fcl.chm differ diff -Nru lazarus-1.4.4+dfsg/docs/chm/fcl.xct lazarus-1.6+dfsg/docs/chm/fcl.xct --- lazarus-1.4.4+dfsg/docs/chm/fcl.xct 2015-10-04 13:38:39.000000000 +0000 +++ lazarus-1.6+dfsg/docs/chm/fcl.xct 2016-02-15 12:46:38.000000000 +0000 @@ -504,6 +504,9 @@ WriteDebugMessageToStream dbugmsg/writedebugmessagetostream.html DebugMessageName dbugmsg/debugmessagename.html streamex streamex/index.html + MIN_BUFFER_SIZE streamex/min_buffer_size.html + BUFFER_SIZE streamex/buffer_size.html + FILE_RIGHTS streamex/file_rights.html TBidirBinaryObjectReader streamex/tbidirbinaryobjectreader.html Position streamex/tbidirbinaryobjectreader.position.html TBidirBinaryObjectWriter streamex/tbidirbinaryobjectwriter.html @@ -520,6 +523,36 @@ WriteStr streamex/tdelphiwriter.writestr.html WriteValue streamex/tdelphiwriter.writevalue.html Position streamex/tdelphiwriter.position.html + TTextReader streamex/ttextreader.html + Create streamex/ttextreader.create.html + Reset streamex/ttextreader.reset.html + Close streamex/ttextreader.close.html + IsEof streamex/ttextreader.iseof.html + ReadLine streamex/ttextreader.readline.html + Eof streamex/ttextreader.eof.html + TStreamReader streamex/tstreamreader.html + Create streamex/tstreamreader.create.html + Destroy streamex/tstreamreader.destroy.html + Reset streamex/tstreamreader.reset.html + Close streamex/tstreamreader.close.html + IsEof streamex/tstreamreader.iseof.html + ReadLine streamex/tstreamreader.readline.html + BaseStream streamex/tstreamreader.basestream.html + OwnsStream streamex/tstreamreader.ownsstream.html + TStringReader streamex/tstringreader.html + Create streamex/tstringreader.create.html + Destroy streamex/tstringreader.destroy.html + Reset streamex/tstringreader.reset.html + Close streamex/tstringreader.close.html + IsEof streamex/tstringreader.iseof.html + ReadLine streamex/tstringreader.readline.html + TFileReader streamex/tfilereader.html + Create streamex/tfilereader.create.html + Destroy streamex/tfilereader.destroy.html + Reset streamex/tfilereader.reset.html + Close streamex/tfilereader.close.html + IsEof streamex/tfilereader.iseof.html + ReadLine streamex/tfilereader.readline.html TStreamHelper streamex/tstreamhelper.html ReadWordLE streamex/tstreamhelper.readwordle.html ReadDWordLE streamex/tstreamhelper.readdwordle.html @@ -1042,7 +1075,7 @@ TDependency daemonapp/tdependency.html Name daemonapp/tdependency.name.html IsGroup daemonapp/tdependency.isgroup.html - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + Assign ../rtl/classes/tpersistent.assign.html TDependencies daemonapp/tdependencies.html Create daemonapp/tdependencies.create.html Items daemonapp/tdependencies.items.html @@ -1767,6 +1800,10 @@ OnFilterRecord db/tdataset.onfilterrecord.html OnNewRecord db/tdataset.onnewrecord.html OnPostError db/tdataset.onposterror.html + TDataSetEnumerator db/tdatasetenumerator.html + Create db/tdatasetenumerator.create.html + MoveNext db/tdatasetenumerator.movenext.html + Current db/tdatasetenumerator.current.html TDataLink db/tdatalink.html Create db/tdatalink.create.html Destroy db/tdatalink.destroy.html @@ -1817,7 +1854,7 @@ Transaction db/tdbdataset.transaction.html TDBTransaction db/tdbtransaction.html Create db/tdbtransaction.create.html - destroy db/tdbtransaction.destroy.html + Destroy db/tdbtransaction.destroy.html CloseDataSets db/tdbtransaction.closedatasets.html DataBase db/tdbtransaction.database.html Active db/tdbtransaction.active.html @@ -1857,6 +1894,7 @@ DisposeMem db/disposemem.html BuffersEqual db/buffersequal.html SkipComments db/skipcomments.html + LoginDialogExProc db/logindialogexproc.html zipper zipper/index.html END_OF_CENTRAL_DIR_SIGNATURE zipper/end_of_central_dir_signature.html ZIP64_END_OF_CENTRAL_DIR_SIGNATURE zipper/zip64_end_of_central_dir_signature.html @@ -2017,6 +2055,7 @@ SingleQuotes sqldb/singlequotes.html DoubleQuotes sqldb/doublequotes.html LogAllEvents sqldb/logallevents.html + LogAllEventsExtra sqldb/logalleventsextra.html StatementTokens sqldb/statementtokens.html DefaultSQLFormatSettings sqldb/defaultsqlformatsettings.html TSchemaType sqldb/tschematype.html @@ -2035,6 +2074,7 @@ TCommitRollbackAction sqldb/tcommitrollbackaction.html TSQLTransactionOption sqldb/tsqltransactionoption.html TSQLTransactionOptions sqldb/tsqltransactionoptions.html + TSQLSequenceApplyEvent sqldb/tsqlsequenceapplyevent.html TSQLQueryOption sqldb/tsqlqueryoption.html TSQLQueryOptions sqldb/tsqlqueryoptions.html TSQLConnectionClass sqldb/tsqlconnectionclass.html @@ -2074,10 +2114,12 @@ GetProcedureNames sqldb/tsqlconnection.getprocedurenames.html GetFieldNames sqldb/tsqlconnection.getfieldnames.html GetSchemaNames sqldb/tsqlconnection.getschemanames.html + GetSequenceNames sqldb/tsqlconnection.getsequencenames.html GetConnectionInfo sqldb/tsqlconnection.getconnectioninfo.html GetStatementInfo sqldb/tsqlconnection.getstatementinfo.html CreateDB sqldb/tsqlconnection.createdb.html DropDB sqldb/tsqlconnection.dropdb.html + GetNextValue sqldb/tsqlconnection.getnextvalue.html ConnOptions sqldb/tsqlconnection.connoptions.html Password sqldb/tsqlconnection.password.html Transaction sqldb/tsqlconnection.transaction.html @@ -2126,6 +2168,15 @@ ParseSQL sqldb/tsqlstatement.parsesql.html SQL sqldb/tsqlstatement.sql.html Transaction sqldb/tsqlstatement.transaction.html + TSQLSequence sqldb/tsqlsequence.html + Create sqldb/tsqlsequence.create.html + Assign sqldb/tsqlsequence.assign.html + Apply sqldb/tsqlsequence.apply.html + GetNextValue sqldb/tsqlsequence.getnextvalue.html + FieldName sqldb/tsqlsequence.fieldname.html + SequenceName sqldb/tsqlsequence.sequencename.html + IncrementBy sqldb/tsqlsequence.incrementby.html + ApplyEvent sqldb/tsqlsequence.applyevent.html TCustomSQLQuery sqldb/tcustomsqlquery.html Create sqldb/tcustomsqlquery.create.html Destroy sqldb/tcustomsqlquery.destroy.html @@ -2159,6 +2210,7 @@ UpdateMode sqldb/tsqlquery.updatemode.html UsePrimaryKeyAsKey sqldb/tsqlquery.useprimarykeyaskey.html DataSource sqldb/tsqlquery.datasource.html + Sequence sqldb/tsqlquery.sequence.html ServerFilter sqldb/tsqlquery.serverfilter.html ServerFiltered sqldb/tsqlquery.serverfiltered.html ServerIndexDefs sqldb/tsqlquery.serverindexdefs.html @@ -2365,7 +2417,7 @@ Clone fpjson/tjsonint64number.clone.html TJSONQWordNumber fpjson/tjsonqwordnumber.html Create fpjson/tjsonqwordnumber.create.html - NumberType fpjson/tjsonnumber.numbertype.html + NumberType fpjson/tjsonqwordnumber.numbertype.html Clear fpjson/tjsonqwordnumber.clear.html Clone fpjson/tjsonqwordnumber.clone.html TJSONString fpjson/tjsonstring.html @@ -2398,6 +2450,7 @@ Insert fpjson/tjsonarray.insert.html Move fpjson/tjsonarray.move.html Remove fpjson/tjsonarray.remove.html + Sort fpjson/tjsonarray.sort.html Items fpjson/tjsonarray.items.html Types fpjson/tjsonarray.types.html Nulls fpjson/tjsonarray.nulls.html @@ -2788,7 +2841,6 @@ 3PKey r #fcl.contnrs.TFPCustomHashTable #rtl.System.TObject 1VFHashTable -1VFHashTableSize 1VFHashFunction 1VFCount 1MGetDensity @@ -2799,6 +2851,7 @@ 1MGetLoadFactor 1MGetAVGChainLen 1MGetMaxChainLength +2VFHashTableSize 2MChain 2MCreateNewNode 2MAddNode @@ -3126,6 +3179,44 @@ 3MWriteStr 3MWriteValue 3PPosition rw +#fcl.streamex.TTextReader #rtl.System.TObject +3MCreate +3MReset +3MClose +3MIsEof +3MReadLine +3PEof r +#fcl.streamex.TStreamReader #fcl.streamex.TTextReader +1VFBufferRead +1VFBufferPosition +1VFOwnsStream +1VFStream +1VFBuffer +1MFillBuffer +3MCreate +3MDestroy +3MReset +3MClose +3MIsEof +3MReadLine +3PBaseStream r +3POwnsStream rw +#fcl.streamex.TStringReader #fcl.streamex.TTextReader +1VFReader +3MCreate +3MDestroy +3MReset +3MClose +3MIsEof +3MReadLine +#fcl.streamex.TFileReader #fcl.streamex.TTextReader +1VFReader +3MCreate +3MDestroy +3MReset +3MClose +3MIsEof +3MReadLine #fcl.streamex.TStreamHelper 0MReadWordLE 0MReadDWordLE @@ -3548,6 +3639,7 @@ 2MCheckActive 2MActivate 2MDeactivate +2MLoaded 2PBusy r 4PActive rw 4PServerID rw @@ -4233,13 +4325,15 @@ 1MSetLookup 1MSetReadOnly 1MSetVisible -1MIsDisplayStored +1MIsDisplayLabelStored +1MIsDisplayWidthStored 1MGetLookupList 1MCalcLookupValue 2MAccessError 2MCheckInactive 2MCheckTypeSize 2MChange +2MBind 2MDataChanged 2MFreeBuffers 2MGetAsBCD @@ -4277,7 +4371,7 @@ 2MSetAsFloat 2MSetAsLongint 2MSetAsInteger -2MSetAsLargeint +2MSetAsLargeInt 2MSetAsVariant 2MSetAsString 2MSetAsWideString @@ -4342,7 +4436,7 @@ 4PConstraintErrorMessage rw 4PDefaultExpression rw 4PDisplayLabel rws -4PDisplayWidth rw +4PDisplayWidth rws 4PFieldKind rw 4PFieldName rw 4PHasConstraints r @@ -4370,6 +4464,7 @@ 2MGetAsDateTime 2MGetAsFloat 2MGetAsInteger +2MGetAsLargeInt 2MGetAsString 2MGetAsVariant 2MGetDataSize @@ -4380,6 +4475,7 @@ 2MSetAsDateTime 2MSetAsFloat 2MSetAsInteger +2MSetAsLargeInt 2MSetAsString 2MSetVarValue 3MCreate @@ -4433,8 +4529,8 @@ 2MSetAsInteger 2MSetAsString 2MSetVarValue -2MGetAsLargeint -2MSetAsLargeint +2MGetAsLargeInt +2MSetAsLargeInt 3MCreate 3MCheckRange 3PValue rw @@ -4450,7 +4546,7 @@ 1MSetMaxValue 2MGetAsFloat 2MGetAsInteger -2MGetAsLargeint +2MGetAsLargeInt 2MGetAsString 2MGetAsVariant 2MGetDataSize @@ -4458,7 +4554,7 @@ 2MGetValue 2MSetAsFloat 2MSetAsInteger -2MSetAsLargeint +2MSetAsLargeInt 2MSetAsString 2MSetVarValue 3MCreate @@ -4482,6 +4578,7 @@ 1VFPrecision 1MSetCurrency 1MSetPrecision +2MGetAsBCD 2MGetAsFloat 2MGetAsLargeInt 2MGetAsInteger @@ -4489,6 +4586,7 @@ 2MGetAsString 2MGetDataSize 2MGetText +2MSetAsBCD 2MSetAsFloat 2MSetAsLargeInt 2MSetAsInteger @@ -5243,6 +5341,13 @@ 3POnFilterRecord rw 3POnNewRecord rw 3POnPostError rw +#fcl.db.TDataSetEnumerator #rtl.System.TObject +1VFDataSet +1VFBOF +1MGetCurrent +3MCreate +3MMoveNext +3PCurrent r #fcl.db.TDataLink #rtl.Classes.TPersistent 1VFFirstRecord 1VFBufferCount @@ -5382,7 +5487,7 @@ 2MAllowClose 2MSetDatabase 2MCloseTrans -2MopenTrans +2MOpenTrans 2MCheckDatabase 2MCheckActive 2MCheckInactive @@ -5395,7 +5500,7 @@ 2MInternalHandleException 2MLoaded 3MCreate -3Mdestroy +3MDestroy 3MCloseDataSets 3PDataBase rw 4PActive rw @@ -5412,16 +5517,19 @@ 1MSetAfterDisconnect 1MSetBeforeConnect 1MSetBeforeDisconnect +2MDoLoginPrompt 2MDoConnect 2MDoDisconnect 2MGetConnected 2MGetDataset 2MGetDataSetCount +2MGetLoginParams 2MInternalHandleException 2MLoaded 2MSetConnected +2MSetLoginParams 2PForcedClose rw -2PStreamedconnected rw +2PStreamedConnected rw 3MClose 3MDestroy 3MOpen @@ -5748,10 +5856,11 @@ 1VFStatements 1VFLogEvents 1VFOnLog -1VFInternalTransaction 1MGetPort 1MSetOptions 1MSetPort +1MAttemptCommit +1MAttemptRollBack 2VFConnOptions 2VFSQLFormatSettings 2MAddFieldToUpdateWherePart @@ -5770,6 +5879,7 @@ 2MGetAsSQLText 2MGetHandle 2MLogEvent +2MLogParams 2MLog 2MRegisterStatement 2MUnRegisterStatement @@ -5790,11 +5900,12 @@ 2MCommit 2MRollBack 2MStartImplicitTransaction -2MStartdbTransaction +2MStartDBTransaction 2MCommitRetaining 2MRollBackRetaining 2MUpdateIndexDefs 2MGetSchemaInfoSQL +2MGetNextValueSQL 2MMaybeConnect 2PStatements r 2PPort rw @@ -5809,10 +5920,12 @@ 3MGetProcedureNames 3MGetFieldNames 3MGetSchemaNames +3MGetSequenceNames 3MGetConnectionInfo 3MGetStatementInfo 3MCreateDB 3MDropDB +3MGetNextValue 3PConnOptions r 4PPassword rw 4PTransaction rw @@ -5918,6 +6031,20 @@ 4PParseSQL 4PSQL 4PTransaction +#fcl.sqldb.TSQLSequence #rtl.Classes.TPersistent +1VFQuery +1VFFieldName +1VFSequenceName +1VFIncrementBy +1VFApplyEvent +3MCreate +3MAssign +3MApply +3MGetNextValue +4PFieldName rw +4PSequenceName rw +4PIncrementBy rw +4PApplyEvent rw #fcl.sqldb.TCustomSQLQuery TCustomBufDataset 1VFOptions 1VFSchemaType @@ -5942,6 +6069,7 @@ 1VFInsertQry 1VFUpdateQry 1VFDeleteQry +1VFSequence 1MFreeFldBuffers 1MGetParamCheck 1MGetParams @@ -5972,6 +6100,7 @@ 2MRefreshLastInsertID 2MNeedRefreshRecord 2MRefreshRecord +2MApplyReturningResult 2MCursor 2MLogEvent 2MLog @@ -5987,6 +6116,7 @@ 2MInternalClose 2MInternalInitFieldDefs 2MInternalOpen +2MInternalRefresh 2MGetCanModify 2MIsPrepared 2MSetActive @@ -5997,6 +6127,8 @@ 2MBeforeRefreshOpenCursor 2MSetReadOnly 2MNotification +2MDoOnNewRecord +2MDoBeforePost 2MFieldDefsClass 2MPSGetUpdateException 2MPSGetTableName @@ -6057,6 +6189,7 @@ 2PUsePrimaryKeyAsKey rw 2PStatementType r 2PDataSource rw +2PSequence rw 2PServerFilter rw 2PServerFiltered rw 2PServerIndexDefs r @@ -6107,6 +6240,7 @@ 4PUpdateMode 4PUsePrimaryKeyAsKey 4PDataSource +4PSequence 4PServerFilter 4PServerFiltered 4PServerIndexDefs @@ -6165,7 +6299,7 @@ 2MGetTransactionHandle 2MCommit 2MRollBack -2MStartdbTransaction +2MStartDBTransaction 2MCommitRetaining 2MRollBackRetaining 2MUpdateIndexDefs @@ -6233,13 +6367,14 @@ 2MGetTransactionHandle 2MCommit 2MRollBack -2MStartdbTransaction +2MStartDBTransaction 2MCommitRetaining 2MRollBackRetaining 2MUpdateIndexDefs -2MGetSchemaInfoSQL 2MLoadBlobIntoBuffer 2MRowsAffected +2MGetSchemaInfoSQL +2MGetNextValueSQL 3MCreate 3MGetConnectionInfo 3MCreateDB @@ -6591,6 +6726,7 @@ 3MInsert 3MMove 3MRemove +3MSort 3PItems 3PTypes r 3PNulls r Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/fpdoc.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/fpdoc.chm differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/lazutils.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/lazutils.chm differ diff -Nru lazarus-1.4.4+dfsg/docs/chm/lazutils.xct lazarus-1.6+dfsg/docs/chm/lazutils.xct --- lazarus-1.4.4+dfsg/docs/chm/lazutils.xct 2015-10-04 13:38:39.000000000 +0000 +++ lazarus-1.6+dfsg/docs/chm/lazutils.xct 2016-02-15 12:46:38.000000000 +0000 @@ -1,62 +1,6 @@ # FPDoc Content File :link tree #lazutils index.html - LazUtilsStrConsts lazutilsstrconsts/index.html - lrsModified lazutilsstrconsts/index-1.html#lrsmodified - lrsInvalidCharSet lazutilsstrconsts/index-1.html#lrsinvalidcharset - lrsSize lazutilsstrconsts/index-1.html#lrssize - lrsFileDoesNotExist lazutilsstrconsts/index-1.html#lrsfiledoesnotexist - lrsFileIsADirectoryAndNotAnExecutable lazutilsstrconsts/index-1.html#lrsfileisadirectoryandnotanexecutable - lrsReadAccessDeniedFor lazutilsstrconsts/index-1.html#lrsreadaccessdeniedfor - lrsADirectoryComponentInDoesNotExistOrIsADanglingSyml2 lazutilsstrconsts/index-1.html#lrsadirectorycomponentindoesnotexistorisadanglingsyml2 - lrsADirectoryComponentInIsNotADirectory2 lazutilsstrconsts/index-1.html#lrsadirectorycomponentinisnotadirectory2 - lrsADirectoryComponentInDoesNotExistOrIsADanglingSyml lazutilsstrconsts/index-1.html#lrsadirectorycomponentindoesnotexistorisadanglingsyml - lrsADirectoryComponentInIsNotADirectory lazutilsstrconsts/index-1.html#lrsadirectorycomponentinisnotadirectory - lrsInsufficientMemory lazutilsstrconsts/index-1.html#lrsinsufficientmemory - lrsHasACircularSymbolicLink lazutilsstrconsts/index-1.html#lrshasacircularsymboliclink - lrsIsNotASymbolicLink lazutilsstrconsts/index-1.html#lrsisnotasymboliclink - lrsIsNotExecutable lazutilsstrconsts/index-1.html#lrsisnotexecutable - lrsUnableToCreateConfigDirectoryS lazutilsstrconsts/index-1.html#lrsunabletocreateconfigdirectorys - lrsProgramFileNotFound lazutilsstrconsts/index-1.html#lrsprogramfilenotfound - lrsCanNotExecute lazutilsstrconsts/index-1.html#lrscannotexecute - lrsNodeSet lazutilsstrconsts/index-1.html#lrsnodeset - lrsBoolean lazutilsstrconsts/index-1.html#lrsboolean - lrsNumber lazutilsstrconsts/index-1.html#lrsnumber - lrsString lazutilsstrconsts/index-1.html#lrsstring - lrsVarNoConversion lazutilsstrconsts/index-1.html#lrsvarnoconversion - lrsScannerUnclosedString lazutilsstrconsts/index-1.html#lrsscannerunclosedstring - lrsScannerInvalidChar lazutilsstrconsts/index-1.html#lrsscannerinvalidchar - lrsScannerMalformedQName lazutilsstrconsts/index-1.html#lrsscannermalformedqname - lrsScannerExpectedVarName lazutilsstrconsts/index-1.html#lrsscannerexpectedvarname - lrsParserExpectedLeftBracket lazutilsstrconsts/index-1.html#lrsparserexpectedleftbracket - lrsParserExpectedRightBracket lazutilsstrconsts/index-1.html#lrsparserexpectedrightbracket - lrsParserBadAxisName lazutilsstrconsts/index-1.html#lrsparserbadaxisname - lrsParserBadNodeType lazutilsstrconsts/index-1.html#lrsparserbadnodetype - lrsParserExpectedRightSquareBracket lazutilsstrconsts/index-1.html#lrsparserexpectedrightsquarebracket - lrsParserInvalidPrimExpr lazutilsstrconsts/index-1.html#lrsparserinvalidprimexpr - lrsParserGarbageAfterExpression lazutilsstrconsts/index-1.html#lrsparsergarbageafterexpression - lrsParserInvalidNodeTest lazutilsstrconsts/index-1.html#lrsparserinvalidnodetest - lrsEvalUnknownFunction lazutilsstrconsts/index-1.html#lrsevalunknownfunction - lrsEvalUnknownVariable lazutilsstrconsts/index-1.html#lrsevalunknownvariable - lrsEvalInvalidArgCount lazutilsstrconsts/index-1.html#lrsevalinvalidargcount - lazutf8sysutils lazutf8sysutils/index.html - NowUTC lazutf8sysutils/nowutc.html - GetTickCount64 lazutf8sysutils/gettickcount64.html - LazMethodList lazmethodlist/index.html - TMethodList lazmethodlist/tmethodlist.html - Destroy lazmethodlist/tmethodlist.destroy.html - Count lazmethodlist/tmethodlist.count.html - NextDownIndex lazmethodlist/tmethodlist.nextdownindex.html - IndexOf lazmethodlist/tmethodlist.indexof.html - Delete lazmethodlist/tmethodlist.delete.html - Remove lazmethodlist/tmethodlist.remove.html - Add lazmethodlist/tmethodlist.add.html - Insert lazmethodlist/tmethodlist.insert.html - Move lazmethodlist/tmethodlist.move.html - RemoveAllMethodsOfObject lazmethodlist/tmethodlist.removeallmethodsofobject.html - CallNotifyEvents lazmethodlist/tmethodlist.callnotifyevents.html - Items lazmethodlist/tmethodlist.items.html - AllowDuplicates lazmethodlist/tmethodlist.allowduplicates.html AvgLvlTree avglvltree/index.html TObjectSortCompare avglvltree/tobjectsortcompare.html TAvgLvlTreeNodeClass avglvltree/tavglvltreenodeclass.html @@ -265,3979 +209,3835 @@ CompareStringToStringItemsI avglvltree/comparestringtostringitemsi.html CompareAnsiStringWithStrToStrItemI avglvltree/compareansistringwithstrtostritemi.html ComparePointer avglvltree/comparepointer.html - LazUTF8 lazutf8/index.html - TUTF8TrimFlag lazutf8/tutf8trimflag.html - TUTF8TrimFlags lazutf8/tutf8trimflags.html - TConvertResult lazutf8/tconvertresult.html - TConvertOption lazutf8/tconvertoption.html - TConvertOptions lazutf8/tconvertoptions.html - NeedRTLAnsi lazutf8/needrtlansi.html - SetNeedRTLAnsi lazutf8/setneedrtlansi.html - UTF8ToSys lazutf8/utf8tosys.html - SysToUTF8 lazutf8/systoutf8.html - ConsoleToUTF8 lazutf8/consoletoutf8.html - UTF8ToConsole lazutf8/utf8toconsole.html - ParamStrUTF8 lazutf8/paramstrutf8.html - GetEnvironmentStringUTF8 lazutf8/getenvironmentstringutf8.html - GetEnvironmentVariableUTF8 lazutf8/getenvironmentvariableutf8.html - SysErrorMessageUTF8 lazutf8/syserrormessageutf8.html - UTF8CharacterLength lazutf8/utf8characterlength.html - UTF8Length lazutf8/utf8length.html - UTF8CharacterToUnicode lazutf8/utf8charactertounicode.html - UnicodeToUTF8 lazutf8/unicodetoutf8.html - UnicodeToUTF8SkipErrors lazutf8/unicodetoutf8skiperrors.html - UnicodeToUTF8Inline lazutf8/unicodetoutf8inline.html - UTF8ToDoubleByteString lazutf8/utf8todoublebytestring.html - UTF8ToDoubleByte lazutf8/utf8todoublebyte.html - UTF8FindNearestCharStart lazutf8/utf8findnearestcharstart.html - UTF8CharStart lazutf8/utf8charstart.html - UTF8CharToByteIndex lazutf8/utf8chartobyteindex.html - UTF8FixBroken lazutf8/utf8fixbroken.html - UTF8CharacterStrictLength lazutf8/utf8characterstrictlength.html - UTF8CStringToUTF8String lazutf8/utf8cstringtoutf8string.html - UTF8Pos lazutf8/utf8pos.html - UTF8PosP lazutf8/utf8posp.html - UTF8Copy lazutf8/utf8copy.html - UTF8Delete lazutf8/utf8delete.html - UTF8Insert lazutf8/utf8insert.html - UTF8StringReplace lazutf8/utf8stringreplace.html - UTF8LowerCase lazutf8/utf8lowercase.html - UTF8LowerString lazutf8/utf8lowerstring.html - UTF8UpperCase lazutf8/utf8uppercase.html - UTF8UpperString lazutf8/utf8upperstring.html - FindInvalidUTF8Character lazutf8/findinvalidutf8character.html - ValidUTF8String lazutf8/validutf8string.html - Utf8StringOfChar lazutf8/utf8stringofchar.html - Utf8AddChar lazutf8/utf8addchar.html - Utf8AddCharR lazutf8/utf8addcharr.html - UTF8PadLeft lazutf8/utf8padleft.html - UTF8PadRight lazutf8/utf8padright.html - UTF8PadCenter lazutf8/utf8padcenter.html - Utf8LeftStr lazutf8/utf8leftstr.html - Utf8RightStr lazutf8/utf8rightstr.html - UTF8Trim lazutf8/utf8trim.html - AssignUTF8ListToAnsi lazutf8/assignutf8listtoansi.html - UTF8CompareStr lazutf8/utf8comparestr.html - UTF8CompareStrP lazutf8/utf8comparestrp.html - UTF8CompareText lazutf8/utf8comparetext.html - UTF8CompareStrCollated lazutf8/utf8comparestrcollated.html - CompareStrListUTF8LowerCase lazutf8/comparestrlistutf8lowercase.html - ConvertUTF8ToUTF16 lazutf8/convertutf8toutf16.html - ConvertUTF16ToUTF8 lazutf8/convertutf16toutf8.html - UTF8ToUTF16 lazutf8/utf8toutf16.html - UTF16ToUTF8 lazutf8/utf16toutf8.html - LazGetLanguageIDs lazutf8/lazgetlanguageids.html - LazGetShortLanguageID lazutf8/lazgetshortlanguageid.html - FPUpChars lazutf8/fpupchars.html - lazutf16 lazutf16/index.html - UTF16CharacterLength lazutf16/utf16characterlength.html - UTF16Length lazutf16/utf16length.html - UTF16CharacterToUnicode lazutf16/utf16charactertounicode.html - UnicodeToUTF16 lazutf16/unicodetoutf16.html - UnicodeLowercase lazutf16/unicodelowercase.html - UTF8LowerCaseViaTables lazutf16/utf8lowercaseviatables.html - Masks masks/index.html - TMaskCharType masks/tmaskchartype.html - TCharSet masks/tcharset.html - PCharSet masks/pcharset.html - TUtf8Char masks/tutf8char.html - TMaskChar masks/tmaskchar.html - TMaskString masks/tmaskstring.html - TMask masks/tmask.html - Create masks/tmask.create.html - Destroy masks/tmask.destroy.html - Matches masks/tmask.matches.html - MatchesWindowsMask masks/tmask.matcheswindowsmask.html - TParseStringList masks/tparsestringlist.html - Create masks/tparsestringlist.create.html - TMaskList masks/tmasklist.html - Create masks/tmasklist.create.html - Destroy masks/tmasklist.destroy.html - Matches masks/tmasklist.matches.html - MatchesWindowsMask masks/tmasklist.matcheswindowsmask.html - Count masks/tmasklist.count.html - Items masks/tmasklist.items.html - MatchesMask masks/matchesmask.html - MatchesWindowsMask masks/matcheswindowsmask.html - MatchesMaskList masks/matchesmasklist.html - MatchesWindowsMaskList masks/matcheswindowsmasklist.html - FileUtil fileutil/index.html - UTF8FileHeader fileutil/utf8fileheader.html - FilenamesCaseSensitive fileutil/filenamescasesensitive.html - FilenamesLiteral fileutil/filenamesliteral.html - PascalFileExt fileutil/pascalfileext.html - AllDirectoryEntriesMask fileutil/alldirectoryentriesmask.html - TSearchFileInPathFlag fileutil/tsearchfileinpathflag.html - TSearchFileInPathFlags fileutil/tsearchfileinpathflags.html - TFileFoundEvent fileutil/tfilefoundevent.html - TDirectoryFoundEvent fileutil/tdirectoryfoundevent.html - TDirectoryEnterEvent fileutil/tdirectoryenterevent.html - TCopyFileFlag fileutil/tcopyfileflag.html - TCopyFileFlags fileutil/tcopyfileflags.html - TFileIterator fileutil/tfileiterator.html - Stop fileutil/tfileiterator.stop.html - IsDirectory fileutil/tfileiterator.isdirectory.html - FileName fileutil/tfileiterator.filename.html - FileInfo fileutil/tfileiterator.fileinfo.html - Level fileutil/tfileiterator.level.html - Path fileutil/tfileiterator.path.html - Searching fileutil/tfileiterator.searching.html - TFileSearcher fileutil/tfilesearcher.html - DoDirectoryEnter fileutil/tfilesearcher.dodirectoryenter.html - DoDirectoryFound fileutil/tfilesearcher.dodirectoryfound.html - DoFileFound fileutil/tfilesearcher.dofilefound.html - Create fileutil/tfilesearcher.create.html - Search fileutil/tfilesearcher.search.html - MaskSeparator fileutil/tfilesearcher.maskseparator.html - FollowSymLink fileutil/tfilesearcher.followsymlink.html - FileAttribute fileutil/tfilesearcher.fileattribute.html - DirectoryAttribute fileutil/tfilesearcher.directoryattribute.html - OnDirectoryFound fileutil/tfilesearcher.ondirectoryfound.html - OnFileFound fileutil/tfilesearcher.onfilefound.html - OnDirectoryEnter fileutil/tfilesearcher.ondirectoryenter.html - TListFileSearcher fileutil/tlistfilesearcher.html - DoFileFound fileutil/tfilesearcher.dofilefound.html - Create fileutil/tfilesearcher.create.html - TListDirectoriesSearcher fileutil/tlistdirectoriessearcher.html - DoDirectoryFound fileutil/tfilesearcher.dodirectoryfound.html - Create fileutil/tfilesearcher.create.html - CompareFilenames fileutil/comparefilenames.html - CompareFilenamesIgnoreCase fileutil/comparefilenamesignorecase.html - ComparePhysicalFilenames fileutil/comparephysicalfilenames.html - FilenameIsAbsolute fileutil/filenameisabsolute.html - FilenameIsWinAbsolute fileutil/filenameiswinabsolute.html - FilenameIsUnixAbsolute fileutil/filenameisunixabsolute.html - CheckIfFileIsExecutable fileutil/checkiffileisexecutable.html - CheckIfFileIsSymlink fileutil/checkiffileissymlink.html - FileIsReadable fileutil/fileisreadable.html - FileIsWritable fileutil/fileiswritable.html - FileIsText fileutil/fileistext.html - FileIsExecutable fileutil/fileisexecutable.html - FileIsSymlink fileutil/fileissymlink.html - FileIsHardLink fileutil/fileishardlink.html - FileSize fileutil/filesize.html - GetFileDescription fileutil/getfiledescription.html - ReadAllLinks fileutil/readalllinks.html - TryReadAllLinks fileutil/tryreadalllinks.html - DirPathExists fileutil/dirpathexists.html - ForceDirectory fileutil/forcedirectory.html - DeleteDirectory fileutil/deletedirectory.html - ProgramDirectory fileutil/programdirectory.html - DirectoryIsWritable fileutil/directoryiswritable.html - ExtractFileNameOnly fileutil/extractfilenameonly.html - ExtractFileNameWithoutExt fileutil/extractfilenamewithoutext.html - CompareFileExt fileutil/comparefileext.html - FilenameIsPascalUnit fileutil/filenameispascalunit.html - AppendPathDelim fileutil/appendpathdelim.html - ChompPathDelim fileutil/chomppathdelim.html - TrimFilename fileutil/trimfilename.html - CleanAndExpandFilename fileutil/cleanandexpandfilename.html - CleanAndExpandDirectory fileutil/cleanandexpanddirectory.html - CreateAbsoluteSearchPath fileutil/createabsolutesearchpath.html - CreateRelativePath fileutil/createrelativepath.html - CreateAbsolutePath fileutil/createabsolutepath.html - FileIsInPath fileutil/fileisinpath.html - FileIsInDirectory fileutil/fileisindirectory.html - GetAllFilesMask fileutil/getallfilesmask.html - GetExeExt fileutil/getexeext.html - SearchFileInPath fileutil/searchfileinpath.html - SearchAllFilesInPath fileutil/searchallfilesinpath.html - FindDiskFilename fileutil/finddiskfilename.html - FindDiskFileCaseInsensitive fileutil/finddiskfilecaseinsensitive.html - FindDefaultExecutablePath fileutil/finddefaultexecutablepath.html - FindAllFiles fileutil/findallfiles.html - FindAllDirectories fileutil/findalldirectories.html - CopyFile fileutil/copyfile.html - CopyDirTree fileutil/copydirtree.html - ReadFileToString fileutil/readfiletostring.html - GetTempFilename fileutil/gettempfilename.html - NeedRTLAnsi fileutil/needrtlansi.html - SetNeedRTLAnsi fileutil/setneedrtlansi.html - UTF8ToSys fileutil/utf8tosys.html - SysToUTF8 fileutil/systoutf8.html - ConsoleToUTF8 fileutil/consoletoutf8.html - UTF8ToConsole fileutil/utf8toconsole.html - FileExistsUTF8 fileutil/fileexistsutf8.html - FileAgeUTF8 fileutil/fileageutf8.html - DirectoryExistsUTF8 fileutil/directoryexistsutf8.html - ExpandFileNameUTF8 fileutil/expandfilenameutf8.html - ExpandUNCFileNameUTF8 fileutil/expanduncfilenameutf8.html - ExtractShortPathNameUTF8 fileutil/extractshortpathnameutf8.html - FindFirstUTF8 fileutil/findfirstutf8.html - FindNextUTF8 fileutil/findnextutf8.html - FindCloseUTF8 fileutil/findcloseutf8.html - FileSetDateUTF8 fileutil/filesetdateutf8.html - FileGetAttrUTF8 fileutil/filegetattrutf8.html - FileSetAttrUTF8 fileutil/filesetattrutf8.html - DeleteFileUTF8 fileutil/deletefileutf8.html - RenameFileUTF8 fileutil/renamefileutf8.html - FileSearchUTF8 fileutil/filesearchutf8.html - FileIsReadOnlyUTF8 fileutil/fileisreadonlyutf8.html - GetCurrentDirUTF8 fileutil/getcurrentdirutf8.html - SetCurrentDirUTF8 fileutil/setcurrentdirutf8.html - CreateDirUTF8 fileutil/createdirutf8.html - RemoveDirUTF8 fileutil/removedirutf8.html - ForceDirectoriesUTF8 fileutil/forcedirectoriesutf8.html - FileOpenUTF8 fileutil/fileopenutf8.html - FileCreateUTF8 fileutil/filecreateutf8.html - ParamStrUTF8 fileutil/paramstrutf8.html - GetEnvironmentStringUTF8 fileutil/getenvironmentstringutf8.html - GetEnvironmentVariableUTF8 fileutil/getenvironmentvariableutf8.html - GetAppConfigDirUTF8 fileutil/getappconfigdirutf8.html - GetAppConfigFileUTF8 fileutil/getappconfigfileutf8.html - SysErrorMessageUTF8 fileutil/syserrormessageutf8.html - LazFileUtils lazfileutils/index.html - TPhysicalFilenameOnError lazfileutils/tphysicalfilenameonerror.html - TInvalidateFileStateCacheEvent lazfileutils/tinvalidatefilestatecacheevent.html - CompareFilenames lazfileutils/comparefilenames.html - CompareFilenamesIgnoreCase lazfileutils/comparefilenamesignorecase.html - CompareFileExt lazfileutils/comparefileext.html - CompareFilenameStarts lazfileutils/comparefilenamestarts.html - CompareFilenamesP lazfileutils/comparefilenamesp.html - DirPathExists lazfileutils/dirpathexists.html - DirectoryIsWritable lazfileutils/directoryiswritable.html - ExtractFileNameOnly lazfileutils/extractfilenameonly.html - FilenameIsAbsolute lazfileutils/filenameisabsolute.html - FilenameIsWinAbsolute lazfileutils/filenameiswinabsolute.html - FilenameIsUnixAbsolute lazfileutils/filenameisunixabsolute.html - ForceDirectory lazfileutils/forcedirectory.html - CheckIfFileIsExecutable lazfileutils/checkiffileisexecutable.html - CheckIfFileIsSymlink lazfileutils/checkiffileissymlink.html - FileIsExecutable lazfileutils/fileisexecutable.html - FileIsSymlink lazfileutils/fileissymlink.html - FileIsHardLink lazfileutils/fileishardlink.html - FileIsReadable lazfileutils/fileisreadable.html - FileIsWritable lazfileutils/fileiswritable.html - FileIsText lazfileutils/fileistext.html - FilenameIsTrimmed lazfileutils/filenameistrimmed.html - TrimFilename lazfileutils/trimfilename.html - ResolveDots lazfileutils/resolvedots.html - ForcePathDelims lazfileutils/forcepathdelims.html - GetForcedPathDelims lazfileutils/getforcedpathdelims.html - CleanAndExpandFilename lazfileutils/cleanandexpandfilename.html - CleanAndExpandDirectory lazfileutils/cleanandexpanddirectory.html - TrimAndExpandFilename lazfileutils/trimandexpandfilename.html - TrimAndExpandDirectory lazfileutils/trimandexpanddirectory.html - TryCreateRelativePath lazfileutils/trycreaterelativepath.html - CreateRelativePath lazfileutils/createrelativepath.html - FileIsInPath lazfileutils/fileisinpath.html - AppendPathDelim lazfileutils/appendpathdelim.html - ChompPathDelim lazfileutils/chomppathdelim.html - CreateAbsoluteSearchPath lazfileutils/createabsolutesearchpath.html - CreateRelativeSearchPath lazfileutils/createrelativesearchpath.html - MinimizeSearchPath lazfileutils/minimizesearchpath.html - FindPathInSearchPath lazfileutils/findpathinsearchpath.html - FileExistsUTF8 lazfileutils/fileexistsutf8.html - FileAgeUTF8 lazfileutils/fileageutf8.html - DirectoryExistsUTF8 lazfileutils/directoryexistsutf8.html - ExpandFileNameUTF8 lazfileutils/expandfilenameutf8.html - FindFirstUTF8 lazfileutils/findfirstutf8.html - FindNextUTF8 lazfileutils/findnextutf8.html - FindCloseUTF8 lazfileutils/findcloseutf8.html - FileSetDateUTF8 lazfileutils/filesetdateutf8.html - FileGetAttrUTF8 lazfileutils/filegetattrutf8.html - FileSetAttrUTF8 lazfileutils/filesetattrutf8.html - DeleteFileUTF8 lazfileutils/deletefileutf8.html - RenameFileUTF8 lazfileutils/renamefileutf8.html - FileSearchUTF8 lazfileutils/filesearchutf8.html - FileIsReadOnlyUTF8 lazfileutils/fileisreadonlyutf8.html - GetCurrentDirUTF8 lazfileutils/getcurrentdirutf8.html - SetCurrentDirUTF8 lazfileutils/setcurrentdirutf8.html - CreateDirUTF8 lazfileutils/createdirutf8.html - RemoveDirUTF8 lazfileutils/removedirutf8.html - ForceDirectoriesUTF8 lazfileutils/forcedirectoriesutf8.html - FileOpenUTF8 lazfileutils/fileopenutf8.html - FileCreateUTF8 lazfileutils/filecreateutf8.html - FileSizeUtf8 lazfileutils/filesizeutf8.html - GetFileDescription lazfileutils/getfiledescription.html - ReadAllLinks lazfileutils/readalllinks.html - TryReadAllLinks lazfileutils/tryreadalllinks.html - GetShellLinkTarget lazfileutils/getshelllinktarget.html - GetPhysicalFilename lazfileutils/getphysicalfilename.html - GetUnixPhysicalFilename lazfileutils/getunixphysicalfilename.html - GetAppConfigDirUTF8 lazfileutils/getappconfigdirutf8.html - GetAppConfigFileUTF8 lazfileutils/getappconfigfileutf8.html - GetTempFileNameUTF8 lazfileutils/gettempfilenameutf8.html - IsUNCPath lazfileutils/isuncpath.html - ExtractUNCVolume lazfileutils/extractuncvolume.html - ExtractFileRoot lazfileutils/extractfileroot.html - SplitCmdLineParams lazfileutils/splitcmdlineparams.html - StrToCmdLineParam lazfileutils/strtocmdlineparam.html - MergeCmdLineParams lazfileutils/mergecmdlineparams.html - InvalidateFileStateCache lazfileutils/invalidatefilestatecache.html - OnInvalidateFileStateCache lazfileutils/oninvalidatefilestatecache.html - LazUTF8Classes lazutf8classes/index.html - TFileStreamUTF8 lazutf8classes/tfilestreamutf8.html - Create lazutf8classes/tfilestreamutf8.create.html - Destroy lazutf8classes/tfilestreamutf8.destroy.html - FileName lazutf8classes/tfilestreamutf8.filename.html - TStringListUTF8 lazutf8classes/tstringlistutf8.html - DoCompareText lazutf8classes/tstringlistutf8.docomparetext.html - LoadFromFile lazutf8classes/tstringlistutf8.loadfromfile.html - SaveToFile lazutf8classes/tstringlistutf8.savetofile.html - TMemoryStreamUTF8 lazutf8classes/tmemorystreamutf8.html - LoadFromFile lazutf8classes/tmemorystreamutf8.loadfromfile.html - SaveToFile lazutf8classes/tmemorystreamutf8.savetofile.html - LoadStringsFromFileUTF8 lazutf8classes/loadstringsfromfileutf8.html - SaveStringsToFileUTF8 lazutf8classes/savestringstofileutf8.html - CompareStringListItemsUTF8LowerCase lazutf8classes/comparestringlistitemsutf8lowercase.html - LConvEncoding lconvencoding/index.html - EncodingUTF8 lconvencoding/encodingutf8.html - EncodingAnsi lconvencoding/encodingansi.html - EncodingUTF8BOM lconvencoding/encodingutf8bom.html - EncodingUCS2LE lconvencoding/encodingucs2le.html - EncodingUCS2BE lconvencoding/encodingucs2be.html - UTF8BOM lconvencoding/utf8bom.html - UTF16BEBOM lconvencoding/utf16bebom.html - UTF16LEBOM lconvencoding/utf16lebom.html - UTF32BEBOM lconvencoding/utf32bebom.html - UTF32LEBOM lconvencoding/utf32lebom.html - TConvertEncodingFunction lconvencoding/tconvertencodingfunction.html - TCharToUTF8Table lconvencoding/tchartoutf8table.html - TUnicodeToCharID lconvencoding/tunicodetocharid.html - GuessEncoding lconvencoding/guessencoding.html - ConvertEncoding lconvencoding/convertencoding.html - GetDefaultTextEncoding lconvencoding/getdefaulttextencoding.html - GetConsoleTextEncoding lconvencoding/getconsoletextencoding.html - NormalizeEncoding lconvencoding/normalizeencoding.html - UTF8BOMToUTF8 lconvencoding/utf8bomtoutf8.html - ISO_8859_1ToUTF8 lconvencoding/iso_8859_1toutf8.html - ISO_8859_15ToUTF8 lconvencoding/iso_8859_15toutf8.html - ISO_8859_2ToUTF8 lconvencoding/iso_8859_2toutf8.html - CP1250ToUTF8 lconvencoding/cp1250toutf8.html - CP1251ToUTF8 lconvencoding/cp1251toutf8.html - CP1252ToUTF8 lconvencoding/cp1252toutf8.html - CP1253ToUTF8 lconvencoding/cp1253toutf8.html - CP1254ToUTF8 lconvencoding/cp1254toutf8.html - CP1255ToUTF8 lconvencoding/cp1255toutf8.html - CP1256ToUTF8 lconvencoding/cp1256toutf8.html - CP1257ToUTF8 lconvencoding/cp1257toutf8.html - CP1258ToUTF8 lconvencoding/cp1258toutf8.html - CP437ToUTF8 lconvencoding/cp437toutf8.html - CP850ToUTF8 lconvencoding/cp850toutf8.html - CP852ToUTF8 lconvencoding/cp852toutf8.html - CP866ToUTF8 lconvencoding/cp866toutf8.html - CP874ToUTF8 lconvencoding/cp874toutf8.html - KOI8ToUTF8 lconvencoding/koi8toutf8.html - SingleByteToUTF8 lconvencoding/singlebytetoutf8.html - UCS2LEToUTF8 lconvencoding/ucs2letoutf8.html - UCS2BEToUTF8 lconvencoding/ucs2betoutf8.html - UTF8ToUTF8BOM lconvencoding/utf8toutf8bom.html - UTF8ToISO_8859_1 lconvencoding/utf8toiso_8859_1.html - UTF8ToISO_8859_15 lconvencoding/utf8toiso_8859_15.html - UTF8ToISO_8859_2 lconvencoding/utf8toiso_8859_2.html - UTF8ToCP1250 lconvencoding/utf8tocp1250.html - UTF8ToCP1251 lconvencoding/utf8tocp1251.html - UTF8ToCP1252 lconvencoding/utf8tocp1252.html - UTF8ToCP1253 lconvencoding/utf8tocp1253.html - UTF8ToCP1254 lconvencoding/utf8tocp1254.html - UTF8ToCP1255 lconvencoding/utf8tocp1255.html - UTF8ToCP1256 lconvencoding/utf8tocp1256.html - UTF8ToCP1257 lconvencoding/utf8tocp1257.html - UTF8ToCP1258 lconvencoding/utf8tocp1258.html - UTF8ToCP437 lconvencoding/utf8tocp437.html - UTF8ToCP850 lconvencoding/utf8tocp850.html - UTF8ToCP852 lconvencoding/utf8tocp852.html - UTF8ToCP866 lconvencoding/utf8tocp866.html - UTF8ToCP874 lconvencoding/utf8tocp874.html - UTF8ToKOI8 lconvencoding/utf8tokoi8.html - UTF8ToKOI8U lconvencoding/utf8tokoi8u.html - UTF8ToKOI8RU lconvencoding/utf8tokoi8ru.html - UTF8ToSingleByte lconvencoding/utf8tosinglebyte.html - UTF8ToUCS2LE lconvencoding/utf8toucs2le.html - UTF8ToUCS2BE lconvencoding/utf8toucs2be.html - CP932ToUTF8 lconvencoding/cp932toutf8.html - CP936ToUTF8 lconvencoding/cp936toutf8.html - CP949ToUTF8 lconvencoding/cp949toutf8.html - CP950ToUTF8 lconvencoding/cp950toutf8.html - DBCSToUTF8 lconvencoding/dbcstoutf8.html - UTF8ToCP932 lconvencoding/utf8tocp932.html - UTF8ToCP936 lconvencoding/utf8tocp936.html - UTF8ToCP949 lconvencoding/utf8tocp949.html - UTF8ToCP950 lconvencoding/utf8tocp950.html - UTF8ToDBCS lconvencoding/utf8todbcs.html - GetSupportedEncodings lconvencoding/getsupportedencodings.html - ConvertAnsiToUTF8 lconvencoding/convertansitoutf8.html - ConvertUTF8ToAnsi lconvencoding/convertutf8toansi.html - PasWString paswstring/index.html - SetPasWidestringManager paswstring/setpaswidestringmanager.html - LazLogger lazlogger/index.html - PLazLoggerLogGroup lazlogger/plazloggerloggroup.html - TLazLoggerFileHandle lazlogger/tlazloggerfilehandle.html - Create lazlogger/tlazloggerfilehandle.create.html - Destroy lazlogger/tlazloggerfilehandle.destroy.html - OpenFile lazlogger/tlazloggerfilehandle.openfile.html - CloseFile lazlogger/tlazloggerfilehandle.closefile.html - WriteToFile lazlogger/tlazloggerfilehandle.writetofile.html - WriteLnToFile lazlogger/tlazloggerfilehandle.writelntofile.html - LogName lazlogger/tlazloggerfilehandle.logname.html - UseStdOut lazlogger/tlazloggerfilehandle.usestdout.html - CloseLogFileBetweenWrites lazlogger/tlazloggerfilehandle.closelogfilebetweenwrites.html - WriteTarget lazlogger/tlazloggerfilehandle.writetarget.html - ActiveLogText lazlogger/tlazloggerfilehandle.activelogtext.html - TLazLoggerFile lazlogger/tlazloggerfile.html - DoInit lazlogger/tlazloggerfile.doinit.html - DoFinsh lazlogger/tlazloggerfile.dofinsh.html - IncreaseIndent lazlogger/tlazloggerfile.increaseindent.html - DecreaseIndent lazlogger/tlazloggerfile.decreaseindent.html - IndentChanged lazlogger/tlazloggerfile.indentchanged.html - CreateIndent lazlogger/tlazloggerfile.createindent.html - GetBlockHandler lazlogger/tlazloggerfile.getblockhandler.html - ClearAllBlockHandler lazlogger/tlazloggerfile.clearallblockhandler.html - DoDbgOut lazlogger/tlazloggerfile.dodbgout.html - DoDebugLn lazlogger/tlazloggerfile.dodebugln.html - DoDebuglnStack lazlogger/tlazloggerfile.dodebuglnstack.html - FileHandle lazlogger/tlazloggerfile.filehandle.html - Create - Destroy lazlogger/tlazloggerfile.destroy.html - Assign - CurrentIndentLevel lazlogger/tlazloggerfile.currentindentlevel.html - ParamForLogFileName lazlogger/tlazloggerfile.paramforlogfilename.html - EnvironmentForLogFileName lazlogger/tlazloggerfile.environmentforlogfilename.html - OnDebugLn lazlogger/tlazloggerfile.ondebugln.html - OnDbgOut lazlogger/tlazloggerfile.ondbgout.html - AddBlockHandler lazlogger/tlazloggerfile.addblockhandler.html - RemoveBlockHandler lazlogger/tlazloggerfile.removeblockhandler.html - BlockHandlerCount lazlogger/tlazloggerfile.blockhandlercount.html - LogName lazlogger/tlazloggerfile.logname.html - UseStdOut lazlogger/tlazloggerfile.usestdout.html - CloseLogFileBetweenWrites lazlogger/tlazloggerfile.closelogfilebetweenwrites.html - DebuglnStack lazlogger/debuglnstack.html - DbgOut lazlogger/dbgout.html - DebugLn lazlogger/debugln.html - DebugLnEnter lazlogger/debuglnenter.html - DebugLnExit lazlogger/debuglnexit.html - DbgS lazlogger/dbgs.html - DbgSJoin lazlogger/dbgsjoin.html - DbgSName lazlogger/dbgsname.html - dbgObjMem lazlogger/dbgobjmem.html - dbghex lazlogger/dbghex.html - dbgMemRange lazlogger/dbgmemrange.html - dbgMemStream lazlogger/dbgmemstream.html - DbgStr lazlogger/dbgstr.html - DbgWideStr lazlogger/dbgwidestr.html - ConvertLineEndings lazlogger/convertlineendings.html - ReplaceSubstring lazlogger/replacesubstring.html - GetDebugLogger lazlogger/getdebuglogger.html - SetDebugLogger lazlogger/setdebuglogger.html - LazLoggerBase lazloggerbase/index.html - TLazLoggerLogGroupFlag lazloggerbase/tlazloggerloggroupflag.html - TLazLoggerLogGroupFlags lazloggerbase/tlazloggerloggroupflags.html - TLazLoggerLogGroup lazloggerbase/tlazloggerloggroup.html - PLazLoggerLogGroup lazloggerbase/plazloggerloggroup.html - TLazLoggerWriteTarget lazloggerbase/tlazloggerwritetarget.html - TLazLoggerWriteEvent lazloggerbase/tlazloggerwriteevent.html - TLazLoggerWidgetSetWriteEvent lazloggerbase/tlazloggerwidgetsetwriteevent.html - TLazDebugLoggerCreator lazloggerbase/tlazdebugloggercreator.html - TLazLoggerBlockHandler lazloggerbase/tlazloggerblockhandler.html - EnterBlock lazloggerbase/tlazloggerblockhandler.enterblock.html - ExitBlock lazloggerbase/tlazloggerblockhandler.exitblock.html - TLazLoggerLogGroupList lazloggerbase/tlazloggerloggrouplist.html - Add lazloggerbase/tlazloggerloggrouplist.add.html - FindOrAdd lazloggerbase/tlazloggerloggrouplist.findoradd.html - Remove lazloggerbase/tlazloggerloggrouplist.remove.html - Create lazloggerbase/tlazloggerloggrouplist.create.html - Destroy lazloggerbase/tlazloggerloggrouplist.destroy.html - Assign lazloggerbase/tlazloggerloggrouplist.assign.html - IndexOf lazloggerbase/tlazloggerloggrouplist.indexof.html - Find lazloggerbase/tlazloggerloggrouplist.find.html - Count lazloggerbase/tlazloggerloggrouplist.count.html - Item lazloggerbase/tlazloggerloggrouplist.item.html - TLazLogger lazloggerbase/tlazlogger.html - DoInit lazloggerbase/tlazlogger.doinit.html - DoFinsh lazloggerbase/tlazlogger.dofinsh.html - IncreaseIndent lazloggerbase/tlazlogger.increaseindent.html - DecreaseIndent lazloggerbase/tlazlogger.decreaseindent.html - IndentChanged lazloggerbase/tlazlogger.indentchanged.html - GetBlockHandler lazloggerbase/tlazlogger.getblockhandler.html - DoDbgOut lazloggerbase/tlazlogger.dodbgout.html - DoDebugLn lazloggerbase/tlazlogger.dodebugln.html - DoDebuglnStack lazloggerbase/tlazlogger.dodebuglnstack.html - ArgsToString lazloggerbase/tlazlogger.argstostring.html - IsInitialized lazloggerbase/tlazlogger.isinitialized.html - Create lazloggerbase/tlazlogger.create.html - Destroy lazloggerbase/tlazlogger.destroy.html - Assign lazloggerbase/tlazlogger.assign.html - Init lazloggerbase/tlazlogger.init.html - Finish lazloggerbase/tlazlogger.finish.html - CurrentIndentLevel lazloggerbase/tlazlogger.currentindentlevel.html - NestLvlIndent lazloggerbase/tlazlogger.nestlvlindent.html - MaxNestPrefixLen lazloggerbase/tlazlogger.maxnestprefixlen.html - RegisterLogGroup lazloggerbase/tlazlogger.registerloggroup.html - FindOrRegisterLogGroup lazloggerbase/tlazlogger.findorregisterloggroup.html - LogGroupList lazloggerbase/tlazlogger.loggrouplist.html - UseGlobalLogGroupList lazloggerbase/tlazlogger.usegloballoggrouplist.html - AddBlockHandler lazloggerbase/tlazlogger.addblockhandler.html - RemoveBlockHandler lazloggerbase/tlazlogger.removeblockhandler.html - BlockHandlerCount lazloggerbase/tlazlogger.blockhandlercount.html - BlockHandler lazloggerbase/tlazlogger.blockhandler.html - DebuglnStack lazloggerbase/tlazlogger.debuglnstack.html - DbgOut lazloggerbase/tlazlogger.dbgout.html - DebugLn lazloggerbase/tlazlogger.debugln.html - DebugLnEnter lazloggerbase/tlazlogger.debuglnenter.html - DebugLnExit lazloggerbase/tlazlogger.debuglnexit.html - TLazLoggerWithGroupParam lazloggerbase/tlazloggerwithgroupparam.html - Create lazloggerbase/tlazloggerwithgroupparam.create.html - Assign lazloggerbase/tlazloggerwithgroupparam.assign.html - RegisterLogGroup lazloggerbase/tlazloggerwithgroupparam.registerloggroup.html - FindOrRegisterLogGroup lazloggerbase/tlazloggerwithgroupparam.findorregisterloggroup.html - ParamForEnabledLogGroups lazloggerbase/tlazloggerwithgroupparam.paramforenabledloggroups.html - TLazLoggerNoOutput lazloggerbase/tlazloggernooutput.html - DebuglnStack lazloggerbase/debuglnstack.html - DbgOut lazloggerbase/dbgout.html - DebugLn lazloggerbase/debugln.html - DebugLnEnter lazloggerbase/debuglnenter.html - DebugLnExit lazloggerbase/debuglnexit.html - DbgS lazloggerbase/dbgs.html - DbgSJoin lazloggerbase/dbgsjoin.html - DbgSName lazloggerbase/dbgsname.html - dbgObjMem lazloggerbase/dbgobjmem.html - dbghex lazloggerbase/dbghex.html - dbgMemRange lazloggerbase/dbgmemrange.html - dbgMemStream lazloggerbase/dbgmemstream.html - ConvertLineEndings lazloggerbase/convertlineendings.html - GetParamByNameCount lazloggerbase/getparambynamecount.html - GetParamByName lazloggerbase/getparambyname.html - GetDebugLoggerGroups lazloggerbase/getdebugloggergroups.html - SetDebugLoggerGroups lazloggerbase/setdebugloggergroups.html - GetDebugLogger lazloggerbase/getdebuglogger.html - GetExistingDebugLogger lazloggerbase/getexistingdebuglogger.html - SetDebugLogger lazloggerbase/setdebuglogger.html - RecreateDebugLogger lazloggerbase/recreatedebuglogger.html - LazDebugLoggerCreator lazloggerbase/lazdebugloggercreator.html - OnWidgetSetDebugLn lazloggerbase/onwidgetsetdebugln.html - OnWidgetSetDbgOut lazloggerbase/onwidgetsetdbgout.html - LazClasses lazclasses/index.html - TFreeNotifyingObject lazclasses/tfreenotifyingobject.html - Destroy lazclasses/tfreenotifyingobject.destroy.html - AddFreeeNotification lazclasses/tfreenotifyingobject.addfreeenotification.html - RemoveFreeeNotification lazclasses/tfreenotifyingobject.removefreeenotification.html - AddFreeNotification lazclasses/tfreenotifyingobject.addfreenotification.html - RemoveFreeNotification lazclasses/tfreenotifyingobject.removefreenotification.html - TRefCountedObject lazclasses/trefcountedobject.html - DoFree lazclasses/trefcountedobject.dofree.html - DoReferenceAdded lazclasses/trefcountedobject.doreferenceadded.html - DoReferenceReleased lazclasses/trefcountedobject.doreferencereleased.html - RefCount lazclasses/trefcountedobject.refcount.html - Create lazclasses/trefcountedobject.create.html - Destroy lazclasses/trefcountedobject.destroy.html - AddReference lazclasses/trefcountedobject.addreference.html - ReleaseReference lazclasses/trefcountedobject.releasereference.html - TRefCntObjList lazclasses/trefcntobjlist.html - Notify lazclasses/trefcntobjlist.notify.html - ReleaseRefAndNil lazclasses/releaserefandnil.html - NilThenReleaseRef lazclasses/nilthenreleaseref.html - LazDbgLog lazdbglog/index.html - MemSizeString lazdbglog/memsizestring.html - MemSizeFPList lazdbglog/memsizefplist.html - GetStringRefCount lazdbglog/getstringrefcount.html - LazFileCache lazfilecache/index.html - LUInvalidChangeStamp lazfilecache/luinvalidchangestamp.html - LUInvalidChangeStamp64 lazfilecache/luinvalidchangestamp64.html - TFileStateCacheItemFlag lazfilecache/tfilestatecacheitemflag.html - TFileStateCacheItemFlags lazfilecache/tfilestatecacheitemflags.html - TOnChangeFileStateTimeStamp lazfilecache/tonchangefilestatetimestamp.html - TOnFileExistsCached lazfilecache/tonfileexistscached.html - TOnFileAgeCached lazfilecache/tonfileagecached.html - TFileStateCacheItem lazfilecache/tfilestatecacheitem.html - Create lazfilecache/tfilestatecacheitem.create.html - CalcMemSize lazfilecache/tfilestatecacheitem.calcmemsize.html - Filename lazfilecache/tfilestatecacheitem.filename.html - PhysicalFilename lazfilecache/tfilestatecacheitem.physicalfilename.html - Flags lazfilecache/tfilestatecacheitem.flags.html - TestedFlags lazfilecache/tfilestatecacheitem.testedflags.html - TimeStamp lazfilecache/tfilestatecacheitem.timestamp.html - Age lazfilecache/tfilestatecacheitem.age.html - TFileStateCache lazfilecache/tfilestatecache.html - Create lazfilecache/tfilestatecache.create.html - Destroy lazfilecache/tfilestatecache.destroy.html - Lock lazfilecache/tfilestatecache.lock.html - Unlock lazfilecache/tfilestatecache.unlock.html - Locked lazfilecache/tfilestatecache.locked.html - IncreaseTimeStamp lazfilecache/tfilestatecache.increasetimestamp.html - FileExistsCached lazfilecache/tfilestatecache.fileexistscached.html - DirPathExistsCached lazfilecache/tfilestatecache.dirpathexistscached.html - DirectoryIsWritableCached lazfilecache/tfilestatecache.directoryiswritablecached.html - FileIsExecutableCached lazfilecache/tfilestatecache.fileisexecutablecached.html - FileIsReadableCached lazfilecache/tfilestatecache.fileisreadablecached.html - FileIsWritableCached lazfilecache/tfilestatecache.fileiswritablecached.html - FileIsTextCached lazfilecache/tfilestatecache.fileistextcached.html - FileAgeCached lazfilecache/tfilestatecache.fileagecached.html - GetPhysicalFilenameCached lazfilecache/tfilestatecache.getphysicalfilenamecached.html - FindFile lazfilecache/tfilestatecache.findfile.html - Check lazfilecache/tfilestatecache.check.html - AddChangeTimeStampHandler lazfilecache/tfilestatecache.addchangetimestamphandler.html - RemoveChangeTimeStampHandler lazfilecache/tfilestatecache.removechangetimestamphandler.html - CalcMemSize lazfilecache/tfilestatecache.calcmemsize.html - TimeStamp lazfilecache/tfilestatecache.timestamp.html - FileExistsCached lazfilecache/fileexistscached.html - DirPathExistsCached lazfilecache/dirpathexistscached.html - DirectoryIsWritableCached lazfilecache/directoryiswritablecached.html - FileIsExecutableCached lazfilecache/fileisexecutablecached.html - FileIsReadableCached lazfilecache/fileisreadablecached.html - FileIsWritableCached lazfilecache/fileiswritablecached.html - FileIsTextCached lazfilecache/fileistextcached.html - FileAgeCached lazfilecache/fileagecached.html - GetPhysicalFilenameCached lazfilecache/getphysicalfilenamecached.html - InvalidateFileStateCache lazfilecache/invalidatefilestatecache.html - CompareFileStateItems lazfilecache/comparefilestateitems.html - CompareFilenameWithFileStateCacheItem lazfilecache/comparefilenamewithfilestatecacheitem.html - LUIncreaseChangeStamp lazfilecache/luincreasechangestamp.html - LUIncreaseChangeStamp64 lazfilecache/luincreasechangestamp64.html - FileStateCache lazfilecache/filestatecache.html - OnFileExistsCached lazfilecache/onfileexistscached.html - OnFileAgeCached lazfilecache/onfileagecached.html - LazUtils lazutils/index.html - Laz2_DOM laz2_dom/index.html - INDEX_SIZE_ERR laz2_dom/index_size_err.html - DOMSTRING_SIZE_ERR laz2_dom/domstring_size_err.html - HIERARCHY_REQUEST_ERR laz2_dom/hierarchy_request_err.html - WRONG_DOCUMENT_ERR laz2_dom/wrong_document_err.html - INVALID_CHARACTER_ERR laz2_dom/invalid_character_err.html - NO_DATA_ALLOWED_ERR laz2_dom/no_data_allowed_err.html - NO_MODIFICATION_ALLOWED_ERR laz2_dom/no_modification_allowed_err.html - NOT_FOUND_ERR laz2_dom/not_found_err.html - NOT_SUPPORTED_ERR laz2_dom/not_supported_err.html - INUSE_ATTRIBUTE_ERR laz2_dom/inuse_attribute_err.html - INVALID_STATE_ERR laz2_dom/invalid_state_err.html - SYNTAX_ERR laz2_dom/syntax_err.html - INVALID_MODIFICATION_ERR laz2_dom/invalid_modification_err.html - NAMESPACE_ERR laz2_dom/namespace_err.html - INVALID_ACCESS_ERR laz2_dom/invalid_access_err.html - ELEMENT_NODE laz2_dom/element_node.html - ATTRIBUTE_NODE laz2_dom/attribute_node.html - TEXT_NODE laz2_dom/text_node.html - CDATA_SECTION_NODE laz2_dom/cdata_section_node.html - ENTITY_REFERENCE_NODE laz2_dom/entity_reference_node.html - ENTITY_NODE laz2_dom/entity_node.html - PROCESSING_INSTRUCTION_NODE laz2_dom/processing_instruction_node.html - COMMENT_NODE laz2_dom/comment_node.html - DOCUMENT_NODE laz2_dom/document_node.html - DOCUMENT_TYPE_NODE laz2_dom/document_type_node.html - DOCUMENT_FRAGMENT_NODE laz2_dom/document_fragment_node.html - NOTATION_NODE laz2_dom/notation_node.html - stduri_xml laz2_dom/stduri_xml.html - stduri_xmlns laz2_dom/stduri_xmlns.html - PNodePoolArray laz2_dom/pnodepoolarray.html - TNodePoolArray laz2_dom/tnodepoolarray.html - TSetOfChar laz2_dom/tsetofchar.html - DOMString laz2_dom/domstring.html - DOMPChar laz2_dom/dompchar.html - DOMChar laz2_dom/domchar.html - PDOMString laz2_dom/pdomstring.html - TNodeFlagEnum laz2_dom/tnodeflagenum.html - TNodeFlags laz2_dom/tnodeflags.html - TDOMNodeClass laz2_dom/tdomnodeclass.html - TFilterResult laz2_dom/tfilterresult.html - TNamespaces laz2_dom/tnamespaces.html - TNamespaceInfo laz2_dom/tnamespaceinfo.html - TAttrDataType laz2_dom/tattrdatatype.html - TAttrDefault laz2_dom/tattrdefault.html - PExtent laz2_dom/pextent.html - TExtent laz2_dom/textent.html - EDOMError laz2_dom/edomerror.html - Code laz2_dom/edomerror.code.html - Create laz2_dom/edomerror.create.html - EDOMIndexSize laz2_dom/edomindexsize.html - Create laz2_dom/edomindexsize.create.html - EDOMHierarchyRequest laz2_dom/edomhierarchyrequest.html - Create laz2_dom/edomhierarchyrequest.create.html - EDOMWrongDocument laz2_dom/edomwrongdocument.html - Create laz2_dom/edomwrongdocument.create.html - EDOMNotFound laz2_dom/edomnotfound.html - Create laz2_dom/edomnotfound.create.html - EDOMNotSupported laz2_dom/edomnotsupported.html - Create laz2_dom/edomnotsupported.create.html - EDOMInUseAttribute laz2_dom/edominuseattribute.html - Create laz2_dom/edominuseattribute.create.html - EDOMInvalidState laz2_dom/edominvalidstate.html - Create laz2_dom/edominvalidstate.create.html - EDOMSyntax laz2_dom/edomsyntax.html - Create laz2_dom/edomsyntax.create.html - EDOMInvalidModification laz2_dom/edominvalidmodification.html - Create laz2_dom/edominvalidmodification.create.html - EDOMNamespace laz2_dom/edomnamespace.html - Create laz2_dom/edomnamespace.create.html - EDOMInvalidAccess laz2_dom/edominvalidaccess.html - Create laz2_dom/edominvalidaccess.create.html - TDOMNodeEnumerator laz2_dom/tdomnodeenumerator.html - Create laz2_dom/tdomnodeenumerator.create.html - MoveNext laz2_dom/tdomnodeenumerator.movenext.html - Current laz2_dom/tdomnodeenumerator.current.html - TDOMNodeAllChildEnumerator laz2_dom/tdomnodeallchildenumerator.html - Create laz2_dom/tdomnodeallchildenumerator.create.html - MoveNext laz2_dom/tdomnodeallchildenumerator.movenext.html - Current laz2_dom/tdomnodeallchildenumerator.current.html - GetEnumerator laz2_dom/tdomnodeallchildenumerator.getenumerator.html - TDOMNode laz2_dom/tdomnode.html - FPool laz2_dom/tdomnode.fpool.html - FFlags laz2_dom/tdomnode.fflags.html - FParentNode laz2_dom/tdomnode.fparentnode.html - FPreviousSibling laz2_dom/tdomnode.fprevioussibling.html - FNextSibling laz2_dom/tdomnode.fnextsibling.html - FOwnerDocument laz2_dom/tdomnode.fownerdocument.html - GetNodeName laz2_dom/tdomnode.getnodename.html - GetNodeValue laz2_dom/tdomnode.getnodevalue.html - SetNodeValue laz2_dom/tdomnode.setnodevalue.html - GetFirstChild laz2_dom/tdomnode.getfirstchild.html - GetLastChild laz2_dom/tdomnode.getlastchild.html - GetAttributes laz2_dom/tdomnode.getattributes.html - GetRevision laz2_dom/tdomnode.getrevision.html - GetNodeType laz2_dom/tdomnode.getnodetype.html - GetTextContent laz2_dom/tdomnode.gettextcontent.html - SetTextContent laz2_dom/tdomnode.settextcontent.html - GetLocalName laz2_dom/tdomnode.getlocalname.html - GetNamespaceURI laz2_dom/tdomnode.getnamespaceuri.html - GetPrefix laz2_dom/tdomnode.getprefix.html - SetPrefix laz2_dom/tdomnode.setprefix.html - GetOwnerDocument laz2_dom/tdomnode.getownerdocument.html - GetBaseURI laz2_dom/tdomnode.getbaseuri.html - SetReadOnly laz2_dom/tdomnode.setreadonly.html - Changing laz2_dom/tdomnode.changing.html - Create laz2_dom/tdomnode.create.html - Destroy laz2_dom/tdomnode.destroy.html - FreeInstance laz2_dom/tdomnode.freeinstance.html - GetChildNodes laz2_dom/tdomnode.getchildnodes.html - GetChildCount laz2_dom/tdomnode.getchildcount.html - NodeName laz2_dom/tdomnode.nodename.html - NodeValue laz2_dom/tdomnode.nodevalue.html - NodeType laz2_dom/tdomnode.nodetype.html - ParentNode laz2_dom/tdomnode.parentnode.html - FirstChild laz2_dom/tdomnode.firstchild.html - LastChild laz2_dom/tdomnode.lastchild.html - ChildNodes laz2_dom/tdomnode.childnodes.html - PreviousSibling laz2_dom/tdomnode.previoussibling.html - NextSibling laz2_dom/tdomnode.nextsibling.html - Attributes laz2_dom/tdomnode.attributes.html - OwnerDocument laz2_dom/tdomnode.ownerdocument.html - GetEnumerator laz2_dom/tdomnode.getenumerator.html - GetEnumeratorAllChildren laz2_dom/tdomnode.getenumeratorallchildren.html - GetNextNode laz2_dom/tdomnode.getnextnode.html - GetNextNodeSkipChildren laz2_dom/tdomnode.getnextnodeskipchildren.html - GetPreviousNode laz2_dom/tdomnode.getpreviousnode.html - GetLastLeaf laz2_dom/tdomnode.getlastleaf.html - GetLevel laz2_dom/tdomnode.getlevel.html - InsertBefore laz2_dom/tdomnode.insertbefore.html - ReplaceChild laz2_dom/tdomnode.replacechild.html - DetachChild laz2_dom/tdomnode.detachchild.html - RemoveChild laz2_dom/tdomnode.removechild.html - AppendChild laz2_dom/tdomnode.appendchild.html - HasChildNodes laz2_dom/tdomnode.haschildnodes.html - CloneNode laz2_dom/tdomnode.clonenode.html - IsSupported laz2_dom/tdomnode.issupported.html - HasAttributes laz2_dom/tdomnode.hasattributes.html - Normalize laz2_dom/tdomnode.normalize.html - NamespaceURI laz2_dom/tdomnode.namespaceuri.html - LocalName laz2_dom/tdomnode.localname.html - Prefix laz2_dom/tdomnode.prefix.html - TextContent laz2_dom/tdomnode.textcontent.html - LookupPrefix laz2_dom/tdomnode.lookupprefix.html - LookupNamespaceURI laz2_dom/tdomnode.lookupnamespaceuri.html - IsDefaultNamespace laz2_dom/tdomnode.isdefaultnamespace.html - baseURI laz2_dom/tdomnode.baseuri.html - FindNode laz2_dom/tdomnode.findnode.html - CompareName laz2_dom/tdomnode.comparename.html - Flags laz2_dom/tdomnode.flags.html - TDOMNode_WithChildren laz2_dom/tdomnode_withchildren.html - FFirstChild laz2_dom/tdomnode_withchildren.ffirstchild.html - FLastChild laz2_dom/tdomnode_withchildren.flastchild.html - FChildNodes laz2_dom/tdomnode_withchildren.fchildnodes.html - GetFirstChild laz2_dom/tdomnode_withchildren.getfirstchild.html - GetLastChild laz2_dom/tdomnode_withchildren.getlastchild.html - CloneChildren laz2_dom/tdomnode_withchildren.clonechildren.html - FreeChildren laz2_dom/tdomnode_withchildren.freechildren.html - GetTextContent laz2_dom/tdomnode_withchildren.gettextcontent.html - SetTextContent laz2_dom/tdomnode_withchildren.settextcontent.html - Destroy laz2_dom/tdomnode_withchildren.destroy.html - InsertBefore laz2_dom/tdomnode_withchildren.insertbefore.html - ReplaceChild laz2_dom/tdomnode_withchildren.replacechild.html - DetachChild laz2_dom/tdomnode_withchildren.detachchild.html - HasChildNodes laz2_dom/tdomnode_withchildren.haschildnodes.html - GetChildCount laz2_dom/tdomnode_withchildren.getchildcount.html - FindNode laz2_dom/tdomnode_withchildren.findnode.html - InternalAppend laz2_dom/tdomnode_withchildren.internalappend.html - TDOMNodeList laz2_dom/tdomnodelist.html - FNode laz2_dom/tdomnodelist.fnode.html - FRevision laz2_dom/tdomnodelist.frevision.html - FList laz2_dom/tdomnodelist.flist.html - GetCount laz2_dom/tdomnodelist.getcount.html - GetItem laz2_dom/tdomnodelist.getitem.html - NodeFilter laz2_dom/tdomnodelist.nodefilter.html - BuildList laz2_dom/tdomnodelist.buildlist.html - Create laz2_dom/tdomnodelist.create.html - Destroy laz2_dom/tdomnodelist.destroy.html - Item laz2_dom/tdomnodelist.item.html - Count laz2_dom/tdomnodelist.count.html - Length laz2_dom/tdomnodelist.length.html - TDOMElementList laz2_dom/tdomelementlist.html - filter laz2_dom/tdomelementlist.filter.html - FNSIndexFilter laz2_dom/tdomelementlist.fnsindexfilter.html - localNameFilter laz2_dom/tdomelementlist.localnamefilter.html - FMatchNS laz2_dom/tdomelementlist.fmatchns.html - FMatchAnyNS laz2_dom/tdomelementlist.fmatchanyns.html - UseFilter laz2_dom/tdomelementlist.usefilter.html - NodeFilter laz2_dom/tdomelementlist.nodefilter.html - Create laz2_dom/tdomelementlist.create.html - TDOMNamedNodeMap laz2_dom/tdomnamednodemap.html - FOwner laz2_dom/tdomnamednodemap.fowner.html - FNodeType laz2_dom/tdomnamednodemap.fnodetype.html - FSortedList laz2_dom/tdomnamednodemap.fsortedlist.html - FPosList laz2_dom/tdomnamednodemap.fposlist.html - GetPosItem laz2_dom/tdomnamednodemap.getpositem.html - GetSortedItem laz2_dom/tdomnamednodemap.getsorteditem.html - GetLength laz2_dom/tdomnamednodemap.getlength.html - FindSorted laz2_dom/tdomnamednodemap.findsorted.html - DeleteSorted laz2_dom/tdomnamednodemap.deletesorted.html - RestoreDefault laz2_dom/tdomnamednodemap.restoredefault.html - InternalRemove laz2_dom/tdomnamednodemap.internalremove.html - ValidateInsert laz2_dom/tdomnamednodemap.validateinsert.html - Create laz2_dom/tdomnamednodemap.create.html - Destroy laz2_dom/tdomnamednodemap.destroy.html - GetNamedItem laz2_dom/tdomnamednodemap.getnameditem.html - SetNamedItem laz2_dom/tdomnamednodemap.setnameditem.html - RemoveNamedItem laz2_dom/tdomnamednodemap.removenameditem.html - getNamedItemNS laz2_dom/tdomnamednodemap.getnameditemns.html - setNamedItemNS laz2_dom/tdomnamednodemap.setnameditemns.html - removeNamedItemNS laz2_dom/tdomnamednodemap.removenameditemns.html - Item laz2_dom/tdomnamednodemap.item.html - SortedItem laz2_dom/tdomnamednodemap.sorteditem.html - Length laz2_dom/tdomnamednodemap.length.html - TDOMCharacterData laz2_dom/tdomcharacterdata.html - GetLength laz2_dom/tdomcharacterdata.getlength.html - GetNodeValue laz2_dom/tdomcharacterdata.getnodevalue.html - SetNodeValue laz2_dom/tdomcharacterdata.setnodevalue.html - Data laz2_dom/tdomcharacterdata.data.html - Length laz2_dom/tdomcharacterdata.length.html - SubstringData laz2_dom/tdomcharacterdata.substringdata.html - AppendData laz2_dom/tdomcharacterdata.appenddata.html - InsertData laz2_dom/tdomcharacterdata.insertdata.html - DeleteData laz2_dom/tdomcharacterdata.deletedata.html - ReplaceData laz2_dom/tdomcharacterdata.replacedata.html - TDOMImplementation laz2_dom/tdomimplementation.html - HasFeature laz2_dom/tdomimplementation.hasfeature.html - CreateDocumentType laz2_dom/tdomimplementation.createdocumenttype.html - CreateDocument laz2_dom/tdomimplementation.createdocument.html - TDOMDocumentFragment laz2_dom/tdomdocumentfragment.html - GetNodeType laz2_dom/tdomdocumentfragment.getnodetype.html - GetNodeName laz2_dom/tdomdocumentfragment.getnodename.html - CloneNode laz2_dom/tdomdocumentfragment.clonenode.html - TDOMDocument laz2_dom/tdomdocument.html - FIDList laz2_dom/tdomdocument.fidlist.html - FRevision laz2_dom/tdomdocument.frevision.html - FXML11 laz2_dom/tdomdocument.fxml11.html - FImplementation laz2_dom/tdomdocument.fimplementation.html - FNamespaces laz2_dom/tdomdocument.fnamespaces.html - FNames laz2_dom/tdomdocument.fnames.html - FEmptyNode laz2_dom/tdomdocument.femptynode.html - FNodeLists laz2_dom/tdomdocument.fnodelists.html - FMaxPoolSize laz2_dom/tdomdocument.fmaxpoolsize.html - FPools laz2_dom/tdomdocument.fpools.html - FDocumentURI laz2_dom/tdomdocument.fdocumenturi.html - GetDocumentElement laz2_dom/tdomdocument.getdocumentelement.html - GetDocType laz2_dom/tdomdocument.getdoctype.html - GetNodeType laz2_dom/tdomdocument.getnodetype.html - GetNodeName laz2_dom/tdomdocument.getnodename.html - GetTextContent laz2_dom/tdomdocument.gettextcontent.html - GetOwnerDocument laz2_dom/tdomdocument.getownerdocument.html - SetTextContent laz2_dom/tdomdocument.settextcontent.html - RemoveID laz2_dom/tdomdocument.removeid.html - GetChildNodeList laz2_dom/tdomdocument.getchildnodelist.html - GetElementList laz2_dom/tdomdocument.getelementlist.html - NodeListDestroyed laz2_dom/tdomdocument.nodelistdestroyed.html - Alloc laz2_dom/tdomdocument.alloc.html - IndexOfNS laz2_dom/tdomdocument.indexofns.html - InsertBefore laz2_dom/tdomdocument.insertbefore.html - ReplaceChild laz2_dom/tdomdocument.replacechild.html - DocType laz2_dom/tdomdocument.doctype.html - Impl laz2_dom/tdomdocument.impl.html - DocumentElement laz2_dom/tdomdocument.documentelement.html - CreateElement laz2_dom/tdomdocument.createelement.html - CreateElementBuf laz2_dom/tdomdocument.createelementbuf.html - CreateDocumentFragment laz2_dom/tdomdocument.createdocumentfragment.html - CreateTextNode laz2_dom/tdomdocument.createtextnode.html - CreateTextNodeBuf laz2_dom/tdomdocument.createtextnodebuf.html - CreateComment laz2_dom/tdomdocument.createcomment.html - CreateCommentBuf laz2_dom/tdomdocument.createcommentbuf.html - CreateCDATASection laz2_dom/tdomdocument.createcdatasection.html - CreateProcessingInstruction laz2_dom/tdomdocument.createprocessinginstruction.html - CreateAttribute laz2_dom/tdomdocument.createattribute.html - CreateAttributeBuf laz2_dom/tdomdocument.createattributebuf.html - CreateAttributeDef laz2_dom/tdomdocument.createattributedef.html - CreateEntityReference laz2_dom/tdomdocument.createentityreference.html - GetElementsByTagName laz2_dom/tdomdocument.getelementsbytagname.html - ImportNode laz2_dom/tdomdocument.importnode.html - CreateElementNS laz2_dom/tdomdocument.createelementns.html - CreateAttributeNS laz2_dom/tdomdocument.createattributens.html - GetElementsByTagNameNS laz2_dom/tdomdocument.getelementsbytagnamens.html - GetElementById laz2_dom/tdomdocument.getelementbyid.html - documentURI laz2_dom/tdomdocument.documenturi.html - Create laz2_dom/tdomdocument.create.html - Destroy laz2_dom/tdomdocument.destroy.html - AddID laz2_dom/tdomdocument.addid.html - Names laz2_dom/tdomdocument.names.html - TXMLDocument laz2_dom/txmldocument.html - Encoding laz2_dom/txmldocument.encoding.html - StylesheetType laz2_dom/txmldocument.stylesheettype.html - StylesheetHRef laz2_dom/txmldocument.stylesheethref.html - CreateCDATASection laz2_dom/txmldocument.createcdatasection.html - CreateProcessingInstruction laz2_dom/txmldocument.createprocessinginstruction.html - CreateEntityReference laz2_dom/txmldocument.createentityreference.html - XMLVersion laz2_dom/txmldocument.xmlversion.html - TDOMNode_NS laz2_dom/tdomnode_ns.html - FNSI laz2_dom/tdomnode_ns.fnsi.html - GetNodeName laz2_dom/tdomnode_ns.getnodename.html - GetLocalName laz2_dom/tdomnode_ns.getlocalname.html - GetNamespaceURI laz2_dom/tdomnode_ns.getnamespaceuri.html - GetPrefix laz2_dom/tdomnode_ns.getprefix.html - SetPrefix laz2_dom/tdomnode_ns.setprefix.html - SetNSI laz2_dom/tdomnode_ns.setnsi.html - CompareName laz2_dom/tdomnode_ns.comparename.html - NSI laz2_dom/tdomnode_ns.nsi.html - TDOMAttr laz2_dom/tdomattr.html - FOwnerElement laz2_dom/tdomattr.fownerelement.html - FDataType laz2_dom/tdomattr.fdatatype.html - GetNodeValue laz2_dom/tdomattr.getnodevalue.html - GetNodeType laz2_dom/tdomattr.getnodetype.html - GetSpecified laz2_dom/tdomattr.getspecified.html - GetIsID laz2_dom/tdomattr.getisid.html - SetNodeValue laz2_dom/tdomattr.setnodevalue.html - Destroy laz2_dom/tdomattr.destroy.html - CloneNode laz2_dom/tdomattr.clonenode.html - Name laz2_dom/tdomattr.name.html - Specified laz2_dom/tdomattr.specified.html - Value laz2_dom/tdomattr.value.html - OwnerElement laz2_dom/tdomattr.ownerelement.html - IsID laz2_dom/tdomattr.isid.html - DataType laz2_dom/tdomattr.datatype.html - TDOMElement laz2_dom/tdomelement.html - FAttributes laz2_dom/tdomelement.fattributes.html - GetNodeType laz2_dom/tdomelement.getnodetype.html - GetAttributes laz2_dom/tdomelement.getattributes.html - AttachDefaultAttrs laz2_dom/tdomelement.attachdefaultattrs.html - InternalLookupPrefix laz2_dom/tdomelement.internallookupprefix.html - RestoreDefaultAttr laz2_dom/tdomelement.restoredefaultattr.html - Destroy laz2_dom/tdomelement.destroy.html - CloneNode laz2_dom/tdomelement.clonenode.html - IsEmpty laz2_dom/tdomelement.isempty.html - Normalize laz2_dom/tdomelement.normalize.html - TagName laz2_dom/tdomelement.tagname.html - GetAttribute laz2_dom/tdomelement.getattribute.html - SetAttribute laz2_dom/tdomelement.setattribute.html - RemoveAttribute laz2_dom/tdomelement.removeattribute.html - GetAttributeNode laz2_dom/tdomelement.getattributenode.html - SetAttributeNode laz2_dom/tdomelement.setattributenode.html - RemoveAttributeNode laz2_dom/tdomelement.removeattributenode.html - GetElementsByTagName laz2_dom/tdomelement.getelementsbytagname.html - GetAttributeNS laz2_dom/tdomelement.getattributens.html - SetAttributeNS laz2_dom/tdomelement.setattributens.html - RemoveAttributeNS laz2_dom/tdomelement.removeattributens.html - GetAttributeNodeNS laz2_dom/tdomelement.getattributenodens.html - SetAttributeNodeNS laz2_dom/tdomelement.setattributenodens.html - GetElementsByTagNameNS laz2_dom/tdomelement.getelementsbytagnamens.html - hasAttribute laz2_dom/tdomelement.hasattribute.html - hasAttributeNS laz2_dom/tdomelement.hasattributens.html - HasAttributes laz2_dom/tdomelement.hasattributes.html - AttribStrings laz2_dom/tdomelement.attribstrings.html - TDOMText laz2_dom/tdomtext.html - GetNodeType laz2_dom/tdomtext.getnodetype.html - GetNodeName laz2_dom/tdomtext.getnodename.html - SetNodeValue laz2_dom/tdomtext.setnodevalue.html - CloneNode laz2_dom/tdomtext.clonenode.html - SplitText laz2_dom/tdomtext.splittext.html - IsElementContentWhitespace laz2_dom/tdomtext.iselementcontentwhitespace.html - TDOMComment laz2_dom/tdomcomment.html - GetNodeType laz2_dom/tdomcomment.getnodetype.html - GetNodeName laz2_dom/tdomcomment.getnodename.html - CloneNode laz2_dom/tdomcomment.clonenode.html - TDOMCDATASection laz2_dom/tdomcdatasection.html - GetNodeType laz2_dom/tdomcdatasection.getnodetype.html - GetNodeName laz2_dom/tdomcdatasection.getnodename.html - CloneNode laz2_dom/tdomcdatasection.clonenode.html - TDOMDocumentType laz2_dom/tdomdocumenttype.html - FName laz2_dom/tdomdocumenttype.fname.html - FPublicID laz2_dom/tdomdocumenttype.fpublicid.html - FSystemID laz2_dom/tdomdocumenttype.fsystemid.html - FInternalSubset laz2_dom/tdomdocumenttype.finternalsubset.html - FEntities laz2_dom/tdomdocumenttype.fentities.html - FNotations laz2_dom/tdomdocumenttype.fnotations.html - GetEntities laz2_dom/tdomdocumenttype.getentities.html - GetNotations laz2_dom/tdomdocumenttype.getnotations.html - GetNodeType laz2_dom/tdomdocumenttype.getnodetype.html - GetNodeName laz2_dom/tdomdocumenttype.getnodename.html - Destroy laz2_dom/tdomdocumenttype.destroy.html - Name laz2_dom/tdomdocumenttype.name.html - Entities laz2_dom/tdomdocumenttype.entities.html - Notations laz2_dom/tdomdocumenttype.notations.html - PublicID laz2_dom/tdomdocumenttype.publicid.html - SystemID laz2_dom/tdomdocumenttype.systemid.html - InternalSubset laz2_dom/tdomdocumenttype.internalsubset.html - TDOMNotation laz2_dom/tdomnotation.html - FName laz2_dom/tdomnotation.fname.html - FPublicID laz2_dom/tdomnotation.fpublicid.html - FSystemID laz2_dom/tdomnotation.fsystemid.html - GetNodeType laz2_dom/tdomnotation.getnodetype.html - GetNodeName laz2_dom/tdomnotation.getnodename.html - CloneNode laz2_dom/tdomnotation.clonenode.html - PublicID laz2_dom/tdomnotation.publicid.html - SystemID laz2_dom/tdomnotation.systemid.html - TDOMEntity laz2_dom/tdomentity.html - FName laz2_dom/tdomentity.fname.html - FPublicID laz2_dom/tdomentity.fpublicid.html - FSystemID laz2_dom/tdomentity.fsystemid.html - FNotationName laz2_dom/tdomentity.fnotationname.html - GetNodeType laz2_dom/tdomentity.getnodetype.html - GetNodeName laz2_dom/tdomentity.getnodename.html - CloneNode laz2_dom/tdomentity.clonenode.html - PublicID laz2_dom/tdomentity.publicid.html - SystemID laz2_dom/tdomentity.systemid.html - NotationName laz2_dom/tdomentity.notationname.html - TDOMEntityReference laz2_dom/tdomentityreference.html - FName laz2_dom/tdomentityreference.fname.html - GetNodeType laz2_dom/tdomentityreference.getnodetype.html - GetNodeName laz2_dom/tdomentityreference.getnodename.html - CloneNode laz2_dom/tdomentityreference.clonenode.html - TDOMProcessingInstruction laz2_dom/tdomprocessinginstruction.html - GetNodeType laz2_dom/tdomprocessinginstruction.getnodetype.html - GetNodeName laz2_dom/tdomprocessinginstruction.getnodename.html - GetNodeValue laz2_dom/tdomprocessinginstruction.getnodevalue.html - SetNodeValue laz2_dom/tdomprocessinginstruction.setnodevalue.html - CloneNode laz2_dom/tdomprocessinginstruction.clonenode.html - Target laz2_dom/tdomprocessinginstruction.target.html - Data laz2_dom/tdomprocessinginstruction.data.html - TDOMAttrDef laz2_dom/tdomattrdef.html - FExternallyDeclared laz2_dom/tdomattrdef.fexternallydeclared.html - FDefault laz2_dom/tdomattrdef.fdefault.html - FTag laz2_dom/tdomattrdef.ftag.html - FEnumeration laz2_dom/tdomattrdef.fenumeration.html - AddEnumToken laz2_dom/tdomattrdef.addenumtoken.html - HasEnumToken laz2_dom/tdomattrdef.hasenumtoken.html - CloneNode laz2_dom/tdomattrdef.clonenode.html - Default laz2_dom/tdomattrdef.default.html - ExternallyDeclared laz2_dom/tdomattrdef.externallydeclared.html - Tag laz2_dom/tdomattrdef.tag.html - TNodePool laz2_dom/tnodepool.html - Create laz2_dom/tnodepool.create.html - Destroy laz2_dom/tnodepool.destroy.html - AllocNode laz2_dom/tnodepool.allocnode.html - FreeNode laz2_dom/tnodepool.freenode.html - StrToXMLValue laz2_dom/strtoxmlvalue.html - XMLValueToStr laz2_dom/xmlvaluetostr.html - EncodeLesserAndGreaterThan laz2_dom/encodelesserandgreaterthan.html - laz2_xmlutils laz2_xmlutils/index.html - ns_ASCII laz2_xmlutils/ns_ascii.html - ns_0200 laz2_xmlutils/ns_0200.html - ns_0300 laz2_xmlutils/ns_0300.html - ns_0400 laz2_xmlutils/ns_0400.html - ns_0500 laz2_xmlutils/ns_0500.html - ns_0600 laz2_xmlutils/ns_0600.html - ns_0900 laz2_xmlutils/ns_0900.html - ns_0A00 laz2_xmlutils/ns_0a00.html - ns_0B00 laz2_xmlutils/ns_0b00.html - ns_0C00 laz2_xmlutils/ns_0c00.html - ns_0D00 laz2_xmlutils/ns_0d00.html - ns_0E00 laz2_xmlutils/ns_0e00.html - ns_0F00 laz2_xmlutils/ns_0f00.html - ns_3000 laz2_xmlutils/ns_3000.html - namingBitmap laz2_xmlutils/namingbitmap.html - Xml11HighPages laz2_xmlutils/xml11highpages.html - NamePages laz2_xmlutils/namepages.html - TXMLUtilString laz2_xmlutils/txmlutilstring.html - TXMLUtilChar laz2_xmlutils/txmlutilchar.html - PXMLUtilChar laz2_xmlutils/pxmlutilchar.html - PXMLUtilString laz2_xmlutils/pxmlutilstring.html - PPHashItem laz2_xmlutils/pphashitem.html - PHashItem laz2_xmlutils/phashitem.html - THashItem laz2_xmlutils/thashitem.html - THashItemArray laz2_xmlutils/thashitemarray.html - PHashItemArray laz2_xmlutils/phashitemarray.html - THashForEach laz2_xmlutils/thashforeach.html - TExpHashEntry laz2_xmlutils/texphashentry.html - TExpHashEntryArray laz2_xmlutils/texphashentryarray.html - PExpHashEntryArray laz2_xmlutils/pexphashentryarray.html - TAttributeAction laz2_xmlutils/tattributeaction.html - TSetOfByte laz2_xmlutils/tsetofbyte.html - THashTable laz2_xmlutils/thashtable.html - Create laz2_xmlutils/thashtable.create.html - Destroy laz2_xmlutils/thashtable.destroy.html - Clear laz2_xmlutils/thashtable.clear.html - Find laz2_xmlutils/thashtable.find.html - FindOrAdd laz2_xmlutils/thashtable.findoradd.html - Get laz2_xmlutils/thashtable.get.html - Remove laz2_xmlutils/thashtable.remove.html - RemoveData laz2_xmlutils/thashtable.removedata.html - ForEach laz2_xmlutils/thashtable.foreach.html - Count laz2_xmlutils/thashtable.count.html - TDblHashArray laz2_xmlutils/tdblhasharray.html - Init laz2_xmlutils/tdblhasharray.init.html - Locate laz2_xmlutils/tdblhasharray.locate.html - Destroy laz2_xmlutils/tdblhasharray.destroy.html - TBinding laz2_xmlutils/tbinding.html - uri laz2_xmlutils/tbinding.uri.html - next laz2_xmlutils/tbinding.next.html - prevPrefixBinding laz2_xmlutils/tbinding.prevprefixbinding.html - Prefix laz2_xmlutils/tbinding.prefix.html - TNSSupport laz2_xmlutils/tnssupport.html - Create laz2_xmlutils/tnssupport.create.html - Destroy laz2_xmlutils/tnssupport.destroy.html - DefineBinding laz2_xmlutils/tnssupport.definebinding.html - CheckAttribute laz2_xmlutils/tnssupport.checkattribute.html - IsPrefixBound laz2_xmlutils/tnssupport.isprefixbound.html - GetPrefix laz2_xmlutils/tnssupport.getprefix.html - BindPrefix laz2_xmlutils/tnssupport.bindprefix.html - DefaultNSBinding laz2_xmlutils/tnssupport.defaultnsbinding.html - StartElement laz2_xmlutils/tnssupport.startelement.html - EndElement laz2_xmlutils/tnssupport.endelement.html - IsXmlName laz2_xmlutils/isxmlname.html - IsXmlNames laz2_xmlutils/isxmlnames.html - IsXmlNmToken laz2_xmlutils/isxmlnmtoken.html - IsXmlNmTokens laz2_xmlutils/isxmlnmtokens.html - IsValidXmlEncoding laz2_xmlutils/isvalidxmlencoding.html - Xml11NamePages laz2_xmlutils/xml11namepages.html - NormalizeSpaces laz2_xmlutils/normalizespaces.html - IsXmlWhiteSpace laz2_xmlutils/isxmlwhitespace.html - Hash laz2_xmlutils/hash.html - XUStrLIComp laz2_xmlutils/xustrlicomp.html - TranslateUTF8Chars laz2_xmlutils/translateutf8chars.html - Laz2_XMLCfg laz2_xmlcfg/index.html - TXMLConfig laz2_xmlcfg/txmlconfig.html - TNodeCache laz2_xmlcfg/txmlconfig.tnodecache.html - doc laz2_xmlcfg/txmlconfig.doc.html - FModified laz2_xmlcfg/txmlconfig.fmodified.html - fDoNotLoadFromFile laz2_xmlcfg/txmlconfig.fdonotloadfromfile.html - fAutoLoadFromSource laz2_xmlcfg/txmlconfig.fautoloadfromsource.html - fPathCache laz2_xmlcfg/txmlconfig.fpathcache.html - fPathNodeCache laz2_xmlcfg/txmlconfig.fpathnodecache.html - Loaded laz2_xmlcfg/txmlconfig.loaded.html - ExtendedToStr laz2_xmlcfg/txmlconfig.extendedtostr.html - StrToExtended laz2_xmlcfg/txmlconfig.strtoextended.html - ReadXMLFile laz2_xmlcfg/txmlconfig.readxmlfile.html - WriteXMLFile laz2_xmlcfg/txmlconfig.writexmlfile.html - FreeDoc laz2_xmlcfg/txmlconfig.freedoc.html - SetPathNodeCache laz2_xmlcfg/txmlconfig.setpathnodecache.html - GetCachedPathNode laz2_xmlcfg/txmlconfig.getcachedpathnode.html - InvalidateCacheTilEnd laz2_xmlcfg/txmlconfig.invalidatecachetilend.html - InternalFindNode laz2_xmlcfg/txmlconfig.internalfindnode.html - InternalCleanNode laz2_xmlcfg/txmlconfig.internalcleannode.html - FindChildNode laz2_xmlcfg/txmlconfig.findchildnode.html - Create laz2_xmlcfg/txmlconfig.create.html - CreateClean laz2_xmlcfg/txmlconfig.createclean.html - CreateWithSource laz2_xmlcfg/txmlconfig.createwithsource.html - Destroy laz2_xmlcfg/txmlconfig.destroy.html - Clear laz2_xmlcfg/txmlconfig.clear.html - Flush laz2_xmlcfg/txmlconfig.flush.html - ReadFromStream laz2_xmlcfg/txmlconfig.readfromstream.html - WriteToStream laz2_xmlcfg/txmlconfig.writetostream.html - GetValue laz2_xmlcfg/txmlconfig.getvalue.html - GetExtendedValue laz2_xmlcfg/txmlconfig.getextendedvalue.html - SetValue laz2_xmlcfg/txmlconfig.setvalue.html - SetDeleteValue laz2_xmlcfg/txmlconfig.setdeletevalue.html - SetExtendedValue laz2_xmlcfg/txmlconfig.setextendedvalue.html - SetDeleteExtendedValue laz2_xmlcfg/txmlconfig.setdeleteextendedvalue.html - DeletePath laz2_xmlcfg/txmlconfig.deletepath.html - DeleteValue laz2_xmlcfg/txmlconfig.deletevalue.html - FindNode laz2_xmlcfg/txmlconfig.findnode.html - HasPath laz2_xmlcfg/txmlconfig.haspath.html - HasChildPaths laz2_xmlcfg/txmlconfig.haschildpaths.html - Modified laz2_xmlcfg/txmlconfig.modified.html - InvalidatePathCache laz2_xmlcfg/txmlconfig.invalidatepathcache.html - Filename laz2_xmlcfg/txmlconfig.filename.html - Document laz2_xmlcfg/txmlconfig.document.html - ReadFlags laz2_xmlcfg/txmlconfig.readflags.html - WriteFlags laz2_xmlcfg/txmlconfig.writeflags.html - TRttiXMLConfig laz2_xmlcfg/trttixmlconfig.html - WriteProperty laz2_xmlcfg/trttixmlconfig.writeproperty.html - ReadProperty laz2_xmlcfg/trttixmlconfig.readproperty.html - WriteObject laz2_xmlcfg/trttixmlconfig.writeobject.html - ReadObject laz2_xmlcfg/trttixmlconfig.readobject.html - CompareDomNodeNames laz2_xmlcfg/comparedomnodenames.html - laz2_XMLRead laz2_xmlread/index.html - TErrorSeverity laz2_xmlread/terrorseverity.html - TXMLReaderFlag laz2_xmlread/txmlreaderflag.html - TXMLReaderFlags laz2_xmlread/txmlreaderflags.html - TXMLContextAction laz2_xmlread/txmlcontextaction.html - TXMLErrorEvent laz2_xmlread/txmlerrorevent.html - TDecoder laz2_xmlread/tdecoder.html - TGetDecoderProc laz2_xmlread/tgetdecoderproc.html - EXMLReadError laz2_xmlread/exmlreaderror.html - Severity laz2_xmlread/exmlreaderror.severity.html - ErrorMessage laz2_xmlread/exmlreaderror.errormessage.html - Line laz2_xmlread/exmlreaderror.line.html - LinePos laz2_xmlread/exmlreaderror.linepos.html - LineCol laz2_xmlread/exmlreaderror.linecol.html - TDOMParseOptions laz2_xmlread/tdomparseoptions.html - Validate laz2_xmlread/tdomparseoptions.validate.html - PreserveWhitespace laz2_xmlread/tdomparseoptions.preservewhitespace.html - ExpandEntities laz2_xmlread/tdomparseoptions.expandentities.html - IgnoreComments laz2_xmlread/tdomparseoptions.ignorecomments.html - CDSectionsAsText laz2_xmlread/tdomparseoptions.cdsectionsastext.html - ResolveExternals laz2_xmlread/tdomparseoptions.resolveexternals.html - Namespaces laz2_xmlread/tdomparseoptions.namespaces.html - DisallowDoctype laz2_xmlread/tdomparseoptions.disallowdoctype.html - MaxChars laz2_xmlread/tdomparseoptions.maxchars.html - CanonicalForm laz2_xmlread/tdomparseoptions.canonicalform.html - TXMLInputSource laz2_xmlread/txmlinputsource.html - Create laz2_xmlread/txmlinputsource.create.html - Stream laz2_xmlread/txmlinputsource.stream.html - StringData laz2_xmlread/txmlinputsource.stringdata.html - BaseURI laz2_xmlread/txmlinputsource.baseuri.html - SystemID laz2_xmlread/txmlinputsource.systemid.html - PublicID laz2_xmlread/txmlinputsource.publicid.html - TDOMParser laz2_xmlread/tdomparser.html - Create laz2_xmlread/tdomparser.create.html - Destroy laz2_xmlread/tdomparser.destroy.html - Parse laz2_xmlread/tdomparser.parse.html - ParseUri laz2_xmlread/tdomparser.parseuri.html - ParseWithContext laz2_xmlread/tdomparser.parsewithcontext.html - Options laz2_xmlread/tdomparser.options.html - OnError laz2_xmlread/tdomparser.onerror.html - ReadXMLFile laz2_xmlread/readxmlfile.html - ReadXMLFragment laz2_xmlread/readxmlfragment.html - ReadDTDFile laz2_xmlread/readdtdfile.html - RegisterDecoder laz2_xmlread/registerdecoder.html - laz2_XMLWrite laz2_xmlwrite/index.html - TXMLWriterFlag laz2_xmlwrite/txmlwriterflag.html - TXMLWriterFlags laz2_xmlwrite/txmlwriterflags.html - WriteXMLFile laz2_xmlwrite/writexmlfile.html - WriteXML laz2_xmlwrite/writexml.html - LazUtilities lazutilities/index.html - ComparePointers lazutilities/comparepointers.html - MergeSort lazutilities/mergesort.html - GetNextDelimitedItem lazutilities/getnextdelimiteditem.html - HasDelimitedItem lazutilities/hasdelimiteditem.html - FindNextDelimitedItem lazutilities/findnextdelimiteditem.html - Laz_DOM laz_dom/index.html - TDOMImplementation laz_dom/tdomimplementation.html - TDOMDocumentFragment laz_dom/tdomdocumentfragment.html - TDOMDocument laz_dom/tdomdocument.html - TDOMNode laz_dom/tdomnode.html - TDOMNodeList laz_dom/tdomnodelist.html - TDOMNamedNodeMap laz_dom/tdomnamednodemap.html - TDOMCharacterData laz_dom/tdomcharacterdata.html - TDOMAttr laz_dom/tdomattr.html - TDOMElement laz_dom/tdomelement.html - TDOMText laz_dom/tdomtext.html - TDOMComment laz_dom/tdomcomment.html - TDOMCDATASection laz_dom/tdomcdatasection.html - TDOMDocumentType laz_dom/tdomdocumenttype.html - TDOMNotation laz_dom/tdomnotation.html - TDOMEntity laz_dom/tdomentity.html - TDOMEntityReference laz_dom/tdomentityreference.html - TDOMProcessingInstruction laz_dom/tdomprocessinginstruction.html - DOMString laz_dom/domstring.html - DOMPChar laz_dom/dompchar.html - EDOMError laz_dom/edomerror.html - Laz_XMLCfg laz_xmlcfg/index.html - TXMLConfig laz_xmlcfg/txmlconfig.html - TRttiXMLConfig laz_xmlcfg/trttixmlconfig.html - Laz_XMLRead laz_xmlread/index.html - xrfOldXMLRead laz_xmlread/xrfoldxmlread.html - EXMLReadError laz_xmlread/exmlreaderror.html - ReadXMLFile laz_xmlread/readxmlfile.html - ReadXMLFragment laz_xmlread/readxmlfragment.html - ReadDTDFile laz_xmlread/readdtdfile.html - Laz_XMLStreaming laz_xmlstreaming/index.html - TXMLObjectWriterStackElType laz_xmlstreaming/txmlobjectwriterstackeltype.html - TXMLObjectWriterClass laz_xmlstreaming/txmlobjectwriterclass.html - TXMLObjectReaderClass laz_xmlstreaming/txmlobjectreaderclass.html - TXMLObjectWriterStackEl laz_xmlstreaming/txmlobjectwriterstackel.html - Element laz_xmlstreaming/txmlobjectwriterstackel.element.html - Parent laz_xmlstreaming/txmlobjectwriterstackel.parent.html - ElemType laz_xmlstreaming/txmlobjectwriterstackel.elemtype.html - PropertyName laz_xmlstreaming/txmlobjectwriterstackel.propertyname.html - TXMLObjectWriter laz_xmlstreaming/txmlobjectwriter.html - GetPropertyElement laz_xmlstreaming/txmlobjectwriter.getpropertyelement.html - Create laz_xmlstreaming/txmlobjectwriter.create.html - BeginCollection laz_xmlstreaming/txmlobjectwriter.begincollection.html - BeginComponent laz_xmlstreaming/txmlobjectwriter.begincomponent.html - BeginList laz_xmlstreaming/txmlobjectwriter.beginlist.html - EndList laz_xmlstreaming/txmlobjectwriter.endlist.html - BeginProperty laz_xmlstreaming/txmlobjectwriter.beginproperty.html - EndProperty laz_xmlstreaming/txmlobjectwriter.endproperty.html - WriteBinary laz_xmlstreaming/txmlobjectwriter.writebinary.html - WriteBoolean laz_xmlstreaming/txmlobjectwriter.writeboolean.html - WriteFloat laz_xmlstreaming/txmlobjectwriter.writefloat.html - WriteSingle laz_xmlstreaming/txmlobjectwriter.writesingle.html - WriteCurrency laz_xmlstreaming/txmlobjectwriter.writecurrency.html - WriteDate laz_xmlstreaming/txmlobjectwriter.writedate.html - WriteIdent laz_xmlstreaming/txmlobjectwriter.writeident.html - WriteInteger laz_xmlstreaming/txmlobjectwriter.writeinteger.html - WriteMethodName laz_xmlstreaming/txmlobjectwriter.writemethodname.html - WriteSet laz_xmlstreaming/txmlobjectwriter.writeset.html - WriteString laz_xmlstreaming/txmlobjectwriter.writestring.html - WriteWideString laz_xmlstreaming/txmlobjectwriter.writewidestring.html - WriteUInt64 laz_xmlstreaming/txmlobjectwriter.writeuint64.html - WriteUnicodeString laz_xmlstreaming/txmlobjectwriter.writeunicodestring.html - WriteVariant laz_xmlstreaming/txmlobjectwriter.writevariant.html - Write laz_xmlstreaming/txmlobjectwriter.write.html - Doc laz_xmlstreaming/txmlobjectwriter.doc.html - TXMLObjectReader laz_xmlstreaming/txmlobjectreader.html - Create laz_xmlstreaming/txmlobjectreader.create.html - Destroy laz_xmlstreaming/txmlobjectreader.destroy.html - GetRootClassName laz_xmlstreaming/txmlobjectreader.getrootclassname.html - NextValue laz_xmlstreaming/txmlobjectreader.nextvalue.html - ReadValue laz_xmlstreaming/txmlobjectreader.readvalue.html - BeginRootComponent laz_xmlstreaming/txmlobjectreader.beginrootcomponent.html - BeginComponent laz_xmlstreaming/txmlobjectreader.begincomponent.html - BeginProperty laz_xmlstreaming/txmlobjectreader.beginproperty.html - ReadBinary laz_xmlstreaming/txmlobjectreader.readbinary.html - ReadFloat laz_xmlstreaming/txmlobjectreader.readfloat.html - ReadSingle laz_xmlstreaming/txmlobjectreader.readsingle.html - ReadCurrency laz_xmlstreaming/txmlobjectreader.readcurrency.html - ReadDate laz_xmlstreaming/txmlobjectreader.readdate.html - ReadIdent laz_xmlstreaming/txmlobjectreader.readident.html - ReadInt8 laz_xmlstreaming/txmlobjectreader.readint8.html - ReadInt16 laz_xmlstreaming/txmlobjectreader.readint16.html - ReadInt32 laz_xmlstreaming/txmlobjectreader.readint32.html - ReadInt64 laz_xmlstreaming/txmlobjectreader.readint64.html - ReadSet laz_xmlstreaming/txmlobjectreader.readset.html - ReadStr laz_xmlstreaming/txmlobjectreader.readstr.html - ReadString laz_xmlstreaming/txmlobjectreader.readstring.html - ReadWideString laz_xmlstreaming/txmlobjectreader.readwidestring.html - ReadUnicodeString laz_xmlstreaming/txmlobjectreader.readunicodestring.html - SkipComponent laz_xmlstreaming/txmlobjectreader.skipcomponent.html - SkipValue laz_xmlstreaming/txmlobjectreader.skipvalue.html - Read laz_xmlstreaming/txmlobjectreader.read.html - Doc laz_xmlstreaming/txmlobjectreader.doc.html - Element laz_xmlstreaming/txmlobjectreader.element.html - ElementPosition laz_xmlstreaming/txmlobjectreader.elementposition.html - WriteComponentToXMLStream laz_xmlstreaming/writecomponenttoxmlstream.html - Laz_XMLWrite laz_xmlwrite/index.html - xwfOldXMLWrite laz_xmlwrite/xwfoldxmlwrite.html - WriteXMLFile laz_xmlwrite/writexmlfile.html - WriteXML laz_xmlwrite/writexml.html - LazFreeType lazfreetype/index.html - TT_Load_Scale_Glyph lazfreetype/tt_load_scale_glyph.html - TT_Load_Hint_Glyph lazfreetype/tt_load_hint_glyph.html - TT_Load_Debug lazfreetype/tt_load_debug.html - TT_Load_Default lazfreetype/tt_load_default.html - TT_Init_FreeType lazfreetype/tt_init_freetype.html - TT_Done_FreeType lazfreetype/tt_done_freetype.html - TT_Set_Raster_Palette lazfreetype/tt_set_raster_palette.html - TT_Open_Face lazfreetype/tt_open_face.html - TT_Open_Collection lazfreetype/tt_open_collection.html - TT_Get_Face_Properties lazfreetype/tt_get_face_properties.html - TT_Set_Face_Pointer lazfreetype/tt_set_face_pointer.html - TT_Get_Face_Pointer lazfreetype/tt_get_face_pointer.html - TT_Close_Face lazfreetype/tt_close_face.html - TT_New_Instance lazfreetype/tt_new_instance.html - TT_Set_Instance_Resolutions lazfreetype/tt_set_instance_resolutions.html - TT_Set_Instance_PointSize lazfreetype/tt_set_instance_pointsize.html - TT_Set_Instance_CharSize lazfreetype/tt_set_instance_charsize.html - TT_Set_Instance_CharSizes lazfreetype/tt_set_instance_charsizes.html - TT_Set_Instance_PixelSizes lazfreetype/tt_set_instance_pixelsizes.html - TT_Set_Instance_Transforms lazfreetype/tt_set_instance_transforms.html - TT_Get_Instance_Metrics lazfreetype/tt_get_instance_metrics.html - TT_Set_Instance_Pointer lazfreetype/tt_set_instance_pointer.html - TT_Get_Instance_Pointer lazfreetype/tt_get_instance_pointer.html - TT_Done_Instance lazfreetype/tt_done_instance.html - TT_New_Glyph lazfreetype/tt_new_glyph.html - TT_Done_Glyph lazfreetype/tt_done_glyph.html - TT_Load_Glyph lazfreetype/tt_load_glyph.html - TT_Get_Glyph_Outline lazfreetype/tt_get_glyph_outline.html - TT_Get_Glyph_Metrics lazfreetype/tt_get_glyph_metrics.html - TT_Get_Glyph_Big_Metrics lazfreetype/tt_get_glyph_big_metrics.html - TT_Get_Glyph_Bitmap lazfreetype/tt_get_glyph_bitmap.html - TT_Get_Glyph_Pixmap lazfreetype/tt_get_glyph_pixmap.html - TT_Get_Glyph_Pixmap_HQ lazfreetype/tt_get_glyph_pixmap_hq.html - TT_Render_Directly_Glyph_Gray lazfreetype/tt_render_directly_glyph_gray.html - TT_Render_Directly_Glyph_HQ lazfreetype/tt_render_directly_glyph_hq.html - TT_Translate_Outline lazfreetype/tt_translate_outline.html - TT_Transform_Outline lazfreetype/tt_transform_outline.html - TT_Transform_Vector lazfreetype/tt_transform_vector.html - TT_Get_Outline_Bitmap lazfreetype/tt_get_outline_bitmap.html - TT_Get_Outline_Pixmap lazfreetype/tt_get_outline_pixmap.html - TT_Get_Outline_Pixmap_HQ lazfreetype/tt_get_outline_pixmap_hq.html - TT_Render_Directly_Outline_Gray lazfreetype/tt_render_directly_outline_gray.html - TT_Render_Directly_Outline_HQ lazfreetype/tt_render_directly_outline_hq.html - TT_Get_Outline_BBox lazfreetype/tt_get_outline_bbox.html - TT_New_Outline lazfreetype/tt_new_outline.html - TT_Copy_Outline lazfreetype/tt_copy_outline.html - TT_Clone_Outline lazfreetype/tt_clone_outline.html - TT_Done_Outline lazfreetype/tt_done_outline.html - TT_Get_CharMap_Count lazfreetype/tt_get_charmap_count.html - TT_Get_CharMap_ID lazfreetype/tt_get_charmap_id.html - TT_Get_CharMap lazfreetype/tt_get_charmap.html - TT_Char_Index lazfreetype/tt_char_index.html - TT_Get_Name_Count lazfreetype/tt_get_name_count.html - TT_Get_Name_ID lazfreetype/tt_get_name_id.html - TT_Get_Name_String lazfreetype/tt_get_name_string.html - TT_Get_Font_Data lazfreetype/tt_get_font_data.html - TTTypes tttypes/index.html - TT_Flag_On_Curve tttypes/tt_flag_on_curve.html - TT_Flow_Down tttypes/tt_flow_down.html - TT_Flow_Up tttypes/tt_flow_up.html - TT_Err_Ok tttypes/tt_err_ok.html - TT_Err_Invalid_Face_Handle tttypes/tt_err_invalid_face_handle.html - TT_Err_Invalid_Instance_Handle tttypes/tt_err_invalid_instance_handle.html - TT_Err_Invalid_Glyph_Handle tttypes/tt_err_invalid_glyph_handle.html - TT_Err_Invalid_CharMap_Handle tttypes/tt_err_invalid_charmap_handle.html - TT_Err_Invalid_Result_Address tttypes/tt_err_invalid_result_address.html - TT_Err_Invalid_Glyph_Index tttypes/tt_err_invalid_glyph_index.html - TT_Err_Invalid_Argument tttypes/tt_err_invalid_argument.html - TT_Err_Could_Not_Open_File tttypes/tt_err_could_not_open_file.html - TT_Err_File_Is_Not_Collection tttypes/tt_err_file_is_not_collection.html - TT_Err_Table_Missing tttypes/tt_err_table_missing.html - TT_Err_Invalid_Horiz_Metrics tttypes/tt_err_invalid_horiz_metrics.html - TT_Err_Invalid_Vert_Metrics tttypes/tt_err_invalid_vert_metrics.html - TT_Err_Invalid_CharMap_Format tttypes/tt_err_invalid_charmap_format.html - TT_Err_Invalid_File_Format tttypes/tt_err_invalid_file_format.html - TT_Err_File_Error tttypes/tt_err_file_error.html - TT_Err_Invalid_Engine tttypes/tt_err_invalid_engine.html - TT_Err_Too_Many_Extensions tttypes/tt_err_too_many_extensions.html - TT_Err_Extensions_Unsupported tttypes/tt_err_extensions_unsupported.html - TT_Err_Invalid_Extension_Id tttypes/tt_err_invalid_extension_id.html - TT_Err_No_Vertical_Data tttypes/tt_err_no_vertical_data.html - TT_Err_Max_Profile_Missing tttypes/tt_err_max_profile_missing.html - TT_Err_Header_Table_Missing tttypes/tt_err_header_table_missing.html - TT_Err_Horiz_Header_Missing tttypes/tt_err_horiz_header_missing.html - TT_Err_Locations_Missing tttypes/tt_err_locations_missing.html - TT_Err_Name_Table_Missing tttypes/tt_err_name_table_missing.html - TT_Err_CMap_Table_Missing tttypes/tt_err_cmap_table_missing.html - TT_Err_Hmtx_Table_Missing tttypes/tt_err_hmtx_table_missing.html - TT_Err_OS2_Table_Missing tttypes/tt_err_os2_table_missing.html - TT_Err_Post_Table_Missing tttypes/tt_err_post_table_missing.html - TT_Err_Out_Of_Memory tttypes/tt_err_out_of_memory.html - TT_Err_Invalid_File_Offset tttypes/tt_err_invalid_file_offset.html - TT_Err_Invalid_File_Read tttypes/tt_err_invalid_file_read.html - TT_Err_Invalid_Frame_Access tttypes/tt_err_invalid_frame_access.html - TT_Err_Too_Many_Points tttypes/tt_err_too_many_points.html - TT_Err_Too_Many_Contours tttypes/tt_err_too_many_contours.html - TT_Err_Invalid_Composite tttypes/tt_err_invalid_composite.html - TT_Err_Too_Many_Ins tttypes/tt_err_too_many_ins.html - TT_Err_Invalid_Opcode tttypes/tt_err_invalid_opcode.html - TT_Err_Too_Few_Arguments tttypes/tt_err_too_few_arguments.html - TT_Err_Stack_Overflow tttypes/tt_err_stack_overflow.html - TT_Err_Code_Overflow tttypes/tt_err_code_overflow.html - TT_Err_Bad_Argument tttypes/tt_err_bad_argument.html - TT_Err_Divide_By_Zero tttypes/tt_err_divide_by_zero.html - TT_Err_Storage_Overflow tttypes/tt_err_storage_overflow.html - TT_Err_Cvt_Overflow tttypes/tt_err_cvt_overflow.html - TT_Err_Invalid_Reference tttypes/tt_err_invalid_reference.html - TT_Err_Invalid_Distance tttypes/tt_err_invalid_distance.html - TT_Err_Interpolate_Twilight tttypes/tt_err_interpolate_twilight.html - TT_Err_Debug_Opcode tttypes/tt_err_debug_opcode.html - TT_Err_ENDF_In_Exec_Stream tttypes/tt_err_endf_in_exec_stream.html - TT_Err_Out_Of_CodeRanges tttypes/tt_err_out_of_coderanges.html - TT_Err_Nested_DEFs tttypes/tt_err_nested_defs.html - TT_Err_Invalid_CodeRange tttypes/tt_err_invalid_coderange.html - TT_Err_Invalid_Displacement tttypes/tt_err_invalid_displacement.html - TT_Err_Execution_Too_Long tttypes/tt_err_execution_too_long.html - TT_Err_Too_Many_FuncDefs tttypes/tt_err_too_many_funcdefs.html - TT_Err_Too_Many_InsDefs tttypes/tt_err_too_many_insdefs.html - TT_Err_Nested_Frame_Access tttypes/tt_err_nested_frame_access.html - TT_Err_Invalid_Cache_List tttypes/tt_err_invalid_cache_list.html - TT_Err_Could_Not_Find_Context tttypes/tt_err_could_not_find_context.html - TT_Err_UNlisted_Object tttypes/tt_err_unlisted_object.html - TT_Err_Raster_Pool_Overflow tttypes/tt_err_raster_pool_overflow.html - TT_Err_Raster_Negative_Height tttypes/tt_err_raster_negative_height.html - TT_Err_Invalid_Value tttypes/tt_err_invalid_value.html - TT_Err_Raster_Not_Initialised tttypes/tt_err_raster_not_initialised.html - Success tttypes/success.html - Failure tttypes/failure.html - TError tttypes/terror.html - TT_Int tttypes/tt_int.html - TT_Long tttypes/tt_long.html - TT_ULong tttypes/tt_ulong.html - TT_Short tttypes/tt_short.html - TT_UShort tttypes/tt_ushort.html - TT_Fixed tttypes/tt_fixed.html - TT_FWord tttypes/tt_fword.html - TT_UFWord tttypes/tt_ufword.html - TT_F2Dot14 tttypes/tt_f2dot14.html - TT_F26Dot6 tttypes/tt_f26dot6.html - TT_Pos tttypes/tt_pos.html - TT_UnitVector tttypes/tt_unitvector.html - TT_Vector tttypes/tt_vector.html - TT_Matrix tttypes/tt_matrix.html - TT_BBox tttypes/tt_bbox.html - TT_Error tttypes/tt_error.html - TT_Points_Table tttypes/tt_points_table.html - TT_Points tttypes/tt_points.html - TT_Coordinates tttypes/tt_coordinates.html - TT_PCoordinates tttypes/tt_pcoordinates.html - TT_TouchTable tttypes/tt_touchtable.html - TT_PTouchTable tttypes/tt_ptouchtable.html - TT_ConStarts tttypes/tt_constarts.html - TT_PConStarts tttypes/tt_pconstarts.html - TT_Outline tttypes/tt_outline.html - TT_Glyph_Metrics tttypes/tt_glyph_metrics.html - TT_Big_Glyph_Metrics tttypes/tt_big_glyph_metrics.html - TDirectRenderingFunction tttypes/tdirectrenderingfunction.html - TT_Instance_Metrics tttypes/tt_instance_metrics.html - TT_Raster_Map tttypes/tt_raster_map.html - TT_Header tttypes/tt_header.html - TT_Horizontal_Header tttypes/tt_horizontal_header.html - TT_Vertical_Header tttypes/tt_vertical_header.html - TT_OS2 tttypes/tt_os2.html - TT_Postscript tttypes/tt_postscript.html - TT_Face_Properties tttypes/tt_face_properties.html - TT_Stream tttypes/tt_stream.html - TT_Face tttypes/tt_face.html - TT_Instance tttypes/tt_instance.html - TT_Glyph tttypes/tt_glyph.html - TT_CharMap tttypes/tt_charmap.html - TT_Gray_Palette tttypes/tt_gray_palette.html - PTT_Gray_Palette tttypes/ptt_gray_palette.html - UShort tttypes/ushort.html - Short tttypes/short.html - Long tttypes/long.html - ULong tttypes/ulong.html - Int tttypes/int.html - TByteArray tttypes/tbytearray.html - PByte tttypes/pbyte.html - TShortArray tttypes/tshortarray.html - PShort tttypes/pshort.html - TUShortArray tttypes/tushortarray.html - PUShort tttypes/pushort.html - TStorage tttypes/tstorage.html - PStorage tttypes/pstorage.html - PLong tttypes/plong.html - PULong tttypes/pulong.html - TCoordinates tttypes/tcoordinates.html - PCoordinates tttypes/pcoordinates.html - PTouchTable tttypes/ptouchtable.html - TVecRecord tttypes/tvecrecord.html - TFreeTypeCustomRasterizer tttypes/tfreetypecustomrasterizer.html - Render_Glyph tttypes/tfreetypecustomrasterizer.render_glyph.html - Render_Gray_Glyph tttypes/tfreetypecustomrasterizer.render_gray_glyph.html - Render_Gray_Glyph_HQ tttypes/tfreetypecustomrasterizer.render_gray_glyph_hq.html - Render_Directly_Gray_Glyph tttypes/tfreetypecustomrasterizer.render_directly_gray_glyph.html - Render_Directly_Gray_Glyph_HQ tttypes/tfreetypecustomrasterizer.render_directly_gray_glyph_hq.html - Set_Raster_Palette tttypes/tfreetypecustomrasterizer.set_raster_palette.html - TTCache ttcache/index.html - PList_Element ttcache/plist_element.html - TList_Element ttcache/tlist_element.html - TSingle_List ttcache/tsingle_list.html - TConstructor ttcache/tconstructor.html - TDestructor ttcache/tdestructor.html - PCache_Class ttcache/pcache_class.html - TCache_Class ttcache/tcache_class.html - PCache ttcache/pcache.html - TCache ttcache/tcache.html - Cache_Create ttcache/cache_create.html - Cache_Destroy ttcache/cache_destroy.html - Cache_New ttcache/cache_new.html - Cache_Done ttcache/cache_done.html - Element_New ttcache/element_new.html - Element_Done ttcache/element_done.html - TTCache_Init ttcache/ttcache_init.html - TTCache_Done ttcache/ttcache_done.html - TTCalc ttcalc/index.html - Int16 ttcalc/int16.html - Word16 ttcalc/word16.html - Int32 ttcalc/int32.html - Word32 ttcalc/word32.html - MulDiv ttcalc/muldiv.html - MulDiv_Round ttcalc/muldiv_round.html - MulTo64 ttcalc/multo64.html - Div64by32 ttcalc/div64by32.html - Order64 ttcalc/order64.html - Order32 ttcalc/order32.html - Sqrt32 ttcalc/sqrt32.html - Sqrt64 ttcalc/sqrt64.html - TTCMap ttcmap/index.html - TCMap0 ttcmap/tcmap0.html - TCMap2SubHeader ttcmap/tcmap2subheader.html - TCMap2SubHeaders ttcmap/tcmap2subheaders.html - PCMap2SubHeaders ttcmap/pcmap2subheaders.html - TCMap2 ttcmap/tcmap2.html - TCMap4Segment ttcmap/tcmap4segment.html - TCMap4Segments ttcmap/tcmap4segments.html - PCMap4Segments ttcmap/pcmap4segments.html - TCMap4 ttcmap/tcmap4.html - TCMap6 ttcmap/tcmap6.html - PCMapTable ttcmap/pcmaptable.html - TCMapTable ttcmap/tcmaptable.html - TCMapTables ttcmap/tcmaptables.html - PCMapTables ttcmap/pcmaptables.html - CharMap_Load ttcmap/charmap_load.html - CharMap_Free ttcmap/charmap_free.html - CharMap_Index ttcmap/charmap_index.html - TTDebug ttdebug/index.html - TTObjs ttobjs/index.html - Default_GraphicsState ttobjs/default_graphicsstate.html - MaxCodeRanges ttobjs/maxcoderanges.html - TT_CodeRange_Font ttobjs/tt_coderange_font.html - TT_CodeRange_Cvt ttobjs/tt_coderange_cvt.html - TT_CodeRange_Glyph ttobjs/tt_coderange_glyph.html - CvtFlag_None ttobjs/cvtflag_none.html - CvtFlag_X ttobjs/cvtflag_x.html - CvtFlag_Y ttobjs/cvtflag_y.html - CvtFlag_Both ttobjs/cvtflag_both.html - PGraphicsState ttobjs/pgraphicsstate.html - TGraphicsState ttobjs/tgraphicsstate.html - TCodeRange ttobjs/tcoderange.html - PCodeRange ttobjs/pcoderange.html - TCodeRangeTable ttobjs/tcoderangetable.html - PDefRecord ttobjs/pdefrecord.html - TDefRecord ttobjs/tdefrecord.html - PDefArray ttobjs/pdefarray.html - TDefArray ttobjs/tdefarray.html - TCallRecord ttobjs/tcallrecord.html - TCallStack ttobjs/tcallstack.html - PCallStack ttobjs/pcallstack.html - PGlyph_Zone ttobjs/pglyph_zone.html - TGlyph_Zone ttobjs/tglyph_zone.html - TRound_Function ttobjs/tround_function.html - TMove_Function ttobjs/tmove_function.html - TProject_Function ttobjs/tproject_function.html - TFunc_Get_CVT ttobjs/tfunc_get_cvt.html - TFunc_Set_CVT ttobjs/tfunc_set_cvt.html - PGlyph_Transform ttobjs/pglyph_transform.html - TGlyph_Transform ttobjs/tglyph_transform.html - PSubglyph_Record ttobjs/psubglyph_record.html - TSubglyph_Record ttobjs/tsubglyph_record.html - TSubglyph_Stack ttobjs/tsubglyph_stack.html - PSubglyph_Stack ttobjs/psubglyph_stack.html - TIns_Metrics ttobjs/tins_metrics.html - PFace ttobjs/pface.html - PInstance ttobjs/pinstance.html - PExec_Context ttobjs/pexec_context.html - TTError tterror/index.html - Err_Ras_None tterror/err_ras_none.html - Err_Ras_NotIni tterror/err_ras_notini.html - Err_Ras_Overflow tterror/err_ras_overflow.html - Err_Ras_Neg_H tterror/err_ras_neg_h.html - Err_Ras_Invalid tterror/err_ras_invalid.html - Err_Ras_Invalid_Contours tterror/err_ras_invalid_contours.html - Check_Error tterror/check_error.html - Panic1 tterror/panic1.html - Trace1 tterror/trace1.html - error tterror/error.html - TTTables tttables/index.html - Gasp_GridFit tttables/gasp_gridfit.html - Gasp_DoGray tttables/gasp_dogray.html - PTTCHeader tttables/pttcheader.html - TTTCHeader tttables/tttcheader.html - PTableDir tttables/ptabledir.html - TTableDir tttables/ttabledir.html - TTableDirEntry tttables/ttabledirentry.html - TTableDirEntries tttables/ttabledirentries.html - PTableDirEntries tttables/ptabledirentries.html - TCMapDir tttables/tcmapdir.html - TCMapDirEntry tttables/tcmapdirentry.html - TCMapDirEntries tttables/tcmapdirentries.html - PCMapDirEntries tttables/pcmapdirentries.html - TMaxProfile tttables/tmaxprofile.html - TGaspRange tttables/tgasprange.html - TGaspRanges tttables/tgaspranges.html - PGaspRanges tttables/pgaspranges.html - TGasp tttables/tgasp.html - TLongMetrics tttables/tlongmetrics.html - TTableLongMetrics tttables/ttablelongmetrics.html - PTableLongMetrics tttables/ptablelongmetrics.html - TShortMetrics tttables/tshortmetrics.html - TTableShortMetrics tttables/ttableshortmetrics.html - PTableShortMetrics tttables/ptableshortmetrics.html - TName_Record tttables/tname_record.html - PName_Record tttables/pname_record.html - TName_Records tttables/tname_records.html - PName_Records tttables/pname_records.html - PName_Table tttables/pname_table.html - TName_Table tttables/tname_table.html - PHdmx_Record tttables/phdmx_record.html - THdmx_Record tttables/thdmx_record.html - THdmx_Records tttables/thdmx_records.html - PHdmx_Records tttables/phdmx_records.html - THdmx tttables/thdmx.html - DictionaryStringList dictionarystringlist/index.html - TDictionaryStringList dictionarystringlist/tdictionarystringlist.html - InsertItem dictionarystringlist/tdictionarystringlist.insertitem.html - Create dictionarystringlist/tdictionarystringlist.create.html - Destroy dictionarystringlist/tdictionarystringlist.destroy.html - Assign dictionarystringlist/tdictionarystringlist.assign.html - Clear dictionarystringlist/tdictionarystringlist.clear.html - Delete dictionarystringlist/tdictionarystringlist.delete.html - Add dictionarystringlist/tdictionarystringlist.add.html - AddObject dictionarystringlist/tdictionarystringlist.addobject.html - Contains dictionarystringlist/tdictionarystringlist.contains.html - Find dictionarystringlist/tdictionarystringlist.find.html - IndexOf dictionarystringlist/tdictionarystringlist.indexof.html - Deduplicate dictionarystringlist/deduplicate.html - EasyLazFreeType easylazfreetype/index.html - FreeTypeInformationStr easylazfreetype/freetypeinformationstr.html - FreeTypeMinPointSize easylazfreetype/freetypeminpointsize.html - TGlyphRenderQuality easylazfreetype/tglyphrenderquality.html - ArrayOfSingle easylazfreetype/arrayofsingle.html - TCharPosition easylazfreetype/tcharposition.html - ArrayOfCharPosition easylazfreetype/arrayofcharposition.html - TFreeTypeAlignment easylazfreetype/tfreetypealignment.html - TFreeTypeAlignments easylazfreetype/tfreetypealignments.html - TFreeTypeInformation easylazfreetype/tfreetypeinformation.html - TFreeTypeStyle easylazfreetype/tfreetypestyle.html - TFreeTypeStyles easylazfreetype/tfreetypestyles.html - TFreeTypeWordBreakHandler easylazfreetype/tfreetypewordbreakhandler.html - TFontCollectionItemDestroyListener easylazfreetype/tfontcollectionitemdestroylistener.html - ArrayOfFontCollectionItemDestroyListener easylazfreetype/arrayoffontcollectionitemdestroylistener.html - TOnRenderTextHandler easylazfreetype/tonrendertexthandler.html - ArrayOfString easylazfreetype/arrayofstring.html - TCustomFontCollectionItem easylazfreetype/tcustomfontcollectionitem.html - GetBold easylazfreetype/tcustomfontcollectionitem.getbold.html - GetInformation easylazfreetype/tcustomfontcollectionitem.getinformation.html - GetItalic easylazfreetype/tcustomfontcollectionitem.getitalic.html - GetStyleCount easylazfreetype/tcustomfontcollectionitem.getstylecount.html - GetStyles easylazfreetype/tcustomfontcollectionitem.getstyles.html - GetFilename easylazfreetype/tcustomfontcollectionitem.getfilename.html - GetVersionNumber easylazfreetype/tcustomfontcollectionitem.getversionnumber.html - GetStyle easylazfreetype/tcustomfontcollectionitem.getstyle.html - NotifyDestroy easylazfreetype/tcustomfontcollectionitem.notifydestroy.html - HasStyle easylazfreetype/tcustomfontcollectionitem.hasstyle.html - CreateFont easylazfreetype/tcustomfontcollectionitem.createfont.html - QueryFace easylazfreetype/tcustomfontcollectionitem.queryface.html - ReleaseFace easylazfreetype/tcustomfontcollectionitem.releaseface.html - Styles easylazfreetype/tcustomfontcollectionitem.styles.html - Italic easylazfreetype/tcustomfontcollectionitem.italic.html - Bold easylazfreetype/tcustomfontcollectionitem.bold.html - Filename easylazfreetype/tcustomfontcollectionitem.filename.html - Information easylazfreetype/tcustomfontcollectionitem.information.html - VersionNumber easylazfreetype/tcustomfontcollectionitem.versionnumber.html - Style easylazfreetype/tcustomfontcollectionitem.style.html - StyleCount easylazfreetype/tcustomfontcollectionitem.stylecount.html - IFreeTypeFontEnumerator easylazfreetype/ifreetypefontenumerator.html - MoveNext easylazfreetype/ifreetypefontenumerator.movenext.html - GetCurrent easylazfreetype/ifreetypefontenumerator.getcurrent.html - Current easylazfreetype/ifreetypefontenumerator.current.html - TCustomFamilyCollectionItem easylazfreetype/tcustomfamilycollectionitem.html - GetFontByIndex easylazfreetype/tcustomfamilycollectionitem.getfontbyindex.html - GetStyle easylazfreetype/tcustomfamilycollectionitem.getstyle.html - GetStyles easylazfreetype/tcustomfamilycollectionitem.getstyles.html - GetFamilyName easylazfreetype/tcustomfamilycollectionitem.getfamilyname.html - GetFontCount easylazfreetype/tcustomfamilycollectionitem.getfontcount.html - GetStyleCount easylazfreetype/tcustomfamilycollectionitem.getstylecount.html - GetFont easylazfreetype/tcustomfamilycollectionitem.getfont.html - GetFontIndex easylazfreetype/tcustomfamilycollectionitem.getfontindex.html - HasStyle easylazfreetype/tcustomfamilycollectionitem.hasstyle.html - FamilyName easylazfreetype/tcustomfamilycollectionitem.familyname.html - Font easylazfreetype/tcustomfamilycollectionitem.font.html - FontCount easylazfreetype/tcustomfamilycollectionitem.fontcount.html - Style easylazfreetype/tcustomfamilycollectionitem.style.html - StyleCount easylazfreetype/tcustomfamilycollectionitem.stylecount.html - Styles easylazfreetype/tcustomfamilycollectionitem.styles.html - IFreeTypeFamilyEnumerator easylazfreetype/ifreetypefamilyenumerator.html - MoveNext easylazfreetype/ifreetypefamilyenumerator.movenext.html - GetCurrent easylazfreetype/ifreetypefamilyenumerator.getcurrent.html - Current easylazfreetype/ifreetypefamilyenumerator.current.html - TCustomFreeTypeFontCollection easylazfreetype/tcustomfreetypefontcollection.html - GetFont easylazfreetype/tcustomfreetypefontcollection.getfont.html - GetFamily easylazfreetype/tcustomfreetypefontcollection.getfamily.html - GetFamilyCount easylazfreetype/tcustomfreetypefontcollection.getfamilycount.html - GetFontCount easylazfreetype/tcustomfreetypefontcollection.getfontcount.html - Create easylazfreetype/tcustomfreetypefontcollection.create.html - Clear easylazfreetype/tcustomfreetypefontcollection.clear.html - BeginUpdate easylazfreetype/tcustomfreetypefontcollection.beginupdate.html - AddFolder easylazfreetype/tcustomfreetypefontcollection.addfolder.html - AddFile easylazfreetype/tcustomfreetypefontcollection.addfile.html - AddStream easylazfreetype/tcustomfreetypefontcollection.addstream.html - EndUpdate easylazfreetype/tcustomfreetypefontcollection.endupdate.html - FontFileEnumerator easylazfreetype/tcustomfreetypefontcollection.fontfileenumerator.html - FamilyEnumerator easylazfreetype/tcustomfreetypefontcollection.familyenumerator.html - FontFileCount easylazfreetype/tcustomfreetypefontcollection.fontfilecount.html - FontFile easylazfreetype/tcustomfreetypefontcollection.fontfile.html - FamilyCount easylazfreetype/tcustomfreetypefontcollection.familycount.html - Family easylazfreetype/tcustomfreetypefontcollection.family.html - TFreeTypeRenderableFont easylazfreetype/tfreetyperenderablefont.html - FWordBreakHandler easylazfreetype/tfreetyperenderablefont.fwordbreakhandler.html - FOnRenderText easylazfreetype/tfreetyperenderablefont.fonrendertext.html - GetClearType easylazfreetype/tfreetyperenderablefont.getcleartype.html - SetClearType easylazfreetype/tfreetyperenderablefont.setcleartype.html - GetLineFullHeight easylazfreetype/tfreetyperenderablefont.getlinefullheight.html - GetAscent easylazfreetype/tfreetyperenderablefont.getascent.html - GetDescent easylazfreetype/tfreetyperenderablefont.getdescent.html - GetLineSpacing easylazfreetype/tfreetyperenderablefont.getlinespacing.html - DefaultWordBreakHandler easylazfreetype/tfreetyperenderablefont.defaultwordbreakhandler.html - GetHinted easylazfreetype/tfreetyperenderablefont.gethinted.html - SetHinted easylazfreetype/tfreetyperenderablefont.sethinted.html - UnderlineDecoration easylazfreetype/tfreetyperenderablefont.underlinedecoration.html - StrikeOutDecoration easylazfreetype/tfreetyperenderablefont.strikeoutdecoration.html - TextWidth easylazfreetype/tfreetyperenderablefont.textwidth.html - TextHeight easylazfreetype/tfreetyperenderablefont.textheight.html - CharWidthFromUnicode easylazfreetype/tfreetyperenderablefont.charwidthfromunicode.html - SplitText easylazfreetype/tfreetyperenderablefont.splittext.html - GetTextSize easylazfreetype/tfreetyperenderablefont.gettextsize.html - RenderText easylazfreetype/tfreetyperenderablefont.rendertext.html - ClearType easylazfreetype/tfreetyperenderablefont.cleartype.html - Ascent easylazfreetype/tfreetyperenderablefont.ascent.html - Descent easylazfreetype/tfreetyperenderablefont.descent.html - LineSpacing easylazfreetype/tfreetyperenderablefont.linespacing.html - LineFullHeight easylazfreetype/tfreetyperenderablefont.linefullheight.html - Hinted easylazfreetype/tfreetyperenderablefont.hinted.html - OnWordBreak easylazfreetype/tfreetyperenderablefont.onwordbreak.html - OnRenderText easylazfreetype/tfreetyperenderablefont.onrendertext.html - TFreeTypeDrawer easylazfreetype/tfreetypedrawer.html - DrawText easylazfreetype/tfreetypedrawer.drawtext.html - DrawTextWordBreak easylazfreetype/tfreetypedrawer.drawtextwordbreak.html - DrawTextRect easylazfreetype/tfreetypedrawer.drawtextrect.html - TFreeTypeFont easylazfreetype/tfreetypefont.html - FFace easylazfreetype/tfreetypefont.fface.html - FFaceItem easylazfreetype/tfreetypefont.ffaceitem.html - FFaceLoaded easylazfreetype/tfreetypefont.ffaceloaded.html - FInstance easylazfreetype/tfreetypefont.finstance.html - FInstanceCreated easylazfreetype/tfreetypefont.finstancecreated.html - FGlyphTable easylazfreetype/tfreetypefont.fglyphtable.html - FCharMap easylazfreetype/tfreetypefont.fcharmap.html - FCharmapOk easylazfreetype/tfreetypefont.fcharmapok.html - FAscentValue easylazfreetype/tfreetypefont.fascentvalue.html - FDescentValue easylazfreetype/tfreetypefont.fdescentvalue.html - FLineGapValue easylazfreetype/tfreetypefont.flinegapvalue.html - FLargeLineGapValue easylazfreetype/tfreetypefont.flargelinegapvalue.html - FCapHeight easylazfreetype/tfreetypefont.fcapheight.html - GetClearType easylazfreetype/tfreetypefont.getcleartype.html - SetClearType easylazfreetype/tfreetypefont.setcleartype.html - GetLineFullHeight easylazfreetype/tfreetypefont.getlinefullheight.html - GetAscent easylazfreetype/tfreetypefont.getascent.html - GetDescent easylazfreetype/tfreetypefont.getdescent.html - GetLineSpacing easylazfreetype/tfreetypefont.getlinespacing.html - GetCapHeight easylazfreetype/tfreetypefont.getcapheight.html - SetHinted easylazfreetype/tfreetypefont.sethinted.html - GetHinted easylazfreetype/tfreetypefont.gethinted.html - OnDestroyFontItem easylazfreetype/tfreetypefont.ondestroyfontitem.html - FetchNames easylazfreetype/tfreetypefont.fetchnames.html - GetCollection easylazfreetype/tfreetypefont.getcollection.html - Quality easylazfreetype/tfreetypefont.quality.html - SmallLinePadding easylazfreetype/tfreetypefont.smalllinepadding.html - Create easylazfreetype/tfreetypefont.create.html - Destroy easylazfreetype/tfreetypefont.destroy.html - AccessFromStream easylazfreetype/tfreetypefont.accessfromstream.html - RenderText easylazfreetype/tfreetypefont.rendertext.html - SetNameAndStyle easylazfreetype/tfreetypefont.setnameandstyle.html - TextWidth easylazfreetype/tfreetypefont.textwidth.html - TextHeight easylazfreetype/tfreetypefont.textheight.html - CharWidthFromUnicode easylazfreetype/tfreetypefont.charwidthfromunicode.html - CharsWidth easylazfreetype/tfreetypefont.charswidth.html - CharsPosition easylazfreetype/tfreetypefont.charsposition.html - Name easylazfreetype/tfreetypefont.name.html - DPI easylazfreetype/tfreetypefont.dpi.html - SizeInPoints easylazfreetype/tfreetypefont.sizeinpoints.html - SizeInPixels easylazfreetype/tfreetypefont.sizeinpixels.html - CapHeight easylazfreetype/tfreetypefont.capheight.html - Glyph easylazfreetype/tfreetypefont.glyph.html - GlyphCount easylazfreetype/tfreetypefont.glyphcount.html - CharIndex easylazfreetype/tfreetypefont.charindex.html - Hinted easylazfreetype/tfreetypefont.hinted.html - WidthFactor easylazfreetype/tfreetypefont.widthfactor.html - LineFullHeight easylazfreetype/tfreetypefont.linefullheight.html - Information easylazfreetype/tfreetypefont.information.html - VersionNumber easylazfreetype/tfreetypefont.versionnumber.html - Family easylazfreetype/tfreetypefont.family.html - Collection easylazfreetype/tfreetypefont.collection.html - StyleAsString easylazfreetype/tfreetypefont.styleasstring.html - Style easylazfreetype/tfreetypefont.style.html - TFreeTypeGlyph easylazfreetype/tfreetypeglyph.html - Create easylazfreetype/tfreetypeglyph.create.html - RenderDirectly easylazfreetype/tfreetypeglyph.renderdirectly.html - Destroy easylazfreetype/tfreetypeglyph.destroy.html - Loaded easylazfreetype/tfreetypeglyph.loaded.html - Data easylazfreetype/tfreetypeglyph.data.html - Index easylazfreetype/tfreetypeglyph.index.html - Bounds easylazfreetype/tfreetypeglyph.bounds.html - BoundsWithOffset easylazfreetype/tfreetypeglyph.boundswithoffset.html - Advance easylazfreetype/tfreetypeglyph.advance.html - TFreeTypeRasterMap easylazfreetype/tfreetyperastermap.html - map easylazfreetype/tfreetyperastermap.map.html - FRasterizer easylazfreetype/tfreetyperastermap.frasterizer.html - GetHeight easylazfreetype/tfreetyperastermap.getheight.html - GetWidth easylazfreetype/tfreetyperastermap.getwidth.html - GetScanLine easylazfreetype/tfreetyperastermap.getscanline.html - Init easylazfreetype/tfreetyperastermap.init.html - Create easylazfreetype/tfreetyperastermap.create.html - Clear easylazfreetype/tfreetyperastermap.clear.html - Fill easylazfreetype/tfreetyperastermap.fill.html - RenderGlyph easylazfreetype/tfreetyperastermap.renderglyph.html - ScanMoveTo easylazfreetype/tfreetyperastermap.scanmoveto.html - Destroy easylazfreetype/tfreetyperastermap.destroy.html - Width easylazfreetype/tfreetyperastermap.width.html - Height easylazfreetype/tfreetyperastermap.height.html - ScanLine easylazfreetype/tfreetyperastermap.scanline.html - TFreeTypeMonochromeMap easylazfreetype/tfreetypemonochromemap.html - Init easylazfreetype/tfreetypemonochromemap.init.html - RenderGlyph easylazfreetype/tfreetypemonochromemap.renderglyph.html - ScanMoveTo easylazfreetype/tfreetypemonochromemap.scanmoveto.html - ScanNextPixel easylazfreetype/tfreetypemonochromemap.scannextpixel.html - GetPixel easylazfreetype/tfreetypemonochromemap.getpixel.html - SetPixel easylazfreetype/tfreetypemonochromemap.setpixel.html - GetPixelsInRect easylazfreetype/tfreetypemonochromemap.getpixelsinrect.html - GetPixelsInHorizline easylazfreetype/tfreetypemonochromemap.getpixelsinhorizline.html - TogglePixel easylazfreetype/tfreetypemonochromemap.togglepixel.html - TFreeTypeGrayscaleMap easylazfreetype/tfreetypegrayscalemap.html - Init easylazfreetype/tfreetypegrayscalemap.init.html - RenderQuality easylazfreetype/tfreetypegrayscalemap.renderquality.html - RenderGlyph easylazfreetype/tfreetypegrayscalemap.renderglyph.html - ScanMoveTo easylazfreetype/tfreetypegrayscalemap.scanmoveto.html - ScanNextPixel easylazfreetype/tfreetypegrayscalemap.scannextpixel.html - GetPixel easylazfreetype/tfreetypegrayscalemap.getpixel.html - SetPixel easylazfreetype/tfreetypegrayscalemap.setpixel.html - XorPixel easylazfreetype/tfreetypegrayscalemap.xorpixel.html - StylesToArray easylazfreetype/stylestoarray.html - FontCollection easylazfreetype/fontcollection.html - TTRASTER ttraster/index.html - Function_Sweep_Init ttraster/function_sweep_init.html - Function_Sweep_Span ttraster/function_sweep_span.html - Function_Sweep_Step ttraster/function_sweep_step.html - TFreeTypeRasterizer ttraster/tfreetyperasterizer.html - Render_Glyph ttraster/tfreetyperasterizer.render_glyph.html - Render_Gray_Glyph ttraster/tfreetyperasterizer.render_gray_glyph.html - Render_Gray_Glyph_HQ ttraster/tfreetyperasterizer.render_gray_glyph_hq.html - Render_Directly_Gray_Glyph ttraster/tfreetyperasterizer.render_directly_gray_glyph.html - Render_Directly_Gray_Glyph_HQ ttraster/tfreetyperasterizer.render_directly_gray_glyph_hq.html - Set_Raster_Palette ttraster/tfreetyperasterizer.set_raster_palette.html - Create ttraster/tfreetyperasterizer.create.html - Destroy ttraster/tfreetyperasterizer.destroy.html - IncludeFullGrainMin ttraster/includefullgrainmin.html - IncludeFullGrainMax ttraster/includefullgrainmax.html - TTRaster_Init ttraster/ttraster_init.html - TTRaster_Done ttraster/ttraster_done.html - TTGetDefaultRasterizer ttraster/ttgetdefaultrasterizer.html - TTProfile ttprofile/index.html - PoolMaxCapacity ttprofile/poolmaxcapacity.html - PoolIdleCapacity ttprofile/poolidlecapacity.html - TCurveDirection ttprofile/tcurvedirection.html - TPoint ttprofile/tpoint.html - TBezierStack ttprofile/tbezierstack.html - PBezierStack ttprofile/pbezierstack.html - TRenderPool ttprofile/trenderpool.html - Precision ttprofile/trenderpool.precision.html - PrecisionHalf ttprofile/trenderpool.precisionhalf.html - BezierPrecision ttprofile/trenderpool.bezierprecision.html - BoundsMinY ttprofile/trenderpool.boundsminy.html - BoundsMaxY ttprofile/trenderpool.boundsmaxy.html - scaleShift ttprofile/trenderpool.scaleshift.html - Bezier_Down ttprofile/trenderpool.bezier_down.html - Bezier_State ttprofile/trenderpool.bezier_state.html - Bezier_To ttprofile/trenderpool.bezier_to.html - Bezier_Up ttprofile/trenderpool.bezier_up.html - CEILING ttprofile/trenderpool.ceiling.html - DecomposeCurve ttprofile/trenderpool.decomposecurve.html - FLOOR ttprofile/trenderpool.floor.html - FRAC ttprofile/trenderpool.frac.html - GetCapacity ttprofile/trenderpool.getcapacity.html - Line_Down ttprofile/trenderpool.line_down.html - Line_To ttprofile/trenderpool.line_to.html - Line_Up ttprofile/trenderpool.line_up.html - Move_To ttprofile/trenderpool.move_to.html - PushBezier ttprofile/trenderpool.pushbezier.html - SCALED ttprofile/trenderpool.scaled.html - Split_Bezier ttprofile/trenderpool.split_bezier.html - TRUNC ttprofile/trenderpool.trunc.html - RequireCapacity ttprofile/trenderpool.requirecapacity.html - PushValue ttprofile/trenderpool.pushvalue.html - Capacity ttprofile/trenderpool.capacity.html - Joint ttprofile/trenderpool.joint.html - Fresh ttprofile/trenderpool.fresh.html - cProfile ttprofile/trenderpool.cprofile.html - ProfileColl ttprofile/trenderpool.profilecoll.html - LastX ttprofile/trenderpool.lastx.html - LastY ttprofile/trenderpool.lasty.html - CurveDir ttprofile/trenderpool.curvedir.html - Arcs ttprofile/trenderpool.arcs.html - CurArc ttprofile/trenderpool.curarc.html - data ttprofile/trenderpool.data.html - position ttprofile/trenderpool.position.html - Create ttprofile/trenderpool.create.html - Destroy ttprofile/trenderpool.destroy.html - SetPrecision ttprofile/trenderpool.setprecision.html - SetBounds ttprofile/trenderpool.setbounds.html - SetScaleShift ttprofile/trenderpool.setscaleshift.html - Clear ttprofile/trenderpool.clear.html - ReduceCapacity ttprofile/trenderpool.reducecapacity.html - Convert_Glyph ttprofile/trenderpool.convert_glyph.html - TProfile ttprofile/tprofile.html - Pool ttprofile/tprofile.pool.html - Flow ttprofile/tprofile.flow.html - Height ttprofile/tprofile.height.html - Start ttprofile/tprofile.start.html - Offset ttprofile/tprofile.offset.html - X ttprofile/tprofile.x.html - nextInContour ttprofile/tprofile.nextincontour.html - nextInColl ttprofile/tprofile.nextincoll.html - nextInList ttprofile/tprofile.nextinlist.html - prevInList ttprofile/tprofile.previnlist.html - Create ttprofile/tprofile.create.html - TProfileCollection ttprofile/tprofilecollection.html - Remove_Profile ttprofile/tprofilecollection.remove_profile.html - Pool ttprofile/tprofilecollection.pool.html - prevProfile ttprofile/tprofilecollection.prevprofile.html - fProfile ttprofile/tprofilecollection.fprofile.html - gProfile ttprofile/tprofilecollection.gprofile.html - nProfs ttprofile/tprofilecollection.nprofs.html - Create ttprofile/tprofilecollection.create.html - Clear ttprofile/tprofilecollection.clear.html - New_Profile ttprofile/tprofilecollection.new_profile.html - End_Profile ttprofile/tprofilecollection.end_profile.html - Destroy ttprofile/tprofilecollection.destroy.html - ProfileList_Init ttprofile/profilelist_init.html - ProfileList_InsertFirstElement ttprofile/profilelist_insertfirstelement.html - ProfileList_AppendToList ttprofile/profilelist_appendtolist.html - ProfileList_Remove ttprofile/profilelist_remove.html - ProfileList_SortByX ttprofile/profilelist_sortbyx.html - ProfileList_SortByStart ttprofile/profilelist_sortbystart.html - ProfileList_Count ttprofile/profilelist_count.html - ProfileList_Split ttprofile/profilelist_split.html - FPCAdds fpcadds/index.html - TStreamSeekType fpcadds/tstreamseektype.html - TMemStreamSeekType fpcadds/tmemstreamseektype.html - TCompareMemSize fpcadds/tcomparememsize.html - PHandle fpcadds/phandle.html - StrToWord fpcadds/strtoword.html - AlignToPtr fpcadds/aligntoptr.html - AlignToInt fpcadds/aligntoint.html - laz2_xpath laz2_xpath/index.html - TXPathToken laz2_xpath/txpathtoken.html - TXPathKeyword laz2_xpath/txpathkeyword.html - TXPathNodeArray laz2_xpath/txpathnodearray.html - TXPathMathOp laz2_xpath/txpathmathop.html - TXPathCompareOp laz2_xpath/txpathcompareop.html - TXPathBooleanOp laz2_xpath/txpathbooleanop.html - TNodeSet laz2_xpath/tnodeset.html - TAxis laz2_xpath/taxis.html - TNodeTestType laz2_xpath/tnodetesttype.html - TXPathVarList laz2_xpath/txpathvarlist.html - TXPathFunction laz2_xpath/txpathfunction.html - TXPathExprNode laz2_xpath/txpathexprnode.html - EvalPredicate laz2_xpath/txpathexprnode.evalpredicate.html - Evaluate laz2_xpath/txpathexprnode.evaluate.html - TXPathConstantNode laz2_xpath/txpathconstantnode.html - Create laz2_xpath/txpathconstantnode.create.html - Destroy laz2_xpath/txpathconstantnode.destroy.html - Evaluate laz2_xpath/txpathconstantnode.evaluate.html - TXPathVariableNode laz2_xpath/txpathvariablenode.html - Create laz2_xpath/txpathvariablenode.create.html - Evaluate laz2_xpath/txpathvariablenode.evaluate.html - TXPathFunctionNode laz2_xpath/txpathfunctionnode.html - Create laz2_xpath/txpathfunctionnode.create.html - Destroy laz2_xpath/txpathfunctionnode.destroy.html - Evaluate laz2_xpath/txpathfunctionnode.evaluate.html - TXPathNegationNode laz2_xpath/txpathnegationnode.html - Create laz2_xpath/txpathnegationnode.create.html - Destroy laz2_xpath/txpathnegationnode.destroy.html - Evaluate laz2_xpath/txpathnegationnode.evaluate.html - TXPathBinaryNode laz2_xpath/txpathbinarynode.html - FOperand1 laz2_xpath/txpathbinarynode.foperand1.html - FOperand2 laz2_xpath/txpathbinarynode.foperand2.html - Destroy laz2_xpath/txpathbinarynode.destroy.html - TXPathMathOpNode laz2_xpath/txpathmathopnode.html - Create laz2_xpath/txpathmathopnode.create.html - Evaluate laz2_xpath/txpathmathopnode.evaluate.html - TXPathCompareNode laz2_xpath/txpathcomparenode.html - Create laz2_xpath/txpathcomparenode.create.html - Evaluate laz2_xpath/txpathcomparenode.evaluate.html - TXPathBooleanOpNode laz2_xpath/txpathbooleanopnode.html - Create laz2_xpath/txpathbooleanopnode.create.html - Evaluate laz2_xpath/txpathbooleanopnode.evaluate.html - TXPathUnionNode laz2_xpath/txpathunionnode.html - Create laz2_xpath/txpathunionnode.create.html - Evaluate laz2_xpath/txpathunionnode.evaluate.html - TXPathFilterNode laz2_xpath/txpathfilternode.html - Create laz2_xpath/txpathfilternode.create.html - Destroy laz2_xpath/txpathfilternode.destroy.html - Evaluate laz2_xpath/txpathfilternode.evaluate.html - TStep laz2_xpath/tstep.html - Axis laz2_xpath/tstep.axis.html - NodeTestType laz2_xpath/tstep.nodetesttype.html - NodeTestString laz2_xpath/tstep.nodeteststring.html - NSTestString laz2_xpath/tstep.nsteststring.html - Create laz2_xpath/tstep.create.html - Evaluate laz2_xpath/tstep.evaluate.html - EXPathEvaluationError laz2_xpath/expathevaluationerror.html - TXPathVariable laz2_xpath/txpathvariable.html - FRefCount laz2_xpath/txpathvariable.frefcount.html - Error laz2_xpath/txpathvariable.error.html - TypeName laz2_xpath/txpathvariable.typename.html - Release laz2_xpath/txpathvariable.release.html - AsNodeSet laz2_xpath/txpathvariable.asnodeset.html - AsBoolean laz2_xpath/txpathvariable.asboolean.html - AsNumber laz2_xpath/txpathvariable.asnumber.html - AsText laz2_xpath/txpathvariable.astext.html - TXPathNodeSetVariable laz2_xpath/txpathnodesetvariable.html - Create laz2_xpath/txpathnodesetvariable.create.html - Destroy laz2_xpath/txpathnodesetvariable.destroy.html - TypeName laz2_xpath/txpathnodesetvariable.typename.html - AsNodeSet laz2_xpath/txpathnodesetvariable.asnodeset.html - AsText laz2_xpath/txpathnodesetvariable.astext.html - AsBoolean laz2_xpath/txpathnodesetvariable.asboolean.html - AsNumber laz2_xpath/txpathnodesetvariable.asnumber.html - Value laz2_xpath/txpathnodesetvariable.value.html - TXPathBooleanVariable laz2_xpath/txpathbooleanvariable.html - Create laz2_xpath/txpathbooleanvariable.create.html - TypeName laz2_xpath/txpathbooleanvariable.typename.html - AsBoolean laz2_xpath/txpathbooleanvariable.asboolean.html - AsNumber laz2_xpath/txpathbooleanvariable.asnumber.html - AsText laz2_xpath/txpathbooleanvariable.astext.html - Value laz2_xpath/txpathbooleanvariable.value.html - TXPathNumberVariable laz2_xpath/txpathnumbervariable.html - Create laz2_xpath/txpathnumbervariable.create.html - TypeName laz2_xpath/txpathnumbervariable.typename.html - AsBoolean laz2_xpath/txpathnumbervariable.asboolean.html - AsNumber laz2_xpath/txpathnumbervariable.asnumber.html - AsText laz2_xpath/txpathnumbervariable.astext.html - Value laz2_xpath/txpathnumbervariable.value.html - TXPathStringVariable laz2_xpath/txpathstringvariable.html - Create laz2_xpath/txpathstringvariable.create.html - TypeName laz2_xpath/txpathstringvariable.typename.html - AsBoolean laz2_xpath/txpathstringvariable.asboolean.html - AsNumber laz2_xpath/txpathstringvariable.asnumber.html - AsText laz2_xpath/txpathstringvariable.astext.html - Value laz2_xpath/txpathstringvariable.value.html - TXPathNSResolver laz2_xpath/txpathnsresolver.html - FNode laz2_xpath/txpathnsresolver.fnode.html - Create laz2_xpath/txpathnsresolver.create.html - LookupNamespaceURI laz2_xpath/txpathnsresolver.lookupnamespaceuri.html - TXPathScanner laz2_xpath/txpathscanner.html - Create laz2_xpath/txpathscanner.create.html - NextToken laz2_xpath/txpathscanner.nexttoken.html - PeekToken laz2_xpath/txpathscanner.peektoken.html - SkipToken laz2_xpath/txpathscanner.skiptoken.html - CurToken laz2_xpath/txpathscanner.curtoken.html - CurTokenString laz2_xpath/txpathscanner.curtokenstring.html - TXPathContext laz2_xpath/txpathcontext.html - ContextNode laz2_xpath/txpathcontext.contextnode.html - ContextPosition laz2_xpath/txpathcontext.contextposition.html - ContextSize laz2_xpath/txpathcontext.contextsize.html - Create laz2_xpath/txpathcontext.create.html - TXPathEnvironment laz2_xpath/txpathenvironment.html - xpLast laz2_xpath/txpathenvironment.xplast.html - xpPosition laz2_xpath/txpathenvironment.xpposition.html - xpCount laz2_xpath/txpathenvironment.xpcount.html - xpId laz2_xpath/txpathenvironment.xpid.html - xpLocalName laz2_xpath/txpathenvironment.xplocalname.html - xpNamespaceURI laz2_xpath/txpathenvironment.xpnamespaceuri.html - xpName laz2_xpath/txpathenvironment.xpname.html - xpString laz2_xpath/txpathenvironment.xpstring.html - xpConcat laz2_xpath/txpathenvironment.xpconcat.html - xpStartsWith laz2_xpath/txpathenvironment.xpstartswith.html - xpContains laz2_xpath/txpathenvironment.xpcontains.html - xpSubstringBefore laz2_xpath/txpathenvironment.xpsubstringbefore.html - xpSubstringAfter laz2_xpath/txpathenvironment.xpsubstringafter.html - xpSubstring laz2_xpath/txpathenvironment.xpsubstring.html - xpStringLength laz2_xpath/txpathenvironment.xpstringlength.html - xpNormalizeSpace laz2_xpath/txpathenvironment.xpnormalizespace.html - xpTranslate laz2_xpath/txpathenvironment.xptranslate.html - xpBoolean laz2_xpath/txpathenvironment.xpboolean.html - xpNot laz2_xpath/txpathenvironment.xpnot.html - xpTrue laz2_xpath/txpathenvironment.xptrue.html - xpFalse laz2_xpath/txpathenvironment.xpfalse.html - xpLang laz2_xpath/txpathenvironment.xplang.html - xpNumber laz2_xpath/txpathenvironment.xpnumber.html - xpSum laz2_xpath/txpathenvironment.xpsum.html - xpFloor laz2_xpath/txpathenvironment.xpfloor.html - xpCeiling laz2_xpath/txpathenvironment.xpceiling.html - xpRound laz2_xpath/txpathenvironment.xpround.html - Create laz2_xpath/txpathenvironment.create.html - Destroy laz2_xpath/txpathenvironment.destroy.html - GetFunctionIndex laz2_xpath/txpathenvironment.getfunctionindex.html - GetVariableIndex laz2_xpath/txpathenvironment.getvariableindex.html - AddFunction laz2_xpath/txpathenvironment.addfunction.html - AddVariable laz2_xpath/txpathenvironment.addvariable.html - RemoveFunction laz2_xpath/txpathenvironment.removefunction.html - RemoveVariable laz2_xpath/txpathenvironment.removevariable.html - FunctionCount laz2_xpath/txpathenvironment.functioncount.html - VariableCount laz2_xpath/txpathenvironment.variablecount.html - Functions laz2_xpath/txpathenvironment.functions.html - FunctionsByName laz2_xpath/txpathenvironment.functionsbyname.html - Variables laz2_xpath/txpathenvironment.variables.html - VariablesByName laz2_xpath/txpathenvironment.variablesbyname.html - TXPathExpression laz2_xpath/txpathexpression.html - Create laz2_xpath/txpathexpression.create.html - Destroy laz2_xpath/txpathexpression.destroy.html - Evaluate laz2_xpath/txpathexpression.evaluate.html - EvaluationError laz2_xpath/evaluationerror.html - EvaluateXPathExpression laz2_xpath/evaluatexpathexpression.html - LazConfigStorage lazconfigstorage/index.html - ConfigMemStorageFormatVersion lazconfigstorage/configmemstorageformatversion.html - TConfigStorageClass lazconfigstorage/tconfigstorageclass.html - TConfigMemStorageModification lazconfigstorage/tconfigmemstoragemodification.html - TConfigStorage lazconfigstorage/tconfigstorage.html - GetFullPathValue lazconfigstorage/tconfigstorage.getfullpathvalue.html - SetFullPathValue lazconfigstorage/tconfigstorage.setfullpathvalue.html - SetDeleteFullPathValue lazconfigstorage/tconfigstorage.setdeletefullpathvalue.html - DeleteFullPath lazconfigstorage/tconfigstorage.deletefullpath.html - DeleteFullPathValue lazconfigstorage/tconfigstorage.deletefullpathvalue.html - WriteProperty lazconfigstorage/tconfigstorage.writeproperty.html - ReadProperty lazconfigstorage/tconfigstorage.readproperty.html - Create lazconfigstorage/tconfigstorage.create.html - Destroy lazconfigstorage/tconfigstorage.destroy.html - Clear lazconfigstorage/tconfigstorage.clear.html - GetValue lazconfigstorage/tconfigstorage.getvalue.html - SetValue lazconfigstorage/tconfigstorage.setvalue.html - SetDeleteValue lazconfigstorage/tconfigstorage.setdeletevalue.html - DeletePath lazconfigstorage/tconfigstorage.deletepath.html - DeleteValue lazconfigstorage/tconfigstorage.deletevalue.html - CurrentBasePath lazconfigstorage/tconfigstorage.currentbasepath.html - ExtendPath lazconfigstorage/tconfigstorage.extendpath.html - AppendBasePath lazconfigstorage/tconfigstorage.appendbasepath.html - UndoAppendBasePath lazconfigstorage/tconfigstorage.undoappendbasepath.html - WriteToDisk lazconfigstorage/tconfigstorage.writetodisk.html - GetFilename lazconfigstorage/tconfigstorage.getfilename.html - WriteObject lazconfigstorage/tconfigstorage.writeobject.html - ReadObject lazconfigstorage/tconfigstorage.readobject.html - TConfigMemStorageNode lazconfigstorage/tconfigmemstoragenode.html - Name lazconfigstorage/tconfigmemstoragenode.name.html - Value lazconfigstorage/tconfigmemstoragenode.value.html - Parent lazconfigstorage/tconfigmemstoragenode.parent.html - Children lazconfigstorage/tconfigmemstoragenode.children.html - ClearChilds lazconfigstorage/tconfigmemstoragenode.clearchilds.html - Create lazconfigstorage/tconfigmemstoragenode.create.html - Destroy lazconfigstorage/tconfigmemstoragenode.destroy.html - TConfigMemStorage lazconfigstorage/tconfigmemstorage.html - DeleteFullPath lazconfigstorage/tconfigmemstorage.deletefullpath.html - DeleteFullPathValue lazconfigstorage/tconfigmemstorage.deletefullpathvalue.html - GetFullPathValue lazconfigstorage/tconfigmemstorage.getfullpathvalue.html - SetDeleteFullPathValue lazconfigstorage/tconfigmemstorage.setdeletefullpathvalue.html - SetFullPathValue lazconfigstorage/tconfigmemstorage.setfullpathvalue.html - Root lazconfigstorage/tconfigmemstorage.root.html - GetFilename lazconfigstorage/tconfigmemstorage.getfilename.html - WriteToDisk lazconfigstorage/tconfigmemstorage.writetodisk.html - Destroy lazconfigstorage/tconfigmemstorage.destroy.html - Clear lazconfigstorage/tconfigmemstorage.clear.html - SaveToConfig lazconfigstorage/tconfigmemstorage.savetoconfig.html - LoadFromConfig lazconfigstorage/tconfigmemstorage.loadfromconfig.html - WriteDebugReport lazconfigstorage/tconfigmemstorage.writedebugreport.html - LoadStringToStringTree lazconfigstorage/loadstringtostringtree.html - SaveStringToStringTree lazconfigstorage/savestringtostringtree.html - CompareConfigMemStorageNames lazconfigstorage/compareconfigmemstoragenames.html - CompareConfigMemStorageNodes lazconfigstorage/compareconfigmemstoragenodes.html - ComparePCharWithConfigMemStorageNode lazconfigstorage/comparepcharwithconfigmemstoragenode.html - LazFreeTypeFontCollection lazfreetypefontcollection/index.html - TFontCollectionItem lazfreetypefontcollection/tfontcollectionitem.html - GetFilename lazfreetypefontcollection/tfontcollectionitem.getfilename.html - GetBold lazfreetypefontcollection/tfontcollectionitem.getbold.html - GetInformation lazfreetypefontcollection/tfontcollectionitem.getinformation.html - GetItalic lazfreetypefontcollection/tfontcollectionitem.getitalic.html - GetStyleCount lazfreetypefontcollection/tfontcollectionitem.getstylecount.html - GetStyles lazfreetypefontcollection/tfontcollectionitem.getstyles.html - GetStyle lazfreetypefontcollection/tfontcollectionitem.getstyle.html - GetVersionNumber lazfreetypefontcollection/tfontcollectionitem.getversionnumber.html - NotifyDestroy lazfreetypefontcollection/tfontcollectionitem.notifydestroy.html - Init lazfreetypefontcollection/tfontcollectionitem.init.html - Create lazfreetypefontcollection/tfontcollectionitem.create.html - Destroy lazfreetypefontcollection/tfontcollectionitem.destroy.html - HasStyle lazfreetypefontcollection/tfontcollectionitem.hasstyle.html - Information lazfreetypefontcollection/tfontcollectionitem.information.html - VersionNumber lazfreetypefontcollection/tfontcollectionitem.versionnumber.html - CreateFont lazfreetypefontcollection/tfontcollectionitem.createfont.html - QueryFace lazfreetypefontcollection/tfontcollectionitem.queryface.html - ReleaseFace lazfreetypefontcollection/tfontcollectionitem.releaseface.html - UsePostscriptStyle lazfreetypefontcollection/tfontcollectionitem.usepostscriptstyle.html - TFamilyCollectionItem lazfreetypefontcollection/tfamilycollectionitem.html - GetFontByIndex lazfreetypefontcollection/tfamilycollectionitem.getfontbyindex.html - GetFontByStyles lazfreetypefontcollection/tfamilycollectionitem.getfontbystyles.html - GetFontIndexByStyles lazfreetypefontcollection/tfamilycollectionitem.getfontindexbystyles.html - GetStyle lazfreetypefontcollection/tfamilycollectionitem.getstyle.html - AddStyle lazfreetypefontcollection/tfamilycollectionitem.addstyle.html - GetStyles lazfreetypefontcollection/tfamilycollectionitem.getstyles.html - GetFamilyName lazfreetypefontcollection/tfamilycollectionitem.getfamilyname.html - GetFontCount lazfreetypefontcollection/tfamilycollectionitem.getfontcount.html - GetStyleCount lazfreetypefontcollection/tfamilycollectionitem.getstylecount.html - Create lazfreetypefontcollection/tfamilycollectionitem.create.html - AddFont lazfreetypefontcollection/tfamilycollectionitem.addfont.html - GetFont lazfreetypefontcollection/tfamilycollectionitem.getfont.html - GetFontIndex lazfreetypefontcollection/tfamilycollectionitem.getfontindex.html - HasStyle lazfreetypefontcollection/tfamilycollectionitem.hasstyle.html - TFreeTypeFontCollection lazfreetypefontcollection/tfreetypefontcollection.html - GetFont lazfreetypefontcollection/tfreetypefontcollection.getfont.html - GetFamily lazfreetypefontcollection/tfreetypefontcollection.getfamily.html - GetFamilyCount lazfreetypefontcollection/tfreetypefontcollection.getfamilycount.html - GetFontCount lazfreetypefontcollection/tfreetypefontcollection.getfontcount.html - Create lazfreetypefontcollection/tfreetypefontcollection.create.html - Clear lazfreetypefontcollection/tfreetypefontcollection.clear.html - BeginUpdate lazfreetypefontcollection/tfreetypefontcollection.beginupdate.html - AddFolder lazfreetypefontcollection/tfreetypefontcollection.addfolder.html - AddFile lazfreetypefontcollection/tfreetypefontcollection.addfile.html - AddStream lazfreetypefontcollection/tfreetypefontcollection.addstream.html - EndUpdate lazfreetypefontcollection/tfreetypefontcollection.endupdate.html - Destroy lazfreetypefontcollection/tfreetypefontcollection.destroy.html - FontFileEnumerator lazfreetypefontcollection/tfreetypefontcollection.fontfileenumerator.html - FamilyEnumerator lazfreetypefontcollection/tfreetypefontcollection.familyenumerator.html - SetDefaultFreeTypeFontCollection lazfreetypefontcollection/setdefaultfreetypefontcollection.html - LazLoggerDummy lazloggerdummy/index.html - TLazLoggerLogGroupFlag lazloggerdummy/tlazloggerloggroupflag.html - TLazLoggerLogGroupFlags lazloggerdummy/tlazloggerloggroupflags.html - TLazLoggerLogGroup lazloggerdummy/tlazloggerloggroup.html - PLazLoggerLogGroup lazloggerdummy/plazloggerloggroup.html - TLazLoggerWriteEvent lazloggerdummy/tlazloggerwriteevent.html - TLazDebugLoggerCreator lazloggerdummy/tlazdebugloggercreator.html - TLazLoggerBlockHandler lazloggerdummy/tlazloggerblockhandler.html - IncreaseIndent lazloggerdummy/tlazloggerblockhandler.increaseindent.html - DecreaseIndent lazloggerdummy/tlazloggerblockhandler.decreaseindent.html - TLazLoggerLogGroupList lazloggerdummy/tlazloggerloggrouplist.html - Assign lazloggerdummy/tlazloggerloggrouplist.assign.html - IndexOf lazloggerdummy/tlazloggerloggrouplist.indexof.html - Find lazloggerdummy/tlazloggerloggrouplist.find.html - Count lazloggerdummy/tlazloggerloggrouplist.count.html - Item lazloggerdummy/tlazloggerloggrouplist.item.html - TLazLogger lazloggerdummy/tlazlogger.html - Assign lazloggerdummy/tlazlogger.assign.html - Init lazloggerdummy/tlazlogger.init.html - Finish lazloggerdummy/tlazlogger.finish.html - NestLvlIndent lazloggerdummy/tlazlogger.nestlvlindent.html - MaxNestPrefixLen lazloggerdummy/tlazlogger.maxnestprefixlen.html - RegisterLogGroup lazloggerdummy/tlazlogger.registerloggroup.html - FindOrRegisterLogGroup lazloggerdummy/tlazlogger.findorregisterloggroup.html - LogGroupList lazloggerdummy/tlazlogger.loggrouplist.html - UseGlobalLogGroupList lazloggerdummy/tlazlogger.usegloballoggrouplist.html - DebuglnStack lazloggerdummy/tlazlogger.debuglnstack.html - DbgOut lazloggerdummy/tlazlogger.dbgout.html - DebugLn lazloggerdummy/tlazlogger.debugln.html - DebugLnEnter lazloggerdummy/tlazlogger.debuglnenter.html - DebugLnExit lazloggerdummy/tlazlogger.debuglnexit.html - DebuglnStack lazloggerdummy/debuglnstack.html - DbgOut lazloggerdummy/dbgout.html - DebugLn lazloggerdummy/debugln.html - DebugLnEnter lazloggerdummy/debuglnenter.html - DebugLnExit lazloggerdummy/debuglnexit.html - DbgS lazloggerdummy/dbgs.html - DbgSJoin lazloggerdummy/dbgsjoin.html - DbgSName lazloggerdummy/dbgsname.html - dbgObjMem lazloggerdummy/dbgobjmem.html - dbghex lazloggerdummy/dbghex.html - dbgMemRange lazloggerdummy/dbgmemrange.html - dbgMemStream lazloggerdummy/dbgmemstream.html - GetDebugLoggerGroups lazloggerdummy/getdebugloggergroups.html - SetDebugLoggerGroups lazloggerdummy/setdebugloggergroups.html - GetDebugLogger lazloggerdummy/getdebuglogger.html - GetExistingDebugLogger lazloggerdummy/getexistingdebuglogger.html - SetDebugLogger lazloggerdummy/setdebuglogger.html - RecreateDebugLogger lazloggerdummy/recreatedebuglogger.html - LazDebugLoggerCreator lazloggerdummy/lazdebugloggercreator.html - OnWidgetSetDebugLn lazloggerdummy/onwidgetsetdebugln.html - OnWidgetSetDbgOut lazloggerdummy/onwidgetsetdbgout.html - LazLoggerProfiling lazloggerprofiling/index.html - TLazLoggerBlockTimer lazloggerprofiling/tlazloggerblocktimer.html - Create lazloggerprofiling/tlazloggerblocktimer.create.html - EnterBlock lazloggerprofiling/tlazloggerblocktimer.enterblock.html - ExitBlock lazloggerprofiling/tlazloggerblocktimer.exitblock.html - MaxDepth lazloggerprofiling/tlazloggerblocktimer.maxdepth.html - TimeDiff lazloggerprofiling/tlazloggerblocktimer.timediff.html - Nested lazloggerprofiling/tlazloggerblocktimer.nested.html - TLazLoggerBlockMemWatch lazloggerprofiling/tlazloggerblockmemwatch.html - Create lazloggerprofiling/tlazloggerblockmemwatch.create.html - EnterBlock lazloggerprofiling/tlazloggerblockmemwatch.enterblock.html - ExitBlock lazloggerprofiling/tlazloggerblockmemwatch.exitblock.html - MaxDepth lazloggerprofiling/tlazloggerblockmemwatch.maxdepth.html - MemDiff lazloggerprofiling/tlazloggerblockmemwatch.memdiff.html - Nested lazloggerprofiling/tlazloggerblockmemwatch.nested.html - DbgsMemUsed lazloggerprofiling/dbgsmemused.html - DbgsTimeUsed lazloggerprofiling/dbgstimeused.html - DbgStartTimer lazloggerprofiling/dbgstarttimer.html - DbgStopTimer lazloggerprofiling/dbgstoptimer.html - DbgStartMemWatch lazloggerprofiling/dbgstartmemwatch.html - DbgStopMemWatch lazloggerprofiling/dbgstopmemwatch.html - TTFile ttfile/index.html - TFreeTypeStream ttfile/tfreetypestream.html - Create ttfile/tfreetypestream.create.html - Destroy ttfile/tfreetypestream.destroy.html - Activate ttfile/tfreetypestream.activate.html - Deactivate ttfile/tfreetypestream.deactivate.html - SeekFile ttfile/tfreetypestream.seekfile.html - SkipFile ttfile/tfreetypestream.skipfile.html - ReadFile ttfile/tfreetypestream.readfile.html - ReadAtFile ttfile/tfreetypestream.readatfile.html - AccessFrame ttfile/tfreetypestream.accessframe.html - CheckAndAccessFrame ttfile/tfreetypestream.checkandaccessframe.html - ForgetFrame ttfile/tfreetypestream.forgetframe.html - GET_Byte ttfile/tfreetypestream.get_byte.html - GET_Char ttfile/tfreetypestream.get_char.html - GET_Short ttfile/tfreetypestream.get_short.html - GET_UShort ttfile/tfreetypestream.get_ushort.html - GET_Long ttfile/tfreetypestream.get_long.html - GET_ULong ttfile/tfreetypestream.get_ulong.html - GET_Tag4 ttfile/tfreetypestream.get_tag4.html - Open ttfile/tfreetypestream.open.html - Name ttfile/tfreetypestream.name.html - Base ttfile/tfreetypestream.base.html - Position ttfile/tfreetypestream.position.html - Used ttfile/tfreetypestream.used.html - TTFile_Init ttfile/ttfile_init.html - TTFile_Done ttfile/ttfile_done.html - TT_Open_Stream ttfile/tt_open_stream.html - TT_Close_Stream ttfile/tt_close_stream.html - TT_Use_Stream ttfile/tt_use_stream.html - TT_Flush_Stream ttfile/tt_flush_stream.html - TT_Done_Stream ttfile/tt_done_stream.html - TT_Stream_Size ttfile/tt_stream_size.html - TTGLoad ttgload/index.html - Load_TrueType_Glyph ttgload/load_truetype_glyph.html - TT_Get_Metrics ttgload/tt_get_metrics.html - Get_Advance_Widths ttgload/get_advance_widths.html - TTInterp ttinterp/index.html - Run_Ins ttinterp/run_ins.html - TTLoad ttload/index.html - LookUp_TrueType_Table ttload/lookup_truetype_table.html - Load_TrueType_Directory ttload/load_truetype_directory.html - Load_TrueType_MaxProfile ttload/load_truetype_maxprofile.html - Load_TrueType_Header ttload/load_truetype_header.html - Load_TrueType_Locations ttload/load_truetype_locations.html - Load_TrueType_CVT ttload/load_truetype_cvt.html - Load_TrueType_CMap ttload/load_truetype_cmap.html - Load_TrueType_Gasp ttload/load_truetype_gasp.html - Load_TrueType_Names ttload/load_truetype_names.html - Load_TrueType_Programs ttload/load_truetype_programs.html - Load_trueType_Postscript ttload/load_truetype_postscript.html - Load_TrueType_OS2 ttload/load_truetype_os2.html - Load_TrueType_HDMX ttload/load_truetype_hdmx.html - Load_TrueType_Metrics_Header ttload/load_truetype_metrics_header.html - Load_TrueType_Any ttload/load_truetype_any.html - TTMemory ttmemory/index.html - Font_Pool_Allocated ttmemory/font_pool_allocated.html - TMarkRecord ttmemory/tmarkrecord.html - Alloc ttmemory/alloc.html - Free ttmemory/free.html - TTMemory_Init ttmemory/ttmemory_init.html - TTMemory_Done ttmemory/ttmemory_done.html - -:classes -#lazutils.LazMethodList.TMethodList #rtl.System.TObject -1VFAllowDuplicates -1VFItems -1VFCount -1MGetItems -1MSetAllowDuplicates -1MSetItems -1MInternalInsert -1MRaiseIndexOutOfBounds -3MDestroy -3MCount -3MNextDownIndex -3MIndexOf -3MDelete -3MRemove -3MAdd -3MInsert -3MMove -3MRemoveAllMethodsOfObject -3MCallNotifyEvents -3PItems rw -3PAllowDuplicates rw -#lazutils.AvgLvlTree.TAvgLvlTreeNode #rtl.System.TObject -3VParent -3VLeft -3VRight -3VBalance -3VData -3MSuccessor -3MPrecessor -3MTreeDepth -3MConsistencyCheck -3MGetCount -#lazutils.AvgLvlTree.TAvgLvlTreeNodeEnumerator #rtl.System.TObject -2VFCurrent -2VFLowToHigh -2VFTree -3MCreate -3MGetEnumerator -3MMoveNext -3PCurrent r -3PLowToHigh r -#lazutils.AvgLvlTree.TAvgLvlTree #rtl.System.TObject -2VfRoot -2VFCount -2VFNodeClass -2VFOnCompare -2VFOnObjectCompare -2MBalanceAfterInsert -2MBalanceAfterDelete -2MDeletingNode -2MFindInsertPos -2MInit -2MNodeAdded -2MRotateLeft -2MRotateRight -2MSwitchPositionWithSuccessor -2MSetOnCompare -2MSetOnObjectCompare -2MSetCompares -3MCreate -3MCreateObjectCompare -3MDestroy -3POnCompare rw -3POnObjectCompare rw -3PNodeClass rw -3MAdd -3MDelete -3MRemove -3MRemovePointer -3MMoveDataLeftMost -3MMoveDataRightMost -3MClear -3MFreeAndClear -3MFreeAndDelete -3MEquals -3MIsEqual -3MAssign -3PRoot r -3PCount r -3MCompare -3MFind -3MFindKey -3MFindNearestKey -3MFindSuccessor -3MFindPrecessor -3MFindLowest -3MFindHighest -3MFindNearest -3MFindPointer -3MFindLeftMost -3MFindRightMost -3MFindLeftMostKey -3MFindRightMostKey -3MFindLeftMostSameKey -3MFindRightMostSameKey -3MGetEnumerator -3MGetEnumeratorHighToLow -3MConsistencyCheck -3MWriteReportToStream -3MNodeToReportStr -3MReportAsString -#lazutils.AvgLvlTree.TIndexedAVLTreeNode #lazutils.AvgLvlTree.TAvgLvlTreeNode -3VLeftCount -#lazutils.AvgLvlTree.TIndexedAVLTree #lazutils.AvgLvlTree.TAvgLvlTree -1MGetItems -2VfLastIndex -2VfLastNode -2MDeletingNode -2MInit -2MNodeAdded -2MRotateLeft -2MRotateRight -2MSwitchPositionWithSuccessor -3MGetNodeAtIndex -3MNodeToIndex -3MIndexOf -3PItems r -3MConsistencyCheck -3MNodeToReportStr -#lazutils.AvgLvlTree.TPointerToPointerEnumerator #rtl.System.TObject -2VFHighToLow -2VFTree -2VFCurrent -2MGetCurrent -3MCreate -3MGetEnumerator -3MMoveNext -3PCurrent r -3PHighToLow r -#lazutils.AvgLvlTree.TPointerToPointerTree #rtl.System.TObject -1VFItems -1MGetCount -1MGetValues -1MSetValues -1MFindNode -1MGetNode -3MCreate -3MDestroy -3MClear -3MClearWithFree -3MEquals -3MIsEqual -3MAssign -3MRemove -3MContains -3MGetFirst -3MGetLast -3MGetNext -3MGetPrev -3PCount r -3PValues rw -3PTree r -3MGetEnumerator -3MGetEnumeratorHighToLow -#lazutils.AvgLvlTree.TCustomStringMapEnumerator #rtl.System.TObject -2VFTree -2VFCurrent -3MCreate -3MMoveNext -#lazutils.AvgLvlTree.TCustomStringMap #rtl.System.TObject -1VFCompareKeyItemFunc -1VFTree -1VFCaseSensitive -1MGetCompareItemsFunc -2MDisposeItem -2MItemsAreEqual -2MCreateCopy -3MCreate -3MDestroy -3MClear -3MContains -3MGetNames -3MRemove -3PCaseSensitive r -3PTree r -3MFindNode -3MCount -3MEquals -3MAssign -3PCompareItemsFunc r -3PCompareKeyItemFunc r -3MSetCompareFuncs -#lazutils.AvgLvlTree.TStringMapEnumerator #lazutils.AvgLvlTree.TCustomStringMapEnumerator -1MGetCurrent -3PCurrent r -#lazutils.AvgLvlTree.TStringMap #lazutils.AvgLvlTree.TCustomStringMap -1MGetValues -1MSetValues -3MAdd -3MGetEnumerator -3PValues rw -#lazutils.AvgLvlTree.TStringToStringTreeEnumerator #lazutils.AvgLvlTree.TCustomStringMapEnumerator -1MGetCurrent -3PCurrent r -#lazutils.AvgLvlTree.TStringToStringTree #lazutils.AvgLvlTree.TCustomStringMap -1MGetValues -1MSetValues -2MDisposeItem -2MItemsAreEqual -2MCreateCopy -2MGetNode -3MGetString -3MAdd -3MAddNameValues -3MAddValues -3MAddNames -3MDelete -3PValues rw -3MAsText -3MAssign -3MGetEnumerator -3MGetFirst -3MGetLast -3MGetNext -3MGetPrev -#lazutils.AvgLvlTree.TStringToPointerTreeEnumerator #lazutils.AvgLvlTree.TCustomStringMapEnumerator -1MGetCurrent -3PCurrent r -#lazutils.AvgLvlTree.TStringToPointerTree #lazutils.AvgLvlTree.TCustomStringMap -1VFFreeValues -1MGetValues -1MSetValues -2MDisposeItem -2MItemsAreEqual -2MCreateCopy -3MGetData -3PValues rw -3MGetEnumerator -3PFreeValues rw -#lazutils.Masks.TMask #rtl.System.TObject -1VFMask -1VfCaseSensitive -1VfInitialMask -1MInitMaskString -1MClearMaskString -3MCreate -3MDestroy -3MMatches -3MMatchesWindowsMask -#lazutils.Masks.TParseStringList #rtl.Classes.TStringList -3MCreate -#lazutils.Masks.TMaskList #rtl.System.TObject -1VFMasks -1MGetCount -1MGetItem -3MCreate -3MDestroy -3MMatches -3MMatchesWindowsMask -3PCount r -3PItems r -#lazutils.FileUtil.TFileIterator #rtl.System.TObject -1VFPath -1VFLevel -1VFFileInfo -1VFSearching -1MGetFileName -3MStop -3MIsDirectory -3PFileName r -3PFileInfo r -3PLevel r -3PPath r -3PSearching r -#lazutils.FileUtil.TFileSearcher #lazutils.FileUtil.TFileIterator -1VFMaskSeparator -1VFFollowSymLink -1VFOnFileFound -1VFOnDirectoryFound -1VFOnDirectoryEnter -1VFFileAttribute -1VFDirectoryAttribute -1MRaiseSearchingError -2MDoDirectoryEnter -2MDoDirectoryFound -2MDoFileFound -3MCreate -3MSearch -3PMaskSeparator rw -3PFollowSymLink rw -3PFileAttribute rw -3PDirectoryAttribute rw -3POnDirectoryFound rw -3POnFileFound rw -3POnDirectoryEnter rw -#lazutils.FileUtil.TListFileSearcher #lazutils.FileUtil.TFileSearcher -1VFList -2MDoFileFound -3MCreate -#lazutils.FileUtil.TListDirectoriesSearcher #lazutils.FileUtil.TFileSearcher -1VFDirectoriesList -2MDoDirectoryFound -3MCreate -#lazutils.LazUTF8Classes.TFileStreamUTF8 #rtl.Classes.TFileStream -1VFFileName -3MCreate -3MDestroy -3PFileName r -#lazutils.LazUTF8Classes.TStringListUTF8 #rtl.Classes.TStringList -2MDoCompareText -3MLoadFromFile -3MSaveToFile -#lazutils.LazUTF8Classes.TMemoryStreamUTF8 #rtl.Classes.TMemoryStream -3MLoadFromFile -3MSaveToFile -#lazutils.LazLogger.TLazLoggerFileHandle #rtl.System.TObject -1VFActiveLogText -1VFCloseLogFileBetweenWrites -1VFLogName -1VFLogText -1VFLogTextInUse -1VFLogTextFailed -1VFUseStdOut -1MDoOpenFile -1MDoCloseFile -1MGetWriteTarget -1MSetCloseLogFileBetweenWrites -1MSetLogName -3MCreate -3MDestroy -3MOpenFile -3MCloseFile -3MWriteToFile -3MWriteLnToFile -3PLogName rw -3PUseStdOut rw -3PCloseLogFileBetweenWrites rw -3PWriteTarget r -3PActiveLogText r -#lazutils.LazLogger.TLazLoggerFile #lazutils.LazLoggerBase.TLazLoggerWithGroupParam -1VFFileHandle -1VFOnDbgOut -1VFOnDebugLn -1VFBlockHandler -1VFEnvironmentForLogFileName -1VFParamForLogFileName -1VFGetLogFileNameDone -1VFDebugNestLvl -1VFDebugIndent -1VFDebugNestAtBOL -1MGetFileHandle -1MSetEnvironmentForLogFileName -1MSetFileHandle -1MSetParamForLogFileName -1MGetLogFileName -1MGetCloseLogFileBetweenWrites -1MGetLogName -1MGetUseStdOut -1MSetCloseLogFileBetweenWrites -1MSetLogName -1MSetUseStdOut -2MDoInit -2MDoFinsh -2MIncreaseIndent -2MDecreaseIndent -2MIndentChanged -2MCreateIndent -2MGetBlockHandler -2MClearAllBlockHandler -2MDoDbgOut -2MDoDebugLn -2MDoDebuglnStack -2PFileHandle rw -3MCreate -3MDestroy -3MAssign -3MCurrentIndentLevel -3PParamForLogFileName rw -3PEnvironmentForLogFileName rw -3POnDebugLn rw -3POnDbgOut rw -3MAddBlockHandler -3MRemoveBlockHandler -3MBlockHandlerCount -3PLogName rw -3PUseStdOut rw -3PCloseLogFileBetweenWrites rw -#lazutils.LazLoggerBase.TLazLoggerBlockHandler #lazutils.LazClasses.TRefCountedObject -3MEnterBlock -3MExitBlock -#lazutils.LazLoggerBase.TLazLoggerLogGroupList #lazutils.LazClasses.TRefCountedObject -1VFList -1MClear -1MGetItem -1MNewItem -2MAdd -2MFindOrAdd -2MRemove -3MCreate -3MDestroy -3MAssign -3MIndexOf -3MFind -3MCount -3PItem r -#lazutils.LazLoggerBase.TLazLogger #lazutils.LazClasses.TRefCountedObject -1VFIsInitialized -1VFMaxNestPrefixLen -1VFNestLvlIndent -1VFLogGroupList -1VFUseGlobalLogGroupList -1MSetMaxNestPrefixLen -1MSetNestLvlIndent -1MGetLogGroupList -1MSetUseGlobalLogGroupList -2MDoInit -2MDoFinsh -2MIncreaseIndent -2MDecreaseIndent -2MIndentChanged -2MGetBlockHandler -2MDoDbgOut -2MDoDebugLn -2MDoDebuglnStack -2MArgsToString -2PIsInitialized r -3MCreate -3MDestroy -3MAssign -3MInit -3MFinish -3MCurrentIndentLevel -3PNestLvlIndent rw -3PMaxNestPrefixLen rw -3MRegisterLogGroup -3MFindOrRegisterLogGroup -3PLogGroupList r -3PUseGlobalLogGroupList rw -3MAddBlockHandler -3MRemoveBlockHandler -3MBlockHandlerCount -3PBlockHandler r -3MDebuglnStack -3MDbgOut -3MDebugLn -3MDebugLnEnter -3MDebugLnExit -#lazutils.LazLoggerBase.TLazLoggerWithGroupParam #lazutils.LazLoggerBase.TLazLogger -1VFLogAllDefaultDisabled -1VFLogDefaultEnabled -1VFLogParamParsed -1VFParamForEnabledLogGroups -1MSetParamForEnabledLogGroups -1MParseParamForEnabledLogGroups -3MCreate -3MAssign -3MRegisterLogGroup -3MFindOrRegisterLogGroup -3PParamForEnabledLogGroups rw -#lazutils.LazLoggerBase.TLazLoggerNoOutput #lazutils.LazLoggerBase.TLazLogger -#lazutils.LazClasses.TFreeNotifyingObject #rtl.System.TObject -1VFFreeNotificationList -3MDestroy -3MAddFreeeNotification -3MRemoveFreeeNotification -3MAddFreeNotification -3MRemoveFreeNotification -#lazutils.LazClasses.TRefCountedObject #lazutils.LazClasses.TFreeNotifyingObject -1VFRefCount -1VFInDecRefCount -2MDoFree -2MDoReferenceAdded -2MDoReferenceReleased -2PRefCount r -3MCreate -3MDestroy -3MAddReference -3MReleaseReference -#lazutils.LazClasses.TRefCntObjList #rtl.Classes.TList -2MNotify -#lazutils.LazFileCache.TFileStateCacheItem #rtl.System.TObject -1VFAge -1VFFilename -1VFFlags -1VFPhysicalFilename -1VFTestedFlags -1VFTimeStamp -3MCreate -3MCalcMemSize -3PFilename r -3PPhysicalFilename r -3PFlags r -3PTestedFlags r -3PTimeStamp r -3PAge r -#lazutils.LazFileCache.TFileStateCache #rtl.System.TObject -1VFFiles -1VFTimeStamp -1VFLockCount -1VFChangeTimeStampHandler -1MSetFlag -3MCreate -3MDestroy -3MLock -3MUnlock -3MLocked -3MIncreaseTimeStamp -3MFileExistsCached -3MDirPathExistsCached -3MDirectoryIsWritableCached -3MFileIsExecutableCached -3MFileIsReadableCached -3MFileIsWritableCached -3MFileIsTextCached -3MFileAgeCached -3MGetPhysicalFilenameCached -3MFindFile -3MCheck -3MAddChangeTimeStampHandler -3MRemoveChangeTimeStampHandler -3MCalcMemSize -3PTimeStamp r -#lazutils.Laz2_DOM.EDOMError #rtl.sysutils.Exception -3VCode -3MCreate -#lazutils.Laz2_DOM.EDOMIndexSize #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMHierarchyRequest #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMWrongDocument #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMNotFound #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMNotSupported #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMInUseAttribute #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMInvalidState #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMSyntax #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMInvalidModification #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMNamespace #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.EDOMInvalidAccess #lazutils.Laz2_DOM.EDOMError -3MCreate -#lazutils.Laz2_DOM.TDOMNodeEnumerator #rtl.System.TObject -1VFNode -1VFCurrent + EasyLazFreeType easylazfreetype/index.html + FreeTypeInformationStr easylazfreetype/freetypeinformationstr.html + FreeTypeMinPointSize easylazfreetype/freetypeminpointsize.html + TGlyphRenderQuality easylazfreetype/tglyphrenderquality.html + ArrayOfSingle easylazfreetype/arrayofsingle.html + TCharPosition easylazfreetype/tcharposition.html + ArrayOfCharPosition easylazfreetype/arrayofcharposition.html + TFreeTypeAlignment easylazfreetype/tfreetypealignment.html + TFreeTypeAlignments easylazfreetype/tfreetypealignments.html + TFreeTypeInformation easylazfreetype/tfreetypeinformation.html + TFreeTypeStyle easylazfreetype/tfreetypestyle.html + TFreeTypeStyles easylazfreetype/tfreetypestyles.html + TFreeTypeWordBreakHandler easylazfreetype/tfreetypewordbreakhandler.html + TFontCollectionItemDestroyProc easylazfreetype/tfontcollectionitemdestroyproc.html + TFontCollectionItemDestroyListener easylazfreetype/tfontcollectionitemdestroylistener.html + ArrayOfFontCollectionItemDestroyListener easylazfreetype/arrayoffontcollectionitemdestroylistener.html + TOnRenderTextHandler easylazfreetype/tonrendertexthandler.html + ArrayOfString easylazfreetype/arrayofstring.html + TCustomFontCollectionItem easylazfreetype/tcustomfontcollectionitem.html + FFamily easylazfreetype/tcustomfontcollectionitem.ffamily.html + GetBold easylazfreetype/tcustomfontcollectionitem.getbold.html + GetInformation easylazfreetype/tcustomfontcollectionitem.getinformation.html + GetItalic easylazfreetype/tcustomfontcollectionitem.getitalic.html + GetStyleCount easylazfreetype/tcustomfontcollectionitem.getstylecount.html + GetStyles easylazfreetype/tcustomfontcollectionitem.getstyles.html + GetFilename easylazfreetype/tcustomfontcollectionitem.getfilename.html + GetVersionNumber easylazfreetype/tcustomfontcollectionitem.getversionnumber.html + GetStyle easylazfreetype/tcustomfontcollectionitem.getstyle.html + NotifyDestroy easylazfreetype/tcustomfontcollectionitem.notifydestroy.html + HasStyle easylazfreetype/tcustomfontcollectionitem.hasstyle.html + CreateFont easylazfreetype/tcustomfontcollectionitem.createfont.html + QueryFace easylazfreetype/tcustomfontcollectionitem.queryface.html + ReleaseFace easylazfreetype/tcustomfontcollectionitem.releaseface.html + Styles easylazfreetype/tcustomfontcollectionitem.styles.html + Italic easylazfreetype/tcustomfontcollectionitem.italic.html + Bold easylazfreetype/tcustomfontcollectionitem.bold.html + Filename easylazfreetype/tcustomfontcollectionitem.filename.html + Information easylazfreetype/tcustomfontcollectionitem.information.html + VersionNumber easylazfreetype/tcustomfontcollectionitem.versionnumber.html + Style easylazfreetype/tcustomfontcollectionitem.style.html + StyleCount easylazfreetype/tcustomfontcollectionitem.stylecount.html + Family easylazfreetype/tcustomfontcollectionitem.family.html + IFreeTypeFontEnumerator easylazfreetype/ifreetypefontenumerator.html + MoveNext easylazfreetype/ifreetypefontenumerator.movenext.html + GetCurrent easylazfreetype/ifreetypefontenumerator.getcurrent.html + Current easylazfreetype/ifreetypefontenumerator.current.html + TCustomFamilyCollectionItem easylazfreetype/tcustomfamilycollectionitem.html + GetFontByIndex easylazfreetype/tcustomfamilycollectionitem.getfontbyindex.html + GetStyle easylazfreetype/tcustomfamilycollectionitem.getstyle.html + GetStyles easylazfreetype/tcustomfamilycollectionitem.getstyles.html + GetFamilyName easylazfreetype/tcustomfamilycollectionitem.getfamilyname.html + GetFontCount easylazfreetype/tcustomfamilycollectionitem.getfontcount.html + GetStyleCount easylazfreetype/tcustomfamilycollectionitem.getstylecount.html + GetFont easylazfreetype/tcustomfamilycollectionitem.getfont.html + GetFontIndex easylazfreetype/tcustomfamilycollectionitem.getfontindex.html + HasStyle easylazfreetype/tcustomfamilycollectionitem.hasstyle.html + FamilyName easylazfreetype/tcustomfamilycollectionitem.familyname.html + Font easylazfreetype/tcustomfamilycollectionitem.font.html + FontCount easylazfreetype/tcustomfamilycollectionitem.fontcount.html + Style easylazfreetype/tcustomfamilycollectionitem.style.html + StyleCount easylazfreetype/tcustomfamilycollectionitem.stylecount.html + Styles easylazfreetype/tcustomfamilycollectionitem.styles.html + IFreeTypeFamilyEnumerator easylazfreetype/ifreetypefamilyenumerator.html + MoveNext easylazfreetype/ifreetypefamilyenumerator.movenext.html + GetCurrent easylazfreetype/ifreetypefamilyenumerator.getcurrent.html + Current easylazfreetype/ifreetypefamilyenumerator.current.html + TCustomFreeTypeFontCollection easylazfreetype/tcustomfreetypefontcollection.html + GetFont easylazfreetype/tcustomfreetypefontcollection.getfont.html + GetFamily easylazfreetype/tcustomfreetypefontcollection.getfamily.html + GetFamilyCount easylazfreetype/tcustomfreetypefontcollection.getfamilycount.html + GetFontCount easylazfreetype/tcustomfreetypefontcollection.getfontcount.html + Create easylazfreetype/tcustomfreetypefontcollection.create.html + Clear easylazfreetype/tcustomfreetypefontcollection.clear.html + BeginUpdate easylazfreetype/tcustomfreetypefontcollection.beginupdate.html + AddFolder easylazfreetype/tcustomfreetypefontcollection.addfolder.html + RemoveFolder easylazfreetype/tcustomfreetypefontcollection.removefolder.html + AddFile easylazfreetype/tcustomfreetypefontcollection.addfile.html + RemoveFile easylazfreetype/tcustomfreetypefontcollection.removefile.html + AddStream easylazfreetype/tcustomfreetypefontcollection.addstream.html + EndUpdate easylazfreetype/tcustomfreetypefontcollection.endupdate.html + FontFileEnumerator easylazfreetype/tcustomfreetypefontcollection.fontfileenumerator.html + FamilyEnumerator easylazfreetype/tcustomfreetypefontcollection.familyenumerator.html + FontFileCount easylazfreetype/tcustomfreetypefontcollection.fontfilecount.html + FontFile easylazfreetype/tcustomfreetypefontcollection.fontfile.html + FamilyCount easylazfreetype/tcustomfreetypefontcollection.familycount.html + Family easylazfreetype/tcustomfreetypefontcollection.family.html + TFreeTypeRenderableFont easylazfreetype/tfreetyperenderablefont.html + FWordBreakHandler easylazfreetype/tfreetyperenderablefont.fwordbreakhandler.html + FOnRenderText easylazfreetype/tfreetyperenderablefont.fonrendertext.html + GetClearType easylazfreetype/tfreetyperenderablefont.getcleartype.html + SetClearType easylazfreetype/tfreetyperenderablefont.setcleartype.html + GetLineFullHeight easylazfreetype/tfreetyperenderablefont.getlinefullheight.html + GetAscent easylazfreetype/tfreetyperenderablefont.getascent.html + GetDescent easylazfreetype/tfreetyperenderablefont.getdescent.html + GetLineSpacing easylazfreetype/tfreetyperenderablefont.getlinespacing.html + DefaultWordBreakHandler easylazfreetype/tfreetyperenderablefont.defaultwordbreakhandler.html + GetHinted easylazfreetype/tfreetyperenderablefont.gethinted.html + SetHinted easylazfreetype/tfreetyperenderablefont.sethinted.html + UnderlineDecoration easylazfreetype/tfreetyperenderablefont.underlinedecoration.html + StrikeOutDecoration easylazfreetype/tfreetyperenderablefont.strikeoutdecoration.html + TextWidth easylazfreetype/tfreetyperenderablefont.textwidth.html + TextHeight easylazfreetype/tfreetyperenderablefont.textheight.html + CharWidthFromUnicode easylazfreetype/tfreetyperenderablefont.charwidthfromunicode.html + SplitText easylazfreetype/tfreetyperenderablefont.splittext.html + GetTextSize easylazfreetype/tfreetyperenderablefont.gettextsize.html + RenderText easylazfreetype/tfreetyperenderablefont.rendertext.html + ClearType easylazfreetype/tfreetyperenderablefont.cleartype.html + Ascent easylazfreetype/tfreetyperenderablefont.ascent.html + Descent easylazfreetype/tfreetyperenderablefont.descent.html + LineSpacing easylazfreetype/tfreetyperenderablefont.linespacing.html + LineFullHeight easylazfreetype/tfreetyperenderablefont.linefullheight.html + Hinted easylazfreetype/tfreetyperenderablefont.hinted.html + OnWordBreak easylazfreetype/tfreetyperenderablefont.onwordbreak.html + OnRenderText easylazfreetype/tfreetyperenderablefont.onrendertext.html + TFreeTypeDrawer easylazfreetype/tfreetypedrawer.html + DrawText easylazfreetype/tfreetypedrawer.drawtext.html + DrawTextWordBreak easylazfreetype/tfreetypedrawer.drawtextwordbreak.html + DrawTextRect easylazfreetype/tfreetypedrawer.drawtextrect.html + DrawGlyph easylazfreetype/tfreetypedrawer.drawglyph.html + TFreeTypeFont easylazfreetype/tfreetypefont.html + FFace easylazfreetype/tfreetypefont.fface.html + FFaceItem easylazfreetype/tfreetypefont.ffaceitem.html + FFaceLoaded easylazfreetype/tfreetypefont.ffaceloaded.html + FInstance easylazfreetype/tfreetypefont.finstance.html + FInstanceCreated easylazfreetype/tfreetypefont.finstancecreated.html + FGlyphTable easylazfreetype/tfreetypefont.fglyphtable.html + FCharMap easylazfreetype/tfreetypefont.fcharmap.html + FCharmapOk easylazfreetype/tfreetypefont.fcharmapok.html + FCharmapSymbol easylazfreetype/tfreetypefont.fcharmapsymbol.html + FAscentValue easylazfreetype/tfreetypefont.fascentvalue.html + FDescentValue easylazfreetype/tfreetypefont.fdescentvalue.html + FLineGapValue easylazfreetype/tfreetypefont.flinegapvalue.html + FLargeLineGapValue easylazfreetype/tfreetypefont.flargelinegapvalue.html + FCapHeight easylazfreetype/tfreetypefont.fcapheight.html + FaceChanged easylazfreetype/tfreetypefont.facechanged.html + GetClearType easylazfreetype/tfreetypefont.getcleartype.html + SetClearType easylazfreetype/tfreetypefont.setcleartype.html + GetLineFullHeight easylazfreetype/tfreetypefont.getlinefullheight.html + GetAscent easylazfreetype/tfreetypefont.getascent.html + GetDescent easylazfreetype/tfreetypefont.getdescent.html + GetLineSpacing easylazfreetype/tfreetypefont.getlinespacing.html + GetCapHeight easylazfreetype/tfreetypefont.getcapheight.html + SetHinted easylazfreetype/tfreetypefont.sethinted.html + GetHinted easylazfreetype/tfreetypefont.gethinted.html + OnDestroyFontItem easylazfreetype/tfreetypefont.ondestroyfontitem.html + FetchNames easylazfreetype/tfreetypefont.fetchnames.html + GetCollection easylazfreetype/tfreetypefont.getcollection.html + CheckFace easylazfreetype/tfreetypefont.checkface.html + Quality easylazfreetype/tfreetypefont.quality.html + SmallLinePadding easylazfreetype/tfreetypefont.smalllinepadding.html + Create easylazfreetype/tfreetypefont.create.html + Destroy easylazfreetype/tfreetypefont.destroy.html + AccessFromStream easylazfreetype/tfreetypefont.accessfromstream.html + RenderText easylazfreetype/tfreetypefont.rendertext.html + RenderGlyph easylazfreetype/tfreetypefont.renderglyph.html + SetNameAndStyle easylazfreetype/tfreetypefont.setnameandstyle.html + TextWidth easylazfreetype/tfreetypefont.textwidth.html + TextHeight easylazfreetype/tfreetypefont.textheight.html + CharWidthFromUnicode easylazfreetype/tfreetypefont.charwidthfromunicode.html + CharWidthFromGlyph easylazfreetype/tfreetypefont.charwidthfromglyph.html + CharsWidth easylazfreetype/tfreetypefont.charswidth.html + CharsPosition easylazfreetype/tfreetypefont.charsposition.html + CheckInstance easylazfreetype/tfreetypefont.checkinstance.html + Name easylazfreetype/tfreetypefont.name.html + DPI easylazfreetype/tfreetypefont.dpi.html + SizeInPoints easylazfreetype/tfreetypefont.sizeinpoints.html + SizeInPixels easylazfreetype/tfreetypefont.sizeinpixels.html + CapHeight easylazfreetype/tfreetypefont.capheight.html + Glyph easylazfreetype/tfreetypefont.glyph.html + GlyphCount easylazfreetype/tfreetypefont.glyphcount.html + CharIndex easylazfreetype/tfreetypefont.charindex.html + Hinted easylazfreetype/tfreetypefont.hinted.html + WidthFactor easylazfreetype/tfreetypefont.widthfactor.html + LineFullHeight easylazfreetype/tfreetypefont.linefullheight.html + Information easylazfreetype/tfreetypefont.information.html + VersionNumber easylazfreetype/tfreetypefont.versionnumber.html + Family easylazfreetype/tfreetypefont.family.html + Collection easylazfreetype/tfreetypefont.collection.html + StyleAsString easylazfreetype/tfreetypefont.styleasstring.html + Style easylazfreetype/tfreetypefont.style.html + TFreeTypeGlyph easylazfreetype/tfreetypeglyph.html + Create easylazfreetype/tfreetypeglyph.create.html + RenderDirectly easylazfreetype/tfreetypeglyph.renderdirectly.html + Destroy easylazfreetype/tfreetypeglyph.destroy.html + Loaded easylazfreetype/tfreetypeglyph.loaded.html + Data easylazfreetype/tfreetypeglyph.data.html + Index easylazfreetype/tfreetypeglyph.index.html + Bounds easylazfreetype/tfreetypeglyph.bounds.html + BoundsWithOffset easylazfreetype/tfreetypeglyph.boundswithoffset.html + Advance easylazfreetype/tfreetypeglyph.advance.html + TFreeTypeRasterMap easylazfreetype/tfreetyperastermap.html + map easylazfreetype/tfreetyperastermap.map.html + FRasterizer easylazfreetype/tfreetyperastermap.frasterizer.html + GetHeight easylazfreetype/tfreetyperastermap.getheight.html + GetWidth easylazfreetype/tfreetyperastermap.getwidth.html + GetScanLine easylazfreetype/tfreetyperastermap.getscanline.html + Init easylazfreetype/tfreetyperastermap.init.html + Create easylazfreetype/tfreetyperastermap.create.html + Clear easylazfreetype/tfreetyperastermap.clear.html + Fill easylazfreetype/tfreetyperastermap.fill.html + RenderGlyph easylazfreetype/tfreetyperastermap.renderglyph.html + ScanMoveTo easylazfreetype/tfreetyperastermap.scanmoveto.html + Destroy easylazfreetype/tfreetyperastermap.destroy.html + Width easylazfreetype/tfreetyperastermap.width.html + Height easylazfreetype/tfreetyperastermap.height.html + ScanLine easylazfreetype/tfreetyperastermap.scanline.html + TFreeTypeMonochromeMap easylazfreetype/tfreetypemonochromemap.html + Init easylazfreetype/tfreetypemonochromemap.init.html + RenderGlyph easylazfreetype/tfreetypemonochromemap.renderglyph.html + ScanMoveTo easylazfreetype/tfreetypemonochromemap.scanmoveto.html + ScanNextPixel easylazfreetype/tfreetypemonochromemap.scannextpixel.html + GetPixel easylazfreetype/tfreetypemonochromemap.getpixel.html + SetPixel easylazfreetype/tfreetypemonochromemap.setpixel.html + GetPixelsInRect easylazfreetype/tfreetypemonochromemap.getpixelsinrect.html + GetPixelsInHorizline easylazfreetype/tfreetypemonochromemap.getpixelsinhorizline.html + TogglePixel easylazfreetype/tfreetypemonochromemap.togglepixel.html + TFreeTypeGrayscaleMap easylazfreetype/tfreetypegrayscalemap.html + Init easylazfreetype/tfreetypegrayscalemap.init.html + RenderQuality easylazfreetype/tfreetypegrayscalemap.renderquality.html + RenderGlyph easylazfreetype/tfreetypegrayscalemap.renderglyph.html + ScanMoveTo easylazfreetype/tfreetypegrayscalemap.scanmoveto.html + ScanNextPixel easylazfreetype/tfreetypegrayscalemap.scannextpixel.html + GetPixel easylazfreetype/tfreetypegrayscalemap.getpixel.html + SetPixel easylazfreetype/tfreetypegrayscalemap.setpixel.html + XorPixel easylazfreetype/tfreetypegrayscalemap.xorpixel.html + FontCollectionItemDestroyListener easylazfreetype/fontcollectionitemdestroylistener.html + StylesToArray easylazfreetype/stylestoarray.html + FontCollection easylazfreetype/fontcollection.html + LazFreeType lazfreetype/index.html + TT_Load_Scale_Glyph lazfreetype/tt_load_scale_glyph.html + TT_Load_Hint_Glyph lazfreetype/tt_load_hint_glyph.html + TT_Load_Debug lazfreetype/tt_load_debug.html + TT_Load_Default lazfreetype/tt_load_default.html + TT_Init_FreeType lazfreetype/tt_init_freetype.html + TT_Done_FreeType lazfreetype/tt_done_freetype.html + TT_Set_Raster_Palette lazfreetype/tt_set_raster_palette.html + TT_Open_Face lazfreetype/tt_open_face.html + TT_Open_Collection lazfreetype/tt_open_collection.html + TT_Get_Face_Properties lazfreetype/tt_get_face_properties.html + TT_Set_Face_Pointer lazfreetype/tt_set_face_pointer.html + TT_Get_Face_Pointer lazfreetype/tt_get_face_pointer.html + TT_Close_Face lazfreetype/tt_close_face.html + TT_New_Instance lazfreetype/tt_new_instance.html + TT_Set_Instance_Resolutions lazfreetype/tt_set_instance_resolutions.html + TT_Set_Instance_PointSize lazfreetype/tt_set_instance_pointsize.html + TT_Set_Instance_CharSize lazfreetype/tt_set_instance_charsize.html + TT_Set_Instance_CharSizes lazfreetype/tt_set_instance_charsizes.html + TT_Set_Instance_PixelSizes lazfreetype/tt_set_instance_pixelsizes.html + TT_Set_Instance_Transforms lazfreetype/tt_set_instance_transforms.html + TT_Get_Instance_Metrics lazfreetype/tt_get_instance_metrics.html + TT_Set_Instance_Pointer lazfreetype/tt_set_instance_pointer.html + TT_Get_Instance_Pointer lazfreetype/tt_get_instance_pointer.html + TT_Done_Instance lazfreetype/tt_done_instance.html + TT_New_Glyph lazfreetype/tt_new_glyph.html + TT_Done_Glyph lazfreetype/tt_done_glyph.html + TT_Load_Glyph lazfreetype/tt_load_glyph.html + TT_Get_Glyph_Outline lazfreetype/tt_get_glyph_outline.html + TT_Get_Glyph_Metrics lazfreetype/tt_get_glyph_metrics.html + TT_Get_Glyph_Big_Metrics lazfreetype/tt_get_glyph_big_metrics.html + TT_Get_Glyph_Bitmap lazfreetype/tt_get_glyph_bitmap.html + TT_Get_Glyph_Pixmap lazfreetype/tt_get_glyph_pixmap.html + TT_Get_Glyph_Pixmap_HQ lazfreetype/tt_get_glyph_pixmap_hq.html + TT_Render_Directly_Glyph_Gray lazfreetype/tt_render_directly_glyph_gray.html + TT_Render_Directly_Glyph_HQ lazfreetype/tt_render_directly_glyph_hq.html + TT_Translate_Outline lazfreetype/tt_translate_outline.html + TT_Transform_Outline lazfreetype/tt_transform_outline.html + TT_Transform_Vector lazfreetype/tt_transform_vector.html + TT_Get_Outline_Bitmap lazfreetype/tt_get_outline_bitmap.html + TT_Get_Outline_Pixmap lazfreetype/tt_get_outline_pixmap.html + TT_Get_Outline_Pixmap_HQ lazfreetype/tt_get_outline_pixmap_hq.html + TT_Render_Directly_Outline_Gray lazfreetype/tt_render_directly_outline_gray.html + TT_Render_Directly_Outline_HQ lazfreetype/tt_render_directly_outline_hq.html + TT_Get_Outline_BBox lazfreetype/tt_get_outline_bbox.html + TT_New_Outline lazfreetype/tt_new_outline.html + TT_Copy_Outline lazfreetype/tt_copy_outline.html + TT_Clone_Outline lazfreetype/tt_clone_outline.html + TT_Done_Outline lazfreetype/tt_done_outline.html + TT_Get_CharMap_Count lazfreetype/tt_get_charmap_count.html + TT_Get_CharMap_ID lazfreetype/tt_get_charmap_id.html + TT_Get_CharMap lazfreetype/tt_get_charmap.html + TT_Char_Index lazfreetype/tt_char_index.html + TT_Get_Name_Count lazfreetype/tt_get_name_count.html + TT_Get_Name_ID lazfreetype/tt_get_name_id.html + TT_Get_Name_String lazfreetype/tt_get_name_string.html + TT_Get_Font_Data lazfreetype/tt_get_font_data.html + TTTypes tttypes/index.html + TT_Flag_On_Curve tttypes/tt_flag_on_curve.html + TT_Flow_Down tttypes/tt_flow_down.html + TT_Flow_Up tttypes/tt_flow_up.html + TT_Err_Ok tttypes/tt_err_ok.html + TT_Err_Invalid_Face_Handle tttypes/tt_err_invalid_face_handle.html + TT_Err_Invalid_Instance_Handle tttypes/tt_err_invalid_instance_handle.html + TT_Err_Invalid_Glyph_Handle tttypes/tt_err_invalid_glyph_handle.html + TT_Err_Invalid_CharMap_Handle tttypes/tt_err_invalid_charmap_handle.html + TT_Err_Invalid_Result_Address tttypes/tt_err_invalid_result_address.html + TT_Err_Invalid_Glyph_Index tttypes/tt_err_invalid_glyph_index.html + TT_Err_Invalid_Argument tttypes/tt_err_invalid_argument.html + TT_Err_Could_Not_Open_File tttypes/tt_err_could_not_open_file.html + TT_Err_File_Is_Not_Collection tttypes/tt_err_file_is_not_collection.html + TT_Err_Table_Missing tttypes/tt_err_table_missing.html + TT_Err_Invalid_Horiz_Metrics tttypes/tt_err_invalid_horiz_metrics.html + TT_Err_Invalid_Vert_Metrics tttypes/tt_err_invalid_vert_metrics.html + TT_Err_Invalid_CharMap_Format tttypes/tt_err_invalid_charmap_format.html + TT_Err_Invalid_File_Format tttypes/tt_err_invalid_file_format.html + TT_Err_File_Error tttypes/tt_err_file_error.html + TT_Err_Invalid_Engine tttypes/tt_err_invalid_engine.html + TT_Err_Too_Many_Extensions tttypes/tt_err_too_many_extensions.html + TT_Err_Extensions_Unsupported tttypes/tt_err_extensions_unsupported.html + TT_Err_Invalid_Extension_Id tttypes/tt_err_invalid_extension_id.html + TT_Err_No_Vertical_Data tttypes/tt_err_no_vertical_data.html + TT_Err_Max_Profile_Missing tttypes/tt_err_max_profile_missing.html + TT_Err_Header_Table_Missing tttypes/tt_err_header_table_missing.html + TT_Err_Horiz_Header_Missing tttypes/tt_err_horiz_header_missing.html + TT_Err_Locations_Missing tttypes/tt_err_locations_missing.html + TT_Err_Name_Table_Missing tttypes/tt_err_name_table_missing.html + TT_Err_CMap_Table_Missing tttypes/tt_err_cmap_table_missing.html + TT_Err_Hmtx_Table_Missing tttypes/tt_err_hmtx_table_missing.html + TT_Err_OS2_Table_Missing tttypes/tt_err_os2_table_missing.html + TT_Err_Post_Table_Missing tttypes/tt_err_post_table_missing.html + TT_Err_Out_Of_Memory tttypes/tt_err_out_of_memory.html + TT_Err_Invalid_File_Offset tttypes/tt_err_invalid_file_offset.html + TT_Err_Invalid_File_Read tttypes/tt_err_invalid_file_read.html + TT_Err_Invalid_Frame_Access tttypes/tt_err_invalid_frame_access.html + TT_Err_Too_Many_Points tttypes/tt_err_too_many_points.html + TT_Err_Too_Many_Contours tttypes/tt_err_too_many_contours.html + TT_Err_Invalid_Composite tttypes/tt_err_invalid_composite.html + TT_Err_Too_Many_Ins tttypes/tt_err_too_many_ins.html + TT_Err_Invalid_Opcode tttypes/tt_err_invalid_opcode.html + TT_Err_Too_Few_Arguments tttypes/tt_err_too_few_arguments.html + TT_Err_Stack_Overflow tttypes/tt_err_stack_overflow.html + TT_Err_Code_Overflow tttypes/tt_err_code_overflow.html + TT_Err_Bad_Argument tttypes/tt_err_bad_argument.html + TT_Err_Divide_By_Zero tttypes/tt_err_divide_by_zero.html + TT_Err_Storage_Overflow tttypes/tt_err_storage_overflow.html + TT_Err_Cvt_Overflow tttypes/tt_err_cvt_overflow.html + TT_Err_Invalid_Reference tttypes/tt_err_invalid_reference.html + TT_Err_Invalid_Distance tttypes/tt_err_invalid_distance.html + TT_Err_Interpolate_Twilight tttypes/tt_err_interpolate_twilight.html + TT_Err_Debug_Opcode tttypes/tt_err_debug_opcode.html + TT_Err_ENDF_In_Exec_Stream tttypes/tt_err_endf_in_exec_stream.html + TT_Err_Out_Of_CodeRanges tttypes/tt_err_out_of_coderanges.html + TT_Err_Nested_DEFs tttypes/tt_err_nested_defs.html + TT_Err_Invalid_CodeRange tttypes/tt_err_invalid_coderange.html + TT_Err_Invalid_Displacement tttypes/tt_err_invalid_displacement.html + TT_Err_Execution_Too_Long tttypes/tt_err_execution_too_long.html + TT_Err_Too_Many_FuncDefs tttypes/tt_err_too_many_funcdefs.html + TT_Err_Too_Many_InsDefs tttypes/tt_err_too_many_insdefs.html + TT_Err_Nested_Frame_Access tttypes/tt_err_nested_frame_access.html + TT_Err_Invalid_Cache_List tttypes/tt_err_invalid_cache_list.html + TT_Err_Could_Not_Find_Context tttypes/tt_err_could_not_find_context.html + TT_Err_UNlisted_Object tttypes/tt_err_unlisted_object.html + TT_Err_Raster_Pool_Overflow tttypes/tt_err_raster_pool_overflow.html + TT_Err_Raster_Negative_Height tttypes/tt_err_raster_negative_height.html + TT_Err_Invalid_Value tttypes/tt_err_invalid_value.html + TT_Err_Raster_Not_Initialised tttypes/tt_err_raster_not_initialised.html + Success tttypes/success.html + Failure tttypes/failure.html + TError tttypes/terror.html + TT_Int tttypes/tt_int.html + TT_Long tttypes/tt_long.html + TT_ULong tttypes/tt_ulong.html + TT_Short tttypes/tt_short.html + TT_UShort tttypes/tt_ushort.html + TT_Fixed tttypes/tt_fixed.html + TT_FWord tttypes/tt_fword.html + TT_UFWord tttypes/tt_ufword.html + TT_F2Dot14 tttypes/tt_f2dot14.html + TT_F26Dot6 tttypes/tt_f26dot6.html + TT_Pos tttypes/tt_pos.html + TT_UnitVector tttypes/tt_unitvector.html + TT_Vector tttypes/tt_vector.html + TT_Matrix tttypes/tt_matrix.html + TT_BBox tttypes/tt_bbox.html + TT_Error tttypes/tt_error.html + TT_Points_Table tttypes/tt_points_table.html + TT_Points tttypes/tt_points.html + TT_Coordinates tttypes/tt_coordinates.html + TT_PCoordinates tttypes/tt_pcoordinates.html + TT_TouchTable tttypes/tt_touchtable.html + TT_PTouchTable tttypes/tt_ptouchtable.html + TT_ConStarts tttypes/tt_constarts.html + TT_PConStarts tttypes/tt_pconstarts.html + TT_Outline tttypes/tt_outline.html + TT_Glyph_Metrics tttypes/tt_glyph_metrics.html + TT_Big_Glyph_Metrics tttypes/tt_big_glyph_metrics.html + TDirectRenderingFunction tttypes/tdirectrenderingfunction.html + TT_Instance_Metrics tttypes/tt_instance_metrics.html + TT_Raster_Map tttypes/tt_raster_map.html + TT_Header tttypes/tt_header.html + TT_Horizontal_Header tttypes/tt_horizontal_header.html + TT_Vertical_Header tttypes/tt_vertical_header.html + TT_OS2 tttypes/tt_os2.html + TT_Postscript tttypes/tt_postscript.html + TT_Face_Properties tttypes/tt_face_properties.html + TT_Stream tttypes/tt_stream.html + TT_Face tttypes/tt_face.html + TT_Instance tttypes/tt_instance.html + TT_Glyph tttypes/tt_glyph.html + TT_CharMap tttypes/tt_charmap.html + TT_Gray_Palette tttypes/tt_gray_palette.html + PTT_Gray_Palette tttypes/ptt_gray_palette.html + UShort tttypes/ushort.html + Short tttypes/short.html + Long tttypes/long.html + ULong tttypes/ulong.html + Int tttypes/int.html + TByteArray tttypes/tbytearray.html + PByte tttypes/pbyte.html + TShortArray tttypes/tshortarray.html + PShort tttypes/pshort.html + TUShortArray tttypes/tushortarray.html + PUShort tttypes/pushort.html + TStorage tttypes/tstorage.html + PStorage tttypes/pstorage.html + PLong tttypes/plong.html + PULong tttypes/pulong.html + TCoordinates tttypes/tcoordinates.html + PCoordinates tttypes/pcoordinates.html + PTouchTable tttypes/ptouchtable.html + TVecRecord tttypes/tvecrecord.html + TFreeTypeCustomRasterizer tttypes/tfreetypecustomrasterizer.html + Render_Glyph tttypes/tfreetypecustomrasterizer.render_glyph.html + Render_Gray_Glyph tttypes/tfreetypecustomrasterizer.render_gray_glyph.html + Render_Gray_Glyph_HQ tttypes/tfreetypecustomrasterizer.render_gray_glyph_hq.html + Render_Directly_Gray_Glyph tttypes/tfreetypecustomrasterizer.render_directly_gray_glyph.html + Render_Directly_Gray_Glyph_HQ tttypes/tfreetypecustomrasterizer.render_directly_gray_glyph_hq.html + Set_Raster_Palette tttypes/tfreetypecustomrasterizer.set_raster_palette.html + TTRASTER ttraster/index.html + Function_Sweep_Init ttraster/function_sweep_init.html + Function_Sweep_Span ttraster/function_sweep_span.html + Function_Sweep_Step ttraster/function_sweep_step.html + TFreeTypeRasterizer ttraster/tfreetyperasterizer.html + Render_Glyph ttraster/tfreetyperasterizer.render_glyph.html + Render_Gray_Glyph ttraster/tfreetyperasterizer.render_gray_glyph.html + Render_Gray_Glyph_HQ ttraster/tfreetyperasterizer.render_gray_glyph_hq.html + Render_Directly_Gray_Glyph ttraster/tfreetyperasterizer.render_directly_gray_glyph.html + Render_Directly_Gray_Glyph_HQ ttraster/tfreetyperasterizer.render_directly_gray_glyph_hq.html + Set_Raster_Palette ttraster/tfreetyperasterizer.set_raster_palette.html + Create ttraster/tfreetyperasterizer.create.html + Destroy ttraster/tfreetyperasterizer.destroy.html + IncludeFullGrainMin ttraster/includefullgrainmin.html + IncludeFullGrainMax ttraster/includefullgrainmax.html + TTRaster_Init ttraster/ttraster_init.html + TTRaster_Done ttraster/ttraster_done.html + TTGetDefaultRasterizer ttraster/ttgetdefaultrasterizer.html + TTProfile ttprofile/index.html + PoolMaxCapacity ttprofile/poolmaxcapacity.html + PoolIdleCapacity ttprofile/poolidlecapacity.html + TCurveDirection ttprofile/tcurvedirection.html + TPoint ttprofile/tpoint.html + TBezierStack ttprofile/tbezierstack.html + PBezierStack ttprofile/pbezierstack.html + TRenderPool ttprofile/trenderpool.html + Precision ttprofile/trenderpool.precision.html + PrecisionHalf ttprofile/trenderpool.precisionhalf.html + BezierPrecision ttprofile/trenderpool.bezierprecision.html + BoundsMinY ttprofile/trenderpool.boundsminy.html + BoundsMaxY ttprofile/trenderpool.boundsmaxy.html + scaleShift ttprofile/trenderpool.scaleshift.html + Bezier_Down ttprofile/trenderpool.bezier_down.html + Bezier_State ttprofile/trenderpool.bezier_state.html + Bezier_To ttprofile/trenderpool.bezier_to.html + Bezier_Up ttprofile/trenderpool.bezier_up.html + CEILING ttprofile/trenderpool.ceiling.html + DecomposeCurve ttprofile/trenderpool.decomposecurve.html + FLOOR ttprofile/trenderpool.floor.html + FRAC ttprofile/trenderpool.frac.html + GetCapacity ttprofile/trenderpool.getcapacity.html + Line_Down ttprofile/trenderpool.line_down.html + Line_To ttprofile/trenderpool.line_to.html + Line_Up ttprofile/trenderpool.line_up.html + Move_To ttprofile/trenderpool.move_to.html + PushBezier ttprofile/trenderpool.pushbezier.html + SCALED ttprofile/trenderpool.scaled.html + Split_Bezier ttprofile/trenderpool.split_bezier.html + TRUNC ttprofile/trenderpool.trunc.html + RequireCapacity ttprofile/trenderpool.requirecapacity.html + PushValue ttprofile/trenderpool.pushvalue.html + Capacity ttprofile/trenderpool.capacity.html + Joint ttprofile/trenderpool.joint.html + Fresh ttprofile/trenderpool.fresh.html + cProfile ttprofile/trenderpool.cprofile.html + ProfileColl ttprofile/trenderpool.profilecoll.html + LastX ttprofile/trenderpool.lastx.html + LastY ttprofile/trenderpool.lasty.html + CurveDir ttprofile/trenderpool.curvedir.html + Arcs ttprofile/trenderpool.arcs.html + CurArc ttprofile/trenderpool.curarc.html + data ttprofile/trenderpool.data.html + position ttprofile/trenderpool.position.html + Create ttprofile/trenderpool.create.html + Destroy ttprofile/trenderpool.destroy.html + SetPrecision ttprofile/trenderpool.setprecision.html + SetBounds ttprofile/trenderpool.setbounds.html + SetScaleShift ttprofile/trenderpool.setscaleshift.html + Clear ttprofile/trenderpool.clear.html + ReduceCapacity ttprofile/trenderpool.reducecapacity.html + Convert_Glyph ttprofile/trenderpool.convert_glyph.html + TProfile ttprofile/tprofile.html + Pool ttprofile/tprofile.pool.html + Flow ttprofile/tprofile.flow.html + Height ttprofile/tprofile.height.html + Start ttprofile/tprofile.start.html + Offset ttprofile/tprofile.offset.html + X ttprofile/tprofile.x.html + nextInContour ttprofile/tprofile.nextincontour.html + nextInColl ttprofile/tprofile.nextincoll.html + nextInList ttprofile/tprofile.nextinlist.html + prevInList ttprofile/tprofile.previnlist.html + Create ttprofile/tprofile.create.html + TProfileCollection ttprofile/tprofilecollection.html + Remove_Profile ttprofile/tprofilecollection.remove_profile.html + Pool ttprofile/tprofilecollection.pool.html + prevProfile ttprofile/tprofilecollection.prevprofile.html + fProfile ttprofile/tprofilecollection.fprofile.html + gProfile ttprofile/tprofilecollection.gprofile.html + nProfs ttprofile/tprofilecollection.nprofs.html + Create ttprofile/tprofilecollection.create.html + Clear ttprofile/tprofilecollection.clear.html + New_Profile ttprofile/tprofilecollection.new_profile.html + End_Profile ttprofile/tprofilecollection.end_profile.html + Destroy ttprofile/tprofilecollection.destroy.html + ProfileList_Init ttprofile/profilelist_init.html + ProfileList_InsertFirstElement ttprofile/profilelist_insertfirstelement.html + ProfileList_AppendToList ttprofile/profilelist_appendtolist.html + ProfileList_Remove ttprofile/profilelist_remove.html + ProfileList_SortByX ttprofile/profilelist_sortbyx.html + ProfileList_SortByStart ttprofile/profilelist_sortbystart.html + ProfileList_Count ttprofile/profilelist_count.html + ProfileList_Split ttprofile/profilelist_split.html + LazUTF8 lazutf8/index.html + TUTF8TrimFlag lazutf8/tutf8trimflag.html + TUTF8TrimFlags lazutf8/tutf8trimflags.html + TConvertResult lazutf8/tconvertresult.html + TConvertOption lazutf8/tconvertoption.html + TConvertOptions lazutf8/tconvertoptions.html + NeedRTLAnsi lazutf8/needrtlansi.html + SetNeedRTLAnsi lazutf8/setneedrtlansi.html + UTF8ToSys lazutf8/utf8tosys.html + SysToUTF8 lazutf8/systoutf8.html + ConsoleToUTF8 lazutf8/consoletoutf8.html + UTF8ToConsole lazutf8/utf8toconsole.html + ParamStrUTF8 lazutf8/paramstrutf8.html + GetEnvironmentStringUTF8 lazutf8/getenvironmentstringutf8.html + GetEnvironmentVariableUTF8 lazutf8/getenvironmentvariableutf8.html + SysErrorMessageUTF8 lazutf8/syserrormessageutf8.html + UTF8CharacterLength lazutf8/utf8characterlength.html + UTF8Length lazutf8/utf8length.html + UTF8CharacterToUnicode lazutf8/utf8charactertounicode.html + UnicodeToUTF8 lazutf8/unicodetoutf8.html + UnicodeToUTF8SkipErrors lazutf8/unicodetoutf8skiperrors.html + UnicodeToUTF8Inline lazutf8/unicodetoutf8inline.html + UTF8ToDoubleByteString lazutf8/utf8todoublebytestring.html + UTF8ToDoubleByte lazutf8/utf8todoublebyte.html + UTF8FindNearestCharStart lazutf8/utf8findnearestcharstart.html + UTF8CharStart lazutf8/utf8charstart.html + UTF8CharToByteIndex lazutf8/utf8chartobyteindex.html + UTF8FixBroken lazutf8/utf8fixbroken.html + UTF8CharacterStrictLength lazutf8/utf8characterstrictlength.html + UTF8CStringToUTF8String lazutf8/utf8cstringtoutf8string.html + UTF8Pos lazutf8/utf8pos.html + UTF8PosP lazutf8/utf8posp.html + UTF8Copy lazutf8/utf8copy.html + UTF8Delete lazutf8/utf8delete.html + UTF8Insert lazutf8/utf8insert.html + UTF8StringReplace lazutf8/utf8stringreplace.html + UTF8LowerCase lazutf8/utf8lowercase.html + UTF8LowerString lazutf8/utf8lowerstring.html + UTF8UpperCase lazutf8/utf8uppercase.html + UTF8UpperString lazutf8/utf8upperstring.html + UTF8SwapCase lazutf8/utf8swapcase.html + FindInvalidUTF8Character lazutf8/findinvalidutf8character.html + ValidUTF8String lazutf8/validutf8string.html + UTF8StringOfChar lazutf8/utf8stringofchar.html + UTF8AddChar lazutf8/utf8addchar.html + UTF8AddCharR lazutf8/utf8addcharr.html + UTF8PadLeft lazutf8/utf8padleft.html + UTF8PadRight lazutf8/utf8padright.html + UTF8PadCenter lazutf8/utf8padcenter.html + UTF8LeftStr lazutf8/utf8leftstr.html + UTF8RightStr lazutf8/utf8rightstr.html + UTF8QuotedStr lazutf8/utf8quotedstr.html + UTF8WrapText lazutf8/utf8wraptext.html + UTF8Trim lazutf8/utf8trim.html + AssignUTF8ListToAnsi lazutf8/assignutf8listtoansi.html + UTF8CompareStr lazutf8/utf8comparestr.html + UTF8CompareStrP lazutf8/utf8comparestrp.html + UTF8CompareText lazutf8/utf8comparetext.html + UTF8CompareStrCollated lazutf8/utf8comparestrcollated.html + CompareStrListUTF8LowerCase lazutf8/comparestrlistutf8lowercase.html + ConvertUTF8ToUTF16 lazutf8/convertutf8toutf16.html + ConvertUTF16ToUTF8 lazutf8/convertutf16toutf8.html + UTF8ToUTF16 lazutf8/utf8toutf16.html + UTF16ToUTF8 lazutf8/utf16toutf8.html + LazGetLanguageIDs lazutf8/lazgetlanguageids.html + LazGetShortLanguageID lazutf8/lazgetshortlanguageid.html + ReplaceSubstring lazutf8/replacesubstring.html + FPUpChars lazutf8/fpupchars.html + FileUtil fileutil/index.html + UTF8FileHeader fileutil/utf8fileheader.html + FilenamesCaseSensitive fileutil/filenamescasesensitive.html + FilenamesLiteral fileutil/filenamesliteral.html + PascalFileExt fileutil/pascalfileext.html + AllDirectoryEntriesMask fileutil/alldirectoryentriesmask.html + TSearchFileInPathFlag fileutil/tsearchfileinpathflag.html + TSearchFileInPathFlags fileutil/tsearchfileinpathflags.html + TFileFoundEvent fileutil/tfilefoundevent.html + TDirectoryFoundEvent fileutil/tdirectoryfoundevent.html + TDirectoryEnterEvent fileutil/tdirectoryenterevent.html + TCopyFileFlag fileutil/tcopyfileflag.html + TCopyFileFlags fileutil/tcopyfileflags.html + TFileIterator fileutil/tfileiterator.html + Stop fileutil/tfileiterator.stop.html + IsDirectory fileutil/tfileiterator.isdirectory.html + FileName fileutil/tfileiterator.filename.html + FileInfo fileutil/tfileiterator.fileinfo.html + Level fileutil/tfileiterator.level.html + Path fileutil/tfileiterator.path.html + Searching fileutil/tfileiterator.searching.html + TFileSearcher fileutil/tfilesearcher.html + DoDirectoryEnter fileutil/tfilesearcher.dodirectoryenter.html + DoDirectoryFound fileutil/tfilesearcher.dodirectoryfound.html + DoFileFound fileutil/tfilesearcher.dofilefound.html + Create fileutil/tfilesearcher.create.html + Search fileutil/tfilesearcher.search.html + MaskSeparator fileutil/tfilesearcher.maskseparator.html + FollowSymLink fileutil/tfilesearcher.followsymlink.html + FileAttribute fileutil/tfilesearcher.fileattribute.html + DirectoryAttribute fileutil/tfilesearcher.directoryattribute.html + OnDirectoryFound fileutil/tfilesearcher.ondirectoryfound.html + OnFileFound fileutil/tfilesearcher.onfilefound.html + OnDirectoryEnter fileutil/tfilesearcher.ondirectoryenter.html + TListFileSearcher fileutil/tlistfilesearcher.html + DoFileFound fileutil/tfilesearcher.dofilefound.html + Create fileutil/tfilesearcher.create.html + TListDirectoriesSearcher fileutil/tlistdirectoriessearcher.html + DoDirectoryFound fileutil/tfilesearcher.dodirectoryfound.html + Create fileutil/tfilesearcher.create.html + NeedRTLAnsi fileutil/needrtlansi.html + SetNeedRTLAnsi fileutil/setneedrtlansi.html + UTF8ToSys fileutil/utf8tosys.html + SysToUTF8 fileutil/systoutf8.html + ConsoleToUTF8 fileutil/consoletoutf8.html + UTF8ToConsole fileutil/utf8toconsole.html + ParamStrUTF8 fileutil/paramstrutf8.html + GetEnvironmentStringUTF8 fileutil/getenvironmentstringutf8.html + GetEnvironmentVariableUTF8 fileutil/getenvironmentvariableutf8.html + SysErrorMessageUTF8 fileutil/syserrormessageutf8.html + GetAppConfigDirUTF8 fileutil/getappconfigdirutf8.html + GetAppConfigFileUTF8 fileutil/getappconfigfileutf8.html + ExtractFileNameOnly fileutil/extractfilenameonly.html + FileExistsUTF8 fileutil/fileexistsutf8.html + FileAgeUTF8 fileutil/fileageutf8.html + DirectoryExistsUTF8 fileutil/directoryexistsutf8.html + FindFirstUTF8 fileutil/findfirstutf8.html + FindNextUTF8 fileutil/findnextutf8.html + FindCloseUTF8 fileutil/findcloseutf8.html + FileSetDateUTF8 fileutil/filesetdateutf8.html + FileGetAttrUTF8 fileutil/filegetattrutf8.html + FileSetAttrUTF8 fileutil/filesetattrutf8.html + DeleteFileUTF8 fileutil/deletefileutf8.html + RenameFileUTF8 fileutil/renamefileutf8.html + FileSearchUTF8 fileutil/filesearchutf8.html + FileIsReadOnlyUTF8 fileutil/fileisreadonlyutf8.html + GetCurrentDirUTF8 fileutil/getcurrentdirutf8.html + SetCurrentDirUTF8 fileutil/setcurrentdirutf8.html + CreateDirUTF8 fileutil/createdirutf8.html + RemoveDirUTF8 fileutil/removedirutf8.html + ForceDirectoriesUTF8 fileutil/forcedirectoriesutf8.html + FileOpenUTF8 fileutil/fileopenutf8.html + FileCreateUTF8 fileutil/filecreateutf8.html + GetTempFilename fileutil/gettempfilename.html + CleanAndExpandFilename fileutil/cleanandexpandfilename.html + CleanAndExpandDirectory fileutil/cleanandexpanddirectory.html + ExpandFileNameUTF8 fileutil/expandfilenameutf8.html + CompareFileExt fileutil/comparefileext.html + CompareFilenames fileutil/comparefilenames.html + CompareFilenamesIgnoreCase fileutil/comparefilenamesignorecase.html + FilenameIsAbsolute fileutil/filenameisabsolute.html + FilenameIsWinAbsolute fileutil/filenameiswinabsolute.html + FilenameIsUnixAbsolute fileutil/filenameisunixabsolute.html + CheckIfFileIsExecutable fileutil/checkiffileisexecutable.html + CheckIfFileIsSymlink fileutil/checkiffileissymlink.html + FileIsReadable fileutil/fileisreadable.html + FileIsWritable fileutil/fileiswritable.html + FileIsText fileutil/fileistext.html + FileIsExecutable fileutil/fileisexecutable.html + FileIsSymlink fileutil/fileissymlink.html + FileIsHardLink fileutil/fileishardlink.html + GetFileDescription fileutil/getfiledescription.html + ReadAllLinks fileutil/readalllinks.html + TryReadAllLinks fileutil/tryreadalllinks.html + TrimFilename fileutil/trimfilename.html + DirPathExists fileutil/dirpathexists.html + ForceDirectory fileutil/forcedirectory.html + DirectoryIsWritable fileutil/directoryiswritable.html + AppendPathDelim fileutil/appendpathdelim.html + ChompPathDelim fileutil/chomppathdelim.html + CreateRelativePath fileutil/createrelativepath.html + ComparePhysicalFilenames fileutil/comparephysicalfilenames.html + ExtractShortPathNameUTF8 fileutil/extractshortpathnameutf8.html + DeleteDirectory fileutil/deletedirectory.html + ProgramDirectory fileutil/programdirectory.html + ExpandUNCFileNameUTF8 fileutil/expanduncfilenameutf8.html + FileSize fileutil/filesize.html + ExtractFileNameWithoutExt fileutil/extractfilenamewithoutext.html + FilenameIsPascalUnit fileutil/filenameispascalunit.html + CreateAbsoluteSearchPath fileutil/createabsolutesearchpath.html + CreateAbsolutePath fileutil/createabsolutepath.html + FileIsInPath fileutil/fileisinpath.html + FileIsInDirectory fileutil/fileisindirectory.html + GetAllFilesMask fileutil/getallfilesmask.html + GetExeExt fileutil/getexeext.html + ReadFileToString fileutil/readfiletostring.html + SearchFileInPath fileutil/searchfileinpath.html + SearchAllFilesInPath fileutil/searchallfilesinpath.html + FindDiskFilename fileutil/finddiskfilename.html + FindDiskFileCaseInsensitive fileutil/finddiskfilecaseinsensitive.html + FindDefaultExecutablePath fileutil/finddefaultexecutablepath.html + FindAllFiles fileutil/findallfiles.html + FindAllDirectories fileutil/findalldirectories.html + CopyFile fileutil/copyfile.html + CopyDirTree fileutil/copydirtree.html + Masks masks/index.html + TMaskCharType masks/tmaskchartype.html + TCharSet masks/tcharset.html + PCharSet masks/pcharset.html + TUtf8Char masks/tutf8char.html + TMaskChar masks/tmaskchar.html + TMaskString masks/tmaskstring.html + TMask masks/tmask.html + Create masks/tmask.create.html + Destroy masks/tmask.destroy.html + Matches masks/tmask.matches.html + MatchesWindowsMask masks/tmask.matcheswindowsmask.html + TParseStringList masks/tparsestringlist.html + Create masks/tparsestringlist.create.html + TMaskList masks/tmasklist.html + Create masks/tmasklist.create.html + Destroy masks/tmasklist.destroy.html + Matches masks/tmasklist.matches.html + MatchesWindowsMask masks/tmasklist.matcheswindowsmask.html + Count masks/tmasklist.count.html + Items masks/tmasklist.items.html + MatchesMask masks/matchesmask.html + MatchesWindowsMask masks/matcheswindowsmask.html + MatchesMaskList masks/matchesmasklist.html + MatchesWindowsMaskList masks/matcheswindowsmasklist.html + LazUtilsStrConsts lazutilsstrconsts/index.html + lrsModified lazutilsstrconsts/index-1.html#lrsmodified + lrsInvalidCharSet lazutilsstrconsts/index-1.html#lrsinvalidcharset + lrsSize lazutilsstrconsts/index-1.html#lrssize + lrsFileDoesNotExist lazutilsstrconsts/index-1.html#lrsfiledoesnotexist + lrsFileIsADirectoryAndNotAnExecutable lazutilsstrconsts/index-1.html#lrsfileisadirectoryandnotanexecutable + lrsReadAccessDeniedFor lazutilsstrconsts/index-1.html#lrsreadaccessdeniedfor + lrsADirectoryComponentInDoesNotExistOrIsADanglingSyml2 lazutilsstrconsts/index-1.html#lrsadirectorycomponentindoesnotexistorisadanglingsyml2 + lrsADirectoryComponentInIsNotADirectory2 lazutilsstrconsts/index-1.html#lrsadirectorycomponentinisnotadirectory2 + lrsADirectoryComponentInDoesNotExistOrIsADanglingSyml lazutilsstrconsts/index-1.html#lrsadirectorycomponentindoesnotexistorisadanglingsyml + lrsADirectoryComponentInIsNotADirectory lazutilsstrconsts/index-1.html#lrsadirectorycomponentinisnotadirectory + lrsInsufficientMemory lazutilsstrconsts/index-1.html#lrsinsufficientmemory + lrsHasACircularSymbolicLink lazutilsstrconsts/index-1.html#lrshasacircularsymboliclink + lrsIsNotASymbolicLink lazutilsstrconsts/index-1.html#lrsisnotasymboliclink + lrsIsNotExecutable lazutilsstrconsts/index-1.html#lrsisnotexecutable + lrsUnableToCreateConfigDirectoryS lazutilsstrconsts/index-1.html#lrsunabletocreateconfigdirectorys + lrsProgramFileNotFound lazutilsstrconsts/index-1.html#lrsprogramfilenotfound + lrsCanNotExecute lazutilsstrconsts/index-1.html#lrscannotexecute + lrsNodeSet lazutilsstrconsts/index-1.html#lrsnodeset + lrsBoolean lazutilsstrconsts/index-1.html#lrsboolean + lrsNumber lazutilsstrconsts/index-1.html#lrsnumber + lrsString lazutilsstrconsts/index-1.html#lrsstring + lrsVarNoConversion lazutilsstrconsts/index-1.html#lrsvarnoconversion + lrsScannerUnclosedString lazutilsstrconsts/index-1.html#lrsscannerunclosedstring + lrsScannerInvalidChar lazutilsstrconsts/index-1.html#lrsscannerinvalidchar + lrsScannerMalformedQName lazutilsstrconsts/index-1.html#lrsscannermalformedqname + lrsScannerExpectedVarName lazutilsstrconsts/index-1.html#lrsscannerexpectedvarname + lrsParserExpectedLeftBracket lazutilsstrconsts/index-1.html#lrsparserexpectedleftbracket + lrsParserExpectedRightBracket lazutilsstrconsts/index-1.html#lrsparserexpectedrightbracket + lrsParserBadAxisName lazutilsstrconsts/index-1.html#lrsparserbadaxisname + lrsParserBadNodeType lazutilsstrconsts/index-1.html#lrsparserbadnodetype + lrsParserExpectedRightSquareBracket lazutilsstrconsts/index-1.html#lrsparserexpectedrightsquarebracket + lrsParserInvalidPrimExpr lazutilsstrconsts/index-1.html#lrsparserinvalidprimexpr + lrsParserGarbageAfterExpression lazutilsstrconsts/index-1.html#lrsparsergarbageafterexpression + lrsParserInvalidNodeTest lazutilsstrconsts/index-1.html#lrsparserinvalidnodetest + lrsEvalUnknownFunction lazutilsstrconsts/index-1.html#lrsevalunknownfunction + lrsEvalUnknownVariable lazutilsstrconsts/index-1.html#lrsevalunknownvariable + lrsEvalInvalidArgCount lazutilsstrconsts/index-1.html#lrsevalinvalidargcount + LazFileUtils lazfileutils/index.html + TPhysicalFilenameOnError lazfileutils/tphysicalfilenameonerror.html + TInvalidateFileStateCacheEvent lazfileutils/tinvalidatefilestatecacheevent.html + CompareFilenames lazfileutils/comparefilenames.html + CompareFilenamesIgnoreCase lazfileutils/comparefilenamesignorecase.html + CompareFileExt lazfileutils/comparefileext.html + CompareFilenameStarts lazfileutils/comparefilenamestarts.html + CompareFilenamesP lazfileutils/comparefilenamesp.html + DirPathExists lazfileutils/dirpathexists.html + DirectoryIsWritable lazfileutils/directoryiswritable.html + ExtractFileNameOnly lazfileutils/extractfilenameonly.html + FilenameIsAbsolute lazfileutils/filenameisabsolute.html + FilenameIsWinAbsolute lazfileutils/filenameiswinabsolute.html + FilenameIsUnixAbsolute lazfileutils/filenameisunixabsolute.html + ForceDirectory lazfileutils/forcedirectory.html + CheckIfFileIsExecutable lazfileutils/checkiffileisexecutable.html + CheckIfFileIsSymlink lazfileutils/checkiffileissymlink.html + FileIsExecutable lazfileutils/fileisexecutable.html + FileIsSymlink lazfileutils/fileissymlink.html + FileIsHardLink lazfileutils/fileishardlink.html + FileIsReadable lazfileutils/fileisreadable.html + FileIsWritable lazfileutils/fileiswritable.html + FileIsText lazfileutils/fileistext.html + FilenameIsTrimmed lazfileutils/filenameistrimmed.html + TrimFilename lazfileutils/trimfilename.html + ResolveDots lazfileutils/resolvedots.html + ForcePathDelims lazfileutils/forcepathdelims.html + GetForcedPathDelims lazfileutils/getforcedpathdelims.html + CleanAndExpandFilename lazfileutils/cleanandexpandfilename.html + CleanAndExpandDirectory lazfileutils/cleanandexpanddirectory.html + TrimAndExpandFilename lazfileutils/trimandexpandfilename.html + TrimAndExpandDirectory lazfileutils/trimandexpanddirectory.html + TryCreateRelativePath lazfileutils/trycreaterelativepath.html + CreateRelativePath lazfileutils/createrelativepath.html + FileIsInPath lazfileutils/fileisinpath.html + AppendPathDelim lazfileutils/appendpathdelim.html + ChompPathDelim lazfileutils/chomppathdelim.html + CreateAbsoluteSearchPath lazfileutils/createabsolutesearchpath.html + CreateRelativeSearchPath lazfileutils/createrelativesearchpath.html + MinimizeSearchPath lazfileutils/minimizesearchpath.html + FindPathInSearchPath lazfileutils/findpathinsearchpath.html + FileExistsUTF8 lazfileutils/fileexistsutf8.html + FileAgeUTF8 lazfileutils/fileageutf8.html + DirectoryExistsUTF8 lazfileutils/directoryexistsutf8.html + ExpandFileNameUTF8 lazfileutils/expandfilenameutf8.html + FindFirstUTF8 lazfileutils/findfirstutf8.html + FindNextUTF8 lazfileutils/findnextutf8.html + FindCloseUTF8 lazfileutils/findcloseutf8.html + FileSetDateUTF8 lazfileutils/filesetdateutf8.html + FileGetAttrUTF8 lazfileutils/filegetattrutf8.html + FileSetAttrUTF8 lazfileutils/filesetattrutf8.html + DeleteFileUTF8 lazfileutils/deletefileutf8.html + RenameFileUTF8 lazfileutils/renamefileutf8.html + FileSearchUTF8 lazfileutils/filesearchutf8.html + FileIsReadOnlyUTF8 lazfileutils/fileisreadonlyutf8.html + GetCurrentDirUTF8 lazfileutils/getcurrentdirutf8.html + SetCurrentDirUTF8 lazfileutils/setcurrentdirutf8.html + CreateDirUTF8 lazfileutils/createdirutf8.html + RemoveDirUTF8 lazfileutils/removedirutf8.html + ForceDirectoriesUTF8 lazfileutils/forcedirectoriesutf8.html + FileOpenUTF8 lazfileutils/fileopenutf8.html + FileCreateUTF8 lazfileutils/filecreateutf8.html + FileSizeUtf8 lazfileutils/filesizeutf8.html + GetFileDescription lazfileutils/getfiledescription.html + ReadAllLinks lazfileutils/readalllinks.html + TryReadAllLinks lazfileutils/tryreadalllinks.html + GetShellLinkTarget lazfileutils/getshelllinktarget.html + DbgSFileAttr lazfileutils/dbgsfileattr.html + GetPhysicalFilename lazfileutils/getphysicalfilename.html + GetUnixPhysicalFilename lazfileutils/getunixphysicalfilename.html + GetAppConfigDirUTF8 lazfileutils/getappconfigdirutf8.html + GetAppConfigFileUTF8 lazfileutils/getappconfigfileutf8.html + GetTempFileNameUTF8 lazfileutils/gettempfilenameutf8.html + IsUNCPath lazfileutils/isuncpath.html + ExtractUNCVolume lazfileutils/extractuncvolume.html + ExtractFileRoot lazfileutils/extractfileroot.html + SplitCmdLineParams lazfileutils/splitcmdlineparams.html + StrToCmdLineParam lazfileutils/strtocmdlineparam.html + MergeCmdLineParams lazfileutils/mergecmdlineparams.html + InvalidateFileStateCache lazfileutils/invalidatefilestatecache.html + OnInvalidateFileStateCache lazfileutils/oninvalidatefilestatecache.html + FPCAdds fpcadds/index.html + TStreamSeekType fpcadds/tstreamseektype.html + TMemStreamSeekType fpcadds/tmemstreamseektype.html + TCompareMemSize fpcadds/tcomparememsize.html + PHandle fpcadds/phandle.html + StrToWord fpcadds/strtoword.html + AlignToPtr fpcadds/aligntoptr.html + AlignToInt fpcadds/aligntoint.html + Laz2_DOM laz2_dom/index.html + INDEX_SIZE_ERR laz2_dom/index_size_err.html + DOMSTRING_SIZE_ERR laz2_dom/domstring_size_err.html + HIERARCHY_REQUEST_ERR laz2_dom/hierarchy_request_err.html + WRONG_DOCUMENT_ERR laz2_dom/wrong_document_err.html + INVALID_CHARACTER_ERR laz2_dom/invalid_character_err.html + NO_DATA_ALLOWED_ERR laz2_dom/no_data_allowed_err.html + NO_MODIFICATION_ALLOWED_ERR laz2_dom/no_modification_allowed_err.html + NOT_FOUND_ERR laz2_dom/not_found_err.html + NOT_SUPPORTED_ERR laz2_dom/not_supported_err.html + INUSE_ATTRIBUTE_ERR laz2_dom/inuse_attribute_err.html + INVALID_STATE_ERR laz2_dom/invalid_state_err.html + SYNTAX_ERR laz2_dom/syntax_err.html + INVALID_MODIFICATION_ERR laz2_dom/invalid_modification_err.html + NAMESPACE_ERR laz2_dom/namespace_err.html + INVALID_ACCESS_ERR laz2_dom/invalid_access_err.html + ELEMENT_NODE laz2_dom/element_node.html + ATTRIBUTE_NODE laz2_dom/attribute_node.html + TEXT_NODE laz2_dom/text_node.html + CDATA_SECTION_NODE laz2_dom/cdata_section_node.html + ENTITY_REFERENCE_NODE laz2_dom/entity_reference_node.html + ENTITY_NODE laz2_dom/entity_node.html + PROCESSING_INSTRUCTION_NODE laz2_dom/processing_instruction_node.html + COMMENT_NODE laz2_dom/comment_node.html + DOCUMENT_NODE laz2_dom/document_node.html + DOCUMENT_TYPE_NODE laz2_dom/document_type_node.html + DOCUMENT_FRAGMENT_NODE laz2_dom/document_fragment_node.html + NOTATION_NODE laz2_dom/notation_node.html + stduri_xml laz2_dom/stduri_xml.html + stduri_xmlns laz2_dom/stduri_xmlns.html + PNodePoolArray laz2_dom/pnodepoolarray.html + TNodePoolArray laz2_dom/tnodepoolarray.html + TSetOfChar laz2_dom/tsetofchar.html + DOMString laz2_dom/domstring.html + DOMPChar laz2_dom/dompchar.html + DOMChar laz2_dom/domchar.html + PDOMString laz2_dom/pdomstring.html + TNodeFlagEnum laz2_dom/tnodeflagenum.html + TNodeFlags laz2_dom/tnodeflags.html + TDOMNodeClass laz2_dom/tdomnodeclass.html + TFilterResult laz2_dom/tfilterresult.html + TNamespaces laz2_dom/tnamespaces.html + TNamespaceInfo laz2_dom/tnamespaceinfo.html + TAttrDataType laz2_dom/tattrdatatype.html + TAttrDefault laz2_dom/tattrdefault.html + PExtent laz2_dom/pextent.html + TExtent laz2_dom/textent.html + EDOMError laz2_dom/edomerror.html + Code laz2_dom/edomerror.code.html + Create laz2_dom/edomerror.create.html + EDOMIndexSize laz2_dom/edomindexsize.html + Create laz2_dom/edomindexsize.create.html + EDOMHierarchyRequest laz2_dom/edomhierarchyrequest.html + Create laz2_dom/edomhierarchyrequest.create.html + EDOMWrongDocument laz2_dom/edomwrongdocument.html + Create laz2_dom/edomwrongdocument.create.html + EDOMNotFound laz2_dom/edomnotfound.html + Create laz2_dom/edomnotfound.create.html + EDOMNotSupported laz2_dom/edomnotsupported.html + Create laz2_dom/edomnotsupported.create.html + EDOMInUseAttribute laz2_dom/edominuseattribute.html + Create laz2_dom/edominuseattribute.create.html + EDOMInvalidState laz2_dom/edominvalidstate.html + Create laz2_dom/edominvalidstate.create.html + EDOMSyntax laz2_dom/edomsyntax.html + Create laz2_dom/edomsyntax.create.html + EDOMInvalidModification laz2_dom/edominvalidmodification.html + Create laz2_dom/edominvalidmodification.create.html + EDOMNamespace laz2_dom/edomnamespace.html + Create laz2_dom/edomnamespace.create.html + EDOMInvalidAccess laz2_dom/edominvalidaccess.html + Create laz2_dom/edominvalidaccess.create.html + TDOMNodeEnumerator laz2_dom/tdomnodeenumerator.html + Create laz2_dom/tdomnodeenumerator.create.html + MoveNext laz2_dom/tdomnodeenumerator.movenext.html + Current laz2_dom/tdomnodeenumerator.current.html + TDOMNodeAllChildEnumerator laz2_dom/tdomnodeallchildenumerator.html + Create laz2_dom/tdomnodeallchildenumerator.create.html + MoveNext laz2_dom/tdomnodeallchildenumerator.movenext.html + Current laz2_dom/tdomnodeallchildenumerator.current.html + GetEnumerator laz2_dom/tdomnodeallchildenumerator.getenumerator.html + TDOMNode laz2_dom/tdomnode.html + FPool laz2_dom/tdomnode.fpool.html + FFlags laz2_dom/tdomnode.fflags.html + FParentNode laz2_dom/tdomnode.fparentnode.html + FPreviousSibling laz2_dom/tdomnode.fprevioussibling.html + FNextSibling laz2_dom/tdomnode.fnextsibling.html + FOwnerDocument laz2_dom/tdomnode.fownerdocument.html + GetNodeName laz2_dom/tdomnode.getnodename.html + GetNodeValue laz2_dom/tdomnode.getnodevalue.html + SetNodeValue laz2_dom/tdomnode.setnodevalue.html + GetFirstChild laz2_dom/tdomnode.getfirstchild.html + GetLastChild laz2_dom/tdomnode.getlastchild.html + GetAttributes laz2_dom/tdomnode.getattributes.html + GetRevision laz2_dom/tdomnode.getrevision.html + GetNodeType laz2_dom/tdomnode.getnodetype.html + GetTextContent laz2_dom/tdomnode.gettextcontent.html + SetTextContent laz2_dom/tdomnode.settextcontent.html + GetLocalName laz2_dom/tdomnode.getlocalname.html + GetNamespaceURI laz2_dom/tdomnode.getnamespaceuri.html + GetPrefix laz2_dom/tdomnode.getprefix.html + SetPrefix laz2_dom/tdomnode.setprefix.html + GetOwnerDocument laz2_dom/tdomnode.getownerdocument.html + GetBaseURI laz2_dom/tdomnode.getbaseuri.html + SetReadOnly laz2_dom/tdomnode.setreadonly.html + Changing laz2_dom/tdomnode.changing.html + Create laz2_dom/tdomnode.create.html + Destroy laz2_dom/tdomnode.destroy.html + FreeInstance laz2_dom/tdomnode.freeinstance.html + GetChildNodes laz2_dom/tdomnode.getchildnodes.html + GetChildCount laz2_dom/tdomnode.getchildcount.html + NodeName laz2_dom/tdomnode.nodename.html + NodeValue laz2_dom/tdomnode.nodevalue.html + NodeType laz2_dom/tdomnode.nodetype.html + ParentNode laz2_dom/tdomnode.parentnode.html + FirstChild laz2_dom/tdomnode.firstchild.html + LastChild laz2_dom/tdomnode.lastchild.html + ChildNodes laz2_dom/tdomnode.childnodes.html + PreviousSibling laz2_dom/tdomnode.previoussibling.html + NextSibling laz2_dom/tdomnode.nextsibling.html + Attributes laz2_dom/tdomnode.attributes.html + OwnerDocument laz2_dom/tdomnode.ownerdocument.html + GetEnumerator laz2_dom/tdomnode.getenumerator.html + GetEnumeratorAllChildren laz2_dom/tdomnode.getenumeratorallchildren.html + GetNextNode laz2_dom/tdomnode.getnextnode.html + GetNextNodeSkipChildren laz2_dom/tdomnode.getnextnodeskipchildren.html + GetPreviousNode laz2_dom/tdomnode.getpreviousnode.html + GetLastLeaf laz2_dom/tdomnode.getlastleaf.html + GetLevel laz2_dom/tdomnode.getlevel.html + InsertBefore laz2_dom/tdomnode.insertbefore.html + ReplaceChild laz2_dom/tdomnode.replacechild.html + DetachChild laz2_dom/tdomnode.detachchild.html + RemoveChild laz2_dom/tdomnode.removechild.html + AppendChild laz2_dom/tdomnode.appendchild.html + HasChildNodes laz2_dom/tdomnode.haschildnodes.html + CloneNode laz2_dom/tdomnode.clonenode.html + IsSupported laz2_dom/tdomnode.issupported.html + HasAttributes laz2_dom/tdomnode.hasattributes.html + Normalize laz2_dom/tdomnode.normalize.html + NamespaceURI laz2_dom/tdomnode.namespaceuri.html + LocalName laz2_dom/tdomnode.localname.html + Prefix laz2_dom/tdomnode.prefix.html + TextContent laz2_dom/tdomnode.textcontent.html + LookupPrefix laz2_dom/tdomnode.lookupprefix.html + LookupNamespaceURI laz2_dom/tdomnode.lookupnamespaceuri.html + IsDefaultNamespace laz2_dom/tdomnode.isdefaultnamespace.html + baseURI laz2_dom/tdomnode.baseuri.html + FindNode laz2_dom/tdomnode.findnode.html + CompareName laz2_dom/tdomnode.comparename.html + Flags laz2_dom/tdomnode.flags.html + TDOMNode_WithChildren laz2_dom/tdomnode_withchildren.html + FFirstChild laz2_dom/tdomnode_withchildren.ffirstchild.html + FLastChild laz2_dom/tdomnode_withchildren.flastchild.html + FChildNodes laz2_dom/tdomnode_withchildren.fchildnodes.html + GetFirstChild laz2_dom/tdomnode_withchildren.getfirstchild.html + GetLastChild laz2_dom/tdomnode_withchildren.getlastchild.html + CloneChildren laz2_dom/tdomnode_withchildren.clonechildren.html + FreeChildren laz2_dom/tdomnode_withchildren.freechildren.html + GetTextContent laz2_dom/tdomnode_withchildren.gettextcontent.html + SetTextContent laz2_dom/tdomnode_withchildren.settextcontent.html + Destroy laz2_dom/tdomnode_withchildren.destroy.html + InsertBefore laz2_dom/tdomnode_withchildren.insertbefore.html + ReplaceChild laz2_dom/tdomnode_withchildren.replacechild.html + DetachChild laz2_dom/tdomnode_withchildren.detachchild.html + HasChildNodes laz2_dom/tdomnode_withchildren.haschildnodes.html + GetChildCount laz2_dom/tdomnode_withchildren.getchildcount.html + FindNode laz2_dom/tdomnode_withchildren.findnode.html + InternalAppend laz2_dom/tdomnode_withchildren.internalappend.html + TDOMNodeList laz2_dom/tdomnodelist.html + FNode laz2_dom/tdomnodelist.fnode.html + FRevision laz2_dom/tdomnodelist.frevision.html + FList laz2_dom/tdomnodelist.flist.html + GetCount laz2_dom/tdomnodelist.getcount.html + GetItem laz2_dom/tdomnodelist.getitem.html + NodeFilter laz2_dom/tdomnodelist.nodefilter.html + BuildList laz2_dom/tdomnodelist.buildlist.html + Create laz2_dom/tdomnodelist.create.html + Destroy laz2_dom/tdomnodelist.destroy.html + Item laz2_dom/tdomnodelist.item.html + Count laz2_dom/tdomnodelist.count.html + Length laz2_dom/tdomnodelist.length.html + TDOMElementList laz2_dom/tdomelementlist.html + filter laz2_dom/tdomelementlist.filter.html + FNSIndexFilter laz2_dom/tdomelementlist.fnsindexfilter.html + localNameFilter laz2_dom/tdomelementlist.localnamefilter.html + FMatchNS laz2_dom/tdomelementlist.fmatchns.html + FMatchAnyNS laz2_dom/tdomelementlist.fmatchanyns.html + UseFilter laz2_dom/tdomelementlist.usefilter.html + NodeFilter laz2_dom/tdomelementlist.nodefilter.html + Create laz2_dom/tdomelementlist.create.html + TDOMNamedNodeMap laz2_dom/tdomnamednodemap.html + FOwner laz2_dom/tdomnamednodemap.fowner.html + FNodeType laz2_dom/tdomnamednodemap.fnodetype.html + FSortedList laz2_dom/tdomnamednodemap.fsortedlist.html + FPosList laz2_dom/tdomnamednodemap.fposlist.html + GetPosItem laz2_dom/tdomnamednodemap.getpositem.html + GetSortedItem laz2_dom/tdomnamednodemap.getsorteditem.html + GetLength laz2_dom/tdomnamednodemap.getlength.html + FindSorted laz2_dom/tdomnamednodemap.findsorted.html + DeleteSorted laz2_dom/tdomnamednodemap.deletesorted.html + RestoreDefault laz2_dom/tdomnamednodemap.restoredefault.html + InternalRemove laz2_dom/tdomnamednodemap.internalremove.html + ValidateInsert laz2_dom/tdomnamednodemap.validateinsert.html + Create laz2_dom/tdomnamednodemap.create.html + Destroy laz2_dom/tdomnamednodemap.destroy.html + GetNamedItem laz2_dom/tdomnamednodemap.getnameditem.html + SetNamedItem laz2_dom/tdomnamednodemap.setnameditem.html + RemoveNamedItem laz2_dom/tdomnamednodemap.removenameditem.html + getNamedItemNS laz2_dom/tdomnamednodemap.getnameditemns.html + setNamedItemNS laz2_dom/tdomnamednodemap.setnameditemns.html + removeNamedItemNS laz2_dom/tdomnamednodemap.removenameditemns.html + Item laz2_dom/tdomnamednodemap.item.html + SortedItem laz2_dom/tdomnamednodemap.sorteditem.html + Length laz2_dom/tdomnamednodemap.length.html + TDOMCharacterData laz2_dom/tdomcharacterdata.html + GetLength laz2_dom/tdomcharacterdata.getlength.html + GetNodeValue laz2_dom/tdomcharacterdata.getnodevalue.html + SetNodeValue laz2_dom/tdomcharacterdata.setnodevalue.html + Data laz2_dom/tdomcharacterdata.data.html + Length laz2_dom/tdomcharacterdata.length.html + SubstringData laz2_dom/tdomcharacterdata.substringdata.html + AppendData laz2_dom/tdomcharacterdata.appenddata.html + InsertData laz2_dom/tdomcharacterdata.insertdata.html + DeleteData laz2_dom/tdomcharacterdata.deletedata.html + ReplaceData laz2_dom/tdomcharacterdata.replacedata.html + TDOMImplementation laz2_dom/tdomimplementation.html + HasFeature laz2_dom/tdomimplementation.hasfeature.html + CreateDocumentType laz2_dom/tdomimplementation.createdocumenttype.html + CreateDocument laz2_dom/tdomimplementation.createdocument.html + TDOMDocumentFragment laz2_dom/tdomdocumentfragment.html + GetNodeType laz2_dom/tdomdocumentfragment.getnodetype.html + GetNodeName laz2_dom/tdomdocumentfragment.getnodename.html + CloneNode laz2_dom/tdomdocumentfragment.clonenode.html + TDOMDocument laz2_dom/tdomdocument.html + FIDList laz2_dom/tdomdocument.fidlist.html + FRevision laz2_dom/tdomdocument.frevision.html + FXML11 laz2_dom/tdomdocument.fxml11.html + FImplementation laz2_dom/tdomdocument.fimplementation.html + FNamespaces laz2_dom/tdomdocument.fnamespaces.html + FNames laz2_dom/tdomdocument.fnames.html + FEmptyNode laz2_dom/tdomdocument.femptynode.html + FNodeLists laz2_dom/tdomdocument.fnodelists.html + FMaxPoolSize laz2_dom/tdomdocument.fmaxpoolsize.html + FPools laz2_dom/tdomdocument.fpools.html + FDocumentURI laz2_dom/tdomdocument.fdocumenturi.html + GetDocumentElement laz2_dom/tdomdocument.getdocumentelement.html + GetDocType laz2_dom/tdomdocument.getdoctype.html + GetNodeType laz2_dom/tdomdocument.getnodetype.html + GetNodeName laz2_dom/tdomdocument.getnodename.html + GetTextContent laz2_dom/tdomdocument.gettextcontent.html + GetOwnerDocument laz2_dom/tdomdocument.getownerdocument.html + SetTextContent laz2_dom/tdomdocument.settextcontent.html + RemoveID laz2_dom/tdomdocument.removeid.html + GetChildNodeList laz2_dom/tdomdocument.getchildnodelist.html + GetElementList laz2_dom/tdomdocument.getelementlist.html + NodeListDestroyed laz2_dom/tdomdocument.nodelistdestroyed.html + Alloc laz2_dom/tdomdocument.alloc.html + IndexOfNS laz2_dom/tdomdocument.indexofns.html + InsertBefore laz2_dom/tdomdocument.insertbefore.html + ReplaceChild laz2_dom/tdomdocument.replacechild.html + DocType laz2_dom/tdomdocument.doctype.html + Impl laz2_dom/tdomdocument.impl.html + DocumentElement laz2_dom/tdomdocument.documentelement.html + CreateElement laz2_dom/tdomdocument.createelement.html + CreateElementBuf laz2_dom/tdomdocument.createelementbuf.html + CreateDocumentFragment laz2_dom/tdomdocument.createdocumentfragment.html + CreateTextNode laz2_dom/tdomdocument.createtextnode.html + CreateTextNodeBuf laz2_dom/tdomdocument.createtextnodebuf.html + CreateComment laz2_dom/tdomdocument.createcomment.html + CreateCommentBuf laz2_dom/tdomdocument.createcommentbuf.html + CreateCDATASection laz2_dom/tdomdocument.createcdatasection.html + CreateProcessingInstruction laz2_dom/tdomdocument.createprocessinginstruction.html + CreateAttribute laz2_dom/tdomdocument.createattribute.html + CreateAttributeBuf laz2_dom/tdomdocument.createattributebuf.html + CreateAttributeDef laz2_dom/tdomdocument.createattributedef.html + CreateEntityReference laz2_dom/tdomdocument.createentityreference.html + GetElementsByTagName laz2_dom/tdomdocument.getelementsbytagname.html + ImportNode laz2_dom/tdomdocument.importnode.html + CreateElementNS laz2_dom/tdomdocument.createelementns.html + CreateAttributeNS laz2_dom/tdomdocument.createattributens.html + GetElementsByTagNameNS laz2_dom/tdomdocument.getelementsbytagnamens.html + GetElementById laz2_dom/tdomdocument.getelementbyid.html + documentURI laz2_dom/tdomdocument.documenturi.html + Create laz2_dom/tdomdocument.create.html + Destroy laz2_dom/tdomdocument.destroy.html + AddID laz2_dom/tdomdocument.addid.html + Names laz2_dom/tdomdocument.names.html + TXMLDocument laz2_dom/txmldocument.html + Encoding laz2_dom/txmldocument.encoding.html + StylesheetType laz2_dom/txmldocument.stylesheettype.html + StylesheetHRef laz2_dom/txmldocument.stylesheethref.html + CreateCDATASection laz2_dom/txmldocument.createcdatasection.html + CreateProcessingInstruction laz2_dom/txmldocument.createprocessinginstruction.html + CreateEntityReference laz2_dom/txmldocument.createentityreference.html + XMLVersion laz2_dom/txmldocument.xmlversion.html + TDOMNode_NS laz2_dom/tdomnode_ns.html + FNSI laz2_dom/tdomnode_ns.fnsi.html + GetNodeName laz2_dom/tdomnode_ns.getnodename.html + GetLocalName laz2_dom/tdomnode_ns.getlocalname.html + GetNamespaceURI laz2_dom/tdomnode_ns.getnamespaceuri.html + GetPrefix laz2_dom/tdomnode_ns.getprefix.html + SetPrefix laz2_dom/tdomnode_ns.setprefix.html + SetNSI laz2_dom/tdomnode_ns.setnsi.html + CompareName laz2_dom/tdomnode_ns.comparename.html + NSI laz2_dom/tdomnode_ns.nsi.html + TDOMAttr laz2_dom/tdomattr.html + FOwnerElement laz2_dom/tdomattr.fownerelement.html + FDataType laz2_dom/tdomattr.fdatatype.html + GetNodeValue laz2_dom/tdomattr.getnodevalue.html + GetNodeType laz2_dom/tdomattr.getnodetype.html + GetSpecified laz2_dom/tdomattr.getspecified.html + GetIsID laz2_dom/tdomattr.getisid.html + SetNodeValue laz2_dom/tdomattr.setnodevalue.html + Destroy laz2_dom/tdomattr.destroy.html + CloneNode laz2_dom/tdomattr.clonenode.html + Name laz2_dom/tdomattr.name.html + Specified laz2_dom/tdomattr.specified.html + Value laz2_dom/tdomattr.value.html + OwnerElement laz2_dom/tdomattr.ownerelement.html + IsID laz2_dom/tdomattr.isid.html + DataType laz2_dom/tdomattr.datatype.html + TDOMElement laz2_dom/tdomelement.html + FAttributes laz2_dom/tdomelement.fattributes.html + GetNodeType laz2_dom/tdomelement.getnodetype.html + GetAttributes laz2_dom/tdomelement.getattributes.html + AttachDefaultAttrs laz2_dom/tdomelement.attachdefaultattrs.html + InternalLookupPrefix laz2_dom/tdomelement.internallookupprefix.html + RestoreDefaultAttr laz2_dom/tdomelement.restoredefaultattr.html + Destroy laz2_dom/tdomelement.destroy.html + CloneNode laz2_dom/tdomelement.clonenode.html + IsEmpty laz2_dom/tdomelement.isempty.html + Normalize laz2_dom/tdomelement.normalize.html + TagName laz2_dom/tdomelement.tagname.html + GetAttribute laz2_dom/tdomelement.getattribute.html + SetAttribute laz2_dom/tdomelement.setattribute.html + RemoveAttribute laz2_dom/tdomelement.removeattribute.html + GetAttributeNode laz2_dom/tdomelement.getattributenode.html + SetAttributeNode laz2_dom/tdomelement.setattributenode.html + RemoveAttributeNode laz2_dom/tdomelement.removeattributenode.html + GetElementsByTagName laz2_dom/tdomelement.getelementsbytagname.html + GetAttributeNS laz2_dom/tdomelement.getattributens.html + SetAttributeNS laz2_dom/tdomelement.setattributens.html + RemoveAttributeNS laz2_dom/tdomelement.removeattributens.html + GetAttributeNodeNS laz2_dom/tdomelement.getattributenodens.html + SetAttributeNodeNS laz2_dom/tdomelement.setattributenodens.html + GetElementsByTagNameNS laz2_dom/tdomelement.getelementsbytagnamens.html + hasAttribute laz2_dom/tdomelement.hasattribute.html + hasAttributeNS laz2_dom/tdomelement.hasattributens.html + HasAttributes laz2_dom/tdomelement.hasattributes.html + AttribStrings laz2_dom/tdomelement.attribstrings.html + TDOMText laz2_dom/tdomtext.html + GetNodeType laz2_dom/tdomtext.getnodetype.html + GetNodeName laz2_dom/tdomtext.getnodename.html + SetNodeValue laz2_dom/tdomtext.setnodevalue.html + CloneNode laz2_dom/tdomtext.clonenode.html + SplitText laz2_dom/tdomtext.splittext.html + IsElementContentWhitespace laz2_dom/tdomtext.iselementcontentwhitespace.html + TDOMComment laz2_dom/tdomcomment.html + GetNodeType laz2_dom/tdomcomment.getnodetype.html + GetNodeName laz2_dom/tdomcomment.getnodename.html + CloneNode laz2_dom/tdomcomment.clonenode.html + TDOMCDATASection laz2_dom/tdomcdatasection.html + GetNodeType laz2_dom/tdomcdatasection.getnodetype.html + GetNodeName laz2_dom/tdomcdatasection.getnodename.html + CloneNode laz2_dom/tdomcdatasection.clonenode.html + TDOMDocumentType laz2_dom/tdomdocumenttype.html + FName laz2_dom/tdomdocumenttype.fname.html + FPublicID laz2_dom/tdomdocumenttype.fpublicid.html + FSystemID laz2_dom/tdomdocumenttype.fsystemid.html + FInternalSubset laz2_dom/tdomdocumenttype.finternalsubset.html + FEntities laz2_dom/tdomdocumenttype.fentities.html + FNotations laz2_dom/tdomdocumenttype.fnotations.html + GetEntities laz2_dom/tdomdocumenttype.getentities.html + GetNotations laz2_dom/tdomdocumenttype.getnotations.html + GetNodeType laz2_dom/tdomdocumenttype.getnodetype.html + GetNodeName laz2_dom/tdomdocumenttype.getnodename.html + Destroy laz2_dom/tdomdocumenttype.destroy.html + Name laz2_dom/tdomdocumenttype.name.html + Entities laz2_dom/tdomdocumenttype.entities.html + Notations laz2_dom/tdomdocumenttype.notations.html + PublicID laz2_dom/tdomdocumenttype.publicid.html + SystemID laz2_dom/tdomdocumenttype.systemid.html + InternalSubset laz2_dom/tdomdocumenttype.internalsubset.html + TDOMNotation laz2_dom/tdomnotation.html + FName laz2_dom/tdomnotation.fname.html + FPublicID laz2_dom/tdomnotation.fpublicid.html + FSystemID laz2_dom/tdomnotation.fsystemid.html + GetNodeType laz2_dom/tdomnotation.getnodetype.html + GetNodeName laz2_dom/tdomnotation.getnodename.html + CloneNode laz2_dom/tdomnotation.clonenode.html + PublicID laz2_dom/tdomnotation.publicid.html + SystemID laz2_dom/tdomnotation.systemid.html + TDOMEntity laz2_dom/tdomentity.html + FName laz2_dom/tdomentity.fname.html + FPublicID laz2_dom/tdomentity.fpublicid.html + FSystemID laz2_dom/tdomentity.fsystemid.html + FNotationName laz2_dom/tdomentity.fnotationname.html + GetNodeType laz2_dom/tdomentity.getnodetype.html + GetNodeName laz2_dom/tdomentity.getnodename.html + CloneNode laz2_dom/tdomentity.clonenode.html + PublicID laz2_dom/tdomentity.publicid.html + SystemID laz2_dom/tdomentity.systemid.html + NotationName laz2_dom/tdomentity.notationname.html + TDOMEntityReference laz2_dom/tdomentityreference.html + FName laz2_dom/tdomentityreference.fname.html + GetNodeType laz2_dom/tdomentityreference.getnodetype.html + GetNodeName laz2_dom/tdomentityreference.getnodename.html + CloneNode laz2_dom/tdomentityreference.clonenode.html + TDOMProcessingInstruction laz2_dom/tdomprocessinginstruction.html + GetNodeType laz2_dom/tdomprocessinginstruction.getnodetype.html + GetNodeName laz2_dom/tdomprocessinginstruction.getnodename.html + GetNodeValue laz2_dom/tdomprocessinginstruction.getnodevalue.html + SetNodeValue laz2_dom/tdomprocessinginstruction.setnodevalue.html + CloneNode laz2_dom/tdomprocessinginstruction.clonenode.html + Target laz2_dom/tdomprocessinginstruction.target.html + Data laz2_dom/tdomprocessinginstruction.data.html + TDOMAttrDef laz2_dom/tdomattrdef.html + FExternallyDeclared laz2_dom/tdomattrdef.fexternallydeclared.html + FDefault laz2_dom/tdomattrdef.fdefault.html + FTag laz2_dom/tdomattrdef.ftag.html + FEnumeration laz2_dom/tdomattrdef.fenumeration.html + AddEnumToken laz2_dom/tdomattrdef.addenumtoken.html + HasEnumToken laz2_dom/tdomattrdef.hasenumtoken.html + CloneNode laz2_dom/tdomattrdef.clonenode.html + Default laz2_dom/tdomattrdef.default.html + ExternallyDeclared laz2_dom/tdomattrdef.externallydeclared.html + Tag laz2_dom/tdomattrdef.tag.html + TNodePool laz2_dom/tnodepool.html + Create laz2_dom/tnodepool.create.html + Destroy laz2_dom/tnodepool.destroy.html + AllocNode laz2_dom/tnodepool.allocnode.html + FreeNode laz2_dom/tnodepool.freenode.html + StrToXMLValue laz2_dom/strtoxmlvalue.html + XMLValueToStr laz2_dom/xmlvaluetostr.html + EncodeLesserAndGreaterThan laz2_dom/encodelesserandgreaterthan.html + laz2_xmlutils laz2_xmlutils/index.html + ns_ASCII laz2_xmlutils/ns_ascii.html + ns_0200 laz2_xmlutils/ns_0200.html + ns_0300 laz2_xmlutils/ns_0300.html + ns_0400 laz2_xmlutils/ns_0400.html + ns_0500 laz2_xmlutils/ns_0500.html + ns_0600 laz2_xmlutils/ns_0600.html + ns_0900 laz2_xmlutils/ns_0900.html + ns_0A00 laz2_xmlutils/ns_0a00.html + ns_0B00 laz2_xmlutils/ns_0b00.html + ns_0C00 laz2_xmlutils/ns_0c00.html + ns_0D00 laz2_xmlutils/ns_0d00.html + ns_0E00 laz2_xmlutils/ns_0e00.html + ns_0F00 laz2_xmlutils/ns_0f00.html + ns_3000 laz2_xmlutils/ns_3000.html + namingBitmap laz2_xmlutils/namingbitmap.html + Xml11HighPages laz2_xmlutils/xml11highpages.html + NamePages laz2_xmlutils/namepages.html + TXMLUtilString laz2_xmlutils/txmlutilstring.html + TXMLUtilChar laz2_xmlutils/txmlutilchar.html + PXMLUtilChar laz2_xmlutils/pxmlutilchar.html + PXMLUtilString laz2_xmlutils/pxmlutilstring.html + PPHashItem laz2_xmlutils/pphashitem.html + PHashItem laz2_xmlutils/phashitem.html + THashItem laz2_xmlutils/thashitem.html + THashItemArray laz2_xmlutils/thashitemarray.html + PHashItemArray laz2_xmlutils/phashitemarray.html + THashForEach laz2_xmlutils/thashforeach.html + TExpHashEntry laz2_xmlutils/texphashentry.html + TExpHashEntryArray laz2_xmlutils/texphashentryarray.html + PExpHashEntryArray laz2_xmlutils/pexphashentryarray.html + TAttributeAction laz2_xmlutils/tattributeaction.html + TSetOfByte laz2_xmlutils/tsetofbyte.html + THashTable laz2_xmlutils/thashtable.html + Create laz2_xmlutils/thashtable.create.html + Destroy laz2_xmlutils/thashtable.destroy.html + Clear laz2_xmlutils/thashtable.clear.html + Find laz2_xmlutils/thashtable.find.html + FindOrAdd laz2_xmlutils/thashtable.findoradd.html + Get laz2_xmlutils/thashtable.get.html + Remove laz2_xmlutils/thashtable.remove.html + RemoveData laz2_xmlutils/thashtable.removedata.html + ForEach laz2_xmlutils/thashtable.foreach.html + Count laz2_xmlutils/thashtable.count.html + TDblHashArray laz2_xmlutils/tdblhasharray.html + Init laz2_xmlutils/tdblhasharray.init.html + Locate laz2_xmlutils/tdblhasharray.locate.html + Destroy laz2_xmlutils/tdblhasharray.destroy.html + TBinding laz2_xmlutils/tbinding.html + uri laz2_xmlutils/tbinding.uri.html + next laz2_xmlutils/tbinding.next.html + prevPrefixBinding laz2_xmlutils/tbinding.prevprefixbinding.html + Prefix laz2_xmlutils/tbinding.prefix.html + TNSSupport laz2_xmlutils/tnssupport.html + Create laz2_xmlutils/tnssupport.create.html + Destroy laz2_xmlutils/tnssupport.destroy.html + DefineBinding laz2_xmlutils/tnssupport.definebinding.html + CheckAttribute laz2_xmlutils/tnssupport.checkattribute.html + IsPrefixBound laz2_xmlutils/tnssupport.isprefixbound.html + GetPrefix laz2_xmlutils/tnssupport.getprefix.html + BindPrefix laz2_xmlutils/tnssupport.bindprefix.html + DefaultNSBinding laz2_xmlutils/tnssupport.defaultnsbinding.html + StartElement laz2_xmlutils/tnssupport.startelement.html + EndElement laz2_xmlutils/tnssupport.endelement.html + IsXmlName laz2_xmlutils/isxmlname.html + IsXmlNames laz2_xmlutils/isxmlnames.html + IsXmlNmToken laz2_xmlutils/isxmlnmtoken.html + IsXmlNmTokens laz2_xmlutils/isxmlnmtokens.html + IsValidXmlEncoding laz2_xmlutils/isvalidxmlencoding.html + Xml11NamePages laz2_xmlutils/xml11namepages.html + NormalizeSpaces laz2_xmlutils/normalizespaces.html + IsXmlWhiteSpace laz2_xmlutils/isxmlwhitespace.html + Hash laz2_xmlutils/hash.html + XUStrLIComp laz2_xmlutils/xustrlicomp.html + TranslateUTF8Chars laz2_xmlutils/translateutf8chars.html + Laz2_XMLCfg laz2_xmlcfg/index.html + TXMLConfig laz2_xmlcfg/txmlconfig.html + TNodeCache laz2_xmlcfg/txmlconfig.tnodecache.html + doc laz2_xmlcfg/txmlconfig.doc.html + FModified laz2_xmlcfg/txmlconfig.fmodified.html + fDoNotLoadFromFile laz2_xmlcfg/txmlconfig.fdonotloadfromfile.html + fAutoLoadFromSource laz2_xmlcfg/txmlconfig.fautoloadfromsource.html + fPathCache laz2_xmlcfg/txmlconfig.fpathcache.html + fPathNodeCache laz2_xmlcfg/txmlconfig.fpathnodecache.html + Loaded laz2_xmlcfg/txmlconfig.loaded.html + ExtendedToStr laz2_xmlcfg/txmlconfig.extendedtostr.html + StrToExtended laz2_xmlcfg/txmlconfig.strtoextended.html + ReadXMLFile laz2_xmlcfg/txmlconfig.readxmlfile.html + WriteXMLFile laz2_xmlcfg/txmlconfig.writexmlfile.html + FreeDoc laz2_xmlcfg/txmlconfig.freedoc.html + SetPathNodeCache laz2_xmlcfg/txmlconfig.setpathnodecache.html + GetCachedPathNode laz2_xmlcfg/txmlconfig.getcachedpathnode.html + InvalidateCacheTilEnd laz2_xmlcfg/txmlconfig.invalidatecachetilend.html + InternalFindNode laz2_xmlcfg/txmlconfig.internalfindnode.html + InternalCleanNode laz2_xmlcfg/txmlconfig.internalcleannode.html + FindChildNode laz2_xmlcfg/txmlconfig.findchildnode.html + Create laz2_xmlcfg/txmlconfig.create.html + CreateClean laz2_xmlcfg/txmlconfig.createclean.html + CreateWithSource laz2_xmlcfg/txmlconfig.createwithsource.html + Destroy laz2_xmlcfg/txmlconfig.destroy.html + Clear laz2_xmlcfg/txmlconfig.clear.html + Flush laz2_xmlcfg/txmlconfig.flush.html + ReadFromStream laz2_xmlcfg/txmlconfig.readfromstream.html + WriteToStream laz2_xmlcfg/txmlconfig.writetostream.html + GetValue laz2_xmlcfg/txmlconfig.getvalue.html + GetExtendedValue laz2_xmlcfg/txmlconfig.getextendedvalue.html + SetValue laz2_xmlcfg/txmlconfig.setvalue.html + SetDeleteValue laz2_xmlcfg/txmlconfig.setdeletevalue.html + SetExtendedValue laz2_xmlcfg/txmlconfig.setextendedvalue.html + SetDeleteExtendedValue laz2_xmlcfg/txmlconfig.setdeleteextendedvalue.html + DeletePath laz2_xmlcfg/txmlconfig.deletepath.html + DeleteValue laz2_xmlcfg/txmlconfig.deletevalue.html + FindNode laz2_xmlcfg/txmlconfig.findnode.html + HasPath laz2_xmlcfg/txmlconfig.haspath.html + HasChildPaths laz2_xmlcfg/txmlconfig.haschildpaths.html + Modified laz2_xmlcfg/txmlconfig.modified.html + InvalidatePathCache laz2_xmlcfg/txmlconfig.invalidatepathcache.html + Filename laz2_xmlcfg/txmlconfig.filename.html + Document laz2_xmlcfg/txmlconfig.document.html + ReadFlags laz2_xmlcfg/txmlconfig.readflags.html + WriteFlags laz2_xmlcfg/txmlconfig.writeflags.html + TRttiXMLConfig laz2_xmlcfg/trttixmlconfig.html + WriteProperty laz2_xmlcfg/trttixmlconfig.writeproperty.html + ReadProperty laz2_xmlcfg/trttixmlconfig.readproperty.html + WriteObject laz2_xmlcfg/trttixmlconfig.writeobject.html + ReadObject laz2_xmlcfg/trttixmlconfig.readobject.html + CompareDomNodeNames laz2_xmlcfg/comparedomnodenames.html + LazFileCache lazfilecache/index.html + LUInvalidChangeStamp lazfilecache/luinvalidchangestamp.html + LUInvalidChangeStamp64 lazfilecache/luinvalidchangestamp64.html + TFileStateCacheItemFlag lazfilecache/tfilestatecacheitemflag.html + TFileStateCacheItemFlags lazfilecache/tfilestatecacheitemflags.html + TOnChangeFileStateTimeStamp lazfilecache/tonchangefilestatetimestamp.html + TOnFileExistsCached lazfilecache/tonfileexistscached.html + TOnFileAgeCached lazfilecache/tonfileagecached.html + TFileStateCacheItem lazfilecache/tfilestatecacheitem.html + Create lazfilecache/tfilestatecacheitem.create.html + CalcMemSize lazfilecache/tfilestatecacheitem.calcmemsize.html + Filename lazfilecache/tfilestatecacheitem.filename.html + PhysicalFilename lazfilecache/tfilestatecacheitem.physicalfilename.html + Flags lazfilecache/tfilestatecacheitem.flags.html + TestedFlags lazfilecache/tfilestatecacheitem.testedflags.html + TimeStamp lazfilecache/tfilestatecacheitem.timestamp.html + Age lazfilecache/tfilestatecacheitem.age.html + TFileStateCache lazfilecache/tfilestatecache.html + Create lazfilecache/tfilestatecache.create.html + Destroy lazfilecache/tfilestatecache.destroy.html + Lock lazfilecache/tfilestatecache.lock.html + Unlock lazfilecache/tfilestatecache.unlock.html + Locked lazfilecache/tfilestatecache.locked.html + IncreaseTimeStamp lazfilecache/tfilestatecache.increasetimestamp.html + FileExistsCached lazfilecache/tfilestatecache.fileexistscached.html + DirPathExistsCached lazfilecache/tfilestatecache.dirpathexistscached.html + DirectoryIsWritableCached lazfilecache/tfilestatecache.directoryiswritablecached.html + FileIsExecutableCached lazfilecache/tfilestatecache.fileisexecutablecached.html + FileIsReadableCached lazfilecache/tfilestatecache.fileisreadablecached.html + FileIsWritableCached lazfilecache/tfilestatecache.fileiswritablecached.html + FileIsTextCached lazfilecache/tfilestatecache.fileistextcached.html + FileAgeCached lazfilecache/tfilestatecache.fileagecached.html + GetPhysicalFilenameCached lazfilecache/tfilestatecache.getphysicalfilenamecached.html + FindFile lazfilecache/tfilestatecache.findfile.html + Check lazfilecache/tfilestatecache.check.html + AddChangeTimeStampHandler lazfilecache/tfilestatecache.addchangetimestamphandler.html + RemoveChangeTimeStampHandler lazfilecache/tfilestatecache.removechangetimestamphandler.html + CalcMemSize lazfilecache/tfilestatecache.calcmemsize.html + TimeStamp lazfilecache/tfilestatecache.timestamp.html + FileExistsCached lazfilecache/fileexistscached.html + DirPathExistsCached lazfilecache/dirpathexistscached.html + DirectoryIsWritableCached lazfilecache/directoryiswritablecached.html + FileIsExecutableCached lazfilecache/fileisexecutablecached.html + FileIsReadableCached lazfilecache/fileisreadablecached.html + FileIsWritableCached lazfilecache/fileiswritablecached.html + FileIsTextCached lazfilecache/fileistextcached.html + FileAgeCached lazfilecache/fileagecached.html + GetPhysicalFilenameCached lazfilecache/getphysicalfilenamecached.html + InvalidateFileStateCache lazfilecache/invalidatefilestatecache.html + CompareFileStateItems lazfilecache/comparefilestateitems.html + CompareFilenameWithFileStateCacheItem lazfilecache/comparefilenamewithfilestatecacheitem.html + LUIncreaseChangeStamp lazfilecache/luincreasechangestamp.html + LUIncreaseChangeStamp64 lazfilecache/luincreasechangestamp64.html + FileStateCache lazfilecache/filestatecache.html + OnFileExistsCached lazfilecache/onfileexistscached.html + OnFileAgeCached lazfilecache/onfileagecached.html + LazDbgLog lazdbglog/index.html + MemSizeString lazdbglog/memsizestring.html + MemSizeFPList lazdbglog/memsizefplist.html + GetStringRefCount lazdbglog/getstringrefcount.html + laz2_XMLRead laz2_xmlread/index.html + TErrorSeverity laz2_xmlread/terrorseverity.html + TXMLReaderFlag laz2_xmlread/txmlreaderflag.html + TXMLReaderFlags laz2_xmlread/txmlreaderflags.html + TXMLContextAction laz2_xmlread/txmlcontextaction.html + TXMLErrorEvent laz2_xmlread/txmlerrorevent.html + TDecoder laz2_xmlread/tdecoder.html + TGetDecoderProc laz2_xmlread/tgetdecoderproc.html + EXMLReadError laz2_xmlread/exmlreaderror.html + Severity laz2_xmlread/exmlreaderror.severity.html + ErrorMessage laz2_xmlread/exmlreaderror.errormessage.html + Line laz2_xmlread/exmlreaderror.line.html + LinePos laz2_xmlread/exmlreaderror.linepos.html + LineCol laz2_xmlread/exmlreaderror.linecol.html + TDOMParseOptions laz2_xmlread/tdomparseoptions.html + Validate laz2_xmlread/tdomparseoptions.validate.html + PreserveWhitespace laz2_xmlread/tdomparseoptions.preservewhitespace.html + ExpandEntities laz2_xmlread/tdomparseoptions.expandentities.html + IgnoreComments laz2_xmlread/tdomparseoptions.ignorecomments.html + CDSectionsAsText laz2_xmlread/tdomparseoptions.cdsectionsastext.html + ResolveExternals laz2_xmlread/tdomparseoptions.resolveexternals.html + Namespaces laz2_xmlread/tdomparseoptions.namespaces.html + DisallowDoctype laz2_xmlread/tdomparseoptions.disallowdoctype.html + MaxChars laz2_xmlread/tdomparseoptions.maxchars.html + CanonicalForm laz2_xmlread/tdomparseoptions.canonicalform.html + TXMLInputSource laz2_xmlread/txmlinputsource.html + Create laz2_xmlread/txmlinputsource.create.html + Stream laz2_xmlread/txmlinputsource.stream.html + StringData laz2_xmlread/txmlinputsource.stringdata.html + BaseURI laz2_xmlread/txmlinputsource.baseuri.html + SystemID laz2_xmlread/txmlinputsource.systemid.html + PublicID laz2_xmlread/txmlinputsource.publicid.html + TDOMParser laz2_xmlread/tdomparser.html + Create laz2_xmlread/tdomparser.create.html + Destroy laz2_xmlread/tdomparser.destroy.html + Parse laz2_xmlread/tdomparser.parse.html + ParseUri laz2_xmlread/tdomparser.parseuri.html + ParseWithContext laz2_xmlread/tdomparser.parsewithcontext.html + Options laz2_xmlread/tdomparser.options.html + OnError laz2_xmlread/tdomparser.onerror.html + ReadXMLFile laz2_xmlread/readxmlfile.html + ReadXMLFragment laz2_xmlread/readxmlfragment.html + ReadDTDFile laz2_xmlread/readdtdfile.html + RegisterDecoder laz2_xmlread/registerdecoder.html + LazUTF8Classes lazutf8classes/index.html + TFileStreamUTF8 lazutf8classes/tfilestreamutf8.html + Create lazutf8classes/tfilestreamutf8.create.html + FileName lazutf8classes/tfilestreamutf8.filename.html + TStringListUTF8 lazutf8classes/tstringlistutf8.html + DoCompareText lazutf8classes/tstringlistutf8.docomparetext.html + LoadFromFile lazutf8classes/tstringlistutf8.loadfromfile.html + SaveToFile lazutf8classes/tstringlistutf8.savetofile.html + TMemoryStreamUTF8 lazutf8classes/tmemorystreamutf8.html + LoadFromFile lazutf8classes/tmemorystreamutf8.loadfromfile.html + SaveToFile lazutf8classes/tmemorystreamutf8.savetofile.html + LoadStringsFromFileUTF8 lazutf8classes/loadstringsfromfileutf8.html + SaveStringsToFileUTF8 lazutf8classes/savestringstofileutf8.html + CompareStringListItemsUTF8LowerCase lazutf8classes/comparestringlistitemsutf8lowercase.html + laz2_XMLWrite laz2_xmlwrite/index.html + TXMLWriterFlag laz2_xmlwrite/txmlwriterflag.html + TXMLWriterFlags laz2_xmlwrite/txmlwriterflags.html + WriteXMLFile laz2_xmlwrite/writexmlfile.html + WriteXML laz2_xmlwrite/writexml.html + LazUtilities lazutilities/index.html + ComparePointers lazutilities/comparepointers.html + MergeSort lazutilities/mergesort.html + GetNextDelimitedItem lazutilities/getnextdelimiteditem.html + HasDelimitedItem lazutilities/hasdelimiteditem.html + FindNextDelimitedItem lazutilities/findnextdelimiteditem.html + laz2_xpath laz2_xpath/index.html + TXPathToken laz2_xpath/txpathtoken.html + TXPathKeyword laz2_xpath/txpathkeyword.html + TXPathNodeArray laz2_xpath/txpathnodearray.html + TXPathMathOp laz2_xpath/txpathmathop.html + TXPathCompareOp laz2_xpath/txpathcompareop.html + TXPathBooleanOp laz2_xpath/txpathbooleanop.html + TNodeSet laz2_xpath/tnodeset.html + TAxis laz2_xpath/taxis.html + TNodeTestType laz2_xpath/tnodetesttype.html + TXPathVarList laz2_xpath/txpathvarlist.html + TXPathFunction laz2_xpath/txpathfunction.html + TXPathExprNode laz2_xpath/txpathexprnode.html + EvalPredicate laz2_xpath/txpathexprnode.evalpredicate.html + Evaluate laz2_xpath/txpathexprnode.evaluate.html + TXPathConstantNode laz2_xpath/txpathconstantnode.html + Create laz2_xpath/txpathconstantnode.create.html + Destroy laz2_xpath/txpathconstantnode.destroy.html + Evaluate laz2_xpath/txpathconstantnode.evaluate.html + TXPathVariableNode laz2_xpath/txpathvariablenode.html + Create laz2_xpath/txpathvariablenode.create.html + Evaluate laz2_xpath/txpathvariablenode.evaluate.html + TXPathFunctionNode laz2_xpath/txpathfunctionnode.html + Create laz2_xpath/txpathfunctionnode.create.html + Destroy laz2_xpath/txpathfunctionnode.destroy.html + Evaluate laz2_xpath/txpathfunctionnode.evaluate.html + TXPathNegationNode laz2_xpath/txpathnegationnode.html + Create laz2_xpath/txpathnegationnode.create.html + Destroy laz2_xpath/txpathnegationnode.destroy.html + Evaluate laz2_xpath/txpathnegationnode.evaluate.html + TXPathBinaryNode laz2_xpath/txpathbinarynode.html + FOperand1 laz2_xpath/txpathbinarynode.foperand1.html + FOperand2 laz2_xpath/txpathbinarynode.foperand2.html + Destroy laz2_xpath/txpathbinarynode.destroy.html + TXPathMathOpNode laz2_xpath/txpathmathopnode.html + Create laz2_xpath/txpathmathopnode.create.html + Evaluate laz2_xpath/txpathmathopnode.evaluate.html + TXPathCompareNode laz2_xpath/txpathcomparenode.html + Create laz2_xpath/txpathcomparenode.create.html + Evaluate laz2_xpath/txpathcomparenode.evaluate.html + TXPathBooleanOpNode laz2_xpath/txpathbooleanopnode.html + Create laz2_xpath/txpathbooleanopnode.create.html + Evaluate laz2_xpath/txpathbooleanopnode.evaluate.html + TXPathUnionNode laz2_xpath/txpathunionnode.html + Create laz2_xpath/txpathunionnode.create.html + Evaluate laz2_xpath/txpathunionnode.evaluate.html + TXPathFilterNode laz2_xpath/txpathfilternode.html + Create laz2_xpath/txpathfilternode.create.html + Destroy laz2_xpath/txpathfilternode.destroy.html + Evaluate laz2_xpath/txpathfilternode.evaluate.html + TStep laz2_xpath/tstep.html + Axis laz2_xpath/tstep.axis.html + NodeTestType laz2_xpath/tstep.nodetesttype.html + NodeTestString laz2_xpath/tstep.nodeteststring.html + NSTestString laz2_xpath/tstep.nsteststring.html + Create laz2_xpath/tstep.create.html + Evaluate laz2_xpath/tstep.evaluate.html + EXPathEvaluationError laz2_xpath/expathevaluationerror.html + TXPathVariable laz2_xpath/txpathvariable.html + FRefCount laz2_xpath/txpathvariable.frefcount.html + Error laz2_xpath/txpathvariable.error.html + TypeName laz2_xpath/txpathvariable.typename.html + Release laz2_xpath/txpathvariable.release.html + AsNodeSet laz2_xpath/txpathvariable.asnodeset.html + AsBoolean laz2_xpath/txpathvariable.asboolean.html + AsNumber laz2_xpath/txpathvariable.asnumber.html + AsText laz2_xpath/txpathvariable.astext.html + TXPathNodeSetVariable laz2_xpath/txpathnodesetvariable.html + Create laz2_xpath/txpathnodesetvariable.create.html + Destroy laz2_xpath/txpathnodesetvariable.destroy.html + TypeName laz2_xpath/txpathnodesetvariable.typename.html + AsNodeSet laz2_xpath/txpathnodesetvariable.asnodeset.html + AsText laz2_xpath/txpathnodesetvariable.astext.html + AsBoolean laz2_xpath/txpathnodesetvariable.asboolean.html + AsNumber laz2_xpath/txpathnodesetvariable.asnumber.html + Value laz2_xpath/txpathnodesetvariable.value.html + TXPathBooleanVariable laz2_xpath/txpathbooleanvariable.html + Create laz2_xpath/txpathbooleanvariable.create.html + TypeName laz2_xpath/txpathbooleanvariable.typename.html + AsBoolean laz2_xpath/txpathbooleanvariable.asboolean.html + AsNumber laz2_xpath/txpathbooleanvariable.asnumber.html + AsText laz2_xpath/txpathbooleanvariable.astext.html + Value laz2_xpath/txpathbooleanvariable.value.html + TXPathNumberVariable laz2_xpath/txpathnumbervariable.html + Create laz2_xpath/txpathnumbervariable.create.html + TypeName laz2_xpath/txpathnumbervariable.typename.html + AsBoolean laz2_xpath/txpathnumbervariable.asboolean.html + AsNumber laz2_xpath/txpathnumbervariable.asnumber.html + AsText laz2_xpath/txpathnumbervariable.astext.html + Value laz2_xpath/txpathnumbervariable.value.html + TXPathStringVariable laz2_xpath/txpathstringvariable.html + Create laz2_xpath/txpathstringvariable.create.html + TypeName laz2_xpath/txpathstringvariable.typename.html + AsBoolean laz2_xpath/txpathstringvariable.asboolean.html + AsNumber laz2_xpath/txpathstringvariable.asnumber.html + AsText laz2_xpath/txpathstringvariable.astext.html + Value laz2_xpath/txpathstringvariable.value.html + TXPathNSResolver laz2_xpath/txpathnsresolver.html + FNode laz2_xpath/txpathnsresolver.fnode.html + Create laz2_xpath/txpathnsresolver.create.html + LookupNamespaceURI laz2_xpath/txpathnsresolver.lookupnamespaceuri.html + TXPathScanner laz2_xpath/txpathscanner.html + Create laz2_xpath/txpathscanner.create.html + NextToken laz2_xpath/txpathscanner.nexttoken.html + PeekToken laz2_xpath/txpathscanner.peektoken.html + SkipToken laz2_xpath/txpathscanner.skiptoken.html + CurToken laz2_xpath/txpathscanner.curtoken.html + CurTokenString laz2_xpath/txpathscanner.curtokenstring.html + TXPathContext laz2_xpath/txpathcontext.html + ContextNode laz2_xpath/txpathcontext.contextnode.html + ContextPosition laz2_xpath/txpathcontext.contextposition.html + ContextSize laz2_xpath/txpathcontext.contextsize.html + Create laz2_xpath/txpathcontext.create.html + TXPathEnvironment laz2_xpath/txpathenvironment.html + xpLast laz2_xpath/txpathenvironment.xplast.html + xpPosition laz2_xpath/txpathenvironment.xpposition.html + xpCount laz2_xpath/txpathenvironment.xpcount.html + xpId laz2_xpath/txpathenvironment.xpid.html + xpLocalName laz2_xpath/txpathenvironment.xplocalname.html + xpNamespaceURI laz2_xpath/txpathenvironment.xpnamespaceuri.html + xpName laz2_xpath/txpathenvironment.xpname.html + xpString laz2_xpath/txpathenvironment.xpstring.html + xpConcat laz2_xpath/txpathenvironment.xpconcat.html + xpStartsWith laz2_xpath/txpathenvironment.xpstartswith.html + xpContains laz2_xpath/txpathenvironment.xpcontains.html + xpSubstringBefore laz2_xpath/txpathenvironment.xpsubstringbefore.html + xpSubstringAfter laz2_xpath/txpathenvironment.xpsubstringafter.html + xpSubstring laz2_xpath/txpathenvironment.xpsubstring.html + xpStringLength laz2_xpath/txpathenvironment.xpstringlength.html + xpNormalizeSpace laz2_xpath/txpathenvironment.xpnormalizespace.html + xpTranslate laz2_xpath/txpathenvironment.xptranslate.html + xpBoolean laz2_xpath/txpathenvironment.xpboolean.html + xpNot laz2_xpath/txpathenvironment.xpnot.html + xpTrue laz2_xpath/txpathenvironment.xptrue.html + xpFalse laz2_xpath/txpathenvironment.xpfalse.html + xpLang laz2_xpath/txpathenvironment.xplang.html + xpNumber laz2_xpath/txpathenvironment.xpnumber.html + xpSum laz2_xpath/txpathenvironment.xpsum.html + xpFloor laz2_xpath/txpathenvironment.xpfloor.html + xpCeiling laz2_xpath/txpathenvironment.xpceiling.html + xpRound laz2_xpath/txpathenvironment.xpround.html + Create laz2_xpath/txpathenvironment.create.html + Destroy laz2_xpath/txpathenvironment.destroy.html + GetFunctionIndex laz2_xpath/txpathenvironment.getfunctionindex.html + GetVariableIndex laz2_xpath/txpathenvironment.getvariableindex.html + AddFunction laz2_xpath/txpathenvironment.addfunction.html + AddVariable laz2_xpath/txpathenvironment.addvariable.html + RemoveFunction laz2_xpath/txpathenvironment.removefunction.html + RemoveVariable laz2_xpath/txpathenvironment.removevariable.html + FunctionCount laz2_xpath/txpathenvironment.functioncount.html + VariableCount laz2_xpath/txpathenvironment.variablecount.html + Functions laz2_xpath/txpathenvironment.functions.html + FunctionsByName laz2_xpath/txpathenvironment.functionsbyname.html + Variables laz2_xpath/txpathenvironment.variables.html + VariablesByName laz2_xpath/txpathenvironment.variablesbyname.html + TXPathExpression laz2_xpath/txpathexpression.html + Create laz2_xpath/txpathexpression.create.html + Destroy laz2_xpath/txpathexpression.destroy.html + Evaluate laz2_xpath/txpathexpression.evaluate.html + EvaluationError laz2_xpath/evaluationerror.html + EvaluateXPathExpression laz2_xpath/evaluatexpathexpression.html + LazClasses lazclasses/index.html + TFreeNotifyingObject lazclasses/tfreenotifyingobject.html + Destroy lazclasses/tfreenotifyingobject.destroy.html + AddFreeeNotification lazclasses/tfreenotifyingobject.addfreeenotification.html + RemoveFreeeNotification lazclasses/tfreenotifyingobject.removefreeenotification.html + AddFreeNotification lazclasses/tfreenotifyingobject.addfreenotification.html + RemoveFreeNotification lazclasses/tfreenotifyingobject.removefreenotification.html + TRefCountedObject lazclasses/trefcountedobject.html + DoFree lazclasses/trefcountedobject.dofree.html + DoReferenceAdded lazclasses/trefcountedobject.doreferenceadded.html + DoReferenceReleased lazclasses/trefcountedobject.doreferencereleased.html + RefCount lazclasses/trefcountedobject.refcount.html + Create lazclasses/trefcountedobject.create.html + Destroy lazclasses/trefcountedobject.destroy.html + AddReference lazclasses/trefcountedobject.addreference.html + ReleaseReference lazclasses/trefcountedobject.releasereference.html + TRefCntObjList lazclasses/trefcntobjlist.html + Notify lazclasses/trefcntobjlist.notify.html + ReleaseRefAndNil lazclasses/releaserefandnil.html + NilThenReleaseRef lazclasses/nilthenreleaseref.html + LazMethodList lazmethodlist/index.html + TMethodList lazmethodlist/tmethodlist.html + Destroy lazmethodlist/tmethodlist.destroy.html + Count lazmethodlist/tmethodlist.count.html + NextDownIndex lazmethodlist/tmethodlist.nextdownindex.html + IndexOf lazmethodlist/tmethodlist.indexof.html + Delete lazmethodlist/tmethodlist.delete.html + Remove lazmethodlist/tmethodlist.remove.html + Add lazmethodlist/tmethodlist.add.html + Insert lazmethodlist/tmethodlist.insert.html + Move lazmethodlist/tmethodlist.move.html + RemoveAllMethodsOfObject lazmethodlist/tmethodlist.removeallmethodsofobject.html + CallNotifyEvents lazmethodlist/tmethodlist.callnotifyevents.html + Items lazmethodlist/tmethodlist.items.html + AllowDuplicates lazmethodlist/tmethodlist.allowduplicates.html + LazConfigStorage lazconfigstorage/index.html + ConfigMemStorageFormatVersion lazconfigstorage/configmemstorageformatversion.html + TConfigStorageClass lazconfigstorage/tconfigstorageclass.html + TConfigMemStorageModification lazconfigstorage/tconfigmemstoragemodification.html + TConfigStorage lazconfigstorage/tconfigstorage.html + GetFullPathValue lazconfigstorage/tconfigstorage.getfullpathvalue.html + SetFullPathValue lazconfigstorage/tconfigstorage.setfullpathvalue.html + SetDeleteFullPathValue lazconfigstorage/tconfigstorage.setdeletefullpathvalue.html + DeleteFullPath lazconfigstorage/tconfigstorage.deletefullpath.html + DeleteFullPathValue lazconfigstorage/tconfigstorage.deletefullpathvalue.html + WriteProperty lazconfigstorage/tconfigstorage.writeproperty.html + ReadProperty lazconfigstorage/tconfigstorage.readproperty.html + Create lazconfigstorage/tconfigstorage.create.html + Destroy lazconfigstorage/tconfigstorage.destroy.html + Clear lazconfigstorage/tconfigstorage.clear.html + GetValue lazconfigstorage/tconfigstorage.getvalue.html + SetValue lazconfigstorage/tconfigstorage.setvalue.html + SetDeleteValue lazconfigstorage/tconfigstorage.setdeletevalue.html + DeletePath lazconfigstorage/tconfigstorage.deletepath.html + DeleteValue lazconfigstorage/tconfigstorage.deletevalue.html + CurrentBasePath lazconfigstorage/tconfigstorage.currentbasepath.html + ExtendPath lazconfigstorage/tconfigstorage.extendpath.html + AppendBasePath lazconfigstorage/tconfigstorage.appendbasepath.html + UndoAppendBasePath lazconfigstorage/tconfigstorage.undoappendbasepath.html + WriteToDisk lazconfigstorage/tconfigstorage.writetodisk.html + GetFilename lazconfigstorage/tconfigstorage.getfilename.html + WriteObject lazconfigstorage/tconfigstorage.writeobject.html + ReadObject lazconfigstorage/tconfigstorage.readobject.html + TConfigMemStorageNode lazconfigstorage/tconfigmemstoragenode.html + Name lazconfigstorage/tconfigmemstoragenode.name.html + Value lazconfigstorage/tconfigmemstoragenode.value.html + Parent lazconfigstorage/tconfigmemstoragenode.parent.html + Children lazconfigstorage/tconfigmemstoragenode.children.html + ClearChilds lazconfigstorage/tconfigmemstoragenode.clearchilds.html + Create lazconfigstorage/tconfigmemstoragenode.create.html + Destroy lazconfigstorage/tconfigmemstoragenode.destroy.html + TConfigMemStorage lazconfigstorage/tconfigmemstorage.html + DeleteFullPath lazconfigstorage/tconfigmemstorage.deletefullpath.html + DeleteFullPathValue lazconfigstorage/tconfigmemstorage.deletefullpathvalue.html + GetFullPathValue lazconfigstorage/tconfigmemstorage.getfullpathvalue.html + SetDeleteFullPathValue lazconfigstorage/tconfigmemstorage.setdeletefullpathvalue.html + SetFullPathValue lazconfigstorage/tconfigmemstorage.setfullpathvalue.html + Root lazconfigstorage/tconfigmemstorage.root.html + GetFilename lazconfigstorage/tconfigmemstorage.getfilename.html + WriteToDisk lazconfigstorage/tconfigmemstorage.writetodisk.html + Destroy lazconfigstorage/tconfigmemstorage.destroy.html + Clear lazconfigstorage/tconfigmemstorage.clear.html + SaveToConfig lazconfigstorage/tconfigmemstorage.savetoconfig.html + LoadFromConfig lazconfigstorage/tconfigmemstorage.loadfromconfig.html + WriteDebugReport lazconfigstorage/tconfigmemstorage.writedebugreport.html + LoadStringToStringTree lazconfigstorage/loadstringtostringtree.html + SaveStringToStringTree lazconfigstorage/savestringtostringtree.html + CompareConfigMemStorageNames lazconfigstorage/compareconfigmemstoragenames.html + CompareConfigMemStorageNodes lazconfigstorage/compareconfigmemstoragenodes.html + ComparePCharWithConfigMemStorageNode lazconfigstorage/comparepcharwithconfigmemstoragenode.html + LazLogger lazlogger/index.html + PLazLoggerLogGroup lazlogger/plazloggerloggroup.html + TLazLoggerFileHandle lazlogger/tlazloggerfilehandle.html + Create lazlogger/tlazloggerfilehandle.create.html + Destroy lazlogger/tlazloggerfilehandle.destroy.html + OpenFile lazlogger/tlazloggerfilehandle.openfile.html + CloseFile lazlogger/tlazloggerfilehandle.closefile.html + WriteToFile lazlogger/tlazloggerfilehandle.writetofile.html + WriteLnToFile lazlogger/tlazloggerfilehandle.writelntofile.html + LogName lazlogger/tlazloggerfilehandle.logname.html + UseStdOut lazlogger/tlazloggerfilehandle.usestdout.html + CloseLogFileBetweenWrites lazlogger/tlazloggerfilehandle.closelogfilebetweenwrites.html + WriteTarget lazlogger/tlazloggerfilehandle.writetarget.html + ActiveLogText lazlogger/tlazloggerfilehandle.activelogtext.html + TLazLoggerFile lazlogger/tlazloggerfile.html + DoInit lazlogger/tlazloggerfile.doinit.html + DoFinsh lazlogger/tlazloggerfile.dofinsh.html + IncreaseIndent lazlogger/tlazloggerfile.increaseindent.html + DecreaseIndent lazlogger/tlazloggerfile.decreaseindent.html + IndentChanged lazlogger/tlazloggerfile.indentchanged.html + CreateIndent lazlogger/tlazloggerfile.createindent.html + GetBlockHandler lazlogger/tlazloggerfile.getblockhandler.html + ClearAllBlockHandler lazlogger/tlazloggerfile.clearallblockhandler.html + DoDbgOut lazlogger/tlazloggerfile.dodbgout.html + DoDebugLn lazlogger/tlazloggerfile.dodebugln.html + DoDebuglnStack lazlogger/tlazloggerfile.dodebuglnstack.html + FileHandle lazlogger/tlazloggerfile.filehandle.html + Create + Destroy lazlogger/tlazloggerfile.destroy.html + Assign + CurrentIndentLevel lazlogger/tlazloggerfile.currentindentlevel.html + ParamForLogFileName lazlogger/tlazloggerfile.paramforlogfilename.html + EnvironmentForLogFileName lazlogger/tlazloggerfile.environmentforlogfilename.html + OnDebugLn lazlogger/tlazloggerfile.ondebugln.html + OnDbgOut lazlogger/tlazloggerfile.ondbgout.html + AddBlockHandler lazlogger/tlazloggerfile.addblockhandler.html + RemoveBlockHandler lazlogger/tlazloggerfile.removeblockhandler.html + BlockHandlerCount lazlogger/tlazloggerfile.blockhandlercount.html + LogName lazlogger/tlazloggerfile.logname.html + UseStdOut lazlogger/tlazloggerfile.usestdout.html + CloseLogFileBetweenWrites lazlogger/tlazloggerfile.closelogfilebetweenwrites.html + DebuglnStack lazlogger/debuglnstack.html + DbgOut lazlogger/dbgout.html + DebugLn lazlogger/debugln.html + DebugLnEnter lazlogger/debuglnenter.html + DebugLnExit lazlogger/debuglnexit.html + DbgS lazlogger/dbgs.html + DbgSJoin lazlogger/dbgsjoin.html + DbgSName lazlogger/dbgsname.html + dbgObjMem lazlogger/dbgobjmem.html + dbghex lazlogger/dbghex.html + dbgMemRange lazlogger/dbgmemrange.html + dbgMemStream lazlogger/dbgmemstream.html + DbgStr lazlogger/dbgstr.html + DbgWideStr lazlogger/dbgwidestr.html + ConvertLineEndings lazlogger/convertlineendings.html + ReplaceSubstring lazlogger/replacesubstring.html + GetDebugLogger lazlogger/getdebuglogger.html + SetDebugLogger lazlogger/setdebuglogger.html + LazLoggerBase lazloggerbase/index.html + TLazLoggerLogGroupFlag lazloggerbase/tlazloggerloggroupflag.html + TLazLoggerLogGroupFlags lazloggerbase/tlazloggerloggroupflags.html + TLazLoggerLogGroup lazloggerbase/tlazloggerloggroup.html + PLazLoggerLogGroup lazloggerbase/plazloggerloggroup.html + TLazLoggerWriteTarget lazloggerbase/tlazloggerwritetarget.html + TLazLoggerWriteEvent lazloggerbase/tlazloggerwriteevent.html + TLazLoggerWidgetSetWriteEvent lazloggerbase/tlazloggerwidgetsetwriteevent.html + TLazDebugLoggerCreator lazloggerbase/tlazdebugloggercreator.html + TLazLoggerBlockHandler lazloggerbase/tlazloggerblockhandler.html + EnterBlock lazloggerbase/tlazloggerblockhandler.enterblock.html + ExitBlock lazloggerbase/tlazloggerblockhandler.exitblock.html + TLazLoggerLogGroupList lazloggerbase/tlazloggerloggrouplist.html + Add lazloggerbase/tlazloggerloggrouplist.add.html + FindOrAdd lazloggerbase/tlazloggerloggrouplist.findoradd.html + Remove lazloggerbase/tlazloggerloggrouplist.remove.html + Create lazloggerbase/tlazloggerloggrouplist.create.html + Destroy lazloggerbase/tlazloggerloggrouplist.destroy.html + Assign lazloggerbase/tlazloggerloggrouplist.assign.html + IndexOf lazloggerbase/tlazloggerloggrouplist.indexof.html + Find lazloggerbase/tlazloggerloggrouplist.find.html + Count lazloggerbase/tlazloggerloggrouplist.count.html + Item lazloggerbase/tlazloggerloggrouplist.item.html + TLazLogger lazloggerbase/tlazlogger.html + DoInit lazloggerbase/tlazlogger.doinit.html + DoFinsh lazloggerbase/tlazlogger.dofinsh.html + IncreaseIndent lazloggerbase/tlazlogger.increaseindent.html + DecreaseIndent lazloggerbase/tlazlogger.decreaseindent.html + IndentChanged lazloggerbase/tlazlogger.indentchanged.html + GetBlockHandler lazloggerbase/tlazlogger.getblockhandler.html + DoDbgOut lazloggerbase/tlazlogger.dodbgout.html + DoDebugLn lazloggerbase/tlazlogger.dodebugln.html + DoDebuglnStack lazloggerbase/tlazlogger.dodebuglnstack.html + ArgsToString lazloggerbase/tlazlogger.argstostring.html + IsInitialized lazloggerbase/tlazlogger.isinitialized.html + Create lazloggerbase/tlazlogger.create.html + Destroy lazloggerbase/tlazlogger.destroy.html + Assign lazloggerbase/tlazlogger.assign.html + Init lazloggerbase/tlazlogger.init.html + Finish lazloggerbase/tlazlogger.finish.html + CurrentIndentLevel lazloggerbase/tlazlogger.currentindentlevel.html + NestLvlIndent lazloggerbase/tlazlogger.nestlvlindent.html + MaxNestPrefixLen lazloggerbase/tlazlogger.maxnestprefixlen.html + RegisterLogGroup lazloggerbase/tlazlogger.registerloggroup.html + FindOrRegisterLogGroup lazloggerbase/tlazlogger.findorregisterloggroup.html + LogGroupList lazloggerbase/tlazlogger.loggrouplist.html + UseGlobalLogGroupList lazloggerbase/tlazlogger.usegloballoggrouplist.html + AddBlockHandler lazloggerbase/tlazlogger.addblockhandler.html + RemoveBlockHandler lazloggerbase/tlazlogger.removeblockhandler.html + BlockHandlerCount lazloggerbase/tlazlogger.blockhandlercount.html + BlockHandler lazloggerbase/tlazlogger.blockhandler.html + DebuglnStack lazloggerbase/tlazlogger.debuglnstack.html + DbgOut lazloggerbase/tlazlogger.dbgout.html + DebugLn lazloggerbase/tlazlogger.debugln.html + DebugLnEnter lazloggerbase/tlazlogger.debuglnenter.html + DebugLnExit lazloggerbase/tlazlogger.debuglnexit.html + TLazLoggerWithGroupParam lazloggerbase/tlazloggerwithgroupparam.html + Create lazloggerbase/tlazloggerwithgroupparam.create.html + Assign lazloggerbase/tlazloggerwithgroupparam.assign.html + RegisterLogGroup lazloggerbase/tlazloggerwithgroupparam.registerloggroup.html + FindOrRegisterLogGroup lazloggerbase/tlazloggerwithgroupparam.findorregisterloggroup.html + ParamForEnabledLogGroups lazloggerbase/tlazloggerwithgroupparam.paramforenabledloggroups.html + TLazLoggerNoOutput lazloggerbase/tlazloggernooutput.html + DebuglnStack lazloggerbase/debuglnstack.html + DbgOut lazloggerbase/dbgout.html + DebugLn lazloggerbase/debugln.html + DebugLnEnter lazloggerbase/debuglnenter.html + DebugLnExit lazloggerbase/debuglnexit.html + DbgS lazloggerbase/dbgs.html + DbgSJoin lazloggerbase/dbgsjoin.html + DbgSName lazloggerbase/dbgsname.html + dbgObjMem lazloggerbase/dbgobjmem.html + dbghex lazloggerbase/dbghex.html + dbgMemRange lazloggerbase/dbgmemrange.html + dbgMemStream lazloggerbase/dbgmemstream.html + ConvertLineEndings lazloggerbase/convertlineendings.html + GetParamByNameCount lazloggerbase/getparambynamecount.html + GetParamByName lazloggerbase/getparambyname.html + GetDebugLoggerGroups lazloggerbase/getdebugloggergroups.html + SetDebugLoggerGroups lazloggerbase/setdebugloggergroups.html + GetDebugLogger lazloggerbase/getdebuglogger.html + GetExistingDebugLogger lazloggerbase/getexistingdebuglogger.html + SetDebugLogger lazloggerbase/setdebuglogger.html + RecreateDebugLogger lazloggerbase/recreatedebuglogger.html + LazDebugLoggerCreator lazloggerbase/lazdebugloggercreator.html + OnWidgetSetDebugLn lazloggerbase/onwidgetsetdebugln.html + OnWidgetSetDbgOut lazloggerbase/onwidgetsetdbgout.html + Laz_DOM laz_dom/index.html + TDOMImplementation laz_dom/tdomimplementation.html + TDOMDocumentFragment laz_dom/tdomdocumentfragment.html + TDOMDocument laz_dom/tdomdocument.html + TDOMNode laz_dom/tdomnode.html + TDOMNodeList laz_dom/tdomnodelist.html + TDOMNamedNodeMap laz_dom/tdomnamednodemap.html + TDOMCharacterData laz_dom/tdomcharacterdata.html + TDOMAttr laz_dom/tdomattr.html + TDOMElement laz_dom/tdomelement.html + TDOMText laz_dom/tdomtext.html + TDOMComment laz_dom/tdomcomment.html + TDOMCDATASection laz_dom/tdomcdatasection.html + TDOMDocumentType laz_dom/tdomdocumenttype.html + TDOMNotation laz_dom/tdomnotation.html + TDOMEntity laz_dom/tdomentity.html + TDOMEntityReference laz_dom/tdomentityreference.html + TDOMProcessingInstruction laz_dom/tdomprocessinginstruction.html + DOMString laz_dom/domstring.html + DOMPChar laz_dom/dompchar.html + EDOMError laz_dom/edomerror.html + LazFreeTypeFontCollection lazfreetypefontcollection/index.html + TFontCollectionItem lazfreetypefontcollection/tfontcollectionitem.html + GetFilename lazfreetypefontcollection/tfontcollectionitem.getfilename.html + GetBold lazfreetypefontcollection/tfontcollectionitem.getbold.html + GetInformation lazfreetypefontcollection/tfontcollectionitem.getinformation.html + GetItalic lazfreetypefontcollection/tfontcollectionitem.getitalic.html + GetStyleCount lazfreetypefontcollection/tfontcollectionitem.getstylecount.html + GetStyles lazfreetypefontcollection/tfontcollectionitem.getstyles.html + GetStyle lazfreetypefontcollection/tfontcollectionitem.getstyle.html + GetVersionNumber lazfreetypefontcollection/tfontcollectionitem.getversionnumber.html + NotifyDestroy lazfreetypefontcollection/tfontcollectionitem.notifydestroy.html + Init lazfreetypefontcollection/tfontcollectionitem.init.html + Create lazfreetypefontcollection/tfontcollectionitem.create.html + Destroy lazfreetypefontcollection/tfontcollectionitem.destroy.html + HasStyle lazfreetypefontcollection/tfontcollectionitem.hasstyle.html + Information lazfreetypefontcollection/tfontcollectionitem.information.html + VersionNumber lazfreetypefontcollection/tfontcollectionitem.versionnumber.html + CreateFont lazfreetypefontcollection/tfontcollectionitem.createfont.html + QueryFace lazfreetypefontcollection/tfontcollectionitem.queryface.html + ReleaseFace lazfreetypefontcollection/tfontcollectionitem.releaseface.html + UsePostscriptStyle lazfreetypefontcollection/tfontcollectionitem.usepostscriptstyle.html + TFamilyCollectionItem lazfreetypefontcollection/tfamilycollectionitem.html + GetFontByIndex lazfreetypefontcollection/tfamilycollectionitem.getfontbyindex.html + GetFontByStyles lazfreetypefontcollection/tfamilycollectionitem.getfontbystyles.html + GetFontIndexByStyles lazfreetypefontcollection/tfamilycollectionitem.getfontindexbystyles.html + GetStyle lazfreetypefontcollection/tfamilycollectionitem.getstyle.html + AddStyle lazfreetypefontcollection/tfamilycollectionitem.addstyle.html + RemoveStyle lazfreetypefontcollection/tfamilycollectionitem.removestyle.html + GetStyles lazfreetypefontcollection/tfamilycollectionitem.getstyles.html + GetFamilyName lazfreetypefontcollection/tfamilycollectionitem.getfamilyname.html + GetFontCount lazfreetypefontcollection/tfamilycollectionitem.getfontcount.html + GetStyleCount lazfreetypefontcollection/tfamilycollectionitem.getstylecount.html + RebuildStyleList lazfreetypefontcollection/tfamilycollectionitem.rebuildstylelist.html + Create lazfreetypefontcollection/tfamilycollectionitem.create.html + AddFont lazfreetypefontcollection/tfamilycollectionitem.addfont.html + RemoveFont lazfreetypefontcollection/tfamilycollectionitem.removefont.html + GetFont lazfreetypefontcollection/tfamilycollectionitem.getfont.html + GetFontIndex lazfreetypefontcollection/tfamilycollectionitem.getfontindex.html + HasStyle lazfreetypefontcollection/tfamilycollectionitem.hasstyle.html + TFreeTypeFontCollection lazfreetypefontcollection/tfreetypefontcollection.html + GetFont lazfreetypefontcollection/tfreetypefontcollection.getfont.html + GetFamily lazfreetypefontcollection/tfreetypefontcollection.getfamily.html + GetFamilyCount lazfreetypefontcollection/tfreetypefontcollection.getfamilycount.html + GetFontCount lazfreetypefontcollection/tfreetypefontcollection.getfontcount.html + RemoveAndFreeFamily lazfreetypefontcollection/tfreetypefontcollection.removeandfreefamily.html + Create lazfreetypefontcollection/tfreetypefontcollection.create.html + Clear lazfreetypefontcollection/tfreetypefontcollection.clear.html + BeginUpdate lazfreetypefontcollection/tfreetypefontcollection.beginupdate.html + AddFolder lazfreetypefontcollection/tfreetypefontcollection.addfolder.html + RemoveFolder lazfreetypefontcollection/tfreetypefontcollection.removefolder.html + AddFile lazfreetypefontcollection/tfreetypefontcollection.addfile.html + RemoveFile lazfreetypefontcollection/tfreetypefontcollection.removefile.html + AddStream lazfreetypefontcollection/tfreetypefontcollection.addstream.html + EndUpdate lazfreetypefontcollection/tfreetypefontcollection.endupdate.html + Destroy lazfreetypefontcollection/tfreetypefontcollection.destroy.html + FontFileEnumerator lazfreetypefontcollection/tfreetypefontcollection.fontfileenumerator.html + FamilyEnumerator lazfreetypefontcollection/tfreetypefontcollection.familyenumerator.html + SetDefaultFreeTypeFontCollection lazfreetypefontcollection/setdefaultfreetypefontcollection.html + LazLoggerDummy lazloggerdummy/index.html + TLazLoggerLogGroupFlag lazloggerdummy/tlazloggerloggroupflag.html + TLazLoggerLogGroupFlags lazloggerdummy/tlazloggerloggroupflags.html + TLazLoggerLogGroup lazloggerdummy/tlazloggerloggroup.html + PLazLoggerLogGroup lazloggerdummy/plazloggerloggroup.html + TLazLoggerWriteEvent lazloggerdummy/tlazloggerwriteevent.html + TLazDebugLoggerCreator lazloggerdummy/tlazdebugloggercreator.html + TLazLoggerBlockHandler lazloggerdummy/tlazloggerblockhandler.html + IncreaseIndent lazloggerdummy/tlazloggerblockhandler.increaseindent.html + DecreaseIndent lazloggerdummy/tlazloggerblockhandler.decreaseindent.html + TLazLoggerLogGroupList lazloggerdummy/tlazloggerloggrouplist.html + Assign lazloggerdummy/tlazloggerloggrouplist.assign.html + IndexOf lazloggerdummy/tlazloggerloggrouplist.indexof.html + Find lazloggerdummy/tlazloggerloggrouplist.find.html + Count lazloggerdummy/tlazloggerloggrouplist.count.html + Item lazloggerdummy/tlazloggerloggrouplist.item.html + TLazLogger lazloggerdummy/tlazlogger.html + Assign lazloggerdummy/tlazlogger.assign.html + Init lazloggerdummy/tlazlogger.init.html + Finish lazloggerdummy/tlazlogger.finish.html + NestLvlIndent lazloggerdummy/tlazlogger.nestlvlindent.html + MaxNestPrefixLen lazloggerdummy/tlazlogger.maxnestprefixlen.html + RegisterLogGroup lazloggerdummy/tlazlogger.registerloggroup.html + FindOrRegisterLogGroup lazloggerdummy/tlazlogger.findorregisterloggroup.html + LogGroupList lazloggerdummy/tlazlogger.loggrouplist.html + UseGlobalLogGroupList lazloggerdummy/tlazlogger.usegloballoggrouplist.html + DebuglnStack lazloggerdummy/tlazlogger.debuglnstack.html + DbgOut lazloggerdummy/tlazlogger.dbgout.html + DebugLn lazloggerdummy/tlazlogger.debugln.html + DebugLnEnter lazloggerdummy/tlazlogger.debuglnenter.html + DebugLnExit lazloggerdummy/tlazlogger.debuglnexit.html + DebuglnStack lazloggerdummy/debuglnstack.html + DbgOut lazloggerdummy/dbgout.html + DebugLn lazloggerdummy/debugln.html + DebugLnEnter lazloggerdummy/debuglnenter.html + DebugLnExit lazloggerdummy/debuglnexit.html + DbgS lazloggerdummy/dbgs.html + DbgSJoin lazloggerdummy/dbgsjoin.html + DbgSName lazloggerdummy/dbgsname.html + dbgObjMem lazloggerdummy/dbgobjmem.html + dbghex lazloggerdummy/dbghex.html + dbgMemRange lazloggerdummy/dbgmemrange.html + dbgMemStream lazloggerdummy/dbgmemstream.html + GetDebugLoggerGroups lazloggerdummy/getdebugloggergroups.html + SetDebugLoggerGroups lazloggerdummy/setdebugloggergroups.html + GetDebugLogger lazloggerdummy/getdebuglogger.html + GetExistingDebugLogger lazloggerdummy/getexistingdebuglogger.html + SetDebugLogger lazloggerdummy/setdebuglogger.html + RecreateDebugLogger lazloggerdummy/recreatedebuglogger.html + LazDebugLoggerCreator lazloggerdummy/lazdebugloggercreator.html + OnWidgetSetDebugLn lazloggerdummy/onwidgetsetdebugln.html + OnWidgetSetDbgOut lazloggerdummy/onwidgetsetdbgout.html + LazLoggerProfiling lazloggerprofiling/index.html + TLazLoggerBlockTimer lazloggerprofiling/tlazloggerblocktimer.html + Create lazloggerprofiling/tlazloggerblocktimer.create.html + EnterBlock lazloggerprofiling/tlazloggerblocktimer.enterblock.html + ExitBlock lazloggerprofiling/tlazloggerblocktimer.exitblock.html + MaxDepth lazloggerprofiling/tlazloggerblocktimer.maxdepth.html + TimeDiff lazloggerprofiling/tlazloggerblocktimer.timediff.html + Nested lazloggerprofiling/tlazloggerblocktimer.nested.html + TLazLoggerBlockMemWatch lazloggerprofiling/tlazloggerblockmemwatch.html + Create lazloggerprofiling/tlazloggerblockmemwatch.create.html + EnterBlock lazloggerprofiling/tlazloggerblockmemwatch.enterblock.html + ExitBlock lazloggerprofiling/tlazloggerblockmemwatch.exitblock.html + MaxDepth lazloggerprofiling/tlazloggerblockmemwatch.maxdepth.html + MemDiff lazloggerprofiling/tlazloggerblockmemwatch.memdiff.html + Nested lazloggerprofiling/tlazloggerblockmemwatch.nested.html + DbgsMemUsed lazloggerprofiling/dbgsmemused.html + DbgsTimeUsed lazloggerprofiling/dbgstimeused.html + DbgStartTimer lazloggerprofiling/dbgstarttimer.html + DbgStopTimer lazloggerprofiling/dbgstoptimer.html + DbgStartMemWatch lazloggerprofiling/dbgstartmemwatch.html + DbgStopMemWatch lazloggerprofiling/dbgstopmemwatch.html + LazUTF8SysUtils lazutf8sysutils/index.html + NowUTC lazutf8sysutils/nowutc.html + GetTickCount64 lazutf8sysutils/gettickcount64.html + lazutf16 lazutf16/index.html + UTF16CharacterLength lazutf16/utf16characterlength.html + UTF16Length lazutf16/utf16length.html + UTF16CharacterToUnicode lazutf16/utf16charactertounicode.html + UnicodeToUTF16 lazutf16/unicodetoutf16.html + IsUTF16CharValid lazutf16/isutf16charvalid.html + IsUTF16StringValid lazutf16/isutf16stringvalid.html + UnicodeLowercase lazutf16/unicodelowercase.html + UTF8LowerCaseViaTables lazutf16/utf8lowercaseviatables.html + LazUtils lazutils/index.html + Laz_XMLCfg laz_xmlcfg/index.html + TXMLConfig laz_xmlcfg/txmlconfig.html + TRttiXMLConfig laz_xmlcfg/trttixmlconfig.html + Laz_XMLRead laz_xmlread/index.html + xrfOldXMLRead laz_xmlread/xrfoldxmlread.html + EXMLReadError laz_xmlread/exmlreaderror.html + ReadXMLFile laz_xmlread/readxmlfile.html + ReadXMLFragment laz_xmlread/readxmlfragment.html + ReadDTDFile laz_xmlread/readdtdfile.html + Laz_XMLStreaming laz_xmlstreaming/index.html + TXMLObjectWriterStackElType laz_xmlstreaming/txmlobjectwriterstackeltype.html + TXMLObjectWriterClass laz_xmlstreaming/txmlobjectwriterclass.html + TXMLObjectReaderClass laz_xmlstreaming/txmlobjectreaderclass.html + TXMLObjectWriterStackEl laz_xmlstreaming/txmlobjectwriterstackel.html + Element laz_xmlstreaming/txmlobjectwriterstackel.element.html + Parent laz_xmlstreaming/txmlobjectwriterstackel.parent.html + ElemType laz_xmlstreaming/txmlobjectwriterstackel.elemtype.html + PropertyName laz_xmlstreaming/txmlobjectwriterstackel.propertyname.html + TXMLObjectWriter laz_xmlstreaming/txmlobjectwriter.html + GetPropertyElement laz_xmlstreaming/txmlobjectwriter.getpropertyelement.html + Create laz_xmlstreaming/txmlobjectwriter.create.html + BeginCollection laz_xmlstreaming/txmlobjectwriter.begincollection.html + BeginComponent laz_xmlstreaming/txmlobjectwriter.begincomponent.html + BeginList laz_xmlstreaming/txmlobjectwriter.beginlist.html + EndList laz_xmlstreaming/txmlobjectwriter.endlist.html + BeginProperty laz_xmlstreaming/txmlobjectwriter.beginproperty.html + EndProperty laz_xmlstreaming/txmlobjectwriter.endproperty.html + WriteBinary laz_xmlstreaming/txmlobjectwriter.writebinary.html + WriteBoolean laz_xmlstreaming/txmlobjectwriter.writeboolean.html + WriteFloat laz_xmlstreaming/txmlobjectwriter.writefloat.html + WriteSingle laz_xmlstreaming/txmlobjectwriter.writesingle.html + WriteCurrency laz_xmlstreaming/txmlobjectwriter.writecurrency.html + WriteDate laz_xmlstreaming/txmlobjectwriter.writedate.html + WriteIdent laz_xmlstreaming/txmlobjectwriter.writeident.html + WriteInteger laz_xmlstreaming/txmlobjectwriter.writeinteger.html + WriteMethodName laz_xmlstreaming/txmlobjectwriter.writemethodname.html + WriteSet laz_xmlstreaming/txmlobjectwriter.writeset.html + WriteString laz_xmlstreaming/txmlobjectwriter.writestring.html + WriteWideString laz_xmlstreaming/txmlobjectwriter.writewidestring.html + WriteUInt64 laz_xmlstreaming/txmlobjectwriter.writeuint64.html + WriteUnicodeString laz_xmlstreaming/txmlobjectwriter.writeunicodestring.html + WriteVariant laz_xmlstreaming/txmlobjectwriter.writevariant.html + Write laz_xmlstreaming/txmlobjectwriter.write.html + Doc laz_xmlstreaming/txmlobjectwriter.doc.html + TXMLObjectReader laz_xmlstreaming/txmlobjectreader.html + Create laz_xmlstreaming/txmlobjectreader.create.html + Destroy laz_xmlstreaming/txmlobjectreader.destroy.html + GetRootClassName laz_xmlstreaming/txmlobjectreader.getrootclassname.html + NextValue laz_xmlstreaming/txmlobjectreader.nextvalue.html + ReadValue laz_xmlstreaming/txmlobjectreader.readvalue.html + BeginRootComponent laz_xmlstreaming/txmlobjectreader.beginrootcomponent.html + BeginComponent laz_xmlstreaming/txmlobjectreader.begincomponent.html + BeginProperty laz_xmlstreaming/txmlobjectreader.beginproperty.html + ReadBinary laz_xmlstreaming/txmlobjectreader.readbinary.html + ReadFloat laz_xmlstreaming/txmlobjectreader.readfloat.html + ReadSingle laz_xmlstreaming/txmlobjectreader.readsingle.html + ReadCurrency laz_xmlstreaming/txmlobjectreader.readcurrency.html + ReadDate laz_xmlstreaming/txmlobjectreader.readdate.html + ReadIdent laz_xmlstreaming/txmlobjectreader.readident.html + ReadInt8 laz_xmlstreaming/txmlobjectreader.readint8.html + ReadInt16 laz_xmlstreaming/txmlobjectreader.readint16.html + ReadInt32 laz_xmlstreaming/txmlobjectreader.readint32.html + ReadInt64 laz_xmlstreaming/txmlobjectreader.readint64.html + ReadSet laz_xmlstreaming/txmlobjectreader.readset.html + ReadStr laz_xmlstreaming/txmlobjectreader.readstr.html + ReadString laz_xmlstreaming/txmlobjectreader.readstring.html + ReadWideString laz_xmlstreaming/txmlobjectreader.readwidestring.html + ReadUnicodeString laz_xmlstreaming/txmlobjectreader.readunicodestring.html + SkipComponent laz_xmlstreaming/txmlobjectreader.skipcomponent.html + SkipValue laz_xmlstreaming/txmlobjectreader.skipvalue.html + Read laz_xmlstreaming/txmlobjectreader.read.html + Doc laz_xmlstreaming/txmlobjectreader.doc.html + Element laz_xmlstreaming/txmlobjectreader.element.html + ElementPosition laz_xmlstreaming/txmlobjectreader.elementposition.html + WriteComponentToXMLStream laz_xmlstreaming/writecomponenttoxmlstream.html + Laz_XMLWrite laz_xmlwrite/index.html + xwfOldXMLWrite laz_xmlwrite/xwfoldxmlwrite.html + WriteXMLFile laz_xmlwrite/writexmlfile.html + WriteXML laz_xmlwrite/writexml.html + PasWString paswstring/index.html + SetPasWidestringManager paswstring/setpaswidestringmanager.html + LConvEncoding lconvencoding/index.html + EncodingUTF8 lconvencoding/encodingutf8.html + EncodingAnsi lconvencoding/encodingansi.html + EncodingUTF8BOM lconvencoding/encodingutf8bom.html + EncodingUCS2LE lconvencoding/encodingucs2le.html + EncodingUCS2BE lconvencoding/encodingucs2be.html + EncodingCP1250 lconvencoding/encodingcp1250.html + EncodingCP1251 lconvencoding/encodingcp1251.html + EncodingCP1252 lconvencoding/encodingcp1252.html + EncodingCP1253 lconvencoding/encodingcp1253.html + EncodingCP1254 lconvencoding/encodingcp1254.html + EncodingCP1255 lconvencoding/encodingcp1255.html + EncodingCP1256 lconvencoding/encodingcp1256.html + EncodingCP1257 lconvencoding/encodingcp1257.html + EncodingCP1258 lconvencoding/encodingcp1258.html + EncodingCP437 lconvencoding/encodingcp437.html + EncodingCP850 lconvencoding/encodingcp850.html + EncodingCP852 lconvencoding/encodingcp852.html + EncodingCP866 lconvencoding/encodingcp866.html + EncodingCP874 lconvencoding/encodingcp874.html + EncodingCP932 lconvencoding/encodingcp932.html + EncodingCP936 lconvencoding/encodingcp936.html + EncodingCP949 lconvencoding/encodingcp949.html + EncodingCP950 lconvencoding/encodingcp950.html + EncodingCPMac lconvencoding/encodingcpmac.html + EncodingCPKOI8 lconvencoding/encodingcpkoi8.html + EncodingCPIso1 lconvencoding/encodingcpiso1.html + EncodingCPIso2 lconvencoding/encodingcpiso2.html + EncodingCPIso15 lconvencoding/encodingcpiso15.html + UTF8BOM lconvencoding/utf8bom.html + UTF16BEBOM lconvencoding/utf16bebom.html + UTF16LEBOM lconvencoding/utf16lebom.html + UTF32BEBOM lconvencoding/utf32bebom.html + UTF32LEBOM lconvencoding/utf32lebom.html + TConvertEncodingFunction lconvencoding/tconvertencodingfunction.html + TConvertUTF8ToEncodingFunc lconvencoding/tconvertutf8toencodingfunc.html + TCharToUTF8Table lconvencoding/tchartoutf8table.html + TUnicodeToCharID lconvencoding/tunicodetocharid.html + GuessEncoding lconvencoding/guessencoding.html + ConvertEncodingFromUTF8 lconvencoding/convertencodingfromutf8.html + ConvertEncodingToUTF8 lconvencoding/convertencodingtoutf8.html + ConvertEncoding lconvencoding/convertencoding.html + GetDefaultTextEncoding lconvencoding/getdefaulttextencoding.html + GetConsoleTextEncoding lconvencoding/getconsoletextencoding.html + NormalizeEncoding lconvencoding/normalizeencoding.html + UTF8BOMToUTF8 lconvencoding/utf8bomtoutf8.html + ISO_8859_1ToUTF8 lconvencoding/iso_8859_1toutf8.html + ISO_8859_15ToUTF8 lconvencoding/iso_8859_15toutf8.html + ISO_8859_2ToUTF8 lconvencoding/iso_8859_2toutf8.html + CP1250ToUTF8 lconvencoding/cp1250toutf8.html + CP1251ToUTF8 lconvencoding/cp1251toutf8.html + CP1252ToUTF8 lconvencoding/cp1252toutf8.html + CP1253ToUTF8 lconvencoding/cp1253toutf8.html + CP1254ToUTF8 lconvencoding/cp1254toutf8.html + CP1255ToUTF8 lconvencoding/cp1255toutf8.html + CP1256ToUTF8 lconvencoding/cp1256toutf8.html + CP1257ToUTF8 lconvencoding/cp1257toutf8.html + CP1258ToUTF8 lconvencoding/cp1258toutf8.html + CP437ToUTF8 lconvencoding/cp437toutf8.html + CP850ToUTF8 lconvencoding/cp850toutf8.html + CP852ToUTF8 lconvencoding/cp852toutf8.html + CP866ToUTF8 lconvencoding/cp866toutf8.html + CP874ToUTF8 lconvencoding/cp874toutf8.html + KOI8ToUTF8 lconvencoding/koi8toutf8.html + MacintoshToUTF8 lconvencoding/macintoshtoutf8.html + SingleByteToUTF8 lconvencoding/singlebytetoutf8.html + UCS2LEToUTF8 lconvencoding/ucs2letoutf8.html + UCS2BEToUTF8 lconvencoding/ucs2betoutf8.html + UTF8ToUTF8BOM lconvencoding/utf8toutf8bom.html + UTF8ToISO_8859_1 lconvencoding/utf8toiso_8859_1.html + UTF8ToISO_8859_15 lconvencoding/utf8toiso_8859_15.html + UTF8ToISO_8859_2 lconvencoding/utf8toiso_8859_2.html + UTF8ToCP1250 lconvencoding/utf8tocp1250.html + UTF8ToCP1251 lconvencoding/utf8tocp1251.html + UTF8ToCP1252 lconvencoding/utf8tocp1252.html + UTF8ToCP1253 lconvencoding/utf8tocp1253.html + UTF8ToCP1254 lconvencoding/utf8tocp1254.html + UTF8ToCP1255 lconvencoding/utf8tocp1255.html + UTF8ToCP1256 lconvencoding/utf8tocp1256.html + UTF8ToCP1257 lconvencoding/utf8tocp1257.html + UTF8ToCP1258 lconvencoding/utf8tocp1258.html + UTF8ToCP437 lconvencoding/utf8tocp437.html + UTF8ToCP850 lconvencoding/utf8tocp850.html + UTF8ToCP852 lconvencoding/utf8tocp852.html + UTF8ToCP866 lconvencoding/utf8tocp866.html + UTF8ToCP874 lconvencoding/utf8tocp874.html + UTF8ToKOI8 lconvencoding/utf8tokoi8.html + UTF8ToKOI8U lconvencoding/utf8tokoi8u.html + UTF8ToKOI8RU lconvencoding/utf8tokoi8ru.html + UTF8ToMacintosh lconvencoding/utf8tomacintosh.html + UTF8ToSingleByte lconvencoding/utf8tosinglebyte.html + UTF8ToUCS2LE lconvencoding/utf8toucs2le.html + UTF8ToUCS2BE lconvencoding/utf8toucs2be.html + CP932ToUTF8 lconvencoding/cp932toutf8.html + CP936ToUTF8 lconvencoding/cp936toutf8.html + CP949ToUTF8 lconvencoding/cp949toutf8.html + CP950ToUTF8 lconvencoding/cp950toutf8.html + DBCSToUTF8 lconvencoding/dbcstoutf8.html + UTF8ToCP932 lconvencoding/utf8tocp932.html + UTF8ToCP936 lconvencoding/utf8tocp936.html + UTF8ToCP949 lconvencoding/utf8tocp949.html + UTF8ToCP950 lconvencoding/utf8tocp950.html + UTF8ToDBCS lconvencoding/utf8todbcs.html + GetSupportedEncodings lconvencoding/getsupportedencodings.html + ConvertAnsiToUTF8 lconvencoding/convertansitoutf8.html + ConvertUTF8ToAnsi lconvencoding/convertutf8toansi.html + TTCache ttcache/index.html + PList_Element ttcache/plist_element.html + TList_Element ttcache/tlist_element.html + TSingle_List ttcache/tsingle_list.html + TConstructor ttcache/tconstructor.html + TDestructor ttcache/tdestructor.html + PCache_Class ttcache/pcache_class.html + TCache_Class ttcache/tcache_class.html + PCache ttcache/pcache.html + TCache ttcache/tcache.html + Cache_Create ttcache/cache_create.html + Cache_Destroy ttcache/cache_destroy.html + Cache_New ttcache/cache_new.html + Cache_Done ttcache/cache_done.html + Element_New ttcache/element_new.html + Element_Done ttcache/element_done.html + TTCache_Init ttcache/ttcache_init.html + TTCache_Done ttcache/ttcache_done.html + TTCalc ttcalc/index.html + Int16 ttcalc/int16.html + Word16 ttcalc/word16.html + Int32 ttcalc/int32.html + Word32 ttcalc/word32.html + MulDiv ttcalc/muldiv.html + MulDiv_Round ttcalc/muldiv_round.html + MulTo64 ttcalc/multo64.html + Div64by32 ttcalc/div64by32.html + Order64 ttcalc/order64.html + Order32 ttcalc/order32.html + Sqrt32 ttcalc/sqrt32.html + Sqrt64 ttcalc/sqrt64.html + TTCMap ttcmap/index.html + TCMap0 ttcmap/tcmap0.html + TCMap2SubHeader ttcmap/tcmap2subheader.html + TCMap2SubHeaders ttcmap/tcmap2subheaders.html + PCMap2SubHeaders ttcmap/pcmap2subheaders.html + TCMap2 ttcmap/tcmap2.html + TCMap4Segment ttcmap/tcmap4segment.html + TCMap4Segments ttcmap/tcmap4segments.html + PCMap4Segments ttcmap/pcmap4segments.html + TCMap4 ttcmap/tcmap4.html + TCMap6 ttcmap/tcmap6.html + PCMapTable ttcmap/pcmaptable.html + TCMapTable ttcmap/tcmaptable.html + TCMapTables ttcmap/tcmaptables.html + PCMapTables ttcmap/pcmaptables.html + CharMap_Load ttcmap/charmap_load.html + CharMap_Free ttcmap/charmap_free.html + CharMap_Index ttcmap/charmap_index.html + TTDebug ttdebug/index.html + TTObjs ttobjs/index.html + Default_GraphicsState ttobjs/default_graphicsstate.html + MaxCodeRanges ttobjs/maxcoderanges.html + TT_CodeRange_Font ttobjs/tt_coderange_font.html + TT_CodeRange_Cvt ttobjs/tt_coderange_cvt.html + TT_CodeRange_Glyph ttobjs/tt_coderange_glyph.html + CvtFlag_None ttobjs/cvtflag_none.html + CvtFlag_X ttobjs/cvtflag_x.html + CvtFlag_Y ttobjs/cvtflag_y.html + CvtFlag_Both ttobjs/cvtflag_both.html + PGraphicsState ttobjs/pgraphicsstate.html + TGraphicsState ttobjs/tgraphicsstate.html + TCodeRange ttobjs/tcoderange.html + PCodeRange ttobjs/pcoderange.html + TCodeRangeTable ttobjs/tcoderangetable.html + PDefRecord ttobjs/pdefrecord.html + TDefRecord ttobjs/tdefrecord.html + PDefArray ttobjs/pdefarray.html + TDefArray ttobjs/tdefarray.html + TCallRecord ttobjs/tcallrecord.html + TCallStack ttobjs/tcallstack.html + PCallStack ttobjs/pcallstack.html + PGlyph_Zone ttobjs/pglyph_zone.html + TGlyph_Zone ttobjs/tglyph_zone.html + TRound_Function ttobjs/tround_function.html + TMove_Function ttobjs/tmove_function.html + TProject_Function ttobjs/tproject_function.html + TFunc_Get_CVT ttobjs/tfunc_get_cvt.html + TFunc_Set_CVT ttobjs/tfunc_set_cvt.html + PGlyph_Transform ttobjs/pglyph_transform.html + TGlyph_Transform ttobjs/tglyph_transform.html + PSubglyph_Record ttobjs/psubglyph_record.html + TSubglyph_Record ttobjs/tsubglyph_record.html + TSubglyph_Stack ttobjs/tsubglyph_stack.html + PSubglyph_Stack ttobjs/psubglyph_stack.html + TIns_Metrics ttobjs/tins_metrics.html + PFace ttobjs/pface.html + PInstance ttobjs/pinstance.html + PExec_Context ttobjs/pexec_context.html + TTError tterror/index.html + Err_Ras_None tterror/err_ras_none.html + Err_Ras_NotIni tterror/err_ras_notini.html + Err_Ras_Overflow tterror/err_ras_overflow.html + Err_Ras_Neg_H tterror/err_ras_neg_h.html + Err_Ras_Invalid tterror/err_ras_invalid.html + Err_Ras_Invalid_Contours tterror/err_ras_invalid_contours.html + Check_Error tterror/check_error.html + Panic1 tterror/panic1.html + Trace1 tterror/trace1.html + error tterror/error.html + TTTables tttables/index.html + Gasp_GridFit tttables/gasp_gridfit.html + Gasp_DoGray tttables/gasp_dogray.html + PTTCHeader tttables/pttcheader.html + TTTCHeader tttables/tttcheader.html + PTableDir tttables/ptabledir.html + TTableDir tttables/ttabledir.html + TTableDirEntry tttables/ttabledirentry.html + TTableDirEntries tttables/ttabledirentries.html + PTableDirEntries tttables/ptabledirentries.html + TCMapDir tttables/tcmapdir.html + TCMapDirEntry tttables/tcmapdirentry.html + TCMapDirEntries tttables/tcmapdirentries.html + PCMapDirEntries tttables/pcmapdirentries.html + TMaxProfile tttables/tmaxprofile.html + TGaspRange tttables/tgasprange.html + TGaspRanges tttables/tgaspranges.html + PGaspRanges tttables/pgaspranges.html + TGasp tttables/tgasp.html + TLongMetrics tttables/tlongmetrics.html + TTableLongMetrics tttables/ttablelongmetrics.html + PTableLongMetrics tttables/ptablelongmetrics.html + TShortMetrics tttables/tshortmetrics.html + TTableShortMetrics tttables/ttableshortmetrics.html + PTableShortMetrics tttables/ptableshortmetrics.html + TName_Record tttables/tname_record.html + PName_Record tttables/pname_record.html + TName_Records tttables/tname_records.html + PName_Records tttables/pname_records.html + PName_Table tttables/pname_table.html + TName_Table tttables/tname_table.html + PHdmx_Record tttables/phdmx_record.html + THdmx_Record tttables/thdmx_record.html + THdmx_Records tttables/thdmx_records.html + PHdmx_Records tttables/phdmx_records.html + THdmx tttables/thdmx.html + LookupStringList lookupstringlist/index.html + TLookupStringList lookupstringlist/tlookupstringlist.html + InsertItem lookupstringlist/tlookupstringlist.insertitem.html + Create lookupstringlist/tlookupstringlist.create.html + Destroy lookupstringlist/tlookupstringlist.destroy.html + Assign lookupstringlist/tlookupstringlist.assign.html + Clear lookupstringlist/tlookupstringlist.clear.html + Delete lookupstringlist/tlookupstringlist.delete.html + Add lookupstringlist/tlookupstringlist.add.html + AddObject lookupstringlist/tlookupstringlist.addobject.html + Contains lookupstringlist/tlookupstringlist.contains.html + Find lookupstringlist/tlookupstringlist.find.html + IndexOf lookupstringlist/tlookupstringlist.indexof.html + TDictionaryStringList lookupstringlist/tdictionarystringlist.html + Deduplicate lookupstringlist/deduplicate.html + TTFile ttfile/index.html + TFreeTypeStream ttfile/tfreetypestream.html + Create ttfile/tfreetypestream.create.html + Destroy ttfile/tfreetypestream.destroy.html + Activate ttfile/tfreetypestream.activate.html + Deactivate ttfile/tfreetypestream.deactivate.html + SeekFile ttfile/tfreetypestream.seekfile.html + SkipFile ttfile/tfreetypestream.skipfile.html + ReadFile ttfile/tfreetypestream.readfile.html + ReadAtFile ttfile/tfreetypestream.readatfile.html + AccessFrame ttfile/tfreetypestream.accessframe.html + CheckAndAccessFrame ttfile/tfreetypestream.checkandaccessframe.html + ForgetFrame ttfile/tfreetypestream.forgetframe.html + GET_Byte ttfile/tfreetypestream.get_byte.html + GET_Char ttfile/tfreetypestream.get_char.html + GET_Short ttfile/tfreetypestream.get_short.html + GET_UShort ttfile/tfreetypestream.get_ushort.html + GET_Long ttfile/tfreetypestream.get_long.html + GET_ULong ttfile/tfreetypestream.get_ulong.html + GET_Tag4 ttfile/tfreetypestream.get_tag4.html + Open ttfile/tfreetypestream.open.html + Name ttfile/tfreetypestream.name.html + Base ttfile/tfreetypestream.base.html + Position ttfile/tfreetypestream.position.html + Used ttfile/tfreetypestream.used.html + TTFile_Init ttfile/ttfile_init.html + TTFile_Done ttfile/ttfile_done.html + TT_Open_Stream ttfile/tt_open_stream.html + TT_Close_Stream ttfile/tt_close_stream.html + TT_Use_Stream ttfile/tt_use_stream.html + TT_Flush_Stream ttfile/tt_flush_stream.html + TT_Done_Stream ttfile/tt_done_stream.html + TT_Stream_Size ttfile/tt_stream_size.html + TTGLoad ttgload/index.html + Load_TrueType_Glyph ttgload/load_truetype_glyph.html + TT_Get_Metrics ttgload/tt_get_metrics.html + Get_Advance_Widths ttgload/get_advance_widths.html + TTInterp ttinterp/index.html + Run_Ins ttinterp/run_ins.html + TTLoad ttload/index.html + LookUp_TrueType_Table ttload/lookup_truetype_table.html + Load_TrueType_Directory ttload/load_truetype_directory.html + Load_TrueType_MaxProfile ttload/load_truetype_maxprofile.html + Load_TrueType_Header ttload/load_truetype_header.html + Load_TrueType_Locations ttload/load_truetype_locations.html + Load_TrueType_CVT ttload/load_truetype_cvt.html + Load_TrueType_CMap ttload/load_truetype_cmap.html + Load_TrueType_Gasp ttload/load_truetype_gasp.html + Load_TrueType_Names ttload/load_truetype_names.html + Load_TrueType_Programs ttload/load_truetype_programs.html + Load_trueType_Postscript ttload/load_truetype_postscript.html + Load_TrueType_OS2 ttload/load_truetype_os2.html + Load_TrueType_HDMX ttload/load_truetype_hdmx.html + Load_TrueType_Metrics_Header ttload/load_truetype_metrics_header.html + Load_TrueType_Any ttload/load_truetype_any.html + TTMemory ttmemory/index.html + Font_Pool_Allocated ttmemory/font_pool_allocated.html + TMarkRecord ttmemory/tmarkrecord.html + Alloc ttmemory/alloc.html + Free ttmemory/free.html + TTMemory_Init ttmemory/ttmemory_init.html + TTMemory_Done ttmemory/ttmemory_done.html + UTF8Process utf8process/index.html + TProcessUTF8 utf8process/tprocessutf8.html + RunCmdFromPath utf8process/runcmdfrompath.html + FindFilenameOfCmd utf8process/findfilenameofcmd.html + GetSystemThreadCount utf8process/getsystemthreadcount.html + Register utf8process/register.html + +:classes +#lazutils.AvgLvlTree.TAvgLvlTreeNode #rtl.System.TObject +3VParent +3VLeft +3VRight +3VBalance +3VData +3MSuccessor +3MPrecessor +3MTreeDepth +3MConsistencyCheck +3MGetCount +#lazutils.AvgLvlTree.TAvgLvlTreeNodeEnumerator #rtl.System.TObject +2VFCurrent +2VFLowToHigh +2VFTree 3MCreate +3MGetEnumerator 3MMoveNext 3PCurrent r -#lazutils.Laz2_DOM.TDOMNodeAllChildEnumerator #rtl.System.TObject -1VFNode -1VFCurrent -1VFEnd +3PLowToHigh r +#lazutils.AvgLvlTree.TAvgLvlTree #rtl.System.TObject +2VfRoot +2VFCount +2VFNodeClass +2VFOnCompare +2VFOnObjectCompare +2MBalanceAfterInsert +2MBalanceAfterDelete +2MDeletingNode +2MFindInsertPos +2MInit +2MNodeAdded +2MRotateLeft +2MRotateRight +2MSwitchPositionWithSuccessor +2MSetOnCompare +2MSetOnObjectCompare +2MSetCompares +3MCreate +3MCreateObjectCompare +3MDestroy +3POnCompare rw +3POnObjectCompare rw +3PNodeClass rw +3MAdd +3MDelete +3MRemove +3MRemovePointer +3MMoveDataLeftMost +3MMoveDataRightMost +3MClear +3MFreeAndClear +3MFreeAndDelete +3MEquals +3MIsEqual +3MAssign +3PRoot r +3PCount r +3MCompare +3MFind +3MFindKey +3MFindNearestKey +3MFindSuccessor +3MFindPrecessor +3MFindLowest +3MFindHighest +3MFindNearest +3MFindPointer +3MFindLeftMost +3MFindRightMost +3MFindLeftMostKey +3MFindRightMostKey +3MFindLeftMostSameKey +3MFindRightMostSameKey +3MGetEnumerator +3MGetEnumeratorHighToLow +3MConsistencyCheck +3MWriteReportToStream +3MNodeToReportStr +3MReportAsString +#lazutils.AvgLvlTree.TIndexedAVLTreeNode #lazutils.AvgLvlTree.TAvgLvlTreeNode +3VLeftCount +#lazutils.AvgLvlTree.TIndexedAVLTree #lazutils.AvgLvlTree.TAvgLvlTree +1MGetItems +2VfLastIndex +2VfLastNode +2MDeletingNode +2MInit +2MNodeAdded +2MRotateLeft +2MRotateRight +2MSwitchPositionWithSuccessor +3MGetNodeAtIndex +3MNodeToIndex +3MIndexOf +3PItems r +3MConsistencyCheck +3MNodeToReportStr +#lazutils.AvgLvlTree.TPointerToPointerEnumerator #rtl.System.TObject +2VFHighToLow +2VFTree +2VFCurrent +2MGetCurrent 3MCreate +3MGetEnumerator 3MMoveNext 3PCurrent r -3MGetEnumerator -#lazutils.Laz2_DOM.TDOMNode #rtl.System.TObject -2VFPool -2VFFlags -2VFParentNode -2VFPreviousSibling -2VFNextSibling -2VFOwnerDocument -2MGetNodeName -2MGetNodeValue -2MSetNodeValue -2MGetFirstChild -2MGetLastChild -2MGetAttributes -2MGetRevision -2MGetNodeType -2MGetTextContent -2MSetTextContent -2MGetLocalName -2MGetNamespaceURI -2MGetPrefix -2MSetPrefix -2MGetOwnerDocument -2MGetBaseURI -2MSetReadOnly -2MChanging +3PHighToLow r +#lazutils.AvgLvlTree.TPointerToPointerTree #rtl.System.TObject +1VFItems +1MGetCount +1MGetValues +1MSetValues +1MFindNode +1MGetNode 3MCreate 3MDestroy -3MFreeInstance -3MGetChildNodes -3MGetChildCount -3PNodeName r -3PNodeValue rw -3PNodeType r -3PParentNode r -3PFirstChild r -3PLastChild r -3PChildNodes r -3PPreviousSibling r -3PNextSibling r -3PAttributes r -3POwnerDocument r +3MClear +3MClearWithFree +3MEquals +3MIsEqual +3MAssign +3MRemove +3MContains +3MGetFirst +3MGetLast +3MGetNext +3MGetPrev +3PCount r +3PValues rw +3PTree r 3MGetEnumerator -3MGetEnumeratorAllChildren -3MGetNextNode -3MGetNextNodeSkipChildren -3MGetPreviousNode -3MGetLastLeaf -3MGetLevel -3MInsertBefore -3MReplaceChild -3MDetachChild -3MRemoveChild -3MAppendChild -3MHasChildNodes -3MCloneNode -3MIsSupported -3MHasAttributes -3MNormalize -3PNamespaceURI r -3PLocalName r -3PPrefix rw -3PTextContent rw -3MLookupPrefix -3MLookupNamespaceURI -3MIsDefaultNamespace -3PbaseURI r -3MFindNode -3MCompareName -3PFlags r -#lazutils.Laz2_DOM.TDOMNode_WithChildren #lazutils.Laz2_DOM.TDOMNode -2VFFirstChild -2VFLastChild -2VFChildNodes -2MGetFirstChild -2MGetLastChild -2MCloneChildren -2MFreeChildren -2MGetTextContent -2MSetTextContent +3MGetEnumeratorHighToLow +#lazutils.AvgLvlTree.TCustomStringMapEnumerator #rtl.System.TObject +2VFTree +2VFCurrent +3MCreate +3MMoveNext +#lazutils.AvgLvlTree.TCustomStringMap #rtl.System.TObject +1VFCompareKeyItemFunc +1VFTree +1VFCaseSensitive +1MGetCompareItemsFunc +2MDisposeItem +2MItemsAreEqual +2MCreateCopy +3MCreate 3MDestroy -3MInsertBefore -3MReplaceChild -3MDetachChild -3MHasChildNodes -3MGetChildCount +3MClear +3MContains +3MGetNames +3MRemove +3PCaseSensitive r +3PTree r 3MFindNode -3MInternalAppend -#lazutils.Laz2_DOM.TDOMNodeList #rtl.System.TObject -2VFNode -2VFRevision -2VFList -2MGetCount -2MGetItem -2MNodeFilter -2MBuildList +3MCount +3MEquals +3MAssign +3PCompareItemsFunc r +3PCompareKeyItemFunc r +3MSetCompareFuncs +#lazutils.AvgLvlTree.TStringMapEnumerator #lazutils.AvgLvlTree.TCustomStringMapEnumerator +1MGetCurrent +3PCurrent r +#lazutils.AvgLvlTree.TStringMap #lazutils.AvgLvlTree.TCustomStringMap +1MGetValues +1MSetValues +3MAdd +3MGetEnumerator +3PValues rw +#lazutils.AvgLvlTree.TStringToStringTreeEnumerator #lazutils.AvgLvlTree.TCustomStringMapEnumerator +1MGetCurrent +3PCurrent r +#lazutils.AvgLvlTree.TStringToStringTree #lazutils.AvgLvlTree.TCustomStringMap +1MGetValues +1MSetValues +2MDisposeItem +2MItemsAreEqual +2MCreateCopy +2MGetNode +3MGetString +3MAdd +3MAddNameValues +3MAddValues +3MAddNames +3MDelete +3PValues rw +3MAsText +3MAssign +3MGetEnumerator +3MGetFirst +3MGetLast +3MGetNext +3MGetPrev +#lazutils.AvgLvlTree.TStringToPointerTreeEnumerator #lazutils.AvgLvlTree.TCustomStringMapEnumerator +1MGetCurrent +3PCurrent r +#lazutils.AvgLvlTree.TStringToPointerTree #lazutils.AvgLvlTree.TCustomStringMap +1VFFreeValues +1MGetValues +1MSetValues +2MDisposeItem +2MItemsAreEqual +2MCreateCopy +3MGetData +3PValues rw +3MGetEnumerator +3PFreeValues rw +#lazutils.EasyLazFreeType.TCustomFontCollectionItem #rtl.System.TObject +2VFFamily +2MGetBold +2MGetInformation +2MGetItalic +2MGetStyleCount +2MGetStyles +2MGetFilename +2MGetVersionNumber +2MGetStyle +2MNotifyDestroy +3MHasStyle +3MCreateFont +3MQueryFace +3MReleaseFace +3PStyles r +3PItalic r +3PBold r +3PFilename r +3PInformation r +3PVersionNumber r +3PStyle r +3PStyleCount r +3PFamily rw +#lazutils.EasyLazFreeType.IFreeTypeFontEnumerator #rtl.System.IUnknown +0MMoveNext +0MGetCurrent +0PCurrent r +#lazutils.EasyLazFreeType.TCustomFamilyCollectionItem #rtl.System.TObject +2MGetFontByIndex +2MGetStyle +2MGetStyles +2MGetFamilyName +2MGetFontCount +2MGetStyleCount +3MGetFont +3MGetFontIndex +3MHasStyle +3PFamilyName r +3PFont r +3PFontCount r +3PStyle r +3PStyleCount r +3PStyles r +#lazutils.EasyLazFreeType.IFreeTypeFamilyEnumerator #rtl.System.IUnknown +0MMoveNext +0MGetCurrent +0PCurrent r +#lazutils.EasyLazFreeType.TCustomFreeTypeFontCollection #rtl.System.TObject +2MGetFont +2MGetFamily +2MGetFamilyCount +2MGetFontCount +3MCreate +3MClear +3MBeginUpdate +3MAddFolder +3MRemoveFolder +3MAddFile +3MRemoveFile +3MAddStream +3MEndUpdate +3MFontFileEnumerator +3MFamilyEnumerator +3PFontFileCount r +3PFontFile r +3PFamilyCount r +3PFamily r +#lazutils.EasyLazFreeType.TFreeTypeRenderableFont #rtl.System.TObject +2VFWordBreakHandler +2VFOnRenderText +2MGetClearType +2MSetClearType +2MGetLineFullHeight +2MGetAscent +2MGetDescent +2MGetLineSpacing +2MDefaultWordBreakHandler +2MGetHinted +2MSetHinted +3VUnderlineDecoration +3VStrikeOutDecoration +3MTextWidth +3MTextHeight +3MCharWidthFromUnicode +3MSplitText +3MGetTextSize +3MRenderText +3PClearType rw +3PAscent r +3PDescent r +3PLineSpacing r +3PLineFullHeight r +3PHinted rw +3POnWordBreak rw +3POnRenderText rw +#lazutils.EasyLazFreeType.TFreeTypeDrawer #rtl.System.TObject +0MDrawText +0MDrawTextWordBreak +0MDrawTextRect +0MDrawGlyph +#lazutils.EasyLazFreeType.TFreeTypeFont #lazutils.EasyLazFreeType.TFreeTypeRenderableFont +1VFName +1VFFaceChanged +1VFDPI +1VFStream +1VFOwnedStream +1VFPointSize +1VFHinted +1VFStyleStr +1VFWidthFactor +1VFClearType +1VFNamesArray +1VFCollection +1MFindGlyphNode +1MGetCharIndex +1MGetDPI +1MGetFamily +1MGetFreeTypeStyles +1MGetGlyph +1MGetGlyphCount +1MGetInformation +1MGetPixelSize +1MGetVersionNumber +1MSetDPI +1MSetFreeTypeStyles +1MSetLineFullHeight +1MSetStyleAsString +1MLoadFace +1MSetName +1MDiscardFace +1MDiscardInstance +1MDiscardStream +1MSetPixelSize +1MSetPointSize +1MLoadGlyphInto +1MSetWidthFactor +1MUpdateInstance +1MUpdateSizeInPoints +1MUpdateMetrics +1MUpdateCharmap +1MRenderTextDecoration +1MFillRect +2VFFace +2VFFaceItem +2VFFaceLoaded +2VFInstance +2VFInstanceCreated +2VFGlyphTable +2VFCharMap +2VFCharmapOk +2VFCharmapSymbol +2VFAscentValue +2VFDescentValue +2VFLineGapValue +2VFLargeLineGapValue +2VFCapHeight +2MFaceChanged +2MGetClearType +2MSetClearType +2MGetLineFullHeight +2MGetAscent +2MGetDescent +2MGetLineSpacing +2MGetCapHeight +2MSetHinted +2MGetHinted +2MOnDestroyFontItem +2MFetchNames +2MGetCollection +2MCheckFace +3VQuality +3VSmallLinePadding 3MCreate 3MDestroy -3PItem r -3PCount r -3PLength r -#lazutils.Laz2_DOM.TDOMElementList #lazutils.Laz2_DOM.TDOMNodeList -2Vfilter -2VFNSIndexFilter -2VlocalNameFilter -2VFMatchNS -2VFMatchAnyNS -2VUseFilter -2MNodeFilter +3MAccessFromStream +3MRenderText +3MRenderGlyph +3MSetNameAndStyle +3MTextWidth +3MTextHeight +3MCharWidthFromUnicode +3MCharWidthFromGlyph +3MCharsWidth +3MCharsPosition +3MCheckInstance +3PName rw +3PDPI rw +3PSizeInPoints rw +3PSizeInPixels rw +3PCapHeight r +3PGlyph r +3PGlyphCount r +3PCharIndex r +3PHinted rw +3PWidthFactor rw +3PLineFullHeight rw +3PInformation r +3PVersionNumber r +3PFamily r +3PCollection rw +3PStyleAsString rw +3PStyle rw +#lazutils.EasyLazFreeType.TFreeTypeGlyph #rtl.System.TObject +1VFLoaded +1VFGlyphData +1VFIndex +1MGetAdvance +1MGetBounds +1MGetBoundsWithOffset 3MCreate -#lazutils.Laz2_DOM.TDOMNamedNodeMap #rtl.System.TObject -2VFOwner -2VFNodeType -2VFSortedList -2VFPosList -2MGetPosItem -2MGetSortedItem -2MGetLength -2MFindSorted -2MDeleteSorted -2MRestoreDefault -2MInternalRemove -2MValidateInsert +3MRenderDirectly +3MDestroy +3PLoaded r +3PData r +3PIndex r +3PBounds r +3PBoundsWithOffset r +3PAdvance r +#lazutils.EasyLazFreeType.TFreeTypeRasterMap #rtl.System.TObject +2Vmap +2VFRasterizer +2MGetHeight +2MGetWidth +2MGetScanLine +2MInit 3MCreate +3MClear +3MFill +3MRenderGlyph +3MScanMoveTo 3MDestroy -3MGetNamedItem -3MSetNamedItem -3MRemoveNamedItem -3MgetNamedItemNS -3MsetNamedItemNS -3MremoveNamedItemNS -3PItem r -3PSortedItem r -3PLength r -#lazutils.Laz2_DOM.TDOMCharacterData #lazutils.Laz2_DOM.TDOMNode -1VFNodeValue -2MGetLength -2MGetNodeValue -2MSetNodeValue -3PData rw -3PLength r -3MSubstringData -3MAppendData -3MInsertData -3MDeleteData -3MReplaceData -#lazutils.Laz2_DOM.TDOMImplementation #rtl.System.TObject -3MHasFeature -3MCreateDocumentType -3MCreateDocument -#lazutils.Laz2_DOM.TDOMDocumentFragment #lazutils.Laz2_DOM.TDOMNode_WithChildren -2MGetNodeType -2MGetNodeName -3MCloneNode -#lazutils.Laz2_DOM.TDOMDocument #lazutils.Laz2_DOM.TDOMNode_WithChildren -2VFIDList -2VFRevision -2VFXML11 -2VFImplementation -2VFNamespaces -2VFNames -2VFEmptyNode -2VFNodeLists -2VFMaxPoolSize -2VFPools -2VFDocumentURI -2MGetDocumentElement -2MGetDocType -2MGetNodeType -2MGetNodeName -2MGetTextContent -2MGetOwnerDocument -2MSetTextContent -2MRemoveID -2MGetChildNodeList -2MGetElementList -2MNodeListDestroyed -2MAlloc -3MIndexOfNS -3MInsertBefore -3MReplaceChild -3PDocType r -3PImpl r -3PDocumentElement r -3MCreateElement -3MCreateElementBuf -3MCreateDocumentFragment -3MCreateTextNode -3MCreateTextNodeBuf -3MCreateComment -3MCreateCommentBuf -3MCreateCDATASection -3MCreateProcessingInstruction -3MCreateAttribute -3MCreateAttributeBuf -3MCreateAttributeDef -3MCreateEntityReference -3MGetElementsByTagName -3MImportNode -3MCreateElementNS -3MCreateAttributeNS -3MGetElementsByTagNameNS -3MGetElementById -3PdocumentURI rw +3PWidth r +3PHeight r +3PScanLine r +#lazutils.EasyLazFreeType.TFreeTypeMonochromeMap #lazutils.EasyLazFreeType.TFreeTypeRasterMap +1VScanPtrStart +1VScanPtrCur +1VScanBit +1VScanX +1MGetPixelsInHorizlineNoBoundsChecking +2MInit +3MRenderGlyph +3MScanMoveTo +3MScanNextPixel +3MGetPixel +3MSetPixel +3MGetPixelsInRect +3MGetPixelsInHorizline +3MTogglePixel +#lazutils.EasyLazFreeType.TFreeTypeGrayscaleMap #lazutils.EasyLazFreeType.TFreeTypeRasterMap +1VScanPtrStart +1VScanX +2MInit +3VRenderQuality +3MRenderGlyph +3MScanMoveTo +3MScanNextPixel +3MGetPixel +3MSetPixel +3MXorPixel +#lazutils.TTTypes.TFreeTypeCustomRasterizer #rtl.System.TObject +0MRender_Glyph +0MRender_Gray_Glyph +0MRender_Gray_Glyph_HQ +0MRender_Directly_Gray_Glyph +0MRender_Directly_Gray_Glyph_HQ +0MSet_Raster_Palette +#lazutils.TTRASTER.TFreeTypeRasterizer #lazutils.TTTypes.TFreeTypeCustomRasterizer +1VPrecision_Bits +1VPrecision +1VPrecision_Half +1VPrecision_Step +1VPrecision_Shift +1VPrecision_Mask +1VPrecision_Jitter +1VPool +1VCible +1VBWidth +1VBCible +1VGCible +1VTraceBOfs +1VTraceBIncr +1VTraceGOfs +1VTraceGIncr +1Vgray_min_x +1Vgray_max_x +1VProc_Sweep_Init +1VProc_Sweep_Span +1VProc_Sweep_Drop +1VProc_Sweep_Step +1VProc_Sweep_Direct +1VDirect_X +1VDirect_Y +1VDirect_TX +1VPoints +1VFlags +1VOuts +1VnContours +1VDropOutControl +1VGrays +1VBGray_Data +1VBGray_Incr +1VBGray_End +1VBGray_Capacity +1VSecond_Pass +1MBGray_NeedCapacity +1MDraw_Sweep +1MHorizontal_Gray_Sweep_Drop +1MHorizontal_Gray_Sweep_Span +1MHorizontal_Sweep_Drop +1MHorizontal_Sweep_Init +1MHorizontal_Sweep_Span +1MHorizontal_Sweep_Step +1MProcessCoordinate +1MRaster_Object_Init +1MRaster_Object_Done +1MRender_Single_Pass +1MSet_High_Precision +1MSet_Second_Pass +1MVertical_Gray_Sweep_Init +1MVertical_Gray_Sweep_Init_Direct +1MVertical_Gray_Sweep_Init_Direct_HQ +1MVertical_Gray_Sweep_Init_HQ +1MVertical_Gray_Sweep_Step +1MVertical_Gray_Sweep_Step_Direct +1MVertical_Gray_Sweep_Step_Direct_HQ +1MVertical_Gray_Sweep_Step_HQ +1MVertical_Sweep_Drop +1MVertical_Sweep_Init +1MVertical_Sweep_Span +1MVertical_Sweep_Step +3MRender_Glyph +3MRender_Gray_Glyph +3MRender_Gray_Glyph_HQ +3MRender_Directly_Gray_Glyph +3MRender_Directly_Gray_Glyph_HQ +3MSet_Raster_Palette 3MCreate 3MDestroy -3MAddID -3PNames r -#lazutils.Laz2_DOM.TXMLDocument #lazutils.Laz2_DOM.TDOMDocument -1VFXMLVersion -1MSetXMLVersion -3VEncoding -3VStylesheetType -3VStylesheetHRef -3MCreateCDATASection -3MCreateProcessingInstruction -3MCreateEntityReference -3PXMLVersion rw -#lazutils.Laz2_DOM.TDOMNode_NS #lazutils.Laz2_DOM.TDOMNode_WithChildren -2VFNSI -2MGetNodeName -2MGetLocalName -2MGetNamespaceURI -2MGetPrefix -2MSetPrefix -3MSetNSI -3MCompareName -3PNSI r -#lazutils.Laz2_DOM.TDOMAttr #lazutils.Laz2_DOM.TDOMNode_NS -2VFOwnerElement -2VFDataType -2MGetNodeValue -2MGetNodeType -2MGetSpecified -2MGetIsID -2MSetNodeValue -3MDestroy -3MCloneNode -3PName r -3PSpecified r -3PValue rw -3POwnerElement r -3PIsID r -3PDataType rw -#lazutils.Laz2_DOM.TDOMElement #lazutils.Laz2_DOM.TDOMNode_NS -2VFAttributes -2MGetNodeType -2MGetAttributes -2MAttachDefaultAttrs -2MInternalLookupPrefix -2MRestoreDefaultAttr -3MDestroy -3MCloneNode -3MIsEmpty -3MNormalize -3PTagName r -3MGetAttribute -3MSetAttribute -3MRemoveAttribute -3MGetAttributeNode -3MSetAttributeNode -3MRemoveAttributeNode -3MGetElementsByTagName -3MGetAttributeNS -3MSetAttributeNS -3MRemoveAttributeNS -3MGetAttributeNodeNS -3MSetAttributeNodeNS -3MGetElementsByTagNameNS -3MhasAttribute -3MhasAttributeNS -3MHasAttributes -3PAttribStrings rw -#lazutils.Laz2_DOM.TDOMText #lazutils.Laz2_DOM.TDOMCharacterData -2MGetNodeType -2MGetNodeName -2MSetNodeValue -3MCloneNode -3MSplitText -3MIsElementContentWhitespace -#lazutils.Laz2_DOM.TDOMComment #lazutils.Laz2_DOM.TDOMCharacterData -2MGetNodeType -2MGetNodeName -3MCloneNode -#lazutils.Laz2_DOM.TDOMCDATASection #lazutils.Laz2_DOM.TDOMText -2MGetNodeType -2MGetNodeName -3MCloneNode -#lazutils.Laz2_DOM.TDOMDocumentType #lazutils.Laz2_DOM.TDOMNode -2VFName -2VFPublicID -2VFSystemID -2VFInternalSubset -2VFEntities -2VFNotations -2MGetEntities -2MGetNotations -2MGetNodeType -2MGetNodeName -3MDestroy -3PName r -3PEntities r -3PNotations r -3PPublicID r -3PSystemID r -3PInternalSubset r -#lazutils.Laz2_DOM.TDOMNotation #lazutils.Laz2_DOM.TDOMNode -2VFName -2VFPublicID -2VFSystemID -2MGetNodeType -2MGetNodeName -3MCloneNode -3PPublicID r -3PSystemID r -#lazutils.Laz2_DOM.TDOMEntity #lazutils.Laz2_DOM.TDOMNode_WithChildren -2VFName -2VFPublicID -2VFSystemID -2VFNotationName -2MGetNodeType -2MGetNodeName -3MCloneNode -3PPublicID r -3PSystemID r -3PNotationName r -#lazutils.Laz2_DOM.TDOMEntityReference #lazutils.Laz2_DOM.TDOMNode_WithChildren -2VFName -2MGetNodeType -2MGetNodeName -3MCloneNode -#lazutils.Laz2_DOM.TDOMProcessingInstruction #lazutils.Laz2_DOM.TDOMNode -1VFTarget -1VFNodeValue -2MGetNodeType -2MGetNodeName -2MGetNodeValue -2MSetNodeValue -3MCloneNode -3PTarget r -3PData rw -#lazutils.Laz2_DOM.TDOMAttrDef #lazutils.Laz2_DOM.TDOMAttr -2VFExternallyDeclared -2VFDefault -2VFTag -2VFEnumeration -3MAddEnumToken -3MHasEnumToken -3MCloneNode -3PDefault rw -3PExternallyDeclared rw -3PTag rw -#lazutils.Laz2_DOM.TNodePool #rtl.System.TObject -1VFCurrExtent -1VFCurrExtentSize -1VFElementSize -1VFCurrBlock -1VFFirstFree -1MAddExtent +#lazutils.TTProfile.TRenderPool #rtl.System.TObject +2VPrecision +2VPrecisionHalf +2VBezierPrecision +2VBoundsMinY +2VBoundsMaxY +2VscaleShift +2MBezier_Down +2MBezier_State +2MBezier_To +2MBezier_Up +2MCEILING +2MDecomposeCurve +2MFLOOR +2MFRAC +2MGetCapacity +2MLine_Down +2MLine_To +2MLine_Up +2MMove_To +2MPushBezier +2MSCALED +2MSplit_Bezier +2MTRUNC +2MRequireCapacity +2MPushValue +2PCapacity r +3VJoint +3VFresh +3VcProfile +3VProfileColl +3VLastX +3VLastY +3VCurveDir +3VArcs +3VCurArc +3Vdata +3Vposition 3MCreate 3MDestroy -3MAllocNode -3MFreeNode -#lazutils.laz2_xmlutils.THashTable #rtl.System.TObject -1VFCount -1VFBucketCount -1VFBucket -1VFOwnsObjects -1MLookup -1MResize +3MSetPrecision +3MSetBounds +3MSetScaleShift +3MClear +3MReduceCapacity +3MConvert_Glyph +#lazutils.TTProfile.TProfile #rtl.System.TObject +0VPool +0VFlow +0VHeight +0VStart +0VOffset +0VX +0VnextInContour +0VnextInColl +0VnextInList +0VprevInList +0MCreate +#lazutils.TTProfile.TProfileCollection #rtl.System.TObject +2MRemove_Profile +3VPool +3VprevProfile +3VfProfile +3VgProfile +3VnProfs 3MCreate -3MDestroy 3MClear -3MFind -3MFindOrAdd -3MGet -3MRemove -3MRemoveData -3MForEach -3PCount r -#lazutils.laz2_xmlutils.TDblHashArray #rtl.System.TObject -1VFSizeLog -1VFRevision -1VFData -3MInit -3MLocate +3MNew_Profile +3MEnd_Profile 3MDestroy -#lazutils.laz2_xmlutils.TBinding #rtl.System.TObject -3Vuri -3Vnext -3VprevPrefixBinding -3VPrefix -#lazutils.laz2_xmlutils.TNSSupport #rtl.System.TObject -1VFNesting -1VFPrefixSeqNo -1VFFreeBindings -1VFBindings -1VFBindingStack -1VFPrefixes -1VFDefaultPrefix +#lazutils.FileUtil.TFileIterator #rtl.System.TObject +1VFPath +1VFLevel +1VFFileInfo +1VFSearching +1MGetFileName +3MStop +3MIsDirectory +3PFileName r +3PFileInfo r +3PLevel r +3PPath r +3PSearching r +#lazutils.FileUtil.TFileSearcher #lazutils.FileUtil.TFileIterator +1VFMaskSeparator +1VFFollowSymLink +1VFOnFileFound +1VFOnDirectoryFound +1VFOnDirectoryEnter +1VFFileAttribute +1VFDirectoryAttribute +1MRaiseSearchingError +2MDoDirectoryEnter +2MDoDirectoryFound +2MDoFileFound +3MCreate +3MSearch +3PMaskSeparator rw +3PFollowSymLink rw +3PFileAttribute rw +3PDirectoryAttribute rw +3POnDirectoryFound rw +3POnFileFound rw +3POnDirectoryEnter rw +#lazutils.FileUtil.TListFileSearcher #lazutils.FileUtil.TFileSearcher +1VFList +2MDoFileFound +3MCreate +#lazutils.FileUtil.TListDirectoriesSearcher #lazutils.FileUtil.TFileSearcher +1VFDirectoriesList +2MDoDirectoryFound +3MCreate +#lazutils.Masks.TMask #rtl.System.TObject +1VFMask +1VfCaseSensitive +1VfInitialMask +1MInitMaskString +1MClearMaskString 3MCreate 3MDestroy -3MDefineBinding -3MCheckAttribute -3MIsPrefixBound -3MGetPrefix -3MBindPrefix -3MDefaultNSBinding -3MStartElement -3MEndElement -#lazutils.Laz2_XMLCfg.TXMLConfig #rtl.Classes.TComponent -1VFFilename -1VFReadFlags -1VFWriteFlags -1MCreateConfigNode -1MSetFilename -2MTNodeCache -2Vdoc -2VFModified -2VfDoNotLoadFromFile -2VfAutoLoadFromSource -2VfPathCache -2VfPathNodeCache -2MLoaded -2MExtendedToStr -2MStrToExtended -2MReadXMLFile -2MWriteXMLFile -2MFreeDoc -2MSetPathNodeCache -2MGetCachedPathNode -2MInvalidateCacheTilEnd -2MInternalFindNode -2MInternalCleanNode -2MFindChildNode +3MMatches +3MMatchesWindowsMask +#lazutils.Masks.TParseStringList #rtl.Classes.TStringList +3MCreate +#lazutils.Masks.TMaskList #rtl.System.TObject +1VFMasks +1MGetCount +1MGetItem 3MCreate -3MCreateClean -3MCreateWithSource 3MDestroy -3MClear -3MFlush -3MReadFromStream -3MWriteToStream -3MGetValue -3MGetExtendedValue -3MSetValue -3MSetDeleteValue -3MSetExtendedValue -3MSetDeleteExtendedValue -3MDeletePath -3MDeleteValue -3MFindNode -3MHasPath -3MHasChildPaths -3PModified rw -3MInvalidatePathCache -4PFilename rw -4PDocument r -4PReadFlags rw -4PWriteFlags rw -#lazutils.Laz2_XMLCfg.TRttiXMLConfig #lazutils.Laz2_XMLCfg.TXMLConfig -2MWriteProperty -2MReadProperty -3MWriteObject -3MReadObject -#lazutils.laz2_XMLRead.EXMLReadError #rtl.sysutils.Exception -1VFSeverity -1VFErrorMessage -1VFLine -1VFLinePos -3PSeverity r -3PErrorMessage r -3PLine r -3PLinePos r -3MLineCol -#lazutils.laz2_XMLRead.TDOMParseOptions #rtl.System.TObject -1VFValidate -1VFPreserveWhitespace -1VFExpandEntities -1VFIgnoreComments -1VFCDSectionsAsText -1VFResolveExternals -1VFNamespaces -1VFDisallowDoctype -1VFCanonical -1VFMaxChars -1MGetCanonical -1MSetCanonical -3PValidate rw -3PPreserveWhitespace rw -3PExpandEntities rw -3PIgnoreComments rw -3PCDSectionsAsText rw -3PResolveExternals rw -3PNamespaces rw -3PDisallowDoctype rw -3PMaxChars rw -3PCanonicalForm rw -#lazutils.laz2_XMLRead.TXMLInputSource #rtl.System.TObject -1VFStream -1VFStringData -1VFBaseURI -1VFSystemID -1VFPublicID +3MMatches +3MMatchesWindowsMask +3PCount r +3PItems r +#lazutils.Laz2_DOM.EDOMError #rtl.sysutils.Exception +3VCode +3MCreate +#lazutils.Laz2_DOM.EDOMIndexSize #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMHierarchyRequest #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMWrongDocument #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMNotFound #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMNotSupported #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMInUseAttribute #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMInvalidState #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMSyntax #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMInvalidModification #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMNamespace #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.EDOMInvalidAccess #lazutils.Laz2_DOM.EDOMError +3MCreate +#lazutils.Laz2_DOM.TDOMNodeEnumerator #rtl.System.TObject +1VFNode +1VFCurrent +3MCreate +3MMoveNext +3PCurrent r +#lazutils.Laz2_DOM.TDOMNodeAllChildEnumerator #rtl.System.TObject +1VFNode +1VFCurrent +1VFEnd +3MCreate +3MMoveNext +3PCurrent r +3MGetEnumerator +#lazutils.Laz2_DOM.TDOMNode #rtl.System.TObject +2VFPool +2VFFlags +2VFParentNode +2VFPreviousSibling +2VFNextSibling +2VFOwnerDocument +2MGetNodeName +2MGetNodeValue +2MSetNodeValue +2MGetFirstChild +2MGetLastChild +2MGetAttributes +2MGetRevision +2MGetNodeType +2MGetTextContent +2MSetTextContent +2MGetLocalName +2MGetNamespaceURI +2MGetPrefix +2MSetPrefix +2MGetOwnerDocument +2MGetBaseURI +2MSetReadOnly +2MChanging 3MCreate -3PStream r -3PStringData r -3PBaseURI rw -3PSystemID rw -3PPublicID rw -#lazutils.laz2_XMLRead.TDOMParser #rtl.System.TObject -1VFOptions -1VFOnError +3MDestroy +3MFreeInstance +3MGetChildNodes +3MGetChildCount +3PNodeName r +3PNodeValue rw +3PNodeType r +3PParentNode r +3PFirstChild r +3PLastChild r +3PChildNodes r +3PPreviousSibling r +3PNextSibling r +3PAttributes r +3POwnerDocument r +3MGetEnumerator +3MGetEnumeratorAllChildren +3MGetNextNode +3MGetNextNodeSkipChildren +3MGetPreviousNode +3MGetLastLeaf +3MGetLevel +3MInsertBefore +3MReplaceChild +3MDetachChild +3MRemoveChild +3MAppendChild +3MHasChildNodes +3MCloneNode +3MIsSupported +3MHasAttributes +3MNormalize +3PNamespaceURI r +3PLocalName r +3PPrefix rw +3PTextContent rw +3MLookupPrefix +3MLookupNamespaceURI +3MIsDefaultNamespace +3PbaseURI r +3MFindNode +3MCompareName +3PFlags r +#lazutils.Laz2_DOM.TDOMNode_WithChildren #lazutils.Laz2_DOM.TDOMNode +2VFFirstChild +2VFLastChild +2VFChildNodes +2MGetFirstChild +2MGetLastChild +2MCloneChildren +2MFreeChildren +2MGetTextContent +2MSetTextContent +3MDestroy +3MInsertBefore +3MReplaceChild +3MDetachChild +3MHasChildNodes +3MGetChildCount +3MFindNode +3MInternalAppend +#lazutils.Laz2_DOM.TDOMNodeList #rtl.System.TObject +2VFNode +2VFRevision +2VFList +2MGetCount +2MGetItem +2MNodeFilter +2MBuildList 3MCreate 3MDestroy -3MParse -3MParseUri -3MParseWithContext -3POptions r -3POnError rw -#lazutils.Laz_XMLStreaming.TXMLObjectWriterStackEl #rtl.System.TObject -3VElement -3VParent -3VElemType -3VPropertyName -#lazutils.Laz_XMLStreaming.TXMLObjectWriter #rtl.Classes.TAbstractObjectWriter -1VFDoc -1VFRootEl -1VFStack -1VStackEl -1MStackPush -1MStackPop -2MGetPropertyElement +3PItem r +3PCount r +3PLength r +#lazutils.Laz2_DOM.TDOMElementList #lazutils.Laz2_DOM.TDOMNodeList +2Vfilter +2VFNSIndexFilter +2VlocalNameFilter +2VFMatchNS +2VFMatchAnyNS +2VUseFilter +2MNodeFilter 3MCreate -3MBeginCollection -3MBeginComponent -3MBeginList -3MEndList -3MBeginProperty -3MEndProperty -3MWriteBinary -3MWriteBoolean -3MWriteFloat -3MWriteSingle -3MWriteCurrency -3MWriteDate -3MWriteIdent -3MWriteInteger -3MWriteMethodName -3MWriteSet -3MWriteString -3MWriteWideString -3MWriteUInt64 -3MWriteUnicodeString -3MWriteVariant -3MWrite -3PDoc r -#lazutils.Laz_XMLStreaming.TXMLObjectReader #rtl.Classes.TAbstractObjectReader -1VFDoc -1VFElement -1VFElementPosition -1VFRootEl -1MReadNextValue +#lazutils.Laz2_DOM.TDOMNamedNodeMap #rtl.System.TObject +2VFOwner +2VFNodeType +2VFSortedList +2VFPosList +2MGetPosItem +2MGetSortedItem +2MGetLength +2MFindSorted +2MDeleteSorted +2MRestoreDefault +2MInternalRemove +2MValidateInsert 3MCreate 3MDestroy -3MGetRootClassName -3MNextValue -3MReadValue -3MBeginRootComponent -3MBeginComponent -3MBeginProperty -3MReadBinary -3MReadFloat -3MReadSingle -3MReadCurrency -3MReadDate -3MReadIdent -3MReadInt8 -3MReadInt16 -3MReadInt32 -3MReadInt64 -3MReadSet -3MReadStr -3MReadString -3MReadWideString -3MReadUnicodeString -3MSkipComponent -3MSkipValue -3MRead -3PDoc r -3PElement r -3PElementPosition r -#lazutils.TTTypes.TFreeTypeCustomRasterizer #rtl.System.TObject -0MRender_Glyph -0MRender_Gray_Glyph -0MRender_Gray_Glyph_HQ -0MRender_Directly_Gray_Glyph -0MRender_Directly_Gray_Glyph_HQ -0MSet_Raster_Palette -#lazutils.DictionaryStringList.TDictionaryStringList #rtl.Classes.TStringList -1VFMap -2MInsertItem +3MGetNamedItem +3MSetNamedItem +3MRemoveNamedItem +3MgetNamedItemNS +3MsetNamedItemNS +3MremoveNamedItemNS +3PItem r +3PSortedItem r +3PLength r +#lazutils.Laz2_DOM.TDOMCharacterData #lazutils.Laz2_DOM.TDOMNode +1VFNodeValue +2MGetLength +2MGetNodeValue +2MSetNodeValue +3PData rw +3PLength r +3MSubstringData +3MAppendData +3MInsertData +3MDeleteData +3MReplaceData +#lazutils.Laz2_DOM.TDOMImplementation #rtl.System.TObject +3MHasFeature +3MCreateDocumentType +3MCreateDocument +#lazutils.Laz2_DOM.TDOMDocumentFragment #lazutils.Laz2_DOM.TDOMNode_WithChildren +2MGetNodeType +2MGetNodeName +3MCloneNode +#lazutils.Laz2_DOM.TDOMDocument #lazutils.Laz2_DOM.TDOMNode_WithChildren +2VFIDList +2VFRevision +2VFXML11 +2VFImplementation +2VFNamespaces +2VFNames +2VFEmptyNode +2VFNodeLists +2VFMaxPoolSize +2VFPools +2VFDocumentURI +2MGetDocumentElement +2MGetDocType +2MGetNodeType +2MGetNodeName +2MGetTextContent +2MGetOwnerDocument +2MSetTextContent +2MRemoveID +2MGetChildNodeList +2MGetElementList +2MNodeListDestroyed +2MAlloc +3MIndexOfNS +3MInsertBefore +3MReplaceChild +3PDocType r +3PImpl r +3PDocumentElement r +3MCreateElement +3MCreateElementBuf +3MCreateDocumentFragment +3MCreateTextNode +3MCreateTextNodeBuf +3MCreateComment +3MCreateCommentBuf +3MCreateCDATASection +3MCreateProcessingInstruction +3MCreateAttribute +3MCreateAttributeBuf +3MCreateAttributeDef +3MCreateEntityReference +3MGetElementsByTagName +3MImportNode +3MCreateElementNS +3MCreateAttributeNS +3MGetElementsByTagNameNS +3MGetElementById +3PdocumentURI rw 3MCreate 3MDestroy -3MAssign -3MClear -3MDelete -3MAdd -3MAddObject -3MContains -3MFind -3MIndexOf -#lazutils.EasyLazFreeType.TCustomFontCollectionItem #rtl.System.TObject -2MGetBold -2MGetInformation -2MGetItalic -2MGetStyleCount -2MGetStyles -2MGetFilename -2MGetVersionNumber -2MGetStyle -2MNotifyDestroy -3MHasStyle -3MCreateFont -3MQueryFace -3MReleaseFace -3PStyles r -3PItalic r -3PBold r -3PFilename r -3PInformation r -3PVersionNumber r -3PStyle r -3PStyleCount r -#lazutils.EasyLazFreeType.IFreeTypeFontEnumerator #rtl.System.IUnknown -0MMoveNext -0MGetCurrent -0PCurrent r -#lazutils.EasyLazFreeType.TCustomFamilyCollectionItem #rtl.System.TObject -2MGetFontByIndex -2MGetStyle -2MGetStyles -2MGetFamilyName -2MGetFontCount -2MGetStyleCount -3MGetFont -3MGetFontIndex -3MHasStyle -3PFamilyName r -3PFont r -3PFontCount r -3PStyle r -3PStyleCount r -3PStyles r -#lazutils.EasyLazFreeType.IFreeTypeFamilyEnumerator #rtl.System.IUnknown -0MMoveNext -0MGetCurrent -0PCurrent r -#lazutils.EasyLazFreeType.TCustomFreeTypeFontCollection #rtl.System.TObject -2MGetFont -2MGetFamily -2MGetFamilyCount -2MGetFontCount -3MCreate -3MClear -3MBeginUpdate -3MAddFolder -3MAddFile -3MAddStream -3MEndUpdate -3MFontFileEnumerator -3MFamilyEnumerator -3PFontFileCount r -3PFontFile r -3PFamilyCount r -3PFamily r -#lazutils.EasyLazFreeType.TFreeTypeRenderableFont #rtl.System.TObject -2VFWordBreakHandler -2VFOnRenderText -2MGetClearType -2MSetClearType -2MGetLineFullHeight -2MGetAscent -2MGetDescent -2MGetLineSpacing -2MDefaultWordBreakHandler -2MGetHinted -2MSetHinted -3VUnderlineDecoration -3VStrikeOutDecoration -3MTextWidth -3MTextHeight -3MCharWidthFromUnicode -3MSplitText -3MGetTextSize -3MRenderText -3PClearType rw -3PAscent r -3PDescent r -3PLineSpacing r -3PLineFullHeight r -3PHinted rw -3POnWordBreak rw -3POnRenderText rw -#lazutils.EasyLazFreeType.TFreeTypeDrawer #rtl.System.TObject -0MDrawText -0MDrawTextWordBreak -0MDrawTextRect -#lazutils.EasyLazFreeType.TFreeTypeFont #lazutils.EasyLazFreeType.TFreeTypeRenderableFont -1VFName -1VFStream -1VFOwnedStream -1VFPointSize -1VFHinted -1VFStyleStr -1VFWidthFactor -1VFClearType -1VFNamesArray -1VFCollection -1MFindGlyphNode -1MGetCharIndex -1MGetDPI -1MGetFamily -1MGetFreeTypeStyles -1MGetGlyph -1MGetGlyphCount -1MGetInformation -1MGetPixelSize -1MGetVersionNumber -1MSetDPI -1MSetFreeTypeStyles -1MSetLineFullHeight -1MSetStyleAsString -1MUpdateFace -1MSetName -1MDiscardFace -1MDiscardInstance -1MDiscardStream -1MSetPixelSize -1MSetPointSize -1MLoadGlyphInto -1MSetWidthFactor -1MUpdateInstance -1MUpdateSizeInPoints -1MUpdateMetrics -1MUpdateCharmap -1MRenderTextDecoration -1MFillRect -2VFFace -2VFFaceItem -2VFFaceLoaded -2VFInstance -2VFInstanceCreated -2VFGlyphTable -2VFCharMap -2VFCharmapOk -2VFAscentValue -2VFDescentValue -2VFLineGapValue -2VFLargeLineGapValue -2VFCapHeight -2MGetClearType -2MSetClearType -2MGetLineFullHeight -2MGetAscent -2MGetDescent -2MGetLineSpacing -2MGetCapHeight -2MSetHinted -2MGetHinted -2MOnDestroyFontItem -2MFetchNames -2MGetCollection -3VQuality -3VSmallLinePadding -3MCreate +3MAddID +3PNames r +#lazutils.Laz2_DOM.TXMLDocument #lazutils.Laz2_DOM.TDOMDocument +1VFXMLVersion +1MSetXMLVersion +3VEncoding +3VStylesheetType +3VStylesheetHRef +3MCreateCDATASection +3MCreateProcessingInstruction +3MCreateEntityReference +3PXMLVersion rw +#lazutils.Laz2_DOM.TDOMNode_NS #lazutils.Laz2_DOM.TDOMNode_WithChildren +2VFNSI +2MGetNodeName +2MGetLocalName +2MGetNamespaceURI +2MGetPrefix +2MSetPrefix +3MSetNSI +3MCompareName +3PNSI r +#lazutils.Laz2_DOM.TDOMAttr #lazutils.Laz2_DOM.TDOMNode_NS +2VFOwnerElement +2VFDataType +2MGetNodeValue +2MGetNodeType +2MGetSpecified +2MGetIsID +2MSetNodeValue +3MDestroy +3MCloneNode +3PName r +3PSpecified r +3PValue rw +3POwnerElement r +3PIsID r +3PDataType rw +#lazutils.Laz2_DOM.TDOMElement #lazutils.Laz2_DOM.TDOMNode_NS +2VFAttributes +2MGetNodeType +2MGetAttributes +2MAttachDefaultAttrs +2MInternalLookupPrefix +2MRestoreDefaultAttr +3MDestroy +3MCloneNode +3MIsEmpty +3MNormalize +3PTagName r +3MGetAttribute +3MSetAttribute +3MRemoveAttribute +3MGetAttributeNode +3MSetAttributeNode +3MRemoveAttributeNode +3MGetElementsByTagName +3MGetAttributeNS +3MSetAttributeNS +3MRemoveAttributeNS +3MGetAttributeNodeNS +3MSetAttributeNodeNS +3MGetElementsByTagNameNS +3MhasAttribute +3MhasAttributeNS +3MHasAttributes +3PAttribStrings rw +#lazutils.Laz2_DOM.TDOMText #lazutils.Laz2_DOM.TDOMCharacterData +2MGetNodeType +2MGetNodeName +2MSetNodeValue +3MCloneNode +3MSplitText +3MIsElementContentWhitespace +#lazutils.Laz2_DOM.TDOMComment #lazutils.Laz2_DOM.TDOMCharacterData +2MGetNodeType +2MGetNodeName +3MCloneNode +#lazutils.Laz2_DOM.TDOMCDATASection #lazutils.Laz2_DOM.TDOMText +2MGetNodeType +2MGetNodeName +3MCloneNode +#lazutils.Laz2_DOM.TDOMDocumentType #lazutils.Laz2_DOM.TDOMNode +2VFName +2VFPublicID +2VFSystemID +2VFInternalSubset +2VFEntities +2VFNotations +2MGetEntities +2MGetNotations +2MGetNodeType +2MGetNodeName 3MDestroy -3MAccessFromStream -3MRenderText -3MSetNameAndStyle -3MTextWidth -3MTextHeight -3MCharWidthFromUnicode -3MCharsWidth -3MCharsPosition -3PName rw -3PDPI rw -3PSizeInPoints rw -3PSizeInPixels rw -3PCapHeight r -3PGlyph r -3PGlyphCount r -3PCharIndex r -3PHinted rw -3PWidthFactor rw -3PLineFullHeight rw -3PInformation r -3PVersionNumber r -3PFamily r -3PCollection rw -3PStyleAsString rw -3PStyle rw -#lazutils.EasyLazFreeType.TFreeTypeGlyph #rtl.System.TObject -1VFLoaded -1VFGlyphData -1VFIndex -1MGetAdvance -1MGetBounds -1MGetBoundsWithOffset +3PName r +3PEntities r +3PNotations r +3PPublicID r +3PSystemID r +3PInternalSubset r +#lazutils.Laz2_DOM.TDOMNotation #lazutils.Laz2_DOM.TDOMNode +2VFName +2VFPublicID +2VFSystemID +2MGetNodeType +2MGetNodeName +3MCloneNode +3PPublicID r +3PSystemID r +#lazutils.Laz2_DOM.TDOMEntity #lazutils.Laz2_DOM.TDOMNode_WithChildren +2VFName +2VFPublicID +2VFSystemID +2VFNotationName +2MGetNodeType +2MGetNodeName +3MCloneNode +3PPublicID r +3PSystemID r +3PNotationName r +#lazutils.Laz2_DOM.TDOMEntityReference #lazutils.Laz2_DOM.TDOMNode_WithChildren +2VFName +2MGetNodeType +2MGetNodeName +3MCloneNode +#lazutils.Laz2_DOM.TDOMProcessingInstruction #lazutils.Laz2_DOM.TDOMNode +1VFTarget +1VFNodeValue +2MGetNodeType +2MGetNodeName +2MGetNodeValue +2MSetNodeValue +3MCloneNode +3PTarget r +3PData rw +#lazutils.Laz2_DOM.TDOMAttrDef #lazutils.Laz2_DOM.TDOMAttr +2VFExternallyDeclared +2VFDefault +2VFTag +2VFEnumeration +3MAddEnumToken +3MHasEnumToken +3MCloneNode +3PDefault rw +3PExternallyDeclared rw +3PTag rw +#lazutils.Laz2_DOM.TNodePool #rtl.System.TObject +1VFCurrExtent +1VFCurrExtentSize +1VFElementSize +1VFCurrBlock +1VFFirstFree +1MAddExtent 3MCreate -3MRenderDirectly 3MDestroy -3PLoaded r -3PData r -3PIndex r -3PBounds r -3PBoundsWithOffset r -3PAdvance r -#lazutils.EasyLazFreeType.TFreeTypeRasterMap #rtl.System.TObject -2Vmap -2VFRasterizer -2MGetHeight -2MGetWidth -2MGetScanLine -2MInit +3MAllocNode +3MFreeNode +#lazutils.laz2_xmlutils.THashTable #rtl.System.TObject +1VFCount +1VFBucketCount +1VFBucket +1VFOwnsObjects +1MLookup +1MResize 3MCreate +3MDestroy 3MClear -3MFill -3MRenderGlyph -3MScanMoveTo +3MFind +3MFindOrAdd +3MGet +3MRemove +3MRemoveData +3MForEach +3PCount r +#lazutils.laz2_xmlutils.TDblHashArray #rtl.System.TObject +1VFSizeLog +1VFRevision +1VFData +3MInit +3MLocate 3MDestroy -3PWidth r -3PHeight r -3PScanLine r -#lazutils.EasyLazFreeType.TFreeTypeMonochromeMap #lazutils.EasyLazFreeType.TFreeTypeRasterMap -1VScanPtrStart -1VScanPtrCur -1VScanBit -1VScanX -1MGetPixelsInHorizlineNoBoundsChecking -2MInit -3MRenderGlyph -3MScanMoveTo -3MScanNextPixel -3MGetPixel -3MSetPixel -3MGetPixelsInRect -3MGetPixelsInHorizline -3MTogglePixel -#lazutils.EasyLazFreeType.TFreeTypeGrayscaleMap #lazutils.EasyLazFreeType.TFreeTypeRasterMap -1VScanPtrStart -1VScanX -2MInit -3VRenderQuality -3MRenderGlyph -3MScanMoveTo -3MScanNextPixel -3MGetPixel -3MSetPixel -3MXorPixel -#lazutils.TTRASTER.TFreeTypeRasterizer #lazutils.TTTypes.TFreeTypeCustomRasterizer -1VPrecision_Bits -1VPrecision -1VPrecision_Half -1VPrecision_Step -1VPrecision_Shift -1VPrecision_Mask -1VPrecision_Jitter -1VPool -1VCible -1VBWidth -1VBCible -1VGCible -1VTraceBOfs -1VTraceBIncr -1VTraceGOfs -1VTraceGIncr -1Vgray_min_x -1Vgray_max_x -1VProc_Sweep_Init -1VProc_Sweep_Span -1VProc_Sweep_Drop -1VProc_Sweep_Step -1VProc_Sweep_Direct -1VDirect_X -1VDirect_Y -1VDirect_TX -1VPoints -1VFlags -1VOuts -1VnContours -1VDropOutControl -1VGrays -1VBGray_Data -1VBGray_Incr -1VBGray_End -1VBGray_Capacity -1VSecond_Pass -1MBGray_NeedCapacity -1MDraw_Sweep -1MHorizontal_Gray_Sweep_Drop -1MHorizontal_Gray_Sweep_Span -1MHorizontal_Sweep_Drop -1MHorizontal_Sweep_Init -1MHorizontal_Sweep_Span -1MHorizontal_Sweep_Step -1MProcessCoordinate -1MRaster_Object_Init -1MRaster_Object_Done -1MRender_Single_Pass -1MSet_High_Precision -1MSet_Second_Pass -1MVertical_Gray_Sweep_Init -1MVertical_Gray_Sweep_Init_Direct -1MVertical_Gray_Sweep_Init_Direct_HQ -1MVertical_Gray_Sweep_Init_HQ -1MVertical_Gray_Sweep_Step -1MVertical_Gray_Sweep_Step_Direct -1MVertical_Gray_Sweep_Step_Direct_HQ -1MVertical_Gray_Sweep_Step_HQ -1MVertical_Sweep_Drop -1MVertical_Sweep_Init -1MVertical_Sweep_Span -1MVertical_Sweep_Step -3MRender_Glyph -3MRender_Gray_Glyph -3MRender_Gray_Glyph_HQ -3MRender_Directly_Gray_Glyph -3MRender_Directly_Gray_Glyph_HQ -3MSet_Raster_Palette +#lazutils.laz2_xmlutils.TBinding #rtl.System.TObject +3Vuri +3Vnext +3VprevPrefixBinding +3VPrefix +#lazutils.laz2_xmlutils.TNSSupport #rtl.System.TObject +1VFNesting +1VFPrefixSeqNo +1VFFreeBindings +1VFBindings +1VFBindingStack +1VFPrefixes +1VFDefaultPrefix 3MCreate 3MDestroy -#lazutils.TTProfile.TRenderPool #rtl.System.TObject -2VPrecision -2VPrecisionHalf -2VBezierPrecision -2VBoundsMinY -2VBoundsMaxY -2VscaleShift -2MBezier_Down -2MBezier_State -2MBezier_To -2MBezier_Up -2MCEILING -2MDecomposeCurve -2MFLOOR -2MFRAC -2MGetCapacity -2MLine_Down -2MLine_To -2MLine_Up -2MMove_To -2MPushBezier -2MSCALED -2MSplit_Bezier -2MTRUNC -2MRequireCapacity -2MPushValue -2PCapacity r -3VJoint -3VFresh -3VcProfile -3VProfileColl -3VLastX -3VLastY -3VCurveDir -3VArcs -3VCurArc -3Vdata -3Vposition +3MDefineBinding +3MCheckAttribute +3MIsPrefixBound +3MGetPrefix +3MBindPrefix +3MDefaultNSBinding +3MStartElement +3MEndElement +#lazutils.Laz2_XMLCfg.TXMLConfig #rtl.Classes.TComponent +1VFFilename +1VFReadFlags +1VFWriteFlags +1MCreateConfigNode +1MSetFilename +2MTNodeCache +2Vdoc +2VFModified +2VfDoNotLoadFromFile +2VfAutoLoadFromSource +2VfPathCache +2VfPathNodeCache +2MLoaded +2MExtendedToStr +2MStrToExtended +2MReadXMLFile +2MWriteXMLFile +2MFreeDoc +2MSetPathNodeCache +2MGetCachedPathNode +2MInvalidateCacheTilEnd +2MInternalFindNode +2MInternalCleanNode +2MFindChildNode 3MCreate +3MCreateClean +3MCreateWithSource 3MDestroy -3MSetPrecision -3MSetBounds -3MSetScaleShift 3MClear -3MReduceCapacity -3MConvert_Glyph -#lazutils.TTProfile.TProfile #rtl.System.TObject -0VPool -0VFlow -0VHeight -0VStart -0VOffset -0VX -0VnextInContour -0VnextInColl -0VnextInList -0VprevInList -0MCreate -#lazutils.TTProfile.TProfileCollection #rtl.System.TObject -2MRemove_Profile -3VPool -3VprevProfile -3VfProfile -3VgProfile -3VnProfs +3MFlush +3MReadFromStream +3MWriteToStream +3MGetValue +3MGetExtendedValue +3MSetValue +3MSetDeleteValue +3MSetExtendedValue +3MSetDeleteExtendedValue +3MDeletePath +3MDeleteValue +3MFindNode +3MHasPath +3MHasChildPaths +3PModified rw +3MInvalidatePathCache +4PFilename rw +4PDocument r +4PReadFlags rw +4PWriteFlags rw +#lazutils.Laz2_XMLCfg.TRttiXMLConfig #lazutils.Laz2_XMLCfg.TXMLConfig +2MWriteProperty +2MReadProperty +3MWriteObject +3MReadObject +#lazutils.LazFileCache.TFileStateCacheItem #rtl.System.TObject +1VFAge +1VFFilename +1VFFlags +1VFPhysicalFilename +1VFTestedFlags +1VFTimeStamp +3MCreate +3MCalcMemSize +3PFilename r +3PPhysicalFilename r +3PFlags r +3PTestedFlags r +3PTimeStamp r +3PAge r +#lazutils.LazFileCache.TFileStateCache #rtl.System.TObject +1VFFiles +1VFTimeStamp +1VFLockCount +1VFChangeTimeStampHandler +1MSetFlag +3MCreate +3MDestroy +3MLock +3MUnlock +3MLocked +3MIncreaseTimeStamp +3MFileExistsCached +3MDirPathExistsCached +3MDirectoryIsWritableCached +3MFileIsExecutableCached +3MFileIsReadableCached +3MFileIsWritableCached +3MFileIsTextCached +3MFileAgeCached +3MGetPhysicalFilenameCached +3MFindFile +3MCheck +3MAddChangeTimeStampHandler +3MRemoveChangeTimeStampHandler +3MCalcMemSize +3PTimeStamp r +#lazutils.laz2_XMLRead.EXMLReadError #rtl.sysutils.Exception +1VFSeverity +1VFErrorMessage +1VFLine +1VFLinePos +3PSeverity r +3PErrorMessage r +3PLine r +3PLinePos r +3MLineCol +#lazutils.laz2_XMLRead.TDOMParseOptions #rtl.System.TObject +1VFValidate +1VFPreserveWhitespace +1VFExpandEntities +1VFIgnoreComments +1VFCDSectionsAsText +1VFResolveExternals +1VFNamespaces +1VFDisallowDoctype +1VFCanonical +1VFMaxChars +1MGetCanonical +1MSetCanonical +3PValidate rw +3PPreserveWhitespace rw +3PExpandEntities rw +3PIgnoreComments rw +3PCDSectionsAsText rw +3PResolveExternals rw +3PNamespaces rw +3PDisallowDoctype rw +3PMaxChars rw +3PCanonicalForm rw +#lazutils.laz2_XMLRead.TXMLInputSource #rtl.System.TObject +1VFStream +1VFStringData +1VFBaseURI +1VFSystemID +1VFPublicID +3MCreate +3PStream r +3PStringData r +3PBaseURI rw +3PSystemID rw +3PPublicID rw +#lazutils.laz2_XMLRead.TDOMParser #rtl.System.TObject +1VFOptions +1VFOnError 3MCreate -3MClear -3MNew_Profile -3MEnd_Profile 3MDestroy +3MParse +3MParseUri +3MParseWithContext +3POptions r +3POnError rw +#lazutils.LazUTF8Classes.TFileStreamUTF8 #rtl.Classes.TFileStream +1VFFileName +3MCreate +3PFileName r +#lazutils.LazUTF8Classes.TStringListUTF8 #rtl.Classes.TStringList +2MDoCompareText +3MLoadFromFile +3MSaveToFile +#lazutils.LazUTF8Classes.TMemoryStreamUTF8 #rtl.Classes.TMemoryStream +3MLoadFromFile +3MSaveToFile #lazutils.laz2_xpath.TXPathExprNode #rtl.System.TObject 2MEvalPredicate 3MEvaluate @@ -4434,7 +4234,49 @@ 1VFRootNode 3MCreate 3MDestroy -3MEvaluate +3MEvaluate +#lazutils.LazClasses.TFreeNotifyingObject #rtl.System.TObject +1VFFreeNotificationList +3MDestroy +3MAddFreeeNotification +3MRemoveFreeeNotification +3MAddFreeNotification +3MRemoveFreeNotification +#lazutils.LazClasses.TRefCountedObject #lazutils.LazClasses.TFreeNotifyingObject +1VFRefCount +1VFInDecRefCount +2MDoFree +2MDoReferenceAdded +2MDoReferenceReleased +2PRefCount r +3MCreate +3MDestroy +3MAddReference +3MReleaseReference +#lazutils.LazClasses.TRefCntObjList #rtl.Classes.TList +2MNotify +#lazutils.LazMethodList.TMethodList #rtl.System.TObject +1VFAllowDuplicates +1VFItems +1VFCount +1MGetItems +1MSetAllowDuplicates +1MSetItems +1MInternalInsert +1MRaiseIndexOutOfBounds +3MDestroy +3MCount +3MNextDownIndex +3MIndexOf +3MDelete +3MRemove +3MAdd +3MInsert +3MMove +3MRemoveAllMethodsOfObject +3MCallNotifyEvents +3PItems rw +3PAllowDuplicates rw #lazutils.LazConfigStorage.TConfigStorage #rtl.System.TObject 1VFPathStack 1VFCurrentBasePath @@ -4486,6 +4328,151 @@ 3MSaveToConfig 3MLoadFromConfig 3MWriteDebugReport +#lazutils.LazLogger.TLazLoggerFileHandle #rtl.System.TObject +1VFActiveLogText +1VFCloseLogFileBetweenWrites +1VFLogName +1VFLogText +1VFLogTextInUse +1VFLogTextFailed +1VFUseStdOut +1MDoOpenFile +1MDoCloseFile +1MGetWriteTarget +1MSetCloseLogFileBetweenWrites +1MSetLogName +3MCreate +3MDestroy +3MOpenFile +3MCloseFile +3MWriteToFile +3MWriteLnToFile +3PLogName rw +3PUseStdOut rw +3PCloseLogFileBetweenWrites rw +3PWriteTarget r +3PActiveLogText r +#lazutils.LazLogger.TLazLoggerFile #lazutils.LazLoggerBase.TLazLoggerWithGroupParam +1VFFileHandle +1VFOnDbgOut +1VFOnDebugLn +1VFBlockHandler +1VFEnvironmentForLogFileName +1VFParamForLogFileName +1VFGetLogFileNameDone +1VFDebugNestLvl +1VFDebugIndent +1VFDebugNestAtBOL +1MGetFileHandle +1MSetEnvironmentForLogFileName +1MSetFileHandle +1MSetParamForLogFileName +1MGetLogFileName +1MGetCloseLogFileBetweenWrites +1MGetLogName +1MGetUseStdOut +1MSetCloseLogFileBetweenWrites +1MSetLogName +1MSetUseStdOut +2MDoInit +2MDoFinsh +2MIncreaseIndent +2MDecreaseIndent +2MIndentChanged +2MCreateIndent +2MGetBlockHandler +2MClearAllBlockHandler +2MDoDbgOut +2MDoDebugLn +2MDoDebuglnStack +2PFileHandle rw +3MCreate +3MDestroy +3MAssign +3MCurrentIndentLevel +3PParamForLogFileName rw +3PEnvironmentForLogFileName rw +3POnDebugLn rw +3POnDbgOut rw +3MAddBlockHandler +3MRemoveBlockHandler +3MBlockHandlerCount +3PLogName rw +3PUseStdOut rw +3PCloseLogFileBetweenWrites rw +#lazutils.LazLoggerBase.TLazLoggerBlockHandler #lazutils.LazClasses.TRefCountedObject +3MEnterBlock +3MExitBlock +#lazutils.LazLoggerBase.TLazLoggerLogGroupList #lazutils.LazClasses.TRefCountedObject +1VFList +1MClear +1MGetItem +1MNewItem +2MAdd +2MFindOrAdd +2MRemove +3MCreate +3MDestroy +3MAssign +3MIndexOf +3MFind +3MCount +3PItem r +#lazutils.LazLoggerBase.TLazLogger #lazutils.LazClasses.TRefCountedObject +1VFIsInitialized +1VFMaxNestPrefixLen +1VFNestLvlIndent +1VFLogGroupList +1VFUseGlobalLogGroupList +1MSetMaxNestPrefixLen +1MSetNestLvlIndent +1MGetLogGroupList +1MSetUseGlobalLogGroupList +2MDoInit +2MDoFinsh +2MIncreaseIndent +2MDecreaseIndent +2MIndentChanged +2MGetBlockHandler +2MDoDbgOut +2MDoDebugLn +2MDoDebuglnStack +2MArgsToString +2PIsInitialized r +3MCreate +3MDestroy +3MAssign +3MInit +3MFinish +3MCurrentIndentLevel +3PNestLvlIndent rw +3PMaxNestPrefixLen rw +3MRegisterLogGroup +3MFindOrRegisterLogGroup +3PLogGroupList r +3PUseGlobalLogGroupList rw +3MAddBlockHandler +3MRemoveBlockHandler +3MBlockHandlerCount +3PBlockHandler r +3MDebuglnStack +3MDbgOut +3MDebugLn +3MDebugLnEnter +3MDebugLnExit +#lazutils.LazLoggerBase.TLazLoggerWithGroupParam #lazutils.LazLoggerBase.TLazLogger +1VFLogAllDefaultDisabled +1VFLogDefaultEnabled +1VFLogParamParsed +1VFParamForEnabledLogGroups +1MSetParamForEnabledLogGroups +1MParseParamForEnabledLogGroups +3MCreate +3MAssign +3MRegisterLogGroup +3MFindOrRegisterLogGroup +3PParamForEnabledLogGroups rw +#lazutils.LazLoggerBase.TLazLoggerNoOutput #lazutils.LazLoggerBase.TLazLogger #lazutils.LazFreeTypeFontCollection.TFontCollectionItem #lazutils.EasyLazFreeType.TCustomFontCollectionItem 1VFFilename 1VFSourceStream @@ -4531,12 +4518,15 @@ 2MGetFontIndexByStyles 2MGetStyle 2MAddStyle +2MRemoveStyle 2MGetStyles 2MGetFamilyName 2MGetFontCount 2MGetStyleCount +2MRebuildStyleList 3MCreate 3MAddFont +3MRemoveFont 3MGetFont 3MGetFontIndex 3MHasStyle @@ -4554,11 +4544,14 @@ 2MGetFamily 2MGetFamilyCount 2MGetFontCount +2MRemoveAndFreeFamily 3MCreate 3MClear 3MBeginUpdate 3MAddFolder +3MRemoveFolder 3MAddFile +3MRemoveFile 3MAddStream 3MEndUpdate 3MDestroy @@ -4622,6 +4615,92 @@ 3PMaxDepth rw 3PMemDiff r 3PNested r +#lazutils.Laz_XMLStreaming.TXMLObjectWriterStackEl #rtl.System.TObject +3VElement +3VParent +3VElemType +3VPropertyName +#lazutils.Laz_XMLStreaming.TXMLObjectWriter #rtl.Classes.TAbstractObjectWriter +1VFDoc +1VFRootEl +1VFStack +1VStackEl +1MStackPush +1MStackPop +2MGetPropertyElement +3MCreate +3MBeginCollection +3MBeginComponent +3MBeginList +3MEndList +3MBeginProperty +3MEndProperty +3MWriteBinary +3MWriteBoolean +3MWriteFloat +3MWriteSingle +3MWriteCurrency +3MWriteDate +3MWriteIdent +3MWriteInteger +3MWriteMethodName +3MWriteSet +3MWriteString +3MWriteWideString +3MWriteUInt64 +3MWriteUnicodeString +3MWriteVariant +3MWrite +3PDoc r +#lazutils.Laz_XMLStreaming.TXMLObjectReader #rtl.Classes.TAbstractObjectReader +1VFDoc +1VFElement +1VFElementPosition +1VFRootEl +1MReadNextValue +3MCreate +3MDestroy +3MGetRootClassName +3MNextValue +3MReadValue +3MBeginRootComponent +3MBeginComponent +3MBeginProperty +3MReadBinary +3MReadFloat +3MReadSingle +3MReadCurrency +3MReadDate +3MReadIdent +3MReadInt8 +3MReadInt16 +3MReadInt32 +3MReadInt64 +3MReadSet +3MReadStr +3MReadString +3MReadWideString +3MReadUnicodeString +3MSkipComponent +3MSkipValue +3MRead +3PDoc r +3PElement r +3PElementPosition r +#lazutils.LookupStringList.TLookupStringList #rtl.Classes.TStringList +1VFMap +2MInsertItem +3MCreate +3MDestroy +3MAssign +3MClear +3MDelete +3MAdd +3MAddObject +3MContains +3MFind +3MIndexOf +#lazutils.LookupStringList.TDictionaryStringList #lazutils.LookupStringList.TLookupStringList #lazutils.TTFile.TFreeTypeStream #rtl.System.TObject 1MGetSize 1VFCurrentFrame @@ -4664,3 +4743,4 @@ 3PBase r 3PPosition r 3PUsed r +#lazutils.UTF8Process.TProcessUTF8 #fcl.process.TProcess Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/lcl.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/lcl.chm differ diff -Nru lazarus-1.4.4+dfsg/docs/chm/lcl.xct lazarus-1.6+dfsg/docs/chm/lcl.xct --- lazarus-1.4.4+dfsg/docs/chm/lcl.xct 2015-10-04 13:38:39.000000000 +0000 +++ lazarus-1.6+dfsg/docs/chm/lcl.xct 2016-02-15 12:46:38.000000000 +0000 @@ -1,6 +1,139 @@ # FPDoc Content File :link tree #lcl index.html + ActnList actnlist/index.html + RegisterActionsProc actnlist/registeractionsproc.html + UnRegisterActionsProc actnlist/unregisteractionsproc.html + EnumRegisteredActionsProc actnlist/enumregisteredactionsproc.html + CreateActionProc actnlist/createactionproc.html + TContainedActionClass actnlist/tcontainedactionclass.html + TActionEvent actnlist/tactionevent.html + TActionListState actnlist/tactionliststate.html + THintEvent actnlist/thintevent.html + TActionLinkClass actnlist/tactionlinkclass.html + TEnumActionProc actnlist/tenumactionproc.html + TContainedAction actnlist/tcontainedaction.html + ActionList actnlist/tcontainedaction.actionlist.html + Index actnlist/tcontainedaction.index.html + Category actnlist/tcontainedaction.category.html + ReadState + SetParentComponent + Destroy ms-its:rtl.chm::/classes/tbasicaction.destroy.html + Execute ms-its:rtl.chm::/classes/tbasicaction.execute.html + GetParentComponent ms-its:rtl.chm::/classes/tcomponent.getparentcomponent.html + HasParent ms-its:rtl.chm::/classes/tcomponent.hasparent.html + Update ms-its:rtl.chm::/classes/tbasicaction.update.html + TActionListEnumerator actnlist/tactionlistenumerator.html + Create actnlist/tactionlistenumerator.create.html + MoveNext actnlist/tactionlistenumerator.movenext.html + Current actnlist/tactionlistenumerator.current.html + TCustomActionList actnlist/tcustomactionlist.html + AddAction actnlist/tcustomactionlist.addaction.html + RemoveAction actnlist/tcustomactionlist.removeaction.html + Change actnlist/tcustomactionlist.change.html + SetImages actnlist/tcustomactionlist.setimages.html + OnChange actnlist/tcustomactionlist.onchange.html + OnExecute actnlist/tcustomactionlist.onexecute.html + OnUpdate actnlist/tcustomactionlist.onupdate.html + Create actnlist/tcustomactionlist.create.html + Destroy actnlist/tcustomactionlist.destroy.html + ActionByName actnlist/tcustomactionlist.actionbyname.html + GetEnumerator actnlist/tcustomactionlist.getenumerator.html + IndexOfName actnlist/tcustomactionlist.indexofname.html + IsShortCut actnlist/tcustomactionlist.isshortcut.html + Actions actnlist/tcustomactionlist.actions.html + ActionCount actnlist/tcustomactionlist.actioncount.html + Images actnlist/tcustomactionlist.images.html + State actnlist/tcustomactionlist.state.html + GetChildren + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + SetChildOrder + ExecuteAction ms-its:rtl.chm::/classes/tcomponent.executeaction.html + UpdateAction ms-its:rtl.chm::/classes/tcomponent.updateaction.html + TActionList actnlist/tactionlist.html + Images actnlist/tcustomactionlist.images.html + State actnlist/tcustomactionlist.state.html + OnChange actnlist/tcustomactionlist.onchange.html + OnExecute actnlist/tcustomactionlist.onexecute.html + OnUpdate actnlist/tcustomactionlist.onupdate.html + TShortCutList actnlist/tshortcutlist.html + Add actnlist/tshortcutlist.add.html + IndexOfShortCut actnlist/tshortcutlist.indexofshortcut.html + ShortCuts actnlist/tshortcutlist.shortcuts.html + TCustomAction actnlist/tcustomaction.html + FImage actnlist/tcustomaction.fimage.html + FMask actnlist/tcustomaction.fmask.html + HandleShortCut actnlist/tcustomaction.handleshortcut.html + SavedEnabledState actnlist/tcustomaction.savedenabledstate.html + Create actnlist/tcustomaction.create.html + Destroy actnlist/tcustomaction.destroy.html + DoHint actnlist/tcustomaction.dohint.html + AutoCheck actnlist/tcustomaction.autocheck.html + Caption actnlist/tcustomaction.caption.html + Checked actnlist/tcustomaction.checked.html + DisableIfNoHandler actnlist/tcustomaction.disableifnohandler.html + Enabled actnlist/tcustomaction.enabled.html + GroupIndex actnlist/tcustomaction.groupindex.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + OnHint actnlist/tcustomaction.onhint.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + ShortCut actnlist/tcustomaction.shortcut.html + Visible actnlist/tcustomaction.visible.html + AssignTo + SetName + Execute ms-its:rtl.chm::/classes/tbasicaction.execute.html + TAction actnlist/taction.html + Create actnlist/tcustomaction.create.html + AutoCheck actnlist/tcustomaction.autocheck.html + Caption actnlist/tcustomaction.caption.html + Checked actnlist/tcustomaction.checked.html + DisableIfNoHandler actnlist/tcustomaction.disableifnohandler.html + Enabled actnlist/tcustomaction.enabled.html + GroupIndex actnlist/tcustomaction.groupindex.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + OnExecute ms-its:rtl.chm::/classes/tbasicaction.onexecute.html + OnHint actnlist/tcustomaction.onhint.html + OnUpdate ms-its:rtl.chm::/classes/tbasicaction.onupdate.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + ShortCut actnlist/tcustomaction.shortcut.html + Visible actnlist/tcustomaction.visible.html + TActionLink actnlist/tactionlink.html + SetAutoCheck actnlist/tactionlink.setautocheck.html + SetCaption actnlist/tactionlink.setcaption.html + SetChecked actnlist/tactionlink.setchecked.html + SetEnabled actnlist/tactionlink.setenabled.html + SetGroupIndex actnlist/tactionlink.setgroupindex.html + SetHelpContext actnlist/tactionlink.sethelpcontext.html + SetHelpKeyword actnlist/tactionlink.sethelpkeyword.html + SetHelpType actnlist/tactionlink.sethelptype.html + SetHint actnlist/tactionlink.sethint.html + SetImageIndex actnlist/tactionlink.setimageindex.html + SetShortCut actnlist/tactionlink.setshortcut.html + SetVisible actnlist/tactionlink.setvisible.html + IsCaptionLinked actnlist/tactionlink.iscaptionlinked.html + IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html + IsEnabledLinked actnlist/tactionlink.isenabledlinked.html + IsGroupIndexLinked actnlist/tactionlink.isgroupindexlinked.html + IsHelpContextLinked actnlist/tactionlink.ishelpcontextlinked.html + IsHelpLinked actnlist/tactionlink.ishelplinked.html + IsHintLinked actnlist/tactionlink.ishintlinked.html + IsImageIndexLinked actnlist/tactionlink.isimageindexlinked.html + IsShortCutLinked actnlist/tactionlink.isshortcutlinked.html + IsVisibleLinked actnlist/tactionlink.isvisiblelinked.html + RegisterActions actnlist/registeractions.html + UnRegisterActions actnlist/unregisteractions.html + EnumRegisteredActions actnlist/enumregisteredactions.html + CreateAction actnlist/createaction.html + Register actnlist/register.html + ApplicationActionComponent actnlist/applicationactioncomponent.html LCLStrConsts lclstrconsts/index.html SNoMDIForm lclstrconsts/index-1.html#snomdiform rsMbYes lclstrconsts/index-1.html#rsmbyes @@ -189,6 +322,18 @@ rsPickDate lclstrconsts/index-1.html#rspickdate rsSize lclstrconsts/index-1.html#rssize rsModified lclstrconsts/index-1.html#rsmodified + rsDoCopy lclstrconsts/index-1.html#rsdocopy + rsDoPaste lclstrconsts/index-1.html#rsdopaste + sShellCtrlsName lclstrconsts/index-1.html#sshellctrlsname + sShellCtrlsSize lclstrconsts/index-1.html#sshellctrlssize + sShellCtrlsType lclstrconsts/index-1.html#sshellctrlstype + sShellCtrlsMB lclstrconsts/index-1.html#sshellctrlsmb + sShellCtrlsKB lclstrconsts/index-1.html#sshellctrlskb + sShellCtrlsBytes lclstrconsts/index-1.html#sshellctrlsbytes + sShellCtrlsInvalidRoot lclstrconsts/index-1.html#sshellctrlsinvalidroot + sShellCtrlsSelectedItemDoesNotExists lclstrconsts/index-1.html#sshellctrlsselecteditemdoesnotexists + sShellCtrlsInvalidPath lclstrconsts/index-1.html#sshellctrlsinvalidpath + sShellCtrlsInvalidPathRelative lclstrconsts/index-1.html#sshellctrlsinvalidpathrelative ifsVK_UNKNOWN lclstrconsts/index-1.html#ifsvk_unknown ifsVK_LBUTTON lclstrconsts/index-1.html#ifsvk_lbutton ifsVK_RBUTTON lclstrconsts/index-1.html#ifsvk_rbutton @@ -1610,6 +1755,7 @@ VERTRES lcltype/vertres.html BITSPIXEL lcltype/bitspixel.html PLANES lcltype/planes.html + NUMCOLORS lcltype/numcolors.html LOGPIXELSX lcltype/logpixelsx.html LOGPIXELSY lcltype/logpixelsy.html SIZEPALETTE lcltype/sizepalette.html @@ -2167,6 +2313,10 @@ SwapCase lclproc/swapcase.html StringCase lclproc/stringcase.html ClassCase lclproc/classcase.html + UTF16CharacterLength lclproc/utf16characterlength.html + UTF16Length lclproc/utf16length.html + UTF16CharacterToUnicode lclproc/utf16charactertounicode.html + UnicodeToUTF16 lclproc/unicodetoutf16.html UTF8CharacterLength lclproc/utf8characterlength.html UTF8Length lclproc/utf8length.html UTF8CharacterToUnicode lclproc/utf8charactertounicode.html @@ -2189,10 +2339,6 @@ FindInvalidUTF8Character lclproc/findinvalidutf8character.html ValidUTF8String lclproc/validutf8string.html AssignUTF8ListToAnsi lclproc/assignutf8listtoansi.html - UTF16CharacterLength lclproc/utf16characterlength.html - UTF16Length lclproc/utf16length.html - UTF16CharacterToUnicode lclproc/utf16charactertounicode.html - UnicodeToUTF16 lclproc/unicodetoutf16.html UTF8CompareStr lclproc/utf8comparestr.html UTF8CompareText lclproc/utf8comparetext.html ConvertUTF8ToUTF16 lclproc/convertutf8toutf16.html @@ -2204,21848 +2350,21349 @@ CreateNextIdentifier lclproc/createnextidentifier.html SendApplicationMessageFunction lclproc/sendapplicationmessagefunction.html OwnerFormDesignerModifiedProc lclproc/ownerformdesignermodifiedproc.html - TmSchema tmschema/index.html - TMTVS_RESERVEDLOW tmschema/tmtvs_reservedlow.html - TMTVS_RESERVEDHIGH tmschema/tmtvs_reservedhigh.html - VSCLASS_AEROWIZARDSTYLE tmschema/vsclass_aerowizardstyle.html - VSCLASS_AEROWIZARD tmschema/vsclass_aerowizard.html - AW_TITLEBAR tmschema/aw_titlebar.html - AW_HEADERAREA tmschema/aw_headerarea.html - AW_CONTENTAREA tmschema/aw_contentarea.html - AW_COMMANDAREA tmschema/aw_commandarea.html - AW_BUTTON tmschema/aw_button.html - AW_S_TITLEBAR_ACTIVE tmschema/aw_s_titlebar_active.html - AW_S_TITLEBAR_INACTIVE tmschema/aw_s_titlebar_inactive.html - AW_S_HEADERAREA_NOMARGIN tmschema/aw_s_headerarea_nomargin.html - AW_S_CONTENTAREA_NOMARGIN tmschema/aw_s_contentarea_nomargin.html - VSCLASS_BUTTONSTYLE tmschema/vsclass_buttonstyle.html - VSCLASS_BUTTON tmschema/vsclass_button.html - BP_PUSHBUTTON tmschema/bp_pushbutton.html - BP_RADIOBUTTON tmschema/bp_radiobutton.html - BP_CHECKBOX tmschema/bp_checkbox.html - BP_GROUPBOX tmschema/bp_groupbox.html - BP_USERBUTTON tmschema/bp_userbutton.html - BP_COMMANDLINK tmschema/bp_commandlink.html - BP_COMMANDLINKGLYPH tmschema/bp_commandlinkglyph.html - PBS_NORMAL tmschema/pbs_normal.html - PBS_HOT tmschema/pbs_hot.html - PBS_PRESSED tmschema/pbs_pressed.html - PBS_DISABLED tmschema/pbs_disabled.html - PBS_DEFAULTED tmschema/pbs_defaulted.html - PBS_DEFAULTED_ANIMATING tmschema/pbs_defaulted_animating.html - RBS_UNCHECKEDNORMAL tmschema/rbs_uncheckednormal.html - RBS_UNCHECKEDHOT tmschema/rbs_uncheckedhot.html - RBS_UNCHECKEDPRESSED tmschema/rbs_uncheckedpressed.html - RBS_UNCHECKEDDISABLED tmschema/rbs_uncheckeddisabled.html - RBS_CHECKEDNORMAL tmschema/rbs_checkednormal.html - RBS_CHECKEDHOT tmschema/rbs_checkedhot.html - RBS_CHECKEDPRESSED tmschema/rbs_checkedpressed.html - RBS_CHECKEDDISABLED tmschema/rbs_checkeddisabled.html - CBS_UNCHECKEDNORMAL tmschema/cbs_uncheckednormal.html - CBS_UNCHECKEDHOT tmschema/cbs_uncheckedhot.html - CBS_UNCHECKEDPRESSED tmschema/cbs_uncheckedpressed.html - CBS_UNCHECKEDDISABLED tmschema/cbs_uncheckeddisabled.html - CBS_CHECKEDNORMAL tmschema/cbs_checkednormal.html - CBS_CHECKEDHOT tmschema/cbs_checkedhot.html - CBS_CHECKEDPRESSED tmschema/cbs_checkedpressed.html - CBS_CHECKEDDISABLED tmschema/cbs_checkeddisabled.html - CBS_MIXEDNORMAL tmschema/cbs_mixednormal.html - CBS_MIXEDHOT tmschema/cbs_mixedhot.html - CBS_MIXEDPRESSED tmschema/cbs_mixedpressed.html - CBS_MIXEDDISABLED tmschema/cbs_mixeddisabled.html - CBS_IMPLICITNORMAL tmschema/cbs_implicitnormal.html - CBS_IMPLICITHOT tmschema/cbs_implicithot.html - CBS_IMPLICITPRESSED tmschema/cbs_implicitpressed.html - CBS_IMPLICITDISABLED tmschema/cbs_implicitdisabled.html - CBS_EXCLUDEDNORMAL tmschema/cbs_excludednormal.html - CBS_EXCLUDEDHOT tmschema/cbs_excludedhot.html - CBS_EXCLUDEDPRESSED tmschema/cbs_excludedpressed.html - CBS_EXCLUDEDDISABLED tmschema/cbs_excludeddisabled.html - GBS_NORMAL tmschema/gbs_normal.html - GBS_DISABLED tmschema/gbs_disabled.html - CMDLS_NORMAL tmschema/cmdls_normal.html - CMDLS_HOT tmschema/cmdls_hot.html - CMDLS_PRESSED tmschema/cmdls_pressed.html - CMDLS_DISABLED tmschema/cmdls_disabled.html - CMDLS_DEFAULTED tmschema/cmdls_defaulted.html - CMDLS_DEFAULTED_ANIMATING tmschema/cmdls_defaulted_animating.html - CMDLGS_NORMAL tmschema/cmdlgs_normal.html - CMDLGS_HOT tmschema/cmdlgs_hot.html - CMDLGS_PRESSED tmschema/cmdlgs_pressed.html - CMDLGS_DISABLED tmschema/cmdlgs_disabled.html - CMDLGS_DEFAULTED tmschema/cmdlgs_defaulted.html - VSCLASS_COMBOBOXSTYLE tmschema/vsclass_comboboxstyle.html - VSCLASS_COMBOBOX tmschema/vsclass_combobox.html - CP_DROPDOWNBUTTON tmschema/cp_dropdownbutton.html - CP_BACKGROUND tmschema/cp_background.html - CP_TRANSPARENTBACKGROUND tmschema/cp_transparentbackground.html - CP_BORDER tmschema/cp_border.html - CP_READONLY tmschema/cp_readonly.html - CP_DROPDOWNBUTTONRIGHT tmschema/cp_dropdownbuttonright.html - CP_DROPDOWNBUTTONLEFT tmschema/cp_dropdownbuttonleft.html - CP_CUEBANNER tmschema/cp_cuebanner.html - CBXS_NORMAL tmschema/cbxs_normal.html - CBXS_HOT tmschema/cbxs_hot.html - CBXS_PRESSED tmschema/cbxs_pressed.html - CBXS_DISABLED tmschema/cbxs_disabled.html - CBXSR_NORMAL tmschema/cbxsr_normal.html - CBXSR_HOT tmschema/cbxsr_hot.html - CBXSR_PRESSED tmschema/cbxsr_pressed.html - CBXSR_DISABLED tmschema/cbxsr_disabled.html - CBXSL_NORMAL tmschema/cbxsl_normal.html - CBXSL_HOT tmschema/cbxsl_hot.html - CBXSL_PRESSED tmschema/cbxsl_pressed.html - CBXSL_DISABLED tmschema/cbxsl_disabled.html - CBTBS_NORMAL tmschema/cbtbs_normal.html - CBTBS_HOT tmschema/cbtbs_hot.html - CBTBS_DISABLED tmschema/cbtbs_disabled.html - CBTBS_FOCUSED tmschema/cbtbs_focused.html - CBB_NORMAL tmschema/cbb_normal.html - CBB_HOT tmschema/cbb_hot.html - CBB_FOCUSED tmschema/cbb_focused.html - CBB_DISABLED tmschema/cbb_disabled.html - CBRO_NORMAL tmschema/cbro_normal.html - CBRO_HOT tmschema/cbro_hot.html - CBRO_PRESSED tmschema/cbro_pressed.html - CBRO_DISABLED tmschema/cbro_disabled.html - CBCB_NORMAL tmschema/cbcb_normal.html - CBCB_HOT tmschema/cbcb_hot.html - CBCB_PRESSED tmschema/cbcb_pressed.html - CBCB_DISABLED tmschema/cbcb_disabled.html - VSCLASS_COMMUNICATIONSSTYLE tmschema/vsclass_communicationsstyle.html - VSCLASS_COMMUNICATIONS tmschema/vsclass_communications.html - CSST_TAB tmschema/csst_tab.html - CSTB_NORMAL tmschema/cstb_normal.html - CSTB_HOT tmschema/cstb_hot.html - CSTB_SELECTED tmschema/cstb_selected.html - VSCLASS_CONTROLPANELSTYLE tmschema/vsclass_controlpanelstyle.html - VSCLASS_CONTROLPANEL tmschema/vsclass_controlpanel.html - CPANEL_NAVIGATIONPANE tmschema/cpanel_navigationpane.html - CPANEL_CONTENTPANE tmschema/cpanel_contentpane.html - CPANEL_NAVIGATIONPANELABEL tmschema/cpanel_navigationpanelabel.html - CPANEL_CONTENTPANELABEL tmschema/cpanel_contentpanelabel.html - CPANEL_TITLE tmschema/cpanel_title.html - CPANEL_BODYTEXT tmschema/cpanel_bodytext.html - CPANEL_HELPLINK tmschema/cpanel_helplink.html - CPANEL_TASKLINK tmschema/cpanel_tasklink.html - CPANEL_GROUPTEXT tmschema/cpanel_grouptext.html - CPANEL_CONTENTLINK tmschema/cpanel_contentlink.html - CPANEL_SECTIONTITLELINK tmschema/cpanel_sectiontitlelink.html - CPANEL_LARGECOMMANDAREA tmschema/cpanel_largecommandarea.html - CPANEL_SMALLCOMMANDAREA tmschema/cpanel_smallcommandarea.html - CPANEL_BUTTON tmschema/cpanel_button.html - CPANEL_MESSAGETEXT tmschema/cpanel_messagetext.html - CPANEL_NAVIGATIONPANELINE tmschema/cpanel_navigationpaneline.html - CPANEL_CONTENTPANELINE tmschema/cpanel_contentpaneline.html - CPANEL_BANNERAREA tmschema/cpanel_bannerarea.html - CPANEL_BODYTITLE tmschema/cpanel_bodytitle.html - CPHL_NORMAL tmschema/cphl_normal.html - CPHL_HOT tmschema/cphl_hot.html - CPHL_PRESSED tmschema/cphl_pressed.html - CPHL_DISABLED tmschema/cphl_disabled.html - CPTL_NORMAL tmschema/cptl_normal.html - CPTL_HOT tmschema/cptl_hot.html - CPTL_PRESSED tmschema/cptl_pressed.html - CPTL_DISABLED tmschema/cptl_disabled.html - CPTL_PAGE tmschema/cptl_page.html - CPCL_NORMAL tmschema/cpcl_normal.html - CPCL_HOT tmschema/cpcl_hot.html - CPCL_PRESSED tmschema/cpcl_pressed.html - CPCL_DISABLED tmschema/cpcl_disabled.html - CPSTL_NORMAL tmschema/cpstl_normal.html - CPSTL_HOT tmschema/cpstl_hot.html - VSCLASS_DATEPICKERSTYLE tmschema/vsclass_datepickerstyle.html - VSCLASS_DATEPICKER tmschema/vsclass_datepicker.html - DP_DATETEXT tmschema/dp_datetext.html - DP_DATEBORDER tmschema/dp_dateborder.html - DP_SHOWCALENDARBUTTONRIGHT tmschema/dp_showcalendarbuttonright.html - DPDT_NORMAL tmschema/dpdt_normal.html - DPDT_DISABLED tmschema/dpdt_disabled.html - DPDT_SELECTED tmschema/dpdt_selected.html - DPDB_NORMAL tmschema/dpdb_normal.html - DPDB_HOT tmschema/dpdb_hot.html - DPDB_FOCUSED tmschema/dpdb_focused.html - DPDB_DISABLED tmschema/dpdb_disabled.html - DPSCBR_NORMAL tmschema/dpscbr_normal.html - DPSCBR_HOT tmschema/dpscbr_hot.html - DPSCBR_PRESSED tmschema/dpscbr_pressed.html - DPSCBR_DISABLED tmschema/dpscbr_disabled.html - VSCLASS_DRAGDROPSTYLE tmschema/vsclass_dragdropstyle.html - VSCLASS_DRAGDROP tmschema/vsclass_dragdrop.html - DD_COPY tmschema/dd_copy.html - DD_MOVE tmschema/dd_move.html - DD_UPDATEMETADATA tmschema/dd_updatemetadata.html - DD_CREATELINK tmschema/dd_createlink.html - DD_WARNING tmschema/dd_warning.html - DD_NONE tmschema/dd_none.html - DD_IMAGEBG tmschema/dd_imagebg.html - DD_TEXTBG tmschema/dd_textbg.html - DDCOPY_HIGHLIGHT tmschema/ddcopy_highlight.html - DDCOPY_NOHIGHLIGHT tmschema/ddcopy_nohighlight.html - DDMOVE_HIGHLIGHT tmschema/ddmove_highlight.html - DDMOVE_NOHIGHLIGHT tmschema/ddmove_nohighlight.html - DDUPDATEMETADATA_HIGHLIGHT tmschema/ddupdatemetadata_highlight.html - DDUPDATEMETADATA_NOHIGHLIGHT tmschema/ddupdatemetadata_nohighlight.html - DDCREATELINK_HIGHLIGHT tmschema/ddcreatelink_highlight.html - DDCREATELINK_NOHIGHLIGHT tmschema/ddcreatelink_nohighlight.html - DDWARNING_HIGHLIGHT tmschema/ddwarning_highlight.html - DDWARNING_NOHIGHLIGHT tmschema/ddwarning_nohighlight.html - DDNONE_HIGHLIGHT tmschema/ddnone_highlight.html - DDNONE_NOHIGHLIGHT tmschema/ddnone_nohighlight.html - VSCLASS_EDITSTYLE tmschema/vsclass_editstyle.html - VSCLASS_EDIT tmschema/vsclass_edit.html - EP_EDITTEXT tmschema/ep_edittext.html - EP_CARET tmschema/ep_caret.html - EP_BACKGROUND tmschema/ep_background.html - EP_PASSWORD tmschema/ep_password.html - EP_BACKGROUNDWITHBORDER tmschema/ep_backgroundwithborder.html - EP_EDITBORDER_NOSCROLL tmschema/ep_editborder_noscroll.html - EP_EDITBORDER_HSCROLL tmschema/ep_editborder_hscroll.html - EP_EDITBORDER_VSCROLL tmschema/ep_editborder_vscroll.html - EP_EDITBORDER_HVSCROLL tmschema/ep_editborder_hvscroll.html - ETS_NORMAL tmschema/ets_normal.html - ETS_HOT tmschema/ets_hot.html - ETS_SELECTED tmschema/ets_selected.html - ETS_DISABLED tmschema/ets_disabled.html - ETS_FOCUSED tmschema/ets_focused.html - ETS_READONLY tmschema/ets_readonly.html - ETS_ASSIST tmschema/ets_assist.html - ETS_CUEBANNER tmschema/ets_cuebanner.html - EBS_NORMAL tmschema/ebs_normal.html - EBS_HOT tmschema/ebs_hot.html - EBS_DISABLED tmschema/ebs_disabled.html - EBS_FOCUSED tmschema/ebs_focused.html - EBS_READONLY tmschema/ebs_readonly.html - EBS_ASSIST tmschema/ebs_assist.html - EBWBS_NORMAL tmschema/ebwbs_normal.html - EBWBS_HOT tmschema/ebwbs_hot.html - EBWBS_DISABLED tmschema/ebwbs_disabled.html - EBWBS_FOCUSED tmschema/ebwbs_focused.html - EPSN_NORMAL tmschema/epsn_normal.html - EPSN_HOT tmschema/epsn_hot.html - EPSN_FOCUSED tmschema/epsn_focused.html - EPSN_DISABLED tmschema/epsn_disabled.html - EPSH_NORMAL tmschema/epsh_normal.html - EPSH_HOT tmschema/epsh_hot.html - EPSH_FOCUSED tmschema/epsh_focused.html - EPSH_DISABLED tmschema/epsh_disabled.html - EPSV_NORMAL tmschema/epsv_normal.html - EPSV_HOT tmschema/epsv_hot.html - EPSV_FOCUSED tmschema/epsv_focused.html - EPSV_DISABLED tmschema/epsv_disabled.html - EPSHV_NORMAL tmschema/epshv_normal.html - EPSHV_HOT tmschema/epshv_hot.html - EPSHV_FOCUSED tmschema/epshv_focused.html - EPSHV_DISABLED tmschema/epshv_disabled.html - VSCLASS_EXPLORERBARSTYLE tmschema/vsclass_explorerbarstyle.html - VSCLASS_EXPLORERBAR tmschema/vsclass_explorerbar.html - EBP_HEADERBACKGROUND tmschema/ebp_headerbackground.html - EBP_HEADERCLOSE tmschema/ebp_headerclose.html - EBP_HEADERPIN tmschema/ebp_headerpin.html - EBP_IEBARMENU tmschema/ebp_iebarmenu.html - EBP_NORMALGROUPBACKGROUND tmschema/ebp_normalgroupbackground.html - EBP_NORMALGROUPCOLLAPSE tmschema/ebp_normalgroupcollapse.html - EBP_NORMALGROUPEXPAND tmschema/ebp_normalgroupexpand.html - EBP_NORMALGROUPHEAD tmschema/ebp_normalgrouphead.html - EBP_SPECIALGROUPBACKGROUND tmschema/ebp_specialgroupbackground.html - EBP_SPECIALGROUPCOLLAPSE tmschema/ebp_specialgroupcollapse.html - EBP_SPECIALGROUPEXPAND tmschema/ebp_specialgroupexpand.html - EBP_SPECIALGROUPHEAD tmschema/ebp_specialgrouphead.html - EBHC_NORMAL tmschema/ebhc_normal.html - EBHC_HOT tmschema/ebhc_hot.html - EBHC_PRESSED tmschema/ebhc_pressed.html - EBHP_NORMAL tmschema/ebhp_normal.html - EBHP_HOT tmschema/ebhp_hot.html - EBHP_PRESSED tmschema/ebhp_pressed.html - EBHP_SELECTEDNORMAL tmschema/ebhp_selectednormal.html - EBHP_SELECTEDHOT tmschema/ebhp_selectedhot.html - EBHP_SELECTEDPRESSED tmschema/ebhp_selectedpressed.html - EBM_NORMAL tmschema/ebm_normal.html - EBM_HOT tmschema/ebm_hot.html - EBM_PRESSED tmschema/ebm_pressed.html - EBNGC_NORMAL tmschema/ebngc_normal.html - EBNGC_HOT tmschema/ebngc_hot.html - EBNGC_PRESSED tmschema/ebngc_pressed.html - EBNGE_NORMAL tmschema/ebnge_normal.html - EBNGE_HOT tmschema/ebnge_hot.html - EBNGE_PRESSED tmschema/ebnge_pressed.html - EBSGC_NORMAL tmschema/ebsgc_normal.html - EBSGC_HOT tmschema/ebsgc_hot.html - EBSGC_PRESSED tmschema/ebsgc_pressed.html - EBSGE_NORMAL tmschema/ebsge_normal.html - EBSGE_HOT tmschema/ebsge_hot.html - EBSGE_PRESSED tmschema/ebsge_pressed.html - VSCLASS_FLYOUTSTYLE tmschema/vsclass_flyoutstyle.html - VSCLASS_FLYOUT tmschema/vsclass_flyout.html - FLYOUT_HEADER tmschema/flyout_header.html - FLYOUT_BODY tmschema/flyout_body.html - FLYOUT_LABEL tmschema/flyout_label.html - FLYOUT_LINK tmschema/flyout_link.html - FLYOUT_DIVIDER tmschema/flyout_divider.html - FLYOUT_WINDOW tmschema/flyout_window.html - FLYOUT_LINKAREA tmschema/flyout_linkarea.html - FLYOUT_LINKHEADER tmschema/flyout_linkheader.html - FLS_NORMAL tmschema/fls_normal.html - FLS_SELECTED tmschema/fls_selected.html - FLS_EMPHASIZED tmschema/fls_emphasized.html - FLS_DISABLED tmschema/fls_disabled.html - FLYOUTLINK_NORMAL tmschema/flyoutlink_normal.html - FLYOUTLINK_HOVER tmschema/flyoutlink_hover.html - FBS_NORMAL tmschema/fbs_normal.html - FBS_EMPHASIZED tmschema/fbs_emphasized.html - FLH_NORMAL tmschema/flh_normal.html - FLH_HOVER tmschema/flh_hover.html - VSCLASS_HEADERSTYLE tmschema/vsclass_headerstyle.html - VSCLASS_HEADER tmschema/vsclass_header.html - HP_HEADERITEM tmschema/hp_headeritem.html - HP_HEADERITEMLEFT tmschema/hp_headeritemleft.html - HP_HEADERITEMRIGHT tmschema/hp_headeritemright.html - HP_HEADERSORTARROW tmschema/hp_headersortarrow.html - HP_HEADERDROPDOWN tmschema/hp_headerdropdown.html - HP_HEADERDROPDOWNFILTER tmschema/hp_headerdropdownfilter.html - HP_HEADEROVERFLOW tmschema/hp_headeroverflow.html - HBG_DETAILS tmschema/hbg_details.html - HBG_ICON tmschema/hbg_icon.html - HIS_NORMAL tmschema/his_normal.html - HIS_HOT tmschema/his_hot.html - HIS_PRESSED tmschema/his_pressed.html - HIS_SORTEDNORMAL tmschema/his_sortednormal.html - HIS_SORTEDHOT tmschema/his_sortedhot.html - HIS_SORTEDPRESSED tmschema/his_sortedpressed.html - HIS_ICONNORMAL tmschema/his_iconnormal.html - HIS_ICONHOT tmschema/his_iconhot.html - HIS_ICONPRESSED tmschema/his_iconpressed.html - HIS_ICONSORTEDNORMAL tmschema/his_iconsortednormal.html - HIS_ICONSORTEDHOT tmschema/his_iconsortedhot.html - HIS_ICONSORTEDPRESSED tmschema/his_iconsortedpressed.html - HILS_NORMAL tmschema/hils_normal.html - HILS_HOT tmschema/hils_hot.html - HILS_PRESSED tmschema/hils_pressed.html - HIRS_NORMAL tmschema/hirs_normal.html - HIRS_HOT tmschema/hirs_hot.html - HIRS_PRESSED tmschema/hirs_pressed.html - HSAS_SORTEDUP tmschema/hsas_sortedup.html - HSAS_SORTEDDOWN tmschema/hsas_sorteddown.html - HDDS_NORMAL tmschema/hdds_normal.html - HDDS_SOFTHOT tmschema/hdds_softhot.html - HDDS_HOT tmschema/hdds_hot.html - HDDFS_NORMAL tmschema/hddfs_normal.html - HDDFS_SOFTHOT tmschema/hddfs_softhot.html - HDDFS_HOT tmschema/hddfs_hot.html - HOFS_NORMAL tmschema/hofs_normal.html - HOFS_HOT tmschema/hofs_hot.html - VSCLASS_LISTBOXSTYLE tmschema/vsclass_listboxstyle.html - VSCLASS_LISTBOX tmschema/vsclass_listbox.html - LBCP_BORDER_HSCROLL tmschema/lbcp_border_hscroll.html - LBCP_BORDER_HVSCROLL tmschema/lbcp_border_hvscroll.html - LBCP_BORDER_NOSCROLL tmschema/lbcp_border_noscroll.html - LBCP_BORDER_VSCROLL tmschema/lbcp_border_vscroll.html - LBCP_ITEM tmschema/lbcp_item.html - LBPSH_NORMAL tmschema/lbpsh_normal.html - LBPSH_FOCUSED tmschema/lbpsh_focused.html - LBPSH_HOT tmschema/lbpsh_hot.html - LBPSH_DISABLED tmschema/lbpsh_disabled.html - LBPSHV_NORMAL tmschema/lbpshv_normal.html - LBPSHV_FOCUSED tmschema/lbpshv_focused.html - LBPSHV_HOT tmschema/lbpshv_hot.html - LBPSHV_DISABLED tmschema/lbpshv_disabled.html - LBPSN_NORMAL tmschema/lbpsn_normal.html - LBPSN_FOCUSED tmschema/lbpsn_focused.html - LBPSN_HOT tmschema/lbpsn_hot.html - LBPSN_DISABLED tmschema/lbpsn_disabled.html - LBPSV_NORMAL tmschema/lbpsv_normal.html - LBPSV_FOCUSED tmschema/lbpsv_focused.html - LBPSV_HOT tmschema/lbpsv_hot.html - LBPSV_DISABLED tmschema/lbpsv_disabled.html - LBPSI_HOT tmschema/lbpsi_hot.html - LBPSI_HOTSELECTED tmschema/lbpsi_hotselected.html - LBPSI_SELECTED tmschema/lbpsi_selected.html - LBPSI_SELECTEDNOTFOCUS tmschema/lbpsi_selectednotfocus.html - VSCLASS_LISTVIEWSTYLE tmschema/vsclass_listviewstyle.html - VSCLASS_LISTVIEW tmschema/vsclass_listview.html - LVP_LISTITEM tmschema/lvp_listitem.html - LVP_LISTGROUP tmschema/lvp_listgroup.html - LVP_LISTDETAIL tmschema/lvp_listdetail.html - LVP_LISTSORTEDDETAIL tmschema/lvp_listsorteddetail.html - LVP_EMPTYTEXT tmschema/lvp_emptytext.html - LVP_GROUPHEADER tmschema/lvp_groupheader.html - LVP_GROUPHEADERLINE tmschema/lvp_groupheaderline.html - LVP_EXPANDBUTTON tmschema/lvp_expandbutton.html - LVP_COLLAPSEBUTTON tmschema/lvp_collapsebutton.html - LVP_COLUMNDETAIL tmschema/lvp_columndetail.html - LISS_NORMAL tmschema/liss_normal.html - LISS_HOT tmschema/liss_hot.html - LISS_SELECTED tmschema/liss_selected.html - LISS_DISABLED tmschema/liss_disabled.html - LISS_SELECTEDNOTFOCUS tmschema/liss_selectednotfocus.html - LISS_HOTSELECTED tmschema/liss_hotselected.html - LVGH_OPEN tmschema/lvgh_open.html - LVGH_OPENHOT tmschema/lvgh_openhot.html - LVGH_OPENSELECTED tmschema/lvgh_openselected.html - LVGH_OPENSELECTEDHOT tmschema/lvgh_openselectedhot.html - LVGH_OPENSELECTEDNOTFOCUSED tmschema/lvgh_openselectednotfocused.html - LVGH_OPENSELECTEDNOTFOCUSEDHOT tmschema/lvgh_openselectednotfocusedhot.html - LVGH_OPENMIXEDSELECTION tmschema/lvgh_openmixedselection.html - LVGH_OPENMIXEDSELECTIONHOT tmschema/lvgh_openmixedselectionhot.html - LVGH_CLOSE tmschema/lvgh_close.html - LVGH_CLOSEHOT tmschema/lvgh_closehot.html - LVGH_CLOSESELECTED tmschema/lvgh_closeselected.html - LVGH_CLOSESELECTEDHOT tmschema/lvgh_closeselectedhot.html - LVGH_CLOSESELECTEDNOTFOCUSED tmschema/lvgh_closeselectednotfocused.html - LVGH_CLOSESELECTEDNOTFOCUSEDHOT tmschema/lvgh_closeselectednotfocusedhot.html - LVGH_CLOSEMIXEDSELECTION tmschema/lvgh_closemixedselection.html - LVGH_CLOSEMIXEDSELECTIONHOT tmschema/lvgh_closemixedselectionhot.html - LVGHL_OPEN tmschema/lvghl_open.html - LVGHL_OPENHOT tmschema/lvghl_openhot.html - LVGHL_OPENSELECTED tmschema/lvghl_openselected.html - LVGHL_OPENSELECTEDHOT tmschema/lvghl_openselectedhot.html - LVGHL_OPENSELECTEDNOTFOCUSED tmschema/lvghl_openselectednotfocused.html - LVGHL_OPENSELECTEDNOTFOCUSEDHOT tmschema/lvghl_openselectednotfocusedhot.html - LVGHL_OPENMIXEDSELECTION tmschema/lvghl_openmixedselection.html - LVGHL_OPENMIXEDSELECTIONHOT tmschema/lvghl_openmixedselectionhot.html - LVGHL_CLOSE tmschema/lvghl_close.html - LVGHL_CLOSEHOT tmschema/lvghl_closehot.html - LVGHL_CLOSESELECTED tmschema/lvghl_closeselected.html - LVGHL_CLOSESELECTEDHOT tmschema/lvghl_closeselectedhot.html - LVGHL_CLOSESELECTEDNOTFOCUSED tmschema/lvghl_closeselectednotfocused.html - LVGHL_CLOSESELECTEDNOTFOCUSEDHOT tmschema/lvghl_closeselectednotfocusedhot.html - LVGHL_CLOSEMIXEDSELECTION tmschema/lvghl_closemixedselection.html - LVGHL_CLOSEMIXEDSELECTIONHOT tmschema/lvghl_closemixedselectionhot.html - LVEB_NORMAL tmschema/lveb_normal.html - LVEB_HOVER tmschema/lveb_hover.html - LVEB_PUSHED tmschema/lveb_pushed.html - LVCB_NORMAL tmschema/lvcb_normal.html - LVCB_HOVER tmschema/lvcb_hover.html - LVCB_PUSHED tmschema/lvcb_pushed.html - VSCLASS_MENUSTYLE tmschema/vsclass_menustyle.html - VSCLASS_MENU tmschema/vsclass_menu.html - MENU_MENUITEM_TMSCHEMA tmschema/menu_menuitem_tmschema.html - MENU_MENUDROPDOWN_TMSCHEMA tmschema/menu_menudropdown_tmschema.html - MENU_MENUBARITEM_TMSCHEMA tmschema/menu_menubaritem_tmschema.html - MENU_MENUBARDROPDOWN_TMSCHEMA tmschema/menu_menubardropdown_tmschema.html - MENU_CHEVRON_TMSCHEMA tmschema/menu_chevron_tmschema.html - MENU_SEPARATOR_TMSCHEMA tmschema/menu_separator_tmschema.html - MENU_BARBACKGROUND tmschema/menu_barbackground.html - MENU_BARITEM tmschema/menu_baritem.html - MENU_POPUPBACKGROUND tmschema/menu_popupbackground.html - MENU_POPUPBORDERS tmschema/menu_popupborders.html - MENU_POPUPCHECK tmschema/menu_popupcheck.html - MENU_POPUPCHECKBACKGROUND tmschema/menu_popupcheckbackground.html - MENU_POPUPGUTTER tmschema/menu_popupgutter.html - MENU_POPUPITEM tmschema/menu_popupitem.html - MENU_POPUPSEPARATOR tmschema/menu_popupseparator.html - MENU_POPUPSUBMENU tmschema/menu_popupsubmenu.html - MENU_SYSTEMCLOSE tmschema/menu_systemclose.html - MENU_SYSTEMMAXIMIZE tmschema/menu_systemmaximize.html - MENU_SYSTEMMINIMIZE tmschema/menu_systemminimize.html - MENU_SYSTEMRESTORE tmschema/menu_systemrestore.html - MB_ACTIVE tmschema/mb_active.html - MB_INACTIVE tmschema/mb_inactive.html - MBI_NORMAL tmschema/mbi_normal.html - MBI_HOT tmschema/mbi_hot.html - MBI_PUSHED tmschema/mbi_pushed.html - MBI_DISABLED tmschema/mbi_disabled.html - MBI_DISABLEDHOT tmschema/mbi_disabledhot.html - MBI_DISABLEDPUSHED tmschema/mbi_disabledpushed.html - MC_CHECKMARKNORMAL tmschema/mc_checkmarknormal.html - MC_CHECKMARKDISABLED tmschema/mc_checkmarkdisabled.html - MC_BULLETNORMAL tmschema/mc_bulletnormal.html - MC_BULLETDISABLED tmschema/mc_bulletdisabled.html - MCB_DISABLED tmschema/mcb_disabled.html - MCB_NORMAL tmschema/mcb_normal.html - MCB_BITMAP tmschema/mcb_bitmap.html - MPI_NORMAL tmschema/mpi_normal.html - MPI_HOT tmschema/mpi_hot.html - MPI_DISABLED tmschema/mpi_disabled.html - MPI_DISABLEDHOT tmschema/mpi_disabledhot.html - MSM_NORMAL tmschema/msm_normal.html - MSM_DISABLED tmschema/msm_disabled.html - MSYSC_NORMAL tmschema/msysc_normal.html - MSYSC_DISABLED tmschema/msysc_disabled.html - MSYSMX_NORMAL tmschema/msysmx_normal.html - MSYSMX_DISABLED tmschema/msysmx_disabled.html - MSYSMN_NORMAL tmschema/msysmn_normal.html - MSYSMN_DISABLED tmschema/msysmn_disabled.html - MSYSR_NORMAL tmschema/msysr_normal.html - MSYSR_DISABLED tmschema/msysr_disabled.html - VSCLASS_NAVIGATION tmschema/vsclass_navigation.html - NAV_BACKBUTTON tmschema/nav_backbutton.html - NAV_FORWARDBUTTON tmschema/nav_forwardbutton.html - NAV_MENUBUTTON tmschema/nav_menubutton.html - NAV_BB_NORMAL tmschema/nav_bb_normal.html - NAV_BB_HOT tmschema/nav_bb_hot.html - NAV_BB_PRESSED tmschema/nav_bb_pressed.html - NAV_BB_DISABLED tmschema/nav_bb_disabled.html - NAV_FB_NORMAL tmschema/nav_fb_normal.html - NAV_FB_HOT tmschema/nav_fb_hot.html - NAV_FB_PRESSED tmschema/nav_fb_pressed.html - NAV_FB_DISABLED tmschema/nav_fb_disabled.html - NAV_MB_NORMAL tmschema/nav_mb_normal.html - NAV_MB_HOT tmschema/nav_mb_hot.html - NAV_MB_PRESSED tmschema/nav_mb_pressed.html - NAV_MB_DISABLED tmschema/nav_mb_disabled.html - VSCLASS_PROGRESSSTYLE tmschema/vsclass_progressstyle.html - VSCLASS_PROGRESS tmschema/vsclass_progress.html - PP_BAR tmschema/pp_bar.html - PP_BARVERT tmschema/pp_barvert.html - PP_CHUNK tmschema/pp_chunk.html - PP_CHUNKVERT tmschema/pp_chunkvert.html - PP_FILL tmschema/pp_fill.html - PP_FILLVERT tmschema/pp_fillvert.html - PP_PULSEOVERLAY tmschema/pp_pulseoverlay.html - PP_MOVEOVERLAY tmschema/pp_moveoverlay.html - PP_PULSEOVERLAYVERT tmschema/pp_pulseoverlayvert.html - PP_MOVEOVERLAYVERT tmschema/pp_moveoverlayvert.html - PP_TRANSPARENTBAR tmschema/pp_transparentbar.html - PP_TRANSPARENTBARVERT tmschema/pp_transparentbarvert.html - PBBS_NORMAL tmschema/pbbs_normal.html - PBBS_PARTIAL tmschema/pbbs_partial.html - PBBVS_NORMAL tmschema/pbbvs_normal.html - PBBVS_PARTIAL tmschema/pbbvs_partial.html - PBFS_NORMAL tmschema/pbfs_normal.html - PBFS_ERROR tmschema/pbfs_error.html - PBFS_PAUSED tmschema/pbfs_paused.html - PBFS_PARTIAL tmschema/pbfs_partial.html - PBFVS_NORMAL tmschema/pbfvs_normal.html - PBFVS_ERROR tmschema/pbfvs_error.html - PBFVS_PAUSED tmschema/pbfvs_paused.html - PBFVS_PARTIAL tmschema/pbfvs_partial.html - VSCLASS_REBARSTYLE tmschema/vsclass_rebarstyle.html - VSCLASS_REBAR tmschema/vsclass_rebar.html - RP_GRIPPER tmschema/rp_gripper.html - RP_GRIPPERVERT tmschema/rp_grippervert.html - RP_BAND tmschema/rp_band.html - RP_CHEVRON tmschema/rp_chevron.html - RP_CHEVRONVERT tmschema/rp_chevronvert.html - RP_BACKGROUND tmschema/rp_background.html - RP_SPLITTER tmschema/rp_splitter.html - RP_SPLITTERVERT tmschema/rp_splittervert.html - CHEVS_NORMAL tmschema/chevs_normal.html - CHEVS_HOT tmschema/chevs_hot.html - CHEVS_PRESSED tmschema/chevs_pressed.html - CHEVSV_NORMAL tmschema/chevsv_normal.html - CHEVSV_HOT tmschema/chevsv_hot.html - CHEVSV_PRESSED tmschema/chevsv_pressed.html - SPLITS_NORMAL tmschema/splits_normal.html - SPLITS_HOT tmschema/splits_hot.html - SPLITS_PRESSED tmschema/splits_pressed.html - SPLITSV_NORMAL tmschema/splitsv_normal.html - SPLITSV_HOT tmschema/splitsv_hot.html - SPLITSV_PRESSED tmschema/splitsv_pressed.html - VSCLASS_SCROLLBARSTYLE tmschema/vsclass_scrollbarstyle.html - VSCLASS_SCROLLBAR tmschema/vsclass_scrollbar.html - SBP_ARROWBTN tmschema/sbp_arrowbtn.html - SBP_THUMBBTNHORZ tmschema/sbp_thumbbtnhorz.html - SBP_THUMBBTNVERT tmschema/sbp_thumbbtnvert.html - SBP_LOWERTRACKHORZ tmschema/sbp_lowertrackhorz.html - SBP_UPPERTRACKHORZ tmschema/sbp_uppertrackhorz.html - SBP_LOWERTRACKVERT tmschema/sbp_lowertrackvert.html - SBP_UPPERTRACKVERT tmschema/sbp_uppertrackvert.html - SBP_GRIPPERHORZ tmschema/sbp_gripperhorz.html - SBP_GRIPPERVERT tmschema/sbp_grippervert.html - SBP_SIZEBOX tmschema/sbp_sizebox.html - ABS_UPNORMAL tmschema/abs_upnormal.html - ABS_UPHOT tmschema/abs_uphot.html - ABS_UPPRESSED tmschema/abs_uppressed.html - ABS_UPDISABLED tmschema/abs_updisabled.html - ABS_DOWNNORMAL tmschema/abs_downnormal.html - ABS_DOWNHOT tmschema/abs_downhot.html - ABS_DOWNPRESSED tmschema/abs_downpressed.html - ABS_DOWNDISABLED tmschema/abs_downdisabled.html - ABS_LEFTNORMAL tmschema/abs_leftnormal.html - ABS_LEFTHOT tmschema/abs_lefthot.html - ABS_LEFTPRESSED tmschema/abs_leftpressed.html - ABS_LEFTDISABLED tmschema/abs_leftdisabled.html - ABS_RIGHTNORMAL tmschema/abs_rightnormal.html - ABS_RIGHTHOT tmschema/abs_righthot.html - ABS_RIGHTPRESSED tmschema/abs_rightpressed.html - ABS_RIGHTDISABLED tmschema/abs_rightdisabled.html - ABS_UPHOVER tmschema/abs_uphover.html - ABS_DOWNHOVER tmschema/abs_downhover.html - ABS_LEFTHOVER tmschema/abs_lefthover.html - ABS_RIGHTHOVER tmschema/abs_righthover.html - SCRBS_NORMAL tmschema/scrbs_normal.html - SCRBS_HOT tmschema/scrbs_hot.html - SCRBS_PRESSED tmschema/scrbs_pressed.html - SCRBS_DISABLED tmschema/scrbs_disabled.html - SCRBS_HOVER tmschema/scrbs_hover.html - SZB_RIGHTALIGN tmschema/szb_rightalign.html - SZB_LEFTALIGN tmschema/szb_leftalign.html - SZB_TOPRIGHTALIGN tmschema/szb_toprightalign.html - SZB_TOPLEFTALIGN tmschema/szb_topleftalign.html - SZB_HALFBOTTOMRIGHTALIGN tmschema/szb_halfbottomrightalign.html - SZB_HALFBOTTOMLEFTALIGN tmschema/szb_halfbottomleftalign.html - SZB_HALFTOPRIGHTALIGN tmschema/szb_halftoprightalign.html - SZB_HALFTOPLEFTALIGN tmschema/szb_halftopleftalign.html - VSCLASS_SPINSTYLE tmschema/vsclass_spinstyle.html - VSCLASS_SPIN tmschema/vsclass_spin.html - SPNP_UP tmschema/spnp_up.html - SPNP_DOWN tmschema/spnp_down.html - SPNP_UPHORZ tmschema/spnp_uphorz.html - SPNP_DOWNHORZ tmschema/spnp_downhorz.html - UPS_NORMAL tmschema/ups_normal.html - UPS_HOT tmschema/ups_hot.html - UPS_PRESSED tmschema/ups_pressed.html - UPS_DISABLED tmschema/ups_disabled.html - DNS_NORMAL tmschema/dns_normal.html - DNS_HOT tmschema/dns_hot.html - DNS_PRESSED tmschema/dns_pressed.html - DNS_DISABLED tmschema/dns_disabled.html - UPHZS_NORMAL tmschema/uphzs_normal.html - UPHZS_HOT tmschema/uphzs_hot.html - UPHZS_PRESSED tmschema/uphzs_pressed.html - UPHZS_DISABLED tmschema/uphzs_disabled.html - DNHZS_NORMAL tmschema/dnhzs_normal.html - DNHZS_HOT tmschema/dnhzs_hot.html - DNHZS_PRESSED tmschema/dnhzs_pressed.html - DNHZS_DISABLED tmschema/dnhzs_disabled.html - VSCLASS_STATUSSTYLE tmschema/vsclass_statusstyle.html - VSCLASS_STATUS tmschema/vsclass_status.html - SP_PANE tmschema/sp_pane.html - SP_GRIPPERPANE tmschema/sp_gripperpane.html - SP_GRIPPER tmschema/sp_gripper.html - VSCLASS_TABSTYLE tmschema/vsclass_tabstyle.html - VSCLASS_TAB tmschema/vsclass_tab.html - TABP_TABITEM tmschema/tabp_tabitem.html - TABP_TABITEMLEFTEDGE tmschema/tabp_tabitemleftedge.html - TABP_TABITEMRIGHTEDGE tmschema/tabp_tabitemrightedge.html - TABP_TABITEMBOTHEDGE tmschema/tabp_tabitembothedge.html - TABP_TOPTABITEM tmschema/tabp_toptabitem.html - TABP_TOPTABITEMLEFTEDGE tmschema/tabp_toptabitemleftedge.html - TABP_TOPTABITEMRIGHTEDGE tmschema/tabp_toptabitemrightedge.html - TABP_TOPTABITEMBOTHEDGE tmschema/tabp_toptabitembothedge.html - TABP_PANE tmschema/tabp_pane.html - TABP_BODY tmschema/tabp_body.html - TABP_AEROWIZARDBODY tmschema/tabp_aerowizardbody.html - TIS_NORMAL tmschema/tis_normal.html - TIS_HOT tmschema/tis_hot.html - TIS_SELECTED tmschema/tis_selected.html - TIS_DISABLED tmschema/tis_disabled.html - TIS_FOCUSED tmschema/tis_focused.html - TILES_NORMAL tmschema/tiles_normal.html - TILES_HOT tmschema/tiles_hot.html - TILES_SELECTED tmschema/tiles_selected.html - TILES_DISABLED tmschema/tiles_disabled.html - TILES_FOCUSED tmschema/tiles_focused.html - TIRES_NORMAL tmschema/tires_normal.html - TIRES_HOT tmschema/tires_hot.html - TIRES_SELECTED tmschema/tires_selected.html - TIRES_DISABLED tmschema/tires_disabled.html - TIRES_FOCUSED tmschema/tires_focused.html - TIBES_NORMAL tmschema/tibes_normal.html - TIBES_HOT tmschema/tibes_hot.html - TIBES_SELECTED tmschema/tibes_selected.html - TIBES_DISABLED tmschema/tibes_disabled.html - TIBES_FOCUSED tmschema/tibes_focused.html - TTIS_NORMAL tmschema/ttis_normal.html - TTIS_HOT tmschema/ttis_hot.html - TTIS_SELECTED tmschema/ttis_selected.html - TTIS_DISABLED tmschema/ttis_disabled.html - TTIS_FOCUSED tmschema/ttis_focused.html - TTILES_NORMAL tmschema/ttiles_normal.html - TTILES_HOT tmschema/ttiles_hot.html - TTILES_SELECTED tmschema/ttiles_selected.html - TTILES_DISABLED tmschema/ttiles_disabled.html - TTILES_FOCUSED tmschema/ttiles_focused.html - TTIRES_NORMAL tmschema/ttires_normal.html - TTIRES_HOT tmschema/ttires_hot.html - TTIRES_SELECTED tmschema/ttires_selected.html - TTIRES_DISABLED tmschema/ttires_disabled.html - TTIRES_FOCUSED tmschema/ttires_focused.html - TTIBES_NORMAL tmschema/ttibes_normal.html - TTIBES_HOT tmschema/ttibes_hot.html - TTIBES_SELECTED tmschema/ttibes_selected.html - TTIBES_DISABLED tmschema/ttibes_disabled.html - TTIBES_FOCUSED tmschema/ttibes_focused.html - VSCLASS_TASKDIALOGSTYLE tmschema/vsclass_taskdialogstyle.html - VSCLASS_TASKDIALOG tmschema/vsclass_taskdialog.html - TDLG_PRIMARYPANEL tmschema/tdlg_primarypanel.html - TDLG_MAININSTRUCTIONPANE tmschema/tdlg_maininstructionpane.html - TDLG_MAINICON tmschema/tdlg_mainicon.html - TDLG_CONTENTPANE tmschema/tdlg_contentpane.html - TDLG_CONTENTICON tmschema/tdlg_contenticon.html - TDLG_EXPANDEDCONTENT tmschema/tdlg_expandedcontent.html - TDLG_COMMANDLINKPANE tmschema/tdlg_commandlinkpane.html - TDLG_SECONDARYPANEL tmschema/tdlg_secondarypanel.html - TDLG_CONTROLPANE tmschema/tdlg_controlpane.html - TDLG_BUTTONSECTION tmschema/tdlg_buttonsection.html - TDLG_BUTTONWRAPPER tmschema/tdlg_buttonwrapper.html - TDLG_EXPANDOTEXT tmschema/tdlg_expandotext.html - TDLG_EXPANDOBUTTON tmschema/tdlg_expandobutton.html - TDLG_VERIFICATIONTEXT tmschema/tdlg_verificationtext.html - TDLG_FOOTNOTEPANE tmschema/tdlg_footnotepane.html - TDLG_FOOTNOTEAREA tmschema/tdlg_footnotearea.html - TDLG_FOOTNOTESEPARATOR tmschema/tdlg_footnoteseparator.html - TDLG_EXPANDEDFOOTERAREA tmschema/tdlg_expandedfooterarea.html - TDLG_PROGRESSBAR tmschema/tdlg_progressbar.html - TDLG_IMAGEALIGNMENT tmschema/tdlg_imagealignment.html - TDLG_RADIOBUTTONPANE tmschema/tdlg_radiobuttonpane.html - TDLGCPS_STANDALONE tmschema/tdlgcps_standalone.html - TDLGEBS_NORMAL tmschema/tdlgebs_normal.html - TDLGEBS_HOVER tmschema/tdlgebs_hover.html - TDLGEBS_PRESSED tmschema/tdlgebs_pressed.html - TDLGEBS_EXPANDEDNORMAL tmschema/tdlgebs_expandednormal.html - TDLGEBS_EXPANDEDHOVER tmschema/tdlgebs_expandedhover.html - TDLGEBS_EXPANDEDPRESSED tmschema/tdlgebs_expandedpressed.html - VSCLASS_TEXTSTYLE tmschema/vsclass_textstyle.html - TEXT_MAININSTRUCTION tmschema/text_maininstruction.html - TEXT_INSTRUCTION tmschema/text_instruction.html - TEXT_BODYTITLE tmschema/text_bodytitle.html - TEXT_BODYTEXT tmschema/text_bodytext.html - TEXT_SECONDARYTEXT tmschema/text_secondarytext.html - TEXT_HYPERLINKTEXT tmschema/text_hyperlinktext.html - TEXT_EXPANDED tmschema/text_expanded.html - TEXT_LABEL tmschema/text_label.html - TEXT_CONTROLLABEL tmschema/text_controllabel.html - TS_HYPERLINK_NORMAL tmschema/ts_hyperlink_normal.html - TS_HYPERLINK_HOT tmschema/ts_hyperlink_hot.html - TS_HYPERLINK_PRESSED tmschema/ts_hyperlink_pressed.html - TS_HYPERLINK_DISABLED tmschema/ts_hyperlink_disabled.html - TS_CONTROLLABEL_NORMAL tmschema/ts_controllabel_normal.html - TS_CONTROLLABEL_DISABLED tmschema/ts_controllabel_disabled.html - VSCLASS_TOOLBARSTYLE tmschema/vsclass_toolbarstyle.html - VSCLASS_TOOLBAR tmschema/vsclass_toolbar.html - TP_BUTTON tmschema/tp_button.html - TP_DROPDOWNBUTTON tmschema/tp_dropdownbutton.html - TP_SPLITBUTTON tmschema/tp_splitbutton.html - TP_SPLITBUTTONDROPDOWN tmschema/tp_splitbuttondropdown.html - TP_SEPARATOR tmschema/tp_separator.html - TP_SEPARATORVERT tmschema/tp_separatorvert.html - TP_DROPDOWNBUTTONGLYPH tmschema/tp_dropdownbuttonglyph.html - TS_NORMAL tmschema/ts_normal.html - TS_HOT tmschema/ts_hot.html - TS_PRESSED tmschema/ts_pressed.html - TS_DISABLED tmschema/ts_disabled.html - TS_CHECKED tmschema/ts_checked.html - TS_HOTCHECKED tmschema/ts_hotchecked.html - TS_NEARHOT tmschema/ts_nearhot.html - TS_OTHERSIDEHOT tmschema/ts_othersidehot.html - VSCLASS_TOOLTIPSTYLE tmschema/vsclass_tooltipstyle.html - VSCLASS_TOOLTIP tmschema/vsclass_tooltip.html - TTP_STANDARD tmschema/ttp_standard.html - TTP_STANDARDTITLE tmschema/ttp_standardtitle.html - TTP_BALLOON tmschema/ttp_balloon.html - TTP_BALLOONTITLE tmschema/ttp_balloontitle.html - TTP_CLOSE tmschema/ttp_close.html - TTP_BALLOONSTEM tmschema/ttp_balloonstem.html - TTP_WRENCH tmschema/ttp_wrench.html - TTCS_NORMAL tmschema/ttcs_normal.html - TTCS_HOT tmschema/ttcs_hot.html - TTCS_PRESSED tmschema/ttcs_pressed.html - TTSS_NORMAL tmschema/ttss_normal.html - TTSS_LINK tmschema/ttss_link.html - TTBS_NORMAL tmschema/ttbs_normal.html - TTBS_LINK tmschema/ttbs_link.html - TTBSS_POINTINGUPLEFTWALL tmschema/ttbss_pointingupleftwall.html - TTBSS_POINTINGUPCENTERED tmschema/ttbss_pointingupcentered.html - TTBSS_POINTINGUPRIGHTWALL tmschema/ttbss_pointinguprightwall.html - TTBSS_POINTINGDOWNRIGHTWALL tmschema/ttbss_pointingdownrightwall.html - TTBSS_POINTINGDOWNCENTERED tmschema/ttbss_pointingdowncentered.html - TTBSS_POINTINGDOWNLEFTWALL tmschema/ttbss_pointingdownleftwall.html - TTWS_NORMAL tmschema/ttws_normal.html - TTWS_HOT tmschema/ttws_hot.html - TTWS_PRESSED tmschema/ttws_pressed.html - VSCLASS_TRACKBARSTYLE tmschema/vsclass_trackbarstyle.html - VSCLASS_TRACKBAR tmschema/vsclass_trackbar.html - TKP_TRACK tmschema/tkp_track.html - TKP_TRACKVERT tmschema/tkp_trackvert.html - TKP_THUMB tmschema/tkp_thumb.html - TKP_THUMBBOTTOM tmschema/tkp_thumbbottom.html - TKP_THUMBTOP tmschema/tkp_thumbtop.html - TKP_THUMBVERT tmschema/tkp_thumbvert.html - TKP_THUMBLEFT tmschema/tkp_thumbleft.html - TKP_THUMBRIGHT tmschema/tkp_thumbright.html - TKP_TICS tmschema/tkp_tics.html - TKP_TICSVERT tmschema/tkp_ticsvert.html - TKS_NORMAL tmschema/tks_normal.html - TRS_NORMAL tmschema/trs_normal.html - TRVS_NORMAL tmschema/trvs_normal.html - TUS_NORMAL tmschema/tus_normal.html - TUS_HOT tmschema/tus_hot.html - TUS_PRESSED tmschema/tus_pressed.html - TUS_FOCUSED tmschema/tus_focused.html - TUS_DISABLED tmschema/tus_disabled.html - TUBS_NORMAL tmschema/tubs_normal.html - TUBS_HOT tmschema/tubs_hot.html - TUBS_PRESSED tmschema/tubs_pressed.html - TUBS_FOCUSED tmschema/tubs_focused.html - TUBS_DISABLED tmschema/tubs_disabled.html - TUTS_NORMAL tmschema/tuts_normal.html - TUTS_HOT tmschema/tuts_hot.html - TUTS_PRESSED tmschema/tuts_pressed.html - TUTS_FOCUSED tmschema/tuts_focused.html - TUTS_DISABLED tmschema/tuts_disabled.html - TUVS_NORMAL tmschema/tuvs_normal.html - TUVS_HOT tmschema/tuvs_hot.html - TUVS_PRESSED tmschema/tuvs_pressed.html - TUVS_FOCUSED tmschema/tuvs_focused.html - TUVS_DISABLED tmschema/tuvs_disabled.html - TUVLS_NORMAL tmschema/tuvls_normal.html - TUVLS_HOT tmschema/tuvls_hot.html - TUVLS_PRESSED tmschema/tuvls_pressed.html - TUVLS_FOCUSED tmschema/tuvls_focused.html - TUVLS_DISABLED tmschema/tuvls_disabled.html - TUVRS_NORMAL tmschema/tuvrs_normal.html - TUVRS_HOT tmschema/tuvrs_hot.html - TUVRS_PRESSED tmschema/tuvrs_pressed.html - TUVRS_FOCUSED tmschema/tuvrs_focused.html - TUVRS_DISABLED tmschema/tuvrs_disabled.html - TSS_NORMAL tmschema/tss_normal.html - TSVS_NORMAL tmschema/tsvs_normal.html - VSCLASS_TREEVIEWSTYLE tmschema/vsclass_treeviewstyle.html - VSCLASS_TREEVIEW tmschema/vsclass_treeview.html - TVP_TREEITEM tmschema/tvp_treeitem.html - TVP_GLYPH tmschema/tvp_glyph.html - TVP_BRANCH tmschema/tvp_branch.html - TVP_HOTGLYPH tmschema/tvp_hotglyph.html - TREIS_NORMAL tmschema/treis_normal.html - TREIS_HOT tmschema/treis_hot.html - TREIS_SELECTED tmschema/treis_selected.html - TREIS_DISABLED tmschema/treis_disabled.html - TREIS_SELECTEDNOTFOCUS tmschema/treis_selectednotfocus.html - TREIS_HOTSELECTED tmschema/treis_hotselected.html - GLPS_CLOSED tmschema/glps_closed.html - GLPS_OPENED tmschema/glps_opened.html - HGLPS_CLOSED tmschema/hglps_closed.html - HGLPS_OPENED tmschema/hglps_opened.html - VSCLASS_WINDOWSTYLE tmschema/vsclass_windowstyle.html - VSCLASS_WINDOW tmschema/vsclass_window.html - WP_CAPTION tmschema/wp_caption.html - WP_SMALLCAPTION tmschema/wp_smallcaption.html - WP_MINCAPTION tmschema/wp_mincaption.html - WP_SMALLMINCAPTION tmschema/wp_smallmincaption.html - WP_MAXCAPTION tmschema/wp_maxcaption.html - WP_SMALLMAXCAPTION tmschema/wp_smallmaxcaption.html - WP_FRAMELEFT tmschema/wp_frameleft.html - WP_FRAMERIGHT tmschema/wp_frameright.html - WP_FRAMEBOTTOM tmschema/wp_framebottom.html - WP_SMALLFRAMELEFT tmschema/wp_smallframeleft.html - WP_SMALLFRAMERIGHT tmschema/wp_smallframeright.html - WP_SMALLFRAMEBOTTOM tmschema/wp_smallframebottom.html - WP_SYSBUTTON tmschema/wp_sysbutton.html - WP_MDISYSBUTTON tmschema/wp_mdisysbutton.html - WP_MINBUTTON tmschema/wp_minbutton.html - WP_MDIMINBUTTON tmschema/wp_mdiminbutton.html - WP_MAXBUTTON tmschema/wp_maxbutton.html - WP_CLOSEBUTTON tmschema/wp_closebutton.html - WP_SMALLCLOSEBUTTON tmschema/wp_smallclosebutton.html - WP_MDICLOSEBUTTON tmschema/wp_mdiclosebutton.html - WP_RESTOREBUTTON tmschema/wp_restorebutton.html - WP_MDIRESTOREBUTTON tmschema/wp_mdirestorebutton.html - WP_HELPBUTTON tmschema/wp_helpbutton.html - WP_MDIHELPBUTTON tmschema/wp_mdihelpbutton.html - WP_HORZSCROLL tmschema/wp_horzscroll.html - WP_HORZTHUMB tmschema/wp_horzthumb.html - WP_VERTSCROLL tmschema/wp_vertscroll.html - WP_VERTTHUMB tmschema/wp_vertthumb.html - WP_DIALOG tmschema/wp_dialog.html - WP_CAPTIONSIZINGTEMPLATE tmschema/wp_captionsizingtemplate.html - WP_SMALLCAPTIONSIZINGTEMPLATE tmschema/wp_smallcaptionsizingtemplate.html - WP_FRAMELEFTSIZINGTEMPLATE tmschema/wp_frameleftsizingtemplate.html - WP_SMALLFRAMELEFTSIZINGTEMPLATE tmschema/wp_smallframeleftsizingtemplate.html - WP_FRAMERIGHTSIZINGTEMPLATE tmschema/wp_framerightsizingtemplate.html - WP_SMALLFRAMERIGHTSIZINGTEMPLATE tmschema/wp_smallframerightsizingtemplate.html - WP_FRAMEBOTTOMSIZINGTEMPLATE tmschema/wp_framebottomsizingtemplate.html - WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE tmschema/wp_smallframebottomsizingtemplate.html - WP_FRAME tmschema/wp_frame.html - FS_ACTIVE tmschema/fs_active.html - FS_INACTIVE tmschema/fs_inactive.html - CS_ACTIVE tmschema/cs_active.html - CS_INACTIVE tmschema/cs_inactive.html - CS_DISABLED tmschema/cs_disabled.html - MXCS_ACTIVE tmschema/mxcs_active.html - MXCS_INACTIVE tmschema/mxcs_inactive.html - MXCS_DISABLED tmschema/mxcs_disabled.html - MNCS_ACTIVE tmschema/mncs_active.html - MNCS_INACTIVE tmschema/mncs_inactive.html - MNCS_DISABLED tmschema/mncs_disabled.html - HSS_NORMAL tmschema/hss_normal.html - HSS_HOT tmschema/hss_hot.html - HSS_PUSHED tmschema/hss_pushed.html - HSS_DISABLED tmschema/hss_disabled.html - HTS_NORMAL tmschema/hts_normal.html - HTS_HOT tmschema/hts_hot.html - HTS_PUSHED tmschema/hts_pushed.html - HTS_DISABLED tmschema/hts_disabled.html - VSS_NORMAL tmschema/vss_normal.html - VSS_HOT tmschema/vss_hot.html - VSS_PUSHED tmschema/vss_pushed.html - VSS_DISABLED tmschema/vss_disabled.html - VTS_NORMAL tmschema/vts_normal.html - VTS_HOT tmschema/vts_hot.html - VTS_PUSHED tmschema/vts_pushed.html - VTS_DISABLED tmschema/vts_disabled.html - SBS_NORMAL tmschema/sbs_normal.html - SBS_HOT tmschema/sbs_hot.html - SBS_PUSHED tmschema/sbs_pushed.html - SBS_DISABLED tmschema/sbs_disabled.html - MINBS_NORMAL tmschema/minbs_normal.html - MINBS_HOT tmschema/minbs_hot.html - MINBS_PUSHED tmschema/minbs_pushed.html - MINBS_DISABLED tmschema/minbs_disabled.html - MAXBS_NORMAL tmschema/maxbs_normal.html - MAXBS_HOT tmschema/maxbs_hot.html - MAXBS_PUSHED tmschema/maxbs_pushed.html - MAXBS_DISABLED tmschema/maxbs_disabled.html - RBS_NORMAL tmschema/rbs_normal.html - RBS_HOT tmschema/rbs_hot.html - RBS_PUSHED tmschema/rbs_pushed.html - RBS_DISABLED tmschema/rbs_disabled.html - HBS_NORMAL tmschema/hbs_normal.html - HBS_HOT tmschema/hbs_hot.html - HBS_PUSHED tmschema/hbs_pushed.html - HBS_DISABLED tmschema/hbs_disabled.html - CBS_NORMAL tmschema/cbs_normal.html - CBS_HOT tmschema/cbs_hot.html - CBS_PUSHED tmschema/cbs_pushed.html - CBS_DISABLED tmschema/cbs_disabled.html - BT_IMAGEFILE tmschema/bt_imagefile.html - BT_BORDERFILL tmschema/bt_borderfill.html - BT_NONE tmschema/bt_none.html - IL_VERTICAL tmschema/il_vertical.html - IL_HORIZONTAL tmschema/il_horizontal.html - BT_RECT tmschema/bt_rect.html - BT_ROUNDRECT tmschema/bt_roundrect.html - BT_ELLIPSE tmschema/bt_ellipse.html - FT_SOLID tmschema/ft_solid.html - FT_VERTGRADIENT tmschema/ft_vertgradient.html - FT_HORZGRADIENT tmschema/ft_horzgradient.html - FT_RADIALGRADIENT tmschema/ft_radialgradient.html - FT_TILEIMAGE tmschema/ft_tileimage.html - ST_TRUESIZE tmschema/st_truesize.html - ST_STRETCH tmschema/st_stretch.html - ST_TILE tmschema/st_tile.html - HA_LEFT tmschema/ha_left.html - HA_CENTER tmschema/ha_center.html - HA_RIGHT tmschema/ha_right.html - CA_LEFT tmschema/ca_left.html - CA_CENTER tmschema/ca_center.html - CA_RIGHT tmschema/ca_right.html - VA_TOP tmschema/va_top.html - VA_CENTER tmschema/va_center.html - VA_BOTTOM tmschema/va_bottom.html - OT_TOPLEFT tmschema/ot_topleft.html - OT_TOPRIGHT tmschema/ot_topright.html - OT_TOPMIDDLE tmschema/ot_topmiddle.html - OT_BOTTOMLEFT tmschema/ot_bottomleft.html - OT_BOTTOMRIGHT tmschema/ot_bottomright.html - OT_BOTTOMMIDDLE tmschema/ot_bottommiddle.html - OT_MIDDLELEFT tmschema/ot_middleleft.html - OT_MIDDLERIGHT tmschema/ot_middleright.html - OT_LEFTOFCAPTION tmschema/ot_leftofcaption.html - OT_RIGHTOFCAPTION tmschema/ot_rightofcaption.html - OT_LEFTOFLASTBUTTON tmschema/ot_leftoflastbutton.html - OT_RIGHTOFLASTBUTTON tmschema/ot_rightoflastbutton.html - OT_ABOVELASTBUTTON tmschema/ot_abovelastbutton.html - OT_BELOWLASTBUTTON tmschema/ot_belowlastbutton.html - ICE_NONE tmschema/ice_none.html - ICE_GLOW tmschema/ice_glow.html - ICE_SHADOW tmschema/ice_shadow.html - ICE_PULSE tmschema/ice_pulse.html - ICE_ALPHA tmschema/ice_alpha.html - TST_NONE tmschema/tst_none.html - TST_SINGLE tmschema/tst_single.html - TST_CONTINUOUS tmschema/tst_continuous.html - GT_NONE tmschema/gt_none.html - GT_IMAGEGLYPH tmschema/gt_imageglyph.html - GT_FONTGLYPH tmschema/gt_fontglyph.html - IST_NONE tmschema/ist_none.html - IST_SIZE tmschema/ist_size.html - IST_DPI tmschema/ist_dpi.html - TSST_NONE tmschema/tsst_none.html - TSST_SIZE tmschema/tsst_size.html - TSST_DPI tmschema/tsst_dpi.html - GFST_NONE tmschema/gfst_none.html - GFST_SIZE tmschema/gfst_size.html - GFST_DPI tmschema/gfst_dpi.html - TMT_RESERVEDLOW tmschema/tmt_reservedlow.html - TMT_RESERVEDHIGH tmschema/tmt_reservedhigh.html - TMT_DIBDATA tmschema/tmt_dibdata.html - TMT_GLYPHDIBDATA tmschema/tmt_glyphdibdata.html - TMT_ENUM tmschema/tmt_enum.html - TMT_STRING tmschema/tmt_string.html - TMT_INT tmschema/tmt_int.html - TMT_BOOL tmschema/tmt_bool.html - TMT_COLOR tmschema/tmt_color.html - TMT_MARGINS tmschema/tmt_margins.html - TMT_FILENAME tmschema/tmt_filename.html - TMT_SIZE tmschema/tmt_size.html - TMT_POSITION tmschema/tmt_position.html - TMT_RECT tmschema/tmt_rect.html - TMT_FONT tmschema/tmt_font.html - TMT_INTLIST tmschema/tmt_intlist.html - TMT_HBITMAP tmschema/tmt_hbitmap.html - TMT_DISKSTREAM tmschema/tmt_diskstream.html - TMT_STREAM tmschema/tmt_stream.html - TMT_BITMAPREF tmschema/tmt_bitmapref.html - TMT_COLORSCHEMES tmschema/tmt_colorschemes.html - TMT_SIZES tmschema/tmt_sizes.html - TMT_CHARSET tmschema/tmt_charset.html - TMT_NAME tmschema/tmt_name.html - TMT_DISPLAYNAME tmschema/tmt_displayname.html - TMT_TOOLTIP tmschema/tmt_tooltip.html - TMT_COMPANY tmschema/tmt_company.html - TMT_AUTHOR tmschema/tmt_author.html - TMT_COPYRIGHT tmschema/tmt_copyright.html - TMT_URL tmschema/tmt_url.html - TMT_VERSION tmschema/tmt_version.html - TMT_DESCRIPTION tmschema/tmt_description.html - TMT_FIRST_RCSTRING_NAME tmschema/tmt_first_rcstring_name.html - TMT_LAST_RCSTRING_NAME tmschema/tmt_last_rcstring_name.html - TMT_CAPTIONFONT tmschema/tmt_captionfont.html - TMT_SMALLCAPTIONFONT tmschema/tmt_smallcaptionfont.html - TMT_MENUFONT tmschema/tmt_menufont.html - TMT_STATUSFONT tmschema/tmt_statusfont.html - TMT_MSGBOXFONT tmschema/tmt_msgboxfont.html - TMT_ICONTITLEFONT tmschema/tmt_icontitlefont.html - TMT_HEADING1FONT tmschema/tmt_heading1font.html - TMT_HEADING2FONT tmschema/tmt_heading2font.html - TMT_BODYFONT tmschema/tmt_bodyfont.html - TMT_FIRSTFONT tmschema/tmt_firstfont.html - TMT_LASTFONT tmschema/tmt_lastfont.html - TMT_FLATMENUS tmschema/tmt_flatmenus.html - TMT_FIRSTBOOL tmschema/tmt_firstbool.html - TMT_LASTBOOL tmschema/tmt_lastbool.html - TMT_SIZINGBORDERWIDTH tmschema/tmt_sizingborderwidth.html - TMT_SCROLLBARWIDTH tmschema/tmt_scrollbarwidth.html - TMT_SCROLLBARHEIGHT tmschema/tmt_scrollbarheight.html - TMT_CAPTIONBARWIDTH tmschema/tmt_captionbarwidth.html - TMT_CAPTIONBARHEIGHT tmschema/tmt_captionbarheight.html - TMT_SMCAPTIONBARWIDTH tmschema/tmt_smcaptionbarwidth.html - TMT_SMCAPTIONBARHEIGHT tmschema/tmt_smcaptionbarheight.html - TMT_MENUBARWIDTH tmschema/tmt_menubarwidth.html - TMT_MENUBARHEIGHT tmschema/tmt_menubarheight.html - TMT_PADDEDBORDERWIDTH tmschema/tmt_paddedborderwidth.html - TMT_FIRSTSIZE tmschema/tmt_firstsize.html - TMT_LASTSIZE tmschema/tmt_lastsize.html - TMT_MINCOLORDEPTH tmschema/tmt_mincolordepth.html - TMT_FIRSTINT tmschema/tmt_firstint.html - TMT_LASTINT tmschema/tmt_lastint.html - TMT_CSSNAME tmschema/tmt_cssname.html - TMT_XMLNAME tmschema/tmt_xmlname.html - TMT_LASTUPDATED tmschema/tmt_lastupdated.html - TMT_ALIAS tmschema/tmt_alias.html - TMT_FIRSTSTRING tmschema/tmt_firststring.html - TMT_LASTSTRING tmschema/tmt_laststring.html - TMT_SCROLLBAR tmschema/tmt_scrollbar.html - TMT_BACKGROUND tmschema/tmt_background.html - TMT_ACTIVECAPTION tmschema/tmt_activecaption.html - TMT_INACTIVECAPTION tmschema/tmt_inactivecaption.html - TMT_MENU tmschema/tmt_menu.html - TMT_WINDOW tmschema/tmt_window.html - TMT_WINDOWFRAME tmschema/tmt_windowframe.html - TMT_MENUTEXT tmschema/tmt_menutext.html - TMT_WINDOWTEXT tmschema/tmt_windowtext.html - TMT_CAPTIONTEXT tmschema/tmt_captiontext.html - TMT_ACTIVEBORDER tmschema/tmt_activeborder.html - TMT_INACTIVEBORDER tmschema/tmt_inactiveborder.html - TMT_APPWORKSPACE tmschema/tmt_appworkspace.html - TMT_HIGHLIGHT tmschema/tmt_highlight.html - TMT_HIGHLIGHTTEXT tmschema/tmt_highlighttext.html - TMT_BTNFACE tmschema/tmt_btnface.html - TMT_BTNSHADOW tmschema/tmt_btnshadow.html - TMT_GRAYTEXT tmschema/tmt_graytext.html - TMT_BTNTEXT tmschema/tmt_btntext.html - TMT_INACTIVECAPTIONTEXT tmschema/tmt_inactivecaptiontext.html - TMT_BTNHIGHLIGHT tmschema/tmt_btnhighlight.html - TMT_DKSHADOW3D tmschema/tmt_dkshadow3d.html - TMT_LIGHT3D tmschema/tmt_light3d.html - TMT_INFOTEXT tmschema/tmt_infotext.html - TMT_INFOBK tmschema/tmt_infobk.html - TMT_BUTTONALTERNATEFACE tmschema/tmt_buttonalternateface.html - TMT_HOTTRACKING tmschema/tmt_hottracking.html - TMT_GRADIENTACTIVECAPTION tmschema/tmt_gradientactivecaption.html - TMT_GRADIENTINACTIVECAPTION tmschema/tmt_gradientinactivecaption.html - TMT_MENUHILIGHT tmschema/tmt_menuhilight.html - TMT_MENUBAR tmschema/tmt_menubar.html - TMT_FIRSTCOLOR tmschema/tmt_firstcolor.html - TMT_LASTCOLOR tmschema/tmt_lastcolor.html - TMT_FROMHUE1 tmschema/tmt_fromhue1.html - TMT_FROMHUE2 tmschema/tmt_fromhue2.html - TMT_FROMHUE3 tmschema/tmt_fromhue3.html - TMT_FROMHUE4 tmschema/tmt_fromhue4.html - TMT_FROMHUE5 tmschema/tmt_fromhue5.html - TMT_TOHUE1 tmschema/tmt_tohue1.html - TMT_TOHUE2 tmschema/tmt_tohue2.html - TMT_TOHUE3 tmschema/tmt_tohue3.html - TMT_TOHUE4 tmschema/tmt_tohue4.html - TMT_TOHUE5 tmschema/tmt_tohue5.html - TMT_FROMCOLOR1 tmschema/tmt_fromcolor1.html - TMT_FROMCOLOR2 tmschema/tmt_fromcolor2.html - TMT_FROMCOLOR3 tmschema/tmt_fromcolor3.html - TMT_FROMCOLOR4 tmschema/tmt_fromcolor4.html - TMT_FROMCOLOR5 tmschema/tmt_fromcolor5.html - TMT_TOCOLOR1 tmschema/tmt_tocolor1.html - TMT_TOCOLOR2 tmschema/tmt_tocolor2.html - TMT_TOCOLOR3 tmschema/tmt_tocolor3.html - TMT_TOCOLOR4 tmschema/tmt_tocolor4.html - TMT_TOCOLOR5 tmschema/tmt_tocolor5.html - TMT_TRANSPARENT tmschema/tmt_transparent.html - TMT_AUTOSIZE tmschema/tmt_autosize.html - TMT_BORDERONLY tmschema/tmt_borderonly.html - TMT_COMPOSITED tmschema/tmt_composited.html - TMT_BGFILL tmschema/tmt_bgfill.html - TMT_GLYPHTRANSPARENT tmschema/tmt_glyphtransparent.html - TMT_GLYPHONLY tmschema/tmt_glyphonly.html - TMT_ALWAYSSHOWSIZINGBAR tmschema/tmt_alwaysshowsizingbar.html - TMT_MIRRORIMAGE tmschema/tmt_mirrorimage.html - TMT_UNIFORMSIZING tmschema/tmt_uniformsizing.html - TMT_INTEGRALSIZING tmschema/tmt_integralsizing.html - TMT_SOURCEGROW tmschema/tmt_sourcegrow.html - TMT_SOURCESHRINK tmschema/tmt_sourceshrink.html - TMT_DRAWBORDERS tmschema/tmt_drawborders.html - TMT_NOETCHEDEFFECT tmschema/tmt_noetchedeffect.html - TMT_TEXTAPPLYOVERLAY tmschema/tmt_textapplyoverlay.html - TMT_TEXTGLOW tmschema/tmt_textglow.html - TMT_TEXTITALIC tmschema/tmt_textitalic.html - TMT_COMPOSITEDOPAQUE tmschema/tmt_compositedopaque.html - TMT_LOCALIZEDMIRRORIMAGE tmschema/tmt_localizedmirrorimage.html - TMT_IMAGECOUNT tmschema/tmt_imagecount.html - TMT_ALPHALEVEL tmschema/tmt_alphalevel.html - TMT_BORDERSIZE tmschema/tmt_bordersize.html - TMT_ROUNDCORNERWIDTH tmschema/tmt_roundcornerwidth.html - TMT_ROUNDCORNERHEIGHT tmschema/tmt_roundcornerheight.html - TMT_GRADIENTRATIO1 tmschema/tmt_gradientratio1.html - TMT_GRADIENTRATIO2 tmschema/tmt_gradientratio2.html - TMT_GRADIENTRATIO3 tmschema/tmt_gradientratio3.html - TMT_GRADIENTRATIO4 tmschema/tmt_gradientratio4.html - TMT_GRADIENTRATIO5 tmschema/tmt_gradientratio5.html - TMT_PROGRESSCHUNKSIZE tmschema/tmt_progresschunksize.html - TMT_PROGRESSSPACESIZE tmschema/tmt_progressspacesize.html - TMT_SATURATION tmschema/tmt_saturation.html - TMT_TEXTBORDERSIZE tmschema/tmt_textbordersize.html - TMT_ALPHATHRESHOLD tmschema/tmt_alphathreshold.html - TMT_WIDTH tmschema/tmt_width.html - TMT_HEIGHT tmschema/tmt_height.html - TMT_GLYPHINDEX tmschema/tmt_glyphindex.html - TMT_TRUESIZESTRETCHMARK tmschema/tmt_truesizestretchmark.html - TMT_MINDPI1 tmschema/tmt_mindpi1.html - TMT_MINDPI2 tmschema/tmt_mindpi2.html - TMT_MINDPI3 tmschema/tmt_mindpi3.html - TMT_MINDPI4 tmschema/tmt_mindpi4.html - TMT_MINDPI5 tmschema/tmt_mindpi5.html - TMT_TEXTGLOWSIZE tmschema/tmt_textglowsize.html - TMT_FRAMESPERSECOND tmschema/tmt_framespersecond.html - TMT_PIXELSPERFRAME tmschema/tmt_pixelsperframe.html - TMT_ANIMATIONDELAY tmschema/tmt_animationdelay.html - TMT_GLOWINTENSITY tmschema/tmt_glowintensity.html - TMT_OPACITY tmschema/tmt_opacity.html - TMT_COLORIZATIONCOLOR tmschema/tmt_colorizationcolor.html - TMT_COLORIZATIONOPACITY tmschema/tmt_colorizationopacity.html - TMT_GLYPHFONT tmschema/tmt_glyphfont.html - TMT_IMAGEFILE tmschema/tmt_imagefile.html - TMT_IMAGEFILE1 tmschema/tmt_imagefile1.html - TMT_IMAGEFILE2 tmschema/tmt_imagefile2.html - TMT_IMAGEFILE3 tmschema/tmt_imagefile3.html - TMT_IMAGEFILE4 tmschema/tmt_imagefile4.html - TMT_IMAGEFILE5 tmschema/tmt_imagefile5.html - TMT_GLYPHIMAGEFILE tmschema/tmt_glyphimagefile.html - TMT_TEXT tmschema/tmt_text.html - TMT_CLASSICVALUE tmschema/tmt_classicvalue.html - TMT_OFFSET tmschema/tmt_offset.html - TMT_TEXTSHADOWOFFSET tmschema/tmt_textshadowoffset.html - TMT_MINSIZE tmschema/tmt_minsize.html - TMT_MINSIZE1 tmschema/tmt_minsize1.html - TMT_MINSIZE2 tmschema/tmt_minsize2.html - TMT_MINSIZE3 tmschema/tmt_minsize3.html - TMT_MINSIZE4 tmschema/tmt_minsize4.html - TMT_MINSIZE5 tmschema/tmt_minsize5.html - TMT_NORMALSIZE tmschema/tmt_normalsize.html - TMT_SIZINGMARGINS tmschema/tmt_sizingmargins.html - TMT_CONTENTMARGINS tmschema/tmt_contentmargins.html - TMT_CAPTIONMARGINS tmschema/tmt_captionmargins.html - TMT_BORDERCOLOR tmschema/tmt_bordercolor.html - TMT_FILLCOLOR tmschema/tmt_fillcolor.html - TMT_TEXTCOLOR tmschema/tmt_textcolor.html - TMT_EDGELIGHTCOLOR tmschema/tmt_edgelightcolor.html - TMT_EDGEHIGHLIGHTCOLOR tmschema/tmt_edgehighlightcolor.html - TMT_EDGESHADOWCOLOR tmschema/tmt_edgeshadowcolor.html - TMT_EDGEDKSHADOWCOLOR tmschema/tmt_edgedkshadowcolor.html - TMT_EDGEFILLCOLOR tmschema/tmt_edgefillcolor.html - TMT_TRANSPARENTCOLOR tmschema/tmt_transparentcolor.html - TMT_GRADIENTCOLOR1 tmschema/tmt_gradientcolor1.html - TMT_GRADIENTCOLOR2 tmschema/tmt_gradientcolor2.html - TMT_GRADIENTCOLOR3 tmschema/tmt_gradientcolor3.html - TMT_GRADIENTCOLOR4 tmschema/tmt_gradientcolor4.html - TMT_GRADIENTCOLOR5 tmschema/tmt_gradientcolor5.html - TMT_SHADOWCOLOR tmschema/tmt_shadowcolor.html - TMT_GLOWCOLOR tmschema/tmt_glowcolor.html - TMT_TEXTBORDERCOLOR tmschema/tmt_textbordercolor.html - TMT_TEXTSHADOWCOLOR tmschema/tmt_textshadowcolor.html - TMT_GLYPHTEXTCOLOR tmschema/tmt_glyphtextcolor.html - TMT_GLYPHTRANSPARENTCOLOR tmschema/tmt_glyphtransparentcolor.html - TMT_FILLCOLORHINT tmschema/tmt_fillcolorhint.html - TMT_BORDERCOLORHINT tmschema/tmt_bordercolorhint.html - TMT_ACCENTCOLORHINT tmschema/tmt_accentcolorhint.html - TMT_TEXTCOLORHINT tmschema/tmt_textcolorhint.html - TMT_HEADING1TEXTCOLOR tmschema/tmt_heading1textcolor.html - TMT_HEADING2TEXTCOLOR tmschema/tmt_heading2textcolor.html - TMT_BODYTEXTCOLOR tmschema/tmt_bodytextcolor.html - TMT_BGTYPE tmschema/tmt_bgtype.html - TMT_BORDERTYPE tmschema/tmt_bordertype.html - TMT_FILLTYPE tmschema/tmt_filltype.html - TMT_SIZINGTYPE tmschema/tmt_sizingtype.html - TMT_HALIGN tmschema/tmt_halign.html - TMT_CONTENTALIGNMENT tmschema/tmt_contentalignment.html - TMT_VALIGN tmschema/tmt_valign.html - TMT_OFFSETTYPE tmschema/tmt_offsettype.html - TMT_ICONEFFECT tmschema/tmt_iconeffect.html - TMT_TEXTSHADOWTYPE tmschema/tmt_textshadowtype.html - TMT_IMAGELAYOUT tmschema/tmt_imagelayout.html - TMT_GLYPHTYPE tmschema/tmt_glyphtype.html - TMT_IMAGESELECTTYPE tmschema/tmt_imageselecttype.html - TMT_GLYPHFONTSIZINGTYPE tmschema/tmt_glyphfontsizingtype.html - TMT_TRUESIZESCALINGTYPE tmschema/tmt_truesizescalingtype.html - TMT_USERPICTURE tmschema/tmt_userpicture.html - TMT_DEFAULTPANESIZE tmschema/tmt_defaultpanesize.html - TMT_BLENDCOLOR tmschema/tmt_blendcolor.html - TMT_CUSTOMSPLITRECT tmschema/tmt_customsplitrect.html - TMT_ANIMATIONBUTTONRECT tmschema/tmt_animationbuttonrect.html - TMT_ANIMATIONDURATION tmschema/tmt_animationduration.html - TMT_TRANSITIONDURATIONS tmschema/tmt_transitiondurations.html - TMT_SCALEDBACKGROUND tmschema/tmt_scaledbackground.html - TMT_ATLASIMAGE tmschema/tmt_atlasimage.html - TMT_ATLASINPUTIMAGE tmschema/tmt_atlasinputimage.html - TMT_ATLASRECT tmschema/tmt_atlasrect.html - VSCLASS_LINK tmschema/vsclass_link.html - LP_HYPERLINK tmschema/lp_hyperlink.html - HLS_NORMALTEXT tmschema/hls_normaltext.html - HLS_LINKTEXT tmschema/hls_linktext.html - VSCLASS_EMPTYMARKUP tmschema/vsclass_emptymarkup.html - EMP_MARKUPTEXT tmschema/emp_markuptext.html - EMT_NORMALTEXT tmschema/emt_normaltext.html - EMT_LINKTEXT tmschema/emt_linktext.html - VSCLASS_STATIC tmschema/vsclass_static.html - STAT_TEXT tmschema/stat_text.html - VSCLASS_PAGE tmschema/vsclass_page.html - PGRP_UP tmschema/pgrp_up.html - PGRP_DOWN tmschema/pgrp_down.html - PGRP_UPHORZ tmschema/pgrp_uphorz.html - PGRP_DOWNHORZ tmschema/pgrp_downhorz.html - VSCLASS_MONTHCAL tmschema/vsclass_monthcal.html - MC_BACKGROUND tmschema/mc_background.html - MC_BORDERS tmschema/mc_borders.html - MC_GRIDBACKGROUND tmschema/mc_gridbackground.html - MC_COLHEADERSPLITTER tmschema/mc_colheadersplitter.html - MC_GRIDCELLBACKGROUND tmschema/mc_gridcellbackground.html - MC_GRIDCELL tmschema/mc_gridcell.html - MC_GRIDCELLUPPER tmschema/mc_gridcellupper.html - MC_TRAILINGGRIDCELL tmschema/mc_trailinggridcell.html - MC_TRAILINGGRIDCELLUPPER tmschema/mc_trailinggridcellupper.html - MC_NAVNEXT tmschema/mc_navnext.html - MC_NAVPREV tmschema/mc_navprev.html - MCGCB_SELECTED tmschema/mcgcb_selected.html - MCGCB_HOT tmschema/mcgcb_hot.html - MCGCB_SELECTEDHOT tmschema/mcgcb_selectedhot.html - MCGCB_SELECTEDNOTFOCUSED tmschema/mcgcb_selectednotfocused.html - MCGCB_TODAY tmschema/mcgcb_today.html - MCGC_HOT tmschema/mcgc_hot.html - MCGC_HASSTATE tmschema/mcgc_hasstate.html - MCGC_HASSTATEHOT tmschema/mcgc_hasstatehot.html - MCGC_TODAY tmschema/mcgc_today.html - MCGCU_HOT tmschema/mcgcu_hot.html - MCGCU_HASSTATE tmschema/mcgcu_hasstate.html - MCGCU_HASSTATEHOT tmschema/mcgcu_hasstatehot.html - MCTGC_HOT tmschema/mctgc_hot.html - MCTGC_HASSTATE tmschema/mctgc_hasstate.html - MCTGC_HASSTATEHOT tmschema/mctgc_hasstatehot.html - MCTGC_TODAY tmschema/mctgc_today.html - MCTGCU_HOT tmschema/mctgcu_hot.html - MCTGCU_HASSTATE tmschema/mctgcu_hasstate.html - MCTGCU_HASSTATEHOT tmschema/mctgcu_hasstatehot.html - MCNN_NORMAL tmschema/mcnn_normal.html - MCNN_HOT tmschema/mcnn_hot.html - MCNN_PRESSED tmschema/mcnn_pressed.html - MCNN_DISABLED tmschema/mcnn_disabled.html - MCNP_NORMAL tmschema/mcnp_normal.html - MCNP_HOT tmschema/mcnp_hot.html - MCNP_PRESSED tmschema/mcnp_pressed.html - MCNP_DISABLED tmschema/mcnp_disabled.html - VSCLASS_CLOCK tmschema/vsclass_clock.html - CLP_TIME tmschema/clp_time.html - CLS_NORMAL tmschema/cls_normal.html - CLS_HOT tmschema/cls_hot.html - CLS_PRESSED tmschema/cls_pressed.html - VSCLASS_TRAYNOTIFY tmschema/vsclass_traynotify.html - TNP_BACKGROUND tmschema/tnp_background.html - TNP_ANIMBACKGROUND tmschema/tnp_animbackground.html - VSCLASS_TASKBAR tmschema/vsclass_taskbar.html - TBP_BACKGROUNDBOTTOM tmschema/tbp_backgroundbottom.html - TBP_BACKGROUNDRIGHT tmschema/tbp_backgroundright.html - TBP_BACKGROUNDTOP tmschema/tbp_backgroundtop.html - TBP_BACKGROUNDLEFT tmschema/tbp_backgroundleft.html - TBP_SIZINGBARBOTTOM tmschema/tbp_sizingbarbottom.html - TBP_SIZINGBARRIGHT tmschema/tbp_sizingbarright.html - TBP_SIZINGBARTOP tmschema/tbp_sizingbartop.html - TBP_SIZINGBARLEFT tmschema/tbp_sizingbarleft.html - VSCLASS_TASKBAND tmschema/vsclass_taskband.html - TDP_GROUPCOUNT tmschema/tdp_groupcount.html - TDP_FLASHBUTTON tmschema/tdp_flashbutton.html - TDP_FLASHBUTTONGROUPMENU tmschema/tdp_flashbuttongroupmenu.html - VSCLASS_STARTPANEL tmschema/vsclass_startpanel.html - SPP_USERPANE tmschema/spp_userpane.html - SPP_MOREPROGRAMS tmschema/spp_moreprograms.html - SPP_MOREPROGRAMSARROW tmschema/spp_moreprogramsarrow.html - SPP_PROGLIST tmschema/spp_proglist.html - SPP_PROGLISTSEPARATOR tmschema/spp_proglistseparator.html - SPP_PLACESLIST tmschema/spp_placeslist.html - SPP_PLACESLISTSEPARATOR tmschema/spp_placeslistseparator.html - SPP_LOGOFF tmschema/spp_logoff.html - SPP_LOGOFFBUTTONS tmschema/spp_logoffbuttons.html - SPP_USERPICTURE tmschema/spp_userpicture.html - SPP_PREVIEW tmschema/spp_preview.html - SPP_MOREPROGRAMSTAB tmschema/spp_moreprogramstab.html - SPP_NSCHOST tmschema/spp_nschost.html - SPP_SOFTWAREEXPLORER tmschema/spp_softwareexplorer.html - SPP_OPENBOX tmschema/spp_openbox.html - SPP_SEARCHVIEW tmschema/spp_searchview.html - SPP_MOREPROGRAMSARROWBACK tmschema/spp_moreprogramsarrowback.html - SPP_TOPMATCH tmschema/spp_topmatch.html - SPP_LOGOFFSPLITBUTTONDROPDOWN tmschema/spp_logoffsplitbuttondropdown.html - SPMPT_NORMAL tmschema/spmpt_normal.html - SPMPT_HOT tmschema/spmpt_hot.html - SPMPT_SELECTED tmschema/spmpt_selected.html - SPMPT_DISABLED tmschema/spmpt_disabled.html - SPMPT_FOCUSED tmschema/spmpt_focused.html - SPSE_NORMAL tmschema/spse_normal.html - SPSE_HOT tmschema/spse_hot.html - SPSE_SELECTED tmschema/spse_selected.html - SPSE_DISABLED tmschema/spse_disabled.html - SPSE_FOCUSED tmschema/spse_focused.html - SPOB_NORMAL tmschema/spob_normal.html - SPOB_HOT tmschema/spob_hot.html - SPOB_SELECTED tmschema/spob_selected.html - SPOB_DISABLED tmschema/spob_disabled.html - SPOB_FOCUSED tmschema/spob_focused.html - SPS_NORMAL tmschema/sps_normal.html - SPS_HOT tmschema/sps_hot.html - SPS_PRESSED tmschema/sps_pressed.html - SPSB_NORMAL tmschema/spsb_normal.html - SPSB_HOT tmschema/spsb_hot.html - SPSB_PRESSED tmschema/spsb_pressed.html - SPLS_NORMAL tmschema/spls_normal.html - SPLS_HOT tmschema/spls_hot.html - SPLS_PRESSED tmschema/spls_pressed.html - VSCLASS_MENUBAND tmschema/vsclass_menuband.html - MDP_NEWAPPBUTTON tmschema/mdp_newappbutton.html - MDP_SEPERATOR tmschema/mdp_seperator.html - MDS_NORMAL tmschema/mds_normal.html - MDS_HOT tmschema/mds_hot.html - MDS_PRESSED tmschema/mds_pressed.html - MDS_DISABLED tmschema/mds_disabled.html - MDS_CHECKED tmschema/mds_checked.html - MDS_HOTCHECKED tmschema/mds_hotchecked.html - AEROWIZARDPARTS tmschema/aerowizardparts.html - AEROWIZARDSTYLEPARTS tmschema/aerowizardstyleparts.html - TITLEBARSTATES tmschema/titlebarstates.html - HEADERAREASTATES tmschema/headerareastates.html - CONTENTAREASTATES tmschema/contentareastates.html - BUTTONPARTS tmschema/buttonparts.html - BUTTONSTYLEPARTS tmschema/buttonstyleparts.html - PUSHBUTTONSTATES tmschema/pushbuttonstates.html - RADIOBUTTONSTATES tmschema/radiobuttonstates.html - CHECKBOXSTATES tmschema/checkboxstates.html - GROUPBOXSTATES tmschema/groupboxstates.html - COMMANDLINKSTATES tmschema/commandlinkstates.html - COMMANDLINKGLYPHSTATES tmschema/commandlinkglyphstates.html - COMBOBOXPARTS tmschema/comboboxparts.html - COMBOBOXSTYLEPARTS tmschema/comboboxstyleparts.html - COMBOBOXSTYLESTATES tmschema/comboboxstylestates.html - DROPDOWNBUTTONRIGHTSTATES tmschema/dropdownbuttonrightstates.html - DROPDOWNBUTTONLEFTSTATES tmschema/dropdownbuttonleftstates.html - TRANSPARENTBACKGROUNDSTATES tmschema/transparentbackgroundstates.html - BORDERSTATES tmschema/borderstates.html - READONLYSTATES tmschema/readonlystates.html - CUEBANNERSTATES tmschema/cuebannerstates.html - COMMUNICATIONSPARTS tmschema/communicationsparts.html - COMMUNICATIONSSTYLEPARTS tmschema/communicationsstyleparts.html - TABSTATES tmschema/tabstates.html - CONTROLPANELPARTS tmschema/controlpanelparts.html - CONTROLPANELSTYLEPARTS tmschema/controlpanelstyleparts.html - HELPLINKSTATES tmschema/helplinkstates.html - TASKLINKSTATES tmschema/tasklinkstates.html - CONTENTLINKSTATES tmschema/contentlinkstates.html - SECTIONTITLELINKSTATES tmschema/sectiontitlelinkstates.html - DATEPICKERPARTS tmschema/datepickerparts.html - DATEPICKERSTYLEPARTS tmschema/datepickerstyleparts.html - DATETEXTSTATES tmschema/datetextstates.html - DATEBORDERSTATES tmschema/dateborderstates.html - SHOWCALENDARBUTTONRIGHTSTATES tmschema/showcalendarbuttonrightstates.html - DRAGDROPPARTS tmschema/dragdropparts.html - DRAGDROPSTYLEPARTS tmschema/dragdropstyleparts.html - COPYSTATES tmschema/copystates.html - MOVESTATES tmschema/movestates.html - UPDATEMETADATASTATES tmschema/updatemetadatastates.html - CREATELINKSTATES tmschema/createlinkstates.html - WARNINGSTATES tmschema/warningstates.html - NONESTATES tmschema/nonestates.html - EDITPARTS tmschema/editparts.html - EDITSTYLEPARTS tmschema/editstyleparts.html - EDITTEXTSTATES tmschema/edittextstates.html - BACKGROUNDSTATES tmschema/backgroundstates.html - BACKGROUNDWITHBORDERSTATES tmschema/backgroundwithborderstates.html - EDITBORDER_NOSCROLLSTATES tmschema/editborder_noscrollstates.html - EDITBORDER_HSCROLLSTATES tmschema/editborder_hscrollstates.html - EDITBORDER_VSCROLLSTATES tmschema/editborder_vscrollstates.html - EDITBORDER_HVSCROLLSTATES tmschema/editborder_hvscrollstates.html - EXPLORERBARPARTS tmschema/explorerbarparts.html - EXPLORERBARSTYLEPARTS tmschema/explorerbarstyleparts.html - HEADERCLOSESTATES tmschema/headerclosestates.html - HEADERPINSTATES tmschema/headerpinstates.html - IEBARMENUSTATES tmschema/iebarmenustates.html - NORMALGROUPCOLLAPSESTATES tmschema/normalgroupcollapsestates.html - NORMALGROUPEXPANDSTATES tmschema/normalgroupexpandstates.html - SPECIALGROUPCOLLAPSESTATES tmschema/specialgroupcollapsestates.html - SPECIALGROUPEXPANDSTATES tmschema/specialgroupexpandstates.html - FLYOUTPARTS tmschema/flyoutparts.html - FLYOUTSTYLEPARTS tmschema/flyoutstyleparts.html - LABELSTATES tmschema/labelstates.html - LINKSTATES tmschema/linkstates.html - BODYSTATES tmschema/bodystates.html - LINKHEADERSTATES tmschema/linkheaderstates.html - HEADERPARTS tmschema/headerparts.html - HEADERSTYLEPARTS tmschema/headerstyleparts.html - HEADERSTYLESTATES tmschema/headerstylestates.html - HEADERITEMSTATES tmschema/headeritemstates.html - HEADERITEMLEFTSTATES tmschema/headeritemleftstates.html - HEADERITEMRIGHTSTATES tmschema/headeritemrightstates.html - HEADERSORTARROWSTATES tmschema/headersortarrowstates.html - HEADERDROPDOWNSTATES tmschema/headerdropdownstates.html - HEADERDROPDOWNFILTERSTATES tmschema/headerdropdownfilterstates.html - HEADEROVERFLOWSTATES tmschema/headeroverflowstates.html - LISTBOXPARTS tmschema/listboxparts.html - LISTBOXSTYLEPARTS tmschema/listboxstyleparts.html - BORDER_HSCROLLSTATES tmschema/border_hscrollstates.html - BORDER_HVSCROLLSTATES tmschema/border_hvscrollstates.html - BORDER_NOSCROLLSTATES tmschema/border_noscrollstates.html - BORDER_VSCROLLSTATES tmschema/border_vscrollstates.html - ITEMSTATES tmschema/itemstates.html - LISTVIEWPARTS tmschema/listviewparts.html - LISTVIEWSTYLEPARTS tmschema/listviewstyleparts.html - LISTITEMSTATES tmschema/listitemstates.html - GROUPHEADERSTATES tmschema/groupheaderstates.html - GROUPHEADERLINESTATES tmschema/groupheaderlinestates.html - EXPANDBUTTONSTATES tmschema/expandbuttonstates.html - COLLAPSEBUTTONSTATES tmschema/collapsebuttonstates.html - MENUPARTS tmschema/menuparts.html - MENUSTYLEPARTS tmschema/menustyleparts.html - BARBACKGROUNDSTATES tmschema/barbackgroundstates.html - BARITEMSTATES tmschema/baritemstates.html - POPUPCHECKSTATES tmschema/popupcheckstates.html - POPUPCHECKBACKGROUNDSTATES tmschema/popupcheckbackgroundstates.html - POPUPITEMSTATES tmschema/popupitemstates.html - POPUPSUBMENUSTATES tmschema/popupsubmenustates.html - SYSTEMCLOSESTATES tmschema/systemclosestates.html - SYSTEMMAXIMIZESTATES tmschema/systemmaximizestates.html - SYSTEMMINIMIZESTATES tmschema/systemminimizestates.html - SYSTEMRESTORESTATES tmschema/systemrestorestates.html - NAVIGATIONPARTS tmschema/navigationparts.html - NAV_BACKBUTTONSTATES tmschema/nav_backbuttonstates.html - NAV_FORWARDBUTTONSTATES tmschema/nav_forwardbuttonstates.html - NAV_MENUBUTTONSTATES tmschema/nav_menubuttonstates.html - PROGRESSPARTS tmschema/progressparts.html - PROGRESSSTYLEPARTS tmschema/progressstyleparts.html - TRANSPARENTBARSTATES tmschema/transparentbarstates.html - TRANSPARENTBARVERTSTATES tmschema/transparentbarvertstates.html - FILLSTATES tmschema/fillstates.html - FILLVERTSTATES tmschema/fillvertstates.html - REBARPARTS tmschema/rebarparts.html - REBARSTYLEPARTS tmschema/rebarstyleparts.html - CHEVRONSTATES tmschema/chevronstates.html - CHEVRONVERTSTATES tmschema/chevronvertstates.html - SPLITTERSTATES tmschema/splitterstates.html - SPLITTERVERTSTATES tmschema/splittervertstates.html - SCROLLBARPARTS tmschema/scrollbarparts.html - SCROLLBARSTYLEPARTS tmschema/scrollbarstyleparts.html - ARROWBTNSTATES tmschema/arrowbtnstates.html - SCROLLBARSTYLESTATES tmschema/scrollbarstylestates.html - SIZEBOXSTATES tmschema/sizeboxstates.html - SPINPARTS tmschema/spinparts.html - SPINSTYLEPARTS tmschema/spinstyleparts.html - UPSTATES tmschema/upstates.html - DOWNSTATES tmschema/downstates.html - UPHORZSTATES tmschema/uphorzstates.html - DOWNHORZSTATES tmschema/downhorzstates.html - STATUSPARTS tmschema/statusparts.html - STATUSSTYLEPARTS tmschema/statusstyleparts.html - TABPARTS tmschema/tabparts.html - TABSTYLEPARTS tmschema/tabstyleparts.html - TABITEMSTATES tmschema/tabitemstates.html - TABITEMLEFTEDGESTATES tmschema/tabitemleftedgestates.html - TABITEMRIGHTEDGESTATES tmschema/tabitemrightedgestates.html - TABITEMBOTHEDGESTATES tmschema/tabitembothedgestates.html - TOPTABITEMSTATES tmschema/toptabitemstates.html - TOPTABITEMLEFTEDGESTATES tmschema/toptabitemleftedgestates.html - TOPTABITEMRIGHTEDGESTATES tmschema/toptabitemrightedgestates.html - TOPTABITEMBOTHEDGESTATES tmschema/toptabitembothedgestates.html - TASKDIALOGPARTS tmschema/taskdialogparts.html - TASKDIALOGSTYLEPARTS tmschema/taskdialogstyleparts.html - CONTENTPANESTATES tmschema/contentpanestates.html - EXPANDOBUTTONSTATES tmschema/expandobuttonstates.html - TEXTSTYLEPARTS tmschema/textstyleparts.html - HYPERLINKTEXTSTATES tmschema/hyperlinktextstates.html - CONTROLLABELSTATES tmschema/controllabelstates.html - TOOLBARPARTS tmschema/toolbarparts.html - TOOLBARSTYLEPARTS tmschema/toolbarstyleparts.html - TOOLBARSTYLESTATES tmschema/toolbarstylestates.html - TOOLTIPPARTS tmschema/tooltipparts.html - TOOLTIPSTYLEPARTS tmschema/tooltipstyleparts.html - CLOSESTATES tmschema/closestates.html - STANDARDSTATES tmschema/standardstates.html - BALLOONSTATES tmschema/balloonstates.html - BALLOONSTEMSTATES tmschema/balloonstemstates.html - WRENCHSTATES tmschema/wrenchstates.html - TRACKBARPARTS tmschema/trackbarparts.html - TRACKBARSTYLEPARTS tmschema/trackbarstyleparts.html - TRACKBARSTYLESTATES tmschema/trackbarstylestates.html - TRACKSTATES tmschema/trackstates.html - TRACKVERTSTATES tmschema/trackvertstates.html - THUMBSTATES tmschema/thumbstates.html - THUMBBOTTOMSTATES tmschema/thumbbottomstates.html - THUMBTOPSTATES tmschema/thumbtopstates.html - THUMBVERTSTATES tmschema/thumbvertstates.html - THUMBLEFTSTATES tmschema/thumbleftstates.html - THUMBRIGHTSTATES tmschema/thumbrightstates.html - TICSSTATES tmschema/ticsstates.html - TICSVERTSTATES tmschema/ticsvertstates.html - TREEVIEWPARTS tmschema/treeviewparts.html - TREEVIEWSTYLEPARTS tmschema/treeviewstyleparts.html - TREEITEMSTATES tmschema/treeitemstates.html - GLYPHSTATES tmschema/glyphstates.html - HOTGLYPHSTATES tmschema/hotglyphstates.html - WINDOWPARTS tmschema/windowparts.html - WINDOWSTYLEPARTS tmschema/windowstyleparts.html - FRAMESTATES tmschema/framestates.html - CAPTIONSTATES tmschema/captionstates.html - MAXCAPTIONSTATES tmschema/maxcaptionstates.html - MINCAPTIONSTATES tmschema/mincaptionstates.html - HORZSCROLLSTATES tmschema/horzscrollstates.html - HORZTHUMBSTATES tmschema/horzthumbstates.html - VERTSCROLLSTATES tmschema/vertscrollstates.html - VERTTHUMBSTATES tmschema/vertthumbstates.html - SYSBUTTONSTATES tmschema/sysbuttonstates.html - MINBUTTONSTATES tmschema/minbuttonstates.html - MAXBUTTONSTATES tmschema/maxbuttonstates.html - RESTOREBUTTONSTATES tmschema/restorebuttonstates.html - HELPBUTTONSTATES tmschema/helpbuttonstates.html - CLOSEBUTTONSTATES tmschema/closebuttonstates.html - BGTYPE tmschema/bgtype.html - IMAGELAYOUT tmschema/imagelayout.html - BORDERTYPE tmschema/bordertype.html - FILLTYPE tmschema/filltype.html - SIZINGTYPE tmschema/sizingtype.html - HALIGN tmschema/halign.html - CONTENTALIGNMENT tmschema/contentalignment.html - VALIGN tmschema/valign.html - OFFSETTYPE tmschema/offsettype.html - ICONEFFECT tmschema/iconeffect.html - TEXTSHADOWTYPE tmschema/textshadowtype.html - GLYPHTYPE tmschema/glyphtype.html - IMAGESELECTTYPE tmschema/imageselecttype.html - TRUESIZESCALINGTYPE tmschema/truesizescalingtype.html - GLYPHFONTSIZINGTYPE tmschema/glyphfontsizingtype.html - LINKPARTS tmschema/linkparts.html - HYPERLINKSTATES tmschema/hyperlinkstates.html - EMPTYMARKUPPARTS tmschema/emptymarkupparts.html - MARKUPTEXTSTATES tmschema/markuptextstates.html - STATICPARTS tmschema/staticparts.html - PAGEPARTS tmschema/pageparts.html - MONTHCALPARTS tmschema/monthcalparts.html - GRIDCELLBACKGROUNDSTATES tmschema/gridcellbackgroundstates.html - GRIDCELLSTATES tmschema/gridcellstates.html - GRIDCELLUPPERSTATES tmschema/gridcellupperstates.html - TRAILINGGRIDCELLSTATES tmschema/trailinggridcellstates.html - TRAILINGGRIDCELLUPPERSTATES tmschema/trailinggridcellupperstates.html - NAVNEXTSTATES tmschema/navnextstates.html - NAVPREVSTATES tmschema/navprevstates.html - CLOCKPARTS tmschema/clockparts.html - CLOCKSTATES tmschema/clockstates.html - TRAYNOTIFYPARTS tmschema/traynotifyparts.html - TASKBARPARTS tmschema/taskbarparts.html - TASKBANDPARTS tmschema/taskbandparts.html - STARTPANELPARTS tmschema/startpanelparts.html - MOREPROGRAMSTABSTATES tmschema/moreprogramstabstates.html - SOFTWAREEXPLORERSTATES tmschema/softwareexplorerstates.html - OPENBOXSTATES tmschema/openboxstates.html - MOREPROGRAMSARROWSTATES tmschema/moreprogramsarrowstates.html - MOREPROGRAMSARROWBACKSTATES tmschema/moreprogramsarrowbackstates.html - LOGOFFBUTTONSSTATES tmschema/logoffbuttonsstates.html - MENUBANDPARTS tmschema/menubandparts.html - MENUBANDSTATES tmschema/menubandstates.html - LResources lresources/index.html - LRSComment lresources/lrscomment.html - ObjStreamMaskInherited lresources/objstreammaskinherited.html - ObjStreamMaskChildPos lresources/objstreammaskchildpos.html - ObjStreamMaskInline lresources/objstreammaskinline.html - TFilerSignature lresources/tfilersignature.html - TLRSItemType lresources/tlrsitemtype.html - TLRSORStackItem lresources/tlrsorstackitem.html - PLRSORStackItem lresources/plrsorstackitem.html - TLRSObjectReaderClass lresources/tlrsobjectreaderclass.html - TLRSOWStackItemState lresources/tlrsowstackitemstate.html - TLRSOWStackItem lresources/tlrsowstackitem.html - PLRSOWStackItem lresources/plrsowstackitem.html - TLRSObjectWriterClass lresources/tlrsobjectwriterclass.html - TLRPositionLink lresources/tlrpositionlink.html - PLRPositionLink lresources/plrpositionlink.html - TPropertyToSkip lresources/tpropertytoskip.html - PRemovedProperty lresources/premovedproperty.html - TLRSStreamOriginalFormat lresources/tlrsstreamoriginalformat.html - TLResource lresources/tlresource.html - Name lresources/tlresource.name.html - ValueType lresources/tlresource.valuetype.html - Value lresources/tlresource.value.html - TLResourceList lresources/tlresourcelist.html - Create lresources/tlresourcelist.create.html - Destroy lresources/tlresourcelist.destroy.html - Add lresources/tlresourcelist.add.html - Find lresources/tlresourcelist.find.html - Count lresources/tlresourcelist.count.html - Items lresources/tlresourcelist.items.html - TLazarusResourceStream lresources/tlazarusresourcestream.html - Create lresources/tlazarusresourcestream.create.html - CreateFromID lresources/tlazarusresourcestream.createfromid.html - CreateFromHandle lresources/tlazarusresourcestream.createfromhandle.html - Destroy lresources/tlazarusresourcestream.destroy.html - Write lresources/tlazarusresourcestream.write.html - Res lresources/tlazarusresourcestream.res.html - TAbstractTranslator lresources/tabstracttranslator.html - TranslateStringProperty lresources/tabstracttranslator.translatestringproperty.html - TLRSObjectReader lresources/tlrsobjectreader.html - ReadIntegerContent lresources/tlrsobjectreader.readintegercontent.html - Create lresources/tlrsobjectreader.create.html - Destroy lresources/tlrsobjectreader.destroy.html - NextValue lresources/tlrsobjectreader.nextvalue.html - ReadValue lresources/tlrsobjectreader.readvalue.html - BeginRootComponent lresources/tlrsobjectreader.beginrootcomponent.html - BeginComponent lresources/tlrsobjectreader.begincomponent.html - BeginProperty lresources/tlrsobjectreader.beginproperty.html - GetStackPath lresources/tlrsobjectreader.getstackpath.html - Read lresources/tlrsobjectreader.read.html - ReadBinary lresources/tlrsobjectreader.readbinary.html - ReadFloat lresources/tlrsobjectreader.readfloat.html - ReadSingle lresources/tlrsobjectreader.readsingle.html - ReadCurrency lresources/tlrsobjectreader.readcurrency.html - ReadDate lresources/tlrsobjectreader.readdate.html - ReadIdent lresources/tlrsobjectreader.readident.html - ReadInt8 lresources/tlrsobjectreader.readint8.html - ReadInt16 lresources/tlrsobjectreader.readint16.html - ReadInt32 lresources/tlrsobjectreader.readint32.html - ReadInt64 lresources/tlrsobjectreader.readint64.html - ReadSet lresources/tlrsobjectreader.readset.html - ReadStr lresources/tlrsobjectreader.readstr.html - ReadString lresources/tlrsobjectreader.readstring.html - ReadWideString lresources/tlrsobjectreader.readwidestring.html - ReadUnicodeString lresources/tlrsobjectreader.readunicodestring.html - SkipComponent lresources/tlrsobjectreader.skipcomponent.html - SkipValue lresources/tlrsobjectreader.skipvalue.html - Stream lresources/tlrsobjectreader.stream.html - Reader lresources/tlrsobjectreader.reader.html - TLRSObjectWriter lresources/tlrsobjectwriter.html - FlushBuffer lresources/tlrsobjectwriter.flushbuffer.html - WriteValue lresources/tlrsobjectwriter.writevalue.html - WriteStr lresources/tlrsobjectwriter.writestr.html - WriteIntegerContent lresources/tlrsobjectwriter.writeintegercontent.html - WriteWordContent lresources/tlrsobjectwriter.writewordcontent.html - WriteInt64Content lresources/tlrsobjectwriter.writeint64content.html - WriteSingleContent lresources/tlrsobjectwriter.writesinglecontent.html - WriteDoubleContent lresources/tlrsobjectwriter.writedoublecontent.html - WriteExtendedContent lresources/tlrsobjectwriter.writeextendedcontent.html - WriteCurrencyContent lresources/tlrsobjectwriter.writecurrencycontent.html - WriteWideStringContent lresources/tlrsobjectwriter.writewidestringcontent.html - WriteWordsReversed lresources/tlrsobjectwriter.writewordsreversed.html - WriteNulls lresources/tlrsobjectwriter.writenulls.html - Create lresources/tlrsobjectwriter.create.html - Destroy lresources/tlrsobjectwriter.destroy.html - BeginCollection lresources/tlrsobjectwriter.begincollection.html - BeginComponent lresources/tlrsobjectwriter.begincomponent.html - BeginList lresources/tlrsobjectwriter.beginlist.html - EndList lresources/tlrsobjectwriter.endlist.html - BeginProperty lresources/tlrsobjectwriter.beginproperty.html - EndProperty lresources/tlrsobjectwriter.endproperty.html - GetStackPath lresources/tlrsobjectwriter.getstackpath.html - Write lresources/tlrsobjectwriter.write.html - WriteBinary lresources/tlrsobjectwriter.writebinary.html - WriteBoolean lresources/tlrsobjectwriter.writeboolean.html - WriteFloat lresources/tlrsobjectwriter.writefloat.html - WriteSingle lresources/tlrsobjectwriter.writesingle.html - WriteCurrency lresources/tlrsobjectwriter.writecurrency.html - WriteDate lresources/tlrsobjectwriter.writedate.html - WriteIdent lresources/tlrsobjectwriter.writeident.html - WriteInteger lresources/tlrsobjectwriter.writeinteger.html - WriteMethodName lresources/tlrsobjectwriter.writemethodname.html - WriteSet lresources/tlrsobjectwriter.writeset.html - WriteString lresources/tlrsobjectwriter.writestring.html - WriteWideString lresources/tlrsobjectwriter.writewidestring.html - WriteUnicodeString lresources/tlrsobjectwriter.writeunicodestring.html - WriteEmptyInheritedChilds lresources/tlrsobjectwriter.writeemptyinheritedchilds.html - Writer lresources/tlrsobjectwriter.writer.html - TLRPositionLinks lresources/tlrpositionlinks.html - Create lresources/tlrpositionlinks.create.html - Destroy lresources/tlrpositionlinks.destroy.html - Clear lresources/tlrpositionlinks.clear.html - Sort lresources/tlrpositionlinks.sort.html - IndexOf lresources/tlrpositionlinks.indexof.html - IndexOfRange lresources/tlrpositionlinks.indexofrange.html - SetPosition lresources/tlrpositionlinks.setposition.html - Add lresources/tlrpositionlinks.add.html - LFM lresources/tlrpositionlinks.lfm.html - LRS lresources/tlrpositionlinks.lrs.html - Data lresources/tlrpositionlinks.data.html - Count lresources/tlrpositionlinks.count.html - TUTF8Parser lresources/tutf8parser.html - Create lresources/tutf8parser.create.html - Destroy lresources/tutf8parser.destroy.html - CheckToken lresources/tutf8parser.checktoken.html - CheckTokenSymbol lresources/tutf8parser.checktokensymbol.html - Error lresources/tutf8parser.error.html - ErrorFmt lresources/tutf8parser.errorfmt.html - ErrorStr lresources/tutf8parser.errorstr.html - HexToBinary lresources/tutf8parser.hextobinary.html - NextToken lresources/tutf8parser.nexttoken.html - SourcePos lresources/tutf8parser.sourcepos.html - TokenComponentIdent lresources/tutf8parser.tokencomponentident.html - TokenFloat lresources/tutf8parser.tokenfloat.html - TokenInt lresources/tutf8parser.tokenint.html - TokenString lresources/tutf8parser.tokenstring.html - TokenSymbolIs lresources/tutf8parser.tokensymbolis.html - FloatType lresources/tutf8parser.floattype.html - SourceLine lresources/tutf8parser.sourceline.html - SourceColumn lresources/tutf8parser.sourcecolumn.html - Token lresources/tutf8parser.token.html - TCustomLazComponentQueue lresources/tcustomlazcomponentqueue.html - FQueue lresources/tcustomlazcomponentqueue.fqueue.html - ReadComponentSize lresources/tcustomlazcomponentqueue.readcomponentsize.html - Create lresources/tcustomlazcomponentqueue.create.html - Destroy lresources/tcustomlazcomponentqueue.destroy.html - Clear lresources/tcustomlazcomponentqueue.clear.html - Write lresources/tcustomlazcomponentqueue.write.html - CopyFrom lresources/tcustomlazcomponentqueue.copyfrom.html - HasComponent lresources/tcustomlazcomponentqueue.hascomponent.html - ReadComponent lresources/tcustomlazcomponentqueue.readcomponent.html - ConvertComponentAsString lresources/tcustomlazcomponentqueue.convertcomponentasstring.html - OnFindComponentClass lresources/tcustomlazcomponentqueue.onfindcomponentclass.html - TLazComponentQueue lresources/tlazcomponentqueue.html - Name lresources/tlazcomponentqueue.name.html - OnFindComponentClass lresources/tlazcomponentqueue.onfindcomponentclass.html - TPropertiesToSkip lresources/tpropertiestoskip.html - Notify lresources/tpropertiestoskip.notify.html - DoPropertyNotFound lresources/tpropertiestoskip.dopropertynotfound.html - IndexOf lresources/tpropertiestoskip.indexof.html - Add lresources/tpropertiestoskip.add.html - Items lresources/tpropertiestoskip.items.html - InitResourceComponent lresources/initresourcecomponent.html - InitLazResourceComponent lresources/initlazresourcecomponent.html - CreateLRSReader lresources/createlrsreader.html - CreateLRSWriter lresources/createlrswriter.html - GetClassNameFromLRSStream lresources/getclassnamefromlrsstream.html - GetComponentInfoFromLRSStream lresources/getcomponentinfofromlrsstream.html - WriteComponentAsBinaryToStream lresources/writecomponentasbinarytostream.html - ReadComponentFromBinaryStream lresources/readcomponentfrombinarystream.html - WriteComponentAsTextToStream lresources/writecomponentastexttostream.html - ReadComponentFromTextStream lresources/readcomponentfromtextstream.html - SaveComponentToConfig lresources/savecomponenttoconfig.html - LoadComponentFromConfig lresources/loadcomponentfromconfig.html - CompareComponents lresources/comparecomponents.html - CompareMemStreams lresources/comparememstreams.html - BinaryToLazarusResourceCode lresources/binarytolazarusresourcecode.html - LFMtoLRSfile lresources/lfmtolrsfile.html - LFMtoLRSstream lresources/lfmtolrsstream.html - FindLFMClassName lresources/findlfmclassname.html - ReadLFMHeader lresources/readlfmheader.html - ReadLFMHeaderFromFile lresources/readlfmheaderfromfile.html - CreateLFMFile lresources/createlfmfile.html - LRSObjectBinaryToText lresources/lrsobjectbinarytotext.html - LRSObjectTextToBinary lresources/lrsobjecttexttobinary.html - LRSObjectToText lresources/lrsobjecttotext.html - LRSObjectResourceToText lresources/lrsobjectresourcetotext.html - LRSObjectResToText lresources/lrsobjectrestotext.html - TestFormStreamFormat lresources/testformstreamformat.html - FormDataToText lresources/formdatatotext.html - FindResourceLFM lresources/findresourcelfm.html - DefineRectProperty lresources/definerectproperty.html - ReverseBytes lresources/reversebytes.html - ReverseByteOrderInWords lresources/reversebyteorderinwords.html - ConvertLRSExtendedToDouble lresources/convertlrsextendedtodouble.html - ConvertEndianBigDoubleToLRSExtended lresources/convertendianbigdoubletolrsextended.html - ConvertLEDoubleToLRSExtended lresources/convertledoubletolrsextended.html - ReadLRSShortInt lresources/readlrsshortint.html - ReadLRSByte lresources/readlrsbyte.html - ReadLRSSmallInt lresources/readlrssmallint.html - ReadLRSWord lresources/readlrsword.html - ReadLRSInteger lresources/readlrsinteger.html - ReadLRSCardinal lresources/readlrscardinal.html - ReadLRSInt64 lresources/readlrsint64.html - ReadLRSSingle lresources/readlrssingle.html - ReadLRSDouble lresources/readlrsdouble.html - ReadLRSExtended lresources/readlrsextended.html - ReadLRSCurrency lresources/readlrscurrency.html - ReadLRSWideString lresources/readlrswidestring.html - ReadLRSEndianLittleExtendedAsDouble lresources/readlrsendianlittleextendedasdouble.html - ReadLRSValueType lresources/readlrsvaluetype.html - ReadLRSInt64MB lresources/readlrsint64mb.html - WriteLRSSmallInt lresources/writelrssmallint.html - WriteLRSWord lresources/writelrsword.html - WriteLRSInteger lresources/writelrsinteger.html - WriteLRSCardinal lresources/writelrscardinal.html - WriteLRSSingle lresources/writelrssingle.html - WriteLRSDouble lresources/writelrsdouble.html - WriteLRSExtended lresources/writelrsextended.html - WriteLRSInt64 lresources/writelrsint64.html - WriteLRSCurrency lresources/writelrscurrency.html - WriteLRSWideStringContent lresources/writelrswidestringcontent.html - WriteLRSInt64MB lresources/writelrsint64mb.html - WriteLRSReversedWord lresources/writelrsreversedword.html - WriteLRS4BytesReversed lresources/writelrs4bytesreversed.html - WriteLRS8BytesReversed lresources/writelrs8bytesreversed.html - WriteLRS10BytesReversed lresources/writelrs10bytesreversed.html - WriteLRSNull lresources/writelrsnull.html - WriteLRSEndianBigDoubleAsEndianLittleExtended lresources/writelrsendianbigdoubleasendianlittleextended.html - WriteLRSDoubleAsExtended lresources/writelrsdoubleasextended.html - WriteLRSReversedWords lresources/writelrsreversedwords.html - FloatToLFMStr lresources/floattolfmstr.html - CompareLRPositionLinkWithLFMPosition lresources/comparelrpositionlinkwithlfmposition.html - CompareLRPositionLinkWithLRSPosition lresources/comparelrpositionlinkwithlrsposition.html - RegisterPropertyToSkip lresources/registerpropertytoskip.html - Register lresources/register.html - LRSTranslator lresources/lrstranslator.html - LazarusResources lresources/lazarusresources.html - PropertiesToSkip lresources/propertiestoskip.html - LRSObjectReaderClass lresources/lrsobjectreaderclass.html - LRSObjectWriterClass lresources/lrsobjectwriterclass.html - DynQueue dynqueue/index.html - TDynamicQueueItem dynqueue/tdynamicqueueitem.html - PDynamicQueueItem dynqueue/pdynamicqueueitem.html - ListOfPDynamicQueueItem dynqueue/listofpdynamicqueueitem.html - TDynamicDataQueue dynqueue/tdynamicdataqueue.html - Create dynqueue/tdynamicdataqueue.create.html - Destroy dynqueue/tdynamicdataqueue.destroy.html - Clear dynqueue/tdynamicdataqueue.clear.html - ConsistencyCheck dynqueue/tdynamicdataqueue.consistencycheck.html - WriteDebugReport dynqueue/tdynamicdataqueue.writedebugreport.html - Push dynqueue/tdynamicdataqueue.push.html - Pop dynqueue/tdynamicdataqueue.pop.html - Top dynqueue/tdynamicdataqueue.top.html - Size dynqueue/tdynamicdataqueue.size.html - MinimumBlockSize dynqueue/tdynamicdataqueue.minimumblocksize.html - MaximumBlockSize dynqueue/tdynamicdataqueue.maximumblocksize.html - LCLClasses lclclasses/index.html - LazLongRec lclclasses/lazlongrec.html - TLCLComponent lclclasses/tlclcomponent.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetWSComponentClass lclclasses/tlclcomponent.getwscomponentclass.html - Create lclclasses/tlclcomponent.create.html - Destroy lclclasses/tlclcomponent.destroy.html - NewInstance lclclasses/tlclcomponent.newinstance.html - RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html - LCLRefCount lclclasses/tlclcomponent.lclrefcount.html - WidgetSetClass lclclasses/tlclcomponent.widgetsetclass.html - IncLCLRefCount - DecLCLRefCount - TLCLReferenceComponent lclclasses/tlclreferencecomponent.html - CreateParams lclclasses/tlclreferencecomponent.createparams.html - DestroyReference lclclasses/tlclreferencecomponent.destroyreference.html - GetReferenceHandle lclclasses/tlclreferencecomponent.getreferencehandle.html - ReferenceCreated lclclasses/tlclreferencecomponent.referencecreated.html - ReferenceDestroying lclclasses/tlclreferencecomponent.referencedestroying.html - ReferenceNeeded lclclasses/tlclreferencecomponent.referenceneeded.html - WSCreateReference lclclasses/tlclreferencecomponent.wscreatereference.html - WSDestroyReference lclclasses/tlclreferencecomponent.wsdestroyreference.html - Destroy lclclasses/tlclreferencecomponent.destroy.html - Handle lclclasses/tlclreferencecomponent.handle.html - ReferenceAllocated lclclasses/tlclreferencecomponent.referenceallocated.html - HandleAllocated - GraphMath graphmath/index.html - GraphMath Operators graphmath/graphmath operators.html - TFloatPoint graphmath/tfloatpoint.html - TBezier graphmath/tbezier.html - PPoint graphmath/ppoint.html - Angles2Coords graphmath/angles2coords.html - Arc2Bezier graphmath/arc2bezier.html - Bezier graphmath/bezier.html - Bezier2Polyline graphmath/bezier2polyline.html - BezierArcPoints graphmath/bezierarcpoints.html - BezierMidPoint graphmath/beziermidpoint.html - Coords2Angles graphmath/coords2angles.html - Distance graphmath/distance.html - EccentricAngle graphmath/eccentricangle.html - EllipseRadialLength graphmath/ellipseradiallength.html - FloatPoint graphmath/floatpoint.html - LineEndPoint graphmath/lineendpoint.html - PolyBezier2Polyline graphmath/polybezier2polyline.html - PolyBezierArcPoints graphmath/polybezierarcpoints.html - Quadrant graphmath/quadrant.html - RadialPoint graphmath/radialpoint.html - SplitBezier graphmath/splitbezier.html - operator +(TFloatPoint, TFloatPoint): TFloatPoint graphmath/op-add-tfloatpoint-tfloatpoint-tfloatpoint.html - operator +(TFloatPoint, Extended): TFloatPoint graphmath/op-add-tfloatpoint-extended-tfloatpoint.html - operator +(Extended, TFloatPoint): TFloatPoint graphmath/op-add-extended-tfloatpoint-tfloatpoint.html - operator +(TFloatPoint, TPoint): TFloatPoint graphmath/op-add-tfloatpoint-tpoint-tfloatpoint.html - operator +(TPoint, TFloatPoint): TFloatPoint graphmath/op-add-tpoint-tfloatpoint-tfloatpoint.html - operator -(TFloatPoint, Extended): TFloatPoint graphmath/op-sub-tfloatpoint-extended-tfloatpoint.html - operator -(TFloatPoint, TFloatPoint): TFloatPoint graphmath/op-sub-tfloatpoint-tfloatpoint-tfloatpoint.html - operator -(TFloatPoint, TPoint): TFloatPoint graphmath/op-sub-tfloatpoint-tpoint-tfloatpoint.html - operator -(TPoint, TFloatPoint): TFloatPoint graphmath/op-sub-tpoint-tfloatpoint-tfloatpoint.html - operator *(TFloatPoint, TFloatPoint): TFloatPoint graphmath/op-mul-tfloatpoint-tfloatpoint-tfloatpoint.html - operator *(TFloatPoint, Extended): TFloatPoint graphmath/op-mul-tfloatpoint-extended-tfloatpoint.html - operator *(Extended, TFloatPoint): TFloatPoint graphmath/op-mul-extended-tfloatpoint-tfloatpoint.html - operator *(TFloatPoint, TPoint): TFloatPoint graphmath/op-mul-tfloatpoint-tpoint-tfloatpoint.html - operator *(TPoint, TFloatPoint): TFloatPoint graphmath/op-mul-tpoint-tfloatpoint-tfloatpoint.html - operator /(TFloatPoint, TFloatPoint): TFloatPoint graphmath/op-div-tfloatpoint-tfloatpoint-tfloatpoint.html - operator /(TFloatPoint, Extended): TFloatPoint graphmath/op-div-tfloatpoint-extended-tfloatpoint.html - operator /(TFloatPoint, TPoint): TFloatPoint graphmath/op-div-tfloatpoint-tpoint-tfloatpoint.html - operator /(TPoint, TFloatPoint): TFloatPoint graphmath/op-div-tpoint-tfloatpoint-tfloatpoint.html - operator =(TPoint, TPoint): Boolean graphmath/op-equal-tpoint-tpoint-boolean.html - operator =(TFloatPoint, TFloatPoint): Boolean graphmath/op-equal-tfloatpoint-tfloatpoint-boolean.html - operator :=(TFloatPoint): TPoint graphmath/op-assign-tfloatpoint-tpoint.html - operator :=(TPoint): TFloatPoint graphmath/op-assign-tpoint-tfloatpoint.html - operator =(TRect, TRect): Boolean graphmath/op-equal-trect-trect-boolean.html - GraphType graphtype/index.html - DefaultByteOrder graphtype/defaultbyteorder.html - TGraphicsColor graphtype/tgraphicscolor.html - TGraphicsFillStyle graphtype/tgraphicsfillstyle.html - TGraphicsBevelCut graphtype/tgraphicsbevelcut.html - TGraphicsDrawEffect graphtype/tgraphicsdraweffect.html - TRawImageColorFormat graphtype/trawimagecolorformat.html - TRawImageByteOrder graphtype/trawimagebyteorder.html - TRawImageBitOrder graphtype/trawimagebitorder.html - TRawImageLineEnd graphtype/trawimagelineend.html - TRawImageLineOrder graphtype/trawimagelineorder.html - TRawImageQueryFlag graphtype/trawimagequeryflag.html - TRawImageQueryFlags graphtype/trawimagequeryflags.html - PRawImageDescription graphtype/prawimagedescription.html - TRawImagePosition graphtype/trawimageposition.html - PRawImagePosition graphtype/prawimageposition.html - PRawImage graphtype/prawimage.html - PRawImageLineStarts graphtype/prawimagelinestarts.html - TRawImageDescription graphtype/trawimagedescription.html - Format graphtype/trawimagedescription.format.html - Width graphtype/trawimagedescription.width.html - Height graphtype/trawimagedescription.height.html - Depth graphtype/trawimagedescription.depth.html - BitOrder graphtype/trawimagedescription.bitorder.html - ByteOrder graphtype/trawimagedescription.byteorder.html - LineOrder graphtype/trawimagedescription.lineorder.html - LineEnd graphtype/trawimagedescription.lineend.html - BitsPerPixel graphtype/trawimagedescription.bitsperpixel.html - RedPrec graphtype/trawimagedescription.redprec.html - RedShift graphtype/trawimagedescription.redshift.html - GreenPrec graphtype/trawimagedescription.greenprec.html - GreenShift graphtype/trawimagedescription.greenshift.html - BluePrec graphtype/trawimagedescription.blueprec.html - BlueShift graphtype/trawimagedescription.blueshift.html - AlphaPrec graphtype/trawimagedescription.alphaprec.html - AlphaShift graphtype/trawimagedescription.alphashift.html - MaskBitsPerPixel graphtype/trawimagedescription.maskbitsperpixel.html - MaskShift graphtype/trawimagedescription.maskshift.html - MaskLineEnd graphtype/trawimagedescription.masklineend.html - MaskBitOrder graphtype/trawimagedescription.maskbitorder.html - PaletteColorCount graphtype/trawimagedescription.palettecolorcount.html - PaletteBitsPerIndex graphtype/trawimagedescription.palettebitsperindex.html - PaletteShift graphtype/trawimagedescription.paletteshift.html - PaletteLineEnd graphtype/trawimagedescription.palettelineend.html - PaletteBitOrder graphtype/trawimagedescription.palettebitorder.html - PaletteByteOrder graphtype/trawimagedescription.palettebyteorder.html - Init graphtype/trawimagedescription.init.html - Init_BPP1 graphtype/trawimagedescription.init_bpp1.html - Init_BPP16_R5G6B5 graphtype/trawimagedescription.init_bpp16_r5g6b5.html - Init_BPP24_R8G8B8_BIO_TTB graphtype/trawimagedescription.init_bpp24_r8g8b8_bio_ttb.html - Init_BPP24_R8G8B8_BIO_TTB_UpsideDown graphtype/trawimagedescription.init_bpp24_r8g8b8_bio_ttb_upsidedown.html - Init_BPP32_A8R8G8B8_BIO_TTB graphtype/trawimagedescription.init_bpp32_a8r8g8b8_bio_ttb.html - Init_BPP32_R8G8B8A8_BIO_TTB graphtype/trawimagedescription.init_bpp32_r8g8b8a8_bio_ttb.html - Init_BPP24_B8G8R8_BIO_TTB graphtype/trawimagedescription.init_bpp24_b8g8r8_bio_ttb.html - Init_BPP24_B8G8R8_M1_BIO_TTB graphtype/trawimagedescription.init_bpp24_b8g8r8_m1_bio_ttb.html - Init_BPP32_B8G8R8_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8_bio_ttb.html - Init_BPP32_B8G8R8_M1_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8_m1_bio_ttb.html - Init_BPP32_B8G8R8A8_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8a8_bio_ttb.html - Init_BPP32_B8G8R8A8_M1_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8a8_m1_bio_ttb.html - GetDescriptionFromMask graphtype/trawimagedescription.getdescriptionfrommask.html - GetDescriptionFromAlpha graphtype/trawimagedescription.getdescriptionfromalpha.html - GetRGBIndices graphtype/trawimagedescription.getrgbindices.html - BytesPerLine graphtype/trawimagedescription.bytesperline.html - BitsPerLine graphtype/trawimagedescription.bitsperline.html - MaskBytesPerLine graphtype/trawimagedescription.maskbytesperline.html - MaskBitsPerLine graphtype/trawimagedescription.maskbitsperline.html - AsString graphtype/trawimagedescription.asstring.html - IsEqual graphtype/trawimagedescription.isequal.html - TRawImage graphtype/trawimage.html - Description graphtype/trawimage.description.html - Data graphtype/trawimage.data.html - DataSize graphtype/trawimage.datasize.html - Mask graphtype/trawimage.mask.html - MaskSize graphtype/trawimage.masksize.html - Palette graphtype/trawimage.palette.html - PaletteSize graphtype/trawimage.palettesize.html - Init graphtype/trawimage.init.html - CreateData graphtype/trawimage.createdata.html - FreeData graphtype/trawimage.freedata.html - ReleaseData graphtype/trawimage.releasedata.html - ExtractRect graphtype/trawimage.extractrect.html - GetLineStart graphtype/trawimage.getlinestart.html - PerformEffect graphtype/trawimage.performeffect.html - ReadBits graphtype/trawimage.readbits.html - ReadChannels graphtype/trawimage.readchannels.html - ReadMask graphtype/trawimage.readmask.html - WriteBits graphtype/trawimage.writebits.html - WriteChannels graphtype/trawimage.writechannels.html - WriteMask graphtype/trawimage.writemask.html - IsMasked graphtype/trawimage.ismasked.html - IsTransparent graphtype/trawimage.istransparent.html - IsEqual graphtype/trawimage.isequal.html - TRawImageLineStarts graphtype/trawimagelinestarts.html - Positions graphtype/trawimagelinestarts.positions.html - Init graphtype/trawimagelinestarts.init.html - GetPosition graphtype/trawimagelinestarts.getposition.html - GetBytesPerLine graphtype/getbytesperline.html - GetBitsPerLine graphtype/getbitsperline.html - CopyImageData graphtype/copyimagedata.html - RawImageQueryFlagsToString graphtype/rawimagequeryflagstostring.html - MissingBits graphtype/missingbits.html - LMessages lmessages/index.html - LM_USER lmessages/lm_user.html - WM_USER lmessages/wm_user.html - LM_LCL lmessages/lm_lcl.html - LM_ACTIVATEITEM lmessages/lm_activateitem.html - LM_CHANGED lmessages/lm_changed.html - LM_FOCUS lmessages/lm_focus.html - LM_CLICKED lmessages/lm_clicked.html - LM_RELEASED lmessages/lm_released.html - LM_ENTER lmessages/lm_enter.html - LM_LEAVE lmessages/lm_leave.html - LM_CHECKRESIZE lmessages/lm_checkresize.html - LM_SETEDITABLE lmessages/lm_seteditable.html - LM_MOVEWORD lmessages/lm_moveword.html - LM_MOVEPAGE lmessages/lm_movepage.html - LM_MOVETOROW lmessages/lm_movetorow.html - LM_MOVETOCOLUMN lmessages/lm_movetocolumn.html - LM_KILLCHAR lmessages/lm_killchar.html - LM_KILLWORD lmessages/lm_killword.html - LM_KILLLINE lmessages/lm_killline.html - LM_CONFIGUREEVENT lmessages/lm_configureevent.html - LM_EXIT lmessages/lm_exit.html - LM_CLOSEQUERY lmessages/lm_closequery.html - LM_DRAGSTART lmessages/lm_dragstart.html - LM_QUIT lmessages/lm_quit.html - LM_MONTHCHANGED lmessages/lm_monthchanged.html - LM_YEARCHANGED lmessages/lm_yearchanged.html - LM_DAYCHANGED lmessages/lm_daychanged.html - LM_MOUSEFIRST2 lmessages/lm_mousefirst2.html - LM_LBUTTONTRIPLECLK lmessages/lm_lbuttontripleclk.html - LM_LBUTTONQUADCLK lmessages/lm_lbuttonquadclk.html - LM_MBUTTONTRIPLECLK lmessages/lm_mbuttontripleclk.html - LM_MBUTTONQUADCLK lmessages/lm_mbuttonquadclk.html - LM_RBUTTONTRIPLECLK lmessages/lm_rbuttontripleclk.html - LM_RBUTTONQUADCLK lmessages/lm_rbuttonquadclk.html - LM_MOUSEENTER lmessages/lm_mouseenter.html - LM_MOUSELEAVE lmessages/lm_mouseleave.html - LM_XBUTTONTRIPLECLK lmessages/lm_xbuttontripleclk.html - LM_XBUTTONQUADCLK lmessages/lm_xbuttonquadclk.html - LM_MOUSELAST2 lmessages/lm_mouselast2.html - LM_GRABFOCUS lmessages/lm_grabfocus.html - LM_DRAWLISTITEM lmessages/lm_drawlistitem.html - LM_INTERFACEFIRST lmessages/lm_interfacefirst.html - LM_INTERFACELAST lmessages/lm_interfacelast.html - LM_UNKNOWN lmessages/lm_unknown.html - SC_SIZE lmessages/sc_size.html - SC_MOVE lmessages/sc_move.html - SC_MINIMIZE lmessages/sc_minimize.html - SC_MAXIMIZE lmessages/sc_maximize.html - SC_NEXTWINDOW lmessages/sc_nextwindow.html - SC_PREVWINDOW lmessages/sc_prevwindow.html - SC_CLOSE lmessages/sc_close.html - SC_VSCROLL lmessages/sc_vscroll.html - SC_HSCROLL lmessages/sc_hscroll.html - SC_MOUSEMENU lmessages/sc_mousemenu.html - SC_KEYMENU lmessages/sc_keymenu.html - SC_ARRANGE lmessages/sc_arrange.html - SC_RESTORE lmessages/sc_restore.html - SC_TASKLIST lmessages/sc_tasklist.html - SC_SCREENSAVE lmessages/sc_screensave.html - SC_HOTKEY lmessages/sc_hotkey.html - SC_DEFAULT lmessages/sc_default.html - SC_MONITORPOWER lmessages/sc_monitorpower.html - SC_CONTEXTHELP lmessages/sc_contexthelp.html - SC_SEPARATOR lmessages/sc_separator.html - LM_NULL lmessages/lm_null.html - LM_CREATE lmessages/lm_create.html - LM_DESTROY lmessages/lm_destroy.html - LM_MOVE lmessages/lm_move.html - LM_SIZE lmessages/lm_size.html - LM_ACTIVATE lmessages/lm_activate.html - LM_SETFOCUS lmessages/lm_setfocus.html - LM_KILLFOCUS lmessages/lm_killfocus.html - LM_ENABLE lmessages/lm_enable.html - LM_GETTEXTLENGTH lmessages/lm_gettextlength.html - LM_PAINT lmessages/lm_paint.html - LM_ERASEBKGND lmessages/lm_erasebkgnd.html - LM_SHOWWINDOW lmessages/lm_showwindow.html - LM_CANCELMODE lmessages/lm_cancelmode.html - LM_SETCURSOR lmessages/lm_setcursor.html - LM_DRAWITEM lmessages/lm_drawitem.html - LM_MEASUREITEM lmessages/lm_measureitem.html - LM_DELETEITEM lmessages/lm_deleteitem.html - LM_VKEYTOITEM lmessages/lm_vkeytoitem.html - LM_CHARTOITEM lmessages/lm_chartoitem.html - LM_SETFONT lmessages/lm_setfont.html - LM_COMPAREITEM lmessages/lm_compareitem.html - LM_WINDOWPOSCHANGING lmessages/lm_windowposchanging.html - LM_WINDOWPOSCHANGED lmessages/lm_windowposchanged.html - LM_NOTIFY lmessages/lm_notify.html - LM_HELP lmessages/lm_help.html - LM_NOTIFYFORMAT lmessages/lm_notifyformat.html - LM_CONTEXTMENU lmessages/lm_contextmenu.html - LM_NCCALCSIZE lmessages/lm_nccalcsize.html - LM_NCHITTEST lmessages/lm_nchittest.html - LM_NCPAINT lmessages/lm_ncpaint.html - LM_NCACTIVATE lmessages/lm_ncactivate.html - LM_GETDLGCODE lmessages/lm_getdlgcode.html - LM_NCMOUSEMOVE lmessages/lm_ncmousemove.html - LM_NCLBUTTONDOWN lmessages/lm_nclbuttondown.html - LM_NCLBUTTONUP lmessages/lm_nclbuttonup.html - LM_NCLBUTTONDBLCLK lmessages/lm_nclbuttondblclk.html - LM_KEYFIRST lmessages/lm_keyfirst.html - LM_KEYDOWN lmessages/lm_keydown.html - LM_KEYUP lmessages/lm_keyup.html - LM_CHAR lmessages/lm_char.html - LM_SYSKEYDOWN lmessages/lm_syskeydown.html - LM_SYSKEYUP lmessages/lm_syskeyup.html - LM_SYSCHAR lmessages/lm_syschar.html - LM_KEYLAST lmessages/lm_keylast.html - LM_COMMAND lmessages/lm_command.html - LM_SYSCOMMAND lmessages/lm_syscommand.html - LM_TIMER lmessages/lm_timer.html - LM_HSCROLL lmessages/lm_hscroll.html - LM_VSCROLL lmessages/lm_vscroll.html - LM_CTLCOLORMSGBOX lmessages/lm_ctlcolormsgbox.html - LM_CTLCOLOREDIT lmessages/lm_ctlcoloredit.html - LM_CTLCOLORLISTBOX lmessages/lm_ctlcolorlistbox.html - LM_CTLCOLORBTN lmessages/lm_ctlcolorbtn.html - LM_CTLCOLORDLG lmessages/lm_ctlcolordlg.html - LM_CTLCOLORSCROLLBAR lmessages/lm_ctlcolorscrollbar.html - LM_CTLCOLORSTATIC lmessages/lm_ctlcolorstatic.html - LM_MOUSEFIRST lmessages/lm_mousefirst.html - LM_MOUSEMOVE lmessages/lm_mousemove.html - LM_LBUTTONDOWN lmessages/lm_lbuttondown.html - LM_LBUTTONUP lmessages/lm_lbuttonup.html - LM_LBUTTONDBLCLK lmessages/lm_lbuttondblclk.html - LM_RBUTTONDOWN lmessages/lm_rbuttondown.html - LM_RBUTTONUP lmessages/lm_rbuttonup.html - LM_RBUTTONDBLCLK lmessages/lm_rbuttondblclk.html - LM_MBUTTONDOWN lmessages/lm_mbuttondown.html - LM_MBUTTONUP lmessages/lm_mbuttonup.html - LM_MBUTTONDBLCLK lmessages/lm_mbuttondblclk.html - LM_MOUSEWHEEL lmessages/lm_mousewheel.html - LM_XBUTTONDOWN lmessages/lm_xbuttondown.html - LM_XBUTTONUP lmessages/lm_xbuttonup.html - LM_XBUTTONDBLCLK lmessages/lm_xbuttondblclk.html - LM_MOUSELAST lmessages/lm_mouselast.html - LM_PARENTNOTIFY lmessages/lm_parentnotify.html - LM_CAPTURECHANGED lmessages/lm_capturechanged.html - LM_DROPFILES lmessages/lm_dropfiles.html - LM_SELCHANGE lmessages/lm_selchange.html - LM_CUT lmessages/lm_cut.html - LM_COPY lmessages/lm_copy.html - LM_PASTE lmessages/lm_paste.html - LM_CLEAR lmessages/lm_clear.html - CM_BASE lmessages/cm_base.html - CM_LCLOFFSET lmessages/cm_lcloffset.html - CM_ACTIVATE lmessages/cm_activate.html - CM_DEACTIVATE lmessages/cm_deactivate.html - CM_GOTFOCUS lmessages/cm_gotfocus.html - CM_LOSTFOCUS lmessages/cm_lostfocus.html - CM_CANCELMODE lmessages/cm_cancelmode.html - CM_DIALOGKEY lmessages/cm_dialogkey.html - CM_DIALOGCHAR lmessages/cm_dialogchar.html - CM_FOCUSCHANGED lmessages/cm_focuschanged.html - CM_PARENTFONTCHANGED lmessages/cm_parentfontchanged.html - CM_PARENTCOLORCHANGED lmessages/cm_parentcolorchanged.html - CM_HITTEST lmessages/cm_hittest.html - CM_VISIBLECHANGED lmessages/cm_visiblechanged.html - CM_ENABLEDCHANGED lmessages/cm_enabledchanged.html - CM_COLORCHANGED lmessages/cm_colorchanged.html - CM_FONTCHANGED lmessages/cm_fontchanged.html - CM_CURSORCHANGED lmessages/cm_cursorchanged.html - CM_CTL3DCHANGED lmessages/cm_ctl3dchanged.html - CM_PARENTCTL3DCHANGED lmessages/cm_parentctl3dchanged.html - CM_TEXTCHANGED lmessages/cm_textchanged.html - CM_MOUSEENTER lmessages/cm_mouseenter.html - CM_MOUSELEAVE lmessages/cm_mouseleave.html - CM_MENUCHANGED lmessages/cm_menuchanged.html - CM_APPKEYDOWN lmessages/cm_appkeydown.html - CM_APPSYSCOMMAND lmessages/cm_appsyscommand.html - CM_BUTTONPRESSED lmessages/cm_buttonpressed.html - CM_SHOWINGCHANGED lmessages/cm_showingchanged.html - CM_ENTER lmessages/cm_enter.html - CM_EXIT lmessages/cm_exit.html - CM_DESIGNHITTEST lmessages/cm_designhittest.html - CM_ICONCHANGED lmessages/cm_iconchanged.html - CM_WANTSPECIALKEY lmessages/cm_wantspecialkey.html - CM_INVOKEHELP lmessages/cm_invokehelp.html - CM_WINDOWHOOK lmessages/cm_windowhook.html - CM_RELEASE lmessages/cm_release.html - CM_SHOWHINTCHANGED lmessages/cm_showhintchanged.html - CM_PARENTSHOWHINTCHANGED lmessages/cm_parentshowhintchanged.html - CM_SYSCOLORCHANGE lmessages/cm_syscolorchange.html - CM_WININICHANGE lmessages/cm_wininichange.html - CM_FONTCHANGE lmessages/cm_fontchange.html - CM_TIMECHANGE lmessages/cm_timechange.html - CM_TABSTOPCHANGED lmessages/cm_tabstopchanged.html - CM_UIACTIVATE lmessages/cm_uiactivate.html - CM_UIDEACTIVATE lmessages/cm_uideactivate.html - CM_DOCWINDOWACTIVATE lmessages/cm_docwindowactivate.html - CM_CONTROLLISTCHANGE lmessages/cm_controllistchange.html - CM_GETDATALINK lmessages/cm_getdatalink.html - CM_CHILDKEY lmessages/cm_childkey.html - CM_DRAG lmessages/cm_drag.html - CM_HINTSHOW lmessages/cm_hintshow.html - CM_DIALOGHANDLE lmessages/cm_dialoghandle.html - CM_ISTOOLCONTROL lmessages/cm_istoolcontrol.html - CM_RECREATEWND lmessages/cm_recreatewnd.html - CM_INVALIDATE lmessages/cm_invalidate.html - CM_SYSFONTCHANGED lmessages/cm_sysfontchanged.html - CM_CONTROLCHANGE lmessages/cm_controlchange.html - CM_CHANGED lmessages/cm_changed.html - CM_DOCKCLIENT lmessages/cm_dockclient.html - CM_UNDOCKCLIENT lmessages/cm_undockclient.html - CM_FLOAT lmessages/cm_float.html - CM_BORDERCHANGED lmessages/cm_borderchanged.html - CM_BIDIMODECHANGED lmessages/cm_bidimodechanged.html - CM_PARENTBIDIMODECHANGED lmessages/cm_parentbidimodechanged.html - CM_ALLCHILDRENFLIPPED lmessages/cm_allchildrenflipped.html - CM_ACTIONUPDATE lmessages/cm_actionupdate.html - CM_ACTIONEXECUTE lmessages/cm_actionexecute.html - CM_HINTSHOWPAUSE lmessages/cm_hintshowpause.html - CM_DOCKNOTIFICATION lmessages/cm_docknotification.html - CM_MOUSEWHEEL lmessages/cm_mousewheel.html - CM_ISSHORTCUT lmessages/cm_isshortcut.html - CM_UPDATEACTIONS lmessages/cm_updateactions.html - CM_INVALIDATEDOCKHOST lmessages/cm_invalidatedockhost.html - CM_SETACTIVECONTROL lmessages/cm_setactivecontrol.html - CM_POPUPHWNDDESTROY lmessages/cm_popuphwnddestroy.html - CM_CREATEPOPUP lmessages/cm_createpopup.html - CM_DESTROYHANDLE lmessages/cm_destroyhandle.html - CM_MOUSEACTIVATE lmessages/cm_mouseactivate.html - CM_CONTROLLISTCHANGING lmessages/cm_controllistchanging.html - CM_BUFFEREDPRINTCLIENT lmessages/cm_bufferedprintclient.html - CM_UNTHEMECONTROL lmessages/cm_unthemecontrol.html - CM_DOUBLEBUFFEREDCHANGED lmessages/cm_doublebufferedchanged.html - CM_PARENTDOUBLEBUFFEREDCHANGED lmessages/cm_parentdoublebufferedchanged.html - CM_THEMECHANGED lmessages/cm_themechanged.html - CM_GESTURE lmessages/cm_gesture.html - CM_CUSTOMGESTURESCHANGED lmessages/cm_customgestureschanged.html - CM_GESTUREMANAGERCHANGED lmessages/cm_gesturemanagerchanged.html - CM_STANDARDGESTURESCHANGED lmessages/cm_standardgestureschanged.html - CM_INPUTLANGCHANGE lmessages/cm_inputlangchange.html - CM_TABLETOPTIONSCHANGED lmessages/cm_tabletoptionschanged.html - CM_PARENTTABLETOPTIONSCHANGED lmessages/cm_parenttabletoptionschanged.html - CM_APPSHOWBTNGLYPHCHANGED lmessages/cm_appshowbtnglyphchanged.html - CM_APPSHOWMENUGLYPHCHANGED lmessages/cm_appshowmenuglyphchanged.html - CN_BASE lmessages/cn_base.html - CN_CHARTOITEM lmessages/cn_chartoitem.html - CN_COMMAND lmessages/cn_command.html - CN_COMPAREITEM lmessages/cn_compareitem.html - CN_CTLCOLORBTN lmessages/cn_ctlcolorbtn.html - CN_CTLCOLORDLG lmessages/cn_ctlcolordlg.html - CN_CTLCOLOREDIT lmessages/cn_ctlcoloredit.html - CN_CTLCOLORLISTBOX lmessages/cn_ctlcolorlistbox.html - CN_CTLCOLORMSGBOX lmessages/cn_ctlcolormsgbox.html - CN_CTLCOLORSCROLLBAR lmessages/cn_ctlcolorscrollbar.html - CN_CTLCOLORSTATIC lmessages/cn_ctlcolorstatic.html - CN_DELETEITEM lmessages/cn_deleteitem.html - CN_DRAWITEM lmessages/cn_drawitem.html - CN_HSCROLL lmessages/cn_hscroll.html - CN_MEASUREITEM lmessages/cn_measureitem.html - CN_PARENTNOTIFY lmessages/cn_parentnotify.html - CN_VKEYTOITEM lmessages/cn_vkeytoitem.html - CN_VSCROLL lmessages/cn_vscroll.html - CN_KEYDOWN lmessages/cn_keydown.html - CN_KEYUP lmessages/cn_keyup.html - CN_CHAR lmessages/cn_char.html - CN_SYSKEYUP lmessages/cn_syskeyup.html - CN_SYSKEYDOWN lmessages/cn_syskeydown.html - CN_SYSCHAR lmessages/cn_syschar.html - CN_NOTIFY lmessages/cn_notify.html - WA_INACTIVE lmessages/wa_inactive.html - WA_ACTIVE lmessages/wa_active.html - WA_CLICKACTIVE lmessages/wa_clickactive.html - CBN_ERRSPACE lmessages/cbn_errspace.html - CBN_SELCHANGE lmessages/cbn_selchange.html - CBN_DBLCLK lmessages/cbn_dblclk.html - CBN_SETFOCUS lmessages/cbn_setfocus.html - CBN_KILLFOCUS lmessages/cbn_killfocus.html - CBN_EDITCHANGE lmessages/cbn_editchange.html - CBN_EDITUPDATE lmessages/cbn_editupdate.html - CBN_DROPDOWN lmessages/cbn_dropdown.html - CBN_CLOSEUP lmessages/cbn_closeup.html - CBN_SELENDOK lmessages/cbn_selendok.html - CBN_SELENDCANCEL lmessages/cbn_selendcancel.html - TLMDrawItems lmessages/tlmdrawitems.html - TLMDrawListItem lmessages/tlmdrawlistitem.html - TLMMeasureItem lmessages/tlmmeasureitem.html - TLMNoParams lmessages/tlmnoparams.html - TLMEraseBkgnd lmessages/tlmerasebkgnd.html - TLMGetText lmessages/tlmgettext.html - TLMGetTextLength lmessages/tlmgettextlength.html - TLMKey lmessages/tlmkey.html - TLMChar lmessages/tlmchar.html - TLMKeyDown lmessages/tlmkeydown.html - TLMKeyUp lmessages/tlmkeyup.html - TLMSysChar lmessages/tlmsyschar.html - TLMSysKeyDown lmessages/tlmsyskeydown.html - TLMSysKeyUp lmessages/tlmsyskeyup.html - TCMWantSpecialKey lmessages/tcmwantspecialkey.html - TLMCut lmessages/tlmcut.html - TLMCopy lmessages/tlmcopy.html - TLMPaste lmessages/tlmpaste.html - TLMSetCursor lmessages/tlmsetcursor.html - TLMMouse lmessages/tlmmouse.html - TLMMouseMove lmessages/tlmmousemove.html - TLMMove lmessages/tlmmove.html - TLMActivate lmessages/tlmactivate.html - TLMNCActivate lmessages/tlmncactivate.html - TLMNotify lmessages/tlmnotify.html - TLMNotifyFormat lmessages/tlmnotifyformat.html - TLMPaint lmessages/tlmpaint.html - PWindowPos lmessages/pwindowpos.html - tagWINDOWPOS lmessages/tagwindowpos.html - TWindowPos lmessages/twindowpos.html - WINDOWPOS lmessages/windowpos.html - TLMWindowPosMsg lmessages/tlmwindowposmsg.html - TLMWindowPosChanged lmessages/tlmwindowposchanged.html - TLMWindowPosChanging lmessages/tlmwindowposchanging.html - PNCCalcSizeParams lmessages/pnccalcsizeparams.html - tagNCCalcSize_Params lmessages/tagnccalcsize_params.html - TNCCalcSizeParams lmessages/tnccalcsizeparams.html - ncCalcSizeParams lmessages/nccalcsizeparams.html - TLMNCCalcSize lmessages/tlmnccalcsize.html - TLMSysColorChange lmessages/tlmsyscolorchange.html - TLMSysCommand lmessages/tlmsyscommand.html - TLMSysDeadChar lmessages/tlmsysdeadchar.html - TLMSystemError lmessages/tlmsystemerror.html - TLMTimeChange lmessages/tlmtimechange.html - TLMSetText lmessages/tlmsettext.html - PLMMouseEvent lmessages/plmmouseevent.html - TLMMouseEvent lmessages/tlmmouseevent.html - TLMLButtonDown lmessages/tlmlbuttondown.html - TLMRButtonDown lmessages/tlmrbuttondown.html - TLMMButtonDown lmessages/tlmmbuttondown.html - TLMXButtonDown lmessages/tlmxbuttondown.html - TLMLButtonDblClk lmessages/tlmlbuttondblclk.html - TLMRButtonDblClk lmessages/tlmrbuttondblclk.html - TLMMButtonDblClk lmessages/tlmmbuttondblclk.html - TLMXButtonDblClk lmessages/tlmxbuttondblclk.html - TLMLButtonTripleClk lmessages/tlmlbuttontripleclk.html - TLMRButtonTripleClk lmessages/tlmrbuttontripleclk.html - TLMMButtonTripleClk lmessages/tlmmbuttontripleclk.html - TLMXButtonTripleClk lmessages/tlmxbuttontripleclk.html - TLMLButtonQuadClk lmessages/tlmlbuttonquadclk.html - TLMRButtonQuadClk lmessages/tlmrbuttonquadclk.html - TLMMButtonQuadClk lmessages/tlmmbuttonquadclk.html - TLMXButtonQuadClk lmessages/tlmxbuttonquadclk.html - TLMLButtonUp lmessages/tlmlbuttonup.html - TLMRButtonUp lmessages/tlmrbuttonup.html - TLMMButtonUp lmessages/tlmmbuttonup.html - TLMXButtonUp lmessages/tlmxbuttonup.html - TLMSetFocus lmessages/tlmsetfocus.html - TLMSize lmessages/tlmsize.html - PLMessage lmessages/plmessage.html - TLMessage lmessages/tlmessage.html - TLMEnter lmessages/tlmenter.html - TLMExit lmessages/tlmexit.html - TLMScroll lmessages/tlmscroll.html - TLMHScroll lmessages/tlmhscroll.html - TLMVScroll lmessages/tlmvscroll.html - TLMShowWindow lmessages/tlmshowwindow.html - TLMKILLFOCUS lmessages/tlmkillfocus.html - TLMNCHITTEST lmessages/tlmnchittest.html - TLMDestroy lmessages/tlmdestroy.html - TLMCommand lmessages/tlmcommand.html - TLMContextMenu lmessages/tlmcontextmenu.html - TLMHelp lmessages/tlmhelp.html - GetMessageName lmessages/getmessagename.html - InterfaceBase interfacebase/index.html - LCLPlatformDirNames interfacebase/lclplatformdirnames.html - LCL_CAPABILITY_NO interfacebase/lcl_capability_no.html - LCL_CAPABILITY_YES interfacebase/lcl_capability_yes.html - PEventHandler interfacebase/peventhandler.html - PProcessEventHandler interfacebase/pprocesseventhandler.html - PPipeEventHandler interfacebase/ppipeeventhandler.html - PSocketEventHandler interfacebase/psocketeventhandler.html - TChildExitReason interfacebase/tchildexitreason.html - TPipeReason interfacebase/tpipereason.html - TPipeReasons interfacebase/tpipereasons.html - TApplicationMainLoop interfacebase/tapplicationmainloop.html - TWaitHandleEvent interfacebase/twaithandleevent.html - TChildExitEvent interfacebase/tchildexitevent.html - TPipeEvent interfacebase/tpipeevent.html - TSocketEvent interfacebase/tsocketevent.html - TLCLWndMethod interfacebase/tlclwndmethod.html - TLCLPlatform interfacebase/tlclplatform.html - TLCLPlatforms interfacebase/tlclplatforms.html - TLCLCapability interfacebase/tlclcapability.html - TWSTimerProc interfacebase/twstimerproc.html - TWidgetSetClass interfacebase/twidgetsetclass.html - TInputDialogFunction interfacebase/tinputdialogfunction.html - TPromptDialogFunction interfacebase/tpromptdialogfunction.html - TQuestionDialogFunction interfacebase/tquestiondialogfunction.html - TLoadBitmapFunction interfacebase/tloadbitmapfunction.html - TLoadCursorFunction interfacebase/tloadcursorfunction.html - TLoadIconFunction interfacebase/tloadiconfunction.html - TDialogButton interfacebase/tdialogbutton.html - GetDisplayName interfacebase/tdialogbutton.getdisplayname.html - Create interfacebase/tdialogbutton.create.html - Caption interfacebase/tdialogbutton.caption.html - Cancel interfacebase/tdialogbutton.cancel.html - Default interfacebase/tdialogbutton.default.html - ModalResult interfacebase/tdialogbutton.modalresult.html - SetCaption - TDialogButtons interfacebase/tdialogbuttons.html - Destroy interfacebase/tdialogbuttons.destroy.html - Add interfacebase/tdialogbuttons.add.html - FindButton interfacebase/tdialogbuttons.findbutton.html - DefaultButton interfacebase/tdialogbuttons.defaultbutton.html - CancelButton interfacebase/tdialogbuttons.cancelbutton.html - Items interfacebase/tdialogbuttons.items.html - FCancelButton - FDefaultButton - GetItem - SetCancelButton - SetDefaultButton - SetItem - TWidgetSet interfacebase/twidgetset.html - PassCmdLineOptions interfacebase/twidgetset.passcmdlineoptions.html - Create interfacebase/twidgetset.create.html - BeforeDestruction interfacebase/twidgetset.beforedestruction.html - AppInit interfacebase/twidgetset.appinit.html - AppRun interfacebase/twidgetset.apprun.html - AppWaitMessage interfacebase/twidgetset.appwaitmessage.html - AppProcessMessages interfacebase/twidgetset.appprocessmessages.html - AppTerminate interfacebase/twidgetset.appterminate.html - AppMinimize interfacebase/twidgetset.appminimize.html - AppRestore interfacebase/twidgetset.apprestore.html - AppBringToFront interfacebase/twidgetset.appbringtofront.html - AppSetIcon interfacebase/twidgetset.appseticon.html - AppSetTitle interfacebase/twidgetset.appsettitle.html - AppSetVisible interfacebase/twidgetset.appsetvisible.html - AppRemoveStayOnTopFlags interfacebase/twidgetset.appremovestayontopflags.html - AppRestoreStayOnTopFlags interfacebase/twidgetset.apprestorestayontopflags.html - AppSetMainFormOnTaskBar interfacebase/twidgetset.appsetmainformontaskbar.html - LCLPlatform interfacebase/twidgetset.lclplatform.html - GetLCLCapability interfacebase/twidgetset.getlclcapability.html - DCGetPixel interfacebase/twidgetset.dcgetpixel.html - DCSetPixel interfacebase/twidgetset.dcsetpixel.html - DCRedraw interfacebase/twidgetset.dcredraw.html - DCSetAntialiasing interfacebase/twidgetset.dcsetantialiasing.html - SetDesigning interfacebase/twidgetset.setdesigning.html - InitStockFont interfacebase/twidgetset.initstockfont.html - IsHelpKey interfacebase/twidgetset.ishelpkey.html - CreateTimer interfacebase/twidgetset.createtimer.html - DestroyTimer interfacebase/twidgetset.destroytimer.html - AppHandle interfacebase/twidgetset.apphandle.html - Arc interfacebase/twidgetset.arc.html - AngleChord interfacebase/twidgetset.anglechord.html - BeginPaint interfacebase/twidgetset.beginpaint.html - BitBlt interfacebase/twidgetset.bitblt.html - CallNextHookEx interfacebase/twidgetset.callnexthookex.html - CallWindowProc interfacebase/twidgetset.callwindowproc.html - ClientToScreen interfacebase/twidgetset.clienttoscreen.html - CombineRgn interfacebase/twidgetset.combinergn.html - CreateBitmap interfacebase/twidgetset.createbitmap.html - CreateBrushIndirect interfacebase/twidgetset.createbrushindirect.html - CreateCaret interfacebase/twidgetset.createcaret.html - CreateCompatibleBitmap interfacebase/twidgetset.createcompatiblebitmap.html - CreateCompatibleDC interfacebase/twidgetset.createcompatibledc.html - CreateDIBitmap interfacebase/twidgetset.createdibitmap.html - CreateDIBSection interfacebase/twidgetset.createdibsection.html - CreateEllipticRgn interfacebase/twidgetset.createellipticrgn.html - CreateFontIndirect interfacebase/twidgetset.createfontindirect.html - CreateFontIndirectEx interfacebase/twidgetset.createfontindirectex.html - CreateIconIndirect interfacebase/twidgetset.createiconindirect.html - CreatePalette interfacebase/twidgetset.createpalette.html - CreatePatternBrush interfacebase/twidgetset.createpatternbrush.html - CreatePenIndirect interfacebase/twidgetset.createpenindirect.html - CreatePolygonRgn interfacebase/twidgetset.createpolygonrgn.html - CreateRectRgn interfacebase/twidgetset.createrectrgn.html - CreateRoundRectRgn interfacebase/twidgetset.createroundrectrgn.html - DeleteCriticalSection interfacebase/twidgetset.deletecriticalsection.html - DeleteDC interfacebase/twidgetset.deletedc.html - DeleteObject interfacebase/twidgetset.deleteobject.html - DestroyCaret interfacebase/twidgetset.destroycaret.html - DestroyCursor interfacebase/twidgetset.destroycursor.html - DestroyIcon interfacebase/twidgetset.destroyicon.html - DPtoLP interfacebase/twidgetset.dptolp.html - DrawFrameControl interfacebase/twidgetset.drawframecontrol.html - DrawFocusRect interfacebase/twidgetset.drawfocusrect.html - DrawEdge interfacebase/twidgetset.drawedge.html - DrawText interfacebase/twidgetset.drawtext.html - EnableScrollBar interfacebase/twidgetset.enablescrollbar.html - EnableWindow interfacebase/twidgetset.enablewindow.html - EndPaint interfacebase/twidgetset.endpaint.html - EnterCriticalSection interfacebase/twidgetset.entercriticalsection.html - EnumDisplayMonitors interfacebase/twidgetset.enumdisplaymonitors.html - EnumFontFamilies interfacebase/twidgetset.enumfontfamilies.html - EnumFontFamiliesEx interfacebase/twidgetset.enumfontfamiliesex.html - Ellipse interfacebase/twidgetset.ellipse.html - EqualRgn interfacebase/twidgetset.equalrgn.html - ExcludeClipRect interfacebase/twidgetset.excludecliprect.html - ExtCreatePen interfacebase/twidgetset.extcreatepen.html - ExtTextOut interfacebase/twidgetset.exttextout.html - ExtSelectClipRGN interfacebase/twidgetset.extselectcliprgn.html - FillRect interfacebase/twidgetset.fillrect.html - FillRgn interfacebase/twidgetset.fillrgn.html - FloodFill interfacebase/twidgetset.floodfill.html - FrameRect interfacebase/twidgetset.framerect.html - GetActiveWindow interfacebase/twidgetset.getactivewindow.html - GetBitmapBits interfacebase/twidgetset.getbitmapbits.html - GetBkColor interfacebase/twidgetset.getbkcolor.html - GetCapture interfacebase/twidgetset.getcapture.html - GetCaretPos interfacebase/twidgetset.getcaretpos.html - GetClientRect interfacebase/twidgetset.getclientrect.html - GetClipBox interfacebase/twidgetset.getclipbox.html - GetClipRGN interfacebase/twidgetset.getcliprgn.html - GetCurrentObject interfacebase/twidgetset.getcurrentobject.html - GetCursorPos interfacebase/twidgetset.getcursorpos.html - GetCharABCWidths interfacebase/twidgetset.getcharabcwidths.html - GetDC interfacebase/twidgetset.getdc.html - GetDeviceCaps interfacebase/twidgetset.getdevicecaps.html - GetDIBits interfacebase/twidgetset.getdibits.html - GetDoubleClickTime interfacebase/twidgetset.getdoubleclicktime.html - GetFocus interfacebase/twidgetset.getfocus.html - GetFontLanguageInfo interfacebase/twidgetset.getfontlanguageinfo.html - GetForegroundWindow interfacebase/twidgetset.getforegroundwindow.html - GetIconInfo interfacebase/twidgetset.geticoninfo.html - GetKeyState interfacebase/twidgetset.getkeystate.html - GetMapMode interfacebase/twidgetset.getmapmode.html - GetMonitorInfo interfacebase/twidgetset.getmonitorinfo.html - GetObject interfacebase/twidgetset.getobject.html - GetPaletteEntries interfacebase/twidgetset.getpaletteentries.html - GetParent interfacebase/twidgetset.getparent.html - GetProp interfacebase/twidgetset.getprop.html - GetRgnBox interfacebase/twidgetset.getrgnbox.html - GetROP2 interfacebase/twidgetset.getrop2.html - GetScrollInfo interfacebase/twidgetset.getscrollinfo.html - GetStockObject interfacebase/twidgetset.getstockobject.html - GetSysColor interfacebase/twidgetset.getsyscolor.html - GetSysColorBrush interfacebase/twidgetset.getsyscolorbrush.html - GetSystemPaletteEntries interfacebase/twidgetset.getsystempaletteentries.html - GetSystemMetrics interfacebase/twidgetset.getsystemmetrics.html - GetTextColor interfacebase/twidgetset.gettextcolor.html - GetTextExtentExPoint interfacebase/twidgetset.gettextextentexpoint.html - GetTextExtentPoint interfacebase/twidgetset.gettextextentpoint.html - GetTextMetrics interfacebase/twidgetset.gettextmetrics.html - GetViewPortExtEx interfacebase/twidgetset.getviewportextex.html - GetViewPortOrgEx interfacebase/twidgetset.getviewportorgex.html - GetWindowExtEx interfacebase/twidgetset.getwindowextex.html - GetWindowLong interfacebase/twidgetset.getwindowlong.html - GetWindowRect interfacebase/twidgetset.getwindowrect.html - GetWindowSize interfacebase/twidgetset.getwindowsize.html - GetWindowOrgEx interfacebase/twidgetset.getwindoworgex.html - GradientFill interfacebase/twidgetset.gradientfill.html - HideCaret interfacebase/twidgetset.hidecaret.html - InitializeCriticalSection interfacebase/twidgetset.initializecriticalsection.html - IntersectClipRect interfacebase/twidgetset.intersectcliprect.html - InvalidateRect interfacebase/twidgetset.invalidaterect.html - InvalidateRgn interfacebase/twidgetset.invalidatergn.html - IsDBCSLeadByte interfacebase/twidgetset.isdbcsleadbyte.html - IsIconic interfacebase/twidgetset.isiconic.html - IsWindow interfacebase/twidgetset.iswindow.html - IsWindowEnabled interfacebase/twidgetset.iswindowenabled.html - IsWindowVisible interfacebase/twidgetset.iswindowvisible.html - IsZoomed interfacebase/twidgetset.iszoomed.html - LeaveCriticalSection interfacebase/twidgetset.leavecriticalsection.html - LineTo interfacebase/twidgetset.lineto.html - LoadBitmap interfacebase/twidgetset.loadbitmap.html - LoadCursor interfacebase/twidgetset.loadcursor.html - LoadIcon interfacebase/twidgetset.loadicon.html - LPtoDP interfacebase/twidgetset.lptodp.html - MaskBlt interfacebase/twidgetset.maskblt.html - MessageBox interfacebase/twidgetset.messagebox.html - MonitorFromPoint interfacebase/twidgetset.monitorfrompoint.html - MonitorFromWindow interfacebase/twidgetset.monitorfromwindow.html - MoveToEx interfacebase/twidgetset.movetoex.html - OffsetRgn interfacebase/twidgetset.offsetrgn.html - PaintRgn interfacebase/twidgetset.paintrgn.html - PeekMessage interfacebase/twidgetset.peekmessage.html - Pie interfacebase/twidgetset.pie.html - PolyBezier interfacebase/twidgetset.polybezier.html - Polygon interfacebase/twidgetset.polygon.html - Polyline interfacebase/twidgetset.polyline.html - PostMessage interfacebase/twidgetset.postmessage.html - PtInRegion interfacebase/twidgetset.ptinregion.html - RealizePalette interfacebase/twidgetset.realizepalette.html - Rectangle interfacebase/twidgetset.rectangle.html - RectInRegion interfacebase/twidgetset.rectinregion.html - RectVisible interfacebase/twidgetset.rectvisible.html - RedrawWindow interfacebase/twidgetset.redrawwindow.html - ReleaseCapture interfacebase/twidgetset.releasecapture.html - ReleaseDC interfacebase/twidgetset.releasedc.html - RemoveProp interfacebase/twidgetset.removeprop.html - RestoreDC interfacebase/twidgetset.restoredc.html - RoundRect interfacebase/twidgetset.roundrect.html - SaveDC interfacebase/twidgetset.savedc.html - ScreenToClient interfacebase/twidgetset.screentoclient.html - ScrollWindowEx interfacebase/twidgetset.scrollwindowex.html - SelectClipRGN interfacebase/twidgetset.selectcliprgn.html - SelectObject interfacebase/twidgetset.selectobject.html - SelectPalette interfacebase/twidgetset.selectpalette.html - SendMessage interfacebase/twidgetset.sendmessage.html - SetActiveWindow interfacebase/twidgetset.setactivewindow.html - SetBkColor interfacebase/twidgetset.setbkcolor.html - SetBkMode interfacebase/twidgetset.setbkmode.html - SetCapture interfacebase/twidgetset.setcapture.html - SetCaretPos interfacebase/twidgetset.setcaretpos.html - SetCaretPosEx interfacebase/twidgetset.setcaretposex.html - SetCursor interfacebase/twidgetset.setcursor.html - SetCursorPos interfacebase/twidgetset.setcursorpos.html - SetFocus interfacebase/twidgetset.setfocus.html - SetForegroundWindow interfacebase/twidgetset.setforegroundwindow.html - SetMapMode interfacebase/twidgetset.setmapmode.html - SetMenu interfacebase/twidgetset.setmenu.html - SetParent interfacebase/twidgetset.setparent.html - SetProp interfacebase/twidgetset.setprop.html - SetRectRgn interfacebase/twidgetset.setrectrgn.html - SetROP2 interfacebase/twidgetset.setrop2.html - SetScrollInfo interfacebase/twidgetset.setscrollinfo.html - SetStretchBltMode interfacebase/twidgetset.setstretchbltmode.html - SetSysColors interfacebase/twidgetset.setsyscolors.html - SetTextCharacterExtra interfacebase/twidgetset.settextcharacterextra.html - SetTextColor interfacebase/twidgetset.settextcolor.html - SetWindowLong interfacebase/twidgetset.setwindowlong.html - SetViewPortExtEx interfacebase/twidgetset.setviewportextex.html - SetViewPortOrgEx interfacebase/twidgetset.setviewportorgex.html - SetWindowExtEx interfacebase/twidgetset.setwindowextex.html - SetWindowOrgEx interfacebase/twidgetset.setwindoworgex.html - SetWindowPos interfacebase/twidgetset.setwindowpos.html - SetWindowRgn interfacebase/twidgetset.setwindowrgn.html - ShowCaret interfacebase/twidgetset.showcaret.html - ShowScrollBar interfacebase/twidgetset.showscrollbar.html - ShowWindow interfacebase/twidgetset.showwindow.html - StretchBlt interfacebase/twidgetset.stretchblt.html - StretchDIBits interfacebase/twidgetset.stretchdibits.html - SystemParametersInfo interfacebase/twidgetset.systemparametersinfo.html - TextOut interfacebase/twidgetset.textout.html - UpdateWindow interfacebase/twidgetset.updatewindow.html - WindowFromPoint interfacebase/twidgetset.windowfrompoint.html - AddEventHandler interfacebase/twidgetset.addeventhandler.html - AddProcessEventHandler interfacebase/twidgetset.addprocesseventhandler.html - AddPipeEventHandler interfacebase/twidgetset.addpipeeventhandler.html - AllocateHWnd interfacebase/twidgetset.allocatehwnd.html - AskUser interfacebase/twidgetset.askuser.html - CallDefaultWndHandler interfacebase/twidgetset.calldefaultwndhandler.html - ClipboardFormatToMimeType interfacebase/twidgetset.clipboardformattomimetype.html - ClipboardGetData interfacebase/twidgetset.clipboardgetdata.html - ClipboardGetFormats interfacebase/twidgetset.clipboardgetformats.html - ClipboardGetOwnerShip interfacebase/twidgetset.clipboardgetownership.html - ClipboardRegisterFormat interfacebase/twidgetset.clipboardregisterformat.html - CreateEmptyRegion interfacebase/twidgetset.createemptyregion.html - CreatePixmapIndirect interfacebase/twidgetset.createpixmapindirect.html - CreateRegionCopy interfacebase/twidgetset.createregioncopy.html - CreateRubberBand interfacebase/twidgetset.createrubberband.html - CreateStandardCursor interfacebase/twidgetset.createstandardcursor.html - DCClipRegionValid interfacebase/twidgetset.dcclipregionvalid.html - DeallocateHWnd interfacebase/twidgetset.deallocatehwnd.html - DestroyRubberBand interfacebase/twidgetset.destroyrubberband.html - DrawDefaultDockImage interfacebase/twidgetset.drawdefaultdockimage.html - DrawGrid interfacebase/twidgetset.drawgrid.html - FontCanUTF8 interfacebase/twidgetset.fontcanutf8.html - FontIsMonoSpace interfacebase/twidgetset.fontismonospace.html - Frame3d interfacebase/twidgetset.frame3d.html - GetAcceleratorString interfacebase/twidgetset.getacceleratorstring.html - GetAvailableNativeCanvasTypes interfacebase/twidgetset.getavailablenativecanvastypes.html - GetAvailableNativeHandleTypes interfacebase/twidgetset.getavailablenativehandletypes.html - GetCaretRespondToFocus interfacebase/twidgetset.getcaretrespondtofocus.html - GetClientBounds interfacebase/twidgetset.getclientbounds.html - GetCmdLineParamDescForInterface interfacebase/twidgetset.getcmdlineparamdescforinterface.html - GetControlConstraints interfacebase/twidgetset.getcontrolconstraints.html - GetDCOriginRelativeToWindow interfacebase/twidgetset.getdcoriginrelativetowindow.html - GetDesignerDC interfacebase/twidgetset.getdesignerdc.html - GetDeviceSize interfacebase/twidgetset.getdevicesize.html - GetLCLOwnerObject interfacebase/twidgetset.getlclownerobject.html - GetNativeCanvas interfacebase/twidgetset.getnativecanvas.html - GetNativeHandle interfacebase/twidgetset.getnativehandle.html - GetScrollBarSize interfacebase/twidgetset.getscrollbarsize.html - GetScrollbarVisible interfacebase/twidgetset.getscrollbarvisible.html - GetWindowRelativePosition interfacebase/twidgetset.getwindowrelativeposition.html - IntfSendsUTF8KeyPress interfacebase/twidgetset.intfsendsutf8keypress.html - InvalidateFrame interfacebase/twidgetset.invalidateframe.html - IsDesignerDC interfacebase/twidgetset.isdesignerdc.html - IsMobilePlatform interfacebase/twidgetset.ismobileplatform.html - IsCDIntfControl interfacebase/twidgetset.iscdintfcontrol.html - MoveWindowOrgEx interfacebase/twidgetset.movewindoworgex.html - PromptUser interfacebase/twidgetset.promptuser.html - PromptUserAtXY interfacebase/twidgetset.promptuseratxy.html - RadialArc interfacebase/twidgetset.radialarc.html - RadialChord interfacebase/twidgetset.radialchord.html - RadialPie interfacebase/twidgetset.radialpie.html - RawImage_CreateBitmaps interfacebase/twidgetset.rawimage_createbitmaps.html - RawImage_DescriptionFromBitmap interfacebase/twidgetset.rawimage_descriptionfrombitmap.html - RawImage_DescriptionFromDevice interfacebase/twidgetset.rawimage_descriptionfromdevice.html - RawImage_FromBitmap interfacebase/twidgetset.rawimage_frombitmap.html - RawImage_FromDevice interfacebase/twidgetset.rawimage_fromdevice.html - RawImage_QueryDescription interfacebase/twidgetset.rawimage_querydescription.html - RegroupMenuItem interfacebase/twidgetset.regroupmenuitem.html - ReleaseDesignerDC interfacebase/twidgetset.releasedesignerdc.html - RemoveEventHandler interfacebase/twidgetset.removeeventhandler.html - RemoveProcessEventHandler interfacebase/twidgetset.removeprocesseventhandler.html - RemovePipeEventHandler interfacebase/twidgetset.removepipeeventhandler.html - RequestInput interfacebase/twidgetset.requestinput.html - SendCachedLCLMessages interfacebase/twidgetset.sendcachedlclmessages.html - SetCaretRespondToFocus interfacebase/twidgetset.setcaretrespondtofocus.html - SetComboMinDropDownSize interfacebase/twidgetset.setcombomindropdownsize.html - SetEventHandlerFlags interfacebase/twidgetset.seteventhandlerflags.html - SetRubberBandRect interfacebase/twidgetset.setrubberbandrect.html - ShowSelectItemDialog interfacebase/twidgetset.showselectitemdialog.html - StretchMaskBlt interfacebase/twidgetset.stretchmaskblt.html - TextUTF8Out interfacebase/twidgetset.textutf8out.html - ThemeServices interfacebase/twidgetset.themeservices.html - FThemeServices - CreateThemeServices - GetAppHandle - SetAppHandle - GetTextExtentPoint32 - MonitorFromRect - ExtUTF8Out - EInterfaceException interfacebase/einterfaceexception.html - EInterfaceError interfacebase/einterfaceerror.html - EInterfaceCritical interfacebase/einterfacecritical.html - EInterfaceWarning interfacebase/einterfacewarning.html - InputDialogFunction interfacebase/inputdialogfunction.html - PromptDialogFunction interfacebase/promptdialogfunction.html - QuestionDialogFunction interfacebase/questiondialogfunction.html - LoadBitmapFunction interfacebase/loadbitmapfunction.html - LoadCursorFunction interfacebase/loadcursorfunction.html - LoadIconFunction interfacebase/loadiconfunction.html - WidgetSet interfacebase/widgetset.html - IntfGraphics intfgraphics/index.html - LazTiffExtraPrefix intfgraphics/laztiffextraprefix.html - LazTiffHostComputer intfgraphics/laztiffhostcomputer.html - LazTiffMake intfgraphics/laztiffmake.html - LazTiffModel intfgraphics/laztiffmodel.html - LazTiffSoftware intfgraphics/laztiffsoftware.html - TLazIntfImageGetPixelProc intfgraphics/tlazintfimagegetpixelproc.html - TLazIntfImageSetPixelProc intfgraphics/tlazintfimagesetpixelproc.html - TOnReadRawImageBits intfgraphics/tonreadrawimagebits.html - TOnWriteRawImageBits intfgraphics/tonwriterawimagebits.html - PArrayNode intfgraphics/parraynode.html - TLazReaderMaskMode intfgraphics/tlazreadermaskmode.html - TLazReaderDIBEncoding intfgraphics/tlazreaderdibencoding.html - TLazReaderDIBInfo intfgraphics/tlazreaderdibinfo.html - TLazIntfImage intfgraphics/tlazintfimage.html - FGetInternalColorProc intfgraphics/tlazintfimage.fgetinternalcolorproc.html - FSetInternalColorProc intfgraphics/tlazintfimage.fsetinternalcolorproc.html - SetUsePalette intfgraphics/tlazintfimage.setusepalette.html - SetInternalColor intfgraphics/tlazintfimage.setinternalcolor.html - GetInternalColor intfgraphics/tlazintfimage.getinternalcolor.html - SetInternalPixel intfgraphics/tlazintfimage.setinternalpixel.html - GetInternalPixel intfgraphics/tlazintfimage.getinternalpixel.html - FreeData intfgraphics/tlazintfimage.freedata.html - SetDataDescription intfgraphics/tlazintfimage.setdatadescription.html - ChooseGetSetColorFunctions intfgraphics/tlazintfimage.choosegetsetcolorfunctions.html - ChooseRawBitsProc intfgraphics/tlazintfimage.chooserawbitsproc.html - GetColor_Generic intfgraphics/tlazintfimage.getcolor_generic.html - GetColor_RGBA_NoPalette intfgraphics/tlazintfimage.getcolor_rgba_nopalette.html - GetColor_RGB_NoPalette intfgraphics/tlazintfimage.getcolor_rgb_nopalette.html - GetColor_Gray_NoPalette intfgraphics/tlazintfimage.getcolor_gray_nopalette.html - GetColor_GrayAlpha_NoPalette intfgraphics/tlazintfimage.getcolor_grayalpha_nopalette.html - GetColor_NULL intfgraphics/tlazintfimage.getcolor_null.html - GetColor_BPP32_A8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8r8g8b8_bio_ttb.html - GetColor_BPP32_A8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8b8g8r8_bio_ttb.html - GetColor_BPP32_A8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8g8r8b8_bio_ttb.html - GetColor_BPP32_A8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8g8b8r8_bio_ttb.html - GetColor_BPP32_A8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8r8b8g8_bio_ttb.html - GetColor_BPP32_A8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8b8r8g8_bio_ttb.html - GetColor_BPP32_B8G8R8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8g8r8a8_bio_ttb.html - GetColor_BPP32_R8G8B8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8g8b8a8_bio_ttb.html - GetColor_BPP32_G8B8R8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8b8r8a8_bio_ttb.html - GetColor_BPP32_G8R8B8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8r8b8a8_bio_ttb.html - GetColor_BPP32_B8R8G8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8r8g8a8_bio_ttb.html - GetColor_BPP32_R8B8G8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8b8g8a8_bio_ttb.html - GetColor_BPP32_X8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8r8g8b8_bio_ttb.html - GetColor_BPP32_X8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8b8g8r8_bio_ttb.html - GetColor_BPP32_X8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8g8r8b8_bio_ttb.html - GetColor_BPP32_X8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8g8b8r8_bio_ttb.html - GetColor_BPP32_X8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8r8b8g8_bio_ttb.html - GetColor_BPP32_X8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8b8r8g8_bio_ttb.html - GetColor_BPP32_B8G8R8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8g8r8x8_bio_ttb.html - GetColor_BPP32_R8G8B8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8g8b8x8_bio_ttb.html - GetColor_BPP32_G8B8R8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8b8r8x8_bio_ttb.html - GetColor_BPP32_G8R8B8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8r8b8x8_bio_ttb.html - GetColor_BPP32_B8R8G8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8r8g8x8_bio_ttb.html - GetColor_BPP32_R8B8G8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8b8g8x8_bio_ttb.html - GetColor_BPP24_B8G8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_b8g8r8_bio_ttb.html - GetColor_BPP24_R8G8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_r8g8b8_bio_ttb.html - GetColor_BPP24_G8B8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_g8b8r8_bio_ttb.html - GetColor_BPP24_G8R8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_g8r8b8_bio_ttb.html - GetColor_BPP24_B8R8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_b8r8g8_bio_ttb.html - GetColor_BPP24_R8B8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_r8b8g8_bio_ttb.html - GetMask_Generic intfgraphics/tlazintfimage.getmask_generic.html - SetColor_Generic intfgraphics/tlazintfimage.setcolor_generic.html - SetColor_RGBA_NoPalette intfgraphics/tlazintfimage.setcolor_rgba_nopalette.html - SetColor_RGB_NoPalette intfgraphics/tlazintfimage.setcolor_rgb_nopalette.html - SetColor_Gray_NoPalette intfgraphics/tlazintfimage.setcolor_gray_nopalette.html - SetColor_GrayAlpha_NoPalette intfgraphics/tlazintfimage.setcolor_grayalpha_nopalette.html - SetColor_NULL intfgraphics/tlazintfimage.setcolor_null.html - SetColor_BPP32_A8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8r8g8b8_bio_ttb.html - SetColor_BPP32_A8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8b8g8r8_bio_ttb.html - SetColor_BPP32_A8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8g8r8b8_bio_ttb.html - SetColor_BPP32_A8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8g8b8r8_bio_ttb.html - SetColor_BPP32_A8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8r8b8g8_bio_ttb.html - SetColor_BPP32_A8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8b8r8g8_bio_ttb.html - SetColor_BPP32_B8G8R8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8g8r8a8_bio_ttb.html - SetColor_BPP32_R8G8B8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8g8b8a8_bio_ttb.html - SetColor_BPP32_G8B8R8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8b8r8a8_bio_ttb.html - SetColor_BPP32_G8R8B8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8r8b8a8_bio_ttb.html - SetColor_BPP32_B8R8G8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8r8g8a8_bio_ttb.html - SetColor_BPP32_R8B8G8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8b8g8a8_bio_ttb.html - SetColor_BPP32_X8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8r8g8b8_bio_ttb.html - SetColor_BPP32_X8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8b8g8r8_bio_ttb.html - SetColor_BPP32_X8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8g8r8b8_bio_ttb.html - SetColor_BPP32_X8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8g8b8r8_bio_ttb.html - SetColor_BPP32_X8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8r8b8g8_bio_ttb.html - SetColor_BPP32_X8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8b8r8g8_bio_ttb.html - SetColor_BPP32_B8G8R8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8g8r8x8_bio_ttb.html - SetColor_BPP32_R8G8B8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8g8b8x8_bio_ttb.html - SetColor_BPP32_G8B8R8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8b8r8x8_bio_ttb.html - SetColor_BPP32_G8R8B8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8r8b8x8_bio_ttb.html - SetColor_BPP32_B8R8G8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8r8g8x8_bio_ttb.html - SetColor_BPP32_R8B8G8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8b8g8x8_bio_ttb.html - SetColor_BPP24_B8G8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_b8g8r8_bio_ttb.html - SetColor_BPP24_R8G8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_r8g8b8_bio_ttb.html - SetColor_BPP24_G8B8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_g8b8r8_bio_ttb.html - SetColor_BPP24_G8R8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_g8r8b8_bio_ttb.html - SetColor_BPP24_B8R8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_b8r8g8_bio_ttb.html - SetColor_BPP24_R8B8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_r8b8g8_bio_ttb.html - SetMask_Generic intfgraphics/tlazintfimage.setmask_generic.html - Create intfgraphics/tlazintfimage.create.html - CreateCompatible intfgraphics/tlazintfimage.createcompatible.html - Destroy intfgraphics/tlazintfimage.destroy.html - BeginUpdate intfgraphics/tlazintfimage.beginupdate.html - EndUpdate intfgraphics/tlazintfimage.endupdate.html - SetSize intfgraphics/tlazintfimage.setsize.html - CheckDescription intfgraphics/tlazintfimage.checkdescription.html - LoadFromDevice intfgraphics/tlazintfimage.loadfromdevice.html - LoadFromBitmap intfgraphics/tlazintfimage.loadfrombitmap.html - CreateBitmaps intfgraphics/tlazintfimage.createbitmaps.html - SetRawImage intfgraphics/tlazintfimage.setrawimage.html - GetRawImage intfgraphics/tlazintfimage.getrawimage.html - FillPixels intfgraphics/tlazintfimage.fillpixels.html - CopyPixels intfgraphics/tlazintfimage.copypixels.html - AlphaBlend intfgraphics/tlazintfimage.alphablend.html - AlphaFromMask intfgraphics/tlazintfimage.alphafrommask.html - Mask intfgraphics/tlazintfimage.mask.html - GetXYDataPosition intfgraphics/tlazintfimage.getxydataposition.html - GetXYMaskPosition intfgraphics/tlazintfimage.getxymaskposition.html - GetDataLineStart intfgraphics/tlazintfimage.getdatalinestart.html - CreateData intfgraphics/tlazintfimage.createdata.html - HasTransparency intfgraphics/tlazintfimage.hastransparency.html - HasMask intfgraphics/tlazintfimage.hasmask.html - SetDataDescriptionKeepData intfgraphics/tlazintfimage.setdatadescriptionkeepdata.html - PixelData intfgraphics/tlazintfimage.pixeldata.html - MaskData intfgraphics/tlazintfimage.maskdata.html - DataDescription intfgraphics/tlazintfimage.datadescription.html - TColors intfgraphics/tlazintfimage.tcolors.html - Masked intfgraphics/tlazintfimage.masked.html - TLazIntfImageMask intfgraphics/tlazintfimagemask.html - SetInternalColor intfgraphics/tlazintfimagemask.setinternalcolor.html - GetInternalColor intfgraphics/tlazintfimagemask.getinternalcolor.html - SetInternalPixel intfgraphics/tlazintfimagemask.setinternalpixel.html - GetInternalPixel intfgraphics/tlazintfimagemask.getinternalpixel.html - CreateWithImage intfgraphics/tlazintfimagemask.createwithimage.html - Image intfgraphics/tlazintfimagemask.image.html - TLazAVLPalette intfgraphics/tlazavlpalette.html - FAVLPalette intfgraphics/tlazavlpalette.favlpalette.html - FAVLNodes intfgraphics/tlazavlpalette.favlnodes.html - SetCount intfgraphics/tlazavlpalette.setcount.html - SetColor intfgraphics/tlazavlpalette.setcolor.html - CompareEntries intfgraphics/tlazavlpalette.compareentries.html - CompareColorWithEntries intfgraphics/tlazavlpalette.comparecolorwithentries.html - EnlargeData intfgraphics/tlazavlpalette.enlargedata.html - Destroy intfgraphics/tlazavlpalette.destroy.html - IndexOf intfgraphics/tlazavlpalette.indexof.html - Add intfgraphics/tlazavlpalette.add.html - CheckConsistency intfgraphics/tlazavlpalette.checkconsistency.html - TArrayNode intfgraphics/tarraynode.html - Parent intfgraphics/tarraynode.parent.html - Value intfgraphics/tarraynode.value.html - Children intfgraphics/tarraynode.children.html - StartValue intfgraphics/tarraynode.startvalue.html - Capacity intfgraphics/tarraynode.capacity.html - Data intfgraphics/tarraynode.data.html - Create intfgraphics/tarraynode.create.html - Destroy intfgraphics/tarraynode.destroy.html - DeleteChilds intfgraphics/tarraynode.deletechilds.html - UnbindFromParent intfgraphics/tarraynode.unbindfromparent.html - CreateChildNode intfgraphics/tarraynode.createchildnode.html - GetChildNode intfgraphics/tarraynode.getchildnode.html - Expand intfgraphics/tarraynode.expand.html - FindPrevSibling intfgraphics/tarraynode.findprevsibling.html - FindNextSibling intfgraphics/tarraynode.findnextsibling.html - FindNextUTF8 intfgraphics/tarraynode.findnextutf8.html - FindPrev intfgraphics/tarraynode.findprev.html - FindFirstChild intfgraphics/tarraynode.findfirstchild.html - FindLastChild intfgraphics/tarraynode.findlastchild.html - FindLastSubChild intfgraphics/tarraynode.findlastsubchild.html - FindFirstSibling intfgraphics/tarraynode.findfirstsibling.html - FindLastSibling intfgraphics/tarraynode.findlastsibling.html - ConsistencyCheck intfgraphics/tarraynode.consistencycheck.html - TArrayNodesTree intfgraphics/tarraynodestree.html - Root intfgraphics/tarraynodestree.root.html - FindNode intfgraphics/tarraynodestree.findnode.html - FindData intfgraphics/tarraynodestree.finddata.html - SetNode intfgraphics/tarraynodestree.setnode.html - Delete intfgraphics/tarraynodestree.delete.html - Clear intfgraphics/tarraynodestree.clear.html - Create intfgraphics/tarraynodestree.create.html - Destroy intfgraphics/tarraynodestree.destroy.html - ConsistencyCheck intfgraphics/tarraynodestree.consistencycheck.html - ILazImageReader intfgraphics/ilazimagereader.html - GetUpdateDescription intfgraphics/ilazimagereader.getupdatedescription.html - SetUpdateDescription intfgraphics/ilazimagereader.setupdatedescription.html - UpdateDescription intfgraphics/ilazimagereader.updatedescription.html - ILazImageWriter intfgraphics/ilazimagewriter.html - Initialize intfgraphics/ilazimagewriter.initialize.html - Finalize intfgraphics/ilazimagewriter.finalize.html - TLazReaderXPM intfgraphics/tlazreaderxpm.html - GetUpdateDescription intfgraphics/tlazreaderxpm.getupdatedescription.html - SetUpdateDescription intfgraphics/tlazreaderxpm.setupdatedescription.html - QueryInterface intfgraphics/tlazreaderxpm.queryinterface.html - _AddRef intfgraphics/tlazreaderxpm._addref.html - _Release intfgraphics/tlazreaderxpm._release.html - ClearPixelToColorTree intfgraphics/tlazreaderxpm.clearpixeltocolortree.html - InternalRead intfgraphics/tlazreaderxpm.internalread.html - InternalCheck intfgraphics/tlazreaderxpm.internalcheck.html - Create intfgraphics/tlazreaderxpm.create.html - Destroy intfgraphics/tlazreaderxpm.destroy.html - UpdateDescription intfgraphics/tlazreaderxpm.updatedescription.html - TLazWriterXPM intfgraphics/tlazwriterxpm.html - InternalWrite intfgraphics/tlazwriterxpm.internalwrite.html - Create intfgraphics/tlazwriterxpm.create.html - NibblesPerSample intfgraphics/tlazwriterxpm.nibblespersample.html - TLazReaderDIB intfgraphics/tlazreaderdib.html - GetUpdateDescription intfgraphics/tlazreaderdib.getupdatedescription.html - SetUpdateDescription intfgraphics/tlazreaderdib.setupdatedescription.html - QueryInterface intfgraphics/tlazreaderdib.queryinterface.html - _AddRef intfgraphics/tlazreaderdib._addref.html - _Release intfgraphics/tlazreaderdib._release.html - InitLineBuf intfgraphics/tlazreaderdib.initlinebuf.html - FreeLineBuf intfgraphics/tlazreaderdib.freelinebuf.html - ReadScanLine intfgraphics/tlazreaderdib.readscanline.html - WriteScanLine intfgraphics/tlazreaderdib.writescanline.html - InternalRead intfgraphics/tlazreaderdib.internalread.html - InternalReadHead intfgraphics/tlazreaderdib.internalreadhead.html - InternalReadBody intfgraphics/tlazreaderdib.internalreadbody.html - InternalCheck intfgraphics/tlazreaderdib.internalcheck.html - ReadSize intfgraphics/tlazreaderdib.readsize.html - LineBuf intfgraphics/tlazreaderdib.linebuf.html - Info intfgraphics/tlazreaderdib.info.html - Create intfgraphics/tlazreaderdib.create.html - Destroy intfgraphics/tlazreaderdib.destroy.html - MaskColor intfgraphics/tlazreaderdib.maskcolor.html - MaskMode intfgraphics/tlazreaderdib.maskmode.html - UpdateDescription intfgraphics/tlazreaderdib.updatedescription.html - TLazReaderBMP intfgraphics/tlazreaderbmp.html - InternalCheck intfgraphics/tlazreaderbmp.internalcheck.html - InternalReadHead intfgraphics/tlazreaderbmp.internalreadhead.html - TLazWriterBMP intfgraphics/tlazwriterbmp.html - QueryInterface intfgraphics/tlazwriterbmp.queryinterface.html - _AddRef intfgraphics/tlazwriterbmp._addref.html - _Release intfgraphics/tlazwriterbmp._release.html - Initialize intfgraphics/tlazwriterbmp.initialize.html - Finalize intfgraphics/tlazwriterbmp.finalize.html - TLazReaderIconDIB intfgraphics/tlazreadericondib.html - InternalRead intfgraphics/tlazreadericondib.internalread.html - TLazReaderPNG intfgraphics/tlazreaderpng.html - GetUpdateDescription intfgraphics/tlazreaderpng.getupdatedescription.html - SetUpdateDescription intfgraphics/tlazreaderpng.setupdatedescription.html - QueryInterface intfgraphics/tlazreaderpng.queryinterface.html - _AddRef intfgraphics/tlazreaderpng._addref.html - _Release intfgraphics/tlazreaderpng._release.html - DoDecompress intfgraphics/tlazreaderpng.dodecompress.html - HandleAlpha intfgraphics/tlazreaderpng.handlealpha.html - InternalRead intfgraphics/tlazreaderpng.internalread.html - UpdateDescription intfgraphics/tlazreaderpng.updatedescription.html - TLazWriterPNG intfgraphics/tlazwriterpng.html - QueryInterface intfgraphics/tlazwriterpng.queryinterface.html - _AddRef intfgraphics/tlazwriterpng._addref.html - _Release intfgraphics/tlazwriterpng._release.html - Initialize intfgraphics/tlazwriterpng.initialize.html - Finalize intfgraphics/tlazwriterpng.finalize.html - TLazReaderTiff intfgraphics/tlazreadertiff.html - DoCreateImage intfgraphics/tlazreadertiff.docreateimage.html - GetUpdateDescription intfgraphics/tlazreadertiff.getupdatedescription.html - SetUpdateDescription intfgraphics/tlazreadertiff.setupdatedescription.html - QueryInterface intfgraphics/tlazreadertiff.queryinterface.html - _AddRef intfgraphics/tlazreadertiff._addref.html - _Release intfgraphics/tlazreadertiff._release.html - InternalRead intfgraphics/tlazreadertiff.internalread.html - UpdateDescription intfgraphics/tlazreadertiff.updatedescription.html - TLazWriterTiff intfgraphics/tlazwritertiff.html - QueryInterface intfgraphics/tlazwritertiff.queryinterface.html - _AddRef intfgraphics/tlazwritertiff._addref.html - _Release intfgraphics/tlazwritertiff._release.html - InternalWrite intfgraphics/tlazwritertiff.internalwrite.html - Initialize intfgraphics/tlazwritertiff.initialize.html - Finalize intfgraphics/tlazwritertiff.finalize.html - TLazReaderIcnsPart intfgraphics/tlazreadericnspart.html - InternalCheck intfgraphics/tlazreadericnspart.internalcheck.html - InternalRead intfgraphics/tlazreadericnspart.internalread.html - SetupRead intfgraphics/tlazreadericnspart.setupread.html - Create256ColorPalette intfgraphics/tlazreadericnspart.create256colorpalette.html - DoReadRaw intfgraphics/tlazreadericnspart.doreadraw.html - DoReadRLE intfgraphics/tlazreadericnspart.doreadrle.html - DoReadJpeg2000 intfgraphics/tlazreadericnspart.doreadjpeg2000.html - DoReadMask intfgraphics/tlazreadericnspart.doreadmask.html - GetUpdateDescription intfgraphics/tlazreadericnspart.getupdatedescription.html - SetUpdateDescription intfgraphics/tlazreadericnspart.setupdatedescription.html - QueryInterface intfgraphics/tlazreadericnspart.queryinterface.html - _AddRef intfgraphics/tlazreadericnspart._addref.html - _Release intfgraphics/tlazreadericnspart._release.html - Create intfgraphics/tlazreadericnspart.create.html - Destroy intfgraphics/tlazreadericnspart.destroy.html - UpdateDescription intfgraphics/tlazreadericnspart.updatedescription.html - IconType intfgraphics/tlazreadericnspart.icontype.html - DataSize intfgraphics/tlazreadericnspart.datasize.html - QueryDescription intfgraphics/querydescription.html - GetDescriptionFromDevice intfgraphics/getdescriptionfromdevice.html - GetDescriptionFromBitmap intfgraphics/getdescriptionfrombitmap.html - AddAlphaToDescription intfgraphics/addalphatodescription.html - DefaultReaderDescription intfgraphics/defaultreaderdescription.html - ReadCompleteStreamToString intfgraphics/readcompletestreamtostring.html - ReadCompleteStreamToStream intfgraphics/readcompletestreamtostream.html - dbgs intfgraphics/dbgs.html - LCLVersion lclversion/index.html - lcl_major lclversion/lcl_major.html - lcl_minor lclversion/lcl_minor.html - lcl_release lclversion/lcl_release.html - lcl_patch lclversion/lcl_patch.html - lcl_fullversion lclversion/lcl_fullversion.html - lcl_version lclversion/lcl_version.html - IcnsTypes icnstypes/index.html - kIconFamilyType icnstypes/kiconfamilytype.html - kIconServices512PixelDataARGB icnstypes/kiconservices512pixeldataargb.html - kIconServices256PixelDataARGB icnstypes/kiconservices256pixeldataargb.html - kThumbnail32BitData icnstypes/kthumbnail32bitdata.html - kThumbnail8BitMask icnstypes/kthumbnail8bitmask.html - kHuge1BitMask icnstypes/khuge1bitmask.html - kHuge4BitData icnstypes/khuge4bitdata.html - kHuge8BitData icnstypes/khuge8bitdata.html - kHuge32BitData icnstypes/khuge32bitdata.html - kHuge8BitMask icnstypes/khuge8bitmask.html - kLarge1BitMask icnstypes/klarge1bitmask.html - kLarge4BitData icnstypes/klarge4bitdata.html - kLarge8BitData icnstypes/klarge8bitdata.html - kLarge32BitData icnstypes/klarge32bitdata.html - kLarge8BitMask icnstypes/klarge8bitmask.html - kSmall1BitMask icnstypes/ksmall1bitmask.html - kSmall4BitData icnstypes/ksmall4bitdata.html - kSmall8BitData icnstypes/ksmall8bitdata.html - kSmall32BitData icnstypes/ksmall32bitdata.html - kSmall8BitMask icnstypes/ksmall8bitmask.html - kMini1BitMask icnstypes/kmini1bitmask.html - kMini4BitData icnstypes/kmini4bitdata.html - kMini8BitData icnstypes/kmini8bitdata.html - icnsDataTypes icnstypes/icnsdatatypes.html - icnsMaskTypes icnstypes/icnsmasktypes.html - icnsRGB icnstypes/icnsrgb.html - icnsWithAlpha icnstypes/icnswithalpha.html - icnsIconTypeInfo icnstypes/icnsicontypeinfo.html - icnsMaskToImageMap icnstypes/icnsmasktoimagemap.html - FourCharCode icnstypes/fourcharcode.html - TIconFamilyElement icnstypes/ticonfamilyelement.html - TIconFamilyResource icnstypes/ticonfamilyresource.html - TicnsIconType icnstypes/ticnsicontype.html - TicnsIconTypes icnstypes/ticnsicontypes.html - TicnsIconInfo icnstypes/ticnsiconinfo.html - GetIcnsIconType icnstypes/geticnsicontype.html - GetDataTypeRGB icnstypes/getdatatypergb.html - GetMaskType8bit icnstypes/getmasktype8bit.html - Themes themes/index.html - ThemeManagerCopyright themes/thememanagercopyright.html - TThemedElement themes/tthemedelement.html - TThemedButton themes/tthemedbutton.html - TThemedClock themes/tthemedclock.html - TThemedComboBox themes/tthemedcombobox.html - TThemedEdit themes/tthemededit.html - TThemedExplorerBar themes/tthemedexplorerbar.html - TThemedHeader themes/tthemedheader.html - TThemedListview themes/tthemedlistview.html - TThemedMenu themes/tthemedmenu.html - TThemedPage themes/tthemedpage.html - TThemedProgress themes/tthemedprogress.html - TThemedRebar themes/tthemedrebar.html - TThemedScrollBar themes/tthemedscrollbar.html - TThemedSpin themes/tthemedspin.html - TThemedStartPanel themes/tthemedstartpanel.html - TThemedStatus themes/tthemedstatus.html - TThemedTab themes/tthemedtab.html - TThemedTaskBand themes/tthemedtaskband.html - TThemedTaskBar themes/tthemedtaskbar.html - TThemedToolBar themes/tthemedtoolbar.html - TThemedToolTip themes/tthemedtooltip.html - TThemedTrackBar themes/tthemedtrackbar.html - TThemedTrayNotify themes/tthemedtraynotify.html - TThemedTreeview themes/tthemedtreeview.html - TThemedWindow themes/tthemedwindow.html - PThemedElementDetails themes/pthemedelementdetails.html - TThemedElementDetails themes/tthemedelementdetails.html - TThemeOption themes/tthemeoption.html - TThemesImageDrawEvent themes/tthemesimagedrawevent.html - TThemeServices themes/tthemeservices.html - InitThemes themes/tthemeservices.initthemes.html - UnloadThemeData themes/tthemeservices.unloadthemedata.html - UseThemes themes/tthemeservices.usethemes.html - ThemedControlsEnabled themes/tthemeservices.themedcontrolsenabled.html - InternalColorToRGB themes/tthemeservices.internalcolortorgb.html - InternalDrawParentBackground themes/tthemeservices.internaldrawparentbackground.html - Create themes/tthemeservices.create.html - Destroy themes/tthemeservices.destroy.html - IntfDoOnThemeChange themes/tthemeservices.intfdoonthemechange.html - IsDisabled themes/tthemeservices.isdisabled.html - IsPushed themes/tthemeservices.ispushed.html - IsHot themes/tthemeservices.ishot.html - IsChecked themes/tthemeservices.ischecked.html - IsMixed themes/tthemeservices.ismixed.html - GetElementDetails themes/tthemeservices.getelementdetails.html - GetDetailSize themes/tthemeservices.getdetailsize.html - GetDetailRegion themes/tthemeservices.getdetailregion.html - GetStockImage themes/tthemeservices.getstockimage.html - GetOption themes/tthemeservices.getoption.html - GetTextExtent themes/tthemeservices.gettextextent.html - ColorToRGB themes/tthemeservices.colortorgb.html - ContentRect themes/tthemeservices.contentrect.html - DrawEdge themes/tthemeservices.drawedge.html - DrawElement themes/tthemeservices.drawelement.html - DrawIcon themes/tthemeservices.drawicon.html - DrawParentBackground themes/tthemeservices.drawparentbackground.html - DrawText themes/tthemeservices.drawtext.html - HasTransparentParts themes/tthemeservices.hastransparentparts.html - PaintBorder themes/tthemeservices.paintborder.html - UpdateThemes themes/tthemeservices.updatethemes.html - DottedBrush themes/tthemeservices.dottedbrush.html - ThemesAvailable themes/tthemeservices.themesavailable.html - ThemesEnabled themes/tthemeservices.themesenabled.html - OnThemeChange themes/tthemeservices.onthemechange.html - ThemeServices themes/themeservices.html - ThemedElementDetailsEqual themes/themedelementdetailsequal.html - ThemesImageDrawEvent themes/themesimagedrawevent.html - Graphics graphics/index.html - Progress graphics/progress.html - DefFontData graphics/deffontdata.html - psSolid graphics/pssolid.html - psDash graphics/psdash.html - psDot graphics/psdot.html - psDashDot graphics/psdashdot.html - psDashDotDot graphics/psdashdotdot.html - psClear graphics/psclear.html - psInsideframe graphics/psinsideframe.html - psPattern graphics/pspattern.html - pmBlack graphics/pmblack.html - pmWhite graphics/pmwhite.html - pmNop graphics/pmnop.html - pmNot graphics/pmnot.html - pmCopy graphics/pmcopy.html - pmNotCopy graphics/pmnotcopy.html - pmMergePenNot graphics/pmmergepennot.html - pmMaskPenNot graphics/pmmaskpennot.html - pmMergeNotPen graphics/pmmergenotpen.html - pmMaskNotPen graphics/pmmasknotpen.html - pmMerge graphics/pmmerge.html - pmNotMerge graphics/pmnotmerge.html - pmMask graphics/pmmask.html - pmNotMask graphics/pmnotmask.html - pmXor graphics/pmxor.html - pmNotXor graphics/pmnotxor.html - bsSolid graphics/bssolid.html - bsClear graphics/bsclear.html - bsHorizontal graphics/bshorizontal.html - bsVertical graphics/bsvertical.html - bsFDiagonal graphics/bsfdiagonal.html - bsBDiagonal graphics/bsbdiagonal.html - bsCross graphics/bscross.html - bsDiagCross graphics/bsdiagcross.html - PIXELFORMAT_BPP graphics/pixelformat_bpp.html - clBlack graphics/clblack.html - clMaroon graphics/clmaroon.html - clGreen graphics/clgreen.html - clOlive graphics/clolive.html - clNavy graphics/clnavy.html - clPurple graphics/clpurple.html - clTeal graphics/clteal.html - clGray graphics/clgray.html - clSilver graphics/clsilver.html - clRed graphics/clred.html - clLime graphics/cllime.html - clYellow graphics/clyellow.html - clBlue graphics/clblue.html - clFuchsia graphics/clfuchsia.html - clAqua graphics/claqua.html - clLtGray graphics/clltgray.html - clDkGray graphics/cldkgray.html - clWhite graphics/clwhite.html - StandardColorsCount graphics/standardcolorscount.html - clMoneyGreen graphics/clmoneygreen.html - clSkyBlue graphics/clskyblue.html - clCream graphics/clcream.html - clMedGray graphics/clmedgray.html - ExtendedColorCount graphics/extendedcolorcount.html - clNone graphics/clnone.html - clDefault graphics/cldefault.html - clScrollBar graphics/clscrollbar.html - clBackground graphics/clbackground.html - clActiveCaption graphics/clactivecaption.html - clInactiveCaption graphics/clinactivecaption.html - clMenu graphics/clmenu.html - clWindow graphics/clwindow.html - clWindowFrame graphics/clwindowframe.html - clMenuText graphics/clmenutext.html - clWindowText graphics/clwindowtext.html - clCaptionText graphics/clcaptiontext.html - clActiveBorder graphics/clactiveborder.html - clInactiveBorder graphics/clinactiveborder.html - clAppWorkspace graphics/clappworkspace.html - clHighlight graphics/clhighlight.html - clHighlightText graphics/clhighlighttext.html - clBtnFace graphics/clbtnface.html - clBtnShadow graphics/clbtnshadow.html - clGrayText graphics/clgraytext.html - clBtnText graphics/clbtntext.html - clInactiveCaptionText graphics/clinactivecaptiontext.html - clBtnHighlight graphics/clbtnhighlight.html - cl3DDkShadow graphics/cl3ddkshadow.html - cl3DLight graphics/cl3dlight.html - clInfoText graphics/clinfotext.html - clInfoBk graphics/clinfobk.html - clHotLight graphics/clhotlight.html - clGradientActiveCaption graphics/clgradientactivecaption.html - clGradientInactiveCaption graphics/clgradientinactivecaption.html - clMenuHighlight graphics/clmenuhighlight.html - clMenuBar graphics/clmenubar.html - clForm graphics/clform.html - clColorDesktop graphics/clcolordesktop.html - cl3DFace graphics/cl3dface.html - cl3DShadow graphics/cl3dshadow.html - cl3DHiLight graphics/cl3dhilight.html - clBtnHiLight graphics/clbtnhilight.html - clFirstSpecialColor graphics/clfirstspecialcolor.html - clMask graphics/clmask.html - clDontMask graphics/cldontmask.html - clForeground graphics/clforeground.html - clButton graphics/clbutton.html - clLight graphics/cllight.html - clMidlight graphics/clmidlight.html - clDark graphics/cldark.html - clMid graphics/clmid.html - clText graphics/cltext.html - clBrightText graphics/clbrighttext.html - clButtonText graphics/clbuttontext.html - clBase graphics/clbase.html - clxBackground graphics/clxbackground.html - clShadow graphics/clshadow.html - clxHighlight graphics/clxhighlight.html - clHighlightedText graphics/clhighlightedtext.html - cloNormal graphics/clonormal.html - cloDisabled graphics/clodisabled.html - cloActive graphics/cloactive.html - clNormalForeground graphics/clnormalforeground.html - clNormalButton graphics/clnormalbutton.html - clNormalLight graphics/clnormallight.html - clNormalMidlight graphics/clnormalmidlight.html - clNormalDark graphics/clnormaldark.html - clNormalMid graphics/clnormalmid.html - clNormalText graphics/clnormaltext.html - clNormalBrightText graphics/clnormalbrighttext.html - clNormalButtonText graphics/clnormalbuttontext.html - clNormalBase graphics/clnormalbase.html - clNormalBackground graphics/clnormalbackground.html - clNormalShadow graphics/clnormalshadow.html - clNormalHighlight graphics/clnormalhighlight.html - clNormalHighlightedText graphics/clnormalhighlightedtext.html - clDisabledForeground graphics/cldisabledforeground.html - clDisabledButton graphics/cldisabledbutton.html - clDisabledLight graphics/cldisabledlight.html - clDisabledMidlight graphics/cldisabledmidlight.html - clDisabledDark graphics/cldisableddark.html - clDisabledMid graphics/cldisabledmid.html - clDisabledText graphics/cldisabledtext.html - clDisabledBrightText graphics/cldisabledbrighttext.html - clDisabledButtonText graphics/cldisabledbuttontext.html - clDisabledBase graphics/cldisabledbase.html - clDisabledBackground graphics/cldisabledbackground.html - clDisabledShadow graphics/cldisabledshadow.html - clDisabledHighlight graphics/cldisabledhighlight.html - clDisabledHighlightedText graphics/cldisabledhighlightedtext.html - clActiveForeground graphics/clactiveforeground.html - clActiveButton graphics/clactivebutton.html - clActiveLight graphics/clactivelight.html - clActiveMidlight graphics/clactivemidlight.html - clActiveDark graphics/clactivedark.html - clActiveMid graphics/clactivemid.html - clActiveText graphics/clactivetext.html - clActiveBrightText graphics/clactivebrighttext.html - clActiveButtonText graphics/clactivebuttontext.html - clActiveBase graphics/clactivebase.html - clActiveBackground graphics/clactivebackground.html - clActiveShadow graphics/clactiveshadow.html - clActiveHighlight graphics/clactivehighlight.html - clActiveHighlightedText graphics/clactivehighlightedtext.html - cmBlackness graphics/cmblackness.html - cmDstInvert graphics/cmdstinvert.html - cmMergeCopy graphics/cmmergecopy.html - cmMergePaint graphics/cmmergepaint.html - cmNotSrcCopy graphics/cmnotsrccopy.html - cmNotSrcErase graphics/cmnotsrcerase.html - cmPatCopy graphics/cmpatcopy.html - cmPatInvert graphics/cmpatinvert.html - cmPatPaint graphics/cmpatpaint.html - cmSrcAnd graphics/cmsrcand.html - cmSrcCopy graphics/cmsrccopy.html - cmSrcErase graphics/cmsrcerase.html - cmSrcInvert graphics/cmsrcinvert.html - cmSrcPaint graphics/cmsrcpaint.html - cmWhiteness graphics/cmwhiteness.html - FontCharsets graphics/fontcharsets.html - PColor graphics/pcolor.html - TColor graphics/tcolor.html - TFontPitch graphics/tfontpitch.html - TFontName graphics/tfontname.html - TFontDataName graphics/tfontdataname.html - TFontStyle graphics/tfontstyle.html - TFontStyles graphics/tfontstyles.html - TFontStylesbase graphics/tfontstylesbase.html - TFontCharSet graphics/tfontcharset.html - TFontQuality graphics/tfontquality.html - TFontData graphics/tfontdata.html - TTextLayout graphics/ttextlayout.html - TTextStyle graphics/ttextstyle.html - TFillStyle graphics/tfillstyle.html - TFillMode graphics/tfillmode.html - TCopymode graphics/tcopymode.html - TCanvasStates graphics/tcanvasstates.html - TCanvasState graphics/tcanvasstate.html - TCanvasOrientation graphics/tcanvasorientation.html - TProgressStage graphics/tprogressstage.html - TProgressEvent graphics/tprogressevent.html - TPixelFormat graphics/tpixelformat.html - TTransparentMode graphics/ttransparentmode.html - TMappedColor graphics/tmappedcolor.html - TColorGroup graphics/tcolorgroup.html - TColorRole graphics/tcolorrole.html - TRasterImageClass graphics/trasterimageclass.html - TCustomBitmapClass graphics/tcustombitmapclass.html - TPenStyle graphics/tpenstyle.html - TPenMode graphics/tpenmode.html - TPenEndCap graphics/tpenendcap.html - TPenJoinStyle graphics/tpenjoinstyle.html - TPenPattern graphics/tpenpattern.html - TBrushStyle graphics/tbrushstyle.html - TRegionCombineMode graphics/tregioncombinemode.html - TRegionOperationType graphics/tregionoperationtype.html - TRegionOperation graphics/tregionoperation.html - TRegionOperations graphics/tregionoperations.html - TGraphicClass graphics/tgraphicclass.html - TGradientDirection graphics/tgradientdirection.html - TAntialiasingMode graphics/tantialiasingmode.html - TLCLTextMetric graphics/tlcltextmetric.html - TDefaultColorType graphics/tdefaultcolortype.html - TBitmapHandleType graphics/tbitmaphandletype.html - TSharedRasterImageClass graphics/tsharedrasterimageclass.html - TFPImageBitmapClass graphics/tfpimagebitmapclass.html - TIconImageClass graphics/ticonimageclass.html - TIcnsRec graphics/ticnsrec.html - PIcnsRec graphics/picnsrec.html - TJPEGQualityRange graphics/tjpegqualityrange.html - TJPEGPerformance graphics/tjpegperformance.html - TTiffUnit graphics/ttiffunit.html - TGetColorStringProc graphics/tgetcolorstringproc.html - TOnLoadGraphicFromClipboardFormat graphics/tonloadgraphicfromclipboardformat.html - TOnSaveGraphicToClipboardFormat graphics/tonsavegraphictoclipboardformat.html - TOnGetSystemFont graphics/tongetsystemfont.html - TGraphicsObject graphics/tgraphicsobject.html - Changing graphics/tgraphicsobject.changing.html - Changed graphics/tgraphicsobject.changed.html - Lock graphics/tgraphicsobject.lock.html - UnLock graphics/tgraphicsobject.unlock.html - OnChanging graphics/tgraphicsobject.onchanging.html - OnChange graphics/tgraphicsobject.onchange.html - TFontHandleCacheDescriptor graphics/tfonthandlecachedescriptor.html - LogFont graphics/tfonthandlecachedescriptor.logfont.html - LongFontName graphics/tfonthandlecachedescriptor.longfontname.html - TFontHandleCache graphics/tfonthandlecache.html - FindFont graphics/tfonthandlecache.findfont.html - FindFontDesc graphics/tfonthandlecache.findfontdesc.html - Add graphics/tfonthandlecache.add.html - RemoveItem lclrescache/tresourcecache.removeitem.html - Create ms-its:rtl.chm::/system/tobject.create.html - CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html - TFont graphics/tfont.html - GetCharSet graphics/tfont.getcharset.html - GetHeight graphics/tfont.getheight.html - GetName graphics/tfont.getname.html - GetOrientation graphics/tfont.getorientation.html - GetPitch graphics/tfont.getpitch.html - GetSize graphics/tfont.getsize.html - GetStyle graphics/tfont.getstyle.html - Changed graphics/tfont.changed.html - DoAllocateResources graphics/tfont.doallocateresources.html - DoCopyProps graphics/tfont.docopyprops.html - DoDeAllocateResources graphics/tfont.dodeallocateresources.html - SetCharSet graphics/tfont.setcharset.html - SetColor graphics/tfont.setcolor.html - GetColor graphics/tfont.getcolor.html - SetFlags graphics/tfont.setflags.html - SetFPColor graphics/tfont.setfpcolor.html - SetHeight graphics/tfont.setheight.html - SetName graphics/tfont.setname.html - SetOrientation graphics/tfont.setorientation.html - SetPitch graphics/tfont.setpitch.html - SetSize graphics/tfont.setsize.html - SetStyle graphics/tfont.setstyle.html - SetQuality graphics/tfont.setquality.html - Create graphics/tfont.create.html - Destroy graphics/tfont.destroy.html - Assign graphics/tfont.assign.html - BeginUpdate graphics/tfont.beginupdate.html - EndUpdate graphics/tfont.endupdate.html - FontData graphics/tfont.fontdata.html - HandleAllocated graphics/tfont.handleallocated.html - Handle graphics/tfont.handle.html - IsDefault graphics/tfont.isdefault.html - IsEqual graphics/tfont.isequal.html - IsMonoSpace graphics/tfont.ismonospace.html - SetDefault graphics/tfont.setdefault.html - CanUTF8 graphics/tfont.canutf8.html - PixelsPerInch graphics/tfont.pixelsperinch.html - Reference graphics/tfont.reference.html - CharSet graphics/tfont.charset.html - Color graphics/tfont.color.html - Height graphics/tfont.height.html - Orientation graphics/tfont.orientation.html - Pitch graphics/tfont.pitch.html - Quality graphics/tfont.quality.html - Style graphics/tfont.style.html - Name - Size - TPenHandleCacheDescriptor graphics/tpenhandlecachedescriptor.html - ExtPen graphics/tpenhandlecachedescriptor.extpen.html - Pattern graphics/tpenhandlecachedescriptor.pattern.html - TPenHandleCache graphics/tpenhandlecache.html - FindPen graphics/tpenhandlecache.findpen.html - FindPenDesc graphics/tpenhandlecache.findpendesc.html - Add graphics/tpenhandlecache.add.html - RemoveItem lclrescache/tresourcecache.removeitem.html - Create ms-its:rtl.chm::/system/tobject.create.html - CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html - TPen graphics/tpen.html - SetColor graphics/tpen.setcolor.html - SetEndCap graphics/tpen.setendcap.html - SetJoinStyle graphics/tpen.setjoinstyle.html - Create graphics/tpen.create.html - Destroy graphics/tpen.destroy.html - Assign graphics/tpen.assign.html - Handle graphics/tpen.handle.html - Reference graphics/tpen.reference.html - GetPattern graphics/tpen.getpattern.html - SetPattern graphics/tpen.setpattern.html - Color graphics/tpen.color.html - Cosmetic graphics/tpen.cosmetic.html - EndCap graphics/tpen.endcap.html - JoinStyle graphics/tpen.joinstyle.html - DoAllocateResources - DoDeAllocateResources - DoCopyProps - SetFPColor - SetMode - SetStyle - SetWidth - Mode - Style - Width - TBrushHandleCache graphics/tbrushhandlecache.html - RemoveItem lclrescache/tresourcecache.removeitem.html - Create ms-its:rtl.chm::/system/tobject.create.html - TBrush graphics/tbrush.html - DoAllocateResources graphics/tbrush.doallocateresources.html - DoDeAllocateResources graphics/tbrush.dodeallocateresources.html - DoCopyProps graphics/tbrush.docopyprops.html - SetColor graphics/tbrush.setcolor.html - SetBitmap graphics/tbrush.setbitmap.html - Assign graphics/tbrush.assign.html - Create graphics/tbrush.create.html - Destroy graphics/tbrush.destroy.html - EqualsBrush graphics/tbrush.equalsbrush.html - Bitmap graphics/tbrush.bitmap.html - Handle graphics/tbrush.handle.html - Reference graphics/tbrush.reference.html - Color graphics/tbrush.color.html - Style graphics/tbrush.style.html - SetFPColor - SetStyle - TRegion graphics/tregion.html - SetClipRect graphics/tregion.setcliprect.html - GetClipRect graphics/tregion.getcliprect.html - Create graphics/tregion.create.html - Destroy graphics/tregion.destroy.html - Assign graphics/tregion.assign.html - AddRectangle graphics/tregion.addrectangle.html - ClipRect graphics/tregion.cliprect.html - Handle graphics/tregion.handle.html - Reference graphics/tregion.reference.html - TGraphic graphics/tgraphic.html - Changed graphics/tgraphic.changed.html - Equals graphics/tgraphic.equals.html - DefineProperties graphics/tgraphic.defineproperties.html - Draw graphics/tgraphic.draw.html - GetEmpty graphics/tgraphic.getempty.html - GetHeight graphics/tgraphic.getheight.html - GetMimeType graphics/tgraphic.getmimetype.html - GetPalette graphics/tgraphic.getpalette.html - GetTransparent graphics/tgraphic.gettransparent.html - GetWidth graphics/tgraphic.getwidth.html - Progress graphics/tgraphic.progress.html - ReadData graphics/tgraphic.readdata.html - SetHeight graphics/tgraphic.setheight.html - SetPalette graphics/tgraphic.setpalette.html - SetTransparent graphics/tgraphic.settransparent.html - SetWidth graphics/tgraphic.setwidth.html - SetModified graphics/tgraphic.setmodified.html - WriteData graphics/tgraphic.writedata.html - Assign graphics/tgraphic.assign.html - Create graphics/tgraphic.create.html - Clear graphics/tgraphic.clear.html - LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html - LoadFromFile graphics/tgraphic.loadfromfile.html - LoadFromStream graphics/tgraphic.loadfromstream.html - LoadFromMimeStream graphics/tgraphic.loadfrommimestream.html - LoadFromLazarusResource graphics/tgraphic.loadfromlazarusresource.html - LoadFromResourceName graphics/tgraphic.loadfromresourcename.html - LoadFromResourceID graphics/tgraphic.loadfromresourceid.html - LoadFromClipboardFormat graphics/tgraphic.loadfromclipboardformat.html - LoadFromClipboardFormatID graphics/tgraphic.loadfromclipboardformatid.html - SaveToFile graphics/tgraphic.savetofile.html - SaveToStream graphics/tgraphic.savetostream.html - SaveToClipboardFormat graphics/tgraphic.savetoclipboardformat.html - SaveToClipboardFormatID graphics/tgraphic.savetoclipboardformatid.html - GetSupportedSourceMimeTypes graphics/tgraphic.getsupportedsourcemimetypes.html - GetResourceType graphics/tgraphic.getresourcetype.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - IsStreamFormatSupported graphics/tgraphic.isstreamformatsupported.html - Empty graphics/tgraphic.empty.html - Height graphics/tgraphic.height.html - Modified graphics/tgraphic.modified.html - MimeType graphics/tgraphic.mimetype.html - OnChange graphics/tgraphic.onchange.html - OnProgress graphics/tgraphic.onprogress.html - Palette graphics/tgraphic.palette.html - PaletteModified graphics/tgraphic.palettemodified.html - Transparent graphics/tgraphic.transparent.html - Width graphics/tgraphic.width.html - TPicture graphics/tpicture.html - AssignTo graphics/tpicture.assignto.html - Changed graphics/tpicture.changed.html - Progress graphics/tpicture.progress.html - LoadFromStreamWithClass graphics/tpicture.loadfromstreamwithclass.html - Create graphics/tpicture.create.html - Destroy graphics/tpicture.destroy.html - Clear graphics/tpicture.clear.html - LoadFromClipboardFormat graphics/tpicture.loadfromclipboardformat.html - LoadFromClipboardFormatID graphics/tpicture.loadfromclipboardformatid.html - LoadFromFile graphics/tpicture.loadfromfile.html - LoadFromResourceName graphics/tpicture.loadfromresourcename.html - LoadFromLazarusResource graphics/tpicture.loadfromlazarusresource.html - LoadFromStream graphics/tpicture.loadfromstream.html - LoadFromStreamWithFileExt graphics/tpicture.loadfromstreamwithfileext.html - SaveToClipboardFormat graphics/tpicture.savetoclipboardformat.html - SaveToFile graphics/tpicture.savetofile.html - SaveToStream graphics/tpicture.savetostream.html - SaveToStreamWithFileExt graphics/tpicture.savetostreamwithfileext.html - SupportsClipboardFormat graphics/tpicture.supportsclipboardformat.html - Assign graphics/tpicture.assign.html - RegisterFileFormat graphics/tpicture.registerfileformat.html - RegisterClipboardFormat graphics/tpicture.registerclipboardformat.html - UnregisterGraphicClass graphics/tpicture.unregistergraphicclass.html - FindGraphicClassWithFileExt graphics/tpicture.findgraphicclasswithfileext.html - Bitmap graphics/tpicture.bitmap.html - Icon graphics/tpicture.icon.html - Jpeg graphics/tpicture.jpeg.html - Pixmap graphics/tpicture.pixmap.html - PNG graphics/tpicture.png.html - PNM graphics/tpicture.pnm.html - Graphic graphics/tpicture.graphic.html - Height graphics/tpicture.height.html - Width graphics/tpicture.width.html - OnChange graphics/tpicture.onchange.html - OnProgress graphics/tpicture.onprogress.html - DefineProperties - EGraphicException graphics/egraphicexception.html - EInvalidGraphic graphics/einvalidgraphic.html - EInvalidGraphicOperation graphics/einvalidgraphicoperation.html - TCanvas graphics/tcanvas.html - DoCreateDefaultFont graphics/tcanvas.docreatedefaultfont.html - DoCreateDefaultPen graphics/tcanvas.docreatedefaultpen.html - DoCreateDefaultBrush graphics/tcanvas.docreatedefaultbrush.html - SetColor graphics/tcanvas.setcolor.html - GetColor graphics/tcanvas.getcolor.html - SetHeight graphics/tcanvas.setheight.html - GetHeight graphics/tcanvas.getheight.html - SetWidth graphics/tcanvas.setwidth.html - GetWidth graphics/tcanvas.getwidth.html - SetPenPos graphics/tcanvas.setpenpos.html - DoLockCanvas graphics/tcanvas.dolockcanvas.html - DoUnlockCanvas graphics/tcanvas.dounlockcanvas.html - DoTextOut graphics/tcanvas.dotextout.html - DoGetTextSize graphics/tcanvas.dogettextsize.html - DoGetTextHeight graphics/tcanvas.dogettextheight.html - DoGetTextWidth graphics/tcanvas.dogettextwidth.html - DoRectangle graphics/tcanvas.dorectangle.html - DoRectangleFill graphics/tcanvas.dorectanglefill.html - DoRectangleAndFill graphics/tcanvas.dorectangleandfill.html - DoEllipse graphics/tcanvas.doellipse.html - DoEllipseFill graphics/tcanvas.doellipsefill.html - DoEllipseAndFill graphics/tcanvas.doellipseandfill.html - DoPolygon graphics/tcanvas.dopolygon.html - DoPolygonFill graphics/tcanvas.dopolygonfill.html - DoPolygonAndFill graphics/tcanvas.dopolygonandfill.html - DoPolyline graphics/tcanvas.dopolyline.html - DoPolyBezier graphics/tcanvas.dopolybezier.html - DoFloodFill graphics/tcanvas.dofloodfill.html - DoMoveTo graphics/tcanvas.domoveto.html - DoLineTo graphics/tcanvas.dolineto.html - DoLine graphics/tcanvas.doline.html - DoCopyRect graphics/tcanvas.docopyrect.html - DoDraw graphics/tcanvas.dodraw.html - CheckHelper graphics/tcanvas.checkhelper.html - GetDefaultColor graphics/tcanvas.getdefaultcolor.html - GetClipRect graphics/tcanvas.getcliprect.html - SetClipRect graphics/tcanvas.setcliprect.html - GetClipping graphics/tcanvas.getclipping.html - SetClipping graphics/tcanvas.setclipping.html - GetPixel graphics/tcanvas.getpixel.html - CreateBrush graphics/tcanvas.createbrush.html - CreateHandle graphics/tcanvas.createhandle.html - CreatePen graphics/tcanvas.createpen.html - CreateRegion graphics/tcanvas.createregion.html - DeselectHandles graphics/tcanvas.deselecthandles.html - PenChanging graphics/tcanvas.penchanging.html - FontChanging graphics/tcanvas.fontchanging.html - BrushChanging graphics/tcanvas.brushchanging.html - RegionChanging graphics/tcanvas.regionchanging.html - RealizeAutoRedraw graphics/tcanvas.realizeautoredraw.html - RealizeAntialiasing graphics/tcanvas.realizeantialiasing.html - RequiredState graphics/tcanvas.requiredstate.html - SetHandle graphics/tcanvas.sethandle.html - SetInternalPenPos graphics/tcanvas.setinternalpenpos.html - SetPixel graphics/tcanvas.setpixel.html - FreeHandle graphics/tcanvas.freehandle.html - Create graphics/tcanvas.create.html - Destroy graphics/tcanvas.destroy.html - Lock graphics/tcanvas.lock.html - TryLock graphics/tcanvas.trylock.html - Unlock graphics/tcanvas.unlock.html - Refresh graphics/tcanvas.refresh.html - Changing graphics/tcanvas.changing.html - Changed graphics/tcanvas.changed.html - SaveHandleState graphics/tcanvas.savehandlestate.html - RestoreHandleState graphics/tcanvas.restorehandlestate.html - Arc graphics/tcanvas.arc.html - ArcTo graphics/tcanvas.arcto.html - AngleArc graphics/tcanvas.anglearc.html - BrushCopy graphics/tcanvas.brushcopy.html - Chord graphics/tcanvas.chord.html - CopyRect graphics/tcanvas.copyrect.html - Draw graphics/tcanvas.draw.html - DrawFocusRect graphics/tcanvas.drawfocusrect.html - StretchDraw graphics/tcanvas.stretchdraw.html - Ellipse graphics/tcanvas.ellipse.html - FillRect graphics/tcanvas.fillrect.html - FloodFill graphics/tcanvas.floodfill.html - Frame3D graphics/tcanvas.frame3d.html - Frame graphics/tcanvas.frame.html - FrameRect graphics/tcanvas.framerect.html - GetTextMetrics graphics/tcanvas.gettextmetrics.html - GradientFill graphics/tcanvas.gradientfill.html - RadialPie graphics/tcanvas.radialpie.html - Pie graphics/tcanvas.pie.html - PolyBezier graphics/tcanvas.polybezier.html - Polygon graphics/tcanvas.polygon.html - Polyline graphics/tcanvas.polyline.html - Rectangle graphics/tcanvas.rectangle.html - RoundRect graphics/tcanvas.roundrect.html - TextOut graphics/tcanvas.textout.html - TextRect graphics/tcanvas.textrect.html - TextExtent graphics/tcanvas.textextent.html - TextHeight graphics/tcanvas.textheight.html - TextWidth graphics/tcanvas.textwidth.html - TextFitInfo graphics/tcanvas.textfitinfo.html - HandleAllocated graphics/tcanvas.handleallocated.html - GetUpdatedHandle graphics/tcanvas.getupdatedhandle.html - Pixels graphics/tcanvas.pixels.html - Handle graphics/tcanvas.handle.html - TextStyle graphics/tcanvas.textstyle.html - AntialiasingMode graphics/tcanvas.antialiasingmode.html - AutoRedraw graphics/tcanvas.autoredraw.html - Brush graphics/tcanvas.brush.html - CopyMode graphics/tcanvas.copymode.html - Font graphics/tcanvas.font.html - Height graphics/tcanvas.height.html - Pen graphics/tcanvas.pen.html - Region graphics/tcanvas.region.html - Width graphics/tcanvas.width.html - OnChange graphics/tcanvas.onchange.html - OnChanging graphics/tcanvas.onchanging.html - CreateFont - TSharedImage graphics/tsharedimage.html - Reference graphics/tsharedimage.reference.html - Release graphics/tsharedimage.release.html - FreeHandle graphics/tsharedimage.freehandle.html - RefCount graphics/tsharedimage.refcount.html - HandleAllocated graphics/tsharedimage.handleallocated.html - TSharedRasterImage graphics/tsharedrasterimage.html - ReleaseHandle graphics/tsharedrasterimage.releasehandle.html - IsEmpty graphics/tsharedrasterimage.isempty.html - CreateDefaultHandle graphics/tsharedrasterimage.createdefaulthandle.html - BitmapCanvas graphics/tsharedrasterimage.bitmapcanvas.html - SaveStream graphics/tsharedrasterimage.savestream.html - FreeHandle graphics/tsharedimage.freehandle.html - Create ms-its:rtl.chm::/system/tobject.create.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - HandleAllocated graphics/tsharedimage.handleallocated.html - TRasterImage graphics/trasterimage.html - FSharedImage graphics/trasterimage.fsharedimage.html - CanShareImage graphics/trasterimage.canshareimage.html - Changed graphics/trasterimage.changed.html - CreateDefaultBitmapHandle graphics/trasterimage.createdefaultbitmaphandle.html - GetHandle graphics/trasterimage.gethandle.html - GetBitmapHandle graphics/trasterimage.getbitmaphandle.html - GetMasked graphics/trasterimage.getmasked.html - GetMaskHandle graphics/trasterimage.getmaskhandle.html - GetPixelFormat graphics/trasterimage.getpixelformat.html - GetRawImagePtr graphics/trasterimage.getrawimageptr.html - GetRawImageDescriptionPtr graphics/trasterimage.getrawimagedescriptionptr.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - BitmapHandleNeeded graphics/trasterimage.bitmaphandleneeded.html - HandleNeeded graphics/trasterimage.handleneeded.html - MaskHandleNeeded graphics/trasterimage.maskhandleneeded.html - PaletteNeeded graphics/trasterimage.paletteneeded.html - InternalReleaseBitmapHandle graphics/trasterimage.internalreleasebitmaphandle.html - InternalReleaseMaskHandle graphics/trasterimage.internalreleasemaskhandle.html - InternalReleasePalette graphics/trasterimage.internalreleasepalette.html - SetBitmapHandle graphics/trasterimage.setbitmaphandle.html - SetMasked graphics/trasterimage.setmasked.html - SetMaskHandle graphics/trasterimage.setmaskhandle.html - UnshareImage graphics/trasterimage.unshareimage.html - UpdateHandles graphics/trasterimage.updatehandles.html - SaveStreamNeeded graphics/trasterimage.savestreamneeded.html - FreeSaveStream graphics/trasterimage.freesavestream.html - ReadStream graphics/trasterimage.readstream.html - SetSize graphics/trasterimage.setsize.html - SetHandle graphics/trasterimage.sethandle.html - SetTransparentMode graphics/trasterimage.settransparentmode.html - SetPixelFormat graphics/trasterimage.setpixelformat.html - WriteStream graphics/trasterimage.writestream.html - RequestTransparentColor graphics/trasterimage.requesttransparentcolor.html - Destroy graphics/trasterimage.destroy.html - Assign graphics/trasterimage.assign.html - BeginUpdate graphics/trasterimage.beginupdate.html - EndUpdate graphics/trasterimage.endupdate.html - FreeImage graphics/trasterimage.freeimage.html - BitmapHandleAllocated graphics/trasterimage.bitmaphandleallocated.html - MaskHandleAllocated graphics/trasterimage.maskhandleallocated.html - PaletteAllocated graphics/trasterimage.paletteallocated.html - LoadFromBitmapHandles graphics/trasterimage.loadfrombitmaphandles.html - LoadFromDevice graphics/trasterimage.loadfromdevice.html - LoadFromStream graphics/trasterimage.loadfromstream.html - LoadFromMimeStream graphics/trasterimage.loadfrommimestream.html - LoadFromRawImage graphics/trasterimage.loadfromrawimage.html - LoadFromIntfImage graphics/trasterimage.loadfromintfimage.html - SaveToStream graphics/trasterimage.savetostream.html - GetSupportedSourceMimeTypes graphics/trasterimage.getsupportedsourcemimetypes.html - GetSize graphics/trasterimage.getsize.html - Mask graphics/trasterimage.mask.html - SetHandles graphics/trasterimage.sethandles.html - ReleaseBitmapHandle graphics/trasterimage.releasebitmaphandle.html - ReleaseMaskHandle graphics/trasterimage.releasemaskhandle.html - ReleasePalette graphics/trasterimage.releasepalette.html - CreateIntfImage graphics/trasterimage.createintfimage.html - Canvas graphics/trasterimage.canvas.html - HandleAllocated graphics/trasterimage.handleallocated.html - BitmapHandle graphics/trasterimage.bitmaphandle.html - Masked graphics/trasterimage.masked.html - MaskHandle graphics/trasterimage.maskhandle.html - PixelFormat graphics/trasterimage.pixelformat.html - RawImage graphics/trasterimage.rawimage.html - ScanLine graphics/trasterimage.scanline.html - TransparentColor graphics/trasterimage.transparentcolor.html - TransparentMode graphics/trasterimage.transparentmode.html - Draw graphics/tgraphic.draw.html - GetEmpty graphics/tgraphic.getempty.html - GetMimeType graphics/tgraphic.getmimetype.html - GetTransparent graphics/tgraphic.gettransparent.html - GetHeight graphics/tgraphic.getheight.html - GetWidth graphics/tgraphic.getwidth.html - SetTransparent graphics/tgraphic.settransparent.html - ReadData graphics/tgraphic.readdata.html - SetHeight graphics/tgraphic.setheight.html - SetWidth graphics/tgraphic.setwidth.html - WriteData graphics/tgraphic.writedata.html - Create graphics/tgraphic.create.html - Clear graphics/tgraphic.clear.html - TSharedCustomBitmap graphics/tsharedcustombitmap.html - FreeHandle graphics/tsharedcustombitmap.freehandle.html - FreePalette graphics/tsharedcustombitmap.freepalette.html - FreeImage graphics/tsharedcustombitmap.freeimage.html - ReleasePalette graphics/tsharedcustombitmap.releasepalette.html - GetPixelFormat graphics/tsharedcustombitmap.getpixelformat.html - Create graphics/tsharedcustombitmap.create.html - Destroy graphics/tsharedcustombitmap.destroy.html - ImageAllocated graphics/tsharedcustombitmap.imageallocated.html - HandleType graphics/tsharedcustombitmap.handletype.html - Height graphics/tsharedcustombitmap.height.html - PixelFormat graphics/tsharedcustombitmap.pixelformat.html - Width graphics/tsharedcustombitmap.width.html - IsEmpty graphics/tsharedrasterimage.isempty.html - HandleAllocated graphics/tsharedimage.handleallocated.html - TCustomBitmap graphics/tcustombitmap.html - FreeMaskHandle graphics/tcustombitmap.freemaskhandle.html - RawimageNeeded graphics/tcustombitmap.rawimageneeded.html - Create graphics/tcustombitmap.create.html - Destroy graphics/tcustombitmap.destroy.html - Assign graphics/tcustombitmap.assign.html - FreeImage graphics/tcustombitmap.freeimage.html - ReleaseHandle graphics/tcustombitmap.releasehandle.html - SetSize graphics/tcustombitmap.setsize.html - Handle graphics/tcustombitmap.handle.html - HandleType graphics/tcustombitmap.handletype.html - Monochrome graphics/tcustombitmap.monochrome.html - MaskHandleNeeded graphics/trasterimage.maskhandleneeded.html - PaletteNeeded graphics/trasterimage.paletteneeded.html - CanShareImage graphics/trasterimage.canshareimage.html - Changed graphics/trasterimage.changed.html - CreateDefaultBitmapHandle graphics/trasterimage.createdefaultbitmaphandle.html - GetBitmapHandle graphics/trasterimage.getbitmaphandle.html - GetMaskHandle graphics/trasterimage.getmaskhandle.html - GetPalette graphics/tgraphic.getpalette.html - GetPixelFormat graphics/trasterimage.getpixelformat.html - GetRawImagePtr graphics/trasterimage.getrawimageptr.html - GetRawImageDescriptionPtr graphics/trasterimage.getrawimagedescriptionptr.html - HandleNeeded graphics/trasterimage.handleneeded.html - InternalReleaseBitmapHandle graphics/trasterimage.internalreleasebitmaphandle.html - InternalReleaseMaskHandle graphics/trasterimage.internalreleasemaskhandle.html - InternalReleasePalette graphics/trasterimage.internalreleasepalette.html - SetHandle graphics/trasterimage.sethandle.html - SetPixelFormat graphics/trasterimage.setpixelformat.html - UnshareImage graphics/trasterimage.unshareimage.html - UpdateHandles graphics/trasterimage.updatehandles.html - Clear graphics/tgraphic.clear.html - LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html - BitmapHandleAllocated graphics/trasterimage.bitmaphandleallocated.html - MaskHandleAllocated graphics/trasterimage.maskhandleallocated.html - PaletteAllocated graphics/trasterimage.paletteallocated.html - SetHandles graphics/trasterimage.sethandles.html - TFPImageBitmap graphics/tfpimagebitmap.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetWriterClass graphics/tfpimagebitmap.getwriterclass.html - InitializeReader graphics/tfpimagebitmap.initializereader.html - InitializeWriter graphics/tfpimagebitmap.initializewriter.html - FinalizeReader graphics/tfpimagebitmap.finalizereader.html - FinalizeWriter graphics/tfpimagebitmap.finalizewriter.html - ReadStream graphics/tfpimagebitmap.readstream.html - WriteStream graphics/tfpimagebitmap.writestream.html - IsStreamFormatSupported graphics/tfpimagebitmap.isstreamformatsupported.html - IsFileExtensionSupported graphics/tfpimagebitmap.isfileextensionsupported.html - GetMimeType graphics/tgraphic.getmimetype.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html - TSharedBitmap graphics/tsharedbitmap.html - TBitmap graphics/tbitmap.html - GetResourceType graphics/tbitmap.getresourcetype.html - InitializeReader graphics/tfpimagebitmap.initializereader.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetWriterClass graphics/tfpimagebitmap.getwriterclass.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - LoadFromStream graphics/trasterimage.loadfromstream.html - TSharedPixmap graphics/tsharedpixmap.html - TPixmap graphics/tpixmap.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetWriterClass graphics/tfpimagebitmap.getwriterclass.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - TSharedPortableNetworkGraphic graphics/tsharedportablenetworkgraphic.html - TPortableNetworkGraphic graphics/tportablenetworkgraphic.html - IsStreamFormatSupported graphics/tportablenetworkgraphic.isstreamformatsupported.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetWriterClass graphics/tfpimagebitmap.getwriterclass.html - InitializeWriter graphics/tfpimagebitmap.initializewriter.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - TSharedPortableAnyMapGraphic graphics/tsharedportableanymapgraphic.html - TPortableAnyMapGraphic graphics/tportableanymapgraphic.html - IsStreamFormatSupported graphics/tportableanymapgraphic.isstreamformatsupported.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetWriterClass graphics/tfpimagebitmap.getwriterclass.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - TSharedIcon graphics/tsharedicon.html - UpdateFromHandle graphics/tsharedicon.updatefromhandle.html - GetImage graphics/tsharedicon.getimage.html - Create graphics/tsharedicon.create.html - Destroy graphics/tsharedicon.destroy.html - Clear graphics/tsharedicon.clear.html - Delete graphics/tsharedicon.delete.html - GetIndex graphics/tsharedicon.getindex.html - GetImagesClass graphics/tsharedicon.getimagesclass.html - Add graphics/tsharedicon.add.html - Count graphics/tsharedicon.count.html - Images graphics/tsharedicon.images.html - FreeHandle graphics/tsharedimage.freehandle.html - IsEmpty graphics/tsharedrasterimage.isempty.html - TIconImage graphics/ticonimage.html - RawImageNeeded graphics/ticonimage.rawimageneeded.html - UpdateFromImage graphics/ticonimage.updatefromimage.html - Create graphics/ticonimage.create.html - ReleaseHandle graphics/ticonimage.releasehandle.html - ReleaseMaskHandle graphics/ticonimage.releasemaskhandle.html - ReleasePalette graphics/ticonimage.releasepalette.html - UpdateHandles graphics/ticonimage.updatehandles.html - Height graphics/ticonimage.height.html - Width graphics/ticonimage.width.html - PixelFormat graphics/ticonimage.pixelformat.html - Handle graphics/ticonimage.handle.html - MaskHandle graphics/ticonimage.maskhandle.html - Palette graphics/ticonimage.palette.html - RawImage graphics/ticonimage.rawimage.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - TCustomIcon graphics/tcustomicon.html - FCurrent graphics/tcustomicon.fcurrent.html - FRequestedSize graphics/tcustomicon.frequestedsize.html - CheckRequestedSize graphics/tcustomicon.checkrequestedsize.html - GetIndex graphics/tcustomicon.getindex.html - GetDefaultSize graphics/tcustomicon.getdefaultsize.html - GetStreamSignature graphics/tcustomicon.getstreamsignature.html - GetTypeID graphics/tcustomicon.gettypeid.html - UpdateCurrentView graphics/tcustomicon.updatecurrentview.html - SetHandle graphics/trasterimage.sethandle.html - UpdateHandle graphics/tcustomicon.updatehandle.html - Add graphics/tcustomicon.add.html - Assign graphics/tcustomicon.assign.html - AssignImage graphics/tcustomicon.assignimage.html - Clear graphics/tcustomicon.clear.html - Delete graphics/tcustomicon.delete.html - Remove graphics/tcustomicon.remove.html - GetDescription graphics/tcustomicon.getdescription.html - SetSize graphics/tcustomicon.setsize.html - GetFileExtensions graphics/tcustomicon.getfileextensions.html - LoadFromResourceName graphics/tcustomicon.loadfromresourcename.html - LoadFromResourceID graphics/tcustomicon.loadfromresourceid.html - LoadFromResourceHandle graphics/tcustomicon.loadfromresourcehandle.html - GetBestIndexForSize graphics/tcustomicon.getbestindexforsize.html - Current graphics/tcustomicon.current.html - Count graphics/tcustomicon.count.html - MaskHandleNeeded graphics/trasterimage.maskhandleneeded.html - PaletteNeeded graphics/trasterimage.paletteneeded.html - CanShareImage graphics/trasterimage.canshareimage.html - GetBitmapHandle graphics/trasterimage.getbitmaphandle.html - GetMaskHandle graphics/trasterimage.getmaskhandle.html - GetPalette graphics/tgraphic.getpalette.html - GetPixelFormat graphics/trasterimage.getpixelformat.html - GetRawImagePtr graphics/trasterimage.getrawimageptr.html - GetRawImageDescriptionPtr graphics/trasterimage.getrawimagedescriptionptr.html - GetTransparent graphics/tgraphic.gettransparent.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - HandleNeeded graphics/trasterimage.handleneeded.html - InternalReleaseBitmapHandle graphics/trasterimage.internalreleasebitmaphandle.html - InternalReleaseMaskHandle graphics/trasterimage.internalreleasemaskhandle.html - InternalReleasePalette graphics/trasterimage.internalreleasepalette.html - ReadData graphics/tgraphic.readdata.html - ReadStream graphics/trasterimage.readstream.html - SetMasked graphics/trasterimage.setmasked.html - SetPixelFormat graphics/trasterimage.setpixelformat.html - SetTransparent graphics/tgraphic.settransparent.html - UnshareImage graphics/trasterimage.unshareimage.html - UpdateHandles graphics/trasterimage.updatehandles.html - WriteStream graphics/trasterimage.writestream.html - Create graphics/tgraphic.create.html - LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html - BitmapHandleAllocated graphics/trasterimage.bitmaphandleallocated.html - MaskHandleAllocated graphics/trasterimage.maskhandleallocated.html - PaletteAllocated graphics/trasterimage.paletteallocated.html - SetHandles graphics/trasterimage.sethandles.html - TIcon graphics/ticon.html - GetStreamSignature graphics/ticon.getstreamsignature.html - LoadFromResourceHandle graphics/ticon.loadfromresourcehandle.html - ReleaseHandle graphics/ticon.releasehandle.html - GetResourceType graphics/ticon.getresourcetype.html - Handle graphics/ticon.handle.html - GetTypeID graphics/tcustomicon.gettypeid.html - HandleNeeded graphics/trasterimage.handleneeded.html - TIcnsList graphics/ticnslist.html - Notify graphics/ticnslist.notify.html - Add graphics/ticnslist.add.html - Items graphics/ticnslist.items.html - TSharedIcnsIcon graphics/tsharedicnsicon.html - TIcnsIcon graphics/ticnsicon.html - ReadData - ReadStream - WriteStream - Create - Destroy graphics/ticnsicon.destroy.html - GetFileExtensions graphics/tcustomicon.getfileextensions.html - LazarusResourceTypeValid - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - TSharedCursorImage graphics/tsharedcursorimage.html - FreeHandle graphics/tsharedimage.freehandle.html - GetImagesClass graphics/tsharedicon.getimagesclass.html - TCursorImageImage graphics/tcursorimageimage.html - Create graphics/ticonimage.create.html - HotSpot graphics/tcursorimageimage.hotspot.html - TCursorImage graphics/tcursorimage.html - GetStreamSignature graphics/tcursorimage.getstreamsignature.html - GetResourceType graphics/tcursorimage.getresourcetype.html - LoadFromResourceHandle graphics/tcursorimage.loadfromresourcehandle.html - ReleaseHandle graphics/tcursorimage.releasehandle.html - SetCenterHotSpot graphics/tcursorimage.setcenterhotspot.html - HotSpot graphics/tcursorimage.hotspot.html - Handle graphics/tcursorimage.handle.html - HandleNeeded graphics/trasterimage.handleneeded.html - GetDefaultSize graphics/tcustomicon.getdefaultsize.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - GetTypeID graphics/tcustomicon.gettypeid.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html - TSharedJpegImage graphics/tsharedjpegimage.html - TJPEGImage graphics/tjpegimage.html - Create graphics/tjpegimage.create.html - IsStreamFormatSupported graphics/tjpegimage.isstreamformatsupported.html - CompressionQuality graphics/tjpegimage.compressionquality.html - GrayScale graphics/tjpegimage.grayscale.html - ProgressiveEncoding graphics/tjpegimage.progressiveencoding.html - Performance graphics/tjpegimage.performance.html - InitializeReader graphics/tfpimagebitmap.initializereader.html - InitializeWriter graphics/tfpimagebitmap.initializewriter.html - FinalizeReader graphics/tfpimagebitmap.finalizereader.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetWriterClass graphics/tfpimagebitmap.getwriterclass.html - GetSharedImageClass graphics/trasterimage.getsharedimageclass.html - GetFileExtensions graphics/tgraphic.getfileextensions.html - TSharedTiffImage graphics/tsharedtiffimage.html - TTiffImage graphics/ttiffimage.html - InitializeReader graphics/tfpimagebitmap.initializereader.html - InitializeWriter graphics/tfpimagebitmap.initializewriter.html - FinalizeReader graphics/tfpimagebitmap.finalizereader.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetWriterClass graphics/tfpimagebitmap.getwriterclass.html - GetSharedImageClass graphics/ttiffimage.getsharedimageclass.html - Create graphics/ttiffimage.create.html - GetFileExtensions - Artist graphics/ttiffimage.artist.html - Copyright graphics/ttiffimage.copyright.html - DateTime graphics/ttiffimage.datetime.html - DocumentName graphics/ttiffimage.documentname.html - HostComputer graphics/ttiffimage.hostcomputer.html - ImageDescription graphics/ttiffimage.imagedescription.html - Make graphics/ttiffimage.make.html - Model graphics/ttiffimage.model.html - ResolutionUnit graphics/ttiffimage.resolutionunit.html - Software graphics/ttiffimage.software.html - XResolution graphics/ttiffimage.xresolution.html - YResolution graphics/ttiffimage.yresolution.html - TSharedGIFImage graphics/tsharedgifimage.html - TGIFImage graphics/tgifimage.html - InitializeReader graphics/tfpimagebitmap.initializereader.html - FinalizeReader graphics/tfpimagebitmap.finalizereader.html - GetReaderClass graphics/tfpimagebitmap.getreaderclass.html - GetSharedImageClass graphics/tgifimage.getsharedimageclass.html - Create graphics/tgifimage.create.html - IsStreamFormatSupported graphics/tgifimage.isstreamformatsupported.html - GetFileExtensions - Transparent graphics/tgifimage.transparent.html - Interlaced graphics/tgifimage.interlaced.html - BitsPerPixel graphics/tgifimage.bitsperpixel.html - GraphicFilter graphics/graphicfilter.html - GraphicExtension graphics/graphicextension.html - GraphicFileMask graphics/graphicfilemask.html - GetGraphicClassForFileExtension graphics/getgraphicclassforfileextension.html - IdentEntry graphics/idententry.html - ColorToIdent graphics/colortoident.html - IdentToColor graphics/identtocolor.html - ColorIndex graphics/colorindex.html - SysColorToSysColorIndex graphics/syscolortosyscolorindex.html - ColorToRGB graphics/colortorgb.html - ColorToString graphics/colortostring.html - StringToColor graphics/stringtocolor.html - StringToColorDef graphics/stringtocolordef.html - GetColorValues graphics/getcolorvalues.html - InvertColor graphics/invertcolor.html - DecColor graphics/deccolor.html - IsSysColor graphics/issyscolor.html - Blue graphics/blue.html - Green graphics/green.html - Red graphics/red.html - RGBToColor graphics/rgbtocolor.html - RedGreenBlue graphics/redgreenblue.html - FPColorToTColorRef graphics/fpcolortotcolorref.html - FPColorToTColor graphics/fpcolortotcolor.html - TColorToFPColor graphics/tcolortofpcolor.html - GetCharsetValues graphics/getcharsetvalues.html - CharsetToIdent graphics/charsettoident.html - IdentToCharset graphics/identtocharset.html - GetFontData graphics/getfontdata.html - GetDefFontCharSet graphics/getdeffontcharset.html - IsFontNameXLogicalFontDesc graphics/isfontnamexlogicalfontdesc.html - XLFDNameToLogFont graphics/xlfdnametologfont.html - ExtractXLFDItem graphics/extractxlfditem.html - ExtractFamilyFromXLFDName graphics/extractfamilyfromxlfdname.html - ClearXLFDItem graphics/clearxlfditem.html - ClearXLFDHeight graphics/clearxlfdheight.html - ClearXLFDPitch graphics/clearxlfdpitch.html - ClearXLFDStyle graphics/clearxlfdstyle.html - XLFDHeightIsSet graphics/xlfdheightisset.html - FontNameToPangoFontDescStr graphics/fontnametopangofontdescstr.html - TestStreamIsBMP graphics/teststreamisbmp.html - TestStreamIsXPM graphics/teststreamisxpm.html - TestStreamIsIcon graphics/teststreamisicon.html - TestStreamIsCursor graphics/teststreamiscursor.html - XPMToPPChar graphics/xpmtoppchar.html - LazResourceXPMToPPChar graphics/lazresourcexpmtoppchar.html - ReadXPMFromStream graphics/readxpmfromstream.html - ReadXPMSize graphics/readxpmsize.html - LoadCursorFromLazarusResource graphics/loadcursorfromlazarusresource.html - LoadBitmapFromLazarusResource graphics/loadbitmapfromlazarusresource.html - LoadBitmapFromLazarusResourceHandle graphics/loadbitmapfromlazarusresourcehandle.html - CreateGraphicFromResourceName graphics/creategraphicfromresourcename.html - CreateBitmapFromResourceName graphics/createbitmapfromresourcename.html - CreateBitmapFromLazarusResource graphics/createbitmapfromlazarusresource.html - CreateCompatibleBitmaps graphics/createcompatiblebitmaps.html - CreateBitmapFromFPImage graphics/createbitmapfromfpimage.html - DbgS graphics/dbgs.html - ScaleX graphics/scalex.html - ScaleY graphics/scaley.html - Register graphics/register.html - UpdateHandleObjects graphics/updatehandleobjects.html - OnLoadSaveClipBrdGraphicValid graphics/onloadsaveclipbrdgraphicvalid.html - OnLoadGraphicFromClipboardFormat graphics/onloadgraphicfromclipboardformat.html - OnSaveGraphicToClipboardFormat graphics/onsavegraphictoclipboardformat.html - OnGetSystemFont graphics/ongetsystemfont.html - ScreenInfo graphics/screeninfo.html - FontResourceCache graphics/fontresourcecache.html - PenResourceCache graphics/penresourcecache.html - BrushResourceCache graphics/brushresourcecache.html - LCLResCache lclrescache/index.html - TResourceCacheItemClass lclrescache/tresourcecacheitemclass.html - TResourceCacheDescriptorClass lclrescache/tresourcecachedescriptorclass.html - TResourceCacheItem lclrescache/tresourcecacheitem.html - FDestroying lclrescache/tresourcecacheitem.fdestroying.html - FReferenceCount lclrescache/tresourcecacheitem.freferencecount.html - Handle lclrescache/tresourcecacheitem.handle.html - Cache lclrescache/tresourcecacheitem.cache.html - FirstDescriptor lclrescache/tresourcecacheitem.firstdescriptor.html - LastDescriptor lclrescache/tresourcecacheitem.lastdescriptor.html - Next lclrescache/tresourcecacheitem.next.html - Prev lclrescache/tresourcecacheitem.prev.html - IncreaseRefCount lclrescache/tresourcecacheitem.increaserefcount.html - DecreaseRefCount lclrescache/tresourcecacheitem.decreaserefcount.html - AddToList lclrescache/tresourcecacheitem.addtolist.html - RemoveFromList lclrescache/tresourcecacheitem.removefromlist.html - WarnReferenceHigh lclrescache/tresourcecacheitem.warnreferencehigh.html - ReferenceCount lclrescache/tresourcecacheitem.referencecount.html - Create ms-its:rtl.chm::/system/tobject.create.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - TResourceCacheDescriptor lclrescache/tresourcecachedescriptor.html - FDestroying lclrescache/tresourcecachedescriptor.fdestroying.html - Item lclrescache/tresourcecachedescriptor.item.html - Cache lclrescache/tresourcecachedescriptor.cache.html - Next lclrescache/tresourcecachedescriptor.next.html - Prev lclrescache/tresourcecachedescriptor.prev.html - AddToList lclrescache/tresourcecachedescriptor.addtolist.html - RemoveFromList lclrescache/tresourcecachedescriptor.removefromlist.html - Create ms-its:rtl.chm::/system/tobject.create.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - TResourceCache lclrescache/tresourcecache.html - FItems lclrescache/tresourcecache.fitems.html - FDescriptors lclrescache/tresourcecache.fdescriptors.html - FDestroying lclrescache/tresourcecache.fdestroying.html - FResourceCacheDescriptorClass lclrescache/tresourcecache.fresourcecachedescriptorclass.html - FResourceCacheItemClass lclrescache/tresourcecache.fresourcecacheitemclass.html - FMaxUnusedItem lclrescache/tresourcecache.fmaxunuseditem.html - FFirstUnusedItem lclrescache/tresourcecache.ffirstunuseditem.html - FLastUnusedItem lclrescache/tresourcecache.flastunuseditem.html - FUnUsedItemCount lclrescache/tresourcecache.funuseditemcount.html - FLock lclrescache/tresourcecache.flock.html - RemoveItem lclrescache/tresourcecache.removeitem.html - RemoveDescriptor lclrescache/tresourcecache.removedescriptor.html - ItemUsed lclrescache/tresourcecache.itemused.html - ItemUnused lclrescache/tresourcecache.itemunused.html - ItemIsUsed lclrescache/tresourcecache.itemisused.html - Clear lclrescache/tresourcecache.clear.html - CompareItems lclrescache/tresourcecache.compareitems.html - CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html - ConsistencyCheck lclrescache/tresourcecache.consistencycheck.html - Lock lclrescache/tresourcecache.lock.html - Unlock lclrescache/tresourcecache.unlock.html - MaxUnusedItem lclrescache/tresourcecache.maxunuseditem.html - ResourceCacheItemClass lclrescache/tresourcecache.resourcecacheitemclass.html - ResourceCacheDescriptorClass lclrescache/tresourcecache.resourcecachedescriptorclass.html - Create ms-its:rtl.chm::/system/tobject.create.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - THandleResourceCache lclrescache/thandleresourcecache.html - FindItem lclrescache/thandleresourcecache.finditem.html - TBlockResourceCacheDescriptor lclrescache/tblockresourcecachedescriptor.html - Data lclrescache/tblockresourcecachedescriptor.data.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - TBlockResourceCache lclrescache/tblockresourcecache.html - FOnCompareDescPtrWithDescriptor lclrescache/tblockresourcecache.foncomparedescptrwithdescriptor.html - FindDescriptor lclrescache/tblockresourcecache.finddescriptor.html - AddResource lclrescache/tblockresourcecache.addresource.html - DataSize lclrescache/tblockresourcecache.datasize.html - OnCompareDescPtrWithDescriptor lclrescache/tblockresourcecache.oncomparedescptrwithdescriptor.html - Create ms-its:rtl.chm::/system/tobject.create.html - CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html - ComparePHandleWithResourceCacheItem lclrescache/comparephandlewithresourcecacheitem.html - CompareDescPtrWithBlockResDesc lclrescache/comparedescptrwithblockresdesc.html - ImgList imglist/index.html - TImageIndex imglist/timageindex.html - TDrawingStyle imglist/tdrawingstyle.html - TImageType imglist/timagetype.html - TOverlay imglist/toverlay.html - TChangeLink imglist/tchangelink.html - Destroy imglist/tchangelink.destroy.html - Change imglist/tchangelink.change.html - OnChange imglist/tchangelink.onchange.html - Sender imglist/tchangelink.sender.html - TCustomImageList imglist/tcustomimagelist.html - CheckIndex imglist/tcustomimagelist.checkindex.html - GetReferenceHandle imglist/tcustomimagelist.getreferencehandle.html - Initialize imglist/tcustomimagelist.initialize.html - DefineProperties imglist/tcustomimagelist.defineproperties.html - SetWidthHeight imglist/tcustomimagelist.setwidthheight.html - ClearOverlays imglist/tcustomimagelist.clearoverlays.html - WSCreateReference imglist/tcustomimagelist.wscreatereference.html - Create imglist/tcustomimagelist.create.html - CreateSize imglist/tcustomimagelist.createsize.html - Destroy imglist/tcustomimagelist.destroy.html - AssignTo imglist/tcustomimagelist.assignto.html - Assign imglist/tcustomimagelist.assign.html - WriteData imglist/tcustomimagelist.writedata.html - ReadData imglist/tcustomimagelist.readdata.html - Equals imglist/tcustomimagelist.equals.html - BeginUpdate imglist/tcustomimagelist.beginupdate.html - EndUpdate imglist/tcustomimagelist.endupdate.html - Add imglist/tcustomimagelist.add.html - AddIcon imglist/tcustomimagelist.addicon.html - AddImages imglist/tcustomimagelist.addimages.html - AddMasked imglist/tcustomimagelist.addmasked.html - AddLazarusResource imglist/tcustomimagelist.addlazarusresource.html - AddResourceName imglist/tcustomimagelist.addresourcename.html - Change imglist/tcustomimagelist.change.html - Clear imglist/tcustomimagelist.clear.html - Delete imglist/tcustomimagelist.delete.html - Draw imglist/tcustomimagelist.draw.html - DrawOverlay imglist/tcustomimagelist.drawoverlay.html - FillDescription imglist/tcustomimagelist.filldescription.html - GetBitmap imglist/tcustomimagelist.getbitmap.html - GetFullBitmap imglist/tcustomimagelist.getfullbitmap.html - GetFullRawImage imglist/tcustomimagelist.getfullrawimage.html - GetIcon imglist/tcustomimagelist.geticon.html - GetRawImage imglist/tcustomimagelist.getrawimage.html - GetHotSpot imglist/tcustomimagelist.gethotspot.html - Insert imglist/tcustomimagelist.insert.html - InsertIcon imglist/tcustomimagelist.inserticon.html - InsertMasked imglist/tcustomimagelist.insertmasked.html - Move imglist/tcustomimagelist.move.html - Overlay imglist/tcustomimagelist.overlay.html - HasOverlays imglist/tcustomimagelist.hasoverlays.html - Replace imglist/tcustomimagelist.replace.html - ReplaceMasked imglist/tcustomimagelist.replacemasked.html - RegisterChanges imglist/tcustomimagelist.registerchanges.html - StretchDraw imglist/tcustomimagelist.stretchdraw.html - UnRegisterChanges imglist/tcustomimagelist.unregisterchanges.html - AllocBy imglist/tcustomimagelist.allocby.html - BlendColor imglist/tcustomimagelist.blendcolor.html - BkColor imglist/tcustomimagelist.bkcolor.html - Count imglist/tcustomimagelist.count.html - DrawingStyle imglist/tcustomimagelist.drawingstyle.html - HandleAllocated imglist/tcustomimagelist.handleallocated.html - Height imglist/tcustomimagelist.height.html - Width imglist/tcustomimagelist.width.html - OnChange imglist/tcustomimagelist.onchange.html - Masked imglist/tcustomimagelist.masked.html - Reference imglist/tcustomimagelist.reference.html - ShareImages imglist/tcustomimagelist.shareimages.html - ImageType imglist/tcustomimagelist.imagetype.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - LCLIntf lclintf/index.html - TOpenParamStringProc lclintf/topenparamstringproc.html - Arc lclintf/arc.html - AngleChord lclintf/anglechord.html - BeginPaint lclintf/beginpaint.html - BitBlt lclintf/bitblt.html - CallNextHookEx lclintf/callnexthookex.html - CallWindowProc lclintf/callwindowproc.html - ClientToScreen lclintf/clienttoscreen.html - CombineRgn lclintf/combinergn.html - CreateBitmap lclintf/createbitmap.html - CreateBrushIndirect lclintf/createbrushindirect.html - CreateCaret lclintf/createcaret.html - CreateCompatibleBitmap lclintf/createcompatiblebitmap.html - CreateCompatibleDC lclintf/createcompatibledc.html - CreateDIBitmap lclintf/createdibitmap.html - CreateDIBSection lclintf/createdibsection.html - CreateEllipticRgn lclintf/createellipticrgn.html - CreateFontIndirect lclintf/createfontindirect.html - CreateFontIndirectEx lclintf/createfontindirectex.html - CreateIconIndirect lclintf/createiconindirect.html - CreatePalette lclintf/createpalette.html - CreatePatternBrush lclintf/createpatternbrush.html - CreatePenIndirect lclintf/createpenindirect.html - CreatePolygonRgn lclintf/createpolygonrgn.html - CreateRectRgn lclintf/createrectrgn.html - CreateRoundRectRgn lclintf/createroundrectrgn.html - DeleteCriticalSection lclintf/deletecriticalsection.html - DeleteDC lclintf/deletedc.html - DeleteObject lclintf/deleteobject.html - DestroyCaret lclintf/destroycaret.html - DestroyCursor lclintf/destroycursor.html - DestroyIcon lclintf/destroyicon.html - DPtoLP lclintf/dptolp.html - DrawFrameControl lclintf/drawframecontrol.html - DrawFocusRect lclintf/drawfocusrect.html - DrawEdge lclintf/drawedge.html - DrawText lclintf/drawtext.html - EnableScrollBar lclintf/enablescrollbar.html - EnableWindow lclintf/enablewindow.html - EndPaint lclintf/endpaint.html - EnterCriticalSection lclintf/entercriticalsection.html - EnumDisplayMonitors lclintf/enumdisplaymonitors.html - EnumFontFamilies lclintf/enumfontfamilies.html - EnumFontFamiliesEx lclintf/enumfontfamiliesex.html - Ellipse lclintf/ellipse.html - EqualRgn lclintf/equalrgn.html - ExcludeClipRect lclintf/excludecliprect.html - ExtCreatePen lclintf/extcreatepen.html - ExtTextOut lclintf/exttextout.html - ExtSelectClipRGN lclintf/extselectcliprgn.html - FillRect lclintf/fillrect.html - FillRgn lclintf/fillrgn.html - FloodFill lclintf/floodfill.html - FrameRect lclintf/framerect.html - GetActiveWindow lclintf/getactivewindow.html - GetBitmapBits lclintf/getbitmapbits.html - GetBkColor lclintf/getbkcolor.html - GetCapture lclintf/getcapture.html - GetCaretPos lclintf/getcaretpos.html - GetClientRect lclintf/getclientrect.html - GetClipBox lclintf/getclipbox.html - GetClipRGN lclintf/getcliprgn.html - GetCurrentObject lclintf/getcurrentobject.html - GetCursorPos lclintf/getcursorpos.html - GetCharABCWidths lclintf/getcharabcwidths.html - GetDC lclintf/getdc.html - GetDeviceCaps lclintf/getdevicecaps.html - GetDIBits lclintf/getdibits.html - GetDoubleClickTime lclintf/getdoubleclicktime.html - GetFocus lclintf/getfocus.html - GetFontLanguageInfo lclintf/getfontlanguageinfo.html - GetForegroundWindow lclintf/getforegroundwindow.html - GetIconInfo lclintf/geticoninfo.html - GetKeyState lclintf/getkeystate.html - GetMapMode lclintf/getmapmode.html - GetMonitorInfo lclintf/getmonitorinfo.html - GetObject lclintf/getobject.html - GetPaletteEntries lclintf/getpaletteentries.html - GetParent lclintf/getparent.html - GetProp lclintf/getprop.html - GetRgnBox lclintf/getrgnbox.html - GetROP2 lclintf/getrop2.html - GetScrollInfo lclintf/getscrollinfo.html - GetStockObject lclintf/getstockobject.html - GetSysColor lclintf/getsyscolor.html - GetSysColorBrush lclintf/getsyscolorbrush.html - GetSystemPaletteEntries lclintf/getsystempaletteentries.html - GetSystemMetrics lclintf/getsystemmetrics.html - GetTextColor lclintf/gettextcolor.html - GetTextExtentExPoint lclintf/gettextextentexpoint.html - GetTextExtentPoint lclintf/gettextextentpoint.html - GetTextExtentPoint32 lclintf/gettextextentpoint32.html - GetTextMetrics lclintf/gettextmetrics.html - GetViewPortExtEx lclintf/getviewportextex.html - GetViewPortOrgEx lclintf/getviewportorgex.html - GetWindowExtEx lclintf/getwindowextex.html - GetWindowLong lclintf/getwindowlong.html - GetWindowRect lclintf/getwindowrect.html - GetWindowSize lclintf/getwindowsize.html - GetWindowOrgEx lclintf/getwindoworgex.html - GradientFill lclintf/gradientfill.html - HideCaret lclintf/hidecaret.html - InitializeCriticalSection lclintf/initializecriticalsection.html - IntersectClipRect lclintf/intersectcliprect.html - InvalidateRect lclintf/invalidaterect.html - InvalidateRgn lclintf/invalidatergn.html - IsDBCSLeadByte lclintf/isdbcsleadbyte.html - IsIconic lclintf/isiconic.html - IsWindow lclintf/iswindow.html - IsWindowEnabled lclintf/iswindowenabled.html - IsWindowVisible lclintf/iswindowvisible.html - IsZoomed lclintf/iszoomed.html - LeaveCriticalSection lclintf/leavecriticalsection.html - LineTo lclintf/lineto.html - LoadBitmap lclintf/loadbitmap.html - LoadCursor lclintf/loadcursor.html - LoadIcon lclintf/loadicon.html - LPtoDP lclintf/lptodp.html - MaskBlt lclintf/maskblt.html - MessageBox lclintf/messagebox.html - MonitorFromPoint lclintf/monitorfrompoint.html - MonitorFromRect lclintf/monitorfromrect.html - MonitorFromWindow lclintf/monitorfromwindow.html - MoveToEx lclintf/movetoex.html - OffsetRgn lclintf/offsetrgn.html - PaintRgn lclintf/paintrgn.html - PeekMessage lclintf/peekmessage.html - Pie lclintf/pie.html - PolyBezier lclintf/polybezier.html - Polygon lclintf/polygon.html - Polyline lclintf/polyline.html - PostMessage lclintf/postmessage.html - PtInRegion lclintf/ptinregion.html - RealizePalette lclintf/realizepalette.html - Rectangle lclintf/rectangle.html - RectInRegion lclintf/rectinregion.html - RectVisible lclintf/rectvisible.html - RedrawWindow lclintf/redrawwindow.html - ReleaseCapture lclintf/releasecapture.html - ReleaseDC lclintf/releasedc.html - RemoveProp lclintf/removeprop.html - RestoreDC lclintf/restoredc.html - RoundRect lclintf/roundrect.html - SaveDC lclintf/savedc.html - ScreenToClient lclintf/screentoclient.html - ScrollWindowEx lclintf/scrollwindowex.html - SelectClipRGN lclintf/selectcliprgn.html - SelectObject lclintf/selectobject.html - SelectPalette lclintf/selectpalette.html - SendMessage lclintf/sendmessage.html - SetActiveWindow lclintf/setactivewindow.html - SetBkColor lclintf/setbkcolor.html - SetBkMode lclintf/setbkmode.html - SetCapture lclintf/setcapture.html - SetCaretPos lclintf/setcaretpos.html - SetCaretPosEx lclintf/setcaretposex.html - SetCursor lclintf/setcursor.html - SetCursorPos lclintf/setcursorpos.html - SetFocus lclintf/setfocus.html - SetForegroundWindow lclintf/setforegroundwindow.html - SetMapMode lclintf/setmapmode.html - SetMenu lclintf/setmenu.html - SetParent lclintf/setparent.html - SetProp lclintf/setprop.html - SetRectRgn lclintf/setrectrgn.html - SetROP2 lclintf/setrop2.html - SetScrollInfo lclintf/setscrollinfo.html - SetStretchBltMode lclintf/setstretchbltmode.html - SetSysColors lclintf/setsyscolors.html - SetTextCharacterExtra lclintf/settextcharacterextra.html - SetTextColor lclintf/settextcolor.html - SetWindowLong lclintf/setwindowlong.html - SetViewPortExtEx lclintf/setviewportextex.html - SetViewPortOrgEx lclintf/setviewportorgex.html - SetWindowExtEx lclintf/setwindowextex.html - SetWindowOrgEx lclintf/setwindoworgex.html - SetWindowPos lclintf/setwindowpos.html - SetWindowRgn lclintf/setwindowrgn.html - ShowCaret lclintf/showcaret.html - ShowScrollBar lclintf/showscrollbar.html - ShowWindow lclintf/showwindow.html - StretchBlt lclintf/stretchblt.html - StretchDIBits lclintf/stretchdibits.html - SystemParametersInfo lclintf/systemparametersinfo.html - TextOut lclintf/textout.html - UpdateWindow lclintf/updatewindow.html - WindowFromPoint lclintf/windowfrompoint.html - AdjustWindowRectEx lclintf/adjustwindowrectex.html - CharLower lclintf/charlower.html - CharLowerBuff lclintf/charlowerbuff.html - CharUpper lclintf/charupper.html - CharUpperBuff lclintf/charupperbuff.html - CopyRect lclintf/copyrect.html - CreateEllipticRgnIndirect lclintf/createellipticrgnindirect.html - CreateFont lclintf/createfont.html - CreatePen lclintf/createpen.html - CreateRectRgnIndirect lclintf/createrectrgnindirect.html - CreateSolidBrush lclintf/createsolidbrush.html - EqualRect lclintf/equalrect.html - GetScrollPos lclintf/getscrollpos.html - GetScrollRange lclintf/getscrollrange.html - GetRValue lclintf/getrvalue.html - GetGValue lclintf/getgvalue.html - GetBValue lclintf/getbvalue.html - GetRGBValues lclintf/getrgbvalues.html - GetRGBIntValues lclintf/getrgbintvalues.html - IndexToOverlayMask lclintf/indextooverlaymask.html - InflateRect lclintf/inflaterect.html - IntersectRect lclintf/intersectrect.html - IsCharAlphaNumeric lclintf/ischaralphanumeric.html - IsRectEmpty lclintf/isrectempty.html - KillTimer lclintf/killtimer.html - MakeLong lclintf/makelong.html - MakeROP4 lclintf/makerop4.html - MakeWord lclintf/makeword.html - MakeWParam lclintf/makewparam.html - MakeLParam lclintf/makelparam.html - MakeLResult lclintf/makelresult.html - OffsetRect lclintf/offsetrect.html - PtInRect lclintf/ptinrect.html - PointToSmallPoint lclintf/pointtosmallpoint.html - RGB lclintf/rgb.html - ScrollWindow lclintf/scrollwindow.html - SetRect lclintf/setrect.html - SetRectEmpty lclintf/setrectempty.html - SetScrollPos lclintf/setscrollpos.html - SetScrollRange lclintf/setscrollrange.html - SetTimer lclintf/settimer.html - SmallPointToPoint lclintf/smallpointtopoint.html - SubtractRect lclintf/subtractrect.html - UnionRect lclintf/unionrect.html - AddEventHandler lclintf/addeventhandler.html - AddProcessEventHandler lclintf/addprocesseventhandler.html - AddPipeEventHandler lclintf/addpipeeventhandler.html - AllocateHWnd lclintf/allocatehwnd.html - AskUser lclintf/askuser.html - CallDefaultWndHandler lclintf/calldefaultwndhandler.html - ClipboardFormatToMimeType lclintf/clipboardformattomimetype.html - ClipboardGetData lclintf/clipboardgetdata.html - ClipboardGetFormats lclintf/clipboardgetformats.html - ClipboardGetOwnerShip lclintf/clipboardgetownership.html - ClipboardRegisterFormat lclintf/clipboardregisterformat.html - CreateEmptyRegion lclintf/createemptyregion.html - CreatePixmapIndirect lclintf/createpixmapindirect.html - CreateRegionCopy lclintf/createregioncopy.html - CreateRubberBand lclintf/createrubberband.html - CreateStandardCursor lclintf/createstandardcursor.html - DCClipRegionValid lclintf/dcclipregionvalid.html - DeallocateHWnd lclintf/deallocatehwnd.html - DestroyRubberBand lclintf/destroyrubberband.html - DrawDefaultDockImage lclintf/drawdefaultdockimage.html - DrawGrid lclintf/drawgrid.html - ExtUTF8Out lclintf/extutf8out.html - FontCanUTF8 lclintf/fontcanutf8.html - FontIsMonoSpace lclintf/fontismonospace.html - Frame3d lclintf/frame3d.html - GetAcceleratorString lclintf/getacceleratorstring.html - GetAvailableNativeCanvasTypes lclintf/getavailablenativecanvastypes.html - GetAvailableNativeHandleTypes lclintf/getavailablenativehandletypes.html - GetCaretRespondToFocus lclintf/getcaretrespondtofocus.html - GetClientBounds lclintf/getclientbounds.html - GetCmdLineParamDescForInterface lclintf/getcmdlineparamdescforinterface.html - GetControlConstraints lclintf/getcontrolconstraints.html - GetDCOriginRelativeToWindow lclintf/getdcoriginrelativetowindow.html - GetDesignerDC lclintf/getdesignerdc.html - GetDeviceSize lclintf/getdevicesize.html - GetLCLOwnerObject lclintf/getlclownerobject.html - GetNativeCanvas lclintf/getnativecanvas.html - GetNativeHandle lclintf/getnativehandle.html - GetScrollBarSize lclintf/getscrollbarsize.html - GetScrollbarVisible lclintf/getscrollbarvisible.html - GetWindowRelativePosition lclintf/getwindowrelativeposition.html - IntfSendsUTF8KeyPress lclintf/intfsendsutf8keypress.html - InvalidateFrame lclintf/invalidateframe.html - IsDesignerDC lclintf/isdesignerdc.html - IsMobilePlatform lclintf/ismobileplatform.html - IsCDIntfControl lclintf/iscdintfcontrol.html - MoveWindowOrgEx lclintf/movewindoworgex.html - PromptUser lclintf/promptuser.html - PromptUserAtXY lclintf/promptuseratxy.html - RadialArc lclintf/radialarc.html - RadialChord lclintf/radialchord.html - RadialPie lclintf/radialpie.html - RawImage_CreateBitmaps lclintf/rawimage_createbitmaps.html - RawImage_DescriptionFromBitmap lclintf/rawimage_descriptionfrombitmap.html - RawImage_DescriptionFromDevice lclintf/rawimage_descriptionfromdevice.html - RawImage_FromBitmap lclintf/rawimage_frombitmap.html - RawImage_FromDevice lclintf/rawimage_fromdevice.html - RawImage_QueryDescription lclintf/rawimage_querydescription.html - RegroupMenuItem lclintf/regroupmenuitem.html - ReleaseDesignerDC lclintf/releasedesignerdc.html - RemoveEventHandler lclintf/removeeventhandler.html - RemoveProcessEventHandler lclintf/removeprocesseventhandler.html - RemovePipeEventHandler lclintf/removepipeeventhandler.html - RequestInput lclintf/requestinput.html - SendCachedLCLMessages lclintf/sendcachedlclmessages.html - SetCaretRespondToFocus lclintf/setcaretrespondtofocus.html - SetComboMinDropDownSize lclintf/setcombomindropdownsize.html - SetEventHandlerFlags lclintf/seteventhandlerflags.html - SetRubberBandRect lclintf/setrubberbandrect.html - ShowSelectItemDialog lclintf/showselectitemdialog.html - StretchMaskBlt lclintf/stretchmaskblt.html - TextUTF8Out lclintf/textutf8out.html - ExcludeClipRgn lclintf/excludecliprgn.html - NotifyUser lclintf/notifyuser.html - NotifyUserAtXY lclintf/notifyuseratxy.html - PredefinedClipboardFormat lclintf/predefinedclipboardformat.html - MsgKeyDataToShiftState lclintf/msgkeydatatoshiftstate.html - GetTickCount lclintf/gettickcount.html - GetTickCount64 lclintf/gettickcount64.html - FindDefaultBrowser lclintf/finddefaultbrowser.html - OpenURL lclintf/openurl.html - OpenDocument lclintf/opendocument.html - OnShowSelectItemDialogResult lclintf/onshowselectitemdialogresult.html - OnListViewDialogResult lclintf/onlistviewdialogresult.html - OpenURLWidgetsetImplementation lclintf/openurlwidgetsetimplementation.html - OpenDocumentWidgetsetImplementation lclintf/opendocumentwidgetsetimplementation.html - maps maps/index.html - itsPtrSize maps/itsptrsize.html - ituPtrSize maps/ituptrsize.html - TMapIdType maps/tmapidtype.html - PMapItem maps/pmapitem.html - PMapLink maps/pmaplink.html - TMapLink maps/tmaplink.html - PMapID maps/pmapid.html - TMapID maps/tmapid.html - TMapItem maps/tmapitem.html - TBaseMap maps/tbasemap.html - InternalAdd maps/tbasemap.internaladd.html - InternalGetData maps/tbasemap.internalgetdata.html - InternalGetDataPtr maps/tbasemap.internalgetdataptr.html - InternalGetId maps/tbasemap.internalgetid.html - InternalSetData maps/tbasemap.internalsetdata.html - ReleaseData maps/tbasemap.releasedata.html - Create maps/tbasemap.create.html - Clear maps/tbasemap.clear.html - Count maps/tbasemap.count.html - Delete maps/tbasemap.delete.html - Destroy maps/tbasemap.destroy.html - TBaseMapIterator maps/tbasemapiterator.html - InternalCreate maps/tbasemapiterator.internalcreate.html - InternalLocate maps/tbasemapiterator.internallocate.html - Validate maps/tbasemapiterator.validate.html - ValidateMap maps/tbasemapiterator.validatemap.html - Current maps/tbasemapiterator.current.html - Destroy maps/tbasemapiterator.destroy.html - First maps/tbasemapiterator.first.html - Next maps/tbasemapiterator.next.html - Previous maps/tbasemapiterator.previous.html - Last maps/tbasemapiterator.last.html - Valid maps/tbasemapiterator.valid.html - BOM maps/tbasemapiterator.bom.html - EOM maps/tbasemapiterator.eom.html - TMap maps/tmap.html - Add maps/tmap.add.html - HasId maps/tmap.hasid.html - GetData maps/tmap.getdata.html - GetDataPtr maps/tmap.getdataptr.html - SetData maps/tmap.setdata.html - TMapIterator maps/tmapiterator.html - Create maps/tmapiterator.create.html - DataPtr maps/tmapiterator.dataptr.html - GetData maps/tmapiterator.getdata.html - GetID maps/tmapiterator.getid.html - Locate maps/tmapiterator.locate.html - SetData maps/tmapiterator.setdata.html - TTypedMap maps/ttypedmap.html - InternalSetData maps/tbasemap.internalsetdata.html - ReleaseData maps/ttypedmap.releasedata.html - Add maps/ttypedmap.add.html - Create maps/tbasemap.create.html - Destroy maps/tbasemap.destroy.html - HasId maps/ttypedmap.hasid.html - GetData maps/ttypedmap.getdata.html - GetDataPtr maps/ttypedmap.getdataptr.html - SetData maps/ttypedmap.setdata.html - TTypedMapIterator maps/ttypedmapiterator.html - Create maps/ttypedmapiterator.create.html - GetData maps/ttypedmapiterator.getdata.html - GetID maps/ttypedmapiterator.getid.html - Locate maps/ttypedmapiterator.locate.html - SetData maps/ttypedmapiterator.setdata.html - MapReport maps/mapreport.html - ActnList actnlist/index.html - RegisterActionsProc actnlist/registeractionsproc.html - UnRegisterActionsProc actnlist/unregisteractionsproc.html - EnumRegisteredActionsProc actnlist/enumregisteredactionsproc.html - CreateActionProc actnlist/createactionproc.html - TContainedActionClass actnlist/tcontainedactionclass.html - TActionEvent actnlist/tactionevent.html - TActionListState actnlist/tactionliststate.html - THintEvent actnlist/thintevent.html - TActionLinkClass actnlist/tactionlinkclass.html - TEnumActionProc actnlist/tenumactionproc.html - TContainedAction actnlist/tcontainedaction.html - ActionList actnlist/tcontainedaction.actionlist.html - Index actnlist/tcontainedaction.index.html - Category actnlist/tcontainedaction.category.html - ReadState - SetParentComponent - Destroy ms-its:rtl.chm::/classes/tbasicaction.destroy.html - Execute ms-its:rtl.chm::/classes/tbasicaction.execute.html - GetParentComponent ms-its:rtl.chm::/classes/tcomponent.getparentcomponent.html - HasParent ms-its:rtl.chm::/classes/tcomponent.hasparent.html - Update ms-its:rtl.chm::/classes/tbasicaction.update.html - TActionListEnumerator actnlist/tactionlistenumerator.html - Create actnlist/tactionlistenumerator.create.html - MoveNext actnlist/tactionlistenumerator.movenext.html - Current actnlist/tactionlistenumerator.current.html - TCustomActionList actnlist/tcustomactionlist.html - AddAction actnlist/tcustomactionlist.addaction.html - RemoveAction actnlist/tcustomactionlist.removeaction.html - Change actnlist/tcustomactionlist.change.html - SetImages actnlist/tcustomactionlist.setimages.html - OnChange actnlist/tcustomactionlist.onchange.html - OnExecute actnlist/tcustomactionlist.onexecute.html - OnUpdate actnlist/tcustomactionlist.onupdate.html - Create actnlist/tcustomactionlist.create.html - Destroy actnlist/tcustomactionlist.destroy.html - ActionByName actnlist/tcustomactionlist.actionbyname.html - GetEnumerator actnlist/tcustomactionlist.getenumerator.html - IndexOfName actnlist/tcustomactionlist.indexofname.html - IsShortCut actnlist/tcustomactionlist.isshortcut.html - Actions actnlist/tcustomactionlist.actions.html - ActionCount actnlist/tcustomactionlist.actioncount.html - Images actnlist/tcustomactionlist.images.html - State actnlist/tcustomactionlist.state.html - GetChildren - Notification - SetChildOrder - ExecuteAction ms-its:rtl.chm::/classes/tcomponent.executeaction.html - UpdateAction ms-its:rtl.chm::/classes/tcomponent.updateaction.html - TActionList actnlist/tactionlist.html - Images actnlist/tcustomactionlist.images.html - State actnlist/tcustomactionlist.state.html - OnChange actnlist/tcustomactionlist.onchange.html - OnExecute actnlist/tcustomactionlist.onexecute.html - OnUpdate actnlist/tcustomactionlist.onupdate.html - TShortCutList actnlist/tshortcutlist.html - Add actnlist/tshortcutlist.add.html - IndexOfShortCut actnlist/tshortcutlist.indexofshortcut.html - ShortCuts actnlist/tshortcutlist.shortcuts.html - TCustomAction actnlist/tcustomaction.html - FImage actnlist/tcustomaction.fimage.html - FMask actnlist/tcustomaction.fmask.html - HandleShortCut actnlist/tcustomaction.handleshortcut.html - SavedEnabledState actnlist/tcustomaction.savedenabledstate.html - Create actnlist/tcustomaction.create.html - Destroy actnlist/tcustomaction.destroy.html - DoHint actnlist/tcustomaction.dohint.html - AutoCheck actnlist/tcustomaction.autocheck.html - Caption actnlist/tcustomaction.caption.html - Checked actnlist/tcustomaction.checked.html - DisableIfNoHandler actnlist/tcustomaction.disableifnohandler.html - Enabled actnlist/tcustomaction.enabled.html - GroupIndex actnlist/tcustomaction.groupindex.html - HelpContext actnlist/tcustomaction.helpcontext.html - HelpKeyword actnlist/tcustomaction.helpkeyword.html - HelpType actnlist/tcustomaction.helptype.html - Hint actnlist/tcustomaction.hint.html - ImageIndex actnlist/tcustomaction.imageindex.html - OnHint actnlist/tcustomaction.onhint.html - SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html - ShortCut actnlist/tcustomaction.shortcut.html - Visible actnlist/tcustomaction.visible.html - AssignTo - SetName - Execute ms-its:rtl.chm::/classes/tbasicaction.execute.html - TAction actnlist/taction.html - Create actnlist/tcustomaction.create.html - AutoCheck actnlist/tcustomaction.autocheck.html - Caption actnlist/tcustomaction.caption.html - Checked actnlist/tcustomaction.checked.html - DisableIfNoHandler actnlist/tcustomaction.disableifnohandler.html - Enabled actnlist/tcustomaction.enabled.html - GroupIndex actnlist/tcustomaction.groupindex.html - HelpContext actnlist/tcustomaction.helpcontext.html - HelpKeyword actnlist/tcustomaction.helpkeyword.html - HelpType actnlist/tcustomaction.helptype.html - Hint actnlist/tcustomaction.hint.html - ImageIndex actnlist/tcustomaction.imageindex.html - OnExecute ms-its:rtl.chm::/classes/tbasicaction.onexecute.html - OnHint actnlist/tcustomaction.onhint.html - OnUpdate ms-its:rtl.chm::/classes/tbasicaction.onupdate.html - SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html - ShortCut actnlist/tcustomaction.shortcut.html - Visible actnlist/tcustomaction.visible.html - TActionLink actnlist/tactionlink.html - SetAutoCheck actnlist/tactionlink.setautocheck.html - SetCaption actnlist/tactionlink.setcaption.html - SetChecked actnlist/tactionlink.setchecked.html - SetEnabled actnlist/tactionlink.setenabled.html - SetGroupIndex actnlist/tactionlink.setgroupindex.html - SetHelpContext actnlist/tactionlink.sethelpcontext.html - SetHelpKeyword actnlist/tactionlink.sethelpkeyword.html - SetHelpType actnlist/tactionlink.sethelptype.html - SetHint actnlist/tactionlink.sethint.html - SetImageIndex actnlist/tactionlink.setimageindex.html - SetShortCut actnlist/tactionlink.setshortcut.html - SetVisible actnlist/tactionlink.setvisible.html - IsCaptionLinked actnlist/tactionlink.iscaptionlinked.html - IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html - IsEnabledLinked actnlist/tactionlink.isenabledlinked.html - IsGroupIndexLinked actnlist/tactionlink.isgroupindexlinked.html - IsHelpContextLinked actnlist/tactionlink.ishelpcontextlinked.html - IsHelpLinked actnlist/tactionlink.ishelplinked.html - IsHintLinked actnlist/tactionlink.ishintlinked.html - IsImageIndexLinked actnlist/tactionlink.isimageindexlinked.html - IsShortCutLinked actnlist/tactionlink.isshortcutlinked.html - IsVisibleLinked actnlist/tactionlink.isvisiblelinked.html - RegisterActions actnlist/registeractions.html - UnRegisterActions actnlist/unregisteractions.html - EnumRegisteredActions actnlist/enumregisteredactions.html - CreateAction actnlist/createaction.html - Register actnlist/register.html - ApplicationActionComponent actnlist/applicationactioncomponent.html - Clipbrd clipbrd/index.html - TClipboardData clipbrd/tclipboarddata.html - TClipboard clipbrd/tclipboard.html - AddFormat clipbrd/tclipboard.addformat.html - Clear clipbrd/tclipboard.clear.html - Close clipbrd/tclipboard.close.html - Create clipbrd/tclipboard.create.html - FindPictureFormatID clipbrd/tclipboard.findpictureformatid.html - FindFormatID clipbrd/tclipboard.findformatid.html - GetComponent clipbrd/tclipboard.getcomponent.html - GetComponentAsText clipbrd/tclipboard.getcomponentastext.html - GetFormat clipbrd/tclipboard.getformat.html - SupportedFormats clipbrd/tclipboard.supportedformats.html - GetTextBuf clipbrd/tclipboard.gettextbuf.html - HasFormat clipbrd/tclipboard.hasformat.html - HasFormatName clipbrd/tclipboard.hasformatname.html - HasPictureFormat clipbrd/tclipboard.haspictureformat.html - Open clipbrd/tclipboard.open.html - SetComponent clipbrd/tclipboard.setcomponent.html - SetComponentAsText clipbrd/tclipboard.setcomponentastext.html - SetFormat clipbrd/tclipboard.setformat.html - SetSupportedFormats clipbrd/tclipboard.setsupportedformats.html - AsText clipbrd/tclipboard.astext.html - ClipboardType clipbrd/tclipboard.clipboardtype.html - FormatCount clipbrd/tclipboard.formatcount.html - Formats clipbrd/tclipboard.formats.html - OnRequest clipbrd/tclipboard.onrequest.html - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html - AssignTo - Destroy ms-its:rtl.chm::/classes/tpersistent.destroy.html - SetTextBuf ms-its:rtl.chm::/system/settextbuf.html - CF_Text clipbrd/cf_text.html - CF_Bitmap clipbrd/cf_bitmap.html - CF_Picture clipbrd/cf_picture.html - CF_MetaFilePict clipbrd/cf_metafilepict.html - CF_Object clipbrd/cf_object.html - CF_Component clipbrd/cf_component.html - Clipboard clipbrd/clipboard.html - SetClipboard clipbrd/setclipboard.html - PrimarySelection clipbrd/primaryselection.html - SecondarySelection clipbrd/secondaryselection.html - FreeAllClipboards clipbrd/freeallclipboards.html - RegisterClipboardFormat clipbrd/registerclipboardformat.html - StdActns stdactns/index.html - Forms forms/index.html - DefHintColor forms/defhintcolor.html - DefHintPause forms/defhintpause.html - DefHintShortPause forms/defhintshortpause.html - DefHintHidePause forms/defhinthidepause.html - DefHintHidePausePerChar forms/defhinthidepauseperchar.html - DefaultBorderIcons forms/defaultbordericons.html - TProcedure forms/tprocedure.html - TProcedureOfObject forms/tprocedureofobject.html - TPosition forms/tposition.html - TWindowState forms/twindowstate.html - TCloseAction forms/tcloseaction.html - TScrollBarKind forms/tscrollbarkind.html - TScrollBarInc forms/tscrollbarinc.html - TScrollBarStyle forms/tscrollbarstyle.html - TCustomFrameClass forms/tcustomframeclass.html - TBorderIcon forms/tbordericon.html - TBorderIcons forms/tbordericons.html - TDefaultMonitor forms/tdefaultmonitor.html - TFormStateType forms/tformstatetype.html - TFormState forms/tformstate.html - TModalResult forms/tmodalresult.html - PModalResult forms/pmodalresult.html - TFormHandlerType forms/tformhandlertype.html - TShowInTaskbar forms/tshowintaskbar.html - TPopupMode forms/tpopupmode.html - TCloseEvent forms/tcloseevent.html - TCloseQueryEvent forms/tclosequeryevent.html - TDropFilesEvent forms/tdropfilesevent.html - THelpEvent forms/thelpevent.html - TShortCutEvent forms/tshortcutevent.html - TModalDialogFinished forms/tmodaldialogfinished.html - TCustomFormClass forms/tcustomformclass.html - TFormClass forms/tformclass.html - THintWindowClass forms/thintwindowclass.html - PCursorRec forms/pcursorrec.html - TCursorRec forms/tcursorrec.html - TScreenFormEvent forms/tscreenformevent.html - TScreenControlEvent forms/tscreencontrolevent.html - TScreenNotification forms/tscreennotification.html - TMonitorDefaultTo forms/tmonitordefaultto.html - TQueryEndSessionEvent forms/tqueryendsessionevent.html - TExceptionEvent forms/texceptionevent.html - TGetHandleEvent forms/tgethandleevent.html - TIdleEvent forms/tidleevent.html - TOnUserInputEvent forms/tonuserinputevent.html - TDataEvent forms/tdataevent.html - TCMHintShow forms/tcmhintshow.html - TCMHintShowPause forms/tcmhintshowpause.html - TAppHintTimerType forms/tapphinttimertype.html - TShowHintEvent forms/tshowhintevent.html - THintInfoAtMouse forms/thintinfoatmouse.html - TApplicationFlag forms/tapplicationflag.html - TApplicationFlags forms/tapplicationflags.html - TApplicationNavigationOption forms/tapplicationnavigationoption.html - TApplicationNavigationOptions forms/tapplicationnavigationoptions.html - TApplicationHandlerType forms/tapplicationhandlertype.html - PAsyncCallQueueItem forms/pasynccallqueueitem.html - TAsyncCallQueueItem forms/tasynccallqueueitem.html - TAsyncCallQueue forms/tasynccallqueue.html - TAsyncCallQueues forms/tasynccallqueues.html - TApplicationType forms/tapplicationtype.html - TApplicationExceptionDlg forms/tapplicationexceptiondlg.html - TApplicationShowGlyphs forms/tapplicationshowglyphs.html - TTaskBarBehavior forms/ttaskbarbehavior.html - TFocusState forms/tfocusstate.html - TGetDesignerFormEvent forms/tgetdesignerformevent.html - TMessageBoxFunction forms/tmessageboxfunction.html - TCustomHintAction forms/tcustomhintaction.html - Hint actnlist/tcustomaction.hint.html - EScrollBar forms/escrollbar.html - TControlScrollBar forms/tcontrolscrollbar.html - FControl forms/tcontrolscrollbar.fcontrol.html - ControlHandle forms/tcontrolscrollbar.controlhandle.html - GetAutoScroll forms/tcontrolscrollbar.getautoscroll.html - HandleAllocated forms/tcontrolscrollbar.handleallocated.html - ControlUpdateScrollBars forms/tcontrolscrollbar.controlupdatescrollbars.html - InternalSetRange forms/tcontrolscrollbar.internalsetrange.html - ScrollHandler forms/tcontrolscrollbar.scrollhandler.html - UpdateScrollBar forms/tcontrolscrollbar.updatescrollbar.html - InvalidateScrollInfo forms/tcontrolscrollbar.invalidatescrollinfo.html - GetHorzScrollBar forms/tcontrolscrollbar.gethorzscrollbar.html - GetVertScrollBar forms/tcontrolscrollbar.getvertscrollbar.html - ScrollBarShouldBeVisible forms/tcontrolscrollbar.scrollbarshouldbevisible.html - Create forms/tcontrolscrollbar.create.html - Assign forms/tcontrolscrollbar.assign.html - IsScrollBarVisible forms/tcontrolscrollbar.isscrollbarvisible.html - ScrollPos forms/tcontrolscrollbar.scrollpos.html - Kind forms/tcontrolscrollbar.kind.html - GetOtherScrollBar forms/tcontrolscrollbar.getotherscrollbar.html - Size forms/tcontrolscrollbar.size.html - ClientSize forms/tcontrolscrollbar.clientsize.html - ClientSizeWithBar forms/tcontrolscrollbar.clientsizewithbar.html - ClientSizeWithoutBar forms/tcontrolscrollbar.clientsizewithoutbar.html - Increment forms/tcontrolscrollbar.increment.html - Page forms/tcontrolscrollbar.page.html - Smooth forms/tcontrolscrollbar.smooth.html - Position forms/tcontrolscrollbar.position.html - Range forms/tcontrolscrollbar.range.html - Tracking forms/tcontrolscrollbar.tracking.html - Visible forms/tcontrolscrollbar.visible.html - GetIncrement - GetPage - GetPosition - GetRange - GetSize - GetSmooth - IsRangeStored - SetIncrement - SetPage - SetPosition - SetRange - SetSmooth - SetTracking - SetVisible - TScrollingWinControl forms/tscrollingwincontrol.html - AutoScrollEnabled forms/tscrollingwincontrol.autoscrollenabled.html - CalculateAutoRanges forms/tscrollingwincontrol.calculateautoranges.html - GetClientScrollOffset forms/tscrollingwincontrol.getclientscrolloffset.html - WMSize forms/tscrollingwincontrol.wmsize.html - WMHScroll forms/tscrollingwincontrol.wmhscroll.html - WMVScroll forms/tscrollingwincontrol.wmvscroll.html - ComputeScrollbars forms/tscrollingwincontrol.computescrollbars.html - ScrollbarHandler forms/tscrollingwincontrol.scrollbarhandler.html - Loaded forms/tscrollingwincontrol.loaded.html - Resizing forms/tscrollingwincontrol.resizing.html - AutoScroll forms/tscrollingwincontrol.autoscroll.html - Destroy forms/tscrollingwincontrol.destroy.html - UpdateScrollbars forms/tscrollingwincontrol.updatescrollbars.html - ScrollBy forms/tscrollingwincontrol.scrollby.html - HorzScrollBar forms/tscrollingwincontrol.horzscrollbar.html - VertScrollBar forms/tscrollingwincontrol.vertscrollbar.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - AlignControls controls/twincontrol.aligncontrols.html - CreateWnd controls/twincontrol.createwnd.html - GetLogicalClientRect controls/tcontrol.getlogicalclientrect.html - DoOnResize controls/tcontrol.doonresize.html - SetAutoScroll - SetAutoSize controls/tcontrol.autosize.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - TScrollBox forms/tscrollbox.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - AutoScroll forms/tscrollingwincontrol.autoscroll.html - BorderSpacing controls/tcontrol.borderspacing.html - BiDiMode controls/tcontrol.bidimode.html - BorderStyle controls/twincontrol.borderstyle.html - ChildSizing controls/twincontrol.childsizing.html - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Constraints controls/tcontrol.constraints.html - DockSite controls/twincontrol.docksite.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Color controls/tcontrol.color.html - Font controls/tcontrol.font.html - ParentBiDiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnClick controls/tcontrol.onclick.html - OnConstrainedResize controls/tcontrol.onconstrainedresize.html - OnDblClick controls/tcontrol.ondblclick.html - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUnDock controls/twincontrol.onundock.html - OnPaint controls/tcustomcontrol.onpaint.html - TCustomFrame forms/tcustomframe.html - Notification forms/tcustomframe.notification.html - SetParent forms/tcustomframe.setparent.html - GetChildren forms/tcustomframe.getchildren.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DefineProperties - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - TFrame forms/tframe.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoScroll forms/tscrollingwincontrol.autoscroll.html - AutoSize controls/tcontrol.autosize.html - BiDiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - ChildSizing controls/twincontrol.childsizing.html - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DockSite controls/twincontrol.docksite.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - LCLVersion lclversion/lcl_version.html - OnClick controls/tcontrol.onclick.html - OnConstrainedResize controls/tcontrol.onconstrainedresize.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUnDock controls/twincontrol.onundock.html - ParentBiDiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TCustomForm forms/tcustomform.html - FActionLists forms/tcustomform.factionlists.html - CMShowingChanged forms/tcustomform.cmshowingchanged.html - DoShowWindow forms/tcustomform.doshowwindow.html - Activate forms/tcustomform.activate.html - ActiveChanged forms/tcustomform.activechanged.html - AdjustClientRect forms/tcustomform.adjustclientrect.html - BeginFormUpdate forms/tcustomform.beginformupdate.html - Deactivate forms/tcustomform.deactivate.html - DoClose forms/tcustomform.doclose.html - DoCreate forms/tcustomform.docreate.html - DoDestroy forms/tcustomform.dodestroy.html - DoHide forms/tcustomform.dohide.html - DoShow forms/tcustomform.doshow.html - EndFormUpdate forms/tcustomform.endformupdate.html - HandleCreateException forms/tcustomform.handlecreateexception.html - HandleDestroyException forms/tcustomform.handledestroyexception.html - HandleShowHideException forms/tcustomform.handleshowhideexception.html - Loaded forms/tcustomform.loaded.html - ChildHandlesCreated forms/tcustomform.childhandlescreated.html - Resizing forms/tcustomform.resizing.html - SetZOrder forms/tcustomform.setzorder.html - UpdateShowing forms/tcustomform.updateshowing.html - DoFirstShow forms/tcustomform.dofirstshow.html - UpdateWindowState forms/tcustomform.updatewindowstate.html - VisibleChanging forms/tcustomform.visiblechanging.html - VisibleChanged forms/tcustomform.visiblechanged.html - DoAddActionList forms/tcustomform.doaddactionlist.html - DoRemoveActionList forms/tcustomform.doremoveactionlist.html - BeginAutoDrag forms/tcustomform.beginautodrag.html - GetDefaultDockCaption forms/tcustomform.getdefaultdockcaption.html - CMActionExecute forms/tcustomform.cmactionexecute.html - CMActionUpdate forms/tcustomform.cmactionupdate.html - DoExecuteAction forms/tcustomform.doexecuteaction.html - DoUpdateAction forms/tcustomform.doupdateaction.html - UpdateActions forms/tcustomform.updateactions.html - ClientHandle forms/tcustomform.clienthandle.html - CreateNew forms/tcustomform.createnew.html - Destroy forms/tcustomform.destroy.html - AfterConstruction forms/tcustomform.afterconstruction.html - BeforeDestruction forms/tcustomform.beforedestruction.html - BigIconHandle forms/tcustomform.bigiconhandle.html - Close forms/tcustomform.close.html - CloseQuery forms/tcustomform.closequery.html - DefocusControl forms/tcustomform.defocuscontrol.html - EnsureVisible forms/tcustomform.ensurevisible.html - FocusControl forms/tcustomform.focuscontrol.html - GetFormImage forms/tcustomform.getformimage.html - GetRolesForControl forms/tcustomform.getrolesforcontrol.html - IntfDropFiles forms/tcustomform.intfdropfiles.html - IntfHelp forms/tcustomform.intfhelp.html - IsShortcut forms/tcustomform.isshortcut.html - MakeFullyVisible forms/tcustomform.makefullyvisible.html - AutoSizeDelayedHandle forms/tcustomform.autosizedelayedhandle.html - Release forms/tcustomform.release.html - CanFocus forms/tcustomform.canfocus.html - SetFocusedControl forms/tcustomform.setfocusedcontrol.html - SetRestoredBounds forms/tcustomform.setrestoredbounds.html - ShowModal forms/tcustomform.showmodal.html - ShowOnTop forms/tcustomform.showontop.html - SmallIconHandle forms/tcustomform.smalliconhandle.html - GetChildren forms/tcustomform.getchildren.html - WantChildKey forms/tcustomform.wantchildkey.html - AddHandlerFirstShow forms/tcustomform.addhandlerfirstshow.html - RemoveHandlerFirstShow forms/tcustomform.removehandlerfirstshow.html - AddHandlerClose forms/tcustomform.addhandlerclose.html - RemoveHandlerClose forms/tcustomform.removehandlerclose.html - AddHandlerCreate forms/tcustomform.addhandlercreate.html - RemoveHandlerCreate forms/tcustomform.removehandlercreate.html - ActiveMDIChild forms/tcustomform.activemdichild.html - Active forms/tcustomform.active.html - ActiveControl forms/tcustomform.activecontrol.html - ActiveDefaultControl forms/tcustomform.activedefaultcontrol.html - AllowDropFiles forms/tcustomform.allowdropfiles.html - AlphaBlend forms/tcustomform.alphablend.html - AlphaBlendValue forms/tcustomform.alphablendvalue.html - AutoScroll forms/tcustomform.autoscroll.html - BorderIcons forms/tcustomform.bordericons.html - BorderStyle forms/tcustomform.borderstyle.html - CancelControl forms/tcustomform.cancelcontrol.html - DefaultControl forms/tcustomform.defaultcontrol.html - DefaultMonitor forms/tcustomform.defaultmonitor.html - Designer forms/tcustomform.designer.html - DesignTimeDPI forms/tcustomform.designtimedpi.html - FormState forms/tcustomform.formstate.html - FormStyle forms/tcustomform.formstyle.html - HelpFile forms/tcustomform.helpfile.html - Icon forms/tcustomform.icon.html - KeyPreview forms/tcustomform.keypreview.html - MDIChildren forms/tcustomform.mdichildren.html - Menu forms/tcustomform.menu.html - ModalResult forms/tcustomform.modalresult.html - Monitor forms/tcustomform.monitor.html - PopupMode forms/tcustomform.popupmode.html - PopupParent forms/tcustomform.popupparent.html - OnActivate forms/tcustomform.onactivate.html - OnClose forms/tcustomform.onclose.html - OnCloseQuery forms/tcustomform.onclosequery.html - OnCreate forms/tcustomform.oncreate.html - OnDeactivate forms/tcustomform.ondeactivate.html - OnDestroy forms/tcustomform.ondestroy.html - OnDropFiles forms/tcustomform.ondropfiles.html - OnHelp forms/tcustomform.onhelp.html - OnHide forms/tcustomform.onhide.html - OnShortcut forms/tcustomform.onshortcut.html - OnShow forms/tcustomform.onshow.html - OnShowModalFinished forms/tcustomform.onshowmodalfinished.html - OnWindowStateChange forms/tcustomform.onwindowstatechange.html - PixelsPerInch forms/tcustomform.pixelsperinch.html - Position forms/tcustomform.position.html - RestoredLeft forms/tcustomform.restoredleft.html - RestoredTop forms/tcustomform.restoredtop.html - RestoredWidth forms/tcustomform.restoredwidth.html - RestoredHeight forms/tcustomform.restoredheight.html - ShowInTaskBar forms/tcustomform.showintaskbar.html - WindowState forms/tcustomform.windowstate.html - FFormBorderStyle - FFormState - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - ColorIsStored controls/tcontrol.color.html - CreateParams controls/twincontrol.createparams.html - CreateWnd controls/twincontrol.createwnd.html - InitializeWnd - Notification - PaintWindow - RequestAlign controls/tcontrol.requestalign.html - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - SetParent controls/tcontrol.parent.html - MoveToDefaultPosition - SetVisible - AllAutoSized controls/twincontrol.allautosized.html - WndProc controls/tcontrol.wndproc.html - VisibleIsStored - DoSendBoundsToInterface controls/twincontrol.dosendboundstointerface.html - DoAutoSize controls/tcontrol.doautosize.html - SetAutoSize controls/tcontrol.autosize.html - SetAutoScroll - DoDock controls/tcontrol.dodock.html - GetFloating controls/tcontrol.getfloating.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - DestroyWnd controls/twincontrol.destroywnd.html - FormIsUpdating controls/tcontrol.formisupdating.html - Hide controls/tcontrol.hide.html - GetPreferredSize controls/tcontrol.getpreferredsize.html - SetFocus controls/twincontrol.setfocus.html - Show controls/tcontrol.show.html - RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html - GetMDIChildren - MDIChildCount - Dock controls/tcontrol.dock.html - UpdateDockCaption controls/twincontrol.updatedockcaption.html - Caption controls/tcontrol.caption.html - Color controls/tcontrol.color.html - OnResize controls/tcontrol.onresize.html - ParentFont controls/tcontrol.parentfont.html - Visible controls/tcontrol.visible.html - TForm forms/tform.html - Cascade forms/tform.cascade.html - Next forms/tform.next.html - Previous forms/tform.previous.html - Tile forms/tform.tile.html - LCLVersion forms/tform.lclversion.html - CreateWnd controls/twincontrol.createwnd.html - Loaded forms/tcustomform.loaded.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - ClientHandle - DockManager controls/twincontrol.dockmanager.html - Action controls/tcontrol.action.html - ActiveControl - Align controls/tcontrol.align.html - AllowDropFiles - AlphaBlend - AlphaBlendValue - Anchors controls/tcontrol.anchors.html - AutoScroll - AutoSize controls/tcontrol.autosize.html - BiDiMode controls/tcontrol.bidimode.html - BorderIcons - BorderStyle - BorderWidth controls/twincontrol.borderwidth.html - Caption controls/tcontrol.caption.html - ChildSizing controls/twincontrol.childsizing.html - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DefaultMonitor - DockSite controls/twincontrol.docksite.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - FormStyle - HelpFile - Icon - KeyPreview - Menu - OnActivate - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnClose - OnCloseQuery - OnContextPopup - OnCreate - OnDblClick controls/tcontrol.ondblclick.html - OnDeactivate - OnDestroy - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDropFiles - OnEndDock controls/tcontrol.onenddock.html - OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html - OnHelp - OnHide - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnPaint controls/tcustomcontrol.onpaint.html - OnResize controls/tcontrol.onresize.html - OnShortCut - OnShow - OnShowHint controls/tcontrol.onshowhint.html - OnStartDock controls/tcontrol.onstartdock.html - OnUnDock controls/twincontrol.onundock.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - OnWindowStateChange - ParentBiDiMode controls/tcontrol.parentbidimode.html - ParentFont controls/tcontrol.parentfont.html - PixelsPerInch - PopupMenu controls/tcontrol.popupmenu.html - PopupMode - PopupParent - Position - SessionProperties controls/tcontrol.sessionproperties.html - ShowHint controls/tcontrol.showhint.html - ShowInTaskBar - UseDockManager controls/twincontrol.usedockmanager.html - Visible controls/tcontrol.visible.html - WindowState - TCustomDockForm forms/tcustomdockform.html - DoAddDockClient controls/twincontrol.doadddockclient.html - DoRemoveDockClient controls/twincontrol.doremovedockclient.html - GetSiteInfo controls/twincontrol.getsiteinfo.html - Loaded forms/tcustomform.loaded.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - AutoScroll forms/tscrollingwincontrol.autoscroll.html - BorderStyle forms/tcustomform.borderstyle.html - FormStyle forms/tcustomform.formstyle.html - PixelsPerInch forms/tcustomform.pixelsperinch.html - THintWindow forms/thintwindow.html - WMNCHitTest forms/thintwindow.wmnchittest.html - ActivateSub forms/thintwindow.activatesub.html - UpdateRegion forms/thintwindow.updateregion.html - SetColor forms/thintwindow.setcolor.html - UseThemes forms/thintwindow.usethemes.html - Destroy forms/thintwindow.destroy.html - ActivateHint forms/thintwindow.activatehint.html - ActivateWithBounds forms/thintwindow.activatewithbounds.html - ActivateHintData forms/thintwindow.activatehintdata.html - CalcHintRect forms/thintwindow.calchintrect.html - OffsetHintRect forms/thintwindow.offsethintrect.html - IsHintMsg forms/thintwindow.ishintmsg.html - ReleaseHandle forms/thintwindow.releasehandle.html - OnMouseDown forms/thintwindow.onmousedown.html - Alignment forms/thintwindow.alignment.html - HintRect forms/thintwindow.hintrect.html - HintRectAdjust forms/thintwindow.hintrectadjust.html - HintData forms/thintwindow.hintdata.html - AutoHide forms/thintwindow.autohide.html - HideInterval forms/thintwindow.hideinterval.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DoShowWindow forms/tcustomform.doshowwindow.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - InitializeWnd - Paint controls/tcustomcontrol.paint.html - SetBounds - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - BiDiMode controls/tcontrol.bidimode.html - THintWindowRendered forms/thintwindowrendered.html - Create - Destroy forms/thintwindow.destroy.html - ActivateRendered forms/thintwindowrendered.activaterendered.html - TMonitor forms/tmonitor.html - Handle forms/tmonitor.handle.html - MonitorNum forms/tmonitor.monitornum.html - Left forms/tmonitor.left.html - Height forms/tmonitor.height.html - Top forms/tmonitor.top.html - Width forms/tmonitor.width.html - BoundsRect forms/tmonitor.boundsrect.html - WorkareaRect forms/tmonitor.workarearect.html - Primary forms/tmonitor.primary.html - TMonitorList forms/tmonitorlist.html - Notify forms/tmonitorlist.notify.html - Items forms/tmonitorlist.items.html - TScreen forms/tscreen.html - Destroy forms/tscreen.destroy.html - FormIndex forms/tscreen.formindex.html - CustomFormZIndex forms/tscreen.customformzindex.html - MoveFormToFocusFront forms/tscreen.moveformtofocusfront.html - MoveFormToZFront forms/tscreen.moveformtozfront.html - GetCurrentModalForm forms/tscreen.getcurrentmodalform.html - GetCurrentModalFormZIndex forms/tscreen.getcurrentmodalformzindex.html - CustomFormBelongsToActiveGroup forms/tscreen.customformbelongstoactivegroup.html - FindNonDesignerForm forms/tscreen.findnondesignerform.html - FindForm forms/tscreen.findform.html - FindNonDesignerDataModule forms/tscreen.findnondesignerdatamodule.html - FindDataModule forms/tscreen.finddatamodule.html - UpdateMonitors forms/tscreen.updatemonitors.html - UpdateScreen forms/tscreen.updatescreen.html - AddHandlerFormAdded forms/tscreen.addhandlerformadded.html - RemoveHandlerFormAdded forms/tscreen.removehandlerformadded.html - AddHandlerRemoveForm forms/tscreen.addhandlerremoveform.html - RemoveHandlerRemoveForm forms/tscreen.removehandlerremoveform.html - AddHandlerActiveControlChanged forms/tscreen.addhandleractivecontrolchanged.html - RemoveHandlerActiveControlChanged forms/tscreen.removehandleractivecontrolchanged.html - AddHandlerActiveFormChanged forms/tscreen.addhandleractiveformchanged.html - RemoveHandlerActiveFormChanged forms/tscreen.removehandleractiveformchanged.html - AddHandlerFormVisibleChanged forms/tscreen.addhandlerformvisiblechanged.html - RemoveHandlerFormVisibleChanged forms/tscreen.removehandlerformvisiblechanged.html - DisableForms forms/tscreen.disableforms.html - EnableForms forms/tscreen.enableforms.html - MonitorFromPoint forms/tscreen.monitorfrompoint.html - MonitorFromRect forms/tscreen.monitorfromrect.html - MonitorFromWindow forms/tscreen.monitorfromwindow.html - ActiveControl forms/tscreen.activecontrol.html - ActiveCustomForm forms/tscreen.activecustomform.html - ActiveForm forms/tscreen.activeform.html - Cursor forms/tscreen.cursor.html - Cursors forms/tscreen.cursors.html - CustomFormCount forms/tscreen.customformcount.html - CustomForms forms/tscreen.customforms.html - CustomFormZOrderCount forms/tscreen.customformzordercount.html - CustomFormsZOrdered forms/tscreen.customformszordered.html - DesktopRect forms/tscreen.desktoprect.html - FocusedForm forms/tscreen.focusedform.html - Forms forms/tscreen.forms.html - DataModuleCount forms/tscreen.datamodulecount.html - DataModules forms/tscreen.datamodules.html - HintFont forms/tscreen.hintfont.html - IconFont forms/tscreen.iconfont.html - MenuFont forms/tscreen.menufont.html - SystemFont forms/tscreen.systemfont.html - Fonts forms/tscreen.fonts.html - Height forms/tscreen.height.html - Monitors forms/tscreen.monitors.html - PixelsPerInch forms/tscreen.pixelsperinch.html - PrimaryMonitor forms/tscreen.primarymonitor.html - Width forms/tscreen.width.html - WorkAreaRect forms/tscreen.workarearect.html - OnActiveControlChange forms/tscreen.onactivecontrolchange.html - OnActiveFormChange forms/tscreen.onactiveformchange.html - GetHintFont - GetIconFont - GetMenuFont - GetSystemFont - Create ms-its:rtl.chm::/classes/tcomponent.create.html - CustomFormIndex - RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html - DesktopLeft - DesktopTop - DesktopHeight - DesktopWidth - FormCount - MonitorCount - WorkAreaHeight - WorkAreaLeft - WorkAreaTop - WorkAreaWidth - TApplication forms/tapplication.html - GetConsoleApplication forms/tapplication.getconsoleapplication.html - NotifyIdleHandler forms/tapplication.notifyidlehandler.html - NotifyIdleEndHandler forms/tapplication.notifyidleendhandler.html - NotifyActivateHandler forms/tapplication.notifyactivatehandler.html - NotifyDeactivateHandler forms/tapplication.notifydeactivatehandler.html - NotifyCustomForms forms/tapplication.notifycustomforms.html - IsHintMsg forms/tapplication.ishintmsg.html - DoOnHelp forms/tapplication.doonhelp.html - DoOnMouseMove forms/tapplication.doonmousemove.html - ShowHintWindow forms/tapplication.showhintwindow.html - OnHintTimer forms/tapplication.onhinttimer.html - StartHintTimer forms/tapplication.starthinttimer.html - UpdateVisible forms/tapplication.updatevisible.html - DoIdleActions forms/tapplication.doidleactions.html - MenuPopupHandler forms/tapplication.menupopuphandler.html - ProcessAsyncCallQueue forms/tapplication.processasynccallqueue.html - ReleaseComponents forms/tapplication.releasecomponents.html - DoBeforeFinalization forms/tapplication.dobeforefinalization.html - GetParams forms/tapplication.getparams.html - Destroy forms/tapplication.destroy.html - ActivateHint forms/tapplication.activatehint.html - GetControlAtMouse forms/tapplication.getcontrolatmouse.html - ControlDestroyed forms/tapplication.controldestroyed.html - BigIconHandle forms/tapplication.bigiconhandle.html - SmallIconHandle forms/tapplication.smalliconhandle.html - BringToFront forms/tapplication.bringtofront.html - CreateForm forms/tapplication.createform.html - UpdateMainForm forms/tapplication.updatemainform.html - QueueAsyncCall forms/tapplication.queueasynccall.html - RemoveAsyncCalls forms/tapplication.removeasynccalls.html - ReleaseComponent forms/tapplication.releasecomponent.html - ExecuteAction forms/tapplication.executeaction.html - UpdateAction forms/tapplication.updateaction.html - HandleException forms/tapplication.handleexception.html - HandleMessage forms/tapplication.handlemessage.html - HelpCommand forms/tapplication.helpcommand.html - HelpContext forms/tapplication.helpcontext.html - HelpKeyword forms/tapplication.helpkeyword.html - ShowHelpForObject forms/tapplication.showhelpforobject.html - RemoveStayOnTop forms/tapplication.removestayontop.html - RestoreStayOnTop forms/tapplication.restorestayontop.html - IsWaiting forms/tapplication.iswaiting.html - CancelHint forms/tapplication.cancelhint.html - HideHint forms/tapplication.hidehint.html - HintMouseMessage forms/tapplication.hintmousemessage.html - Initialize forms/tapplication.initialize.html - MessageBox forms/tapplication.messagebox.html - Minimize forms/tapplication.minimize.html - ModalStarted forms/tapplication.modalstarted.html - ModalFinished forms/tapplication.modalfinished.html - Restore forms/tapplication.restore.html - Notification forms/tapplication.notification.html - ProcessMessages forms/tapplication.processmessages.html - Idle forms/tapplication.idle.html - DisableIdleHandler forms/tapplication.disableidlehandler.html - EnableIdleHandler forms/tapplication.enableidlehandler.html - NotifyUserInputHandler forms/tapplication.notifyuserinputhandler.html - NotifyKeyDownBeforeHandler forms/tapplication.notifykeydownbeforehandler.html - NotifyKeyDownHandler forms/tapplication.notifykeydownhandler.html - ControlKeyDown forms/tapplication.controlkeydown.html - ControlKeyUp forms/tapplication.controlkeyup.html - AddOnIdleHandler forms/tapplication.addonidlehandler.html - RemoveOnIdleHandler forms/tapplication.removeonidlehandler.html - AddOnIdleEndHandler forms/tapplication.addonidleendhandler.html - RemoveOnIdleEndHandler forms/tapplication.removeonidleendhandler.html - AddOnUserInputHandler forms/tapplication.addonuserinputhandler.html - RemoveOnUserInputHandler forms/tapplication.removeonuserinputhandler.html - AddOnKeyDownBeforeHandler forms/tapplication.addonkeydownbeforehandler.html - RemoveOnKeyDownBeforeHandler forms/tapplication.removeonkeydownbeforehandler.html - AddOnKeyDownHandler forms/tapplication.addonkeydownhandler.html - RemoveOnKeyDownHandler forms/tapplication.removeonkeydownhandler.html - AddOnActivateHandler forms/tapplication.addonactivatehandler.html - RemoveOnActivateHandler forms/tapplication.removeonactivatehandler.html - AddOnDeactivateHandler forms/tapplication.addondeactivatehandler.html - RemoveOnDeactivateHandler forms/tapplication.removeondeactivatehandler.html - AddOnExceptionHandler forms/tapplication.addonexceptionhandler.html - RemoveOnExceptionHandler forms/tapplication.removeonexceptionhandler.html - AddOnEndSessionHandler forms/tapplication.addonendsessionhandler.html - RemoveOnEndSessionHandler forms/tapplication.removeonendsessionhandler.html - AddOnQueryEndSessionHandler forms/tapplication.addonqueryendsessionhandler.html - RemoveOnQueryEndSessionHandler forms/tapplication.removeonqueryendsessionhandler.html - AddOnMinimizeHandler forms/tapplication.addonminimizehandler.html - RemoveOnMinimizeHandler forms/tapplication.removeonminimizehandler.html - AddOnModalBeginHandler forms/tapplication.addonmodalbeginhandler.html - RemoveOnModalBeginHandler forms/tapplication.removeonmodalbeginhandler.html - AddOnModalEndHandler forms/tapplication.addonmodalendhandler.html - RemoveOnModalEndHandler forms/tapplication.removeonmodalendhandler.html - AddOnRestoreHandler forms/tapplication.addonrestorehandler.html - RemoveOnRestoreHandler forms/tapplication.removeonrestorehandler.html - AddOnDropFilesHandler forms/tapplication.addondropfileshandler.html - RemoveOnDropFilesHandler forms/tapplication.removeondropfileshandler.html - AddOnHelpHandler forms/tapplication.addonhelphandler.html - RemoveOnHelpHandler forms/tapplication.removeonhelphandler.html - AddOnHintHandler forms/tapplication.addonhinthandler.html - RemoveOnHintHandler forms/tapplication.removeonhinthandler.html - AddOnShowHintHandler forms/tapplication.addonshowhinthandler.html - RemoveOnShowHintHandler forms/tapplication.removeonshowhinthandler.html - AddOnGetMainFormHandleHandler forms/tapplication.addongetmainformhandlehandler.html - RemoveOnGetMainFormHandleHandler forms/tapplication.removeongetmainformhandlehandler.html - RemoveAllHandlersOfObject forms/tapplication.removeallhandlersofobject.html - DoBeforeMouseMessage forms/tapplication.dobeforemousemessage.html - IsShortcut forms/tapplication.isshortcut.html - IntfQueryEndSession forms/tapplication.intfqueryendsession.html - IntfEndSession forms/tapplication.intfendsession.html - IntfAppActivate forms/tapplication.intfappactivate.html - IntfAppDeactivate forms/tapplication.intfappdeactivate.html - IntfAppMinimize forms/tapplication.intfappminimize.html - IntfAppRestore forms/tapplication.intfapprestore.html - IntfDropFiles forms/tapplication.intfdropfiles.html - IntfSettingsChange forms/tapplication.intfsettingschange.html - IntfThemeOptionChange forms/tapplication.intfthemeoptionchange.html - IsRightToLeft forms/tapplication.isrighttoleft.html - IsRTLLang forms/tapplication.isrtllang.html - Direction forms/tapplication.direction.html - DoArrowKey forms/tapplication.doarrowkey.html - DoTabKey forms/tapplication.dotabkey.html - DoEscapeKey forms/tapplication.doescapekey.html - DoReturnKey forms/tapplication.doreturnkey.html - Active forms/tapplication.active.html - ApplicationType forms/tapplication.applicationtype.html - BidiMode forms/tapplication.bidimode.html - CaptureExceptions forms/tapplication.captureexceptions.html - ExtendedKeysSupport forms/tapplication.extendedkeyssupport.html - ExceptionDialog forms/tapplication.exceptiondialog.html - FindGlobalComponentEnabled forms/tapplication.findglobalcomponentenabled.html - Flags forms/tapplication.flags.html - Hint forms/tapplication.hint.html - HintColor forms/tapplication.hintcolor.html - HintHidePause forms/tapplication.hinthidepause.html - HintHidePausePerChar forms/tapplication.hinthidepauseperchar.html - HintPause forms/tapplication.hintpause.html - HintShortCuts forms/tapplication.hintshortcuts.html - HintShortPause forms/tapplication.hintshortpause.html - Icon forms/tapplication.icon.html - LayoutAdjustmentPolicy forms/tapplication.layoutadjustmentpolicy.html - Navigation forms/tapplication.navigation.html - MainForm forms/tapplication.mainform.html - MainFormHandle forms/tapplication.mainformhandle.html - MainFormOnTaskBar forms/tapplication.mainformontaskbar.html - ModalLevel forms/tapplication.modallevel.html - MoveFormFocusToChildren forms/tapplication.moveformfocustochildren.html - MouseControl forms/tapplication.mousecontrol.html - TaskBarBehavior forms/tapplication.taskbarbehavior.html - UpdateFormatSettings forms/tapplication.updateformatsettings.html - OnActionExecute forms/tapplication.onactionexecute.html - OnActionUpdate forms/tapplication.onactionupdate.html - OnActivate forms/tapplication.onactivate.html - OnDeactivate forms/tapplication.ondeactivate.html - OnGetMainFormHandle forms/tapplication.ongetmainformhandle.html - OnIdle forms/tapplication.onidle.html - OnIdleEnd forms/tapplication.onidleend.html - OnEndSession forms/tapplication.onendsession.html - OnQueryEndSession forms/tapplication.onqueryendsession.html - OnMinimize forms/tapplication.onminimize.html - OnMessageDialogFinished forms/tapplication.onmessagedialogfinished.html - OnModalBegin forms/tapplication.onmodalbegin.html - OnModalEnd forms/tapplication.onmodalend.html - OnRestore forms/tapplication.onrestore.html - OnDropFiles forms/tapplication.ondropfiles.html - OnHelp forms/tapplication.onhelp.html - OnHint forms/tapplication.onhint.html - OnShortcut forms/tapplication.onshortcut.html - OnShowHint forms/tapplication.onshowhint.html - OnUserInput forms/tapplication.onuserinput.html - OnDestroy forms/tapplication.ondestroy.html - ShowButtonGlyphs forms/tapplication.showbuttonglyphs.html - ShowMenuGlyphs forms/tapplication.showmenuglyphs.html - ShowHint forms/tapplication.showhint.html - ShowMainForm forms/tapplication.showmainform.html - SetTitle - FreeComponent - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Run ms-its:fcl.chm::/custapp/tcustomapplication.run.html - ShowException ms-its:fcl.chm::/custapp/tcustomapplication.showexception.html - Terminate ms-its:fcl.chm::/custapp/tcustomapplication.terminate.html - Title ms-its:fcl.chm::/custapp/tcustomapplication.title.html - TApplicationProperties forms/tapplicationproperties.html - SetOnActivate forms/tapplicationproperties.setonactivate.html - SetOnDeactivate forms/tapplicationproperties.setondeactivate.html - Create forms/tapplicationproperties.create.html - Destroy forms/tapplicationproperties.destroy.html - ExceptionDialog forms/tapplicationproperties.exceptiondialog.html - OnActivate forms/tapplicationproperties.onactivate.html - OnDeactivate forms/tapplicationproperties.ondeactivate.html - SetCaptureExceptions - SetHelpFile - SetHint - SetHintColor - SetHintHidePause - SetHintPause - SetHintShortCuts - SetHintShortPause - SetShowButtonGlyphs - SetShowMenuGlyphs - SetShowHint - SetShowMainForm - SetTitle - SetOnException - SetOnGetMainFormHandle - SetOnIdle - SetOnIdleEnd - SetOnEndSession - SetOnQueryEndSession - SetOnMinimize - SetOnModalBegin - SetOnModalEnd - SetOnRestore - SetOnDropFiles - SetOnHelp - SetOnHint - SetOnShowHint - SetOnUserInput - CaptureExceptions - HelpFile - Hint - HintColor - HintHidePause - HintPause - HintShortCuts - HintShortPause - ShowButtonGlyphs - ShowMenuGlyphs - ShowHint - ShowMainForm - Title - OnException - OnGetMainFormHandle - OnIdle - OnIdleEnd - OnEndSession - OnQueryEndSession - OnMinimize - OnModalBegin - OnModalEnd - OnRestore - OnDropFiles - OnHelp - OnHint - OnShowHint - OnUserInput - TIDesigner forms/tidesigner.html - FLookupRoot forms/tidesigner.flookuproot.html - FDefaultFormBoundsValid forms/tidesigner.fdefaultformboundsvalid.html - IsDesignMsg forms/tidesigner.isdesignmsg.html - Modified forms/tidesigner.modified.html - Notification forms/tidesigner.notification.html - PaintGrid forms/tidesigner.paintgrid.html - ValidateRename forms/tidesigner.validaterename.html - GetShiftState forms/tidesigner.getshiftstate.html - SelectOnlyThisComponent forms/tidesigner.selectonlythiscomponent.html - UniqueName forms/tidesigner.uniquename.html - PrepareFreeDesigner forms/tidesigner.preparefreedesigner.html - LookupRoot forms/tidesigner.lookuproot.html - DefaultFormBoundsValid forms/tidesigner.defaultformboundsvalid.html - TFormPropertyStorage forms/tformpropertystorage.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html - KeysToShiftState forms/keystoshiftstate.html - KeyDataToShiftState forms/keydatatoshiftstate.html - ShiftStateToKeys forms/shiftstatetokeys.html - WindowStateToStr forms/windowstatetostr.html - StrToWindowState forms/strtowindowstate.html - dbgs forms/dbgs.html - SaveFocusState forms/savefocusstate.html - RestoreFocusState forms/restorefocusstate.html - GetParentForm forms/getparentform.html - GetFirstParentForm forms/getfirstparentform.html - ValidParentForm forms/validparentform.html - GetDesignerForm forms/getdesignerform.html - FindRootDesigner forms/findrootdesigner.html - IsAccel forms/isaccel.html - NotifyApplicationUserInput forms/notifyapplicationuserinput.html - GetShortHint forms/getshorthint.html - GetLongHint forms/getlonghint.html - CreateWidgetset forms/createwidgetset.html - FreeWidgetSet forms/freewidgetset.html - Register forms/register.html - OnGetDesignerForm forms/ongetdesignerform.html - Application forms/application.html - Screen forms/screen.html - ExceptionObject forms/exceptionobject.html - HintWindowClass forms/hintwindowclass.html - RequireDerivedFormResource forms/requirederivedformresource.html - MessageBoxFunction forms/messageboxfunction.html - Menus menus/index.html - HowToUseMenus menus/howtousemenus.html - cHotkeyPrefix menus/chotkeyprefix.html - cLineCaption menus/clinecaption.html - cDialogSuffix menus/cdialogsuffix.html - ValidMenuHotkeys menus/validmenuhotkeys.html - TGlyphShowMode menus/tglyphshowmode.html - TMenuChangeEvent menus/tmenuchangeevent.html - TMenuActionLinkClass menus/tmenuactionlinkclass.html - TMenuItemHandlerType menus/tmenuitemhandlertype.html - TMenuItemClass menus/tmenuitemclass.html - TFindItemKind menus/tfinditemkind.html - TPopupAlignment menus/tpopupalignment.html - TTrackButton menus/ttrackbutton.html - EMenuError menus/emenuerror.html - TMenuActionLink menus/tmenuactionlink.html - FClient menus/tmenuactionlink.fclient.html - IsAutoCheckLinked menus/tmenuactionlink.isautochecklinked.html - SetAutoCheck menus/tmenuactionlink.setautocheck.html - SetCaption menus/tmenuactionlink.setcaption.html - SetChecked menus/tmenuactionlink.setchecked.html - SetEnabled menus/tmenuactionlink.setenabled.html - SetHelpContext menus/tmenuactionlink.sethelpcontext.html - SetHint menus/tmenuactionlink.sethint.html - SetImageIndex menus/tmenuactionlink.setimageindex.html - SetShortCut menus/tmenuactionlink.setshortcut.html - SetVisible menus/tmenuactionlink.setvisible.html - AssignClient - IsOnExecuteLinked - SetOnExecute - IsCaptionLinked actnlist/tactionlink.iscaptionlinked.html - IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html - IsEnabledLinked actnlist/tactionlink.isenabledlinked.html - IsHelpContextLinked actnlist/tactionlink.ishelpcontextlinked.html - IsHintLinked actnlist/tactionlink.ishintlinked.html - IsGroupIndexLinked actnlist/tactionlink.isgroupindexlinked.html - IsImageIndexLinked actnlist/tactionlink.isimageindexlinked.html - IsShortCutLinked actnlist/tactionlink.isshortcutlinked.html - IsVisibleLinked actnlist/tactionlink.isvisiblelinked.html - TMenuItemEnumerator menus/tmenuitemenumerator.html - Create menus/tmenuitemenumerator.create.html - MoveNext menus/tmenuitemenumerator.movenext.html - Current menus/tmenuitemenumerator.current.html - TMenuItem menus/tmenuitem.html - FCommand menus/tmenuitem.fcommand.html - ActionChange menus/tmenuitem.actionchange.html - BitmapChange menus/tmenuitem.bitmapchange.html - GetAction menus/tmenuitem.getaction.html - GetActionLinkClass menus/tmenuitem.getactionlinkclass.html - GetHandle menus/tmenuitem.gethandle.html - DoClicked menus/tmenuitem.doclicked.html - CheckChildrenHandles menus/tmenuitem.checkchildrenhandles.html - CreateHandle menus/tmenuitem.createhandle.html - DestroyHandle menus/tmenuitem.destroyhandle.html - InitiateActions menus/tmenuitem.initiateactions.html - MenuChanged menus/tmenuitem.menuchanged.html - SetAction menus/tmenuitem.setaction.html - SetGroupIndex menus/tmenuitem.setgroupindex.html - SetImageIndex menus/tmenuitem.setimageindex.html - SetShortCut menus/tmenuitem.setshortcut.html - SetShortCutKey2 menus/tmenuitem.setshortcutkey2.html - SetVisible menus/tmenuitem.setvisible.html - UpdateImage menus/tmenuitem.updateimage.html - UpdateImages menus/tmenuitem.updateimages.html - UpdateWSIcon menus/tmenuitem.updatewsicon.html - ImageListChange menus/tmenuitem.imagelistchange.html - ActionLink menus/tmenuitem.actionlink.html - FCompStyle menus/tmenuitem.fcompstyle.html - Create menus/tmenuitem.create.html - Destroy menus/tmenuitem.destroy.html - Find menus/tmenuitem.find.html - GetEnumerator menus/tmenuitem.getenumerator.html - GetImageList menus/tmenuitem.getimagelist.html - GetParentMenu menus/tmenuitem.getparentmenu.html - GetIsRightToLeft menus/tmenuitem.getisrighttoleft.html - HandleAllocated menus/tmenuitem.handleallocated.html - HasIcon menus/tmenuitem.hasicon.html - InitiateAction menus/tmenuitem.initiateaction.html - IntfDoSelect menus/tmenuitem.intfdoselect.html - IndexOf menus/tmenuitem.indexof.html - IndexOfCaption menus/tmenuitem.indexofcaption.html - VisibleIndexOf menus/tmenuitem.visibleindexof.html - Add menus/tmenuitem.add.html - AddSeparator menus/tmenuitem.addseparator.html - Click menus/tmenuitem.click.html - Delete menus/tmenuitem.delete.html - HandleNeeded menus/tmenuitem.handleneeded.html - Insert menus/tmenuitem.insert.html - RecreateHandle menus/tmenuitem.recreatehandle.html - Remove menus/tmenuitem.remove.html - IsCheckItem menus/tmenuitem.ischeckitem.html - IsLine menus/tmenuitem.isline.html - IsInMenuBar menus/tmenuitem.isinmenubar.html - Clear menus/tmenuitem.clear.html - HasBitmap menus/tmenuitem.hasbitmap.html - GetIconSize menus/tmenuitem.geticonsize.html - AddHandlerOnDestroy menus/tmenuitem.addhandlerondestroy.html - RemoveHandlerOnDestroy menus/tmenuitem.removehandlerondestroy.html - AddHandler menus/tmenuitem.addhandler.html - RemoveHandler menus/tmenuitem.removehandler.html - Count menus/tmenuitem.count.html - Handle menus/tmenuitem.handle.html - Items menus/tmenuitem.items.html - MenuIndex menus/tmenuitem.menuindex.html - Menu menus/tmenuitem.menu.html - Parent menus/tmenuitem.parent.html - Command menus/tmenuitem.command.html - MenuVisibleIndex menus/tmenuitem.menuvisibleindex.html - WriteDebugReport menus/tmenuitem.writedebugreport.html - Action menus/tmenuitem.action.html - AutoCheck menus/tmenuitem.autocheck.html - Caption menus/tmenuitem.caption.html - Checked menus/tmenuitem.checked.html - Default menus/tmenuitem.default.html - Enabled menus/tmenuitem.enabled.html - Bitmap menus/tmenuitem.bitmap.html - GroupIndex menus/tmenuitem.groupindex.html - GlyphShowMode menus/tmenuitem.glyphshowmode.html - HelpContext menus/tmenuitem.helpcontext.html - Hint menus/tmenuitem.hint.html - ImageIndex menus/tmenuitem.imageindex.html - RadioItem menus/tmenuitem.radioitem.html - RightJustify menus/tmenuitem.rightjustify.html - ShortCut menus/tmenuitem.shortcut.html - ShortCutKey2 menus/tmenuitem.shortcutkey2.html - ShowAlwaysCheckable menus/tmenuitem.showalwayscheckable.html - SubMenuImages menus/tmenuitem.submenuimages.html - Visible menus/tmenuitem.visible.html - OnClick menus/tmenuitem.onclick.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - AssignTo - Loaded - Notification - GetChildren - SetChildOrder - SetParentComponent - GetParentComponent ms-its:rtl.chm::/classes/tcomponent.getparentcomponent.html - HasParent ms-its:rtl.chm::/classes/tcomponent.hasparent.html - RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html - TMenu menus/tmenu.html - BidiModeChanged menus/tmenu.bidimodechanged.html - CreateHandle menus/tmenu.createhandle.html - DoChange menus/tmenu.dochange.html - GetHandle menus/tmenu.gethandle.html - MenuChanged menus/tmenu.menuchanged.html - ParentBidiModeChanged menus/tmenu.parentbidimodechanged.html - UpdateItems menus/tmenu.updateitems.html - OnChange menus/tmenu.onchange.html - FCompStyle menus/tmenu.fcompstyle.html - Create menus/tmenu.create.html - Destroy menus/tmenu.destroy.html - DestroyHandle menus/tmenu.destroyhandle.html - FindItem menus/tmenu.finditem.html - GetHelpContext menus/tmenu.gethelpcontext.html - IsShortcut menus/tmenu.isshortcut.html - HandleAllocated menus/tmenu.handleallocated.html - IsRightToLeft menus/tmenu.isrighttoleft.html - UseRightToLeftAlignment menus/tmenu.userighttoleftalignment.html - UseRightToLeftReading menus/tmenu.userighttoleftreading.html - HandleNeeded menus/tmenu.handleneeded.html - DispatchCommand menus/tmenu.dispatchcommand.html - Handle menus/tmenu.handle.html - Parent menus/tmenu.parent.html - ShortcutHandled menus/tmenu.shortcuthandled.html - BidiMode menus/tmenu.bidimode.html - ParentBidiMode menus/tmenu.parentbidimode.html - Items menus/tmenu.items.html - Images menus/tmenu.images.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetChildren - Notification - SetChildOrder - TMainMenu menus/tmainmenu.html - ItemChanged menus/tmainmenu.itemchanged.html - MenuChanged menus/tmenu.menuchanged.html - Create menus/tmainmenu.create.html - Height menus/tmainmenu.height.html - WindowHandle menus/tmainmenu.windowhandle.html - OnChange menus/tmainmenu.onchange.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TPopupMenu menus/tpopupmenu.html - DoPopup menus/tpopupmenu.dopopup.html - DoClose menus/tpopupmenu.doclose.html - Create menus/tpopupmenu.create.html - Destroy menus/tpopupmenu.destroy.html - PopUp menus/tpopupmenu.popup.html - PopupComponent menus/tpopupmenu.popupcomponent.html - PopupPoint menus/tpopupmenu.popuppoint.html - Close menus/tpopupmenu.close.html - Alignment menus/tpopupmenu.alignment.html - AutoPopup menus/tpopupmenu.autopopup.html - HelpContext menus/tpopupmenu.helpcontext.html - TrackButton menus/tpopupmenu.trackbutton.html - OnPopup menus/tpopupmenu.onpopup.html - OnClose menus/tpopupmenu.onclose.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - ShortCut menus/shortcut.html - ShortCutToKey menus/shortcuttokey.html - NewMenu menus/newmenu.html - NewPopupMenu menus/newpopupmenu.html - NewSubMenu menus/newsubmenu.html - NewItem menus/newitem.html - NewLine menus/newline.html - Register menus/register.html - DesignerMenuItemClick menus/designermenuitemclick.html - ActivePopupMenu menus/activepopupmenu.html - OnMenuPopupHandler menus/onmenupopuphandler.html - CustomTimer customtimer/index.html - TCustomTimer customtimer/tcustomtimer.html - SetEnabled customtimer/tcustomtimer.setenabled.html - SetInterval customtimer/tcustomtimer.setinterval.html - SetOnTimer customtimer/tcustomtimer.setontimer.html - DoOnTimer customtimer/tcustomtimer.doontimer.html - UpdateTimer customtimer/tcustomtimer.updatetimer.html - KillTimer customtimer/tcustomtimer.killtimer.html - Create customtimer/tcustomtimer.create.html - Destroy customtimer/tcustomtimer.destroy.html - Enabled customtimer/tcustomtimer.enabled.html - Interval customtimer/tcustomtimer.interval.html - OnTimer customtimer/tcustomtimer.ontimer.html - OnStartTimer customtimer/tcustomtimer.onstarttimer.html - OnStopTimer customtimer/tcustomtimer.onstoptimer.html - Loaded - HelpIntfs helpintfs/index.html - TShowHelpResult helpintfs/tshowhelpresult.html - TShowHelpResults helpintfs/tshowhelpresults.html - THelpDatabaseID helpintfs/thelpdatabaseid.html - EHelpSystemException helpintfs/ehelpsystemexception.html - THelpQuery helpintfs/thelpquery.html - Create helpintfs/thelpquery.create.html - HelpDatabaseID helpintfs/thelpquery.helpdatabaseid.html - THelpQueryTOC helpintfs/thelpquerytoc.html - THelpQueryContext helpintfs/thelpquerycontext.html - Create helpintfs/thelpquerycontext.create.html - Context helpintfs/thelpquerycontext.context.html - THelpQueryKeyword helpintfs/thelpquerykeyword.html - Create helpintfs/thelpquerykeyword.create.html - Keyword helpintfs/thelpquerykeyword.keyword.html - THelpQueryDirective helpintfs/thelpquerydirective.html - Create helpintfs/thelpquery.create.html - Directive helpintfs/thelpquerydirective.directive.html - THelpQuerySourcePosition helpintfs/thelpquerysourceposition.html - Create helpintfs/thelpquerysourceposition.create.html - Filename helpintfs/thelpquerysourceposition.filename.html - SourcePosition helpintfs/thelpquerysourceposition.sourceposition.html - THelpQueryPascalContexts helpintfs/thelpquerypascalcontexts.html - Create helpintfs/thelpquerypascalcontexts.create.html - ListOfPascalHelpContextList helpintfs/thelpquerypascalcontexts.listofpascalhelpcontextlist.html - THelpQueryMessage helpintfs/thelpquerymessage.html - Create helpintfs/thelpquerymessage.create.html - Destroy helpintfs/thelpquerymessage.destroy.html - WholeMessage helpintfs/thelpquerymessage.wholemessage.html - MessageParts helpintfs/thelpquerymessage.messageparts.html - THelpQueryClass helpintfs/thelpqueryclass.html - Create helpintfs/thelpqueryclass.create.html - TheClass helpintfs/thelpqueryclass.theclass.html - THelpManager helpintfs/thelpmanager.html - DoHelpNotFound helpintfs/thelpmanager.dohelpnotfound.html - ShowTableOfContents helpintfs/thelpmanager.showtableofcontents.html - ShowError helpintfs/thelpmanager.showerror.html - ShowHelpForQuery helpintfs/thelpmanager.showhelpforquery.html - ShowHelpForContext helpintfs/thelpmanager.showhelpforcontext.html - ShowHelpForKeyword helpintfs/thelpmanager.showhelpforkeyword.html - ShowHelpForDirective helpintfs/thelpmanager.showhelpfordirective.html - ShowHelpForPascalContexts helpintfs/thelpmanager.showhelpforpascalcontexts.html - ShowHelpForSourcePosition helpintfs/thelpmanager.showhelpforsourceposition.html - ShowHelpForMessageLine helpintfs/thelpmanager.showhelpformessageline.html - ShowHelpForClass helpintfs/thelpmanager.showhelpforclass.html - ShowHelpFile helpintfs/thelpmanager.showhelpfile.html - ShowHelp helpintfs/thelpmanager.showhelp.html - ShowTableOfContents helpintfs/showtableofcontents.html - ShowHelpOrErrorForContext helpintfs/showhelporerrorforcontext.html - ShowHelpForContext helpintfs/showhelpforcontext.html - ShowHelpOrErrorForKeyword helpintfs/showhelporerrorforkeyword.html - ShowHelpForKeyword helpintfs/showhelpforkeyword.html - ShowHelpForDirective helpintfs/showhelpfordirective.html - ShowHelpForPascalContexts helpintfs/showhelpforpascalcontexts.html - ShowHelpOrErrorForSourcePosition helpintfs/showhelporerrorforsourceposition.html - ShowHelpForMessageLine helpintfs/showhelpformessageline.html - ShowHelpOrErrorForMessageLine helpintfs/showhelporerrorformessageline.html - ShowHelpFile helpintfs/showhelpfile.html - ShowHelpFileOrError helpintfs/showhelpfileorerror.html - ShowHelp helpintfs/showhelp.html - ShowHelpOrError helpintfs/showhelporerror.html - dbgs helpintfs/dbgs.html - HelpManager helpintfs/helpmanager.html - Controls controls/index.html - Anchoring Controls controls/anchoring controls.html - Control coordinates controls/control coordinates.html - AutoSize controls/autosize.html - CM_BASE controls/cm_base.html - CM_LCLOFFSET controls/cm_lcloffset.html - CM_ACTIVATE controls/cm_activate.html - CM_DEACTIVATE controls/cm_deactivate.html - CM_GOTFOCUS controls/cm_gotfocus.html - CM_LOSTFOCUS controls/cm_lostfocus.html - CM_CANCELMODE controls/cm_cancelmode.html - CM_DIALOGKEY controls/cm_dialogkey.html - CM_DIALOGCHAR controls/cm_dialogchar.html - CM_FOCUSCHANGED controls/cm_focuschanged.html - CM_PARENTFONTCHANGED controls/cm_parentfontchanged.html - CM_PARENTCOLORCHANGED controls/cm_parentcolorchanged.html - CM_HITTEST controls/cm_hittest.html - CM_VISIBLECHANGED controls/cm_visiblechanged.html - CM_ENABLEDCHANGED controls/cm_enabledchanged.html - CM_COLORCHANGED controls/cm_colorchanged.html - CM_FONTCHANGED controls/cm_fontchanged.html - CM_CURSORCHANGED controls/cm_cursorchanged.html - CM_CTL3DCHANGED controls/cm_ctl3dchanged.html - CM_PARENTCTL3DCHANGED controls/cm_parentctl3dchanged.html - CM_TEXTCHANGED controls/cm_textchanged.html - CM_MOUSEENTER controls/cm_mouseenter.html - CM_MOUSELEAVE controls/cm_mouseleave.html - CM_MENUCHANGED controls/cm_menuchanged.html - CM_APPKEYDOWN controls/cm_appkeydown.html - CM_APPSYSCOMMAND controls/cm_appsyscommand.html - CM_BUTTONPRESSED controls/cm_buttonpressed.html - CM_SHOWINGCHANGED controls/cm_showingchanged.html - CM_ENTER controls/cm_enter.html - CM_EXIT controls/cm_exit.html - CM_DESIGNHITTEST controls/cm_designhittest.html - CM_ICONCHANGED controls/cm_iconchanged.html - CM_WANTSPECIALKEY controls/cm_wantspecialkey.html - CM_INVOKEHELP controls/cm_invokehelp.html - CM_WINDOWHOOK controls/cm_windowhook.html - CM_RELEASE controls/cm_release.html - CM_SHOWHINTCHANGED controls/cm_showhintchanged.html - CM_PARENTSHOWHINTCHANGED controls/cm_parentshowhintchanged.html - CM_SYSCOLORCHANGE controls/cm_syscolorchange.html - CM_WININICHANGE controls/cm_wininichange.html - CM_FONTCHANGE controls/cm_fontchange.html - CM_TIMECHANGE controls/cm_timechange.html - CM_TABSTOPCHANGED controls/cm_tabstopchanged.html - CM_UIACTIVATE controls/cm_uiactivate.html - CM_UIDEACTIVATE controls/cm_uideactivate.html - CM_DOCWINDOWACTIVATE controls/cm_docwindowactivate.html - CM_CONTROLLISTCHANGE controls/cm_controllistchange.html - CM_GETDATALINK controls/cm_getdatalink.html - CM_CHILDKEY controls/cm_childkey.html - CM_DRAG controls/cm_drag.html - CM_HINTSHOW controls/cm_hintshow.html - CM_DIALOGHANDLE controls/cm_dialoghandle.html - CM_ISTOOLCONTROL controls/cm_istoolcontrol.html - CM_RECREATEWND controls/cm_recreatewnd.html - CM_INVALIDATE controls/cm_invalidate.html - CM_SYSFONTCHANGED controls/cm_sysfontchanged.html - CM_CONTROLCHANGE controls/cm_controlchange.html - CM_CHANGED controls/cm_changed.html - CM_DOCKCLIENT controls/cm_dockclient.html - CM_UNDOCKCLIENT controls/cm_undockclient.html - CM_FLOAT controls/cm_float.html - CM_BORDERCHANGED controls/cm_borderchanged.html - CM_BIDIMODECHANGED controls/cm_bidimodechanged.html - CM_PARENTBIDIMODECHANGED controls/cm_parentbidimodechanged.html - CM_ALLCHILDRENFLIPPED controls/cm_allchildrenflipped.html - CM_ACTIONUPDATE controls/cm_actionupdate.html - CM_ACTIONEXECUTE controls/cm_actionexecute.html - CM_HINTSHOWPAUSE controls/cm_hintshowpause.html - CM_DOCKNOTIFICATION controls/cm_docknotification.html - CM_MOUSEWHEEL controls/cm_mousewheel.html - CM_ISSHORTCUT controls/cm_isshortcut.html - CM_UPDATEACTIONS controls/cm_updateactions.html - CM_INVALIDATEDOCKHOST controls/cm_invalidatedockhost.html - CM_SETACTIVECONTROL controls/cm_setactivecontrol.html - CM_POPUPHWNDDESTROY controls/cm_popuphwnddestroy.html - CM_CREATEPOPUP controls/cm_createpopup.html - CM_DESTROYHANDLE controls/cm_destroyhandle.html - CM_MOUSEACTIVATE controls/cm_mouseactivate.html - CM_CONTROLLISTCHANGING controls/cm_controllistchanging.html - CM_BUFFEREDPRINTCLIENT controls/cm_bufferedprintclient.html - CM_UNTHEMECONTROL controls/cm_unthemecontrol.html - CM_DOUBLEBUFFEREDCHANGED controls/cm_doublebufferedchanged.html - CM_PARENTDOUBLEBUFFEREDCHANGED controls/cm_parentdoublebufferedchanged.html - CM_THEMECHANGED controls/cm_themechanged.html - CM_GESTURE controls/cm_gesture.html - CM_CUSTOMGESTURESCHANGED controls/cm_customgestureschanged.html - CM_GESTUREMANAGERCHANGED controls/cm_gesturemanagerchanged.html - CM_STANDARDGESTURESCHANGED controls/cm_standardgestureschanged.html - CM_INPUTLANGCHANGE controls/cm_inputlangchange.html - CM_TABLETOPTIONSCHANGED controls/cm_tabletoptionschanged.html - CM_PARENTTABLETOPTIONSCHANGED controls/cm_parenttabletoptionschanged.html - CM_APPSHOWBTNGLYPHCHANGED controls/cm_appshowbtnglyphchanged.html - CM_APPSHOWMENUGLYPHCHANGED controls/cm_appshowmenuglyphchanged.html - CN_BASE controls/cn_base.html - CN_CHARTOITEM controls/cn_chartoitem.html - CN_COMMAND controls/cn_command.html - CN_COMPAREITEM controls/cn_compareitem.html - CN_CTLCOLORBTN controls/cn_ctlcolorbtn.html - CN_CTLCOLORDLG controls/cn_ctlcolordlg.html - CN_CTLCOLOREDIT controls/cn_ctlcoloredit.html - CN_CTLCOLORLISTBOX controls/cn_ctlcolorlistbox.html - CN_CTLCOLORMSGBOX controls/cn_ctlcolormsgbox.html - CN_CTLCOLORSCROLLBAR controls/cn_ctlcolorscrollbar.html - CN_CTLCOLORSTATIC controls/cn_ctlcolorstatic.html - CN_DELETEITEM controls/cn_deleteitem.html - CN_DRAWITEM controls/cn_drawitem.html - CN_HSCROLL controls/cn_hscroll.html - CN_MEASUREITEM controls/cn_measureitem.html - CN_PARENTNOTIFY controls/cn_parentnotify.html - CN_VKEYTOITEM controls/cn_vkeytoitem.html - CN_VSCROLL controls/cn_vscroll.html - CN_KEYDOWN controls/cn_keydown.html - CN_KEYUP controls/cn_keyup.html - CN_CHAR controls/cn_char.html - CN_SYSKEYUP controls/cn_syskeyup.html - CN_SYSKEYDOWN controls/cn_syskeydown.html - CN_SYSCHAR controls/cn_syschar.html - CN_NOTIFY controls/cn_notify.html - mrNone controls/mrnone.html - mrOK controls/mrok.html - mrCancel controls/mrcancel.html - mrAbort controls/mrabort.html - mrRetry controls/mrretry.html - mrIgnore controls/mrignore.html - mrYes controls/mryes.html - mrNo controls/mrno.html - mrAll controls/mrall.html - mrNoToAll controls/mrnotoall.html - mrYesToAll controls/mryestoall.html - mrClose controls/mrclose.html - mrLast controls/mrlast.html - ModalResultStr controls/modalresultstr.html - fsSurface controls/fssurface.html - fsBorder controls/fsborder.html - bvNone controls/bvnone.html - bvLowered controls/bvlowered.html - bvRaised controls/bvraised.html - bvSpace controls/bvspace.html - ssModifier controls/ssmodifier.html - asrLeft controls/asrleft.html - asrRight controls/asrright.html - fsAllStayOnTop controls/fsallstayontop.html - fsAllNonSystemStayOnTop controls/fsallnonsystemstayontop.html - crHigh controls/crhigh.html - crDefault controls/crdefault.html - crNone controls/crnone.html - crArrow controls/crarrow.html - crCross controls/crcross.html - crIBeam controls/cribeam.html - crSize controls/crsize.html - crSizeNESW controls/crsizenesw.html - crSizeNS controls/crsizens.html - crSizeNWSE controls/crsizenwse.html - crSizeWE controls/crsizewe.html - crSizeNW controls/crsizenw.html - crSizeN controls/crsizen.html - crSizeNE controls/crsizene.html - crSizeW controls/crsizew.html - crSizeE controls/crsizee.html - crSizeSW controls/crsizesw.html - crSizeS controls/crsizes.html - crSizeSE controls/crsizese.html - crUpArrow controls/cruparrow.html - crHourGlass controls/crhourglass.html - crDrag controls/crdrag.html - crNoDrop controls/crnodrop.html - crHSplit controls/crhsplit.html - crVSplit controls/crvsplit.html - crMultiDrag controls/crmultidrag.html - crSQLWait controls/crsqlwait.html - crNo controls/crno.html - crAppStart controls/crappstart.html - crHelp controls/crhelp.html - crHandPoint controls/crhandpoint.html - crSizeAll controls/crsizeall.html - crLow controls/crlow.html - csMultiClicks controls/csmulticlicks.html - AnchorAlign controls/anchoralign.html - MainAlignAnchor controls/mainalignanchor.html - OppositeAnchor controls/oppositeanchor.html - ClockwiseAnchor controls/clockwiseanchor.html - DefaultSideForAnchorKind controls/defaultsideforanchorkind.html - AnchorReferenceSide controls/anchorreferenceside.html - TWinControlClass controls/twincontrolclass.html - TControlClass controls/tcontrolclass.html - TCMMouseWheel controls/tcmmousewheel.html - TCMHitTest controls/tcmhittest.html - TCMDesignHitTest controls/tcmdesignhittest.html - TCMControlChange controls/tcmcontrolchange.html - TCMControlListChange controls/tcmcontrollistchange.html - TCMDialogChar controls/tcmdialogchar.html - TCMDialogKey controls/tcmdialogkey.html - TCMEnter controls/tcmenter.html - TCMExit controls/tcmexit.html - TCMCancelMode controls/tcmcancelmode.html - TCMChildKey controls/tcmchildkey.html - TAlign controls/talign.html - TAlignSet controls/talignset.html - TAnchorKind controls/tanchorkind.html - TAnchors controls/tanchors.html - TAnchorSideReference controls/tanchorsidereference.html - TCaption controls/tcaption.html - TCursor controls/tcursor.html - TFormStyle controls/tformstyle.html - TFormBorderStyle controls/tformborderstyle.html - TBorderStyle controls/tborderstyle.html - TControlBorderStyle controls/tcontrolborderstyle.html - TControlRoleForForm controls/tcontrolroleforform.html - TControlRolesForForm controls/tcontrolrolesforform.html - TBevelCut controls/tbevelcut.html - TMouseButton controls/tmousebutton.html - TCaptureMouseButtons controls/tcapturemousebuttons.html - TWndMethod controls/twndmethod.html - TControlStyleType controls/tcontrolstyletype.html - TControlStyle controls/tcontrolstyle.html - TControlStateType controls/tcontrolstatetype.html - TControlState controls/tcontrolstate.html - PHintInfo controls/phintinfo.html - THintInfo controls/thintinfo.html - TKeyEvent controls/tkeyevent.html - TKeyPressEvent controls/tkeypressevent.html - TUTF8KeyPressEvent controls/tutf8keypressevent.html - TMouseEvent controls/tmouseevent.html - TMouseMoveEvent controls/tmousemoveevent.html - TMouseWheelEvent controls/tmousewheelevent.html - TMouseWheelUpDownEvent controls/tmousewheelupdownevent.html - TGetDockCaptionEvent controls/tgetdockcaptionevent.html - TDragKind controls/tdragkind.html - TDragMode controls/tdragmode.html - TDragState controls/tdragstate.html - TDragMessage controls/tdragmessage.html - TDragOverEvent controls/tdragoverevent.html - TDragDropEvent controls/tdragdropevent.html - TStartDragEvent controls/tstartdragevent.html - TEndDragEvent controls/tenddragevent.html - TDragObjectClass controls/tdragobjectclass.html - TDockOrientation controls/tdockorientation.html - TDockDropEvent controls/tdockdropevent.html - TDockOverEvent controls/tdockoverevent.html - TUnDockEvent controls/tundockevent.html - TStartDockEvent controls/tstartdockevent.html - TGetSiteInfoEvent controls/tgetsiteinfoevent.html - TDockManagerClass controls/tdockmanagerclass.html - TConstraintSize controls/tconstraintsize.html - TSizeConstraintsOption controls/tsizeconstraintsoption.html - TSizeConstraintsOptions controls/tsizeconstraintsoptions.html - TConstrainedResizeEvent controls/tconstrainedresizeevent.html - TSpacingSize controls/tspacingsize.html - TControlCellAlign controls/tcontrolcellalign.html - TControlCellAligns controls/tcontrolcellaligns.html - TControlBorderSpacingDefault controls/tcontrolborderspacingdefault.html - PControlBorderSpacingDefault controls/pcontrolborderspacingdefault.html - TAnchorSideChangeOperation controls/tanchorsidechangeoperation.html - TControlActionLinkClass controls/tcontrolactionlinkclass.html - TControlAutoSizePhase controls/tcontrolautosizephase.html - TControlAutoSizePhases controls/tcontrolautosizephases.html - TTabOrder controls/ttaborder.html - TControlShowHintEvent controls/tcontrolshowhintevent.html - TContextPopupEvent controls/tcontextpopupevent.html - TControlFlag controls/tcontrolflag.html - TControlFlags controls/tcontrolflags.html - TControlHandlerType controls/tcontrolhandlertype.html - TLayoutAdjustmentPolicy controls/tlayoutadjustmentpolicy.html - TLazAccessibilityRole controls/tlazaccessibilityrole.html - TBorderWidth controls/tborderwidth.html - TGetChildProc controls/tgetchildproc.html - TChildControlResizeStyle controls/tchildcontrolresizestyle.html - TControlChildrenLayout controls/tcontrolchildrenlayout.html - TWinControlActionLink controls/twincontrolactionlink.html - TWinControlActionLinkClass controls/twincontrolactionlinkclass.html - TWinControlFlag controls/twincontrolflag.html - TWinControlFlags controls/twincontrolflags.html - TControlAtPosFlag controls/tcontrolatposflag.html - TControlAtPosFlags controls/tcontrolatposflags.html - TAlignInfo controls/taligninfo.html - TAlignInsertBeforeEvent controls/taligninsertbeforeevent.html - TAlignPositionEvent controls/talignpositionevent.html - TDockZoneClass controls/tdockzoneclass.html - TForEachZoneProc controls/tforeachzoneproc.html - TDockTreeFlag controls/tdocktreeflag.html - TDockTreeFlags controls/tdocktreeflags.html - TControlCanvas controls/tcontrolcanvas.html - GetDefaultColor controls/tcontrolcanvas.getdefaultcolor.html - Create controls/tcontrolcanvas.create.html - Destroy controls/tcontrolcanvas.destroy.html - ControlIsPainting controls/tcontrolcanvas.controlispainting.html - Control controls/tcontrolcanvas.control.html - CreateHandle graphics/tcanvas.createhandle.html - FreeHandle graphics/tcanvas.freehandle.html - TDragImageList controls/tdragimagelist.html - WSRegisterClass controls/tdragimagelist.wsregisterclass.html - BeginDrag controls/tdragimagelist.begindrag.html - DragLock controls/tdragimagelist.draglock.html - DragMove controls/tdragimagelist.dragmove.html - DragUnlock controls/tdragimagelist.dragunlock.html - EndDrag controls/tdragimagelist.enddrag.html - HideDragImage controls/tdragimagelist.hidedragimage.html - SetDragImage controls/tdragimagelist.setdragimage.html - ShowDragImage controls/tdragimagelist.showdragimage.html - DragCursor controls/tdragimagelist.dragcursor.html - DragHotspot controls/tdragimagelist.draghotspot.html - Dragging controls/tdragimagelist.dragging.html - Initialize imglist/tcustomimagelist.initialize.html - GetHotSpot imglist/tcustomimagelist.gethotspot.html - TDragObject controls/tdragobject.html - EndDrag controls/tdragobject.enddrag.html - GetDragImages controls/tdragobject.getdragimages.html - GetDragCursor controls/tdragobject.getdragcursor.html - Create controls/tdragobject.create.html - AutoCreate controls/tdragobject.autocreate.html - HideDragImage controls/tdragobject.hidedragimage.html - ShowDragImage controls/tdragobject.showdragimage.html - AlwaysShowDragImages controls/tdragobject.alwaysshowdragimages.html - AutoCreated controls/tdragobject.autocreated.html - AutoFree controls/tdragobject.autofree.html - Control controls/tdragobject.control.html - DragPos controls/tdragobject.dragpos.html - DragTarget controls/tdragobject.dragtarget.html - DragTargetPos controls/tdragobject.dragtargetpos.html - Dropped controls/tdragobject.dropped.html - TDragObjectEx controls/tdragobjectex.html - Create controls/tdragobjectex.create.html - TDragControlObject controls/tdragcontrolobject.html - GetDragCursor controls/tdragcontrolobject.getdragcursor.html - GetDragImages controls/tdragcontrolobject.getdragimages.html - TDragControlObjectEx controls/tdragcontrolobjectex.html - Create controls/tdragcontrolobjectex.create.html - TDragDockObject controls/tdragdockobject.html - AdjustDockRect controls/tdragdockobject.adjustdockrect.html - EndDrag controls/tdragdockobject.enddrag.html - InitDock controls/tdragdockobject.initdock.html - ShowDockImage controls/tdragdockobject.showdockimage.html - HideDockImage controls/tdragdockobject.hidedockimage.html - MoveDockImage controls/tdragdockobject.movedockimage.html - DockOffset controls/tdragdockobject.dockoffset.html - DockRect controls/tdragdockobject.dockrect.html - DropAlign controls/tdragdockobject.dropalign.html - DropOnControl controls/tdragdockobject.droponcontrol.html - Floating controls/tdragdockobject.floating.html - IncreaseDockArea controls/tdragdockobject.increasedockarea.html - EraseDockRect controls/tdragdockobject.erasedockrect.html - GetDragCursor controls/tdragobject.getdragcursor.html - TDragDockObjectEx controls/tdragdockobjectex.html - Create controls/tdragdockobjectex.create.html - TDragManager controls/tdragmanager.html - KeyUp controls/tdragmanager.keyup.html - KeyDown controls/tdragmanager.keydown.html - CaptureChanged controls/tdragmanager.capturechanged.html - MouseMove controls/tdragmanager.mousemove.html - MouseUp controls/tdragmanager.mouseup.html - MouseDown controls/tdragmanager.mousedown.html - Create controls/tdragmanager.create.html - IsDragging controls/tdragmanager.isdragging.html - Dragging controls/tdragmanager.dragging.html - RegisterDockSite controls/tdragmanager.registerdocksite.html - DragStart controls/tdragmanager.dragstart.html - DragMove controls/tdragmanager.dragmove.html - DragStop controls/tdragmanager.dragstop.html - DragImmediate controls/tdragmanager.dragimmediate.html - DragThreshold controls/tdragmanager.dragthreshold.html - TDockManager controls/tdockmanager.html - Create controls/tdockmanager.create.html - BeginUpdate controls/tdockmanager.beginupdate.html - EndUpdate controls/tdockmanager.endupdate.html - GetControlBounds controls/tdockmanager.getcontrolbounds.html - GetDockEdge controls/tdockmanager.getdockedge.html - InsertControl controls/tdockmanager.insertcontrol.html - LoadFromStream controls/tdockmanager.loadfromstream.html - PaintSite controls/tdockmanager.paintsite.html - MessageHandler controls/tdockmanager.messagehandler.html - PositionDockRect controls/tdockmanager.positiondockrect.html - RemoveControl controls/tdockmanager.removecontrol.html - ResetBounds controls/tdockmanager.resetbounds.html - SaveToStream controls/tdockmanager.savetostream.html - SetReplacingControl controls/tdockmanager.setreplacingcontrol.html - AutoFreeByControl controls/tdockmanager.autofreebycontrol.html - TSizeConstraints controls/tsizeconstraints.html - Change controls/tsizeconstraints.change.html - Create controls/tsizeconstraints.create.html - UpdateInterfaceConstraints controls/tsizeconstraints.updateinterfaceconstraints.html - SetInterfaceConstraints controls/tsizeconstraints.setinterfaceconstraints.html - EffectiveMinWidth controls/tsizeconstraints.effectiveminwidth.html - EffectiveMinHeight controls/tsizeconstraints.effectiveminheight.html - EffectiveMaxWidth controls/tsizeconstraints.effectivemaxwidth.html - EffectiveMaxHeight controls/tsizeconstraints.effectivemaxheight.html - MinMaxWidth controls/tsizeconstraints.minmaxwidth.html - MinMaxHeight controls/tsizeconstraints.minmaxheight.html - MaxInterfaceHeight controls/tsizeconstraints.maxinterfaceheight.html - MaxInterfaceWidth controls/tsizeconstraints.maxinterfacewidth.html - MinInterfaceHeight controls/tsizeconstraints.mininterfaceheight.html - MinInterfaceWidth controls/tsizeconstraints.mininterfacewidth.html - Control controls/tsizeconstraints.control.html - Options controls/tsizeconstraints.options.html - OnChange controls/tsizeconstraints.onchange.html - MaxHeight controls/tsizeconstraints.maxheight.html - MaxWidth controls/tsizeconstraints.maxwidth.html - MinHeight controls/tsizeconstraints.minheight.html - MinWidth controls/tsizeconstraints.minwidth.html - AssignTo - SetMaxHeight - SetMaxWidth - SetMinHeight - SetMinWidth - TControlBorderSpacing controls/tcontrolborderspacing.html - Change controls/tcontrolborderspacing.change.html - Create controls/tcontrolborderspacing.create.html - IsEqual controls/tcontrolborderspacing.isequal.html - GetSpaceAround controls/tcontrolborderspacing.getspacearound.html - GetSideSpace controls/tcontrolborderspacing.getsidespace.html - Control controls/tcontrolborderspacing.control.html - Space controls/tcontrolborderspacing.space.html - OnChange controls/tcontrolborderspacing.onchange.html - Left controls/tcontrolborderspacing.left.html - Top controls/tcontrolborderspacing.top.html - Right controls/tcontrolborderspacing.right.html - Bottom controls/tcontrolborderspacing.bottom.html - Around controls/tcontrolborderspacing.around.html - InnerBorder controls/tcontrolborderspacing.innerborder.html - CellAlignHorizontal controls/tcontrolborderspacing.cellalignhorizontal.html - CellAlignVertical controls/tcontrolborderspacing.cellalignvertical.html - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html - AssignTo - GetSpace - TAnchorSide controls/tanchorside.html - GetOwner controls/tanchorside.getowner.html - Create controls/tanchorside.create.html - Destroy controls/tanchorside.destroy.html - GetSidePosition controls/tanchorside.getsideposition.html - CheckSidePosition controls/tanchorside.checksideposition.html - IsAnchoredToParent controls/tanchorside.isanchoredtoparent.html - FixCenterAnchoring controls/tanchorside.fixcenteranchoring.html - Owner controls/tanchorside.owner.html - Kind controls/tanchorside.kind.html - Control controls/tanchorside.control.html - Side controls/tanchorside.side.html - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html - TControlActionLink controls/tcontrolactionlink.html - FClient controls/tcontrolactionlink.fclient.html - SetCaption controls/tcontrolactionlink.setcaption.html - SetEnabled controls/tcontrolactionlink.setenabled.html - SetHint controls/tcontrolactionlink.sethint.html - SetHelpContext controls/tcontrolactionlink.sethelpcontext.html - SetHelpKeyword controls/tcontrolactionlink.sethelpkeyword.html - SetHelpType controls/tcontrolactionlink.sethelptype.html - SetVisible controls/tcontrolactionlink.setvisible.html - SetOnExecute controls/tcontrolactionlink.setonexecute.html - IsOnExecuteLinked controls/tcontrolactionlink.isonexecutelinked.html - DoShowHint controls/tcontrolactionlink.doshowhint.html - AssignClient - IsCaptionLinked actnlist/tactionlink.iscaptionlinked.html - IsEnabledLinked actnlist/tactionlink.isenabledlinked.html - IsHelpLinked actnlist/tactionlink.ishelplinked.html - IsHintLinked actnlist/tactionlink.ishintlinked.html - IsVisibleLinked actnlist/tactionlink.isvisiblelinked.html - TLazAccessibleObjectEnumerator controls/tlazaccessibleobjectenumerator.html - Current controls/tlazaccessibleobjectenumerator.current.html - TLazAccessibleObject controls/tlazaccessibleobject.html - FChildrenSortedForDataObject controls/tlazaccessibleobject.fchildrensortedfordataobject.html - FAccessibleDescription controls/tlazaccessibleobject.faccessibledescription.html - FAccessibleValue controls/tlazaccessibleobject.faccessiblevalue.html - FAccessibleRole controls/tlazaccessibleobject.faccessiblerole.html - WSRegisterClass controls/tlazaccessibleobject.wsregisterclass.html - GetAccessibleValue controls/tlazaccessibleobject.getaccessiblevalue.html - OwnerControl controls/tlazaccessibleobject.ownercontrol.html - Parent controls/tlazaccessibleobject.parent.html - DataObject controls/tlazaccessibleobject.dataobject.html - SecondaryHandle controls/tlazaccessibleobject.secondaryhandle.html - HandleAllocated controls/tlazaccessibleobject.handleallocated.html - InitializeHandle controls/tlazaccessibleobject.initializehandle.html - SetAccessibleDescription controls/tlazaccessibleobject.setaccessibledescription.html - SetAccessibleValue controls/tlazaccessibleobject.setaccessiblevalue.html - SetAccessibleRole controls/tlazaccessibleobject.setaccessiblerole.html - FindOwnerWinControl controls/tlazaccessibleobject.findownerwincontrol.html - AddChildAccessibleObject controls/tlazaccessibleobject.addchildaccessibleobject.html - InsertChildAccessibleObject controls/tlazaccessibleobject.insertchildaccessibleobject.html - ClearChildAccessibleObjects controls/tlazaccessibleobject.clearchildaccessibleobjects.html - RemoveChildAccessibleObject controls/tlazaccessibleobject.removechildaccessibleobject.html - GetChildAccessibleObjectWithDataObject controls/tlazaccessibleobject.getchildaccessibleobjectwithdataobject.html - GetChildAccessibleObjectsCount controls/tlazaccessibleobject.getchildaccessibleobjectscount.html - GetChildAccessibleObject controls/tlazaccessibleobject.getchildaccessibleobject.html - GetFirstChildAccessibleObject controls/tlazaccessibleobject.getfirstchildaccessibleobject.html - GetNextChildAccessibleObject controls/tlazaccessibleobject.getnextchildaccessibleobject.html - GetSelectedChildAccessibleObject controls/tlazaccessibleobject.getselectedchildaccessibleobject.html - GetChildAccessibleObjectAtPos controls/tlazaccessibleobject.getchildaccessibleobjectatpos.html - AccessibleDescription controls/tlazaccessibleobject.accessibledescription.html - AccessibleValue controls/tlazaccessibleobject.accessiblevalue.html - AccessibleRole controls/tlazaccessibleobject.accessiblerole.html - Position controls/tlazaccessibleobject.position.html - Size controls/tlazaccessibleobject.size.html - Handle controls/tlazaccessibleobject.handle.html - GetEnumerator controls/tlazaccessibleobject.getenumerator.html - Create ms-its:rtl.chm::/system/tobject.create.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - TControl controls/tcontrol.html - FAccessibleObject controls/tcontrol.faccessibleobject.html - DoOnParentHandleDestruction controls/tcontrol.doonparenthandledestruction.html - DoAutoSize controls/tcontrol.doautosize.html - DoAllAutoSize controls/tcontrol.doallautosize.html - BeginAutoSizing controls/tcontrol.beginautosizing.html - EndAutoSizing controls/tcontrol.endautosizing.html - AnchorSideChanged controls/tcontrol.anchorsidechanged.html - ForeignAnchorSideChanged controls/tcontrol.foreignanchorsidechanged.html - BoundsChanged controls/tcontrol.boundschanged.html - CreateControlBorderSpacing controls/tcontrol.createcontrolborderspacing.html - DoConstraintsChange controls/tcontrol.doconstraintschange.html - DoBorderSpacingChange controls/tcontrol.doborderspacingchange.html - IsBorderSpacingInnerBorderStored controls/tcontrol.isborderspacinginnerborderstored.html - SendMoveSizeMessages controls/tcontrol.sendmovesizemessages.html - ConstrainedResize controls/tcontrol.constrainedresize.html - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - DoOnResize controls/tcontrol.doonresize.html - DoOnChangeBounds controls/tcontrol.doonchangebounds.html - CheckOnChangeBounds controls/tcontrol.checkonchangebounds.html - Resize controls/tcontrol.resize.html - RequestAlign controls/tcontrol.requestalign.html - UpdateAnchorRules controls/tcontrol.updateanchorrules.html - ChangeBounds controls/tcontrol.changebounds.html - DoSetBounds controls/tcontrol.dosetbounds.html - ScaleConstraints controls/tcontrol.scaleconstraints.html - ChangeScale controls/tcontrol.changescale.html - CanAutoSize controls/tcontrol.canautosize.html - UpdateAlignIndex controls/tcontrol.updatealignindex.html - IsAParentAligning controls/tcontrol.isaparentaligning.html - GetLogicalClientRect controls/tcontrol.getlogicalclientrect.html - GetScrolledClientRect controls/tcontrol.getscrolledclientrect.html - GetClientScrollOffset controls/tcontrol.getclientscrolloffset.html - WidthIsAnchored controls/tcontrol.widthisanchored.html - HeightIsAnchored controls/tcontrol.heightisanchored.html - AutoSizing controls/tcontrol.autosizing.html - AutoSizingAll controls/tcontrol.autosizingall.html - AutoSizingLockCount controls/tcontrol.autosizinglockcount.html - WMCancelMode controls/tcontrol.wmcancelmode.html - WMContextMenu controls/tcontrol.wmcontextmenu.html - WMLButtonDown controls/tcontrol.wmlbuttondown.html - WMRButtonDown controls/tcontrol.wmrbuttondown.html - WMMButtonDown controls/tcontrol.wmmbuttondown.html - WMXButtonDown controls/tcontrol.wmxbuttondown.html - WMLButtonDBLCLK controls/tcontrol.wmlbuttondblclk.html - WMRButtonDBLCLK controls/tcontrol.wmrbuttondblclk.html - WMMButtonDBLCLK controls/tcontrol.wmmbuttondblclk.html - WMXButtonDBLCLK controls/tcontrol.wmxbuttondblclk.html - WMLButtonTripleCLK controls/tcontrol.wmlbuttontripleclk.html - WMRButtonTripleCLK controls/tcontrol.wmrbuttontripleclk.html - WMMButtonTripleCLK controls/tcontrol.wmmbuttontripleclk.html - WMXButtonTripleCLK controls/tcontrol.wmxbuttontripleclk.html - WMLButtonQuadCLK controls/tcontrol.wmlbuttonquadclk.html - WMRButtonQuadCLK controls/tcontrol.wmrbuttonquadclk.html - WMMButtonQuadCLK controls/tcontrol.wmmbuttonquadclk.html - WMXButtonQuadCLK controls/tcontrol.wmxbuttonquadclk.html - WMMouseMove controls/tcontrol.wmmousemove.html - WMLButtonUp controls/tcontrol.wmlbuttonup.html - WMRButtonUp controls/tcontrol.wmrbuttonup.html - WMMButtonUp controls/tcontrol.wmmbuttonup.html - WMXButtonUp controls/tcontrol.wmxbuttonup.html - WMMouseWheel controls/tcontrol.wmmousewheel.html - WMMove controls/tcontrol.wmmove.html - WMSize controls/tcontrol.wmsize.html - WMWindowPosChanged controls/tcontrol.wmwindowposchanged.html - LMCaptureChanged controls/tcontrol.lmcapturechanged.html - CMBiDiModeChanged controls/tcontrol.cmbidimodechanged.html - CMSysFontChanged controls/tcontrol.cmsysfontchanged.html - CMEnabledChanged controls/tcontrol.cmenabledchanged.html - CMHitTest controls/tcontrol.cmhittest.html - CMMouseEnter controls/tcontrol.cmmouseenter.html - CMMouseLeave controls/tcontrol.cmmouseleave.html - CMHintShow controls/tcontrol.cmhintshow.html - CMParentBiDiModeChanged controls/tcontrol.cmparentbidimodechanged.html - CMParentColorChanged controls/tcontrol.cmparentcolorchanged.html - CMParentFontChanged controls/tcontrol.cmparentfontchanged.html - CMParentShowHintChanged controls/tcontrol.cmparentshowhintchanged.html - CMVisibleChanged controls/tcontrol.cmvisiblechanged.html - CMTextChanged controls/tcontrol.cmtextchanged.html - CMCursorChanged controls/tcontrol.cmcursorchanged.html - CalculateDockSizes controls/tcontrol.calculatedocksizes.html - CreateFloatingDockSite controls/tcontrol.createfloatingdocksite.html - GetDockEdge controls/tcontrol.getdockedge.html - GetDragImages controls/tcontrol.getdragimages.html - GetFloating controls/tcontrol.getfloating.html - GetFloatingDockSiteClass controls/tcontrol.getfloatingdocksiteclass.html - BeforeDragStart controls/tcontrol.beforedragstart.html - BeginAutoDrag controls/tcontrol.beginautodrag.html - DoFloatMsg controls/tcontrol.dofloatmsg.html - DockTrackNoTarget controls/tcontrol.docktracknotarget.html - DoDock controls/tcontrol.dodock.html - DoDragMsg controls/tcontrol.dodragmsg.html - DoEndDock controls/tcontrol.doenddock.html - DoEndDrag controls/tcontrol.doenddrag.html - DoStartDock controls/tcontrol.dostartdock.html - DoStartDrag controls/tcontrol.dostartdrag.html - DragCanceled controls/tcontrol.dragcanceled.html - DragOver controls/tcontrol.dragover.html - PositionDockRect controls/tcontrol.positiondockrect.html - GetDefaultDockCaption controls/tcontrol.getdefaultdockcaption.html - Click controls/tcontrol.click.html - DblClick controls/tcontrol.dblclick.html - TripleClick controls/tcontrol.tripleclick.html - QuadClick controls/tcontrol.quadclick.html - MouseDown controls/tcontrol.mousedown.html - MouseMove controls/tcontrol.mousemove.html - MouseUp controls/tcontrol.mouseup.html - MouseEnter controls/tcontrol.mouseenter.html - MouseLeave controls/tcontrol.mouseleave.html - DialogChar controls/tcontrol.dialogchar.html - UpdateMouseCursor controls/tcontrol.updatemousecursor.html - Changed controls/tcontrol.changed.html - GetPalette controls/tcontrol.getpalette.html - ChildClassAllowed controls/tcontrol.childclassallowed.html - LoadedAll controls/tcontrol.loadedall.html - DefineProperties controls/tcontrol.defineproperties.html - AssignTo controls/tcontrol.assignto.html - FormEndUpdated controls/tcontrol.formendupdated.html - InvalidateControl controls/tcontrol.invalidatecontrol.html - FontChanged controls/tcontrol.fontchanged.html - ParentFontChanged controls/tcontrol.parentfontchanged.html - RealGetText controls/tcontrol.realgettext.html - RealSetText controls/tcontrol.realsettext.html - TextChanged controls/tcontrol.textchanged.html - GetCachedText controls/tcontrol.getcachedtext.html - SetParentComponent controls/tcontrol.setparentcomponent.html - WndProc controls/tcontrol.wndproc.html - ParentFormHandleInitialized controls/tcontrol.parentformhandleinitialized.html - CaptureChanged controls/tcontrol.capturechanged.html - Notification controls/tcontrol.notification.html - CanTab controls/tcontrol.cantab.html - GetDeviceContext controls/tcontrol.getdevicecontext.html - DoOnShowHint controls/tcontrol.doonshowhint.html - DoMouseWheel controls/tcontrol.domousewheel.html - DoMouseWheelDown controls/tcontrol.domousewheeldown.html - DoMouseWheelUp controls/tcontrol.domousewheelup.html - VisibleChanging controls/tcontrol.visiblechanging.html - VisibleChanged controls/tcontrol.visiblechanged.html - EnabledChanging controls/tcontrol.enabledchanging.html - EnabledChanged controls/tcontrol.enabledchanged.html - AddHandler controls/tcontrol.addhandler.html - RemoveHandler controls/tcontrol.removehandler.html - DoCallNotifyHandler controls/tcontrol.docallnotifyhandler.html - DoContextPopup controls/tcontrol.docontextpopup.html - SetZOrder controls/tcontrol.setzorder.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - GetActionLinkClass controls/tcontrol.getactionlinkclass.html - ActionChange controls/tcontrol.actionchange.html - ActionLink controls/tcontrol.actionlink.html - DesktopFont controls/tcontrol.desktopfont.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - MouseCapture controls/tcontrol.mousecapture.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - SessionProperties controls/tcontrol.sessionproperties.html - Text controls/tcontrol.text.html - OnConstrainedResize controls/tcontrol.onconstrainedresize.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnTripleClick controls/tcontrol.ontripleclick.html - OnQuadClick controls/tcontrol.onquadclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnEditingDone controls/tcontrol.oneditingdone.html - FCompStyle controls/tcontrol.fcompstyle.html - DragDrop controls/tcontrol.dragdrop.html - Dock controls/tcontrol.dock.html - ManualDock controls/tcontrol.manualdock.html - ManualFloat controls/tcontrol.manualfloat.html - ReplaceDockedControl controls/tcontrol.replacedockedcontrol.html - Dragging controls/tcontrol.dragging.html - GetAccessibleObject controls/tcontrol.getaccessibleobject.html - CreateAccessibleObject controls/tcontrol.createaccessibleobject.html - GetSelectedChildAccessibleObject controls/tcontrol.getselectedchildaccessibleobject.html - GetChildAccessibleObjectAtPos controls/tcontrol.getchildaccessibleobjectatpos.html - AdjustSize controls/tcontrol.adjustsize.html - AutoSizePhases controls/tcontrol.autosizephases.html - AutoSizeDelayed controls/tcontrol.autosizedelayed.html - AutoSizeDelayedReport controls/tcontrol.autosizedelayedreport.html - AutoSizeDelayedHandle controls/tcontrol.autosizedelayedhandle.html - AnchorToNeighbour controls/tcontrol.anchortoneighbour.html - AnchorParallel controls/tcontrol.anchorparallel.html - AnchorHorizontalCenterTo controls/tcontrol.anchorhorizontalcenterto.html - AnchorVerticalCenterTo controls/tcontrol.anchorverticalcenterto.html - AnchorToCompanion controls/tcontrol.anchortocompanion.html - AnchorSame controls/tcontrol.anchorsame.html - AnchorAsAlign controls/tcontrol.anchorasalign.html - AnchorClient controls/tcontrol.anchorclient.html - AnchoredControlCount controls/tcontrol.anchoredcontrolcount.html - AnchoredControls controls/tcontrol.anchoredcontrols.html - SetBounds controls/tcontrol.setbounds.html - SetInitialBounds controls/tcontrol.setinitialbounds.html - SetBoundsKeepBase controls/tcontrol.setboundskeepbase.html - GetPreferredSize controls/tcontrol.getpreferredsize.html - GetDefaultWidth controls/tcontrol.getdefaultwidth.html - GetDefaultHeight controls/tcontrol.getdefaultheight.html - GetDefaultColor controls/tcontrol.getdefaultcolor.html - GetColorResolvingParent controls/tcontrol.getcolorresolvingparent.html - GetRGBColorResolvingParent controls/tcontrol.getrgbcolorresolvingparent.html - GetSidePosition controls/tcontrol.getsideposition.html - CNPreferredSizeChanged controls/tcontrol.cnpreferredsizechanged.html - InvalidatePreferredSize controls/tcontrol.invalidatepreferredsize.html - GetAnchorsDependingOnParent controls/tcontrol.getanchorsdependingonparent.html - DisableAutoSizing controls/tcontrol.disableautosizing.html - EnableAutoSizing controls/tcontrol.enableautosizing.html - UpdateBaseBounds controls/tcontrol.updatebasebounds.html - BaseBounds controls/tcontrol.basebounds.html - ReadBounds controls/tcontrol.readbounds.html - BaseParentClientSize controls/tcontrol.baseparentclientsize.html - WriteLayoutDebugReport controls/tcontrol.writelayoutdebugreport.html - AutoAdjustLayout controls/tcontrol.autoadjustlayout.html - ShouldAutoAdjustLeftAndTop controls/tcontrol.shouldautoadjustleftandtop.html - ShouldAutoAdjustWidthAndHeight controls/tcontrol.shouldautoadjustwidthandheight.html - Create controls/tcontrol.create.html - Destroy controls/tcontrol.destroy.html - BeforeDestruction controls/tcontrol.beforedestruction.html - EditingDone controls/tcontrol.editingdone.html - ExecuteDefaultAction controls/tcontrol.executedefaultaction.html - ExecuteCancelAction controls/tcontrol.executecancelaction.html - BeginDrag controls/tcontrol.begindrag.html - EndDrag controls/tcontrol.enddrag.html - BringToFront controls/tcontrol.bringtofront.html - HasParent controls/tcontrol.hasparent.html - GetParentComponent controls/tcontrol.getparentcomponent.html - IsParentOf controls/tcontrol.isparentof.html - GetTopParent controls/tcontrol.gettopparent.html - IsVisible controls/tcontrol.isvisible.html - IsControlVisible controls/tcontrol.iscontrolvisible.html - IsEnabled controls/tcontrol.isenabled.html - IsParentColor controls/tcontrol.isparentcolor.html - IsParentFont controls/tcontrol.isparentfont.html - FormIsUpdating controls/tcontrol.formisupdating.html - IsProcessingPaintMsg controls/tcontrol.isprocessingpaintmsg.html - Hide controls/tcontrol.hide.html - Repaint controls/tcontrol.repaint.html - Invalidate controls/tcontrol.invalidate.html - CheckChildClassAllowed controls/tcontrol.checkchildclassallowed.html - CheckNewParent controls/tcontrol.checknewparent.html - SendToBack controls/tcontrol.sendtoback.html - SetTempCursor controls/tcontrol.settempcursor.html - UpdateRolesForForm controls/tcontrol.updaterolesforform.html - ActiveDefaultControlChanged controls/tcontrol.activedefaultcontrolchanged.html - GetTextBuf controls/tcontrol.gettextbuf.html - GetTextLen controls/tcontrol.gettextlen.html - SetTextBuf controls/tcontrol.settextbuf.html - Perform controls/tcontrol.perform.html - ScreenToClient controls/tcontrol.screentoclient.html - ClientToScreen controls/tcontrol.clienttoscreen.html - ScreenToControl controls/tcontrol.screentocontrol.html - ControlToScreen controls/tcontrol.controltoscreen.html - ClientToParent controls/tcontrol.clienttoparent.html - ParentToClient controls/tcontrol.parenttoclient.html - GetChildrenRect controls/tcontrol.getchildrenrect.html - Show controls/tcontrol.show.html - Update controls/tcontrol.update.html - HandleObjectShouldBeVisible controls/tcontrol.handleobjectshouldbevisible.html - ParentDestroyingHandle controls/tcontrol.parentdestroyinghandle.html - ParentHandlesAllocated controls/tcontrol.parenthandlesallocated.html - InitiateAction controls/tcontrol.initiateaction.html - ShowHelp controls/tcontrol.showhelp.html - HasHelp controls/tcontrol.hashelp.html - AddHandlerOnResize controls/tcontrol.addhandleronresize.html - RemoveHandlerOnResize controls/tcontrol.removehandleronresize.html - AddHandlerOnChangeBounds controls/tcontrol.addhandleronchangebounds.html - RemoveHandlerOnChangeBounds controls/tcontrol.removehandleronchangebounds.html - AddHandlerOnVisibleChanging controls/tcontrol.addhandleronvisiblechanging.html - RemoveHandlerOnVisibleChanging controls/tcontrol.removehandleronvisiblechanging.html - AddHandlerOnVisibleChanged controls/tcontrol.addhandleronvisiblechanged.html - RemoveHandlerOnVisibleChanged controls/tcontrol.removehandleronvisiblechanged.html - AddHandlerOnEnabledChanged controls/tcontrol.addhandleronenabledchanged.html - RemoveHandlerOnEnableChanging controls/tcontrol.removehandleronenablechanging.html - AddHandlerOnKeyDown controls/tcontrol.addhandleronkeydown.html - RemoveHandlerOnKeyDown controls/tcontrol.removehandleronkeydown.html - AddHandlerOnBeforeDestruction controls/tcontrol.addhandleronbeforedestruction.html - RemoveHandlerOnBeforeDestruction controls/tcontrol.removehandleronbeforedestruction.html - AccessibleDescription controls/tcontrol.accessibledescription.html - AccessibleValue controls/tcontrol.accessiblevalue.html - AccessibleRole controls/tcontrol.accessiblerole.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AnchorSide controls/tcontrol.anchorside.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - BoundsRect controls/tcontrol.boundsrect.html - BoundsRectForNewParent controls/tcontrol.boundsrectfornewparent.html - Caption controls/tcontrol.caption.html - CaptureMouseButtons controls/tcontrol.capturemousebuttons.html - ClientHeight controls/tcontrol.clientheight.html - ClientOrigin controls/tcontrol.clientorigin.html - ClientRect controls/tcontrol.clientrect.html - ClientWidth controls/tcontrol.clientwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - ControlOrigin controls/tcontrol.controlorigin.html - ControlState controls/tcontrol.controlstate.html - ControlStyle controls/tcontrol.controlstyle.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - IsControl controls/tcontrol.iscontrol.html - MouseEntered controls/tcontrol.mouseentered.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnResize controls/tcontrol.onresize.html - OnShowHint controls/tcontrol.onshowhint.html - Parent controls/tcontrol.parent.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - Visible controls/tcontrol.visible.html - WindowProc controls/tcontrol.windowproc.html - DockOrientation controls/tcontrol.dockorientation.html - Floating controls/tcontrol.floating.html - FloatingDockSiteClass controls/tcontrol.floatingdocksiteclass.html - HostDockSite controls/tcontrol.hostdocksite.html - LRDockWidth controls/tcontrol.lrdockwidth.html - TBDockHeight controls/tcontrol.tbdockheight.html - UndockHeight controls/tcontrol.undockheight.html - UndockWidth controls/tcontrol.undockwidth.html - UseRightToLeftAlignment controls/tcontrol.userighttoleftalignment.html - UseRightToLeftReading controls/tcontrol.userighttoleftreading.html - UseRightToLeftScrollBar controls/tcontrol.userighttoleftscrollbar.html - IsRightToLeft controls/tcontrol.isrighttoleft.html - BiDiMode controls/tcontrol.bidimode.html - ParentBiDiMode controls/tcontrol.parentbidimode.html - Cursor controls/tcontrol.cursor.html - Left controls/tcontrol.left.html - Height controls/tcontrol.height.html - Hint controls/tcontrol.hint.html - Top controls/tcontrol.top.html - Width controls/tcontrol.width.html - HelpType controls/tcontrol.helptype.html - HelpKeyword controls/tcontrol.helpkeyword.html - HelpContext controls/tcontrol.helpcontext.html - FControlState - FCursor - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetCursor - SetCursor - SetVisible - SetAlign - SetAnchors - SetAutoSize - IsCaptionStored - SetBiDiMode - SetParentBiDiMode - GetClientOrigin - GetClientRect - GetControlOrigin - IsClientHeightStored - IsClientWidthStored - SetDragMode - ReadState - Loaded - GetAction - SetAction - SetColor - SetEnabled - SetHint - SetName - SetParent - GetMouseCapture - GetEnabled - GetPopupMenu - ColorIsStored - Refresh - RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html - AnchorSideLeft - AnchorSideTop - AnchorSideRight - AnchorSideBottom - TControlChildSizing controls/tcontrolchildsizing.html - Change controls/tcontrolchildsizing.change.html - Create controls/tcontrolchildsizing.create.html - IsEqual controls/tcontrolchildsizing.isequal.html - SetGridSpacing controls/tcontrolchildsizing.setgridspacing.html - Control controls/tcontrolchildsizing.control.html - OnChange controls/tcontrolchildsizing.onchange.html - LeftRightSpacing controls/tcontrolchildsizing.leftrightspacing.html - TopBottomSpacing controls/tcontrolchildsizing.topbottomspacing.html - HorizontalSpacing controls/tcontrolchildsizing.horizontalspacing.html - VerticalSpacing controls/tcontrolchildsizing.verticalspacing.html - EnlargeHorizontal controls/tcontrolchildsizing.enlargehorizontal.html - EnlargeVertical controls/tcontrolchildsizing.enlargevertical.html - ShrinkHorizontal controls/tcontrolchildsizing.shrinkhorizontal.html - ShrinkVertical controls/tcontrolchildsizing.shrinkvertical.html - Layout controls/tcontrolchildsizing.layout.html - ControlsPerLine controls/tcontrolchildsizing.controlsperline.html - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html - AssignTo - TWinControlEnumerator controls/twincontrolenumerator.html - FIndex controls/twincontrolenumerator.findex.html - FLowToHigh controls/twincontrolenumerator.flowtohigh.html - FParent controls/twincontrolenumerator.fparent.html - GetCurrent controls/twincontrolenumerator.getcurrent.html - Create controls/twincontrolenumerator.create.html - GetEnumerator controls/twincontrolenumerator.getenumerator.html - MoveNext controls/twincontrolenumerator.movenext.html - Current controls/twincontrolenumerator.current.html - TWinControl controls/twincontrol.html - FWinControlFlags controls/twincontrol.fwincontrolflags.html - AdjustClientRect controls/twincontrol.adjustclientrect.html - GetAdjustedLogicalClientRect controls/twincontrol.getadjustedlogicalclientrect.html - CreateControlAlignList controls/twincontrol.createcontrolalignlist.html - AlignControls controls/twincontrol.aligncontrols.html - CustomAlignInsertBefore controls/twincontrol.customaligninsertbefore.html - CustomAlignPosition controls/twincontrol.customalignposition.html - DoAlignChildControls controls/twincontrol.doalignchildcontrols.html - DoChildSizingChange controls/twincontrol.dochildsizingchange.html - InvalidatePreferredChildSizes controls/twincontrol.invalidatepreferredchildsizes.html - DoSendShowHideToInterface controls/twincontrol.dosendshowhidetointerface.html - ControlsAligned controls/twincontrol.controlsaligned.html - DoSendBoundsToInterface controls/twincontrol.dosendboundstointerface.html - RealizeBounds controls/twincontrol.realizebounds.html - RealizeBoundsRecursive controls/twincontrol.realizeboundsrecursive.html - CreateSubClass controls/twincontrol.createsubclass.html - DoSetBounds controls/twincontrol.dosetbounds.html - DoAutoSize controls/twincontrol.doautosize.html - AllAutoSized controls/twincontrol.allautosized.html - CalculatePreferredSize controls/twincontrol.calculatepreferredsize.html - GetChildren controls/twincontrol.getchildren.html - ChildClassAllowed controls/twincontrol.childclassallowed.html - PaintControls controls/twincontrol.paintcontrols.html - PaintHandler controls/twincontrol.painthandler.html - PaintWindow controls/twincontrol.paintwindow.html - CreateBrush controls/twincontrol.createbrush.html - ScaleControls controls/twincontrol.scalecontrols.html - CMBiDiModeChanged controls/twincontrol.cmbidimodechanged.html - CMBorderChanged controls/twincontrol.cmborderchanged.html - CMEnabledChanged controls/twincontrol.cmenabledchanged.html - CMShowingChanged controls/twincontrol.cmshowingchanged.html - CMShowHintChanged controls/twincontrol.cmshowhintchanged.html - CMVisibleChanged controls/twincontrol.cmvisiblechanged.html - CMEnter controls/twincontrol.cmenter.html - CMExit controls/twincontrol.cmexit.html - WMContextMenu controls/twincontrol.wmcontextmenu.html - WMEraseBkgnd controls/twincontrol.wmerasebkgnd.html - WMNotify controls/twincontrol.wmnotify.html - WMSetFocus controls/twincontrol.wmsetfocus.html - WMKillFocus controls/twincontrol.wmkillfocus.html - WMShowWindow controls/twincontrol.wmshowwindow.html - WMEnter controls/twincontrol.wmenter.html - WMExit controls/twincontrol.wmexit.html - WMKeyDown controls/twincontrol.wmkeydown.html - WMSysKeyDown controls/twincontrol.wmsyskeydown.html - WMKeyUp controls/twincontrol.wmkeyup.html - WMSysKeyUp controls/twincontrol.wmsyskeyup.html - WMChar controls/twincontrol.wmchar.html - WMSysChar controls/twincontrol.wmsyschar.html - WMPaint controls/twincontrol.wmpaint.html - WMDestroy controls/twincontrol.wmdestroy.html - WMMove controls/twincontrol.wmmove.html - WMSize controls/twincontrol.wmsize.html - WMWindowPosChanged controls/twincontrol.wmwindowposchanged.html - CNKeyDown controls/twincontrol.cnkeydown.html - CNSysKeyDown controls/twincontrol.cnsyskeydown.html - CNKeyUp controls/twincontrol.cnkeyup.html - CNSysKeyUp controls/twincontrol.cnsyskeyup.html - CNChar controls/twincontrol.cnchar.html - DoDragMsg controls/twincontrol.dodragmsg.html - DoDockClientMsg controls/twincontrol.dodockclientmsg.html - DoUndockClientMsg controls/twincontrol.doundockclientmsg.html - DoAddDockClient controls/twincontrol.doadddockclient.html - DockOver controls/twincontrol.dockover.html - DoDockOver controls/twincontrol.dodockover.html - DoRemoveDockClient controls/twincontrol.doremovedockclient.html - DoUnDock controls/twincontrol.doundock.html - GetSiteInfo controls/twincontrol.getsiteinfo.html - GetParentHandle controls/twincontrol.getparenthandle.html - GetTopParentHandle controls/twincontrol.gettopparenthandle.html - ReloadDockedControl controls/twincontrol.reloaddockedcontrol.html - CreateDockManager controls/twincontrol.createdockmanager.html - DoGetDockCaption controls/twincontrol.dogetdockcaption.html - DoEnter controls/twincontrol.doenter.html - DoExit controls/twincontrol.doexit.html - DoKeyDownBeforeInterface controls/twincontrol.dokeydownbeforeinterface.html - DoRemainingKeyDown controls/twincontrol.doremainingkeydown.html - DoRemainingKeyUp controls/twincontrol.doremainingkeyup.html - DoKeyPress controls/twincontrol.dokeypress.html - DoKeyUpBeforeInterface controls/twincontrol.dokeyupbeforeinterface.html - ChildKey controls/twincontrol.childkey.html - SendDialogChar controls/twincontrol.senddialogchar.html - ControlKeyDown controls/twincontrol.controlkeydown.html - ControlKeyUp controls/twincontrol.controlkeyup.html - KeyDown controls/twincontrol.keydown.html - KeyDownBeforeInterface controls/twincontrol.keydownbeforeinterface.html - KeyDownAfterInterface controls/twincontrol.keydownafterinterface.html - KeyPress controls/twincontrol.keypress.html - KeyUp controls/twincontrol.keyup.html - KeyUpBeforeInterface controls/twincontrol.keyupbeforeinterface.html - KeyUpAfterInterface controls/twincontrol.keyupafterinterface.html - UTF8KeyPress controls/twincontrol.utf8keypress.html - FindNextControl controls/twincontrol.findnextcontrol.html - SelectFirst controls/twincontrol.selectfirst.html - IsControlMouseMsg controls/twincontrol.iscontrolmousemsg.html - CreateHandle controls/twincontrol.createhandle.html - CreateParams controls/twincontrol.createparams.html - CreateWnd controls/twincontrol.createwnd.html - DestroyHandle controls/twincontrol.destroyhandle.html - DestroyWnd controls/twincontrol.destroywnd.html - DoFlipChildren controls/twincontrol.doflipchildren.html - FinalizeWnd controls/twincontrol.finalizewnd.html - FixupTabList controls/twincontrol.fixuptablist.html - InitializeWnd controls/twincontrol.initializewnd.html - Loaded controls/twincontrol.loaded.html - FormEndUpdated controls/twincontrol.formendupdated.html - MainWndProc controls/twincontrol.mainwndproc.html - ParentFormHandleInitialized controls/twincontrol.parentformhandleinitialized.html - ChildHandlesCreated controls/twincontrol.childhandlescreated.html - GetMouseCapture - RemoveFocus controls/twincontrol.removefocus.html - SetChildZPosition controls/twincontrol.setchildzposition.html - ShowControl controls/twincontrol.showcontrol.html - UpdateControlState controls/twincontrol.updatecontrolstate.html - UpdateShowing controls/twincontrol.updateshowing.html - WndProc controls/twincontrol.wndproc.html - WSSetText controls/twincontrol.wssettext.html - WindowHandle controls/twincontrol.windowhandle.html - BorderStyle controls/twincontrol.borderstyle.html - OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html - OnGetDockCaption controls/twincontrol.ongetdockcaption.html - BorderWidth controls/twincontrol.borderwidth.html - BoundsLockCount controls/twincontrol.boundslockcount.html - Brush controls/twincontrol.brush.html - CachedClientHeight controls/twincontrol.cachedclientheight.html - CachedClientWidth controls/twincontrol.cachedclientwidth.html - ChildSizing controls/twincontrol.childsizing.html - ControlCount controls/twincontrol.controlcount.html - Controls controls/twincontrol.controls.html - DefWndProc controls/twincontrol.defwndproc.html - DockClientCount controls/twincontrol.dockclientcount.html - DockClients controls/twincontrol.dockclients.html - DockManager controls/twincontrol.dockmanager.html - DockSite controls/twincontrol.docksite.html - DoubleBuffered controls/twincontrol.doublebuffered.html - Handle controls/twincontrol.handle.html - IsResizing controls/twincontrol.isresizing.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - OnAlignInsertBefore controls/twincontrol.onaligninsertbefore.html - OnAlignPosition controls/twincontrol.onalignposition.html - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnUnDock controls/twincontrol.onundock.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentWindow controls/twincontrol.parentwindow.html - Showing controls/twincontrol.showing.html - UseDockManager controls/twincontrol.usedockmanager.html - DesignerDeleting controls/twincontrol.designerdeleting.html - VisibleDockClientCount controls/twincontrol.visibledockclientcount.html - AutoSizePhases controls/twincontrol.autosizephases.html - AutoSizeDelayedReport controls/twincontrol.autosizedelayedreport.html - AutoSizeDelayedHandle controls/twincontrol.autosizedelayedhandle.html - BeginUpdateBounds controls/twincontrol.beginupdatebounds.html - EndUpdateBounds controls/twincontrol.endupdatebounds.html - LockRealizeBounds controls/twincontrol.lockrealizebounds.html - UnlockRealizeBounds controls/twincontrol.unlockrealizebounds.html - ControlAtPos controls/twincontrol.controlatpos.html - ContainsControl controls/twincontrol.containscontrol.html - DoAdjustClientRectChange controls/twincontrol.doadjustclientrectchange.html - InvalidateClientRectCache controls/twincontrol.invalidateclientrectcache.html - ClientRectNeedsInterfaceUpdate controls/twincontrol.clientrectneedsinterfaceupdate.html - GetChildrenRect controls/twincontrol.getchildrenrect.html - ScrollBy controls/twincontrol.scrollby.html - AutoAdjustLayout controls/twincontrol.autoadjustlayout.html - Create controls/twincontrol.create.html - CreateParented controls/twincontrol.createparented.html - Destroy controls/twincontrol.destroy.html - DockDrop controls/twincontrol.dockdrop.html - CanFocus controls/twincontrol.canfocus.html - GetControlIndex controls/twincontrol.getcontrolindex.html - Focused controls/twincontrol.focused.html - PerformTab controls/twincontrol.performtab.html - FindChildControl controls/twincontrol.findchildcontrol.html - SelectNext controls/twincontrol.selectnext.html - BroadCast controls/twincontrol.broadcast.html - NotifyControls controls/twincontrol.notifycontrols.html - DefaultHandler controls/twincontrol.defaulthandler.html - Invalidate controls/twincontrol.invalidate.html - AddControl controls/twincontrol.addcontrol.html - InsertControl controls/twincontrol.insertcontrol.html - RemoveControl controls/twincontrol.removecontrol.html - GetEnumeratorControls controls/twincontrol.getenumeratorcontrols.html - GetEnumeratorControlsReverse controls/twincontrol.getenumeratorcontrolsreverse.html - SetFocus controls/twincontrol.setfocus.html - FlipChildren controls/twincontrol.flipchildren.html - GetDockCaption controls/twincontrol.getdockcaption.html - UpdateDockCaption controls/twincontrol.updatedockcaption.html - GetTabOrderList controls/twincontrol.gettaborderlist.html - HandleAllocated controls/twincontrol.handleallocated.html - HandleNeeded controls/twincontrol.handleneeded.html - BrushCreated controls/twincontrol.brushcreated.html - EraseBackground controls/twincontrol.erasebackground.html - IntfUTF8KeyPress controls/twincontrol.intfutf8keypress.html - IntfGetDropFilesTarget controls/twincontrol.intfgetdropfilestarget.html - PaintTo controls/twincontrol.paintto.html - SetShape controls/twincontrol.setshape.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - CanTab controls/tcontrol.cantab.html - IsClientHeightStored - IsClientWidthStored - DoConstraintsChange - DoAllAutoSize - ChangeScale - SetDockManager - DoFloatMsg - DoUTF8KeyPress - DialogChar controls/tcontrol.dialogchar.html - RealGetText controls/tcontrol.realgettext.html - GetBorderStyle - GetClientOrigin - GetClientRect - GetControlOrigin - GetDeviceContext controls/tcontrol.getdevicecontext.html - FontChanged controls/tcontrol.fontchanged.html - RealSetText controls/tcontrol.realsettext.html - SendMoveSizeMessages controls/tcontrol.sendmovesizemessages.html - SetBorderStyle - SetColor - AutoSizeDelayed controls/tcontrol.autosizedelayed.html - SetBounds controls/tcontrol.setbounds.html - DisableAlign - EnableAlign - ReAlign - WriteLayoutDebugReport controls/tcontrol.writelayoutdebugreport.html - CreateParentedControl - SetControlIndex - SetTempCursor controls/tcontrol.settempcursor.html - GetTextLen controls/tcontrol.gettextlen.html - Repaint controls/tcontrol.repaint.html - Update controls/tcontrol.update.html - ScaleBy - ParentHandlesAllocated controls/tcontrol.parenthandlesallocated.html - TGraphicControl controls/tgraphiccontrol.html - Paint controls/tgraphiccontrol.paint.html - DoOnParentHandleDestruction controls/tgraphiccontrol.doonparenthandledestruction.html - OnPaint controls/tgraphiccontrol.onpaint.html - Create controls/tgraphiccontrol.create.html - Destroy controls/tgraphiccontrol.destroy.html - Canvas controls/tgraphiccontrol.canvas.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - FontChanged controls/tcontrol.fontchanged.html - DoOnChangeBounds controls/tcontrol.doonchangebounds.html - TCustomControl controls/tcustomcontrol.html - WMPaint controls/tcustomcontrol.wmpaint.html - Paint controls/tcustomcontrol.paint.html - Create controls/tcustomcontrol.create.html - Destroy controls/tcustomcontrol.destroy.html - Canvas controls/tcustomcontrol.canvas.html - OnPaint controls/tcustomcontrol.onpaint.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DestroyWnd controls/twincontrol.destroywnd.html - PaintWindow controls/twincontrol.paintwindow.html - FontChanged controls/tcontrol.fontchanged.html - SetColor - BorderStyle controls/twincontrol.borderstyle.html - TImageList controls/timagelist.html - AllocBy imglist/tcustomimagelist.allocby.html - BlendColor imglist/tcustomimagelist.blendcolor.html - BkColor imglist/tcustomimagelist.bkcolor.html - DrawingStyle imglist/tcustomimagelist.drawingstyle.html - Height imglist/tcustomimagelist.height.html - ImageType imglist/tcustomimagelist.imagetype.html - Masked imglist/tcustomimagelist.masked.html - ShareImages imglist/tcustomimagelist.shareimages.html - Width imglist/tcustomimagelist.width.html - OnChange imglist/tcustomimagelist.onchange.html - TControlPropertyStorage controls/tcontrolpropertystorage.html - GetPropertyList controls/tcontrolpropertystorage.getpropertylist.html - TDockZone controls/tdockzone.html - GetVisibleChildCount controls/tdockzone.getvisiblechildcount.html - Create controls/tdockzone.create.html - FindZone controls/tdockzone.findzone.html - FirstVisibleChild controls/tdockzone.firstvisiblechild.html - GetNextVisibleZone controls/tdockzone.getnextvisiblezone.html - NextVisible controls/tdockzone.nextvisible.html - PrevVisible controls/tdockzone.prevvisible.html - AddSibling controls/tdockzone.addsibling.html - AddAsFirstChild controls/tdockzone.addasfirstchild.html - AddAsLastChild controls/tdockzone.addaslastchild.html - ReplaceChild controls/tdockzone.replacechild.html - GetLastChild controls/tdockzone.getlastchild.html - GetIndex controls/tdockzone.getindex.html - Remove controls/tdockzone.remove.html - ChildControl controls/tdockzone.childcontrol.html - ChildCount controls/tdockzone.childcount.html - FirstChild controls/tdockzone.firstchild.html - Height controls/tdockzone.height.html - Left controls/tdockzone.left.html - LimitBegin controls/tdockzone.limitbegin.html - LimitSize controls/tdockzone.limitsize.html - Parent controls/tdockzone.parent.html - Top controls/tdockzone.top.html - Tree controls/tdockzone.tree.html - Visible controls/tdockzone.visible.html - VisibleChildCount controls/tdockzone.visiblechildcount.html - Width controls/tdockzone.width.html - NextSibling controls/tdockzone.nextsibling.html - PrevSibling controls/tdockzone.prevsibling.html - GetHeight - GetLeft - GetLimitBegin - GetLimitSize - GetTop - GetVisible - GetWidth - SetLimitBegin - SetLimitSize - SetHeight - SetLeft - SetTop - SetWidth - Orientation - TDockTree controls/tdocktree.html - HitTest controls/tdocktree.hittest.html - PaintDockFrame controls/tdocktree.paintdockframe.html - UpdateAll controls/tdocktree.updateall.html - Create controls/tdocktree.create.html - Destroy controls/tdocktree.destroy.html - AdjustDockRect controls/tdocktree.adjustdockrect.html - InsertControl controls/tdocktree.insertcontrol.html - DumpLayout controls/tdocktree.dumplayout.html - DockZoneClass controls/tdocktree.dockzoneclass.html - DockSite controls/tdocktree.docksite.html - RootZone controls/tdocktree.rootzone.html - FRootZone - SetDockZoneClass - BeginUpdate controls/tdockmanager.beginupdate.html - EndUpdate controls/tdockmanager.endupdate.html - GetControlBounds controls/tdockmanager.getcontrolbounds.html - LoadFromStream - MessageHandler - PositionDockRect - RemoveControl - SaveToStream - SetReplacingControl - ResetBounds - PaintSite controls/tdockmanager.paintsite.html - TMouse controls/tmouse.html - Capture controls/tmouse.capture.html - CursorPos controls/tmouse.cursorpos.html - IsDragging controls/tmouse.isdragging.html - WheelScrollLines controls/tmouse.wheelscrolllines.html - DragImmediate controls/tmouse.dragimmediate.html - DragThreshold controls/tmouse.dragthreshold.html - FindDragTarget controls/finddragtarget.html - FindControlAtPosition controls/findcontrolatposition.html - FindLCLWindow controls/findlclwindow.html - FindControl controls/findcontrol.html - FindOwnerControl controls/findownercontrol.html - FindLCLControl controls/findlclcontrol.html - SendAppMessage controls/sendappmessage.html - MoveWindowOrg controls/movewindoworg.html - RecreateWnd controls/recreatewnd.html - CancelDrag controls/canceldrag.html - SetCaptureControl controls/setcapturecontrol.html - GetCaptureControl controls/getcapturecontrol.html - CursorToString controls/cursortostring.html - StringToCursor controls/stringtocursor.html - GetCursorValues controls/getcursorvalues.html - CursorToIdent controls/cursortoident.html - IdentToCursor controls/identtocursor.html - GetKeyShiftState controls/getkeyshiftstate.html - AdjustBorderSpace controls/adjustborderspace.html - IsColorDefault controls/iscolordefault.html - BidiFlipAlignment controls/bidiflipalignment.html - BidiFlipAnchors controls/bidiflipanchors.html - BidiFlipRect controls/bidifliprect.html - ChangeBiDiModeAlignment controls/changebidimodealignment.html - DbgS controls/dbgs.html - operator :=(Variant): TCaption controls/op-assign-variant-tcaption.html - CompareLazAccessibleObjectsByDataObject controls/comparelazaccessibleobjectsbydataobject.html - CompareDataObjectWithLazAccessibleObject controls/comparedataobjectwithlazaccessibleobject.html - Register controls/register.html - DragManager controls/dragmanager.html - DockSplitterClass controls/docksplitterclass.html - DefaultDockManagerClass controls/defaultdockmanagerclass.html - NewStyleControls controls/newstylecontrols.html - Mouse controls/mouse.html - PropertyStorage propertystorage/index.html - TPlacementOperation propertystorage/tplacementoperation.html - TStoredType propertystorage/tstoredtype.html - TStoredValueEvent propertystorage/tstoredvalueevent.html - TStoredValue propertystorage/tstoredvalue.html - GetDisplayName propertystorage/tstoredvalue.getdisplayname.html - Create propertystorage/tstoredvalue.create.html - Assign propertystorage/tstoredvalue.assign.html - Clear propertystorage/tstoredvalue.clear.html - Save propertystorage/tstoredvalue.save.html - Restore propertystorage/tstoredvalue.restore.html - StoredValues propertystorage/tstoredvalue.storedvalues.html - Name propertystorage/tstoredvalue.name.html - Value propertystorage/tstoredvalue.value.html - KeyString propertystorage/tstoredvalue.keystring.html - OnSave propertystorage/tstoredvalue.onsave.html - OnRestore propertystorage/tstoredvalue.onrestore.html - SetDisplayName - TStoredValues propertystorage/tstoredvalues.html - Create propertystorage/tstoredvalues.create.html - IndexOf propertystorage/tstoredvalues.indexof.html - SaveValues propertystorage/tstoredvalues.savevalues.html - RestoreValues propertystorage/tstoredvalues.restorevalues.html - Storage propertystorage/tstoredvalues.storage.html - Items propertystorage/tstoredvalues.items.html - Values propertystorage/tstoredvalues.values.html - StoredValue propertystorage/tstoredvalues.storedvalue.html - TPropertyStorageLink propertystorage/tpropertystoragelink.html - SaveProperties propertystorage/tpropertystoragelink.saveproperties.html - LoadProperties propertystorage/tpropertystoragelink.loadproperties.html - Destroy propertystorage/tpropertystoragelink.destroy.html - Storage propertystorage/tpropertystoragelink.storage.html - RootSection propertystorage/tpropertystoragelink.rootsection.html - OnSave propertystorage/tpropertystoragelink.onsave.html - OnLoad propertystorage/tpropertystoragelink.onload.html - TCustomPropertyStorage propertystorage/tcustompropertystorage.html - RootSection propertystorage/tcustompropertystorage.rootsection.html - SaveProperties propertystorage/tcustompropertystorage.saveproperties.html - RestoreProperties propertystorage/tcustompropertystorage.restoreproperties.html - GetPropertyList propertystorage/tcustompropertystorage.getpropertylist.html - FinishPropertyList propertystorage/tcustompropertystorage.finishpropertylist.html - DoReadInteger propertystorage/tcustompropertystorage.doreadinteger.html - DoReadString propertystorage/tcustompropertystorage.doreadstring.html - DoWriteString propertystorage/tcustompropertystorage.dowritestring.html - DoWriteInteger propertystorage/tcustompropertystorage.dowriteinteger.html - DoEraseSections propertystorage/tcustompropertystorage.doerasesections.html - Create propertystorage/tcustompropertystorage.create.html - Destroy propertystorage/tcustompropertystorage.destroy.html - Save propertystorage/tcustompropertystorage.save.html - Restore propertystorage/tcustompropertystorage.restore.html - StorageNeeded propertystorage/tcustompropertystorage.storageneeded.html - FreeStorage propertystorage/tcustompropertystorage.freestorage.html - ReadBoolean propertystorage/tcustompropertystorage.readboolean.html - ReadString propertystorage/tcustompropertystorage.readstring.html - ReadInteger propertystorage/tcustompropertystorage.readinteger.html - ReadRect propertystorage/tcustompropertystorage.readrect.html - ReadStrings propertystorage/tcustompropertystorage.readstrings.html - WriteString propertystorage/tcustompropertystorage.writestring.html - WriteInteger propertystorage/tcustompropertystorage.writeinteger.html - WriteBoolean propertystorage/tcustompropertystorage.writeboolean.html - WriteRect propertystorage/tcustompropertystorage.writerect.html - WriteStrings propertystorage/tcustompropertystorage.writestrings.html - EraseSections propertystorage/tcustompropertystorage.erasesections.html - StoredValue propertystorage/tcustompropertystorage.storedvalue.html - Root propertystorage/tcustompropertystorage.root.html - Active propertystorage/tcustompropertystorage.active.html - StoredValues propertystorage/tcustompropertystorage.storedvalues.html - OnSavingProperties propertystorage/tcustompropertystorage.onsavingproperties.html - OnSaveProperties propertystorage/tcustompropertystorage.onsaveproperties.html - OnRestoringProperties propertystorage/tcustompropertystorage.onrestoringproperties.html - OnRestoreProperties propertystorage/tcustompropertystorage.onrestoreproperties.html - GetRoot - Dialogs dialogs/index.html - Buttons buttons/index.html - BitBtnModalResults buttons/bitbtnmodalresults.html - BitBtnImages buttons/bitbtnimages.html - BitBtnResNames buttons/bitbtnresnames.html - TButtonLayout buttons/tbuttonlayout.html - TButtonState buttons/tbuttonstate.html - TNumGlyphs buttons/tnumglyphs.html - TGlyphTransparencyMode buttons/tglyphtransparencymode.html - TBitBtnKind buttons/tbitbtnkind.html - TBitBtnKinds buttons/tbitbtnkinds.html - TGetDefaultBitBtnGlyph buttons/tgetdefaultbitbtnglyph.html - TButtonGlyph buttons/tbuttonglyph.html - QueryInterface buttons/tbuttonglyph.queryinterface.html - _AddRef buttons/tbuttonglyph._addref.html - _Release buttons/tbuttonglyph._release.html - CacheSetImageList buttons/tbuttonglyph.cachesetimagelist.html - CacheSetImageIndex buttons/tbuttonglyph.cachesetimageindex.html - GlyphChanged buttons/tbuttonglyph.glyphchanged.html - SetTransparentMode buttons/tbuttonglyph.settransparentmode.html - TransparentMode buttons/tbuttonglyph.transparentmode.html - Create buttons/tbuttonglyph.create.html - Destroy buttons/tbuttonglyph.destroy.html - GetImageIndexAndEffect buttons/tbuttonglyph.getimageindexandeffect.html - Draw buttons/tbuttonglyph.draw.html - Refresh buttons/tbuttonglyph.refresh.html - Glyph buttons/tbuttonglyph.glyph.html - IsDesigning buttons/tbuttonglyph.isdesigning.html - NumGlyphs buttons/tbuttonglyph.numglyphs.html - Images buttons/tbuttonglyph.images.html - Width buttons/tbuttonglyph.width.html - Height buttons/tbuttonglyph.height.html - ShowMode buttons/tbuttonglyph.showmode.html - OnChange buttons/tbuttonglyph.onchange.html - TCustomBitBtn buttons/tcustombitbtn.html - FButtonGlyph buttons/tcustombitbtn.fbuttonglyph.html - ActionChange buttons/tcustombitbtn.actionchange.html - GlyphChanged buttons/tcustombitbtn.glyphchanged.html - IsCaptionStored buttons/tcustombitbtn.iscaptionstored.html - Loaded - CMAppShowBtnGlyphChanged buttons/tcustombitbtn.cmappshowbtnglyphchanged.html - Create buttons/tcustombitbtn.create.html - Destroy buttons/tcustombitbtn.destroy.html - LoadGlyphFromResourceName buttons/tcustombitbtn.loadglyphfromresourcename.html - LoadGlyphFromLazarusResource buttons/tcustombitbtn.loadglyphfromlazarusresource.html - LoadGlyphFromStock buttons/tcustombitbtn.loadglyphfromstock.html - CanShowGlyph buttons/tcustombitbtn.canshowglyph.html - Caption buttons/tcustombitbtn.caption.html - DefaultCaption buttons/tcustombitbtn.defaultcaption.html - Glyph buttons/tcustombitbtn.glyph.html - NumGlyphs buttons/tcustombitbtn.numglyphs.html - Kind buttons/tcustombitbtn.kind.html - Layout buttons/tcustombitbtn.layout.html - Margin buttons/tcustombitbtn.margin.html - Spacing buttons/tcustombitbtn.spacing.html - GlyphShowMode buttons/tcustombitbtn.glyphshowmode.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - InitializeWnd controls/twincontrol.initializewnd.html - TextChanged controls/tcontrol.textchanged.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - Click controls/tcontrol.click.html - TBitBtn buttons/tbitbtn.html - BidiMode buttons/tbitbtn.bidimode.html - DefaultCaption buttons/tbitbtn.defaultcaption.html - OnContextPopup buttons/tbitbtn.oncontextpopup.html - OnDragDrop buttons/tbitbtn.ondragdrop.html - OnDragOver buttons/tbitbtn.ondragover.html - OnEndDrag buttons/tbitbtn.onenddrag.html - OnMouseEnter buttons/tbitbtn.onmouseenter.html - OnMouseLeave buttons/tbitbtn.onmouseleave.html - OnMouseWheel buttons/tbitbtn.onmousewheel.html - OnMouseWheelDown buttons/tbitbtn.onmousewheeldown.html - OnMouseWheelUp buttons/tbitbtn.onmousewheelup.html - OnStartDrag buttons/tbitbtn.onstartdrag.html - ParentBidiMode buttons/tbitbtn.parentbidimode.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Cancel stdctrls/tcustombutton.cancel.html - Caption controls/tcontrol.caption.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - Default stdctrls/tcustombutton.default.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Glyph buttons/tcustombitbtn.glyph.html - GlyphShowMode buttons/tcustombitbtn.glyphshowmode.html - Kind buttons/tcustombitbtn.kind.html - Layout buttons/tcustombitbtn.layout.html - Margin buttons/tcustombitbtn.margin.html - ModalResult stdctrls/tcustombutton.modalresult.html - NumGlyphs buttons/tcustombitbtn.numglyphs.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - Spacing buttons/tcustombitbtn.spacing.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TSpeedButtonActionLink buttons/tspeedbuttonactionlink.html - SetGroupIndex buttons/tspeedbuttonactionlink.setgroupindex.html - SetChecked buttons/tspeedbuttonactionlink.setchecked.html - AssignClient - IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html - IsGroupIndexLinked actnlist/tactionlink.isgroupindexlinked.html - TCustomSpeedButton buttons/tcustomspeedbutton.html - FState buttons/tcustomspeedbutton.fstate.html - GetNumGlyphs buttons/tcustomspeedbutton.getnumglyphs.html - GlyphChanged buttons/tcustomspeedbutton.glyphchanged.html - CalculatePreferredSize buttons/tcustomspeedbutton.calculatepreferredsize.html - MeasureDraw buttons/tcustomspeedbutton.measuredraw.html - PaintBackground buttons/tcustomspeedbutton.paintbackground.html - SetDown buttons/tcustomspeedbutton.setdown.html - SetGroupIndex buttons/tcustomspeedbutton.setgroupindex.html - SetFlat buttons/tcustomspeedbutton.setflat.html - SetMargin buttons/tcustomspeedbutton.setmargin.html - SetNumGlyphs buttons/tcustomspeedbutton.setnumglyphs.html - SetSpacing buttons/tcustomspeedbutton.setspacing.html - UpdateState buttons/tcustomspeedbutton.updatestate.html - GetDrawDetails buttons/tcustomspeedbutton.getdrawdetails.html - MouseInControl buttons/tcustomspeedbutton.mouseincontrol.html - GetGlyphSize buttons/tcustomspeedbutton.getglyphsize.html - GetTextSize buttons/tcustomspeedbutton.gettextsize.html - DrawGlyph buttons/tcustomspeedbutton.drawglyph.html - Create buttons/tcustomspeedbutton.create.html - Destroy buttons/tcustomspeedbutton.destroy.html - FindDownButton buttons/tcustomspeedbutton.finddownbutton.html - LoadGlyphFromResourceName buttons/tcustomspeedbutton.loadglyphfromresourcename.html - LoadGlyphFromLazarusResource buttons/tcustomspeedbutton.loadglyphfromlazarusresource.html - AllowAllUp buttons/tcustomspeedbutton.allowallup.html - Color buttons/tcustomspeedbutton.color.html - Down buttons/tcustomspeedbutton.down.html - Flat buttons/tcustomspeedbutton.flat.html - Glyph buttons/tcustomspeedbutton.glyph.html - GroupIndex buttons/tcustomspeedbutton.groupindex.html - Layout buttons/tcustomspeedbutton.layout.html - Margin buttons/tcustomspeedbutton.margin.html - NumGlyphs buttons/tcustomspeedbutton.numglyphs.html - ShowAccelChar buttons/tcustomspeedbutton.showaccelchar.html - ShowCaption buttons/tcustomspeedbutton.showcaption.html - Spacing buttons/tcustomspeedbutton.spacing.html - Transparent buttons/tcustomspeedbutton.transparent.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DialogChar controls/tcontrol.dialogchar.html - MouseEnter controls/tcontrol.mouseenter.html - MouseLeave controls/tcontrol.mouseleave.html - MouseDown controls/tcontrol.mousedown.html - MouseMove controls/tcontrol.mousemove.html - MouseUp controls/tcontrol.mouseup.html - Paint controls/tgraphiccontrol.paint.html - RealSetText controls/tcontrol.realsettext.html - ActionChange controls/tcontrol.actionchange.html - GetActionLinkClass controls/tcontrol.getactionlinkclass.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - Loaded - Click controls/tcontrol.click.html - TSpeedButton buttons/tspeedbutton.html - AutoSize buttons/tspeedbutton.autosize.html - BidiMode buttons/tspeedbutton.bidimode.html - OnMouseMove buttons/tspeedbutton.onmousemove.html - OnMouseWheel buttons/tspeedbutton.onmousewheel.html - OnMouseWheelDown buttons/tspeedbutton.onmousewheeldown.html - OnMouseWheelUp buttons/tspeedbutton.onmousewheelup.html - ParentBidiMode buttons/tspeedbutton.parentbidimode.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - AllowAllUp buttons/tcustomspeedbutton.allowallup.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - Caption controls/tcontrol.caption.html - Color controls/tcontrol.color.html - Down buttons/tcustomspeedbutton.down.html - Enabled controls/tcontrol.enabled.html - Flat buttons/tcustomspeedbutton.flat.html - Font controls/tcontrol.font.html - Glyph buttons/tcustomspeedbutton.glyph.html - GroupIndex buttons/tcustomspeedbutton.groupindex.html - Layout buttons/tcustomspeedbutton.layout.html - Margin buttons/tcustomspeedbutton.margin.html - NumGlyphs buttons/tcustomspeedbutton.numglyphs.html - Spacing buttons/tcustomspeedbutton.spacing.html - Transparent buttons/tcustomspeedbutton.transparent.html - Visible controls/tcontrol.visible.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseUp controls/tcontrol.onmouseup.html - OnPaint controls/tgraphiccontrol.onpaint.html - OnResize controls/tcontrol.onresize.html - OnChangeBounds controls/tcontrol.onchangebounds.html - ShowCaption buttons/tcustomspeedbutton.showcaption.html - ShowHint controls/tcontrol.showhint.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - GetLCLDefaultBtnGlyph buttons/getlcldefaultbtnglyph.html - LoadGlyphFromResourceName buttons/loadglyphfromresourcename.html - LoadGlyphFromLazarusResource buttons/loadglyphfromlazarusresource.html - LoadGlyphFromStock buttons/loadglyphfromstock.html - GetButtonCaption buttons/getbuttoncaption.html - GetDefaultButtonIcon buttons/getdefaultbuttonicon.html - GetButtonIcon buttons/getbuttonicon.html - BidiAdjustButtonLayout buttons/bidiadjustbuttonlayout.html - dbgs buttons/dbgs.html - Register buttons/register.html - GetDefaultBitBtnGlyph buttons/getdefaultbitbtnglyph.html - StdCtrls stdctrls/index.html - HowToUseStdCtrls stdctrls/howtousestdctrls.html - DefaultComboBoxAutoCompleteText stdctrls/defaultcomboboxautocompletetext.html - TEditCharCase stdctrls/teditcharcase.html - TEchoMode stdctrls/techomode.html - TScrollStyle stdctrls/tscrollstyle.html - TScrollCode stdctrls/tscrollcode.html - TScrollEvent stdctrls/tscrollevent.html - TComboBoxAutoCompleteTextOption stdctrls/tcomboboxautocompletetextoption.html - TComboBoxAutoCompleteText stdctrls/tcomboboxautocompletetext.html - TComboBoxStyle stdctrls/tcomboboxstyle.html - TOwnerDrawState stdctrls/townerdrawstate.html - TDrawItemEvent stdctrls/tdrawitemevent.html - TMeasureItemEvent stdctrls/tmeasureitemevent.html - TListBoxStyle stdctrls/tlistboxstyle.html - TSelectionChangeEvent stdctrls/tselectionchangeevent.html - TStaticBorderStyle stdctrls/tstaticborderstyle.html - TButtonActionLinkClass stdctrls/tbuttonactionlinkclass.html - TCheckBoxState stdctrls/tcheckboxstate.html - TCustomScrollBar stdctrls/tcustomscrollbar.html - GetControlClassDefaultSize stdctrls/tcustomscrollbar.getcontrolclassdefaultsize.html - CreateParams stdctrls/tcustomscrollbar.createparams.html - CreateWnd stdctrls/tcustomscrollbar.createwnd.html - CalculatePreferredSize stdctrls/tcustomscrollbar.calculatepreferredsize.html - Create stdctrls/tcustomscrollbar.create.html - SetParams stdctrls/tcustomscrollbar.setparams.html - Kind stdctrls/tcustomscrollbar.kind.html - LargeChange stdctrls/tcustomscrollbar.largechange.html - Max stdctrls/tcustomscrollbar.max.html - Min stdctrls/tcustomscrollbar.min.html - PageSize stdctrls/tcustomscrollbar.pagesize.html - Position stdctrls/tcustomscrollbar.position.html - SmallChange stdctrls/tcustomscrollbar.smallchange.html - OnChange stdctrls/tcustomscrollbar.onchange.html - OnScroll stdctrls/tcustomscrollbar.onscroll.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Change - Scroll - TabStop controls/twincontrol.tabstop.html - TScrollBar stdctrls/tscrollbar.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Kind stdctrls/tcustomscrollbar.kind.html - LargeChange stdctrls/tcustomscrollbar.largechange.html - Max stdctrls/tcustomscrollbar.max.html - Min stdctrls/tcustomscrollbar.min.html - PageSize stdctrls/tcustomscrollbar.pagesize.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - Position stdctrls/tcustomscrollbar.position.html - ShowHint controls/tcontrol.showhint.html - SmallChange stdctrls/tcustomscrollbar.smallchange.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomscrollbar.onchange.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnScroll stdctrls/tcustomscrollbar.onscroll.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TCustomGroupBox stdctrls/tcustomgroupbox.html - GetControlClassDefaultSize stdctrls/tcustomgroupbox.getcontrolclassdefaultsize.html - CreateParams stdctrls/tcustomgroupbox.createparams.html - Create stdctrls/tcustomgroupbox.create.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TGroupBox stdctrls/tgroupbox.html - OnMouseWheel stdctrls/tgroupbox.onmousewheel.html - OnMouseWheelDown stdctrls/tgroupbox.onmousewheeldown.html - OnMouseWheelUp stdctrls/tgroupbox.onmousewheelup.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - ChildSizing controls/twincontrol.childsizing.html - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DockSite controls/twincontrol.docksite.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUnDock controls/twincontrol.onundock.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TCustomComboBox stdctrls/tcustomcombobox.html - CreateParams stdctrls/tcustomcombobox.createparams.html - InitializeWnd stdctrls/tcustomcombobox.initializewnd.html - DestroyWnd stdctrls/tcustomcombobox.destroywnd.html - DoExit stdctrls/tcustomcombobox.doexit.html - DrawItem stdctrls/tcustomcombobox.drawitem.html - KeyUpAfterInterface controls/twincontrol.keyupafterinterface.html - MeasureItem stdctrls/tcustomcombobox.measureitem.html - GetControlClassDefaultSize stdctrls/tcustomcombobox.getcontrolclassdefaultsize.html - LMChanged stdctrls/tcustomcombobox.lmchanged.html - Change stdctrls/tcustomcombobox.change.html - Select stdctrls/tcustomcombobox.select.html - CloseUp stdctrls/tcustomcombobox.closeup.html - AdjustDropDown stdctrls/tcustomcombobox.adjustdropdown.html - GetItemCount stdctrls/tcustomcombobox.getitemcount.html - RealSetText stdctrls/tcustomcombobox.realsettext.html - KeyDown stdctrls/tcustomcombobox.keydown.html - MouseUp stdctrls/tcustomcombobox.mouseup.html - SelectItem stdctrls/tcustomcombobox.selectitem.html - ItemHeight stdctrls/tcustomcombobox.itemheight.html - ItemWidth stdctrls/tcustomcombobox.itemwidth.html - MaxLength stdctrls/tcustomcombobox.maxlength.html - OnChange stdctrls/tcustomcombobox.onchange.html - OnCloseUp stdctrls/tcustomcombobox.oncloseup.html - OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html - OnDropDown stdctrls/tcustomcombobox.ondropdown.html - OnGetItems stdctrls/tcustomcombobox.ongetitems.html - OnMeasureItem stdctrls/tcustomcombobox.onmeasureitem.html - OnSelect stdctrls/tcustomcombobox.onselect.html - Sorted stdctrls/tcustomcombobox.sorted.html - Create stdctrls/tcustomcombobox.create.html - Destroy stdctrls/tcustomcombobox.destroy.html - IntfGetItems stdctrls/tcustomcombobox.intfgetitems.html - AddItem stdctrls/tcustomcombobox.additem.html - AddHistoryItem stdctrls/tcustomcombobox.addhistoryitem.html - Clear stdctrls/tcustomcombobox.clear.html - ClearSelection stdctrls/tcustomcombobox.clearselection.html - CharCase stdctrls/tcustomcombobox.charcase.html - DroppedDown stdctrls/tcustomcombobox.droppeddown.html - SelectAll stdctrls/tcustomcombobox.selectall.html - AutoComplete stdctrls/tcustomcombobox.autocomplete.html - AutoCompleteText stdctrls/tcustomcombobox.autocompletetext.html - AutoDropDown stdctrls/tcustomcombobox.autodropdown.html - AutoSelect stdctrls/tcustomcombobox.autoselect.html - AutoSelected stdctrls/tcustomcombobox.autoselected.html - AutoSize stdctrls/tcustomcombobox.autosize.html - ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html - Canvas stdctrls/tcustomcombobox.canvas.html - DropDownCount stdctrls/tcustomcombobox.dropdowncount.html - Items stdctrls/tcustomcombobox.items.html - ItemIndex stdctrls/tcustomcombobox.itemindex.html - ReadOnly stdctrls/tcustomcombobox.readonly.html - SelLength stdctrls/tcustomcombobox.sellength.html - SelStart stdctrls/tcustomcombobox.selstart.html - SelText stdctrls/tcustomcombobox.seltext.html - Style stdctrls/tcustomcombobox.style.html - Text stdctrls/tcustomcombobox.text.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DoEnter - DropDown - GetItems - SetItems - GetItemHeight - GetSelLength - GetSelStart - GetSelText - GetItemIndex - GetMaxLength - IsReadOnlyStored - SetDropDownCount - SetDroppedDown - SetItemHeight - SetItemIndex - SetMaxLength - SetSelLength - SetSelStart - SetSelText - SetSorted - SetStyle - KeyUp controls/twincontrol.keyup.html - UTF8KeyPress - ParentColor controls/tcontrol.parentcolor.html - TabStop controls/twincontrol.tabstop.html - TComboBox stdctrls/tcombobox.html - BorderStyle stdctrls/tcombobox.borderstyle.html - DragKind stdctrls/tcombobox.dragkind.html - OnMouseEnter stdctrls/tcombobox.onmouseenter.html - OnMouseLeave stdctrls/tcombobox.onmouseleave.html - OnMouseWheel stdctrls/tcombobox.onmousewheel.html - OnMouseWheelDown stdctrls/tcombobox.onmousewheeldown.html - OnMouseWheelUp stdctrls/tcombobox.onmousewheelup.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html - AutoComplete stdctrls/tcustomcombobox.autocomplete.html - AutoCompleteText stdctrls/tcustomcombobox.autocompletetext.html - AutoDropDown stdctrls/tcustomcombobox.autodropdown.html - AutoSelect stdctrls/tcustomcombobox.autoselect.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - CharCase stdctrls/tcustomcombobox.charcase.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - DropDownCount stdctrls/tcustomcombobox.dropdowncount.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - ItemHeight stdctrls/tcustomcombobox.itemheight.html - ItemIndex stdctrls/tcustomcombobox.itemindex.html - Items stdctrls/tcustomcombobox.items.html - ItemWidth stdctrls/tcustomcombobox.itemwidth.html - MaxLength stdctrls/tcustomcombobox.maxlength.html - OnChange stdctrls/tcustomcombobox.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnCloseUp stdctrls/tcustomcombobox.oncloseup.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html - OnEndDrag controls/tcontrol.onenddrag.html - OnDropDown stdctrls/tcustomcombobox.ondropdown.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetItems - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMeasureItem stdctrls/tcustomcombobox.onmeasureitem.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnSelect stdctrls/tcustomcombobox.onselect.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomcombobox.readonly.html - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomcombobox.sorted.html - Style stdctrls/tcustomcombobox.style.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Text stdctrls/tcustomcombobox.text.html - Visible controls/tcontrol.visible.html - TCustomListBox stdctrls/tcustomlistbox.html - AssignItemDataToCache stdctrls/tcustomlistbox.assignitemdatatocache.html - AssignCacheToItemData stdctrls/tcustomlistbox.assigncachetoitemdata.html - BeforeDragStart stdctrls/tcustomlistbox.beforedragstart.html - CalculateStandardItemHeight stdctrls/tcustomlistbox.calculatestandarditemheight.html - CreateParams stdctrls/tcustomlistbox.createparams.html - InitializeWnd stdctrls/tcustomlistbox.initializewnd.html - FinalizeWnd stdctrls/tcustomlistbox.finalizewnd.html - GetControlClassDefaultSize stdctrls/tcustomlistbox.getcontrolclassdefaultsize.html - CheckIndex stdctrls/tcustomlistbox.checkindex.html - GetCachedDataSize stdctrls/tcustomlistbox.getcacheddatasize.html - GetCachedData stdctrls/tcustomlistbox.getcacheddata.html - DrawItem stdctrls/tcustomlistbox.drawitem.html - SendItemIndex stdctrls/tcustomlistbox.senditemindex.html - Create stdctrls/tcustomlistbox.create.html - Destroy stdctrls/tcustomlistbox.destroy.html - AddItem stdctrls/tcustomlistbox.additem.html - Clear stdctrls/tcustomlistbox.clear.html - ClearSelection stdctrls/tcustomlistbox.clearselection.html - GetIndexAtXY stdctrls/tcustomlistbox.getindexatxy.html - GetSelectedText stdctrls/tcustomlistbox.getselectedtext.html - ItemAtPos stdctrls/tcustomlistbox.itematpos.html - ItemRect stdctrls/tcustomlistbox.itemrect.html - ItemVisible stdctrls/tcustomlistbox.itemvisible.html - ItemFullyVisible stdctrls/tcustomlistbox.itemfullyvisible.html - LockSelectionChange stdctrls/tcustomlistbox.lockselectionchange.html - MakeCurrentVisible stdctrls/tcustomlistbox.makecurrentvisible.html - MeasureItem stdctrls/tcustomlistbox.measureitem.html - SelectAll stdctrls/tcustomlistbox.selectall.html - UnlockSelectionChange stdctrls/tcustomlistbox.unlockselectionchange.html - Canvas stdctrls/tcustomlistbox.canvas.html - ClickOnSelChange stdctrls/tcustomlistbox.clickonselchange.html - Columns stdctrls/tcustomlistbox.columns.html - Count stdctrls/tcustomlistbox.count.html - ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html - IntegralHeight stdctrls/tcustomlistbox.integralheight.html - ItemHeight stdctrls/tcustomlistbox.itemheight.html - ItemIndex stdctrls/tcustomlistbox.itemindex.html - Items stdctrls/tcustomlistbox.items.html - MultiSelect stdctrls/tcustomlistbox.multiselect.html - OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html - OnMeasureItem stdctrls/tcustomlistbox.onmeasureitem.html - OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html - ScrollWidth stdctrls/tcustomlistbox.scrollwidth.html - SelCount stdctrls/tcustomlistbox.selcount.html - Selected stdctrls/tcustomlistbox.selected.html - Sorted stdctrls/tcustomlistbox.sorted.html - Style stdctrls/tcustomlistbox.style.html - TopIndex stdctrls/tcustomlistbox.topindex.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - BeginAutoDrag controls/tcontrol.beginautodrag.html - GetItemHeight - GetItemIndex - GetSelCount - GetSelected - SetExtendedSelect - SetItemIndex - SetItems - SetItemHeight - SetMultiSelect - SetSelected - SetSorted - SetStyle - DoSelectionChange - Click controls/tcontrol.click.html - GetIndexAtY - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderStyle controls/twincontrol.borderstyle.html - Constraints controls/tcontrol.constraints.html - Font controls/tcontrol.font.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnResize controls/tcontrol.onresize.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TListBox stdctrls/tlistbox.html - ItemIndex stdctrls/tcustomlistbox.itemindex.html - OnStartDrag stdctrls/tlistbox.onstartdrag.html - ParentBidiMode stdctrls/tlistbox.parentbidimode.html - ParentShowHint stdctrls/tlistbox.parentshowhint.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - ClickOnSelChange stdctrls/tcustomlistbox.clickonselchange.html - Color controls/tcontrol.color.html - Columns stdctrls/tcustomlistbox.columns.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - IntegralHeight stdctrls/tcustomlistbox.integralheight.html - Items stdctrls/tcustomlistbox.items.html - ItemHeight stdctrls/tcustomlistbox.itemheight.html - MultiSelect stdctrls/tcustomlistbox.multiselect.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html - OnEnter controls/twincontrol.onenter.html - OnEndDrag controls/tcontrol.onenddrag.html - OnExit controls/twincontrol.onexit.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMeasureItem stdctrls/tcustomlistbox.onmeasureitem.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnResize controls/tcontrol.onresize.html - OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html - OnShowHint controls/tcontrol.onshowhint.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - PopupMenu controls/tcontrol.popupmenu.html - ScrollWidth - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomlistbox.sorted.html - Style stdctrls/tcustomlistbox.style.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TopIndex stdctrls/tcustomlistbox.topindex.html - Visible controls/tcontrol.visible.html - TCustomEdit stdctrls/tcustomedit.html - CreateParams stdctrls/tcustomedit.createparams.html - InitializeWnd controls/twincontrol.initializewnd.html - Change stdctrls/tcustomedit.change.html - DoEnter stdctrls/tcustomedit.doenter.html - DoExit stdctrls/tcustomedit.doexit.html - GetNumbersOnly stdctrls/tcustomedit.getnumbersonly.html - SetNumbersOnly stdctrls/tcustomedit.setnumbersonly.html - GetControlClassDefaultSize stdctrls/tcustomedit.getcontrolclassdefaultsize.html - KeyUpAfterInterface stdctrls/tcustomedit.keyupafterinterface.html - CMWantSpecialKey stdctrls/tcustomedit.cmwantspecialkey.html - AutoSelect stdctrls/tcustomedit.autoselect.html - AutoSelected stdctrls/tcustomedit.autoselected.html - Create stdctrls/tcustomedit.create.html - Clear stdctrls/tcustomedit.clear.html - SelectAll stdctrls/tcustomedit.selectall.html - ClearSelection stdctrls/tcustomedit.clearselection.html - CopyToClipboard stdctrls/tcustomedit.copytoclipboard.html - CutToClipboard stdctrls/tcustomedit.cuttoclipboard.html - PasteFromClipboard stdctrls/tcustomedit.pastefromclipboard.html - Undo stdctrls/tcustomedit.undo.html - Alignment stdctrls/tcustomedit.alignment.html - AutoSize stdctrls/tcustomedit.autosize.html - CanUndo stdctrls/tcustomedit.canundo.html - CaretPos stdctrls/tcustomedit.caretpos.html - CharCase stdctrls/tcustomedit.charcase.html - EchoMode stdctrls/tcustomedit.echomode.html - HideSelection stdctrls/tcustomedit.hideselection.html - MaxLength stdctrls/tcustomedit.maxlength.html - Modified stdctrls/tcustomedit.modified.html - NumbersOnly stdctrls/tcustomedit.numbersonly.html - OnChange stdctrls/tcustomedit.onchange.html - PasswordChar stdctrls/tcustomedit.passwordchar.html - ReadOnly stdctrls/tcustomedit.readonly.html - SelLength stdctrls/tcustomedit.sellength.html - SelStart stdctrls/tcustomedit.selstart.html - SelText stdctrls/tcustomedit.seltext.html - Text stdctrls/tcustomedit.text.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - TextChanged controls/tcontrol.textchanged.html - GetCaretPos - GetReadOnly - GetSelLength - GetSelStart - GetSelText - SetCaretPos - SetEchoMode - SetReadOnly - SetSelLength - SetSelStart - SetSelText - ChildClassAllowed controls/twincontrol.childclassallowed.html - MouseUp controls/tcontrol.mouseup.html - RealSetText controls/tcontrol.realsettext.html - WMChar controls/twincontrol.wmchar.html - ParentColor controls/tcontrol.parentcolor.html - BorderStyle controls/twincontrol.borderstyle.html - PopupMenu controls/tcontrol.popupmenu.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TMemoScrollbar stdctrls/tmemoscrollbar.html - GetHorzScrollBar forms/tcontrolscrollbar.gethorzscrollbar.html - GetVertScrollBar forms/tcontrolscrollbar.getvertscrollbar.html - Increment forms/tcontrolscrollbar.increment.html - Page forms/tcontrolscrollbar.page.html - Smooth forms/tcontrolscrollbar.smooth.html - Position forms/tcontrolscrollbar.position.html - Range forms/tcontrolscrollbar.range.html - Size forms/tcontrolscrollbar.size.html - Visible forms/tcontrolscrollbar.visible.html - TCustomMemo stdctrls/tcustommemo.html - CreateParams stdctrls/tcustommemo.createparams.html - InitializeWnd stdctrls/tcustommemo.initializewnd.html - FinalizeWnd stdctrls/tcustommemo.finalizewnd.html - RealGetText stdctrls/tcustommemo.realgettext.html - RealSetText stdctrls/tcustommemo.realsettext.html - KeyUpAfterInterface stdctrls/tcustomedit.keyupafterinterface.html - Loaded stdctrls/tcustommemo.loaded.html - CMWantSpecialKey stdctrls/tcustommemo.cmwantspecialkey.html - WMGetDlgCode stdctrls/tcustommemo.wmgetdlgcode.html - GetControlClassDefaultSize stdctrls/tcustommemo.getcontrolclassdefaultsize.html - UTF8KeyPress stdctrls/tcustommemo.utf8keypress.html - Create stdctrls/tcustommemo.create.html - Destroy stdctrls/tcustommemo.destroy.html - Append stdctrls/tcustommemo.append.html - Lines stdctrls/tcustommemo.lines.html - HorzScrollBar stdctrls/tcustommemo.horzscrollbar.html - VertScrollBar stdctrls/tcustommemo.vertscrollbar.html - ScrollBars stdctrls/tcustommemo.scrollbars.html - WantReturns stdctrls/tcustommemo.wantreturns.html - WantTabs stdctrls/tcustommemo.wanttabs.html - WordWrap stdctrls/tcustommemo.wordwrap.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetCachedText controls/tcontrol.getcachedtext.html - GetCaretPos - SetCaretPos - SetLines - SetSelText stdctrls/tcustomedit.seltext.html - SetWantReturns - SetWantTabs - SetWordWrap - SetScrollBars - TEdit stdctrls/tedit.html - NumbersOnly stdctrls/tedit.numbersonly.html - OnMouseWheel stdctrls/tedit.onmousewheel.html - OnMouseWheelDown stdctrls/tedit.onmousewheeldown.html - OnMouseWheelUp stdctrls/tedit.onmousewheelup.html - AutoSelected stdctrls/tcustomedit.autoselected.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - Alignment stdctrls/tcustomedit.alignment.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - AutoSelect stdctrls/tcustomedit.autoselect.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - CharCase stdctrls/tcustomedit.charcase.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - EchoMode stdctrls/tcustomedit.echomode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - HideSelection stdctrls/tcustomedit.hideselection.html - MaxLength stdctrls/tcustomedit.maxlength.html - ParentBidiMode controls/tcontrol.parentbidimode.html - OnChange stdctrls/tcustomedit.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PasswordChar stdctrls/tcustomedit.passwordchar.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ShowHint controls/tcontrol.showhint.html - TabStop controls/twincontrol.tabstop.html - TabOrder controls/twincontrol.taborder.html - Text stdctrls/tcustomedit.text.html - Visible controls/tcontrol.visible.html - TMemo stdctrls/tmemo.html - Align controls/tcontrol.align.html - Alignment - Anchors controls/tcontrol.anchors.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - CharCase - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - HideSelection - Lines stdctrls/tcustommemo.lines.html - MaxLength stdctrls/tcustomedit.maxlength.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - PopupMenu controls/tcontrol.popupmenu.html - ParentShowHint controls/tcontrol.parentshowhint.html - ReadOnly stdctrls/tcustomedit.readonly.html - ScrollBars stdctrls/tcustommemo.scrollbars.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - WantReturns stdctrls/tcustommemo.wantreturns.html - WantTabs stdctrls/tcustommemo.wanttabs.html - WordWrap stdctrls/tcustommemo.wordwrap.html - TCustomStaticText stdctrls/tcustomstatictext.html - GetLabelText stdctrls/tcustomstatictext.getlabeltext.html - RealSetText stdctrls/tcustomstatictext.realsettext.html - Create stdctrls/tcustomstatictext.create.html - Alignment stdctrls/tcustomstatictext.alignment.html - BorderStyle stdctrls/tcustomstatictext.borderstyle.html - FocusControl stdctrls/tcustomstatictext.focuscontrol.html - ShowAccelChar stdctrls/tcustomstatictext.showaccelchar.html - Transparent stdctrls/tcustomstatictext.transparent.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Notification controls/tcontrol.notification.html - SetFocusControl - SetShowAccelChar - DialogChar controls/tcontrol.dialogchar.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - TStaticText stdctrls/tstatictext.html - Caption stdctrls/tstatictext.caption.html - OnMouseWheel stdctrls/tstatictext.onmousewheel.html - OnMouseWheelDown stdctrls/tstatictext.onmousewheeldown.html - OnMouseWheelUp stdctrls/tstatictext.onmousewheelup.html - ShowHint stdctrls/tstatictext.showhint.html - Align controls/tcontrol.align.html - Alignment stdctrls/tcustomstatictext.alignment.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - FocusControl stdctrls/tcustomstatictext.focuscontrol.html - Font controls/tcontrol.font.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentFont controls/tcontrol.parentfont.html - ParentColor controls/tcontrol.parentcolor.html - ShowAccelChar stdctrls/tcustomstatictext.showaccelchar.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Transparent - Visible controls/tcontrol.visible.html - TButtonControl stdctrls/tbuttoncontrol.html - GetActionLinkClass stdctrls/tbuttoncontrol.getactionlinkclass.html - DoOnChange stdctrls/tbuttoncontrol.doonchange.html - Checked stdctrls/tbuttoncontrol.checked.html - ClicksDisabled stdctrls/tbuttoncontrol.clicksdisabled.html - OnChange stdctrls/tbuttoncontrol.onchange.html - Create stdctrls/tbuttoncontrol.create.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetChecked - SetChecked - Click controls/tcontrol.click.html - TButtonActionLink stdctrls/tbuttonactionlink.html - FClientButton stdctrls/tbuttonactionlink.fclientbutton.html - AssignClient stdctrls/tbuttonactionlink.assignclient.html - SetChecked stdctrls/tbuttonactionlink.setchecked.html - IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html - TCustomButton stdctrls/tcustombutton.html - CreateWnd stdctrls/tcustombutton.createwnd.html - CreateParams stdctrls/tcustombutton.createparams.html - GetControlClassDefaultSize stdctrls/tcustombutton.getcontrolclassdefaultsize.html - WSSetDefault stdctrls/tcustombutton.wssetdefault.html - WSSetText stdctrls/tcustombutton.wssettext.html - Loaded stdctrls/tcustombutton.loaded.html - UpdateDefaultCancel stdctrls/tcustombutton.updatedefaultcancel.html - Create stdctrls/tcustombutton.create.html - Click stdctrls/tcustombutton.click.html - ExecuteDefaultAction stdctrls/tcustombutton.executedefaultaction.html - ExecuteCancelAction stdctrls/tcustombutton.executecancelaction.html - Active stdctrls/tcustombutton.active.html - Default stdctrls/tcustombutton.default.html - ModalResult stdctrls/tcustombutton.modalresult.html - ShortCut stdctrls/tcustombutton.shortcut.html - ShortCutKey2 stdctrls/tcustombutton.shortcutkey2.html - Cancel stdctrls/tcustombutton.cancel.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - ControlKeyDown controls/twincontrol.controlkeydown.html - ControlKeyUp controls/twincontrol.controlkeyup.html - DialogChar controls/tcontrol.dialogchar.html - ChildClassAllowed controls/twincontrol.childclassallowed.html - ParentColor controls/tcontrol.parentcolor.html - TextChanged controls/tcontrol.textchanged.html - ActiveDefaultControlChanged controls/tcontrol.activedefaultcontrolchanged.html - UpdateRolesForForm controls/tcontrol.updaterolesforform.html - UseRightToLeftAlignment controls/tcontrol.userighttoleftalignment.html - Color controls/tcontrol.color.html - TabStop controls/twincontrol.tabstop.html - TButton stdctrls/tbutton.html - DragKind stdctrls/tbutton.dragkind.html - OnMouseWheel stdctrls/tbutton.onmousewheel.html - OnMouseWheelDown stdctrls/tbutton.onmousewheeldown.html - OnMouseWheelUp stdctrls/tbutton.onmousewheelup.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - Cancel stdctrls/tcustombutton.cancel.html - Caption controls/tcontrol.caption.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - Default stdctrls/tcustombutton.default.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ModalResult stdctrls/tcustombutton.modalresult.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TCustomCheckBox stdctrls/tcustomcheckbox.html - DoClickOnChange stdctrls/tcustomcheckbox.doclickonchange.html - RetrieveState stdctrls/tcustomcheckbox.retrievestate.html - InitializeWnd stdctrls/tcustomcheckbox.initializewnd.html - Toggle stdctrls/tcustomcheckbox.toggle.html - ApplyChanges stdctrls/tcustomcheckbox.applychanges.html - GetControlClassDefaultSize stdctrls/tcustomcheckbox.getcontrolclassdefaultsize.html - Loaded stdctrls/tcustomcheckbox.loaded.html - CreateParams stdctrls/tcustomcheckbox.createparams.html - Create stdctrls/tcustomcheckbox.create.html - Alignment stdctrls/tcustomcheckbox.alignment.html - AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html - State stdctrls/tcustomcheckbox.state.html - ShortCut stdctrls/tcustomcheckbox.shortcut.html - ShortCutKey2 stdctrls/tcustomcheckbox.shortcutkey2.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Click controls/tcontrol.click.html - DialogChar controls/tcontrol.dialogchar.html - GetChecked stdctrls/tbuttoncontrol.checked.html - SetChecked stdctrls/tbuttoncontrol.checked.html - RealSetText controls/tcontrol.realsettext.html - WSSetText controls/twincontrol.wssettext.html - TextChanged controls/tcontrol.textchanged.html - OnChange stdctrls/tbuttoncontrol.onchange.html - TCheckBox stdctrls/tcheckbox.html - Create stdctrls/tcheckbox.create.html - Alignment stdctrls/tcheckbox.alignment.html - OnMouseWheel stdctrls/tcheckbox.onmousewheel.html - OnMouseWheelDown stdctrls/tcheckbox.onmousewheeldown.html - OnMouseWheelUp stdctrls/tcheckbox.onmousewheelup.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - Checked stdctrls/tbuttoncontrol.checked.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Hint controls/tcontrol.hint.html - OnChange stdctrls/tbuttoncontrol.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - ParentBidiMode controls/tcontrol.parentbidimode.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - State stdctrls/tcustomcheckbox.state.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TToggleBox stdctrls/ttogglebox.html - CreateParams stdctrls/ttogglebox.createparams.html - ParentColor stdctrls/ttogglebox.parentcolor.html - Create stdctrls/ttogglebox.create.html - BidiMode stdctrls/ttogglebox.bidimode.html - Color stdctrls/ttogglebox.color.html - Constraints stdctrls/ttogglebox.constraints.html - Font stdctrls/ttogglebox.font.html - OnMouseEnter stdctrls/ttogglebox.onmouseenter.html - OnMouseLeave stdctrls/ttogglebox.onmouseleave.html - OnMouseWheel stdctrls/ttogglebox.onmousewheel.html - OnMouseWheelDown stdctrls/ttogglebox.onmousewheeldown.html - OnMouseWheelUp stdctrls/ttogglebox.onmousewheelup.html - ParentBidiMode stdctrls/ttogglebox.parentbidimode.html - ParentFont stdctrls/ttogglebox.parentfont.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - Checked stdctrls/tbuttoncontrol.checked.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Hint controls/tcontrol.hint.html - OnChange stdctrls/tbuttoncontrol.onchange.html - OnClick controls/tcontrol.onclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - State stdctrls/tcustomcheckbox.state.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TRadioButton stdctrls/tradiobutton.html - DoClickOnChange stdctrls/tradiobutton.doclickonchange.html - CreateParams stdctrls/tradiobutton.createparams.html - Create stdctrls/tradiobutton.create.html - OnKeyDown stdctrls/tradiobutton.onkeydown.html - OnKeyPress stdctrls/tradiobutton.onkeypress.html - OnKeyUp stdctrls/tradiobutton.onkeyup.html - OnMouseWheel stdctrls/tradiobutton.onmousewheel.html - OnMouseWheelDown stdctrls/tradiobutton.onmousewheeldown.html - OnMouseWheelUp stdctrls/tradiobutton.onmousewheelup.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - ApplyChanges stdctrls/tcustomcheckbox.applychanges.html - DialogChar controls/tcontrol.dialogchar.html - RealSetText controls/tcontrol.realsettext.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - Checked stdctrls/tbuttoncontrol.checked.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Hint controls/tcontrol.hint.html - OnChange stdctrls/tbuttoncontrol.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TCustomLabel stdctrls/tcustomlabel.html - CanTab stdctrls/tcustomlabel.cantab.html - DoMeasureTextPosition stdctrls/tcustomlabel.domeasuretextposition.html - HasMultiLine stdctrls/tcustomlabel.hasmultiline.html - CalculateSize stdctrls/tcustomlabel.calculatesize.html - DoSetBounds stdctrls/tcustomlabel.dosetbounds.html - GetControlClassDefaultSize stdctrls/tcustomlabel.getcontrolclassdefaultsize.html - WMActivate stdctrls/tcustomlabel.wmactivate.html - GetLabelText stdctrls/tcustomlabel.getlabeltext.html - Loaded stdctrls/tcustomlabel.loaded.html - UpdateSize stdctrls/tcustomlabel.updatesize.html - Alignment stdctrls/tcustomlabel.alignment.html - FocusControl stdctrls/tcustomlabel.focuscontrol.html - Layout stdctrls/tcustomlabel.layout.html - ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html - Transparent stdctrls/tcustomlabel.transparent.html - WordWrap stdctrls/tcustomlabel.wordwrap.html - OptimalFill stdctrls/tcustomlabel.optimalfill.html - Create stdctrls/tcustomlabel.create.html - CalcFittingFontHeight stdctrls/tcustomlabel.calcfittingfontheight.html - AdjustFontForOptimalFill stdctrls/tcustomlabel.adjustfontforoptimalfill.html - SetBounds stdctrls/tcustomlabel.setbounds.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - DoAutoSize controls/tcontrol.doautosize.html - DialogChar controls/tcontrol.dialogchar.html - TextChanged controls/tcontrol.textchanged.html - FontChanged controls/tcontrol.fontchanged.html - Notification controls/tcontrol.notification.html - GetTransparent - SetColor - SetFocusControl - SetLayout - SetShowAccelChar - SetTransparent - SetWordWrap - ColorIsStored - Paint controls/tgraphiccontrol.paint.html - AutoSize controls/tcontrol.autosize.html - Color controls/tcontrol.color.html - TLabel stdctrls/tlabel.html - OnMouseWheel stdctrls/tlabel.onmousewheel.html - OnMouseWheelDown stdctrls/tlabel.onmousewheeldown.html - OnMouseWheelUp stdctrls/tlabel.onmousewheelup.html - Align controls/tcontrol.align.html - Alignment stdctrls/tcustomlabel.alignment.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - FocusControl stdctrls/tcustomlabel.focuscontrol.html - Font controls/tcontrol.font.html - Layout stdctrls/tcustomlabel.layout.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html - ShowHint controls/tcontrol.showhint.html - Transparent stdctrls/tcustomlabel.transparent.html - Visible controls/tcontrol.visible.html - WordWrap stdctrls/tcustomlabel.wordwrap.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OptimalFill stdctrls/tcustomlabel.optimalfill.html - Register stdctrls/register.html - ExtendedStrings extendedstrings/index.html - TExtStringsOption extendedstrings/textstringsoption.html - TExtStringsOptions extendedstrings/textstringsoptions.html - TExtendedStringList extendedstrings/textendedstringlist.html - ResizeRecord extendedstrings/textendedstringlist.resizerecord.html - GetObject extendedstrings/textendedstringlist.getobject.html - PutObject extendedstrings/textendedstringlist.putobject.html - Create extendedstrings/textendedstringlist.create.html - Destroy extendedstrings/textendedstringlist.destroy.html - Clear extendedstrings/textendedstringlist.clear.html - Delete extendedstrings/textendedstringlist.delete.html - CreateRecord extendedstrings/textendedstringlist.createrecord.html - FreeRecord extendedstrings/textendedstringlist.freerecord.html - FreeAllRecords extendedstrings/textendedstringlist.freeallrecords.html - RecordAllocated extendedstrings/textendedstringlist.recordallocated.html - Records extendedstrings/textendedstringlist.records.html - RecordSize extendedstrings/textendedstringlist.recordsize.html - Options extendedstrings/textendedstringlist.options.html - TextStrings textstrings/index.html - TTextLineRange textstrings/ttextlinerange.html - PTextLineRange textstrings/ptextlinerange.html - TTextStrings textstrings/ttextstrings.html - FArraysValid textstrings/ttextstrings.farraysvalid.html - FLineCount textstrings/ttextstrings.flinecount.html - FLineCapacity textstrings/ttextstrings.flinecapacity.html - FLineRanges textstrings/ttextstrings.flineranges.html - FText textstrings/ttextstrings.ftext.html - FUpdateCount textstrings/ttextstrings.fupdatecount.html - FChangedWhileUpdate textstrings/ttextstrings.fchangedwhileupdate.html - BuildArrays textstrings/ttextstrings.buildarrays.html - Changed textstrings/ttextstrings.changed.html - Changing textstrings/ttextstrings.changing.html - ClearArrays textstrings/ttextstrings.cleararrays.html - GetLineLen textstrings/ttextstrings.getlinelen.html - GetLineEnd textstrings/ttextstrings.getlineend.html - CountLineEndings textstrings/ttextstrings.countlineendings.html - Create textstrings/ttextstrings.create.html - MakeTextBufferUnique textstrings/ttextstrings.maketextbufferunique.html - AddObject textstrings/ttextstrings.addobject.html - LoadFromFile textstrings/ttextstrings.loadfromfile.html - SaveToFile textstrings/ttextstrings.savetofile.html - OnChange textstrings/ttextstrings.onchange.html - OnChanging textstrings/ttextstrings.onchanging.html - GetTextStr - SetTextStr - GetCount - Get - GetObject - Put - PutObject - Destroy ms-its:rtl.chm::/classes/tstrings.destroy.html - Clear ms-its:rtl.chm::/classes/tstrings.clear.html - SetText ms-its:rtl.chm::/classes/tstrings.settext.html - Insert ms-its:rtl.chm::/classes/tstrings.insert.html - Delete ms-its:rtl.chm::/classes/tstrings.delete.html - Exchange ms-its:rtl.chm::/classes/tstrings.exchange.html - Move ms-its:rtl.chm::/classes/tstrings.move.html - BeginUpdate ms-its:rtl.chm::/classes/tstrings.beginupdate.html - EndUpdate ms-its:rtl.chm::/classes/tstrings.endupdate.html - GetText ms-its:rtl.chm::/classes/tstrings.gettext.html - IndexOf ms-its:rtl.chm::/classes/tstrings.indexof.html - Add ms-its:rtl.chm::/classes/tstrings.add.html - AddStrings ms-its:rtl.chm::/classes/tstrings.addstrings.html - Text ms-its:rtl.chm::/classes/tstrings.text.html - ImageListCache imagelistcache/index.html - TImageCacheItem imagelistcache/timagecacheitem.html - PImageCacheItem imagelistcache/pimagecacheitem.html - IImageCacheListener imagelistcache/iimagecachelistener.html - CacheSetImageList imagelistcache/iimagecachelistener.cachesetimagelist.html - CacheSetImageIndex imagelistcache/iimagecachelistener.cachesetimageindex.html - TImageCacheItems imagelistcache/timagecacheitems.html - Notify imagelistcache/timagecacheitems.notify.html - GetNew imagelistcache/timagecacheitems.getnew.html - Items imagelistcache/timagecacheitems.items.html - TImageListCache imagelistcache/timagelistcache.html - Create imagelistcache/timagelistcache.create.html - Destroy imagelistcache/timagelistcache.destroy.html - RegisterListener imagelistcache/timagelistcache.registerlistener.html - UnregisterListener imagelistcache/timagelistcache.unregisterlistener.html - RegisterBitmap imagelistcache/timagelistcache.registerbitmap.html - Rebuild imagelistcache/timagelistcache.rebuild.html - GetImageListCache imagelistcache/getimagelistcache.html - ButtonPanel buttonpanel/index.html - ExtCtrls extctrls/index.html - Multi-PageControls extctrls/multi-pagecontrols.html - TBeforeShowPageEvent extctrls/tbeforeshowpageevent.html - TIdleTimerAutoEvent extctrls/tidletimerautoevent.html - TIdleTimerAutoEvents extctrls/tidletimerautoevents.html - TShapeType extctrls/tshapetype.html - TResizeStyle extctrls/tresizestyle.html - TCanOffsetEvent extctrls/tcanoffsetevent.html - TCanResizeEvent extctrls/tcanresizeevent.html - TBevelStyle extctrls/tbevelstyle.html - TBevelShape extctrls/tbevelshape.html - TColumnLayout extctrls/tcolumnlayout.html - TCheckGroupClicked extctrls/tcheckgroupclicked.html - TLabelPosition extctrls/tlabelposition.html - TPanelBevel extctrls/tpanelbevel.html - TBevelWidth extctrls/tbevelwidth.html - TBalloonFlags extctrls/tballoonflags.html - TBandDrawingStyle extctrls/tbanddrawingstyle.html - TBandPaintOption extctrls/tbandpaintoption.html - TBandPaintOptions extctrls/tbandpaintoptions.html - TBandDragEvent extctrls/tbanddragevent.html - TBandInfoEvent extctrls/tbandinfoevent.html - TBandMoveEvent extctrls/tbandmoveevent.html - TBandPaintEvent extctrls/tbandpaintevent.html - TRowSize extctrls/trowsize.html - TBandMove extctrls/tbandmove.html - TCursorDesign extctrls/tcursordesign.html - TPage extctrls/tpage.html - SetParent extctrls/tpage.setparent.html - Create controls/tcustomcontrol.create.html - Destroy controls/tcustomcontrol.destroy.html - OnBeforeShow extctrls/tpage.onbeforeshow.html - BiDiMode extctrls/tpage.bidimode.html - Color extctrls/tpage.color.html - OnMouseEnter extctrls/tpage.onmouseenter.html - OnMouseLeave extctrls/tpage.onmouseleave.html - OnMouseWheel extctrls/tpage.onmousewheel.html - OnMouseWheelDown extctrls/tpage.onmousewheeldown.html - OnMouseWheelUp extctrls/tpage.onmousewheelup.html - ParentBiDiMode extctrls/tpage.parentbidimode.html - ChildSizing controls/twincontrol.childsizing.html - Left controls/tcontrol.left.html - Top controls/tcontrol.top.html - Width controls/tcontrol.width.html - Height controls/tcontrol.height.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - TabOrder controls/twincontrol.taborder.html - Visible controls/tcontrol.visible.html - TUNBPages extctrls/tunbpages.html - Get extctrls/tunbpages.get.html - GetCount extctrls/tunbpages.getcount.html - GetObject extctrls/tunbpages.getobject.html - Put extctrls/tunbpages.put.html - Create extctrls/tunbpages.create.html - Clear extctrls/tunbpages.clear.html - Delete extctrls/tunbpages.delete.html - Insert extctrls/tunbpages.insert.html - TNotebook extctrls/tnotebook.html - Create extctrls/tnotebook.create.html - Destroy controls/tcustomcontrol.destroy.html - ShowControl extctrls/tnotebook.showcontrol.html - ActivePage extctrls/tnotebook.activepage.html - ActivePageComponent extctrls/tnotebook.activepagecomponent.html - Page extctrls/tnotebook.page.html - PageCount extctrls/tnotebook.pagecount.html - PageIndex extctrls/tnotebook.pageindex.html - Pages extctrls/tnotebook.pages.html - AutoSize extctrls/tnotebook.autosize.html - BiDiMode extctrls/tnotebook.bidimode.html - Color extctrls/tnotebook.color.html - OnMouseEnter extctrls/tnotebook.onmouseenter.html - OnMouseLeave extctrls/tnotebook.onmouseleave.html - OnMouseMove extctrls/tnotebook.onmousemove.html - OnMouseWheel extctrls/tnotebook.onmousewheel.html - OnMouseWheelDown extctrls/tnotebook.onmousewheeldown.html - OnMouseWheelUp extctrls/tnotebook.onmousewheelup.html - ParentBiDiMode extctrls/tnotebook.parentbidimode.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - PopupMenu controls/tcontrol.popupmenu.html - TabOrder controls/twincontrol.taborder.html - TabStop - TTimer extctrls/ttimer.html - Enabled customtimer/tcustomtimer.enabled.html - Interval customtimer/tcustomtimer.interval.html - OnTimer customtimer/tcustomtimer.ontimer.html - OnStartTimer customtimer/tcustomtimer.onstarttimer.html - OnStopTimer customtimer/tcustomtimer.onstoptimer.html - TCustomIdleTimer extctrls/tcustomidletimer.html - SetAutoEnabled extctrls/tcustomidletimer.setautoenabled.html - DoOnIdle extctrls/tcustomidletimer.doonidle.html - DoOnIdleEnd extctrls/tcustomidletimer.doonidleend.html - DoOnUserInput extctrls/tcustomidletimer.doonuserinput.html - Loaded extctrls/tcustomidletimer.loaded.html - Create extctrls/tcustomidletimer.create.html - Destroy extctrls/tcustomidletimer.destroy.html - AutoEnabled extctrls/tcustomidletimer.autoenabled.html - AutoStartEvent extctrls/tcustomidletimer.autostartevent.html - AutoEndEvent extctrls/tcustomidletimer.autoendevent.html - FireOnIdle extctrls/tcustomidletimer.fireonidle.html - TIdleTimer extctrls/tidletimer.html - AutoEnabled extctrls/tcustomidletimer.autoenabled.html - AutoStartEvent extctrls/tcustomidletimer.autostartevent.html - AutoEndEvent extctrls/tcustomidletimer.autoendevent.html - Enabled customtimer/tcustomtimer.enabled.html - Interval customtimer/tcustomtimer.interval.html - OnTimer customtimer/tcustomtimer.ontimer.html - OnStartTimer customtimer/tcustomtimer.onstarttimer.html - OnStopTimer customtimer/tcustomtimer.onstoptimer.html - TShape extctrls/tshape.html - Create extctrls/tshape.create.html - Destroy extctrls/tshape.destroy.html - StyleChanged extctrls/tshape.stylechanged.html - Brush extctrls/tshape.brush.html - Pen extctrls/tshape.pen.html - OnMouseEnter extctrls/tshape.onmouseenter.html - OnMouseLeave extctrls/tshape.onmouseleave.html - OnMouseWheel extctrls/tshape.onmousewheel.html - OnMouseWheelDown extctrls/tshape.onmousewheeldown.html - OnMouseWheelUp extctrls/tshape.onmousewheelup.html - Shape extctrls/tshape.shape.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - Paint controls/tgraphiccontrol.paint.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - ParentShowHint controls/tcontrol.parentshowhint.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnPaint controls/tgraphiccontrol.onpaint.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - ShowHint controls/tcontrol.showhint.html - Visible controls/tcontrol.visible.html - TCustomSplitter extctrls/tcustomsplitter.html - AdaptAnchors extctrls/tcustomsplitter.adaptanchors.html - CheckNewSize extctrls/tcustomsplitter.checknewsize.html - CheckOffset extctrls/tcustomsplitter.checkoffset.html - FindAlignControl extctrls/tcustomsplitter.findaligncontrol.html - FindAlignOtherControl extctrls/tcustomsplitter.findalignothercontrol.html - MouseLeave extctrls/tcustomsplitter.mouseleave.html - SetResizeAnchor extctrls/tcustomsplitter.setresizeanchor.html - SetResizeControl extctrls/tcustomsplitter.setresizecontrol.html - StartSplitterMove extctrls/tcustomsplitter.startsplittermove.html - StopSplitterMove extctrls/tcustomsplitter.stopsplittermove.html - Create extctrls/tcustomsplitter.create.html - AnchorSplitter extctrls/tcustomsplitter.anchorsplitter.html - ResizeControl extctrls/tcustomsplitter.resizecontrol.html - GetOtherResizeControl extctrls/tcustomsplitter.getotherresizecontrol.html - MoveSplitter extctrls/tcustomsplitter.movesplitter.html - SetSplitterPosition extctrls/tcustomsplitter.setsplitterposition.html - GetSplitterPosition extctrls/tcustomsplitter.getsplitterposition.html - AutoSnap extctrls/tcustomsplitter.autosnap.html - Beveled extctrls/tcustomsplitter.beveled.html - MinSize extctrls/tcustomsplitter.minsize.html - OnCanOffset extctrls/tcustomsplitter.oncanoffset.html - OnCanResize extctrls/tcustomsplitter.oncanresize.html - OnMoved extctrls/tcustomsplitter.onmoved.html - ResizeAnchor extctrls/tcustomsplitter.resizeanchor.html - ResizeStyle extctrls/tcustomsplitter.resizestyle.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - MouseDown controls/tcontrol.mousedown.html - MouseEnter controls/tcontrol.mouseenter.html - MouseMove controls/tcontrol.mousemove.html - MouseUp controls/tcontrol.mouseup.html - Paint controls/tcustomcontrol.paint.html - SetAlign - SetAnchors - Align controls/tcontrol.align.html - Cursor controls/tcontrol.cursor.html - TSplitter extctrls/tsplitter.html - OnCanOffset extctrls/tsplitter.oncanoffset.html - OnMouseWheel extctrls/tsplitter.onmousewheel.html - OnMouseWheelDown extctrls/tsplitter.onmousewheeldown.html - OnMouseWheelUp extctrls/tsplitter.onmousewheelup.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSnap extctrls/tcustomsplitter.autosnap.html - Beveled extctrls/tcustomsplitter.beveled.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - Cursor controls/tcontrol.cursor.html - Height controls/tcontrol.height.html - MinSize extctrls/tcustomsplitter.minsize.html - OnCanResize extctrls/tcustomsplitter.oncanresize.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnMoved extctrls/tcustomsplitter.onmoved.html - ParentColor controls/tcontrol.parentcolor.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ResizeAnchor extctrls/tcustomsplitter.resizeanchor.html - ResizeStyle extctrls/tcustomsplitter.resizestyle.html - ShowHint controls/tcontrol.showhint.html - Visible controls/tcontrol.visible.html - Width controls/tcontrol.width.html - TPaintBox extctrls/tpaintbox.html - Create extctrls/tpaintbox.create.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Paint controls/tgraphiccontrol.paint.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - Canvas controls/tgraphiccontrol.canvas.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Hint controls/tcontrol.hint.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - Visible controls/tcontrol.visible.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnPaint controls/tgraphiccontrol.onpaint.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - TCustomImage extctrls/tcustomimage.html - PictureChanged extctrls/tcustomimage.picturechanged.html - Create extctrls/tcustomimage.create.html - Destroy extctrls/tcustomimage.destroy.html - DestRect extctrls/tcustomimage.destrect.html - Invalidate extctrls/tcustomimage.invalidate.html - AntialiasingMode extctrls/tcustomimage.antialiasingmode.html - Center extctrls/tcustomimage.center.html - Picture extctrls/tcustomimage.picture.html - OnMouseEnter extctrls/tcustomimage.onmouseenter.html - OnMouseLeave extctrls/tcustomimage.onmouseleave.html - OnMouseWheel extctrls/tcustomimage.onmousewheel.html - OnMouseWheelDown extctrls/tcustomimage.onmousewheeldown.html - OnMouseWheelUp extctrls/tcustomimage.onmousewheelup.html - Stretch extctrls/tcustomimage.stretch.html - Transparent extctrls/tcustomimage.transparent.html - Proportional extctrls/tcustomimage.proportional.html - OnPictureChanged extctrls/tcustomimage.onpicturechanged.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - Paint controls/tgraphiccontrol.paint.html - Canvas controls/tgraphiccontrol.canvas.html - Align controls/tcontrol.align.html - AutoSize controls/tcontrol.autosize.html - Constraints controls/tcontrol.constraints.html - Visible controls/tcontrol.visible.html - OnClick controls/tcontrol.onclick.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - TImage extctrls/timage.html - AntialiasingMode extctrls/timage.antialiasingmode.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Center extctrls/tcustomimage.center.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnPaint controls/tgraphiccontrol.onpaint.html - OnPictureChanged extctrls/tcustomimage.onpicturechanged.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - ParentShowHint controls/tcontrol.parentshowhint.html - Picture extctrls/tcustomimage.picture.html - PopupMenu controls/tcontrol.popupmenu.html - Proportional extctrls/tcustomimage.proportional.html - ShowHint controls/tcontrol.showhint.html - Stretch extctrls/tcustomimage.stretch.html - Transparent extctrls/tcustomimage.transparent.html - Visible controls/tcontrol.visible.html - TBevel extctrls/tbevel.html - GetControlClassDefaultSize extctrls/tbevel.getcontrolclassdefaultsize.html - Create extctrls/tbevel.create.html - ParentShowHint extctrls/tbevel.parentshowhint.html - Shape extctrls/tbevel.shape.html - ShowHint extctrls/tbevel.showhint.html - Style extctrls/tbevel.style.html - OnMouseEnter extctrls/tbevel.onmouseenter.html - OnMouseLeave extctrls/tbevel.onmouseleave.html - OnMouseWheel extctrls/tbevel.onmousewheel.html - OnMouseWheelDown extctrls/tbevel.onmousewheeldown.html - OnMouseWheelUp extctrls/tbevel.onmousewheelup.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Paint controls/tgraphiccontrol.paint.html - Destroy controls/tgraphiccontrol.destroy.html - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - Visible controls/tcontrol.visible.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnResize controls/tcontrol.onresize.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnPaint controls/tgraphiccontrol.onpaint.html - TCustomRadioGroup extctrls/tcustomradiogroup.html - UpdateInternalObjectList extctrls/tcustomradiogroup.updateinternalobjectlist.html - UpdateAll extctrls/tcustomradiogroup.updateall.html - UpdateRadioButtonStates extctrls/tcustomradiogroup.updateradiobuttonstates.html - SetItems extctrls/tcustomradiogroup.setitems.html - SetColumns extctrls/tcustomradiogroup.setcolumns.html - SetItemIndex extctrls/tcustomradiogroup.setitemindex.html - GetItemIndex extctrls/tcustomradiogroup.getitemindex.html - CheckItemIndexChanged extctrls/tcustomradiogroup.checkitemindexchanged.html - Create extctrls/tcustomradiogroup.create.html - Destroy extctrls/tcustomradiogroup.destroy.html - CanModify extctrls/tcustomradiogroup.canmodify.html - FlipChildren extctrls/tcustomradiogroup.flipchildren.html - Rows extctrls/tcustomradiogroup.rows.html - AutoFill extctrls/tcustomradiogroup.autofill.html - Items extctrls/tcustomradiogroup.items.html - Columns extctrls/tcustomradiogroup.columns.html - ColumnLayout extctrls/tcustomradiogroup.columnlayout.html - OnClick extctrls/tcustomradiogroup.onclick.html - OnSelectionChanged extctrls/tcustomradiogroup.onselectionchanged.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - InitializeWnd controls/twincontrol.initializewnd.html - ReadState - ItemIndex - TRadioGroup extctrls/tradiogroup.html - BidiMode extctrls/tradiogroup.bidimode.html - Caption extctrls/tradiogroup.caption.html - OnMouseEnter extctrls/tradiogroup.onmouseenter.html - OnMouseLeave extctrls/tradiogroup.onmouseleave.html - OnMouseWheel extctrls/tradiogroup.onmousewheel.html - OnMouseWheelDown extctrls/tradiogroup.onmousewheeldown.html - OnMouseWheelUp extctrls/tradiogroup.onmousewheelup.html - ParentBidiMode extctrls/tradiogroup.parentbidimode.html - ParentColor extctrls/tradiogroup.parentcolor.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoFill - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - ChildSizing controls/twincontrol.childsizing.html - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Color controls/tcontrol.color.html - ColumnLayout extctrls/tcustomradiogroup.columnlayout.html - Columns extctrls/tcustomradiogroup.columns.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - ItemIndex - Items extctrls/tcustomradiogroup.items.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick extctrls/tcustomradiogroup.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnSelectionChanged extctrls/tcustomradiogroup.onselectionchanged.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TCustomCheckGroup extctrls/tcustomcheckgroup.html - UpdateInternalObjectList extctrls/tcustomcheckgroup.updateinternalobjectlist.html - UpdateAll extctrls/tcustomcheckgroup.updateall.html - SetItems extctrls/tcustomcheckgroup.setitems.html - SetColumns extctrls/tcustomcheckgroup.setcolumns.html - DefineProperties extctrls/tcustomcheckgroup.defineproperties.html - ReadData extctrls/tcustomcheckgroup.readdata.html - WriteData extctrls/tcustomcheckgroup.writedata.html - Create extctrls/tcustomcheckgroup.create.html - Destroy extctrls/tcustomcheckgroup.destroy.html - FlipChildren extctrls/tcustomcheckgroup.flipchildren.html - Rows extctrls/tcustomcheckgroup.rows.html - AutoFill extctrls/tcustomcheckgroup.autofill.html - Items extctrls/tcustomcheckgroup.items.html - Checked extctrls/tcustomcheckgroup.checked.html - CheckEnabled extctrls/tcustomcheckgroup.checkenabled.html - Columns extctrls/tcustomcheckgroup.columns.html - ColumnLayout extctrls/tcustomcheckgroup.columnlayout.html - OnItemClick extctrls/tcustomcheckgroup.onitemclick.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Loaded - DoOnResize controls/tcontrol.doonresize.html - TCheckGroup extctrls/tcheckgroup.html - BiDiMode extctrls/tcheckgroup.bidimode.html - Caption extctrls/tcheckgroup.caption.html - ClientHeight extctrls/tcheckgroup.clientheight.html - ClientWidth extctrls/tcheckgroup.clientwidth.html - DragCursor extctrls/tcheckgroup.dragcursor.html - DragMode extctrls/tcheckgroup.dragmode.html - Items extctrls/tcheckgroup.items.html - OnDragDrop extctrls/tcheckgroup.ondragdrop.html - OnDragOver extctrls/tcheckgroup.ondragover.html - OnEndDrag extctrls/tcheckgroup.onenddrag.html - OnMouseEnter extctrls/tcheckgroup.onmouseenter.html - OnMouseLeave extctrls/tcheckgroup.onmouseleave.html - OnMouseWheel extctrls/tcheckgroup.onmousewheel.html - OnMouseWheelDown extctrls/tcheckgroup.onmousewheeldown.html - OnMouseWheelUp extctrls/tcheckgroup.onmousewheelup.html - OnStartDrag extctrls/tcheckgroup.onstartdrag.html - ParentBiDiMode extctrls/tcheckgroup.parentbidimode.html - TabStop extctrls/tcheckgroup.tabstop.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoFill extctrls/tcustomcheckgroup.autofill.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - ChildSizing controls/twincontrol.childsizing.html - Color controls/tcontrol.color.html - ColumnLayout extctrls/tcustomcheckgroup.columnlayout.html - Columns extctrls/tcustomcheckgroup.columns.html - Constraints controls/tcontrol.constraints.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnItemClick extctrls/tcustomcheckgroup.onitemclick.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentFont controls/tcontrol.parentfont.html - ParentColor controls/tcontrol.parentcolor.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - Visible controls/tcontrol.visible.html - TBoundLabel extctrls/tboundlabel.html - Create extctrls/tboundlabel.create.html - FocusControl extctrls/tboundlabel.focuscontrol.html - Font extctrls/tboundlabel.font.html - OnMouseEnter extctrls/tboundlabel.onmouseenter.html - OnMouseLeave extctrls/tboundlabel.onmouseleave.html - OnMouseWheel extctrls/tboundlabel.onmousewheel.html - OnMouseWheelDown extctrls/tboundlabel.onmousewheeldown.html - OnMouseWheelUp extctrls/tboundlabel.onmousewheelup.html - Caption controls/tcontrol.caption.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Height controls/tcontrol.height.html - Left controls/tcontrol.left.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html - ShowHint controls/tcontrol.showhint.html - Layout stdctrls/tcustomlabel.layout.html - WordWrap stdctrls/tcustomlabel.wordwrap.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - TCustomLabeledEdit extctrls/tcustomlabelededit.html - Loaded extctrls/tcustomlabelededit.loaded.html - DoPositionLabel extctrls/tcustomlabelededit.dopositionlabel.html - CMBiDiModeChanged extctrls/tcustomlabelededit.cmbidimodechanged.html - CreateInternalLabel extctrls/tcustomlabelededit.createinternallabel.html - Create extctrls/tcustomlabelededit.create.html - EditLabel extctrls/tcustomlabelededit.editlabel.html - LabelPosition extctrls/tcustomlabelededit.labelposition.html - LabelSpacing extctrls/tcustomlabelededit.labelspacing.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - SetParent - SetName - Notification - CMVisibleChanged controls/twincontrol.cmvisiblechanged.html - CMEnabledChanged controls/twincontrol.cmenabledchanged.html - TLabeledEdit extctrls/tlabelededit.html - Alignment extctrls/tlabelededit.alignment.html - BidiMode extctrls/tlabelededit.bidimode.html - BorderStyle extctrls/tlabelededit.borderstyle.html - Font extctrls/tlabelededit.font.html - ParentBidiMode extctrls/tlabelededit.parentbidimode.html - OnEditingDone extctrls/tlabelededit.oneditingdone.html - OnMouseEnter extctrls/tlabelededit.onmouseenter.html - OnMouseLeave extctrls/tlabelededit.onmouseleave.html - OnMouseWheel extctrls/tlabelededit.onmousewheel.html - OnMouseWheelDown extctrls/tlabelededit.onmousewheeldown.html - OnMouseWheelUp extctrls/tlabelededit.onmousewheelup.html - Anchors controls/tcontrol.anchors.html - AutoSelect stdctrls/tcustomedit.autoselect.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - CharCase stdctrls/tcustomedit.charcase.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - EchoMode stdctrls/tcustomedit.echomode.html - EditLabel extctrls/tcustomlabelededit.editlabel.html - Enabled controls/tcontrol.enabled.html - LabelPosition extctrls/tcustomlabelededit.labelposition.html - LabelSpacing extctrls/tcustomlabelededit.labelspacing.html - MaxLength stdctrls/tcustomedit.maxlength.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PasswordChar stdctrls/tcustomedit.passwordchar.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Text stdctrls/tcustomedit.text.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TCustomPanel extctrls/tcustompanel.html - UpdateParentColorChange extctrls/tcustompanel.updateparentcolorchange.html - Create extctrls/tcustompanel.create.html - Alignment extctrls/tcustompanel.alignment.html - BevelInner extctrls/tcustompanel.bevelinner.html - BevelOuter extctrls/tcustompanel.bevelouter.html - BevelWidth extctrls/tcustompanel.bevelwidth.html - FullRepaint extctrls/tcustompanel.fullrepaint.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - AdjustClientRect controls/twincontrol.adjustclientrect.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - CMParentColorChanged controls/tcontrol.cmparentcolorchanged.html - GetDefaultDockCaption controls/tcontrol.getdefaultdockcaption.html - Loaded - RealSetText controls/tcontrol.realsettext.html - Paint controls/tcustomcontrol.paint.html - Align controls/tcontrol.align.html - Color controls/tcontrol.color.html - ParentColor controls/tcontrol.parentcolor.html - TabStop controls/twincontrol.tabstop.html - TPanel extctrls/tpanel.html - BidiMode extctrls/tpanel.bidimode.html - Caption extctrls/tpanel.caption.html - ParentBidiMode extctrls/tpanel.parentbidimode.html - OnContextPopup extctrls/tpanel.oncontextpopup.html - OnMouseEnter extctrls/tpanel.onmouseenter.html - OnMouseLeave extctrls/tpanel.onmouseleave.html - OnMouseWheel extctrls/tpanel.onmousewheel.html - OnMouseWheelDown extctrls/tpanel.onmousewheeldown.html - OnMouseWheelUp extctrls/tpanel.onmousewheelup.html - Align controls/tcontrol.align.html - Alignment extctrls/tcustompanel.alignment.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - BevelInner extctrls/tcustompanel.bevelinner.html - BevelOuter extctrls/tcustompanel.bevelouter.html - BevelWidth extctrls/tcustompanel.bevelwidth.html - BorderWidth controls/twincontrol.borderwidth.html - BorderStyle controls/twincontrol.borderstyle.html - ChildSizing - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DockSite controls/twincontrol.docksite.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - FullRepaint extctrls/tcustompanel.fullrepaint.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - UseDockManager controls/twincontrol.usedockmanager.html - Visible controls/tcontrol.visible.html - OnClick controls/tcontrol.onclick.html - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html - OnGetDockCaption controls/twincontrol.ongetdockcaption.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUnDock controls/twincontrol.onundock.html - TCustomTrayIcon extctrls/tcustomtrayicon.html - Notification extctrls/tcustomtrayicon.notification.html - Loaded extctrls/tcustomtrayicon.loaded.html - Handle extctrls/tcustomtrayicon.handle.html - Create extctrls/tcustomtrayicon.create.html - Destroy extctrls/tcustomtrayicon.destroy.html - Hide extctrls/tcustomtrayicon.hide.html - Show extctrls/tcustomtrayicon.show.html - InternalUpdate extctrls/tcustomtrayicon.internalupdate.html - ShowBalloonHint extctrls/tcustomtrayicon.showballoonhint.html - GetPosition extctrls/tcustomtrayicon.getposition.html - Animate extctrls/tcustomtrayicon.animate.html - AnimateInterval extctrls/tcustomtrayicon.animateinterval.html - BalloonFlags extctrls/tcustomtrayicon.balloonflags.html - BalloonHint extctrls/tcustomtrayicon.balloonhint.html - BalloonTimeout extctrls/tcustomtrayicon.balloontimeout.html - BalloonTitle extctrls/tcustomtrayicon.balloontitle.html - Canvas extctrls/tcustomtrayicon.canvas.html - PopUpMenu extctrls/tcustomtrayicon.popupmenu.html - Icon extctrls/tcustomtrayicon.icon.html - Icons extctrls/tcustomtrayicon.icons.html - Hint extctrls/tcustomtrayicon.hint.html - ShowIcon extctrls/tcustomtrayicon.showicon.html - Visible extctrls/tcustomtrayicon.visible.html - OnClick extctrls/tcustomtrayicon.onclick.html - OnDblClick extctrls/tcustomtrayicon.ondblclick.html - OnMouseDown extctrls/tcustomtrayicon.onmousedown.html - OnMouseUp extctrls/tcustomtrayicon.onmouseup.html - OnMouseMove extctrls/tcustomtrayicon.onmousemove.html - OnPaint extctrls/tcustomtrayicon.onpaint.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TTrayIcon extctrls/ttrayicon.html - BalloonFlags extctrls/tcustomtrayicon.balloonflags.html - BalloonHint extctrls/tcustomtrayicon.balloonhint.html - BalloonTimeout extctrls/tcustomtrayicon.balloontimeout.html - BalloonTitle extctrls/tcustomtrayicon.balloontitle.html - PopUpMenu extctrls/tcustomtrayicon.popupmenu.html - Icon extctrls/tcustomtrayicon.icon.html - Hint extctrls/tcustomtrayicon.hint.html - Visible extctrls/tcustomtrayicon.visible.html - OnClick extctrls/tcustomtrayicon.onclick.html - OnDblClick extctrls/tcustomtrayicon.ondblclick.html - OnMouseDown extctrls/tcustomtrayicon.onmousedown.html - OnMouseMove extctrls/tcustomtrayicon.onmousemove.html - OnMouseUp extctrls/tcustomtrayicon.onmouseup.html - OnPaint extctrls/tcustomtrayicon.onpaint.html - TCtrlBand extctrls/tctrlband.html - BandRect extctrls/tctrlband.bandrect.html - Bottom extctrls/tctrlband.bottom.html - Control extctrls/tctrlband.control.html - ControlHeight extctrls/tctrlband.controlheight.html - ControlLeft extctrls/tctrlband.controlleft.html - ControlTop extctrls/tctrlband.controltop.html - ControlWidth extctrls/tctrlband.controlwidth.html - ControlVisible extctrls/tctrlband.controlvisible.html - Height extctrls/tctrlband.height.html - InitLeft extctrls/tctrlband.initleft.html - InitTop extctrls/tctrlband.inittop.html - Left extctrls/tctrlband.left.html - Right extctrls/tctrlband.right.html - Top extctrls/tctrlband.top.html - Visible extctrls/tctrlband.visible.html - Width extctrls/tctrlband.width.html - PopupNotifier popupnotifier/index.html - BGDrawn popupnotifier/bgdrawn.html - TNotifierXButtonButtonState popupnotifier/tnotifierxbuttonbuttonstate.html - TNotifierXButton popupnotifier/tnotifierxbutton.html - Create popupnotifier/tnotifierxbutton.create.html - Destroy popupnotifier/tnotifierxbutton.destroy.html - Paint popupnotifier/tnotifierxbutton.paint.html - TNotifierForm popupnotifier/tnotifierform.html - Create popupnotifier/tnotifierform.create.html - Destroy popupnotifier/tnotifierform.destroy.html - Paint - TPopupNotifier popupnotifier/tpopupnotifier.html - vNotifierForm popupnotifier/tpopupnotifier.vnotifierform.html - Create popupnotifier/tpopupnotifier.create.html - Destroy popupnotifier/tpopupnotifier.destroy.html - Hide popupnotifier/tpopupnotifier.hide.html - Show popupnotifier/tpopupnotifier.show.html - ShowAtPos popupnotifier/tpopupnotifier.showatpos.html - Color popupnotifier/tpopupnotifier.color.html - Icon popupnotifier/tpopupnotifier.icon.html - Text popupnotifier/tpopupnotifier.text.html - Title popupnotifier/tpopupnotifier.title.html - Visible popupnotifier/tpopupnotifier.visible.html - OnClose popupnotifier/tpopupnotifier.onclose.html - Register popupnotifier/register.html - ComCtrls comctrls/index.html - CN_DROPDOWNCLOSED comctrls/cn_dropdownclosed.html - LCLStreamID comctrls/lclstreamid.html - DefaultTreeViewOptions comctrls/defaulttreeviewoptions.html - DefaultMultiSelectStyle comctrls/defaultmultiselectstyle.html - TCN_First comctrls/tcn_first.html - TCN_SELCHANGE comctrls/tcn_selchange.html - TCN_SELCHANGING comctrls/tcn_selchanging.html - THitTest comctrls/thittest.html - THitTests comctrls/thittests.html - TStatusPanelStyle comctrls/tstatuspanelstyle.html - TStatusPanelBevel comctrls/tstatuspanelbevel.html - TPanelPart comctrls/tpanelpart.html - TPanelParts comctrls/tpanelparts.html - TStatusPanelClass comctrls/tstatuspanelclass.html - TSBCreatePanelClassEvent comctrls/tsbcreatepanelclassevent.html - TDrawPanelEvent comctrls/tdrawpanelevent.html - TPageFlag comctrls/tpageflag.html - TPageFlags comctrls/tpageflags.html - TCustomPageClass comctrls/tcustompageclass.html - TNBBasePagesClass comctrls/tnbbasepagesclass.html - TTabChangingEvent comctrls/ttabchangingevent.html - TTabPosition comctrls/ttabposition.html - TTabStyle comctrls/ttabstyle.html - TTabGetImageEvent comctrls/ttabgetimageevent.html - TCTabControlOption comctrls/tctabcontroloption.html - TCTabControlOptions comctrls/tctabcontroloptions.html - TCTabControlCapability comctrls/tctabcontrolcapability.html - TCTabControlCapabilities comctrls/tctabcontrolcapabilities.html - TNoteBookOption comctrls/tnotebookoption.html - TNoteBookOptions comctrls/tnotebookoptions.html - TNoteBookCapability comctrls/tnotebookcapability.html - TNoteBookCapabilities comctrls/tnotebookcapabilities.html - TDrawTabEvent comctrls/tdrawtabevent.html - TNoteBookStringsTabControlClass comctrls/tnotebookstringstabcontrolclass.html - TCustomDrawTarget comctrls/tcustomdrawtarget.html - TCustomDrawStage comctrls/tcustomdrawstage.html - TCustomDrawStateFlag comctrls/tcustomdrawstateflag.html - TCustomDrawState comctrls/tcustomdrawstate.html - TCustomDrawResultFlag comctrls/tcustomdrawresultflag.html - TCustomDrawResult comctrls/tcustomdrawresult.html - TSortType comctrls/tsorttype.html - TListItemState comctrls/tlistitemstate.html - TListItemStates comctrls/tlistitemstates.html - TListItemFlag comctrls/tlistitemflag.html - TListItemFlags comctrls/tlistitemflags.html - TDisplayCode comctrls/tdisplaycode.html - TIconArrangement comctrls/ticonarrangement.html - TListItemClass comctrls/tlistitemclass.html - TListItemsFlag comctrls/tlistitemsflag.html - TListItemsFlags comctrls/tlistitemsflags.html - TWidth comctrls/twidth.html - TItemChange comctrls/titemchange.html - TViewStyle comctrls/tviewstyle.html - TItemFind comctrls/titemfind.html - TSearchDirection comctrls/tsearchdirection.html - TLVChangeEvent comctrls/tlvchangeevent.html - TLVDataFindEvent comctrls/tlvdatafindevent.html - TLVDataHintEvent comctrls/tlvdatahintevent.html - TLVDataStateChangeEvent comctrls/tlvdatastatechangeevent.html - TLVColumnClickEvent comctrls/tlvcolumnclickevent.html - TLVColumnRClickEvent comctrls/tlvcolumnrclickevent.html - TLVCompareEvent comctrls/tlvcompareevent.html - TLVDeletedEvent comctrls/tlvdeletedevent.html - TLVEditingEvent comctrls/tlveditingevent.html - TLVEditedEvent comctrls/tlveditedevent.html - TLVInsertEvent comctrls/tlvinsertevent.html - TLVDataEvent comctrls/tlvdataevent.html - TLVCheckedItemEvent comctrls/tlvcheckeditemevent.html - TLVSelectItemEvent comctrls/tlvselectitemevent.html - TLVCustomDrawEvent comctrls/tlvcustomdrawevent.html - TLVCustomDrawItemEvent comctrls/tlvcustomdrawitemevent.html - TLVCustomDrawSubItemEvent comctrls/tlvcustomdrawsubitemevent.html - TLVDrawItemEvent comctrls/tlvdrawitemevent.html - TLVAdvancedCustomDrawEvent comctrls/tlvadvancedcustomdrawevent.html - TLVAdvancedCustomDrawItemEvent comctrls/tlvadvancedcustomdrawitemevent.html - TLVAdvancedCustomDrawSubItemEvent comctrls/tlvadvancedcustomdrawsubitemevent.html - TLVCreateItemClassEvent comctrls/tlvcreateitemclassevent.html - TListViewProperty comctrls/tlistviewproperty.html - TListViewProperties comctrls/tlistviewproperties.html - TListViewImageList comctrls/tlistviewimagelist.html - TListHotTrackStyle comctrls/tlisthottrackstyle.html - TListHotTrackStyles comctrls/tlisthottrackstyles.html - TListViewFlag comctrls/tlistviewflag.html - TListViewFlags comctrls/tlistviewflags.html - TSortDirection comctrls/tsortdirection.html - TProgressBarOrientation comctrls/tprogressbarorientation.html - TProgressBarStyle comctrls/tprogressbarstyle.html - TUDAlignButton comctrls/tudalignbutton.html - TUDOrientation comctrls/tudorientation.html - TUpDownDirection comctrls/tupdowndirection.html - TUDBtnType comctrls/tudbtntype.html - TUDClickEvent comctrls/tudclickevent.html - TUDChangingEvent comctrls/tudchangingevent.html - TUDChangingEventEx comctrls/tudchangingeventex.html - TToolButtonStyle comctrls/ttoolbuttonstyle.html - TToolButtonFlag comctrls/ttoolbuttonflag.html - TToolButtonFlags comctrls/ttoolbuttonflags.html - TToolButtonActionLinkClass comctrls/ttoolbuttonactionlinkclass.html - TToolBarFlag comctrls/ttoolbarflag.html - TToolBarFlags comctrls/ttoolbarflags.html - TGrabStyle comctrls/tgrabstyle.html - TDragBand comctrls/tdragband.html - TCoolBandMaximize comctrls/tcoolbandmaximize.html - TTrackBarOrientation comctrls/ttrackbarorientation.html - TTickMark comctrls/ttickmark.html - TTickStyle comctrls/ttickstyle.html - TTrackBarScalePos comctrls/ttrackbarscalepos.html - TTreeNodeClass comctrls/ttreenodeclass.html - TNodeState comctrls/tnodestate.html - TNodeStates comctrls/tnodestates.html - TNodeAttachMode comctrls/tnodeattachmode.html - TAddMode comctrls/taddmode.html - TMultiSelectStyles comctrls/tmultiselectstyles.html - TMultiSelectStyle comctrls/tmultiselectstyle.html - TTreeNodeArray comctrls/ttreenodearray.html - TTreeNodeChangeReason comctrls/ttreenodechangereason.html - TTVChangingEvent comctrls/ttvchangingevent.html - TTVChangedEvent comctrls/ttvchangedevent.html - TTVNodeChangedEvent comctrls/ttvnodechangedevent.html - TTVEditingEvent comctrls/ttveditingevent.html - TTVEditingEndEvent comctrls/ttveditingendevent.html - TTVEditedEvent comctrls/ttveditedevent.html - TTVExpandingEvent comctrls/ttvexpandingevent.html - TTVCollapsingEvent comctrls/ttvcollapsingevent.html - TTVExpandedEvent comctrls/ttvexpandedevent.html - TTVCompareEvent comctrls/ttvcompareevent.html - TTVCustomDrawEvent comctrls/ttvcustomdrawevent.html - TTVCustomDrawItemEvent comctrls/ttvcustomdrawitemevent.html - TTVAdvancedCustomDrawEvent comctrls/ttvadvancedcustomdrawevent.html - TTVAdvancedCustomDrawItemEvent comctrls/ttvadvancedcustomdrawitemevent.html - TTVCustomCreateNodeEvent comctrls/ttvcustomcreatenodeevent.html - TTVCreateNodeClassEvent comctrls/ttvcreatenodeclassevent.html - TTreeNodeCompare comctrls/ttreenodecompare.html - TOldTreeNodeInfo comctrls/toldtreenodeinfo.html - TTreeNodeInfo comctrls/ttreenodeinfo.html - PDelphiNodeInfo comctrls/pdelphinodeinfo.html - TDelphiNodeInfo comctrls/tdelphinodeinfo.html - PNodeCache comctrls/pnodecache.html - TNodeCache comctrls/tnodecache.html - TTreeViewState comctrls/ttreeviewstate.html - TTreeViewStates comctrls/ttreeviewstates.html - TTreeViewOption comctrls/ttreeviewoption.html - TTreeViewOptions comctrls/ttreeviewoptions.html - TTreeViewExpandSignType comctrls/ttreeviewexpandsigntype.html - TTreeViewInsertMarkType comctrls/ttreeviewinsertmarktype.html - THeaderSectionState comctrls/theadersectionstate.html - THeaderSectionClass comctrls/theadersectionclass.html - TSectionTrackState comctrls/tsectiontrackstate.html - TCustomSectionTrackEvent comctrls/tcustomsectiontrackevent.html - TSectionDragEvent comctrls/tsectiondragevent.html - TCustomSectionNotifyEvent comctrls/tcustomsectionnotifyevent.html - TCustomHCCreateSectionClassEvent comctrls/tcustomhccreatesectionclassevent.html - TStatusPanel comctrls/tstatuspanel.html - FIntfFlag comctrls/tstatuspanel.fintfflag.html - GetDisplayName comctrls/tstatuspanel.getdisplayname.html - PanelChanged comctrls/tstatuspanel.panelchanged.html - SetIndex comctrls/tstatuspanel.setindex.html - Create comctrls/tstatuspanel.create.html - Destroy comctrls/tstatuspanel.destroy.html - Assign comctrls/tstatuspanel.assign.html - StatusBar comctrls/tstatuspanel.statusbar.html - Alignment comctrls/tstatuspanel.alignment.html - Bevel comctrls/tstatuspanel.bevel.html - BidiMode comctrls/tstatuspanel.bidimode.html - ParentBiDiMode comctrls/tstatuspanel.parentbidimode.html - Style comctrls/tstatuspanel.style.html - Text comctrls/tstatuspanel.text.html - Width comctrls/tstatuspanel.width.html - TStatusPanels comctrls/tstatuspanels.html - GetOwner comctrls/tstatuspanels.getowner.html - Create comctrls/tstatuspanels.create.html - StatusBar comctrls/tstatuspanels.statusbar.html - Update - Add ms-its:rtl.chm::/classes/tcollection.add.html - Items ms-its:rtl.chm::/classes/tcollection.items.html - TStatusBar comctrls/tstatusbar.html - CreateWnd comctrls/tstatusbar.createwnd.html - DestroyWnd comctrls/tstatusbar.destroywnd.html - Loaded comctrls/tstatusbar.loaded.html - UpdateHandleObject comctrls/tstatusbar.updatehandleobject.html - CalculatePreferredSize comctrls/tstatusbar.calculatepreferredsize.html - SetBiDiMode comctrls/tstatusbar.setbidimode.html - CreatePanel comctrls/tstatusbar.createpanel.html - CreatePanels comctrls/tstatusbar.createpanels.html - GetPanelClass comctrls/tstatusbar.getpanelclass.html - DoSetApplicationHint comctrls/tstatusbar.dosetapplicationhint.html - DoHint comctrls/tstatusbar.dohint.html - DrawPanel comctrls/tstatusbar.drawpanel.html - LMDrawItem comctrls/tstatusbar.lmdrawitem.html - Create comctrls/tstatusbar.create.html - Destroy comctrls/tstatusbar.destroy.html - InvalidatePanel comctrls/tstatusbar.invalidatepanel.html - BeginUpdate comctrls/tstatusbar.beginupdate.html - EndUpdate comctrls/tstatusbar.endupdate.html - ExecuteAction comctrls/tstatusbar.executeaction.html - GetPanelIndexAt comctrls/tstatusbar.getpanelindexat.html - SizeGripEnabled comctrls/tstatusbar.sizegripenabled.html - UpdatingStatusBar comctrls/tstatusbar.updatingstatusbar.html - Canvas comctrls/tstatusbar.canvas.html - AutoHint comctrls/tstatusbar.autohint.html - BiDiMode comctrls/tstatusbar.bidimode.html - BorderSpacing comctrls/tstatusbar.borderspacing.html - BorderWidth controls/twincontrol.borderwidth.html - Font comctrls/tstatusbar.font.html - Panels comctrls/tstatusbar.panels.html - ParentBiDiMode comctrls/tstatusbar.parentbidimode.html - ParentColor comctrls/tstatusbar.parentcolor.html - ParentFont comctrls/tstatusbar.parentfont.html - PopupMenu comctrls/tstatusbar.popupmenu.html - SimpleText comctrls/tstatusbar.simpletext.html - SimplePanel comctrls/tstatusbar.simplepanel.html - SizeGrip comctrls/tstatusbar.sizegrip.html - UseSystemFont comctrls/tstatusbar.usesystemfont.html - OnCreatePanelClass comctrls/tstatusbar.oncreatepanelclass.html - OnDrawPanel comctrls/tstatusbar.ondrawpanel.html - OnHint comctrls/tstatusbar.onhint.html - OnMouseEnter comctrls/tstatusbar.onmouseenter.html - OnMouseLeave comctrls/tstatusbar.onmouseleave.html - OnMouseWheel comctrls/tstatusbar.onmousewheel.html - OnMouseWheelDown comctrls/tstatusbar.onmousewheeldown.html - OnMouseWheelUp comctrls/tstatusbar.onmousewheelup.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - BoundsChanged controls/tcontrol.boundschanged.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - ParentShowHint controls/tcontrol.parentshowhint.html - ShowHint controls/tcontrol.showhint.html - Visible controls/tcontrol.visible.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - TCustomPage comctrls/tcustompage.html - WSRegisterClass - Flags comctrls/tcustompage.flags.html - CMVisibleChanged controls/twincontrol.cmvisiblechanged.html - GetPageIndex comctrls/tcustompage.getpageindex.html - SetPageIndex comctrls/tcustompage.setpageindex.html - GetTabVisible comctrls/tcustompage.gettabvisible.html - DoHide comctrls/tcustompage.dohide.html - DoShow comctrls/tcustompage.doshow.html - RealSetText - Create comctrls/tcustompage.create.html - HandleObjectShouldBeVisible comctrls/tcustompage.handleobjectshouldbevisible.html - VisibleIndex comctrls/tcustompage.visibleindex.html - PageIndex comctrls/tcustompage.pageindex.html - TabVisible comctrls/tcustompage.tabvisible.html - ImageIndex comctrls/tcustompage.imageindex.html - OnHide comctrls/tcustompage.onhide.html - OnShow comctrls/tcustompage.onshow.html - WMPaint controls/twincontrol.wmpaint.html - SetParent - CMHitTest controls/tcontrol.cmhittest.html - DialogChar controls/tcontrol.dialogchar.html - DestroyHandle controls/twincontrol.destroyhandle.html - CanTab controls/tcontrol.cantab.html - IsControlVisible controls/tcontrol.iscontrolvisible.html - Left controls/tcontrol.left.html - Top controls/tcontrol.top.html - Width controls/tcontrol.width.html - Height controls/tcontrol.height.html - TabOrder controls/twincontrol.taborder.html - Visible controls/tcontrol.visible.html - TNBBasePages comctrls/tnbbasepages.html - IndexOfPage comctrls/tnbbasepages.indexofpage.html - InsertPage comctrls/tnbbasepages.insertpage.html - DeletePage comctrls/tnbbasepages.deletepage.html - GetPage comctrls/tnbbasepages.getpage.html - Create comctrls/tnbbasepages.create.html - TNBPages comctrls/tnbpages.html - IndexOfPage comctrls/tnbpages.indexofpage.html - InsertPage comctrls/tnbpages.insertpage.html - DeletePage comctrls/tnbpages.deletepage.html - GetPage comctrls/tnbpages.getpage.html - PageList comctrls/tnbpages.pagelist.html - Notebook comctrls/tnbpages.notebook.html - Create comctrls/tnbpages.create.html - Destroy comctrls/tnbpages.destroy.html - Get - GetCount - GetObject - Put - Clear ms-its:rtl.chm::/classes/tstrings.clear.html - Delete ms-its:rtl.chm::/classes/tstrings.delete.html - Insert ms-its:rtl.chm::/classes/tstrings.insert.html - Move ms-its:rtl.chm::/classes/tstrings.move.html - TNBNoPages comctrls/tnbnopages.html - Get comctrls/tnbnopages.get.html - GetCount comctrls/tnbnopages.getcount.html - IndexOfPage comctrls/tnbnopages.indexofpage.html - GetPage comctrls/tnbnopages.getpage.html - TCustomTabControl comctrls/tcustomtabcontrol.html - PageClass comctrls/tcustomtabcontrol.pageclass.html - GetPageClass comctrls/tcustomtabcontrol.getpageclass.html - GetListClass comctrls/tcustomtabcontrol.getlistclass.html - AddRemovePageHandle comctrls/tcustomtabcontrol.addremovepagehandle.html - CNNotify comctrls/tcustomtabcontrol.cnnotify.html - DoChange comctrls/tcustomtabcontrol.dochange.html - InitializeWnd controls/twincontrol.initializewnd.html - Change comctrls/tcustomtabcontrol.change.html - KeyDown controls/twincontrol.keydown.html - InternalSetPageIndex comctrls/tcustomtabcontrol.internalsetpageindex.html - UpdateTabProperties comctrls/tcustomtabcontrol.updatetabproperties.html - GetControlClassDefaultSize comctrls/tcustomtabcontrol.getcontrolclassdefaultsize.html - ActivePageComponent comctrls/tcustomtabcontrol.activepagecomponent.html - ActivePage comctrls/tcustomtabcontrol.activepage.html - FUnPaged comctrls/tcustomtabcontrol.funpaged.html - GetPage comctrls/tcustomtabcontrol.getpage.html - GetPageCount comctrls/tcustomtabcontrol.getpagecount.html - InsertPage comctrls/tcustomtabcontrol.insertpage.html - RemovePage comctrls/tcustomtabcontrol.removepage.html - CanChange comctrls/tcustomtabcontrol.canchange.html - DisplayRect comctrls/tcustomtabcontrol.displayrect.html - HotTrack comctrls/tcustomtabcontrol.hottrack.html - MultiSelect comctrls/tcustomtabcontrol.multiselect.html - OwnerDraw comctrls/tcustomtabcontrol.ownerdraw.html - RaggedRight comctrls/tcustomtabcontrol.raggedright.html - ScrollOpposite comctrls/tcustomtabcontrol.scrollopposite.html - Style comctrls/tcustomtabcontrol.style.html - Tabs comctrls/tcustomtabcontrol.tabs.html - TabHeight comctrls/tcustomtabcontrol.tabheight.html - TabIndex comctrls/tcustomtabcontrol.tabindex.html - TabWidth comctrls/tcustomtabcontrol.tabwidth.html - OnChange comctrls/tcustomtabcontrol.onchange.html - OnDrawTab comctrls/tcustomtabcontrol.ondrawtab.html - Create comctrls/tcustomtabcontrol.create.html - Destroy comctrls/tcustomtabcontrol.destroy.html - TabIndexAtClientPos comctrls/tcustomtabcontrol.tabindexatclientpos.html - TabRect comctrls/tcustomtabcontrol.tabrect.html - GetImageIndex comctrls/tcustomtabcontrol.getimageindex.html - IndexOf comctrls/tcustomtabcontrol.indexof.html - CustomPage comctrls/tcustomtabcontrol.custompage.html - CanChangePageIndex comctrls/tcustomtabcontrol.canchangepageindex.html - GetMinimumTabWidth comctrls/tcustomtabcontrol.getminimumtabwidth.html - GetMinimumTabHeight comctrls/tcustomtabcontrol.getminimumtabheight.html - GetCapabilities comctrls/tcustomtabcontrol.getcapabilities.html - TabToPageIndex comctrls/tcustomtabcontrol.tabtopageindex.html - PageToTabIndex comctrls/tcustomtabcontrol.pagetotabindex.html - IndexOfTabAt comctrls/tcustomtabcontrol.indexoftabat.html - DoCloseTabClicked comctrls/tcustomtabcontrol.doclosetabclicked.html - Images comctrls/tcustomtabcontrol.images.html - MultiLine comctrls/tcustomtabcontrol.multiline.html - OnChanging comctrls/tcustomtabcontrol.onchanging.html - OnCloseTabClicked comctrls/tcustomtabcontrol.onclosetabclicked.html - OnGetImageIndex comctrls/tcustomtabcontrol.ongetimageindex.html - Options comctrls/tcustomtabcontrol.options.html - Page comctrls/tcustomtabcontrol.page.html - PageCount comctrls/tcustomtabcontrol.pagecount.html - PageIndex comctrls/tcustomtabcontrol.pageindex.html - Pages comctrls/tcustomtabcontrol.pages.html - ShowTabs comctrls/tcustomtabcontrol.showtabs.html - TabPosition comctrls/tcustomtabcontrol.tabposition.html - IsUnpaged comctrls/tcustomtabcontrol.isunpaged.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - CreateWnd controls/twincontrol.createwnd.html - Loaded controls/twincontrol.loaded.html - ReadState - DialogChar controls/tcontrol.dialogchar.html - ShowControl controls/twincontrol.showcontrol.html - Notification controls/tcontrol.notification.html - TabStop controls/twincontrol.tabstop.html - TTabSheet comctrls/ttabsheet.html - Create comctrls/ttabsheet.create.html - Destroy comctrls/ttabsheet.destroy.html - PageControl comctrls/ttabsheet.pagecontrol.html - TabIndex comctrls/ttabsheet.tabindex.html - BorderWidth comctrls/ttabsheet.borderwidth.html - BiDiMode comctrls/ttabsheet.bidimode.html - Font comctrls/ttabsheet.font.html - OnMouseEnter comctrls/ttabsheet.onmouseenter.html - OnMouseLeave comctrls/ttabsheet.onmouseleave.html - OnMouseWheel comctrls/ttabsheet.onmousewheel.html - OnMouseWheelDown comctrls/ttabsheet.onmousewheeldown.html - OnMouseWheelUp comctrls/ttabsheet.onmousewheelup.html - ParentBiDiMode comctrls/ttabsheet.parentbidimode.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Caption controls/tcontrol.caption.html - ChildSizing controls/twincontrol.childsizing.html - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Enabled controls/tcontrol.enabled.html - Height controls/tcontrol.height.html - ImageIndex - Left controls/tcontrol.left.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnHide - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnShow - OnStartDrag controls/tcontrol.onstartdrag.html - PageIndex - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabVisible - Top controls/tcontrol.top.html - Width controls/tcontrol.width.html - TPageControl comctrls/tpagecontrol.html - GetPageClass comctrls/tpagecontrol.getpageclass.html - DoAddDockClient comctrls/tpagecontrol.doadddockclient.html - DockOver comctrls/tpagecontrol.dockover.html - DoRemoveDockClient comctrls/tpagecontrol.doremovedockclient.html - ChildClassAllowed comctrls/tpagecontrol.childclassallowed.html - FindNextPage comctrls/tpagecontrol.findnextpage.html - SelectNextPage comctrls/tpagecontrol.selectnextpage.html - AddTabSheet comctrls/tpagecontrol.addtabsheet.html - ActivePageIndex comctrls/tpagecontrol.activepageindex.html - Pages comctrls/tpagecontrol.pages.html - ActivePage comctrls/tpagecontrol.activepage.html - BiDiMode comctrls/tpagecontrol.bidimode.html - MultiLine comctrls/tcustomtabcontrol.multiline.html - ParentBiDiMode comctrls/tpagecontrol.parentbidimode.html - ShowTabs comctrls/tcustomtabcontrol.showtabs.html - TabIndex comctrls/tpagecontrol.tabindex.html - OnChange comctrls/tpagecontrol.onchange.html - OnChanging comctrls/tpagecontrol.onchanging.html - OnCloseTabClicked comctrls/tcustomtabcontrol.onclosetabclicked.html - OnMouseEnter comctrls/tpagecontrol.onmouseenter.html - OnMouseLeave comctrls/tpagecontrol.onmouseleave.html - OnMouseWheel comctrls/tpagecontrol.onmousewheel.html - OnMouseWheelDown comctrls/tpagecontrol.onmousewheeldown.html - OnMouseWheelUp comctrls/tpagecontrol.onmousewheelup.html - Options comctrls/tcustomtabcontrol.options.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DoUndockClientMsg controls/twincontrol.doundockclientmsg.html - OnGetDockCaption controls/twincontrol.ongetdockcaption.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - DockSite controls/twincontrol.docksite.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Images - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabPosition - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetImageIndex - OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUnDock controls/twincontrol.onundock.html - TTabControlStrings comctrls/ttabcontrolstrings.html - GetTabIndex comctrls/ttabcontrolstrings.gettabindex.html - SetHotTrack comctrls/ttabcontrolstrings.sethottrack.html - SetImages comctrls/ttabcontrolstrings.setimages.html - SetMultiLine comctrls/ttabcontrolstrings.setmultiline.html - SetMultiSelect comctrls/ttabcontrolstrings.setmultiselect.html - SetOwnerDraw comctrls/ttabcontrolstrings.setownerdraw.html - SetRaggedRight comctrls/ttabcontrolstrings.setraggedright.html - SetScrollOpposite comctrls/ttabcontrolstrings.setscrollopposite.html - SetTabHeight comctrls/ttabcontrolstrings.settabheight.html - SetTabIndex comctrls/ttabcontrolstrings.settabindex.html - SetTabWidth comctrls/ttabcontrolstrings.settabwidth.html - Create comctrls/ttabcontrolstrings.create.html - GetHitTestInfoAt comctrls/ttabcontrolstrings.gethittestinfoat.html - GetSize comctrls/ttabcontrolstrings.getsize.html - IndexOfTabAt comctrls/ttabcontrolstrings.indexoftabat.html - RowCount comctrls/ttabcontrolstrings.rowcount.html - TabRect comctrls/ttabcontrolstrings.tabrect.html - ImageListChange comctrls/ttabcontrolstrings.imagelistchange.html - ScrollTabs comctrls/ttabcontrolstrings.scrolltabs.html - TabControlBoundsChange comctrls/ttabcontrolstrings.tabcontrolboundschange.html - UpdateTabImages comctrls/ttabcontrolstrings.updatetabimages.html - BeginUpdate comctrls/ttabcontrolstrings.beginupdate.html - EndUpdate comctrls/ttabcontrolstrings.endupdate.html - IsUpdating comctrls/ttabcontrolstrings.isupdating.html - TabControl comctrls/ttabcontrolstrings.tabcontrol.html - TabIndex comctrls/ttabcontrolstrings.tabindex.html - HotTrack comctrls/ttabcontrolstrings.hottrack.html - Images comctrls/ttabcontrolstrings.images.html - MultiLine comctrls/ttabcontrolstrings.multiline.html - MultiSelect comctrls/ttabcontrolstrings.multiselect.html - OwnerDraw comctrls/ttabcontrolstrings.ownerdraw.html - RaggedRight comctrls/ttabcontrolstrings.raggedright.html - ScrollOpposite comctrls/ttabcontrolstrings.scrollopposite.html - TabHeight comctrls/ttabcontrolstrings.tabheight.html - TabWidth comctrls/ttabcontrolstrings.tabwidth.html - TNoteBookStringsTabControl comctrls/tnotebookstringstabcontrol.html - FHandelCreated comctrls/tnotebookstringstabcontrol.fhandelcreated.html - CreateHandle comctrls/tnotebookstringstabcontrol.createhandle.html - WSRegisterClass - TTabControlNoteBookStrings comctrls/ttabcontrolnotebookstrings.html - GetInternalTabControllClass comctrls/ttabcontrolnotebookstrings.getinternaltabcontrollclass.html - Get comctrls/ttabcontrolnotebookstrings.get.html - GetObject comctrls/ttabcontrolnotebookstrings.getobject.html - GetTabPosition comctrls/ttabcontrolnotebookstrings.gettabposition.html - NBChanging comctrls/ttabcontrolnotebookstrings.nbchanging.html - NBGetImageIndex comctrls/ttabcontrolnotebookstrings.nbgetimageindex.html - NBPageChanged comctrls/ttabcontrolnotebookstrings.nbpagechanged.html - NBHandleCreated comctrls/ttabcontrolnotebookstrings.nbhandlecreated.html - Put comctrls/ttabcontrolnotebookstrings.put.html - PutObject comctrls/ttabcontrolnotebookstrings.putobject.html - SetImages comctrls/ttabcontrolnotebookstrings.setimages.html - SetMultiLine comctrls/ttabcontrolstrings.setmultiline.html - SetUpdateState comctrls/ttabcontrolnotebookstrings.setupdatestate.html - SetTabHeight comctrls/ttabcontrolnotebookstrings.settabheight.html - SetTabPosition comctrls/ttabcontrolnotebookstrings.settabposition.html - SetTabWidth comctrls/ttabcontrolnotebookstrings.settabwidth.html - Create comctrls/ttabcontrolnotebookstrings.create.html - Destroy comctrls/ttabcontrolnotebookstrings.destroy.html - Clear comctrls/ttabcontrolnotebookstrings.clear.html - Delete comctrls/ttabcontrolnotebookstrings.delete.html - Insert comctrls/ttabcontrolnotebookstrings.insert.html - TabPosition comctrls/ttabcontrolnotebookstrings.tabposition.html - Style comctrls/ttabcontrolnotebookstrings.style.html - NoteBook comctrls/ttabcontrolnotebookstrings.notebook.html - GetCount - GetTabIndex comctrls/ttabcontrolstrings.gettabindex.html - SetTabIndex comctrls/ttabcontrolstrings.settabindex.html - GetSize comctrls/ttabcontrolstrings.getsize.html - TabControlBoundsChange comctrls/ttabcontrolstrings.tabcontrolboundschange.html - IndexOfTabAt comctrls/ttabcontrolstrings.indexoftabat.html - TTabControl comctrls/ttabcontrol.html - AddRemovePageHandle comctrls/tcustomtabcontrol.addremovepagehandle.html - CanChange comctrls/tcustomtabcontrol.canchange.html - CanShowTab comctrls/ttabcontrol.canshowtab.html - Change comctrls/tcustomtabcontrol.change.html - CreateWnd - DestroyHandle comctrls/ttabcontrol.destroyhandle.html - Notification - SetTabIndex comctrls/ttabcontrol.settabindex.html - UpdateTabImages comctrls/ttabcontrol.updatetabimages.html - ImageListChange comctrls/ttabcontrol.imagelistchange.html - DoSetBounds comctrls/ttabcontrol.dosetbounds.html - GetControlClassDefaultSize comctrls/tcustomtabcontrol.getcontrolclassdefaultsize.html - PaintWindow comctrls/ttabcontrol.paintwindow.html - Paint comctrls/ttabcontrol.paint.html - AdjustDisplayRectWithBorder comctrls/ttabcontrol.adjustdisplayrectwithborder.html - AdjustClientRect comctrls/ttabcontrol.adjustclientrect.html - CreateTabNoteBookStrings comctrls/ttabcontrol.createtabnotebookstrings.html - Create comctrls/tcustomtabcontrol.create.html - Destroy comctrls/tcustomtabcontrol.destroy.html - IndexOfTabAt comctrls/tcustomtabcontrol.indexoftabat.html - GetHitTestInfoAt comctrls/ttabcontrol.gethittestinfoat.html - GetImageIndex comctrls/tcustomtabcontrol.getimageindex.html - IndexOfTabWithCaption comctrls/ttabcontrol.indexoftabwithcaption.html - TabRect comctrls/tcustomtabcontrol.tabrect.html - RowCount comctrls/ttabcontrol.rowcount.html - ScrollTabs comctrls/ttabcontrol.scrolltabs.html - BeginUpdate comctrls/ttabcontrol.beginupdate.html - EndUpdate comctrls/ttabcontrol.endupdate.html - IsUpdating comctrls/ttabcontrol.isupdating.html - BiDiMode comctrls/ttabcontrol.bidimode.html - OnGetSiteInfo comctrls/ttabcontrol.ongetsiteinfo.html - OnMouseEnter comctrls/ttabcontrol.onmouseenter.html - OnMouseLeave comctrls/ttabcontrol.onmouseleave.html - OnMouseWheel comctrls/ttabcontrol.onmousewheel.html - OnMouseWheelDown comctrls/ttabcontrol.onmousewheeldown.html - OnMouseWheelUp comctrls/ttabcontrol.onmousewheelup.html - ParentBiDiMode comctrls/ttabcontrol.parentbidimode.html - DisplayRect comctrls/tcustomtabcontrol.displayrect.html - HotTrack comctrls/tcustomtabcontrol.hottrack.html - Images comctrls/tcustomtabcontrol.images.html - MultiLine comctrls/tcustomtabcontrol.multiline.html - MultiSelect comctrls/tcustomtabcontrol.multiselect.html - OnChange comctrls/tcustomtabcontrol.onchange.html - OnChanging comctrls/tcustomtabcontrol.onchanging.html - OnDrawTab comctrls/tcustomtabcontrol.ondrawtab.html - OnGetImageIndex comctrls/tcustomtabcontrol.ongetimageindex.html - OwnerDraw comctrls/tcustomtabcontrol.ownerdraw.html - RaggedRight comctrls/tcustomtabcontrol.raggedright.html - ScrollOpposite comctrls/tcustomtabcontrol.scrollopposite.html - Style comctrls/tcustomtabcontrol.style.html - TabHeight comctrls/tcustomtabcontrol.tabheight.html - TabPosition comctrls/tcustomtabcontrol.tabposition.html - TabWidth comctrls/tcustomtabcontrol.tabwidth.html - TabIndex comctrls/tcustomtabcontrol.tabindex.html - Tabs comctrls/tcustomtabcontrol.tabs.html - TabStop controls/twincontrol.tabstop.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - DockSite controls/twincontrol.docksite.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDockDrop controls/twincontrol.ondockdrop.html - OnDockOver controls/twincontrol.ondockover.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUnDock controls/twincontrol.onundock.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - Visible controls/tcontrol.visible.html - TIconOptions comctrls/ticonoptions.html - AssignTo comctrls/ticonoptions.assignto.html - GetOwner comctrls/ticonoptions.getowner.html - Create comctrls/ticonoptions.create.html - Arrangement comctrls/ticonoptions.arrangement.html - AutoArrange comctrls/ticonoptions.autoarrange.html - WrapText comctrls/ticonoptions.wraptext.html - TListItem comctrls/tlistitem.html - IsEqual comctrls/tlistitem.isequal.html - IsOwnerData comctrls/tlistitem.isownerdata.html - GetCheckedInternal comctrls/tlistitem.getcheckedinternal.html - GetOwner comctrls/tlistitem.getowner.html - Assign comctrls/tlistitem.assign.html - Create comctrls/tlistitem.create.html - Destroy comctrls/tlistitem.destroy.html - Delete comctrls/tlistitem.delete.html - MakeVisible comctrls/tlistitem.makevisible.html - DisplayRect comctrls/tlistitem.displayrect.html - DisplayRectSubItem comctrls/tlistitem.displayrectsubitem.html - EditCaption comctrls/tlistitem.editcaption.html - Caption comctrls/tlistitem.caption.html - Checked comctrls/tlistitem.checked.html - Cut comctrls/tlistitem.cut.html - Data comctrls/tlistitem.data.html - DropTarget comctrls/tlistitem.droptarget.html - Focused comctrls/tlistitem.focused.html - Index comctrls/tlistitem.index.html - ImageIndex comctrls/tlistitem.imageindex.html - Left comctrls/tlistitem.left.html - ListView comctrls/tlistitem.listview.html - Owner comctrls/tlistitem.owner.html - Position comctrls/tlistitem.position.html - Selected comctrls/tlistitem.selected.html - StateIndex comctrls/tlistitem.stateindex.html - SubItems comctrls/tlistitem.subitems.html - SubItemImages comctrls/tlistitem.subitemimages.html - Top comctrls/tlistitem.top.html - TOwnerDataListItem comctrls/townerdatalistitem.html - IsOwnerData comctrls/townerdatalistitem.isownerdata.html - SetDataIndex comctrls/townerdatalistitem.setdataindex.html - SetOwner comctrls/townerdatalistitem.setowner.html - TListItemsEnumerator comctrls/tlistitemsenumerator.html - Create comctrls/tlistitemsenumerator.create.html - MoveNext comctrls/tlistitemsenumerator.movenext.html - Current comctrls/tlistitemsenumerator.current.html - TListItems comctrls/tlistitems.html - DefineProperties comctrls/tlistitems.defineproperties.html - GetCount comctrls/tlistitems.getcount.html - GetItem comctrls/tlistitems.getitem.html - GetOwner comctrls/tlistitems.getowner.html - WSCreateItems comctrls/tlistitems.wscreateitems.html - DoFinalizeWnd comctrls/tlistitems.dofinalizewnd.html - SetCount comctrls/tlistitems.setcount.html - SetItem comctrls/tlistitems.setitem.html - ClearSelection comctrls/tlistitems.clearselection.html - SelectAll comctrls/tlistitems.selectall.html - Add comctrls/tlistitems.add.html - AddItem comctrls/tlistitems.additem.html - BeginUpdate comctrls/tlistitems.beginupdate.html - Clear comctrls/tlistitems.clear.html - Create comctrls/tlistitems.create.html - Destroy comctrls/tlistitems.destroy.html - Delete comctrls/tlistitems.delete.html - EndUpdate comctrls/tlistitems.endupdate.html - Exchange comctrls/tlistitems.exchange.html - Move comctrls/tlistitems.move.html - FindCaption comctrls/tlistitems.findcaption.html - FindData comctrls/tlistitems.finddata.html - GetEnumerator comctrls/tlistitems.getenumerator.html - IndexOf comctrls/tlistitems.indexof.html - Insert comctrls/tlistitems.insert.html - InsertItem comctrls/tlistitems.insertitem.html - Flags comctrls/tlistitems.flags.html - Count comctrls/tlistitems.count.html - Item comctrls/tlistitems.item.html - Owner comctrls/tlistitems.owner.html - TOwnerDataListItems comctrls/townerdatalistitems.html - GetCount comctrls/tlistitems.getcount.html - SetCount comctrls/townerdatalistitems.setcount.html - GetItem comctrls/tlistitems.getitem.html - Clear comctrls/tlistitems.clear.html - TListColumn comctrls/tlistcolumn.html - SetIndex comctrls/tlistcolumn.setindex.html - GetDisplayName comctrls/tlistcolumn.getdisplayname.html - GetStoredWidth comctrls/tlistcolumn.getstoredwidth.html - Create comctrls/tlistcolumn.create.html - Destroy comctrls/tlistcolumn.destroy.html - Assign comctrls/tlistcolumn.assign.html - WidthType comctrls/tlistcolumn.widthtype.html - Alignment comctrls/tlistcolumn.alignment.html - AutoSize comctrls/tlistcolumn.autosize.html - Caption comctrls/tlistcolumn.caption.html - ImageIndex comctrls/tlistcolumn.imageindex.html - MaxWidth comctrls/tlistcolumn.maxwidth.html - MinWidth comctrls/tlistcolumn.minwidth.html - Tag comctrls/tlistcolumn.tag.html - Visible comctrls/tlistcolumn.visible.html - Width comctrls/tlistcolumn.width.html - TListColumns comctrls/tlistcolumns.html - GetOwner comctrls/tlistcolumns.getowner.html - Create comctrls/tlistcolumns.create.html - Destroy comctrls/tlistcolumns.destroy.html - Update comctrls/tlistcolumns.update.html - Add comctrls/tlistcolumns.add.html - Assign comctrls/tlistcolumns.assign.html - Owner ms-its:rtl.chm::/classes/tcollection.owner.html - Items ms-its:rtl.chm::/classes/tcollection.items.html - TCustomListViewEditor comctrls/tcustomlistvieweditor.html - DoExit stdctrls/tcustomedit.doexit.html - Create stdctrls/tcustomedit.create.html - Item comctrls/tcustomlistvieweditor.item.html - TCustomListView comctrls/tcustomlistview.html - ItemDeleted comctrls/tcustomlistview.itemdeleted.html - ItemInserted comctrls/tcustomlistview.iteminserted.html - GetControlClassDefaultSize comctrls/tcustomlistview.getcontrolclassdefaultsize.html - InitializeWnd comctrls/tcustomlistview.initializewnd.html - FinalizeWnd comctrls/tcustomlistview.finalizewnd.html - CreateListItem comctrls/tcustomlistview.createlistitem.html - CreateListItems comctrls/tcustomlistview.createlistitems.html - CanEdit comctrls/tcustomlistview.canedit.html - Change comctrls/tcustomlistview.change.html - ColClick comctrls/tcustomlistview.colclick.html - Delete comctrls/tcustomlistview.delete.html - DoDeletion comctrls/tcustomlistview.dodeletion.html - DoInsert comctrls/tcustomlistview.doinsert.html - DoItemChecked comctrls/tcustomlistview.doitemchecked.html - DoSelectItem comctrls/tcustomlistview.doselectitem.html - DoSetBounds controls/twincontrol.dosetbounds.html - DoEndEdit comctrls/tcustomlistview.doendedit.html - InsertItem comctrls/tcustomlistview.insertitem.html - ImageChanged comctrls/tcustomlistview.imagechanged.html - Notification comctrls/tcustomlistview.notification.html - Sort comctrls/tcustomlistview.sort.html - IsCustomDrawn comctrls/tcustomlistview.iscustomdrawn.html - CustomDraw comctrls/tcustomlistview.customdraw.html - CustomDrawItem comctrls/tcustomlistview.customdrawitem.html - CustomDrawSubItem comctrls/tcustomlistview.customdrawsubitem.html - IntfCustomDraw comctrls/tcustomlistview.intfcustomdraw.html - GetUpdateCount comctrls/tcustomlistview.getupdatecount.html - DrawItem comctrls/tcustomlistview.drawitem.html - DoGetOwnerData comctrls/tcustomlistview.dogetownerdata.html - DoOwnerDataHint comctrls/tcustomlistview.doownerdatahint.html - DoOwnerDataStateChange comctrls/tcustomlistview.doownerdatastatechange.html - DblClick comctrls/tcustomlistview.dblclick.html - KeyDown controls/twincontrol.keydown.html - AllocBy comctrls/tcustomlistview.allocby.html - AutoSort comctrls/tcustomlistview.autosort.html - AutoWidthLastColumn comctrls/tcustomlistview.autowidthlastcolumn.html - ColumnClick comctrls/tcustomlistview.columnclick.html - Columns comctrls/tcustomlistview.columns.html - DefaultItemHeight comctrls/tcustomlistview.defaultitemheight.html - HideSelection comctrls/tcustomlistview.hideselection.html - HoverTime comctrls/tcustomlistview.hovertime.html - LargeImages comctrls/tcustomlistview.largeimages.html - OwnerDraw comctrls/tcustomlistview.ownerdraw.html - ScrollBars comctrls/tcustomlistview.scrollbars.html - ShowColumnHeaders comctrls/tcustomlistview.showcolumnheaders.html - ShowWorkAreas comctrls/tcustomlistview.showworkareas.html - SmallImages comctrls/tcustomlistview.smallimages.html - SortType comctrls/tcustomlistview.sorttype.html - SortColumn comctrls/tcustomlistview.sortcolumn.html - SortDirection comctrls/tcustomlistview.sortdirection.html - StateImages comctrls/tcustomlistview.stateimages.html - ToolTips comctrls/tcustomlistview.tooltips.html - ViewStyle comctrls/tcustomlistview.viewstyle.html - OnChange comctrls/tcustomlistview.onchange.html - OnColumnClick comctrls/tcustomlistview.oncolumnclick.html - OnCompare comctrls/tcustomlistview.oncompare.html - OnCreateItemClass comctrls/tcustomlistview.oncreateitemclass.html - OnData comctrls/tcustomlistview.ondata.html - OnDataFind comctrls/tcustomlistview.ondatafind.html - OnDataHint comctrls/tcustomlistview.ondatahint.html - OnDataStateChange comctrls/tcustomlistview.ondatastatechange.html - OnDeletion comctrls/tcustomlistview.ondeletion.html - OnEdited comctrls/tcustomlistview.onedited.html - OnEditing comctrls/tcustomlistview.onediting.html - OnInsert comctrls/tcustomlistview.oninsert.html - OnItemChecked comctrls/tcustomlistview.onitemchecked.html - OnSelectItem comctrls/tcustomlistview.onselectitem.html - OnCustomDraw comctrls/tcustomlistview.oncustomdraw.html - OnCustomDrawItem comctrls/tcustomlistview.oncustomdrawitem.html - OnCustomDrawSubItem comctrls/tcustomlistview.oncustomdrawsubitem.html - OnDrawItem comctrls/tcustomlistview.ondrawitem.html - OnAdvancedCustomDraw comctrls/tcustomlistview.onadvancedcustomdraw.html - OnAdvancedCustomDrawItem comctrls/tcustomlistview.onadvancedcustomdrawitem.html - OnAdvancedCustomDrawSubItem comctrls/tcustomlistview.onadvancedcustomdrawsubitem.html - Create comctrls/tcustomlistview.create.html - Destroy comctrls/tcustomlistview.destroy.html - AddItem comctrls/tcustomlistview.additem.html - AlphaSort comctrls/tcustomlistview.alphasort.html - BeginUpdate comctrls/tcustomlistview.beginupdate.html - Clear comctrls/tcustomlistview.clear.html - EndUpdate comctrls/tcustomlistview.endupdate.html - Repaint - FindCaption comctrls/tcustomlistview.findcaption.html - FindData comctrls/tcustomlistview.finddata.html - GetHitTestInfoAt comctrls/tcustomlistview.gethittestinfoat.html - GetItemAt comctrls/tcustomlistview.getitemat.html - GetNearestItem comctrls/tcustomlistview.getnearestitem.html - GetNextItem comctrls/tcustomlistview.getnextitem.html - ClearSelection comctrls/tcustomlistview.clearselection.html - SelectAll comctrls/tcustomlistview.selectall.html - IsEditing comctrls/tcustomlistview.isediting.html - BoundingRect comctrls/tcustomlistview.boundingrect.html - Canvas comctrls/tcustomlistview.canvas.html - Checkboxes comctrls/tcustomlistview.checkboxes.html - Column comctrls/tcustomlistview.column.html - ColumnCount comctrls/tcustomlistview.columncount.html - DropTarget comctrls/tcustomlistview.droptarget.html - FlatScrollBars comctrls/tcustomlistview.flatscrollbars.html - FullDrag comctrls/tcustomlistview.fulldrag.html - GridLines comctrls/tcustomlistview.gridlines.html - HotTrack comctrls/tcustomlistview.hottrack.html - HotTrackStyles comctrls/tcustomlistview.hottrackstyles.html - IconOptions comctrls/tcustomlistview.iconoptions.html - ItemFocused comctrls/tcustomlistview.itemfocused.html - ItemIndex comctrls/tcustomlistview.itemindex.html - Items comctrls/tcustomlistview.items.html - MultiSelect comctrls/tcustomlistview.multiselect.html - OwnerData comctrls/tcustomlistview.ownerdata.html - ReadOnly comctrls/tcustomlistview.readonly.html - RowSelect comctrls/tcustomlistview.rowselect.html - SelCount comctrls/tcustomlistview.selcount.html - Selected comctrls/tcustomlistview.selected.html - TopItem comctrls/tcustomlistview.topitem.html - ViewOrigin comctrls/tcustomlistview.vieworigin.html - VisibleRowCount comctrls/tcustomlistview.visiblerowcount.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DestroyWnd controls/twincontrol.destroywnd.html - BeginAutoDrag controls/tcontrol.beginautodrag.html - Loaded controls/twincontrol.loaded.html - BorderStyle controls/twincontrol.borderstyle.html - TabStop controls/twincontrol.tabstop.html - TListView comctrls/tlistview.html - AllocBy comctrls/tcustomlistview.allocby.html - AutoSort comctrls/tlistview.autosort.html - AutoWidthLastColumn comctrls/tlistview.autowidthlastcolumn.html - DragKind comctrls/tlistview.dragkind.html - GridLines comctrls/tcustomlistview.gridlines.html - HideSelection comctrls/tlistview.hideselection.html - IconOptions comctrls/tlistview.iconoptions.html - OwnerData comctrls/tcustomlistview.ownerdata.html - OwnerDraw comctrls/tcustomlistview.ownerdraw.html - SortDirection comctrls/tlistview.sortdirection.html - OnCreateItemClass comctrls/tlistview.oncreateitemclass.html - OnData comctrls/tlistview.ondata.html - OnDataFind comctrls/tlistview.ondatafind.html - OnDataHint comctrls/tlistview.ondatahint.html - OnDataStateChange comctrls/tlistview.ondatastatechange.html - OnDrawItem comctrls/tlistview.ondrawitem.html - OnEdited comctrls/tlistview.onedited.html - OnEditing comctrls/tlistview.onediting.html - OnEndDock comctrls/tlistview.onenddock.html - OnEnter comctrls/tlistview.onenter.html - OnExit comctrls/tlistview.onexit.html - OnInsert comctrls/tcustomlistview.oninsert.html - OnItemChecked comctrls/tlistview.onitemchecked.html - OnMouseEnter comctrls/tlistview.onmouseenter.html - OnMouseLeave comctrls/tlistview.onmouseleave.html - OnMouseWheel comctrls/tlistview.onmousewheel.html - OnMouseWheelDown comctrls/tlistview.onmousewheeldown.html - OnMouseWheelUp comctrls/tlistview.onmousewheelup.html - OnStartDock comctrls/tlistview.onstartdock.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - BorderWidth controls/twincontrol.borderwidth.html - Checkboxes comctrls/tcustomlistview.checkboxes.html - Color controls/tcontrol.color.html - Columns comctrls/tcustomlistview.columns.html - ColumnClick comctrls/tcustomlistview.columnclick.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Items comctrls/tcustomlistview.items.html - LargeImages comctrls/tcustomlistview.largeimages.html - MultiSelect comctrls/tcustomlistview.multiselect.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly comctrls/tcustomlistview.readonly.html - RowSelect comctrls/tcustomlistview.rowselect.html - ScrollBars comctrls/tcustomlistview.scrollbars.html - ShowColumnHeaders comctrls/tcustomlistview.showcolumnheaders.html - ShowHint controls/tcontrol.showhint.html - SmallImages comctrls/tcustomlistview.smallimages.html - SortColumn comctrls/tcustomlistview.sortcolumn.html - SortType comctrls/tcustomlistview.sorttype.html - StateImages comctrls/tcustomlistview.stateimages.html - TabStop controls/twincontrol.tabstop.html - TabOrder controls/twincontrol.taborder.html - ToolTips comctrls/tcustomlistview.tooltips.html - Visible controls/tcontrol.visible.html - ViewStyle comctrls/tcustomlistview.viewstyle.html - OnAdvancedCustomDraw comctrls/tcustomlistview.onadvancedcustomdraw.html - OnAdvancedCustomDrawItem comctrls/tcustomlistview.onadvancedcustomdrawitem.html - OnAdvancedCustomDrawSubItem comctrls/tcustomlistview.onadvancedcustomdrawsubitem.html - OnChange comctrls/tcustomlistview.onchange.html - OnClick controls/tcontrol.onclick.html - OnColumnClick comctrls/tcustomlistview.oncolumnclick.html - OnCompare comctrls/tcustomlistview.oncompare.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnCustomDraw comctrls/tcustomlistview.oncustomdraw.html - OnCustomDrawItem comctrls/tcustomlistview.oncustomdrawitem.html - OnCustomDrawSubItem comctrls/tcustomlistview.oncustomdrawsubitem.html - OnDblClick controls/tcontrol.ondblclick.html - OnDeletion comctrls/tcustomlistview.ondeletion.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnSelectItem comctrls/tcustomlistview.onselectitem.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TCustomProgressBar comctrls/tcustomprogressbar.html - ApplyChanges comctrls/tcustomprogressbar.applychanges.html - InitializeWnd comctrls/tcustomprogressbar.initializewnd.html - Loaded comctrls/tcustomprogressbar.loaded.html - GetControlClassDefaultSize comctrls/tcustomprogressbar.getcontrolclassdefaultsize.html - Create comctrls/tcustomprogressbar.create.html - StepIt comctrls/tcustomprogressbar.stepit.html - StepBy comctrls/tcustomprogressbar.stepby.html - Max comctrls/tcustomprogressbar.max.html - Min comctrls/tcustomprogressbar.min.html - Orientation comctrls/tcustomprogressbar.orientation.html - Position comctrls/tcustomprogressbar.position.html - Smooth comctrls/tcustomprogressbar.smooth.html - Step comctrls/tcustomprogressbar.step.html - Style comctrls/tcustomprogressbar.style.html - BarShowText comctrls/tcustomprogressbar.barshowtext.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TProgressBar comctrls/tprogressbar.html - OnMouseEnter comctrls/tprogressbar.onmouseenter.html - OnMouseLeave comctrls/tprogressbar.onmouseleave.html - OnMouseWheel comctrls/tprogressbar.onmousewheel.html - OnMouseWheelDown comctrls/tprogressbar.onmousewheeldown.html - OnMouseWheelUp comctrls/tprogressbar.onmousewheelup.html - Style comctrls/tprogressbar.style.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderWidth controls/twincontrol.borderwidth.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Hint controls/tcontrol.hint.html - Max comctrls/tcustomprogressbar.max.html - Min comctrls/tcustomprogressbar.min.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - Orientation comctrls/tcustomprogressbar.orientation.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - Position comctrls/tcustomprogressbar.position.html - ShowHint controls/tcontrol.showhint.html - Smooth comctrls/tcustomprogressbar.smooth.html - Step comctrls/tcustomprogressbar.step.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - BarShowText comctrls/tcustomprogressbar.barshowtext.html - TCustomUpDown comctrls/tcustomupdown.html - AssociateKeyDown comctrls/tcustomupdown.associatekeydown.html - OnAssociateChangeBounds comctrls/tcustomupdown.onassociatechangebounds.html - OnAssociateChangeEnabled comctrls/tcustomupdown.onassociatechangeenabled.html - OnAssociateChangeVisible comctrls/tcustomupdown.onassociatechangevisible.html - DoSetBounds comctrls/tcustomupdown.dosetbounds.html - SetEnabled comctrls/tcustomupdown.setenabled.html - GetControlClassDefaultSize comctrls/tcustomupdown.getcontrolclassdefaultsize.html - CalculatePreferredSize comctrls/tcustomupdown.calculatepreferredsize.html - CanChange comctrls/tcustomupdown.canchange.html - Notification comctrls/tcustomupdown.notification.html - Click comctrls/tcustomupdown.click.html - AlignButton comctrls/tcustomupdown.alignbutton.html - ArrowKeys comctrls/tcustomupdown.arrowkeys.html - Associate comctrls/tcustomupdown.associate.html - Increment comctrls/tcustomupdown.increment.html - Max comctrls/tcustomupdown.max.html - Min comctrls/tcustomupdown.min.html - OnChanging comctrls/tcustomupdown.onchanging.html - OnChangingEx comctrls/tcustomupdown.onchangingex.html - OnClick comctrls/tcustomupdown.onclick.html - Orientation comctrls/tcustomupdown.orientation.html - Position comctrls/tcustomupdown.position.html - Thousands comctrls/tcustomupdown.thousands.html - Wrap comctrls/tcustomupdown.wrap.html - Create comctrls/tcustomupdown.create.html - Destroy comctrls/tcustomupdown.destroy.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TUpDown comctrls/tupdown.html - OnChangingEx comctrls/tupdown.onchangingex.html - OnMouseEnter comctrls/tupdown.onmouseenter.html - OnMouseLeave comctrls/tupdown.onmouseleave.html - OnMouseWheel comctrls/tupdown.onmousewheel.html - OnMouseWheelDown comctrls/tupdown.onmousewheeldown.html - OnMouseWheelUp comctrls/tupdown.onmousewheelup.html - AlignButton comctrls/tcustomupdown.alignbutton.html - Anchors controls/tcontrol.anchors.html - ArrowKeys comctrls/tcustomupdown.arrowkeys.html - Associate comctrls/tcustomupdown.associate.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - Enabled controls/tcontrol.enabled.html - Hint controls/tcontrol.hint.html - Increment comctrls/tcustomupdown.increment.html - Max comctrls/tcustomupdown.max.html - Min comctrls/tcustomupdown.min.html - OnChanging comctrls/tcustomupdown.onchanging.html - OnClick comctrls/tcustomupdown.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - Orientation comctrls/tcustomupdown.orientation.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - Position comctrls/tcustomupdown.position.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Thousands comctrls/tcustomupdown.thousands.html - Visible controls/tcontrol.visible.html - Wrap comctrls/tcustomupdown.wrap.html - TToolButtonActionLink comctrls/ttoolbuttonactionlink.html - AssignClient comctrls/ttoolbuttonactionlink.assignclient.html - SetChecked comctrls/ttoolbuttonactionlink.setchecked.html - SetImageIndex comctrls/ttoolbuttonactionlink.setimageindex.html - IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html - IsImageIndexLinked actnlist/tactionlink.isimageindexlinked.html - TToolButton comctrls/ttoolbutton.html - cDefSeparatorWidth comctrls/ttoolbutton.cdefseparatorwidth.html - cDefDividerWidth comctrls/ttoolbutton.cdefdividerwidth.html - FToolBar comctrls/ttoolbutton.ftoolbar.html - CopyPropertiesFromMenuItem comctrls/ttoolbutton.copypropertiesfrommenuitem.html - GetActionLinkClass comctrls/ttoolbutton.getactionlinkclass.html - ActionChange comctrls/ttoolbutton.actionchange.html - AssignTo comctrls/ttoolbutton.assignto.html - BeginUpdate comctrls/ttoolbutton.beginupdate.html - EndUpdate comctrls/ttoolbutton.endupdate.html - GetControlClassDefaultSize comctrls/ttoolbutton.getcontrolclassdefaultsize.html - RefreshControl comctrls/ttoolbutton.refreshcontrol.html - SetToolBar comctrls/ttoolbutton.settoolbar.html - UpdateControl comctrls/ttoolbutton.updatecontrol.html - GetButtonDrawDetail comctrls/ttoolbutton.getbuttondrawdetail.html - UpdateVisibleToolbar comctrls/ttoolbutton.updatevisibletoolbar.html - GroupAllUpAllowed comctrls/ttoolbutton.groupallupallowed.html - SetAutoSize comctrls/ttoolbutton.setautosize.html - RealSetText comctrls/ttoolbutton.realsettext.html - Create comctrls/ttoolbutton.create.html - CheckMenuDropdown comctrls/ttoolbutton.checkmenudropdown.html - GetCurrentIcon comctrls/ttoolbutton.getcurrenticon.html - Index comctrls/ttoolbutton.index.html - AllowAllUp comctrls/ttoolbutton.allowallup.html - Down comctrls/ttoolbutton.down.html - DropdownMenu comctrls/ttoolbutton.dropdownmenu.html - Grouped comctrls/ttoolbutton.grouped.html - ImageIndex comctrls/ttoolbutton.imageindex.html - Indeterminate comctrls/ttoolbutton.indeterminate.html - Marked comctrls/ttoolbutton.marked.html - MenuItem comctrls/ttoolbutton.menuitem.html - OnMouseEnter comctrls/ttoolbutton.onmouseenter.html - OnMouseLeave comctrls/ttoolbutton.onmouseleave.html - OnMouseWheel comctrls/ttoolbutton.onmousewheel.html - OnMouseWheelDown comctrls/ttoolbutton.onmousewheeldown.html - OnMouseWheelUp comctrls/ttoolbutton.onmousewheelup.html - ShowCaption comctrls/ttoolbutton.showcaption.html - Style comctrls/ttoolbutton.style.html - Wrap comctrls/ttoolbutton.wrap.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - MouseDown controls/tcontrol.mousedown.html - MouseUp controls/tcontrol.mouseup.html - MouseEnter controls/tcontrol.mouseenter.html - MouseLeave controls/tcontrol.mouseleave.html - Notification - Paint controls/tgraphiccontrol.paint.html - TextChanged controls/tcontrol.textchanged.html - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - Loaded - SetParent - DialogChar controls/tcontrol.dialogchar.html - Click controls/tcontrol.click.html - GetPreferredSize controls/tcontrol.getpreferredsize.html - Action controls/tcontrol.action.html - AutoSize controls/tcontrol.autosize.html - Caption controls/tcontrol.caption.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Height controls/tcontrol.height.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - Visible controls/tcontrol.visible.html - Width controls/tcontrol.width.html - TToolBarEnumerator comctrls/ttoolbarenumerator.html - Create comctrls/ttoolbarenumerator.create.html - MoveNext comctrls/ttoolbarenumerator.movenext.html - Current comctrls/ttoolbarenumerator.current.html - TToolBar comctrls/ttoolbar.html - cDefButtonWidth comctrls/ttoolbar.cdefbuttonwidth.html - cDefButtonHeight comctrls/ttoolbar.cdefbuttonheight.html - FPrevVertical comctrls/ttoolbar.fprevvertical.html - IsVertical comctrls/ttoolbar.isvertical.html - GetControlClassDefaultSize comctrls/ttoolbar.getcontrolclassdefaultsize.html - DoAutoSize comctrls/ttoolbar.doautosize.html - CheckMenuDropdown comctrls/ttoolbar.checkmenudropdown.html - ClickButton comctrls/ttoolbar.clickbutton.html - FindButtonFromAccel comctrls/ttoolbar.findbuttonfromaccel.html - FontChanged comctrls/ttoolbar.fontchanged.html - RepositionButton comctrls/ttoolbar.repositionbutton.html - RepositionButtons comctrls/ttoolbar.repositionbuttons.html - WrapButtons comctrls/ttoolbar.wrapbuttons.html - CNDropDownClosed comctrls/ttoolbar.cndropdownclosed.html - Create comctrls/ttoolbar.create.html - Destroy comctrls/ttoolbar.destroy.html - EndUpdate comctrls/ttoolbar.endupdate.html - GetEnumerator comctrls/ttoolbar.getenumerator.html - SetButtonSize comctrls/ttoolbar.setbuttonsize.html - ButtonCount comctrls/ttoolbar.buttoncount.html - Buttons comctrls/ttoolbar.buttons.html - ButtonList comctrls/ttoolbar.buttonlist.html - RowCount comctrls/ttoolbar.rowcount.html - Anchors comctrls/ttoolbar.anchors.html - ButtonHeight comctrls/ttoolbar.buttonheight.html - ButtonWidth comctrls/ttoolbar.buttonwidth.html - DisabledImages comctrls/ttoolbar.disabledimages.html - EdgeBorders comctrls/ttoolbar.edgeborders.html - EdgeInner comctrls/ttoolbar.edgeinner.html - EdgeOuter comctrls/ttoolbar.edgeouter.html - Flat comctrls/ttoolbar.flat.html - HotImages comctrls/ttoolbar.hotimages.html - Images comctrls/ttoolbar.images.html - Indent comctrls/ttoolbar.indent.html - List comctrls/ttoolbar.list.html - ShowCaptions comctrls/ttoolbar.showcaptions.html - Transparent comctrls/ttoolbar.transparent.html - Wrapable comctrls/ttoolbar.wrapable.html - OnMouseWheel comctrls/ttoolbar.onmousewheel.html - OnMouseWheelDown comctrls/ttoolbar.onmousewheeldown.html - OnMouseWheelUp comctrls/ttoolbar.onmousewheelup.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - AdjustClientRect controls/twincontrol.adjustclientrect.html - CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html - CreateWnd controls/twincontrol.createwnd.html - ControlsAligned controls/twincontrol.controlsaligned.html - Loaded controls/twincontrol.loaded.html - Notification controls/tcontrol.notification.html - Paint controls/tcustomcontrol.paint.html - FlipChildren controls/twincontrol.flipchildren.html - CanFocus controls/twincontrol.canfocus.html - Align controls/tcontrol.align.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderWidth controls/twincontrol.borderwidth.html - Caption controls/tcontrol.caption.html - ChildSizing controls/twincontrol.childsizing.html - Constraints controls/tcontrol.constraints.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Height controls/tcontrol.height.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnStartDrag controls/tcontrol.onstartdrag.html - TCoolBand comctrls/tcoolband.html - cDefMinHeight comctrls/tcoolband.cdefminheight.html - cDefMinWidth comctrls/tcoolband.cdefminwidth.html - cDefWidth comctrls/tcoolband.cdefwidth.html - cDivider comctrls/tcoolband.cdivider.html - cGrabIndent comctrls/tcoolband.cgrabindent.html - cHorSpacing comctrls/tcoolband.chorspacing.html - cVertSpacing comctrls/tcoolband.cvertspacing.html - FControlLeft comctrls/tcoolband.fcontrolleft.html - FControlTop comctrls/tcoolband.fcontroltop.html - FTextWidth comctrls/tcoolband.ftextwidth.html - CalcControlLeft comctrls/tcoolband.calccontrolleft.html - CalcPreferredHeight comctrls/tcoolband.calcpreferredheight.html - CalcPreferredWidth comctrls/tcoolband.calcpreferredwidth.html - CalcTextWidth comctrls/tcoolband.calctextwidth.html - GetDisplayName comctrls/tcoolband.getdisplayname.html - Create comctrls/tcoolband.create.html - Destroy comctrls/tcoolband.destroy.html - Assign comctrls/tcoolband.assign.html - AutosizeWidth comctrls/tcoolband.autosizewidth.html - InvalidateCoolBar comctrls/tcoolband.invalidatecoolbar.html - Height comctrls/tcoolband.height.html - Left comctrls/tcoolband.left.html - Right comctrls/tcoolband.right.html - Top comctrls/tcoolband.top.html - Bitmap comctrls/tcoolband.bitmap.html - BorderStyle comctrls/tcoolband.borderstyle.html - Break comctrls/tcoolband.break.html - Color comctrls/tcoolband.color.html - Control comctrls/tcoolband.control.html - FixedBackground comctrls/tcoolband.fixedbackground.html - FixedSize comctrls/tcoolband.fixedsize.html - HorizontalOnly comctrls/tcoolband.horizontalonly.html - ImageIndex comctrls/tcoolband.imageindex.html - MinHeight comctrls/tcoolband.minheight.html - MinWidth comctrls/tcoolband.minwidth.html - ParentColor comctrls/tcoolband.parentcolor.html - ParentBitmap comctrls/tcoolband.parentbitmap.html - Text comctrls/tcoolband.text.html - Visible comctrls/tcoolband.visible.html - Width comctrls/tcoolband.width.html - TCoolBands comctrls/tcoolbands.html - GetOwner comctrls/tcoolbands.getowner.html - Update comctrls/tcoolbands.update.html - Notify comctrls/tcoolbands.notify.html - Create comctrls/tcoolbands.create.html - Add comctrls/tcoolbands.add.html - FindBand comctrls/tcoolbands.findband.html - Items comctrls/tcoolbands.items.html - TCustomCoolBar comctrls/tcustomcoolbar.html - cDefGrabStyle comctrls/tcustomcoolbar.cdefgrabstyle.html - cDefGrabWidth comctrls/tcustomcoolbar.cdefgrabwidth.html - cNewRowBelow comctrls/tcustomcoolbar.cnewrowbelow.html - cNewRowAbove comctrls/tcustomcoolbar.cnewrowabove.html - FBorderEdges comctrls/tcustomcoolbar.fborderedges.html - FBorderLeft comctrls/tcustomcoolbar.fborderleft.html - FBorderTop comctrls/tcustomcoolbar.fbordertop.html - FBorderRight comctrls/tcustomcoolbar.fborderright.html - FBorderBottom comctrls/tcustomcoolbar.fborderbottom.html - FBorderWidth comctrls/tcustomcoolbar.fborderwidth.html - FCursorBkgnd comctrls/tcustomcoolbar.fcursorbkgnd.html - FDragBand comctrls/tcustomcoolbar.fdragband.html - FDraggedBandIndex comctrls/tcustomcoolbar.fdraggedbandindex.html - FDragInitPos comctrls/tcustomcoolbar.fdraginitpos.html - FLockCursor comctrls/tcustomcoolbar.flockcursor.html - FRightToLeft comctrls/tcustomcoolbar.frighttoleft.html - FTextHeight comctrls/tcustomcoolbar.ftextheight.html - FVisiBands comctrls/tcustomcoolbar.fvisibands.html - AlignControls comctrls/tcustomcoolbar.aligncontrols.html - BitmapOrImageListChange comctrls/tcustomcoolbar.bitmaporimagelistchange.html - CalculatePreferredSize comctrls/tcustomcoolbar.calculatepreferredsize.html - CalculateAndAlign comctrls/tcustomcoolbar.calculateandalign.html - CalculateRealIndex comctrls/tcustomcoolbar.calculaterealindex.html - ChangeCursor comctrls/tcustomcoolbar.changecursor.html - CMBiDiModeChanged comctrls/tcustomcoolbar.cmbidimodechanged.html - CreateWnd comctrls/tcustomcoolbar.createwnd.html - DoFontChanged comctrls/tcustomcoolbar.dofontchanged.html - DrawTiledBitmap comctrls/tcustomcoolbar.drawtiledbitmap.html - FontChanged comctrls/tcustomcoolbar.fontchanged.html - IsFirstAtRow comctrls/tcustomcoolbar.isfirstatrow.html - IsRowEnd comctrls/tcustomcoolbar.isrowend.html - MouseDown comctrls/tcustomcoolbar.mousedown.html - MouseMove comctrls/tcustomcoolbar.mousemove.html - MouseUp comctrls/tcustomcoolbar.mouseup.html - Notification comctrls/tcustomcoolbar.notification.html - Paint - SetAlign comctrls/tcustomcoolbar.setalign.html - SetAutoSize comctrls/tcustomcoolbar.setautosize.html - SetCursor comctrls/tcustomcoolbar.setcursor.html - WMSize comctrls/tcustomcoolbar.wmsize.html - Create - Destroy comctrls/tcustomcoolbar.destroy.html - AutosizeBands comctrls/tcustomcoolbar.autosizebands.html - EndUpdate comctrls/tcustomcoolbar.endupdate.html - Invalidate comctrls/tcustomcoolbar.invalidate.html - InsertControl comctrls/tcustomcoolbar.insertcontrol.html - MouseToBandPos comctrls/tcustomcoolbar.mousetobandpos.html - RemoveControl comctrls/tcustomcoolbar.removecontrol.html - Align comctrls/tcustomcoolbar.align.html - BandBorderStyle comctrls/tcustomcoolbar.bandborderstyle.html - BandMaximize comctrls/tcustomcoolbar.bandmaximize.html - Bands comctrls/tcustomcoolbar.bands.html - Bitmap comctrls/tcustomcoolbar.bitmap.html - FixedSize comctrls/tcustomcoolbar.fixedsize.html - FixedOrder comctrls/tcustomcoolbar.fixedorder.html - GrabStyle comctrls/tcustomcoolbar.grabstyle.html - GrabWidth comctrls/tcustomcoolbar.grabwidth.html - Images comctrls/tcustomcoolbar.images.html - ShowText comctrls/tcustomcoolbar.showtext.html - Vertical comctrls/tcustomcoolbar.vertical.html - OnChange comctrls/tcustomcoolbar.onchange.html - TCoolBar comctrls/tcoolbar.html - Align comctrls/tcoolbar.align.html - Anchors comctrls/tcoolbar.anchors.html - AutoSize comctrls/tcoolbar.autosize.html - BandBorderStyle comctrls/tcoolbar.bandborderstyle.html - BandMaximize comctrls/tcoolbar.bandmaximize.html - Bands comctrls/tcoolbar.bands.html - BiDiMode comctrls/tcoolbar.bidimode.html - BorderWidth comctrls/tcoolbar.borderwidth.html - Color comctrls/tcoolbar.color.html - Constraints comctrls/tcoolbar.constraints.html - DockSite comctrls/tcoolbar.docksite.html - DragCursor comctrls/tcoolbar.dragcursor.html - DragKind comctrls/tcoolbar.dragkind.html - DragMode comctrls/tcoolbar.dragmode.html - EdgeBorders comctrls/tcoolbar.edgeborders.html - EdgeInner comctrls/tcoolbar.edgeinner.html - EdgeOuter comctrls/tcoolbar.edgeouter.html - Enabled comctrls/tcoolbar.enabled.html - FixedSize comctrls/tcoolbar.fixedsize.html - FixedOrder comctrls/tcoolbar.fixedorder.html - Font comctrls/tcoolbar.font.html - GrabStyle comctrls/tcoolbar.grabstyle.html - GrabWidth comctrls/tcoolbar.grabwidth.html - Images comctrls/tcoolbar.images.html - ParentColor comctrls/tcoolbar.parentcolor.html - ParentFont comctrls/tcoolbar.parentfont.html - ParentShowHint comctrls/tcoolbar.parentshowhint.html - Bitmap comctrls/tcoolbar.bitmap.html - PopupMenu comctrls/tcoolbar.popupmenu.html - ShowHint comctrls/tcoolbar.showhint.html - ShowText comctrls/tcoolbar.showtext.html - Vertical comctrls/tcoolbar.vertical.html - Visible comctrls/tcoolbar.visible.html - OnChange comctrls/tcoolbar.onchange.html - OnClick comctrls/tcoolbar.onclick.html - OnContextPopup comctrls/tcoolbar.oncontextpopup.html - OnDblClick comctrls/tcoolbar.ondblclick.html - OnDockDrop comctrls/tcoolbar.ondockdrop.html - OnDockOver comctrls/tcoolbar.ondockover.html - OnDragDrop comctrls/tcoolbar.ondragdrop.html - OnDragOver comctrls/tcoolbar.ondragover.html - OnEndDock comctrls/tcoolbar.onenddock.html - OnEndDrag comctrls/tcoolbar.onenddrag.html - OnGetSiteInfo comctrls/tcoolbar.ongetsiteinfo.html - OnMouseDown comctrls/tcoolbar.onmousedown.html - OnMouseEnter comctrls/tcoolbar.onmouseenter.html - OnMouseLeave comctrls/tcoolbar.onmouseleave.html - OnMouseMove comctrls/tcoolbar.onmousemove.html - OnMouseUp comctrls/tcoolbar.onmouseup.html - OnMouseWheel comctrls/tcoolbar.onmousewheel.html - OnMouseWheelDown comctrls/tcoolbar.onmousewheeldown.html - OnMouseWheelUp comctrls/tcoolbar.onmousewheelup.html - OnResize comctrls/tcoolbar.onresize.html - OnStartDock comctrls/tcoolbar.onstartdock.html - OnStartDrag comctrls/tcoolbar.onstartdrag.html - OnUnDock comctrls/tcoolbar.onundock.html - TCustomTrackBar comctrls/tcustomtrackbar.html - ApplyChanges comctrls/tcustomtrackbar.applychanges.html - Changed comctrls/tcustomtrackbar.changed.html - DoChange comctrls/tcustomtrackbar.dochange.html - FixParams comctrls/tcustomtrackbar.fixparams.html - GetControlClassDefaultSize comctrls/tcustomtrackbar.getcontrolclassdefaultsize.html - Create comctrls/tcustomtrackbar.create.html - SetTick comctrls/tcustomtrackbar.settick.html - Frequency comctrls/tcustomtrackbar.frequency.html - LineSize comctrls/tcustomtrackbar.linesize.html - Max comctrls/tcustomtrackbar.max.html - Min comctrls/tcustomtrackbar.min.html - OnChange comctrls/tcustomtrackbar.onchange.html - Orientation comctrls/tcustomtrackbar.orientation.html - PageSize comctrls/tcustomtrackbar.pagesize.html - Position comctrls/tcustomtrackbar.position.html - Reversed comctrls/tcustomtrackbar.reversed.html - ScalePos comctrls/tcustomtrackbar.scalepos.html - SelEnd comctrls/tcustomtrackbar.selend.html - SelStart comctrls/tcustomtrackbar.selstart.html - ShowSelRange comctrls/tcustomtrackbar.showselrange.html - TickMarks comctrls/tcustomtrackbar.tickmarks.html - TickStyle comctrls/tcustomtrackbar.tickstyle.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - InitializeWnd controls/twincontrol.initializewnd.html - Loaded controls/twincontrol.loaded.html - TabStop controls/twincontrol.tabstop.html - TTrackBar comctrls/ttrackbar.html - Reversed comctrls/ttrackbar.reversed.html - SelEnd comctrls/ttrackbar.selend.html - SelStart comctrls/ttrackbar.selstart.html - ShowSelRange comctrls/ttrackbar.showselrange.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Frequency comctrls/tcustomtrackbar.frequency.html - Hint controls/tcontrol.hint.html - LineSize comctrls/tcustomtrackbar.linesize.html - Max comctrls/tcustomtrackbar.max.html - Min comctrls/tcustomtrackbar.min.html - OnChange comctrls/tcustomtrackbar.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - Orientation comctrls/tcustomtrackbar.orientation.html - PageSize comctrls/tcustomtrackbar.pagesize.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - Position comctrls/tcustomtrackbar.position.html - ScalePos comctrls/tcustomtrackbar.scalepos.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TickMarks comctrls/tcustomtrackbar.tickmarks.html - TickStyle comctrls/tcustomtrackbar.tickstyle.html - Visible controls/tcontrol.visible.html - ETreeNodeError comctrls/etreenodeerror.html - ETreeViewError comctrls/etreeviewerror.html - TTreeNode comctrls/ttreenode.html - Changed comctrls/ttreenode.changed.html - GetOwner comctrls/ttreenode.getowner.html - Create comctrls/ttreenode.create.html - Destroy comctrls/ttreenode.destroy.html - AlphaSort comctrls/ttreenode.alphasort.html - Bottom comctrls/ttreenode.bottom.html - BottomExpanded comctrls/ttreenode.bottomexpanded.html - CustomSort comctrls/ttreenode.customsort.html - DefaultTreeViewSort comctrls/ttreenode.defaulttreeviewsort.html - DisplayExpandSignLeft comctrls/ttreenode.displayexpandsignleft.html - DisplayExpandSignRect comctrls/ttreenode.displayexpandsignrect.html - DisplayExpandSignRight comctrls/ttreenode.displayexpandsignright.html - DisplayIconLeft comctrls/ttreenode.displayiconleft.html - DisplayRect comctrls/ttreenode.displayrect.html - DisplayStateIconLeft comctrls/ttreenode.displaystateiconleft.html - DisplayTextLeft comctrls/ttreenode.displaytextleft.html - DisplayTextRight comctrls/ttreenode.displaytextright.html - EditText comctrls/ttreenode.edittext.html - FindNode comctrls/ttreenode.findnode.html - GetFirstChild comctrls/ttreenode.getfirstchild.html - GetFirstVisibleChild comctrls/ttreenode.getfirstvisiblechild.html - GetHandle comctrls/ttreenode.gethandle.html - GetLastChild comctrls/ttreenode.getlastchild.html - GetLastSibling comctrls/ttreenode.getlastsibling.html - GetLastSubChild comctrls/ttreenode.getlastsubchild.html - GetLastVisibleChild comctrls/ttreenode.getlastvisiblechild.html - GetNext comctrls/ttreenode.getnext.html - GetNextChild comctrls/ttreenode.getnextchild.html - GetNextExpanded comctrls/ttreenode.getnextexpanded.html - GetNextMultiSelected comctrls/ttreenode.getnextmultiselected.html - GetNextSibling comctrls/ttreenode.getnextsibling.html - GetNextSkipChildren comctrls/ttreenode.getnextskipchildren.html - GetNextVisible comctrls/ttreenode.getnextvisible.html - GetNextVisibleSibling comctrls/ttreenode.getnextvisiblesibling.html - GetParentNodeOfAbsoluteLevel comctrls/ttreenode.getparentnodeofabsolutelevel.html - GetPrev comctrls/ttreenode.getprev.html - GetPrevChild comctrls/ttreenode.getprevchild.html - GetPrevExpanded comctrls/ttreenode.getprevexpanded.html - GetPrevMultiSelected comctrls/ttreenode.getprevmultiselected.html - GetPrevSibling comctrls/ttreenode.getprevsibling.html - GetPrevVisible comctrls/ttreenode.getprevvisible.html - GetPrevVisibleSibling comctrls/ttreenode.getprevvisiblesibling.html - GetTextPath comctrls/ttreenode.gettextpath.html - HasAsParent comctrls/ttreenode.hasasparent.html - IndexOf comctrls/ttreenode.indexof.html - IndexOfText comctrls/ttreenode.indexoftext.html - Assign comctrls/ttreenode.assign.html - Collapse comctrls/ttreenode.collapse.html - ConsistencyCheck comctrls/ttreenode.consistencycheck.html - Delete comctrls/ttreenode.delete.html - DeleteChildren comctrls/ttreenode.deletechildren.html - EndEdit comctrls/ttreenode.endedit.html - Expand comctrls/ttreenode.expand.html - ExpandParents comctrls/ttreenode.expandparents.html - FreeAllNodeData comctrls/ttreenode.freeallnodedata.html - MakeVisible comctrls/ttreenode.makevisible.html - MoveTo comctrls/ttreenode.moveto.html - MultiSelectGroup comctrls/ttreenode.multiselectgroup.html - Update comctrls/ttreenode.update.html - WriteDebugReport comctrls/ttreenode.writedebugreport.html - AbsoluteIndex comctrls/ttreenode.absoluteindex.html - Count comctrls/ttreenode.count.html - Cut comctrls/ttreenode.cut.html - Data comctrls/ttreenode.data.html - Deleting comctrls/ttreenode.deleting.html - DropTarget comctrls/ttreenode.droptarget.html - Expanded comctrls/ttreenode.expanded.html - Focused comctrls/ttreenode.focused.html - Handle comctrls/ttreenode.handle.html - HasChildren comctrls/ttreenode.haschildren.html - Height comctrls/ttreenode.height.html - ImageIndex comctrls/ttreenode.imageindex.html - Index comctrls/ttreenode.index.html - IsFullHeightVisible comctrls/ttreenode.isfullheightvisible.html - IsVisible comctrls/ttreenode.isvisible.html - Items comctrls/ttreenode.items.html - Level comctrls/ttreenode.level.html - MultiSelected comctrls/ttreenode.multiselected.html - NodeEffect comctrls/ttreenode.nodeeffect.html - OverlayIndex comctrls/ttreenode.overlayindex.html - Owner comctrls/ttreenode.owner.html - Parent comctrls/ttreenode.parent.html - Selected comctrls/ttreenode.selected.html - SelectedIndex comctrls/ttreenode.selectedindex.html - StateIndex comctrls/ttreenode.stateindex.html - States comctrls/ttreenode.states.html - SubTreeCount comctrls/ttreenode.subtreecount.html - Text comctrls/ttreenode.text.html - Top comctrls/ttreenode.top.html - TreeNodes comctrls/ttreenode.treenodes.html - TreeView comctrls/ttreenode.treeview.html - Visible comctrls/ttreenode.visible.html - TTreeNodesEnumerator comctrls/ttreenodesenumerator.html - Create comctrls/ttreenodesenumerator.create.html - MoveNext comctrls/ttreenodesenumerator.movenext.html - Current comctrls/ttreenodesenumerator.current.html - TTreeNodes comctrls/ttreenodes.html - InternalAddObject comctrls/ttreenodes.internaladdobject.html - GetCount comctrls/ttreenodes.getcount.html - GetOwner comctrls/ttreenodes.getowner.html - SetItem comctrls/ttreenodes.setitem.html - SetUpdateState comctrls/ttreenodes.setupdatestate.html - Create comctrls/ttreenodes.create.html - Destroy comctrls/ttreenodes.destroy.html - Add comctrls/ttreenodes.add.html - AddChild comctrls/ttreenodes.addchild.html - AddChildFirst comctrls/ttreenodes.addchildfirst.html - AddChildObject comctrls/ttreenodes.addchildobject.html - AddChildObjectFirst comctrls/ttreenodes.addchildobjectfirst.html - AddFirst comctrls/ttreenodes.addfirst.html - AddNode comctrls/ttreenodes.addnode.html - AddObject comctrls/ttreenodes.addobject.html - AddObjectFirst comctrls/ttreenodes.addobjectfirst.html - FindNodeWithData comctrls/ttreenodes.findnodewithdata.html - FindNodeWithText comctrls/ttreenodes.findnodewithtext.html - FindNodeWithTextPath comctrls/ttreenodes.findnodewithtextpath.html - FindTopLvlNode comctrls/ttreenodes.findtoplvlnode.html - GetEnumerator comctrls/ttreenodes.getenumerator.html - GetFirstNode comctrls/ttreenodes.getfirstnode.html - GetFirstVisibleNode comctrls/ttreenodes.getfirstvisiblenode.html - GetLastExpandedSubNode comctrls/ttreenodes.getlastexpandedsubnode.html - GetLastNode comctrls/ttreenodes.getlastnode.html - GetLastSubNode comctrls/ttreenodes.getlastsubnode.html - GetLastVisibleNode comctrls/ttreenodes.getlastvisiblenode.html - GetSelections comctrls/ttreenodes.getselections.html - Insert comctrls/ttreenodes.insert.html - InsertBehind comctrls/ttreenodes.insertbehind.html - InsertObject comctrls/ttreenodes.insertobject.html - InsertObjectBehind comctrls/ttreenodes.insertobjectbehind.html - IsMultiSelection comctrls/ttreenodes.ismultiselection.html - Assign comctrls/ttreenodes.assign.html - BeginUpdate comctrls/ttreenodes.beginupdate.html - Clear comctrls/ttreenodes.clear.html - ClearMultiSelection comctrls/ttreenodes.clearmultiselection.html - ConsistencyCheck comctrls/ttreenodes.consistencycheck.html - Delete comctrls/ttreenodes.delete.html - EndUpdate comctrls/ttreenodes.endupdate.html - FreeAllNodeData comctrls/ttreenodes.freeallnodedata.html - SelectionsChanged comctrls/ttreenodes.selectionschanged.html - SelectOnlyThis comctrls/ttreenodes.selectonlythis.html - SortTopLevelNodes comctrls/ttreenodes.sorttoplevelnodes.html - WriteDebugReport comctrls/ttreenodes.writedebugreport.html - Count comctrls/ttreenodes.count.html - Item comctrls/ttreenodes.item.html - KeepCollapsedNodes comctrls/ttreenodes.keepcollapsednodes.html - Owner comctrls/ttreenodes.owner.html - SelectionCount comctrls/ttreenodes.selectioncount.html - TopLvlCount comctrls/ttreenodes.toplvlcount.html - TopLvlItems comctrls/ttreenodes.toplvlitems.html - DefineProperties - TCustomTreeView comctrls/tcustomtreeview.html - FChangeTimer comctrls/tcustomtreeview.fchangetimer.html - FEditor comctrls/tcustomtreeview.feditor.html - GetControlClassDefaultSize comctrls/tcustomtreeview.getcontrolclassdefaultsize.html - Added comctrls/tcustomtreeview.added.html - EditorEditingDone comctrls/tcustomtreeview.editoreditingdone.html - EditorKeyDown comctrls/tcustomtreeview.editorkeydown.html - BeginEditing comctrls/tcustomtreeview.beginediting.html - CanChange comctrls/tcustomtreeview.canchange.html - CanCollapse comctrls/tcustomtreeview.cancollapse.html - CanEdit comctrls/tcustomtreeview.canedit.html - CanExpand comctrls/tcustomtreeview.canexpand.html - CreateNode comctrls/tcustomtreeview.createnode.html - CustomDraw comctrls/tcustomtreeview.customdraw.html - CustomDrawItem comctrls/tcustomtreeview.customdrawitem.html - GetMaxLvl comctrls/tcustomtreeview.getmaxlvl.html - GetMaxScrollLeft comctrls/tcustomtreeview.getmaxscrollleft.html - GetMaxScrollTop comctrls/tcustomtreeview.getmaxscrolltop.html - GetNodeAtY comctrls/tcustomtreeview.getnodeaty.html - GetNodeDrawAreaHeight comctrls/tcustomtreeview.getnodedrawareaheight.html - GetNodeDrawAreaWidth comctrls/tcustomtreeview.getnodedrawareawidth.html - IsCustomDrawn comctrls/tcustomtreeview.iscustomdrawn.html - IsNodeVisible comctrls/tcustomtreeview.isnodevisible.html - IsNodeHeightFullVisible comctrls/tcustomtreeview.isnodeheightfullvisible.html - IsInsertMarkVisible comctrls/tcustomtreeview.isinsertmarkvisible.html - Change comctrls/tcustomtreeview.change.html - Collapse comctrls/tcustomtreeview.collapse.html - Delete comctrls/tcustomtreeview.delete.html - DoPaint comctrls/tcustomtreeview.dopaint.html - DoPaintNode comctrls/tcustomtreeview.dopaintnode.html - EndEditing comctrls/tcustomtreeview.endediting.html - EnsureNodeIsVisible comctrls/tcustomtreeview.ensurenodeisvisible.html - Expand comctrls/tcustomtreeview.expand.html - GetImageIndex comctrls/tcustomtreeview.getimageindex.html - GetSelectedIndex comctrls/tcustomtreeview.getselectedindex.html - MouseLeave comctrls/tcustomtreeview.mouseleave.html - NodeChanged comctrls/tcustomtreeview.nodechanged.html - SetOptions comctrls/tcustomtreeview.setoptions.html - UpdateDefaultItemHeight comctrls/tcustomtreeview.updatedefaultitemheight.html - UpdateInsertMark comctrls/tcustomtreeview.updateinsertmark.html - DoSelectionChanged comctrls/tcustomtreeview.doselectionchanged.html - WMHScroll comctrls/tcustomtreeview.wmhscroll.html - WMVScroll comctrls/tcustomtreeview.wmvscroll.html - WMSetFocus comctrls/tcustomtreeview.wmsetfocus.html - WMKillFocus comctrls/tcustomtreeview.wmkillfocus.html - EditingItem comctrls/tcustomtreeview.editingitem.html - States comctrls/tcustomtreeview.states.html - GetSelectedChildAccessibleObject comctrls/tcustomtreeview.getselectedchildaccessibleobject.html - GetChildAccessibleObjectAtPos comctrls/tcustomtreeview.getchildaccessibleobjectatpos.html - AccessibilityOn comctrls/tcustomtreeview.accessibilityon.html - AutoExpand comctrls/tcustomtreeview.autoexpand.html - HideSelection comctrls/tcustomtreeview.hideselection.html - HotTrack comctrls/tcustomtreeview.hottrack.html - Images comctrls/tcustomtreeview.images.html - Indent comctrls/tcustomtreeview.indent.html - MultiSelect comctrls/tcustomtreeview.multiselect.html - OnAddition comctrls/tcustomtreeview.onaddition.html - OnAdvancedCustomDraw comctrls/tcustomtreeview.onadvancedcustomdraw.html - OnAdvancedCustomDrawItem comctrls/tcustomtreeview.onadvancedcustomdrawitem.html - OnChange comctrls/tcustomtreeview.onchange.html - OnChanging comctrls/tcustomtreeview.onchanging.html - OnCollapsed comctrls/tcustomtreeview.oncollapsed.html - OnCollapsing comctrls/tcustomtreeview.oncollapsing.html - OnCompare comctrls/tcustomtreeview.oncompare.html - OnCreateNodeClass comctrls/tcustomtreeview.oncreatenodeclass.html - OnCustomCreateItem comctrls/tcustomtreeview.oncustomcreateitem.html - OnCustomDraw comctrls/tcustomtreeview.oncustomdraw.html - OnCustomDrawItem comctrls/tcustomtreeview.oncustomdrawitem.html - OnDeletion comctrls/tcustomtreeview.ondeletion.html - OnEdited comctrls/tcustomtreeview.onedited.html - OnEditing comctrls/tcustomtreeview.onediting.html - OnEditingEnd comctrls/tcustomtreeview.oneditingend.html - OnExpanded comctrls/tcustomtreeview.onexpanded.html - OnExpanding comctrls/tcustomtreeview.onexpanding.html - OnGetImageIndex comctrls/tcustomtreeview.ongetimageindex.html - OnGetSelectedIndex comctrls/tcustomtreeview.ongetselectedindex.html - OnNodeChanged comctrls/tcustomtreeview.onnodechanged.html - OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html - ReadOnly comctrls/tcustomtreeview.readonly.html - RightClickSelect comctrls/tcustomtreeview.rightclickselect.html - RowSelect comctrls/tcustomtreeview.rowselect.html - ScrolledLeft comctrls/tcustomtreeview.scrolledleft.html - ScrolledTop comctrls/tcustomtreeview.scrolledtop.html - ShowButtons comctrls/tcustomtreeview.showbuttons.html - ShowRoot comctrls/tcustomtreeview.showroot.html - ShowSeparators comctrls/tcustomtreeview.showseparators.html - SortType comctrls/tcustomtreeview.sorttype.html - StateImages comctrls/tcustomtreeview.stateimages.html - ToolTips comctrls/tcustomtreeview.tooltips.html - Create comctrls/tcustomtreeview.create.html - Destroy comctrls/tcustomtreeview.destroy.html - AlphaSort comctrls/tcustomtreeview.alphasort.html - ClearSelection comctrls/tcustomtreeview.clearselection.html - ConsistencyCheck comctrls/tcustomtreeview.consistencycheck.html - CustomSort comctrls/tcustomtreeview.customsort.html - DefaultTreeViewSort comctrls/tcustomtreeview.defaulttreeviewsort.html - GetHitTestInfoAt comctrls/tcustomtreeview.gethittestinfoat.html - GetNodeAt comctrls/tcustomtreeview.getnodeat.html - GetInsertMarkAt comctrls/tcustomtreeview.getinsertmarkat.html - SetInsertMark comctrls/tcustomtreeview.setinsertmark.html - SetInsertMarkAt comctrls/tcustomtreeview.setinsertmarkat.html - IsEditing comctrls/tcustomtreeview.isediting.html - BeginUpdate comctrls/tcustomtreeview.beginupdate.html - EndUpdate comctrls/tcustomtreeview.endupdate.html - FullCollapse comctrls/tcustomtreeview.fullcollapse.html - FullExpand comctrls/tcustomtreeview.fullexpand.html - LoadFromFile comctrls/tcustomtreeview.loadfromfile.html - LoadFromStream comctrls/tcustomtreeview.loadfromstream.html - SaveToFile comctrls/tcustomtreeview.savetofile.html - SaveToStream comctrls/tcustomtreeview.savetostream.html - WriteDebugReport comctrls/tcustomtreeview.writedebugreport.html - LockSelectionChangeEvent comctrls/tcustomtreeview.lockselectionchangeevent.html - UnlockSelectionChangeEvent comctrls/tcustomtreeview.unlockselectionchangeevent.html - GetFirstMultiSelected comctrls/tcustomtreeview.getfirstmultiselected.html - GetLastMultiSelected comctrls/tcustomtreeview.getlastmultiselected.html - Select comctrls/tcustomtreeview.select.html - SelectionVisible comctrls/tcustomtreeview.selectionvisible.html - MakeSelectionVisible comctrls/tcustomtreeview.makeselectionvisible.html - ClearInvisibleSelection comctrls/tcustomtreeview.clearinvisibleselection.html - StoreCurrentSelection comctrls/tcustomtreeview.storecurrentselection.html - ApplyStoredSelection comctrls/tcustomtreeview.applystoredselection.html - MoveToNextNode comctrls/tcustomtreeview.movetonextnode.html - MoveToPrevNode comctrls/tcustomtreeview.movetoprevnode.html - BackgroundColor comctrls/tcustomtreeview.backgroundcolor.html - BottomItem comctrls/tcustomtreeview.bottomitem.html - DefaultItemHeight comctrls/tcustomtreeview.defaultitemheight.html - DropTarget comctrls/tcustomtreeview.droptarget.html - ExpandSignType comctrls/tcustomtreeview.expandsigntype.html - InsertMarkNode comctrls/tcustomtreeview.insertmarknode.html - InsertMarkType comctrls/tcustomtreeview.insertmarktype.html - Items comctrls/tcustomtreeview.items.html - KeepCollapsedNodes comctrls/tcustomtreeview.keepcollapsednodes.html - MultiSelectStyle comctrls/tcustomtreeview.multiselectstyle.html - Options comctrls/tcustomtreeview.options.html - ScrollBars comctrls/tcustomtreeview.scrollbars.html - Selected comctrls/tcustomtreeview.selected.html - SelectionColor comctrls/tcustomtreeview.selectioncolor.html - SelectionCount comctrls/tcustomtreeview.selectioncount.html - Selections comctrls/tcustomtreeview.selections.html - SeparatorColor comctrls/tcustomtreeview.separatorcolor.html - TopItem comctrls/tcustomtreeview.topitem.html - TreeLineColor comctrls/tcustomtreeview.treelinecolor.html - TreeLinePenStyle comctrls/tcustomtreeview.treelinepenstyle.html - ExpandSignColor comctrls/tcustomtreeview.expandsigncolor.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - BeginAutoDrag controls/tcontrol.beginautodrag.html - DoDragMsg - GetDragImages controls/tcontrol.getdragimages.html - CreateWnd controls/twincontrol.createwnd.html - DestroyWnd controls/twincontrol.destroywnd.html - DoEndDrag controls/tcontrol.doenddrag.html - DoMouseWheel controls/tcontrol.domousewheel.html - DoStartDrag controls/tcontrol.dostartdrag.html - DragOver controls/tcontrol.dragover.html - InitializeWnd controls/twincontrol.initializewnd.html - KeyDown controls/twincontrol.keydown.html - Loaded controls/twincontrol.loaded.html - MouseDown controls/tcontrol.mousedown.html - MouseMove controls/tcontrol.mousemove.html - MouseUp controls/tcontrol.mouseup.html - Notification controls/tcontrol.notification.html - Paint controls/tcustomcontrol.paint.html - SetDragMode - WMLButtonDown controls/tcontrol.wmlbuttondown.html - Resize controls/tcontrol.resize.html - BorderStyle controls/twincontrol.borderstyle.html - ShowLines - EraseBackground controls/twincontrol.erasebackground.html - Invalidate controls/tcontrol.invalidate.html - BorderWidth controls/twincontrol.borderwidth.html - TabStop controls/twincontrol.tabstop.html - TTreeView comctrls/ttreeview.html - AutoExpand comctrls/ttreeview.autoexpand.html - HideSelection comctrls/ttreeview.hideselection.html - HotTrack comctrls/ttreeview.hottrack.html - Images comctrls/ttreeview.images.html - Indent comctrls/ttreeview.indent.html - MultiSelect comctrls/ttreeview.multiselect.html - MultiSelectStyle comctrls/ttreeview.multiselectstyle.html - OnAddition comctrls/ttreeview.onaddition.html - OnCreateNodeClass comctrls/ttreeview.oncreatenodeclass.html - OnEditing comctrls/ttreeview.onediting.html - OnEditingEnd comctrls/ttreeview.oneditingend.html - OnMouseEnter comctrls/ttreeview.onmouseenter.html - OnMouseLeave comctrls/ttreeview.onmouseleave.html - OnMouseWheel comctrls/ttreeview.onmousewheel.html - OnMouseWheelDown comctrls/ttreeview.onmousewheeldown.html - OnMouseWheelUp comctrls/ttreeview.onmousewheelup.html - OnNodeChanged comctrls/ttreeview.onnodechanged.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - BackgroundColor comctrls/tcustomtreeview.backgroundcolor.html - BorderStyle controls/twincontrol.borderstyle.html - BorderWidth controls/twincontrol.borderwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DefaultItemHeight comctrls/tcustomtreeview.defaultitemheight.html - DragKind controls/tcontrol.dragkind.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - ExpandSignColor comctrls/tcustomtreeview.expandsigncolor.html - ExpandSignType comctrls/tcustomtreeview.expandsigntype.html - Font controls/tcontrol.font.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly comctrls/tcustomtreeview.readonly.html - RightClickSelect comctrls/tcustomtreeview.rightclickselect.html - RowSelect comctrls/tcustomtreeview.rowselect.html - ScrollBars comctrls/tcustomtreeview.scrollbars.html - SelectionColor comctrls/tcustomtreeview.selectioncolor.html - ShowButtons comctrls/tcustomtreeview.showbuttons.html - ShowHint controls/tcontrol.showhint.html - ShowLines - ShowRoot comctrls/tcustomtreeview.showroot.html - SortType comctrls/tcustomtreeview.sorttype.html - StateImages comctrls/tcustomtreeview.stateimages.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Tag ms-its:rtl.chm::/classes/tcomponent.tag.html - ToolTips comctrls/tcustomtreeview.tooltips.html - Visible controls/tcontrol.visible.html - OnAdvancedCustomDraw comctrls/tcustomtreeview.onadvancedcustomdraw.html - OnAdvancedCustomDrawItem comctrls/tcustomtreeview.onadvancedcustomdrawitem.html - OnChange comctrls/tcustomtreeview.onchange.html - OnChanging comctrls/tcustomtreeview.onchanging.html - OnClick controls/tcontrol.onclick.html - OnCollapsed comctrls/tcustomtreeview.oncollapsed.html - OnCollapsing comctrls/tcustomtreeview.oncollapsing.html - OnCompare comctrls/tcustomtreeview.oncompare.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnCustomCreateItem comctrls/tcustomtreeview.oncustomcreateitem.html - OnCustomDraw comctrls/tcustomtreeview.oncustomdraw.html - OnCustomDrawItem comctrls/tcustomtreeview.oncustomdrawitem.html - OnDblClick controls/tcontrol.ondblclick.html - OnDeletion comctrls/tcustomtreeview.ondeletion.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEdited comctrls/tcustomtreeview.onedited.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnExpanded comctrls/tcustomtreeview.onexpanded.html - OnExpanding comctrls/tcustomtreeview.onexpanding.html - OnGetImageIndex comctrls/tcustomtreeview.ongetimageindex.html - OnGetSelectedIndex comctrls/tcustomtreeview.ongetselectedindex.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html - OnShowHint controls/tcontrol.onshowhint.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - Options comctrls/tcustomtreeview.options.html - Items comctrls/tcustomtreeview.items.html - TreeLineColor comctrls/tcustomtreeview.treelinecolor.html - TreeLinePenStyle comctrls/tcustomtreeview.treelinepenstyle.html - TTreeNodeExpandedState comctrls/ttreenodeexpandedstate.html - NodeText comctrls/ttreenodeexpandedstate.nodetext.html - Children comctrls/ttreenodeexpandedstate.children.html - Create comctrls/ttreenodeexpandedstate.create.html - Clear comctrls/ttreenodeexpandedstate.clear.html - CreateChildNodes comctrls/ttreenodeexpandedstate.createchildnodes.html - Apply comctrls/ttreenodeexpandedstate.apply.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - THeaderSection comctrls/theadersection.html - GetDisplayName comctrls/theadersection.getdisplayname.html - Create comctrls/theadersection.create.html - Assign comctrls/theadersection.assign.html - Left comctrls/theadersection.left.html - Right comctrls/theadersection.right.html - State comctrls/theadersection.state.html - Alignment comctrls/theadersection.alignment.html - ImageIndex comctrls/theadersection.imageindex.html - MaxWidth comctrls/theadersection.maxwidth.html - MinWidth comctrls/theadersection.minwidth.html - Text comctrls/theadersection.text.html - Width comctrls/theadersection.width.html - Visible comctrls/theadersection.visible.html - OriginalIndex comctrls/theadersection.originalindex.html - THeaderSections comctrls/theadersections.html - GetOwner comctrls/theadersections.getowner.html - AddItem comctrls/theadersections.additem.html - Items comctrls/theadersections.items.html - Update - Create ms-its:rtl.chm::/classes/tcollection.create.html - Add ms-its:rtl.chm::/classes/tcollection.add.html - Insert ms-its:rtl.chm::/classes/tcollection.insert.html - Delete ms-its:rtl.chm::/classes/tcollection.delete.html - TCustomHeaderControl comctrls/tcustomheadercontrol.html - CreateSection comctrls/tcustomheadercontrol.createsection.html - CreateSections comctrls/tcustomheadercontrol.createsections.html - Loaded comctrls/tcustomheadercontrol.loaded.html - SectionClick comctrls/tcustomheadercontrol.sectionclick.html - SectionResize comctrls/tcustomheadercontrol.sectionresize.html - SectionTrack comctrls/tcustomheadercontrol.sectiontrack.html - SectionSeparatorDblClick comctrls/tcustomheadercontrol.sectionseparatordblclick.html - SectionEndDrag comctrls/tcustomheadercontrol.sectionenddrag.html - SectionDrag comctrls/tcustomheadercontrol.sectiondrag.html - UpdateState comctrls/tcustomheadercontrol.updatestate.html - GetControlClassDefaultSize comctrls/tcustomheadercontrol.getcontrolclassdefaultsize.html - SectionFromOriginalIndex comctrls/tcustomheadercontrol.sectionfromoriginalindex.html - Create comctrls/tcustomheadercontrol.create.html - Destroy comctrls/tcustomheadercontrol.destroy.html - GetSectionAt comctrls/tcustomheadercontrol.getsectionat.html - PaintSection comctrls/tcustomheadercontrol.paintsection.html - DragReorder comctrls/tcustomheadercontrol.dragreorder.html - Images comctrls/tcustomheadercontrol.images.html - Sections comctrls/tcustomheadercontrol.sections.html - OnSectionDrag comctrls/tcustomheadercontrol.onsectiondrag.html - OnSectionEndDrag comctrls/tcustomheadercontrol.onsectionenddrag.html - OnSectionClick comctrls/tcustomheadercontrol.onsectionclick.html - OnSectionResize comctrls/tcustomheadercontrol.onsectionresize.html - OnSectionTrack comctrls/tcustomheadercontrol.onsectiontrack.html - OnSectionSeparatorDblClick comctrls/tcustomheadercontrol.onsectionseparatordblclick.html - OnCreateSectionClass comctrls/tcustomheadercontrol.oncreatesectionclass.html - Notification - MouseEnter controls/tcontrol.mouseenter.html - MouseLeave controls/tcontrol.mouseleave.html - MouseDown controls/tcontrol.mousedown.html - MouseMove controls/tcontrol.mousemove.html - MouseUp controls/tcontrol.mouseup.html - Click controls/tcontrol.click.html - DblClick controls/tcontrol.dblclick.html - Paint controls/tcustomcontrol.paint.html - THeaderControl comctrls/theadercontrol.html - BorderSpacing comctrls/theadercontrol.borderspacing.html - OnMouseWheel comctrls/theadercontrol.onmousewheel.html - OnMouseWheelDown comctrls/theadercontrol.onmousewheeldown.html - OnMouseWheelUp comctrls/theadercontrol.onmousewheelup.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BiDiMode controls/tcontrol.bidimode.html - BorderWidth controls/twincontrol.borderwidth.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - Images comctrls/tcustomheadercontrol.images.html - Constraints controls/tcontrol.constraints.html - Sections comctrls/tcustomheadercontrol.sections.html - ShowHint controls/tcontrol.showhint.html - ParentBiDiMode controls/tcontrol.parentbidimode.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - Visible controls/tcontrol.visible.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnCreateSectionClass comctrls/tcustomheadercontrol.oncreatesectionclass.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnSectionClick comctrls/tcustomheadercontrol.onsectionclick.html - OnSectionResize comctrls/tcustomheadercontrol.onsectionresize.html - OnSectionTrack comctrls/tcustomheadercontrol.onsectiontrack.html - CompareExpandedNodes comctrls/compareexpandednodes.html - CompareTextWithExpandedNode comctrls/comparetextwithexpandednode.html - Register comctrls/register.html - RegisterCustomPage comctrls/registercustompage.html - RegisterCustomTabControl comctrls/registercustomtabcontrol.html - Toolwin toolwin/index.html - TEdgeBorder toolwin/tedgeborder.html - TEdgeBorders toolwin/tedgeborders.html - TEdgeStyle toolwin/tedgestyle.html - TToolWindow toolwin/ttoolwindow.html - FUpdateCount toolwin/ttoolwindow.fupdatecount.html - AdjustClientRect toolwin/ttoolwindow.adjustclientrect.html - Paint toolwin/ttoolwindow.paint.html - Create toolwin/ttoolwindow.create.html - BeginUpdate toolwin/ttoolwindow.beginupdate.html - EndUpdate toolwin/ttoolwindow.endupdate.html - EdgeBorders toolwin/ttoolwindow.edgeborders.html - EdgeInner toolwin/ttoolwindow.edgeinner.html - EdgeOuter toolwin/ttoolwindow.edgeouter.html - LazHelpIntf lazhelpintf/index.html - TPascalHelpContextType lazhelpintf/tpascalhelpcontexttype.html - TPascalHelpContext lazhelpintf/tpascalhelpcontext.html - TPascalHelpContextPtr lazhelpintf/tpascalhelpcontextptr.html - THelpNodeType lazhelpintf/thelpnodetype.html - TOnHelpDBFindViewer lazhelpintf/tonhelpdbfindviewer.html - THelpDatabaseClass lazhelpintf/thelpdatabaseclass.html - THelpViewerClass lazhelpintf/thelpviewerclass.html - THelpQueryItem lazhelpintf/thelpqueryitem.html - AsString lazhelpintf/thelpqueryitem.asstring.html - IsEqual lazhelpintf/thelpqueryitem.isequal.html - TPascalHelpContextList lazhelpintf/tpascalhelpcontextlist.html - Add lazhelpintf/tpascalhelpcontextlist.add.html - Insert lazhelpintf/tpascalhelpcontextlist.insert.html - Clear lazhelpintf/tpascalhelpcontextlist.clear.html - Destroy lazhelpintf/tpascalhelpcontextlist.destroy.html - IsEqual lazhelpintf/tpascalhelpcontextlist.isequal.html - CompareList lazhelpintf/tpascalhelpcontextlist.comparelist.html - AsString lazhelpintf/tpascalhelpcontextlist.asstring.html - Count lazhelpintf/tpascalhelpcontextlist.count.html - Items lazhelpintf/tpascalhelpcontextlist.items.html - List lazhelpintf/tpascalhelpcontextlist.list.html - THelpNode lazhelpintf/thelpnode.html - Create lazhelpintf/thelpnode.create.html - CreateURL lazhelpintf/thelpnode.createurl.html - CreateID lazhelpintf/thelpnode.createid.html - CreateURLID lazhelpintf/thelpnode.createurlid.html - CreateContext lazhelpintf/thelpnode.createcontext.html - CreateURLContext lazhelpintf/thelpnode.createurlcontext.html - Owner lazhelpintf/thelpnode.owner.html - URLValid lazhelpintf/thelpnode.urlvalid.html - IDValid lazhelpintf/thelpnode.idvalid.html - ContextValid lazhelpintf/thelpnode.contextvalid.html - AsString lazhelpintf/thelpnode.asstring.html - Assign lazhelpintf/thelpnode.assign.html - Title lazhelpintf/thelpnode.title.html - HelpType lazhelpintf/thelpnode.helptype.html - URL lazhelpintf/thelpnode.url.html - ID lazhelpintf/thelpnode.id.html - Context lazhelpintf/thelpnode.context.html - THelpNodeQuery lazhelpintf/thelpnodequery.html - Create lazhelpintf/thelpnodequery.create.html - IsEqual lazhelpintf/thelpnodequery.isequal.html - AsString lazhelpintf/thelpnodequery.asstring.html - Node lazhelpintf/thelpnodequery.node.html - QueryItem lazhelpintf/thelpnodequery.queryitem.html - THelpNodeQueryList lazhelpintf/thelpnodequerylist.html - Create lazhelpintf/thelpnodequerylist.create.html - Destroy lazhelpintf/thelpnodequerylist.destroy.html - Count lazhelpintf/thelpnodequerylist.count.html - Add lazhelpintf/thelpnodequerylist.add.html - Delete lazhelpintf/thelpnodequerylist.delete.html - IndexOf lazhelpintf/thelpnodequerylist.indexof.html - Clear lazhelpintf/thelpnodequerylist.clear.html - Items lazhelpintf/thelpnodequerylist.items.html - THelpDBItem lazhelpintf/thelpdbitem.html - Create lazhelpintf/thelpdbitem.create.html - Destroy lazhelpintf/thelpdbitem.destroy.html - Node lazhelpintf/thelpdbitem.node.html - THelpDBISourceFile lazhelpintf/thelpdbisourcefile.html - Create lazhelpintf/thelpdbisourcefile.create.html - FileMatches lazhelpintf/thelpdbisourcefile.filematches.html - GetFullFilename lazhelpintf/thelpdbisourcefile.getfullfilename.html - GetBasePath lazhelpintf/thelpdbisourcefile.getbasepath.html - BasePathObject lazhelpintf/thelpdbisourcefile.basepathobject.html - Filename lazhelpintf/thelpdbisourcefile.filename.html - THelpDBISourceDirectory lazhelpintf/thelpdbisourcedirectory.html - Create lazhelpintf/thelpdbisourcedirectory.create.html - FileMatches lazhelpintf/thelpdbisourcedirectory.filematches.html - FileMask lazhelpintf/thelpdbisourcedirectory.filemask.html - WithSubDirectories lazhelpintf/thelpdbisourcedirectory.withsubdirectories.html - THelpDBISourceDirectories lazhelpintf/thelpdbisourcedirectories.html - Create lazhelpintf/thelpdbisourcedirectory.create.html - FileMatches lazhelpintf/thelpdbisourcedirectory.filematches.html - GetFullFilename lazhelpintf/thelpdbisourcedirectories.getfullfilename.html - GetBasePath lazhelpintf/thelpdbisourcedirectories.getbasepath.html - BaseDirectory lazhelpintf/thelpdbisourcedirectories.basedirectory.html - THelpDBIClass lazhelpintf/thelpdbiclass.html - TheClass lazhelpintf/thelpdbiclass.theclass.html - THelpDBIMessage lazhelpintf/thelpdbimessage.html - MessageMatches lazhelpintf/thelpdbimessage.messagematches.html - THelpQueryNode lazhelpintf/thelpquerynode.html - Create lazhelpintf/thelpquerynode.create.html - Node lazhelpintf/thelpquerynode.node.html - THelpDatabase lazhelpintf/thelpdatabase.html - SetSupportedMimeTypes lazhelpintf/thelpdatabase.setsupportedmimetypes.html - AddSupportedMimeType lazhelpintf/thelpdatabase.addsupportedmimetype.html - Create lazhelpintf/thelpdatabase.create.html - Destroy lazhelpintf/thelpdatabase.destroy.html - Reference lazhelpintf/thelpdatabase.reference.html - RegisterSelf lazhelpintf/thelpdatabase.registerself.html - Release lazhelpintf/thelpdatabase.release.html - UnregisterSelf lazhelpintf/thelpdatabase.unregisterself.html - Registered lazhelpintf/thelpdatabase.registered.html - CanShowTableOfContents lazhelpintf/thelpdatabase.canshowtableofcontents.html - ShowTableOfContents lazhelpintf/thelpdatabase.showtableofcontents.html - ShowError lazhelpintf/thelpdatabase.showerror.html - ShowHelp lazhelpintf/thelpdatabase.showhelp.html - ShowHelpFile lazhelpintf/thelpdatabase.showhelpfile.html - SupportsMimeType lazhelpintf/thelpdatabase.supportsmimetype.html - GetNodesForKeyword lazhelpintf/thelpdatabase.getnodesforkeyword.html - GetNodesForDirective lazhelpintf/thelpdatabase.getnodesfordirective.html - GetNodesForContext lazhelpintf/thelpdatabase.getnodesforcontext.html - GetNodesForPascalContexts lazhelpintf/thelpdatabase.getnodesforpascalcontexts.html - GetNodesForClass lazhelpintf/thelpdatabase.getnodesforclass.html - GetNodesForMessage lazhelpintf/thelpdatabase.getnodesformessage.html - FindViewer lazhelpintf/thelpdatabase.findviewer.html - RegisterItem lazhelpintf/thelpdatabase.registeritem.html - RegisterItemWithNode lazhelpintf/thelpdatabase.registeritemwithnode.html - RegisterFileItemWithNode lazhelpintf/thelpdatabase.registerfileitemwithnode.html - UnregisterItem lazhelpintf/thelpdatabase.unregisteritem.html - UnregisterAllItems lazhelpintf/thelpdatabase.unregisterallitems.html - RegisteredItemCount lazhelpintf/thelpdatabase.registereditemcount.html - GetRegisteredItem lazhelpintf/thelpdatabase.getregistereditem.html - Load lazhelpintf/thelpdatabase.load.html - Save lazhelpintf/thelpdatabase.save.html - GetLocalizedName lazhelpintf/thelpdatabase.getlocalizedname.html - Databases lazhelpintf/thelpdatabase.databases.html - ID lazhelpintf/thelpdatabase.id.html - SupportedMimeTypes lazhelpintf/thelpdatabase.supportedmimetypes.html - BasePathObject lazhelpintf/thelpdatabase.basepathobject.html - TOCNode lazhelpintf/thelpdatabase.tocnode.html - AutoRegister lazhelpintf/thelpdatabase.autoregister.html - OnFindViewer lazhelpintf/thelpdatabase.onfindviewer.html - THelpDatabases lazhelpintf/thelpdatabases.html - Create lazhelpintf/thelpdatabases.create.html - Destroy lazhelpintf/thelpdatabases.destroy.html - Count lazhelpintf/thelpdatabases.count.html - Items lazhelpintf/thelpdatabases.items.html - FindDatabase lazhelpintf/thelpdatabases.finddatabase.html - GetDatabase lazhelpintf/thelpdatabases.getdatabase.html - IndexOf lazhelpintf/thelpdatabases.indexof.html - CreateUniqueDatabaseID lazhelpintf/thelpdatabases.createuniquedatabaseid.html - CreateHelpDatabase lazhelpintf/thelpdatabases.createhelpdatabase.html - ShowTableOfContents lazhelpintf/thelpdatabases.showtableofcontents.html - ShowError lazhelpintf/thelpdatabases.showerror.html - GetBaseURLForBasePathObject lazhelpintf/thelpdatabases.getbaseurlforbasepathobject.html - GetBaseDirectoryForBasePathObject lazhelpintf/thelpdatabases.getbasedirectoryforbasepathobject.html - FindViewer lazhelpintf/thelpdatabases.findviewer.html - SubstituteMacros lazhelpintf/thelpdatabases.substitutemacros.html - ShowHelpForNodes lazhelpintf/thelpdatabases.showhelpfornodes.html - ShowHelpForQuery lazhelpintf/thelpdatabases.showhelpforquery.html - ShowHelpForContext lazhelpintf/thelpdatabases.showhelpforcontext.html - ShowHelpForKeyword lazhelpintf/thelpdatabases.showhelpforkeyword.html - ShowHelpForDirective lazhelpintf/thelpdatabases.showhelpfordirective.html - ShowHelpForPascalContexts lazhelpintf/thelpdatabases.showhelpforpascalcontexts.html - ShowHelpForSourcePosition lazhelpintf/thelpdatabases.showhelpforsourceposition.html - ShowHelpForMessageLine lazhelpintf/thelpdatabases.showhelpformessageline.html - ShowHelpForClass lazhelpintf/thelpdatabases.showhelpforclass.html - ShowHelpFile lazhelpintf/thelpdatabases.showhelpfile.html - ShowHelp lazhelpintf/thelpdatabases.showhelp.html - GetNodesForKeyword lazhelpintf/thelpdatabases.getnodesforkeyword.html - GetNodesForDirective lazhelpintf/thelpdatabases.getnodesfordirective.html - GetNodesForContext lazhelpintf/thelpdatabases.getnodesforcontext.html - GetNodesForPascalContexts lazhelpintf/thelpdatabases.getnodesforpascalcontexts.html - GetNodesForClass lazhelpintf/thelpdatabases.getnodesforclass.html - GetNodesForMessage lazhelpintf/thelpdatabases.getnodesformessage.html - ShowHelpSelector lazhelpintf/thelpdatabases.showhelpselector.html - RegisterHelpDatabaseClass lazhelpintf/thelpdatabases.registerhelpdatabaseclass.html - UnregisterHelpDatabaseClass lazhelpintf/thelpdatabases.unregisterhelpdatabaseclass.html - HelpDatabaseClassCount lazhelpintf/thelpdatabases.helpdatabaseclasscount.html - GetHelpDatabaseClass lazhelpintf/thelpdatabases.gethelpdatabaseclass.html - Load lazhelpintf/thelpdatabases.load.html - Save lazhelpintf/thelpdatabases.save.html - THelpViewer lazhelpintf/thelpviewer.html - SetSupportedMimeTypes lazhelpintf/thelpviewer.setsupportedmimetypes.html - AddSupportedMimeType lazhelpintf/thelpviewer.addsupportedmimetype.html - Create lazhelpintf/thelpviewer.create.html - Destroy lazhelpintf/thelpviewer.destroy.html - SupportsTableOfContents lazhelpintf/thelpviewer.supportstableofcontents.html - ShowTableOfContents lazhelpintf/thelpviewer.showtableofcontents.html - SupportsMimeType lazhelpintf/thelpviewer.supportsmimetype.html - ShowNode lazhelpintf/thelpviewer.shownode.html - Hide lazhelpintf/thelpviewer.hide.html - Assign lazhelpintf/thelpviewer.assign.html - Load lazhelpintf/thelpviewer.load.html - Save lazhelpintf/thelpviewer.save.html - GetLocalizedName lazhelpintf/thelpviewer.getlocalizedname.html - RegisterSelf lazhelpintf/thelpviewer.registerself.html - UnregisterSelf lazhelpintf/thelpviewer.unregisterself.html - SupportedMimeTypes lazhelpintf/thelpviewer.supportedmimetypes.html - ParameterHelp lazhelpintf/thelpviewer.parameterhelp.html - StorageName lazhelpintf/thelpviewer.storagename.html - AutoRegister lazhelpintf/thelpviewer.autoregister.html - THelpViewers lazhelpintf/thelpviewers.html - Create lazhelpintf/thelpviewers.create.html - Destroy lazhelpintf/thelpviewers.destroy.html - Clear lazhelpintf/thelpviewers.clear.html - Count lazhelpintf/thelpviewers.count.html - GetViewersSupportingMimeType lazhelpintf/thelpviewers.getviewerssupportingmimetype.html - RegisterViewer lazhelpintf/thelpviewers.registerviewer.html - UnregisterViewer lazhelpintf/thelpviewers.unregisterviewer.html - Load lazhelpintf/thelpviewers.load.html - Save lazhelpintf/thelpviewers.save.html - IndexOf lazhelpintf/thelpviewers.indexof.html - Items lazhelpintf/thelpviewers.items.html - THelpBasePathObject lazhelpintf/thelpbasepathobject.html - SetBasePath lazhelpintf/thelpbasepathobject.setbasepath.html - Create lazhelpintf/thelpbasepathobject.create.html - BasePath lazhelpintf/thelpbasepathobject.basepath.html - THelpBaseURLObject lazhelpintf/thelpbaseurlobject.html - SetBaseURL lazhelpintf/thelpbaseurlobject.setbaseurl.html - Create lazhelpintf/thelpbaseurlobject.create.html - BaseURL lazhelpintf/thelpbaseurlobject.baseurl.html - CreateLCLHelpSystem lazhelpintf/createlclhelpsystem.html - FreeLCLHelpSystem lazhelpintf/freelclhelpsystem.html - FreeUnusedLCLHelpSystem lazhelpintf/freeunusedlclhelpsystem.html - FilenameToURL lazhelpintf/filenametourl.html - FilenameToURLPath lazhelpintf/filenametourlpath.html - URLPathToFilename lazhelpintf/urlpathtofilename.html - SplitURL lazhelpintf/spliturl.html - CombineURL lazhelpintf/combineurl.html - URLFilenameIsAbsolute lazhelpintf/urlfilenameisabsolute.html - FindURLPathStart lazhelpintf/findurlpathstart.html - FindURLPathEnd lazhelpintf/findurlpathend.html - ChompURLParams lazhelpintf/chompurlparams.html - ExtractURLPath lazhelpintf/extracturlpath.html - ExtractURLDirectory lazhelpintf/extracturldirectory.html - TrimUrl lazhelpintf/trimurl.html - TrimURLPath lazhelpintf/trimurlpath.html - IsFileURL lazhelpintf/isfileurl.html - AppendURLPathDelim lazhelpintf/appendurlpathdelim.html - CreateListAndAdd lazhelpintf/createlistandadd.html - CreateNodeQueryListAndAdd lazhelpintf/createnodequerylistandadd.html - HelpDatabases lazhelpintf/helpdatabases.html - HelpViewers lazhelpintf/helpviewers.html - Printers printers/index.html - TPrinterOrientation printers/tprinterorientation.html - TPrinterCapability printers/tprintercapability.html - TPrinterCapabilities printers/tprintercapabilities.html - TPrinterState printers/tprinterstate.html - TPrinterType printers/tprintertype.html - TPrinterCanvasRef printers/tprintercanvasref.html - TFilePrinterCanvasClass printers/tfileprintercanvasclass.html - TPaperRect printers/tpaperrect.html - TPaperItem printers/tpaperitem.html - TPrinterFlags printers/tprinterflags.html - EPrinter printers/eprinter.html - TPrinterCanvas printers/tprintercanvas.html - BeginDoc printers/tprintercanvas.begindoc.html - NewPage printers/tprintercanvas.newpage.html - EndDoc printers/tprintercanvas.enddoc.html - GetLeftMargin printers/tprintercanvas.getleftmargin.html - GetTopMargin printers/tprintercanvas.gettopmargin.html - GetBottomMargin printers/tprintercanvas.getbottommargin.html - GetRightMargin printers/tprintercanvas.getrightmargin.html - Create printers/tprintercanvas.create.html - Changing printers/tprintercanvas.changing.html - Printer printers/tprintercanvas.printer.html - Title printers/tprintercanvas.title.html - PageHeight printers/tprintercanvas.pageheight.html - PageWidth printers/tprintercanvas.pagewidth.html - PaperWidth printers/tprintercanvas.paperwidth.html - PaperHeight printers/tprintercanvas.paperheight.html - PageNumber printers/tprintercanvas.pagenumber.html - TopMargin printers/tprintercanvas.topmargin.html - LeftMargin printers/tprintercanvas.leftmargin.html - BottomMargin printers/tprintercanvas.bottommargin.html - RightMargin printers/tprintercanvas.rightmargin.html - Orientation printers/tprintercanvas.orientation.html - XDPI printers/tprintercanvas.xdpi.html - YDPI printers/tprintercanvas.ydpi.html - TFilePrinterCanvas printers/tfileprintercanvas.html - FOutputFileName printers/tfileprintercanvas.foutputfilename.html - OutputFileName printers/tfileprintercanvas.outputfilename.html - TPaperSize printers/tpapersize.html - DefaultPapers printers/tpapersize.defaultpapers.html - Width printers/tpapersize.width.html - Height printers/tpapersize.height.html - PaperName printers/tpapersize.papername.html - DefaultPaperName printers/tpapersize.defaultpapername.html - PaperRect printers/tpapersize.paperrect.html - SupportedPapers printers/tpapersize.supportedpapers.html - PaperRectOf printers/tpapersize.paperrectof.html - Create ms-its:rtl.chm::/system/tobject.create.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - TPrinter printers/tprinter.html - SelectCurrentPrinterOrDefault printers/tprinter.selectcurrentprinterordefault.html - DoBeginDoc printers/tprinter.dobegindoc.html - DoNewPage printers/tprinter.donewpage.html - DoEndDoc printers/tprinter.doenddoc.html - DoAbort printers/tprinter.doabort.html - DoResetPrintersList printers/tprinter.doresetprinterslist.html - DoResetFontsList printers/tprinter.doresetfontslist.html - DoEnumPrinters printers/tprinter.doenumprinters.html - DoEnumFonts printers/tprinter.doenumfonts.html - DoEnumPapers printers/tprinter.doenumpapers.html - DoEnumBins printers/tprinter.doenumbins.html - DoInitialization printers/tprinter.doinitialization.html - DoSetPrinter printers/tprinter.dosetprinter.html - DoGetCopies printers/tprinter.dogetcopies.html - DoSetCopies printers/tprinter.dosetcopies.html - DoGetOrientation printers/tprinter.dogetorientation.html - DoSetOrientation printers/tprinter.dosetorientation.html - DoGetDefaultPaperName printers/tprinter.dogetdefaultpapername.html - DoGetPaperName printers/tprinter.dogetpapername.html - DoSetPaperName printers/tprinter.dosetpapername.html - DoGetDefaultBinName printers/tprinter.dogetdefaultbinname.html - DoGetBinName printers/tprinter.dogetbinname.html - DoSetBinName printers/tprinter.dosetbinname.html - DoGetPaperRect printers/tprinter.dogetpaperrect.html - DoGetPrinterState printers/tprinter.dogetprinterstate.html - DoDestroy printers/tprinter.dodestroy.html - GetPrinterType printers/tprinter.getprintertype.html - GetCanPrint printers/tprinter.getcanprint.html - GetCanRenderCopies printers/tprinter.getcanrendercopies.html - GetXDPI printers/tprinter.getxdpi.html - GetYDPI printers/tprinter.getydpi.html - GetBins printers/tprinter.getbins.html - CheckRawMode printers/tprinter.checkrawmode.html - RawModeChanging printers/tprinter.rawmodechanging.html - PrinterSelected printers/tprinter.printerselected.html - DoGetDefaultCanvasClass printers/tprinter.dogetdefaultcanvasclass.html - PrinterFlags printers/tprinter.printerflags.html - Abort printers/tprinter.abort.html - BeginDoc printers/tprinter.begindoc.html - EndDoc printers/tprinter.enddoc.html - NewPage printers/tprinter.newpage.html - Refresh printers/tprinter.refresh.html - SetPrinter printers/tprinter.setprinter.html - RestoreDefaultBin printers/tprinter.restoredefaultbin.html - Write printers/tprinter.write.html - PrinterIndex printers/tprinter.printerindex.html - PrinterName printers/tprinter.printername.html - PaperSize printers/tprinter.papersize.html - Orientation printers/tprinter.orientation.html - PrinterState printers/tprinter.printerstate.html - Copies printers/tprinter.copies.html - Printers printers/tprinter.printers.html - FileName printers/tprinter.filename.html - Fonts printers/tprinter.fonts.html - Canvas printers/tprinter.canvas.html - CanvasClass printers/tprinter.canvasclass.html - PageHeight printers/tprinter.pageheight.html - PageWidth printers/tprinter.pagewidth.html - PageNumber printers/tprinter.pagenumber.html - Aborted printers/tprinter.aborted.html - Printing printers/tprinter.printing.html - Title printers/tprinter.title.html - PrinterType printers/tprinter.printertype.html - CanPrint printers/tprinter.canprint.html - CanRenderCopies printers/tprinter.canrendercopies.html - XDPI printers/tprinter.xdpi.html - YDPI printers/tprinter.ydpi.html - RawMode printers/tprinter.rawmode.html - DefaultBinName printers/tprinter.defaultbinname.html - BinName printers/tprinter.binname.html - SupportedBins printers/tprinter.supportedbins.html - Create ms-its:rtl.chm::/system/tobject.create.html - Destroy ms-its:rtl.chm::/system/tobject.destroy.html - Printer printers/printer.html - Grids grids/index.html - HowToUseGrids grids/howtousegrids.html - GRIDFILEVERSION grids/gridfileversion.html - GM_SETVALUE grids/gm_setvalue.html - GM_GETVALUE grids/gm_getvalue.html - GM_SETGRID grids/gm_setgrid.html - GM_SETBOUNDS grids/gm_setbounds.html - GM_SELECTALL grids/gm_selectall.html - GM_SETMASK grids/gm_setmask.html - GM_SETPOS grids/gm_setpos.html - GM_READY grids/gm_ready.html - GM_GETGRID grids/gm_getgrid.html - EO_AUTOSIZE grids/eo_autosize.html - EO_HOOKKEYDOWN grids/eo_hookkeydown.html - EO_HOOKKEYPRESS grids/eo_hookkeypress.html - EO_HOOKKEYUP grids/eo_hookkeyup.html - EO_SELECTALL grids/eo_selectall.html - EO_IMPLEMENTED grids/eo_implemented.html - DEFCOLWIDTH grids/defcolwidth.html - DEFROWHEIGHT grids/defrowheight.html - DEFBUTTONWIDTH grids/defbuttonwidth.html - soAll grids/soall.html - constRubberSpace grids/construbberspace.html - constCellPadding grids/constcellpadding.html - DefaultGridOptions grids/defaultgridoptions.html - TGridOption grids/tgridoption.html - TGridOptions grids/tgridoptions.html - TGridSaveOptions grids/tgridsaveoptions.html - TSaveOptions grids/tsaveoptions.html - TGridDrawState grids/tgriddrawstate.html - TGridState grids/tgridstate.html - TGridZone grids/tgridzone.html - TGridZoneSet grids/tgridzoneset.html - TAutoAdvance grids/tautoadvance.html - TRangeSelectMode grids/trangeselectmode.html - TItemType grids/titemtype.html - TColumnButtonStyle grids/tcolumnbuttonstyle.html - TTitleStyle grids/ttitlestyle.html - TGridFlagsOption grids/tgridflagsoption.html - TGridFlags grids/tgridflags.html - TSortOrder grids/tsortorder.html - TPrefixOption grids/tprefixoption.html - TMouseWheelOption grids/tmousewheeloption.html - TCellHintPriority grids/tcellhintpriority.html - PCellProps grids/pcellprops.html - TCellProps grids/tcellprops.html - PColRowProps grids/pcolrowprops.html - TColRowProps grids/tcolrowprops.html - PGridMessage grids/pgridmessage.html - TGridMessage grids/tgridmessage.html - TEditorItem grids/teditoritem.html - TOnDrawCell grids/tondrawcell.html - TOnSelectCellEvent grids/tonselectcellevent.html - TOnSelectEvent grids/tonselectevent.html - TGridOperationEvent grids/tgridoperationevent.html - THdrEvent grids/thdrevent.html - TOnCompareCells grids/toncomparecells.html - TSelectEditorEvent grids/tselecteditorevent.html - TOnPrepareCanvasEvent grids/tonpreparecanvasevent.html - TUserCheckBoxBitmapEvent grids/tusercheckboxbitmapevent.html - TValidateEntryEvent grids/tvalidateentryevent.html - TToggledCheckboxEvent grids/ttoggledcheckboxevent.html - THeaderSizingEvent grids/theadersizingevent.html - TGetCellHintEvent grids/tgetcellhintevent.html - TGridPropertyBackup grids/tgridpropertybackup.html - TGridCoord grids/tgridcoord.html - TGridRect grids/tgridrect.html - TGridRectArray grids/tgridrectarray.html - TSizingRec grids/tsizingrec.html - TGridDataCache grids/tgriddatacache.html - TGetEditEvent grids/tgeteditevent.html - TSetEditEvent grids/tseteditevent.html - TGetCheckboxStateEvent grids/tgetcheckboxstateevent.html - TSetCheckboxStateEvent grids/tsetcheckboxstateevent.html - EGridException grids/egridexception.html - TStringCellEditor grids/tstringcelleditor.html - msg_SetMask grids/tstringcelleditor.msg_setmask.html - msg_SetValue grids/tstringcelleditor.msg_setvalue.html - msg_GetValue grids/tstringcelleditor.msg_getvalue.html - msg_SetGrid grids/tstringcelleditor.msg_setgrid.html - msg_SelectAll grids/tstringcelleditor.msg_selectall.html - msg_SetPos grids/tstringcelleditor.msg_setpos.html - msg_GetGrid grids/tstringcelleditor.msg_getgrid.html - Create - EditText - OnEditingDone grids/tstringcelleditor.oneditingdone.html - WndProc controls/tcontrol.wndproc.html - Change stdctrls/tcustomedit.change.html - KeyDown controls/twincontrol.keydown.html - EditingDone controls/tcontrol.editingdone.html - TButtonCellEditor grids/tbuttoncelleditor.html - msg_SetGrid grids/tbuttoncelleditor.msg_setgrid.html - msg_SetBounds grids/tbuttoncelleditor.msg_setbounds.html - msg_SetPos grids/tbuttoncelleditor.msg_setpos.html - msg_Ready grids/tbuttoncelleditor.msg_ready.html - msg_GetGrid grids/tbuttoncelleditor.msg_getgrid.html - Col grids/tbuttoncelleditor.col.html - Row grids/tbuttoncelleditor.row.html - TPickListCellEditor grids/tpicklistcelleditor.html - Change stdctrls/tcustomcombobox.change.html - msg_GetValue grids/tpicklistcelleditor.msg_getvalue.html - msg_SetGrid grids/tpicklistcelleditor.msg_setgrid.html - msg_SetValue grids/tpicklistcelleditor.msg_setvalue.html - msg_SetPos grids/tpicklistcelleditor.msg_setpos.html - msg_GetGrid grids/tpicklistcelleditor.msg_getgrid.html - OnEditingDone grids/tpicklistcelleditor.oneditingdone.html - WndProc controls/tcontrol.wndproc.html - KeyDown controls/twincontrol.keydown.html - DropDown - CloseUp stdctrls/tcustomcombobox.closeup.html - Select stdctrls/tcustomcombobox.select.html - EditingDone controls/tcontrol.editingdone.html - BorderStyle controls/twincontrol.borderstyle.html - TCompositeCellEditor grids/tcompositecelleditor.html - msg_GetValue grids/tcompositecelleditor.msg_getvalue.html - msg_SetGrid grids/tcompositecelleditor.msg_setgrid.html - msg_SetValue grids/tcompositecelleditor.msg_setvalue.html - msg_SetBounds grids/tcompositecelleditor.msg_setbounds.html - msg_SetMask grids/tcompositecelleditor.msg_setmask.html - msg_SelectAll grids/tcompositecelleditor.msg_selectall.html - CMControlChange grids/tcompositecelleditor.cmcontrolchange.html - msg_SetPos grids/tcompositecelleditor.msg_setpos.html - msg_GetGrid grids/tcompositecelleditor.msg_getgrid.html - GetActiveControl grids/tcompositecelleditor.getactivecontrol.html - SendChar grids/tcompositecelleditor.sendchar.html - AddEditor grids/tcompositecelleditor.addeditor.html - Focused controls/twincontrol.focused.html - MaxLength grids/tcompositecelleditor.maxlength.html - ActiveControl grids/tcompositecelleditor.activecontrol.html - DoUTF8KeyPress - VisibleChanging controls/tcontrol.visiblechanging.html - WndProc controls/tcontrol.wndproc.html - Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html - SetFocus controls/twincontrol.setfocus.html - TVirtualGrid grids/tvirtualgrid.html - doDestroyItem grids/tvirtualgrid.dodestroyitem.html - doNewItem grids/tvirtualgrid.donewitem.html - DeleteColRow grids/tvirtualgrid.deletecolrow.html - MoveColRow grids/tvirtualgrid.movecolrow.html - ExchangeColRow grids/tvirtualgrid.exchangecolrow.html - InsertColRow grids/tvirtualgrid.insertcolrow.html - DisposeCell grids/tvirtualgrid.disposecell.html - DisposeColRow grids/tvirtualgrid.disposecolrow.html - Create grids/tvirtualgrid.create.html - Destroy grids/tvirtualgrid.destroy.html - Clear grids/tvirtualgrid.clear.html - GetDefaultCell grids/tvirtualgrid.getdefaultcell.html - GetDefaultColRow grids/tvirtualgrid.getdefaultcolrow.html - ColCount grids/tvirtualgrid.colcount.html - RowCount grids/tvirtualgrid.rowcount.html - Celda grids/tvirtualgrid.celda.html - Cols grids/tvirtualgrid.cols.html - Rows grids/tvirtualgrid.rows.html - TGridColumnTitle grids/tgridcolumntitle.html - GetDefaultCaption grids/tgridcolumntitle.getdefaultcaption.html - GetDefaultAlignment grids/tgridcolumntitle.getdefaultalignment.html - GetDefaultColor grids/tgridcolumntitle.getdefaultcolor.html - GetDefaultLayout grids/tgridcolumntitle.getdefaultlayout.html - GetOwner grids/tgridcolumntitle.getowner.html - SetCaption grids/tgridcolumntitle.setcaption.html - Create grids/tgridcolumntitle.create.html - Destroy grids/tgridcolumntitle.destroy.html - FillTitleDefaultFont grids/tgridcolumntitle.filltitledefaultfont.html - IsDefault grids/tgridcolumntitle.isdefault.html - Column grids/tgridcolumntitle.column.html - Alignment grids/tgridcolumntitle.alignment.html - Caption grids/tgridcolumntitle.caption.html - Color grids/tgridcolumntitle.color.html - Font grids/tgridcolumntitle.font.html - ImageIndex grids/tgridcolumntitle.imageindex.html - ImageLayout grids/tgridcolumntitle.imagelayout.html - Layout grids/tgridcolumntitle.layout.html - MultiLine grids/tgridcolumntitle.multiline.html - PrefixOption grids/tgridcolumntitle.prefixoption.html - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html - TGridColumn grids/tgridcolumn.html - GetDefaultAlignment grids/tgridcolumn.getdefaultalignment.html - GetDefaultColor grids/tgridcolumn.getdefaultcolor.html - GetDefaultLayout grids/tgridcolumn.getdefaultlayout.html - GetDefaultMaxSize grids/tgridcolumn.getdefaultmaxsize.html - GetDefaultMinSize grids/tgridcolumn.getdefaultminsize.html - GetDefaultReadOnly grids/tgridcolumn.getdefaultreadonly.html - GetDefaultSizePriority grids/tgridcolumn.getdefaultsizepriority.html - GetDefaultVisible grids/tgridcolumn.getdefaultvisible.html - GetDefaultValueChecked grids/tgridcolumn.getdefaultvaluechecked.html - GetDefaultValueUnchecked grids/tgridcolumn.getdefaultvalueunchecked.html - GetDefaultWidth grids/tgridcolumn.getdefaultwidth.html - GetPickList grids/tgridcolumn.getpicklist.html - GetValueChecked grids/tgridcolumn.getvaluechecked.html - GetValueUnchecked grids/tgridcolumn.getvalueunchecked.html - ColumnChanged grids/tgridcolumn.columnchanged.html - AllColumnsChange grids/tgridcolumn.allcolumnschange.html - CreateTitle grids/tgridcolumn.createtitle.html - SetIndex grids/tgridcolumn.setindex.html - IsDefaultFont grids/tgridcolumn.isdefaultfont.html - Create grids/tgridcolumn.create.html - Destroy grids/tgridcolumn.destroy.html - FillDefaultFont grids/tgridcolumn.filldefaultfont.html - IsDefault grids/tgridcolumn.isdefault.html - Grid grids/tgridcolumn.grid.html - WidthChanged grids/tgridcolumn.widthchanged.html - Alignment grids/tgridcolumn.alignment.html - ButtonStyle grids/tgridcolumn.buttonstyle.html - Color grids/tgridcolumn.color.html - DropDownRows grids/tgridcolumn.dropdownrows.html - Expanded grids/tgridcolumn.expanded.html - Font grids/tgridcolumn.font.html - Layout grids/tgridcolumn.layout.html - MinSize grids/tgridcolumn.minsize.html - MaxSize grids/tgridcolumn.maxsize.html - PickList grids/tgridcolumn.picklist.html - ReadOnly grids/tgridcolumn.readonly.html - SizePriority grids/tgridcolumn.sizepriority.html - Tag grids/tgridcolumn.tag.html - Title grids/tgridcolumn.title.html - Width grids/tgridcolumn.width.html - Visible grids/tgridcolumn.visible.html - ValueChecked grids/tgridcolumn.valuechecked.html - ValueUnchecked grids/tgridcolumn.valueunchecked.html - GetDisplayName - Assign ms-its:rtl.chm::/classes/tpersistent.assign.html - TGridColumns grids/tgridcolumns.html - GetOwner grids/tgridcolumns.getowner.html - TitleFontChanged grids/tgridcolumns.titlefontchanged.html - FontChanged grids/tgridcolumns.fontchanged.html - RemoveColumn grids/tgridcolumns.removecolumn.html - MoveColumn grids/tgridcolumns.movecolumn.html - ExchangeColumn grids/tgridcolumns.exchangecolumn.html - InsertColumn grids/tgridcolumns.insertcolumn.html - Create grids/tgridcolumns.create.html - RealIndex grids/tgridcolumns.realindex.html - IndexOf grids/tgridcolumns.indexof.html - IsDefault grids/tgridcolumns.isdefault.html - HasIndex grids/tgridcolumns.hasindex.html - VisibleIndex grids/tgridcolumns.visibleindex.html - Grid grids/tgridcolumns.grid.html - Items grids/tgridcolumns.items.html - VisibleCount grids/tgridcolumns.visiblecount.html - Enabled grids/tgridcolumns.enabled.html - Update - Add ms-its:rtl.chm::/classes/tcollection.add.html - Clear ms-its:rtl.chm::/classes/tcollection.clear.html - TCustomGrid grids/tcustomgrid.html - fGridState grids/tcustomgrid.fgridstate.html - AddSelectedRange grids/tcustomgrid.addselectedrange.html - AdjustClientRect grids/tcustomgrid.adjustclientrect.html - AdjustEditorBounds grids/tcustomgrid.adjusteditorbounds.html - AssignTo grids/tcustomgrid.assignto.html - AutoAdjustColumn grids/tcustomgrid.autoadjustcolumn.html - BeforeMoveSelection grids/tcustomgrid.beforemoveselection.html - BeginAutoDrag grids/tcustomgrid.beginautodrag.html - BoxRect grids/tcustomgrid.boxrect.html - CacheMouseDown grids/tcustomgrid.cachemousedown.html - CalcAutoSizeColumn grids/tcustomgrid.calcautosizecolumn.html - CalcFocusRect grids/tcustomgrid.calcfocusrect.html - CalcMaxTopLeft grids/tcustomgrid.calcmaxtopleft.html - CalcScrollbarsRange grids/tcustomgrid.calcscrollbarsrange.html - CanEditShow grids/tcustomgrid.caneditshow.html - CanGridAcceptKey grids/tcustomgrid.cangridacceptkey.html - CellClick grids/tcustomgrid.cellclick.html - CheckLimits grids/tcustomgrid.checklimits.html - CheckLimitsWithError grids/tcustomgrid.checklimitswitherror.html - ClearSelections grids/tcustomgrid.clearselections.html - CMBiDiModeChanged grids/tcustomgrid.cmbidimodechanged.html - CMMouseEnter grids/tcustomgrid.cmmouseenter.html - CMMouseLeave grids/tcustomgrid.cmmouseleave.html - ColRowDeleted grids/tcustomgrid.colrowdeleted.html - ColRowExchanged grids/tcustomgrid.colrowexchanged.html - ColRowInserted grids/tcustomgrid.colrowinserted.html - ColRowMoved grids/tcustomgrid.colrowmoved.html - ColRowToOffset grids/tcustomgrid.colrowtooffset.html - ColumnIndexFromGridColumn grids/tcustomgrid.columnindexfromgridcolumn.html - ColumnFromGridColumn grids/tcustomgrid.columnfromgridcolumn.html - ColumnsChanged grids/tcustomgrid.columnschanged.html - ColWidthsChanged grids/tcustomgrid.colwidthschanged.html - CreateColumns grids/tcustomgrid.createcolumns.html - CheckNewCachedSizes grids/tcustomgrid.checknewcachedsizes.html - DialogChar grids/tcustomgrid.dialogchar.html - DoCompareCells grids/tcustomgrid.docomparecells.html - DoCopyToClipboard grids/tcustomgrid.docopytoclipboard.html - DoCutToClipboard grids/tcustomgrid.docuttoclipboard.html - DoEditButtonClick grids/tcustomgrid.doeditbuttonclick.html - DoEditorHide grids/tcustomgrid.doeditorhide.html - DoEditorShow grids/tcustomgrid.doeditorshow.html - DoMouseWheel grids/tcustomgrid.domousewheel.html - DoOPDeleteColRow grids/tcustomgrid.doopdeletecolrow.html - DoOPExchangeColRow grids/tcustomgrid.doopexchangecolrow.html - DoOPInsertColRow grids/tcustomgrid.doopinsertcolrow.html - DoOPMoveColRow grids/tcustomgrid.doopmovecolrow.html - DoPasteFromClipboard grids/tcustomgrid.dopastefromclipboard.html - DoPrepareCanvas grids/tcustomgrid.dopreparecanvas.html - DrawBorder grids/tcustomgrid.drawborder.html - DrawFillRect grids/tcustomgrid.drawfillrect.html - DrawCell grids/tcustomgrid.drawcell.html - DrawCellGrid grids/tcustomgrid.drawcellgrid.html - DrawTextInCell grids/tcustomgrid.drawtextincell.html - DrawThemedCell grids/tcustomgrid.drawthemedcell.html - DrawCellText grids/tcustomgrid.drawcelltext.html - DrawGridCheckboxBitmaps grids/tcustomgrid.drawgridcheckboxbitmaps.html - DrawButtonCell grids/tcustomgrid.drawbuttoncell.html - DrawColRowMoving grids/tcustomgrid.drawcolrowmoving.html - DrawColumnText grids/tcustomgrid.drawcolumntext.html - DrawColumnTitleImage grids/tcustomgrid.drawcolumntitleimage.html - DrawEdges grids/tcustomgrid.drawedges.html - DrawFocusRect grids/tcustomgrid.drawfocusrect.html - DrawRow grids/tcustomgrid.drawrow.html - EditButtonClicked grids/tcustomgrid.editbuttonclicked.html - EditordoGetValue grids/tcustomgrid.editordogetvalue.html - EditordoSetValue grids/tcustomgrid.editordosetvalue.html - EditorCanAcceptKey grids/tcustomgrid.editorcanacceptkey.html - EditorIsReadOnly grids/tcustomgrid.editorisreadonly.html - EditorHide grids/tcustomgrid.editorhide.html - EditorLocked grids/tcustomgrid.editorlocked.html - EditingAllowed grids/tcustomgrid.editingallowed.html - EditorSelectAll grids/tcustomgrid.editorselectall.html - EditorShow grids/tcustomgrid.editorshow.html - EditorShowInCell grids/tcustomgrid.editorshowincell.html - EditorTextChanged grids/tcustomgrid.editortextchanged.html - EditorWidthChanged grids/tcustomgrid.editorwidthchanged.html - FirstGridColumn grids/tcustomgrid.firstgridcolumn.html - FixedGrid grids/tcustomgrid.fixedgrid.html - FontChanged grids/tcustomgrid.fontchanged.html - GetAutoFillColumnInfo grids/tcustomgrid.getautofillcolumninfo.html - GetCellHintText grids/tcustomgrid.getcellhinttext.html - GetCells grids/tcustomgrid.getcells.html - GetColumnAlignment grids/tcustomgrid.getcolumnalignment.html - GetColumnColor grids/tcustomgrid.getcolumncolor.html - GetColumnFont grids/tcustomgrid.getcolumnfont.html - GetColumnLayout grids/tcustomgrid.getcolumnlayout.html - GetColumnReadonly grids/tcustomgrid.getcolumnreadonly.html - GetColumnTitle grids/tcustomgrid.getcolumntitle.html - GetColumnWidth grids/tcustomgrid.getcolumnwidth.html - GetDeltaMoveNext grids/tcustomgrid.getdeltamovenext.html - GetDefaultColumnAlignment grids/tcustomgrid.getdefaultcolumnalignment.html - GetDefaultColumnWidth grids/tcustomgrid.getdefaultcolumnwidth.html - GetDefaultColumnLayout grids/tcustomgrid.getdefaultcolumnlayout.html - GetDefaultColumnReadOnly grids/tcustomgrid.getdefaultcolumnreadonly.html - GetDefaultColumnTitle grids/tcustomgrid.getdefaultcolumntitle.html - GetDefaultEditor grids/tcustomgrid.getdefaulteditor.html - GetDefaultRowHeight grids/tcustomgrid.getdefaultrowheight.html - GetGridDrawState grids/tcustomgrid.getgriddrawstate.html - GetImageForCheckBox grids/tcustomgrid.getimageforcheckbox.html - GetScrollBarPosition grids/tcustomgrid.getscrollbarposition.html - GetSBVisibility grids/tcustomgrid.getsbvisibility.html - GetSBRanges grids/tcustomgrid.getsbranges.html - GetSelectedState grids/tcustomgrid.getselectedstate.html - GetEditMask grids/tcustomgrid.geteditmask.html - GetEditText grids/tcustomgrid.getedittext.html - GetFixedcolor grids/tcustomgrid.getfixedcolor.html - GetFirstVisibleColumn grids/tcustomgrid.getfirstvisiblecolumn.html - GetFirstVisibleRow grids/tcustomgrid.getfirstvisiblerow.html - GetLastVisibleColumn grids/tcustomgrid.getlastvisiblecolumn.html - GetLastVisibleRow grids/tcustomgrid.getlastvisiblerow.html - GetSelectedColor grids/tcustomgrid.getselectedcolor.html - GetTitleShowPrefix grids/tcustomgrid.gettitleshowprefix.html - GetTruncCellHintText grids/tcustomgrid.gettrunccellhinttext.html - GridColumnFromColumnIndex grids/tcustomgrid.gridcolumnfromcolumnindex.html - GridMouseWheel grids/tcustomgrid.gridmousewheel.html - HeaderClick grids/tcustomgrid.headerclick.html - HeaderSized grids/tcustomgrid.headersized.html - HeaderSizing grids/tcustomgrid.headersizing.html - HideCellHintWindow grids/tcustomgrid.hidecellhintwindow.html - InternalSetColCount grids/tcustomgrid.internalsetcolcount.html - InvalidateCell grids/tcustomgrid.invalidatecell.html - InvalidateFromCol grids/tcustomgrid.invalidatefromcol.html - InvalidateGrid grids/tcustomgrid.invalidategrid.html - InvalidateFocused grids/tcustomgrid.invalidatefocused.html - GetIsCellTitle grids/tcustomgrid.getiscelltitle.html - GetIsCellSelected grids/tcustomgrid.getiscellselected.html - IsMouseOverCellButton grids/tcustomgrid.ismouseovercellbutton.html - KeyPress grids/tcustomgrid.keypress.html - LoadContent grids/tcustomgrid.loadcontent.html - LockEditor grids/tcustomgrid.lockeditor.html - MouseButtonAllowed grids/tcustomgrid.mousebuttonallowed.html - MoveExtend grids/tcustomgrid.moveextend.html - MoveNextAuto grids/tcustomgrid.movenextauto.html - MoveNextSelectable grids/tcustomgrid.movenextselectable.html - MoveSelection grids/tcustomgrid.moveselection.html - OffsetToColRow grids/tcustomgrid.offsettocolrow.html - PickListItemSelected grids/tcustomgrid.picklistitemselected.html - PrepareCanvas grids/tcustomgrid.preparecanvas.html - PrepareCellHints grids/tcustomgrid.preparecellhints.html - ResetDefaultColWidths grids/tcustomgrid.resetdefaultcolwidths.html - ResetEditor grids/tcustomgrid.reseteditor.html - ResetOffset grids/tcustomgrid.resetoffset.html - ResetSizes grids/tcustomgrid.resetsizes.html - ResizeColumn grids/tcustomgrid.resizecolumn.html - ResizeRow grids/tcustomgrid.resizerow.html - RowHeightsChanged grids/tcustomgrid.rowheightschanged.html - SaveContent grids/tcustomgrid.savecontent.html - ScrollBarRange grids/tcustomgrid.scrollbarrange.html - ScrollBarPosition grids/tcustomgrid.scrollbarposition.html - ScrollBarIsVisible grids/tcustomgrid.scrollbarisvisible.html - ScrollBarPage grids/tcustomgrid.scrollbarpage.html - ScrollBarShow grids/tcustomgrid.scrollbarshow.html - ScrollBarAutomatic grids/tcustomgrid.scrollbarautomatic.html - SelectEditor grids/tcustomgrid.selecteditor.html - SelectCell grids/tcustomgrid.selectcell.html - SetCanvasFont grids/tcustomgrid.setcanvasfont.html - SetColor grids/tcustomgrid.setcolor.html - SetColRow grids/tcustomgrid.setcolrow.html - SetEditText grids/tcustomgrid.setedittext.html - SetBorderStyle grids/tcustomgrid.setborderstyle.html - SetFixedcolor grids/tcustomgrid.setfixedcolor.html - SetFixedCols grids/tcustomgrid.setfixedcols.html - SetRawColWidths grids/tcustomgrid.setrawcolwidths.html - SetSelectedColor grids/tcustomgrid.setselectedcolor.html - ShowCellHintWindow grids/tcustomgrid.showcellhintwindow.html - SizeChanged grids/tcustomgrid.sizechanged.html - Sort grids/tcustomgrid.sort.html - TopLeftChanged grids/tcustomgrid.topleftchanged.html - TryMoveSelection grids/tcustomgrid.trymoveselection.html - UnLockEditor grids/tcustomgrid.unlockeditor.html - UnprepareCellHints grids/tcustomgrid.unpreparecellhints.html - UpdateHorzScrollBar grids/tcustomgrid.updatehorzscrollbar.html - UpdateSelectionRange grids/tcustomgrid.updateselectionrange.html - UpdateVertScrollbar grids/tcustomgrid.updatevertscrollbar.html - UpdateBorderStyle grids/tcustomgrid.updateborderstyle.html - ValidateEntry grids/tcustomgrid.validateentry.html - VisualChange grids/tcustomgrid.visualchange.html - WMHScroll grids/tcustomgrid.wmhscroll.html - WMVScroll grids/tcustomgrid.wmvscroll.html - AllowOutboundEvents grids/tcustomgrid.allowoutboundevents.html - AlternateColor grids/tcustomgrid.alternatecolor.html - AutoAdvance grids/tcustomgrid.autoadvance.html - AutoEdit grids/tcustomgrid.autoedit.html - AutoFillColumns grids/tcustomgrid.autofillcolumns.html - BorderColor grids/tcustomgrid.bordercolor.html - CellHintPriority grids/tcustomgrid.cellhintpriority.html - Col grids/tcustomgrid.col.html - ColCount grids/tcustomgrid.colcount.html - ColumnClickSorts grids/tcustomgrid.columnclicksorts.html - Columns grids/tcustomgrid.columns.html - ColWidths grids/tcustomgrid.colwidths.html - DefaultColWidth grids/tcustomgrid.defaultcolwidth.html - DefaultRowHeight grids/tcustomgrid.defaultrowheight.html - DefaultDrawing grids/tcustomgrid.defaultdrawing.html - DefaultTextStyle grids/tcustomgrid.defaulttextstyle.html - DragDx grids/tcustomgrid.dragdx.html - Editor grids/tcustomgrid.editor.html - EditorBorderStyle grids/tcustomgrid.editorborderstyle.html - EditorMode grids/tcustomgrid.editormode.html - EditorKey grids/tcustomgrid.editorkey.html - EditorOptions grids/tcustomgrid.editoroptions.html - EditorShowing grids/tcustomgrid.editorshowing.html - ExtendedColSizing grids/tcustomgrid.extendedcolsizing.html - ExtendedRowSizing grids/tcustomgrid.extendedrowsizing.html - ExtendedSelect grids/tcustomgrid.extendedselect.html - FastEditing grids/tcustomgrid.fastediting.html - AltColorStartNormal grids/tcustomgrid.altcolorstartnormal.html - FixedCols grids/tcustomgrid.fixedcols.html - FixedRows grids/tcustomgrid.fixedrows.html - FixedColor grids/tcustomgrid.fixedcolor.html - FixedHotColor grids/tcustomgrid.fixedhotcolor.html - Flat grids/tcustomgrid.flat.html - FocusColor grids/tcustomgrid.focuscolor.html - FocusRectVisible grids/tcustomgrid.focusrectvisible.html - GCache grids/tcustomgrid.gcache.html - GridFlags grids/tcustomgrid.gridflags.html - GridHeight grids/tcustomgrid.gridheight.html - GridLineColor grids/tcustomgrid.gridlinecolor.html - GridLineStyle grids/tcustomgrid.gridlinestyle.html - GridLineWidth grids/tcustomgrid.gridlinewidth.html - GridWidth grids/tcustomgrid.gridwidth.html - HeaderHotZones grids/tcustomgrid.headerhotzones.html - HeaderPushZones grids/tcustomgrid.headerpushzones.html - TabAdvance grids/tcustomgrid.tabadvance.html - TitleImageList grids/tcustomgrid.titleimagelist.html - InplaceEditor grids/tcustomgrid.inplaceeditor.html - IsCellSelected grids/tcustomgrid.iscellselected.html - LeftCol grids/tcustomgrid.leftcol.html - MouseWheelOption grids/tcustomgrid.mousewheeloption.html - Options grids/tcustomgrid.options.html - RangeSelectMode grids/tcustomgrid.rangeselectmode.html - Row grids/tcustomgrid.row.html - RowCount grids/tcustomgrid.rowcount.html - RowHeights grids/tcustomgrid.rowheights.html - SaveOptions grids/tcustomgrid.saveoptions.html - SelectActive grids/tcustomgrid.selectactive.html - SelectedColor grids/tcustomgrid.selectedcolor.html - SelectedColumn grids/tcustomgrid.selectedcolumn.html - Selection grids/tcustomgrid.selection.html - ScrollBars grids/tcustomgrid.scrollbars.html - StrictSort grids/tcustomgrid.strictsort.html - TitleFont grids/tcustomgrid.titlefont.html - TitleStyle grids/tcustomgrid.titlestyle.html - TopRow grids/tcustomgrid.toprow.html - UseXORFeatures grids/tcustomgrid.usexorfeatures.html - VisibleColCount grids/tcustomgrid.visiblecolcount.html - VisibleRowCount grids/tcustomgrid.visiblerowcount.html - OnBeforeSelection grids/tcustomgrid.onbeforeselection.html - OnCheckboxToggled grids/tcustomgrid.oncheckboxtoggled.html - OnCompareCells grids/tcustomgrid.oncomparecells.html - OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html - OnDrawCell grids/tcustomgrid.ondrawcell.html - OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html - OnButtonClick grids/tcustomgrid.onbuttonclick.html - OnPickListSelect grids/tcustomgrid.onpicklistselect.html - OnSelection grids/tcustomgrid.onselection.html - OnSelectEditor grids/tcustomgrid.onselecteditor.html - OnTopLeftChanged grids/tcustomgrid.ontopleftchanged.html - OnUserCheckboxBitmap grids/tcustomgrid.onusercheckboxbitmap.html - OnValidateEntry grids/tcustomgrid.onvalidateentry.html - FlipRect grids/tcustomgrid.fliprect.html - FlipPoint grids/tcustomgrid.flippoint.html - FlipX grids/tcustomgrid.flipx.html - OnGetCellHint grids/tcustomgrid.ongetcellhint.html - Create grids/tcustomgrid.create.html - Destroy grids/tcustomgrid.destroy.html - AutoAdjustColumns grids/tcustomgrid.autoadjustcolumns.html - BeginUpdate grids/tcustomgrid.beginupdate.html - CellRect grids/tcustomgrid.cellrect.html - CellToGridZone grids/tcustomgrid.celltogridzone.html - CheckPosition grids/tcustomgrid.checkposition.html - Clear grids/tcustomgrid.clear.html - EditorByStyle grids/tcustomgrid.editorbystyle.html - EditorKeyDown grids/tcustomgrid.editorkeydown.html - EditorKeyPress grids/tcustomgrid.editorkeypress.html - EditorKeyUp grids/tcustomgrid.editorkeyup.html - EndUpdate grids/tcustomgrid.endupdate.html - EraseBackground grids/tcustomgrid.erasebackground.html - Focused grids/tcustomgrid.focused.html - HasMultiSelection grids/tcustomgrid.hasmultiselection.html - InvalidateCol grids/tcustomgrid.invalidatecol.html - InvalidateRange grids/tcustomgrid.invalidaterange.html - InvalidateRow grids/tcustomgrid.invalidaterow.html - IsCellVisible grids/tcustomgrid.iscellvisible.html - IsFixedCellVisible grids/tcustomgrid.isfixedcellvisible.html - LoadFromFile grids/tcustomgrid.loadfromfile.html - LoadFromStream grids/tcustomgrid.loadfromstream.html - MouseCoord grids/tcustomgrid.mousecoord.html - MouseToCell grids/tcustomgrid.mousetocell.html - MouseToLogcell grids/tcustomgrid.mousetologcell.html - MouseToGridZone grids/tcustomgrid.mousetogridzone.html - SaveToFile grids/tcustomgrid.savetofile.html - SaveToStream grids/tcustomgrid.savetostream.html - SetFocus grids/tcustomgrid.setfocus.html - SelectedRange grids/tcustomgrid.selectedrange.html - SelectedRangeCount grids/tcustomgrid.selectedrangecount.html - SortOrder grids/tcustomgrid.sortorder.html - SortColumn grids/tcustomgrid.sortcolumn.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - CreateWnd controls/twincontrol.createwnd.html - CreateParams controls/twincontrol.createparams.html - Click controls/tcontrol.click.html - DblClick controls/tcontrol.dblclick.html - DefineProperties - DestroyHandle controls/twincontrol.destroyhandle.html - DoExit controls/twincontrol.doexit.html - DoEnter controls/twincontrol.doenter.html - DoMouseWheelDown controls/tcontrol.domousewheeldown.html - DoMouseWheelUp controls/tcontrol.domousewheelup.html - DoOnChangeBounds controls/tcontrol.doonchangebounds.html - DoSetBounds controls/tcontrol.dosetbounds.html - DoUTF8KeyPress - DrawAllRows - KeyDown controls/twincontrol.keydown.html - KeyUp controls/twincontrol.keyup.html - Loaded - MouseDown controls/tcontrol.mousedown.html - MouseMove controls/tcontrol.mousemove.html - MouseUp controls/tcontrol.mouseup.html - Paint controls/tcustomcontrol.paint.html - WMKillFocus controls/twincontrol.wmkillfocus.html - WMSetFocus controls/twincontrol.wmsetfocus.html - WndProc controls/tcontrol.wndproc.html - BorderStyle controls/twincontrol.borderstyle.html - Invalidate controls/tcontrol.invalidate.html - EditingDone controls/tcontrol.editingdone.html - TabStop controls/twincontrol.tabstop.html - TCustomDrawGrid grids/tcustomdrawgrid.html - FGrid grids/tcustomdrawgrid.fgrid.html - CalcCellExtent grids/tcustomdrawgrid.calccellextent.html - CellClick grids/tcustomgrid.cellclick.html - CreateVirtualGrid grids/tcustomdrawgrid.createvirtualgrid.html - DrawCellAutonumbering grids/tcustomdrawgrid.drawcellautonumbering.html - DrawFocusRect grids/tcustomdrawgrid.drawfocusrect.html - GetCheckBoxState grids/tcustomdrawgrid.getcheckboxstate.html - GridMouseWheel grids/tcustomdrawgrid.gridmousewheel.html - HeaderSizing grids/tcustomdrawgrid.headersizing.html - KeyDown - NotifyColRowChange grids/tcustomdrawgrid.notifycolrowchange.html - SetCheckboxState grids/tcustomdrawgrid.setcheckboxstate.html - ToggleCheckbox grids/tcustomdrawgrid.togglecheckbox.html - OnGetCheckboxState grids/tcustomdrawgrid.ongetcheckboxstate.html - OnSetCheckboxState grids/tcustomdrawgrid.onsetcheckboxstate.html - Create grids/tcustomdrawgrid.create.html - Destroy grids/tcustomdrawgrid.destroy.html - DeleteColRow grids/tcustomdrawgrid.deletecolrow.html - DeleteCol grids/tcustomdrawgrid.deletecol.html - DeleteRow grids/tcustomdrawgrid.deleterow.html - ExchangeColRow grids/tcustomdrawgrid.exchangecolrow.html - InsertColRow grids/tcustomdrawgrid.insertcolrow.html - MoveColRow grids/tcustomdrawgrid.movecolrow.html - SortColRow grids/tcustomdrawgrid.sortcolrow.html - DefaultDrawCell grids/tcustomdrawgrid.defaultdrawcell.html - TabAdvance grids/tcustomdrawgrid.tabadvance.html - OnColRowDeleted grids/tcustomdrawgrid.oncolrowdeleted.html - OnColRowExchanged grids/tcustomdrawgrid.oncolrowexchanged.html - OnColRowInserted grids/tcustomdrawgrid.oncolrowinserted.html - OnColRowMoved grids/tcustomdrawgrid.oncolrowmoved.html - OnCompareCells grids/tcustomdrawgrid.oncomparecells.html - OnButtonClick grids/tcustomdrawgrid.onbuttonclick.html - OnGetEditMask grids/tcustomdrawgrid.ongeteditmask.html - OnGetEditText grids/tcustomdrawgrid.ongetedittext.html - OnHeaderClick grids/tcustomdrawgrid.onheaderclick.html - OnHeaderSized grids/tcustomdrawgrid.onheadersized.html - OnHeaderSizing grids/tcustomdrawgrid.onheadersizing.html - OnMouseEnter grids/tcustomdrawgrid.onmouseenter.html - OnMouseLeave grids/tcustomdrawgrid.onmouseleave.html - OnMouseWheel grids/tcustomdrawgrid.onmousewheel.html - OnSelectCell grids/tcustomdrawgrid.onselectcell.html - OnSetEditText grids/tcustomdrawgrid.onsetedittext.html - ColRowDeleted grids/tcustomgrid.colrowdeleted.html - ColRowExchanged grids/tcustomgrid.colrowexchanged.html - ColRowInserted grids/tcustomgrid.colrowinserted.html - ColRowMoved grids/tcustomgrid.colrowmoved.html - DrawCell grids/tcustomgrid.drawcell.html - GetEditMask grids/tcustomgrid.geteditmask.html - GetEditText grids/tcustomgrid.getedittext.html - HeaderClick grids/tcustomgrid.headerclick.html - HeaderSized grids/tcustomgrid.headersized.html - SelectCell grids/tcustomgrid.selectcell.html - SetColor grids/tcustomgrid.setcolor.html - SetEditText grids/tcustomgrid.setedittext.html - SizeChanged grids/tcustomgrid.sizechanged.html - AllowOutboundEvents grids/tcustomgrid.allowoutboundevents.html - BorderColor grids/tcustomgrid.bordercolor.html - Canvas controls/tcustomcontrol.canvas.html - Col grids/tcustomgrid.col.html - ColWidths grids/tcustomgrid.colwidths.html - Editor grids/tcustomgrid.editor.html - EditorBorderStyle grids/tcustomgrid.editorborderstyle.html - EditorMode grids/tcustomgrid.editormode.html - ExtendedColSizing grids/tcustomgrid.extendedcolsizing.html - AltColorStartNormal grids/tcustomgrid.altcolorstartnormal.html - FastEditing grids/tcustomgrid.fastediting.html - FocusColor grids/tcustomgrid.focuscolor.html - FocusRectVisible grids/tcustomgrid.focusrectvisible.html - GridHeight grids/tcustomgrid.gridheight.html - GridLineColor grids/tcustomgrid.gridlinecolor.html - GridLineStyle grids/tcustomgrid.gridlinestyle.html - GridWidth grids/tcustomgrid.gridwidth.html - IsCellSelected grids/tcustomgrid.iscellselected.html - LeftCol grids/tcustomgrid.leftcol.html - Row grids/tcustomgrid.row.html - RowHeights grids/tcustomgrid.rowheights.html - SaveOptions grids/tcustomgrid.saveoptions.html - SelectedColor grids/tcustomgrid.selectedcolor.html - SelectedColumn grids/tcustomgrid.selectedcolumn.html - Selection grids/tcustomgrid.selection.html - StrictSort grids/tcustomgrid.strictsort.html - TopRow grids/tcustomgrid.toprow.html - UseXORFeatures grids/tcustomgrid.usexorfeatures.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoAdvance grids/tcustomgrid.autoadvance.html - AutoFillColumns grids/tcustomgrid.autofillcolumns.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - Color controls/tcontrol.color.html - ColCount grids/tcustomgrid.colcount.html - Columns grids/tcustomgrid.columns.html - Constraints controls/tcontrol.constraints.html - DefaultColWidth grids/tcustomgrid.defaultcolwidth.html - DefaultDrawing grids/tcustomgrid.defaultdrawing.html - DefaultRowHeight grids/tcustomgrid.defaultrowheight.html - Enabled controls/tcontrol.enabled.html - FixedColor grids/tcustomgrid.fixedcolor.html - FixedCols grids/tcustomgrid.fixedcols.html - FixedHotColor grids/tcustomgrid.fixedhotcolor.html - FixedRows grids/tcustomgrid.fixedrows.html - Flat grids/tcustomgrid.flat.html - Font controls/tcontrol.font.html - GridLineWidth grids/tcustomgrid.gridlinewidth.html - Options grids/tcustomgrid.options.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - RowCount grids/tcustomgrid.rowcount.html - ScrollBars grids/tcustomgrid.scrollbars.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - VisibleColCount grids/tcustomgrid.visiblecolcount.html - VisibleRowCount grids/tcustomgrid.visiblerowcount.html - OnBeforeSelection grids/tcustomgrid.onbeforeselection.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDrawCell grids/tcustomgrid.ondrawcell.html - OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnPickListSelect grids/tcustomgrid.onpicklistselect.html - OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html - OnSelectEditor grids/tcustomgrid.onselecteditor.html - OnSelection grids/tcustomgrid.onselection.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnTopleftChanged grids/tcustomgrid.ontopleftchanged.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TDrawGrid grids/tdrawgrid.html - InplaceEditor grids/tdrawgrid.inplaceeditor.html - ColumnClickSorts grids/tdrawgrid.columnclicksorts.html - Constraints - HeaderHotZones grids/tdrawgrid.headerhotzones.html - HeaderPushZones grids/tdrawgrid.headerpushzones.html - MouseWheelOption grids/tdrawgrid.mousewheeloption.html - RangeSelectMode grids/tdrawgrid.rangeselectmode.html - TabAdvance grids/tdrawgrid.tabadvance.html - OnCheckboxToggled grids/tdrawgrid.oncheckboxtoggled.html - OnButtonClick grids/tdrawgrid.onbuttonclick.html - OnGetCheckboxState grids/tcustomdrawgrid.ongetcheckboxstate.html - OnHeaderSizing grids/tdrawgrid.onheadersizing.html - OnMouseEnter grids/tdrawgrid.onmouseenter.html - OnMouseLeave grids/tdrawgrid.onmouseleave.html - OnMouseWheel grids/tdrawgrid.onmousewheel.html - OnSetCheckboxState grids/tcustomdrawgrid.onsetcheckboxstate.html - OnUserCheckboxBitmap grids/tdrawgrid.onusercheckboxbitmap.html - Align controls/tcontrol.align.html - AlternateColor grids/tcustomgrid.alternatecolor.html - Anchors controls/tcontrol.anchors.html - AutoAdvance grids/tcustomgrid.autoadvance.html - AutoEdit grids/tcustomgrid.autoedit.html - AutoFillColumns grids/tcustomgrid.autofillcolumns.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - Color controls/tcontrol.color.html - ColCount grids/tcustomgrid.colcount.html - Columns grids/tcustomgrid.columns.html - DefaultColWidth grids/tcustomgrid.defaultcolwidth.html - DefaultDrawing grids/tcustomgrid.defaultdrawing.html - DefaultRowHeight grids/tcustomgrid.defaultrowheight.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - ExtendedSelect grids/tcustomgrid.extendedselect.html - FixedColor grids/tcustomgrid.fixedcolor.html - FixedCols grids/tcustomgrid.fixedcols.html - FixedRows grids/tcustomgrid.fixedrows.html - Flat grids/tcustomgrid.flat.html - Font controls/tcontrol.font.html - GridLineWidth grids/tcustomgrid.gridlinewidth.html - Options grids/tcustomgrid.options.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - RowCount grids/tcustomgrid.rowcount.html - ScrollBars grids/tcustomgrid.scrollbars.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TitleFont grids/tcustomgrid.titlefont.html - TitleImageList grids/tcustomgrid.titleimagelist.html - TitleStyle grids/tcustomgrid.titlestyle.html - UseXORFeatures grids/tcustomgrid.usexorfeatures.html - Visible controls/tcontrol.visible.html - VisibleColCount grids/tcustomgrid.visiblecolcount.html - VisibleRowCount grids/tcustomgrid.visiblerowcount.html - OnBeforeSelection grids/tcustomgrid.onbeforeselection.html - OnClick controls/tcontrol.onclick.html - OnColRowDeleted grids/tcustomdrawgrid.oncolrowdeleted.html - OnColRowExchanged grids/tcustomdrawgrid.oncolrowexchanged.html - OnColRowInserted grids/tcustomdrawgrid.oncolrowinserted.html - OnColRowMoved grids/tcustomdrawgrid.oncolrowmoved.html - OnCompareCells grids/tcustomdrawgrid.oncomparecells.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDrawCell grids/tcustomgrid.ondrawcell.html - OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetEditMask grids/tcustomdrawgrid.ongeteditmask.html - OnGetEditText grids/tcustomdrawgrid.ongetedittext.html - OnHeaderClick grids/tcustomdrawgrid.onheaderclick.html - OnHeaderSized grids/tcustomdrawgrid.onheadersized.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnPickListSelect grids/tcustomgrid.onpicklistselect.html - OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html - OnSelectEditor grids/tcustomgrid.onselecteditor.html - OnSelection grids/tcustomgrid.onselection.html - OnSelectCell grids/tcustomdrawgrid.onselectcell.html - OnSetEditText grids/tcustomdrawgrid.onsetedittext.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnTopleftChanged grids/tcustomgrid.ontopleftchanged.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TStringGridStrings grids/tstringgridstrings.html - Create grids/tstringgridstrings.create.html - Get - GetCount - GetObject - Put - PutObject - Destroy ms-its:rtl.chm::/classes/tstrings.destroy.html - Add ms-its:rtl.chm::/classes/tstrings.add.html - Assign ms-its:rtl.chm::/classes/tstrings.assign.html - Clear ms-its:rtl.chm::/classes/tstrings.clear.html - Delete ms-its:rtl.chm::/classes/tstrings.delete.html - Insert ms-its:rtl.chm::/classes/tstrings.insert.html - TCustomStringGrid grids/tcustomstringgrid.html - AssignTo grids/tcustomstringgrid.assignto.html - DefineCellsProperty grids/tcustomstringgrid.definecellsproperty.html - DrawTextInCell grids/tcustomstringgrid.drawtextincell.html - GetCells grids/tcustomstringgrid.getcells.html - SelectionSetText grids/tcustomstringgrid.selectionsettext.html - SetCells grids/tcustomstringgrid.setcells.html - SetCheckboxState grids/tcustomdrawgrid.setcheckboxstate.html - Modified grids/tcustomstringgrid.modified.html - Create grids/tcustomstringgrid.create.html - Destroy grids/tcustomstringgrid.destroy.html - AutoSizeColumn grids/tcustomstringgrid.autosizecolumn.html - AutoSizeColumns grids/tcustomstringgrid.autosizecolumns.html - Clean grids/tcustomstringgrid.clean.html - CopyToClipboard grids/tcustomstringgrid.copytoclipboard.html - InsertRowWithValues grids/tcustomstringgrid.insertrowwithvalues.html - LoadFromCSVStream grids/tcustomstringgrid.loadfromcsvstream.html - LoadFromCSVFile grids/tcustomstringgrid.loadfromcsvfile.html - SaveToCSVStream grids/tcustomstringgrid.savetocsvstream.html - SaveToCSVFile grids/tcustomstringgrid.savetocsvfile.html - Cells grids/tcustomstringgrid.cells.html - Cols grids/tcustomstringgrid.cols.html - Objects grids/tcustomstringgrid.objects.html - Rows grids/tcustomstringgrid.rows.html - AutoAdjustColumn grids/tcustomgrid.autoadjustcolumn.html - CalcCellExtent grids/tcustomdrawgrid.calccellextent.html - DefineProperties - DoCompareCells grids/tcustomgrid.docomparecells.html - DoCopyToClipboard grids/tcustomgrid.docopytoclipboard.html - DoCutToClipboard grids/tcustomgrid.docuttoclipboard.html - DoPasteFromClipboard grids/tcustomgrid.dopastefromclipboard.html - DrawCellAutonumbering grids/tcustomdrawgrid.drawcellautonumbering.html - GetCheckBoxState grids/tcustomdrawgrid.getcheckboxstate.html - GetEditText grids/tcustomgrid.getedittext.html - LoadContent grids/tcustomgrid.loadcontent.html - Loaded - SaveContent grids/tcustomgrid.savecontent.html - SetEditText grids/tcustomgrid.setedittext.html - DefaultTextStyle grids/tcustomgrid.defaulttextstyle.html - EditorMode grids/tcustomgrid.editormode.html - ExtendedSelect grids/tcustomgrid.extendedselect.html - UseXORFeatures grids/tcustomgrid.usexorfeatures.html - TStringGrid grids/tstringgrid.html - InplaceEditor grids/tstringgrid.inplaceeditor.html - BiDiMode grids/tstringgrid.bidimode.html - CellHintPriority grids/tstringgrid.cellhintpriority.html - ColumnClickSorts grids/tstringgrid.columnclicksorts.html - Constraints grids/tstringgrid.constraints.html - Font grids/tstringgrid.font.html - HeaderHotZones grids/tstringgrid.headerhotzones.html - HeaderPushZones grids/tstringgrid.headerpushzones.html - MouseWheelOption grids/tstringgrid.mousewheeloption.html - ParentBiDiMode grids/tstringgrid.parentbidimode.html - ParentFont grids/tstringgrid.parentfont.html - RangeSelectMode grids/tstringgrid.rangeselectmode.html - TabAdvance grids/tstringgrid.tabadvance.html - OnCheckboxToggled grids/tstringgrid.oncheckboxtoggled.html - OnButtonClick grids/tstringgrid.onbuttonclick.html - OnGetCellHint grids/tstringgrid.ongetcellhint.html - OnGetCheckboxState grids/tstringgrid.ongetcheckboxstate.html - OnHeaderSizing grids/tstringgrid.onheadersizing.html - OnMouseEnter grids/tstringgrid.onmouseenter.html - OnMouseLeave grids/tstringgrid.onmouseleave.html - OnMouseWheel grids/tstringgrid.onmousewheel.html - OnSetCheckboxState grids/tstringgrid.onsetcheckboxstate.html - OnUserCheckboxBitmap grids/tstringgrid.onusercheckboxbitmap.html - OnValidateEntry grids/tstringgrid.onvalidateentry.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Modified grids/tcustomstringgrid.modified.html - Align controls/tcontrol.align.html - AlternateColor grids/tcustomgrid.alternatecolor.html - Anchors controls/tcontrol.anchors.html - AutoAdvance grids/tcustomgrid.autoadvance.html - AutoEdit grids/tcustomgrid.autoedit.html - AutoFillColumns grids/tcustomgrid.autofillcolumns.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - Color controls/tcontrol.color.html - ColCount grids/tcustomgrid.colcount.html - Columns grids/tcustomgrid.columns.html - DefaultColWidth grids/tcustomgrid.defaultcolwidth.html - DefaultDrawing grids/tcustomgrid.defaultdrawing.html - DefaultRowHeight grids/tcustomgrid.defaultrowheight.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - ExtendedSelect grids/tcustomgrid.extendedselect.html - FixedColor grids/tcustomgrid.fixedcolor.html - FixedCols grids/tcustomgrid.fixedcols.html - FixedRows grids/tcustomgrid.fixedrows.html - Flat grids/tcustomgrid.flat.html - GridLineWidth grids/tcustomgrid.gridlinewidth.html - Options grids/tcustomgrid.options.html - ParentColor controls/tcontrol.parentcolor.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - RowCount grids/tcustomgrid.rowcount.html - ScrollBars grids/tcustomgrid.scrollbars.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TitleFont grids/tcustomgrid.titlefont.html - TitleImageList grids/tcustomgrid.titleimagelist.html - TitleStyle grids/tcustomgrid.titlestyle.html - UseXORFeatures grids/tcustomgrid.usexorfeatures.html - Visible controls/tcontrol.visible.html - VisibleColCount grids/tcustomgrid.visiblecolcount.html - VisibleRowCount grids/tcustomgrid.visiblerowcount.html - OnBeforeSelection grids/tcustomgrid.onbeforeselection.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnColRowDeleted grids/tcustomdrawgrid.oncolrowdeleted.html - OnColRowExchanged grids/tcustomdrawgrid.oncolrowexchanged.html - OnColRowInserted grids/tcustomdrawgrid.oncolrowinserted.html - OnColRowMoved grids/tcustomdrawgrid.oncolrowmoved.html - OnCompareCells grids/tcustomdrawgrid.oncomparecells.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDblClick controls/tcontrol.ondblclick.html - OnDrawCell grids/tcustomgrid.ondrawcell.html - OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnGetEditMask grids/tcustomdrawgrid.ongeteditmask.html - OnGetEditText grids/tcustomdrawgrid.ongetedittext.html - OnHeaderClick grids/tcustomdrawgrid.onheaderclick.html - OnHeaderSized grids/tcustomdrawgrid.onheadersized.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnPickListSelect grids/tcustomgrid.onpicklistselect.html - OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html - OnResize controls/tcontrol.onresize.html - OnSelectEditor grids/tcustomgrid.onselecteditor.html - OnSelection grids/tcustomgrid.onselection.html - OnSelectCell grids/tcustomdrawgrid.onselectcell.html - OnSetEditText grids/tcustomdrawgrid.onsetedittext.html - OnShowHint controls/tcontrol.onshowhint.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnTopLeftChanged grids/tcustomgrid.ontopleftchanged.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - DrawRubberRect grids/drawrubberrect.html - GetWorkingCanvas grids/getworkingcanvas.html - FreeWorkingCanvas grids/freeworkingcanvas.html - Register grids/register.html - DynamicArray dynamicarray/index.html - TOnNotifyItem dynamicarray/tonnotifyitem.html - TOnExchangeItem dynamicarray/tonexchangeitem.html - EArray dynamicarray/earray.html - TArray dynamicarray/tarray.html - Create dynamicarray/tarray.create.html - Destroy dynamicarray/tarray.destroy.html - SetLength dynamicarray/tarray.setlength.html - DeleteColRow dynamicarray/tarray.deletecolrow.html - MoveColRow dynamicarray/tarray.movecolrow.html - ExchangeColRow dynamicarray/tarray.exchangecolrow.html - Clear dynamicarray/tarray.clear.html - Arr dynamicarray/tarray.arr.html - OnDestroyItem dynamicarray/tarray.ondestroyitem.html - OnNewItem dynamicarray/tarray.onnewitem.html - MaskEdit maskedit/index.html - cMask_SpecialChar maskedit/cmask_specialchar.html - cMask_UpperCase maskedit/cmask_uppercase.html - cMask_LowerCase maskedit/cmask_lowercase.html - cMask_Letter maskedit/cmask_letter.html - cMask_LetterFixed maskedit/cmask_letterfixed.html - cMask_AlphaNum maskedit/cmask_alphanum.html - cMask_AlphaNumFixed maskedit/cmask_alphanumfixed.html - cMask_AllChars maskedit/cmask_allchars.html - cMask_AllCharsFixed maskedit/cmask_allcharsfixed.html - cMask_Number maskedit/cmask_number.html - cMask_NumberFixed maskedit/cmask_numberfixed.html - cMask_NumberPlusMin maskedit/cmask_numberplusmin.html - cMask_HourSeparator maskedit/cmask_hourseparator.html - cMask_DateSeparator maskedit/cmask_dateseparator.html - cMask_NoLeadingBlanks maskedit/cmask_noleadingblanks.html - DefaultBlank maskedit/defaultblank.html - MaskFieldSeparator maskedit/maskfieldseparator.html - MaskNoSave maskedit/masknosave.html - SInvalidCodePoint maskedit/sinvalidcodepoint.html - tMaskedType maskedit/tmaskedtype.html - TInternalMask maskedit/tinternalmask.html - TMaskeditTrimType maskedit/tmaskedittrimtype.html - EDBEditError maskedit/edbediterror.html - EInvalidUtf8 maskedit/einvalidutf8.html - EInvalidCodePoint maskedit/einvalidcodepoint.html - TCustomMaskEdit maskedit/tcustommaskedit.html - DisableMask maskedit/tcustommaskedit.disablemask.html - RestoreMask maskedit/tcustommaskedit.restoremask.html - RealSetText - RealGetText maskedit/tcustommaskedit.realgettext.html - GetTextWithoutMask maskedit/tcustommaskedit.gettextwithoutmask.html - SetTextApplyMask maskedit/tcustommaskedit.settextapplymask.html - GetEditText maskedit/tcustommaskedit.getedittext.html - SetEditText maskedit/tcustommaskedit.setedittext.html - GetSel maskedit/tcustommaskedit.getsel.html - SetSel maskedit/tcustommaskedit.setsel.html - Change stdctrls/tcustomedit.change.html - SetCharCase - GetCharCase maskedit/tcustommaskedit.getcharcase.html - SetMaxLength maskedit/tcustommaskedit.setmaxlength.html - GetMaxLength maskedit/tcustommaskedit.getmaxlength.html - SetNumbersOnly maskedit/tcustommaskedit.setnumbersonly.html - LMPasteFromClip maskedit/tcustommaskedit.lmpastefromclip.html - LMCutToClip maskedit/tcustommaskedit.lmcuttoclip.html - LMClearSel maskedit/tcustommaskedit.lmclearsel.html - EditCanModify maskedit/tcustommaskedit.editcanmodify.html - Reset maskedit/tcustommaskedit.reset.html - HandleKeyPress maskedit/tcustommaskedit.handlekeypress.html - Utf8KeyPress maskedit/tcustommaskedit.utf8keypress.html - CheckCursor maskedit/tcustommaskedit.checkcursor.html - EditText maskedit/tcustommaskedit.edittext.html - IsMasked maskedit/tcustommaskedit.ismasked.html - SpaceChar maskedit/tcustommaskedit.spacechar.html - MaxLength maskedit/tcustommaskedit.maxlength.html - CharCase stdctrls/tcustomedit.charcase.html - EditMask maskedit/tcustommaskedit.editmask.html - ValidateEdit maskedit/tcustommaskedit.validateedit.html - Modified stdctrls/tcustomedit.modified.html - TextChanged controls/tcontrol.textchanged.html - Loaded - DoEnter controls/twincontrol.doenter.html - DoExit controls/twincontrol.doexit.html - KeyDown controls/twincontrol.keydown.html - KeyPress controls/twincontrol.keypress.html - MouseUp controls/tcontrol.mouseup.html - CutToClipBoard stdctrls/tcustomedit.cuttoclipboard.html - PasteFromClipBoard stdctrls/tcustomedit.pastefromclipboard.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Clear stdctrls/tcustomedit.clear.html - TMaskEdit maskedit/tmaskedit.html - IsMasked maskedit/tcustommaskedit.ismasked.html - EditText maskedit/tcustommaskedit.edittext.html - Align maskedit/tmaskedit.align.html - BorderSpacing maskedit/tmaskedit.borderspacing.html - PopupMenu maskedit/tmaskedit.popupmenu.html - ReadOnly maskedit/tmaskedit.readonly.html - ShowHint maskedit/tmaskedit.showhint.html - OnEditingDone maskedit/tmaskedit.oneditingdone.html - OnMouseEnter maskedit/tmaskedit.onmouseenter.html - OnMouseLeave maskedit/tmaskedit.onmouseleave.html - OnMouseWheel maskedit/tmaskedit.onmousewheel.html - OnMouseWheelDown maskedit/tmaskedit.onmousewheeldown.html - OnMouseWheelUp maskedit/tmaskedit.onmousewheelup.html - Anchors controls/tcontrol.anchors.html - AutoSelect stdctrls/tcustomedit.autoselect.html - AutoSize controls/tcontrol.autosize.html - BiDiMode controls/tcontrol.bidimode.html - BorderStyle controls/twincontrol.borderstyle.html - CharCase stdctrls/tcustomedit.charcase.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - MaxLength stdctrls/tcustomedit.maxlength.html - ParentBiDiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDock controls/tcontrol.onenddock.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDock controls/tcontrol.onstartdock.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - EditMask maskedit/tcustommaskedit.editmask.html - Text - SpaceChar maskedit/tcustommaskedit.spacechar.html - SplitEditMask maskedit/spliteditmask.html - Register maskedit/register.html - DBGrids dbgrids/index.html - TDBGridOption dbgrids/tdbgridoption.html - TDbGridOptions dbgrids/tdbgridoptions.html - TDbGridExtraOption dbgrids/tdbgridextraoption.html - TDbGridExtraOptions dbgrids/tdbgridextraoptions.html - TDbGridStatusItem dbgrids/tdbgridstatusitem.html - TDbGridStatus dbgrids/tdbgridstatus.html - TDataSetScrolledEvent dbgrids/tdatasetscrolledevent.html - TDBGridClickEvent dbgrids/tdbgridclickevent.html - TMovedEvent dbgrids/tmovedevent.html - TDrawColumnCellEvent dbgrids/tdrawcolumncellevent.html - TGetDbEditMaskEvent dbgrids/tgetdbeditmaskevent.html - TDbGridSelEditorEvent dbgrids/tdbgridseleditorevent.html - TPrepareDbGridCanvasEvent dbgrids/tpreparedbgridcanvasevent.html - TDbGridCheckBoxBitmapEvent dbgrids/tdbgridcheckboxbitmapevent.html - TDbGridCheckboxStateEvent dbgrids/tdbgridcheckboxstateevent.html - TDbGridCellHintEvent dbgrids/tdbgridcellhintevent.html - TColumnOrder dbgrids/tcolumnorder.html - EInvalidGridOperation dbgrids/einvalidgridoperation.html - TBookmarkList dbgrids/tbookmarklist.html - Create dbgrids/tbookmarklist.create.html - Destroy dbgrids/tbookmarklist.destroy.html - Clear dbgrids/tbookmarklist.clear.html - Delete dbgrids/tbookmarklist.delete.html - Find dbgrids/tbookmarklist.find.html - IndexOf dbgrids/tbookmarklist.indexof.html - Refresh dbgrids/tbookmarklist.refresh.html - Count dbgrids/tbookmarklist.count.html - CurrentRowSelected dbgrids/tbookmarklist.currentrowselected.html - Items dbgrids/tbookmarklist.items.html - TComponentDataLink dbgrids/tcomponentdatalink.html - RecordChanged dbgrids/tcomponentdatalink.recordchanged.html - DataSetChanged dbgrids/tcomponentdatalink.datasetchanged.html - ActiveChanged dbgrids/tcomponentdatalink.activechanged.html - LayoutChanged dbgrids/tcomponentdatalink.layoutchanged.html - DataSetScrolled dbgrids/tcomponentdatalink.datasetscrolled.html - EditingChanged dbgrids/tcomponentdatalink.editingchanged.html - UpdateData dbgrids/tcomponentdatalink.updatedata.html - Modified dbgrids/tcomponentdatalink.modified.html - OnRecordChanged dbgrids/tcomponentdatalink.onrecordchanged.html - OnDataSetChanged dbgrids/tcomponentdatalink.ondatasetchanged.html - OnNewDataSet dbgrids/tcomponentdatalink.onnewdataset.html - OnDataSetOpen dbgrids/tcomponentdatalink.ondatasetopen.html - OnInvalidDataSet dbgrids/tcomponentdatalink.oninvaliddataset.html - OnInvalidDataSource dbgrids/tcomponentdatalink.oninvaliddatasource.html - OnLayoutChanged dbgrids/tcomponentdatalink.onlayoutchanged.html - OnDataSetClose dbgrids/tcomponentdatalink.ondatasetclose.html - OnDataSetScrolled dbgrids/tcomponentdatalink.ondatasetscrolled.html - OnEditingChanged dbgrids/tcomponentdatalink.oneditingchanged.html - OnUpdateData dbgrids/tcomponentdatalink.onupdatedata.html - DataSetName dbgrids/tcomponentdatalink.datasetname.html - Fields dbgrids/tcomponentdatalink.fields.html - FocusControl - CheckBrowseMode - MoveBy - VisualControl - TColumnTitle dbgrids/tcolumntitle.html - GetDefaultCaption dbgrids/tcolumntitle.getdefaultcaption.html - TColumn dbgrids/tcolumn.html - GetDefaultAlignment dbgrids/tcolumn.getdefaultalignment.html - GetDefaultDisplayFormat dbgrids/tcolumn.getdefaultdisplayformat.html - GetDefaultValueChecked dbgrids/tcolumn.getdefaultvaluechecked.html - GetDefaultValueUnchecked dbgrids/tcolumn.getdefaultvalueunchecked.html - GetDisplayName dbgrids/tcolumn.getdisplayname.html - GetDefaultReadOnly dbgrids/tcolumn.getdefaultreadonly.html - GetDefaultWidth dbgrids/tcolumn.getdefaultwidth.html - GetPickList dbgrids/tcolumn.getpicklist.html - IsAutomaticColumn dbgrids/tcolumn.isautomaticcolumn.html - IsDesignColumn dbgrids/tcolumn.isdesigncolumn.html - LinkField dbgrids/tcolumn.linkfield.html - Create dbgrids/tcolumn.create.html - Assign dbgrids/tcolumn.assign.html - DesignIndex dbgrids/tcolumn.designindex.html - Field dbgrids/tcolumn.field.html - FieldName dbgrids/tcolumn.fieldname.html - DisplayFormat dbgrids/tcolumn.displayformat.html - CreateTitle grids/tgridcolumn.createtitle.html - GetDefaultVisible grids/tgridcolumn.getdefaultvisible.html - IsDefault grids/tgridcolumn.isdefault.html - TDBGridColumns dbgrids/tdbgridcolumns.html - Update dbgrids/tdbgridcolumns.update.html - ColumnFromField dbgrids/tdbgridcolumns.columnfromfield.html - HasAutomaticColumns dbgrids/tdbgridcolumns.hasautomaticcolumns.html - HasDesignColumns dbgrids/tdbgridcolumns.hasdesigncolumns.html - RemoveAutoColumns dbgrids/tdbgridcolumns.removeautocolumns.html - Add dbgrids/tdbgridcolumns.add.html - LinkFields dbgrids/tdbgridcolumns.linkfields.html - ResetColumnsOrder dbgrids/tdbgridcolumns.resetcolumnsorder.html - Items dbgrids/tdbgridcolumns.items.html - TCustomDBGrid dbgrids/tcustomdbgrid.html - AddAutomaticColumns dbgrids/tcustomdbgrid.addautomaticcolumns.html - AssignTo dbgrids/tcustomdbgrid.assignto.html - BeginLayout dbgrids/tcustomdbgrid.beginlayout.html - CellClick dbgrids/tcustomdbgrid.cellclick.html - InvalidateSizes dbgrids/tcustomdbgrid.invalidatesizes.html - ColumnEditorStyle dbgrids/tcustomdbgrid.columneditorstyle.html - CreateWnd dbgrids/tcustomdbgrid.createwnd.html - DefaultDrawCell dbgrids/tcustomdbgrid.defaultdrawcell.html - DefaultEditorStyle dbgrids/tcustomdbgrid.defaulteditorstyle.html - DoCopyToClipboard grids/tcustomgrid.docopytoclipboard.html - DoExit dbgrids/tcustomdbgrid.doexit.html - DoMouseWheelDown dbgrids/tcustomdbgrid.domousewheeldown.html - DoMouseWheelUp dbgrids/tcustomdbgrid.domousewheelup.html - DoOnChangeBounds dbgrids/tcustomdbgrid.doonchangebounds.html - DoPrepareCanvas dbgrids/tcustomdbgrid.dopreparecanvas.html - DrawCellBackground dbgrids/tcustomdbgrid.drawcellbackground.html - DrawCheckboxBitmaps dbgrids/tcustomdbgrid.drawcheckboxbitmaps.html - DrawFixedText dbgrids/tcustomdbgrid.drawfixedtext.html - DrawColumnText grids/tcustomgrid.drawcolumntext.html - DrawIndicator dbgrids/tcustomdbgrid.drawindicator.html - EditingColumn dbgrids/tcustomdbgrid.editingcolumn.html - EditorCancelEditing dbgrids/tcustomdbgrid.editorcancelediting.html - EditorDoGetValue dbgrids/tcustomdbgrid.editordogetvalue.html - EditorCanAcceptKey dbgrids/tcustomdbgrid.editorcanacceptkey.html - EditorTextChanged dbgrids/tcustomdbgrid.editortextchanged.html - EndLayout dbgrids/tcustomdbgrid.endlayout.html - FieldIndexFromGridColumn dbgrids/tcustomdbgrid.fieldindexfromgridcolumn.html - FirstGridColumn dbgrids/tcustomdbgrid.firstgridcolumn.html - GetBufferCount dbgrids/tcustomdbgrid.getbuffercount.html - GetCellHintText dbgrids/tcustomdbgrid.getcellhinttext.html - GetDefaultColumnAlignment dbgrids/tcustomdbgrid.getdefaultcolumnalignment.html - GetDefaultColumnWidth dbgrids/tcustomdbgrid.getdefaultcolumnwidth.html - GetDefaultColumnReadOnly dbgrids/tcustomdbgrid.getdefaultcolumnreadonly.html - GetDefaultColumnTitle dbgrids/tcustomdbgrid.getdefaultcolumntitle.html - GetDefaultRowHeight dbgrids/tcustomdbgrid.getdefaultrowheight.html - GetDsFieldFromGridColumn dbgrids/tcustomdbgrid.getdsfieldfromgridcolumn.html - GetEditMask dbgrids/tcustomdbgrid.geteditmask.html - GetEditText dbgrids/tcustomdbgrid.getedittext.html - GetFieldFromGridColumn dbgrids/tcustomdbgrid.getfieldfromgridcolumn.html - GetGridColumnFromField dbgrids/tcustomdbgrid.getgridcolumnfromfield.html - GetImageForCheckBox dbgrids/tcustomdbgrid.getimageforcheckbox.html - GetIsCellTitle dbgrids/tcustomdbgrid.getiscelltitle.html - GetSelectedState dbgrids/tcustomdbgrid.getselectedstate.html - GetTruncCellHintText dbgrids/tcustomdbgrid.gettrunccellhinttext.html - GridCanModify dbgrids/tcustomdbgrid.gridcanmodify.html - HeaderClick dbgrids/tcustomdbgrid.headerclick.html - IsColumnVisible dbgrids/tcustomdbgrid.iscolumnvisible.html - IsValidChar dbgrids/tcustomdbgrid.isvalidchar.html - KeyDown dbgrids/tcustomdbgrid.keydown.html - LinkActive dbgrids/tcustomdbgrid.linkactive.html - LayoutChanged dbgrids/tcustomdbgrid.layoutchanged.html - MoveSelection dbgrids/tcustomdbgrid.moveselection.html - MouseButtonAllowed dbgrids/tcustomdbgrid.mousebuttonallowed.html - MouseDown dbgrids/tcustomdbgrid.mousedown.html - PrepareCellHints dbgrids/tcustomdbgrid.preparecellhints.html - RemoveAutomaticColumns dbgrids/tcustomdbgrid.removeautomaticcolumns.html - ResetSizes grids/tcustomgrid.resetsizes.html - SetFixedCols grids/tcustomgrid.setfixedcols.html - SelectCell dbgrids/tcustomdbgrid.selectcell.html - UnprepareCellHints dbgrids/tcustomdbgrid.unpreparecellhints.html - UpdateActive dbgrids/tcustomdbgrid.updateactive.html - UpdateAutoSizeColumns dbgrids/tcustomdbgrid.updateautosizecolumns.html - UpdateData dbgrids/tcustomdbgrid.updatedata.html - UpdateGridCounts dbgrids/tcustomdbgrid.updategridcounts.html - Columns dbgrids/tcustomdbgrid.columns.html - GridStatus dbgrids/tcustomdbgrid.gridstatus.html - Datalink dbgrids/tcustomdbgrid.datalink.html - DataSource dbgrids/tcustomdbgrid.datasource.html - OptionsExtra dbgrids/tcustomdbgrid.optionsextra.html - ReadOnly dbgrids/tcustomdbgrid.readonly.html - SelectedRows dbgrids/tcustomdbgrid.selectedrows.html - OnCellClick dbgrids/tcustomdbgrid.oncellclick.html - OnColEnter dbgrids/tcustomdbgrid.oncolenter.html - OnColExit dbgrids/tcustomdbgrid.oncolexit.html - OnColumnMoved dbgrids/tcustomdbgrid.oncolumnmoved.html - OnColumnSized dbgrids/tcustomdbgrid.oncolumnsized.html - OnDrawColumnCell dbgrids/tcustomdbgrid.ondrawcolumncell.html - OnFieldEditMask dbgrids/tcustomdbgrid.onfieldeditmask.html - OnGetCellHint dbgrids/tcustomdbgrid.ongetcellhint.html - OnPrepareCanvas dbgrids/tcustomdbgrid.onpreparecanvas.html - OnSelectEditor dbgrids/tcustomdbgrid.onselecteditor.html - OnTitleClick dbgrids/tcustomdbgrid.ontitleclick.html - OnUserCheckboxBitmap dbgrids/tcustomdbgrid.onusercheckboxbitmap.html - OnUserCheckboxState dbgrids/tcustomdbgrid.onusercheckboxstate.html - Create dbgrids/tcustomdbgrid.create.html - AutoSizeColumns dbgrids/tcustomdbgrid.autosizecolumns.html - InitiateAction dbgrids/tcustomdbgrid.initiateaction.html - DefaultDrawColumnCell dbgrids/tcustomdbgrid.defaultdrawcolumncell.html - ResetColWidths dbgrids/tcustomdbgrid.resetcolwidths.html - Destroy dbgrids/tcustomdbgrid.destroy.html - MouseToRecordOffset dbgrids/tcustomdbgrid.mousetorecordoffset.html - ExecuteAction dbgrids/tcustomdbgrid.executeaction.html - UpdateAction dbgrids/tcustomdbgrid.updateaction.html - AllowOutboundEvents grids/tcustomgrid.allowoutboundevents.html - SelectedField dbgrids/tcustomdbgrid.selectedfield.html - SelectedIndex dbgrids/tcustomdbgrid.selectedindex.html - SelectedColumn dbgrids/tcustomdbgrid.selectedcolumn.html - SelectedFieldRect dbgrids/tcustomdbgrid.selectedfieldrect.html - LastColumn dbgrids/tcustomdbgrid.lastcolumn.html - FirstColumn dbgrids/tcustomdbgrid.firstcolumn.html - BeforeMoveSelection grids/tcustomgrid.beforemoveselection.html - ColRowMoved grids/tcustomgrid.colrowmoved.html - CreateColumns grids/tcustomgrid.createcolumns.html - DefineProperties - DrawAllRows - DrawFocusRect grids/tcustomgrid.drawfocusrect.html - DrawRow grids/tcustomgrid.drawrow.html - DrawCell grids/tcustomgrid.drawcell.html - EditorIsReadOnly grids/tcustomgrid.editorisreadonly.html - GetIsCellSelected grids/tcustomgrid.getiscellselected.html - GetSBVisibility grids/tcustomgrid.getsbvisibility.html - GetSBRanges grids/tcustomgrid.getsbranges.html - HeaderSized grids/tcustomgrid.headersized.html - Loaded - MouseMove controls/tcontrol.mousemove.html - PrepareCanvas grids/tcustomgrid.preparecanvas.html - SelectEditor grids/tcustomgrid.selecteditor.html - SetEditText grids/tcustomgrid.setedittext.html - WMVScroll grids/tcustomgrid.wmvscroll.html - WndProc controls/tcontrol.wndproc.html - Options grids/tcustomgrid.options.html - EditorByStyle grids/tcustomgrid.editorbystyle.html - TDBGrid dbgrids/tdbgrid.html - InplaceEditor dbgrids/tdbgrid.inplaceeditor.html - BiDiMode dbgrids/tdbgrid.bidimode.html - CellHintPriority dbgrids/tdbgrid.cellhintpriority.html - FixedCols dbgrids/tdbgrid.fixedcols.html - ParentBiDiMode dbgrids/tdbgrid.parentbidimode.html - TabAdvance dbgrids/tdbgrid.tabadvance.html - TitleImageList dbgrids/tdbgrid.titleimagelist.html - OnContextPopup dbgrids/tdbgrid.oncontextpopup.html - OnEditingDone dbgrids/tdbgrid.oneditingdone.html - OnGetCellHint dbgrids/tdbgrid.ongetcellhint.html - OnMouseEnter dbgrids/tdbgrid.onmouseenter.html - OnMouseLeave dbgrids/tdbgrid.onmouseleave.html - OnMouseWheel dbgrids/tdbgrid.onmousewheel.html - OnMouseWheelDown dbgrids/tdbgrid.onmousewheeldown.html - OnMouseWheelUp dbgrids/tdbgrid.onmousewheelup.html - OnUserCheckboxState dbgrids/tdbgrid.onusercheckboxstate.html - BorderColor grids/tcustomgrid.bordercolor.html - Canvas controls/tcustomcontrol.canvas.html - DefaultTextStyle grids/tcustomgrid.defaulttextstyle.html - EditorBorderStyle grids/tcustomgrid.editorborderstyle.html - EditorMode grids/tcustomgrid.editormode.html - ExtendedColSizing grids/tcustomgrid.extendedcolsizing.html - FastEditing grids/tcustomgrid.fastediting.html - FocusColor grids/tcustomgrid.focuscolor.html - FocusRectVisible grids/tcustomgrid.focusrectvisible.html - GridLineColor grids/tcustomgrid.gridlinecolor.html - GridLineStyle grids/tcustomgrid.gridlinestyle.html - SelectedColor grids/tcustomgrid.selectedcolor.html - SelectedRows dbgrids/tcustomdbgrid.selectedrows.html - Align controls/tcontrol.align.html - AlternateColor grids/tcustomgrid.alternatecolor.html - Anchors controls/tcontrol.anchors.html - AutoAdvance grids/tcustomgrid.autoadvance.html - AutoEdit grids/tcustomgrid.autoedit.html - AutoFillColumns grids/tcustomgrid.autofillcolumns.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - Color controls/tcontrol.color.html - Columns grids/tcustomgrid.columns.html - Constraints controls/tcontrol.constraints.html - DataSource dbgrids/tcustomdbgrid.datasource.html - DefaultDrawing grids/tcustomgrid.defaultdrawing.html - DefaultRowHeight grids/tcustomgrid.defaultrowheight.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - FixedColor grids/tcustomgrid.fixedcolor.html - FixedHotColor grids/tcustomgrid.fixedhotcolor.html - Flat grids/tcustomgrid.flat.html - Font controls/tcontrol.font.html - HeaderHotZones grids/tcustomgrid.headerhotzones.html - HeaderPushZones grids/tcustomgrid.headerpushzones.html - Options grids/tcustomgrid.options.html - OptionsExtra dbgrids/tcustomdbgrid.optionsextra.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly dbgrids/tcustomdbgrid.readonly.html - Scrollbars grids/tcustomgrid.scrollbars.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TitleFont grids/tcustomgrid.titlefont.html - TitleStyle grids/tcustomgrid.titlestyle.html - UseXORFeatures grids/tcustomgrid.usexorfeatures.html - Visible controls/tcontrol.visible.html - OnCellClick dbgrids/tcustomdbgrid.oncellclick.html - OnColEnter dbgrids/tcustomdbgrid.oncolenter.html - OnColExit dbgrids/tcustomdbgrid.oncolexit.html - OnColumnMoved dbgrids/tcustomdbgrid.oncolumnmoved.html - OnColumnSized dbgrids/tcustomdbgrid.oncolumnsized.html - OnDrawColumnCell dbgrids/tcustomdbgrid.ondrawcolumncell.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnFieldEditMask dbgrids/tcustomdbgrid.onfieldeditmask.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnPrepareCanvas dbgrids/tcustomdbgrid.onpreparecanvas.html - OnSelectEditor dbgrids/tcustomdbgrid.onselecteditor.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnTitleClick dbgrids/tcustomdbgrid.ontitleclick.html - OnUserCheckboxBitmap grids/tcustomgrid.onusercheckboxbitmap.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - Register dbgrids/register.html - alllclunits alllclunits/index.html - CheckLst checklst/index.html - TCheckListClicked checklst/tchecklistclicked.html - TCustomCheckListBox checklst/tcustomchecklistbox.html - AssignItemDataToCache checklst/tcustomchecklistbox.assignitemdatatocache.html - AssignCacheToItemData checklst/tcustomchecklistbox.assigncachetoitemdata.html - CreateParams stdctrls/tcustomlistbox.createparams.html - DrawItem stdctrls/tcustomlistbox.drawitem.html - GetCachedDataSize checklst/tcustomchecklistbox.getcacheddatasize.html - GetCheckWidth checklst/tcustomchecklistbox.getcheckwidth.html - ReadData checklst/tcustomchecklistbox.readdata.html - WriteData checklst/tcustomchecklistbox.writedata.html - ClickCheck checklst/tcustomchecklistbox.clickcheck.html - ItemClick checklst/tcustomchecklistbox.itemclick.html - KeyDown checklst/tcustomchecklistbox.keydown.html - FontChanged checklst/tcustomchecklistbox.fontchanged.html - Create checklst/tcustomchecklistbox.create.html - Toggle checklst/tcustomchecklistbox.toggle.html - CheckAll checklst/tcustomchecklistbox.checkall.html - AllowGrayed checklst/tcustomchecklistbox.allowgrayed.html - Checked checklst/tcustomchecklistbox.checked.html - Header checklst/tcustomchecklistbox.header.html - ItemEnabled checklst/tcustomchecklistbox.itemenabled.html - State checklst/tcustomchecklistbox.state.html - OnClickCheck checklst/tcustomchecklistbox.onclickcheck.html - OnItemClick checklst/tcustomchecklistbox.onitemclick.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - DefineProperties - MeasureItem stdctrls/tcustomlistbox.measureitem.html - Count stdctrls/tcustomlistbox.count.html - TCheckListBox checklst/tchecklistbox.html - ItemIndex checklst/tchecklistbox.itemindex.html - Align controls/tcontrol.align.html - AllowGrayed checklst/tcustomchecklistbox.allowgrayed.html - Anchors controls/tcontrol.anchors.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - Color controls/tcontrol.color.html - Columns stdctrls/tcustomlistbox.columns.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - IntegralHeight stdctrls/tcustomlistbox.integralheight.html - Items stdctrls/tcustomlistbox.items.html - ItemHeight stdctrls/tcustomlistbox.itemheight.html - MultiSelect stdctrls/tcustomlistbox.multiselect.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnClickCheck checklst/tcustomchecklistbox.onclickcheck.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnItemClick checklst/tcustomchecklistbox.onitemclick.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnResize controls/tcontrol.onresize.html - OnShowHint controls/tcontrol.onshowhint.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomlistbox.sorted.html - Style stdctrls/tcustomlistbox.style.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TopIndex stdctrls/tcustomlistbox.topindex.html - Visible controls/tcontrol.visible.html - Register checklst/register.html - ColorBox colorbox/index.html - TColorBoxStyles colorbox/tcolorboxstyles.html - TColorBoxStyle colorbox/tcolorboxstyle.html - TGetColorsEvent colorbox/tgetcolorsevent.html - TLBGetColorsEvent colorbox/tlbgetcolorsevent.html - TCustomColorBox colorbox/tcustomcolorbox.html - SetColorList colorbox/tcustomcolorbox.setcolorlist.html - DoGetColors colorbox/tcustomcolorbox.dogetcolors.html - CloseUp stdctrls/tcustomcombobox.closeup.html - PickCustomColor colorbox/tcustomcolorbox.pickcustomcolor.html - Create colorbox/tcustomcolorbox.create.html - ColorRectWidth colorbox/tcustomcolorbox.colorrectwidth.html - Colors colorbox/tcustomcolorbox.colors.html - ColorNames colorbox/tcustomcolorbox.colornames.html - Selected colorbox/tcustomcolorbox.selected.html - DefaultColorColor colorbox/tcustomcolorbox.defaultcolorcolor.html - NoneColorColor colorbox/tcustomcolorbox.nonecolorcolor.html - OnGetColors colorbox/tcustomcolorbox.ongetcolors.html - DrawItem stdctrls/tcustomcombobox.drawitem.html - Loaded - InitializeWnd controls/twincontrol.initializewnd.html - Style stdctrls/tcustomcombobox.style.html - TColorBox colorbox/tcolorbox.html - ColorRectWidth colorbox/tcolorbox.colorrectwidth.html - AutoSelect colorbox/tcolorbox.autoselect.html - BidiMode colorbox/tcolorbox.bidimode.html - Constraints colorbox/tcolorbox.constraints.html - OnContextPopup colorbox/tcolorbox.oncontextpopup.html - OnMouseEnter colorbox/tcolorbox.onmouseenter.html - OnMouseLeave colorbox/tcolorbox.onmouseleave.html - OnMouseWheel colorbox/tcolorbox.onmousewheel.html - OnMouseWheelDown colorbox/tcolorbox.onmousewheeldown.html - OnMouseWheelUp colorbox/tcolorbox.onmousewheelup.html - ParentBidiMode colorbox/tcolorbox.parentbidimode.html - DefaultColorColor colorbox/tcustomcolorbox.defaultcolorcolor.html - NoneColorColor colorbox/tcustomcolorbox.nonecolorcolor.html - Selected colorbox/tcustomcolorbox.selected.html - Style stdctrls/tcustomcombobox.style.html - OnGetColors colorbox/tcustomcolorbox.ongetcolors.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html - AutoComplete stdctrls/tcustomcombobox.autocomplete.html - AutoCompleteText stdctrls/tcustomcombobox.autocompletetext.html - AutoDropDown stdctrls/tcustomcombobox.autodropdown.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - DropDownCount stdctrls/tcustomcombobox.dropdowncount.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - ItemHeight stdctrls/tcustomcombobox.itemheight.html - ItemWidth stdctrls/tcustomcombobox.itemwidth.html - OnChange stdctrls/tcustomcombobox.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnCloseUp stdctrls/tcustomcombobox.oncloseup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnDropDown stdctrls/tcustomcombobox.ondropdown.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnSelect stdctrls/tcustomcombobox.onselect.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TCustomColorListBox colorbox/tcustomcolorlistbox.html - SetColorList colorbox/tcustomcolorlistbox.setcolorlist.html - DoGetColors colorbox/tcustomcolorlistbox.dogetcolors.html - PickCustomColor colorbox/tcustomcolorlistbox.pickcustomcolor.html - Create colorbox/tcustomcolorlistbox.create.html - ColorRectWidth colorbox/tcustomcolorlistbox.colorrectwidth.html - Colors colorbox/tcustomcolorlistbox.colors.html - ColorNames colorbox/tcustomcolorlistbox.colornames.html - DefaultColorColor colorbox/tcustomcolorlistbox.defaultcolorcolor.html - NoneColorColor colorbox/tcustomcolorlistbox.nonecolorcolor.html - OnGetColors colorbox/tcustomcolorlistbox.ongetcolors.html - DrawItem stdctrls/tcustomlistbox.drawitem.html - Loaded - InitializeWnd controls/twincontrol.initializewnd.html - DoSelectionChange - Style stdctrls/tcustomlistbox.style.html - Selected stdctrls/tcustomlistbox.selected.html - TColorListBox colorbox/tcolorlistbox.html - ColorRectWidth colorbox/tcolorlistbox.colorrectwidth.html - Selected colorbox/tcolorlistbox.selected.html - DragKind colorbox/tcolorlistbox.dragkind.html - TopIndex colorbox/tcolorlistbox.topindex.html - DefaultColorColor colorbox/tcustomcolorlistbox.defaultcolorcolor.html - NoneColorColor colorbox/tcustomcolorlistbox.nonecolorcolor.html - Style stdctrls/tcustomlistbox.style.html - OnGetColors colorbox/tcustomcolorlistbox.ongetcolors.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - ClickOnSelChange stdctrls/tcustomlistbox.clickonselchange.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - IntegralHeight stdctrls/tcustomlistbox.integralheight.html - ItemHeight stdctrls/tcustomlistbox.itemheight.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEnter controls/twincontrol.onenter.html - OnEndDrag controls/tcontrol.onenddrag.html - OnExit controls/twincontrol.onexit.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnResize controls/tcontrol.onresize.html - OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html - OnShowHint controls/tcontrol.onshowhint.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentShowHint controls/tcontrol.parentshowhint.html - ParentFont controls/tcontrol.parentfont.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - Register colorbox/register.html - DBActns dbactns/index.html - TDataSetAction dbactns/tdatasetaction.html - Notification dbactns/tdatasetaction.notification.html - GetDataSet dbactns/tdatasetaction.getdataset.html - HandlesTarget dbactns/tdatasetaction.handlestarget.html - DataSource dbactns/tdatasetaction.datasource.html - TDataSetFirst dbactns/tdatasetfirst.html - ExecuteTarget dbactns/tdatasetfirst.executetarget.html - UpdateTarget dbactns/tdatasetfirst.updatetarget.html - DataSource dbactns/tdatasetfirst.datasource.html - TDataSetLast dbactns/tdatasetlast.html - ExecuteTarget dbactns/tdatasetlast.executetarget.html - UpdateTarget dbactns/tdatasetlast.updatetarget.html - DataSource dbactns/tdatasetlast.datasource.html - TDataSetNext dbactns/tdatasetnext.html - ExecuteTarget dbactns/tdatasetnext.executetarget.html - UpdateTarget dbactns/tdatasetnext.updatetarget.html - DataSource dbactns/tdatasetnext.datasource.html - TDataSetPrior dbactns/tdatasetprior.html - ExecuteTarget dbactns/tdatasetprior.executetarget.html - UpdateTarget dbactns/tdatasetprior.updatetarget.html - DataSource dbactns/tdatasetprior.datasource.html - TDataSetRefresh dbactns/tdatasetrefresh.html - ExecuteTarget dbactns/tdatasetrefresh.executetarget.html - UpdateTarget dbactns/tdatasetrefresh.updatetarget.html - DataSource dbactns/tdatasetrefresh.datasource.html - TDataSetCancel dbactns/tdatasetcancel.html - ExecuteTarget dbactns/tdatasetcancel.executetarget.html - UpdateTarget dbactns/tdatasetcancel.updatetarget.html - DataSource dbactns/tdatasetcancel.datasource.html - TDataSetDelete dbactns/tdatasetdelete.html - ExecuteTarget dbactns/tdatasetdelete.executetarget.html - UpdateTarget dbactns/tdatasetdelete.updatetarget.html - DataSource dbactns/tdatasetdelete.datasource.html - TDataSetEdit dbactns/tdatasetedit.html - ExecuteTarget dbactns/tdatasetedit.executetarget.html - UpdateTarget dbactns/tdatasetedit.updatetarget.html - DataSource dbactns/tdatasetedit.datasource.html - TDataSetInsert dbactns/tdatasetinsert.html - ExecuteTarget dbactns/tdatasetinsert.executetarget.html - UpdateTarget dbactns/tdatasetinsert.updatetarget.html - DataSource dbactns/tdatasetinsert.datasource.html - TDataSetPost dbactns/tdatasetpost.html - ExecuteTarget dbactns/tdatasetpost.executetarget.html - UpdateTarget dbactns/tdatasetpost.updatetarget.html - DataSource dbactns/tdatasetpost.datasource.html - Register dbactns/register.html - DbCtrls dbctrls/index.html - HowToUseDataAwareControls dbctrls/howtousedataawarecontrols.html - DefaultDBNavigatorButtons dbctrls/defaultdbnavigatorbuttons.html - DBNavButtonResourceName dbctrls/dbnavbuttonresourcename.html - TOnDBImageRead dbctrls/tondbimageread.html - TOnDBImageWrite dbctrls/tondbimagewrite.html - TDBNavGlyph dbctrls/tdbnavglyph.html - TDBNavButtonType dbctrls/tdbnavbuttontype.html - TDBNavButtonSet dbctrls/tdbnavbuttonset.html - TDBNavButtonStyle dbctrls/tdbnavbuttonstyle.html - TDBNavButtonDirection dbctrls/tdbnavbuttondirection.html - TDBNavigatorOption dbctrls/tdbnavigatoroption.html - TDBNavigatorOptions dbctrls/tdbnavigatoroptions.html - TNavigateBtn dbctrls/tnavigatebtn.html - TDBNavClickEvent dbctrls/tdbnavclickevent.html - TFieldDataLink dbctrls/tfielddatalink.html - ActiveChanged dbctrls/tfielddatalink.activechanged.html - EditingChanged dbctrls/tfielddatalink.editingchanged.html - LayoutChanged dbctrls/tfielddatalink.layoutchanged.html - RecordChanged dbctrls/tfielddatalink.recordchanged.html - UpdateData dbctrls/tfielddatalink.updatedata.html - FocusControl dbctrls/tfielddatalink.focuscontrol.html - Create dbctrls/tfielddatalink.create.html - Edit dbctrls/tfielddatalink.edit.html - Modified dbctrls/tfielddatalink.modified.html - Reset dbctrls/tfielddatalink.reset.html - Control dbctrls/tfielddatalink.control.html - Field dbctrls/tfielddatalink.field.html - FieldName dbctrls/tfielddatalink.fieldname.html - CanModify dbctrls/tfielddatalink.canmodify.html - Editing dbctrls/tfielddatalink.editing.html - OnDataChange dbctrls/tfielddatalink.ondatachange.html - OnEditingChange dbctrls/tfielddatalink.oneditingchange.html - OnUpdateData dbctrls/tfielddatalink.onupdatedata.html - OnActiveChange dbctrls/tfielddatalink.onactivechange.html - TDBLookup dbctrls/tdblookup.html - Notification dbctrls/tdblookup.notification.html - Create dbctrls/tdblookup.create.html - Destroy dbctrls/tdblookup.destroy.html - Initialize dbctrls/tdblookup.initialize.html - KeyFieldValue dbctrls/tdblookup.keyfieldvalue.html - UpdateData dbctrls/tdblookup.updatedata.html - GetKeyValue dbctrls/tdblookup.getkeyvalue.html - GetKeyIndex dbctrls/tdblookup.getkeyindex.html - ControlItems dbctrls/tdblookup.controlitems.html - LookupCache dbctrls/tdblookup.lookupcache.html - KeyField dbctrls/tdblookup.keyfield.html - ListField dbctrls/tdblookup.listfield.html - ListFieldIndex dbctrls/tdblookup.listfieldindex.html - ListSource dbctrls/tdblookup.listsource.html - NullValueKey dbctrls/tdblookup.nullvaluekey.html - TDBEdit dbctrls/tdbedit.html - UTF8KeyPress dbctrls/tdbedit.utf8keypress.html - WndProc dbctrls/tdbedit.wndproc.html - Create dbctrls/tdbedit.create.html - Destroy dbctrls/tdbedit.destroy.html - ExecuteAction dbctrls/tdbedit.executeaction.html - UpdateAction dbctrls/tdbedit.updateaction.html - Field dbctrls/tdbedit.field.html - CustomEditMask dbctrls/tdbedit.customeditmask.html - DataField dbctrls/tdbedit.datafield.html - DataSource dbctrls/tdbedit.datasource.html - BiDiMode dbctrls/tdbedit.bidimode.html - BorderStyle dbctrls/tdbedit.borderstyle.html - ParentBiDiMode dbctrls/tdbedit.parentbidimode.html - OnEditingDone dbctrls/tdbedit.oneditingdone.html - OnMouseEnter dbctrls/tdbedit.onmouseenter.html - OnMouseLeave dbctrls/tdbedit.onmouseleave.html - OnMouseWheel dbctrls/tdbedit.onmousewheel.html - OnMouseWheelDown dbctrls/tdbedit.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbedit.onmousewheelup.html - GetReadOnly - SetReadOnly - KeyDown controls/twincontrol.keydown.html - Notification - EditCanModify maskedit/tcustommaskedit.editcanmodify.html - GetEditText maskedit/tcustommaskedit.getedittext.html - Change stdctrls/tcustomedit.change.html - Reset maskedit/tcustommaskedit.reset.html - WMSetFocus controls/twincontrol.wmsetfocus.html - WMKillFocus controls/twincontrol.wmkillfocus.html - ReadOnly stdctrls/tcustomedit.readonly.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - CharCase stdctrls/tcustomedit.charcase.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - EditMask maskedit/tcustommaskedit.editmask.html - Font controls/tcontrol.font.html - MaxLength stdctrls/tcustomedit.maxlength.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PasswordChar stdctrls/tcustomedit.passwordchar.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TDBText dbctrls/tdbtext.html - WSRegisterClass - Create dbctrls/tdbtext.create.html - Destroy dbctrls/tdbtext.destroy.html - ExecuteAction dbctrls/tdbtext.executeaction.html - UpdateAction dbctrls/tdbtext.updateaction.html - Field dbctrls/tdbtext.field.html - BidiMode dbctrls/tdbtext.bidimode.html - BorderSpacing dbctrls/tdbtext.borderspacing.html - Constraints dbctrls/tdbtext.constraints.html - DataField dbctrls/tdbtext.datafield.html - DataSource dbctrls/tdbtext.datasource.html - DragKind dbctrls/tdbtext.dragkind.html - Enabled dbctrls/tdbtext.enabled.html - ParentBidiMode dbctrls/tdbtext.parentbidimode.html - ParentColor dbctrls/tdbtext.parentcolor.html - ParentFont dbctrls/tdbtext.parentfont.html - ParentShowHint dbctrls/tdbtext.parentshowhint.html - PopupMenu dbctrls/tdbtext.popupmenu.html - ShowHint dbctrls/tdbtext.showhint.html - Transparent stdctrls/tcustomlabel.transparent.html - OnClick dbctrls/tdbtext.onclick.html - OnDblClick dbctrls/tdbtext.ondblclick.html - OnMouseDown dbctrls/tdbtext.onmousedown.html - OnMouseEnter dbctrls/tdbtext.onmouseenter.html - OnMouseLeave dbctrls/tdbtext.onmouseleave.html - OnMouseMove dbctrls/tdbtext.onmousemove.html - OnMouseUp dbctrls/tdbtext.onmouseup.html - OnMouseWheel dbctrls/tdbtext.onmousewheel.html - OnMouseWheelDown dbctrls/tdbtext.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbtext.onmousewheelup.html - OnChangeBounds dbctrls/tdbtext.onchangebounds.html - OnContextPopup dbctrls/tdbtext.oncontextpopup.html - OnResize dbctrls/tdbtext.onresize.html - OptimalFill stdctrls/tcustomlabel.optimalfill.html - Notification - Loaded - Align controls/tcontrol.align.html - Alignment stdctrls/tcustomlabel.alignment.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - FocusControl stdctrls/tcustomlabel.focuscontrol.html - Font controls/tcontrol.font.html - Layout stdctrls/tcustomlabel.layout.html - ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html - Visible controls/tcontrol.visible.html - WordWrap stdctrls/tcustomlabel.wordwrap.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnStartDrag controls/tcontrol.onstartdrag.html - TCustomDBListBox dbctrls/tcustomdblistbox.html - FDataLink dbctrls/tcustomdblistbox.fdatalink.html - DataChange dbctrls/tcustomdblistbox.datachange.html - UpdateData dbctrls/tcustomdblistbox.updatedata.html - SetItems dbctrls/tcustomdblistbox.setitems.html - Create dbctrls/tcustomdblistbox.create.html - Destroy dbctrls/tcustomdblistbox.destroy.html - ExecuteAction dbctrls/tcustomdblistbox.executeaction.html - UpdateAction dbctrls/tcustomdblistbox.updateaction.html - Field dbctrls/tcustomdblistbox.field.html - DataField dbctrls/tcustomdblistbox.datafield.html - DataSource dbctrls/tcustomdblistbox.datasource.html - ReadOnly dbctrls/tcustomdblistbox.readonly.html - KeyDown controls/twincontrol.keydown.html - Notification - TDBListBox dbctrls/tdblistbox.html - DoSelectionChange dbctrls/tdblistbox.doselectionchange.html - EditingDone dbctrls/tdblistbox.editingdone.html - BiDiMode dbctrls/tdblistbox.bidimode.html - OnMouseEnter dbctrls/tdblistbox.onmouseenter.html - OnMouseLeave dbctrls/tdblistbox.onmouseleave.html - OnMouseWheel dbctrls/tdblistbox.onmousewheel.html - OnMouseWheelDown dbctrls/tdblistbox.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdblistbox.onmousewheelup.html - ParentBiDiMode dbctrls/tdblistbox.parentbidimode.html - DataChange dbctrls/tcustomdblistbox.datachange.html - UpdateData dbctrls/tcustomdblistbox.updatedata.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - DataField dbctrls/tcustomdblistbox.datafield.html - DataSource dbctrls/tcustomdblistbox.datasource.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html - ItemHeight stdctrls/tcustomlistbox.itemheight.html - Items - MultiSelect stdctrls/tcustomlistbox.multiselect.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentShowHint controls/tcontrol.parentshowhint.html - ReadOnly dbctrls/tcustomdblistbox.readonly.html - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomlistbox.sorted.html - Style stdctrls/tcustomlistbox.style.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TopIndex stdctrls/tcustomlistbox.topindex.html - Visible controls/tcontrol.visible.html - TDBLookupListBox dbctrls/tdblookuplistbox.html - DataChange dbctrls/tdblookuplistbox.datachange.html - DoSelectionChange dbctrls/tdblookuplistbox.doselectionchange.html - InitializeWnd dbctrls/tdblookuplistbox.initializewnd.html - KeyDown - Create dbctrls/tdblookuplistbox.create.html - KeyValue dbctrls/tdblookuplistbox.keyvalue.html - BiDiMode dbctrls/tdblookuplistbox.bidimode.html - Color dbctrls/tdblookuplistbox.color.html - KeyField dbctrls/tdblookuplistbox.keyfield.html - ListField dbctrls/tdblookuplistbox.listfield.html - ListFieldIndex dbctrls/tdblookuplistbox.listfieldindex.html - ListSource dbctrls/tdblookuplistbox.listsource.html - LookupCache dbctrls/tdblookuplistbox.lookupcache.html - NullValueKey dbctrls/tdblookuplistbox.nullvaluekey.html - OnEditingDone dbctrls/tdblookuplistbox.oneditingdone.html - OnMouseEnter dbctrls/tdblookuplistbox.onmouseenter.html - OnMouseLeave dbctrls/tdblookuplistbox.onmouseleave.html - OnMouseWheel dbctrls/tdblookuplistbox.onmousewheel.html - OnMouseWheelDown dbctrls/tdblookuplistbox.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdblookuplistbox.onmousewheelup.html - ParentBiDiMode dbctrls/tdblookuplistbox.parentbidimode.html - ScrollListDataset dbctrls/tdblookuplistbox.scrolllistdataset.html - Loaded - UpdateData dbctrls/tcustomdblistbox.updatedata.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - DataField dbctrls/tcustomdblistbox.datafield.html - DataSource dbctrls/tcustomdblistbox.datasource.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly dbctrls/tcustomdblistbox.readonly.html - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomlistbox.sorted.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TopIndex stdctrls/tcustomlistbox.topindex.html - Visible controls/tcontrol.visible.html - TDBRadioGroup dbctrls/tdbradiogroup.html - Change dbctrls/tdbradiogroup.change.html - DataChange dbctrls/tdbradiogroup.datachange.html - UpdateData dbctrls/tdbradiogroup.updatedata.html - DataLink dbctrls/tdbradiogroup.datalink.html - GetButtonValue dbctrls/tdbradiogroup.getbuttonvalue.html - UpdateRadioButtonStates dbctrls/tdbradiogroup.updateradiobuttonstates.html - Create dbctrls/tdbradiogroup.create.html - Destroy dbctrls/tdbradiogroup.destroy.html - EditingDone dbctrls/tdbradiogroup.editingdone.html - ExecuteAction dbctrls/tdbradiogroup.executeaction.html - UpdateAction dbctrls/tdbradiogroup.updateaction.html - Field dbctrls/tdbradiogroup.field.html - Value dbctrls/tdbradiogroup.value.html - BiDiMode dbctrls/tdbradiogroup.bidimode.html - DataField dbctrls/tdbradiogroup.datafield.html - DataSource dbctrls/tdbradiogroup.datasource.html - OnChange dbctrls/tdbradiogroup.onchange.html - OnMouseEnter dbctrls/tdbradiogroup.onmouseenter.html - OnMouseLeave dbctrls/tdbradiogroup.onmouseleave.html - OnMouseWheel dbctrls/tdbradiogroup.onmousewheel.html - OnMouseWheelDown dbctrls/tdbradiogroup.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbradiogroup.onmousewheelup.html - ParentBiDiMode dbctrls/tdbradiogroup.parentbidimode.html - ReadOnly dbctrls/tdbradiogroup.readonly.html - TabStop dbctrls/tdbradiogroup.tabstop.html - Values dbctrls/tdbradiogroup.values.html - Notification - ItemIndex - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - Columns extctrls/tcustomradiogroup.columns.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Items extctrls/tcustomradiogroup.items.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - TabOrder controls/twincontrol.taborder.html - Visible controls/tcontrol.visible.html - TDBCheckBox dbctrls/tdbcheckbox.html - GetFieldCheckState dbctrls/tdbcheckbox.getfieldcheckstate.html - DataChange dbctrls/tdbcheckbox.datachange.html - DoOnChange dbctrls/tdbcheckbox.doonchange.html - UpdateData dbctrls/tdbcheckbox.updatedata.html - Create dbctrls/tdbcheckbox.create.html - Destroy dbctrls/tdbcheckbox.destroy.html - ExecuteAction dbctrls/tdbcheckbox.executeaction.html - UpdateAction dbctrls/tdbcheckbox.updateaction.html - Field dbctrls/tdbcheckbox.field.html - Align dbctrls/tdbcheckbox.align.html - BiDiMode dbctrls/tdbcheckbox.bidimode.html - DataField dbctrls/tdbcheckbox.datafield.html - DataSource dbctrls/tdbcheckbox.datasource.html - Font dbctrls/tdbcheckbox.font.html - OnMouseEnter dbctrls/tdbcheckbox.onmouseenter.html - OnMouseLeave dbctrls/tdbcheckbox.onmouseleave.html - OnMouseWheel dbctrls/tdbcheckbox.onmousewheel.html - OnMouseWheelDown dbctrls/tdbcheckbox.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbcheckbox.onmousewheelup.html - ParentBiDiMode dbctrls/tdbcheckbox.parentbidimode.html - ReadOnly dbctrls/tdbcheckbox.readonly.html - ValueChecked dbctrls/tdbcheckbox.valuechecked.html - ValueUnchecked dbctrls/tdbcheckbox.valueunchecked.html - Notification - Checked stdctrls/tbuttoncontrol.checked.html - State stdctrls/tcustomcheckbox.state.html - AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Hint controls/tcontrol.hint.html - OnChange stdctrls/tbuttoncontrol.onchange.html - OnClick controls/tcontrol.onclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TCustomDBComboBox dbctrls/tcustomdbcombobox.html - DataChange dbctrls/tcustomdbcombobox.datachange.html - Change dbctrls/tcustomdbcombobox.change.html - UpdateData dbctrls/tcustomdbcombobox.updatedata.html - WndProc dbctrls/tcustomdbcombobox.wndproc.html - Create stdctrls/tcustomcombobox.create.html - Destroy stdctrls/tcustomcombobox.destroy.html - ExecuteAction dbctrls/tcustomdbcombobox.executeaction.html - UpdateAction dbctrls/tcustomdbcombobox.updateaction.html - Field dbctrls/tcustomdbcombobox.field.html - DataSource dbctrls/tcustomdbcombobox.datasource.html - Notification - EditingDone controls/tcontrol.editingdone.html - Text stdctrls/tcustomcombobox.text.html - ItemIndex stdctrls/tcustomcombobox.itemindex.html - DataField - ReadOnly stdctrls/tcustomcombobox.readonly.html - TDBComboBox dbctrls/tdbcombobox.html - DataChange dbctrls/tdbcombobox.datachange.html - KeyDown dbctrls/tdbcombobox.keydown.html - KeyPress dbctrls/tdbcombobox.keypress.html - Select dbctrls/tdbcombobox.select.html - UpdateData dbctrls/tdbcombobox.updatedata.html - AutoComplete dbctrls/tdbcombobox.autocomplete.html - BiDiMode dbctrls/tdbcombobox.bidimode.html - BorderStyle dbctrls/tdbcombobox.borderstyle.html - CharCase dbctrls/tdbcombobox.charcase.html - OnMouseEnter dbctrls/tdbcombobox.onmouseenter.html - OnMouseLeave dbctrls/tdbcombobox.onmouseleave.html - OnMouseWheel dbctrls/tdbcombobox.onmousewheel.html - OnMouseWheelDown dbctrls/tdbcombobox.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbcombobox.onmousewheelup.html - ParentBiDiMode dbctrls/tdbcombobox.parentbidimode.html - Anchors controls/tcontrol.anchors.html - ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html - AutoDropDown stdctrls/tcustomcombobox.autodropdown.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Color controls/tcontrol.color.html - DataField - DataSource dbctrls/tcustomdbcombobox.datasource.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - DropDownCount stdctrls/tcustomcombobox.dropdowncount.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - ItemHeight stdctrls/tcustomcombobox.itemheight.html - Items stdctrls/tcustomcombobox.items.html - ItemWidth stdctrls/tcustomcombobox.itemwidth.html - MaxLength stdctrls/tcustomcombobox.maxlength.html - OnChange stdctrls/tcustomcombobox.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnCloseUp stdctrls/tcustomcombobox.oncloseup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html - OnDropDown stdctrls/tcustomcombobox.ondropdown.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnSelect stdctrls/tcustomcombobox.onselect.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - ReadOnly stdctrls/tcustomcombobox.readonly.html - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomcombobox.sorted.html - Style stdctrls/tcustomcombobox.style.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TDBLookupComboBox dbctrls/tdblookupcombobox.html - CloseUp dbctrls/tdblookupcombobox.closeup.html - InitializeWnd dbctrls/tdblookupcombobox.initializewnd.html - KeyDown dbctrls/tdblookupcombobox.keydown.html - UpdateData dbctrls/tdblookupcombobox.updatedata.html - DataChange dbctrls/tcustomdbcombobox.datachange.html - Select dbctrls/tdblookupcombobox.select.html - Create dbctrls/tdblookupcombobox.create.html - KeyValue dbctrls/tdblookupcombobox.keyvalue.html - AutoComplete dbctrls/tdblookupcombobox.autocomplete.html - BiDiMode dbctrls/tdblookupcombobox.bidimode.html - KeyField dbctrls/tdblookupcombobox.keyfield.html - ListField dbctrls/tdblookupcombobox.listfield.html - ListFieldIndex dbctrls/tdblookupcombobox.listfieldindex.html - ListSource dbctrls/tdblookupcombobox.listsource.html - LookupCache dbctrls/tdblookupcombobox.lookupcache.html - NullValueKey dbctrls/tdblookupcombobox.nullvaluekey.html - OnMouseEnter dbctrls/tdblookupcombobox.onmouseenter.html - OnMouseLeave dbctrls/tdblookupcombobox.onmouseleave.html - OnMouseWheel dbctrls/tdblookupcombobox.onmousewheel.html - OnMouseWheelDown dbctrls/tdblookupcombobox.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdblookupcombobox.onmousewheelup.html - ParentBiDiMode dbctrls/tdblookupcombobox.parentbidimode.html - ScrollListDataset dbctrls/tdblookupcombobox.scrolllistdataset.html - Loaded - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html - AutoDropDown stdctrls/tcustomcombobox.autodropdown.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Color controls/tcontrol.color.html - DataField - DataSource dbctrls/tcustomdbcombobox.datasource.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - DropDownCount stdctrls/tcustomcombobox.dropdowncount.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - OnChange stdctrls/tcustomcombobox.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnCloseUp stdctrls/tcustomcombobox.oncloseup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html - OnDropDown stdctrls/tcustomcombobox.ondropdown.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnSelect stdctrls/tcustomcombobox.onselect.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomcombobox.readonly.html - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomcombobox.sorted.html - Style stdctrls/tcustomcombobox.style.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TDBMemo dbctrls/tdbmemo.html - DataChange dbctrls/tdbmemo.datachange.html - UpdateData dbctrls/tdbmemo.updatedata.html - KeyDown dbctrls/tdbmemo.keydown.html - WSRegisterClass - Create dbctrls/tdbmemo.create.html - Destroy dbctrls/tdbmemo.destroy.html - EditingDone dbctrls/tdbmemo.editingdone.html - LoadMemo dbctrls/tdbmemo.loadmemo.html - ExecuteAction dbctrls/tdbmemo.executeaction.html - UpdateAction dbctrls/tdbmemo.updateaction.html - Field dbctrls/tdbmemo.field.html - AutoDisplay dbctrls/tdbmemo.autodisplay.html - BiDiMode dbctrls/tdbmemo.bidimode.html - BorderStyle dbctrls/tdbmemo.borderstyle.html - CharCase dbctrls/tdbmemo.charcase.html - Constraints dbctrls/tdbmemo.constraints.html - DataField dbctrls/tdbmemo.datafield.html - DataSource dbctrls/tdbmemo.datasource.html - Enabled dbctrls/tdbmemo.enabled.html - OnClick dbctrls/tdbmemo.onclick.html - OnContextPopup dbctrls/tdbmemo.oncontextpopup.html - OnDblClick dbctrls/tdbmemo.ondblclick.html - OnEditingDone dbctrls/tdbmemo.oneditingdone.html - OnMouseDown dbctrls/tdbmemo.onmousedown.html - OnMouseEnter dbctrls/tdbmemo.onmouseenter.html - OnMouseLeave dbctrls/tdbmemo.onmouseleave.html - OnMouseMove dbctrls/tdbmemo.onmousemove.html - OnMouseUp dbctrls/tdbmemo.onmouseup.html - OnMouseWheel dbctrls/tdbmemo.onmousewheel.html - OnMouseWheelDown dbctrls/tdbmemo.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbmemo.onmousewheelup.html - ParentBiDiMode dbctrls/tdbmemo.parentbidimode.html - GetReadOnly - SetReadOnly - Notification - Change stdctrls/tcustomedit.change.html - KeyPress controls/twincontrol.keypress.html - WndProc controls/tcontrol.wndproc.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Font controls/tcontrol.font.html - MaxLength stdctrls/tcustomedit.maxlength.html - OnChange stdctrls/tcustomedit.onchange.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentFont controls/tcontrol.parentfont.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ScrollBars stdctrls/tcustommemo.scrollbars.html - TabOrder controls/twincontrol.taborder.html - Tabstop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - WordWrap stdctrls/tcustommemo.wordwrap.html - TDBGroupBox dbctrls/tdbgroupbox.html - DataChange dbctrls/tdbgroupbox.datachange.html - Create dbctrls/tdbgroupbox.create.html - Destroy dbctrls/tdbgroupbox.destroy.html - ExecuteAction dbctrls/tdbgroupbox.executeaction.html - UpdateAction dbctrls/tdbgroupbox.updateaction.html - Field dbctrls/tdbgroupbox.field.html - BiDiMode dbctrls/tdbgroupbox.bidimode.html - ClientWidth dbctrls/tdbgroupbox.clientwidth.html - DataField dbctrls/tdbgroupbox.datafield.html - DataSource dbctrls/tdbgroupbox.datasource.html - OnMouseEnter dbctrls/tdbgroupbox.onmouseenter.html - OnMouseLeave dbctrls/tdbgroupbox.onmouseleave.html - OnMouseWheel dbctrls/tdbgroupbox.onmousewheel.html - OnMouseWheelDown dbctrls/tdbgroupbox.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbgroupbox.onmousewheelup.html - ParentBiDiMode dbctrls/tdbgroupbox.parentbidimode.html - Notification - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Caption controls/tcontrol.caption.html - ClientHeight controls/tcontrol.clientheight.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - TDBImage dbctrls/tdbimage.html - DataChange dbctrls/tdbimage.datachange.html - UpdateData dbctrls/tdbimage.updatedata.html - LoadPicture dbctrls/tdbimage.loadpicture.html - WSRegisterClass - Create dbctrls/tdbimage.create.html - Destroy dbctrls/tdbimage.destroy.html - ExecuteAction dbctrls/tdbimage.executeaction.html - UpdateAction dbctrls/tdbimage.updateaction.html - Field dbctrls/tdbimage.field.html - Change dbctrls/tdbimage.change.html - AutoDisplay dbctrls/tdbimage.autodisplay.html - DataField dbctrls/tdbimage.datafield.html - DataSource dbctrls/tdbimage.datasource.html - OnDblClick dbctrls/tdbimage.ondblclick.html - OnDBImageRead dbctrls/tdbimage.ondbimageread.html - OnDBImageWrite dbctrls/tdbimage.ondbimagewrite.html - PopupMenu dbctrls/tdbimage.popupmenu.html - OnMouseEnter dbctrls/tdbimage.onmouseenter.html - OnMouseLeave dbctrls/tdbimage.onmouseleave.html - OnMouseWheel dbctrls/tdbimage.onmousewheel.html - OnMouseWheelDown dbctrls/tdbimage.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbimage.onmousewheelup.html - Proportional dbctrls/tdbimage.proportional.html - QuickDraw dbctrls/tdbimage.quickdraw.html - ReadOnly dbctrls/tdbimage.readonly.html - WriteHeader dbctrls/tdbimage.writeheader.html - Notification - PictureChanged extctrls/tcustomimage.picturechanged.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Center extctrls/tcustomimage.center.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - OnClick controls/tcontrol.onclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - Stretch extctrls/tcustomimage.stretch.html - Transparent extctrls/tcustomimage.transparent.html - Visible controls/tcontrol.visible.html - TDBCalendar dbctrls/tdbcalendar.html - Create dbctrls/tdbcalendar.create.html - Destroy dbctrls/tdbcalendar.destroy.html - EditingDone dbctrls/tdbcalendar.editingdone.html - ExecuteAction dbctrls/tdbcalendar.executeaction.html - UpdateAction dbctrls/tdbcalendar.updateaction.html - Field dbctrls/tdbcalendar.field.html - DataField dbctrls/tdbcalendar.datafield.html - DataSource dbctrls/tdbcalendar.datasource.html - Date dbctrls/tdbcalendar.date.html - Notification - BorderSpacing controls/tcontrol.borderspacing.html - ReadOnly - DisplaySettings calendar/tcustomcalendar.displaysettings.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Visible controls/tcontrol.visible.html - OnClick controls/tcontrol.onclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseDown controls/tcontrol.onmousedown.html - OnDayChanged calendar/tcustomcalendar.ondaychanged.html - OnMonthChanged calendar/tcustomcalendar.onmonthchanged.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnYearChanged calendar/tcustomcalendar.onyearchanged.html - TDBCustomNavigator dbctrls/tdbcustomnavigator.html - Buttons dbctrls/tdbcustomnavigator.buttons.html - FocusableButtons dbctrls/tdbcustomnavigator.focusablebuttons.html - DataChanged dbctrls/tdbcustomnavigator.datachanged.html - EditingChanged dbctrls/tdbcustomnavigator.editingchanged.html - ActiveChanged dbctrls/tdbcustomnavigator.activechanged.html - UpdateButtons dbctrls/tdbcustomnavigator.updatebuttons.html - UpdateHints dbctrls/tdbcustomnavigator.updatehints.html - HintsChanged dbctrls/tdbcustomnavigator.hintschanged.html - ButtonClickHandler dbctrls/tdbcustomnavigator.buttonclickhandler.html - BeginUpdateButtons dbctrls/tdbcustomnavigator.beginupdatebuttons.html - EndUpdateButtons dbctrls/tdbcustomnavigator.endupdatebuttons.html - Create dbctrls/tdbcustomnavigator.create.html - Destroy dbctrls/tdbcustomnavigator.destroy.html - BtnClick dbctrls/tdbcustomnavigator.btnclick.html - VisibleButtonCount dbctrls/tdbcustomnavigator.visiblebuttoncount.html - BeforeAction dbctrls/tdbcustomnavigator.beforeaction.html - ConfirmDelete dbctrls/tdbcustomnavigator.confirmdelete.html - DataSource dbctrls/tdbcustomnavigator.datasource.html - Direction dbctrls/tdbcustomnavigator.direction.html - Flat dbctrls/tdbcustomnavigator.flat.html - Hints dbctrls/tdbcustomnavigator.hints.html - Options dbctrls/tdbcustomnavigator.options.html - OnClick dbctrls/tdbcustomnavigator.onclick.html - VisibleButtons dbctrls/tdbcustomnavigator.visiblebuttons.html - ShowButtonHints dbctrls/tdbcustomnavigator.showbuttonhints.html - Images dbctrls/tdbcustomnavigator.images.html - Loaded - Notification - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - SetEnabled - TDBNavButton dbctrls/tdbnavbutton.html - NavStyle dbctrls/tdbnavbutton.navstyle.html - Index dbctrls/tdbnavbutton.index.html - Destroy buttons/tcustomspeedbutton.destroy.html - TDBNavFocusableButton dbctrls/tdbnavfocusablebutton.html - NavStyle dbctrls/tdbnavfocusablebutton.navstyle.html - Index dbctrls/tdbnavfocusablebutton.index.html - TDBNavDataLink dbctrls/tdbnavdatalink.html - EditingChanged dbctrls/tdbnavdatalink.editingchanged.html - DataSetChanged dbctrls/tdbnavdatalink.datasetchanged.html - ActiveChanged dbctrls/tdbnavdatalink.activechanged.html - Create dbctrls/tdbnavdatalink.create.html - TDBNavigator dbctrls/tdbnavigator.html - BidiMode dbctrls/tdbnavigator.bidimode.html - ChildSizing dbctrls/tdbnavigator.childsizing.html - OnMouseEnter dbctrls/tdbnavigator.onmouseenter.html - OnMouseLeave dbctrls/tdbnavigator.onmouseleave.html - OnMouseWheel dbctrls/tdbnavigator.onmousewheel.html - OnMouseWheelDown dbctrls/tdbnavigator.onmousewheeldown.html - OnMouseWheelUp dbctrls/tdbnavigator.onmousewheelup.html - Options dbctrls/tdbnavigator.options.html - ParentBidiMode dbctrls/tdbnavigator.parentbidimode.html - Images dbctrls/tdbnavigator.images.html - Align controls/tcontrol.align.html - Alignment extctrls/tcustompanel.alignment.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BeforeAction dbctrls/tdbcustomnavigator.beforeaction.html - BevelInner extctrls/tcustompanel.bevelinner.html - BevelOuter extctrls/tcustompanel.bevelouter.html - BevelWidth extctrls/tcustompanel.bevelwidth.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - BorderWidth controls/twincontrol.borderwidth.html - Caption controls/tcontrol.caption.html - ClientHeight controls/tcontrol.clientheight.html - ClientWidth controls/tcontrol.clientwidth.html - Color controls/tcontrol.color.html - ConfirmDelete dbctrls/tdbcustomnavigator.confirmdelete.html - DataSource dbctrls/tdbcustomnavigator.datasource.html - Direction dbctrls/tdbcustomnavigator.direction.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Flat dbctrls/tdbcustomnavigator.flat.html - Font controls/tcontrol.font.html - Hints dbctrls/tdbcustomnavigator.hints.html - OnClick dbctrls/tdbcustomnavigator.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnStartDrag controls/tcontrol.onstartdrag.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - VisibleButtons dbctrls/tdbcustomnavigator.visiblebuttons.html - ChangeDataSource dbctrls/changedatasource.html - Register dbctrls/register.html - Calendar calendar/index.html - DefaultDisplaySettings calendar/defaultdisplaysettings.html - TDisplaySetting calendar/tdisplaysetting.html - TDisplaySettings calendar/tdisplaysettings.html - TCalendarPart calendar/tcalendarpart.html - EInvalidDate calendar/einvaliddate.html - TCustomCalendar calendar/tcustomcalendar.html - LMChanged calendar/tcustomcalendar.lmchanged.html - LMMonthChanged calendar/tcustomcalendar.lmmonthchanged.html - LMYearChanged calendar/tcustomcalendar.lmyearchanged.html - LMDayChanged calendar/tcustomcalendar.lmdaychanged.html - DestroyWnd controls/twincontrol.destroywnd.html - Create calendar/tcustomcalendar.create.html - HitTest calendar/tcustomcalendar.hittest.html - Date calendar/tcustomcalendar.date.html - DateTime calendar/tcustomcalendar.datetime.html - DisplaySettings calendar/tcustomcalendar.displaysettings.html - OnChange calendar/tcustomcalendar.onchange.html - OnDayChanged calendar/tcustomcalendar.ondaychanged.html - OnMonthChanged calendar/tcustomcalendar.onmonthchanged.html - OnYearChanged calendar/tcustomcalendar.onyearchanged.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - Loaded - InitializeWnd controls/twincontrol.initializewnd.html - TCalendar calendar/tcalendar.html - AutoSize calendar/tcalendar.autosize.html - Hint calendar/tcalendar.hint.html - OnMouseWheel calendar/tcalendar.onmousewheel.html - OnMouseWheelDown calendar/tcalendar.onmousewheeldown.html - OnMouseWheelUp calendar/tcalendar.onmousewheelup.html - ShowHint calendar/tcalendar.showhint.html - TabOrder calendar/tcalendar.taborder.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - DateTime calendar/tcustomcalendar.datetime.html - DisplaySettings calendar/tcustomcalendar.displaysettings.html - OnChange calendar/tcustomcalendar.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnDayChanged calendar/tcustomcalendar.ondaychanged.html - OnDblClick controls/tcontrol.ondblclick.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMonthChanged calendar/tcustomcalendar.onmonthchanged.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseEnter controls/tcontrol.onmouseenter.html - OnMouseLeave controls/tcontrol.onmouseleave.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - OnYearChanged calendar/tcustomcalendar.onyearchanged.html - PopupMenu controls/tcontrol.popupmenu.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - Register calendar/register.html - DefaultTranslator defaulttranslator/index.html - LCLTranslator lcltranslator/index.html - TUpdateTranslator lcltranslator/tupdatetranslator.html - UpdateTranslation lcltranslator/tupdatetranslator.updatetranslation.html - TDefaultTranslator lcltranslator/tdefaulttranslator.html - Create lcltranslator/tdefaulttranslator.create.html - Destroy lcltranslator/tdefaulttranslator.destroy.html - TranslateStringProperty lcltranslator/tdefaulttranslator.translatestringproperty.html - TPOTranslator lcltranslator/tpotranslator.html - Create lcltranslator/tpotranslator.create.html - Destroy lcltranslator/tpotranslator.destroy.html - TranslateStringProperty lcltranslator/tpotranslator.translatestringproperty.html - SetDefaultLang lcltranslator/setdefaultlang.html - Translations translations/index.html - tgHasDup translations/tghasdup.html - sFuzzyFlag translations/sfuzzyflag.html - sBadFormatFlag translations/sbadformatflag.html - TStringsType translations/tstringstype.html - TTranslateUnitResult translations/ttranslateunitresult.html - TPOFileItem translations/tpofileitem.html - Tag translations/tpofileitem.tag.html - LineNr translations/tpofileitem.linenr.html - Comments translations/tpofileitem.comments.html - IdentifierLow translations/tpofileitem.identifierlow.html - Original translations/tpofileitem.original.html - Translation translations/tpofileitem.translation.html - Flags translations/tpofileitem.flags.html - PreviousID translations/tpofileitem.previousid.html - Context translations/tpofileitem.context.html - Create translations/tpofileitem.create.html - ModifyFlag translations/tpofileitem.modifyflag.html - Identifier translations/tpofileitem.identifier.html - TPOFile translations/tpofile.html - FItems translations/tpofile.fitems.html - FIdentifierLowToItem translations/tpofile.fidentifierlowtoitem.html - FIdentLowVarToItem translations/tpofile.fidentlowvartoitem.html - FOriginalToItem translations/tpofile.foriginaltoitem.html - FCharSet translations/tpofile.fcharset.html - FHeader translations/tpofile.fheader.html - FAllEntries translations/tpofile.fallentries.html - FTag translations/tpofile.ftag.html - FModified translations/tpofile.fmodified.html - FHelperList translations/tpofile.fhelperlist.html - FModuleList translations/tpofile.fmodulelist.html - FPoName translations/tpofile.fponame.html - FNrTranslated translations/tpofile.fnrtranslated.html - FNrUntranslated translations/tpofile.fnruntranslated.html - FNrFuzzy translations/tpofile.fnrfuzzy.html - FNrErrors translations/tpofile.fnrerrors.html - FFormatChecked translations/tpofile.fformatchecked.html - RemoveTaggedItems translations/tpofile.removetaggeditems.html - RemoveUntaggedModules translations/tpofile.removeuntaggedmodules.html - GetCount translations/tpofile.getcount.html - SetCharSet translations/tpofile.setcharset.html - GetPoItem translations/tpofile.getpoitem.html - ReadPOText translations/tpofile.readpotext.html - Create translations/tpofile.create.html - Destroy translations/tpofile.destroy.html - Add translations/tpofile.add.html - Translate translations/tpofile.translate.html - CharSet translations/tpofile.charset.html - Report translations/tpofile.report.html - CreateHeader translations/tpofile.createheader.html - UpdateStrings translations/tpofile.updatestrings.html - SaveToStrings translations/tpofile.savetostrings.html - SaveToFile translations/tpofile.savetofile.html - UpdateItem translations/tpofile.updateitem.html - UpdateTranslation translations/tpofile.updatetranslation.html - ClearModuleList translations/tpofile.clearmodulelist.html - AddToModuleList translations/tpofile.addtomodulelist.html - UntagAll translations/tpofile.untagall.html - Tag translations/tpofile.tag.html - Modified translations/tpofile.modified.html - Items translations/tpofile.items.html - CheckFormatArguments translations/tpofile.checkformatarguments.html - CleanUp translations/tpofile.cleanup.html - PoName translations/tpofile.poname.html - PoRename translations/tpofile.porename.html - NrTranslated translations/tpofile.nrtranslated.html - NrUntranslated translations/tpofile.nruntranslated.html - NrFuzzy translations/tpofile.nrfuzzy.html - NrErrors translations/tpofile.nrerrors.html - FindPoItem translations/tpofile.findpoitem.html - OriginalToItem translations/tpofile.originaltoitem.html - OriginalList translations/tpofile.originallist.html - PoItems translations/tpofile.poitems.html - Count translations/tpofile.count.html - Header translations/tpofile.header.html - FormatChecked translations/tpofile.formatchecked.html - EPOFileError translations/epofileerror.html - ResFileName translations/epofileerror.resfilename.html - POFileName translations/epofileerror.pofilename.html - TranslateUnitResourceStrings translations/translateunitresourcestrings.html - TranslateResourceStrings translations/translateresourcestrings.html - UTF8ToSystemCharSet translations/utf8tosystemcharset.html - UpdatePoFile translations/updatepofile.html - UpdatePoFileTranslations translations/updatepofiletranslations.html - SystemCharSetIsUTF8 translations/systemcharsetisutf8.html - StringHashList stringhashlist/index.html - PStringHashItem stringhashlist/pstringhashitem.html - TStringHashItem stringhashlist/tstringhashitem.html - PStringHashItemList stringhashlist/pstringhashitemlist.html - TStringHashList stringhashlist/tstringhashlist.html - HashOf stringhashlist/tstringhashlist.hashof.html - Insert stringhashlist/tstringhashlist.insert.html - Create stringhashlist/tstringhashlist.create.html - Destroy stringhashlist/tstringhashlist.destroy.html - Add stringhashlist/tstringhashlist.add.html - Clear stringhashlist/tstringhashlist.clear.html - Find stringhashlist/tstringhashlist.find.html - Remove stringhashlist/tstringhashlist.remove.html - CaseSensitive stringhashlist/tstringhashlist.casesensitive.html - Count stringhashlist/tstringhashlist.count.html - Data stringhashlist/tstringhashlist.data.html - List stringhashlist/tstringhashlist.list.html - DynHashArray dynhasharray/index.html - ItemMemManager dynhasharray/itemmemmanager.html - THashFunction dynhasharray/thashfunction.html - TOwnerHashFunction dynhasharray/townerhashfunction.html - TOnGetKeyForHashItem dynhasharray/tongetkeyforhashitem.html - TOnEachHashItem dynhasharray/toneachhashitem.html - PDynHashArrayItem dynhasharray/pdynhasharrayitem.html - TDynHashArrayItem dynhasharray/tdynhasharrayitem.html - TDynHashArrayOption dynhasharray/tdynhasharrayoption.html - TDynHashArrayOptions dynhasharray/tdynhasharrayoptions.html - TDynHashArray dynhasharray/tdynhasharray.html - RebuildItems dynhasharray/tdynhasharray.rebuilditems.html - SaveCacheItem dynhasharray/tdynhasharray.savecacheitem.html - Create dynhasharray/tdynhasharray.create.html - Destroy dynhasharray/tdynhasharray.destroy.html - Add dynhasharray/tdynhasharray.add.html - Contains dynhasharray/tdynhasharray.contains.html - ContainsKey dynhasharray/tdynhasharray.containskey.html - Remove dynhasharray/tdynhasharray.remove.html - Clear dynhasharray/tdynhasharray.clear.html - ClearCache dynhasharray/tdynhasharray.clearcache.html - First dynhasharray/tdynhasharray.first.html - Count dynhasharray/tdynhasharray.count.html - IndexOf dynhasharray/tdynhasharray.indexof.html - IndexOfKey dynhasharray/tdynhasharray.indexofkey.html - FindHashItem dynhasharray/tdynhasharray.findhashitem.html - FindHashItemWithKey dynhasharray/tdynhasharray.findhashitemwithkey.html - FindItemWithKey dynhasharray/tdynhasharray.finditemwithkey.html - GetHashItem dynhasharray/tdynhasharray.gethashitem.html - Delete dynhasharray/tdynhasharray.delete.html - AssignTo dynhasharray/tdynhasharray.assignto.html - ForEach dynhasharray/tdynhasharray.foreach.html - SlowAlternativeHashMethod dynhasharray/tdynhasharray.slowalternativehashmethod.html - ConsistencyCheck dynhasharray/tdynhasharray.consistencycheck.html - WriteDebugReport dynhasharray/tdynhasharray.writedebugreport.html - FirstHashItem dynhasharray/tdynhasharray.firsthashitem.html - MinCapacity dynhasharray/tdynhasharray.mincapacity.html - MaxCapacity dynhasharray/tdynhasharray.maxcapacity.html - Capacity dynhasharray/tdynhasharray.capacity.html - CustomHashFunction dynhasharray/tdynhasharray.customhashfunction.html - OwnerHashFunction dynhasharray/tdynhasharray.ownerhashfunction.html - OnGetKeyForHashItem dynhasharray/tdynhasharray.ongetkeyforhashitem.html - Options dynhasharray/tdynhasharray.options.html - TDynHashArrayItemMemManager dynhasharray/tdynhasharrayitemmemmanager.html - DisposeItem dynhasharray/tdynhasharrayitemmemmanager.disposeitem.html - NewItem dynhasharray/tdynhasharrayitemmemmanager.newitem.html - MinimumFreeCount dynhasharray/tdynhasharrayitemmemmanager.minimumfreecount.html - MaximumFreeRatio dynhasharray/tdynhasharrayitemmemmanager.maximumfreeratio.html - Count dynhasharray/tdynhasharrayitemmemmanager.count.html - Clear dynhasharray/tdynhasharrayitemmemmanager.clear.html - Create dynhasharray/tdynhasharrayitemmemmanager.create.html - Destroy dynhasharray/tdynhasharrayitemmemmanager.destroy.html - ConsistencyCheck dynhasharray/tdynhasharrayitemmemmanager.consistencycheck.html - WriteDebugReport dynhasharray/tdynhasharrayitemmemmanager.writedebugreport.html - EDynHashArrayException dynhasharray/edynhasharrayexception.html - ExtDlgs extdlgs/index.html - DefCalcPrecision extdlgs/defcalcprecision.html - TCalcState extdlgs/tcalcstate.html - TCalculatorLayout extdlgs/tcalculatorlayout.html - TPreviewFileControl extdlgs/tpreviewfilecontrol.html - SetPreviewFileDialog extdlgs/tpreviewfilecontrol.setpreviewfiledialog.html - PreviewFileDialog extdlgs/tpreviewfilecontrol.previewfiledialog.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - CreateParams controls/twincontrol.createparams.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - TPreviewFileDialog extdlgs/tpreviewfiledialog.html - CreatePreviewControl extdlgs/tpreviewfiledialog.createpreviewcontrol.html - InitPreviewControl extdlgs/tpreviewfiledialog.initpreviewcontrol.html - PreviewFileControl extdlgs/tpreviewfiledialog.previewfilecontrol.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Execute - Create ms-its:rtl.chm::/classes/tcomponent.create.html - TOpenPictureDialog extdlgs/topenpicturedialog.html - IsFilterStored extdlgs/topenpicturedialog.isfilterstored.html - ImageCtrl extdlgs/topenpicturedialog.imagectrl.html - PictureGroupBox extdlgs/topenpicturedialog.picturegroupbox.html - ClearPreview extdlgs/topenpicturedialog.clearpreview.html - UpdatePreview extdlgs/topenpicturedialog.updatepreview.html - GetFilterExt extdlgs/topenpicturedialog.getfilterext.html - DefaultFilter extdlgs/topenpicturedialog.defaultfilter.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - InitPreviewControl extdlgs/tpreviewfiledialog.initpreviewcontrol.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - DoClose - DoSelectionChange - DoShow - Filter - TSavePictureDialog extdlgs/tsavepicturedialog.html - DefaultTitle extdlgs/tsavepicturedialog.defaulttitle.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - TExtCommonDialog extdlgs/textcommondialog.html - GetLeft extdlgs/textcommondialog.getleft.html - GetHeight extdlgs/textcommondialog.getheight.html - GetTop extdlgs/textcommondialog.gettop.html - GetWidth extdlgs/textcommondialog.getwidth.html - SetLeft extdlgs/textcommondialog.setleft.html - SetTop extdlgs/textcommondialog.settop.html - DlgForm extdlgs/textcommondialog.dlgform.html - Create extdlgs/textcommondialog.create.html - Destroy extdlgs/textcommondialog.destroy.html - Left extdlgs/textcommondialog.left.html - Top extdlgs/textcommondialog.top.html - DialogPosition extdlgs/textcommondialog.dialogposition.html - TCalculatorDialog extdlgs/tcalculatordialog.html - Change extdlgs/tcalculatordialog.change.html - CalcKey extdlgs/tcalculatordialog.calckey.html - DefaultTitle extdlgs/tcalculatordialog.defaulttitle.html - DisplayChange extdlgs/tcalculatordialog.displaychange.html - CalcDisplay extdlgs/tcalculatordialog.calcdisplay.html - Memory extdlgs/tcalculatordialog.memory.html - BeepOnError extdlgs/tcalculatordialog.beeponerror.html - CalculatorLayout extdlgs/tcalculatordialog.calculatorlayout.html - Precision extdlgs/tcalculatordialog.precision.html - Value extdlgs/tcalculatordialog.value.html - OnCalcKey extdlgs/tcalculatordialog.oncalckey.html - OnChange extdlgs/tcalculatordialog.onchange.html - OnDisplayChange extdlgs/tcalculatordialog.ondisplaychange.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html - Execute - Title - TCalculatorForm extdlgs/tcalculatorform.html - OkClick extdlgs/tcalculatorform.okclick.html - CancelClick extdlgs/tcalculatorform.cancelclick.html - CalcKey extdlgs/tcalculatorform.calckey.html - DisplayChange extdlgs/tcalculatorform.displaychange.html - InitForm extdlgs/tcalculatorform.initform.html - MainPanel extdlgs/tcalculatorform.mainpanel.html - CalcPanel extdlgs/tcalculatorform.calcpanel.html - DisplayPanel extdlgs/tcalculatorform.displaypanel.html - DisplayLabel extdlgs/tcalculatorform.displaylabel.html - Create extdlgs/tcalculatorform.create.html - Value extdlgs/tcalculatorform.value.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TCalendarDialog extdlgs/tcalendardialog.html - GetNewDate extdlgs/tcalendardialog.getnewdate.html - CalendarDblClick extdlgs/tcalendardialog.calendardblclick.html - DefaultTitle extdlgs/tcalendardialog.defaulttitle.html - Left extdlgs/tcalendardialog.left.html - Top extdlgs/tcalendardialog.top.html - Date extdlgs/tcalendardialog.date.html - DisplaySettings extdlgs/tcalendardialog.displaysettings.html - OnDayChanged extdlgs/tcalendardialog.ondaychanged.html - OnMonthChanged extdlgs/tcalendardialog.onmonthchanged.html - OnYearChanged extdlgs/tcalendardialog.onyearchanged.html - OnChange extdlgs/tcalendardialog.onchange.html - OKCaption extdlgs/tcalendardialog.okcaption.html - CancelCaption extdlgs/tcalendardialog.cancelcaption.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Execute - CreateCalculatorForm extdlgs/createcalculatorform.html - Register extdlgs/register.html - extgraphics extgraphics/index.html - TShapeDirection extgraphics/tshapedirection.html - TInitShapeProc extgraphics/tinitshapeproc.html - Paint2HeadArrow extgraphics/paint2headarrow.html - PaintBarbadosTrident extgraphics/paintbarbadostrident.html - PaintBigI extgraphics/paintbigi.html - PaintBoldArrow extgraphics/paintboldarrow.html - PaintCanadianMaple extgraphics/paintcanadianmaple.html - PaintChevronArrow extgraphics/paintchevronarrow.html - PaintFivePointStar extgraphics/paintfivepointstar.html - PaintHexagon extgraphics/painthexagon.html - PaintNotchedArrow extgraphics/paintnotchedarrow.html - PaintOctogon extgraphics/paintoctogon.html - PaintPentagon extgraphics/paintpentagon.html - PaintPlus extgraphics/paintplus.html - PaintQuadrangle extgraphics/paintquadrangle.html - PaintRightTriangle extgraphics/paintrighttriangle.html - PaintSwastika extgraphics/paintswastika.html - PaintTriangle extgraphics/painttriangle.html - PaintTriangular extgraphics/painttriangular.html - PaintValve extgraphics/paintvalve.html - PaintVArrow extgraphics/paintvarrow.html - PaintCross extgraphics/paintcross.html - PaintHalfEllipse extgraphics/painthalfellipse.html - PaintFivePointLineStar extgraphics/paintfivepointlinestar.html - PaintStarN extgraphics/paintstarn.html - InitPolygon extgraphics/initpolygon.html - CalculatePentagonPoints extgraphics/calculatepentagonpoints.html - LinesPointOfIntersection extgraphics/linespointofintersection.html - FileCtrl filectrl/index.html - TFileAttr filectrl/tfileattr.html - TFileType filectrl/tfiletype.html - TCustomFileListBox filectrl/tcustomfilelistbox.html - DoChangeFile filectrl/tcustomfilelistbox.dochangefile.html - IndexOfFile filectrl/tcustomfilelistbox.indexoffile.html - UpdateFileList filectrl/tcustomfilelistbox.updatefilelist.html - Drive filectrl/tcustomfilelistbox.drive.html - Directory filectrl/tcustomfilelistbox.directory.html - FileName filectrl/tcustomfilelistbox.filename.html - FileType filectrl/tcustomfilelistbox.filetype.html - Mask filectrl/tcustomfilelistbox.mask.html - OnChange filectrl/tcustomfilelistbox.onchange.html - Loaded - KeyUp controls/twincontrol.keyup.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html - Click controls/tcontrol.click.html - Sorted stdctrls/tcustomlistbox.sorted.html - TFileListBox filectrl/tfilelistbox.html - OnDrawItem filectrl/tfilelistbox.ondrawitem.html - OnMouseEnter filectrl/tfilelistbox.onmouseenter.html - OnMouseLeave filectrl/tfilelistbox.onmouseleave.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BiDiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - Constraints controls/tcontrol.constraints.html - Directory filectrl/tcustomfilelistbox.directory.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html - FileType filectrl/tcustomfilelistbox.filetype.html - Font controls/tcontrol.font.html - IntegralHeight stdctrls/tcustomlistbox.integralheight.html - ItemHeight stdctrls/tcustomlistbox.itemheight.html - Mask filectrl/tcustomfilelistbox.mask.html - MultiSelect stdctrls/tcustomlistbox.multiselect.html - OnChange filectrl/tcustomfilelistbox.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnMouseWheel controls/tcontrol.onmousewheel.html - OnMouseWheelDown controls/tcontrol.onmousewheeldown.html - OnMouseWheelUp controls/tcontrol.onmousewheelup.html - OnResize controls/tcontrol.onresize.html - OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentBiDiMode controls/tcontrol.parentbidimode.html - ParentShowHint controls/tcontrol.parentshowhint.html - ParentFont controls/tcontrol.parentfont.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - Sorted stdctrls/tcustomlistbox.sorted.html - Style stdctrls/tcustomlistbox.style.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - TopIndex stdctrls/tcustomlistbox.topindex.html - Visible controls/tcontrol.visible.html - TCustomFilterComboBox filectrl/tcustomfiltercombobox.html - Select filectrl/tcustomfiltercombobox.select.html - Notification filectrl/tcustomfiltercombobox.notification.html - Create filectrl/tcustomfiltercombobox.create.html - Destroy filectrl/tcustomfiltercombobox.destroy.html - ConvertFilterToStrings filectrl/tcustomfiltercombobox.convertfiltertostrings.html - Mask filectrl/tcustomfiltercombobox.mask.html - ShellListView filectrl/tcustomfiltercombobox.shelllistview.html - TFilterComboBox filectrl/tfiltercombobox.html - OnMouseEnter filectrl/tfiltercombobox.onmouseenter.html - OnMouseLeave filectrl/tfiltercombobox.onmouseleave.html - OnMouseWheel filectrl/tfiltercombobox.onmousewheel.html - OnMouseWheelDown filectrl/tfiltercombobox.onmousewheeldown.html - OnMouseWheelUp filectrl/tfiltercombobox.onmousewheelup.html - OnSelect filectrl/tfiltercombobox.onselect.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoComplete stdctrls/tcustomcombobox.autocomplete.html - AutoDropDown stdctrls/tcustomcombobox.autodropdown.html - AutoSize controls/tcontrol.autosize.html - BidiMode controls/tcontrol.bidimode.html - BorderSpacing controls/tcontrol.borderspacing.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragKind controls/tcontrol.dragkind.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Filter - Font controls/tcontrol.font.html - ItemIndex stdctrls/tcustomcombobox.itemindex.html - ParentBidiMode controls/tcontrol.parentbidimode.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShellListView filectrl/tcustomfiltercombobox.shelllistview.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomcombobox.onchange.html - OnClick controls/tcontrol.onclick.html - OnCloseUp stdctrls/tcustomcombobox.oncloseup.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnDropDown stdctrls/tcustomcombobox.ondropdown.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - MiniMizeName filectrl/minimizename.html - Register filectrl/register.html - ShellCtrls shellctrls/index.html - SShellCtrlsInvalidRoot shellctrls/sshellctrlsinvalidroot.html - SShellCtrlsInvalidPath shellctrls/sshellctrlsinvalidpath.html - SShellCtrlsInvalidPathRelative shellctrls/sshellctrlsinvalidpathrelative.html - TObjectType shellctrls/tobjecttype.html - TObjectTypes shellctrls/tobjecttypes.html - TFileSortType shellctrls/tfilesorttype.html - TCustomShellTreeView shellctrls/tcustomshelltreeview.html - PopulateTreeNodeWithFiles shellctrls/tcustomshelltreeview.populatetreenodewithfiles.html - PopulateWithBaseFiles shellctrls/tcustomshelltreeview.populatewithbasefiles.html - DoSelectionChanged comctrls/tcustomtreeview.doselectionchanged.html - CanExpand comctrls/tcustomtreeview.canexpand.html - Create shellctrls/tcustomshelltreeview.create.html - Destroy shellctrls/tcustomshelltreeview.destroy.html - GetBasePath shellctrls/tcustomshelltreeview.getbasepath.html - GetRootPath shellctrls/tcustomshelltreeview.getrootpath.html - GetFilesInDir shellctrls/tcustomshelltreeview.getfilesindir.html - GetPathFromNode shellctrls/tcustomshelltreeview.getpathfromnode.html - GetSelectedNodePath shellctrls/tcustomshelltreeview.getselectednodepath.html - Refresh shellctrls/tcustomshelltreeview.refresh.html - ObjectTypes shellctrls/tcustomshelltreeview.objecttypes.html - ShellListView shellctrls/tcustomshelltreeview.shelllistview.html - FileSortType shellctrls/tcustomshelltreeview.filesorttype.html - Root shellctrls/tcustomshelltreeview.root.html - Path shellctrls/tcustomshelltreeview.path.html - Items comctrls/tcustomtreeview.items.html - TShellTreeView shellctrls/tshelltreeview.html - FileSortType shellctrls/tcustomshelltreeview.filesorttype.html - HideSelection shellctrls/tshelltreeview.hideselection.html - HotTrack shellctrls/tshelltreeview.hottrack.html - Images shellctrls/tshelltreeview.images.html - Indent shellctrls/tshelltreeview.indent.html - Root shellctrls/tcustomshelltreeview.root.html - OnAdvancedCustomDraw shellctrls/tshelltreeview.onadvancedcustomdraw.html - OnAdvancedCustomDrawItem shellctrls/tshelltreeview.onadvancedcustomdrawitem.html - OnCustomDraw shellctrls/tshelltreeview.oncustomdraw.html - OnCustomDrawItem shellctrls/tshelltreeview.oncustomdrawitem.html - OnMouseEnter shellctrls/tshelltreeview.onmouseenter.html - OnMouseLeave shellctrls/tshelltreeview.onmouseleave.html - OnMouseWheel shellctrls/tshelltreeview.onmousewheel.html - OnMouseWheelDown shellctrls/tshelltreeview.onmousewheeldown.html - OnMouseWheelUp shellctrls/tshelltreeview.onmousewheelup.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoExpand comctrls/tcustomtreeview.autoexpand.html - BorderSpacing controls/tcontrol.borderspacing.html - BackgroundColor comctrls/tcustomtreeview.backgroundcolor.html - BorderStyle controls/twincontrol.borderstyle.html - BorderWidth controls/twincontrol.borderwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - Enabled controls/tcontrol.enabled.html - ExpandSignType comctrls/tcustomtreeview.expandsigntype.html - Font controls/tcontrol.font.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly comctrls/tcustomtreeview.readonly.html - RightClickSelect comctrls/tcustomtreeview.rightclickselect.html - RowSelect comctrls/tcustomtreeview.rowselect.html - ScrollBars comctrls/tcustomtreeview.scrollbars.html - SelectionColor comctrls/tcustomtreeview.selectioncolor.html - ShowButtons comctrls/tcustomtreeview.showbuttons.html - ShowHint controls/tcontrol.showhint.html - ShowLines - ShowRoot comctrls/tcustomtreeview.showroot.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Tag ms-its:rtl.chm::/classes/tcomponent.tag.html - ToolTips comctrls/tcustomtreeview.tooltips.html - Visible controls/tcontrol.visible.html - OnChange comctrls/tcustomtreeview.onchange.html - OnChanging comctrls/tcustomtreeview.onchanging.html - OnClick controls/tcontrol.onclick.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html - OnShowHint controls/tcontrol.onshowhint.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - Options comctrls/tcustomtreeview.options.html - TreeLineColor comctrls/tcustomtreeview.treelinecolor.html - TreeLinePenStyle comctrls/tcustomtreeview.treelinepenstyle.html - ExpandSignColor comctrls/tcustomtreeview.expandsigncolor.html - ObjectTypes shellctrls/tcustomshelltreeview.objecttypes.html - ShellListView shellctrls/tcustomshelltreeview.shelllistview.html - TCustomShellListView shellctrls/tcustomshelllistview.html - PopulateWithRoot shellctrls/tcustomshelllistview.populatewithroot.html - Resize shellctrls/tcustomshelllistview.resize.html - Create shellctrls/tcustomshelllistview.create.html - Destroy shellctrls/tcustomshelllistview.destroy.html - GetPathFromItem shellctrls/tcustomshelllistview.getpathfromitem.html - Mask shellctrls/tcustomshelllistview.mask.html - ObjectTypes shellctrls/tcustomshelllistview.objecttypes.html - Root shellctrls/tcustomshelllistview.root.html - ShellTreeView shellctrls/tcustomshelllistview.shelltreeview.html - Items comctrls/tcustomlistview.items.html - TShellListView shellctrls/tshelllistview.html - OnMouseEnter shellctrls/tshelllistview.onmouseenter.html - OnMouseLeave shellctrls/tshelllistview.onmouseleave.html - OnMouseWheel shellctrls/tshelllistview.onmousewheel.html - OnMouseWheelDown shellctrls/tshelllistview.onmousewheeldown.html - OnMouseWheelUp shellctrls/tshelllistview.onmousewheelup.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - BorderStyle controls/twincontrol.borderstyle.html - BorderWidth controls/twincontrol.borderwidth.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - HideSelection comctrls/tcustomlistview.hideselection.html - LargeImages comctrls/tcustomlistview.largeimages.html - MultiSelect comctrls/tcustomlistview.multiselect.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly comctrls/tcustomlistview.readonly.html - RowSelect comctrls/tcustomlistview.rowselect.html - ScrollBars comctrls/tcustomlistview.scrollbars.html - ShowColumnHeaders comctrls/tcustomlistview.showcolumnheaders.html - ShowHint controls/tcontrol.showhint.html - SmallImages comctrls/tcustomlistview.smallimages.html - SortColumn comctrls/tcustomlistview.sortcolumn.html - SortType comctrls/tcustomlistview.sorttype.html - StateImages comctrls/tcustomlistview.stateimages.html - TabStop controls/twincontrol.tabstop.html - TabOrder controls/twincontrol.taborder.html - ToolTips comctrls/tcustomlistview.tooltips.html - Visible controls/tcontrol.visible.html - ViewStyle - OnChange comctrls/tcustomlistview.onchange.html - OnClick controls/tcontrol.onclick.html - OnColumnClick comctrls/tcustomlistview.oncolumnclick.html - OnCompare comctrls/tcustomlistview.oncompare.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnDeletion comctrls/tcustomlistview.ondeletion.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEndDrag controls/tcontrol.onenddrag.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnSelectItem comctrls/tcustomlistview.onselectitem.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ObjectTypes shellctrls/tcustomshelllistview.objecttypes.html - Root shellctrls/tcustomshelllistview.root.html - ShellTreeView shellctrls/tcustomshelllistview.shelltreeview.html - EInvalidPath shellctrls/einvalidpath.html - Register shellctrls/register.html - GraphUtil graphutil/index.html - NiceArrowAngle graphutil/nicearrowangle.html - TScrollDirection graphutil/tscrolldirection.html - TArrowType graphutil/tarrowtype.html - ColorToGray graphutil/colortogray.html - ColorToHLS graphutil/colortohls.html - RGBtoHLS graphutil/rgbtohls.html - HLStoColor graphutil/hlstocolor.html - HLStoRGB graphutil/hlstorgb.html - DrawVerticalGradient graphutil/drawverticalgradient.html - DrawGradientWindow graphutil/drawgradientwindow.html - DrawArrow graphutil/drawarrow.html - FloodFill graphutil/floodfill.html - ColorRGBToHLS graphutil/colorrgbtohls.html - ColorHLSToRGB graphutil/colorhlstorgb.html - ColorAdjustLuma graphutil/coloradjustluma.html - GetHighLightColor graphutil/gethighlightcolor.html - GetShadowColor graphutil/getshadowcolor.html - NormalizeRect graphutil/normalizerect.html - WaveTo graphutil/waveto.html - IniPropStorage inipropstorage/index.html - TIniFileClass inipropstorage/tinifileclass.html - TCustomIniPropStorage inipropstorage/tcustominipropstorage.html - IniFileClass inipropstorage/tcustominipropstorage.inifileclass.html - GetIniFileName inipropstorage/tcustominipropstorage.getinifilename.html - RootSection inipropstorage/tcustominipropstorage.rootsection.html - IniFile inipropstorage/tcustominipropstorage.inifile.html - StorageNeeded inipropstorage/tcustominipropstorage.storageneeded.html - FreeStorage inipropstorage/tcustominipropstorage.freestorage.html - DoReadString inipropstorage/tcustominipropstorage.doreadstring.html - DoWriteString inipropstorage/tcustominipropstorage.dowritestring.html - DoEraseSections inipropstorage/tcustominipropstorage.doerasesections.html - IniFileName inipropstorage/tcustominipropstorage.inifilename.html - IniSection inipropstorage/tcustominipropstorage.inisection.html - TIniPropStorage inipropstorage/tinipropstorage.html - StoredValues inipropstorage/tinipropstorage.storedvalues.html - IniFileName inipropstorage/tinipropstorage.inifilename.html - IniSection inipropstorage/tinipropstorage.inisection.html - Active inipropstorage/tinipropstorage.active.html - OnSavingProperties inipropstorage/tinipropstorage.onsavingproperties.html - OnSaveProperties inipropstorage/tinipropstorage.onsaveproperties.html - OnRestoringProperties inipropstorage/tinipropstorage.onrestoringproperties.html - OnRestoreProperties inipropstorage/tinipropstorage.onrestoreproperties.html - Register inipropstorage/register.html - LazHelpHTML lazhelphtml/index.html - TOnFindDefaultBrowser lazhelphtml/tonfinddefaultbrowser.html - THTMLHelpDatabase lazhelphtml/thtmlhelpdatabase.html - Create lazhelphtml/thtmlhelpdatabase.create.html - Destroy lazhelphtml/thtmlhelpdatabase.destroy.html - ShowURL lazhelphtml/thtmlhelpdatabase.showurl.html - ShowHelp lazhelphtml/thtmlhelpdatabase.showhelp.html - GetNodesForKeyword lazhelphtml/thtmlhelpdatabase.getnodesforkeyword.html - GetEffectiveBaseURL lazhelphtml/thtmlhelpdatabase.geteffectivebaseurl.html - Load lazhelphtml/thtmlhelpdatabase.load.html - Save lazhelphtml/thtmlhelpdatabase.save.html - DefaultBaseURL lazhelphtml/thtmlhelpdatabase.defaultbaseurl.html - BaseURL lazhelphtml/thtmlhelpdatabase.baseurl.html - AutoRegister lazhelphtml/thtmlhelpdatabase.autoregister.html - KeywordPrefix lazhelphtml/thtmlhelpdatabase.keywordprefix.html - THTMLBrowserHelpViewer lazhelphtml/thtmlbrowserhelpviewer.html - Create lazhelphtml/thtmlbrowserhelpviewer.create.html - ShowNode lazhelphtml/thtmlbrowserhelpviewer.shownode.html - FindDefaultBrowser lazhelphtml/thtmlbrowserhelpviewer.finddefaultbrowser.html - Assign lazhelphtml/thtmlbrowserhelpviewer.assign.html - Load lazhelphtml/thtmlbrowserhelpviewer.load.html - Save lazhelphtml/thtmlbrowserhelpviewer.save.html - GetLocalizedName lazhelphtml/thtmlbrowserhelpviewer.getlocalizedname.html - OnFindDefaultBrowser lazhelphtml/thtmlbrowserhelpviewer.onfinddefaultbrowser.html - BrowserPath lazhelphtml/thtmlbrowserhelpviewer.browserpath.html - BrowserParams lazhelphtml/thtmlbrowserhelpviewer.browserparams.html - AutoRegister lazhelphtml/thtmlbrowserhelpviewer.autoregister.html - Register lazhelphtml/register.html - LazLinkedList lazlinkedlist/index.html - TLinkListItem lazlinkedlist/tlinklistitem.html - Next lazlinkedlist/tlinklistitem.next.html - Prior lazlinkedlist/tlinklistitem.prior.html - ResetItem lazlinkedlist/tlinklistitem.resetitem.html - TLinkList lazlinkedlist/tlinklist.html - CreateItem lazlinkedlist/tlinklist.createitem.html - GetNewItem lazlinkedlist/tlinklist.getnewitem.html - AddAsLast lazlinkedlist/tlinklist.addaslast.html - First lazlinkedlist/tlinklist.first.html - Last lazlinkedlist/tlinklist.last.html - Count lazlinkedlist/tlinklist.count.html - Delete lazlinkedlist/tlinklist.delete.html - MoveToLast lazlinkedlist/tlinklist.movetolast.html - Clear lazlinkedlist/tlinklist.clear.html - ConsistencyCheck lazlinkedlist/tlinklist.consistencycheck.html - Create lazlinkedlist/tlinklist.create.html - Destroy lazlinkedlist/tlinklist.destroy.html - LCLMemManager lclmemmanager/index.html - PLCLMemManagerItem lclmemmanager/plclmemmanageritem.html - TLCLMemManagerItem lclmemmanager/tlclmemmanageritem.html - TLCLEnumItemsMethod lclmemmanager/tlclenumitemsmethod.html - TStreamSizeType lclmemmanager/tstreamsizetype.html - TLCLMemManager lclmemmanager/tlclmemmanager.html - FFirstFree lclmemmanager/tlclmemmanager.ffirstfree.html - FFreeCount lclmemmanager/tlclmemmanager.ffreecount.html - FCount lclmemmanager/tlclmemmanager.fcount.html - FMinFree lclmemmanager/tlclmemmanager.fminfree.html - FMaxFreeRatio lclmemmanager/tlclmemmanager.fmaxfreeratio.html - FAllocatedCount lclmemmanager/tlclmemmanager.fallocatedcount.html - FFreedCount lclmemmanager/tlclmemmanager.ffreedcount.html - DisposeItem lclmemmanager/tlclmemmanager.disposeitem.html - NewItem lclmemmanager/tlclmemmanager.newitem.html - FreeFirstItem lclmemmanager/tlclmemmanager.freefirstitem.html - MinimumFreeCount lclmemmanager/tlclmemmanager.minimumfreecount.html - MaximumFreeCountRatio lclmemmanager/tlclmemmanager.maximumfreecountratio.html - Count lclmemmanager/tlclmemmanager.count.html - FreeCount lclmemmanager/tlclmemmanager.freecount.html - AllocatedCount lclmemmanager/tlclmemmanager.allocatedcount.html - FreedCount lclmemmanager/tlclmemmanager.freedcount.html - Clear lclmemmanager/tlclmemmanager.clear.html - Create lclmemmanager/tlclmemmanager.create.html - Destroy lclmemmanager/tlclmemmanager.destroy.html - TLCLNonFreeMemManager lclmemmanager/tlclnonfreememmanager.html - ClearOnCreate lclmemmanager/tlclnonfreememmanager.clearoncreate.html - ItemSize lclmemmanager/tlclnonfreememmanager.itemsize.html - MaxItemsPerChunk lclmemmanager/tlclnonfreememmanager.maxitemsperchunk.html - Clear lclmemmanager/tlclnonfreememmanager.clear.html - Create lclmemmanager/tlclnonfreememmanager.create.html - Destroy lclmemmanager/tlclnonfreememmanager.destroy.html - NewItem lclmemmanager/tlclnonfreememmanager.newitem.html - EnumerateItems lclmemmanager/tlclnonfreememmanager.enumerateitems.html - TExtMemoryStream lclmemmanager/textmemorystream.html - Realloc lclmemmanager/textmemorystream.realloc.html - Capacity lclmemmanager/textmemorystream.capacity.html - LCLMessageGlue lclmessageglue/index.html - DeliverMessage lclmessageglue/delivermessage.html - SendSimpleMessage lclmessageglue/sendsimplemessage.html - LCLSendActivateMsg lclmessageglue/lclsendactivatemsg.html - LCLSendSetFocusMsg lclmessageglue/lclsendsetfocusmsg.html - LCLSendKillFocusMsg lclmessageglue/lclsendkillfocusmsg.html - LCLSendShowWindowMsg lclmessageglue/lclsendshowwindowmsg.html - LCLSendSizeMsg lclmessageglue/lclsendsizemsg.html - LCLSendMoveMsg lclmessageglue/lclsendmovemsg.html - LCLSendMouseMoveMsg lclmessageglue/lclsendmousemovemsg.html - LCLSendMouseDownMsg lclmessageglue/lclsendmousedownmsg.html - LCLSendMouseUpMsg lclmessageglue/lclsendmouseupmsg.html - LCLSendMouseWheelMsg lclmessageglue/lclsendmousewheelmsg.html - LCLSendCaptureChangedMsg lclmessageglue/lclsendcapturechangedmsg.html - LCLSendSelectionChangedMsg lclmessageglue/lclsendselectionchangedmsg.html - LCLSendDestroyMsg lclmessageglue/lclsenddestroymsg.html - LCLSendChangedMsg lclmessageglue/lclsendchangedmsg.html - LCLSendClickedMsg lclmessageglue/lclsendclickedmsg.html - LCLSendMouseEnterMsg lclmessageglue/lclsendmouseentermsg.html - LCLSendMouseLeaveMsg lclmessageglue/lclsendmouseleavemsg.html - LCLSendSetEditableMsg lclmessageglue/lclsendseteditablemsg.html - LCLSendMoveWordMsg lclmessageglue/lclsendmovewordmsg.html - LCLSendMovePageMsg lclmessageglue/lclsendmovepagemsg.html - LCLSendMoveToRowMsg lclmessageglue/lclsendmovetorowmsg.html - LCLSendMoveToColumnMsg lclmessageglue/lclsendmovetocolumnmsg.html - LCLSendKillCharMsg lclmessageglue/lclsendkillcharmsg.html - LCLSendKillWordMsg lclmessageglue/lclsendkillwordmsg.html - LCLSendKillLineMsg lclmessageglue/lclsendkilllinemsg.html - LCLSendCutToClipboardMsg lclmessageglue/lclsendcuttoclipboardmsg.html - LCLSendCopyToClipboardMsg lclmessageglue/lclsendcopytoclipboardmsg.html - LCLSendPasteFromClipboardMsg lclmessageglue/lclsendpastefromclipboardmsg.html - LCLSendConfigureEventMsg lclmessageglue/lclsendconfigureeventmsg.html - LCLSendPaintMsg lclmessageglue/lclsendpaintmsg.html - LCLSendEraseBackgroundMsg lclmessageglue/lclsenderasebackgroundmsg.html - LCLSendKeyDownEvent lclmessageglue/lclsendkeydownevent.html - LCLSendKeyUpEvent lclmessageglue/lclsendkeyupevent.html - LCLSendCharEvent lclmessageglue/lclsendcharevent.html - LCLSendUTF8KeyPress lclmessageglue/lclsendutf8keypress.html - LCLSendTimerMsg lclmessageglue/lclsendtimermsg.html - LCLSendExitMsg lclmessageglue/lclsendexitmsg.html - LCLSendCloseQueryMsg lclmessageglue/lclsendclosequerymsg.html - LCLSendDragStartMsg lclmessageglue/lclsenddragstartmsg.html - LCLSendMonthChangedMsg lclmessageglue/lclsendmonthchangedmsg.html - LCLSendYearChangedMsg lclmessageglue/lclsendyearchangedmsg.html - LCLSendDayChangedMsg lclmessageglue/lclsenddaychangedmsg.html - LCLSendMouseMultiClickMsg lclmessageglue/lclsendmousemulticlickmsg.html - LCLSendDrawListItemMsg lclmessageglue/lclsenddrawlistitemmsg.html - LCLSendDropDownMsg lclmessageglue/lclsenddropdownmsg.html - LCLSendCloseUpMsg lclmessageglue/lclsendcloseupmsg.html - LCLUnicodeData lclunicodedata/index.html - MaxUnicodeBlocks lclunicodedata/maxunicodeblocks.html - UnicodeBlocks lclunicodedata/unicodeblocks.html - TUnicodeBlock lclunicodedata/tunicodeblock.html - PairSplitter pairsplitter/index.html - TPairSplitterType pairsplitter/tpairsplittertype.html - TPairSplitterSide pairsplitter/tpairsplitterside.html - SetParent pairsplitter/tpairsplitterside.setparent.html - WMPaint pairsplitter/tpairsplitterside.wmpaint.html - Paint pairsplitter/tpairsplitterside.paint.html - Align pairsplitter/tpairsplitterside.align.html - Anchors pairsplitter/tpairsplitterside.anchors.html - Create pairsplitter/tpairsplitterside.create.html - Destroy pairsplitter/tpairsplitterside.destroy.html - Splitter pairsplitter/tpairsplitterside.splitter.html - Visible pairsplitter/tpairsplitterside.visible.html - Left pairsplitter/tpairsplitterside.left.html - Top pairsplitter/tpairsplitterside.top.html - Width pairsplitter/tpairsplitterside.width.html - Height pairsplitter/tpairsplitterside.height.html - ChildSizing pairsplitter/tpairsplitterside.childsizing.html - ClientWidth pairsplitter/tpairsplitterside.clientwidth.html - ClientHeight pairsplitter/tpairsplitterside.clientheight.html - Constraints pairsplitter/tpairsplitterside.constraints.html - Cursor pairsplitter/tpairsplitterside.cursor.html - Enabled pairsplitter/tpairsplitterside.enabled.html - OnMouseDown pairsplitter/tpairsplitterside.onmousedown.html - OnMouseEnter pairsplitter/tpairsplitterside.onmouseenter.html - OnMouseLeave pairsplitter/tpairsplitterside.onmouseleave.html - OnMouseMove pairsplitter/tpairsplitterside.onmousemove.html - OnMouseUp pairsplitter/tpairsplitterside.onmouseup.html - OnMouseWheel pairsplitter/tpairsplitterside.onmousewheel.html - OnMouseWheelDown pairsplitter/tpairsplitterside.onmousewheeldown.html - OnMouseWheelUp pairsplitter/tpairsplitterside.onmousewheelup.html - OnResize pairsplitter/tpairsplitterside.onresize.html - ShowHint pairsplitter/tpairsplitterside.showhint.html - ParentShowHint pairsplitter/tpairsplitterside.parentshowhint.html - PopupMenu pairsplitter/tpairsplitterside.popupmenu.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TCustomPairSplitter pairsplitter/tcustompairsplitter.html - GetCursor pairsplitter/tcustompairsplitter.getcursor.html - SetCursor pairsplitter/tcustompairsplitter.setcursor.html - GetControlClassDefaultSize pairsplitter/tcustompairsplitter.getcontrolclassdefaultsize.html - Create pairsplitter/tcustompairsplitter.create.html - Destroy pairsplitter/tcustompairsplitter.destroy.html - CreateWnd pairsplitter/tcustompairsplitter.createwnd.html - UpdatePosition pairsplitter/tcustompairsplitter.updateposition.html - CreateSides pairsplitter/tcustompairsplitter.createsides.html - Loaded pairsplitter/tcustompairsplitter.loaded.html - ChildClassAllowed pairsplitter/tcustompairsplitter.childclassallowed.html - Cursor pairsplitter/tcustompairsplitter.cursor.html - Sides pairsplitter/tcustompairsplitter.sides.html - SplitterType pairsplitter/tcustompairsplitter.splittertype.html - Position pairsplitter/tcustompairsplitter.position.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TPairSplitter pairsplitter/tpairsplitter.html - Align pairsplitter/tpairsplitter.align.html - Anchors pairsplitter/tpairsplitter.anchors.html - BorderSpacing pairsplitter/tpairsplitter.borderspacing.html - Constraints pairsplitter/tpairsplitter.constraints.html - Cursor pairsplitter/tpairsplitter.cursor.html - Enabled pairsplitter/tpairsplitter.enabled.html - OnMouseDown pairsplitter/tpairsplitter.onmousedown.html - OnMouseEnter pairsplitter/tpairsplitter.onmouseenter.html - OnMouseLeave pairsplitter/tpairsplitter.onmouseleave.html - OnMouseMove pairsplitter/tpairsplitter.onmousemove.html - OnMouseUp pairsplitter/tpairsplitter.onmouseup.html - OnMouseWheel pairsplitter/tpairsplitter.onmousewheel.html - OnMouseWheelDown pairsplitter/tpairsplitter.onmousewheeldown.html - OnMouseWheelUp pairsplitter/tpairsplitter.onmousewheelup.html - OnResize pairsplitter/tpairsplitter.onresize.html - OnChangeBounds pairsplitter/tpairsplitter.onchangebounds.html - ParentShowHint pairsplitter/tpairsplitter.parentshowhint.html - PopupMenu pairsplitter/tpairsplitter.popupmenu.html - Position pairsplitter/tpairsplitter.position.html - ShowHint pairsplitter/tpairsplitter.showhint.html - SplitterType pairsplitter/tpairsplitter.splittertype.html - Visible pairsplitter/tpairsplitter.visible.html - Register pairsplitter/register.html - PostScriptCanvas postscriptcanvas/index.html - TpsPoint postscriptcanvas/tpspoint.html - TpsBounds postscriptcanvas/tpsbounds.html - TPsCanvasState postscriptcanvas/tpscanvasstate.html - TPsCanvasStatus postscriptcanvas/tpscanvasstatus.html - TPostScriptPrinterCanvas postscriptcanvas/tpostscriptprintercanvas.html - CreateHandle postscriptcanvas/tpostscriptprintercanvas.createhandle.html - CreateBrush postscriptcanvas/tpostscriptprintercanvas.createbrush.html - CreateFont postscriptcanvas/tpostscriptprintercanvas.createfont.html - CreatePen postscriptcanvas/tpostscriptprintercanvas.createpen.html - CreateRegion postscriptcanvas/tpostscriptprintercanvas.createregion.html - DeselectHandles postscriptcanvas/tpostscriptprintercanvas.deselecthandles.html - PenChanging postscriptcanvas/tpostscriptprintercanvas.penchanging.html - FontChanging postscriptcanvas/tpostscriptprintercanvas.fontchanging.html - BrushChanging postscriptcanvas/tpostscriptprintercanvas.brushchanging.html - RegionChanging postscriptcanvas/tpostscriptprintercanvas.regionchanging.html - RequiredState postscriptcanvas/tpostscriptprintercanvas.requiredstate.html - DoEllipseAndFill postscriptcanvas/tpostscriptprintercanvas.doellipseandfill.html - RealizeAntialiasing postscriptcanvas/tpostscriptprintercanvas.realizeantialiasing.html - GetClipRect postscriptcanvas/tpostscriptprintercanvas.getcliprect.html - SetClipRect postscriptcanvas/tpostscriptprintercanvas.setcliprect.html - GetClipping postscriptcanvas/tpostscriptprintercanvas.getclipping.html - SetClipping postscriptcanvas/tpostscriptprintercanvas.setclipping.html - BeginDoc postscriptcanvas/tpostscriptprintercanvas.begindoc.html - EndDoc postscriptcanvas/tpostscriptprintercanvas.enddoc.html - NewPage postscriptcanvas/tpostscriptprintercanvas.newpage.html - DoMoveTo postscriptcanvas/tpostscriptprintercanvas.domoveto.html - DoLineTo postscriptcanvas/tpostscriptprintercanvas.dolineto.html - Create postscriptcanvas/tpostscriptprintercanvas.create.html - Destroy postscriptcanvas/tpostscriptprintercanvas.destroy.html - SaveToFile postscriptcanvas/tpostscriptprintercanvas.savetofile.html - Polyline postscriptcanvas/tpostscriptprintercanvas.polyline.html - PolyBezier postscriptcanvas/tpostscriptprintercanvas.polybezier.html - Rectangle postscriptcanvas/tpostscriptprintercanvas.rectangle.html - Frame postscriptcanvas/tpostscriptprintercanvas.frame.html - FrameRect postscriptcanvas/tpostscriptprintercanvas.framerect.html - FillRect postscriptcanvas/tpostscriptprintercanvas.fillrect.html - RoundRect postscriptcanvas/tpostscriptprintercanvas.roundrect.html - Polygon postscriptcanvas/tpostscriptprintercanvas.polygon.html - Ellipse postscriptcanvas/tpostscriptprintercanvas.ellipse.html - Arc postscriptcanvas/tpostscriptprintercanvas.arc.html - RadialPie postscriptcanvas/tpostscriptprintercanvas.radialpie.html - Chord postscriptcanvas/tpostscriptprintercanvas.chord.html - TextOut postscriptcanvas/tpostscriptprintercanvas.textout.html - TextExtent postscriptcanvas/tpostscriptprintercanvas.textextent.html - TextRect postscriptcanvas/tpostscriptprintercanvas.textrect.html - Draw postscriptcanvas/tpostscriptprintercanvas.draw.html - StretchDraw postscriptcanvas/tpostscriptprintercanvas.stretchdraw.html - GetTextMetrics postscriptcanvas/tpostscriptprintercanvas.gettextmetrics.html - FloodFill postscriptcanvas/tpostscriptprintercanvas.floodfill.html - CopyRect postscriptcanvas/tpostscriptprintercanvas.copyrect.html - Frame3d postscriptcanvas/tpostscriptprintercanvas.frame3d.html - Pie postscriptcanvas/tpostscriptprintercanvas.pie.html - SetPixel postscriptcanvas/tpostscriptprintercanvas.setpixel.html - TPostScriptCanvas postscriptcanvas/tpostscriptcanvas.html - Create postscriptcanvas/tpostscriptcanvas.create.html - BeginDoc postscriptcanvas/tpostscriptcanvas.begindoc.html - EndDoc postscriptcanvas/tpostscriptcanvas.enddoc.html - NewPage postscriptcanvas/tpostscriptcanvas.newpage.html - postscriptunicode postscriptunicode/index.html - GLYPHCOUNT postscriptunicode/glyphcount.html - GlyphsArr postscriptunicode/glyphsarr.html - TUnicodeBlock postscriptunicode/tunicodeblock.html - PGlyph postscriptunicode/pglyph.html - TGlyph postscriptunicode/tglyph.html - TPsUnicode postscriptunicode/tpsunicode.html - create postscriptunicode/tpsunicode.create.html - destroy postscriptunicode/tpsunicode.destroy.html - OutputString postscriptunicode/tpsunicode.outputstring.html - BlockFor postscriptunicode/tpsunicode.blockfor.html - ResetLastFont postscriptunicode/tpsunicode.resetlastfont.html - UnicodeToGlyph postscriptunicode/tpsunicode.unicodetoglyph.html - Font postscriptunicode/tpsunicode.font.html - FontSize postscriptunicode/tpsunicode.fontsize.html - FOntStyle postscriptunicode/tpsunicode.fontstyle.html - OutLst postscriptunicode/tpsunicode.outlst.html - PostScriptPrinter postscriptprinter/index.html - TPSPaintType postscriptprinter/tpspainttype.html - TPSTileType postscriptprinter/tpstiletype.html - PPSPattern postscriptprinter/ppspattern.html - TPSPattern postscriptprinter/tpspattern.html - Create postscriptprinter/tpspattern.create.html - Destroy postscriptprinter/tpspattern.destroy.html - Changed postscriptprinter/tpspattern.changed.html - BBox postscriptprinter/tpspattern.bbox.html - PaintType postscriptprinter/tpspattern.painttype.html - TilingType postscriptprinter/tpspattern.tilingtype.html - XStep postscriptprinter/tpspattern.xstep.html - YStep postscriptprinter/tpspattern.ystep.html - Name postscriptprinter/tpspattern.name.html - Canvas postscriptprinter/tpspattern.canvas.html - GetPS postscriptprinter/tpspattern.getps.html - OldName postscriptprinter/tpspattern.oldname.html - OnChange postscriptprinter/tpspattern.onchange.html - TPSObject postscriptprinter/tpsobject.html - Changed postscriptprinter/tpsobject.changed.html - Lock postscriptprinter/tpsobject.lock.html - UnLock postscriptprinter/tpsobject.unlock.html - OnChange postscriptprinter/tpsobject.onchange.html - TPSPen postscriptprinter/tpspen.html - SetColor postscriptprinter/tpspen.setcolor.html - Setwidth postscriptprinter/tpspen.setwidth.html - Create postscriptprinter/tpspen.create.html - Destroy postscriptprinter/tpspen.destroy.html - Assign postscriptprinter/tpspen.assign.html - Color postscriptprinter/tpspen.color.html - Pattern postscriptprinter/tpspen.pattern.html - Width postscriptprinter/tpspen.width.html - AsString postscriptprinter/tpspen.asstring.html - TPostScriptCanvas postscriptprinter/tpostscriptcanvas.html - MPostScript postscriptprinter/tpostscriptcanvas.mpostscript.html - Create postscriptprinter/tpostscriptcanvas.create.html - Destroy postscriptprinter/tpostscriptcanvas.destroy.html - Clear postscriptprinter/tpostscriptcanvas.clear.html - PostScript postscriptprinter/tpostscriptcanvas.postscript.html - FontFace postscriptprinter/tpostscriptcanvas.fontface.html - FontSize postscriptprinter/tpostscriptcanvas.fontsize.html - LineSpacing postscriptprinter/tpostscriptcanvas.linespacing.html - MoveTo postscriptprinter/tpostscriptcanvas.moveto.html - LineTo postscriptprinter/tpostscriptcanvas.lineto.html - Line postscriptprinter/tpostscriptcanvas.line.html - Rectangle postscriptprinter/tpostscriptcanvas.rectangle.html - Polyline postscriptprinter/tpostscriptcanvas.polyline.html - Ellipse postscriptprinter/tpostscriptcanvas.ellipse.html - RadialPie postscriptprinter/tpostscriptcanvas.radialpie.html - Writeln postscriptprinter/tpostscriptcanvas.writeln.html - TextOut postscriptprinter/tpostscriptcanvas.textout.html - Height postscriptprinter/tpostscriptcanvas.height.html - Color postscriptprinter/tpostscriptcanvas.color.html - Pen postscriptprinter/tpostscriptcanvas.pen.html - Brush postscriptprinter/tpostscriptcanvas.brush.html - TPostScript postscriptprinter/tpostscript.html - Create postscriptprinter/tpostscript.create.html - Destroy postscriptprinter/tpostscript.destroy.html - AddPattern postscriptprinter/tpostscript.addpattern.html - FindPattern postscriptprinter/tpostscript.findpattern.html - DelPattern postscriptprinter/tpostscript.delpattern.html - NewPattern postscriptprinter/tpostscript.newpattern.html - Canvas postscriptprinter/tpostscript.canvas.html - Height postscriptprinter/tpostscript.height.html - Width postscriptprinter/tpostscript.width.html - Document postscriptprinter/tpostscript.document.html - PageNumber postscriptprinter/tpostscript.pagenumber.html - Title postscriptprinter/tpostscript.title.html - LineSpacing postscriptprinter/tpostscript.linespacing.html - BeginDoc postscriptprinter/tpostscript.begindoc.html - NewPage postscriptprinter/tpostscript.newpage.html - EndDoc postscriptprinter/tpostscript.enddoc.html - RubberBand rubberband/index.html - TRubberBandShape rubberband/trubberbandshape.html - TCustomRubberBand rubberband/tcustomrubberband.html - Shape rubberband/tcustomrubberband.shape.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - TRubberBand rubberband/trubberband.html - Spin spin/index.html - TCustomFloatSpinEdit spin/tcustomfloatspinedit.html - RealGetText spin/tcustomfloatspinedit.realgettext.html - TextChanged spin/tcustomfloatspinedit.textchanged.html - SetDecimals spin/tcustomfloatspinedit.setdecimals.html - SetValue spin/tcustomfloatspinedit.setvalue.html - SetMaxValue spin/tcustomfloatspinedit.setmaxvalue.html - SetMinValue spin/tcustomfloatspinedit.setminvalue.html - SetValueEmpty spin/tcustomfloatspinedit.setvalueempty.html - SetIncrement spin/tcustomfloatspinedit.setincrement.html - InitializeWnd spin/tcustomfloatspinedit.initializewnd.html - FinalizeWnd spin/tcustomfloatspinedit.finalizewnd.html - Loaded spin/tcustomfloatspinedit.loaded.html - KeyPress spin/tcustomfloatspinedit.keypress.html - GetControlClassDefaultSize stdctrls/tcustomedit.getcontrolclassdefaultsize.html - Create spin/tcustomfloatspinedit.create.html - GetLimitedValue spin/tcustomfloatspinedit.getlimitedvalue.html - ValueToStr spin/tcustomfloatspinedit.valuetostr.html - StrToValue spin/tcustomfloatspinedit.strtovalue.html - DecimalPlaces spin/tcustomfloatspinedit.decimalplaces.html - Increment spin/tcustomfloatspinedit.increment.html - MinValue spin/tcustomfloatspinedit.minvalue.html - MaxValue spin/tcustomfloatspinedit.maxvalue.html - Value spin/tcustomfloatspinedit.value.html - ValueEmpty spin/tcustomfloatspinedit.valueempty.html - WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html - TFloatSpinEdit spin/tfloatspinedit.html - AutoSelected spin/tfloatspinedit.autoselected.html - Alignment spin/tfloatspinedit.alignment.html - AutoSelect spin/tfloatspinedit.autoselect.html - Color spin/tfloatspinedit.color.html - DecimalPlaces spin/tfloatspinedit.decimalplaces.html - Font spin/tfloatspinedit.font.html - OnChange spin/tfloatspinedit.onchange.html - OnChangeBounds spin/tfloatspinedit.onchangebounds.html - OnClick spin/tfloatspinedit.onclick.html - OnEditingDone spin/tfloatspinedit.oneditingdone.html - OnMouseEnter spin/tfloatspinedit.onmouseenter.html - OnMouseLeave spin/tfloatspinedit.onmouseleave.html - OnMouseWheel spin/tfloatspinedit.onmousewheel.html - OnMouseWheelDown spin/tfloatspinedit.onmousewheeldown.html - OnMouseWheelUp spin/tfloatspinedit.onmousewheelup.html - ParentFont spin/tfloatspinedit.parentfont.html - ReadOnly spin/tfloatspinedit.readonly.html - TabStop spin/tfloatspinedit.tabstop.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - Enabled controls/tcontrol.enabled.html - Increment spin/tcustomfloatspinedit.increment.html - MaxValue spin/tcustomfloatspinedit.maxvalue.html - MinValue spin/tcustomfloatspinedit.minvalue.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - Value spin/tcustomfloatspinedit.value.html - Visible controls/tcontrol.visible.html - TCustomSpinEdit spin/tcustomspinedit.html - SetMaxValue spin/tcustomspinedit.setmaxvalue.html - SetMinValue spin/tcustomspinedit.setminvalue.html - SetIncrement spin/tcustomspinedit.setincrement.html - SetValue spin/tcustomspinedit.setvalue.html - Create spin/tcustomspinedit.create.html - Value spin/tcustomspinedit.value.html - MinValue spin/tcustomspinedit.minvalue.html - MaxValue spin/tcustomspinedit.maxvalue.html - Increment spin/tcustomspinedit.increment.html - TSpinEdit spin/tspinedit.html - Alignment spin/tspinedit.alignment.html - Color spin/tspinedit.color.html - Font spin/tspinedit.font.html - OnChange spin/tspinedit.onchange.html - OnMouseEnter spin/tspinedit.onmouseenter.html - OnMouseLeave spin/tspinedit.onmouseleave.html - OnMouseWheel spin/tspinedit.onmousewheel.html - OnMouseWheelDown spin/tspinedit.onmousewheeldown.html - OnMouseWheelUp spin/tspinedit.onmousewheelup.html - ParentFont spin/tspinedit.parentfont.html - AutoSelected stdctrls/tcustomedit.autoselected.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSelect stdctrls/tcustomedit.autoselect.html - AutoSize controls/tcontrol.autosize.html - BorderSpacing controls/tcontrol.borderspacing.html - Constraints controls/tcontrol.constraints.html - Enabled controls/tcontrol.enabled.html - Increment spin/tcustomspinedit.increment.html - MaxValue spin/tcustomspinedit.maxvalue.html - MinValue spin/tcustomspinedit.minvalue.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnEditingDone - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ShowHint controls/tcontrol.showhint.html - TabStop controls/twincontrol.tabstop.html - TabOrder controls/twincontrol.taborder.html - Value spin/tcustomspinedit.value.html - Visible controls/tcontrol.visible.html - Register spin/register.html - UTrace utrace/index.html - TAssertErrorAddrType utrace/tasserterroraddrtype.html - TAssertErrorProc utrace/tasserterrorproc.html - TraceFileName utrace/tracefilename.html - OldProcPointer utrace/oldprocpointer.html - XMLPropStorage xmlpropstorage/index.html - TPropStorageXMLConfig xmlpropstorage/tpropstoragexmlconfig.html - DeleteSubNodes xmlpropstorage/tpropstoragexmlconfig.deletesubnodes.html - LoadFromStream xmlpropstorage/tpropstoragexmlconfig.loadfromstream.html - SaveToStream xmlpropstorage/tpropstoragexmlconfig.savetostream.html - XMLDoc xmlpropstorage/tpropstoragexmlconfig.xmldoc.html - TCustomXMLPropStorage xmlpropstorage/tcustomxmlpropstorage.html - GetXMLFileName xmlpropstorage/tcustomxmlpropstorage.getxmlfilename.html - RootSection xmlpropstorage/tcustomxmlpropstorage.rootsection.html - FixPath xmlpropstorage/tcustomxmlpropstorage.fixpath.html - XMLConfig xmlpropstorage/tcustomxmlpropstorage.xmlconfig.html - StorageNeeded xmlpropstorage/tcustomxmlpropstorage.storageneeded.html - FreeStorage xmlpropstorage/tcustomxmlpropstorage.freestorage.html - DoReadString xmlpropstorage/tcustomxmlpropstorage.doreadstring.html - DoWriteString xmlpropstorage/tcustomxmlpropstorage.dowritestring.html - DoEraseSections xmlpropstorage/tcustomxmlpropstorage.doerasesections.html - FileName xmlpropstorage/tcustomxmlpropstorage.filename.html - RootNodePath xmlpropstorage/tcustomxmlpropstorage.rootnodepath.html - TXMLPropStorage xmlpropstorage/txmlpropstorage.html - StoredValues xmlpropstorage/txmlpropstorage.storedvalues.html - FileName xmlpropstorage/txmlpropstorage.filename.html - RootNodePath xmlpropstorage/txmlpropstorage.rootnodepath.html - Active xmlpropstorage/txmlpropstorage.active.html - OnSavingProperties xmlpropstorage/txmlpropstorage.onsavingproperties.html - OnSaveProperties xmlpropstorage/txmlpropstorage.onsaveproperties.html - OnRestoringProperties xmlpropstorage/txmlpropstorage.onrestoringproperties.html - OnRestoreProperties xmlpropstorage/txmlpropstorage.onrestoreproperties.html - TXMLConfigStorage xmlpropstorage/txmlconfigstorage.html - GetFullPathValue xmlpropstorage/txmlconfigstorage.getfullpathvalue.html - SetFullPathValue xmlpropstorage/txmlconfigstorage.setfullpathvalue.html - SetDeleteFullPathValue xmlpropstorage/txmlconfigstorage.setdeletefullpathvalue.html - DeleteFullPath xmlpropstorage/txmlconfigstorage.deletefullpath.html - DeleteFullPathValue xmlpropstorage/txmlconfigstorage.deletefullpathvalue.html - Clear xmlpropstorage/txmlconfigstorage.clear.html - Create xmlpropstorage/txmlconfigstorage.create.html - Destroy xmlpropstorage/txmlconfigstorage.destroy.html - XMLConfig xmlpropstorage/txmlconfigstorage.xmlconfig.html - FreeXMLConfig xmlpropstorage/txmlconfigstorage.freexmlconfig.html - WriteToDisk xmlpropstorage/txmlconfigstorage.writetodisk.html - GetFilename xmlpropstorage/txmlconfigstorage.getfilename.html - SaveToStream xmlpropstorage/txmlconfigstorage.savetostream.html - Register xmlpropstorage/register.html - AsyncProcess asyncprocess/index.html - TAsyncProcess asyncprocess/tasyncprocess.html - GetNumBytesAvailable asyncprocess/tasyncprocess.getnumbytesavailable.html - HandlePipeInput asyncprocess/tasyncprocess.handlepipeinput.html - HandleProcessTermination asyncprocess/tasyncprocess.handleprocesstermination.html - UnhookPipeHandle asyncprocess/tasyncprocess.unhookpipehandle.html - UnhookProcessHandle asyncprocess/tasyncprocess.unhookprocesshandle.html - Execute asyncprocess/tasyncprocess.execute.html - Destroy asyncprocess/tasyncprocess.destroy.html - NumBytesAvailable asyncprocess/tasyncprocess.numbytesavailable.html - OnReadData asyncprocess/tasyncprocess.onreaddata.html - OnTerminate asyncprocess/tasyncprocess.onterminate.html - Register asyncprocess/register.html - RegisterLCL registerlcl/index.html - Register registerlcl/register.html - RegisterLCLBase registerlcl/registerlclbase.html - Arrow arrow/index.html - TArrowType arrow/tarrowtype.html - TShadowType arrow/tshadowtype.html - TTriPts arrow/ttripts.html - TTrianglePoints arrow/ttrianglepoints.html - TArrow arrow/tarrow.html - ArrowColor arrow/tarrow.arrowcolor.html - ArrowType arrow/tarrow.arrowtype.html - Color arrow/tarrow.color.html - Constraints arrow/tarrow.constraints.html - Hint arrow/tarrow.hint.html - OnDragDrop arrow/tarrow.ondragdrop.html - OnDragOver arrow/tarrow.ondragover.html - OnEndDrag arrow/tarrow.onenddrag.html - OnMouseEnter arrow/tarrow.onmouseenter.html - OnMouseLeave arrow/tarrow.onmouseleave.html - OnMouseWheel arrow/tarrow.onmousewheel.html - OnMouseWheelDown arrow/tarrow.onmousewheeldown.html - OnMouseWheelUp arrow/tarrow.onmousewheelup.html - OnPaint arrow/tarrow.onpaint.html - OnStartDrag arrow/tarrow.onstartdrag.html - ParentColor arrow/tarrow.parentcolor.html - ParentShowHint arrow/tarrow.parentshowhint.html - ShadowType arrow/tarrow.shadowtype.html - ShowHint arrow/tarrow.showhint.html - GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html - Paint controls/tcustomcontrol.paint.html - Create ms-its:rtl.chm::/classes/tcomponent.create.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnContextPopup controls/tcontrol.oncontextpopup.html - OnDblClick controls/tcontrol.ondblclick.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - PopupMenu controls/tcontrol.popupmenu.html - Visible controls/tcontrol.visible.html - Register arrow/register.html - IndustrialBase industrialbase/index.html - TIndustrialBase industrialbase/tindustrialbase.html - GraphicChanged industrialbase/tindustrialbase.graphicchanged.html - Create industrialbase/tindustrialbase.create.html - AntiAliasingMode industrialbase/tindustrialbase.antialiasingmode.html - DBExtCtrls dbextctrls/index.html - TDBDateEdit dbextctrls/tdbdateedit.html - Notification dbextctrls/tdbdateedit.notification.html - EditCanModify dbextctrls/tdbdateedit.editcanmodify.html - EditEnter dbextctrls/tdbdateedit.editenter.html - EditKeyDown dbextctrls/tdbdateedit.editkeydown.html - EditKeyPress dbextctrls/tdbdateedit.editkeypress.html - ButtonClick dbextctrls/tdbdateedit.buttonclick.html - EditChange dbextctrls/tdbdateedit.editchange.html - EditExit dbextctrls/tdbdateedit.editexit.html - Reset dbextctrls/tdbdateedit.reset.html - Create dbextctrls/tdbdateedit.create.html - Destroy dbextctrls/tdbdateedit.destroy.html - ExecuteAction dbextctrls/tdbdateedit.executeaction.html - UpdateAction dbextctrls/tdbdateedit.updateaction.html - Field dbextctrls/tdbdateedit.field.html - DataField dbextctrls/tdbdateedit.datafield.html - DataSource dbextctrls/tdbdateedit.datasource.html - Register dbextctrls/register.html - EditBtn editbtn/index.html - NullDate editbtn/nulldate.html - ResBtnListFilter editbtn/resbtnlistfilter.html - ResBtnFileOpen editbtn/resbtnfileopen.html - ResBtnSelDir editbtn/resbtnseldir.html - ResBtnCalendar editbtn/resbtncalendar.html - ResBtnCalculator editbtn/resbtncalculator.html - TFilterItemEvent editbtn/tfilteritemevent.html - TCheckItemEvent editbtn/tcheckitemevent.html - TAcceptFileNameEvent editbtn/tacceptfilenameevent.html - TDialogKind editbtn/tdialogkind.html - TAcceptDateEvent editbtn/tacceptdateevent.html - TCustomDateEvent editbtn/tcustomdateevent.html - TDateOrder editbtn/tdateorder.html - TAcceptValueEvent editbtn/tacceptvalueevent.html - TEbEdit editbtn/tebedit.html - DoEnter - DoExit - TCustomEditButton editbtn/tcustomeditbutton.html - GetControlClassDefaultSize editbtn/tcustomeditbutton.getcontrolclassdefaultsize.html - CalcButtonVisible editbtn/tcustomeditbutton.calcbuttonvisible.html - GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html - GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html - GetEditPopupMenu editbtn/tcustomeditbutton.geteditpopupmenu.html - CalculatePreferredSize editbtn/tcustomeditbutton.calculatepreferredsize.html - CheckButtonVisible editbtn/tcustomeditbutton.checkbuttonvisible.html - ButtonClick editbtn/tcustomeditbutton.buttonclick.html - DoEnter editbtn/tcustomeditbutton.doenter.html - EditChange editbtn/tcustomeditbutton.editchange.html - EditClick editbtn/tcustomeditbutton.editclick.html - EditDblClick editbtn/tcustomeditbutton.editdblclick.html - EditDragDrop editbtn/tcustomeditbutton.editdragdrop.html - EditDragOver editbtn/tcustomeditbutton.editdragover.html - EditEditingDone editbtn/tcustomeditbutton.editeditingdone.html - EditEndDrag editbtn/tcustomeditbutton.editenddrag.html - EditEnter editbtn/tcustomeditbutton.editenter.html - EditExit editbtn/tcustomeditbutton.editexit.html - EditKeyDown editbtn/tcustomeditbutton.editkeydown.html - EditKeyPress editbtn/tcustomeditbutton.editkeypress.html - EditKeyUp editbtn/tcustomeditbutton.editkeyup.html - EditMouseDown editbtn/tcustomeditbutton.editmousedown.html - EditMouseUp editbtn/tcustomeditbutton.editmouseup.html - EditMouseEnter editbtn/tcustomeditbutton.editmouseenter.html - EditMouseLeave editbtn/tcustomeditbutton.editmouseleave.html - EditMouseMove editbtn/tcustomeditbutton.editmousemove.html - EditMouseWheel editbtn/tcustomeditbutton.editmousewheel.html - EditMouseWheelUp editbtn/tcustomeditbutton.editmousewheelup.html - EditMouseWheelDown editbtn/tcustomeditbutton.editmousewheeldown.html - EditUtf8KeyPress editbtn/tcustomeditbutton.editutf8keypress.html - EditStartDrag editbtn/tcustomeditbutton.editstartdrag.html - CheckCursor editbtn/tcustomeditbutton.checkcursor.html - CMParentColorChanged editbtn/tcustomeditbutton.cmparentcolorchanged.html - EditCanModify editbtn/tcustomeditbutton.editcanmodify.html - GetSel editbtn/tcustomeditbutton.getsel.html - SetSel editbtn/tcustomeditbutton.setsel.html - Reset editbtn/tcustomeditbutton.reset.html - SetAutoSize editbtn/tcustomeditbutton.setautosize.html - SetColor - SetCursor editbtn/tcustomeditbutton.setcursor.html - AutoSelect editbtn/tcustomeditbutton.autoselect.html - AutoSelected editbtn/tcustomeditbutton.autoselected.html - Button editbtn/tcustomeditbutton.button.html - ButtonCaption editbtn/tcustomeditbutton.buttoncaption.html - ButtonCursor editbtn/tcustomeditbutton.buttoncursor.html - ButtonHint editbtn/tcustomeditbutton.buttonhint.html - ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html - ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html - Color editbtn/tcustomeditbutton.color.html - DirectInput editbtn/tcustomeditbutton.directinput.html - Edit editbtn/tcustomeditbutton.edit.html - EditMask editbtn/tcustomeditbutton.editmask.html - EditText editbtn/tcustomeditbutton.edittext.html - Flat editbtn/tcustomeditbutton.flat.html - FocusOnButtonClick editbtn/tcustomeditbutton.focusonbuttonclick.html - Glyph editbtn/tcustomeditbutton.glyph.html - IsMasked editbtn/tcustomeditbutton.ismasked.html - Layout editbtn/tcustomeditbutton.layout.html - NumGlyphs editbtn/tcustomeditbutton.numglyphs.html - Spacing editbtn/tcustomeditbutton.spacing.html - OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html - Create editbtn/tcustomeditbutton.create.html - SetFocus editbtn/tcustomeditbutton.setfocus.html - Focused editbtn/tcustomeditbutton.focused.html - Clear editbtn/tcustomeditbutton.clear.html - ClearSelection editbtn/tcustomeditbutton.clearselection.html - CopyToClipboard editbtn/tcustomeditbutton.copytoclipboard.html - CutToClipboard editbtn/tcustomeditbutton.cuttoclipboard.html - PasteFromClipboard editbtn/tcustomeditbutton.pastefromclipboard.html - SelectAll editbtn/tcustomeditbutton.selectall.html - Undo editbtn/tcustomeditbutton.undo.html - ValidateEdit editbtn/tcustomeditbutton.validateedit.html - Autosize editbtn/tcustomeditbutton.autosize.html - Alignment editbtn/tcustomeditbutton.alignment.html - CanUndo editbtn/tcustomeditbutton.canundo.html - CaretPos editbtn/tcustomeditbutton.caretpos.html - CharCase editbtn/tcustomeditbutton.charcase.html - ParentColor editbtn/tcustomeditbutton.parentcolor.html - EchoMode editbtn/tcustomeditbutton.echomode.html - HideSelection editbtn/tcustomeditbutton.hideselection.html - MaxLength editbtn/tcustomeditbutton.maxlength.html - Modified editbtn/tcustomeditbutton.modified.html - NumbersOnly editbtn/tcustomeditbutton.numbersonly.html - PasswordChar editbtn/tcustomeditbutton.passwordchar.html - PopupMenu editbtn/tcustomeditbutton.popupmenu.html - ReadOnly editbtn/tcustomeditbutton.readonly.html - SelLength editbtn/tcustomeditbutton.sellength.html - SelStart editbtn/tcustomeditbutton.selstart.html - SelText editbtn/tcustomeditbutton.seltext.html - TabStop editbtn/tcustomeditbutton.tabstop.html - Text editbtn/tcustomeditbutton.text.html - OnChange editbtn/tcustomeditbutton.onchange.html - OnClick editbtn/tcustomeditbutton.onclick.html - OnDblClick editbtn/tcustomeditbutton.ondblclick.html - OnDragDrop editbtn/tcustomeditbutton.ondragdrop.html - OnDragOver editbtn/tcustomeditbutton.ondragover.html - OnEditingDone editbtn/tcustomeditbutton.oneditingdone.html - OnEndDrag editbtn/tcustomeditbutton.onenddrag.html - OnEnter editbtn/tcustomeditbutton.onenter.html - OnExit editbtn/tcustomeditbutton.onexit.html - OnMouseDown editbtn/tcustomeditbutton.onmousedown.html - OnKeyPress editbtn/tcustomeditbutton.onkeypress.html - OnKeyDown editbtn/tcustomeditbutton.onkeydown.html - OnKeyUp editbtn/tcustomeditbutton.onkeyup.html - OnMouseEnter editbtn/tcustomeditbutton.onmouseenter.html - OnMouseLeave editbtn/tcustomeditbutton.onmouseleave.html - OnMouseMove editbtn/tcustomeditbutton.onmousemove.html - OnMouseWheel editbtn/tcustomeditbutton.onmousewheel.html - OnMouseWheelUp editbtn/tcustomeditbutton.onmousewheelup.html - OnMouseWheelDown editbtn/tcustomeditbutton.onmousewheeldown.html - OnMouseUp editbtn/tcustomeditbutton.onmouseup.html - OnStartDrag editbtn/tcustomeditbutton.onstartdrag.html - OnUtf8KeyPress editbtn/tcustomeditbutton.onutf8keypress.html - Loaded - Destroy controls/twincontrol.destroy.html - TEditButton editbtn/teditbutton.html - AutoSelected editbtn/teditbutton.autoselected.html - NumbersOnly editbtn/teditbutton.numbersonly.html - Action editbtn/teditbutton.action.html - Alignment editbtn/teditbutton.alignment.html - BiDiMode editbtn/teditbutton.bidimode.html - BorderStyle editbtn/teditbutton.borderstyle.html - ButtonCaption editbtn/teditbutton.buttoncaption.html - ButtonCursor editbtn/teditbutton.buttoncursor.html - Constraints editbtn/teditbutton.constraints.html - Cursor editbtn/teditbutton.cursor.html - FocusOnButtonClick editbtn/teditbutton.focusonbuttonclick.html - Hint editbtn/teditbutton.hint.html - Layout editbtn/teditbutton.layout.html - OnContextPopup editbtn/teditbutton.oncontextpopup.html - OnMouseEnter editbtn/teditbutton.onmouseenter.html - OnMouseLeave editbtn/teditbutton.onmouseleave.html - OnMouseWheel editbtn/teditbutton.onmousewheel.html - OnMouseWheelDown editbtn/teditbutton.onmousewheeldown.html - OnMouseWheelUp editbtn/teditbutton.onmousewheelup.html - ParentBiDiMode editbtn/teditbutton.parentbidimode.html - Spacing editbtn/teditbutton.spacing.html - Button editbtn/tcustomeditbutton.button.html - AutoSelect stdctrls/tcustomedit.autoselect.html - AutoSize controls/tcontrol.autosize.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - ButtonHint editbtn/tcustomeditbutton.buttonhint.html - ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html - ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html - CharCase stdctrls/tcustomedit.charcase.html - Color controls/tcontrol.color.html - DirectInput editbtn/tcustomeditbutton.directinput.html - EchoMode stdctrls/tcustomedit.echomode.html - Enabled controls/tcontrol.enabled.html - Flat editbtn/tcustomeditbutton.flat.html - Font controls/tcontrol.font.html - Glyph editbtn/tcustomeditbutton.glyph.html - MaxLength stdctrls/tcustomedit.maxlength.html - NumGlyphs editbtn/tcustomeditbutton.numglyphs.html - OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - PasswordChar stdctrls/tcustomedit.passwordchar.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Text stdctrls/tcustomedit.text.html - Visible controls/tcontrol.visible.html - TCustomControlFilterEdit editbtn/tcustomcontrolfilteredit.html - fNeedUpdate editbtn/tcustomcontrolfilteredit.fneedupdate.html - fIsFirstUpdate editbtn/tcustomcontrolfilteredit.fisfirstupdate.html - fSelectedPart editbtn/tcustomcontrolfilteredit.fselectedpart.html - fOnFilterItem editbtn/tcustomcontrolfilteredit.fonfilteritem.html - fOnCheckItem editbtn/tcustomcontrolfilteredit.foncheckitem.html - EditKeyDown editbtn/tcustomcontrolfilteredit.editkeydown.html - EditChange editbtn/tcustomcontrolfilteredit.editchange.html - EditEnter editbtn/tcustomcontrolfilteredit.editenter.html - EditExit editbtn/tcustomcontrolfilteredit.editexit.html - ButtonClick editbtn/tcustomcontrolfilteredit.buttonclick.html - SortAndFilter editbtn/tcustomcontrolfilteredit.sortandfilter.html - ApplyFilter editbtn/tcustomcontrolfilteredit.applyfilter.html - ApplyFilterCore editbtn/tcustomcontrolfilteredit.applyfiltercore.html - MoveNext editbtn/tcustomcontrolfilteredit.movenext.html - MovePrev editbtn/tcustomcontrolfilteredit.moveprev.html - ReturnKeyHandled editbtn/tcustomcontrolfilteredit.returnkeyhandled.html - GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html - Create editbtn/tcustomeditbutton.create.html - Destroy - InvalidateFilter editbtn/tcustomcontrolfilteredit.invalidatefilter.html - ResetFilter editbtn/tcustomcontrolfilteredit.resetfilter.html - ForceFilter editbtn/tcustomcontrolfilteredit.forcefilter.html - StoreSelection editbtn/tcustomcontrolfilteredit.storeselection.html - RestoreSelection editbtn/tcustomcontrolfilteredit.restoreselection.html - Filter editbtn/tcustomcontrolfilteredit.filter.html - IdleConnected editbtn/tcustomcontrolfilteredit.idleconnected.html - SortData editbtn/tcustomcontrolfilteredit.sortdata.html - SelectedPart editbtn/tcustomcontrolfilteredit.selectedpart.html - OnAfterFilter editbtn/tcustomcontrolfilteredit.onafterfilter.html - OnFilterItem editbtn/tcustomcontrolfilteredit.onfilteritem.html - OnCheckItem editbtn/tcustomcontrolfilteredit.oncheckitem.html - UseFormActivate editbtn/tcustomcontrolfilteredit.useformactivate.html - ButtonCaption editbtn/tcustomcontrolfilteredit.buttoncaption.html - ButtonCursor editbtn/tcustomcontrolfilteredit.buttoncursor.html - ButtonHint editbtn/tcustomeditbutton.buttonhint.html - ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html - ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html - DirectInput editbtn/tcustomeditbutton.directinput.html - NumGlyphs editbtn/tcustomeditbutton.numglyphs.html - Flat editbtn/tcustomeditbutton.flat.html - FocusOnButtonClick editbtn/tcustomcontrolfilteredit.focusonbuttonclick.html - Align editbtn/tcustomcontrolfilteredit.align.html - Anchors editbtn/tcustomcontrolfilteredit.anchors.html - BidiMode editbtn/tcustomcontrolfilteredit.bidimode.html - BorderSpacing editbtn/tcustomcontrolfilteredit.borderspacing.html - BorderStyle editbtn/tcustomcontrolfilteredit.borderstyle.html - AutoSize editbtn/tcustomcontrolfilteredit.autosize.html - AutoSelect editbtn/tcustomcontrolfilteredit.autoselect.html - Color editbtn/tcustomcontrolfilteredit.color.html - DragCursor editbtn/tcustomcontrolfilteredit.dragcursor.html - DragMode editbtn/tcustomcontrolfilteredit.dragmode.html - Enabled editbtn/tcustomcontrolfilteredit.enabled.html - Font editbtn/tcustomcontrolfilteredit.font.html - Layout editbtn/tcustomcontrolfilteredit.layout.html - MaxLength editbtn/tcustomcontrolfilteredit.maxlength.html - ParentBidiMode editbtn/tcustomcontrolfilteredit.parentbidimode.html - ParentColor editbtn/tcustomcontrolfilteredit.parentcolor.html - ParentFont editbtn/tcustomcontrolfilteredit.parentfont.html - ParentShowHint editbtn/tcustomcontrolfilteredit.parentshowhint.html - PopupMenu editbtn/tcustomcontrolfilteredit.popupmenu.html - ReadOnly editbtn/tcustomcontrolfilteredit.readonly.html - ShowHint editbtn/tcustomcontrolfilteredit.showhint.html - Spacing editbtn/tcustomcontrolfilteredit.spacing.html - TabOrder editbtn/tcustomcontrolfilteredit.taborder.html - TabStop editbtn/tcustomcontrolfilteredit.tabstop.html - Visible editbtn/tcustomcontrolfilteredit.visible.html - OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html - OnChange editbtn/tcustomcontrolfilteredit.onchange.html - OnClick editbtn/tcustomcontrolfilteredit.onclick.html - OnDblClick editbtn/tcustomcontrolfilteredit.ondblclick.html - OnDragDrop editbtn/tcustomcontrolfilteredit.ondragdrop.html - OnDragOver editbtn/tcustomcontrolfilteredit.ondragover.html - OnEditingDone editbtn/tcustomcontrolfilteredit.oneditingdone.html - OnEndDrag editbtn/tcustomcontrolfilteredit.onenddrag.html - OnEnter editbtn/tcustomcontrolfilteredit.onenter.html - OnExit editbtn/tcustomcontrolfilteredit.onexit.html - OnKeyDown editbtn/tcustomcontrolfilteredit.onkeydown.html - OnKeyPress editbtn/tcustomcontrolfilteredit.onkeypress.html - OnKeyUp editbtn/tcustomcontrolfilteredit.onkeyup.html - OnMouseDown editbtn/tcustomcontrolfilteredit.onmousedown.html - OnMouseEnter editbtn/tcustomcontrolfilteredit.onmouseenter.html - OnMouseLeave editbtn/tcustomcontrolfilteredit.onmouseleave.html - OnMouseMove editbtn/tcustomcontrolfilteredit.onmousemove.html - OnMouseUp editbtn/tcustomcontrolfilteredit.onmouseup.html - OnMouseWheel editbtn/tcustomcontrolfilteredit.onmousewheel.html - OnMouseWheelDown editbtn/tcustomcontrolfilteredit.onmousewheeldown.html - OnMouseWheelUp editbtn/tcustomcontrolfilteredit.onmousewheelup.html - OnStartDrag editbtn/tcustomcontrolfilteredit.onstartdrag.html - OnUTF8KeyPress editbtn/tcustomcontrolfilteredit.onutf8keypress.html - Text editbtn/tcustomcontrolfilteredit.text.html - TFileNameEdit editbtn/tfilenameedit.html - CreateDialog editbtn/tfilenameedit.createdialog.html - SaveDialogResult editbtn/tfilenameedit.savedialogresult.html - ButtonClick editbtn/tfilenameedit.buttonclick.html - RunDialog editbtn/tfilenameedit.rundialog.html - EditChange editbtn/tfilenameedit.editchange.html - DoFolderChange editbtn/tfilenameedit.dofolderchange.html - AutoSelected editbtn/tfilenameedit.autoselected.html - DialogFiles editbtn/tfilenameedit.dialogfiles.html - FileName editbtn/tfilenameedit.filename.html - InitialDir editbtn/tfilenameedit.initialdir.html - OnAcceptFileName editbtn/tfilenameedit.onacceptfilename.html - OnFolderChange editbtn/tfilenameedit.onfolderchange.html - DialogKind editbtn/tfilenameedit.dialogkind.html - DialogTitle editbtn/tfilenameedit.dialogtitle.html - DialogOptions editbtn/tfilenameedit.dialogoptions.html - Filter editbtn/tfilenameedit.filter.html - FilterIndex editbtn/tfilenameedit.filterindex.html - DefaultExt editbtn/tfilenameedit.defaultext.html - HideDirectories editbtn/tfilenameedit.hidedirectories.html - ButtonCaption editbtn/tfilenameedit.buttoncaption.html - ButtonCursor editbtn/tfilenameedit.buttoncursor.html - ButtonHint editbtn/tcustomeditbutton.buttonhint.html - FocusOnButtonClick editbtn/tfilenameedit.focusonbuttonclick.html - Alignment editbtn/tfilenameedit.alignment.html - BidiMode editbtn/tfilenameedit.bidimode.html - BorderStyle editbtn/tfilenameedit.borderstyle.html - Layout editbtn/tfilenameedit.layout.html - ParentBidiMode editbtn/tfilenameedit.parentbidimode.html - Spacing editbtn/tfilenameedit.spacing.html - OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html - OnMouseEnter editbtn/tfilenameedit.onmouseenter.html - OnMouseLeave editbtn/tfilenameedit.onmouseleave.html - OnMouseWheel editbtn/tfilenameedit.onmousewheel.html - OnMouseWheelDown editbtn/tfilenameedit.onmousewheeldown.html - OnMouseWheelUp editbtn/tfilenameedit.onmousewheelup.html - Text editbtn/tfilenameedit.text.html - GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html - GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html - Create editbtn/tcustomeditbutton.create.html - Destroy controls/twincontrol.destroy.html - ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html - ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html - DirectInput editbtn/tcustomeditbutton.directinput.html - NumGlyphs editbtn/tcustomeditbutton.numglyphs.html - Flat editbtn/tcustomeditbutton.flat.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSelect stdctrls/tcustomedit.autoselect.html - BorderSpacing controls/tcontrol.borderspacing.html - AutoSize controls/tcontrol.autosize.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - MaxLength stdctrls/tcustomedit.maxlength.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TDirectoryEdit editbtn/tdirectoryedit.html - CreateDialog editbtn/tdirectoryedit.createdialog.html - GetDialogResult editbtn/tdirectoryedit.getdialogresult.html - ButtonClick editbtn/tdirectoryedit.buttonclick.html - RunDialog editbtn/tdirectoryedit.rundialog.html - AutoSelected editbtn/tdirectoryedit.autoselected.html - Directory editbtn/tdirectoryedit.directory.html - RootDir editbtn/tdirectoryedit.rootdir.html - OnAcceptDirectory editbtn/tdirectoryedit.onacceptdirectory.html - DialogTitle editbtn/tdirectoryedit.dialogtitle.html - ShowHidden editbtn/tdirectoryedit.showhidden.html - ButtonCaption editbtn/tdirectoryedit.buttoncaption.html - ButtonCursor editbtn/tdirectoryedit.buttoncursor.html - ButtonHint editbtn/tcustomeditbutton.buttonhint.html - FocusOnButtonClick editbtn/tdirectoryedit.focusonbuttonclick.html - BidiMode editbtn/tdirectoryedit.bidimode.html - BorderStyle editbtn/tdirectoryedit.borderstyle.html - Layout editbtn/tdirectoryedit.layout.html - ParentBidiMode editbtn/tdirectoryedit.parentbidimode.html - Spacing editbtn/tdirectoryedit.spacing.html - OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html - OnMouseEnter editbtn/tdirectoryedit.onmouseenter.html - OnMouseLeave editbtn/tdirectoryedit.onmouseleave.html - OnMouseWheel editbtn/tdirectoryedit.onmousewheel.html - OnMouseWheelDown editbtn/tdirectoryedit.onmousewheeldown.html - OnMouseWheelUp editbtn/tdirectoryedit.onmousewheelup.html - Text editbtn/tdirectoryedit.text.html - GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html - GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html - ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html - ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html - DirectInput editbtn/tcustomeditbutton.directinput.html - NumGlyphs editbtn/tcustomeditbutton.numglyphs.html - Flat editbtn/tcustomeditbutton.flat.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - AutoSelect stdctrls/tcustomedit.autoselect.html - BorderSpacing controls/tcontrol.borderspacing.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - MaxLength stdctrls/tcustomedit.maxlength.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - TDateEdit editbtn/tdateedit.html - ButtonClick editbtn/tdateedit.buttonclick.html - EditDblClick editbtn/tdateedit.editdblclick.html - SetDateMask editbtn/tdateedit.setdatemask.html - Create editbtn/tdateedit.create.html - DateFormatChanged editbtn/tdateedit.dateformatchanged.html - GetDateFormat editbtn/tdateedit.getdateformat.html - AutoSelected editbtn/tdateedit.autoselected.html - DroppedDown editbtn/tdateedit.droppeddown.html - CalendarDisplaySettings editbtn/tdateedit.calendardisplaysettings.html - OnAcceptDate editbtn/tdateedit.onacceptdate.html - OnCustomDate editbtn/tdateedit.oncustomdate.html - OKCaption editbtn/tdateedit.okcaption.html - CancelCaption editbtn/tdateedit.cancelcaption.html - DefaultToday editbtn/tdateedit.defaulttoday.html - DateOrder editbtn/tdateedit.dateorder.html - ButtonCaption editbtn/tdateedit.buttoncaption.html - ButtonCursor editbtn/tdateedit.buttoncursor.html - ButtonHint editbtn/tcustomeditbutton.buttonhint.html - BidiMode editbtn/tdateedit.bidimode.html - BorderStyle editbtn/tdateedit.borderstyle.html - Flat editbtn/tdateedit.flat.html - FocusOnButtonClick editbtn/tdateedit.focusonbuttonclick.html - Layout editbtn/tdateedit.layout.html - OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html - OnDblClick editbtn/tdateedit.ondblclick.html - OnMouseEnter editbtn/tdateedit.onmouseenter.html - OnMouseLeave editbtn/tdateedit.onmouseleave.html - OnMouseWheel editbtn/tdateedit.onmousewheel.html - OnMouseWheelDown editbtn/tdateedit.onmousewheeldown.html - OnMouseWheelUp editbtn/tdateedit.onmousewheelup.html - ParentBidiMode editbtn/tdateedit.parentbidimode.html - ParentColor editbtn/tdateedit.parentcolor.html - Spacing editbtn/tdateedit.spacing.html - Text editbtn/tdateedit.text.html - GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html - GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html - Date ms-its:rtl.chm::/sysutils/date.html - Button editbtn/tcustomeditbutton.button.html - ReadOnly stdctrls/tcustomedit.readonly.html - ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html - ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html - Action controls/tcontrol.action.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - AutoSize controls/tcontrol.autosize.html - AutoSelect stdctrls/tcustomedit.autoselect.html - BorderSpacing controls/tcontrol.borderspacing.html - CharCase stdctrls/tcustomedit.charcase.html - Color controls/tcontrol.color.html - Constraints controls/tcontrol.constraints.html - DirectInput editbtn/tcustomeditbutton.directinput.html - Glyph editbtn/tcustomeditbutton.glyph.html - NumGlyphs editbtn/tcustomeditbutton.numglyphs.html - DragMode controls/tcontrol.dragmode.html - EchoMode stdctrls/tcustomedit.echomode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - MaxLength stdctrls/tcustomedit.maxlength.html - OnChange stdctrls/tcustomedit.onchange.html - OnChangeBounds controls/tcontrol.onchangebounds.html - OnClick controls/tcontrol.onclick.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnResize controls/tcontrol.onresize.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ShowHint controls/tcontrol.showhint.html - TabStop controls/twincontrol.tabstop.html - TabOrder controls/twincontrol.taborder.html - Visible controls/tcontrol.visible.html - TCalcEdit editbtn/tcalcedit.html - FCalcDialog editbtn/tcalcedit.fcalcdialog.html - ButtonClick editbtn/tcalcedit.buttonclick.html - RunDialog editbtn/tcalcedit.rundialog.html - AutoSelected editbtn/tcalcedit.autoselected.html - CalculatorLayout editbtn/tcalcedit.calculatorlayout.html - AsFloat editbtn/tcalcedit.asfloat.html - AsInteger editbtn/tcalcedit.asinteger.html - OnAcceptValue editbtn/tcalcedit.onacceptvalue.html - DialogTitle editbtn/tcalcedit.dialogtitle.html - ButtonCaption editbtn/tcalcedit.buttoncaption.html - ButtonCursor editbtn/tcalcedit.buttoncursor.html - ButtonHint editbtn/tcustomeditbutton.buttonhint.html - FocusOnButtonClick editbtn/tcalcedit.focusonbuttonclick.html - BidiMode editbtn/tcalcedit.bidimode.html - BorderStyle editbtn/tcalcedit.borderstyle.html - Layout editbtn/tcalcedit.layout.html - ParentBidiMode editbtn/tcalcedit.parentbidimode.html - OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html - OnMouseEnter editbtn/tcalcedit.onmouseenter.html - OnMouseLeave editbtn/tcalcedit.onmouseleave.html - OnMouseWheel editbtn/tcalcedit.onmousewheel.html - OnMouseWheelDown editbtn/tcalcedit.onmousewheeldown.html - OnMouseWheelUp editbtn/tcalcedit.onmousewheelup.html - Text editbtn/tcalcedit.text.html - GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html - GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html - Create editbtn/tcustomeditbutton.create.html - ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html - ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html - DirectInput editbtn/tcustomeditbutton.directinput.html - NumGlyphs editbtn/tcustomeditbutton.numglyphs.html - Flat editbtn/tcustomeditbutton.flat.html - Align controls/tcontrol.align.html - Anchors controls/tcontrol.anchors.html - BorderSpacing controls/tcontrol.borderspacing.html - AutoSize controls/tcontrol.autosize.html - AutoSelect stdctrls/tcustomedit.autoselect.html - Color controls/tcontrol.color.html - DragCursor controls/tcontrol.dragcursor.html - DragMode controls/tcontrol.dragmode.html - Enabled controls/tcontrol.enabled.html - Font controls/tcontrol.font.html - MaxLength stdctrls/tcustomedit.maxlength.html - ParentColor controls/tcontrol.parentcolor.html - ParentFont controls/tcontrol.parentfont.html - ParentShowHint controls/tcontrol.parentshowhint.html - PopupMenu controls/tcontrol.popupmenu.html - ReadOnly stdctrls/tcustomedit.readonly.html - ShowHint controls/tcontrol.showhint.html - TabOrder controls/twincontrol.taborder.html - TabStop controls/twincontrol.tabstop.html - Visible controls/tcontrol.visible.html - OnChange stdctrls/tcustomedit.onchange.html - OnClick controls/tcontrol.onclick.html - OnDblClick controls/tcontrol.ondblclick.html - OnDragDrop controls/tcontrol.ondragdrop.html - OnDragOver controls/tcontrol.ondragover.html - OnEditingDone controls/tcontrol.oneditingdone.html - OnEndDrag controls/tcontrol.onenddrag.html - OnEnter controls/twincontrol.onenter.html - OnExit controls/twincontrol.onexit.html - OnKeyDown controls/twincontrol.onkeydown.html - OnKeyPress controls/twincontrol.onkeypress.html - OnKeyUp controls/twincontrol.onkeyup.html - OnMouseDown controls/tcontrol.onmousedown.html - OnMouseMove controls/tcontrol.onmousemove.html - OnMouseUp controls/tcontrol.onmouseup.html - OnStartDrag controls/tcontrol.onstartdrag.html - OnUTF8KeyPress controls/twincontrol.onutf8keypress.html - Register editbtn/register.html - FileOpenGlyph editbtn/fileopenglyph.html - DateGlyph editbtn/dateglyph.html - CalcGlyph editbtn/calcglyph.html - ValEdit valedit/index.html - rsVLEDuplicateKey valedit/rsvleduplicatekey.html - rsVLEKey valedit/rsvlekey.html - rsVLEName valedit/rsvlename.html - rsVLEInvalidRowColOperation valedit/rsvleinvalidrowcoloperation.html - TEditStyle valedit/teditstyle.html - TKeyValuePair valedit/tkeyvaluepair.html - TDisplayOption valedit/tdisplayoption.html - TDisplayOptions valedit/tdisplayoptions.html - TKeyOption valedit/tkeyoption.html - TKeyOptions valedit/tkeyoptions.html - TGetPickListEvent valedit/tgetpicklistevent.html - TOnValidateEvent valedit/tonvalidateevent.html - TItemProp valedit/titemprop.html - AssignTo valedit/titemprop.assignto.html - Create valedit/titemprop.create.html - Destroy valedit/titemprop.destroy.html - EditMask valedit/titemprop.editmask.html - EditStyle valedit/titemprop.editstyle.html - KeyDesc valedit/titemprop.keydesc.html - PickList valedit/titemprop.picklist.html - MaxLength valedit/titemprop.maxlength.html - ReadOnly valedit/titemprop.readonly.html - TItemPropList valedit/titemproplist.html - Add valedit/titemproplist.add.html - Assign valedit/titemproplist.assign.html - Clear valedit/titemproplist.clear.html - Delete valedit/titemproplist.delete.html - Exchange valedit/titemproplist.exchange.html - Insert valedit/titemproplist.insert.html - Create valedit/titemproplist.create.html - Destroy valedit/titemproplist.destroy.html - Count valedit/titemproplist.count.html - Items valedit/titemproplist.items.html - TValueListStrings valedit/tvalueliststrings.html - InsertItem valedit/tvalueliststrings.insertitem.html - Put valedit/tvalueliststrings.put.html - Create valedit/tvalueliststrings.create.html - Destroy valedit/tvalueliststrings.destroy.html - Assign valedit/tvalueliststrings.assign.html - Clear valedit/tvalueliststrings.clear.html - CustomSort valedit/tvalueliststrings.customsort.html - Delete valedit/tvalueliststrings.delete.html - Exchange valedit/tvalueliststrings.exchange.html - TValueListEditor valedit/tvaluelisteditor.html - WSRegisterClass valedit/tvaluelisteditor.wsregisterclass.html - SetFixedCols valedit/tvaluelisteditor.setfixedcols.html - ShowColumnTitles valedit/tvaluelisteditor.showcolumntitles.html - AdjustRowCount valedit/tvaluelisteditor.adjustrowcount.html - DefineCellsProperty valedit/tvaluelisteditor.definecellsproperty.html - InvalidateCachedRow valedit/tvaluelisteditor.invalidatecachedrow.html - GetAutoFillColumnInfo valedit/tvaluelisteditor.getautofillcolumninfo.html - GetEditText valedit/tvaluelisteditor.getedittext.html - GetCells valedit/tvaluelisteditor.getcells.html - GetDefaultEditor valedit/tvaluelisteditor.getdefaulteditor.html - GetRowCount valedit/tvaluelisteditor.getrowcount.html - KeyDown valedit/tvaluelisteditor.keydown.html - ResetDefaultColWidths valedit/tvaluelisteditor.resetdefaultcolwidths.html - SetCells valedit/tvaluelisteditor.setcells.html - SetEditText valedit/tvaluelisteditor.setedittext.html - SetRowCount valedit/tvaluelisteditor.setrowcount.html - TitlesChanged valedit/tvaluelisteditor.titleschanged.html - ValidateEntry valedit/tvaluelisteditor.validateentry.html - Create valedit/tvaluelisteditor.create.html - Destroy valedit/tvaluelisteditor.destroy.html - Clear valedit/tvaluelisteditor.clear.html - DeleteColRow valedit/tvaluelisteditor.deletecolrow.html - DeleteRow valedit/tvaluelisteditor.deleterow.html - DeleteCol valedit/tvaluelisteditor.deletecol.html - FindRow valedit/tvaluelisteditor.findrow.html - InsertColRow valedit/tvaluelisteditor.insertcolrow.html - InsertRow valedit/tvaluelisteditor.insertrow.html - InsertRowWithValues valedit/tvaluelisteditor.insertrowwithvalues.html - ExchangeColRow valedit/tvaluelisteditor.exchangecolrow.html - IsEmptyRow valedit/tvaluelisteditor.isemptyrow.html - MoveColRow valedit/tvaluelisteditor.movecolrow.html - RestoreCurrentRow valedit/tvaluelisteditor.restorecurrentrow.html - FixedRows valedit/tvaluelisteditor.fixedrows.html - Modified valedit/tvaluelisteditor.modified.html - Keys valedit/tvaluelisteditor.keys.html - Values valedit/tvaluelisteditor.values.html - ItemProps valedit/tvaluelisteditor.itemprops.html - Align valedit/tvaluelisteditor.align.html - AlternateColor valedit/tvaluelisteditor.alternatecolor.html - Anchors valedit/tvaluelisteditor.anchors.html - AutoAdvance valedit/tvaluelisteditor.autoadvance.html - AutoEdit valedit/tvaluelisteditor.autoedit.html - BiDiMode valedit/tvaluelisteditor.bidimode.html - BorderSpacing valedit/tvaluelisteditor.borderspacing.html - BorderStyle valedit/tvaluelisteditor.borderstyle.html - Color valedit/tvaluelisteditor.color.html - Constraints valedit/tvaluelisteditor.constraints.html - DefaultColWidth valedit/tvaluelisteditor.defaultcolwidth.html - DefaultDrawing valedit/tvaluelisteditor.defaultdrawing.html - DefaultRowHeight valedit/tvaluelisteditor.defaultrowheight.html - DragCursor valedit/tvaluelisteditor.dragcursor.html - DragKind valedit/tvaluelisteditor.dragkind.html - DragMode valedit/tvaluelisteditor.dragmode.html - Enabled valedit/tvaluelisteditor.enabled.html - ExtendedSelect valedit/tvaluelisteditor.extendedselect.html - FixedColor valedit/tvaluelisteditor.fixedcolor.html - FixedCols valedit/tvaluelisteditor.fixedcols.html - Flat valedit/tvaluelisteditor.flat.html - Font valedit/tvaluelisteditor.font.html - GridLineWidth valedit/tvaluelisteditor.gridlinewidth.html - HeaderHotZones valedit/tvaluelisteditor.headerhotzones.html - HeaderPushZones valedit/tvaluelisteditor.headerpushzones.html - MouseWheelOption valedit/tvaluelisteditor.mousewheeloption.html - ParentBiDiMode valedit/tvaluelisteditor.parentbidimode.html - ParentColor valedit/tvaluelisteditor.parentcolor.html - ParentFont valedit/tvaluelisteditor.parentfont.html - ParentShowHint valedit/tvaluelisteditor.parentshowhint.html - PopupMenu valedit/tvaluelisteditor.popupmenu.html - RowCount valedit/tvaluelisteditor.rowcount.html - ScrollBars valedit/tvaluelisteditor.scrollbars.html - ShowHint valedit/tvaluelisteditor.showhint.html - TabOrder valedit/tvaluelisteditor.taborder.html - TabStop valedit/tvaluelisteditor.tabstop.html - TitleFont valedit/tvaluelisteditor.titlefont.html - TitleImageList valedit/tvaluelisteditor.titleimagelist.html - TitleStyle valedit/tvaluelisteditor.titlestyle.html - UseXORFeatures valedit/tvaluelisteditor.usexorfeatures.html - Visible valedit/tvaluelisteditor.visible.html - VisibleColCount valedit/tvaluelisteditor.visiblecolcount.html - VisibleRowCount valedit/tvaluelisteditor.visiblerowcount.html - OnBeforeSelection valedit/tvaluelisteditor.onbeforeselection.html - OnButtonClick valedit/tvaluelisteditor.onbuttonclick.html - OnChangeBounds valedit/tvaluelisteditor.onchangebounds.html - OnCheckboxToggled valedit/tvaluelisteditor.oncheckboxtoggled.html - OnClick valedit/tvaluelisteditor.onclick.html - OnColRowDeleted valedit/tvaluelisteditor.oncolrowdeleted.html - OnColRowExchanged valedit/tvaluelisteditor.oncolrowexchanged.html - OnColRowInserted valedit/tvaluelisteditor.oncolrowinserted.html - OnColRowMoved valedit/tvaluelisteditor.oncolrowmoved.html - OnCompareCells valedit/tvaluelisteditor.oncomparecells.html - OnContextPopup valedit/tvaluelisteditor.oncontextpopup.html - OnDragDrop valedit/tvaluelisteditor.ondragdrop.html - OnDragOver valedit/tvaluelisteditor.ondragover.html - OnDblClick valedit/tvaluelisteditor.ondblclick.html - OnDrawCell valedit/tvaluelisteditor.ondrawcell.html - OnEditButtonClick valedit/tvaluelisteditor.oneditbuttonclick.html - OnEditingDone valedit/tvaluelisteditor.oneditingdone.html - OnEndDock valedit/tvaluelisteditor.onenddock.html - OnEndDrag valedit/tvaluelisteditor.onenddrag.html - OnEnter valedit/tvaluelisteditor.onenter.html - OnExit valedit/tvaluelisteditor.onexit.html - OnGetEditMask valedit/tvaluelisteditor.ongeteditmask.html - OnGetEditText valedit/tvaluelisteditor.ongetedittext.html - OnHeaderClick valedit/tvaluelisteditor.onheaderclick.html - OnHeaderSized valedit/tvaluelisteditor.onheadersized.html - OnHeaderSizing valedit/tvaluelisteditor.onheadersizing.html - OnKeyDown valedit/tvaluelisteditor.onkeydown.html - OnKeyPress valedit/tvaluelisteditor.onkeypress.html - OnKeyUp valedit/tvaluelisteditor.onkeyup.html - OnMouseDown valedit/tvaluelisteditor.onmousedown.html - OnMouseEnter valedit/tvaluelisteditor.onmouseenter.html - OnMouseLeave valedit/tvaluelisteditor.onmouseleave.html - OnMouseMove valedit/tvaluelisteditor.onmousemove.html - OnMouseUp valedit/tvaluelisteditor.onmouseup.html - OnMouseWheel valedit/tvaluelisteditor.onmousewheel.html - OnMouseWheelDown valedit/tvaluelisteditor.onmousewheeldown.html - OnMouseWheelUp valedit/tvaluelisteditor.onmousewheelup.html - OnPickListSelect valedit/tvaluelisteditor.onpicklistselect.html - OnPrepareCanvas valedit/tvaluelisteditor.onpreparecanvas.html - OnResize valedit/tvaluelisteditor.onresize.html - OnSelectEditor valedit/tvaluelisteditor.onselecteditor.html - OnSelection valedit/tvaluelisteditor.onselection.html - OnSelectCell valedit/tvaluelisteditor.onselectcell.html - OnSetEditText valedit/tvaluelisteditor.onsetedittext.html - OnShowHint valedit/tvaluelisteditor.onshowhint.html - OnStartDock valedit/tvaluelisteditor.onstartdock.html - OnStartDrag valedit/tvaluelisteditor.onstartdrag.html - OnTopLeftChanged valedit/tvaluelisteditor.ontopleftchanged.html - OnUserCheckboxBitmap valedit/tvaluelisteditor.onusercheckboxbitmap.html - OnUTF8KeyPress valedit/tvaluelisteditor.onutf8keypress.html - OnValidateEntry valedit/tvaluelisteditor.onvalidateentry.html - DisplayOptions valedit/tvaluelisteditor.displayoptions.html - DoubleBuffered valedit/tvaluelisteditor.doublebuffered.html - DropDownRows valedit/tvaluelisteditor.dropdownrows.html - KeyOptions valedit/tvaluelisteditor.keyoptions.html - Options valedit/tvaluelisteditor.options.html - Strings valedit/tvaluelisteditor.strings.html - TitleCaptions valedit/tvaluelisteditor.titlecaptions.html - OnGetPickList valedit/tvaluelisteditor.ongetpicklist.html - OnStringsChange valedit/tvaluelisteditor.onstringschange.html - OnStringsChanging valedit/tvaluelisteditor.onstringschanging.html - OnValidate valedit/tvaluelisteditor.onvalidate.html - Register valedit/register.html - ComboEx comboex/index.html - TAutoCompleteOption comboex/tautocompleteoption.html - TAutoCompleteOptions comboex/tautocompleteoptions.html - TComboBoxExStyle comboex/tcomboboxexstyle.html - TComboBoxExStyleEx comboex/tcomboboxexstyleex.html - TComboBoxExStyles comboex/tcomboboxexstyles.html - TCustomData comboex/tcustomdata.html - TListItemsCompare comboex/tlistitemscompare.html - TListItemsSortType comboex/tlistitemssorttype.html - TCheckItemChange comboex/tcheckitemchange.html - TListCompareEvent comboex/tlistcompareevent.html - TCheckComboItemState comboex/tcheckcomboitemstate.html - PTCheckComboItemState comboex/ptcheckcomboitemstate.html - TListControlItem comboex/tlistcontrolitem.html - Data comboex/tlistcontrolitem.data.html - Create comboex/tlistcontrolitem.create.html - Caption comboex/tlistcontrolitem.caption.html - ImageIndex comboex/tlistcontrolitem.imageindex.html - TComboExItem comboex/tcomboexitem.html - cDefCaption comboex/tcomboexitem.cdefcaption.html - Create comboex/tcomboexitem.create.html - Destroy comboex/tcomboexitem.destroy.html - Indent comboex/tcomboexitem.indent.html - OverlayImageIndex comboex/tcomboexitem.overlayimageindex.html - SelectedImageIndex comboex/tcomboexitem.selectedimageindex.html - TListControlItems comboex/tlistcontrolitems.html - CompareItems comboex/tlistcontrolitems.compareitems.html - DoCustomSort comboex/tlistcontrolitems.docustomsort.html - DoOnCompare comboex/tlistcontrolitems.dooncompare.html - Update comboex/tlistcontrolitems.update.html - Add comboex/tlistcontrolitems.add.html - CustomSort comboex/tlistcontrolitems.customsort.html - Sort comboex/tlistcontrolitems.sort.html - Items comboex/tlistcontrolitems.items.html - CaseSensitive comboex/tlistcontrolitems.casesensitive.html - SortType comboex/tlistcontrolitems.sorttype.html - OnCompare comboex/tlistcontrolitems.oncompare.html - TComboExItems comboex/tcomboexitems.html - FAddingOrDeletingItem comboex/tcomboexitems.faddingordeletingitem.html - Notify comboex/tcomboexitems.notify.html - Update comboex/tcomboexitems.update.html - Add comboex/tcomboexitems.add.html - AddItem comboex/tcomboexitems.additem.html - Insert comboex/tcomboexitems.insert.html - ComboItems comboex/tcomboexitems.comboitems.html - TCustomComboBoxEx comboex/tcustomcomboboxex.html - cDefAutoCompOpts comboex/tcustomcomboboxex.cdefautocompopts.html - cDefStyle comboex/tcustomcomboboxex.cdefstyle.html - FNeedMeasure comboex/tcustomcomboboxex.fneedmeasure.html - FRightToLeft comboex/tcustomcomboboxex.frighttoleft.html - FTextHeight comboex/tcustomcomboboxex.ftextheight.html - CMBiDiModeChanged comboex/tcustomcomboboxex.cmbidimodechanged.html - DrawItem comboex/tcustomcomboboxex.drawitem.html - FontChanged comboex/tcustomcomboboxex.fontchanged.html - InitializeWnd comboex/tcustomcomboboxex.initializewnd.html - SetItemHeight comboex/tcustomcomboboxex.setitemheight.html - Create comboex/tcustomcomboboxex.create.html - Destroy comboex/tcustomcomboboxex.destroy.html - Add comboex/tcustomcomboboxex.add.html - AddItem comboex/tcustomcomboboxex.additem.html - AssignItemsEx comboex/tcustomcomboboxex.assignitemsex.html - Clear comboex/tcustomcomboboxex.clear.html - Delete comboex/tcustomcomboboxex.delete.html - DeleteSelected comboex/tcustomcomboboxex.deleteselected.html - Insert comboex/tcustomcomboboxex.insert.html - AutoCompleteOptions comboex/tcustomcomboboxex.autocompleteoptions.html - Images comboex/tcustomcomboboxex.images.html - ItemsEx comboex/tcustomcomboboxex.itemsex.html - Style comboex/tcustomcomboboxex.style.html - StyleEx comboex/tcustomcomboboxex.styleex.html - TComboBoxEx comboex/tcomboboxex.html - Align comboex/tcomboboxex.align.html - Anchors comboex/tcomboboxex.anchors.html - ArrowKeysTraverseList comboex/tcomboboxex.arrowkeystraverselist.html - AutoComplete comboex/tcomboboxex.autocomplete.html - AutoCompleteOptions comboex/tcomboboxex.autocompleteoptions.html - AutoCompleteText comboex/tcomboboxex.autocompletetext.html - AutoDropDown comboex/tcomboboxex.autodropdown.html - AutoSelect comboex/tcomboboxex.autoselect.html - AutoSize comboex/tcomboboxex.autosize.html - BidiMode comboex/tcomboboxex.bidimode.html - BorderSpacing comboex/tcomboboxex.borderspacing.html - BorderStyle comboex/tcomboboxex.borderstyle.html - CharCase comboex/tcomboboxex.charcase.html - Color comboex/tcomboboxex.color.html - Constraints comboex/tcomboboxex.constraints.html - DragCursor comboex/tcomboboxex.dragcursor.html - DragKind comboex/tcomboboxex.dragkind.html - DragMode comboex/tcomboboxex.dragmode.html - DropDownCount comboex/tcomboboxex.dropdowncount.html - Enabled comboex/tcomboboxex.enabled.html - Font comboex/tcomboboxex.font.html - Images comboex/tcomboboxex.images.html - ItemHeight comboex/tcomboboxex.itemheight.html - ItemsEx comboex/tcomboboxex.itemsex.html - ItemIndex comboex/tcomboboxex.itemindex.html - ItemWidth comboex/tcomboboxex.itemwidth.html - MaxLength comboex/tcomboboxex.maxlength.html - OnChange comboex/tcomboboxex.onchange.html - OnChangeBounds comboex/tcomboboxex.onchangebounds.html - OnClick comboex/tcomboboxex.onclick.html - OnCloseUp comboex/tcomboboxex.oncloseup.html - OnContextPopup comboex/tcomboboxex.oncontextpopup.html - OnDblClick comboex/tcomboboxex.ondblclick.html - OnDragDrop comboex/tcomboboxex.ondragdrop.html - OnDragOver comboex/tcomboboxex.ondragover.html - OnDropDown comboex/tcomboboxex.ondropdown.html - OnEditingDone comboex/tcomboboxex.oneditingdone.html - OnEndDock comboex/tcomboboxex.onenddock.html - OnEndDrag comboex/tcomboboxex.onenddrag.html - OnEnter comboex/tcomboboxex.onenter.html - OnExit comboex/tcomboboxex.onexit.html - OnGetItems comboex/tcomboboxex.ongetitems.html - OnKeyDown comboex/tcomboboxex.onkeydown.html - OnKeyPress comboex/tcomboboxex.onkeypress.html - OnKeyUp comboex/tcomboboxex.onkeyup.html - OnMouseDown comboex/tcomboboxex.onmousedown.html - OnMouseEnter comboex/tcomboboxex.onmouseenter.html - OnMouseLeave comboex/tcomboboxex.onmouseleave.html - OnMouseMove comboex/tcomboboxex.onmousemove.html - OnMouseUp comboex/tcomboboxex.onmouseup.html - OnMouseWheel comboex/tcomboboxex.onmousewheel.html - OnMouseWheelDown comboex/tcomboboxex.onmousewheeldown.html - OnMouseWheelUp comboex/tcomboboxex.onmousewheelup.html - OnSelect comboex/tcomboboxex.onselect.html - OnStartDock comboex/tcomboboxex.onstartdock.html - OnStartDrag comboex/tcomboboxex.onstartdrag.html - OnUTF8KeyPress comboex/tcomboboxex.onutf8keypress.html - ParentBidiMode comboex/tcomboboxex.parentbidimode.html - ParentColor comboex/tcomboboxex.parentcolor.html - ParentFont comboex/tcomboboxex.parentfont.html - ParentShowHint comboex/tcomboboxex.parentshowhint.html - PopupMenu comboex/tcomboboxex.popupmenu.html - ReadOnly comboex/tcomboboxex.readonly.html - ShowHint comboex/tcomboboxex.showhint.html - Style comboex/tcomboboxex.style.html - StyleEx comboex/tcomboboxex.styleex.html - TabOrder comboex/tcomboboxex.taborder.html - TabStop comboex/tcomboboxex.tabstop.html - Text comboex/tcomboboxex.text.html - Visible comboex/tcomboboxex.visible.html - TCustomCheckCombo comboex/tcustomcheckcombo.html - FCheckHighlight comboex/tcustomcheckcombo.fcheckhighlight.html - FCheckSize comboex/tcustomcheckcombo.fchecksize.html - FHiLiteLeft comboex/tcustomcheckcombo.fhiliteleft.html - FHiLiteRight comboex/tcustomcheckcombo.fhiliteright.html - FNeedMeasure comboex/tcustomcheckcombo.fneedmeasure.html - FRejectDropDown comboex/tcustomcheckcombo.frejectdropdown.html - FRejectToggleOnSelect comboex/tcustomcheckcombo.frejecttoggleonselect.html - FRightToLeft comboex/tcustomcheckcombo.frighttoleft.html - FTextHeight comboex/tcustomcheckcombo.ftextheight.html - CMBiDiModeChanged comboex/tcustomcheckcombo.cmbidimodechanged.html - ClearItemStates comboex/tcustomcheckcombo.clearitemstates.html - CloseUp comboex/tcustomcheckcombo.closeup.html - DrawItem comboex/tcustomcheckcombo.drawitem.html - DropDown comboex/tcustomcheckcombo.dropdown.html - FontChanged comboex/tcustomcheckcombo.fontchanged.html - InitializeWnd comboex/tcustomcheckcombo.initializewnd.html - InitItemStates comboex/tcustomcheckcombo.inititemstates.html - KeyDown comboex/tcustomcheckcombo.keydown.html - Loaded comboex/tcustomcheckcombo.loaded.html - MouseLeave comboex/tcustomcheckcombo.mouseleave.html - MouseMove comboex/tcustomcheckcombo.mousemove.html - SetItemHeight comboex/tcustomcheckcombo.setitemheight.html - Select comboex/tcustomcheckcombo.select.html - Create comboex/tcustomcheckcombo.create.html - Destroy comboex/tcustomcheckcombo.destroy.html - AddItem comboex/tcustomcheckcombo.additem.html - AssignItems comboex/tcustomcheckcombo.assignitems.html - Clear comboex/tcustomcheckcombo.clear.html - DeleteItem comboex/tcustomcheckcombo.deleteitem.html - CheckAll comboex/tcustomcheckcombo.checkall.html - Toggle comboex/tcustomcheckcombo.toggle.html - AllowGrayed comboex/tcustomcheckcombo.allowgrayed.html - Count comboex/tcustomcheckcombo.count.html - Checked comboex/tcustomcheckcombo.checked.html - ItemEnabled comboex/tcustomcheckcombo.itemenabled.html - Objects comboex/tcustomcheckcombo.objects.html - State comboex/tcustomcheckcombo.state.html - OnItemChange comboex/tcustomcheckcombo.onitemchange.html - TCheckComboBox comboex/tcheckcombobox.html - Align comboex/tcheckcombobox.align.html - AllowGrayed comboex/tcheckcombobox.allowgrayed.html - Anchors comboex/tcheckcombobox.anchors.html - ArrowKeysTraverseList comboex/tcheckcombobox.arrowkeystraverselist.html - AutoDropDown comboex/tcheckcombobox.autodropdown.html - AutoSize comboex/tcheckcombobox.autosize.html - BidiMode comboex/tcheckcombobox.bidimode.html - BorderSpacing comboex/tcheckcombobox.borderspacing.html - BorderStyle comboex/tcheckcombobox.borderstyle.html - Color comboex/tcheckcombobox.color.html - Constraints comboex/tcheckcombobox.constraints.html - Count comboex/tcheckcombobox.count.html - DragCursor comboex/tcheckcombobox.dragcursor.html - DragKind comboex/tcheckcombobox.dragkind.html - DragMode comboex/tcheckcombobox.dragmode.html - DropDownCount comboex/tcheckcombobox.dropdowncount.html - Enabled comboex/tcheckcombobox.enabled.html - Font comboex/tcheckcombobox.font.html - ItemHeight comboex/tcheckcombobox.itemheight.html - ItemIndex comboex/tcheckcombobox.itemindex.html - Items comboex/tcheckcombobox.items.html - ItemWidth comboex/tcheckcombobox.itemwidth.html - MaxLength comboex/tcheckcombobox.maxlength.html - OnChange comboex/tcheckcombobox.onchange.html - OnChangeBounds comboex/tcheckcombobox.onchangebounds.html - OnClick comboex/tcheckcombobox.onclick.html - OnCloseUp comboex/tcheckcombobox.oncloseup.html - OnContextPopup comboex/tcheckcombobox.oncontextpopup.html - OnDblClick comboex/tcheckcombobox.ondblclick.html - OnDragDrop comboex/tcheckcombobox.ondragdrop.html - OnDragOver comboex/tcheckcombobox.ondragover.html - OnEndDrag comboex/tcheckcombobox.onenddrag.html - OnDropDown comboex/tcheckcombobox.ondropdown.html - OnEditingDone comboex/tcheckcombobox.oneditingdone.html - OnEnter comboex/tcheckcombobox.onenter.html - OnExit comboex/tcheckcombobox.onexit.html - OnGetItems comboex/tcheckcombobox.ongetitems.html - OnItemChange comboex/tcheckcombobox.onitemchange.html - OnKeyDown comboex/tcheckcombobox.onkeydown.html - OnKeyPress comboex/tcheckcombobox.onkeypress.html - OnKeyUp comboex/tcheckcombobox.onkeyup.html - OnMouseDown comboex/tcheckcombobox.onmousedown.html - OnMouseEnter comboex/tcheckcombobox.onmouseenter.html - OnMouseLeave comboex/tcheckcombobox.onmouseleave.html - OnMouseMove comboex/tcheckcombobox.onmousemove.html - OnMouseUp comboex/tcheckcombobox.onmouseup.html - OnMouseWheel comboex/tcheckcombobox.onmousewheel.html - OnMouseWheelDown comboex/tcheckcombobox.onmousewheeldown.html - OnMouseWheelUp comboex/tcheckcombobox.onmousewheelup.html - OnStartDrag comboex/tcheckcombobox.onstartdrag.html - OnSelect comboex/tcheckcombobox.onselect.html - OnUTF8KeyPress comboex/tcheckcombobox.onutf8keypress.html - ParentBidiMode comboex/tcheckcombobox.parentbidimode.html - ParentColor comboex/tcheckcombobox.parentcolor.html - ParentFont comboex/tcheckcombobox.parentfont.html - ParentShowHint comboex/tcheckcombobox.parentshowhint.html - PopupMenu comboex/tcheckcombobox.popupmenu.html - ShowHint comboex/tcheckcombobox.showhint.html - Sorted comboex/tcheckcombobox.sorted.html - TabOrder comboex/tcheckcombobox.taborder.html - TabStop comboex/tcheckcombobox.tabstop.html - Text comboex/tcheckcombobox.text.html - Visible comboex/tcheckcombobox.visible.html - Register comboex/register.html - lazcanvas lazcanvas/index.html - TLazCanvasImageFormat lazcanvas/tlazcanvasimageformat.html - TFPSharpInterpolation lazcanvas/tfpsharpinterpolation.html - Execute lazcanvas/tfpsharpinterpolation.execute.html - TLazCanvasState lazcanvas/tlazcanvasstate.html - Brush lazcanvas/tlazcanvasstate.brush.html - Pen lazcanvas/tlazcanvasstate.pen.html - Font lazcanvas/tlazcanvasstate.font.html - BaseWindowOrg lazcanvas/tlazcanvasstate.basewindoworg.html - WindowOrg lazcanvas/tlazcanvasstate.windoworg.html - Clipping lazcanvas/tlazcanvasstate.clipping.html - ClipRegion lazcanvas/tlazcanvasstate.clipregion.html - Destroy lazcanvas/tlazcanvasstate.destroy.html - TLazCanvas lazcanvas/tlazcanvas.html - SetColor lazcanvas/tlazcanvas.setcolor.html - DoCreateDefaultFont lazcanvas/tlazcanvas.docreatedefaultfont.html - DoRectangle lazcanvas/tlazcanvas.dorectangle.html - DoRectangleFill lazcanvas/tlazcanvas.dorectanglefill.html - DoPolygonFill lazcanvas/tlazcanvas.dopolygonfill.html - DoLine lazcanvas/tlazcanvas.doline.html - HasNoImage lazcanvas/tlazcanvas.hasnoimage.html - NativeDC lazcanvas/tlazcanvas.nativedc.html - ExtraFontData lazcanvas/tlazcanvas.extrafontdata.html - ImageFormat lazcanvas/tlazcanvas.imageformat.html - SelectedBitmap lazcanvas/tlazcanvas.selectedbitmap.html - create lazcanvas/tlazcanvas.create.html - destroy lazcanvas/tlazcanvas.destroy.html - SetLazClipRegion lazcanvas/tlazcanvas.setlazclipregion.html - SaveState lazcanvas/tlazcanvas.savestate.html - RestoreState lazcanvas/tlazcanvas.restorestate.html - ResetCanvasState lazcanvas/tlazcanvas.resetcanvasstate.html - AlphaBlend lazcanvas/tlazcanvas.alphablend.html - AlphaBlendIgnoringDestPixels lazcanvas/tlazcanvas.alphablendignoringdestpixels.html - CanvasCopyRect lazcanvas/tlazcanvas.canvascopyrect.html - FillColor lazcanvas/tlazcanvas.fillcolor.html - AssignPenData lazcanvas/tlazcanvas.assignpendata.html - AssignBrushData lazcanvas/tlazcanvas.assignbrushdata.html - AssignFontData lazcanvas/tlazcanvas.assignfontdata.html - AssignedPen lazcanvas/tlazcanvas.assignedpen.html - AssignedBrush lazcanvas/tlazcanvas.assignedbrush.html - AssignedFont lazcanvas/tlazcanvas.assignedfont.html - BaseWindowOrg lazcanvas/tlazcanvas.basewindoworg.html - WindowOrg lazcanvas/tlazcanvas.windoworg.html - lazregions lazregions/index.html - TLazRegionFillMode lazregions/tlazregionfillmode.html - TPointArray lazregions/tpointarray.html - TLazRegionPart lazregions/tlazregionpart.html - GetBoundingRect lazregions/tlazregionpart.getboundingrect.html - IsPointInPart lazregions/tlazregionpart.ispointinpart.html - TLazRegionRect lazregions/tlazregionrect.html - Rect lazregions/tlazregionrect.rect.html - IsPointInPart lazregions/tlazregionrect.ispointinpart.html - TLazRegionPolygon lazregions/tlazregionpolygon.html - Points lazregions/tlazregionpolygon.points.html - FillMode lazregions/tlazregionpolygon.fillmode.html - IsPointInPart lazregions/tlazregionpolygon.ispointinpart.html - TLazRegionEllipse lazregions/tlazregionellipse.html - X1 lazregions/tlazregionellipse.x1.html - Y1 lazregions/tlazregionellipse.y1.html - X2 lazregions/tlazregionellipse.x2.html - Y2 lazregions/tlazregionellipse.y2.html - IsPointInPart lazregions/tlazregionpart.ispointinpart.html - TLazRegion lazregions/tlazregion.html - Parts lazregions/tlazregion.parts.html - IsSimpleRectRegion lazregions/tlazregion.issimplerectregion.html - Rect lazregions/tlazregion.rect.html - Create lazregions/tlazregion.create.html - Destroy lazregions/tlazregion.destroy.html - Assign lazregions/tlazregion.assign.html - Clear lazregions/tlazregion.clear.html - CombineWith lazregions/tlazregion.combinewith.html - GetRegionKind lazregions/tlazregion.getregionkind.html - IsSimpleRectEmpty lazregions/tlazregion.issimplerectempty.html - AddPart lazregions/tlazregion.addpart.html - AddRectangle lazregions/tlazregion.addrectangle.html - AddPolygon lazregions/tlazregion.addpolygon.html - AddEllipse lazregions/tlazregion.addellipse.html - SetAsSimpleRectRegion lazregions/tlazregion.setassimplerectregion.html - AddPartsFromRegion lazregions/tlazregion.addpartsfromregion.html - DoChangeToComplexRegion lazregions/tlazregion.dochangetocomplexregion.html - GetBoundingRect lazregions/tlazregion.getboundingrect.html - IsPointInRegion lazregions/tlazregion.ispointinregion.html - TLazRegionWithChilds lazregions/tlazregionwithchilds.html - Parent lazregions/tlazregionwithchilds.parent.html - Childs lazregions/tlazregionwithchilds.childs.html - UserData lazregions/tlazregionwithchilds.userdata.html - Create lazregions/tlazregionwithchilds.create.html - Destroy lazregions/tlazregionwithchilds.destroy.html - IsPointInRegion lazregions/tlazregionwithchilds.ispointinregion.html - IsPointInPolygon lazregions/ispointinpolygon.html - lazdialogs lazdialogs/index.html - TLazFileDialogKind lazdialogs/tlazfiledialogkind.html - TLazarusFileDialogForm lazdialogs/tlazarusfiledialogform.html - ButtonPanel lazdialogs/tlazarusfiledialogform.buttonpanel.html - ShellTreeView lazdialogs/tlazarusfiledialogform.shelltreeview.html - ShellListView lazdialogs/tlazarusfiledialogform.shelllistview.html - SaveEdit lazdialogs/tlazarusfiledialogform.saveedit.html - FilterComboBox lazdialogs/tlazarusfiledialogform.filtercombobox.html - FileName lazdialogs/tlazarusfiledialogform.filename.html - Filter lazdialogs/tlazarusfiledialogform.filter.html - InitialDir lazdialogs/tlazarusfiledialogform.initialdir.html - Title lazdialogs/tlazarusfiledialogform.title.html - CreateNew lazdialogs/tlazarusfiledialogform.createnew.html - Initialize lazdialogs/tlazarusfiledialogform.initialize.html - HandleOkClick lazdialogs/tlazarusfiledialogform.handleokclick.html - HandleCancelClick lazdialogs/tlazarusfiledialogform.handlecancelclick.html - HandleCloseQuery lazdialogs/tlazarusfiledialogform.handleclosequery.html - HandleEditChange lazdialogs/tlazarusfiledialogform.handleeditchange.html - HandleSelectItem lazdialogs/tlazarusfiledialogform.handleselectitem.html - HandleTreeViewSelectionChanged lazdialogs/tlazarusfiledialogform.handletreeviewselectionchanged.html - TLazOpenDialog lazdialogs/tlazopendialog.html - FForm lazdialogs/tlazopendialog.fform.html - WSRegisterClass lazdialogs/tlazopendialog.wsregisterclass.html - DoExecute lazdialogs/tlazopendialog.doexecute.html - DoInitialize lazdialogs/tlazopendialog.doinitialize.html - Create lazdialogs/tlazopendialog.create.html - TLazSaveDialog lazdialogs/tlazsavedialog.html - DoInitialize lazdialogs/tlazsavedialog.doinitialize.html - TLazSelectDirectoryDialog lazdialogs/tlazselectdirectorydialog.html - DoInitialize lazdialogs/tlazselectdirectorydialog.doinitialize.html - TLazMessageDialog lazdialogs/tlazmessagedialog.html - CreateNew lazdialogs/tlazmessagedialog.createnew.html - LazMessageDlg lazdialogs/lazmessagedlg.html - customdrawn_common customdrawn_common/index.html - TCDDrawerCommon customdrawn_common/tcddrawercommon.html - PalDefaultUsesNativePalette customdrawn_common/tcddrawercommon.paldefaultusesnativepalette.html - LoadFallbackPaletteColors customdrawn_common/tcddrawercommon.loadfallbackpalettecolors.html - GetMeasures customdrawn_common/tcddrawercommon.getmeasures.html - GetMeasuresEx customdrawn_common/tcddrawercommon.getmeasuresex.html - CalculatePreferredSize customdrawn_common/tcddrawercommon.calculatepreferredsize.html - GetColor customdrawn_common/tcddrawercommon.getcolor.html - GetClientArea customdrawn_common/tcddrawercommon.getclientarea.html - DPIAdjustment customdrawn_common/tcddrawercommon.dpiadjustment.html - DrawFocusRect customdrawn_common/tcddrawercommon.drawfocusrect.html - DrawRaisedFrame customdrawn_common/tcddrawercommon.drawraisedframe.html - DrawFrame3D customdrawn_common/tcddrawercommon.drawframe3d.html - DrawSunkenFrame customdrawn_common/tcddrawercommon.drawsunkenframe.html - DrawShallowSunkenFrame customdrawn_common/tcddrawercommon.drawshallowsunkenframe.html - DrawTickmark customdrawn_common/tcddrawercommon.drawtickmark.html - DrawSlider customdrawn_common/tcddrawercommon.drawslider.html - DrawArrow customdrawn_common/tcddrawercommon.drawarrow.html - DrawSmallCloseButton customdrawn_common/tcddrawercommon.drawsmallclosebutton.html - DrawButtonWithArrow customdrawn_common/tcddrawercommon.drawbuttonwitharrow.html - DrawControl customdrawn_common/tcddrawercommon.drawcontrol.html - DrawButton customdrawn_common/tcddrawercommon.drawbutton.html - DrawEditBackground customdrawn_common/tcddrawercommon.draweditbackground.html - DrawEditFrame customdrawn_common/tcddrawercommon.draweditframe.html - DrawCaret customdrawn_common/tcddrawercommon.drawcaret.html - DrawEdit customdrawn_common/tcddrawercommon.drawedit.html - DrawCheckBoxSquare customdrawn_common/tcddrawercommon.drawcheckboxsquare.html - DrawCheckBox customdrawn_common/tcddrawercommon.drawcheckbox.html - DrawRadioButtonCircle customdrawn_common/tcddrawercommon.drawradiobuttoncircle.html - DrawRadioButton customdrawn_common/tcddrawercommon.drawradiobutton.html - DrawComboBox customdrawn_common/tcddrawercommon.drawcombobox.html - DrawScrollBar customdrawn_common/tcddrawercommon.drawscrollbar.html - DrawGroupBox customdrawn_common/tcddrawercommon.drawgroupbox.html - DrawPanel customdrawn_common/tcddrawercommon.drawpanel.html - DrawStaticText customdrawn_common/tcddrawercommon.drawstatictext.html - DrawTrackBar customdrawn_common/tcddrawercommon.drawtrackbar.html - DrawProgressBar customdrawn_common/tcddrawercommon.drawprogressbar.html - DrawListView customdrawn_common/tcddrawercommon.drawlistview.html - DrawReportListView customdrawn_common/tcddrawercommon.drawreportlistview.html - DrawReportListViewItem customdrawn_common/tcddrawercommon.drawreportlistviewitem.html - DrawCTabControl customdrawn_common/tcddrawercommon.drawctabcontrol.html - DrawCTabControlFrame customdrawn_common/tcddrawercommon.drawctabcontrolframe.html - DrawTabSheet customdrawn_common/tcddrawercommon.drawtabsheet.html - DrawTabs customdrawn_common/tcddrawercommon.drawtabs.html - DrawTab customdrawn_common/tcddrawercommon.drawtab.html - DrawSpinEdit customdrawn_common/tcddrawercommon.drawspinedit.html - customdrawndrawers customdrawndrawers/index.html - CDDRAWSTYLE_COUNT customdrawndrawers/cddrawstyle_count.html - cddTestStr customdrawndrawers/cddteststr.html - TCDEDIT_LEFT_TEXT_SPACING customdrawndrawers/tcdedit_left_text_spacing.html - TCDEDIT_RIGHT_TEXT_SPACING customdrawndrawers/tcdedit_right_text_spacing.html - TCDEDIT_TOP_TEXT_SPACING customdrawndrawers/tcdedit_top_text_spacing.html - TCDEDIT_BOTTOM_TEXT_SPACING customdrawndrawers/tcdedit_bottom_text_spacing.html - TCDCHECKBOX_SQUARE_HALF_HEIGHT customdrawndrawers/tcdcheckbox_square_half_height.html - TCDCHECKBOX_SQUARE_HEIGHT customdrawndrawers/tcdcheckbox_square_height.html - TCDRADIOBUTTON_CIRCLE_HEIGHT customdrawndrawers/tcdradiobutton_circle_height.html - TCDSCROLLBAR_BUTTON_WIDTH customdrawndrawers/tcdscrollbar_button_width.html - TCDSCROLLBAR_LEFT_SPACING customdrawndrawers/tcdscrollbar_left_spacing.html - TCDSCROLLBAR_RIGHT_SPACING customdrawndrawers/tcdscrollbar_right_spacing.html - TCDSCROLLBAR_LEFT_BUTTON_POS customdrawndrawers/tcdscrollbar_left_button_pos.html - TCDSCROLLBAR_RIGHT_BUTTON_POS customdrawndrawers/tcdscrollbar_right_button_pos.html - TCDTRACKBAR_LEFT_SPACING customdrawndrawers/tcdtrackbar_left_spacing.html - TCDTRACKBAR_RIGHT_SPACING customdrawndrawers/tcdtrackbar_right_spacing.html - TCDTRACKBAR_TOP_SPACING customdrawndrawers/tcdtrackbar_top_spacing.html - TCDTRACKBAR_FRAME_HEIGHT customdrawndrawers/tcdtrackbar_frame_height.html - TCDLISTVIEW_COLUMN_LEFT_SPACING customdrawndrawers/tcdlistview_column_left_spacing.html - TCDLISTVIEW_COLUMN_RIGHT_SPACING customdrawndrawers/tcdlistview_column_right_spacing.html - TCDLISTVIEW_COLUMN_TEXT_LEFT_SPACING customdrawndrawers/tcdlistview_column_text_left_spacing.html - TCDLISTVIEW_LINE_TOP_SPACING customdrawndrawers/tcdlistview_line_top_spacing.html - TCDLISTVIEW_LINE_BOTTOM_SPACING customdrawndrawers/tcdlistview_line_bottom_spacing.html - TCDCTABCONTROL_CLOSE_TAB_BUTTON_WIDTH customdrawndrawers/tcdctabcontrol_close_tab_button_width.html - TCDCTABCONTROL_CLOSE_TAB_BUTTON_EXTRA_SPACING customdrawndrawers/tcdctabcontrol_close_tab_button_extra_spacing.html - TCDCONTROL_CAPTION_WIDTH customdrawndrawers/tcdcontrol_caption_width.html - TCDCONTROL_CAPTION_HEIGHT customdrawndrawers/tcdcontrol_caption_height.html - TCDCTABCONTROL_TAB_HEIGHT customdrawndrawers/tcdctabcontrol_tab_height.html - TCDCTABCONTROL_TAB_WIDTH customdrawndrawers/tcdctabcontrol_tab_width.html - TCDCTABCONTROL_TAB_LEFT_POS customdrawndrawers/tcdctabcontrol_tab_left_pos.html - TCDCTABCONTROL_CLOSE_BUTTON_POS_X customdrawndrawers/tcdctabcontrol_close_button_pos_x.html - TCDCTABCONTROL_CLOSE_BUTTON_POS_Y customdrawndrawers/tcdctabcontrol_close_button_pos_y.html - TCDEDIT_BACKGROUND_COLOR customdrawndrawers/tcdedit_background_color.html - TCDEDIT_TEXT_COLOR customdrawndrawers/tcdedit_text_color.html - TCDEDIT_SELECTED_BACKGROUND_COLOR customdrawndrawers/tcdedit_selected_background_color.html - TCDEDIT_SELECTED_TEXT_COLOR customdrawndrawers/tcdedit_selected_text_color.html - TCDBUTTON_DEFAULT_COLOR customdrawndrawers/tcdbutton_default_color.html - TCDDrawStyle customdrawndrawers/tcddrawstyle.html - TCDControlStateFlag customdrawndrawers/tcdcontrolstateflag.html - TCDControlState customdrawndrawers/tcdcontrolstate.html - TCDControlID customdrawndrawers/tcdcontrolid.html - TCDPaletteKind customdrawndrawers/tcdpalettekind.html - TCDControlStateEx customdrawndrawers/tcdcontrolstateex.html - ParentRGBColor customdrawndrawers/tcdcontrolstateex.parentrgbcolor.html - FPParentRGBColor customdrawndrawers/tcdcontrolstateex.fpparentrgbcolor.html - RGBColor customdrawndrawers/tcdcontrolstateex.rgbcolor.html - FPRGBColor customdrawndrawers/tcdcontrolstateex.fprgbcolor.html - Caption customdrawndrawers/tcdcontrolstateex.caption.html - Font customdrawndrawers/tcdcontrolstateex.font.html - AutoSize customdrawndrawers/tcdcontrolstateex.autosize.html - TCDButtonStateEx customdrawndrawers/tcdbuttonstateex.html - Glyph customdrawndrawers/tcdbuttonstateex.glyph.html - TCDEditStateEx customdrawndrawers/tcdeditstateex.html - CaretIsVisible customdrawndrawers/tcdeditstateex.caretisvisible.html - CaretPos customdrawndrawers/tcdeditstateex.caretpos.html - SelStart customdrawndrawers/tcdeditstateex.selstart.html - SelLength customdrawndrawers/tcdeditstateex.sellength.html - VisibleTextStart customdrawndrawers/tcdeditstateex.visibletextstart.html - EventArrived customdrawndrawers/tcdeditstateex.eventarrived.html - MultiLine customdrawndrawers/tcdeditstateex.multiline.html - Lines customdrawndrawers/tcdeditstateex.lines.html - FullyVisibleLinesCount customdrawndrawers/tcdeditstateex.fullyvisiblelinescount.html - LineHeight customdrawndrawers/tcdeditstateex.lineheight.html - LeftTextMargin customdrawndrawers/tcdeditstateex.lefttextmargin.html - RightTextMargin customdrawndrawers/tcdeditstateex.righttextmargin.html - ExtraButtonState customdrawndrawers/tcdeditstateex.extrabuttonstate.html - TCDPanelStateEx customdrawndrawers/tcdpanelstateex.html - BevelInner customdrawndrawers/tcdpanelstateex.bevelinner.html - BevelOuter customdrawndrawers/tcdpanelstateex.bevelouter.html - BevelWidth customdrawndrawers/tcdpanelstateex.bevelwidth.html - TCDPositionedCStateEx customdrawndrawers/tcdpositionedcstateex.html - PosCount customdrawndrawers/tcdpositionedcstateex.poscount.html - Position customdrawndrawers/tcdpositionedcstateex.position.html - FloatPos customdrawndrawers/tcdpositionedcstateex.floatpos.html - FloatPageSize customdrawndrawers/tcdpositionedcstateex.floatpagesize.html - TCDProgressBarStateEx customdrawndrawers/tcdprogressbarstateex.html - BarShowText customdrawndrawers/tcdprogressbarstateex.barshowtext.html - PercentPosition customdrawndrawers/tcdprogressbarstateex.percentposition.html - Smooth customdrawndrawers/tcdprogressbarstateex.smooth.html - Style customdrawndrawers/tcdprogressbarstateex.style.html - TCDListItems customdrawndrawers/tcdlistitems.html - Caption customdrawndrawers/tcdlistitems.caption.html - ImageIndex customdrawndrawers/tcdlistitems.imageindex.html - StateIndex customdrawndrawers/tcdlistitems.stateindex.html - Childs customdrawndrawers/tcdlistitems.childs.html - Create customdrawndrawers/tcdlistitems.create.html - Destroy customdrawndrawers/tcdlistitems.destroy.html - Add customdrawndrawers/tcdlistitems.add.html - GetItem customdrawndrawers/tcdlistitems.getitem.html - GetItemCount customdrawndrawers/tcdlistitems.getitemcount.html - TCDListViewStateEx customdrawndrawers/tcdlistviewstateex.html - Columns customdrawndrawers/tcdlistviewstateex.columns.html - Items customdrawndrawers/tcdlistviewstateex.items.html - ViewStyle customdrawndrawers/tcdlistviewstateex.viewstyle.html - FirstVisibleColumn customdrawndrawers/tcdlistviewstateex.firstvisiblecolumn.html - FirstVisibleLine customdrawndrawers/tcdlistviewstateex.firstvisibleline.html - ShowColumnHeader customdrawndrawers/tcdlistviewstateex.showcolumnheader.html - TCDCTabControlStateEx customdrawndrawers/tcdctabcontrolstateex.html - LeftmostTabVisibleIndex customdrawndrawers/tcdctabcontrolstateex.leftmosttabvisibleindex.html - Tabs customdrawndrawers/tcdctabcontrolstateex.tabs.html - TabIndex customdrawndrawers/tcdctabcontrolstateex.tabindex.html - TabCount customdrawndrawers/tcdctabcontrolstateex.tabcount.html - Options customdrawndrawers/tcdctabcontrolstateex.options.html - CurTabIndex customdrawndrawers/tcdctabcontrolstateex.curtabindex.html - CurStartLeftPos customdrawndrawers/tcdctabcontrolstateex.curstartleftpos.html - TCDSpinStateEx customdrawndrawers/tcdspinstateex.html - Min customdrawndrawers/tcdspinstateex.min.html - Increment customdrawndrawers/tcdspinstateex.increment.html - FloatMin customdrawndrawers/tcdspinstateex.floatmin.html - FloatIncrement customdrawndrawers/tcdspinstateex.floatincrement.html - TCDColorPalette customdrawndrawers/tcdcolorpalette.html - ScrollBar customdrawndrawers/tcdcolorpalette.scrollbar.html - Background customdrawndrawers/tcdcolorpalette.background.html - ActiveCaption customdrawndrawers/tcdcolorpalette.activecaption.html - InactiveCaption customdrawndrawers/tcdcolorpalette.inactivecaption.html - Menu customdrawndrawers/tcdcolorpalette.menu.html - Window customdrawndrawers/tcdcolorpalette.window.html - WindowFrame customdrawndrawers/tcdcolorpalette.windowframe.html - MenuText customdrawndrawers/tcdcolorpalette.menutext.html - WindowText customdrawndrawers/tcdcolorpalette.windowtext.html - CaptionText customdrawndrawers/tcdcolorpalette.captiontext.html - ActiveBorder customdrawndrawers/tcdcolorpalette.activeborder.html - InactiveBorder customdrawndrawers/tcdcolorpalette.inactiveborder.html - AppWorkspace customdrawndrawers/tcdcolorpalette.appworkspace.html - Highlight customdrawndrawers/tcdcolorpalette.highlight.html - HighlightText customdrawndrawers/tcdcolorpalette.highlighttext.html - BtnFace customdrawndrawers/tcdcolorpalette.btnface.html - BtnShadow customdrawndrawers/tcdcolorpalette.btnshadow.html - GrayText customdrawndrawers/tcdcolorpalette.graytext.html - BtnText customdrawndrawers/tcdcolorpalette.btntext.html - InactiveCaptionText customdrawndrawers/tcdcolorpalette.inactivecaptiontext.html - BtnHighlight customdrawndrawers/tcdcolorpalette.btnhighlight.html - color3DDkShadow customdrawndrawers/tcdcolorpalette.color3ddkshadow.html - color3DLight customdrawndrawers/tcdcolorpalette.color3dlight.html - InfoText customdrawndrawers/tcdcolorpalette.infotext.html - InfoBk customdrawndrawers/tcdcolorpalette.infobk.html - HotLight customdrawndrawers/tcdcolorpalette.hotlight.html - GradientActiveCaption customdrawndrawers/tcdcolorpalette.gradientactivecaption.html - GradientInactiveCaption customdrawndrawers/tcdcolorpalette.gradientinactivecaption.html - MenuHighlight customdrawndrawers/tcdcolorpalette.menuhighlight.html - MenuBar customdrawndrawers/tcdcolorpalette.menubar.html - Form customdrawndrawers/tcdcolorpalette.form.html - Assign customdrawndrawers/tcdcolorpalette.assign.html - TCDDrawer customdrawndrawers/tcddrawer.html - Palette customdrawndrawers/tcddrawer.palette.html - FallbackPalette customdrawndrawers/tcddrawer.fallbackpalette.html - PaletteKind customdrawndrawers/tcddrawer.palettekind.html - Create customdrawndrawers/tcddrawer.create.html - Destroy customdrawndrawers/tcddrawer.destroy.html - CreateResources customdrawndrawers/tcddrawer.createresources.html - LoadResources customdrawndrawers/tcddrawer.loadresources.html - FreeResources customdrawndrawers/tcddrawer.freeresources.html - ScaleRasterImage customdrawndrawers/tcddrawer.scalerasterimage.html - LoadPalette customdrawndrawers/tcddrawer.loadpalette.html - LoadNativePaletteColors customdrawndrawers/tcddrawer.loadnativepalettecolors.html - LoadFallbackPaletteColors customdrawndrawers/tcddrawer.loadfallbackpalettecolors.html - PalDefaultUsesNativePalette customdrawndrawers/tcddrawer.paldefaultusesnativepalette.html - GetDrawStyle customdrawndrawers/tcddrawer.getdrawstyle.html - GetControlDefaultColor customdrawndrawers/tcddrawer.getcontroldefaultcolor.html - GetMeasures customdrawndrawers/tcddrawer.getmeasures.html - GetMeasuresEx customdrawndrawers/tcddrawer.getmeasuresex.html - CalculatePreferredSize customdrawndrawers/tcddrawer.calculatepreferredsize.html - GetColor customdrawndrawers/tcddrawer.getcolor.html - GetClientArea customdrawndrawers/tcddrawer.getclientarea.html - DrawControl customdrawndrawers/tcddrawer.drawcontrol.html - DrawFocusRect customdrawndrawers/tcddrawer.drawfocusrect.html - DrawRaisedFrame customdrawndrawers/tcddrawer.drawraisedframe.html - DrawFrame3D customdrawndrawers/tcddrawer.drawframe3d.html - DrawSunkenFrame customdrawndrawers/tcddrawer.drawsunkenframe.html - DrawShallowSunkenFrame customdrawndrawers/tcddrawer.drawshallowsunkenframe.html - DrawTickmark customdrawndrawers/tcddrawer.drawtickmark.html - DrawSlider customdrawndrawers/tcddrawer.drawslider.html - DrawArrow customdrawndrawers/tcddrawer.drawarrow.html - DrawSmallCloseButton customdrawndrawers/tcddrawer.drawsmallclosebutton.html - DrawButtonWithArrow customdrawndrawers/tcddrawer.drawbuttonwitharrow.html - DrawButton customdrawndrawers/tcddrawer.drawbutton.html - DrawEditBackground customdrawndrawers/tcddrawer.draweditbackground.html - DrawEditFrame customdrawndrawers/tcddrawer.draweditframe.html - DrawCaret customdrawndrawers/tcddrawer.drawcaret.html - DrawEdit customdrawndrawers/tcddrawer.drawedit.html - DrawCheckBoxSquare customdrawndrawers/tcddrawer.drawcheckboxsquare.html - DrawCheckBox customdrawndrawers/tcddrawer.drawcheckbox.html - DrawRadioButtonCircle customdrawndrawers/tcddrawer.drawradiobuttoncircle.html - DrawRadioButton customdrawndrawers/tcddrawer.drawradiobutton.html - DrawComboBox customdrawndrawers/tcddrawer.drawcombobox.html - DrawScrollBar customdrawndrawers/tcddrawer.drawscrollbar.html - DrawGroupBox customdrawndrawers/tcddrawer.drawgroupbox.html - DrawPanel customdrawndrawers/tcddrawer.drawpanel.html - DrawStaticText customdrawndrawers/tcddrawer.drawstatictext.html - DrawTrackBar customdrawndrawers/tcddrawer.drawtrackbar.html - DrawProgressBar customdrawndrawers/tcddrawer.drawprogressbar.html - DrawListView customdrawndrawers/tcddrawer.drawlistview.html - DrawReportListView customdrawndrawers/tcddrawer.drawreportlistview.html - DrawReportListViewItem customdrawndrawers/tcddrawer.drawreportlistviewitem.html - DrawCTabControl customdrawndrawers/tcddrawer.drawctabcontrol.html - DrawCTabControlFrame customdrawndrawers/tcddrawer.drawctabcontrolframe.html - DrawTabSheet customdrawndrawers/tcddrawer.drawtabsheet.html - DrawTabs customdrawndrawers/tcddrawer.drawtabs.html - DrawTab customdrawndrawers/tcddrawer.drawtab.html - DrawSpinEdit customdrawndrawers/tcddrawer.drawspinedit.html - RegisterDrawer customdrawndrawers/registerdrawer.html - GetDefaultDrawer customdrawndrawers/getdefaultdrawer.html - GetDrawer customdrawndrawers/getdrawer.html - DefaultStyle customdrawndrawers/defaultstyle.html - customdrawncontrols customdrawncontrols/index.html - TCDControlClass customdrawncontrols/tcdcontrolclass.html - TKeyboardInputBehavior customdrawncontrols/tkeyboardinputbehavior.html - TOnUserAddedPage customdrawncontrols/tonuseraddedpage.html - TCDControl customdrawncontrols/tcdcontrol.html - FDrawStyle customdrawncontrols/tcdcontrol.fdrawstyle.html - FDrawer customdrawncontrols/tcdcontrol.fdrawer.html - FState customdrawncontrols/tcdcontrol.fstate.html - FStateEx customdrawncontrols/tcdcontrol.fstateex.html - CalculatePreferredSize customdrawncontrols/tcdcontrol.calculatepreferredsize.html - SetState customdrawncontrols/tcdcontrol.setstate.html - PrepareCurrentDrawer customdrawncontrols/tcdcontrol.preparecurrentdrawer.html - SetDrawStyle customdrawncontrols/tcdcontrol.setdrawstyle.html - GetClientRect customdrawncontrols/tcdcontrol.getclientrect.html - GetControlId customdrawncontrols/tcdcontrol.getcontrolid.html - CreateControlStateEx customdrawncontrols/tcdcontrol.createcontrolstateex.html - PrepareControlState customdrawncontrols/tcdcontrol.preparecontrolstate.html - PrepareControlStateEx customdrawncontrols/tcdcontrol.preparecontrolstateex.html - DoEnter customdrawncontrols/tcdcontrol.doenter.html - DoExit customdrawncontrols/tcdcontrol.doexit.html - MouseEnter customdrawncontrols/tcdcontrol.mouseenter.html - MouseLeave customdrawncontrols/tcdcontrol.mouseleave.html - MouseDown customdrawncontrols/tcdcontrol.mousedown.html - DrawStyle customdrawncontrols/tcdcontrol.drawstyle.html - Create customdrawncontrols/tcdcontrol.create.html - Destroy customdrawncontrols/tcdcontrol.destroy.html - LCLWSCalculatePreferredSize customdrawncontrols/tcdcontrol.lclwscalculatepreferredsize.html - EraseBackground customdrawncontrols/tcdcontrol.erasebackground.html - Paint customdrawncontrols/tcdcontrol.paint.html - DrawToCanvas customdrawncontrols/tcdcontrol.drawtocanvas.html - TCDScrollableControl customdrawncontrols/tcdscrollablecontrol.html - Create customdrawncontrols/tcdscrollablecontrol.create.html - Destroy customdrawncontrols/tcdscrollablecontrol.destroy.html - ScrollBars customdrawncontrols/tcdscrollablecontrol.scrollbars.html - TCDButtonControl customdrawncontrols/tcdbuttoncontrol.html - FHasOnOffStates customdrawncontrols/tcdbuttoncontrol.fhasonoffstates.html - FIsGrouped customdrawncontrols/tcdbuttoncontrol.fisgrouped.html - FGroupIndex customdrawncontrols/tcdbuttoncontrol.fgroupindex.html - FAllowGrayed customdrawncontrols/tcdbuttoncontrol.fallowgrayed.html - KeyDown customdrawncontrols/tcdbuttoncontrol.keydown.html - KeyUp customdrawncontrols/tcdbuttoncontrol.keyup.html - MouseDown customdrawncontrols/tcdbuttoncontrol.mousedown.html - MouseUp customdrawncontrols/tcdbuttoncontrol.mouseup.html - MouseEnter customdrawncontrols/tcdbuttoncontrol.mouseenter.html - MouseLeave customdrawncontrols/tcdbuttoncontrol.mouseleave.html - DoUncheckButton customdrawncontrols/tcdbuttoncontrol.douncheckbutton.html - DoCheckIfFirstButtonInGroup customdrawncontrols/tcdbuttoncontrol.docheckiffirstbuttoningroup.html - DoButtonDown customdrawncontrols/tcdbuttoncontrol.dobuttondown.html - DoButtonUp customdrawncontrols/tcdbuttoncontrol.dobuttonup.html - RealSetText customdrawncontrols/tcdbuttoncontrol.realsettext.html - GetChecked customdrawncontrols/tcdbuttoncontrol.getchecked.html - SetChecked customdrawncontrols/tcdbuttoncontrol.setchecked.html - GetCheckedState customdrawncontrols/tcdbuttoncontrol.getcheckedstate.html - SetCheckedState customdrawncontrols/tcdbuttoncontrol.setcheckedstate.html - AllowGrayed customdrawncontrols/tcdbuttoncontrol.allowgrayed.html - Checked customdrawncontrols/tcdbuttoncontrol.checked.html - State customdrawncontrols/tcdbuttoncontrol.state.html - TCDButton customdrawncontrols/tcdbutton.html - FBState customdrawncontrols/tcdbutton.fbstate.html - Click customdrawncontrols/tcdbutton.click.html - GetControlId customdrawncontrols/tcdbutton.getcontrolid.html - CreateControlStateEx customdrawncontrols/tcdbutton.createcontrolstateex.html - PrepareControlStateEx customdrawncontrols/tcdbutton.preparecontrolstateex.html - Create customdrawncontrols/tcdbutton.create.html - Destroy customdrawncontrols/tcdbutton.destroy.html - Action customdrawncontrols/tcdbutton.action.html - Align customdrawncontrols/tcdbutton.align.html - Anchors customdrawncontrols/tcdbutton.anchors.html - AutoSize customdrawncontrols/tcdbutton.autosize.html - Caption customdrawncontrols/tcdbutton.caption.html - Color customdrawncontrols/tcdbutton.color.html - Constraints customdrawncontrols/tcdbutton.constraints.html - DrawStyle customdrawncontrols/tcdbutton.drawstyle.html - Enabled customdrawncontrols/tcdbutton.enabled.html - Font customdrawncontrols/tcdbutton.font.html - Glyph customdrawncontrols/tcdbutton.glyph.html - Kind customdrawncontrols/tcdbutton.kind.html - ModalResult customdrawncontrols/tcdbutton.modalresult.html - OnChangeBounds customdrawncontrols/tcdbutton.onchangebounds.html - OnClick customdrawncontrols/tcdbutton.onclick.html - OnContextPopup customdrawncontrols/tcdbutton.oncontextpopup.html - OnDragDrop customdrawncontrols/tcdbutton.ondragdrop.html - OnDragOver customdrawncontrols/tcdbutton.ondragover.html - OnEndDrag customdrawncontrols/tcdbutton.onenddrag.html - OnEnter customdrawncontrols/tcdbutton.onenter.html - OnExit customdrawncontrols/tcdbutton.onexit.html - OnKeyDown customdrawncontrols/tcdbutton.onkeydown.html - OnKeyPress customdrawncontrols/tcdbutton.onkeypress.html - OnKeyUp customdrawncontrols/tcdbutton.onkeyup.html - OnMouseDown customdrawncontrols/tcdbutton.onmousedown.html - OnMouseEnter customdrawncontrols/tcdbutton.onmouseenter.html - OnMouseLeave customdrawncontrols/tcdbutton.onmouseleave.html - OnMouseMove customdrawncontrols/tcdbutton.onmousemove.html - OnMouseUp customdrawncontrols/tcdbutton.onmouseup.html - OnMouseWheel customdrawncontrols/tcdbutton.onmousewheel.html - OnMouseWheelDown customdrawncontrols/tcdbutton.onmousewheeldown.html - OnMouseWheelUp customdrawncontrols/tcdbutton.onmousewheelup.html - OnResize customdrawncontrols/tcdbutton.onresize.html - OnStartDrag customdrawncontrols/tcdbutton.onstartdrag.html - OnUTF8KeyPress customdrawncontrols/tcdbutton.onutf8keypress.html - ParentFont customdrawncontrols/tcdbutton.parentfont.html - ParentShowHint customdrawncontrols/tcdbutton.parentshowhint.html - PopupMenu customdrawncontrols/tcdbutton.popupmenu.html - ShowHint customdrawncontrols/tcdbutton.showhint.html - TabOrder customdrawncontrols/tcdbutton.taborder.html - TabStop customdrawncontrols/tcdbutton.tabstop.html - Visible customdrawncontrols/tcdbutton.visible.html - TCDEdit customdrawncontrols/tcdedit.html - FEditState customdrawncontrols/tcdedit.feditstate.html - GetControlId customdrawncontrols/tcdedit.getcontrolid.html - CreateControlStateEx customdrawncontrols/tcdedit.createcontrolstateex.html - RealSetText customdrawncontrols/tcdedit.realsettext.html - DoChange customdrawncontrols/tcdedit.dochange.html - DoEnter customdrawncontrols/tcdedit.doenter.html - DoExit customdrawncontrols/tcdedit.doexit.html - KeyDown customdrawncontrols/tcdedit.keydown.html - KeyUp customdrawncontrols/tcdedit.keyup.html - UTF8KeyPress customdrawncontrols/tcdedit.utf8keypress.html - MouseDown customdrawncontrols/tcdedit.mousedown.html - MouseMove customdrawncontrols/tcdedit.mousemove.html - MouseUp customdrawncontrols/tcdedit.mouseup.html - MouseEnter customdrawncontrols/tcdedit.mouseenter.html - MouseLeave customdrawncontrols/tcdedit.mouseleave.html - Create customdrawncontrols/tcdedit.create.html - Destroy customdrawncontrols/tcdedit.destroy.html - GetCurrentLine customdrawncontrols/tcdedit.getcurrentline.html - SetCurrentLine customdrawncontrols/tcdedit.setcurrentline.html - LeftTextMargin customdrawncontrols/tcdedit.lefttextmargin.html - RightTextMargin customdrawncontrols/tcdedit.righttextmargin.html - GetSelStartX customdrawncontrols/tcdedit.getselstartx.html - GetSelLength customdrawncontrols/tcdedit.getsellength.html - SetSelStartX customdrawncontrols/tcdedit.setselstartx.html - SetSelLength customdrawncontrols/tcdedit.setsellength.html - CaretPos customdrawncontrols/tcdedit.caretpos.html - Align customdrawncontrols/tcdedit.align.html - Anchors customdrawncontrols/tcdedit.anchors.html - AutoSize customdrawncontrols/tcdedit.autosize.html - Color customdrawncontrols/tcdedit.color.html - DrawStyle customdrawncontrols/tcdedit.drawstyle.html - Enabled customdrawncontrols/tcdedit.enabled.html - Lines customdrawncontrols/tcdedit.lines.html - MultiLine customdrawncontrols/tcdedit.multiline.html - ReadOnly customdrawncontrols/tcdedit.readonly.html - TabStop customdrawncontrols/tcdedit.tabstop.html - OnChange customdrawncontrols/tcdedit.onchange.html - TCDCheckBox customdrawncontrols/tcdcheckbox.html - GetControlId customdrawncontrols/tcdcheckbox.getcontrolid.html - Create customdrawncontrols/tcdcheckbox.create.html - Destroy customdrawncontrols/tcdcheckbox.destroy.html - AllowGrayed customdrawncontrols/tcdcheckbox.allowgrayed.html - Checked customdrawncontrols/tcdcheckbox.checked.html - DrawStyle customdrawncontrols/tcdcheckbox.drawstyle.html - Caption customdrawncontrols/tcdcheckbox.caption.html - Enabled customdrawncontrols/tcdcheckbox.enabled.html - TabStop customdrawncontrols/tcdcheckbox.tabstop.html - State customdrawncontrols/tcdcheckbox.state.html - TCDRadioButton customdrawncontrols/tcdradiobutton.html - GetControlId customdrawncontrols/tcdradiobutton.getcontrolid.html - Create customdrawncontrols/tcdradiobutton.create.html - Destroy customdrawncontrols/tcdradiobutton.destroy.html - Caption customdrawncontrols/tcdradiobutton.caption.html - Checked customdrawncontrols/tcdradiobutton.checked.html - DrawStyle customdrawncontrols/tcdradiobutton.drawstyle.html - Enabled customdrawncontrols/tcdradiobutton.enabled.html - TabStop customdrawncontrols/tcdradiobutton.tabstop.html - TCDComboBox customdrawncontrols/tcdcombobox.html - GetControlId customdrawncontrols/tcdedit.getcontrolid.html - MouseDown customdrawncontrols/tcdedit.mousedown.html - MouseUp customdrawncontrols/tcdedit.mouseup.html - Create customdrawncontrols/tcdedit.create.html - Destroy customdrawncontrols/tcdedit.destroy.html - Items customdrawncontrols/tcdcombobox.items.html - ItemIndex customdrawncontrols/tcdcombobox.itemindex.html - KeyboardInputBehavior customdrawncontrols/tcdcombobox.keyboardinputbehavior.html - TCDPositionedControl customdrawncontrols/tcdpositionedcontrol.html - FSmallChange customdrawncontrols/tcdpositionedcontrol.fsmallchange.html - FLargeChange customdrawncontrols/tcdpositionedcontrol.flargechange.html - FPCState customdrawncontrols/tcdpositionedcontrol.fpcstate.html - FMoveByDragging customdrawncontrols/tcdpositionedcontrol.fmovebydragging.html - GetPositionFromMousePosWithMargins customdrawncontrols/tcdpositionedcontrol.getpositionfrommouseposwithmargins.html - GetPositionFromMousePos customdrawncontrols/tcdpositionedcontrol.getpositionfrommousepos.html - GetPositionDisplacementWithMargins customdrawncontrols/tcdpositionedcontrol.getpositiondisplacementwithmargins.html - GetPositionDisplacement customdrawncontrols/tcdpositionedcontrol.getpositiondisplacement.html - GetButtonFromMousePos customdrawncontrols/tcdpositionedcontrol.getbuttonfrommousepos.html - CreateControlStateEx customdrawncontrols/tcdpositionedcontrol.createcontrolstateex.html - PrepareControlStateEx customdrawncontrols/tcdpositionedcontrol.preparecontrolstateex.html - KeyDown customdrawncontrols/tcdpositionedcontrol.keydown.html - MouseDown customdrawncontrols/tcdpositionedcontrol.mousedown.html - MouseMove customdrawncontrols/tcdpositionedcontrol.mousemove.html - MouseUp customdrawncontrols/tcdpositionedcontrol.mouseup.html - PageSize customdrawncontrols/tcdpositionedcontrol.pagesize.html - Create customdrawncontrols/tcdpositionedcontrol.create.html - Destroy customdrawncontrols/tcdpositionedcontrol.destroy.html - Max customdrawncontrols/tcdpositionedcontrol.max.html - Min customdrawncontrols/tcdpositionedcontrol.min.html - OnChange customdrawncontrols/tcdpositionedcontrol.onchange.html - OnChangeByUser customdrawncontrols/tcdpositionedcontrol.onchangebyuser.html - Position customdrawncontrols/tcdpositionedcontrol.position.html - TCDScrollBar customdrawncontrols/tcdscrollbar.html - GetPositionFromMousePos customdrawncontrols/tcdscrollbar.getpositionfrommousepos.html - GetButtonFromMousePos customdrawncontrols/tcdscrollbar.getbuttonfrommousepos.html - GetPositionDisplacement customdrawncontrols/tcdscrollbar.getpositiondisplacement.html - GetControlId customdrawncontrols/tcdscrollbar.getcontrolid.html - PrepareControlState customdrawncontrols/tcdscrollbar.preparecontrolstate.html - Create customdrawncontrols/tcdscrollbar.create.html - Destroy customdrawncontrols/tcdscrollbar.destroy.html - DrawStyle customdrawncontrols/tcdscrollbar.drawstyle.html - Enabled customdrawncontrols/tcdscrollbar.enabled.html - Kind customdrawncontrols/tcdscrollbar.kind.html - PageSize customdrawncontrols/tcdscrollbar.pagesize.html - TabStop customdrawncontrols/tcdscrollbar.tabstop.html - TCDGroupBox customdrawncontrols/tcdgroupbox.html - GetControlId customdrawncontrols/tcdgroupbox.getcontrolid.html - RealSetText customdrawncontrols/tcdgroupbox.realsettext.html - Create customdrawncontrols/tcdgroupbox.create.html - Destroy customdrawncontrols/tcdgroupbox.destroy.html - AutoSize customdrawncontrols/tcdgroupbox.autosize.html - Caption customdrawncontrols/tcdgroupbox.caption.html - DrawStyle customdrawncontrols/tcdgroupbox.drawstyle.html - Enabled customdrawncontrols/tcdgroupbox.enabled.html - TabStop customdrawncontrols/tcdgroupbox.tabstop.html - TCDPanel customdrawncontrols/tcdpanel.html - FPState customdrawncontrols/tcdpanel.fpstate.html - GetControlId customdrawncontrols/tcdpanel.getcontrolid.html - CreateControlStateEx customdrawncontrols/tcdpanel.createcontrolstateex.html - PrepareControlStateEx customdrawncontrols/tcdpanel.preparecontrolstateex.html - RealSetText customdrawncontrols/tcdpanel.realsettext.html - Create customdrawncontrols/tcdpanel.create.html - Destroy customdrawncontrols/tcdpanel.destroy.html - BevelInner customdrawncontrols/tcdpanel.bevelinner.html - BevelOuter customdrawncontrols/tcdpanel.bevelouter.html - BevelWidth customdrawncontrols/tcdpanel.bevelwidth.html - Caption customdrawncontrols/tcdpanel.caption.html - DrawStyle customdrawncontrols/tcdpanel.drawstyle.html - Enabled customdrawncontrols/tcdpanel.enabled.html - TabStop customdrawncontrols/tcdpanel.tabstop.html - TCDStaticText customdrawncontrols/tcdstatictext.html - GetControlId customdrawncontrols/tcdstatictext.getcontrolid.html - RealSetText customdrawncontrols/tcdstatictext.realsettext.html - Create customdrawncontrols/tcdstatictext.create.html - Destroy customdrawncontrols/tcdstatictext.destroy.html - Caption customdrawncontrols/tcdstatictext.caption.html - DrawStyle customdrawncontrols/tcdstatictext.drawstyle.html - Enabled customdrawncontrols/tcdstatictext.enabled.html - TabStop customdrawncontrols/tcdstatictext.tabstop.html - TCDTrackBar customdrawncontrols/tcdtrackbar.html - GetPositionFromMousePos customdrawncontrols/tcdtrackbar.getpositionfrommousepos.html - GetPositionDisplacement customdrawncontrols/tcdtrackbar.getpositiondisplacement.html - GetControlId customdrawncontrols/tcdtrackbar.getcontrolid.html - PrepareControlState customdrawncontrols/tcdtrackbar.preparecontrolstate.html - Create customdrawncontrols/tcdtrackbar.create.html - Destroy customdrawncontrols/tcdtrackbar.destroy.html - Align customdrawncontrols/tcdtrackbar.align.html - Color customdrawncontrols/tcdtrackbar.color.html - DrawStyle customdrawncontrols/tcdtrackbar.drawstyle.html - Enabled customdrawncontrols/tcdtrackbar.enabled.html - Orientation customdrawncontrols/tcdtrackbar.orientation.html - TabStop customdrawncontrols/tcdtrackbar.tabstop.html - TCDProgressBar customdrawncontrols/tcdprogressbar.html - FPBState customdrawncontrols/tcdprogressbar.fpbstate.html - GetControlId customdrawncontrols/tcdprogressbar.getcontrolid.html - CreateControlStateEx customdrawncontrols/tcdprogressbar.createcontrolstateex.html - PrepareControlStateEx customdrawncontrols/tcdprogressbar.preparecontrolstateex.html - Create customdrawncontrols/tcdprogressbar.create.html - Destroy customdrawncontrols/tcdprogressbar.destroy.html - BarShowText customdrawncontrols/tcdprogressbar.barshowtext.html - Color customdrawncontrols/tcdprogressbar.color.html - DrawStyle customdrawncontrols/tcdprogressbar.drawstyle.html - Enabled customdrawncontrols/tcdprogressbar.enabled.html - Max customdrawncontrols/tcdprogressbar.max.html - Min customdrawncontrols/tcdprogressbar.min.html - OnChange customdrawncontrols/tcdprogressbar.onchange.html - Orientation customdrawncontrols/tcdprogressbar.orientation.html - Position customdrawncontrols/tcdprogressbar.position.html - Smooth customdrawncontrols/tcdprogressbar.smooth.html - Style customdrawncontrols/tcdprogressbar.style.html - TCDListView customdrawncontrols/tcdlistview.html - FLVState customdrawncontrols/tcdlistview.flvstate.html - GetControlId customdrawncontrols/tcdlistview.getcontrolid.html - CreateControlStateEx customdrawncontrols/tcdlistview.createcontrolstateex.html - PrepareControlStateEx customdrawncontrols/tcdlistview.preparecontrolstateex.html - Create customdrawncontrols/tcdlistview.create.html - Destroy customdrawncontrols/tcdlistview.destroy.html - Color customdrawncontrols/tcdlistview.color.html - TabStop customdrawncontrols/tcdlistview.tabstop.html - Columns customdrawncontrols/tcdlistview.columns.html - Enabled customdrawncontrols/tcdlistview.enabled.html - Items customdrawncontrols/tcdlistview.items.html - ScrollBars customdrawncontrols/tcdlistview.scrollbars.html - ShowColumnHeader customdrawncontrols/tcdlistview.showcolumnheader.html - ViewStyle customdrawncontrols/tcdlistview.viewstyle.html - TCDTabSheet customdrawncontrols/tcdtabsheet.html - RealSetText customdrawncontrols/tcdtabsheet.realsettext.html - SetParent customdrawncontrols/tcdtabsheet.setparent.html - Create customdrawncontrols/tcdtabsheet.create.html - Destroy customdrawncontrols/tcdtabsheet.destroy.html - EraseBackground customdrawncontrols/tcdtabsheet.erasebackground.html - Paint customdrawncontrols/tcdtabsheet.paint.html - Caption customdrawncontrols/tcdtabsheet.caption.html - Color customdrawncontrols/tcdtabsheet.color.html - Font customdrawncontrols/tcdtabsheet.font.html - TabVisible customdrawncontrols/tcdtabsheet.tabvisible.html - TCDCustomTabControl customdrawncontrols/tcdcustomtabcontrol.html - FTabCState customdrawncontrols/tcdcustomtabcontrol.ftabcstate.html - GetControlId customdrawncontrols/tcdcustomtabcontrol.getcontrolid.html - CreateControlStateEx customdrawncontrols/tcdcustomtabcontrol.createcontrolstateex.html - PrepareControlStateEx customdrawncontrols/tcdcustomtabcontrol.preparecontrolstateex.html - CorrectTabIndex customdrawncontrols/tcdcustomtabcontrol.correcttabindex.html - MouseDown customdrawncontrols/tcdcustomtabcontrol.mousedown.html - MouseUp customdrawncontrols/tcdcustomtabcontrol.mouseup.html - Options customdrawncontrols/tcdcustomtabcontrol.options.html - Create customdrawncontrols/tcdcustomtabcontrol.create.html - Destroy customdrawncontrols/tcdcustomtabcontrol.destroy.html - GetTabCount customdrawncontrols/tcdcustomtabcontrol.gettabcount.html - Tabs customdrawncontrols/tcdcustomtabcontrol.tabs.html - OnChanging customdrawncontrols/tcdcustomtabcontrol.onchanging.html - OnChange customdrawncontrols/tcdcustomtabcontrol.onchange.html - OnUserAddedPage customdrawncontrols/tcdcustomtabcontrol.onuseraddedpage.html - TabIndex customdrawncontrols/tcdcustomtabcontrol.tabindex.html - TCDTabControl customdrawncontrols/tcdtabcontrol.html - Color customdrawncontrols/tcdtabcontrol.color.html - Enabled customdrawncontrols/tcdtabcontrol.enabled.html - Font customdrawncontrols/tcdtabcontrol.font.html - Tabs customdrawncontrols/tcdtabcontrol.tabs.html - TabIndex customdrawncontrols/tcdtabcontrol.tabindex.html - OnChanging customdrawncontrols/tcdtabcontrol.onchanging.html - OnChange customdrawncontrols/tcdtabcontrol.onchange.html - OnUserAddedPage customdrawncontrols/tcdtabcontrol.onuseraddedpage.html - TCDPageControl customdrawncontrols/tcdpagecontrol.html - Create customdrawncontrols/tcdpagecontrol.create.html - Destroy customdrawncontrols/tcdpagecontrol.destroy.html - InsertPage customdrawncontrols/tcdpagecontrol.insertpage.html - RemovePage customdrawncontrols/tcdpagecontrol.removepage.html - AddPage customdrawncontrols/tcdpagecontrol.addpage.html - GetPage customdrawncontrols/tcdpagecontrol.getpage.html - PageCount customdrawncontrols/tcdpagecontrol.pagecount.html - FindNextPage customdrawncontrols/tcdpagecontrol.findnextpage.html - SelectNextPage customdrawncontrols/tcdpagecontrol.selectnextpage.html - Align customdrawncontrols/tcdpagecontrol.align.html - ActivePage customdrawncontrols/tcdpagecontrol.activepage.html - DrawStyle customdrawncontrols/tcdpagecontrol.drawstyle.html - Caption customdrawncontrols/tcdpagecontrol.caption.html - Color customdrawncontrols/tcdpagecontrol.color.html - Enabled customdrawncontrols/tcdpagecontrol.enabled.html - Font customdrawncontrols/tcdpagecontrol.font.html - PageIndex customdrawncontrols/tcdpagecontrol.pageindex.html - Options customdrawncontrols/tcdpagecontrol.options.html - ParentColor customdrawncontrols/tcdpagecontrol.parentcolor.html - ParentFont customdrawncontrols/tcdpagecontrol.parentfont.html - TabStop customdrawncontrols/tcdpagecontrol.tabstop.html - TabIndex customdrawncontrols/tcdpagecontrol.tabindex.html - OnChanging customdrawncontrols/tcdpagecontrol.onchanging.html - OnChange customdrawncontrols/tcdpagecontrol.onchange.html - OnUserAddedPage customdrawncontrols/tcdpagecontrol.onuseraddedpage.html - TCDSpinEdit customdrawncontrols/tcdspinedit.html - DoChange customdrawncontrols/tcdspinedit.dochange.html - Create customdrawncontrols/tcdedit.create.html - Destroy customdrawncontrols/tcdedit.destroy.html - DecimalPlaces customdrawncontrols/tcdspinedit.decimalplaces.html - Increment customdrawncontrols/tcdspinedit.increment.html - MinValue customdrawncontrols/tcdspinedit.minvalue.html - MaxValue customdrawncontrols/tcdspinedit.maxvalue.html - Value customdrawncontrols/tcdspinedit.value.html - lazdeviceapis lazdeviceapis/index.html - TLazDeviceMessageKind lazdeviceapis/tlazdevicemessagekind.html - TLazMessagingStatus lazdeviceapis/tlazmessagingstatus.html - TOnMessagingStatus lazdeviceapis/tonmessagingstatus.html - TLazPositionMethod lazdeviceapis/tlazpositionmethod.html - TScreenRotation lazdeviceapis/tscreenrotation.html - TLazAccelerometer lazdeviceapis/tlazaccelerometer.html - xaxis lazdeviceapis/tlazaccelerometer.xaxis.html - yaxis lazdeviceapis/tlazaccelerometer.yaxis.html - zaxis lazdeviceapis/tlazaccelerometer.zaxis.html - StartReadingAccelerometerData lazdeviceapis/tlazaccelerometer.startreadingaccelerometerdata.html - StopReadingAccelerometerData lazdeviceapis/tlazaccelerometer.stopreadingaccelerometerdata.html - OnSensorChanged lazdeviceapis/tlazaccelerometer.onsensorchanged.html - TLazDeviceMessage lazdeviceapis/tlazdevicemessage.html - bccAddress lazdeviceapis/tlazdevicemessage.bccaddress.html - Body lazdeviceapis/tlazdevicemessage.body.html - ccAddress lazdeviceapis/tlazdevicemessage.ccaddress.html - destinationAddress lazdeviceapis/tlazdevicemessage.destinationaddress.html - isRead lazdeviceapis/tlazdevicemessage.isread.html - messageId lazdeviceapis/tlazdevicemessage.messageid.html - messageType lazdeviceapis/tlazdevicemessage.messagetype.html - ReplyToAddress lazdeviceapis/tlazdevicemessage.replytoaddress.html - sourceAddress lazdeviceapis/tlazdevicemessage.sourceaddress.html - Subject lazdeviceapis/tlazdevicemessage.subject.html - Time lazdeviceapis/tlazdevicemessage.time.html - validityPeriod lazdeviceapis/tlazdevicemessage.validityperiod.html - Create lazdeviceapis/tlazdevicemessage.create.html - Destroy lazdeviceapis/tlazdevicemessage.destroy.html - TLazMessaging lazdeviceapis/tlazmessaging.html - Create lazdeviceapis/tlazmessaging.create.html - Destroy lazdeviceapis/tlazmessaging.destroy.html - SendMessage lazdeviceapis/tlazmessaging.sendmessage.html - CreateMessage lazdeviceapis/tlazmessaging.createmessage.html - FreeMessage lazdeviceapis/tlazmessaging.freemessage.html - OnMessagingStatus lazdeviceapis/tlazmessaging.onmessagingstatus.html - TLazPositionInfo lazdeviceapis/tlazpositioninfo.html - IsPositionDataAvailable lazdeviceapis/tlazpositioninfo.ispositiondataavailable.html - accuracy lazdeviceapis/tlazpositioninfo.accuracy.html - altitude lazdeviceapis/tlazpositioninfo.altitude.html - altitudeAccuracy lazdeviceapis/tlazpositioninfo.altitudeaccuracy.html - latitude lazdeviceapis/tlazpositioninfo.latitude.html - longitude lazdeviceapis/tlazpositioninfo.longitude.html - speed lazdeviceapis/tlazpositioninfo.speed.html - timeStamp lazdeviceapis/tlazpositioninfo.timestamp.html - RequestPositionInfo lazdeviceapis/tlazpositioninfo.requestpositioninfo.html - OnPositionRetrieved lazdeviceapis/tlazpositioninfo.onpositionretrieved.html - TLazDevice lazdeviceapis/tlazdevice.html - Vibrate lazdeviceapis/tlazdevice.vibrate.html - GetScreenRotation lazdeviceapis/tlazdevice.getscreenrotation.html - Manufacturer lazdeviceapis/tlazdevice.manufacturer.html - Model lazdeviceapis/tlazdevice.model.html - Accelerometer lazdeviceapis/accelerometer.html - Messaging lazdeviceapis/messaging.html - PositionInfo lazdeviceapis/positioninfo.html - Device lazdeviceapis/device.html - LDockTree ldocktree/index.html - DockAlignOrientations ldocktree/dockalignorientations.html - TDockHeaderMouseState ldocktree/tdockheadermousestate.html - TDockHeaderImageKind ldocktree/tdockheaderimagekind.html - TDockHeaderImages ldocktree/tdockheaderimages.html - TLazDockHeaderPart ldocktree/tlazdockheaderpart.html - TAnchorControlsRect ldocktree/tanchorcontrolsrect.html - TLazDockZone ldocktree/tlazdockzone.html - Destroy ldocktree/tlazdockzone.destroy.html - FreeSubComponents ldocktree/tlazdockzone.freesubcomponents.html - GetCaption ldocktree/tlazdockzone.getcaption.html - GetParentControl ldocktree/tlazdockzone.getparentcontrol.html - Splitter ldocktree/tlazdockzone.splitter.html - Pages ldocktree/tlazdockzone.pages.html - Page ldocktree/tlazdockzone.page.html - TLazDockTree ldocktree/tlazdocktree.html - AnchorDockLayout ldocktree/tlazdocktree.anchordocklayout.html - CreateDockLayoutHelperControls ldocktree/tlazdocktree.createdocklayouthelpercontrols.html - ResetSizes ldocktree/tlazdocktree.resetsizes.html - BreakAnchors ldocktree/tlazdocktree.breakanchors.html - PaintDockFrame ldocktree/tlazdocktree.paintdockframe.html - UndockControlForDocking ldocktree/tlazdocktree.undockcontrolfordocking.html - DefaultDockGrabberSize ldocktree/tlazdocktree.defaultdockgrabbersize.html - Create ldocktree/tlazdocktree.create.html - Destroy ldocktree/tlazdocktree.destroy.html - AdjustDockRect ldocktree/tlazdocktree.adjustdockrect.html - InsertControl ldocktree/tlazdocktree.insertcontrol.html - RemoveControl ldocktree/tlazdocktree.removecontrol.html - BuildDockLayout ldocktree/tlazdocktree.builddocklayout.html - FindBorderControls ldocktree/tlazdocktree.findbordercontrols.html - FindBorderControl ldocktree/tlazdocktree.findbordercontrol.html - GetAnchorControl ldocktree/tlazdocktree.getanchorcontrol.html - PaintSite ldocktree/tlazdocktree.paintsite.html - MessageHandler ldocktree/tlazdocktree.messagehandler.html - DumpLayout ldocktree/tlazdocktree.dumplayout.html - AutoFreeDockSite ldocktree/tlazdocktree.autofreedocksite.html - TLazDockForm ldocktree/tlazdockform.html - Notification ldocktree/tlazdockform.notification.html - UpdateMainControl ldocktree/tlazdockform.updatemaincontrol.html - MouseUp ldocktree/tlazdockform.mouseup.html - MouseDown ldocktree/tlazdockform.mousedown.html - MouseMove ldocktree/tlazdockform.mousemove.html - MouseLeave ldocktree/tlazdockform.mouseleave.html - PaintWindow ldocktree/tlazdockform.paintwindow.html - TrackMouse ldocktree/tlazdockform.trackmouse.html - Create ldocktree/tlazdockform.create.html - Destroy ldocktree/tlazdockform.destroy.html - CloseQuery ldocktree/tlazdockform.closequery.html - UpdateCaption ldocktree/tlazdockform.updatecaption.html - UpdateMainControlInParents ldocktree/tlazdockform.updatemaincontrolinparents.html - FindMainControlCandidate ldocktree/tlazdockform.findmaincontrolcandidate.html - FindHeader ldocktree/tlazdockform.findheader.html - InsertControl ldocktree/tlazdockform.insertcontrol.html - IsDockedControl ldocktree/tlazdockform.isdockedcontrol.html - ControlHasTitle ldocktree/tlazdockform.controlhastitle.html - GetTitleRect ldocktree/tlazdockform.gettitlerect.html - GetTitleOrientation ldocktree/tlazdockform.gettitleorientation.html - MainControl ldocktree/tlazdockform.maincontrol.html - TLazDockPage ldocktree/tlazdockpage.html - InsertControl ldocktree/tlazdockpage.insertcontrol.html - DockZone ldocktree/tlazdockpage.dockzone.html - PageControl ldocktree/tlazdockpage.pagecontrol.html - TLazDockPages ldocktree/tlazdockpages.html - GetFloatingDockSiteClass ldocktree/tlazdockpages.getfloatingdocksiteclass.html - Change ldocktree/tlazdockpages.change.html - Create ldocktree/tlazdockpages.create.html - Page ldocktree/tlazdockpages.page.html - ActivePageComponent - Pages - TLazDockSplitter ldocktree/tlazdocksplitter.html - Create ldocktree/tlazdocksplitter.create.html - GetLazDockSplitter ldocktree/getlazdocksplitter.html - GetLazDockSplitterOrParent ldocktree/getlazdocksplitterorparent.html - CountAnchoredControls ldocktree/countanchoredcontrols.html - NeighbourCanBeShrinked ldocktree/neighbourcanbeshrinked.html - ControlIsAnchoredIndirectly ldocktree/controlisanchoredindirectly.html - GetAnchorControlsRect ldocktree/getanchorcontrolsrect.html - GetEnclosingControlRect ldocktree/getenclosingcontrolrect.html - GetEnclosedControls ldocktree/getenclosedcontrols.html - LazFreeTypeIntfDrawer lazfreetypeintfdrawer/index.html - TLazIntfImageGetPixelAtProc lazfreetypeintfdrawer/tlazintfimagegetpixelatproc.html - TLazIntfImageSetPixelAtProc lazfreetypeintfdrawer/tlazintfimagesetpixelatproc.html - TLazIntfHorizLineProc lazfreetypeintfdrawer/tlazintfhorizlineproc.html - TIntfFreeTypeDrawer lazfreetypeintfdrawer/tintffreetypedrawer.html - RenderDirectly lazfreetypeintfdrawer/tintffreetypedrawer.renderdirectly.html - RenderDirectlyClearType lazfreetypeintfdrawer/tintffreetypedrawer.renderdirectlycleartype.html - InternalMergeColorOver lazfreetypeintfdrawer/tintffreetypedrawer.internalmergecolorover.html - MergeColorOver lazfreetypeintfdrawer/tintffreetypedrawer.mergecolorover.html - DrawPixelAt lazfreetypeintfdrawer/tintffreetypedrawer.drawpixelat.html - ClearTypePixelAt lazfreetypeintfdrawer/tintffreetypedrawer.cleartypepixelat.html - UnclippedGetPixelAddress lazfreetypeintfdrawer/tintffreetypedrawer.unclippedgetpixeladdress.html - ClippedGetPixelAddress lazfreetypeintfdrawer/tintffreetypedrawer.clippedgetpixeladdress.html - ClearTypeRGBOrder lazfreetypeintfdrawer/tintffreetypedrawer.cleartypergborder.html - Create lazfreetypeintfdrawer/tintffreetypedrawer.create.html - ClippedDrawPixel lazfreetypeintfdrawer/tintffreetypedrawer.clippeddrawpixel.html - UnclippedDrawPixel lazfreetypeintfdrawer/tintffreetypedrawer.unclippeddrawpixel.html - ClippedClearTypePixel lazfreetypeintfdrawer/tintffreetypedrawer.clippedcleartypepixel.html - UnclippedClearTypePixel lazfreetypeintfdrawer/tintffreetypedrawer.unclippedcleartypepixel.html - DrawVertLine lazfreetypeintfdrawer/tintffreetypedrawer.drawvertline.html - SetHorizLine lazfreetypeintfdrawer/tintffreetypedrawer.sethorizline.html - DrawHorizLine lazfreetypeintfdrawer/tintffreetypedrawer.drawhorizline.html - FillRect lazfreetypeintfdrawer/tintffreetypedrawer.fillrect.html - FillPixels lazfreetypeintfdrawer/tintffreetypedrawer.fillpixels.html - DrawText lazfreetypeintfdrawer/tintffreetypedrawer.drawtext.html - Destination lazfreetypeintfdrawer/tintffreetypedrawer.destination.html - Destroy lazfreetypeintfdrawer/tintffreetypedrawer.destroy.html - customdrawn_winxp customdrawn_winxp/index.html - TCDDrawerWinXP customdrawn_winxp/tcddrawerwinxp.html - GetMeasures customdrawn_winxp/tcddrawerwinxp.getmeasures.html - GetDrawStyle customdrawn_winxp/tcddrawerwinxp.getdrawstyle.html - LoadFallbackPaletteColors customdrawn_winxp/tcddrawerwinxp.loadfallbackpalettecolors.html - DrawTickmark customdrawn_winxp/tcddrawerwinxp.drawtickmark.html - DrawButton customdrawn_winxp/tcddrawerwinxp.drawbutton.html - DrawEditFrame customdrawn_winxp/tcddrawerwinxp.draweditframe.html - DrawCheckBoxSquare customdrawn_winxp/tcddrawerwinxp.drawcheckboxsquare.html - customdrawn_android customdrawn_android/index.html - TCDDrawerAndroid customdrawn_android/tcddrawerandroid.html - CreateResources customdrawn_android/tcddrawerandroid.createresources.html - LoadResources customdrawn_android/tcddrawerandroid.loadresources.html - FreeResources customdrawn_android/tcddrawerandroid.freeresources.html - GetDrawStyle customdrawn_android/tcddrawerandroid.getdrawstyle.html - GetMeasures customdrawn_android/tcddrawerandroid.getmeasures.html - DrawTickmark customdrawn_android/tcddrawerandroid.drawtickmark.html - DrawButton customdrawn_android/tcddrawerandroid.drawbutton.html - DrawEditBackground customdrawn_android/tcddrawerandroid.draweditbackground.html - DrawEditFrame customdrawn_android/tcddrawerandroid.draweditframe.html - DrawCheckBoxSquare customdrawn_android/tcddrawerandroid.drawcheckboxsquare.html - DrawRadioButtonCircle customdrawn_android/tcddrawerandroid.drawradiobuttoncircle.html - -:classes -#lcl.LCLType.TListWithEvent #rtl.Classes.TList -1VFOnChange -2MNotify -3POnChange rw -#lcl.LCLProc.TDebugLCLItemInfo #rtl.System.TObject -3VItem -3VIsDestroyed -3VInfo -3VCreationStack -3VDestructionStack -3MAsString -3MDestroy -#lcl.LCLProc.TDebugLCLItems #rtl.System.TObject -1VFItems -1VFName -3MCreate -3MDestroy -3MFindInfo -3MIsDestroyed -3MIsCreated -3MMarkCreated -3MMarkDestroyed -3MGetInfo -3PName r -#lcl.LResources.TLResource #rtl.System.TObject -3VName -3VValueType -3VValue -#lcl.LResources.TLResourceList #rtl.System.TObject -1VFList -1VFMergeList -1VFSortedCount -1MFindPosition -1MGetItems -1MSort -1MMergeSort -1MMerge -3MCreate -3MDestroy -3MAdd -3MFind -3MCount -3PItems r -#lcl.LResources.TLazarusResourceStream #rtl.Classes.TCustomMemoryStream -1VFLRes -1VFPRes -1MInitialize -3MCreate -3MCreateFromID -3MCreateFromHandle -3MDestroy -3MWrite -3PRes r -#lcl.LResources.TAbstractTranslator #rtl.System.TObject -3MTranslateStringProperty -#lcl.LResources.TLRSObjectReader #rtl.Classes.TAbstractObjectReader -1VFStream -1VFBuffer -1VFBufSize -1VFBufPos -1VFBufEnd -1VFStack -1VFStackPointer -1VFStackCapacity -1VFReader -1MSkipProperty -1MSkipSetBody -1MPush -1MPop -1MClearStack -1MInternalReadValue -1MEndPropertyIfOpen -2MReadIntegerContent -3MCreate -3MDestroy -3MNextValue -3MReadValue -3MBeginRootComponent -3MBeginComponent -3MBeginProperty -3MGetStackPath -3MRead -3MReadBinary -3MReadFloat -3MReadSingle -3MReadCurrency -3MReadDate -3MReadIdent -3MReadInt8 -3MReadInt16 -3MReadInt32 -3MReadInt64 -3MReadSet -3MReadStr -3MReadString -3MReadWideString -3MReadUnicodeString -3MSkipComponent -3MSkipValue -3PStream r -3PReader rw -#lcl.LResources.TLRSObjectWriter #rtl.Classes.TAbstractObjectWriter -1VFStream -1VFBuffer -1VFBufSize -1VFBufPos -1VFSignatureWritten -1VFStack -1VFStackPointer -1VFStackCapacity -1VFWriteEmptyInheritedChilds -1VFWriter -1MPush -1MEndHeader -1MPop -1MClearStack -1MFlushStackToStream -1MWriteToStream -2MFlushBuffer -2MWriteValue -2MWriteStr -2MWriteIntegerContent -2MWriteWordContent -2MWriteInt64Content -2MWriteSingleContent -2MWriteDoubleContent -2MWriteExtendedContent -2MWriteCurrencyContent -2MWriteWideStringContent -2MWriteWordsReversed -2MWriteNulls -3MCreate -3MDestroy -3MBeginCollection -3MBeginComponent -3MBeginList -3MEndList -3MBeginProperty -3MEndProperty -3MGetStackPath -3MWrite -3MWriteBinary -3MWriteBoolean -3MWriteFloat -3MWriteSingle -3MWriteCurrency -3MWriteDate -3MWriteIdent -3MWriteInteger -3MWriteMethodName -3MWriteSet -3MWriteString -3MWriteWideString -3MWriteUnicodeString -3PWriteEmptyInheritedChilds rw -3PWriter rw -#lcl.LResources.TLRPositionLinks #rtl.System.TObject -1VFItems -1VFCount -1MGetData -1MGetLFM -1MGetLRS -1MSetCount -1MSetData -1MSetLFM -1MSetLRS -3MCreate -3MDestroy -3MClear -3MSort -3MIndexOf -3MIndexOfRange -3MSetPosition -3MAdd -3PLFM rw -3PLRS rw -3PData rw -3PCount rw -#lcl.LResources.TUTF8Parser #rtl.System.TObject -1VfStream -1VfBuf -1VfBufLen -1VfPos -1VfLineStart -1VfFloatType -1VfSourceLine -1VfToken -1VfEofReached -1VfLastTokenStr -1MGetTokenName -1MLoadBuffer -1MCheckLoadBuffer -1MProcessChar -1MIsNumber -1MIsHexNum -1MIsAlpha -1MIsAlphaNum -1MGetHexValue -1MGetAlphaNum -1MHandleNewLine -1MSkipSpaces -1MSkipWhitespace -1MHandleEof -1MHandleAlphaNum -1MHandleNumber -1MHandleHexNumber -1MHandleQuotedString -1MHandleDecimalString -1MHandleString -1MHandleMinus -1MHandleUnknown -3MCreate -3MDestroy -3MCheckToken -3MCheckTokenSymbol -3MError -3MErrorFmt -3MErrorStr -3MHexToBinary -3MNextToken -3MSourcePos -3MTokenComponentIdent -3MTokenFloat -3MTokenInt -3MTokenString -3MTokenSymbolIs -3PFloatType r -3PSourceLine r -3MSourceColumn -3PToken r -#lcl.LResources.TCustomLazComponentQueue #rtl.Classes.TComponent -1VFOnFindComponentClass -2VFQueue -2MReadComponentSize -3MCreate -3MDestroy -3MClear -3MWrite -3MCopyFrom -3MHasComponent -3MReadComponent -3MConvertComponentAsString -3POnFindComponentClass rw -#lcl.LResources.TLazComponentQueue #lcl.LResources.TCustomLazComponentQueue -4PName -4POnFindComponentClass -#lcl.LResources.TPropertiesToSkip #rtl.Classes.TList -1MGetItem -1MSetItem -2MNotify -2MDoPropertyNotFound -3MIndexOf -3MAdd -3PItems rw -#lcl.DynQueue.TDynamicDataQueue #rtl.System.TObject -1VFItems -1VFItemCapacity -1VFTopIndex -1VFLastIndex -1VFMaximumBlockSize -1VFMinimumBlockSize -1VFSize -1VFTopItemSpace -1VFLastItemSpace -1MSetMaximumBlockSize -1MSetMinimumBlockSize -1MGrowItems -1MAddItem -1MCalculateItemSize -1MPushInternal -1MPopTopInternal -3MCreate -3MDestroy -3MClear -3MConsistencyCheck -3MWriteDebugReport -3MPush -3MPop -3MTop -3PSize r -3PMinimumBlockSize rw -3PMaximumBlockSize rw -#lcl.LCLClasses.TLCLComponent #rtl.Classes.TComponent -1VFWidgetSetClass -1VFLCLRefCount -2MWSRegisterClass -2MGetWSComponentClass -3MCreate -3MDestroy -3MNewInstance -3MRemoveAllHandlersOfObject -3MIncLCLRefCount -3MDecLCLRefCount -3PLCLRefCount r -3PWidgetSetClass r -#lcl.LCLClasses.TLCLReferenceComponent #lcl.LCLClasses.TLCLComponent -1VFReferencePtr -1VFCreating -1MGetHandle -1MGetReferenceAllocated -2MCreateParams -2MDestroyReference -2MGetReferenceHandle -2MReferenceCreated -2MReferenceDestroying -2MReferenceNeeded -2MWSCreateReference -2MWSDestroyReference -3MDestroy -3PHandle r -3PHandleAllocated r -3PReferenceAllocated r -#lcl.GraphType.TRawImageDescription -0VFormat -0VWidth -0VHeight -0VDepth -0VBitOrder -0VByteOrder -0VLineOrder -0VLineEnd -0VBitsPerPixel -0VRedPrec -0VRedShift -0VGreenPrec -0VGreenShift -0VBluePrec -0VBlueShift -0VAlphaPrec -0VAlphaShift -0VMaskBitsPerPixel -0VMaskShift -0VMaskLineEnd -0VMaskBitOrder -0VPaletteColorCount -0VPaletteBitsPerIndex -0VPaletteShift -0VPaletteLineEnd -0VPaletteBitOrder -0VPaletteByteOrder -0MInit -0MInit_BPP1 -0MInit_BPP16_R5G6B5 -0MInit_BPP24_R8G8B8_BIO_TTB -0MInit_BPP24_R8G8B8_BIO_TTB_UpsideDown -0MInit_BPP32_A8R8G8B8_BIO_TTB -0MInit_BPP32_R8G8B8A8_BIO_TTB -0MInit_BPP24_B8G8R8_BIO_TTB -0MInit_BPP24_B8G8R8_M1_BIO_TTB -0MInit_BPP32_B8G8R8_BIO_TTB -0MInit_BPP32_B8G8R8_M1_BIO_TTB -0MInit_BPP32_B8G8R8A8_BIO_TTB -0MInit_BPP32_B8G8R8A8_M1_BIO_TTB -0MGetDescriptionFromMask -0MGetDescriptionFromAlpha -0MGetRGBIndices -0MBytesPerLine -0MBitsPerLine -0MMaskBytesPerLine -0MMaskBitsPerLine -0MAsString -0MIsEqual -#lcl.GraphType.TRawImage -0VDescription -0VData -0VDataSize -0VMask -0VMaskSize -0VPalette -0VPaletteSize -0MInit -0MCreateData -0MFreeData -0MReleaseData -0MExtractRect -0MGetLineStart -0MPerformEffect -0MReadBits -0MReadChannels -0MReadMask -0MWriteBits -0MWriteChannels -0MWriteMask -0MIsMasked -0MIsTransparent -0MIsEqual -#lcl.GraphType.TRawImageLineStarts -1VFWidth -1VFHeight -1VFBitsPerPixel -1VFLineEnd -1VFLineOrder -3VPositions -3MInit -3MGetPosition -#lcl.InterfaceBase.TDialogButton #rtl.Classes.TCollectionItem -1VFCaption -1VFModalResult -1MGetCancel -1MGetDefault -1MSetCancel -1MSetDefault -2MGetDisplayName -2MSetCaption -3MCreate -3PCaption rw -3PCancel rw -3PDefault rw -3PModalResult rw -#lcl.InterfaceBase.TDialogButtons #rtl.Classes.TCollection -2VFCancelButton -2VFDefaultButton -2MGetItem -2MSetCancelButton -2MSetDefaultButton -2MSetItem -3MDestroy -3MAdd -3MFindButton -3PDefaultButton rw -3PCancelButton rw -3PItems rw -#lcl.InterfaceBase.TWidgetSet #rtl.System.TObject -2VFThemeServices -2MPassCmdLineOptions -2MCreateThemeServices -2MGetAppHandle -2MSetAppHandle -3MCreate -3MBeforeDestruction -3MAppInit -3MAppRun -3MAppWaitMessage -3MAppProcessMessages -3MAppTerminate -3MAppMinimize -3MAppRestore -3MAppBringToFront -3MAppSetIcon -3MAppSetTitle -3MAppSetVisible -3MAppRemoveStayOnTopFlags -3MAppRestoreStayOnTopFlags -3MAppSetMainFormOnTaskBar -3MLCLPlatform -3MGetLCLCapability -3MDCGetPixel -3MDCSetPixel -3MDCRedraw -3MDCSetAntialiasing -3MSetDesigning -3MInitStockFont -3MIsHelpKey -3MCreateTimer -3MDestroyTimer -3PAppHandle rw -3MArc -3MAngleChord -3MBeginPaint -3MBitBlt -3MCallNextHookEx -3MCallWindowProc -3MClientToScreen -3MCombineRgn -3MCreateBitmap -3MCreateBrushIndirect -3MCreateCaret -3MCreateCompatibleBitmap -3MCreateCompatibleDC -3MCreateDIBitmap -3MCreateDIBSection -3MCreateEllipticRgn -3MCreateFontIndirect -3MCreateFontIndirectEx -3MCreateIconIndirect -3MCreatePalette -3MCreatePatternBrush -3MCreatePenIndirect -3MCreatePolygonRgn -3MCreateRectRgn -3MCreateRoundRectRgn -3MDeleteCriticalSection -3MDeleteDC -3MDeleteObject -3MDestroyCaret -3MDestroyCursor -3MDestroyIcon -3MDPtoLP -3MDrawFrameControl -3MDrawFocusRect -3MDrawEdge -3MDrawText -3MEnableScrollBar -3MEnableWindow -3MEndPaint -3MEnterCriticalSection -3MEnumDisplayMonitors -3MEnumFontFamilies -3MEnumFontFamiliesEx -3MEllipse -3MEqualRgn -3MExcludeClipRect -3MExtCreatePen -3MExtTextOut -3MExtSelectClipRGN -3MFillRect -3MFillRgn -3MFloodFill -3MFrameRect -3MGetActiveWindow -3MGetBitmapBits -3MGetBkColor -3MGetCapture -3MGetCaretPos -3MGetClientRect -3MGetClipBox -3MGetClipRGN -3MGetCurrentObject -3MGetCursorPos -3MGetCharABCWidths -3MGetDC -3MGetDeviceCaps -3MGetDIBits -3MGetDoubleClickTime -3MGetFocus -3MGetFontLanguageInfo -3MGetForegroundWindow -3MGetIconInfo -3MGetKeyState -3MGetMapMode -3MGetMonitorInfo -3MGetObject -3MGetPaletteEntries -3MGetParent -3MGetProp -3MGetRgnBox -3MGetROP2 -3MGetScrollInfo -3MGetStockObject -3MGetSysColor -3MGetSysColorBrush -3MGetSystemPaletteEntries -3MGetSystemMetrics -3MGetTextColor -3MGetTextExtentExPoint -3MGetTextExtentPoint -3MGetTextExtentPoint32 -3MGetTextMetrics -3MGetViewPortExtEx -3MGetViewPortOrgEx -3MGetWindowExtEx -3MGetWindowLong -3MGetWindowRect -3MGetWindowSize -3MGetWindowOrgEx -3MGradientFill -3MHideCaret -3MInitializeCriticalSection -3MIntersectClipRect -3MInvalidateRect -3MInvalidateRgn -3MIsDBCSLeadByte -3MIsIconic -3MIsWindow -3MIsWindowEnabled -3MIsWindowVisible -3MIsZoomed -3MLeaveCriticalSection -3MLineTo -3MLoadBitmap -3MLoadCursor -3MLoadIcon -3MLPtoDP -3MMaskBlt -3MMessageBox -3MMonitorFromPoint -3MMonitorFromRect -3MMonitorFromWindow -3MMoveToEx -3MOffsetRgn -3MPaintRgn -3MPeekMessage -3MPie -3MPolyBezier -3MPolygon -3MPolyline -3MPostMessage -3MPtInRegion -3MRealizePalette -3MRectangle -3MRectInRegion -3MRectVisible -3MRedrawWindow -3MReleaseCapture -3MReleaseDC -3MRemoveProp -3MRestoreDC -3MRoundRect -3MSaveDC -3MScreenToClient -3MScrollWindowEx -3MSelectClipRGN -3MSelectObject -3MSelectPalette -3MSendMessage -3MSetActiveWindow -3MSetBkColor -3MSetBkMode -3MSetCapture -3MSetCaretPos -3MSetCaretPosEx -3MSetCursor -3MSetCursorPos -3MSetFocus -3MSetForegroundWindow -3MSetMapMode -3MSetMenu -3MSetParent -3MSetProp -3MSetRectRgn -3MSetROP2 -3MSetScrollInfo -3MSetStretchBltMode -3MSetSysColors -3MSetTextCharacterExtra -3MSetTextColor -3MSetWindowLong -3MSetViewPortExtEx -3MSetViewPortOrgEx -3MSetWindowExtEx -3MSetWindowOrgEx -3MSetWindowPos -3MSetWindowRgn -3MShowCaret -3MShowScrollBar -3MShowWindow -3MStretchBlt -3MStretchDIBits -3MSystemParametersInfo -3MTextOut -3MUpdateWindow -3MWindowFromPoint -3MAddEventHandler -3MAddProcessEventHandler -3MAddPipeEventHandler -3MAllocateHWnd -3MAskUser -3MCallDefaultWndHandler -3MClipboardFormatToMimeType -3MClipboardGetData -3MClipboardGetFormats -3MClipboardGetOwnerShip -3MClipboardRegisterFormat -3MCreateEmptyRegion -3MCreatePixmapIndirect -3MCreateRegionCopy -3MCreateRubberBand -3MCreateStandardCursor -3MDCClipRegionValid -3MDeallocateHWnd -3MDestroyRubberBand -3MDrawDefaultDockImage -3MDrawGrid -3MExtUTF8Out -3MFontCanUTF8 -3MFontIsMonoSpace -3MFrame3d -3MGetAcceleratorString -3MGetAvailableNativeCanvasTypes -3MGetAvailableNativeHandleTypes -3MGetCaretRespondToFocus -3MGetClientBounds -3MGetCmdLineParamDescForInterface -3MGetControlConstraints -3MGetDCOriginRelativeToWindow -3MGetDesignerDC -3MGetDeviceSize -3MGetLCLOwnerObject -3MGetNativeCanvas -3MGetNativeHandle -3MGetScrollBarSize -3MGetScrollbarVisible -3MGetWindowRelativePosition -3MIntfSendsUTF8KeyPress -3MInvalidateFrame -3MIsDesignerDC -3MIsMobilePlatform -3MIsCDIntfControl -3MMoveWindowOrgEx -3MPromptUser -3MPromptUserAtXY -3MRadialArc -3MRadialChord -3MRadialPie -3MRawImage_CreateBitmaps -3MRawImage_DescriptionFromBitmap -3MRawImage_DescriptionFromDevice -3MRawImage_FromBitmap -3MRawImage_FromDevice -3MRawImage_QueryDescription -3MRegroupMenuItem -3MReleaseDesignerDC -3MRemoveEventHandler -3MRemoveProcessEventHandler -3MRemovePipeEventHandler -3MRequestInput -3MSendCachedLCLMessages -3MSetCaretRespondToFocus -3MSetComboMinDropDownSize -3MSetEventHandlerFlags -3MSetRubberBandRect -3MShowSelectItemDialog -3MStretchMaskBlt -3MTextUTF8Out -3PThemeServices r -#lcl.InterfaceBase.EInterfaceException #rtl.sysutils.Exception -#lcl.InterfaceBase.EInterfaceError #lcl.InterfaceBase.EInterfaceException -#lcl.InterfaceBase.EInterfaceCritical #lcl.InterfaceBase.EInterfaceException -#lcl.InterfaceBase.EInterfaceWarning #lcl.InterfaceBase.EInterfaceException -#lcl.IntfGraphics.TLazIntfImage TFPCustomImage -1VFRawImage -1VFLineStarts -1VFMaskLineStarts -1VFMaskSet -1VFUpdateCount -1VfCreateAllDataNeeded -1VFGetSetColorFunctionsUpdateNeeded -1VFReadRawImageBits -1VFWriteRawImageBits -1VFMaskReadRawImageBits -1VFMaskWriteRawImageBits -1VFDataOwner -1MGetMasked -1MGetTColors -1MInternalSetSize -1MSetMasked -1MSetTColors -2VFGetInternalColorProc -2VFSetInternalColorProc -2MSetUsePalette -2MSetInternalColor -2MGetInternalColor -2MSetInternalPixel -2MGetInternalPixel -2MFreeData -2MSetDataDescription -2MChooseGetSetColorFunctions -2MChooseRawBitsProc -2MGetColor_Generic -2MGetColor_RGBA_NoPalette -2MGetColor_RGB_NoPalette -2MGetColor_Gray_NoPalette -2MGetColor_GrayAlpha_NoPalette -2MGetColor_NULL -2MGetColor_BPP32_A8R8G8B8_BIO_TTB -2MGetColor_BPP32_A8B8G8R8_BIO_TTB -2MGetColor_BPP32_A8G8R8B8_BIO_TTB -2MGetColor_BPP32_A8G8B8R8_BIO_TTB -2MGetColor_BPP32_A8R8B8G8_BIO_TTB -2MGetColor_BPP32_A8B8R8G8_BIO_TTB -2MGetColor_BPP32_B8G8R8A8_BIO_TTB -2MGetColor_BPP32_R8G8B8A8_BIO_TTB -2MGetColor_BPP32_G8B8R8A8_BIO_TTB -2MGetColor_BPP32_G8R8B8A8_BIO_TTB -2MGetColor_BPP32_B8R8G8A8_BIO_TTB -2MGetColor_BPP32_R8B8G8A8_BIO_TTB -2MGetColor_BPP32_X8R8G8B8_BIO_TTB -2MGetColor_BPP32_X8B8G8R8_BIO_TTB -2MGetColor_BPP32_X8G8R8B8_BIO_TTB -2MGetColor_BPP32_X8G8B8R8_BIO_TTB -2MGetColor_BPP32_X8R8B8G8_BIO_TTB -2MGetColor_BPP32_X8B8R8G8_BIO_TTB -2MGetColor_BPP32_B8G8R8X8_BIO_TTB -2MGetColor_BPP32_R8G8B8X8_BIO_TTB -2MGetColor_BPP32_G8B8R8X8_BIO_TTB -2MGetColor_BPP32_G8R8B8X8_BIO_TTB -2MGetColor_BPP32_B8R8G8X8_BIO_TTB -2MGetColor_BPP32_R8B8G8X8_BIO_TTB -2MGetColor_BPP24_B8G8R8_BIO_TTB -2MGetColor_BPP24_R8G8B8_BIO_TTB -2MGetColor_BPP24_G8B8R8_BIO_TTB -2MGetColor_BPP24_G8R8B8_BIO_TTB -2MGetColor_BPP24_B8R8G8_BIO_TTB -2MGetColor_BPP24_R8B8G8_BIO_TTB -2MGetMask_Generic -2MSetColor_Generic -2MSetColor_RGBA_NoPalette -2MSetColor_RGB_NoPalette -2MSetColor_Gray_NoPalette -2MSetColor_GrayAlpha_NoPalette -2MSetColor_NULL -2MSetColor_BPP32_A8R8G8B8_BIO_TTB -2MSetColor_BPP32_A8B8G8R8_BIO_TTB -2MSetColor_BPP32_A8G8R8B8_BIO_TTB -2MSetColor_BPP32_A8G8B8R8_BIO_TTB -2MSetColor_BPP32_A8R8B8G8_BIO_TTB -2MSetColor_BPP32_A8B8R8G8_BIO_TTB -2MSetColor_BPP32_B8G8R8A8_BIO_TTB -2MSetColor_BPP32_R8G8B8A8_BIO_TTB -2MSetColor_BPP32_G8B8R8A8_BIO_TTB -2MSetColor_BPP32_G8R8B8A8_BIO_TTB -2MSetColor_BPP32_B8R8G8A8_BIO_TTB -2MSetColor_BPP32_R8B8G8A8_BIO_TTB -2MSetColor_BPP32_X8R8G8B8_BIO_TTB -2MSetColor_BPP32_X8B8G8R8_BIO_TTB -2MSetColor_BPP32_X8G8R8B8_BIO_TTB -2MSetColor_BPP32_X8G8B8R8_BIO_TTB -2MSetColor_BPP32_X8R8B8G8_BIO_TTB -2MSetColor_BPP32_X8B8R8G8_BIO_TTB -2MSetColor_BPP32_B8G8R8X8_BIO_TTB -2MSetColor_BPP32_R8G8B8X8_BIO_TTB -2MSetColor_BPP32_G8B8R8X8_BIO_TTB -2MSetColor_BPP32_G8R8B8X8_BIO_TTB -2MSetColor_BPP32_B8R8G8X8_BIO_TTB -2MSetColor_BPP32_R8B8G8X8_BIO_TTB -2MSetColor_BPP24_B8G8R8_BIO_TTB -2MSetColor_BPP24_R8G8B8_BIO_TTB -2MSetColor_BPP24_G8B8R8_BIO_TTB -2MSetColor_BPP24_G8R8B8_BIO_TTB -2MSetColor_BPP24_B8R8G8_BIO_TTB -2MSetColor_BPP24_R8B8G8_BIO_TTB -2MSetMask_Generic -3MCreate -3MCreateCompatible -3MDestroy -3MBeginUpdate -3MEndUpdate -3MSetSize -3MCheckDescription -3MLoadFromDevice -3MLoadFromBitmap -3MCreateBitmaps -3MSetRawImage -3MGetRawImage -3MFillPixels -3MCopyPixels -3MAlphaBlend -3MAlphaFromMask -3MMask -3MGetXYDataPosition -3MGetXYMaskPosition -3MGetDataLineStart -3MCreateData -3MHasTransparency -3MHasMask -3MSetDataDescriptionKeepData -3PPixelData r -3PMaskData r -3PDataDescription rw -3PTColors rw -3PMasked rw -#lcl.IntfGraphics.TLazIntfImageMask TFPCustomImage -1VFImage -2MSetInternalColor -2MGetInternalColor -2MSetInternalPixel -2MGetInternalPixel -3MCreateWithImage -3PImage r -#lcl.IntfGraphics.TLazAVLPalette TFPPalette -2VFAVLPalette -2VFAVLNodes -2MSetCount -2MSetColor -2MCompareEntries -2MCompareColorWithEntries -2MEnlargeData -3MDestroy -3MIndexOf -3MAdd -3MCheckConsistency -#lcl.IntfGraphics.TArrayNode #rtl.System.TObject -3VParent -3VValue -3VChildren -3VStartValue -3VCapacity -3VData -3MCreate -3MDestroy -3MDeleteChilds -3MUnbindFromParent -3MCreateChildNode -3MGetChildNode -3MExpand -3MFindPrevSibling -3MFindNextSibling -3MFindNextUTF8 -3MFindPrev -3MFindFirstChild -3MFindLastChild -3MFindLastSubChild -3MFindFirstSibling -3MFindLastSibling -3MConsistencyCheck -#lcl.IntfGraphics.TArrayNodesTree #rtl.System.TObject -3VRoot -3MFindNode -3MFindData -3MSetNode -3MDelete -3MClear -3MCreate -3MDestroy -3MConsistencyCheck -#lcl.IntfGraphics.ILazImageReader #rtl.System.IUnknown -0MGetUpdateDescription -0MSetUpdateDescription -0PUpdateDescription rw -#lcl.IntfGraphics.ILazImageWriter #rtl.System.IUnknown -0MInitialize -0MFinalize -#lcl.IntfGraphics.TLazReaderXPM TFPCustomImageReader,#lcl.IntfGraphics.ILazImageReader -1VFWidth -1VFHeight -1VFColorCount -1VFCharsPerPixel -1VFXHot -1VFYHot -1VFPixelToColorTree -1VFContinue -1VFUpdateDescription -3MGetUpdateDescription -3MSetUpdateDescription -3MQueryInterface -3M_AddRef -3M_Release -2MClearPixelToColorTree -2MInternalRead -2MInternalCheck -3MCreate -3MDestroy -3PUpdateDescription rw -#lcl.IntfGraphics.TLazWriterXPM TFPCustomImageWriter -1VFNibblesPerSample -1VFRightShiftSample -1VFContinue -1MSetNibblesPerSample -2MInternalWrite -3MCreate -3PNibblesPerSample rw -#lcl.IntfGraphics.TLazReaderDIB TFPCustomImageReader,#lcl.IntfGraphics.ILazImageReader -1VFImage -1VFMaskMode -1VFMaskColor -1VFMaskIndex -1VFReadSize -1VFDIBinfo -1VFPalette -1VFLineBuf -1VFUpdateDescription -1VFContinue -1VFIgnoreAlpha -1MBitfieldsToFPColor -1MRGBToFPColor -3MGetUpdateDescription -3MSetUpdateDescription -3MQueryInterface -3M_AddRef -3M_Release -2MInitLineBuf -2MFreeLineBuf -2MReadScanLine -2MWriteScanLine -2MInternalRead -2MInternalReadHead -2MInternalReadBody -2MInternalCheck -2PReadSize r -2PLineBuf r -2PInfo r -3MCreate -3MDestroy -3PMaskColor rw -3PMaskMode rw -3PUpdateDescription rw -#lcl.IntfGraphics.TLazReaderBMP #lcl.IntfGraphics.TLazReaderDIB -1VFDataOffset -2MInternalCheck -2MInternalReadHead -#lcl.IntfGraphics.TLazWriterBMP TFPWriterBMP,#lcl.IntfGraphics.ILazImageWriter -3MQueryInterface -3M_AddRef -3M_Release -3MInitialize -3MFinalize -#lcl.IntfGraphics.TLazReaderIconDIB #lcl.IntfGraphics.TLazReaderDIB -2MInternalRead -#lcl.IntfGraphics.TLazReaderPNG TFPReaderPNG,#lcl.IntfGraphics.ILazImageReader -1VFAlphaPalette -1VFUpdateDescription -3MGetUpdateDescription -3MSetUpdateDescription -3MQueryInterface -3M_AddRef -3M_Release -2MDoDecompress -2MHandleAlpha -2MInternalRead -3PUpdateDescription rw -#lcl.IntfGraphics.TLazWriterPNG TFPWriterPNG,#lcl.IntfGraphics.ILazImageWriter -3MQueryInterface -3M_AddRef -3M_Release -3MInitialize -3MFinalize -#lcl.IntfGraphics.TLazReaderTiff TFPReaderTiff,#lcl.IntfGraphics.ILazImageReader -1VFUpdateDescription -2MDoCreateImage -3MGetUpdateDescription -3MSetUpdateDescription -3MQueryInterface -3M_AddRef -3M_Release -2MInternalRead -3PUpdateDescription rw -#lcl.IntfGraphics.TLazWriterTiff TFPWriterTiff,#lcl.IntfGraphics.ILazImageWriter -3MQueryInterface -3M_AddRef -3M_Release -2MInternalWrite -3MInitialize -3MFinalize -#lcl.IntfGraphics.TLazReaderIcnsPart TFPCustomImageReader,#lcl.IntfGraphics.ILazImageReader -1VFUpdateDescription -1VFPalette -1VFImage -1VFData -1VFCalcSize -1VFDataSize -1VFIconType -1VFIconInfo -2MInternalCheck -2MInternalRead -2MSetupRead -2MCreate256ColorPalette -2MDoReadRaw -2MDoReadRLE -2MDoReadJpeg2000 -2MDoReadMask -3MGetUpdateDescription -3MSetUpdateDescription -3MQueryInterface -3M_AddRef -3M_Release -3MCreate -3MDestroy -3PUpdateDescription rw -3PIconType r -3PDataSize r -#lcl.Themes.TThemeServices #rtl.System.TObject -1VFThemesAvailable -1VFUseThemes -1VFThemedControlsEnabled -1VFOnThemeChange -1VFDottedBrush -1MGetThemesEnabled -1MGetDottedBrush -2MInitThemes -2MUnloadThemeData -2MUseThemes -2MThemedControlsEnabled -2MInternalColorToRGB -2MInternalDrawParentBackground -3MCreate -3MDestroy -3MIntfDoOnThemeChange -3MIsDisabled -3MIsPushed -3MIsHot -3MIsChecked -3MIsMixed -3MGetElementDetails -3MGetDetailSize -3MGetDetailRegion -3MGetStockImage -3MGetOption -3MGetTextExtent -3MColorToRGB -3MContentRect -3MDrawEdge -3MDrawElement -3MDrawIcon -3MDrawParentBackground -3MDrawText -3MHasTransparentParts -3MPaintBorder -3MUpdateThemes -3PDottedBrush r -3PThemesAvailable r -3PThemesEnabled r -3POnThemeChange rw -#lcl.Graphics.TGraphicsObject #rtl.Classes.TPersistent -1VFOnChanging -1VFOnChange -1MDoChange -2MChanging -2MChanged -2MLock -2MUnLock -3POnChanging rw -3POnChange rw -#lcl.Graphics.TFontHandleCacheDescriptor #lcl.LCLResCache.TResourceCacheDescriptor -3VLogFont -3VLongFontName -#lcl.Graphics.TFontHandleCache #lcl.LCLResCache.TResourceCache -2MRemoveItem -3MCreate -3MCompareDescriptors -3MFindFont -3MFindFontDesc -3MAdd -#lcl.Graphics.TFont TFPCustomFont -1VFCanUTF8 -1VFCanUTF8Valid -1VFIsMonoSpace -1VFIsMonoSpaceValid -1VFOrientation -1VFPitch -1VFQuality -1VFStyle -1VFCharSet -1VFPixelsPerInch -1VFUpdateCount -1VFChanged -1VFFontHandleCached -1VFColor -1VFHeight -1VFReference -1MFreeReference -1MGetCanUTF8 -1MGetHandle -1MGetData -1MGetIsMonoSpace -1MGetReference -1MIsHeightStored -1MIsNameStored -1MSetData -1MSetHandle -1MReferenceNeeded -2MGetCharSet -2MGetHeight -2MGetName -2MGetOrientation -2MGetPitch -2MGetSize -2MGetStyle -2MChanged -2MDoAllocateResources -2MDoCopyProps -2MDoDeAllocateResources -2MSetCharSet -2MSetColor -2MGetColor -2MSetFlags -2MSetFPColor -2MSetHeight -2MSetName -2MSetOrientation -2MSetPitch -2MSetSize -2MSetStyle -2MSetQuality -3MCreate -3MDestroy -3MAssign -3MBeginUpdate -3MEndUpdate -3PFontData rw -3MHandleAllocated -3PHandle rw -3MIsDefault -3MIsEqual -3PIsMonoSpace r -3MSetDefault -3PCanUTF8 r -3PPixelsPerInch rw -3PReference r -4PCharSet rw -4PColor rw -4PHeight rws -4PName rws -4POrientation rw -4PPitch rw -4PQuality rw -4PSize rws -4PStyle rw -#lcl.Graphics.TPenHandleCacheDescriptor #lcl.LCLResCache.TResourceCacheDescriptor -3VExtPen -3VPattern -#lcl.Graphics.TPenHandleCache #lcl.LCLResCache.TResourceCache -2MRemoveItem -3MCreate -3MCompareDescriptors -3MFindPen -3MFindPenDesc -3MAdd -#lcl.Graphics.TPen TFPCustomPen -1VFColor -1VFEndCap -1VFCosmetic -1VFJoinStyle -1VFPattern -1VFPenHandleCached -1VFReference -1MFreeReference -1MGetHandle -1MGetReference -1MReferenceNeeded -1MSetCosmetic -1MSetHandle -2MDoAllocateResources -2MDoDeAllocateResources -2MDoCopyProps -2MSetColor -2MSetFPColor -2MSetEndCap -2MSetJoinStyle -2MSetMode -2MSetStyle -2MSetWidth -3MCreate -3MDestroy -3MAssign -3PHandle rw -3PReference r -3MGetPattern -3MSetPattern -4PColor rw -4PCosmetic rw -4PEndCap rw -4PJoinStyle rw -4PMode -4PStyle -4PWidth -#lcl.Graphics.TBrushHandleCache #lcl.LCLResCache.TBlockResourceCache -2MRemoveItem -3MCreate -#lcl.Graphics.TBrush TFPCustomBrush -1VFBrushHandleCached -1VFColor -1VFBitmap -1VFReference -1VFInternalUpdateIndex -1MFreeReference -1MGetHandle -1MGetReference -1MGetColor -1MReferenceNeeded -1MSetHandle -1MDoChange -2MDoAllocateResources -2MDoDeAllocateResources -2MDoCopyProps -2MSetColor -2MSetFPColor -2MSetBitmap -2MSetStyle -3MAssign -3MCreate -3MDestroy -3MEqualsBrush -3PBitmap rw -3PHandle rw -3PReference r -4PColor rw -4PStyle -#lcl.Graphics.TRegion #lcl.Graphics.TGraphicsObject -1VFReference -1MAddOperation -1MClearSubRegions -1MAddSubRegion -1MFreeReference -1MGetReference -1MGetHandle -1MReferenceNeeded -1MSetHandle -2MSetClipRect -2MGetClipRect -3MCreate -3MDestroy -3MAssign -3MAddRectangle -3PClipRect rw -3PHandle rw -3PReference r -#lcl.Graphics.TGraphic #rtl.Classes.TPersistent -1VFModified -1VFOnChange -1VFOnProgress -1VFPaletteModified -2MChanged -2MEquals -2MDefineProperties -2MDraw -2MGetEmpty -2MGetHeight -2MGetMimeType -2MGetPalette -2MGetTransparent -2MGetWidth -2MProgress -2MReadData -2MSetHeight -2MSetPalette -2MSetTransparent -2MSetWidth -2MSetModified -2MWriteData -3MAssign -3MCreate -3MClear -3MLazarusResourceTypeValid -3MLoadFromFile -3MLoadFromStream -3MLoadFromMimeStream -3MLoadFromLazarusResource -3MLoadFromResourceName -3MLoadFromResourceID -3MLoadFromClipboardFormat -3MLoadFromClipboardFormatID -3MSaveToFile -3MSaveToStream -3MSaveToClipboardFormat -3MSaveToClipboardFormatID -3MGetSupportedSourceMimeTypes -3MGetResourceType -3MGetFileExtensions -3MIsStreamFormatSupported -3PEmpty r -3PHeight rw -3PModified rw -3PMimeType r -3POnChange rw -3POnProgress rw -3PPalette rw -3PPaletteModified rw -3PTransparent rw -3PWidth rw -#lcl.Graphics.TPicture #rtl.Classes.TPersistent -1VFGraphic -1VFOnChange -1VFOnProgress -1MForceType -1MGetBitmap -1MGetIcon -1MGetJpeg -1MGetPNG -1MGetPNM -1MGetPixmap -1MGetHeight -1MGetWidth -1MReadData -1MSetBitmap -1MSetIcon -1MSetJpeg -1MSetPNG -1MSetPNM -1MSetPixmap -1MSetGraphic -1MWriteData -2MAssignTo -2MChanged -2MDefineProperties -2MProgress -2MLoadFromStreamWithClass -3MCreate -3MDestroy -3MClear -3MLoadFromClipboardFormat -3MLoadFromClipboardFormatID -3MLoadFromFile -3MLoadFromResourceName -3MLoadFromLazarusResource -3MLoadFromStream -3MLoadFromStreamWithFileExt -3MSaveToClipboardFormat -3MSaveToFile -3MSaveToStream -3MSaveToStreamWithFileExt -3MSupportsClipboardFormat -3MAssign -3MRegisterFileFormat -3MRegisterClipboardFormat -3MUnregisterGraphicClass -3MFindGraphicClassWithFileExt -3PBitmap rw -3PIcon rw -3PJpeg rw -3PPixmap rw -3PPNG rw -3PPNM rw -3PGraphic rw -3PHeight r -3PWidth r -3POnChange rw -3POnProgress rw -#lcl.Graphics.EGraphicException #rtl.sysutils.Exception -#lcl.Graphics.EInvalidGraphic #lcl.Graphics.EGraphicException -#lcl.Graphics.EInvalidGraphicOperation #lcl.Graphics.EGraphicException -#lcl.Graphics.TCanvas TFPCustomCanvas -1VFAntialiasingMode -1VFAutoRedraw -1VFState -1VFSavedFontHandle -1VFSavedPenHandle -1VFSavedBrushHandle -1VFSavedRegionHandle -1VFCopyMode -1VFHandle -1VFOnChange -1VFOnChanging -1VFTextStyle -1VFLock -1VFRegion -1VFLazPen -1VFLazFont -1VFLazBrush -1VFSavedHandleStates -1MBrushChanged -1MFontChanged -1MPenChanged -1MRegionChanged -1MGetHandle -1MSetAntialiasingMode -1MSetAutoRedraw -1MSetLazFont -1MSetLazPen -1MSetLazBrush -1MSetRegion -2MDoCreateDefaultFont -2MDoCreateDefaultPen -2MDoCreateDefaultBrush -2MSetColor -2MGetColor -2MSetHeight -2MGetHeight -2MSetWidth -2MGetWidth -2MSetPenPos -2MDoLockCanvas -2MDoUnlockCanvas -2MDoTextOut -2MDoGetTextSize -2MDoGetTextHeight -2MDoGetTextWidth -2MDoRectangle -2MDoRectangleFill -2MDoRectangleAndFill -2MDoEllipse -2MDoEllipseFill -2MDoEllipseAndFill -2MDoPolygon -2MDoPolygonFill -2MDoPolygonAndFill -2MDoPolyline -2MDoPolyBezier -2MDoFloodFill -2MDoMoveTo -2MDoLineTo -2MDoLine -2MDoCopyRect -2MDoDraw -2MCheckHelper -2MGetDefaultColor -2MGetClipRect -2MSetClipRect -2MGetClipping -2MSetClipping -2MGetPixel -2MCreateBrush -2MCreateFont -2MCreateHandle -2MCreatePen -2MCreateRegion -2MDeselectHandles -2MPenChanging -2MFontChanging -2MBrushChanging -2MRegionChanging -2MRealizeAutoRedraw -2MRealizeAntialiasing -2MRequiredState -2MSetHandle -2MSetInternalPenPos -2MSetPixel -2MFreeHandle -3MCreate -3MDestroy -3MLock -3MTryLock -3MUnlock -3MRefresh -3MChanging -3MChanged -3MSaveHandleState -3MRestoreHandleState -3MArc -3MArcTo -3MAngleArc -3MBrushCopy -3MChord -3MCopyRect -3MDraw -3MDrawFocusRect -3MStretchDraw -3MEllipse -3MFillRect -3MFloodFill -3MFrame3D -3MFrame -3MFrameRect -3MGetTextMetrics -3MGradientFill -3MRadialPie -3MPie -3MPolyBezier -3MPolygon -3MPolyline -3MRectangle -3MRoundRect -3MTextOut -3MTextRect -3MTextExtent -3MTextHeight -3MTextWidth -3MTextFitInfo -3MHandleAllocated -3MGetUpdatedHandle -3PPixels rw -3PHandle rw -3PTextStyle rw -4PAntialiasingMode rw -4PAutoRedraw rw -4PBrush rw -4PCopyMode rw -4PFont rw -4PHeight r -4PPen rw -4PRegion rw -4PWidth r -4POnChange rw -4POnChanging rw -#lcl.Graphics.TSharedImage #rtl.System.TObject -1VFRefCount -2MReference -2MRelease -2MFreeHandle -2PRefCount r -3MHandleAllocated -#lcl.Graphics.TSharedRasterImage #lcl.Graphics.TSharedImage -1VFHandle -1VFBitmapCanvas -1VFSaveStream -2MFreeHandle -2MReleaseHandle -2MIsEmpty -3MCreate -3MCreateDefaultHandle -3MDestroy -3MHandleAllocated -3PBitmapCanvas rw -3PSaveStream rw -#lcl.Graphics.TRasterImage #lcl.Graphics.TGraphic -1VFCanvas -1VFTransparentColor -1VFTransparentMode -1VFUpdateCount -1VFUpdateCanvasOnly -1VFMasked -1MCanvasChanging -1MCreateCanvas -1MCreateMask -1MFreeCanvasContext -1MGetCanvas -1MGetRawImage -1MGetScanline -1MGetTransparentColor -1MSetTransparentColor -2VFSharedImage -2MCanShareImage -2MChanged -2MCreateDefaultBitmapHandle -2MDraw -2MGetEmpty -2MGetHandle -2MGetBitmapHandle -2MGetMasked -2MGetMaskHandle -2MGetMimeType -2MGetPixelFormat -2MGetRawImagePtr -2MGetRawImageDescriptionPtr -2MGetTransparent -2MGetSharedImageClass -2MGetHeight -2MGetWidth -2MBitmapHandleNeeded -2MHandleNeeded -2MMaskHandleNeeded -2MPaletteNeeded -2MInternalReleaseBitmapHandle -2MInternalReleaseMaskHandle -2MInternalReleasePalette -2MSetBitmapHandle -2MSetMasked -2MSetMaskHandle -2MSetTransparent -2MUnshareImage -2MUpdateHandles -2MSaveStreamNeeded -2MFreeSaveStream -2MReadData -2MReadStream -2MSetSize -2MSetHandle -2MSetHeight -2MSetWidth -2MSetTransparentMode -2MSetPixelFormat -2MWriteData -2MWriteStream -2MRequestTransparentColor -3MCreate -3MDestroy -3MAssign -3MClear -3MBeginUpdate -3MEndUpdate -3MFreeImage -3MBitmapHandleAllocated -3MMaskHandleAllocated -3MPaletteAllocated -3MLoadFromBitmapHandles -3MLoadFromDevice -3MLoadFromStream -3MLoadFromMimeStream -3MLoadFromRawImage -3MLoadFromIntfImage -3MSaveToStream -3MGetSupportedSourceMimeTypes -3MGetSize -3MMask -3MSetHandles -3MReleaseBitmapHandle -3MReleaseMaskHandle -3MReleasePalette -3MCreateIntfImage -3PCanvas r -3MHandleAllocated -3PBitmapHandle rw -3PMasked rw -3PMaskHandle rw -3PPixelFormat rw -3PRawImage r -3PScanLine r -3PTransparentColor rw -3PTransparentMode rw -#lcl.Graphics.TSharedCustomBitmap #lcl.Graphics.TSharedRasterImage -1VFHandleType -1VFImage -1VFHasMask -1VFPalette -1MGetHeight -1MGetWidth -2MFreeHandle -2MFreePalette -2MFreeImage -2MReleasePalette -2MGetPixelFormat -2MIsEmpty -3MCreate + LCLIntf lclintf/index.html + TOpenParamStringProc lclintf/topenparamstringproc.html + Arc lclintf/arc.html + AngleChord lclintf/anglechord.html + BeginPaint lclintf/beginpaint.html + BitBlt lclintf/bitblt.html + CallNextHookEx lclintf/callnexthookex.html + CallWindowProc lclintf/callwindowproc.html + ClientToScreen lclintf/clienttoscreen.html + CombineRgn lclintf/combinergn.html + CreateBitmap lclintf/createbitmap.html + CreateBrushIndirect lclintf/createbrushindirect.html + CreateCaret lclintf/createcaret.html + CreateCompatibleBitmap lclintf/createcompatiblebitmap.html + CreateCompatibleDC lclintf/createcompatibledc.html + CreateDIBitmap lclintf/createdibitmap.html + CreateDIBSection lclintf/createdibsection.html + CreateEllipticRgn lclintf/createellipticrgn.html + CreateFontIndirect lclintf/createfontindirect.html + CreateFontIndirectEx lclintf/createfontindirectex.html + CreateIconIndirect lclintf/createiconindirect.html + CreatePalette lclintf/createpalette.html + CreatePatternBrush lclintf/createpatternbrush.html + CreatePenIndirect lclintf/createpenindirect.html + CreatePolygonRgn lclintf/createpolygonrgn.html + CreateRectRgn lclintf/createrectrgn.html + CreateRoundRectRgn lclintf/createroundrectrgn.html + DeleteCriticalSection lclintf/deletecriticalsection.html + DeleteDC lclintf/deletedc.html + DeleteObject lclintf/deleteobject.html + DestroyCaret lclintf/destroycaret.html + DestroyCursor lclintf/destroycursor.html + DestroyIcon lclintf/destroyicon.html + DPtoLP lclintf/dptolp.html + DrawFrameControl lclintf/drawframecontrol.html + DrawFocusRect lclintf/drawfocusrect.html + DrawEdge lclintf/drawedge.html + DrawText lclintf/drawtext.html + EnableScrollBar lclintf/enablescrollbar.html + EnableWindow lclintf/enablewindow.html + EndPaint lclintf/endpaint.html + EnterCriticalSection lclintf/entercriticalsection.html + EnumDisplayMonitors lclintf/enumdisplaymonitors.html + EnumFontFamilies lclintf/enumfontfamilies.html + EnumFontFamiliesEx lclintf/enumfontfamiliesex.html + Ellipse lclintf/ellipse.html + EqualRgn lclintf/equalrgn.html + ExcludeClipRect lclintf/excludecliprect.html + ExtCreatePen lclintf/extcreatepen.html + ExtTextOut lclintf/exttextout.html + ExtSelectClipRGN lclintf/extselectcliprgn.html + FillRect lclintf/fillrect.html + FillRgn lclintf/fillrgn.html + FloodFill lclintf/floodfill.html + FrameRect lclintf/framerect.html + GetActiveWindow lclintf/getactivewindow.html + GetBitmapBits lclintf/getbitmapbits.html + GetBkColor lclintf/getbkcolor.html + GetCapture lclintf/getcapture.html + GetCaretPos lclintf/getcaretpos.html + GetClientRect lclintf/getclientrect.html + GetClipBox lclintf/getclipbox.html + GetClipRGN lclintf/getcliprgn.html + GetCurrentObject lclintf/getcurrentobject.html + GetCursorPos lclintf/getcursorpos.html + GetCharABCWidths lclintf/getcharabcwidths.html + GetDC lclintf/getdc.html + GetDeviceCaps lclintf/getdevicecaps.html + GetDIBits lclintf/getdibits.html + GetDoubleClickTime lclintf/getdoubleclicktime.html + GetFocus lclintf/getfocus.html + GetFontLanguageInfo lclintf/getfontlanguageinfo.html + GetForegroundWindow lclintf/getforegroundwindow.html + GetIconInfo lclintf/geticoninfo.html + GetKeyState lclintf/getkeystate.html + GetMapMode lclintf/getmapmode.html + GetMonitorInfo lclintf/getmonitorinfo.html + GetObject lclintf/getobject.html + GetPaletteEntries lclintf/getpaletteentries.html + GetParent lclintf/getparent.html + GetProp lclintf/getprop.html + GetRgnBox lclintf/getrgnbox.html + GetROP2 lclintf/getrop2.html + GetScrollInfo lclintf/getscrollinfo.html + GetStockObject lclintf/getstockobject.html + GetSysColor lclintf/getsyscolor.html + GetSysColorBrush lclintf/getsyscolorbrush.html + GetSystemPaletteEntries lclintf/getsystempaletteentries.html + GetSystemMetrics lclintf/getsystemmetrics.html + GetTextColor lclintf/gettextcolor.html + GetTextExtentExPoint lclintf/gettextextentexpoint.html + GetTextExtentPoint lclintf/gettextextentpoint.html + GetTextExtentPoint32 lclintf/gettextextentpoint32.html + GetTextMetrics lclintf/gettextmetrics.html + GetViewPortExtEx lclintf/getviewportextex.html + GetViewPortOrgEx lclintf/getviewportorgex.html + GetWindowExtEx lclintf/getwindowextex.html + GetWindowLong lclintf/getwindowlong.html + GetWindowRect lclintf/getwindowrect.html + GetWindowSize lclintf/getwindowsize.html + GetWindowOrgEx lclintf/getwindoworgex.html + GradientFill lclintf/gradientfill.html + HideCaret lclintf/hidecaret.html + InitializeCriticalSection lclintf/initializecriticalsection.html + IntersectClipRect lclintf/intersectcliprect.html + InvalidateRect lclintf/invalidaterect.html + InvalidateRgn lclintf/invalidatergn.html + IsDBCSLeadByte lclintf/isdbcsleadbyte.html + IsIconic lclintf/isiconic.html + IsWindow lclintf/iswindow.html + IsWindowEnabled lclintf/iswindowenabled.html + IsWindowVisible lclintf/iswindowvisible.html + IsZoomed lclintf/iszoomed.html + LeaveCriticalSection lclintf/leavecriticalsection.html + LineTo lclintf/lineto.html + LoadBitmap lclintf/loadbitmap.html + LoadCursor lclintf/loadcursor.html + LoadIcon lclintf/loadicon.html + LPtoDP lclintf/lptodp.html + MaskBlt lclintf/maskblt.html + MessageBox lclintf/messagebox.html + MonitorFromPoint lclintf/monitorfrompoint.html + MonitorFromRect lclintf/monitorfromrect.html + MonitorFromWindow lclintf/monitorfromwindow.html + MoveToEx lclintf/movetoex.html + OffsetRgn lclintf/offsetrgn.html + PaintRgn lclintf/paintrgn.html + PeekMessage lclintf/peekmessage.html + Pie lclintf/pie.html + PolyBezier lclintf/polybezier.html + Polygon lclintf/polygon.html + Polyline lclintf/polyline.html + PostMessage lclintf/postmessage.html + PtInRegion lclintf/ptinregion.html + RealizePalette lclintf/realizepalette.html + Rectangle lclintf/rectangle.html + RectInRegion lclintf/rectinregion.html + RectVisible lclintf/rectvisible.html + RedrawWindow lclintf/redrawwindow.html + ReleaseCapture lclintf/releasecapture.html + ReleaseDC lclintf/releasedc.html + RemoveProp lclintf/removeprop.html + RestoreDC lclintf/restoredc.html + RoundRect lclintf/roundrect.html + SaveDC lclintf/savedc.html + ScreenToClient lclintf/screentoclient.html + ScrollWindowEx lclintf/scrollwindowex.html + SelectClipRGN lclintf/selectcliprgn.html + SelectObject lclintf/selectobject.html + SelectPalette lclintf/selectpalette.html + SendMessage lclintf/sendmessage.html + SetActiveWindow lclintf/setactivewindow.html + SetBkColor lclintf/setbkcolor.html + SetBkMode lclintf/setbkmode.html + SetCapture lclintf/setcapture.html + SetCaretPos lclintf/setcaretpos.html + SetCaretPosEx lclintf/setcaretposex.html + SetCursor lclintf/setcursor.html + SetCursorPos lclintf/setcursorpos.html + SetFocus lclintf/setfocus.html + SetForegroundWindow lclintf/setforegroundwindow.html + SetMapMode lclintf/setmapmode.html + SetMenu lclintf/setmenu.html + SetParent lclintf/setparent.html + SetProp lclintf/setprop.html + SetRectRgn lclintf/setrectrgn.html + SetROP2 lclintf/setrop2.html + SetScrollInfo lclintf/setscrollinfo.html + SetStretchBltMode lclintf/setstretchbltmode.html + SetSysColors lclintf/setsyscolors.html + SetTextCharacterExtra lclintf/settextcharacterextra.html + SetTextColor lclintf/settextcolor.html + SetWindowLong lclintf/setwindowlong.html + SetViewPortExtEx lclintf/setviewportextex.html + SetViewPortOrgEx lclintf/setviewportorgex.html + SetWindowExtEx lclintf/setwindowextex.html + SetWindowOrgEx lclintf/setwindoworgex.html + SetWindowPos lclintf/setwindowpos.html + SetWindowRgn lclintf/setwindowrgn.html + ShowCaret lclintf/showcaret.html + ShowScrollBar lclintf/showscrollbar.html + ShowWindow lclintf/showwindow.html + StretchBlt lclintf/stretchblt.html + StretchDIBits lclintf/stretchdibits.html + SystemParametersInfo lclintf/systemparametersinfo.html + TextOut lclintf/textout.html + UpdateWindow lclintf/updatewindow.html + WindowFromPoint lclintf/windowfrompoint.html + AdjustWindowRectEx lclintf/adjustwindowrectex.html + CharLower lclintf/charlower.html + CharLowerBuff lclintf/charlowerbuff.html + CharUpper lclintf/charupper.html + CharUpperBuff lclintf/charupperbuff.html + CopyRect lclintf/copyrect.html + CreateEllipticRgnIndirect lclintf/createellipticrgnindirect.html + CreateFont lclintf/createfont.html + CreatePen lclintf/createpen.html + CreateRectRgnIndirect lclintf/createrectrgnindirect.html + CreateSolidBrush lclintf/createsolidbrush.html + EqualRect lclintf/equalrect.html + GetScrollPos lclintf/getscrollpos.html + GetScrollRange lclintf/getscrollrange.html + GetRValue lclintf/getrvalue.html + GetGValue lclintf/getgvalue.html + GetBValue lclintf/getbvalue.html + GetRGBValues lclintf/getrgbvalues.html + GetRGBIntValues lclintf/getrgbintvalues.html + IndexToOverlayMask lclintf/indextooverlaymask.html + InflateRect lclintf/inflaterect.html + IntersectRect lclintf/intersectrect.html + IsCharAlphaNumeric lclintf/ischaralphanumeric.html + IsRectEmpty lclintf/isrectempty.html + KillTimer lclintf/killtimer.html + MakeLong lclintf/makelong.html + MakeROP4 lclintf/makerop4.html + MakeWord lclintf/makeword.html + MakeWParam lclintf/makewparam.html + MakeLParam lclintf/makelparam.html + MakeLResult lclintf/makelresult.html + OffsetRect lclintf/offsetrect.html + PtInRect lclintf/ptinrect.html + PointToSmallPoint lclintf/pointtosmallpoint.html + RGB lclintf/rgb.html + ScrollWindow lclintf/scrollwindow.html + SetRect lclintf/setrect.html + SetRectEmpty lclintf/setrectempty.html + SetScrollPos lclintf/setscrollpos.html + SetScrollRange lclintf/setscrollrange.html + SetTimer lclintf/settimer.html + SmallPointToPoint lclintf/smallpointtopoint.html + SubtractRect lclintf/subtractrect.html + UnionRect lclintf/unionrect.html + AddEventHandler lclintf/addeventhandler.html + AddProcessEventHandler lclintf/addprocesseventhandler.html + AddPipeEventHandler lclintf/addpipeeventhandler.html + AllocateHWnd lclintf/allocatehwnd.html + AskUser lclintf/askuser.html + CallDefaultWndHandler lclintf/calldefaultwndhandler.html + ClipboardFormatToMimeType lclintf/clipboardformattomimetype.html + ClipboardGetData lclintf/clipboardgetdata.html + ClipboardGetFormats lclintf/clipboardgetformats.html + ClipboardGetOwnerShip lclintf/clipboardgetownership.html + ClipboardRegisterFormat lclintf/clipboardregisterformat.html + CreateEmptyRegion lclintf/createemptyregion.html + CreatePixmapIndirect lclintf/createpixmapindirect.html + CreateRegionCopy lclintf/createregioncopy.html + CreateRubberBand lclintf/createrubberband.html + CreateStandardCursor lclintf/createstandardcursor.html + DCClipRegionValid lclintf/dcclipregionvalid.html + DeallocateHWnd lclintf/deallocatehwnd.html + DestroyRubberBand lclintf/destroyrubberband.html + DrawDefaultDockImage lclintf/drawdefaultdockimage.html + DrawGrid lclintf/drawgrid.html + ExtUTF8Out lclintf/extutf8out.html + FontCanUTF8 lclintf/fontcanutf8.html + FontIsMonoSpace lclintf/fontismonospace.html + Frame3d lclintf/frame3d.html + GetAcceleratorString lclintf/getacceleratorstring.html + GetAvailableNativeCanvasTypes lclintf/getavailablenativecanvastypes.html + GetAvailableNativeHandleTypes lclintf/getavailablenativehandletypes.html + GetCaretRespondToFocus lclintf/getcaretrespondtofocus.html + GetClientBounds lclintf/getclientbounds.html + GetCmdLineParamDescForInterface lclintf/getcmdlineparamdescforinterface.html + GetControlConstraints lclintf/getcontrolconstraints.html + GetDCOriginRelativeToWindow lclintf/getdcoriginrelativetowindow.html + GetDesignerDC lclintf/getdesignerdc.html + GetDeviceSize lclintf/getdevicesize.html + GetLCLOwnerObject lclintf/getlclownerobject.html + GetNativeCanvas lclintf/getnativecanvas.html + GetNativeHandle lclintf/getnativehandle.html + GetScrollBarSize lclintf/getscrollbarsize.html + GetScrollbarVisible lclintf/getscrollbarvisible.html + GetWindowRelativePosition lclintf/getwindowrelativeposition.html + IntfSendsUTF8KeyPress lclintf/intfsendsutf8keypress.html + InvalidateFrame lclintf/invalidateframe.html + IsDesignerDC lclintf/isdesignerdc.html + IsMobilePlatform lclintf/ismobileplatform.html + IsCDIntfControl lclintf/iscdintfcontrol.html + MoveWindowOrgEx lclintf/movewindoworgex.html + PromptUser lclintf/promptuser.html + PromptUserAtXY lclintf/promptuseratxy.html + RadialArc lclintf/radialarc.html + RadialChord lclintf/radialchord.html + RadialPie lclintf/radialpie.html + RawImage_CreateBitmaps lclintf/rawimage_createbitmaps.html + RawImage_DescriptionFromBitmap lclintf/rawimage_descriptionfrombitmap.html + RawImage_DescriptionFromDevice lclintf/rawimage_descriptionfromdevice.html + RawImage_FromBitmap lclintf/rawimage_frombitmap.html + RawImage_FromDevice lclintf/rawimage_fromdevice.html + RawImage_QueryDescription lclintf/rawimage_querydescription.html + RegroupMenuItem lclintf/regroupmenuitem.html + ReleaseDesignerDC lclintf/releasedesignerdc.html + RemoveEventHandler lclintf/removeeventhandler.html + RemoveProcessEventHandler lclintf/removeprocesseventhandler.html + RemovePipeEventHandler lclintf/removepipeeventhandler.html + RequestInput lclintf/requestinput.html + SendCachedLCLMessages lclintf/sendcachedlclmessages.html + SetCaretRespondToFocus lclintf/setcaretrespondtofocus.html + SetComboMinDropDownSize lclintf/setcombomindropdownsize.html + SetEventHandlerFlags lclintf/seteventhandlerflags.html + SetRubberBandRect lclintf/setrubberbandrect.html + ShowSelectItemDialog lclintf/showselectitemdialog.html + StretchMaskBlt lclintf/stretchmaskblt.html + TextUTF8Out lclintf/textutf8out.html + ExcludeClipRgn lclintf/excludecliprgn.html + NotifyUser lclintf/notifyuser.html + NotifyUserAtXY lclintf/notifyuseratxy.html + PredefinedClipboardFormat lclintf/predefinedclipboardformat.html + MsgKeyDataToShiftState lclintf/msgkeydatatoshiftstate.html + GetTickCount lclintf/gettickcount.html + GetTickCount64 lclintf/gettickcount64.html + FindDefaultBrowser lclintf/finddefaultbrowser.html + OpenURL lclintf/openurl.html + OpenDocument lclintf/opendocument.html + OnShowSelectItemDialogResult lclintf/onshowselectitemdialogresult.html + OnListViewDialogResult lclintf/onlistviewdialogresult.html + OpenURLWidgetsetImplementation lclintf/openurlwidgetsetimplementation.html + OpenDocumentWidgetsetImplementation lclintf/opendocumentwidgetsetimplementation.html + GraphType graphtype/index.html + DefaultByteOrder graphtype/defaultbyteorder.html + TGraphicsColor graphtype/tgraphicscolor.html + TGraphicsFillStyle graphtype/tgraphicsfillstyle.html + TGraphicsBevelCut graphtype/tgraphicsbevelcut.html + TGraphicsDrawEffect graphtype/tgraphicsdraweffect.html + TRawImageColorFormat graphtype/trawimagecolorformat.html + TRawImageByteOrder graphtype/trawimagebyteorder.html + TRawImageBitOrder graphtype/trawimagebitorder.html + TRawImageLineEnd graphtype/trawimagelineend.html + TRawImageLineOrder graphtype/trawimagelineorder.html + TRawImageQueryFlag graphtype/trawimagequeryflag.html + TRawImageQueryFlags graphtype/trawimagequeryflags.html + PRawImageDescription graphtype/prawimagedescription.html + TRawImagePosition graphtype/trawimageposition.html + PRawImagePosition graphtype/prawimageposition.html + PRawImage graphtype/prawimage.html + PRawImageLineStarts graphtype/prawimagelinestarts.html + TRawImageDescription graphtype/trawimagedescription.html + Format graphtype/trawimagedescription.format.html + Width graphtype/trawimagedescription.width.html + Height graphtype/trawimagedescription.height.html + Depth graphtype/trawimagedescription.depth.html + BitOrder graphtype/trawimagedescription.bitorder.html + ByteOrder graphtype/trawimagedescription.byteorder.html + LineOrder graphtype/trawimagedescription.lineorder.html + LineEnd graphtype/trawimagedescription.lineend.html + BitsPerPixel graphtype/trawimagedescription.bitsperpixel.html + RedPrec graphtype/trawimagedescription.redprec.html + RedShift graphtype/trawimagedescription.redshift.html + GreenPrec graphtype/trawimagedescription.greenprec.html + GreenShift graphtype/trawimagedescription.greenshift.html + BluePrec graphtype/trawimagedescription.blueprec.html + BlueShift graphtype/trawimagedescription.blueshift.html + AlphaPrec graphtype/trawimagedescription.alphaprec.html + AlphaShift graphtype/trawimagedescription.alphashift.html + MaskBitsPerPixel graphtype/trawimagedescription.maskbitsperpixel.html + MaskShift graphtype/trawimagedescription.maskshift.html + MaskLineEnd graphtype/trawimagedescription.masklineend.html + MaskBitOrder graphtype/trawimagedescription.maskbitorder.html + PaletteColorCount graphtype/trawimagedescription.palettecolorcount.html + PaletteBitsPerIndex graphtype/trawimagedescription.palettebitsperindex.html + PaletteShift graphtype/trawimagedescription.paletteshift.html + PaletteLineEnd graphtype/trawimagedescription.palettelineend.html + PaletteBitOrder graphtype/trawimagedescription.palettebitorder.html + PaletteByteOrder graphtype/trawimagedescription.palettebyteorder.html + Init graphtype/trawimagedescription.init.html + Init_BPP1 graphtype/trawimagedescription.init_bpp1.html + Init_BPP16_R5G6B5 graphtype/trawimagedescription.init_bpp16_r5g6b5.html + Init_BPP24_R8G8B8_BIO_TTB graphtype/trawimagedescription.init_bpp24_r8g8b8_bio_ttb.html + Init_BPP24_R8G8B8_BIO_TTB_UpsideDown graphtype/trawimagedescription.init_bpp24_r8g8b8_bio_ttb_upsidedown.html + Init_BPP32_A8R8G8B8_BIO_TTB graphtype/trawimagedescription.init_bpp32_a8r8g8b8_bio_ttb.html + Init_BPP32_R8G8B8A8_BIO_TTB graphtype/trawimagedescription.init_bpp32_r8g8b8a8_bio_ttb.html + Init_BPP24_B8G8R8_BIO_TTB graphtype/trawimagedescription.init_bpp24_b8g8r8_bio_ttb.html + Init_BPP24_B8G8R8_M1_BIO_TTB graphtype/trawimagedescription.init_bpp24_b8g8r8_m1_bio_ttb.html + Init_BPP32_B8G8R8_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8_bio_ttb.html + Init_BPP32_B8G8R8_M1_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8_m1_bio_ttb.html + Init_BPP32_B8G8R8A8_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8a8_bio_ttb.html + Init_BPP32_B8G8R8A8_M1_BIO_TTB graphtype/trawimagedescription.init_bpp32_b8g8r8a8_m1_bio_ttb.html + GetDescriptionFromMask graphtype/trawimagedescription.getdescriptionfrommask.html + GetDescriptionFromAlpha graphtype/trawimagedescription.getdescriptionfromalpha.html + GetRGBIndices graphtype/trawimagedescription.getrgbindices.html + BytesPerLine graphtype/trawimagedescription.bytesperline.html + BitsPerLine graphtype/trawimagedescription.bitsperline.html + MaskBytesPerLine graphtype/trawimagedescription.maskbytesperline.html + MaskBitsPerLine graphtype/trawimagedescription.maskbitsperline.html + AsString graphtype/trawimagedescription.asstring.html + IsEqual graphtype/trawimagedescription.isequal.html + TRawImage graphtype/trawimage.html + Description graphtype/trawimage.description.html + Data graphtype/trawimage.data.html + DataSize graphtype/trawimage.datasize.html + Mask graphtype/trawimage.mask.html + MaskSize graphtype/trawimage.masksize.html + Palette graphtype/trawimage.palette.html + PaletteSize graphtype/trawimage.palettesize.html + Init graphtype/trawimage.init.html + CreateData graphtype/trawimage.createdata.html + FreeData graphtype/trawimage.freedata.html + ReleaseData graphtype/trawimage.releasedata.html + ExtractRect graphtype/trawimage.extractrect.html + GetLineStart graphtype/trawimage.getlinestart.html + PerformEffect graphtype/trawimage.performeffect.html + ReadBits graphtype/trawimage.readbits.html + ReadChannels graphtype/trawimage.readchannels.html + ReadMask graphtype/trawimage.readmask.html + WriteBits graphtype/trawimage.writebits.html + WriteChannels graphtype/trawimage.writechannels.html + WriteMask graphtype/trawimage.writemask.html + IsMasked graphtype/trawimage.ismasked.html + IsTransparent graphtype/trawimage.istransparent.html + IsEqual graphtype/trawimage.isequal.html + TRawImageLineStarts graphtype/trawimagelinestarts.html + Positions graphtype/trawimagelinestarts.positions.html + Init graphtype/trawimagelinestarts.init.html + GetPosition graphtype/trawimagelinestarts.getposition.html + GetBytesPerLine graphtype/getbytesperline.html + GetBitsPerLine graphtype/getbitsperline.html + CopyImageData graphtype/copyimagedata.html + RawImageQueryFlagsToString graphtype/rawimagequeryflagstostring.html + MissingBits graphtype/missingbits.html + InterfaceBase interfacebase/index.html + LCLPlatformDirNames interfacebase/lclplatformdirnames.html + LCL_CAPABILITY_NO interfacebase/lcl_capability_no.html + LCL_CAPABILITY_YES interfacebase/lcl_capability_yes.html + PEventHandler interfacebase/peventhandler.html + PProcessEventHandler interfacebase/pprocesseventhandler.html + PPipeEventHandler interfacebase/ppipeeventhandler.html + PSocketEventHandler interfacebase/psocketeventhandler.html + TChildExitReason interfacebase/tchildexitreason.html + TPipeReason interfacebase/tpipereason.html + TPipeReasons interfacebase/tpipereasons.html + TApplicationMainLoop interfacebase/tapplicationmainloop.html + TWaitHandleEvent interfacebase/twaithandleevent.html + TChildExitEvent interfacebase/tchildexitevent.html + TPipeEvent interfacebase/tpipeevent.html + TSocketEvent interfacebase/tsocketevent.html + TLCLWndMethod interfacebase/tlclwndmethod.html + TLCLPlatform interfacebase/tlclplatform.html + TLCLPlatforms interfacebase/tlclplatforms.html + TLCLCapability interfacebase/tlclcapability.html + TWSTimerProc interfacebase/twstimerproc.html + TWidgetSetClass interfacebase/twidgetsetclass.html + TInputDialogFunction interfacebase/tinputdialogfunction.html + TPromptDialogFunction interfacebase/tpromptdialogfunction.html + TQuestionDialogFunction interfacebase/tquestiondialogfunction.html + TLoadBitmapFunction interfacebase/tloadbitmapfunction.html + TLoadCursorFunction interfacebase/tloadcursorfunction.html + TLoadIconFunction interfacebase/tloadiconfunction.html + TDialogButton interfacebase/tdialogbutton.html + GetDisplayName interfacebase/tdialogbutton.getdisplayname.html + Create interfacebase/tdialogbutton.create.html + Caption interfacebase/tdialogbutton.caption.html + Cancel interfacebase/tdialogbutton.cancel.html + Default interfacebase/tdialogbutton.default.html + ModalResult interfacebase/tdialogbutton.modalresult.html + SetCaption + TDialogButtons interfacebase/tdialogbuttons.html + Destroy interfacebase/tdialogbuttons.destroy.html + Add interfacebase/tdialogbuttons.add.html + FindButton interfacebase/tdialogbuttons.findbutton.html + DefaultButton interfacebase/tdialogbuttons.defaultbutton.html + CancelButton interfacebase/tdialogbuttons.cancelbutton.html + Items interfacebase/tdialogbuttons.items.html + FCancelButton + FDefaultButton + GetItem + SetCancelButton + SetDefaultButton + SetItem + TWidgetSet interfacebase/twidgetset.html + PassCmdLineOptions interfacebase/twidgetset.passcmdlineoptions.html + Create interfacebase/twidgetset.create.html + BeforeDestruction interfacebase/twidgetset.beforedestruction.html + AppInit interfacebase/twidgetset.appinit.html + AppRun interfacebase/twidgetset.apprun.html + AppWaitMessage interfacebase/twidgetset.appwaitmessage.html + AppProcessMessages interfacebase/twidgetset.appprocessmessages.html + AppTerminate interfacebase/twidgetset.appterminate.html + AppMinimize interfacebase/twidgetset.appminimize.html + AppRestore interfacebase/twidgetset.apprestore.html + AppBringToFront interfacebase/twidgetset.appbringtofront.html + AppSetIcon interfacebase/twidgetset.appseticon.html + AppSetTitle interfacebase/twidgetset.appsettitle.html + AppSetVisible interfacebase/twidgetset.appsetvisible.html + AppRemoveStayOnTopFlags interfacebase/twidgetset.appremovestayontopflags.html + AppRestoreStayOnTopFlags interfacebase/twidgetset.apprestorestayontopflags.html + AppSetMainFormOnTaskBar interfacebase/twidgetset.appsetmainformontaskbar.html + LCLPlatform interfacebase/twidgetset.lclplatform.html + GetLCLCapability interfacebase/twidgetset.getlclcapability.html + DCGetPixel interfacebase/twidgetset.dcgetpixel.html + DCSetPixel interfacebase/twidgetset.dcsetpixel.html + DCRedraw interfacebase/twidgetset.dcredraw.html + DCSetAntialiasing interfacebase/twidgetset.dcsetantialiasing.html + SetDesigning interfacebase/twidgetset.setdesigning.html + InitStockFont interfacebase/twidgetset.initstockfont.html + IsHelpKey interfacebase/twidgetset.ishelpkey.html + CreateTimer interfacebase/twidgetset.createtimer.html + DestroyTimer interfacebase/twidgetset.destroytimer.html + AppHandle interfacebase/twidgetset.apphandle.html + Arc interfacebase/twidgetset.arc.html + AngleChord interfacebase/twidgetset.anglechord.html + BeginPaint interfacebase/twidgetset.beginpaint.html + BitBlt interfacebase/twidgetset.bitblt.html + CallNextHookEx interfacebase/twidgetset.callnexthookex.html + CallWindowProc interfacebase/twidgetset.callwindowproc.html + ClientToScreen interfacebase/twidgetset.clienttoscreen.html + CombineRgn interfacebase/twidgetset.combinergn.html + CreateBitmap interfacebase/twidgetset.createbitmap.html + CreateBrushIndirect interfacebase/twidgetset.createbrushindirect.html + CreateCaret interfacebase/twidgetset.createcaret.html + CreateCompatibleBitmap interfacebase/twidgetset.createcompatiblebitmap.html + CreateCompatibleDC interfacebase/twidgetset.createcompatibledc.html + CreateDIBitmap interfacebase/twidgetset.createdibitmap.html + CreateDIBSection interfacebase/twidgetset.createdibsection.html + CreateEllipticRgn interfacebase/twidgetset.createellipticrgn.html + CreateFontIndirect interfacebase/twidgetset.createfontindirect.html + CreateFontIndirectEx interfacebase/twidgetset.createfontindirectex.html + CreateIconIndirect interfacebase/twidgetset.createiconindirect.html + CreatePalette interfacebase/twidgetset.createpalette.html + CreatePatternBrush interfacebase/twidgetset.createpatternbrush.html + CreatePenIndirect interfacebase/twidgetset.createpenindirect.html + CreatePolygonRgn interfacebase/twidgetset.createpolygonrgn.html + CreateRectRgn interfacebase/twidgetset.createrectrgn.html + CreateRoundRectRgn interfacebase/twidgetset.createroundrectrgn.html + DeleteCriticalSection interfacebase/twidgetset.deletecriticalsection.html + DeleteDC interfacebase/twidgetset.deletedc.html + DeleteObject interfacebase/twidgetset.deleteobject.html + DestroyCaret interfacebase/twidgetset.destroycaret.html + DestroyCursor interfacebase/twidgetset.destroycursor.html + DestroyIcon interfacebase/twidgetset.destroyicon.html + DPtoLP interfacebase/twidgetset.dptolp.html + DrawFrameControl interfacebase/twidgetset.drawframecontrol.html + DrawFocusRect interfacebase/twidgetset.drawfocusrect.html + DrawEdge interfacebase/twidgetset.drawedge.html + DrawText interfacebase/twidgetset.drawtext.html + EnableScrollBar interfacebase/twidgetset.enablescrollbar.html + EnableWindow interfacebase/twidgetset.enablewindow.html + EndPaint interfacebase/twidgetset.endpaint.html + EnterCriticalSection interfacebase/twidgetset.entercriticalsection.html + EnumDisplayMonitors interfacebase/twidgetset.enumdisplaymonitors.html + EnumFontFamilies interfacebase/twidgetset.enumfontfamilies.html + EnumFontFamiliesEx interfacebase/twidgetset.enumfontfamiliesex.html + Ellipse interfacebase/twidgetset.ellipse.html + EqualRgn interfacebase/twidgetset.equalrgn.html + ExcludeClipRect interfacebase/twidgetset.excludecliprect.html + ExtCreatePen interfacebase/twidgetset.extcreatepen.html + ExtTextOut interfacebase/twidgetset.exttextout.html + ExtSelectClipRGN interfacebase/twidgetset.extselectcliprgn.html + FillRect interfacebase/twidgetset.fillrect.html + FillRgn interfacebase/twidgetset.fillrgn.html + FloodFill interfacebase/twidgetset.floodfill.html + FrameRect interfacebase/twidgetset.framerect.html + GetActiveWindow interfacebase/twidgetset.getactivewindow.html + GetBitmapBits interfacebase/twidgetset.getbitmapbits.html + GetBkColor interfacebase/twidgetset.getbkcolor.html + GetCapture interfacebase/twidgetset.getcapture.html + GetCaretPos interfacebase/twidgetset.getcaretpos.html + GetClientRect interfacebase/twidgetset.getclientrect.html + GetClipBox interfacebase/twidgetset.getclipbox.html + GetClipRGN interfacebase/twidgetset.getcliprgn.html + GetCurrentObject interfacebase/twidgetset.getcurrentobject.html + GetCursorPos interfacebase/twidgetset.getcursorpos.html + GetCharABCWidths interfacebase/twidgetset.getcharabcwidths.html + GetDC interfacebase/twidgetset.getdc.html + GetDeviceCaps interfacebase/twidgetset.getdevicecaps.html + GetDIBits interfacebase/twidgetset.getdibits.html + GetDoubleClickTime interfacebase/twidgetset.getdoubleclicktime.html + GetFocus interfacebase/twidgetset.getfocus.html + GetFontLanguageInfo interfacebase/twidgetset.getfontlanguageinfo.html + GetForegroundWindow interfacebase/twidgetset.getforegroundwindow.html + GetIconInfo interfacebase/twidgetset.geticoninfo.html + GetKeyState interfacebase/twidgetset.getkeystate.html + GetMapMode interfacebase/twidgetset.getmapmode.html + GetMonitorInfo interfacebase/twidgetset.getmonitorinfo.html + GetObject interfacebase/twidgetset.getobject.html + GetPaletteEntries interfacebase/twidgetset.getpaletteentries.html + GetParent interfacebase/twidgetset.getparent.html + GetProp interfacebase/twidgetset.getprop.html + GetRgnBox interfacebase/twidgetset.getrgnbox.html + GetROP2 interfacebase/twidgetset.getrop2.html + GetScrollInfo interfacebase/twidgetset.getscrollinfo.html + GetStockObject interfacebase/twidgetset.getstockobject.html + GetSysColor interfacebase/twidgetset.getsyscolor.html + GetSysColorBrush interfacebase/twidgetset.getsyscolorbrush.html + GetSystemPaletteEntries interfacebase/twidgetset.getsystempaletteentries.html + GetSystemMetrics interfacebase/twidgetset.getsystemmetrics.html + GetTextColor interfacebase/twidgetset.gettextcolor.html + GetTextExtentExPoint interfacebase/twidgetset.gettextextentexpoint.html + GetTextExtentPoint interfacebase/twidgetset.gettextextentpoint.html + GetTextMetrics interfacebase/twidgetset.gettextmetrics.html + GetViewPortExtEx interfacebase/twidgetset.getviewportextex.html + GetViewPortOrgEx interfacebase/twidgetset.getviewportorgex.html + GetWindowExtEx interfacebase/twidgetset.getwindowextex.html + GetWindowLong interfacebase/twidgetset.getwindowlong.html + GetWindowRect interfacebase/twidgetset.getwindowrect.html + GetWindowSize interfacebase/twidgetset.getwindowsize.html + GetWindowOrgEx interfacebase/twidgetset.getwindoworgex.html + GradientFill interfacebase/twidgetset.gradientfill.html + HideCaret interfacebase/twidgetset.hidecaret.html + InitializeCriticalSection interfacebase/twidgetset.initializecriticalsection.html + IntersectClipRect interfacebase/twidgetset.intersectcliprect.html + InvalidateRect interfacebase/twidgetset.invalidaterect.html + InvalidateRgn interfacebase/twidgetset.invalidatergn.html + IsDBCSLeadByte interfacebase/twidgetset.isdbcsleadbyte.html + IsIconic interfacebase/twidgetset.isiconic.html + IsWindow interfacebase/twidgetset.iswindow.html + IsWindowEnabled interfacebase/twidgetset.iswindowenabled.html + IsWindowVisible interfacebase/twidgetset.iswindowvisible.html + IsZoomed interfacebase/twidgetset.iszoomed.html + LeaveCriticalSection interfacebase/twidgetset.leavecriticalsection.html + LineTo interfacebase/twidgetset.lineto.html + LoadBitmap interfacebase/twidgetset.loadbitmap.html + LoadCursor interfacebase/twidgetset.loadcursor.html + LoadIcon interfacebase/twidgetset.loadicon.html + LPtoDP interfacebase/twidgetset.lptodp.html + MaskBlt interfacebase/twidgetset.maskblt.html + MessageBox interfacebase/twidgetset.messagebox.html + MonitorFromPoint interfacebase/twidgetset.monitorfrompoint.html + MonitorFromWindow interfacebase/twidgetset.monitorfromwindow.html + MoveToEx interfacebase/twidgetset.movetoex.html + OffsetRgn interfacebase/twidgetset.offsetrgn.html + PaintRgn interfacebase/twidgetset.paintrgn.html + PeekMessage interfacebase/twidgetset.peekmessage.html + Pie interfacebase/twidgetset.pie.html + PolyBezier interfacebase/twidgetset.polybezier.html + Polygon interfacebase/twidgetset.polygon.html + Polyline interfacebase/twidgetset.polyline.html + PostMessage interfacebase/twidgetset.postmessage.html + PtInRegion interfacebase/twidgetset.ptinregion.html + RealizePalette interfacebase/twidgetset.realizepalette.html + Rectangle interfacebase/twidgetset.rectangle.html + RectInRegion interfacebase/twidgetset.rectinregion.html + RectVisible interfacebase/twidgetset.rectvisible.html + RedrawWindow interfacebase/twidgetset.redrawwindow.html + ReleaseCapture interfacebase/twidgetset.releasecapture.html + ReleaseDC interfacebase/twidgetset.releasedc.html + RemoveProp interfacebase/twidgetset.removeprop.html + RestoreDC interfacebase/twidgetset.restoredc.html + RoundRect interfacebase/twidgetset.roundrect.html + SaveDC interfacebase/twidgetset.savedc.html + ScreenToClient interfacebase/twidgetset.screentoclient.html + ScrollWindowEx interfacebase/twidgetset.scrollwindowex.html + SelectClipRGN interfacebase/twidgetset.selectcliprgn.html + SelectObject interfacebase/twidgetset.selectobject.html + SelectPalette interfacebase/twidgetset.selectpalette.html + SendMessage interfacebase/twidgetset.sendmessage.html + SetActiveWindow interfacebase/twidgetset.setactivewindow.html + SetBkColor interfacebase/twidgetset.setbkcolor.html + SetBkMode interfacebase/twidgetset.setbkmode.html + SetCapture interfacebase/twidgetset.setcapture.html + SetCaretPos interfacebase/twidgetset.setcaretpos.html + SetCaretPosEx interfacebase/twidgetset.setcaretposex.html + SetCursor interfacebase/twidgetset.setcursor.html + SetCursorPos interfacebase/twidgetset.setcursorpos.html + SetFocus interfacebase/twidgetset.setfocus.html + SetForegroundWindow interfacebase/twidgetset.setforegroundwindow.html + SetMapMode interfacebase/twidgetset.setmapmode.html + SetMenu interfacebase/twidgetset.setmenu.html + SetParent interfacebase/twidgetset.setparent.html + SetProp interfacebase/twidgetset.setprop.html + SetRectRgn interfacebase/twidgetset.setrectrgn.html + SetROP2 interfacebase/twidgetset.setrop2.html + SetScrollInfo interfacebase/twidgetset.setscrollinfo.html + SetStretchBltMode interfacebase/twidgetset.setstretchbltmode.html + SetSysColors interfacebase/twidgetset.setsyscolors.html + SetTextCharacterExtra interfacebase/twidgetset.settextcharacterextra.html + SetTextColor interfacebase/twidgetset.settextcolor.html + SetWindowLong interfacebase/twidgetset.setwindowlong.html + SetViewPortExtEx interfacebase/twidgetset.setviewportextex.html + SetViewPortOrgEx interfacebase/twidgetset.setviewportorgex.html + SetWindowExtEx interfacebase/twidgetset.setwindowextex.html + SetWindowOrgEx interfacebase/twidgetset.setwindoworgex.html + SetWindowPos interfacebase/twidgetset.setwindowpos.html + SetWindowRgn interfacebase/twidgetset.setwindowrgn.html + ShowCaret interfacebase/twidgetset.showcaret.html + ShowScrollBar interfacebase/twidgetset.showscrollbar.html + ShowWindow interfacebase/twidgetset.showwindow.html + StretchBlt interfacebase/twidgetset.stretchblt.html + StretchDIBits interfacebase/twidgetset.stretchdibits.html + SystemParametersInfo interfacebase/twidgetset.systemparametersinfo.html + TextOut interfacebase/twidgetset.textout.html + UpdateWindow interfacebase/twidgetset.updatewindow.html + WindowFromPoint interfacebase/twidgetset.windowfrompoint.html + AddEventHandler interfacebase/twidgetset.addeventhandler.html + AddProcessEventHandler interfacebase/twidgetset.addprocesseventhandler.html + AddPipeEventHandler interfacebase/twidgetset.addpipeeventhandler.html + AllocateHWnd interfacebase/twidgetset.allocatehwnd.html + AskUser interfacebase/twidgetset.askuser.html + CallDefaultWndHandler interfacebase/twidgetset.calldefaultwndhandler.html + ClipboardFormatToMimeType interfacebase/twidgetset.clipboardformattomimetype.html + ClipboardGetData interfacebase/twidgetset.clipboardgetdata.html + ClipboardGetFormats interfacebase/twidgetset.clipboardgetformats.html + ClipboardGetOwnerShip interfacebase/twidgetset.clipboardgetownership.html + ClipboardRegisterFormat interfacebase/twidgetset.clipboardregisterformat.html + CreateEmptyRegion interfacebase/twidgetset.createemptyregion.html + CreatePixmapIndirect interfacebase/twidgetset.createpixmapindirect.html + CreateRegionCopy interfacebase/twidgetset.createregioncopy.html + CreateRubberBand interfacebase/twidgetset.createrubberband.html + CreateStandardCursor interfacebase/twidgetset.createstandardcursor.html + DCClipRegionValid interfacebase/twidgetset.dcclipregionvalid.html + DeallocateHWnd interfacebase/twidgetset.deallocatehwnd.html + DestroyRubberBand interfacebase/twidgetset.destroyrubberband.html + DrawDefaultDockImage interfacebase/twidgetset.drawdefaultdockimage.html + DrawGrid interfacebase/twidgetset.drawgrid.html + FontCanUTF8 interfacebase/twidgetset.fontcanutf8.html + FontIsMonoSpace interfacebase/twidgetset.fontismonospace.html + Frame3d interfacebase/twidgetset.frame3d.html + GetAcceleratorString interfacebase/twidgetset.getacceleratorstring.html + GetAvailableNativeCanvasTypes interfacebase/twidgetset.getavailablenativecanvastypes.html + GetAvailableNativeHandleTypes interfacebase/twidgetset.getavailablenativehandletypes.html + GetCaretRespondToFocus interfacebase/twidgetset.getcaretrespondtofocus.html + GetClientBounds interfacebase/twidgetset.getclientbounds.html + GetCmdLineParamDescForInterface interfacebase/twidgetset.getcmdlineparamdescforinterface.html + GetControlConstraints interfacebase/twidgetset.getcontrolconstraints.html + GetDCOriginRelativeToWindow interfacebase/twidgetset.getdcoriginrelativetowindow.html + GetDesignerDC interfacebase/twidgetset.getdesignerdc.html + GetDeviceSize interfacebase/twidgetset.getdevicesize.html + GetLCLOwnerObject interfacebase/twidgetset.getlclownerobject.html + GetNativeCanvas interfacebase/twidgetset.getnativecanvas.html + GetNativeHandle interfacebase/twidgetset.getnativehandle.html + GetScrollBarSize interfacebase/twidgetset.getscrollbarsize.html + GetScrollbarVisible interfacebase/twidgetset.getscrollbarvisible.html + GetWindowRelativePosition interfacebase/twidgetset.getwindowrelativeposition.html + IntfSendsUTF8KeyPress interfacebase/twidgetset.intfsendsutf8keypress.html + InvalidateFrame interfacebase/twidgetset.invalidateframe.html + IsDesignerDC interfacebase/twidgetset.isdesignerdc.html + IsMobilePlatform interfacebase/twidgetset.ismobileplatform.html + IsCDIntfControl interfacebase/twidgetset.iscdintfcontrol.html + MoveWindowOrgEx interfacebase/twidgetset.movewindoworgex.html + PromptUser interfacebase/twidgetset.promptuser.html + PromptUserAtXY interfacebase/twidgetset.promptuseratxy.html + RadialArc interfacebase/twidgetset.radialarc.html + RadialChord interfacebase/twidgetset.radialchord.html + RadialPie interfacebase/twidgetset.radialpie.html + RawImage_CreateBitmaps interfacebase/twidgetset.rawimage_createbitmaps.html + RawImage_DescriptionFromBitmap interfacebase/twidgetset.rawimage_descriptionfrombitmap.html + RawImage_DescriptionFromDevice interfacebase/twidgetset.rawimage_descriptionfromdevice.html + RawImage_FromBitmap interfacebase/twidgetset.rawimage_frombitmap.html + RawImage_FromDevice interfacebase/twidgetset.rawimage_fromdevice.html + RawImage_QueryDescription interfacebase/twidgetset.rawimage_querydescription.html + RegroupMenuItem interfacebase/twidgetset.regroupmenuitem.html + ReleaseDesignerDC interfacebase/twidgetset.releasedesignerdc.html + RemoveEventHandler interfacebase/twidgetset.removeeventhandler.html + RemoveProcessEventHandler interfacebase/twidgetset.removeprocesseventhandler.html + RemovePipeEventHandler interfacebase/twidgetset.removepipeeventhandler.html + RequestInput interfacebase/twidgetset.requestinput.html + SendCachedLCLMessages interfacebase/twidgetset.sendcachedlclmessages.html + SetCaretRespondToFocus interfacebase/twidgetset.setcaretrespondtofocus.html + SetComboMinDropDownSize interfacebase/twidgetset.setcombomindropdownsize.html + SetEventHandlerFlags interfacebase/twidgetset.seteventhandlerflags.html + SetRubberBandRect interfacebase/twidgetset.setrubberbandrect.html + ShowSelectItemDialog interfacebase/twidgetset.showselectitemdialog.html + StretchMaskBlt interfacebase/twidgetset.stretchmaskblt.html + TextUTF8Out interfacebase/twidgetset.textutf8out.html + ThemeServices interfacebase/twidgetset.themeservices.html + FThemeServices + CreateThemeServices + GetAppHandle + SetAppHandle + GetTextExtentPoint32 + MonitorFromRect + ExtUTF8Out + EInterfaceException interfacebase/einterfaceexception.html + EInterfaceError interfacebase/einterfaceerror.html + EInterfaceCritical interfacebase/einterfacecritical.html + EInterfaceWarning interfacebase/einterfacewarning.html + InputDialogFunction interfacebase/inputdialogfunction.html + PromptDialogFunction interfacebase/promptdialogfunction.html + QuestionDialogFunction interfacebase/questiondialogfunction.html + LoadBitmapFunction interfacebase/loadbitmapfunction.html + LoadCursorFunction interfacebase/loadcursorfunction.html + LoadIconFunction interfacebase/loadiconfunction.html + WidgetSet interfacebase/widgetset.html + LMessages lmessages/index.html + LM_USER lmessages/lm_user.html + WM_USER lmessages/wm_user.html + LM_LCL lmessages/lm_lcl.html + LM_ACTIVATEITEM lmessages/lm_activateitem.html + LM_CHANGED lmessages/lm_changed.html + LM_FOCUS lmessages/lm_focus.html + LM_CLICKED lmessages/lm_clicked.html + LM_RELEASED lmessages/lm_released.html + LM_ENTER lmessages/lm_enter.html + LM_LEAVE lmessages/lm_leave.html + LM_CHECKRESIZE lmessages/lm_checkresize.html + LM_SETEDITABLE lmessages/lm_seteditable.html + LM_MOVEWORD lmessages/lm_moveword.html + LM_MOVEPAGE lmessages/lm_movepage.html + LM_MOVETOROW lmessages/lm_movetorow.html + LM_MOVETOCOLUMN lmessages/lm_movetocolumn.html + LM_KILLCHAR lmessages/lm_killchar.html + LM_KILLWORD lmessages/lm_killword.html + LM_KILLLINE lmessages/lm_killline.html + LM_CONFIGUREEVENT lmessages/lm_configureevent.html + LM_EXIT lmessages/lm_exit.html + LM_CLOSEQUERY lmessages/lm_closequery.html + LM_DRAGSTART lmessages/lm_dragstart.html + LM_QUIT lmessages/lm_quit.html + LM_MONTHCHANGED lmessages/lm_monthchanged.html + LM_YEARCHANGED lmessages/lm_yearchanged.html + LM_DAYCHANGED lmessages/lm_daychanged.html + LM_MOUSEFIRST2 lmessages/lm_mousefirst2.html + LM_LBUTTONTRIPLECLK lmessages/lm_lbuttontripleclk.html + LM_LBUTTONQUADCLK lmessages/lm_lbuttonquadclk.html + LM_MBUTTONTRIPLECLK lmessages/lm_mbuttontripleclk.html + LM_MBUTTONQUADCLK lmessages/lm_mbuttonquadclk.html + LM_RBUTTONTRIPLECLK lmessages/lm_rbuttontripleclk.html + LM_RBUTTONQUADCLK lmessages/lm_rbuttonquadclk.html + LM_MOUSEENTER lmessages/lm_mouseenter.html + LM_MOUSELEAVE lmessages/lm_mouseleave.html + LM_XBUTTONTRIPLECLK lmessages/lm_xbuttontripleclk.html + LM_XBUTTONQUADCLK lmessages/lm_xbuttonquadclk.html + LM_MOUSELAST2 lmessages/lm_mouselast2.html + LM_GRABFOCUS lmessages/lm_grabfocus.html + LM_DRAWLISTITEM lmessages/lm_drawlistitem.html + LM_INTERFACEFIRST lmessages/lm_interfacefirst.html + LM_INTERFACELAST lmessages/lm_interfacelast.html + LM_UNKNOWN lmessages/lm_unknown.html + SC_SIZE lmessages/sc_size.html + SC_MOVE lmessages/sc_move.html + SC_MINIMIZE lmessages/sc_minimize.html + SC_MAXIMIZE lmessages/sc_maximize.html + SC_NEXTWINDOW lmessages/sc_nextwindow.html + SC_PREVWINDOW lmessages/sc_prevwindow.html + SC_CLOSE lmessages/sc_close.html + SC_VSCROLL lmessages/sc_vscroll.html + SC_HSCROLL lmessages/sc_hscroll.html + SC_MOUSEMENU lmessages/sc_mousemenu.html + SC_KEYMENU lmessages/sc_keymenu.html + SC_ARRANGE lmessages/sc_arrange.html + SC_RESTORE lmessages/sc_restore.html + SC_TASKLIST lmessages/sc_tasklist.html + SC_SCREENSAVE lmessages/sc_screensave.html + SC_HOTKEY lmessages/sc_hotkey.html + SC_DEFAULT lmessages/sc_default.html + SC_MONITORPOWER lmessages/sc_monitorpower.html + SC_CONTEXTHELP lmessages/sc_contexthelp.html + SC_SEPARATOR lmessages/sc_separator.html + LM_NULL lmessages/lm_null.html + LM_CREATE lmessages/lm_create.html + LM_DESTROY lmessages/lm_destroy.html + LM_MOVE lmessages/lm_move.html + LM_SIZE lmessages/lm_size.html + LM_ACTIVATE lmessages/lm_activate.html + LM_SETFOCUS lmessages/lm_setfocus.html + LM_KILLFOCUS lmessages/lm_killfocus.html + LM_ENABLE lmessages/lm_enable.html + LM_GETTEXTLENGTH lmessages/lm_gettextlength.html + LM_PAINT lmessages/lm_paint.html + LM_ERASEBKGND lmessages/lm_erasebkgnd.html + LM_SHOWWINDOW lmessages/lm_showwindow.html + LM_CANCELMODE lmessages/lm_cancelmode.html + LM_SETCURSOR lmessages/lm_setcursor.html + LM_DRAWITEM lmessages/lm_drawitem.html + LM_MEASUREITEM lmessages/lm_measureitem.html + LM_DELETEITEM lmessages/lm_deleteitem.html + LM_VKEYTOITEM lmessages/lm_vkeytoitem.html + LM_CHARTOITEM lmessages/lm_chartoitem.html + LM_SETFONT lmessages/lm_setfont.html + LM_COMPAREITEM lmessages/lm_compareitem.html + LM_WINDOWPOSCHANGING lmessages/lm_windowposchanging.html + LM_WINDOWPOSCHANGED lmessages/lm_windowposchanged.html + LM_NOTIFY lmessages/lm_notify.html + LM_HELP lmessages/lm_help.html + LM_NOTIFYFORMAT lmessages/lm_notifyformat.html + LM_CONTEXTMENU lmessages/lm_contextmenu.html + LM_NCCALCSIZE lmessages/lm_nccalcsize.html + LM_NCHITTEST lmessages/lm_nchittest.html + LM_NCPAINT lmessages/lm_ncpaint.html + LM_NCACTIVATE lmessages/lm_ncactivate.html + LM_GETDLGCODE lmessages/lm_getdlgcode.html + LM_NCMOUSEMOVE lmessages/lm_ncmousemove.html + LM_NCLBUTTONDOWN lmessages/lm_nclbuttondown.html + LM_NCLBUTTONUP lmessages/lm_nclbuttonup.html + LM_NCLBUTTONDBLCLK lmessages/lm_nclbuttondblclk.html + LM_KEYFIRST lmessages/lm_keyfirst.html + LM_KEYDOWN lmessages/lm_keydown.html + LM_KEYUP lmessages/lm_keyup.html + LM_CHAR lmessages/lm_char.html + LM_SYSKEYDOWN lmessages/lm_syskeydown.html + LM_SYSKEYUP lmessages/lm_syskeyup.html + LM_SYSCHAR lmessages/lm_syschar.html + LM_KEYLAST lmessages/lm_keylast.html + LM_COMMAND lmessages/lm_command.html + LM_SYSCOMMAND lmessages/lm_syscommand.html + LM_TIMER lmessages/lm_timer.html + LM_HSCROLL lmessages/lm_hscroll.html + LM_VSCROLL lmessages/lm_vscroll.html + LM_CTLCOLORMSGBOX lmessages/lm_ctlcolormsgbox.html + LM_CTLCOLOREDIT lmessages/lm_ctlcoloredit.html + LM_CTLCOLORLISTBOX lmessages/lm_ctlcolorlistbox.html + LM_CTLCOLORBTN lmessages/lm_ctlcolorbtn.html + LM_CTLCOLORDLG lmessages/lm_ctlcolordlg.html + LM_CTLCOLORSCROLLBAR lmessages/lm_ctlcolorscrollbar.html + LM_CTLCOLORSTATIC lmessages/lm_ctlcolorstatic.html + LM_MOUSEFIRST lmessages/lm_mousefirst.html + LM_MOUSEMOVE lmessages/lm_mousemove.html + LM_LBUTTONDOWN lmessages/lm_lbuttondown.html + LM_LBUTTONUP lmessages/lm_lbuttonup.html + LM_LBUTTONDBLCLK lmessages/lm_lbuttondblclk.html + LM_RBUTTONDOWN lmessages/lm_rbuttondown.html + LM_RBUTTONUP lmessages/lm_rbuttonup.html + LM_RBUTTONDBLCLK lmessages/lm_rbuttondblclk.html + LM_MBUTTONDOWN lmessages/lm_mbuttondown.html + LM_MBUTTONUP lmessages/lm_mbuttonup.html + LM_MBUTTONDBLCLK lmessages/lm_mbuttondblclk.html + LM_MOUSEWHEEL lmessages/lm_mousewheel.html + LM_XBUTTONDOWN lmessages/lm_xbuttondown.html + LM_XBUTTONUP lmessages/lm_xbuttonup.html + LM_XBUTTONDBLCLK lmessages/lm_xbuttondblclk.html + LM_MOUSELAST lmessages/lm_mouselast.html + LM_PARENTNOTIFY lmessages/lm_parentnotify.html + LM_CAPTURECHANGED lmessages/lm_capturechanged.html + LM_DROPFILES lmessages/lm_dropfiles.html + LM_SELCHANGE lmessages/lm_selchange.html + LM_CUT lmessages/lm_cut.html + LM_COPY lmessages/lm_copy.html + LM_PASTE lmessages/lm_paste.html + LM_CLEAR lmessages/lm_clear.html + CM_BASE lmessages/cm_base.html + CM_LCLOFFSET lmessages/cm_lcloffset.html + CM_ACTIVATE lmessages/cm_activate.html + CM_DEACTIVATE lmessages/cm_deactivate.html + CM_GOTFOCUS lmessages/cm_gotfocus.html + CM_LOSTFOCUS lmessages/cm_lostfocus.html + CM_CANCELMODE lmessages/cm_cancelmode.html + CM_DIALOGKEY lmessages/cm_dialogkey.html + CM_DIALOGCHAR lmessages/cm_dialogchar.html + CM_FOCUSCHANGED lmessages/cm_focuschanged.html + CM_PARENTFONTCHANGED lmessages/cm_parentfontchanged.html + CM_PARENTCOLORCHANGED lmessages/cm_parentcolorchanged.html + CM_HITTEST lmessages/cm_hittest.html + CM_VISIBLECHANGED lmessages/cm_visiblechanged.html + CM_ENABLEDCHANGED lmessages/cm_enabledchanged.html + CM_COLORCHANGED lmessages/cm_colorchanged.html + CM_FONTCHANGED lmessages/cm_fontchanged.html + CM_CURSORCHANGED lmessages/cm_cursorchanged.html + CM_CTL3DCHANGED lmessages/cm_ctl3dchanged.html + CM_PARENTCTL3DCHANGED lmessages/cm_parentctl3dchanged.html + CM_TEXTCHANGED lmessages/cm_textchanged.html + CM_MOUSEENTER lmessages/cm_mouseenter.html + CM_MOUSELEAVE lmessages/cm_mouseleave.html + CM_MENUCHANGED lmessages/cm_menuchanged.html + CM_APPKEYDOWN lmessages/cm_appkeydown.html + CM_APPSYSCOMMAND lmessages/cm_appsyscommand.html + CM_BUTTONPRESSED lmessages/cm_buttonpressed.html + CM_SHOWINGCHANGED lmessages/cm_showingchanged.html + CM_ENTER lmessages/cm_enter.html + CM_EXIT lmessages/cm_exit.html + CM_DESIGNHITTEST lmessages/cm_designhittest.html + CM_ICONCHANGED lmessages/cm_iconchanged.html + CM_WANTSPECIALKEY lmessages/cm_wantspecialkey.html + CM_INVOKEHELP lmessages/cm_invokehelp.html + CM_WINDOWHOOK lmessages/cm_windowhook.html + CM_RELEASE lmessages/cm_release.html + CM_SHOWHINTCHANGED lmessages/cm_showhintchanged.html + CM_PARENTSHOWHINTCHANGED lmessages/cm_parentshowhintchanged.html + CM_SYSCOLORCHANGE lmessages/cm_syscolorchange.html + CM_WININICHANGE lmessages/cm_wininichange.html + CM_FONTCHANGE lmessages/cm_fontchange.html + CM_TIMECHANGE lmessages/cm_timechange.html + CM_TABSTOPCHANGED lmessages/cm_tabstopchanged.html + CM_UIACTIVATE lmessages/cm_uiactivate.html + CM_UIDEACTIVATE lmessages/cm_uideactivate.html + CM_DOCWINDOWACTIVATE lmessages/cm_docwindowactivate.html + CM_CONTROLLISTCHANGE lmessages/cm_controllistchange.html + CM_GETDATALINK lmessages/cm_getdatalink.html + CM_CHILDKEY lmessages/cm_childkey.html + CM_DRAG lmessages/cm_drag.html + CM_HINTSHOW lmessages/cm_hintshow.html + CM_DIALOGHANDLE lmessages/cm_dialoghandle.html + CM_ISTOOLCONTROL lmessages/cm_istoolcontrol.html + CM_RECREATEWND lmessages/cm_recreatewnd.html + CM_INVALIDATE lmessages/cm_invalidate.html + CM_SYSFONTCHANGED lmessages/cm_sysfontchanged.html + CM_CONTROLCHANGE lmessages/cm_controlchange.html + CM_CHANGED lmessages/cm_changed.html + CM_DOCKCLIENT lmessages/cm_dockclient.html + CM_UNDOCKCLIENT lmessages/cm_undockclient.html + CM_FLOAT lmessages/cm_float.html + CM_BORDERCHANGED lmessages/cm_borderchanged.html + CM_BIDIMODECHANGED lmessages/cm_bidimodechanged.html + CM_PARENTBIDIMODECHANGED lmessages/cm_parentbidimodechanged.html + CM_ALLCHILDRENFLIPPED lmessages/cm_allchildrenflipped.html + CM_ACTIONUPDATE lmessages/cm_actionupdate.html + CM_ACTIONEXECUTE lmessages/cm_actionexecute.html + CM_HINTSHOWPAUSE lmessages/cm_hintshowpause.html + CM_DOCKNOTIFICATION lmessages/cm_docknotification.html + CM_MOUSEWHEEL lmessages/cm_mousewheel.html + CM_ISSHORTCUT lmessages/cm_isshortcut.html + CM_UPDATEACTIONS lmessages/cm_updateactions.html + CM_INVALIDATEDOCKHOST lmessages/cm_invalidatedockhost.html + CM_SETACTIVECONTROL lmessages/cm_setactivecontrol.html + CM_POPUPHWNDDESTROY lmessages/cm_popuphwnddestroy.html + CM_CREATEPOPUP lmessages/cm_createpopup.html + CM_DESTROYHANDLE lmessages/cm_destroyhandle.html + CM_MOUSEACTIVATE lmessages/cm_mouseactivate.html + CM_CONTROLLISTCHANGING lmessages/cm_controllistchanging.html + CM_BUFFEREDPRINTCLIENT lmessages/cm_bufferedprintclient.html + CM_UNTHEMECONTROL lmessages/cm_unthemecontrol.html + CM_DOUBLEBUFFEREDCHANGED lmessages/cm_doublebufferedchanged.html + CM_PARENTDOUBLEBUFFEREDCHANGED lmessages/cm_parentdoublebufferedchanged.html + CM_THEMECHANGED lmessages/cm_themechanged.html + CM_GESTURE lmessages/cm_gesture.html + CM_CUSTOMGESTURESCHANGED lmessages/cm_customgestureschanged.html + CM_GESTUREMANAGERCHANGED lmessages/cm_gesturemanagerchanged.html + CM_STANDARDGESTURESCHANGED lmessages/cm_standardgestureschanged.html + CM_INPUTLANGCHANGE lmessages/cm_inputlangchange.html + CM_TABLETOPTIONSCHANGED lmessages/cm_tabletoptionschanged.html + CM_PARENTTABLETOPTIONSCHANGED lmessages/cm_parenttabletoptionschanged.html + CM_APPSHOWBTNGLYPHCHANGED lmessages/cm_appshowbtnglyphchanged.html + CM_APPSHOWMENUGLYPHCHANGED lmessages/cm_appshowmenuglyphchanged.html + CN_BASE lmessages/cn_base.html + CN_CHARTOITEM lmessages/cn_chartoitem.html + CN_COMMAND lmessages/cn_command.html + CN_COMPAREITEM lmessages/cn_compareitem.html + CN_CTLCOLORBTN lmessages/cn_ctlcolorbtn.html + CN_CTLCOLORDLG lmessages/cn_ctlcolordlg.html + CN_CTLCOLOREDIT lmessages/cn_ctlcoloredit.html + CN_CTLCOLORLISTBOX lmessages/cn_ctlcolorlistbox.html + CN_CTLCOLORMSGBOX lmessages/cn_ctlcolormsgbox.html + CN_CTLCOLORSCROLLBAR lmessages/cn_ctlcolorscrollbar.html + CN_CTLCOLORSTATIC lmessages/cn_ctlcolorstatic.html + CN_DELETEITEM lmessages/cn_deleteitem.html + CN_DRAWITEM lmessages/cn_drawitem.html + CN_HSCROLL lmessages/cn_hscroll.html + CN_MEASUREITEM lmessages/cn_measureitem.html + CN_PARENTNOTIFY lmessages/cn_parentnotify.html + CN_VKEYTOITEM lmessages/cn_vkeytoitem.html + CN_VSCROLL lmessages/cn_vscroll.html + CN_KEYDOWN lmessages/cn_keydown.html + CN_KEYUP lmessages/cn_keyup.html + CN_CHAR lmessages/cn_char.html + CN_SYSKEYUP lmessages/cn_syskeyup.html + CN_SYSKEYDOWN lmessages/cn_syskeydown.html + CN_SYSCHAR lmessages/cn_syschar.html + CN_NOTIFY lmessages/cn_notify.html + WA_INACTIVE lmessages/wa_inactive.html + WA_ACTIVE lmessages/wa_active.html + WA_CLICKACTIVE lmessages/wa_clickactive.html + CBN_ERRSPACE lmessages/cbn_errspace.html + CBN_SELCHANGE lmessages/cbn_selchange.html + CBN_DBLCLK lmessages/cbn_dblclk.html + CBN_SETFOCUS lmessages/cbn_setfocus.html + CBN_KILLFOCUS lmessages/cbn_killfocus.html + CBN_EDITCHANGE lmessages/cbn_editchange.html + CBN_EDITUPDATE lmessages/cbn_editupdate.html + CBN_DROPDOWN lmessages/cbn_dropdown.html + CBN_CLOSEUP lmessages/cbn_closeup.html + CBN_SELENDOK lmessages/cbn_selendok.html + CBN_SELENDCANCEL lmessages/cbn_selendcancel.html + TLMDrawItems lmessages/tlmdrawitems.html + TLMDrawListItem lmessages/tlmdrawlistitem.html + TLMMeasureItem lmessages/tlmmeasureitem.html + TLMNoParams lmessages/tlmnoparams.html + TLMEraseBkgnd lmessages/tlmerasebkgnd.html + TLMGetText lmessages/tlmgettext.html + TLMGetTextLength lmessages/tlmgettextlength.html + TLMKey lmessages/tlmkey.html + TLMChar lmessages/tlmchar.html + TLMKeyDown lmessages/tlmkeydown.html + TLMKeyUp lmessages/tlmkeyup.html + TLMSysChar lmessages/tlmsyschar.html + TLMSysKeyDown lmessages/tlmsyskeydown.html + TLMSysKeyUp lmessages/tlmsyskeyup.html + TCMWantSpecialKey lmessages/tcmwantspecialkey.html + TLMCut lmessages/tlmcut.html + TLMCopy lmessages/tlmcopy.html + TLMPaste lmessages/tlmpaste.html + TLMSetCursor lmessages/tlmsetcursor.html + TLMMouse lmessages/tlmmouse.html + TLMMouseMove lmessages/tlmmousemove.html + TLMMove lmessages/tlmmove.html + TLMActivate lmessages/tlmactivate.html + TLMNCActivate lmessages/tlmncactivate.html + TLMNotify lmessages/tlmnotify.html + TLMNotifyFormat lmessages/tlmnotifyformat.html + TLMPaint lmessages/tlmpaint.html + PWindowPos lmessages/pwindowpos.html + tagWINDOWPOS lmessages/tagwindowpos.html + TWindowPos lmessages/twindowpos.html + WINDOWPOS lmessages/windowpos.html + TLMWindowPosMsg lmessages/tlmwindowposmsg.html + TLMWindowPosChanged lmessages/tlmwindowposchanged.html + TLMWindowPosChanging lmessages/tlmwindowposchanging.html + PNCCalcSizeParams lmessages/pnccalcsizeparams.html + tagNCCalcSize_Params lmessages/tagnccalcsize_params.html + TNCCalcSizeParams lmessages/tnccalcsizeparams.html + ncCalcSizeParams lmessages/nccalcsizeparams.html + TLMNCCalcSize lmessages/tlmnccalcsize.html + TLMSysColorChange lmessages/tlmsyscolorchange.html + TLMSysCommand lmessages/tlmsyscommand.html + TLMSysDeadChar lmessages/tlmsysdeadchar.html + TLMSystemError lmessages/tlmsystemerror.html + TLMTimeChange lmessages/tlmtimechange.html + TLMSetText lmessages/tlmsettext.html + PLMMouseEvent lmessages/plmmouseevent.html + TLMMouseEvent lmessages/tlmmouseevent.html + TLMLButtonDown lmessages/tlmlbuttondown.html + TLMRButtonDown lmessages/tlmrbuttondown.html + TLMMButtonDown lmessages/tlmmbuttondown.html + TLMXButtonDown lmessages/tlmxbuttondown.html + TLMLButtonDblClk lmessages/tlmlbuttondblclk.html + TLMRButtonDblClk lmessages/tlmrbuttondblclk.html + TLMMButtonDblClk lmessages/tlmmbuttondblclk.html + TLMXButtonDblClk lmessages/tlmxbuttondblclk.html + TLMLButtonTripleClk lmessages/tlmlbuttontripleclk.html + TLMRButtonTripleClk lmessages/tlmrbuttontripleclk.html + TLMMButtonTripleClk lmessages/tlmmbuttontripleclk.html + TLMXButtonTripleClk lmessages/tlmxbuttontripleclk.html + TLMLButtonQuadClk lmessages/tlmlbuttonquadclk.html + TLMRButtonQuadClk lmessages/tlmrbuttonquadclk.html + TLMMButtonQuadClk lmessages/tlmmbuttonquadclk.html + TLMXButtonQuadClk lmessages/tlmxbuttonquadclk.html + TLMLButtonUp lmessages/tlmlbuttonup.html + TLMRButtonUp lmessages/tlmrbuttonup.html + TLMMButtonUp lmessages/tlmmbuttonup.html + TLMXButtonUp lmessages/tlmxbuttonup.html + TLMSetFocus lmessages/tlmsetfocus.html + TLMSize lmessages/tlmsize.html + PLMessage lmessages/plmessage.html + TLMessage lmessages/tlmessage.html + TLMEnter lmessages/tlmenter.html + TLMExit lmessages/tlmexit.html + TLMScroll lmessages/tlmscroll.html + TLMHScroll lmessages/tlmhscroll.html + TLMVScroll lmessages/tlmvscroll.html + TLMShowWindow lmessages/tlmshowwindow.html + TLMKILLFOCUS lmessages/tlmkillfocus.html + TLMNCHITTEST lmessages/tlmnchittest.html + TLMDestroy lmessages/tlmdestroy.html + TLMCommand lmessages/tlmcommand.html + TLMContextMenu lmessages/tlmcontextmenu.html + TLMHelp lmessages/tlmhelp.html + GetMessageName lmessages/getmessagename.html + GraphMath graphmath/index.html + GraphMath Operators graphmath/graphmath operators.html + TFloatPoint graphmath/tfloatpoint.html + TBezier graphmath/tbezier.html + PPoint graphmath/ppoint.html + Angles2Coords graphmath/angles2coords.html + Arc2Bezier graphmath/arc2bezier.html + Bezier graphmath/bezier.html + Bezier2Polyline graphmath/bezier2polyline.html + BezierArcPoints graphmath/bezierarcpoints.html + BezierMidPoint graphmath/beziermidpoint.html + Coords2Angles graphmath/coords2angles.html + Distance graphmath/distance.html + EccentricAngle graphmath/eccentricangle.html + EllipseRadialLength graphmath/ellipseradiallength.html + FloatPoint graphmath/floatpoint.html + LineEndPoint graphmath/lineendpoint.html + PolyBezier2Polyline graphmath/polybezier2polyline.html + PolyBezierArcPoints graphmath/polybezierarcpoints.html + Quadrant graphmath/quadrant.html + RadialPoint graphmath/radialpoint.html + SplitBezier graphmath/splitbezier.html + add(TFloatPoint,TFloatPoint):TFloatPoint graphmath/.op-add-tfloatpoint-floatpoint-floatpoint.html + add(TFloatPoint,Extended):TFloatPoint graphmath/.op-add-tfloatpoint-xtended-floatpoint.html + add(Extended,TFloatPoint):TFloatPoint graphmath/.op-add-extended-floatpoint-floatpoint.html + add(TFloatPoint,TPoint):TFloatPoint graphmath/.op-add-tfloatpoint-point-floatpoint.html + add(TPoint,TFloatPoint):TFloatPoint graphmath/.op-add-tpoint-floatpoint-floatpoint.html + subtract(TFloatPoint,Extended):TFloatPoint graphmath/.op-subtract-tfloatpoint-xtended-floatpoint.html + subtract(TFloatPoint,TFloatPoint):TFloatPoint graphmath/.op-subtract-tfloatpoint-floatpoint-floatpoint.html + subtract(TFloatPoint,TPoint):TFloatPoint graphmath/.op-subtract-tfloatpoint-point-floatpoint.html + subtract(TPoint,TFloatPoint):TFloatPoint graphmath/.op-subtract-tpoint-floatpoint-floatpoint.html + multiply(TFloatPoint,TFloatPoint):TFloatPoint graphmath/.op-multiply-tfloatpoint-floatpoint-floatpoint.html + multiply(TFloatPoint,Extended):TFloatPoint graphmath/.op-multiply-tfloatpoint-xtended-floatpoint.html + multiply(Extended,TFloatPoint):TFloatPoint graphmath/.op-multiply-extended-floatpoint-floatpoint.html + multiply(TFloatPoint,TPoint):TFloatPoint graphmath/.op-multiply-tfloatpoint-point-floatpoint.html + multiply(TPoint,TFloatPoint):TFloatPoint graphmath/.op-multiply-tpoint-floatpoint-floatpoint.html + divide(TFloatPoint,TFloatPoint):TFloatPoint graphmath/.op-divide-tfloatpoint-floatpoint-floatpoint.html + divide(TFloatPoint,Extended):TFloatPoint graphmath/.op-divide-tfloatpoint-xtended-floatpoint.html + divide(TFloatPoint,TPoint):TFloatPoint graphmath/.op-divide-tfloatpoint-point-floatpoint.html + divide(TPoint,TFloatPoint):TFloatPoint graphmath/.op-divide-tpoint-floatpoint-floatpoint.html + equal(TPoint,TPoint):Boolean graphmath/.op-equal-tpoint-point-oolean.html + equal(TFloatPoint,TFloatPoint):Boolean graphmath/.op-equal-tfloatpoint-floatpoint-oolean.html + assign(TFloatPoint):TPoint graphmath/.op-assign-tfloatpoint-point.html + assign(TPoint):TFloatPoint graphmath/.op-assign-tpoint-floatpoint.html + equal(TRect,TRect):Boolean graphmath/.op-equal-trect-rect-oolean.html + IntfGraphics intfgraphics/index.html + LazTiffExtraPrefix intfgraphics/laztiffextraprefix.html + LazTiffHostComputer intfgraphics/laztiffhostcomputer.html + LazTiffMake intfgraphics/laztiffmake.html + LazTiffModel intfgraphics/laztiffmodel.html + LazTiffSoftware intfgraphics/laztiffsoftware.html + TLazIntfImageGetPixelProc intfgraphics/tlazintfimagegetpixelproc.html + TLazIntfImageSetPixelProc intfgraphics/tlazintfimagesetpixelproc.html + TOnReadRawImageBits intfgraphics/tonreadrawimagebits.html + TOnWriteRawImageBits intfgraphics/tonwriterawimagebits.html + PArrayNode intfgraphics/parraynode.html + TLazReaderMaskMode intfgraphics/tlazreadermaskmode.html + TLazReaderDIBEncoding intfgraphics/tlazreaderdibencoding.html + TLazReaderDIBInfo intfgraphics/tlazreaderdibinfo.html + TLazIntfImage intfgraphics/tlazintfimage.html + FGetInternalColorProc intfgraphics/tlazintfimage.fgetinternalcolorproc.html + FSetInternalColorProc intfgraphics/tlazintfimage.fsetinternalcolorproc.html + SetUsePalette intfgraphics/tlazintfimage.setusepalette.html + SetInternalColor intfgraphics/tlazintfimage.setinternalcolor.html + GetInternalColor intfgraphics/tlazintfimage.getinternalcolor.html + SetInternalPixel intfgraphics/tlazintfimage.setinternalpixel.html + GetInternalPixel intfgraphics/tlazintfimage.getinternalpixel.html + FreeData intfgraphics/tlazintfimage.freedata.html + SetDataDescription intfgraphics/tlazintfimage.setdatadescription.html + ChooseGetSetColorFunctions intfgraphics/tlazintfimage.choosegetsetcolorfunctions.html + ChooseRawBitsProc intfgraphics/tlazintfimage.chooserawbitsproc.html + GetColor_Generic intfgraphics/tlazintfimage.getcolor_generic.html + GetColor_RGBA_NoPalette intfgraphics/tlazintfimage.getcolor_rgba_nopalette.html + GetColor_RGB_NoPalette intfgraphics/tlazintfimage.getcolor_rgb_nopalette.html + GetColor_Gray_NoPalette intfgraphics/tlazintfimage.getcolor_gray_nopalette.html + GetColor_GrayAlpha_NoPalette intfgraphics/tlazintfimage.getcolor_grayalpha_nopalette.html + GetColor_NULL intfgraphics/tlazintfimage.getcolor_null.html + GetColor_BPP32_A8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8r8g8b8_bio_ttb.html + GetColor_BPP32_A8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8b8g8r8_bio_ttb.html + GetColor_BPP32_A8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8g8r8b8_bio_ttb.html + GetColor_BPP32_A8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8g8b8r8_bio_ttb.html + GetColor_BPP32_A8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8r8b8g8_bio_ttb.html + GetColor_BPP32_A8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_a8b8r8g8_bio_ttb.html + GetColor_BPP32_B8G8R8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8g8r8a8_bio_ttb.html + GetColor_BPP32_R8G8B8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8g8b8a8_bio_ttb.html + GetColor_BPP32_G8B8R8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8b8r8a8_bio_ttb.html + GetColor_BPP32_G8R8B8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8r8b8a8_bio_ttb.html + GetColor_BPP32_B8R8G8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8r8g8a8_bio_ttb.html + GetColor_BPP32_R8B8G8A8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8b8g8a8_bio_ttb.html + GetColor_BPP32_X8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8r8g8b8_bio_ttb.html + GetColor_BPP32_X8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8b8g8r8_bio_ttb.html + GetColor_BPP32_X8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8g8r8b8_bio_ttb.html + GetColor_BPP32_X8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8g8b8r8_bio_ttb.html + GetColor_BPP32_X8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8r8b8g8_bio_ttb.html + GetColor_BPP32_X8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_x8b8r8g8_bio_ttb.html + GetColor_BPP32_B8G8R8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8g8r8x8_bio_ttb.html + GetColor_BPP32_R8G8B8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8g8b8x8_bio_ttb.html + GetColor_BPP32_G8B8R8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8b8r8x8_bio_ttb.html + GetColor_BPP32_G8R8B8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_g8r8b8x8_bio_ttb.html + GetColor_BPP32_B8R8G8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_b8r8g8x8_bio_ttb.html + GetColor_BPP32_R8B8G8X8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp32_r8b8g8x8_bio_ttb.html + GetColor_BPP24_B8G8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_b8g8r8_bio_ttb.html + GetColor_BPP24_R8G8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_r8g8b8_bio_ttb.html + GetColor_BPP24_G8B8R8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_g8b8r8_bio_ttb.html + GetColor_BPP24_G8R8B8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_g8r8b8_bio_ttb.html + GetColor_BPP24_B8R8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_b8r8g8_bio_ttb.html + GetColor_BPP24_R8B8G8_BIO_TTB intfgraphics/tlazintfimage.getcolor_bpp24_r8b8g8_bio_ttb.html + GetMask_Generic intfgraphics/tlazintfimage.getmask_generic.html + SetColor_Generic intfgraphics/tlazintfimage.setcolor_generic.html + SetColor_RGBA_NoPalette intfgraphics/tlazintfimage.setcolor_rgba_nopalette.html + SetColor_RGB_NoPalette intfgraphics/tlazintfimage.setcolor_rgb_nopalette.html + SetColor_Gray_NoPalette intfgraphics/tlazintfimage.setcolor_gray_nopalette.html + SetColor_GrayAlpha_NoPalette intfgraphics/tlazintfimage.setcolor_grayalpha_nopalette.html + SetColor_NULL intfgraphics/tlazintfimage.setcolor_null.html + SetColor_BPP32_A8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8r8g8b8_bio_ttb.html + SetColor_BPP32_A8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8b8g8r8_bio_ttb.html + SetColor_BPP32_A8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8g8r8b8_bio_ttb.html + SetColor_BPP32_A8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8g8b8r8_bio_ttb.html + SetColor_BPP32_A8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8r8b8g8_bio_ttb.html + SetColor_BPP32_A8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_a8b8r8g8_bio_ttb.html + SetColor_BPP32_B8G8R8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8g8r8a8_bio_ttb.html + SetColor_BPP32_R8G8B8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8g8b8a8_bio_ttb.html + SetColor_BPP32_G8B8R8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8b8r8a8_bio_ttb.html + SetColor_BPP32_G8R8B8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8r8b8a8_bio_ttb.html + SetColor_BPP32_B8R8G8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8r8g8a8_bio_ttb.html + SetColor_BPP32_R8B8G8A8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8b8g8a8_bio_ttb.html + SetColor_BPP32_X8R8G8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8r8g8b8_bio_ttb.html + SetColor_BPP32_X8B8G8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8b8g8r8_bio_ttb.html + SetColor_BPP32_X8G8R8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8g8r8b8_bio_ttb.html + SetColor_BPP32_X8G8B8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8g8b8r8_bio_ttb.html + SetColor_BPP32_X8R8B8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8r8b8g8_bio_ttb.html + SetColor_BPP32_X8B8R8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_x8b8r8g8_bio_ttb.html + SetColor_BPP32_B8G8R8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8g8r8x8_bio_ttb.html + SetColor_BPP32_R8G8B8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8g8b8x8_bio_ttb.html + SetColor_BPP32_G8B8R8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8b8r8x8_bio_ttb.html + SetColor_BPP32_G8R8B8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_g8r8b8x8_bio_ttb.html + SetColor_BPP32_B8R8G8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_b8r8g8x8_bio_ttb.html + SetColor_BPP32_R8B8G8X8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp32_r8b8g8x8_bio_ttb.html + SetColor_BPP24_B8G8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_b8g8r8_bio_ttb.html + SetColor_BPP24_R8G8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_r8g8b8_bio_ttb.html + SetColor_BPP24_G8B8R8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_g8b8r8_bio_ttb.html + SetColor_BPP24_G8R8B8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_g8r8b8_bio_ttb.html + SetColor_BPP24_B8R8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_b8r8g8_bio_ttb.html + SetColor_BPP24_R8B8G8_BIO_TTB intfgraphics/tlazintfimage.setcolor_bpp24_r8b8g8_bio_ttb.html + SetMask_Generic intfgraphics/tlazintfimage.setmask_generic.html + Create intfgraphics/tlazintfimage.create.html + CreateCompatible intfgraphics/tlazintfimage.createcompatible.html + Destroy intfgraphics/tlazintfimage.destroy.html + BeginUpdate intfgraphics/tlazintfimage.beginupdate.html + EndUpdate intfgraphics/tlazintfimage.endupdate.html + SetSize intfgraphics/tlazintfimage.setsize.html + CheckDescription intfgraphics/tlazintfimage.checkdescription.html + LoadFromDevice intfgraphics/tlazintfimage.loadfromdevice.html + LoadFromBitmap intfgraphics/tlazintfimage.loadfrombitmap.html + CreateBitmaps intfgraphics/tlazintfimage.createbitmaps.html + SetRawImage intfgraphics/tlazintfimage.setrawimage.html + GetRawImage intfgraphics/tlazintfimage.getrawimage.html + FillPixels intfgraphics/tlazintfimage.fillpixels.html + CopyPixels intfgraphics/tlazintfimage.copypixels.html + AlphaBlend intfgraphics/tlazintfimage.alphablend.html + AlphaFromMask intfgraphics/tlazintfimage.alphafrommask.html + Mask intfgraphics/tlazintfimage.mask.html + GetXYDataPosition intfgraphics/tlazintfimage.getxydataposition.html + GetXYMaskPosition intfgraphics/tlazintfimage.getxymaskposition.html + GetDataLineStart intfgraphics/tlazintfimage.getdatalinestart.html + CreateData intfgraphics/tlazintfimage.createdata.html + HasTransparency intfgraphics/tlazintfimage.hastransparency.html + HasMask intfgraphics/tlazintfimage.hasmask.html + SetDataDescriptionKeepData intfgraphics/tlazintfimage.setdatadescriptionkeepdata.html + PixelData intfgraphics/tlazintfimage.pixeldata.html + MaskData intfgraphics/tlazintfimage.maskdata.html + DataDescription intfgraphics/tlazintfimage.datadescription.html + TColors intfgraphics/tlazintfimage.tcolors.html + Masked intfgraphics/tlazintfimage.masked.html + TLazIntfImageMask intfgraphics/tlazintfimagemask.html + SetInternalColor intfgraphics/tlazintfimagemask.setinternalcolor.html + GetInternalColor intfgraphics/tlazintfimagemask.getinternalcolor.html + SetInternalPixel intfgraphics/tlazintfimagemask.setinternalpixel.html + GetInternalPixel intfgraphics/tlazintfimagemask.getinternalpixel.html + CreateWithImage intfgraphics/tlazintfimagemask.createwithimage.html + Image intfgraphics/tlazintfimagemask.image.html + TLazAVLPalette intfgraphics/tlazavlpalette.html + FAVLPalette intfgraphics/tlazavlpalette.favlpalette.html + FAVLNodes intfgraphics/tlazavlpalette.favlnodes.html + SetCount intfgraphics/tlazavlpalette.setcount.html + SetColor intfgraphics/tlazavlpalette.setcolor.html + CompareEntries intfgraphics/tlazavlpalette.compareentries.html + CompareColorWithEntries intfgraphics/tlazavlpalette.comparecolorwithentries.html + EnlargeData intfgraphics/tlazavlpalette.enlargedata.html + Destroy intfgraphics/tlazavlpalette.destroy.html + IndexOf intfgraphics/tlazavlpalette.indexof.html + Add intfgraphics/tlazavlpalette.add.html + CheckConsistency intfgraphics/tlazavlpalette.checkconsistency.html + TArrayNode intfgraphics/tarraynode.html + Parent intfgraphics/tarraynode.parent.html + Value intfgraphics/tarraynode.value.html + Children intfgraphics/tarraynode.children.html + StartValue intfgraphics/tarraynode.startvalue.html + Capacity intfgraphics/tarraynode.capacity.html + Data intfgraphics/tarraynode.data.html + Create intfgraphics/tarraynode.create.html + Destroy intfgraphics/tarraynode.destroy.html + DeleteChilds intfgraphics/tarraynode.deletechilds.html + UnbindFromParent intfgraphics/tarraynode.unbindfromparent.html + CreateChildNode intfgraphics/tarraynode.createchildnode.html + GetChildNode intfgraphics/tarraynode.getchildnode.html + Expand intfgraphics/tarraynode.expand.html + FindPrevSibling intfgraphics/tarraynode.findprevsibling.html + FindNextSibling intfgraphics/tarraynode.findnextsibling.html + FindNextUTF8 intfgraphics/tarraynode.findnextutf8.html + FindPrev intfgraphics/tarraynode.findprev.html + FindFirstChild intfgraphics/tarraynode.findfirstchild.html + FindLastChild intfgraphics/tarraynode.findlastchild.html + FindLastSubChild intfgraphics/tarraynode.findlastsubchild.html + FindFirstSibling intfgraphics/tarraynode.findfirstsibling.html + FindLastSibling intfgraphics/tarraynode.findlastsibling.html + ConsistencyCheck intfgraphics/tarraynode.consistencycheck.html + TArrayNodesTree intfgraphics/tarraynodestree.html + Root intfgraphics/tarraynodestree.root.html + FindNode intfgraphics/tarraynodestree.findnode.html + FindData intfgraphics/tarraynodestree.finddata.html + SetNode intfgraphics/tarraynodestree.setnode.html + Delete intfgraphics/tarraynodestree.delete.html + Clear intfgraphics/tarraynodestree.clear.html + Create intfgraphics/tarraynodestree.create.html + Destroy intfgraphics/tarraynodestree.destroy.html + ConsistencyCheck intfgraphics/tarraynodestree.consistencycheck.html + ILazImageReader intfgraphics/ilazimagereader.html + GetUpdateDescription intfgraphics/ilazimagereader.getupdatedescription.html + SetUpdateDescription intfgraphics/ilazimagereader.setupdatedescription.html + UpdateDescription intfgraphics/ilazimagereader.updatedescription.html + ILazImageWriter intfgraphics/ilazimagewriter.html + Initialize intfgraphics/ilazimagewriter.initialize.html + Finalize intfgraphics/ilazimagewriter.finalize.html + TLazReaderXPM intfgraphics/tlazreaderxpm.html + GetUpdateDescription intfgraphics/tlazreaderxpm.getupdatedescription.html + SetUpdateDescription intfgraphics/tlazreaderxpm.setupdatedescription.html + QueryInterface intfgraphics/tlazreaderxpm.queryinterface.html + _AddRef intfgraphics/tlazreaderxpm._addref.html + _Release intfgraphics/tlazreaderxpm._release.html + ClearPixelToColorTree intfgraphics/tlazreaderxpm.clearpixeltocolortree.html + InternalRead intfgraphics/tlazreaderxpm.internalread.html + InternalCheck intfgraphics/tlazreaderxpm.internalcheck.html + Create intfgraphics/tlazreaderxpm.create.html + Destroy intfgraphics/tlazreaderxpm.destroy.html + UpdateDescription intfgraphics/tlazreaderxpm.updatedescription.html + TLazWriterXPM intfgraphics/tlazwriterxpm.html + InternalWrite intfgraphics/tlazwriterxpm.internalwrite.html + Create intfgraphics/tlazwriterxpm.create.html + NibblesPerSample intfgraphics/tlazwriterxpm.nibblespersample.html + TLazReaderDIB intfgraphics/tlazreaderdib.html + GetUpdateDescription intfgraphics/tlazreaderdib.getupdatedescription.html + SetUpdateDescription intfgraphics/tlazreaderdib.setupdatedescription.html + QueryInterface intfgraphics/tlazreaderdib.queryinterface.html + _AddRef intfgraphics/tlazreaderdib._addref.html + _Release intfgraphics/tlazreaderdib._release.html + InitLineBuf intfgraphics/tlazreaderdib.initlinebuf.html + FreeLineBuf intfgraphics/tlazreaderdib.freelinebuf.html + ReadScanLine intfgraphics/tlazreaderdib.readscanline.html + WriteScanLine intfgraphics/tlazreaderdib.writescanline.html + InternalRead intfgraphics/tlazreaderdib.internalread.html + InternalReadHead intfgraphics/tlazreaderdib.internalreadhead.html + InternalReadBody intfgraphics/tlazreaderdib.internalreadbody.html + InternalCheck intfgraphics/tlazreaderdib.internalcheck.html + ReadSize intfgraphics/tlazreaderdib.readsize.html + LineBuf intfgraphics/tlazreaderdib.linebuf.html + Info intfgraphics/tlazreaderdib.info.html + Create intfgraphics/tlazreaderdib.create.html + Destroy intfgraphics/tlazreaderdib.destroy.html + MaskColor intfgraphics/tlazreaderdib.maskcolor.html + MaskMode intfgraphics/tlazreaderdib.maskmode.html + UpdateDescription intfgraphics/tlazreaderdib.updatedescription.html + TLazReaderBMP intfgraphics/tlazreaderbmp.html + InternalCheck intfgraphics/tlazreaderbmp.internalcheck.html + InternalReadHead intfgraphics/tlazreaderbmp.internalreadhead.html + TLazWriterBMP intfgraphics/tlazwriterbmp.html + QueryInterface intfgraphics/tlazwriterbmp.queryinterface.html + _AddRef intfgraphics/tlazwriterbmp._addref.html + _Release intfgraphics/tlazwriterbmp._release.html + Initialize intfgraphics/tlazwriterbmp.initialize.html + Finalize intfgraphics/tlazwriterbmp.finalize.html + TLazReaderIconDIB intfgraphics/tlazreadericondib.html + InternalRead intfgraphics/tlazreadericondib.internalread.html + TLazReaderPNG intfgraphics/tlazreaderpng.html + GetUpdateDescription intfgraphics/tlazreaderpng.getupdatedescription.html + SetUpdateDescription intfgraphics/tlazreaderpng.setupdatedescription.html + QueryInterface intfgraphics/tlazreaderpng.queryinterface.html + _AddRef intfgraphics/tlazreaderpng._addref.html + _Release intfgraphics/tlazreaderpng._release.html + DoDecompress intfgraphics/tlazreaderpng.dodecompress.html + HandleAlpha intfgraphics/tlazreaderpng.handlealpha.html + InternalRead intfgraphics/tlazreaderpng.internalread.html + UpdateDescription intfgraphics/tlazreaderpng.updatedescription.html + TLazWriterPNG intfgraphics/tlazwriterpng.html + QueryInterface intfgraphics/tlazwriterpng.queryinterface.html + _AddRef intfgraphics/tlazwriterpng._addref.html + _Release intfgraphics/tlazwriterpng._release.html + Initialize intfgraphics/tlazwriterpng.initialize.html + Finalize intfgraphics/tlazwriterpng.finalize.html + TLazReaderTiff intfgraphics/tlazreadertiff.html + DoCreateImage intfgraphics/tlazreadertiff.docreateimage.html + GetUpdateDescription intfgraphics/tlazreadertiff.getupdatedescription.html + SetUpdateDescription intfgraphics/tlazreadertiff.setupdatedescription.html + QueryInterface intfgraphics/tlazreadertiff.queryinterface.html + _AddRef intfgraphics/tlazreadertiff._addref.html + _Release intfgraphics/tlazreadertiff._release.html + InternalRead intfgraphics/tlazreadertiff.internalread.html + UpdateDescription intfgraphics/tlazreadertiff.updatedescription.html + TLazWriterTiff intfgraphics/tlazwritertiff.html + QueryInterface intfgraphics/tlazwritertiff.queryinterface.html + _AddRef intfgraphics/tlazwritertiff._addref.html + _Release intfgraphics/tlazwritertiff._release.html + InternalWrite intfgraphics/tlazwritertiff.internalwrite.html + Initialize intfgraphics/tlazwritertiff.initialize.html + Finalize intfgraphics/tlazwritertiff.finalize.html + TLazReaderIcnsPart intfgraphics/tlazreadericnspart.html + InternalCheck intfgraphics/tlazreadericnspart.internalcheck.html + InternalRead intfgraphics/tlazreadericnspart.internalread.html + SetupRead intfgraphics/tlazreadericnspart.setupread.html + Create256ColorPalette intfgraphics/tlazreadericnspart.create256colorpalette.html + DoReadRaw intfgraphics/tlazreadericnspart.doreadraw.html + DoReadRLE intfgraphics/tlazreadericnspart.doreadrle.html + DoReadJpeg2000 intfgraphics/tlazreadericnspart.doreadjpeg2000.html + DoReadMask intfgraphics/tlazreadericnspart.doreadmask.html + GetUpdateDescription intfgraphics/tlazreadericnspart.getupdatedescription.html + SetUpdateDescription intfgraphics/tlazreadericnspart.setupdatedescription.html + QueryInterface intfgraphics/tlazreadericnspart.queryinterface.html + _AddRef intfgraphics/tlazreadericnspart._addref.html + _Release intfgraphics/tlazreadericnspart._release.html + Create intfgraphics/tlazreadericnspart.create.html + Destroy intfgraphics/tlazreadericnspart.destroy.html + UpdateDescription intfgraphics/tlazreadericnspart.updatedescription.html + IconType intfgraphics/tlazreadericnspart.icontype.html + DataSize intfgraphics/tlazreadericnspart.datasize.html + QueryDescription intfgraphics/querydescription.html + GetDescriptionFromDevice intfgraphics/getdescriptionfromdevice.html + GetDescriptionFromBitmap intfgraphics/getdescriptionfrombitmap.html + AddAlphaToDescription intfgraphics/addalphatodescription.html + DefaultReaderDescription intfgraphics/defaultreaderdescription.html + ReadCompleteStreamToString intfgraphics/readcompletestreamtostring.html + ReadCompleteStreamToStream intfgraphics/readcompletestreamtostream.html + dbgs intfgraphics/dbgs.html + LCLVersion lclversion/index.html + lcl_major lclversion/lcl_major.html + lcl_minor lclversion/lcl_minor.html + lcl_release lclversion/lcl_release.html + lcl_patch lclversion/lcl_patch.html + lcl_fullversion lclversion/lcl_fullversion.html + lcl_version lclversion/lcl_version.html + IcnsTypes icnstypes/index.html + kIconFamilyType icnstypes/kiconfamilytype.html + kIconServices512PixelDataARGB icnstypes/kiconservices512pixeldataargb.html + kIconServices256PixelDataARGB icnstypes/kiconservices256pixeldataargb.html + kThumbnail32BitData icnstypes/kthumbnail32bitdata.html + kThumbnail8BitMask icnstypes/kthumbnail8bitmask.html + kHuge1BitMask icnstypes/khuge1bitmask.html + kHuge4BitData icnstypes/khuge4bitdata.html + kHuge8BitData icnstypes/khuge8bitdata.html + kHuge32BitData icnstypes/khuge32bitdata.html + kHuge8BitMask icnstypes/khuge8bitmask.html + kLarge1BitMask icnstypes/klarge1bitmask.html + kLarge4BitData icnstypes/klarge4bitdata.html + kLarge8BitData icnstypes/klarge8bitdata.html + kLarge32BitData icnstypes/klarge32bitdata.html + kLarge8BitMask icnstypes/klarge8bitmask.html + kSmall1BitMask icnstypes/ksmall1bitmask.html + kSmall4BitData icnstypes/ksmall4bitdata.html + kSmall8BitData icnstypes/ksmall8bitdata.html + kSmall32BitData icnstypes/ksmall32bitdata.html + kSmall8BitMask icnstypes/ksmall8bitmask.html + kMini1BitMask icnstypes/kmini1bitmask.html + kMini4BitData icnstypes/kmini4bitdata.html + kMini8BitData icnstypes/kmini8bitdata.html + icnsDataTypes icnstypes/icnsdatatypes.html + icnsMaskTypes icnstypes/icnsmasktypes.html + icnsRGB icnstypes/icnsrgb.html + icnsWithAlpha icnstypes/icnswithalpha.html + icnsIconTypeInfo icnstypes/icnsicontypeinfo.html + icnsMaskToImageMap icnstypes/icnsmasktoimagemap.html + FourCharCode icnstypes/fourcharcode.html + TIconFamilyElement icnstypes/ticonfamilyelement.html + TIconFamilyResource icnstypes/ticonfamilyresource.html + TicnsIconType icnstypes/ticnsicontype.html + TicnsIconTypes icnstypes/ticnsicontypes.html + TicnsIconInfo icnstypes/ticnsiconinfo.html + GetIcnsIconType icnstypes/geticnsicontype.html + GetDataTypeRGB icnstypes/getdatatypergb.html + GetMaskType8bit icnstypes/getmasktype8bit.html + Themes themes/index.html + ThemeManagerCopyright themes/thememanagercopyright.html + TThemedElement themes/tthemedelement.html + TThemedButton themes/tthemedbutton.html + TThemedClock themes/tthemedclock.html + TThemedComboBox themes/tthemedcombobox.html + TThemedEdit themes/tthemededit.html + TThemedExplorerBar themes/tthemedexplorerbar.html + TThemedHeader themes/tthemedheader.html + TThemedListview themes/tthemedlistview.html + TThemedMenu themes/tthemedmenu.html + TThemedPage themes/tthemedpage.html + TThemedProgress themes/tthemedprogress.html + TThemedRebar themes/tthemedrebar.html + TThemedScrollBar themes/tthemedscrollbar.html + TThemedSpin themes/tthemedspin.html + TThemedStartPanel themes/tthemedstartpanel.html + TThemedStatus themes/tthemedstatus.html + TThemedTab themes/tthemedtab.html + TThemedTaskBand themes/tthemedtaskband.html + TThemedTaskBar themes/tthemedtaskbar.html + TThemedToolBar themes/tthemedtoolbar.html + TThemedToolTip themes/tthemedtooltip.html + TThemedTrackBar themes/tthemedtrackbar.html + TThemedTrayNotify themes/tthemedtraynotify.html + TThemedTreeview themes/tthemedtreeview.html + TThemedWindow themes/tthemedwindow.html + PThemedElementDetails themes/pthemedelementdetails.html + TThemedElementDetails themes/tthemedelementdetails.html + TThemeOption themes/tthemeoption.html + TThemesImageDrawEvent themes/tthemesimagedrawevent.html + TThemeServices themes/tthemeservices.html + InitThemes themes/tthemeservices.initthemes.html + UnloadThemeData themes/tthemeservices.unloadthemedata.html + UseThemes themes/tthemeservices.usethemes.html + ThemedControlsEnabled themes/tthemeservices.themedcontrolsenabled.html + InternalColorToRGB themes/tthemeservices.internalcolortorgb.html + InternalDrawParentBackground themes/tthemeservices.internaldrawparentbackground.html + Create themes/tthemeservices.create.html + Destroy themes/tthemeservices.destroy.html + IntfDoOnThemeChange themes/tthemeservices.intfdoonthemechange.html + IsDisabled themes/tthemeservices.isdisabled.html + IsPushed themes/tthemeservices.ispushed.html + IsHot themes/tthemeservices.ishot.html + IsChecked themes/tthemeservices.ischecked.html + IsMixed themes/tthemeservices.ismixed.html + GetElementDetails themes/tthemeservices.getelementdetails.html + GetDetailSize themes/tthemeservices.getdetailsize.html + GetDetailRegion themes/tthemeservices.getdetailregion.html + GetStockImage themes/tthemeservices.getstockimage.html + GetOption themes/tthemeservices.getoption.html + GetTextExtent themes/tthemeservices.gettextextent.html + ColorToRGB themes/tthemeservices.colortorgb.html + ContentRect themes/tthemeservices.contentrect.html + DrawEdge themes/tthemeservices.drawedge.html + DrawElement themes/tthemeservices.drawelement.html + DrawIcon themes/tthemeservices.drawicon.html + DrawParentBackground themes/tthemeservices.drawparentbackground.html + DrawText themes/tthemeservices.drawtext.html + HasTransparentParts themes/tthemeservices.hastransparentparts.html + PaintBorder themes/tthemeservices.paintborder.html + UpdateThemes themes/tthemeservices.updatethemes.html + DottedBrush themes/tthemeservices.dottedbrush.html + ThemesAvailable themes/tthemeservices.themesavailable.html + ThemesEnabled themes/tthemeservices.themesenabled.html + OnThemeChange themes/tthemeservices.onthemechange.html + ThemeServices themes/themeservices.html + ThemedElementDetailsEqual themes/themedelementdetailsequal.html + ThemesImageDrawEvent themes/themesimagedrawevent.html + Graphics graphics/index.html + Progress graphics/progress.html + DefFontData graphics/deffontdata.html + psSolid graphics/pssolid.html + psDash graphics/psdash.html + psDot graphics/psdot.html + psDashDot graphics/psdashdot.html + psDashDotDot graphics/psdashdotdot.html + psClear graphics/psclear.html + psInsideframe graphics/psinsideframe.html + psPattern graphics/pspattern.html + pmBlack graphics/pmblack.html + pmWhite graphics/pmwhite.html + pmNop graphics/pmnop.html + pmNot graphics/pmnot.html + pmCopy graphics/pmcopy.html + pmNotCopy graphics/pmnotcopy.html + pmMergePenNot graphics/pmmergepennot.html + pmMaskPenNot graphics/pmmaskpennot.html + pmMergeNotPen graphics/pmmergenotpen.html + pmMaskNotPen graphics/pmmasknotpen.html + pmMerge graphics/pmmerge.html + pmNotMerge graphics/pmnotmerge.html + pmMask graphics/pmmask.html + pmNotMask graphics/pmnotmask.html + pmXor graphics/pmxor.html + pmNotXor graphics/pmnotxor.html + bsSolid graphics/bssolid.html + bsClear graphics/bsclear.html + bsHorizontal graphics/bshorizontal.html + bsVertical graphics/bsvertical.html + bsFDiagonal graphics/bsfdiagonal.html + bsBDiagonal graphics/bsbdiagonal.html + bsCross graphics/bscross.html + bsDiagCross graphics/bsdiagcross.html + PIXELFORMAT_BPP graphics/pixelformat_bpp.html + clBlack graphics/clblack.html + clMaroon graphics/clmaroon.html + clGreen graphics/clgreen.html + clOlive graphics/clolive.html + clNavy graphics/clnavy.html + clPurple graphics/clpurple.html + clTeal graphics/clteal.html + clGray graphics/clgray.html + clSilver graphics/clsilver.html + clRed graphics/clred.html + clLime graphics/cllime.html + clYellow graphics/clyellow.html + clBlue graphics/clblue.html + clFuchsia graphics/clfuchsia.html + clAqua graphics/claqua.html + clLtGray graphics/clltgray.html + clDkGray graphics/cldkgray.html + clWhite graphics/clwhite.html + StandardColorsCount graphics/standardcolorscount.html + clMoneyGreen graphics/clmoneygreen.html + clSkyBlue graphics/clskyblue.html + clCream graphics/clcream.html + clMedGray graphics/clmedgray.html + ExtendedColorCount graphics/extendedcolorcount.html + clNone graphics/clnone.html + clDefault graphics/cldefault.html + clScrollBar graphics/clscrollbar.html + clBackground graphics/clbackground.html + clActiveCaption graphics/clactivecaption.html + clInactiveCaption graphics/clinactivecaption.html + clMenu graphics/clmenu.html + clWindow graphics/clwindow.html + clWindowFrame graphics/clwindowframe.html + clMenuText graphics/clmenutext.html + clWindowText graphics/clwindowtext.html + clCaptionText graphics/clcaptiontext.html + clActiveBorder graphics/clactiveborder.html + clInactiveBorder graphics/clinactiveborder.html + clAppWorkspace graphics/clappworkspace.html + clHighlight graphics/clhighlight.html + clHighlightText graphics/clhighlighttext.html + clBtnFace graphics/clbtnface.html + clBtnShadow graphics/clbtnshadow.html + clGrayText graphics/clgraytext.html + clBtnText graphics/clbtntext.html + clInactiveCaptionText graphics/clinactivecaptiontext.html + clBtnHighlight graphics/clbtnhighlight.html + cl3DDkShadow graphics/cl3ddkshadow.html + cl3DLight graphics/cl3dlight.html + clInfoText graphics/clinfotext.html + clInfoBk graphics/clinfobk.html + clHotLight graphics/clhotlight.html + clGradientActiveCaption graphics/clgradientactivecaption.html + clGradientInactiveCaption graphics/clgradientinactivecaption.html + clMenuHighlight graphics/clmenuhighlight.html + clMenuBar graphics/clmenubar.html + clForm graphics/clform.html + clColorDesktop graphics/clcolordesktop.html + cl3DFace graphics/cl3dface.html + cl3DShadow graphics/cl3dshadow.html + cl3DHiLight graphics/cl3dhilight.html + clBtnHiLight graphics/clbtnhilight.html + clFirstSpecialColor graphics/clfirstspecialcolor.html + clMask graphics/clmask.html + clDontMask graphics/cldontmask.html + clForeground graphics/clforeground.html + clButton graphics/clbutton.html + clLight graphics/cllight.html + clMidlight graphics/clmidlight.html + clDark graphics/cldark.html + clMid graphics/clmid.html + clText graphics/cltext.html + clBrightText graphics/clbrighttext.html + clButtonText graphics/clbuttontext.html + clBase graphics/clbase.html + clxBackground graphics/clxbackground.html + clShadow graphics/clshadow.html + clxHighlight graphics/clxhighlight.html + clHighlightedText graphics/clhighlightedtext.html + cloNormal graphics/clonormal.html + cloDisabled graphics/clodisabled.html + cloActive graphics/cloactive.html + clNormalForeground graphics/clnormalforeground.html + clNormalButton graphics/clnormalbutton.html + clNormalLight graphics/clnormallight.html + clNormalMidlight graphics/clnormalmidlight.html + clNormalDark graphics/clnormaldark.html + clNormalMid graphics/clnormalmid.html + clNormalText graphics/clnormaltext.html + clNormalBrightText graphics/clnormalbrighttext.html + clNormalButtonText graphics/clnormalbuttontext.html + clNormalBase graphics/clnormalbase.html + clNormalBackground graphics/clnormalbackground.html + clNormalShadow graphics/clnormalshadow.html + clNormalHighlight graphics/clnormalhighlight.html + clNormalHighlightedText graphics/clnormalhighlightedtext.html + clDisabledForeground graphics/cldisabledforeground.html + clDisabledButton graphics/cldisabledbutton.html + clDisabledLight graphics/cldisabledlight.html + clDisabledMidlight graphics/cldisabledmidlight.html + clDisabledDark graphics/cldisableddark.html + clDisabledMid graphics/cldisabledmid.html + clDisabledText graphics/cldisabledtext.html + clDisabledBrightText graphics/cldisabledbrighttext.html + clDisabledButtonText graphics/cldisabledbuttontext.html + clDisabledBase graphics/cldisabledbase.html + clDisabledBackground graphics/cldisabledbackground.html + clDisabledShadow graphics/cldisabledshadow.html + clDisabledHighlight graphics/cldisabledhighlight.html + clDisabledHighlightedText graphics/cldisabledhighlightedtext.html + clActiveForeground graphics/clactiveforeground.html + clActiveButton graphics/clactivebutton.html + clActiveLight graphics/clactivelight.html + clActiveMidlight graphics/clactivemidlight.html + clActiveDark graphics/clactivedark.html + clActiveMid graphics/clactivemid.html + clActiveText graphics/clactivetext.html + clActiveBrightText graphics/clactivebrighttext.html + clActiveButtonText graphics/clactivebuttontext.html + clActiveBase graphics/clactivebase.html + clActiveBackground graphics/clactivebackground.html + clActiveShadow graphics/clactiveshadow.html + clActiveHighlight graphics/clactivehighlight.html + clActiveHighlightedText graphics/clactivehighlightedtext.html + cmBlackness graphics/cmblackness.html + cmDstInvert graphics/cmdstinvert.html + cmMergeCopy graphics/cmmergecopy.html + cmMergePaint graphics/cmmergepaint.html + cmNotSrcCopy graphics/cmnotsrccopy.html + cmNotSrcErase graphics/cmnotsrcerase.html + cmPatCopy graphics/cmpatcopy.html + cmPatInvert graphics/cmpatinvert.html + cmPatPaint graphics/cmpatpaint.html + cmSrcAnd graphics/cmsrcand.html + cmSrcCopy graphics/cmsrccopy.html + cmSrcErase graphics/cmsrcerase.html + cmSrcInvert graphics/cmsrcinvert.html + cmSrcPaint graphics/cmsrcpaint.html + cmWhiteness graphics/cmwhiteness.html + FontCharsets graphics/fontcharsets.html + PColor graphics/pcolor.html + TColor graphics/tcolor.html + TFontPitch graphics/tfontpitch.html + TFontName graphics/tfontname.html + TFontDataName graphics/tfontdataname.html + TFontStyle graphics/tfontstyle.html + TFontStyles graphics/tfontstyles.html + TFontStylesbase graphics/tfontstylesbase.html + TFontCharSet graphics/tfontcharset.html + TFontQuality graphics/tfontquality.html + TFontData graphics/tfontdata.html + TTextLayout graphics/ttextlayout.html + TTextStyle graphics/ttextstyle.html + TFillStyle graphics/tfillstyle.html + TFillMode graphics/tfillmode.html + TCopymode graphics/tcopymode.html + TCanvasStates graphics/tcanvasstates.html + TCanvasState graphics/tcanvasstate.html + TCanvasOrientation graphics/tcanvasorientation.html + TProgressStage graphics/tprogressstage.html + TProgressEvent graphics/tprogressevent.html + TPixelFormat graphics/tpixelformat.html + TTransparentMode graphics/ttransparentmode.html + TMappedColor graphics/tmappedcolor.html + TColorGroup graphics/tcolorgroup.html + TColorRole graphics/tcolorrole.html + TRasterImageClass graphics/trasterimageclass.html + TCustomBitmapClass graphics/tcustombitmapclass.html + TPenStyle graphics/tpenstyle.html + TPenMode graphics/tpenmode.html + TPenEndCap graphics/tpenendcap.html + TPenJoinStyle graphics/tpenjoinstyle.html + TPenPattern graphics/tpenpattern.html + TBrushStyle graphics/tbrushstyle.html + TRegionCombineMode graphics/tregioncombinemode.html + TRegionOperationType graphics/tregionoperationtype.html + TRegionOperation graphics/tregionoperation.html + TRegionOperations graphics/tregionoperations.html + TGraphicClass graphics/tgraphicclass.html + TGradientDirection graphics/tgradientdirection.html + TAntialiasingMode graphics/tantialiasingmode.html + TLCLTextMetric graphics/tlcltextmetric.html + TDefaultColorType graphics/tdefaultcolortype.html + TBitmapHandleType graphics/tbitmaphandletype.html + TSharedRasterImageClass graphics/tsharedrasterimageclass.html + TFPImageBitmapClass graphics/tfpimagebitmapclass.html + TIconImageClass graphics/ticonimageclass.html + TIcnsRec graphics/ticnsrec.html + PIcnsRec graphics/picnsrec.html + TJPEGQualityRange graphics/tjpegqualityrange.html + TJPEGPerformance graphics/tjpegperformance.html + TTiffUnit graphics/ttiffunit.html + TGetColorStringProc graphics/tgetcolorstringproc.html + TOnLoadGraphicFromClipboardFormat graphics/tonloadgraphicfromclipboardformat.html + TOnSaveGraphicToClipboardFormat graphics/tonsavegraphictoclipboardformat.html + TOnGetSystemFont graphics/tongetsystemfont.html + TGraphicsObject graphics/tgraphicsobject.html + Changing graphics/tgraphicsobject.changing.html + Changed graphics/tgraphicsobject.changed.html + Lock graphics/tgraphicsobject.lock.html + UnLock graphics/tgraphicsobject.unlock.html + OnChanging graphics/tgraphicsobject.onchanging.html + OnChange graphics/tgraphicsobject.onchange.html + TFontHandleCacheDescriptor graphics/tfonthandlecachedescriptor.html + LogFont graphics/tfonthandlecachedescriptor.logfont.html + LongFontName graphics/tfonthandlecachedescriptor.longfontname.html + TFontHandleCache graphics/tfonthandlecache.html + FindFont graphics/tfonthandlecache.findfont.html + FindFontDesc graphics/tfonthandlecache.findfontdesc.html + Add graphics/tfonthandlecache.add.html + RemoveItem lclrescache/tresourcecache.removeitem.html + Create ms-its:rtl.chm::/system/tobject.create.html + CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html + TFont graphics/tfont.html + GetCharSet graphics/tfont.getcharset.html + GetHeight graphics/tfont.getheight.html + GetName graphics/tfont.getname.html + GetOrientation graphics/tfont.getorientation.html + GetPitch graphics/tfont.getpitch.html + GetSize graphics/tfont.getsize.html + GetStyle graphics/tfont.getstyle.html + Changed graphics/tfont.changed.html + DoAllocateResources graphics/tfont.doallocateresources.html + DoCopyProps graphics/tfont.docopyprops.html + DoDeAllocateResources graphics/tfont.dodeallocateresources.html + SetCharSet graphics/tfont.setcharset.html + SetColor graphics/tfont.setcolor.html + GetColor graphics/tfont.getcolor.html + SetFlags graphics/tfont.setflags.html + SetFPColor graphics/tfont.setfpcolor.html + SetHeight graphics/tfont.setheight.html + SetName graphics/tfont.setname.html + SetOrientation graphics/tfont.setorientation.html + SetPitch graphics/tfont.setpitch.html + SetSize graphics/tfont.setsize.html + SetStyle graphics/tfont.setstyle.html + SetQuality graphics/tfont.setquality.html + Create graphics/tfont.create.html + Destroy graphics/tfont.destroy.html + Assign graphics/tfont.assign.html + BeginUpdate graphics/tfont.beginupdate.html + EndUpdate graphics/tfont.endupdate.html + FontData graphics/tfont.fontdata.html + HandleAllocated graphics/tfont.handleallocated.html + Handle graphics/tfont.handle.html + IsDefault graphics/tfont.isdefault.html + IsEqual graphics/tfont.isequal.html + IsMonoSpace graphics/tfont.ismonospace.html + SetDefault graphics/tfont.setdefault.html + CanUTF8 graphics/tfont.canutf8.html + PixelsPerInch graphics/tfont.pixelsperinch.html + Reference graphics/tfont.reference.html + CharSet graphics/tfont.charset.html + Color graphics/tfont.color.html + Height graphics/tfont.height.html + Orientation graphics/tfont.orientation.html + Pitch graphics/tfont.pitch.html + Quality graphics/tfont.quality.html + Style graphics/tfont.style.html + Name + Size + TPenHandleCacheDescriptor graphics/tpenhandlecachedescriptor.html + ExtPen graphics/tpenhandlecachedescriptor.extpen.html + Pattern graphics/tpenhandlecachedescriptor.pattern.html + TPenHandleCache graphics/tpenhandlecache.html + FindPen graphics/tpenhandlecache.findpen.html + FindPenDesc graphics/tpenhandlecache.findpendesc.html + Add graphics/tpenhandlecache.add.html + RemoveItem lclrescache/tresourcecache.removeitem.html + Create ms-its:rtl.chm::/system/tobject.create.html + CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html + TPen graphics/tpen.html + SetColor graphics/tpen.setcolor.html + SetEndCap graphics/tpen.setendcap.html + SetJoinStyle graphics/tpen.setjoinstyle.html + Create graphics/tpen.create.html + Destroy graphics/tpen.destroy.html + Assign graphics/tpen.assign.html + Handle graphics/tpen.handle.html + Reference graphics/tpen.reference.html + GetPattern graphics/tpen.getpattern.html + SetPattern graphics/tpen.setpattern.html + Color graphics/tpen.color.html + Cosmetic graphics/tpen.cosmetic.html + EndCap graphics/tpen.endcap.html + JoinStyle graphics/tpen.joinstyle.html + DoAllocateResources + DoDeAllocateResources + DoCopyProps + SetFPColor + SetMode + SetStyle + SetWidth + Mode + Style + Width + TBrushHandleCache graphics/tbrushhandlecache.html + RemoveItem lclrescache/tresourcecache.removeitem.html + Create ms-its:rtl.chm::/system/tobject.create.html + TBrush graphics/tbrush.html + DoAllocateResources graphics/tbrush.doallocateresources.html + DoDeAllocateResources graphics/tbrush.dodeallocateresources.html + DoCopyProps graphics/tbrush.docopyprops.html + SetColor graphics/tbrush.setcolor.html + SetBitmap graphics/tbrush.setbitmap.html + Assign graphics/tbrush.assign.html + Create graphics/tbrush.create.html + Destroy graphics/tbrush.destroy.html + EqualsBrush graphics/tbrush.equalsbrush.html + Bitmap graphics/tbrush.bitmap.html + Handle graphics/tbrush.handle.html + Reference graphics/tbrush.reference.html + Color graphics/tbrush.color.html + Style graphics/tbrush.style.html + SetFPColor + SetStyle + TRegion graphics/tregion.html + SetClipRect graphics/tregion.setcliprect.html + GetClipRect graphics/tregion.getcliprect.html + Create graphics/tregion.create.html + Destroy graphics/tregion.destroy.html + Assign graphics/tregion.assign.html + AddRectangle graphics/tregion.addrectangle.html + ClipRect graphics/tregion.cliprect.html + Handle graphics/tregion.handle.html + Reference graphics/tregion.reference.html + TGraphic graphics/tgraphic.html + Changed graphics/tgraphic.changed.html + Equals graphics/tgraphic.equals.html + DefineProperties graphics/tgraphic.defineproperties.html + Draw graphics/tgraphic.draw.html + GetEmpty graphics/tgraphic.getempty.html + GetHeight graphics/tgraphic.getheight.html + GetMimeType graphics/tgraphic.getmimetype.html + GetPalette graphics/tgraphic.getpalette.html + GetTransparent graphics/tgraphic.gettransparent.html + GetWidth graphics/tgraphic.getwidth.html + Progress graphics/tgraphic.progress.html + ReadData graphics/tgraphic.readdata.html + SetHeight graphics/tgraphic.setheight.html + SetPalette graphics/tgraphic.setpalette.html + SetTransparent graphics/tgraphic.settransparent.html + SetWidth graphics/tgraphic.setwidth.html + SetModified graphics/tgraphic.setmodified.html + WriteData graphics/tgraphic.writedata.html + Assign graphics/tgraphic.assign.html + Create graphics/tgraphic.create.html + Clear graphics/tgraphic.clear.html + LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html + LoadFromFile graphics/tgraphic.loadfromfile.html + LoadFromStream graphics/tgraphic.loadfromstream.html + LoadFromMimeStream graphics/tgraphic.loadfrommimestream.html + LoadFromLazarusResource graphics/tgraphic.loadfromlazarusresource.html + LoadFromResourceName graphics/tgraphic.loadfromresourcename.html + LoadFromResourceID graphics/tgraphic.loadfromresourceid.html + LoadFromClipboardFormat graphics/tgraphic.loadfromclipboardformat.html + LoadFromClipboardFormatID graphics/tgraphic.loadfromclipboardformatid.html + SaveToFile graphics/tgraphic.savetofile.html + SaveToStream graphics/tgraphic.savetostream.html + SaveToClipboardFormat graphics/tgraphic.savetoclipboardformat.html + SaveToClipboardFormatID graphics/tgraphic.savetoclipboardformatid.html + GetSupportedSourceMimeTypes graphics/tgraphic.getsupportedsourcemimetypes.html + GetResourceType graphics/tgraphic.getresourcetype.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + IsStreamFormatSupported graphics/tgraphic.isstreamformatsupported.html + Empty graphics/tgraphic.empty.html + Height graphics/tgraphic.height.html + Modified graphics/tgraphic.modified.html + MimeType graphics/tgraphic.mimetype.html + OnChange graphics/tgraphic.onchange.html + OnProgress graphics/tgraphic.onprogress.html + Palette graphics/tgraphic.palette.html + PaletteModified graphics/tgraphic.palettemodified.html + Transparent graphics/tgraphic.transparent.html + Width graphics/tgraphic.width.html + TPicture graphics/tpicture.html + AssignTo graphics/tpicture.assignto.html + Changed graphics/tpicture.changed.html + Progress graphics/tpicture.progress.html + LoadFromStreamWithClass graphics/tpicture.loadfromstreamwithclass.html + Create graphics/tpicture.create.html + Destroy graphics/tpicture.destroy.html + Clear graphics/tpicture.clear.html + LoadFromClipboardFormat graphics/tpicture.loadfromclipboardformat.html + LoadFromClipboardFormatID graphics/tpicture.loadfromclipboardformatid.html + LoadFromFile graphics/tpicture.loadfromfile.html + LoadFromResourceName graphics/tpicture.loadfromresourcename.html + LoadFromLazarusResource graphics/tpicture.loadfromlazarusresource.html + LoadFromStream graphics/tpicture.loadfromstream.html + LoadFromStreamWithFileExt graphics/tpicture.loadfromstreamwithfileext.html + SaveToClipboardFormat graphics/tpicture.savetoclipboardformat.html + SaveToFile graphics/tpicture.savetofile.html + SaveToStream graphics/tpicture.savetostream.html + SaveToStreamWithFileExt graphics/tpicture.savetostreamwithfileext.html + SupportsClipboardFormat graphics/tpicture.supportsclipboardformat.html + Assign graphics/tpicture.assign.html + RegisterFileFormat graphics/tpicture.registerfileformat.html + RegisterClipboardFormat graphics/tpicture.registerclipboardformat.html + UnregisterGraphicClass graphics/tpicture.unregistergraphicclass.html + FindGraphicClassWithFileExt graphics/tpicture.findgraphicclasswithfileext.html + Bitmap graphics/tpicture.bitmap.html + Icon graphics/tpicture.icon.html + Jpeg graphics/tpicture.jpeg.html + Pixmap graphics/tpicture.pixmap.html + PNG graphics/tpicture.png.html + PNM graphics/tpicture.pnm.html + Graphic graphics/tpicture.graphic.html + Height graphics/tpicture.height.html + Width graphics/tpicture.width.html + OnChange graphics/tpicture.onchange.html + OnProgress graphics/tpicture.onprogress.html + DefineProperties + EGraphicException graphics/egraphicexception.html + EInvalidGraphic graphics/einvalidgraphic.html + EInvalidGraphicOperation graphics/einvalidgraphicoperation.html + TCanvas graphics/tcanvas.html + DoCreateDefaultFont graphics/tcanvas.docreatedefaultfont.html + DoCreateDefaultPen graphics/tcanvas.docreatedefaultpen.html + DoCreateDefaultBrush graphics/tcanvas.docreatedefaultbrush.html + SetColor graphics/tcanvas.setcolor.html + GetColor graphics/tcanvas.getcolor.html + SetHeight graphics/tcanvas.setheight.html + GetHeight graphics/tcanvas.getheight.html + SetWidth graphics/tcanvas.setwidth.html + GetWidth graphics/tcanvas.getwidth.html + SetPenPos graphics/tcanvas.setpenpos.html + DoLockCanvas graphics/tcanvas.dolockcanvas.html + DoUnlockCanvas graphics/tcanvas.dounlockcanvas.html + DoTextOut graphics/tcanvas.dotextout.html + DoGetTextSize graphics/tcanvas.dogettextsize.html + DoGetTextHeight graphics/tcanvas.dogettextheight.html + DoGetTextWidth graphics/tcanvas.dogettextwidth.html + DoRectangle graphics/tcanvas.dorectangle.html + DoRectangleFill graphics/tcanvas.dorectanglefill.html + DoRectangleAndFill graphics/tcanvas.dorectangleandfill.html + DoEllipse graphics/tcanvas.doellipse.html + DoEllipseFill graphics/tcanvas.doellipsefill.html + DoEllipseAndFill graphics/tcanvas.doellipseandfill.html + DoPolygon graphics/tcanvas.dopolygon.html + DoPolygonFill graphics/tcanvas.dopolygonfill.html + DoPolygonAndFill graphics/tcanvas.dopolygonandfill.html + DoPolyline graphics/tcanvas.dopolyline.html + DoPolyBezier graphics/tcanvas.dopolybezier.html + DoFloodFill graphics/tcanvas.dofloodfill.html + DoMoveTo graphics/tcanvas.domoveto.html + DoLineTo graphics/tcanvas.dolineto.html + DoLine graphics/tcanvas.doline.html + DoCopyRect graphics/tcanvas.docopyrect.html + DoDraw graphics/tcanvas.dodraw.html + CheckHelper graphics/tcanvas.checkhelper.html + GetDefaultColor graphics/tcanvas.getdefaultcolor.html + GetClipRect graphics/tcanvas.getcliprect.html + SetClipRect graphics/tcanvas.setcliprect.html + GetClipping graphics/tcanvas.getclipping.html + SetClipping graphics/tcanvas.setclipping.html + GetPixel graphics/tcanvas.getpixel.html + CreateBrush graphics/tcanvas.createbrush.html + CreateHandle graphics/tcanvas.createhandle.html + CreatePen graphics/tcanvas.createpen.html + CreateRegion graphics/tcanvas.createregion.html + DeselectHandles graphics/tcanvas.deselecthandles.html + PenChanging graphics/tcanvas.penchanging.html + FontChanging graphics/tcanvas.fontchanging.html + BrushChanging graphics/tcanvas.brushchanging.html + RegionChanging graphics/tcanvas.regionchanging.html + RealizeAutoRedraw graphics/tcanvas.realizeautoredraw.html + RealizeAntialiasing graphics/tcanvas.realizeantialiasing.html + RequiredState graphics/tcanvas.requiredstate.html + SetHandle graphics/tcanvas.sethandle.html + SetInternalPenPos graphics/tcanvas.setinternalpenpos.html + SetPixel graphics/tcanvas.setpixel.html + FreeHandle graphics/tcanvas.freehandle.html + Create graphics/tcanvas.create.html + Destroy graphics/tcanvas.destroy.html + Lock graphics/tcanvas.lock.html + TryLock graphics/tcanvas.trylock.html + Unlock graphics/tcanvas.unlock.html + Refresh graphics/tcanvas.refresh.html + Changing graphics/tcanvas.changing.html + Changed graphics/tcanvas.changed.html + SaveHandleState graphics/tcanvas.savehandlestate.html + RestoreHandleState graphics/tcanvas.restorehandlestate.html + Arc graphics/tcanvas.arc.html + ArcTo graphics/tcanvas.arcto.html + AngleArc graphics/tcanvas.anglearc.html + BrushCopy graphics/tcanvas.brushcopy.html + Chord graphics/tcanvas.chord.html + CopyRect graphics/tcanvas.copyrect.html + Draw graphics/tcanvas.draw.html + DrawFocusRect graphics/tcanvas.drawfocusrect.html + StretchDraw graphics/tcanvas.stretchdraw.html + Ellipse graphics/tcanvas.ellipse.html + FillRect graphics/tcanvas.fillrect.html + FloodFill graphics/tcanvas.floodfill.html + Frame3D graphics/tcanvas.frame3d.html + Frame graphics/tcanvas.frame.html + FrameRect graphics/tcanvas.framerect.html + GetTextMetrics graphics/tcanvas.gettextmetrics.html + GradientFill graphics/tcanvas.gradientfill.html + RadialPie graphics/tcanvas.radialpie.html + Pie graphics/tcanvas.pie.html + PolyBezier graphics/tcanvas.polybezier.html + Polygon graphics/tcanvas.polygon.html + Polyline graphics/tcanvas.polyline.html + Rectangle graphics/tcanvas.rectangle.html + RoundRect graphics/tcanvas.roundrect.html + TextOut graphics/tcanvas.textout.html + TextRect graphics/tcanvas.textrect.html + TextExtent graphics/tcanvas.textextent.html + TextHeight graphics/tcanvas.textheight.html + TextWidth graphics/tcanvas.textwidth.html + TextFitInfo graphics/tcanvas.textfitinfo.html + HandleAllocated graphics/tcanvas.handleallocated.html + GetUpdatedHandle graphics/tcanvas.getupdatedhandle.html + Pixels graphics/tcanvas.pixels.html + Handle graphics/tcanvas.handle.html + TextStyle graphics/tcanvas.textstyle.html + AntialiasingMode graphics/tcanvas.antialiasingmode.html + AutoRedraw graphics/tcanvas.autoredraw.html + Brush graphics/tcanvas.brush.html + CopyMode graphics/tcanvas.copymode.html + Font graphics/tcanvas.font.html + Height graphics/tcanvas.height.html + Pen graphics/tcanvas.pen.html + Region graphics/tcanvas.region.html + Width graphics/tcanvas.width.html + OnChange graphics/tcanvas.onchange.html + OnChanging graphics/tcanvas.onchanging.html + CreateFont + TSharedImage graphics/tsharedimage.html + Reference graphics/tsharedimage.reference.html + Release graphics/tsharedimage.release.html + FreeHandle graphics/tsharedimage.freehandle.html + RefCount graphics/tsharedimage.refcount.html + HandleAllocated graphics/tsharedimage.handleallocated.html + TSharedRasterImage graphics/tsharedrasterimage.html + ReleaseHandle graphics/tsharedrasterimage.releasehandle.html + IsEmpty graphics/tsharedrasterimage.isempty.html + CreateDefaultHandle graphics/tsharedrasterimage.createdefaulthandle.html + BitmapCanvas graphics/tsharedrasterimage.bitmapcanvas.html + SaveStream graphics/tsharedrasterimage.savestream.html + FreeHandle graphics/tsharedimage.freehandle.html + Create ms-its:rtl.chm::/system/tobject.create.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + HandleAllocated graphics/tsharedimage.handleallocated.html + TRasterImage graphics/trasterimage.html + FSharedImage graphics/trasterimage.fsharedimage.html + CanShareImage graphics/trasterimage.canshareimage.html + Changed graphics/trasterimage.changed.html + CreateDefaultBitmapHandle graphics/trasterimage.createdefaultbitmaphandle.html + GetHandle graphics/trasterimage.gethandle.html + GetBitmapHandle graphics/trasterimage.getbitmaphandle.html + GetMasked graphics/trasterimage.getmasked.html + GetMaskHandle graphics/trasterimage.getmaskhandle.html + GetPixelFormat graphics/trasterimage.getpixelformat.html + GetRawImagePtr graphics/trasterimage.getrawimageptr.html + GetRawImageDescriptionPtr graphics/trasterimage.getrawimagedescriptionptr.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + BitmapHandleNeeded graphics/trasterimage.bitmaphandleneeded.html + HandleNeeded graphics/trasterimage.handleneeded.html + MaskHandleNeeded graphics/trasterimage.maskhandleneeded.html + PaletteNeeded graphics/trasterimage.paletteneeded.html + InternalReleaseBitmapHandle graphics/trasterimage.internalreleasebitmaphandle.html + InternalReleaseMaskHandle graphics/trasterimage.internalreleasemaskhandle.html + InternalReleasePalette graphics/trasterimage.internalreleasepalette.html + SetBitmapHandle graphics/trasterimage.setbitmaphandle.html + SetMasked graphics/trasterimage.setmasked.html + SetMaskHandle graphics/trasterimage.setmaskhandle.html + UnshareImage graphics/trasterimage.unshareimage.html + UpdateHandles graphics/trasterimage.updatehandles.html + SaveStreamNeeded graphics/trasterimage.savestreamneeded.html + FreeSaveStream graphics/trasterimage.freesavestream.html + ReadStream graphics/trasterimage.readstream.html + SetSize graphics/trasterimage.setsize.html + SetHandle graphics/trasterimage.sethandle.html + SetTransparentMode graphics/trasterimage.settransparentmode.html + SetPixelFormat graphics/trasterimage.setpixelformat.html + WriteStream graphics/trasterimage.writestream.html + RequestTransparentColor graphics/trasterimage.requesttransparentcolor.html + Destroy graphics/trasterimage.destroy.html + Assign graphics/trasterimage.assign.html + BeginUpdate graphics/trasterimage.beginupdate.html + EndUpdate graphics/trasterimage.endupdate.html + FreeImage graphics/trasterimage.freeimage.html + BitmapHandleAllocated graphics/trasterimage.bitmaphandleallocated.html + MaskHandleAllocated graphics/trasterimage.maskhandleallocated.html + PaletteAllocated graphics/trasterimage.paletteallocated.html + LoadFromBitmapHandles graphics/trasterimage.loadfrombitmaphandles.html + LoadFromDevice graphics/trasterimage.loadfromdevice.html + LoadFromStream graphics/trasterimage.loadfromstream.html + LoadFromMimeStream graphics/trasterimage.loadfrommimestream.html + LoadFromRawImage graphics/trasterimage.loadfromrawimage.html + LoadFromIntfImage graphics/trasterimage.loadfromintfimage.html + SaveToStream graphics/trasterimage.savetostream.html + GetSupportedSourceMimeTypes graphics/trasterimage.getsupportedsourcemimetypes.html + GetSize graphics/trasterimage.getsize.html + Mask graphics/trasterimage.mask.html + SetHandles graphics/trasterimage.sethandles.html + ReleaseBitmapHandle graphics/trasterimage.releasebitmaphandle.html + ReleaseMaskHandle graphics/trasterimage.releasemaskhandle.html + ReleasePalette graphics/trasterimage.releasepalette.html + CreateIntfImage graphics/trasterimage.createintfimage.html + Canvas graphics/trasterimage.canvas.html + HandleAllocated graphics/trasterimage.handleallocated.html + BitmapHandle graphics/trasterimage.bitmaphandle.html + Masked graphics/trasterimage.masked.html + MaskHandle graphics/trasterimage.maskhandle.html + PixelFormat graphics/trasterimage.pixelformat.html + RawImage graphics/trasterimage.rawimage.html + ScanLine graphics/trasterimage.scanline.html + TransparentColor graphics/trasterimage.transparentcolor.html + TransparentMode graphics/trasterimage.transparentmode.html + Draw graphics/tgraphic.draw.html + GetEmpty graphics/tgraphic.getempty.html + GetMimeType graphics/tgraphic.getmimetype.html + GetTransparent graphics/tgraphic.gettransparent.html + GetHeight graphics/tgraphic.getheight.html + GetWidth graphics/tgraphic.getwidth.html + SetTransparent graphics/tgraphic.settransparent.html + ReadData graphics/tgraphic.readdata.html + SetHeight graphics/tgraphic.setheight.html + SetWidth graphics/tgraphic.setwidth.html + WriteData graphics/tgraphic.writedata.html + Create graphics/tgraphic.create.html + Clear graphics/tgraphic.clear.html + TSharedCustomBitmap graphics/tsharedcustombitmap.html + FreeHandle graphics/tsharedcustombitmap.freehandle.html + FreePalette graphics/tsharedcustombitmap.freepalette.html + FreeImage graphics/tsharedcustombitmap.freeimage.html + ReleasePalette graphics/tsharedcustombitmap.releasepalette.html + GetPixelFormat graphics/tsharedcustombitmap.getpixelformat.html + Create graphics/tsharedcustombitmap.create.html + Destroy graphics/tsharedcustombitmap.destroy.html + ImageAllocated graphics/tsharedcustombitmap.imageallocated.html + HandleType graphics/tsharedcustombitmap.handletype.html + Height graphics/tsharedcustombitmap.height.html + PixelFormat graphics/tsharedcustombitmap.pixelformat.html + Width graphics/tsharedcustombitmap.width.html + IsEmpty graphics/tsharedrasterimage.isempty.html + HandleAllocated graphics/tsharedimage.handleallocated.html + TCustomBitmap graphics/tcustombitmap.html + FreeMaskHandle graphics/tcustombitmap.freemaskhandle.html + RawimageNeeded graphics/tcustombitmap.rawimageneeded.html + Create graphics/tcustombitmap.create.html + Destroy graphics/tcustombitmap.destroy.html + Assign graphics/tcustombitmap.assign.html + FreeImage graphics/tcustombitmap.freeimage.html + ReleaseHandle graphics/tcustombitmap.releasehandle.html + SetSize graphics/tcustombitmap.setsize.html + Handle graphics/tcustombitmap.handle.html + HandleType graphics/tcustombitmap.handletype.html + Monochrome graphics/tcustombitmap.monochrome.html + MaskHandleNeeded graphics/trasterimage.maskhandleneeded.html + PaletteNeeded graphics/trasterimage.paletteneeded.html + CanShareImage graphics/trasterimage.canshareimage.html + Changed graphics/trasterimage.changed.html + CreateDefaultBitmapHandle graphics/trasterimage.createdefaultbitmaphandle.html + GetBitmapHandle graphics/trasterimage.getbitmaphandle.html + GetMaskHandle graphics/trasterimage.getmaskhandle.html + GetPalette graphics/tgraphic.getpalette.html + GetPixelFormat graphics/trasterimage.getpixelformat.html + GetRawImagePtr graphics/trasterimage.getrawimageptr.html + GetRawImageDescriptionPtr graphics/trasterimage.getrawimagedescriptionptr.html + HandleNeeded graphics/trasterimage.handleneeded.html + InternalReleaseBitmapHandle graphics/trasterimage.internalreleasebitmaphandle.html + InternalReleaseMaskHandle graphics/trasterimage.internalreleasemaskhandle.html + InternalReleasePalette graphics/trasterimage.internalreleasepalette.html + SetHandle graphics/trasterimage.sethandle.html + SetPixelFormat graphics/trasterimage.setpixelformat.html + UnshareImage graphics/trasterimage.unshareimage.html + UpdateHandles graphics/trasterimage.updatehandles.html + Clear graphics/tgraphic.clear.html + LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html + BitmapHandleAllocated graphics/trasterimage.bitmaphandleallocated.html + MaskHandleAllocated graphics/trasterimage.maskhandleallocated.html + PaletteAllocated graphics/trasterimage.paletteallocated.html + SetHandles graphics/trasterimage.sethandles.html + TFPImageBitmap graphics/tfpimagebitmap.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetWriterClass graphics/tfpimagebitmap.getwriterclass.html + InitializeReader graphics/tfpimagebitmap.initializereader.html + InitializeWriter graphics/tfpimagebitmap.initializewriter.html + FinalizeReader graphics/tfpimagebitmap.finalizereader.html + FinalizeWriter graphics/tfpimagebitmap.finalizewriter.html + ReadStream graphics/tfpimagebitmap.readstream.html + WriteStream graphics/tfpimagebitmap.writestream.html + IsStreamFormatSupported graphics/tfpimagebitmap.isstreamformatsupported.html + IsFileExtensionSupported graphics/tfpimagebitmap.isfileextensionsupported.html + GetMimeType graphics/tgraphic.getmimetype.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html + TSharedBitmap graphics/tsharedbitmap.html + TBitmap graphics/tbitmap.html + GetResourceType graphics/tbitmap.getresourcetype.html + InitializeReader graphics/tfpimagebitmap.initializereader.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetWriterClass graphics/tfpimagebitmap.getwriterclass.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + LoadFromStream graphics/trasterimage.loadfromstream.html + TSharedPixmap graphics/tsharedpixmap.html + TPixmap graphics/tpixmap.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetWriterClass graphics/tfpimagebitmap.getwriterclass.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + TSharedPortableNetworkGraphic graphics/tsharedportablenetworkgraphic.html + TPortableNetworkGraphic graphics/tportablenetworkgraphic.html + IsStreamFormatSupported graphics/tportablenetworkgraphic.isstreamformatsupported.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetWriterClass graphics/tfpimagebitmap.getwriterclass.html + InitializeWriter graphics/tfpimagebitmap.initializewriter.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + TSharedPortableAnyMapGraphic graphics/tsharedportableanymapgraphic.html + TPortableAnyMapGraphic graphics/tportableanymapgraphic.html + IsStreamFormatSupported graphics/tportableanymapgraphic.isstreamformatsupported.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetWriterClass graphics/tfpimagebitmap.getwriterclass.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + TSharedIcon graphics/tsharedicon.html + UpdateFromHandle graphics/tsharedicon.updatefromhandle.html + GetImage graphics/tsharedicon.getimage.html + Create graphics/tsharedicon.create.html + Destroy graphics/tsharedicon.destroy.html + Clear graphics/tsharedicon.clear.html + Delete graphics/tsharedicon.delete.html + GetIndex graphics/tsharedicon.getindex.html + GetImagesClass graphics/tsharedicon.getimagesclass.html + Add graphics/tsharedicon.add.html + Count graphics/tsharedicon.count.html + Images graphics/tsharedicon.images.html + FreeHandle graphics/tsharedimage.freehandle.html + IsEmpty graphics/tsharedrasterimage.isempty.html + TIconImage graphics/ticonimage.html + RawImageNeeded graphics/ticonimage.rawimageneeded.html + UpdateFromImage graphics/ticonimage.updatefromimage.html + Create graphics/ticonimage.create.html + ReleaseHandle graphics/ticonimage.releasehandle.html + ReleaseMaskHandle graphics/ticonimage.releasemaskhandle.html + ReleasePalette graphics/ticonimage.releasepalette.html + UpdateHandles graphics/ticonimage.updatehandles.html + Height graphics/ticonimage.height.html + Width graphics/ticonimage.width.html + PixelFormat graphics/ticonimage.pixelformat.html + Handle graphics/ticonimage.handle.html + MaskHandle graphics/ticonimage.maskhandle.html + Palette graphics/ticonimage.palette.html + RawImage graphics/ticonimage.rawimage.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + TCustomIcon graphics/tcustomicon.html + FCurrent graphics/tcustomicon.fcurrent.html + FRequestedSize graphics/tcustomicon.frequestedsize.html + CheckRequestedSize graphics/tcustomicon.checkrequestedsize.html + GetIndex graphics/tcustomicon.getindex.html + GetDefaultSize graphics/tcustomicon.getdefaultsize.html + GetStreamSignature graphics/tcustomicon.getstreamsignature.html + GetTypeID graphics/tcustomicon.gettypeid.html + UpdateCurrentView graphics/tcustomicon.updatecurrentview.html + SetHandle graphics/trasterimage.sethandle.html + UpdateHandle graphics/tcustomicon.updatehandle.html + Add graphics/tcustomicon.add.html + Assign graphics/tcustomicon.assign.html + AssignImage graphics/tcustomicon.assignimage.html + Clear graphics/tcustomicon.clear.html + Delete graphics/tcustomicon.delete.html + Remove graphics/tcustomicon.remove.html + GetDescription graphics/tcustomicon.getdescription.html + SetSize graphics/tcustomicon.setsize.html + GetFileExtensions graphics/tcustomicon.getfileextensions.html + LoadFromResourceName graphics/tcustomicon.loadfromresourcename.html + LoadFromResourceID graphics/tcustomicon.loadfromresourceid.html + LoadFromResourceHandle graphics/tcustomicon.loadfromresourcehandle.html + GetBestIndexForSize graphics/tcustomicon.getbestindexforsize.html + Current graphics/tcustomicon.current.html + Count graphics/tcustomicon.count.html + MaskHandleNeeded graphics/trasterimage.maskhandleneeded.html + PaletteNeeded graphics/trasterimage.paletteneeded.html + CanShareImage graphics/trasterimage.canshareimage.html + GetBitmapHandle graphics/trasterimage.getbitmaphandle.html + GetMaskHandle graphics/trasterimage.getmaskhandle.html + GetPalette graphics/tgraphic.getpalette.html + GetPixelFormat graphics/trasterimage.getpixelformat.html + GetRawImagePtr graphics/trasterimage.getrawimageptr.html + GetRawImageDescriptionPtr graphics/trasterimage.getrawimagedescriptionptr.html + GetTransparent graphics/tgraphic.gettransparent.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + HandleNeeded graphics/trasterimage.handleneeded.html + InternalReleaseBitmapHandle graphics/trasterimage.internalreleasebitmaphandle.html + InternalReleaseMaskHandle graphics/trasterimage.internalreleasemaskhandle.html + InternalReleasePalette graphics/trasterimage.internalreleasepalette.html + ReadData graphics/tgraphic.readdata.html + ReadStream graphics/trasterimage.readstream.html + SetMasked graphics/trasterimage.setmasked.html + SetPixelFormat graphics/trasterimage.setpixelformat.html + SetTransparent graphics/tgraphic.settransparent.html + UnshareImage graphics/trasterimage.unshareimage.html + UpdateHandles graphics/trasterimage.updatehandles.html + WriteStream graphics/trasterimage.writestream.html + Create graphics/tgraphic.create.html + LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html + BitmapHandleAllocated graphics/trasterimage.bitmaphandleallocated.html + MaskHandleAllocated graphics/trasterimage.maskhandleallocated.html + PaletteAllocated graphics/trasterimage.paletteallocated.html + SetHandles graphics/trasterimage.sethandles.html + TIcon graphics/ticon.html + GetStreamSignature graphics/ticon.getstreamsignature.html + LoadFromResourceHandle graphics/ticon.loadfromresourcehandle.html + ReleaseHandle graphics/ticon.releasehandle.html + GetResourceType graphics/ticon.getresourcetype.html + Handle graphics/ticon.handle.html + GetTypeID graphics/tcustomicon.gettypeid.html + HandleNeeded graphics/trasterimage.handleneeded.html + TIcnsList graphics/ticnslist.html + Notify graphics/ticnslist.notify.html + Add graphics/ticnslist.add.html + Items graphics/ticnslist.items.html + TSharedIcnsIcon graphics/tsharedicnsicon.html + TIcnsIcon graphics/ticnsicon.html + ReadData + ReadStream + WriteStream + Create + Destroy graphics/ticnsicon.destroy.html + GetFileExtensions graphics/tcustomicon.getfileextensions.html + LazarusResourceTypeValid + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + TSharedCursorImage graphics/tsharedcursorimage.html + FreeHandle graphics/tsharedimage.freehandle.html + GetImagesClass graphics/tsharedicon.getimagesclass.html + TCursorImageImage graphics/tcursorimageimage.html + Create graphics/ticonimage.create.html + HotSpot graphics/tcursorimageimage.hotspot.html + TCursorImage graphics/tcursorimage.html + GetStreamSignature graphics/tcursorimage.getstreamsignature.html + GetResourceType graphics/tcursorimage.getresourcetype.html + LoadFromResourceHandle graphics/tcursorimage.loadfromresourcehandle.html + ReleaseHandle graphics/tcursorimage.releasehandle.html + SetCenterHotSpot graphics/tcursorimage.setcenterhotspot.html + HotSpot graphics/tcursorimage.hotspot.html + Handle graphics/tcursorimage.handle.html + HandleNeeded graphics/trasterimage.handleneeded.html + GetDefaultSize graphics/tcustomicon.getdefaultsize.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + GetTypeID graphics/tcustomicon.gettypeid.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + LazarusResourceTypeValid graphics/tgraphic.lazarusresourcetypevalid.html + TSharedJpegImage graphics/tsharedjpegimage.html + TJPEGImage graphics/tjpegimage.html + Create graphics/tjpegimage.create.html + IsStreamFormatSupported graphics/tjpegimage.isstreamformatsupported.html + CompressionQuality graphics/tjpegimage.compressionquality.html + GrayScale graphics/tjpegimage.grayscale.html + ProgressiveEncoding graphics/tjpegimage.progressiveencoding.html + Performance graphics/tjpegimage.performance.html + InitializeReader graphics/tfpimagebitmap.initializereader.html + InitializeWriter graphics/tfpimagebitmap.initializewriter.html + FinalizeReader graphics/tfpimagebitmap.finalizereader.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetWriterClass graphics/tfpimagebitmap.getwriterclass.html + GetSharedImageClass graphics/trasterimage.getsharedimageclass.html + GetFileExtensions graphics/tgraphic.getfileextensions.html + TSharedTiffImage graphics/tsharedtiffimage.html + TTiffImage graphics/ttiffimage.html + InitializeReader graphics/tfpimagebitmap.initializereader.html + InitializeWriter graphics/tfpimagebitmap.initializewriter.html + FinalizeReader graphics/tfpimagebitmap.finalizereader.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetWriterClass graphics/tfpimagebitmap.getwriterclass.html + GetSharedImageClass graphics/ttiffimage.getsharedimageclass.html + Create graphics/ttiffimage.create.html + GetFileExtensions + Artist graphics/ttiffimage.artist.html + Copyright graphics/ttiffimage.copyright.html + DateTime graphics/ttiffimage.datetime.html + DocumentName graphics/ttiffimage.documentname.html + HostComputer graphics/ttiffimage.hostcomputer.html + ImageDescription graphics/ttiffimage.imagedescription.html + Make graphics/ttiffimage.make.html + Model graphics/ttiffimage.model.html + ResolutionUnit graphics/ttiffimage.resolutionunit.html + Software graphics/ttiffimage.software.html + XResolution graphics/ttiffimage.xresolution.html + YResolution graphics/ttiffimage.yresolution.html + TSharedGIFImage graphics/tsharedgifimage.html + TGIFImage graphics/tgifimage.html + InitializeReader graphics/tfpimagebitmap.initializereader.html + FinalizeReader graphics/tfpimagebitmap.finalizereader.html + GetReaderClass graphics/tfpimagebitmap.getreaderclass.html + GetSharedImageClass graphics/tgifimage.getsharedimageclass.html + Create graphics/tgifimage.create.html + IsStreamFormatSupported graphics/tgifimage.isstreamformatsupported.html + GetFileExtensions + Transparent graphics/tgifimage.transparent.html + Interlaced graphics/tgifimage.interlaced.html + BitsPerPixel graphics/tgifimage.bitsperpixel.html + GraphicFilter graphics/graphicfilter.html + GraphicExtension graphics/graphicextension.html + GraphicFileMask graphics/graphicfilemask.html + GetGraphicClassForFileExtension graphics/getgraphicclassforfileextension.html + IdentEntry graphics/idententry.html + ColorToIdent graphics/colortoident.html + IdentToColor graphics/identtocolor.html + ColorIndex graphics/colorindex.html + SysColorToSysColorIndex graphics/syscolortosyscolorindex.html + ColorToRGB graphics/colortorgb.html + ColorToString graphics/colortostring.html + StringToColor graphics/stringtocolor.html + StringToColorDef graphics/stringtocolordef.html + GetColorValues graphics/getcolorvalues.html + InvertColor graphics/invertcolor.html + DecColor graphics/deccolor.html + IsSysColor graphics/issyscolor.html + Blue graphics/blue.html + Green graphics/green.html + Red graphics/red.html + RGBToColor graphics/rgbtocolor.html + RedGreenBlue graphics/redgreenblue.html + FPColorToTColorRef graphics/fpcolortotcolorref.html + FPColorToTColor graphics/fpcolortotcolor.html + TColorToFPColor graphics/tcolortofpcolor.html + GetCharsetValues graphics/getcharsetvalues.html + CharsetToIdent graphics/charsettoident.html + IdentToCharset graphics/identtocharset.html + GetFontData graphics/getfontdata.html + GetDefFontCharSet graphics/getdeffontcharset.html + IsFontNameXLogicalFontDesc graphics/isfontnamexlogicalfontdesc.html + XLFDNameToLogFont graphics/xlfdnametologfont.html + ExtractXLFDItem graphics/extractxlfditem.html + ExtractFamilyFromXLFDName graphics/extractfamilyfromxlfdname.html + ClearXLFDItem graphics/clearxlfditem.html + ClearXLFDHeight graphics/clearxlfdheight.html + ClearXLFDPitch graphics/clearxlfdpitch.html + ClearXLFDStyle graphics/clearxlfdstyle.html + XLFDHeightIsSet graphics/xlfdheightisset.html + FontNameToPangoFontDescStr graphics/fontnametopangofontdescstr.html + TestStreamIsBMP graphics/teststreamisbmp.html + TestStreamIsXPM graphics/teststreamisxpm.html + TestStreamIsIcon graphics/teststreamisicon.html + TestStreamIsCursor graphics/teststreamiscursor.html + XPMToPPChar graphics/xpmtoppchar.html + LazResourceXPMToPPChar graphics/lazresourcexpmtoppchar.html + ReadXPMFromStream graphics/readxpmfromstream.html + ReadXPMSize graphics/readxpmsize.html + LoadCursorFromLazarusResource graphics/loadcursorfromlazarusresource.html + LoadBitmapFromLazarusResource graphics/loadbitmapfromlazarusresource.html + LoadBitmapFromLazarusResourceHandle graphics/loadbitmapfromlazarusresourcehandle.html + CreateGraphicFromResourceName graphics/creategraphicfromresourcename.html + CreateBitmapFromResourceName graphics/createbitmapfromresourcename.html + CreateBitmapFromLazarusResource graphics/createbitmapfromlazarusresource.html + CreateCompatibleBitmaps graphics/createcompatiblebitmaps.html + CreateBitmapFromFPImage graphics/createbitmapfromfpimage.html + DbgS graphics/dbgs.html + ScaleX graphics/scalex.html + ScaleY graphics/scaley.html + Register graphics/register.html + UpdateHandleObjects graphics/updatehandleobjects.html + OnLoadSaveClipBrdGraphicValid graphics/onloadsaveclipbrdgraphicvalid.html + OnLoadGraphicFromClipboardFormat graphics/onloadgraphicfromclipboardformat.html + OnSaveGraphicToClipboardFormat graphics/onsavegraphictoclipboardformat.html + OnGetSystemFont graphics/ongetsystemfont.html + ScreenInfo graphics/screeninfo.html + FontResourceCache graphics/fontresourcecache.html + PenResourceCache graphics/penresourcecache.html + BrushResourceCache graphics/brushresourcecache.html + LResources lresources/index.html + LRSComment lresources/lrscomment.html + ObjStreamMaskInherited lresources/objstreammaskinherited.html + ObjStreamMaskChildPos lresources/objstreammaskchildpos.html + ObjStreamMaskInline lresources/objstreammaskinline.html + TFilerSignature lresources/tfilersignature.html + TLRSItemType lresources/tlrsitemtype.html + TLRSORStackItem lresources/tlrsorstackitem.html + PLRSORStackItem lresources/plrsorstackitem.html + TLRSObjectReaderClass lresources/tlrsobjectreaderclass.html + TLRSOWStackItemState lresources/tlrsowstackitemstate.html + TLRSOWStackItem lresources/tlrsowstackitem.html + PLRSOWStackItem lresources/plrsowstackitem.html + TLRSObjectWriterClass lresources/tlrsobjectwriterclass.html + TLRPositionLink lresources/tlrpositionlink.html + PLRPositionLink lresources/plrpositionlink.html + TPropertyToSkip lresources/tpropertytoskip.html + PRemovedProperty lresources/premovedproperty.html + TLRSStreamOriginalFormat lresources/tlrsstreamoriginalformat.html + TLResource lresources/tlresource.html + Name lresources/tlresource.name.html + ValueType lresources/tlresource.valuetype.html + Value lresources/tlresource.value.html + TLResourceList lresources/tlresourcelist.html + Create lresources/tlresourcelist.create.html + Destroy lresources/tlresourcelist.destroy.html + Add lresources/tlresourcelist.add.html + Find lresources/tlresourcelist.find.html + Count lresources/tlresourcelist.count.html + Items lresources/tlresourcelist.items.html + TLazarusResourceStream lresources/tlazarusresourcestream.html + Create lresources/tlazarusresourcestream.create.html + CreateFromID lresources/tlazarusresourcestream.createfromid.html + CreateFromHandle lresources/tlazarusresourcestream.createfromhandle.html + Destroy lresources/tlazarusresourcestream.destroy.html + Write lresources/tlazarusresourcestream.write.html + Res lresources/tlazarusresourcestream.res.html + TAbstractTranslator lresources/tabstracttranslator.html + TranslateStringProperty lresources/tabstracttranslator.translatestringproperty.html + TLRSObjectReader lresources/tlrsobjectreader.html + ReadIntegerContent lresources/tlrsobjectreader.readintegercontent.html + Create lresources/tlrsobjectreader.create.html + Destroy lresources/tlrsobjectreader.destroy.html + NextValue lresources/tlrsobjectreader.nextvalue.html + ReadValue lresources/tlrsobjectreader.readvalue.html + BeginRootComponent lresources/tlrsobjectreader.beginrootcomponent.html + BeginComponent lresources/tlrsobjectreader.begincomponent.html + BeginProperty lresources/tlrsobjectreader.beginproperty.html + GetStackPath lresources/tlrsobjectreader.getstackpath.html + Read lresources/tlrsobjectreader.read.html + ReadBinary lresources/tlrsobjectreader.readbinary.html + ReadFloat lresources/tlrsobjectreader.readfloat.html + ReadSingle lresources/tlrsobjectreader.readsingle.html + ReadCurrency lresources/tlrsobjectreader.readcurrency.html + ReadDate lresources/tlrsobjectreader.readdate.html + ReadIdent lresources/tlrsobjectreader.readident.html + ReadInt8 lresources/tlrsobjectreader.readint8.html + ReadInt16 lresources/tlrsobjectreader.readint16.html + ReadInt32 lresources/tlrsobjectreader.readint32.html + ReadInt64 lresources/tlrsobjectreader.readint64.html + ReadSet lresources/tlrsobjectreader.readset.html + ReadStr lresources/tlrsobjectreader.readstr.html + ReadString lresources/tlrsobjectreader.readstring.html + ReadWideString lresources/tlrsobjectreader.readwidestring.html + ReadUnicodeString lresources/tlrsobjectreader.readunicodestring.html + SkipComponent lresources/tlrsobjectreader.skipcomponent.html + SkipValue lresources/tlrsobjectreader.skipvalue.html + Stream lresources/tlrsobjectreader.stream.html + Reader lresources/tlrsobjectreader.reader.html + TLRSObjectWriter lresources/tlrsobjectwriter.html + FlushBuffer lresources/tlrsobjectwriter.flushbuffer.html + WriteValue lresources/tlrsobjectwriter.writevalue.html + WriteStr lresources/tlrsobjectwriter.writestr.html + WriteIntegerContent lresources/tlrsobjectwriter.writeintegercontent.html + WriteWordContent lresources/tlrsobjectwriter.writewordcontent.html + WriteInt64Content lresources/tlrsobjectwriter.writeint64content.html + WriteSingleContent lresources/tlrsobjectwriter.writesinglecontent.html + WriteDoubleContent lresources/tlrsobjectwriter.writedoublecontent.html + WriteExtendedContent lresources/tlrsobjectwriter.writeextendedcontent.html + WriteCurrencyContent lresources/tlrsobjectwriter.writecurrencycontent.html + WriteWideStringContent lresources/tlrsobjectwriter.writewidestringcontent.html + WriteWordsReversed lresources/tlrsobjectwriter.writewordsreversed.html + WriteNulls lresources/tlrsobjectwriter.writenulls.html + Create lresources/tlrsobjectwriter.create.html + Destroy lresources/tlrsobjectwriter.destroy.html + BeginCollection lresources/tlrsobjectwriter.begincollection.html + BeginComponent lresources/tlrsobjectwriter.begincomponent.html + BeginList lresources/tlrsobjectwriter.beginlist.html + EndList lresources/tlrsobjectwriter.endlist.html + BeginProperty lresources/tlrsobjectwriter.beginproperty.html + EndProperty lresources/tlrsobjectwriter.endproperty.html + GetStackPath lresources/tlrsobjectwriter.getstackpath.html + Write lresources/tlrsobjectwriter.write.html + WriteBinary lresources/tlrsobjectwriter.writebinary.html + WriteBoolean lresources/tlrsobjectwriter.writeboolean.html + WriteFloat lresources/tlrsobjectwriter.writefloat.html + WriteSingle lresources/tlrsobjectwriter.writesingle.html + WriteCurrency lresources/tlrsobjectwriter.writecurrency.html + WriteDate lresources/tlrsobjectwriter.writedate.html + WriteIdent lresources/tlrsobjectwriter.writeident.html + WriteInteger lresources/tlrsobjectwriter.writeinteger.html + WriteMethodName lresources/tlrsobjectwriter.writemethodname.html + WriteSet lresources/tlrsobjectwriter.writeset.html + WriteString lresources/tlrsobjectwriter.writestring.html + WriteWideString lresources/tlrsobjectwriter.writewidestring.html + WriteUnicodeString lresources/tlrsobjectwriter.writeunicodestring.html + WriteEmptyInheritedChilds lresources/tlrsobjectwriter.writeemptyinheritedchilds.html + Writer lresources/tlrsobjectwriter.writer.html + TLRPositionLinks lresources/tlrpositionlinks.html + Create lresources/tlrpositionlinks.create.html + Destroy lresources/tlrpositionlinks.destroy.html + Clear lresources/tlrpositionlinks.clear.html + Sort lresources/tlrpositionlinks.sort.html + IndexOf lresources/tlrpositionlinks.indexof.html + IndexOfRange lresources/tlrpositionlinks.indexofrange.html + SetPosition lresources/tlrpositionlinks.setposition.html + Add lresources/tlrpositionlinks.add.html + LFM lresources/tlrpositionlinks.lfm.html + LRS lresources/tlrpositionlinks.lrs.html + Data lresources/tlrpositionlinks.data.html + Count lresources/tlrpositionlinks.count.html + TUTF8Parser lresources/tutf8parser.html + Create lresources/tutf8parser.create.html + Destroy lresources/tutf8parser.destroy.html + CheckToken lresources/tutf8parser.checktoken.html + CheckTokenSymbol lresources/tutf8parser.checktokensymbol.html + Error lresources/tutf8parser.error.html + ErrorFmt lresources/tutf8parser.errorfmt.html + ErrorStr lresources/tutf8parser.errorstr.html + HexToBinary lresources/tutf8parser.hextobinary.html + NextToken lresources/tutf8parser.nexttoken.html + SourcePos lresources/tutf8parser.sourcepos.html + TokenComponentIdent lresources/tutf8parser.tokencomponentident.html + TokenFloat lresources/tutf8parser.tokenfloat.html + TokenInt lresources/tutf8parser.tokenint.html + TokenString lresources/tutf8parser.tokenstring.html + TokenSymbolIs lresources/tutf8parser.tokensymbolis.html + FloatType lresources/tutf8parser.floattype.html + SourceLine lresources/tutf8parser.sourceline.html + SourceColumn lresources/tutf8parser.sourcecolumn.html + Token lresources/tutf8parser.token.html + TCustomLazComponentQueue lresources/tcustomlazcomponentqueue.html + FQueue lresources/tcustomlazcomponentqueue.fqueue.html + ReadComponentSize lresources/tcustomlazcomponentqueue.readcomponentsize.html + Create lresources/tcustomlazcomponentqueue.create.html + Destroy lresources/tcustomlazcomponentqueue.destroy.html + Clear lresources/tcustomlazcomponentqueue.clear.html + Write lresources/tcustomlazcomponentqueue.write.html + CopyFrom lresources/tcustomlazcomponentqueue.copyfrom.html + HasComponent lresources/tcustomlazcomponentqueue.hascomponent.html + ReadComponent lresources/tcustomlazcomponentqueue.readcomponent.html + ConvertComponentAsString lresources/tcustomlazcomponentqueue.convertcomponentasstring.html + OnFindComponentClass lresources/tcustomlazcomponentqueue.onfindcomponentclass.html + TLazComponentQueue lresources/tlazcomponentqueue.html + Name lresources/tlazcomponentqueue.name.html + OnFindComponentClass lresources/tlazcomponentqueue.onfindcomponentclass.html + TPropertiesToSkip lresources/tpropertiestoskip.html + Notify lresources/tpropertiestoskip.notify.html + DoPropertyNotFound lresources/tpropertiestoskip.dopropertynotfound.html + IndexOf lresources/tpropertiestoskip.indexof.html + Add lresources/tpropertiestoskip.add.html + Items lresources/tpropertiestoskip.items.html + InitResourceComponent lresources/initresourcecomponent.html + InitLazResourceComponent lresources/initlazresourcecomponent.html + CreateLRSReader lresources/createlrsreader.html + CreateLRSWriter lresources/createlrswriter.html + GetClassNameFromLRSStream lresources/getclassnamefromlrsstream.html + GetComponentInfoFromLRSStream lresources/getcomponentinfofromlrsstream.html + WriteComponentAsBinaryToStream lresources/writecomponentasbinarytostream.html + ReadComponentFromBinaryStream lresources/readcomponentfrombinarystream.html + WriteComponentAsTextToStream lresources/writecomponentastexttostream.html + ReadComponentFromTextStream lresources/readcomponentfromtextstream.html + SaveComponentToConfig lresources/savecomponenttoconfig.html + LoadComponentFromConfig lresources/loadcomponentfromconfig.html + CompareComponents lresources/comparecomponents.html + CompareMemStreams lresources/comparememstreams.html + BinaryToLazarusResourceCode lresources/binarytolazarusresourcecode.html + LFMtoLRSfile lresources/lfmtolrsfile.html + LFMtoLRSstream lresources/lfmtolrsstream.html + FindLFMClassName lresources/findlfmclassname.html + ReadLFMHeader lresources/readlfmheader.html + ReadLFMHeaderFromFile lresources/readlfmheaderfromfile.html + CreateLFMFile lresources/createlfmfile.html + LRSObjectBinaryToText lresources/lrsobjectbinarytotext.html + LRSObjectTextToBinary lresources/lrsobjecttexttobinary.html + LRSObjectToText lresources/lrsobjecttotext.html + LRSObjectResourceToText lresources/lrsobjectresourcetotext.html + LRSObjectResToText lresources/lrsobjectrestotext.html + TestFormStreamFormat lresources/testformstreamformat.html + FormDataToText lresources/formdatatotext.html + FindResourceLFM lresources/findresourcelfm.html + DefineRectProperty lresources/definerectproperty.html + ReverseBytes lresources/reversebytes.html + ReverseByteOrderInWords lresources/reversebyteorderinwords.html + ConvertLRSExtendedToDouble lresources/convertlrsextendedtodouble.html + ConvertEndianBigDoubleToLRSExtended lresources/convertendianbigdoubletolrsextended.html + ConvertLEDoubleToLRSExtended lresources/convertledoubletolrsextended.html + ReadLRSShortInt lresources/readlrsshortint.html + ReadLRSByte lresources/readlrsbyte.html + ReadLRSSmallInt lresources/readlrssmallint.html + ReadLRSWord lresources/readlrsword.html + ReadLRSInteger lresources/readlrsinteger.html + ReadLRSCardinal lresources/readlrscardinal.html + ReadLRSInt64 lresources/readlrsint64.html + ReadLRSSingle lresources/readlrssingle.html + ReadLRSDouble lresources/readlrsdouble.html + ReadLRSExtended lresources/readlrsextended.html + ReadLRSCurrency lresources/readlrscurrency.html + ReadLRSWideString lresources/readlrswidestring.html + ReadLRSEndianLittleExtendedAsDouble lresources/readlrsendianlittleextendedasdouble.html + ReadLRSValueType lresources/readlrsvaluetype.html + ReadLRSInt64MB lresources/readlrsint64mb.html + WriteLRSSmallInt lresources/writelrssmallint.html + WriteLRSWord lresources/writelrsword.html + WriteLRSInteger lresources/writelrsinteger.html + WriteLRSCardinal lresources/writelrscardinal.html + WriteLRSSingle lresources/writelrssingle.html + WriteLRSDouble lresources/writelrsdouble.html + WriteLRSExtended lresources/writelrsextended.html + WriteLRSInt64 lresources/writelrsint64.html + WriteLRSCurrency lresources/writelrscurrency.html + WriteLRSWideStringContent lresources/writelrswidestringcontent.html + WriteLRSInt64MB lresources/writelrsint64mb.html + WriteLRSReversedWord lresources/writelrsreversedword.html + WriteLRS4BytesReversed lresources/writelrs4bytesreversed.html + WriteLRS8BytesReversed lresources/writelrs8bytesreversed.html + WriteLRS10BytesReversed lresources/writelrs10bytesreversed.html + WriteLRSNull lresources/writelrsnull.html + WriteLRSEndianBigDoubleAsEndianLittleExtended lresources/writelrsendianbigdoubleasendianlittleextended.html + WriteLRSDoubleAsExtended lresources/writelrsdoubleasextended.html + WriteLRSReversedWords lresources/writelrsreversedwords.html + FloatToLFMStr lresources/floattolfmstr.html + CompareLRPositionLinkWithLFMPosition lresources/comparelrpositionlinkwithlfmposition.html + CompareLRPositionLinkWithLRSPosition lresources/comparelrpositionlinkwithlrsposition.html + RegisterPropertyToSkip lresources/registerpropertytoskip.html + Register lresources/register.html + LRSTranslator lresources/lrstranslator.html + LazarusResources lresources/lazarusresources.html + PropertiesToSkip lresources/propertiestoskip.html + LRSObjectReaderClass lresources/lrsobjectreaderclass.html + LRSObjectWriterClass lresources/lrsobjectwriterclass.html + DynQueue dynqueue/index.html + TDynamicQueueItem dynqueue/tdynamicqueueitem.html + PDynamicQueueItem dynqueue/pdynamicqueueitem.html + ListOfPDynamicQueueItem dynqueue/listofpdynamicqueueitem.html + TDynamicDataQueue dynqueue/tdynamicdataqueue.html + Create dynqueue/tdynamicdataqueue.create.html + Destroy dynqueue/tdynamicdataqueue.destroy.html + Clear dynqueue/tdynamicdataqueue.clear.html + ConsistencyCheck dynqueue/tdynamicdataqueue.consistencycheck.html + WriteDebugReport dynqueue/tdynamicdataqueue.writedebugreport.html + Push dynqueue/tdynamicdataqueue.push.html + Pop dynqueue/tdynamicdataqueue.pop.html + Top dynqueue/tdynamicdataqueue.top.html + Size dynqueue/tdynamicdataqueue.size.html + MinimumBlockSize dynqueue/tdynamicdataqueue.minimumblocksize.html + MaximumBlockSize dynqueue/tdynamicdataqueue.maximumblocksize.html + LCLResCache lclrescache/index.html + TResourceCacheItemClass lclrescache/tresourcecacheitemclass.html + TResourceCacheDescriptorClass lclrescache/tresourcecachedescriptorclass.html + TResourceCacheItem lclrescache/tresourcecacheitem.html + FDestroying lclrescache/tresourcecacheitem.fdestroying.html + FReferenceCount lclrescache/tresourcecacheitem.freferencecount.html + Handle lclrescache/tresourcecacheitem.handle.html + Cache lclrescache/tresourcecacheitem.cache.html + FirstDescriptor lclrescache/tresourcecacheitem.firstdescriptor.html + LastDescriptor lclrescache/tresourcecacheitem.lastdescriptor.html + Next lclrescache/tresourcecacheitem.next.html + Prev lclrescache/tresourcecacheitem.prev.html + IncreaseRefCount lclrescache/tresourcecacheitem.increaserefcount.html + DecreaseRefCount lclrescache/tresourcecacheitem.decreaserefcount.html + AddToList lclrescache/tresourcecacheitem.addtolist.html + RemoveFromList lclrescache/tresourcecacheitem.removefromlist.html + WarnReferenceHigh lclrescache/tresourcecacheitem.warnreferencehigh.html + ReferenceCount lclrescache/tresourcecacheitem.referencecount.html + Create ms-its:rtl.chm::/system/tobject.create.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + TResourceCacheDescriptor lclrescache/tresourcecachedescriptor.html + FDestroying lclrescache/tresourcecachedescriptor.fdestroying.html + Item lclrescache/tresourcecachedescriptor.item.html + Cache lclrescache/tresourcecachedescriptor.cache.html + Next lclrescache/tresourcecachedescriptor.next.html + Prev lclrescache/tresourcecachedescriptor.prev.html + AddToList lclrescache/tresourcecachedescriptor.addtolist.html + RemoveFromList lclrescache/tresourcecachedescriptor.removefromlist.html + Create ms-its:rtl.chm::/system/tobject.create.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + TResourceCache lclrescache/tresourcecache.html + FItems lclrescache/tresourcecache.fitems.html + FDescriptors lclrescache/tresourcecache.fdescriptors.html + FDestroying lclrescache/tresourcecache.fdestroying.html + FResourceCacheDescriptorClass lclrescache/tresourcecache.fresourcecachedescriptorclass.html + FResourceCacheItemClass lclrescache/tresourcecache.fresourcecacheitemclass.html + FMaxUnusedItem lclrescache/tresourcecache.fmaxunuseditem.html + FFirstUnusedItem lclrescache/tresourcecache.ffirstunuseditem.html + FLastUnusedItem lclrescache/tresourcecache.flastunuseditem.html + FUnUsedItemCount lclrescache/tresourcecache.funuseditemcount.html + FLock lclrescache/tresourcecache.flock.html + RemoveItem lclrescache/tresourcecache.removeitem.html + RemoveDescriptor lclrescache/tresourcecache.removedescriptor.html + ItemUsed lclrescache/tresourcecache.itemused.html + ItemUnused lclrescache/tresourcecache.itemunused.html + ItemIsUsed lclrescache/tresourcecache.itemisused.html + Clear lclrescache/tresourcecache.clear.html + CompareItems lclrescache/tresourcecache.compareitems.html + CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html + ConsistencyCheck lclrescache/tresourcecache.consistencycheck.html + Lock lclrescache/tresourcecache.lock.html + Unlock lclrescache/tresourcecache.unlock.html + MaxUnusedItem lclrescache/tresourcecache.maxunuseditem.html + ResourceCacheItemClass lclrescache/tresourcecache.resourcecacheitemclass.html + ResourceCacheDescriptorClass lclrescache/tresourcecache.resourcecachedescriptorclass.html + Create ms-its:rtl.chm::/system/tobject.create.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + THandleResourceCache lclrescache/thandleresourcecache.html + FindItem lclrescache/thandleresourcecache.finditem.html + TBlockResourceCacheDescriptor lclrescache/tblockresourcecachedescriptor.html + Data lclrescache/tblockresourcecachedescriptor.data.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + TBlockResourceCache lclrescache/tblockresourcecache.html + FOnCompareDescPtrWithDescriptor lclrescache/tblockresourcecache.foncomparedescptrwithdescriptor.html + FindDescriptor lclrescache/tblockresourcecache.finddescriptor.html + AddResource lclrescache/tblockresourcecache.addresource.html + DataSize lclrescache/tblockresourcecache.datasize.html + OnCompareDescPtrWithDescriptor lclrescache/tblockresourcecache.oncomparedescptrwithdescriptor.html + Create ms-its:rtl.chm::/system/tobject.create.html + CompareDescriptors lclrescache/tresourcecache.comparedescriptors.html + ComparePHandleWithResourceCacheItem lclrescache/comparephandlewithresourcecacheitem.html + CompareDescPtrWithBlockResDesc lclrescache/comparedescptrwithblockresdesc.html + TmSchema tmschema/index.html + TMTVS_RESERVEDLOW tmschema/tmtvs_reservedlow.html + TMTVS_RESERVEDHIGH tmschema/tmtvs_reservedhigh.html + VSCLASS_AEROWIZARDSTYLE tmschema/vsclass_aerowizardstyle.html + VSCLASS_AEROWIZARD tmschema/vsclass_aerowizard.html + AW_TITLEBAR tmschema/aw_titlebar.html + AW_HEADERAREA tmschema/aw_headerarea.html + AW_CONTENTAREA tmschema/aw_contentarea.html + AW_COMMANDAREA tmschema/aw_commandarea.html + AW_BUTTON tmschema/aw_button.html + AW_S_TITLEBAR_ACTIVE tmschema/aw_s_titlebar_active.html + AW_S_TITLEBAR_INACTIVE tmschema/aw_s_titlebar_inactive.html + AW_S_HEADERAREA_NOMARGIN tmschema/aw_s_headerarea_nomargin.html + AW_S_CONTENTAREA_NOMARGIN tmschema/aw_s_contentarea_nomargin.html + VSCLASS_BUTTONSTYLE tmschema/vsclass_buttonstyle.html + VSCLASS_BUTTON tmschema/vsclass_button.html + BP_PUSHBUTTON tmschema/bp_pushbutton.html + BP_RADIOBUTTON tmschema/bp_radiobutton.html + BP_CHECKBOX tmschema/bp_checkbox.html + BP_GROUPBOX tmschema/bp_groupbox.html + BP_USERBUTTON tmschema/bp_userbutton.html + BP_COMMANDLINK tmschema/bp_commandlink.html + BP_COMMANDLINKGLYPH tmschema/bp_commandlinkglyph.html + PBS_NORMAL tmschema/pbs_normal.html + PBS_HOT tmschema/pbs_hot.html + PBS_PRESSED tmschema/pbs_pressed.html + PBS_DISABLED tmschema/pbs_disabled.html + PBS_DEFAULTED tmschema/pbs_defaulted.html + PBS_DEFAULTED_ANIMATING tmschema/pbs_defaulted_animating.html + RBS_UNCHECKEDNORMAL tmschema/rbs_uncheckednormal.html + RBS_UNCHECKEDHOT tmschema/rbs_uncheckedhot.html + RBS_UNCHECKEDPRESSED tmschema/rbs_uncheckedpressed.html + RBS_UNCHECKEDDISABLED tmschema/rbs_uncheckeddisabled.html + RBS_CHECKEDNORMAL tmschema/rbs_checkednormal.html + RBS_CHECKEDHOT tmschema/rbs_checkedhot.html + RBS_CHECKEDPRESSED tmschema/rbs_checkedpressed.html + RBS_CHECKEDDISABLED tmschema/rbs_checkeddisabled.html + CBS_UNCHECKEDNORMAL tmschema/cbs_uncheckednormal.html + CBS_UNCHECKEDHOT tmschema/cbs_uncheckedhot.html + CBS_UNCHECKEDPRESSED tmschema/cbs_uncheckedpressed.html + CBS_UNCHECKEDDISABLED tmschema/cbs_uncheckeddisabled.html + CBS_CHECKEDNORMAL tmschema/cbs_checkednormal.html + CBS_CHECKEDHOT tmschema/cbs_checkedhot.html + CBS_CHECKEDPRESSED tmschema/cbs_checkedpressed.html + CBS_CHECKEDDISABLED tmschema/cbs_checkeddisabled.html + CBS_MIXEDNORMAL tmschema/cbs_mixednormal.html + CBS_MIXEDHOT tmschema/cbs_mixedhot.html + CBS_MIXEDPRESSED tmschema/cbs_mixedpressed.html + CBS_MIXEDDISABLED tmschema/cbs_mixeddisabled.html + CBS_IMPLICITNORMAL tmschema/cbs_implicitnormal.html + CBS_IMPLICITHOT tmschema/cbs_implicithot.html + CBS_IMPLICITPRESSED tmschema/cbs_implicitpressed.html + CBS_IMPLICITDISABLED tmschema/cbs_implicitdisabled.html + CBS_EXCLUDEDNORMAL tmschema/cbs_excludednormal.html + CBS_EXCLUDEDHOT tmschema/cbs_excludedhot.html + CBS_EXCLUDEDPRESSED tmschema/cbs_excludedpressed.html + CBS_EXCLUDEDDISABLED tmschema/cbs_excludeddisabled.html + GBS_NORMAL tmschema/gbs_normal.html + GBS_DISABLED tmschema/gbs_disabled.html + CMDLS_NORMAL tmschema/cmdls_normal.html + CMDLS_HOT tmschema/cmdls_hot.html + CMDLS_PRESSED tmschema/cmdls_pressed.html + CMDLS_DISABLED tmschema/cmdls_disabled.html + CMDLS_DEFAULTED tmschema/cmdls_defaulted.html + CMDLS_DEFAULTED_ANIMATING tmschema/cmdls_defaulted_animating.html + CMDLGS_NORMAL tmschema/cmdlgs_normal.html + CMDLGS_HOT tmschema/cmdlgs_hot.html + CMDLGS_PRESSED tmschema/cmdlgs_pressed.html + CMDLGS_DISABLED tmschema/cmdlgs_disabled.html + CMDLGS_DEFAULTED tmschema/cmdlgs_defaulted.html + VSCLASS_COMBOBOXSTYLE tmschema/vsclass_comboboxstyle.html + VSCLASS_COMBOBOX tmschema/vsclass_combobox.html + CP_DROPDOWNBUTTON tmschema/cp_dropdownbutton.html + CP_BACKGROUND tmschema/cp_background.html + CP_TRANSPARENTBACKGROUND tmschema/cp_transparentbackground.html + CP_BORDER tmschema/cp_border.html + CP_READONLY tmschema/cp_readonly.html + CP_DROPDOWNBUTTONRIGHT tmschema/cp_dropdownbuttonright.html + CP_DROPDOWNBUTTONLEFT tmschema/cp_dropdownbuttonleft.html + CP_CUEBANNER tmschema/cp_cuebanner.html + CBXS_NORMAL tmschema/cbxs_normal.html + CBXS_HOT tmschema/cbxs_hot.html + CBXS_PRESSED tmschema/cbxs_pressed.html + CBXS_DISABLED tmschema/cbxs_disabled.html + CBXSR_NORMAL tmschema/cbxsr_normal.html + CBXSR_HOT tmschema/cbxsr_hot.html + CBXSR_PRESSED tmschema/cbxsr_pressed.html + CBXSR_DISABLED tmschema/cbxsr_disabled.html + CBXSL_NORMAL tmschema/cbxsl_normal.html + CBXSL_HOT tmschema/cbxsl_hot.html + CBXSL_PRESSED tmschema/cbxsl_pressed.html + CBXSL_DISABLED tmschema/cbxsl_disabled.html + CBTBS_NORMAL tmschema/cbtbs_normal.html + CBTBS_HOT tmschema/cbtbs_hot.html + CBTBS_DISABLED tmschema/cbtbs_disabled.html + CBTBS_FOCUSED tmschema/cbtbs_focused.html + CBB_NORMAL tmschema/cbb_normal.html + CBB_HOT tmschema/cbb_hot.html + CBB_FOCUSED tmschema/cbb_focused.html + CBB_DISABLED tmschema/cbb_disabled.html + CBRO_NORMAL tmschema/cbro_normal.html + CBRO_HOT tmschema/cbro_hot.html + CBRO_PRESSED tmschema/cbro_pressed.html + CBRO_DISABLED tmschema/cbro_disabled.html + CBCB_NORMAL tmschema/cbcb_normal.html + CBCB_HOT tmschema/cbcb_hot.html + CBCB_PRESSED tmschema/cbcb_pressed.html + CBCB_DISABLED tmschema/cbcb_disabled.html + VSCLASS_COMMUNICATIONSSTYLE tmschema/vsclass_communicationsstyle.html + VSCLASS_COMMUNICATIONS tmschema/vsclass_communications.html + CSST_TAB tmschema/csst_tab.html + CSTB_NORMAL tmschema/cstb_normal.html + CSTB_HOT tmschema/cstb_hot.html + CSTB_SELECTED tmschema/cstb_selected.html + VSCLASS_CONTROLPANELSTYLE tmschema/vsclass_controlpanelstyle.html + VSCLASS_CONTROLPANEL tmschema/vsclass_controlpanel.html + CPANEL_NAVIGATIONPANE tmschema/cpanel_navigationpane.html + CPANEL_CONTENTPANE tmschema/cpanel_contentpane.html + CPANEL_NAVIGATIONPANELABEL tmschema/cpanel_navigationpanelabel.html + CPANEL_CONTENTPANELABEL tmschema/cpanel_contentpanelabel.html + CPANEL_TITLE tmschema/cpanel_title.html + CPANEL_BODYTEXT tmschema/cpanel_bodytext.html + CPANEL_HELPLINK tmschema/cpanel_helplink.html + CPANEL_TASKLINK tmschema/cpanel_tasklink.html + CPANEL_GROUPTEXT tmschema/cpanel_grouptext.html + CPANEL_CONTENTLINK tmschema/cpanel_contentlink.html + CPANEL_SECTIONTITLELINK tmschema/cpanel_sectiontitlelink.html + CPANEL_LARGECOMMANDAREA tmschema/cpanel_largecommandarea.html + CPANEL_SMALLCOMMANDAREA tmschema/cpanel_smallcommandarea.html + CPANEL_BUTTON tmschema/cpanel_button.html + CPANEL_MESSAGETEXT tmschema/cpanel_messagetext.html + CPANEL_NAVIGATIONPANELINE tmschema/cpanel_navigationpaneline.html + CPANEL_CONTENTPANELINE tmschema/cpanel_contentpaneline.html + CPANEL_BANNERAREA tmschema/cpanel_bannerarea.html + CPANEL_BODYTITLE tmschema/cpanel_bodytitle.html + CPHL_NORMAL tmschema/cphl_normal.html + CPHL_HOT tmschema/cphl_hot.html + CPHL_PRESSED tmschema/cphl_pressed.html + CPHL_DISABLED tmschema/cphl_disabled.html + CPTL_NORMAL tmschema/cptl_normal.html + CPTL_HOT tmschema/cptl_hot.html + CPTL_PRESSED tmschema/cptl_pressed.html + CPTL_DISABLED tmschema/cptl_disabled.html + CPTL_PAGE tmschema/cptl_page.html + CPCL_NORMAL tmschema/cpcl_normal.html + CPCL_HOT tmschema/cpcl_hot.html + CPCL_PRESSED tmschema/cpcl_pressed.html + CPCL_DISABLED tmschema/cpcl_disabled.html + CPSTL_NORMAL tmschema/cpstl_normal.html + CPSTL_HOT tmschema/cpstl_hot.html + VSCLASS_DATEPICKERSTYLE tmschema/vsclass_datepickerstyle.html + VSCLASS_DATEPICKER tmschema/vsclass_datepicker.html + DP_DATETEXT tmschema/dp_datetext.html + DP_DATEBORDER tmschema/dp_dateborder.html + DP_SHOWCALENDARBUTTONRIGHT tmschema/dp_showcalendarbuttonright.html + DPDT_NORMAL tmschema/dpdt_normal.html + DPDT_DISABLED tmschema/dpdt_disabled.html + DPDT_SELECTED tmschema/dpdt_selected.html + DPDB_NORMAL tmschema/dpdb_normal.html + DPDB_HOT tmschema/dpdb_hot.html + DPDB_FOCUSED tmschema/dpdb_focused.html + DPDB_DISABLED tmschema/dpdb_disabled.html + DPSCBR_NORMAL tmschema/dpscbr_normal.html + DPSCBR_HOT tmschema/dpscbr_hot.html + DPSCBR_PRESSED tmschema/dpscbr_pressed.html + DPSCBR_DISABLED tmschema/dpscbr_disabled.html + VSCLASS_DRAGDROPSTYLE tmschema/vsclass_dragdropstyle.html + VSCLASS_DRAGDROP tmschema/vsclass_dragdrop.html + DD_COPY tmschema/dd_copy.html + DD_MOVE tmschema/dd_move.html + DD_UPDATEMETADATA tmschema/dd_updatemetadata.html + DD_CREATELINK tmschema/dd_createlink.html + DD_WARNING tmschema/dd_warning.html + DD_NONE tmschema/dd_none.html + DD_IMAGEBG tmschema/dd_imagebg.html + DD_TEXTBG tmschema/dd_textbg.html + DDCOPY_HIGHLIGHT tmschema/ddcopy_highlight.html + DDCOPY_NOHIGHLIGHT tmschema/ddcopy_nohighlight.html + DDMOVE_HIGHLIGHT tmschema/ddmove_highlight.html + DDMOVE_NOHIGHLIGHT tmschema/ddmove_nohighlight.html + DDUPDATEMETADATA_HIGHLIGHT tmschema/ddupdatemetadata_highlight.html + DDUPDATEMETADATA_NOHIGHLIGHT tmschema/ddupdatemetadata_nohighlight.html + DDCREATELINK_HIGHLIGHT tmschema/ddcreatelink_highlight.html + DDCREATELINK_NOHIGHLIGHT tmschema/ddcreatelink_nohighlight.html + DDWARNING_HIGHLIGHT tmschema/ddwarning_highlight.html + DDWARNING_NOHIGHLIGHT tmschema/ddwarning_nohighlight.html + DDNONE_HIGHLIGHT tmschema/ddnone_highlight.html + DDNONE_NOHIGHLIGHT tmschema/ddnone_nohighlight.html + VSCLASS_EDITSTYLE tmschema/vsclass_editstyle.html + VSCLASS_EDIT tmschema/vsclass_edit.html + EP_EDITTEXT tmschema/ep_edittext.html + EP_CARET tmschema/ep_caret.html + EP_BACKGROUND tmschema/ep_background.html + EP_PASSWORD tmschema/ep_password.html + EP_BACKGROUNDWITHBORDER tmschema/ep_backgroundwithborder.html + EP_EDITBORDER_NOSCROLL tmschema/ep_editborder_noscroll.html + EP_EDITBORDER_HSCROLL tmschema/ep_editborder_hscroll.html + EP_EDITBORDER_VSCROLL tmschema/ep_editborder_vscroll.html + EP_EDITBORDER_HVSCROLL tmschema/ep_editborder_hvscroll.html + ETS_NORMAL tmschema/ets_normal.html + ETS_HOT tmschema/ets_hot.html + ETS_SELECTED tmschema/ets_selected.html + ETS_DISABLED tmschema/ets_disabled.html + ETS_FOCUSED tmschema/ets_focused.html + ETS_READONLY tmschema/ets_readonly.html + ETS_ASSIST tmschema/ets_assist.html + ETS_CUEBANNER tmschema/ets_cuebanner.html + EBS_NORMAL tmschema/ebs_normal.html + EBS_HOT tmschema/ebs_hot.html + EBS_DISABLED tmschema/ebs_disabled.html + EBS_FOCUSED tmschema/ebs_focused.html + EBS_READONLY tmschema/ebs_readonly.html + EBS_ASSIST tmschema/ebs_assist.html + EBWBS_NORMAL tmschema/ebwbs_normal.html + EBWBS_HOT tmschema/ebwbs_hot.html + EBWBS_DISABLED tmschema/ebwbs_disabled.html + EBWBS_FOCUSED tmschema/ebwbs_focused.html + EPSN_NORMAL tmschema/epsn_normal.html + EPSN_HOT tmschema/epsn_hot.html + EPSN_FOCUSED tmschema/epsn_focused.html + EPSN_DISABLED tmschema/epsn_disabled.html + EPSH_NORMAL tmschema/epsh_normal.html + EPSH_HOT tmschema/epsh_hot.html + EPSH_FOCUSED tmschema/epsh_focused.html + EPSH_DISABLED tmschema/epsh_disabled.html + EPSV_NORMAL tmschema/epsv_normal.html + EPSV_HOT tmschema/epsv_hot.html + EPSV_FOCUSED tmschema/epsv_focused.html + EPSV_DISABLED tmschema/epsv_disabled.html + EPSHV_NORMAL tmschema/epshv_normal.html + EPSHV_HOT tmschema/epshv_hot.html + EPSHV_FOCUSED tmschema/epshv_focused.html + EPSHV_DISABLED tmschema/epshv_disabled.html + VSCLASS_EXPLORERBARSTYLE tmschema/vsclass_explorerbarstyle.html + VSCLASS_EXPLORERBAR tmschema/vsclass_explorerbar.html + EBP_HEADERBACKGROUND tmschema/ebp_headerbackground.html + EBP_HEADERCLOSE tmschema/ebp_headerclose.html + EBP_HEADERPIN tmschema/ebp_headerpin.html + EBP_IEBARMENU tmschema/ebp_iebarmenu.html + EBP_NORMALGROUPBACKGROUND tmschema/ebp_normalgroupbackground.html + EBP_NORMALGROUPCOLLAPSE tmschema/ebp_normalgroupcollapse.html + EBP_NORMALGROUPEXPAND tmschema/ebp_normalgroupexpand.html + EBP_NORMALGROUPHEAD tmschema/ebp_normalgrouphead.html + EBP_SPECIALGROUPBACKGROUND tmschema/ebp_specialgroupbackground.html + EBP_SPECIALGROUPCOLLAPSE tmschema/ebp_specialgroupcollapse.html + EBP_SPECIALGROUPEXPAND tmschema/ebp_specialgroupexpand.html + EBP_SPECIALGROUPHEAD tmschema/ebp_specialgrouphead.html + EBHC_NORMAL tmschema/ebhc_normal.html + EBHC_HOT tmschema/ebhc_hot.html + EBHC_PRESSED tmschema/ebhc_pressed.html + EBHP_NORMAL tmschema/ebhp_normal.html + EBHP_HOT tmschema/ebhp_hot.html + EBHP_PRESSED tmschema/ebhp_pressed.html + EBHP_SELECTEDNORMAL tmschema/ebhp_selectednormal.html + EBHP_SELECTEDHOT tmschema/ebhp_selectedhot.html + EBHP_SELECTEDPRESSED tmschema/ebhp_selectedpressed.html + EBM_NORMAL tmschema/ebm_normal.html + EBM_HOT tmschema/ebm_hot.html + EBM_PRESSED tmschema/ebm_pressed.html + EBNGC_NORMAL tmschema/ebngc_normal.html + EBNGC_HOT tmschema/ebngc_hot.html + EBNGC_PRESSED tmschema/ebngc_pressed.html + EBNGE_NORMAL tmschema/ebnge_normal.html + EBNGE_HOT tmschema/ebnge_hot.html + EBNGE_PRESSED tmschema/ebnge_pressed.html + EBSGC_NORMAL tmschema/ebsgc_normal.html + EBSGC_HOT tmschema/ebsgc_hot.html + EBSGC_PRESSED tmschema/ebsgc_pressed.html + EBSGE_NORMAL tmschema/ebsge_normal.html + EBSGE_HOT tmschema/ebsge_hot.html + EBSGE_PRESSED tmschema/ebsge_pressed.html + VSCLASS_FLYOUTSTYLE tmschema/vsclass_flyoutstyle.html + VSCLASS_FLYOUT tmschema/vsclass_flyout.html + FLYOUT_HEADER tmschema/flyout_header.html + FLYOUT_BODY tmschema/flyout_body.html + FLYOUT_LABEL tmschema/flyout_label.html + FLYOUT_LINK tmschema/flyout_link.html + FLYOUT_DIVIDER tmschema/flyout_divider.html + FLYOUT_WINDOW tmschema/flyout_window.html + FLYOUT_LINKAREA tmschema/flyout_linkarea.html + FLYOUT_LINKHEADER tmschema/flyout_linkheader.html + FLS_NORMAL tmschema/fls_normal.html + FLS_SELECTED tmschema/fls_selected.html + FLS_EMPHASIZED tmschema/fls_emphasized.html + FLS_DISABLED tmschema/fls_disabled.html + FLYOUTLINK_NORMAL tmschema/flyoutlink_normal.html + FLYOUTLINK_HOVER tmschema/flyoutlink_hover.html + FBS_NORMAL tmschema/fbs_normal.html + FBS_EMPHASIZED tmschema/fbs_emphasized.html + FLH_NORMAL tmschema/flh_normal.html + FLH_HOVER tmschema/flh_hover.html + VSCLASS_HEADERSTYLE tmschema/vsclass_headerstyle.html + VSCLASS_HEADER tmschema/vsclass_header.html + HP_HEADERITEM tmschema/hp_headeritem.html + HP_HEADERITEMLEFT tmschema/hp_headeritemleft.html + HP_HEADERITEMRIGHT tmschema/hp_headeritemright.html + HP_HEADERSORTARROW tmschema/hp_headersortarrow.html + HP_HEADERDROPDOWN tmschema/hp_headerdropdown.html + HP_HEADERDROPDOWNFILTER tmschema/hp_headerdropdownfilter.html + HP_HEADEROVERFLOW tmschema/hp_headeroverflow.html + HBG_DETAILS tmschema/hbg_details.html + HBG_ICON tmschema/hbg_icon.html + HIS_NORMAL tmschema/his_normal.html + HIS_HOT tmschema/his_hot.html + HIS_PRESSED tmschema/his_pressed.html + HIS_SORTEDNORMAL tmschema/his_sortednormal.html + HIS_SORTEDHOT tmschema/his_sortedhot.html + HIS_SORTEDPRESSED tmschema/his_sortedpressed.html + HIS_ICONNORMAL tmschema/his_iconnormal.html + HIS_ICONHOT tmschema/his_iconhot.html + HIS_ICONPRESSED tmschema/his_iconpressed.html + HIS_ICONSORTEDNORMAL tmschema/his_iconsortednormal.html + HIS_ICONSORTEDHOT tmschema/his_iconsortedhot.html + HIS_ICONSORTEDPRESSED tmschema/his_iconsortedpressed.html + HILS_NORMAL tmschema/hils_normal.html + HILS_HOT tmschema/hils_hot.html + HILS_PRESSED tmschema/hils_pressed.html + HIRS_NORMAL tmschema/hirs_normal.html + HIRS_HOT tmschema/hirs_hot.html + HIRS_PRESSED tmschema/hirs_pressed.html + HSAS_SORTEDUP tmschema/hsas_sortedup.html + HSAS_SORTEDDOWN tmschema/hsas_sorteddown.html + HDDS_NORMAL tmschema/hdds_normal.html + HDDS_SOFTHOT tmschema/hdds_softhot.html + HDDS_HOT tmschema/hdds_hot.html + HDDFS_NORMAL tmschema/hddfs_normal.html + HDDFS_SOFTHOT tmschema/hddfs_softhot.html + HDDFS_HOT tmschema/hddfs_hot.html + HOFS_NORMAL tmschema/hofs_normal.html + HOFS_HOT tmschema/hofs_hot.html + VSCLASS_LISTBOXSTYLE tmschema/vsclass_listboxstyle.html + VSCLASS_LISTBOX tmschema/vsclass_listbox.html + LBCP_BORDER_HSCROLL tmschema/lbcp_border_hscroll.html + LBCP_BORDER_HVSCROLL tmschema/lbcp_border_hvscroll.html + LBCP_BORDER_NOSCROLL tmschema/lbcp_border_noscroll.html + LBCP_BORDER_VSCROLL tmschema/lbcp_border_vscroll.html + LBCP_ITEM tmschema/lbcp_item.html + LBPSH_NORMAL tmschema/lbpsh_normal.html + LBPSH_FOCUSED tmschema/lbpsh_focused.html + LBPSH_HOT tmschema/lbpsh_hot.html + LBPSH_DISABLED tmschema/lbpsh_disabled.html + LBPSHV_NORMAL tmschema/lbpshv_normal.html + LBPSHV_FOCUSED tmschema/lbpshv_focused.html + LBPSHV_HOT tmschema/lbpshv_hot.html + LBPSHV_DISABLED tmschema/lbpshv_disabled.html + LBPSN_NORMAL tmschema/lbpsn_normal.html + LBPSN_FOCUSED tmschema/lbpsn_focused.html + LBPSN_HOT tmschema/lbpsn_hot.html + LBPSN_DISABLED tmschema/lbpsn_disabled.html + LBPSV_NORMAL tmschema/lbpsv_normal.html + LBPSV_FOCUSED tmschema/lbpsv_focused.html + LBPSV_HOT tmschema/lbpsv_hot.html + LBPSV_DISABLED tmschema/lbpsv_disabled.html + LBPSI_HOT tmschema/lbpsi_hot.html + LBPSI_HOTSELECTED tmschema/lbpsi_hotselected.html + LBPSI_SELECTED tmschema/lbpsi_selected.html + LBPSI_SELECTEDNOTFOCUS tmschema/lbpsi_selectednotfocus.html + VSCLASS_LISTVIEWSTYLE tmschema/vsclass_listviewstyle.html + VSCLASS_LISTVIEW tmschema/vsclass_listview.html + LVP_LISTITEM tmschema/lvp_listitem.html + LVP_LISTGROUP tmschema/lvp_listgroup.html + LVP_LISTDETAIL tmschema/lvp_listdetail.html + LVP_LISTSORTEDDETAIL tmschema/lvp_listsorteddetail.html + LVP_EMPTYTEXT tmschema/lvp_emptytext.html + LVP_GROUPHEADER tmschema/lvp_groupheader.html + LVP_GROUPHEADERLINE tmschema/lvp_groupheaderline.html + LVP_EXPANDBUTTON tmschema/lvp_expandbutton.html + LVP_COLLAPSEBUTTON tmschema/lvp_collapsebutton.html + LVP_COLUMNDETAIL tmschema/lvp_columndetail.html + LISS_NORMAL tmschema/liss_normal.html + LISS_HOT tmschema/liss_hot.html + LISS_SELECTED tmschema/liss_selected.html + LISS_DISABLED tmschema/liss_disabled.html + LISS_SELECTEDNOTFOCUS tmschema/liss_selectednotfocus.html + LISS_HOTSELECTED tmschema/liss_hotselected.html + LVGH_OPEN tmschema/lvgh_open.html + LVGH_OPENHOT tmschema/lvgh_openhot.html + LVGH_OPENSELECTED tmschema/lvgh_openselected.html + LVGH_OPENSELECTEDHOT tmschema/lvgh_openselectedhot.html + LVGH_OPENSELECTEDNOTFOCUSED tmschema/lvgh_openselectednotfocused.html + LVGH_OPENSELECTEDNOTFOCUSEDHOT tmschema/lvgh_openselectednotfocusedhot.html + LVGH_OPENMIXEDSELECTION tmschema/lvgh_openmixedselection.html + LVGH_OPENMIXEDSELECTIONHOT tmschema/lvgh_openmixedselectionhot.html + LVGH_CLOSE tmschema/lvgh_close.html + LVGH_CLOSEHOT tmschema/lvgh_closehot.html + LVGH_CLOSESELECTED tmschema/lvgh_closeselected.html + LVGH_CLOSESELECTEDHOT tmschema/lvgh_closeselectedhot.html + LVGH_CLOSESELECTEDNOTFOCUSED tmschema/lvgh_closeselectednotfocused.html + LVGH_CLOSESELECTEDNOTFOCUSEDHOT tmschema/lvgh_closeselectednotfocusedhot.html + LVGH_CLOSEMIXEDSELECTION tmschema/lvgh_closemixedselection.html + LVGH_CLOSEMIXEDSELECTIONHOT tmschema/lvgh_closemixedselectionhot.html + LVGHL_OPEN tmschema/lvghl_open.html + LVGHL_OPENHOT tmschema/lvghl_openhot.html + LVGHL_OPENSELECTED tmschema/lvghl_openselected.html + LVGHL_OPENSELECTEDHOT tmschema/lvghl_openselectedhot.html + LVGHL_OPENSELECTEDNOTFOCUSED tmschema/lvghl_openselectednotfocused.html + LVGHL_OPENSELECTEDNOTFOCUSEDHOT tmschema/lvghl_openselectednotfocusedhot.html + LVGHL_OPENMIXEDSELECTION tmschema/lvghl_openmixedselection.html + LVGHL_OPENMIXEDSELECTIONHOT tmschema/lvghl_openmixedselectionhot.html + LVGHL_CLOSE tmschema/lvghl_close.html + LVGHL_CLOSEHOT tmschema/lvghl_closehot.html + LVGHL_CLOSESELECTED tmschema/lvghl_closeselected.html + LVGHL_CLOSESELECTEDHOT tmschema/lvghl_closeselectedhot.html + LVGHL_CLOSESELECTEDNOTFOCUSED tmschema/lvghl_closeselectednotfocused.html + LVGHL_CLOSESELECTEDNOTFOCUSEDHOT tmschema/lvghl_closeselectednotfocusedhot.html + LVGHL_CLOSEMIXEDSELECTION tmschema/lvghl_closemixedselection.html + LVGHL_CLOSEMIXEDSELECTIONHOT tmschema/lvghl_closemixedselectionhot.html + LVEB_NORMAL tmschema/lveb_normal.html + LVEB_HOVER tmschema/lveb_hover.html + LVEB_PUSHED tmschema/lveb_pushed.html + LVCB_NORMAL tmschema/lvcb_normal.html + LVCB_HOVER tmschema/lvcb_hover.html + LVCB_PUSHED tmschema/lvcb_pushed.html + VSCLASS_MENUSTYLE tmschema/vsclass_menustyle.html + VSCLASS_MENU tmschema/vsclass_menu.html + MENU_MENUITEM_TMSCHEMA tmschema/menu_menuitem_tmschema.html + MENU_MENUDROPDOWN_TMSCHEMA tmschema/menu_menudropdown_tmschema.html + MENU_MENUBARITEM_TMSCHEMA tmschema/menu_menubaritem_tmschema.html + MENU_MENUBARDROPDOWN_TMSCHEMA tmschema/menu_menubardropdown_tmschema.html + MENU_CHEVRON_TMSCHEMA tmschema/menu_chevron_tmschema.html + MENU_SEPARATOR_TMSCHEMA tmschema/menu_separator_tmschema.html + MENU_BARBACKGROUND tmschema/menu_barbackground.html + MENU_BARITEM tmschema/menu_baritem.html + MENU_POPUPBACKGROUND tmschema/menu_popupbackground.html + MENU_POPUPBORDERS tmschema/menu_popupborders.html + MENU_POPUPCHECK tmschema/menu_popupcheck.html + MENU_POPUPCHECKBACKGROUND tmschema/menu_popupcheckbackground.html + MENU_POPUPGUTTER tmschema/menu_popupgutter.html + MENU_POPUPITEM tmschema/menu_popupitem.html + MENU_POPUPSEPARATOR tmschema/menu_popupseparator.html + MENU_POPUPSUBMENU tmschema/menu_popupsubmenu.html + MENU_SYSTEMCLOSE tmschema/menu_systemclose.html + MENU_SYSTEMMAXIMIZE tmschema/menu_systemmaximize.html + MENU_SYSTEMMINIMIZE tmschema/menu_systemminimize.html + MENU_SYSTEMRESTORE tmschema/menu_systemrestore.html + MB_ACTIVE tmschema/mb_active.html + MB_INACTIVE tmschema/mb_inactive.html + MBI_NORMAL tmschema/mbi_normal.html + MBI_HOT tmschema/mbi_hot.html + MBI_PUSHED tmschema/mbi_pushed.html + MBI_DISABLED tmschema/mbi_disabled.html + MBI_DISABLEDHOT tmschema/mbi_disabledhot.html + MBI_DISABLEDPUSHED tmschema/mbi_disabledpushed.html + MC_CHECKMARKNORMAL tmschema/mc_checkmarknormal.html + MC_CHECKMARKDISABLED tmschema/mc_checkmarkdisabled.html + MC_BULLETNORMAL tmschema/mc_bulletnormal.html + MC_BULLETDISABLED tmschema/mc_bulletdisabled.html + MCB_DISABLED tmschema/mcb_disabled.html + MCB_NORMAL tmschema/mcb_normal.html + MCB_BITMAP tmschema/mcb_bitmap.html + MPI_NORMAL tmschema/mpi_normal.html + MPI_HOT tmschema/mpi_hot.html + MPI_DISABLED tmschema/mpi_disabled.html + MPI_DISABLEDHOT tmschema/mpi_disabledhot.html + MSM_NORMAL tmschema/msm_normal.html + MSM_DISABLED tmschema/msm_disabled.html + MSYSC_NORMAL tmschema/msysc_normal.html + MSYSC_DISABLED tmschema/msysc_disabled.html + MSYSMX_NORMAL tmschema/msysmx_normal.html + MSYSMX_DISABLED tmschema/msysmx_disabled.html + MSYSMN_NORMAL tmschema/msysmn_normal.html + MSYSMN_DISABLED tmschema/msysmn_disabled.html + MSYSR_NORMAL tmschema/msysr_normal.html + MSYSR_DISABLED tmschema/msysr_disabled.html + VSCLASS_NAVIGATION tmschema/vsclass_navigation.html + NAV_BACKBUTTON tmschema/nav_backbutton.html + NAV_FORWARDBUTTON tmschema/nav_forwardbutton.html + NAV_MENUBUTTON tmschema/nav_menubutton.html + NAV_BB_NORMAL tmschema/nav_bb_normal.html + NAV_BB_HOT tmschema/nav_bb_hot.html + NAV_BB_PRESSED tmschema/nav_bb_pressed.html + NAV_BB_DISABLED tmschema/nav_bb_disabled.html + NAV_FB_NORMAL tmschema/nav_fb_normal.html + NAV_FB_HOT tmschema/nav_fb_hot.html + NAV_FB_PRESSED tmschema/nav_fb_pressed.html + NAV_FB_DISABLED tmschema/nav_fb_disabled.html + NAV_MB_NORMAL tmschema/nav_mb_normal.html + NAV_MB_HOT tmschema/nav_mb_hot.html + NAV_MB_PRESSED tmschema/nav_mb_pressed.html + NAV_MB_DISABLED tmschema/nav_mb_disabled.html + VSCLASS_PROGRESSSTYLE tmschema/vsclass_progressstyle.html + VSCLASS_PROGRESS tmschema/vsclass_progress.html + PP_BAR tmschema/pp_bar.html + PP_BARVERT tmschema/pp_barvert.html + PP_CHUNK tmschema/pp_chunk.html + PP_CHUNKVERT tmschema/pp_chunkvert.html + PP_FILL tmschema/pp_fill.html + PP_FILLVERT tmschema/pp_fillvert.html + PP_PULSEOVERLAY tmschema/pp_pulseoverlay.html + PP_MOVEOVERLAY tmschema/pp_moveoverlay.html + PP_PULSEOVERLAYVERT tmschema/pp_pulseoverlayvert.html + PP_MOVEOVERLAYVERT tmschema/pp_moveoverlayvert.html + PP_TRANSPARENTBAR tmschema/pp_transparentbar.html + PP_TRANSPARENTBARVERT tmschema/pp_transparentbarvert.html + PBBS_NORMAL tmschema/pbbs_normal.html + PBBS_PARTIAL tmschema/pbbs_partial.html + PBBVS_NORMAL tmschema/pbbvs_normal.html + PBBVS_PARTIAL tmschema/pbbvs_partial.html + PBFS_NORMAL tmschema/pbfs_normal.html + PBFS_ERROR tmschema/pbfs_error.html + PBFS_PAUSED tmschema/pbfs_paused.html + PBFS_PARTIAL tmschema/pbfs_partial.html + PBFVS_NORMAL tmschema/pbfvs_normal.html + PBFVS_ERROR tmschema/pbfvs_error.html + PBFVS_PAUSED tmschema/pbfvs_paused.html + PBFVS_PARTIAL tmschema/pbfvs_partial.html + VSCLASS_REBARSTYLE tmschema/vsclass_rebarstyle.html + VSCLASS_REBAR tmschema/vsclass_rebar.html + RP_GRIPPER tmschema/rp_gripper.html + RP_GRIPPERVERT tmschema/rp_grippervert.html + RP_BAND tmschema/rp_band.html + RP_CHEVRON tmschema/rp_chevron.html + RP_CHEVRONVERT tmschema/rp_chevronvert.html + RP_BACKGROUND tmschema/rp_background.html + RP_SPLITTER tmschema/rp_splitter.html + RP_SPLITTERVERT tmschema/rp_splittervert.html + CHEVS_NORMAL tmschema/chevs_normal.html + CHEVS_HOT tmschema/chevs_hot.html + CHEVS_PRESSED tmschema/chevs_pressed.html + CHEVSV_NORMAL tmschema/chevsv_normal.html + CHEVSV_HOT tmschema/chevsv_hot.html + CHEVSV_PRESSED tmschema/chevsv_pressed.html + SPLITS_NORMAL tmschema/splits_normal.html + SPLITS_HOT tmschema/splits_hot.html + SPLITS_PRESSED tmschema/splits_pressed.html + SPLITSV_NORMAL tmschema/splitsv_normal.html + SPLITSV_HOT tmschema/splitsv_hot.html + SPLITSV_PRESSED tmschema/splitsv_pressed.html + VSCLASS_SCROLLBARSTYLE tmschema/vsclass_scrollbarstyle.html + VSCLASS_SCROLLBAR tmschema/vsclass_scrollbar.html + SBP_ARROWBTN tmschema/sbp_arrowbtn.html + SBP_THUMBBTNHORZ tmschema/sbp_thumbbtnhorz.html + SBP_THUMBBTNVERT tmschema/sbp_thumbbtnvert.html + SBP_LOWERTRACKHORZ tmschema/sbp_lowertrackhorz.html + SBP_UPPERTRACKHORZ tmschema/sbp_uppertrackhorz.html + SBP_LOWERTRACKVERT tmschema/sbp_lowertrackvert.html + SBP_UPPERTRACKVERT tmschema/sbp_uppertrackvert.html + SBP_GRIPPERHORZ tmschema/sbp_gripperhorz.html + SBP_GRIPPERVERT tmschema/sbp_grippervert.html + SBP_SIZEBOX tmschema/sbp_sizebox.html + ABS_UPNORMAL tmschema/abs_upnormal.html + ABS_UPHOT tmschema/abs_uphot.html + ABS_UPPRESSED tmschema/abs_uppressed.html + ABS_UPDISABLED tmschema/abs_updisabled.html + ABS_DOWNNORMAL tmschema/abs_downnormal.html + ABS_DOWNHOT tmschema/abs_downhot.html + ABS_DOWNPRESSED tmschema/abs_downpressed.html + ABS_DOWNDISABLED tmschema/abs_downdisabled.html + ABS_LEFTNORMAL tmschema/abs_leftnormal.html + ABS_LEFTHOT tmschema/abs_lefthot.html + ABS_LEFTPRESSED tmschema/abs_leftpressed.html + ABS_LEFTDISABLED tmschema/abs_leftdisabled.html + ABS_RIGHTNORMAL tmschema/abs_rightnormal.html + ABS_RIGHTHOT tmschema/abs_righthot.html + ABS_RIGHTPRESSED tmschema/abs_rightpressed.html + ABS_RIGHTDISABLED tmschema/abs_rightdisabled.html + ABS_UPHOVER tmschema/abs_uphover.html + ABS_DOWNHOVER tmschema/abs_downhover.html + ABS_LEFTHOVER tmschema/abs_lefthover.html + ABS_RIGHTHOVER tmschema/abs_righthover.html + SCRBS_NORMAL tmschema/scrbs_normal.html + SCRBS_HOT tmschema/scrbs_hot.html + SCRBS_PRESSED tmschema/scrbs_pressed.html + SCRBS_DISABLED tmschema/scrbs_disabled.html + SCRBS_HOVER tmschema/scrbs_hover.html + SZB_RIGHTALIGN tmschema/szb_rightalign.html + SZB_LEFTALIGN tmschema/szb_leftalign.html + SZB_TOPRIGHTALIGN tmschema/szb_toprightalign.html + SZB_TOPLEFTALIGN tmschema/szb_topleftalign.html + SZB_HALFBOTTOMRIGHTALIGN tmschema/szb_halfbottomrightalign.html + SZB_HALFBOTTOMLEFTALIGN tmschema/szb_halfbottomleftalign.html + SZB_HALFTOPRIGHTALIGN tmschema/szb_halftoprightalign.html + SZB_HALFTOPLEFTALIGN tmschema/szb_halftopleftalign.html + VSCLASS_SPINSTYLE tmschema/vsclass_spinstyle.html + VSCLASS_SPIN tmschema/vsclass_spin.html + SPNP_UP tmschema/spnp_up.html + SPNP_DOWN tmschema/spnp_down.html + SPNP_UPHORZ tmschema/spnp_uphorz.html + SPNP_DOWNHORZ tmschema/spnp_downhorz.html + UPS_NORMAL tmschema/ups_normal.html + UPS_HOT tmschema/ups_hot.html + UPS_PRESSED tmschema/ups_pressed.html + UPS_DISABLED tmschema/ups_disabled.html + DNS_NORMAL tmschema/dns_normal.html + DNS_HOT tmschema/dns_hot.html + DNS_PRESSED tmschema/dns_pressed.html + DNS_DISABLED tmschema/dns_disabled.html + UPHZS_NORMAL tmschema/uphzs_normal.html + UPHZS_HOT tmschema/uphzs_hot.html + UPHZS_PRESSED tmschema/uphzs_pressed.html + UPHZS_DISABLED tmschema/uphzs_disabled.html + DNHZS_NORMAL tmschema/dnhzs_normal.html + DNHZS_HOT tmschema/dnhzs_hot.html + DNHZS_PRESSED tmschema/dnhzs_pressed.html + DNHZS_DISABLED tmschema/dnhzs_disabled.html + VSCLASS_STATUSSTYLE tmschema/vsclass_statusstyle.html + VSCLASS_STATUS tmschema/vsclass_status.html + SP_PANE tmschema/sp_pane.html + SP_GRIPPERPANE tmschema/sp_gripperpane.html + SP_GRIPPER tmschema/sp_gripper.html + VSCLASS_TABSTYLE tmschema/vsclass_tabstyle.html + VSCLASS_TAB tmschema/vsclass_tab.html + TABP_TABITEM tmschema/tabp_tabitem.html + TABP_TABITEMLEFTEDGE tmschema/tabp_tabitemleftedge.html + TABP_TABITEMRIGHTEDGE tmschema/tabp_tabitemrightedge.html + TABP_TABITEMBOTHEDGE tmschema/tabp_tabitembothedge.html + TABP_TOPTABITEM tmschema/tabp_toptabitem.html + TABP_TOPTABITEMLEFTEDGE tmschema/tabp_toptabitemleftedge.html + TABP_TOPTABITEMRIGHTEDGE tmschema/tabp_toptabitemrightedge.html + TABP_TOPTABITEMBOTHEDGE tmschema/tabp_toptabitembothedge.html + TABP_PANE tmschema/tabp_pane.html + TABP_BODY tmschema/tabp_body.html + TABP_AEROWIZARDBODY tmschema/tabp_aerowizardbody.html + TIS_NORMAL tmschema/tis_normal.html + TIS_HOT tmschema/tis_hot.html + TIS_SELECTED tmschema/tis_selected.html + TIS_DISABLED tmschema/tis_disabled.html + TIS_FOCUSED tmschema/tis_focused.html + TILES_NORMAL tmschema/tiles_normal.html + TILES_HOT tmschema/tiles_hot.html + TILES_SELECTED tmschema/tiles_selected.html + TILES_DISABLED tmschema/tiles_disabled.html + TILES_FOCUSED tmschema/tiles_focused.html + TIRES_NORMAL tmschema/tires_normal.html + TIRES_HOT tmschema/tires_hot.html + TIRES_SELECTED tmschema/tires_selected.html + TIRES_DISABLED tmschema/tires_disabled.html + TIRES_FOCUSED tmschema/tires_focused.html + TIBES_NORMAL tmschema/tibes_normal.html + TIBES_HOT tmschema/tibes_hot.html + TIBES_SELECTED tmschema/tibes_selected.html + TIBES_DISABLED tmschema/tibes_disabled.html + TIBES_FOCUSED tmschema/tibes_focused.html + TTIS_NORMAL tmschema/ttis_normal.html + TTIS_HOT tmschema/ttis_hot.html + TTIS_SELECTED tmschema/ttis_selected.html + TTIS_DISABLED tmschema/ttis_disabled.html + TTIS_FOCUSED tmschema/ttis_focused.html + TTILES_NORMAL tmschema/ttiles_normal.html + TTILES_HOT tmschema/ttiles_hot.html + TTILES_SELECTED tmschema/ttiles_selected.html + TTILES_DISABLED tmschema/ttiles_disabled.html + TTILES_FOCUSED tmschema/ttiles_focused.html + TTIRES_NORMAL tmschema/ttires_normal.html + TTIRES_HOT tmschema/ttires_hot.html + TTIRES_SELECTED tmschema/ttires_selected.html + TTIRES_DISABLED tmschema/ttires_disabled.html + TTIRES_FOCUSED tmschema/ttires_focused.html + TTIBES_NORMAL tmschema/ttibes_normal.html + TTIBES_HOT tmschema/ttibes_hot.html + TTIBES_SELECTED tmschema/ttibes_selected.html + TTIBES_DISABLED tmschema/ttibes_disabled.html + TTIBES_FOCUSED tmschema/ttibes_focused.html + VSCLASS_TASKDIALOGSTYLE tmschema/vsclass_taskdialogstyle.html + VSCLASS_TASKDIALOG tmschema/vsclass_taskdialog.html + TDLG_PRIMARYPANEL tmschema/tdlg_primarypanel.html + TDLG_MAININSTRUCTIONPANE tmschema/tdlg_maininstructionpane.html + TDLG_MAINICON tmschema/tdlg_mainicon.html + TDLG_CONTENTPANE tmschema/tdlg_contentpane.html + TDLG_CONTENTICON tmschema/tdlg_contenticon.html + TDLG_EXPANDEDCONTENT tmschema/tdlg_expandedcontent.html + TDLG_COMMANDLINKPANE tmschema/tdlg_commandlinkpane.html + TDLG_SECONDARYPANEL tmschema/tdlg_secondarypanel.html + TDLG_CONTROLPANE tmschema/tdlg_controlpane.html + TDLG_BUTTONSECTION tmschema/tdlg_buttonsection.html + TDLG_BUTTONWRAPPER tmschema/tdlg_buttonwrapper.html + TDLG_EXPANDOTEXT tmschema/tdlg_expandotext.html + TDLG_EXPANDOBUTTON tmschema/tdlg_expandobutton.html + TDLG_VERIFICATIONTEXT tmschema/tdlg_verificationtext.html + TDLG_FOOTNOTEPANE tmschema/tdlg_footnotepane.html + TDLG_FOOTNOTEAREA tmschema/tdlg_footnotearea.html + TDLG_FOOTNOTESEPARATOR tmschema/tdlg_footnoteseparator.html + TDLG_EXPANDEDFOOTERAREA tmschema/tdlg_expandedfooterarea.html + TDLG_PROGRESSBAR tmschema/tdlg_progressbar.html + TDLG_IMAGEALIGNMENT tmschema/tdlg_imagealignment.html + TDLG_RADIOBUTTONPANE tmschema/tdlg_radiobuttonpane.html + TDLGCPS_STANDALONE tmschema/tdlgcps_standalone.html + TDLGEBS_NORMAL tmschema/tdlgebs_normal.html + TDLGEBS_HOVER tmschema/tdlgebs_hover.html + TDLGEBS_PRESSED tmschema/tdlgebs_pressed.html + TDLGEBS_EXPANDEDNORMAL tmschema/tdlgebs_expandednormal.html + TDLGEBS_EXPANDEDHOVER tmschema/tdlgebs_expandedhover.html + TDLGEBS_EXPANDEDPRESSED tmschema/tdlgebs_expandedpressed.html + VSCLASS_TEXTSTYLE tmschema/vsclass_textstyle.html + TEXT_MAININSTRUCTION tmschema/text_maininstruction.html + TEXT_INSTRUCTION tmschema/text_instruction.html + TEXT_BODYTITLE tmschema/text_bodytitle.html + TEXT_BODYTEXT tmschema/text_bodytext.html + TEXT_SECONDARYTEXT tmschema/text_secondarytext.html + TEXT_HYPERLINKTEXT tmschema/text_hyperlinktext.html + TEXT_EXPANDED tmschema/text_expanded.html + TEXT_LABEL tmschema/text_label.html + TEXT_CONTROLLABEL tmschema/text_controllabel.html + TS_HYPERLINK_NORMAL tmschema/ts_hyperlink_normal.html + TS_HYPERLINK_HOT tmschema/ts_hyperlink_hot.html + TS_HYPERLINK_PRESSED tmschema/ts_hyperlink_pressed.html + TS_HYPERLINK_DISABLED tmschema/ts_hyperlink_disabled.html + TS_CONTROLLABEL_NORMAL tmschema/ts_controllabel_normal.html + TS_CONTROLLABEL_DISABLED tmschema/ts_controllabel_disabled.html + VSCLASS_TOOLBARSTYLE tmschema/vsclass_toolbarstyle.html + VSCLASS_TOOLBAR tmschema/vsclass_toolbar.html + TP_BUTTON tmschema/tp_button.html + TP_DROPDOWNBUTTON tmschema/tp_dropdownbutton.html + TP_SPLITBUTTON tmschema/tp_splitbutton.html + TP_SPLITBUTTONDROPDOWN tmschema/tp_splitbuttondropdown.html + TP_SEPARATOR tmschema/tp_separator.html + TP_SEPARATORVERT tmschema/tp_separatorvert.html + TP_DROPDOWNBUTTONGLYPH tmschema/tp_dropdownbuttonglyph.html + TS_NORMAL tmschema/ts_normal.html + TS_HOT tmschema/ts_hot.html + TS_PRESSED tmschema/ts_pressed.html + TS_DISABLED tmschema/ts_disabled.html + TS_CHECKED tmschema/ts_checked.html + TS_HOTCHECKED tmschema/ts_hotchecked.html + TS_NEARHOT tmschema/ts_nearhot.html + TS_OTHERSIDEHOT tmschema/ts_othersidehot.html + VSCLASS_TOOLTIPSTYLE tmschema/vsclass_tooltipstyle.html + VSCLASS_TOOLTIP tmschema/vsclass_tooltip.html + TTP_STANDARD tmschema/ttp_standard.html + TTP_STANDARDTITLE tmschema/ttp_standardtitle.html + TTP_BALLOON tmschema/ttp_balloon.html + TTP_BALLOONTITLE tmschema/ttp_balloontitle.html + TTP_CLOSE tmschema/ttp_close.html + TTP_BALLOONSTEM tmschema/ttp_balloonstem.html + TTP_WRENCH tmschema/ttp_wrench.html + TTCS_NORMAL tmschema/ttcs_normal.html + TTCS_HOT tmschema/ttcs_hot.html + TTCS_PRESSED tmschema/ttcs_pressed.html + TTSS_NORMAL tmschema/ttss_normal.html + TTSS_LINK tmschema/ttss_link.html + TTBS_NORMAL tmschema/ttbs_normal.html + TTBS_LINK tmschema/ttbs_link.html + TTBSS_POINTINGUPLEFTWALL tmschema/ttbss_pointingupleftwall.html + TTBSS_POINTINGUPCENTERED tmschema/ttbss_pointingupcentered.html + TTBSS_POINTINGUPRIGHTWALL tmschema/ttbss_pointinguprightwall.html + TTBSS_POINTINGDOWNRIGHTWALL tmschema/ttbss_pointingdownrightwall.html + TTBSS_POINTINGDOWNCENTERED tmschema/ttbss_pointingdowncentered.html + TTBSS_POINTINGDOWNLEFTWALL tmschema/ttbss_pointingdownleftwall.html + TTWS_NORMAL tmschema/ttws_normal.html + TTWS_HOT tmschema/ttws_hot.html + TTWS_PRESSED tmschema/ttws_pressed.html + VSCLASS_TRACKBARSTYLE tmschema/vsclass_trackbarstyle.html + VSCLASS_TRACKBAR tmschema/vsclass_trackbar.html + TKP_TRACK tmschema/tkp_track.html + TKP_TRACKVERT tmschema/tkp_trackvert.html + TKP_THUMB tmschema/tkp_thumb.html + TKP_THUMBBOTTOM tmschema/tkp_thumbbottom.html + TKP_THUMBTOP tmschema/tkp_thumbtop.html + TKP_THUMBVERT tmschema/tkp_thumbvert.html + TKP_THUMBLEFT tmschema/tkp_thumbleft.html + TKP_THUMBRIGHT tmschema/tkp_thumbright.html + TKP_TICS tmschema/tkp_tics.html + TKP_TICSVERT tmschema/tkp_ticsvert.html + TKS_NORMAL tmschema/tks_normal.html + TRS_NORMAL tmschema/trs_normal.html + TRVS_NORMAL tmschema/trvs_normal.html + TUS_NORMAL tmschema/tus_normal.html + TUS_HOT tmschema/tus_hot.html + TUS_PRESSED tmschema/tus_pressed.html + TUS_FOCUSED tmschema/tus_focused.html + TUS_DISABLED tmschema/tus_disabled.html + TUBS_NORMAL tmschema/tubs_normal.html + TUBS_HOT tmschema/tubs_hot.html + TUBS_PRESSED tmschema/tubs_pressed.html + TUBS_FOCUSED tmschema/tubs_focused.html + TUBS_DISABLED tmschema/tubs_disabled.html + TUTS_NORMAL tmschema/tuts_normal.html + TUTS_HOT tmschema/tuts_hot.html + TUTS_PRESSED tmschema/tuts_pressed.html + TUTS_FOCUSED tmschema/tuts_focused.html + TUTS_DISABLED tmschema/tuts_disabled.html + TUVS_NORMAL tmschema/tuvs_normal.html + TUVS_HOT tmschema/tuvs_hot.html + TUVS_PRESSED tmschema/tuvs_pressed.html + TUVS_FOCUSED tmschema/tuvs_focused.html + TUVS_DISABLED tmschema/tuvs_disabled.html + TUVLS_NORMAL tmschema/tuvls_normal.html + TUVLS_HOT tmschema/tuvls_hot.html + TUVLS_PRESSED tmschema/tuvls_pressed.html + TUVLS_FOCUSED tmschema/tuvls_focused.html + TUVLS_DISABLED tmschema/tuvls_disabled.html + TUVRS_NORMAL tmschema/tuvrs_normal.html + TUVRS_HOT tmschema/tuvrs_hot.html + TUVRS_PRESSED tmschema/tuvrs_pressed.html + TUVRS_FOCUSED tmschema/tuvrs_focused.html + TUVRS_DISABLED tmschema/tuvrs_disabled.html + TSS_NORMAL tmschema/tss_normal.html + TSVS_NORMAL tmschema/tsvs_normal.html + VSCLASS_TREEVIEWSTYLE tmschema/vsclass_treeviewstyle.html + VSCLASS_TREEVIEW tmschema/vsclass_treeview.html + TVP_TREEITEM tmschema/tvp_treeitem.html + TVP_GLYPH tmschema/tvp_glyph.html + TVP_BRANCH tmschema/tvp_branch.html + TVP_HOTGLYPH tmschema/tvp_hotglyph.html + TREIS_NORMAL tmschema/treis_normal.html + TREIS_HOT tmschema/treis_hot.html + TREIS_SELECTED tmschema/treis_selected.html + TREIS_DISABLED tmschema/treis_disabled.html + TREIS_SELECTEDNOTFOCUS tmschema/treis_selectednotfocus.html + TREIS_HOTSELECTED tmschema/treis_hotselected.html + GLPS_CLOSED tmschema/glps_closed.html + GLPS_OPENED tmschema/glps_opened.html + HGLPS_CLOSED tmschema/hglps_closed.html + HGLPS_OPENED tmschema/hglps_opened.html + VSCLASS_WINDOWSTYLE tmschema/vsclass_windowstyle.html + VSCLASS_WINDOW tmschema/vsclass_window.html + WP_CAPTION tmschema/wp_caption.html + WP_SMALLCAPTION tmschema/wp_smallcaption.html + WP_MINCAPTION tmschema/wp_mincaption.html + WP_SMALLMINCAPTION tmschema/wp_smallmincaption.html + WP_MAXCAPTION tmschema/wp_maxcaption.html + WP_SMALLMAXCAPTION tmschema/wp_smallmaxcaption.html + WP_FRAMELEFT tmschema/wp_frameleft.html + WP_FRAMERIGHT tmschema/wp_frameright.html + WP_FRAMEBOTTOM tmschema/wp_framebottom.html + WP_SMALLFRAMELEFT tmschema/wp_smallframeleft.html + WP_SMALLFRAMERIGHT tmschema/wp_smallframeright.html + WP_SMALLFRAMEBOTTOM tmschema/wp_smallframebottom.html + WP_SYSBUTTON tmschema/wp_sysbutton.html + WP_MDISYSBUTTON tmschema/wp_mdisysbutton.html + WP_MINBUTTON tmschema/wp_minbutton.html + WP_MDIMINBUTTON tmschema/wp_mdiminbutton.html + WP_MAXBUTTON tmschema/wp_maxbutton.html + WP_CLOSEBUTTON tmschema/wp_closebutton.html + WP_SMALLCLOSEBUTTON tmschema/wp_smallclosebutton.html + WP_MDICLOSEBUTTON tmschema/wp_mdiclosebutton.html + WP_RESTOREBUTTON tmschema/wp_restorebutton.html + WP_MDIRESTOREBUTTON tmschema/wp_mdirestorebutton.html + WP_HELPBUTTON tmschema/wp_helpbutton.html + WP_MDIHELPBUTTON tmschema/wp_mdihelpbutton.html + WP_HORZSCROLL tmschema/wp_horzscroll.html + WP_HORZTHUMB tmschema/wp_horzthumb.html + WP_VERTSCROLL tmschema/wp_vertscroll.html + WP_VERTTHUMB tmschema/wp_vertthumb.html + WP_DIALOG tmschema/wp_dialog.html + WP_CAPTIONSIZINGTEMPLATE tmschema/wp_captionsizingtemplate.html + WP_SMALLCAPTIONSIZINGTEMPLATE tmschema/wp_smallcaptionsizingtemplate.html + WP_FRAMELEFTSIZINGTEMPLATE tmschema/wp_frameleftsizingtemplate.html + WP_SMALLFRAMELEFTSIZINGTEMPLATE tmschema/wp_smallframeleftsizingtemplate.html + WP_FRAMERIGHTSIZINGTEMPLATE tmschema/wp_framerightsizingtemplate.html + WP_SMALLFRAMERIGHTSIZINGTEMPLATE tmschema/wp_smallframerightsizingtemplate.html + WP_FRAMEBOTTOMSIZINGTEMPLATE tmschema/wp_framebottomsizingtemplate.html + WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE tmschema/wp_smallframebottomsizingtemplate.html + WP_FRAME tmschema/wp_frame.html + FS_ACTIVE tmschema/fs_active.html + FS_INACTIVE tmschema/fs_inactive.html + CS_ACTIVE tmschema/cs_active.html + CS_INACTIVE tmschema/cs_inactive.html + CS_DISABLED tmschema/cs_disabled.html + MXCS_ACTIVE tmschema/mxcs_active.html + MXCS_INACTIVE tmschema/mxcs_inactive.html + MXCS_DISABLED tmschema/mxcs_disabled.html + MNCS_ACTIVE tmschema/mncs_active.html + MNCS_INACTIVE tmschema/mncs_inactive.html + MNCS_DISABLED tmschema/mncs_disabled.html + HSS_NORMAL tmschema/hss_normal.html + HSS_HOT tmschema/hss_hot.html + HSS_PUSHED tmschema/hss_pushed.html + HSS_DISABLED tmschema/hss_disabled.html + HTS_NORMAL tmschema/hts_normal.html + HTS_HOT tmschema/hts_hot.html + HTS_PUSHED tmschema/hts_pushed.html + HTS_DISABLED tmschema/hts_disabled.html + VSS_NORMAL tmschema/vss_normal.html + VSS_HOT tmschema/vss_hot.html + VSS_PUSHED tmschema/vss_pushed.html + VSS_DISABLED tmschema/vss_disabled.html + VTS_NORMAL tmschema/vts_normal.html + VTS_HOT tmschema/vts_hot.html + VTS_PUSHED tmschema/vts_pushed.html + VTS_DISABLED tmschema/vts_disabled.html + SBS_NORMAL tmschema/sbs_normal.html + SBS_HOT tmschema/sbs_hot.html + SBS_PUSHED tmschema/sbs_pushed.html + SBS_DISABLED tmschema/sbs_disabled.html + MINBS_NORMAL tmschema/minbs_normal.html + MINBS_HOT tmschema/minbs_hot.html + MINBS_PUSHED tmschema/minbs_pushed.html + MINBS_DISABLED tmschema/minbs_disabled.html + MAXBS_NORMAL tmschema/maxbs_normal.html + MAXBS_HOT tmschema/maxbs_hot.html + MAXBS_PUSHED tmschema/maxbs_pushed.html + MAXBS_DISABLED tmschema/maxbs_disabled.html + RBS_NORMAL tmschema/rbs_normal.html + RBS_HOT tmschema/rbs_hot.html + RBS_PUSHED tmschema/rbs_pushed.html + RBS_DISABLED tmschema/rbs_disabled.html + HBS_NORMAL tmschema/hbs_normal.html + HBS_HOT tmschema/hbs_hot.html + HBS_PUSHED tmschema/hbs_pushed.html + HBS_DISABLED tmschema/hbs_disabled.html + CBS_NORMAL tmschema/cbs_normal.html + CBS_HOT tmschema/cbs_hot.html + CBS_PUSHED tmschema/cbs_pushed.html + CBS_DISABLED tmschema/cbs_disabled.html + BT_IMAGEFILE tmschema/bt_imagefile.html + BT_BORDERFILL tmschema/bt_borderfill.html + BT_NONE tmschema/bt_none.html + IL_VERTICAL tmschema/il_vertical.html + IL_HORIZONTAL tmschema/il_horizontal.html + BT_RECT tmschema/bt_rect.html + BT_ROUNDRECT tmschema/bt_roundrect.html + BT_ELLIPSE tmschema/bt_ellipse.html + FT_SOLID tmschema/ft_solid.html + FT_VERTGRADIENT tmschema/ft_vertgradient.html + FT_HORZGRADIENT tmschema/ft_horzgradient.html + FT_RADIALGRADIENT tmschema/ft_radialgradient.html + FT_TILEIMAGE tmschema/ft_tileimage.html + ST_TRUESIZE tmschema/st_truesize.html + ST_STRETCH tmschema/st_stretch.html + ST_TILE tmschema/st_tile.html + HA_LEFT tmschema/ha_left.html + HA_CENTER tmschema/ha_center.html + HA_RIGHT tmschema/ha_right.html + CA_LEFT tmschema/ca_left.html + CA_CENTER tmschema/ca_center.html + CA_RIGHT tmschema/ca_right.html + VA_TOP tmschema/va_top.html + VA_CENTER tmschema/va_center.html + VA_BOTTOM tmschema/va_bottom.html + OT_TOPLEFT tmschema/ot_topleft.html + OT_TOPRIGHT tmschema/ot_topright.html + OT_TOPMIDDLE tmschema/ot_topmiddle.html + OT_BOTTOMLEFT tmschema/ot_bottomleft.html + OT_BOTTOMRIGHT tmschema/ot_bottomright.html + OT_BOTTOMMIDDLE tmschema/ot_bottommiddle.html + OT_MIDDLELEFT tmschema/ot_middleleft.html + OT_MIDDLERIGHT tmschema/ot_middleright.html + OT_LEFTOFCAPTION tmschema/ot_leftofcaption.html + OT_RIGHTOFCAPTION tmschema/ot_rightofcaption.html + OT_LEFTOFLASTBUTTON tmschema/ot_leftoflastbutton.html + OT_RIGHTOFLASTBUTTON tmschema/ot_rightoflastbutton.html + OT_ABOVELASTBUTTON tmschema/ot_abovelastbutton.html + OT_BELOWLASTBUTTON tmschema/ot_belowlastbutton.html + ICE_NONE tmschema/ice_none.html + ICE_GLOW tmschema/ice_glow.html + ICE_SHADOW tmschema/ice_shadow.html + ICE_PULSE tmschema/ice_pulse.html + ICE_ALPHA tmschema/ice_alpha.html + TST_NONE tmschema/tst_none.html + TST_SINGLE tmschema/tst_single.html + TST_CONTINUOUS tmschema/tst_continuous.html + GT_NONE tmschema/gt_none.html + GT_IMAGEGLYPH tmschema/gt_imageglyph.html + GT_FONTGLYPH tmschema/gt_fontglyph.html + IST_NONE tmschema/ist_none.html + IST_SIZE tmschema/ist_size.html + IST_DPI tmschema/ist_dpi.html + TSST_NONE tmschema/tsst_none.html + TSST_SIZE tmschema/tsst_size.html + TSST_DPI tmschema/tsst_dpi.html + GFST_NONE tmschema/gfst_none.html + GFST_SIZE tmschema/gfst_size.html + GFST_DPI tmschema/gfst_dpi.html + TMT_RESERVEDLOW tmschema/tmt_reservedlow.html + TMT_RESERVEDHIGH tmschema/tmt_reservedhigh.html + TMT_DIBDATA tmschema/tmt_dibdata.html + TMT_GLYPHDIBDATA tmschema/tmt_glyphdibdata.html + TMT_ENUM tmschema/tmt_enum.html + TMT_STRING tmschema/tmt_string.html + TMT_INT tmschema/tmt_int.html + TMT_BOOL tmschema/tmt_bool.html + TMT_COLOR tmschema/tmt_color.html + TMT_MARGINS tmschema/tmt_margins.html + TMT_FILENAME tmschema/tmt_filename.html + TMT_SIZE tmschema/tmt_size.html + TMT_POSITION tmschema/tmt_position.html + TMT_RECT tmschema/tmt_rect.html + TMT_FONT tmschema/tmt_font.html + TMT_INTLIST tmschema/tmt_intlist.html + TMT_HBITMAP tmschema/tmt_hbitmap.html + TMT_DISKSTREAM tmschema/tmt_diskstream.html + TMT_STREAM tmschema/tmt_stream.html + TMT_BITMAPREF tmschema/tmt_bitmapref.html + TMT_COLORSCHEMES tmschema/tmt_colorschemes.html + TMT_SIZES tmschema/tmt_sizes.html + TMT_CHARSET tmschema/tmt_charset.html + TMT_NAME tmschema/tmt_name.html + TMT_DISPLAYNAME tmschema/tmt_displayname.html + TMT_TOOLTIP tmschema/tmt_tooltip.html + TMT_COMPANY tmschema/tmt_company.html + TMT_AUTHOR tmschema/tmt_author.html + TMT_COPYRIGHT tmschema/tmt_copyright.html + TMT_URL tmschema/tmt_url.html + TMT_VERSION tmschema/tmt_version.html + TMT_DESCRIPTION tmschema/tmt_description.html + TMT_FIRST_RCSTRING_NAME tmschema/tmt_first_rcstring_name.html + TMT_LAST_RCSTRING_NAME tmschema/tmt_last_rcstring_name.html + TMT_CAPTIONFONT tmschema/tmt_captionfont.html + TMT_SMALLCAPTIONFONT tmschema/tmt_smallcaptionfont.html + TMT_MENUFONT tmschema/tmt_menufont.html + TMT_STATUSFONT tmschema/tmt_statusfont.html + TMT_MSGBOXFONT tmschema/tmt_msgboxfont.html + TMT_ICONTITLEFONT tmschema/tmt_icontitlefont.html + TMT_HEADING1FONT tmschema/tmt_heading1font.html + TMT_HEADING2FONT tmschema/tmt_heading2font.html + TMT_BODYFONT tmschema/tmt_bodyfont.html + TMT_FIRSTFONT tmschema/tmt_firstfont.html + TMT_LASTFONT tmschema/tmt_lastfont.html + TMT_FLATMENUS tmschema/tmt_flatmenus.html + TMT_FIRSTBOOL tmschema/tmt_firstbool.html + TMT_LASTBOOL tmschema/tmt_lastbool.html + TMT_SIZINGBORDERWIDTH tmschema/tmt_sizingborderwidth.html + TMT_SCROLLBARWIDTH tmschema/tmt_scrollbarwidth.html + TMT_SCROLLBARHEIGHT tmschema/tmt_scrollbarheight.html + TMT_CAPTIONBARWIDTH tmschema/tmt_captionbarwidth.html + TMT_CAPTIONBARHEIGHT tmschema/tmt_captionbarheight.html + TMT_SMCAPTIONBARWIDTH tmschema/tmt_smcaptionbarwidth.html + TMT_SMCAPTIONBARHEIGHT tmschema/tmt_smcaptionbarheight.html + TMT_MENUBARWIDTH tmschema/tmt_menubarwidth.html + TMT_MENUBARHEIGHT tmschema/tmt_menubarheight.html + TMT_PADDEDBORDERWIDTH tmschema/tmt_paddedborderwidth.html + TMT_FIRSTSIZE tmschema/tmt_firstsize.html + TMT_LASTSIZE tmschema/tmt_lastsize.html + TMT_MINCOLORDEPTH tmschema/tmt_mincolordepth.html + TMT_FIRSTINT tmschema/tmt_firstint.html + TMT_LASTINT tmschema/tmt_lastint.html + TMT_CSSNAME tmschema/tmt_cssname.html + TMT_XMLNAME tmschema/tmt_xmlname.html + TMT_LASTUPDATED tmschema/tmt_lastupdated.html + TMT_ALIAS tmschema/tmt_alias.html + TMT_FIRSTSTRING tmschema/tmt_firststring.html + TMT_LASTSTRING tmschema/tmt_laststring.html + TMT_SCROLLBAR tmschema/tmt_scrollbar.html + TMT_BACKGROUND tmschema/tmt_background.html + TMT_ACTIVECAPTION tmschema/tmt_activecaption.html + TMT_INACTIVECAPTION tmschema/tmt_inactivecaption.html + TMT_MENU tmschema/tmt_menu.html + TMT_WINDOW tmschema/tmt_window.html + TMT_WINDOWFRAME tmschema/tmt_windowframe.html + TMT_MENUTEXT tmschema/tmt_menutext.html + TMT_WINDOWTEXT tmschema/tmt_windowtext.html + TMT_CAPTIONTEXT tmschema/tmt_captiontext.html + TMT_ACTIVEBORDER tmschema/tmt_activeborder.html + TMT_INACTIVEBORDER tmschema/tmt_inactiveborder.html + TMT_APPWORKSPACE tmschema/tmt_appworkspace.html + TMT_HIGHLIGHT tmschema/tmt_highlight.html + TMT_HIGHLIGHTTEXT tmschema/tmt_highlighttext.html + TMT_BTNFACE tmschema/tmt_btnface.html + TMT_BTNSHADOW tmschema/tmt_btnshadow.html + TMT_GRAYTEXT tmschema/tmt_graytext.html + TMT_BTNTEXT tmschema/tmt_btntext.html + TMT_INACTIVECAPTIONTEXT tmschema/tmt_inactivecaptiontext.html + TMT_BTNHIGHLIGHT tmschema/tmt_btnhighlight.html + TMT_DKSHADOW3D tmschema/tmt_dkshadow3d.html + TMT_LIGHT3D tmschema/tmt_light3d.html + TMT_INFOTEXT tmschema/tmt_infotext.html + TMT_INFOBK tmschema/tmt_infobk.html + TMT_BUTTONALTERNATEFACE tmschema/tmt_buttonalternateface.html + TMT_HOTTRACKING tmschema/tmt_hottracking.html + TMT_GRADIENTACTIVECAPTION tmschema/tmt_gradientactivecaption.html + TMT_GRADIENTINACTIVECAPTION tmschema/tmt_gradientinactivecaption.html + TMT_MENUHILIGHT tmschema/tmt_menuhilight.html + TMT_MENUBAR tmschema/tmt_menubar.html + TMT_FIRSTCOLOR tmschema/tmt_firstcolor.html + TMT_LASTCOLOR tmschema/tmt_lastcolor.html + TMT_FROMHUE1 tmschema/tmt_fromhue1.html + TMT_FROMHUE2 tmschema/tmt_fromhue2.html + TMT_FROMHUE3 tmschema/tmt_fromhue3.html + TMT_FROMHUE4 tmschema/tmt_fromhue4.html + TMT_FROMHUE5 tmschema/tmt_fromhue5.html + TMT_TOHUE1 tmschema/tmt_tohue1.html + TMT_TOHUE2 tmschema/tmt_tohue2.html + TMT_TOHUE3 tmschema/tmt_tohue3.html + TMT_TOHUE4 tmschema/tmt_tohue4.html + TMT_TOHUE5 tmschema/tmt_tohue5.html + TMT_FROMCOLOR1 tmschema/tmt_fromcolor1.html + TMT_FROMCOLOR2 tmschema/tmt_fromcolor2.html + TMT_FROMCOLOR3 tmschema/tmt_fromcolor3.html + TMT_FROMCOLOR4 tmschema/tmt_fromcolor4.html + TMT_FROMCOLOR5 tmschema/tmt_fromcolor5.html + TMT_TOCOLOR1 tmschema/tmt_tocolor1.html + TMT_TOCOLOR2 tmschema/tmt_tocolor2.html + TMT_TOCOLOR3 tmschema/tmt_tocolor3.html + TMT_TOCOLOR4 tmschema/tmt_tocolor4.html + TMT_TOCOLOR5 tmschema/tmt_tocolor5.html + TMT_TRANSPARENT tmschema/tmt_transparent.html + TMT_AUTOSIZE tmschema/tmt_autosize.html + TMT_BORDERONLY tmschema/tmt_borderonly.html + TMT_COMPOSITED tmschema/tmt_composited.html + TMT_BGFILL tmschema/tmt_bgfill.html + TMT_GLYPHTRANSPARENT tmschema/tmt_glyphtransparent.html + TMT_GLYPHONLY tmschema/tmt_glyphonly.html + TMT_ALWAYSSHOWSIZINGBAR tmschema/tmt_alwaysshowsizingbar.html + TMT_MIRRORIMAGE tmschema/tmt_mirrorimage.html + TMT_UNIFORMSIZING tmschema/tmt_uniformsizing.html + TMT_INTEGRALSIZING tmschema/tmt_integralsizing.html + TMT_SOURCEGROW tmschema/tmt_sourcegrow.html + TMT_SOURCESHRINK tmschema/tmt_sourceshrink.html + TMT_DRAWBORDERS tmschema/tmt_drawborders.html + TMT_NOETCHEDEFFECT tmschema/tmt_noetchedeffect.html + TMT_TEXTAPPLYOVERLAY tmschema/tmt_textapplyoverlay.html + TMT_TEXTGLOW tmschema/tmt_textglow.html + TMT_TEXTITALIC tmschema/tmt_textitalic.html + TMT_COMPOSITEDOPAQUE tmschema/tmt_compositedopaque.html + TMT_LOCALIZEDMIRRORIMAGE tmschema/tmt_localizedmirrorimage.html + TMT_IMAGECOUNT tmschema/tmt_imagecount.html + TMT_ALPHALEVEL tmschema/tmt_alphalevel.html + TMT_BORDERSIZE tmschema/tmt_bordersize.html + TMT_ROUNDCORNERWIDTH tmschema/tmt_roundcornerwidth.html + TMT_ROUNDCORNERHEIGHT tmschema/tmt_roundcornerheight.html + TMT_GRADIENTRATIO1 tmschema/tmt_gradientratio1.html + TMT_GRADIENTRATIO2 tmschema/tmt_gradientratio2.html + TMT_GRADIENTRATIO3 tmschema/tmt_gradientratio3.html + TMT_GRADIENTRATIO4 tmschema/tmt_gradientratio4.html + TMT_GRADIENTRATIO5 tmschema/tmt_gradientratio5.html + TMT_PROGRESSCHUNKSIZE tmschema/tmt_progresschunksize.html + TMT_PROGRESSSPACESIZE tmschema/tmt_progressspacesize.html + TMT_SATURATION tmschema/tmt_saturation.html + TMT_TEXTBORDERSIZE tmschema/tmt_textbordersize.html + TMT_ALPHATHRESHOLD tmschema/tmt_alphathreshold.html + TMT_WIDTH tmschema/tmt_width.html + TMT_HEIGHT tmschema/tmt_height.html + TMT_GLYPHINDEX tmschema/tmt_glyphindex.html + TMT_TRUESIZESTRETCHMARK tmschema/tmt_truesizestretchmark.html + TMT_MINDPI1 tmschema/tmt_mindpi1.html + TMT_MINDPI2 tmschema/tmt_mindpi2.html + TMT_MINDPI3 tmschema/tmt_mindpi3.html + TMT_MINDPI4 tmschema/tmt_mindpi4.html + TMT_MINDPI5 tmschema/tmt_mindpi5.html + TMT_TEXTGLOWSIZE tmschema/tmt_textglowsize.html + TMT_FRAMESPERSECOND tmschema/tmt_framespersecond.html + TMT_PIXELSPERFRAME tmschema/tmt_pixelsperframe.html + TMT_ANIMATIONDELAY tmschema/tmt_animationdelay.html + TMT_GLOWINTENSITY tmschema/tmt_glowintensity.html + TMT_OPACITY tmschema/tmt_opacity.html + TMT_COLORIZATIONCOLOR tmschema/tmt_colorizationcolor.html + TMT_COLORIZATIONOPACITY tmschema/tmt_colorizationopacity.html + TMT_GLYPHFONT tmschema/tmt_glyphfont.html + TMT_IMAGEFILE tmschema/tmt_imagefile.html + TMT_IMAGEFILE1 tmschema/tmt_imagefile1.html + TMT_IMAGEFILE2 tmschema/tmt_imagefile2.html + TMT_IMAGEFILE3 tmschema/tmt_imagefile3.html + TMT_IMAGEFILE4 tmschema/tmt_imagefile4.html + TMT_IMAGEFILE5 tmschema/tmt_imagefile5.html + TMT_GLYPHIMAGEFILE tmschema/tmt_glyphimagefile.html + TMT_TEXT tmschema/tmt_text.html + TMT_CLASSICVALUE tmschema/tmt_classicvalue.html + TMT_OFFSET tmschema/tmt_offset.html + TMT_TEXTSHADOWOFFSET tmschema/tmt_textshadowoffset.html + TMT_MINSIZE tmschema/tmt_minsize.html + TMT_MINSIZE1 tmschema/tmt_minsize1.html + TMT_MINSIZE2 tmschema/tmt_minsize2.html + TMT_MINSIZE3 tmschema/tmt_minsize3.html + TMT_MINSIZE4 tmschema/tmt_minsize4.html + TMT_MINSIZE5 tmschema/tmt_minsize5.html + TMT_NORMALSIZE tmschema/tmt_normalsize.html + TMT_SIZINGMARGINS tmschema/tmt_sizingmargins.html + TMT_CONTENTMARGINS tmschema/tmt_contentmargins.html + TMT_CAPTIONMARGINS tmschema/tmt_captionmargins.html + TMT_BORDERCOLOR tmschema/tmt_bordercolor.html + TMT_FILLCOLOR tmschema/tmt_fillcolor.html + TMT_TEXTCOLOR tmschema/tmt_textcolor.html + TMT_EDGELIGHTCOLOR tmschema/tmt_edgelightcolor.html + TMT_EDGEHIGHLIGHTCOLOR tmschema/tmt_edgehighlightcolor.html + TMT_EDGESHADOWCOLOR tmschema/tmt_edgeshadowcolor.html + TMT_EDGEDKSHADOWCOLOR tmschema/tmt_edgedkshadowcolor.html + TMT_EDGEFILLCOLOR tmschema/tmt_edgefillcolor.html + TMT_TRANSPARENTCOLOR tmschema/tmt_transparentcolor.html + TMT_GRADIENTCOLOR1 tmschema/tmt_gradientcolor1.html + TMT_GRADIENTCOLOR2 tmschema/tmt_gradientcolor2.html + TMT_GRADIENTCOLOR3 tmschema/tmt_gradientcolor3.html + TMT_GRADIENTCOLOR4 tmschema/tmt_gradientcolor4.html + TMT_GRADIENTCOLOR5 tmschema/tmt_gradientcolor5.html + TMT_SHADOWCOLOR tmschema/tmt_shadowcolor.html + TMT_GLOWCOLOR tmschema/tmt_glowcolor.html + TMT_TEXTBORDERCOLOR tmschema/tmt_textbordercolor.html + TMT_TEXTSHADOWCOLOR tmschema/tmt_textshadowcolor.html + TMT_GLYPHTEXTCOLOR tmschema/tmt_glyphtextcolor.html + TMT_GLYPHTRANSPARENTCOLOR tmschema/tmt_glyphtransparentcolor.html + TMT_FILLCOLORHINT tmschema/tmt_fillcolorhint.html + TMT_BORDERCOLORHINT tmschema/tmt_bordercolorhint.html + TMT_ACCENTCOLORHINT tmschema/tmt_accentcolorhint.html + TMT_TEXTCOLORHINT tmschema/tmt_textcolorhint.html + TMT_HEADING1TEXTCOLOR tmschema/tmt_heading1textcolor.html + TMT_HEADING2TEXTCOLOR tmschema/tmt_heading2textcolor.html + TMT_BODYTEXTCOLOR tmschema/tmt_bodytextcolor.html + TMT_BGTYPE tmschema/tmt_bgtype.html + TMT_BORDERTYPE tmschema/tmt_bordertype.html + TMT_FILLTYPE tmschema/tmt_filltype.html + TMT_SIZINGTYPE tmschema/tmt_sizingtype.html + TMT_HALIGN tmschema/tmt_halign.html + TMT_CONTENTALIGNMENT tmschema/tmt_contentalignment.html + TMT_VALIGN tmschema/tmt_valign.html + TMT_OFFSETTYPE tmschema/tmt_offsettype.html + TMT_ICONEFFECT tmschema/tmt_iconeffect.html + TMT_TEXTSHADOWTYPE tmschema/tmt_textshadowtype.html + TMT_IMAGELAYOUT tmschema/tmt_imagelayout.html + TMT_GLYPHTYPE tmschema/tmt_glyphtype.html + TMT_IMAGESELECTTYPE tmschema/tmt_imageselecttype.html + TMT_GLYPHFONTSIZINGTYPE tmschema/tmt_glyphfontsizingtype.html + TMT_TRUESIZESCALINGTYPE tmschema/tmt_truesizescalingtype.html + TMT_USERPICTURE tmschema/tmt_userpicture.html + TMT_DEFAULTPANESIZE tmschema/tmt_defaultpanesize.html + TMT_BLENDCOLOR tmschema/tmt_blendcolor.html + TMT_CUSTOMSPLITRECT tmschema/tmt_customsplitrect.html + TMT_ANIMATIONBUTTONRECT tmschema/tmt_animationbuttonrect.html + TMT_ANIMATIONDURATION tmschema/tmt_animationduration.html + TMT_TRANSITIONDURATIONS tmschema/tmt_transitiondurations.html + TMT_SCALEDBACKGROUND tmschema/tmt_scaledbackground.html + TMT_ATLASIMAGE tmschema/tmt_atlasimage.html + TMT_ATLASINPUTIMAGE tmschema/tmt_atlasinputimage.html + TMT_ATLASRECT tmschema/tmt_atlasrect.html + VSCLASS_LINK tmschema/vsclass_link.html + LP_HYPERLINK tmschema/lp_hyperlink.html + HLS_NORMALTEXT tmschema/hls_normaltext.html + HLS_LINKTEXT tmschema/hls_linktext.html + VSCLASS_EMPTYMARKUP tmschema/vsclass_emptymarkup.html + EMP_MARKUPTEXT tmschema/emp_markuptext.html + EMT_NORMALTEXT tmschema/emt_normaltext.html + EMT_LINKTEXT tmschema/emt_linktext.html + VSCLASS_STATIC tmschema/vsclass_static.html + STAT_TEXT tmschema/stat_text.html + VSCLASS_PAGE tmschema/vsclass_page.html + PGRP_UP tmschema/pgrp_up.html + PGRP_DOWN tmschema/pgrp_down.html + PGRP_UPHORZ tmschema/pgrp_uphorz.html + PGRP_DOWNHORZ tmschema/pgrp_downhorz.html + VSCLASS_MONTHCAL tmschema/vsclass_monthcal.html + MC_BACKGROUND tmschema/mc_background.html + MC_BORDERS tmschema/mc_borders.html + MC_GRIDBACKGROUND tmschema/mc_gridbackground.html + MC_COLHEADERSPLITTER tmschema/mc_colheadersplitter.html + MC_GRIDCELLBACKGROUND tmschema/mc_gridcellbackground.html + MC_GRIDCELL tmschema/mc_gridcell.html + MC_GRIDCELLUPPER tmschema/mc_gridcellupper.html + MC_TRAILINGGRIDCELL tmschema/mc_trailinggridcell.html + MC_TRAILINGGRIDCELLUPPER tmschema/mc_trailinggridcellupper.html + MC_NAVNEXT tmschema/mc_navnext.html + MC_NAVPREV tmschema/mc_navprev.html + MCGCB_SELECTED tmschema/mcgcb_selected.html + MCGCB_HOT tmschema/mcgcb_hot.html + MCGCB_SELECTEDHOT tmschema/mcgcb_selectedhot.html + MCGCB_SELECTEDNOTFOCUSED tmschema/mcgcb_selectednotfocused.html + MCGCB_TODAY tmschema/mcgcb_today.html + MCGC_HOT tmschema/mcgc_hot.html + MCGC_HASSTATE tmschema/mcgc_hasstate.html + MCGC_HASSTATEHOT tmschema/mcgc_hasstatehot.html + MCGC_TODAY tmschema/mcgc_today.html + MCGCU_HOT tmschema/mcgcu_hot.html + MCGCU_HASSTATE tmschema/mcgcu_hasstate.html + MCGCU_HASSTATEHOT tmschema/mcgcu_hasstatehot.html + MCTGC_HOT tmschema/mctgc_hot.html + MCTGC_HASSTATE tmschema/mctgc_hasstate.html + MCTGC_HASSTATEHOT tmschema/mctgc_hasstatehot.html + MCTGC_TODAY tmschema/mctgc_today.html + MCTGCU_HOT tmschema/mctgcu_hot.html + MCTGCU_HASSTATE tmschema/mctgcu_hasstate.html + MCTGCU_HASSTATEHOT tmschema/mctgcu_hasstatehot.html + MCNN_NORMAL tmschema/mcnn_normal.html + MCNN_HOT tmschema/mcnn_hot.html + MCNN_PRESSED tmschema/mcnn_pressed.html + MCNN_DISABLED tmschema/mcnn_disabled.html + MCNP_NORMAL tmschema/mcnp_normal.html + MCNP_HOT tmschema/mcnp_hot.html + MCNP_PRESSED tmschema/mcnp_pressed.html + MCNP_DISABLED tmschema/mcnp_disabled.html + VSCLASS_CLOCK tmschema/vsclass_clock.html + CLP_TIME tmschema/clp_time.html + CLS_NORMAL tmschema/cls_normal.html + CLS_HOT tmschema/cls_hot.html + CLS_PRESSED tmschema/cls_pressed.html + VSCLASS_TRAYNOTIFY tmschema/vsclass_traynotify.html + TNP_BACKGROUND tmschema/tnp_background.html + TNP_ANIMBACKGROUND tmschema/tnp_animbackground.html + VSCLASS_TASKBAR tmschema/vsclass_taskbar.html + TBP_BACKGROUNDBOTTOM tmschema/tbp_backgroundbottom.html + TBP_BACKGROUNDRIGHT tmschema/tbp_backgroundright.html + TBP_BACKGROUNDTOP tmschema/tbp_backgroundtop.html + TBP_BACKGROUNDLEFT tmschema/tbp_backgroundleft.html + TBP_SIZINGBARBOTTOM tmschema/tbp_sizingbarbottom.html + TBP_SIZINGBARRIGHT tmschema/tbp_sizingbarright.html + TBP_SIZINGBARTOP tmschema/tbp_sizingbartop.html + TBP_SIZINGBARLEFT tmschema/tbp_sizingbarleft.html + VSCLASS_TASKBAND tmschema/vsclass_taskband.html + TDP_GROUPCOUNT tmschema/tdp_groupcount.html + TDP_FLASHBUTTON tmschema/tdp_flashbutton.html + TDP_FLASHBUTTONGROUPMENU tmschema/tdp_flashbuttongroupmenu.html + VSCLASS_STARTPANEL tmschema/vsclass_startpanel.html + SPP_USERPANE tmschema/spp_userpane.html + SPP_MOREPROGRAMS tmschema/spp_moreprograms.html + SPP_MOREPROGRAMSARROW tmschema/spp_moreprogramsarrow.html + SPP_PROGLIST tmschema/spp_proglist.html + SPP_PROGLISTSEPARATOR tmschema/spp_proglistseparator.html + SPP_PLACESLIST tmschema/spp_placeslist.html + SPP_PLACESLISTSEPARATOR tmschema/spp_placeslistseparator.html + SPP_LOGOFF tmschema/spp_logoff.html + SPP_LOGOFFBUTTONS tmschema/spp_logoffbuttons.html + SPP_USERPICTURE tmschema/spp_userpicture.html + SPP_PREVIEW tmschema/spp_preview.html + SPP_MOREPROGRAMSTAB tmschema/spp_moreprogramstab.html + SPP_NSCHOST tmschema/spp_nschost.html + SPP_SOFTWAREEXPLORER tmschema/spp_softwareexplorer.html + SPP_OPENBOX tmschema/spp_openbox.html + SPP_SEARCHVIEW tmschema/spp_searchview.html + SPP_MOREPROGRAMSARROWBACK tmschema/spp_moreprogramsarrowback.html + SPP_TOPMATCH tmschema/spp_topmatch.html + SPP_LOGOFFSPLITBUTTONDROPDOWN tmschema/spp_logoffsplitbuttondropdown.html + SPMPT_NORMAL tmschema/spmpt_normal.html + SPMPT_HOT tmschema/spmpt_hot.html + SPMPT_SELECTED tmschema/spmpt_selected.html + SPMPT_DISABLED tmschema/spmpt_disabled.html + SPMPT_FOCUSED tmschema/spmpt_focused.html + SPSE_NORMAL tmschema/spse_normal.html + SPSE_HOT tmschema/spse_hot.html + SPSE_SELECTED tmschema/spse_selected.html + SPSE_DISABLED tmschema/spse_disabled.html + SPSE_FOCUSED tmschema/spse_focused.html + SPOB_NORMAL tmschema/spob_normal.html + SPOB_HOT tmschema/spob_hot.html + SPOB_SELECTED tmschema/spob_selected.html + SPOB_DISABLED tmschema/spob_disabled.html + SPOB_FOCUSED tmschema/spob_focused.html + SPS_NORMAL tmschema/sps_normal.html + SPS_HOT tmschema/sps_hot.html + SPS_PRESSED tmschema/sps_pressed.html + SPSB_NORMAL tmschema/spsb_normal.html + SPSB_HOT tmschema/spsb_hot.html + SPSB_PRESSED tmschema/spsb_pressed.html + SPLS_NORMAL tmschema/spls_normal.html + SPLS_HOT tmschema/spls_hot.html + SPLS_PRESSED tmschema/spls_pressed.html + VSCLASS_MENUBAND tmschema/vsclass_menuband.html + MDP_NEWAPPBUTTON tmschema/mdp_newappbutton.html + MDP_SEPERATOR tmschema/mdp_seperator.html + MDS_NORMAL tmschema/mds_normal.html + MDS_HOT tmschema/mds_hot.html + MDS_PRESSED tmschema/mds_pressed.html + MDS_DISABLED tmschema/mds_disabled.html + MDS_CHECKED tmschema/mds_checked.html + MDS_HOTCHECKED tmschema/mds_hotchecked.html + AEROWIZARDPARTS tmschema/aerowizardparts.html + AEROWIZARDSTYLEPARTS tmschema/aerowizardstyleparts.html + TITLEBARSTATES tmschema/titlebarstates.html + HEADERAREASTATES tmschema/headerareastates.html + CONTENTAREASTATES tmschema/contentareastates.html + BUTTONPARTS tmschema/buttonparts.html + BUTTONSTYLEPARTS tmschema/buttonstyleparts.html + PUSHBUTTONSTATES tmschema/pushbuttonstates.html + RADIOBUTTONSTATES tmschema/radiobuttonstates.html + CHECKBOXSTATES tmschema/checkboxstates.html + GROUPBOXSTATES tmschema/groupboxstates.html + COMMANDLINKSTATES tmschema/commandlinkstates.html + COMMANDLINKGLYPHSTATES tmschema/commandlinkglyphstates.html + COMBOBOXPARTS tmschema/comboboxparts.html + COMBOBOXSTYLEPARTS tmschema/comboboxstyleparts.html + COMBOBOXSTYLESTATES tmschema/comboboxstylestates.html + DROPDOWNBUTTONRIGHTSTATES tmschema/dropdownbuttonrightstates.html + DROPDOWNBUTTONLEFTSTATES tmschema/dropdownbuttonleftstates.html + TRANSPARENTBACKGROUNDSTATES tmschema/transparentbackgroundstates.html + BORDERSTATES tmschema/borderstates.html + READONLYSTATES tmschema/readonlystates.html + CUEBANNERSTATES tmschema/cuebannerstates.html + COMMUNICATIONSPARTS tmschema/communicationsparts.html + COMMUNICATIONSSTYLEPARTS tmschema/communicationsstyleparts.html + TABSTATES tmschema/tabstates.html + CONTROLPANELPARTS tmschema/controlpanelparts.html + CONTROLPANELSTYLEPARTS tmschema/controlpanelstyleparts.html + HELPLINKSTATES tmschema/helplinkstates.html + TASKLINKSTATES tmschema/tasklinkstates.html + CONTENTLINKSTATES tmschema/contentlinkstates.html + SECTIONTITLELINKSTATES tmschema/sectiontitlelinkstates.html + DATEPICKERPARTS tmschema/datepickerparts.html + DATEPICKERSTYLEPARTS tmschema/datepickerstyleparts.html + DATETEXTSTATES tmschema/datetextstates.html + DATEBORDERSTATES tmschema/dateborderstates.html + SHOWCALENDARBUTTONRIGHTSTATES tmschema/showcalendarbuttonrightstates.html + DRAGDROPPARTS tmschema/dragdropparts.html + DRAGDROPSTYLEPARTS tmschema/dragdropstyleparts.html + COPYSTATES tmschema/copystates.html + MOVESTATES tmschema/movestates.html + UPDATEMETADATASTATES tmschema/updatemetadatastates.html + CREATELINKSTATES tmschema/createlinkstates.html + WARNINGSTATES tmschema/warningstates.html + NONESTATES tmschema/nonestates.html + EDITPARTS tmschema/editparts.html + EDITSTYLEPARTS tmschema/editstyleparts.html + EDITTEXTSTATES tmschema/edittextstates.html + BACKGROUNDSTATES tmschema/backgroundstates.html + BACKGROUNDWITHBORDERSTATES tmschema/backgroundwithborderstates.html + EDITBORDER_NOSCROLLSTATES tmschema/editborder_noscrollstates.html + EDITBORDER_HSCROLLSTATES tmschema/editborder_hscrollstates.html + EDITBORDER_VSCROLLSTATES tmschema/editborder_vscrollstates.html + EDITBORDER_HVSCROLLSTATES tmschema/editborder_hvscrollstates.html + EXPLORERBARPARTS tmschema/explorerbarparts.html + EXPLORERBARSTYLEPARTS tmschema/explorerbarstyleparts.html + HEADERCLOSESTATES tmschema/headerclosestates.html + HEADERPINSTATES tmschema/headerpinstates.html + IEBARMENUSTATES tmschema/iebarmenustates.html + NORMALGROUPCOLLAPSESTATES tmschema/normalgroupcollapsestates.html + NORMALGROUPEXPANDSTATES tmschema/normalgroupexpandstates.html + SPECIALGROUPCOLLAPSESTATES tmschema/specialgroupcollapsestates.html + SPECIALGROUPEXPANDSTATES tmschema/specialgroupexpandstates.html + FLYOUTPARTS tmschema/flyoutparts.html + FLYOUTSTYLEPARTS tmschema/flyoutstyleparts.html + LABELSTATES tmschema/labelstates.html + LINKSTATES tmschema/linkstates.html + BODYSTATES tmschema/bodystates.html + LINKHEADERSTATES tmschema/linkheaderstates.html + HEADERPARTS tmschema/headerparts.html + HEADERSTYLEPARTS tmschema/headerstyleparts.html + HEADERSTYLESTATES tmschema/headerstylestates.html + HEADERITEMSTATES tmschema/headeritemstates.html + HEADERITEMLEFTSTATES tmschema/headeritemleftstates.html + HEADERITEMRIGHTSTATES tmschema/headeritemrightstates.html + HEADERSORTARROWSTATES tmschema/headersortarrowstates.html + HEADERDROPDOWNSTATES tmschema/headerdropdownstates.html + HEADERDROPDOWNFILTERSTATES tmschema/headerdropdownfilterstates.html + HEADEROVERFLOWSTATES tmschema/headeroverflowstates.html + LISTBOXPARTS tmschema/listboxparts.html + LISTBOXSTYLEPARTS tmschema/listboxstyleparts.html + BORDER_HSCROLLSTATES tmschema/border_hscrollstates.html + BORDER_HVSCROLLSTATES tmschema/border_hvscrollstates.html + BORDER_NOSCROLLSTATES tmschema/border_noscrollstates.html + BORDER_VSCROLLSTATES tmschema/border_vscrollstates.html + ITEMSTATES tmschema/itemstates.html + LISTVIEWPARTS tmschema/listviewparts.html + LISTVIEWSTYLEPARTS tmschema/listviewstyleparts.html + LISTITEMSTATES tmschema/listitemstates.html + GROUPHEADERSTATES tmschema/groupheaderstates.html + GROUPHEADERLINESTATES tmschema/groupheaderlinestates.html + EXPANDBUTTONSTATES tmschema/expandbuttonstates.html + COLLAPSEBUTTONSTATES tmschema/collapsebuttonstates.html + MENUPARTS tmschema/menuparts.html + MENUSTYLEPARTS tmschema/menustyleparts.html + BARBACKGROUNDSTATES tmschema/barbackgroundstates.html + BARITEMSTATES tmschema/baritemstates.html + POPUPCHECKSTATES tmschema/popupcheckstates.html + POPUPCHECKBACKGROUNDSTATES tmschema/popupcheckbackgroundstates.html + POPUPITEMSTATES tmschema/popupitemstates.html + POPUPSUBMENUSTATES tmschema/popupsubmenustates.html + SYSTEMCLOSESTATES tmschema/systemclosestates.html + SYSTEMMAXIMIZESTATES tmschema/systemmaximizestates.html + SYSTEMMINIMIZESTATES tmschema/systemminimizestates.html + SYSTEMRESTORESTATES tmschema/systemrestorestates.html + NAVIGATIONPARTS tmschema/navigationparts.html + NAV_BACKBUTTONSTATES tmschema/nav_backbuttonstates.html + NAV_FORWARDBUTTONSTATES tmschema/nav_forwardbuttonstates.html + NAV_MENUBUTTONSTATES tmschema/nav_menubuttonstates.html + PROGRESSPARTS tmschema/progressparts.html + PROGRESSSTYLEPARTS tmschema/progressstyleparts.html + TRANSPARENTBARSTATES tmschema/transparentbarstates.html + TRANSPARENTBARVERTSTATES tmschema/transparentbarvertstates.html + FILLSTATES tmschema/fillstates.html + FILLVERTSTATES tmschema/fillvertstates.html + REBARPARTS tmschema/rebarparts.html + REBARSTYLEPARTS tmschema/rebarstyleparts.html + CHEVRONSTATES tmschema/chevronstates.html + CHEVRONVERTSTATES tmschema/chevronvertstates.html + SPLITTERSTATES tmschema/splitterstates.html + SPLITTERVERTSTATES tmschema/splittervertstates.html + SCROLLBARPARTS tmschema/scrollbarparts.html + SCROLLBARSTYLEPARTS tmschema/scrollbarstyleparts.html + ARROWBTNSTATES tmschema/arrowbtnstates.html + SCROLLBARSTYLESTATES tmschema/scrollbarstylestates.html + SIZEBOXSTATES tmschema/sizeboxstates.html + SPINPARTS tmschema/spinparts.html + SPINSTYLEPARTS tmschema/spinstyleparts.html + UPSTATES tmschema/upstates.html + DOWNSTATES tmschema/downstates.html + UPHORZSTATES tmschema/uphorzstates.html + DOWNHORZSTATES tmschema/downhorzstates.html + STATUSPARTS tmschema/statusparts.html + STATUSSTYLEPARTS tmschema/statusstyleparts.html + TABPARTS tmschema/tabparts.html + TABSTYLEPARTS tmschema/tabstyleparts.html + TABITEMSTATES tmschema/tabitemstates.html + TABITEMLEFTEDGESTATES tmschema/tabitemleftedgestates.html + TABITEMRIGHTEDGESTATES tmschema/tabitemrightedgestates.html + TABITEMBOTHEDGESTATES tmschema/tabitembothedgestates.html + TOPTABITEMSTATES tmschema/toptabitemstates.html + TOPTABITEMLEFTEDGESTATES tmschema/toptabitemleftedgestates.html + TOPTABITEMRIGHTEDGESTATES tmschema/toptabitemrightedgestates.html + TOPTABITEMBOTHEDGESTATES tmschema/toptabitembothedgestates.html + TASKDIALOGPARTS tmschema/taskdialogparts.html + TASKDIALOGSTYLEPARTS tmschema/taskdialogstyleparts.html + CONTENTPANESTATES tmschema/contentpanestates.html + EXPANDOBUTTONSTATES tmschema/expandobuttonstates.html + TEXTSTYLEPARTS tmschema/textstyleparts.html + HYPERLINKTEXTSTATES tmschema/hyperlinktextstates.html + CONTROLLABELSTATES tmschema/controllabelstates.html + TOOLBARPARTS tmschema/toolbarparts.html + TOOLBARSTYLEPARTS tmschema/toolbarstyleparts.html + TOOLBARSTYLESTATES tmschema/toolbarstylestates.html + TOOLTIPPARTS tmschema/tooltipparts.html + TOOLTIPSTYLEPARTS tmschema/tooltipstyleparts.html + CLOSESTATES tmschema/closestates.html + STANDARDSTATES tmschema/standardstates.html + BALLOONSTATES tmschema/balloonstates.html + BALLOONSTEMSTATES tmschema/balloonstemstates.html + WRENCHSTATES tmschema/wrenchstates.html + TRACKBARPARTS tmschema/trackbarparts.html + TRACKBARSTYLEPARTS tmschema/trackbarstyleparts.html + TRACKBARSTYLESTATES tmschema/trackbarstylestates.html + TRACKSTATES tmschema/trackstates.html + TRACKVERTSTATES tmschema/trackvertstates.html + THUMBSTATES tmschema/thumbstates.html + THUMBBOTTOMSTATES tmschema/thumbbottomstates.html + THUMBTOPSTATES tmschema/thumbtopstates.html + THUMBVERTSTATES tmschema/thumbvertstates.html + THUMBLEFTSTATES tmschema/thumbleftstates.html + THUMBRIGHTSTATES tmschema/thumbrightstates.html + TICSSTATES tmschema/ticsstates.html + TICSVERTSTATES tmschema/ticsvertstates.html + TREEVIEWPARTS tmschema/treeviewparts.html + TREEVIEWSTYLEPARTS tmschema/treeviewstyleparts.html + TREEITEMSTATES tmschema/treeitemstates.html + GLYPHSTATES tmschema/glyphstates.html + HOTGLYPHSTATES tmschema/hotglyphstates.html + WINDOWPARTS tmschema/windowparts.html + WINDOWSTYLEPARTS tmschema/windowstyleparts.html + FRAMESTATES tmschema/framestates.html + CAPTIONSTATES tmschema/captionstates.html + MAXCAPTIONSTATES tmschema/maxcaptionstates.html + MINCAPTIONSTATES tmschema/mincaptionstates.html + HORZSCROLLSTATES tmschema/horzscrollstates.html + HORZTHUMBSTATES tmschema/horzthumbstates.html + VERTSCROLLSTATES tmschema/vertscrollstates.html + VERTTHUMBSTATES tmschema/vertthumbstates.html + SYSBUTTONSTATES tmschema/sysbuttonstates.html + MINBUTTONSTATES tmschema/minbuttonstates.html + MAXBUTTONSTATES tmschema/maxbuttonstates.html + RESTOREBUTTONSTATES tmschema/restorebuttonstates.html + HELPBUTTONSTATES tmschema/helpbuttonstates.html + CLOSEBUTTONSTATES tmschema/closebuttonstates.html + BGTYPE tmschema/bgtype.html + IMAGELAYOUT tmschema/imagelayout.html + BORDERTYPE tmschema/bordertype.html + FILLTYPE tmschema/filltype.html + SIZINGTYPE tmschema/sizingtype.html + HALIGN tmschema/halign.html + CONTENTALIGNMENT tmschema/contentalignment.html + VALIGN tmschema/valign.html + OFFSETTYPE tmschema/offsettype.html + ICONEFFECT tmschema/iconeffect.html + TEXTSHADOWTYPE tmschema/textshadowtype.html + GLYPHTYPE tmschema/glyphtype.html + IMAGESELECTTYPE tmschema/imageselecttype.html + TRUESIZESCALINGTYPE tmschema/truesizescalingtype.html + GLYPHFONTSIZINGTYPE tmschema/glyphfontsizingtype.html + LINKPARTS tmschema/linkparts.html + HYPERLINKSTATES tmschema/hyperlinkstates.html + EMPTYMARKUPPARTS tmschema/emptymarkupparts.html + MARKUPTEXTSTATES tmschema/markuptextstates.html + STATICPARTS tmschema/staticparts.html + PAGEPARTS tmschema/pageparts.html + MONTHCALPARTS tmschema/monthcalparts.html + GRIDCELLBACKGROUNDSTATES tmschema/gridcellbackgroundstates.html + GRIDCELLSTATES tmschema/gridcellstates.html + GRIDCELLUPPERSTATES tmschema/gridcellupperstates.html + TRAILINGGRIDCELLSTATES tmschema/trailinggridcellstates.html + TRAILINGGRIDCELLUPPERSTATES tmschema/trailinggridcellupperstates.html + NAVNEXTSTATES tmschema/navnextstates.html + NAVPREVSTATES tmschema/navprevstates.html + CLOCKPARTS tmschema/clockparts.html + CLOCKSTATES tmschema/clockstates.html + TRAYNOTIFYPARTS tmschema/traynotifyparts.html + TASKBARPARTS tmschema/taskbarparts.html + TASKBANDPARTS tmschema/taskbandparts.html + STARTPANELPARTS tmschema/startpanelparts.html + MOREPROGRAMSTABSTATES tmschema/moreprogramstabstates.html + SOFTWAREEXPLORERSTATES tmschema/softwareexplorerstates.html + OPENBOXSTATES tmschema/openboxstates.html + MOREPROGRAMSARROWSTATES tmschema/moreprogramsarrowstates.html + MOREPROGRAMSARROWBACKSTATES tmschema/moreprogramsarrowbackstates.html + LOGOFFBUTTONSSTATES tmschema/logoffbuttonsstates.html + MENUBANDPARTS tmschema/menubandparts.html + MENUBANDSTATES tmschema/menubandstates.html + Maps maps/index.html + itsPtrSize maps/itsptrsize.html + ituPtrSize maps/ituptrsize.html + TMapIdType maps/tmapidtype.html + PMapItem maps/pmapitem.html + PMapLink maps/pmaplink.html + TMapLink maps/tmaplink.html + PMapID maps/pmapid.html + TMapID maps/tmapid.html + TMapItem maps/tmapitem.html + TBaseMap maps/tbasemap.html + InternalAdd maps/tbasemap.internaladd.html + InternalGetData maps/tbasemap.internalgetdata.html + InternalGetDataPtr maps/tbasemap.internalgetdataptr.html + InternalGetId maps/tbasemap.internalgetid.html + InternalSetData maps/tbasemap.internalsetdata.html + ReleaseData maps/tbasemap.releasedata.html + Create maps/tbasemap.create.html + Clear maps/tbasemap.clear.html + Count maps/tbasemap.count.html + Delete maps/tbasemap.delete.html + Destroy maps/tbasemap.destroy.html + TBaseMapIterator maps/tbasemapiterator.html + InternalCreate maps/tbasemapiterator.internalcreate.html + InternalLocate maps/tbasemapiterator.internallocate.html + Validate maps/tbasemapiterator.validate.html + ValidateMap maps/tbasemapiterator.validatemap.html + Current maps/tbasemapiterator.current.html + Destroy maps/tbasemapiterator.destroy.html + First maps/tbasemapiterator.first.html + Next maps/tbasemapiterator.next.html + Previous maps/tbasemapiterator.previous.html + Last maps/tbasemapiterator.last.html + Valid maps/tbasemapiterator.valid.html + BOM maps/tbasemapiterator.bom.html + EOM maps/tbasemapiterator.eom.html + TMap maps/tmap.html + Add maps/tmap.add.html + HasId maps/tmap.hasid.html + GetData maps/tmap.getdata.html + GetDataPtr maps/tmap.getdataptr.html + SetData maps/tmap.setdata.html + TMapIterator maps/tmapiterator.html + Create maps/tmapiterator.create.html + DataPtr maps/tmapiterator.dataptr.html + GetData maps/tmapiterator.getdata.html + GetID maps/tmapiterator.getid.html + Locate maps/tmapiterator.locate.html + SetData maps/tmapiterator.setdata.html + TTypedMap maps/ttypedmap.html + InternalSetData maps/tbasemap.internalsetdata.html + ReleaseData maps/ttypedmap.releasedata.html + Add maps/ttypedmap.add.html + Create maps/tbasemap.create.html + Destroy maps/tbasemap.destroy.html + HasId maps/ttypedmap.hasid.html + GetData maps/ttypedmap.getdata.html + GetDataPtr maps/ttypedmap.getdataptr.html + SetData maps/ttypedmap.setdata.html + TTypedMapIterator maps/ttypedmapiterator.html + Create maps/ttypedmapiterator.create.html + GetData maps/ttypedmapiterator.getdata.html + GetID maps/ttypedmapiterator.getid.html + Locate maps/ttypedmapiterator.locate.html + SetData maps/ttypedmapiterator.setdata.html + MapReport maps/mapreport.html + ImgList imglist/index.html + TImageIndex imglist/timageindex.html + TDrawingStyle imglist/tdrawingstyle.html + TImageType imglist/timagetype.html + TOverlay imglist/toverlay.html + TChangeLink imglist/tchangelink.html + Destroy imglist/tchangelink.destroy.html + Change imglist/tchangelink.change.html + OnChange imglist/tchangelink.onchange.html + Sender imglist/tchangelink.sender.html + TCustomImageList imglist/tcustomimagelist.html + CheckIndex imglist/tcustomimagelist.checkindex.html + GetReferenceHandle imglist/tcustomimagelist.getreferencehandle.html + Initialize imglist/tcustomimagelist.initialize.html + DefineProperties imglist/tcustomimagelist.defineproperties.html + SetWidthHeight imglist/tcustomimagelist.setwidthheight.html + ClearOverlays imglist/tcustomimagelist.clearoverlays.html + WSCreateReference imglist/tcustomimagelist.wscreatereference.html + Create imglist/tcustomimagelist.create.html + CreateSize imglist/tcustomimagelist.createsize.html + Destroy imglist/tcustomimagelist.destroy.html + AssignTo imglist/tcustomimagelist.assignto.html + Assign imglist/tcustomimagelist.assign.html + WriteData imglist/tcustomimagelist.writedata.html + ReadData imglist/tcustomimagelist.readdata.html + Equals imglist/tcustomimagelist.equals.html + BeginUpdate imglist/tcustomimagelist.beginupdate.html + EndUpdate imglist/tcustomimagelist.endupdate.html + Add imglist/tcustomimagelist.add.html + AddIcon imglist/tcustomimagelist.addicon.html + AddImages imglist/tcustomimagelist.addimages.html + AddMasked imglist/tcustomimagelist.addmasked.html + AddLazarusResource imglist/tcustomimagelist.addlazarusresource.html + AddResourceName imglist/tcustomimagelist.addresourcename.html + Change imglist/tcustomimagelist.change.html + Clear imglist/tcustomimagelist.clear.html + Delete imglist/tcustomimagelist.delete.html + Draw imglist/tcustomimagelist.draw.html + DrawOverlay imglist/tcustomimagelist.drawoverlay.html + FillDescription imglist/tcustomimagelist.filldescription.html + GetBitmap imglist/tcustomimagelist.getbitmap.html + GetFullBitmap imglist/tcustomimagelist.getfullbitmap.html + GetFullRawImage imglist/tcustomimagelist.getfullrawimage.html + GetIcon imglist/tcustomimagelist.geticon.html + GetRawImage imglist/tcustomimagelist.getrawimage.html + GetHotSpot imglist/tcustomimagelist.gethotspot.html + Insert imglist/tcustomimagelist.insert.html + InsertIcon imglist/tcustomimagelist.inserticon.html + InsertMasked imglist/tcustomimagelist.insertmasked.html + Move imglist/tcustomimagelist.move.html + Overlay imglist/tcustomimagelist.overlay.html + HasOverlays imglist/tcustomimagelist.hasoverlays.html + Replace imglist/tcustomimagelist.replace.html + ReplaceMasked imglist/tcustomimagelist.replacemasked.html + RegisterChanges imglist/tcustomimagelist.registerchanges.html + StretchDraw imglist/tcustomimagelist.stretchdraw.html + UnRegisterChanges imglist/tcustomimagelist.unregisterchanges.html + AllocBy imglist/tcustomimagelist.allocby.html + BlendColor imglist/tcustomimagelist.blendcolor.html + BkColor imglist/tcustomimagelist.bkcolor.html + Count imglist/tcustomimagelist.count.html + DrawingStyle imglist/tcustomimagelist.drawingstyle.html + HandleAllocated imglist/tcustomimagelist.handleallocated.html + Height imglist/tcustomimagelist.height.html + Width imglist/tcustomimagelist.width.html + OnChange imglist/tcustomimagelist.onchange.html + Masked imglist/tcustomimagelist.masked.html + Reference imglist/tcustomimagelist.reference.html + ShareImages imglist/tcustomimagelist.shareimages.html + ImageType imglist/tcustomimagelist.imagetype.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + LCLClasses lclclasses/index.html + LazLongRec lclclasses/lazlongrec.html + TLCLComponent lclclasses/tlclcomponent.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetWSComponentClass lclclasses/tlclcomponent.getwscomponentclass.html + Create lclclasses/tlclcomponent.create.html + Destroy lclclasses/tlclcomponent.destroy.html + NewInstance lclclasses/tlclcomponent.newinstance.html + RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html + LCLRefCount lclclasses/tlclcomponent.lclrefcount.html + WidgetSetClass lclclasses/tlclcomponent.widgetsetclass.html + IncLCLRefCount + DecLCLRefCount + TLCLReferenceComponent lclclasses/tlclreferencecomponent.html + CreateParams lclclasses/tlclreferencecomponent.createparams.html + DestroyReference lclclasses/tlclreferencecomponent.destroyreference.html + GetReferenceHandle lclclasses/tlclreferencecomponent.getreferencehandle.html + ReferenceCreated lclclasses/tlclreferencecomponent.referencecreated.html + ReferenceDestroying lclclasses/tlclreferencecomponent.referencedestroying.html + ReferenceNeeded lclclasses/tlclreferencecomponent.referenceneeded.html + WSCreateReference lclclasses/tlclreferencecomponent.wscreatereference.html + WSDestroyReference lclclasses/tlclreferencecomponent.wsdestroyreference.html + Destroy lclclasses/tlclreferencecomponent.destroy.html + Handle lclclasses/tlclreferencecomponent.handle.html + ReferenceAllocated lclclasses/tlclreferencecomponent.referenceallocated.html + HandleAllocated + alllclunits alllclunits/index.html + CheckLst checklst/index.html + TCheckListClicked checklst/tchecklistclicked.html + TCustomCheckListBox checklst/tcustomchecklistbox.html + AssignItemDataToCache checklst/tcustomchecklistbox.assignitemdatatocache.html + AssignCacheToItemData checklst/tcustomchecklistbox.assigncachetoitemdata.html + CreateParams + DrawItem + GetCachedDataSize checklst/tcustomchecklistbox.getcacheddatasize.html + GetCheckWidth checklst/tcustomchecklistbox.getcheckwidth.html + ReadData checklst/tcustomchecklistbox.readdata.html + WriteData checklst/tcustomchecklistbox.writedata.html + ClickCheck checklst/tcustomchecklistbox.clickcheck.html + ItemClick checklst/tcustomchecklistbox.itemclick.html + KeyDown checklst/tcustomchecklistbox.keydown.html + FontChanged checklst/tcustomchecklistbox.fontchanged.html + Create checklst/tcustomchecklistbox.create.html + Toggle checklst/tcustomchecklistbox.toggle.html + CheckAll checklst/tcustomchecklistbox.checkall.html + AllowGrayed checklst/tcustomchecklistbox.allowgrayed.html + Checked checklst/tcustomchecklistbox.checked.html + Header checklst/tcustomchecklistbox.header.html + ItemEnabled checklst/tcustomchecklistbox.itemenabled.html + State checklst/tcustomchecklistbox.state.html + OnClickCheck checklst/tcustomchecklistbox.onclickcheck.html + OnItemClick checklst/tcustomchecklistbox.onitemclick.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DefineProperties + MeasureItem stdctrls/tcustomlistbox.measureitem.html + TCheckListBox checklst/tchecklistbox.html + ItemIndex checklst/tchecklistbox.itemindex.html + Align controls/tcontrol.align.html + AllowGrayed checklst/tcustomchecklistbox.allowgrayed.html + Anchors controls/tcontrol.anchors.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + Color controls/tcontrol.color.html + Columns stdctrls/tcustomlistbox.columns.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + IntegralHeight stdctrls/tcustomlistbox.integralheight.html + Items stdctrls/tcustomlistbox.items.html + ItemHeight stdctrls/tcustomlistbox.itemheight.html + MultiSelect stdctrls/tcustomlistbox.multiselect.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnClickCheck checklst/tcustomchecklistbox.onclickcheck.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnItemClick checklst/tcustomchecklistbox.onitemclick.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnResize controls/tcontrol.onresize.html + OnShowHint controls/tcontrol.onshowhint.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomlistbox.sorted.html + Style stdctrls/tcustomlistbox.style.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TopIndex stdctrls/tcustomlistbox.topindex.html + Visible controls/tcontrol.visible.html + Register checklst/register.html + Controls controls/index.html + Anchoring Controls controls/anchoring controls.html + Control coordinates controls/control coordinates.html + AutoSize controls/autosize.html + CM_BASE controls/cm_base.html + CM_LCLOFFSET controls/cm_lcloffset.html + CM_ACTIVATE controls/cm_activate.html + CM_DEACTIVATE controls/cm_deactivate.html + CM_GOTFOCUS controls/cm_gotfocus.html + CM_LOSTFOCUS controls/cm_lostfocus.html + CM_CANCELMODE controls/cm_cancelmode.html + CM_DIALOGKEY controls/cm_dialogkey.html + CM_DIALOGCHAR controls/cm_dialogchar.html + CM_FOCUSCHANGED controls/cm_focuschanged.html + CM_PARENTFONTCHANGED controls/cm_parentfontchanged.html + CM_PARENTCOLORCHANGED controls/cm_parentcolorchanged.html + CM_HITTEST controls/cm_hittest.html + CM_VISIBLECHANGED controls/cm_visiblechanged.html + CM_ENABLEDCHANGED controls/cm_enabledchanged.html + CM_COLORCHANGED controls/cm_colorchanged.html + CM_FONTCHANGED controls/cm_fontchanged.html + CM_CURSORCHANGED controls/cm_cursorchanged.html + CM_CTL3DCHANGED controls/cm_ctl3dchanged.html + CM_PARENTCTL3DCHANGED controls/cm_parentctl3dchanged.html + CM_TEXTCHANGED controls/cm_textchanged.html + CM_MOUSEENTER controls/cm_mouseenter.html + CM_MOUSELEAVE controls/cm_mouseleave.html + CM_MENUCHANGED controls/cm_menuchanged.html + CM_APPKEYDOWN controls/cm_appkeydown.html + CM_APPSYSCOMMAND controls/cm_appsyscommand.html + CM_BUTTONPRESSED controls/cm_buttonpressed.html + CM_SHOWINGCHANGED controls/cm_showingchanged.html + CM_ENTER controls/cm_enter.html + CM_EXIT controls/cm_exit.html + CM_DESIGNHITTEST controls/cm_designhittest.html + CM_ICONCHANGED controls/cm_iconchanged.html + CM_WANTSPECIALKEY controls/cm_wantspecialkey.html + CM_INVOKEHELP controls/cm_invokehelp.html + CM_WINDOWHOOK controls/cm_windowhook.html + CM_RELEASE controls/cm_release.html + CM_SHOWHINTCHANGED controls/cm_showhintchanged.html + CM_PARENTSHOWHINTCHANGED controls/cm_parentshowhintchanged.html + CM_SYSCOLORCHANGE controls/cm_syscolorchange.html + CM_WININICHANGE controls/cm_wininichange.html + CM_FONTCHANGE controls/cm_fontchange.html + CM_TIMECHANGE controls/cm_timechange.html + CM_TABSTOPCHANGED controls/cm_tabstopchanged.html + CM_UIACTIVATE controls/cm_uiactivate.html + CM_UIDEACTIVATE controls/cm_uideactivate.html + CM_DOCWINDOWACTIVATE controls/cm_docwindowactivate.html + CM_CONTROLLISTCHANGE controls/cm_controllistchange.html + CM_GETDATALINK controls/cm_getdatalink.html + CM_CHILDKEY controls/cm_childkey.html + CM_DRAG controls/cm_drag.html + CM_HINTSHOW controls/cm_hintshow.html + CM_DIALOGHANDLE controls/cm_dialoghandle.html + CM_ISTOOLCONTROL controls/cm_istoolcontrol.html + CM_RECREATEWND controls/cm_recreatewnd.html + CM_INVALIDATE controls/cm_invalidate.html + CM_SYSFONTCHANGED controls/cm_sysfontchanged.html + CM_CONTROLCHANGE controls/cm_controlchange.html + CM_CHANGED controls/cm_changed.html + CM_DOCKCLIENT controls/cm_dockclient.html + CM_UNDOCKCLIENT controls/cm_undockclient.html + CM_FLOAT controls/cm_float.html + CM_BORDERCHANGED controls/cm_borderchanged.html + CM_BIDIMODECHANGED controls/cm_bidimodechanged.html + CM_PARENTBIDIMODECHANGED controls/cm_parentbidimodechanged.html + CM_ALLCHILDRENFLIPPED controls/cm_allchildrenflipped.html + CM_ACTIONUPDATE controls/cm_actionupdate.html + CM_ACTIONEXECUTE controls/cm_actionexecute.html + CM_HINTSHOWPAUSE controls/cm_hintshowpause.html + CM_DOCKNOTIFICATION controls/cm_docknotification.html + CM_MOUSEWHEEL controls/cm_mousewheel.html + CM_ISSHORTCUT controls/cm_isshortcut.html + CM_UPDATEACTIONS controls/cm_updateactions.html + CM_INVALIDATEDOCKHOST controls/cm_invalidatedockhost.html + CM_SETACTIVECONTROL controls/cm_setactivecontrol.html + CM_POPUPHWNDDESTROY controls/cm_popuphwnddestroy.html + CM_CREATEPOPUP controls/cm_createpopup.html + CM_DESTROYHANDLE controls/cm_destroyhandle.html + CM_MOUSEACTIVATE controls/cm_mouseactivate.html + CM_CONTROLLISTCHANGING controls/cm_controllistchanging.html + CM_BUFFEREDPRINTCLIENT controls/cm_bufferedprintclient.html + CM_UNTHEMECONTROL controls/cm_unthemecontrol.html + CM_DOUBLEBUFFEREDCHANGED controls/cm_doublebufferedchanged.html + CM_PARENTDOUBLEBUFFEREDCHANGED controls/cm_parentdoublebufferedchanged.html + CM_THEMECHANGED controls/cm_themechanged.html + CM_GESTURE controls/cm_gesture.html + CM_CUSTOMGESTURESCHANGED controls/cm_customgestureschanged.html + CM_GESTUREMANAGERCHANGED controls/cm_gesturemanagerchanged.html + CM_STANDARDGESTURESCHANGED controls/cm_standardgestureschanged.html + CM_INPUTLANGCHANGE controls/cm_inputlangchange.html + CM_TABLETOPTIONSCHANGED controls/cm_tabletoptionschanged.html + CM_PARENTTABLETOPTIONSCHANGED controls/cm_parenttabletoptionschanged.html + CM_APPSHOWBTNGLYPHCHANGED controls/cm_appshowbtnglyphchanged.html + CM_APPSHOWMENUGLYPHCHANGED controls/cm_appshowmenuglyphchanged.html + CN_BASE controls/cn_base.html + CN_CHARTOITEM controls/cn_chartoitem.html + CN_COMMAND controls/cn_command.html + CN_COMPAREITEM controls/cn_compareitem.html + CN_CTLCOLORBTN controls/cn_ctlcolorbtn.html + CN_CTLCOLORDLG controls/cn_ctlcolordlg.html + CN_CTLCOLOREDIT controls/cn_ctlcoloredit.html + CN_CTLCOLORLISTBOX controls/cn_ctlcolorlistbox.html + CN_CTLCOLORMSGBOX controls/cn_ctlcolormsgbox.html + CN_CTLCOLORSCROLLBAR controls/cn_ctlcolorscrollbar.html + CN_CTLCOLORSTATIC controls/cn_ctlcolorstatic.html + CN_DELETEITEM controls/cn_deleteitem.html + CN_DRAWITEM controls/cn_drawitem.html + CN_HSCROLL controls/cn_hscroll.html + CN_MEASUREITEM controls/cn_measureitem.html + CN_PARENTNOTIFY controls/cn_parentnotify.html + CN_VKEYTOITEM controls/cn_vkeytoitem.html + CN_VSCROLL controls/cn_vscroll.html + CN_KEYDOWN controls/cn_keydown.html + CN_KEYUP controls/cn_keyup.html + CN_CHAR controls/cn_char.html + CN_SYSKEYUP controls/cn_syskeyup.html + CN_SYSKEYDOWN controls/cn_syskeydown.html + CN_SYSCHAR controls/cn_syschar.html + CN_NOTIFY controls/cn_notify.html + mrNone controls/mrnone.html + mrOK controls/mrok.html + mrCancel controls/mrcancel.html + mrAbort controls/mrabort.html + mrRetry controls/mrretry.html + mrIgnore controls/mrignore.html + mrYes controls/mryes.html + mrNo controls/mrno.html + mrAll controls/mrall.html + mrNoToAll controls/mrnotoall.html + mrYesToAll controls/mryestoall.html + mrClose controls/mrclose.html + mrLast controls/mrlast.html + ModalResultStr controls/modalresultstr.html + fsSurface controls/fssurface.html + fsBorder controls/fsborder.html + bvNone controls/bvnone.html + bvLowered controls/bvlowered.html + bvRaised controls/bvraised.html + bvSpace controls/bvspace.html + ssModifier controls/ssmodifier.html + asrLeft controls/asrleft.html + asrRight controls/asrright.html + fsAllStayOnTop controls/fsallstayontop.html + fsAllNonSystemStayOnTop controls/fsallnonsystemstayontop.html + crHigh controls/crhigh.html + crDefault controls/crdefault.html + crNone controls/crnone.html + crArrow controls/crarrow.html + crCross controls/crcross.html + crIBeam controls/cribeam.html + crSize controls/crsize.html + crSizeNESW controls/crsizenesw.html + crSizeNS controls/crsizens.html + crSizeNWSE controls/crsizenwse.html + crSizeWE controls/crsizewe.html + crSizeNW controls/crsizenw.html + crSizeN controls/crsizen.html + crSizeNE controls/crsizene.html + crSizeW controls/crsizew.html + crSizeE controls/crsizee.html + crSizeSW controls/crsizesw.html + crSizeS controls/crsizes.html + crSizeSE controls/crsizese.html + crUpArrow controls/cruparrow.html + crHourGlass controls/crhourglass.html + crDrag controls/crdrag.html + crNoDrop controls/crnodrop.html + crHSplit controls/crhsplit.html + crVSplit controls/crvsplit.html + crMultiDrag controls/crmultidrag.html + crSQLWait controls/crsqlwait.html + crNo controls/crno.html + crAppStart controls/crappstart.html + crHelp controls/crhelp.html + crHandPoint controls/crhandpoint.html + crSizeAll controls/crsizeall.html + crLow controls/crlow.html + csMultiClicks controls/csmulticlicks.html + AnchorAlign controls/anchoralign.html + MainAlignAnchor controls/mainalignanchor.html + OppositeAnchor controls/oppositeanchor.html + ClockwiseAnchor controls/clockwiseanchor.html + DefaultSideForAnchorKind controls/defaultsideforanchorkind.html + AnchorReferenceSide controls/anchorreferenceside.html + TWinControlClass controls/twincontrolclass.html + TControlClass controls/tcontrolclass.html + TCMMouseWheel controls/tcmmousewheel.html + TCMHitTest controls/tcmhittest.html + TCMDesignHitTest controls/tcmdesignhittest.html + TCMControlChange controls/tcmcontrolchange.html + TCMControlListChange controls/tcmcontrollistchange.html + TCMDialogChar controls/tcmdialogchar.html + TCMDialogKey controls/tcmdialogkey.html + TCMEnter controls/tcmenter.html + TCMExit controls/tcmexit.html + TCMCancelMode controls/tcmcancelmode.html + TCMChildKey controls/tcmchildkey.html + TAlign controls/talign.html + TAlignSet controls/talignset.html + TAnchorKind controls/tanchorkind.html + TAnchors controls/tanchors.html + TAnchorSideReference controls/tanchorsidereference.html + TCaption controls/tcaption.html + TCursor controls/tcursor.html + TFormStyle controls/tformstyle.html + TFormBorderStyle controls/tformborderstyle.html + TBorderStyle controls/tborderstyle.html + TControlBorderStyle controls/tcontrolborderstyle.html + TControlRoleForForm controls/tcontrolroleforform.html + TControlRolesForForm controls/tcontrolrolesforform.html + TBevelCut controls/tbevelcut.html + TMouseButton controls/tmousebutton.html + TCaptureMouseButtons controls/tcapturemousebuttons.html + TWndMethod controls/twndmethod.html + TControlStyleType controls/tcontrolstyletype.html + TControlStyle controls/tcontrolstyle.html + TControlStateType controls/tcontrolstatetype.html + TControlState controls/tcontrolstate.html + PHintInfo controls/phintinfo.html + THintInfo controls/thintinfo.html + TKeyEvent controls/tkeyevent.html + TKeyPressEvent controls/tkeypressevent.html + TUTF8KeyPressEvent controls/tutf8keypressevent.html + TMouseEvent controls/tmouseevent.html + TMouseMoveEvent controls/tmousemoveevent.html + TMouseWheelEvent controls/tmousewheelevent.html + TMouseWheelUpDownEvent controls/tmousewheelupdownevent.html + TGetDockCaptionEvent controls/tgetdockcaptionevent.html + TDragKind controls/tdragkind.html + TDragMode controls/tdragmode.html + TDragState controls/tdragstate.html + TDragMessage controls/tdragmessage.html + TDragOverEvent controls/tdragoverevent.html + TDragDropEvent controls/tdragdropevent.html + TStartDragEvent controls/tstartdragevent.html + TEndDragEvent controls/tenddragevent.html + TDragObjectClass controls/tdragobjectclass.html + TDockOrientation controls/tdockorientation.html + TDockDropEvent controls/tdockdropevent.html + TDockOverEvent controls/tdockoverevent.html + TUnDockEvent controls/tundockevent.html + TStartDockEvent controls/tstartdockevent.html + TGetSiteInfoEvent controls/tgetsiteinfoevent.html + TDockManagerClass controls/tdockmanagerclass.html + TConstraintSize controls/tconstraintsize.html + TSizeConstraintsOption controls/tsizeconstraintsoption.html + TSizeConstraintsOptions controls/tsizeconstraintsoptions.html + TConstrainedResizeEvent controls/tconstrainedresizeevent.html + TSpacingSize controls/tspacingsize.html + TControlCellAlign controls/tcontrolcellalign.html + TControlCellAligns controls/tcontrolcellaligns.html + TControlBorderSpacingDefault controls/tcontrolborderspacingdefault.html + PControlBorderSpacingDefault controls/pcontrolborderspacingdefault.html + TAnchorSideChangeOperation controls/tanchorsidechangeoperation.html + TControlActionLinkClass controls/tcontrolactionlinkclass.html + TControlAutoSizePhase controls/tcontrolautosizephase.html + TControlAutoSizePhases controls/tcontrolautosizephases.html + TTabOrder controls/ttaborder.html + TControlShowHintEvent controls/tcontrolshowhintevent.html + TContextPopupEvent controls/tcontextpopupevent.html + TControlFlag controls/tcontrolflag.html + TControlFlags controls/tcontrolflags.html + TControlHandlerType controls/tcontrolhandlertype.html + TLayoutAdjustmentPolicy controls/tlayoutadjustmentpolicy.html + TLazAccessibilityRole controls/tlazaccessibilityrole.html + TBorderWidth controls/tborderwidth.html + TGetChildProc controls/tgetchildproc.html + TChildControlResizeStyle controls/tchildcontrolresizestyle.html + TControlChildrenLayout controls/tcontrolchildrenlayout.html + TWinControlActionLink controls/twincontrolactionlink.html + TWinControlActionLinkClass controls/twincontrolactionlinkclass.html + TWinControlFlag controls/twincontrolflag.html + TWinControlFlags controls/twincontrolflags.html + TControlAtPosFlag controls/tcontrolatposflag.html + TControlAtPosFlags controls/tcontrolatposflags.html + TAlignInfo controls/taligninfo.html + TAlignInsertBeforeEvent controls/taligninsertbeforeevent.html + TAlignPositionEvent controls/talignpositionevent.html + TDockZoneClass controls/tdockzoneclass.html + TForEachZoneProc controls/tforeachzoneproc.html + TDockTreeFlag controls/tdocktreeflag.html + TDockTreeFlags controls/tdocktreeflags.html + TControlCanvas controls/tcontrolcanvas.html + GetDefaultColor controls/tcontrolcanvas.getdefaultcolor.html + Create controls/tcontrolcanvas.create.html + Destroy controls/tcontrolcanvas.destroy.html + ControlIsPainting controls/tcontrolcanvas.controlispainting.html + Control controls/tcontrolcanvas.control.html + CreateHandle graphics/tcanvas.createhandle.html + FreeHandle graphics/tcanvas.freehandle.html + TDragImageList controls/tdragimagelist.html + WSRegisterClass controls/tdragimagelist.wsregisterclass.html + BeginDrag controls/tdragimagelist.begindrag.html + DragLock controls/tdragimagelist.draglock.html + DragMove controls/tdragimagelist.dragmove.html + DragUnlock controls/tdragimagelist.dragunlock.html + EndDrag controls/tdragimagelist.enddrag.html + HideDragImage controls/tdragimagelist.hidedragimage.html + SetDragImage controls/tdragimagelist.setdragimage.html + ShowDragImage controls/tdragimagelist.showdragimage.html + DragCursor controls/tdragimagelist.dragcursor.html + DragHotspot controls/tdragimagelist.draghotspot.html + Dragging controls/tdragimagelist.dragging.html + Initialize imglist/tcustomimagelist.initialize.html + GetHotSpot imglist/tcustomimagelist.gethotspot.html + TDragObject controls/tdragobject.html + EndDrag controls/tdragobject.enddrag.html + GetDragImages controls/tdragobject.getdragimages.html + GetDragCursor controls/tdragobject.getdragcursor.html + Create controls/tdragobject.create.html + AutoCreate controls/tdragobject.autocreate.html + HideDragImage controls/tdragobject.hidedragimage.html + ShowDragImage controls/tdragobject.showdragimage.html + AlwaysShowDragImages controls/tdragobject.alwaysshowdragimages.html + AutoCreated controls/tdragobject.autocreated.html + AutoFree controls/tdragobject.autofree.html + Control controls/tdragobject.control.html + DragPos controls/tdragobject.dragpos.html + DragTarget controls/tdragobject.dragtarget.html + DragTargetPos controls/tdragobject.dragtargetpos.html + Dropped controls/tdragobject.dropped.html + TDragObjectEx controls/tdragobjectex.html + Create controls/tdragobjectex.create.html + TDragControlObject controls/tdragcontrolobject.html + GetDragCursor controls/tdragcontrolobject.getdragcursor.html + GetDragImages controls/tdragcontrolobject.getdragimages.html + TDragControlObjectEx controls/tdragcontrolobjectex.html + Create controls/tdragcontrolobjectex.create.html + TDragDockObject controls/tdragdockobject.html + AdjustDockRect controls/tdragdockobject.adjustdockrect.html + EndDrag controls/tdragdockobject.enddrag.html + InitDock controls/tdragdockobject.initdock.html + ShowDockImage controls/tdragdockobject.showdockimage.html + HideDockImage controls/tdragdockobject.hidedockimage.html + MoveDockImage controls/tdragdockobject.movedockimage.html + DockOffset controls/tdragdockobject.dockoffset.html + DockRect controls/tdragdockobject.dockrect.html + DropAlign controls/tdragdockobject.dropalign.html + DropOnControl controls/tdragdockobject.droponcontrol.html + Floating controls/tdragdockobject.floating.html + IncreaseDockArea controls/tdragdockobject.increasedockarea.html + EraseDockRect controls/tdragdockobject.erasedockrect.html + GetDragCursor controls/tdragobject.getdragcursor.html + TDragDockObjectEx controls/tdragdockobjectex.html + Create controls/tdragdockobjectex.create.html + TDragManager controls/tdragmanager.html + KeyUp controls/tdragmanager.keyup.html + KeyDown controls/tdragmanager.keydown.html + CaptureChanged controls/tdragmanager.capturechanged.html + MouseMove controls/tdragmanager.mousemove.html + MouseUp controls/tdragmanager.mouseup.html + MouseDown controls/tdragmanager.mousedown.html + Create controls/tdragmanager.create.html + IsDragging controls/tdragmanager.isdragging.html + Dragging controls/tdragmanager.dragging.html + RegisterDockSite controls/tdragmanager.registerdocksite.html + DragStart controls/tdragmanager.dragstart.html + DragMove controls/tdragmanager.dragmove.html + DragStop controls/tdragmanager.dragstop.html + DragImmediate controls/tdragmanager.dragimmediate.html + DragThreshold controls/tdragmanager.dragthreshold.html + TDockManager controls/tdockmanager.html + Create controls/tdockmanager.create.html + BeginUpdate controls/tdockmanager.beginupdate.html + EndUpdate controls/tdockmanager.endupdate.html + GetControlBounds controls/tdockmanager.getcontrolbounds.html + GetDockEdge controls/tdockmanager.getdockedge.html + InsertControl controls/tdockmanager.insertcontrol.html + LoadFromStream controls/tdockmanager.loadfromstream.html + PaintSite controls/tdockmanager.paintsite.html + MessageHandler controls/tdockmanager.messagehandler.html + PositionDockRect controls/tdockmanager.positiondockrect.html + RemoveControl controls/tdockmanager.removecontrol.html + ResetBounds controls/tdockmanager.resetbounds.html + SaveToStream controls/tdockmanager.savetostream.html + SetReplacingControl controls/tdockmanager.setreplacingcontrol.html + AutoFreeByControl controls/tdockmanager.autofreebycontrol.html + TSizeConstraints controls/tsizeconstraints.html + Change controls/tsizeconstraints.change.html + Create controls/tsizeconstraints.create.html + UpdateInterfaceConstraints controls/tsizeconstraints.updateinterfaceconstraints.html + SetInterfaceConstraints controls/tsizeconstraints.setinterfaceconstraints.html + EffectiveMinWidth controls/tsizeconstraints.effectiveminwidth.html + EffectiveMinHeight controls/tsizeconstraints.effectiveminheight.html + EffectiveMaxWidth controls/tsizeconstraints.effectivemaxwidth.html + EffectiveMaxHeight controls/tsizeconstraints.effectivemaxheight.html + MinMaxWidth controls/tsizeconstraints.minmaxwidth.html + MinMaxHeight controls/tsizeconstraints.minmaxheight.html + MaxInterfaceHeight controls/tsizeconstraints.maxinterfaceheight.html + MaxInterfaceWidth controls/tsizeconstraints.maxinterfacewidth.html + MinInterfaceHeight controls/tsizeconstraints.mininterfaceheight.html + MinInterfaceWidth controls/tsizeconstraints.mininterfacewidth.html + Control controls/tsizeconstraints.control.html + Options controls/tsizeconstraints.options.html + OnChange controls/tsizeconstraints.onchange.html + MaxHeight controls/tsizeconstraints.maxheight.html + MaxWidth controls/tsizeconstraints.maxwidth.html + MinHeight controls/tsizeconstraints.minheight.html + MinWidth controls/tsizeconstraints.minwidth.html + AssignTo + SetMaxHeight + SetMaxWidth + SetMinHeight + SetMinWidth + TControlBorderSpacing controls/tcontrolborderspacing.html + Change controls/tcontrolborderspacing.change.html + Create controls/tcontrolborderspacing.create.html + IsEqual controls/tcontrolborderspacing.isequal.html + GetSpaceAround controls/tcontrolborderspacing.getspacearound.html + GetSideSpace controls/tcontrolborderspacing.getsidespace.html + Control controls/tcontrolborderspacing.control.html + Space controls/tcontrolborderspacing.space.html + ControlLeft controls/tcontrolborderspacing.controlleft.html + ControlTop controls/tcontrolborderspacing.controltop.html + ControlWidth controls/tcontrolborderspacing.controlwidth.html + ControlHeight controls/tcontrolborderspacing.controlheight.html + OnChange controls/tcontrolborderspacing.onchange.html + Left controls/tcontrolborderspacing.left.html + Top controls/tcontrolborderspacing.top.html + Right controls/tcontrolborderspacing.right.html + Bottom controls/tcontrolborderspacing.bottom.html + Around controls/tcontrolborderspacing.around.html + InnerBorder controls/tcontrolborderspacing.innerborder.html + CellAlignHorizontal controls/tcontrolborderspacing.cellalignhorizontal.html + CellAlignVertical controls/tcontrolborderspacing.cellalignvertical.html + Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + AssignTo + GetSpace + TAnchorSide controls/tanchorside.html + GetOwner controls/tanchorside.getowner.html + Create controls/tanchorside.create.html + Destroy controls/tanchorside.destroy.html + GetSidePosition controls/tanchorside.getsideposition.html + CheckSidePosition controls/tanchorside.checksideposition.html + IsAnchoredToParent controls/tanchorside.isanchoredtoparent.html + FixCenterAnchoring controls/tanchorside.fixcenteranchoring.html + Owner controls/tanchorside.owner.html + Kind controls/tanchorside.kind.html + Control controls/tanchorside.control.html + Side controls/tanchorside.side.html + Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + TControlActionLink controls/tcontrolactionlink.html + FClient controls/tcontrolactionlink.fclient.html + SetCaption controls/tcontrolactionlink.setcaption.html + SetEnabled controls/tcontrolactionlink.setenabled.html + SetHint controls/tcontrolactionlink.sethint.html + SetHelpContext controls/tcontrolactionlink.sethelpcontext.html + SetHelpKeyword controls/tcontrolactionlink.sethelpkeyword.html + SetHelpType controls/tcontrolactionlink.sethelptype.html + SetVisible controls/tcontrolactionlink.setvisible.html + SetOnExecute controls/tcontrolactionlink.setonexecute.html + IsOnExecuteLinked controls/tcontrolactionlink.isonexecutelinked.html + DoShowHint controls/tcontrolactionlink.doshowhint.html + AssignClient + IsCaptionLinked actnlist/tactionlink.iscaptionlinked.html + IsEnabledLinked actnlist/tactionlink.isenabledlinked.html + IsHelpLinked actnlist/tactionlink.ishelplinked.html + IsHintLinked actnlist/tactionlink.ishintlinked.html + IsVisibleLinked actnlist/tactionlink.isvisiblelinked.html + TLazAccessibleObjectEnumerator controls/tlazaccessibleobjectenumerator.html + Current controls/tlazaccessibleobjectenumerator.current.html + TLazAccessibleObject controls/tlazaccessibleobject.html + FChildrenSortedForDataObject controls/tlazaccessibleobject.fchildrensortedfordataobject.html + FAccessibleDescription controls/tlazaccessibleobject.faccessibledescription.html + FAccessibleValue controls/tlazaccessibleobject.faccessiblevalue.html + FAccessibleRole controls/tlazaccessibleobject.faccessiblerole.html + WSRegisterClass controls/tlazaccessibleobject.wsregisterclass.html + GetAccessibleValue controls/tlazaccessibleobject.getaccessiblevalue.html + OwnerControl controls/tlazaccessibleobject.ownercontrol.html + Parent controls/tlazaccessibleobject.parent.html + DataObject controls/tlazaccessibleobject.dataobject.html + SecondaryHandle controls/tlazaccessibleobject.secondaryhandle.html + HandleAllocated controls/tlazaccessibleobject.handleallocated.html + InitializeHandle controls/tlazaccessibleobject.initializehandle.html + SetAccessibleDescription controls/tlazaccessibleobject.setaccessibledescription.html + SetAccessibleValue controls/tlazaccessibleobject.setaccessiblevalue.html + SetAccessibleRole controls/tlazaccessibleobject.setaccessiblerole.html + FindOwnerWinControl controls/tlazaccessibleobject.findownerwincontrol.html + AddChildAccessibleObject controls/tlazaccessibleobject.addchildaccessibleobject.html + InsertChildAccessibleObject controls/tlazaccessibleobject.insertchildaccessibleobject.html + ClearChildAccessibleObjects controls/tlazaccessibleobject.clearchildaccessibleobjects.html + RemoveChildAccessibleObject controls/tlazaccessibleobject.removechildaccessibleobject.html + GetChildAccessibleObjectWithDataObject controls/tlazaccessibleobject.getchildaccessibleobjectwithdataobject.html + GetChildAccessibleObjectsCount controls/tlazaccessibleobject.getchildaccessibleobjectscount.html + GetChildAccessibleObject controls/tlazaccessibleobject.getchildaccessibleobject.html + GetFirstChildAccessibleObject controls/tlazaccessibleobject.getfirstchildaccessibleobject.html + GetNextChildAccessibleObject controls/tlazaccessibleobject.getnextchildaccessibleobject.html + GetSelectedChildAccessibleObject controls/tlazaccessibleobject.getselectedchildaccessibleobject.html + GetChildAccessibleObjectAtPos controls/tlazaccessibleobject.getchildaccessibleobjectatpos.html + AccessibleDescription controls/tlazaccessibleobject.accessibledescription.html + AccessibleValue controls/tlazaccessibleobject.accessiblevalue.html + AccessibleRole controls/tlazaccessibleobject.accessiblerole.html + Position controls/tlazaccessibleobject.position.html + Size controls/tlazaccessibleobject.size.html + Handle controls/tlazaccessibleobject.handle.html + GetEnumerator controls/tlazaccessibleobject.getenumerator.html + Create ms-its:rtl.chm::/system/tobject.create.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + TControl controls/tcontrol.html + FAccessibleObject controls/tcontrol.faccessibleobject.html + DoOnParentHandleDestruction controls/tcontrol.doonparenthandledestruction.html + DoAutoSize controls/tcontrol.doautosize.html + DoAllAutoSize controls/tcontrol.doallautosize.html + BeginAutoSizing controls/tcontrol.beginautosizing.html + EndAutoSizing controls/tcontrol.endautosizing.html + AnchorSideChanged controls/tcontrol.anchorsidechanged.html + ForeignAnchorSideChanged controls/tcontrol.foreignanchorsidechanged.html + BoundsChanged controls/tcontrol.boundschanged.html + CreateControlBorderSpacing controls/tcontrol.createcontrolborderspacing.html + DoConstraintsChange controls/tcontrol.doconstraintschange.html + DoBorderSpacingChange controls/tcontrol.doborderspacingchange.html + IsBorderSpacingInnerBorderStored controls/tcontrol.isborderspacinginnerborderstored.html + SendMoveSizeMessages controls/tcontrol.sendmovesizemessages.html + ConstrainedResize controls/tcontrol.constrainedresize.html + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + DoOnResize controls/tcontrol.doonresize.html + DoOnChangeBounds controls/tcontrol.doonchangebounds.html + CheckOnChangeBounds controls/tcontrol.checkonchangebounds.html + Resize controls/tcontrol.resize.html + RequestAlign controls/tcontrol.requestalign.html + UpdateAnchorRules controls/tcontrol.updateanchorrules.html + ChangeBounds controls/tcontrol.changebounds.html + DoSetBounds controls/tcontrol.dosetbounds.html + ScaleConstraints controls/tcontrol.scaleconstraints.html + ChangeScale controls/tcontrol.changescale.html + CanAutoSize controls/tcontrol.canautosize.html + UpdateAlignIndex controls/tcontrol.updatealignindex.html + IsAParentAligning controls/tcontrol.isaparentaligning.html + GetLogicalClientRect controls/tcontrol.getlogicalclientrect.html + GetScrolledClientRect controls/tcontrol.getscrolledclientrect.html + GetClientScrollOffset controls/tcontrol.getclientscrolloffset.html + WidthIsAnchored controls/tcontrol.widthisanchored.html + HeightIsAnchored controls/tcontrol.heightisanchored.html + AutoSizing controls/tcontrol.autosizing.html + AutoSizingAll controls/tcontrol.autosizingall.html + AutoSizingLockCount controls/tcontrol.autosizinglockcount.html + WMCancelMode controls/tcontrol.wmcancelmode.html + WMContextMenu controls/tcontrol.wmcontextmenu.html + WMLButtonDown controls/tcontrol.wmlbuttondown.html + WMRButtonDown controls/tcontrol.wmrbuttondown.html + WMMButtonDown controls/tcontrol.wmmbuttondown.html + WMXButtonDown controls/tcontrol.wmxbuttondown.html + WMLButtonDBLCLK controls/tcontrol.wmlbuttondblclk.html + WMRButtonDBLCLK controls/tcontrol.wmrbuttondblclk.html + WMMButtonDBLCLK controls/tcontrol.wmmbuttondblclk.html + WMXButtonDBLCLK controls/tcontrol.wmxbuttondblclk.html + WMLButtonTripleCLK controls/tcontrol.wmlbuttontripleclk.html + WMRButtonTripleCLK controls/tcontrol.wmrbuttontripleclk.html + WMMButtonTripleCLK controls/tcontrol.wmmbuttontripleclk.html + WMXButtonTripleCLK controls/tcontrol.wmxbuttontripleclk.html + WMLButtonQuadCLK controls/tcontrol.wmlbuttonquadclk.html + WMRButtonQuadCLK controls/tcontrol.wmrbuttonquadclk.html + WMMButtonQuadCLK controls/tcontrol.wmmbuttonquadclk.html + WMXButtonQuadCLK controls/tcontrol.wmxbuttonquadclk.html + WMMouseMove controls/tcontrol.wmmousemove.html + WMLButtonUp controls/tcontrol.wmlbuttonup.html + WMRButtonUp controls/tcontrol.wmrbuttonup.html + WMMButtonUp controls/tcontrol.wmmbuttonup.html + WMXButtonUp controls/tcontrol.wmxbuttonup.html + WMMouseWheel controls/tcontrol.wmmousewheel.html + WMMove controls/tcontrol.wmmove.html + WMSize controls/tcontrol.wmsize.html + WMWindowPosChanged controls/tcontrol.wmwindowposchanged.html + LMCaptureChanged controls/tcontrol.lmcapturechanged.html + CMBiDiModeChanged controls/tcontrol.cmbidimodechanged.html + CMSysFontChanged controls/tcontrol.cmsysfontchanged.html + CMEnabledChanged controls/tcontrol.cmenabledchanged.html + CMHitTest controls/tcontrol.cmhittest.html + CMMouseEnter controls/tcontrol.cmmouseenter.html + CMMouseLeave controls/tcontrol.cmmouseleave.html + CMHintShow controls/tcontrol.cmhintshow.html + CMParentBiDiModeChanged controls/tcontrol.cmparentbidimodechanged.html + CMParentColorChanged controls/tcontrol.cmparentcolorchanged.html + CMParentFontChanged controls/tcontrol.cmparentfontchanged.html + CMParentShowHintChanged controls/tcontrol.cmparentshowhintchanged.html + CMVisibleChanged controls/tcontrol.cmvisiblechanged.html + CMTextChanged controls/tcontrol.cmtextchanged.html + CMCursorChanged controls/tcontrol.cmcursorchanged.html + CalculateDockSizes controls/tcontrol.calculatedocksizes.html + CreateFloatingDockSite controls/tcontrol.createfloatingdocksite.html + GetDockEdge controls/tcontrol.getdockedge.html + GetDragImages controls/tcontrol.getdragimages.html + GetFloating controls/tcontrol.getfloating.html + GetFloatingDockSiteClass controls/tcontrol.getfloatingdocksiteclass.html + BeforeDragStart controls/tcontrol.beforedragstart.html + BeginAutoDrag controls/tcontrol.beginautodrag.html + DoFloatMsg controls/tcontrol.dofloatmsg.html + DockTrackNoTarget controls/tcontrol.docktracknotarget.html + DoDock controls/tcontrol.dodock.html + DoDragMsg controls/tcontrol.dodragmsg.html + DoEndDock controls/tcontrol.doenddock.html + DoEndDrag controls/tcontrol.doenddrag.html + DoStartDock controls/tcontrol.dostartdock.html + DoStartDrag controls/tcontrol.dostartdrag.html + DragCanceled controls/tcontrol.dragcanceled.html + DragOver controls/tcontrol.dragover.html + PositionDockRect controls/tcontrol.positiondockrect.html + GetDefaultDockCaption controls/tcontrol.getdefaultdockcaption.html + Click controls/tcontrol.click.html + DblClick controls/tcontrol.dblclick.html + TripleClick controls/tcontrol.tripleclick.html + QuadClick controls/tcontrol.quadclick.html + MouseDown controls/tcontrol.mousedown.html + MouseMove controls/tcontrol.mousemove.html + MouseUp controls/tcontrol.mouseup.html + MouseEnter controls/tcontrol.mouseenter.html + MouseLeave controls/tcontrol.mouseleave.html + DialogChar controls/tcontrol.dialogchar.html + UpdateMouseCursor controls/tcontrol.updatemousecursor.html + Changed controls/tcontrol.changed.html + GetPalette controls/tcontrol.getpalette.html + ChildClassAllowed controls/tcontrol.childclassallowed.html + LoadedAll controls/tcontrol.loadedall.html + DefineProperties controls/tcontrol.defineproperties.html + AssignTo controls/tcontrol.assignto.html + FormEndUpdated controls/tcontrol.formendupdated.html + InvalidateControl controls/tcontrol.invalidatecontrol.html + FontChanged controls/tcontrol.fontchanged.html + ParentFontChanged controls/tcontrol.parentfontchanged.html + RealGetText controls/tcontrol.realgettext.html + RealSetText controls/tcontrol.realsettext.html + TextChanged controls/tcontrol.textchanged.html + GetCachedText controls/tcontrol.getcachedtext.html + SetParentComponent controls/tcontrol.setparentcomponent.html + WndProc controls/tcontrol.wndproc.html + ParentFormHandleInitialized controls/tcontrol.parentformhandleinitialized.html + CaptureChanged controls/tcontrol.capturechanged.html + Notification controls/tcontrol.notification.html + CanTab controls/tcontrol.cantab.html + GetDeviceContext controls/tcontrol.getdevicecontext.html + DoOnShowHint controls/tcontrol.doonshowhint.html + DoMouseWheel controls/tcontrol.domousewheel.html + DoMouseWheelDown controls/tcontrol.domousewheeldown.html + DoMouseWheelUp controls/tcontrol.domousewheelup.html + VisibleChanging controls/tcontrol.visiblechanging.html + VisibleChanged controls/tcontrol.visiblechanged.html + EnabledChanging controls/tcontrol.enabledchanging.html + EnabledChanged controls/tcontrol.enabledchanged.html + AddHandler controls/tcontrol.addhandler.html + RemoveHandler controls/tcontrol.removehandler.html + DoCallNotifyHandler controls/tcontrol.docallnotifyhandler.html + DoCallKeyEventHandler controls/tcontrol.docallkeyeventhandler.html + DoContextPopup controls/tcontrol.docontextpopup.html + SetZOrder controls/tcontrol.setzorder.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + GetActionLinkClass controls/tcontrol.getactionlinkclass.html + ActionChange controls/tcontrol.actionchange.html + ActionLink controls/tcontrol.actionlink.html + DesktopFont controls/tcontrol.desktopfont.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + MouseCapture controls/tcontrol.mousecapture.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + SessionProperties controls/tcontrol.sessionproperties.html + Text controls/tcontrol.text.html + OnConstrainedResize controls/tcontrol.onconstrainedresize.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnTripleClick controls/tcontrol.ontripleclick.html + OnQuadClick controls/tcontrol.onquadclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnEditingDone controls/tcontrol.oneditingdone.html + FCompStyle controls/tcontrol.fcompstyle.html + DragDrop controls/tcontrol.dragdrop.html + Dock controls/tcontrol.dock.html + ManualDock controls/tcontrol.manualdock.html + ManualFloat controls/tcontrol.manualfloat.html + ReplaceDockedControl controls/tcontrol.replacedockedcontrol.html + Dragging controls/tcontrol.dragging.html + GetAccessibleObject controls/tcontrol.getaccessibleobject.html + CreateAccessibleObject controls/tcontrol.createaccessibleobject.html + GetSelectedChildAccessibleObject controls/tcontrol.getselectedchildaccessibleobject.html + GetChildAccessibleObjectAtPos controls/tcontrol.getchildaccessibleobjectatpos.html + AdjustSize controls/tcontrol.adjustsize.html + AutoSizePhases controls/tcontrol.autosizephases.html + AutoSizeDelayed controls/tcontrol.autosizedelayed.html + AutoSizeDelayedReport controls/tcontrol.autosizedelayedreport.html + AutoSizeDelayedHandle controls/tcontrol.autosizedelayedhandle.html + AnchorToNeighbour controls/tcontrol.anchortoneighbour.html + AnchorParallel controls/tcontrol.anchorparallel.html + AnchorHorizontalCenterTo controls/tcontrol.anchorhorizontalcenterto.html + AnchorVerticalCenterTo controls/tcontrol.anchorverticalcenterto.html + AnchorToCompanion controls/tcontrol.anchortocompanion.html + AnchorSame controls/tcontrol.anchorsame.html + AnchorAsAlign controls/tcontrol.anchorasalign.html + AnchorClient controls/tcontrol.anchorclient.html + AnchoredControlCount controls/tcontrol.anchoredcontrolcount.html + AnchoredControls controls/tcontrol.anchoredcontrols.html + SetBounds controls/tcontrol.setbounds.html + SetInitialBounds controls/tcontrol.setinitialbounds.html + SetBoundsKeepBase controls/tcontrol.setboundskeepbase.html + GetPreferredSize controls/tcontrol.getpreferredsize.html + GetDefaultWidth controls/tcontrol.getdefaultwidth.html + GetDefaultHeight controls/tcontrol.getdefaultheight.html + GetDefaultColor controls/tcontrol.getdefaultcolor.html + GetColorResolvingParent controls/tcontrol.getcolorresolvingparent.html + GetRGBColorResolvingParent controls/tcontrol.getrgbcolorresolvingparent.html + GetSidePosition controls/tcontrol.getsideposition.html + CNPreferredSizeChanged controls/tcontrol.cnpreferredsizechanged.html + InvalidatePreferredSize controls/tcontrol.invalidatepreferredsize.html + GetAnchorsDependingOnParent controls/tcontrol.getanchorsdependingonparent.html + DisableAutoSizing controls/tcontrol.disableautosizing.html + EnableAutoSizing controls/tcontrol.enableautosizing.html + UpdateBaseBounds controls/tcontrol.updatebasebounds.html + BaseBounds controls/tcontrol.basebounds.html + ReadBounds controls/tcontrol.readbounds.html + BaseParentClientSize controls/tcontrol.baseparentclientsize.html + WriteLayoutDebugReport controls/tcontrol.writelayoutdebugreport.html + AutoAdjustLayout controls/tcontrol.autoadjustlayout.html + ShouldAutoAdjustLeftAndTop controls/tcontrol.shouldautoadjustleftandtop.html + ShouldAutoAdjustWidthAndHeight controls/tcontrol.shouldautoadjustwidthandheight.html + Create controls/tcontrol.create.html + Destroy controls/tcontrol.destroy.html + BeforeDestruction controls/tcontrol.beforedestruction.html + EditingDone controls/tcontrol.editingdone.html + ExecuteDefaultAction controls/tcontrol.executedefaultaction.html + ExecuteCancelAction controls/tcontrol.executecancelaction.html + BeginDrag controls/tcontrol.begindrag.html + EndDrag controls/tcontrol.enddrag.html + BringToFront controls/tcontrol.bringtofront.html + HasParent controls/tcontrol.hasparent.html + GetParentComponent controls/tcontrol.getparentcomponent.html + IsParentOf controls/tcontrol.isparentof.html + GetTopParent controls/tcontrol.gettopparent.html + IsVisible controls/tcontrol.isvisible.html + IsControlVisible controls/tcontrol.iscontrolvisible.html + IsEnabled controls/tcontrol.isenabled.html + IsParentColor controls/tcontrol.isparentcolor.html + IsParentFont controls/tcontrol.isparentfont.html + FormIsUpdating controls/tcontrol.formisupdating.html + IsProcessingPaintMsg controls/tcontrol.isprocessingpaintmsg.html + Hide controls/tcontrol.hide.html + Repaint controls/tcontrol.repaint.html + Invalidate controls/tcontrol.invalidate.html + CheckChildClassAllowed controls/tcontrol.checkchildclassallowed.html + CheckNewParent controls/tcontrol.checknewparent.html + SendToBack controls/tcontrol.sendtoback.html + SetTempCursor controls/tcontrol.settempcursor.html + UpdateRolesForForm controls/tcontrol.updaterolesforform.html + ActiveDefaultControlChanged controls/tcontrol.activedefaultcontrolchanged.html + GetTextBuf controls/tcontrol.gettextbuf.html + GetTextLen controls/tcontrol.gettextlen.html + SetTextBuf controls/tcontrol.settextbuf.html + Perform controls/tcontrol.perform.html + ScreenToClient controls/tcontrol.screentoclient.html + ClientToScreen controls/tcontrol.clienttoscreen.html + ScreenToControl controls/tcontrol.screentocontrol.html + ControlToScreen controls/tcontrol.controltoscreen.html + ClientToParent controls/tcontrol.clienttoparent.html + ParentToClient controls/tcontrol.parenttoclient.html + GetChildrenRect controls/tcontrol.getchildrenrect.html + Show controls/tcontrol.show.html + Update controls/tcontrol.update.html + HandleObjectShouldBeVisible controls/tcontrol.handleobjectshouldbevisible.html + ParentDestroyingHandle controls/tcontrol.parentdestroyinghandle.html + ParentHandlesAllocated controls/tcontrol.parenthandlesallocated.html + InitiateAction controls/tcontrol.initiateaction.html + ShowHelp controls/tcontrol.showhelp.html + HasHelp controls/tcontrol.hashelp.html + AddHandlerOnResize controls/tcontrol.addhandleronresize.html + RemoveHandlerOnResize controls/tcontrol.removehandleronresize.html + AddHandlerOnChangeBounds controls/tcontrol.addhandleronchangebounds.html + RemoveHandlerOnChangeBounds controls/tcontrol.removehandleronchangebounds.html + AddHandlerOnVisibleChanging controls/tcontrol.addhandleronvisiblechanging.html + RemoveHandlerOnVisibleChanging controls/tcontrol.removehandleronvisiblechanging.html + AddHandlerOnVisibleChanged controls/tcontrol.addhandleronvisiblechanged.html + RemoveHandlerOnVisibleChanged controls/tcontrol.removehandleronvisiblechanged.html + AddHandlerOnEnabledChanged controls/tcontrol.addhandleronenabledchanged.html + RemoveHandlerOnEnableChanging controls/tcontrol.removehandleronenablechanging.html + AddHandlerOnKeyDown controls/tcontrol.addhandleronkeydown.html + RemoveHandlerOnKeyDown controls/tcontrol.removehandleronkeydown.html + AddHandlerOnBeforeDestruction controls/tcontrol.addhandleronbeforedestruction.html + RemoveHandlerOnBeforeDestruction controls/tcontrol.removehandleronbeforedestruction.html + AccessibleDescription controls/tcontrol.accessibledescription.html + AccessibleValue controls/tcontrol.accessiblevalue.html + AccessibleRole controls/tcontrol.accessiblerole.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AnchorSide controls/tcontrol.anchorside.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + BoundsRect controls/tcontrol.boundsrect.html + BoundsRectForNewParent controls/tcontrol.boundsrectfornewparent.html + Caption controls/tcontrol.caption.html + CaptureMouseButtons controls/tcontrol.capturemousebuttons.html + ClientHeight controls/tcontrol.clientheight.html + ClientOrigin controls/tcontrol.clientorigin.html + ClientRect controls/tcontrol.clientrect.html + ClientWidth controls/tcontrol.clientwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + ControlOrigin controls/tcontrol.controlorigin.html + ControlState controls/tcontrol.controlstate.html + ControlStyle controls/tcontrol.controlstyle.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + IsControl controls/tcontrol.iscontrol.html + MouseEntered controls/tcontrol.mouseentered.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnResize controls/tcontrol.onresize.html + OnShowHint controls/tcontrol.onshowhint.html + Parent controls/tcontrol.parent.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + Visible controls/tcontrol.visible.html + WindowProc controls/tcontrol.windowproc.html + DockOrientation controls/tcontrol.dockorientation.html + Floating controls/tcontrol.floating.html + FloatingDockSiteClass controls/tcontrol.floatingdocksiteclass.html + HostDockSite controls/tcontrol.hostdocksite.html + LRDockWidth controls/tcontrol.lrdockwidth.html + TBDockHeight controls/tcontrol.tbdockheight.html + UndockHeight controls/tcontrol.undockheight.html + UndockWidth controls/tcontrol.undockwidth.html + UseRightToLeftAlignment controls/tcontrol.userighttoleftalignment.html + UseRightToLeftReading controls/tcontrol.userighttoleftreading.html + UseRightToLeftScrollBar controls/tcontrol.userighttoleftscrollbar.html + IsRightToLeft controls/tcontrol.isrighttoleft.html + BiDiMode controls/tcontrol.bidimode.html + ParentBiDiMode controls/tcontrol.parentbidimode.html + Cursor controls/tcontrol.cursor.html + Left controls/tcontrol.left.html + Height controls/tcontrol.height.html + Hint controls/tcontrol.hint.html + Top controls/tcontrol.top.html + Width controls/tcontrol.width.html + HelpType controls/tcontrol.helptype.html + HelpKeyword controls/tcontrol.helpkeyword.html + HelpContext controls/tcontrol.helpcontext.html + FControlState + FCursor + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetCursor + SetCursor + SetVisible + SetAlign + SetAnchors + SetAutoSize + IsCaptionStored + SetBiDiMode + SetParentBiDiMode + GetClientOrigin + GetClientRect + GetControlOrigin + IsClientHeightStored + IsClientWidthStored + SetDragMode + ReadState + Loaded + GetAction + SetAction + SetColor + SetEnabled + SetHint + SetName + SetParent + GetMouseCapture + GetEnabled + GetPopupMenu + ColorIsStored + Refresh + RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html + AnchorSideLeft + AnchorSideTop + AnchorSideRight + AnchorSideBottom + TControlChildSizing controls/tcontrolchildsizing.html + Change controls/tcontrolchildsizing.change.html + Create controls/tcontrolchildsizing.create.html + IsEqual controls/tcontrolchildsizing.isequal.html + SetGridSpacing controls/tcontrolchildsizing.setgridspacing.html + Control controls/tcontrolchildsizing.control.html + OnChange controls/tcontrolchildsizing.onchange.html + LeftRightSpacing controls/tcontrolchildsizing.leftrightspacing.html + TopBottomSpacing controls/tcontrolchildsizing.topbottomspacing.html + HorizontalSpacing controls/tcontrolchildsizing.horizontalspacing.html + VerticalSpacing controls/tcontrolchildsizing.verticalspacing.html + EnlargeHorizontal controls/tcontrolchildsizing.enlargehorizontal.html + EnlargeVertical controls/tcontrolchildsizing.enlargevertical.html + ShrinkHorizontal controls/tcontrolchildsizing.shrinkhorizontal.html + ShrinkVertical controls/tcontrolchildsizing.shrinkvertical.html + Layout controls/tcontrolchildsizing.layout.html + ControlsPerLine controls/tcontrolchildsizing.controlsperline.html + Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + AssignTo + TWinControlEnumerator controls/twincontrolenumerator.html + FIndex controls/twincontrolenumerator.findex.html + FLowToHigh controls/twincontrolenumerator.flowtohigh.html + FParent controls/twincontrolenumerator.fparent.html + GetCurrent controls/twincontrolenumerator.getcurrent.html + Create controls/twincontrolenumerator.create.html + GetEnumerator controls/twincontrolenumerator.getenumerator.html + MoveNext controls/twincontrolenumerator.movenext.html + Current controls/twincontrolenumerator.current.html + TWinControl controls/twincontrol.html + FWinControlFlags controls/twincontrol.fwincontrolflags.html + AdjustClientRect controls/twincontrol.adjustclientrect.html + GetAdjustedLogicalClientRect controls/twincontrol.getadjustedlogicalclientrect.html + CreateControlAlignList controls/twincontrol.createcontrolalignlist.html + AlignControls controls/twincontrol.aligncontrols.html + CustomAlignInsertBefore controls/twincontrol.customaligninsertbefore.html + CustomAlignPosition controls/twincontrol.customalignposition.html + DoAlignChildControls controls/twincontrol.doalignchildcontrols.html + DoChildSizingChange controls/twincontrol.dochildsizingchange.html + InvalidatePreferredChildSizes controls/twincontrol.invalidatepreferredchildsizes.html + DoSendShowHideToInterface controls/twincontrol.dosendshowhidetointerface.html + ControlsAligned controls/twincontrol.controlsaligned.html + DoSendBoundsToInterface controls/twincontrol.dosendboundstointerface.html + RealizeBounds controls/twincontrol.realizebounds.html + RealizeBoundsRecursive controls/twincontrol.realizeboundsrecursive.html + CreateSubClass controls/twincontrol.createsubclass.html + DoSetBounds controls/twincontrol.dosetbounds.html + DoAutoSize controls/twincontrol.doautosize.html + AllAutoSized controls/twincontrol.allautosized.html + CalculatePreferredSize controls/twincontrol.calculatepreferredsize.html + GetPreferredSizeClientFrame controls/twincontrol.getpreferredsizeclientframe.html + GetChildren controls/twincontrol.getchildren.html + ChildClassAllowed controls/twincontrol.childclassallowed.html + PaintControls controls/twincontrol.paintcontrols.html + PaintHandler controls/twincontrol.painthandler.html + PaintWindow controls/twincontrol.paintwindow.html + CreateBrush controls/twincontrol.createbrush.html + ScaleControls controls/twincontrol.scalecontrols.html + CMBiDiModeChanged controls/twincontrol.cmbidimodechanged.html + CMBorderChanged controls/twincontrol.cmborderchanged.html + CMEnabledChanged controls/twincontrol.cmenabledchanged.html + CMShowingChanged controls/twincontrol.cmshowingchanged.html + CMShowHintChanged controls/twincontrol.cmshowhintchanged.html + CMVisibleChanged controls/twincontrol.cmvisiblechanged.html + CMEnter controls/twincontrol.cmenter.html + CMExit controls/twincontrol.cmexit.html + WMContextMenu controls/twincontrol.wmcontextmenu.html + WMEraseBkgnd controls/twincontrol.wmerasebkgnd.html + WMNotify controls/twincontrol.wmnotify.html + WMSetFocus controls/twincontrol.wmsetfocus.html + WMKillFocus controls/twincontrol.wmkillfocus.html + WMShowWindow controls/twincontrol.wmshowwindow.html + WMEnter controls/twincontrol.wmenter.html + WMExit controls/twincontrol.wmexit.html + WMKeyDown controls/twincontrol.wmkeydown.html + WMSysKeyDown controls/twincontrol.wmsyskeydown.html + WMKeyUp controls/twincontrol.wmkeyup.html + WMSysKeyUp controls/twincontrol.wmsyskeyup.html + WMChar controls/twincontrol.wmchar.html + WMSysChar controls/twincontrol.wmsyschar.html + WMPaint controls/twincontrol.wmpaint.html + WMDestroy controls/twincontrol.wmdestroy.html + WMMove controls/twincontrol.wmmove.html + WMSize controls/twincontrol.wmsize.html + WMWindowPosChanged controls/twincontrol.wmwindowposchanged.html + CNKeyDown controls/twincontrol.cnkeydown.html + CNSysKeyDown controls/twincontrol.cnsyskeydown.html + CNKeyUp controls/twincontrol.cnkeyup.html + CNSysKeyUp controls/twincontrol.cnsyskeyup.html + CNChar controls/twincontrol.cnchar.html + DoDragMsg controls/twincontrol.dodragmsg.html + DoDockClientMsg controls/twincontrol.dodockclientmsg.html + DoUndockClientMsg controls/twincontrol.doundockclientmsg.html + DoAddDockClient controls/twincontrol.doadddockclient.html + DockOver controls/twincontrol.dockover.html + DoDockOver controls/twincontrol.dodockover.html + DoRemoveDockClient controls/twincontrol.doremovedockclient.html + DoUnDock controls/twincontrol.doundock.html + GetSiteInfo controls/twincontrol.getsiteinfo.html + GetParentHandle controls/twincontrol.getparenthandle.html + GetTopParentHandle controls/twincontrol.gettopparenthandle.html + ReloadDockedControl controls/twincontrol.reloaddockedcontrol.html + CreateDockManager controls/twincontrol.createdockmanager.html + DoGetDockCaption controls/twincontrol.dogetdockcaption.html + DoEnter controls/twincontrol.doenter.html + DoExit controls/twincontrol.doexit.html + DoKeyDownBeforeInterface controls/twincontrol.dokeydownbeforeinterface.html + DoRemainingKeyDown controls/twincontrol.doremainingkeydown.html + DoRemainingKeyUp controls/twincontrol.doremainingkeyup.html + DoKeyPress controls/twincontrol.dokeypress.html + DoKeyUpBeforeInterface controls/twincontrol.dokeyupbeforeinterface.html + ChildKey controls/twincontrol.childkey.html + SendDialogChar controls/twincontrol.senddialogchar.html + ControlKeyDown controls/twincontrol.controlkeydown.html + ControlKeyUp controls/twincontrol.controlkeyup.html + KeyDown controls/twincontrol.keydown.html + KeyDownBeforeInterface controls/twincontrol.keydownbeforeinterface.html + KeyDownAfterInterface controls/twincontrol.keydownafterinterface.html + KeyPress controls/twincontrol.keypress.html + KeyUp controls/twincontrol.keyup.html + KeyUpBeforeInterface controls/twincontrol.keyupbeforeinterface.html + KeyUpAfterInterface controls/twincontrol.keyupafterinterface.html + UTF8KeyPress controls/twincontrol.utf8keypress.html + FindNextControl controls/twincontrol.findnextcontrol.html + SelectFirst controls/twincontrol.selectfirst.html + IsControlMouseMsg controls/twincontrol.iscontrolmousemsg.html + CreateHandle controls/twincontrol.createhandle.html + CreateParams controls/twincontrol.createparams.html + CreateWnd controls/twincontrol.createwnd.html + DestroyHandle controls/twincontrol.destroyhandle.html + DestroyWnd controls/twincontrol.destroywnd.html + DoFlipChildren controls/twincontrol.doflipchildren.html + FinalizeWnd controls/twincontrol.finalizewnd.html + FixupTabList controls/twincontrol.fixuptablist.html + InitializeWnd controls/twincontrol.initializewnd.html + Loaded controls/twincontrol.loaded.html + FormEndUpdated controls/twincontrol.formendupdated.html + MainWndProc controls/twincontrol.mainwndproc.html + ParentFormHandleInitialized controls/twincontrol.parentformhandleinitialized.html + ChildHandlesCreated controls/twincontrol.childhandlescreated.html + GetMouseCapture + RemoveFocus controls/twincontrol.removefocus.html + SetChildZPosition controls/twincontrol.setchildzposition.html + ShowControl controls/twincontrol.showcontrol.html + UpdateControlState controls/twincontrol.updatecontrolstate.html + UpdateShowing controls/twincontrol.updateshowing.html + WndProc controls/twincontrol.wndproc.html + WSSetText controls/twincontrol.wssettext.html + WindowHandle controls/twincontrol.windowhandle.html + BorderStyle controls/twincontrol.borderstyle.html + OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html + OnGetDockCaption controls/twincontrol.ongetdockcaption.html + BorderWidth controls/twincontrol.borderwidth.html + BoundsLockCount controls/twincontrol.boundslockcount.html + Brush controls/twincontrol.brush.html + CachedClientHeight controls/twincontrol.cachedclientheight.html + CachedClientWidth controls/twincontrol.cachedclientwidth.html + ChildSizing controls/twincontrol.childsizing.html + ControlCount controls/twincontrol.controlcount.html + Controls controls/twincontrol.controls.html + DefWndProc controls/twincontrol.defwndproc.html + DockClientCount controls/twincontrol.dockclientcount.html + DockClients controls/twincontrol.dockclients.html + DockManager controls/twincontrol.dockmanager.html + DockSite controls/twincontrol.docksite.html + DoubleBuffered controls/twincontrol.doublebuffered.html + Handle controls/twincontrol.handle.html + IsResizing controls/twincontrol.isresizing.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + OnAlignInsertBefore controls/twincontrol.onaligninsertbefore.html + OnAlignPosition controls/twincontrol.onalignposition.html + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnUnDock controls/twincontrol.onundock.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentWindow controls/twincontrol.parentwindow.html + Showing controls/twincontrol.showing.html + UseDockManager controls/twincontrol.usedockmanager.html + DesignerDeleting controls/twincontrol.designerdeleting.html + VisibleDockClientCount controls/twincontrol.visibledockclientcount.html + AutoSizePhases controls/twincontrol.autosizephases.html + AutoSizeDelayedReport controls/twincontrol.autosizedelayedreport.html + AutoSizeDelayedHandle controls/twincontrol.autosizedelayedhandle.html + BeginUpdateBounds controls/twincontrol.beginupdatebounds.html + EndUpdateBounds controls/twincontrol.endupdatebounds.html + LockRealizeBounds controls/twincontrol.lockrealizebounds.html + UnlockRealizeBounds controls/twincontrol.unlockrealizebounds.html + ControlAtPos controls/twincontrol.controlatpos.html + ContainsControl controls/twincontrol.containscontrol.html + DoAdjustClientRectChange controls/twincontrol.doadjustclientrectchange.html + InvalidateClientRectCache controls/twincontrol.invalidateclientrectcache.html + ClientRectNeedsInterfaceUpdate controls/twincontrol.clientrectneedsinterfaceupdate.html + GetChildrenRect controls/twincontrol.getchildrenrect.html + ScrollBy_WS controls/twincontrol.scrollby_ws.html + ScrollBy controls/twincontrol.scrollby.html + AutoAdjustLayout controls/twincontrol.autoadjustlayout.html + Create controls/twincontrol.create.html + CreateParented controls/twincontrol.createparented.html + Destroy controls/twincontrol.destroy.html + DockDrop controls/twincontrol.dockdrop.html + CanFocus controls/twincontrol.canfocus.html + CanSetFocus controls/twincontrol.cansetfocus.html + GetControlIndex controls/twincontrol.getcontrolindex.html + Focused controls/twincontrol.focused.html + PerformTab controls/twincontrol.performtab.html + FindChildControl controls/twincontrol.findchildcontrol.html + SelectNext controls/twincontrol.selectnext.html + BroadCast controls/twincontrol.broadcast.html + NotifyControls controls/twincontrol.notifycontrols.html + DefaultHandler controls/twincontrol.defaulthandler.html + Invalidate controls/twincontrol.invalidate.html + AddControl controls/twincontrol.addcontrol.html + InsertControl controls/twincontrol.insertcontrol.html + RemoveControl controls/twincontrol.removecontrol.html + GetEnumeratorControls controls/twincontrol.getenumeratorcontrols.html + GetEnumeratorControlsReverse controls/twincontrol.getenumeratorcontrolsreverse.html + SetFocus controls/twincontrol.setfocus.html + FlipChildren controls/twincontrol.flipchildren.html + GetDockCaption controls/twincontrol.getdockcaption.html + UpdateDockCaption controls/twincontrol.updatedockcaption.html + GetTabOrderList controls/twincontrol.gettaborderlist.html + HandleAllocated controls/twincontrol.handleallocated.html + HandleNeeded controls/twincontrol.handleneeded.html + BrushCreated controls/twincontrol.brushcreated.html + EraseBackground controls/twincontrol.erasebackground.html + IntfUTF8KeyPress controls/twincontrol.intfutf8keypress.html + IntfGetDropFilesTarget controls/twincontrol.intfgetdropfilestarget.html + PaintTo controls/twincontrol.paintto.html + SetShape controls/twincontrol.setshape.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + CanTab controls/tcontrol.cantab.html + IsClientHeightStored + IsClientWidthStored + DoConstraintsChange + DoAllAutoSize + ChangeScale + SetDockManager + DoFloatMsg + DoUTF8KeyPress + DialogChar controls/tcontrol.dialogchar.html + RealGetText controls/tcontrol.realgettext.html + GetBorderStyle + GetClientOrigin + GetClientRect + GetControlOrigin + GetDeviceContext controls/tcontrol.getdevicecontext.html + FontChanged controls/tcontrol.fontchanged.html + RealSetText controls/tcontrol.realsettext.html + SendMoveSizeMessages controls/tcontrol.sendmovesizemessages.html + SetBorderStyle + SetColor + AutoSizeDelayed controls/tcontrol.autosizedelayed.html + SetBounds controls/tcontrol.setbounds.html + DisableAlign + EnableAlign + ReAlign + WriteLayoutDebugReport controls/tcontrol.writelayoutdebugreport.html + CreateParentedControl + SetControlIndex + SetTempCursor controls/tcontrol.settempcursor.html + GetTextLen controls/tcontrol.gettextlen.html + Repaint controls/tcontrol.repaint.html + Update controls/tcontrol.update.html + ScaleBy + ParentHandlesAllocated controls/tcontrol.parenthandlesallocated.html + TGraphicControl controls/tgraphiccontrol.html + Paint controls/tgraphiccontrol.paint.html + DoOnParentHandleDestruction controls/tgraphiccontrol.doonparenthandledestruction.html + OnPaint controls/tgraphiccontrol.onpaint.html + CMCursorChanged controls/tcontrol.cmcursorchanged.html + Create controls/tgraphiccontrol.create.html + Destroy controls/tgraphiccontrol.destroy.html + Canvas controls/tgraphiccontrol.canvas.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + FontChanged controls/tcontrol.fontchanged.html + DoOnChangeBounds controls/tcontrol.doonchangebounds.html + TCustomControl controls/tcustomcontrol.html + WMPaint controls/tcustomcontrol.wmpaint.html + Paint controls/tcustomcontrol.paint.html + Create controls/tcustomcontrol.create.html + Destroy controls/tcustomcontrol.destroy.html + Canvas controls/tcustomcontrol.canvas.html + OnPaint controls/tcustomcontrol.onpaint.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DestroyWnd controls/twincontrol.destroywnd.html + PaintWindow controls/twincontrol.paintwindow.html + FontChanged controls/tcontrol.fontchanged.html + SetColor + BorderStyle controls/twincontrol.borderstyle.html + TImageList controls/timagelist.html + AllocBy imglist/tcustomimagelist.allocby.html + BlendColor imglist/tcustomimagelist.blendcolor.html + BkColor imglist/tcustomimagelist.bkcolor.html + DrawingStyle imglist/tcustomimagelist.drawingstyle.html + Height imglist/tcustomimagelist.height.html + ImageType imglist/tcustomimagelist.imagetype.html + Masked imglist/tcustomimagelist.masked.html + ShareImages imglist/tcustomimagelist.shareimages.html + Width imglist/tcustomimagelist.width.html + OnChange imglist/tcustomimagelist.onchange.html + TControlPropertyStorage controls/tcontrolpropertystorage.html + GetPropertyList controls/tcontrolpropertystorage.getpropertylist.html + TDockZone controls/tdockzone.html + GetVisibleChildCount controls/tdockzone.getvisiblechildcount.html + Create controls/tdockzone.create.html + FindZone controls/tdockzone.findzone.html + FirstVisibleChild controls/tdockzone.firstvisiblechild.html + GetNextVisibleZone controls/tdockzone.getnextvisiblezone.html + NextVisible controls/tdockzone.nextvisible.html + PrevVisible controls/tdockzone.prevvisible.html + AddSibling controls/tdockzone.addsibling.html + AddAsFirstChild controls/tdockzone.addasfirstchild.html + AddAsLastChild controls/tdockzone.addaslastchild.html + ReplaceChild controls/tdockzone.replacechild.html + GetLastChild controls/tdockzone.getlastchild.html + GetIndex controls/tdockzone.getindex.html + Remove controls/tdockzone.remove.html + ChildControl controls/tdockzone.childcontrol.html + ChildCount controls/tdockzone.childcount.html + FirstChild controls/tdockzone.firstchild.html + Height controls/tdockzone.height.html + Left controls/tdockzone.left.html + LimitBegin controls/tdockzone.limitbegin.html + LimitSize controls/tdockzone.limitsize.html + Parent controls/tdockzone.parent.html + Top controls/tdockzone.top.html + Tree controls/tdockzone.tree.html + Visible controls/tdockzone.visible.html + VisibleChildCount controls/tdockzone.visiblechildcount.html + Width controls/tdockzone.width.html + NextSibling controls/tdockzone.nextsibling.html + PrevSibling controls/tdockzone.prevsibling.html + GetHeight + GetLeft + GetLimitBegin + GetLimitSize + GetTop + GetVisible + GetWidth + SetLimitBegin + SetLimitSize + SetHeight + SetLeft + SetTop + SetWidth + Orientation + TDockTree controls/tdocktree.html + HitTest controls/tdocktree.hittest.html + PaintDockFrame controls/tdocktree.paintdockframe.html + UpdateAll controls/tdocktree.updateall.html + Create controls/tdocktree.create.html + Destroy controls/tdocktree.destroy.html + AdjustDockRect controls/tdocktree.adjustdockrect.html + InsertControl controls/tdocktree.insertcontrol.html + DumpLayout controls/tdocktree.dumplayout.html + DockZoneClass controls/tdocktree.dockzoneclass.html + DockSite controls/tdocktree.docksite.html + RootZone controls/tdocktree.rootzone.html + FRootZone + SetDockZoneClass + BeginUpdate controls/tdockmanager.beginupdate.html + EndUpdate controls/tdockmanager.endupdate.html + GetControlBounds controls/tdockmanager.getcontrolbounds.html + LoadFromStream + MessageHandler + PositionDockRect + RemoveControl + SaveToStream + SetReplacingControl + ResetBounds + PaintSite controls/tdockmanager.paintsite.html + TMouse controls/tmouse.html + Capture controls/tmouse.capture.html + CursorPos controls/tmouse.cursorpos.html + IsDragging controls/tmouse.isdragging.html + WheelScrollLines controls/tmouse.wheelscrolllines.html + DragImmediate controls/tmouse.dragimmediate.html + DragThreshold controls/tmouse.dragthreshold.html + FindDragTarget controls/finddragtarget.html + FindControlAtPosition controls/findcontrolatposition.html + FindLCLWindow controls/findlclwindow.html + FindControl controls/findcontrol.html + FindOwnerControl controls/findownercontrol.html + FindLCLControl controls/findlclcontrol.html + SendAppMessage controls/sendappmessage.html + MoveWindowOrg controls/movewindoworg.html + RecreateWnd controls/recreatewnd.html + CancelDrag controls/canceldrag.html + SetCaptureControl controls/setcapturecontrol.html + GetCaptureControl controls/getcapturecontrol.html + CursorToString controls/cursortostring.html + StringToCursor controls/stringtocursor.html + GetCursorValues controls/getcursorvalues.html + CursorToIdent controls/cursortoident.html + IdentToCursor controls/identtocursor.html + GetKeyShiftState controls/getkeyshiftstate.html + AdjustBorderSpace controls/adjustborderspace.html + IsColorDefault controls/iscolordefault.html + BidiFlipAlignment controls/bidiflipalignment.html + BidiFlipAnchors controls/bidiflipanchors.html + BidiFlipRect controls/bidifliprect.html + ChangeBiDiModeAlignment controls/changebidimodealignment.html + DbgS controls/dbgs.html + assign(Variant):TCaption controls/.op-assign-variant-caption.html + CompareLazAccessibleObjectsByDataObject controls/comparelazaccessibleobjectsbydataobject.html + CompareDataObjectWithLazAccessibleObject controls/comparedataobjectwithlazaccessibleobject.html + Register controls/register.html + DragManager controls/dragmanager.html + DockSplitterClass controls/docksplitterclass.html + DefaultDockManagerClass controls/defaultdockmanagerclass.html + NewStyleControls controls/newstylecontrols.html + Mouse controls/mouse.html + PropertyStorage propertystorage/index.html + TPlacementOperation propertystorage/tplacementoperation.html + TStoredType propertystorage/tstoredtype.html + TStoredValueEvent propertystorage/tstoredvalueevent.html + TStoredValue propertystorage/tstoredvalue.html + GetDisplayName propertystorage/tstoredvalue.getdisplayname.html + Create propertystorage/tstoredvalue.create.html + Assign propertystorage/tstoredvalue.assign.html + Clear propertystorage/tstoredvalue.clear.html + Save propertystorage/tstoredvalue.save.html + Restore propertystorage/tstoredvalue.restore.html + StoredValues propertystorage/tstoredvalue.storedvalues.html + Name propertystorage/tstoredvalue.name.html + Value propertystorage/tstoredvalue.value.html + KeyString propertystorage/tstoredvalue.keystring.html + OnSave propertystorage/tstoredvalue.onsave.html + OnRestore propertystorage/tstoredvalue.onrestore.html + SetDisplayName + TStoredValues propertystorage/tstoredvalues.html + Create propertystorage/tstoredvalues.create.html + IndexOf propertystorage/tstoredvalues.indexof.html + SaveValues propertystorage/tstoredvalues.savevalues.html + RestoreValues propertystorage/tstoredvalues.restorevalues.html + Storage propertystorage/tstoredvalues.storage.html + Items propertystorage/tstoredvalues.items.html + Values propertystorage/tstoredvalues.values.html + StoredValue propertystorage/tstoredvalues.storedvalue.html + TPropertyStorageLink propertystorage/tpropertystoragelink.html + SaveProperties propertystorage/tpropertystoragelink.saveproperties.html + LoadProperties propertystorage/tpropertystoragelink.loadproperties.html + Destroy propertystorage/tpropertystoragelink.destroy.html + Storage propertystorage/tpropertystoragelink.storage.html + RootSection propertystorage/tpropertystoragelink.rootsection.html + OnSave propertystorage/tpropertystoragelink.onsave.html + OnLoad propertystorage/tpropertystoragelink.onload.html + TCustomPropertyStorage propertystorage/tcustompropertystorage.html + RootSection propertystorage/tcustompropertystorage.rootsection.html + SaveProperties propertystorage/tcustompropertystorage.saveproperties.html + RestoreProperties propertystorage/tcustompropertystorage.restoreproperties.html + GetPropertyList propertystorage/tcustompropertystorage.getpropertylist.html + FinishPropertyList propertystorage/tcustompropertystorage.finishpropertylist.html + DoReadInteger propertystorage/tcustompropertystorage.doreadinteger.html + DoReadString propertystorage/tcustompropertystorage.doreadstring.html + DoWriteString propertystorage/tcustompropertystorage.dowritestring.html + DoWriteInteger propertystorage/tcustompropertystorage.dowriteinteger.html + DoEraseSections propertystorage/tcustompropertystorage.doerasesections.html + Create propertystorage/tcustompropertystorage.create.html + Destroy propertystorage/tcustompropertystorage.destroy.html + Save propertystorage/tcustompropertystorage.save.html + Restore propertystorage/tcustompropertystorage.restore.html + StorageNeeded propertystorage/tcustompropertystorage.storageneeded.html + FreeStorage propertystorage/tcustompropertystorage.freestorage.html + ReadBoolean propertystorage/tcustompropertystorage.readboolean.html + ReadString propertystorage/tcustompropertystorage.readstring.html + ReadInteger propertystorage/tcustompropertystorage.readinteger.html + ReadRect propertystorage/tcustompropertystorage.readrect.html + ReadStrings propertystorage/tcustompropertystorage.readstrings.html + WriteString propertystorage/tcustompropertystorage.writestring.html + WriteInteger propertystorage/tcustompropertystorage.writeinteger.html + WriteBoolean propertystorage/tcustompropertystorage.writeboolean.html + WriteRect propertystorage/tcustompropertystorage.writerect.html + WriteStrings propertystorage/tcustompropertystorage.writestrings.html + EraseSections propertystorage/tcustompropertystorage.erasesections.html + StoredValue propertystorage/tcustompropertystorage.storedvalue.html + Root propertystorage/tcustompropertystorage.root.html + Active propertystorage/tcustompropertystorage.active.html + StoredValues propertystorage/tcustompropertystorage.storedvalues.html + OnSavingProperties propertystorage/tcustompropertystorage.onsavingproperties.html + OnSaveProperties propertystorage/tcustompropertystorage.onsaveproperties.html + OnRestoringProperties propertystorage/tcustompropertystorage.onrestoringproperties.html + OnRestoreProperties propertystorage/tcustompropertystorage.onrestoreproperties.html + GetRoot + Menus menus/index.html + HowToUseMenus menus/howtousemenus.html + cHotkeyPrefix menus/chotkeyprefix.html + cLineCaption menus/clinecaption.html + cDialogSuffix menus/cdialogsuffix.html + ValidMenuHotkeys menus/validmenuhotkeys.html + TGlyphShowMode menus/tglyphshowmode.html + TMenuChangeEvent menus/tmenuchangeevent.html + TMenuActionLinkClass menus/tmenuactionlinkclass.html + TMenuItemHandlerType menus/tmenuitemhandlertype.html + TMenuItemClass menus/tmenuitemclass.html + TFindItemKind menus/tfinditemkind.html + TPopupAlignment menus/tpopupalignment.html + TTrackButton menus/ttrackbutton.html + EMenuError menus/emenuerror.html + TMenuActionLink menus/tmenuactionlink.html + FClient menus/tmenuactionlink.fclient.html + IsAutoCheckLinked menus/tmenuactionlink.isautochecklinked.html + SetAutoCheck menus/tmenuactionlink.setautocheck.html + SetCaption menus/tmenuactionlink.setcaption.html + SetChecked menus/tmenuactionlink.setchecked.html + SetEnabled menus/tmenuactionlink.setenabled.html + SetHelpContext menus/tmenuactionlink.sethelpcontext.html + SetHint menus/tmenuactionlink.sethint.html + SetImageIndex menus/tmenuactionlink.setimageindex.html + SetShortCut menus/tmenuactionlink.setshortcut.html + SetVisible menus/tmenuactionlink.setvisible.html + AssignClient + IsOnExecuteLinked + SetOnExecute + IsCaptionLinked actnlist/tactionlink.iscaptionlinked.html + IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html + IsEnabledLinked actnlist/tactionlink.isenabledlinked.html + IsHelpContextLinked actnlist/tactionlink.ishelpcontextlinked.html + IsHintLinked actnlist/tactionlink.ishintlinked.html + IsGroupIndexLinked actnlist/tactionlink.isgroupindexlinked.html + IsImageIndexLinked actnlist/tactionlink.isimageindexlinked.html + IsShortCutLinked actnlist/tactionlink.isshortcutlinked.html + IsVisibleLinked actnlist/tactionlink.isvisiblelinked.html + TMenuItemEnumerator menus/tmenuitemenumerator.html + Create menus/tmenuitemenumerator.create.html + MoveNext menus/tmenuitemenumerator.movenext.html + Current menus/tmenuitemenumerator.current.html + TMenuItem menus/tmenuitem.html + FCommand menus/tmenuitem.fcommand.html + ActionChange menus/tmenuitem.actionchange.html + BitmapChange menus/tmenuitem.bitmapchange.html + GetAction menus/tmenuitem.getaction.html + GetActionLinkClass menus/tmenuitem.getactionlinkclass.html + GetHandle menus/tmenuitem.gethandle.html + DoClicked menus/tmenuitem.doclicked.html + CheckChildrenHandles menus/tmenuitem.checkchildrenhandles.html + CreateHandle menus/tmenuitem.createhandle.html + DestroyHandle menus/tmenuitem.destroyhandle.html + InitiateActions menus/tmenuitem.initiateactions.html + MenuChanged menus/tmenuitem.menuchanged.html + SetAction menus/tmenuitem.setaction.html + SetGroupIndex menus/tmenuitem.setgroupindex.html + SetImageIndex menus/tmenuitem.setimageindex.html + SetShortCut menus/tmenuitem.setshortcut.html + SetShortCutKey2 menus/tmenuitem.setshortcutkey2.html + SetVisible menus/tmenuitem.setvisible.html + UpdateImage menus/tmenuitem.updateimage.html + UpdateImages menus/tmenuitem.updateimages.html + UpdateWSIcon menus/tmenuitem.updatewsicon.html + ImageListChange menus/tmenuitem.imagelistchange.html + ActionLink menus/tmenuitem.actionlink.html + FCompStyle menus/tmenuitem.fcompstyle.html + Create menus/tmenuitem.create.html + Destroy menus/tmenuitem.destroy.html + Find menus/tmenuitem.find.html + GetEnumerator menus/tmenuitem.getenumerator.html + GetImageList menus/tmenuitem.getimagelist.html + GetParentMenu menus/tmenuitem.getparentmenu.html + GetIsRightToLeft menus/tmenuitem.getisrighttoleft.html + HandleAllocated menus/tmenuitem.handleallocated.html + HasIcon menus/tmenuitem.hasicon.html + InitiateAction menus/tmenuitem.initiateaction.html + IntfDoSelect menus/tmenuitem.intfdoselect.html + IndexOf menus/tmenuitem.indexof.html + IndexOfCaption menus/tmenuitem.indexofcaption.html + VisibleIndexOf menus/tmenuitem.visibleindexof.html + Add menus/tmenuitem.add.html + AddSeparator menus/tmenuitem.addseparator.html + Click menus/tmenuitem.click.html + Delete menus/tmenuitem.delete.html + HandleNeeded menus/tmenuitem.handleneeded.html + Insert menus/tmenuitem.insert.html + RecreateHandle menus/tmenuitem.recreatehandle.html + Remove menus/tmenuitem.remove.html + IsCheckItem menus/tmenuitem.ischeckitem.html + IsLine menus/tmenuitem.isline.html + IsInMenuBar menus/tmenuitem.isinmenubar.html + Clear menus/tmenuitem.clear.html + HasBitmap menus/tmenuitem.hasbitmap.html + GetIconSize menus/tmenuitem.geticonsize.html + AddHandlerOnDestroy menus/tmenuitem.addhandlerondestroy.html + RemoveHandlerOnDestroy menus/tmenuitem.removehandlerondestroy.html + AddHandler menus/tmenuitem.addhandler.html + RemoveHandler menus/tmenuitem.removehandler.html + Count menus/tmenuitem.count.html + Handle menus/tmenuitem.handle.html + Items menus/tmenuitem.items.html + MenuIndex menus/tmenuitem.menuindex.html + Menu menus/tmenuitem.menu.html + Parent menus/tmenuitem.parent.html + Command menus/tmenuitem.command.html + MenuVisibleIndex menus/tmenuitem.menuvisibleindex.html + WriteDebugReport menus/tmenuitem.writedebugreport.html + Action menus/tmenuitem.action.html + AutoCheck menus/tmenuitem.autocheck.html + Caption menus/tmenuitem.caption.html + Checked menus/tmenuitem.checked.html + Default menus/tmenuitem.default.html + Enabled menus/tmenuitem.enabled.html + Bitmap menus/tmenuitem.bitmap.html + GroupIndex menus/tmenuitem.groupindex.html + GlyphShowMode menus/tmenuitem.glyphshowmode.html + HelpContext menus/tmenuitem.helpcontext.html + Hint menus/tmenuitem.hint.html + ImageIndex menus/tmenuitem.imageindex.html + RadioItem menus/tmenuitem.radioitem.html + RightJustify menus/tmenuitem.rightjustify.html + ShortCut menus/tmenuitem.shortcut.html + ShortCutKey2 menus/tmenuitem.shortcutkey2.html + ShowAlwaysCheckable menus/tmenuitem.showalwayscheckable.html + SubMenuImages menus/tmenuitem.submenuimages.html + Visible menus/tmenuitem.visible.html + OnClick menus/tmenuitem.onclick.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + AssignTo + Loaded + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + GetChildren + SetChildOrder + SetParentComponent + GetParentComponent ms-its:rtl.chm::/classes/tcomponent.getparentcomponent.html + HasParent ms-its:rtl.chm::/classes/tcomponent.hasparent.html + RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html + TMenu menus/tmenu.html + BidiModeChanged menus/tmenu.bidimodechanged.html + CreateHandle menus/tmenu.createhandle.html + DoChange menus/tmenu.dochange.html + GetHandle menus/tmenu.gethandle.html + MenuChanged menus/tmenu.menuchanged.html + ParentBidiModeChanged menus/tmenu.parentbidimodechanged.html + UpdateItems menus/tmenu.updateitems.html + OnChange menus/tmenu.onchange.html + FCompStyle menus/tmenu.fcompstyle.html + Create menus/tmenu.create.html + Destroy menus/tmenu.destroy.html + DestroyHandle menus/tmenu.destroyhandle.html + FindItem menus/tmenu.finditem.html + GetHelpContext menus/tmenu.gethelpcontext.html + IsShortcut menus/tmenu.isshortcut.html + HandleAllocated menus/tmenu.handleallocated.html + IsRightToLeft menus/tmenu.isrighttoleft.html + UseRightToLeftAlignment menus/tmenu.userighttoleftalignment.html + UseRightToLeftReading menus/tmenu.userighttoleftreading.html + HandleNeeded menus/tmenu.handleneeded.html + DispatchCommand menus/tmenu.dispatchcommand.html + Handle menus/tmenu.handle.html + Parent menus/tmenu.parent.html + ShortcutHandled menus/tmenu.shortcuthandled.html + BidiMode menus/tmenu.bidimode.html + ParentBidiMode menus/tmenu.parentbidimode.html + Items menus/tmenu.items.html + Images menus/tmenu.images.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetChildren + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + SetChildOrder + TMainMenu menus/tmainmenu.html + ItemChanged menus/tmainmenu.itemchanged.html + MenuChanged menus/tmenu.menuchanged.html + Create menus/tmainmenu.create.html + Height menus/tmainmenu.height.html + WindowHandle menus/tmainmenu.windowhandle.html + OnChange menus/tmainmenu.onchange.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TPopupMenu menus/tpopupmenu.html + DoPopup menus/tpopupmenu.dopopup.html + DoClose menus/tpopupmenu.doclose.html + Create menus/tpopupmenu.create.html + Destroy menus/tpopupmenu.destroy.html + PopUp menus/tpopupmenu.popup.html + PopupComponent menus/tpopupmenu.popupcomponent.html + PopupPoint menus/tpopupmenu.popuppoint.html + Close menus/tpopupmenu.close.html + Alignment menus/tpopupmenu.alignment.html + AutoPopup menus/tpopupmenu.autopopup.html + HelpContext menus/tpopupmenu.helpcontext.html + TrackButton menus/tpopupmenu.trackbutton.html + OnPopup menus/tpopupmenu.onpopup.html + OnClose menus/tpopupmenu.onclose.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + ShortCut menus/shortcut.html + ShortCutToKey menus/shortcuttokey.html + NewMenu menus/newmenu.html + NewPopupMenu menus/newpopupmenu.html + NewSubMenu menus/newsubmenu.html + NewItem menus/newitem.html + NewLine menus/newline.html + Register menus/register.html + DesignerMenuItemClick menus/designermenuitemclick.html + ActivePopupMenu menus/activepopupmenu.html + OnMenuPopupHandler menus/onmenupopuphandler.html + StdCtrls stdctrls/index.html + HowToUseStdCtrls stdctrls/howtousestdctrls.html + DefaultComboBoxAutoCompleteText stdctrls/defaultcomboboxautocompletetext.html + TEditCharCase stdctrls/teditcharcase.html + TEchoMode stdctrls/techomode.html + TScrollStyle stdctrls/tscrollstyle.html + TScrollCode stdctrls/tscrollcode.html + TScrollEvent stdctrls/tscrollevent.html + TComboBoxAutoCompleteTextOption stdctrls/tcomboboxautocompletetextoption.html + TComboBoxAutoCompleteText stdctrls/tcomboboxautocompletetext.html + TComboBoxStyle stdctrls/tcomboboxstyle.html + TOwnerDrawState stdctrls/townerdrawstate.html + TDrawItemEvent stdctrls/tdrawitemevent.html + TMeasureItemEvent stdctrls/tmeasureitemevent.html + TListBoxStyle stdctrls/tlistboxstyle.html + TSelectionChangeEvent stdctrls/tselectionchangeevent.html + TStaticBorderStyle stdctrls/tstaticborderstyle.html + TButtonActionLinkClass stdctrls/tbuttonactionlinkclass.html + TCheckBoxState stdctrls/tcheckboxstate.html + TCustomScrollBar stdctrls/tcustomscrollbar.html + GetControlClassDefaultSize stdctrls/tcustomscrollbar.getcontrolclassdefaultsize.html + CreateParams stdctrls/tcustomscrollbar.createparams.html + CreateWnd stdctrls/tcustomscrollbar.createwnd.html + CalculatePreferredSize stdctrls/tcustomscrollbar.calculatepreferredsize.html + Create stdctrls/tcustomscrollbar.create.html + SetParams stdctrls/tcustomscrollbar.setparams.html + Kind stdctrls/tcustomscrollbar.kind.html + LargeChange stdctrls/tcustomscrollbar.largechange.html + Max stdctrls/tcustomscrollbar.max.html + Min stdctrls/tcustomscrollbar.min.html + PageSize stdctrls/tcustomscrollbar.pagesize.html + Position stdctrls/tcustomscrollbar.position.html + SmallChange stdctrls/tcustomscrollbar.smallchange.html + OnChange stdctrls/tcustomscrollbar.onchange.html + OnScroll stdctrls/tcustomscrollbar.onscroll.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Change + Scroll + TabStop controls/twincontrol.tabstop.html + TScrollBar stdctrls/tscrollbar.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Kind stdctrls/tcustomscrollbar.kind.html + LargeChange stdctrls/tcustomscrollbar.largechange.html + Max stdctrls/tcustomscrollbar.max.html + Min stdctrls/tcustomscrollbar.min.html + PageSize stdctrls/tcustomscrollbar.pagesize.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + Position stdctrls/tcustomscrollbar.position.html + ShowHint controls/tcontrol.showhint.html + SmallChange stdctrls/tcustomscrollbar.smallchange.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomscrollbar.onchange.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnScroll stdctrls/tcustomscrollbar.onscroll.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TCustomGroupBox stdctrls/tcustomgroupbox.html + GetControlClassDefaultSize stdctrls/tcustomgroupbox.getcontrolclassdefaultsize.html + CreateParams stdctrls/tcustomgroupbox.createparams.html + Create stdctrls/tcustomgroupbox.create.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TGroupBox stdctrls/tgroupbox.html + OnMouseWheel stdctrls/tgroupbox.onmousewheel.html + OnMouseWheelDown stdctrls/tgroupbox.onmousewheeldown.html + OnMouseWheelUp stdctrls/tgroupbox.onmousewheelup.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + ChildSizing controls/twincontrol.childsizing.html + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DockSite controls/twincontrol.docksite.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUnDock controls/twincontrol.onundock.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TCustomComboBox stdctrls/tcustomcombobox.html + CreateParams stdctrls/tcustomcombobox.createparams.html + InitializeWnd stdctrls/tcustomcombobox.initializewnd.html + DestroyWnd stdctrls/tcustomcombobox.destroywnd.html + DoExit stdctrls/tcustomcombobox.doexit.html + DrawItem stdctrls/tcustomcombobox.drawitem.html + KeyUpAfterInterface controls/twincontrol.keyupafterinterface.html + MeasureItem stdctrls/tcustomcombobox.measureitem.html + GetControlClassDefaultSize stdctrls/tcustomcombobox.getcontrolclassdefaultsize.html + LMChanged stdctrls/tcustomcombobox.lmchanged.html + Change stdctrls/tcustomcombobox.change.html + Select stdctrls/tcustomcombobox.select.html + CloseUp stdctrls/tcustomcombobox.closeup.html + AdjustDropDown stdctrls/tcustomcombobox.adjustdropdown.html + GetItemCount stdctrls/tcustomcombobox.getitemcount.html + RealSetText stdctrls/tcustomcombobox.realsettext.html + KeyDown stdctrls/tcustomcombobox.keydown.html + MouseUp stdctrls/tcustomcombobox.mouseup.html + SelectItem stdctrls/tcustomcombobox.selectitem.html + ItemHeight stdctrls/tcustomcombobox.itemheight.html + ItemWidth stdctrls/tcustomcombobox.itemwidth.html + MaxLength stdctrls/tcustomcombobox.maxlength.html + OnChange stdctrls/tcustomcombobox.onchange.html + OnCloseUp stdctrls/tcustomcombobox.oncloseup.html + OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html + OnDropDown stdctrls/tcustomcombobox.ondropdown.html + OnGetItems stdctrls/tcustomcombobox.ongetitems.html + OnMeasureItem stdctrls/tcustomcombobox.onmeasureitem.html + OnSelect stdctrls/tcustomcombobox.onselect.html + Sorted stdctrls/tcustomcombobox.sorted.html + Create stdctrls/tcustomcombobox.create.html + Destroy stdctrls/tcustomcombobox.destroy.html + IntfGetItems stdctrls/tcustomcombobox.intfgetitems.html + AddItem stdctrls/tcustomcombobox.additem.html + AddHistoryItem stdctrls/tcustomcombobox.addhistoryitem.html + Clear stdctrls/tcustomcombobox.clear.html + ClearSelection stdctrls/tcustomcombobox.clearselection.html + CharCase stdctrls/tcustomcombobox.charcase.html + DroppedDown stdctrls/tcustomcombobox.droppeddown.html + SelectAll stdctrls/tcustomcombobox.selectall.html + AutoComplete stdctrls/tcustomcombobox.autocomplete.html + AutoCompleteText stdctrls/tcustomcombobox.autocompletetext.html + AutoDropDown stdctrls/tcustomcombobox.autodropdown.html + AutoSelect stdctrls/tcustomcombobox.autoselect.html + AutoSelected stdctrls/tcustomcombobox.autoselected.html + AutoSize stdctrls/tcustomcombobox.autosize.html + ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html + Canvas stdctrls/tcustomcombobox.canvas.html + DropDownCount stdctrls/tcustomcombobox.dropdowncount.html + Items stdctrls/tcustomcombobox.items.html + ItemIndex stdctrls/tcustomcombobox.itemindex.html + ReadOnly stdctrls/tcustomcombobox.readonly.html + SelLength stdctrls/tcustomcombobox.sellength.html + SelStart stdctrls/tcustomcombobox.selstart.html + SelText stdctrls/tcustomcombobox.seltext.html + Style stdctrls/tcustomcombobox.style.html + Text stdctrls/tcustomcombobox.text.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DoEnter + DropDown + GetItems + SetItems + GetItemHeight + GetSelLength + GetSelStart + GetSelText + GetItemIndex + GetMaxLength + IsReadOnlyStored + SetDropDownCount + SetDroppedDown + SetItemHeight + SetItemIndex + SetMaxLength + SetSelLength + SetSelStart + SetSelText + SetSorted + SetStyle + KeyUp controls/twincontrol.keyup.html + UTF8KeyPress + ParentColor controls/tcontrol.parentcolor.html + TabStop controls/twincontrol.tabstop.html + TComboBox stdctrls/tcombobox.html + BorderStyle stdctrls/tcombobox.borderstyle.html + DragKind stdctrls/tcombobox.dragkind.html + OnMouseEnter stdctrls/tcombobox.onmouseenter.html + OnMouseLeave stdctrls/tcombobox.onmouseleave.html + OnMouseWheel stdctrls/tcombobox.onmousewheel.html + OnMouseWheelDown stdctrls/tcombobox.onmousewheeldown.html + OnMouseWheelUp stdctrls/tcombobox.onmousewheelup.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html + AutoComplete stdctrls/tcustomcombobox.autocomplete.html + AutoCompleteText stdctrls/tcustomcombobox.autocompletetext.html + AutoDropDown stdctrls/tcustomcombobox.autodropdown.html + AutoSelect stdctrls/tcustomcombobox.autoselect.html + AutoSize controls/tcontrol.autosize.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + CharCase stdctrls/tcustomcombobox.charcase.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + DropDownCount stdctrls/tcustomcombobox.dropdowncount.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + ItemHeight stdctrls/tcustomcombobox.itemheight.html + ItemIndex stdctrls/tcustomcombobox.itemindex.html + Items stdctrls/tcustomcombobox.items.html + ItemWidth stdctrls/tcustomcombobox.itemwidth.html + MaxLength stdctrls/tcustomcombobox.maxlength.html + OnChange stdctrls/tcustomcombobox.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnCloseUp stdctrls/tcustomcombobox.oncloseup.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html + OnEndDrag controls/tcontrol.onenddrag.html + OnDropDown stdctrls/tcustomcombobox.ondropdown.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetItems + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMeasureItem stdctrls/tcustomcombobox.onmeasureitem.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnSelect stdctrls/tcustomcombobox.onselect.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomcombobox.readonly.html + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomcombobox.sorted.html + Style stdctrls/tcustomcombobox.style.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Text stdctrls/tcustomcombobox.text.html + Visible controls/tcontrol.visible.html + TCustomListBox stdctrls/tcustomlistbox.html + AssignItemDataToCache stdctrls/tcustomlistbox.assignitemdatatocache.html + AssignCacheToItemData stdctrls/tcustomlistbox.assigncachetoitemdata.html + BeforeDragStart stdctrls/tcustomlistbox.beforedragstart.html + CalculateStandardItemHeight stdctrls/tcustomlistbox.calculatestandarditemheight.html + CreateParams stdctrls/tcustomlistbox.createparams.html + InitializeWnd stdctrls/tcustomlistbox.initializewnd.html + FinalizeWnd stdctrls/tcustomlistbox.finalizewnd.html + GetControlClassDefaultSize stdctrls/tcustomlistbox.getcontrolclassdefaultsize.html + CheckIndex stdctrls/tcustomlistbox.checkindex.html + GetCachedDataSize stdctrls/tcustomlistbox.getcacheddatasize.html + GetCachedData stdctrls/tcustomlistbox.getcacheddata.html + DrawItem stdctrls/tcustomlistbox.drawitem.html + SendItemIndex stdctrls/tcustomlistbox.senditemindex.html + Create stdctrls/tcustomlistbox.create.html + Destroy stdctrls/tcustomlistbox.destroy.html + AddItem stdctrls/tcustomlistbox.additem.html + Clear stdctrls/tcustomlistbox.clear.html + ClearSelection stdctrls/tcustomlistbox.clearselection.html + GetIndexAtXY stdctrls/tcustomlistbox.getindexatxy.html + GetSelectedText stdctrls/tcustomlistbox.getselectedtext.html + ItemAtPos stdctrls/tcustomlistbox.itematpos.html + ItemRect stdctrls/tcustomlistbox.itemrect.html + ItemVisible stdctrls/tcustomlistbox.itemvisible.html + ItemFullyVisible stdctrls/tcustomlistbox.itemfullyvisible.html + LockSelectionChange stdctrls/tcustomlistbox.lockselectionchange.html + MakeCurrentVisible stdctrls/tcustomlistbox.makecurrentvisible.html + MeasureItem stdctrls/tcustomlistbox.measureitem.html + SelectAll stdctrls/tcustomlistbox.selectall.html + UnlockSelectionChange stdctrls/tcustomlistbox.unlockselectionchange.html + Canvas stdctrls/tcustomlistbox.canvas.html + ClickOnSelChange stdctrls/tcustomlistbox.clickonselchange.html + Columns stdctrls/tcustomlistbox.columns.html + Count stdctrls/tcustomlistbox.count.html + ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html + IntegralHeight stdctrls/tcustomlistbox.integralheight.html + ItemHeight stdctrls/tcustomlistbox.itemheight.html + ItemIndex stdctrls/tcustomlistbox.itemindex.html + Items stdctrls/tcustomlistbox.items.html + MultiSelect stdctrls/tcustomlistbox.multiselect.html + OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html + OnMeasureItem stdctrls/tcustomlistbox.onmeasureitem.html + OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html + ScrollWidth stdctrls/tcustomlistbox.scrollwidth.html + SelCount stdctrls/tcustomlistbox.selcount.html + Selected stdctrls/tcustomlistbox.selected.html + Sorted stdctrls/tcustomlistbox.sorted.html + Style stdctrls/tcustomlistbox.style.html + TopIndex stdctrls/tcustomlistbox.topindex.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + BeginAutoDrag controls/tcontrol.beginautodrag.html + GetItemHeight + GetItemIndex + GetSelCount + GetSelected + SetExtendedSelect + SetItemIndex + SetItems + SetItemHeight + SetMultiSelect + SetSelected + SetSorted + SetStyle + DoSelectionChange + Click controls/tcontrol.click.html + GetIndexAtY + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderStyle controls/twincontrol.borderstyle.html + Constraints controls/tcontrol.constraints.html + Font controls/tcontrol.font.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TListBox stdctrls/tlistbox.html + ItemIndex stdctrls/tcustomlistbox.itemindex.html + OnStartDrag stdctrls/tlistbox.onstartdrag.html + ParentBidiMode stdctrls/tlistbox.parentbidimode.html + ParentShowHint stdctrls/tlistbox.parentshowhint.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + ClickOnSelChange stdctrls/tcustomlistbox.clickonselchange.html + Color controls/tcontrol.color.html + Columns stdctrls/tcustomlistbox.columns.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + IntegralHeight stdctrls/tcustomlistbox.integralheight.html + Items stdctrls/tcustomlistbox.items.html + ItemHeight stdctrls/tcustomlistbox.itemheight.html + MultiSelect stdctrls/tcustomlistbox.multiselect.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html + OnEnter controls/twincontrol.onenter.html + OnEndDrag controls/tcontrol.onenddrag.html + OnExit controls/twincontrol.onexit.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMeasureItem stdctrls/tcustomlistbox.onmeasureitem.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnResize controls/tcontrol.onresize.html + OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html + OnShowHint controls/tcontrol.onshowhint.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + PopupMenu controls/tcontrol.popupmenu.html + ScrollWidth + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomlistbox.sorted.html + Style stdctrls/tcustomlistbox.style.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TopIndex stdctrls/tcustomlistbox.topindex.html + Visible controls/tcontrol.visible.html + TCustomEdit stdctrls/tcustomedit.html + CanShowTextHint stdctrls/tcustomedit.canshowtexthint.html + CreateParams stdctrls/tcustomedit.createparams.html + InitializeWnd controls/twincontrol.initializewnd.html + Change stdctrls/tcustomedit.change.html + DoEnter stdctrls/tcustomedit.doenter.html + DoExit stdctrls/tcustomedit.doexit.html + GetNumbersOnly stdctrls/tcustomedit.getnumbersonly.html + Loaded controls/twincontrol.loaded.html + SetNumbersOnly stdctrls/tcustomedit.setnumbersonly.html + GetControlClassDefaultSize stdctrls/tcustomedit.getcontrolclassdefaultsize.html + RealGetText + KeyUpAfterInterface stdctrls/tcustomedit.keyupafterinterface.html + CMWantSpecialKey stdctrls/tcustomedit.cmwantspecialkey.html + AutoSelect stdctrls/tcustomedit.autoselect.html + AutoSelected stdctrls/tcustomedit.autoselected.html + Create stdctrls/tcustomedit.create.html + Clear stdctrls/tcustomedit.clear.html + SelectAll stdctrls/tcustomedit.selectall.html + ClearSelection stdctrls/tcustomedit.clearselection.html + CopyToClipboard stdctrls/tcustomedit.copytoclipboard.html + CutToClipboard stdctrls/tcustomedit.cuttoclipboard.html + PasteFromClipboard stdctrls/tcustomedit.pastefromclipboard.html + Undo stdctrls/tcustomedit.undo.html + Alignment stdctrls/tcustomedit.alignment.html + AutoSize stdctrls/tcustomedit.autosize.html + CanUndo stdctrls/tcustomedit.canundo.html + CaretPos stdctrls/tcustomedit.caretpos.html + CharCase stdctrls/tcustomedit.charcase.html + EchoMode stdctrls/tcustomedit.echomode.html + HideSelection stdctrls/tcustomedit.hideselection.html + MaxLength stdctrls/tcustomedit.maxlength.html + Modified stdctrls/tcustomedit.modified.html + NumbersOnly stdctrls/tcustomedit.numbersonly.html + OnChange stdctrls/tcustomedit.onchange.html + PasswordChar stdctrls/tcustomedit.passwordchar.html + ReadOnly stdctrls/tcustomedit.readonly.html + SelLength stdctrls/tcustomedit.sellength.html + SelStart stdctrls/tcustomedit.selstart.html + SelText stdctrls/tcustomedit.seltext.html + Text stdctrls/tcustomedit.text.html + TextHint stdctrls/tcustomedit.texthint.html + TextHintFontColor stdctrls/tcustomedit.texthintfontcolor.html + TextHintFontStyle stdctrls/tcustomedit.texthintfontstyle.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + TextChanged controls/tcontrol.textchanged.html + GetCaretPos + GetReadOnly + GetSelLength + GetSelStart + GetSelText + SetCaretPos + SetEchoMode + SetReadOnly + SetSelLength + SetSelStart + SetSelText + ChildClassAllowed controls/twincontrol.childclassallowed.html + MouseUp controls/tcontrol.mouseup.html + RealSetText controls/tcontrol.realsettext.html + WMChar controls/twincontrol.wmchar.html + ParentColor controls/tcontrol.parentcolor.html + BorderStyle controls/twincontrol.borderstyle.html + PopupMenu controls/tcontrol.popupmenu.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TMemoScrollbar stdctrls/tmemoscrollbar.html + GetHorzScrollBar forms/tcontrolscrollbar.gethorzscrollbar.html + GetVertScrollBar forms/tcontrolscrollbar.getvertscrollbar.html + Increment forms/tcontrolscrollbar.increment.html + Page forms/tcontrolscrollbar.page.html + Smooth forms/tcontrolscrollbar.smooth.html + Position forms/tcontrolscrollbar.position.html + Range forms/tcontrolscrollbar.range.html + Size forms/tcontrolscrollbar.size.html + Visible forms/tcontrolscrollbar.visible.html + TCustomMemo stdctrls/tcustommemo.html + CreateParams stdctrls/tcustommemo.createparams.html + InitializeWnd stdctrls/tcustommemo.initializewnd.html + FinalizeWnd stdctrls/tcustommemo.finalizewnd.html + RealGetText stdctrls/tcustommemo.realgettext.html + RealSetText stdctrls/tcustommemo.realsettext.html + KeyUpAfterInterface stdctrls/tcustomedit.keyupafterinterface.html + Loaded stdctrls/tcustommemo.loaded.html + CMWantSpecialKey stdctrls/tcustommemo.cmwantspecialkey.html + WMGetDlgCode stdctrls/tcustommemo.wmgetdlgcode.html + GetControlClassDefaultSize stdctrls/tcustommemo.getcontrolclassdefaultsize.html + UTF8KeyPress stdctrls/tcustommemo.utf8keypress.html + Create stdctrls/tcustommemo.create.html + Destroy stdctrls/tcustommemo.destroy.html + Append stdctrls/tcustommemo.append.html + ScrollBy stdctrls/tcustommemo.scrollby.html + Lines stdctrls/tcustommemo.lines.html + HorzScrollBar stdctrls/tcustommemo.horzscrollbar.html + VertScrollBar stdctrls/tcustommemo.vertscrollbar.html + ScrollBars stdctrls/tcustommemo.scrollbars.html + WantReturns stdctrls/tcustommemo.wantreturns.html + WantTabs stdctrls/tcustommemo.wanttabs.html + WordWrap stdctrls/tcustommemo.wordwrap.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetCachedText controls/tcontrol.getcachedtext.html + GetCaretPos + SetCaretPos + SetLines + SetSelText stdctrls/tcustomedit.seltext.html + SetWantReturns + SetWantTabs + SetWordWrap + SetScrollBars + TEdit stdctrls/tedit.html + NumbersOnly stdctrls/tedit.numbersonly.html + OnMouseWheel stdctrls/tedit.onmousewheel.html + OnMouseWheelDown stdctrls/tedit.onmousewheeldown.html + OnMouseWheelUp stdctrls/tedit.onmousewheelup.html + TextHint stdctrls/tcustomedit.texthint.html + TextHintFontColor stdctrls/tedit.texthintfontcolor.html + TextHintFontStyle stdctrls/tedit.texthintfontstyle.html + AutoSelected stdctrls/tcustomedit.autoselected.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + Alignment stdctrls/tcustomedit.alignment.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + AutoSelect stdctrls/tcustomedit.autoselect.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + CharCase stdctrls/tcustomedit.charcase.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + EchoMode stdctrls/tcustomedit.echomode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + HideSelection stdctrls/tcustomedit.hideselection.html + MaxLength stdctrls/tcustomedit.maxlength.html + ParentBidiMode controls/tcontrol.parentbidimode.html + OnChange stdctrls/tcustomedit.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PasswordChar stdctrls/tcustomedit.passwordchar.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ShowHint controls/tcontrol.showhint.html + TabStop controls/twincontrol.tabstop.html + TabOrder controls/twincontrol.taborder.html + Text stdctrls/tcustomedit.text.html + Visible controls/tcontrol.visible.html + TMemo stdctrls/tmemo.html + Align controls/tcontrol.align.html + Alignment + Anchors controls/tcontrol.anchors.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + CharCase + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + HideSelection + Lines stdctrls/tcustommemo.lines.html + MaxLength stdctrls/tcustomedit.maxlength.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + PopupMenu controls/tcontrol.popupmenu.html + ParentShowHint controls/tcontrol.parentshowhint.html + ReadOnly stdctrls/tcustomedit.readonly.html + ScrollBars stdctrls/tcustommemo.scrollbars.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + WantReturns stdctrls/tcustommemo.wantreturns.html + WantTabs stdctrls/tcustommemo.wanttabs.html + WordWrap stdctrls/tcustommemo.wordwrap.html + TCustomStaticText stdctrls/tcustomstatictext.html + GetLabelText stdctrls/tcustomstatictext.getlabeltext.html + RealSetText stdctrls/tcustomstatictext.realsettext.html + Create stdctrls/tcustomstatictext.create.html + Alignment stdctrls/tcustomstatictext.alignment.html + BorderStyle stdctrls/tcustomstatictext.borderstyle.html + FocusControl stdctrls/tcustomstatictext.focuscontrol.html + ShowAccelChar stdctrls/tcustomstatictext.showaccelchar.html + Transparent stdctrls/tcustomstatictext.transparent.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Notification controls/tcontrol.notification.html + SetFocusControl + SetShowAccelChar + DialogChar controls/tcontrol.dialogchar.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + TStaticText stdctrls/tstatictext.html + Caption stdctrls/tstatictext.caption.html + OnMouseWheel stdctrls/tstatictext.onmousewheel.html + OnMouseWheelDown stdctrls/tstatictext.onmousewheeldown.html + OnMouseWheelUp stdctrls/tstatictext.onmousewheelup.html + ShowHint stdctrls/tstatictext.showhint.html + Align controls/tcontrol.align.html + Alignment stdctrls/tcustomstatictext.alignment.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + FocusControl stdctrls/tcustomstatictext.focuscontrol.html + Font controls/tcontrol.font.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentFont controls/tcontrol.parentfont.html + ParentColor controls/tcontrol.parentcolor.html + ShowAccelChar stdctrls/tcustomstatictext.showaccelchar.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Transparent + Visible controls/tcontrol.visible.html + TButtonControl stdctrls/tbuttoncontrol.html + GetActionLinkClass stdctrls/tbuttoncontrol.getactionlinkclass.html + DoOnChange stdctrls/tbuttoncontrol.doonchange.html + Checked stdctrls/tbuttoncontrol.checked.html + ClicksDisabled stdctrls/tbuttoncontrol.clicksdisabled.html + OnChange stdctrls/tbuttoncontrol.onchange.html + Create stdctrls/tbuttoncontrol.create.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetChecked + SetChecked + Click controls/tcontrol.click.html + TButtonActionLink stdctrls/tbuttonactionlink.html + FClientButton stdctrls/tbuttonactionlink.fclientbutton.html + AssignClient stdctrls/tbuttonactionlink.assignclient.html + SetChecked stdctrls/tbuttonactionlink.setchecked.html + IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html + TCustomButton stdctrls/tcustombutton.html + CreateWnd stdctrls/tcustombutton.createwnd.html + CreateParams stdctrls/tcustombutton.createparams.html + GetControlClassDefaultSize stdctrls/tcustombutton.getcontrolclassdefaultsize.html + WSSetDefault stdctrls/tcustombutton.wssetdefault.html + WSSetText stdctrls/tcustombutton.wssettext.html + Loaded stdctrls/tcustombutton.loaded.html + UpdateDefaultCancel stdctrls/tcustombutton.updatedefaultcancel.html + Create stdctrls/tcustombutton.create.html + Click stdctrls/tcustombutton.click.html + ExecuteDefaultAction stdctrls/tcustombutton.executedefaultaction.html + ExecuteCancelAction stdctrls/tcustombutton.executecancelaction.html + Active stdctrls/tcustombutton.active.html + Default stdctrls/tcustombutton.default.html + ModalResult stdctrls/tcustombutton.modalresult.html + ShortCut stdctrls/tcustombutton.shortcut.html + ShortCutKey2 stdctrls/tcustombutton.shortcutkey2.html + Cancel stdctrls/tcustombutton.cancel.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + ControlKeyDown controls/twincontrol.controlkeydown.html + ControlKeyUp controls/twincontrol.controlkeyup.html + DialogChar controls/tcontrol.dialogchar.html + ChildClassAllowed controls/twincontrol.childclassallowed.html + ParentColor controls/tcontrol.parentcolor.html + TextChanged controls/tcontrol.textchanged.html + ActiveDefaultControlChanged controls/tcontrol.activedefaultcontrolchanged.html + UpdateRolesForForm controls/tcontrol.updaterolesforform.html + UseRightToLeftAlignment controls/tcontrol.userighttoleftalignment.html + Color controls/tcontrol.color.html + TabStop controls/twincontrol.tabstop.html + TButton stdctrls/tbutton.html + DragKind stdctrls/tbutton.dragkind.html + OnMouseWheel stdctrls/tbutton.onmousewheel.html + OnMouseWheelDown stdctrls/tbutton.onmousewheeldown.html + OnMouseWheelUp stdctrls/tbutton.onmousewheelup.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + Cancel stdctrls/tcustombutton.cancel.html + Caption controls/tcontrol.caption.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + Default stdctrls/tcustombutton.default.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ModalResult stdctrls/tcustombutton.modalresult.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TCustomCheckBox stdctrls/tcustomcheckbox.html + DoClickOnChange stdctrls/tcustomcheckbox.doclickonchange.html + RetrieveState stdctrls/tcustomcheckbox.retrievestate.html + InitializeWnd stdctrls/tcustomcheckbox.initializewnd.html + Toggle stdctrls/tcustomcheckbox.toggle.html + ApplyChanges stdctrls/tcustomcheckbox.applychanges.html + GetControlClassDefaultSize stdctrls/tcustomcheckbox.getcontrolclassdefaultsize.html + Loaded stdctrls/tcustomcheckbox.loaded.html + CreateParams stdctrls/tcustomcheckbox.createparams.html + Create stdctrls/tcustomcheckbox.create.html + Alignment stdctrls/tcustomcheckbox.alignment.html + AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html + State stdctrls/tcustomcheckbox.state.html + ShortCut stdctrls/tcustomcheckbox.shortcut.html + ShortCutKey2 stdctrls/tcustomcheckbox.shortcutkey2.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Click controls/tcontrol.click.html + DialogChar controls/tcontrol.dialogchar.html + GetChecked stdctrls/tbuttoncontrol.checked.html + SetChecked stdctrls/tbuttoncontrol.checked.html + RealSetText controls/tcontrol.realsettext.html + WSSetText controls/twincontrol.wssettext.html + TextChanged controls/tcontrol.textchanged.html + OnChange stdctrls/tbuttoncontrol.onchange.html + TCheckBox stdctrls/tcheckbox.html + Create stdctrls/tcheckbox.create.html + Alignment stdctrls/tcheckbox.alignment.html + AutoSize stdctrls/tcheckbox.autosize.html + OnMouseWheel stdctrls/tcheckbox.onmousewheel.html + OnMouseWheelDown stdctrls/tcheckbox.onmousewheeldown.html + OnMouseWheelUp stdctrls/tcheckbox.onmousewheelup.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html + Anchors controls/tcontrol.anchors.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + Checked stdctrls/tbuttoncontrol.checked.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Hint controls/tcontrol.hint.html + OnChange stdctrls/tbuttoncontrol.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + ParentBidiMode controls/tcontrol.parentbidimode.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + State stdctrls/tcustomcheckbox.state.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TToggleBox stdctrls/ttogglebox.html + CreateParams stdctrls/ttogglebox.createparams.html + ParentColor stdctrls/ttogglebox.parentcolor.html + Create stdctrls/ttogglebox.create.html + Align stdctrls/ttogglebox.align.html + BidiMode stdctrls/ttogglebox.bidimode.html + Color stdctrls/ttogglebox.color.html + Constraints stdctrls/ttogglebox.constraints.html + Font stdctrls/ttogglebox.font.html + OnMouseEnter stdctrls/ttogglebox.onmouseenter.html + OnMouseLeave stdctrls/ttogglebox.onmouseleave.html + OnMouseWheel stdctrls/ttogglebox.onmousewheel.html + OnMouseWheelDown stdctrls/ttogglebox.onmousewheeldown.html + OnMouseWheelUp stdctrls/ttogglebox.onmousewheelup.html + ParentBidiMode stdctrls/ttogglebox.parentbidimode.html + ParentFont stdctrls/ttogglebox.parentfont.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + Checked stdctrls/tbuttoncontrol.checked.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Hint controls/tcontrol.hint.html + OnChange stdctrls/tbuttoncontrol.onchange.html + OnClick controls/tcontrol.onclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + State stdctrls/tcustomcheckbox.state.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TRadioButton stdctrls/tradiobutton.html + DoClickOnChange stdctrls/tradiobutton.doclickonchange.html + CreateParams stdctrls/tradiobutton.createparams.html + Create stdctrls/tradiobutton.create.html + Alignment stdctrls/tradiobutton.alignment.html + OnKeyDown stdctrls/tradiobutton.onkeydown.html + OnKeyPress stdctrls/tradiobutton.onkeypress.html + OnKeyUp stdctrls/tradiobutton.onkeyup.html + OnMouseWheel stdctrls/tradiobutton.onmousewheel.html + OnMouseWheelDown stdctrls/tradiobutton.onmousewheeldown.html + OnMouseWheelUp stdctrls/tradiobutton.onmousewheelup.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + ApplyChanges stdctrls/tcustomcheckbox.applychanges.html + DialogChar controls/tcontrol.dialogchar.html + RealSetText controls/tcontrol.realsettext.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + Checked stdctrls/tbuttoncontrol.checked.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Hint controls/tcontrol.hint.html + OnChange stdctrls/tbuttoncontrol.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TCustomLabel stdctrls/tcustomlabel.html + CanTab stdctrls/tcustomlabel.cantab.html + DoMeasureTextPosition stdctrls/tcustomlabel.domeasuretextposition.html + HasMultiLine stdctrls/tcustomlabel.hasmultiline.html + CalculateSize stdctrls/tcustomlabel.calculatesize.html + DoSetBounds stdctrls/tcustomlabel.dosetbounds.html + GetControlClassDefaultSize stdctrls/tcustomlabel.getcontrolclassdefaultsize.html + WMActivate stdctrls/tcustomlabel.wmactivate.html + GetLabelText stdctrls/tcustomlabel.getlabeltext.html + Loaded stdctrls/tcustomlabel.loaded.html + UpdateSize stdctrls/tcustomlabel.updatesize.html + Alignment stdctrls/tcustomlabel.alignment.html + FocusControl stdctrls/tcustomlabel.focuscontrol.html + Layout stdctrls/tcustomlabel.layout.html + ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html + Transparent stdctrls/tcustomlabel.transparent.html + WordWrap stdctrls/tcustomlabel.wordwrap.html + OptimalFill stdctrls/tcustomlabel.optimalfill.html + Create stdctrls/tcustomlabel.create.html + CalcFittingFontHeight stdctrls/tcustomlabel.calcfittingfontheight.html + AdjustFontForOptimalFill stdctrls/tcustomlabel.adjustfontforoptimalfill.html + SetBounds stdctrls/tcustomlabel.setbounds.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + DoAutoSize controls/tcontrol.doautosize.html + DialogChar controls/tcontrol.dialogchar.html + TextChanged controls/tcontrol.textchanged.html + FontChanged controls/tcontrol.fontchanged.html + Notification controls/tcontrol.notification.html + GetTransparent + SetColor + SetFocusControl + SetLayout + SetShowAccelChar + SetTransparent + SetWordWrap + ColorIsStored + Paint controls/tgraphiccontrol.paint.html + AutoSize controls/tcontrol.autosize.html + Color controls/tcontrol.color.html + TLabel stdctrls/tlabel.html + OnMouseWheel stdctrls/tlabel.onmousewheel.html + OnMouseWheelDown stdctrls/tlabel.onmousewheeldown.html + OnMouseWheelUp stdctrls/tlabel.onmousewheelup.html + Align controls/tcontrol.align.html + Alignment stdctrls/tcustomlabel.alignment.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + FocusControl stdctrls/tcustomlabel.focuscontrol.html + Font controls/tcontrol.font.html + Layout stdctrls/tcustomlabel.layout.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html + ShowHint controls/tcontrol.showhint.html + Transparent stdctrls/tcustomlabel.transparent.html + Visible controls/tcontrol.visible.html + WordWrap stdctrls/tcustomlabel.wordwrap.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OptimalFill stdctrls/tcustomlabel.optimalfill.html + Register stdctrls/register.html + ExtendedStrings extendedstrings/index.html + TExtStringsOption extendedstrings/textstringsoption.html + TExtStringsOptions extendedstrings/textstringsoptions.html + TExtendedStringList extendedstrings/textendedstringlist.html + ResizeRecord extendedstrings/textendedstringlist.resizerecord.html + GetObject extendedstrings/textendedstringlist.getobject.html + PutObject extendedstrings/textendedstringlist.putobject.html + Create extendedstrings/textendedstringlist.create.html + Destroy extendedstrings/textendedstringlist.destroy.html + Clear extendedstrings/textendedstringlist.clear.html + Delete extendedstrings/textendedstringlist.delete.html + CreateRecord extendedstrings/textendedstringlist.createrecord.html + FreeRecord extendedstrings/textendedstringlist.freerecord.html + FreeAllRecords extendedstrings/textendedstringlist.freeallrecords.html + RecordAllocated extendedstrings/textendedstringlist.recordallocated.html + Records extendedstrings/textendedstringlist.records.html + RecordSize extendedstrings/textendedstringlist.recordsize.html + Options extendedstrings/textendedstringlist.options.html + TextStrings textstrings/index.html + TTextLineRange textstrings/ttextlinerange.html + PTextLineRange textstrings/ptextlinerange.html + TTextStrings textstrings/ttextstrings.html + FArraysValid textstrings/ttextstrings.farraysvalid.html + FLineCount textstrings/ttextstrings.flinecount.html + FLineCapacity textstrings/ttextstrings.flinecapacity.html + FLineRanges textstrings/ttextstrings.flineranges.html + FText textstrings/ttextstrings.ftext.html + FUpdateCount textstrings/ttextstrings.fupdatecount.html + FChangedWhileUpdate textstrings/ttextstrings.fchangedwhileupdate.html + BuildArrays textstrings/ttextstrings.buildarrays.html + Changed textstrings/ttextstrings.changed.html + Changing textstrings/ttextstrings.changing.html + ClearArrays textstrings/ttextstrings.cleararrays.html + GetLineLen textstrings/ttextstrings.getlinelen.html + GetLineEnd textstrings/ttextstrings.getlineend.html + CountLineEndings textstrings/ttextstrings.countlineendings.html + Create textstrings/ttextstrings.create.html + MakeTextBufferUnique textstrings/ttextstrings.maketextbufferunique.html + AddObject textstrings/ttextstrings.addobject.html + LoadFromFile textstrings/ttextstrings.loadfromfile.html + SaveToFile textstrings/ttextstrings.savetofile.html + OnChange textstrings/ttextstrings.onchange.html + OnChanging textstrings/ttextstrings.onchanging.html + GetTextStr + SetTextStr + GetCount + Get + GetObject + Put + PutObject + Destroy ms-its:rtl.chm::/classes/tstrings.destroy.html + Clear ms-its:rtl.chm::/classes/tstrings.clear.html + SetText ms-its:rtl.chm::/classes/tstrings.settext.html + Insert ms-its:rtl.chm::/classes/tstrings.insert.html + Delete ms-its:rtl.chm::/classes/tstrings.delete.html + Exchange ms-its:rtl.chm::/classes/tstrings.exchange.html + Move ms-its:rtl.chm::/classes/tstrings.move.html + BeginUpdate ms-its:rtl.chm::/classes/tstrings.beginupdate.html + EndUpdate ms-its:rtl.chm::/classes/tstrings.endupdate.html + GetText ms-its:rtl.chm::/classes/tstrings.gettext.html + IndexOf ms-its:rtl.chm::/classes/tstrings.indexof.html + Add ms-its:rtl.chm::/classes/tstrings.add.html + AddStrings ms-its:rtl.chm::/classes/tstrings.addstrings.html + Text ms-its:rtl.chm::/classes/tstrings.text.html + Forms forms/index.html + DefaultApplicationBiDiMode forms/defaultapplicationbidimode.html + DefHintColor forms/defhintcolor.html + DefHintPause forms/defhintpause.html + DefHintShortPause forms/defhintshortpause.html + DefHintHidePause forms/defhinthidepause.html + DefHintHidePausePerChar forms/defhinthidepauseperchar.html + DefaultBorderIcons forms/defaultbordericons.html + TProcedure forms/tprocedure.html + TProcedureOfObject forms/tprocedureofobject.html + TPosition forms/tposition.html + TWindowState forms/twindowstate.html + TCloseAction forms/tcloseaction.html + TScrollBarKind forms/tscrollbarkind.html + TScrollBarInc forms/tscrollbarinc.html + TScrollBarStyle forms/tscrollbarstyle.html + TCustomFrameClass forms/tcustomframeclass.html + TBorderIcon forms/tbordericon.html + TBorderIcons forms/tbordericons.html + TDefaultMonitor forms/tdefaultmonitor.html + TFormStateType forms/tformstatetype.html + TFormState forms/tformstate.html + TModalResult forms/tmodalresult.html + PModalResult forms/pmodalresult.html + TFormHandlerType forms/tformhandlertype.html + TShowInTaskbar forms/tshowintaskbar.html + TPopupMode forms/tpopupmode.html + TCloseEvent forms/tcloseevent.html + TCloseQueryEvent forms/tclosequeryevent.html + TDropFilesEvent forms/tdropfilesevent.html + THelpEvent forms/thelpevent.html + TShortCutEvent forms/tshortcutevent.html + TModalDialogFinished forms/tmodaldialogfinished.html + TCustomFormClass forms/tcustomformclass.html + TFormClass forms/tformclass.html + THintWindowClass forms/thintwindowclass.html + PCursorRec forms/pcursorrec.html + TCursorRec forms/tcursorrec.html + TScreenFormEvent forms/tscreenformevent.html + TScreenControlEvent forms/tscreencontrolevent.html + TScreenNotification forms/tscreennotification.html + TMonitorDefaultTo forms/tmonitordefaultto.html + TQueryEndSessionEvent forms/tqueryendsessionevent.html + TExceptionEvent forms/texceptionevent.html + TGetHandleEvent forms/tgethandleevent.html + TIdleEvent forms/tidleevent.html + TOnUserInputEvent forms/tonuserinputevent.html + TDataEvent forms/tdataevent.html + TCMHintShow forms/tcmhintshow.html + TCMHintShowPause forms/tcmhintshowpause.html + TAppHintTimerType forms/tapphinttimertype.html + TShowHintEvent forms/tshowhintevent.html + THintInfoAtMouse forms/thintinfoatmouse.html + TApplicationFlag forms/tapplicationflag.html + TApplicationFlags forms/tapplicationflags.html + TApplicationNavigationOption forms/tapplicationnavigationoption.html + TApplicationNavigationOptions forms/tapplicationnavigationoptions.html + TApplicationHandlerType forms/tapplicationhandlertype.html + PAsyncCallQueueItem forms/pasynccallqueueitem.html + TAsyncCallQueueItem forms/tasynccallqueueitem.html + TAsyncCallQueue forms/tasynccallqueue.html + TAsyncCallQueues forms/tasynccallqueues.html + TApplicationType forms/tapplicationtype.html + TApplicationExceptionDlg forms/tapplicationexceptiondlg.html + TApplicationShowGlyphs forms/tapplicationshowglyphs.html + TTaskBarBehavior forms/ttaskbarbehavior.html + TFocusState forms/tfocusstate.html + TGetDesignerFormEvent forms/tgetdesignerformevent.html + TIsFormDesignFunction forms/tisformdesignfunction.html + TMessageBoxFunction forms/tmessageboxfunction.html + TCustomHintAction forms/tcustomhintaction.html + Hint actnlist/tcustomaction.hint.html + EScrollBar forms/escrollbar.html + TControlScrollBar forms/tcontrolscrollbar.html + FControl forms/tcontrolscrollbar.fcontrol.html + ControlHandle forms/tcontrolscrollbar.controlhandle.html + GetAutoScroll forms/tcontrolscrollbar.getautoscroll.html + HandleAllocated forms/tcontrolscrollbar.handleallocated.html + ControlUpdateScrollBars forms/tcontrolscrollbar.controlupdatescrollbars.html + InternalSetRange forms/tcontrolscrollbar.internalsetrange.html + ScrollHandler forms/tcontrolscrollbar.scrollhandler.html + UpdateScrollBar forms/tcontrolscrollbar.updatescrollbar.html + InvalidateScrollInfo forms/tcontrolscrollbar.invalidatescrollinfo.html + GetHorzScrollBar forms/tcontrolscrollbar.gethorzscrollbar.html + GetVertScrollBar forms/tcontrolscrollbar.getvertscrollbar.html + ScrollBarShouldBeVisible forms/tcontrolscrollbar.scrollbarshouldbevisible.html + Create forms/tcontrolscrollbar.create.html + Assign forms/tcontrolscrollbar.assign.html + IsScrollBarVisible forms/tcontrolscrollbar.isscrollbarvisible.html + ScrollPos forms/tcontrolscrollbar.scrollpos.html + Kind forms/tcontrolscrollbar.kind.html + GetOtherScrollBar forms/tcontrolscrollbar.getotherscrollbar.html + Size forms/tcontrolscrollbar.size.html + ClientSize forms/tcontrolscrollbar.clientsize.html + ClientSizeWithBar forms/tcontrolscrollbar.clientsizewithbar.html + ClientSizeWithoutBar forms/tcontrolscrollbar.clientsizewithoutbar.html + Increment forms/tcontrolscrollbar.increment.html + Page forms/tcontrolscrollbar.page.html + Smooth forms/tcontrolscrollbar.smooth.html + Position forms/tcontrolscrollbar.position.html + Range forms/tcontrolscrollbar.range.html + Tracking forms/tcontrolscrollbar.tracking.html + Visible forms/tcontrolscrollbar.visible.html + FPosition + GetIncrement + GetPage + GetPosition + GetRange + GetSize + GetSmooth + IsRangeStored + SetIncrement + SetPage + SetPosition + SetRange + SetSmooth + SetTracking + SetVisible + TScrollingWinControl forms/tscrollingwincontrol.html + AutoScrollEnabled forms/tscrollingwincontrol.autoscrollenabled.html + CalculateAutoRanges forms/tscrollingwincontrol.calculateautoranges.html + GetClientScrollOffset forms/tscrollingwincontrol.getclientscrolloffset.html + GetPreferredSizeClientFrame forms/tscrollingwincontrol.getpreferredsizeclientframe.html + WMSize forms/tscrollingwincontrol.wmsize.html + WMHScroll forms/tscrollingwincontrol.wmhscroll.html + WMVScroll forms/tscrollingwincontrol.wmvscroll.html + WMMouseWheel forms/tscrollingwincontrol.wmmousewheel.html + ComputeScrollbars forms/tscrollingwincontrol.computescrollbars.html + Loaded forms/tscrollingwincontrol.loaded.html + Resizing forms/tscrollingwincontrol.resizing.html + AutoScroll forms/tscrollingwincontrol.autoscroll.html + Destroy forms/tscrollingwincontrol.destroy.html + UpdateScrollbars forms/tscrollingwincontrol.updatescrollbars.html + ScrollBy forms/tscrollingwincontrol.scrollby.html + ScrollInView forms/tscrollingwincontrol.scrollinview.html + HorzScrollBar forms/tscrollingwincontrol.horzscrollbar.html + VertScrollBar forms/tscrollingwincontrol.vertscrollbar.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + AlignControls controls/twincontrol.aligncontrols.html + CreateWnd controls/twincontrol.createwnd.html + GetLogicalClientRect controls/tcontrol.getlogicalclientrect.html + DoOnResize controls/tcontrol.doonresize.html + SetAutoScroll + SetAutoSize controls/tcontrol.autosize.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + TScrollBox forms/tscrollbox.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + AutoScroll forms/tscrollingwincontrol.autoscroll.html + BorderSpacing controls/tcontrol.borderspacing.html + BiDiMode controls/tcontrol.bidimode.html + BorderStyle controls/twincontrol.borderstyle.html + ChildSizing controls/twincontrol.childsizing.html + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Constraints controls/tcontrol.constraints.html + DockSite controls/twincontrol.docksite.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Color controls/tcontrol.color.html + Font controls/tcontrol.font.html + ParentBiDiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnConstrainedResize controls/tcontrol.onconstrainedresize.html + OnDblClick controls/tcontrol.ondblclick.html + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUnDock controls/twincontrol.onundock.html + OnPaint controls/tcustomcontrol.onpaint.html + TCustomFrame forms/tcustomframe.html + Notification forms/tcustomframe.notification.html + SetParent forms/tcustomframe.setparent.html + GetChildren forms/tcustomframe.getchildren.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DefineProperties + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + TFrame forms/tframe.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoScroll forms/tscrollingwincontrol.autoscroll.html + AutoSize controls/tcontrol.autosize.html + BiDiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + ChildSizing controls/twincontrol.childsizing.html + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DockSite controls/twincontrol.docksite.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + LCLVersion lclversion/lcl_version.html + OnClick controls/tcontrol.onclick.html + OnConstrainedResize controls/tcontrol.onconstrainedresize.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUnDock controls/twincontrol.onundock.html + ParentBiDiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TCustomForm forms/tcustomform.html + WMActivate forms/tcustomform.wmactivate.html + WMCloseQuery forms/tcustomform.wmclosequery.html + WMHelp forms/tcustomform.wmhelp.html + WMMove forms/tcustomform.wmmove.html + WMShowWindow forms/tcustomform.wmshowwindow.html + WMSize forms/tcustomform.wmsize.html + WMWindowPosChanged forms/tcustomform.wmwindowposchanged.html + CMBiDiModeChanged forms/tcustomform.cmbidimodechanged.html + CMParentBiDiModeChanged forms/tcustomform.cmparentbidimodechanged.html + CMAppShowBtnGlyphChanged forms/tcustomform.cmappshowbtnglyphchanged.html + CMAppShowMenuGlyphChanged forms/tcustomform.cmappshowmenuglyphchanged.html + CMIconChanged forms/tcustomform.cmiconchanged.html + CMRelease forms/tcustomform.cmrelease.html + CMActivate forms/tcustomform.cmactivate.html + CMDeactivate forms/tcustomform.cmdeactivate.html + CMShowingChanged forms/tcustomform.cmshowingchanged.html + FActionLists forms/tcustomform.factionlists.html + DoShowWindow forms/tcustomform.doshowwindow.html + Activate forms/tcustomform.activate.html + ActiveChanged forms/tcustomform.activechanged.html + AdjustClientRect forms/tcustomform.adjustclientrect.html + BeginFormUpdate forms/tcustomform.beginformupdate.html + Deactivate forms/tcustomform.deactivate.html + DoClose forms/tcustomform.doclose.html + DoCreate forms/tcustomform.docreate.html + DoDestroy forms/tcustomform.dodestroy.html + DoHide forms/tcustomform.dohide.html + DoShow forms/tcustomform.doshow.html + EndFormUpdate forms/tcustomform.endformupdate.html + HandleCreateException forms/tcustomform.handlecreateexception.html + HandleDestroyException forms/tcustomform.handledestroyexception.html + HandleShowHideException forms/tcustomform.handleshowhideexception.html + Loaded forms/tcustomform.loaded.html + ChildHandlesCreated forms/tcustomform.childhandlescreated.html + Resizing forms/tcustomform.resizing.html + SetZOrder forms/tcustomform.setzorder.html + UpdateShowing forms/tcustomform.updateshowing.html + DoFirstShow forms/tcustomform.dofirstshow.html + UpdateWindowState forms/tcustomform.updatewindowstate.html + VisibleChanging forms/tcustomform.visiblechanging.html + VisibleChanged forms/tcustomform.visiblechanged.html + DoAddActionList forms/tcustomform.doaddactionlist.html + DoRemoveActionList forms/tcustomform.doremoveactionlist.html + BeginAutoDrag forms/tcustomform.beginautodrag.html + GetDefaultDockCaption forms/tcustomform.getdefaultdockcaption.html + CMActionExecute forms/tcustomform.cmactionexecute.html + CMActionUpdate forms/tcustomform.cmactionupdate.html + DoExecuteAction forms/tcustomform.doexecuteaction.html + DoUpdateAction forms/tcustomform.doupdateaction.html + UpdateActions forms/tcustomform.updateactions.html + ClientHandle forms/tcustomform.clienthandle.html + CreateNew forms/tcustomform.createnew.html + Destroy forms/tcustomform.destroy.html + AfterConstruction forms/tcustomform.afterconstruction.html + BeforeDestruction forms/tcustomform.beforedestruction.html + BigIconHandle forms/tcustomform.bigiconhandle.html + Close forms/tcustomform.close.html + CloseQuery forms/tcustomform.closequery.html + DefocusControl forms/tcustomform.defocuscontrol.html + EnsureVisible forms/tcustomform.ensurevisible.html + FocusControl forms/tcustomform.focuscontrol.html + GetFormImage forms/tcustomform.getformimage.html + GetRolesForControl forms/tcustomform.getrolesforcontrol.html + IntfDropFiles forms/tcustomform.intfdropfiles.html + IntfHelp forms/tcustomform.intfhelp.html + IsShortcut forms/tcustomform.isshortcut.html + MakeFullyVisible forms/tcustomform.makefullyvisible.html + AutoSizeDelayedHandle forms/tcustomform.autosizedelayedhandle.html + Release forms/tcustomform.release.html + CanFocus forms/tcustomform.canfocus.html + SetFocusedControl forms/tcustomform.setfocusedcontrol.html + SetRestoredBounds forms/tcustomform.setrestoredbounds.html + ShowModal forms/tcustomform.showmodal.html + ShowOnTop forms/tcustomform.showontop.html + SmallIconHandle forms/tcustomform.smalliconhandle.html + GetChildren forms/tcustomform.getchildren.html + WantChildKey forms/tcustomform.wantchildkey.html + AddHandlerFirstShow forms/tcustomform.addhandlerfirstshow.html + RemoveHandlerFirstShow forms/tcustomform.removehandlerfirstshow.html + AddHandlerClose forms/tcustomform.addhandlerclose.html + RemoveHandlerClose forms/tcustomform.removehandlerclose.html + AddHandlerCreate forms/tcustomform.addhandlercreate.html + RemoveHandlerCreate forms/tcustomform.removehandlercreate.html + ActiveMDIChild forms/tcustomform.activemdichild.html + Active forms/tcustomform.active.html + ActiveControl forms/tcustomform.activecontrol.html + ActiveDefaultControl forms/tcustomform.activedefaultcontrol.html + AllowDropFiles forms/tcustomform.allowdropfiles.html + AlphaBlend forms/tcustomform.alphablend.html + AlphaBlendValue forms/tcustomform.alphablendvalue.html + AutoScroll forms/tcustomform.autoscroll.html + BorderIcons forms/tcustomform.bordericons.html + BorderStyle forms/tcustomform.borderstyle.html + CancelControl forms/tcustomform.cancelcontrol.html + DefaultControl forms/tcustomform.defaultcontrol.html + DefaultMonitor forms/tcustomform.defaultmonitor.html + Designer forms/tcustomform.designer.html + DesignTimeDPI forms/tcustomform.designtimedpi.html + FormState forms/tcustomform.formstate.html + FormStyle forms/tcustomform.formstyle.html + HelpFile forms/tcustomform.helpfile.html + Icon forms/tcustomform.icon.html + KeyPreview forms/tcustomform.keypreview.html + MDIChildren forms/tcustomform.mdichildren.html + Menu forms/tcustomform.menu.html + ModalResult forms/tcustomform.modalresult.html + Monitor forms/tcustomform.monitor.html + PopupMode forms/tcustomform.popupmode.html + PopupParent forms/tcustomform.popupparent.html + OnActivate forms/tcustomform.onactivate.html + OnClose forms/tcustomform.onclose.html + OnCloseQuery forms/tcustomform.onclosequery.html + OnCreate forms/tcustomform.oncreate.html + OnDeactivate forms/tcustomform.ondeactivate.html + OnDestroy forms/tcustomform.ondestroy.html + OnDropFiles forms/tcustomform.ondropfiles.html + OnHelp forms/tcustomform.onhelp.html + OnHide forms/tcustomform.onhide.html + OnShortcut forms/tcustomform.onshortcut.html + OnShow forms/tcustomform.onshow.html + OnShowModalFinished forms/tcustomform.onshowmodalfinished.html + OnWindowStateChange forms/tcustomform.onwindowstatechange.html + PixelsPerInch forms/tcustomform.pixelsperinch.html + Position forms/tcustomform.position.html + RestoredLeft forms/tcustomform.restoredleft.html + RestoredTop forms/tcustomform.restoredtop.html + RestoredWidth forms/tcustomform.restoredwidth.html + RestoredHeight forms/tcustomform.restoredheight.html + ShowInTaskBar forms/tcustomform.showintaskbar.html + WindowState forms/tcustomform.windowstate.html + FFormBorderStyle + FFormState + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + ColorIsStored controls/tcontrol.color.html + CreateParams controls/twincontrol.createparams.html + CreateWnd controls/twincontrol.createwnd.html + InitializeWnd + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + PaintWindow controls/twincontrol.paintwindow.html + RequestAlign controls/tcontrol.requestalign.html + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + SetParent controls/tcontrol.parent.html + MoveToDefaultPosition + SetVisible + AllAutoSized controls/twincontrol.allautosized.html + WndProc controls/tcontrol.wndproc.html + VisibleIsStored + DoSendBoundsToInterface controls/twincontrol.dosendboundstointerface.html + DoAutoSize controls/tcontrol.doautosize.html + SetAutoSize controls/tcontrol.autosize.html + SetAutoScroll + DoDock controls/tcontrol.dodock.html + GetFloating controls/tcontrol.getfloating.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + DestroyWnd controls/twincontrol.destroywnd.html + FormIsUpdating controls/tcontrol.formisupdating.html + Hide controls/tcontrol.hide.html + GetPreferredSize controls/tcontrol.getpreferredsize.html + SetFocus controls/twincontrol.setfocus.html + Show controls/tcontrol.show.html + RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html + GetMDIChildren + MDIChildCount + Dock controls/tcontrol.dock.html + UpdateDockCaption controls/twincontrol.updatedockcaption.html + Caption controls/tcontrol.caption.html + Color controls/tcontrol.color.html + OnResize controls/tcontrol.onresize.html + ParentFont controls/tcontrol.parentfont.html + Visible controls/tcontrol.visible.html + TForm forms/tform.html + Cascade forms/tform.cascade.html + Next forms/tform.next.html + Previous forms/tform.previous.html + Tile forms/tform.tile.html + LCLVersion forms/tform.lclversion.html + CreateWnd controls/twincontrol.createwnd.html + Loaded forms/tcustomform.loaded.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + ClientHandle + DockManager controls/twincontrol.dockmanager.html + Action controls/tcontrol.action.html + ActiveControl + Align controls/tcontrol.align.html + AllowDropFiles + AlphaBlend + AlphaBlendValue + Anchors controls/tcontrol.anchors.html + AutoScroll + AutoSize controls/tcontrol.autosize.html + BiDiMode controls/tcontrol.bidimode.html + BorderIcons + BorderStyle + BorderWidth controls/twincontrol.borderwidth.html + Caption controls/tcontrol.caption.html + ChildSizing controls/twincontrol.childsizing.html + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DefaultMonitor + DockSite controls/twincontrol.docksite.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + FormStyle + HelpFile + Icon + KeyPreview + Menu + OnActivate + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnClose + OnCloseQuery + OnContextPopup + OnCreate + OnDblClick controls/tcontrol.ondblclick.html + OnDeactivate + OnDestroy + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDropFiles + OnEndDock controls/tcontrol.onenddock.html + OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html + OnHelp + OnHide + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnPaint controls/tcustomcontrol.onpaint.html + OnResize controls/tcontrol.onresize.html + OnShortCut + OnShow + OnShowHint controls/tcontrol.onshowhint.html + OnStartDock controls/tcontrol.onstartdock.html + OnUnDock controls/twincontrol.onundock.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + OnWindowStateChange + ParentBiDiMode controls/tcontrol.parentbidimode.html + ParentFont controls/tcontrol.parentfont.html + PixelsPerInch + PopupMenu controls/tcontrol.popupmenu.html + PopupMode + PopupParent + Position + SessionProperties controls/tcontrol.sessionproperties.html + ShowHint controls/tcontrol.showhint.html + ShowInTaskBar + UseDockManager controls/twincontrol.usedockmanager.html + Visible controls/tcontrol.visible.html + WindowState + TCustomDockForm forms/tcustomdockform.html + DoAddDockClient controls/twincontrol.doadddockclient.html + DoRemoveDockClient controls/twincontrol.doremovedockclient.html + GetSiteInfo controls/twincontrol.getsiteinfo.html + Loaded forms/tcustomform.loaded.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + AutoScroll forms/tscrollingwincontrol.autoscroll.html + BorderStyle forms/tcustomform.borderstyle.html + FormStyle forms/tcustomform.formstyle.html + PixelsPerInch forms/tcustomform.pixelsperinch.html + THintWindow forms/thintwindow.html + WMNCHitTest forms/thintwindow.wmnchittest.html + ActivateSub forms/thintwindow.activatesub.html + UpdateRegion forms/thintwindow.updateregion.html + SetColor forms/thintwindow.setcolor.html + UseThemes forms/thintwindow.usethemes.html + Destroy forms/thintwindow.destroy.html + ActivateHint forms/thintwindow.activatehint.html + ActivateWithBounds forms/thintwindow.activatewithbounds.html + ActivateHintData forms/thintwindow.activatehintdata.html + CalcHintRect forms/thintwindow.calchintrect.html + OffsetHintRect forms/thintwindow.offsethintrect.html + IsHintMsg forms/thintwindow.ishintmsg.html + ReleaseHandle forms/thintwindow.releasehandle.html + OnMouseDown forms/thintwindow.onmousedown.html + Alignment forms/thintwindow.alignment.html + HintRect forms/thintwindow.hintrect.html + HintRectAdjust forms/thintwindow.hintrectadjust.html + HintData forms/thintwindow.hintdata.html + AutoHide forms/thintwindow.autohide.html + HideInterval forms/thintwindow.hideinterval.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DoShowWindow forms/tcustomform.doshowwindow.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + InitializeWnd + Paint controls/tcustomcontrol.paint.html + SetBounds + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + BiDiMode controls/tcontrol.bidimode.html + THintWindowRendered forms/thintwindowrendered.html + Create + Destroy forms/thintwindow.destroy.html + ActivateRendered forms/thintwindowrendered.activaterendered.html + TMonitor forms/tmonitor.html + Handle forms/tmonitor.handle.html + MonitorNum forms/tmonitor.monitornum.html + Left forms/tmonitor.left.html + Height forms/tmonitor.height.html + Top forms/tmonitor.top.html + Width forms/tmonitor.width.html + BoundsRect forms/tmonitor.boundsrect.html + WorkareaRect forms/tmonitor.workarearect.html + Primary forms/tmonitor.primary.html + TMonitorList forms/tmonitorlist.html + Notify forms/tmonitorlist.notify.html + Items forms/tmonitorlist.items.html + TScreen forms/tscreen.html + Destroy forms/tscreen.destroy.html + FormIndex forms/tscreen.formindex.html + CustomFormZIndex forms/tscreen.customformzindex.html + MoveFormToFocusFront forms/tscreen.moveformtofocusfront.html + MoveFormToZFront forms/tscreen.moveformtozfront.html + GetCurrentModalForm forms/tscreen.getcurrentmodalform.html + GetCurrentModalFormZIndex forms/tscreen.getcurrentmodalformzindex.html + CustomFormBelongsToActiveGroup forms/tscreen.customformbelongstoactivegroup.html + FindNonDesignerForm forms/tscreen.findnondesignerform.html + FindForm forms/tscreen.findform.html + FindNonDesignerDataModule forms/tscreen.findnondesignerdatamodule.html + FindDataModule forms/tscreen.finddatamodule.html + UpdateMonitors forms/tscreen.updatemonitors.html + UpdateScreen forms/tscreen.updatescreen.html + AddHandlerFormAdded forms/tscreen.addhandlerformadded.html + RemoveHandlerFormAdded forms/tscreen.removehandlerformadded.html + AddHandlerRemoveForm forms/tscreen.addhandlerremoveform.html + RemoveHandlerRemoveForm forms/tscreen.removehandlerremoveform.html + AddHandlerActiveControlChanged forms/tscreen.addhandleractivecontrolchanged.html + RemoveHandlerActiveControlChanged forms/tscreen.removehandleractivecontrolchanged.html + AddHandlerActiveFormChanged forms/tscreen.addhandleractiveformchanged.html + RemoveHandlerActiveFormChanged forms/tscreen.removehandleractiveformchanged.html + AddHandlerFormVisibleChanged forms/tscreen.addhandlerformvisiblechanged.html + RemoveHandlerFormVisibleChanged forms/tscreen.removehandlerformvisiblechanged.html + DisableForms forms/tscreen.disableforms.html + EnableForms forms/tscreen.enableforms.html + MonitorFromPoint forms/tscreen.monitorfrompoint.html + MonitorFromRect forms/tscreen.monitorfromrect.html + MonitorFromWindow forms/tscreen.monitorfromwindow.html + ActiveControl forms/tscreen.activecontrol.html + ActiveCustomForm forms/tscreen.activecustomform.html + ActiveForm forms/tscreen.activeform.html + Cursor forms/tscreen.cursor.html + Cursors forms/tscreen.cursors.html + CustomFormCount forms/tscreen.customformcount.html + CustomForms forms/tscreen.customforms.html + CustomFormZOrderCount forms/tscreen.customformzordercount.html + CustomFormsZOrdered forms/tscreen.customformszordered.html + DesktopRect forms/tscreen.desktoprect.html + FocusedForm forms/tscreen.focusedform.html + Forms forms/tscreen.forms.html + DataModuleCount forms/tscreen.datamodulecount.html + DataModules forms/tscreen.datamodules.html + HintFont forms/tscreen.hintfont.html + IconFont forms/tscreen.iconfont.html + MenuFont forms/tscreen.menufont.html + SystemFont forms/tscreen.systemfont.html + Fonts forms/tscreen.fonts.html + Height forms/tscreen.height.html + Monitors forms/tscreen.monitors.html + PixelsPerInch forms/tscreen.pixelsperinch.html + PrimaryMonitor forms/tscreen.primarymonitor.html + Width forms/tscreen.width.html + WorkAreaRect forms/tscreen.workarearect.html + OnActiveControlChange forms/tscreen.onactivecontrolchange.html + OnActiveFormChange forms/tscreen.onactiveformchange.html + GetHintFont + GetIconFont + GetMenuFont + GetSystemFont + Create ms-its:rtl.chm::/classes/tcomponent.create.html + CustomFormIndex + RemoveAllHandlersOfObject lclclasses/tlclcomponent.removeallhandlersofobject.html + DesktopLeft + DesktopTop + DesktopHeight + DesktopWidth + FormCount + MonitorCount + WorkAreaHeight + WorkAreaLeft + WorkAreaTop + WorkAreaWidth + TApplication forms/tapplication.html + GetConsoleApplication forms/tapplication.getconsoleapplication.html + NotifyIdleHandler forms/tapplication.notifyidlehandler.html + NotifyIdleEndHandler forms/tapplication.notifyidleendhandler.html + NotifyActivateHandler forms/tapplication.notifyactivatehandler.html + NotifyDeactivateHandler forms/tapplication.notifydeactivatehandler.html + NotifyCustomForms forms/tapplication.notifycustomforms.html + IsHintMsg forms/tapplication.ishintmsg.html + DoOnHelp forms/tapplication.doonhelp.html + DoOnMouseMove forms/tapplication.doonmousemove.html + ShowHintWindow forms/tapplication.showhintwindow.html + OnHintTimer forms/tapplication.onhinttimer.html + StartHintTimer forms/tapplication.starthinttimer.html + UpdateVisible forms/tapplication.updatevisible.html + DoIdleActions forms/tapplication.doidleactions.html + MenuPopupHandler forms/tapplication.menupopuphandler.html + ProcessAsyncCallQueue forms/tapplication.processasynccallqueue.html + ReleaseComponents forms/tapplication.releasecomponents.html + DoBeforeFinalization forms/tapplication.dobeforefinalization.html + GetParams forms/tapplication.getparams.html + Destroy forms/tapplication.destroy.html + ActivateHint forms/tapplication.activatehint.html + GetControlAtMouse forms/tapplication.getcontrolatmouse.html + ControlDestroyed forms/tapplication.controldestroyed.html + BigIconHandle forms/tapplication.bigiconhandle.html + SmallIconHandle forms/tapplication.smalliconhandle.html + BringToFront forms/tapplication.bringtofront.html + CreateForm forms/tapplication.createform.html + UpdateMainForm forms/tapplication.updatemainform.html + QueueAsyncCall forms/tapplication.queueasynccall.html + RemoveAsyncCalls forms/tapplication.removeasynccalls.html + ReleaseComponent forms/tapplication.releasecomponent.html + ExecuteAction forms/tapplication.executeaction.html + UpdateAction forms/tapplication.updateaction.html + HandleException forms/tapplication.handleexception.html + HandleMessage forms/tapplication.handlemessage.html + HelpCommand forms/tapplication.helpcommand.html + HelpContext forms/tapplication.helpcontext.html + HelpKeyword forms/tapplication.helpkeyword.html + ShowHelpForObject forms/tapplication.showhelpforobject.html + RemoveStayOnTop forms/tapplication.removestayontop.html + RestoreStayOnTop forms/tapplication.restorestayontop.html + IsWaiting forms/tapplication.iswaiting.html + CancelHint forms/tapplication.cancelhint.html + HideHint forms/tapplication.hidehint.html + HintMouseMessage forms/tapplication.hintmousemessage.html + Initialize forms/tapplication.initialize.html + MessageBox forms/tapplication.messagebox.html + Minimize forms/tapplication.minimize.html + ModalStarted forms/tapplication.modalstarted.html + ModalFinished forms/tapplication.modalfinished.html + Restore forms/tapplication.restore.html + Notification forms/tapplication.notification.html + ProcessMessages forms/tapplication.processmessages.html + Idle forms/tapplication.idle.html + DisableIdleHandler forms/tapplication.disableidlehandler.html + EnableIdleHandler forms/tapplication.enableidlehandler.html + NotifyUserInputHandler forms/tapplication.notifyuserinputhandler.html + NotifyKeyDownBeforeHandler forms/tapplication.notifykeydownbeforehandler.html + NotifyKeyDownHandler forms/tapplication.notifykeydownhandler.html + ControlKeyDown forms/tapplication.controlkeydown.html + ControlKeyUp forms/tapplication.controlkeyup.html + AddOnIdleHandler forms/tapplication.addonidlehandler.html + RemoveOnIdleHandler forms/tapplication.removeonidlehandler.html + AddOnIdleEndHandler forms/tapplication.addonidleendhandler.html + RemoveOnIdleEndHandler forms/tapplication.removeonidleendhandler.html + AddOnUserInputHandler forms/tapplication.addonuserinputhandler.html + RemoveOnUserInputHandler forms/tapplication.removeonuserinputhandler.html + AddOnKeyDownBeforeHandler forms/tapplication.addonkeydownbeforehandler.html + RemoveOnKeyDownBeforeHandler forms/tapplication.removeonkeydownbeforehandler.html + AddOnKeyDownHandler forms/tapplication.addonkeydownhandler.html + RemoveOnKeyDownHandler forms/tapplication.removeonkeydownhandler.html + AddOnActivateHandler forms/tapplication.addonactivatehandler.html + RemoveOnActivateHandler forms/tapplication.removeonactivatehandler.html + AddOnDeactivateHandler forms/tapplication.addondeactivatehandler.html + RemoveOnDeactivateHandler forms/tapplication.removeondeactivatehandler.html + AddOnExceptionHandler forms/tapplication.addonexceptionhandler.html + RemoveOnExceptionHandler forms/tapplication.removeonexceptionhandler.html + AddOnEndSessionHandler forms/tapplication.addonendsessionhandler.html + RemoveOnEndSessionHandler forms/tapplication.removeonendsessionhandler.html + AddOnQueryEndSessionHandler forms/tapplication.addonqueryendsessionhandler.html + RemoveOnQueryEndSessionHandler forms/tapplication.removeonqueryendsessionhandler.html + AddOnMinimizeHandler forms/tapplication.addonminimizehandler.html + RemoveOnMinimizeHandler forms/tapplication.removeonminimizehandler.html + AddOnModalBeginHandler forms/tapplication.addonmodalbeginhandler.html + RemoveOnModalBeginHandler forms/tapplication.removeonmodalbeginhandler.html + AddOnModalEndHandler forms/tapplication.addonmodalendhandler.html + RemoveOnModalEndHandler forms/tapplication.removeonmodalendhandler.html + AddOnRestoreHandler forms/tapplication.addonrestorehandler.html + RemoveOnRestoreHandler forms/tapplication.removeonrestorehandler.html + AddOnDropFilesHandler forms/tapplication.addondropfileshandler.html + RemoveOnDropFilesHandler forms/tapplication.removeondropfileshandler.html + AddOnHelpHandler forms/tapplication.addonhelphandler.html + RemoveOnHelpHandler forms/tapplication.removeonhelphandler.html + AddOnHintHandler forms/tapplication.addonhinthandler.html + RemoveOnHintHandler forms/tapplication.removeonhinthandler.html + AddOnShowHintHandler forms/tapplication.addonshowhinthandler.html + RemoveOnShowHintHandler forms/tapplication.removeonshowhinthandler.html + AddOnGetMainFormHandleHandler forms/tapplication.addongetmainformhandlehandler.html + RemoveOnGetMainFormHandleHandler forms/tapplication.removeongetmainformhandlehandler.html + RemoveAllHandlersOfObject forms/tapplication.removeallhandlersofobject.html + DoBeforeMouseMessage forms/tapplication.dobeforemousemessage.html + IsShortcut forms/tapplication.isshortcut.html + IntfQueryEndSession forms/tapplication.intfqueryendsession.html + IntfEndSession forms/tapplication.intfendsession.html + IntfAppActivate forms/tapplication.intfappactivate.html + IntfAppDeactivate forms/tapplication.intfappdeactivate.html + IntfAppMinimize forms/tapplication.intfappminimize.html + IntfAppRestore forms/tapplication.intfapprestore.html + IntfDropFiles forms/tapplication.intfdropfiles.html + IntfSettingsChange forms/tapplication.intfsettingschange.html + IntfThemeOptionChange forms/tapplication.intfthemeoptionchange.html + IsRightToLeft forms/tapplication.isrighttoleft.html + IsRTLLang forms/tapplication.isrtllang.html + Direction forms/tapplication.direction.html + DoArrowKey forms/tapplication.doarrowkey.html + DoTabKey forms/tapplication.dotabkey.html + DoEscapeKey forms/tapplication.doescapekey.html + DoReturnKey forms/tapplication.doreturnkey.html + Active forms/tapplication.active.html + ApplicationType forms/tapplication.applicationtype.html + BidiMode forms/tapplication.bidimode.html + CaptureExceptions forms/tapplication.captureexceptions.html + ExtendedKeysSupport forms/tapplication.extendedkeyssupport.html + ExceptionDialog forms/tapplication.exceptiondialog.html + FindGlobalComponentEnabled forms/tapplication.findglobalcomponentenabled.html + Flags forms/tapplication.flags.html + Hint forms/tapplication.hint.html + HintColor forms/tapplication.hintcolor.html + HintHidePause forms/tapplication.hinthidepause.html + HintHidePausePerChar forms/tapplication.hinthidepauseperchar.html + HintPause forms/tapplication.hintpause.html + HintShortCuts forms/tapplication.hintshortcuts.html + HintShortPause forms/tapplication.hintshortpause.html + Icon forms/tapplication.icon.html + LayoutAdjustmentPolicy forms/tapplication.layoutadjustmentpolicy.html + Navigation forms/tapplication.navigation.html + MainForm forms/tapplication.mainform.html + MainFormHandle forms/tapplication.mainformhandle.html + MainFormOnTaskBar forms/tapplication.mainformontaskbar.html + ModalLevel forms/tapplication.modallevel.html + MoveFormFocusToChildren forms/tapplication.moveformfocustochildren.html + MouseControl forms/tapplication.mousecontrol.html + TaskBarBehavior forms/tapplication.taskbarbehavior.html + UpdateFormatSettings forms/tapplication.updateformatsettings.html + OnActionExecute forms/tapplication.onactionexecute.html + OnActionUpdate forms/tapplication.onactionupdate.html + OnActivate forms/tapplication.onactivate.html + OnDeactivate forms/tapplication.ondeactivate.html + OnGetMainFormHandle forms/tapplication.ongetmainformhandle.html + OnIdle forms/tapplication.onidle.html + OnIdleEnd forms/tapplication.onidleend.html + OnEndSession forms/tapplication.onendsession.html + OnQueryEndSession forms/tapplication.onqueryendsession.html + OnMinimize forms/tapplication.onminimize.html + OnMessageDialogFinished forms/tapplication.onmessagedialogfinished.html + OnModalBegin forms/tapplication.onmodalbegin.html + OnModalEnd forms/tapplication.onmodalend.html + OnRestore forms/tapplication.onrestore.html + OnDropFiles forms/tapplication.ondropfiles.html + OnHelp forms/tapplication.onhelp.html + OnHint forms/tapplication.onhint.html + OnShortcut forms/tapplication.onshortcut.html + OnShowHint forms/tapplication.onshowhint.html + OnUserInput forms/tapplication.onuserinput.html + OnDestroy forms/tapplication.ondestroy.html + ShowButtonGlyphs forms/tapplication.showbuttonglyphs.html + ShowMenuGlyphs forms/tapplication.showmenuglyphs.html + ShowHint forms/tapplication.showhint.html + ShowMainForm forms/tapplication.showmainform.html + SetTitle + FreeComponent + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Run ms-its:fcl.chm::/custapp/tcustomapplication.run.html + ShowException ms-its:fcl.chm::/custapp/tcustomapplication.showexception.html + Terminate ms-its:fcl.chm::/custapp/tcustomapplication.terminate.html + Title ms-its:fcl.chm::/custapp/tcustomapplication.title.html + TApplicationProperties forms/tapplicationproperties.html + SetOnActivate forms/tapplicationproperties.setonactivate.html + SetOnDeactivate forms/tapplicationproperties.setondeactivate.html + Create forms/tapplicationproperties.create.html + Destroy forms/tapplicationproperties.destroy.html + ExceptionDialog forms/tapplicationproperties.exceptiondialog.html + OnActivate forms/tapplicationproperties.onactivate.html + OnDeactivate forms/tapplicationproperties.ondeactivate.html + SetCaptureExceptions + SetHelpFile + SetHint + SetHintColor + SetHintHidePause + SetHintPause + SetHintShortCuts + SetHintShortPause + SetShowButtonGlyphs + SetShowMenuGlyphs + SetShowHint + SetShowMainForm + SetTitle + SetOnException + SetOnGetMainFormHandle + SetOnIdle + SetOnIdleEnd + SetOnEndSession + SetOnQueryEndSession + SetOnMinimize + SetOnModalBegin + SetOnModalEnd + SetOnRestore + SetOnDropFiles + SetOnHelp + SetOnHint + SetOnShowHint + SetOnUserInput + CaptureExceptions + HelpFile + Hint + HintColor + HintHidePause + HintPause + HintShortCuts + HintShortPause + ShowButtonGlyphs + ShowMenuGlyphs + ShowHint + ShowMainForm + Title + OnException + OnGetMainFormHandle + OnIdle + OnIdleEnd + OnEndSession + OnQueryEndSession + OnMinimize + OnModalBegin + OnModalEnd + OnRestore + OnDropFiles + OnHelp + OnHint + OnShowHint + OnUserInput + TIDesigner forms/tidesigner.html + FLookupRoot forms/tidesigner.flookuproot.html + FDefaultFormBoundsValid forms/tidesigner.fdefaultformboundsvalid.html + IsDesignMsg forms/tidesigner.isdesignmsg.html + Modified forms/tidesigner.modified.html + Notification forms/tidesigner.notification.html + PaintGrid forms/tidesigner.paintgrid.html + ValidateRename forms/tidesigner.validaterename.html + GetShiftState forms/tidesigner.getshiftstate.html + SelectOnlyThisComponent forms/tidesigner.selectonlythiscomponent.html + UniqueName forms/tidesigner.uniquename.html + PrepareFreeDesigner forms/tidesigner.preparefreedesigner.html + LookupRoot forms/tidesigner.lookuproot.html + DefaultFormBoundsValid forms/tidesigner.defaultformboundsvalid.html + TFormPropertyStorage forms/tformpropertystorage.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html + KeysToShiftState forms/keystoshiftstate.html + KeyDataToShiftState forms/keydatatoshiftstate.html + ShiftStateToKeys forms/shiftstatetokeys.html + WindowStateToStr forms/windowstatetostr.html + StrToWindowState forms/strtowindowstate.html + dbgs forms/dbgs.html + SaveFocusState forms/savefocusstate.html + RestoreFocusState forms/restorefocusstate.html + GetParentForm forms/getparentform.html + GetFirstParentForm forms/getfirstparentform.html + ValidParentForm forms/validparentform.html + GetDesignerForm forms/getdesignerform.html + FindRootDesigner forms/findrootdesigner.html + IsAccel forms/isaccel.html + NotifyApplicationUserInput forms/notifyapplicationuserinput.html + GetShortHint forms/getshorthint.html + GetLongHint forms/getlonghint.html + CreateWidgetset forms/createwidgetset.html + FreeWidgetSet forms/freewidgetset.html + Register forms/register.html + OnGetDesignerForm forms/ongetdesignerform.html + IsFormDesign forms/isformdesign.html + Application forms/application.html + Screen forms/screen.html + ExceptionObject forms/exceptionobject.html + HintWindowClass forms/hintwindowclass.html + RequireDerivedFormResource forms/requirederivedformresource.html + MessageBoxFunction forms/messageboxfunction.html + CustomTimer customtimer/index.html + TCustomTimer customtimer/tcustomtimer.html + SetEnabled customtimer/tcustomtimer.setenabled.html + SetInterval customtimer/tcustomtimer.setinterval.html + SetOnTimer customtimer/tcustomtimer.setontimer.html + DoOnTimer customtimer/tcustomtimer.doontimer.html + UpdateTimer customtimer/tcustomtimer.updatetimer.html + KillTimer customtimer/tcustomtimer.killtimer.html + Create customtimer/tcustomtimer.create.html + Destroy customtimer/tcustomtimer.destroy.html + Enabled customtimer/tcustomtimer.enabled.html + Interval customtimer/tcustomtimer.interval.html + OnTimer customtimer/tcustomtimer.ontimer.html + OnStartTimer customtimer/tcustomtimer.onstarttimer.html + OnStopTimer customtimer/tcustomtimer.onstoptimer.html + Loaded + Clipbrd clipbrd/index.html + TClipboardData clipbrd/tclipboarddata.html + TClipboard clipbrd/tclipboard.html + AddFormat clipbrd/tclipboard.addformat.html + Clear clipbrd/tclipboard.clear.html + Close clipbrd/tclipboard.close.html + Create clipbrd/tclipboard.create.html + FindPictureFormatID clipbrd/tclipboard.findpictureformatid.html + FindFormatID clipbrd/tclipboard.findformatid.html + GetComponent clipbrd/tclipboard.getcomponent.html + GetComponentAsText clipbrd/tclipboard.getcomponentastext.html + GetFormat clipbrd/tclipboard.getformat.html + SupportedFormats clipbrd/tclipboard.supportedformats.html + GetTextBuf clipbrd/tclipboard.gettextbuf.html + HasFormat clipbrd/tclipboard.hasformat.html + HasFormatName clipbrd/tclipboard.hasformatname.html + HasPictureFormat clipbrd/tclipboard.haspictureformat.html + Open clipbrd/tclipboard.open.html + SetComponent clipbrd/tclipboard.setcomponent.html + SetComponentAsText clipbrd/tclipboard.setcomponentastext.html + SetFormat clipbrd/tclipboard.setformat.html + SetSupportedFormats clipbrd/tclipboard.setsupportedformats.html + AsText clipbrd/tclipboard.astext.html + ClipboardType clipbrd/tclipboard.clipboardtype.html + FormatCount clipbrd/tclipboard.formatcount.html + Formats clipbrd/tclipboard.formats.html + OnRequest clipbrd/tclipboard.onrequest.html + Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + AssignTo + Destroy ms-its:rtl.chm::/classes/tpersistent.destroy.html + SetTextBuf ms-its:rtl.chm::/system/settextbuf.html + CF_Text clipbrd/cf_text.html + CF_Bitmap clipbrd/cf_bitmap.html + CF_Picture clipbrd/cf_picture.html + CF_MetaFilePict clipbrd/cf_metafilepict.html + CF_Object clipbrd/cf_object.html + CF_Component clipbrd/cf_component.html + Clipboard clipbrd/clipboard.html + SetClipboard clipbrd/setclipboard.html + PrimarySelection clipbrd/primaryselection.html + SecondarySelection clipbrd/secondaryselection.html + FreeAllClipboards clipbrd/freeallclipboards.html + RegisterClipboardFormat clipbrd/registerclipboardformat.html + HelpIntfs helpintfs/index.html + TShowHelpResult helpintfs/tshowhelpresult.html + TShowHelpResults helpintfs/tshowhelpresults.html + THelpDatabaseID helpintfs/thelpdatabaseid.html + EHelpSystemException helpintfs/ehelpsystemexception.html + THelpQuery helpintfs/thelpquery.html + Create helpintfs/thelpquery.create.html + HelpDatabaseID helpintfs/thelpquery.helpdatabaseid.html + THelpQueryTOC helpintfs/thelpquerytoc.html + THelpQueryContext helpintfs/thelpquerycontext.html + Create helpintfs/thelpquerycontext.create.html + Context helpintfs/thelpquerycontext.context.html + THelpQueryKeyword helpintfs/thelpquerykeyword.html + Create helpintfs/thelpquerykeyword.create.html + Keyword helpintfs/thelpquerykeyword.keyword.html + THelpQueryDirective helpintfs/thelpquerydirective.html + Create helpintfs/thelpquery.create.html + Directive helpintfs/thelpquerydirective.directive.html + THelpQuerySourcePosition helpintfs/thelpquerysourceposition.html + Create helpintfs/thelpquerysourceposition.create.html + Filename helpintfs/thelpquerysourceposition.filename.html + SourcePosition helpintfs/thelpquerysourceposition.sourceposition.html + THelpQueryPascalContexts helpintfs/thelpquerypascalcontexts.html + Create helpintfs/thelpquerypascalcontexts.create.html + ListOfPascalHelpContextList helpintfs/thelpquerypascalcontexts.listofpascalhelpcontextlist.html + THelpQueryMessage helpintfs/thelpquerymessage.html + Create helpintfs/thelpquerymessage.create.html + Destroy helpintfs/thelpquerymessage.destroy.html + WholeMessage helpintfs/thelpquerymessage.wholemessage.html + MessageParts helpintfs/thelpquerymessage.messageparts.html + THelpQueryClass helpintfs/thelpqueryclass.html + Create helpintfs/thelpqueryclass.create.html + TheClass helpintfs/thelpqueryclass.theclass.html + THelpManager helpintfs/thelpmanager.html + DoHelpNotFound helpintfs/thelpmanager.dohelpnotfound.html + ShowTableOfContents helpintfs/thelpmanager.showtableofcontents.html + ShowError helpintfs/thelpmanager.showerror.html + ShowHelpForQuery helpintfs/thelpmanager.showhelpforquery.html + ShowHelpForContext helpintfs/thelpmanager.showhelpforcontext.html + ShowHelpForKeyword helpintfs/thelpmanager.showhelpforkeyword.html + ShowHelpForDirective helpintfs/thelpmanager.showhelpfordirective.html + ShowHelpForPascalContexts helpintfs/thelpmanager.showhelpforpascalcontexts.html + ShowHelpForSourcePosition helpintfs/thelpmanager.showhelpforsourceposition.html + ShowHelpForMessageLine helpintfs/thelpmanager.showhelpformessageline.html + ShowHelpForClass helpintfs/thelpmanager.showhelpforclass.html + ShowHelpFile helpintfs/thelpmanager.showhelpfile.html + ShowHelp helpintfs/thelpmanager.showhelp.html + ShowTableOfContents helpintfs/showtableofcontents.html + ShowHelpOrErrorForContext helpintfs/showhelporerrorforcontext.html + ShowHelpForContext helpintfs/showhelpforcontext.html + ShowHelpOrErrorForKeyword helpintfs/showhelporerrorforkeyword.html + ShowHelpForKeyword helpintfs/showhelpforkeyword.html + ShowHelpForDirective helpintfs/showhelpfordirective.html + ShowHelpForPascalContexts helpintfs/showhelpforpascalcontexts.html + ShowHelpOrErrorForSourcePosition helpintfs/showhelporerrorforsourceposition.html + ShowHelpForMessageLine helpintfs/showhelpformessageline.html + ShowHelpOrErrorForMessageLine helpintfs/showhelporerrorformessageline.html + ShowHelpFile helpintfs/showhelpfile.html + ShowHelpFileOrError helpintfs/showhelpfileorerror.html + ShowHelp helpintfs/showhelp.html + ShowHelpOrError helpintfs/showhelporerror.html + dbgs helpintfs/dbgs.html + HelpManager helpintfs/helpmanager.html + ColorBox colorbox/index.html + cDefaultColorRectWidth colorbox/cdefaultcolorrectwidth.html + cDefaultColorRectOffset colorbox/cdefaultcolorrectoffset.html + TColorBoxStyles colorbox/tcolorboxstyles.html + TColorBoxStyle colorbox/tcolorboxstyle.html + TGetColorsEvent colorbox/tgetcolorsevent.html + TLBGetColorsEvent colorbox/tlbgetcolorsevent.html + TCustomColorBox colorbox/tcustomcolorbox.html + SetColorList colorbox/tcustomcolorbox.setcolorlist.html + DoGetColors colorbox/tcustomcolorbox.dogetcolors.html + CloseUp stdctrls/tcustomcombobox.closeup.html + PickCustomColor colorbox/tcustomcolorbox.pickcustomcolor.html + Create colorbox/tcustomcolorbox.create.html + ColorRectWidth colorbox/tcustomcolorbox.colorrectwidth.html + ColorRectOffset colorbox/tcustomcolorbox.colorrectoffset.html + Colors colorbox/tcustomcolorbox.colors.html + ColorNames colorbox/tcustomcolorbox.colornames.html + Selected colorbox/tcustomcolorbox.selected.html + DefaultColorColor colorbox/tcustomcolorbox.defaultcolorcolor.html + NoneColorColor colorbox/tcustomcolorbox.nonecolorcolor.html + OnGetColors colorbox/tcustomcolorbox.ongetcolors.html + DrawItem stdctrls/tcustomcombobox.drawitem.html + Loaded + InitializeWnd controls/twincontrol.initializewnd.html + Style stdctrls/tcustomcombobox.style.html + TColorBox colorbox/tcolorbox.html + ColorRectWidth colorbox/tcolorbox.colorrectwidth.html + ColorRectOffset colorbox/tcolorbox.colorrectoffset.html + AutoSelect colorbox/tcolorbox.autoselect.html + BidiMode colorbox/tcolorbox.bidimode.html + Constraints colorbox/tcolorbox.constraints.html + OnContextPopup colorbox/tcolorbox.oncontextpopup.html + OnMouseEnter colorbox/tcolorbox.onmouseenter.html + OnMouseLeave colorbox/tcolorbox.onmouseleave.html + OnMouseWheel colorbox/tcolorbox.onmousewheel.html + OnMouseWheelDown colorbox/tcolorbox.onmousewheeldown.html + OnMouseWheelUp colorbox/tcolorbox.onmousewheelup.html + ParentBidiMode colorbox/tcolorbox.parentbidimode.html + DefaultColorColor colorbox/tcustomcolorbox.defaultcolorcolor.html + NoneColorColor colorbox/tcustomcolorbox.nonecolorcolor.html + Selected colorbox/tcustomcolorbox.selected.html + Style stdctrls/tcustomcombobox.style.html + OnGetColors colorbox/tcustomcolorbox.ongetcolors.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html + AutoComplete stdctrls/tcustomcombobox.autocomplete.html + AutoCompleteText stdctrls/tcustomcombobox.autocompletetext.html + AutoDropDown stdctrls/tcustomcombobox.autodropdown.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + DropDownCount stdctrls/tcustomcombobox.dropdowncount.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + ItemHeight stdctrls/tcustomcombobox.itemheight.html + ItemWidth stdctrls/tcustomcombobox.itemwidth.html + OnChange stdctrls/tcustomcombobox.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnCloseUp stdctrls/tcustomcombobox.oncloseup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnDropDown stdctrls/tcustomcombobox.ondropdown.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnSelect stdctrls/tcustomcombobox.onselect.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TCustomColorListBox colorbox/tcustomcolorlistbox.html + SetColorList colorbox/tcustomcolorlistbox.setcolorlist.html + DoGetColors colorbox/tcustomcolorlistbox.dogetcolors.html + PickCustomColor colorbox/tcustomcolorlistbox.pickcustomcolor.html + Create colorbox/tcustomcolorlistbox.create.html + ColorRectWidth colorbox/tcustomcolorlistbox.colorrectwidth.html + ColorRectOffset colorbox/tcustomcolorlistbox.colorrectoffset.html + Colors colorbox/tcustomcolorlistbox.colors.html + ColorNames colorbox/tcustomcolorlistbox.colornames.html + DefaultColorColor colorbox/tcustomcolorlistbox.defaultcolorcolor.html + NoneColorColor colorbox/tcustomcolorlistbox.nonecolorcolor.html + OnGetColors colorbox/tcustomcolorlistbox.ongetcolors.html + DrawItem stdctrls/tcustomlistbox.drawitem.html + Loaded + InitializeWnd controls/twincontrol.initializewnd.html + DoSelectionChange + Style stdctrls/tcustomlistbox.style.html + Selected stdctrls/tcustomlistbox.selected.html + TColorListBox colorbox/tcolorlistbox.html + ColorRectWidth colorbox/tcolorlistbox.colorrectwidth.html + ColorRectOffset colorbox/tcolorlistbox.colorrectoffset.html + Selected colorbox/tcolorlistbox.selected.html + DragKind colorbox/tcolorlistbox.dragkind.html + TopIndex colorbox/tcolorlistbox.topindex.html + DefaultColorColor colorbox/tcustomcolorlistbox.defaultcolorcolor.html + NoneColorColor colorbox/tcustomcolorlistbox.nonecolorcolor.html + Style stdctrls/tcustomlistbox.style.html + OnGetColors colorbox/tcustomcolorlistbox.ongetcolors.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + ClickOnSelChange stdctrls/tcustomlistbox.clickonselchange.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + IntegralHeight stdctrls/tcustomlistbox.integralheight.html + ItemHeight stdctrls/tcustomlistbox.itemheight.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEnter controls/twincontrol.onenter.html + OnEndDrag controls/tcontrol.onenddrag.html + OnExit controls/twincontrol.onexit.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnResize controls/tcontrol.onresize.html + OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html + OnShowHint controls/tcontrol.onshowhint.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentShowHint controls/tcontrol.parentshowhint.html + ParentFont controls/tcontrol.parentfont.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + Register colorbox/register.html + Dialogs dialogs/index.html + mbYesNoCancel dialogs/mbyesnocancel.html + mbYesNo dialogs/mbyesno.html + mbOKCancel dialogs/mbokcancel.html + mbAbortRetryIgnore dialogs/mbabortretryignore.html + MsgDlgBtnToBitBtnKind dialogs/msgdlgbtntobitbtnkind.html + BitBtnKindToMsgDlgBtn dialogs/bitbtnkindtomsgdlgbtn.html + DefaultOpenDialogOptions dialogs/defaultopendialogoptions.html + cInputQueryEditSizePixels dialogs/cinputqueryeditsizepixels.html + cInputQueryEditSizePercents dialogs/cinputqueryeditsizepercents.html + cInputQuerySpacingSize dialogs/cinputqueryspacingsize.html + TMsgDlgType dialogs/tmsgdlgtype.html + TMsgDlgBtn dialogs/tmsgdlgbtn.html + TMsgDlgButtons dialogs/tmsgdlgbuttons.html + TOpenOption dialogs/topenoption.html + TOpenOptions dialogs/topenoptions.html + TFontDialogOption dialogs/tfontdialogoption.html + TFontDialogOptions dialogs/tfontdialogoptions.html + TFindOption dialogs/tfindoption.html + TFindOptions dialogs/tfindoptions.html + TPrintRange dialogs/tprintrange.html + TPrintDialogOption dialogs/tprintdialogoption.html + TPrintDialogOptions dialogs/tprintdialogoptions.html + TSelectDirOpt dialogs/tselectdiropt.html + TSelectDirOpts dialogs/tselectdiropts.html + TInputCloseQueryEvent dialogs/tinputclosequeryevent.html + TCommonDialog dialogs/tcommondialog.html + DoExecute dialogs/tcommondialog.doexecute.html + DefaultTitle dialogs/tcommondialog.defaulttitle.html + GetHeight dialogs/tcommondialog.getheight.html + GetWidth dialogs/tcommondialog.getwidth.html + SetHeight dialogs/tcommondialog.setheight.html + SetWidth dialogs/tcommondialog.setwidth.html + FCompStyle dialogs/tcommondialog.fcompstyle.html + Create dialogs/tcommondialog.create.html + Execute dialogs/tcommondialog.execute.html + Handle dialogs/tcommondialog.handle.html + UserChoice dialogs/tcommondialog.userchoice.html + Close dialogs/tcommondialog.close.html + DoShow dialogs/tcommondialog.doshow.html + DoCanClose dialogs/tcommondialog.docanclose.html + DoClose dialogs/tcommondialog.doclose.html + HandleAllocated dialogs/tcommondialog.handleallocated.html + OnClose dialogs/tcommondialog.onclose.html + OnCanClose dialogs/tcommondialog.oncanclose.html + OnShow dialogs/tcommondialog.onshow.html + HelpContext dialogs/tcommondialog.helpcontext.html + Width dialogs/tcommondialog.width.html + Height dialogs/tcommondialog.height.html + Title dialogs/tcommondialog.title.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TFileDialog dialogs/tfiledialog.html + GetFilterIndex dialogs/tfiledialog.getfilterindex.html + SetFileName dialogs/tfiledialog.setfilename.html + SetFilter dialogs/tfiledialog.setfilter.html + SetHistoryList dialogs/tfiledialog.sethistorylist.html + Create dialogs/tfiledialog.create.html + Destroy dialogs/tfiledialog.destroy.html + DoTypeChange dialogs/tfiledialog.dotypechange.html + Files dialogs/tfiledialog.files.html + HistoryList dialogs/tfiledialog.historylist.html + IntfFileTypeChanged dialogs/tfiledialog.intffiletypechanged.html + FindMaskInFilter dialogs/tfiledialog.findmaskinfilter.html + ExtractAllFilterMasks dialogs/tfiledialog.extractallfiltermasks.html + DefaultExt dialogs/tfiledialog.defaultext.html + FileName dialogs/tfiledialog.filename.html + Filter dialogs/tfiledialog.filter.html + FilterIndex dialogs/tfiledialog.filterindex.html + InitialDir dialogs/tfiledialog.initialdir.html + OnHelpClicked dialogs/tfiledialog.onhelpclicked.html + OnTypeChange dialogs/tfiledialog.ontypechange.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DoExecute dialogs/tcommondialog.doexecute.html + Execute dialogs/tcommondialog.execute.html + Title dialogs/tcommondialog.title.html + TOpenDialog dialogs/topendialog.html + DereferenceLinks dialogs/topendialog.dereferencelinks.html + CheckFile dialogs/topendialog.checkfile.html + CheckFileMustExist dialogs/topendialog.checkfilemustexist.html + CheckAllFiles dialogs/topendialog.checkallfiles.html + Create dialogs/topendialog.create.html + DoFolderChange dialogs/topendialog.dofolderchange.html + DoSelectionChange dialogs/topendialog.doselectionchange.html + IntfSetOption dialogs/topendialog.intfsetoption.html + Options dialogs/topendialog.options.html + OnFolderChange dialogs/topendialog.onfolderchange.html + OnSelectionChange dialogs/topendialog.onselectionchange.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DoExecute dialogs/tcommondialog.doexecute.html + DefaultTitle dialogs/tcommondialog.defaulttitle.html + TSaveDialog dialogs/tsavedialog.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DefaultTitle dialogs/tcommondialog.defaulttitle.html + Create dialogs/topendialog.create.html + TSelectDirectoryDialog dialogs/tselectdirectorydialog.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + CheckFileMustExist dialogs/topendialog.checkfilemustexist.html + DefaultTitle dialogs/tcommondialog.defaulttitle.html + Create dialogs/topendialog.create.html + TColorDialog dialogs/tcolordialog.html + Create dialogs/tcolordialog.create.html + Destroy dialogs/tcolordialog.destroy.html + Color dialogs/tcolordialog.color.html + CustomColors dialogs/tcolordialog.customcolors.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DefaultTitle dialogs/tcommondialog.defaulttitle.html + Title dialogs/tcommondialog.title.html + TColorButton dialogs/tcolorbutton.html + DrawGlyph dialogs/tcolorbutton.drawglyph.html + GetDisabledPattern dialogs/tcolorbutton.getdisabledpattern.html + GetGlyphSize dialogs/tcolorbutton.getglyphsize.html + ShowColorDialog dialogs/tcolorbutton.showcolordialog.html + Create dialogs/tcolorbutton.create.html + BorderWidth dialogs/tcolorbutton.borderwidth.html + ButtonColorAutoSize dialogs/tcolorbutton.buttoncolorautosize.html + ButtonColorSize dialogs/tcolorbutton.buttoncolorsize.html + ButtonColor dialogs/tcolorbutton.buttoncolor.html + ColorDialog dialogs/tcolorbutton.colordialog.html + Caption dialogs/tcolorbutton.caption.html + Color dialogs/tcolorbutton.color.html + OnColorChanged dialogs/tcolorbutton.oncolorchanged.html + OnMouseEnter dialogs/tcolorbutton.onmouseenter.html + OnMouseLeave dialogs/tcolorbutton.onmouseleave.html + OnMouseWheel dialogs/tcolorbutton.onmousewheel.html + OnMouseWheelDown dialogs/tcolorbutton.onmousewheeldown.html + OnMouseWheelUp dialogs/tcolorbutton.onmousewheelup.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Destroy buttons/tcustomspeedbutton.destroy.html + Click controls/tcontrol.click.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AllowAllUp buttons/tcustomspeedbutton.allowallup.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + Down buttons/tcustomspeedbutton.down.html + Enabled controls/tcontrol.enabled.html + Flat buttons/tcustomspeedbutton.flat.html + Font controls/tcontrol.font.html + GroupIndex buttons/tcustomspeedbutton.groupindex.html + Hint controls/tcontrol.hint.html + Layout buttons/tcustomspeedbutton.layout.html + Margin buttons/tcustomspeedbutton.margin.html + Spacing buttons/tcustomspeedbutton.spacing.html + Transparent buttons/tcustomspeedbutton.transparent.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnPaint controls/tgraphiccontrol.onpaint.html + OnResize controls/tcontrol.onresize.html + OnChangeBounds controls/tcontrol.onchangebounds.html + ShowHint controls/tcontrol.showhint.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + TFontDialog dialogs/tfontdialog.html + ApplyClicked dialogs/tfontdialog.applyclicked.html + Font dialogs/tfontdialog.font.html + MinFontSize dialogs/tfontdialog.minfontsize.html + MaxFontSize dialogs/tfontdialog.maxfontsize.html + Options dialogs/tfontdialog.options.html + OnApplyClicked dialogs/tfontdialog.onapplyclicked.html + PreviewText dialogs/tfontdialog.previewtext.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DefaultTitle dialogs/tcommondialog.defaulttitle.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html + Title dialogs/tcommondialog.title.html + TFindDialog dialogs/tfinddialog.html + FFindForm dialogs/tfinddialog.ffindform.html + FOnReplace dialogs/tfinddialog.fonreplace.html + FOnFind dialogs/tfinddialog.fonfind.html + FOptions dialogs/tfinddialog.foptions.html + FOnHelpClicked dialogs/tfinddialog.fonhelpclicked.html + FReplaceText dialogs/tfinddialog.freplacetext.html + FFindText dialogs/tfinddialog.ffindtext.html + DefaultTitle dialogs/tcommondialog.defaulttitle.html + FindClick dialogs/tfinddialog.findclick.html + HelpClick dialogs/tfinddialog.helpclick.html + CancelClick dialogs/tfinddialog.cancelclick.html + GetHeight dialogs/tfinddialog.getheight.html + GetWidth dialogs/tfinddialog.getwidth.html + DoCloseForm dialogs/tfinddialog.docloseform.html + Find dialogs/tfinddialog.find.html + Help dialogs/tfinddialog.help.html + Replace dialogs/tfinddialog.replace.html + CreateForm dialogs/tfinddialog.createform.html + SetFormValues dialogs/tfinddialog.setformvalues.html + GetFormValues dialogs/tfinddialog.getformvalues.html + CalcPosition dialogs/tfinddialog.calcposition.html + ReplaceText dialogs/tfinddialog.replacetext.html + OnReplace dialogs/tfinddialog.onreplace.html + Create dialogs/tfinddialog.create.html + Destroy dialogs/tfinddialog.destroy.html + CloseDialog dialogs/tfinddialog.closedialog.html + Left dialogs/tfinddialog.left.html + Position dialogs/tfinddialog.position.html + Top dialogs/tfinddialog.top.html + FindText dialogs/tfinddialog.findtext.html + Options dialogs/tfinddialog.options.html + OnFind dialogs/tfinddialog.onfind.html + OnHelpClicked dialogs/tfinddialog.onhelpclicked.html + Execute dialogs/tcommondialog.execute.html + TReplaceDialog dialogs/treplacedialog.html + DefaultTitle dialogs/treplacedialog.defaulttitle.html + ReplaceClick dialogs/treplacedialog.replaceclick.html + ReplaceAllClick dialogs/treplacedialog.replaceallclick.html + Create dialogs/treplacedialog.create.html + CreateForm dialogs/tfinddialog.createform.html + SetFormValues dialogs/tfinddialog.setformvalues.html + GetFormValues dialogs/tfinddialog.getformvalues.html + ReplaceText dialogs/tfinddialog.replacetext.html + OnReplace dialogs/tfinddialog.onreplace.html + TCustomPrinterSetupDialog dialogs/tcustomprintersetupdialog.html + TCustomPrintDialog dialogs/tcustomprintdialog.html + Collate dialogs/tcustomprintdialog.collate.html + Copies dialogs/tcustomprintdialog.copies.html + FromPage dialogs/tcustomprintdialog.frompage.html + MinPage dialogs/tcustomprintdialog.minpage.html + MaxPage dialogs/tcustomprintdialog.maxpage.html + Options dialogs/tcustomprintdialog.options.html + PrintToFile dialogs/tcustomprintdialog.printtofile.html + PrintRange dialogs/tcustomprintdialog.printrange.html + ToPage dialogs/tcustomprintdialog.topage.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + MessageDlg dialogs/messagedlg.html + MessageDlgPos dialogs/messagedlgpos.html + MessageDlgPosHelp dialogs/messagedlgposhelp.html + CreateMessageDialog dialogs/createmessagedialog.html + DefaultPromptDialog dialogs/defaultpromptdialog.html + QuestionDlg dialogs/questiondlg.html + DefaultQuestionDialog dialogs/defaultquestiondialog.html + ShowMessage dialogs/showmessage.html + ShowMessageFmt dialogs/showmessagefmt.html + ShowMessagePos dialogs/showmessagepos.html + DefaultMessageBox dialogs/defaultmessagebox.html + InputBox dialogs/inputbox.html + PasswordBox dialogs/passwordbox.html + SelectDirectory dialogs/selectdirectory.html + InputQuery dialogs/inputquery.html + DefaultInputDialog dialogs/defaultinputdialog.html + ExtractColorIndexAndColor dialogs/extractcolorindexandcolor.html + GetDialogCaption dialogs/getdialogcaption.html + GetDialogIcon dialogs/getdialogicon.html + dbgs dialogs/dbgs.html + Register dialogs/register.html + MinimumDialogButtonWidth dialogs/minimumdialogbuttonwidth.html + MinimumDialogButtonHeight dialogs/minimumdialogbuttonheight.html + Buttons buttons/index.html + BitBtnModalResults buttons/bitbtnmodalresults.html + BitBtnImages buttons/bitbtnimages.html + BitBtnResNames buttons/bitbtnresnames.html + TButtonLayout buttons/tbuttonlayout.html + TButtonState buttons/tbuttonstate.html + TNumGlyphs buttons/tnumglyphs.html + TGlyphTransparencyMode buttons/tglyphtransparencymode.html + TBitBtnKind buttons/tbitbtnkind.html + TBitBtnKinds buttons/tbitbtnkinds.html + TGetDefaultBitBtnGlyph buttons/tgetdefaultbitbtnglyph.html + TButtonGlyph buttons/tbuttonglyph.html + QueryInterface buttons/tbuttonglyph.queryinterface.html + _AddRef buttons/tbuttonglyph._addref.html + _Release buttons/tbuttonglyph._release.html + CacheSetImageList buttons/tbuttonglyph.cachesetimagelist.html + CacheSetImageIndex buttons/tbuttonglyph.cachesetimageindex.html + GlyphChanged buttons/tbuttonglyph.glyphchanged.html + SetTransparentMode buttons/tbuttonglyph.settransparentmode.html + TransparentMode buttons/tbuttonglyph.transparentmode.html + Create buttons/tbuttonglyph.create.html + Destroy buttons/tbuttonglyph.destroy.html + GetImageIndexAndEffect buttons/tbuttonglyph.getimageindexandeffect.html + Draw buttons/tbuttonglyph.draw.html + Refresh buttons/tbuttonglyph.refresh.html + Glyph buttons/tbuttonglyph.glyph.html + IsDesigning buttons/tbuttonglyph.isdesigning.html + NumGlyphs buttons/tbuttonglyph.numglyphs.html + Images buttons/tbuttonglyph.images.html + Width buttons/tbuttonglyph.width.html + Height buttons/tbuttonglyph.height.html + ShowMode buttons/tbuttonglyph.showmode.html + OnChange buttons/tbuttonglyph.onchange.html + TCustomBitBtn buttons/tcustombitbtn.html + FButtonGlyph buttons/tcustombitbtn.fbuttonglyph.html + ActionChange buttons/tcustombitbtn.actionchange.html + GlyphChanged buttons/tcustombitbtn.glyphchanged.html + IsCaptionStored buttons/tcustombitbtn.iscaptionstored.html + Loaded stdctrls/tcustombutton.loaded.html + CMAppShowBtnGlyphChanged buttons/tcustombitbtn.cmappshowbtnglyphchanged.html + Create buttons/tcustombitbtn.create.html + Destroy buttons/tcustombitbtn.destroy.html + LoadGlyphFromResourceName buttons/tcustombitbtn.loadglyphfromresourcename.html + LoadGlyphFromLazarusResource buttons/tcustombitbtn.loadglyphfromlazarusresource.html + LoadGlyphFromStock buttons/tcustombitbtn.loadglyphfromstock.html + CanShowGlyph buttons/tcustombitbtn.canshowglyph.html + Caption buttons/tcustombitbtn.caption.html + DefaultCaption buttons/tcustombitbtn.defaultcaption.html + Glyph buttons/tcustombitbtn.glyph.html + NumGlyphs buttons/tcustombitbtn.numglyphs.html + Kind buttons/tcustombitbtn.kind.html + Layout buttons/tcustombitbtn.layout.html + Margin buttons/tcustombitbtn.margin.html + Spacing buttons/tcustombitbtn.spacing.html + GlyphShowMode buttons/tcustombitbtn.glyphshowmode.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + InitializeWnd controls/twincontrol.initializewnd.html + TextChanged controls/tcontrol.textchanged.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Click controls/tcontrol.click.html + TBitBtn buttons/tbitbtn.html + BidiMode buttons/tbitbtn.bidimode.html + DefaultCaption buttons/tbitbtn.defaultcaption.html + OnContextPopup buttons/tbitbtn.oncontextpopup.html + OnDragDrop buttons/tbitbtn.ondragdrop.html + OnDragOver buttons/tbitbtn.ondragover.html + OnEndDrag buttons/tbitbtn.onenddrag.html + OnMouseEnter buttons/tbitbtn.onmouseenter.html + OnMouseLeave buttons/tbitbtn.onmouseleave.html + OnMouseWheel buttons/tbitbtn.onmousewheel.html + OnMouseWheelDown buttons/tbitbtn.onmousewheeldown.html + OnMouseWheelUp buttons/tbitbtn.onmousewheelup.html + OnStartDrag buttons/tbitbtn.onstartdrag.html + ParentBidiMode buttons/tbitbtn.parentbidimode.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Cancel stdctrls/tcustombutton.cancel.html + Caption controls/tcontrol.caption.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + Default stdctrls/tcustombutton.default.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Glyph buttons/tcustombitbtn.glyph.html + GlyphShowMode buttons/tcustombitbtn.glyphshowmode.html + Kind buttons/tcustombitbtn.kind.html + Layout buttons/tcustombitbtn.layout.html + Margin buttons/tcustombitbtn.margin.html + ModalResult stdctrls/tcustombutton.modalresult.html + NumGlyphs buttons/tcustombitbtn.numglyphs.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + Spacing buttons/tcustombitbtn.spacing.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TSpeedButtonActionLink buttons/tspeedbuttonactionlink.html + SetGroupIndex buttons/tspeedbuttonactionlink.setgroupindex.html + SetChecked buttons/tspeedbuttonactionlink.setchecked.html + AssignClient + IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html + IsGroupIndexLinked actnlist/tactionlink.isgroupindexlinked.html + TCustomSpeedButton buttons/tcustomspeedbutton.html + FState buttons/tcustomspeedbutton.fstate.html + GetNumGlyphs buttons/tcustomspeedbutton.getnumglyphs.html + GlyphChanged buttons/tcustomspeedbutton.glyphchanged.html + CalculatePreferredSize buttons/tcustomspeedbutton.calculatepreferredsize.html + MeasureDraw buttons/tcustomspeedbutton.measuredraw.html + PaintBackground buttons/tcustomspeedbutton.paintbackground.html + SetDown buttons/tcustomspeedbutton.setdown.html + SetGroupIndex buttons/tcustomspeedbutton.setgroupindex.html + SetFlat buttons/tcustomspeedbutton.setflat.html + SetMargin buttons/tcustomspeedbutton.setmargin.html + SetNumGlyphs buttons/tcustomspeedbutton.setnumglyphs.html + SetSpacing buttons/tcustomspeedbutton.setspacing.html + UpdateState buttons/tcustomspeedbutton.updatestate.html + GetDrawDetails buttons/tcustomspeedbutton.getdrawdetails.html + MouseInControl buttons/tcustomspeedbutton.mouseincontrol.html + GetGlyphSize buttons/tcustomspeedbutton.getglyphsize.html + GetTextSize buttons/tcustomspeedbutton.gettextsize.html + DrawGlyph buttons/tcustomspeedbutton.drawglyph.html + Create buttons/tcustomspeedbutton.create.html + Destroy buttons/tcustomspeedbutton.destroy.html + FindDownButton buttons/tcustomspeedbutton.finddownbutton.html + LoadGlyphFromResourceName buttons/tcustomspeedbutton.loadglyphfromresourcename.html + LoadGlyphFromLazarusResource buttons/tcustomspeedbutton.loadglyphfromlazarusresource.html + AllowAllUp buttons/tcustomspeedbutton.allowallup.html + Color buttons/tcustomspeedbutton.color.html + Down buttons/tcustomspeedbutton.down.html + Flat buttons/tcustomspeedbutton.flat.html + Glyph buttons/tcustomspeedbutton.glyph.html + GroupIndex buttons/tcustomspeedbutton.groupindex.html + Layout buttons/tcustomspeedbutton.layout.html + Margin buttons/tcustomspeedbutton.margin.html + NumGlyphs buttons/tcustomspeedbutton.numglyphs.html + ShowAccelChar buttons/tcustomspeedbutton.showaccelchar.html + ShowCaption buttons/tcustomspeedbutton.showcaption.html + Spacing buttons/tcustomspeedbutton.spacing.html + Transparent buttons/tcustomspeedbutton.transparent.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DialogChar controls/tcontrol.dialogchar.html + MouseEnter controls/tcontrol.mouseenter.html + MouseLeave controls/tcontrol.mouseleave.html + MouseDown controls/tcontrol.mousedown.html + MouseMove controls/tcontrol.mousemove.html + MouseUp controls/tcontrol.mouseup.html + Paint controls/tgraphiccontrol.paint.html + RealSetText controls/tcontrol.realsettext.html + ActionChange controls/tcontrol.actionchange.html + GetActionLinkClass controls/tcontrol.getactionlinkclass.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Loaded + Click controls/tcontrol.click.html + TSpeedButton buttons/tspeedbutton.html + AutoSize buttons/tspeedbutton.autosize.html + BidiMode buttons/tspeedbutton.bidimode.html + OnMouseMove buttons/tspeedbutton.onmousemove.html + OnMouseWheel buttons/tspeedbutton.onmousewheel.html + OnMouseWheelDown buttons/tspeedbutton.onmousewheeldown.html + OnMouseWheelUp buttons/tspeedbutton.onmousewheelup.html + ParentBidiMode buttons/tspeedbutton.parentbidimode.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + AllowAllUp buttons/tcustomspeedbutton.allowallup.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + Caption controls/tcontrol.caption.html + Color controls/tcontrol.color.html + Down buttons/tcustomspeedbutton.down.html + Enabled controls/tcontrol.enabled.html + Flat buttons/tcustomspeedbutton.flat.html + Font controls/tcontrol.font.html + Glyph buttons/tcustomspeedbutton.glyph.html + GroupIndex buttons/tcustomspeedbutton.groupindex.html + Layout buttons/tcustomspeedbutton.layout.html + Margin buttons/tcustomspeedbutton.margin.html + NumGlyphs buttons/tcustomspeedbutton.numglyphs.html + Spacing buttons/tcustomspeedbutton.spacing.html + Transparent buttons/tcustomspeedbutton.transparent.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseUp controls/tcontrol.onmouseup.html + OnPaint controls/tgraphiccontrol.onpaint.html + OnResize controls/tcontrol.onresize.html + OnChangeBounds controls/tcontrol.onchangebounds.html + ShowCaption buttons/tcustomspeedbutton.showcaption.html + ShowHint controls/tcontrol.showhint.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + GetLCLDefaultBtnGlyph buttons/getlcldefaultbtnglyph.html + LoadGlyphFromResourceName buttons/loadglyphfromresourcename.html + LoadGlyphFromLazarusResource buttons/loadglyphfromlazarusresource.html + LoadGlyphFromStock buttons/loadglyphfromstock.html + GetButtonCaption buttons/getbuttoncaption.html + GetDefaultButtonIcon buttons/getdefaultbuttonicon.html + GetButtonIcon buttons/getbuttonicon.html + BidiAdjustButtonLayout buttons/bidiadjustbuttonlayout.html + dbgs buttons/dbgs.html + Register buttons/register.html + GetDefaultBitBtnGlyph buttons/getdefaultbitbtnglyph.html + ImageListCache imagelistcache/index.html + TImageCacheItem imagelistcache/timagecacheitem.html + PImageCacheItem imagelistcache/pimagecacheitem.html + IImageCacheListener imagelistcache/iimagecachelistener.html + CacheSetImageList imagelistcache/iimagecachelistener.cachesetimagelist.html + CacheSetImageIndex imagelistcache/iimagecachelistener.cachesetimageindex.html + TImageCacheItems imagelistcache/timagecacheitems.html + Notify imagelistcache/timagecacheitems.notify.html + GetNew imagelistcache/timagecacheitems.getnew.html + Items imagelistcache/timagecacheitems.items.html + TImageListCache imagelistcache/timagelistcache.html + Create imagelistcache/timagelistcache.create.html + Destroy imagelistcache/timagelistcache.destroy.html + RegisterListener imagelistcache/timagelistcache.registerlistener.html + UnregisterListener imagelistcache/timagelistcache.unregisterlistener.html + RegisterBitmap imagelistcache/timagelistcache.registerbitmap.html + Rebuild imagelistcache/timagelistcache.rebuild.html + GetImageListCache imagelistcache/getimagelistcache.html + ButtonPanel buttonpanel/index.html + DefShowButtons buttonpanel/defshowbuttons.html + DefShowGlyphs buttonpanel/defshowglyphs.html + TButtonOrder buttonpanel/tbuttonorder.html + TPanelButton buttonpanel/tpanelbutton.html + TPanelButtons buttonpanel/tpanelbuttons.html + TPanelBitBtn buttonpanel/tpanelbitbtn.html + DefaultCaption buttonpanel/tpanelbitbtn.defaultcaption.html + Left buttonpanel/tpanelbitbtn.left.html + Top buttonpanel/tpanelbitbtn.top.html + Width buttonpanel/tpanelbitbtn.width.html + Height buttonpanel/tpanelbitbtn.height.html + Name buttonpanel/tpanelbitbtn.name.html + ShowHint buttonpanel/tpanelbitbtn.showhint.html + Create buttons/tcustombitbtn.create.html + Caption controls/tcontrol.caption.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Glyph buttons/tcustombitbtn.glyph.html + OnClick controls/tcontrol.onclick.html + TCustomButtonPanel buttonpanel/tcustombuttonpanel.html + CreateControlBorderSpacing buttonpanel/tcustombuttonpanel.createcontrolborderspacing.html + CustomAlignInsertBefore buttonpanel/tcustombuttonpanel.customaligninsertbefore.html + CustomAlignPosition buttonpanel/tcustombuttonpanel.customalignposition.html + CalculatePreferredSize buttonpanel/tcustombuttonpanel.calculatepreferredsize.html + SetAlign buttonpanel/tcustombuttonpanel.setalign.html + CMAppShowBtnGlyphChanged buttonpanel/tcustombuttonpanel.cmappshowbtnglyphchanged.html + Align + AutoSize buttonpanel/tcustombuttonpanel.autosize.html + OKButton buttonpanel/tcustombuttonpanel.okbutton.html + HelpButton buttonpanel/tcustombuttonpanel.helpbutton.html + CloseButton buttonpanel/tcustombuttonpanel.closebutton.html + CancelButton buttonpanel/tcustombuttonpanel.cancelbutton.html + ButtonOrder buttonpanel/tcustombuttonpanel.buttonorder.html + DefaultButton buttonpanel/tcustombuttonpanel.defaultbutton.html + ShowButtons buttonpanel/tcustombuttonpanel.showbuttons.html + ShowGlyphs buttonpanel/tcustombuttonpanel.showglyphs.html + ShowBevel buttonpanel/tcustombuttonpanel.showbevel.html + Spacing buttonpanel/tcustombuttonpanel.spacing.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html + TButtonPanel buttonpanel/tbuttonpanel.html + BorderSpacing buttonpanel/tbuttonpanel.borderspacing.html + Spacing buttonpanel/tbuttonpanel.spacing.html + OnMouseEnter buttonpanel/tbuttonpanel.onmouseenter.html + OnMouseLeave buttonpanel/tbuttonpanel.onmouseleave.html + OnMouseWheel buttonpanel/tbuttonpanel.onmousewheel.html + OnMouseWheelDown buttonpanel/tbuttonpanel.onmousewheeldown.html + OnMouseWheelUp buttonpanel/tbuttonpanel.onmousewheelup.html + ShowBevel buttonpanel/tbuttonpanel.showbevel.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + OKButton buttonpanel/tcustombuttonpanel.okbutton.html + HelpButton buttonpanel/tcustombuttonpanel.helpbutton.html + CloseButton buttonpanel/tcustombuttonpanel.closebutton.html + CancelButton buttonpanel/tcustombuttonpanel.cancelbutton.html + ButtonOrder buttonpanel/tcustombuttonpanel.buttonorder.html + TabOrder controls/twincontrol.taborder.html + DefaultButton buttonpanel/tcustombuttonpanel.defaultbutton.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ShowButtons buttonpanel/tcustombuttonpanel.showbuttons.html + ShowGlyphs buttonpanel/tcustombuttonpanel.showglyphs.html + Visible controls/tcontrol.visible.html + Register buttonpanel/register.html + ExtCtrls extctrls/index.html + Multi-PageControls extctrls/multi-pagecontrols.html + TBeforeShowPageEvent extctrls/tbeforeshowpageevent.html + TIdleTimerAutoEvent extctrls/tidletimerautoevent.html + TIdleTimerAutoEvents extctrls/tidletimerautoevents.html + TShapeType extctrls/tshapetype.html + TResizeStyle extctrls/tresizestyle.html + TCanOffsetEvent extctrls/tcanoffsetevent.html + TCanResizeEvent extctrls/tcanresizeevent.html + TBevelStyle extctrls/tbevelstyle.html + TBevelShape extctrls/tbevelshape.html + TColumnLayout extctrls/tcolumnlayout.html + TCheckGroupClicked extctrls/tcheckgroupclicked.html + TLabelPosition extctrls/tlabelposition.html + TPanelBevel extctrls/tpanelbevel.html + TBevelWidth extctrls/tbevelwidth.html + TFlowStyle extctrls/tflowstyle.html + TWrapAfter extctrls/twrapafter.html + TBalloonFlags extctrls/tballoonflags.html + TBandDrawingStyle extctrls/tbanddrawingstyle.html + TBandPaintOption extctrls/tbandpaintoption.html + TBandPaintOptions extctrls/tbandpaintoptions.html + TBandDragEvent extctrls/tbanddragevent.html + TBandInfoEvent extctrls/tbandinfoevent.html + TBandMoveEvent extctrls/tbandmoveevent.html + TBandPaintEvent extctrls/tbandpaintevent.html + TRowSize extctrls/trowsize.html + TBandMove extctrls/tbandmove.html + TCursorDesign extctrls/tcursordesign.html + TPage extctrls/tpage.html + SetParent extctrls/tpage.setparent.html + Create controls/tcustomcontrol.create.html + Destroy controls/tcustomcontrol.destroy.html + OnBeforeShow extctrls/tpage.onbeforeshow.html + BiDiMode extctrls/tpage.bidimode.html + Color extctrls/tpage.color.html + OnMouseEnter extctrls/tpage.onmouseenter.html + OnMouseLeave extctrls/tpage.onmouseleave.html + OnMouseWheel extctrls/tpage.onmousewheel.html + OnMouseWheelDown extctrls/tpage.onmousewheeldown.html + OnMouseWheelUp extctrls/tpage.onmousewheelup.html + ParentBiDiMode extctrls/tpage.parentbidimode.html + ChildSizing controls/twincontrol.childsizing.html + Left controls/tcontrol.left.html + Top controls/tcontrol.top.html + Width controls/tcontrol.width.html + Height controls/tcontrol.height.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + TabOrder controls/twincontrol.taborder.html + Visible controls/tcontrol.visible.html + TUNBPages extctrls/tunbpages.html + Get extctrls/tunbpages.get.html + GetCount extctrls/tunbpages.getcount.html + GetObject extctrls/tunbpages.getobject.html + Put extctrls/tunbpages.put.html + Create extctrls/tunbpages.create.html + Clear extctrls/tunbpages.clear.html + Delete extctrls/tunbpages.delete.html + Insert extctrls/tunbpages.insert.html + TNotebook extctrls/tnotebook.html + Create extctrls/tnotebook.create.html + Destroy controls/tcustomcontrol.destroy.html + ShowControl extctrls/tnotebook.showcontrol.html + ActivePage extctrls/tnotebook.activepage.html + ActivePageComponent extctrls/tnotebook.activepagecomponent.html + Page extctrls/tnotebook.page.html + PageCount extctrls/tnotebook.pagecount.html + PageIndex extctrls/tnotebook.pageindex.html + Pages extctrls/tnotebook.pages.html + AutoSize extctrls/tnotebook.autosize.html + BiDiMode extctrls/tnotebook.bidimode.html + Color extctrls/tnotebook.color.html + OnMouseEnter extctrls/tnotebook.onmouseenter.html + OnMouseLeave extctrls/tnotebook.onmouseleave.html + OnMouseMove extctrls/tnotebook.onmousemove.html + OnMouseWheel extctrls/tnotebook.onmousewheel.html + OnMouseWheelDown extctrls/tnotebook.onmousewheeldown.html + OnMouseWheelUp extctrls/tnotebook.onmousewheelup.html + ParentBiDiMode extctrls/tnotebook.parentbidimode.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + PopupMenu controls/tcontrol.popupmenu.html + TabOrder controls/twincontrol.taborder.html + TabStop + TTimer extctrls/ttimer.html + Enabled customtimer/tcustomtimer.enabled.html + Interval customtimer/tcustomtimer.interval.html + OnTimer customtimer/tcustomtimer.ontimer.html + OnStartTimer customtimer/tcustomtimer.onstarttimer.html + OnStopTimer customtimer/tcustomtimer.onstoptimer.html + TCustomIdleTimer extctrls/tcustomidletimer.html + SetAutoEnabled extctrls/tcustomidletimer.setautoenabled.html + DoOnIdle extctrls/tcustomidletimer.doonidle.html + DoOnIdleEnd extctrls/tcustomidletimer.doonidleend.html + DoOnUserInput extctrls/tcustomidletimer.doonuserinput.html + Loaded extctrls/tcustomidletimer.loaded.html + Create extctrls/tcustomidletimer.create.html + Destroy extctrls/tcustomidletimer.destroy.html + AutoEnabled extctrls/tcustomidletimer.autoenabled.html + AutoStartEvent extctrls/tcustomidletimer.autostartevent.html + AutoEndEvent extctrls/tcustomidletimer.autoendevent.html + FireOnIdle extctrls/tcustomidletimer.fireonidle.html + TIdleTimer extctrls/tidletimer.html + AutoEnabled extctrls/tcustomidletimer.autoenabled.html + AutoStartEvent extctrls/tcustomidletimer.autostartevent.html + AutoEndEvent extctrls/tcustomidletimer.autoendevent.html + Enabled customtimer/tcustomtimer.enabled.html + Interval customtimer/tcustomtimer.interval.html + OnTimer customtimer/tcustomtimer.ontimer.html + OnStartTimer customtimer/tcustomtimer.onstarttimer.html + OnStopTimer customtimer/tcustomtimer.onstoptimer.html + TShape extctrls/tshape.html + Create extctrls/tshape.create.html + Destroy extctrls/tshape.destroy.html + StyleChanged extctrls/tshape.stylechanged.html + Brush extctrls/tshape.brush.html + Pen extctrls/tshape.pen.html + OnMouseEnter extctrls/tshape.onmouseenter.html + OnMouseLeave extctrls/tshape.onmouseleave.html + OnMouseWheel extctrls/tshape.onmousewheel.html + OnMouseWheelDown extctrls/tshape.onmousewheeldown.html + OnMouseWheelUp extctrls/tshape.onmousewheelup.html + Shape extctrls/tshape.shape.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Paint controls/tgraphiccontrol.paint.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + ParentShowHint controls/tcontrol.parentshowhint.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnPaint controls/tgraphiccontrol.onpaint.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + ShowHint controls/tcontrol.showhint.html + Visible controls/tcontrol.visible.html + TCustomSplitter extctrls/tcustomsplitter.html + AdaptAnchors extctrls/tcustomsplitter.adaptanchors.html + CheckNewSize extctrls/tcustomsplitter.checknewsize.html + CheckOffset extctrls/tcustomsplitter.checkoffset.html + FindAlignControl extctrls/tcustomsplitter.findaligncontrol.html + FindAlignOtherControl extctrls/tcustomsplitter.findalignothercontrol.html + MouseLeave extctrls/tcustomsplitter.mouseleave.html + SetResizeAnchor extctrls/tcustomsplitter.setresizeanchor.html + SetResizeControl extctrls/tcustomsplitter.setresizecontrol.html + StartSplitterMove extctrls/tcustomsplitter.startsplittermove.html + StopSplitterMove extctrls/tcustomsplitter.stopsplittermove.html + Create extctrls/tcustomsplitter.create.html + AnchorSplitter extctrls/tcustomsplitter.anchorsplitter.html + ResizeControl extctrls/tcustomsplitter.resizecontrol.html + GetOtherResizeControl extctrls/tcustomsplitter.getotherresizecontrol.html + MoveSplitter extctrls/tcustomsplitter.movesplitter.html + SetSplitterPosition extctrls/tcustomsplitter.setsplitterposition.html + GetSplitterPosition extctrls/tcustomsplitter.getsplitterposition.html + AutoSnap extctrls/tcustomsplitter.autosnap.html + Beveled extctrls/tcustomsplitter.beveled.html + MinSize extctrls/tcustomsplitter.minsize.html + OnCanOffset extctrls/tcustomsplitter.oncanoffset.html + OnCanResize extctrls/tcustomsplitter.oncanresize.html + OnMoved extctrls/tcustomsplitter.onmoved.html + ResizeAnchor extctrls/tcustomsplitter.resizeanchor.html + ResizeStyle extctrls/tcustomsplitter.resizestyle.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + MouseDown controls/tcontrol.mousedown.html + MouseEnter controls/tcontrol.mouseenter.html + MouseMove controls/tcontrol.mousemove.html + MouseUp controls/tcontrol.mouseup.html + Paint controls/tcustomcontrol.paint.html + SetAlign + SetAnchors + Align controls/tcontrol.align.html + Cursor controls/tcontrol.cursor.html + TSplitter extctrls/tsplitter.html + OnCanOffset extctrls/tsplitter.oncanoffset.html + OnMouseWheel extctrls/tsplitter.onmousewheel.html + OnMouseWheelDown extctrls/tsplitter.onmousewheeldown.html + OnMouseWheelUp extctrls/tsplitter.onmousewheelup.html + OnPaint extctrls/tsplitter.onpaint.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSnap extctrls/tcustomsplitter.autosnap.html + Beveled extctrls/tcustomsplitter.beveled.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + Cursor controls/tcontrol.cursor.html + Height controls/tcontrol.height.html + MinSize extctrls/tcustomsplitter.minsize.html + OnCanResize extctrls/tcustomsplitter.oncanresize.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnMoved extctrls/tcustomsplitter.onmoved.html + ParentColor controls/tcontrol.parentcolor.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ResizeAnchor extctrls/tcustomsplitter.resizeanchor.html + ResizeStyle extctrls/tcustomsplitter.resizestyle.html + ShowHint controls/tcontrol.showhint.html + Visible controls/tcontrol.visible.html + Width controls/tcontrol.width.html + TPaintBox extctrls/tpaintbox.html + Create extctrls/tpaintbox.create.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Paint controls/tgraphiccontrol.paint.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Canvas controls/tgraphiccontrol.canvas.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Hint controls/tcontrol.hint.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + Visible controls/tcontrol.visible.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnPaint controls/tgraphiccontrol.onpaint.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + TCustomImage extctrls/tcustomimage.html + PictureChanged extctrls/tcustomimage.picturechanged.html + Create extctrls/tcustomimage.create.html + Destroy extctrls/tcustomimage.destroy.html + DestRect extctrls/tcustomimage.destrect.html + Invalidate extctrls/tcustomimage.invalidate.html + AntialiasingMode extctrls/tcustomimage.antialiasingmode.html + Center extctrls/tcustomimage.center.html + Picture extctrls/tcustomimage.picture.html + OnMouseEnter extctrls/tcustomimage.onmouseenter.html + OnMouseLeave extctrls/tcustomimage.onmouseleave.html + OnMouseWheel extctrls/tcustomimage.onmousewheel.html + OnMouseWheelDown extctrls/tcustomimage.onmousewheeldown.html + OnMouseWheelUp extctrls/tcustomimage.onmousewheelup.html + Stretch extctrls/tcustomimage.stretch.html + Transparent extctrls/tcustomimage.transparent.html + Proportional extctrls/tcustomimage.proportional.html + OnPictureChanged extctrls/tcustomimage.onpicturechanged.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Paint controls/tgraphiccontrol.paint.html + Canvas controls/tgraphiccontrol.canvas.html + Align controls/tcontrol.align.html + AutoSize controls/tcontrol.autosize.html + Constraints controls/tcontrol.constraints.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + TImage extctrls/timage.html + AntialiasingMode extctrls/timage.antialiasingmode.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Center extctrls/tcustomimage.center.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnPaint controls/tgraphiccontrol.onpaint.html + OnPictureChanged extctrls/tcustomimage.onpicturechanged.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + ParentShowHint controls/tcontrol.parentshowhint.html + Picture extctrls/tcustomimage.picture.html + PopupMenu controls/tcontrol.popupmenu.html + Proportional extctrls/tcustomimage.proportional.html + ShowHint controls/tcontrol.showhint.html + Stretch extctrls/tcustomimage.stretch.html + Transparent extctrls/tcustomimage.transparent.html + Visible controls/tcontrol.visible.html + TBevel extctrls/tbevel.html + GetControlClassDefaultSize extctrls/tbevel.getcontrolclassdefaultsize.html + Create extctrls/tbevel.create.html + ParentShowHint extctrls/tbevel.parentshowhint.html + Shape extctrls/tbevel.shape.html + ShowHint extctrls/tbevel.showhint.html + Style extctrls/tbevel.style.html + OnMouseEnter extctrls/tbevel.onmouseenter.html + OnMouseLeave extctrls/tbevel.onmouseleave.html + OnMouseWheel extctrls/tbevel.onmousewheel.html + OnMouseWheelDown extctrls/tbevel.onmousewheeldown.html + OnMouseWheelUp extctrls/tbevel.onmousewheelup.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Paint controls/tgraphiccontrol.paint.html + Destroy controls/tgraphiccontrol.destroy.html + Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + Visible controls/tcontrol.visible.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnResize controls/tcontrol.onresize.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnPaint controls/tgraphiccontrol.onpaint.html + TCustomRadioGroup extctrls/tcustomradiogroup.html + UpdateInternalObjectList extctrls/tcustomradiogroup.updateinternalobjectlist.html + UpdateAll extctrls/tcustomradiogroup.updateall.html + UpdateRadioButtonStates extctrls/tcustomradiogroup.updateradiobuttonstates.html + SetItems extctrls/tcustomradiogroup.setitems.html + SetColumns extctrls/tcustomradiogroup.setcolumns.html + SetItemIndex extctrls/tcustomradiogroup.setitemindex.html + GetItemIndex extctrls/tcustomradiogroup.getitemindex.html + CheckItemIndexChanged extctrls/tcustomradiogroup.checkitemindexchanged.html + Create extctrls/tcustomradiogroup.create.html + Destroy extctrls/tcustomradiogroup.destroy.html + CanModify extctrls/tcustomradiogroup.canmodify.html + FlipChildren extctrls/tcustomradiogroup.flipchildren.html + Rows extctrls/tcustomradiogroup.rows.html + AutoFill extctrls/tcustomradiogroup.autofill.html + Items extctrls/tcustomradiogroup.items.html + Columns extctrls/tcustomradiogroup.columns.html + ColumnLayout extctrls/tcustomradiogroup.columnlayout.html + OnClick extctrls/tcustomradiogroup.onclick.html + OnSelectionChanged extctrls/tcustomradiogroup.onselectionchanged.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + InitializeWnd controls/twincontrol.initializewnd.html + ReadState + ItemIndex + TRadioGroup extctrls/tradiogroup.html + BidiMode extctrls/tradiogroup.bidimode.html + Caption extctrls/tradiogroup.caption.html + OnMouseEnter extctrls/tradiogroup.onmouseenter.html + OnMouseLeave extctrls/tradiogroup.onmouseleave.html + OnMouseWheel extctrls/tradiogroup.onmousewheel.html + OnMouseWheelDown extctrls/tradiogroup.onmousewheeldown.html + OnMouseWheelUp extctrls/tradiogroup.onmousewheelup.html + ParentBidiMode extctrls/tradiogroup.parentbidimode.html + ParentColor extctrls/tradiogroup.parentcolor.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoFill + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + ChildSizing controls/twincontrol.childsizing.html + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Color controls/tcontrol.color.html + ColumnLayout extctrls/tcustomradiogroup.columnlayout.html + Columns extctrls/tcustomradiogroup.columns.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + ItemIndex + Items extctrls/tcustomradiogroup.items.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick extctrls/tcustomradiogroup.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnSelectionChanged extctrls/tcustomradiogroup.onselectionchanged.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TCustomCheckGroup extctrls/tcustomcheckgroup.html + UpdateInternalObjectList extctrls/tcustomcheckgroup.updateinternalobjectlist.html + UpdateAll extctrls/tcustomcheckgroup.updateall.html + SetItems extctrls/tcustomcheckgroup.setitems.html + SetColumns extctrls/tcustomcheckgroup.setcolumns.html + DefineProperties extctrls/tcustomcheckgroup.defineproperties.html + ReadData extctrls/tcustomcheckgroup.readdata.html + WriteData extctrls/tcustomcheckgroup.writedata.html + Create extctrls/tcustomcheckgroup.create.html + Destroy extctrls/tcustomcheckgroup.destroy.html + FlipChildren extctrls/tcustomcheckgroup.flipchildren.html + Rows extctrls/tcustomcheckgroup.rows.html + AutoFill extctrls/tcustomcheckgroup.autofill.html + Items extctrls/tcustomcheckgroup.items.html + Checked extctrls/tcustomcheckgroup.checked.html + CheckEnabled extctrls/tcustomcheckgroup.checkenabled.html + Columns extctrls/tcustomcheckgroup.columns.html + ColumnLayout extctrls/tcustomcheckgroup.columnlayout.html + OnItemClick extctrls/tcustomcheckgroup.onitemclick.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Loaded + DoOnResize controls/tcontrol.doonresize.html + TCheckGroup extctrls/tcheckgroup.html + BiDiMode extctrls/tcheckgroup.bidimode.html + Caption extctrls/tcheckgroup.caption.html + ClientHeight extctrls/tcheckgroup.clientheight.html + ClientWidth extctrls/tcheckgroup.clientwidth.html + DragCursor extctrls/tcheckgroup.dragcursor.html + DragMode extctrls/tcheckgroup.dragmode.html + Items extctrls/tcheckgroup.items.html + OnDragDrop extctrls/tcheckgroup.ondragdrop.html + OnDragOver extctrls/tcheckgroup.ondragover.html + OnEndDrag extctrls/tcheckgroup.onenddrag.html + OnMouseEnter extctrls/tcheckgroup.onmouseenter.html + OnMouseLeave extctrls/tcheckgroup.onmouseleave.html + OnMouseWheel extctrls/tcheckgroup.onmousewheel.html + OnMouseWheelDown extctrls/tcheckgroup.onmousewheeldown.html + OnMouseWheelUp extctrls/tcheckgroup.onmousewheelup.html + OnStartDrag extctrls/tcheckgroup.onstartdrag.html + ParentBiDiMode extctrls/tcheckgroup.parentbidimode.html + TabStop extctrls/tcheckgroup.tabstop.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoFill extctrls/tcustomcheckgroup.autofill.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + ChildSizing controls/twincontrol.childsizing.html + Color controls/tcontrol.color.html + ColumnLayout extctrls/tcustomcheckgroup.columnlayout.html + Columns extctrls/tcustomcheckgroup.columns.html + Constraints controls/tcontrol.constraints.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnItemClick extctrls/tcustomcheckgroup.onitemclick.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentFont controls/tcontrol.parentfont.html + ParentColor controls/tcontrol.parentcolor.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + Visible controls/tcontrol.visible.html + TBoundLabel extctrls/tboundlabel.html + Create extctrls/tboundlabel.create.html + FocusControl extctrls/tboundlabel.focuscontrol.html + Font extctrls/tboundlabel.font.html + OnMouseEnter extctrls/tboundlabel.onmouseenter.html + OnMouseLeave extctrls/tboundlabel.onmouseleave.html + OnMouseWheel extctrls/tboundlabel.onmousewheel.html + OnMouseWheelDown extctrls/tboundlabel.onmousewheeldown.html + OnMouseWheelUp extctrls/tboundlabel.onmousewheelup.html + Caption controls/tcontrol.caption.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Height controls/tcontrol.height.html + Left controls/tcontrol.left.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html + ShowHint controls/tcontrol.showhint.html + Layout stdctrls/tcustomlabel.layout.html + WordWrap stdctrls/tcustomlabel.wordwrap.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + TCustomLabeledEdit extctrls/tcustomlabelededit.html + Loaded extctrls/tcustomlabelededit.loaded.html + DoPositionLabel extctrls/tcustomlabelededit.dopositionlabel.html + CMBiDiModeChanged extctrls/tcustomlabelededit.cmbidimodechanged.html + CreateInternalLabel extctrls/tcustomlabelededit.createinternallabel.html + Create extctrls/tcustomlabelededit.create.html + EditLabel extctrls/tcustomlabelededit.editlabel.html + LabelPosition extctrls/tcustomlabelededit.labelposition.html + LabelSpacing extctrls/tcustomlabelededit.labelspacing.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + SetParent + SetName + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + CMVisibleChanged controls/twincontrol.cmvisiblechanged.html + CMEnabledChanged controls/twincontrol.cmenabledchanged.html + TLabeledEdit extctrls/tlabelededit.html + Alignment extctrls/tlabelededit.alignment.html + BidiMode extctrls/tlabelededit.bidimode.html + BorderStyle extctrls/tlabelededit.borderstyle.html + Font extctrls/tlabelededit.font.html + ParentBidiMode extctrls/tlabelededit.parentbidimode.html + TextHint extctrls/tlabelededit.texthint.html + TextHintFontColor extctrls/tlabelededit.texthintfontcolor.html + TextHintFontStyle extctrls/tlabelededit.texthintfontstyle.html + OnEditingDone extctrls/tlabelededit.oneditingdone.html + OnMouseEnter extctrls/tlabelededit.onmouseenter.html + OnMouseLeave extctrls/tlabelededit.onmouseleave.html + OnMouseWheel extctrls/tlabelededit.onmousewheel.html + OnMouseWheelDown extctrls/tlabelededit.onmousewheeldown.html + OnMouseWheelUp extctrls/tlabelededit.onmousewheelup.html + Anchors controls/tcontrol.anchors.html + AutoSelect stdctrls/tcustomedit.autoselect.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + CharCase stdctrls/tcustomedit.charcase.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + EchoMode stdctrls/tcustomedit.echomode.html + EditLabel extctrls/tcustomlabelededit.editlabel.html + Enabled controls/tcontrol.enabled.html + LabelPosition extctrls/tcustomlabelededit.labelposition.html + LabelSpacing extctrls/tcustomlabelededit.labelspacing.html + MaxLength stdctrls/tcustomedit.maxlength.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PasswordChar stdctrls/tcustomedit.passwordchar.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Text stdctrls/tcustomedit.text.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TCustomPanel extctrls/tcustompanel.html + UpdateParentColorChange extctrls/tcustompanel.updateparentcolorchange.html + Create extctrls/tcustompanel.create.html + Alignment extctrls/tcustompanel.alignment.html + BevelInner extctrls/tcustompanel.bevelinner.html + BevelOuter extctrls/tcustompanel.bevelouter.html + BevelWidth extctrls/tcustompanel.bevelwidth.html + FullRepaint extctrls/tcustompanel.fullrepaint.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + AdjustClientRect controls/twincontrol.adjustclientrect.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + CMParentColorChanged controls/tcontrol.cmparentcolorchanged.html + GetDefaultDockCaption controls/tcontrol.getdefaultdockcaption.html + Loaded + RealSetText controls/tcontrol.realsettext.html + Paint controls/tcustomcontrol.paint.html + Align controls/tcontrol.align.html + Color controls/tcontrol.color.html + ParentColor controls/tcontrol.parentcolor.html + TabStop controls/twincontrol.tabstop.html + TPanel extctrls/tpanel.html + BidiMode extctrls/tpanel.bidimode.html + Caption extctrls/tpanel.caption.html + ParentBidiMode extctrls/tpanel.parentbidimode.html + OnContextPopup extctrls/tpanel.oncontextpopup.html + OnMouseEnter extctrls/tpanel.onmouseenter.html + OnMouseLeave extctrls/tpanel.onmouseleave.html + OnMouseWheel extctrls/tpanel.onmousewheel.html + OnMouseWheelDown extctrls/tpanel.onmousewheeldown.html + OnMouseWheelUp extctrls/tpanel.onmousewheelup.html + OnPaint extctrls/tpanel.onpaint.html + Align controls/tcontrol.align.html + Alignment extctrls/tcustompanel.alignment.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + BevelInner extctrls/tcustompanel.bevelinner.html + BevelOuter extctrls/tcustompanel.bevelouter.html + BevelWidth extctrls/tcustompanel.bevelwidth.html + BorderWidth controls/twincontrol.borderwidth.html + BorderStyle controls/twincontrol.borderstyle.html + ChildSizing + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DockSite controls/twincontrol.docksite.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + FullRepaint extctrls/tcustompanel.fullrepaint.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + UseDockManager controls/twincontrol.usedockmanager.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html + OnGetDockCaption controls/twincontrol.ongetdockcaption.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUnDock controls/twincontrol.onundock.html + TFlowPanelControl extctrls/tflowpanelcontrol.html + SetIndex extctrls/tflowpanelcontrol.setindex.html + AssignTo extctrls/tflowpanelcontrol.assignto.html + FPCollection extctrls/tflowpanelcontrol.fpcollection.html + FPOwner extctrls/tflowpanelcontrol.fpowner.html + Control extctrls/tflowpanelcontrol.control.html + WrapAfter extctrls/tflowpanelcontrol.wrapafter.html + Index extctrls/tflowpanelcontrol.index.html + TFlowPanelControlList extctrls/tflowpanelcontrollist.html + FPOwner extctrls/tflowpanelcontrollist.fpowner.html + Add extctrls/tflowpanelcontrollist.add.html + AddControl extctrls/tflowpanelcontrollist.addcontrol.html + RemoveControl extctrls/tflowpanelcontrollist.removecontrol.html + Create extctrls/tflowpanelcontrollist.create.html + IndexOf extctrls/tflowpanelcontrollist.indexof.html + Items extctrls/tflowpanelcontrollist.items.html + TCustomFlowPanel extctrls/tcustomflowpanel.html + CMControlChange extctrls/tcustomflowpanel.cmcontrolchange.html + AlignControls extctrls/tcustomflowpanel.aligncontrols.html + CalculatePreferredSize extctrls/tcustomflowpanel.calculatepreferredsize.html + Create extctrls/tcustompanel.create.html + Destroy extctrls/tcustomflowpanel.destroy.html + GetControlIndex extctrls/tcustomflowpanel.getcontrolindex.html + SetControlIndex extctrls/tcustomflowpanel.setcontrolindex.html + AutoWrap extctrls/tcustomflowpanel.autowrap.html + ControlList extctrls/tcustomflowpanel.controllist.html + FlowStyle extctrls/tcustomflowpanel.flowstyle.html + TFlowPanel extctrls/tflowpanel.html + Align extctrls/tflowpanel.align.html + Alignment extctrls/tflowpanel.alignment.html + Anchors extctrls/tflowpanel.anchors.html + AutoSize extctrls/tflowpanel.autosize.html + AutoWrap extctrls/tcustomflowpanel.autowrap.html + BevelInner extctrls/tflowpanel.bevelinner.html + BevelOuter extctrls/tflowpanel.bevelouter.html + BevelWidth extctrls/tflowpanel.bevelwidth.html + BiDiMode extctrls/tflowpanel.bidimode.html + BorderWidth extctrls/tflowpanel.borderwidth.html + BorderStyle extctrls/tflowpanel.borderstyle.html + Caption extctrls/tflowpanel.caption.html + Color extctrls/tflowpanel.color.html + Constraints extctrls/tflowpanel.constraints.html + ControlList extctrls/tcustomflowpanel.controllist.html + UseDockManager extctrls/tflowpanel.usedockmanager.html + DockSite extctrls/tflowpanel.docksite.html + DoubleBuffered extctrls/tflowpanel.doublebuffered.html + DragCursor extctrls/tflowpanel.dragcursor.html + DragKind extctrls/tflowpanel.dragkind.html + DragMode extctrls/tflowpanel.dragmode.html + Enabled extctrls/tflowpanel.enabled.html + FlowStyle extctrls/tcustomflowpanel.flowstyle.html + FullRepaint extctrls/tflowpanel.fullrepaint.html + Font extctrls/tflowpanel.font.html + ParentBiDiMode extctrls/tflowpanel.parentbidimode.html + ParentColor extctrls/tflowpanel.parentcolor.html + ParentFont extctrls/tflowpanel.parentfont.html + ParentShowHint extctrls/tflowpanel.parentshowhint.html + PopupMenu extctrls/tflowpanel.popupmenu.html + ShowHint extctrls/tflowpanel.showhint.html + TabOrder extctrls/tflowpanel.taborder.html + TabStop extctrls/tflowpanel.tabstop.html + Visible extctrls/tflowpanel.visible.html + OnAlignInsertBefore extctrls/tflowpanel.onaligninsertbefore.html + OnAlignPosition extctrls/tflowpanel.onalignposition.html + OnClick extctrls/tflowpanel.onclick.html + OnConstrainedResize extctrls/tflowpanel.onconstrainedresize.html + OnContextPopup extctrls/tflowpanel.oncontextpopup.html + OnDockDrop extctrls/tflowpanel.ondockdrop.html + OnDockOver extctrls/tflowpanel.ondockover.html + OnDblClick extctrls/tflowpanel.ondblclick.html + OnDragDrop extctrls/tflowpanel.ondragdrop.html + OnDragOver extctrls/tflowpanel.ondragover.html + OnEndDock extctrls/tflowpanel.onenddock.html + OnEndDrag extctrls/tflowpanel.onenddrag.html + OnEnter extctrls/tflowpanel.onenter.html + OnExit extctrls/tflowpanel.onexit.html + OnGetSiteInfo extctrls/tflowpanel.ongetsiteinfo.html + OnMouseDown extctrls/tflowpanel.onmousedown.html + OnMouseEnter extctrls/tflowpanel.onmouseenter.html + OnMouseLeave extctrls/tflowpanel.onmouseleave.html + OnMouseMove extctrls/tflowpanel.onmousemove.html + OnMouseUp extctrls/tflowpanel.onmouseup.html + OnResize extctrls/tflowpanel.onresize.html + OnStartDock extctrls/tflowpanel.onstartdock.html + OnStartDrag extctrls/tflowpanel.onstartdrag.html + OnUnDock extctrls/tflowpanel.onundock.html + TCustomTrayIcon extctrls/tcustomtrayicon.html + Notification extctrls/tcustomtrayicon.notification.html + Loaded extctrls/tcustomtrayicon.loaded.html + Handle extctrls/tcustomtrayicon.handle.html + Create extctrls/tcustomtrayicon.create.html + Destroy extctrls/tcustomtrayicon.destroy.html + Hide extctrls/tcustomtrayicon.hide.html + Show extctrls/tcustomtrayicon.show.html + InternalUpdate extctrls/tcustomtrayicon.internalupdate.html + ShowBalloonHint extctrls/tcustomtrayicon.showballoonhint.html + GetPosition extctrls/tcustomtrayicon.getposition.html + Animate extctrls/tcustomtrayicon.animate.html + AnimateInterval extctrls/tcustomtrayicon.animateinterval.html + BalloonFlags extctrls/tcustomtrayicon.balloonflags.html + BalloonHint extctrls/tcustomtrayicon.balloonhint.html + BalloonTimeout extctrls/tcustomtrayicon.balloontimeout.html + BalloonTitle extctrls/tcustomtrayicon.balloontitle.html + Canvas extctrls/tcustomtrayicon.canvas.html + PopUpMenu extctrls/tcustomtrayicon.popupmenu.html + Icon extctrls/tcustomtrayicon.icon.html + Icons extctrls/tcustomtrayicon.icons.html + Hint extctrls/tcustomtrayicon.hint.html + ShowIcon extctrls/tcustomtrayicon.showicon.html + Visible extctrls/tcustomtrayicon.visible.html + OnClick extctrls/tcustomtrayicon.onclick.html + OnDblClick extctrls/tcustomtrayicon.ondblclick.html + OnMouseDown extctrls/tcustomtrayicon.onmousedown.html + OnMouseUp extctrls/tcustomtrayicon.onmouseup.html + OnMouseMove extctrls/tcustomtrayicon.onmousemove.html + OnPaint extctrls/tcustomtrayicon.onpaint.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TTrayIcon extctrls/ttrayicon.html + BalloonFlags extctrls/tcustomtrayicon.balloonflags.html + BalloonHint extctrls/tcustomtrayicon.balloonhint.html + BalloonTimeout extctrls/tcustomtrayicon.balloontimeout.html + BalloonTitle extctrls/tcustomtrayicon.balloontitle.html + PopUpMenu extctrls/tcustomtrayicon.popupmenu.html + Icon extctrls/tcustomtrayicon.icon.html + Hint extctrls/tcustomtrayicon.hint.html + Visible extctrls/tcustomtrayicon.visible.html + OnClick extctrls/tcustomtrayicon.onclick.html + OnDblClick extctrls/tcustomtrayicon.ondblclick.html + OnMouseDown extctrls/tcustomtrayicon.onmousedown.html + OnMouseMove extctrls/tcustomtrayicon.onmousemove.html + OnMouseUp extctrls/tcustomtrayicon.onmouseup.html + OnPaint extctrls/tcustomtrayicon.onpaint.html + TCtrlBand extctrls/tctrlband.html + BandRect extctrls/tctrlband.bandrect.html + Bottom extctrls/tctrlband.bottom.html + Control extctrls/tctrlband.control.html + ControlHeight extctrls/tctrlband.controlheight.html + ControlLeft extctrls/tctrlband.controlleft.html + ControlTop extctrls/tctrlband.controltop.html + ControlWidth extctrls/tctrlband.controlwidth.html + ControlVisible extctrls/tctrlband.controlvisible.html + Height extctrls/tctrlband.height.html + InitLeft extctrls/tctrlband.initleft.html + InitTop extctrls/tctrlband.inittop.html + Left extctrls/tctrlband.left.html + Right extctrls/tctrlband.right.html + Top extctrls/tctrlband.top.html + Visible extctrls/tctrlband.visible.html + Width extctrls/tctrlband.width.html + TCtrlBands extctrls/tctrlbands.html + GetIndex extctrls/tctrlbands.getindex.html + TCustomControlBar extctrls/tcustomcontrolbar.html + cBandBorderH extctrls/tcustomcontrolbar.cbandborderh.html + cBandBorderV extctrls/tcustomcontrolbar.cbandborderv.html + cGrabWidth extctrls/tcustomcontrolbar.cgrabwidth.html + cFullGrabber extctrls/tcustomcontrolbar.cfullgrabber.html + FBands extctrls/tcustomcontrolbar.fbands.html + FBandMove extctrls/tcustomcontrolbar.fbandmove.html + FCursorLock extctrls/tcustomcontrolbar.fcursorlock.html + FDefCursor extctrls/tcustomcontrolbar.fdefcursor.html + FHoveredBand extctrls/tcustomcontrolbar.fhoveredband.html + FInitDrag extctrls/tcustomcontrolbar.finitdrag.html + FInnerBevelWidth extctrls/tcustomcontrolbar.finnerbevelwidth.html + FLockResize extctrls/tcustomcontrolbar.flockresize.html + FPrevWidth extctrls/tcustomcontrolbar.fprevwidth.html + FVisiBands extctrls/tcustomcontrolbar.fvisibands.html + FVisiBandsEx extctrls/tcustomcontrolbar.fvisibandsex.html + AlignControlToBand extctrls/tcustomcontrolbar.aligncontroltoband.html + AlignControlsToBands extctrls/tcustomcontrolbar.aligncontrolstobands.html + CalcBandHeight extctrls/tcustomcontrolbar.calcbandheight.html + CalcBandHeightSnapped extctrls/tcustomcontrolbar.calcbandheightsnapped.html + CalcInnerBevelWidth extctrls/tcustomcontrolbar.calcinnerbevelwidth.html + CalcLowestBandBottomPx extctrls/tcustomcontrolbar.calclowestbandbottompx.html + CalculatePreferredSize extctrls/tcustomcontrolbar.calculatepreferredsize.html + ChangeCursor extctrls/tcustomcontrolbar.changecursor.html + CheckBandsSizeAndVisibility extctrls/tcustomcontrolbar.checkbandssizeandvisibility.html + CMBiDiModeChanged extctrls/tcustomcontrolbar.cmbidimodechanged.html + CMBorderChanged extctrls/tcustomcontrolbar.cmborderchanged.html + CreateWnd extctrls/tcustomcontrolbar.createwnd.html + DoBandMove extctrls/tcustomcontrolbar.dobandmove.html + DoBandPaint extctrls/tcustomcontrolbar.dobandpaint.html + DragControl extctrls/tcustomcontrolbar.dragcontrol.html + DragOver extctrls/tcustomcontrolbar.dragover.html + GetControlInfo extctrls/tcustomcontrolbar.getcontrolinfo.html + InitializeClass extctrls/tcustomcontrolbar.initializeclass.html + InitializeBand extctrls/tcustomcontrolbar.initializeband.html + InitializeMove extctrls/tcustomcontrolbar.initializemove.html + Loaded + IsBandOverlap extctrls/tcustomcontrolbar.isbandoverlap.html + MouseDown extctrls/tcustomcontrolbar.mousedown.html + MouseMove extctrls/tcustomcontrolbar.mousemove.html + MouseUp extctrls/tcustomcontrolbar.mouseup.html + MoveBand extctrls/tcustomcontrolbar.moveband.html + NormalizeRows extctrls/tcustomcontrolbar.normalizerows.html + Paint + PictureChanged extctrls/tcustomcontrolbar.picturechanged.html + Resize extctrls/tcustomcontrolbar.resize.html + SetCursor extctrls/tcustomcontrolbar.setcursor.html + ShiftBands extctrls/tcustomcontrolbar.shiftbands.html + SortVisibleBands extctrls/tcustomcontrolbar.sortvisiblebands.html + WMSize extctrls/tcustomcontrolbar.wmsize.html + FUpdateCount extctrls/tcustomcontrolbar.fupdatecount.html + Create extctrls/tcustompanel.create.html + Destroy extctrls/tcustomcontrolbar.destroy.html + BeginUpdate extctrls/tcustomcontrolbar.beginupdate.html + EndUpdate extctrls/tcustomcontrolbar.endupdate.html + FlipChildren extctrls/tcustomcontrolbar.flipchildren.html + HitTest extctrls/tcustomcontrolbar.hittest.html + InsertControl extctrls/tcustomcontrolbar.insertcontrol.html + MouseToBandPos extctrls/tcustomcontrolbar.mousetobandpos.html + RemoveControl extctrls/tcustomcontrolbar.removecontrol.html + StickControls extctrls/tcustomcontrolbar.stickcontrols.html + AutoDock extctrls/tcustomcontrolbar.autodock.html + AutoDrag extctrls/tcustomcontrolbar.autodrag.html + AutoSize extctrls/tcustomcontrolbar.autosize.html + DockSite extctrls/tcustomcontrolbar.docksite.html + DrawingStyle extctrls/tcustomcontrolbar.drawingstyle.html + GradientDirection extctrls/tcustomcontrolbar.gradientdirection.html + GradientStartColor extctrls/tcustomcontrolbar.gradientstartcolor.html + GradientEndColor extctrls/tcustomcontrolbar.gradientendcolor.html + Picture extctrls/tcustomcontrolbar.picture.html + RowSize extctrls/tcustomcontrolbar.rowsize.html + RowSnap extctrls/tcustomcontrolbar.rowsnap.html + OnBandDrag extctrls/tcustomcontrolbar.onbanddrag.html + OnBandInfo extctrls/tcustomcontrolbar.onbandinfo.html + OnBandMove extctrls/tcustomcontrolbar.onbandmove.html + OnBandPaint extctrls/tcustomcontrolbar.onbandpaint.html + OnCanResize extctrls/tcustomcontrolbar.oncanresize.html + OnPaint extctrls/tcustomcontrolbar.onpaint.html + TControlBar extctrls/tcontrolbar.html + Canvas extctrls/tcontrolbar.canvas.html + Align extctrls/tcontrolbar.align.html + Anchors extctrls/tcontrolbar.anchors.html + AutoDock extctrls/tcontrolbar.autodock.html + AutoDrag extctrls/tcontrolbar.autodrag.html + AutoSize extctrls/tcontrolbar.autosize.html + BevelInner extctrls/tcontrolbar.bevelinner.html + BevelOuter extctrls/tcontrolbar.bevelouter.html + BevelWidth extctrls/tcontrolbar.bevelwidth.html + BiDiMode extctrls/tcontrolbar.bidimode.html + BorderWidth extctrls/tcontrolbar.borderwidth.html + Color extctrls/tcontrolbar.color.html + Constraints extctrls/tcontrolbar.constraints.html + DockSite extctrls/tcontrolbar.docksite.html + DragCursor extctrls/tcontrolbar.dragcursor.html + DragKind extctrls/tcontrolbar.dragkind.html + DragMode extctrls/tcontrolbar.dragmode.html + DrawingStyle extctrls/tcontrolbar.drawingstyle.html + Enabled extctrls/tcontrolbar.enabled.html + GradientDirection extctrls/tcontrolbar.gradientdirection.html + GradientEndColor extctrls/tcontrolbar.gradientendcolor.html + GradientStartColor extctrls/tcontrolbar.gradientstartcolor.html + ParentColor extctrls/tcontrolbar.parentcolor.html + ParentFont extctrls/tcontrolbar.parentfont.html + ParentShowHint extctrls/tcontrolbar.parentshowhint.html + Picture extctrls/tcontrolbar.picture.html + PopupMenu extctrls/tcontrolbar.popupmenu.html + RowSize extctrls/tcontrolbar.rowsize.html + RowSnap extctrls/tcontrolbar.rowsnap.html + ShowHint extctrls/tcontrolbar.showhint.html + TabOrder extctrls/tcontrolbar.taborder.html + TabStop extctrls/tcontrolbar.tabstop.html + Visible extctrls/tcontrolbar.visible.html + OnBandDrag extctrls/tcontrolbar.onbanddrag.html + OnBandInfo extctrls/tcontrolbar.onbandinfo.html + OnBandMove extctrls/tcontrolbar.onbandmove.html + OnBandPaint extctrls/tcontrolbar.onbandpaint.html + OnCanResize extctrls/tcontrolbar.oncanresize.html + OnClick extctrls/tcontrolbar.onclick.html + OnConstrainedResize extctrls/tcontrolbar.onconstrainedresize.html + OnContextPopup extctrls/tcontrolbar.oncontextpopup.html + OnDockDrop extctrls/tcontrolbar.ondockdrop.html + OnDockOver extctrls/tcontrolbar.ondockover.html + OnDblClick extctrls/tcontrolbar.ondblclick.html + OnDragDrop extctrls/tcontrolbar.ondragdrop.html + OnDragOver extctrls/tcontrolbar.ondragover.html + OnEndDock extctrls/tcontrolbar.onenddock.html + OnEndDrag extctrls/tcontrolbar.onenddrag.html + OnEnter extctrls/tcontrolbar.onenter.html + OnExit extctrls/tcontrolbar.onexit.html + OnGetSiteInfo extctrls/tcontrolbar.ongetsiteinfo.html + OnMouseDown extctrls/tcontrolbar.onmousedown.html + OnMouseEnter extctrls/tcontrolbar.onmouseenter.html + OnMouseLeave extctrls/tcontrolbar.onmouseleave.html + OnMouseMove extctrls/tcontrolbar.onmousemove.html + OnMouseUp extctrls/tcontrolbar.onmouseup.html + OnMouseWheel extctrls/tcontrolbar.onmousewheel.html + OnMouseWheelDown extctrls/tcontrolbar.onmousewheeldown.html + OnMouseWheelUp extctrls/tcontrolbar.onmousewheelup.html + OnPaint extctrls/tcontrolbar.onpaint.html + OnResize extctrls/tcontrolbar.onresize.html + OnStartDock extctrls/tcontrolbar.onstartdock.html + OnStartDrag extctrls/tcontrolbar.onstartdrag.html + OnUnDock extctrls/tcontrolbar.onundock.html + Frame3D extctrls/frame3d.html + Register extctrls/register.html + PopupNotifier popupnotifier/index.html + BGDrawn popupnotifier/bgdrawn.html + TNotifierXButtonButtonState popupnotifier/tnotifierxbuttonbuttonstate.html + TNotifierXButton popupnotifier/tnotifierxbutton.html + Create popupnotifier/tnotifierxbutton.create.html + Destroy popupnotifier/tnotifierxbutton.destroy.html + Paint popupnotifier/tnotifierxbutton.paint.html + TNotifierForm popupnotifier/tnotifierform.html + Create popupnotifier/tnotifierform.create.html + Destroy popupnotifier/tnotifierform.destroy.html + Paint + TPopupNotifier popupnotifier/tpopupnotifier.html + vNotifierForm popupnotifier/tpopupnotifier.vnotifierform.html + Create popupnotifier/tpopupnotifier.create.html + Destroy popupnotifier/tpopupnotifier.destroy.html + Hide popupnotifier/tpopupnotifier.hide.html + Show popupnotifier/tpopupnotifier.show.html + ShowAtPos popupnotifier/tpopupnotifier.showatpos.html + Color popupnotifier/tpopupnotifier.color.html + Icon popupnotifier/tpopupnotifier.icon.html + Text popupnotifier/tpopupnotifier.text.html + Title popupnotifier/tpopupnotifier.title.html + Visible popupnotifier/tpopupnotifier.visible.html + OnClose popupnotifier/tpopupnotifier.onclose.html + Register popupnotifier/register.html + ComCtrls comctrls/index.html + CN_DROPDOWNCLOSED comctrls/cn_dropdownclosed.html + LCLStreamID comctrls/lclstreamid.html + DefaultTreeViewOptions comctrls/defaulttreeviewoptions.html + DefaultMultiSelectStyle comctrls/defaultmultiselectstyle.html + TCN_First comctrls/tcn_first.html + TCN_SELCHANGE comctrls/tcn_selchange.html + TCN_SELCHANGING comctrls/tcn_selchanging.html + THitTest comctrls/thittest.html + THitTests comctrls/thittests.html + TStatusPanelStyle comctrls/tstatuspanelstyle.html + TStatusPanelBevel comctrls/tstatuspanelbevel.html + TPanelPart comctrls/tpanelpart.html + TPanelParts comctrls/tpanelparts.html + TStatusPanelClass comctrls/tstatuspanelclass.html + TSBCreatePanelClassEvent comctrls/tsbcreatepanelclassevent.html + TDrawPanelEvent comctrls/tdrawpanelevent.html + TPageFlag comctrls/tpageflag.html + TPageFlags comctrls/tpageflags.html + TCustomPageClass comctrls/tcustompageclass.html + TNBBasePagesClass comctrls/tnbbasepagesclass.html + TTabChangingEvent comctrls/ttabchangingevent.html + TTabPosition comctrls/ttabposition.html + TTabStyle comctrls/ttabstyle.html + TTabGetImageEvent comctrls/ttabgetimageevent.html + TCTabControlOption comctrls/tctabcontroloption.html + TCTabControlOptions comctrls/tctabcontroloptions.html + TCTabControlCapability comctrls/tctabcontrolcapability.html + TCTabControlCapabilities comctrls/tctabcontrolcapabilities.html + TNoteBookOption comctrls/tnotebookoption.html + TNoteBookOptions comctrls/tnotebookoptions.html + TNoteBookCapability comctrls/tnotebookcapability.html + TNoteBookCapabilities comctrls/tnotebookcapabilities.html + TDrawTabEvent comctrls/tdrawtabevent.html + TNoteBookStringsTabControlClass comctrls/tnotebookstringstabcontrolclass.html + TCustomDrawTarget comctrls/tcustomdrawtarget.html + TCustomDrawStage comctrls/tcustomdrawstage.html + TCustomDrawStateFlag comctrls/tcustomdrawstateflag.html + TCustomDrawState comctrls/tcustomdrawstate.html + TCustomDrawResultFlag comctrls/tcustomdrawresultflag.html + TCustomDrawResult comctrls/tcustomdrawresult.html + TSortType comctrls/tsorttype.html + TListItemState comctrls/tlistitemstate.html + TListItemStates comctrls/tlistitemstates.html + TListItemFlag comctrls/tlistitemflag.html + TListItemFlags comctrls/tlistitemflags.html + TDisplayCode comctrls/tdisplaycode.html + TIconArrangement comctrls/ticonarrangement.html + TListItemClass comctrls/tlistitemclass.html + TListItemsFlag comctrls/tlistitemsflag.html + TListItemsFlags comctrls/tlistitemsflags.html + TWidth comctrls/twidth.html + TItemChange comctrls/titemchange.html + TViewStyle comctrls/tviewstyle.html + TItemFind comctrls/titemfind.html + TSearchDirection comctrls/tsearchdirection.html + TLVChangeEvent comctrls/tlvchangeevent.html + TLVDataFindEvent comctrls/tlvdatafindevent.html + TLVDataHintEvent comctrls/tlvdatahintevent.html + TLVDataStateChangeEvent comctrls/tlvdatastatechangeevent.html + TLVColumnClickEvent comctrls/tlvcolumnclickevent.html + TLVColumnRClickEvent comctrls/tlvcolumnrclickevent.html + TLVCompareEvent comctrls/tlvcompareevent.html + TLVDeletedEvent comctrls/tlvdeletedevent.html + TLVEditingEvent comctrls/tlveditingevent.html + TLVEditedEvent comctrls/tlveditedevent.html + TLVInsertEvent comctrls/tlvinsertevent.html + TLVDataEvent comctrls/tlvdataevent.html + TLVCheckedItemEvent comctrls/tlvcheckeditemevent.html + TLVSelectItemEvent comctrls/tlvselectitemevent.html + TLVCustomDrawEvent comctrls/tlvcustomdrawevent.html + TLVCustomDrawItemEvent comctrls/tlvcustomdrawitemevent.html + TLVCustomDrawSubItemEvent comctrls/tlvcustomdrawsubitemevent.html + TLVDrawItemEvent comctrls/tlvdrawitemevent.html + TLVAdvancedCustomDrawEvent comctrls/tlvadvancedcustomdrawevent.html + TLVAdvancedCustomDrawItemEvent comctrls/tlvadvancedcustomdrawitemevent.html + TLVAdvancedCustomDrawSubItemEvent comctrls/tlvadvancedcustomdrawsubitemevent.html + TLVCreateItemClassEvent comctrls/tlvcreateitemclassevent.html + TListViewProperty comctrls/tlistviewproperty.html + TListViewProperties comctrls/tlistviewproperties.html + TListViewImageList comctrls/tlistviewimagelist.html + TListHotTrackStyle comctrls/tlisthottrackstyle.html + TListHotTrackStyles comctrls/tlisthottrackstyles.html + TListViewFlag comctrls/tlistviewflag.html + TListViewFlags comctrls/tlistviewflags.html + TSortDirection comctrls/tsortdirection.html + TProgressBarOrientation comctrls/tprogressbarorientation.html + TProgressBarStyle comctrls/tprogressbarstyle.html + TUDAlignButton comctrls/tudalignbutton.html + TUDOrientation comctrls/tudorientation.html + TUpDownDirection comctrls/tupdowndirection.html + TUDBtnType comctrls/tudbtntype.html + TUDClickEvent comctrls/tudclickevent.html + TUDChangingEvent comctrls/tudchangingevent.html + TUDChangingEventEx comctrls/tudchangingeventex.html + TToolButtonStyle comctrls/ttoolbuttonstyle.html + TToolButtonFlag comctrls/ttoolbuttonflag.html + TToolButtonFlags comctrls/ttoolbuttonflags.html + TToolButtonActionLinkClass comctrls/ttoolbuttonactionlinkclass.html + TToolBarOnPaintButton comctrls/ttoolbaronpaintbutton.html + TToolBarFlag comctrls/ttoolbarflag.html + TToolBarFlags comctrls/ttoolbarflags.html + TGrabStyle comctrls/tgrabstyle.html + TDragBand comctrls/tdragband.html + TCoolBandMaximize comctrls/tcoolbandmaximize.html + TTrackBarOrientation comctrls/ttrackbarorientation.html + TTickMark comctrls/ttickmark.html + TTickStyle comctrls/ttickstyle.html + TTrackBarScalePos comctrls/ttrackbarscalepos.html + TTreeNodeClass comctrls/ttreenodeclass.html + TNodeState comctrls/tnodestate.html + TNodeStates comctrls/tnodestates.html + TNodeAttachMode comctrls/tnodeattachmode.html + TAddMode comctrls/taddmode.html + TMultiSelectStyles comctrls/tmultiselectstyles.html + TMultiSelectStyle comctrls/tmultiselectstyle.html + TTreeNodeArray comctrls/ttreenodearray.html + TTreeNodeChangeReason comctrls/ttreenodechangereason.html + TTVChangingEvent comctrls/ttvchangingevent.html + TTVChangedEvent comctrls/ttvchangedevent.html + TTVNodeChangedEvent comctrls/ttvnodechangedevent.html + TTVEditingEvent comctrls/ttveditingevent.html + TTVEditingEndEvent comctrls/ttveditingendevent.html + TTVEditedEvent comctrls/ttveditedevent.html + TTVExpandingEvent comctrls/ttvexpandingevent.html + TTVCollapsingEvent comctrls/ttvcollapsingevent.html + TTVExpandedEvent comctrls/ttvexpandedevent.html + TTVCompareEvent comctrls/ttvcompareevent.html + TTVCustomDrawEvent comctrls/ttvcustomdrawevent.html + TTVCustomDrawItemEvent comctrls/ttvcustomdrawitemevent.html + TTVCustomDrawArrowEvent comctrls/ttvcustomdrawarrowevent.html + TTVAdvancedCustomDrawEvent comctrls/ttvadvancedcustomdrawevent.html + TTVAdvancedCustomDrawItemEvent comctrls/ttvadvancedcustomdrawitemevent.html + TTVCustomCreateNodeEvent comctrls/ttvcustomcreatenodeevent.html + TTVCreateNodeClassEvent comctrls/ttvcreatenodeclassevent.html + TTreeNodeCompare comctrls/ttreenodecompare.html + TOldTreeNodeInfo comctrls/toldtreenodeinfo.html + TTreeNodeInfo comctrls/ttreenodeinfo.html + PDelphiNodeInfo comctrls/pdelphinodeinfo.html + TDelphiNodeInfo comctrls/tdelphinodeinfo.html + PNodeCache comctrls/pnodecache.html + TNodeCache comctrls/tnodecache.html + TTreeViewState comctrls/ttreeviewstate.html + TTreeViewStates comctrls/ttreeviewstates.html + TTreeViewOption comctrls/ttreeviewoption.html + TTreeViewOptions comctrls/ttreeviewoptions.html + TTreeViewExpandSignType comctrls/ttreeviewexpandsigntype.html + TTreeViewInsertMarkType comctrls/ttreeviewinsertmarktype.html + THeaderSectionState comctrls/theadersectionstate.html + THeaderSectionClass comctrls/theadersectionclass.html + TSectionTrackState comctrls/tsectiontrackstate.html + TCustomSectionTrackEvent comctrls/tcustomsectiontrackevent.html + TSectionDragEvent comctrls/tsectiondragevent.html + TCustomSectionNotifyEvent comctrls/tcustomsectionnotifyevent.html + TCustomHCCreateSectionClassEvent comctrls/tcustomhccreatesectionclassevent.html + TStatusPanel comctrls/tstatuspanel.html + FIntfFlag comctrls/tstatuspanel.fintfflag.html + GetDisplayName comctrls/tstatuspanel.getdisplayname.html + PanelChanged comctrls/tstatuspanel.panelchanged.html + SetIndex comctrls/tstatuspanel.setindex.html + Create comctrls/tstatuspanel.create.html + Destroy comctrls/tstatuspanel.destroy.html + Assign comctrls/tstatuspanel.assign.html + StatusBar comctrls/tstatuspanel.statusbar.html + Alignment comctrls/tstatuspanel.alignment.html + Bevel comctrls/tstatuspanel.bevel.html + BidiMode comctrls/tstatuspanel.bidimode.html + ParentBiDiMode comctrls/tstatuspanel.parentbidimode.html + Style comctrls/tstatuspanel.style.html + Text comctrls/tstatuspanel.text.html + Width comctrls/tstatuspanel.width.html + TStatusPanels comctrls/tstatuspanels.html + GetOwner comctrls/tstatuspanels.getowner.html + Create comctrls/tstatuspanels.create.html + StatusBar comctrls/tstatuspanels.statusbar.html + Update + Add ms-its:rtl.chm::/classes/tcollection.add.html + Items ms-its:rtl.chm::/classes/tcollection.items.html + TStatusBar comctrls/tstatusbar.html + CreateWnd comctrls/tstatusbar.createwnd.html + DestroyWnd comctrls/tstatusbar.destroywnd.html + Loaded comctrls/tstatusbar.loaded.html + UpdateHandleObject comctrls/tstatusbar.updatehandleobject.html + CalculatePreferredSize comctrls/tstatusbar.calculatepreferredsize.html + SetBiDiMode comctrls/tstatusbar.setbidimode.html + CreatePanel comctrls/tstatusbar.createpanel.html + CreatePanels comctrls/tstatusbar.createpanels.html + GetPanelClass comctrls/tstatusbar.getpanelclass.html + DoSetApplicationHint comctrls/tstatusbar.dosetapplicationhint.html + DoHint comctrls/tstatusbar.dohint.html + DrawPanel comctrls/tstatusbar.drawpanel.html + LMDrawItem comctrls/tstatusbar.lmdrawitem.html + Create comctrls/tstatusbar.create.html + Destroy comctrls/tstatusbar.destroy.html + InvalidatePanel comctrls/tstatusbar.invalidatepanel.html + BeginUpdate comctrls/tstatusbar.beginupdate.html + EndUpdate comctrls/tstatusbar.endupdate.html + ExecuteAction comctrls/tstatusbar.executeaction.html + GetPanelIndexAt comctrls/tstatusbar.getpanelindexat.html + SizeGripEnabled comctrls/tstatusbar.sizegripenabled.html + UpdatingStatusBar comctrls/tstatusbar.updatingstatusbar.html + Canvas comctrls/tstatusbar.canvas.html + AutoHint comctrls/tstatusbar.autohint.html + AutoSize comctrls/tstatusbar.autosize.html + BiDiMode comctrls/tstatusbar.bidimode.html + BorderSpacing comctrls/tstatusbar.borderspacing.html + BorderWidth controls/twincontrol.borderwidth.html + Font comctrls/tstatusbar.font.html + Panels comctrls/tstatusbar.panels.html + ParentBiDiMode comctrls/tstatusbar.parentbidimode.html + ParentColor comctrls/tstatusbar.parentcolor.html + ParentFont comctrls/tstatusbar.parentfont.html + PopupMenu comctrls/tstatusbar.popupmenu.html + SimpleText comctrls/tstatusbar.simpletext.html + SimplePanel comctrls/tstatusbar.simplepanel.html + SizeGrip comctrls/tstatusbar.sizegrip.html + UseSystemFont comctrls/tstatusbar.usesystemfont.html + OnCreatePanelClass comctrls/tstatusbar.oncreatepanelclass.html + OnDrawPanel comctrls/tstatusbar.ondrawpanel.html + OnHint comctrls/tstatusbar.onhint.html + OnMouseEnter comctrls/tstatusbar.onmouseenter.html + OnMouseLeave comctrls/tstatusbar.onmouseleave.html + OnMouseWheel comctrls/tstatusbar.onmousewheel.html + OnMouseWheelDown comctrls/tstatusbar.onmousewheeldown.html + OnMouseWheelUp comctrls/tstatusbar.onmousewheelup.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + BoundsChanged controls/tcontrol.boundschanged.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + ParentShowHint controls/tcontrol.parentshowhint.html + ShowHint controls/tcontrol.showhint.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + TCustomPage comctrls/tcustompage.html + WSRegisterClass + Flags comctrls/tcustompage.flags.html + CMVisibleChanged controls/twincontrol.cmvisiblechanged.html + GetPageIndex comctrls/tcustompage.getpageindex.html + SetPageIndex comctrls/tcustompage.setpageindex.html + GetTabVisible comctrls/tcustompage.gettabvisible.html + DoHide comctrls/tcustompage.dohide.html + DoShow comctrls/tcustompage.doshow.html + RealSetText + Create comctrls/tcustompage.create.html + HandleObjectShouldBeVisible comctrls/tcustompage.handleobjectshouldbevisible.html + VisibleIndex comctrls/tcustompage.visibleindex.html + PageIndex comctrls/tcustompage.pageindex.html + TabVisible comctrls/tcustompage.tabvisible.html + ImageIndex comctrls/tcustompage.imageindex.html + OnHide comctrls/tcustompage.onhide.html + OnShow comctrls/tcustompage.onshow.html + WMPaint controls/twincontrol.wmpaint.html + SetParent + CMHitTest controls/tcontrol.cmhittest.html + DialogChar controls/tcontrol.dialogchar.html + DestroyHandle controls/twincontrol.destroyhandle.html + CanTab controls/tcontrol.cantab.html + IsControlVisible controls/tcontrol.iscontrolvisible.html + Left controls/tcontrol.left.html + Top controls/tcontrol.top.html + Width controls/tcontrol.width.html + Height controls/tcontrol.height.html + TabOrder controls/twincontrol.taborder.html + Visible controls/tcontrol.visible.html + TNBBasePages comctrls/tnbbasepages.html + IndexOfPage comctrls/tnbbasepages.indexofpage.html + InsertPage comctrls/tnbbasepages.insertpage.html + DeletePage comctrls/tnbbasepages.deletepage.html + GetPage comctrls/tnbbasepages.getpage.html + Create comctrls/tnbbasepages.create.html + TNBPages comctrls/tnbpages.html + IndexOfPage comctrls/tnbpages.indexofpage.html + InsertPage comctrls/tnbpages.insertpage.html + DeletePage comctrls/tnbpages.deletepage.html + GetPage comctrls/tnbpages.getpage.html + PageList comctrls/tnbpages.pagelist.html + Notebook comctrls/tnbpages.notebook.html + Create comctrls/tnbpages.create.html + Destroy comctrls/tnbpages.destroy.html + Get + GetCount + GetObject + Put + Clear ms-its:rtl.chm::/classes/tstrings.clear.html + Delete ms-its:rtl.chm::/classes/tstrings.delete.html + Insert ms-its:rtl.chm::/classes/tstrings.insert.html + Move ms-its:rtl.chm::/classes/tstrings.move.html + TNBNoPages comctrls/tnbnopages.html + Get comctrls/tnbnopages.get.html + GetCount comctrls/tnbnopages.getcount.html + IndexOfPage comctrls/tnbnopages.indexofpage.html + GetPage comctrls/tnbnopages.getpage.html + TCustomTabControl comctrls/tcustomtabcontrol.html + PageClass comctrls/tcustomtabcontrol.pageclass.html + GetPageClass comctrls/tcustomtabcontrol.getpageclass.html + GetListClass comctrls/tcustomtabcontrol.getlistclass.html + AddRemovePageHandle comctrls/tcustomtabcontrol.addremovepagehandle.html + CNNotify comctrls/tcustomtabcontrol.cnnotify.html + DoChange comctrls/tcustomtabcontrol.dochange.html + InitializeWnd controls/twincontrol.initializewnd.html + Change comctrls/tcustomtabcontrol.change.html + KeyDown controls/twincontrol.keydown.html + InternalSetPageIndex comctrls/tcustomtabcontrol.internalsetpageindex.html + UpdateTabProperties comctrls/tcustomtabcontrol.updatetabproperties.html + GetControlClassDefaultSize comctrls/tcustomtabcontrol.getcontrolclassdefaultsize.html + ActivePageComponent comctrls/tcustomtabcontrol.activepagecomponent.html + ActivePage comctrls/tcustomtabcontrol.activepage.html + FUnPaged comctrls/tcustomtabcontrol.funpaged.html + GetPage comctrls/tcustomtabcontrol.getpage.html + GetPageCount comctrls/tcustomtabcontrol.getpagecount.html + InsertPage comctrls/tcustomtabcontrol.insertpage.html + RemovePage comctrls/tcustomtabcontrol.removepage.html + CanChange comctrls/tcustomtabcontrol.canchange.html + DisplayRect comctrls/tcustomtabcontrol.displayrect.html + HotTrack comctrls/tcustomtabcontrol.hottrack.html + MultiSelect comctrls/tcustomtabcontrol.multiselect.html + OwnerDraw comctrls/tcustomtabcontrol.ownerdraw.html + RaggedRight comctrls/tcustomtabcontrol.raggedright.html + ScrollOpposite comctrls/tcustomtabcontrol.scrollopposite.html + Style comctrls/tcustomtabcontrol.style.html + Tabs comctrls/tcustomtabcontrol.tabs.html + TabHeight comctrls/tcustomtabcontrol.tabheight.html + TabIndex comctrls/tcustomtabcontrol.tabindex.html + TabWidth comctrls/tcustomtabcontrol.tabwidth.html + OnChange comctrls/tcustomtabcontrol.onchange.html + OnDrawTab comctrls/tcustomtabcontrol.ondrawtab.html + Create comctrls/tcustomtabcontrol.create.html + Destroy comctrls/tcustomtabcontrol.destroy.html + TabIndexAtClientPos comctrls/tcustomtabcontrol.tabindexatclientpos.html + TabRect comctrls/tcustomtabcontrol.tabrect.html + GetImageIndex comctrls/tcustomtabcontrol.getimageindex.html + IndexOf comctrls/tcustomtabcontrol.indexof.html + CustomPage comctrls/tcustomtabcontrol.custompage.html + CanChangePageIndex comctrls/tcustomtabcontrol.canchangepageindex.html + GetMinimumTabWidth comctrls/tcustomtabcontrol.getminimumtabwidth.html + GetMinimumTabHeight comctrls/tcustomtabcontrol.getminimumtabheight.html + GetCapabilities comctrls/tcustomtabcontrol.getcapabilities.html + TabToPageIndex comctrls/tcustomtabcontrol.tabtopageindex.html + PageToTabIndex comctrls/tcustomtabcontrol.pagetotabindex.html + IndexOfTabAt comctrls/tcustomtabcontrol.indexoftabat.html + DoCloseTabClicked comctrls/tcustomtabcontrol.doclosetabclicked.html + Images comctrls/tcustomtabcontrol.images.html + MultiLine comctrls/tcustomtabcontrol.multiline.html + OnChanging comctrls/tcustomtabcontrol.onchanging.html + OnCloseTabClicked comctrls/tcustomtabcontrol.onclosetabclicked.html + OnGetImageIndex comctrls/tcustomtabcontrol.ongetimageindex.html + Options comctrls/tcustomtabcontrol.options.html + Page comctrls/tcustomtabcontrol.page.html + PageCount comctrls/tcustomtabcontrol.pagecount.html + PageIndex comctrls/tcustomtabcontrol.pageindex.html + Pages comctrls/tcustomtabcontrol.pages.html + ShowTabs comctrls/tcustomtabcontrol.showtabs.html + TabPosition comctrls/tcustomtabcontrol.tabposition.html + IsUnpaged comctrls/tcustomtabcontrol.isunpaged.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + CreateWnd controls/twincontrol.createwnd.html + Loaded controls/twincontrol.loaded.html + ReadState + DialogChar controls/tcontrol.dialogchar.html + ShowControl controls/twincontrol.showcontrol.html + Notification controls/tcontrol.notification.html + TabStop controls/twincontrol.tabstop.html + TTabSheet comctrls/ttabsheet.html + Create comctrls/ttabsheet.create.html + Destroy comctrls/ttabsheet.destroy.html + PageControl comctrls/ttabsheet.pagecontrol.html + TabIndex comctrls/ttabsheet.tabindex.html + BorderWidth comctrls/ttabsheet.borderwidth.html + BiDiMode comctrls/ttabsheet.bidimode.html + Font comctrls/ttabsheet.font.html + OnMouseEnter comctrls/ttabsheet.onmouseenter.html + OnMouseLeave comctrls/ttabsheet.onmouseleave.html + OnMouseWheel comctrls/ttabsheet.onmousewheel.html + OnMouseWheelDown comctrls/ttabsheet.onmousewheeldown.html + OnMouseWheelUp comctrls/ttabsheet.onmousewheelup.html + ParentBiDiMode comctrls/ttabsheet.parentbidimode.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Caption controls/tcontrol.caption.html + ChildSizing controls/twincontrol.childsizing.html + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Enabled controls/tcontrol.enabled.html + Height controls/tcontrol.height.html + ImageIndex + Left controls/tcontrol.left.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnHide + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnShow + OnStartDrag controls/tcontrol.onstartdrag.html + PageIndex + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabVisible + Top controls/tcontrol.top.html + Width controls/tcontrol.width.html + TPageControl comctrls/tpagecontrol.html + GetPageClass comctrls/tpagecontrol.getpageclass.html + DoAddDockClient comctrls/tpagecontrol.doadddockclient.html + DockOver comctrls/tpagecontrol.dockover.html + DoRemoveDockClient comctrls/tpagecontrol.doremovedockclient.html + ChildClassAllowed comctrls/tpagecontrol.childclassallowed.html + FindNextPage comctrls/tpagecontrol.findnextpage.html + SelectNextPage comctrls/tpagecontrol.selectnextpage.html + AddTabSheet comctrls/tpagecontrol.addtabsheet.html + ActivePageIndex comctrls/tpagecontrol.activepageindex.html + Pages comctrls/tpagecontrol.pages.html + ActivePage comctrls/tpagecontrol.activepage.html + BiDiMode comctrls/tpagecontrol.bidimode.html + MultiLine comctrls/tcustomtabcontrol.multiline.html + ParentBiDiMode comctrls/tpagecontrol.parentbidimode.html + ShowTabs comctrls/tcustomtabcontrol.showtabs.html + TabIndex comctrls/tpagecontrol.tabindex.html + OnChange comctrls/tpagecontrol.onchange.html + OnChanging comctrls/tpagecontrol.onchanging.html + OnCloseTabClicked comctrls/tcustomtabcontrol.onclosetabclicked.html + OnMouseEnter comctrls/tpagecontrol.onmouseenter.html + OnMouseLeave comctrls/tpagecontrol.onmouseleave.html + OnMouseWheel comctrls/tpagecontrol.onmousewheel.html + OnMouseWheelDown comctrls/tpagecontrol.onmousewheeldown.html + OnMouseWheelUp comctrls/tpagecontrol.onmousewheelup.html + Options comctrls/tcustomtabcontrol.options.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DoUndockClientMsg controls/twincontrol.doundockclientmsg.html + OnGetDockCaption controls/twincontrol.ongetdockcaption.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + DockSite controls/twincontrol.docksite.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Images + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabPosition + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetImageIndex + OnGetSiteInfo controls/twincontrol.ongetsiteinfo.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUnDock controls/twincontrol.onundock.html + TTabControlStrings comctrls/ttabcontrolstrings.html + GetTabIndex comctrls/ttabcontrolstrings.gettabindex.html + SetHotTrack comctrls/ttabcontrolstrings.sethottrack.html + SetImages comctrls/ttabcontrolstrings.setimages.html + SetMultiLine comctrls/ttabcontrolstrings.setmultiline.html + SetMultiSelect comctrls/ttabcontrolstrings.setmultiselect.html + SetOwnerDraw comctrls/ttabcontrolstrings.setownerdraw.html + SetRaggedRight comctrls/ttabcontrolstrings.setraggedright.html + SetScrollOpposite comctrls/ttabcontrolstrings.setscrollopposite.html + SetTabHeight comctrls/ttabcontrolstrings.settabheight.html + SetTabIndex comctrls/ttabcontrolstrings.settabindex.html + SetTabWidth comctrls/ttabcontrolstrings.settabwidth.html + Create comctrls/ttabcontrolstrings.create.html + GetHitTestInfoAt comctrls/ttabcontrolstrings.gethittestinfoat.html + GetSize comctrls/ttabcontrolstrings.getsize.html + IndexOfTabAt comctrls/ttabcontrolstrings.indexoftabat.html + RowCount comctrls/ttabcontrolstrings.rowcount.html + TabRect comctrls/ttabcontrolstrings.tabrect.html + ImageListChange comctrls/ttabcontrolstrings.imagelistchange.html + ScrollTabs comctrls/ttabcontrolstrings.scrolltabs.html + TabControlBoundsChange comctrls/ttabcontrolstrings.tabcontrolboundschange.html + UpdateTabImages comctrls/ttabcontrolstrings.updatetabimages.html + BeginUpdate comctrls/ttabcontrolstrings.beginupdate.html + EndUpdate comctrls/ttabcontrolstrings.endupdate.html + IsUpdating comctrls/ttabcontrolstrings.isupdating.html + TabControl comctrls/ttabcontrolstrings.tabcontrol.html + TabIndex comctrls/ttabcontrolstrings.tabindex.html + HotTrack comctrls/ttabcontrolstrings.hottrack.html + Images comctrls/ttabcontrolstrings.images.html + MultiLine comctrls/ttabcontrolstrings.multiline.html + MultiSelect comctrls/ttabcontrolstrings.multiselect.html + OwnerDraw comctrls/ttabcontrolstrings.ownerdraw.html + RaggedRight comctrls/ttabcontrolstrings.raggedright.html + ScrollOpposite comctrls/ttabcontrolstrings.scrollopposite.html + TabHeight comctrls/ttabcontrolstrings.tabheight.html + TabWidth comctrls/ttabcontrolstrings.tabwidth.html + TNoteBookStringsTabControl comctrls/tnotebookstringstabcontrol.html + FHandelCreated comctrls/tnotebookstringstabcontrol.fhandelcreated.html + CreateHandle comctrls/tnotebookstringstabcontrol.createhandle.html + WSRegisterClass + TTabControlNoteBookStrings comctrls/ttabcontrolnotebookstrings.html + GetInternalTabControllClass comctrls/ttabcontrolnotebookstrings.getinternaltabcontrollclass.html + Get comctrls/ttabcontrolnotebookstrings.get.html + GetObject comctrls/ttabcontrolnotebookstrings.getobject.html + GetTabPosition comctrls/ttabcontrolnotebookstrings.gettabposition.html + NBChanging comctrls/ttabcontrolnotebookstrings.nbchanging.html + NBGetImageIndex comctrls/ttabcontrolnotebookstrings.nbgetimageindex.html + NBPageChanged comctrls/ttabcontrolnotebookstrings.nbpagechanged.html + NBHandleCreated comctrls/ttabcontrolnotebookstrings.nbhandlecreated.html + Put comctrls/ttabcontrolnotebookstrings.put.html + PutObject comctrls/ttabcontrolnotebookstrings.putobject.html + SetImages comctrls/ttabcontrolnotebookstrings.setimages.html + SetMultiLine comctrls/ttabcontrolstrings.setmultiline.html + SetUpdateState comctrls/ttabcontrolnotebookstrings.setupdatestate.html + SetTabHeight comctrls/ttabcontrolnotebookstrings.settabheight.html + SetTabPosition comctrls/ttabcontrolnotebookstrings.settabposition.html + SetTabWidth comctrls/ttabcontrolnotebookstrings.settabwidth.html + Create comctrls/ttabcontrolnotebookstrings.create.html + Destroy comctrls/ttabcontrolnotebookstrings.destroy.html + Clear comctrls/ttabcontrolnotebookstrings.clear.html + Delete comctrls/ttabcontrolnotebookstrings.delete.html + Insert comctrls/ttabcontrolnotebookstrings.insert.html + TabPosition comctrls/ttabcontrolnotebookstrings.tabposition.html + Style comctrls/ttabcontrolnotebookstrings.style.html + NoteBook comctrls/ttabcontrolnotebookstrings.notebook.html + GetCount + GetTabIndex comctrls/ttabcontrolstrings.gettabindex.html + SetTabIndex comctrls/ttabcontrolstrings.settabindex.html + GetSize comctrls/ttabcontrolstrings.getsize.html + TabControlBoundsChange comctrls/ttabcontrolstrings.tabcontrolboundschange.html + IndexOfTabAt comctrls/ttabcontrolstrings.indexoftabat.html + TTabControl comctrls/ttabcontrol.html + AddRemovePageHandle comctrls/tcustomtabcontrol.addremovepagehandle.html + CanChange comctrls/tcustomtabcontrol.canchange.html + CanShowTab comctrls/ttabcontrol.canshowtab.html + Change comctrls/tcustomtabcontrol.change.html + CreateWnd + DestroyHandle comctrls/ttabcontrol.destroyhandle.html + Notification + SetTabIndex comctrls/ttabcontrol.settabindex.html + UpdateTabImages comctrls/ttabcontrol.updatetabimages.html + ImageListChange comctrls/ttabcontrol.imagelistchange.html + DoSetBounds comctrls/ttabcontrol.dosetbounds.html + GetControlClassDefaultSize comctrls/tcustomtabcontrol.getcontrolclassdefaultsize.html + PaintWindow comctrls/ttabcontrol.paintwindow.html + Paint comctrls/ttabcontrol.paint.html + AdjustDisplayRectWithBorder comctrls/ttabcontrol.adjustdisplayrectwithborder.html + AdjustClientRect comctrls/ttabcontrol.adjustclientrect.html + CreateTabNoteBookStrings comctrls/ttabcontrol.createtabnotebookstrings.html + Create comctrls/tcustomtabcontrol.create.html + Destroy comctrls/tcustomtabcontrol.destroy.html + IndexOfTabAt comctrls/tcustomtabcontrol.indexoftabat.html + GetHitTestInfoAt comctrls/ttabcontrol.gethittestinfoat.html + GetImageIndex comctrls/tcustomtabcontrol.getimageindex.html + IndexOfTabWithCaption comctrls/ttabcontrol.indexoftabwithcaption.html + TabRect comctrls/tcustomtabcontrol.tabrect.html + RowCount comctrls/ttabcontrol.rowcount.html + ScrollTabs comctrls/ttabcontrol.scrolltabs.html + BeginUpdate comctrls/ttabcontrol.beginupdate.html + EndUpdate comctrls/ttabcontrol.endupdate.html + IsUpdating comctrls/ttabcontrol.isupdating.html + BiDiMode comctrls/ttabcontrol.bidimode.html + OnGetSiteInfo comctrls/ttabcontrol.ongetsiteinfo.html + OnMouseEnter comctrls/ttabcontrol.onmouseenter.html + OnMouseLeave comctrls/ttabcontrol.onmouseleave.html + OnMouseWheel comctrls/ttabcontrol.onmousewheel.html + OnMouseWheelDown comctrls/ttabcontrol.onmousewheeldown.html + OnMouseWheelUp comctrls/ttabcontrol.onmousewheelup.html + ParentBiDiMode comctrls/ttabcontrol.parentbidimode.html + DisplayRect comctrls/tcustomtabcontrol.displayrect.html + HotTrack comctrls/tcustomtabcontrol.hottrack.html + Images comctrls/tcustomtabcontrol.images.html + MultiLine comctrls/tcustomtabcontrol.multiline.html + MultiSelect comctrls/tcustomtabcontrol.multiselect.html + OnChange comctrls/tcustomtabcontrol.onchange.html + OnChanging comctrls/tcustomtabcontrol.onchanging.html + OnDrawTab comctrls/tcustomtabcontrol.ondrawtab.html + OnGetImageIndex comctrls/tcustomtabcontrol.ongetimageindex.html + OwnerDraw comctrls/tcustomtabcontrol.ownerdraw.html + RaggedRight comctrls/tcustomtabcontrol.raggedright.html + ScrollOpposite comctrls/tcustomtabcontrol.scrollopposite.html + Style comctrls/tcustomtabcontrol.style.html + TabHeight comctrls/tcustomtabcontrol.tabheight.html + TabPosition comctrls/tcustomtabcontrol.tabposition.html + TabWidth comctrls/tcustomtabcontrol.tabwidth.html + TabIndex comctrls/tcustomtabcontrol.tabindex.html + Tabs comctrls/tcustomtabcontrol.tabs.html + TabStop controls/twincontrol.tabstop.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + DockSite controls/twincontrol.docksite.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDockDrop controls/twincontrol.ondockdrop.html + OnDockOver controls/twincontrol.ondockover.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUnDock controls/twincontrol.onundock.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + Visible controls/tcontrol.visible.html + TIconOptions comctrls/ticonoptions.html + AssignTo comctrls/ticonoptions.assignto.html + GetOwner comctrls/ticonoptions.getowner.html + Create comctrls/ticonoptions.create.html + Arrangement comctrls/ticonoptions.arrangement.html + AutoArrange comctrls/ticonoptions.autoarrange.html + WrapText comctrls/ticonoptions.wraptext.html + TListItem comctrls/tlistitem.html + IsEqual comctrls/tlistitem.isequal.html + IsOwnerData comctrls/tlistitem.isownerdata.html + GetCheckedInternal comctrls/tlistitem.getcheckedinternal.html + GetOwner comctrls/tlistitem.getowner.html + Assign comctrls/tlistitem.assign.html + Create comctrls/tlistitem.create.html + Destroy comctrls/tlistitem.destroy.html + Delete comctrls/tlistitem.delete.html + MakeVisible comctrls/tlistitem.makevisible.html + DisplayRect comctrls/tlistitem.displayrect.html + DisplayRectSubItem comctrls/tlistitem.displayrectsubitem.html + EditCaption comctrls/tlistitem.editcaption.html + Caption comctrls/tlistitem.caption.html + Checked comctrls/tlistitem.checked.html + Cut comctrls/tlistitem.cut.html + Data comctrls/tlistitem.data.html + DropTarget comctrls/tlistitem.droptarget.html + Focused comctrls/tlistitem.focused.html + Index comctrls/tlistitem.index.html + ImageIndex comctrls/tlistitem.imageindex.html + Left comctrls/tlistitem.left.html + ListView comctrls/tlistitem.listview.html + Owner comctrls/tlistitem.owner.html + Position comctrls/tlistitem.position.html + Selected comctrls/tlistitem.selected.html + StateIndex comctrls/tlistitem.stateindex.html + SubItems comctrls/tlistitem.subitems.html + SubItemImages comctrls/tlistitem.subitemimages.html + Top comctrls/tlistitem.top.html + TOwnerDataListItem comctrls/townerdatalistitem.html + IsOwnerData comctrls/townerdatalistitem.isownerdata.html + SetDataIndex comctrls/townerdatalistitem.setdataindex.html + SetOwner comctrls/townerdatalistitem.setowner.html + TListItemsEnumerator comctrls/tlistitemsenumerator.html + Create comctrls/tlistitemsenumerator.create.html + MoveNext comctrls/tlistitemsenumerator.movenext.html + Current comctrls/tlistitemsenumerator.current.html + TListItems comctrls/tlistitems.html + DefineProperties comctrls/tlistitems.defineproperties.html + GetCount comctrls/tlistitems.getcount.html + GetItem comctrls/tlistitems.getitem.html + GetOwner comctrls/tlistitems.getowner.html + WSCreateItems comctrls/tlistitems.wscreateitems.html + DoFinalizeWnd comctrls/tlistitems.dofinalizewnd.html + SetCount comctrls/tlistitems.setcount.html + SetItem comctrls/tlistitems.setitem.html + ClearSelection comctrls/tlistitems.clearselection.html + SelectAll comctrls/tlistitems.selectall.html + Add comctrls/tlistitems.add.html + AddItem comctrls/tlistitems.additem.html + BeginUpdate comctrls/tlistitems.beginupdate.html + Clear comctrls/tlistitems.clear.html + Create comctrls/tlistitems.create.html + Destroy comctrls/tlistitems.destroy.html + Delete comctrls/tlistitems.delete.html + EndUpdate comctrls/tlistitems.endupdate.html + Exchange comctrls/tlistitems.exchange.html + Move comctrls/tlistitems.move.html + FindCaption comctrls/tlistitems.findcaption.html + FindData comctrls/tlistitems.finddata.html + GetEnumerator comctrls/tlistitems.getenumerator.html + IndexOf comctrls/tlistitems.indexof.html + Insert comctrls/tlistitems.insert.html + InsertItem comctrls/tlistitems.insertitem.html + Flags comctrls/tlistitems.flags.html + Count comctrls/tlistitems.count.html + Item comctrls/tlistitems.item.html + Owner comctrls/tlistitems.owner.html + TOwnerDataListItems comctrls/townerdatalistitems.html + GetCount comctrls/tlistitems.getcount.html + SetCount comctrls/townerdatalistitems.setcount.html + GetItem comctrls/tlistitems.getitem.html + Clear comctrls/tlistitems.clear.html + TListColumn comctrls/tlistcolumn.html + SetIndex comctrls/tlistcolumn.setindex.html + GetDisplayName comctrls/tlistcolumn.getdisplayname.html + GetStoredWidth comctrls/tlistcolumn.getstoredwidth.html + Create comctrls/tlistcolumn.create.html + Destroy comctrls/tlistcolumn.destroy.html + Assign comctrls/tlistcolumn.assign.html + WidthType comctrls/tlistcolumn.widthtype.html + Alignment comctrls/tlistcolumn.alignment.html + AutoSize comctrls/tlistcolumn.autosize.html + Caption comctrls/tlistcolumn.caption.html + ImageIndex comctrls/tlistcolumn.imageindex.html + MaxWidth comctrls/tlistcolumn.maxwidth.html + MinWidth comctrls/tlistcolumn.minwidth.html + Tag comctrls/tlistcolumn.tag.html + Visible comctrls/tlistcolumn.visible.html + Width comctrls/tlistcolumn.width.html + TListColumns comctrls/tlistcolumns.html + GetOwner comctrls/tlistcolumns.getowner.html + Create comctrls/tlistcolumns.create.html + Destroy comctrls/tlistcolumns.destroy.html + Update comctrls/tlistcolumns.update.html + Add comctrls/tlistcolumns.add.html + Assign comctrls/tlistcolumns.assign.html + Owner ms-its:rtl.chm::/classes/tcollection.owner.html + Items ms-its:rtl.chm::/classes/tcollection.items.html + TCustomListViewEditor comctrls/tcustomlistvieweditor.html + DoExit stdctrls/tcustomedit.doexit.html + Create stdctrls/tcustomedit.create.html + Item comctrls/tcustomlistvieweditor.item.html + TCustomListView comctrls/tcustomlistview.html + ItemDeleted comctrls/tcustomlistview.itemdeleted.html + ItemInserted comctrls/tcustomlistview.iteminserted.html + GetControlClassDefaultSize comctrls/tcustomlistview.getcontrolclassdefaultsize.html + InitializeWnd comctrls/tcustomlistview.initializewnd.html + FinalizeWnd comctrls/tcustomlistview.finalizewnd.html + CreateListItem comctrls/tcustomlistview.createlistitem.html + CreateListItems comctrls/tcustomlistview.createlistitems.html + CanEdit comctrls/tcustomlistview.canedit.html + Change comctrls/tcustomlistview.change.html + ColClick comctrls/tcustomlistview.colclick.html + Delete comctrls/tcustomlistview.delete.html + DoDeletion comctrls/tcustomlistview.dodeletion.html + DoInsert comctrls/tcustomlistview.doinsert.html + DoItemChecked comctrls/tcustomlistview.doitemchecked.html + DoSelectItem comctrls/tcustomlistview.doselectitem.html + DoSetBounds controls/twincontrol.dosetbounds.html + DoEndEdit comctrls/tcustomlistview.doendedit.html + InsertItem comctrls/tcustomlistview.insertitem.html + ImageChanged comctrls/tcustomlistview.imagechanged.html + Notification comctrls/tcustomlistview.notification.html + Sort comctrls/tcustomlistview.sort.html + IsCustomDrawn comctrls/tcustomlistview.iscustomdrawn.html + CustomDraw comctrls/tcustomlistview.customdraw.html + CustomDrawItem comctrls/tcustomlistview.customdrawitem.html + CustomDrawSubItem comctrls/tcustomlistview.customdrawsubitem.html + IntfCustomDraw comctrls/tcustomlistview.intfcustomdraw.html + GetUpdateCount comctrls/tcustomlistview.getupdatecount.html + DrawItem comctrls/tcustomlistview.drawitem.html + DoGetOwnerData comctrls/tcustomlistview.dogetownerdata.html + DoOwnerDataHint comctrls/tcustomlistview.doownerdatahint.html + DoOwnerDataStateChange comctrls/tcustomlistview.doownerdatastatechange.html + DblClick comctrls/tcustomlistview.dblclick.html + KeyDown controls/twincontrol.keydown.html + AllocBy comctrls/tcustomlistview.allocby.html + AutoSort comctrls/tcustomlistview.autosort.html + AutoWidthLastColumn comctrls/tcustomlistview.autowidthlastcolumn.html + ColumnClick comctrls/tcustomlistview.columnclick.html + Columns comctrls/tcustomlistview.columns.html + DefaultItemHeight comctrls/tcustomlistview.defaultitemheight.html + HideSelection comctrls/tcustomlistview.hideselection.html + HoverTime comctrls/tcustomlistview.hovertime.html + LargeImages comctrls/tcustomlistview.largeimages.html + OwnerDraw comctrls/tcustomlistview.ownerdraw.html + ScrollBars comctrls/tcustomlistview.scrollbars.html + ShowColumnHeaders comctrls/tcustomlistview.showcolumnheaders.html + ShowWorkAreas comctrls/tcustomlistview.showworkareas.html + SmallImages comctrls/tcustomlistview.smallimages.html + SortType comctrls/tcustomlistview.sorttype.html + SortColumn comctrls/tcustomlistview.sortcolumn.html + SortDirection comctrls/tcustomlistview.sortdirection.html + StateImages comctrls/tcustomlistview.stateimages.html + ToolTips comctrls/tcustomlistview.tooltips.html + ViewStyle comctrls/tcustomlistview.viewstyle.html + OnChange comctrls/tcustomlistview.onchange.html + OnColumnClick comctrls/tcustomlistview.oncolumnclick.html + OnCompare comctrls/tcustomlistview.oncompare.html + OnCreateItemClass comctrls/tcustomlistview.oncreateitemclass.html + OnData comctrls/tcustomlistview.ondata.html + OnDataFind comctrls/tcustomlistview.ondatafind.html + OnDataHint comctrls/tcustomlistview.ondatahint.html + OnDataStateChange comctrls/tcustomlistview.ondatastatechange.html + OnDeletion comctrls/tcustomlistview.ondeletion.html + OnEdited comctrls/tcustomlistview.onedited.html + OnEditing comctrls/tcustomlistview.onediting.html + OnInsert comctrls/tcustomlistview.oninsert.html + OnItemChecked comctrls/tcustomlistview.onitemchecked.html + OnSelectItem comctrls/tcustomlistview.onselectitem.html + OnCustomDraw comctrls/tcustomlistview.oncustomdraw.html + OnCustomDrawItem comctrls/tcustomlistview.oncustomdrawitem.html + OnCustomDrawSubItem comctrls/tcustomlistview.oncustomdrawsubitem.html + OnDrawItem comctrls/tcustomlistview.ondrawitem.html + OnAdvancedCustomDraw comctrls/tcustomlistview.onadvancedcustomdraw.html + OnAdvancedCustomDrawItem comctrls/tcustomlistview.onadvancedcustomdrawitem.html + OnAdvancedCustomDrawSubItem comctrls/tcustomlistview.onadvancedcustomdrawsubitem.html + Create comctrls/tcustomlistview.create.html + Destroy comctrls/tcustomlistview.destroy.html + AddItem comctrls/tcustomlistview.additem.html + AlphaSort comctrls/tcustomlistview.alphasort.html + BeginUpdate comctrls/tcustomlistview.beginupdate.html + Clear comctrls/tcustomlistview.clear.html + EndUpdate comctrls/tcustomlistview.endupdate.html + Repaint + FindCaption comctrls/tcustomlistview.findcaption.html + FindData comctrls/tcustomlistview.finddata.html + GetHitTestInfoAt comctrls/tcustomlistview.gethittestinfoat.html + GetItemAt comctrls/tcustomlistview.getitemat.html + GetNearestItem comctrls/tcustomlistview.getnearestitem.html + GetNextItem comctrls/tcustomlistview.getnextitem.html + ClearSelection comctrls/tcustomlistview.clearselection.html + SelectAll comctrls/tcustomlistview.selectall.html + IsEditing comctrls/tcustomlistview.isediting.html + BoundingRect comctrls/tcustomlistview.boundingrect.html + Canvas comctrls/tcustomlistview.canvas.html + Checkboxes comctrls/tcustomlistview.checkboxes.html + Column comctrls/tcustomlistview.column.html + ColumnCount comctrls/tcustomlistview.columncount.html + DropTarget comctrls/tcustomlistview.droptarget.html + FlatScrollBars comctrls/tcustomlistview.flatscrollbars.html + FullDrag comctrls/tcustomlistview.fulldrag.html + GridLines comctrls/tcustomlistview.gridlines.html + HotTrack comctrls/tcustomlistview.hottrack.html + HotTrackStyles comctrls/tcustomlistview.hottrackstyles.html + IconOptions comctrls/tcustomlistview.iconoptions.html + ItemFocused comctrls/tcustomlistview.itemfocused.html + ItemIndex comctrls/tcustomlistview.itemindex.html + Items comctrls/tcustomlistview.items.html + MultiSelect comctrls/tcustomlistview.multiselect.html + OwnerData comctrls/tcustomlistview.ownerdata.html + ReadOnly comctrls/tcustomlistview.readonly.html + RowSelect comctrls/tcustomlistview.rowselect.html + SelCount comctrls/tcustomlistview.selcount.html + Selected comctrls/tcustomlistview.selected.html + LastSelected comctrls/tcustomlistview.lastselected.html + TopItem comctrls/tcustomlistview.topitem.html + ViewOrigin comctrls/tcustomlistview.vieworigin.html + VisibleRowCount comctrls/tcustomlistview.visiblerowcount.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + DestroyWnd controls/twincontrol.destroywnd.html + BeginAutoDrag controls/tcontrol.beginautodrag.html + Loaded controls/twincontrol.loaded.html + BorderStyle controls/twincontrol.borderstyle.html + TabStop controls/twincontrol.tabstop.html + TListView comctrls/tlistview.html + AllocBy comctrls/tcustomlistview.allocby.html + AutoSort comctrls/tlistview.autosort.html + AutoWidthLastColumn comctrls/tlistview.autowidthlastcolumn.html + DragKind comctrls/tlistview.dragkind.html + GridLines comctrls/tcustomlistview.gridlines.html + HideSelection comctrls/tlistview.hideselection.html + IconOptions comctrls/tlistview.iconoptions.html + OwnerData comctrls/tcustomlistview.ownerdata.html + OwnerDraw comctrls/tcustomlistview.ownerdraw.html + SortDirection comctrls/tlistview.sortdirection.html + OnCreateItemClass comctrls/tlistview.oncreateitemclass.html + OnData comctrls/tlistview.ondata.html + OnDataFind comctrls/tlistview.ondatafind.html + OnDataHint comctrls/tlistview.ondatahint.html + OnDataStateChange comctrls/tlistview.ondatastatechange.html + OnDrawItem comctrls/tlistview.ondrawitem.html + OnEdited comctrls/tlistview.onedited.html + OnEditing comctrls/tlistview.onediting.html + OnEndDock comctrls/tlistview.onenddock.html + OnEnter comctrls/tlistview.onenter.html + OnExit comctrls/tlistview.onexit.html + OnInsert comctrls/tcustomlistview.oninsert.html + OnItemChecked comctrls/tlistview.onitemchecked.html + OnMouseEnter comctrls/tlistview.onmouseenter.html + OnMouseLeave comctrls/tlistview.onmouseleave.html + OnMouseWheel comctrls/tlistview.onmousewheel.html + OnMouseWheelDown comctrls/tlistview.onmousewheeldown.html + OnMouseWheelUp comctrls/tlistview.onmousewheelup.html + OnStartDock comctrls/tlistview.onstartdock.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + BorderWidth controls/twincontrol.borderwidth.html + Checkboxes comctrls/tcustomlistview.checkboxes.html + Color controls/tcontrol.color.html + Columns comctrls/tcustomlistview.columns.html + ColumnClick comctrls/tcustomlistview.columnclick.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Items comctrls/tcustomlistview.items.html + LargeImages comctrls/tcustomlistview.largeimages.html + MultiSelect comctrls/tcustomlistview.multiselect.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly comctrls/tcustomlistview.readonly.html + RowSelect comctrls/tcustomlistview.rowselect.html + ScrollBars comctrls/tcustomlistview.scrollbars.html + ShowColumnHeaders comctrls/tcustomlistview.showcolumnheaders.html + ShowHint controls/tcontrol.showhint.html + SmallImages comctrls/tcustomlistview.smallimages.html + SortColumn comctrls/tcustomlistview.sortcolumn.html + SortType comctrls/tcustomlistview.sorttype.html + StateImages comctrls/tcustomlistview.stateimages.html + TabStop controls/twincontrol.tabstop.html + TabOrder controls/twincontrol.taborder.html + ToolTips comctrls/tcustomlistview.tooltips.html + Visible controls/tcontrol.visible.html + ViewStyle comctrls/tcustomlistview.viewstyle.html + OnAdvancedCustomDraw comctrls/tcustomlistview.onadvancedcustomdraw.html + OnAdvancedCustomDrawItem comctrls/tcustomlistview.onadvancedcustomdrawitem.html + OnAdvancedCustomDrawSubItem comctrls/tcustomlistview.onadvancedcustomdrawsubitem.html + OnChange comctrls/tcustomlistview.onchange.html + OnClick controls/tcontrol.onclick.html + OnColumnClick comctrls/tcustomlistview.oncolumnclick.html + OnCompare comctrls/tcustomlistview.oncompare.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnCustomDraw comctrls/tcustomlistview.oncustomdraw.html + OnCustomDrawItem comctrls/tcustomlistview.oncustomdrawitem.html + OnCustomDrawSubItem comctrls/tcustomlistview.oncustomdrawsubitem.html + OnDblClick controls/tcontrol.ondblclick.html + OnDeletion comctrls/tcustomlistview.ondeletion.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnSelectItem comctrls/tcustomlistview.onselectitem.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TCustomProgressBar comctrls/tcustomprogressbar.html + ApplyChanges comctrls/tcustomprogressbar.applychanges.html + InitializeWnd comctrls/tcustomprogressbar.initializewnd.html + Loaded comctrls/tcustomprogressbar.loaded.html + GetControlClassDefaultSize comctrls/tcustomprogressbar.getcontrolclassdefaultsize.html + Create comctrls/tcustomprogressbar.create.html + StepIt comctrls/tcustomprogressbar.stepit.html + StepBy comctrls/tcustomprogressbar.stepby.html + Max comctrls/tcustomprogressbar.max.html + Min comctrls/tcustomprogressbar.min.html + Orientation comctrls/tcustomprogressbar.orientation.html + Position comctrls/tcustomprogressbar.position.html + Smooth comctrls/tcustomprogressbar.smooth.html + Step comctrls/tcustomprogressbar.step.html + Style comctrls/tcustomprogressbar.style.html + BarShowText comctrls/tcustomprogressbar.barshowtext.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TProgressBar comctrls/tprogressbar.html + OnMouseEnter comctrls/tprogressbar.onmouseenter.html + OnMouseLeave comctrls/tprogressbar.onmouseleave.html + OnMouseWheel comctrls/tprogressbar.onmousewheel.html + OnMouseWheelDown comctrls/tprogressbar.onmousewheeldown.html + OnMouseWheelUp comctrls/tprogressbar.onmousewheelup.html + Style comctrls/tprogressbar.style.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderWidth controls/twincontrol.borderwidth.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Hint controls/tcontrol.hint.html + Max comctrls/tcustomprogressbar.max.html + Min comctrls/tcustomprogressbar.min.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + Orientation comctrls/tcustomprogressbar.orientation.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + Position comctrls/tcustomprogressbar.position.html + ShowHint controls/tcontrol.showhint.html + Smooth comctrls/tcustomprogressbar.smooth.html + Step comctrls/tcustomprogressbar.step.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + BarShowText comctrls/tcustomprogressbar.barshowtext.html + TCustomUpDown comctrls/tcustomupdown.html + AssociateKeyDown comctrls/tcustomupdown.associatekeydown.html + OnAssociateChangeBounds comctrls/tcustomupdown.onassociatechangebounds.html + OnAssociateChangeEnabled comctrls/tcustomupdown.onassociatechangeenabled.html + OnAssociateChangeVisible comctrls/tcustomupdown.onassociatechangevisible.html + DoSetBounds comctrls/tcustomupdown.dosetbounds.html + SetEnabled comctrls/tcustomupdown.setenabled.html + GetControlClassDefaultSize comctrls/tcustomupdown.getcontrolclassdefaultsize.html + CalculatePreferredSize comctrls/tcustomupdown.calculatepreferredsize.html + CanChange comctrls/tcustomupdown.canchange.html + Notification comctrls/tcustomupdown.notification.html + Click comctrls/tcustomupdown.click.html + AlignButton comctrls/tcustomupdown.alignbutton.html + ArrowKeys comctrls/tcustomupdown.arrowkeys.html + Associate comctrls/tcustomupdown.associate.html + Increment comctrls/tcustomupdown.increment.html + Max comctrls/tcustomupdown.max.html + Min comctrls/tcustomupdown.min.html + OnChanging comctrls/tcustomupdown.onchanging.html + OnChangingEx comctrls/tcustomupdown.onchangingex.html + OnClick comctrls/tcustomupdown.onclick.html + Orientation comctrls/tcustomupdown.orientation.html + Position comctrls/tcustomupdown.position.html + Thousands comctrls/tcustomupdown.thousands.html + Wrap comctrls/tcustomupdown.wrap.html + Create comctrls/tcustomupdown.create.html + Destroy comctrls/tcustomupdown.destroy.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TUpDown comctrls/tupdown.html + OnChangingEx comctrls/tupdown.onchangingex.html + OnMouseEnter comctrls/tupdown.onmouseenter.html + OnMouseLeave comctrls/tupdown.onmouseleave.html + OnMouseWheel comctrls/tupdown.onmousewheel.html + OnMouseWheelDown comctrls/tupdown.onmousewheeldown.html + OnMouseWheelUp comctrls/tupdown.onmousewheelup.html + AlignButton comctrls/tcustomupdown.alignbutton.html + Anchors controls/tcontrol.anchors.html + ArrowKeys comctrls/tcustomupdown.arrowkeys.html + Associate comctrls/tcustomupdown.associate.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + Enabled controls/tcontrol.enabled.html + Hint controls/tcontrol.hint.html + Increment comctrls/tcustomupdown.increment.html + Max comctrls/tcustomupdown.max.html + Min comctrls/tcustomupdown.min.html + OnChanging comctrls/tcustomupdown.onchanging.html + OnClick comctrls/tcustomupdown.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + Orientation comctrls/tcustomupdown.orientation.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + Position comctrls/tcustomupdown.position.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Thousands comctrls/tcustomupdown.thousands.html + Visible controls/tcontrol.visible.html + Wrap comctrls/tcustomupdown.wrap.html + TToolButtonActionLink comctrls/ttoolbuttonactionlink.html + AssignClient comctrls/ttoolbuttonactionlink.assignclient.html + SetChecked comctrls/ttoolbuttonactionlink.setchecked.html + SetImageIndex comctrls/ttoolbuttonactionlink.setimageindex.html + IsCheckedLinked actnlist/tactionlink.ischeckedlinked.html + IsImageIndexLinked actnlist/tactionlink.isimageindexlinked.html + TToolButton comctrls/ttoolbutton.html + cDefSeparatorWidth comctrls/ttoolbutton.cdefseparatorwidth.html + cDefDividerWidth comctrls/ttoolbutton.cdefdividerwidth.html + FToolBar comctrls/ttoolbutton.ftoolbar.html + CopyPropertiesFromMenuItem comctrls/ttoolbutton.copypropertiesfrommenuitem.html + GetActionLinkClass comctrls/ttoolbutton.getactionlinkclass.html + ActionChange comctrls/ttoolbutton.actionchange.html + AssignTo comctrls/ttoolbutton.assignto.html + BeginUpdate comctrls/ttoolbutton.beginupdate.html + EndUpdate comctrls/ttoolbutton.endupdate.html + GetControlClassDefaultSize comctrls/ttoolbutton.getcontrolclassdefaultsize.html + RefreshControl comctrls/ttoolbutton.refreshcontrol.html + SetToolBar comctrls/ttoolbutton.settoolbar.html + UpdateControl comctrls/ttoolbutton.updatecontrol.html + GetButtonDrawDetail comctrls/ttoolbutton.getbuttondrawdetail.html + UpdateVisibleToolbar comctrls/ttoolbutton.updatevisibletoolbar.html + GroupAllUpAllowed comctrls/ttoolbutton.groupallupallowed.html + SetAutoSize comctrls/ttoolbutton.setautosize.html + RealSetText comctrls/ttoolbutton.realsettext.html + Create comctrls/ttoolbutton.create.html + CheckMenuDropdown comctrls/ttoolbutton.checkmenudropdown.html + GetCurrentIcon comctrls/ttoolbutton.getcurrenticon.html + Index comctrls/ttoolbutton.index.html + AllowAllUp comctrls/ttoolbutton.allowallup.html + Down comctrls/ttoolbutton.down.html + DropdownMenu comctrls/ttoolbutton.dropdownmenu.html + Grouped comctrls/ttoolbutton.grouped.html + ImageIndex comctrls/ttoolbutton.imageindex.html + Indeterminate comctrls/ttoolbutton.indeterminate.html + Marked comctrls/ttoolbutton.marked.html + MenuItem comctrls/ttoolbutton.menuitem.html + OnMouseEnter comctrls/ttoolbutton.onmouseenter.html + OnMouseLeave comctrls/ttoolbutton.onmouseleave.html + OnMouseWheel comctrls/ttoolbutton.onmousewheel.html + OnMouseWheelDown comctrls/ttoolbutton.onmousewheeldown.html + OnMouseWheelUp comctrls/ttoolbutton.onmousewheelup.html + ShowCaption comctrls/ttoolbutton.showcaption.html + Style comctrls/ttoolbutton.style.html + Wrap comctrls/ttoolbutton.wrap.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + MouseDown controls/tcontrol.mousedown.html + MouseUp controls/tcontrol.mouseup.html + MouseEnter controls/tcontrol.mouseenter.html + MouseLeave controls/tcontrol.mouseleave.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Paint controls/tgraphiccontrol.paint.html + TextChanged controls/tcontrol.textchanged.html + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + Loaded + SetParent + DialogChar controls/tcontrol.dialogchar.html + Click controls/tcontrol.click.html + GetPreferredSize controls/tcontrol.getpreferredsize.html + Action controls/tcontrol.action.html + AutoSize controls/tcontrol.autosize.html + Caption controls/tcontrol.caption.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Height controls/tcontrol.height.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + Visible controls/tcontrol.visible.html + Width controls/tcontrol.width.html + TToolBarEnumerator comctrls/ttoolbarenumerator.html + Create comctrls/ttoolbarenumerator.create.html + MoveNext comctrls/ttoolbarenumerator.movenext.html + Current comctrls/ttoolbarenumerator.current.html + TToolBar comctrls/ttoolbar.html + cDefButtonWidth comctrls/ttoolbar.cdefbuttonwidth.html + cDefButtonHeight comctrls/ttoolbar.cdefbuttonheight.html + FPrevVertical comctrls/ttoolbar.fprevvertical.html + IsVertical comctrls/ttoolbar.isvertical.html + GetControlClassDefaultSize comctrls/ttoolbar.getcontrolclassdefaultsize.html + DoAutoSize comctrls/ttoolbar.doautosize.html + CheckMenuDropdown comctrls/ttoolbar.checkmenudropdown.html + ClickButton comctrls/ttoolbar.clickbutton.html + FindButtonFromAccel comctrls/ttoolbar.findbuttonfromaccel.html + FontChanged comctrls/ttoolbar.fontchanged.html + RepositionButton comctrls/ttoolbar.repositionbutton.html + RepositionButtons comctrls/ttoolbar.repositionbuttons.html + WrapButtons comctrls/ttoolbar.wrapbuttons.html + CNDropDownClosed comctrls/ttoolbar.cndropdownclosed.html + Create comctrls/ttoolbar.create.html + Destroy comctrls/ttoolbar.destroy.html + EndUpdate comctrls/ttoolbar.endupdate.html + GetEnumerator comctrls/ttoolbar.getenumerator.html + SetButtonSize comctrls/ttoolbar.setbuttonsize.html + ButtonCount comctrls/ttoolbar.buttoncount.html + Buttons comctrls/ttoolbar.buttons.html + ButtonList comctrls/ttoolbar.buttonlist.html + RowCount comctrls/ttoolbar.rowcount.html + Anchors comctrls/ttoolbar.anchors.html + ButtonHeight comctrls/ttoolbar.buttonheight.html + ButtonWidth comctrls/ttoolbar.buttonwidth.html + DisabledImages comctrls/ttoolbar.disabledimages.html + EdgeBorders comctrls/ttoolbar.edgeborders.html + EdgeInner comctrls/ttoolbar.edgeinner.html + EdgeOuter comctrls/ttoolbar.edgeouter.html + Flat comctrls/ttoolbar.flat.html + HotImages comctrls/ttoolbar.hotimages.html + Images comctrls/ttoolbar.images.html + Indent comctrls/ttoolbar.indent.html + List comctrls/ttoolbar.list.html + ShowCaptions comctrls/ttoolbar.showcaptions.html + Transparent comctrls/ttoolbar.transparent.html + Wrapable comctrls/ttoolbar.wrapable.html + OnPaintButton comctrls/ttoolbar.onpaintbutton.html + OnMouseWheel comctrls/ttoolbar.onmousewheel.html + OnMouseWheelDown comctrls/ttoolbar.onmousewheeldown.html + OnMouseWheelUp comctrls/ttoolbar.onmousewheelup.html + OnPaint comctrls/ttoolbar.onpaint.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + AdjustClientRect controls/twincontrol.adjustclientrect.html + CalculatePreferredSize controls/tcontrol.calculatepreferredsize.html + CreateWnd controls/twincontrol.createwnd.html + ControlsAligned controls/twincontrol.controlsaligned.html + Loaded controls/twincontrol.loaded.html + Notification controls/tcontrol.notification.html + Paint controls/tcustomcontrol.paint.html + FlipChildren controls/twincontrol.flipchildren.html + CanFocus controls/twincontrol.canfocus.html + Align controls/tcontrol.align.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderWidth controls/twincontrol.borderwidth.html + Caption controls/tcontrol.caption.html + ChildSizing controls/twincontrol.childsizing.html + Constraints controls/tcontrol.constraints.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Height controls/tcontrol.height.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnStartDrag controls/tcontrol.onstartdrag.html + TCoolBand comctrls/tcoolband.html + cDefMinHeight comctrls/tcoolband.cdefminheight.html + cDefMinWidth comctrls/tcoolband.cdefminwidth.html + cDefWidth comctrls/tcoolband.cdefwidth.html + cDivider comctrls/tcoolband.cdivider.html + cGrabIndent comctrls/tcoolband.cgrabindent.html + FControlLeft comctrls/tcoolband.fcontrolleft.html + FControlTop comctrls/tcoolband.fcontroltop.html + FTextWidth comctrls/tcoolband.ftextwidth.html + CalcControlLeft comctrls/tcoolband.calccontrolleft.html + CalcPreferredHeight comctrls/tcoolband.calcpreferredheight.html + CalcPreferredWidth comctrls/tcoolband.calcpreferredwidth.html + CalcTextWidth comctrls/tcoolband.calctextwidth.html + GetDisplayName comctrls/tcoolband.getdisplayname.html + Create comctrls/tcoolband.create.html + Destroy comctrls/tcoolband.destroy.html + Assign comctrls/tcoolband.assign.html + AutosizeWidth comctrls/tcoolband.autosizewidth.html + InvalidateCoolBar comctrls/tcoolband.invalidatecoolbar.html + Height comctrls/tcoolband.height.html + Left comctrls/tcoolband.left.html + Right comctrls/tcoolband.right.html + Top comctrls/tcoolband.top.html + Bitmap comctrls/tcoolband.bitmap.html + BorderStyle comctrls/tcoolband.borderstyle.html + Break comctrls/tcoolband.break.html + Color comctrls/tcoolband.color.html + Control comctrls/tcoolband.control.html + FixedBackground comctrls/tcoolband.fixedbackground.html + FixedSize comctrls/tcoolband.fixedsize.html + HorizontalOnly comctrls/tcoolband.horizontalonly.html + ImageIndex comctrls/tcoolband.imageindex.html + MinHeight comctrls/tcoolband.minheight.html + MinWidth comctrls/tcoolband.minwidth.html + ParentColor comctrls/tcoolband.parentcolor.html + ParentBitmap comctrls/tcoolband.parentbitmap.html + Text comctrls/tcoolband.text.html + Visible comctrls/tcoolband.visible.html + Width comctrls/tcoolband.width.html + TCoolBands comctrls/tcoolbands.html + GetOwner comctrls/tcoolbands.getowner.html + Update comctrls/tcoolbands.update.html + Notify comctrls/tcoolbands.notify.html + Create comctrls/tcoolbands.create.html + Add comctrls/tcoolbands.add.html + FindBand comctrls/tcoolbands.findband.html + Items comctrls/tcoolbands.items.html + TCustomCoolBar comctrls/tcustomcoolbar.html + cDefGrabStyle comctrls/tcustomcoolbar.cdefgrabstyle.html + cDefGrabWidth comctrls/tcustomcoolbar.cdefgrabwidth.html + cDefHorSpacing comctrls/tcustomcoolbar.cdefhorspacing.html + cDefVertSpacing comctrls/tcustomcoolbar.cdefvertspacing.html + cNewRowBelow comctrls/tcustomcoolbar.cnewrowbelow.html + cNewRowAbove comctrls/tcustomcoolbar.cnewrowabove.html + FBorderEdges comctrls/tcustomcoolbar.fborderedges.html + FBorderLeft comctrls/tcustomcoolbar.fborderleft.html + FBorderTop comctrls/tcustomcoolbar.fbordertop.html + FBorderRight comctrls/tcustomcoolbar.fborderright.html + FBorderBottom comctrls/tcustomcoolbar.fborderbottom.html + FBorderWidth comctrls/tcustomcoolbar.fborderwidth.html + FCursorBkgnd comctrls/tcustomcoolbar.fcursorbkgnd.html + FDragBand comctrls/tcustomcoolbar.fdragband.html + FDraggedBandIndex comctrls/tcustomcoolbar.fdraggedbandindex.html + FDragInitPos comctrls/tcustomcoolbar.fdraginitpos.html + FLockCursor comctrls/tcustomcoolbar.flockcursor.html + FRightToLeft comctrls/tcustomcoolbar.frighttoleft.html + FTextHeight comctrls/tcustomcoolbar.ftextheight.html + FVisiBands comctrls/tcustomcoolbar.fvisibands.html + AlignControls comctrls/tcustomcoolbar.aligncontrols.html + BitmapOrImageListChange comctrls/tcustomcoolbar.bitmaporimagelistchange.html + CalculatePreferredSize comctrls/tcustomcoolbar.calculatepreferredsize.html + CalculateAndAlign comctrls/tcustomcoolbar.calculateandalign.html + CalculateRealIndex comctrls/tcustomcoolbar.calculaterealindex.html + ChangeCursor comctrls/tcustomcoolbar.changecursor.html + CMBiDiModeChanged comctrls/tcustomcoolbar.cmbidimodechanged.html + CreateWnd comctrls/tcustomcoolbar.createwnd.html + DoFontChanged comctrls/tcustomcoolbar.dofontchanged.html + DrawTiledBitmap comctrls/tcustomcoolbar.drawtiledbitmap.html + FontChanged comctrls/tcustomcoolbar.fontchanged.html + IsFirstAtRow comctrls/tcustomcoolbar.isfirstatrow.html + IsRowEnd comctrls/tcustomcoolbar.isrowend.html + MouseDown comctrls/tcustomcoolbar.mousedown.html + MouseMove comctrls/tcustomcoolbar.mousemove.html + MouseUp comctrls/tcustomcoolbar.mouseup.html + Notification comctrls/tcustomcoolbar.notification.html + Paint + SetAlign comctrls/tcustomcoolbar.setalign.html + SetAutoSize comctrls/tcustomcoolbar.setautosize.html + SetCursor comctrls/tcustomcoolbar.setcursor.html + WMSize comctrls/tcustomcoolbar.wmsize.html + Create + Destroy comctrls/tcustomcoolbar.destroy.html + AutosizeBands comctrls/tcustomcoolbar.autosizebands.html + EndUpdate comctrls/tcustomcoolbar.endupdate.html + Invalidate comctrls/tcustomcoolbar.invalidate.html + InsertControl comctrls/tcustomcoolbar.insertcontrol.html + MouseToBandPos comctrls/tcustomcoolbar.mousetobandpos.html + RemoveControl comctrls/tcustomcoolbar.removecontrol.html + Align comctrls/tcustomcoolbar.align.html + BandBorderStyle comctrls/tcustomcoolbar.bandborderstyle.html + BandMaximize comctrls/tcustomcoolbar.bandmaximize.html + Bands comctrls/tcustomcoolbar.bands.html + Bitmap comctrls/tcustomcoolbar.bitmap.html + FixedSize comctrls/tcustomcoolbar.fixedsize.html + FixedOrder comctrls/tcustomcoolbar.fixedorder.html + GrabStyle comctrls/tcustomcoolbar.grabstyle.html + GrabWidth comctrls/tcustomcoolbar.grabwidth.html + HorizontalSpacing comctrls/tcustomcoolbar.horizontalspacing.html + Images comctrls/tcustomcoolbar.images.html + ShowText comctrls/tcustomcoolbar.showtext.html + Vertical comctrls/tcustomcoolbar.vertical.html + VerticalSpacing comctrls/tcustomcoolbar.verticalspacing.html + OnChange comctrls/tcustomcoolbar.onchange.html + TCoolBar comctrls/tcoolbar.html + Align comctrls/tcoolbar.align.html + Anchors comctrls/tcoolbar.anchors.html + AutoSize comctrls/tcoolbar.autosize.html + BandBorderStyle comctrls/tcoolbar.bandborderstyle.html + BandMaximize comctrls/tcoolbar.bandmaximize.html + Bands comctrls/tcoolbar.bands.html + BiDiMode comctrls/tcoolbar.bidimode.html + BorderWidth comctrls/tcoolbar.borderwidth.html + Color comctrls/tcoolbar.color.html + Constraints comctrls/tcoolbar.constraints.html + DockSite comctrls/tcoolbar.docksite.html + DragCursor comctrls/tcoolbar.dragcursor.html + DragKind comctrls/tcoolbar.dragkind.html + DragMode comctrls/tcoolbar.dragmode.html + EdgeBorders comctrls/tcoolbar.edgeborders.html + EdgeInner comctrls/tcoolbar.edgeinner.html + EdgeOuter comctrls/tcoolbar.edgeouter.html + Enabled comctrls/tcoolbar.enabled.html + FixedSize comctrls/tcoolbar.fixedsize.html + FixedOrder comctrls/tcoolbar.fixedorder.html + Font comctrls/tcoolbar.font.html + GrabStyle comctrls/tcoolbar.grabstyle.html + GrabWidth comctrls/tcoolbar.grabwidth.html + HorizontalSpacing comctrls/tcoolbar.horizontalspacing.html + Images comctrls/tcoolbar.images.html + ParentColor comctrls/tcoolbar.parentcolor.html + ParentFont comctrls/tcoolbar.parentfont.html + ParentShowHint comctrls/tcoolbar.parentshowhint.html + Bitmap comctrls/tcoolbar.bitmap.html + PopupMenu comctrls/tcoolbar.popupmenu.html + ShowHint comctrls/tcoolbar.showhint.html + ShowText comctrls/tcoolbar.showtext.html + Vertical comctrls/tcoolbar.vertical.html + VerticalSpacing comctrls/tcoolbar.verticalspacing.html + Visible comctrls/tcoolbar.visible.html + OnChange comctrls/tcoolbar.onchange.html + OnClick comctrls/tcoolbar.onclick.html + OnContextPopup comctrls/tcoolbar.oncontextpopup.html + OnDblClick comctrls/tcoolbar.ondblclick.html + OnDockDrop comctrls/tcoolbar.ondockdrop.html + OnDockOver comctrls/tcoolbar.ondockover.html + OnDragDrop comctrls/tcoolbar.ondragdrop.html + OnDragOver comctrls/tcoolbar.ondragover.html + OnEndDock comctrls/tcoolbar.onenddock.html + OnEndDrag comctrls/tcoolbar.onenddrag.html + OnGetSiteInfo comctrls/tcoolbar.ongetsiteinfo.html + OnMouseDown comctrls/tcoolbar.onmousedown.html + OnMouseEnter comctrls/tcoolbar.onmouseenter.html + OnMouseLeave comctrls/tcoolbar.onmouseleave.html + OnMouseMove comctrls/tcoolbar.onmousemove.html + OnMouseUp comctrls/tcoolbar.onmouseup.html + OnMouseWheel comctrls/tcoolbar.onmousewheel.html + OnMouseWheelDown comctrls/tcoolbar.onmousewheeldown.html + OnMouseWheelUp comctrls/tcoolbar.onmousewheelup.html + OnResize comctrls/tcoolbar.onresize.html + OnStartDock comctrls/tcoolbar.onstartdock.html + OnStartDrag comctrls/tcoolbar.onstartdrag.html + OnUnDock comctrls/tcoolbar.onundock.html + TCustomTrackBar comctrls/tcustomtrackbar.html + ApplyChanges comctrls/tcustomtrackbar.applychanges.html + Changed comctrls/tcustomtrackbar.changed.html + DoChange comctrls/tcustomtrackbar.dochange.html + FixParams comctrls/tcustomtrackbar.fixparams.html + GetControlClassDefaultSize comctrls/tcustomtrackbar.getcontrolclassdefaultsize.html + Create comctrls/tcustomtrackbar.create.html + SetTick comctrls/tcustomtrackbar.settick.html + Frequency comctrls/tcustomtrackbar.frequency.html + LineSize comctrls/tcustomtrackbar.linesize.html + Max comctrls/tcustomtrackbar.max.html + Min comctrls/tcustomtrackbar.min.html + OnChange comctrls/tcustomtrackbar.onchange.html + Orientation comctrls/tcustomtrackbar.orientation.html + PageSize comctrls/tcustomtrackbar.pagesize.html + Position comctrls/tcustomtrackbar.position.html + Reversed comctrls/tcustomtrackbar.reversed.html + ScalePos comctrls/tcustomtrackbar.scalepos.html + SelEnd comctrls/tcustomtrackbar.selend.html + SelStart comctrls/tcustomtrackbar.selstart.html + ShowSelRange comctrls/tcustomtrackbar.showselrange.html + TickMarks comctrls/tcustomtrackbar.tickmarks.html + TickStyle comctrls/tcustomtrackbar.tickstyle.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + InitializeWnd controls/twincontrol.initializewnd.html + Loaded controls/twincontrol.loaded.html + TabStop controls/twincontrol.tabstop.html + TTrackBar comctrls/ttrackbar.html + Reversed comctrls/ttrackbar.reversed.html + SelEnd comctrls/ttrackbar.selend.html + SelStart comctrls/ttrackbar.selstart.html + ShowSelRange comctrls/ttrackbar.showselrange.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Frequency comctrls/tcustomtrackbar.frequency.html + Hint controls/tcontrol.hint.html + LineSize comctrls/tcustomtrackbar.linesize.html + Max comctrls/tcustomtrackbar.max.html + Min comctrls/tcustomtrackbar.min.html + OnChange comctrls/tcustomtrackbar.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + Orientation comctrls/tcustomtrackbar.orientation.html + PageSize comctrls/tcustomtrackbar.pagesize.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + Position comctrls/tcustomtrackbar.position.html + ScalePos comctrls/tcustomtrackbar.scalepos.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TickMarks comctrls/tcustomtrackbar.tickmarks.html + TickStyle comctrls/tcustomtrackbar.tickstyle.html + Visible controls/tcontrol.visible.html + ETreeNodeError comctrls/etreenodeerror.html + ETreeViewError comctrls/etreeviewerror.html + TTreeNode comctrls/ttreenode.html + Changed comctrls/ttreenode.changed.html + GetOwner comctrls/ttreenode.getowner.html + Create comctrls/ttreenode.create.html + Destroy comctrls/ttreenode.destroy.html + AlphaSort comctrls/ttreenode.alphasort.html + Bottom comctrls/ttreenode.bottom.html + BottomExpanded comctrls/ttreenode.bottomexpanded.html + CustomSort comctrls/ttreenode.customsort.html + DefaultTreeViewSort comctrls/ttreenode.defaulttreeviewsort.html + DisplayExpandSignLeft comctrls/ttreenode.displayexpandsignleft.html + DisplayExpandSignRect comctrls/ttreenode.displayexpandsignrect.html + DisplayExpandSignRight comctrls/ttreenode.displayexpandsignright.html + DisplayIconLeft comctrls/ttreenode.displayiconleft.html + DisplayRect comctrls/ttreenode.displayrect.html + DisplayStateIconLeft comctrls/ttreenode.displaystateiconleft.html + DisplayTextLeft comctrls/ttreenode.displaytextleft.html + DisplayTextRight comctrls/ttreenode.displaytextright.html + EditText comctrls/ttreenode.edittext.html + FindNode comctrls/ttreenode.findnode.html + GetFirstChild comctrls/ttreenode.getfirstchild.html + GetFirstVisibleChild comctrls/ttreenode.getfirstvisiblechild.html + GetHandle comctrls/ttreenode.gethandle.html + GetLastChild comctrls/ttreenode.getlastchild.html + GetLastSibling comctrls/ttreenode.getlastsibling.html + GetLastSubChild comctrls/ttreenode.getlastsubchild.html + GetLastVisibleChild comctrls/ttreenode.getlastvisiblechild.html + GetNext comctrls/ttreenode.getnext.html + GetNextChild comctrls/ttreenode.getnextchild.html + GetNextExpanded comctrls/ttreenode.getnextexpanded.html + GetNextMultiSelected comctrls/ttreenode.getnextmultiselected.html + GetNextSibling comctrls/ttreenode.getnextsibling.html + GetNextSkipChildren comctrls/ttreenode.getnextskipchildren.html + GetNextVisible comctrls/ttreenode.getnextvisible.html + GetNextVisibleSibling comctrls/ttreenode.getnextvisiblesibling.html + GetParentNodeOfAbsoluteLevel comctrls/ttreenode.getparentnodeofabsolutelevel.html + GetPrev comctrls/ttreenode.getprev.html + GetPrevChild comctrls/ttreenode.getprevchild.html + GetPrevExpanded comctrls/ttreenode.getprevexpanded.html + GetPrevMultiSelected comctrls/ttreenode.getprevmultiselected.html + GetPrevSibling comctrls/ttreenode.getprevsibling.html + GetPrevVisible comctrls/ttreenode.getprevvisible.html + GetPrevVisibleSibling comctrls/ttreenode.getprevvisiblesibling.html + GetTextPath comctrls/ttreenode.gettextpath.html + HasAsParent comctrls/ttreenode.hasasparent.html + IndexOf comctrls/ttreenode.indexof.html + IndexOfText comctrls/ttreenode.indexoftext.html + Assign comctrls/ttreenode.assign.html + Collapse comctrls/ttreenode.collapse.html + ConsistencyCheck comctrls/ttreenode.consistencycheck.html + Delete comctrls/ttreenode.delete.html + DeleteChildren comctrls/ttreenode.deletechildren.html + EndEdit comctrls/ttreenode.endedit.html + Expand comctrls/ttreenode.expand.html + ExpandParents comctrls/ttreenode.expandparents.html + FreeAllNodeData comctrls/ttreenode.freeallnodedata.html + MakeVisible comctrls/ttreenode.makevisible.html + MoveTo comctrls/ttreenode.moveto.html + MultiSelectGroup comctrls/ttreenode.multiselectgroup.html + Update comctrls/ttreenode.update.html + WriteDebugReport comctrls/ttreenode.writedebugreport.html + AbsoluteIndex comctrls/ttreenode.absoluteindex.html + Count comctrls/ttreenode.count.html + Cut comctrls/ttreenode.cut.html + Data comctrls/ttreenode.data.html + Deleting comctrls/ttreenode.deleting.html + DropTarget comctrls/ttreenode.droptarget.html + Expanded comctrls/ttreenode.expanded.html + Focused comctrls/ttreenode.focused.html + Handle comctrls/ttreenode.handle.html + HasChildren comctrls/ttreenode.haschildren.html + Height comctrls/ttreenode.height.html + ImageIndex comctrls/ttreenode.imageindex.html + Index comctrls/ttreenode.index.html + IsFullHeightVisible comctrls/ttreenode.isfullheightvisible.html + IsVisible comctrls/ttreenode.isvisible.html + Items comctrls/ttreenode.items.html + Level comctrls/ttreenode.level.html + MultiSelected comctrls/ttreenode.multiselected.html + NodeEffect comctrls/ttreenode.nodeeffect.html + OverlayIndex comctrls/ttreenode.overlayindex.html + Owner comctrls/ttreenode.owner.html + Parent comctrls/ttreenode.parent.html + Selected comctrls/ttreenode.selected.html + SelectedIndex comctrls/ttreenode.selectedindex.html + StateIndex comctrls/ttreenode.stateindex.html + States comctrls/ttreenode.states.html + SubTreeCount comctrls/ttreenode.subtreecount.html + Text comctrls/ttreenode.text.html + Top comctrls/ttreenode.top.html + TreeNodes comctrls/ttreenode.treenodes.html + TreeView comctrls/ttreenode.treeview.html + Visible comctrls/ttreenode.visible.html + TTreeNodesEnumerator comctrls/ttreenodesenumerator.html + Create comctrls/ttreenodesenumerator.create.html + MoveNext comctrls/ttreenodesenumerator.movenext.html + Current comctrls/ttreenodesenumerator.current.html + TTreeNodes comctrls/ttreenodes.html + InternalAddObject comctrls/ttreenodes.internaladdobject.html + GetCount comctrls/ttreenodes.getcount.html + GetOwner comctrls/ttreenodes.getowner.html + SetItem comctrls/ttreenodes.setitem.html + SetUpdateState comctrls/ttreenodes.setupdatestate.html + Create comctrls/ttreenodes.create.html + Destroy comctrls/ttreenodes.destroy.html + Add comctrls/ttreenodes.add.html + AddChild comctrls/ttreenodes.addchild.html + AddChildFirst comctrls/ttreenodes.addchildfirst.html + AddChildObject comctrls/ttreenodes.addchildobject.html + AddChildObjectFirst comctrls/ttreenodes.addchildobjectfirst.html + AddFirst comctrls/ttreenodes.addfirst.html + AddNode comctrls/ttreenodes.addnode.html + AddObject comctrls/ttreenodes.addobject.html + AddObjectFirst comctrls/ttreenodes.addobjectfirst.html + FindNodeWithData comctrls/ttreenodes.findnodewithdata.html + FindNodeWithText comctrls/ttreenodes.findnodewithtext.html + FindNodeWithTextPath comctrls/ttreenodes.findnodewithtextpath.html + FindTopLvlNode comctrls/ttreenodes.findtoplvlnode.html + GetEnumerator comctrls/ttreenodes.getenumerator.html + GetFirstNode comctrls/ttreenodes.getfirstnode.html + GetFirstVisibleNode comctrls/ttreenodes.getfirstvisiblenode.html + GetLastExpandedSubNode comctrls/ttreenodes.getlastexpandedsubnode.html + GetLastNode comctrls/ttreenodes.getlastnode.html + GetLastSubNode comctrls/ttreenodes.getlastsubnode.html + GetLastVisibleNode comctrls/ttreenodes.getlastvisiblenode.html + GetSelections comctrls/ttreenodes.getselections.html + Insert comctrls/ttreenodes.insert.html + InsertBehind comctrls/ttreenodes.insertbehind.html + InsertObject comctrls/ttreenodes.insertobject.html + InsertObjectBehind comctrls/ttreenodes.insertobjectbehind.html + IsMultiSelection comctrls/ttreenodes.ismultiselection.html + Assign comctrls/ttreenodes.assign.html + BeginUpdate comctrls/ttreenodes.beginupdate.html + Clear comctrls/ttreenodes.clear.html + ClearMultiSelection comctrls/ttreenodes.clearmultiselection.html + ConsistencyCheck comctrls/ttreenodes.consistencycheck.html + Delete comctrls/ttreenodes.delete.html + EndUpdate comctrls/ttreenodes.endupdate.html + FreeAllNodeData comctrls/ttreenodes.freeallnodedata.html + SelectionsChanged comctrls/ttreenodes.selectionschanged.html + SelectOnlyThis comctrls/ttreenodes.selectonlythis.html + MultiSelect comctrls/ttreenodes.multiselect.html + SortTopLevelNodes comctrls/ttreenodes.sorttoplevelnodes.html + WriteDebugReport comctrls/ttreenodes.writedebugreport.html + Count comctrls/ttreenodes.count.html + Item comctrls/ttreenodes.item.html + KeepCollapsedNodes comctrls/ttreenodes.keepcollapsednodes.html + Owner comctrls/ttreenodes.owner.html + SelectionCount comctrls/ttreenodes.selectioncount.html + TopLvlCount comctrls/ttreenodes.toplvlcount.html + TopLvlItems comctrls/ttreenodes.toplvlitems.html + DefineProperties + TCustomTreeView comctrls/tcustomtreeview.html + FChangeTimer comctrls/tcustomtreeview.fchangetimer.html + FEditor comctrls/tcustomtreeview.feditor.html + GetControlClassDefaultSize comctrls/tcustomtreeview.getcontrolclassdefaultsize.html + Added comctrls/tcustomtreeview.added.html + EditorEditingDone comctrls/tcustomtreeview.editoreditingdone.html + EditorKeyDown comctrls/tcustomtreeview.editorkeydown.html + BeginEditing comctrls/tcustomtreeview.beginediting.html + CanChange comctrls/tcustomtreeview.canchange.html + CanCollapse comctrls/tcustomtreeview.cancollapse.html + CanEdit comctrls/tcustomtreeview.canedit.html + CanExpand comctrls/tcustomtreeview.canexpand.html + CreateNode comctrls/tcustomtreeview.createnode.html + CustomDraw comctrls/tcustomtreeview.customdraw.html + CustomDrawItem comctrls/tcustomtreeview.customdrawitem.html + GetMaxLvl comctrls/tcustomtreeview.getmaxlvl.html + GetMaxScrollLeft comctrls/tcustomtreeview.getmaxscrollleft.html + GetMaxScrollTop comctrls/tcustomtreeview.getmaxscrolltop.html + GetNodeAtY comctrls/tcustomtreeview.getnodeaty.html + GetNodeDrawAreaHeight comctrls/tcustomtreeview.getnodedrawareaheight.html + GetNodeDrawAreaWidth comctrls/tcustomtreeview.getnodedrawareawidth.html + IsCustomDrawn comctrls/tcustomtreeview.iscustomdrawn.html + IsNodeVisible comctrls/tcustomtreeview.isnodevisible.html + IsNodeHeightFullVisible comctrls/tcustomtreeview.isnodeheightfullvisible.html + IsInsertMarkVisible comctrls/tcustomtreeview.isinsertmarkvisible.html + MoveSelection comctrls/tcustomtreeview.moveselection.html + Change comctrls/tcustomtreeview.change.html + Collapse comctrls/tcustomtreeview.collapse.html + Delete comctrls/tcustomtreeview.delete.html + DoCreateNodeClass comctrls/tcustomtreeview.docreatenodeclass.html + DoPaint comctrls/tcustomtreeview.dopaint.html + DoPaintNode comctrls/tcustomtreeview.dopaintnode.html + EndEditing comctrls/tcustomtreeview.endediting.html + EnsureNodeIsVisible comctrls/tcustomtreeview.ensurenodeisvisible.html + Expand comctrls/tcustomtreeview.expand.html + GetImageIndex comctrls/tcustomtreeview.getimageindex.html + GetSelectedIndex comctrls/tcustomtreeview.getselectedindex.html + MouseLeave comctrls/tcustomtreeview.mouseleave.html + NodeChanged comctrls/tcustomtreeview.nodechanged.html + SetOptions comctrls/tcustomtreeview.setoptions.html + UpdateDefaultItemHeight comctrls/tcustomtreeview.updatedefaultitemheight.html + UpdateInsertMark comctrls/tcustomtreeview.updateinsertmark.html + DoSelectionChanged comctrls/tcustomtreeview.doselectionchanged.html + WMHScroll comctrls/tcustomtreeview.wmhscroll.html + WMVScroll comctrls/tcustomtreeview.wmvscroll.html + WMSetFocus comctrls/tcustomtreeview.wmsetfocus.html + WMKillFocus comctrls/tcustomtreeview.wmkillfocus.html + EditingItem comctrls/tcustomtreeview.editingitem.html + States comctrls/tcustomtreeview.states.html + GetSelectedChildAccessibleObject comctrls/tcustomtreeview.getselectedchildaccessibleobject.html + GetChildAccessibleObjectAtPos comctrls/tcustomtreeview.getchildaccessibleobjectatpos.html + AccessibilityOn comctrls/tcustomtreeview.accessibilityon.html + AutoExpand comctrls/tcustomtreeview.autoexpand.html + HideSelection comctrls/tcustomtreeview.hideselection.html + HotTrack comctrls/tcustomtreeview.hottrack.html + Images comctrls/tcustomtreeview.images.html + Indent comctrls/tcustomtreeview.indent.html + MultiSelect comctrls/tcustomtreeview.multiselect.html + OnAddition comctrls/tcustomtreeview.onaddition.html + OnAdvancedCustomDraw comctrls/tcustomtreeview.onadvancedcustomdraw.html + OnAdvancedCustomDrawItem comctrls/tcustomtreeview.onadvancedcustomdrawitem.html + OnChange comctrls/tcustomtreeview.onchange.html + OnChanging comctrls/tcustomtreeview.onchanging.html + OnCollapsed comctrls/tcustomtreeview.oncollapsed.html + OnCollapsing comctrls/tcustomtreeview.oncollapsing.html + OnCompare comctrls/tcustomtreeview.oncompare.html + OnCreateNodeClass comctrls/tcustomtreeview.oncreatenodeclass.html + OnCustomCreateItem comctrls/tcustomtreeview.oncustomcreateitem.html + OnCustomDraw comctrls/tcustomtreeview.oncustomdraw.html + OnCustomDrawItem comctrls/tcustomtreeview.oncustomdrawitem.html + OnCustomDrawArrow comctrls/tcustomtreeview.oncustomdrawarrow.html + OnDeletion comctrls/tcustomtreeview.ondeletion.html + OnEdited comctrls/tcustomtreeview.onedited.html + OnEditing comctrls/tcustomtreeview.onediting.html + OnEditingEnd comctrls/tcustomtreeview.oneditingend.html + OnExpanded comctrls/tcustomtreeview.onexpanded.html + OnExpanding comctrls/tcustomtreeview.onexpanding.html + OnGetImageIndex comctrls/tcustomtreeview.ongetimageindex.html + OnGetSelectedIndex comctrls/tcustomtreeview.ongetselectedindex.html + OnNodeChanged comctrls/tcustomtreeview.onnodechanged.html + OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html + ReadOnly comctrls/tcustomtreeview.readonly.html + RightClickSelect comctrls/tcustomtreeview.rightclickselect.html + RowSelect comctrls/tcustomtreeview.rowselect.html + ScrolledLeft comctrls/tcustomtreeview.scrolledleft.html + ScrolledTop comctrls/tcustomtreeview.scrolledtop.html + ShowButtons comctrls/tcustomtreeview.showbuttons.html + ShowRoot comctrls/tcustomtreeview.showroot.html + ShowSeparators comctrls/tcustomtreeview.showseparators.html + SortType comctrls/tcustomtreeview.sorttype.html + StateImages comctrls/tcustomtreeview.stateimages.html + ToolTips comctrls/tcustomtreeview.tooltips.html + Create comctrls/tcustomtreeview.create.html + Destroy comctrls/tcustomtreeview.destroy.html + AlphaSort comctrls/tcustomtreeview.alphasort.html + ClearSelection comctrls/tcustomtreeview.clearselection.html + ConsistencyCheck comctrls/tcustomtreeview.consistencycheck.html + CustomSort comctrls/tcustomtreeview.customsort.html + DefaultTreeViewSort comctrls/tcustomtreeview.defaulttreeviewsort.html + GetHitTestInfoAt comctrls/tcustomtreeview.gethittestinfoat.html + GetNodeAt comctrls/tcustomtreeview.getnodeat.html + GetInsertMarkAt comctrls/tcustomtreeview.getinsertmarkat.html + SetInsertMark comctrls/tcustomtreeview.setinsertmark.html + SetInsertMarkAt comctrls/tcustomtreeview.setinsertmarkat.html + IsEditing comctrls/tcustomtreeview.isediting.html + BeginUpdate comctrls/tcustomtreeview.beginupdate.html + EndUpdate comctrls/tcustomtreeview.endupdate.html + FullCollapse comctrls/tcustomtreeview.fullcollapse.html + FullExpand comctrls/tcustomtreeview.fullexpand.html + LoadFromFile comctrls/tcustomtreeview.loadfromfile.html + LoadFromStream comctrls/tcustomtreeview.loadfromstream.html + SaveToFile comctrls/tcustomtreeview.savetofile.html + SaveToStream comctrls/tcustomtreeview.savetostream.html + WriteDebugReport comctrls/tcustomtreeview.writedebugreport.html + LockSelectionChangeEvent comctrls/tcustomtreeview.lockselectionchangeevent.html + UnlockSelectionChangeEvent comctrls/tcustomtreeview.unlockselectionchangeevent.html + GetFirstMultiSelected comctrls/tcustomtreeview.getfirstmultiselected.html + GetLastMultiSelected comctrls/tcustomtreeview.getlastmultiselected.html + Select comctrls/tcustomtreeview.select.html + SelectionVisible comctrls/tcustomtreeview.selectionvisible.html + MakeSelectionVisible comctrls/tcustomtreeview.makeselectionvisible.html + ClearInvisibleSelection comctrls/tcustomtreeview.clearinvisibleselection.html + StoreCurrentSelection comctrls/tcustomtreeview.storecurrentselection.html + ApplyStoredSelection comctrls/tcustomtreeview.applystoredselection.html + MoveToNextNode comctrls/tcustomtreeview.movetonextnode.html + MoveToPrevNode comctrls/tcustomtreeview.movetoprevnode.html + MovePageDown comctrls/tcustomtreeview.movepagedown.html + MovePageUp comctrls/tcustomtreeview.movepageup.html + MoveHome comctrls/tcustomtreeview.movehome.html + MoveEnd comctrls/tcustomtreeview.moveend.html + BackgroundColor comctrls/tcustomtreeview.backgroundcolor.html + BottomItem comctrls/tcustomtreeview.bottomitem.html + DefaultItemHeight comctrls/tcustomtreeview.defaultitemheight.html + DropTarget comctrls/tcustomtreeview.droptarget.html + ExpandSignType comctrls/tcustomtreeview.expandsigntype.html + InsertMarkNode comctrls/tcustomtreeview.insertmarknode.html + InsertMarkType comctrls/tcustomtreeview.insertmarktype.html + Items comctrls/tcustomtreeview.items.html + KeepCollapsedNodes comctrls/tcustomtreeview.keepcollapsednodes.html + MultiSelectStyle comctrls/tcustomtreeview.multiselectstyle.html + Options comctrls/tcustomtreeview.options.html + ScrollBars comctrls/tcustomtreeview.scrollbars.html + Selected comctrls/tcustomtreeview.selected.html + SelectionColor comctrls/tcustomtreeview.selectioncolor.html + SelectionFontColor comctrls/tcustomtreeview.selectionfontcolor.html + SelectionFontColorUsed comctrls/tcustomtreeview.selectionfontcolorused.html + SelectionCount comctrls/tcustomtreeview.selectioncount.html + Selections comctrls/tcustomtreeview.selections.html + SeparatorColor comctrls/tcustomtreeview.separatorcolor.html + TopItem comctrls/tcustomtreeview.topitem.html + TreeLineColor comctrls/tcustomtreeview.treelinecolor.html + TreeLinePenStyle comctrls/tcustomtreeview.treelinepenstyle.html + ExpandSignColor comctrls/tcustomtreeview.expandsigncolor.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + BeginAutoDrag controls/tcontrol.beginautodrag.html + DoDragMsg + GetDragImages controls/tcontrol.getdragimages.html + CreateWnd controls/twincontrol.createwnd.html + DestroyWnd controls/twincontrol.destroywnd.html + DoEndDrag controls/tcontrol.doenddrag.html + DoMouseWheel controls/tcontrol.domousewheel.html + DoStartDrag controls/tcontrol.dostartdrag.html + DragOver controls/tcontrol.dragover.html + InitializeWnd controls/twincontrol.initializewnd.html + KeyDown controls/twincontrol.keydown.html + Loaded controls/twincontrol.loaded.html + MouseDown controls/tcontrol.mousedown.html + MouseMove controls/tcontrol.mousemove.html + MouseUp controls/tcontrol.mouseup.html + Notification controls/tcontrol.notification.html + Paint controls/tcustomcontrol.paint.html + SetDragMode + WMLButtonDown controls/tcontrol.wmlbuttondown.html + Resize controls/tcontrol.resize.html + BorderStyle controls/twincontrol.borderstyle.html + ShowLines + EraseBackground controls/twincontrol.erasebackground.html + Invalidate controls/tcontrol.invalidate.html + BorderWidth controls/twincontrol.borderwidth.html + TabStop controls/twincontrol.tabstop.html + TTreeView comctrls/ttreeview.html + AutoExpand comctrls/ttreeview.autoexpand.html + HideSelection comctrls/ttreeview.hideselection.html + HotTrack comctrls/ttreeview.hottrack.html + Images comctrls/ttreeview.images.html + Indent comctrls/ttreeview.indent.html + MultiSelect comctrls/ttreeview.multiselect.html + MultiSelectStyle comctrls/ttreeview.multiselectstyle.html + SelectionFontColor comctrls/ttreeview.selectionfontcolor.html + SelectionFontColorUsed comctrls/ttreeview.selectionfontcolorused.html + SeparatorColor comctrls/tcustomtreeview.separatorcolor.html + OnAddition comctrls/ttreeview.onaddition.html + OnCreateNodeClass comctrls/ttreeview.oncreatenodeclass.html + OnCustomDrawArrow comctrls/ttreeview.oncustomdrawarrow.html + OnEditing comctrls/ttreeview.onediting.html + OnEditingEnd comctrls/ttreeview.oneditingend.html + OnMouseEnter comctrls/ttreeview.onmouseenter.html + OnMouseLeave comctrls/ttreeview.onmouseleave.html + OnMouseWheel comctrls/ttreeview.onmousewheel.html + OnMouseWheelDown comctrls/ttreeview.onmousewheeldown.html + OnMouseWheelUp comctrls/ttreeview.onmousewheelup.html + OnNodeChanged comctrls/ttreeview.onnodechanged.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + BackgroundColor comctrls/tcustomtreeview.backgroundcolor.html + BorderStyle controls/twincontrol.borderstyle.html + BorderWidth controls/twincontrol.borderwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DefaultItemHeight comctrls/tcustomtreeview.defaultitemheight.html + DragKind controls/tcontrol.dragkind.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + ExpandSignColor comctrls/tcustomtreeview.expandsigncolor.html + ExpandSignType comctrls/tcustomtreeview.expandsigntype.html + Font controls/tcontrol.font.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly comctrls/tcustomtreeview.readonly.html + RightClickSelect comctrls/tcustomtreeview.rightclickselect.html + RowSelect comctrls/tcustomtreeview.rowselect.html + ScrollBars comctrls/tcustomtreeview.scrollbars.html + SelectionColor comctrls/tcustomtreeview.selectioncolor.html + ShowButtons comctrls/tcustomtreeview.showbuttons.html + ShowHint controls/tcontrol.showhint.html + ShowLines + ShowRoot comctrls/tcustomtreeview.showroot.html + SortType comctrls/tcustomtreeview.sorttype.html + StateImages comctrls/tcustomtreeview.stateimages.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Tag ms-its:rtl.chm::/classes/tcomponent.tag.html + ToolTips comctrls/tcustomtreeview.tooltips.html + Visible controls/tcontrol.visible.html + OnAdvancedCustomDraw comctrls/tcustomtreeview.onadvancedcustomdraw.html + OnAdvancedCustomDrawItem comctrls/tcustomtreeview.onadvancedcustomdrawitem.html + OnChange comctrls/tcustomtreeview.onchange.html + OnChanging comctrls/tcustomtreeview.onchanging.html + OnClick controls/tcontrol.onclick.html + OnCollapsed comctrls/tcustomtreeview.oncollapsed.html + OnCollapsing comctrls/tcustomtreeview.oncollapsing.html + OnCompare comctrls/tcustomtreeview.oncompare.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnCustomCreateItem comctrls/tcustomtreeview.oncustomcreateitem.html + OnCustomDraw comctrls/tcustomtreeview.oncustomdraw.html + OnCustomDrawItem comctrls/tcustomtreeview.oncustomdrawitem.html + OnDblClick controls/tcontrol.ondblclick.html + OnDeletion comctrls/tcustomtreeview.ondeletion.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEdited comctrls/tcustomtreeview.onedited.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnExpanded comctrls/tcustomtreeview.onexpanded.html + OnExpanding comctrls/tcustomtreeview.onexpanding.html + OnGetImageIndex comctrls/tcustomtreeview.ongetimageindex.html + OnGetSelectedIndex comctrls/tcustomtreeview.ongetselectedindex.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html + OnShowHint controls/tcontrol.onshowhint.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + Options comctrls/tcustomtreeview.options.html + Items comctrls/tcustomtreeview.items.html + TreeLineColor comctrls/tcustomtreeview.treelinecolor.html + TreeLinePenStyle comctrls/tcustomtreeview.treelinepenstyle.html + TTreeNodeExpandedState comctrls/ttreenodeexpandedstate.html + NodeText comctrls/ttreenodeexpandedstate.nodetext.html + Children comctrls/ttreenodeexpandedstate.children.html + Create comctrls/ttreenodeexpandedstate.create.html + Clear comctrls/ttreenodeexpandedstate.clear.html + CreateChildNodes comctrls/ttreenodeexpandedstate.createchildnodes.html + Apply comctrls/ttreenodeexpandedstate.apply.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + THeaderSection comctrls/theadersection.html + GetDisplayName comctrls/theadersection.getdisplayname.html + Create comctrls/theadersection.create.html + Assign comctrls/theadersection.assign.html + Left comctrls/theadersection.left.html + Right comctrls/theadersection.right.html + State comctrls/theadersection.state.html + Alignment comctrls/theadersection.alignment.html + ImageIndex comctrls/theadersection.imageindex.html + MaxWidth comctrls/theadersection.maxwidth.html + MinWidth comctrls/theadersection.minwidth.html + Text comctrls/theadersection.text.html + Width comctrls/theadersection.width.html + Visible comctrls/theadersection.visible.html + OriginalIndex comctrls/theadersection.originalindex.html + THeaderSections comctrls/theadersections.html + GetOwner comctrls/theadersections.getowner.html + AddItem comctrls/theadersections.additem.html + Items comctrls/theadersections.items.html + Update + Create ms-its:rtl.chm::/classes/tcollection.create.html + Add ms-its:rtl.chm::/classes/tcollection.add.html + Insert ms-its:rtl.chm::/classes/tcollection.insert.html + Delete ms-its:rtl.chm::/classes/tcollection.delete.html + TCustomHeaderControl comctrls/tcustomheadercontrol.html + CreateSection comctrls/tcustomheadercontrol.createsection.html + CreateSections comctrls/tcustomheadercontrol.createsections.html + Loaded comctrls/tcustomheadercontrol.loaded.html + SectionClick comctrls/tcustomheadercontrol.sectionclick.html + SectionResize comctrls/tcustomheadercontrol.sectionresize.html + SectionTrack comctrls/tcustomheadercontrol.sectiontrack.html + SectionSeparatorDblClick comctrls/tcustomheadercontrol.sectionseparatordblclick.html + SectionEndDrag comctrls/tcustomheadercontrol.sectionenddrag.html + SectionDrag comctrls/tcustomheadercontrol.sectiondrag.html + UpdateState comctrls/tcustomheadercontrol.updatestate.html + GetControlClassDefaultSize comctrls/tcustomheadercontrol.getcontrolclassdefaultsize.html + SectionFromOriginalIndex comctrls/tcustomheadercontrol.sectionfromoriginalindex.html + Create comctrls/tcustomheadercontrol.create.html + Destroy comctrls/tcustomheadercontrol.destroy.html + GetSectionAt comctrls/tcustomheadercontrol.getsectionat.html + PaintSection comctrls/tcustomheadercontrol.paintsection.html + DragReorder comctrls/tcustomheadercontrol.dragreorder.html + Images comctrls/tcustomheadercontrol.images.html + Sections comctrls/tcustomheadercontrol.sections.html + OnSectionDrag comctrls/tcustomheadercontrol.onsectiondrag.html + OnSectionEndDrag comctrls/tcustomheadercontrol.onsectionenddrag.html + OnSectionClick comctrls/tcustomheadercontrol.onsectionclick.html + OnSectionResize comctrls/tcustomheadercontrol.onsectionresize.html + OnSectionTrack comctrls/tcustomheadercontrol.onsectiontrack.html + OnSectionSeparatorDblClick comctrls/tcustomheadercontrol.onsectionseparatordblclick.html + OnCreateSectionClass comctrls/tcustomheadercontrol.oncreatesectionclass.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + MouseEnter controls/tcontrol.mouseenter.html + MouseLeave controls/tcontrol.mouseleave.html + MouseDown controls/tcontrol.mousedown.html + MouseMove controls/tcontrol.mousemove.html + MouseUp controls/tcontrol.mouseup.html + Click controls/tcontrol.click.html + DblClick controls/tcontrol.dblclick.html + Paint controls/tcustomcontrol.paint.html + THeaderControl comctrls/theadercontrol.html + BorderSpacing comctrls/theadercontrol.borderspacing.html + OnMouseWheel comctrls/theadercontrol.onmousewheel.html + OnMouseWheelDown comctrls/theadercontrol.onmousewheeldown.html + OnMouseWheelUp comctrls/theadercontrol.onmousewheelup.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BiDiMode controls/tcontrol.bidimode.html + BorderWidth controls/twincontrol.borderwidth.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + Images comctrls/tcustomheadercontrol.images.html + Constraints controls/tcontrol.constraints.html + Sections comctrls/tcustomheadercontrol.sections.html + ShowHint controls/tcontrol.showhint.html + ParentBiDiMode controls/tcontrol.parentbidimode.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + Visible controls/tcontrol.visible.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnCreateSectionClass comctrls/tcustomheadercontrol.oncreatesectionclass.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnSectionClick comctrls/tcustomheadercontrol.onsectionclick.html + OnSectionResize comctrls/tcustomheadercontrol.onsectionresize.html + OnSectionTrack comctrls/tcustomheadercontrol.onsectiontrack.html + CompareExpandedNodes comctrls/compareexpandednodes.html + CompareTextWithExpandedNode comctrls/comparetextwithexpandednode.html + Register comctrls/register.html + RegisterCustomPage comctrls/registercustompage.html + RegisterCustomTabControl comctrls/registercustomtabcontrol.html + Toolwin toolwin/index.html + TEdgeBorder toolwin/tedgeborder.html + TEdgeBorders toolwin/tedgeborders.html + TEdgeStyle toolwin/tedgestyle.html + TToolWindow toolwin/ttoolwindow.html + FUpdateCount toolwin/ttoolwindow.fupdatecount.html + AdjustClientRect toolwin/ttoolwindow.adjustclientrect.html + Paint toolwin/ttoolwindow.paint.html + Create toolwin/ttoolwindow.create.html + BeginUpdate toolwin/ttoolwindow.beginupdate.html + EndUpdate toolwin/ttoolwindow.endupdate.html + EdgeBorders toolwin/ttoolwindow.edgeborders.html + EdgeInner toolwin/ttoolwindow.edgeinner.html + EdgeOuter toolwin/ttoolwindow.edgeouter.html + DBActns dbactns/index.html + TDataSetAction dbactns/tdatasetaction.html + Notification dbactns/tdatasetaction.notification.html + GetDataSet dbactns/tdatasetaction.getdataset.html + HandlesTarget dbactns/tdatasetaction.handlestarget.html + DataSource dbactns/tdatasetaction.datasource.html + TDataSetFirst dbactns/tdatasetfirst.html + ExecuteTarget dbactns/tdatasetfirst.executetarget.html + UpdateTarget dbactns/tdatasetfirst.updatetarget.html + DataSource dbactns/tdatasetfirst.datasource.html + TDataSetLast dbactns/tdatasetlast.html + ExecuteTarget dbactns/tdatasetlast.executetarget.html + UpdateTarget dbactns/tdatasetlast.updatetarget.html + DataSource dbactns/tdatasetlast.datasource.html + TDataSetNext dbactns/tdatasetnext.html + ExecuteTarget dbactns/tdatasetnext.executetarget.html + UpdateTarget dbactns/tdatasetnext.updatetarget.html + DataSource dbactns/tdatasetnext.datasource.html + TDataSetPrior dbactns/tdatasetprior.html + ExecuteTarget dbactns/tdatasetprior.executetarget.html + UpdateTarget dbactns/tdatasetprior.updatetarget.html + DataSource dbactns/tdatasetprior.datasource.html + TDataSetRefresh dbactns/tdatasetrefresh.html + ExecuteTarget dbactns/tdatasetrefresh.executetarget.html + UpdateTarget dbactns/tdatasetrefresh.updatetarget.html + DataSource dbactns/tdatasetrefresh.datasource.html + TDataSetCancel dbactns/tdatasetcancel.html + ExecuteTarget dbactns/tdatasetcancel.executetarget.html + UpdateTarget dbactns/tdatasetcancel.updatetarget.html + DataSource dbactns/tdatasetcancel.datasource.html + TDataSetDelete dbactns/tdatasetdelete.html + ExecuteTarget dbactns/tdatasetdelete.executetarget.html + UpdateTarget dbactns/tdatasetdelete.updatetarget.html + DataSource dbactns/tdatasetdelete.datasource.html + TDataSetEdit dbactns/tdatasetedit.html + ExecuteTarget dbactns/tdatasetedit.executetarget.html + UpdateTarget dbactns/tdatasetedit.updatetarget.html + DataSource dbactns/tdatasetedit.datasource.html + TDataSetInsert dbactns/tdatasetinsert.html + ExecuteTarget dbactns/tdatasetinsert.executetarget.html + UpdateTarget dbactns/tdatasetinsert.updatetarget.html + DataSource dbactns/tdatasetinsert.datasource.html + TDataSetPost dbactns/tdatasetpost.html + ExecuteTarget dbactns/tdatasetpost.executetarget.html + UpdateTarget dbactns/tdatasetpost.updatetarget.html + DataSource dbactns/tdatasetpost.datasource.html + Register dbactns/register.html + DbCtrls dbctrls/index.html + HowToUseDataAwareControls dbctrls/howtousedataawarecontrols.html + DefaultDBNavigatorButtons dbctrls/defaultdbnavigatorbuttons.html + DBNavButtonResourceName dbctrls/dbnavbuttonresourcename.html + TOnDBImageRead dbctrls/tondbimageread.html + TOnDBImageWrite dbctrls/tondbimagewrite.html + TDBNavGlyph dbctrls/tdbnavglyph.html + TDBNavButtonType dbctrls/tdbnavbuttontype.html + TDBNavButtonSet dbctrls/tdbnavbuttonset.html + TDBNavButtonStyle dbctrls/tdbnavbuttonstyle.html + TDBNavButtonDirection dbctrls/tdbnavbuttondirection.html + TDBNavigatorOption dbctrls/tdbnavigatoroption.html + TDBNavigatorOptions dbctrls/tdbnavigatoroptions.html + TNavigateBtn dbctrls/tnavigatebtn.html + TDBNavClickEvent dbctrls/tdbnavclickevent.html + TFieldDataLink dbctrls/tfielddatalink.html + ActiveChanged dbctrls/tfielddatalink.activechanged.html + EditingChanged dbctrls/tfielddatalink.editingchanged.html + LayoutChanged dbctrls/tfielddatalink.layoutchanged.html + RecordChanged dbctrls/tfielddatalink.recordchanged.html + UpdateData dbctrls/tfielddatalink.updatedata.html + FocusControl dbctrls/tfielddatalink.focuscontrol.html + Create dbctrls/tfielddatalink.create.html + Edit dbctrls/tfielddatalink.edit.html + Modified dbctrls/tfielddatalink.modified.html + Reset dbctrls/tfielddatalink.reset.html + Control dbctrls/tfielddatalink.control.html + Field dbctrls/tfielddatalink.field.html + FieldName dbctrls/tfielddatalink.fieldname.html + CanModify dbctrls/tfielddatalink.canmodify.html + Editing dbctrls/tfielddatalink.editing.html + OnDataChange dbctrls/tfielddatalink.ondatachange.html + OnEditingChange dbctrls/tfielddatalink.oneditingchange.html + OnUpdateData dbctrls/tfielddatalink.onupdatedata.html + OnActiveChange dbctrls/tfielddatalink.onactivechange.html + TDBLookup dbctrls/tdblookup.html + Notification dbctrls/tdblookup.notification.html + Create dbctrls/tdblookup.create.html + Destroy dbctrls/tdblookup.destroy.html + Initialize dbctrls/tdblookup.initialize.html + KeyFieldValue dbctrls/tdblookup.keyfieldvalue.html + UpdateData dbctrls/tdblookup.updatedata.html + GetKeyValue dbctrls/tdblookup.getkeyvalue.html + GetKeyIndex dbctrls/tdblookup.getkeyindex.html + ControlItems dbctrls/tdblookup.controlitems.html + LookupCache dbctrls/tdblookup.lookupcache.html + KeyField dbctrls/tdblookup.keyfield.html + ListField dbctrls/tdblookup.listfield.html + ListFieldIndex dbctrls/tdblookup.listfieldindex.html + ListSource dbctrls/tdblookup.listsource.html + NullValueKey dbctrls/tdblookup.nullvaluekey.html + TDBEdit dbctrls/tdbedit.html + UTF8KeyPress dbctrls/tdbedit.utf8keypress.html + WndProc dbctrls/tdbedit.wndproc.html + Create dbctrls/tdbedit.create.html + Destroy dbctrls/tdbedit.destroy.html + ExecuteAction dbctrls/tdbedit.executeaction.html + UpdateAction dbctrls/tdbedit.updateaction.html + Field dbctrls/tdbedit.field.html + CustomEditMask dbctrls/tdbedit.customeditmask.html + DataField dbctrls/tdbedit.datafield.html + DataSource dbctrls/tdbedit.datasource.html + BiDiMode dbctrls/tdbedit.bidimode.html + BorderStyle dbctrls/tdbedit.borderstyle.html + ParentBiDiMode dbctrls/tdbedit.parentbidimode.html + OnEditingDone dbctrls/tdbedit.oneditingdone.html + OnMouseEnter dbctrls/tdbedit.onmouseenter.html + OnMouseLeave dbctrls/tdbedit.onmouseleave.html + OnMouseWheel dbctrls/tdbedit.onmousewheel.html + OnMouseWheelDown dbctrls/tdbedit.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbedit.onmousewheelup.html + GetReadOnly + SetReadOnly + KeyDown controls/twincontrol.keydown.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + EditCanModify maskedit/tcustommaskedit.editcanmodify.html + GetEditText maskedit/tcustommaskedit.getedittext.html + Change stdctrls/tcustomedit.change.html + Reset maskedit/tcustommaskedit.reset.html + WMSetFocus controls/twincontrol.wmsetfocus.html + WMKillFocus controls/twincontrol.wmkillfocus.html + ReadOnly stdctrls/tcustomedit.readonly.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + CharCase stdctrls/tcustomedit.charcase.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + EditMask maskedit/tcustommaskedit.editmask.html + Font controls/tcontrol.font.html + MaxLength stdctrls/tcustomedit.maxlength.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PasswordChar stdctrls/tcustomedit.passwordchar.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TDBText dbctrls/tdbtext.html + WSRegisterClass + Create dbctrls/tdbtext.create.html + Destroy dbctrls/tdbtext.destroy.html + ExecuteAction dbctrls/tdbtext.executeaction.html + UpdateAction dbctrls/tdbtext.updateaction.html + Field dbctrls/tdbtext.field.html + BidiMode dbctrls/tdbtext.bidimode.html + BorderSpacing dbctrls/tdbtext.borderspacing.html + Constraints dbctrls/tdbtext.constraints.html + DataField dbctrls/tdbtext.datafield.html + DataSource dbctrls/tdbtext.datasource.html + DragKind dbctrls/tdbtext.dragkind.html + Enabled dbctrls/tdbtext.enabled.html + ParentBidiMode dbctrls/tdbtext.parentbidimode.html + ParentColor dbctrls/tdbtext.parentcolor.html + ParentFont dbctrls/tdbtext.parentfont.html + ParentShowHint dbctrls/tdbtext.parentshowhint.html + PopupMenu dbctrls/tdbtext.popupmenu.html + ShowHint dbctrls/tdbtext.showhint.html + Transparent stdctrls/tcustomlabel.transparent.html + OnClick dbctrls/tdbtext.onclick.html + OnDblClick dbctrls/tdbtext.ondblclick.html + OnMouseDown dbctrls/tdbtext.onmousedown.html + OnMouseEnter dbctrls/tdbtext.onmouseenter.html + OnMouseLeave dbctrls/tdbtext.onmouseleave.html + OnMouseMove dbctrls/tdbtext.onmousemove.html + OnMouseUp dbctrls/tdbtext.onmouseup.html + OnMouseWheel dbctrls/tdbtext.onmousewheel.html + OnMouseWheelDown dbctrls/tdbtext.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbtext.onmousewheelup.html + OnChangeBounds dbctrls/tdbtext.onchangebounds.html + OnContextPopup dbctrls/tdbtext.oncontextpopup.html + OnResize dbctrls/tdbtext.onresize.html + OptimalFill stdctrls/tcustomlabel.optimalfill.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Loaded + Align controls/tcontrol.align.html + Alignment stdctrls/tcustomlabel.alignment.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + FocusControl stdctrls/tcustomlabel.focuscontrol.html + Font controls/tcontrol.font.html + Layout stdctrls/tcustomlabel.layout.html + ShowAccelChar stdctrls/tcustomlabel.showaccelchar.html + Visible controls/tcontrol.visible.html + WordWrap stdctrls/tcustomlabel.wordwrap.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnStartDrag controls/tcontrol.onstartdrag.html + TCustomDBListBox dbctrls/tcustomdblistbox.html + FDataLink dbctrls/tcustomdblistbox.fdatalink.html + DataChange dbctrls/tcustomdblistbox.datachange.html + UpdateData dbctrls/tcustomdblistbox.updatedata.html + SetItems dbctrls/tcustomdblistbox.setitems.html + Create dbctrls/tcustomdblistbox.create.html + Destroy dbctrls/tcustomdblistbox.destroy.html + ExecuteAction dbctrls/tcustomdblistbox.executeaction.html + UpdateAction dbctrls/tcustomdblistbox.updateaction.html + Field dbctrls/tcustomdblistbox.field.html + DataField dbctrls/tcustomdblistbox.datafield.html + DataSource dbctrls/tcustomdblistbox.datasource.html + ReadOnly dbctrls/tcustomdblistbox.readonly.html + KeyDown controls/twincontrol.keydown.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + TDBListBox dbctrls/tdblistbox.html + DoSelectionChange dbctrls/tdblistbox.doselectionchange.html + EditingDone dbctrls/tdblistbox.editingdone.html + BiDiMode dbctrls/tdblistbox.bidimode.html + OnMouseEnter dbctrls/tdblistbox.onmouseenter.html + OnMouseLeave dbctrls/tdblistbox.onmouseleave.html + OnMouseWheel dbctrls/tdblistbox.onmousewheel.html + OnMouseWheelDown dbctrls/tdblistbox.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdblistbox.onmousewheelup.html + ParentBiDiMode dbctrls/tdblistbox.parentbidimode.html + DataChange dbctrls/tcustomdblistbox.datachange.html + UpdateData dbctrls/tcustomdblistbox.updatedata.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + DataField dbctrls/tcustomdblistbox.datafield.html + DataSource dbctrls/tcustomdblistbox.datasource.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html + ItemHeight stdctrls/tcustomlistbox.itemheight.html + Items + MultiSelect stdctrls/tcustomlistbox.multiselect.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDrawItem stdctrls/tcustomlistbox.ondrawitem.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentShowHint controls/tcontrol.parentshowhint.html + ReadOnly dbctrls/tcustomdblistbox.readonly.html + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomlistbox.sorted.html + Style stdctrls/tcustomlistbox.style.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TopIndex stdctrls/tcustomlistbox.topindex.html + Visible controls/tcontrol.visible.html + TDBLookupListBox dbctrls/tdblookuplistbox.html + DataChange dbctrls/tdblookuplistbox.datachange.html + DoSelectionChange dbctrls/tdblookuplistbox.doselectionchange.html + InitializeWnd dbctrls/tdblookuplistbox.initializewnd.html + KeyDown + Create dbctrls/tdblookuplistbox.create.html + KeyValue dbctrls/tdblookuplistbox.keyvalue.html + BiDiMode dbctrls/tdblookuplistbox.bidimode.html + Color dbctrls/tdblookuplistbox.color.html + KeyField dbctrls/tdblookuplistbox.keyfield.html + ListField dbctrls/tdblookuplistbox.listfield.html + ListFieldIndex dbctrls/tdblookuplistbox.listfieldindex.html + ListSource dbctrls/tdblookuplistbox.listsource.html + LookupCache dbctrls/tdblookuplistbox.lookupcache.html + NullValueKey dbctrls/tdblookuplistbox.nullvaluekey.html + OnEditingDone dbctrls/tdblookuplistbox.oneditingdone.html + OnMouseEnter dbctrls/tdblookuplistbox.onmouseenter.html + OnMouseLeave dbctrls/tdblookuplistbox.onmouseleave.html + OnMouseWheel dbctrls/tdblookuplistbox.onmousewheel.html + OnMouseWheelDown dbctrls/tdblookuplistbox.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdblookuplistbox.onmousewheelup.html + ParentBiDiMode dbctrls/tdblookuplistbox.parentbidimode.html + ScrollListDataset dbctrls/tdblookuplistbox.scrolllistdataset.html + Loaded + UpdateData dbctrls/tcustomdblistbox.updatedata.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + DataField dbctrls/tcustomdblistbox.datafield.html + DataSource dbctrls/tcustomdblistbox.datasource.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly dbctrls/tcustomdblistbox.readonly.html + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomlistbox.sorted.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TopIndex stdctrls/tcustomlistbox.topindex.html + Visible controls/tcontrol.visible.html + TDBRadioGroup dbctrls/tdbradiogroup.html + Change dbctrls/tdbradiogroup.change.html + DataChange dbctrls/tdbradiogroup.datachange.html + UpdateData dbctrls/tdbradiogroup.updatedata.html + DataLink dbctrls/tdbradiogroup.datalink.html + GetButtonValue dbctrls/tdbradiogroup.getbuttonvalue.html + UpdateRadioButtonStates dbctrls/tdbradiogroup.updateradiobuttonstates.html + Create dbctrls/tdbradiogroup.create.html + Destroy dbctrls/tdbradiogroup.destroy.html + EditingDone dbctrls/tdbradiogroup.editingdone.html + ExecuteAction dbctrls/tdbradiogroup.executeaction.html + UpdateAction dbctrls/tdbradiogroup.updateaction.html + Field dbctrls/tdbradiogroup.field.html + Value dbctrls/tdbradiogroup.value.html + BiDiMode dbctrls/tdbradiogroup.bidimode.html + DataField dbctrls/tdbradiogroup.datafield.html + DataSource dbctrls/tdbradiogroup.datasource.html + OnChange dbctrls/tdbradiogroup.onchange.html + OnMouseEnter dbctrls/tdbradiogroup.onmouseenter.html + OnMouseLeave dbctrls/tdbradiogroup.onmouseleave.html + OnMouseWheel dbctrls/tdbradiogroup.onmousewheel.html + OnMouseWheelDown dbctrls/tdbradiogroup.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbradiogroup.onmousewheelup.html + ParentBiDiMode dbctrls/tdbradiogroup.parentbidimode.html + ReadOnly dbctrls/tdbradiogroup.readonly.html + TabStop dbctrls/tdbradiogroup.tabstop.html + Values dbctrls/tdbradiogroup.values.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + ItemIndex + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + Columns extctrls/tcustomradiogroup.columns.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Items extctrls/tcustomradiogroup.items.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + TabOrder controls/twincontrol.taborder.html + Visible controls/tcontrol.visible.html + TDBCheckBox dbctrls/tdbcheckbox.html + GetFieldCheckState dbctrls/tdbcheckbox.getfieldcheckstate.html + DataChange dbctrls/tdbcheckbox.datachange.html + DoOnChange dbctrls/tdbcheckbox.doonchange.html + UpdateData dbctrls/tdbcheckbox.updatedata.html + Create dbctrls/tdbcheckbox.create.html + Destroy dbctrls/tdbcheckbox.destroy.html + ExecuteAction dbctrls/tdbcheckbox.executeaction.html + UpdateAction dbctrls/tdbcheckbox.updateaction.html + Field dbctrls/tdbcheckbox.field.html + Align dbctrls/tdbcheckbox.align.html + BiDiMode dbctrls/tdbcheckbox.bidimode.html + DataField dbctrls/tdbcheckbox.datafield.html + DataSource dbctrls/tdbcheckbox.datasource.html + Font dbctrls/tdbcheckbox.font.html + OnMouseEnter dbctrls/tdbcheckbox.onmouseenter.html + OnMouseLeave dbctrls/tdbcheckbox.onmouseleave.html + OnMouseWheel dbctrls/tdbcheckbox.onmousewheel.html + OnMouseWheelDown dbctrls/tdbcheckbox.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbcheckbox.onmousewheelup.html + ParentBiDiMode dbctrls/tdbcheckbox.parentbidimode.html + ReadOnly dbctrls/tdbcheckbox.readonly.html + ValueChecked dbctrls/tdbcheckbox.valuechecked.html + ValueUnchecked dbctrls/tdbcheckbox.valueunchecked.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Checked stdctrls/tbuttoncontrol.checked.html + State stdctrls/tcustomcheckbox.state.html + AllowGrayed stdctrls/tcustomcheckbox.allowgrayed.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Hint controls/tcontrol.hint.html + OnChange stdctrls/tbuttoncontrol.onchange.html + OnClick controls/tcontrol.onclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TCustomDBComboBox dbctrls/tcustomdbcombobox.html + DataChange dbctrls/tcustomdbcombobox.datachange.html + Change dbctrls/tcustomdbcombobox.change.html + UpdateData dbctrls/tcustomdbcombobox.updatedata.html + WndProc dbctrls/tcustomdbcombobox.wndproc.html + Create stdctrls/tcustomcombobox.create.html + Destroy stdctrls/tcustomcombobox.destroy.html + ExecuteAction dbctrls/tcustomdbcombobox.executeaction.html + UpdateAction dbctrls/tcustomdbcombobox.updateaction.html + Field dbctrls/tcustomdbcombobox.field.html + DataSource dbctrls/tcustomdbcombobox.datasource.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + EditingDone controls/tcontrol.editingdone.html + Text stdctrls/tcustomcombobox.text.html + ItemIndex stdctrls/tcustomcombobox.itemindex.html + DataField + ReadOnly stdctrls/tcustomcombobox.readonly.html + TDBComboBox dbctrls/tdbcombobox.html + DataChange dbctrls/tdbcombobox.datachange.html + KeyDown dbctrls/tdbcombobox.keydown.html + KeyPress dbctrls/tdbcombobox.keypress.html + Select dbctrls/tdbcombobox.select.html + UpdateData dbctrls/tdbcombobox.updatedata.html + AutoComplete dbctrls/tdbcombobox.autocomplete.html + BiDiMode dbctrls/tdbcombobox.bidimode.html + BorderStyle dbctrls/tdbcombobox.borderstyle.html + CharCase dbctrls/tdbcombobox.charcase.html + OnMouseEnter dbctrls/tdbcombobox.onmouseenter.html + OnMouseLeave dbctrls/tdbcombobox.onmouseleave.html + OnMouseWheel dbctrls/tdbcombobox.onmousewheel.html + OnMouseWheelDown dbctrls/tdbcombobox.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbcombobox.onmousewheelup.html + ParentBiDiMode dbctrls/tdbcombobox.parentbidimode.html + Anchors controls/tcontrol.anchors.html + ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html + AutoDropDown stdctrls/tcustomcombobox.autodropdown.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Color controls/tcontrol.color.html + DataField + DataSource dbctrls/tcustomdbcombobox.datasource.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + DropDownCount stdctrls/tcustomcombobox.dropdowncount.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + ItemHeight stdctrls/tcustomcombobox.itemheight.html + Items stdctrls/tcustomcombobox.items.html + ItemWidth stdctrls/tcustomcombobox.itemwidth.html + MaxLength stdctrls/tcustomcombobox.maxlength.html + OnChange stdctrls/tcustomcombobox.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnCloseUp stdctrls/tcustomcombobox.oncloseup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html + OnDropDown stdctrls/tcustomcombobox.ondropdown.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnSelect stdctrls/tcustomcombobox.onselect.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + ReadOnly stdctrls/tcustomcombobox.readonly.html + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomcombobox.sorted.html + Style stdctrls/tcustomcombobox.style.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TDBLookupComboBox dbctrls/tdblookupcombobox.html + CloseUp dbctrls/tdblookupcombobox.closeup.html + InitializeWnd dbctrls/tdblookupcombobox.initializewnd.html + KeyDown dbctrls/tdblookupcombobox.keydown.html + UpdateData dbctrls/tdblookupcombobox.updatedata.html + DataChange dbctrls/tcustomdbcombobox.datachange.html + Select dbctrls/tdblookupcombobox.select.html + Create dbctrls/tdblookupcombobox.create.html + KeyValue dbctrls/tdblookupcombobox.keyvalue.html + AutoComplete dbctrls/tdblookupcombobox.autocomplete.html + BiDiMode dbctrls/tdblookupcombobox.bidimode.html + KeyField dbctrls/tdblookupcombobox.keyfield.html + ListField dbctrls/tdblookupcombobox.listfield.html + ListFieldIndex dbctrls/tdblookupcombobox.listfieldindex.html + ListSource dbctrls/tdblookupcombobox.listsource.html + LookupCache dbctrls/tdblookupcombobox.lookupcache.html + NullValueKey dbctrls/tdblookupcombobox.nullvaluekey.html + OnMouseEnter dbctrls/tdblookupcombobox.onmouseenter.html + OnMouseLeave dbctrls/tdblookupcombobox.onmouseleave.html + OnMouseWheel dbctrls/tdblookupcombobox.onmousewheel.html + OnMouseWheelDown dbctrls/tdblookupcombobox.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdblookupcombobox.onmousewheelup.html + ParentBiDiMode dbctrls/tdblookupcombobox.parentbidimode.html + ScrollListDataset dbctrls/tdblookupcombobox.scrolllistdataset.html + Loaded + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + ArrowKeysTraverseList stdctrls/tcustomcombobox.arrowkeystraverselist.html + AutoDropDown stdctrls/tcustomcombobox.autodropdown.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Color controls/tcontrol.color.html + DataField + DataSource dbctrls/tcustomdbcombobox.datasource.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + DropDownCount stdctrls/tcustomcombobox.dropdowncount.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + OnChange stdctrls/tcustomcombobox.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnCloseUp stdctrls/tcustomcombobox.oncloseup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDrawItem stdctrls/tcustomcombobox.ondrawitem.html + OnDropDown stdctrls/tcustomcombobox.ondropdown.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnSelect stdctrls/tcustomcombobox.onselect.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomcombobox.readonly.html + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomcombobox.sorted.html + Style stdctrls/tcustomcombobox.style.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TDBMemo dbctrls/tdbmemo.html + DataChange dbctrls/tdbmemo.datachange.html + UpdateData dbctrls/tdbmemo.updatedata.html + KeyDown dbctrls/tdbmemo.keydown.html + WSRegisterClass + Create dbctrls/tdbmemo.create.html + Destroy dbctrls/tdbmemo.destroy.html + EditingDone dbctrls/tdbmemo.editingdone.html + LoadMemo dbctrls/tdbmemo.loadmemo.html + ExecuteAction dbctrls/tdbmemo.executeaction.html + UpdateAction dbctrls/tdbmemo.updateaction.html + Field dbctrls/tdbmemo.field.html + AutoDisplay dbctrls/tdbmemo.autodisplay.html + BiDiMode dbctrls/tdbmemo.bidimode.html + BorderStyle dbctrls/tdbmemo.borderstyle.html + CharCase dbctrls/tdbmemo.charcase.html + Constraints dbctrls/tdbmemo.constraints.html + DataField dbctrls/tdbmemo.datafield.html + DataSource dbctrls/tdbmemo.datasource.html + Enabled dbctrls/tdbmemo.enabled.html + OnClick dbctrls/tdbmemo.onclick.html + OnContextPopup dbctrls/tdbmemo.oncontextpopup.html + OnDblClick dbctrls/tdbmemo.ondblclick.html + OnEditingDone dbctrls/tdbmemo.oneditingdone.html + OnMouseDown dbctrls/tdbmemo.onmousedown.html + OnMouseEnter dbctrls/tdbmemo.onmouseenter.html + OnMouseLeave dbctrls/tdbmemo.onmouseleave.html + OnMouseMove dbctrls/tdbmemo.onmousemove.html + OnMouseUp dbctrls/tdbmemo.onmouseup.html + OnMouseWheel dbctrls/tdbmemo.onmousewheel.html + OnMouseWheelDown dbctrls/tdbmemo.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbmemo.onmousewheelup.html + ParentBiDiMode dbctrls/tdbmemo.parentbidimode.html + ParentShowHint dbctrls/tdbmemo.parentshowhint.html + ShowHint dbctrls/tdbmemo.showhint.html + GetReadOnly + SetReadOnly + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Change stdctrls/tcustomedit.change.html + KeyPress controls/twincontrol.keypress.html + WndProc controls/tcontrol.wndproc.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Font controls/tcontrol.font.html + MaxLength stdctrls/tcustomedit.maxlength.html + OnChange stdctrls/tcustomedit.onchange.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentFont controls/tcontrol.parentfont.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ScrollBars stdctrls/tcustommemo.scrollbars.html + TabOrder controls/twincontrol.taborder.html + Tabstop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + WordWrap stdctrls/tcustommemo.wordwrap.html + TDBGroupBox dbctrls/tdbgroupbox.html + DataChange dbctrls/tdbgroupbox.datachange.html + Create dbctrls/tdbgroupbox.create.html + Destroy dbctrls/tdbgroupbox.destroy.html + ExecuteAction dbctrls/tdbgroupbox.executeaction.html + UpdateAction dbctrls/tdbgroupbox.updateaction.html + Field dbctrls/tdbgroupbox.field.html + BiDiMode dbctrls/tdbgroupbox.bidimode.html + ClientWidth dbctrls/tdbgroupbox.clientwidth.html + DataField dbctrls/tdbgroupbox.datafield.html + DataSource dbctrls/tdbgroupbox.datasource.html + OnMouseEnter dbctrls/tdbgroupbox.onmouseenter.html + OnMouseLeave dbctrls/tdbgroupbox.onmouseleave.html + OnMouseWheel dbctrls/tdbgroupbox.onmousewheel.html + OnMouseWheelDown dbctrls/tdbgroupbox.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbgroupbox.onmousewheelup.html + ParentBiDiMode dbctrls/tdbgroupbox.parentbidimode.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Caption controls/tcontrol.caption.html + ClientHeight controls/tcontrol.clientheight.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + TDBImage dbctrls/tdbimage.html + DataChange dbctrls/tdbimage.datachange.html + UpdateData dbctrls/tdbimage.updatedata.html + LoadPicture dbctrls/tdbimage.loadpicture.html + WSRegisterClass + Create dbctrls/tdbimage.create.html + Destroy dbctrls/tdbimage.destroy.html + ExecuteAction dbctrls/tdbimage.executeaction.html + UpdateAction dbctrls/tdbimage.updateaction.html + Field dbctrls/tdbimage.field.html + Change dbctrls/tdbimage.change.html + AutoDisplay dbctrls/tdbimage.autodisplay.html + DataField dbctrls/tdbimage.datafield.html + DataSource dbctrls/tdbimage.datasource.html + OnDblClick dbctrls/tdbimage.ondblclick.html + OnDBImageRead dbctrls/tdbimage.ondbimageread.html + OnDBImageWrite dbctrls/tdbimage.ondbimagewrite.html + PopupMenu dbctrls/tdbimage.popupmenu.html + OnMouseEnter dbctrls/tdbimage.onmouseenter.html + OnMouseLeave dbctrls/tdbimage.onmouseleave.html + OnMouseWheel dbctrls/tdbimage.onmousewheel.html + OnMouseWheelDown dbctrls/tdbimage.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbimage.onmousewheelup.html + Proportional dbctrls/tdbimage.proportional.html + QuickDraw dbctrls/tdbimage.quickdraw.html + ReadOnly dbctrls/tdbimage.readonly.html + WriteHeader dbctrls/tdbimage.writeheader.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + PictureChanged extctrls/tcustomimage.picturechanged.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Center extctrls/tcustomimage.center.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + OnClick controls/tcontrol.onclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + Stretch extctrls/tcustomimage.stretch.html + Transparent extctrls/tcustomimage.transparent.html + Visible controls/tcontrol.visible.html + TDBCalendar dbctrls/tdbcalendar.html + Create dbctrls/tdbcalendar.create.html + Destroy dbctrls/tdbcalendar.destroy.html + EditingDone dbctrls/tdbcalendar.editingdone.html + ExecuteAction dbctrls/tdbcalendar.executeaction.html + UpdateAction dbctrls/tdbcalendar.updateaction.html + Field dbctrls/tdbcalendar.field.html + DataField dbctrls/tdbcalendar.datafield.html + DataSource dbctrls/tdbcalendar.datasource.html + Date dbctrls/tdbcalendar.date.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + BorderSpacing controls/tcontrol.borderspacing.html + ReadOnly + DisplaySettings calendar/tcustomcalendar.displaysettings.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Visible controls/tcontrol.visible.html + OnClick controls/tcontrol.onclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseDown controls/tcontrol.onmousedown.html + OnDayChanged calendar/tcustomcalendar.ondaychanged.html + OnMonthChanged calendar/tcustomcalendar.onmonthchanged.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnYearChanged calendar/tcustomcalendar.onyearchanged.html + TDBCustomNavigator dbctrls/tdbcustomnavigator.html + Buttons dbctrls/tdbcustomnavigator.buttons.html + FocusableButtons dbctrls/tdbcustomnavigator.focusablebuttons.html + DataChanged dbctrls/tdbcustomnavigator.datachanged.html + EditingChanged dbctrls/tdbcustomnavigator.editingchanged.html + ActiveChanged dbctrls/tdbcustomnavigator.activechanged.html + UpdateButtons dbctrls/tdbcustomnavigator.updatebuttons.html + UpdateHints dbctrls/tdbcustomnavigator.updatehints.html + HintsChanged dbctrls/tdbcustomnavigator.hintschanged.html + ButtonClickHandler dbctrls/tdbcustomnavigator.buttonclickhandler.html + BeginUpdateButtons dbctrls/tdbcustomnavigator.beginupdatebuttons.html + EndUpdateButtons dbctrls/tdbcustomnavigator.endupdatebuttons.html + Create dbctrls/tdbcustomnavigator.create.html + Destroy dbctrls/tdbcustomnavigator.destroy.html + BtnClick dbctrls/tdbcustomnavigator.btnclick.html + VisibleButtonCount dbctrls/tdbcustomnavigator.visiblebuttoncount.html + BeforeAction dbctrls/tdbcustomnavigator.beforeaction.html + ConfirmDelete dbctrls/tdbcustomnavigator.confirmdelete.html + DataSource dbctrls/tdbcustomnavigator.datasource.html + Direction dbctrls/tdbcustomnavigator.direction.html + Flat dbctrls/tdbcustomnavigator.flat.html + Hints dbctrls/tdbcustomnavigator.hints.html + Options dbctrls/tdbcustomnavigator.options.html + OnClick dbctrls/tdbcustomnavigator.onclick.html + VisibleButtons dbctrls/tdbcustomnavigator.visiblebuttons.html + ShowButtonHints dbctrls/tdbcustomnavigator.showbuttonhints.html + Images dbctrls/tdbcustomnavigator.images.html + Loaded + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + SetEnabled + TDBNavButton dbctrls/tdbnavbutton.html + NavStyle dbctrls/tdbnavbutton.navstyle.html + Index dbctrls/tdbnavbutton.index.html + Destroy buttons/tcustomspeedbutton.destroy.html + TDBNavFocusableButton dbctrls/tdbnavfocusablebutton.html + NavStyle dbctrls/tdbnavfocusablebutton.navstyle.html + Index dbctrls/tdbnavfocusablebutton.index.html + TDBNavDataLink dbctrls/tdbnavdatalink.html + EditingChanged dbctrls/tdbnavdatalink.editingchanged.html + DataSetChanged dbctrls/tdbnavdatalink.datasetchanged.html + ActiveChanged dbctrls/tdbnavdatalink.activechanged.html + Create dbctrls/tdbnavdatalink.create.html + TDBNavigator dbctrls/tdbnavigator.html + BidiMode dbctrls/tdbnavigator.bidimode.html + ChildSizing dbctrls/tdbnavigator.childsizing.html + OnMouseEnter dbctrls/tdbnavigator.onmouseenter.html + OnMouseLeave dbctrls/tdbnavigator.onmouseleave.html + OnMouseWheel dbctrls/tdbnavigator.onmousewheel.html + OnMouseWheelDown dbctrls/tdbnavigator.onmousewheeldown.html + OnMouseWheelUp dbctrls/tdbnavigator.onmousewheelup.html + Options dbctrls/tdbnavigator.options.html + ParentBidiMode dbctrls/tdbnavigator.parentbidimode.html + Images dbctrls/tdbnavigator.images.html + Align controls/tcontrol.align.html + Alignment extctrls/tcustompanel.alignment.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BeforeAction dbctrls/tdbcustomnavigator.beforeaction.html + BevelInner extctrls/tcustompanel.bevelinner.html + BevelOuter extctrls/tcustompanel.bevelouter.html + BevelWidth extctrls/tcustompanel.bevelwidth.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + BorderWidth controls/twincontrol.borderwidth.html + Caption controls/tcontrol.caption.html + ClientHeight controls/tcontrol.clientheight.html + ClientWidth controls/tcontrol.clientwidth.html + Color controls/tcontrol.color.html + ConfirmDelete dbctrls/tdbcustomnavigator.confirmdelete.html + DataSource dbctrls/tdbcustomnavigator.datasource.html + Direction dbctrls/tdbcustomnavigator.direction.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Flat dbctrls/tdbcustomnavigator.flat.html + Font controls/tcontrol.font.html + Hints dbctrls/tdbcustomnavigator.hints.html + OnClick dbctrls/tdbcustomnavigator.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnStartDrag controls/tcontrol.onstartdrag.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + VisibleButtons dbctrls/tdbcustomnavigator.visiblebuttons.html + ChangeDataSource dbctrls/changedatasource.html + Register dbctrls/register.html + MaskEdit maskedit/index.html + cMask_SpecialChar maskedit/cmask_specialchar.html + cMask_UpperCase maskedit/cmask_uppercase.html + cMask_LowerCase maskedit/cmask_lowercase.html + cMask_Letter maskedit/cmask_letter.html + cMask_LetterFixed maskedit/cmask_letterfixed.html + cMask_AlphaNum maskedit/cmask_alphanum.html + cMask_AlphaNumFixed maskedit/cmask_alphanumfixed.html + cMask_AllChars maskedit/cmask_allchars.html + cMask_AllCharsFixed maskedit/cmask_allcharsfixed.html + cMask_Number maskedit/cmask_number.html + cMask_NumberFixed maskedit/cmask_numberfixed.html + cMask_NumberPlusMin maskedit/cmask_numberplusmin.html + cMask_HourSeparator maskedit/cmask_hourseparator.html + cMask_DateSeparator maskedit/cmask_dateseparator.html + cMask_NoLeadingBlanks maskedit/cmask_noleadingblanks.html + DefaultBlank maskedit/defaultblank.html + MaskFieldSeparator maskedit/maskfieldseparator.html + MaskNoSave maskedit/masknosave.html + SInvalidCodePoint maskedit/sinvalidcodepoint.html + tMaskedType maskedit/tmaskedtype.html + TInternalMask maskedit/tinternalmask.html + TMaskeditTrimType maskedit/tmaskedittrimtype.html + EDBEditError maskedit/edbediterror.html + EInvalidUtf8 maskedit/einvalidutf8.html + EInvalidCodePoint maskedit/einvalidcodepoint.html + TCustomMaskEdit maskedit/tcustommaskedit.html + ApplyMaskToText maskedit/tcustommaskedit.applymasktotext.html + CanShowTextHint maskedit/tcustommaskedit.canshowtexthint.html + DisableMask maskedit/tcustommaskedit.disablemask.html + RestoreMask maskedit/tcustommaskedit.restoremask.html + RealSetText + RealGetText maskedit/tcustommaskedit.realgettext.html + GetTextWithoutMask maskedit/tcustommaskedit.gettextwithoutmask.html + SetTextApplyMask maskedit/tcustommaskedit.settextapplymask.html + GetEditText maskedit/tcustommaskedit.getedittext.html + SetEditText maskedit/tcustommaskedit.setedittext.html + GetSel maskedit/tcustommaskedit.getsel.html + SetSel maskedit/tcustommaskedit.setsel.html + Change stdctrls/tcustomedit.change.html + SetCharCase + GetCharCase maskedit/tcustommaskedit.getcharcase.html + SetMaxLength maskedit/tcustommaskedit.setmaxlength.html + GetMaxLength maskedit/tcustommaskedit.getmaxlength.html + SetNumbersOnly maskedit/tcustommaskedit.setnumbersonly.html + LMPasteFromClip maskedit/tcustommaskedit.lmpastefromclip.html + LMCutToClip maskedit/tcustommaskedit.lmcuttoclip.html + LMClearSel maskedit/tcustommaskedit.lmclearsel.html + EditCanModify maskedit/tcustommaskedit.editcanmodify.html + Reset maskedit/tcustommaskedit.reset.html + HandleKeyPress maskedit/tcustommaskedit.handlekeypress.html + Utf8KeyPress maskedit/tcustommaskedit.utf8keypress.html + CheckCursor maskedit/tcustommaskedit.checkcursor.html + EditText maskedit/tcustommaskedit.edittext.html + IsMasked maskedit/tcustommaskedit.ismasked.html + SpaceChar maskedit/tcustommaskedit.spacechar.html + MaxLength maskedit/tcustommaskedit.maxlength.html + CharCase stdctrls/tcustomedit.charcase.html + EditMask maskedit/tcustommaskedit.editmask.html + ValidateEdit maskedit/tcustommaskedit.validateedit.html + Modified stdctrls/tcustomedit.modified.html + TextChanged controls/tcontrol.textchanged.html + Loaded + DoEnter controls/twincontrol.doenter.html + DoExit controls/twincontrol.doexit.html + KeyDown controls/twincontrol.keydown.html + KeyPress controls/twincontrol.keypress.html + MouseUp controls/tcontrol.mouseup.html + CutToClipBoard stdctrls/tcustomedit.cuttoclipboard.html + PasteFromClipBoard stdctrls/tcustomedit.pastefromclipboard.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Clear stdctrls/tcustomedit.clear.html + TMaskEdit maskedit/tmaskedit.html + IsMasked maskedit/tcustommaskedit.ismasked.html + EditText maskedit/tcustommaskedit.edittext.html + Align maskedit/tmaskedit.align.html + Alignment maskedit/tmaskedit.alignment.html + BorderSpacing maskedit/tmaskedit.borderspacing.html + PopupMenu maskedit/tmaskedit.popupmenu.html + ReadOnly maskedit/tmaskedit.readonly.html + ShowHint maskedit/tmaskedit.showhint.html + OnEditingDone maskedit/tmaskedit.oneditingdone.html + OnMouseEnter maskedit/tmaskedit.onmouseenter.html + OnMouseLeave maskedit/tmaskedit.onmouseleave.html + OnMouseWheel maskedit/tmaskedit.onmousewheel.html + OnMouseWheelDown maskedit/tmaskedit.onmousewheeldown.html + OnMouseWheelUp maskedit/tmaskedit.onmousewheelup.html + TextHint maskedit/tmaskedit.texthint.html + TextHintFontColor maskedit/tmaskedit.texthintfontcolor.html + TextHintFontStyle maskedit/tmaskedit.texthintfontstyle.html + Anchors controls/tcontrol.anchors.html + AutoSelect stdctrls/tcustomedit.autoselect.html + AutoSize controls/tcontrol.autosize.html + BiDiMode controls/tcontrol.bidimode.html + BorderStyle controls/twincontrol.borderstyle.html + CharCase stdctrls/tcustomedit.charcase.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + MaxLength stdctrls/tcustomedit.maxlength.html + ParentBiDiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + EditMask maskedit/tcustommaskedit.editmask.html + Text + SpaceChar maskedit/tcustommaskedit.spacechar.html + FormatMaskText maskedit/formatmasktext.html + SplitEditMask maskedit/spliteditmask.html + Register maskedit/register.html + Calendar calendar/index.html + DefaultDisplaySettings calendar/defaultdisplaysettings.html + TDisplaySetting calendar/tdisplaysetting.html + TDisplaySettings calendar/tdisplaysettings.html + TCalendarPart calendar/tcalendarpart.html + EInvalidDate calendar/einvaliddate.html + TCustomCalendar calendar/tcustomcalendar.html + LMChanged calendar/tcustomcalendar.lmchanged.html + LMMonthChanged calendar/tcustomcalendar.lmmonthchanged.html + LMYearChanged calendar/tcustomcalendar.lmyearchanged.html + LMDayChanged calendar/tcustomcalendar.lmdaychanged.html + DestroyWnd controls/twincontrol.destroywnd.html + Create calendar/tcustomcalendar.create.html + HitTest calendar/tcustomcalendar.hittest.html + Date calendar/tcustomcalendar.date.html + DateTime calendar/tcustomcalendar.datetime.html + DisplaySettings calendar/tcustomcalendar.displaysettings.html + OnChange calendar/tcustomcalendar.onchange.html + OnDayChanged calendar/tcustomcalendar.ondaychanged.html + OnMonthChanged calendar/tcustomcalendar.onmonthchanged.html + OnYearChanged calendar/tcustomcalendar.onyearchanged.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Loaded + InitializeWnd controls/twincontrol.initializewnd.html + TCalendar calendar/tcalendar.html + AutoSize calendar/tcalendar.autosize.html + Hint calendar/tcalendar.hint.html + OnMouseWheel calendar/tcalendar.onmousewheel.html + OnMouseWheelDown calendar/tcalendar.onmousewheeldown.html + OnMouseWheelUp calendar/tcalendar.onmousewheelup.html + ShowHint calendar/tcalendar.showhint.html + TabOrder calendar/tcalendar.taborder.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + DateTime calendar/tcustomcalendar.datetime.html + DisplaySettings calendar/tcustomcalendar.displaysettings.html + OnChange calendar/tcustomcalendar.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnDayChanged calendar/tcustomcalendar.ondaychanged.html + OnDblClick controls/tcontrol.ondblclick.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMonthChanged calendar/tcustomcalendar.onmonthchanged.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseEnter controls/tcontrol.onmouseenter.html + OnMouseLeave controls/tcontrol.onmouseleave.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + OnYearChanged calendar/tcustomcalendar.onyearchanged.html + PopupMenu controls/tcontrol.popupmenu.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + Register calendar/register.html + DBGrids dbgrids/index.html + TDBGridOption dbgrids/tdbgridoption.html + TDbGridOptions dbgrids/tdbgridoptions.html + TDbGridExtraOption dbgrids/tdbgridextraoption.html + TDbGridExtraOptions dbgrids/tdbgridextraoptions.html + TDbGridStatusItem dbgrids/tdbgridstatusitem.html + TDbGridStatus dbgrids/tdbgridstatus.html + TDataSetScrolledEvent dbgrids/tdatasetscrolledevent.html + TDBGridClickEvent dbgrids/tdbgridclickevent.html + TMovedEvent dbgrids/tmovedevent.html + TDrawColumnCellEvent dbgrids/tdrawcolumncellevent.html + TGetDbEditMaskEvent dbgrids/tgetdbeditmaskevent.html + TDbGridSelEditorEvent dbgrids/tdbgridseleditorevent.html + TPrepareDbGridCanvasEvent dbgrids/tpreparedbgridcanvasevent.html + TDbGridCheckBoxBitmapEvent dbgrids/tdbgridcheckboxbitmapevent.html + TDbGridCheckboxStateEvent dbgrids/tdbgridcheckboxstateevent.html + TDbGridCellHintEvent dbgrids/tdbgridcellhintevent.html + TColumnOrder dbgrids/tcolumnorder.html + EInvalidGridOperation dbgrids/einvalidgridoperation.html + TBookmarkList dbgrids/tbookmarklist.html + Create dbgrids/tbookmarklist.create.html + Destroy dbgrids/tbookmarklist.destroy.html + Clear dbgrids/tbookmarklist.clear.html + Delete dbgrids/tbookmarklist.delete.html + Find dbgrids/tbookmarklist.find.html + IndexOf dbgrids/tbookmarklist.indexof.html + Refresh dbgrids/tbookmarklist.refresh.html + Count dbgrids/tbookmarklist.count.html + CurrentRowSelected dbgrids/tbookmarklist.currentrowselected.html + Items dbgrids/tbookmarklist.items.html + TComponentDataLink dbgrids/tcomponentdatalink.html + RecordChanged dbgrids/tcomponentdatalink.recordchanged.html + DataSetChanged dbgrids/tcomponentdatalink.datasetchanged.html + ActiveChanged dbgrids/tcomponentdatalink.activechanged.html + LayoutChanged dbgrids/tcomponentdatalink.layoutchanged.html + DataSetScrolled dbgrids/tcomponentdatalink.datasetscrolled.html + EditingChanged dbgrids/tcomponentdatalink.editingchanged.html + UpdateData dbgrids/tcomponentdatalink.updatedata.html + Modified dbgrids/tcomponentdatalink.modified.html + OnRecordChanged dbgrids/tcomponentdatalink.onrecordchanged.html + OnDataSetChanged dbgrids/tcomponentdatalink.ondatasetchanged.html + OnNewDataSet dbgrids/tcomponentdatalink.onnewdataset.html + OnDataSetOpen dbgrids/tcomponentdatalink.ondatasetopen.html + OnInvalidDataSet dbgrids/tcomponentdatalink.oninvaliddataset.html + OnInvalidDataSource dbgrids/tcomponentdatalink.oninvaliddatasource.html + OnLayoutChanged dbgrids/tcomponentdatalink.onlayoutchanged.html + OnDataSetClose dbgrids/tcomponentdatalink.ondatasetclose.html + OnDataSetScrolled dbgrids/tcomponentdatalink.ondatasetscrolled.html + OnEditingChanged dbgrids/tcomponentdatalink.oneditingchanged.html + OnUpdateData dbgrids/tcomponentdatalink.onupdatedata.html + DataSetName dbgrids/tcomponentdatalink.datasetname.html + Fields dbgrids/tcomponentdatalink.fields.html + FocusControl + CheckBrowseMode + MoveBy + VisualControl + TColumnTitle dbgrids/tcolumntitle.html + GetDefaultCaption dbgrids/tcolumntitle.getdefaultcaption.html + TColumn dbgrids/tcolumn.html + GetDefaultAlignment dbgrids/tcolumn.getdefaultalignment.html + GetDefaultDisplayFormat dbgrids/tcolumn.getdefaultdisplayformat.html + GetDefaultValueChecked dbgrids/tcolumn.getdefaultvaluechecked.html + GetDefaultValueUnchecked dbgrids/tcolumn.getdefaultvalueunchecked.html + GetDisplayName dbgrids/tcolumn.getdisplayname.html + GetDefaultReadOnly dbgrids/tcolumn.getdefaultreadonly.html + GetDefaultWidth dbgrids/tcolumn.getdefaultwidth.html + GetPickList dbgrids/tcolumn.getpicklist.html + IsAutomaticColumn dbgrids/tcolumn.isautomaticcolumn.html + IsDesignColumn dbgrids/tcolumn.isdesigncolumn.html + LinkField dbgrids/tcolumn.linkfield.html + Create dbgrids/tcolumn.create.html + Assign dbgrids/tcolumn.assign.html + DesignIndex dbgrids/tcolumn.designindex.html + Field dbgrids/tcolumn.field.html + FieldName dbgrids/tcolumn.fieldname.html + DisplayFormat dbgrids/tcolumn.displayformat.html + CreateTitle grids/tgridcolumn.createtitle.html + GetDefaultVisible grids/tgridcolumn.getdefaultvisible.html + IsDefault grids/tgridcolumn.isdefault.html + TDBGridColumns dbgrids/tdbgridcolumns.html + Update dbgrids/tdbgridcolumns.update.html + ColumnFromField dbgrids/tdbgridcolumns.columnfromfield.html + HasAutomaticColumns dbgrids/tdbgridcolumns.hasautomaticcolumns.html + HasDesignColumns dbgrids/tdbgridcolumns.hasdesigncolumns.html + RemoveAutoColumns dbgrids/tdbgridcolumns.removeautocolumns.html + Add dbgrids/tdbgridcolumns.add.html + LinkFields dbgrids/tdbgridcolumns.linkfields.html + ResetColumnsOrder dbgrids/tdbgridcolumns.resetcolumnsorder.html + Items dbgrids/tdbgridcolumns.items.html + TCustomDBGrid dbgrids/tcustomdbgrid.html + AddAutomaticColumns dbgrids/tcustomdbgrid.addautomaticcolumns.html + AssignTo dbgrids/tcustomdbgrid.assignto.html + BeginLayout dbgrids/tcustomdbgrid.beginlayout.html + CellClick dbgrids/tcustomdbgrid.cellclick.html + InvalidateSizes dbgrids/tcustomdbgrid.invalidatesizes.html + ColumnEditorStyle dbgrids/tcustomdbgrid.columneditorstyle.html + CreateWnd dbgrids/tcustomdbgrid.createwnd.html + DefaultDrawCell dbgrids/tcustomdbgrid.defaultdrawcell.html + DefaultEditorStyle dbgrids/tcustomdbgrid.defaulteditorstyle.html + DoCopyToClipboard + DoExit dbgrids/tcustomdbgrid.doexit.html + DoMouseWheelDown dbgrids/tcustomdbgrid.domousewheeldown.html + DoMouseWheelUp dbgrids/tcustomdbgrid.domousewheelup.html + DoOnChangeBounds dbgrids/tcustomdbgrid.doonchangebounds.html + DoPrepareCanvas dbgrids/tcustomdbgrid.dopreparecanvas.html + DoLoadColumn dbgrids/tcustomdbgrid.doloadcolumn.html + DoSaveColumn dbgrids/tcustomdbgrid.dosavecolumn.html + DrawCellBackground dbgrids/tcustomdbgrid.drawcellbackground.html + DrawCheckboxBitmaps dbgrids/tcustomdbgrid.drawcheckboxbitmaps.html + DrawFixedText dbgrids/tcustomdbgrid.drawfixedtext.html + DrawColumnText + DrawIndicator dbgrids/tcustomdbgrid.drawindicator.html + EditingColumn dbgrids/tcustomdbgrid.editingcolumn.html + EditorCancelEditing dbgrids/tcustomdbgrid.editorcancelediting.html + EditorDoGetValue dbgrids/tcustomdbgrid.editordogetvalue.html + EditorCanAcceptKey dbgrids/tcustomdbgrid.editorcanacceptkey.html + EditorTextChanged dbgrids/tcustomdbgrid.editortextchanged.html + EndLayout dbgrids/tcustomdbgrid.endlayout.html + FieldIndexFromGridColumn dbgrids/tcustomdbgrid.fieldindexfromgridcolumn.html + FirstGridColumn dbgrids/tcustomdbgrid.firstgridcolumn.html + GetBufferCount dbgrids/tcustomdbgrid.getbuffercount.html + GetCellHintText dbgrids/tcustomdbgrid.getcellhinttext.html + GetDefaultColumnAlignment dbgrids/tcustomdbgrid.getdefaultcolumnalignment.html + GetDefaultColumnWidth dbgrids/tcustomdbgrid.getdefaultcolumnwidth.html + GetDefaultColumnReadOnly dbgrids/tcustomdbgrid.getdefaultcolumnreadonly.html + GetDefaultColumnTitle dbgrids/tcustomdbgrid.getdefaultcolumntitle.html + GetDefaultRowHeight dbgrids/tcustomdbgrid.getdefaultrowheight.html + GetDsFieldFromGridColumn dbgrids/tcustomdbgrid.getdsfieldfromgridcolumn.html + GetEditMask dbgrids/tcustomdbgrid.geteditmask.html + GetEditText dbgrids/tcustomdbgrid.getedittext.html + GetFieldFromGridColumn dbgrids/tcustomdbgrid.getfieldfromgridcolumn.html + GetGridColumnFromField dbgrids/tcustomdbgrid.getgridcolumnfromfield.html + GetImageForCheckBox dbgrids/tcustomdbgrid.getimageforcheckbox.html + GetIsCellTitle dbgrids/tcustomdbgrid.getiscelltitle.html + GetSelectedState dbgrids/tcustomdbgrid.getselectedstate.html + GetTruncCellHintText dbgrids/tcustomdbgrid.gettrunccellhinttext.html + GridCanModify dbgrids/tcustomdbgrid.gridcanmodify.html + HeaderClick dbgrids/tcustomdbgrid.headerclick.html + IsColumnVisible dbgrids/tcustomdbgrid.iscolumnvisible.html + IsValidChar dbgrids/tcustomdbgrid.isvalidchar.html + KeyDown dbgrids/tcustomdbgrid.keydown.html + LinkActive dbgrids/tcustomdbgrid.linkactive.html + LayoutChanged dbgrids/tcustomdbgrid.layoutchanged.html + LoadGridOptions dbgrids/tcustomdbgrid.loadgridoptions.html + MoveSelection dbgrids/tcustomdbgrid.moveselection.html + MouseButtonAllowed dbgrids/tcustomdbgrid.mousebuttonallowed.html + MouseDown dbgrids/tcustomdbgrid.mousedown.html + PrepareCellHints dbgrids/tcustomdbgrid.preparecellhints.html + RemoveAutomaticColumns dbgrids/tcustomdbgrid.removeautomaticcolumns.html + ResetSizes + SaveGridOptions dbgrids/tcustomdbgrid.savegridoptions.html + SetFixedCols + SelectCell dbgrids/tcustomdbgrid.selectcell.html + UnprepareCellHints dbgrids/tcustomdbgrid.unpreparecellhints.html + UpdateActive dbgrids/tcustomdbgrid.updateactive.html + UpdateAutoSizeColumns dbgrids/tcustomdbgrid.updateautosizecolumns.html + UpdateData dbgrids/tcustomdbgrid.updatedata.html + UpdateGridCounts dbgrids/tcustomdbgrid.updategridcounts.html + Columns dbgrids/tcustomdbgrid.columns.html + GridStatus dbgrids/tcustomdbgrid.gridstatus.html + Datalink dbgrids/tcustomdbgrid.datalink.html + DataSource dbgrids/tcustomdbgrid.datasource.html + OptionsExtra dbgrids/tcustomdbgrid.optionsextra.html + ReadOnly dbgrids/tcustomdbgrid.readonly.html + SelectedRows dbgrids/tcustomdbgrid.selectedrows.html + OnCellClick dbgrids/tcustomdbgrid.oncellclick.html + OnColEnter dbgrids/tcustomdbgrid.oncolenter.html + OnColExit dbgrids/tcustomdbgrid.oncolexit.html + OnColumnMoved dbgrids/tcustomdbgrid.oncolumnmoved.html + OnColumnSized dbgrids/tcustomdbgrid.oncolumnsized.html + OnDrawColumnCell dbgrids/tcustomdbgrid.ondrawcolumncell.html + OnFieldEditMask dbgrids/tcustomdbgrid.onfieldeditmask.html + OnGetCellHint + OnPrepareCanvas dbgrids/tcustomdbgrid.onpreparecanvas.html + OnSelectEditor dbgrids/tcustomdbgrid.onselecteditor.html + OnTitleClick dbgrids/tcustomdbgrid.ontitleclick.html + OnUserCheckboxBitmap dbgrids/tcustomdbgrid.onusercheckboxbitmap.html + OnUserCheckboxState dbgrids/tcustomdbgrid.onusercheckboxstate.html + Create dbgrids/tcustomdbgrid.create.html + AutoSizeColumns dbgrids/tcustomdbgrid.autosizecolumns.html + InitiateAction dbgrids/tcustomdbgrid.initiateaction.html + DefaultDrawColumnCell dbgrids/tcustomdbgrid.defaultdrawcolumncell.html + ResetColWidths dbgrids/tcustomdbgrid.resetcolwidths.html + Destroy dbgrids/tcustomdbgrid.destroy.html + MouseToRecordOffset dbgrids/tcustomdbgrid.mousetorecordoffset.html + ExecuteAction dbgrids/tcustomdbgrid.executeaction.html + UpdateAction dbgrids/tcustomdbgrid.updateaction.html + SaveToFile + SaveToStream dbgrids/tcustomdbgrid.savetostream.html + LoadFromFile + LoadFromStream dbgrids/tcustomdbgrid.loadfromstream.html + AllowOutboundEvents + SelectedField dbgrids/tcustomdbgrid.selectedfield.html + SelectedIndex dbgrids/tcustomdbgrid.selectedindex.html + SelectedColumn dbgrids/tcustomdbgrid.selectedcolumn.html + SelectedFieldRect dbgrids/tcustomdbgrid.selectedfieldrect.html + LastColumn dbgrids/tcustomdbgrid.lastcolumn.html + FirstColumn dbgrids/tcustomdbgrid.firstcolumn.html + BeforeMoveSelection grids/tcustomgrid.beforemoveselection.html + ColRowMoved grids/tcustomgrid.colrowmoved.html + CreateColumns grids/tcustomgrid.createcolumns.html + DefineProperties + DrawAllRows + DrawFocusRect grids/tcustomgrid.drawfocusrect.html + DrawRow grids/tcustomgrid.drawrow.html + DrawCell grids/tcustomgrid.drawcell.html + EditorIsReadOnly grids/tcustomgrid.editorisreadonly.html + GetIsCellSelected grids/tcustomgrid.getiscellselected.html + GetSBVisibility grids/tcustomgrid.getsbvisibility.html + GetSBRanges grids/tcustomgrid.getsbranges.html + HeaderSized grids/tcustomgrid.headersized.html + Loaded + MouseMove controls/tcontrol.mousemove.html + PrepareCanvas grids/tcustomgrid.preparecanvas.html + SelectEditor grids/tcustomgrid.selecteditor.html + SetEditText grids/tcustomgrid.setedittext.html + WMVScroll grids/tcustomgrid.wmvscroll.html + WndProc controls/tcontrol.wndproc.html + Options grids/tcustomgrid.options.html + EditorByStyle grids/tcustomgrid.editorbystyle.html + TDBGrid dbgrids/tdbgrid.html + InplaceEditor dbgrids/tdbgrid.inplaceeditor.html + BiDiMode dbgrids/tdbgrid.bidimode.html + CellHintPriority dbgrids/tdbgrid.cellhintpriority.html + FixedCols dbgrids/tdbgrid.fixedcols.html + ParentBiDiMode dbgrids/tdbgrid.parentbidimode.html + TabAdvance dbgrids/tdbgrid.tabadvance.html + TitleImageList dbgrids/tdbgrid.titleimagelist.html + OnContextPopup dbgrids/tdbgrid.oncontextpopup.html + OnEditingDone dbgrids/tdbgrid.oneditingdone.html + OnGetCellHint dbgrids/tdbgrid.ongetcellhint.html + OnMouseEnter dbgrids/tdbgrid.onmouseenter.html + OnMouseLeave dbgrids/tdbgrid.onmouseleave.html + OnMouseWheel dbgrids/tdbgrid.onmousewheel.html + OnMouseWheelDown dbgrids/tdbgrid.onmousewheeldown.html + OnMouseWheelUp dbgrids/tdbgrid.onmousewheelup.html + OnUserCheckboxState dbgrids/tdbgrid.onusercheckboxstate.html + BorderColor grids/tcustomgrid.bordercolor.html + Canvas controls/tcustomcontrol.canvas.html + DefaultTextStyle grids/tcustomgrid.defaulttextstyle.html + EditorBorderStyle grids/tcustomgrid.editorborderstyle.html + EditorMode grids/tcustomgrid.editormode.html + ExtendedColSizing grids/tcustomgrid.extendedcolsizing.html + FastEditing grids/tcustomgrid.fastediting.html + FocusColor grids/tcustomgrid.focuscolor.html + FocusRectVisible grids/tcustomgrid.focusrectvisible.html + GridLineColor grids/tcustomgrid.gridlinecolor.html + GridLineStyle grids/tcustomgrid.gridlinestyle.html + SelectedColor grids/tcustomgrid.selectedcolor.html + SelectedRows dbgrids/tcustomdbgrid.selectedrows.html + Align controls/tcontrol.align.html + AlternateColor grids/tcustomgrid.alternatecolor.html + Anchors controls/tcontrol.anchors.html + AutoAdvance grids/tcustomgrid.autoadvance.html + AutoEdit grids/tcustomgrid.autoedit.html + AutoFillColumns grids/tcustomgrid.autofillcolumns.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + Color controls/tcontrol.color.html + Columns grids/tcustomgrid.columns.html + Constraints controls/tcontrol.constraints.html + DataSource dbgrids/tcustomdbgrid.datasource.html + DefaultDrawing grids/tcustomgrid.defaultdrawing.html + DefaultRowHeight grids/tcustomgrid.defaultrowheight.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + FixedColor grids/tcustomgrid.fixedcolor.html + FixedHotColor grids/tcustomgrid.fixedhotcolor.html + Flat grids/tcustomgrid.flat.html + Font controls/tcontrol.font.html + HeaderHotZones grids/tcustomgrid.headerhotzones.html + HeaderPushZones grids/tcustomgrid.headerpushzones.html + Options grids/tcustomgrid.options.html + OptionsExtra dbgrids/tcustomdbgrid.optionsextra.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly dbgrids/tcustomdbgrid.readonly.html + Scrollbars grids/tcustomgrid.scrollbars.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TitleFont grids/tcustomgrid.titlefont.html + TitleStyle grids/tcustomgrid.titlestyle.html + UseXORFeatures grids/tcustomgrid.usexorfeatures.html + Visible controls/tcontrol.visible.html + OnCellClick dbgrids/tcustomdbgrid.oncellclick.html + OnColEnter dbgrids/tcustomdbgrid.oncolenter.html + OnColExit dbgrids/tcustomdbgrid.oncolexit.html + OnColumnMoved dbgrids/tcustomdbgrid.oncolumnmoved.html + OnColumnSized dbgrids/tcustomdbgrid.oncolumnsized.html + OnDrawColumnCell dbgrids/tcustomdbgrid.ondrawcolumncell.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnFieldEditMask dbgrids/tcustomdbgrid.onfieldeditmask.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnPrepareCanvas dbgrids/tcustomdbgrid.onpreparecanvas.html + OnSelectEditor dbgrids/tcustomdbgrid.onselecteditor.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnTitleClick dbgrids/tcustomdbgrid.ontitleclick.html + OnUserCheckboxBitmap grids/tcustomgrid.onusercheckboxbitmap.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + Register dbgrids/register.html + Grids grids/index.html + HowToUseGrids grids/howtousegrids.html + GRIDFILEVERSION grids/gridfileversion.html + GM_SETVALUE grids/gm_setvalue.html + GM_GETVALUE grids/gm_getvalue.html + GM_SETGRID grids/gm_setgrid.html + GM_SETBOUNDS grids/gm_setbounds.html + GM_SELECTALL grids/gm_selectall.html + GM_SETMASK grids/gm_setmask.html + GM_SETPOS grids/gm_setpos.html + GM_READY grids/gm_ready.html + GM_GETGRID grids/gm_getgrid.html + EO_AUTOSIZE grids/eo_autosize.html + EO_HOOKKEYDOWN grids/eo_hookkeydown.html + EO_HOOKKEYPRESS grids/eo_hookkeypress.html + EO_HOOKKEYUP grids/eo_hookkeyup.html + EO_SELECTALL grids/eo_selectall.html + EO_IMPLEMENTED grids/eo_implemented.html + DEFCOLWIDTH grids/defcolwidth.html + DEFROWHEIGHT grids/defrowheight.html + DEFBUTTONWIDTH grids/defbuttonwidth.html + soAll grids/soall.html + constRubberSpace grids/construbberspace.html + constCellPadding grids/constcellpadding.html + DefaultGridOptions grids/defaultgridoptions.html + TGridOption grids/tgridoption.html + TGridOptions grids/tgridoptions.html + TGridSaveOptions grids/tgridsaveoptions.html + TSaveOptions grids/tsaveoptions.html + TGridDrawState grids/tgriddrawstate.html + TGridState grids/tgridstate.html + TGridZone grids/tgridzone.html + TGridZoneSet grids/tgridzoneset.html + TAutoAdvance grids/tautoadvance.html + TRangeSelectMode grids/trangeselectmode.html + TItemType grids/titemtype.html + TColumnButtonStyle grids/tcolumnbuttonstyle.html + TTitleStyle grids/ttitlestyle.html + TGridFlagsOption grids/tgridflagsoption.html + TGridFlags grids/tgridflags.html + TSortOrder grids/tsortorder.html + TPrefixOption grids/tprefixoption.html + TMouseWheelOption grids/tmousewheeloption.html + TCellHintPriority grids/tcellhintpriority.html + PCellProps grids/pcellprops.html + TCellProps grids/tcellprops.html + PColRowProps grids/pcolrowprops.html + TColRowProps grids/tcolrowprops.html + PGridMessage grids/pgridmessage.html + TGridMessage grids/tgridmessage.html + TEditorItem grids/teditoritem.html + TOnDrawCell grids/tondrawcell.html + TOnSelectCellEvent grids/tonselectcellevent.html + TOnSelectEvent grids/tonselectevent.html + TGridOperationEvent grids/tgridoperationevent.html + THdrEvent grids/thdrevent.html + TOnCompareCells grids/toncomparecells.html + TSelectEditorEvent grids/tselecteditorevent.html + TOnPrepareCanvasEvent grids/tonpreparecanvasevent.html + TUserCheckBoxBitmapEvent grids/tusercheckboxbitmapevent.html + TValidateEntryEvent grids/tvalidateentryevent.html + TToggledCheckboxEvent grids/ttoggledcheckboxevent.html + THeaderSizingEvent grids/theadersizingevent.html + TGetCellHintEvent grids/tgetcellhintevent.html + TSaveColumnEvent grids/tsavecolumnevent.html + TGridPropertyBackup grids/tgridpropertybackup.html + TGridCoord grids/tgridcoord.html + TGridRect grids/tgridrect.html + TGridRectArray grids/tgridrectarray.html + TSizingRec grids/tsizingrec.html + TGridDataCache grids/tgriddatacache.html + TGetEditEvent grids/tgeteditevent.html + TSetEditEvent grids/tseteditevent.html + TGetCheckboxStateEvent grids/tgetcheckboxstateevent.html + TSetCheckboxStateEvent grids/tsetcheckboxstateevent.html + EGridException grids/egridexception.html + TStringCellEditor grids/tstringcelleditor.html + msg_SetMask grids/tstringcelleditor.msg_setmask.html + msg_SetValue grids/tstringcelleditor.msg_setvalue.html + msg_GetValue grids/tstringcelleditor.msg_getvalue.html + msg_SetGrid grids/tstringcelleditor.msg_setgrid.html + msg_SelectAll grids/tstringcelleditor.msg_selectall.html + msg_SetPos grids/tstringcelleditor.msg_setpos.html + msg_GetGrid grids/tstringcelleditor.msg_getgrid.html + Create + EditText maskedit/tcustommaskedit.edittext.html + OnEditingDone grids/tstringcelleditor.oneditingdone.html + WndProc controls/tcontrol.wndproc.html + Change stdctrls/tcustomedit.change.html + KeyDown controls/twincontrol.keydown.html + EditingDone controls/tcontrol.editingdone.html + TButtonCellEditor grids/tbuttoncelleditor.html + msg_SetGrid grids/tbuttoncelleditor.msg_setgrid.html + msg_SetBounds grids/tbuttoncelleditor.msg_setbounds.html + msg_SetPos grids/tbuttoncelleditor.msg_setpos.html + msg_Ready grids/tbuttoncelleditor.msg_ready.html + msg_GetGrid grids/tbuttoncelleditor.msg_getgrid.html + Col grids/tbuttoncelleditor.col.html + Row grids/tbuttoncelleditor.row.html + TPickListCellEditor grids/tpicklistcelleditor.html + Change stdctrls/tcustomcombobox.change.html + msg_GetValue grids/tpicklistcelleditor.msg_getvalue.html + msg_SetGrid grids/tpicklistcelleditor.msg_setgrid.html + msg_SetValue grids/tpicklistcelleditor.msg_setvalue.html + msg_SetPos grids/tpicklistcelleditor.msg_setpos.html + msg_GetGrid grids/tpicklistcelleditor.msg_getgrid.html + OnEditingDone grids/tpicklistcelleditor.oneditingdone.html + WndProc controls/tcontrol.wndproc.html + KeyDown controls/twincontrol.keydown.html + DropDown + CloseUp stdctrls/tcustomcombobox.closeup.html + Select stdctrls/tcustomcombobox.select.html + EditingDone controls/tcontrol.editingdone.html + BorderStyle controls/twincontrol.borderstyle.html + TCompositeCellEditor grids/tcompositecelleditor.html + msg_GetValue grids/tcompositecelleditor.msg_getvalue.html + msg_SetGrid grids/tcompositecelleditor.msg_setgrid.html + msg_SetValue grids/tcompositecelleditor.msg_setvalue.html + msg_SetBounds grids/tcompositecelleditor.msg_setbounds.html + msg_SetMask grids/tcompositecelleditor.msg_setmask.html + msg_SelectAll grids/tcompositecelleditor.msg_selectall.html + CMControlChange grids/tcompositecelleditor.cmcontrolchange.html + msg_SetPos grids/tcompositecelleditor.msg_setpos.html + msg_GetGrid grids/tcompositecelleditor.msg_getgrid.html + GetActiveControl grids/tcompositecelleditor.getactivecontrol.html + SendChar grids/tcompositecelleditor.sendchar.html + AddEditor grids/tcompositecelleditor.addeditor.html + Focused controls/twincontrol.focused.html + MaxLength grids/tcompositecelleditor.maxlength.html + ActiveControl grids/tcompositecelleditor.activecontrol.html + DoUTF8KeyPress + VisibleChanging controls/tcontrol.visiblechanging.html + WndProc controls/tcontrol.wndproc.html + Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html + SetFocus controls/twincontrol.setfocus.html + TVirtualGrid grids/tvirtualgrid.html + doDestroyItem grids/tvirtualgrid.dodestroyitem.html + doNewItem grids/tvirtualgrid.donewitem.html + DeleteColRow grids/tvirtualgrid.deletecolrow.html + MoveColRow grids/tvirtualgrid.movecolrow.html + ExchangeColRow grids/tvirtualgrid.exchangecolrow.html + InsertColRow grids/tvirtualgrid.insertcolrow.html + DisposeCell grids/tvirtualgrid.disposecell.html + DisposeColRow grids/tvirtualgrid.disposecolrow.html + Create grids/tvirtualgrid.create.html + Destroy grids/tvirtualgrid.destroy.html + Clear grids/tvirtualgrid.clear.html + GetDefaultCell grids/tvirtualgrid.getdefaultcell.html + GetDefaultColRow grids/tvirtualgrid.getdefaultcolrow.html + ColCount grids/tvirtualgrid.colcount.html + RowCount grids/tvirtualgrid.rowcount.html + Celda grids/tvirtualgrid.celda.html + Cols grids/tvirtualgrid.cols.html + Rows grids/tvirtualgrid.rows.html + TGridColumnTitle grids/tgridcolumntitle.html + GetDefaultCaption grids/tgridcolumntitle.getdefaultcaption.html + GetDefaultAlignment grids/tgridcolumntitle.getdefaultalignment.html + GetDefaultColor grids/tgridcolumntitle.getdefaultcolor.html + GetDefaultLayout grids/tgridcolumntitle.getdefaultlayout.html + GetOwner grids/tgridcolumntitle.getowner.html + GetCaption grids/tgridcolumntitle.getcaption.html + SetCaption grids/tgridcolumntitle.setcaption.html + DefineProperties grids/tgridcolumntitle.defineproperties.html + Create grids/tgridcolumntitle.create.html + Destroy grids/tgridcolumntitle.destroy.html + FillTitleDefaultFont grids/tgridcolumntitle.filltitledefaultfont.html + IsDefault grids/tgridcolumntitle.isdefault.html + Column grids/tgridcolumntitle.column.html + Alignment grids/tgridcolumntitle.alignment.html + Caption grids/tgridcolumntitle.caption.html + Color grids/tgridcolumntitle.color.html + Font grids/tgridcolumntitle.font.html + ImageIndex grids/tgridcolumntitle.imageindex.html + ImageLayout grids/tgridcolumntitle.imagelayout.html + Layout grids/tgridcolumntitle.layout.html + MultiLine grids/tgridcolumntitle.multiline.html + PrefixOption grids/tgridcolumntitle.prefixoption.html + Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + TGridColumn grids/tgridcolumn.html + GetDefaultAlignment grids/tgridcolumn.getdefaultalignment.html + GetDefaultColor grids/tgridcolumn.getdefaultcolor.html + GetDefaultLayout grids/tgridcolumn.getdefaultlayout.html + GetDefaultMaxSize grids/tgridcolumn.getdefaultmaxsize.html + GetDefaultMinSize grids/tgridcolumn.getdefaultminsize.html + GetDefaultReadOnly grids/tgridcolumn.getdefaultreadonly.html + GetDefaultSizePriority grids/tgridcolumn.getdefaultsizepriority.html + GetDefaultVisible grids/tgridcolumn.getdefaultvisible.html + GetDefaultValueChecked grids/tgridcolumn.getdefaultvaluechecked.html + GetDefaultValueUnchecked grids/tgridcolumn.getdefaultvalueunchecked.html + GetDefaultWidth grids/tgridcolumn.getdefaultwidth.html + GetPickList grids/tgridcolumn.getpicklist.html + GetValueChecked grids/tgridcolumn.getvaluechecked.html + GetValueUnchecked grids/tgridcolumn.getvalueunchecked.html + ColumnChanged grids/tgridcolumn.columnchanged.html + AllColumnsChange grids/tgridcolumn.allcolumnschange.html + CreateTitle grids/tgridcolumn.createtitle.html + SetIndex grids/tgridcolumn.setindex.html + IsDefaultFont grids/tgridcolumn.isdefaultfont.html + Create grids/tgridcolumn.create.html + Destroy grids/tgridcolumn.destroy.html + FillDefaultFont grids/tgridcolumn.filldefaultfont.html + IsDefault grids/tgridcolumn.isdefault.html + Grid grids/tgridcolumn.grid.html + DefaultWidth grids/tgridcolumn.defaultwidth.html + StoredWidth grids/tgridcolumn.storedwidth.html + WidthChanged grids/tgridcolumn.widthchanged.html + Alignment grids/tgridcolumn.alignment.html + ButtonStyle grids/tgridcolumn.buttonstyle.html + Color grids/tgridcolumn.color.html + DropDownRows grids/tgridcolumn.dropdownrows.html + Expanded grids/tgridcolumn.expanded.html + Font grids/tgridcolumn.font.html + Layout grids/tgridcolumn.layout.html + MinSize grids/tgridcolumn.minsize.html + MaxSize grids/tgridcolumn.maxsize.html + PickList grids/tgridcolumn.picklist.html + ReadOnly grids/tgridcolumn.readonly.html + SizePriority grids/tgridcolumn.sizepriority.html + Tag grids/tgridcolumn.tag.html + Title grids/tgridcolumn.title.html + Width grids/tgridcolumn.width.html + Visible grids/tgridcolumn.visible.html + ValueChecked grids/tgridcolumn.valuechecked.html + ValueUnchecked grids/tgridcolumn.valueunchecked.html + GetDisplayName + Assign ms-its:rtl.chm::/classes/tpersistent.assign.html + TGridColumns grids/tgridcolumns.html + GetOwner grids/tgridcolumns.getowner.html + TitleFontChanged grids/tgridcolumns.titlefontchanged.html + FontChanged grids/tgridcolumns.fontchanged.html + RemoveColumn grids/tgridcolumns.removecolumn.html + MoveColumn grids/tgridcolumns.movecolumn.html + ExchangeColumn grids/tgridcolumns.exchangecolumn.html + InsertColumn grids/tgridcolumns.insertcolumn.html + Create grids/tgridcolumns.create.html + RealIndex grids/tgridcolumns.realindex.html + IndexOf grids/tgridcolumns.indexof.html + IsDefault grids/tgridcolumns.isdefault.html + HasIndex grids/tgridcolumns.hasindex.html + VisibleIndex grids/tgridcolumns.visibleindex.html + Grid grids/tgridcolumns.grid.html + Items grids/tgridcolumns.items.html + VisibleCount grids/tgridcolumns.visiblecount.html + Enabled grids/tgridcolumns.enabled.html + Update + Add ms-its:rtl.chm::/classes/tcollection.add.html + Clear ms-its:rtl.chm::/classes/tcollection.clear.html + TCustomGrid grids/tcustomgrid.html + fGridState grids/tcustomgrid.fgridstate.html + AddSelectedRange grids/tcustomgrid.addselectedrange.html + AdjustClientRect grids/tcustomgrid.adjustclientrect.html + AdjustEditorBounds grids/tcustomgrid.adjusteditorbounds.html + AssignTo grids/tcustomgrid.assignto.html + AutoAdjustColumn grids/tcustomgrid.autoadjustcolumn.html + BeforeMoveSelection grids/tcustomgrid.beforemoveselection.html + BeginAutoDrag grids/tcustomgrid.beginautodrag.html + BoxRect grids/tcustomgrid.boxrect.html + CacheMouseDown grids/tcustomgrid.cachemousedown.html + CalcAutoSizeColumn grids/tcustomgrid.calcautosizecolumn.html + CalcFocusRect grids/tcustomgrid.calcfocusrect.html + CalcMaxTopLeft grids/tcustomgrid.calcmaxtopleft.html + CalcScrollbarsRange grids/tcustomgrid.calcscrollbarsrange.html + CalculatePreferredSize grids/tcustomgrid.calculatepreferredsize.html + CanEditShow grids/tcustomgrid.caneditshow.html + CanGridAcceptKey grids/tcustomgrid.cangridacceptkey.html + CellClick grids/tcustomgrid.cellclick.html + CheckLimits grids/tcustomgrid.checklimits.html + CheckLimitsWithError grids/tcustomgrid.checklimitswitherror.html + CMBiDiModeChanged grids/tcustomgrid.cmbidimodechanged.html + CMMouseEnter grids/tcustomgrid.cmmouseenter.html + CMMouseLeave grids/tcustomgrid.cmmouseleave.html + ColRowDeleted grids/tcustomgrid.colrowdeleted.html + ColRowExchanged grids/tcustomgrid.colrowexchanged.html + ColRowInserted grids/tcustomgrid.colrowinserted.html + ColRowMoved grids/tcustomgrid.colrowmoved.html + ColRowToOffset grids/tcustomgrid.colrowtooffset.html + ColumnIndexFromGridColumn grids/tcustomgrid.columnindexfromgridcolumn.html + ColumnFromGridColumn grids/tcustomgrid.columnfromgridcolumn.html + ColumnsChanged grids/tcustomgrid.columnschanged.html + ColWidthsChanged grids/tcustomgrid.colwidthschanged.html + CreateColumns grids/tcustomgrid.createcolumns.html + CheckNewCachedSizes grids/tcustomgrid.checknewcachedsizes.html + DialogChar grids/tcustomgrid.dialogchar.html + DoCompareCells grids/tcustomgrid.docomparecells.html + DoCopyToClipboard grids/tcustomgrid.docopytoclipboard.html + DoCutToClipboard grids/tcustomgrid.docuttoclipboard.html + DoEditButtonClick grids/tcustomgrid.doeditbuttonclick.html + DoEditorHide grids/tcustomgrid.doeditorhide.html + DoEditorShow grids/tcustomgrid.doeditorshow.html + DoLoadColumn grids/tcustomgrid.doloadcolumn.html + DoSaveColumn grids/tcustomgrid.dosavecolumn.html + DoMouseWheel grids/tcustomgrid.domousewheel.html + DoOPDeleteColRow grids/tcustomgrid.doopdeletecolrow.html + DoOPExchangeColRow grids/tcustomgrid.doopexchangecolrow.html + DoOPInsertColRow grids/tcustomgrid.doopinsertcolrow.html + DoOPMoveColRow grids/tcustomgrid.doopmovecolrow.html + DoPasteFromClipboard grids/tcustomgrid.dopastefromclipboard.html + DoPrepareCanvas grids/tcustomgrid.dopreparecanvas.html + DrawBorder grids/tcustomgrid.drawborder.html + DrawFillRect grids/tcustomgrid.drawfillrect.html + DrawCell grids/tcustomgrid.drawcell.html + DrawCellGrid grids/tcustomgrid.drawcellgrid.html + DrawTextInCell grids/tcustomgrid.drawtextincell.html + DrawThemedCell grids/tcustomgrid.drawthemedcell.html + DrawCellText grids/tcustomgrid.drawcelltext.html + DrawGridCheckboxBitmaps grids/tcustomgrid.drawgridcheckboxbitmaps.html + DrawButtonCell grids/tcustomgrid.drawbuttoncell.html + DrawColRowMoving grids/tcustomgrid.drawcolrowmoving.html + DrawColumnText grids/tcustomgrid.drawcolumntext.html + DrawColumnTitleImage grids/tcustomgrid.drawcolumntitleimage.html + DrawEdges grids/tcustomgrid.drawedges.html + DrawFocusRect grids/tcustomgrid.drawfocusrect.html + DrawRow grids/tcustomgrid.drawrow.html + EditButtonClicked grids/tcustomgrid.editbuttonclicked.html + EditordoGetValue grids/tcustomgrid.editordogetvalue.html + EditordoSetValue grids/tcustomgrid.editordosetvalue.html + EditorCanAcceptKey grids/tcustomgrid.editorcanacceptkey.html + EditorIsReadOnly grids/tcustomgrid.editorisreadonly.html + EditorHide grids/tcustomgrid.editorhide.html + EditorLocked grids/tcustomgrid.editorlocked.html + EditingAllowed grids/tcustomgrid.editingallowed.html + EditorSelectAll grids/tcustomgrid.editorselectall.html + EditorShow grids/tcustomgrid.editorshow.html + EditorShowInCell grids/tcustomgrid.editorshowincell.html + EditorTextChanged grids/tcustomgrid.editortextchanged.html + EditorWidthChanged grids/tcustomgrid.editorwidthchanged.html + FirstGridColumn grids/tcustomgrid.firstgridcolumn.html + FixedGrid grids/tcustomgrid.fixedgrid.html + FontChanged grids/tcustomgrid.fontchanged.html + GetAutoFillColumnInfo grids/tcustomgrid.getautofillcolumninfo.html + GetCellHintText grids/tcustomgrid.getcellhinttext.html + GetCells grids/tcustomgrid.getcells.html + GetColumnAlignment grids/tcustomgrid.getcolumnalignment.html + GetColumnColor grids/tcustomgrid.getcolumncolor.html + GetColumnFont grids/tcustomgrid.getcolumnfont.html + GetColumnLayout grids/tcustomgrid.getcolumnlayout.html + GetColumnReadonly grids/tcustomgrid.getcolumnreadonly.html + GetColumnTitle grids/tcustomgrid.getcolumntitle.html + GetColumnWidth grids/tcustomgrid.getcolumnwidth.html + GetDeltaMoveNext grids/tcustomgrid.getdeltamovenext.html + GetDefaultColumnAlignment grids/tcustomgrid.getdefaultcolumnalignment.html + GetDefaultColumnWidth grids/tcustomgrid.getdefaultcolumnwidth.html + GetDefaultColumnLayout grids/tcustomgrid.getdefaultcolumnlayout.html + GetDefaultColumnReadOnly grids/tcustomgrid.getdefaultcolumnreadonly.html + GetDefaultColumnTitle grids/tcustomgrid.getdefaultcolumntitle.html + GetDefaultEditor grids/tcustomgrid.getdefaulteditor.html + GetDefaultRowHeight grids/tcustomgrid.getdefaultrowheight.html + GetGridDrawState grids/tcustomgrid.getgriddrawstate.html + GetImageForCheckBox grids/tcustomgrid.getimageforcheckbox.html + GetScrollBarPosition grids/tcustomgrid.getscrollbarposition.html + GetSBVisibility grids/tcustomgrid.getsbvisibility.html + GetSBRanges grids/tcustomgrid.getsbranges.html + GetSelectedState grids/tcustomgrid.getselectedstate.html + GetEditMask grids/tcustomgrid.geteditmask.html + GetEditText grids/tcustomgrid.getedittext.html + GetFixedcolor grids/tcustomgrid.getfixedcolor.html + GetFirstVisibleColumn grids/tcustomgrid.getfirstvisiblecolumn.html + GetFirstVisibleRow grids/tcustomgrid.getfirstvisiblerow.html + GetLastVisibleColumn grids/tcustomgrid.getlastvisiblecolumn.html + GetLastVisibleRow grids/tcustomgrid.getlastvisiblerow.html + GetSelectedColor grids/tcustomgrid.getselectedcolor.html + GetTitleShowPrefix grids/tcustomgrid.gettitleshowprefix.html + GetTruncCellHintText grids/tcustomgrid.gettrunccellhinttext.html + GridColumnFromColumnIndex grids/tcustomgrid.gridcolumnfromcolumnindex.html + GridMouseWheel grids/tcustomgrid.gridmousewheel.html + HeaderClick grids/tcustomgrid.headerclick.html + HeaderSized grids/tcustomgrid.headersized.html + HeaderSizing grids/tcustomgrid.headersizing.html + HideCellHintWindow grids/tcustomgrid.hidecellhintwindow.html + InternalSetColCount grids/tcustomgrid.internalsetcolcount.html + InvalidateCell grids/tcustomgrid.invalidatecell.html + InvalidateFromCol grids/tcustomgrid.invalidatefromcol.html + InvalidateGrid grids/tcustomgrid.invalidategrid.html + InvalidateFocused grids/tcustomgrid.invalidatefocused.html + GetIsCellTitle grids/tcustomgrid.getiscelltitle.html + GetIsCellSelected grids/tcustomgrid.getiscellselected.html + IsMouseOverCellButton grids/tcustomgrid.ismouseovercellbutton.html + KeyPress grids/tcustomgrid.keypress.html + LoadContent grids/tcustomgrid.loadcontent.html + LoadGridOptions grids/tcustomgrid.loadgridoptions.html + LockEditor grids/tcustomgrid.lockeditor.html + MouseButtonAllowed grids/tcustomgrid.mousebuttonallowed.html + MoveExtend grids/tcustomgrid.moveextend.html + MoveNextAuto grids/tcustomgrid.movenextauto.html + MoveNextSelectable grids/tcustomgrid.movenextselectable.html + MoveSelection grids/tcustomgrid.moveselection.html + OffsetToColRow grids/tcustomgrid.offsettocolrow.html + PickListItemSelected grids/tcustomgrid.picklistitemselected.html + PrepareCanvas grids/tcustomgrid.preparecanvas.html + PrepareCellHints grids/tcustomgrid.preparecellhints.html + ResetDefaultColWidths grids/tcustomgrid.resetdefaultcolwidths.html + ResetEditor grids/tcustomgrid.reseteditor.html + ResetOffset grids/tcustomgrid.resetoffset.html + ResetSizes grids/tcustomgrid.resetsizes.html + ResizeColumn grids/tcustomgrid.resizecolumn.html + ResizeRow grids/tcustomgrid.resizerow.html + RowHeightsChanged grids/tcustomgrid.rowheightschanged.html + SaveContent grids/tcustomgrid.savecontent.html + SaveGridOptions grids/tcustomgrid.savegridoptions.html + ScrollBarRange grids/tcustomgrid.scrollbarrange.html + ScrollBarPosition grids/tcustomgrid.scrollbarposition.html + ScrollBarIsVisible grids/tcustomgrid.scrollbarisvisible.html + ScrollBarPage grids/tcustomgrid.scrollbarpage.html + ScrollBarShow grids/tcustomgrid.scrollbarshow.html + ScrollBarAutomatic grids/tcustomgrid.scrollbarautomatic.html + SelectEditor grids/tcustomgrid.selecteditor.html + SelectCell grids/tcustomgrid.selectcell.html + SetCanvasFont grids/tcustomgrid.setcanvasfont.html + SetColor grids/tcustomgrid.setcolor.html + SetColRow grids/tcustomgrid.setcolrow.html + SetEditText grids/tcustomgrid.setedittext.html + SetBorderStyle grids/tcustomgrid.setborderstyle.html + SetFixedcolor grids/tcustomgrid.setfixedcolor.html + SetFixedCols grids/tcustomgrid.setfixedcols.html + SetRawColWidths grids/tcustomgrid.setrawcolwidths.html + SetSelectedColor grids/tcustomgrid.setselectedcolor.html + ShowCellHintWindow grids/tcustomgrid.showcellhintwindow.html + SizeChanged grids/tcustomgrid.sizechanged.html + Sort grids/tcustomgrid.sort.html + StartPushCell grids/tcustomgrid.startpushcell.html + TopLeftChanged grids/tcustomgrid.topleftchanged.html + TryMoveSelection grids/tcustomgrid.trymoveselection.html + UnLockEditor grids/tcustomgrid.unlockeditor.html + UnprepareCellHints grids/tcustomgrid.unpreparecellhints.html + UpdateHorzScrollBar grids/tcustomgrid.updatehorzscrollbar.html + UpdateSelectionRange grids/tcustomgrid.updateselectionrange.html + UpdateVertScrollbar grids/tcustomgrid.updatevertscrollbar.html + UpdateBorderStyle grids/tcustomgrid.updateborderstyle.html + ValidateEntry grids/tcustomgrid.validateentry.html + VisualChange grids/tcustomgrid.visualchange.html + WMHScroll grids/tcustomgrid.wmhscroll.html + WMVScroll grids/tcustomgrid.wmvscroll.html + AllowOutboundEvents grids/tcustomgrid.allowoutboundevents.html + AlternateColor grids/tcustomgrid.alternatecolor.html + AutoAdvance grids/tcustomgrid.autoadvance.html + AutoEdit grids/tcustomgrid.autoedit.html + AutoFillColumns grids/tcustomgrid.autofillcolumns.html + BorderColor grids/tcustomgrid.bordercolor.html + CellHintPriority grids/tcustomgrid.cellhintpriority.html + Col grids/tcustomgrid.col.html + ColCount grids/tcustomgrid.colcount.html + ColumnClickSorts grids/tcustomgrid.columnclicksorts.html + Columns grids/tcustomgrid.columns.html + ColWidths grids/tcustomgrid.colwidths.html + DefaultColWidth grids/tcustomgrid.defaultcolwidth.html + DefaultRowHeight grids/tcustomgrid.defaultrowheight.html + DefaultDrawing grids/tcustomgrid.defaultdrawing.html + DefaultTextStyle grids/tcustomgrid.defaulttextstyle.html + DragDx grids/tcustomgrid.dragdx.html + Editor grids/tcustomgrid.editor.html + EditorBorderStyle grids/tcustomgrid.editorborderstyle.html + EditorMode grids/tcustomgrid.editormode.html + EditorKey grids/tcustomgrid.editorkey.html + EditorOptions grids/tcustomgrid.editoroptions.html + EditorShowing grids/tcustomgrid.editorshowing.html + ExtendedColSizing grids/tcustomgrid.extendedcolsizing.html + ExtendedRowSizing grids/tcustomgrid.extendedrowsizing.html + ExtendedSelect grids/tcustomgrid.extendedselect.html + FastEditing grids/tcustomgrid.fastediting.html + AltColorStartNormal grids/tcustomgrid.altcolorstartnormal.html + FixedCols grids/tcustomgrid.fixedcols.html + FixedRows grids/tcustomgrid.fixedrows.html + FixedColor grids/tcustomgrid.fixedcolor.html + FixedHotColor grids/tcustomgrid.fixedhotcolor.html + Flat grids/tcustomgrid.flat.html + FocusColor grids/tcustomgrid.focuscolor.html + FocusRectVisible grids/tcustomgrid.focusrectvisible.html + GCache grids/tcustomgrid.gcache.html + GridFlags grids/tcustomgrid.gridflags.html + GridHeight grids/tcustomgrid.gridheight.html + GridLineColor grids/tcustomgrid.gridlinecolor.html + GridLineStyle grids/tcustomgrid.gridlinestyle.html + GridLineWidth grids/tcustomgrid.gridlinewidth.html + GridWidth grids/tcustomgrid.gridwidth.html + HeaderHotZones grids/tcustomgrid.headerhotzones.html + HeaderPushZones grids/tcustomgrid.headerpushzones.html + TabAdvance grids/tcustomgrid.tabadvance.html + TitleImageList grids/tcustomgrid.titleimagelist.html + InplaceEditor grids/tcustomgrid.inplaceeditor.html + IsCellSelected grids/tcustomgrid.iscellselected.html + LeftCol grids/tcustomgrid.leftcol.html + MouseWheelOption grids/tcustomgrid.mousewheeloption.html + Options grids/tcustomgrid.options.html + RangeSelectMode grids/tcustomgrid.rangeselectmode.html + Row grids/tcustomgrid.row.html + RowCount grids/tcustomgrid.rowcount.html + RowHeights grids/tcustomgrid.rowheights.html + SaveOptions grids/tcustomgrid.saveoptions.html + SelectActive grids/tcustomgrid.selectactive.html + SelectedColor grids/tcustomgrid.selectedcolor.html + SelectedColumn grids/tcustomgrid.selectedcolumn.html + Selection grids/tcustomgrid.selection.html + ScrollBars grids/tcustomgrid.scrollbars.html + StrictSort grids/tcustomgrid.strictsort.html + TitleFont grids/tcustomgrid.titlefont.html + TitleStyle grids/tcustomgrid.titlestyle.html + TopRow grids/tcustomgrid.toprow.html + UseXORFeatures grids/tcustomgrid.usexorfeatures.html + VisibleColCount grids/tcustomgrid.visiblecolcount.html + VisibleRowCount grids/tcustomgrid.visiblerowcount.html + OnBeforeSelection grids/tcustomgrid.onbeforeselection.html + OnCheckboxToggled grids/tcustomgrid.oncheckboxtoggled.html + OnCompareCells grids/tcustomgrid.oncomparecells.html + OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html + OnDrawCell grids/tcustomgrid.ondrawcell.html + OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html + OnButtonClick grids/tcustomgrid.onbuttonclick.html + OnPickListSelect grids/tcustomgrid.onpicklistselect.html + OnSelection grids/tcustomgrid.onselection.html + OnSelectEditor grids/tcustomgrid.onselecteditor.html + OnTopLeftChanged grids/tcustomgrid.ontopleftchanged.html + OnUserCheckboxBitmap grids/tcustomgrid.onusercheckboxbitmap.html + OnValidateEntry grids/tcustomgrid.onvalidateentry.html + FlipRect grids/tcustomgrid.fliprect.html + FlipPoint grids/tcustomgrid.flippoint.html + FlipX grids/tcustomgrid.flipx.html + OnGetCellHint grids/tcustomgrid.ongetcellhint.html + OnSaveColumn grids/tcustomgrid.onsavecolumn.html + OnLoadColumn grids/tcustomgrid.onloadcolumn.html + Create grids/tcustomgrid.create.html + Destroy grids/tcustomgrid.destroy.html + AutoAdjustColumns grids/tcustomgrid.autoadjustcolumns.html + BeginUpdate grids/tcustomgrid.beginupdate.html + CellRect grids/tcustomgrid.cellrect.html + CellToGridZone grids/tcustomgrid.celltogridzone.html + CheckPosition grids/tcustomgrid.checkposition.html + Clear grids/tcustomgrid.clear.html + ClearSelections grids/tcustomgrid.clearselections.html + EditorByStyle grids/tcustomgrid.editorbystyle.html + EditorKeyDown grids/tcustomgrid.editorkeydown.html + EditorKeyPress grids/tcustomgrid.editorkeypress.html + EditorKeyUp grids/tcustomgrid.editorkeyup.html + EndUpdate grids/tcustomgrid.endupdate.html + EraseBackground grids/tcustomgrid.erasebackground.html + Focused grids/tcustomgrid.focused.html + HasMultiSelection grids/tcustomgrid.hasmultiselection.html + InvalidateCol grids/tcustomgrid.invalidatecol.html + InvalidateRange grids/tcustomgrid.invalidaterange.html + InvalidateRow grids/tcustomgrid.invalidaterow.html + IsCellVisible grids/tcustomgrid.iscellvisible.html + IsFixedCellVisible grids/tcustomgrid.isfixedcellvisible.html + LoadFromFile grids/tcustomgrid.loadfromfile.html + LoadFromStream grids/tcustomgrid.loadfromstream.html + MouseCoord grids/tcustomgrid.mousecoord.html + MouseToCell grids/tcustomgrid.mousetocell.html + MouseToLogcell grids/tcustomgrid.mousetologcell.html + MouseToGridZone grids/tcustomgrid.mousetogridzone.html + SaveToFile grids/tcustomgrid.savetofile.html + SaveToStream grids/tcustomgrid.savetostream.html + SetFocus grids/tcustomgrid.setfocus.html + SelectedRange grids/tcustomgrid.selectedrange.html + SelectedRangeCount grids/tcustomgrid.selectedrangecount.html + SortOrder grids/tcustomgrid.sortorder.html + SortColumn grids/tcustomgrid.sortcolumn.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + CreateWnd controls/twincontrol.createwnd.html + CreateParams controls/twincontrol.createparams.html + Click controls/tcontrol.click.html + DblClick controls/tcontrol.dblclick.html + DefineProperties + DestroyHandle controls/twincontrol.destroyhandle.html + DoExit controls/twincontrol.doexit.html + DoEnter controls/twincontrol.doenter.html + DoMouseWheelDown controls/tcontrol.domousewheeldown.html + DoMouseWheelUp controls/tcontrol.domousewheelup.html + DoOnChangeBounds controls/tcontrol.doonchangebounds.html + DoSetBounds controls/tcontrol.dosetbounds.html + DoUTF8KeyPress + DrawAllRows + KeyDown controls/twincontrol.keydown.html + KeyUp controls/twincontrol.keyup.html + Loaded + MouseDown controls/tcontrol.mousedown.html + MouseMove controls/tcontrol.mousemove.html + MouseUp controls/tcontrol.mouseup.html + Paint controls/tcustomcontrol.paint.html + WMKillFocus controls/twincontrol.wmkillfocus.html + WMSetFocus controls/twincontrol.wmsetfocus.html + WndProc controls/tcontrol.wndproc.html + BorderStyle controls/twincontrol.borderstyle.html + Invalidate controls/tcontrol.invalidate.html + EditingDone controls/tcontrol.editingdone.html + TabStop controls/twincontrol.tabstop.html + TCustomDrawGrid grids/tcustomdrawgrid.html + FGrid grids/tcustomdrawgrid.fgrid.html + CalcCellExtent grids/tcustomdrawgrid.calccellextent.html + CellClick grids/tcustomgrid.cellclick.html + CreateVirtualGrid grids/tcustomdrawgrid.createvirtualgrid.html + DrawCellAutonumbering grids/tcustomdrawgrid.drawcellautonumbering.html + DrawFocusRect grids/tcustomdrawgrid.drawfocusrect.html + GetCheckBoxState grids/tcustomdrawgrid.getcheckboxstate.html + GridMouseWheel grids/tcustomdrawgrid.gridmousewheel.html + HeaderSizing grids/tcustomdrawgrid.headersizing.html + KeyDown + NotifyColRowChange grids/tcustomdrawgrid.notifycolrowchange.html + SetCheckboxState grids/tcustomdrawgrid.setcheckboxstate.html + ToggleCheckbox grids/tcustomdrawgrid.togglecheckbox.html + OnGetCheckboxState grids/tcustomdrawgrid.ongetcheckboxstate.html + OnSetCheckboxState grids/tcustomdrawgrid.onsetcheckboxstate.html + Create grids/tcustomdrawgrid.create.html + Destroy grids/tcustomdrawgrid.destroy.html + DeleteColRow grids/tcustomdrawgrid.deletecolrow.html + DeleteCol grids/tcustomdrawgrid.deletecol.html + DeleteRow grids/tcustomdrawgrid.deleterow.html + ExchangeColRow grids/tcustomdrawgrid.exchangecolrow.html + InsertColRow grids/tcustomdrawgrid.insertcolrow.html + MoveColRow grids/tcustomdrawgrid.movecolrow.html + SortColRow grids/tcustomdrawgrid.sortcolrow.html + DefaultDrawCell grids/tcustomdrawgrid.defaultdrawcell.html + TabAdvance grids/tcustomdrawgrid.tabadvance.html + OnColRowDeleted grids/tcustomdrawgrid.oncolrowdeleted.html + OnColRowExchanged grids/tcustomdrawgrid.oncolrowexchanged.html + OnColRowInserted grids/tcustomdrawgrid.oncolrowinserted.html + OnColRowMoved grids/tcustomdrawgrid.oncolrowmoved.html + OnCompareCells grids/tcustomdrawgrid.oncomparecells.html + OnButtonClick grids/tcustomdrawgrid.onbuttonclick.html + OnGetEditMask grids/tcustomdrawgrid.ongeteditmask.html + OnGetEditText grids/tcustomdrawgrid.ongetedittext.html + OnHeaderClick grids/tcustomdrawgrid.onheaderclick.html + OnHeaderSized grids/tcustomdrawgrid.onheadersized.html + OnHeaderSizing grids/tcustomdrawgrid.onheadersizing.html + OnMouseEnter grids/tcustomdrawgrid.onmouseenter.html + OnMouseLeave grids/tcustomdrawgrid.onmouseleave.html + OnMouseWheel grids/tcustomdrawgrid.onmousewheel.html + OnSelectCell grids/tcustomdrawgrid.onselectcell.html + OnSetEditText grids/tcustomdrawgrid.onsetedittext.html + ColRowDeleted grids/tcustomgrid.colrowdeleted.html + ColRowExchanged grids/tcustomgrid.colrowexchanged.html + ColRowInserted grids/tcustomgrid.colrowinserted.html + ColRowMoved grids/tcustomgrid.colrowmoved.html + DrawCell grids/tcustomgrid.drawcell.html + GetEditMask grids/tcustomgrid.geteditmask.html + GetEditText grids/tcustomgrid.getedittext.html + HeaderClick grids/tcustomgrid.headerclick.html + HeaderSized grids/tcustomgrid.headersized.html + SelectCell grids/tcustomgrid.selectcell.html + SetColor grids/tcustomgrid.setcolor.html + SetEditText grids/tcustomgrid.setedittext.html + SizeChanged grids/tcustomgrid.sizechanged.html + AllowOutboundEvents grids/tcustomgrid.allowoutboundevents.html + BorderColor grids/tcustomgrid.bordercolor.html + Canvas controls/tcustomcontrol.canvas.html + Col grids/tcustomgrid.col.html + ColWidths grids/tcustomgrid.colwidths.html + Editor grids/tcustomgrid.editor.html + EditorBorderStyle grids/tcustomgrid.editorborderstyle.html + EditorMode grids/tcustomgrid.editormode.html + ExtendedColSizing grids/tcustomgrid.extendedcolsizing.html + AltColorStartNormal grids/tcustomgrid.altcolorstartnormal.html + FastEditing grids/tcustomgrid.fastediting.html + FocusColor grids/tcustomgrid.focuscolor.html + FocusRectVisible grids/tcustomgrid.focusrectvisible.html + GridHeight grids/tcustomgrid.gridheight.html + GridLineColor grids/tcustomgrid.gridlinecolor.html + GridLineStyle grids/tcustomgrid.gridlinestyle.html + GridWidth grids/tcustomgrid.gridwidth.html + IsCellSelected grids/tcustomgrid.iscellselected.html + LeftCol grids/tcustomgrid.leftcol.html + Row grids/tcustomgrid.row.html + RowHeights grids/tcustomgrid.rowheights.html + SaveOptions grids/tcustomgrid.saveoptions.html + SelectedColor grids/tcustomgrid.selectedcolor.html + SelectedColumn grids/tcustomgrid.selectedcolumn.html + Selection grids/tcustomgrid.selection.html + StrictSort grids/tcustomgrid.strictsort.html + TopRow grids/tcustomgrid.toprow.html + UseXORFeatures grids/tcustomgrid.usexorfeatures.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoAdvance grids/tcustomgrid.autoadvance.html + AutoFillColumns grids/tcustomgrid.autofillcolumns.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + Color controls/tcontrol.color.html + ColCount grids/tcustomgrid.colcount.html + Columns grids/tcustomgrid.columns.html + Constraints controls/tcontrol.constraints.html + DefaultColWidth grids/tcustomgrid.defaultcolwidth.html + DefaultDrawing grids/tcustomgrid.defaultdrawing.html + DefaultRowHeight grids/tcustomgrid.defaultrowheight.html + Enabled controls/tcontrol.enabled.html + FixedColor grids/tcustomgrid.fixedcolor.html + FixedCols grids/tcustomgrid.fixedcols.html + FixedHotColor grids/tcustomgrid.fixedhotcolor.html + FixedRows grids/tcustomgrid.fixedrows.html + Flat grids/tcustomgrid.flat.html + Font controls/tcontrol.font.html + GridLineWidth grids/tcustomgrid.gridlinewidth.html + Options grids/tcustomgrid.options.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + RowCount grids/tcustomgrid.rowcount.html + ScrollBars grids/tcustomgrid.scrollbars.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + VisibleColCount grids/tcustomgrid.visiblecolcount.html + VisibleRowCount grids/tcustomgrid.visiblerowcount.html + OnBeforeSelection grids/tcustomgrid.onbeforeselection.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDrawCell grids/tcustomgrid.ondrawcell.html + OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnPickListSelect grids/tcustomgrid.onpicklistselect.html + OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html + OnSelectEditor grids/tcustomgrid.onselecteditor.html + OnSelection grids/tcustomgrid.onselection.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnTopleftChanged grids/tcustomgrid.ontopleftchanged.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TDrawGrid grids/tdrawgrid.html + InplaceEditor grids/tdrawgrid.inplaceeditor.html + ColumnClickSorts grids/tdrawgrid.columnclicksorts.html + Constraints + HeaderHotZones grids/tdrawgrid.headerhotzones.html + HeaderPushZones grids/tdrawgrid.headerpushzones.html + MouseWheelOption grids/tdrawgrid.mousewheeloption.html + RangeSelectMode grids/tdrawgrid.rangeselectmode.html + TabAdvance grids/tdrawgrid.tabadvance.html + OnCheckboxToggled grids/tdrawgrid.oncheckboxtoggled.html + OnButtonClick grids/tdrawgrid.onbuttonclick.html + OnGetCheckboxState grids/tcustomdrawgrid.ongetcheckboxstate.html + OnHeaderSizing grids/tdrawgrid.onheadersizing.html + OnMouseEnter grids/tdrawgrid.onmouseenter.html + OnMouseLeave grids/tdrawgrid.onmouseleave.html + OnMouseWheel grids/tdrawgrid.onmousewheel.html + OnSetCheckboxState grids/tcustomdrawgrid.onsetcheckboxstate.html + OnUserCheckboxBitmap grids/tdrawgrid.onusercheckboxbitmap.html + Align controls/tcontrol.align.html + AlternateColor grids/tcustomgrid.alternatecolor.html + Anchors controls/tcontrol.anchors.html + AutoAdvance grids/tcustomgrid.autoadvance.html + AutoEdit grids/tcustomgrid.autoedit.html + AutoFillColumns grids/tcustomgrid.autofillcolumns.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + Color controls/tcontrol.color.html + ColCount grids/tcustomgrid.colcount.html + Columns grids/tcustomgrid.columns.html + DefaultColWidth grids/tcustomgrid.defaultcolwidth.html + DefaultDrawing grids/tcustomgrid.defaultdrawing.html + DefaultRowHeight grids/tcustomgrid.defaultrowheight.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + ExtendedSelect grids/tcustomgrid.extendedselect.html + FixedColor grids/tcustomgrid.fixedcolor.html + FixedCols grids/tcustomgrid.fixedcols.html + FixedRows grids/tcustomgrid.fixedrows.html + Flat grids/tcustomgrid.flat.html + Font controls/tcontrol.font.html + GridLineWidth grids/tcustomgrid.gridlinewidth.html + Options grids/tcustomgrid.options.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + RowCount grids/tcustomgrid.rowcount.html + ScrollBars grids/tcustomgrid.scrollbars.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TitleFont grids/tcustomgrid.titlefont.html + TitleImageList grids/tcustomgrid.titleimagelist.html + TitleStyle grids/tcustomgrid.titlestyle.html + UseXORFeatures grids/tcustomgrid.usexorfeatures.html + Visible controls/tcontrol.visible.html + VisibleColCount grids/tcustomgrid.visiblecolcount.html + VisibleRowCount grids/tcustomgrid.visiblerowcount.html + OnBeforeSelection grids/tcustomgrid.onbeforeselection.html + OnClick controls/tcontrol.onclick.html + OnColRowDeleted grids/tcustomdrawgrid.oncolrowdeleted.html + OnColRowExchanged grids/tcustomdrawgrid.oncolrowexchanged.html + OnColRowInserted grids/tcustomdrawgrid.oncolrowinserted.html + OnColRowMoved grids/tcustomdrawgrid.oncolrowmoved.html + OnCompareCells grids/tcustomdrawgrid.oncomparecells.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDrawCell grids/tcustomgrid.ondrawcell.html + OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetEditMask grids/tcustomdrawgrid.ongeteditmask.html + OnGetEditText grids/tcustomdrawgrid.ongetedittext.html + OnHeaderClick grids/tcustomdrawgrid.onheaderclick.html + OnHeaderSized grids/tcustomdrawgrid.onheadersized.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnPickListSelect grids/tcustomgrid.onpicklistselect.html + OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html + OnSelectEditor grids/tcustomgrid.onselecteditor.html + OnSelection grids/tcustomgrid.onselection.html + OnSelectCell grids/tcustomdrawgrid.onselectcell.html + OnSetEditText grids/tcustomdrawgrid.onsetedittext.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnTopleftChanged grids/tcustomgrid.ontopleftchanged.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TStringGridStrings grids/tstringgridstrings.html + Create grids/tstringgridstrings.create.html + Get + GetCount + GetObject + Put + PutObject + Destroy ms-its:rtl.chm::/classes/tstrings.destroy.html + Add ms-its:rtl.chm::/classes/tstrings.add.html + Assign ms-its:rtl.chm::/classes/tstrings.assign.html + Clear ms-its:rtl.chm::/classes/tstrings.clear.html + Delete ms-its:rtl.chm::/classes/tstrings.delete.html + Insert ms-its:rtl.chm::/classes/tstrings.insert.html + TCustomStringGrid grids/tcustomstringgrid.html + AssignTo grids/tcustomstringgrid.assignto.html + DefineCellsProperty grids/tcustomstringgrid.definecellsproperty.html + DrawTextInCell grids/tcustomstringgrid.drawtextincell.html + GetCells grids/tcustomstringgrid.getcells.html + SelectionSetText grids/tcustomstringgrid.selectionsettext.html + SetCells grids/tcustomstringgrid.setcells.html + SetCheckboxState grids/tcustomdrawgrid.setcheckboxstate.html + Modified grids/tcustomstringgrid.modified.html + Create grids/tcustomstringgrid.create.html + Destroy grids/tcustomstringgrid.destroy.html + AutoSizeColumn grids/tcustomstringgrid.autosizecolumn.html + AutoSizeColumns grids/tcustomstringgrid.autosizecolumns.html + Clean grids/tcustomstringgrid.clean.html + CopyToClipboard grids/tcustomstringgrid.copytoclipboard.html + InsertRowWithValues grids/tcustomstringgrid.insertrowwithvalues.html + LoadFromCSVStream grids/tcustomstringgrid.loadfromcsvstream.html + LoadFromCSVFile grids/tcustomstringgrid.loadfromcsvfile.html + SaveToCSVStream grids/tcustomstringgrid.savetocsvstream.html + SaveToCSVFile grids/tcustomstringgrid.savetocsvfile.html + Cells grids/tcustomstringgrid.cells.html + Cols grids/tcustomstringgrid.cols.html + Objects grids/tcustomstringgrid.objects.html + Rows grids/tcustomstringgrid.rows.html + AutoAdjustColumn grids/tcustomgrid.autoadjustcolumn.html + CalcCellExtent grids/tcustomdrawgrid.calccellextent.html + DefineProperties + DoCompareCells grids/tcustomgrid.docomparecells.html + DoCopyToClipboard grids/tcustomgrid.docopytoclipboard.html + DoCutToClipboard grids/tcustomgrid.docuttoclipboard.html + DoPasteFromClipboard grids/tcustomgrid.dopastefromclipboard.html + DrawCellAutonumbering grids/tcustomdrawgrid.drawcellautonumbering.html + GetCheckBoxState grids/tcustomdrawgrid.getcheckboxstate.html + GetEditText grids/tcustomgrid.getedittext.html + LoadContent grids/tcustomgrid.loadcontent.html + Loaded + SaveContent grids/tcustomgrid.savecontent.html + SetEditText grids/tcustomgrid.setedittext.html + DefaultTextStyle grids/tcustomgrid.defaulttextstyle.html + EditorMode grids/tcustomgrid.editormode.html + ExtendedSelect grids/tcustomgrid.extendedselect.html + UseXORFeatures grids/tcustomgrid.usexorfeatures.html + TStringGrid grids/tstringgrid.html + InplaceEditor grids/tstringgrid.inplaceeditor.html + BiDiMode grids/tstringgrid.bidimode.html + CellHintPriority grids/tstringgrid.cellhintpriority.html + ColumnClickSorts grids/tstringgrid.columnclicksorts.html + Constraints grids/tstringgrid.constraints.html + Font grids/tstringgrid.font.html + HeaderHotZones grids/tstringgrid.headerhotzones.html + HeaderPushZones grids/tstringgrid.headerpushzones.html + MouseWheelOption grids/tstringgrid.mousewheeloption.html + ParentBiDiMode grids/tstringgrid.parentbidimode.html + ParentFont grids/tstringgrid.parentfont.html + RangeSelectMode grids/tstringgrid.rangeselectmode.html + TabAdvance grids/tstringgrid.tabadvance.html + OnCheckboxToggled grids/tstringgrid.oncheckboxtoggled.html + OnButtonClick grids/tstringgrid.onbuttonclick.html + OnGetCheckboxState grids/tstringgrid.ongetcheckboxstate.html + OnHeaderSizing grids/tstringgrid.onheadersizing.html + OnMouseEnter grids/tstringgrid.onmouseenter.html + OnMouseLeave grids/tstringgrid.onmouseleave.html + OnMouseWheel grids/tstringgrid.onmousewheel.html + OnSetCheckboxState grids/tstringgrid.onsetcheckboxstate.html + OnUserCheckboxBitmap grids/tstringgrid.onusercheckboxbitmap.html + OnValidateEntry grids/tstringgrid.onvalidateentry.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Modified grids/tcustomstringgrid.modified.html + Align controls/tcontrol.align.html + AlternateColor grids/tcustomgrid.alternatecolor.html + Anchors controls/tcontrol.anchors.html + AutoAdvance grids/tcustomgrid.autoadvance.html + AutoEdit grids/tcustomgrid.autoedit.html + AutoFillColumns grids/tcustomgrid.autofillcolumns.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + Color controls/tcontrol.color.html + ColCount grids/tcustomgrid.colcount.html + Columns grids/tcustomgrid.columns.html + DefaultColWidth grids/tcustomgrid.defaultcolwidth.html + DefaultDrawing grids/tcustomgrid.defaultdrawing.html + DefaultRowHeight grids/tcustomgrid.defaultrowheight.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + ExtendedSelect grids/tcustomgrid.extendedselect.html + FixedColor grids/tcustomgrid.fixedcolor.html + FixedCols grids/tcustomgrid.fixedcols.html + FixedRows grids/tcustomgrid.fixedrows.html + Flat grids/tcustomgrid.flat.html + GridLineWidth grids/tcustomgrid.gridlinewidth.html + Options grids/tcustomgrid.options.html + ParentColor controls/tcontrol.parentcolor.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + RowCount grids/tcustomgrid.rowcount.html + ScrollBars grids/tcustomgrid.scrollbars.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TitleFont grids/tcustomgrid.titlefont.html + TitleImageList grids/tcustomgrid.titleimagelist.html + TitleStyle grids/tcustomgrid.titlestyle.html + UseXORFeatures grids/tcustomgrid.usexorfeatures.html + Visible controls/tcontrol.visible.html + VisibleColCount grids/tcustomgrid.visiblecolcount.html + VisibleRowCount grids/tcustomgrid.visiblerowcount.html + OnBeforeSelection grids/tcustomgrid.onbeforeselection.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnColRowDeleted grids/tcustomdrawgrid.oncolrowdeleted.html + OnColRowExchanged grids/tcustomdrawgrid.oncolrowexchanged.html + OnColRowInserted grids/tcustomdrawgrid.oncolrowinserted.html + OnColRowMoved grids/tcustomdrawgrid.oncolrowmoved.html + OnCompareCells grids/tcustomdrawgrid.oncomparecells.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnDblClick controls/tcontrol.ondblclick.html + OnDrawCell grids/tcustomgrid.ondrawcell.html + OnEditButtonClick grids/tcustomgrid.oneditbuttonclick.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDock controls/tcontrol.onenddock.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnGetCellHint grids/tcustomgrid.ongetcellhint.html + OnGetEditMask grids/tcustomdrawgrid.ongeteditmask.html + OnGetEditText grids/tcustomdrawgrid.ongetedittext.html + OnHeaderClick grids/tcustomdrawgrid.onheaderclick.html + OnHeaderSized grids/tcustomdrawgrid.onheadersized.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnPickListSelect grids/tcustomgrid.onpicklistselect.html + OnPrepareCanvas grids/tcustomgrid.onpreparecanvas.html + OnResize controls/tcontrol.onresize.html + OnSelectEditor grids/tcustomgrid.onselecteditor.html + OnSelection grids/tcustomgrid.onselection.html + OnSelectCell grids/tcustomdrawgrid.onselectcell.html + OnSetEditText grids/tcustomdrawgrid.onsetedittext.html + OnShowHint controls/tcontrol.onshowhint.html + OnStartDock controls/tcontrol.onstartdock.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnTopLeftChanged grids/tcustomgrid.ontopleftchanged.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + DrawRubberRect grids/drawrubberrect.html + GetWorkingCanvas grids/getworkingcanvas.html + FreeWorkingCanvas grids/freeworkingcanvas.html + Register grids/register.html + DynamicArray dynamicarray/index.html + TOnNotifyItem dynamicarray/tonnotifyitem.html + TOnExchangeItem dynamicarray/tonexchangeitem.html + EArray dynamicarray/earray.html + TArray dynamicarray/tarray.html + Create dynamicarray/tarray.create.html + Destroy dynamicarray/tarray.destroy.html + SetLength dynamicarray/tarray.setlength.html + DeleteColRow dynamicarray/tarray.deletecolrow.html + MoveColRow dynamicarray/tarray.movecolrow.html + ExchangeColRow dynamicarray/tarray.exchangecolrow.html + Clear dynamicarray/tarray.clear.html + Arr dynamicarray/tarray.arr.html + OnDestroyItem dynamicarray/tarray.ondestroyitem.html + OnNewItem dynamicarray/tarray.onnewitem.html + DefaultTranslator defaulttranslator/index.html + LCLTranslator lcltranslator/index.html + TUpdateTranslator lcltranslator/tupdatetranslator.html + UpdateTranslation lcltranslator/tupdatetranslator.updatetranslation.html + TDefaultTranslator lcltranslator/tdefaulttranslator.html + Create lcltranslator/tdefaulttranslator.create.html + Destroy lcltranslator/tdefaulttranslator.destroy.html + TranslateStringProperty lcltranslator/tdefaulttranslator.translatestringproperty.html + TPOTranslator lcltranslator/tpotranslator.html + Create lcltranslator/tpotranslator.create.html + Destroy lcltranslator/tpotranslator.destroy.html + TranslateStringProperty lcltranslator/tpotranslator.translatestringproperty.html + SetDefaultLang lcltranslator/setdefaultlang.html + GetDefaultLang lcltranslator/getdefaultlang.html + Translations translations/index.html + tgHasDup translations/tghasdup.html + sFuzzyFlag translations/sfuzzyflag.html + sBadFormatFlag translations/sbadformatflag.html + TStringsType translations/tstringstype.html + TTranslateUnitResult translations/ttranslateunitresult.html + TPOFileItem translations/tpofileitem.html + Tag translations/tpofileitem.tag.html + LineNr translations/tpofileitem.linenr.html + Comments translations/tpofileitem.comments.html + IdentifierLow translations/tpofileitem.identifierlow.html + Original translations/tpofileitem.original.html + Translation translations/tpofileitem.translation.html + Flags translations/tpofileitem.flags.html + PreviousID translations/tpofileitem.previousid.html + Context translations/tpofileitem.context.html + Create translations/tpofileitem.create.html + ModifyFlag translations/tpofileitem.modifyflag.html + Identifier translations/tpofileitem.identifier.html + TPOFile translations/tpofile.html + FItems translations/tpofile.fitems.html + FIdentifierLowToItem translations/tpofile.fidentifierlowtoitem.html + FIdentLowVarToItem translations/tpofile.fidentlowvartoitem.html + FOriginalToItem translations/tpofile.foriginaltoitem.html + FCharSet translations/tpofile.fcharset.html + FHeader translations/tpofile.fheader.html + FAllEntries translations/tpofile.fallentries.html + FTag translations/tpofile.ftag.html + FModified translations/tpofile.fmodified.html + FHelperList translations/tpofile.fhelperlist.html + FModuleList translations/tpofile.fmodulelist.html + FPoName translations/tpofile.fponame.html + FNrTranslated translations/tpofile.fnrtranslated.html + FNrUntranslated translations/tpofile.fnruntranslated.html + FNrFuzzy translations/tpofile.fnrfuzzy.html + FNrErrors translations/tpofile.fnrerrors.html + FFormatChecked translations/tpofile.fformatchecked.html + RemoveTaggedItems translations/tpofile.removetaggeditems.html + RemoveUntaggedModules translations/tpofile.removeuntaggedmodules.html + GetCount translations/tpofile.getcount.html + SetCharSet translations/tpofile.setcharset.html + GetPoItem translations/tpofile.getpoitem.html + ReadPOText translations/tpofile.readpotext.html + Create translations/tpofile.create.html + Destroy translations/tpofile.destroy.html + Add translations/tpofile.add.html + Translate translations/tpofile.translate.html + CharSet translations/tpofile.charset.html + Report translations/tpofile.report.html + CreateHeader translations/tpofile.createheader.html + UpdateStrings translations/tpofile.updatestrings.html + SaveToStrings translations/tpofile.savetostrings.html + SaveToFile translations/tpofile.savetofile.html + UpdateItem translations/tpofile.updateitem.html + UpdateTranslation translations/tpofile.updatetranslation.html + ClearModuleList translations/tpofile.clearmodulelist.html + AddToModuleList translations/tpofile.addtomodulelist.html + UntagAll translations/tpofile.untagall.html + Tag translations/tpofile.tag.html + Modified translations/tpofile.modified.html + Items translations/tpofile.items.html + CheckFormatArguments translations/tpofile.checkformatarguments.html + CleanUp translations/tpofile.cleanup.html + PoName translations/tpofile.poname.html + PoRename translations/tpofile.porename.html + NrTranslated translations/tpofile.nrtranslated.html + NrUntranslated translations/tpofile.nruntranslated.html + NrFuzzy translations/tpofile.nrfuzzy.html + NrErrors translations/tpofile.nrerrors.html + FindPoItem translations/tpofile.findpoitem.html + OriginalToItem translations/tpofile.originaltoitem.html + OriginalList translations/tpofile.originallist.html + PoItems translations/tpofile.poitems.html + Count translations/tpofile.count.html + Header translations/tpofile.header.html + FormatChecked translations/tpofile.formatchecked.html + EPOFileError translations/epofileerror.html + ResFileName translations/epofileerror.resfilename.html + POFileName translations/epofileerror.pofilename.html + TranslateUnitResourceStrings translations/translateunitresourcestrings.html + TranslateResourceStrings translations/translateresourcestrings.html + UTF8ToSystemCharSet translations/utf8tosystemcharset.html + UpdatePoFile translations/updatepofile.html + UpdatePoFileTranslations translations/updatepofiletranslations.html + SystemCharSetIsUTF8 translations/systemcharsetisutf8.html + StringHashList stringhashlist/index.html + PStringHashItem stringhashlist/pstringhashitem.html + TStringHashItem stringhashlist/tstringhashitem.html + PStringHashItemList stringhashlist/pstringhashitemlist.html + TStringHashList stringhashlist/tstringhashlist.html + HashOf stringhashlist/tstringhashlist.hashof.html + Insert stringhashlist/tstringhashlist.insert.html + Create stringhashlist/tstringhashlist.create.html + Destroy stringhashlist/tstringhashlist.destroy.html + Add stringhashlist/tstringhashlist.add.html + Clear stringhashlist/tstringhashlist.clear.html + Find stringhashlist/tstringhashlist.find.html + Remove stringhashlist/tstringhashlist.remove.html + CaseSensitive stringhashlist/tstringhashlist.casesensitive.html + Count stringhashlist/tstringhashlist.count.html + Data stringhashlist/tstringhashlist.data.html + List stringhashlist/tstringhashlist.list.html + DynHashArray dynhasharray/index.html + ItemMemManager dynhasharray/itemmemmanager.html + THashFunction dynhasharray/thashfunction.html + TOwnerHashFunction dynhasharray/townerhashfunction.html + TOnGetKeyForHashItem dynhasharray/tongetkeyforhashitem.html + TOnEachHashItem dynhasharray/toneachhashitem.html + PDynHashArrayItem dynhasharray/pdynhasharrayitem.html + TDynHashArrayItem dynhasharray/tdynhasharrayitem.html + TDynHashArrayOption dynhasharray/tdynhasharrayoption.html + TDynHashArrayOptions dynhasharray/tdynhasharrayoptions.html + TDynHashArray dynhasharray/tdynhasharray.html + RebuildItems dynhasharray/tdynhasharray.rebuilditems.html + SaveCacheItem dynhasharray/tdynhasharray.savecacheitem.html + Create dynhasharray/tdynhasharray.create.html + Destroy dynhasharray/tdynhasharray.destroy.html + Add dynhasharray/tdynhasharray.add.html + Contains dynhasharray/tdynhasharray.contains.html + ContainsKey dynhasharray/tdynhasharray.containskey.html + Remove dynhasharray/tdynhasharray.remove.html + Clear dynhasharray/tdynhasharray.clear.html + ClearCache dynhasharray/tdynhasharray.clearcache.html + First dynhasharray/tdynhasharray.first.html + Count dynhasharray/tdynhasharray.count.html + IndexOf dynhasharray/tdynhasharray.indexof.html + IndexOfKey dynhasharray/tdynhasharray.indexofkey.html + FindHashItem dynhasharray/tdynhasharray.findhashitem.html + FindHashItemWithKey dynhasharray/tdynhasharray.findhashitemwithkey.html + FindItemWithKey dynhasharray/tdynhasharray.finditemwithkey.html + GetHashItem dynhasharray/tdynhasharray.gethashitem.html + Delete dynhasharray/tdynhasharray.delete.html + AssignTo dynhasharray/tdynhasharray.assignto.html + ForEach dynhasharray/tdynhasharray.foreach.html + SlowAlternativeHashMethod dynhasharray/tdynhasharray.slowalternativehashmethod.html + ConsistencyCheck dynhasharray/tdynhasharray.consistencycheck.html + WriteDebugReport dynhasharray/tdynhasharray.writedebugreport.html + FirstHashItem dynhasharray/tdynhasharray.firsthashitem.html + MinCapacity dynhasharray/tdynhasharray.mincapacity.html + MaxCapacity dynhasharray/tdynhasharray.maxcapacity.html + Capacity dynhasharray/tdynhasharray.capacity.html + CustomHashFunction dynhasharray/tdynhasharray.customhashfunction.html + OwnerHashFunction dynhasharray/tdynhasharray.ownerhashfunction.html + OnGetKeyForHashItem dynhasharray/tdynhasharray.ongetkeyforhashitem.html + Options dynhasharray/tdynhasharray.options.html + TDynHashArrayItemMemManager dynhasharray/tdynhasharrayitemmemmanager.html + DisposeItem dynhasharray/tdynhasharrayitemmemmanager.disposeitem.html + NewItem dynhasharray/tdynhasharrayitemmemmanager.newitem.html + MinimumFreeCount dynhasharray/tdynhasharrayitemmemmanager.minimumfreecount.html + MaximumFreeRatio dynhasharray/tdynhasharrayitemmemmanager.maximumfreeratio.html + Count dynhasharray/tdynhasharrayitemmemmanager.count.html + Clear dynhasharray/tdynhasharrayitemmemmanager.clear.html + Create dynhasharray/tdynhasharrayitemmemmanager.create.html + Destroy dynhasharray/tdynhasharrayitemmemmanager.destroy.html + ConsistencyCheck dynhasharray/tdynhasharrayitemmemmanager.consistencycheck.html + WriteDebugReport dynhasharray/tdynhasharrayitemmemmanager.writedebugreport.html + EDynHashArrayException dynhasharray/edynhasharrayexception.html + ExtDlgs extdlgs/index.html + TPreviewFileControl extdlgs/tpreviewfilecontrol.html + SetPreviewFileDialog extdlgs/tpreviewfilecontrol.setpreviewfiledialog.html + PreviewFileDialog extdlgs/tpreviewfilecontrol.previewfiledialog.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + CreateParams controls/twincontrol.createparams.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + TPreviewFileDialog extdlgs/tpreviewfiledialog.html + CreatePreviewControl extdlgs/tpreviewfiledialog.createpreviewcontrol.html + InitPreviewControl extdlgs/tpreviewfiledialog.initpreviewcontrol.html + PreviewFileControl extdlgs/tpreviewfiledialog.previewfilecontrol.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Execute dialogs/tcommondialog.execute.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + TOpenPictureDialog extdlgs/topenpicturedialog.html + IsFilterStored extdlgs/topenpicturedialog.isfilterstored.html + ImageCtrl extdlgs/topenpicturedialog.imagectrl.html + PictureGroupBox extdlgs/topenpicturedialog.picturegroupbox.html + ClearPreview extdlgs/topenpicturedialog.clearpreview.html + UpdatePreview extdlgs/topenpicturedialog.updatepreview.html + GetFilterExt extdlgs/topenpicturedialog.getfilterext.html + DefaultFilter extdlgs/topenpicturedialog.defaultfilter.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + InitPreviewControl extdlgs/tpreviewfiledialog.initpreviewcontrol.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + DoClose dialogs/tcommondialog.doclose.html + DoSelectionChange dialogs/topendialog.doselectionchange.html + DoShow dialogs/tcommondialog.doshow.html + Filter dialogs/tfiledialog.filter.html + TSavePictureDialog extdlgs/tsavepicturedialog.html + DefaultTitle extdlgs/tsavepicturedialog.defaulttitle.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + TExtCommonDialog extdlgs/textcommondialog.html + GetLeft extdlgs/textcommondialog.getleft.html + GetHeight extdlgs/textcommondialog.getheight.html + GetTop extdlgs/textcommondialog.gettop.html + GetWidth extdlgs/textcommondialog.getwidth.html + SetLeft extdlgs/textcommondialog.setleft.html + SetTop extdlgs/textcommondialog.settop.html + DlgForm extdlgs/textcommondialog.dlgform.html + Create dialogs/tcommondialog.create.html + Destroy extdlgs/textcommondialog.destroy.html + Left extdlgs/textcommondialog.left.html + Top extdlgs/textcommondialog.top.html + DialogPosition extdlgs/textcommondialog.dialogposition.html + TCalculatorDialog extdlgs/tcalculatordialog.html + Change extdlgs/tcalculatordialog.change.html + CalcKey extdlgs/tcalculatordialog.calckey.html + DefaultTitle extdlgs/tcalculatordialog.defaulttitle.html + DisplayChange extdlgs/tcalculatordialog.displaychange.html + CalcDisplay extdlgs/tcalculatordialog.calcdisplay.html + Memory extdlgs/tcalculatordialog.memory.html + BeepOnError extdlgs/tcalculatordialog.beeponerror.html + CalculatorLayout extdlgs/tcalculatordialog.calculatorlayout.html + Precision extdlgs/tcalculatordialog.precision.html + Value extdlgs/tcalculatordialog.value.html + OnCalcKey extdlgs/tcalculatordialog.oncalckey.html + OnChange extdlgs/tcalculatordialog.onchange.html + OnDisplayChange extdlgs/tcalculatordialog.ondisplaychange.html + DialogScale extdlgs/tcalculatordialog.dialogscale.html + ColorBtnDigits extdlgs/tcalculatordialog.colorbtndigits.html + ColorBtnMemory extdlgs/tcalculatordialog.colorbtnmemory.html + ColorBtnOk extdlgs/tcalculatordialog.colorbtnok.html + ColorBtnCancel extdlgs/tcalculatordialog.colorbtncancel.html + ColorBtnClear extdlgs/tcalculatordialog.colorbtnclear.html + ColorBtnOthers extdlgs/tcalculatordialog.colorbtnothers.html + ColorDisplayText extdlgs/tcalculatordialog.colordisplaytext.html + ColorDisplayBack extdlgs/tcalculatordialog.colordisplayback.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html + Execute dialogs/tcommondialog.execute.html + Title dialogs/tcommondialog.title.html + TCalendarDialog extdlgs/tcalendardialog.html + GetNewDate extdlgs/tcalendardialog.getnewdate.html + CalendarDblClick extdlgs/tcalendardialog.calendardblclick.html + DefaultTitle extdlgs/tcalendardialog.defaulttitle.html + Left extdlgs/tcalendardialog.left.html + Top extdlgs/tcalendardialog.top.html + Date extdlgs/tcalendardialog.date.html + DisplaySettings extdlgs/tcalendardialog.displaysettings.html + OnDayChanged extdlgs/tcalendardialog.ondaychanged.html + OnMonthChanged extdlgs/tcalendardialog.onmonthchanged.html + OnYearChanged extdlgs/tcalendardialog.onyearchanged.html + OnChange extdlgs/tcalendardialog.onchange.html + OKCaption extdlgs/tcalendardialog.okcaption.html + CancelCaption extdlgs/tcalendardialog.cancelcaption.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Execute dialogs/tcommondialog.execute.html + Register extdlgs/register.html + ExtGraphics extgraphics/index.html + TShapeDirection extgraphics/tshapedirection.html + TInitShapeProc extgraphics/tinitshapeproc.html + Paint2HeadArrow extgraphics/paint2headarrow.html + PaintBarbadosTrident extgraphics/paintbarbadostrident.html + PaintBigI extgraphics/paintbigi.html + PaintBoldArrow extgraphics/paintboldarrow.html + PaintCanadianMaple extgraphics/paintcanadianmaple.html + PaintChevronArrow extgraphics/paintchevronarrow.html + PaintFivePointStar extgraphics/paintfivepointstar.html + PaintHexagon extgraphics/painthexagon.html + PaintNotchedArrow extgraphics/paintnotchedarrow.html + PaintOctogon extgraphics/paintoctogon.html + PaintPentagon extgraphics/paintpentagon.html + PaintPlus extgraphics/paintplus.html + PaintQuadrangle extgraphics/paintquadrangle.html + PaintRightTriangle extgraphics/paintrighttriangle.html + PaintSwastika extgraphics/paintswastika.html + PaintTriangle extgraphics/painttriangle.html + PaintTriangular extgraphics/painttriangular.html + PaintValve extgraphics/paintvalve.html + PaintVArrow extgraphics/paintvarrow.html + PaintCross extgraphics/paintcross.html + PaintHalfEllipse extgraphics/painthalfellipse.html + PaintFivePointLineStar extgraphics/paintfivepointlinestar.html + PaintStarN extgraphics/paintstarn.html + InitPolygon extgraphics/initpolygon.html + CalculatePentagonPoints extgraphics/calculatepentagonpoints.html + LinesPointOfIntersection extgraphics/linespointofintersection.html + FileCtrl filectrl/index.html + TFileAttr filectrl/tfileattr.html + TFileType filectrl/tfiletype.html + TCustomFileListBox filectrl/tcustomfilelistbox.html + DoChangeFile filectrl/tcustomfilelistbox.dochangefile.html + IndexOfFile filectrl/tcustomfilelistbox.indexoffile.html + UpdateFileList filectrl/tcustomfilelistbox.updatefilelist.html + Drive filectrl/tcustomfilelistbox.drive.html + Directory filectrl/tcustomfilelistbox.directory.html + FileName filectrl/tcustomfilelistbox.filename.html + FileType filectrl/tcustomfilelistbox.filetype.html + Mask filectrl/tcustomfilelistbox.mask.html + OnChange filectrl/tcustomfilelistbox.onchange.html + Loaded + KeyUp controls/twincontrol.keyup.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Destroy ms-its:rtl.chm::/classes/tcomponent.destroy.html + Click controls/tcontrol.click.html + Sorted stdctrls/tcustomlistbox.sorted.html + TFileListBox filectrl/tfilelistbox.html + OnDrawItem filectrl/tfilelistbox.ondrawitem.html + OnMouseEnter filectrl/tfilelistbox.onmouseenter.html + OnMouseLeave filectrl/tfilelistbox.onmouseleave.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BiDiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + Constraints controls/tcontrol.constraints.html + Directory filectrl/tcustomfilelistbox.directory.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + ExtendedSelect stdctrls/tcustomlistbox.extendedselect.html + FileType filectrl/tcustomfilelistbox.filetype.html + Font controls/tcontrol.font.html + IntegralHeight stdctrls/tcustomlistbox.integralheight.html + ItemHeight stdctrls/tcustomlistbox.itemheight.html + Mask filectrl/tcustomfilelistbox.mask.html + MultiSelect stdctrls/tcustomlistbox.multiselect.html + OnChange filectrl/tcustomfilelistbox.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnMouseWheel controls/tcontrol.onmousewheel.html + OnMouseWheelDown controls/tcontrol.onmousewheeldown.html + OnMouseWheelUp controls/tcontrol.onmousewheelup.html + OnResize controls/tcontrol.onresize.html + OnSelectionChange stdctrls/tcustomlistbox.onselectionchange.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentBiDiMode controls/tcontrol.parentbidimode.html + ParentShowHint controls/tcontrol.parentshowhint.html + ParentFont controls/tcontrol.parentfont.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + Sorted stdctrls/tcustomlistbox.sorted.html + Style stdctrls/tcustomlistbox.style.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + TopIndex stdctrls/tcustomlistbox.topindex.html + Visible controls/tcontrol.visible.html + TCustomFilterComboBox filectrl/tcustomfiltercombobox.html + Select filectrl/tcustomfiltercombobox.select.html + Notification filectrl/tcustomfiltercombobox.notification.html + Create filectrl/tcustomfiltercombobox.create.html + Destroy filectrl/tcustomfiltercombobox.destroy.html + ConvertFilterToStrings filectrl/tcustomfiltercombobox.convertfiltertostrings.html + Mask filectrl/tcustomfiltercombobox.mask.html + ShellListView filectrl/tcustomfiltercombobox.shelllistview.html + TFilterComboBox filectrl/tfiltercombobox.html + OnMouseEnter filectrl/tfiltercombobox.onmouseenter.html + OnMouseLeave filectrl/tfiltercombobox.onmouseleave.html + OnMouseWheel filectrl/tfiltercombobox.onmousewheel.html + OnMouseWheelDown filectrl/tfiltercombobox.onmousewheeldown.html + OnMouseWheelUp filectrl/tfiltercombobox.onmousewheelup.html + OnSelect filectrl/tfiltercombobox.onselect.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoComplete stdctrls/tcustomcombobox.autocomplete.html + AutoDropDown stdctrls/tcustomcombobox.autodropdown.html + AutoSize controls/tcontrol.autosize.html + BidiMode controls/tcontrol.bidimode.html + BorderSpacing controls/tcontrol.borderspacing.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragKind controls/tcontrol.dragkind.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Filter + Font controls/tcontrol.font.html + ItemIndex stdctrls/tcustomcombobox.itemindex.html + ParentBidiMode controls/tcontrol.parentbidimode.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShellListView filectrl/tcustomfiltercombobox.shelllistview.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomcombobox.onchange.html + OnClick controls/tcontrol.onclick.html + OnCloseUp stdctrls/tcustomcombobox.oncloseup.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnDropDown stdctrls/tcustomcombobox.ondropdown.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + MiniMizeName filectrl/minimizename.html + Register filectrl/register.html + ShellCtrls shellctrls/index.html + TObjectType shellctrls/tobjecttype.html + TObjectTypes shellctrls/tobjecttypes.html + TFileSortType shellctrls/tfilesorttype.html + TCSLVFileAddedEvent shellctrls/tcslvfileaddedevent.html + TCustomShellTreeView shellctrls/tcustomshelltreeview.html + DoCreateNodeClass shellctrls/tcustomshelltreeview.docreatenodeclass.html + Loaded + CreateNode comctrls/tcustomtreeview.createnode.html + PopulateTreeNodeWithFiles shellctrls/tcustomshelltreeview.populatetreenodewithfiles.html + PopulateWithBaseFiles shellctrls/tcustomshelltreeview.populatewithbasefiles.html + DoSelectionChanged comctrls/tcustomtreeview.doselectionchanged.html + CanExpand comctrls/tcustomtreeview.canexpand.html + Create shellctrls/tcustomshelltreeview.create.html + Destroy shellctrls/tcustomshelltreeview.destroy.html + GetBasePath shellctrls/tcustomshelltreeview.getbasepath.html + GetRootPath shellctrls/tcustomshelltreeview.getrootpath.html + GetFilesInDir shellctrls/tcustomshelltreeview.getfilesindir.html + GetPathFromNode shellctrls/tcustomshelltreeview.getpathfromnode.html + GetSelectedNodePath shellctrls/tcustomshelltreeview.getselectednodepath.html + Refresh shellctrls/tcustomshelltreeview.refresh.html + ObjectTypes shellctrls/tcustomshelltreeview.objecttypes.html + ShellListView shellctrls/tcustomshelltreeview.shelllistview.html + FileSortType shellctrls/tcustomshelltreeview.filesorttype.html + Root shellctrls/tcustomshelltreeview.root.html + Path shellctrls/tcustomshelltreeview.path.html + Items comctrls/tcustomtreeview.items.html + TShellTreeView shellctrls/tshelltreeview.html + FileSortType shellctrls/tcustomshelltreeview.filesorttype.html + HideSelection shellctrls/tshelltreeview.hideselection.html + HotTrack shellctrls/tshelltreeview.hottrack.html + Images shellctrls/tshelltreeview.images.html + Indent shellctrls/tshelltreeview.indent.html + Root shellctrls/tcustomshelltreeview.root.html + StateImages shellctrls/tshelltreeview.stateimages.html + OnAdvancedCustomDraw shellctrls/tshelltreeview.onadvancedcustomdraw.html + OnAdvancedCustomDrawItem shellctrls/tshelltreeview.onadvancedcustomdrawitem.html + OnCollapsed shellctrls/tshelltreeview.oncollapsed.html + OnCollapsing shellctrls/tshelltreeview.oncollapsing.html + OnCustomDraw shellctrls/tshelltreeview.oncustomdraw.html + OnCustomDrawItem shellctrls/tshelltreeview.oncustomdrawitem.html + OnDblClick shellctrls/tshelltreeview.ondblclick.html + OnEdited shellctrls/tshelltreeview.onedited.html + OnEditing shellctrls/tshelltreeview.onediting.html + OnEnter shellctrls/tshelltreeview.onenter.html + OnExit shellctrls/tshelltreeview.onexit.html + OnExpanded shellctrls/tshelltreeview.onexpanded.html + OnExpanding shellctrls/tshelltreeview.onexpanding.html + OnGetImageIndex shellctrls/tshelltreeview.ongetimageindex.html + OnGetSelectedIndex shellctrls/tshelltreeview.ongetselectedindex.html + OnMouseEnter shellctrls/tshelltreeview.onmouseenter.html + OnMouseLeave shellctrls/tshelltreeview.onmouseleave.html + OnMouseWheel shellctrls/tshelltreeview.onmousewheel.html + OnMouseWheelDown shellctrls/tshelltreeview.onmousewheeldown.html + OnMouseWheelUp shellctrls/tshelltreeview.onmousewheelup.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoExpand comctrls/tcustomtreeview.autoexpand.html + BorderSpacing controls/tcontrol.borderspacing.html + BackgroundColor comctrls/tcustomtreeview.backgroundcolor.html + BorderStyle controls/twincontrol.borderstyle.html + BorderWidth controls/twincontrol.borderwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + Enabled controls/tcontrol.enabled.html + ExpandSignType comctrls/tcustomtreeview.expandsigntype.html + Font controls/tcontrol.font.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly comctrls/tcustomtreeview.readonly.html + RightClickSelect comctrls/tcustomtreeview.rightclickselect.html + RowSelect comctrls/tcustomtreeview.rowselect.html + ScrollBars comctrls/tcustomtreeview.scrollbars.html + SelectionColor comctrls/tcustomtreeview.selectioncolor.html + ShowButtons comctrls/tcustomtreeview.showbuttons.html + ShowHint controls/tcontrol.showhint.html + ShowLines + ShowRoot comctrls/tcustomtreeview.showroot.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Tag ms-its:rtl.chm::/classes/tcomponent.tag.html + ToolTips comctrls/tcustomtreeview.tooltips.html + Visible controls/tcontrol.visible.html + OnChange comctrls/tcustomtreeview.onchange.html + OnChanging comctrls/tcustomtreeview.onchanging.html + OnClick controls/tcontrol.onclick.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnSelectionChanged comctrls/tcustomtreeview.onselectionchanged.html + OnShowHint controls/tcontrol.onshowhint.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + Options comctrls/tcustomtreeview.options.html + TreeLineColor comctrls/tcustomtreeview.treelinecolor.html + TreeLinePenStyle comctrls/tcustomtreeview.treelinepenstyle.html + ExpandSignColor comctrls/tcustomtreeview.expandsigncolor.html + ObjectTypes shellctrls/tcustomshelltreeview.objecttypes.html + ShellListView shellctrls/tcustomshelltreeview.shelllistview.html + TCustomShellListView shellctrls/tcustomshelllistview.html + PopulateWithRoot shellctrls/tcustomshelllistview.populatewithroot.html + Resize shellctrls/tcustomshelllistview.resize.html + OnFileAdded shellctrls/tcustomshelllistview.onfileadded.html + Create shellctrls/tcustomshelllistview.create.html + Destroy shellctrls/tcustomshelllistview.destroy.html + GetPathFromItem shellctrls/tcustomshelllistview.getpathfromitem.html + Mask shellctrls/tcustomshelllistview.mask.html + ObjectTypes shellctrls/tcustomshelllistview.objecttypes.html + Root shellctrls/tcustomshelllistview.root.html + ShellTreeView shellctrls/tcustomshelllistview.shelltreeview.html + Items comctrls/tcustomlistview.items.html + TShellListView shellctrls/tshelllistview.html + Columns shellctrls/tshelllistview.columns.html + OnMouseEnter shellctrls/tshelllistview.onmouseenter.html + OnMouseLeave shellctrls/tshelllistview.onmouseleave.html + OnMouseWheel shellctrls/tshelllistview.onmousewheel.html + OnMouseWheelDown shellctrls/tshelllistview.onmousewheeldown.html + OnMouseWheelUp shellctrls/tshelllistview.onmousewheelup.html + OnFileAdded shellctrls/tshelllistview.onfileadded.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + BorderStyle controls/twincontrol.borderstyle.html + BorderWidth controls/twincontrol.borderwidth.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + HideSelection comctrls/tcustomlistview.hideselection.html + LargeImages comctrls/tcustomlistview.largeimages.html + MultiSelect comctrls/tcustomlistview.multiselect.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly comctrls/tcustomlistview.readonly.html + RowSelect comctrls/tcustomlistview.rowselect.html + ScrollBars comctrls/tcustomlistview.scrollbars.html + ShowColumnHeaders comctrls/tcustomlistview.showcolumnheaders.html + ShowHint controls/tcontrol.showhint.html + SmallImages comctrls/tcustomlistview.smallimages.html + SortColumn comctrls/tcustomlistview.sortcolumn.html + SortType comctrls/tcustomlistview.sorttype.html + StateImages comctrls/tcustomlistview.stateimages.html + TabStop controls/twincontrol.tabstop.html + TabOrder controls/twincontrol.taborder.html + ToolTips comctrls/tcustomlistview.tooltips.html + Visible controls/tcontrol.visible.html + ViewStyle + OnChange comctrls/tcustomlistview.onchange.html + OnClick controls/tcontrol.onclick.html + OnColumnClick comctrls/tcustomlistview.oncolumnclick.html + OnCompare comctrls/tcustomlistview.oncompare.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnDeletion comctrls/tcustomlistview.ondeletion.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEndDrag controls/tcontrol.onenddrag.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnSelectItem comctrls/tcustomlistview.onselectitem.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ObjectTypes shellctrls/tcustomshelllistview.objecttypes.html + Root shellctrls/tcustomshelllistview.root.html + ShellTreeView shellctrls/tcustomshelllistview.shelltreeview.html + TShellTreeNode shellctrls/tshelltreenode.html + SetBasePath shellctrls/tshelltreenode.setbasepath.html + ShortFilename shellctrls/tshelltreenode.shortfilename.html + FullFilename shellctrls/tshelltreenode.fullfilename.html + IsDirectory shellctrls/tshelltreenode.isdirectory.html + BasePath shellctrls/tshelltreenode.basepath.html + EShellCtrl shellctrls/eshellctrl.html + EInvalidPath shellctrls/einvalidpath.html + DbgS shellctrls/dbgs.html + Register shellctrls/register.html + GraphUtil graphutil/index.html + NiceArrowAngle graphutil/nicearrowangle.html + TScrollDirection graphutil/tscrolldirection.html + TArrowType graphutil/tarrowtype.html + ColorToGray graphutil/colortogray.html + ColorToHLS graphutil/colortohls.html + RGBtoHLS graphutil/rgbtohls.html + HLStoColor graphutil/hlstocolor.html + HLStoRGB graphutil/hlstorgb.html + DrawVerticalGradient graphutil/drawverticalgradient.html + DrawGradientWindow graphutil/drawgradientwindow.html + DrawArrow graphutil/drawarrow.html + FloodFill graphutil/floodfill.html + ColorRGBToHLS graphutil/colorrgbtohls.html + ColorHLSToRGB graphutil/colorhlstorgb.html + ColorAdjustLuma graphutil/coloradjustluma.html + GetHighLightColor graphutil/gethighlightcolor.html + GetShadowColor graphutil/getshadowcolor.html + NormalizeRect graphutil/normalizerect.html + WaveTo graphutil/waveto.html + IniPropStorage inipropstorage/index.html + TIniFileClass inipropstorage/tinifileclass.html + TCustomIniPropStorage inipropstorage/tcustominipropstorage.html + IniFileClass inipropstorage/tcustominipropstorage.inifileclass.html + GetIniFileName inipropstorage/tcustominipropstorage.getinifilename.html + RootSection inipropstorage/tcustominipropstorage.rootsection.html + IniFile inipropstorage/tcustominipropstorage.inifile.html + StorageNeeded inipropstorage/tcustominipropstorage.storageneeded.html + FreeStorage inipropstorage/tcustominipropstorage.freestorage.html + DoReadString inipropstorage/tcustominipropstorage.doreadstring.html + DoWriteString inipropstorage/tcustominipropstorage.dowritestring.html + DoEraseSections inipropstorage/tcustominipropstorage.doerasesections.html + IniFileName inipropstorage/tcustominipropstorage.inifilename.html + IniSection inipropstorage/tcustominipropstorage.inisection.html + TIniPropStorage inipropstorage/tinipropstorage.html + StoredValues inipropstorage/tinipropstorage.storedvalues.html + IniFileName inipropstorage/tinipropstorage.inifilename.html + IniSection inipropstorage/tinipropstorage.inisection.html + Active inipropstorage/tinipropstorage.active.html + OnSavingProperties inipropstorage/tinipropstorage.onsavingproperties.html + OnSaveProperties inipropstorage/tinipropstorage.onsaveproperties.html + OnRestoringProperties inipropstorage/tinipropstorage.onrestoringproperties.html + OnRestoreProperties inipropstorage/tinipropstorage.onrestoreproperties.html + Register inipropstorage/register.html + LazHelpHTML lazhelphtml/index.html + TOnFindDefaultBrowser lazhelphtml/tonfinddefaultbrowser.html + THTMLHelpDatabase lazhelphtml/thtmlhelpdatabase.html + Create lazhelphtml/thtmlhelpdatabase.create.html + Destroy lazhelphtml/thtmlhelpdatabase.destroy.html + ShowURL lazhelphtml/thtmlhelpdatabase.showurl.html + ShowHelp lazhelphtml/thtmlhelpdatabase.showhelp.html + GetNodesForKeyword lazhelphtml/thtmlhelpdatabase.getnodesforkeyword.html + GetEffectiveBaseURL lazhelphtml/thtmlhelpdatabase.geteffectivebaseurl.html + Load lazhelphtml/thtmlhelpdatabase.load.html + Save lazhelphtml/thtmlhelpdatabase.save.html + DefaultBaseURL lazhelphtml/thtmlhelpdatabase.defaultbaseurl.html + BaseURL lazhelphtml/thtmlhelpdatabase.baseurl.html + AutoRegister lazhelphtml/thtmlhelpdatabase.autoregister.html + KeywordPrefix lazhelphtml/thtmlhelpdatabase.keywordprefix.html + THTMLBrowserHelpViewer lazhelphtml/thtmlbrowserhelpviewer.html + Create lazhelphtml/thtmlbrowserhelpviewer.create.html + ShowNode lazhelphtml/thtmlbrowserhelpviewer.shownode.html + FindDefaultBrowser lazhelphtml/thtmlbrowserhelpviewer.finddefaultbrowser.html + Assign lazhelphtml/thtmlbrowserhelpviewer.assign.html + Load lazhelphtml/thtmlbrowserhelpviewer.load.html + Save lazhelphtml/thtmlbrowserhelpviewer.save.html + GetLocalizedName lazhelphtml/thtmlbrowserhelpviewer.getlocalizedname.html + OnFindDefaultBrowser lazhelphtml/thtmlbrowserhelpviewer.onfinddefaultbrowser.html + BrowserPath lazhelphtml/thtmlbrowserhelpviewer.browserpath.html + BrowserParams lazhelphtml/thtmlbrowserhelpviewer.browserparams.html + AutoRegister lazhelphtml/thtmlbrowserhelpviewer.autoregister.html + Register lazhelphtml/register.html + LazHelpIntf lazhelpintf/index.html + TPascalHelpContextType lazhelpintf/tpascalhelpcontexttype.html + TPascalHelpContext lazhelpintf/tpascalhelpcontext.html + TPascalHelpContextPtr lazhelpintf/tpascalhelpcontextptr.html + THelpNodeType lazhelpintf/thelpnodetype.html + TOnHelpDBFindViewer lazhelpintf/tonhelpdbfindviewer.html + THelpDatabaseClass lazhelpintf/thelpdatabaseclass.html + THelpViewerClass lazhelpintf/thelpviewerclass.html + THelpQueryItem lazhelpintf/thelpqueryitem.html + AsString lazhelpintf/thelpqueryitem.asstring.html + IsEqual lazhelpintf/thelpqueryitem.isequal.html + TPascalHelpContextList lazhelpintf/tpascalhelpcontextlist.html + Add lazhelpintf/tpascalhelpcontextlist.add.html + Insert lazhelpintf/tpascalhelpcontextlist.insert.html + Clear lazhelpintf/tpascalhelpcontextlist.clear.html + Destroy lazhelpintf/tpascalhelpcontextlist.destroy.html + IsEqual lazhelpintf/tpascalhelpcontextlist.isequal.html + CompareList lazhelpintf/tpascalhelpcontextlist.comparelist.html + AsString lazhelpintf/tpascalhelpcontextlist.asstring.html + Count lazhelpintf/tpascalhelpcontextlist.count.html + Items lazhelpintf/tpascalhelpcontextlist.items.html + List lazhelpintf/tpascalhelpcontextlist.list.html + THelpNode lazhelpintf/thelpnode.html + Create lazhelpintf/thelpnode.create.html + CreateURL lazhelpintf/thelpnode.createurl.html + CreateID lazhelpintf/thelpnode.createid.html + CreateURLID lazhelpintf/thelpnode.createurlid.html + CreateContext lazhelpintf/thelpnode.createcontext.html + CreateURLContext lazhelpintf/thelpnode.createurlcontext.html + Owner lazhelpintf/thelpnode.owner.html + URLValid lazhelpintf/thelpnode.urlvalid.html + IDValid lazhelpintf/thelpnode.idvalid.html + ContextValid lazhelpintf/thelpnode.contextvalid.html + AsString lazhelpintf/thelpnode.asstring.html + Assign lazhelpintf/thelpnode.assign.html + Title lazhelpintf/thelpnode.title.html + HelpType lazhelpintf/thelpnode.helptype.html + URL lazhelpintf/thelpnode.url.html + ID lazhelpintf/thelpnode.id.html + Context lazhelpintf/thelpnode.context.html + THelpNodeQuery lazhelpintf/thelpnodequery.html + Create lazhelpintf/thelpnodequery.create.html + IsEqual lazhelpintf/thelpnodequery.isequal.html + AsString lazhelpintf/thelpnodequery.asstring.html + Node lazhelpintf/thelpnodequery.node.html + QueryItem lazhelpintf/thelpnodequery.queryitem.html + THelpNodeQueryList lazhelpintf/thelpnodequerylist.html + Create lazhelpintf/thelpnodequerylist.create.html + Destroy lazhelpintf/thelpnodequerylist.destroy.html + Count lazhelpintf/thelpnodequerylist.count.html + Add lazhelpintf/thelpnodequerylist.add.html + Delete lazhelpintf/thelpnodequerylist.delete.html + IndexOf lazhelpintf/thelpnodequerylist.indexof.html + Clear lazhelpintf/thelpnodequerylist.clear.html + Items lazhelpintf/thelpnodequerylist.items.html + THelpDBItem lazhelpintf/thelpdbitem.html + Create lazhelpintf/thelpdbitem.create.html + Destroy lazhelpintf/thelpdbitem.destroy.html + Node lazhelpintf/thelpdbitem.node.html + THelpDBISourceFile lazhelpintf/thelpdbisourcefile.html + Create lazhelpintf/thelpdbisourcefile.create.html + FileMatches lazhelpintf/thelpdbisourcefile.filematches.html + GetFullFilename lazhelpintf/thelpdbisourcefile.getfullfilename.html + GetBasePath lazhelpintf/thelpdbisourcefile.getbasepath.html + BasePathObject lazhelpintf/thelpdbisourcefile.basepathobject.html + Filename lazhelpintf/thelpdbisourcefile.filename.html + THelpDBISourceDirectory lazhelpintf/thelpdbisourcedirectory.html + Create lazhelpintf/thelpdbisourcedirectory.create.html + FileMatches lazhelpintf/thelpdbisourcedirectory.filematches.html + FileMask lazhelpintf/thelpdbisourcedirectory.filemask.html + WithSubDirectories lazhelpintf/thelpdbisourcedirectory.withsubdirectories.html + THelpDBISourceDirectories lazhelpintf/thelpdbisourcedirectories.html + Create lazhelpintf/thelpdbisourcedirectory.create.html + FileMatches lazhelpintf/thelpdbisourcedirectory.filematches.html + GetFullFilename lazhelpintf/thelpdbisourcedirectories.getfullfilename.html + GetBasePath lazhelpintf/thelpdbisourcedirectories.getbasepath.html + BaseDirectory lazhelpintf/thelpdbisourcedirectories.basedirectory.html + THelpDBIClass lazhelpintf/thelpdbiclass.html + TheClass lazhelpintf/thelpdbiclass.theclass.html + THelpDBIMessage lazhelpintf/thelpdbimessage.html + MessageMatches lazhelpintf/thelpdbimessage.messagematches.html + THelpQueryNode lazhelpintf/thelpquerynode.html + Create lazhelpintf/thelpquerynode.create.html + Node lazhelpintf/thelpquerynode.node.html + THelpDatabase lazhelpintf/thelpdatabase.html + SetSupportedMimeTypes lazhelpintf/thelpdatabase.setsupportedmimetypes.html + AddSupportedMimeType lazhelpintf/thelpdatabase.addsupportedmimetype.html + Create lazhelpintf/thelpdatabase.create.html + Destroy lazhelpintf/thelpdatabase.destroy.html + Reference lazhelpintf/thelpdatabase.reference.html + RegisterSelf lazhelpintf/thelpdatabase.registerself.html + Release lazhelpintf/thelpdatabase.release.html + UnregisterSelf lazhelpintf/thelpdatabase.unregisterself.html + Registered lazhelpintf/thelpdatabase.registered.html + CanShowTableOfContents lazhelpintf/thelpdatabase.canshowtableofcontents.html + ShowTableOfContents lazhelpintf/thelpdatabase.showtableofcontents.html + ShowError lazhelpintf/thelpdatabase.showerror.html + ShowHelp lazhelpintf/thelpdatabase.showhelp.html + ShowHelpFile lazhelpintf/thelpdatabase.showhelpfile.html + SupportsMimeType lazhelpintf/thelpdatabase.supportsmimetype.html + GetNodesForKeyword lazhelpintf/thelpdatabase.getnodesforkeyword.html + GetNodesForDirective lazhelpintf/thelpdatabase.getnodesfordirective.html + GetNodesForContext lazhelpintf/thelpdatabase.getnodesforcontext.html + GetNodesForPascalContexts lazhelpintf/thelpdatabase.getnodesforpascalcontexts.html + GetNodesForClass lazhelpintf/thelpdatabase.getnodesforclass.html + GetNodesForMessage lazhelpintf/thelpdatabase.getnodesformessage.html + FindViewer lazhelpintf/thelpdatabase.findviewer.html + RegisterItem lazhelpintf/thelpdatabase.registeritem.html + RegisterItemWithNode lazhelpintf/thelpdatabase.registeritemwithnode.html + RegisterFileItemWithNode lazhelpintf/thelpdatabase.registerfileitemwithnode.html + UnregisterItem lazhelpintf/thelpdatabase.unregisteritem.html + UnregisterAllItems lazhelpintf/thelpdatabase.unregisterallitems.html + RegisteredItemCount lazhelpintf/thelpdatabase.registereditemcount.html + GetRegisteredItem lazhelpintf/thelpdatabase.getregistereditem.html + Load lazhelpintf/thelpdatabase.load.html + Save lazhelpintf/thelpdatabase.save.html + GetLocalizedName lazhelpintf/thelpdatabase.getlocalizedname.html + Databases lazhelpintf/thelpdatabase.databases.html + ID lazhelpintf/thelpdatabase.id.html + SupportedMimeTypes lazhelpintf/thelpdatabase.supportedmimetypes.html + BasePathObject lazhelpintf/thelpdatabase.basepathobject.html + TOCNode lazhelpintf/thelpdatabase.tocnode.html + AutoRegister lazhelpintf/thelpdatabase.autoregister.html + OnFindViewer lazhelpintf/thelpdatabase.onfindviewer.html + THelpDatabases lazhelpintf/thelpdatabases.html + Create lazhelpintf/thelpdatabases.create.html + Destroy lazhelpintf/thelpdatabases.destroy.html + Count lazhelpintf/thelpdatabases.count.html + Items lazhelpintf/thelpdatabases.items.html + FindDatabase lazhelpintf/thelpdatabases.finddatabase.html + GetDatabase lazhelpintf/thelpdatabases.getdatabase.html + IndexOf lazhelpintf/thelpdatabases.indexof.html + CreateUniqueDatabaseID lazhelpintf/thelpdatabases.createuniquedatabaseid.html + CreateHelpDatabase lazhelpintf/thelpdatabases.createhelpdatabase.html + ShowTableOfContents lazhelpintf/thelpdatabases.showtableofcontents.html + ShowError lazhelpintf/thelpdatabases.showerror.html + GetBaseURLForBasePathObject lazhelpintf/thelpdatabases.getbaseurlforbasepathobject.html + GetBaseDirectoryForBasePathObject lazhelpintf/thelpdatabases.getbasedirectoryforbasepathobject.html + FindViewer lazhelpintf/thelpdatabases.findviewer.html + SubstituteMacros lazhelpintf/thelpdatabases.substitutemacros.html + ShowHelpForNodes lazhelpintf/thelpdatabases.showhelpfornodes.html + ShowHelpForQuery lazhelpintf/thelpdatabases.showhelpforquery.html + ShowHelpForContext lazhelpintf/thelpdatabases.showhelpforcontext.html + ShowHelpForKeyword lazhelpintf/thelpdatabases.showhelpforkeyword.html + ShowHelpForDirective lazhelpintf/thelpdatabases.showhelpfordirective.html + ShowHelpForPascalContexts lazhelpintf/thelpdatabases.showhelpforpascalcontexts.html + ShowHelpForSourcePosition lazhelpintf/thelpdatabases.showhelpforsourceposition.html + ShowHelpForMessageLine lazhelpintf/thelpdatabases.showhelpformessageline.html + ShowHelpForClass lazhelpintf/thelpdatabases.showhelpforclass.html + ShowHelpFile lazhelpintf/thelpdatabases.showhelpfile.html + ShowHelp lazhelpintf/thelpdatabases.showhelp.html + GetNodesForKeyword lazhelpintf/thelpdatabases.getnodesforkeyword.html + GetNodesForDirective lazhelpintf/thelpdatabases.getnodesfordirective.html + GetNodesForContext lazhelpintf/thelpdatabases.getnodesforcontext.html + GetNodesForPascalContexts lazhelpintf/thelpdatabases.getnodesforpascalcontexts.html + GetNodesForClass lazhelpintf/thelpdatabases.getnodesforclass.html + GetNodesForMessage lazhelpintf/thelpdatabases.getnodesformessage.html + ShowHelpSelector lazhelpintf/thelpdatabases.showhelpselector.html + RegisterHelpDatabaseClass lazhelpintf/thelpdatabases.registerhelpdatabaseclass.html + UnregisterHelpDatabaseClass lazhelpintf/thelpdatabases.unregisterhelpdatabaseclass.html + HelpDatabaseClassCount lazhelpintf/thelpdatabases.helpdatabaseclasscount.html + GetHelpDatabaseClass lazhelpintf/thelpdatabases.gethelpdatabaseclass.html + Load lazhelpintf/thelpdatabases.load.html + Save lazhelpintf/thelpdatabases.save.html + THelpViewer lazhelpintf/thelpviewer.html + SetSupportedMimeTypes lazhelpintf/thelpviewer.setsupportedmimetypes.html + AddSupportedMimeType lazhelpintf/thelpviewer.addsupportedmimetype.html + Create lazhelpintf/thelpviewer.create.html + Destroy lazhelpintf/thelpviewer.destroy.html + SupportsTableOfContents lazhelpintf/thelpviewer.supportstableofcontents.html + ShowTableOfContents lazhelpintf/thelpviewer.showtableofcontents.html + SupportsMimeType lazhelpintf/thelpviewer.supportsmimetype.html + ShowNode lazhelpintf/thelpviewer.shownode.html + Hide lazhelpintf/thelpviewer.hide.html + Assign lazhelpintf/thelpviewer.assign.html + Load lazhelpintf/thelpviewer.load.html + Save lazhelpintf/thelpviewer.save.html + GetLocalizedName lazhelpintf/thelpviewer.getlocalizedname.html + RegisterSelf lazhelpintf/thelpviewer.registerself.html + UnregisterSelf lazhelpintf/thelpviewer.unregisterself.html + SupportedMimeTypes lazhelpintf/thelpviewer.supportedmimetypes.html + ParameterHelp lazhelpintf/thelpviewer.parameterhelp.html + StorageName lazhelpintf/thelpviewer.storagename.html + AutoRegister lazhelpintf/thelpviewer.autoregister.html + THelpViewers lazhelpintf/thelpviewers.html + Create lazhelpintf/thelpviewers.create.html + Destroy lazhelpintf/thelpviewers.destroy.html + Clear lazhelpintf/thelpviewers.clear.html + Count lazhelpintf/thelpviewers.count.html + GetViewersSupportingMimeType lazhelpintf/thelpviewers.getviewerssupportingmimetype.html + RegisterViewer lazhelpintf/thelpviewers.registerviewer.html + UnregisterViewer lazhelpintf/thelpviewers.unregisterviewer.html + Load lazhelpintf/thelpviewers.load.html + Save lazhelpintf/thelpviewers.save.html + IndexOf lazhelpintf/thelpviewers.indexof.html + Items lazhelpintf/thelpviewers.items.html + THelpBasePathObject lazhelpintf/thelpbasepathobject.html + SetBasePath lazhelpintf/thelpbasepathobject.setbasepath.html + Create lazhelpintf/thelpbasepathobject.create.html + BasePath lazhelpintf/thelpbasepathobject.basepath.html + THelpBaseURLObject lazhelpintf/thelpbaseurlobject.html + SetBaseURL lazhelpintf/thelpbaseurlobject.setbaseurl.html + Create lazhelpintf/thelpbaseurlobject.create.html + BaseURL lazhelpintf/thelpbaseurlobject.baseurl.html + CreateLCLHelpSystem lazhelpintf/createlclhelpsystem.html + FreeLCLHelpSystem lazhelpintf/freelclhelpsystem.html + FreeUnusedLCLHelpSystem lazhelpintf/freeunusedlclhelpsystem.html + FilenameToURL lazhelpintf/filenametourl.html + FilenameToURLPath lazhelpintf/filenametourlpath.html + URLPathToFilename lazhelpintf/urlpathtofilename.html + SplitURL lazhelpintf/spliturl.html + CombineURL lazhelpintf/combineurl.html + URLFilenameIsAbsolute lazhelpintf/urlfilenameisabsolute.html + FindURLPathStart lazhelpintf/findurlpathstart.html + FindURLPathEnd lazhelpintf/findurlpathend.html + ChompURLParams lazhelpintf/chompurlparams.html + ExtractURLPath lazhelpintf/extracturlpath.html + ExtractURLDirectory lazhelpintf/extracturldirectory.html + TrimUrl lazhelpintf/trimurl.html + TrimURLPath lazhelpintf/trimurlpath.html + IsFileURL lazhelpintf/isfileurl.html + AppendURLPathDelim lazhelpintf/appendurlpathdelim.html + CreateListAndAdd lazhelpintf/createlistandadd.html + CreateNodeQueryListAndAdd lazhelpintf/createnodequerylistandadd.html + HelpDatabases lazhelpintf/helpdatabases.html + HelpViewers lazhelpintf/helpviewers.html + LazLinkedList lazlinkedlist/index.html + TLinkListItem lazlinkedlist/tlinklistitem.html + Next lazlinkedlist/tlinklistitem.next.html + Prior lazlinkedlist/tlinklistitem.prior.html + ResetItem lazlinkedlist/tlinklistitem.resetitem.html + TLinkList lazlinkedlist/tlinklist.html + CreateItem lazlinkedlist/tlinklist.createitem.html + GetNewItem lazlinkedlist/tlinklist.getnewitem.html + AddAsLast lazlinkedlist/tlinklist.addaslast.html + First lazlinkedlist/tlinklist.first.html + Last lazlinkedlist/tlinklist.last.html + Count lazlinkedlist/tlinklist.count.html + Delete lazlinkedlist/tlinklist.delete.html + MoveToLast lazlinkedlist/tlinklist.movetolast.html + Clear lazlinkedlist/tlinklist.clear.html + ConsistencyCheck lazlinkedlist/tlinklist.consistencycheck.html + Create lazlinkedlist/tlinklist.create.html + Destroy lazlinkedlist/tlinklist.destroy.html + LCLMemManager lclmemmanager/index.html + PLCLMemManagerItem lclmemmanager/plclmemmanageritem.html + TLCLMemManagerItem lclmemmanager/tlclmemmanageritem.html + TLCLEnumItemsMethod lclmemmanager/tlclenumitemsmethod.html + TStreamSizeType lclmemmanager/tstreamsizetype.html + TLCLMemManager lclmemmanager/tlclmemmanager.html + FFirstFree lclmemmanager/tlclmemmanager.ffirstfree.html + FFreeCount lclmemmanager/tlclmemmanager.ffreecount.html + FCount lclmemmanager/tlclmemmanager.fcount.html + FMinFree lclmemmanager/tlclmemmanager.fminfree.html + FMaxFreeRatio lclmemmanager/tlclmemmanager.fmaxfreeratio.html + FAllocatedCount lclmemmanager/tlclmemmanager.fallocatedcount.html + FFreedCount lclmemmanager/tlclmemmanager.ffreedcount.html + DisposeItem lclmemmanager/tlclmemmanager.disposeitem.html + NewItem lclmemmanager/tlclmemmanager.newitem.html + FreeFirstItem lclmemmanager/tlclmemmanager.freefirstitem.html + MinimumFreeCount lclmemmanager/tlclmemmanager.minimumfreecount.html + MaximumFreeCountRatio lclmemmanager/tlclmemmanager.maximumfreecountratio.html + Count lclmemmanager/tlclmemmanager.count.html + FreeCount lclmemmanager/tlclmemmanager.freecount.html + AllocatedCount lclmemmanager/tlclmemmanager.allocatedcount.html + FreedCount lclmemmanager/tlclmemmanager.freedcount.html + Clear lclmemmanager/tlclmemmanager.clear.html + Create lclmemmanager/tlclmemmanager.create.html + Destroy lclmemmanager/tlclmemmanager.destroy.html + TLCLNonFreeMemManager lclmemmanager/tlclnonfreememmanager.html + ClearOnCreate lclmemmanager/tlclnonfreememmanager.clearoncreate.html + ItemSize lclmemmanager/tlclnonfreememmanager.itemsize.html + MaxItemsPerChunk lclmemmanager/tlclnonfreememmanager.maxitemsperchunk.html + Clear lclmemmanager/tlclnonfreememmanager.clear.html + Create lclmemmanager/tlclnonfreememmanager.create.html + Destroy lclmemmanager/tlclnonfreememmanager.destroy.html + NewItem lclmemmanager/tlclnonfreememmanager.newitem.html + EnumerateItems lclmemmanager/tlclnonfreememmanager.enumerateitems.html + TExtMemoryStream lclmemmanager/textmemorystream.html + Realloc lclmemmanager/textmemorystream.realloc.html + Capacity lclmemmanager/textmemorystream.capacity.html + LCLMessageGlue lclmessageglue/index.html + DeliverMessage lclmessageglue/delivermessage.html + SendSimpleMessage lclmessageglue/sendsimplemessage.html + LCLSendActivateMsg lclmessageglue/lclsendactivatemsg.html + LCLSendSetFocusMsg lclmessageglue/lclsendsetfocusmsg.html + LCLSendKillFocusMsg lclmessageglue/lclsendkillfocusmsg.html + LCLSendShowWindowMsg lclmessageglue/lclsendshowwindowmsg.html + LCLSendSizeMsg lclmessageglue/lclsendsizemsg.html + LCLSendMoveMsg lclmessageglue/lclsendmovemsg.html + LCLSendMouseMoveMsg lclmessageglue/lclsendmousemovemsg.html + LCLSendMouseDownMsg lclmessageglue/lclsendmousedownmsg.html + LCLSendMouseUpMsg lclmessageglue/lclsendmouseupmsg.html + LCLSendMouseWheelMsg lclmessageglue/lclsendmousewheelmsg.html + LCLSendCaptureChangedMsg lclmessageglue/lclsendcapturechangedmsg.html + LCLSendSelectionChangedMsg lclmessageglue/lclsendselectionchangedmsg.html + LCLSendDestroyMsg lclmessageglue/lclsenddestroymsg.html + LCLSendChangedMsg lclmessageglue/lclsendchangedmsg.html + LCLSendClickedMsg lclmessageglue/lclsendclickedmsg.html + LCLSendMouseEnterMsg lclmessageglue/lclsendmouseentermsg.html + LCLSendMouseLeaveMsg lclmessageglue/lclsendmouseleavemsg.html + LCLSendSetEditableMsg lclmessageglue/lclsendseteditablemsg.html + LCLSendMoveWordMsg lclmessageglue/lclsendmovewordmsg.html + LCLSendMovePageMsg lclmessageglue/lclsendmovepagemsg.html + LCLSendMoveToRowMsg lclmessageglue/lclsendmovetorowmsg.html + LCLSendMoveToColumnMsg lclmessageglue/lclsendmovetocolumnmsg.html + LCLSendKillCharMsg lclmessageglue/lclsendkillcharmsg.html + LCLSendKillWordMsg lclmessageglue/lclsendkillwordmsg.html + LCLSendKillLineMsg lclmessageglue/lclsendkilllinemsg.html + LCLSendCutToClipboardMsg lclmessageglue/lclsendcuttoclipboardmsg.html + LCLSendCopyToClipboardMsg lclmessageglue/lclsendcopytoclipboardmsg.html + LCLSendPasteFromClipboardMsg lclmessageglue/lclsendpastefromclipboardmsg.html + LCLSendConfigureEventMsg lclmessageglue/lclsendconfigureeventmsg.html + LCLSendPaintMsg lclmessageglue/lclsendpaintmsg.html + LCLSendEraseBackgroundMsg lclmessageglue/lclsenderasebackgroundmsg.html + LCLSendKeyDownEvent lclmessageglue/lclsendkeydownevent.html + LCLSendKeyUpEvent lclmessageglue/lclsendkeyupevent.html + LCLSendCharEvent lclmessageglue/lclsendcharevent.html + LCLSendUTF8KeyPress lclmessageglue/lclsendutf8keypress.html + LCLSendTimerMsg lclmessageglue/lclsendtimermsg.html + LCLSendExitMsg lclmessageglue/lclsendexitmsg.html + LCLSendCloseQueryMsg lclmessageglue/lclsendclosequerymsg.html + LCLSendDragStartMsg lclmessageglue/lclsenddragstartmsg.html + LCLSendMonthChangedMsg lclmessageglue/lclsendmonthchangedmsg.html + LCLSendYearChangedMsg lclmessageglue/lclsendyearchangedmsg.html + LCLSendDayChangedMsg lclmessageglue/lclsenddaychangedmsg.html + LCLSendMouseMultiClickMsg lclmessageglue/lclsendmousemulticlickmsg.html + LCLSendDrawListItemMsg lclmessageglue/lclsenddrawlistitemmsg.html + LCLSendDropDownMsg lclmessageglue/lclsenddropdownmsg.html + LCLSendCloseUpMsg lclmessageglue/lclsendcloseupmsg.html + LCLUnicodeData lclunicodedata/index.html + MaxUnicodeBlocks lclunicodedata/maxunicodeblocks.html + UnicodeBlocks lclunicodedata/unicodeblocks.html + TUnicodeBlock lclunicodedata/tunicodeblock.html + PairSplitter pairsplitter/index.html + TPairSplitterType pairsplitter/tpairsplittertype.html + TPairSplitterSide pairsplitter/tpairsplitterside.html + SetParent pairsplitter/tpairsplitterside.setparent.html + WMPaint pairsplitter/tpairsplitterside.wmpaint.html + Paint pairsplitter/tpairsplitterside.paint.html + Align pairsplitter/tpairsplitterside.align.html + Anchors pairsplitter/tpairsplitterside.anchors.html + Create pairsplitter/tpairsplitterside.create.html + Destroy pairsplitter/tpairsplitterside.destroy.html + Splitter pairsplitter/tpairsplitterside.splitter.html + Visible pairsplitter/tpairsplitterside.visible.html + Left pairsplitter/tpairsplitterside.left.html + Top pairsplitter/tpairsplitterside.top.html + Width pairsplitter/tpairsplitterside.width.html + Height pairsplitter/tpairsplitterside.height.html + ChildSizing pairsplitter/tpairsplitterside.childsizing.html + ClientWidth pairsplitter/tpairsplitterside.clientwidth.html + ClientHeight pairsplitter/tpairsplitterside.clientheight.html + Constraints pairsplitter/tpairsplitterside.constraints.html + Cursor pairsplitter/tpairsplitterside.cursor.html + Enabled pairsplitter/tpairsplitterside.enabled.html + OnMouseDown pairsplitter/tpairsplitterside.onmousedown.html + OnMouseEnter pairsplitter/tpairsplitterside.onmouseenter.html + OnMouseLeave pairsplitter/tpairsplitterside.onmouseleave.html + OnMouseMove pairsplitter/tpairsplitterside.onmousemove.html + OnMouseUp pairsplitter/tpairsplitterside.onmouseup.html + OnMouseWheel pairsplitter/tpairsplitterside.onmousewheel.html + OnMouseWheelDown pairsplitter/tpairsplitterside.onmousewheeldown.html + OnMouseWheelUp pairsplitter/tpairsplitterside.onmousewheelup.html + OnResize pairsplitter/tpairsplitterside.onresize.html + ShowHint pairsplitter/tpairsplitterside.showhint.html + ParentShowHint pairsplitter/tpairsplitterside.parentshowhint.html + PopupMenu pairsplitter/tpairsplitterside.popupmenu.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TCustomPairSplitter pairsplitter/tcustompairsplitter.html + GetCursor pairsplitter/tcustompairsplitter.getcursor.html + SetCursor pairsplitter/tcustompairsplitter.setcursor.html + GetControlClassDefaultSize pairsplitter/tcustompairsplitter.getcontrolclassdefaultsize.html + Create pairsplitter/tcustompairsplitter.create.html + Destroy pairsplitter/tcustompairsplitter.destroy.html + CreateWnd pairsplitter/tcustompairsplitter.createwnd.html + UpdatePosition pairsplitter/tcustompairsplitter.updateposition.html + CreateSides pairsplitter/tcustompairsplitter.createsides.html + Loaded pairsplitter/tcustompairsplitter.loaded.html + ChildClassAllowed pairsplitter/tcustompairsplitter.childclassallowed.html + Cursor pairsplitter/tcustompairsplitter.cursor.html + Sides pairsplitter/tcustompairsplitter.sides.html + SplitterType pairsplitter/tcustompairsplitter.splittertype.html + Position pairsplitter/tcustompairsplitter.position.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TPairSplitter pairsplitter/tpairsplitter.html + Align pairsplitter/tpairsplitter.align.html + Anchors pairsplitter/tpairsplitter.anchors.html + BorderSpacing pairsplitter/tpairsplitter.borderspacing.html + Constraints pairsplitter/tpairsplitter.constraints.html + Color pairsplitter/tpairsplitter.color.html + Cursor pairsplitter/tpairsplitter.cursor.html + Enabled pairsplitter/tpairsplitter.enabled.html + OnMouseDown pairsplitter/tpairsplitter.onmousedown.html + OnMouseEnter pairsplitter/tpairsplitter.onmouseenter.html + OnMouseLeave pairsplitter/tpairsplitter.onmouseleave.html + OnMouseMove pairsplitter/tpairsplitter.onmousemove.html + OnMouseUp pairsplitter/tpairsplitter.onmouseup.html + OnMouseWheel pairsplitter/tpairsplitter.onmousewheel.html + OnMouseWheelDown pairsplitter/tpairsplitter.onmousewheeldown.html + OnMouseWheelUp pairsplitter/tpairsplitter.onmousewheelup.html + OnResize pairsplitter/tpairsplitter.onresize.html + OnChangeBounds pairsplitter/tpairsplitter.onchangebounds.html + ParentShowHint pairsplitter/tpairsplitter.parentshowhint.html + PopupMenu pairsplitter/tpairsplitter.popupmenu.html + Position pairsplitter/tpairsplitter.position.html + ShowHint pairsplitter/tpairsplitter.showhint.html + SplitterType pairsplitter/tpairsplitter.splittertype.html + Visible pairsplitter/tpairsplitter.visible.html + Register pairsplitter/register.html + PostScriptCanvas postscriptcanvas/index.html + TpsPoint postscriptcanvas/tpspoint.html + TpsBounds postscriptcanvas/tpsbounds.html + TPsCanvasState postscriptcanvas/tpscanvasstate.html + TPsCanvasStatus postscriptcanvas/tpscanvasstatus.html + TPostScriptPrinterCanvas postscriptcanvas/tpostscriptprintercanvas.html + CreateHandle postscriptcanvas/tpostscriptprintercanvas.createhandle.html + CreateBrush postscriptcanvas/tpostscriptprintercanvas.createbrush.html + CreateFont postscriptcanvas/tpostscriptprintercanvas.createfont.html + CreatePen postscriptcanvas/tpostscriptprintercanvas.createpen.html + CreateRegion postscriptcanvas/tpostscriptprintercanvas.createregion.html + DeselectHandles postscriptcanvas/tpostscriptprintercanvas.deselecthandles.html + PenChanging postscriptcanvas/tpostscriptprintercanvas.penchanging.html + FontChanging postscriptcanvas/tpostscriptprintercanvas.fontchanging.html + BrushChanging postscriptcanvas/tpostscriptprintercanvas.brushchanging.html + RegionChanging postscriptcanvas/tpostscriptprintercanvas.regionchanging.html + RequiredState postscriptcanvas/tpostscriptprintercanvas.requiredstate.html + DoEllipseAndFill postscriptcanvas/tpostscriptprintercanvas.doellipseandfill.html + RealizeAntialiasing postscriptcanvas/tpostscriptprintercanvas.realizeantialiasing.html + GetClipRect postscriptcanvas/tpostscriptprintercanvas.getcliprect.html + SetClipRect postscriptcanvas/tpostscriptprintercanvas.setcliprect.html + GetClipping postscriptcanvas/tpostscriptprintercanvas.getclipping.html + SetClipping postscriptcanvas/tpostscriptprintercanvas.setclipping.html + DoMoveTo postscriptcanvas/tpostscriptprintercanvas.domoveto.html + DoLineTo postscriptcanvas/tpostscriptprintercanvas.dolineto.html + Create postscriptcanvas/tpostscriptprintercanvas.create.html + Destroy postscriptcanvas/tpostscriptprintercanvas.destroy.html + BeginDoc postscriptcanvas/tpostscriptprintercanvas.begindoc.html + EndDoc postscriptcanvas/tpostscriptprintercanvas.enddoc.html + NewPage postscriptcanvas/tpostscriptprintercanvas.newpage.html + SaveToFile postscriptcanvas/tpostscriptprintercanvas.savetofile.html + Polyline postscriptcanvas/tpostscriptprintercanvas.polyline.html + PolyBezier postscriptcanvas/tpostscriptprintercanvas.polybezier.html + Rectangle postscriptcanvas/tpostscriptprintercanvas.rectangle.html + Frame postscriptcanvas/tpostscriptprintercanvas.frame.html + FrameRect postscriptcanvas/tpostscriptprintercanvas.framerect.html + FillRect postscriptcanvas/tpostscriptprintercanvas.fillrect.html + RoundRect postscriptcanvas/tpostscriptprintercanvas.roundrect.html + Polygon postscriptcanvas/tpostscriptprintercanvas.polygon.html + Ellipse postscriptcanvas/tpostscriptprintercanvas.ellipse.html + Arc postscriptcanvas/tpostscriptprintercanvas.arc.html + RadialPie postscriptcanvas/tpostscriptprintercanvas.radialpie.html + Chord postscriptcanvas/tpostscriptprintercanvas.chord.html + TextOut postscriptcanvas/tpostscriptprintercanvas.textout.html + TextExtent postscriptcanvas/tpostscriptprintercanvas.textextent.html + TextRect postscriptcanvas/tpostscriptprintercanvas.textrect.html + Draw postscriptcanvas/tpostscriptprintercanvas.draw.html + StretchDraw postscriptcanvas/tpostscriptprintercanvas.stretchdraw.html + GetTextMetrics postscriptcanvas/tpostscriptprintercanvas.gettextmetrics.html + FloodFill postscriptcanvas/tpostscriptprintercanvas.floodfill.html + CopyRect postscriptcanvas/tpostscriptprintercanvas.copyrect.html + Frame3d postscriptcanvas/tpostscriptprintercanvas.frame3d.html + Pie postscriptcanvas/tpostscriptprintercanvas.pie.html + SetPixel postscriptcanvas/tpostscriptprintercanvas.setpixel.html + TPostScriptCanvas postscriptcanvas/tpostscriptcanvas.html + Create postscriptcanvas/tpostscriptcanvas.create.html + BeginDoc postscriptcanvas/tpostscriptcanvas.begindoc.html + EndDoc postscriptcanvas/tpostscriptcanvas.enddoc.html + NewPage postscriptcanvas/tpostscriptcanvas.newpage.html + Printers printers/index.html + TPrinterOrientation printers/tprinterorientation.html + TPrinterCapability printers/tprintercapability.html + TPrinterCapabilities printers/tprintercapabilities.html + TPrinterState printers/tprinterstate.html + TPrinterType printers/tprintertype.html + TPrinterCanvasRef printers/tprintercanvasref.html + TFilePrinterCanvasClass printers/tfileprintercanvasclass.html + TPaperRect printers/tpaperrect.html + TPaperItem printers/tpaperitem.html + TPrinterFlags printers/tprinterflags.html + EPrinter printers/eprinter.html + TPrinterCanvas printers/tprintercanvas.html + GetLeftMargin printers/tprintercanvas.getleftmargin.html + GetTopMargin printers/tprintercanvas.gettopmargin.html + GetBottomMargin printers/tprintercanvas.getbottommargin.html + GetRightMargin printers/tprintercanvas.getrightmargin.html + Create printers/tprintercanvas.create.html + BeginDoc printers/tprintercanvas.begindoc.html + NewPage printers/tprintercanvas.newpage.html + EndDoc printers/tprintercanvas.enddoc.html + Changing printers/tprintercanvas.changing.html + Printer printers/tprintercanvas.printer.html + Title printers/tprintercanvas.title.html + PageHeight printers/tprintercanvas.pageheight.html + PageWidth printers/tprintercanvas.pagewidth.html + PaperWidth printers/tprintercanvas.paperwidth.html + PaperHeight printers/tprintercanvas.paperheight.html + PageNumber printers/tprintercanvas.pagenumber.html + TopMargin printers/tprintercanvas.topmargin.html + LeftMargin printers/tprintercanvas.leftmargin.html + BottomMargin printers/tprintercanvas.bottommargin.html + RightMargin printers/tprintercanvas.rightmargin.html + Orientation printers/tprintercanvas.orientation.html + XDPI printers/tprintercanvas.xdpi.html + YDPI printers/tprintercanvas.ydpi.html + TFilePrinterCanvas printers/tfileprintercanvas.html + FOutputFileName printers/tfileprintercanvas.foutputfilename.html + OutputFileName printers/tfileprintercanvas.outputfilename.html + TPaperSize printers/tpapersize.html + DefaultPapers printers/tpapersize.defaultpapers.html + Width printers/tpapersize.width.html + Height printers/tpapersize.height.html + PaperName printers/tpapersize.papername.html + DefaultPaperName printers/tpapersize.defaultpapername.html + PaperRect printers/tpapersize.paperrect.html + SupportedPapers printers/tpapersize.supportedpapers.html + PaperRectOf printers/tpapersize.paperrectof.html + Create ms-its:rtl.chm::/system/tobject.create.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + TPrinter printers/tprinter.html + SelectCurrentPrinterOrDefault printers/tprinter.selectcurrentprinterordefault.html + DoBeginDoc printers/tprinter.dobegindoc.html + DoNewPage printers/tprinter.donewpage.html + DoEndDoc printers/tprinter.doenddoc.html + DoAbort printers/tprinter.doabort.html + DoResetPrintersList printers/tprinter.doresetprinterslist.html + DoResetFontsList printers/tprinter.doresetfontslist.html + DoEnumPrinters printers/tprinter.doenumprinters.html + DoEnumFonts printers/tprinter.doenumfonts.html + DoEnumPapers printers/tprinter.doenumpapers.html + DoEnumBins printers/tprinter.doenumbins.html + DoInitialization printers/tprinter.doinitialization.html + DoSetPrinter printers/tprinter.dosetprinter.html + DoGetCopies printers/tprinter.dogetcopies.html + DoSetCopies printers/tprinter.dosetcopies.html + DoGetOrientation printers/tprinter.dogetorientation.html + DoSetOrientation printers/tprinter.dosetorientation.html + DoGetDefaultPaperName printers/tprinter.dogetdefaultpapername.html + DoGetPaperName printers/tprinter.dogetpapername.html + DoSetPaperName printers/tprinter.dosetpapername.html + DoGetDefaultBinName printers/tprinter.dogetdefaultbinname.html + DoGetBinName printers/tprinter.dogetbinname.html + DoSetBinName printers/tprinter.dosetbinname.html + DoGetPaperRect printers/tprinter.dogetpaperrect.html + DoGetPrinterState printers/tprinter.dogetprinterstate.html + DoDestroy printers/tprinter.dodestroy.html + GetPrinterType printers/tprinter.getprintertype.html + GetCanPrint printers/tprinter.getcanprint.html + GetCanRenderCopies printers/tprinter.getcanrendercopies.html + GetXDPI printers/tprinter.getxdpi.html + GetYDPI printers/tprinter.getydpi.html + GetBins printers/tprinter.getbins.html + CheckRawMode printers/tprinter.checkrawmode.html + RawModeChanging printers/tprinter.rawmodechanging.html + PrinterSelected printers/tprinter.printerselected.html + DoGetDefaultCanvasClass printers/tprinter.dogetdefaultcanvasclass.html + PrinterFlags printers/tprinter.printerflags.html + Abort printers/tprinter.abort.html + BeginDoc printers/tprinter.begindoc.html + EndDoc printers/tprinter.enddoc.html + NewPage printers/tprinter.newpage.html + Refresh printers/tprinter.refresh.html + SetPrinter printers/tprinter.setprinter.html + RestoreDefaultBin printers/tprinter.restoredefaultbin.html + Write printers/tprinter.write.html + PrinterIndex printers/tprinter.printerindex.html + PrinterName printers/tprinter.printername.html + PaperSize printers/tprinter.papersize.html + Orientation printers/tprinter.orientation.html + PrinterState printers/tprinter.printerstate.html + Copies printers/tprinter.copies.html + Printers printers/tprinter.printers.html + FileName printers/tprinter.filename.html + Fonts printers/tprinter.fonts.html + Canvas printers/tprinter.canvas.html + CanvasClass printers/tprinter.canvasclass.html + PageHeight printers/tprinter.pageheight.html + PageWidth printers/tprinter.pagewidth.html + PageNumber printers/tprinter.pagenumber.html + Aborted printers/tprinter.aborted.html + Printing printers/tprinter.printing.html + Title printers/tprinter.title.html + PrinterType printers/tprinter.printertype.html + CanPrint printers/tprinter.canprint.html + CanRenderCopies printers/tprinter.canrendercopies.html + XDPI printers/tprinter.xdpi.html + YDPI printers/tprinter.ydpi.html + RawMode printers/tprinter.rawmode.html + DefaultBinName printers/tprinter.defaultbinname.html + BinName printers/tprinter.binname.html + SupportedBins printers/tprinter.supportedbins.html + Create ms-its:rtl.chm::/system/tobject.create.html + Destroy ms-its:rtl.chm::/system/tobject.destroy.html + Printer printers/printer.html + PostScriptUnicode postscriptunicode/index.html + GLYPHCOUNT postscriptunicode/glyphcount.html + GlyphsArr postscriptunicode/glyphsarr.html + TUnicodeBlock postscriptunicode/tunicodeblock.html + PGlyph postscriptunicode/pglyph.html + TGlyph postscriptunicode/tglyph.html + TPsUnicode postscriptunicode/tpsunicode.html + create postscriptunicode/tpsunicode.create.html + destroy postscriptunicode/tpsunicode.destroy.html + OutputString postscriptunicode/tpsunicode.outputstring.html + BlockFor postscriptunicode/tpsunicode.blockfor.html + ResetLastFont postscriptunicode/tpsunicode.resetlastfont.html + UnicodeToGlyph postscriptunicode/tpsunicode.unicodetoglyph.html + Font postscriptunicode/tpsunicode.font.html + FontSize postscriptunicode/tpsunicode.fontsize.html + FOntStyle postscriptunicode/tpsunicode.fontstyle.html + OutLst postscriptunicode/tpsunicode.outlst.html + PostScriptPrinter postscriptprinter/index.html + TPSPaintType postscriptprinter/tpspainttype.html + TPSTileType postscriptprinter/tpstiletype.html + PPSPattern postscriptprinter/ppspattern.html + TPSPattern postscriptprinter/tpspattern.html + Create postscriptprinter/tpspattern.create.html + Destroy postscriptprinter/tpspattern.destroy.html + Changed postscriptprinter/tpspattern.changed.html + BBox postscriptprinter/tpspattern.bbox.html + PaintType postscriptprinter/tpspattern.painttype.html + TilingType postscriptprinter/tpspattern.tilingtype.html + XStep postscriptprinter/tpspattern.xstep.html + YStep postscriptprinter/tpspattern.ystep.html + Name postscriptprinter/tpspattern.name.html + Canvas postscriptprinter/tpspattern.canvas.html + GetPS postscriptprinter/tpspattern.getps.html + OldName postscriptprinter/tpspattern.oldname.html + OnChange postscriptprinter/tpspattern.onchange.html + TPSObject postscriptprinter/tpsobject.html + Changed postscriptprinter/tpsobject.changed.html + Lock postscriptprinter/tpsobject.lock.html + UnLock postscriptprinter/tpsobject.unlock.html + OnChange postscriptprinter/tpsobject.onchange.html + TPSPen postscriptprinter/tpspen.html + SetColor postscriptprinter/tpspen.setcolor.html + Setwidth postscriptprinter/tpspen.setwidth.html + Create postscriptprinter/tpspen.create.html + Destroy postscriptprinter/tpspen.destroy.html + Assign postscriptprinter/tpspen.assign.html + Color postscriptprinter/tpspen.color.html + Pattern postscriptprinter/tpspen.pattern.html + Width postscriptprinter/tpspen.width.html + AsString postscriptprinter/tpspen.asstring.html + TPostScriptCanvas postscriptprinter/tpostscriptcanvas.html + MPostScript postscriptprinter/tpostscriptcanvas.mpostscript.html + Create postscriptprinter/tpostscriptcanvas.create.html + Destroy postscriptprinter/tpostscriptcanvas.destroy.html + Clear postscriptprinter/tpostscriptcanvas.clear.html + PostScript postscriptprinter/tpostscriptcanvas.postscript.html + FontFace postscriptprinter/tpostscriptcanvas.fontface.html + FontSize postscriptprinter/tpostscriptcanvas.fontsize.html + LineSpacing postscriptprinter/tpostscriptcanvas.linespacing.html + MoveTo postscriptprinter/tpostscriptcanvas.moveto.html + LineTo postscriptprinter/tpostscriptcanvas.lineto.html + Line postscriptprinter/tpostscriptcanvas.line.html + Rectangle postscriptprinter/tpostscriptcanvas.rectangle.html + Polyline postscriptprinter/tpostscriptcanvas.polyline.html + Ellipse postscriptprinter/tpostscriptcanvas.ellipse.html + RadialPie postscriptprinter/tpostscriptcanvas.radialpie.html + Writeln postscriptprinter/tpostscriptcanvas.writeln.html + TextOut postscriptprinter/tpostscriptcanvas.textout.html + Height postscriptprinter/tpostscriptcanvas.height.html + Color postscriptprinter/tpostscriptcanvas.color.html + Pen postscriptprinter/tpostscriptcanvas.pen.html + Brush postscriptprinter/tpostscriptcanvas.brush.html + TPostScript postscriptprinter/tpostscript.html + Create postscriptprinter/tpostscript.create.html + Destroy postscriptprinter/tpostscript.destroy.html + AddPattern postscriptprinter/tpostscript.addpattern.html + FindPattern postscriptprinter/tpostscript.findpattern.html + DelPattern postscriptprinter/tpostscript.delpattern.html + NewPattern postscriptprinter/tpostscript.newpattern.html + Canvas postscriptprinter/tpostscript.canvas.html + Height postscriptprinter/tpostscript.height.html + Width postscriptprinter/tpostscript.width.html + Document postscriptprinter/tpostscript.document.html + PageNumber postscriptprinter/tpostscript.pagenumber.html + Title postscriptprinter/tpostscript.title.html + LineSpacing postscriptprinter/tpostscript.linespacing.html + BeginDoc postscriptprinter/tpostscript.begindoc.html + NewPage postscriptprinter/tpostscript.newpage.html + EndDoc postscriptprinter/tpostscript.enddoc.html + RubberBand rubberband/index.html + TRubberBandShape rubberband/trubberbandshape.html + TCustomRubberBand rubberband/tcustomrubberband.html + Shape rubberband/tcustomrubberband.shape.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + TRubberBand rubberband/trubberband.html + Spin spin/index.html + TCustomFloatSpinEdit spin/tcustomfloatspinedit.html + RealGetText spin/tcustomfloatspinedit.realgettext.html + TextChanged spin/tcustomfloatspinedit.textchanged.html + SetDecimals spin/tcustomfloatspinedit.setdecimals.html + SetValue spin/tcustomfloatspinedit.setvalue.html + SetMaxValue spin/tcustomfloatspinedit.setmaxvalue.html + SetMinValue spin/tcustomfloatspinedit.setminvalue.html + SetValueEmpty spin/tcustomfloatspinedit.setvalueempty.html + SetIncrement spin/tcustomfloatspinedit.setincrement.html + InitializeWnd spin/tcustomfloatspinedit.initializewnd.html + FinalizeWnd spin/tcustomfloatspinedit.finalizewnd.html + Loaded spin/tcustomfloatspinedit.loaded.html + KeyPress spin/tcustomfloatspinedit.keypress.html + GetControlClassDefaultSize stdctrls/tcustomedit.getcontrolclassdefaultsize.html + Create spin/tcustomfloatspinedit.create.html + GetLimitedValue spin/tcustomfloatspinedit.getlimitedvalue.html + ValueToStr spin/tcustomfloatspinedit.valuetostr.html + StrToValue spin/tcustomfloatspinedit.strtovalue.html + DecimalPlaces spin/tcustomfloatspinedit.decimalplaces.html + Increment spin/tcustomfloatspinedit.increment.html + MinValue spin/tcustomfloatspinedit.minvalue.html + MaxValue spin/tcustomfloatspinedit.maxvalue.html + Value spin/tcustomfloatspinedit.value.html + ValueEmpty spin/tcustomfloatspinedit.valueempty.html + WSRegisterClass lclclasses/tlclcomponent.wsregisterclass.html + TFloatSpinEdit spin/tfloatspinedit.html + AutoSelected spin/tfloatspinedit.autoselected.html + Alignment spin/tfloatspinedit.alignment.html + AutoSelect spin/tfloatspinedit.autoselect.html + Color spin/tfloatspinedit.color.html + DecimalPlaces spin/tfloatspinedit.decimalplaces.html + Font spin/tfloatspinedit.font.html + OnChange spin/tfloatspinedit.onchange.html + OnChangeBounds spin/tfloatspinedit.onchangebounds.html + OnClick spin/tfloatspinedit.onclick.html + OnEditingDone spin/tfloatspinedit.oneditingdone.html + OnMouseEnter spin/tfloatspinedit.onmouseenter.html + OnMouseLeave spin/tfloatspinedit.onmouseleave.html + OnMouseWheel spin/tfloatspinedit.onmousewheel.html + OnMouseWheelDown spin/tfloatspinedit.onmousewheeldown.html + OnMouseWheelUp spin/tfloatspinedit.onmousewheelup.html + ParentFont spin/tfloatspinedit.parentfont.html + ReadOnly spin/tfloatspinedit.readonly.html + TabStop spin/tfloatspinedit.tabstop.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + Enabled controls/tcontrol.enabled.html + Increment spin/tcustomfloatspinedit.increment.html + MaxValue spin/tcustomfloatspinedit.maxvalue.html + MinValue spin/tcustomfloatspinedit.minvalue.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + Value spin/tcustomfloatspinedit.value.html + Visible controls/tcontrol.visible.html + TCustomSpinEdit spin/tcustomspinedit.html + SetMaxValue spin/tcustomspinedit.setmaxvalue.html + SetMinValue spin/tcustomspinedit.setminvalue.html + SetIncrement spin/tcustomspinedit.setincrement.html + SetValue spin/tcustomspinedit.setvalue.html + Create spin/tcustomspinedit.create.html + Value spin/tcustomspinedit.value.html + MinValue spin/tcustomspinedit.minvalue.html + MaxValue spin/tcustomspinedit.maxvalue.html + Increment spin/tcustomspinedit.increment.html + TSpinEdit spin/tspinedit.html + Alignment spin/tspinedit.alignment.html + Color spin/tspinedit.color.html + Font spin/tspinedit.font.html + OnChange spin/tspinedit.onchange.html + OnMouseEnter spin/tspinedit.onmouseenter.html + OnMouseLeave spin/tspinedit.onmouseleave.html + OnMouseWheel spin/tspinedit.onmousewheel.html + OnMouseWheelDown spin/tspinedit.onmousewheeldown.html + OnMouseWheelUp spin/tspinedit.onmousewheelup.html + ParentFont spin/tspinedit.parentfont.html + AutoSelected stdctrls/tcustomedit.autoselected.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSelect stdctrls/tcustomedit.autoselect.html + AutoSize controls/tcontrol.autosize.html + BorderSpacing controls/tcontrol.borderspacing.html + Constraints controls/tcontrol.constraints.html + Enabled controls/tcontrol.enabled.html + Increment spin/tcustomspinedit.increment.html + MaxValue spin/tcustomspinedit.maxvalue.html + MinValue spin/tcustomspinedit.minvalue.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnEditingDone + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ShowHint controls/tcontrol.showhint.html + TabStop controls/twincontrol.tabstop.html + TabOrder controls/twincontrol.taborder.html + Value spin/tcustomspinedit.value.html + Visible controls/tcontrol.visible.html + Register spin/register.html + StdActns stdactns/index.html + TCommonDialogClass stdactns/tcommondialogclass.html + THintAction stdactns/thintaction.html + TEditAction stdactns/teditaction.html + Control stdactns/teditaction.control.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Destroy ms-its:rtl.chm::/classes/tbasicaction.destroy.html + HandlesTarget ms-its:rtl.chm::/classes/tbasicaction.handlestarget.html + TEditCut stdactns/teditcut.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + TEditCopy stdactns/teditcopy.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + TEditPaste stdactns/teditpaste.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + TEditSelectAll stdactns/teditselectall.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + TEditUndo stdactns/teditundo.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + TEditDelete stdactns/teditdelete.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + THelpAction stdactns/thelpaction.html + Create ms-its:rtl.chm::/classes/tbasicaction.create.html + HandlesTarget ms-its:rtl.chm::/classes/tbasicaction.handlestarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + THelpContents stdactns/thelpcontents.html + ExecuteTarget + THelpTopicSearch stdactns/thelptopicsearch.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + THelpOnHelp stdactns/thelponhelp.html + ExecuteTarget stdactns/thelponhelp.executetarget.html + THelpContextAction stdactns/thelpcontextaction.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + TCommonDialogAction stdactns/tcommondialogaction.html + FDialog stdactns/tcommondialogaction.fdialog.html + DoAccept stdactns/tcommondialogaction.doaccept.html + DoBeforeExecute stdactns/tcommondialogaction.dobeforeexecute.html + DoCancel stdactns/tcommondialogaction.docancel.html + GetDialogClass stdactns/tcommondialogaction.getdialogclass.html + CreateDialog stdactns/tcommondialogaction.createdialog.html + ExecuteResult stdactns/tcommondialogaction.executeresult.html + BeforeExecute stdactns/tcommondialogaction.beforeexecute.html + OnAccept stdactns/tcommondialogaction.onaccept.html + OnCancel stdactns/tcommondialogaction.oncancel.html + Create ms-its:rtl.chm::/classes/tbasicaction.create.html + Handlestarget ms-its:rtl.chm::/classes/tbasicaction.handlestarget.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + TFileAction stdactns/tfileaction.html + GetDialog stdactns/tfileaction.getdialog.html + FileName stdactns/tfileaction.filename.html + TFileOpen stdactns/tfileopen.html + Dialog stdactns/tfileopen.dialog.html + UseDefaultApp stdactns/tfileopen.usedefaultapp.html + GetDialogClass stdactns/tcommondialogaction.getdialogclass.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + BeforeExecute stdactns/tcommondialogaction.beforeexecute.html + OnAccept stdactns/tcommondialogaction.onaccept.html + OnCancel stdactns/tcommondialogaction.oncancel.html + OnHint actnlist/tcustomaction.onhint.html + TFileOpenWith stdactns/tfileopenwith.html + FileName stdactns/tfileopenwith.filename.html + AfterOpen stdactns/tfileopenwith.afteropen.html + TFileSaveAs stdactns/tfilesaveas.html + Dialog stdactns/tfilesaveas.dialog.html + GetDialogClass stdactns/tcommondialogaction.getdialogclass.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + BeforeExecute stdactns/tcommondialogaction.beforeexecute.html + OnAccept stdactns/tcommondialogaction.onaccept.html + OnCancel stdactns/tcommondialogaction.oncancel.html + OnHint actnlist/tcustomaction.onhint.html + TFileExit stdactns/tfileexit.html + HandlesTarget ms-its:rtl.chm::/classes/tbasicaction.handlestarget.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + OnHint actnlist/tcustomaction.onhint.html + TSearchAction stdactns/tsearchaction.html + FControl stdactns/tsearchaction.fcontrol.html + UpdateControl stdactns/tsearchaction.updatecontrol.html + PerformSearch stdactns/tsearchaction.performsearch.html + ShowNotFound stdactns/tsearchaction.shownotfound.html + Search stdactns/tsearchaction.search.html + CreateDialog stdactns/tcommondialogaction.createdialog.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Create ms-its:rtl.chm::/classes/tbasicaction.create.html + Destroy ms-its:rtl.chm::/classes/tbasicaction.destroy.html + HandlesTarget ms-its:rtl.chm::/classes/tbasicaction.handlestarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + TSearchFind stdactns/tsearchfind.html + Dialog stdactns/tsearchfind.dialog.html + GetDialogClass stdactns/tcommondialogaction.getdialogclass.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + BeforeExecute stdactns/tcommondialogaction.beforeexecute.html + OnAccept stdactns/tcommondialogaction.onaccept.html + OnCancel stdactns/tcommondialogaction.oncancel.html + OnHint actnlist/tcustomaction.onhint.html + TSearchReplace stdactns/tsearchreplace.html + Replace stdactns/tsearchreplace.replace.html + Dialog stdactns/tsearchreplace.dialog.html + GetDialogClass stdactns/tcommondialogaction.getdialogclass.html + CreateDialog stdactns/tcommondialogaction.createdialog.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + BeforeExecute stdactns/tcommondialogaction.beforeexecute.html + OnAccept stdactns/tcommondialogaction.onaccept.html + OnCancel stdactns/tcommondialogaction.oncancel.html + OnHint actnlist/tcustomaction.onhint.html + TSearchFindFirst stdactns/tsearchfindfirst.html + TSearchFindNext stdactns/tsearchfindnext.html + SearchFind stdactns/tsearchfindnext.searchfind.html + Create ms-its:rtl.chm::/classes/tbasicaction.create.html + HandlesTarget ms-its:rtl.chm::/classes/tbasicaction.handlestarget.html + UpdateTarget ms-its:rtl.chm::/classes/tbasicaction.updatetarget.html + ExecuteTarget ms-its:rtl.chm::/classes/tbasicaction.executetarget.html + Notification ms-its:rtl.chm::/classes/tcomponent.notification.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + OnHint actnlist/tcustomaction.onhint.html + TFontEdit stdactns/tfontedit.html + Dialog stdactns/tfontedit.dialog.html + GetDialogClass stdactns/tcommondialogaction.getdialogclass.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + BeforeExecute stdactns/tcommondialogaction.beforeexecute.html + OnAccept stdactns/tcommondialogaction.onaccept.html + OnCancel stdactns/tcommondialogaction.oncancel.html + OnHint actnlist/tcustomaction.onhint.html + TColorSelect stdactns/tcolorselect.html + Dialog stdactns/tcolorselect.dialog.html + GetDialogClass stdactns/tcommondialogaction.getdialogclass.html + Caption actnlist/tcustomaction.caption.html + Enabled actnlist/tcustomaction.enabled.html + HelpContext actnlist/tcustomaction.helpcontext.html + HelpKeyword actnlist/tcustomaction.helpkeyword.html + HelpType actnlist/tcustomaction.helptype.html + Hint actnlist/tcustomaction.hint.html + ImageIndex actnlist/tcustomaction.imageindex.html + ShortCut actnlist/tcustomaction.shortcut.html + SecondaryShortCuts actnlist/tcustomaction.secondaryshortcuts.html + Visible actnlist/tcustomaction.visible.html + BeforeExecute stdactns/tcommondialogaction.beforeexecute.html + OnAccept stdactns/tcommondialogaction.onaccept.html + OnCancel stdactns/tcommondialogaction.oncancel.html + OnHint actnlist/tcustomaction.onhint.html + Register stdactns/register.html + UTrace utrace/index.html + TAssertErrorAddrType utrace/tasserterroraddrtype.html + TAssertErrorProc utrace/tasserterrorproc.html + TraceFileName utrace/tracefilename.html + OldProcPointer utrace/oldprocpointer.html + XMLPropStorage xmlpropstorage/index.html + TPropStorageXMLConfig xmlpropstorage/tpropstoragexmlconfig.html + DeleteSubNodes xmlpropstorage/tpropstoragexmlconfig.deletesubnodes.html + LoadFromStream xmlpropstorage/tpropstoragexmlconfig.loadfromstream.html + SaveToStream xmlpropstorage/tpropstoragexmlconfig.savetostream.html + XMLDoc xmlpropstorage/tpropstoragexmlconfig.xmldoc.html + TCustomXMLPropStorage xmlpropstorage/tcustomxmlpropstorage.html + GetXMLFileName xmlpropstorage/tcustomxmlpropstorage.getxmlfilename.html + RootSection xmlpropstorage/tcustomxmlpropstorage.rootsection.html + FixPath xmlpropstorage/tcustomxmlpropstorage.fixpath.html + XMLConfig xmlpropstorage/tcustomxmlpropstorage.xmlconfig.html + StorageNeeded xmlpropstorage/tcustomxmlpropstorage.storageneeded.html + FreeStorage xmlpropstorage/tcustomxmlpropstorage.freestorage.html + DoReadString xmlpropstorage/tcustomxmlpropstorage.doreadstring.html + DoWriteString xmlpropstorage/tcustomxmlpropstorage.dowritestring.html + DoEraseSections xmlpropstorage/tcustomxmlpropstorage.doerasesections.html + FileName xmlpropstorage/tcustomxmlpropstorage.filename.html + RootNodePath xmlpropstorage/tcustomxmlpropstorage.rootnodepath.html + TXMLPropStorage xmlpropstorage/txmlpropstorage.html + StoredValues xmlpropstorage/txmlpropstorage.storedvalues.html + FileName xmlpropstorage/txmlpropstorage.filename.html + RootNodePath xmlpropstorage/txmlpropstorage.rootnodepath.html + Active xmlpropstorage/txmlpropstorage.active.html + OnSavingProperties xmlpropstorage/txmlpropstorage.onsavingproperties.html + OnSaveProperties xmlpropstorage/txmlpropstorage.onsaveproperties.html + OnRestoringProperties xmlpropstorage/txmlpropstorage.onrestoringproperties.html + OnRestoreProperties xmlpropstorage/txmlpropstorage.onrestoreproperties.html + TXMLConfigStorage xmlpropstorage/txmlconfigstorage.html + GetFullPathValue xmlpropstorage/txmlconfigstorage.getfullpathvalue.html + SetFullPathValue xmlpropstorage/txmlconfigstorage.setfullpathvalue.html + SetDeleteFullPathValue xmlpropstorage/txmlconfigstorage.setdeletefullpathvalue.html + DeleteFullPath xmlpropstorage/txmlconfigstorage.deletefullpath.html + DeleteFullPathValue xmlpropstorage/txmlconfigstorage.deletefullpathvalue.html + Clear xmlpropstorage/txmlconfigstorage.clear.html + Create xmlpropstorage/txmlconfigstorage.create.html + Destroy xmlpropstorage/txmlconfigstorage.destroy.html + XMLConfig xmlpropstorage/txmlconfigstorage.xmlconfig.html + FreeXMLConfig xmlpropstorage/txmlconfigstorage.freexmlconfig.html + WriteToDisk xmlpropstorage/txmlconfigstorage.writetodisk.html + GetFilename xmlpropstorage/txmlconfigstorage.getfilename.html + SaveToStream xmlpropstorage/txmlconfigstorage.savetostream.html + Register xmlpropstorage/register.html + WSControls wscontrols/index.html + DefBtnColors wscontrols/defbtncolors.html + TWSDragImageListClass wscontrols/twsdragimagelistclass.html + TWSLazAccessibleObjectClass wscontrols/twslazaccessibleobjectclass.html + TWSControlClass wscontrols/twscontrolclass.html + TWSZPosition wscontrols/twszposition.html + TWSWinControlClass wscontrols/twswincontrolclass.html + TWSDragImageList wscontrols/twsdragimagelist.html + BeginDrag wscontrols/twsdragimagelist.begindrag.html + DragMove wscontrols/twsdragimagelist.dragmove.html + EndDrag wscontrols/twsdragimagelist.enddrag.html + HideDragImage wscontrols/twsdragimagelist.hidedragimage.html + ShowDragImage wscontrols/twsdragimagelist.showdragimage.html + TWSLazAccessibleObject wscontrols/twslazaccessibleobject.html + CreateHandle wscontrols/twslazaccessibleobject.createhandle.html + DestroyHandle wscontrols/twslazaccessibleobject.destroyhandle.html + SetAccessibleDescription wscontrols/twslazaccessibleobject.setaccessibledescription.html + SetAccessibleValue wscontrols/twslazaccessibleobject.setaccessiblevalue.html + SetAccessibleRole wscontrols/twslazaccessibleobject.setaccessiblerole.html + SetPosition wscontrols/twslazaccessibleobject.setposition.html + SetSize wscontrols/twslazaccessibleobject.setsize.html + TWSControl wscontrols/twscontrol.html + AddControl wscontrols/twscontrol.addcontrol.html + GetConstraints wscontrols/twscontrol.getconstraints.html + GetDefaultColor wscontrols/twscontrol.getdefaultcolor.html + ConstraintWidth wscontrols/twscontrol.constraintwidth.html + ConstraintHeight wscontrols/twscontrol.constraintheight.html + TWSWinControl wscontrols/twswincontrol.html + CanFocus wscontrols/twswincontrol.canfocus.html + GetClientBounds wscontrols/twswincontrol.getclientbounds.html + GetClientRect wscontrols/twswincontrol.getclientrect.html + GetPreferredSize wscontrols/twswincontrol.getpreferredsize.html + GetDefaultClientRect wscontrols/twswincontrol.getdefaultclientrect.html + GetDesignInteractive wscontrols/twswincontrol.getdesigninteractive.html + GetText wscontrols/twswincontrol.gettext.html + GetTextLen wscontrols/twswincontrol.gettextlen.html + SetBiDiMode wscontrols/twswincontrol.setbidimode.html + SetBorderStyle wscontrols/twswincontrol.setborderstyle.html + SetBounds wscontrols/twswincontrol.setbounds.html + SetColor wscontrols/twswincontrol.setcolor.html + SetChildZPosition wscontrols/twswincontrol.setchildzposition.html + SetFont wscontrols/twswincontrol.setfont.html + SetPos wscontrols/twswincontrol.setpos.html + SetSize wscontrols/twswincontrol.setsize.html + SetText wscontrols/twswincontrol.settext.html + SetCursor wscontrols/twswincontrol.setcursor.html + SetShape wscontrols/twswincontrol.setshape.html + AdaptBounds wscontrols/twswincontrol.adaptbounds.html + ConstraintsChange wscontrols/twswincontrol.constraintschange.html + CreateHandle wscontrols/twswincontrol.createhandle.html + DestroyHandle wscontrols/twswincontrol.destroyhandle.html + DefaultWndHandler wscontrols/twswincontrol.defaultwndhandler.html + Invalidate wscontrols/twswincontrol.invalidate.html + PaintTo wscontrols/twswincontrol.paintto.html + ShowHide wscontrols/twswincontrol.showhide.html + ScrollBy wscontrols/twswincontrol.scrollby.html + TWSGraphicControl wscontrols/twsgraphiccontrol.html + TWSCustomControl wscontrols/twscustomcontrol.html + TWSImageList wscontrols/twsimagelist.html + RegisterDragImageList wscontrols/registerdragimagelist.html + RegisterLazAccessibleObject wscontrols/registerlazaccessibleobject.html + RegisterControl wscontrols/registercontrol.html + RegisterWinControl wscontrols/registerwincontrol.html + RegisterGraphicControl wscontrols/registergraphiccontrol.html + RegisterCustomControl wscontrols/registercustomcontrol.html + AsyncProcess asyncprocess/index.html + TAsyncProcess asyncprocess/tasyncprocess.html + GetNumBytesAvailable asyncprocess/tasyncprocess.getnumbytesavailable.html + HandlePipeInput asyncprocess/tasyncprocess.handlepipeinput.html + HandleProcessTermination asyncprocess/tasyncprocess.handleprocesstermination.html + UnhookPipeHandle asyncprocess/tasyncprocess.unhookpipehandle.html + UnhookProcessHandle asyncprocess/tasyncprocess.unhookprocesshandle.html + Execute asyncprocess/tasyncprocess.execute.html + Destroy asyncprocess/tasyncprocess.destroy.html + NumBytesAvailable asyncprocess/tasyncprocess.numbytesavailable.html + OnReadData asyncprocess/tasyncprocess.onreaddata.html + OnTerminate asyncprocess/tasyncprocess.onterminate.html + Register asyncprocess/register.html + RegisterLCL registerlcl/index.html + Register registerlcl/register.html + RegisterLCLBase registerlcl/registerlclbase.html + Arrow arrow/index.html + TArrowType arrow/tarrowtype.html + TShadowType arrow/tshadowtype.html + TTriPts arrow/ttripts.html + TTrianglePoints arrow/ttrianglepoints.html + TArrow arrow/tarrow.html + ArrowColor arrow/tarrow.arrowcolor.html + ArrowType arrow/tarrow.arrowtype.html + ArrowPointerAngle arrow/tarrow.arrowpointerangle.html + Color arrow/tarrow.color.html + Constraints arrow/tarrow.constraints.html + Hint arrow/tarrow.hint.html + OnDragDrop arrow/tarrow.ondragdrop.html + OnDragOver arrow/tarrow.ondragover.html + OnEndDrag arrow/tarrow.onenddrag.html + OnMouseEnter arrow/tarrow.onmouseenter.html + OnMouseLeave arrow/tarrow.onmouseleave.html + OnMouseWheel arrow/tarrow.onmousewheel.html + OnMouseWheelDown arrow/tarrow.onmousewheeldown.html + OnMouseWheelUp arrow/tarrow.onmousewheelup.html + OnPaint arrow/tarrow.onpaint.html + OnStartDrag arrow/tarrow.onstartdrag.html + ParentColor arrow/tarrow.parentcolor.html + ParentShowHint arrow/tarrow.parentshowhint.html + ShadowType arrow/tarrow.shadowtype.html + ShadowColor arrow/tarrow.shadowcolor.html + ShowHint arrow/tarrow.showhint.html + GetControlClassDefaultSize controls/tcontrol.getcontrolclassdefaultsize.html + Paint controls/tcustomcontrol.paint.html + Create ms-its:rtl.chm::/classes/tcomponent.create.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnContextPopup controls/tcontrol.oncontextpopup.html + OnDblClick controls/tcontrol.ondblclick.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + PopupMenu controls/tcontrol.popupmenu.html + Visible controls/tcontrol.visible.html + Register arrow/register.html + IndustrialBase industrialbase/index.html + TIndustrialBase industrialbase/tindustrialbase.html + GraphicChanged industrialbase/tindustrialbase.graphicchanged.html + Create industrialbase/tindustrialbase.create.html + AntiAliasingMode industrialbase/tindustrialbase.antialiasingmode.html + DBExtCtrls dbextctrls/index.html + TDBDateEdit dbextctrls/tdbdateedit.html + Notification dbextctrls/tdbdateedit.notification.html + EditCanModify dbextctrls/tdbdateedit.editcanmodify.html + EditEnter dbextctrls/tdbdateedit.editenter.html + EditKeyDown dbextctrls/tdbdateedit.editkeydown.html + EditKeyPress dbextctrls/tdbdateedit.editkeypress.html + ButtonClick dbextctrls/tdbdateedit.buttonclick.html + EditChange dbextctrls/tdbdateedit.editchange.html + EditExit dbextctrls/tdbdateedit.editexit.html + Reset dbextctrls/tdbdateedit.reset.html + Create dbextctrls/tdbdateedit.create.html + Destroy dbextctrls/tdbdateedit.destroy.html + ExecuteAction dbextctrls/tdbdateedit.executeaction.html + UpdateAction dbextctrls/tdbdateedit.updateaction.html + Field dbextctrls/tdbdateedit.field.html + DataField dbextctrls/tdbdateedit.datafield.html + DataSource dbextctrls/tdbdateedit.datasource.html + Register dbextctrls/register.html + EditBtn editbtn/index.html + NullDate editbtn/nulldate.html + ResBtnListFilter editbtn/resbtnlistfilter.html + ResBtnFileOpen editbtn/resbtnfileopen.html + ResBtnSelDir editbtn/resbtnseldir.html + ResBtnCalendar editbtn/resbtncalendar.html + ResBtnCalculator editbtn/resbtncalculator.html + ResBtnTime editbtn/resbtntime.html + TFilterItemEvent editbtn/tfilteritemevent.html + TCheckItemEvent editbtn/tcheckitemevent.html + TAcceptFileNameEvent editbtn/tacceptfilenameevent.html + TDialogKind editbtn/tdialogkind.html + TAcceptDateEvent editbtn/tacceptdateevent.html + TCustomDateEvent editbtn/tcustomdateevent.html + TDateOrder editbtn/tdateorder.html + TAcceptTimeEvent editbtn/taccepttimeevent.html + TCustomTimeEvent editbtn/tcustomtimeevent.html + TAcceptValueEvent editbtn/tacceptvalueevent.html + TEbEdit editbtn/tebedit.html + DoEnter + DoExit + PerformTab editbtn/tebedit.performtab.html + TCustomEditButton editbtn/tcustomeditbutton.html + GetControlClassDefaultSize editbtn/tcustomeditbutton.getcontrolclassdefaultsize.html + CalcButtonVisible editbtn/tcustomeditbutton.calcbuttonvisible.html + GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html + GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html + SetDirectInput editbtn/tcustomeditbutton.setdirectinput.html + SetText editbtn/tcustomeditbutton.settext.html + GetEditPopupMenu editbtn/tcustomeditbutton.geteditpopupmenu.html + CalculatePreferredSize editbtn/tcustomeditbutton.calculatepreferredsize.html + CheckButtonVisible editbtn/tcustomeditbutton.checkbuttonvisible.html + ButtonClick editbtn/tcustomeditbutton.buttonclick.html + DoEnter editbtn/tcustomeditbutton.doenter.html + EditChange editbtn/tcustomeditbutton.editchange.html + EditClick editbtn/tcustomeditbutton.editclick.html + EditDblClick editbtn/tcustomeditbutton.editdblclick.html + EditDragDrop editbtn/tcustomeditbutton.editdragdrop.html + EditDragOver editbtn/tcustomeditbutton.editdragover.html + EditEditingDone editbtn/tcustomeditbutton.editeditingdone.html + EditEndDrag editbtn/tcustomeditbutton.editenddrag.html + EditEnter editbtn/tcustomeditbutton.editenter.html + EditExit editbtn/tcustomeditbutton.editexit.html + EditKeyDown editbtn/tcustomeditbutton.editkeydown.html + EditKeyPress editbtn/tcustomeditbutton.editkeypress.html + EditKeyUp editbtn/tcustomeditbutton.editkeyup.html + EditMouseDown editbtn/tcustomeditbutton.editmousedown.html + EditMouseUp editbtn/tcustomeditbutton.editmouseup.html + EditMouseEnter editbtn/tcustomeditbutton.editmouseenter.html + EditMouseLeave editbtn/tcustomeditbutton.editmouseleave.html + EditMouseMove editbtn/tcustomeditbutton.editmousemove.html + EditMouseWheel editbtn/tcustomeditbutton.editmousewheel.html + EditMouseWheelUp editbtn/tcustomeditbutton.editmousewheelup.html + EditMouseWheelDown editbtn/tcustomeditbutton.editmousewheeldown.html + EditUtf8KeyPress editbtn/tcustomeditbutton.editutf8keypress.html + EditStartDrag editbtn/tcustomeditbutton.editstartdrag.html + CheckCursor editbtn/tcustomeditbutton.checkcursor.html + CMParentColorChanged editbtn/tcustomeditbutton.cmparentcolorchanged.html + EditCanModify editbtn/tcustomeditbutton.editcanmodify.html + GetSel editbtn/tcustomeditbutton.getsel.html + SetSel editbtn/tcustomeditbutton.setsel.html + Reset editbtn/tcustomeditbutton.reset.html + SetAutoSize editbtn/tcustomeditbutton.setautosize.html + SetColor + SetCursor editbtn/tcustomeditbutton.setcursor.html + AutoSelect editbtn/tcustomeditbutton.autoselect.html + AutoSelected editbtn/tcustomeditbutton.autoselected.html + Button editbtn/tcustomeditbutton.button.html + ButtonCaption editbtn/tcustomeditbutton.buttoncaption.html + ButtonCursor editbtn/tcustomeditbutton.buttoncursor.html + ButtonHint editbtn/tcustomeditbutton.buttonhint.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + Color editbtn/tcustomeditbutton.color.html + DirectInput editbtn/tcustomeditbutton.directinput.html + Edit editbtn/tcustomeditbutton.edit.html + EditMask editbtn/tcustomeditbutton.editmask.html + EditText editbtn/tcustomeditbutton.edittext.html + Flat editbtn/tcustomeditbutton.flat.html + FocusOnButtonClick editbtn/tcustomeditbutton.focusonbuttonclick.html + Glyph editbtn/tcustomeditbutton.glyph.html + IsMasked editbtn/tcustomeditbutton.ismasked.html + Layout editbtn/tcustomeditbutton.layout.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + Spacing editbtn/tcustomeditbutton.spacing.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + Create editbtn/tcustomeditbutton.create.html + SetFocus editbtn/tcustomeditbutton.setfocus.html + Focused editbtn/tcustomeditbutton.focused.html + Clear editbtn/tcustomeditbutton.clear.html + ClearSelection editbtn/tcustomeditbutton.clearselection.html + CopyToClipboard editbtn/tcustomeditbutton.copytoclipboard.html + CutToClipboard editbtn/tcustomeditbutton.cuttoclipboard.html + PasteFromClipboard editbtn/tcustomeditbutton.pastefromclipboard.html + SelectAll editbtn/tcustomeditbutton.selectall.html + Undo editbtn/tcustomeditbutton.undo.html + ValidateEdit editbtn/tcustomeditbutton.validateedit.html + Autosize editbtn/tcustomeditbutton.autosize.html + Alignment editbtn/tcustomeditbutton.alignment.html + CanUndo editbtn/tcustomeditbutton.canundo.html + CaretPos editbtn/tcustomeditbutton.caretpos.html + CharCase editbtn/tcustomeditbutton.charcase.html + ParentColor editbtn/tcustomeditbutton.parentcolor.html + EchoMode editbtn/tcustomeditbutton.echomode.html + HideSelection editbtn/tcustomeditbutton.hideselection.html + MaxLength editbtn/tcustomeditbutton.maxlength.html + Modified editbtn/tcustomeditbutton.modified.html + NumbersOnly editbtn/tcustomeditbutton.numbersonly.html + PasswordChar editbtn/tcustomeditbutton.passwordchar.html + PopupMenu editbtn/tcustomeditbutton.popupmenu.html + ReadOnly editbtn/tcustomeditbutton.readonly.html + SelLength editbtn/tcustomeditbutton.sellength.html + SelStart editbtn/tcustomeditbutton.selstart.html + SelText editbtn/tcustomeditbutton.seltext.html + TabStop editbtn/tcustomeditbutton.tabstop.html + Text editbtn/tcustomeditbutton.text.html + TextHint editbtn/tcustomeditbutton.texthint.html + TextHintFontColor editbtn/tcustomeditbutton.texthintfontcolor.html + TextHintFontStyle editbtn/tcustomeditbutton.texthintfontstyle.html + OnChange editbtn/tcustomeditbutton.onchange.html + OnClick editbtn/tcustomeditbutton.onclick.html + OnDblClick editbtn/tcustomeditbutton.ondblclick.html + OnDragDrop editbtn/tcustomeditbutton.ondragdrop.html + OnDragOver editbtn/tcustomeditbutton.ondragover.html + OnEditingDone editbtn/tcustomeditbutton.oneditingdone.html + OnEndDrag editbtn/tcustomeditbutton.onenddrag.html + OnEnter editbtn/tcustomeditbutton.onenter.html + OnExit editbtn/tcustomeditbutton.onexit.html + OnMouseDown editbtn/tcustomeditbutton.onmousedown.html + OnKeyPress editbtn/tcustomeditbutton.onkeypress.html + OnKeyDown editbtn/tcustomeditbutton.onkeydown.html + OnKeyUp editbtn/tcustomeditbutton.onkeyup.html + OnMouseEnter editbtn/tcustomeditbutton.onmouseenter.html + OnMouseLeave editbtn/tcustomeditbutton.onmouseleave.html + OnMouseMove editbtn/tcustomeditbutton.onmousemove.html + OnMouseWheel editbtn/tcustomeditbutton.onmousewheel.html + OnMouseWheelUp editbtn/tcustomeditbutton.onmousewheelup.html + OnMouseWheelDown editbtn/tcustomeditbutton.onmousewheeldown.html + OnMouseUp editbtn/tcustomeditbutton.onmouseup.html + OnStartDrag editbtn/tcustomeditbutton.onstartdrag.html + OnUtf8KeyPress editbtn/tcustomeditbutton.onutf8keypress.html + Loaded + Destroy controls/twincontrol.destroy.html + TEditButton editbtn/teditbutton.html + AutoSelected editbtn/teditbutton.autoselected.html + NumbersOnly editbtn/teditbutton.numbersonly.html + Action editbtn/teditbutton.action.html + AutoSize editbtn/teditbutton.autosize.html + Alignment editbtn/teditbutton.alignment.html + BiDiMode editbtn/teditbutton.bidimode.html + BorderStyle editbtn/teditbutton.borderstyle.html + ButtonCaption editbtn/teditbutton.buttoncaption.html + ButtonCursor editbtn/teditbutton.buttoncursor.html + Constraints editbtn/teditbutton.constraints.html + Cursor editbtn/teditbutton.cursor.html + FocusOnButtonClick editbtn/teditbutton.focusonbuttonclick.html + Hint editbtn/teditbutton.hint.html + Layout editbtn/teditbutton.layout.html + OnContextPopup editbtn/teditbutton.oncontextpopup.html + OnMouseEnter editbtn/teditbutton.onmouseenter.html + OnMouseLeave editbtn/teditbutton.onmouseleave.html + OnMouseWheel editbtn/teditbutton.onmousewheel.html + OnMouseWheelDown editbtn/teditbutton.onmousewheeldown.html + OnMouseWheelUp editbtn/teditbutton.onmousewheelup.html + ParentBiDiMode editbtn/teditbutton.parentbidimode.html + Spacing editbtn/teditbutton.spacing.html + TextHint editbtn/teditbutton.texthint.html + TextHintFontColor editbtn/teditbutton.texthintfontcolor.html + TextHintFontStyle editbtn/teditbutton.texthintfontstyle.html + Button editbtn/tcustomeditbutton.button.html + AutoSelect stdctrls/tcustomedit.autoselect.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + ButtonHint editbtn/tcustomeditbutton.buttonhint.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + CharCase stdctrls/tcustomedit.charcase.html + Color controls/tcontrol.color.html + DirectInput editbtn/tcustomeditbutton.directinput.html + EchoMode stdctrls/tcustomedit.echomode.html + Enabled controls/tcontrol.enabled.html + Flat editbtn/tcustomeditbutton.flat.html + Font controls/tcontrol.font.html + Glyph editbtn/tcustomeditbutton.glyph.html + MaxLength stdctrls/tcustomedit.maxlength.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PasswordChar stdctrls/tcustomedit.passwordchar.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Text stdctrls/tcustomedit.text.html + Visible controls/tcontrol.visible.html + TCustomControlFilterEdit editbtn/tcustomcontrolfilteredit.html + fNeedUpdate editbtn/tcustomcontrolfilteredit.fneedupdate.html + fIsFirstUpdate editbtn/tcustomcontrolfilteredit.fisfirstupdate.html + fSelectedPart editbtn/tcustomcontrolfilteredit.fselectedpart.html + fOnFilterItem editbtn/tcustomcontrolfilteredit.fonfilteritem.html + fOnCheckItem editbtn/tcustomcontrolfilteredit.foncheckitem.html + EditKeyDown editbtn/tcustomcontrolfilteredit.editkeydown.html + EditChange editbtn/tcustomcontrolfilteredit.editchange.html + EditEnter editbtn/tcustomcontrolfilteredit.editenter.html + EditExit editbtn/tcustomcontrolfilteredit.editexit.html + ButtonClick editbtn/tcustomcontrolfilteredit.buttonclick.html + SortAndFilter editbtn/tcustomcontrolfilteredit.sortandfilter.html + ApplyFilter editbtn/tcustomcontrolfilteredit.applyfilter.html + ApplyFilterCore editbtn/tcustomcontrolfilteredit.applyfiltercore.html + MoveNext editbtn/tcustomcontrolfilteredit.movenext.html + MovePrev editbtn/tcustomcontrolfilteredit.moveprev.html + MovePageUp editbtn/tcustomcontrolfilteredit.movepageup.html + MovePageDown editbtn/tcustomcontrolfilteredit.movepagedown.html + MoveHome editbtn/tcustomcontrolfilteredit.movehome.html + MoveEnd editbtn/tcustomcontrolfilteredit.moveend.html + ReturnKeyHandled editbtn/tcustomcontrolfilteredit.returnkeyhandled.html + GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html + Create editbtn/tcustomeditbutton.create.html + Destroy + InvalidateFilter editbtn/tcustomcontrolfilteredit.invalidatefilter.html + ResetFilter editbtn/tcustomcontrolfilteredit.resetfilter.html + ForceFilter editbtn/tcustomcontrolfilteredit.forcefilter.html + StoreSelection editbtn/tcustomcontrolfilteredit.storeselection.html + RestoreSelection editbtn/tcustomcontrolfilteredit.restoreselection.html + Filter editbtn/tcustomcontrolfilteredit.filter.html + IdleConnected editbtn/tcustomcontrolfilteredit.idleconnected.html + SortData editbtn/tcustomcontrolfilteredit.sortdata.html + SelectedPart editbtn/tcustomcontrolfilteredit.selectedpart.html + OnAfterFilter editbtn/tcustomcontrolfilteredit.onafterfilter.html + OnFilterItem editbtn/tcustomcontrolfilteredit.onfilteritem.html + OnCheckItem editbtn/tcustomcontrolfilteredit.oncheckitem.html + UseFormActivate editbtn/tcustomcontrolfilteredit.useformactivate.html + ButtonCaption editbtn/tcustomcontrolfilteredit.buttoncaption.html + ButtonCursor editbtn/tcustomcontrolfilteredit.buttoncursor.html + ButtonHint editbtn/tcustomeditbutton.buttonhint.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + DirectInput editbtn/tcustomeditbutton.directinput.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + Flat editbtn/tcustomeditbutton.flat.html + FocusOnButtonClick editbtn/tcustomcontrolfilteredit.focusonbuttonclick.html + Align editbtn/tcustomcontrolfilteredit.align.html + Anchors editbtn/tcustomcontrolfilteredit.anchors.html + BidiMode editbtn/tcustomcontrolfilteredit.bidimode.html + BorderSpacing editbtn/tcustomcontrolfilteredit.borderspacing.html + BorderStyle editbtn/tcustomcontrolfilteredit.borderstyle.html + AutoSize editbtn/tcustomcontrolfilteredit.autosize.html + AutoSelect editbtn/tcustomcontrolfilteredit.autoselect.html + Color editbtn/tcustomcontrolfilteredit.color.html + DragCursor editbtn/tcustomcontrolfilteredit.dragcursor.html + DragMode editbtn/tcustomcontrolfilteredit.dragmode.html + Enabled editbtn/tcustomcontrolfilteredit.enabled.html + Font editbtn/tcustomcontrolfilteredit.font.html + Layout editbtn/tcustomcontrolfilteredit.layout.html + MaxLength editbtn/tcustomcontrolfilteredit.maxlength.html + ParentBidiMode editbtn/tcustomcontrolfilteredit.parentbidimode.html + ParentColor editbtn/tcustomcontrolfilteredit.parentcolor.html + ParentFont editbtn/tcustomcontrolfilteredit.parentfont.html + ParentShowHint editbtn/tcustomcontrolfilteredit.parentshowhint.html + PopupMenu editbtn/tcustomcontrolfilteredit.popupmenu.html + ReadOnly editbtn/tcustomcontrolfilteredit.readonly.html + ShowHint editbtn/tcustomcontrolfilteredit.showhint.html + Spacing editbtn/tcustomcontrolfilteredit.spacing.html + TabOrder editbtn/tcustomcontrolfilteredit.taborder.html + TabStop editbtn/tcustomcontrolfilteredit.tabstop.html + Visible editbtn/tcustomcontrolfilteredit.visible.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + OnChange editbtn/tcustomcontrolfilteredit.onchange.html + OnClick editbtn/tcustomcontrolfilteredit.onclick.html + OnDblClick editbtn/tcustomcontrolfilteredit.ondblclick.html + OnDragDrop editbtn/tcustomcontrolfilteredit.ondragdrop.html + OnDragOver editbtn/tcustomcontrolfilteredit.ondragover.html + OnEditingDone editbtn/tcustomcontrolfilteredit.oneditingdone.html + OnEndDrag editbtn/tcustomcontrolfilteredit.onenddrag.html + OnEnter editbtn/tcustomcontrolfilteredit.onenter.html + OnExit editbtn/tcustomcontrolfilteredit.onexit.html + OnKeyDown editbtn/tcustomcontrolfilteredit.onkeydown.html + OnKeyPress editbtn/tcustomcontrolfilteredit.onkeypress.html + OnKeyUp editbtn/tcustomcontrolfilteredit.onkeyup.html + OnMouseDown editbtn/tcustomcontrolfilteredit.onmousedown.html + OnMouseEnter editbtn/tcustomcontrolfilteredit.onmouseenter.html + OnMouseLeave editbtn/tcustomcontrolfilteredit.onmouseleave.html + OnMouseMove editbtn/tcustomcontrolfilteredit.onmousemove.html + OnMouseUp editbtn/tcustomcontrolfilteredit.onmouseup.html + OnMouseWheel editbtn/tcustomcontrolfilteredit.onmousewheel.html + OnMouseWheelDown editbtn/tcustomcontrolfilteredit.onmousewheeldown.html + OnMouseWheelUp editbtn/tcustomcontrolfilteredit.onmousewheelup.html + OnStartDrag editbtn/tcustomcontrolfilteredit.onstartdrag.html + OnUTF8KeyPress editbtn/tcustomcontrolfilteredit.onutf8keypress.html + Text editbtn/tcustomcontrolfilteredit.text.html + TextHint editbtn/tcustomcontrolfilteredit.texthint.html + TextHintFontColor editbtn/tcustomcontrolfilteredit.texthintfontcolor.html + TextHintFontStyle editbtn/tcustomcontrolfilteredit.texthintfontstyle.html + TFileNameEdit editbtn/tfilenameedit.html + CreateDialog editbtn/tfilenameedit.createdialog.html + SaveDialogResult editbtn/tfilenameedit.savedialogresult.html + ButtonClick editbtn/tfilenameedit.buttonclick.html + RunDialog editbtn/tfilenameedit.rundialog.html + EditChange editbtn/tfilenameedit.editchange.html + DoFolderChange editbtn/tfilenameedit.dofolderchange.html + AutoSelected editbtn/tfilenameedit.autoselected.html + DialogFiles editbtn/tfilenameedit.dialogfiles.html + FileName editbtn/tfilenameedit.filename.html + InitialDir editbtn/tfilenameedit.initialdir.html + OnAcceptFileName editbtn/tfilenameedit.onacceptfilename.html + OnFolderChange editbtn/tfilenameedit.onfolderchange.html + DialogKind editbtn/tfilenameedit.dialogkind.html + DialogTitle editbtn/tfilenameedit.dialogtitle.html + DialogOptions editbtn/tfilenameedit.dialogoptions.html + Filter editbtn/tfilenameedit.filter.html + FilterIndex editbtn/tfilenameedit.filterindex.html + DefaultExt editbtn/tfilenameedit.defaultext.html + HideDirectories editbtn/tfilenameedit.hidedirectories.html + ButtonCaption editbtn/tfilenameedit.buttoncaption.html + ButtonCursor editbtn/tfilenameedit.buttoncursor.html + ButtonHint editbtn/tcustomeditbutton.buttonhint.html + FocusOnButtonClick editbtn/tfilenameedit.focusonbuttonclick.html + Alignment editbtn/tfilenameedit.alignment.html + BidiMode editbtn/tfilenameedit.bidimode.html + BorderStyle editbtn/tfilenameedit.borderstyle.html + Layout editbtn/tfilenameedit.layout.html + ParentBidiMode editbtn/tfilenameedit.parentbidimode.html + Spacing editbtn/tfilenameedit.spacing.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + OnMouseEnter editbtn/tfilenameedit.onmouseenter.html + OnMouseLeave editbtn/tfilenameedit.onmouseleave.html + OnMouseWheel editbtn/tfilenameedit.onmousewheel.html + OnMouseWheelDown editbtn/tfilenameedit.onmousewheeldown.html + OnMouseWheelUp editbtn/tfilenameedit.onmousewheelup.html + Text editbtn/tfilenameedit.text.html + TextHint editbtn/tfilenameedit.texthint.html + TextHintFontColor editbtn/tfilenameedit.texthintfontcolor.html + TextHintFontStyle editbtn/tfilenameedit.texthintfontstyle.html + GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html + GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html + Create editbtn/tcustomeditbutton.create.html + Destroy controls/twincontrol.destroy.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + DirectInput editbtn/tcustomeditbutton.directinput.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + Flat editbtn/tcustomeditbutton.flat.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSelect stdctrls/tcustomedit.autoselect.html + BorderSpacing controls/tcontrol.borderspacing.html + AutoSize controls/tcontrol.autosize.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + MaxLength stdctrls/tcustomedit.maxlength.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TDirectoryEdit editbtn/tdirectoryedit.html + CreateDialog editbtn/tdirectoryedit.createdialog.html + GetDialogResult editbtn/tdirectoryedit.getdialogresult.html + ButtonClick editbtn/tdirectoryedit.buttonclick.html + RunDialog editbtn/tdirectoryedit.rundialog.html + AutoSelected editbtn/tdirectoryedit.autoselected.html + Directory editbtn/tdirectoryedit.directory.html + RootDir editbtn/tdirectoryedit.rootdir.html + OnAcceptDirectory editbtn/tdirectoryedit.onacceptdirectory.html + DialogTitle editbtn/tdirectoryedit.dialogtitle.html + ShowHidden editbtn/tdirectoryedit.showhidden.html + ButtonCaption editbtn/tdirectoryedit.buttoncaption.html + ButtonCursor editbtn/tdirectoryedit.buttoncursor.html + ButtonHint editbtn/tcustomeditbutton.buttonhint.html + FocusOnButtonClick editbtn/tdirectoryedit.focusonbuttonclick.html + BidiMode editbtn/tdirectoryedit.bidimode.html + BorderStyle editbtn/tdirectoryedit.borderstyle.html + Layout editbtn/tdirectoryedit.layout.html + ParentBidiMode editbtn/tdirectoryedit.parentbidimode.html + Spacing editbtn/tdirectoryedit.spacing.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + OnMouseEnter editbtn/tdirectoryedit.onmouseenter.html + OnMouseLeave editbtn/tdirectoryedit.onmouseleave.html + OnMouseWheel editbtn/tdirectoryedit.onmousewheel.html + OnMouseWheelDown editbtn/tdirectoryedit.onmousewheeldown.html + OnMouseWheelUp editbtn/tdirectoryedit.onmousewheelup.html + Text editbtn/tdirectoryedit.text.html + TextHint editbtn/tdirectoryedit.texthint.html + TextHintFontColor editbtn/tdirectoryedit.texthintfontcolor.html + TextHintFontStyle editbtn/tdirectoryedit.texthintfontstyle.html + GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html + GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + DirectInput editbtn/tcustomeditbutton.directinput.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + Flat editbtn/tcustomeditbutton.flat.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + AutoSelect stdctrls/tcustomedit.autoselect.html + BorderSpacing controls/tcontrol.borderspacing.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + MaxLength stdctrls/tcustomedit.maxlength.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + TDateEdit editbtn/tdateedit.html + ButtonClick editbtn/tdateedit.buttonclick.html + EditDblClick editbtn/tdateedit.editdblclick.html + SetDirectInput editbtn/tdateedit.setdirectinput.html + SetText editbtn/tdateedit.settext.html + SetDateMask editbtn/tdateedit.setdatemask.html + Create editbtn/tdateedit.create.html + GetDateFormat editbtn/tdateedit.getdateformat.html + AutoSelected editbtn/tdateedit.autoselected.html + DroppedDown editbtn/tdateedit.droppeddown.html + CalendarDisplaySettings editbtn/tdateedit.calendardisplaysettings.html + OnAcceptDate editbtn/tdateedit.onacceptdate.html + OnCustomDate editbtn/tdateedit.oncustomdate.html + OKCaption editbtn/tdateedit.okcaption.html + CancelCaption editbtn/tdateedit.cancelcaption.html + DefaultToday editbtn/tdateedit.defaulttoday.html + DateOrder editbtn/tdateedit.dateorder.html + DateFormat editbtn/tdateedit.dateformat.html + ButtonCaption editbtn/tdateedit.buttoncaption.html + ButtonCursor editbtn/tdateedit.buttoncursor.html + ButtonHint editbtn/tcustomeditbutton.buttonhint.html + BidiMode editbtn/tdateedit.bidimode.html + BorderStyle editbtn/tdateedit.borderstyle.html + Flat editbtn/tdateedit.flat.html + FocusOnButtonClick editbtn/tdateedit.focusonbuttonclick.html + Layout editbtn/tdateedit.layout.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + OnDblClick editbtn/tdateedit.ondblclick.html + OnMouseEnter editbtn/tdateedit.onmouseenter.html + OnMouseLeave editbtn/tdateedit.onmouseleave.html + OnMouseWheel editbtn/tdateedit.onmousewheel.html + OnMouseWheelDown editbtn/tdateedit.onmousewheeldown.html + OnMouseWheelUp editbtn/tdateedit.onmousewheelup.html + ParentBidiMode editbtn/tdateedit.parentbidimode.html + ParentColor editbtn/tdateedit.parentcolor.html + Spacing editbtn/tdateedit.spacing.html + Text editbtn/tdateedit.text.html + TextHint editbtn/tdateedit.texthint.html + TextHintFontColor editbtn/tdateedit.texthintfontcolor.html + TextHintFontStyle editbtn/tdateedit.texthintfontstyle.html + GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html + GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html + Date ms-its:rtl.chm::/sysutils/date.html + Button editbtn/tcustomeditbutton.button.html + ReadOnly stdctrls/tcustomedit.readonly.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + Action controls/tcontrol.action.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + AutoSize controls/tcontrol.autosize.html + AutoSelect stdctrls/tcustomedit.autoselect.html + BorderSpacing controls/tcontrol.borderspacing.html + CharCase stdctrls/tcustomedit.charcase.html + Color controls/tcontrol.color.html + Constraints controls/tcontrol.constraints.html + DirectInput editbtn/tcustomeditbutton.directinput.html + Glyph editbtn/tcustomeditbutton.glyph.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + DragMode controls/tcontrol.dragmode.html + EchoMode stdctrls/tcustomedit.echomode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + MaxLength stdctrls/tcustomedit.maxlength.html + OnChange stdctrls/tcustomedit.onchange.html + OnChangeBounds controls/tcontrol.onchangebounds.html + OnClick controls/tcontrol.onclick.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnResize controls/tcontrol.onresize.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ShowHint controls/tcontrol.showhint.html + TabStop controls/twincontrol.tabstop.html + TabOrder controls/twincontrol.taborder.html + Visible controls/tcontrol.visible.html + TTimeEdit editbtn/ttimeedit.html + GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html + GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html + ButtonClick editbtn/ttimeedit.buttonclick.html + EditDblClick editbtn/ttimeedit.editdblclick.html + EditEditingDone editbtn/ttimeedit.editeditingdone.html + Create editbtn/tcustomeditbutton.create.html + Time editbtn/ttimeedit.time.html + Button editbtn/tcustomeditbutton.button.html + DroppedDown editbtn/ttimeedit.droppeddown.html + DefaultNow editbtn/ttimeedit.defaultnow.html + OnAcceptTime editbtn/ttimeedit.onaccepttime.html + OnCustomTime editbtn/ttimeedit.oncustomtime.html + ReadOnly editbtn/ttimeedit.readonly.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + Action editbtn/ttimeedit.action.html + Align editbtn/ttimeedit.align.html + Anchors editbtn/ttimeedit.anchors.html + AutoSize editbtn/ttimeedit.autosize.html + AutoSelect editbtn/ttimeedit.autoselect.html + BidiMode editbtn/ttimeedit.bidimode.html + BorderSpacing editbtn/ttimeedit.borderspacing.html + BorderStyle editbtn/ttimeedit.borderstyle.html + CharCase editbtn/ttimeedit.charcase.html + Color editbtn/ttimeedit.color.html + Constraints editbtn/ttimeedit.constraints.html + DirectInput editbtn/tcustomeditbutton.directinput.html + Glyph editbtn/tcustomeditbutton.glyph.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + DragMode editbtn/ttimeedit.dragmode.html + EchoMode editbtn/ttimeedit.echomode.html + Enabled editbtn/ttimeedit.enabled.html + Flat editbtn/tcustomeditbutton.flat.html + FocusOnButtonClick editbtn/ttimeedit.focusonbuttonclick.html + Font editbtn/ttimeedit.font.html + MaxLength editbtn/ttimeedit.maxlength.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + OnChange editbtn/ttimeedit.onchange.html + OnChangeBounds editbtn/ttimeedit.onchangebounds.html + OnClick editbtn/ttimeedit.onclick.html + OnDblClick editbtn/ttimeedit.ondblclick.html + OnEditingDone editbtn/ttimeedit.oneditingdone.html + OnEnter editbtn/ttimeedit.onenter.html + OnExit editbtn/ttimeedit.onexit.html + OnKeyDown editbtn/ttimeedit.onkeydown.html + OnKeyPress editbtn/ttimeedit.onkeypress.html + OnKeyUp editbtn/ttimeedit.onkeyup.html + OnMouseDown editbtn/ttimeedit.onmousedown.html + OnMouseEnter editbtn/ttimeedit.onmouseenter.html + OnMouseLeave editbtn/ttimeedit.onmouseleave.html + OnMouseMove editbtn/ttimeedit.onmousemove.html + OnMouseUp editbtn/ttimeedit.onmouseup.html + OnMouseWheel editbtn/ttimeedit.onmousewheel.html + OnMouseWheelDown editbtn/ttimeedit.onmousewheeldown.html + OnMouseWheelUp editbtn/ttimeedit.onmousewheelup.html + OnResize editbtn/ttimeedit.onresize.html + OnUTF8KeyPress editbtn/ttimeedit.onutf8keypress.html + ParentBidiMode editbtn/ttimeedit.parentbidimode.html + ParentColor editbtn/ttimeedit.parentcolor.html + ParentFont editbtn/ttimeedit.parentfont.html + ParentShowHint editbtn/ttimeedit.parentshowhint.html + PopupMenu editbtn/ttimeedit.popupmenu.html + ShowHint editbtn/ttimeedit.showhint.html + SimpleLayout editbtn/ttimeedit.simplelayout.html + TabStop editbtn/ttimeedit.tabstop.html + TabOrder editbtn/ttimeedit.taborder.html + Visible editbtn/ttimeedit.visible.html + Text editbtn/ttimeedit.text.html + TextHint editbtn/ttimeedit.texthint.html + TextHintFontColor editbtn/ttimeedit.texthintfontcolor.html + TextHintFontStyle editbtn/ttimeedit.texthintfontstyle.html + TCalcEdit editbtn/tcalcedit.html + FCalcDialog editbtn/tcalcedit.fcalcdialog.html + ButtonClick editbtn/tcalcedit.buttonclick.html + RunDialog editbtn/tcalcedit.rundialog.html + AutoSelected editbtn/tcalcedit.autoselected.html + CalculatorLayout editbtn/tcalcedit.calculatorlayout.html + AsFloat editbtn/tcalcedit.asfloat.html + AsInteger editbtn/tcalcedit.asinteger.html + OnAcceptValue editbtn/tcalcedit.onacceptvalue.html + DialogTitle editbtn/tcalcedit.dialogtitle.html + ButtonCaption editbtn/tcalcedit.buttoncaption.html + ButtonCursor editbtn/tcalcedit.buttoncursor.html + ButtonHint editbtn/tcustomeditbutton.buttonhint.html + FocusOnButtonClick editbtn/tcalcedit.focusonbuttonclick.html + BidiMode editbtn/tcalcedit.bidimode.html + BorderStyle editbtn/tcalcedit.borderstyle.html + Layout editbtn/tcalcedit.layout.html + ParentBidiMode editbtn/tcalcedit.parentbidimode.html + OnButtonClick editbtn/tcustomeditbutton.onbuttonclick.html + OnMouseEnter editbtn/tcalcedit.onmouseenter.html + OnMouseLeave editbtn/tcalcedit.onmouseleave.html + OnMouseWheel editbtn/tcalcedit.onmousewheel.html + OnMouseWheelDown editbtn/tcalcedit.onmousewheeldown.html + OnMouseWheelUp editbtn/tcalcedit.onmousewheelup.html + Text editbtn/tcalcedit.text.html + TextHint editbtn/tcalcedit.texthint.html + TextHintFontColor editbtn/tcalcedit.texthintfontcolor.html + TextHintFontStyle editbtn/tcalcedit.texthintfontstyle.html + GetDefaultGlyph editbtn/tcustomeditbutton.getdefaultglyph.html + GetDefaultGlyphName editbtn/tcustomeditbutton.getdefaultglyphname.html + Create editbtn/tcustomeditbutton.create.html + ButtonOnlyWhenFocused editbtn/tcustomeditbutton.buttononlywhenfocused.html + ButtonWidth editbtn/tcustomeditbutton.buttonwidth.html + DirectInput editbtn/tcustomeditbutton.directinput.html + NumGlyphs editbtn/tcustomeditbutton.numglyphs.html + Flat editbtn/tcustomeditbutton.flat.html + Align controls/tcontrol.align.html + Anchors controls/tcontrol.anchors.html + BorderSpacing controls/tcontrol.borderspacing.html + AutoSize controls/tcontrol.autosize.html + AutoSelect stdctrls/tcustomedit.autoselect.html + Color controls/tcontrol.color.html + DragCursor controls/tcontrol.dragcursor.html + DragMode controls/tcontrol.dragmode.html + Enabled controls/tcontrol.enabled.html + Font controls/tcontrol.font.html + MaxLength stdctrls/tcustomedit.maxlength.html + ParentColor controls/tcontrol.parentcolor.html + ParentFont controls/tcontrol.parentfont.html + ParentShowHint controls/tcontrol.parentshowhint.html + PopupMenu controls/tcontrol.popupmenu.html + ReadOnly stdctrls/tcustomedit.readonly.html + ShowHint controls/tcontrol.showhint.html + TabOrder controls/twincontrol.taborder.html + TabStop controls/twincontrol.tabstop.html + Visible controls/tcontrol.visible.html + OnChange stdctrls/tcustomedit.onchange.html + OnClick controls/tcontrol.onclick.html + OnDblClick controls/tcontrol.ondblclick.html + OnDragDrop controls/tcontrol.ondragdrop.html + OnDragOver controls/tcontrol.ondragover.html + OnEditingDone controls/tcontrol.oneditingdone.html + OnEndDrag controls/tcontrol.onenddrag.html + OnEnter controls/twincontrol.onenter.html + OnExit controls/twincontrol.onexit.html + OnKeyDown controls/twincontrol.onkeydown.html + OnKeyPress controls/twincontrol.onkeypress.html + OnKeyUp controls/twincontrol.onkeyup.html + OnMouseDown controls/tcontrol.onmousedown.html + OnMouseMove controls/tcontrol.onmousemove.html + OnMouseUp controls/tcontrol.onmouseup.html + OnStartDrag controls/tcontrol.onstartdrag.html + OnUTF8KeyPress controls/twincontrol.onutf8keypress.html + Register editbtn/register.html + FileOpenGlyph editbtn/fileopenglyph.html + DateGlyph editbtn/dateglyph.html + CalcGlyph editbtn/calcglyph.html + TimeGlyph editbtn/timeglyph.html + ValEdit valedit/index.html + rsVLEDuplicateKey valedit/rsvleduplicatekey.html + rsVLEKey valedit/rsvlekey.html + rsVLEName valedit/rsvlename.html + rsVLEInvalidRowColOperation valedit/rsvleinvalidrowcoloperation.html + TEditStyle valedit/teditstyle.html + TKeyValuePair valedit/tkeyvaluepair.html + TDisplayOption valedit/tdisplayoption.html + TDisplayOptions valedit/tdisplayoptions.html + TKeyOption valedit/tkeyoption.html + TKeyOptions valedit/tkeyoptions.html + TGetPickListEvent valedit/tgetpicklistevent.html + TOnValidateEvent valedit/tonvalidateevent.html + TItemProp valedit/titemprop.html + AssignTo valedit/titemprop.assignto.html + Create valedit/titemprop.create.html + Destroy valedit/titemprop.destroy.html + EditMask valedit/titemprop.editmask.html + EditStyle valedit/titemprop.editstyle.html + KeyDesc valedit/titemprop.keydesc.html + PickList valedit/titemprop.picklist.html + MaxLength valedit/titemprop.maxlength.html + ReadOnly valedit/titemprop.readonly.html + TItemPropList valedit/titemproplist.html + Add valedit/titemproplist.add.html + Assign valedit/titemproplist.assign.html + Clear valedit/titemproplist.clear.html + Delete valedit/titemproplist.delete.html + Exchange valedit/titemproplist.exchange.html + Insert valedit/titemproplist.insert.html + Create valedit/titemproplist.create.html + Destroy valedit/titemproplist.destroy.html + Count valedit/titemproplist.count.html + Items valedit/titemproplist.items.html + TValueListStrings valedit/tvalueliststrings.html + InsertItem valedit/tvalueliststrings.insertitem.html + Put valedit/tvalueliststrings.put.html + Create valedit/tvalueliststrings.create.html + Destroy valedit/tvalueliststrings.destroy.html + Assign valedit/tvalueliststrings.assign.html + Clear valedit/tvalueliststrings.clear.html + CustomSort valedit/tvalueliststrings.customsort.html + Delete valedit/tvalueliststrings.delete.html + Exchange valedit/tvalueliststrings.exchange.html + TValueListEditor valedit/tvaluelisteditor.html + WSRegisterClass valedit/tvaluelisteditor.wsregisterclass.html + SetFixedCols valedit/tvaluelisteditor.setfixedcols.html + ShowColumnTitles valedit/tvaluelisteditor.showcolumntitles.html + AdjustRowCount valedit/tvaluelisteditor.adjustrowcount.html + DefineCellsProperty valedit/tvaluelisteditor.definecellsproperty.html + InvalidateCachedRow valedit/tvaluelisteditor.invalidatecachedrow.html + GetAutoFillColumnInfo valedit/tvaluelisteditor.getautofillcolumninfo.html + GetEditText valedit/tvaluelisteditor.getedittext.html + GetCells valedit/tvaluelisteditor.getcells.html + GetDefaultEditor valedit/tvaluelisteditor.getdefaulteditor.html + GetRowCount valedit/tvaluelisteditor.getrowcount.html + KeyDown valedit/tvaluelisteditor.keydown.html + ResetDefaultColWidths valedit/tvaluelisteditor.resetdefaultcolwidths.html + SetCells valedit/tvaluelisteditor.setcells.html + SetEditText valedit/tvaluelisteditor.setedittext.html + SetRowCount valedit/tvaluelisteditor.setrowcount.html + TitlesChanged valedit/tvaluelisteditor.titleschanged.html + ValidateEntry valedit/tvaluelisteditor.validateentry.html + Create valedit/tvaluelisteditor.create.html + Destroy valedit/tvaluelisteditor.destroy.html + Clear valedit/tvaluelisteditor.clear.html + DeleteColRow valedit/tvaluelisteditor.deletecolrow.html + DeleteRow valedit/tvaluelisteditor.deleterow.html + DeleteCol valedit/tvaluelisteditor.deletecol.html + FindRow valedit/tvaluelisteditor.findrow.html + InsertColRow valedit/tvaluelisteditor.insertcolrow.html + InsertRow valedit/tvaluelisteditor.insertrow.html + InsertRowWithValues valedit/tvaluelisteditor.insertrowwithvalues.html + ExchangeColRow valedit/tvaluelisteditor.exchangecolrow.html + IsEmptyRow valedit/tvaluelisteditor.isemptyrow.html + MoveColRow valedit/tvaluelisteditor.movecolrow.html + RestoreCurrentRow valedit/tvaluelisteditor.restorecurrentrow.html + FixedRows valedit/tvaluelisteditor.fixedrows.html + Modified valedit/tvaluelisteditor.modified.html + Keys valedit/tvaluelisteditor.keys.html + Values valedit/tvaluelisteditor.values.html + ItemProps valedit/tvaluelisteditor.itemprops.html + Align valedit/tvaluelisteditor.align.html + AlternateColor valedit/tvaluelisteditor.alternatecolor.html + Anchors valedit/tvaluelisteditor.anchors.html + AutoAdvance valedit/tvaluelisteditor.autoadvance.html + AutoEdit valedit/tvaluelisteditor.autoedit.html + BiDiMode valedit/tvaluelisteditor.bidimode.html + BorderSpacing valedit/tvaluelisteditor.borderspacing.html + BorderStyle valedit/tvaluelisteditor.borderstyle.html + Color valedit/tvaluelisteditor.color.html + Constraints valedit/tvaluelisteditor.constraints.html + DefaultColWidth valedit/tvaluelisteditor.defaultcolwidth.html + DefaultDrawing valedit/tvaluelisteditor.defaultdrawing.html + DefaultRowHeight valedit/tvaluelisteditor.defaultrowheight.html + DragCursor valedit/tvaluelisteditor.dragcursor.html + DragKind valedit/tvaluelisteditor.dragkind.html + DragMode valedit/tvaluelisteditor.dragmode.html + Enabled valedit/tvaluelisteditor.enabled.html + ExtendedSelect valedit/tvaluelisteditor.extendedselect.html + FixedColor valedit/tvaluelisteditor.fixedcolor.html + FixedCols valedit/tvaluelisteditor.fixedcols.html + Flat valedit/tvaluelisteditor.flat.html + Font valedit/tvaluelisteditor.font.html + GridLineWidth valedit/tvaluelisteditor.gridlinewidth.html + HeaderHotZones valedit/tvaluelisteditor.headerhotzones.html + HeaderPushZones valedit/tvaluelisteditor.headerpushzones.html + MouseWheelOption valedit/tvaluelisteditor.mousewheeloption.html + ParentBiDiMode valedit/tvaluelisteditor.parentbidimode.html + ParentColor valedit/tvaluelisteditor.parentcolor.html + ParentFont valedit/tvaluelisteditor.parentfont.html + ParentShowHint valedit/tvaluelisteditor.parentshowhint.html + PopupMenu valedit/tvaluelisteditor.popupmenu.html + RowCount valedit/tvaluelisteditor.rowcount.html + ScrollBars valedit/tvaluelisteditor.scrollbars.html + ShowHint valedit/tvaluelisteditor.showhint.html + TabOrder valedit/tvaluelisteditor.taborder.html + TabStop valedit/tvaluelisteditor.tabstop.html + TitleFont valedit/tvaluelisteditor.titlefont.html + TitleImageList valedit/tvaluelisteditor.titleimagelist.html + TitleStyle valedit/tvaluelisteditor.titlestyle.html + UseXORFeatures valedit/tvaluelisteditor.usexorfeatures.html + Visible valedit/tvaluelisteditor.visible.html + VisibleColCount valedit/tvaluelisteditor.visiblecolcount.html + VisibleRowCount valedit/tvaluelisteditor.visiblerowcount.html + OnBeforeSelection valedit/tvaluelisteditor.onbeforeselection.html + OnButtonClick valedit/tvaluelisteditor.onbuttonclick.html + OnChangeBounds valedit/tvaluelisteditor.onchangebounds.html + OnCheckboxToggled valedit/tvaluelisteditor.oncheckboxtoggled.html + OnClick valedit/tvaluelisteditor.onclick.html + OnColRowDeleted valedit/tvaluelisteditor.oncolrowdeleted.html + OnColRowExchanged valedit/tvaluelisteditor.oncolrowexchanged.html + OnColRowInserted valedit/tvaluelisteditor.oncolrowinserted.html + OnColRowMoved valedit/tvaluelisteditor.oncolrowmoved.html + OnCompareCells valedit/tvaluelisteditor.oncomparecells.html + OnContextPopup valedit/tvaluelisteditor.oncontextpopup.html + OnDragDrop valedit/tvaluelisteditor.ondragdrop.html + OnDragOver valedit/tvaluelisteditor.ondragover.html + OnDblClick valedit/tvaluelisteditor.ondblclick.html + OnDrawCell valedit/tvaluelisteditor.ondrawcell.html + OnEditButtonClick valedit/tvaluelisteditor.oneditbuttonclick.html + OnEditingDone valedit/tvaluelisteditor.oneditingdone.html + OnEndDock valedit/tvaluelisteditor.onenddock.html + OnEndDrag valedit/tvaluelisteditor.onenddrag.html + OnEnter valedit/tvaluelisteditor.onenter.html + OnExit valedit/tvaluelisteditor.onexit.html + OnGetEditMask valedit/tvaluelisteditor.ongeteditmask.html + OnGetEditText valedit/tvaluelisteditor.ongetedittext.html + OnHeaderClick valedit/tvaluelisteditor.onheaderclick.html + OnHeaderSized valedit/tvaluelisteditor.onheadersized.html + OnHeaderSizing valedit/tvaluelisteditor.onheadersizing.html + OnKeyDown valedit/tvaluelisteditor.onkeydown.html + OnKeyPress valedit/tvaluelisteditor.onkeypress.html + OnKeyUp valedit/tvaluelisteditor.onkeyup.html + OnMouseDown valedit/tvaluelisteditor.onmousedown.html + OnMouseEnter valedit/tvaluelisteditor.onmouseenter.html + OnMouseLeave valedit/tvaluelisteditor.onmouseleave.html + OnMouseMove valedit/tvaluelisteditor.onmousemove.html + OnMouseUp valedit/tvaluelisteditor.onmouseup.html + OnMouseWheel valedit/tvaluelisteditor.onmousewheel.html + OnMouseWheelDown valedit/tvaluelisteditor.onmousewheeldown.html + OnMouseWheelUp valedit/tvaluelisteditor.onmousewheelup.html + OnPickListSelect valedit/tvaluelisteditor.onpicklistselect.html + OnPrepareCanvas valedit/tvaluelisteditor.onpreparecanvas.html + OnResize valedit/tvaluelisteditor.onresize.html + OnSelectEditor valedit/tvaluelisteditor.onselecteditor.html + OnSelection valedit/tvaluelisteditor.onselection.html + OnSelectCell valedit/tvaluelisteditor.onselectcell.html + OnSetEditText valedit/tvaluelisteditor.onsetedittext.html + OnShowHint valedit/tvaluelisteditor.onshowhint.html + OnStartDock valedit/tvaluelisteditor.onstartdock.html + OnStartDrag valedit/tvaluelisteditor.onstartdrag.html + OnTopLeftChanged valedit/tvaluelisteditor.ontopleftchanged.html + OnUserCheckboxBitmap valedit/tvaluelisteditor.onusercheckboxbitmap.html + OnUTF8KeyPress valedit/tvaluelisteditor.onutf8keypress.html + OnValidateEntry valedit/tvaluelisteditor.onvalidateentry.html + DisplayOptions valedit/tvaluelisteditor.displayoptions.html + DoubleBuffered valedit/tvaluelisteditor.doublebuffered.html + DropDownRows valedit/tvaluelisteditor.dropdownrows.html + KeyOptions valedit/tvaluelisteditor.keyoptions.html + Options valedit/tvaluelisteditor.options.html + Strings valedit/tvaluelisteditor.strings.html + TitleCaptions valedit/tvaluelisteditor.titlecaptions.html + OnGetPickList valedit/tvaluelisteditor.ongetpicklist.html + OnStringsChange valedit/tvaluelisteditor.onstringschange.html + OnStringsChanging valedit/tvaluelisteditor.onstringschanging.html + OnValidate valedit/tvaluelisteditor.onvalidate.html + Register valedit/register.html + ComboEx comboex/index.html + TAutoCompleteOption comboex/tautocompleteoption.html + TAutoCompleteOptions comboex/tautocompleteoptions.html + TComboBoxExStyle comboex/tcomboboxexstyle.html + TComboBoxExStyleEx comboex/tcomboboxexstyleex.html + TComboBoxExStyles comboex/tcomboboxexstyles.html + TCustomData comboex/tcustomdata.html + TListItemsCompare comboex/tlistitemscompare.html + TListItemsSortType comboex/tlistitemssorttype.html + TCheckItemChange comboex/tcheckitemchange.html + TListCompareEvent comboex/tlistcompareevent.html + TCheckComboItemState comboex/tcheckcomboitemstate.html + PTCheckComboItemState comboex/ptcheckcomboitemstate.html + TListControlItem comboex/tlistcontrolitem.html + Data comboex/tlistcontrolitem.data.html + Create comboex/tlistcontrolitem.create.html + Caption comboex/tlistcontrolitem.caption.html + ImageIndex comboex/tlistcontrolitem.imageindex.html + TComboExItem comboex/tcomboexitem.html + cDefCaption comboex/tcomboexitem.cdefcaption.html + Create comboex/tcomboexitem.create.html + Destroy comboex/tcomboexitem.destroy.html + Indent comboex/tcomboexitem.indent.html + OverlayImageIndex comboex/tcomboexitem.overlayimageindex.html + SelectedImageIndex comboex/tcomboexitem.selectedimageindex.html + TListControlItems comboex/tlistcontrolitems.html + CompareItems comboex/tlistcontrolitems.compareitems.html + DoCustomSort comboex/tlistcontrolitems.docustomsort.html + DoOnCompare comboex/tlistcontrolitems.dooncompare.html + Update comboex/tlistcontrolitems.update.html + Add comboex/tlistcontrolitems.add.html + CustomSort comboex/tlistcontrolitems.customsort.html + Sort comboex/tlistcontrolitems.sort.html + Items comboex/tlistcontrolitems.items.html + CaseSensitive comboex/tlistcontrolitems.casesensitive.html + SortType comboex/tlistcontrolitems.sorttype.html + OnCompare comboex/tlistcontrolitems.oncompare.html + TComboExItems comboex/tcomboexitems.html + FAddingOrDeletingItem comboex/tcomboexitems.faddingordeletingitem.html + Notify comboex/tcomboexitems.notify.html + Update comboex/tcomboexitems.update.html + Add comboex/tcomboexitems.add.html + AddItem comboex/tcomboexitems.additem.html + Insert comboex/tcomboexitems.insert.html + ComboItems comboex/tcomboexitems.comboitems.html + TCustomComboBoxEx comboex/tcustomcomboboxex.html + cDefAutoCompOpts comboex/tcustomcomboboxex.cdefautocompopts.html + cDefStyle comboex/tcustomcomboboxex.cdefstyle.html + FNeedMeasure comboex/tcustomcomboboxex.fneedmeasure.html + FRightToLeft comboex/tcustomcomboboxex.frighttoleft.html + FTextHeight comboex/tcustomcomboboxex.ftextheight.html + CMBiDiModeChanged comboex/tcustomcomboboxex.cmbidimodechanged.html + DrawItem comboex/tcustomcomboboxex.drawitem.html + FontChanged comboex/tcustomcomboboxex.fontchanged.html + InitializeWnd comboex/tcustomcomboboxex.initializewnd.html + SetItemHeight comboex/tcustomcomboboxex.setitemheight.html + Create comboex/tcustomcomboboxex.create.html + Destroy comboex/tcustomcomboboxex.destroy.html + Add comboex/tcustomcomboboxex.add.html + AddItem comboex/tcustomcomboboxex.additem.html + AssignItemsEx comboex/tcustomcomboboxex.assignitemsex.html + Clear comboex/tcustomcomboboxex.clear.html + Delete comboex/tcustomcomboboxex.delete.html + DeleteSelected comboex/tcustomcomboboxex.deleteselected.html + Insert comboex/tcustomcomboboxex.insert.html + AutoCompleteOptions comboex/tcustomcomboboxex.autocompleteoptions.html + Images comboex/tcustomcomboboxex.images.html + ItemsEx comboex/tcustomcomboboxex.itemsex.html + Style comboex/tcustomcomboboxex.style.html + StyleEx comboex/tcustomcomboboxex.styleex.html + TComboBoxEx comboex/tcomboboxex.html + Align comboex/tcomboboxex.align.html + Anchors comboex/tcomboboxex.anchors.html + ArrowKeysTraverseList comboex/tcomboboxex.arrowkeystraverselist.html + AutoComplete comboex/tcomboboxex.autocomplete.html + AutoCompleteOptions comboex/tcomboboxex.autocompleteoptions.html + AutoCompleteText comboex/tcomboboxex.autocompletetext.html + AutoDropDown comboex/tcomboboxex.autodropdown.html + AutoSelect comboex/tcomboboxex.autoselect.html + AutoSize comboex/tcomboboxex.autosize.html + BidiMode comboex/tcomboboxex.bidimode.html + BorderSpacing comboex/tcomboboxex.borderspacing.html + BorderStyle comboex/tcomboboxex.borderstyle.html + CharCase comboex/tcomboboxex.charcase.html + Color comboex/tcomboboxex.color.html + Constraints comboex/tcomboboxex.constraints.html + DragCursor comboex/tcomboboxex.dragcursor.html + DragKind comboex/tcomboboxex.dragkind.html + DragMode comboex/tcomboboxex.dragmode.html + DropDownCount comboex/tcomboboxex.dropdowncount.html + Enabled comboex/tcomboboxex.enabled.html + Font comboex/tcomboboxex.font.html + Images comboex/tcomboboxex.images.html + ItemHeight comboex/tcomboboxex.itemheight.html + ItemsEx comboex/tcomboboxex.itemsex.html + ItemIndex comboex/tcomboboxex.itemindex.html + ItemWidth comboex/tcomboboxex.itemwidth.html + MaxLength comboex/tcomboboxex.maxlength.html + OnChange comboex/tcomboboxex.onchange.html + OnChangeBounds comboex/tcomboboxex.onchangebounds.html + OnClick comboex/tcomboboxex.onclick.html + OnCloseUp comboex/tcomboboxex.oncloseup.html + OnContextPopup comboex/tcomboboxex.oncontextpopup.html + OnDblClick comboex/tcomboboxex.ondblclick.html + OnDragDrop comboex/tcomboboxex.ondragdrop.html + OnDragOver comboex/tcomboboxex.ondragover.html + OnDropDown comboex/tcomboboxex.ondropdown.html + OnEditingDone comboex/tcomboboxex.oneditingdone.html + OnEndDock comboex/tcomboboxex.onenddock.html + OnEndDrag comboex/tcomboboxex.onenddrag.html + OnEnter comboex/tcomboboxex.onenter.html + OnExit comboex/tcomboboxex.onexit.html + OnGetItems comboex/tcomboboxex.ongetitems.html + OnKeyDown comboex/tcomboboxex.onkeydown.html + OnKeyPress comboex/tcomboboxex.onkeypress.html + OnKeyUp comboex/tcomboboxex.onkeyup.html + OnMouseDown comboex/tcomboboxex.onmousedown.html + OnMouseEnter comboex/tcomboboxex.onmouseenter.html + OnMouseLeave comboex/tcomboboxex.onmouseleave.html + OnMouseMove comboex/tcomboboxex.onmousemove.html + OnMouseUp comboex/tcomboboxex.onmouseup.html + OnMouseWheel comboex/tcomboboxex.onmousewheel.html + OnMouseWheelDown comboex/tcomboboxex.onmousewheeldown.html + OnMouseWheelUp comboex/tcomboboxex.onmousewheelup.html + OnSelect comboex/tcomboboxex.onselect.html + OnStartDock comboex/tcomboboxex.onstartdock.html + OnStartDrag comboex/tcomboboxex.onstartdrag.html + OnUTF8KeyPress comboex/tcomboboxex.onutf8keypress.html + ParentBidiMode comboex/tcomboboxex.parentbidimode.html + ParentColor comboex/tcomboboxex.parentcolor.html + ParentFont comboex/tcomboboxex.parentfont.html + ParentShowHint comboex/tcomboboxex.parentshowhint.html + PopupMenu comboex/tcomboboxex.popupmenu.html + ReadOnly comboex/tcomboboxex.readonly.html + ShowHint comboex/tcomboboxex.showhint.html + Style comboex/tcomboboxex.style.html + StyleEx comboex/tcomboboxex.styleex.html + TabOrder comboex/tcomboboxex.taborder.html + TabStop comboex/tcomboboxex.tabstop.html + Text comboex/tcomboboxex.text.html + Visible comboex/tcomboboxex.visible.html + TCustomCheckCombo comboex/tcustomcheckcombo.html + FCheckHighlight comboex/tcustomcheckcombo.fcheckhighlight.html + FCheckSize comboex/tcustomcheckcombo.fchecksize.html + FHiLiteLeft comboex/tcustomcheckcombo.fhiliteleft.html + FHiLiteRight comboex/tcustomcheckcombo.fhiliteright.html + FNeedMeasure comboex/tcustomcheckcombo.fneedmeasure.html + FRejectDropDown comboex/tcustomcheckcombo.frejectdropdown.html + FRejectToggleOnSelect comboex/tcustomcheckcombo.frejecttoggleonselect.html + FRightToLeft comboex/tcustomcheckcombo.frighttoleft.html + FTextHeight comboex/tcustomcheckcombo.ftextheight.html + CMBiDiModeChanged comboex/tcustomcheckcombo.cmbidimodechanged.html + ClearItemStates comboex/tcustomcheckcombo.clearitemstates.html + CloseUp comboex/tcustomcheckcombo.closeup.html + DrawItem comboex/tcustomcheckcombo.drawitem.html + DropDown comboex/tcustomcheckcombo.dropdown.html + FontChanged comboex/tcustomcheckcombo.fontchanged.html + InitializeWnd comboex/tcustomcheckcombo.initializewnd.html + InitItemStates comboex/tcustomcheckcombo.inititemstates.html + KeyDown comboex/tcustomcheckcombo.keydown.html + Loaded comboex/tcustomcheckcombo.loaded.html + MouseLeave comboex/tcustomcheckcombo.mouseleave.html + MouseMove comboex/tcustomcheckcombo.mousemove.html + SetItemHeight comboex/tcustomcheckcombo.setitemheight.html + Select comboex/tcustomcheckcombo.select.html + Create comboex/tcustomcheckcombo.create.html + Destroy comboex/tcustomcheckcombo.destroy.html + AddItem comboex/tcustomcheckcombo.additem.html + AssignItems comboex/tcustomcheckcombo.assignitems.html + Clear comboex/tcustomcheckcombo.clear.html + DeleteItem comboex/tcustomcheckcombo.deleteitem.html + CheckAll comboex/tcustomcheckcombo.checkall.html + Toggle comboex/tcustomcheckcombo.toggle.html + AllowGrayed comboex/tcustomcheckcombo.allowgrayed.html + Count comboex/tcustomcheckcombo.count.html + Checked comboex/tcustomcheckcombo.checked.html + ItemEnabled comboex/tcustomcheckcombo.itemenabled.html + Objects comboex/tcustomcheckcombo.objects.html + State comboex/tcustomcheckcombo.state.html + OnItemChange comboex/tcustomcheckcombo.onitemchange.html + TCheckComboBox comboex/tcheckcombobox.html + Align comboex/tcheckcombobox.align.html + AllowGrayed comboex/tcheckcombobox.allowgrayed.html + Anchors comboex/tcheckcombobox.anchors.html + ArrowKeysTraverseList comboex/tcheckcombobox.arrowkeystraverselist.html + AutoDropDown comboex/tcheckcombobox.autodropdown.html + AutoSize comboex/tcheckcombobox.autosize.html + BidiMode comboex/tcheckcombobox.bidimode.html + BorderSpacing comboex/tcheckcombobox.borderspacing.html + BorderStyle comboex/tcheckcombobox.borderstyle.html + Color comboex/tcheckcombobox.color.html + Constraints comboex/tcheckcombobox.constraints.html + Count comboex/tcheckcombobox.count.html + DragCursor comboex/tcheckcombobox.dragcursor.html + DragKind comboex/tcheckcombobox.dragkind.html + DragMode comboex/tcheckcombobox.dragmode.html + DropDownCount comboex/tcheckcombobox.dropdowncount.html + Enabled comboex/tcheckcombobox.enabled.html + Font comboex/tcheckcombobox.font.html + ItemHeight comboex/tcheckcombobox.itemheight.html + ItemIndex comboex/tcheckcombobox.itemindex.html + Items comboex/tcheckcombobox.items.html + ItemWidth comboex/tcheckcombobox.itemwidth.html + MaxLength comboex/tcheckcombobox.maxlength.html + OnChange comboex/tcheckcombobox.onchange.html + OnChangeBounds comboex/tcheckcombobox.onchangebounds.html + OnClick comboex/tcheckcombobox.onclick.html + OnCloseUp comboex/tcheckcombobox.oncloseup.html + OnContextPopup comboex/tcheckcombobox.oncontextpopup.html + OnDblClick comboex/tcheckcombobox.ondblclick.html + OnDragDrop comboex/tcheckcombobox.ondragdrop.html + OnDragOver comboex/tcheckcombobox.ondragover.html + OnEndDrag comboex/tcheckcombobox.onenddrag.html + OnDropDown comboex/tcheckcombobox.ondropdown.html + OnEditingDone comboex/tcheckcombobox.oneditingdone.html + OnEnter comboex/tcheckcombobox.onenter.html + OnExit comboex/tcheckcombobox.onexit.html + OnGetItems comboex/tcheckcombobox.ongetitems.html + OnItemChange comboex/tcheckcombobox.onitemchange.html + OnKeyDown comboex/tcheckcombobox.onkeydown.html + OnKeyPress comboex/tcheckcombobox.onkeypress.html + OnKeyUp comboex/tcheckcombobox.onkeyup.html + OnMouseDown comboex/tcheckcombobox.onmousedown.html + OnMouseEnter comboex/tcheckcombobox.onmouseenter.html + OnMouseLeave comboex/tcheckcombobox.onmouseleave.html + OnMouseMove comboex/tcheckcombobox.onmousemove.html + OnMouseUp comboex/tcheckcombobox.onmouseup.html + OnMouseWheel comboex/tcheckcombobox.onmousewheel.html + OnMouseWheelDown comboex/tcheckcombobox.onmousewheeldown.html + OnMouseWheelUp comboex/tcheckcombobox.onmousewheelup.html + OnStartDrag comboex/tcheckcombobox.onstartdrag.html + OnSelect comboex/tcheckcombobox.onselect.html + OnUTF8KeyPress comboex/tcheckcombobox.onutf8keypress.html + ParentBidiMode comboex/tcheckcombobox.parentbidimode.html + ParentColor comboex/tcheckcombobox.parentcolor.html + ParentFont comboex/tcheckcombobox.parentfont.html + ParentShowHint comboex/tcheckcombobox.parentshowhint.html + PopupMenu comboex/tcheckcombobox.popupmenu.html + ShowHint comboex/tcheckcombobox.showhint.html + Sorted comboex/tcheckcombobox.sorted.html + TabOrder comboex/tcheckcombobox.taborder.html + TabStop comboex/tcheckcombobox.tabstop.html + Text comboex/tcheckcombobox.text.html + Visible comboex/tcheckcombobox.visible.html + Register comboex/register.html + LazCanvas lazcanvas/index.html + TLazCanvasImageFormat lazcanvas/tlazcanvasimageformat.html + TFPSharpInterpolation lazcanvas/tfpsharpinterpolation.html + Execute lazcanvas/tfpsharpinterpolation.execute.html + TLazCanvasState lazcanvas/tlazcanvasstate.html + Brush lazcanvas/tlazcanvasstate.brush.html + Pen lazcanvas/tlazcanvasstate.pen.html + Font lazcanvas/tlazcanvasstate.font.html + BaseWindowOrg lazcanvas/tlazcanvasstate.basewindoworg.html + WindowOrg lazcanvas/tlazcanvasstate.windoworg.html + Clipping lazcanvas/tlazcanvasstate.clipping.html + ClipRegion lazcanvas/tlazcanvasstate.clipregion.html + Destroy lazcanvas/tlazcanvasstate.destroy.html + TLazCanvas lazcanvas/tlazcanvas.html + SetColor lazcanvas/tlazcanvas.setcolor.html + DoCreateDefaultFont lazcanvas/tlazcanvas.docreatedefaultfont.html + DoRectangle lazcanvas/tlazcanvas.dorectangle.html + DoRectangleFill lazcanvas/tlazcanvas.dorectanglefill.html + DoPolygonFill lazcanvas/tlazcanvas.dopolygonfill.html + DoLine lazcanvas/tlazcanvas.doline.html + HasNoImage lazcanvas/tlazcanvas.hasnoimage.html + NativeDC lazcanvas/tlazcanvas.nativedc.html + ExtraFontData lazcanvas/tlazcanvas.extrafontdata.html + ImageFormat lazcanvas/tlazcanvas.imageformat.html + SelectedBitmap lazcanvas/tlazcanvas.selectedbitmap.html + create lazcanvas/tlazcanvas.create.html + destroy lazcanvas/tlazcanvas.destroy.html + SetLazClipRegion lazcanvas/tlazcanvas.setlazclipregion.html + SaveState lazcanvas/tlazcanvas.savestate.html + RestoreState lazcanvas/tlazcanvas.restorestate.html + ResetCanvasState lazcanvas/tlazcanvas.resetcanvasstate.html + AlphaBlend lazcanvas/tlazcanvas.alphablend.html + AlphaBlendIgnoringDestPixels lazcanvas/tlazcanvas.alphablendignoringdestpixels.html + CanvasCopyRect lazcanvas/tlazcanvas.canvascopyrect.html + FillColor lazcanvas/tlazcanvas.fillcolor.html + AssignPenData lazcanvas/tlazcanvas.assignpendata.html + AssignBrushData lazcanvas/tlazcanvas.assignbrushdata.html + AssignFontData lazcanvas/tlazcanvas.assignfontdata.html + AssignedPen lazcanvas/tlazcanvas.assignedpen.html + AssignedBrush lazcanvas/tlazcanvas.assignedbrush.html + AssignedFont lazcanvas/tlazcanvas.assignedfont.html + BaseWindowOrg lazcanvas/tlazcanvas.basewindoworg.html + WindowOrg lazcanvas/tlazcanvas.windoworg.html + LazRegions lazregions/index.html + TLazRegionFillMode lazregions/tlazregionfillmode.html + TPointArray lazregions/tpointarray.html + TLazRegionPart lazregions/tlazregionpart.html + GetBoundingRect lazregions/tlazregionpart.getboundingrect.html + IsPointInPart lazregions/tlazregionpart.ispointinpart.html + TLazRegionRect lazregions/tlazregionrect.html + Rect lazregions/tlazregionrect.rect.html + IsPointInPart lazregions/tlazregionrect.ispointinpart.html + TLazRegionPolygon lazregions/tlazregionpolygon.html + Points lazregions/tlazregionpolygon.points.html + FillMode lazregions/tlazregionpolygon.fillmode.html + IsPointInPart lazregions/tlazregionpolygon.ispointinpart.html + TLazRegionEllipse lazregions/tlazregionellipse.html + X1 lazregions/tlazregionellipse.x1.html + Y1 lazregions/tlazregionellipse.y1.html + X2 lazregions/tlazregionellipse.x2.html + Y2 lazregions/tlazregionellipse.y2.html + IsPointInPart lazregions/tlazregionpart.ispointinpart.html + TLazRegion lazregions/tlazregion.html + Parts lazregions/tlazregion.parts.html + IsSimpleRectRegion lazregions/tlazregion.issimplerectregion.html + Rect lazregions/tlazregion.rect.html + Create lazregions/tlazregion.create.html + Destroy lazregions/tlazregion.destroy.html + Assign lazregions/tlazregion.assign.html + Clear lazregions/tlazregion.clear.html + CombineWith lazregions/tlazregion.combinewith.html + GetRegionKind lazregions/tlazregion.getregionkind.html + IsSimpleRectEmpty lazregions/tlazregion.issimplerectempty.html + AddPart lazregions/tlazregion.addpart.html + AddRectangle lazregions/tlazregion.addrectangle.html + AddPolygon lazregions/tlazregion.addpolygon.html + AddEllipse lazregions/tlazregion.addellipse.html + SetAsSimpleRectRegion lazregions/tlazregion.setassimplerectregion.html + AddPartsFromRegion lazregions/tlazregion.addpartsfromregion.html + DoChangeToComplexRegion lazregions/tlazregion.dochangetocomplexregion.html + GetBoundingRect lazregions/tlazregion.getboundingrect.html + IsPointInRegion lazregions/tlazregion.ispointinregion.html + TLazRegionWithChilds lazregions/tlazregionwithchilds.html + Parent lazregions/tlazregionwithchilds.parent.html + Childs lazregions/tlazregionwithchilds.childs.html + UserData lazregions/tlazregionwithchilds.userdata.html + Create lazregions/tlazregionwithchilds.create.html + Destroy lazregions/tlazregionwithchilds.destroy.html + IsPointInRegion lazregions/tlazregionwithchilds.ispointinregion.html + IsPointInPolygon lazregions/ispointinpolygon.html + LazDialogs lazdialogs/index.html + TLazFileDialogKind lazdialogs/tlazfiledialogkind.html + TLazarusFileDialogForm lazdialogs/tlazarusfiledialogform.html + ButtonPanel lazdialogs/tlazarusfiledialogform.buttonpanel.html + ShellTreeView lazdialogs/tlazarusfiledialogform.shelltreeview.html + ShellListView lazdialogs/tlazarusfiledialogform.shelllistview.html + SaveEdit lazdialogs/tlazarusfiledialogform.saveedit.html + FilterComboBox lazdialogs/tlazarusfiledialogform.filtercombobox.html + FileName lazdialogs/tlazarusfiledialogform.filename.html + Filter lazdialogs/tlazarusfiledialogform.filter.html + InitialDir lazdialogs/tlazarusfiledialogform.initialdir.html + Title lazdialogs/tlazarusfiledialogform.title.html + CreateNew lazdialogs/tlazarusfiledialogform.createnew.html + Initialize lazdialogs/tlazarusfiledialogform.initialize.html + HandleOkClick lazdialogs/tlazarusfiledialogform.handleokclick.html + HandleCancelClick lazdialogs/tlazarusfiledialogform.handlecancelclick.html + HandleCloseQuery lazdialogs/tlazarusfiledialogform.handleclosequery.html + HandleEditChange lazdialogs/tlazarusfiledialogform.handleeditchange.html + HandleSelectItem lazdialogs/tlazarusfiledialogform.handleselectitem.html + HandleTreeViewSelectionChanged lazdialogs/tlazarusfiledialogform.handletreeviewselectionchanged.html + TLazOpenDialog lazdialogs/tlazopendialog.html + FForm lazdialogs/tlazopendialog.fform.html + WSRegisterClass lazdialogs/tlazopendialog.wsregisterclass.html + DoExecute lazdialogs/tlazopendialog.doexecute.html + DoInitialize lazdialogs/tlazopendialog.doinitialize.html + Create lazdialogs/tlazopendialog.create.html + TLazSaveDialog lazdialogs/tlazsavedialog.html + DoInitialize lazdialogs/tlazsavedialog.doinitialize.html + TLazSelectDirectoryDialog lazdialogs/tlazselectdirectorydialog.html + DoInitialize lazdialogs/tlazselectdirectorydialog.doinitialize.html + TLazMessageDialog lazdialogs/tlazmessagedialog.html + CreateNew lazdialogs/tlazmessagedialog.createnew.html + LazMessageDlg lazdialogs/lazmessagedlg.html + CustomDrawn_Common customdrawn_common/index.html + TCDDrawerCommon customdrawn_common/tcddrawercommon.html + PalDefaultUsesNativePalette customdrawn_common/tcddrawercommon.paldefaultusesnativepalette.html + LoadFallbackPaletteColors customdrawn_common/tcddrawercommon.loadfallbackpalettecolors.html + GetMeasures customdrawn_common/tcddrawercommon.getmeasures.html + GetMeasuresEx customdrawn_common/tcddrawercommon.getmeasuresex.html + CalculatePreferredSize customdrawn_common/tcddrawercommon.calculatepreferredsize.html + GetColor customdrawn_common/tcddrawercommon.getcolor.html + GetClientArea customdrawn_common/tcddrawercommon.getclientarea.html + DPIAdjustment customdrawn_common/tcddrawercommon.dpiadjustment.html + DrawFocusRect customdrawn_common/tcddrawercommon.drawfocusrect.html + DrawRaisedFrame customdrawn_common/tcddrawercommon.drawraisedframe.html + DrawFrame3D customdrawn_common/tcddrawercommon.drawframe3d.html + DrawSunkenFrame customdrawn_common/tcddrawercommon.drawsunkenframe.html + DrawShallowSunkenFrame customdrawn_common/tcddrawercommon.drawshallowsunkenframe.html + DrawTickmark customdrawn_common/tcddrawercommon.drawtickmark.html + DrawSlider customdrawn_common/tcddrawercommon.drawslider.html + DrawArrow customdrawn_common/tcddrawercommon.drawarrow.html + DrawSmallCloseButton customdrawn_common/tcddrawercommon.drawsmallclosebutton.html + DrawButtonWithArrow customdrawn_common/tcddrawercommon.drawbuttonwitharrow.html + DrawControl customdrawn_common/tcddrawercommon.drawcontrol.html + DrawButton customdrawn_common/tcddrawercommon.drawbutton.html + DrawEditBackground customdrawn_common/tcddrawercommon.draweditbackground.html + DrawEditFrame customdrawn_common/tcddrawercommon.draweditframe.html + DrawCaret customdrawn_common/tcddrawercommon.drawcaret.html + DrawEdit customdrawn_common/tcddrawercommon.drawedit.html + DrawCheckBoxSquare customdrawn_common/tcddrawercommon.drawcheckboxsquare.html + DrawCheckBox customdrawn_common/tcddrawercommon.drawcheckbox.html + DrawRadioButtonCircle customdrawn_common/tcddrawercommon.drawradiobuttoncircle.html + DrawRadioButton customdrawn_common/tcddrawercommon.drawradiobutton.html + DrawComboBox customdrawn_common/tcddrawercommon.drawcombobox.html + DrawScrollBar customdrawn_common/tcddrawercommon.drawscrollbar.html + DrawGroupBox customdrawn_common/tcddrawercommon.drawgroupbox.html + DrawPanel customdrawn_common/tcddrawercommon.drawpanel.html + DrawStaticText customdrawn_common/tcddrawercommon.drawstatictext.html + DrawTrackBar customdrawn_common/tcddrawercommon.drawtrackbar.html + DrawProgressBar customdrawn_common/tcddrawercommon.drawprogressbar.html + DrawListView customdrawn_common/tcddrawercommon.drawlistview.html + DrawReportListView customdrawn_common/tcddrawercommon.drawreportlistview.html + DrawReportListViewItem customdrawn_common/tcddrawercommon.drawreportlistviewitem.html + DrawToolBar customdrawn_common/tcddrawercommon.drawtoolbar.html + DrawToolBarItem customdrawn_common/tcddrawercommon.drawtoolbaritem.html + DrawCTabControl customdrawn_common/tcddrawercommon.drawctabcontrol.html + DrawCTabControlFrame customdrawn_common/tcddrawercommon.drawctabcontrolframe.html + DrawTabSheet customdrawn_common/tcddrawercommon.drawtabsheet.html + DrawTabs customdrawn_common/tcddrawercommon.drawtabs.html + DrawTab customdrawn_common/tcddrawercommon.drawtab.html + DrawSpinEdit customdrawn_common/tcddrawercommon.drawspinedit.html + CustomDrawnDrawers customdrawndrawers/index.html + CDDRAWSTYLE_COUNT customdrawndrawers/cddrawstyle_count.html + cddTestStr customdrawndrawers/cddteststr.html + TCDEDIT_LEFT_TEXT_SPACING customdrawndrawers/tcdedit_left_text_spacing.html + TCDEDIT_RIGHT_TEXT_SPACING customdrawndrawers/tcdedit_right_text_spacing.html + TCDEDIT_TOP_TEXT_SPACING customdrawndrawers/tcdedit_top_text_spacing.html + TCDEDIT_BOTTOM_TEXT_SPACING customdrawndrawers/tcdedit_bottom_text_spacing.html + TCDCHECKBOX_SQUARE_HALF_HEIGHT customdrawndrawers/tcdcheckbox_square_half_height.html + TCDCHECKBOX_SQUARE_HEIGHT customdrawndrawers/tcdcheckbox_square_height.html + TCDRADIOBUTTON_CIRCLE_HEIGHT customdrawndrawers/tcdradiobutton_circle_height.html + TCDCOMBOBOX_DEFAULT_HEIGHT customdrawndrawers/tcdcombobox_default_height.html + TCDSCROLLBAR_BUTTON_WIDTH customdrawndrawers/tcdscrollbar_button_width.html + TCDSCROLLBAR_LEFT_SPACING customdrawndrawers/tcdscrollbar_left_spacing.html + TCDSCROLLBAR_RIGHT_SPACING customdrawndrawers/tcdscrollbar_right_spacing.html + TCDSCROLLBAR_LEFT_BUTTON_POS customdrawndrawers/tcdscrollbar_left_button_pos.html + TCDSCROLLBAR_RIGHT_BUTTON_POS customdrawndrawers/tcdscrollbar_right_button_pos.html + TCDTRACKBAR_LEFT_SPACING customdrawndrawers/tcdtrackbar_left_spacing.html + TCDTRACKBAR_RIGHT_SPACING customdrawndrawers/tcdtrackbar_right_spacing.html + TCDTRACKBAR_TOP_SPACING customdrawndrawers/tcdtrackbar_top_spacing.html + TCDTRACKBAR_FRAME_HEIGHT customdrawndrawers/tcdtrackbar_frame_height.html + TCDLISTVIEW_COLUMN_LEFT_SPACING customdrawndrawers/tcdlistview_column_left_spacing.html + TCDLISTVIEW_COLUMN_RIGHT_SPACING customdrawndrawers/tcdlistview_column_right_spacing.html + TCDLISTVIEW_COLUMN_TEXT_LEFT_SPACING customdrawndrawers/tcdlistview_column_text_left_spacing.html + TCDLISTVIEW_LINE_TOP_SPACING customdrawndrawers/tcdlistview_line_top_spacing.html + TCDLISTVIEW_LINE_BOTTOM_SPACING customdrawndrawers/tcdlistview_line_bottom_spacing.html + TCDTOOLBAR_ITEM_SPACING customdrawndrawers/tcdtoolbar_item_spacing.html + TCDTOOLBAR_ITEM_ARROW_WIDTH customdrawndrawers/tcdtoolbar_item_arrow_width.html + TCDTOOLBAR_ITEM_BUTTON_DEFAULT_WIDTH customdrawndrawers/tcdtoolbar_item_button_default_width.html + TCDTOOLBAR_ITEM_ARROW_RESERVED_WIDTH customdrawndrawers/tcdtoolbar_item_arrow_reserved_width.html + TCDTOOLBAR_ITEM_SEPARATOR_DEFAULT_WIDTH customdrawndrawers/tcdtoolbar_item_separator_default_width.html + TCDTOOLBAR_DEFAULT_HEIGHT customdrawndrawers/tcdtoolbar_default_height.html + TCDCTABCONTROL_CLOSE_TAB_BUTTON_WIDTH customdrawndrawers/tcdctabcontrol_close_tab_button_width.html + TCDCTABCONTROL_CLOSE_TAB_BUTTON_EXTRA_SPACING customdrawndrawers/tcdctabcontrol_close_tab_button_extra_spacing.html + TCDCONTROL_CAPTION_WIDTH customdrawndrawers/tcdcontrol_caption_width.html + TCDCONTROL_CAPTION_HEIGHT customdrawndrawers/tcdcontrol_caption_height.html + TCDCTABCONTROL_TAB_HEIGHT customdrawndrawers/tcdctabcontrol_tab_height.html + TCDCTABCONTROL_TAB_WIDTH customdrawndrawers/tcdctabcontrol_tab_width.html + TCDCTABCONTROL_TAB_LEFT_POS customdrawndrawers/tcdctabcontrol_tab_left_pos.html + TCDCTABCONTROL_CLOSE_BUTTON_POS_X customdrawndrawers/tcdctabcontrol_close_button_pos_x.html + TCDCTABCONTROL_CLOSE_BUTTON_POS_Y customdrawndrawers/tcdctabcontrol_close_button_pos_y.html + TCDEDIT_BACKGROUND_COLOR customdrawndrawers/tcdedit_background_color.html + TCDEDIT_TEXT_COLOR customdrawndrawers/tcdedit_text_color.html + TCDEDIT_SELECTED_BACKGROUND_COLOR customdrawndrawers/tcdedit_selected_background_color.html + TCDEDIT_SELECTED_TEXT_COLOR customdrawndrawers/tcdedit_selected_text_color.html + TCDBUTTON_DEFAULT_COLOR customdrawndrawers/tcdbutton_default_color.html + TCDDrawStyle customdrawndrawers/tcddrawstyle.html + TCDControlStateFlag customdrawndrawers/tcdcontrolstateflag.html + TCDControlState customdrawndrawers/tcdcontrolstate.html + TCDToolbarItemKind customdrawndrawers/tcdtoolbaritemkind.html + TCDToolbarItemSubpartKind customdrawndrawers/tcdtoolbaritemsubpartkind.html + TCDControlID customdrawndrawers/tcdcontrolid.html + TCDPaletteKind customdrawndrawers/tcdpalettekind.html + TCDControlStateEx customdrawndrawers/tcdcontrolstateex.html + ParentRGBColor customdrawndrawers/tcdcontrolstateex.parentrgbcolor.html + FPParentRGBColor customdrawndrawers/tcdcontrolstateex.fpparentrgbcolor.html + RGBColor customdrawndrawers/tcdcontrolstateex.rgbcolor.html + FPRGBColor customdrawndrawers/tcdcontrolstateex.fprgbcolor.html + Caption customdrawndrawers/tcdcontrolstateex.caption.html + Font customdrawndrawers/tcdcontrolstateex.font.html + AutoSize customdrawndrawers/tcdcontrolstateex.autosize.html + TCDButtonStateEx customdrawndrawers/tcdbuttonstateex.html + Glyph customdrawndrawers/tcdbuttonstateex.glyph.html + TCDEditStateEx customdrawndrawers/tcdeditstateex.html + CaretIsVisible customdrawndrawers/tcdeditstateex.caretisvisible.html + CaretPos customdrawndrawers/tcdeditstateex.caretpos.html + SelStart customdrawndrawers/tcdeditstateex.selstart.html + SelLength customdrawndrawers/tcdeditstateex.sellength.html + VisibleTextStart customdrawndrawers/tcdeditstateex.visibletextstart.html + EventArrived customdrawndrawers/tcdeditstateex.eventarrived.html + MultiLine customdrawndrawers/tcdeditstateex.multiline.html + Lines customdrawndrawers/tcdeditstateex.lines.html + FullyVisibleLinesCount customdrawndrawers/tcdeditstateex.fullyvisiblelinescount.html + LineHeight customdrawndrawers/tcdeditstateex.lineheight.html + PasswordChar customdrawndrawers/tcdeditstateex.passwordchar.html + LeftTextMargin customdrawndrawers/tcdeditstateex.lefttextmargin.html + RightTextMargin customdrawndrawers/tcdeditstateex.righttextmargin.html + ExtraButtonState customdrawndrawers/tcdeditstateex.extrabuttonstate.html + TCDPanelStateEx customdrawndrawers/tcdpanelstateex.html + BevelInner customdrawndrawers/tcdpanelstateex.bevelinner.html + BevelOuter customdrawndrawers/tcdpanelstateex.bevelouter.html + BevelWidth customdrawndrawers/tcdpanelstateex.bevelwidth.html + TCDPositionedCStateEx customdrawndrawers/tcdpositionedcstateex.html + PosCount customdrawndrawers/tcdpositionedcstateex.poscount.html + Position customdrawndrawers/tcdpositionedcstateex.position.html + FloatPos customdrawndrawers/tcdpositionedcstateex.floatpos.html + FloatPageSize customdrawndrawers/tcdpositionedcstateex.floatpagesize.html + TCDProgressBarStateEx customdrawndrawers/tcdprogressbarstateex.html + BarShowText customdrawndrawers/tcdprogressbarstateex.barshowtext.html + PercentPosition customdrawndrawers/tcdprogressbarstateex.percentposition.html + Smooth customdrawndrawers/tcdprogressbarstateex.smooth.html + Style customdrawndrawers/tcdprogressbarstateex.style.html + TCDListItems customdrawndrawers/tcdlistitems.html + Caption customdrawndrawers/tcdlistitems.caption.html + ImageIndex customdrawndrawers/tcdlistitems.imageindex.html + StateIndex customdrawndrawers/tcdlistitems.stateindex.html + Childs customdrawndrawers/tcdlistitems.childs.html + Create customdrawndrawers/tcdlistitems.create.html + Destroy customdrawndrawers/tcdlistitems.destroy.html + Add customdrawndrawers/tcdlistitems.add.html + GetItem customdrawndrawers/tcdlistitems.getitem.html + GetItemCount customdrawndrawers/tcdlistitems.getitemcount.html + TCDListViewStateEx customdrawndrawers/tcdlistviewstateex.html + Columns customdrawndrawers/tcdlistviewstateex.columns.html + Items customdrawndrawers/tcdlistviewstateex.items.html + ViewStyle customdrawndrawers/tcdlistviewstateex.viewstyle.html + FirstVisibleColumn customdrawndrawers/tcdlistviewstateex.firstvisiblecolumn.html + FirstVisibleLine customdrawndrawers/tcdlistviewstateex.firstvisibleline.html + ShowColumnHeader customdrawndrawers/tcdlistviewstateex.showcolumnheader.html + TCDToolBarItem customdrawndrawers/tcdtoolbaritem.html + Kind customdrawndrawers/tcdtoolbaritem.kind.html + SubpartKind customdrawndrawers/tcdtoolbaritem.subpartkind.html + Image customdrawndrawers/tcdtoolbaritem.image.html + Caption customdrawndrawers/tcdtoolbaritem.caption.html + Width customdrawndrawers/tcdtoolbaritem.width.html + Down customdrawndrawers/tcdtoolbaritem.down.html + State customdrawndrawers/tcdtoolbaritem.state.html + TCDToolBarStateEx customdrawndrawers/tcdtoolbarstateex.html + ShowCaptions customdrawndrawers/tcdtoolbarstateex.showcaptions.html + IsVertical customdrawndrawers/tcdtoolbarstateex.isvertical.html + Items customdrawndrawers/tcdtoolbarstateex.items.html + ToolBarHeight customdrawndrawers/tcdtoolbarstateex.toolbarheight.html + TCDCTabControlStateEx customdrawndrawers/tcdctabcontrolstateex.html + LeftmostTabVisibleIndex customdrawndrawers/tcdctabcontrolstateex.leftmosttabvisibleindex.html + Tabs customdrawndrawers/tcdctabcontrolstateex.tabs.html + TabIndex customdrawndrawers/tcdctabcontrolstateex.tabindex.html + TabCount customdrawndrawers/tcdctabcontrolstateex.tabcount.html + Options customdrawndrawers/tcdctabcontrolstateex.options.html + CurTabIndex customdrawndrawers/tcdctabcontrolstateex.curtabindex.html + CurStartLeftPos customdrawndrawers/tcdctabcontrolstateex.curstartleftpos.html + TCDSpinStateEx customdrawndrawers/tcdspinstateex.html + Min customdrawndrawers/tcdspinstateex.min.html + Increment customdrawndrawers/tcdspinstateex.increment.html + FloatMin customdrawndrawers/tcdspinstateex.floatmin.html + FloatIncrement customdrawndrawers/tcdspinstateex.floatincrement.html + TCDColorPalette customdrawndrawers/tcdcolorpalette.html + ScrollBar customdrawndrawers/tcdcolorpalette.scrollbar.html + Background customdrawndrawers/tcdcolorpalette.background.html + ActiveCaption customdrawndrawers/tcdcolorpalette.activecaption.html + InactiveCaption customdrawndrawers/tcdcolorpalette.inactivecaption.html + Menu customdrawndrawers/tcdcolorpalette.menu.html + Window customdrawndrawers/tcdcolorpalette.window.html + WindowFrame customdrawndrawers/tcdcolorpalette.windowframe.html + MenuText customdrawndrawers/tcdcolorpalette.menutext.html + WindowText customdrawndrawers/tcdcolorpalette.windowtext.html + CaptionText customdrawndrawers/tcdcolorpalette.captiontext.html + ActiveBorder customdrawndrawers/tcdcolorpalette.activeborder.html + InactiveBorder customdrawndrawers/tcdcolorpalette.inactiveborder.html + AppWorkspace customdrawndrawers/tcdcolorpalette.appworkspace.html + Highlight customdrawndrawers/tcdcolorpalette.highlight.html + HighlightText customdrawndrawers/tcdcolorpalette.highlighttext.html + BtnFace customdrawndrawers/tcdcolorpalette.btnface.html + BtnShadow customdrawndrawers/tcdcolorpalette.btnshadow.html + GrayText customdrawndrawers/tcdcolorpalette.graytext.html + BtnText customdrawndrawers/tcdcolorpalette.btntext.html + InactiveCaptionText customdrawndrawers/tcdcolorpalette.inactivecaptiontext.html + BtnHighlight customdrawndrawers/tcdcolorpalette.btnhighlight.html + color3DDkShadow customdrawndrawers/tcdcolorpalette.color3ddkshadow.html + color3DLight customdrawndrawers/tcdcolorpalette.color3dlight.html + InfoText customdrawndrawers/tcdcolorpalette.infotext.html + InfoBk customdrawndrawers/tcdcolorpalette.infobk.html + HotLight customdrawndrawers/tcdcolorpalette.hotlight.html + GradientActiveCaption customdrawndrawers/tcdcolorpalette.gradientactivecaption.html + GradientInactiveCaption customdrawndrawers/tcdcolorpalette.gradientinactivecaption.html + MenuHighlight customdrawndrawers/tcdcolorpalette.menuhighlight.html + MenuBar customdrawndrawers/tcdcolorpalette.menubar.html + Form customdrawndrawers/tcdcolorpalette.form.html + Assign customdrawndrawers/tcdcolorpalette.assign.html + TCDDrawer customdrawndrawers/tcddrawer.html + Palette customdrawndrawers/tcddrawer.palette.html + FallbackPalette customdrawndrawers/tcddrawer.fallbackpalette.html + PaletteKind customdrawndrawers/tcddrawer.palettekind.html + Create customdrawndrawers/tcddrawer.create.html + Destroy customdrawndrawers/tcddrawer.destroy.html + CreateResources customdrawndrawers/tcddrawer.createresources.html + LoadResources customdrawndrawers/tcddrawer.loadresources.html + FreeResources customdrawndrawers/tcddrawer.freeresources.html + ScaleRasterImage customdrawndrawers/tcddrawer.scalerasterimage.html + LoadPalette customdrawndrawers/tcddrawer.loadpalette.html + LoadNativePaletteColors customdrawndrawers/tcddrawer.loadnativepalettecolors.html + LoadFallbackPaletteColors customdrawndrawers/tcddrawer.loadfallbackpalettecolors.html + PalDefaultUsesNativePalette customdrawndrawers/tcddrawer.paldefaultusesnativepalette.html + GetDrawStyle customdrawndrawers/tcddrawer.getdrawstyle.html + VisibleText customdrawndrawers/tcddrawer.visibletext.html + GetControlDefaultColor customdrawndrawers/tcddrawer.getcontroldefaultcolor.html + GetMeasures customdrawndrawers/tcddrawer.getmeasures.html + GetMeasuresEx customdrawndrawers/tcddrawer.getmeasuresex.html + CalculatePreferredSize customdrawndrawers/tcddrawer.calculatepreferredsize.html + GetColor customdrawndrawers/tcddrawer.getcolor.html + GetClientArea customdrawndrawers/tcddrawer.getclientarea.html + DrawControl customdrawndrawers/tcddrawer.drawcontrol.html + DrawFocusRect customdrawndrawers/tcddrawer.drawfocusrect.html + DrawRaisedFrame customdrawndrawers/tcddrawer.drawraisedframe.html + DrawFrame3D customdrawndrawers/tcddrawer.drawframe3d.html + DrawSunkenFrame customdrawndrawers/tcddrawer.drawsunkenframe.html + DrawShallowSunkenFrame customdrawndrawers/tcddrawer.drawshallowsunkenframe.html + DrawTickmark customdrawndrawers/tcddrawer.drawtickmark.html + DrawSlider customdrawndrawers/tcddrawer.drawslider.html + DrawArrow customdrawndrawers/tcddrawer.drawarrow.html + DrawSmallCloseButton customdrawndrawers/tcddrawer.drawsmallclosebutton.html + DrawButtonWithArrow customdrawndrawers/tcddrawer.drawbuttonwitharrow.html + DrawButton customdrawndrawers/tcddrawer.drawbutton.html + DrawEditBackground customdrawndrawers/tcddrawer.draweditbackground.html + DrawEditFrame customdrawndrawers/tcddrawer.draweditframe.html + DrawCaret customdrawndrawers/tcddrawer.drawcaret.html + DrawEdit customdrawndrawers/tcddrawer.drawedit.html + DrawCheckBoxSquare customdrawndrawers/tcddrawer.drawcheckboxsquare.html + DrawCheckBox customdrawndrawers/tcddrawer.drawcheckbox.html + DrawRadioButtonCircle customdrawndrawers/tcddrawer.drawradiobuttoncircle.html + DrawRadioButton customdrawndrawers/tcddrawer.drawradiobutton.html + DrawComboBox customdrawndrawers/tcddrawer.drawcombobox.html + DrawScrollBar customdrawndrawers/tcddrawer.drawscrollbar.html + DrawGroupBox customdrawndrawers/tcddrawer.drawgroupbox.html + DrawPanel customdrawndrawers/tcddrawer.drawpanel.html + DrawStaticText customdrawndrawers/tcddrawer.drawstatictext.html + DrawTrackBar customdrawndrawers/tcddrawer.drawtrackbar.html + DrawProgressBar customdrawndrawers/tcddrawer.drawprogressbar.html + DrawListView customdrawndrawers/tcddrawer.drawlistview.html + DrawReportListView customdrawndrawers/tcddrawer.drawreportlistview.html + DrawReportListViewItem customdrawndrawers/tcddrawer.drawreportlistviewitem.html + DrawToolBar customdrawndrawers/tcddrawer.drawtoolbar.html + DrawToolBarItem customdrawndrawers/tcddrawer.drawtoolbaritem.html + DrawCTabControl customdrawndrawers/tcddrawer.drawctabcontrol.html + DrawCTabControlFrame customdrawndrawers/tcddrawer.drawctabcontrolframe.html + DrawTabSheet customdrawndrawers/tcddrawer.drawtabsheet.html + DrawTabs customdrawndrawers/tcddrawer.drawtabs.html + DrawTab customdrawndrawers/tcddrawer.drawtab.html + DrawSpinEdit customdrawndrawers/tcddrawer.drawspinedit.html + RegisterDrawer customdrawndrawers/registerdrawer.html + GetDefaultDrawer customdrawndrawers/getdefaultdrawer.html + GetDrawer customdrawndrawers/getdrawer.html + DefaultStyle customdrawndrawers/defaultstyle.html + CustomDrawnControls customdrawncontrols/index.html + TCDControlClass customdrawncontrols/tcdcontrolclass.html + TKeyboardInputBehavior customdrawncontrols/tkeyboardinputbehavior.html + TOnUserAddedPage customdrawncontrols/tonuseraddedpage.html + TCDControl customdrawncontrols/tcdcontrol.html + FDrawStyle customdrawncontrols/tcdcontrol.fdrawstyle.html + FDrawer customdrawncontrols/tcdcontrol.fdrawer.html + FState customdrawncontrols/tcdcontrol.fstate.html + FStateEx customdrawncontrols/tcdcontrol.fstateex.html + CalculatePreferredSize customdrawncontrols/tcdcontrol.calculatepreferredsize.html + SetState customdrawncontrols/tcdcontrol.setstate.html + PrepareCurrentDrawer customdrawncontrols/tcdcontrol.preparecurrentdrawer.html + SetDrawStyle customdrawncontrols/tcdcontrol.setdrawstyle.html + GetClientRect customdrawncontrols/tcdcontrol.getclientrect.html + GetControlId customdrawncontrols/tcdcontrol.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdcontrol.createcontrolstateex.html + PrepareControlState customdrawncontrols/tcdcontrol.preparecontrolstate.html + PrepareControlStateEx customdrawncontrols/tcdcontrol.preparecontrolstateex.html + DoEnter customdrawncontrols/tcdcontrol.doenter.html + DoExit customdrawncontrols/tcdcontrol.doexit.html + MouseEnter customdrawncontrols/tcdcontrol.mouseenter.html + MouseLeave customdrawncontrols/tcdcontrol.mouseleave.html + MouseDown customdrawncontrols/tcdcontrol.mousedown.html + DrawStyle customdrawncontrols/tcdcontrol.drawstyle.html + Create customdrawncontrols/tcdcontrol.create.html + Destroy customdrawncontrols/tcdcontrol.destroy.html + LCLWSCalculatePreferredSize customdrawncontrols/tcdcontrol.lclwscalculatepreferredsize.html + EraseBackground customdrawncontrols/tcdcontrol.erasebackground.html + Paint customdrawncontrols/tcdcontrol.paint.html + DrawToCanvas customdrawncontrols/tcdcontrol.drawtocanvas.html + TCDScrollableControl customdrawncontrols/tcdscrollablecontrol.html + Create customdrawncontrols/tcdscrollablecontrol.create.html + Destroy customdrawncontrols/tcdscrollablecontrol.destroy.html + ScrollBars customdrawncontrols/tcdscrollablecontrol.scrollbars.html + TCDButtonControl customdrawncontrols/tcdbuttoncontrol.html + FHasOnOffStates customdrawncontrols/tcdbuttoncontrol.fhasonoffstates.html + FIsGrouped customdrawncontrols/tcdbuttoncontrol.fisgrouped.html + FGroupIndex customdrawncontrols/tcdbuttoncontrol.fgroupindex.html + FAllowGrayed customdrawncontrols/tcdbuttoncontrol.fallowgrayed.html + KeyDown customdrawncontrols/tcdbuttoncontrol.keydown.html + KeyUp customdrawncontrols/tcdbuttoncontrol.keyup.html + MouseDown customdrawncontrols/tcdbuttoncontrol.mousedown.html + MouseUp customdrawncontrols/tcdbuttoncontrol.mouseup.html + MouseEnter customdrawncontrols/tcdbuttoncontrol.mouseenter.html + MouseLeave customdrawncontrols/tcdbuttoncontrol.mouseleave.html + DoUncheckButton customdrawncontrols/tcdbuttoncontrol.douncheckbutton.html + DoCheckIfFirstButtonInGroup customdrawncontrols/tcdbuttoncontrol.docheckiffirstbuttoningroup.html + DoButtonDown customdrawncontrols/tcdbuttoncontrol.dobuttondown.html + DoButtonUp customdrawncontrols/tcdbuttoncontrol.dobuttonup.html + RealSetText customdrawncontrols/tcdbuttoncontrol.realsettext.html + GetChecked customdrawncontrols/tcdbuttoncontrol.getchecked.html + SetChecked customdrawncontrols/tcdbuttoncontrol.setchecked.html + GetCheckedState customdrawncontrols/tcdbuttoncontrol.getcheckedstate.html + SetCheckedState customdrawncontrols/tcdbuttoncontrol.setcheckedstate.html + AllowGrayed customdrawncontrols/tcdbuttoncontrol.allowgrayed.html + Checked customdrawncontrols/tcdbuttoncontrol.checked.html + State customdrawncontrols/tcdbuttoncontrol.state.html + TCDButton customdrawncontrols/tcdbutton.html + FBState customdrawncontrols/tcdbutton.fbstate.html + Click customdrawncontrols/tcdbutton.click.html + GetControlId customdrawncontrols/tcdbutton.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdbutton.createcontrolstateex.html + PrepareControlStateEx customdrawncontrols/tcdbutton.preparecontrolstateex.html + Create customdrawncontrols/tcdbutton.create.html + Destroy customdrawncontrols/tcdbutton.destroy.html + Action customdrawncontrols/tcdbutton.action.html + Align customdrawncontrols/tcdbutton.align.html + Anchors customdrawncontrols/tcdbutton.anchors.html + AutoSize customdrawncontrols/tcdbutton.autosize.html + Caption customdrawncontrols/tcdbutton.caption.html + Color customdrawncontrols/tcdbutton.color.html + Constraints customdrawncontrols/tcdbutton.constraints.html + DrawStyle customdrawncontrols/tcdbutton.drawstyle.html + Enabled customdrawncontrols/tcdbutton.enabled.html + Font customdrawncontrols/tcdbutton.font.html + Glyph customdrawncontrols/tcdbutton.glyph.html + Kind customdrawncontrols/tcdbutton.kind.html + ModalResult customdrawncontrols/tcdbutton.modalresult.html + OnChangeBounds customdrawncontrols/tcdbutton.onchangebounds.html + OnClick customdrawncontrols/tcdbutton.onclick.html + OnContextPopup customdrawncontrols/tcdbutton.oncontextpopup.html + OnDragDrop customdrawncontrols/tcdbutton.ondragdrop.html + OnDragOver customdrawncontrols/tcdbutton.ondragover.html + OnEndDrag customdrawncontrols/tcdbutton.onenddrag.html + OnEnter customdrawncontrols/tcdbutton.onenter.html + OnExit customdrawncontrols/tcdbutton.onexit.html + OnKeyDown customdrawncontrols/tcdbutton.onkeydown.html + OnKeyPress customdrawncontrols/tcdbutton.onkeypress.html + OnKeyUp customdrawncontrols/tcdbutton.onkeyup.html + OnMouseDown customdrawncontrols/tcdbutton.onmousedown.html + OnMouseEnter customdrawncontrols/tcdbutton.onmouseenter.html + OnMouseLeave customdrawncontrols/tcdbutton.onmouseleave.html + OnMouseMove customdrawncontrols/tcdbutton.onmousemove.html + OnMouseUp customdrawncontrols/tcdbutton.onmouseup.html + OnMouseWheel customdrawncontrols/tcdbutton.onmousewheel.html + OnMouseWheelDown customdrawncontrols/tcdbutton.onmousewheeldown.html + OnMouseWheelUp customdrawncontrols/tcdbutton.onmousewheelup.html + OnResize customdrawncontrols/tcdbutton.onresize.html + OnStartDrag customdrawncontrols/tcdbutton.onstartdrag.html + OnUTF8KeyPress customdrawncontrols/tcdbutton.onutf8keypress.html + ParentFont customdrawncontrols/tcdbutton.parentfont.html + ParentShowHint customdrawncontrols/tcdbutton.parentshowhint.html + PopupMenu customdrawncontrols/tcdbutton.popupmenu.html + ShowHint customdrawncontrols/tcdbutton.showhint.html + TabOrder customdrawncontrols/tcdbutton.taborder.html + TabStop customdrawncontrols/tcdbutton.tabstop.html + Visible customdrawncontrols/tcdbutton.visible.html + TCDEdit customdrawncontrols/tcdedit.html + FEditState customdrawncontrols/tcdedit.feditstate.html + GetControlId customdrawncontrols/tcdedit.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdedit.createcontrolstateex.html + RealSetText customdrawncontrols/tcdedit.realsettext.html + DoChange customdrawncontrols/tcdedit.dochange.html + DoEnter customdrawncontrols/tcdedit.doenter.html + DoExit customdrawncontrols/tcdedit.doexit.html + KeyDown customdrawncontrols/tcdedit.keydown.html + KeyUp customdrawncontrols/tcdedit.keyup.html + UTF8KeyPress customdrawncontrols/tcdedit.utf8keypress.html + MouseDown customdrawncontrols/tcdedit.mousedown.html + MouseMove customdrawncontrols/tcdedit.mousemove.html + MouseUp customdrawncontrols/tcdedit.mouseup.html + MouseEnter customdrawncontrols/tcdedit.mouseenter.html + MouseLeave customdrawncontrols/tcdedit.mouseleave.html + Create customdrawncontrols/tcdedit.create.html + Destroy customdrawncontrols/tcdedit.destroy.html + GetCurrentLine customdrawncontrols/tcdedit.getcurrentline.html + SetCurrentLine customdrawncontrols/tcdedit.setcurrentline.html + LeftTextMargin customdrawncontrols/tcdedit.lefttextmargin.html + RightTextMargin customdrawncontrols/tcdedit.righttextmargin.html + GetSelStartX customdrawncontrols/tcdedit.getselstartx.html + GetSelLength customdrawncontrols/tcdedit.getsellength.html + SetSelStartX customdrawncontrols/tcdedit.setselstartx.html + SetSelLength customdrawncontrols/tcdedit.setsellength.html + CaretPos customdrawncontrols/tcdedit.caretpos.html + Align customdrawncontrols/tcdedit.align.html + Anchors customdrawncontrols/tcdedit.anchors.html + AutoSize customdrawncontrols/tcdedit.autosize.html + Color customdrawncontrols/tcdedit.color.html + DrawStyle customdrawncontrols/tcdedit.drawstyle.html + Enabled customdrawncontrols/tcdedit.enabled.html + Lines customdrawncontrols/tcdedit.lines.html + MultiLine customdrawncontrols/tcdedit.multiline.html + PasswordChar customdrawncontrols/tcdedit.passwordchar.html + ReadOnly customdrawncontrols/tcdedit.readonly.html + TabStop customdrawncontrols/tcdedit.tabstop.html + Text customdrawncontrols/tcdedit.text.html + OnChange customdrawncontrols/tcdedit.onchange.html + TCDCheckBox customdrawncontrols/tcdcheckbox.html + GetControlId customdrawncontrols/tcdcheckbox.getcontrolid.html + Create customdrawncontrols/tcdcheckbox.create.html + Destroy customdrawncontrols/tcdcheckbox.destroy.html + AllowGrayed customdrawncontrols/tcdcheckbox.allowgrayed.html + Checked customdrawncontrols/tcdcheckbox.checked.html + DrawStyle customdrawncontrols/tcdcheckbox.drawstyle.html + Caption customdrawncontrols/tcdcheckbox.caption.html + Enabled customdrawncontrols/tcdcheckbox.enabled.html + TabStop customdrawncontrols/tcdcheckbox.tabstop.html + State customdrawncontrols/tcdcheckbox.state.html + TCDRadioButton customdrawncontrols/tcdradiobutton.html + GetControlId customdrawncontrols/tcdradiobutton.getcontrolid.html + Create customdrawncontrols/tcdradiobutton.create.html + Destroy customdrawncontrols/tcdradiobutton.destroy.html + Caption customdrawncontrols/tcdradiobutton.caption.html + Checked customdrawncontrols/tcdradiobutton.checked.html + DrawStyle customdrawncontrols/tcdradiobutton.drawstyle.html + Enabled customdrawncontrols/tcdradiobutton.enabled.html + TabStop customdrawncontrols/tcdradiobutton.tabstop.html + TCDComboBox customdrawncontrols/tcdcombobox.html + GetControlId customdrawncontrols/tcdedit.getcontrolid.html + MouseDown customdrawncontrols/tcdedit.mousedown.html + MouseUp customdrawncontrols/tcdedit.mouseup.html + Create customdrawncontrols/tcdedit.create.html + Destroy customdrawncontrols/tcdedit.destroy.html + Items customdrawncontrols/tcdcombobox.items.html + ItemIndex customdrawncontrols/tcdcombobox.itemindex.html + KeyboardInputBehavior customdrawncontrols/tcdcombobox.keyboardinputbehavior.html + TCDPositionedControl customdrawncontrols/tcdpositionedcontrol.html + FSmallChange customdrawncontrols/tcdpositionedcontrol.fsmallchange.html + FLargeChange customdrawncontrols/tcdpositionedcontrol.flargechange.html + FPCState customdrawncontrols/tcdpositionedcontrol.fpcstate.html + FMoveByDragging customdrawncontrols/tcdpositionedcontrol.fmovebydragging.html + GetPositionFromMousePosWithMargins customdrawncontrols/tcdpositionedcontrol.getpositionfrommouseposwithmargins.html + GetPositionFromMousePos customdrawncontrols/tcdpositionedcontrol.getpositionfrommousepos.html + GetPositionDisplacementWithMargins customdrawncontrols/tcdpositionedcontrol.getpositiondisplacementwithmargins.html + GetPositionDisplacement customdrawncontrols/tcdpositionedcontrol.getpositiondisplacement.html + GetButtonFromMousePos customdrawncontrols/tcdpositionedcontrol.getbuttonfrommousepos.html + CreateControlStateEx customdrawncontrols/tcdpositionedcontrol.createcontrolstateex.html + PrepareControlStateEx customdrawncontrols/tcdpositionedcontrol.preparecontrolstateex.html + KeyDown customdrawncontrols/tcdpositionedcontrol.keydown.html + MouseDown customdrawncontrols/tcdpositionedcontrol.mousedown.html + MouseMove customdrawncontrols/tcdpositionedcontrol.mousemove.html + MouseUp customdrawncontrols/tcdpositionedcontrol.mouseup.html + PageSize customdrawncontrols/tcdpositionedcontrol.pagesize.html + Create customdrawncontrols/tcdpositionedcontrol.create.html + Destroy customdrawncontrols/tcdpositionedcontrol.destroy.html + Max customdrawncontrols/tcdpositionedcontrol.max.html + Min customdrawncontrols/tcdpositionedcontrol.min.html + OnChange customdrawncontrols/tcdpositionedcontrol.onchange.html + OnChangeByUser customdrawncontrols/tcdpositionedcontrol.onchangebyuser.html + Position customdrawncontrols/tcdpositionedcontrol.position.html + TCDScrollBar customdrawncontrols/tcdscrollbar.html + GetPositionFromMousePos customdrawncontrols/tcdscrollbar.getpositionfrommousepos.html + GetButtonFromMousePos customdrawncontrols/tcdscrollbar.getbuttonfrommousepos.html + GetPositionDisplacement customdrawncontrols/tcdscrollbar.getpositiondisplacement.html + GetControlId customdrawncontrols/tcdscrollbar.getcontrolid.html + PrepareControlState customdrawncontrols/tcdscrollbar.preparecontrolstate.html + Create customdrawncontrols/tcdscrollbar.create.html + Destroy customdrawncontrols/tcdscrollbar.destroy.html + DrawStyle customdrawncontrols/tcdscrollbar.drawstyle.html + Enabled customdrawncontrols/tcdscrollbar.enabled.html + Kind customdrawncontrols/tcdscrollbar.kind.html + PageSize customdrawncontrols/tcdscrollbar.pagesize.html + TabStop customdrawncontrols/tcdscrollbar.tabstop.html + TCDGroupBox customdrawncontrols/tcdgroupbox.html + GetControlId customdrawncontrols/tcdgroupbox.getcontrolid.html + RealSetText customdrawncontrols/tcdgroupbox.realsettext.html + Create customdrawncontrols/tcdgroupbox.create.html + Destroy customdrawncontrols/tcdgroupbox.destroy.html + AutoSize customdrawncontrols/tcdgroupbox.autosize.html + Caption customdrawncontrols/tcdgroupbox.caption.html + DrawStyle customdrawncontrols/tcdgroupbox.drawstyle.html + Enabled customdrawncontrols/tcdgroupbox.enabled.html + TabStop customdrawncontrols/tcdgroupbox.tabstop.html + TCDPanel customdrawncontrols/tcdpanel.html + FPState customdrawncontrols/tcdpanel.fpstate.html + GetControlId customdrawncontrols/tcdpanel.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdpanel.createcontrolstateex.html + PrepareControlStateEx customdrawncontrols/tcdpanel.preparecontrolstateex.html + RealSetText customdrawncontrols/tcdpanel.realsettext.html + Create customdrawncontrols/tcdpanel.create.html + Destroy customdrawncontrols/tcdpanel.destroy.html + BevelInner customdrawncontrols/tcdpanel.bevelinner.html + BevelOuter customdrawncontrols/tcdpanel.bevelouter.html + BevelWidth customdrawncontrols/tcdpanel.bevelwidth.html + Caption customdrawncontrols/tcdpanel.caption.html + DrawStyle customdrawncontrols/tcdpanel.drawstyle.html + Enabled customdrawncontrols/tcdpanel.enabled.html + TabStop customdrawncontrols/tcdpanel.tabstop.html + TCDStaticText customdrawncontrols/tcdstatictext.html + GetControlId customdrawncontrols/tcdstatictext.getcontrolid.html + RealSetText customdrawncontrols/tcdstatictext.realsettext.html + Create customdrawncontrols/tcdstatictext.create.html + Destroy customdrawncontrols/tcdstatictext.destroy.html + Caption customdrawncontrols/tcdstatictext.caption.html + DrawStyle customdrawncontrols/tcdstatictext.drawstyle.html + Enabled customdrawncontrols/tcdstatictext.enabled.html + TabStop customdrawncontrols/tcdstatictext.tabstop.html + TCDTrackBar customdrawncontrols/tcdtrackbar.html + GetPositionFromMousePos customdrawncontrols/tcdtrackbar.getpositionfrommousepos.html + GetPositionDisplacement customdrawncontrols/tcdtrackbar.getpositiondisplacement.html + GetControlId customdrawncontrols/tcdtrackbar.getcontrolid.html + PrepareControlState customdrawncontrols/tcdtrackbar.preparecontrolstate.html + Create customdrawncontrols/tcdtrackbar.create.html + Destroy customdrawncontrols/tcdtrackbar.destroy.html + Align customdrawncontrols/tcdtrackbar.align.html + Color customdrawncontrols/tcdtrackbar.color.html + DrawStyle customdrawncontrols/tcdtrackbar.drawstyle.html + Enabled customdrawncontrols/tcdtrackbar.enabled.html + Orientation customdrawncontrols/tcdtrackbar.orientation.html + TabStop customdrawncontrols/tcdtrackbar.tabstop.html + TCDProgressBar customdrawncontrols/tcdprogressbar.html + FPBState customdrawncontrols/tcdprogressbar.fpbstate.html + GetControlId customdrawncontrols/tcdprogressbar.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdprogressbar.createcontrolstateex.html + PrepareControlStateEx customdrawncontrols/tcdprogressbar.preparecontrolstateex.html + Create customdrawncontrols/tcdprogressbar.create.html + Destroy customdrawncontrols/tcdprogressbar.destroy.html + BarShowText customdrawncontrols/tcdprogressbar.barshowtext.html + Color customdrawncontrols/tcdprogressbar.color.html + DrawStyle customdrawncontrols/tcdprogressbar.drawstyle.html + Enabled customdrawncontrols/tcdprogressbar.enabled.html + Max customdrawncontrols/tcdprogressbar.max.html + Min customdrawncontrols/tcdprogressbar.min.html + OnChange customdrawncontrols/tcdprogressbar.onchange.html + Orientation customdrawncontrols/tcdprogressbar.orientation.html + Position customdrawncontrols/tcdprogressbar.position.html + Smooth customdrawncontrols/tcdprogressbar.smooth.html + Style customdrawncontrols/tcdprogressbar.style.html + TCDListView customdrawncontrols/tcdlistview.html + FLVState customdrawncontrols/tcdlistview.flvstate.html + GetControlId customdrawncontrols/tcdlistview.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdlistview.createcontrolstateex.html + PrepareControlStateEx customdrawncontrols/tcdlistview.preparecontrolstateex.html + Create customdrawncontrols/tcdlistview.create.html + Destroy customdrawncontrols/tcdlistview.destroy.html + Color customdrawncontrols/tcdlistview.color.html + TabStop customdrawncontrols/tcdlistview.tabstop.html + Columns customdrawncontrols/tcdlistview.columns.html + Enabled customdrawncontrols/tcdlistview.enabled.html + Items customdrawncontrols/tcdlistview.items.html + ScrollBars customdrawncontrols/tcdlistview.scrollbars.html + ShowColumnHeader customdrawncontrols/tcdlistview.showcolumnheader.html + ViewStyle customdrawncontrols/tcdlistview.viewstyle.html + TCDToolBar customdrawncontrols/tcdtoolbar.html + FTBState customdrawncontrols/tcdtoolbar.ftbstate.html + GetControlId customdrawncontrols/tcdcontrol.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdcontrol.createcontrolstateex.html + PrepareControlStateEx customdrawncontrols/tcdcontrol.preparecontrolstateex.html + MouseMove customdrawncontrols/tcdtoolbar.mousemove.html + MouseDown customdrawncontrols/tcdcontrol.mousedown.html + MouseUp customdrawncontrols/tcdtoolbar.mouseup.html + MouseLeave customdrawncontrols/tcdcontrol.mouseleave.html + Create customdrawncontrols/tcdcontrol.create.html + Destroy customdrawncontrols/tcdcontrol.destroy.html + InsertItem customdrawncontrols/tcdtoolbar.insertitem.html + AddItem customdrawncontrols/tcdtoolbar.additem.html + DeleteItem customdrawncontrols/tcdtoolbar.deleteitem.html + GetItem customdrawncontrols/tcdtoolbar.getitem.html + GetItemCount customdrawncontrols/tcdtoolbar.getitemcount.html + GetItemWithMousePos customdrawncontrols/tcdtoolbar.getitemwithmousepos.html + IsPosInButton customdrawncontrols/tcdtoolbar.isposinbutton.html + ShowCaptions customdrawncontrols/tcdtoolbar.showcaptions.html + DrawStyle customdrawncontrols/tcdcontrol.drawstyle.html + TCDTabSheet customdrawncontrols/tcdtabsheet.html + RealSetText customdrawncontrols/tcdtabsheet.realsettext.html + SetParent customdrawncontrols/tcdtabsheet.setparent.html + Create customdrawncontrols/tcdtabsheet.create.html + Destroy customdrawncontrols/tcdtabsheet.destroy.html + EraseBackground customdrawncontrols/tcdtabsheet.erasebackground.html + Paint customdrawncontrols/tcdtabsheet.paint.html + Caption customdrawncontrols/tcdtabsheet.caption.html + Color customdrawncontrols/tcdtabsheet.color.html + Font customdrawncontrols/tcdtabsheet.font.html + TabVisible customdrawncontrols/tcdtabsheet.tabvisible.html + TCDCustomTabControl customdrawncontrols/tcdcustomtabcontrol.html + FTabCState customdrawncontrols/tcdcustomtabcontrol.ftabcstate.html + GetControlId customdrawncontrols/tcdcustomtabcontrol.getcontrolid.html + CreateControlStateEx customdrawncontrols/tcdcustomtabcontrol.createcontrolstateex.html + PrepareControlStateEx customdrawncontrols/tcdcustomtabcontrol.preparecontrolstateex.html + CorrectTabIndex customdrawncontrols/tcdcustomtabcontrol.correcttabindex.html + MouseDown customdrawncontrols/tcdcustomtabcontrol.mousedown.html + MouseUp customdrawncontrols/tcdcustomtabcontrol.mouseup.html + Options customdrawncontrols/tcdcustomtabcontrol.options.html + Create customdrawncontrols/tcdcustomtabcontrol.create.html + Destroy customdrawncontrols/tcdcustomtabcontrol.destroy.html + GetTabCount customdrawncontrols/tcdcustomtabcontrol.gettabcount.html + Tabs customdrawncontrols/tcdcustomtabcontrol.tabs.html + OnChanging customdrawncontrols/tcdcustomtabcontrol.onchanging.html + OnChange customdrawncontrols/tcdcustomtabcontrol.onchange.html + OnUserAddedPage customdrawncontrols/tcdcustomtabcontrol.onuseraddedpage.html + TabIndex customdrawncontrols/tcdcustomtabcontrol.tabindex.html + TCDTabControl customdrawncontrols/tcdtabcontrol.html + Color customdrawncontrols/tcdtabcontrol.color.html + Enabled customdrawncontrols/tcdtabcontrol.enabled.html + Font customdrawncontrols/tcdtabcontrol.font.html + Tabs customdrawncontrols/tcdtabcontrol.tabs.html + TabIndex customdrawncontrols/tcdtabcontrol.tabindex.html + OnChanging customdrawncontrols/tcdtabcontrol.onchanging.html + OnChange customdrawncontrols/tcdtabcontrol.onchange.html + OnUserAddedPage customdrawncontrols/tcdtabcontrol.onuseraddedpage.html + TCDPageControl customdrawncontrols/tcdpagecontrol.html + Create customdrawncontrols/tcdpagecontrol.create.html + Destroy customdrawncontrols/tcdpagecontrol.destroy.html + InsertPage customdrawncontrols/tcdpagecontrol.insertpage.html + RemovePage customdrawncontrols/tcdpagecontrol.removepage.html + AddPage customdrawncontrols/tcdpagecontrol.addpage.html + GetPage customdrawncontrols/tcdpagecontrol.getpage.html + PageCount customdrawncontrols/tcdpagecontrol.pagecount.html + FindNextPage customdrawncontrols/tcdpagecontrol.findnextpage.html + SelectNextPage customdrawncontrols/tcdpagecontrol.selectnextpage.html + Align customdrawncontrols/tcdpagecontrol.align.html + ActivePage customdrawncontrols/tcdpagecontrol.activepage.html + DrawStyle customdrawncontrols/tcdpagecontrol.drawstyle.html + Caption customdrawncontrols/tcdpagecontrol.caption.html + Color customdrawncontrols/tcdpagecontrol.color.html + Enabled customdrawncontrols/tcdpagecontrol.enabled.html + Font customdrawncontrols/tcdpagecontrol.font.html + PageIndex customdrawncontrols/tcdpagecontrol.pageindex.html + Options customdrawncontrols/tcdpagecontrol.options.html + ParentColor customdrawncontrols/tcdpagecontrol.parentcolor.html + ParentFont customdrawncontrols/tcdpagecontrol.parentfont.html + TabStop customdrawncontrols/tcdpagecontrol.tabstop.html + TabIndex customdrawncontrols/tcdpagecontrol.tabindex.html + OnChanging customdrawncontrols/tcdpagecontrol.onchanging.html + OnChange customdrawncontrols/tcdpagecontrol.onchange.html + OnUserAddedPage customdrawncontrols/tcdpagecontrol.onuseraddedpage.html + TCDSpinEdit customdrawncontrols/tcdspinedit.html + DoChange customdrawncontrols/tcdspinedit.dochange.html + Create customdrawncontrols/tcdedit.create.html + Destroy customdrawncontrols/tcdedit.destroy.html + DecimalPlaces customdrawncontrols/tcdspinedit.decimalplaces.html + Increment customdrawncontrols/tcdspinedit.increment.html + MinValue customdrawncontrols/tcdspinedit.minvalue.html + MaxValue customdrawncontrols/tcdspinedit.maxvalue.html + Value customdrawncontrols/tcdspinedit.value.html + LazDeviceApis lazdeviceapis/index.html + TLazDeviceMessageKind lazdeviceapis/tlazdevicemessagekind.html + TLazMessagingStatus lazdeviceapis/tlazmessagingstatus.html + TOnMessagingStatus lazdeviceapis/tonmessagingstatus.html + TLazPositionMethod lazdeviceapis/tlazpositionmethod.html + TScreenRotation lazdeviceapis/tscreenrotation.html + TLazAccelerometer lazdeviceapis/tlazaccelerometer.html + xaxis lazdeviceapis/tlazaccelerometer.xaxis.html + yaxis lazdeviceapis/tlazaccelerometer.yaxis.html + zaxis lazdeviceapis/tlazaccelerometer.zaxis.html + StartReadingAccelerometerData lazdeviceapis/tlazaccelerometer.startreadingaccelerometerdata.html + StopReadingAccelerometerData lazdeviceapis/tlazaccelerometer.stopreadingaccelerometerdata.html + OnSensorChanged lazdeviceapis/tlazaccelerometer.onsensorchanged.html + TLazDeviceMessage lazdeviceapis/tlazdevicemessage.html + bccAddress lazdeviceapis/tlazdevicemessage.bccaddress.html + Body lazdeviceapis/tlazdevicemessage.body.html + ccAddress lazdeviceapis/tlazdevicemessage.ccaddress.html + destinationAddress lazdeviceapis/tlazdevicemessage.destinationaddress.html + isRead lazdeviceapis/tlazdevicemessage.isread.html + messageId lazdeviceapis/tlazdevicemessage.messageid.html + messageType lazdeviceapis/tlazdevicemessage.messagetype.html + ReplyToAddress lazdeviceapis/tlazdevicemessage.replytoaddress.html + sourceAddress lazdeviceapis/tlazdevicemessage.sourceaddress.html + Subject lazdeviceapis/tlazdevicemessage.subject.html + Time lazdeviceapis/tlazdevicemessage.time.html + validityPeriod lazdeviceapis/tlazdevicemessage.validityperiod.html + Create lazdeviceapis/tlazdevicemessage.create.html + Destroy lazdeviceapis/tlazdevicemessage.destroy.html + TLazMessaging lazdeviceapis/tlazmessaging.html + Create lazdeviceapis/tlazmessaging.create.html + Destroy lazdeviceapis/tlazmessaging.destroy.html + SendMessage lazdeviceapis/tlazmessaging.sendmessage.html + CreateMessage lazdeviceapis/tlazmessaging.createmessage.html + FreeMessage lazdeviceapis/tlazmessaging.freemessage.html + OnMessagingStatus lazdeviceapis/tlazmessaging.onmessagingstatus.html + TLazPositionInfo lazdeviceapis/tlazpositioninfo.html + IsPositionDataAvailable lazdeviceapis/tlazpositioninfo.ispositiondataavailable.html + accuracy lazdeviceapis/tlazpositioninfo.accuracy.html + altitude lazdeviceapis/tlazpositioninfo.altitude.html + altitudeAccuracy lazdeviceapis/tlazpositioninfo.altitudeaccuracy.html + latitude lazdeviceapis/tlazpositioninfo.latitude.html + longitude lazdeviceapis/tlazpositioninfo.longitude.html + speed lazdeviceapis/tlazpositioninfo.speed.html + timeStamp lazdeviceapis/tlazpositioninfo.timestamp.html + RequestPositionInfo lazdeviceapis/tlazpositioninfo.requestpositioninfo.html + OnPositionRetrieved lazdeviceapis/tlazpositioninfo.onpositionretrieved.html + TLazDevice lazdeviceapis/tlazdevice.html + Vibrate lazdeviceapis/tlazdevice.vibrate.html + GetScreenRotation lazdeviceapis/tlazdevice.getscreenrotation.html + Manufacturer lazdeviceapis/tlazdevice.manufacturer.html + Model lazdeviceapis/tlazdevice.model.html + Accelerometer lazdeviceapis/accelerometer.html + Messaging lazdeviceapis/messaging.html + PositionInfo lazdeviceapis/positioninfo.html + Device lazdeviceapis/device.html + LDockTree ldocktree/index.html + DockAlignOrientations ldocktree/dockalignorientations.html + TDockHeaderMouseState ldocktree/tdockheadermousestate.html + TDockHeaderImageKind ldocktree/tdockheaderimagekind.html + TDockHeaderImages ldocktree/tdockheaderimages.html + TLazDockHeaderPart ldocktree/tlazdockheaderpart.html + TAnchorControlsRect ldocktree/tanchorcontrolsrect.html + TLazDockZone ldocktree/tlazdockzone.html + Destroy ldocktree/tlazdockzone.destroy.html + FreeSubComponents ldocktree/tlazdockzone.freesubcomponents.html + GetCaption ldocktree/tlazdockzone.getcaption.html + GetParentControl ldocktree/tlazdockzone.getparentcontrol.html + Splitter ldocktree/tlazdockzone.splitter.html + Pages ldocktree/tlazdockzone.pages.html + Page ldocktree/tlazdockzone.page.html + TLazDockTree ldocktree/tlazdocktree.html + AnchorDockLayout ldocktree/tlazdocktree.anchordocklayout.html + CreateDockLayoutHelperControls ldocktree/tlazdocktree.createdocklayouthelpercontrols.html + ResetSizes ldocktree/tlazdocktree.resetsizes.html + BreakAnchors ldocktree/tlazdocktree.breakanchors.html + PaintDockFrame ldocktree/tlazdocktree.paintdockframe.html + UndockControlForDocking ldocktree/tlazdocktree.undockcontrolfordocking.html + DefaultDockGrabberSize ldocktree/tlazdocktree.defaultdockgrabbersize.html + Create ldocktree/tlazdocktree.create.html + Destroy ldocktree/tlazdocktree.destroy.html + AdjustDockRect ldocktree/tlazdocktree.adjustdockrect.html + InsertControl ldocktree/tlazdocktree.insertcontrol.html + RemoveControl ldocktree/tlazdocktree.removecontrol.html + BuildDockLayout ldocktree/tlazdocktree.builddocklayout.html + FindBorderControls ldocktree/tlazdocktree.findbordercontrols.html + FindBorderControl ldocktree/tlazdocktree.findbordercontrol.html + GetAnchorControl ldocktree/tlazdocktree.getanchorcontrol.html + PaintSite ldocktree/tlazdocktree.paintsite.html + MessageHandler ldocktree/tlazdocktree.messagehandler.html + DumpLayout ldocktree/tlazdocktree.dumplayout.html + AutoFreeDockSite ldocktree/tlazdocktree.autofreedocksite.html + TLazDockForm ldocktree/tlazdockform.html + Notification ldocktree/tlazdockform.notification.html + UpdateMainControl ldocktree/tlazdockform.updatemaincontrol.html + MouseUp ldocktree/tlazdockform.mouseup.html + MouseDown ldocktree/tlazdockform.mousedown.html + MouseMove ldocktree/tlazdockform.mousemove.html + MouseLeave ldocktree/tlazdockform.mouseleave.html + PaintWindow ldocktree/tlazdockform.paintwindow.html + TrackMouse ldocktree/tlazdockform.trackmouse.html + Create ldocktree/tlazdockform.create.html + Destroy ldocktree/tlazdockform.destroy.html + CloseQuery ldocktree/tlazdockform.closequery.html + UpdateCaption ldocktree/tlazdockform.updatecaption.html + UpdateMainControlInParents ldocktree/tlazdockform.updatemaincontrolinparents.html + FindMainControlCandidate ldocktree/tlazdockform.findmaincontrolcandidate.html + FindHeader ldocktree/tlazdockform.findheader.html + InsertControl ldocktree/tlazdockform.insertcontrol.html + IsDockedControl ldocktree/tlazdockform.isdockedcontrol.html + ControlHasTitle ldocktree/tlazdockform.controlhastitle.html + GetTitleRect ldocktree/tlazdockform.gettitlerect.html + GetTitleOrientation ldocktree/tlazdockform.gettitleorientation.html + MainControl ldocktree/tlazdockform.maincontrol.html + TLazDockPage ldocktree/tlazdockpage.html + InsertControl ldocktree/tlazdockpage.insertcontrol.html + DockZone ldocktree/tlazdockpage.dockzone.html + PageControl ldocktree/tlazdockpage.pagecontrol.html + TLazDockPages ldocktree/tlazdockpages.html + GetFloatingDockSiteClass ldocktree/tlazdockpages.getfloatingdocksiteclass.html + Change ldocktree/tlazdockpages.change.html + Create ldocktree/tlazdockpages.create.html + Page ldocktree/tlazdockpages.page.html + ActivePageComponent + Pages + TLazDockSplitter ldocktree/tlazdocksplitter.html + Create ldocktree/tlazdocksplitter.create.html + GetLazDockSplitter ldocktree/getlazdocksplitter.html + GetLazDockSplitterOrParent ldocktree/getlazdocksplitterorparent.html + CountAnchoredControls ldocktree/countanchoredcontrols.html + NeighbourCanBeShrinked ldocktree/neighbourcanbeshrinked.html + ControlIsAnchoredIndirectly ldocktree/controlisanchoredindirectly.html + GetAnchorControlsRect ldocktree/getanchorcontrolsrect.html + GetEnclosingControlRect ldocktree/getenclosingcontrolrect.html + GetEnclosedControls ldocktree/getenclosedcontrols.html + LazFreeTypeIntfDrawer lazfreetypeintfdrawer/index.html + TLazIntfImageGetPixelAtProc lazfreetypeintfdrawer/tlazintfimagegetpixelatproc.html + TLazIntfImageSetPixelAtProc lazfreetypeintfdrawer/tlazintfimagesetpixelatproc.html + TLazIntfHorizLineProc lazfreetypeintfdrawer/tlazintfhorizlineproc.html + TIntfFreeTypeDrawer lazfreetypeintfdrawer/tintffreetypedrawer.html + RenderDirectly lazfreetypeintfdrawer/tintffreetypedrawer.renderdirectly.html + RenderDirectlyClearType lazfreetypeintfdrawer/tintffreetypedrawer.renderdirectlycleartype.html + InternalMergeColorOver lazfreetypeintfdrawer/tintffreetypedrawer.internalmergecolorover.html + MergeColorOver lazfreetypeintfdrawer/tintffreetypedrawer.mergecolorover.html + DrawPixelAt lazfreetypeintfdrawer/tintffreetypedrawer.drawpixelat.html + ClearTypePixelAt lazfreetypeintfdrawer/tintffreetypedrawer.cleartypepixelat.html + UnclippedGetPixelAddress lazfreetypeintfdrawer/tintffreetypedrawer.unclippedgetpixeladdress.html + ClippedGetPixelAddress lazfreetypeintfdrawer/tintffreetypedrawer.clippedgetpixeladdress.html + ClearTypeRGBOrder lazfreetypeintfdrawer/tintffreetypedrawer.cleartypergborder.html + Create lazfreetypeintfdrawer/tintffreetypedrawer.create.html + ClippedDrawPixel lazfreetypeintfdrawer/tintffreetypedrawer.clippeddrawpixel.html + UnclippedDrawPixel lazfreetypeintfdrawer/tintffreetypedrawer.unclippeddrawpixel.html + ClippedClearTypePixel lazfreetypeintfdrawer/tintffreetypedrawer.clippedcleartypepixel.html + UnclippedClearTypePixel lazfreetypeintfdrawer/tintffreetypedrawer.unclippedcleartypepixel.html + DrawVertLine lazfreetypeintfdrawer/tintffreetypedrawer.drawvertline.html + SetHorizLine lazfreetypeintfdrawer/tintffreetypedrawer.sethorizline.html + DrawHorizLine lazfreetypeintfdrawer/tintffreetypedrawer.drawhorizline.html + FillRect lazfreetypeintfdrawer/tintffreetypedrawer.fillrect.html + FillPixels lazfreetypeintfdrawer/tintffreetypedrawer.fillpixels.html + DrawText lazfreetypeintfdrawer/tintffreetypedrawer.drawtext.html + DrawGlyph lazfreetypeintfdrawer/tintffreetypedrawer.drawglyph.html + Destination lazfreetypeintfdrawer/tintffreetypedrawer.destination.html + Destroy lazfreetypeintfdrawer/tintffreetypedrawer.destroy.html + CustomDrawn_WinXP customdrawn_winxp/index.html + TCDDrawerWinXP customdrawn_winxp/tcddrawerwinxp.html + GetMeasures customdrawn_winxp/tcddrawerwinxp.getmeasures.html + GetDrawStyle customdrawn_winxp/tcddrawerwinxp.getdrawstyle.html + LoadFallbackPaletteColors customdrawn_winxp/tcddrawerwinxp.loadfallbackpalettecolors.html + DrawTickmark customdrawn_winxp/tcddrawerwinxp.drawtickmark.html + DrawButton customdrawn_winxp/tcddrawerwinxp.drawbutton.html + DrawEditFrame customdrawn_winxp/tcddrawerwinxp.draweditframe.html + DrawCheckBoxSquare customdrawn_winxp/tcddrawerwinxp.drawcheckboxsquare.html + CustomDrawn_Android customdrawn_android/index.html + TCDDrawerAndroid customdrawn_android/tcddrawerandroid.html + CreateResources customdrawn_android/tcddrawerandroid.createresources.html + LoadResources customdrawn_android/tcddrawerandroid.loadresources.html + FreeResources customdrawn_android/tcddrawerandroid.freeresources.html + GetDrawStyle customdrawn_android/tcddrawerandroid.getdrawstyle.html + GetMeasures customdrawn_android/tcddrawerandroid.getmeasures.html + DrawTickmark customdrawn_android/tcddrawerandroid.drawtickmark.html + DrawButton customdrawn_android/tcddrawerandroid.drawbutton.html + DrawEditBackground customdrawn_android/tcddrawerandroid.draweditbackground.html + DrawEditFrame customdrawn_android/tcddrawerandroid.draweditframe.html + DrawCheckBoxSquare customdrawn_android/tcddrawerandroid.drawcheckboxsquare.html + DrawRadioButtonCircle customdrawn_android/tcddrawerandroid.drawradiobuttoncircle.html + LCL lcl/index.html + +:classes +#lcl.ActnList.TContainedAction #rtl.Classes.TBasicAction +1VFCategory +1VFActionList +1MGetIndex +1MSetCategory +1MSetIndex +1MSetActionList +2MReadState +2MSetParentComponent 3MDestroy -3MHandleAllocated -3MImageAllocated -3PHandleType rw -3PHeight r -3PPixelFormat r -3PWidth r -#lcl.Graphics.TCustomBitmap #lcl.Graphics.TRasterImage -1VFPixelFormat -1VFPixelFormatNeedsUpdate -1VFMaskHandle -1MGetHandleType -1MGetMonochrome -1MSetBitmapHandle -1MSetHandleType -1MSetMonochrome -1MUpdatePixelFormat -2MMaskHandleNeeded -2MPaletteNeeded -2MCanShareImage -2MChanged -2MCreateDefaultBitmapHandle -2MFreeMaskHandle -2MGetBitmapHandle -2MGetMaskHandle -2MGetPalette -2MGetPixelFormat -2MGetRawImagePtr -2MGetRawImageDescriptionPtr -2MHandleNeeded -2MInternalReleaseBitmapHandle -2MInternalReleaseMaskHandle -2MInternalReleasePalette -2MRawimageNeeded -2MSetHandle -2MSetPixelFormat -2MUnshareImage -2MUpdateHandles +3MExecute +3MGetParentComponent +3MHasParent +3MUpdate +3PActionList rw +3PIndex rws +4PCategory rw +#lcl.ActnList.TActionListEnumerator #rtl.System.TObject +1VFList +1VFPosition +1MGetCurrent 3MCreate -3MDestroy -3MAssign -3MClear -3MFreeImage -3MLazarusResourceTypeValid -3MBitmapHandleAllocated -3MMaskHandleAllocated -3MPaletteAllocated -3MReleaseHandle -3MSetHandles -3MSetSize -3PHandle rw -3PHandleType rw -3PMonochrome rw -#lcl.Graphics.TFPImageBitmap #lcl.Graphics.TCustomBitmap -2MGetMimeType -2MGetReaderClass -2MGetWriterClass -2MInitializeReader -2MInitializeWriter -2MFinalizeReader -2MFinalizeWriter -2MReadStream -2MWriteStream -3MGetFileExtensions -3MIsStreamFormatSupported -3MIsFileExtensionSupported -3MLazarusResourceTypeValid -#lcl.Graphics.TSharedBitmap #lcl.Graphics.TSharedCustomBitmap -#lcl.Graphics.TBitmap #lcl.Graphics.TFPImageBitmap -2MInitializeReader -2MGetReaderClass -2MGetWriterClass -2MGetSharedImageClass -3MGetFileExtensions -3MGetResourceType -3MLoadFromStream -#lcl.Graphics.TSharedPixmap #lcl.Graphics.TSharedCustomBitmap -#lcl.Graphics.TPixmap #lcl.Graphics.TFPImageBitmap -2MGetReaderClass -2MGetWriterClass -2MGetSharedImageClass -3MLazarusResourceTypeValid -3MGetFileExtensions -#lcl.Graphics.TSharedPortableNetworkGraphic #lcl.Graphics.TSharedCustomBitmap -#lcl.Graphics.TPortableNetworkGraphic #lcl.Graphics.TFPImageBitmap -2MGetReaderClass -2MGetWriterClass -2MInitializeWriter -2MGetSharedImageClass -3MIsStreamFormatSupported -3MGetFileExtensions -#lcl.Graphics.TSharedPortableAnyMapGraphic #lcl.Graphics.TSharedCustomBitmap -#lcl.Graphics.TPortableAnyMapGraphic #lcl.Graphics.TFPImageBitmap -2MGetReaderClass -2MGetWriterClass -2MGetSharedImageClass -3MIsStreamFormatSupported -3MGetFileExtensions -#lcl.Graphics.TSharedIcon #lcl.Graphics.TSharedRasterImage +3MMoveNext +3PCurrent r +#lcl.ActnList.TCustomActionList #lcl.LCLClasses.TLCLComponent +1VFActions +1VFImageChangeLink 1VFImages -2MFreeHandle -2MUpdateFromHandle -2MIsEmpty -2MGetImage -3MCreate -3MDestroy -3MClear -3MDelete -3MGetIndex -3MGetImagesClass -3MAdd -3MCount -3PImages r -#lcl.Graphics.TIconImage #rtl.System.TObject -1VFHeight -1VFPixelFormat -1VFWidth -1VFImage -1VFHandle -1VFMaskHandle -1VFPalette -1MGetPalette -2MRawImageNeeded -2MUpdateFromImage +1VFOnChange +1VFOnExecute +1VFOnUpdate +1VFState +1MGetAction +1MGetActionCount +1MImageListChange +1MSetAction +1MSetState +2MAddAction +2MRemoveAction +2MChange +2MGetChildren +2MNotification +2MSetChildOrder +2MSetImages +2POnChange rw +2POnExecute rw +2POnUpdate rw 3MCreate 3MDestroy -3MReleaseHandle -3MReleaseMaskHandle -3MReleasePalette -3MUpdateHandles -3PHeight r -3PWidth r -3PPixelFormat r -3PHandle r -3PMaskHandle r -3PPalette r -3PRawImage r -#lcl.Graphics.TCustomIcon #lcl.Graphics.TRasterImage -1MGetCount -1MSetCurrent -2VFCurrent -2VFRequestedSize -2MMaskHandleNeeded -2MPaletteNeeded -2MCanShareImage -2MCheckRequestedSize -2MGetIndex -2MGetBitmapHandle -2MGetDefaultSize -2MGetMaskHandle -2MGetPalette -2MGetPixelFormat -2MGetRawImagePtr -2MGetRawImageDescriptionPtr -2MGetTransparent -2MGetSharedImageClass -2MGetStreamSignature -2MGetTypeID -2MHandleNeeded -2MInternalReleaseBitmapHandle -2MInternalReleaseMaskHandle -2MInternalReleasePalette -2MReadData -2MReadStream -2MSetMasked -2MSetPixelFormat -2MSetTransparent -2MUnshareImage -2MUpdateCurrentView -2MSetHandle -2MUpdateHandle -2MUpdateHandles -2MWriteStream -3MCreate -3MAdd -3MAssign -3MAssignImage -3MClear -3MDelete -3MRemove -3MGetDescription -3MSetSize -3MGetFileExtensions -3MLazarusResourceTypeValid -3MLoadFromResourceName -3MLoadFromResourceID -3MLoadFromResourceHandle -3MBitmapHandleAllocated -3MMaskHandleAllocated -3MPaletteAllocated -3MSetHandles -3MGetBestIndexForSize -3PCurrent rw -3PCount r -#lcl.Graphics.TIcon #lcl.Graphics.TCustomIcon -1MGetIconHandle -1MSetIconHandle -2MGetStreamSignature -2MGetTypeID -2MHandleNeeded -3MLoadFromResourceHandle -3MReleaseHandle -3MGetResourceType -3PHandle rw -#lcl.Graphics.TIcnsList #rtl.Classes.TList -1MGetItem -1MSetItem -2MNotify +3MActionByName +3MExecuteAction +3MGetEnumerator +3MIndexOfName +3MIsShortCut +3MUpdateAction +3PActions rw +3PActionCount r +3PImages rw +3PState rw +#lcl.ActnList.TActionList #lcl.ActnList.TCustomActionList +4PImages +4PState +4POnChange +4POnExecute +4POnUpdate +#lcl.ActnList.TShortCutList #rtl.Classes.TStringList +1MGetShortCuts 3MAdd -3PItems rw -#lcl.Graphics.TSharedIcnsIcon #lcl.Graphics.TSharedIcon -#lcl.Graphics.TIcnsIcon #lcl.Graphics.TCustomIcon -1VFImageList -1VFMaskList -1MIcnsAdd -1MIcnsProcess -2MGetSharedImageClass -2MReadData -2MReadStream -2MWriteStream +3MIndexOfShortCut +3PShortCuts r +#lcl.ActnList.TCustomAction #lcl.ActnList.TContainedAction +1VFAutoCheck +1VFCaption +1VFChecked +1VFChecking +1VFDisableIfNoHandler +1VFEnabled +1VFGroupIndex +1VFHelpContext +1VFHelpKeyword +1VFHelpType +1VFHint +1VFImageIndex +1VFOnHint +1VFSavedEnabledState +1VFSecondaryShortCuts +1VFShortCut +1VFVisible +1MSetAutoCheck +1MSetCaption +1MSetChecked +1MSetEnabled +1MSetGroupIndex +1MSetHelpContext +1MSetHelpKeyword +1MSetHelpType +1MSetHint +1MSetImageIndex +1MSetShortCut +1MSetVisible +1MGetSecondaryShortCuts +1MSetSecondaryShortCuts +1MIsSecondaryShortCutsStored +2VFImage +2VFMask +2MAssignTo +2MSetName +2MHandleShortCut +2PSavedEnabledState rw 3MCreate 3MDestroy -3MGetFileExtensions -3MLazarusResourceTypeValid -#lcl.Graphics.TSharedCursorImage #lcl.Graphics.TSharedIcon -2MFreeHandle -3MGetImagesClass -#lcl.Graphics.TCursorImageImage #lcl.Graphics.TIconImage -1VFHotSpot -3MCreate -3PHotSpot rw -#lcl.Graphics.TCursorImage #lcl.Graphics.TCustomIcon -1MGetHotSpot -1MSetHotSpot -1MGetCursorHandle -1MSetCursorHandle -2MHandleNeeded -2MGetDefaultSize -2MGetStreamSignature -2MGetSharedImageClass -2MGetTypeID -3MGetFileExtensions -3MGetResourceType -3MLoadFromResourceHandle -3MLazarusResourceTypeValid -3MReleaseHandle -3MSetCenterHotSpot -3PHotSpot rw -3PHandle rw -#lcl.Graphics.TSharedJpegImage #lcl.Graphics.TSharedCustomBitmap -#lcl.Graphics.TJPEGImage #lcl.Graphics.TFPImageBitmap -1VFGrayScale -1VFPerformance -1VFProgressiveEncoding -1VFQuality -2MInitializeReader -2MInitializeWriter -2MFinalizeReader -2MGetReaderClass -2MGetWriterClass -2MGetSharedImageClass -3MCreate -3MIsStreamFormatSupported -3MGetFileExtensions -3PCompressionQuality rw -3PGrayScale r -3PProgressiveEncoding r -3PPerformance rw -#lcl.Graphics.TSharedTiffImage #lcl.Graphics.TSharedCustomBitmap -#lcl.Graphics.TTiffImage #lcl.Graphics.TFPImageBitmap -1VFArtist -1VFCopyright -1VFDateTime -1VFDocumentName -1VFHostComputer -1VFImageDescription -1VFMake -1VFModel -1VFResolutionUnit -1VFSoftware -1VFXResolution -1VFYResolution -2MInitializeReader -2MInitializeWriter -2MFinalizeReader -2MGetReaderClass -2MGetWriterClass -2MGetSharedImageClass -3MCreate -3MGetFileExtensions -3PArtist rw -3PCopyright rw -3PDateTime rw -3PDocumentName rw -3PHostComputer rw -3PImageDescription rw -3PMake rw -3PModel rw -3PResolutionUnit rw -3PSoftware rw -3PXResolution rw -3PYResolution rw -#lcl.Graphics.TSharedGIFImage #lcl.Graphics.TSharedCustomBitmap -#lcl.Graphics.TGIFImage #lcl.Graphics.TFPImageBitmap -1VFTransparent -1VFInterlaced -1VFBitsPerPixel -2MInitializeReader -2MFinalizeReader -2MGetReaderClass -2MGetSharedImageClass -3MCreate -3MIsStreamFormatSupported -3MGetFileExtensions -3PTransparent r -3PInterlaced r -3PBitsPerPixel r -#lcl.LCLResCache.TResourceCacheItem #rtl.System.TObject -2VFDestroying -2VFReferenceCount -3VHandle -3VCache -3VFirstDescriptor -3VLastDescriptor -3VNext -3VPrev +3MDoHint +3MExecute +3PAutoCheck rw +3PCaption rw +3PChecked rw +3PDisableIfNoHandler rw +3PEnabled rw +3PGroupIndex rw +3PHelpContext rw +3PHelpKeyword rw +3PHelpType rw +3PHint rw +3PImageIndex rw +3POnHint rw +3PSecondaryShortCuts rws +3PShortCut rw +3PVisible rw +#lcl.ActnList.TAction #lcl.ActnList.TCustomAction 3MCreate -3MDestroy -3MIncreaseRefCount -3MDecreaseRefCount -3MAddToList -3MRemoveFromList -3MWarnReferenceHigh -3PReferenceCount r -#lcl.LCLResCache.TResourceCacheDescriptor #rtl.System.TObject -2VFDestroying +4PAutoCheck +4PCaption +4PChecked +4PDisableIfNoHandler +4PEnabled +4PGroupIndex +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4POnExecute +4POnHint +4POnUpdate +4PSecondaryShortCuts +4PShortCut +4PVisible +#lcl.ActnList.TActionLink #rtl.Classes.TBasicActionLink +2MSetAutoCheck +2MSetCaption +2MSetChecked +2MSetEnabled +2MSetGroupIndex +2MSetHelpContext +2MSetHelpKeyword +2MSetHelpType +2MSetHint +2MSetImageIndex +2MSetShortCut +2MSetVisible +3MIsCaptionLinked +3MIsCheckedLinked +3MIsEnabledLinked +3MIsGroupIndexLinked +3MIsHelpContextLinked +3MIsHelpLinked +3MIsHintLinked +3MIsImageIndexLinked +3MIsShortCutLinked +3MIsVisibleLinked +#lcl.LCLType.TListWithEvent #rtl.Classes.TList +1VFOnChange +2MNotify +3POnChange rw +#lcl.LCLProc.TDebugLCLItemInfo #rtl.System.TObject 3VItem -3VCache -3VNext -3VPrev -3MCreate +3VIsDestroyed +3VInfo +3VCreationStack +3VDestructionStack +3MAsString 3MDestroy -3MAddToList -3MRemoveFromList -#lcl.LCLResCache.TResourceCache #rtl.System.TObject -2VFItems -2VFDescriptors -2VFDestroying -2VFResourceCacheDescriptorClass -2VFResourceCacheItemClass -2VFMaxUnusedItem -2VFFirstUnusedItem -2VFLastUnusedItem -2VFUnUsedItemCount -2VFLock -2MRemoveItem -2MRemoveDescriptor -2MItemUsed -2MItemUnused -2MItemIsUsed +#lcl.LCLProc.TDebugLCLItems #rtl.System.TObject +1VFItems +1VFName 3MCreate -3MClear -3MDestroy -3MCompareItems -3MCompareDescriptors -3MConsistencyCheck -3MLock -3MUnlock -3PMaxUnusedItem rw -3PResourceCacheItemClass r -3PResourceCacheDescriptorClass r -#lcl.LCLResCache.THandleResourceCache #lcl.LCLResCache.TResourceCache -3MFindItem -#lcl.LCLResCache.TBlockResourceCacheDescriptor #lcl.LCLResCache.TResourceCacheDescriptor -3VData 3MDestroy -#lcl.LCLResCache.TBlockResourceCache #lcl.LCLResCache.THandleResourceCache -1VFDataSize -2VFOnCompareDescPtrWithDescriptor +3MFindInfo +3MIsDestroyed +3MIsCreated +3MMarkCreated +3MMarkDestroyed +3MGetInfo +3PName r +#lcl.GraphType.TRawImageDescription +0VFormat +0VWidth +0VHeight +0VDepth +0VBitOrder +0VByteOrder +0VLineOrder +0VLineEnd +0VBitsPerPixel +0VRedPrec +0VRedShift +0VGreenPrec +0VGreenShift +0VBluePrec +0VBlueShift +0VAlphaPrec +0VAlphaShift +0VMaskBitsPerPixel +0VMaskShift +0VMaskLineEnd +0VMaskBitOrder +0VPaletteColorCount +0VPaletteBitsPerIndex +0VPaletteShift +0VPaletteLineEnd +0VPaletteBitOrder +0VPaletteByteOrder +0MInit +0MInit_BPP1 +0MInit_BPP16_R5G6B5 +0MInit_BPP24_R8G8B8_BIO_TTB +0MInit_BPP24_R8G8B8_BIO_TTB_UpsideDown +0MInit_BPP32_A8R8G8B8_BIO_TTB +0MInit_BPP32_R8G8B8A8_BIO_TTB +0MInit_BPP24_B8G8R8_BIO_TTB +0MInit_BPP24_B8G8R8_M1_BIO_TTB +0MInit_BPP32_B8G8R8_BIO_TTB +0MInit_BPP32_B8G8R8_M1_BIO_TTB +0MInit_BPP32_B8G8R8A8_BIO_TTB +0MInit_BPP32_B8G8R8A8_M1_BIO_TTB +0MGetDescriptionFromMask +0MGetDescriptionFromAlpha +0MGetRGBIndices +0MBytesPerLine +0MBitsPerLine +0MMaskBytesPerLine +0MMaskBitsPerLine +0MAsString +0MIsEqual +#lcl.GraphType.TRawImage +0VDescription +0VData +0VDataSize +0VMask +0VMaskSize +0VPalette +0VPaletteSize +0MInit +0MCreateData +0MFreeData +0MReleaseData +0MExtractRect +0MGetLineStart +0MPerformEffect +0MReadBits +0MReadChannels +0MReadMask +0MWriteBits +0MWriteChannels +0MWriteMask +0MIsMasked +0MIsTransparent +0MIsEqual +#lcl.GraphType.TRawImageLineStarts +1VFWidth +1VFHeight +1VFBitsPerPixel +1VFLineEnd +1VFLineOrder +3VPositions +3MInit +3MGetPosition +#lcl.InterfaceBase.TDialogButton #rtl.Classes.TCollectionItem +1VFCaption +1VFModalResult +1MGetCancel +1MGetDefault +1MSetCancel +1MSetDefault +2MGetDisplayName +2MSetCaption 3MCreate -3MFindDescriptor -3MAddResource -3MCompareDescriptors -3PDataSize r -3POnCompareDescPtrWithDescriptor r -#lcl.ImgList.TChangeLink #rtl.System.TObject -1VFSender -1VFOnChange +3PCaption rw +3PCancel rw +3PDefault rw +3PModalResult rw +#lcl.InterfaceBase.TDialogButtons #rtl.Classes.TCollection +2VFCancelButton +2VFDefaultButton +2MGetItem +2MSetCancelButton +2MSetDefaultButton +2MSetItem 3MDestroy -3MChange -3POnChange rw -3PSender rw -#lcl.ImgList.TCustomImageList #lcl.LCLClasses.TLCLReferenceComponent -1VFReference -1VFDrawingStyle -1VFData -1VFImageType -1VFHeight -1VFMasked -1VFShareImages -1VFWidth -1VFAllocBy -1VFCount -1VFAllocCount -1VFBlendColor -1VFOnChange -1VFChangeLinkList -1VFBkColor -1VFChanged -1VFUpdateCount -1VFOverlays -1VfHasOverlays -1MAllocData -1MGetReference -1MInternalInsert -1MInternalMove -1MInternalReplace -1MInternalSetImage -1MNotifyChangeLink -1MSetBkColor -1MSetDrawingStyle -1MSetHeight +3MAdd +3MFindButton +3PDefaultButton rw +3PCancelButton rw +3PItems rw +#lcl.InterfaceBase.TWidgetSet #rtl.System.TObject +2VFThemeServices +2MPassCmdLineOptions +2MCreateThemeServices +2MGetAppHandle +2MSetAppHandle +3MCreate +3MBeforeDestruction +3MAppInit +3MAppRun +3MAppWaitMessage +3MAppProcessMessages +3MAppTerminate +3MAppMinimize +3MAppRestore +3MAppBringToFront +3MAppSetIcon +3MAppSetTitle +3MAppSetVisible +3MAppRemoveStayOnTopFlags +3MAppRestoreStayOnTopFlags +3MAppSetMainFormOnTaskBar +3MLCLPlatform +3MGetLCLCapability +3MDCGetPixel +3MDCSetPixel +3MDCRedraw +3MDCSetAntialiasing +3MSetDesigning +3MInitStockFont +3MIsHelpKey +3MCreateTimer +3MDestroyTimer +3PAppHandle rw +3MArc +3MAngleChord +3MBeginPaint +3MBitBlt +3MCallNextHookEx +3MCallWindowProc +3MClientToScreen +3MCombineRgn +3MCreateBitmap +3MCreateBrushIndirect +3MCreateCaret +3MCreateCompatibleBitmap +3MCreateCompatibleDC +3MCreateDIBitmap +3MCreateDIBSection +3MCreateEllipticRgn +3MCreateFontIndirect +3MCreateFontIndirectEx +3MCreateIconIndirect +3MCreatePalette +3MCreatePatternBrush +3MCreatePenIndirect +3MCreatePolygonRgn +3MCreateRectRgn +3MCreateRoundRectRgn +3MDeleteCriticalSection +3MDeleteDC +3MDeleteObject +3MDestroyCaret +3MDestroyCursor +3MDestroyIcon +3MDPtoLP +3MDrawFrameControl +3MDrawFocusRect +3MDrawEdge +3MDrawText +3MEnableScrollBar +3MEnableWindow +3MEndPaint +3MEnterCriticalSection +3MEnumDisplayMonitors +3MEnumFontFamilies +3MEnumFontFamiliesEx +3MEllipse +3MEqualRgn +3MExcludeClipRect +3MExtCreatePen +3MExtTextOut +3MExtSelectClipRGN +3MFillRect +3MFillRgn +3MFloodFill +3MFrameRect +3MGetActiveWindow +3MGetBitmapBits +3MGetBkColor +3MGetCapture +3MGetCaretPos +3MGetClientRect +3MGetClipBox +3MGetClipRGN +3MGetCurrentObject +3MGetCursorPos +3MGetCharABCWidths +3MGetDC +3MGetDeviceCaps +3MGetDIBits +3MGetDoubleClickTime +3MGetFocus +3MGetFontLanguageInfo +3MGetForegroundWindow +3MGetIconInfo +3MGetKeyState +3MGetMapMode +3MGetMonitorInfo +3MGetObject +3MGetPaletteEntries +3MGetParent +3MGetProp +3MGetRgnBox +3MGetROP2 +3MGetScrollInfo +3MGetStockObject +3MGetSysColor +3MGetSysColorBrush +3MGetSystemPaletteEntries +3MGetSystemMetrics +3MGetTextColor +3MGetTextExtentExPoint +3MGetTextExtentPoint +3MGetTextExtentPoint32 +3MGetTextMetrics +3MGetViewPortExtEx +3MGetViewPortOrgEx +3MGetWindowExtEx +3MGetWindowLong +3MGetWindowRect +3MGetWindowSize +3MGetWindowOrgEx +3MGradientFill +3MHideCaret +3MInitializeCriticalSection +3MIntersectClipRect +3MInvalidateRect +3MInvalidateRgn +3MIsDBCSLeadByte +3MIsIconic +3MIsWindow +3MIsWindowEnabled +3MIsWindowVisible +3MIsZoomed +3MLeaveCriticalSection +3MLineTo +3MLoadBitmap +3MLoadCursor +3MLoadIcon +3MLPtoDP +3MMaskBlt +3MMessageBox +3MMonitorFromPoint +3MMonitorFromRect +3MMonitorFromWindow +3MMoveToEx +3MOffsetRgn +3MPaintRgn +3MPeekMessage +3MPie +3MPolyBezier +3MPolygon +3MPolyline +3MPostMessage +3MPtInRegion +3MRealizePalette +3MRectangle +3MRectInRegion +3MRectVisible +3MRedrawWindow +3MReleaseCapture +3MReleaseDC +3MRemoveProp +3MRestoreDC +3MRoundRect +3MSaveDC +3MScreenToClient +3MScrollWindowEx +3MSelectClipRGN +3MSelectObject +3MSelectPalette +3MSendMessage +3MSetActiveWindow +3MSetBkColor +3MSetBkMode +3MSetCapture +3MSetCaretPos +3MSetCaretPosEx +3MSetCursor +3MSetCursorPos +3MSetFocus +3MSetForegroundWindow +3MSetMapMode +3MSetMenu +3MSetParent +3MSetProp +3MSetRectRgn +3MSetROP2 +3MSetScrollInfo +3MSetStretchBltMode +3MSetSysColors +3MSetTextCharacterExtra +3MSetTextColor +3MSetWindowLong +3MSetViewPortExtEx +3MSetViewPortOrgEx +3MSetWindowExtEx +3MSetWindowOrgEx +3MSetWindowPos +3MSetWindowRgn +3MShowCaret +3MShowScrollBar +3MShowWindow +3MStretchBlt +3MStretchDIBits +3MSystemParametersInfo +3MTextOut +3MUpdateWindow +3MWindowFromPoint +3MAddEventHandler +3MAddProcessEventHandler +3MAddPipeEventHandler +3MAllocateHWnd +3MAskUser +3MCallDefaultWndHandler +3MClipboardFormatToMimeType +3MClipboardGetData +3MClipboardGetFormats +3MClipboardGetOwnerShip +3MClipboardRegisterFormat +3MCreateEmptyRegion +3MCreatePixmapIndirect +3MCreateRegionCopy +3MCreateRubberBand +3MCreateStandardCursor +3MDCClipRegionValid +3MDeallocateHWnd +3MDestroyRubberBand +3MDrawDefaultDockImage +3MDrawGrid +3MExtUTF8Out +3MFontCanUTF8 +3MFontIsMonoSpace +3MFrame3d +3MGetAcceleratorString +3MGetAvailableNativeCanvasTypes +3MGetAvailableNativeHandleTypes +3MGetCaretRespondToFocus +3MGetClientBounds +3MGetCmdLineParamDescForInterface +3MGetControlConstraints +3MGetDCOriginRelativeToWindow +3MGetDesignerDC +3MGetDeviceSize +3MGetLCLOwnerObject +3MGetNativeCanvas +3MGetNativeHandle +3MGetScrollBarSize +3MGetScrollbarVisible +3MGetWindowRelativePosition +3MIntfSendsUTF8KeyPress +3MInvalidateFrame +3MIsDesignerDC +3MIsMobilePlatform +3MIsCDIntfControl +3MMoveWindowOrgEx +3MPromptUser +3MPromptUserAtXY +3MRadialArc +3MRadialChord +3MRadialPie +3MRawImage_CreateBitmaps +3MRawImage_DescriptionFromBitmap +3MRawImage_DescriptionFromDevice +3MRawImage_FromBitmap +3MRawImage_FromDevice +3MRawImage_QueryDescription +3MRegroupMenuItem +3MReleaseDesignerDC +3MRemoveEventHandler +3MRemoveProcessEventHandler +3MRemovePipeEventHandler +3MRequestInput +3MSendCachedLCLMessages +3MSetCaretRespondToFocus +3MSetComboMinDropDownSize +3MSetEventHandlerFlags +3MSetRubberBandRect +3MShowSelectItemDialog +3MStretchMaskBlt +3MTextUTF8Out +3PThemeServices r +#lcl.InterfaceBase.EInterfaceException #rtl.sysutils.Exception +#lcl.InterfaceBase.EInterfaceError #lcl.InterfaceBase.EInterfaceException +#lcl.InterfaceBase.EInterfaceCritical #lcl.InterfaceBase.EInterfaceException +#lcl.InterfaceBase.EInterfaceWarning #lcl.InterfaceBase.EInterfaceException +#lcl.IntfGraphics.TLazIntfImage TFPCustomImage +1VFRawImage +1VFLineStarts +1VFMaskLineStarts +1VFMaskSet +1VFUpdateCount +1VfCreateAllDataNeeded +1VFGetSetColorFunctionsUpdateNeeded +1VFReadRawImageBits +1VFWriteRawImageBits +1VFMaskReadRawImageBits +1VFMaskWriteRawImageBits +1VFDataOwner +1MGetMasked +1MGetTColors +1MInternalSetSize 1MSetMasked -1MSetShareImages -1MSetWidth -2MCheckIndex -2MGetReferenceHandle -2MInitialize -2MDefineProperties -2MSetWidthHeight -2MClearOverlays -2MWSRegisterClass -2MWSCreateReference +1MSetTColors +2VFGetInternalColorProc +2VFSetInternalColorProc +2MSetUsePalette +2MSetInternalColor +2MGetInternalColor +2MSetInternalPixel +2MGetInternalPixel +2MFreeData +2MSetDataDescription +2MChooseGetSetColorFunctions +2MChooseRawBitsProc +2MGetColor_Generic +2MGetColor_RGBA_NoPalette +2MGetColor_RGB_NoPalette +2MGetColor_Gray_NoPalette +2MGetColor_GrayAlpha_NoPalette +2MGetColor_NULL +2MGetColor_BPP32_A8R8G8B8_BIO_TTB +2MGetColor_BPP32_A8B8G8R8_BIO_TTB +2MGetColor_BPP32_A8G8R8B8_BIO_TTB +2MGetColor_BPP32_A8G8B8R8_BIO_TTB +2MGetColor_BPP32_A8R8B8G8_BIO_TTB +2MGetColor_BPP32_A8B8R8G8_BIO_TTB +2MGetColor_BPP32_B8G8R8A8_BIO_TTB +2MGetColor_BPP32_R8G8B8A8_BIO_TTB +2MGetColor_BPP32_G8B8R8A8_BIO_TTB +2MGetColor_BPP32_G8R8B8A8_BIO_TTB +2MGetColor_BPP32_B8R8G8A8_BIO_TTB +2MGetColor_BPP32_R8B8G8A8_BIO_TTB +2MGetColor_BPP32_X8R8G8B8_BIO_TTB +2MGetColor_BPP32_X8B8G8R8_BIO_TTB +2MGetColor_BPP32_X8G8R8B8_BIO_TTB +2MGetColor_BPP32_X8G8B8R8_BIO_TTB +2MGetColor_BPP32_X8R8B8G8_BIO_TTB +2MGetColor_BPP32_X8B8R8G8_BIO_TTB +2MGetColor_BPP32_B8G8R8X8_BIO_TTB +2MGetColor_BPP32_R8G8B8X8_BIO_TTB +2MGetColor_BPP32_G8B8R8X8_BIO_TTB +2MGetColor_BPP32_G8R8B8X8_BIO_TTB +2MGetColor_BPP32_B8R8G8X8_BIO_TTB +2MGetColor_BPP32_R8B8G8X8_BIO_TTB +2MGetColor_BPP24_B8G8R8_BIO_TTB +2MGetColor_BPP24_R8G8B8_BIO_TTB +2MGetColor_BPP24_G8B8R8_BIO_TTB +2MGetColor_BPP24_G8R8B8_BIO_TTB +2MGetColor_BPP24_B8R8G8_BIO_TTB +2MGetColor_BPP24_R8B8G8_BIO_TTB +2MGetMask_Generic +2MSetColor_Generic +2MSetColor_RGBA_NoPalette +2MSetColor_RGB_NoPalette +2MSetColor_Gray_NoPalette +2MSetColor_GrayAlpha_NoPalette +2MSetColor_NULL +2MSetColor_BPP32_A8R8G8B8_BIO_TTB +2MSetColor_BPP32_A8B8G8R8_BIO_TTB +2MSetColor_BPP32_A8G8R8B8_BIO_TTB +2MSetColor_BPP32_A8G8B8R8_BIO_TTB +2MSetColor_BPP32_A8R8B8G8_BIO_TTB +2MSetColor_BPP32_A8B8R8G8_BIO_TTB +2MSetColor_BPP32_B8G8R8A8_BIO_TTB +2MSetColor_BPP32_R8G8B8A8_BIO_TTB +2MSetColor_BPP32_G8B8R8A8_BIO_TTB +2MSetColor_BPP32_G8R8B8A8_BIO_TTB +2MSetColor_BPP32_B8R8G8A8_BIO_TTB +2MSetColor_BPP32_R8B8G8A8_BIO_TTB +2MSetColor_BPP32_X8R8G8B8_BIO_TTB +2MSetColor_BPP32_X8B8G8R8_BIO_TTB +2MSetColor_BPP32_X8G8R8B8_BIO_TTB +2MSetColor_BPP32_X8G8B8R8_BIO_TTB +2MSetColor_BPP32_X8R8B8G8_BIO_TTB +2MSetColor_BPP32_X8B8R8G8_BIO_TTB +2MSetColor_BPP32_B8G8R8X8_BIO_TTB +2MSetColor_BPP32_R8G8B8X8_BIO_TTB +2MSetColor_BPP32_G8B8R8X8_BIO_TTB +2MSetColor_BPP32_G8R8B8X8_BIO_TTB +2MSetColor_BPP32_B8R8G8X8_BIO_TTB +2MSetColor_BPP32_R8B8G8X8_BIO_TTB +2MSetColor_BPP24_B8G8R8_BIO_TTB +2MSetColor_BPP24_R8G8B8_BIO_TTB +2MSetColor_BPP24_G8B8R8_BIO_TTB +2MSetColor_BPP24_G8R8B8_BIO_TTB +2MSetColor_BPP24_B8R8G8_BIO_TTB +2MSetColor_BPP24_R8B8G8_BIO_TTB +2MSetMask_Generic 3MCreate -3MCreateSize +3MCreateCompatible 3MDestroy -3MAssignTo -3MAssign -3MWriteData -3MReadData -3MEquals 3MBeginUpdate 3MEndUpdate -3MAdd -3MAddIcon -3MAddImages -3MAddMasked -3MAddLazarusResource -3MAddResourceName -3MChange -3MClear -3MDelete -3MDraw -3MDrawOverlay -3MFillDescription -3MGetBitmap -3MGetFullBitmap -3MGetFullRawImage -3MGetIcon +3MSetSize +3MCheckDescription +3MLoadFromDevice +3MLoadFromBitmap +3MCreateBitmaps +3MSetRawImage 3MGetRawImage -3MGetHotSpot -3MInsert -3MInsertIcon -3MInsertMasked -3MMove -3MOverlay -3PHasOverlays r -3MReplace -3MReplaceMasked -3MRegisterChanges -3MStretchDraw -3MUnRegisterChanges -3PAllocBy rw -3PBlendColor rw -3PBkColor rw -3PCount r -3PDrawingStyle rw -3PHandleAllocated -3PHeight rw -3PWidth rw -3POnChange rw -3PMasked rw -3PReference r -3PShareImages rw -3PImageType rw -#lcl.maps.TBaseMap #rtl.Classes.TPersistent -1VFTree -1VFIdType -1VFDataSize -1VFFirst -1VFLast -1VFIterators -1MFindNode -1MFindItem -1MFreeData -1MTreeCompareID -1MIteratorAdd -1MIteratorRemove -2MInternalAdd -2MInternalGetData -2MInternalGetDataPtr -2MInternalGetId -2MInternalSetData -2MReleaseData -3MCreate -3MClear -3MCount -3MDelete -3MDestroy -#lcl.maps.TBaseMapIterator #rtl.System.TObject -1VFMap -1VFCurrent -1VFInValid -1VFBOM -1VFEOM -1MMapDestroyed -1MMapCleared -1MItemRemove -2MInternalCreate -2MInternalLocate -2MValidate -2MValidateMap -2PCurrent r -3MDestroy -3MFirst -3MNext -3MPrevious -3MLast -3MValid -3PBOM r -3PEOM r -#lcl.maps.TMap #lcl.maps.TBaseMap -3MAdd -3MHasId -3MGetData -3MGetDataPtr -3MSetData -#lcl.maps.TMapIterator #lcl.maps.TBaseMapIterator -3MCreate -3MDataPtr -3MGetData -3MGetID -3MLocate -3MSetData -#lcl.maps.TTypedMap #lcl.maps.TBaseMap -1VFTypeInfo -2MInternalSetData -2MReleaseData -3MAdd -3MCreate -3MDestroy -3MHasId -3MGetData -3MGetDataPtr -3MSetData -#lcl.maps.TTypedMapIterator #lcl.maps.TBaseMapIterator -3MCreate -3MGetData -3MGetID -3MLocate -3MSetData -#lcl.ActnList.TContainedAction #rtl.Classes.TBasicAction -1VFCategory -1VFActionList -1MGetIndex -1MSetCategory -1MSetIndex -1MSetActionList -2MReadState -2MSetParentComponent -3MDestroy -3MExecute -3MGetParentComponent -3MHasParent -3MUpdate -3PActionList rw -3PIndex rws -4PCategory rw -#lcl.ActnList.TActionListEnumerator #rtl.System.TObject -1VFList -1VFPosition -1MGetCurrent -3MCreate -3MMoveNext -3PCurrent r -#lcl.ActnList.TCustomActionList #lcl.LCLClasses.TLCLComponent -1VFActions -1VFImageChangeLink -1VFImages -1VFOnChange -1VFOnExecute -1VFOnUpdate -1VFState -1MGetAction -1MGetActionCount -1MImageListChange -1MSetAction -1MSetState -2MAddAction -2MRemoveAction -2MChange -2MGetChildren -2MNotification -2MSetChildOrder -2MSetImages -2POnChange rw -2POnExecute rw -2POnUpdate rw -3MCreate -3MDestroy -3MActionByName -3MExecuteAction -3MGetEnumerator -3MIndexOfName -3MIsShortCut -3MUpdateAction -3PActions rw -3PActionCount r -3PImages rw -3PState rw -#lcl.ActnList.TActionList #lcl.ActnList.TCustomActionList -4PImages -4PState -4POnChange -4POnExecute -4POnUpdate -#lcl.ActnList.TShortCutList #rtl.Classes.TStringList -1MGetShortCuts -3MAdd -3MIndexOfShortCut -3PShortCuts r -#lcl.ActnList.TCustomAction #lcl.ActnList.TContainedAction -1VFAutoCheck -1VFCaption -1VFChecked -1VFChecking -1VFDisableIfNoHandler -1VFEnabled -1VFGroupIndex -1VFHelpContext -1VFHelpKeyword -1VFHelpType -1VFHint -1VFImageIndex -1VFOnHint -1VFSavedEnabledState -1VFSecondaryShortCuts -1VFShortCut -1VFVisible -1MSetAutoCheck -1MSetCaption -1MSetChecked -1MSetEnabled -1MSetGroupIndex -1MSetHelpContext -1MSetHelpKeyword -1MSetHelpType -1MSetHint -1MSetImageIndex -1MSetShortCut -1MSetVisible -1MGetSecondaryShortCuts -1MSetSecondaryShortCuts -1MIsSecondaryShortCutsStored -2VFImage -2VFMask -2MAssignTo -2MSetName -2MHandleShortCut -2PSavedEnabledState rw -3MCreate -3MDestroy -3MDoHint -3MExecute -3PAutoCheck rw -3PCaption rw -3PChecked rw -3PDisableIfNoHandler rw -3PEnabled rw -3PGroupIndex rw -3PHelpContext rw -3PHelpKeyword rw -3PHelpType rw -3PHint rw -3PImageIndex rw -3POnHint rw -3PSecondaryShortCuts rws -3PShortCut rw -3PVisible rw -#lcl.ActnList.TAction #lcl.ActnList.TCustomAction -3MCreate -4PAutoCheck -4PCaption -4PChecked -4PDisableIfNoHandler -4PEnabled -4PGroupIndex -4PHelpContext -4PHelpKeyword -4PHelpType -4PHint -4PImageIndex -4POnExecute -4POnHint -4POnUpdate -4PSecondaryShortCuts -4PShortCut -4PVisible -#lcl.ActnList.TActionLink #rtl.Classes.TBasicActionLink -2MSetAutoCheck -2MSetCaption -2MSetChecked -2MSetEnabled -2MSetGroupIndex -2MSetHelpContext -2MSetHelpKeyword -2MSetHelpType -2MSetHint -2MSetImageIndex -2MSetShortCut -2MSetVisible -3MIsCaptionLinked -3MIsCheckedLinked -3MIsEnabledLinked -3MIsGroupIndexLinked -3MIsHelpContextLinked -3MIsHelpLinked -3MIsHintLinked -3MIsImageIndexLinked -3MIsShortCutLinked -3MIsVisibleLinked -#lcl.Clipbrd.TClipboard #rtl.Classes.TPersistent -1VFAllocated -1VFClipboardType -1VFCount -1VFData -1VFSupportedFormatsChanged -1VFOnRequest -1VFOpenRefCount -1MAssignGraphic -1MAssignPicture -1MAssignToGraphic -1MAssignToPicture -1MGetAsText -1MGetFormatCount -1MGetFormats -1MGetOwnerShip -1MIndexOfCachedFormatID -1MInternalOnRequest -1MSetAsText -1MSetBuffer -1MSetOnRequest -1MBeginUpdate -1MEndUpdate -1MIsUpdating -1MCanReadFromInterface -1MCanReadFromCache -1MOnDefaultFindClass -3MAddFormat -3MAssign -3MAssignTo -3MClear -3MClose -3MCreate -3MDestroy -3MFindPictureFormatID -3MFindFormatID -3MGetComponent -3MGetComponentAsText -3MGetFormat -3MSupportedFormats -3MGetTextBuf -3MHasFormat -3MHasFormatName -3MHasPictureFormat -3MOpen -3MSetComponent -3MSetComponentAsText -3MSetFormat -3MSetSupportedFormats -3MSetTextBuf -3PAsText rw -3PClipboardType r -3PFormatCount r -3PFormats r -3POnRequest rw -#lcl.Forms.TCustomHintAction #lcl.ActnList.TCustomAction -4PHint -#lcl.Forms.EScrollBar #rtl.sysutils.Exception -#lcl.Forms.TControlScrollBar #rtl.Classes.TPersistent -1VFAutoRange -1VFIncrement -1VFKind -1VFPage -1VFPosition -1VFRange -1VFSmooth -1VFTracking -1VFVisible -1VFOldScrollInfo -1VFOldScrollInfoValid -2VFControl -2MControlHandle -2MGetAutoScroll -2MGetIncrement -2MGetPage -2MGetPosition -2MGetRange -2MGetSize -2MGetSmooth -2MHandleAllocated -2MIsRangeStored -2MControlUpdateScrollBars -2MInternalSetRange -2MScrollHandler -2MSetIncrement -2MSetPage -2MSetPosition -2MSetRange -2MSetSmooth -2MSetTracking -2MSetVisible -2MUpdateScrollBar -2MInvalidateScrollInfo -2MGetHorzScrollBar -2MGetVertScrollBar -2MScrollBarShouldBeVisible +3MFillPixels +3MCopyPixels +3MAlphaBlend +3MAlphaFromMask +3MMask +3MGetXYDataPosition +3MGetXYMaskPosition +3MGetDataLineStart +3MCreateData +3MHasTransparency +3MHasMask +3MSetDataDescriptionKeepData +3PPixelData r +3PMaskData r +3PDataDescription rw +3PTColors rw +3PMasked rw +#lcl.IntfGraphics.TLazIntfImageMask TFPCustomImage +1VFImage +2MSetInternalColor +2MGetInternalColor +2MSetInternalPixel +2MGetInternalPixel +3MCreateWithImage +3PImage r +#lcl.IntfGraphics.TLazAVLPalette TFPPalette +2VFAVLPalette +2VFAVLNodes +2MSetCount +2MSetColor +2MCompareEntries +2MCompareColorWithEntries +2MEnlargeData +3MDestroy +3MIndexOf +3MAdd +3MCheckConsistency +#lcl.IntfGraphics.TArrayNode #rtl.System.TObject +3VParent +3VValue +3VChildren +3VStartValue +3VCapacity +3VData 3MCreate -3MAssign -3MIsScrollBarVisible -3MScrollPos -3PKind r -3MGetOtherScrollBar -3PSize rs -3MClientSize -3MClientSizeWithBar -3MClientSizeWithoutBar -4PIncrement rw -4PPage rw -4PSmooth rw -4PPosition rw -4PRange rws -4PTracking rw -4PVisible rw -#lcl.Forms.TScrollingWinControl #lcl.Controls.TCustomControl -1VFHorzScrollBar -1VFVertScrollBar -1VFAutoScroll -1VFIsUpdating -1MSetHorzScrollBar -1MSetVertScrollBar -2MWSRegisterClass -2MAlignControls -2MAutoScrollEnabled -2MCalculateAutoRanges -2MCreateWnd -2MGetClientScrollOffset -2MGetLogicalClientRect -2MDoOnResize -2MWMSize -2MWMHScroll -2MWMVScroll -2MComputeScrollbars -2MScrollbarHandler -2MSetAutoScroll -2MLoaded -2MResizing -2PAutoScroll rw -2MSetAutoSize +3MDestroy +3MDeleteChilds +3MUnbindFromParent +3MCreateChildNode +3MGetChildNode +3MExpand +3MFindPrevSibling +3MFindNextSibling +3MFindNextUTF8 +3MFindPrev +3MFindFirstChild +3MFindLastChild +3MFindLastSubChild +3MFindFirstSibling +3MFindLastSibling +3MConsistencyCheck +#lcl.IntfGraphics.TArrayNodesTree #rtl.System.TObject +3VRoot +3MFindNode +3MFindData +3MSetNode +3MDelete +3MClear 3MCreate 3MDestroy -3MUpdateScrollbars -3MGetControlClassDefaultSize -3MScrollBy -4PHorzScrollBar rw -4PVertScrollBar rw -#lcl.Forms.TScrollBox #lcl.Forms.TScrollingWinControl -2MWSRegisterClass +3MConsistencyCheck +#lcl.IntfGraphics.ILazImageReader #rtl.System.IUnknown +0MGetUpdateDescription +0MSetUpdateDescription +0PUpdateDescription rw +#lcl.IntfGraphics.ILazImageWriter #rtl.System.IUnknown +0MInitialize +0MFinalize +#lcl.IntfGraphics.TLazReaderXPM TFPCustomImageReader,#lcl.IntfGraphics.ILazImageReader +1VFWidth +1VFHeight +1VFColorCount +1VFCharsPerPixel +1VFXHot +1VFYHot +1VFPixelToColorTree +1VFContinue +1VFUpdateDescription +3MGetUpdateDescription +3MSetUpdateDescription +3MQueryInterface +3M_AddRef +3M_Release +2MClearPixelToColorTree +2MInternalRead +2MInternalCheck 3MCreate -4PAlign -4PAnchors -4PAutoSize -4PAutoScroll -4PBorderSpacing -4PBiDiMode -4PBorderStyle -4PChildSizing -4PClientHeight -4PClientWidth -4PConstraints -4PDockSite -4PDragCursor -4PDragKind -4PDragMode -4PEnabled -4PColor -4PFont -4PParentBiDiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PTabOrder -4PTabStop -4PVisible -4POnClick -4POnConstrainedResize -4POnDblClick -4POnDockDrop -4POnDockOver -4POnDragDrop -4POnDragOver -4POnEndDock -4POnEndDrag -4POnEnter -4POnExit -4POnGetSiteInfo -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnResize -4POnStartDock -4POnStartDrag -4POnUnDock -4POnPaint -#lcl.Forms.TCustomFrame #lcl.Forms.TScrollingWinControl -1MAddActionList -1MRemoveActionList -1MReadDesignLeft -1MReadDesignTop -1MWriteDesignLeft -1MWriteDesignTop -2MWSRegisterClass -2MNotification -2MSetParent -2MDefineProperties -2MCalculatePreferredSize +3MDestroy +3PUpdateDescription rw +#lcl.IntfGraphics.TLazWriterXPM TFPCustomImageWriter +1VFNibblesPerSample +1VFRightShiftSample +1VFContinue +1MSetNibblesPerSample +2MInternalWrite 3MCreate -3MGetChildren -3MGetControlClassDefaultSize -#lcl.Forms.TFrame #lcl.Forms.TCustomFrame -1VFLCLVersion -1MLCLVersionIsStored +3PNibblesPerSample rw +#lcl.IntfGraphics.TLazReaderDIB TFPCustomImageReader,#lcl.IntfGraphics.ILazImageReader +1VFImage +1VFMaskMode +1VFMaskColor +1VFMaskIndex +1VFReadSize +1VFDIBinfo +1VFPalette +1VFLineBuf +1VFUpdateDescription +1VFContinue +1VFIgnoreAlpha +1MBitfieldsToFPColor +1MRGBToFPColor +3MGetUpdateDescription +3MSetUpdateDescription +3MQueryInterface +3M_AddRef +3M_Release +2MInitLineBuf +2MFreeLineBuf +2MReadScanLine +2MWriteScanLine +2MInternalRead +2MInternalReadHead +2MInternalReadBody +2MInternalCheck +2PReadSize r +2PLineBuf r +2PInfo r 3MCreate -4PAlign -4PAnchors -4PAutoScroll -4PAutoSize -4PBiDiMode -4PBorderSpacing -4PChildSizing -4PClientHeight -4PClientWidth -4PColor -4PConstraints -4PDockSite -4PDragCursor -4PDragKind -4PDragMode -4PEnabled -4PFont -4PLCLVersion rws -4POnClick -4POnConstrainedResize -4POnContextPopup -4POnDblClick -4POnDockDrop -4POnDockOver -4POnDragDrop -4POnDragOver -4POnEndDock -4POnEndDrag -4POnEnter -4POnExit -4POnGetSiteInfo -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnResize -4POnStartDock -4POnStartDrag -4POnUnDock -4PParentBiDiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PTabOrder -4PTabStop -4PVisible -#lcl.Forms.TCustomForm #lcl.Forms.TScrollingWinControl -1VFActive -1VFActiveControl -1VFActiveDefaultControl -1VFAllowDropFiles -1VFAlphaBlend -1VFAlphaBlendValue -1VFBorderIcons -1VFDefaultControl -1VFCancelControl -1VFDefaultMonitor -1VFDesigner -1VFFormStyle -1VFFormUpdateCount -1VFFormHandlers -1VFHelpFile -1VFIcon -1VFOnShowModalFinished -1VFPopupMode -1VFPopupParent -1VFSmallIconHandle -1VFBigIconHandle -1VFKeyPreview -1VFMenu -1VFModalResult -1VFLastFocusedControl -1VFOldBorderStyle -1VFOnActivate -1VFOnClose -1VFOnCloseQuery -1VFOnCreate -1VFOnDeactivate -1VFOnDestroy -1VFOnDropFiles -1VFOnHelp -1VFOnHide -1VFOnShortcut -1VFOnShow -1VFOnWindowStateChange -1VFPixelsPerInch -1VFPosition -1VFRealizedShowInTaskBar -1VFRestoredLeft -1VFRestoredTop -1VFRestoredWidth -1VFRestoredHeight -1VFShowInTaskbar -1VFWindowState -1VFDesignTimeDPI -1MGetClientHandle -1MGetEffectiveShowInTaskBar -1MGetMonitor -1MGetPixelsPerInch -1MIsAutoScrollStored -1MIsForm -1MIsIconStored -1MCloseModal -1MFreeIconHandles -1MIconChanged -1MMoved -1MSetActive -1MSetActiveControl -1MSetActiveDefaultControl -1MSetAllowDropFiles -1MSetAlphaBlend -1MSetAlphaBlendValue -1MSetBorderIcons -1MSetFormBorderStyle -1MSetCancelControl -1MSetDefaultControl -1MSetFormStyle -1MSetIcon -1MSetMenu -1MSetPopupMode -1MSetPopupParent -1MSetPosition -1MSetShowInTaskbar -1MSetLastFocusedControl -1MSetWindowFocus -1MSetWindowState -1MWMActivate -1MWMCloseQuery -1MWMHelp -1MWMMove -1MWMShowWindow -1MWMSize -1MWMWindowPosChanged -1MCMBiDiModeChanged -1MCMParentBiDiModeChanged -1MCMAppShowBtnGlyphChanged -1MCMAppShowMenuGlyphChanged -1MCMIconChanged -1MCMRelease -1MCMActivate -1MCMDeactivate -1MAddHandler -1MRemoveHandler -1MFindDefaultForActiveControl -1MUpdateMenu -1MUpdateShowInTaskBar -2VFActionLists -2VFFormBorderStyle -2VFFormState -2MWSRegisterClass -2MCMShowingChanged -2MDoShowWindow -2MActivate -2MActiveChanged -2MAdjustClientRect -2MBeginFormUpdate -2MColorIsStored -2MCreateParams -2MCreateWnd -2MDeactivate -2MDoClose -2MDoCreate -2MDoDestroy -2MDoHide -2MDoShow -2MEndFormUpdate -2MHandleCreateException -2MHandleDestroyException -2MHandleShowHideException -2MInitializeWnd -2MLoaded -2MChildHandlesCreated -2MNotification -2MPaintWindow -2MRequestAlign -2MResizing -2MCalculatePreferredSize -2MSetZOrder -2MSetParent -2MMoveToDefaultPosition -2MUpdateShowing -2MSetVisible -2MAllAutoSized -2MDoFirstShow -2MUpdateWindowState -2MVisibleChanging -2MVisibleChanged -2MWndProc -2MVisibleIsStored -2MDoSendBoundsToInterface -2MDoAutoSize -2MSetAutoSize -2MSetAutoScroll -2MDoAddActionList -2MDoRemoveActionList -2MBeginAutoDrag -2MDoDock -2MGetFloating -2MGetDefaultDockCaption -2MCMActionExecute -2MCMActionUpdate -2MDoExecuteAction -2MDoUpdateAction -2MUpdateActions -2PClientHandle r +3MDestroy +3PMaskColor rw +3PMaskMode rw +3PUpdateDescription rw +#lcl.IntfGraphics.TLazReaderBMP #lcl.IntfGraphics.TLazReaderDIB +1VFDataOffset +2MInternalCheck +2MInternalReadHead +#lcl.IntfGraphics.TLazWriterBMP TFPWriterBMP,#lcl.IntfGraphics.ILazImageWriter +3MQueryInterface +3M_AddRef +3M_Release +3MInitialize +3MFinalize +#lcl.IntfGraphics.TLazReaderIconDIB #lcl.IntfGraphics.TLazReaderDIB +2MInternalRead +#lcl.IntfGraphics.TLazReaderPNG TFPReaderPNG,#lcl.IntfGraphics.ILazImageReader +1VFAlphaPalette +1VFUpdateDescription +3MGetUpdateDescription +3MSetUpdateDescription +3MQueryInterface +3M_AddRef +3M_Release +2MDoDecompress +2MHandleAlpha +2MInternalRead +3PUpdateDescription rw +#lcl.IntfGraphics.TLazWriterPNG TFPWriterPNG,#lcl.IntfGraphics.ILazImageWriter +3MQueryInterface +3M_AddRef +3M_Release +3MInitialize +3MFinalize +#lcl.IntfGraphics.TLazReaderTiff TFPReaderTiff,#lcl.IntfGraphics.ILazImageReader +1VFUpdateDescription +2MDoCreateImage +3MGetUpdateDescription +3MSetUpdateDescription +3MQueryInterface +3M_AddRef +3M_Release +2MInternalRead +3PUpdateDescription rw +#lcl.IntfGraphics.TLazWriterTiff TFPWriterTiff,#lcl.IntfGraphics.ILazImageWriter +3MQueryInterface +3M_AddRef +3M_Release +2MInternalWrite +3MInitialize +3MFinalize +#lcl.IntfGraphics.TLazReaderIcnsPart TFPCustomImageReader,#lcl.IntfGraphics.ILazImageReader +1VFUpdateDescription +1VFPalette +1VFImage +1VFData +1VFCalcSize +1VFDataSize +1VFIconType +1VFIconInfo +2MInternalCheck +2MInternalRead +2MSetupRead +2MCreate256ColorPalette +2MDoReadRaw +2MDoReadRLE +2MDoReadJpeg2000 +2MDoReadMask +3MGetUpdateDescription +3MSetUpdateDescription +3MQueryInterface +3M_AddRef +3M_Release +3MCreate +3MDestroy +3PUpdateDescription rw +3PIconType r +3PDataSize r +#lcl.Themes.TThemeServices #rtl.System.TObject +1VFThemesAvailable +1VFUseThemes +1VFThemedControlsEnabled +1VFOnThemeChange +1VFDottedBrush +1MGetThemesEnabled +1MGetDottedBrush +2MInitThemes +2MUnloadThemeData +2MUseThemes +2MThemedControlsEnabled +2MInternalColorToRGB +2MInternalDrawParentBackground 3MCreate -3MCreateNew 3MDestroy -3MAfterConstruction -3MBeforeDestruction -3MGetControlClassDefaultSize -3MBigIconHandle -3MClose -3MCloseQuery -3MDefocusControl -3MDestroyWnd -3MEnsureVisible -3MFocusControl -3MFormIsUpdating -3MGetFormImage -3MGetRolesForControl -3MHide -3MIntfDropFiles -3MIntfHelp -3MIsShortcut -3MMakeFullyVisible -3MAutoSizeDelayedHandle -3MGetPreferredSize -3MRelease -3MCanFocus -3MSetFocus -3MSetFocusedControl -3MSetRestoredBounds -3MShow -3MShowModal -3MShowOnTop -3MSmallIconHandle -3MGetChildren -3MWantChildKey -3MRemoveAllHandlersOfObject -3MAddHandlerFirstShow -3MRemoveHandlerFirstShow -3MAddHandlerClose -3MRemoveHandlerClose -3MAddHandlerCreate -3MRemoveHandlerCreate -3MActiveMDIChild -3MGetMDIChildren -3MMDIChildCount -3MDock -3MUpdateDockCaption -3PActive r -3PActiveControl rw -3PActiveDefaultControl rw -3PAllowDropFiles rw -3PAlphaBlend rw -3PAlphaBlendValue rw -3PAutoScroll s -3PBorderIcons rw -3PBorderStyle rw -3PCancelControl rw -3PCaption s -3PColor -3PDefaultControl rw -3PDefaultMonitor rw -3PDesigner rw -3PDesignTimeDPI rw -3PFormState r -3PFormStyle rw -3PHelpFile rw -3PIcon rws -3PKeyPreview rw -3PMDIChildren r -3PMenu rw -3PModalResult rw -3PMonitor r -3PPopupMode rw -3PPopupParent rw -3POnActivate rw -3POnClose rws -3POnCloseQuery rws -3POnCreate rw -3POnDeactivate rw -3POnDestroy rw -3POnDropFiles rw -3POnHelp rw -3POnHide rw -3POnResize s -3POnShortcut rw -3POnShow rw -3POnShowModalFinished rw -3POnWindowStateChange rw -3PParentFont -3PPixelsPerInch rws -3PPosition rw -3PRestoredLeft r -3PRestoredTop r -3PRestoredWidth r -3PRestoredHeight r -3PShowInTaskBar rw -3PVisible s -3PWindowState rw -#lcl.Forms.TForm #lcl.Forms.TCustomForm -1VFLCLVersion -1MLCLVersionIsStored -2MCreateWnd -2MLoaded +3MIntfDoOnThemeChange +3MIsDisabled +3MIsPushed +3MIsHot +3MIsChecked +3MIsMixed +3MGetElementDetails +3MGetDetailSize +3MGetDetailRegion +3MGetStockImage +3MGetOption +3MGetTextExtent +3MColorToRGB +3MContentRect +3MDrawEdge +3MDrawElement +3MDrawIcon +3MDrawParentBackground +3MDrawText +3MHasTransparentParts +3MPaintBorder +3MUpdateThemes +3PDottedBrush r +3PThemesAvailable r +3PThemesEnabled r +3POnThemeChange rw +#lcl.Graphics.TGraphicsObject #rtl.Classes.TPersistent +1VFOnChanging +1VFOnChange +1MDoChange +2MChanging +2MChanged +2MLock +2MUnLock +3POnChanging rw +3POnChange rw +#lcl.Graphics.TFontHandleCacheDescriptor #lcl.LCLResCache.TResourceCacheDescriptor +3VLogFont +3VLongFontName +#lcl.Graphics.TFontHandleCache #lcl.LCLResCache.TResourceCache +2MRemoveItem 3MCreate -3MCascade -3MNext -3MPrevious -3MTile -3PClientHandle -3PDockManager -4PAction -4PActiveControl -4PAlign -4PAllowDropFiles -4PAlphaBlend -4PAlphaBlendValue -4PAnchors -4PAutoScroll -4PAutoSize -4PBiDiMode -4PBorderIcons -4PBorderStyle -4PBorderWidth -4PCaption -4PChildSizing -4PClientHeight -4PClientWidth -4PColor -4PConstraints -4PDefaultMonitor -4PDockSite -4PDragKind -4PDragMode -4PEnabled -4PFont -4PFormStyle -4PHelpFile -4PIcon -4PKeyPreview -4PMenu -4POnActivate -4POnChangeBounds -4POnClick -4POnClose -4POnCloseQuery -4POnContextPopup -4POnCreate -4POnDblClick -4POnDeactivate -4POnDestroy -4POnDockDrop -4POnDockOver -4POnDragDrop -4POnDragOver -4POnDropFiles -4POnEndDock -4POnGetSiteInfo -4POnHelp -4POnHide -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnPaint -4POnResize -4POnShortCut -4POnShow -4POnShowHint -4POnStartDock -4POnUnDock -4POnUTF8KeyPress -4POnWindowStateChange -4PParentBiDiMode -4PParentFont -4PPixelsPerInch -4PPopupMenu -4PPopupMode -4PPopupParent -4PPosition -4PSessionProperties -4PShowHint -4PShowInTaskBar -4PUseDockManager -4PLCLVersion rws -4PVisible -4PWindowState -#lcl.Forms.TCustomDockForm #lcl.Forms.TCustomForm -2MDoAddDockClient -2MDoRemoveDockClient -2MGetSiteInfo -2MLoaded +3MCompareDescriptors +3MFindFont +3MFindFontDesc +3MAdd +#lcl.Graphics.TFont TFPCustomFont +1VFCanUTF8 +1VFCanUTF8Valid +1VFIsMonoSpace +1VFIsMonoSpaceValid +1VFOrientation +1VFPitch +1VFQuality +1VFStyle +1VFCharSet +1VFPixelsPerInch +1VFUpdateCount +1VFChanged +1VFFontHandleCached +1VFColor +1VFHeight +1VFReference +1MFreeReference +1MGetCanUTF8 +1MGetHandle +1MGetData +1MGetIsMonoSpace +1MGetReference +1MIsHeightStored +1MIsNameStored +1MSetData +1MSetHandle +1MReferenceNeeded +2MGetCharSet +2MGetHeight +2MGetName +2MGetOrientation +2MGetPitch +2MGetSize +2MGetStyle +2MChanged +2MDoAllocateResources +2MDoCopyProps +2MDoDeAllocateResources +2MSetCharSet +2MSetColor +2MGetColor +2MSetFlags +2MSetFPColor +2MSetHeight +2MSetName +2MSetOrientation +2MSetPitch +2MSetSize +2MSetStyle +2MSetQuality 3MCreate -3PAutoScroll -3PBorderStyle -3PFormStyle -4PPixelsPerInch -#lcl.Forms.THintWindow #lcl.Forms.TCustomForm -1VFActivating -1VFAlignment -1VFHintRect -1VFHintData -1VFAutoHide -1VFAutoHideTimer -1VFHideInterval -1MAdjustBoundsForMonitor -1MGetDrawTextFlags -1MSetAutoHide -1MAutoHideHint -1MSetHideInterval -1MSetHintRectAdjust -2MWSRegisterClass -2MWMNCHitTest -2MActivateSub -2MDoShowWindow -2MUpdateRegion +3MDestroy +3MAssign +3MBeginUpdate +3MEndUpdate +3PFontData rw +3MHandleAllocated +3PHandle rw +3MIsDefault +3MIsEqual +3PIsMonoSpace r +3MSetDefault +3PCanUTF8 r +3PPixelsPerInch rw +3PReference r +4PCharSet rw +4PColor rw +4PHeight rws +4PName rws +4POrientation rw +4PPitch rw +4PQuality rw +4PSize rws +4PStyle rw +#lcl.Graphics.TPenHandleCacheDescriptor #lcl.LCLResCache.TResourceCacheDescriptor +3VExtPen +3VPattern +#lcl.Graphics.TPenHandleCache #lcl.LCLResCache.TResourceCache +2MRemoveItem +3MCreate +3MCompareDescriptors +3MFindPen +3MFindPenDesc +3MAdd +#lcl.Graphics.TPen TFPCustomPen +1VFColor +1VFEndCap +1VFCosmetic +1VFJoinStyle +1VFPattern +1VFPenHandleCached +1VFReference +1MFreeReference +1MGetHandle +1MGetReference +1MReferenceNeeded +1MSetCosmetic +1MSetHandle +2MDoAllocateResources +2MDoDeAllocateResources +2MDoCopyProps 2MSetColor -2MUseThemes +2MSetFPColor +2MSetEndCap +2MSetJoinStyle +2MSetMode +2MSetStyle +2MSetWidth +3MCreate +3MDestroy +3MAssign +3PHandle rw +3PReference r +3MGetPattern +3MSetPattern +4PColor rw +4PCosmetic rw +4PEndCap rw +4PJoinStyle rw +4PMode +4PStyle +4PWidth +#lcl.Graphics.TBrushHandleCache #lcl.LCLResCache.TBlockResourceCache +2MRemoveItem +3MCreate +#lcl.Graphics.TBrush TFPCustomBrush +1VFBrushHandleCached +1VFColor +1VFBitmap +1VFReference +1VFInternalUpdateIndex +1MFreeReference +1MGetHandle +1MGetReference +1MGetColor +1MReferenceNeeded +1MSetHandle +1MDoChange +2MDoAllocateResources +2MDoDeAllocateResources +2MDoCopyProps +2MSetColor +2MSetFPColor +2MSetBitmap +2MSetStyle +3MAssign +3MCreate +3MDestroy +3MEqualsBrush +3PBitmap rw +3PHandle rw +3PReference r +4PColor rw +4PStyle +#lcl.Graphics.TRegion #lcl.Graphics.TGraphicsObject +1VFReference +1MAddOperation +1MClearSubRegions +1MAddSubRegion +1MFreeReference +1MGetReference +1MGetHandle +1MReferenceNeeded +1MSetHandle +2MSetClipRect +2MGetClipRect +3MCreate +3MDestroy +3MAssign +3MAddRectangle +3PClipRect rw +3PHandle rw +3PReference r +#lcl.Graphics.TGraphic #rtl.Classes.TPersistent +1VFModified +1VFOnChange +1VFOnProgress +1VFPaletteModified +2MChanged +2MEquals +2MDefineProperties +2MDraw +2MGetEmpty +2MGetHeight +2MGetMimeType +2MGetPalette +2MGetTransparent +2MGetWidth +2MProgress +2MReadData +2MSetHeight +2MSetPalette +2MSetTransparent +2MSetWidth +2MSetModified +2MWriteData +3MAssign +3MCreate +3MClear +3MLazarusResourceTypeValid +3MLoadFromFile +3MLoadFromStream +3MLoadFromMimeStream +3MLoadFromLazarusResource +3MLoadFromResourceName +3MLoadFromResourceID +3MLoadFromClipboardFormat +3MLoadFromClipboardFormatID +3MSaveToFile +3MSaveToStream +3MSaveToClipboardFormat +3MSaveToClipboardFormatID +3MGetSupportedSourceMimeTypes +3MGetResourceType +3MGetFileExtensions +3MIsStreamFormatSupported +3PEmpty r +3PHeight rw +3PModified rw +3PMimeType r +3POnChange rw +3POnProgress rw +3PPalette rw +3PPaletteModified rw +3PTransparent rw +3PWidth rw +#lcl.Graphics.TPicture #rtl.Classes.TPersistent +1VFGraphic +1VFOnChange +1VFOnProgress +1MForceType +1MGetBitmap +1MGetIcon +1MGetJpeg +1MGetPNG +1MGetPNM +1MGetPixmap +1MGetHeight +1MGetWidth +1MReadData +1MSetBitmap +1MSetIcon +1MSetJpeg +1MSetPNG +1MSetPNM +1MSetPixmap +1MSetGraphic +1MWriteData +2MAssignTo +2MChanged +2MDefineProperties +2MProgress +2MLoadFromStreamWithClass 3MCreate 3MDestroy -3MActivateHint -3MActivateWithBounds -3MActivateHintData -3MCalcHintRect -3MOffsetHintRect -3MInitializeWnd -3MIsHintMsg -3MReleaseHandle -3MPaint -3MSetBounds -3MGetControlClassDefaultSize -3POnMouseDown -3PAlignment rw -3PHintRect rw -3PHintRectAdjust rw -3PHintData rw -3PAutoHide rw -3PBiDiMode -3PHideInterval rw -#lcl.Forms.THintWindowRendered #lcl.Forms.THintWindow +3MClear +3MLoadFromClipboardFormat +3MLoadFromClipboardFormatID +3MLoadFromFile +3MLoadFromResourceName +3MLoadFromLazarusResource +3MLoadFromStream +3MLoadFromStreamWithFileExt +3MSaveToClipboardFormat +3MSaveToFile +3MSaveToStream +3MSaveToStreamWithFileExt +3MSupportsClipboardFormat +3MAssign +3MRegisterFileFormat +3MRegisterClipboardFormat +3MUnregisterGraphicClass +3MFindGraphicClassWithFileExt +3PBitmap rw +3PIcon rw +3PJpeg rw +3PPixmap rw +3PPNG rw +3PPNM rw +3PGraphic rw +3PHeight r +3PWidth r +3POnChange rw +3POnProgress rw +#lcl.Graphics.EGraphicException #rtl.sysutils.Exception +#lcl.Graphics.EInvalidGraphic #lcl.Graphics.EGraphicException +#lcl.Graphics.EInvalidGraphicOperation #lcl.Graphics.EGraphicException +#lcl.Graphics.TCanvas TFPCustomCanvas +1VFAntialiasingMode +1VFAutoRedraw +1VFState +1VFSavedFontHandle +1VFSavedPenHandle +1VFSavedBrushHandle +1VFSavedRegionHandle +1VFCopyMode +1VFHandle +1VFOnChange +1VFOnChanging +1VFTextStyle +1VFLock +1VFRegion +1VFLazPen +1VFLazFont +1VFLazBrush +1VFSavedHandleStates +1MBrushChanged +1MFontChanged +1MPenChanged +1MRegionChanged +1MGetHandle +1MSetAntialiasingMode +1MSetAutoRedraw +1MSetLazFont +1MSetLazPen +1MSetLazBrush +1MSetRegion +2MDoCreateDefaultFont +2MDoCreateDefaultPen +2MDoCreateDefaultBrush +2MSetColor +2MGetColor +2MSetHeight +2MGetHeight +2MSetWidth +2MGetWidth +2MSetPenPos +2MDoLockCanvas +2MDoUnlockCanvas +2MDoTextOut +2MDoGetTextSize +2MDoGetTextHeight +2MDoGetTextWidth +2MDoRectangle +2MDoRectangleFill +2MDoRectangleAndFill +2MDoEllipse +2MDoEllipseFill +2MDoEllipseAndFill +2MDoPolygon +2MDoPolygonFill +2MDoPolygonAndFill +2MDoPolyline +2MDoPolyBezier +2MDoFloodFill +2MDoMoveTo +2MDoLineTo +2MDoLine +2MDoCopyRect +2MDoDraw +2MCheckHelper +2MGetDefaultColor +2MGetClipRect +2MSetClipRect +2MGetClipping +2MSetClipping +2MGetPixel +2MCreateBrush +2MCreateFont +2MCreateHandle +2MCreatePen +2MCreateRegion +2MDeselectHandles +2MPenChanging +2MFontChanging +2MBrushChanging +2MRegionChanging +2MRealizeAutoRedraw +2MRealizeAntialiasing +2MRequiredState +2MSetHandle +2MSetInternalPenPos +2MSetPixel +2MFreeHandle 3MCreate 3MDestroy -3MActivateRendered -#lcl.Forms.TMonitor #rtl.System.TObject +3MLock +3MTryLock +3MUnlock +3MRefresh +3MChanging +3MChanged +3MSaveHandleState +3MRestoreHandleState +3MArc +3MArcTo +3MAngleArc +3MBrushCopy +3MChord +3MCopyRect +3MDraw +3MDrawFocusRect +3MStretchDraw +3MEllipse +3MFillRect +3MFloodFill +3MFrame3D +3MFrame +3MFrameRect +3MGetTextMetrics +3MGradientFill +3MRadialPie +3MPie +3MPolyBezier +3MPolygon +3MPolyline +3MRectangle +3MRoundRect +3MTextOut +3MTextRect +3MTextExtent +3MTextHeight +3MTextWidth +3MTextFitInfo +3MHandleAllocated +3MGetUpdatedHandle +3PPixels rw +3PHandle rw +3PTextStyle rw +4PAntialiasingMode rw +4PAutoRedraw rw +4PBrush rw +4PCopyMode rw +4PFont rw +4PHeight r +4PPen rw +4PRegion rw +4PWidth r +4POnChange rw +4POnChanging rw +#lcl.Graphics.TSharedImage #rtl.System.TObject +1VFRefCount +2MReference +2MRelease +2MFreeHandle +2PRefCount r +3MHandleAllocated +#lcl.Graphics.TSharedRasterImage #lcl.Graphics.TSharedImage 1VFHandle -1VFMonitorNum -1MGetInfo -1MGetLeft +1VFBitmapCanvas +1VFSaveStream +2MFreeHandle +2MReleaseHandle +2MIsEmpty +3MCreate +3MCreateDefaultHandle +3MDestroy +3MHandleAllocated +3PBitmapCanvas rw +3PSaveStream rw +#lcl.Graphics.TRasterImage #lcl.Graphics.TGraphic +1VFCanvas +1VFTransparentColor +1VFTransparentMode +1VFUpdateCount +1VFUpdateCanvasOnly +1VFMasked +1MCanvasChanging +1MCreateCanvas +1MCreateMask +1MFreeCanvasContext +1MGetCanvas +1MGetRawImage +1MGetScanline +1MGetTransparentColor +1MSetTransparentColor +2VFSharedImage +2MCanShareImage +2MChanged +2MCreateDefaultBitmapHandle +2MDraw +2MGetEmpty +2MGetHandle +2MGetBitmapHandle +2MGetMasked +2MGetMaskHandle +2MGetMimeType +2MGetPixelFormat +2MGetRawImagePtr +2MGetRawImageDescriptionPtr +2MGetTransparent +2MGetSharedImageClass +2MGetHeight +2MGetWidth +2MBitmapHandleNeeded +2MHandleNeeded +2MMaskHandleNeeded +2MPaletteNeeded +2MInternalReleaseBitmapHandle +2MInternalReleaseMaskHandle +2MInternalReleasePalette +2MSetBitmapHandle +2MSetMasked +2MSetMaskHandle +2MSetTransparent +2MUnshareImage +2MUpdateHandles +2MSaveStreamNeeded +2MFreeSaveStream +2MReadData +2MReadStream +2MSetSize +2MSetHandle +2MSetHeight +2MSetWidth +2MSetTransparentMode +2MSetPixelFormat +2MWriteData +2MWriteStream +2MRequestTransparentColor +3MCreate +3MDestroy +3MAssign +3MClear +3MBeginUpdate +3MEndUpdate +3MFreeImage +3MBitmapHandleAllocated +3MMaskHandleAllocated +3MPaletteAllocated +3MLoadFromBitmapHandles +3MLoadFromDevice +3MLoadFromStream +3MLoadFromMimeStream +3MLoadFromRawImage +3MLoadFromIntfImage +3MSaveToStream +3MGetSupportedSourceMimeTypes +3MGetSize +3MMask +3MSetHandles +3MReleaseBitmapHandle +3MReleaseMaskHandle +3MReleasePalette +3MCreateIntfImage +3PCanvas r +3MHandleAllocated +3PBitmapHandle rw +3PMasked rw +3PMaskHandle rw +3PPixelFormat rw +3PRawImage r +3PScanLine r +3PTransparentColor rw +3PTransparentMode rw +#lcl.Graphics.TSharedCustomBitmap #lcl.Graphics.TSharedRasterImage +1VFHandleType +1VFImage +1VFHasMask +1VFPalette 1MGetHeight -1MGetTop 1MGetWidth -1MGetBoundsRect -1MGetWorkareaRect -1MGetPrimary -3PHandle r -3PMonitorNum r -3PLeft r +2MFreeHandle +2MFreePalette +2MFreeImage +2MReleasePalette +2MGetPixelFormat +2MIsEmpty +3MCreate +3MDestroy +3MHandleAllocated +3MImageAllocated +3PHandleType rw 3PHeight r -3PTop r +3PPixelFormat r 3PWidth r -3PBoundsRect r -3PWorkareaRect r -3PPrimary r -#lcl.Forms.TMonitorList #rtl.Classes.TList -1MGetItem -1MSetItem -2MNotify -3PItems rw -#lcl.Forms.TScreen #lcl.LCLClasses.TLCLComponent -1VFActiveControl -1VFActiveCustomForm -1VFActiveForm -1VFCursor -1VFCursorMap -1VFCustomForms -1VFCustomFormsZOrdered -1VFDefaultCursor -1VFHintFont -1VFFocusedForm -1VFFonts -1VFFormList -1VFDataModuleList -1VFIconFont -1VFMenuFont -1VFScreenHandlers -1VFLastActiveControl -1VFLastActiveCustomForm -1VFMonitors -1VFOnActiveControlChange -1VFOnActiveFormChange -1VFPixelsPerInch -1VFSaveFocusedList -1VFSystemFont -1MDeleteCursor -1MDestroyCursors -1MDestroyMonitors -1MGetCursors -1MGetCustomFormCount -1MGetCustomFormZOrderCount -1MGetCustomForms -1MGetCustomFormsZOrdered -1MGetDataModuleCount -1MGetDataModules -1MGetDesktopLeft -1MGetDesktopTop -1MGetDesktopHeight -1MGetDesktopWidth -1MGetDesktopRect -1MGetFonts -1MGetFormCount -1MGetForms -1MGetHeight -1MGetMonitor -1MGetMonitorCount -1MGetPrimaryMonitor -1MGetWidth -1MAddForm -1MRemoveForm -1MSetFocusedForm -1MSetCursor -1MSetCursors -1MSetHintFont -1MSetIconFont -1MSetMenuFont -1MSetSystemFont -1MUpdateLastActive -1MRestoreLastActive -1MAddHandler -1MRemoveHandler -1MDoAddDataModule -1MDoRemoveDataModule -1MNotifyScreenFormHandler -1MGetWorkAreaHeight -1MGetWorkAreaLeft -1MGetWorkAreaRect -1MGetWorkAreaTop -1MGetWorkAreaWidth -2MGetHintFont -2MGetIconFont -2MGetMenuFont -2MGetSystemFont +#lcl.Graphics.TCustomBitmap #lcl.Graphics.TRasterImage +1VFPixelFormat +1VFPixelFormatNeedsUpdate +1VFMaskHandle +1MGetHandleType +1MGetMonochrome +1MSetBitmapHandle +1MSetHandleType +1MSetMonochrome +1MUpdatePixelFormat +2MMaskHandleNeeded +2MPaletteNeeded +2MCanShareImage +2MChanged +2MCreateDefaultBitmapHandle +2MFreeMaskHandle +2MGetBitmapHandle +2MGetMaskHandle +2MGetPalette +2MGetPixelFormat +2MGetRawImagePtr +2MGetRawImageDescriptionPtr +2MHandleNeeded +2MInternalReleaseBitmapHandle +2MInternalReleaseMaskHandle +2MInternalReleasePalette +2MRawimageNeeded +2MSetHandle +2MSetPixelFormat +2MUnshareImage +2MUpdateHandles +3MCreate +3MDestroy +3MAssign +3MClear +3MFreeImage +3MLazarusResourceTypeValid +3MBitmapHandleAllocated +3MMaskHandleAllocated +3MPaletteAllocated +3MReleaseHandle +3MSetHandles +3MSetSize +3PHandle rw +3PHandleType rw +3PMonochrome rw +#lcl.Graphics.TFPImageBitmap #lcl.Graphics.TCustomBitmap +2MGetMimeType +2MGetReaderClass +2MGetWriterClass +2MInitializeReader +2MInitializeWriter +2MFinalizeReader +2MFinalizeWriter +2MReadStream +2MWriteStream +3MGetFileExtensions +3MIsStreamFormatSupported +3MIsFileExtensionSupported +3MLazarusResourceTypeValid +#lcl.Graphics.TSharedBitmap #lcl.Graphics.TSharedCustomBitmap +#lcl.Graphics.TBitmap #lcl.Graphics.TFPImageBitmap +2MInitializeReader +2MGetReaderClass +2MGetWriterClass +2MGetSharedImageClass +3MGetFileExtensions +3MGetResourceType +3MLoadFromStream +#lcl.Graphics.TSharedPixmap #lcl.Graphics.TSharedCustomBitmap +#lcl.Graphics.TPixmap #lcl.Graphics.TFPImageBitmap +2MGetReaderClass +2MGetWriterClass +2MGetSharedImageClass +3MLazarusResourceTypeValid +3MGetFileExtensions +#lcl.Graphics.TSharedPortableNetworkGraphic #lcl.Graphics.TSharedCustomBitmap +#lcl.Graphics.TPortableNetworkGraphic #lcl.Graphics.TFPImageBitmap +2MGetReaderClass +2MGetWriterClass +2MInitializeWriter +2MGetSharedImageClass +3MIsStreamFormatSupported +3MGetFileExtensions +#lcl.Graphics.TSharedPortableAnyMapGraphic #lcl.Graphics.TSharedCustomBitmap +#lcl.Graphics.TPortableAnyMapGraphic #lcl.Graphics.TFPImageBitmap +2MGetReaderClass +2MGetWriterClass +2MGetSharedImageClass +3MIsStreamFormatSupported +3MGetFileExtensions +#lcl.Graphics.TSharedIcon #lcl.Graphics.TSharedRasterImage +1VFImages +2MFreeHandle +2MUpdateFromHandle +2MIsEmpty +2MGetImage 3MCreate 3MDestroy -3MCustomFormIndex -3MFormIndex -3MCustomFormZIndex -3MMoveFormToFocusFront -3MMoveFormToZFront -3MGetCurrentModalForm -3MGetCurrentModalFormZIndex -3MCustomFormBelongsToActiveGroup -3MFindNonDesignerForm -3MFindForm -3MFindNonDesignerDataModule -3MFindDataModule -3MUpdateMonitors -3MUpdateScreen -3MRemoveAllHandlersOfObject -3MAddHandlerFormAdded -3MRemoveHandlerFormAdded -3MAddHandlerRemoveForm -3MRemoveHandlerRemoveForm -3MAddHandlerActiveControlChanged -3MRemoveHandlerActiveControlChanged -3MAddHandlerActiveFormChanged -3MRemoveHandlerActiveFormChanged -3MAddHandlerFormVisibleChanged -3MRemoveHandlerFormVisibleChanged -3MDisableForms -3MEnableForms -3MMonitorFromPoint -3MMonitorFromRect -3MMonitorFromWindow -3PActiveControl r -3PActiveCustomForm r -3PActiveForm r -3PCursor rw -3PCursors rw -3PCustomFormCount r -3PCustomForms r -3PCustomFormZOrderCount r -3PCustomFormsZOrdered r -3PDesktopLeft r -3PDesktopTop r -3PDesktopHeight r -3PDesktopWidth r -3PDesktopRect r -3PFocusedForm r -3PFormCount r -3PForms r -3PDataModuleCount r -3PDataModules r -3PHintFont rw -3PIconFont rw -3PMenuFont rw -3PSystemFont rw -3PFonts r +3MClear +3MDelete +3MGetIndex +3MGetImagesClass +3MAdd +3MCount +3PImages r +#lcl.Graphics.TIconImage #rtl.System.TObject +1VFHeight +1VFPixelFormat +1VFWidth +1VFImage +1VFHandle +1VFMaskHandle +1VFPalette +1MGetPalette +2MRawImageNeeded +2MUpdateFromImage +3MCreate +3MDestroy +3MReleaseHandle +3MReleaseMaskHandle +3MReleasePalette +3MUpdateHandles 3PHeight r -3PMonitorCount r -3PMonitors r -3PPixelsPerInch r -3PPrimaryMonitor r 3PWidth r -3PWorkAreaRect r -3PWorkAreaHeight r -3PWorkAreaLeft r -3PWorkAreaTop r -3PWorkAreaWidth r -3POnActiveControlChange rw -3POnActiveFormChange rw -#lcl.Forms.TApplication #fcl.CustApp.TCustomApplication -1VFApplicationHandlers -1VFApplicationType -1VFCaptureExceptions -1VFComponentsToRelease -1VFComponentsReleasing -1VFCreatingForm -1VFExceptionDialog -1VFExtendedKeysSupport -1VFFindGlobalComponentEnabled -1VFFlags -1VFHint -1VFHintColor -1VFHintControl -1VFHintHidePause -1VFHintHidePausePerChar -1VFHintPause -1VFHintRect -1VFHintShortCuts -1VFHintShortPause -1VFHintTimer -1VFHintTimerType -1VFHintWindow -1VFIcon -1VFBigIconHandle -1VFLayoutAdjustmentPolicy -1VFMainFormOnTaskBar -1VFModalLevel -1VFMoveFormFocusToChildren -1VFOnGetMainFormHandle -1VFOnMessageDialogFinished -1VFOnModalBegin -1VFOnModalEnd -1VFShowButtonGlyphs -1VFShowMenuGlyphs -1VFSmallIconHandle -1VFIdleLockCount -1VFLastKeyDownSender -1VFLastKeyDownKey -1VFLastKeyDownShift -1VFMainForm -1VFMouseControl -1VFNavigation -1VFOldExceptProc -1VFOldExitProc -1VFOnActionExecute -1VFOnActionUpdate -1VFOnActivate -1VFOnDeactivate -1VFOnDestroy -1VFOnDropFiles -1VFOnHelp -1VFOnHint -1VFOnIdle -1VFOnIdleEnd -1VFOnEndSession -1VFOnQueryEndSession -1VFOnMinimize -1VFOnRestore -1VFOnShortcut -1VFOnShowHint -1VFOnUserInput -1VFAsyncCall -1VFShowHint -1VFShowMainForm -1VFLastMousePos -1VFLastMouseControl -1VFLastMouseControlValid -1VFBidiMode -1VFRestoreStayOnTop -1VFTaskBarBehavior -1VFUpdateFormatSettings -1MDoOnIdleEnd -1MGetActive -1MGetCurrentHelpFile -1MGetExename -1MGetMainFormHandle -1MGetTitle -1MFreeIconHandles -1MIconChanged -1MSetBidiMode -1MSetFlags -1MSetMainFormOnTaskBar -1MSetNavigation -1MSetShowButtonGlyphs -1MSetShowMenuGlyphs -1MSetTaskBarBehavior -1MUpdateMouseControl -1MUpdateMouseHint -1MSetCaptureExceptions -1MSetHint -1MSetHintColor -1MSetIcon -1MSetShowHint -1MStopHintTimer -1MValidateHelpSystem -1MWndProc -1MDispatchAction -1MAddHandler -1MRemoveHandler -1MRunLoop -1MActivate -1MDeactivate -2MGetConsoleApplication -2MNotifyIdleHandler -2MNotifyIdleEndHandler -2MNotifyActivateHandler -2MNotifyDeactivateHandler -2MNotifyCustomForms -2MIsHintMsg -2MDoOnHelp -2MDoOnMouseMove -2MShowHintWindow -2MOnHintTimer -2MSetTitle -2MStartHintTimer -2MUpdateVisible -2MDoIdleActions -2MMenuPopupHandler -2MProcessAsyncCallQueue -2MFreeComponent -2MReleaseComponents -2MDoBeforeFinalization -2MGetParams +3PPixelFormat r +3PHandle r +3PMaskHandle r +3PPalette r +3PRawImage r +#lcl.Graphics.TCustomIcon #lcl.Graphics.TRasterImage +1MGetCount +1MSetCurrent +2VFCurrent +2VFRequestedSize +2MMaskHandleNeeded +2MPaletteNeeded +2MCanShareImage +2MCheckRequestedSize +2MGetIndex +2MGetBitmapHandle +2MGetDefaultSize +2MGetMaskHandle +2MGetPalette +2MGetPixelFormat +2MGetRawImagePtr +2MGetRawImageDescriptionPtr +2MGetTransparent +2MGetSharedImageClass +2MGetStreamSignature +2MGetTypeID +2MHandleNeeded +2MInternalReleaseBitmapHandle +2MInternalReleaseMaskHandle +2MInternalReleasePalette +2MReadData +2MReadStream +2MSetMasked +2MSetPixelFormat +2MSetTransparent +2MUnshareImage +2MUpdateCurrentView +2MSetHandle +2MUpdateHandle +2MUpdateHandles +2MWriteStream 3MCreate -3MDestroy -3MActivateHint -3MGetControlAtMouse -3MControlDestroyed -3MBigIconHandle -3MSmallIconHandle -3MBringToFront -3MCreateForm -3MUpdateMainForm -3MQueueAsyncCall -3MRemoveAsyncCalls -3MReleaseComponent -3MExecuteAction -3MUpdateAction -3MHandleException -3MHandleMessage -3MHelpCommand -3MHelpContext -3MHelpKeyword -3MShowHelpForObject -3MRemoveStayOnTop -3MRestoreStayOnTop -3MIsWaiting -3MCancelHint -3MHideHint -3MHintMouseMessage -3MInitialize -3MMessageBox -3MMinimize -3MModalStarted -3MModalFinished -3MRestore -3MNotification -3MProcessMessages -3MIdle -3MRun -3MShowException -3MTerminate -3MDisableIdleHandler -3MEnableIdleHandler -3MNotifyUserInputHandler -3MNotifyKeyDownBeforeHandler -3MNotifyKeyDownHandler -3MControlKeyDown -3MControlKeyUp -3MAddOnIdleHandler -3MRemoveOnIdleHandler -3MAddOnIdleEndHandler -3MRemoveOnIdleEndHandler -3MAddOnUserInputHandler -3MRemoveOnUserInputHandler -3MAddOnKeyDownBeforeHandler -3MRemoveOnKeyDownBeforeHandler -3MAddOnKeyDownHandler -3MRemoveOnKeyDownHandler -3MAddOnActivateHandler -3MRemoveOnActivateHandler -3MAddOnDeactivateHandler -3MRemoveOnDeactivateHandler -3MAddOnExceptionHandler -3MRemoveOnExceptionHandler -3MAddOnEndSessionHandler -3MRemoveOnEndSessionHandler -3MAddOnQueryEndSessionHandler -3MRemoveOnQueryEndSessionHandler -3MAddOnMinimizeHandler -3MRemoveOnMinimizeHandler -3MAddOnModalBeginHandler -3MRemoveOnModalBeginHandler -3MAddOnModalEndHandler -3MRemoveOnModalEndHandler -3MAddOnRestoreHandler -3MRemoveOnRestoreHandler -3MAddOnDropFilesHandler -3MRemoveOnDropFilesHandler -3MAddOnHelpHandler -3MRemoveOnHelpHandler -3MAddOnHintHandler -3MRemoveOnHintHandler -3MAddOnShowHintHandler -3MRemoveOnShowHintHandler -3MAddOnGetMainFormHandleHandler -3MRemoveOnGetMainFormHandleHandler -3MRemoveAllHandlersOfObject -3MDoBeforeMouseMessage -3MIsShortcut -3MIntfQueryEndSession -3MIntfEndSession -3MIntfAppActivate -3MIntfAppDeactivate -3MIntfAppMinimize -3MIntfAppRestore -3MIntfDropFiles -3MIntfSettingsChange -3MIntfThemeOptionChange -3MIsRightToLeft -3MIsRTLLang -3MDirection -3MDoArrowKey -3MDoTabKey -3MDoEscapeKey -3MDoReturnKey -3PActive r -3PApplicationType rw -3PBidiMode rw -3PCaptureExceptions rw -3PExtendedKeysSupport rw -3PExceptionDialog rw -3PFindGlobalComponentEnabled rw -3PFlags rw -3PHint rw -3PHintColor rw -3PHintHidePause rw -3PHintHidePausePerChar rw -3PHintPause rw -3PHintShortCuts rw -3PHintShortPause rw -3PIcon rw -3PLayoutAdjustmentPolicy rw -3PNavigation rw -3PMainForm r -3PMainFormHandle r -3PMainFormOnTaskBar rw -3PModalLevel r -3PMoveFormFocusToChildren rw -3PMouseControl r -3PTaskBarBehavior rw -3PUpdateFormatSettings rw -3POnActionExecute rw -3POnActionUpdate rw -3POnActivate rw -3POnDeactivate rw -3POnGetMainFormHandle rw -3POnIdle rw -3POnIdleEnd rw -3POnEndSession rw -3POnQueryEndSession rw -3POnMinimize rw -3POnMessageDialogFinished rw -3POnModalBegin rw -3POnModalEnd rw -3POnRestore rw -3POnDropFiles rw -3POnHelp rw -3POnHint rw -3POnShortcut rw -3POnShowHint rw -3POnUserInput rw -3POnDestroy rw -3PShowButtonGlyphs rw -3PShowMenuGlyphs rw -3PShowHint rw -3PShowMainForm rw -3PTitle rw -#lcl.Forms.TApplicationProperties #lcl.LCLClasses.TLCLComponent -1VFCaptureExceptions -1VFExceptionDialogType -1VFHelpFile -1VFHint -1VFHintColor -1VFHintHidePause -1VFHintPause -1VFHintShortCuts -1VFHintShortPause -1VFOnActivate -1VFOnDeactivate -1VFOnDropFiles -1VFOnGetMainFormHandle -1VFOnModalBegin -1VFOnModalEnd -1VFShowButtonGlyphs -1VFShowHint -1VFShowMainForm -1VFShowMenuGlyphs -1VFTitle -1VFOnException -1VFOnIdle -1VFOnIdleEnd -1VFOnHelp -1VFOnHint -1VFOnShowHint -1VFOnUserInput -1VFOnEndSession -1VFOnQueryEndSession -1VFOnMinimize -1VFOnRestore -1MSetExceptionDialog -2MSetCaptureExceptions -2MSetHelpFile -2MSetHint -2MSetHintColor -2MSetHintHidePause -2MSetHintPause -2MSetHintShortCuts -2MSetHintShortPause -2MSetShowButtonGlyphs -2MSetShowMenuGlyphs -2MSetShowHint -2MSetShowMainForm -2MSetTitle -2MSetOnActivate -2MSetOnDeactivate -2MSetOnException -2MSetOnGetMainFormHandle -2MSetOnIdle -2MSetOnIdleEnd -2MSetOnEndSession -2MSetOnQueryEndSession -2MSetOnMinimize -2MSetOnModalBegin -2MSetOnModalEnd -2MSetOnRestore -2MSetOnDropFiles -2MSetOnHelp -2MSetOnHint -2MSetOnShowHint -2MSetOnUserInput +3MAdd +3MAssign +3MAssignImage +3MClear +3MDelete +3MRemove +3MGetDescription +3MSetSize +3MGetFileExtensions +3MLazarusResourceTypeValid +3MLoadFromResourceName +3MLoadFromResourceID +3MLoadFromResourceHandle +3MBitmapHandleAllocated +3MMaskHandleAllocated +3MPaletteAllocated +3MSetHandles +3MGetBestIndexForSize +3PCurrent rw +3PCount r +#lcl.Graphics.TIcon #lcl.Graphics.TCustomIcon +1MGetIconHandle +1MSetIconHandle +2MGetStreamSignature +2MGetTypeID +2MHandleNeeded +3MLoadFromResourceHandle +3MReleaseHandle +3MGetResourceType +3PHandle rw +#lcl.Graphics.TIcnsList #rtl.Classes.TList +1MGetItem +1MSetItem +2MNotify +3MAdd +3PItems rw +#lcl.Graphics.TSharedIcnsIcon #lcl.Graphics.TSharedIcon +#lcl.Graphics.TIcnsIcon #lcl.Graphics.TCustomIcon +1VFImageList +1VFMaskList +1MIcnsAdd +1MIcnsProcess +2MGetSharedImageClass +2MReadData +2MReadStream +2MWriteStream 3MCreate 3MDestroy -4PCaptureExceptions rw -4PExceptionDialog rw -4PHelpFile rw -4PHint rw -4PHintColor rw -4PHintHidePause rw -4PHintPause rw -4PHintShortCuts rw -4PHintShortPause rw -4PShowButtonGlyphs rw -4PShowMenuGlyphs rw -4PShowHint rw -4PShowMainForm rw -4PTitle rw -4POnActivate rw -4POnDeactivate rw -4POnException rw -4POnGetMainFormHandle rw -4POnIdle rw -4POnIdleEnd rw -4POnEndSession rw -4POnQueryEndSession rw -4POnMinimize rw -4POnModalBegin rw -4POnModalEnd rw -4POnRestore rw -4POnDropFiles rw -4POnHelp rw -4POnHint rw -4POnShowHint rw -4POnUserInput rw -#lcl.Forms.TIDesigner #rtl.System.TObject -2VFLookupRoot -2VFDefaultFormBoundsValid -3MIsDesignMsg -3MModified -3MNotification -3MPaintGrid -3MValidateRename -3MGetShiftState -3MSelectOnlyThisComponent -3MUniqueName -3MPrepareFreeDesigner -3PLookupRoot r -3PDefaultFormBoundsValid rw -#lcl.Forms.TFormPropertyStorage #lcl.Controls.TControlPropertyStorage -1MFormCreate -1MFormClose -1MFormDestroy +3MGetFileExtensions +3MLazarusResourceTypeValid +#lcl.Graphics.TSharedCursorImage #lcl.Graphics.TSharedIcon +2MFreeHandle +3MGetImagesClass +#lcl.Graphics.TCursorImageImage #lcl.Graphics.TIconImage +1VFHotSpot +3MCreate +3PHotSpot rw +#lcl.Graphics.TCursorImage #lcl.Graphics.TCustomIcon +1MGetHotSpot +1MSetHotSpot +1MGetCursorHandle +1MSetCursorHandle +2MHandleNeeded +2MGetDefaultSize +2MGetStreamSignature +2MGetSharedImageClass +2MGetTypeID +3MGetFileExtensions +3MGetResourceType +3MLoadFromResourceHandle +3MLazarusResourceTypeValid +3MReleaseHandle +3MSetCenterHotSpot +3PHotSpot rw +3PHandle rw +#lcl.Graphics.TSharedJpegImage #lcl.Graphics.TSharedCustomBitmap +#lcl.Graphics.TJPEGImage #lcl.Graphics.TFPImageBitmap +1VFGrayScale +1VFPerformance +1VFProgressiveEncoding +1VFQuality +2MInitializeReader +2MInitializeWriter +2MFinalizeReader +2MGetReaderClass +2MGetWriterClass +2MGetSharedImageClass +3MCreate +3MIsStreamFormatSupported +3MGetFileExtensions +3PCompressionQuality rw +3PGrayScale r +3PProgressiveEncoding r +3PPerformance rw +#lcl.Graphics.TSharedTiffImage #lcl.Graphics.TSharedCustomBitmap +#lcl.Graphics.TTiffImage #lcl.Graphics.TFPImageBitmap +1VFArtist +1VFCopyright +1VFDateTime +1VFDocumentName +1VFHostComputer +1VFImageDescription +1VFMake +1VFModel +1VFResolutionUnit +1VFSoftware +1VFXResolution +1VFYResolution +2MInitializeReader +2MInitializeWriter +2MFinalizeReader +2MGetReaderClass +2MGetWriterClass +2MGetSharedImageClass +3MCreate +3MGetFileExtensions +3PArtist rw +3PCopyright rw +3PDateTime rw +3PDocumentName rw +3PHostComputer rw +3PImageDescription rw +3PMake rw +3PModel rw +3PResolutionUnit rw +3PSoftware rw +3PXResolution rw +3PYResolution rw +#lcl.Graphics.TSharedGIFImage #lcl.Graphics.TSharedCustomBitmap +#lcl.Graphics.TGIFImage #lcl.Graphics.TFPImageBitmap +1VFTransparent +1VFInterlaced +1VFBitsPerPixel +2MInitializeReader +2MFinalizeReader +2MGetReaderClass +2MGetSharedImageClass +3MCreate +3MIsStreamFormatSupported +3MGetFileExtensions +3PTransparent r +3PInterlaced r +3PBitsPerPixel r +#lcl.LResources.TLResource #rtl.System.TObject +3VName +3VValueType +3VValue +#lcl.LResources.TLResourceList #rtl.System.TObject +1VFList +1VFMergeList +1VFSortedCount +1MFindPosition +1MGetItems +1MSort +1MMergeSort +1MMerge 3MCreate 3MDestroy -#lcl.Menus.EMenuError #rtl.sysutils.Exception -#lcl.Menus.TMenuActionLink #lcl.ActnList.TActionLink -2VFClient -2MAssignClient -2MIsAutoCheckLinked -2MIsOnExecuteLinked -2MSetAutoCheck -2MSetCaption -2MSetChecked -2MSetEnabled -2MSetHelpContext -2MSetHint -2MSetImageIndex -2MSetShortCut -2MSetVisible -2MSetOnExecute -3MIsCaptionLinked -3MIsCheckedLinked -3MIsEnabledLinked -3MIsHelpContextLinked -3MIsHintLinked -3MIsGroupIndexLinked -3MIsImageIndexLinked -3MIsShortCutLinked -3MIsVisibleLinked -#lcl.Menus.TMenuItemEnumerator #rtl.System.TObject -1VFMenuItem -1VFPosition -1MGetCurrent +3MAdd +3MFind +3MCount +3PItems r +#lcl.LResources.TLazarusResourceStream #rtl.Classes.TCustomMemoryStream +1VFLRes +1VFPRes +1MInitialize 3MCreate -3MMoveNext -3PCurrent r -#lcl.Menus.TMenuItem #lcl.LCLClasses.TLCLComponent -1VFActionLink -1VFCaption -1VFBitmap -1VFGlyphShowMode -1VFHandle -1VFHelpContext -1VFHint -1VFImageChangeLink -1VFImageIndex +3MCreateFromID +3MCreateFromHandle +3MDestroy +3MWrite +3PRes r +#lcl.LResources.TAbstractTranslator #rtl.System.TObject +3MTranslateStringProperty +#lcl.LResources.TLRSObjectReader #rtl.Classes.TAbstractObjectReader +1VFStream +1VFBuffer +1VFBufSize +1VFBufPos +1VFBufEnd +1VFStack +1VFStackPointer +1VFStackCapacity +1VFReader +1MSkipProperty +1MSkipSetBody +1MPush +1MPop +1MClearStack +1MInternalReadValue +1MEndPropertyIfOpen +2MReadIntegerContent +3MCreate +3MDestroy +3MNextValue +3MReadValue +3MBeginRootComponent +3MBeginComponent +3MBeginProperty +3MGetStackPath +3MRead +3MReadBinary +3MReadFloat +3MReadSingle +3MReadCurrency +3MReadDate +3MReadIdent +3MReadInt8 +3MReadInt16 +3MReadInt32 +3MReadInt64 +3MReadSet +3MReadStr +3MReadString +3MReadWideString +3MReadUnicodeString +3MSkipComponent +3MSkipValue +3PStream r +3PReader rw +#lcl.LResources.TLRSObjectWriter #rtl.Classes.TAbstractObjectWriter +1VFStream +1VFBuffer +1VFBufSize +1VFBufPos +1VFSignatureWritten +1VFStack +1VFStackPointer +1VFStackCapacity +1VFWriteEmptyInheritedChilds +1VFWriter +1MPush +1MEndHeader +1MPop +1MClearStack +1MFlushStackToStream +1MWriteToStream +2MFlushBuffer +2MWriteValue +2MWriteStr +2MWriteIntegerContent +2MWriteWordContent +2MWriteInt64Content +2MWriteSingleContent +2MWriteDoubleContent +2MWriteExtendedContent +2MWriteCurrencyContent +2MWriteWideStringContent +2MWriteWordsReversed +2MWriteNulls +3MCreate +3MDestroy +3MBeginCollection +3MBeginComponent +3MBeginList +3MEndList +3MBeginProperty +3MEndProperty +3MGetStackPath +3MWrite +3MWriteBinary +3MWriteBoolean +3MWriteFloat +3MWriteSingle +3MWriteCurrency +3MWriteDate +3MWriteIdent +3MWriteInteger +3MWriteMethodName +3MWriteSet +3MWriteString +3MWriteWideString +3MWriteUnicodeString +3PWriteEmptyInheritedChilds rw +3PWriter rw +#lcl.LResources.TLRPositionLinks #rtl.System.TObject 1VFItems -1VFMenu -1VFOnChange -1VFOnClick -1VFParent -1VFMenuItemHandlers -1VFSubMenuImages -1VFShortCut -1VFShortCutKey2 -1VFGroupIndex -1VFRadioItem -1VFRightJustify -1VFShowAlwaysCheckable -1VFVisible -1VFBitmapIsValid -1VFAutoCheck -1VFChecked -1VFDefault -1VFEnabled -1MGetBitmap -1MGetCount -1MGetItem -1MGetMenuIndex -1MGetParent -1MIsBitmapStored -1MIsCaptionStored -1MIsCheckedStored -1MIsEnabledStored -1MIsHelpContextStored -1MIsHintStored -1MIsImageIndexStored -1MIsShortCutStored -1MIsVisibleStored -1MSetAutoCheck -1MSetCaption -1MSetChecked -1MSetDefault -1MSetEnabled -1MSetBitmap -1MSetGlyphShowMode -1MSetMenuIndex -1MSetRadioItem -1MSetRightJustify -1MSetShowAlwaysCheckable -1MSetSubMenuImages -1MShortcutChanged -1MSubItemChanged -1MTurnSiblingsOff -1MDoActionChange -2VFCommand -2MWSRegisterClass -2MActionChange -2MAssignTo -2MBitmapChange -2MGetAction -2MGetActionLinkClass -2MGetHandle -2MDoClicked -2MCheckChildrenHandles -2MCreateHandle -2MDestroyHandle -2MLoaded -2MNotification -2MGetChildren -2MInitiateActions -2MMenuChanged -2MSetAction -2MSetChildOrder -2MSetGroupIndex -2MSetImageIndex -2MSetParentComponent -2MSetShortCut -2MSetShortCutKey2 -2MSetVisible -2MUpdateImage -2MUpdateImages -2MUpdateWSIcon -2MImageListChange -2PActionLink rw -3VFCompStyle +1VFCount +1MGetData +1MGetLFM +1MGetLRS +1MSetCount +1MSetData +1MSetLFM +1MSetLRS 3MCreate 3MDestroy -3MFind -3MGetEnumerator -3MGetImageList -3MGetParentComponent -3MGetParentMenu -3MGetIsRightToLeft -3MHandleAllocated -3MHasIcon -3MHasParent -3MInitiateAction -3MIntfDoSelect +3MClear +3MSort +3MIndexOf +3MIndexOfRange +3MSetPosition +3MAdd +3PLFM rw +3PLRS rw +3PData rw +3PCount rw +#lcl.LResources.TUTF8Parser #rtl.System.TObject +1VfStream +1VfBuf +1VfBufLen +1VfPos +1VfLineStart +1VfFloatType +1VfSourceLine +1VfToken +1VfEofReached +1VfLastTokenStr +1MGetTokenName +1MLoadBuffer +1MCheckLoadBuffer +1MProcessChar +1MIsNumber +1MIsHexNum +1MIsAlpha +1MIsAlphaNum +1MGetHexValue +1MGetAlphaNum +1MHandleNewLine +1MSkipSpaces +1MSkipWhitespace +1MHandleEof +1MHandleAlphaNum +1MHandleNumber +1MHandleHexNumber +1MHandleQuotedString +1MHandleDecimalString +1MHandleString +1MHandleMinus +1MHandleUnknown +3MCreate +3MDestroy +3MCheckToken +3MCheckTokenSymbol +3MError +3MErrorFmt +3MErrorStr +3MHexToBinary +3MNextToken +3MSourcePos +3MTokenComponentIdent +3MTokenFloat +3MTokenInt +3MTokenString +3MTokenSymbolIs +3PFloatType r +3PSourceLine r +3MSourceColumn +3PToken r +#lcl.LResources.TCustomLazComponentQueue #rtl.Classes.TComponent +1VFOnFindComponentClass +2VFQueue +2MReadComponentSize +3MCreate +3MDestroy +3MClear +3MWrite +3MCopyFrom +3MHasComponent +3MReadComponent +3MConvertComponentAsString +3POnFindComponentClass rw +#lcl.LResources.TLazComponentQueue #lcl.LResources.TCustomLazComponentQueue +4PName +4POnFindComponentClass +#lcl.LResources.TPropertiesToSkip #rtl.Classes.TList +1MGetItem +1MSetItem +2MNotify +2MDoPropertyNotFound 3MIndexOf -3MIndexOfCaption -3MVisibleIndexOf 3MAdd -3MAddSeparator -3MClick -3MDelete -3MHandleNeeded -3MInsert -3MRecreateHandle -3MRemove -3MIsCheckItem -3MIsLine -3MIsInMenuBar -3MClear -3MHasBitmap -3MGetIconSize -3MRemoveAllHandlersOfObject -3MAddHandlerOnDestroy -3MRemoveHandlerOnDestroy -3MAddHandler -3MRemoveHandler -3PCount r -3PHandle rw -3PItems r -3PMenuIndex rw -3PMenu r -3PParent r -3PCommand r -3MMenuVisibleIndex -3MWriteDebugReport -4PAction rw -4PAutoCheck rw -4PCaption rws -4PChecked rws -4PDefault rw -4PEnabled rws -4PBitmap rws -4PGroupIndex rw -4PGlyphShowMode rw -4PHelpContext rws -4PHint rws -4PImageIndex rws -4PRadioItem rw -4PRightJustify rw -4PShortCut rws -4PShortCutKey2 rw -4PShowAlwaysCheckable rw -4PSubMenuImages rw -4PVisible rws -4POnClick rw -#lcl.Menus.TMenu #lcl.LCLClasses.TLCLComponent -1VFBiDiMode -1VFImageChangeLink -1VFImages +3PItems rw +#lcl.DynQueue.TDynamicDataQueue #rtl.System.TObject 1VFItems -1VFOnChange -1VFParent -1VFParentBiDiMode -1VFShortcutHandled -1MCMParentBiDiModeChanged -1MCMAppShowMenuGlyphChanged -1MIsBiDiModeStored -1MImageListChange -1MSetBiDiMode -1MSetImages -1MSetParent -1MSetParentBiDiMode -2MWSRegisterClass -2MBidiModeChanged -2MCreateHandle -2MDoChange -2MGetHandle -2MGetChildren -2MMenuChanged -2MNotification -2MParentBidiModeChanged -2MSetChildOrder -2MUpdateItems -2POnChange rw -3VFCompStyle +1VFItemCapacity +1VFTopIndex +1VFLastIndex +1VFMaximumBlockSize +1VFMinimumBlockSize +1VFSize +1VFTopItemSpace +1VFLastItemSpace +1MSetMaximumBlockSize +1MSetMinimumBlockSize +1MGrowItems +1MAddItem +1MCalculateItemSize +1MPushInternal +1MPopTopInternal 3MCreate 3MDestroy -3MDestroyHandle -3MFindItem -3MGetHelpContext -3MIsShortcut -3MHandleAllocated -3MIsRightToLeft -3MUseRightToLeftAlignment -3MUseRightToLeftReading -3MHandleNeeded -3MDispatchCommand -3PHandle r -3PParent rw -3PShortcutHandled rw -4PBidiMode rws -4PParentBidiMode rw -4PItems r -4PImages rw -#lcl.Menus.TMainMenu #lcl.Menus.TMenu -1VFWindowHandle -1MGetHeight -1MSetWindowHandle -2MItemChanged -2MWSRegisterClass -2MMenuChanged +3MClear +3MConsistencyCheck +3MWriteDebugReport +3MPush +3MPop +3MTop +3PSize r +3PMinimumBlockSize rw +3PMaximumBlockSize rw +#lcl.LCLResCache.TResourceCacheItem #rtl.System.TObject +2VFDestroying +2VFReferenceCount +3VHandle +3VCache +3VFirstDescriptor +3VLastDescriptor +3VNext +3VPrev 3MCreate -3PHeight r -3PWindowHandle rw -4POnChange -#lcl.Menus.TPopupMenu #lcl.Menus.TMenu -1VFAlignment -1VFAutoPopup -1VFOnClose -1VFOnPopup -1VFPopupComponent -1VFPopupPoint -1VFTrackButton -1MGetHelpContext -1MSetHelpContext -2MWSRegisterClass -2MDoPopup -2MDoClose +3MDestroy +3MIncreaseRefCount +3MDecreaseRefCount +3MAddToList +3MRemoveFromList +3MWarnReferenceHigh +3PReferenceCount r +#lcl.LCLResCache.TResourceCacheDescriptor #rtl.System.TObject +2VFDestroying +3VItem +3VCache +3VNext +3VPrev 3MCreate 3MDestroy -3MPopUp -3PPopupComponent rw -3PPopupPoint r -3MClose -4PAlignment rw -4PAutoPopup rw -4PHelpContext rw -4PTrackButton rw -4POnPopup rw -4POnClose rw -#lcl.CustomTimer.TCustomTimer #rtl.Classes.TComponent -1VFInterval -1VFOnStartTimer -1VFOnStopTimer -1VFTimerHandle -1VFOnTimer -1VFEnabled -1MTimer -2MSetEnabled -2MSetInterval -2MSetOnTimer -2MDoOnTimer -2MUpdateTimer -2MKillTimer -2MLoaded +3MAddToList +3MRemoveFromList +#lcl.LCLResCache.TResourceCache #rtl.System.TObject +2VFItems +2VFDescriptors +2VFDestroying +2VFResourceCacheDescriptorClass +2VFResourceCacheItemClass +2VFMaxUnusedItem +2VFFirstUnusedItem +2VFLastUnusedItem +2VFUnUsedItemCount +2VFLock +2MRemoveItem +2MRemoveDescriptor +2MItemUsed +2MItemUnused +2MItemIsUsed 3MCreate +3MClear 3MDestroy -3PEnabled rw -3PInterval rw -3POnTimer rw -3POnStartTimer rw -3POnStopTimer rw -#lcl.HelpIntfs.EHelpSystemException #rtl.sysutils.Exception -#lcl.HelpIntfs.THelpQuery #rtl.Classes.TPersistent -1VFHelpDatabaseID +3MCompareItems +3MCompareDescriptors +3MConsistencyCheck +3MLock +3MUnlock +3PMaxUnusedItem rw +3PResourceCacheItemClass r +3PResourceCacheDescriptorClass r +#lcl.LCLResCache.THandleResourceCache #lcl.LCLResCache.TResourceCache +3MFindItem +#lcl.LCLResCache.TBlockResourceCacheDescriptor #lcl.LCLResCache.TResourceCacheDescriptor +3VData +3MDestroy +#lcl.LCLResCache.TBlockResourceCache #lcl.LCLResCache.THandleResourceCache +1VFDataSize +2VFOnCompareDescPtrWithDescriptor 3MCreate -3PHelpDatabaseID rw -#lcl.HelpIntfs.THelpQueryTOC #lcl.HelpIntfs.THelpQuery -#lcl.HelpIntfs.THelpQueryContext #lcl.HelpIntfs.THelpQuery -1VFContext +3MFindDescriptor +3MAddResource +3MCompareDescriptors +3PDataSize r +3POnCompareDescPtrWithDescriptor r +#lcl.Maps.TBaseMap #rtl.Classes.TPersistent +1VFTree +1VFIdType +1VFDataSize +1VFFirst +1VFLast +1VFIterators +1MFindNode +1MFindItem +1MFreeData +1MTreeCompareID +1MIteratorAdd +1MIteratorRemove +2MInternalAdd +2MInternalGetData +2MInternalGetDataPtr +2MInternalGetId +2MInternalSetData +2MReleaseData 3MCreate -3PContext rw -#lcl.HelpIntfs.THelpQueryKeyword #lcl.HelpIntfs.THelpQuery -1VFKeyword +3MClear +3MCount +3MDelete +3MDestroy +#lcl.Maps.TBaseMapIterator #rtl.System.TObject +1VFMap +1VFCurrent +1VFInValid +1VFBOM +1VFEOM +1MMapDestroyed +1MMapCleared +1MItemRemove +2MInternalCreate +2MInternalLocate +2MValidate +2MValidateMap +2PCurrent r +3MDestroy +3MFirst +3MNext +3MPrevious +3MLast +3MValid +3PBOM r +3PEOM r +#lcl.Maps.TMap #lcl.Maps.TBaseMap +3MAdd +3MHasId +3MGetData +3MGetDataPtr +3MSetData +#lcl.Maps.TMapIterator #lcl.Maps.TBaseMapIterator 3MCreate -3PKeyword rw -#lcl.HelpIntfs.THelpQueryDirective #lcl.HelpIntfs.THelpQuery -1VFDirective +3MDataPtr +3MGetData +3MGetID +3MLocate +3MSetData +#lcl.Maps.TTypedMap #lcl.Maps.TBaseMap +1VFTypeInfo +2MInternalSetData +2MReleaseData +3MAdd 3MCreate -3PDirective rw -#lcl.HelpIntfs.THelpQuerySourcePosition #lcl.HelpIntfs.THelpQuery -1VFFilename -1VFSourcePosition +3MDestroy +3MHasId +3MGetData +3MGetDataPtr +3MSetData +#lcl.Maps.TTypedMapIterator #lcl.Maps.TBaseMapIterator 3MCreate -3PFilename rw -3PSourcePosition rw -#lcl.HelpIntfs.THelpQueryPascalContexts #lcl.HelpIntfs.THelpQuerySourcePosition -1VFContextLists +3MGetData +3MGetID +3MLocate +3MSetData +#lcl.ImgList.TChangeLink #rtl.System.TObject +1VFSender +1VFOnChange +3MDestroy +3MChange +3POnChange rw +3PSender rw +#lcl.ImgList.TCustomImageList #lcl.LCLClasses.TLCLReferenceComponent +1VFReference +1VFDrawingStyle +1VFData +1VFImageType +1VFHeight +1VFMasked +1VFShareImages +1VFWidth +1VFAllocBy +1VFCount +1VFAllocCount +1VFBlendColor +1VFOnChange +1VFChangeLinkList +1VFBkColor +1VFChanged +1VFUpdateCount +1VFOverlays +1VfHasOverlays +1MAllocData +1MGetReference +1MInternalInsert +1MInternalMove +1MInternalReplace +1MInternalSetImage +1MNotifyChangeLink +1MSetBkColor +1MSetDrawingStyle +1MSetHeight +1MSetMasked +1MSetShareImages +1MSetWidth +2MCheckIndex +2MGetReferenceHandle +2MInitialize +2MDefineProperties +2MSetWidthHeight +2MClearOverlays +2MWSRegisterClass +2MWSCreateReference 3MCreate -3PListOfPascalHelpContextList rw -#lcl.HelpIntfs.THelpQueryMessage #lcl.HelpIntfs.THelpQuery -1VFMessageParts -1VFWholeMessage +3MCreateSize +3MDestroy +3MAssignTo +3MAssign +3MWriteData +3MReadData +3MEquals +3MBeginUpdate +3MEndUpdate +3MAdd +3MAddIcon +3MAddImages +3MAddMasked +3MAddLazarusResource +3MAddResourceName +3MChange +3MClear +3MDelete +3MDraw +3MDrawOverlay +3MFillDescription +3MGetBitmap +3MGetFullBitmap +3MGetFullRawImage +3MGetIcon +3MGetRawImage +3MGetHotSpot +3MInsert +3MInsertIcon +3MInsertMasked +3MMove +3MOverlay +3PHasOverlays r +3MReplace +3MReplaceMasked +3MRegisterChanges +3MStretchDraw +3MUnRegisterChanges +3PAllocBy rw +3PBlendColor rw +3PBkColor rw +3PCount r +3PDrawingStyle rw +3PHandleAllocated +3PHeight rw +3PWidth rw +3POnChange rw +3PMasked rw +3PReference r +3PShareImages rw +3PImageType rw +#lcl.LCLClasses.TLCLComponent #rtl.Classes.TComponent +1VFWidgetSetClass +1VFLCLRefCount +2MWSRegisterClass +2MGetWSComponentClass 3MCreate 3MDestroy -3PWholeMessage rw -3PMessageParts rw -#lcl.HelpIntfs.THelpQueryClass #lcl.HelpIntfs.THelpQuery -1VFTheClass +3MNewInstance +3MRemoveAllHandlersOfObject +3MIncLCLRefCount +3MDecLCLRefCount +3PLCLRefCount r +3PWidgetSetClass r +#lcl.LCLClasses.TLCLReferenceComponent #lcl.LCLClasses.TLCLComponent +1VFReferencePtr +1VFCreating +1MGetHandle +1MGetReferenceAllocated +2MCreateParams +2MDestroyReference +2MGetReferenceHandle +2MReferenceCreated +2MReferenceDestroying +2MReferenceNeeded +2MWSCreateReference +2MWSDestroyReference +3MDestroy +3PHandle r +3PHandleAllocated r +3PReferenceAllocated r +#lcl.CheckLst.TCustomCheckListBox #lcl.StdCtrls.TCustomListBox +1VFAllowGrayed +1VFItemDataOffset +1VFOnClickCheck +1VFOnItemClick +1MGetChecked +1MGetHeader +1MGetItemEnabled +1MGetState +1MSetChecked +1MSendItemState +1MSendItemEnabled +1MSendItemHeader +1MDoChange +1MSetHeader +1MSetItemEnabled +1MSetState +2MWSRegisterClass +2MAssignItemDataToCache +2MAssignCacheToItemData +2MCreateParams +2MDrawItem +2MGetCachedDataSize +2MGetCheckWidth +2MDefineProperties +2MReadData +2MWriteData +2MClickCheck +2MItemClick +2MKeyDown +2MFontChanged 3MCreate -3PTheClass rw -#lcl.HelpIntfs.THelpManager #rtl.System.TObject -3MDoHelpNotFound -3MShowTableOfContents -3MShowError -3MShowHelpForQuery -3MShowHelpForContext -3MShowHelpForKeyword -3MShowHelpForDirective -3MShowHelpForPascalContexts -3MShowHelpForSourcePosition -3MShowHelpForMessageLine -3MShowHelpForClass -3MShowHelpFile -3MShowHelp +3MMeasureItem +3MToggle +3MCheckAll +3PAllowGrayed rw +3PChecked rw +3PHeader rw +3PItemEnabled rw +3PState rw +3POnClickCheck rw +3POnItemClick rw +#lcl.CheckLst.TCheckListBox #lcl.CheckLst.TCustomCheckListBox +4PAlign +4PAllowGrayed +4PAnchors +4PBidiMode +4PBorderSpacing +4PBorderStyle +4PColor +4PColumns +4PConstraints +4PDragCursor +4PDragMode +4PExtendedSelect +4PEnabled +4PFont +4PIntegralHeight +4PItems +4PItemHeight +4PItemIndex +4PMultiSelect +4POnChangeBounds +4POnClick +4POnClickCheck +4POnContextPopup +4POnDblClick +4POnDrawItem +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnEnter +4POnExit +4POnItemClick +4POnKeyPress +4POnKeyDown +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnShowHint +4POnStartDrag +4POnUTF8KeyPress +4PParentBidiMode +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowHint +4PSorted +4PStyle +4PTabOrder +4PTabStop +4PTopIndex +4PVisible #lcl.Controls.TControlCanvas #lcl.Graphics.TCanvas 1VFControl 1VFDeviceContext @@ -24221,6 +23868,10 @@ 1VFRight 1VFTop 1VFDefault +1MGetControlHeight +1MGetControlLeft +1MGetControlTop +1MGetControlWidth 1MIsAroundStored 1MIsBottomStored 1MIsInnerBorderStored @@ -24246,6 +23897,10 @@ 3MGetSpace 3PControl r 3PSpace rw +3PControlLeft r +3PControlTop r +3PControlWidth r +3PControlHeight r 4POnChange rw 4PLeft rws 4PTop rws @@ -24667,6 +24322,7 @@ 2MAddHandler 2MRemoveHandler 2MDoCallNotifyHandler +2MDoCallKeyEventHandler 2MDoContextPopup 2MSetZOrder 2MGetControlClassDefaultSize @@ -25017,6 +24673,7 @@ 2MDoAllAutoSize 2MAllAutoSized 2MCalculatePreferredSize +2MGetPreferredSizeClientFrame 2MGetChildren 2MChildClassAllowed 2MPaintControls @@ -25186,6 +24843,7 @@ 3MDisableAlign 3MEnableAlign 3MReAlign +3MScrollBy_WS 3MScrollBy 3MWriteLayoutDebugReport 3MAutoAdjustLayout @@ -25195,6 +24853,7 @@ 3MDestroy 3MDockDrop 3MCanFocus +3MCanSetFocus 3MGetControlIndex 3MSetControlIndex 3MFocused @@ -25239,6 +24898,7 @@ 2MDoOnChangeBounds 2MDoOnParentHandleDestruction 2POnPaint rw +2MCMCursorChanged 3MCreate 3MDestroy 3PCanvas r @@ -25356,7 +25016,6 @@ 3PDockSite rw 3PRootZone r #lcl.Controls.TMouse #rtl.System.TObject -1VFCapture 1VFWheelScrollLines 1MSetCapture 1MGetCapture @@ -25475,270 +25134,277 @@ 3POnSaveProperties rw 3POnRestoringProperties rw 3POnRestoreProperties rw -#lcl.Buttons.TButtonGlyph #rtl.System.TObject,#rtl.System.IUnknown,#lcl.ImageListCache.IImageCacheListener -1VFIsDesigning -1VFShowMode -1VFImageIndexes -1VFImages -1VFOriginal -1VFNumGlyphs -1VFOnChange -1VFImagesCache -1VFTransparentMode -1MGetHeight -1MGetWidth -1MSetGlyph -1MSetNumGlyphs -1MSetShowMode -1MClearImages -3MQueryInterface -3M_AddRef -3M_Release -3MCacheSetImageList -3MCacheSetImageIndex -2MGlyphChanged -2MSetTransparentMode -2PTransparentMode r -3MCreate -3MDestroy -3MGetImageIndexAndEffect -3MDraw -3MRefresh -3PGlyph rw -3PIsDesigning rw -3PNumGlyphs rw -3PImages r -3PWidth r -3PHeight r -3PShowMode rw -3POnChange rw -#lcl.Buttons.TCustomBitBtn #lcl.StdCtrls.TCustomButton -1VFDefaultCaption -1VFKind -1VFLayout -1VFMargin -1VFSpacing -1MGetGlyph -1MGetGlyphShowMode -1MGetNumGlyphs -1MIsGlyphStored -1MSetGlyph -1MSetGlyphShowMode -1MSetKind -1MSetLayout -1MSetMargin -1MSetNumGlyphs -1MSetSpacing -1MRealizeKind -1MGetCaptionOfKind -2VFButtonGlyph -2MWSRegisterClass -2MActionChange -2MGlyphChanged -2MInitializeWnd -2MIsCaptionStored -2MLoaded -2MTextChanged -2MGetControlClassDefaultSize -2MCMAppShowBtnGlyphChanged -3MCreate -3MDestroy -3MClick -3MLoadGlyphFromResourceName -3MLoadGlyphFromLazarusResource -3MLoadGlyphFromStock -3MCanShowGlyph -3PCaption s -3PDefaultCaption rw -3PGlyph rws -3PNumGlyphs rw -3PKind rw -3PLayout rw -3PMargin rw -3PSpacing rw -3PGlyphShowMode rw -#lcl.Buttons.TBitBtn #lcl.Buttons.TCustomBitBtn -4PAction -4PAlign -4PAnchors -4PAutoSize -4PBidiMode -4PBorderSpacing -4PCancel -4PCaption -4PColor -4PConstraints -4PDefault -4PDefaultCaption -4PEnabled -4PFont -4PGlyph -4PGlyphShowMode -4PKind -4PLayout -4PMargin -4PModalResult -4PNumGlyphs -4POnChangeBounds -4POnClick -4POnContextPopup -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnEnter -4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnResize -4POnStartDrag -4POnUTF8KeyPress -4PParentBidiMode -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PSpacing -4PTabOrder -4PTabStop -4PVisible -#lcl.Buttons.TSpeedButtonActionLink #lcl.Controls.TControlActionLink +#lcl.Menus.EMenuError #rtl.sysutils.Exception +#lcl.Menus.TMenuActionLink #lcl.ActnList.TActionLink +2VFClient 2MAssignClient -2MSetGroupIndex +2MIsAutoCheckLinked +2MIsOnExecuteLinked +2MSetAutoCheck +2MSetCaption 2MSetChecked +2MSetEnabled +2MSetHelpContext +2MSetHint +2MSetImageIndex +2MSetShortCut +2MSetVisible +2MSetOnExecute +3MIsCaptionLinked 3MIsCheckedLinked +3MIsEnabledLinked +3MIsHelpContextLinked +3MIsHintLinked 3MIsGroupIndexLinked -#lcl.Buttons.TCustomSpeedButton #lcl.Controls.TGraphicControl -1VFGlyph +3MIsImageIndexLinked +3MIsShortCutLinked +3MIsVisibleLinked +#lcl.Menus.TMenuItemEnumerator #rtl.System.TObject +1VFMenuItem +1VFPosition +1MGetCurrent +3MCreate +3MMoveNext +3PCurrent r +#lcl.Menus.TMenuItem #lcl.LCLClasses.TLCLComponent +1VFActionLink +1VFCaption +1VFBitmap +1VFGlyphShowMode +1VFHandle +1VFHelpContext +1VFHint +1VFImageChangeLink +1VFImageIndex +1VFItems +1VFMenu +1VFOnChange +1VFOnClick +1VFParent +1VFMenuItemHandlers +1VFSubMenuImages +1VFShortCut +1VFShortCutKey2 1VFGroupIndex -1VFLastDrawDetails -1VFLayout -1VFMargin -1VFSpacing -1VFShortcut -1VFShowAccelChar -1VFShowCaption -1VFAllowAllUp -1VFDown -1VFDownLoaded -1VFDragging -1VFFlat -1VFMouseInControl -1MGetGlyph -1MSetShowCaption -1MUpdateExclusive -1MGetTransparent -1MSetAllowAllUp -1MSetGlyph -1MSetLayout -1MSetShowAccelChar -1MSetTransparent -1MCMButtonPressed -1MCMEnabledChanged -1MDoMouseUp -1MWMLButtonDown -1MWMLButtonUp -1MWMLButtonDBLCLK -2VFState +1VFRadioItem +1VFRightJustify +1VFShowAlwaysCheckable +1VFVisible +1VFBitmapIsValid +1VFAutoCheck +1VFChecked +1VFDefault +1VFEnabled +1MGetBitmap +1MGetCount +1MGetItem +1MGetMenuIndex +1MGetParent +1MIsBitmapStored +1MIsCaptionStored +1MIsCheckedStored +1MIsEnabledStored +1MIsHelpContextStored +1MIsHintStored +1MIsImageIndexStored +1MIsShortCutStored +1MIsVisibleStored +1MSetAutoCheck +1MSetCaption +1MSetChecked +1MSetDefault +1MSetEnabled +1MSetBitmap +1MSetGlyphShowMode +1MSetMenuIndex +1MSetRadioItem +1MSetRightJustify +1MSetShowAlwaysCheckable +1MSetSubMenuImages +1MShortcutChanged +1MSubItemChanged +1MTurnSiblingsOff +1MDoActionChange +2VFCommand 2MWSRegisterClass -2MGetNumGlyphs -2MGlyphChanged -2MDialogChar -2MCalculatePreferredSize -2MMeasureDraw -2MMouseEnter -2MMouseLeave -2MMouseDown -2MMouseMove -2MMouseUp -2MPaint -2MPaintBackground -2MSetDown -2MSetGroupIndex -2MSetFlat -2MSetMargin -2MSetNumGlyphs -2MSetSpacing -2MRealSetText -2MUpdateState -2MGetDrawDetails -2PMouseInControl r 2MActionChange +2MAssignTo +2MBitmapChange +2MGetAction 2MGetActionLinkClass -2MGetControlClassDefaultSize +2MGetHandle +2MDoClicked +2MCheckChildrenHandles +2MCreateHandle +2MDestroyHandle 2MLoaded -2MGetGlyphSize -2MGetTextSize -2MDrawGlyph +2MNotification +2MGetChildren +2MInitiateActions +2MMenuChanged +2MSetAction +2MSetChildOrder +2MSetGroupIndex +2MSetImageIndex +2MSetParentComponent +2MSetShortCut +2MSetShortCutKey2 +2MSetVisible +2MUpdateImage +2MUpdateImages +2MUpdateWSIcon +2MImageListChange +2PActionLink rw +3VFCompStyle 3MCreate 3MDestroy -3MFindDownButton +3MFind +3MGetEnumerator +3MGetImageList +3MGetParentComponent +3MGetParentMenu +3MGetIsRightToLeft +3MHandleAllocated +3MHasIcon +3MHasParent +3MInitiateAction +3MIntfDoSelect +3MIndexOf +3MIndexOfCaption +3MVisibleIndexOf +3MAdd +3MAddSeparator 3MClick -3MLoadGlyphFromResourceName -3MLoadGlyphFromLazarusResource -3PAllowAllUp rw -3PColor -3PDown rw -3PFlat rw -3PGlyph rw -3PGroupIndex rw -3PLayout rw -3PMargin rw -3PNumGlyphs rw -3PShowAccelChar rw -3PShowCaption rw -3PSpacing rw -3PTransparent rw -#lcl.Buttons.TSpeedButton #lcl.Buttons.TCustomSpeedButton -4PAction -4PAlign -4PAllowAllUp -4PAnchors -4PAutoSize -4PBidiMode -4PBorderSpacing -4PConstraints -4PCaption -4PColor -4PDown -4PEnabled -4PFlat -4PFont -4PGlyph -4PGroupIndex -4PLayout -4PMargin -4PNumGlyphs -4PSpacing -4PTransparent -4PVisible -4POnClick -4POnDblClick -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnPaint -4POnResize -4POnChangeBounds -4PShowCaption -4PShowHint -4PParentBidiMode -4PParentFont -4PParentShowHint -4PPopupMenu +3MDelete +3MHandleNeeded +3MInsert +3MRecreateHandle +3MRemove +3MIsCheckItem +3MIsLine +3MIsInMenuBar +3MClear +3MHasBitmap +3MGetIconSize +3MRemoveAllHandlersOfObject +3MAddHandlerOnDestroy +3MRemoveHandlerOnDestroy +3MAddHandler +3MRemoveHandler +3PCount r +3PHandle rw +3PItems r +3PMenuIndex rw +3PMenu r +3PParent r +3PCommand r +3MMenuVisibleIndex +3MWriteDebugReport +4PAction rw +4PAutoCheck rw +4PCaption rws +4PChecked rws +4PDefault rw +4PEnabled rws +4PBitmap rws +4PGroupIndex rw +4PGlyphShowMode rw +4PHelpContext rws +4PHint rws +4PImageIndex rws +4PRadioItem rw +4PRightJustify rw +4PShortCut rws +4PShortCutKey2 rw +4PShowAlwaysCheckable rw +4PSubMenuImages rw +4PVisible rws +4POnClick rw +#lcl.Menus.TMenu #lcl.LCLClasses.TLCLComponent +1VFBiDiMode +1VFImageChangeLink +1VFImages +1VFItems +1VFOnChange +1VFParent +1VFParentBiDiMode +1VFShortcutHandled +1MCMParentBiDiModeChanged +1MCMAppShowMenuGlyphChanged +1MIsBiDiModeStored +1MImageListChange +1MSetBiDiMode +1MSetImages +1MSetParent +1MSetParentBiDiMode +2MWSRegisterClass +2MBidiModeChanged +2MCreateHandle +2MDoChange +2MGetHandle +2MGetChildren +2MMenuChanged +2MNotification +2MParentBidiModeChanged +2MSetChildOrder +2MUpdateItems +2POnChange rw +3VFCompStyle +3MCreate +3MDestroy +3MDestroyHandle +3MFindItem +3MGetHelpContext +3MIsShortcut +3MHandleAllocated +3MIsRightToLeft +3MUseRightToLeftAlignment +3MUseRightToLeftReading +3MHandleNeeded +3MDispatchCommand +3PHandle r +3PParent rw +3PShortcutHandled rw +4PBidiMode rws +4PParentBidiMode rw +4PItems r +4PImages rw +#lcl.Menus.TMainMenu #lcl.Menus.TMenu +1VFWindowHandle +1MGetHeight +1MSetWindowHandle +2MItemChanged +2MWSRegisterClass +2MMenuChanged +3MCreate +3PHeight r +3PWindowHandle rw +4POnChange +#lcl.Menus.TPopupMenu #lcl.Menus.TMenu +1VFAlignment +1VFAutoPopup +1VFOnClose +1VFOnPopup +1VFPopupComponent +1VFPopupPoint +1VFTrackButton +1MGetHelpContext +1MSetHelpContext +2MWSRegisterClass +2MDoPopup +2MDoClose +3MCreate +3MDestroy +3MPopUp +3PPopupComponent rw +3PPopupPoint r +3MClose +4PAlignment rw +4PAutoPopup rw +4PHelpContext rw +4PTrackButton rw +4POnPopup rw +4POnClose rw #lcl.StdCtrls.TCustomScrollBar #lcl.Controls.TWinControl 1VFKind 1VFPosition @@ -26199,43 +25865,501 @@ 3PStyle rw 3PTabOrder 3PTabStop -3PTopIndex rw -3PVisible -#lcl.StdCtrls.TListBox #lcl.StdCtrls.TCustomListBox +3PTopIndex rw +3PVisible +#lcl.StdCtrls.TListBox #lcl.StdCtrls.TCustomListBox +4PAlign +4PAnchors +4PBidiMode +4PBorderSpacing +4PBorderStyle +4PClickOnSelChange +4PColor +4PColumns +4PConstraints +4PDragCursor +4PDragKind +4PDragMode +4PExtendedSelect +4PEnabled +4PFont +4PIntegralHeight +4PItems +4PItemHeight +4PItemIndex +4PMultiSelect +4POnChangeBounds +4POnClick +4POnContextPopup +4POnDblClick +4POnDragDrop +4POnDragOver +4POnDrawItem +4POnEnter +4POnEndDrag +4POnExit +4POnKeyPress +4POnKeyDown +4POnKeyUp +4POnMeasureItem +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnSelectionChange +4POnShowHint +4POnStartDrag +4POnUTF8KeyPress +4PParentBidiMode +4PParentColor +4PParentShowHint +4PParentFont +4PPopupMenu +4PScrollWidth +4PShowHint +4PSorted +4PStyle +4PTabOrder +4PTabStop +4PTopIndex +4PVisible +#lcl.StdCtrls.TCustomEdit #lcl.Controls.TWinControl +1VFAlignment +1VFAutoSelect +1VFAutoSelected +1VFCharCase +1VfCaretPos +1VFEchoMode +1VFHideSelection +1VFMaxLength +1VFModified +1VFPasswordChar +1VFReadOnly +1VFNumbersOnly +1VFOnChange +1VFSelLength +1VFSelStart +1VFTextChangedByRealSetText +1VFTextHint +1VFTextHintShowing +1VFSettingTextHint +1VFTextHintFontColor +1VFTextHintFontStyle +1VFSavedFontColor +1VFSavedFontStyle +1VFSavedParentFont +1MSetTextHint +1MShowTextHint +1MHideTextHint +1MSetAlignment +1MGetCanUndo +1MGetModified +1MSetCharCase +1MSetHideSelection +1MSetMaxLength +1MSetModified +1MSetPasswordChar +2MWSRegisterClass +2MCanShowTextHint +2MCalculatePreferredSize +2MCreateParams +2MInitializeWnd +2MTextChanged +2MChange +2MDoEnter +2MDoExit +2MGetCaretPos +2MGetNumbersOnly +2MGetReadOnly +2MGetSelLength +2MGetSelStart +2MGetSelText +2MLoaded +2MSetCaretPos +2MSetEchoMode +2MSetNumbersOnly +2MSetReadOnly +2MSetSelLength +2MSetSelStart +2MSetSelText +2MChildClassAllowed +2MGetControlClassDefaultSize +2MMouseUp +2MRealSetText +2MRealGetText +2MKeyUpAfterInterface +2MWMChar +2MCMWantSpecialKey +2PAutoSelect rw +2PAutoSelected rw +2PParentColor +3MCreate +3MClear +3MSelectAll +3MClearSelection +3MCopyToClipboard +3MCutToClipboard +3MPasteFromClipboard +3MUndo +3PAlignment rw +3PAutoSize +3PBorderStyle +3PCanUndo r +3PCaretPos rw +3PCharCase rw +3PEchoMode rw +3PHideSelection rw +3PMaxLength rw +3PModified rw +3PNumbersOnly rw +3POnChange rw +3PPasswordChar rw +3PPopupMenu +3PReadOnly rw +3PSelLength rw +3PSelStart rw +3PSelText rw +3PTabOrder +3PTabStop +3PText +3PTextHint rw +3PTextHintFontColor rw +3PTextHintFontStyle rw +#lcl.StdCtrls.TMemoScrollbar #lcl.Forms.TControlScrollBar +2MGetHorzScrollBar +2MGetVertScrollBar +3PIncrement +3PPage +3PSmooth +3PPosition +3PRange +3PSize +3PVisible +#lcl.StdCtrls.TCustomMemo #lcl.StdCtrls.TCustomEdit +1VFHorzScrollBar +1VFLines +1VFScrollBars +1VFVertScrollBar +1VFWantReturns +1VFWantTabs +1VFWordWrap +1MSetHorzScrollBar +1MSetVertScrollBar +2MWSRegisterClass +2MCreateParams +2MInitializeWnd +2MFinalizeWnd +2MRealGetText +2MRealSetText +2MGetCachedText +2MGetCaretPos +2MKeyUpAfterInterface +2MSetCaretPos +2MSetLines +2MSetSelText +2MSetWantReturns +2MSetWantTabs +2MSetWordWrap +2MSetScrollBars +2MLoaded +2MCMWantSpecialKey +2MWMGetDlgCode +2MGetControlClassDefaultSize +2MUTF8KeyPress +3MCreate +3MDestroy +3MAppend +3MScrollBy +3PLines rw +3PHorzScrollBar rw +3PVertScrollBar rw +3PScrollBars rw +3PWantReturns rw +3PWantTabs rw +3PWordWrap rw +#lcl.StdCtrls.TEdit #lcl.StdCtrls.TCustomEdit +3PAutoSelected +4PAction +4PAlign +4PAlignment +4PAnchors +4PAutoSize +4PAutoSelect +4PBidiMode +4PBorderSpacing +4PBorderStyle +4PCharCase +4PColor +4PConstraints +4PDragCursor +4PDragKind +4PDragMode +4PEchoMode +4PEnabled +4PFont +4PHideSelection +4PMaxLength +4PNumbersOnly +4PParentBidiMode +4POnChange +4POnChangeBounds +4POnClick +4POnContextPopup +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEditingDone +4POnEndDrag +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnStartDrag +4POnUTF8KeyPress +4PParentColor +4PParentFont +4PParentShowHint +4PPasswordChar +4PPopupMenu +4PReadOnly +4PShowHint +4PTabStop +4PTabOrder +4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle +4PVisible +#lcl.StdCtrls.TMemo #lcl.StdCtrls.TCustomMemo +4PAlign +4PAlignment +4PAnchors +4PBidiMode +4PBorderSpacing +4PBorderStyle +4PCharCase +4PColor +4PConstraints +4PDragCursor +4PDragKind +4PDragMode +4PEnabled +4PFont +4PHideSelection +4PLines +4PMaxLength +4POnChange +4POnClick +4POnContextPopup +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEditingDone +4POnEndDrag +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnStartDrag +4POnUTF8KeyPress +4PParentBidiMode +4PParentColor +4PParentFont +4PPopupMenu +4PParentShowHint +4PReadOnly +4PScrollBars +4PShowHint +4PTabOrder +4PTabStop +4PVisible +4PWantReturns +4PWantTabs +4PWordWrap +#lcl.StdCtrls.TCustomStaticText #lcl.Controls.TWinControl +1VFAlignment +1VFFocusControl +1VFShowAccelChar +1VFStaticBorderStyle +1MGetTransparent +1MSetAlignment +1MSetStaticBorderStyle +1MSetTransparent +1MWMActivate +2MWSRegisterClass +2MGetLabelText +2MRealSetText +2MNotification +2MSetFocusControl +2MSetShowAccelChar +2MDialogChar +2MGetControlClassDefaultSize +3MCreate +3PAlignment rw +3PBorderStyle rw +3PFocusControl rw +3PShowAccelChar rw +3PTransparent rw +#lcl.StdCtrls.TStaticText #lcl.StdCtrls.TCustomStaticText +4PAlign +4PAlignment +4PAnchors +4PAutoSize +4PBidiMode +4PBorderSpacing +4PBorderStyle +4PCaption +4PColor +4PConstraints +4PDragCursor +4PDragKind +4PDragMode +4PFocusControl +4PFont +4POnChangeBounds +4POnClick +4POnContextPopup +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnStartDrag +4PParentBidiMode +4PParentFont +4PParentColor +4PShowAccelChar +4PShowHint +4PTabOrder +4PTabStop +4PTransparent +4PVisible +#lcl.StdCtrls.TButtonControl #lcl.Controls.TWinControl +1VFOnChange +1VFClicksDisabled +1MIsCheckedStored +1MWMDefaultClicked +2MWSRegisterClass +2MGetActionLinkClass +2MGetChecked +2MSetChecked +2MDoOnChange +2MClick +2PChecked rws +2PClicksDisabled rw +2POnChange rw +3MCreate +#lcl.StdCtrls.TButtonActionLink #lcl.Controls.TWinControlActionLink(#lcl.Controls.TControlActionLink) +2VFClientButton +2MAssignClient +2MSetChecked +3MIsCheckedLinked +#lcl.StdCtrls.TCustomButton #lcl.StdCtrls.TButtonControl +1VFModalResult +1VFShortCut +1VFShortCutKey2 +1VFCancel +1VFDefault +1VFActive +1VFRolesUpdateLocked +1MSetCancel +1MSetDefault +1MSetModalResult +1MCMUIActivate +1MWMSetFocus +1MWMKillFocus +1MUpdateFocus +2MWSRegisterClass +2MCreateWnd +2MCreateParams +2MControlKeyDown +2MControlKeyUp +2MDialogChar +2MChildClassAllowed +2MGetControlClassDefaultSize +2PParentColor +2MWSSetDefault +2MWSSetText +2MTextChanged +2MLoaded +2MUpdateDefaultCancel +3MCreate +3MClick +3MExecuteDefaultAction +3MExecuteCancelAction +3MActiveDefaultControlChanged +3MUpdateRolesForForm +3MUseRightToLeftAlignment +3PActive rs +3PDefault rw +3PModalResult rw +3PShortCut r +3PShortCutKey2 r +3PCancel rw +3PColor +3PTabStop +#lcl.StdCtrls.TButton #lcl.StdCtrls.TCustomButton +4PAction 4PAlign 4PAnchors +4PAutoSize 4PBidiMode 4PBorderSpacing -4PBorderStyle -4PClickOnSelChange +4PCancel +4PCaption 4PColor -4PColumns 4PConstraints +4PDefault 4PDragCursor 4PDragKind 4PDragMode -4PExtendedSelect 4PEnabled 4PFont -4PIntegralHeight -4PItems -4PItemHeight -4PItemIndex -4PMultiSelect +4PParentBidiMode +4PModalResult 4POnChangeBounds 4POnClick 4POnContextPopup -4POnDblClick 4POnDragDrop 4POnDragOver -4POnDrawItem -4POnEnter 4POnEndDrag +4POnEnter 4POnExit -4POnKeyPress 4POnKeyDown +4POnKeyPress 4POnKeyUp -4POnMeasureItem 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -26245,196 +26369,81 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize -4POnSelectionChange -4POnShowHint 4POnStartDrag 4POnUTF8KeyPress -4PParentBidiMode -4PParentColor -4PParentShowHint 4PParentFont +4PParentShowHint 4PPopupMenu -4PScrollWidth 4PShowHint -4PSorted -4PStyle 4PTabOrder 4PTabStop -4PTopIndex 4PVisible -#lcl.StdCtrls.TCustomEdit #lcl.Controls.TWinControl +#lcl.StdCtrls.TCustomCheckBox #lcl.StdCtrls.TButtonControl 1VFAlignment -1VFAutoSelect -1VFAutoSelected -1VFCharCase -1VfCaretPos -1VFEchoMode -1VFHideSelection -1VFMaxLength -1VFModified -1VFPasswordChar -1VFReadOnly -1VFNumbersOnly -1VFOnChange -1VFSelLength -1VFSelStart -1VFTextChangedByRealSetText +1VFAllowGrayed +1VFState +1VFShortCut +1VFShortCutKey2 +1MGetAlignment 1MSetAlignment -1MGetCanUndo -1MGetModified -1MSetCharCase -1MSetHideSelection -1MSetMaxLength -1MSetModified -1MSetPasswordChar +1MSetState +1MGetState +1MDoChange 2MWSRegisterClass -2MCalculatePreferredSize -2MCreateParams +2MClick +2MDoClickOnChange +2MRetrieveState 2MInitializeWnd -2MTextChanged -2MChange -2MDoEnter -2MDoExit -2MGetCaretPos -2MGetNumbersOnly -2MGetReadOnly -2MGetSelLength -2MGetSelStart -2MGetSelText -2MSetCaretPos -2MSetEchoMode -2MSetNumbersOnly -2MSetReadOnly -2MSetSelLength -2MSetSelStart -2MSetSelText -2MChildClassAllowed -2MGetControlClassDefaultSize -2MMouseUp +2MToggle +2MDialogChar +2MGetChecked +2MSetChecked 2MRealSetText -2MKeyUpAfterInterface -2MWMChar -2MCMWantSpecialKey -2PAutoSelect rw -2PAutoSelected rw -2PParentColor +2MApplyChanges +2MGetControlClassDefaultSize +2MLoaded +2MWSSetText +2MTextChanged +2MCreateParams 3MCreate -3MClear -3MSelectAll -3MClearSelection -3MCopyToClipboard -3MCutToClipboard -3MPasteFromClipboard -3MUndo 3PAlignment rw -3PAutoSize -3PBorderStyle -3PCanUndo r -3PCaretPos rw -3PCharCase rw -3PEchoMode rw -3PHideSelection rw -3PMaxLength rw -3PModified rw -3PNumbersOnly rw -3POnChange rw -3PPasswordChar rw -3PPopupMenu -3PReadOnly rw -3PSelLength rw -3PSelStart rw -3PSelText rw -3PTabOrder -3PTabStop -3PText -#lcl.StdCtrls.TMemoScrollbar #lcl.Forms.TControlScrollBar -2MGetHorzScrollBar -2MGetVertScrollBar -3PIncrement -3PPage -3PSmooth -3PPosition -3PRange -3PSize -3PVisible -#lcl.StdCtrls.TCustomMemo #lcl.StdCtrls.TCustomEdit -1VFHorzScrollBar -1VFLines -1VFScrollBars -1VFVertScrollBar -1VFWantReturns -1VFWantTabs -1VFWordWrap -1MSetHorzScrollBar -1MSetVertScrollBar -2MWSRegisterClass -2MCreateParams -2MInitializeWnd -2MFinalizeWnd -2MRealGetText -2MRealSetText -2MGetCachedText -2MGetCaretPos -2MKeyUpAfterInterface -2MSetCaretPos -2MSetLines -2MSetSelText -2MSetWantReturns -2MSetWantTabs -2MSetWordWrap -2MSetScrollBars -2MLoaded -2MCMWantSpecialKey -2MWMGetDlgCode -2MGetControlClassDefaultSize -2MUTF8KeyPress +3PAllowGrayed rw +3PState rw +3PShortCut r +3PShortCutKey2 r +3POnChange +#lcl.StdCtrls.TCheckBox #lcl.StdCtrls.TCustomCheckBox 3MCreate -3MDestroy -3MAppend -3PLines rw -3PHorzScrollBar rw -3PVertScrollBar rw -3PScrollBars rw -3PWantReturns rw -3PWantTabs rw -3PWordWrap rw -#lcl.StdCtrls.TEdit #lcl.StdCtrls.TCustomEdit -3PAutoSelected 4PAction 4PAlign 4PAlignment +4PAllowGrayed 4PAnchors 4PAutoSize -4PAutoSelect 4PBidiMode 4PBorderSpacing -4PBorderStyle -4PCharCase +4PCaption +4PChecked 4PColor 4PConstraints 4PDragCursor 4PDragKind 4PDragMode -4PEchoMode 4PEnabled 4PFont -4PHideSelection -4PMaxLength -4PNumbersOnly -4PParentBidiMode +4PHint 4POnChange 4POnChangeBounds 4POnClick 4POnContextPopup -4POnDblClick 4POnDragDrop 4POnDragOver 4POnEditingDone 4POnEndDrag 4POnEnter 4POnExit -4POnKeyDown 4POnKeyPress +4POnKeyDown 4POnKeyUp 4POnMouseDown 4POnMouseEnter @@ -26450,22 +26459,75 @@ 4PParentColor 4PParentFont 4PParentShowHint -4PPasswordChar +4PParentBidiMode 4PPopupMenu -4PReadOnly 4PShowHint +4PState +4PTabOrder 4PTabStop +4PVisible +#lcl.StdCtrls.TToggleBox #lcl.StdCtrls.TCustomCheckBox +2MWSRegisterClass +2MCreateParams +2PParentColor +3MCreate +4PAllowGrayed +4PAlign +4PAnchors +4PAutoSize +4PBidiMode +4PBorderSpacing +4PCaption +4PChecked +4PColor +4PConstraints +4PDragCursor +4PDragKind +4PDragMode +4PEnabled +4PFont +4PHint +4POnChange +4POnClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnEnter +4POnExit +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnStartDrag +4PParentBidiMode +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowHint +4PState 4PTabOrder -4PText +4PTabStop 4PVisible -#lcl.StdCtrls.TMemo #lcl.StdCtrls.TCustomMemo +#lcl.StdCtrls.TRadioButton #lcl.StdCtrls.TCustomCheckBox +2MWSRegisterClass +2MApplyChanges +2MDialogChar +2MRealSetText +2MDoClickOnChange +2MCreateParams +3MCreate 4PAlign 4PAlignment 4PAnchors +4PAutoSize 4PBidiMode 4PBorderSpacing -4PBorderStyle -4PCharCase +4PCaption +4PChecked 4PColor 4PConstraints 4PDragCursor @@ -26473,16 +26535,13 @@ 4PDragMode 4PEnabled 4PFont -4PHideSelection -4PLines -4PMaxLength +4PHint 4POnChange +4POnChangeBounds 4POnClick 4POnContextPopup -4POnDblClick 4POnDragDrop 4POnDragOver -4POnEditingDone 4POnEndDrag 4POnEnter 4POnExit @@ -26497,69 +26556,312 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnResize 4POnStartDrag -4POnUTF8KeyPress 4PParentBidiMode 4PParentColor 4PParentFont -4PPopupMenu 4PParentShowHint -4PReadOnly -4PScrollBars +4PPopupMenu 4PShowHint 4PTabOrder 4PTabStop 4PVisible -4PWantReturns -4PWantTabs -4PWordWrap -#lcl.StdCtrls.TCustomStaticText #lcl.Controls.TWinControl +#lcl.StdCtrls.TCustomLabel #lcl.Controls.TGraphicControl 1VFAlignment 1VFFocusControl +1VFOptimalFill 1VFShowAccelChar -1VFStaticBorderStyle -1MGetTransparent +1VFWordWrap +1VFLayout +1VFInternalSetBounds 1MSetAlignment -1MSetStaticBorderStyle -1MSetTransparent -1MWMActivate +1MSetOptimalFill +2MWSRegisterClass +2MCanTab +2MDoMeasureTextPosition +2MHasMultiLine +2MCalculatePreferredSize +2MCalculateSize +2MDoAutoSize +2MDialogChar +2MTextChanged +2MDoSetBounds +2MFontChanged +2MGetControlClassDefaultSize +2MWMActivate +2MNotification +2MGetLabelText +2MGetTransparent +2MSetColor +2MSetFocusControl +2MSetLayout +2MSetShowAccelChar +2MSetTransparent +2MSetWordWrap +2MLoaded +2MUpdateSize +2PAlignment rw +2PFocusControl rw +2PLayout rw +2PShowAccelChar rw +2PTransparent rw +2PWordWrap rw +2POptimalFill rw +3MCreate +3MCalcFittingFontHeight +3MColorIsStored +3MAdjustFontForOptimalFill +3MPaint +3MSetBounds +3PAutoSize +3PColor +#lcl.StdCtrls.TLabel #lcl.StdCtrls.TCustomLabel +4PAlign +4PAlignment +4PAnchors +4PAutoSize +4PBidiMode +4PBorderSpacing +4PCaption +4PColor +4PConstraints +4PDragCursor +4PDragKind +4PDragMode +4PEnabled +4PFocusControl +4PFont +4PLayout +4PParentBidiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowAccelChar +4PShowHint +4PTransparent +4PVisible +4PWordWrap +4POnChangeBounds +4POnClick +4POnContextPopup +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnStartDrag +4POptimalFill +#lcl.ExtendedStrings.TExtendedStringList #rtl.Classes.TStringList +1VFOptions +1VFRecordSize +1MGetRecords +1MSetOptions +1MSetRecords +1MSetRecordSize +1MDoResizeRecord +2MResizeRecord +2MGetObject +2MPutObject +3MCreate +3MDestroy +3MClear +3MDelete +3MCreateRecord +3MFreeRecord +3MFreeAllRecords +3MRecordAllocated +3PRecords rw +3PRecordSize rw +3POptions rw +#lcl.TextStrings.TTextStrings #rtl.Classes.TStrings +1VFOnChange +1VFOnChanging +2VFArraysValid +2VFLineCount +2VFLineCapacity +2VFLineRanges +2VFText +2VFUpdateCount +2VFChangedWhileUpdate +2MGetTextStr +2MSetTextStr +2MBuildArrays +2MGetCount +2MChanged +2MChanging +2MGet +2MClearArrays +2MGetObject +2MPut +2MPutObject +2MGetLineLen +2MGetLineEnd +2MCountLineEndings +3MCreate +3MDestroy +3MClear +3MSetText +3MInsert +3MDelete +3MExchange +3MMove +3MMakeTextBufferUnique +3MBeginUpdate +3MEndUpdate +3MGetText +3MIndexOf +3MAdd +3MAddObject +3MAddStrings +3MLoadFromFile +3MSaveToFile +3PText rw +3POnChange rw +3POnChanging rw +#lcl.Forms.TCustomHintAction #lcl.ActnList.TCustomAction +4PHint +#lcl.Forms.EScrollBar #rtl.sysutils.Exception +#lcl.Forms.TControlScrollBar #rtl.Classes.TPersistent +1VFAutoRange +1VFIncrement +1VFKind +1VFPage +1VFRange +1VFSmooth +1VFTracking +1VFVisible +1VFOldScrollInfo +1VFOldScrollInfoValid +2VFControl +2VFPosition +2MControlHandle +2MGetAutoScroll +2MGetIncrement +2MGetPage +2MGetPosition +2MGetRange +2MGetSize +2MGetSmooth +2MHandleAllocated +2MIsRangeStored +2MControlUpdateScrollBars +2MInternalSetRange +2MScrollHandler +2MSetIncrement +2MSetPage +2MSetPosition +2MSetRange +2MSetSmooth +2MSetTracking +2MSetVisible +2MUpdateScrollBar +2MInvalidateScrollInfo +2MGetHorzScrollBar +2MGetVertScrollBar +2MScrollBarShouldBeVisible +3MCreate +3MAssign +3MIsScrollBarVisible +3MScrollPos +3PKind r +3MGetOtherScrollBar +3PSize rs +3MClientSize +3MClientSizeWithBar +3MClientSizeWithoutBar +4PIncrement rw +4PPage rw +4PSmooth rw +4PPosition rw +4PRange rws +4PTracking rw +4PVisible rw +#lcl.Forms.TScrollingWinControl #lcl.Controls.TCustomControl +1VFHorzScrollBar +1VFVertScrollBar +1VFAutoScroll +1VFIsUpdating +1MSetHorzScrollBar +1MSetVertScrollBar +2MWSRegisterClass +2MAlignControls +2MAutoScrollEnabled +2MCalculateAutoRanges +2MCreateWnd +2MGetClientScrollOffset +2MGetLogicalClientRect +2MDoOnResize +2MGetPreferredSizeClientFrame +2MWMSize +2MWMHScroll +2MWMVScroll +2MWMMouseWheel +2MComputeScrollbars +2MSetAutoScroll +2MLoaded +2MResizing +2PAutoScroll rw +2MSetAutoSize +3MCreate +3MDestroy +3MUpdateScrollbars +3MGetControlClassDefaultSize +3MScrollBy +3MScrollInView +4PHorzScrollBar rw +4PVertScrollBar rw +#lcl.Forms.TScrollBox #lcl.Forms.TScrollingWinControl 2MWSRegisterClass -2MGetLabelText -2MRealSetText -2MNotification -2MSetFocusControl -2MSetShowAccelChar -2MDialogChar -2MGetControlClassDefaultSize 3MCreate -3PAlignment rw -3PBorderStyle rw -3PFocusControl rw -3PShowAccelChar rw -3PTransparent rw -#lcl.StdCtrls.TStaticText #lcl.StdCtrls.TCustomStaticText 4PAlign -4PAlignment 4PAnchors 4PAutoSize -4PBidiMode +4PAutoScroll 4PBorderSpacing +4PBiDiMode 4PBorderStyle -4PCaption -4PColor +4PChildSizing +4PClientHeight +4PClientWidth 4PConstraints +4PDockSite 4PDragCursor 4PDragKind 4PDragMode -4PFocusControl +4PEnabled +4PColor 4PFont -4POnChangeBounds +4PParentBiDiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowHint +4PTabOrder +4PTabStop +4PVisible 4POnClick -4POnContextPopup +4POnConstrainedResize 4POnDblClick +4POnDockDrop +4POnDockOver 4POnDragDrop 4POnDragOver +4POnEndDock 4POnEndDrag +4POnEnter +4POnExit +4POnGetSiteInfo 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -26569,110 +26871,60 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize +4POnStartDock 4POnStartDrag -4PParentBidiMode -4PParentFont -4PParentColor -4PShowAccelChar -4PShowHint -4PTabOrder -4PTabStop -4PTransparent -4PVisible -#lcl.StdCtrls.TButtonControl #lcl.Controls.TWinControl -1VFOnChange -1VFClicksDisabled -1MIsCheckedStored -1MWMDefaultClicked +4POnUnDock +4POnPaint +#lcl.Forms.TCustomFrame #lcl.Forms.TScrollingWinControl +1MAddActionList +1MRemoveActionList +1MReadDesignLeft +1MReadDesignTop +1MWriteDesignLeft +1MWriteDesignTop 2MWSRegisterClass -2MGetActionLinkClass -2MGetChecked -2MSetChecked -2MDoOnChange -2MClick -2PChecked rws -2PClicksDisabled rw -2POnChange rw +2MNotification +2MSetParent +2MDefineProperties +2MCalculatePreferredSize 3MCreate -#lcl.StdCtrls.TButtonActionLink #lcl.Controls.TWinControlActionLink(#lcl.Controls.TControlActionLink) -2VFClientButton -2MAssignClient -2MSetChecked -3MIsCheckedLinked -#lcl.StdCtrls.TCustomButton #lcl.StdCtrls.TButtonControl -1VFModalResult -1VFShortCut -1VFShortCutKey2 -1VFCancel -1VFDefault -1VFActive -1VFRolesUpdateLocked -1MSetCancel -1MSetDefault -1MSetModalResult -1MCMUIActivate -1MWMSetFocus -1MWMKillFocus -1MUpdateFocus -2MWSRegisterClass -2MCreateWnd -2MCreateParams -2MControlKeyDown -2MControlKeyUp -2MDialogChar -2MChildClassAllowed -2MGetControlClassDefaultSize -2PParentColor -2MWSSetDefault -2MWSSetText -2MTextChanged -2MLoaded -2MUpdateDefaultCancel +3MGetChildren +3MGetControlClassDefaultSize +#lcl.Forms.TFrame #lcl.Forms.TCustomFrame +1VFLCLVersion +1MLCLVersionIsStored 3MCreate -3MClick -3MExecuteDefaultAction -3MExecuteCancelAction -3MActiveDefaultControlChanged -3MUpdateRolesForForm -3MUseRightToLeftAlignment -3PActive rs -3PDefault rw -3PModalResult rw -3PShortCut r -3PShortCutKey2 r -3PCancel rw -3PColor -3PTabStop -#lcl.StdCtrls.TButton #lcl.StdCtrls.TCustomButton -4PAction 4PAlign 4PAnchors +4PAutoScroll 4PAutoSize -4PBidiMode +4PBiDiMode 4PBorderSpacing -4PCancel -4PCaption +4PChildSizing +4PClientHeight +4PClientWidth 4PColor 4PConstraints -4PDefault +4PDockSite 4PDragCursor 4PDragKind 4PDragMode 4PEnabled 4PFont -4PParentBidiMode -4PModalResult -4POnChangeBounds +4PLCLVersion rws 4POnClick +4POnConstrainedResize 4POnContextPopup +4POnDblClick +4POnDockDrop +4POnDockOver 4POnDragDrop 4POnDragOver +4POnEndDock 4POnEndDrag 4POnEnter 4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp +4POnGetSiteInfo 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -26682,8 +26934,11 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize +4POnStartDock 4POnStartDrag -4POnUTF8KeyPress +4POnUnDock +4PParentBiDiMode +4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu @@ -26691,72 +26946,326 @@ 4PTabOrder 4PTabStop 4PVisible -#lcl.StdCtrls.TCustomCheckBox #lcl.StdCtrls.TButtonControl -1VFAlignment -1VFAllowGrayed -1VFState -1VFShortCut -1VFShortCutKey2 -1MGetAlignment -1MSetAlignment -1MSetState -1MGetState -1MDoChange +#lcl.Forms.TCustomForm #lcl.Forms.TScrollingWinControl +1VFActive +1VFActiveControl +1VFActiveDefaultControl +1VFAllowDropFiles +1VFAlphaBlend +1VFAlphaBlendValue +1VFBorderIcons +1VFDefaultControl +1VFCancelControl +1VFDefaultMonitor +1VFDesigner +1VFFormStyle +1VFFormUpdateCount +1VFFormHandlers +1VFHelpFile +1VFIcon +1VFOnShowModalFinished +1VFPopupMode +1VFPopupParent +1VFSmallIconHandle +1VFBigIconHandle +1VFKeyPreview +1VFMenu +1VFModalResult +1VFLastFocusedControl +1VFOldBorderStyle +1VFOnActivate +1VFOnClose +1VFOnCloseQuery +1VFOnCreate +1VFOnDeactivate +1VFOnDestroy +1VFOnDropFiles +1VFOnHelp +1VFOnHide +1VFOnShortcut +1VFOnShow +1VFOnWindowStateChange +1VFPixelsPerInch +1VFPosition +1VFRealizedShowInTaskBar +1VFRestoredLeft +1VFRestoredTop +1VFRestoredWidth +1VFRestoredHeight +1VFShowInTaskbar +1VFWindowState +1VFDesignTimeDPI +1MGetClientHandle +1MGetEffectiveShowInTaskBar +1MGetMonitor +1MGetPixelsPerInch +1MIsAutoScrollStored +1MIsForm +1MIsIconStored +1MCloseModal +1MFreeIconHandles +1MIconChanged +1MMoved +1MSetActive +1MSetActiveControl +1MSetActiveDefaultControl +1MSetAllowDropFiles +1MSetAlphaBlend +1MSetAlphaBlendValue +1MSetBorderIcons +1MSetFormBorderStyle +1MSetCancelControl +1MSetDefaultControl +1MSetFormStyle +1MSetIcon +1MSetMenu +1MSetModalResult +1MSetPopupMode +1MSetPopupParent +1MSetPosition +1MSetShowInTaskbar +1MSetLastFocusedControl +1MSetWindowFocus +1MSetWindowState +1MAddHandler +1MRemoveHandler +1MFindDefaultForActiveControl +1MUpdateMenu +1MUpdateShowInTaskBar +2MWMActivate +2MWMCloseQuery +2MWMHelp +2MWMMove +2MWMShowWindow +2MWMSize +2MWMWindowPosChanged +2MCMBiDiModeChanged +2MCMParentBiDiModeChanged +2MCMAppShowBtnGlyphChanged +2MCMAppShowMenuGlyphChanged +2MCMIconChanged +2MCMRelease +2MCMActivate +2MCMDeactivate +2MCMShowingChanged +2VFActionLists +2VFFormBorderStyle +2VFFormState 2MWSRegisterClass -2MClick -2MDoClickOnChange -2MRetrieveState +2MDoShowWindow +2MActivate +2MActiveChanged +2MAdjustClientRect +2MBeginFormUpdate +2MColorIsStored +2MCreateParams +2MCreateWnd +2MDeactivate +2MDoClose +2MDoCreate +2MDoDestroy +2MDoHide +2MDoShow +2MEndFormUpdate +2MHandleCreateException +2MHandleDestroyException +2MHandleShowHideException 2MInitializeWnd -2MToggle -2MDialogChar -2MGetChecked -2MSetChecked -2MRealSetText -2MApplyChanges -2MGetControlClassDefaultSize 2MLoaded -2MWSSetText -2MTextChanged -2MCreateParams +2MChildHandlesCreated +2MNotification +2MPaintWindow +2MRequestAlign +2MResizing +2MCalculatePreferredSize +2MSetZOrder +2MSetParent +2MMoveToDefaultPosition +2MUpdateShowing +2MSetVisible +2MAllAutoSized +2MDoFirstShow +2MUpdateWindowState +2MVisibleChanging +2MVisibleChanged +2MWndProc +2MVisibleIsStored +2MDoSendBoundsToInterface +2MDoAutoSize +2MSetAutoSize +2MSetAutoScroll +2MDoAddActionList +2MDoRemoveActionList +2MBeginAutoDrag +2MDoDock +2MGetFloating +2MGetDefaultDockCaption +2MCMActionExecute +2MCMActionUpdate +2MDoExecuteAction +2MDoUpdateAction +2MUpdateActions +2PClientHandle r 3MCreate -3PAlignment rw -3PAllowGrayed rw -3PState rw -3PShortCut r -3PShortCutKey2 r -3POnChange -#lcl.StdCtrls.TCheckBox #lcl.StdCtrls.TCustomCheckBox +3MCreateNew +3MDestroy +3MAfterConstruction +3MBeforeDestruction +3MGetControlClassDefaultSize +3MBigIconHandle +3MClose +3MCloseQuery +3MDefocusControl +3MDestroyWnd +3MEnsureVisible +3MFocusControl +3MFormIsUpdating +3MGetFormImage +3MGetRolesForControl +3MHide +3MIntfDropFiles +3MIntfHelp +3MIsShortcut +3MMakeFullyVisible +3MAutoSizeDelayedHandle +3MGetPreferredSize +3MRelease +3MCanFocus +3MSetFocus +3MSetFocusedControl +3MSetRestoredBounds +3MShow +3MShowModal +3MShowOnTop +3MSmallIconHandle +3MGetChildren +3MWantChildKey +3MRemoveAllHandlersOfObject +3MAddHandlerFirstShow +3MRemoveHandlerFirstShow +3MAddHandlerClose +3MRemoveHandlerClose +3MAddHandlerCreate +3MRemoveHandlerCreate +3MActiveMDIChild +3MGetMDIChildren +3MMDIChildCount +3MDock +3MUpdateDockCaption +3PActive r +3PActiveControl rw +3PActiveDefaultControl rw +3PAllowDropFiles rw +3PAlphaBlend rw +3PAlphaBlendValue rw +3PAutoScroll s +3PBorderIcons rw +3PBorderStyle rw +3PCancelControl rw +3PCaption s +3PColor +3PDefaultControl rw +3PDefaultMonitor rw +3PDesigner rw +3PDesignTimeDPI rw +3PFormState r +3PFormStyle rw +3PHelpFile rw +3PIcon rws +3PKeyPreview rw +3PMDIChildren r +3PMenu rw +3PModalResult rw +3PMonitor r +3PPopupMode rw +3PPopupParent rw +3POnActivate rw +3POnClose rws +3POnCloseQuery rws +3POnCreate rw +3POnDeactivate rw +3POnDestroy rw +3POnDropFiles rw +3POnHelp rw +3POnHide rw +3POnResize s +3POnShortcut rw +3POnShow rw +3POnShowModalFinished rw +3POnWindowStateChange rw +3PParentFont +3PPixelsPerInch rws +3PPosition rw +3PRestoredLeft r +3PRestoredTop r +3PRestoredWidth r +3PRestoredHeight r +3PShowInTaskBar rw +3PVisible s +3PWindowState rw +#lcl.Forms.TForm #lcl.Forms.TCustomForm +1VFLCLVersion +1MLCLVersionIsStored +2MCreateWnd +2MLoaded 3MCreate +3MCascade +3MNext +3MPrevious +3MTile +3PClientHandle +3PDockManager 4PAction +4PActiveControl 4PAlign -4PAlignment -4PAllowGrayed +4PAllowDropFiles +4PAlphaBlend +4PAlphaBlendValue 4PAnchors +4PAutoScroll 4PAutoSize -4PBidiMode -4PBorderSpacing +4PBiDiMode +4PBorderIcons +4PBorderStyle +4PBorderWidth 4PCaption -4PChecked +4PChildSizing +4PClientHeight +4PClientWidth 4PColor 4PConstraints -4PDragCursor +4PDefaultMonitor +4PDockSite 4PDragKind 4PDragMode 4PEnabled 4PFont -4PHint -4POnChange +4PFormStyle +4PHelpFile +4PIcon +4PKeyPreview +4PMenu +4POnActivate 4POnChangeBounds 4POnClick +4POnClose +4POnCloseQuery 4POnContextPopup +4POnCreate +4POnDblClick +4POnDeactivate +4POnDestroy +4POnDockDrop +4POnDockOver 4POnDragDrop 4POnDragOver -4POnEditingDone -4POnEndDrag -4POnEnter -4POnExit -4POnKeyPress +4POnDropFiles +4POnEndDock +4POnGetSiteInfo +4POnHelp +4POnHide 4POnKeyDown +4POnKeyPress 4POnKeyUp 4POnMouseDown 4POnMouseEnter @@ -26766,319 +27275,856 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPaint 4POnResize -4POnStartDrag +4POnShortCut +4POnShow +4POnShowHint +4POnStartDock +4POnUnDock 4POnUTF8KeyPress -4PParentColor +4POnWindowStateChange +4PParentBiDiMode 4PParentFont -4PParentShowHint -4PParentBidiMode +4PPixelsPerInch 4PPopupMenu +4PPopupMode +4PPopupParent +4PPosition +4PSessionProperties 4PShowHint -4PState -4PTabOrder -4PTabStop +4PShowInTaskBar +4PUseDockManager +4PLCLVersion rws 4PVisible -#lcl.StdCtrls.TToggleBox #lcl.StdCtrls.TCustomCheckBox +4PWindowState +#lcl.Forms.TCustomDockForm #lcl.Forms.TCustomForm +2MDoAddDockClient +2MDoRemoveDockClient +2MGetSiteInfo +2MLoaded +3MCreate +3PAutoScroll +3PBorderStyle +3PFormStyle +4PPixelsPerInch +#lcl.Forms.THintWindow #lcl.Forms.TCustomForm +1VFActivating +1VFAlignment +1VFHintRect +1VFHintData +1VFAutoHide +1VFAutoHideTimer +1VFHideInterval +1MAdjustBoundsForMonitor +1MGetDrawTextFlags +1MSetAutoHide +1MAutoHideHint +1MSetHideInterval +1MSetHintRectAdjust 2MWSRegisterClass -2MCreateParams -2PParentColor +2MWMNCHitTest +2MActivateSub +2MDoShowWindow +2MUpdateRegion +2MSetColor +2MUseThemes +3MCreate +3MDestroy +3MActivateHint +3MActivateWithBounds +3MActivateHintData +3MCalcHintRect +3MOffsetHintRect +3MInitializeWnd +3MIsHintMsg +3MReleaseHandle +3MPaint +3MSetBounds +3MGetControlClassDefaultSize +3POnMouseDown +3PAlignment rw +3PHintRect rw +3PHintRectAdjust rw +3PHintData rw +3PAutoHide rw +3PBiDiMode +3PHideInterval rw +#lcl.Forms.THintWindowRendered #lcl.Forms.THintWindow +3MCreate +3MDestroy +3MActivateRendered +#lcl.Forms.TMonitor #rtl.System.TObject +1VFHandle +1VFMonitorNum +1MGetInfo +1MGetLeft +1MGetHeight +1MGetTop +1MGetWidth +1MGetBoundsRect +1MGetWorkareaRect +1MGetPrimary +3PHandle r +3PMonitorNum r +3PLeft r +3PHeight r +3PTop r +3PWidth r +3PBoundsRect r +3PWorkareaRect r +3PPrimary r +#lcl.Forms.TMonitorList #rtl.Classes.TList +1MGetItem +1MSetItem +2MNotify +3PItems rw +#lcl.Forms.TScreen #lcl.LCLClasses.TLCLComponent +1VFActiveControl +1VFActiveCustomForm +1VFActiveForm +1VFCursor +1VFCursorMap +1VFCustomForms +1VFCustomFormsZOrdered +1VFDefaultCursor +1VFHintFont +1VFFocusedForm +1VFFonts +1VFFormList +1VFDataModuleList +1VFIconFont +1VFMenuFont +1VFScreenHandlers +1VFLastActiveControl +1VFLastActiveCustomForm +1VFMonitors +1VFOnActiveControlChange +1VFOnActiveFormChange +1VFPixelsPerInch +1VFSaveFocusedList +1VFSystemFont +1MDeleteCursor +1MDestroyCursors +1MDestroyMonitors +1MGetCursors +1MGetCustomFormCount +1MGetCustomFormZOrderCount +1MGetCustomForms +1MGetCustomFormsZOrdered +1MGetDataModuleCount +1MGetDataModules +1MGetDesktopLeft +1MGetDesktopTop +1MGetDesktopHeight +1MGetDesktopWidth +1MGetDesktopRect +1MGetFonts +1MGetFormCount +1MGetForms +1MGetHeight +1MGetMonitor +1MGetMonitorCount +1MGetPrimaryMonitor +1MGetWidth +1MAddForm +1MRemoveForm +1MSetFocusedForm +1MSetCursor +1MSetCursors +1MSetHintFont +1MSetIconFont +1MSetMenuFont +1MSetSystemFont +1MUpdateLastActive +1MRestoreLastActive +1MAddHandler +1MRemoveHandler +1MDoAddDataModule +1MDoRemoveDataModule +1MNotifyScreenFormHandler +1MGetWorkAreaHeight +1MGetWorkAreaLeft +1MGetWorkAreaRect +1MGetWorkAreaTop +1MGetWorkAreaWidth +2MGetHintFont +2MGetIconFont +2MGetMenuFont +2MGetSystemFont +3MCreate +3MDestroy +3MCustomFormIndex +3MFormIndex +3MCustomFormZIndex +3MMoveFormToFocusFront +3MMoveFormToZFront +3MGetCurrentModalForm +3MGetCurrentModalFormZIndex +3MCustomFormBelongsToActiveGroup +3MFindNonDesignerForm +3MFindForm +3MFindNonDesignerDataModule +3MFindDataModule +3MUpdateMonitors +3MUpdateScreen +3MRemoveAllHandlersOfObject +3MAddHandlerFormAdded +3MRemoveHandlerFormAdded +3MAddHandlerRemoveForm +3MRemoveHandlerRemoveForm +3MAddHandlerActiveControlChanged +3MRemoveHandlerActiveControlChanged +3MAddHandlerActiveFormChanged +3MRemoveHandlerActiveFormChanged +3MAddHandlerFormVisibleChanged +3MRemoveHandlerFormVisibleChanged +3MDisableForms +3MEnableForms +3MMonitorFromPoint +3MMonitorFromRect +3MMonitorFromWindow +3PActiveControl r +3PActiveCustomForm r +3PActiveForm r +3PCursor rw +3PCursors rw +3PCustomFormCount r +3PCustomForms r +3PCustomFormZOrderCount r +3PCustomFormsZOrdered r +3PDesktopLeft r +3PDesktopTop r +3PDesktopHeight r +3PDesktopWidth r +3PDesktopRect r +3PFocusedForm r +3PFormCount r +3PForms r +3PDataModuleCount r +3PDataModules r +3PHintFont rw +3PIconFont rw +3PMenuFont rw +3PSystemFont rw +3PFonts r +3PHeight r +3PMonitorCount r +3PMonitors r +3PPixelsPerInch r +3PPrimaryMonitor r +3PWidth r +3PWorkAreaRect r +3PWorkAreaHeight r +3PWorkAreaLeft r +3PWorkAreaTop r +3PWorkAreaWidth r +3POnActiveControlChange rw +3POnActiveFormChange rw +#lcl.Forms.TApplication #fcl.CustApp.TCustomApplication +1VFApplicationHandlers +1VFApplicationType +1VFCaptureExceptions +1VFComponentsToRelease +1VFComponentsReleasing +1VFCreatingForm +1VFExceptionDialog +1VFExtendedKeysSupport +1VFFindGlobalComponentEnabled +1VFFlags +1VFHint +1VFHintColor +1VFHintControl +1VFHintHidePause +1VFHintHidePausePerChar +1VFHintPause +1VFHintRect +1VFHintShortCuts +1VFHintShortPause +1VFHintTimer +1VFHintTimerType +1VFHintWindow +1VFIcon +1VFBigIconHandle +1VFLayoutAdjustmentPolicy +1VFMainFormOnTaskBar +1VFModalLevel +1VFMoveFormFocusToChildren +1VFOnGetMainFormHandle +1VFOnMessageDialogFinished +1VFOnModalBegin +1VFOnModalEnd +1VFShowButtonGlyphs +1VFShowMenuGlyphs +1VFSmallIconHandle +1VFIdleLockCount +1VFLastKeyDownSender +1VFLastKeyDownKey +1VFLastKeyDownShift +1VFMainForm +1VFMouseControl +1VFNavigation +1VFOldExceptProc +1VFOldExitProc +1VFOnActionExecute +1VFOnActionUpdate +1VFOnActivate +1VFOnDeactivate +1VFOnDestroy +1VFOnDropFiles +1VFOnHelp +1VFOnHint +1VFOnIdle +1VFOnIdleEnd +1VFOnEndSession +1VFOnQueryEndSession +1VFOnMinimize +1VFOnRestore +1VFOnShortcut +1VFOnShowHint +1VFOnUserInput +1VFAsyncCall +1VFShowHint +1VFShowMainForm +1VFLastMousePos +1VFLastMouseControl +1VFLastMouseControlValid +1VFBidiMode +1VFRestoreStayOnTop +1VFTaskBarBehavior +1VFUpdateFormatSettings +1MDoOnIdleEnd +1MGetActive +1MGetCurrentHelpFile +1MGetExename +1MGetMainFormHandle +1MGetTitle +1MFreeIconHandles +1MIconChanged +1MSetBidiMode +1MSetFlags +1MSetMainFormOnTaskBar +1MSetNavigation +1MSetShowButtonGlyphs +1MSetShowMenuGlyphs +1MSetTaskBarBehavior +1MUpdateMouseControl +1MUpdateMouseHint +1MSetCaptureExceptions +1MSetHint +1MSetHintColor +1MSetIcon +1MSetShowHint +1MStopHintTimer +1MValidateHelpSystem +1MWndProc +1MDispatchAction +1MAddHandler +1MRemoveHandler +1MRunLoop +1MActivate +1MDeactivate +2MGetConsoleApplication +2MNotifyIdleHandler +2MNotifyIdleEndHandler +2MNotifyActivateHandler +2MNotifyDeactivateHandler +2MNotifyCustomForms +2MIsHintMsg +2MDoOnHelp +2MDoOnMouseMove +2MShowHintWindow +2MOnHintTimer +2MSetTitle +2MStartHintTimer +2MUpdateVisible +2MDoIdleActions +2MMenuPopupHandler +2MProcessAsyncCallQueue +2MFreeComponent +2MReleaseComponents +2MDoBeforeFinalization +2MGetParams +3MCreate +3MDestroy +3MActivateHint +3MGetControlAtMouse +3MControlDestroyed +3MBigIconHandle +3MSmallIconHandle +3MBringToFront +3MCreateForm +3MUpdateMainForm +3MQueueAsyncCall +3MRemoveAsyncCalls +3MReleaseComponent +3MExecuteAction +3MUpdateAction +3MHandleException +3MHandleMessage +3MHelpCommand +3MHelpContext +3MHelpKeyword +3MShowHelpForObject +3MRemoveStayOnTop +3MRestoreStayOnTop +3MIsWaiting +3MCancelHint +3MHideHint +3MHintMouseMessage +3MInitialize +3MMessageBox +3MMinimize +3MModalStarted +3MModalFinished +3MRestore +3MNotification +3MProcessMessages +3MIdle +3MRun +3MShowException +3MTerminate +3MDisableIdleHandler +3MEnableIdleHandler +3MNotifyUserInputHandler +3MNotifyKeyDownBeforeHandler +3MNotifyKeyDownHandler +3MControlKeyDown +3MControlKeyUp +3MAddOnIdleHandler +3MRemoveOnIdleHandler +3MAddOnIdleEndHandler +3MRemoveOnIdleEndHandler +3MAddOnUserInputHandler +3MRemoveOnUserInputHandler +3MAddOnKeyDownBeforeHandler +3MRemoveOnKeyDownBeforeHandler +3MAddOnKeyDownHandler +3MRemoveOnKeyDownHandler +3MAddOnActivateHandler +3MRemoveOnActivateHandler +3MAddOnDeactivateHandler +3MRemoveOnDeactivateHandler +3MAddOnExceptionHandler +3MRemoveOnExceptionHandler +3MAddOnEndSessionHandler +3MRemoveOnEndSessionHandler +3MAddOnQueryEndSessionHandler +3MRemoveOnQueryEndSessionHandler +3MAddOnMinimizeHandler +3MRemoveOnMinimizeHandler +3MAddOnModalBeginHandler +3MRemoveOnModalBeginHandler +3MAddOnModalEndHandler +3MRemoveOnModalEndHandler +3MAddOnRestoreHandler +3MRemoveOnRestoreHandler +3MAddOnDropFilesHandler +3MRemoveOnDropFilesHandler +3MAddOnHelpHandler +3MRemoveOnHelpHandler +3MAddOnHintHandler +3MRemoveOnHintHandler +3MAddOnShowHintHandler +3MRemoveOnShowHintHandler +3MAddOnGetMainFormHandleHandler +3MRemoveOnGetMainFormHandleHandler +3MRemoveAllHandlersOfObject +3MDoBeforeMouseMessage +3MIsShortcut +3MIntfQueryEndSession +3MIntfEndSession +3MIntfAppActivate +3MIntfAppDeactivate +3MIntfAppMinimize +3MIntfAppRestore +3MIntfDropFiles +3MIntfSettingsChange +3MIntfThemeOptionChange +3MIsRightToLeft +3MIsRTLLang +3MDirection +3MDoArrowKey +3MDoTabKey +3MDoEscapeKey +3MDoReturnKey +3PActive r +3PApplicationType rw +3PBidiMode rw +3PCaptureExceptions rw +3PExtendedKeysSupport rw +3PExceptionDialog rw +3PFindGlobalComponentEnabled rw +3PFlags rw +3PHint rw +3PHintColor rw +3PHintHidePause rw +3PHintHidePausePerChar rw +3PHintPause rw +3PHintShortCuts rw +3PHintShortPause rw +3PIcon rw +3PLayoutAdjustmentPolicy rw +3PNavigation rw +3PMainForm r +3PMainFormHandle r +3PMainFormOnTaskBar rw +3PModalLevel r +3PMoveFormFocusToChildren rw +3PMouseControl r +3PTaskBarBehavior rw +3PUpdateFormatSettings rw +3POnActionExecute rw +3POnActionUpdate rw +3POnActivate rw +3POnDeactivate rw +3POnGetMainFormHandle rw +3POnIdle rw +3POnIdleEnd rw +3POnEndSession rw +3POnQueryEndSession rw +3POnMinimize rw +3POnMessageDialogFinished rw +3POnModalBegin rw +3POnModalEnd rw +3POnRestore rw +3POnDropFiles rw +3POnHelp rw +3POnHint rw +3POnShortcut rw +3POnShowHint rw +3POnUserInput rw +3POnDestroy rw +3PShowButtonGlyphs rw +3PShowMenuGlyphs rw +3PShowHint rw +3PShowMainForm rw +3PTitle rw +#lcl.Forms.TApplicationProperties #lcl.LCLClasses.TLCLComponent +1VFCaptureExceptions +1VFExceptionDialogType +1VFHelpFile +1VFHint +1VFHintColor +1VFHintHidePause +1VFHintPause +1VFHintShortCuts +1VFHintShortPause +1VFOnActivate +1VFOnDeactivate +1VFOnDropFiles +1VFOnGetMainFormHandle +1VFOnModalBegin +1VFOnModalEnd +1VFShowButtonGlyphs +1VFShowHint +1VFShowMainForm +1VFShowMenuGlyphs +1VFTitle +1VFOnException +1VFOnIdle +1VFOnIdleEnd +1VFOnHelp +1VFOnHint +1VFOnShowHint +1VFOnUserInput +1VFOnEndSession +1VFOnQueryEndSession +1VFOnMinimize +1VFOnRestore +1MSetExceptionDialog +2MSetCaptureExceptions +2MSetHelpFile +2MSetHint +2MSetHintColor +2MSetHintHidePause +2MSetHintPause +2MSetHintShortCuts +2MSetHintShortPause +2MSetShowButtonGlyphs +2MSetShowMenuGlyphs +2MSetShowHint +2MSetShowMainForm +2MSetTitle +2MSetOnActivate +2MSetOnDeactivate +2MSetOnException +2MSetOnGetMainFormHandle +2MSetOnIdle +2MSetOnIdleEnd +2MSetOnEndSession +2MSetOnQueryEndSession +2MSetOnMinimize +2MSetOnModalBegin +2MSetOnModalEnd +2MSetOnRestore +2MSetOnDropFiles +2MSetOnHelp +2MSetOnHint +2MSetOnShowHint +2MSetOnUserInput 3MCreate -4PAllowGrayed -4PAnchors -4PAutoSize -4PBidiMode -4PBorderSpacing -4PCaption -4PChecked -4PColor -4PConstraints -4PDragCursor -4PDragKind -4PDragMode -4PEnabled -4PFont -4PHint -4POnChange -4POnClick -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnEnter -4POnExit -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnStartDrag -4PParentBidiMode -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PState -4PTabOrder -4PTabStop -4PVisible -#lcl.StdCtrls.TRadioButton #lcl.StdCtrls.TCustomCheckBox -2MWSRegisterClass -2MApplyChanges -2MDialogChar -2MRealSetText -2MDoClickOnChange -2MCreateParams +3MDestroy +4PCaptureExceptions rw +4PExceptionDialog rw +4PHelpFile rw +4PHint rw +4PHintColor rw +4PHintHidePause rw +4PHintPause rw +4PHintShortCuts rw +4PHintShortPause rw +4PShowButtonGlyphs rw +4PShowMenuGlyphs rw +4PShowHint rw +4PShowMainForm rw +4PTitle rw +4POnActivate rw +4POnDeactivate rw +4POnException rw +4POnGetMainFormHandle rw +4POnIdle rw +4POnIdleEnd rw +4POnEndSession rw +4POnQueryEndSession rw +4POnMinimize rw +4POnModalBegin rw +4POnModalEnd rw +4POnRestore rw +4POnDropFiles rw +4POnHelp rw +4POnHint rw +4POnShowHint rw +4POnUserInput rw +#lcl.Forms.TIDesigner #rtl.System.TObject +2VFLookupRoot +2VFDefaultFormBoundsValid +3MIsDesignMsg +3MModified +3MNotification +3MPaintGrid +3MValidateRename +3MGetShiftState +3MSelectOnlyThisComponent +3MUniqueName +3MPrepareFreeDesigner +3PLookupRoot r +3PDefaultFormBoundsValid rw +#lcl.Forms.TFormPropertyStorage #lcl.Controls.TControlPropertyStorage +1MFormCreate +1MFormClose +1MFormDestroy 3MCreate -4PAlign -4PAnchors -4PAutoSize -4PBidiMode -4PBorderSpacing -4PCaption -4PChecked -4PColor -4PConstraints -4PDragCursor -4PDragKind -4PDragMode -4PEnabled -4PFont -4PHint -4POnChange -4POnChangeBounds -4POnClick -4POnContextPopup -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnEnter -4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnResize -4POnStartDrag -4PParentBidiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PTabOrder -4PTabStop -4PVisible -#lcl.StdCtrls.TCustomLabel #lcl.Controls.TGraphicControl -1VFAlignment -1VFFocusControl -1VFOptimalFill -1VFShowAccelChar -1VFWordWrap -1VFLayout -1VFInternalSetBounds -1MSetAlignment -1MSetOptimalFill -2MWSRegisterClass -2MCanTab -2MDoMeasureTextPosition -2MHasMultiLine -2MCalculatePreferredSize -2MCalculateSize -2MDoAutoSize -2MDialogChar -2MTextChanged -2MDoSetBounds -2MFontChanged -2MGetControlClassDefaultSize -2MWMActivate -2MNotification -2MGetLabelText -2MGetTransparent -2MSetColor -2MSetFocusControl -2MSetLayout -2MSetShowAccelChar -2MSetTransparent -2MSetWordWrap +3MDestroy +#lcl.CustomTimer.TCustomTimer #rtl.Classes.TComponent +1VFInterval +1VFOnStartTimer +1VFOnStopTimer +1VFTimerHandle +1VFOnTimer +1VFEnabled +1MTimer +2MSetEnabled +2MSetInterval +2MSetOnTimer +2MDoOnTimer +2MUpdateTimer +2MKillTimer 2MLoaded -2MUpdateSize -2PAlignment rw -2PFocusControl rw -2PLayout rw -2PShowAccelChar rw -2PTransparent rw -2PWordWrap rw -2POptimalFill rw -3MCreate -3MCalcFittingFontHeight -3MColorIsStored -3MAdjustFontForOptimalFill -3MPaint -3MSetBounds -3PAutoSize -3PColor -#lcl.StdCtrls.TLabel #lcl.StdCtrls.TCustomLabel -4PAlign -4PAlignment -4PAnchors -4PAutoSize -4PBidiMode -4PBorderSpacing -4PCaption -4PColor -4PConstraints -4PDragCursor -4PDragKind -4PDragMode -4PEnabled -4PFocusControl -4PFont -4PLayout -4PParentBidiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowAccelChar -4PShowHint -4PTransparent -4PVisible -4PWordWrap -4POnChangeBounds -4POnClick -4POnContextPopup -4POnDblClick -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnResize -4POnStartDrag -4POptimalFill -#lcl.ExtendedStrings.TExtendedStringList #rtl.Classes.TStringList -1VFOptions -1VFRecordSize -1MGetRecords -1MSetOptions -1MSetRecords -1MSetRecordSize -1MDoResizeRecord -2MResizeRecord -2MGetObject -2MPutObject 3MCreate 3MDestroy +3PEnabled rw +3PInterval rw +3POnTimer rw +3POnStartTimer rw +3POnStopTimer rw +#lcl.Clipbrd.TClipboard #rtl.Classes.TPersistent +1VFAllocated +1VFClipboardType +1VFCount +1VFData +1VFSupportedFormatsChanged +1VFOnRequest +1VFOpenRefCount +1MAssignGraphic +1MAssignPicture +1MAssignToGraphic +1MAssignToPicture +1MGetAsText +1MGetFormatCount +1MGetFormats +1MGetOwnerShip +1MIndexOfCachedFormatID +1MInternalOnRequest +1MSetAsText +1MSetBuffer +1MSetOnRequest +1MBeginUpdate +1MEndUpdate +1MIsUpdating +1MCanReadFromInterface +1MCanReadFromCache +1MOnDefaultFindClass +3MAddFormat +3MAssign +3MAssignTo 3MClear -3MDelete -3MCreateRecord -3MFreeRecord -3MFreeAllRecords -3MRecordAllocated -3PRecords rw -3PRecordSize rw -3POptions rw -#lcl.TextStrings.TTextStrings #rtl.Classes.TStrings -1VFOnChange -1VFOnChanging -2VFArraysValid -2VFLineCount -2VFLineCapacity -2VFLineRanges -2VFText -2VFUpdateCount -2VFChangedWhileUpdate -2MGetTextStr -2MSetTextStr -2MBuildArrays -2MGetCount -2MChanged -2MChanging -2MGet -2MClearArrays -2MGetObject -2MPut -2MPutObject -2MGetLineLen -2MGetLineEnd -2MCountLineEndings +3MClose 3MCreate 3MDestroy -3MClear -3MSetText -3MInsert -3MDelete -3MExchange -3MMove -3MMakeTextBufferUnique -3MBeginUpdate -3MEndUpdate -3MGetText -3MIndexOf -3MAdd -3MAddObject -3MAddStrings -3MLoadFromFile -3MSaveToFile -3PText rw -3POnChange rw -3POnChanging rw -#lcl.ImageListCache.IImageCacheListener #rtl.System.IUnknown -0MCacheSetImageList -0MCacheSetImageIndex -#lcl.ImageListCache.TImageCacheItems #rtl.Classes.TList -1MGetItem -1MGetItemForListener -1MSetItem -2MNotify -3MGetNew -3PItems rw -#lcl.ImageListCache.TImageListCache #rtl.System.TObject -1VFItems -1VFImages -1VFListeners -1VFObsoletedCount -1MCheckRebuildNeed -1MGetImageListFor -1MUnregisterBitmaps +3MFindPictureFormatID +3MFindFormatID +3MGetComponent +3MGetComponentAsText +3MGetFormat +3MSupportedFormats +3MGetTextBuf +3MHasFormat +3MHasFormatName +3MHasPictureFormat +3MOpen +3MSetComponent +3MSetComponentAsText +3MSetFormat +3MSetSupportedFormats +3MSetTextBuf +3PAsText rw +3PClipboardType r +3PFormatCount r +3PFormats r +3POnRequest rw +#lcl.HelpIntfs.EHelpSystemException #rtl.sysutils.Exception +#lcl.HelpIntfs.THelpQuery #rtl.Classes.TPersistent +1VFHelpDatabaseID +3MCreate +3PHelpDatabaseID rw +#lcl.HelpIntfs.THelpQueryTOC #lcl.HelpIntfs.THelpQuery +#lcl.HelpIntfs.THelpQueryContext #lcl.HelpIntfs.THelpQuery +1VFContext +3MCreate +3PContext rw +#lcl.HelpIntfs.THelpQueryKeyword #lcl.HelpIntfs.THelpQuery +1VFKeyword +3MCreate +3PKeyword rw +#lcl.HelpIntfs.THelpQueryDirective #lcl.HelpIntfs.THelpQuery +1VFDirective +3MCreate +3PDirective rw +#lcl.HelpIntfs.THelpQuerySourcePosition #lcl.HelpIntfs.THelpQuery +1VFFilename +1VFSourcePosition +3MCreate +3PFilename rw +3PSourcePosition rw +#lcl.HelpIntfs.THelpQueryPascalContexts #lcl.HelpIntfs.THelpQuerySourcePosition +1VFContextLists 3MCreate -3MDestroy -3MRegisterListener -3MUnregisterListener -3MRegisterBitmap -3MRebuild -#lcl.ExtCtrls.TPage #lcl.Controls.TCustomControl -1VFOnBeforeShow -2MSetParent +3PListOfPascalHelpContextList rw +#lcl.HelpIntfs.THelpQueryMessage #lcl.HelpIntfs.THelpQuery +1VFMessageParts +1VFWholeMessage 3MCreate 3MDestroy -4POnBeforeShow rw -4PBiDiMode -4PChildSizing +3PWholeMessage rw +3PMessageParts rw +#lcl.HelpIntfs.THelpQueryClass #lcl.HelpIntfs.THelpQuery +1VFTheClass +3MCreate +3PTheClass rw +#lcl.HelpIntfs.THelpManager #rtl.System.TObject +3MDoHelpNotFound +3MShowTableOfContents +3MShowError +3MShowHelpForQuery +3MShowHelpForContext +3MShowHelpForKeyword +3MShowHelpForDirective +3MShowHelpForPascalContexts +3MShowHelpForSourcePosition +3MShowHelpForMessageLine +3MShowHelpForClass +3MShowHelpFile +3MShowHelp +#lcl.ColorBox.TCustomColorBox #lcl.StdCtrls.TCustomComboBox +1VFColorRectWidth +1VFColorRectOffset +1VFDefaultColorColor +1VFNoneColorColor +1VFOnGetColors +1VFStyle +1VFSelected +1MGetColor +1MGetColorName +1MGetSelected +1MSetColorRectWidth +1MSetColorRectOffset +1MSetDefaultColorColor +1MSetNoneColorColor +1MSetSelected +1MSetStyle +1MColorProc +1MUpdateCombo +2MDrawItem +2MSetColorList +2MLoaded +2MInitializeWnd +2MDoGetColors +2MCloseUp +2MPickCustomColor +3MCreate +3PColorRectWidth rw +3PColorRectOffset rw +3PStyle rw +3PColors r +3PColorNames r +3PSelected rw +3PDefaultColorColor rw +3PNoneColorColor rw +3POnGetColors rw +#lcl.ColorBox.TColorBox #lcl.ColorBox.TCustomColorBox +4PColorRectWidth +4PColorRectOffset +4PDefaultColorColor +4PNoneColorColor +4PSelected +4PStyle +4POnGetColors +4PAlign +4PAnchors +4PArrowKeysTraverseList +4PAutoComplete +4PAutoCompleteText +4PAutoDropDown +4PAutoSelect +4PAutoSize +4PBidiMode +4PBorderSpacing 4PColor -4PLeft s -4PTop s -4PWidth s -4PHeight s +4PConstraints +4PDragCursor +4PDragMode +4PDropDownCount +4PEnabled +4PFont +4PItemHeight +4PItemWidth +4POnChange +4POnChangeBounds +4POnClick +4POnCloseUp 4POnContextPopup +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnDropDown +4POnEditingDone 4POnEnter 4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27087,61 +28133,90 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnResize -4PParentBiDiMode +4POnStartDrag +4POnSelect +4POnUTF8KeyPress +4PParentBidiMode +4PParentColor +4PParentFont 4PParentShowHint 4PPopupMenu -4PTabOrder s -4PVisible s -#lcl.ExtCtrls.TUNBPages #rtl.Classes.TStrings -1VFPageList -1VFNotebook -1MPageListChange -2MGet -2MGetCount -2MGetObject -2MPut -3MCreate -3MClear -3MDelete -3MInsert -#lcl.ExtCtrls.TNotebook #lcl.Controls.TCustomControl -1VFPages -1VFPageIndex -1VFPageList -1MGetActivePage -1MGetActivePageComponent -1MGetPage -1MGetPageCount -1MGetPageIndex -1MInsertPage -1MSetPageIndex +4PShowHint +4PTabOrder +4PTabStop +4PVisible +#lcl.ColorBox.TCustomColorListBox #lcl.StdCtrls.TCustomListBox +1VFColorRectWidth +1VFColorRectOffset +1VFDefaultColorColor +1VFNoneColorColor +1VFOnGetColors +1VFSelected +1VFStyle +1MGetColors +1MGetColorName +1MGetSelected +1MSetColorRectOffset +1MSetColorRectWidth +1MSetColors +1MSetDefaultColorColor +1MSetNoneColorColor +1MSetSelected +1MSetStyle +1MColorProc +2MDrawItem +2MSetColorList +2MLoaded +2MInitializeWnd +2MDoGetColors +2MDoSelectionChange +2MPickCustomColor 3MCreate -3MDestroy -3MShowControl -3PActivePage r -3PActivePageComponent r -3PPage r -3PPageCount r -4PPageIndex rw -4PPages r +3PColorRectWidth rw +3PColorRectOffset rw +3PStyle rw +3PColors rw +3PColorNames r +3PSelected rw +3PDefaultColorColor rw +3PNoneColorColor rw +3POnGetColors rw +#lcl.ColorBox.TColorListBox #lcl.ColorBox.TCustomColorListBox +4PColorRectWidth +4PColorRectOffset +4PDefaultColorColor +4PNoneColorColor +4PSelected +4PStyle +4POnGetColors 4PAlign -4PAutoSize 4PAnchors -4PBiDiMode +4PBidiMode 4PBorderSpacing +4PBorderStyle +4PClickOnSelChange 4PColor 4PConstraints 4PDragCursor +4PDragKind 4PDragMode +4PExtendedSelect 4PEnabled +4PFont +4PIntegralHeight +4PItemHeight 4POnChangeBounds +4POnClick 4POnContextPopup +4POnDblClick 4POnDragDrop 4POnDragOver -4POnEndDrag 4POnEnter +4POnEndDrag 4POnExit +4POnKeyPress +4POnKeyDown +4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27151,73 +28226,183 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize +4POnSelectionChange +4POnShowHint 4POnStartDrag -4PParentBiDiMode +4POnUTF8KeyPress +4PParentBidiMode +4PParentColor +4PParentShowHint +4PParentFont 4PPopupMenu +4PShowHint 4PTabOrder 4PTabStop -#lcl.ExtCtrls.TTimer #lcl.CustomTimer.TCustomTimer -4PEnabled -4PInterval -4POnTimer -4POnStartTimer -4POnStopTimer -#lcl.ExtCtrls.TCustomIdleTimer #lcl.CustomTimer.TCustomTimer -1VFAutoEnabled -1VFAutoEndEvent -1VFAutoStartEvent -1VFFireOnIdle -1VFHandlersConnected -1MUpdateHandlers -2MSetAutoEnabled -2MDoOnIdle -2MDoOnIdleEnd -2MDoOnUserInput -2MLoaded +4PTopIndex +4PVisible +#lcl.Dialogs.TCommonDialog #lcl.LCLClasses.TLCLComponent +1VFHandle +1VFHeight +1VFWidth +1VFOnCanClose +1VFOnShow +1VFOnClose +1VFTitle +1VFUserChoice +1VFHelpContext +1VFCanCloseCalled +1VFClosing +1MSetHandle +1MIsTitleStored +2MWSRegisterClass +2MDoExecute +2MDefaultTitle +2MGetHeight +2MGetWidth +2MSetHeight +2MSetWidth +3VFCompStyle +3MCreate +3MExecute +3PHandle rw +3PUserChoice rw +3MClose +3MDoShow +3MDoCanClose +3MDoClose +3MHandleAllocated +4POnClose rw +4POnCanClose rw +4POnShow rw +4PHelpContext rw +4PWidth rw +4PHeight rw +4PTitle rws +#lcl.Dialogs.TFileDialog #lcl.Dialogs.TCommonDialog +1VFInternalFilterIndex +1VFDefaultExt +1VFFileName +1VFFiles +1VFFilter +1VFFilterIndex +1VFHistoryList +1VFInitialDir +1VFOnHelpClicked +1VFOnTypeChange +1MSetDefaultExt +1MSetFilterIndex +2MWSRegisterClass +2MDoExecute +2MGetFilterIndex +2MSetFileName +2MSetFilter +2MSetHistoryList 3MCreate 3MDestroy -3PAutoEnabled rw -3PAutoStartEvent rw -3PAutoEndEvent rw -3PFireOnIdle rw -#lcl.ExtCtrls.TIdleTimer #lcl.ExtCtrls.TCustomIdleTimer -4PAutoEnabled -4PAutoStartEvent -4PAutoEndEvent -4PEnabled -4PInterval -4POnTimer -4POnStartTimer -4POnStopTimer -#lcl.ExtCtrls.TShape #lcl.Controls.TGraphicControl -1VFPen -1VFBrush -1VFShape -1MSetBrush -1MSetPen -1MSetShape +3MDoTypeChange +3MExecute +3PFiles r +3PHistoryList rw +3MIntfFileTypeChanged +3MFindMaskInFilter +3MExtractAllFilterMasks +4PTitle +4PDefaultExt rw +4PFileName rw +4PFilter rw +4PFilterIndex rw +4PInitialDir rw +4POnHelpClicked rw +4POnTypeChange rw +#lcl.Dialogs.TOpenDialog #lcl.Dialogs.TFileDialog +1VFOnFolderChange +1VFOnSelectionChange +1VFOptions +1VFLastSelectionChangeFilename +2MWSRegisterClass +2MDereferenceLinks +2MCheckFile +2MCheckFileMustExist +2MCheckAllFiles +2MDoExecute +2MDefaultTitle +3MCreate +3MDoFolderChange +3MDoSelectionChange +3MIntfSetOption +4POptions rw +4POnFolderChange rw +4POnSelectionChange rw +#lcl.Dialogs.TSaveDialog #lcl.Dialogs.TOpenDialog +2MWSRegisterClass +2MDefaultTitle +3MCreate +#lcl.Dialogs.TSelectDirectoryDialog #lcl.Dialogs.TOpenDialog +2MWSRegisterClass +2MCheckFileMustExist +2MDefaultTitle +3MCreate +#lcl.Dialogs.TColorDialog #lcl.Dialogs.TCommonDialog +1VFColor +1VFCustomColors +1MSetCustomColors +1MAddDefaultColor 2MWSRegisterClass +2MDefaultTitle +3MCreate +3MDestroy +4PTitle +4PColor rw +4PCustomColors rw +#lcl.Dialogs.TColorButton #lcl.Buttons.TCustomSpeedButton +1VFBorderWidth +1VFButtonColorAutoSize +1VFButtonColorSize +1VFButtonColor +1VFColorDialog +1VFOnColorChanged +1VFDisabledPattern +1MIsButtonColorAutoSizeStored +1MSetBorderWidth +1MSetButtonColor +1MSetButtonColorAutoSize +1MSetButtonColorSize +2MWSRegisterClass +2MDrawGlyph +2MGetDisabledPattern +2MGetGlyphSize 2MGetControlClassDefaultSize +2MShowColorDialog 3MCreate 3MDestroy -3MPaint -3MStyleChanged +3MClick +4PAction 4PAlign 4PAnchors +4PAllowAllUp 4PBorderSpacing -4PBrush rw +4PBorderWidth rw +4PButtonColorAutoSize rws +4PButtonColorSize rw +4PButtonColor rw +4PColorDialog rw 4PConstraints -4PDragCursor -4PDragKind -4PDragMode +4PCaption +4PColor +4PDown 4PEnabled -4PParentShowHint -4PPen rw -4POnChangeBounds -4POnDragDrop -4POnDragOver -4POnEndDock -4POnEndDrag +4PFlat +4PFont +4PGroupIndex +4PHint +4PLayout +4PMargin +4PSpacing +4PTransparent +4PVisible +4POnClick +4POnColorChanged rw +4POnDblClick 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27228,116 +28413,225 @@ 4POnMouseWheelUp 4POnPaint 4POnResize -4POnStartDock -4POnStartDrag -4PShape rw -4PShowHint -4PVisible -#lcl.ExtCtrls.TCustomSplitter #lcl.Controls.TCustomControl -1VFAutoSnap -1VFBeveled -1VFMinSize -1VFMouseInControl -1VFOnCanOffset -1VFOnCanResize -1VFOnMoved -1VFResizeAnchor -1VFResizeStyle -1VFSplitDragging -1VFSplitterStartMouseXY -1VFSplitterStartLeftTop -1VFSplitterWindow -1MGetResizeControl -1MSetBeveled -1MSetMinSize -2MWSRegisterClass -2MAdaptAnchors -2MCheckNewSize -2MCheckOffset -2MFindAlignControl -2MFindAlignOtherControl -2MMouseDown -2MMouseEnter -2MMouseLeave -2MMouseMove -2MMouseUp -2MPaint -2MSetAlign -2MSetAnchors -2MSetResizeAnchor -2MSetResizeControl -2MStartSplitterMove -2MStopSplitterMove -3MCreate -3MAnchorSplitter -3PResizeControl rw -3MGetOtherResizeControl -3MMoveSplitter -3MSetSplitterPosition -3MGetSplitterPosition -3PAlign -3PAutoSnap rw -3PBeveled rw -3PCursor -3PMinSize rw -3POnCanOffset rw -3POnCanResize rw -3POnMoved rw -3PResizeAnchor rw -3PResizeStyle rw -#lcl.ExtCtrls.TSplitter #lcl.ExtCtrls.TCustomSplitter -4PAlign -4PAnchors -4PAutoSnap -4PBeveled -4PColor -4PConstraints -4PCursor -4PHeight -4PMinSize -4POnCanOffset -4POnCanResize 4POnChangeBounds -4POnMoved -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4PParentColor +4PShowHint +4PParentFont 4PParentShowHint 4PPopupMenu -4PResizeAnchor -4PResizeStyle -4PShowHint -4PVisible -4PWidth -#lcl.ExtCtrls.TPaintBox #lcl.Controls.TGraphicControl +#lcl.Dialogs.TFontDialog #lcl.Dialogs.TCommonDialog +1VFFont +1VFMaxFontSize +1VFMinFontSize +1VFOnApplyClicked +1VFOptions +1VFPreviewText +1MSetFont +2MWSRegisterClass +2MDefaultTitle +3MApplyClicked +3MCreate +3MDestroy +4PTitle +4PFont rw +4PMinFontSize rw +4PMaxFontSize rw +4POptions rw +4POnApplyClicked rw +4PPreviewText rw +#lcl.Dialogs.TFindDialog #lcl.Dialogs.TCommonDialog +1VFFormLeft +1VFFormTop +1MGetReplaceText +1MGetFindText +1MGetLeft +1MGetPosition +1MGetTop +1MSetFindText +1MSetLeft +1MSetOptions +1MSetPosition +1MSetTop +1MSetReplaceText +2VFFindForm +2VFOnReplace +2VFOnFind +2VFOptions +2VFOnHelpClicked +2VFReplaceText +2VFFindText +2MDefaultTitle +2MFindClick +2MHelpClick +2MCancelClick +2MGetHeight +2MGetWidth +2MDoCloseForm +2MFind +2MHelp +2MReplace +2MCreateForm +2MSetFormValues +2MGetFormValues +2MCalcPosition +2PReplaceText rw +2POnReplace rw +3MCreate +3MDestroy +3MCloseDialog +3MExecute +3PLeft rw +3PPosition rw +3PTop rw +4PFindText rw +4POptions rw +4POnFind rw +4POnHelpClicked rw +#lcl.Dialogs.TReplaceDialog #lcl.Dialogs.TFindDialog +2MDefaultTitle +2MReplaceClick +2MReplaceAllClick +2MCreateForm +2MSetFormValues +2MGetFormValues +3MCreate +4PReplaceText +4POnReplace +#lcl.Dialogs.TCustomPrinterSetupDialog #lcl.Dialogs.TCommonDialog +#lcl.Dialogs.TCustomPrintDialog #lcl.Dialogs.TCommonDialog +1VFFromPage +1VFToPage +1VFCollate +1VFOptions +1VFPrintToFile +1VFPrintRange +1VFMinPage +1VFMaxPage +1VFCopies +3MCreate +3PCollate rw +3PCopies rw +3PFromPage rw +3PMinPage rw +3PMaxPage rw +3POptions rw +3PPrintToFile rw +3PPrintRange rw +3PToPage rw +#lcl.Buttons.TButtonGlyph #rtl.System.TObject,#rtl.System.IUnknown,#lcl.ImageListCache.IImageCacheListener +1VFIsDesigning +1VFShowMode +1VFImageIndexes +1VFImages +1VFOriginal +1VFNumGlyphs +1VFOnChange +1VFImagesCache +1VFTransparentMode +1MGetHeight +1MGetWidth +1MSetGlyph +1MSetNumGlyphs +1MSetShowMode +1MClearImages +3MQueryInterface +3M_AddRef +3M_Release +3MCacheSetImageList +3MCacheSetImageIndex +2MGlyphChanged +2MSetTransparentMode +2PTransparentMode r +3MCreate +3MDestroy +3MGetImageIndexAndEffect +3MDraw +3MRefresh +3PGlyph rw +3PIsDesigning rw +3PNumGlyphs rw +3PImages r +3PWidth r +3PHeight r +3PShowMode rw +3POnChange rw +#lcl.Buttons.TCustomBitBtn #lcl.StdCtrls.TCustomButton +1VFDefaultCaption +1VFKind +1VFLayout +1VFMargin +1VFSpacing +1MGetGlyph +1MGetGlyphShowMode +1MGetNumGlyphs +1MIsGlyphStored +1MSetGlyph +1MSetGlyphShowMode +1MSetKind +1MSetLayout +1MSetMargin +1MSetNumGlyphs +1MSetSpacing +1MRealizeKind +1MGetCaptionOfKind +2VFButtonGlyph 2MWSRegisterClass -2MPaint +2MActionChange +2MGlyphChanged +2MInitializeWnd +2MIsCaptionStored +2MLoaded +2MTextChanged 2MGetControlClassDefaultSize +2MCMAppShowBtnGlyphChanged 3MCreate -3PCanvas +3MDestroy +3MClick +3MLoadGlyphFromResourceName +3MLoadGlyphFromLazarusResource +3MLoadGlyphFromStock +3MCanShowGlyph +3PCaption s +3PDefaultCaption rw +3PGlyph rws +3PNumGlyphs rw +3PKind rw +3PLayout rw +3PMargin rw +3PSpacing rw +3PGlyphShowMode rw +#lcl.Buttons.TBitBtn #lcl.Buttons.TCustomBitBtn +4PAction 4PAlign 4PAnchors +4PAutoSize +4PBidiMode 4PBorderSpacing +4PCancel +4PCaption 4PColor 4PConstraints -4PDragCursor -4PDragMode +4PDefault +4PDefaultCaption 4PEnabled 4PFont -4PHint -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PVisible +4PGlyph +4PGlyphShowMode +4PKind +4PLayout +4PMargin +4PModalResult +4PNumGlyphs 4POnChangeBounds 4POnClick -4POnDblClick +4POnContextPopup 4POnDragDrop 4POnDragOver 4POnEndDrag +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27346,73 +28640,131 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnPaint 4POnResize 4POnStartDrag -#lcl.ExtCtrls.TCustomImage #lcl.Controls.TGraphicControl -1VFAntialiasingMode -1VFOnPictureChanged -1VFPicture -1VFCenter -1VFProportional -1VFTransparent -1VFStretch -1VFUseAncestorCanvas -1VFPainting -1MGetCanvas -1MSetAntialiasingMode -1MSetPicture -1MSetCenter -1MSetProportional -1MSetStretch +4POnUTF8KeyPress +4PParentBidiMode +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowHint +4PSpacing +4PTabOrder +4PTabStop +4PVisible +#lcl.Buttons.TSpeedButtonActionLink #lcl.Controls.TControlActionLink +2MAssignClient +2MSetGroupIndex +2MSetChecked +3MIsCheckedLinked +3MIsGroupIndexLinked +#lcl.Buttons.TCustomSpeedButton #lcl.Controls.TGraphicControl +1VFGlyph +1VFGroupIndex +1VFLastDrawDetails +1VFLayout +1VFMargin +1VFSpacing +1VFShortcut +1VFShowAccelChar +1VFShowCaption +1VFAllowAllUp +1VFDown +1VFDownLoaded +1VFDragging +1VFFlat +1VFMouseInControl +1MGetGlyph +1MIsGlyphStored +1MSetShowCaption +1MUpdateExclusive +1MGetTransparent +1MSetAllowAllUp +1MSetGlyph +1MSetLayout +1MSetShowAccelChar 1MSetTransparent +1MCMButtonPressed +1MCMEnabledChanged +1MDoMouseUp +1MWMLButtonDown +1MWMLButtonUp +1MWMLButtonDBLCLK +2VFState 2MWSRegisterClass -2MPictureChanged +2MGetNumGlyphs +2MGlyphChanged +2MDialogChar 2MCalculatePreferredSize -2MGetControlClassDefaultSize +2MMeasureDraw +2MMouseEnter +2MMouseLeave +2MMouseDown +2MMouseMove +2MMouseUp 2MPaint +2MPaintBackground +2MSetDown +2MSetGroupIndex +2MSetFlat +2MSetMargin +2MSetNumGlyphs +2MSetSpacing +2MRealSetText +2MUpdateState +2MGetDrawDetails +2PMouseInControl r +2MActionChange +2MGetActionLinkClass +2MGetControlClassDefaultSize +2MLoaded +2MGetGlyphSize +2MGetTextSize +2MDrawGlyph 3MCreate 3MDestroy -3PCanvas r -3MDestRect -3MInvalidate -3PAntialiasingMode rw -3PAlign -3PAutoSize -3PCenter rw -3PConstraints -3PPicture rw -3PVisible -3POnClick -3POnMouseDown -3POnMouseEnter -3POnMouseLeave -3POnMouseMove -3POnMouseUp -3POnMouseWheel -3POnMouseWheelDown -3POnMouseWheelUp -3PStretch rw +3MFindDownButton +3MClick +3MLoadGlyphFromResourceName +3MLoadGlyphFromLazarusResource +3PAllowAllUp rw +3PColor +3PDown rw +3PFlat rw +3PGlyph rws +3PGroupIndex rw +3PLayout rw +3PMargin rw +3PNumGlyphs rw +3PShowAccelChar rw +3PShowCaption rw +3PSpacing rw 3PTransparent rw -3PProportional rw -3POnPictureChanged rw -#lcl.ExtCtrls.TImage #lcl.ExtCtrls.TCustomImage -4PAntialiasingMode +#lcl.Buttons.TSpeedButton #lcl.Buttons.TCustomSpeedButton +4PAction 4PAlign +4PAllowAllUp 4PAnchors 4PAutoSize +4PBidiMode 4PBorderSpacing -4PCenter 4PConstraints -4PDragCursor -4PDragMode +4PCaption +4PColor +4PDown 4PEnabled -4POnChangeBounds +4PFlat +4PFont +4PGlyph +4PGroupIndex +4PLayout +4PMargin +4PNumGlyphs +4PSpacing +4PTransparent +4PVisible 4POnClick 4POnDblClick -4POnDragDrop -4POnDragOver -4POnEndDrag 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27422,39 +28774,121 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnPaint -4POnPictureChanged 4POnResize -4POnStartDrag +4POnChangeBounds +4PShowCaption +4PShowHint +4PParentBidiMode +4PParentFont 4PParentShowHint -4PPicture 4PPopupMenu -4PProportional +#lcl.ImageListCache.IImageCacheListener #rtl.System.IUnknown +0MCacheSetImageList +0MCacheSetImageIndex +#lcl.ImageListCache.TImageCacheItems #rtl.Classes.TList +1MGetItem +1MGetItemForListener +1MSetItem +2MNotify +3MGetNew +3PItems rw +#lcl.ImageListCache.TImageListCache #rtl.System.TObject +1VFItems +1VFImages +1VFListeners +1VFObsoletedCount +1MCheckRebuildNeed +1MGetImageListFor +1MUnregisterBitmaps +3MCreate +3MDestroy +3MRegisterListener +3MUnregisterListener +3MRegisterBitmap +3MRebuild +#lcl.ButtonPanel.TPanelBitBtn #lcl.Buttons.TCustomBitBtn +3MCreate +4PCaption s +4PDefaultCaption s +4PLeft s +4PTop s +4PWidth s +4PHeight s +4PEnabled +4PFont +4PGlyph +4PName s 4PShowHint -4PStretch -4PTransparent -4PVisible -#lcl.ExtCtrls.TBevel #lcl.Controls.TGraphicControl -1VFStyle -1VFShape -1MSetStyle -1MSetShape -2MWSRegisterClass -2MGetControlClassDefaultSize -2MPaint +4POnClick +#lcl.ButtonPanel.TCustomButtonPanel #lcl.ExtCtrls.TCustomPanel +1VFShowBevel +1VFShowButtons +1VFShowGlyphs +1VFBevel +1VFGlyphs +1VFButtons +1VFButtonsWidth +1VFButtonsHeight +1VFButtonOrder +1VFDefaultButton +1VFSpacing +1MCreateButton +1MDoDefaultButton +1MDoShowButtons +1MDoShowGlyphs +1MSetButtonOrder +1MSetDefaultButton +1MSetShowBevel +1MSetShowButtons +1MSetShowGlyphs +1MSetSpacing +1MUpdateBevel +1MUpdateButtonOrder +1MUpdateSizes +1MUpdateButtonLayout +1MIsLastButton +2MCreateControlBorderSpacing +2MCustomAlignInsertBefore +2MCustomAlignPosition +2MCalculatePreferredSize +2MNotification +2MSetAlign +2MCMAppShowBtnGlyphChanged 3MCreate 3MDestroy -3MAssign +3PAlign +3PAutoSize +3POKButton r +3PHelpButton r +3PCloseButton r +3PCancelButton r +3PButtonOrder rw +3PDefaultButton rw +3PShowButtons rw +3PShowGlyphs rw +3PShowBevel rw +3PSpacing rw +#lcl.ButtonPanel.TButtonPanel #lcl.ButtonPanel.TCustomButtonPanel 4PAlign 4PAnchors +4PAutoSize 4PBorderSpacing -4PConstraints -4PParentShowHint -4PShape rw -4PShowHint -4PStyle rw -4PVisible -4POnChangeBounds -4POnResize +4POKButton +4PHelpButton +4PCloseButton +4PCancelButton +4PButtonOrder +4PTabOrder +4PDefaultButton +4PSpacing +4POnClick +4POnDblClick +4POnDragDrop +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27463,91 +28897,28 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnPaint -#lcl.ExtCtrls.TCustomRadioGroup #lcl.StdCtrls.TCustomGroupBox -1VFAutoFill -1VFButtonList -1VFColumnLayout -1VFColumns -1VFCreatingWnd -1VFHiddenButton -1VFIgnoreClicks -1VFItemIndex -1VFItems -1VFLastClickedItemIndex -1VFOnClick -1VFOnSelectionChanged -1VFReading -1VFUpdatingItems -1MChanged -1MClicked -1MItemEnter -1MItemExit -1MItemKeyDown -1MItemKeyUp -1MItemKeyPress -1MItemUTF8KeyPress -1MItemResize -1MSetAutoFill -1MSetColumnLayout -1MUpdateControlsPerLine -1MUpdateItems -1MUpdateTabStops -2MWSRegisterClass -2MUpdateInternalObjectList -2MUpdateAll -2MInitializeWnd -2MUpdateRadioButtonStates -2MReadState -2MSetItems -2MSetColumns -2MSetItemIndex -2MGetItemIndex -2MCheckItemIndexChanged +4POnResize +4POnUTF8KeyPress +4PShowButtons +4PShowGlyphs +4PShowBevel +4PVisible +#lcl.ExtCtrls.TPage #lcl.Controls.TCustomControl +1VFOnBeforeShow +2MSetParent 3MCreate 3MDestroy -3MCanModify -3MFlipChildren -3MRows -3PAutoFill rw -3PItemIndex rw -3PItems rw -3PColumns rw -3PColumnLayout rw -3POnClick rw -3POnSelectionChanged rw -#lcl.ExtCtrls.TRadioGroup #lcl.ExtCtrls.TCustomRadioGroup -4PAlign -4PAnchors -4PAutoFill -4PAutoSize -4PBidiMode -4PBorderSpacing -4PCaption +4POnBeforeShow rw +4PBiDiMode 4PChildSizing -4PClientHeight -4PClientWidth 4PColor -4PColumnLayout -4PColumns -4PConstraints -4PDragCursor -4PDragMode -4PEnabled -4PFont -4PItemIndex -4PItems -4POnChangeBounds -4POnClick -4POnDblClick -4POnDragDrop -4POnDragOver -4POnEndDrag +4PLeft s +4PTop s +4PWidth s +4PHeight s +4POnContextPopup 4POnEnter 4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27557,95 +28928,60 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize -4POnSelectionChanged -4POnStartDrag -4POnUTF8KeyPress -4PParentBidiMode -4PParentFont -4PParentColor +4PParentBiDiMode 4PParentShowHint 4PPopupMenu -4PShowHint -4PTabOrder -4PTabStop -4PVisible -#lcl.ExtCtrls.TCustomCheckGroup #lcl.StdCtrls.TCustomGroupBox -1VFAutoFill -1VFButtonList -1VFColumnLayout -1VFCreatingWnd -1VFItems -1VFColumns -1VFOnItemClick -1VFUpdatingItems -1MGetChecked -1MGetCheckEnabled -1MClicked -1MDoClick -1MItemKeyDown -1MItemKeyUp -1MItemKeyPress -1MItemUTF8KeyPress -1MRaiseIndexOutOfBounds -1MSetAutoFill -1MSetChecked -1MSetCheckEnabled -1MSetColumnLayout -1MUpdateItems -1MUpdateControlsPerLine -2MWSRegisterClass -2MUpdateInternalObjectList -2MUpdateAll -2MSetItems -2MSetColumns -2MDefineProperties -2MReadData -2MWriteData -2MLoaded -2MDoOnResize +4PTabOrder s +4PVisible s +#lcl.ExtCtrls.TUNBPages #rtl.Classes.TStrings +1VFPageList +1VFNotebook +1MPageListChange +2MGet +2MGetCount +2MGetObject +2MPut +3MCreate +3MClear +3MDelete +3MInsert +#lcl.ExtCtrls.TNotebook #lcl.Controls.TCustomControl +1VFPages +1VFPageIndex +1VFPageList +1MGetActivePage +1MGetActivePageComponent +1MGetPage +1MGetPageCount +1MGetPageIndex +1MInsertPage +1MSetPageIndex 3MCreate 3MDestroy -3MFlipChildren -3MRows -3PAutoFill rw -3PItems rw -3PChecked rw -3PCheckEnabled rw -3PColumns rw -3PColumnLayout rw -3POnItemClick rw -#lcl.ExtCtrls.TCheckGroup #lcl.ExtCtrls.TCustomCheckGroup +3MShowControl +3PActivePage r +3PActivePageComponent r +3PPage r +3PPageCount r +4PPageIndex rw +4PPages r 4PAlign -4PAnchors -4PAutoFill 4PAutoSize +4PAnchors 4PBiDiMode 4PBorderSpacing -4PCaption -4PChildSizing -4PClientHeight -4PClientWidth 4PColor -4PColumnLayout -4PColumns 4PConstraints 4PDragCursor 4PDragMode 4PEnabled -4PFont -4PItems 4POnChangeBounds -4POnClick -4POnDblClick +4POnContextPopup 4POnDragDrop 4POnDragOver 4POnEndDrag 4POnEnter 4POnExit -4POnItemClick -4POnKeyDown -4POnKeyPress -4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27656,38 +28992,72 @@ 4POnMouseWheelUp 4POnResize 4POnStartDrag -4POnUTF8KeyPress 4PParentBiDiMode -4PParentFont -4PParentColor -4PParentShowHint 4PPopupMenu -4PShowHint 4PTabOrder 4PTabStop -4PVisible -#lcl.ExtCtrls.TBoundLabel #lcl.StdCtrls.TCustomLabel +#lcl.ExtCtrls.TTimer #lcl.CustomTimer.TCustomTimer +4PEnabled +4PInterval +4POnTimer +4POnStartTimer +4POnStopTimer +#lcl.ExtCtrls.TCustomIdleTimer #lcl.CustomTimer.TCustomTimer +1VFAutoEnabled +1VFAutoEndEvent +1VFAutoStartEvent +1VFFireOnIdle +1VFHandlersConnected +1MUpdateHandlers +2MSetAutoEnabled +2MDoOnIdle +2MDoOnIdleEnd +2MDoOnUserInput +2MLoaded 3MCreate -3PFocusControl -4PCaption -4PColor +3MDestroy +3PAutoEnabled rw +3PAutoStartEvent rw +3PAutoEndEvent rw +3PFireOnIdle rw +#lcl.ExtCtrls.TIdleTimer #lcl.ExtCtrls.TCustomIdleTimer +4PAutoEnabled +4PAutoStartEvent +4PAutoEndEvent +4PEnabled +4PInterval +4POnTimer +4POnStartTimer +4POnStopTimer +#lcl.ExtCtrls.TShape #lcl.Controls.TGraphicControl +1VFPen +1VFBrush +1VFShape +1MGetStarAngle +1MSetBrush +1MSetPen +1MSetShape +2MWSRegisterClass +2MGetControlClassDefaultSize +3MCreate +3MDestroy +3MPaint +3MStyleChanged +4PAlign +4PAnchors +4PBorderSpacing +4PBrush rw +4PConstraints 4PDragCursor +4PDragKind 4PDragMode -4PHeight -4PLeft -4PParentColor -4PParentFont +4PEnabled 4PParentShowHint -4PFont -4PPopupMenu -4PShowAccelChar -4PShowHint -4PLayout -4PWordWrap -4POnClick -4POnDblClick +4PPen rw +4POnChangeBounds 4POnDragDrop 4POnDragOver +4POnEndDock 4POnEndDrag 4POnMouseDown 4POnMouseEnter @@ -27697,158 +29067,119 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPaint +4POnResize +4POnStartDock 4POnStartDrag -#lcl.ExtCtrls.TCustomLabeledEdit #lcl.StdCtrls.TCustomEdit -1VFEditLabel -1VFLabelPosition -1VFLabelSpacing -1MSetLabelPosition -1MSetLabelSpacing +4PShape rw +4PShowHint +4PVisible +#lcl.ExtCtrls.TCustomSplitter #lcl.Controls.TCustomControl +1VFAutoSnap +1VFBeveled +1VFMinSize +1VFMouseInControl +1VFOnCanOffset +1VFOnCanResize +1VFOnMoved +1VFResizeAnchor +1VFResizeStyle +1VFSplitDragging +1VFSplitterStartMouseXY +1VFSplitterStartLeftTop +1VFSplitterWindow +1MGetResizeControl +1MSetBeveled +1MSetMinSize 2MWSRegisterClass -2MSetParent -2MSetName -2MLoaded -2MDoPositionLabel -2MNotification -2MCMBiDiModeChanged -2MCMVisibleChanged -2MCMEnabledChanged -2MCreateInternalLabel +2MAdaptAnchors +2MCheckNewSize +2MCheckOffset +2MFindAlignControl +2MFindAlignOtherControl +2MMouseDown +2MMouseEnter +2MMouseLeave +2MMouseMove +2MMouseUp +2MPaint +2MSetAlign +2MSetAnchors +2MSetResizeAnchor +2MSetResizeControl +2MStartSplitterMove +2MStopSplitterMove 3MCreate -3PEditLabel r -3PLabelPosition rw -3PLabelSpacing rw -#lcl.ExtCtrls.TLabeledEdit #lcl.ExtCtrls.TCustomLabeledEdit -4PAlignment +3MAnchorSplitter +3PResizeControl rw +3MGetOtherResizeControl +3MMoveSplitter +3MSetSplitterPosition +3MGetSplitterPosition +3PAlign +3PAutoSnap rw +3PBeveled rw +3PCursor +3PMinSize rw +3POnCanOffset rw +3POnCanResize rw +3POnMoved rw +3PResizeAnchor rw +3PResizeStyle rw +#lcl.ExtCtrls.TSplitter #lcl.ExtCtrls.TCustomSplitter +4PAlign 4PAnchors -4PAutoSelect -4PAutoSize -4PBidiMode -4PBorderSpacing -4PBorderStyle -4PCharCase +4PAutoSnap +4PBeveled 4PColor 4PConstraints -4PDragCursor -4PDragMode -4PEchoMode -4PEditLabel -4PEnabled -4PFont -4PLabelPosition -4PLabelSpacing -4PMaxLength -4PParentBidiMode +4PCursor +4PHeight +4PMinSize +4POnCanOffset +4POnCanResize +4POnChangeBounds +4POnMoved +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnPaint 4PParentColor -4PParentFont 4PParentShowHint -4PPasswordChar 4PPopupMenu -4PReadOnly +4PResizeAnchor +4PResizeStyle 4PShowHint -4PTabOrder -4PTabStop -4PText 4PVisible -4POnChange -4POnClick -4POnDblClick -4POnDragDrop -4POnDragOver -4POnEditingDone -4POnEndDrag -4POnEnter -4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnStartDrag -4POnUTF8KeyPress -#lcl.ExtCtrls.TCustomPanel #lcl.Controls.TCustomControl -1VFBevelInner -1VFBevelOuter -1VFBevelWidth -1VFAlignment -1VFFullRepaint -1MSetAlignment -1MSetBevelInner -1MSetBevelOuter -1MSetBevelWidth +4PWidth +#lcl.ExtCtrls.TPaintBox #lcl.Controls.TGraphicControl 2MWSRegisterClass -2MAdjustClientRect -2MGetControlClassDefaultSize -2MCMParentColorChanged -2MGetDefaultDockCaption -2MLoaded -2MRealSetText 2MPaint -2MUpdateParentColorChange +2MGetControlClassDefaultSize 3MCreate -3PAlign -3PAlignment rw -3PBevelInner rw -3PBevelOuter rw -3PBevelWidth rw -3PColor -3PFullRepaint rw -3PParentColor -3PTabStop -#lcl.ExtCtrls.TPanel #lcl.ExtCtrls.TCustomPanel +3PCanvas 4PAlign -4PAlignment 4PAnchors -4PAutoSize 4PBorderSpacing -4PBevelInner -4PBevelOuter -4PBevelWidth -4PBidiMode -4PBorderWidth -4PBorderStyle -4PCaption -4PChildSizing -4PClientHeight -4PClientWidth 4PColor 4PConstraints -4PDockSite 4PDragCursor -4PDragKind 4PDragMode 4PEnabled 4PFont -4PFullRepaint -4PParentBidiMode +4PHint 4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu 4PShowHint -4PTabOrder -4PTabStop -4PUseDockManager 4PVisible +4POnChangeBounds 4POnClick -4POnContextPopup -4POnDockDrop -4POnDockOver 4POnDblClick 4POnDragDrop 4POnDragOver -4POnEndDock 4POnEndDrag -4POnEnter -4POnExit -4POnGetSiteInfo -4POnGetDockCaption 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -27857,288 +29188,73 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPaint 4POnResize -4POnStartDock 4POnStartDrag -4POnUnDock -#lcl.ExtCtrls.TCustomTrayIcon #lcl.LCLClasses.TLCLComponent -1VFDelayedShowing -1VFAnimate -1VFAnimateTimer -1VFCurAnimationStep -1VFBalloonFlags -1VFBalloonHint -1VFBalloonTimeout -1VFBalloonTitle -1VFPopUpMenu -1VFIcon -1VFIcons -1VFHint -1VFVisible -1VFShowIcon -1VFNotifier -1VFTimer -1VFOnPaint -1VFOnClick -1VFOnDblClick -1VFOnMouseDown -1VFOnMouseUp -1VFOnMouseMove -1MGetAnimateInterval -1MGetCanvas -1MInternalShow -1MSetAnimate -1MSetAnimateInterval -1MSetHint -1MSetIcon -1MSetIcons -1MSetPopUpMenu -1MSetVisible -1MHandleNotifierClose -1MHandleNotifierTimeout -1MHandleOnAnimateTimer -1MIconChanged -2MWSRegisterClass -2MNotification -2MLoaded -3VHandle -3MCreate -3MDestroy -3MHide -3MShow -3MInternalUpdate -3MShowBalloonHint -3MGetPosition -3PAnimate rw -3PAnimateInterval rw -3PBalloonFlags rw -3PBalloonHint rw -3PBalloonTimeout rw -3PBalloonTitle rw -3PCanvas r -3PPopUpMenu rw -3PIcon rw -3PIcons rw -3PHint rw -3PShowIcon rw -3PVisible rw -3POnClick rw -3POnDblClick rw -3POnMouseDown rw -3POnMouseUp rw -3POnMouseMove rw -3POnPaint rw -#lcl.ExtCtrls.TTrayIcon #lcl.ExtCtrls.TCustomTrayIcon -4PBalloonFlags -4PBalloonHint -4PBalloonTimeout -4PBalloonTitle -4PPopUpMenu -4PIcon -4PHint -4PVisible -4POnClick -4POnDblClick -4POnMouseDown -4POnMouseMove -4POnMouseUp -4POnPaint -#lcl.ExtCtrls.TCtrlBand #rtl.System.TObject -1VFControl -1VFControlHeight -1VFControlLeft -1VFControlTop -1VFControlVisible -1VFControlWidth -1VFHeight -1VFInitLeft -1VFInitTop -1VFLeft -1VFTop -1VFVisible -1VFWidth -1MGetBandRect -1MGetBottom -1MGetRight -1MSetBandRect -1MSetRight -3PBandRect rw -3PBottom r -3PControl rw -3PControlHeight rw -3PControlLeft rw -3PControlTop rw -3PControlWidth rw -3PControlVisible rw -3PHeight rw -3PInitLeft rw -3PInitTop rw -3PLeft rw -3PRight rw -3PTop rw -3PVisible rw -3PWidth rw -#lcl.PopupNotifier.TNotifierXButton #lcl.Controls.TCustomControl -1VFState -1MHandleMouseDown -1MHandleMouseUp -3MCreate -3MDestroy -3MPaint -#lcl.PopupNotifier.TNotifierForm #lcl.Forms.THintWindow -1VlblTitle -1VlblText -1VimgIcon -1VbtnX -1MHideForm -1MHandleResize -3MCreate -3MDestroy -3MPaint -#lcl.PopupNotifier.TPopupNotifier #rtl.Classes.TComponent -1MGetColor -1MSetColor -1MGetIcon -1MSetIcon -1MGetText -1MSetText -1MGetTitle -1MSetTitle -1MGetVisible -1MSetVisible -1MSetOnClose -1MGetOnClose -3VvNotifierForm -3MCreate -3MDestroy -3MHide -3MShow -3MShowAtPos -4PColor rw -4PIcon rw -4PText rw -4PTitle rw -4PVisible rw -4POnClose rw -#lcl.ComCtrls.TStatusPanel #rtl.Classes.TCollectionItem -1VFBidiMode -1VFText -1VFWidth -1VFAlignment -1VFBevel -1VFParentBiDiMode -1VFStyle -1MSetAlignment -1MSetBevel -1MSetStyle -1MSetText -1MSetWidth -2VFIntfFlag -2MGetDisplayName -2MPanelChanged -2MSetIndex -3MCreate -3MDestroy -3MAssign -3MStatusBar -4PAlignment rw -4PBevel rw -4PBidiMode rw -4PParentBiDiMode rw -4PStyle rw -4PText rw -4PWidth rw -#lcl.ComCtrls.TStatusPanels #rtl.Classes.TCollection -1VFStatusBar -1MGetItem -1MSetItem -2MGetOwner -2MUpdate -3MCreate -3MAdd -3PItems rw -3PStatusBar r -#lcl.ComCtrls.TStatusBar #lcl.Controls.TWinControl -1VFAutoHint -1VFCanvas -1VFHandlePanelCount -1VFHandleObjectNeedsUpdate -1VFHandleUpdatePanelIndex -1VFOnCreatePanelClass -1VFSizeGrip -1VFUpdateLock -1VFPanels -1VFSimpleText -1VFSimplePanel -1VFOnDrawPanel -1VFOnHint -1VFUseSystemFont -1MSetPanels -1MSetSimpleText -1MSetSimplePanel -1MSetSizeGrip +#lcl.ExtCtrls.TCustomImage #lcl.Controls.TGraphicControl +1VFAntialiasingMode +1VFOnPictureChanged +1VFPicture +1VFCenter +1VFProportional +1VFTransparent +1VFStretch +1VFUseAncestorCanvas +1VFPainting +1MGetCanvas +1MSetAntialiasingMode +1MSetPicture +1MSetCenter +1MSetProportional +1MSetStretch +1MSetTransparent 2MWSRegisterClass -2MBoundsChanged -2MCreateWnd -2MDestroyWnd -2MLoaded -2MUpdateHandleObject +2MPictureChanged 2MCalculatePreferredSize -2MSetBiDiMode -2MCreatePanel -2MCreatePanels -2MGetPanelClass -2MDoSetApplicationHint -2MDoHint -2MDrawPanel -2MLMDrawItem +2MGetControlClassDefaultSize +2MPaint 3MCreate 3MDestroy -3MInvalidatePanel -3MBeginUpdate -3MEndUpdate -3MExecuteAction -3MGetPanelIndexAt -3MSizeGripEnabled -3MUpdatingStatusBar 3PCanvas r -4PAction +3MDestRect +3MInvalidate +3PAntialiasingMode rw +3PAlign +3PAutoSize +3PCenter rw +3PConstraints +3PPicture rw +3PVisible +3POnClick +3POnMouseDown +3POnMouseEnter +3POnMouseLeave +3POnMouseMove +3POnMouseUp +3POnMouseWheel +3POnMouseWheelDown +3POnMouseWheelUp +3PStretch rw +3PTransparent rw +3PProportional rw +3POnPictureChanged rw +#lcl.ExtCtrls.TImage #lcl.ExtCtrls.TCustomImage +4PAntialiasingMode 4PAlign 4PAnchors -4PAutoHint rw 4PAutoSize -4PBiDiMode 4PBorderSpacing -4PBorderWidth -4PColor +4PCenter 4PConstraints 4PDragCursor -4PDragKind 4PDragMode 4PEnabled -4PFont -4PPanels rw -4PParentBiDiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PSimpleText rw -4PSimplePanel rw -4PSizeGrip rw -4PShowHint -4PUseSystemFont rw -4PVisible +4POnChangeBounds 4POnClick -4POnContextPopup -4POnCreatePanelClass rw 4POnDblClick 4POnDragDrop 4POnDragOver -4POnDrawPanel rw -4POnEndDock 4POnEndDrag -4POnHint rw 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -28147,223 +29263,274 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPaint +4POnPictureChanged 4POnResize -4POnStartDock 4POnStartDrag -#lcl.ComCtrls.TCustomPage #lcl.Controls.TWinControl -1VFTabVisible -1VFFlags -1VFImageIndex -1VFOnHide -1VFOnShow -1MSetImageIndex -1MSetTabVisible +4PParentShowHint +4PPicture +4PPopupMenu +4PProportional +4PShowHint +4PStretch +4PTransparent +4PVisible +#lcl.ExtCtrls.TBevel #lcl.Controls.TGraphicControl +1VFStyle +1VFShape +1MSetStyle +1MSetShape 2MWSRegisterClass -2MWMPaint -2MSetParent -2PFlags rw -2MCMHitTest -2MCMVisibleChanged -2MGetPageIndex -2MSetPageIndex -2MGetTabVisible -2MDialogChar -2MDoHide -2MDoShow -2MDestroyHandle -2MRealSetText -3MCreate -3MCanTab -3MIsControlVisible -3MHandleObjectShouldBeVisible -3MVisibleIndex -3PPageIndex rw -3PTabVisible rw -3PImageIndex rw -3PLeft s -3PTop s -3PWidth s -3PHeight s -3PTabOrder s -3PVisible s -3POnHide rw -3POnShow rw -#lcl.ComCtrls.TNBBasePages #rtl.Classes.TStrings -2MIndexOfPage -2MInsertPage -2MDeletePage -2MGetPage -3MCreate -#lcl.ComCtrls.TNBPages #lcl.ComCtrls.TNBBasePages -1VFPageList -1VFNotebook -1MPageListChange -2MGet -2MGetCount -2MGetObject -2MPut -2MIndexOfPage -2MInsertPage -2MDeletePage -2MGetPage -2PPageList r -2PNotebook r +2MGetControlClassDefaultSize +2MPaint 3MCreate 3MDestroy -3MClear -3MDelete -3MInsert -3MMove -#lcl.ComCtrls.TNBNoPages #lcl.ComCtrls.TNBBasePages -2MGet -2MGetCount -2MIndexOfPage -2MGetPage -#lcl.ComCtrls.TCustomTabControl #lcl.Controls.TWinControl -1VFAccess -1VFAddingPages -1VFHotTrack -1VFImages -1VFImageListChangeLink -1VFMultiSelect -1VFOnChanging -1VFOnCloseTabClicked -1VFOnDrawTab -1VFOnGetImageIndex -1VFOnPageChanged -1VFOptions -1VFOwnerDraw -1VFPageIndex -1VFPageIndexOnLastChange -1VFRaggedRight -1VFScrollOpposite -1VFShowTabs -1VFStyle -1VFTabHeight -1VFTabPosition -1VFTabWidth -1MDoSendPageIndex -1MDoSendShowTabs -1MDoSendTabPosition -1MDoImageListChange -1MGetActivePage -1MGetActivePageComponent -1MGetDisplayRect -1MGetMultiLine -1MFindVisiblePage -1MIsStoredActivePage -1MMoveTab -1MSetMultiLine -1MSetStyle -1MWSMovePage -1MPageRemoved -1MSetActivePage -1MSetActivePageComponent -1MSetImages -1MSetOptions -1MSetPageIndex -1MSetPages -1MSetShowTabs -1MSetTabPosition -1MShowCurrentPage -1MUpdateAllDesignerFlags -1MUpdateDesignerFlags -2VPageClass -2MGetPageClass -2MGetListClass -2MAddRemovePageHandle -2MCNNotify +3MAssign +4PAlign +4PAnchors +4PBorderSpacing +4PConstraints +4PParentShowHint +4PShape rw +4PShowHint +4PStyle rw +4PVisible +4POnChangeBounds +4POnResize +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnPaint +#lcl.ExtCtrls.TCustomRadioGroup #lcl.StdCtrls.TCustomGroupBox +1VFAutoFill +1VFButtonList +1VFColumnLayout +1VFColumns +1VFCreatingWnd +1VFHiddenButton +1VFIgnoreClicks +1VFItemIndex +1VFItems +1VFLastClickedItemIndex +1VFOnClick +1VFOnSelectionChanged +1VFReading +1VFUpdatingItems +1MChanged +1MClicked +1MItemEnter +1MItemExit +1MItemKeyDown +1MItemKeyUp +1MItemKeyPress +1MItemUTF8KeyPress +1MItemResize +1MSetAutoFill +1MSetColumnLayout +1MUpdateControlsPerLine +1MUpdateItems +1MUpdateTabStops 2MWSRegisterClass -2MCreateWnd -2MLoaded -2MDoChange +2MUpdateInternalObjectList +2MUpdateAll 2MInitializeWnd -2MChange -2MKeyDown +2MUpdateRadioButtonStates 2MReadState -2MDialogChar -2MInternalSetPageIndex -2MShowControl -2MUpdateTabProperties -2MGetControlClassDefaultSize -2MNotification -2PActivePageComponent rw -2PActivePage rws -2VFUnPaged -2MGetPage -2MGetPageCount -2MInsertPage -2MRemovePage -2MCanChange -2PDisplayRect r -2PHotTrack rw -2PMultiSelect rw -2POwnerDraw rw -2PRaggedRight rw -2PScrollOpposite rw -2PStyle rw -2PTabs rw -2PTabHeight rw -2PTabIndex rw -2PTabWidth rw -2POnChange rw -2POnDrawTab rw +2MSetItems +2MSetColumns +2MSetItemIndex +2MGetItemIndex +2MCheckItemIndexChanged 3MCreate 3MDestroy -3MTabIndexAtClientPos -3MTabRect -3MGetImageIndex -3MIndexOf -3MCustomPage -3MCanChangePageIndex -3MGetMinimumTabWidth -3MGetMinimumTabHeight -3MGetCapabilities -3MTabToPageIndex -3MPageToTabIndex -3MIndexOfTabAt -3MDoCloseTabClicked -3PImages rw -3PMultiLine rw -3POnChanging rw -3POnCloseTabClicked rw -3POnGetImageIndex rw -3POptions rw -3PPage r -3PPageCount r -3PPageIndex rw -3PPages rw -3PShowTabs rw -3PTabPosition rw -3PIsUnpaged r +3MCanModify +3MFlipChildren +3MRows +3PAutoFill rw +3PItemIndex rw +3PItems rw +3PColumns rw +3PColumnLayout rw +3POnClick rw +3POnSelectionChanged rw +#lcl.ExtCtrls.TRadioGroup #lcl.ExtCtrls.TCustomRadioGroup +4PAlign +4PAnchors +4PAutoFill +4PAutoSize +4PBidiMode +4PBorderSpacing +4PCaption +4PChildSizing +4PClientHeight +4PClientWidth +4PColor +4PColumnLayout +4PColumns +4PConstraints +4PDragCursor +4PDragMode +4PEnabled +4PFont +4PItemIndex +4PItems +4POnChangeBounds +4POnClick +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnSelectionChanged +4POnStartDrag +4POnUTF8KeyPress +4PParentBidiMode +4PParentFont +4PParentColor +4PParentShowHint +4PPopupMenu +4PShowHint +4PTabOrder 4PTabStop -#lcl.ComCtrls.TTabSheet #lcl.ComCtrls.TCustomPage -1MGetPageControl -1MGetTabIndex -1MSetPageControl +4PVisible +#lcl.ExtCtrls.TCustomCheckGroup #lcl.StdCtrls.TCustomGroupBox +1VFAutoFill +1VFButtonList +1VFColumnLayout +1VFCreatingWnd +1VFItems +1VFColumns +1VFOnItemClick +1VFUpdatingItems +1MGetChecked +1MGetCheckEnabled +1MClicked +1MDoClick +1MItemKeyDown +1MItemKeyUp +1MItemKeyPress +1MItemUTF8KeyPress +1MRaiseIndexOutOfBounds +1MSetAutoFill +1MSetChecked +1MSetCheckEnabled +1MSetColumnLayout +1MUpdateItems +1MUpdateControlsPerLine 2MWSRegisterClass +2MUpdateInternalObjectList +2MUpdateAll +2MSetItems +2MSetColumns +2MDefineProperties +2MReadData +2MWriteData +2MLoaded +2MDoOnResize 3MCreate 3MDestroy -3PPageControl rw -3PTabIndex r -4PBorderWidth +3MFlipChildren +3MRows +3PAutoFill rw +3PItems rw +3PChecked rw +3PCheckEnabled rw +3PColumns rw +3PColumnLayout rw +3POnItemClick rw +#lcl.ExtCtrls.TCheckGroup #lcl.ExtCtrls.TCustomCheckGroup +4PAlign +4PAnchors +4PAutoFill +4PAutoSize 4PBiDiMode +4PBorderSpacing 4PCaption 4PChildSizing 4PClientHeight 4PClientWidth +4PColor +4PColumnLayout +4PColumns +4PConstraints +4PDragCursor +4PDragMode 4PEnabled 4PFont -4PHeight s -4PImageIndex -4PLeft s -4POnContextPopup +4PItems +4POnChangeBounds +4POnClick +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnEnter +4POnExit +4POnItemClick +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnStartDrag +4POnUTF8KeyPress +4PParentBiDiMode +4PParentFont +4PParentColor +4PParentShowHint +4PPopupMenu +4PShowHint +4PTabOrder +4PTabStop +4PVisible +#lcl.ExtCtrls.TBoundLabel #lcl.StdCtrls.TCustomLabel +3MCreate +3PFocusControl +4PCaption +4PColor +4PDragCursor +4PDragMode +4PHeight +4PLeft +4PParentColor +4PParentFont +4PParentShowHint +4PFont +4PPopupMenu +4PShowAccelChar +4PShowHint +4PLayout +4PWordWrap +4POnClick +4POnDblClick 4POnDragDrop 4POnDragOver 4POnEndDrag -4POnEnter -4POnExit -4POnHide 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -28372,78 +29539,74 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnResize -4POnShow 4POnStartDrag -4PPageIndex s -4PParentBiDiMode -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PTabVisible -4PTop s -4PWidth s -#lcl.ComCtrls.TPageControl #lcl.ComCtrls.TCustomTabControl -1VFPageToUndock -1MGetActivePageIndex -1MGetActiveTabSheet -1MGetTabSheet -1MSetActivePageIndex -1MSetActiveTabSheet -1MFindPageWithDockClient +#lcl.ExtCtrls.TCustomLabeledEdit #lcl.StdCtrls.TCustomEdit +1VFEditLabel +1VFLabelPosition +1VFLabelSpacing +1MSetLabelPosition +1MSetLabelSpacing 2MWSRegisterClass -2MGetPageClass -2MDoAddDockClient -2MDockOver -2MDoRemoveDockClient -2MDoUndockClientMsg -2MChildClassAllowed -3MFindNextPage -3MSelectNextPage -3MAddTabSheet -3PActivePageIndex rw -3PPages r -4PActivePage rw -4POnGetDockCaption -4PAlign +2MSetParent +2MSetName +2MLoaded +2MDoPositionLabel +2MNotification +2MCMBiDiModeChanged +2MCMVisibleChanged +2MCMEnabledChanged +2MCreateInternalLabel +3MCreate +3PEditLabel r +3PLabelPosition rw +3PLabelSpacing rw +#lcl.ExtCtrls.TLabeledEdit #lcl.ExtCtrls.TCustomLabeledEdit +4PAlignment 4PAnchors +4PAutoSelect +4PAutoSize +4PBidiMode 4PBorderSpacing -4PBiDiMode +4PBorderStyle +4PCharCase +4PColor 4PConstraints -4PDockSite 4PDragCursor -4PDragKind 4PDragMode +4PEchoMode +4PEditLabel 4PEnabled 4PFont -4PImages -4PMultiLine -4PParentBiDiMode +4PLabelPosition +4PLabelSpacing +4PMaxLength +4PParentBidiMode +4PParentColor 4PParentFont 4PParentShowHint +4PPasswordChar 4PPopupMenu +4PReadOnly 4PShowHint -4PShowTabs -4PTabIndex 4PTabOrder -4PTabPosition 4PTabStop +4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle 4PVisible 4POnChange -4POnChanging -4POnCloseTabClicked -4POnContextPopup -4POnDockDrop -4POnDockOver +4POnClick +4POnDblClick 4POnDragDrop 4POnDragOver -4POnEndDock +4POnEditingDone 4POnEndDrag 4POnEnter 4POnExit -4POnGetImageIndex -4POnGetSiteInfo +4POnKeyDown +4POnKeyPress +4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -28452,180 +29615,54 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnResize -4POnStartDock 4POnStartDrag -4POnUnDock -4POptions -#lcl.ComCtrls.TTabControlStrings #rtl.Classes.TStrings -1VFHotTrack -1VFImages -1VFMultiLine -1VFMultiSelect -1VFOwnerDraw -1VFRaggedRight -1VFScrollOpposite -1VFTabControl -1VFTabHeight -1VFTabWidth -1VFUpdateCount -2MGetTabIndex -2MSetHotTrack -2MSetImages -2MSetMultiLine -2MSetMultiSelect -2MSetOwnerDraw -2MSetRaggedRight -2MSetScrollOpposite -2MSetTabHeight -2MSetTabIndex -2MSetTabWidth -3MCreate -3MGetHitTestInfoAt -3MGetSize -3MIndexOfTabAt -3MRowCount -3MTabRect -3MImageListChange -3MScrollTabs -3MTabControlBoundsChange -3MUpdateTabImages -3MBeginUpdate -3MEndUpdate -3MIsUpdating -3PTabControl r -3PTabIndex rw -3PHotTrack rw -3PImages rw -3PMultiLine rw -3PMultiSelect rw -3POwnerDraw rw -3PRaggedRight rw -3PScrollOpposite rw -3PTabHeight rw -3PTabWidth rw -#lcl.ComCtrls.TNoteBookStringsTabControl #lcl.ComCtrls.TPageControl -2VFHandelCreated -2MCreateHandle +4POnUTF8KeyPress +#lcl.ExtCtrls.TCustomPanel #lcl.Controls.TCustomControl +1VFBevelInner +1VFBevelOuter +1VFBevelWidth +1VFAlignment +1VFFullRepaint +1MSetAlignment +1MSetBevelInner +1MSetBevelOuter +1MSetBevelWidth 2MWSRegisterClass -#lcl.ComCtrls.TTabControlNoteBookStrings #lcl.ComCtrls.TTabControlStrings -1VFNoteBook -1VFInHandleCreated -1MGetStyle -1MSetStyle -2MGetInternalTabControllClass -2MGet -2MGetCount -2MGetObject -2MGetTabIndex -2MGetTabPosition -2MNBChanging -2MNBGetImageIndex -2MNBPageChanged -2MNBHandleCreated -2MPut -2MPutObject -2MSetImages -2MSetMultiLine -2MSetTabIndex -2MSetUpdateState -2MSetTabHeight -2MSetTabPosition -2MSetTabWidth -3MCreate -3MDestroy -3MClear -3MDelete -3MInsert -3MGetSize -3MTabControlBoundsChange -3MIndexOfTabAt -3PTabPosition rw -3PStyle rw -3PNoteBook r -#lcl.ComCtrls.TTabControl #lcl.ComCtrls.TCustomTabControl -1VFImageChangeLink -1VFOnChange -1VFOnChangeNeeded -1VFTabControlCreating -1VFTabs -1VFCanvas -1MAdjustDisplayRect -1MGetDisplayRect -1MGetHotTrack -1MGetMultiLine -1MGetMultiSelect -1MGetOwnerDraw -1MGetRaggedRight -1MGetScrollOpposite -1MGetTabHeight -1MGetTabIndex -1MGetTabRectWithBorder -1MGetTabWidth -1MSetHotTrack -1MSetImages -1MSetMultiLine -1MSetMultiSelect -1MSetOwnerDraw -1MSetRaggedRight -1MSetScrollOpposite -1MSetStyle -1MSetTabHeight -1MSetTabPosition -1MSetTabs -1MSetTabWidth -2MAddRemovePageHandle -2MCanChange -2MCanShowTab -2MChange -2MCreateWnd -2MDestroyHandle -2MNotification -2MSetTabIndex -2MUpdateTabImages -2MImageListChange -2MDoSetBounds +2MAdjustClientRect 2MGetControlClassDefaultSize -2MPaintWindow +2MCMParentColorChanged +2MGetDefaultDockCaption +2MLoaded +2MRealSetText 2MPaint -2MAdjustDisplayRectWithBorder -2MAdjustClientRect -2MCreateTabNoteBookStrings +2MUpdateParentColorChange 3MCreate -3MDestroy -3MIndexOfTabAt -3MGetHitTestInfoAt -3MGetImageIndex -3MIndexOfTabWithCaption -3MTabRect -3MRowCount -3MScrollTabs -3MBeginUpdate -3MEndUpdate -3MIsUpdating -3PDisplayRect r -4PHotTrack rw -4PImages -4PMultiLine rw -4PMultiSelect rw -4POnChange rw -4POnChanging -4POnDrawTab -4POnGetImageIndex -4POwnerDraw rw -4PRaggedRight rw -4PScrollOpposite rw -4PStyle -4PTabHeight rw -4PTabPosition -4PTabWidth rw -4PTabIndex rw -4PTabs rw -4PTabStop +3PAlign +3PAlignment rw +3PBevelInner rw +3PBevelOuter rw +3PBevelWidth rw +3PColor +3PFullRepaint rw +3PParentColor +3PTabStop +#lcl.ExtCtrls.TPanel #lcl.ExtCtrls.TCustomPanel 4PAlign +4PAlignment 4PAnchors -4PBiDiMode +4PAutoSize 4PBorderSpacing +4PBevelInner +4PBevelOuter +4PBevelWidth +4PBidiMode +4PBorderWidth +4PBorderStyle +4PCaption +4PChildSizing +4PClientHeight +4PClientWidth +4PColor 4PConstraints 4PDockSite 4PDragCursor @@ -28633,541 +29670,411 @@ 4PDragMode 4PEnabled 4PFont -4POnChangeBounds -4POnContextPopup -4POnDockDrop -4POnDockOver -4POnDragDrop -4POnDragOver -4POnEndDock -4POnEndDrag -4POnEnter -4POnExit -4POnGetSiteInfo -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnResize -4POnStartDock -4POnStartDrag -4POnUnDock -4PParentBiDiMode -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PTabOrder -4PVisible -#lcl.ComCtrls.TIconOptions #rtl.Classes.TPersistent -1VFListView -1VFArrangement -1MGetAutoArrange -1MGetWrapText -1MSetArrangement -1MSetAutoArrange -1MSetWrapText -2MAssignTo -2MGetOwner -3MCreate -4PArrangement rw -4PAutoArrange rw -4PWrapText rw -#lcl.ComCtrls.TListItem #rtl.Classes.TPersistent -1VFOwner -1VFFlags -1VFSubItems -1VFCaption -1VFData -1VFImageIndex -1VFStateIndex -1VFStates -1VFChecked -1MGetCaption -1MGetChecked -1MGetLeft -1MGetListView -1MGetPosition -1MGetState -1MGetImageIndex -1MGetIndex -1MGetStateIndex -1MGetSubItemImages -1MGetSubItems -1MGetTop -1MWSUpdateAllowed -1MWSUpdateText -1MWSUpdateImages -1MWSUpdateChecked -1MWSSetState -1MWSUpdateState -1MSetChecked -1MSetState -1MSetData -1MSetImageIndex -1MSetLeft -1MSetCaption -1MSetPosition -1MSetStateIndex -1MSetSubItemImages -1MSetSubItems -1MSetTop -2MIsEqual -2MIsOwnerData -2MGetCheckedInternal -2MGetOwner -3MAssign -3MCreate -3MDestroy -3MDelete -3MMakeVisible -3MDisplayRect -3MDisplayRectSubItem -3MEditCaption -3PCaption rw -3PChecked rw -3PCut rw -3PData rw -3PDropTarget rw -3PFocused rw -3PIndex r -3PImageIndex rw -3PLeft rw -3PListView r -3POwner r -3PPosition rw -3PSelected rw -3PStateIndex rw -3PSubItems rw -3PSubItemImages rw -3PTop rw -#lcl.ComCtrls.TOwnerDataListItem #lcl.ComCtrls.TListItem -1VFDataIndex -1VFCached -1MGetCaption -1MGetIndex -1MGetImageIndex -1MSetCaption -1MSetImageIndex -1MGetSubItems -1MDoCacheItem -2MIsOwnerData -3MSetDataIndex -3MSetOwner -#lcl.ComCtrls.TListItemsEnumerator #rtl.System.TObject -1VFItems -1VFPosition -1MGetCurrent -3MCreate -3MMoveNext -3PCurrent r -#lcl.ComCtrls.TListItems #rtl.Classes.TPersistent -1VFOwner -1VFItems -1VFFlags -1VFCacheIndex -1VFCacheItem -1MWSCreateCacheItem -1MWSUpdateAllowed -1MWSUpdateItem -1MWSSetItemsCount -1MItemDestroying -1MReadData -1MReadLazData -1MWriteLazData -2MDefineProperties -2MGetCount -2MGetItem -2MGetOwner -2MWSCreateItems -2MDoFinalizeWnd -2MSetCount -2MSetItem -2MClearSelection -2MSelectAll -3MAdd -3MAddItem -3MBeginUpdate -3MClear -3MCreate -3MDestroy -3MDelete -3MEndUpdate -3MExchange -3MMove -3MFindCaption -3MFindData -3MGetEnumerator -3MIndexOf -3MInsert -3MInsertItem -3PFlags r -3PCount rw -3PItem rw -3POwner r -#lcl.ComCtrls.TOwnerDataListItems #lcl.ComCtrls.TListItems -1VfItemsCount -2MGetCount -2MSetCount -2MGetItem -3MClear -#lcl.ComCtrls.TListColumn #rtl.Classes.TCollectionItem -1VFAlignment -1VFAutoSize -1VFCaption -1VFMinWidth -1VFMaxWidth -1VFVisible -1VFWidth -1VFImageIndex -1VFTag -1MGetWidth -1MWSCreateColumn -1MWSDestroyColumn -1MWSUpdateAllowed -1MWSReadAllowed -1MSetVisible -1MSetAutoSize -1MSetMinWidth -1MSetMaxWidth -1MSetWidth -1MSetCaption -1MSetAlignment -1MSetImageIndex +4PFullRepaint +4PParentBidiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowHint +4PTabOrder +4PTabStop +4PUseDockManager +4PVisible +4POnClick +4POnContextPopup +4POnDockDrop +4POnDockOver +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDock +4POnEndDrag +4POnEnter +4POnExit +4POnGetSiteInfo +4POnGetDockCaption +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnPaint +4POnResize +4POnStartDock +4POnStartDrag +4POnUnDock +#lcl.ExtCtrls.TFlowPanelControl #rtl.Classes.TCollectionItem +1VFControl +1VFWrapAfter +1MSetControl +1MSetWrapAfter 2MSetIndex -2MGetDisplayName -2MGetStoredWidth -3MCreate -3MDestroy -3MAssign -3PWidthType r -4PAlignment rw -4PAutoSize rw -4PCaption rw -4PImageIndex rw -4PMaxWidth rw -4PMinWidth rw -4PTag rw -4PVisible rw -4PWidth rw -#lcl.ComCtrls.TListColumns #rtl.Classes.TCollection -1VFOwner -1VFItemNeedsUpdate -1VFNeedsUpdate +2MAssignTo +2MFPCollection +2MFPOwner +4PControl rw +4PWrapAfter rw +4PIndex +#lcl.ExtCtrls.TFlowPanelControlList #rtl.Classes.TOwnedCollection 1MGetItem -1MWSCreateColumns 1MSetItem -2MGetOwner +2MFPOwner +2MAdd +2MAddControl +2MRemoveControl 3MCreate -3MDestroy -3MUpdate -3MAdd -3POwner r +3MIndexOf 3PItems rw -3MAssign -#lcl.ComCtrls.TCustomListViewEditor #lcl.StdCtrls.TCustomEdit -1VFItem -1MListViewEditorKeyDown -2MDoExit +#lcl.ExtCtrls.TCustomFlowPanel #lcl.ExtCtrls.TCustomPanel +1VFControlList +1VFAutoWrap +1VFFlowStyle +1MSetAutoWrap +1MSetControlList +1MSetFlowStyle +2MCMControlChange +2MAlignControls +2MCalculatePreferredSize 3MCreate -3PItem rw -#lcl.ComCtrls.TCustomListView #lcl.Controls.TWinControl -1VFEditor -1VFAllocBy -1VFAutoSort -1VFAutoWidthLastColumn -1VFCanvas -1VFDefaultItemHeight -1VFHotTrackStyles -1VFIconOptions -1VFOnEdited -1VFOnEditing -1VFOwnerData -1VFOwnerDataItem -1VFListItems -1VFColumns -1VFImages -1VFImageChangeLinks -1VFFlags -1VFSortDirection -1VFViewStyle -1VFSortType -1VFSortColumn -1VFScrollBars -1VFViewOriginCache -1VFSelected -1VFFocused -1VFSelectedIdx -1VFHoverTime -1VFUpdateCount -1VFOnChange -1VFOnColumnClick -1VFOnCompare -1VFOnData -1VFOnDataFind -1VFOnDataHint -1VFOnDataStateChange -1VFOnDeletion -1VFOnInsert -1VFOnItemChecked -1VFOnSelectItem -1VFOnCustomDraw -1VFOnCustomDrawItem -1VFOnCustomDrawSubItem -1VFOnAdvancedCustomDraw -1VFOnAdvancedCustomDrawItem -1VFOnAdvancedCustomDrawSubItem -1VFProperties -1MGetBoundingRect -1MGetColumnCount -1MGetColumnFromIndex -1MGetDropTarget -1MGetFocused -1MGetImageList -1MGetHoverTime -1MGetItemIndex -1MGetProperty -1MGetSelCount -1MGetSelection -1MGetTopItem -1MGetViewOrigin -1MGetVisibleRowCount -1MResizeLastColumn -1MSetAllocBy -1MSetAutoWidthLastColumn -1MSetColumns -1MSetDefaultItemHeight -1MSetDropTarget -1MSetFocused -1MSetHotTrackStyles -1MSetHoverTime -1MSetIconOptions -1MSetImageList -1MSetItemIndex -1MSetItems -1MSetItemVisible -1MSetOwnerData -1MSetProperty -1MSetScrollBars -1MSetSelection -1MSetSortColumn -1MSetSortDirection -1MSetSortType -1MSetViewOrigin -1MSetViewStyle -1MUpdateScrollbars -1MCNNotify -1MCNDrawItem -1MInvalidateSelected -1VFOnCreateItemClass -1VFOnDrawItem -1MHideEditor -1MShowEditor -1MWMHScroll -1MWMVScroll -2MItemDeleted -2MItemInserted +3MDestroy +3MGetControlIndex +3MSetControlIndex +3PAutoWrap rw +3PControlList rw +3PFlowStyle rw +#lcl.ExtCtrls.TFlowPanel #lcl.ExtCtrls.TCustomFlowPanel +4PAlign +4PAlignment +4PAnchors +4PAutoSize +4PAutoWrap +4PBevelInner +4PBevelOuter +4PBevelWidth +4PBiDiMode +4PBorderWidth +4PBorderStyle +4PCaption +4PColor +4PConstraints +4PControlList +4PUseDockManager +4PDockSite +4PDoubleBuffered +4PDragCursor +4PDragKind +4PDragMode +4PEnabled +4PFlowStyle +4PFullRepaint +4PFont +4PParentBiDiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowHint +4PTabOrder +4PTabStop +4PVisible +4POnAlignInsertBefore +4POnAlignPosition +4POnClick +4POnConstrainedResize +4POnContextPopup +4POnDockDrop +4POnDockOver +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDock +4POnEndDrag +4POnEnter +4POnExit +4POnGetSiteInfo +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnResize +4POnStartDock +4POnStartDrag +4POnUnDock +#lcl.ExtCtrls.TCustomTrayIcon #lcl.LCLClasses.TLCLComponent +1VFDelayedShowing +1VFAnimate +1VFAnimateTimer +1VFCurAnimationStep +1VFBalloonFlags +1VFBalloonHint +1VFBalloonTimeout +1VFBalloonTitle +1VFPopUpMenu +1VFIcon +1VFIcons +1VFHint +1VFVisible +1VFShowIcon +1VFNotifier +1VFTimer +1VFOnPaint +1VFOnClick +1VFOnDblClick +1VFOnMouseDown +1VFOnMouseUp +1VFOnMouseMove +1MGetAnimateInterval +1MGetCanvas +1MInternalShow +1MSetAnimate +1MSetAnimateInterval +1MSetHint +1MSetIcon +1MSetIcons +1MSetPopUpMenu +1MSetVisible +1MHandleNotifierClose +1MHandleNotifierTimeout +1MHandleOnAnimateTimer +1MIconChanged 2MWSRegisterClass -2MGetControlClassDefaultSize -2MInitializeWnd -2MFinalizeWnd -2MDestroyWnd -2MBeginAutoDrag -2MCreateListItem -2MCreateListItems -2MCanEdit -2MChange -2MColClick -2MDelete -2MDoDeletion -2MDoInsert -2MDoItemChecked -2MDoSelectItem -2MDoSetBounds -2MDoEndEdit -2MInsertItem -2MImageChanged -2MLoaded 2MNotification -2MSort -2MIsCustomDrawn -2MCustomDraw -2MCustomDrawItem -2MCustomDrawSubItem -2MIntfCustomDraw -2MGetUpdateCount -2MDrawItem -2MDoGetOwnerData -2MDoOwnerDataHint -2MDoOwnerDataStateChange -2MDblClick -2MKeyDown -2PAllocBy rw -2PAutoSort rw -2PAutoWidthLastColumn rw -2PColumnClick rw -2PColumns rw -2PDefaultItemHeight rw -2PHideSelection rw -2PHoverTime rw -2PLargeImages rw -2POwnerDraw rw -2PScrollBars rw -2PShowColumnHeaders rw -2PShowWorkAreas rw -2PSmallImages rw -2PSortType rw -2PSortColumn rw -2PSortDirection rw -2PStateImages rw -2PToolTips rw -2PViewStyle rw -2POnChange rw -2POnColumnClick rw -2POnCompare rw -2POnCreateItemClass rw -2POnData rw -2POnDataFind rw -2POnDataHint rw -2POnDataStateChange rw -2POnDeletion rw -2POnEdited rw -2POnEditing rw -2POnInsert rw -2POnItemChecked rw -2POnSelectItem rw -2POnCustomDraw rw -2POnCustomDrawItem rw -2POnCustomDrawSubItem rw -2POnDrawItem rw -2POnAdvancedCustomDraw rw -2POnAdvancedCustomDrawItem rw -2POnAdvancedCustomDrawSubItem rw +2MLoaded +3VHandle +3MCreate +3MDestroy +3MHide +3MShow +3MInternalUpdate +3MShowBalloonHint +3MGetPosition +3PAnimate rw +3PAnimateInterval rw +3PBalloonFlags rw +3PBalloonHint rw +3PBalloonTimeout rw +3PBalloonTitle rw +3PCanvas r +3PPopUpMenu rw +3PIcon rw +3PIcons rw +3PHint rw +3PShowIcon rw +3PVisible rw +3POnClick rw +3POnDblClick rw +3POnMouseDown rw +3POnMouseUp rw +3POnMouseMove rw +3POnPaint rw +#lcl.ExtCtrls.TTrayIcon #lcl.ExtCtrls.TCustomTrayIcon +4PBalloonFlags +4PBalloonHint +4PBalloonTimeout +4PBalloonTitle +4PPopUpMenu +4PIcon +4PHint +4PVisible +4POnClick +4POnDblClick +4POnMouseDown +4POnMouseMove +4POnMouseUp +4POnPaint +#lcl.ExtCtrls.TCtrlBand #rtl.System.TObject +1VFControl +1VFControlHeight +1VFControlLeft +1VFControlTop +1VFControlVisible +1VFControlWidth +1VFHeight +1VFInitLeft +1VFInitTop +1VFLeft +1VFTop +1VFVisible +1VFWidth +1MGetBandRect +1MGetBottom +1MGetRight +1MSetBandRect +1MSetRight +3PBandRect rw +3PBottom r +3PControl rw +3PControlHeight rw +3PControlLeft rw +3PControlTop rw +3PControlWidth rw +3PControlVisible rw +3PHeight rw +3PInitLeft rw +3PInitTop rw +3PLeft rw +3PRight rw +3PTop rw +3PVisible rw +3PWidth rw +#lcl.ExtCtrls.TCtrlBands +3MGetIndex +#lcl.ExtCtrls.TCustomControlBar #lcl.ExtCtrls.TCustomPanel +1VFAutoDrag +1VFAutoDock +1VFDrawingStyle +1VFGradientDirection +1VFGradientEndColor +1VFGradientStartColor +1VFPicture +1VFRowSize +1VFRowSnap +1VFOnBandDrag +1VFOnBandInfo +1VFOnBandMove +1VFOnBandPaint +1VFOnCanResize +1VFOnPaint +1MSetDrawingStyle +1MSetGradientDirection +1MSetGradientEndColor +1MSetGradientStartColor +1MSetPicture +1MSetRowSize +2McBandBorderH +2McBandBorderV +2McGrabWidth +2VcFullGrabber +2VFBands +2VFBandMove +2VFCursorLock +2VFDefCursor +2VFHoveredBand +2VFInitDrag +2VFInnerBevelWidth +2VFLockResize +2VFPrevWidth +2VFVisiBands +2VFVisiBandsEx +2MAlignControlToBand +2MAlignControlsToBands +2MCalcBandHeight +2MCalcBandHeightSnapped +2MCalcInnerBevelWidth +2MCalcLowestBandBottomPx +2MCalculatePreferredSize +2MChangeCursor +2MCheckBandsSizeAndVisibility +2MCMBiDiModeChanged +2MCMBorderChanged +2MCreateWnd +2MDoBandMove +2MDoBandPaint +2MDragControl +2MDragOver +2MGetControlInfo +2MInitializeClass +2MInitializeBand +2MInitializeMove +2MLoaded +2MIsBandOverlap +2MMouseDown +2MMouseMove +2MMouseUp +2MMoveBand +2MNormalizeRows +2MPaint +2MPictureChanged +2MResize +2MSetCursor +2MShiftBands +2MSortVisibleBands +2MWMSize +3VFUpdateCount 3MCreate 3MDestroy -3MAddItem -3MAlphaSort 3MBeginUpdate -3MClear 3MEndUpdate -3MRepaint -3MFindCaption -3MFindData -3MGetHitTestInfoAt -3MGetItemAt -3MGetNearestItem -3MGetNextItem -3MClearSelection -3MSelectAll -3MIsEditing -3PBoundingRect r -3PBorderStyle -3PCanvas r -3PCheckboxes rw -3PColumn r -3PColumnCount r -3PDropTarget rw -3PFlatScrollBars rw -3PFullDrag rw -3PGridLines rw -3PHotTrack rw -3PHotTrackStyles rw -3PIconOptions rw -3PItemFocused rw -3PItemIndex rw -3PItems rw -3PMultiSelect rw -3POwnerData rw -3PReadOnly rw -3PRowSelect rw -3PSelCount r -3PSelected rw -3PTabStop -3PTopItem r -3PViewOrigin rw -3PVisibleRowCount r -#lcl.ComCtrls.TListView #lcl.ComCtrls.TCustomListView +3MFlipChildren +3MHitTest +3MInsertControl +3MMouseToBandPos +3MRemoveControl +3MStickControls +3PAutoDock rw +3PAutoDrag rw +3PAutoSize +3PDockSite +3PDrawingStyle rw +3PGradientDirection rw +3PGradientStartColor rw +3PGradientEndColor rw +3PPicture rw +3PRowSize rw +3PRowSnap rw +3POnBandDrag rw +3POnBandInfo rw +3POnBandMove rw +3POnBandPaint rw +3POnCanResize rw +3POnPaint rw +#lcl.ExtCtrls.TControlBar #lcl.ExtCtrls.TCustomControlBar +3PCanvas 4PAlign -4PAllocBy 4PAnchors -4PAutoSort -4PAutoWidthLastColumn rw -4PBorderSpacing -4PBorderStyle +4PAutoDock +4PAutoDrag +4PAutoSize +4PBevelInner +4PBevelOuter +4PBevelWidth +4PBiDiMode 4PBorderWidth -4PCheckboxes 4PColor -4PColumns -4PColumnClick 4PConstraints +4PDockSite 4PDragCursor 4PDragKind 4PDragMode +4PDrawingStyle 4PEnabled -4PFont -4PGridLines -4PHideSelection -4PIconOptions -4PItems -4PLargeImages -4PMultiSelect -4POwnerData -4POwnerDraw +4PGradientDirection +4PGradientEndColor +4PGradientStartColor 4PParentColor 4PParentFont 4PParentShowHint +4PPicture 4PPopupMenu -4PReadOnly -4PRowSelect -4PScrollBars -4PShowColumnHeaders +4PRowSize +4PRowSnap 4PShowHint -4PSmallImages -4PSortColumn -4PSortDirection -4PSortType -4PStateImages -4PTabStop 4PTabOrder -4PToolTips +4PTabStop 4PVisible -4PViewStyle -4POnAdvancedCustomDraw -4POnAdvancedCustomDrawItem -4POnAdvancedCustomDrawSubItem -4POnChange +4POnBandDrag +4POnBandInfo +4POnBandMove +4POnBandPaint +4POnCanResize 4POnClick -4POnColumnClick -4POnCompare +4POnConstrainedResize 4POnContextPopup -4POnCreateItemClass -4POnCustomDraw -4POnCustomDrawItem -4POnCustomDrawSubItem -4POnData -4POnDataFind -4POnDataHint -4POnDataStateChange +4POnDockDrop +4POnDockOver 4POnDblClick -4POnDeletion 4POnDragDrop 4POnDragOver -4POnDrawItem -4POnEdited -4POnEditing 4POnEndDock 4POnEndDrag 4POnEnter 4POnExit -4POnInsert -4POnItemChecked -4POnKeyDown -4POnKeyPress -4POnKeyUp +4POnGetSiteInfo 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -29176,68 +30083,172 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPaint 4POnResize -4POnSelectItem 4POnStartDock 4POnStartDrag -4POnUTF8KeyPress -#lcl.ComCtrls.TCustomProgressBar #lcl.Controls.TWinControl -1VFMin -1VFMax -1VFStep -1VFPosition -1VFSmooth -1VFBarShowText -1VFBarTextFormat -1VFOrientation +4POnUnDock +#lcl.PopupNotifier.TNotifierXButton #lcl.Controls.TCustomControl +1VFState +1MHandleMouseDown +1MHandleMouseUp +3MCreate +3MDestroy +3MPaint +#lcl.PopupNotifier.TNotifierForm #lcl.Forms.THintWindow +1VlblTitle +1VlblText +1VimgIcon +1VbtnX +1MHideForm +1MHandleResize +3MCreate +3MDestroy +3MPaint +#lcl.PopupNotifier.TPopupNotifier #rtl.Classes.TComponent +1MGetColor +1MSetColor +1MGetIcon +1MSetIcon +1MGetText +1MSetText +1MGetTitle +1MSetTitle +1MGetVisible +1MSetVisible +1MSetOnClose +1MGetOnClose +3VvNotifierForm +3MCreate +3MDestroy +3MHide +3MShow +3MShowAtPos +4PColor rw +4PIcon rw +4PText rw +4PTitle rw +4PVisible rw +4POnClose rw +#lcl.ComCtrls.TStatusPanel #rtl.Classes.TCollectionItem +1VFBidiMode +1VFText +1VFWidth +1VFAlignment +1VFBevel +1VFParentBiDiMode 1VFStyle -1MGetMin -1MGetMax -1MGetPosition -1MSetParams -1MSetMin -1MSetMax -1MSetPosition -1MSetStep -1MSetSmooth -1MSetBarShowText -1MSetOrientation +1MSetAlignment +1MSetBevel 1MSetStyle +1MSetText +1MSetWidth +2VFIntfFlag +2MGetDisplayName +2MPanelChanged +2MSetIndex +3MCreate +3MDestroy +3MAssign +3MStatusBar +4PAlignment rw +4PBevel rw +4PBidiMode rw +4PParentBiDiMode rw +4PStyle rw +4PText rw +4PWidth rw +#lcl.ComCtrls.TStatusPanels #rtl.Classes.TCollection +1VFStatusBar +1MGetItem +1MSetItem +2MGetOwner +2MUpdate +3MCreate +3MAdd +3PItems rw +3PStatusBar r +#lcl.ComCtrls.TStatusBar #lcl.Controls.TWinControl +1VFAutoHint +1VFCanvas +1VFHandlePanelCount +1VFHandleObjectNeedsUpdate +1VFHandleUpdatePanelIndex +1VFOnCreatePanelClass +1VFSizeGrip +1VFUpdateLock +1VFPanels +1VFSimpleText +1VFSimplePanel +1VFOnDrawPanel +1VFOnHint +1VFUseSystemFont +1MSetPanels +1MSetSimpleText +1MSetSimplePanel +1MSetSizeGrip 2MWSRegisterClass -2MApplyChanges -2MInitializeWnd +2MBoundsChanged +2MCreateWnd +2MDestroyWnd 2MLoaded -2MGetControlClassDefaultSize +2MUpdateHandleObject +2MCalculatePreferredSize +2MSetBiDiMode +2MCreatePanel +2MCreatePanels +2MGetPanelClass +2MDoSetApplicationHint +2MDoHint +2MDrawPanel +2MLMDrawItem 3MCreate -3MStepIt -3MStepBy -3PMax rw -3PMin rw -3POrientation rw -3PPosition rw -3PSmooth rw -3PStep rw -3PStyle rw -3PBarShowText rw -#lcl.ComCtrls.TProgressBar #lcl.ComCtrls.TCustomProgressBar +3MDestroy +3MInvalidatePanel +3MBeginUpdate +3MEndUpdate +3MExecuteAction +3MGetPanelIndexAt +3MSizeGripEnabled +3MUpdatingStatusBar +3PCanvas r +4PAction 4PAlign 4PAnchors +4PAutoHint rw +4PAutoSize +4PBiDiMode 4PBorderSpacing 4PBorderWidth +4PColor 4PConstraints 4PDragCursor 4PDragKind 4PDragMode 4PEnabled -4PHint -4PMax -4PMin +4PFont +4PPanels rw +4PParentBiDiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PSimpleText rw +4PSimplePanel rw +4PSizeGrip rw +4PShowHint +4PUseSystemFont rw +4PVisible +4POnClick 4POnContextPopup +4POnCreatePanelClass rw +4POnDblClick 4POnDragDrop 4POnDragOver +4POnDrawPanel rw +4POnEndDock 4POnEndDrag -4POnEnter -4POnExit +4POnHint rw 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -29246,218 +30257,223 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnResize 4POnStartDock 4POnStartDrag -4POrientation -4PParentShowHint -4PPopupMenu -4PPosition -4PShowHint -4PSmooth -4PStep -4PStyle -4PTabOrder -4PTabStop -4PVisible -4PBarShowText -#lcl.ComCtrls.TCustomUpDown #lcl.Controls.TCustomControl -1VFAlignButton -1VFArrowKeys -1VFAssociate -1VFCanChangeDir -1VFCanChangePos -1VFIncrement -1VFMax -1VFMaxBtn -1VFMin -1VFMinBtn -1VFMouseDownBounds -1VFMouseTimerEvent -1VFOnChanging -1VFOnChangingEx -1VFOnClick -1VFOrientation -1VFPosition -1VFThousands -1VFWrap -1MGetPosition -1MBTimerExec -1MSetAlignButton -1MSetArrowKeys -1MSetAssociate -1MSetIncrement -1MSetMax -1MSetMin -1MSetOrientation -1MSetPosition -1MSetThousands -1MSetWrap -1MUpdateAlignButtonPos -1MUpdateOrientation -1MUpdateUpDownPositionText +#lcl.ComCtrls.TCustomPage #lcl.Controls.TWinControl +1VFTabVisible +1VFFlags +1VFImageIndex +1VFOnHide +1VFOnShow +1MSetImageIndex +1MSetTabVisible 2MWSRegisterClass -2MAssociateKeyDown -2MOnAssociateChangeBounds -2MOnAssociateChangeEnabled -2MOnAssociateChangeVisible -2MDoSetBounds -2MSetEnabled -2MGetControlClassDefaultSize -2MCalculatePreferredSize -2MCanChange -2MNotification -2MClick -2PAlignButton rw -2PArrowKeys rw -2PAssociate rw -2PIncrement rw -2PMax rw -2PMin rw -2POnChanging rw -2POnChangingEx rw -2POnClick rw -2POrientation rw -2PPosition rw -2PThousands rw -2PWrap rw +2MWMPaint +2MSetParent +2PFlags rw +2MCMHitTest +2MCMVisibleChanged +2MGetPageIndex +2MSetPageIndex +2MGetTabVisible +2MDialogChar +2MDoHide +2MDoShow +2MDestroyHandle +2MRealSetText +3MCreate +3MCanTab +3MIsControlVisible +3MHandleObjectShouldBeVisible +3MVisibleIndex +3PPageIndex rw +3PTabVisible rw +3PImageIndex rw +3PLeft s +3PTop s +3PWidth s +3PHeight s +3PTabOrder s +3PVisible s +3POnHide rw +3POnShow rw +#lcl.ComCtrls.TNBBasePages #rtl.Classes.TStrings +2MIndexOfPage +2MInsertPage +2MDeletePage +2MGetPage +3MCreate +#lcl.ComCtrls.TNBPages #lcl.ComCtrls.TNBBasePages +1VFPageList +1VFNotebook +1MPageListChange +2MGet +2MGetCount +2MGetObject +2MPut +2MIndexOfPage +2MInsertPage +2MDeletePage +2MGetPage +2PPageList r +2PNotebook r 3MCreate 3MDestroy -#lcl.ComCtrls.TUpDown #lcl.ComCtrls.TCustomUpDown -4PAlignButton -4PAnchors -4PArrowKeys -4PAssociate -4PBorderSpacing -4PConstraints -4PEnabled -4PHint -4PIncrement -4PMax -4PMin -4POnChanging -4POnChangingEx -4POnClick -4POnContextPopup -4POnEnter -4POnExit -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POrientation -4PParentShowHint -4PPopupMenu -4PPosition -4PShowHint -4PTabOrder -4PTabStop -4PThousands -4PVisible -4PWrap -#lcl.ComCtrls.TToolButtonActionLink #lcl.Controls.TControlActionLink -2MAssignClient -2MSetChecked -2MSetImageIndex -3MIsCheckedLinked -3MIsImageIndexLinked -#lcl.ComCtrls.TToolButton #lcl.Controls.TGraphicControl -1VFAllowAllUp -1VFDown -1VFDropdownMenu -1VFGrouped -1VFImageIndex -1VFIndeterminate -1VFMarked -1VFMenuItem -1VFMouseInControl -1VFShowCaption +3MClear +3MDelete +3MInsert +3MMove +#lcl.ComCtrls.TNBNoPages #lcl.ComCtrls.TNBBasePages +2MGet +2MGetCount +2MIndexOfPage +2MGetPage +#lcl.ComCtrls.TCustomTabControl #lcl.Controls.TWinControl +1VFAccess +1VFAddingPages +1VFHotTrack +1VFImages +1VFImageListChangeLink +1VFMultiSelect +1VFOnChanging +1VFOnCloseTabClicked +1VFOnDrawTab +1VFOnGetImageIndex +1VFOnPageChanged +1VFOptions +1VFOwnerDraw +1VFPageIndex +1VFPageIndexOnLastChange +1VFRaggedRight +1VFScrollOpposite +1VFShowTabs 1VFStyle -1VFToolButtonFlags -1VFUpdateCount -1VFWrap -1MGetGroupBounds -1MGetIndex -1MGetTextSize -1MIsCheckedStored -1MIsHeightStored -1MIsImageIndexStored -1MIsWidthStored -1MSetDown -1MSetDropdownMenu -1MSetGrouped -1MSetImageIndex -1MSetIndeterminate -1MSetMarked -1MSetMenuItem -1MSetShowCaption +1VFTabHeight +1VFTabPosition +1VFTabWidth +1MDoSendPageIndex +1MDoSendShowTabs +1MDoSendTabPosition +1MDoImageListChange +1MGetActivePage +1MGetActivePageComponent +1MGetDisplayRect +1MGetMultiLine +1MFindVisiblePage +1MIsStoredActivePage +1MMoveTab +1MSetMultiLine 1MSetStyle -1MSetWrap -1MSetMouseInControl -1MCMEnabledChanged -1MCMVisibleChanged -1MCMHitTest -2McDefSeparatorWidth -2McDefDividerWidth -2VFToolBar +1MWSMovePage +1MPageRemoved +1MSetActivePage +1MSetActivePageComponent +1MSetImages +1MSetOptions +1MSetPageIndex +1MSetPages +1MSetShowTabs +1MSetTabPosition +1MShowCurrentPage +1MUpdateAllDesignerFlags +1MUpdateDesignerFlags +2VPageClass +2MGetPageClass +2MGetListClass +2MAddRemovePageHandle +2MCNNotify 2MWSRegisterClass -2MCopyPropertiesFromMenuItem -2MGetActionLinkClass -2MActionChange -2MAssignTo -2MBeginUpdate -2MEndUpdate -2MMouseDown -2MMouseUp -2MMouseEnter -2MMouseLeave -2MNotification -2MPaint -2MTextChanged -2MCalculatePreferredSize -2MGetControlClassDefaultSize +2MCreateWnd 2MLoaded -2MRefreshControl -2MSetToolBar -2MUpdateControl -2MGetButtonDrawDetail -2MSetParent -2MUpdateVisibleToolbar -2MGroupAllUpAllowed +2MDoChange +2MInitializeWnd +2MChange +2MKeyDown +2MReadState 2MDialogChar -2MSetAutoSize -2MRealSetText +2MInternalSetPageIndex +2MShowControl +2MUpdateTabProperties +2MGetControlClassDefaultSize +2MNotification +2PActivePageComponent rw +2PActivePage rws +2VFUnPaged +2MGetPage +2MGetPageCount +2MInsertPage +2MRemovePage +2MCanChange +2PDisplayRect r +2PHotTrack rw +2PMultiSelect rw +2POwnerDraw rw +2PRaggedRight rw +2PScrollOpposite rw +2PStyle rw +2PTabs rw +2PTabHeight rw +2PTabIndex rw +2PTabWidth rw +2POnChange rw +2POnDrawTab rw 3MCreate -3MCheckMenuDropdown -3MClick -3MGetCurrentIcon -3MGetPreferredSize -3PIndex r -4PAction -4PAllowAllUp rw -4PAutoSize +3MDestroy +3MTabIndexAtClientPos +3MTabRect +3MGetImageIndex +3MIndexOf +3MCustomPage +3MCanChangePageIndex +3MGetMinimumTabWidth +3MGetMinimumTabHeight +3MGetCapabilities +3MTabToPageIndex +3MPageToTabIndex +3MIndexOfTabAt +3MDoCloseTabClicked +3PImages rw +3PMultiLine rw +3POnChanging rw +3POnCloseTabClicked rw +3POnGetImageIndex rw +3POptions rw +3PPage r +3PPageCount r +3PPageIndex rw +3PPages rw +3PShowTabs rw +3PTabPosition rw +3PIsUnpaged r +4PTabStop +#lcl.ComCtrls.TTabSheet #lcl.ComCtrls.TCustomPage +1MGetPageControl +1MGetTabIndex +1MSetPageControl +2MWSRegisterClass +3MCreate +3MDestroy +3PPageControl rw +3PTabIndex r +4PBorderWidth +4PBiDiMode 4PCaption -4PDown rws -4PDragCursor -4PDragKind -4PDragMode -4PDropdownMenu rw +4PChildSizing +4PClientHeight +4PClientWidth 4PEnabled -4PGrouped rw +4PFont 4PHeight s -4PImageIndex rws -4PIndeterminate rw -4PMarked rw -4PMenuItem rw -4POnClick +4PImageIndex +4PLeft s 4POnContextPopup 4POnDragDrop 4POnDragOver -4POnEndDock 4POnEndDrag +4POnEnter +4POnExit +4POnHide 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -29466,151 +30482,78 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnStartDock +4POnResize +4POnShow 4POnStartDrag +4PPageIndex s +4PParentBiDiMode +4PParentFont 4PParentShowHint 4PPopupMenu -4PShowCaption rw 4PShowHint -4PStyle rw -4PVisible +4PTabVisible +4PTop s 4PWidth s -4PWrap rw -#lcl.ComCtrls.TToolBarEnumerator #rtl.System.TObject -1VFToolBar -1VFPosition -1MGetCurrent -3MCreate -3MMoveNext -3PCurrent r -#lcl.ComCtrls.TToolBar #lcl.Toolwin.TToolWindow -1VFButtonHeight -1VFRealizedButtonHeight -1VFRealizedButtonWidth -1VFButtons -1VFButtonWidth -1VFDisabledImageChangeLink -1VFDisabledImages -1VFDropDownWidth -1VFDropDownButton -1VFFlat -1VFHotImageChangeLink -1VFHotImages -1VFImageChangeLink -1VFImages -1VFIndent -1VFList -1VFNewStyle -1VFRowCount -1VFShowCaptions -1VFCurrentMenu -1VFCurrentMenuAutoFree -1VFSrcMenu -1VFSrcMenuItem -1VFToolBarFlags -1VFWrapable -1MApplyFontForButtons -1MCloseCurrentMenu -1MGetButton -1MGetButtonCount -1MGetTransparent -1MSetButtonHeight -1MSetButtonWidth -1MSetDisabledImages -1MSetFlat -1MSetHotImages -1MSetImages -1MSetIndent -1MSetList -1MSetShowCaptions -1MSetTransparent -1MSetWrapable -1MToolButtonDown -1MImageListChange -1MDisabledImageListChange -1MHotImageListChange -1MUpdateVisibleBar -1MMoveSubMenuItems -1MAddButton -1MRemoveButton -2McDefButtonWidth -2McDefButtonHeight -2VFPrevVertical -2MIsVertical +#lcl.ComCtrls.TPageControl #lcl.ComCtrls.TCustomTabControl +1VFPageToUndock +1MGetActivePageIndex +1MGetActiveTabSheet +1MGetTabSheet +1MSetActivePageIndex +1MSetActiveTabSheet +1MFindPageWithDockClient 2MWSRegisterClass -2MAdjustClientRect -2MGetControlClassDefaultSize -2MDoAutoSize -2MCalculatePreferredSize -2MCheckMenuDropdown -2MClickButton -2MCreateWnd -2MControlsAligned -2MFindButtonFromAccel -2MFontChanged -2MLoaded -2MNotification -2MPaint -2MRepositionButton -2MRepositionButtons -2MWrapButtons -2MCNDropDownClosed -3MCreate -3MDestroy -3MEndUpdate -3MFlipChildren -3MGetEnumerator -3MSetButtonSize -3MCanFocus -3PButtonCount r -3PButtons r -3PButtonList r -3PRowCount r +2MGetPageClass +2MDoAddDockClient +2MDockOver +2MDoRemoveDockClient +2MDoUndockClientMsg +2MChildClassAllowed +3MFindNextPage +3MSelectNextPage +3MAddTabSheet +3PActivePageIndex rw +3PPages r +4PActivePage rw +4POnGetDockCaption 4PAlign 4PAnchors -4PAutoSize 4PBorderSpacing -4PBorderWidth -4PButtonHeight rw -4PButtonWidth rw -4PCaption -4PChildSizing +4PBiDiMode 4PConstraints -4PColor -4PDisabledImages rw +4PDockSite 4PDragCursor 4PDragKind 4PDragMode -4PEdgeBorders -4PEdgeInner -4PEdgeOuter 4PEnabled -4PFlat rw 4PFont -4PHeight -4PHotImages rw -4PImages rw -4PIndent rw -4PList rw -4PParentColor +4PImages +4PMultiLine +4PParentBiDiMode 4PParentFont 4PParentShowHint 4PPopupMenu -4PShowCaptions rw 4PShowHint +4PShowTabs +4PTabIndex 4PTabOrder +4PTabPosition 4PTabStop -4PTransparent rw 4PVisible -4PWrapable rw -4POnClick +4POnChange +4POnChanging +4POnCloseTabClicked 4POnContextPopup -4POnDblClick +4POnDockDrop +4POnDockOver 4POnDragDrop 4POnDragOver +4POnEndDock 4POnEndDrag 4POnEnter 4POnExit +4POnGetImageIndex +4POnGetSiteInfo 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -29620,230 +30563,196 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize -4POnChangeBounds +4POnStartDock 4POnStartDrag -#lcl.ComCtrls.TCoolBand #rtl.Classes.TCollectionItem -1VFCoolBar -1VFControl -1VFBitmap -1VFBorderStyle -1VFBreak -1VFColor -1VFFixedBackground -1VFFixedSize -1VFHeight -1VFHorizontalOnly -1VFImageIndex -1VFMinHeight -1VFMinWidth -1VFParentBitmap -1VFParentColor -1VFRealLeft -1VFRealWidth -1VFText -1VFVisible -1VFWidth -1VFLeft -1VFTop -1MIsBitmapStored -1MIsColorStored -1MGetRight -1MGetVisible -1MSetBitmap -1MSetBorderStyle -1MSetBreak -1MSetColor -1MSetControl -1MSetFixedBackground -1MSetHorizontalOnly -1MSetImageIndex -1MSetMinHeight -1MSetMinWidth -1MSetParentBitmap -1MSetParentColor -1MSetText -1MSetVisible -1MSetWidth -2McDefMinHeight -2McDefMinWidth -2McDefWidth -2McDivider -2McGrabIndent -2McHorSpacing -2McVertSpacing -2VFControlLeft -2VFControlTop -2VFTextWidth -2MCalcControlLeft -2MCalcPreferredHeight -2MCalcPreferredWidth -2MCalcTextWidth -2MGetDisplayName +4POnUnDock +4POptions +#lcl.ComCtrls.TTabControlStrings #rtl.Classes.TStrings +1VFHotTrack +1VFImages +1VFMultiLine +1VFMultiSelect +1VFOwnerDraw +1VFRaggedRight +1VFScrollOpposite +1VFTabControl +1VFTabHeight +1VFTabWidth +1VFUpdateCount +2MGetTabIndex +2MSetHotTrack +2MSetImages +2MSetMultiLine +2MSetMultiSelect +2MSetOwnerDraw +2MSetRaggedRight +2MSetScrollOpposite +2MSetTabHeight +2MSetTabIndex +2MSetTabWidth 3MCreate -3MDestroy -3MAssign -3MAutosizeWidth -3MInvalidateCoolBar -3PHeight r -3PLeft r -3PRight r -3PTop r -4PBitmap rws -4PBorderStyle rw -4PBreak rw -4PColor rws -4PControl rw -4PFixedBackground rw -4PFixedSize rw -4PHorizontalOnly rw -4PImageIndex rw -4PMinHeight rw -4PMinWidth rw -4PParentColor rw -4PParentBitmap rw -4PText rw -4PVisible rw -4PWidth rw -#lcl.ComCtrls.TCoolBands #rtl.Classes.TCollection -1VFCoolBar -1MGetItem -1MSetItem -2MGetOwner -2MUpdate -2MNotify +3MGetHitTestInfoAt +3MGetSize +3MIndexOfTabAt +3MRowCount +3MTabRect +3MImageListChange +3MScrollTabs +3MTabControlBoundsChange +3MUpdateTabImages +3MBeginUpdate +3MEndUpdate +3MIsUpdating +3PTabControl r +3PTabIndex rw +3PHotTrack rw +3PImages rw +3PMultiLine rw +3PMultiSelect rw +3POwnerDraw rw +3PRaggedRight rw +3PScrollOpposite rw +3PTabHeight rw +3PTabWidth rw +#lcl.ComCtrls.TNoteBookStringsTabControl #lcl.ComCtrls.TPageControl +2VFHandelCreated +2MCreateHandle +2MWSRegisterClass +#lcl.ComCtrls.TTabControlNoteBookStrings #lcl.ComCtrls.TTabControlStrings +1VFNoteBook +1VFInHandleCreated +1MGetStyle +1MSetStyle +2MGetInternalTabControllClass +2MGet +2MGetCount +2MGetObject +2MGetTabIndex +2MGetTabPosition +2MNBChanging +2MNBGetImageIndex +2MNBPageChanged +2MNBHandleCreated +2MPut +2MPutObject +2MSetImages +2MSetMultiLine +2MSetTabIndex +2MSetUpdateState +2MSetTabHeight +2MSetTabPosition +2MSetTabWidth 3MCreate -3MAdd -3MFindBand -3PItems rw -#lcl.ComCtrls.TCustomCoolBar #lcl.Toolwin.TToolWindow -1VFBands -1VFBandBorderStyle -1VFBandMaximize -1VFBitmap -1VFFixedSize -1VFFixedOrder -1VFGrabStyle -1VFGrabWidth -1VFImages +3MDestroy +3MClear +3MDelete +3MInsert +3MGetSize +3MTabControlBoundsChange +3MIndexOfTabAt +3PTabPosition rw +3PStyle rw +3PNoteBook r +#lcl.ComCtrls.TTabControl #lcl.ComCtrls.TCustomTabControl 1VFImageChangeLink -1VFShowText -1VFVertical 1VFOnChange -1MGetAlign -1MRowEndHelper -1MSetBandBorderStyle -1MSetBands -1MSetBitmap -1MSetGrabStyle -1MSetGrabWidth -1MSetImages -1MSetShowText -1MSetVertical -2McDefGrabStyle -2McDefGrabWidth -2McNewRowBelow -2McNewRowAbove -2VFBorderEdges -2VFBorderLeft -2VFBorderTop -2VFBorderRight -2VFBorderBottom -2VFBorderWidth -2VFCursorBkgnd -2VFDragBand -2VFDraggedBandIndex -2VFDragInitPos -2VFLockCursor -2VFRightToLeft -2VFTextHeight -2VFVisiBands -2MAlignControls -2MBitmapOrImageListChange -2MCalculatePreferredSize -2MCalculateAndAlign -2MCalculateRealIndex -2MChangeCursor -2MCMBiDiModeChanged +1VFOnChangeNeeded +1VFTabControlCreating +1VFTabs +1VFCanvas +1MAdjustDisplayRect +1MGetDisplayRect +1MGetHotTrack +1MGetMultiLine +1MGetMultiSelect +1MGetOwnerDraw +1MGetRaggedRight +1MGetScrollOpposite +1MGetTabHeight +1MGetTabIndex +1MGetTabRectWithBorder +1MGetTabWidth +1MSetHotTrack +1MSetImages +1MSetMultiLine +1MSetMultiSelect +1MSetOwnerDraw +1MSetRaggedRight +1MSetScrollOpposite +1MSetStyle +1MSetTabHeight +1MSetTabPosition +1MSetTabs +1MSetTabWidth +2MAddRemovePageHandle +2MCanChange +2MCanShowTab +2MChange 2MCreateWnd -2MDoFontChanged -2MDrawTiledBitmap -2MFontChanged -2MIsFirstAtRow -2MIsRowEnd -2MMouseDown -2MMouseMove -2MMouseUp +2MDestroyHandle 2MNotification +2MSetTabIndex +2MUpdateTabImages +2MImageListChange +2MDoSetBounds +2MGetControlClassDefaultSize +2MPaintWindow 2MPaint -2MSetAlign -2MSetAutoSize -2MSetCursor -2MWMSize +2MAdjustDisplayRectWithBorder +2MAdjustClientRect +2MCreateTabNoteBookStrings 3MCreate 3MDestroy -3MAutosizeBands +3MIndexOfTabAt +3MGetHitTestInfoAt +3MGetImageIndex +3MIndexOfTabWithCaption +3MTabRect +3MRowCount +3MScrollTabs +3MBeginUpdate 3MEndUpdate -3MInvalidate -3MInsertControl -3MMouseToBandPos -3MRemoveControl -3PAlign rw -3PBandBorderStyle rw -3PBandMaximize rw -3PBands rw -3PBitmap rw -3PFixedSize rw -3PFixedOrder rw -3PGrabStyle rw -3PGrabWidth rw -3PImages rw -3PShowText rw -3PVertical rw -3POnChange rw -#lcl.ComCtrls.TCoolBar #lcl.ComCtrls.TCustomCoolBar +3MIsUpdating +3PDisplayRect r +4PHotTrack rw +4PImages +4PMultiLine rw +4PMultiSelect rw +4POnChange rw +4POnChanging +4POnDrawTab +4POnGetImageIndex +4POwnerDraw rw +4PRaggedRight rw +4PScrollOpposite rw +4PStyle +4PTabHeight rw +4PTabPosition +4PTabWidth rw +4PTabIndex rw +4PTabs rw +4PTabStop 4PAlign 4PAnchors -4PAutoSize -4PBandBorderStyle -4PBandMaximize -4PBands 4PBiDiMode -4PBorderWidth -4PColor +4PBorderSpacing 4PConstraints 4PDockSite 4PDragCursor 4PDragKind 4PDragMode -4PEdgeBorders -4PEdgeInner -4PEdgeOuter 4PEnabled -4PFixedSize -4PFixedOrder 4PFont -4PGrabStyle -4PGrabWidth -4PImages -4PParentColor -4PParentFont -4PParentShowHint -4PBitmap -4PPopupMenu -4PShowHint -4PShowText -4PVertical -4PVisible -4POnChange -4POnClick +4POnChangeBounds 4POnContextPopup -4POnDblClick 4POnDockDrop 4POnDockOver 4POnDragDrop 4POnDragOver 4POnEndDock 4POnEndDrag +4POnEnter +4POnExit 4POnGetSiteInfo 4POnMouseDown 4POnMouseEnter @@ -29857,744 +30766,520 @@ 4POnStartDock 4POnStartDrag 4POnUnDock -#lcl.ComCtrls.TCustomTrackBar #lcl.Controls.TWinControl -1VFOrientation -1VFReversed -1VFSelEnd -1VFSelStart -1VFShowSelRange -1VFTickMarks -1VFTickStyle -1VFLineSize -1VFPageSize -1VFMin -1VFMax -1VFFrequency -1VFPosition -1VFScalePos -1VFScaleDigits -1VFOnChange -1MSetFrequency -1MSetLineSize -1MSetMax -1MSetMin -1MSetOrientation -1MSetPageSize -1MSetParams -1MSetPosition -1MSetReversed -1MSetScalePos -1MSetSelEnd -1MSetSelStart -1MSetShowSelRange -1MSetTickMarks -1MSetTickStyle -1MUpdateSelection -2MWSRegisterClass -2MApplyChanges -2MChanged -2MDoChange -2MFixParams -2MGetControlClassDefaultSize -2MInitializeWnd -2MLoaded -3MCreate -3MSetTick -4PFrequency rw -4PLineSize rw -4PMax rw -4PMin rw -4POnChange rw -4POrientation rw -4PPageSize rw -4PPosition rw -4PReversed rw -4PScalePos rw -4PSelEnd rw -4PSelStart rw -4PShowSelRange rw -4PTabStop -4PTickMarks rw -4PTickStyle rw -#lcl.ComCtrls.TTrackBar #lcl.ComCtrls.TCustomTrackBar -4PAlign -4PAnchors -4PBorderSpacing -4PConstraints -4PDragCursor -4PDragMode -4PEnabled -4PFrequency -4PHint -4PLineSize -4PMax -4PMin -4POnChange -4POnChangeBounds -4POnClick -4POnContextPopup -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnEnter -4POnExit -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnResize -4POnStartDrag -4POnUTF8KeyPress -4POrientation -4PPageSize +4PParentBiDiMode +4PParentFont 4PParentShowHint 4PPopupMenu -4PPosition -4PReversed -4PScalePos -4PSelEnd -4PSelStart 4PShowHint -4PShowSelRange 4PTabOrder -4PTabStop -4PTickMarks -4PTickStyle 4PVisible -#lcl.ComCtrls.ETreeNodeError #rtl.sysutils.Exception -#lcl.ComCtrls.ETreeViewError #lcl.ComCtrls.ETreeNodeError -#lcl.ComCtrls.TTreeNode #rtl.Classes.TPersistent +#lcl.ComCtrls.TIconOptions #rtl.Classes.TPersistent +1VFListView +1VFArrangement +1MGetAutoArrange +1MGetWrapText +1MSetArrangement +1MSetAutoArrange +1MSetWrapText +2MAssignTo +2MGetOwner +3MCreate +4PArrangement rw +4PAutoArrange rw +4PWrapText rw +#lcl.ComCtrls.TListItem #rtl.Classes.TPersistent 1VFOwner -1VFCapacity -1VFCount +1VFFlags +1VFSubItems +1VFCaption 1VFData -1VFHeight -1VFNodeEffect 1VFImageIndex -1VFIndex -1VFItems -1VFNextBrother -1VFNextMultiSelected -1VFOverlayIndex -1VFParent -1VFPrevBrother -1VFPrevMultiSelected -1VFSelectedIndex 1VFStateIndex 1VFStates -1VFSubTreeCount -1VFText -1VFTop -1VFVisible -1MAreParentsExpandedAndVisible -1MBindToMultiSelected -1MCompareCount -1MDoCanExpand -1MDoExpand -1MExpandItem -1MGetAbsoluteIndex -1MGetDeleting -1MGetHasChildren -1MGetCount -1MGetCut -1MGetDropTarget -1MGetExpanded -1MGetFocused -1MGetHeight -1MGetIndex -1MGetItems -1MGetLevel -1MGetMultiSelected -1MGetSelected +1VFChecked +1MGetCaption +1MGetChecked +1MGetLeft +1MGetListView +1MGetPosition 1MGetState -1MGetTreeNodes -1MGetTreeView +1MGetImageIndex +1MGetIndex +1MGetStateIndex +1MGetSubItemImages +1MGetSubItems 1MGetTop -1MInternalMove -1MIsEqual -1MIsNodeVisible -1MIsNodeHeightFullVisible -1MReadData -1MReadDelphiData -1MSetCut +1MWSUpdateAllowed +1MWSUpdateText +1MWSUpdateImages +1MWSUpdateChecked +1MWSSetState +1MWSUpdateState +1MSetChecked +1MSetState 1MSetData -1MSetDropTarget -1MSetExpanded -1MSetFocused -1MSetHasChildren -1MSetHeight -1MSetImageEffect 1MSetImageIndex -1MSetIndex -1MSetItems -1MSetMultiSelected -1MSetOverlayIndex -1MSetSelected -1MSetSelectedIndex +1MSetLeft +1MSetCaption +1MSetPosition 1MSetStateIndex -1MSetText -1MSetVisible -1MUnbind -1MUnbindFromMultiSelected -1MWriteData -1MWriteDelphiData -2MChanged +1MSetSubItemImages +1MSetSubItems +1MSetTop +2MIsEqual +2MIsOwnerData +2MGetCheckedInternal 2MGetOwner +3MAssign 3MCreate 3MDestroy -3MAlphaSort -3MBottom -3MBottomExpanded -3MCustomSort -3MDefaultTreeViewSort -3MDisplayExpandSignLeft -3MDisplayExpandSignRect -3MDisplayExpandSignRight -3MDisplayIconLeft -3MDisplayRect -3MDisplayStateIconLeft -3MDisplayTextLeft -3MDisplayTextRight -3MEditText -3MFindNode -3MGetFirstChild -3MGetFirstVisibleChild -3MGetHandle -3MGetLastChild -3MGetLastSibling -3MGetLastSubChild -3MGetLastVisibleChild -3MGetNext -3MGetNextChild -3MGetNextExpanded -3MGetNextMultiSelected -3MGetNextSibling -3MGetNextSkipChildren -3MGetNextVisible -3MGetNextVisibleSibling -3MGetParentNodeOfAbsoluteLevel -3MGetPrev -3MGetPrevChild -3MGetPrevExpanded -3MGetPrevMultiSelected -3MGetPrevSibling -3MGetPrevVisible -3MGetPrevVisibleSibling -3MGetTextPath -3MHasAsParent -3MIndexOf -3MIndexOfText -3MAssign -3MCollapse -3MConsistencyCheck 3MDelete -3MDeleteChildren -3MEndEdit -3MExpand -3MExpandParents -3MFreeAllNodeData 3MMakeVisible -3MMoveTo -3MMultiSelectGroup -3MUpdate -3MWriteDebugReport -3PAbsoluteIndex r -3PCount r +3MDisplayRect +3MDisplayRectSubItem +3MEditCaption +3PCaption rw +3PChecked rw 3PCut rw 3PData rw -3PDeleting r 3PDropTarget rw -3PExpanded rw 3PFocused rw -3PHandle r -3PHasChildren rw -3PHeight rw +3PIndex r 3PImageIndex rw -3PIndex rw -3PIsFullHeightVisible r -3PIsVisible r -3PItems rw -3PLevel r -3PMultiSelected rw -3PNodeEffect rw -3POverlayIndex rw +3PLeft rw +3PListView r 3POwner r -3PParent r +3PPosition rw 3PSelected rw -3PSelectedIndex rw 3PStateIndex rw -3PStates r -3PSubTreeCount r -3PText rw -3PTop r -3PTreeNodes r -3PTreeView r -3PVisible rw -#lcl.ComCtrls.TTreeNodesEnumerator #rtl.System.TObject -1VFNodes +3PSubItems rw +3PSubItemImages rw +3PTop rw +#lcl.ComCtrls.TOwnerDataListItem #lcl.ComCtrls.TListItem +1VFDataIndex +1VFCached +1MGetCaption +1MGetIndex +1MGetImageIndex +1MSetCaption +1MSetImageIndex +1MGetSubItems +1MDoCacheItem +2MIsOwnerData +3MSetDataIndex +3MSetOwner +#lcl.ComCtrls.TListItemsEnumerator #rtl.System.TObject +1VFItems 1VFPosition 1MGetCurrent 3MCreate -3MMoveNext -3PCurrent r -#lcl.ComCtrls.TTreeNodes #rtl.Classes.TPersistent -1VFCount -1VFSelection -1VFFirstMultiSelected -1VFLastMultiSelected -1VFKeepCollapsedNodes -1VFNodeCache +3MMoveNext +3PCurrent r +#lcl.ComCtrls.TListItems #rtl.Classes.TPersistent +1VFOwner +1VFItems +1VFFlags +1VFCacheIndex +1VFCacheItem +1MWSCreateCacheItem +1MWSUpdateAllowed +1MWSUpdateItem +1MWSSetItemsCount +1MItemDestroying +1MReadData +1MReadLazData +1MWriteLazData +2MDefineProperties +2MGetCount +2MGetItem +2MGetOwner +2MWSCreateItems +2MDoFinalizeWnd +2MSetCount +2MSetItem +2MClearSelection +2MSelectAll +3MAdd +3MAddItem +3MBeginUpdate +3MClear +3MCreate +3MDestroy +3MDelete +3MEndUpdate +3MExchange +3MMove +3MFindCaption +3MFindData +3MGetEnumerator +3MIndexOf +3MInsert +3MInsertItem +3PFlags r +3PCount rw +3PItem rw +3POwner r +#lcl.ComCtrls.TOwnerDataListItems #lcl.ComCtrls.TListItems +1VfItemsCount +2MGetCount +2MSetCount +2MGetItem +3MClear +#lcl.ComCtrls.TListColumn #rtl.Classes.TCollectionItem +1VFAlignment +1VFAutoSize +1VFCaption +1VFMinWidth +1VFMaxWidth +1VFVisible +1VFWidth +1VFImageIndex +1VFTag +1MGetWidth +1MWSCreateColumn +1MWSDestroyColumn +1MWSUpdateAllowed +1MWSReadAllowed +1MSetVisible +1MSetAutoSize +1MSetMinWidth +1MSetMaxWidth +1MSetWidth +1MSetCaption +1MSetAlignment +1MSetImageIndex +2MSetIndex +2MGetDisplayName +2MGetStoredWidth +3MCreate +3MDestroy +3MAssign +3PWidthType r +4PAlignment rw +4PAutoSize rw +4PCaption rw +4PImageIndex rw +4PMaxWidth rw +4PMinWidth rw +4PTag rw +4PVisible rw +4PWidth rw +#lcl.ComCtrls.TListColumns #rtl.Classes.TCollection 1VFOwner -1VFTopLvlCapacity -1VFTopLvlCount -1VFTopLvlItems -1VFUpdateCount -1VfNewNodeToBeAdded -1MClearCache -1MGetHandle -1MGetNodeFromIndex -1MGetSelectionCount -1MGetTopLvlItems -1MGrowTopLvlItems -1MIndexOfTopLvlItem -1MMoveTopLvlNode -1MReadData -1MReadExpandedState -1MRepaint -1MShrinkTopLvlItems -1MSetTopLvlItems -1MWriteData -1MWriteExpandedState -2MInternalAddObject -2MDefineProperties -2MGetCount +1VFItemNeedsUpdate +1VFNeedsUpdate +1MGetItem +1MWSCreateColumns +1MSetItem 2MGetOwner -2MSetItem -2MSetUpdateState 3MCreate 3MDestroy +3MUpdate 3MAdd -3MAddChild -3MAddChildFirst -3MAddChildObject -3MAddChildObjectFirst -3MAddFirst -3MAddNode -3MAddObject -3MAddObjectFirst -3MFindNodeWithData -3MFindNodeWithText -3MFindNodeWithTextPath -3MFindTopLvlNode -3MGetEnumerator -3MGetFirstNode -3MGetFirstVisibleNode -3MGetLastExpandedSubNode -3MGetLastNode -3MGetLastSubNode -3MGetLastVisibleNode -3MGetSelections -3MInsert -3MInsertBehind -3MInsertObject -3MInsertObjectBehind -3MIsMultiSelection -3MAssign -3MBeginUpdate -3MClear -3MClearMultiSelection -3MConsistencyCheck -3MDelete -3MEndUpdate -3MFreeAllNodeData -3MSelectionsChanged -3MSelectOnlyThis -3MSortTopLevelNodes -3MWriteDebugReport -3PCount r -3PItem r -3PKeepCollapsedNodes rw 3POwner r -3PSelectionCount r -3PTopLvlCount r -3PTopLvlItems rw -#lcl.ComCtrls.TCustomTreeView #lcl.Controls.TCustomControl -1VFAccessibilityOn -1VFBackgroundColor -1VFBottomItem -1VFCallingOnChange -1VFEditingItem -1VFExpandSignType -1VFExpandSignSize -1VFDefItemHeight -1VFDragImage -1VFDragNode -1VFIndent -1VFImageChangeLink +3PItems rw +3MAssign +#lcl.ComCtrls.TCustomListViewEditor #lcl.StdCtrls.TCustomEdit +1VFItem +1MListViewEditorKeyDown +2MDoExit +3MCreate +3PItem rw +#lcl.ComCtrls.TCustomListView #lcl.Controls.TWinControl +1VFEditor +1VFAllocBy +1VFAutoSort +1VFAutoWidthLastColumn +1VFCanvas +1VFDefaultItemHeight +1VFHotTrackStyles +1VFIconOptions +1VFOnEdited +1VFOnEditing +1VFOwnerData +1VFOwnerDataItem +1VFListItems +1VFColumns 1VFImages -1VFInsertMarkNode -1VFInsertMarkType -1VFLastDropTarget -1VFLastHorzScrollInfo -1VFLastVertScrollInfo -1VFMaxLvl -1VFMaxRight -1VfMouseDownPos -1VFMultiSelectStyle -1VFOnAddition -1VFOnAdvancedCustomDraw -1VFOnAdvancedCustomDrawItem +1VFImageChangeLinks +1VFFlags +1VFShowEditorQueued +1VFSortDirection +1VFViewStyle +1VFSortType +1VFSortColumn +1VFScrollBars +1VFViewOriginCache +1VFSelected +1VFFocused +1VFSelectedIdx +1VFHoverTime +1VFUpdateCount 1VFOnChange -1VFOnChanging -1VFOnCollapsed -1VFOnCollapsing +1VFOnColumnClick 1VFOnCompare -1VFOnCreateNodeClass -1VFOnCustomCreateItem +1VFOnData +1VFOnDataFind +1VFOnDataHint +1VFOnDataStateChange +1VFOnDeletion +1VFOnInsert +1VFOnItemChecked +1VFOnSelectItem 1VFOnCustomDraw 1VFOnCustomDrawItem -1VFOnDeletion -1VFOnEditing -1VFOnEditingEnd -1VFOnEdited -1VFOnExpanded -1VFOnExpanding -1VFOnGetImageIndex -1VFOnGetSelectedIndex -1VFOnNodeChanged -1VFOnSelectionChanged -1VFOptions -1VFRClickNode -1VFSaveItems -1VFScrollBars -1VFScrolledLeft -1VFScrolledTop -1VFSelectedColor -1VFSelectedNode -1VFSelectionChangeEventLock -1VfSeparatorColor -1VFSortType -1VFStateChangeLink -1VFStateImages -1VFStates -1VFTopItem -1VFTreeLineColor -1VFTreeLinePenStyle -1VFExpandSignColor -1VFTreeNodes -1MCanvasChanged -1MGetAutoExpand -1MGetBottomItem +1VFOnCustomDrawSubItem +1VFOnAdvancedCustomDraw +1VFOnAdvancedCustomDrawItem +1VFOnAdvancedCustomDrawSubItem +1VFProperties +1MGetBoundingRect +1MGetColumnCount +1MGetColumnFromIndex 1MGetDropTarget -1MGetHideSelection -1MGetHotTrack -1MGetKeepCollapsedNodes -1MGetMultiSelect -1MGetReadOnly -1MGetRightClickSelect -1MGetRowSelect +1MGetFocused +1MGetImageList +1MGetHoverTime +1MGetItemIndex +1MGetProperty +1MGetSelCount 1MGetSelection -1MGetSelectionCount -1MGetSelections -1MGetShowButtons -1MGetShowLines -1MGetShowRoot -1MGetShowSeparators -1MGetToolTips 1MGetTopItem -1MImageListChange -1MOnChangeTimer -1MSetAutoExpand -1MSetBackgroundColor -1MSetBottomItem +1MGetViewOrigin +1MGetVisibleRowCount +1MResizeLastColumn +1MSetAllocBy +1MSetAutoWidthLastColumn +1MSetColumns 1MSetDefaultItemHeight -1MSetExpandSignType 1MSetDropTarget -1MSetHideSelection -1MSetHotTrack -1MSetIndent -1MSetImages -1MSetInsertMarkNode -1MSetInsertMarkType -1MSetKeepCollapsedNodes -1MSetMultiSelect -1MSetMultiSelectStyle -1MSetReadOnly -1MSetRightClickSelect -1MSetRowSelect +1MSetFocused +1MSetHotTrackStyles +1MSetHoverTime +1MSetIconOptions +1MSetImageList +1MSetItemIndex +1MSetItems +1MSetItemVisible +1MSetOwnerData +1MSetProperty 1MSetScrollBars -1MSetScrolledLeft -1MSetScrolledTop -1MSetSelectedColor 1MSetSelection -1MSetSeparatorColor -1MSetShowButton -1MSetShowLines -1MSetShowRoot -1MSetShowSeparators +1MSetShowEditorQueued +1MSetSortColumn +1MSetSortDirection 1MSetSortType -1MSetStateImages -1MSetToolTips -1MSetTreeLineColor -1MSetTreeNodes -1MSetTopItem -1MUpdateAllTops -1MUpdateBottomItem -1MUpdateExpandSignSize -1MUpdateMaxLvl -1MUpdateMaxRight -1MUpdateTopItem +1MSetViewOrigin +1MSetViewStyle +1MQueuedShowEditor 1MUpdateScrollbars -1MInternalSelectionChanged -2VFChangeTimer -2VFEditor +1MCNNotify +1MCNDrawItem +1MInvalidateSelected +1VFOnCreateItemClass +1VFOnDrawItem +1MHideEditor +1MShowEditor +1MWMHScroll +1MWMVScroll +1PShowEditorQueued rw +2MItemDeleted +2MItemInserted 2MWSRegisterClass 2MGetControlClassDefaultSize -2MAdded -2MEditorEditingDone -2MEditorKeyDown +2MInitializeWnd +2MFinalizeWnd +2MDestroyWnd 2MBeginAutoDrag -2MBeginEditing -2MDoDragMsg -2MCanChange -2MCanCollapse +2MCreateListItem +2MCreateListItems 2MCanEdit -2MCanExpand -2MCreateNode -2MCustomDraw -2MCustomDrawItem -2MGetDragImages -2MGetMaxLvl -2MGetMaxScrollLeft -2MGetMaxScrollTop -2MGetNodeAtY -2MGetNodeDrawAreaHeight -2MGetNodeDrawAreaWidth -2MIsCustomDrawn -2MIsNodeVisible -2MIsNodeHeightFullVisible -2MIsInsertMarkVisible 2MChange -2MCollapse -2MCreateWnd +2MColClick 2MDelete -2MDestroyWnd -2MDoEndDrag -2MDoMouseWheel -2MDoPaint -2MDoPaintNode -2MDoStartDrag -2MDragOver -2MEndEditing -2MEnsureNodeIsVisible -2MExpand -2MGetImageIndex -2MGetSelectedIndex -2MInitializeWnd -2MKeyDown +2MDoDeletion +2MDoInsert +2MDoItemChecked +2MDoSelectItem +2MDoSetBounds +2MDoEndEdit +2MInsertItem +2MImageChanged 2MLoaded -2MMouseDown -2MMouseMove -2MMouseUp -2MMouseLeave -2MNodeChanged 2MNotification -2MPaint -2MSetDragMode -2MSetOptions -2MUpdateDefaultItemHeight -2MUpdateInsertMark -2MDoSelectionChanged -2MWMHScroll -2MWMVScroll -2MWMLButtonDown -2MWMSetFocus -2MWMKillFocus -2MResize -2PEditingItem r -2PStates r -3MGetSelectedChildAccessibleObject -3MGetChildAccessibleObjectAtPos -3PAccessibilityOn rw -2PAutoExpand rw -2PBorderStyle +2MSort +2MIsCustomDrawn +2MCustomDraw +2MCustomDrawItem +2MCustomDrawSubItem +2MIntfCustomDraw +2MGetUpdateCount +2MDrawItem +2MDoGetOwnerData +2MDoOwnerDataHint +2MDoOwnerDataStateChange +2MDblClick +2MKeyDown +2PAllocBy rw +2PAutoSort rw +2PAutoWidthLastColumn rw +2PColumnClick rw +2PColumns rw +2PDefaultItemHeight rw 2PHideSelection rw -2PHotTrack rw -2PImages rw -2PIndent rw -2PMultiSelect rw -2POnAddition rw -2POnAdvancedCustomDraw rw -2POnAdvancedCustomDrawItem rw +2PHoverTime rw +2PLargeImages rw +2POwnerDraw rw +2PScrollBars rw +2PShowColumnHeaders rw +2PShowWorkAreas rw +2PSmallImages rw +2PSortType rw +2PSortColumn rw +2PSortDirection rw +2PStateImages rw +2PToolTips rw +2PViewStyle rw 2POnChange rw -2POnChanging rw -2POnCollapsed rw -2POnCollapsing rw +2POnColumnClick rw 2POnCompare rw -2POnCreateNodeClass rw -2POnCustomCreateItem rw -2POnCustomDraw rw -2POnCustomDrawItem rw +2POnCreateItemClass rw +2POnData rw +2POnDataFind rw +2POnDataHint rw +2POnDataStateChange rw 2POnDeletion rw 2POnEdited rw 2POnEditing rw -2POnEditingEnd rw -2POnExpanded rw -2POnExpanding rw -2POnGetImageIndex rw -2POnGetSelectedIndex rw -2POnNodeChanged rw -2POnSelectionChanged rw -2PReadOnly rw -2PRightClickSelect rw -2PRowSelect rw -2PScrolledLeft rw -2PScrolledTop rw -2PShowButtons rw -2PShowLines rw -2PShowRoot rw -2PShowSeparators rw -2PSortType rw -2PStateImages rw -2PToolTips rw +2POnInsert rw +2POnItemChecked rw +2POnSelectItem rw +2POnCustomDraw rw +2POnCustomDrawItem rw +2POnCustomDrawSubItem rw +2POnDrawItem rw +2POnAdvancedCustomDraw rw +2POnAdvancedCustomDrawItem rw +2POnAdvancedCustomDrawSubItem rw 3MCreate 3MDestroy +3MAddItem 3MAlphaSort -3MClearSelection -3MConsistencyCheck -3MCustomSort -3MDefaultTreeViewSort -3MEraseBackground -3MGetHitTestInfoAt -3MGetNodeAt -3MGetInsertMarkAt -3MSetInsertMark -3MSetInsertMarkAt -3MInvalidate -3MIsEditing 3MBeginUpdate +3MClear 3MEndUpdate -3MFullCollapse -3MFullExpand -3MLoadFromFile -3MLoadFromStream -3MSaveToFile -3MSaveToStream -3MWriteDebugReport -3MLockSelectionChangeEvent -3MUnlockSelectionChangeEvent -3MGetFirstMultiSelected -3MGetLastMultiSelected -3MSelect -3MSelectionVisible -3MMakeSelectionVisible -3MClearInvisibleSelection -3MStoreCurrentSelection -3MApplyStoredSelection -3MMoveToNextNode -3MMoveToPrevNode -3PBackgroundColor rw -3PBorderWidth -3PBottomItem rw -3PDefaultItemHeight rw +3MRepaint +3MFindCaption +3MFindData +3MGetHitTestInfoAt +3MGetItemAt +3MGetNearestItem +3MGetNextItem +3MClearSelection +3MSelectAll +3MIsEditing +3PBoundingRect r +3PBorderStyle +3PCanvas r +3PCheckboxes rw +3PColumn r +3PColumnCount r 3PDropTarget rw -3PExpandSignType rw -3PInsertMarkNode rw -3PInsertMarkType rw +3PFlatScrollBars rw +3PFullDrag rw +3PGridLines rw +3PHotTrack rw +3PHotTrackStyles rw +3PIconOptions rw +3PItemFocused rw +3PItemIndex rw 3PItems rw -3PKeepCollapsedNodes rw -3PMultiSelectStyle rw -3POptions rw -3PScrollBars rw +3PMultiSelect rw +3POwnerData rw +3PReadOnly rw +3PRowSelect rw +3PSelCount r 3PSelected rw -3PSelectionColor rw -3PSelectionCount r -3PSelections r -3PSeparatorColor rw -3PTopItem rw -3PTreeLineColor rw -3PTreeLinePenStyle rw -3PExpandSignColor rw -4PTabStop -#lcl.ComCtrls.TTreeView #lcl.ComCtrls.TCustomTreeView +3PLastSelected r +3PTabStop +3PTopItem r +3PViewOrigin rw +3PVisibleRowCount r +#lcl.ComCtrls.TListView #lcl.ComCtrls.TCustomListView 4PAlign +4PAllocBy 4PAnchors -4PAutoExpand +4PAutoSort +4PAutoWidthLastColumn rw 4PBorderSpacing -4PBackgroundColor 4PBorderStyle 4PBorderWidth +4PCheckboxes 4PColor +4PColumns +4PColumnClick 4PConstraints -4PDefaultItemHeight -4PDragKind 4PDragCursor +4PDragKind 4PDragMode 4PEnabled -4PExpandSignColor -4PExpandSignType 4PFont +4PGridLines 4PHideSelection -4PHotTrack -4PImages -4PIndent +4PIconOptions +4PItems +4PLargeImages 4PMultiSelect -4PMultiSelectStyle +4POwnerData +4POwnerDraw 4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu 4PReadOnly -4PRightClickSelect 4PRowSelect 4PScrollBars -4PSelectionColor -4PShowButtons +4PShowColumnHeaders 4PShowHint -4PShowLines -4PShowRoot +4PSmallImages +4PSortColumn +4PSortDirection 4PSortType 4PStateImages -4PTabOrder 4PTabStop -4PTag +4PTabOrder 4PToolTips 4PVisible -4POnAddition +4PViewStyle 4POnAdvancedCustomDraw 4POnAdvancedCustomDrawItem +4POnAdvancedCustomDrawSubItem 4POnChange -4POnChanging 4POnClick -4POnCollapsed -4POnCollapsing +4POnColumnClick 4POnCompare 4POnContextPopup -4POnCreateNodeClass -4POnCustomCreateItem +4POnCreateItemClass 4POnCustomDraw 4POnCustomDrawItem +4POnCustomDrawSubItem +4POnData +4POnDataFind +4POnDataHint +4POnDataStateChange 4POnDblClick 4POnDeletion 4POnDragDrop 4POnDragOver +4POnDrawItem 4POnEdited 4POnEditing -4POnEditingEnd +4POnEndDock 4POnEndDrag 4POnEnter 4POnExit -4POnExpanded -4POnExpanding -4POnGetImageIndex -4POnGetSelectedIndex +4POnInsert +4POnItemChecked 4POnKeyDown 4POnKeyPress 4POnKeyUp @@ -30606,157 +31291,445 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnNodeChanged -4POnSelectionChanged -4POnShowHint +4POnResize +4POnSelectItem +4POnStartDock 4POnStartDrag 4POnUTF8KeyPress -4POptions -4PItems -4PTreeLineColor -4PTreeLinePenStyle -#lcl.ComCtrls.TTreeNodeExpandedState #rtl.System.TObject -0VNodeText -0VChildren -0MCreate -0MDestroy -0MClear -0MCreateChildNodes -0MApply -#lcl.ComCtrls.THeaderSection #rtl.Classes.TCollectionItem -1VFAlignment +#lcl.ComCtrls.TCustomProgressBar #lcl.Controls.TWinControl +1VFMin +1VFMax +1VFStep +1VFPosition +1VFSmooth +1VFBarShowText +1VFBarTextFormat +1VFOrientation +1VFStyle +1MGetMin +1MGetMax +1MGetPosition +1MSetParams +1MSetMin +1MSetMax +1MSetPosition +1MSetStep +1MSetSmooth +1MSetBarShowText +1MSetOrientation +1MSetStyle +2MWSRegisterClass +2MApplyChanges +2MInitializeWnd +2MLoaded +2MGetControlClassDefaultSize +3MCreate +3MStepIt +3MStepBy +3PMax rw +3PMin rw +3POrientation rw +3PPosition rw +3PSmooth rw +3PStep rw +3PStyle rw +3PBarShowText rw +#lcl.ComCtrls.TProgressBar #lcl.ComCtrls.TCustomProgressBar +4PAlign +4PAnchors +4PBorderSpacing +4PBorderWidth +4PConstraints +4PDragCursor +4PDragKind +4PDragMode +4PEnabled +4PHint +4PMax +4PMin +4POnContextPopup +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnEnter +4POnExit +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnStartDock +4POnStartDrag +4POrientation +4PParentShowHint +4PPopupMenu +4PPosition +4PShowHint +4PSmooth +4PStep +4PStyle +4PTabOrder +4PTabStop +4PVisible +4PBarShowText +#lcl.ComCtrls.TCustomUpDown #lcl.Controls.TCustomControl +1VFAlignButton +1VFArrowKeys +1VFAssociate +1VFCanChangeDir +1VFCanChangePos +1VFIncrement +1VFMax +1VFMaxBtn +1VFMin +1VFMinBtn +1VFMouseDownBounds +1VFMouseTimerEvent +1VFOnChanging +1VFOnChangingEx +1VFOnClick +1VFOrientation +1VFPosition +1VFThousands +1VFWrap +1MGetPosition +1MBTimerExec +1MSetAlignButton +1MSetArrowKeys +1MSetAssociate +1MSetIncrement +1MSetMax +1MSetMin +1MSetOrientation +1MSetPosition +1MSetThousands +1MSetWrap +1MUpdateAlignButtonPos +1MUpdateOrientation +1MUpdateUpDownPositionText +2MWSRegisterClass +2MAssociateKeyDown +2MOnAssociateChangeBounds +2MOnAssociateChangeEnabled +2MOnAssociateChangeVisible +2MDoSetBounds +2MSetEnabled +2MGetControlClassDefaultSize +2MCalculatePreferredSize +2MCanChange +2MNotification +2MClick +2PAlignButton rw +2PArrowKeys rw +2PAssociate rw +2PIncrement rw +2PMax rw +2PMin rw +2POnChanging rw +2POnChangingEx rw +2POnClick rw +2POrientation rw +2PPosition rw +2PThousands rw +2PWrap rw +3MCreate +3MDestroy +#lcl.ComCtrls.TUpDown #lcl.ComCtrls.TCustomUpDown +4PAlignButton +4PAnchors +4PArrowKeys +4PAssociate +4PBorderSpacing +4PConstraints +4PEnabled +4PHint +4PIncrement +4PMax +4PMin +4POnChanging +4POnChangingEx +4POnClick +4POnContextPopup +4POnEnter +4POnExit +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POrientation +4PParentShowHint +4PPopupMenu +4PPosition +4PShowHint +4PTabOrder +4PTabStop +4PThousands +4PVisible +4PWrap +#lcl.ComCtrls.TToolButtonActionLink #lcl.Controls.TControlActionLink +2MAssignClient +2MSetChecked +2MSetImageIndex +3MIsCheckedLinked +3MIsImageIndexLinked +#lcl.ComCtrls.TToolButton #lcl.Controls.TGraphicControl +1VFAllowAllUp +1VFDown +1VFDropdownMenu +1VFGrouped 1VFImageIndex -1VFMinWidth -1VFMaxWidth -1VFState -1VFText -1VFVisible -1VFWidth -1VFOriginalIndex -1MGetWidth -1MGetLeft -1MGetRight -1MSetAlignment -1MSetMaxWidth -1MSetMinWidth -1MSetState -1MSetText -1MSetVisible -1MSetWidth +1VFIndeterminate +1VFMarked +1VFMenuItem +1VFMouseInControl +1VFShowCaption +1VFStyle +1VFToolButtonFlags +1VFUpdateCount +1VFWrap +1VFLastDropDownTick +1MGetGroupBounds +1MGetIndex +1MGetTextSize +1MIsCheckedStored +1MIsHeightStored +1MIsImageIndexStored +1MIsWidthStored +1MSetDown +1MSetDropdownMenu +1MSetGrouped 1MSetImageIndex -1MCheckConstraints -2MGetDisplayName +1MSetIndeterminate +1MSetMarked +1MSetMenuItem +1MSetShowCaption +1MSetStyle +1MSetWrap +1MSetMouseInControl +1MCMEnabledChanged +1MCMVisibleChanged +1MCMHitTest +2McDefSeparatorWidth +2McDefDividerWidth +2VFToolBar +2MWSRegisterClass +2MCopyPropertiesFromMenuItem +2MGetActionLinkClass +2MActionChange +2MAssignTo +2MBeginUpdate +2MEndUpdate +2MMouseDown +2MMouseUp +2MMouseEnter +2MMouseLeave +2MNotification +2MPaint +2MTextChanged +2MCalculatePreferredSize +2MGetControlClassDefaultSize +2MLoaded +2MRefreshControl +2MSetToolBar +2MUpdateControl +2MGetButtonDrawDetail +2MSetParent +2MUpdateVisibleToolbar +2MGroupAllUpAllowed +2MDialogChar +2MSetAutoSize +2MRealSetText 3MCreate -3MAssign -3PLeft r -3PRight r -3PState rw -4PAlignment rw -4PImageIndex rw -4PMaxWidth rw -4PMinWidth rw -4PText rw -4PWidth rw -4PVisible rw -4POriginalIndex r -#lcl.ComCtrls.THeaderSections #rtl.Classes.TCollection -1VFHeaderControl -1MGetItem -1MSetItem -2MGetOwner -2MUpdate +3MCheckMenuDropdown +3MClick +3MGetCurrentIcon +3MGetPreferredSize +3PIndex r +4PAction +4PAllowAllUp rw +4PAutoSize +4PCaption +4PDown rws +4PDragCursor +4PDragKind +4PDragMode +4PDropdownMenu rw +4PEnabled +4PGrouped rw +4PHeight s +4PImageIndex rws +4PIndeterminate rw +4PMarked rw +4PMenuItem rw +4POnClick +4POnContextPopup +4POnDragDrop +4POnDragOver +4POnEndDock +4POnEndDrag +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnStartDock +4POnStartDrag +4PParentShowHint +4PPopupMenu +4PShowCaption rw +4PShowHint +4PStyle rw +4PVisible +4PWidth s +4PWrap rw +#lcl.ComCtrls.TToolBarEnumerator #rtl.System.TObject +1VFToolBar +1VFPosition +1MGetCurrent 3MCreate -3MAdd -3MAddItem -3MInsert -3MDelete -3PItems rw -#lcl.ComCtrls.TCustomHeaderControl #lcl.Controls.TCustomControl -1VFDragReorder -1VFSections +3MMoveNext +3PCurrent r +#lcl.ComCtrls.TToolBar #lcl.Toolwin.TToolWindow +1VFOnPaint +1VFOnPaintButton +1VFButtonHeight +1VFRealizedButtonHeight +1VFRealizedButtonWidth +1VFButtons +1VFButtonWidth +1VFDisabledImageChangeLink +1VFDisabledImages +1VFDropDownWidth +1VFDropDownButton +1VFFlat +1VFHotImageChangeLink +1VFHotImages +1VFImageChangeLink 1VFImages -1VFPaintRect -1VFDown -1VFDownPoint -1VFTracking -1VFDragging -1VFEndDragSectionIndex -1VFSelectedSection -1VFMouseInControl -1VFSavedCursor -1VFOnSectionClick -1VFOnSectionResize -1VFOnSectionTrack -1VFOnSectionSeparatorDblClick -1VFOnSectionDrag -1VFOnSectionEndDrag -1VFOnCreateSectionClass -1MGetSectionFromOriginalIndex +1VFIndent +1VFList +1VFNewStyle +1VFRowCount +1VFShowCaptions +1VFCurrentMenu +1VFCurrentMenuAutoFree +1VFSrcMenu +1VFSrcMenuItem +1VFToolBarFlags +1VFWrapable +1MApplyFontForButtons +1MCloseCurrentMenu +1MGetButton +1MGetButtonCount +1MGetTransparent +1MSetButtonHeight +1MSetButtonWidth +1MSetDisabledImages +1MSetFlat +1MSetHotImages 1MSetImages -1MSetSections -1MUpdateSection -1MUpdateSections -2MCreateSection -2MCreateSections +1MSetIndent +1MSetList +1MSetShowCaptions +1MSetTransparent +1MSetWrapable +1MToolButtonDown +1MImageListChange +1MDisabledImageListChange +1MHotImageListChange +1MUpdateVisibleBar +1MMoveSubMenuItems +1MAddButton +1MRemoveButton +2McDefButtonWidth +2McDefButtonHeight +2VFPrevVertical +2MIsVertical +2MWSRegisterClass +2MAdjustClientRect +2MGetControlClassDefaultSize +2MDoAutoSize +2MCalculatePreferredSize +2MCheckMenuDropdown +2MClickButton +2MCreateWnd +2MControlsAligned +2MFindButtonFromAccel +2MFontChanged 2MLoaded 2MNotification -2MSectionClick -2MSectionResize -2MSectionTrack -2MSectionSeparatorDblClick -2MSectionEndDrag -2MSectionDrag -2MMouseEnter -2MMouseLeave -2MMouseDown -2MMouseMove -2MMouseUp -2MUpdateState -2MGetControlClassDefaultSize -3PSectionFromOriginalIndex r +2MPaint +2MRepositionButton +2MRepositionButtons +2MWrapButtons +2MCNDropDownClosed 3MCreate 3MDestroy -3MClick -3MDblClick -3MGetSectionAt -3MPaint -3MPaintSection -4PDragReorder rw -4PImages rw -4PSections rw -4POnSectionDrag rw -4POnSectionEndDrag rw -4POnSectionClick rw -4POnSectionResize rw -4POnSectionTrack rw -4POnSectionSeparatorDblClick rw -4POnCreateSectionClass rw -#lcl.ComCtrls.THeaderControl #lcl.ComCtrls.TCustomHeaderControl +3MEndUpdate +3MFlipChildren +3MGetEnumerator +3MSetButtonSize +3MCanFocus +3PButtonCount r +3PButtons r +3PButtonList r +3PRowCount r 4PAlign 4PAnchors -4PBiDiMode -4PBorderWidth +4PAutoSize 4PBorderSpacing +4PBorderWidth +4PButtonHeight rw +4PButtonWidth rw +4PCaption +4PChildSizing +4PConstraints +4PColor +4PDisabledImages rw 4PDragCursor 4PDragKind 4PDragMode +4PEdgeBorders +4PEdgeInner +4PEdgeOuter 4PEnabled +4PFlat rw 4PFont -4PImages -4PConstraints -4PSections -4PShowHint -4PParentBiDiMode +4PHeight +4PHotImages rw +4PImages rw +4PIndent rw +4PList rw +4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu +4PShowCaptions rw +4PShowHint +4PTabOrder +4PTabStop +4PTransparent rw 4PVisible +4PWrapable rw +4POnClick 4POnContextPopup -4POnCreateSectionClass +4POnDblClick 4POnDragDrop 4POnDragOver -4POnEndDock +4POnPaintButton rw 4POnEndDrag +4POnEnter +4POnExit 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -30765,1533 +31738,1012 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPaint rw 4POnResize -4POnSectionClick -4POnSectionResize -4POnSectionTrack -#lcl.Toolwin.TToolWindow #lcl.Controls.TCustomControl -1VFEdgeBorders -1VFEdgeInner -1VFEdgeOuter -1MSetEdgeBorders -1MSetEdgeInner -1MSetEdgeOuter -2VFUpdateCount -2MAdjustClientRect -2MPaint -3MCreate -3MBeginUpdate -3MEndUpdate -3PEdgeBorders rw -3PEdgeInner rw -3PEdgeOuter rw -#lcl.LazHelpIntf.THelpQueryItem #rtl.System.TObject -3MAsString -3MIsEqual -#lcl.LazHelpIntf.TPascalHelpContextList #lcl.LazHelpIntf.THelpQueryItem -1VFCount -1VfItems -1MGetItems -3MAdd -3MInsert -3MClear -3MDestroy -3MIsEqual -3MCompareList -3MAsString -3PCount r -3PItems r -3PList r -#lcl.LazHelpIntf.THelpNode #rtl.Classes.TPersistent -1VFContext -1VFURL -1VFHelpType -1VfID -1VFOwner -1VFTitle -3MCreate -3MCreateURL -3MCreateID -3MCreateURLID -3MCreateContext -3MCreateURLContext -3POwner rw -3MURLValid -3MIDValid -3MContextValid -3MAsString -3MAssign -4PTitle rw -4PHelpType rw -4PURL rw -4PID rw -4PContext rw -#lcl.LazHelpIntf.THelpNodeQuery #rtl.System.TObject -1VFNode -1VFQueryItem -3MCreate -3MIsEqual -3MAsString -3PNode rw -3PQueryItem rw -#lcl.LazHelpIntf.THelpNodeQueryList #rtl.System.TObject -1VfItems -1MGetItems -1MSetItems -3MCreate -3MDestroy -3MCount -3MAdd -3MDelete -3MIndexOf -3MClear -3PItems rw -#lcl.LazHelpIntf.THelpDBItem #rtl.Classes.TPersistent -1VFNode -3MCreate -3MDestroy -4PNode rw -#lcl.LazHelpIntf.THelpDBISourceFile #lcl.LazHelpIntf.THelpDBItem -1VFBasePathObject -1VFFilename -1MSetFilename -3MCreate -3MFileMatches -3MGetFullFilename -3MGetBasePath -4PBasePathObject rw -4PFilename rw -#lcl.LazHelpIntf.THelpDBISourceDirectory #lcl.LazHelpIntf.THelpDBISourceFile -1VFFileMask -1VFWithSubDirectories -3MCreate -3MFileMatches -4PFileMask rw -4PWithSubDirectories rw -#lcl.LazHelpIntf.THelpDBISourceDirectories #lcl.LazHelpIntf.THelpDBISourceDirectory -1VFBaseDirectory -3MCreate -3MFileMatches -3MGetFullFilename -3MGetBasePath -4PBaseDirectory rw -#lcl.LazHelpIntf.THelpDBIClass #lcl.LazHelpIntf.THelpDBItem -1VFTheClass -3PTheClass rw -#lcl.LazHelpIntf.THelpDBIMessage #lcl.LazHelpIntf.THelpDBItem -3MMessageMatches -#lcl.LazHelpIntf.THelpQueryNode #lcl.HelpIntfs.THelpQuery -1VFNode -3MCreate -3PNode rw -#lcl.LazHelpIntf.THelpDatabase #rtl.Classes.TComponent -1VFAutoRegister -1VFBasePathObject -1VFID -1VFDatabases -1VFOnFindViewer -1VFRefCount -1VFSearchItems -1VFSupportedMimeTypes -1VFTOCNode -1MSetAutoRegister -1MSetID -1MSetDatabases -2MSetSupportedMimeTypes -2MAddSupportedMimeType -3MCreate -3MDestroy -3MReference -3MRegisterSelf -3MRelease -3MUnregisterSelf -3MRegistered -3MCanShowTableOfContents -3MShowTableOfContents -3MShowError -3MShowHelp -3MShowHelpFile -3MSupportsMimeType -3MGetNodesForKeyword -3MGetNodesForDirective -3MGetNodesForContext -3MGetNodesForPascalContexts -3MGetNodesForClass -3MGetNodesForMessage -3MFindViewer -3MRegisterItem -3MRegisterItemWithNode -3MRegisterFileItemWithNode -3MUnregisterItem -3MUnregisterAllItems -3MRegisteredItemCount -3MGetRegisteredItem -3MLoad -3MSave -3MGetLocalizedName -3PDatabases rw -3PID rw -3PSupportedMimeTypes r -3PBasePathObject rw -3PTOCNode rw -3PAutoRegister rw -3POnFindViewer rw -#lcl.LazHelpIntf.THelpDatabases #lcl.HelpIntfs.THelpManager -1VFItems -1VFHelpDBClasses -1MGetItems -1MDoRegisterDatabase -1MDoUnregisterDatabase -3MCreate -3MDestroy -3MCount -3PItems r -3MFindDatabase -3MGetDatabase -3MIndexOf -3MCreateUniqueDatabaseID -3MCreateHelpDatabase -3MShowTableOfContents -3MShowError -3MGetBaseURLForBasePathObject -3MGetBaseDirectoryForBasePathObject -3MFindViewer -3MSubstituteMacros -3MShowHelpForNodes -3MShowHelpForQuery -3MShowHelpForContext -3MShowHelpForKeyword -3MShowHelpForDirective -3MShowHelpForPascalContexts -3MShowHelpForSourcePosition -3MShowHelpForMessageLine -3MShowHelpForClass -3MShowHelpFile -3MShowHelp -3MGetNodesForKeyword -3MGetNodesForDirective -3MGetNodesForContext -3MGetNodesForPascalContexts -3MGetNodesForClass -3MGetNodesForMessage -3MShowHelpSelector -3MRegisterHelpDatabaseClass -3MUnregisterHelpDatabaseClass -3MHelpDatabaseClassCount -3MGetHelpDatabaseClass -3MLoad -3MSave -#lcl.LazHelpIntf.THelpViewer #rtl.Classes.TComponent -1VFAutoRegister -1VFParameterHelp -1VFStorageName -1VFSupportedMimeTypes -1MSetAutoRegister -2MSetSupportedMimeTypes -2MAddSupportedMimeType -3MCreate -3MDestroy -3MSupportsTableOfContents -3MShowTableOfContents -3MSupportsMimeType -3MShowNode -3MHide -3MAssign -3MLoad -3MSave -3MGetLocalizedName -3MRegisterSelf -3MUnregisterSelf -3PSupportedMimeTypes r -3PParameterHelp rw -3PStorageName rw -3PAutoRegister rw -#lcl.LazHelpIntf.THelpViewers #rtl.System.TObject -1VFItems -1VFDestroying -1MGetItems -3MCreate -3MDestroy -3MClear -3MCount -3MGetViewersSupportingMimeType -3MRegisterViewer -3MUnregisterViewer -3MLoad -3MSave -3MIndexOf -3PItems r -#lcl.LazHelpIntf.THelpBasePathObject #rtl.Classes.TPersistent -1VFBasePath -2MSetBasePath -3MCreate -3PBasePath rw -#lcl.LazHelpIntf.THelpBaseURLObject #rtl.Classes.TPersistent -1VFBaseURL -2MSetBaseURL -3MCreate -3PBaseURL rw -#lcl.Printers.EPrinter #rtl.sysutils.Exception -#lcl.Printers.TPrinterCanvas #lcl.Graphics.TCanvas -1VfPrinter -1VfTitle -1VfPageNum -1VfTopMargin -1VfLeftMargin -1VfBottomMargin -1VfRightMargin -1VfPaperWidth -1VfPaperHeight -1VfOrientation -1VfXDPI -1VfYDPI -1MGetOrientation -1MGetPageHeight -1MGetPageWidth -1MGetPaperHeight -1MGetPaperWidth -1MGetTitle -1MGetXDPI -1MGetYDPI -1MSetOrientation -1MSetPaperHeight -1MSetPaperWidth -1MSetTitle -1MHasDefaultMargins -1MSetXDPI -1MSetYDPI -2MBeginDoc -2MNewPage -2MEndDoc -2MGetLeftMargin -2MGetTopMargin -2MGetBottomMargin -2MGetRightMargin -3MCreate -3MChanging -3PPrinter r -3PTitle rw -3PPageHeight r -3PPageWidth r -3PPaperWidth rw -3PPaperHeight rw -3PPageNumber r -3PTopMargin rw -3PLeftMargin rw -3PBottomMargin rw -3PRightMargin rw -3POrientation rw -3PXDPI rw -3PYDPI rw -#lcl.Printers.TFilePrinterCanvas #lcl.Printers.TPrinterCanvas -2VFOutputFileName -3POutputFileName rw -#lcl.Printers.TPaperSize #rtl.System.TObject -1VfOwnedPrinter -1VfSupportedPapers -1VfLastPrinterIndex -1MGetDefaultPaperName -1MGetPhysPaperHeight -1MGetPaperName -1MGetPaperRect -1MGetPhysPaperWidth -1MGetSupportedPapers -1MSetPaperName -1MPaperRectOfName -1MCheckSupportedPapers -1VfInternalPapers -1VfDefaultPapers -1VfDefaultPaperIndex -1MCreateInternalPapers -1MFillDefaultPapers -1MGetDefaultPaperRect -1MIndexOfDefaultPaper +4POnChangeBounds +4POnStartDrag +#lcl.ComCtrls.TCoolBand #rtl.Classes.TCollectionItem +1VFCoolBar +1VFControl +1VFBitmap +1VFBorderStyle +1VFBreak +1VFColor +1VFFixedBackground +1VFFixedSize +1VFHeight +1VFHorizontalOnly +1VFImageIndex +1VFMinHeight +1VFMinWidth +1VFParentBitmap +1VFParentColor +1VFRealLeft +1VFRealWidth +1VFText +1VFVisible +1VFWidth +1VFLeft +1VFTop +1MIsBitmapStored +1MIsColorStored +1MGetRight +1MGetVisible +1MSetBitmap +1MSetBorderStyle +1MSetBreak +1MSetColor +1MSetControl +1MSetFixedBackground +1MSetHorizontalOnly +1MSetImageIndex +1MSetMinHeight +1MSetMinWidth +1MSetParentBitmap +1MSetParentColor +1MSetText +1MSetVisible +1MSetWidth +2McDefMinHeight +2McDefMinWidth +2McDefWidth +2McDivider +2McGrabIndent +2VFControlLeft +2VFControlTop +2VFTextWidth +2MCalcControlLeft +2MCalcPreferredHeight +2MCalcPreferredWidth +2MCalcTextWidth +2MGetDisplayName 3MCreate 3MDestroy -3PDefaultPapers r -3PWidth r +3MAssign +3MAutosizeWidth +3MInvalidateCoolBar 3PHeight r -3PPaperName rw -3PDefaultPaperName r -3PPaperRect r -3PSupportedPapers r -3PPaperRectOf r -#lcl.Printers.TPrinter #rtl.System.TObject -1VfCanvas -1VFFileName -1VfFonts -1VfPageNumber -1VfPrinters -1VfPrinterIndex -1VfTitle -1VfPaperSize -1VfCanvasClass -1VfBins -1VfFlags -1MGetAborted -1MGetCanvas -1MCheckPrinting -1MGetCanvasClass -1MGetCopies -1MGetFonts -1MGetOrientation -1MGetPageHeight -1MGetPageWidth -1MGetPaperSize -1MGetBinName -1MGetDefaultBinName -1MGetPrinterIndex -1MGetPrinterName -1MGetPrinters -1MGetPrinting -1MGetRawMode -1MSetCanvasClass -1MSetCopies -1MSetOrientation -1MSetPrinterIndex -1MSetRawMode -1MSetBinName -2MSelectCurrentPrinterOrDefault -2MDoBeginDoc -2MDoNewPage -2MDoEndDoc -2MDoAbort -2MDoResetPrintersList -2MDoResetFontsList -2MDoEnumPrinters -2MDoEnumFonts -2MDoEnumPapers -2MDoEnumBins -2MDoInitialization -2MDoSetPrinter -2MDoGetCopies -2MDoSetCopies -2MDoGetOrientation -2MDoSetOrientation -2MDoGetDefaultPaperName -2MDoGetPaperName -2MDoSetPaperName -2MDoGetDefaultBinName -2MDoGetBinName -2MDoSetBinName -2MDoGetPaperRect -2MDoGetPrinterState -2MDoDestroy -2MGetPrinterType -2MGetCanPrint -2MGetCanRenderCopies -2MGetXDPI -2MGetYDPI -2MGetBins -2MCheckRawMode -2MRawModeChanging -2MPrinterSelected -2MDoGetDefaultCanvasClass -2PPrinterFlags rw +3PLeft r +3PRight r +3PTop r +4PBitmap rws +4PBorderStyle rw +4PBreak rw +4PColor rws +4PControl rw +4PFixedBackground rw +4PFixedSize rw +4PHorizontalOnly rw +4PImageIndex rw +4PMinHeight rw +4PMinWidth rw +4PParentColor rw +4PParentBitmap rw +4PText rw +4PVisible rw +4PWidth rw +#lcl.ComCtrls.TCoolBands #rtl.Classes.TCollection +1VFCoolBar +1MGetItem +1MSetItem +2MGetOwner +2MUpdate +2MNotify 3MCreate -3MDestroy -3MAbort -3MBeginDoc -3MEndDoc -3MNewPage -3MRefresh -3MSetPrinter -3MRestoreDefaultBin -3MWrite -3PPrinterIndex rw -3PPrinterName r -3PPaperSize r -3POrientation rw -3PPrinterState r -3PCopies rw -3PPrinters r -3PFileName rw -3PFonts r -3PCanvas r -3PCanvasClass rw -3PPageHeight r -3PPageWidth r -3PPageNumber r -3PAborted r -3PPrinting r -3PTitle rw -3PPrinterType r -3PCanPrint r -3PCanRenderCopies r -3PXDPI r -3PYDPI r -3PRawMode rw -3PDefaultBinName r -3PBinName rw -3PSupportedBins r -#lcl.Grids.EGridException #rtl.sysutils.Exception -#lcl.Grids.TStringCellEditor #lcl.MaskEdit.TCustomMaskEdit -1VFGrid -1VFCol -1VFRow -2MWndProc -2MChange -2MKeyDown -2Mmsg_SetMask -2Mmsg_SetValue -2Mmsg_GetValue -2Mmsg_SetGrid -2Mmsg_SelectAll -2Mmsg_SetPos -2Mmsg_GetGrid +3MAdd +3MFindBand +3PItems rw +#lcl.ComCtrls.TCustomCoolBar #lcl.Toolwin.TToolWindow +1VFBands +1VFBandBorderStyle +1VFBandMaximize +1VFBitmap +1VFFixedSize +1VFFixedOrder +1VFGrabStyle +1VFGrabWidth +1VFHorizontalSpacing +1VFImages +1VFImageChangeLink +1VFOnChange +1VFShowText +1VFVertical +1VFVerticalSpacing +1MGetAlign +1MRowEndHelper +1MSetBandBorderStyle +1MSetBands +1MSetBitmap +1MSetGrabStyle +1MSetGrabWidth +1MSetHorizontalSpacing +1MSetImages +1MSetShowText +1MSetVertical +1MSetVerticalSpacing +2McDefGrabStyle +2McDefGrabWidth +2McDefHorSpacing +2McDefVertSpacing +2McNewRowBelow +2McNewRowAbove +2VFBorderEdges +2VFBorderLeft +2VFBorderTop +2VFBorderRight +2VFBorderBottom +2VFBorderWidth +2VFCursorBkgnd +2VFDragBand +2VFDraggedBandIndex +2VFDragInitPos +2VFLockCursor +2VFRightToLeft +2VFTextHeight +2VFVisiBands +2MAlignControls +2MBitmapOrImageListChange +2MCalculatePreferredSize +2MCalculateAndAlign +2MCalculateRealIndex +2MChangeCursor +2MCMBiDiModeChanged +2MCreateWnd +2MDoFontChanged +2MDrawTiledBitmap +2MFontChanged +2MIsFirstAtRow +2MIsRowEnd +2MMouseDown +2MMouseMove +2MMouseUp +2MNotification +2MPaint +2MSetAlign +2MSetAutoSize +2MSetCursor +2MWMSize 3MCreate -3MEditingDone -3PEditText -3POnEditingDone -#lcl.Grids.TButtonCellEditor #lcl.StdCtrls.TButton -1VFGrid -1VFCol -1VFRow -2Mmsg_SetGrid -2Mmsg_SetBounds -2Mmsg_SetPos -2Mmsg_Ready -2Mmsg_GetGrid -3PCol r -3PRow r -#lcl.Grids.TPickListCellEditor #lcl.StdCtrls.TCustomComboBox -1VFGrid -1VFCol -1VFRow -2MWndProc -2MKeyDown -2MDropDown -2MCloseUp -2MSelect -2MChange -2Mmsg_GetValue -2Mmsg_SetGrid -2Mmsg_SetValue -2Mmsg_SetPos -2Mmsg_GetGrid -3MEditingDone -3PBorderStyle -3POnEditingDone -#lcl.Grids.TCompositeCellEditor #lcl.Controls.TWinControl -1VFGrid -1VFCol -1VFRow -1VFEditors -1MDispatchMsg -1MGetMaxLength -1MSetMaxLength -2MDoUTF8KeyPress -2Mmsg_GetValue -2Mmsg_SetGrid -2Mmsg_SetValue -2Mmsg_SetBounds -2Mmsg_SetMask -2Mmsg_SelectAll -2MCMControlChange -2Mmsg_SetPos -2Mmsg_GetGrid -2MGetActiveControl -2MVisibleChanging -2MSendChar -2MWndProc 3MDestroy -3MAddEditor -3MSetFocus -3MFocused -3PMaxLength rw -3PActiveControl r -#lcl.Grids.TVirtualGrid #rtl.System.TObject -1VFColCount -1VFRowCount -1VFCells -1VFCols -1VFRows -1MGetCells -1MGetrows -1MGetcols -1MSetCells -1MSetrows -1MSetcolcount -1MSetrowcount -1MSetcols -2MdoDestroyItem -2MdoNewItem -2MDeleteColRow -2MMoveColRow -2MExchangeColRow -2MInsertColRow -2MDisposeCell -2MDisposeColRow +3MAutosizeBands +3MEndUpdate +3MInvalidate +3MInsertControl +3MMouseToBandPos +3MRemoveControl +3PAlign rw +3PBandBorderStyle rw +3PBandMaximize rw +3PBands rw +3PBitmap rw +3PFixedSize rw +3PFixedOrder rw +3PGrabStyle rw +3PGrabWidth rw +3PHorizontalSpacing rw +3PImages rw +3PShowText rw +3PVertical rw +3PVerticalSpacing rw +3POnChange rw +#lcl.ComCtrls.TCoolBar #lcl.ComCtrls.TCustomCoolBar +4PAlign +4PAnchors +4PAutoSize +4PBandBorderStyle +4PBandMaximize +4PBands +4PBiDiMode +4PBorderWidth +4PColor +4PConstraints +4PDockSite +4PDragCursor +4PDragKind +4PDragMode +4PEdgeBorders +4PEdgeInner +4PEdgeOuter +4PEnabled +4PFixedSize +4PFixedOrder +4PFont +4PGrabStyle +4PGrabWidth +4PHorizontalSpacing +4PImages +4PParentColor +4PParentFont +4PParentShowHint +4PBitmap +4PPopupMenu +4PShowHint +4PShowText +4PVertical +4PVerticalSpacing +4PVisible +4POnChange +4POnClick +4POnContextPopup +4POnDblClick +4POnDockDrop +4POnDockOver +4POnDragDrop +4POnDragOver +4POnEndDock +4POnEndDrag +4POnGetSiteInfo +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnStartDock +4POnStartDrag +4POnUnDock +#lcl.ComCtrls.TCustomTrackBar #lcl.Controls.TWinControl +1VFOrientation +1VFReversed +1VFSelEnd +1VFSelStart +1VFShowSelRange +1VFTickMarks +1VFTickStyle +1VFLineSize +1VFPageSize +1VFMin +1VFMax +1VFFrequency +1VFPosition +1VFScalePos +1VFScaleDigits +1VFOnChange +1MSetFrequency +1MSetLineSize +1MSetMax +1MSetMin +1MSetOrientation +1MSetPageSize +1MSetParams +1MSetPosition +1MSetReversed +1MSetScalePos +1MSetSelEnd +1MSetSelStart +1MSetShowSelRange +1MSetTickMarks +1MSetTickStyle +1MUpdateSelection +2MWSRegisterClass +2MApplyChanges +2MChanged +2MDoChange +2MFixParams +2MGetControlClassDefaultSize +2MInitializeWnd +2MLoaded 3MCreate -3MDestroy -3MClear -3MGetDefaultCell -3MGetDefaultColRow -3PColCount rw -3PRowCount rw -3PCelda rw -3PCols rw -3PRows rw -#lcl.Grids.TGridColumnTitle #rtl.Classes.TPersistent -1VFColumn -1VFCaption -1VFColor -1VFAlignment -1VFFont +3MSetTick +4PFrequency rw +4PLineSize rw +4PMax rw +4PMin rw +4POnChange rw +4POrientation rw +4PPageSize rw +4PPosition rw +4PReversed rw +4PScalePos rw +4PSelEnd rw +4PSelStart rw +4PShowSelRange rw +4PTabStop +4PTickMarks rw +4PTickStyle rw +#lcl.ComCtrls.TTrackBar #lcl.ComCtrls.TCustomTrackBar +4PAlign +4PAnchors +4PBorderSpacing +4PConstraints +4PDragCursor +4PDragMode +4PEnabled +4PFrequency +4PHint +4PLineSize +4PMax +4PMin +4POnChange +4POnChangeBounds +4POnClick +4POnContextPopup +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnEnter +4POnExit +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnResize +4POnStartDrag +4POnUTF8KeyPress +4POrientation +4PPageSize +4PParentShowHint +4PPopupMenu +4PPosition +4PReversed +4PScalePos +4PSelEnd +4PSelStart +4PShowHint +4PShowSelRange +4PTabOrder +4PTabStop +4PTickMarks +4PTickStyle +4PVisible +#lcl.ComCtrls.ETreeNodeError #rtl.sysutils.Exception +#lcl.ComCtrls.ETreeViewError #lcl.ComCtrls.ETreeNodeError +#lcl.ComCtrls.TTreeNode #rtl.Classes.TPersistent +1VFOwner +1VFCapacity +1VFCount +1VFData +1VFHeight +1VFNodeEffect 1VFImageIndex -1VFOldImageIndex -1VFImageLayout -1VFIsDefaultTitleFont -1VFLayout -1VFPrefixOption -1VFMultiline -1MFontChanged -1MGetAlignment -1MGetCaption -1MGetColor -1MGetFont -1MGetLayout -1MIsAlignmentStored -1MIsCaptionStored -1MIsColorStored -1MIsFontStored -1MIsLayoutStored -1MSetAlignment -1MSetColor -1MSetFont -1MSetImageIndex -1MSetImageLayout -1MSetLayout -1MSetMultiLine -1MSetPrefixOption -1PIsDefaultFont r -2MGetDefaultCaption -2MGetDefaultAlignment -2MGetDefaultColor -2MGetDefaultLayout -2MGetOwner -2MSetCaption -3MCreate -3MDestroy -3MAssign -3MFillTitleDefaultFont -3MIsDefault -3PColumn r -4PAlignment rws -4PCaption rws -4PColor rws -4PFont rws -4PImageIndex rw -4PImageLayout rw -4PLayout rws -4PMultiLine rw -4PPrefixOption rw -#lcl.Grids.TGridColumn #rtl.Classes.TCollectionItem -1VFButtonStyle -1VFDropDownRows -1VFTitle -1VFWidthChanged -1VFAlignment -1VFColor -1VFLayout +1VFIndex +1VFItems +1VFNextBrother +1VFNextMultiSelected +1VFOverlayIndex +1VFParent +1VFPrevBrother +1VFPrevMultiSelected +1VFSelectedIndex +1VFStateIndex +1VFStates +1VFSubTreeCount +1VFText +1VFTop 1VFVisible -1VFReadOnly -1VFWidth -1VFFont -1VFisDefaultFont -1VFPickList -1VFMinSize -1VFMaxSize -1VFSizePriority -1VFValueChecked -1VFValueUnchecked -1VFTag -1MFontChanged -1MGetAlignment -1MGetColor +1MAreParentsExpandedAndVisible +1MBindToMultiSelected +1MCompareCount +1MDoCanExpand +1MDoExpand +1MExpandItem +1MGetAbsoluteIndex +1MGetDeleting +1MGetHasChildren +1MGetCount +1MGetCut +1MGetDropTarget 1MGetExpanded -1MGetFont -1MGetGrid -1MGetLayout -1MGetMaxSize -1MGetMinSize -1MGetSizePriority -1MGetReadOnly -1MGetVisible -1MGetWidth -1MIsAlignmentStored -1MIsColorStored -1MIsFontStored -1MIsLayoutStored -1MIsMinSizeStored -1MIsMaxSizeStored -1MIsReadOnlyStored -1MIsSizePriorityStored -1MIsValueCheckedStored -1MIsValueUncheckedStored -1MIsVisibleStored -1MIsWidthStored -1MSetAlignment -1MSetButtonStyle -1MSetColor +1MGetFocused +1MGetHeight +1MGetIndex +1MGetItems +1MGetLevel +1MGetMultiSelected +1MGetSelected +1MGetState +1MGetTreeNodes +1MGetTreeView +1MGetTop +1MInternalMove +1MIsEqual +1MIsNodeVisible +1MIsNodeHeightFullVisible +1MReadData +1MReadDelphiData +1MSetCut +1MSetData +1MSetDropTarget 1MSetExpanded -1MSetFont -1MSetLayout -1MSetMaxSize -1MSetMinSize -1MSetPickList -1MSetReadOnly -1MSetSizePriority -1MSetTitle -1MSetValueChecked -1MSetValueUnchecked +1MSetFocused +1MSetHasChildren +1MSetHeight +1MSetImageEffect +1MSetImageIndex +1MSetIndex +1MSetItems +1MSetMultiSelected +1MSetOverlayIndex +1MSetSelected +1MSetSelectedIndex +1MSetStateIndex +1MSetText 1MSetVisible -1MSetWidth -2MGetDisplayName -2MGetDefaultAlignment -2MGetDefaultColor -2MGetDefaultLayout -2MGetDefaultMaxSize -2MGetDefaultMinSize -2MGetDefaultReadOnly -2MGetDefaultSizePriority -2MGetDefaultVisible -2MGetDefaultValueChecked -2MGetDefaultValueUnchecked -2MGetDefaultWidth -2MGetPickList -2MGetValueChecked -2MGetValueUnchecked -2MColumnChanged -2MAllColumnsChange -2MCreateTitle -2MSetIndex -2PIsDefaultFont r +1MUnbind +1MUnbindFromMultiSelected +1MWriteData +1MWriteDelphiData +2MChanged +2MGetOwner 3MCreate 3MDestroy +3MAlphaSort +3MBottom +3MBottomExpanded +3MCustomSort +3MDefaultTreeViewSort +3MDisplayExpandSignLeft +3MDisplayExpandSignRect +3MDisplayExpandSignRight +3MDisplayIconLeft +3MDisplayRect +3MDisplayStateIconLeft +3MDisplayTextLeft +3MDisplayTextRight +3MEditText +3MFindNode +3MGetFirstChild +3MGetFirstVisibleChild +3MGetHandle +3MGetLastChild +3MGetLastSibling +3MGetLastSubChild +3MGetLastVisibleChild +3MGetNext +3MGetNextChild +3MGetNextExpanded +3MGetNextMultiSelected +3MGetNextSibling +3MGetNextSkipChildren +3MGetNextVisible +3MGetNextVisibleSibling +3MGetParentNodeOfAbsoluteLevel +3MGetPrev +3MGetPrevChild +3MGetPrevExpanded +3MGetPrevMultiSelected +3MGetPrevSibling +3MGetPrevVisible +3MGetPrevVisibleSibling +3MGetTextPath +3MHasAsParent +3MIndexOf +3MIndexOfText 3MAssign -3MFillDefaultFont -3MIsDefault -3PGrid r -3PWidthChanged r -4PAlignment rws -4PButtonStyle rw -4PColor rws -4PDropDownRows rw -4PExpanded rw -4PFont rws -4PLayout rws -4PMinSize rws -4PMaxSize rws -4PPickList rw -4PReadOnly rws -4PSizePriority rws -4PTag rw -4PTitle rw -4PWidth rws -4PVisible rws -4PValueChecked rws -4PValueUnchecked rws -#lcl.Grids.TGridColumns #rtl.Classes.TCollection -1VFGrid -1MGetColumn -1MGetEnabled -1MSetColumn -1MGetVisibleCount +3MCollapse +3MConsistencyCheck +3MDelete +3MDeleteChildren +3MEndEdit +3MExpand +3MExpandParents +3MFreeAllNodeData +3MMakeVisible +3MMoveTo +3MMultiSelectGroup +3MUpdate +3MWriteDebugReport +3PAbsoluteIndex r +3PCount r +3PCut rw +3PData rw +3PDeleting r +3PDropTarget rw +3PExpanded rw +3PFocused rw +3PHandle r +3PHasChildren rw +3PHeight rw +3PImageIndex rw +3PIndex rw +3PIsFullHeightVisible r +3PIsVisible r +3PItems rw +3PLevel r +3PMultiSelected rw +3PNodeEffect rw +3POverlayIndex rw +3POwner r +3PParent r +3PSelected rw +3PSelectedIndex rw +3PStateIndex rw +3PStates r +3PSubTreeCount r +3PText rw +3PTop r +3PTreeNodes r +3PTreeView r +3PVisible rw +#lcl.ComCtrls.TTreeNodesEnumerator #rtl.System.TObject +1VFNodes +1VFPosition +1MGetCurrent +3MCreate +3MMoveNext +3PCurrent r +#lcl.ComCtrls.TTreeNodes #rtl.Classes.TPersistent +1VFCount +1VFSelection +1VFStartMultiSelected +1VFFirstMultiSelected +1VFLastMultiSelected +1VFKeepCollapsedNodes +1VFNodeCache +1VFOwner +1VFTopLvlCapacity +1VFTopLvlCount +1VFTopLvlItems +1VFUpdateCount +1VfNewNodeToBeAdded +1MClearCache +1MGetHandle +1MGetNodeFromIndex +1MGetSelectionCount +1MGetTopLvlItems +1MGrowTopLvlItems +1MIndexOfTopLvlItem +1MMoveTopLvlNode +1MReadData +1MReadExpandedState +1MRepaint +1MShrinkTopLvlItems +1MSetTopLvlItems +1MWriteData +1MWriteExpandedState +2MInternalAddObject +2MDefineProperties +2MGetCount 2MGetOwner -2MUpdate -2MTitleFontChanged -2MFontChanged -2MRemoveColumn -2MMoveColumn -2MExchangeColumn -2MInsertColumn +2MSetItem +2MSetUpdateState 3MCreate +3MDestroy 3MAdd +3MAddChild +3MAddChildFirst +3MAddChildObject +3MAddChildObjectFirst +3MAddFirst +3MAddNode +3MAddObject +3MAddObjectFirst +3MFindNodeWithData +3MFindNodeWithText +3MFindNodeWithTextPath +3MFindTopLvlNode +3MGetEnumerator +3MGetFirstNode +3MGetFirstVisibleNode +3MGetLastExpandedSubNode +3MGetLastNode +3MGetLastSubNode +3MGetLastVisibleNode +3MGetSelections +3MInsert +3MInsertBehind +3MInsertObject +3MInsertObjectBehind +3MIsMultiSelection +3MAssign +3MBeginUpdate 3MClear -3MRealIndex -3MIndexOf -3MIsDefault -3MHasIndex -3MVisibleIndex -3PGrid r -3PItems rw -3PVisibleCount r -3PEnabled r -#lcl.Grids.TCustomGrid #lcl.Controls.TCustomControl -1VFAlternateColor -1VFAutoAdvance -1VFAutoEdit -1VFAutoFillColumns -1VFBorderColor -1VFDefaultDrawing -1VFEditor -1VFEditorHidingCount -1VFEditorMode -1VFEditorOldValue -1VFEditorShowing -1VFEditorKey -1VFEditorOptions -1VFExtendedSelect -1VFFastEditing -1VFAltColorStartNormal -1VFFlat -1VFRangeSelectMode -1VFSelections -1VFOnUserCheckboxBitmap -1VFSortOrder -1VFSortColumn -1VFTabAdvance -1VFTitleImageList -1VFTitleStyle -1VFAscImgInd -1VFDescImgInd -1VFOnCompareCells -1VFGridLineStyle -1VFGridLineWidth -1VFDefColWidth -1VFDefRowHeight -1VFCol -1VFRow -1VFFixedCols -1VFFixedRows -1VFOnEditButtonClick -1VFOnButtonClick -1VFOnPickListSelect -1VFOnCheckboxToggled -1VFOnPrepareCanvas -1VFOnSelectEditor -1VFOnValidateEntry -1VFGridLineColor -1VFFixedcolor -1VFFixedHotColor -1VFFocusColor -1VFSelectedColor -1VFFocusRectVisible -1VFCols -1VFRows -1VFsaveOptions -1VFScrollBars -1VFSelectActive -1VFTopLeft -1VFPivot -1VFRange -1VFDragDx -1VFMoveLast -1VFUpdateCount -1VFGCache +3MClearMultiSelection +3MConsistencyCheck +3MDelete +3MEndUpdate +3MFreeAllNodeData +3MSelectionsChanged +3MSelectOnlyThis +3MMultiSelect +3MSortTopLevelNodes +3MWriteDebugReport +3PCount r +3PItem r +3PKeepCollapsedNodes rw +3POwner r +3PSelectionCount r +3PTopLvlCount r +3PTopLvlItems rw +#lcl.ComCtrls.TCustomTreeView #lcl.Controls.TCustomControl +1VFAccessibilityOn +1VFBackgroundColor +1VFBottomItem +1VFCallingOnChange +1VFEditingItem +1VFExpandSignType +1VFExpandSignSize +1VFDefItemHeight +1VFDragImage +1VFDragNode +1VFIndent +1VFImageChangeLink +1VFImages +1VFInsertMarkNode +1VFInsertMarkType +1VFLastDropTarget +1VFLastHorzScrollInfo +1VFLastVertScrollInfo +1VFMaxLvl +1VFMaxRight +1VfMouseDownPos +1VFMultiSelectStyle +1VFOnAddition +1VFOnAdvancedCustomDraw +1VFOnAdvancedCustomDrawItem +1VFOnChange +1VFOnChanging +1VFOnCollapsed +1VFOnCollapsing +1VFOnCompare +1VFOnCreateNodeClass +1VFOnCustomCreateItem +1VFOnCustomDraw +1VFOnCustomDrawItem +1VFOnCustomDrawArrow +1VFOnDeletion +1VFOnEditing +1VFOnEditingEnd +1VFOnEdited +1VFOnExpanded +1VFOnExpanding +1VFOnGetImageIndex +1VFOnGetSelectedIndex +1VFOnNodeChanged +1VFOnSelectionChanged 1VFOptions -1VFOnDrawCell -1VFOnBeforeSelection -1VFOnSelection -1VFOnTopLeftChanged -1VFUseXORFeatures -1VFVSbVisible -1VFHSbVisible -1VFDefaultTextStyle -1VFLastWidth -1VFTitleFont -1VFLastFont -1VFTitleFontIsDefault -1VFColumns -1VFButtonEditor -1VFStringEditor -1VFButtonStringEditor -1VFPickListEditor -1VFExtendedColSizing -1VFExtendedRowSizing -1VFUpdatingAutoFillCols -1VFGridBorderStyle -1VFGridFlags -1VFGridPropBackup -1VFStrictSort -1VFIgnoreClick -1VFAllowOutboundEvents -1VFColumnClickSorts -1VFHeaderHotZones -1VFHeaderPushZones -1VFCheckedBitmap -1VFUnCheckedBitmap -1VFGrayedBitmap -1VFSavedCursor -1VFSizing -1VFRowAutoInserted -1VFMouseWheelOption -1VFSavedHint -1VFCellHintPriority -1VFOnGetCellHint -1MAdjustCount -1MCacheVisibleGrid -1MCancelSelection -1MCheckFixedCount -1MCheckCount -1MCheckIndex -1MCheckTopLeft -1MIsCellButtonColumn -1MGetSelectedColumn -1MIsDefRowHeightStored -1MIsTitleImageListStored -1MSetAlternateColor -1MSetAutoFillColumns -1MSetBorderColor -1MSetColumnClickSorts -1MSetColumns -1MSetEditorOptions -1MSetEditorBorderStyle -1MSetAltColorStartNormal -1MSetFlat -1MSetFocusRectVisible -1MSetTitleImageList -1MSetTitleFont -1MSetTitleStyle -1MSetUseXorFeatures -1MdoColSizing -1MdoRowSizing -1MdoColMoving -1MdoRowMoving -1MdoTopleftChange -1MDrawXORVertLine -1MDrawXORHorzLine -1MEditorGetValue -1MEditorPos -1MEditorShowChar -1MEditorSetMode -1MEditorSetValue -1MEditorAlwaysShown -1MFixPosition -1MFixScroll -1MGetLeftCol -1MGetColCount -1MGetColWidths -1MGetColumns -1MGetEditorBorderStyle -1MGetBorderWidth -1MGetRowCount -1MGetRowHeights -1MGetSelectedRange -1MGetSelectedRangeCount +1VFRClickNode +1VFSaveItems +1VFScrollBars +1VFScrolledLeft +1VFScrolledTop +1VFSelectedColor +1VFSelectedFontColor +1VFSelectedFontColorUsed +1VFSelectedNode +1VFSelectionChangeEventLock +1VfSeparatorColor +1VFSortType +1VFStateChangeLink +1VFStateImages +1VFStates +1VFTopItem +1VFTreeLineColor +1VFTreeLinePenStyle +1VFExpandSignColor +1VFTreeNodes +1VFHintWnd +1MCanvasChanged +1MGetAutoExpand +1MGetBottomItem +1MGetDropTarget +1MGetHideSelection +1MGetHotTrack +1MGetKeepCollapsedNodes +1MGetMultiSelect +1MGetReadOnly +1MGetRightClickSelect +1MGetRowSelect 1MGetSelection -1MGetTopRow -1MGetVisibleColCount -1MGetVisibleGrid -1MGetVisibleRowCount -1MHeadersMouseMove -1MInternalAutoFillColumns -1MInternalNeedBorder -1MInternalSetColWidths -1MInternalUpdateColumnWidths -1MInvalidateMovement -1MIsAltColorStored -1MIsColumnsStored -1MIsPushCellActive -1MLoadColumns -1MLoadResBitmapImage -1MLoadSub -1MOnTitleFontChanged -1MReadColumns -1MReadColWidths -1MReadRowHeights -1MResetHotCell -1MResetPushedCell -1MSaveColumns -1MScrollToCell -1MScrollGrid -1MSetCol -1MSetColWidths -1MSetColCount -1MSetDefColWidth -1MSetDefRowHeight -1MSetDefaultDrawing -1MSetEditor -1MSetFixedRows -1MSetFocusColor -1MSetGridLineColor -1MSetGridLineStyle -1MSetGridLineWidth -1MSetLeftCol -1MSetOptions -1MSetRangeSelectMode -1MSetRow -1MSetRowCount -1MSetRowHeights +1MGetSelectionCount +1MGetSelections +1MGetShowButtons +1MGetShowLines +1MGetShowRoot +1MGetShowSeparators +1MGetToolTips +1MGetTopItem +1MImageListChange +1MOnChangeTimer +1MSetAutoExpand +1MSetBackgroundColor +1MSetBottomItem +1MSetDefaultItemHeight +1MSetExpandSignType +1MSetDropTarget +1MSetHideSelection +1MSetHotTrack +1MSetIndent +1MSetImages +1MSetInsertMarkNode +1MSetInsertMarkType +1MSetKeepCollapsedNodes +1MSetMultiSelect +1MSetMultiSelectStyle +1MSetReadOnly +1MSetRightClickSelect +1MSetRowSelect 1MSetScrollBars -1MSetSelectActive +1MSetScrolledLeft +1MSetScrolledTop +1MSetSelectedColor +1MSetSelectedFontColor 1MSetSelection -1MSetTopRow -1MStartColSizing -1MChangeCursor -1MTryScrollTo -1MUpdateCachedSizes -1MUpdateSBVisibility -1MUpdateSizes -1MWriteColumns -1MWriteColWidths -1MWriteRowHeights -1MWMEraseBkgnd -1MWMGetDlgCode -2VfGridState -2MWSRegisterClass -2MAddSelectedRange -2MAdjustClientRect -2MAdjustEditorBounds -2MAssignTo -2MAutoAdjustColumn -2MBeforeMoveSelection -2MBeginAutoDrag -2MBoxRect -2MCacheMouseDown -2MCalcAutoSizeColumn -2MCalcFocusRect -2MCalcMaxTopLeft -2MCalcScrollbarsRange -2MCanEditShow -2MCanGridAcceptKey -2MCellClick -2MCheckLimits -2MCheckLimitsWithError -2MClearSelections -2MCMBiDiModeChanged -2MCMMouseEnter -2MCMMouseLeave -2MColRowDeleted -2MColRowExchanged -2MColRowInserted -2MColRowMoved -2MColRowToOffset -2MColumnIndexFromGridColumn -2MColumnFromGridColumn -2MColumnsChanged -2MColWidthsChanged -2MCreateColumns -2MCheckNewCachedSizes -2MCreateWnd -2MCreateParams -2MClick -2MDblClick -2MDefineProperties -2MDestroyHandle -2MDialogChar -2MDoCompareCells -2MDoCopyToClipboard -2MDoCutToClipboard -2MDoEditButtonClick -2MDoEditorHide -2MDoEditorShow -2MDoExit -2MDoEnter -2MDoMouseWheel -2MDoMouseWheelDown -2MDoMouseWheelUp -2MDoOnChangeBounds -2MDoOPDeleteColRow -2MDoOPExchangeColRow -2MDoOPInsertColRow -2MDoOPMoveColRow -2MDoPasteFromClipboard -2MDoPrepareCanvas -2MDoSetBounds -2MDoUTF8KeyPress -2MDrawBorder -2MDrawAllRows -2MDrawFillRect -2MDrawCell -2MDrawCellGrid -2MDrawTextInCell -2MDrawThemedCell -2MDrawCellText -2MDrawGridCheckboxBitmaps -2MDrawButtonCell -2MDrawColRowMoving -2MDrawColumnText -2MDrawColumnTitleImage -2MDrawEdges -2MDrawFocusRect -2MDrawRow -2MEditButtonClicked -2MEditordoGetValue -2MEditordoSetValue -2MEditorCanAcceptKey -2MEditorIsReadOnly -2MEditorHide -2MEditorLocked -2MEditingAllowed -2MEditorSelectAll -2MEditorShow -2MEditorShowInCell -2MEditorTextChanged -2MEditorWidthChanged -2MFirstGridColumn -2MFixedGrid -2MFontChanged -2MGetAutoFillColumnInfo -2MGetCellHintText -2MGetCells -2MGetColumnAlignment -2MGetColumnColor -2MGetColumnFont -2MGetColumnLayout -2MGetColumnReadonly -2MGetColumnTitle -2MGetColumnWidth -2MGetDeltaMoveNext -2MGetDefaultColumnAlignment -2MGetDefaultColumnWidth -2MGetDefaultColumnLayout -2MGetDefaultColumnReadOnly -2MGetDefaultColumnTitle -2MGetDefaultEditor -2MGetDefaultRowHeight -2MGetGridDrawState -2MGetImageForCheckBox -2MGetScrollBarPosition -2MGetSBVisibility -2MGetSBRanges -2MGetSelectedState -2MGetEditMask -2MGetEditText -2MGetFixedcolor -2MGetFirstVisibleColumn -2MGetFirstVisibleRow -2MGetLastVisibleColumn -2MGetLastVisibleRow -2MGetSelectedColor -2MGetTitleShowPrefix -2MGetTruncCellHintText -2MGridColumnFromColumnIndex -2MGridMouseWheel -2MHeaderClick -2MHeaderSized -2MHeaderSizing -2MHideCellHintWindow -2MInternalSetColCount -2MInvalidateCell -2MInvalidateFromCol -2MInvalidateGrid -2MInvalidateFocused -2MGetIsCellTitle -2MGetIsCellSelected -2MIsMouseOverCellButton -2MKeyDown -2MKeyUp -2MKeyPress -2MLoadContent -2MLoaded -2MLockEditor -2MMouseButtonAllowed -2MMouseDown -2MMouseMove -2MMouseUp -2MMoveExtend -2MMoveNextAuto -2MMoveNextSelectable -2MMoveSelection -2MOffsetToColRow -2MPaint -2MPickListItemSelected -2MPrepareCanvas -2MPrepareCellHints -2MResetDefaultColWidths -2MResetEditor -2MResetOffset -2MResetSizes -2MResizeColumn -2MResizeRow -2MRowHeightsChanged -2MSaveContent -2MScrollBarRange -2MScrollBarPosition -2MScrollBarIsVisible -2MScrollBarPage -2MScrollBarShow -2MScrollBarAutomatic -2MSelectEditor -2MSelectCell -2MSetCanvasFont -2MSetColor -2MSetColRow -2MSetEditText -2MSetBorderStyle -2MSetFixedcolor -2MSetFixedCols -2MSetRawColWidths -2MSetSelectedColor -2MShowCellHintWindow -2MSizeChanged -2MSort -2MTopLeftChanged -2MTryMoveSelection -2MUnLockEditor -2MUnprepareCellHints -2MUpdateHorzScrollBar -2MUpdateSelectionRange -2MUpdateVertScrollbar -2MUpdateBorderStyle -2MValidateEntry -2MVisualChange -2MWMHScroll -2MWMVScroll -2MWMKillFocus -2MWMSetFocus -2MWndProc -2PAllowOutboundEvents rw -2PAlternateColor rws -2PAutoAdvance rw -2PAutoEdit rw -2PAutoFillColumns rw -2PBorderStyle rw -2PBorderColor rw -2PCellHintPriority rw -2PCol rw -2PColCount rw -2PColumnClickSorts rw -2PColumns rws -2PColWidths rw -2PDefaultColWidth rw -2PDefaultRowHeight rws -2PDefaultDrawing rw -2PDefaultTextStyle rw -2PDragDx rw -2PEditor rw -2PEditorBorderStyle rw -2PEditorMode rw -2PEditorKey rw -2PEditorOptions rw -2PEditorShowing rw -2PExtendedColSizing rw -2PExtendedRowSizing rw -2PExtendedSelect rw -2PFastEditing rw -2PAltColorStartNormal rw -2PFixedCols rw -2PFixedRows rw -2PFixedColor rw -2PFixedHotColor rw -2PFlat rw -2PFocusColor rw -2PFocusRectVisible rw -2PGCache r -2PGridFlags rw -2PGridHeight r -2PGridLineColor rw -2PGridLineStyle rw -2PGridLineWidth rw -2PGridWidth r -2PHeaderHotZones rw -2PHeaderPushZones rw -2PTabAdvance rw -2PTitleImageList rw -2PInplaceEditor r -2PIsCellSelected r -2PLeftCol rw -2PMouseWheelOption rw -2POptions rw -2PRangeSelectMode rw -2PRow rw -2PRowCount rw -2PRowHeights rw -2PSaveOptions rw -2PSelectActive rw -2PSelectedColor rw -2PSelectedColumn r -2PSelection rw -2PScrollBars rw -2PStrictSort rw -2PTitleFont rw -2PTitleStyle rw -2PTopRow rw -2PUseXORFeatures rw -2PVisibleColCount rs -2PVisibleRowCount rs -2POnBeforeSelection rw -2POnCheckboxToggled rw -2POnCompareCells rw -2POnPrepareCanvas rw -2POnDrawCell rw -2POnEditButtonClick rw -2POnButtonClick rw -2POnPickListSelect rw -2POnSelection rw -2POnSelectEditor rw -2POnTopLeftChanged rw -2POnUserCheckboxBitmap rw -2POnValidateEntry rw -2MFlipRect -2MFlipPoint -2MFlipX -2POnGetCellHint rw +1MSetSeparatorColor +1MSetShowButton +1MSetShowLines +1MSetShowRoot +1MSetShowSeparators +1MSetSortType +1MSetStateImages +1MSetToolTips +1MSetTreeLineColor +1MSetTreeNodes +1MSetTopItem +1MUpdateAllTops +1MUpdateBottomItem +1MUpdateExpandSignSize +1MUpdateMaxLvl +1MUpdateMaxRight +1MUpdateTopItem +1MUpdateScrollbars +1MUpdateTooltip +1MInternalSelectionChanged +2VFChangeTimer +2VFEditor +2MWSRegisterClass +2MGetControlClassDefaultSize +2MAdded +2MEditorEditingDone +2MEditorKeyDown +2MBeginAutoDrag +2MBeginEditing +2MDoDragMsg +2MCanChange +2MCanCollapse +2MCanEdit +2MCanExpand +2MCreateNode +2MCustomDraw +2MCustomDrawItem +2MGetDragImages +2MGetMaxLvl +2MGetMaxScrollLeft +2MGetMaxScrollTop +2MGetNodeAtY +2MGetNodeDrawAreaHeight +2MGetNodeDrawAreaWidth +2MIsCustomDrawn +2MIsNodeVisible +2MIsNodeHeightFullVisible +2MIsInsertMarkVisible +2MMoveSelection +2MChange +2MCollapse +2MCreateWnd +2MDelete +2MDestroyWnd +2MDoCreateNodeClass +2MDoEndDrag +2MDoMouseWheel +2MDoPaint +2MDoPaintNode +2MDoStartDrag +2MDragOver +2MEndEditing +2MEnsureNodeIsVisible +2MExpand +2MGetImageIndex +2MGetSelectedIndex +2MInitializeWnd +2MKeyDown +2MLoaded +2MMouseDown +2MMouseMove +2MMouseUp +2MMouseLeave +2MNodeChanged +2MNotification +2MPaint +2MSetDragMode +2MSetOptions +2MUpdateDefaultItemHeight +2MUpdateInsertMark +2MDoSelectionChanged +2MWMHScroll +2MWMVScroll +2MWMLButtonDown +2MWMSetFocus +2MWMKillFocus +2MResize +2PEditingItem r +2PStates r +3MGetSelectedChildAccessibleObject +3MGetChildAccessibleObjectAtPos +3PAccessibilityOn rw +2PAutoExpand rw +2PBorderStyle +2PHideSelection rw +2PHotTrack rw +2PImages rw +2PIndent rw +2PMultiSelect rw +2POnAddition rw +2POnAdvancedCustomDraw rw +2POnAdvancedCustomDrawItem rw +2POnChange rw +2POnChanging rw +2POnCollapsed rw +2POnCollapsing rw +2POnCompare rw +2POnCreateNodeClass rw +2POnCustomCreateItem rw +2POnCustomDraw rw +2POnCustomDrawItem rw +2POnCustomDrawArrow rw +2POnDeletion rw +2POnEdited rw +2POnEditing rw +2POnEditingEnd rw +2POnExpanded rw +2POnExpanding rw +2POnGetImageIndex rw +2POnGetSelectedIndex rw +2POnNodeChanged rw +2POnSelectionChanged rw +2PReadOnly rw +2PRightClickSelect rw +2PRowSelect rw +2PScrolledLeft rw +2PScrolledTop rw +2PShowButtons rw +2PShowLines rw +2PShowRoot rw +2PShowSeparators rw +2PSortType rw +2PStateImages rw +2PToolTips rw 3MCreate 3MDestroy +3MAlphaSort +3MClearSelection +3MConsistencyCheck +3MCustomSort +3MDefaultTreeViewSort +3MEraseBackground +3MGetHitTestInfoAt +3MGetNodeAt +3MGetInsertMarkAt +3MSetInsertMark +3MSetInsertMarkAt 3MInvalidate -3MEditingDone -3MAutoAdjustColumns +3MIsEditing 3MBeginUpdate -3MCellRect -3MCellToGridZone -3MCheckPosition -3MClear -3MEditorByStyle -3MEditorKeyDown -3MEditorKeyPress -3MEditorKeyUp 3MEndUpdate -3MEraseBackground -3MFocused -3MHasMultiSelection -3MInvalidateCol -3MInvalidateRange -3MInvalidateRow -3MIsCellVisible -3MIsFixedCellVisible +3MFullCollapse +3MFullExpand 3MLoadFromFile 3MLoadFromStream -3MMouseCoord -3MMouseToCell -3MMouseToLogcell -3MMouseToGridZone 3MSaveToFile 3MSaveToStream -3MSetFocus -3PSelectedRange r -3PSelectedRangeCount r -3PSortOrder rw -3PSortColumn r -3PTabStop -#lcl.Grids.TCustomDrawGrid #lcl.Grids.TCustomGrid -1VFOnColRowDeleted -1VFOnColRowExchanged -1VFOnColRowInserted -1VFOnColRowMoved -1VFOnGetCheckboxState -1VFOnGetEditMask -1VFOnGetEditText -1VFOnHeaderClick -1VFOnHeaderSized -1VFOnHeaderSizing -1VFOnSelectCell -1VFOnSetCheckboxState -1VFOnSetEditText -1MCellNeedsCheckboxBitmaps -1MDrawCellCheckboxBitmaps -2VFGrid -2MCalcCellExtent -2MCellClick -2MColRowDeleted -2MColRowExchanged -2MColRowInserted -2MColRowMoved -2MCreateVirtualGrid -2MDrawCell -2MDrawCellAutonumbering -2MDrawFocusRect -2MGetCheckBoxState -2MGetEditMask -2MGetEditText -2MGridMouseWheel -2MHeaderClick -2MHeaderSized -2MHeaderSizing -2MKeyDown -2MNotifyColRowChange -2MSelectCell -2MSetColor -2MSetCheckboxState -2MSetEditText -2MSizeChanged -2MToggleCheckbox -2POnGetCheckboxState rw -2POnSetCheckboxState rw -3MCreate -3MDestroy -3MDeleteColRow -3MDeleteCol -3MDeleteRow -3MExchangeColRow -3MInsertColRow -3MMoveColRow -3MSortColRow -3MDefaultDrawCell -3PAllowOutboundEvents -3PBorderColor -3PCanvas -3PCol -3PColWidths -3PEditor -3PEditorBorderStyle -3PEditorMode -3PExtendedColSizing -3PAltColorStartNormal -3PFastEditing -3PFocusColor -3PFocusRectVisible -3PGridHeight -3PGridLineColor -3PGridLineStyle -3PGridWidth -3PIsCellSelected -3PLeftCol -3PRow -3PRowHeights -3PSaveOptions -3PSelectedColor -3PSelectedColumn -3PSelection -3PStrictSort -3PTopRow -3PUseXORFeatures -3PAlign -3PAnchors -3PAutoAdvance -3PAutoFillColumns -3PBorderSpacing -3PBorderStyle -3PColor -3PColCount -3PColumns -3PConstraints -3PDefaultColWidth -3PDefaultDrawing -3PDefaultRowHeight -3PEnabled -3PFixedColor -3PFixedCols -3PFixedHotColor -3PFixedRows -3PFlat -3PFont -3PGridLineWidth -3POptions -3PParentShowHint -3PPopupMenu -3PRowCount -3PScrollBars -3PShowHint -3PTabAdvance -3PTabOrder -3PTabStop -3PVisible -3PVisibleColCount -3PVisibleRowCount -3POnBeforeSelection -3POnClick -3POnColRowDeleted rw -3POnColRowExchanged rw -3POnColRowInserted rw -3POnColRowMoved rw -3POnCompareCells -3POnContextPopup -3POnDblClick -3POnDragDrop -3POnDragOver -3POnDrawCell -3POnEditButtonClick -3POnButtonClick -3POnEndDock -3POnEndDrag -3POnEnter -3POnExit -3POnGetEditMask rw -3POnGetEditText rw -3POnHeaderClick rw -3POnHeaderSized rw -3POnHeaderSizing rw -3POnKeyDown -3POnKeyPress -3POnKeyUp -3POnMouseDown -3POnMouseEnter -3POnMouseLeave -3POnMouseMove -3POnMouseUp -3POnMouseWheel -3POnMouseWheelDown -3POnMouseWheelUp -3POnPickListSelect -3POnPrepareCanvas -3POnSelectEditor -3POnSelection -3POnSelectCell rw -3POnSetEditText rw -3POnStartDock -3POnStartDrag -3POnTopleftChanged -3POnUTF8KeyPress -#lcl.Grids.TDrawGrid #lcl.Grids.TCustomDrawGrid -3PInplaceEditor +3MWriteDebugReport +3MLockSelectionChangeEvent +3MUnlockSelectionChangeEvent +3MGetFirstMultiSelected +3MGetLastMultiSelected +3MSelect +3MSelectionVisible +3MMakeSelectionVisible +3MClearInvisibleSelection +3MStoreCurrentSelection +3MApplyStoredSelection +3MMoveToNextNode +3MMoveToPrevNode +3MMovePageDown +3MMovePageUp +3MMoveHome +3MMoveEnd +3PBackgroundColor rw +3PBorderWidth +3PBottomItem rw +3PDefaultItemHeight rw +3PDropTarget rw +3PExpandSignType rw +3PInsertMarkNode rw +3PInsertMarkType rw +3PItems rw +3PKeepCollapsedNodes rw +3PMultiSelectStyle rw +3POptions rw +3PScrollBars rw +3PSelected rw +3PSelectionColor rw +3PSelectionFontColor rw +3PSelectionFontColorUsed rw +3PSelectionCount r +3PSelections r +3PSeparatorColor rw +3PTopItem rw +3PTreeLineColor rw +3PTreeLinePenStyle rw +3PExpandSignColor rw +4PTabStop +#lcl.ComCtrls.TTreeView #lcl.ComCtrls.TCustomTreeView 4PAlign -4PAlternateColor 4PAnchors -4PAutoAdvance -4PAutoEdit -4PAutoFillColumns +4PAutoExpand 4PBorderSpacing +4PBackgroundColor 4PBorderStyle +4PBorderWidth 4PColor -4PColCount -4PColumnClickSorts -4PColumns 4PConstraints -4PDefaultColWidth -4PDefaultDrawing -4PDefaultRowHeight -4PDragCursor +4PDefaultItemHeight 4PDragKind +4PDragCursor 4PDragMode 4PEnabled -4PExtendedSelect -4PFixedColor -4PFixedCols -4PFixedRows -4PFlat +4PExpandSignColor +4PExpandSignType 4PFont -4PGridLineWidth -4PHeaderHotZones -4PHeaderPushZones -4PMouseWheelOption -4POptions +4PHideSelection +4PHotTrack +4PImages +4PIndent +4PMultiSelect +4PMultiSelectStyle 4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu -4PRangeSelectMode -4PRowCount +4PReadOnly +4PRightClickSelect +4PRowSelect 4PScrollBars +4PSelectionColor +4PSelectionFontColor +4PSelectionFontColorUsed +4PSeparatorColor +4PShowButtons 4PShowHint -4PTabAdvance +4PShowLines +4PShowRoot +4PSortType +4PStateImages 4PTabOrder 4PTabStop -4PTitleFont -4PTitleImageList -4PTitleStyle -4PUseXORFeatures +4PTag +4PToolTips 4PVisible -4PVisibleColCount -4PVisibleRowCount -4POnBeforeSelection -4POnCheckboxToggled +4POnAddition +4POnAdvancedCustomDraw +4POnAdvancedCustomDrawItem +4POnChange +4POnChanging 4POnClick -4POnColRowDeleted -4POnColRowExchanged -4POnColRowInserted -4POnColRowMoved -4POnCompareCells +4POnCollapsed +4POnCollapsing +4POnCompare 4POnContextPopup +4POnCreateNodeClass +4POnCustomCreateItem +4POnCustomDraw +4POnCustomDrawItem +4POnCustomDrawArrow 4POnDblClick +4POnDeletion 4POnDragDrop 4POnDragOver -4POnDrawCell -4POnEditButtonClick -4POnButtonClick -4POnEditingDone -4POnEndDock +4POnEdited +4POnEditing +4POnEditingEnd 4POnEndDrag 4POnEnter 4POnExit -4POnGetCheckboxState -4POnGetEditMask -4POnGetEditText -4POnHeaderClick -4POnHeaderSized -4POnHeaderSizing +4POnExpanded +4POnExpanding +4POnGetImageIndex +4POnGetSelectedIndex 4POnKeyDown 4POnKeyPress 4POnKeyUp @@ -32303,180 +32755,157 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnPickListSelect -4POnPrepareCanvas -4POnSelectEditor -4POnSelection -4POnSelectCell -4POnSetCheckboxState -4POnSetEditText -4POnStartDock +4POnNodeChanged +4POnSelectionChanged +4POnShowHint 4POnStartDrag -4POnTopleftChanged -4POnUserCheckboxBitmap 4POnUTF8KeyPress -#lcl.Grids.TStringGridStrings #rtl.Classes.TStrings -1VFAddedCount -1VFGrid -1VFIsCol -1VFIndex -1VFOwner -1MConvertIndexLineCol -2MGet -2MGetCount -2MGetObject -2MPut -2MPutObject +4POptions +4PItems +4PTreeLineColor +4PTreeLinePenStyle +#lcl.ComCtrls.TTreeNodeExpandedState #rtl.System.TObject +0VNodeText +0VChildren +0MCreate +0MDestroy +0MClear +0MCreateChildNodes +0MApply +#lcl.ComCtrls.THeaderSection #rtl.Classes.TCollectionItem +1VFAlignment +1VFImageIndex +1VFMinWidth +1VFMaxWidth +1VFState +1VFText +1VFVisible +1VFWidth +1VFOriginalIndex +1MGetWidth +1MGetLeft +1MGetRight +1MSetAlignment +1MSetMaxWidth +1MSetMinWidth +1MSetState +1MSetText +1MSetVisible +1MSetWidth +1MSetImageIndex +1MCheckConstraints +2MGetDisplayName 3MCreate -3MDestroy -3MAdd 3MAssign -3MClear -3MDelete +3PLeft r +3PRight r +3PState rw +4PAlignment rw +4PImageIndex rw +4PMaxWidth rw +4PMinWidth rw +4PText rw +4PWidth rw +4PVisible rw +4POriginalIndex r +#lcl.ComCtrls.THeaderSections #rtl.Classes.TCollection +1VFHeaderControl +1MGetItem +1MSetItem +2MGetOwner +2MUpdate +3MCreate +3MAdd +3MAddItem 3MInsert -#lcl.Grids.TCustomStringGrid #lcl.Grids.TCustomDrawGrid -1VFModified -1VFColsMap -1VFRowsMap -1MGetCols -1MGetObjects -1MGetRows -1MMapFree -1MMapGetColsRows -1MReadCells -1MSetCols -1MSetObjects -1MSetRows -1MWriteCells -1MCopyCellRectToClipboard -2MAssignTo -2MAutoAdjustColumn -2MCalcCellExtent -2MDefineProperties -2MDefineCellsProperty -2MDoCompareCells -2MDoCopyToClipboard -2MDoCutToClipboard -2MDoPasteFromClipboard -2MDrawTextInCell -2MDrawCellAutonumbering -2MGetCells -2MGetCheckBoxState -2MGetEditText -2MLoadContent +3MDelete +3PItems rw +#lcl.ComCtrls.TCustomHeaderControl #lcl.Controls.TCustomControl +1VFDragReorder +1VFSections +1VFImages +1VFPaintRect +1VFDown +1VFDownPoint +1VFTracking +1VFDragging +1VFEndDragSectionIndex +1VFSelectedSection +1VFMouseInControl +1VFSavedCursor +1VFOnSectionClick +1VFOnSectionResize +1VFOnSectionTrack +1VFOnSectionSeparatorDblClick +1VFOnSectionDrag +1VFOnSectionEndDrag +1VFOnCreateSectionClass +1MGetSectionFromOriginalIndex +1MSetImages +1MSetSections +1MUpdateSection +1MUpdateSections +2MCreateSection +2MCreateSections 2MLoaded -2MSaveContent -2MSelectionSetText -2MSetCells -2MSetCheckboxState -2MSetEditText -2PModified rw +2MNotification +2MSectionClick +2MSectionResize +2MSectionTrack +2MSectionSeparatorDblClick +2MSectionEndDrag +2MSectionDrag +2MMouseEnter +2MMouseLeave +2MMouseDown +2MMouseMove +2MMouseUp +2MUpdateState +2MGetControlClassDefaultSize +3PSectionFromOriginalIndex r 3MCreate 3MDestroy -3MAutoSizeColumn -3MAutoSizeColumns -3MClean -3MCopyToClipboard -3MInsertRowWithValues -3MLoadFromCSVStream -3MLoadFromCSVFile -3MSaveToCSVStream -3MSaveToCSVFile -3PCells rw -3PCols rw -3PDefaultTextStyle -3PEditorMode -3PExtendedSelect -3PObjects rw -3PRows rw -3PUseXORFeatures -#lcl.Grids.TStringGrid #lcl.Grids.TCustomStringGrid -2MWSRegisterClass -3PModified -3PInplaceEditor +3MClick +3MDblClick +3MGetSectionAt +3MPaint +3MPaintSection +4PDragReorder rw +4PImages rw +4PSections rw +4POnSectionDrag rw +4POnSectionEndDrag rw +4POnSectionClick rw +4POnSectionResize rw +4POnSectionTrack rw +4POnSectionSeparatorDblClick rw +4POnCreateSectionClass rw +#lcl.ComCtrls.THeaderControl #lcl.ComCtrls.TCustomHeaderControl 4PAlign -4PAlternateColor 4PAnchors -4PAutoAdvance -4PAutoEdit -4PAutoFillColumns 4PBiDiMode +4PBorderWidth 4PBorderSpacing -4PBorderStyle -4PCellHintPriority -4PColor -4PColCount -4PColumnClickSorts -4PColumns -4PConstraints -4PDefaultColWidth -4PDefaultDrawing -4PDefaultRowHeight 4PDragCursor 4PDragKind 4PDragMode 4PEnabled -4PExtendedSelect -4PFixedColor -4PFixedCols -4PFixedRows -4PFlat 4PFont -4PGridLineWidth -4PHeaderHotZones -4PHeaderPushZones -4PMouseWheelOption -4POptions +4PImages +4PConstraints +4PSections +4PShowHint 4PParentBiDiMode -4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu -4PRangeSelectMode -4PRowCount -4PScrollBars -4PShowHint -4PTabAdvance -4PTabOrder -4PTabStop -4PTitleFont -4PTitleImageList -4PTitleStyle -4PUseXORFeatures 4PVisible -4PVisibleColCount -4PVisibleRowCount -4POnBeforeSelection -4POnChangeBounds -4POnCheckboxToggled -4POnClick -4POnColRowDeleted -4POnColRowExchanged -4POnColRowInserted -4POnColRowMoved -4POnCompareCells 4POnContextPopup +4POnCreateSectionClass 4POnDragDrop 4POnDragOver -4POnDblClick -4POnDrawCell -4POnEditButtonClick -4POnButtonClick -4POnEditingDone 4POnEndDock 4POnEndDrag -4POnEnter -4POnExit -4POnGetCellHint -4POnGetCheckboxState -4POnGetEditMask -4POnGetEditText -4POnHeaderClick -4POnHeaderSized -4POnHeaderSizing -4POnKeyDown -4POnKeyPress -4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -32485,141 +32914,187 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnPickListSelect -4POnPrepareCanvas 4POnResize -4POnSelectEditor -4POnSelection -4POnSelectCell -4POnSetCheckboxState -4POnSetEditText -4POnShowHint -4POnStartDock -4POnStartDrag -4POnTopLeftChanged -4POnUserCheckboxBitmap -4POnUTF8KeyPress -4POnValidateEntry -#lcl.DynamicArray.EArray #rtl.sysutils.Exception -#lcl.DynamicArray.TArray #rtl.System.TObject -1VFCols -1VFOnDestroyItem -1VFOnNewItem -1MGetarr -1MSetarr -1MClearCol -1MAumentar_Rows -1MDestroyItem +4POnSectionClick +4POnSectionResize +4POnSectionTrack +#lcl.Toolwin.TToolWindow #lcl.Controls.TCustomControl +1VFEdgeBorders +1VFEdgeInner +1VFEdgeOuter +1MSetEdgeBorders +1MSetEdgeInner +1MSetEdgeOuter +2VFUpdateCount +2MAdjustClientRect +2MPaint +3MCreate +3MBeginUpdate +3MEndUpdate +3PEdgeBorders rw +3PEdgeInner rw +3PEdgeOuter rw +#lcl.DBActns.TDataSetAction #lcl.ActnList.TAction +1VFDataSource +1MSetDataSource +2MNotification +2MGetDataSet +3MHandlesTarget +3PDataSource rw +#lcl.DBActns.TDataSetFirst #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetLast #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetNext #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetPrior #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetRefresh #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetCancel #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetDelete #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetEdit #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetInsert #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DBActns.TDataSetPost #lcl.DBActns.TDataSetAction +3MExecuteTarget +3MUpdateTarget +4PDataSource +#lcl.DbCtrls.TFieldDataLink #fcl.db.TDataLink +1VFField +1VFFieldName +1VFControl +1VFOnDataChange +1VFOnEditingChange +1VFOnUpdateData +1VFOnActiveChange +1VFEditing +1VIsModified +1MFieldCanModify +1MIsKeyField +1MGetCanModify +1MSetFieldName +1MUpdateField +1MValidateField +2MActiveChanged +2MEditingChanged +2MLayoutChanged +2MRecordChanged +2MUpdateData +2MFocusControl +3MCreate +3MEdit +3MModified +3MReset +3PControl rw +3PField r +3PFieldName rw +3PCanModify r +3PEditing r +3POnDataChange rw +3POnEditingChange rw +3POnUpdateData rw +3POnActiveChange rw +#lcl.DbCtrls.TDBLookup #rtl.Classes.TComponent +1VFControlLink +1VFControlItems +1VFListLink +1VFListSource +1VFLookupSource +1VFDataFieldNames +1VFKeyFieldNames +1VFListFieldName +1VFListFieldIndex +1VFDataFields +1VFKeyFields +1VFListField +1VFListKeys +1VFNullValueKey +1VFHasLookUpField +1VFLookUpFieldIsCached +1VFLookupCache +1VFInitializing +1MActiveChange +1MDatasetChange +1MDoInitialize +1MFetchLookupData +1MGetKeyFieldName +1MGetListSource +1MSetKeyFieldName +1MSetListFieldName +1MSetListSource +1MSetLookupCache +1MHandleNullKey +2MNotification 3MCreate 3MDestroy -3MSetLength -3MDeleteColRow -3MMoveColRow -3MExchangeColRow -3MClear -3PArr rw -3POnDestroyItem rw -3POnNewItem rw -#lcl.MaskEdit.EDBEditError #rtl.sysutils.Exception -#lcl.MaskEdit.EInvalidUtf8 #rtl.sysutils.Exception -#lcl.MaskEdit.EInvalidCodePoint #lcl.MaskEdit.EInvalidUtf8 -#lcl.MaskEdit.TCustomMaskEdit #lcl.StdCtrls.TCustomEdit -1VFRealMask -1VFMask -1VFMaskLength -1VFFirstFreePos -1VFMaskSave -1VFTrimType -1VFSpaceChar -1VFCurrentText -1VFTextOnEnter -1VFCursorPos -1VFChangeAllowed -1VFInitialText -1VFInitialMask -1VFSettingInitialText -1VFValidationFailed -1VFMaskIsPushed -1VFSavedMask -1VFSavedMaskLength -1VFTextChangedBySetText -1VFInRealSetTextWhileMasked -1MClearInternalMask -1MAddToMask -1MGetModified -1MSetMask -1MGetIsMasked -1MSetModified -1MSetSpaceChar -1MSetCursorPos -1MSelectNextChar -1MSelectPrevChar -1MSelectFirstChar -1MGotoEnd -1MJumpToNextDot -1MHasSelection -1MHasExtSelection -1MCharToMask -1MMaskToChar -1MIsMaskChar -1MIsLiteral -1MTextIsValid -1MCharMatchesMask -1MClearChar -1MRealSetTextWhileMasked -1MInsertChar -1MCanInsertChar -1MDeleteSelected -1MDeleteChars -2MDisableMask -2MRestoreMask -2MRealSetText -2MRealGetText -2MGetTextWithoutMask -2MSetTextApplyMask +3MInitialize +3MKeyFieldValue +3MUpdateData +3MGetKeyValue +3MGetKeyIndex +3PControlItems rw +3PLookupCache rw +3PKeyField rw +3PListField rw +3PListFieldIndex rw +3PListSource rw +3PNullValueKey rw +#lcl.DbCtrls.TDBEdit #lcl.MaskEdit.TCustomMaskEdit +1VFDataLink +1VFCustomEditMask +1VFFocusedDisplay +1MDataChange +1MUpdateData +1MGetDataField +1MGetDataSource +1MGetField +1MSetDataField +1MSetDataSource +1MCMGetDataLink +2MGetReadOnly +2MSetReadOnly +2MKeyDown +2MUTF8KeyPress +2MNotification +2MEditCanModify 2MGetEditText -2MSetEditText -2MGetSel -2MSetSel -2MTextChanged 2MChange -2MSetCharCase -2MGetCharCase -2MSetMaxLength -2MGetMaxLength -2MSetNumbersOnly -2MLoaded -2MLMPasteFromClip -2MLMCutToClip -2MLMClearSel -2MEditCanModify 2MReset -2MDoEnter -2MDoExit -2MKeyDown -2MHandleKeyPress -2MKeyPress -2MUtf8KeyPress -2MMouseUp -2MCheckCursor -2PEditText rw -2PIsMasked r -2PSpaceChar rw -2PMaxLength rw -2PCharCase rw -2PEditMask rw -3MCutToClipBoard -3MPasteFromClipBoard +2MWMSetFocus +2MWMKillFocus +2MWndProc 3MCreate -3MClear -3MValidateEdit -3PModified rw -#lcl.MaskEdit.TMaskEdit #lcl.MaskEdit.TCustomMaskEdit -3PIsMasked -3PEditText -4PAlign +3MDestroy +3MExecuteAction +3MUpdateAction +3PField r +4PCustomEditMask rw +4PDataField rw +4PDataSource rw +4PReadOnly rw 4PAnchors -4PAutoSelect 4PAutoSize 4PBiDiMode 4PBorderSpacing @@ -32631,14 +33106,15 @@ 4PDragKind 4PDragMode 4PEnabled +4PEditMask 4PFont 4PMaxLength 4PParentBiDiMode 4PParentColor 4PParentFont 4PParentShowHint +4PPasswordChar 4PPopupMenu -4PReadOnly 4PShowHint 4PTabOrder 4PTabStop @@ -32649,7 +33125,6 @@ 4POnDragDrop 4POnDragOver 4POnEditingDone -4POnEndDock 4POnEndDrag 4POnEnter 4POnExit @@ -32664,407 +33139,196 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnStartDock 4POnStartDrag 4POnUTF8KeyPress -4PEditMask -4PText -4PSpaceChar -#lcl.DBGrids.EInvalidGridOperation #rtl.sysutils.Exception -#lcl.DBGrids.TBookmarkList #rtl.System.TObject -1VFList -1VFGrid -1VFDataset -1VFUseCompareBookmarks -1VFCanDoBinarySearch -1MGetCount -1MGetCurrentRowSelected -1MGetItem -1MSetCurrentRowSelected -1MCheckActive -3MCreate -3MDestroy -3MClear -3MDelete -3MFind -3MIndexOf -3MRefresh -3PCount r -3PCurrentRowSelected rw -3PItems r -#lcl.DBGrids.TComponentDataLink #fcl.db.TDataLink -1VFDataSet -1VFDataSetName -1VFModified -1VFOnDatasetChanged -1VfOnDataSetClose -1VfOnDataSetOpen -1VFOnDataSetScrolled -1VFOnEditingChanged -1VfOnInvalidDataSet -1VfOnInvalidDataSource -1VFOnLayoutChanged -1VfOnNewDataSet -1VFOnRecordChanged -1VFOnUpdateData -1MGetDataSetName -1MGetFields -1MSetDataSetName -2MRecordChanged -2MDataSetChanged -2MActiveChanged -2MLayoutChanged -2MDataSetScrolled -2MFocusControl -2MCheckBrowseMode -2MEditingChanged -2MUpdateData -2MMoveBy -2PModified rw -3POnRecordChanged rw -3POnDataSetChanged rw -3POnNewDataSet rw -3POnDataSetOpen rw -3POnInvalidDataSet rw -3POnInvalidDataSource rw -3POnLayoutChanged rw -3POnDataSetClose rw -3POnDataSetScrolled rw -3POnEditingChanged rw -3POnUpdateData rw -3PDataSetName rw -3PFields r -3PVisualControl -#lcl.DBGrids.TColumnTitle #lcl.Grids.TGridColumnTitle -2MGetDefaultCaption -#lcl.DBGrids.TColumn #lcl.Grids.TGridColumn -1VFDisplayFormat -1VFDisplayFormatChanged -1VFFieldName -1VFField -1VFIsAutomaticColumn -1VFDesignIndex -1MApplyDisplayFormat -1MGetDataSet -1MGetDisplayFormat -1MGetField -1MGetIsDesignColumn -1MIsDisplayFormatStored -1MSetDisplayFormat -1MSetField -1MSetFieldName -2MCreateTitle -2MGetDefaultAlignment -2MGetDefaultDisplayFormat -2MGetDefaultValueChecked -2MGetDefaultValueUnchecked -2MGetDefaultVisible -2MGetDisplayName -2MGetDefaultReadOnly -2MGetDefaultWidth -2MGetPickList -2PIsAutomaticColumn r -2PIsDesignColumn r -2MLinkField -3MCreate -3MAssign -3MIsDefault -3PDesignIndex r -3PField rw -4PFieldName rw -4PDisplayFormat rws -#lcl.DBGrids.TDBGridColumns #lcl.Grids.TGridColumns -1MGetColumn -1MSetColumn -2MUpdate -2MColumnFromField -2MHasAutomaticColumns -2MHasDesignColumns -2MRemoveAutoColumns -3MAdd -3MLinkFields -3MResetColumnsOrder -3PItems rw -#lcl.DBGrids.TCustomDBGrid #lcl.Grids.TCustomGrid +#lcl.DbCtrls.TDBText #lcl.StdCtrls.TCustomLabel 1VFDataLink -1VFExtraOptions -1VFOnCellClick -1VFOnColEnter -1VFOnColExit -1VFOnColumnMoved -1VFOnColumnSized -1VFOnDrawColumnCell -1VFOnFieldEditMask -1VFOnTitleClick -1VFOnSelectEditor -1VFOnCheckboxBitmap -1VFOnCheckboxState -1VFOptions -1VFReadOnly -1VFColEnterPending -1VFLayoutChangedCount -1VFTempText -1VFDrawingActiveRecord -1VFDrawingMultiSelRecord -1VFDrawingEmptyDataset -1VFEditingColumn -1VFOldPosition -1VFDefaultColWidths -1VFGridStatus -1VFOldControlStyle -1VFSelectedRows -1VFOnPrepareCanvas -1VFKeyBookmark -1VFKeySign -1VFSavedRecord -1VFOnGetCellHint -1MEmptyGrid -1MGetColumns -1MGetCurrentColumn -1MGetCurrentField +1MDataChange +1MGetDataField 1MGetDataSource -1MGetFirstColumn -1MGetLastColumn -1MGetRecordCount -1MGetSelectedFieldRect -1MGetSelectedIndex -1MOnRecordChanged -1MOnDataSetChanged -1MOnDataSetOpen -1MOnDataSetClose -1MOnEditingChanged -1MOnInvalidDataSet -1MOnInvalidDataSource -1MOnLayoutChanged -1MOnNewDataSet -1MOnDataSetScrolled -1MOnUpdateData -1MSetColumns -1MSetCurrentField +1MGetField +1MSetDataField 1MSetDataSource -1MSetExtraOptions -1MSetOptions -1MSetSelectedIndex -1MUpdateBufferCount -1MGetColumnCount -1MDefaultFieldColWidth -1MUpdateGridColumnSizes -1MUpdateScrollbarRange -1MDoLayoutChanged -1MRestoreEditor -1MISEOF -1MValidDataSet -1MInsertCancelable -1MStartUpdating -1MEndUpdating -1MUpdatingData -1MSwapCheckBox -1MToggleSelectedRow -1MSelectRecord -1MGetScrollbarParams 1MCMGetDataLink -1MClearSelection -1MNeedAutoSizeColumns -1MRenewColWidths -2MAddAutomaticColumns -2MAssignTo -2MBeforeMoveSelection -2MBeginLayout -2MCellClick -2MInvalidateSizes -2MColRowMoved -2MColumnEditorStyle -2MCreateColumns -2MCreateWnd -2MDefineProperties -2MDefaultDrawCell -2MDefaultEditorStyle -2MDoCopyToClipboard -2MDoExit -2MDoMouseWheelDown -2MDoMouseWheelUp -2MDoOnChangeBounds -2MDoPrepareCanvas -2MDrawAllRows -2MDrawFocusRect -2MDrawRow -2MDrawCell -2MDrawCellBackground -2MDrawCheckboxBitmaps -2MDrawFixedText -2MDrawColumnText -2MDrawIndicator -2MEditingColumn -2MEditorCancelEditing -2MEditorDoGetValue -2MEditorCanAcceptKey -2MEditorIsReadOnly -2MEditorTextChanged -2MEndLayout -2MFieldIndexFromGridColumn -2MFirstGridColumn -2MGetBufferCount -2MGetCellHintText -2MGetDefaultColumnAlignment -2MGetDefaultColumnWidth -2MGetDefaultColumnReadOnly -2MGetDefaultColumnTitle -2MGetDefaultRowHeight -2MGetDsFieldFromGridColumn -2MGetEditMask -2MGetEditText -2MGetFieldFromGridColumn -2MGetGridColumnFromField -2MGetImageForCheckBox -2MGetIsCellSelected -2MGetIsCellTitle -2MGetSelectedState -2MGetTruncCellHintText -2MGridCanModify -2MGetSBVisibility -2MGetSBRanges -2MHeaderClick -2MHeaderSized -2MIsColumnVisible -2MIsValidChar -2MKeyDown -2MLinkActive -2MLayoutChanged +2MNotification +2MWSRegisterClass 2MLoaded -2MMoveSelection -2MMouseButtonAllowed -2MMouseDown -2MMouseMove -2MPrepareCanvas -2MPrepareCellHints -2MRemoveAutomaticColumns -2MResetSizes -2MSelectEditor -2MSetEditText -2MSetFixedCols -2MSelectCell -2MUnprepareCellHints -2MUpdateActive -2MUpdateAutoSizeColumns -2MUpdateData -2MUpdateGridCounts -2MWMVScroll -2MWndProc -2PColumns rw -2PGridStatus rw -2PDatalink r -2PDataSource rw -2POptions rw -2POptionsExtra rw -2PReadOnly rw -2PSelectedRows r -2POnCellClick rw -2POnColEnter rw -2POnColExit rw -2POnColumnMoved rw -2POnColumnSized rw -2POnDrawColumnCell rw -2POnFieldEditMask rw -2POnGetCellHint rw -2POnPrepareCanvas rw -2POnSelectEditor rw -2POnTitleClick rw -2POnUserCheckboxBitmap rw -2POnUserCheckboxState rw 3MCreate -3MAutoSizeColumns -3MInitiateAction -3MDefaultDrawColumnCell -3MEditorByStyle -3MResetColWidths 3MDestroy -3MMouseToRecordOffset 3MExecuteAction 3MUpdateAction -3PAllowOutboundEvents -3PSelectedField rw -3PSelectedIndex rw -3PSelectedColumn r -3PSelectedFieldRect r -3PLastColumn r -3PFirstColumn r -#lcl.DBGrids.TDBGrid #lcl.DBGrids.TCustomDBGrid -3PBorderColor -3PCanvas -3PDefaultTextStyle -3PEditorBorderStyle -3PEditorMode -3PExtendedColSizing -3PFastEditing -3PFocusColor -3PFocusRectVisible -3PGridLineColor -3PGridLineStyle -3PInplaceEditor -3PSelectedColor -3PSelectedRows +3PField r 4PAlign -4PAlternateColor +4PAlignment 4PAnchors -4PAutoAdvance -4PAutoEdit -4PAutoFillColumns -4PBiDiMode +4PAutoSize +4PBidiMode 4PBorderSpacing -4PBorderStyle -4PCellHintPriority 4PColor -4PColumns 4PConstraints -4PDataSource -4PDefaultDrawing -4PDefaultRowHeight +4PDataField rw +4PDataSource rw 4PDragCursor +4PDragKind 4PDragMode 4PEnabled -4PFixedColor -4PFixedCols -4PFixedHotColor -4PFlat +4PFocusControl 4PFont -4PHeaderHotZones -4PHeaderPushZones -4POptions -4POptionsExtra -4PParentBiDiMode +4PLayout +4PParentBidiMode 4PParentColor 4PParentFont +4PParentShowHint 4PPopupMenu +4PShowAccelChar +4PShowHint +4PTransparent +4PVisible +4PWordWrap +4POnClick +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnChangeBounds +4POnContextPopup +4POnResize +4POnStartDrag +4POptimalFill +#lcl.DbCtrls.TCustomDBListBox #lcl.StdCtrls.TCustomListBox +1MGetDataField +1MGetDataSource +1MGetField +1MGetReadOnly +1MSetReadOnly +1MSetDataField +1MSetDataSource +1MCMGetDataLink +2VFDataLink +2MDataChange +2MKeyDown +2MNotification +2MUpdateData +2MSetItems +3MCreate +3MDestroy +3MExecuteAction +3MUpdateAction +3PField r +3PDataField rw +3PDataSource rw +3PReadOnly rw +#lcl.DbCtrls.TDBListBox #lcl.DbCtrls.TCustomDBListBox +2MDataChange +2MDoSelectionChange +2MUpdateData +3MEditingDone +4PAlign +4PAnchors +4PBiDiMode +4PBorderSpacing +4PBorderStyle +4PDataField +4PDataSource +4PDragCursor +4PDragMode +4PExtendedSelect +4PItemHeight +4PItems +4PMultiSelect +4POnClick +4POnDblClick +4POnDragDrop +4POnDragOver +4POnDrawItem +4POnEndDrag +4POnEnter +4POnExit +4POnKeyPress +4POnKeyDown +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnStartDrag +4POnUTF8KeyPress +4PParentBiDiMode +4PParentShowHint 4PReadOnly -4PScrollbars 4PShowHint -4PTabAdvance +4PSorted +4PStyle 4PTabOrder 4PTabStop -4PTitleFont -4PTitleImageList -4PTitleStyle -4PUseXORFeatures +4PTopIndex 4PVisible -4POnCellClick -4POnColEnter -4POnColExit -4POnColumnMoved -4POnColumnSized -4POnContextPopup -4POnDrawColumnCell +#lcl.DbCtrls.TDBLookupListBox #lcl.DbCtrls.TCustomDBListBox +1VFLookup +1VFScrollListDataset +1MActiveChange +1MGetKeyField +1MGetKeyValue +1MGetListField +1MGetListFieldIndex +1MGetListSource +1MGetLookupCache +1MGetNullValueKey +1MSetKeyField +1MSetKeyValue +1MSetListField +1MSetListFieldIndex +1MSetListSource +1MSetLookupCache +1MSetNullValueKey +1MUpdateLookup +2MDataChange +2MDoSelectionChange +2MInitializeWnd +2MKeyDown +2MLoaded +2MUpdateData +3MCreate +3PKeyValue rw +4PAlign +4PAnchors +4PBiDiMode +4PBorderSpacing +4PBorderStyle +4PColor +4PDataField +4PDataSource +4PDragCursor +4PDragMode +4PKeyField rw +4PListField rw +4PListFieldIndex rw +4PListSource rw +4PLookupCache rw +4PNullValueKey rw +4POnClick 4POnDblClick 4POnDragDrop 4POnDragOver -4POnEditButtonClick 4POnEditingDone 4POnEndDrag 4POnEnter 4POnExit -4POnFieldEditMask -4POnGetCellHint -4POnKeyDown 4POnKeyPress +4POnKeyDown 4POnKeyUp 4POnMouseDown 4POnMouseEnter @@ -33074,92 +33338,70 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnPrepareCanvas -4POnSelectEditor +4POnResize 4POnStartDrag -4POnTitleClick -4POnUserCheckboxBitmap -4POnUserCheckboxState 4POnUTF8KeyPress -#lcl.CheckLst.TCustomCheckListBox #lcl.StdCtrls.TCustomListBox -1VFAllowGrayed -1VFItemDataOffset -1VFOnClickCheck -1VFOnItemClick -1MGetChecked -1MGetCount -1MGetHeader -1MGetItemEnabled -1MGetState -1MSetChecked -1MSendItemState -1MSendItemEnabled -1MSendItemHeader -1MDoChange -1MSetHeader -1MSetItemEnabled -1MSetState -2MWSRegisterClass -2MAssignItemDataToCache -2MAssignCacheToItemData -2MCreateParams -2MDrawItem -2MGetCachedDataSize -2MGetCheckWidth -2MDefineProperties -2MReadData -2MWriteData -2MClickCheck -2MItemClick -2MKeyDown -2MFontChanged +4PParentBiDiMode +4PParentShowHint +4PPopupMenu +4PReadOnly +4PScrollListDataset rw +4PShowHint +4PSorted +4PTabOrder +4PTabStop +4PTopIndex +4PVisible +#lcl.DbCtrls.TDBRadioGroup #lcl.ExtCtrls.TCustomRadioGroup +1VFDataLink +1VFOnChange +1VFValue +1VFValues +1VFInSetValue +1MGetDataField +1MGetDataSource +1MGetField +1MGetReadOnly +1MSetDataField +1MSetDataSource +1MSetItems +1MSetReadOnly +1MSetValue +1MSetValues +1MCMGetDataLink +2MChange +2MNotification +2MDataChange +2MUpdateData +2PDataLink r +2MGetButtonValue +2MUpdateRadioButtonStates 3MCreate -3MMeasureItem -3MToggle -3MCheckAll -3PAllowGrayed rw -3PChecked rw -3PHeader rw -3PItemEnabled rw -3PState rw -3PCount r -3POnClickCheck rw -3POnItemClick rw -#lcl.CheckLst.TCheckListBox #lcl.CheckLst.TCustomCheckListBox +3MDestroy +3MEditingDone +3MExecuteAction +3MUpdateAction +3PField r +3PItemIndex +3PValue rw 4PAlign -4PAllowGrayed 4PAnchors -4PBidiMode +4PBiDiMode 4PBorderSpacing -4PBorderStyle -4PColor +4PCaption 4PColumns -4PConstraints +4PDataField rw +4PDataSource rw 4PDragCursor 4PDragMode -4PExtendedSelect 4PEnabled -4PFont -4PIntegralHeight -4PItems -4PItemHeight -4PItemIndex -4PMultiSelect +4PItems w +4POnChange rw 4POnChangeBounds 4POnClick -4POnClickCheck -4POnContextPopup -4POnDblClick -4POnDrawItem 4POnDragDrop 4POnDragOver 4POnEndDrag -4POnEnter -4POnExit -4POnItemClick -4POnKeyPress -4POnKeyDown -4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -33169,95 +33411,62 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize -4POnShowHint 4POnStartDrag -4POnUTF8KeyPress -4PParentBidiMode -4PParentFont -4PParentShowHint -4PPopupMenu -4PShowHint -4PSorted -4PStyle +4PParentBiDiMode +4PReadOnly rw 4PTabOrder 4PTabStop -4PTopIndex +4PValues rw 4PVisible -#lcl.ColorBox.TCustomColorBox #lcl.StdCtrls.TCustomComboBox -1VFColorRectWidth -1VFDefaultColorColor -1VFNoneColorColor -1VFOnGetColors -1VFStyle -1VFSelected -1MGetColor -1MGetColorName -1MGetSelected -1MSetColorRectWidth -1MSetDefaultColorColor -1MSetNoneColorColor -1MSetSelected -1MSetStyle -1MColorProc -1MUpdateCombo -2MDrawItem -2MSetColorList -2MLoaded -2MInitializeWnd -2MDoGetColors -2MCloseUp -2MPickCustomColor +#lcl.DbCtrls.TDBCheckBox #lcl.StdCtrls.TCustomCheckBox +1VFDataLink +1VFValueChecked +1VFValueUnchecked +1MGetDataField +1MGetDataSource +1MGetField +1MGetReadOnly +1MSetDataField +1MSetDataSource +1MSetReadOnly +1MSetValueChecked +1MSetValueUnchecked +1MCMGetDataLink +2MGetFieldCheckState +2MDataChange +2MDoOnChange +2MUpdateData +2MNotification 3MCreate -3PColorRectWidth rw -3PStyle rw -3PColors r -3PColorNames r -3PSelected rw -3PDefaultColorColor rw -3PNoneColorColor rw -3POnGetColors rw -#lcl.ColorBox.TColorBox #lcl.ColorBox.TCustomColorBox -4PColorRectWidth -4PDefaultColorColor -4PNoneColorColor -4PSelected -4PStyle -4POnGetColors +3MDestroy +3MExecuteAction +3MUpdateAction +3PChecked +3PField r +3PState +4PAllowGrayed 4PAlign 4PAnchors -4PArrowKeysTraverseList -4PAutoComplete -4PAutoCompleteText -4PAutoDropDown -4PAutoSelect 4PAutoSize -4PBidiMode +4PBiDiMode 4PBorderSpacing +4PCaption 4PColor -4PConstraints +4PDataField rw +4PDataSource rw 4PDragCursor +4PDragKind 4PDragMode -4PDropDownCount 4PEnabled 4PFont -4PItemHeight -4PItemWidth +4PHint 4POnChange -4POnChangeBounds 4POnClick -4POnCloseUp -4POnContextPopup -4POnDblClick 4POnDragDrop 4POnDragOver 4POnEndDrag -4POnDropDown -4POnEditingDone 4POnEnter 4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -33267,84 +33476,86 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnStartDrag -4POnSelect -4POnUTF8KeyPress -4PParentBidiMode +4PParentBiDiMode 4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu +4PReadOnly rw 4PShowHint 4PTabOrder 4PTabStop +4PValueChecked rw +4PValueUnchecked rw 4PVisible -#lcl.ColorBox.TCustomColorListBox #lcl.StdCtrls.TCustomListBox -1VFColorRectWidth -1VFDefaultColorColor -1VFNoneColorColor -1VFOnGetColors -1VFSelected -1VFStyle -1MGetColors -1MGetColorName -1MGetSelected -1MSetColorRectWidth -1MSetColors -1MSetDefaultColorColor -1MSetNoneColorColor -1MSetSelected -1MSetStyle -1MColorProc -2MDrawItem -2MSetColorList -2MLoaded -2MInitializeWnd -2MDoGetColors -2MDoSelectionChange -2MPickCustomColor +#lcl.DbCtrls.TCustomDBComboBox #lcl.StdCtrls.TCustomComboBox +1VFDataLink +1MGetDataField +1MGetDataSource +1MGetField +1MGetReadOnly +1MSetDataField +1MSetDataSource +1MSetReadOnly +1MCMGetDataLink +2MDataChange +2MNotification +2MChange +2MUpdateData +2MWndProc 3MCreate -3PColorRectWidth rw -3PStyle rw -3PColors rw -3PColorNames r -3PSelected rw -3PDefaultColorColor rw -3PNoneColorColor rw -3POnGetColors rw -#lcl.ColorBox.TColorListBox #lcl.ColorBox.TCustomColorListBox -4PColorRectWidth -4PDefaultColorColor -4PNoneColorColor -4PSelected -4PStyle -4POnGetColors -4PAlign +3MDestroy +3MExecuteAction +3MUpdateAction +3MEditingDone +3PField r +3PText +3PItemIndex +3PDataField rw +3PDataSource rw +3PReadOnly rw +#lcl.DbCtrls.TDBComboBox #lcl.DbCtrls.TCustomDBComboBox +2MDataChange +2MKeyDown +2MKeyPress +2MSelect +2MUpdateData 4PAnchors -4PBidiMode +4PArrowKeysTraverseList +4PAutoDropDown +4PAutoComplete +4PAutoSize +4PBiDiMode 4PBorderSpacing 4PBorderStyle -4PClickOnSelChange +4PCharCase 4PColor -4PConstraints +4PDataField +4PDataSource 4PDragCursor -4PDragKind 4PDragMode -4PExtendedSelect +4PDropDownCount 4PEnabled 4PFont -4PIntegralHeight 4PItemHeight +4PItems +4PItemWidth +4PMaxLength +4POnChange 4POnChangeBounds 4POnClick -4POnContextPopup +4POnCloseUp 4POnDblClick 4POnDragDrop 4POnDragOver -4POnEnter +4POnDrawItem +4POnDropDown +4POnEditingDone 4POnEndDrag +4POnEnter 4POnExit -4POnKeyPress 4POnKeyDown +4POnKeyPress 4POnKeyUp 4POnMouseDown 4POnMouseEnter @@ -33354,208 +33565,158 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnResize -4POnSelectionChange -4POnShowHint +4POnSelect 4POnStartDrag 4POnUTF8KeyPress -4PParentBidiMode +4PParentBiDiMode 4PParentColor -4PParentShowHint 4PParentFont -4PPopupMenu +4PParentShowHint +4PReadOnly 4PShowHint +4PSorted +4PStyle 4PTabOrder 4PTabStop -4PTopIndex 4PVisible -#lcl.DBActns.TDataSetAction #lcl.ActnList.TAction -1VFDataSource -1MSetDataSource -2MNotification -2MGetDataSet -3MHandlesTarget -3PDataSource rw -#lcl.DBActns.TDataSetFirst #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetLast #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetNext #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetPrior #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetRefresh #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetCancel #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetDelete #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetEdit #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetInsert #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DBActns.TDataSetPost #lcl.DBActns.TDataSetAction -3MExecuteTarget -3MUpdateTarget -4PDataSource -#lcl.DbCtrls.TFieldDataLink #fcl.db.TDataLink -1VFField -1VFFieldName -1VFControl -1VFOnDataChange -1VFOnEditingChange -1VFOnUpdateData -1VFOnActiveChange -1VFEditing -1VIsModified -1MFieldCanModify -1MIsKeyField -1MGetCanModify -1MSetFieldName -1MUpdateField -1MValidateField -2MActiveChanged -2MEditingChanged -2MLayoutChanged -2MRecordChanged -2MUpdateData -2MFocusControl -3MCreate -3MEdit -3MModified -3MReset -3PControl rw -3PField r -3PFieldName rw -3PCanModify r -3PEditing r -3POnDataChange rw -3POnEditingChange rw -3POnUpdateData rw -3POnActiveChange rw -#lcl.DbCtrls.TDBLookup #rtl.Classes.TComponent -1VFControlLink -1VFControlItems -1VFListLink -1VFListSource -1VFLookupSource -1VFDataFieldNames -1VFKeyFieldNames -1VFListFieldName -1VFListFieldIndex -1VFDataFields -1VFKeyFields -1VFListField -1VFListKeys -1VFNullValueKey -1VFHasLookUpField -1VFLookUpFieldIsCached -1VFLookupCache -1VFInitializing +#lcl.DbCtrls.TDBLookupComboBox #lcl.DbCtrls.TCustomDBComboBox +1VFLookup +1VFScrollListDataset 1MActiveChange -1MDatasetChange -1MDoInitialize -1MFetchLookupData -1MGetKeyFieldName +1MGetKeyField +1MGetKeyValue +1MGetListField +1MGetListFieldIndex 1MGetListSource -1MSetKeyFieldName -1MSetListFieldName +1MGetLookupCache +1MGetNullValueKey +1MSetKeyField +1MSetKeyValue +1MSetListField +1MSetListFieldIndex 1MSetListSource 1MSetLookupCache -1MHandleNullKey -2MNotification +1MSetNullValueKey +1MUpdateLookup +2MCloseUp +2MInitializeWnd +2MKeyDown +2MLoaded +2MUpdateData +2MDataChange +2MSelect 3MCreate -3MDestroy -3MInitialize -3MKeyFieldValue -3MUpdateData -3MGetKeyValue -3MGetKeyIndex -3PControlItems rw -3PLookupCache rw -3PKeyField rw -3PListField rw -3PListFieldIndex rw -3PListSource rw -3PNullValueKey rw -#lcl.DbCtrls.TDBEdit #lcl.MaskEdit.TCustomMaskEdit +3PKeyValue rw +4PAlign +4PAnchors +4PArrowKeysTraverseList +4PAutoComplete +4PAutoDropDown +4PAutoSize +4PBiDiMode +4PBorderSpacing +4PColor +4PDataField +4PDataSource +4PDragCursor +4PDragMode +4PDropDownCount +4PEnabled +4PFont +4PKeyField rw +4PListField rw +4PListFieldIndex rw +4PListSource rw +4PLookupCache rw +4PNullValueKey rw +4POnChange +4POnChangeBounds +4POnClick +4POnCloseUp +4POnDblClick +4POnDragDrop +4POnDragOver +4POnDrawItem +4POnDropDown +4POnEditingDone +4POnEndDrag +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnSelect +4POnStartDrag +4POnUTF8KeyPress +4PParentBiDiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PReadOnly +4PScrollListDataset rw +4PShowHint +4PSorted +4PStyle +4PTabOrder +4PTabStop +4PVisible +#lcl.DbCtrls.TDBMemo #lcl.StdCtrls.TCustomMemo 1VFDataLink -1VFCustomEditMask -1VFFocusedDisplay -1MDataChange -1MUpdateData +1VFAutoDisplay +1VFDBMemoFocused +1VFDBMemoLoaded 1MGetDataField 1MGetDataSource 1MGetField +1MSetAutoDisplay 1MSetDataField 1MSetDataSource 1MCMGetDataLink 2MGetReadOnly 2MSetReadOnly -2MKeyDown -2MUTF8KeyPress +2MDataChange 2MNotification -2MEditCanModify -2MGetEditText +2MUpdateData 2MChange -2MReset -2MWMSetFocus -2MWMKillFocus +2MKeyDown +2MKeyPress 2MWndProc +2MWSRegisterClass 3MCreate 3MDestroy +3MEditingDone +3MLoadMemo 3MExecuteAction 3MUpdateAction 3PField r -4PCustomEditMask rw -4PDataField rw -4PDataSource rw -4PReadOnly rw +4PAlign 4PAnchors -4PAutoSize +4PAutoDisplay rw 4PBiDiMode 4PBorderSpacing 4PBorderStyle 4PCharCase 4PColor 4PConstraints +4PDataField rw +4PDataSource rw 4PDragCursor -4PDragKind 4PDragMode 4PEnabled -4PEditMask 4PFont 4PMaxLength -4PParentBiDiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPasswordChar -4PPopupMenu -4PShowHint -4PTabOrder -4PTabStop -4PVisible 4POnChange 4POnClick +4POnContextPopup 4POnDblClick 4POnDragDrop 4POnDragOver @@ -33576,52 +33737,123 @@ 4POnMouseWheelUp 4POnStartDrag 4POnUTF8KeyPress -#lcl.DbCtrls.TDBText #lcl.StdCtrls.TCustomLabel +4PParentBiDiMode +4PParentFont +4PParentShowHint +4PPopupMenu +4PReadOnly rw +4PScrollBars +4PShowHint +4PTabOrder +4PTabstop +4PVisible +4PWordWrap +#lcl.DbCtrls.TDBGroupBox #lcl.StdCtrls.TCustomGroupBox 1VFDataLink -1MDataChange 1MGetDataField 1MGetDataSource 1MGetField 1MSetDataField 1MSetDataSource 1MCMGetDataLink +2MDataChange 2MNotification -2MWSRegisterClass -2MLoaded 3MCreate 3MDestroy 3MExecuteAction 3MUpdateAction 3PField r 4PAlign -4PAlignment 4PAnchors -4PAutoSize -4PBidiMode +4PBiDiMode 4PBorderSpacing +4PCaption +4PClientHeight +4PClientWidth 4PColor 4PConstraints 4PDataField rw 4PDataSource rw 4PDragCursor -4PDragKind 4PDragMode 4PEnabled -4PFocusControl 4PFont -4PLayout -4PParentBidiMode +4POnClick +4POnDblClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnStartDrag +4POnUTF8KeyPress +4PParentBiDiMode 4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu -4PShowAccelChar 4PShowHint -4PTransparent +4PTabOrder +4PTabStop 4PVisible -4PWordWrap +#lcl.DbCtrls.TDBImage #lcl.ExtCtrls.TCustomImage +1VFDataLink +1VFAutoDisplay +1VFOnDBImageRead +1VFOnDBImageWrite +1VFQuickDraw +1VFPictureLoaded +1VFUpdatingRecord +1VFWriteHeader +1MGetDataField +1MGetDataSource +1MGetField +1MGetReadOnly +1MSetAutoDisplay +1MSetDataField +1MSetDataSource +1MSetReadOnly +1MCMGetDataLink +2MNotification +2MDataChange +2MUpdateData +2MPictureChanged +2MLoadPicture +2MWSRegisterClass +3MCreate +3MDestroy +3MExecuteAction +3MUpdateAction +3PField r +3MChange +4PAlign +4PAnchors +4PAutoDisplay rw +4PAutoSize +4PBorderSpacing +4PCenter +4PConstraints +4PDataField rw +4PDataSource rw +4PDragCursor +4PDragMode 4POnClick 4POnDblClick +4POnDBImageRead rw +4POnDBImageWrite rw +4PPopupMenu 4POnDragDrop 4POnDragOver 4POnEndDrag @@ -33633,63 +33865,165 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnChangeBounds -4POnContextPopup -4POnResize 4POnStartDrag -4POptimalFill -#lcl.DbCtrls.TCustomDBListBox #lcl.StdCtrls.TCustomListBox +4PProportional +4PQuickDraw rw +4PReadOnly rw +4PStretch +4PTransparent +4PVisible +4PWriteHeader rw +#lcl.DbCtrls.TDBCalendar #lcl.Calendar.TCalendar +1VFDataLink +1MDataChange +1MUpdateData 1MGetDataField 1MGetDataSource 1MGetField 1MGetReadOnly 1MSetReadOnly +1MSetDate 1MSetDataField 1MSetDataSource +1MUpdateDate 1MCMGetDataLink -2VFDataLink -2MDataChange -2MKeyDown 2MNotification -2MUpdateData -2MSetItems 3MCreate 3MDestroy +3MEditingDone 3MExecuteAction 3MUpdateAction 3PField r -3PDataField rw +4PBorderSpacing +4PDataField rw +4PDataSource rw +4PDate ws +4PReadOnly rw +4PDisplaySettings s +4PDragCursor +4PDragMode +4PVisible +4POnClick +4POnDragDrop +4POnDragOver +4POnEndDrag +4POnMouseMove +4POnMouseDown +4POnDayChanged +4POnMonthChanged +4POnStartDrag +4POnYearChanged +#lcl.DbCtrls.TDBCustomNavigator #lcl.ExtCtrls.TCustomPanel +1VFBeforeAction +1VFDataLink +1VFDirection +1VFOnNavClick +1VFVisibleButtons +1VFDefaultHints +1VFHints +1VFUpdateButtonsLock +1VFOriginalHints +1VFOptions +1VFFlat +1VFConfirmDelete +1VFUpdateButtonsNeeded +1VFShowButtonHints +1VFImages +1VFImageChangeLink +1MDefaultHintsChanged +1MGetDataSource +1MGetHints +1MSetDataSource +1MSetDirection +1MSetFlat +1MSetHints +1MSetImages +1MSetOptions +1MSetShowButtonHints +1MSetVisibleButtons +1MCMGetDataLink +1MImageListChange +2VButtons +2VFocusableButtons +2MDataChanged +2MEditingChanged +2MActiveChanged +2MLoaded +2MNotification +2MUpdateButtons +2MUpdateHints +2MHintsChanged +2MButtonClickHandler +2MGetControlClassDefaultSize +2MBeginUpdateButtons +2MEndUpdateButtons +2MSetEnabled +3MCreate +3MDestroy +3MBtnClick +3MVisibleButtonCount +3PBeforeAction rw +3PConfirmDelete rw 3PDataSource rw -3PReadOnly rw -#lcl.DbCtrls.TDBListBox #lcl.DbCtrls.TCustomDBListBox -2MDataChange -2MDoSelectionChange -2MUpdateData -3MEditingDone +3PDirection rw +3PFlat rw +3PHints rw +3POptions rw +3POnClick rw +3PVisibleButtons rw +3PShowButtonHints rw +3PImages rw +#lcl.DbCtrls.TDBNavButton #lcl.Buttons.TSpeedButton +1VFIndex +1VFNavStyle +3MDestroy +3PNavStyle rw +3PIndex rw +#lcl.DbCtrls.TDBNavFocusableButton #lcl.Buttons.TBitBtn +1VFIndex +1VFNavStyle +3PNavStyle rw +3PIndex rw +#lcl.DbCtrls.TDBNavDataLink #fcl.db.TDataLink +1VFNavigator +2MEditingChanged +2MDataSetChanged +2MActiveChanged +3MCreate +#lcl.DbCtrls.TDBNavigator #lcl.DbCtrls.TDBCustomNavigator 4PAlign +4PAlignment 4PAnchors -4PBiDiMode +4PAutoSize +4PBidiMode +4PBeforeAction +4PBevelInner +4PBevelOuter +4PBevelWidth 4PBorderSpacing 4PBorderStyle -4PDataField +4PBorderWidth +4PCaption +4PChildSizing +4PClientHeight +4PClientWidth +4PColor +4PConfirmDelete 4PDataSource +4PDirection 4PDragCursor 4PDragMode -4PExtendedSelect -4PItemHeight -4PItems -4PMultiSelect +4PEnabled +4PFlat +4PFont +4PHints 4POnClick 4POnDblClick 4POnDragDrop 4POnDragOver -4POnDrawItem 4POnEndDrag 4POnEnter 4POnExit -4POnKeyPress -4POnKeyDown -4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -33700,70 +34034,156 @@ 4POnMouseWheelUp 4POnResize 4POnStartDrag -4POnUTF8KeyPress -4PParentBiDiMode +4POptions +4PParentBidiMode +4PParentColor +4PParentFont 4PParentShowHint -4PReadOnly +4PPopupMenu 4PShowHint -4PSorted -4PStyle 4PTabOrder 4PTabStop -4PTopIndex 4PVisible -#lcl.DbCtrls.TDBLookupListBox #lcl.DbCtrls.TCustomDBListBox -1VFLookup -1VFScrollListDataset -1MActiveChange -1MGetKeyField -1MGetKeyValue -1MGetListField -1MGetListFieldIndex -1MGetListSource -1MGetLookupCache -1MGetNullValueKey -1MSetKeyField -1MSetKeyValue -1MSetListField -1MSetListFieldIndex -1MSetListSource -1MSetLookupCache -1MSetNullValueKey -1MUpdateLookup -2MDataChange -2MDoSelectionChange -2MInitializeWnd -2MKeyDown +4PVisibleButtons +4PImages +#lcl.MaskEdit.EDBEditError #rtl.sysutils.Exception +#lcl.MaskEdit.EInvalidUtf8 #rtl.sysutils.Exception +#lcl.MaskEdit.EInvalidCodePoint #lcl.MaskEdit.EInvalidUtf8 +#lcl.MaskEdit.TCustomMaskEdit #lcl.StdCtrls.TCustomEdit +1VFRealMask +1VFMask +1VFMaskLength +1VFFirstFreePos +1VFMaskSave +1VFTrimType +1VFSpaceChar +1VFCurrentText +1VFTextOnEnter +1VFCursorPos +1VFChangeAllowed +1VFInitialText +1VFInitialMask +1VFSettingInitialText +1VFValidationFailed +1VFMaskIsPushed +1VFSavedMask +1VFSavedMaskLength +1VFTextChangedBySetText +1VFInRealSetTextWhileMasked +1MClearInternalMask +1MAddToMask +1MGetModified +1MSetMask +1MGetIsMasked +1MSetModified +1MSetSpaceChar +1MSetCursorPos +1MSelectNextChar +1MSelectPrevChar +1MSelectFirstChar +1MGotoEnd +1MJumpToNextDot +1MHasSelection +1MHasExtSelection +1MCharToMask +1MMaskToChar +1MIsMaskChar +1MIsLiteral +1MTextIsValid +1MCharMatchesMask +1MClearChar +1MRealSetTextWhileMasked +1MInsertChar +1MCanInsertChar +1MDeleteSelected +1MDeleteChars +2MApplyMaskToText +2MCanShowTextHint +2MDisableMask +2MRestoreMask +2MRealSetText +2MRealGetText +2MGetTextWithoutMask +2MSetTextApplyMask +2MGetEditText +2MSetEditText +2MGetSel +2MSetSel +2MTextChanged +2MChange +2MSetCharCase +2MGetCharCase +2MSetMaxLength +2MGetMaxLength +2MSetNumbersOnly 2MLoaded -2MUpdateData +2MLMPasteFromClip +2MLMCutToClip +2MLMClearSel +2MEditCanModify +2MReset +2MDoEnter +2MDoExit +2MKeyDown +2MHandleKeyPress +2MKeyPress +2MUtf8KeyPress +2MMouseUp +2MCheckCursor +2PEditText rw +2PIsMasked r +2PSpaceChar rw +2PMaxLength rw +2PCharCase rw +2PEditMask rw +3MCutToClipBoard +3MPasteFromClipBoard 3MCreate -3PKeyValue rw +3MClear +3MValidateEdit +3PModified rw +#lcl.MaskEdit.TMaskEdit #lcl.MaskEdit.TCustomMaskEdit +3PIsMasked +3PEditText 4PAlign +4PAlignment 4PAnchors +4PAutoSelect +4PAutoSize 4PBiDiMode 4PBorderSpacing 4PBorderStyle +4PCharCase 4PColor -4PDataField -4PDataSource +4PConstraints 4PDragCursor +4PDragKind 4PDragMode -4PKeyField rw -4PListField rw -4PListFieldIndex rw -4PListSource rw -4PLookupCache rw -4PNullValueKey rw +4PEnabled +4PFont +4PMaxLength +4PParentBiDiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PReadOnly +4PShowHint +4PTabOrder +4PTabStop +4PVisible +4POnChange 4POnClick 4POnDblClick 4POnDragDrop 4POnDragOver 4POnEditingDone +4POnEndDock 4POnEndDrag 4POnEnter 4POnExit -4POnKeyPress 4POnKeyDown +4POnKeyPress 4POnKeyUp 4POnMouseDown 4POnMouseEnter @@ -33773,70 +34193,71 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnResize +4POnStartDock 4POnStartDrag 4POnUTF8KeyPress -4PParentBiDiMode -4PParentShowHint -4PPopupMenu -4PReadOnly -4PScrollListDataset rw -4PShowHint -4PSorted -4PTabOrder -4PTabStop -4PTopIndex -4PVisible -#lcl.DbCtrls.TDBRadioGroup #lcl.ExtCtrls.TCustomRadioGroup -1VFDataLink +4PEditMask +4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle +4PSpaceChar +#lcl.Calendar.EInvalidDate #rtl.sysutils.Exception +#lcl.Calendar.TCustomCalendar #lcl.Controls.TWinControl +1VFDateAsString +1VFDate +1VFDisplaySettings 1VFOnChange -1VFValue -1VFValues -1VFInSetValue -1MGetDataField -1MGetDataSource -1MGetField -1MGetReadOnly -1MSetDataField -1MSetDataSource -1MSetItems -1MSetReadOnly -1MSetValue -1MSetValues -1MCMGetDataLink -2MChange -2MNotification -2MDataChange -2MUpdateData -2PDataLink r -2MGetButtonValue -2MUpdateRadioButtonStates +1VFDayChanged +1VFMonthChanged +1VFYearChanged +1VFPropsChanged +1MGetDateTime +1MSetDateTime +1MGetProps +1MSetProps +1MGetDisplaySettings +1MSetDisplaySettings +1MGetDate +1MSetDate +2MWSRegisterClass +2MLMChanged +2MLMMonthChanged +2MLMYearChanged +2MLMDayChanged +2MGetControlClassDefaultSize +2MLoaded +2MInitializeWnd +2MDestroyWnd 3MCreate -3MDestroy -3MEditingDone -3MExecuteAction -3MUpdateAction -3PField r -3PItemIndex -3PValue rw +3MHitTest +3PDate rws +3PDateTime rw +3PDisplaySettings rw +3POnChange rw +3POnDayChanged rw +3POnMonthChanged rw +3POnYearChanged rw +#lcl.Calendar.TCalendar #lcl.Calendar.TCustomCalendar 4PAlign 4PAnchors -4PBiDiMode +4PAutoSize 4PBorderSpacing -4PCaption -4PColumns -4PDataField rw -4PDataSource rw -4PDragCursor -4PDragMode -4PEnabled -4PItems w -4POnChange rw +4PConstraints +4PDateTime +4PDisplaySettings +4PHint +4POnChange 4POnChangeBounds 4POnClick -4POnDragDrop -4POnDragOver -4POnEndDrag +4POnDayChanged +4POnDblClick +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMonthChanged 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -33846,62 +34267,417 @@ 4POnMouseWheelDown 4POnMouseWheelUp 4POnResize -4POnStartDrag -4PParentBiDiMode -4PReadOnly rw +4POnUTF8KeyPress +4POnYearChanged +4PPopupMenu +4PShowHint 4PTabOrder 4PTabStop -4PValues rw 4PVisible -#lcl.DbCtrls.TDBCheckBox #lcl.StdCtrls.TCustomCheckBox +#lcl.DBGrids.EInvalidGridOperation #rtl.sysutils.Exception +#lcl.DBGrids.TBookmarkList #rtl.System.TObject +1VFList +1VFGrid +1VFDataset +1VFUseCompareBookmarks +1VFCanDoBinarySearch +1MGetCount +1MGetCurrentRowSelected +1MGetItem +1MSetCurrentRowSelected +1MCheckActive +3MCreate +3MDestroy +3MClear +3MDelete +3MFind +3MIndexOf +3MRefresh +3PCount r +3PCurrentRowSelected rw +3PItems r +#lcl.DBGrids.TComponentDataLink #fcl.db.TDataLink +1VFDataSet +1VFDataSetName +1VFModified +1VFOnDatasetChanged +1VfOnDataSetClose +1VfOnDataSetOpen +1VFOnDataSetScrolled +1VFOnEditingChanged +1VfOnInvalidDataSet +1VfOnInvalidDataSource +1VFOnLayoutChanged +1VfOnNewDataSet +1VFOnRecordChanged +1VFOnUpdateData +1MGetDataSetName +1MGetFields +1MSetDataSetName +2MRecordChanged +2MDataSetChanged +2MActiveChanged +2MLayoutChanged +2MDataSetScrolled +2MFocusControl +2MCheckBrowseMode +2MEditingChanged +2MUpdateData +2MMoveBy +2PModified rw +3POnRecordChanged rw +3POnDataSetChanged rw +3POnNewDataSet rw +3POnDataSetOpen rw +3POnInvalidDataSet rw +3POnInvalidDataSource rw +3POnLayoutChanged rw +3POnDataSetClose rw +3POnDataSetScrolled rw +3POnEditingChanged rw +3POnUpdateData rw +3PDataSetName rw +3PFields r +3PVisualControl +#lcl.DBGrids.TColumnTitle #lcl.Grids.TGridColumnTitle +2MGetDefaultCaption +#lcl.DBGrids.TColumn #lcl.Grids.TGridColumn +1VFDisplayFormat +1VFDisplayFormatChanged +1VFFieldName +1VFField +1VFIsAutomaticColumn +1VFDesignIndex +1MApplyDisplayFormat +1MGetDataSet +1MGetDisplayFormat +1MGetField +1MGetIsDesignColumn +1MIsDisplayFormatStored +1MSetDisplayFormat +1MSetField +1MSetFieldName +2MCreateTitle +2MGetDefaultAlignment +2MGetDefaultDisplayFormat +2MGetDefaultValueChecked +2MGetDefaultValueUnchecked +2MGetDefaultVisible +2MGetDisplayName +2MGetDefaultReadOnly +2MGetDefaultWidth +2MGetPickList +2PIsAutomaticColumn r +2PIsDesignColumn r +2MLinkField +3MCreate +3MAssign +3MIsDefault +3PDesignIndex r +3PField rw +4PFieldName rw +4PDisplayFormat rws +#lcl.DBGrids.TDBGridColumns #lcl.Grids.TGridColumns +1MGetColumn +1MSetColumn +2MUpdate +2MColumnFromField +2MHasAutomaticColumns +2MHasDesignColumns +2MRemoveAutoColumns +3MAdd +3MLinkFields +3MResetColumnsOrder +3PItems rw +#lcl.DBGrids.TCustomDBGrid #lcl.Grids.TCustomGrid 1VFDataLink -1VFValueChecked -1VFValueUnchecked -1MGetDataField +1VFExtraOptions +1VFOnCellClick +1VFOnColEnter +1VFOnColExit +1VFOnColumnMoved +1VFOnColumnSized +1VFOnDrawColumnCell +1VFOnFieldEditMask +1VFOnTitleClick +1VFOnSelectEditor +1VFOnCheckboxBitmap +1VFOnCheckboxState +1VFOptions +1VFReadOnly +1VFColEnterPending +1VFLayoutChangedCount +1VFTempText +1VFDrawingActiveRecord +1VFDrawingMultiSelRecord +1VFDrawingEmptyDataset +1VFEditingColumn +1VFOldPosition +1VFDefaultColWidths +1VFGridStatus +1VFOldControlStyle +1VFSelectedRows +1VFOnPrepareCanvas +1VFKeyBookmark +1VFKeySign +1VFSavedRecord +1VFOnGetCellHint +1MEmptyGrid +1MGetColumns +1MGetCurrentColumn +1MGetCurrentField 1MGetDataSource -1MGetField -1MGetReadOnly -1MSetDataField +1MGetFirstColumn +1MGetLastColumn +1MGetRecordCount +1MGetSelectedFieldRect +1MGetSelectedIndex +1MOnRecordChanged +1MOnDataSetChanged +1MOnDataSetOpen +1MOnDataSetClose +1MOnEditingChanged +1MOnInvalidDataSet +1MOnInvalidDataSource +1MOnLayoutChanged +1MOnNewDataSet +1MOnDataSetScrolled +1MOnUpdateData +1MSetColumns +1MSetCurrentField 1MSetDataSource -1MSetReadOnly -1MSetValueChecked -1MSetValueUnchecked +1MSetExtraOptions +1MSetOptions +1MSetSelectedIndex +1MUpdateBufferCount +1MGetColumnCount +1MDefaultFieldColWidth +1MUpdateGridColumnSizes +1MUpdateScrollbarRange +1MDoLayoutChanged +1MRestoreEditor +1MISEOF +1MValidDataSet +1MInsertCancelable +1MStartUpdating +1MEndUpdating +1MUpdatingData +1MSwapCheckBox +1MToggleSelectedRow +1MSelectRecord +1MGetScrollbarParams 1MCMGetDataLink -2MGetFieldCheckState -2MDataChange -2MDoOnChange +1MClearSelection +1MNeedAutoSizeColumns +1MRenewColWidths +2MAddAutomaticColumns +2MAssignTo +2MBeforeMoveSelection +2MBeginLayout +2MCellClick +2MInvalidateSizes +2MColRowMoved +2MColumnEditorStyle +2MCreateColumns +2MCreateWnd +2MDefineProperties +2MDefaultDrawCell +2MDefaultEditorStyle +2MDoCopyToClipboard +2MDoExit +2MDoMouseWheelDown +2MDoMouseWheelUp +2MDoOnChangeBounds +2MDoPrepareCanvas +2MDoLoadColumn +2MDoSaveColumn +2MDrawAllRows +2MDrawFocusRect +2MDrawRow +2MDrawCell +2MDrawCellBackground +2MDrawCheckboxBitmaps +2MDrawFixedText +2MDrawColumnText +2MDrawIndicator +2MEditingColumn +2MEditorCancelEditing +2MEditorDoGetValue +2MEditorCanAcceptKey +2MEditorIsReadOnly +2MEditorTextChanged +2MEndLayout +2MFieldIndexFromGridColumn +2MFirstGridColumn +2MGetBufferCount +2MGetCellHintText +2MGetDefaultColumnAlignment +2MGetDefaultColumnWidth +2MGetDefaultColumnReadOnly +2MGetDefaultColumnTitle +2MGetDefaultRowHeight +2MGetDsFieldFromGridColumn +2MGetEditMask +2MGetEditText +2MGetFieldFromGridColumn +2MGetGridColumnFromField +2MGetImageForCheckBox +2MGetIsCellSelected +2MGetIsCellTitle +2MGetSelectedState +2MGetTruncCellHintText +2MGridCanModify +2MGetSBVisibility +2MGetSBRanges +2MHeaderClick +2MHeaderSized +2MIsColumnVisible +2MIsValidChar +2MKeyDown +2MLinkActive +2MLayoutChanged +2MLoaded +2MLoadGridOptions +2MMoveSelection +2MMouseButtonAllowed +2MMouseDown +2MMouseMove +2MPrepareCanvas +2MPrepareCellHints +2MRemoveAutomaticColumns +2MResetSizes +2MSaveGridOptions +2MSelectEditor +2MSetEditText +2MSetFixedCols +2MSelectCell +2MUnprepareCellHints +2MUpdateActive +2MUpdateAutoSizeColumns 2MUpdateData -2MNotification +2MUpdateGridCounts +2MWMVScroll +2MWndProc +2PColumns rw +2PGridStatus rw +2PDatalink r +2PDataSource rw +2POptions rw +2POptionsExtra rw +2PReadOnly rw +2PSelectedRows r +2POnCellClick rw +2POnColEnter rw +2POnColExit rw +2POnColumnMoved rw +2POnColumnSized rw +2POnDrawColumnCell rw +2POnFieldEditMask rw +2POnGetCellHint rw +2POnPrepareCanvas rw +2POnSelectEditor rw +2POnTitleClick rw +2POnUserCheckboxBitmap rw +2POnUserCheckboxState rw 3MCreate +3MAutoSizeColumns +3MInitiateAction +3MDefaultDrawColumnCell +3MEditorByStyle +3MResetColWidths 3MDestroy +3MMouseToRecordOffset 3MExecuteAction 3MUpdateAction -3PChecked -3PField r -3PState -4PAllowGrayed +3MSaveToFile +3MSaveToStream +3MLoadFromFile +3MLoadFromStream +3PAllowOutboundEvents +3PSelectedField rw +3PSelectedIndex rw +3PSelectedColumn r +3PSelectedFieldRect r +3PLastColumn r +3PFirstColumn r +#lcl.DBGrids.TDBGrid #lcl.DBGrids.TCustomDBGrid +3PBorderColor +3PCanvas +3PDefaultTextStyle +3PEditorBorderStyle +3PEditorMode +3PExtendedColSizing +3PFastEditing +3PFocusColor +3PFocusRectVisible +3PGridLineColor +3PGridLineStyle +3PInplaceEditor +3PSelectedColor +3PSelectedRows 4PAlign +4PAlternateColor 4PAnchors -4PAutoSize +4PAutoAdvance +4PAutoEdit +4PAutoFillColumns 4PBiDiMode 4PBorderSpacing -4PCaption +4PBorderStyle +4PCellHintPriority 4PColor -4PDataField rw -4PDataSource rw +4PColumns +4PConstraints +4PDataSource +4PDefaultDrawing +4PDefaultRowHeight 4PDragCursor -4PDragKind 4PDragMode 4PEnabled +4PFixedColor +4PFixedCols +4PFixedHotColor +4PFlat 4PFont -4PHint -4POnChange -4POnClick +4PHeaderHotZones +4PHeaderPushZones +4POptions +4POptionsExtra +4PParentBiDiMode +4PParentColor +4PParentFont +4PPopupMenu +4PReadOnly +4PScrollbars +4PShowHint +4PTabAdvance +4PTabOrder +4PTabStop +4PTitleFont +4PTitleImageList +4PTitleStyle +4PUseXORFeatures +4PVisible +4POnCellClick +4POnColEnter +4POnColExit +4POnColumnMoved +4POnColumnSized +4POnContextPopup +4POnDrawColumnCell +4POnDblClick 4POnDragDrop 4POnDragOver +4POnEditButtonClick +4POnEditingDone 4POnEndDrag 4POnEnter 4POnExit +4POnFieldEditMask +4POnGetCellHint +4POnKeyDown +4POnKeyPress +4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -33910,553 +34686,1101 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPrepareCanvas +4POnSelectEditor 4POnStartDrag -4PParentBiDiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PReadOnly rw -4PShowHint -4PTabOrder -4PTabStop -4PValueChecked rw -4PValueUnchecked rw -4PVisible -#lcl.DbCtrls.TCustomDBComboBox #lcl.StdCtrls.TCustomComboBox -1VFDataLink -1MGetDataField -1MGetDataSource -1MGetField -1MGetReadOnly -1MSetDataField -1MSetDataSource -1MSetReadOnly -1MCMGetDataLink -2MDataChange -2MNotification +4POnTitleClick +4POnUserCheckboxBitmap +4POnUserCheckboxState +4POnUTF8KeyPress +#lcl.Grids.EGridException #rtl.sysutils.Exception +#lcl.Grids.TStringCellEditor #lcl.MaskEdit.TCustomMaskEdit +1VFGrid +1VFCol +1VFRow +2MWndProc 2MChange -2MUpdateData +2MKeyDown +2Mmsg_SetMask +2Mmsg_SetValue +2Mmsg_GetValue +2Mmsg_SetGrid +2Mmsg_SelectAll +2Mmsg_SetPos +2Mmsg_GetGrid +3MCreate +3MEditingDone +3PEditText +3POnEditingDone +#lcl.Grids.TButtonCellEditor #lcl.StdCtrls.TButton +1VFGrid +1VFCol +1VFRow +2Mmsg_SetGrid +2Mmsg_SetBounds +2Mmsg_SetPos +2Mmsg_Ready +2Mmsg_GetGrid +3PCol r +3PRow r +#lcl.Grids.TPickListCellEditor #lcl.StdCtrls.TCustomComboBox +1VFGrid +1VFCol +1VFRow +2MWndProc +2MKeyDown +2MDropDown +2MCloseUp +2MSelect +2MChange +2Mmsg_GetValue +2Mmsg_SetGrid +2Mmsg_SetValue +2Mmsg_SetPos +2Mmsg_GetGrid +3MEditingDone +3PBorderStyle +3POnEditingDone +#lcl.Grids.TCompositeCellEditor #lcl.Controls.TWinControl +1VFGrid +1VFCol +1VFRow +1VFEditors +1MDispatchMsg +1MGetMaxLength +1MSetMaxLength +2MDoUTF8KeyPress +2Mmsg_GetValue +2Mmsg_SetGrid +2Mmsg_SetValue +2Mmsg_SetBounds +2Mmsg_SetMask +2Mmsg_SelectAll +2MCMControlChange +2Mmsg_SetPos +2Mmsg_GetGrid +2MGetActiveControl +2MVisibleChanging +2MSendChar 2MWndProc +3MDestroy +3MAddEditor +3MSetFocus +3MFocused +3PMaxLength rw +3PActiveControl r +#lcl.Grids.TVirtualGrid #rtl.System.TObject +1VFColCount +1VFRowCount +1VFCells +1VFCols +1VFRows +1MGetCells +1MGetrows +1MGetcols +1MSetCells +1MSetrows +1MSetcolcount +1MSetrowcount +1MSetcols +2MdoDestroyItem +2MdoNewItem +2MDeleteColRow +2MMoveColRow +2MExchangeColRow +2MInsertColRow +2MDisposeCell +2MDisposeColRow 3MCreate 3MDestroy -3MExecuteAction -3MUpdateAction -3MEditingDone -3PField r -3PText -3PItemIndex -3PDataField rw -3PDataSource rw -3PReadOnly rw -#lcl.DbCtrls.TDBComboBox #lcl.DbCtrls.TCustomDBComboBox -2MDataChange +3MClear +3MGetDefaultCell +3MGetDefaultColRow +3PColCount rw +3PRowCount rw +3PCelda rw +3PCols rw +3PRows rw +#lcl.Grids.TGridColumnTitle #rtl.Classes.TPersistent +1VFColumn +1VFCaption +1VFColor +1VFAlignment +1VFFont +1VFImageIndex +1VFOldImageIndex +1VFImageLayout +1VFIsDefaultTitleFont +1VFLayout +1VFPrefixOption +1VFMultiline +1VFIsDefaultCaption +1MFontChanged +1MGetAlignment +1MGetColor +1MGetFont +1MGetLayout +1MIsAlignmentStored +1MIsCaptionStored +1MIsColorStored +1MIsFontStored +1MIsLayoutStored +1MSetAlignment +1MSetColor +1MSetFont +1MSetImageIndex +1MSetImageLayout +1MSetLayout +1MSetMultiLine +1MSetPrefixOption +1MWriteCaption +1PIsDefaultFont r +2MGetDefaultCaption +2MGetDefaultAlignment +2MGetDefaultColor +2MGetDefaultLayout +2MGetOwner +2MGetCaption +2MSetCaption +2MDefineProperties +3MCreate +3MDestroy +3MAssign +3MFillTitleDefaultFont +3MIsDefault +3PColumn r +4PAlignment rws +4PCaption rws +4PColor rws +4PFont rws +4PImageIndex rw +4PImageLayout rw +4PLayout rws +4PMultiLine rw +4PPrefixOption rw +#lcl.Grids.TGridColumn #rtl.Classes.TCollectionItem +1VFButtonStyle +1VFDropDownRows +1VFTitle +1VFWidthChanged +1VFAlignment +1VFColor +1VFLayout +1VFVisible +1VFReadOnly +1VFWidth +1VFFont +1VFisDefaultFont +1VFPickList +1VFMinSize +1VFMaxSize +1VFSizePriority +1VFValueChecked +1VFValueUnchecked +1VFTag +1MFontChanged +1MGetAlignment +1MGetColor +1MGetExpanded +1MGetFont +1MGetGrid +1MGetLayout +1MGetMaxSize +1MGetMinSize +1MGetSizePriority +1MGetReadOnly +1MGetStoredWidth +1MGetVisible +1MGetWidth +1MIsAlignmentStored +1MIsColorStored +1MIsFontStored +1MIsLayoutStored +1MIsMinSizeStored +1MIsMaxSizeStored +1MIsReadOnlyStored +1MIsSizePriorityStored +1MIsValueCheckedStored +1MIsValueUncheckedStored +1MIsVisibleStored +1MIsWidthStored +1MSetAlignment +1MSetButtonStyle +1MSetColor +1MSetExpanded +1MSetFont +1MSetLayout +1MSetMaxSize +1MSetMinSize +1MSetPickList +1MSetReadOnly +1MSetSizePriority +1MSetTitle +1MSetValueChecked +1MSetValueUnchecked +1MSetVisible +1MSetWidth +2MGetDisplayName +2MGetDefaultAlignment +2MGetDefaultColor +2MGetDefaultLayout +2MGetDefaultMaxSize +2MGetDefaultMinSize +2MGetDefaultReadOnly +2MGetDefaultSizePriority +2MGetDefaultVisible +2MGetDefaultValueChecked +2MGetDefaultValueUnchecked +2MGetDefaultWidth +2MGetPickList +2MGetValueChecked +2MGetValueUnchecked +2MColumnChanged +2MAllColumnsChange +2MCreateTitle +2MSetIndex +2PIsDefaultFont r +3MCreate +3MDestroy +3MAssign +3MFillDefaultFont +3MIsDefault +3PGrid r +3PDefaultWidth r +3PStoredWidth r +3PWidthChanged r +4PAlignment rws +4PButtonStyle rw +4PColor rws +4PDropDownRows rw +4PExpanded rw +4PFont rws +4PLayout rws +4PMinSize rws +4PMaxSize rws +4PPickList rw +4PReadOnly rws +4PSizePriority rws +4PTag rw +4PTitle rw +4PWidth rws +4PVisible rws +4PValueChecked rws +4PValueUnchecked rws +#lcl.Grids.TGridColumns #rtl.Classes.TCollection +1VFGrid +1MGetColumn +1MGetEnabled +1MSetColumn +1MGetVisibleCount +2MGetOwner +2MUpdate +2MTitleFontChanged +2MFontChanged +2MRemoveColumn +2MMoveColumn +2MExchangeColumn +2MInsertColumn +3MCreate +3MAdd +3MClear +3MRealIndex +3MIndexOf +3MIsDefault +3MHasIndex +3MVisibleIndex +3PGrid r +3PItems rw +3PVisibleCount r +3PEnabled r +#lcl.Grids.TCustomGrid #lcl.Controls.TCustomControl +1VFAlternateColor +1VFAutoAdvance +1VFAutoEdit +1VFAutoFillColumns +1VFBorderColor +1VFDefaultDrawing +1VFEditor +1VFEditorHidingCount +1VFEditorMode +1VFEditorOldValue +1VFEditorShowing +1VFEditorKey +1VFEditorOptions +1VFExtendedSelect +1VFFastEditing +1VFAltColorStartNormal +1VFFlat +1VFOnLoadColumn +1VFOnSaveColumn +1VFRangeSelectMode +1VFSelections +1VFOnUserCheckboxBitmap +1VFSortOrder +1VFSortColumn +1VFTabAdvance +1VFTitleImageList +1VFTitleStyle +1VFAscImgInd +1VFDescImgInd +1VFOnCompareCells +1VFGridLineStyle +1VFGridLineWidth +1VFDefColWidth +1VFDefRowHeight +1VFCol +1VFRow +1VFFixedCols +1VFFixedRows +1VFOnEditButtonClick +1VFOnButtonClick +1VFOnPickListSelect +1VFOnCheckboxToggled +1VFOnPrepareCanvas +1VFOnSelectEditor +1VFOnValidateEntry +1VFGridLineColor +1VFFixedcolor +1VFFixedHotColor +1VFFocusColor +1VFSelectedColor +1VFFocusRectVisible +1VFCols +1VFRows +1VFsaveOptions +1VFScrollBars +1VFSelectActive +1VFTopLeft +1VFPivot +1VFRange +1VFDragDx +1VFMoveLast +1VFUpdateCount +1VFGCache +1VFOptions +1VFOnDrawCell +1VFOnBeforeSelection +1VFOnSelection +1VFOnTopLeftChanged +1VFUseXORFeatures +1VFVSbVisible +1VFHSbVisible +1VFDefaultTextStyle +1VFLastWidth +1VFTitleFont +1VFLastFont +1VFTitleFontIsDefault +1VFColumns +1VFButtonEditor +1VFStringEditor +1VFButtonStringEditor +1VFPickListEditor +1VFExtendedColSizing +1VFExtendedRowSizing +1VFUpdatingAutoFillCols +1VFGridBorderStyle +1VFGridFlags +1VFGridPropBackup +1VFStrictSort +1VFIgnoreClick +1VFAllowOutboundEvents +1VFColumnClickSorts +1VFHeaderHotZones +1VFHeaderPushZones +1VFCheckedBitmap +1VFUnCheckedBitmap +1VFGrayedBitmap +1VFSavedCursor +1VFSizing +1VFRowAutoInserted +1VFMouseWheelOption +1VFSavedHint +1VFCellHintPriority +1VFOnGetCellHint +1MAdjustCount +1MCacheVisibleGrid +1MCancelSelection +1MCheckFixedCount +1MCheckCount +1MCheckIndex +1MCheckTopLeft +1MIsCellButtonColumn +1MGetSelectedColumn +1MIsDefRowHeightStored +1MIsTitleImageListStored +1MSetAlternateColor +1MSetAutoFillColumns +1MSetBorderColor +1MSetColumnClickSorts +1MSetColumns +1MSetEditorOptions +1MSetEditorBorderStyle +1MSetAltColorStartNormal +1MSetFlat +1MSetFocusRectVisible +1MSetTitleImageList +1MSetTitleFont +1MSetTitleStyle +1MSetUseXorFeatures +1MdoColSizing +1MdoRowSizing +1MdoColMoving +1MdoPushCell +1MdoRowMoving +1MdoTopleftChange +1MDrawXORVertLine +1MDrawXORHorzLine +1MEditorGetValue +1MEditorPos +1MEditorShowChar +1MEditorSetMode +1MEditorSetValue +1MEditorAlwaysShown +1MFixPosition +1MFixScroll +1MGetLeftCol +1MGetColCount +1MGetColWidths +1MGetColumns +1MGetEditorBorderStyle +1MGetBorderWidth +1MGetRowCount +1MGetRowHeights +1MGetSelectedRange +1MGetSelectedRangeCount +1MGetSelection +1MGetTopRow +1MGetVisibleColCount +1MGetVisibleGrid +1MGetVisibleRowCount +1MHeadersMouseMove +1MInternalAutoFillColumns +1MInternalNeedBorder +1MInternalSetColWidths +1MInternalUpdateColumnWidths +1MInvalidateMovement +1MIsAltColorStored +1MIsColumnsStored +1MIsPushCellActive +1MLoadColumns +1MLoadResBitmapImage +1MLoadSub +1MOnTitleFontChanged +1MReadColumns +1MReadColWidths +1MReadRowHeights +1MResetHotCell +1MResetPushedCell +1MSaveColumns +1MScrollToCell +1MScrollGrid +1MSetCol +1MSetColWidths +1MSetColCount +1MSetDefColWidth +1MSetDefRowHeight +1MSetDefaultDrawing +1MSetEditor +1MSetFixedRows +1MSetFocusColor +1MSetGridLineColor +1MSetGridLineStyle +1MSetGridLineWidth +1MSetLeftCol +1MSetOptions +1MSetRangeSelectMode +1MSetRow +1MSetRowCount +1MSetRowHeights +1MSetScrollBars +1MSetSelectActive +1MSetSelection +1MSetTopRow +1MStartColSizing +1MChangeCursor +1MTryScrollTo +1MUpdateCachedSizes +1MUpdateSBVisibility +1MUpdateSizes +1MWriteColumns +1MWriteColWidths +1MWriteRowHeights +1MWMEraseBkgnd +1MWMGetDlgCode +2VfGridState +2MWSRegisterClass +2MAddSelectedRange +2MAdjustClientRect +2MAdjustEditorBounds +2MAssignTo +2MAutoAdjustColumn +2MBeforeMoveSelection +2MBeginAutoDrag +2MBoxRect +2MCacheMouseDown +2MCalcAutoSizeColumn +2MCalcFocusRect +2MCalcMaxTopLeft +2MCalcScrollbarsRange +2MCalculatePreferredSize +2MCanEditShow +2MCanGridAcceptKey +2MCellClick +2MCheckLimits +2MCheckLimitsWithError +2MCMBiDiModeChanged +2MCMMouseEnter +2MCMMouseLeave +2MColRowDeleted +2MColRowExchanged +2MColRowInserted +2MColRowMoved +2MColRowToOffset +2MColumnIndexFromGridColumn +2MColumnFromGridColumn +2MColumnsChanged +2MColWidthsChanged +2MCreateColumns +2MCheckNewCachedSizes +2MCreateWnd +2MCreateParams +2MClick +2MDblClick +2MDefineProperties +2MDestroyHandle +2MDialogChar +2MDoCompareCells +2MDoCopyToClipboard +2MDoCutToClipboard +2MDoEditButtonClick +2MDoEditorHide +2MDoEditorShow +2MDoExit +2MDoEnter +2MDoLoadColumn +2MDoSaveColumn +2MDoMouseWheel +2MDoMouseWheelDown +2MDoMouseWheelUp +2MDoOnChangeBounds +2MDoOPDeleteColRow +2MDoOPExchangeColRow +2MDoOPInsertColRow +2MDoOPMoveColRow +2MDoPasteFromClipboard +2MDoPrepareCanvas +2MDoSetBounds +2MDoUTF8KeyPress +2MDrawBorder +2MDrawAllRows +2MDrawFillRect +2MDrawCell +2MDrawCellGrid +2MDrawTextInCell +2MDrawThemedCell +2MDrawCellText +2MDrawGridCheckboxBitmaps +2MDrawButtonCell +2MDrawColRowMoving +2MDrawColumnText +2MDrawColumnTitleImage +2MDrawEdges +2MDrawFocusRect +2MDrawRow +2MEditButtonClicked +2MEditordoGetValue +2MEditordoSetValue +2MEditorCanAcceptKey +2MEditorIsReadOnly +2MEditorHide +2MEditorLocked +2MEditingAllowed +2MEditorSelectAll +2MEditorShow +2MEditorShowInCell +2MEditorTextChanged +2MEditorWidthChanged +2MFirstGridColumn +2MFixedGrid +2MFontChanged +2MGetAutoFillColumnInfo +2MGetCellHintText +2MGetCells +2MGetColumnAlignment +2MGetColumnColor +2MGetColumnFont +2MGetColumnLayout +2MGetColumnReadonly +2MGetColumnTitle +2MGetColumnWidth +2MGetDeltaMoveNext +2MGetDefaultColumnAlignment +2MGetDefaultColumnWidth +2MGetDefaultColumnLayout +2MGetDefaultColumnReadOnly +2MGetDefaultColumnTitle +2MGetDefaultEditor +2MGetDefaultRowHeight +2MGetGridDrawState +2MGetImageForCheckBox +2MGetScrollBarPosition +2MGetSBVisibility +2MGetSBRanges +2MGetSelectedState +2MGetEditMask +2MGetEditText +2MGetFixedcolor +2MGetFirstVisibleColumn +2MGetFirstVisibleRow +2MGetLastVisibleColumn +2MGetLastVisibleRow +2MGetSelectedColor +2MGetTitleShowPrefix +2MGetTruncCellHintText +2MGridColumnFromColumnIndex +2MGridMouseWheel +2MHeaderClick +2MHeaderSized +2MHeaderSizing +2MHideCellHintWindow +2MInternalSetColCount +2MInvalidateCell +2MInvalidateFromCol +2MInvalidateGrid +2MInvalidateFocused +2MGetIsCellTitle +2MGetIsCellSelected +2MIsMouseOverCellButton 2MKeyDown +2MKeyUp 2MKeyPress -2MSelect -2MUpdateData -4PAnchors -4PArrowKeysTraverseList -4PAutoDropDown -4PAutoComplete -4PAutoSize -4PBiDiMode -4PBorderSpacing -4PBorderStyle -4PCharCase -4PColor -4PDataField -4PDataSource -4PDragCursor -4PDragMode -4PDropDownCount -4PEnabled -4PFont -4PItemHeight -4PItems -4PItemWidth -4PMaxLength -4POnChange -4POnChangeBounds -4POnClick -4POnCloseUp -4POnDblClick -4POnDragDrop -4POnDragOver -4POnDrawItem -4POnDropDown -4POnEditingDone -4POnEndDrag -4POnEnter -4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnSelect -4POnStartDrag -4POnUTF8KeyPress -4PParentBiDiMode -4PParentColor -4PParentFont -4PParentShowHint -4PReadOnly -4PShowHint -4PSorted -4PStyle -4PTabOrder -4PTabStop -4PVisible -#lcl.DbCtrls.TDBLookupComboBox #lcl.DbCtrls.TCustomDBComboBox -1VFLookup -1VFScrollListDataset -1MActiveChange -1MGetKeyField -1MGetKeyValue -1MGetListField -1MGetListFieldIndex -1MGetListSource -1MGetLookupCache -1MGetNullValueKey -1MSetKeyField -1MSetKeyValue -1MSetListField -1MSetListFieldIndex -1MSetListSource -1MSetLookupCache -1MSetNullValueKey -1MUpdateLookup -2MCloseUp -2MInitializeWnd -2MKeyDown +2MLoadContent +2MLoadGridOptions 2MLoaded -2MUpdateData -2MDataChange -2MSelect +2MLockEditor +2MMouseButtonAllowed +2MMouseDown +2MMouseMove +2MMouseUp +2MMoveExtend +2MMoveNextAuto +2MMoveNextSelectable +2MMoveSelection +2MOffsetToColRow +2MPaint +2MPickListItemSelected +2MPrepareCanvas +2MPrepareCellHints +2MResetDefaultColWidths +2MResetEditor +2MResetOffset +2MResetSizes +2MResizeColumn +2MResizeRow +2MRowHeightsChanged +2MSaveContent +2MSaveGridOptions +2MScrollBarRange +2MScrollBarPosition +2MScrollBarIsVisible +2MScrollBarPage +2MScrollBarShow +2MScrollBarAutomatic +2MSelectEditor +2MSelectCell +2MSetCanvasFont +2MSetColor +2MSetColRow +2MSetEditText +2MSetBorderStyle +2MSetFixedcolor +2MSetFixedCols +2MSetRawColWidths +2MSetSelectedColor +2MShowCellHintWindow +2MSizeChanged +2MSort +2MStartPushCell +2MTopLeftChanged +2MTryMoveSelection +2MUnLockEditor +2MUnprepareCellHints +2MUpdateHorzScrollBar +2MUpdateSelectionRange +2MUpdateVertScrollbar +2MUpdateBorderStyle +2MValidateEntry +2MVisualChange +2MWMHScroll +2MWMVScroll +2MWMKillFocus +2MWMSetFocus +2MWndProc +2PAllowOutboundEvents rw +2PAlternateColor rws +2PAutoAdvance rw +2PAutoEdit rw +2PAutoFillColumns rw +2PBorderStyle rw +2PBorderColor rw +2PCellHintPriority rw +2PCol rw +2PColCount rw +2PColumnClickSorts rw +2PColumns rws +2PColWidths rw +2PDefaultColWidth rw +2PDefaultRowHeight rws +2PDefaultDrawing rw +2PDefaultTextStyle rw +2PDragDx rw +2PEditor rw +2PEditorBorderStyle rw +2PEditorMode rw +2PEditorKey rw +2PEditorOptions rw +2PEditorShowing rw +2PExtendedColSizing rw +2PExtendedRowSizing rw +2PExtendedSelect rw +2PFastEditing rw +2PAltColorStartNormal rw +2PFixedCols rw +2PFixedRows rw +2PFixedColor rw +2PFixedHotColor rw +2PFlat rw +2PFocusColor rw +2PFocusRectVisible rw +2PGCache r +2PGridFlags rw +2PGridHeight r +2PGridLineColor rw +2PGridLineStyle rw +2PGridLineWidth rw +2PGridWidth r +2PHeaderHotZones rw +2PHeaderPushZones rw +2PTabAdvance rw +2PTitleImageList rw +2PInplaceEditor r +2PIsCellSelected r +2PLeftCol rw +2PMouseWheelOption rw +2POptions rw +2PRangeSelectMode rw +2PRow rw +2PRowCount rw +2PRowHeights rw +2PSaveOptions rw +2PSelectActive rw +2PSelectedColor rw +2PSelectedColumn r +2PSelection rw +2PScrollBars rw +2PStrictSort rw +2PTitleFont rw +2PTitleStyle rw +2PTopRow rw +2PUseXORFeatures rw +2PVisibleColCount rs +2PVisibleRowCount rs +2POnBeforeSelection rw +2POnCheckboxToggled rw +2POnCompareCells rw +2POnPrepareCanvas rw +2POnDrawCell rw +2POnEditButtonClick rw +2POnButtonClick rw +2POnPickListSelect rw +2POnSelection rw +2POnSelectEditor rw +2POnTopLeftChanged rw +2POnUserCheckboxBitmap rw +2POnValidateEntry rw +2MFlipRect +2MFlipPoint +2MFlipX +2POnGetCellHint rw +2POnSaveColumn rw +2POnLoadColumn rw 3MCreate -3PKeyValue rw -4PAlign -4PAnchors -4PArrowKeysTraverseList -4PAutoComplete -4PAutoDropDown -4PAutoSize -4PBiDiMode -4PBorderSpacing -4PColor -4PDataField -4PDataSource -4PDragCursor -4PDragMode -4PDropDownCount -4PEnabled -4PFont -4PKeyField rw -4PListField rw -4PListFieldIndex rw -4PListSource rw -4PLookupCache rw -4PNullValueKey rw -4POnChange -4POnChangeBounds -4POnClick -4POnCloseUp -4POnDblClick -4POnDragDrop -4POnDragOver -4POnDrawItem -4POnDropDown -4POnEditingDone -4POnEndDrag -4POnEnter -4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnSelect -4POnStartDrag -4POnUTF8KeyPress -4PParentBiDiMode -4PParentColor -4PParentFont -4PParentShowHint -4PPopupMenu -4PReadOnly -4PScrollListDataset rw -4PShowHint -4PSorted -4PStyle -4PTabOrder -4PTabStop -4PVisible -#lcl.DbCtrls.TDBMemo #lcl.StdCtrls.TCustomMemo -1VFDataLink -1VFAutoDisplay -1VFDBMemoFocused -1VFDBMemoLoaded -1MGetDataField -1MGetDataSource -1MGetField -1MSetAutoDisplay -1MSetDataField -1MSetDataSource -1MCMGetDataLink -2MGetReadOnly -2MSetReadOnly -2MDataChange -2MNotification -2MUpdateData -2MChange +3MDestroy +3MInvalidate +3MEditingDone +3MAutoAdjustColumns +3MBeginUpdate +3MCellRect +3MCellToGridZone +3MCheckPosition +3MClear +3MClearSelections +3MEditorByStyle +3MEditorKeyDown +3MEditorKeyPress +3MEditorKeyUp +3MEndUpdate +3MEraseBackground +3MFocused +3MHasMultiSelection +3MInvalidateCol +3MInvalidateRange +3MInvalidateRow +3MIsCellVisible +3MIsFixedCellVisible +3MLoadFromFile +3MLoadFromStream +3MMouseCoord +3MMouseToCell +3MMouseToLogcell +3MMouseToGridZone +3MSaveToFile +3MSaveToStream +3MSetFocus +3PSelectedRange r +3PSelectedRangeCount r +3PSortOrder rw +3PSortColumn r +3PTabStop +#lcl.Grids.TCustomDrawGrid #lcl.Grids.TCustomGrid +1VFOnColRowDeleted +1VFOnColRowExchanged +1VFOnColRowInserted +1VFOnColRowMoved +1VFOnGetCheckboxState +1VFOnGetEditMask +1VFOnGetEditText +1VFOnHeaderClick +1VFOnHeaderSized +1VFOnHeaderSizing +1VFOnSelectCell +1VFOnSetCheckboxState +1VFOnSetEditText +1MCellNeedsCheckboxBitmaps +1MDrawCellCheckboxBitmaps +2VFGrid +2MCalcCellExtent +2MCellClick +2MColRowDeleted +2MColRowExchanged +2MColRowInserted +2MColRowMoved +2MCreateVirtualGrid +2MDrawCell +2MDrawCellAutonumbering +2MDrawFocusRect +2MGetCheckBoxState +2MGetEditMask +2MGetEditText +2MGridMouseWheel +2MHeaderClick +2MHeaderSized +2MHeaderSizing 2MKeyDown -2MKeyPress -2MWndProc -2MWSRegisterClass +2MNotifyColRowChange +2MSelectCell +2MSetColor +2MSetCheckboxState +2MSetEditText +2MSizeChanged +2MToggleCheckbox +2POnGetCheckboxState rw +2POnSetCheckboxState rw 3MCreate 3MDestroy -3MEditingDone -3MLoadMemo -3MExecuteAction -3MUpdateAction -3PField r +3MDeleteColRow +3MDeleteCol +3MDeleteRow +3MExchangeColRow +3MInsertColRow +3MMoveColRow +3MSortColRow +3MDefaultDrawCell +3PAllowOutboundEvents +3PBorderColor +3PCanvas +3PCol +3PColWidths +3PEditor +3PEditorBorderStyle +3PEditorMode +3PExtendedColSizing +3PAltColorStartNormal +3PFastEditing +3PFocusColor +3PFocusRectVisible +3PGridHeight +3PGridLineColor +3PGridLineStyle +3PGridWidth +3PIsCellSelected +3PLeftCol +3PRow +3PRowHeights +3PSaveOptions +3PSelectedColor +3PSelectedColumn +3PSelection +3PStrictSort +3PTopRow +3PUseXORFeatures +3PAlign +3PAnchors +3PAutoAdvance +3PAutoFillColumns +3PBorderSpacing +3PBorderStyle +3PColor +3PColCount +3PColumns +3PConstraints +3PDefaultColWidth +3PDefaultDrawing +3PDefaultRowHeight +3PEnabled +3PFixedColor +3PFixedCols +3PFixedHotColor +3PFixedRows +3PFlat +3PFont +3PGridLineWidth +3POptions +3PParentShowHint +3PPopupMenu +3PRowCount +3PScrollBars +3PShowHint +3PTabAdvance +3PTabOrder +3PTabStop +3PVisible +3PVisibleColCount +3PVisibleRowCount +3POnBeforeSelection +3POnClick +3POnColRowDeleted rw +3POnColRowExchanged rw +3POnColRowInserted rw +3POnColRowMoved rw +3POnCompareCells +3POnContextPopup +3POnDblClick +3POnDragDrop +3POnDragOver +3POnDrawCell +3POnEditButtonClick +3POnButtonClick +3POnEndDock +3POnEndDrag +3POnEnter +3POnExit +3POnGetEditMask rw +3POnGetEditText rw +3POnHeaderClick rw +3POnHeaderSized rw +3POnHeaderSizing rw +3POnKeyDown +3POnKeyPress +3POnKeyUp +3POnMouseDown +3POnMouseEnter +3POnMouseLeave +3POnMouseMove +3POnMouseUp +3POnMouseWheel +3POnMouseWheelDown +3POnMouseWheelUp +3POnPickListSelect +3POnPrepareCanvas +3POnSelectEditor +3POnSelection +3POnSelectCell rw +3POnSetEditText rw +3POnStartDock +3POnStartDrag +3POnTopleftChanged +3POnUTF8KeyPress +#lcl.Grids.TDrawGrid #lcl.Grids.TCustomDrawGrid +3PInplaceEditor 4PAlign +4PAlternateColor 4PAnchors -4PAutoDisplay rw -4PBiDiMode +4PAutoAdvance +4PAutoEdit +4PAutoFillColumns 4PBorderSpacing 4PBorderStyle -4PCharCase -4PColor -4PConstraints -4PDataField rw -4PDataSource rw -4PDragCursor -4PDragMode -4PEnabled -4PFont -4PMaxLength -4POnChange -4POnClick -4POnContextPopup -4POnDblClick -4POnDragDrop -4POnDragOver -4POnEditingDone -4POnEndDrag -4POnEnter -4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnStartDrag -4POnUTF8KeyPress -4PParentBiDiMode -4PParentFont -4PPopupMenu -4PReadOnly rw -4PScrollBars -4PTabOrder -4PTabstop -4PVisible -4PWordWrap -#lcl.DbCtrls.TDBGroupBox #lcl.StdCtrls.TCustomGroupBox -1VFDataLink -1MGetDataField -1MGetDataSource -1MGetField -1MSetDataField -1MSetDataSource -1MCMGetDataLink -2MDataChange -2MNotification -3MCreate -3MDestroy -3MExecuteAction -3MUpdateAction -3PField r -4PAlign -4PAnchors -4PBiDiMode -4PBorderSpacing -4PCaption -4PClientHeight -4PClientWidth 4PColor +4PColCount +4PColumnClickSorts +4PColumns 4PConstraints -4PDataField rw -4PDataSource rw +4PDefaultColWidth +4PDefaultDrawing +4PDefaultRowHeight 4PDragCursor +4PDragKind 4PDragMode 4PEnabled +4PExtendedSelect +4PFixedColor +4PFixedCols +4PFixedRows +4PFlat 4PFont -4POnClick -4POnDblClick -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnEnter -4POnExit -4POnKeyDown -4POnKeyPress -4POnKeyUp -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnResize -4POnStartDrag -4POnUTF8KeyPress -4PParentBiDiMode +4PGridLineWidth +4PHeaderHotZones +4PHeaderPushZones +4PMouseWheelOption +4POptions 4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu -4PShowHint -4PTabOrder -4PTabStop -4PVisible -#lcl.DbCtrls.TDBImage #lcl.ExtCtrls.TCustomImage -1VFDataLink -1VFAutoDisplay -1VFOnDBImageRead -1VFOnDBImageWrite -1VFQuickDraw -1VFPictureLoaded -1VFUpdatingRecord -1VFWriteHeader -1MGetDataField -1MGetDataSource -1MGetField -1MGetReadOnly -1MSetAutoDisplay -1MSetDataField -1MSetDataSource -1MSetReadOnly -1MCMGetDataLink -2MNotification -2MDataChange -2MUpdateData -2MPictureChanged -2MLoadPicture -2MWSRegisterClass -3MCreate -3MDestroy -3MExecuteAction -3MUpdateAction -3PField r -3MChange -4PAlign -4PAnchors -4PAutoDisplay rw -4PAutoSize -4PBorderSpacing -4PCenter -4PConstraints -4PDataField rw -4PDataSource rw -4PDragCursor -4PDragMode -4POnClick -4POnDblClick -4POnDBImageRead rw -4POnDBImageWrite rw -4PPopupMenu -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnMouseDown -4POnMouseEnter -4POnMouseLeave -4POnMouseMove -4POnMouseUp -4POnMouseWheel -4POnMouseWheelDown -4POnMouseWheelUp -4POnStartDrag -4PProportional -4PQuickDraw rw -4PReadOnly rw -4PStretch -4PTransparent -4PVisible -4PWriteHeader rw -#lcl.DbCtrls.TDBCalendar #lcl.Calendar.TCalendar -1VFDataLink -1MDataChange -1MUpdateData -1MGetDataField -1MGetDataSource -1MGetField -1MGetReadOnly -1MSetReadOnly -1MSetDate -1MSetDataField -1MSetDataSource -1MUpdateDate -1MCMGetDataLink -2MNotification -3MCreate -3MDestroy -3MEditingDone -3MExecuteAction -3MUpdateAction -3PField r -4PBorderSpacing -4PDataField rw -4PDataSource rw -4PDate ws -4PReadOnly rw -4PDisplaySettings s -4PDragCursor -4PDragMode -4PVisible -4POnClick -4POnDragDrop -4POnDragOver -4POnEndDrag -4POnMouseMove -4POnMouseDown -4POnDayChanged -4POnMonthChanged -4POnStartDrag -4POnYearChanged -#lcl.DbCtrls.TDBCustomNavigator #lcl.ExtCtrls.TCustomPanel -1VFBeforeAction -1VFDataLink -1VFDirection -1VFOnNavClick -1VFVisibleButtons -1VFDefaultHints -1VFHints -1VFUpdateButtonsLock -1VFOriginalHints -1VFOptions -1VFFlat -1VFConfirmDelete -1VFUpdateButtonsNeeded -1VFShowButtonHints -1VFImages -1VFImageChangeLink -1MDefaultHintsChanged -1MGetDataSource -1MGetHints -1MSetDataSource -1MSetDirection -1MSetFlat -1MSetHints -1MSetImages -1MSetOptions -1MSetShowButtonHints -1MSetVisibleButtons -1MCMGetDataLink -1MImageListChange -2VButtons -2VFocusableButtons -2MDataChanged -2MEditingChanged -2MActiveChanged -2MLoaded -2MNotification -2MUpdateButtons -2MUpdateHints -2MHintsChanged -2MButtonClickHandler -2MGetControlClassDefaultSize -2MBeginUpdateButtons -2MEndUpdateButtons -2MSetEnabled -3MCreate -3MDestroy -3MBtnClick -3MVisibleButtonCount -3PBeforeAction rw -3PConfirmDelete rw -3PDataSource rw -3PDirection rw -3PFlat rw -3PHints rw -3POptions rw -3POnClick rw -3PVisibleButtons rw -3PShowButtonHints rw -3PImages rw -#lcl.DbCtrls.TDBNavButton #lcl.Buttons.TSpeedButton -1VFIndex -1VFNavStyle -3MDestroy -3PNavStyle rw -3PIndex rw -#lcl.DbCtrls.TDBNavFocusableButton #lcl.Buttons.TBitBtn -1VFIndex -1VFNavStyle -3PNavStyle rw -3PIndex rw -#lcl.DbCtrls.TDBNavDataLink #fcl.db.TDataLink -1VFNavigator -2MEditingChanged -2MDataSetChanged -2MActiveChanged -3MCreate -#lcl.DbCtrls.TDBNavigator #lcl.DbCtrls.TDBCustomNavigator -4PAlign -4PAlignment -4PAnchors -4PAutoSize -4PBidiMode -4PBeforeAction -4PBevelInner -4PBevelOuter -4PBevelWidth -4PBorderSpacing -4PBorderStyle -4PBorderWidth -4PCaption -4PChildSizing -4PClientHeight -4PClientWidth -4PColor -4PConfirmDelete -4PDataSource -4PDirection -4PDragCursor -4PDragMode -4PEnabled -4PFlat -4PFont -4PHints +4PRangeSelectMode +4PRowCount +4PScrollBars +4PShowHint +4PTabAdvance +4PTabOrder +4PTabStop +4PTitleFont +4PTitleImageList +4PTitleStyle +4PUseXORFeatures +4PVisible +4PVisibleColCount +4PVisibleRowCount +4POnBeforeSelection +4POnCheckboxToggled 4POnClick +4POnColRowDeleted +4POnColRowExchanged +4POnColRowInserted +4POnColRowMoved +4POnCompareCells +4POnContextPopup 4POnDblClick 4POnDragDrop 4POnDragOver +4POnDrawCell +4POnEditButtonClick +4POnButtonClick +4POnEditingDone +4POnEndDock 4POnEndDrag 4POnEnter 4POnExit +4POnGetCheckboxState +4POnGetEditMask +4POnGetEditText +4POnHeaderClick +4POnHeaderSized +4POnHeaderSizing +4POnKeyDown +4POnKeyPress +4POnKeyUp 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -34465,76 +35789,180 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp -4POnResize +4POnPickListSelect +4POnPrepareCanvas +4POnSelectEditor +4POnSelection +4POnSelectCell +4POnSetCheckboxState +4POnSetEditText +4POnStartDock 4POnStartDrag +4POnTopleftChanged +4POnUserCheckboxBitmap +4POnUTF8KeyPress +#lcl.Grids.TStringGridStrings #rtl.Classes.TStrings +1VFAddedCount +1VFGrid +1VFIsCol +1VFIndex +1VFOwner +1MConvertIndexLineCol +2MGet +2MGetCount +2MGetObject +2MPut +2MPutObject +3MCreate +3MDestroy +3MAdd +3MAssign +3MClear +3MDelete +3MInsert +#lcl.Grids.TCustomStringGrid #lcl.Grids.TCustomDrawGrid +1VFModified +1VFColsMap +1VFRowsMap +1MGetCols +1MGetObjects +1MGetRows +1MMapFree +1MMapGetColsRows +1MReadCells +1MSetCols +1MSetObjects +1MSetRows +1MWriteCells +1MCopyCellRectToClipboard +2MAssignTo +2MAutoAdjustColumn +2MCalcCellExtent +2MDefineProperties +2MDefineCellsProperty +2MDoCompareCells +2MDoCopyToClipboard +2MDoCutToClipboard +2MDoPasteFromClipboard +2MDrawTextInCell +2MDrawCellAutonumbering +2MGetCells +2MGetCheckBoxState +2MGetEditText +2MLoadContent +2MLoaded +2MSaveContent +2MSelectionSetText +2MSetCells +2MSetCheckboxState +2MSetEditText +2PModified rw +3MCreate +3MDestroy +3MAutoSizeColumn +3MAutoSizeColumns +3MClean +3MCopyToClipboard +3MInsertRowWithValues +3MLoadFromCSVStream +3MLoadFromCSVFile +3MSaveToCSVStream +3MSaveToCSVFile +3PCells rw +3PCols rw +3PDefaultTextStyle +3PEditorMode +3PExtendedSelect +3PObjects rw +3PRows rw +3PUseXORFeatures +#lcl.Grids.TStringGrid #lcl.Grids.TCustomStringGrid +2MWSRegisterClass +3PModified +3PInplaceEditor +4PAlign +4PAlternateColor +4PAnchors +4PAutoAdvance +4PAutoEdit +4PAutoFillColumns +4PBiDiMode +4PBorderSpacing +4PBorderStyle +4PCellHintPriority +4PColor +4PColCount +4PColumnClickSorts +4PColumns +4PConstraints +4PDefaultColWidth +4PDefaultDrawing +4PDefaultRowHeight +4PDragCursor +4PDragKind +4PDragMode +4PEnabled +4PExtendedSelect +4PFixedColor +4PFixedCols +4PFixedRows +4PFlat +4PFont +4PGridLineWidth +4PHeaderHotZones +4PHeaderPushZones +4PMouseWheelOption 4POptions -4PParentBidiMode +4PParentBiDiMode 4PParentColor 4PParentFont 4PParentShowHint 4PPopupMenu +4PRangeSelectMode +4PRowCount +4PScrollBars 4PShowHint +4PTabAdvance 4PTabOrder 4PTabStop +4PTitleFont +4PTitleImageList +4PTitleStyle +4PUseXORFeatures 4PVisible -4PVisibleButtons -4PImages -#lcl.Calendar.EInvalidDate #rtl.sysutils.Exception -#lcl.Calendar.TCustomCalendar #lcl.Controls.TWinControl -1VFDateAsString -1VFDate -1VFDisplaySettings -1VFOnChange -1VFDayChanged -1VFMonthChanged -1VFYearChanged -1VFPropsChanged -1MGetDateTime -1MSetDateTime -1MGetProps -1MSetProps -1MGetDisplaySettings -1MSetDisplaySettings -1MGetDate -1MSetDate -2MWSRegisterClass -2MLMChanged -2MLMMonthChanged -2MLMYearChanged -2MLMDayChanged -2MGetControlClassDefaultSize -2MLoaded -2MInitializeWnd -2MDestroyWnd -3MCreate -3MHitTest -3PDate rws -3PDateTime rw -3PDisplaySettings rw -3POnChange rw -3POnDayChanged rw -3POnMonthChanged rw -3POnYearChanged rw -#lcl.Calendar.TCalendar #lcl.Calendar.TCustomCalendar -4PAlign -4PAnchors -4PAutoSize -4PBorderSpacing -4PConstraints -4PDateTime -4PDisplaySettings -4PHint -4POnChange +4PVisibleColCount +4PVisibleRowCount +4POnBeforeSelection 4POnChangeBounds +4POnCheckboxToggled 4POnClick -4POnDayChanged +4POnColRowDeleted +4POnColRowExchanged +4POnColRowInserted +4POnColRowMoved +4POnCompareCells +4POnContextPopup +4POnDragDrop +4POnDragOver 4POnDblClick +4POnDrawCell +4POnEditButtonClick +4POnButtonClick +4POnEditingDone +4POnEndDock +4POnEndDrag 4POnEnter 4POnExit +4POnGetCellHint +4POnGetCheckboxState +4POnGetEditMask +4POnGetEditText +4POnHeaderClick +4POnHeaderSized +4POnHeaderSizing 4POnKeyDown 4POnKeyPress 4POnKeyUp -4POnMonthChanged 4POnMouseDown 4POnMouseEnter 4POnMouseLeave @@ -34543,14 +35971,41 @@ 4POnMouseWheel 4POnMouseWheelDown 4POnMouseWheelUp +4POnPickListSelect +4POnPrepareCanvas 4POnResize +4POnSelectEditor +4POnSelection +4POnSelectCell +4POnSetCheckboxState +4POnSetEditText +4POnShowHint +4POnStartDock +4POnStartDrag +4POnTopLeftChanged +4POnUserCheckboxBitmap 4POnUTF8KeyPress -4POnYearChanged -4PPopupMenu -4PShowHint -4PTabOrder -4PTabStop -4PVisible +4POnValidateEntry +#lcl.DynamicArray.EArray #rtl.sysutils.Exception +#lcl.DynamicArray.TArray #rtl.System.TObject +1VFCols +1VFOnDestroyItem +1VFOnNewItem +1MGetarr +1MSetarr +1MClearCol +1MAumentar_Rows +1MDestroyItem +3MCreate +3MDestroy +3MSetLength +3MDeleteColRow +3MMoveColRow +3MExchangeColRow +3MClear +3PArr rw +3POnDestroyItem rw +3POnNewItem rw #lcl.LCLTranslator.TUpdateTranslator #lcl.LResources.TAbstractTranslator 1VFStackPath 1MIntUpdateTranslation @@ -34746,7 +36201,7 @@ 2MCreateParams 3MCreate 3PPreviewFileDialog rw -#lcl.ExtDlgs.TPreviewFileDialog TOpenDialog +#lcl.ExtDlgs.TPreviewFileDialog #lcl.Dialogs.TOpenDialog 1VFPreviewFileControl 2MWSRegisterClass 2MCreatePreviewControl @@ -34777,7 +36232,7 @@ 2MWSRegisterClass 2MDefaultTitle 3MCreate -#lcl.ExtDlgs.TExtCommonDialog TCommonDialog +#lcl.ExtDlgs.TExtCommonDialog #lcl.Dialogs.TCommonDialog 1VFDialogPosition 1VFLeft 1VFTop @@ -34803,7 +36258,17 @@ 1VFOnChange 1VFOnCalcKey 1VFOnDisplayChange +1VFDialogScale +1VFColorBtnDigits +1VFColorBtnOthers +1VFColorBtnMemory +1VFColorBtnOk +1VFColorBtnCancel +1VFColorBtnClear +1VFColorDisplayText +1VFColorDisplayBack 1MGetDisplay +1MSetDialogScale 2MWSRegisterClass 2MChange 2MCalcKey @@ -34822,28 +36287,15 @@ 4POnCalcKey rw 4POnChange rw 4POnDisplayChange rw -#lcl.ExtDlgs.TCalculatorForm #lcl.Forms.TForm -1VFMainPanel -1VFCalcPanel -1VFDisplayPanel -1VFDisplayLabel -1MFormKeyPress -1MCopyItemClick -1MGetValue -1MPasteItemClick -1MSetValue -2MWSRegisterClass -2MOkClick -2MCancelClick -2MCalcKey -2MDisplayChange -2MInitForm -2PMainPanel r -2PCalcPanel r -2PDisplayPanel r -2PDisplayLabel r -3MCreate -3PValue rw +4PDialogScale rw +4PColorBtnDigits rw +4PColorBtnMemory rw +4PColorBtnOk rw +4PColorBtnCancel rw +4PColorBtnClear rw +4PColorBtnOthers rw +4PColorDisplayText rw +4PColorDisplayBack rw #lcl.ExtDlgs.TCalendarDialog #lcl.ExtDlgs.TExtCommonDialog 1VFDate 1VFDayChanged @@ -35029,11 +36481,16 @@ 1VFRoot 1VFShellListView 1VFFileSortType +1VFInitialRoot 1MGetPath 1MSetFileSortType +1MSetObjectTypes 1MSetPath 1MSetRoot 1MSetShellListView +2MDoCreateNodeClass +2MLoaded +2MCreateNode 2MPopulateTreeNodeWithFiles 2MPopulateWithBaseFiles 2MDoSelectionChanged @@ -35084,6 +36541,7 @@ 4PShowHint 4PShowLines 4PShowRoot +4PStateImages 4PTabOrder 4PTabStop 4PTag @@ -35094,8 +36552,19 @@ 4POnChange 4POnChanging 4POnClick +4POnCollapsed +4POnCollapsing 4POnCustomDraw 4POnCustomDrawItem +4POnDblClick +4POnEdited +4POnEditing +4POnEnter +4POnExit +4POnExpanded +4POnExpanding +4POnGetImageIndex +4POnGetSelectedIndex 4POnKeyDown 4POnKeyPress 4POnKeyUp @@ -35121,11 +36590,13 @@ 1VFObjectTypes 1VFRoot 1VFShellTreeView +1VFOnFileAdded 1MSetMask 1MSetShellTreeView 1MSetRoot 2MPopulateWithRoot 2MResize +2POnFileAdded rw 3MCreate 3MDestroy 3MGetPathFromItem @@ -35135,6 +36606,7 @@ 3PShellTreeView rw 3PItems #lcl.ShellCtrls.TShellListView #lcl.ShellCtrls.TCustomShellListView +3PColumns 4PAlign 4PAnchors 4PBorderSpacing @@ -35192,10 +36664,20 @@ 4POnSelectItem 4POnStartDrag 4POnUTF8KeyPress +4POnFileAdded 4PObjectTypes 4PRoot 4PShellTreeView -#lcl.ShellCtrls.EInvalidPath #rtl.sysutils.Exception +#lcl.ShellCtrls.TShellTreeNode #lcl.ComCtrls.TTreeNode +1VFFileInfo +1VFBasePath +2MSetBasePath +3MShortFilename +3MFullFilename +3MIsDirectory +3PBasePath r +#lcl.ShellCtrls.EShellCtrl #rtl.sysutils.Exception +#lcl.ShellCtrls.EInvalidPath #lcl.ShellCtrls.EShellCtrl #lcl.IniPropStorage.TCustomIniPropStorage #lcl.Forms.TFormPropertyStorage 1VFCount 1VFReadOnly @@ -35235,32 +36717,278 @@ 3MShowURL 3MShowHelp 3MGetNodesForKeyword -3MGetEffectiveBaseURL +3MGetEffectiveBaseURL +3MLoad +3MSave +3PDefaultBaseURL rw +4PBaseURL rws +4PAutoRegister +4PKeywordPrefix rw +#lcl.LazHelpHTML.THTMLBrowserHelpViewer #lcl.LazHelpIntf.THelpViewer +1VFBrowserParams +1VFBrowserPath +1VFDefaultBrowser +1VFDefaultBrowserParams +1VFOnFindDefaultBrowser +1MSetBrowserParams +1MSetBrowserPath +3MCreate +3MShowNode +3MFindDefaultBrowser +3MAssign +3MLoad +3MSave +3MGetLocalizedName +3POnFindDefaultBrowser rw +4PBrowserPath rw +4PBrowserParams rw +4PAutoRegister +#lcl.LazHelpIntf.THelpQueryItem #rtl.System.TObject +3MAsString +3MIsEqual +#lcl.LazHelpIntf.TPascalHelpContextList #lcl.LazHelpIntf.THelpQueryItem +1VFCount +1VfItems +1MGetItems +3MAdd +3MInsert +3MClear +3MDestroy +3MIsEqual +3MCompareList +3MAsString +3PCount r +3PItems r +3PList r +#lcl.LazHelpIntf.THelpNode #rtl.Classes.TPersistent +1VFContext +1VFURL +1VFHelpType +1VfID +1VFOwner +1VFTitle +3MCreate +3MCreateURL +3MCreateID +3MCreateURLID +3MCreateContext +3MCreateURLContext +3POwner rw +3MURLValid +3MIDValid +3MContextValid +3MAsString +3MAssign +4PTitle rw +4PHelpType rw +4PURL rw +4PID rw +4PContext rw +#lcl.LazHelpIntf.THelpNodeQuery #rtl.System.TObject +1VFNode +1VFQueryItem +3MCreate +3MIsEqual +3MAsString +3PNode rw +3PQueryItem rw +#lcl.LazHelpIntf.THelpNodeQueryList #rtl.System.TObject +1VfItems +1MGetItems +1MSetItems +3MCreate +3MDestroy +3MCount +3MAdd +3MDelete +3MIndexOf +3MClear +3PItems rw +#lcl.LazHelpIntf.THelpDBItem #rtl.Classes.TPersistent +1VFNode +3MCreate +3MDestroy +4PNode rw +#lcl.LazHelpIntf.THelpDBISourceFile #lcl.LazHelpIntf.THelpDBItem +1VFBasePathObject +1VFFilename +1MSetFilename +3MCreate +3MFileMatches +3MGetFullFilename +3MGetBasePath +4PBasePathObject rw +4PFilename rw +#lcl.LazHelpIntf.THelpDBISourceDirectory #lcl.LazHelpIntf.THelpDBISourceFile +1VFFileMask +1VFWithSubDirectories +3MCreate +3MFileMatches +4PFileMask rw +4PWithSubDirectories rw +#lcl.LazHelpIntf.THelpDBISourceDirectories #lcl.LazHelpIntf.THelpDBISourceDirectory +1VFBaseDirectory +3MCreate +3MFileMatches +3MGetFullFilename +3MGetBasePath +4PBaseDirectory rw +#lcl.LazHelpIntf.THelpDBIClass #lcl.LazHelpIntf.THelpDBItem +1VFTheClass +3PTheClass rw +#lcl.LazHelpIntf.THelpDBIMessage #lcl.LazHelpIntf.THelpDBItem +3MMessageMatches +#lcl.LazHelpIntf.THelpQueryNode #lcl.HelpIntfs.THelpQuery +1VFNode +3MCreate +3PNode rw +#lcl.LazHelpIntf.THelpDatabase #rtl.Classes.TComponent +1VFAutoRegister +1VFBasePathObject +1VFID +1VFDatabases +1VFOnFindViewer +1VFRefCount +1VFSearchItems +1VFSupportedMimeTypes +1VFTOCNode +1MSetAutoRegister +1MSetID +1MSetDatabases +2MSetSupportedMimeTypes +2MAddSupportedMimeType +3MCreate +3MDestroy +3MReference +3MRegisterSelf +3MRelease +3MUnregisterSelf +3MRegistered +3MCanShowTableOfContents +3MShowTableOfContents +3MShowError +3MShowHelp +3MShowHelpFile +3MSupportsMimeType +3MGetNodesForKeyword +3MGetNodesForDirective +3MGetNodesForContext +3MGetNodesForPascalContexts +3MGetNodesForClass +3MGetNodesForMessage +3MFindViewer +3MRegisterItem +3MRegisterItemWithNode +3MRegisterFileItemWithNode +3MUnregisterItem +3MUnregisterAllItems +3MRegisteredItemCount +3MGetRegisteredItem +3MLoad +3MSave +3MGetLocalizedName +3PDatabases rw +3PID rw +3PSupportedMimeTypes r +3PBasePathObject rw +3PTOCNode rw +3PAutoRegister rw +3POnFindViewer rw +#lcl.LazHelpIntf.THelpDatabases #lcl.HelpIntfs.THelpManager +1VFItems +1VFHelpDBClasses +1MGetItems +1MDoRegisterDatabase +1MDoUnregisterDatabase +3MCreate +3MDestroy +3MCount +3PItems r +3MFindDatabase +3MGetDatabase +3MIndexOf +3MCreateUniqueDatabaseID +3MCreateHelpDatabase +3MShowTableOfContents +3MShowError +3MGetBaseURLForBasePathObject +3MGetBaseDirectoryForBasePathObject +3MFindViewer +3MSubstituteMacros +3MShowHelpForNodes +3MShowHelpForQuery +3MShowHelpForContext +3MShowHelpForKeyword +3MShowHelpForDirective +3MShowHelpForPascalContexts +3MShowHelpForSourcePosition +3MShowHelpForMessageLine +3MShowHelpForClass +3MShowHelpFile +3MShowHelp +3MGetNodesForKeyword +3MGetNodesForDirective +3MGetNodesForContext +3MGetNodesForPascalContexts +3MGetNodesForClass +3MGetNodesForMessage +3MShowHelpSelector +3MRegisterHelpDatabaseClass +3MUnregisterHelpDatabaseClass +3MHelpDatabaseClassCount +3MGetHelpDatabaseClass 3MLoad 3MSave -3PDefaultBaseURL rw -4PBaseURL rws -4PAutoRegister -4PKeywordPrefix rw -#lcl.LazHelpHTML.THTMLBrowserHelpViewer #lcl.LazHelpIntf.THelpViewer -1VFBrowserParams -1VFBrowserPath -1VFDefaultBrowser -1VFDefaultBrowserParams -1VFOnFindDefaultBrowser -1MSetBrowserParams -1MSetBrowserPath +#lcl.LazHelpIntf.THelpViewer #rtl.Classes.TComponent +1VFAutoRegister +1VFParameterHelp +1VFStorageName +1VFSupportedMimeTypes +1MSetAutoRegister +2MSetSupportedMimeTypes +2MAddSupportedMimeType 3MCreate +3MDestroy +3MSupportsTableOfContents +3MShowTableOfContents +3MSupportsMimeType 3MShowNode -3MFindDefaultBrowser +3MHide 3MAssign 3MLoad 3MSave 3MGetLocalizedName -3POnFindDefaultBrowser rw -4PBrowserPath rw -4PBrowserParams rw -4PAutoRegister +3MRegisterSelf +3MUnregisterSelf +3PSupportedMimeTypes r +3PParameterHelp rw +3PStorageName rw +3PAutoRegister rw +#lcl.LazHelpIntf.THelpViewers #rtl.System.TObject +1VFItems +1VFDestroying +1MGetItems +3MCreate +3MDestroy +3MClear +3MCount +3MGetViewersSupportingMimeType +3MRegisterViewer +3MUnregisterViewer +3MLoad +3MSave +3MIndexOf +3PItems r +#lcl.LazHelpIntf.THelpBasePathObject #rtl.Classes.TPersistent +1VFBasePath +2MSetBasePath +3MCreate +3PBasePath rw +#lcl.LazHelpIntf.THelpBaseURLObject #rtl.Classes.TPersistent +1VFBaseURL +2MSetBaseURL +3MCreate +3PBaseURL rw #lcl.LazLinkedList.TLinkListItem #rtl.System.TObject 0VNext 0VPrior @@ -35393,6 +37121,7 @@ 4PAnchors 4PBorderSpacing 4PConstraints +4PColor 4PCursor 4PEnabled 4POnMouseDown @@ -35470,13 +37199,13 @@ 2MSetClipRect 2MGetClipping 2MSetClipping -2MBeginDoc -2MEndDoc -2MNewPage 2MDoMoveTo 2MDoLineTo 3MCreate 3MDestroy +3MBeginDoc +3MEndDoc +3MNewPage 3MSaveToFile 3MPolyline 3MPolyBezier @@ -35506,7 +37235,200 @@ 3MBeginDoc 3MEndDoc 3MNewPage -#lcl.postscriptunicode.TPsUnicode #rtl.System.TObject +#lcl.Printers.EPrinter #rtl.sysutils.Exception +#lcl.Printers.TPrinterCanvas #lcl.Graphics.TCanvas +1VfPrinter +1VfTitle +1VfPageNum +1VfTopMargin +1VfLeftMargin +1VfBottomMargin +1VfRightMargin +1VfPaperWidth +1VfPaperHeight +1VfOrientation +1VfXDPI +1VfYDPI +1MGetOrientation +1MGetPageHeight +1MGetPageWidth +1MGetPaperHeight +1MGetPaperWidth +1MGetTitle +1MGetXDPI +1MGetYDPI +1MSetOrientation +1MSetPaperHeight +1MSetPaperWidth +1MSetTitle +1MHasDefaultMargins +1MSetXDPI +1MSetYDPI +2MGetLeftMargin +2MGetTopMargin +2MGetBottomMargin +2MGetRightMargin +3MCreate +3MBeginDoc +3MNewPage +3MEndDoc +3MChanging +3PPrinter r +3PTitle rw +3PPageHeight r +3PPageWidth r +3PPaperWidth rw +3PPaperHeight rw +3PPageNumber r +3PTopMargin rw +3PLeftMargin rw +3PBottomMargin rw +3PRightMargin rw +3POrientation rw +3PXDPI rw +3PYDPI rw +#lcl.Printers.TFilePrinterCanvas #lcl.Printers.TPrinterCanvas +2VFOutputFileName +3POutputFileName rw +#lcl.Printers.TPaperSize #rtl.System.TObject +1VfOwnedPrinter +1VfSupportedPapers +1VfLastPrinterIndex +1MGetDefaultPaperName +1MGetPhysPaperHeight +1MGetPaperName +1MGetPaperRect +1MGetPhysPaperWidth +1MGetSupportedPapers +1MSetPaperName +1MPaperRectOfName +1MCheckSupportedPapers +1VfInternalPapers +1VfDefaultPapers +1VfDefaultPaperIndex +1MCreateInternalPapers +1MFillDefaultPapers +1MGetDefaultPaperRect +1MIndexOfDefaultPaper +3MCreate +3MDestroy +3PDefaultPapers r +3PWidth r +3PHeight r +3PPaperName rw +3PDefaultPaperName r +3PPaperRect r +3PSupportedPapers r +3PPaperRectOf r +#lcl.Printers.TPrinter #rtl.System.TObject +1VfCanvas +1VFFileName +1VfFonts +1VfPageNumber +1VfPrinters +1VfPrinterIndex +1VfTitle +1VfPaperSize +1VfCanvasClass +1VfBins +1VfFlags +1MGetAborted +1MGetCanvas +1MCheckPrinting +1MGetCanvasClass +1MGetCopies +1MGetFonts +1MGetOrientation +1MGetPageHeight +1MGetPageWidth +1MGetPaperSize +1MGetBinName +1MGetDefaultBinName +1MGetPrinterIndex +1MGetPrinterName +1MGetPrinters +1MGetPrinting +1MGetRawMode +1MSetCanvasClass +1MSetCopies +1MSetOrientation +1MSetPrinterIndex +1MSetRawMode +1MSetBinName +2MSelectCurrentPrinterOrDefault +2MDoBeginDoc +2MDoNewPage +2MDoEndDoc +2MDoAbort +2MDoResetPrintersList +2MDoResetFontsList +2MDoEnumPrinters +2MDoEnumFonts +2MDoEnumPapers +2MDoEnumBins +2MDoInitialization +2MDoSetPrinter +2MDoGetCopies +2MDoSetCopies +2MDoGetOrientation +2MDoSetOrientation +2MDoGetDefaultPaperName +2MDoGetPaperName +2MDoSetPaperName +2MDoGetDefaultBinName +2MDoGetBinName +2MDoSetBinName +2MDoGetPaperRect +2MDoGetPrinterState +2MDoDestroy +2MGetPrinterType +2MGetCanPrint +2MGetCanRenderCopies +2MGetXDPI +2MGetYDPI +2MGetBins +2MCheckRawMode +2MRawModeChanging +2MPrinterSelected +2MDoGetDefaultCanvasClass +2PPrinterFlags rw +3MCreate +3MDestroy +3MAbort +3MBeginDoc +3MEndDoc +3MNewPage +3MRefresh +3MSetPrinter +3MRestoreDefaultBin +3MWrite +3PPrinterIndex rw +3PPrinterName r +3PPaperSize r +3POrientation rw +3PPrinterState r +3PCopies rw +3PPrinters r +3PFileName rw +3PFonts r +3PCanvas r +3PCanvasClass rw +3PPageHeight r +3PPageWidth r +3PPageNumber r +3PAborted r +3PPrinting r +3PTitle rw +3PPrinterType r +3PCanPrint r +3PCanRenderCopies r +3PXDPI r +3PYDPI r +3PRawMode rw +3PDefaultBinName r +3PBinName rw +3PSupportedBins r +#lcl.PostScriptUnicode.TPsUnicode #rtl.System.TObject 1VFFontSize 1VFFontStyle 1VFGlyphs @@ -35810,6 +37732,231 @@ 4PTabOrder 4PValue 4PVisible +#lcl.StdActns.THintAction #lcl.Forms.TCustomHintAction +#lcl.StdActns.TEditAction #lcl.ActnList.TAction +1VFControl +1MSetControl +2MNotification +3MDestroy +3MHandlesTarget +3PControl rw +#lcl.StdActns.TEditCut #lcl.StdActns.TEditAction +3MExecuteTarget +3MUpdateTarget +#lcl.StdActns.TEditCopy #lcl.StdActns.TEditAction +3MExecuteTarget +3MUpdateTarget +#lcl.StdActns.TEditPaste #lcl.StdActns.TEditAction +3MUpdateTarget +3MExecuteTarget +#lcl.StdActns.TEditSelectAll #lcl.StdActns.TEditAction +3MExecuteTarget +3MUpdateTarget +#lcl.StdActns.TEditUndo #lcl.StdActns.TEditAction +3MExecuteTarget +3MUpdateTarget +#lcl.StdActns.TEditDelete #lcl.StdActns.TEditAction +3MExecuteTarget +3MUpdateTarget +#lcl.StdActns.THelpAction #lcl.ActnList.TAction +3MCreate +3MHandlesTarget +3MUpdateTarget +#lcl.StdActns.THelpContents #lcl.StdActns.THelpAction +3MExecuteTarget +#lcl.StdActns.THelpTopicSearch #lcl.StdActns.THelpAction +3MExecuteTarget +#lcl.StdActns.THelpOnHelp #lcl.StdActns.THelpAction +3MExecuteTarget +#lcl.StdActns.THelpContextAction #lcl.StdActns.THelpAction +3MExecuteTarget +3MUpdateTarget +#lcl.StdActns.TCommonDialogAction #lcl.ActnList.TCustomAction +1VFBeforeExecute +1VFExecuteResult +1VFOnAccept +1VFOnCancel +2VFDialog +2MDoAccept +2MDoBeforeExecute +2MDoCancel +2MGetDialogClass +2MCreateDialog +3MCreate +3MHandlestarget +3MExecuteTarget +3PExecuteResult r +3PBeforeExecute rw +3POnAccept rw +3POnCancel rw +#lcl.StdActns.TFileAction #lcl.StdActns.TCommonDialogAction +1MGetFileName +1MSetFileName +2MGetDialog +2PFileName rw +#lcl.StdActns.TFileOpen #lcl.StdActns.TFileAction +1VFUseDefaultApp +1MGetDialog +2MGetDialogClass +4PCaption +4PDialog r +4PEnabled +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4PShortCut +4PSecondaryShortCuts +4PUseDefaultApp rw +4PVisible +4PBeforeExecute +4POnAccept +4POnCancel +4POnHint +#lcl.StdActns.TFileOpenWith #lcl.StdActns.TFileOpen +1VFAfterOpen +1VFFileName +4PFileName rw +4PAfterOpen rw +#lcl.StdActns.TFileSaveAs #lcl.StdActns.TFileAction +1MGetSaveDialog +2MGetDialogClass +4PCaption +4PDialog r +4PEnabled +4PHelpContext +4PHint +4PImageIndex +4PShortCut +4PSecondaryShortCuts +4PVisible +4PBeforeExecute +4POnAccept +4POnCancel +4POnHint +#lcl.StdActns.TFileExit #lcl.ActnList.TCustomAction +3MHandlesTarget +3MExecuteTarget +4PCaption +4PEnabled +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4PShortCut +4PSecondaryShortCuts +4PVisible +4POnHint +#lcl.StdActns.TSearchAction #lcl.StdActns.TCommonDialogAction +2VFControl +2MCreateDialog +2MNotification +2MUpdateControl +2MPerformSearch +2MShowNotFound +3MCreate +3MDestroy +3MHandlesTarget +3MSearch +3MUpdateTarget +3MExecuteTarget +#lcl.StdActns.TSearchFind #lcl.StdActns.TSearchAction +1MGetFindDialog +2MGetDialogClass +4PCaption +4PDialog r +4PEnabled +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4PShortCut +4PSecondaryShortCuts +4PVisible +4PBeforeExecute +4POnAccept +4POnCancel +4POnHint +#lcl.StdActns.TSearchReplace #lcl.StdActns.TSearchAction +1MGetReplaceDialog +2MGetDialogClass +2MCreateDialog +3MReplace +4PCaption +4PDialog r +4PEnabled +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4PShortCut +4PSecondaryShortCuts +4PVisible +4PBeforeExecute +4POnAccept +4POnCancel +4POnHint +#lcl.StdActns.TSearchFindFirst #lcl.StdActns.TSearchFind +#lcl.StdActns.TSearchFindNext #lcl.ActnList.TCustomAction +1VFSearchFind +1MSetSearchFind +3MCreate +3MHandlesTarget +3MUpdateTarget +3MExecuteTarget +3MNotification +4PCaption +4PEnabled +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4PSearchFind rw +4PShortCut +4PSecondaryShortCuts +4PVisible +4POnHint +#lcl.StdActns.TFontEdit #lcl.StdActns.TCommonDialogAction +1MGetDialog +2MGetDialogClass +4PCaption +4PDialog r +4PEnabled +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4PShortCut +4PSecondaryShortCuts +4PVisible +4PBeforeExecute +4POnAccept +4POnCancel +4POnHint +#lcl.StdActns.TColorSelect #lcl.StdActns.TCommonDialogAction +1MGetDialog +2MGetDialogClass +4PCaption +4PDialog r +4PEnabled +4PHelpContext +4PHelpKeyword +4PHelpType +4PHint +4PImageIndex +4PShortCut +4PSecondaryShortCuts +4PVisible +4PBeforeExecute +4POnAccept +4POnCancel +4POnHint #lcl.XMLPropStorage.TPropStorageXMLConfig TXMLConfig 3MDeleteSubNodes 3MLoadFromStream @@ -35857,7 +38004,59 @@ 3MWriteToDisk 3MGetFilename 3MSaveToStream -#lcl.AsyncProcess.TAsyncProcess TProcessUTF8 +#lcl.WSControls.TWSDragImageList TWSCustomImageList +4MBeginDrag +4MDragMove +4MEndDrag +4MHideDragImage +4MShowDragImage +#lcl.WSControls.TWSLazAccessibleObject TWSObject +3MCreateHandle +3MDestroyHandle +3MSetAccessibleDescription +3MSetAccessibleValue +3MSetAccessibleRole +3MSetPosition +3MSetSize +#lcl.WSControls.TWSControl TWSLCLComponent +4MAddControl +4MGetConstraints +4MGetDefaultColor +4MConstraintWidth +4MConstraintHeight +#lcl.WSControls.TWSWinControl #lcl.WSControls.TWSControl +4MCanFocus +4MGetClientBounds +4MGetClientRect +4MGetPreferredSize +4MGetDefaultClientRect +4MGetDesignInteractive +4MGetText +4MGetTextLen +4MSetBiDiMode +4MSetBorderStyle +4MSetBounds +4MSetColor +4MSetChildZPosition +4MSetFont +4MSetPos +4MSetSize +4MSetText +4MSetCursor +4MSetShape +4MAdaptBounds +4MConstraintsChange +4MCreateHandle +4MDestroyHandle +4MDefaultWndHandler +4MInvalidate +4MPaintTo +4MShowHide +4MScrollBy +#lcl.WSControls.TWSGraphicControl #lcl.WSControls.TWSControl +#lcl.WSControls.TWSCustomControl #lcl.WSControls.TWSWinControl +#lcl.WSControls.TWSImageList #lcl.WSControls.TWSDragImageList +#lcl.AsyncProcess.TAsyncProcess #lazutils.UTF8Process.TProcessUTF8 1VFPipeHandler 1VFProcessHandler 1VFOnReadData @@ -35875,12 +38074,16 @@ #lcl.Arrow.TArrow #lcl.IndustrialBase.TIndustrialBase 1VFArrowColor 1VFArrowType -1VFR +1VFArrowAngle 1VFShadowType +1VFShadowColor +1VFR 1VFT 1MCalcTrianglePoints +1MSetArrowAngle 1MSetArrowColor 1MSetArrowType +1MSetShadowColor 1MSetShadowType 2MGetControlClassDefaultSize 2MPaint @@ -35889,6 +38092,7 @@ 4PAnchors 4PArrowColor rw 4PArrowType rw +4PArrowPointerAngle rw 4PBorderSpacing 4PColor 4PConstraints @@ -35915,6 +38119,7 @@ 4PParentShowHint 4PPopupMenu 4PShadowType rw +4PShadowColor rw 4PShowHint 4PVisible #lcl.IndustrialBase.TIndustrialBase #lcl.Controls.TGraphicControl @@ -35952,6 +38157,7 @@ #lcl.EditBtn.TEbEdit #lcl.MaskEdit.TCustomMaskEdit 2MDoEnter 2MDoExit +2MPerformTab #lcl.EditBtn.TCustomEditButton #lcl.Controls.TCustomControl 1VFButton 1VFButtonOnlyWhenFocused @@ -36016,6 +38222,9 @@ 1MGetSpacing 1MGetTabStop 1MGetText +1MGetTextHint +1MGetTextHintFontColor +1MGetTextHintFontStyle 1MIsCustomGlyph 1MFocusAndMaybeSelectAll 1MInternalOnButtonClick @@ -36051,7 +38260,6 @@ 1MSetButtonWidth 1MSetCaretPos 1MSetCharCase -1MSetDirectInput 1MSetEchoMode 1MSetEditMask 1MSetEditText @@ -36072,11 +38280,15 @@ 1MSetSelText 1MSetSpacing 1MSetTabStop -1MSetText +1MSetTextHint +1MSetTextHintFontColor +1MSetTextHintFontStyle 2MGetControlClassDefaultSize 2MCalcButtonVisible 2MGetDefaultGlyph 2MGetDefaultGlyphName +2MSetDirectInput +2MSetText 2MGetEditPopupMenu 2MCalculatePreferredSize 2MCheckButtonVisible @@ -36166,6 +38378,9 @@ 3PSelText rw 3PTabStop rw 3PText rw +3PTextHint rw +3PTextHintFontColor rw +3PTextHintFontStyle rw 3POnChange rw 3POnClick rw 3POnDblClick rw @@ -36248,6 +38463,7 @@ 4PParentBiDiMode 4PParentColor 4PParentFont +4PParentShowHint 4PPasswordChar 4PPopupMenu 4PReadOnly @@ -36256,6 +38472,9 @@ 4PTabOrder 4PTabStop 4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle 4PVisible #lcl.EditBtn.TCustomControlFilterEdit #lcl.EditBtn.TCustomEditButton 1VfFilter @@ -36272,6 +38491,7 @@ 1MSetUseFormActivate 1MFormActivate 1MFormDeactivate +1MIsTextHintStored 2VfNeedUpdate 2VfIsFirstUpdate 2VfSelectedPart @@ -36287,6 +38507,10 @@ 2MApplyFilterCore 2MMoveNext 2MMovePrev +2MMovePageUp +2MMovePageDown +2MMoveHome +2MMoveEnd 2MReturnKeyHandled 2MGetDefaultGlyphName 3MCreate @@ -36362,6 +38586,9 @@ 4POnStartDrag 4POnUTF8KeyPress 4PText +4PTextHint s +4PTextHintFontColor +4PTextHintFontStyle #lcl.EditBtn.TFileNameEdit #lcl.EditBtn.TCustomEditButton 1VFDialogOptions 1VFFileName @@ -36459,6 +38686,9 @@ 4POnStartDrag 4POnUTF8KeyPress 4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle #lcl.EditBtn.TDirectoryEdit #lcl.EditBtn.TCustomEditButton 1VFDialogTitle 1VFRootDir @@ -36536,6 +38766,9 @@ 4POnStartDrag 4POnUTF8KeyPress 4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle #lcl.EditBtn.TDateEdit #lcl.EditBtn.TCustomEditButton 1VFDateOrder 1VFDefaultToday @@ -36545,19 +38778,26 @@ 1VFOnCustomDate 1VFOKCaption 1VFCancelCaption -1VFDateFormat +1VFFixedDateFormat +1VFFreeDateFormat +1VFDate +1VFUpdatingDate +1MSetFreeDateFormat +1MTextToDate 1MGetDate 1MSetDate 1MCalendarPopupReturnDate 1MCalendarPopupShowHide 1MSetDateOrder +1MDateToText 2MGetDefaultGlyph 2MGetDefaultGlyphName 2MButtonClick 2MEditDblClick +2MSetDirectInput +2MSetText 2MSetDateMask 3MCreate -3MDateFormatChanged 3MGetDateFormat 3PAutoSelected 3PDate rw @@ -36571,6 +38811,7 @@ 4PReadOnly 4PDefaultToday rw 4PDateOrder rw +4PDateFormat rw 4PButtonOnlyWhenFocused 4PButtonCaption 4PButtonCursor @@ -36630,6 +38871,98 @@ 4PSpacing 4PVisible 4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle +#lcl.EditBtn.TTimeEdit #lcl.EditBtn.TCustomEditButton +1VFTime +1VIsEmptyTime +1VFDefaultNow +1VFDroppedDown +1VFSimpleLayout +1VFOnAcceptTime +1VFOnCustomTime +1MGetTime +1MSetTime +1MSetEmptyTime +1MGetLayout +1MSetLayout +1MTimePopupReturnTime +1MTimePopupShowHide +1MOpenTimePopup +1MParseInput +1MTryParseInput +2MGetDefaultGlyph +2MGetDefaultGlyphName +2MButtonClick +2MEditDblClick +2MEditEditingDone +3MCreate +3PTime rw +3PButton +3PDroppedDown r +4PDefaultNow rw +4POnAcceptTime rw +4POnCustomTime rw +4PReadOnly +4PButtonOnlyWhenFocused +4PButtonWidth +4PAction +4PAlign +4PAnchors +4PAutoSize +4PAutoSelect +4PBidiMode +4PBorderSpacing +4PBorderStyle +4PCharCase +4PColor +4PConstraints +4PDirectInput +4PGlyph +4PNumGlyphs +4PDragMode +4PEchoMode +4PEnabled +4PFlat +4PFocusOnButtonClick +4PFont +4PMaxLength +4POnButtonClick +4POnChange +4POnChangeBounds +4POnClick +4POnDblClick +4POnEditingDone +4POnEnter +4POnExit +4POnKeyDown +4POnKeyPress +4POnKeyUp +4POnMouseDown +4POnMouseEnter +4POnMouseLeave +4POnMouseMove +4POnMouseUp +4POnMouseWheel +4POnMouseWheelDown +4POnMouseWheelUp +4POnResize +4POnUTF8KeyPress +4PParentBidiMode +4PParentColor +4PParentFont +4PParentShowHint +4PPopupMenu +4PShowHint +4PSimpleLayout rw +4PTabStop +4PTabOrder +4PVisible +4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle #lcl.EditBtn.TCalcEdit #lcl.EditBtn.TCustomEditButton 1VFDialogTitle 1VFCalculatorLayout @@ -36708,6 +39041,9 @@ 4POnStartDrag 4POnUTF8KeyPress 4PText +4PTextHint +4PTextHintFontColor +4PTextHintFontStyle #lcl.ValEdit.TItemProp #rtl.Classes.TPersistent 1VFGrid 1VFEditMask @@ -37205,9 +39541,9 @@ 4PTabStop 4PText 4PVisible -#lcl.lazcanvas.TFPSharpInterpolation TFPCustomInterpolation +#lcl.LazCanvas.TFPSharpInterpolation TFPCustomInterpolation 2MExecute -#lcl.lazcanvas.TLazCanvasState #rtl.System.TObject +#lcl.LazCanvas.TLazCanvasState #rtl.System.TObject 3VBrush 3VPen 3VFont @@ -37216,7 +39552,7 @@ 3VClipping 3VClipRegion 3MDestroy -#lcl.lazcanvas.TLazCanvas TFPImageCanvas +#lcl.LazCanvas.TLazCanvas TFPImageCanvas 1VFAssignedBrush 1VFAssignedFont 1VFAssignedPen @@ -37257,23 +39593,23 @@ 3PAssignedFont rw 3PBaseWindowOrg rw 3PWindowOrg rw -#lcl.lazregions.TLazRegionPart #rtl.System.TObject +#lcl.LazRegions.TLazRegionPart #rtl.System.TObject 3MGetBoundingRect 3MIsPointInPart -#lcl.lazregions.TLazRegionRect #lcl.lazregions.TLazRegionPart +#lcl.LazRegions.TLazRegionRect #lcl.LazRegions.TLazRegionPart 3VRect 3MIsPointInPart -#lcl.lazregions.TLazRegionPolygon #lcl.lazregions.TLazRegionPart +#lcl.LazRegions.TLazRegionPolygon #lcl.LazRegions.TLazRegionPart 3VPoints 3VFillMode 3MIsPointInPart -#lcl.lazregions.TLazRegionEllipse #lcl.lazregions.TLazRegionPart +#lcl.LazRegions.TLazRegionEllipse #lcl.LazRegions.TLazRegionPart 3VX1 3VY1 3VX2 3VY2 3MIsPointInPart -#lcl.lazregions.TLazRegion TFPCustomRegion +#lcl.LazRegions.TLazRegion TFPCustomRegion 3VParts 3VIsSimpleRectRegion 3VRect @@ -37293,14 +39629,14 @@ 3MDoChangeToComplexRegion 3MGetBoundingRect 3MIsPointInRegion -#lcl.lazregions.TLazRegionWithChilds #lcl.lazregions.TLazRegion +#lcl.LazRegions.TLazRegionWithChilds #lcl.LazRegions.TLazRegion 3VParent 3VChilds 3VUserData 3MCreate 3MDestroy 3MIsPointInRegion -#lcl.lazdialogs.TLazarusFileDialogForm #lcl.Forms.TForm +#lcl.LazDialogs.TLazarusFileDialogForm #lcl.Forms.TForm 1VFKind 1MSetFilter 3VButtonPanel @@ -37320,23 +39656,23 @@ 3MHandleEditChange 3MHandleSelectItem 3MHandleTreeViewSelectionChanged -#lcl.lazdialogs.TLazOpenDialog TOpenDialog +#lcl.LazDialogs.TLazOpenDialog #lcl.Dialogs.TOpenDialog 2VFForm 2MWSRegisterClass 2MDoExecute 2MDoInitialize 3MCreate -#lcl.lazdialogs.TLazSaveDialog #lcl.lazdialogs.TLazOpenDialog +#lcl.LazDialogs.TLazSaveDialog #lcl.LazDialogs.TLazOpenDialog 2MDoInitialize -#lcl.lazdialogs.TLazSelectDirectoryDialog #lcl.lazdialogs.TLazOpenDialog +#lcl.LazDialogs.TLazSelectDirectoryDialog #lcl.LazDialogs.TLazOpenDialog 2MDoInitialize -#lcl.lazdialogs.TLazMessageDialog #lcl.Forms.TForm +#lcl.LazDialogs.TLazMessageDialog #lcl.Forms.TForm 1VImage1 1VLabel1 1VbtnList 1VNumButtons 3MCreateNew -#lcl.customdrawn_common.TCDDrawerCommon #lcl.customdrawndrawers.TCDDrawer +#lcl.CustomDrawn_Common.TCDDrawerCommon #lcl.CustomDrawnDrawers.TCDDrawer 3MPalDefaultUsesNativePalette 3MLoadFallbackPaletteColors 3MGetMeasures @@ -37375,13 +39711,15 @@ 3MDrawListView 3MDrawReportListView 3MDrawReportListViewItem +3MDrawToolBar +3MDrawToolBarItem 3MDrawCTabControl 3MDrawCTabControlFrame 3MDrawTabSheet 3MDrawTabs 3MDrawTab 3MDrawSpinEdit -#lcl.customdrawndrawers.TCDControlStateEx #rtl.System.TObject +#lcl.CustomDrawnDrawers.TCDControlStateEx #rtl.System.TObject 3VParentRGBColor 3VFPParentRGBColor 3VRGBColor @@ -37389,9 +39727,9 @@ 3VCaption 3VFont 3VAutoSize -#lcl.customdrawndrawers.TCDButtonStateEx #lcl.customdrawndrawers.TCDControlStateEx +#lcl.CustomDrawnDrawers.TCDButtonStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx 3VGlyph -#lcl.customdrawndrawers.TCDEditStateEx #lcl.customdrawndrawers.TCDControlStateEx +#lcl.CustomDrawnDrawers.TCDEditStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx 3VCaretIsVisible 3VCaretPos 3VSelStart @@ -37402,24 +39740,25 @@ 3VLines 3VFullyVisibleLinesCount 3VLineHeight +3VPasswordChar 3VLeftTextMargin 3VRightTextMargin 3VExtraButtonState -#lcl.customdrawndrawers.TCDPanelStateEx #lcl.customdrawndrawers.TCDControlStateEx +#lcl.CustomDrawnDrawers.TCDPanelStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx 3VBevelInner 3VBevelOuter 3VBevelWidth -#lcl.customdrawndrawers.TCDPositionedCStateEx #lcl.customdrawndrawers.TCDControlStateEx +#lcl.CustomDrawnDrawers.TCDPositionedCStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx 3VPosCount 3VPosition 3VFloatPos 3VFloatPageSize -#lcl.customdrawndrawers.TCDProgressBarStateEx #lcl.customdrawndrawers.TCDControlStateEx +#lcl.CustomDrawnDrawers.TCDProgressBarStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx 3VBarShowText 3VPercentPosition 3VSmooth 3VStyle -#lcl.customdrawndrawers.TCDListItems #rtl.System.TObject +#lcl.CustomDrawnDrawers.TCDListItems #rtl.System.TObject 1MDoFreeItem 3VCaption 3VImageIndex @@ -37430,14 +39769,27 @@ 3MAdd 3MGetItem 3MGetItemCount -#lcl.customdrawndrawers.TCDListViewStateEx #lcl.customdrawndrawers.TCDControlStateEx +#lcl.CustomDrawnDrawers.TCDListViewStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx 3VColumns 3VItems 3VViewStyle 3VFirstVisibleColumn 3VFirstVisibleLine 3VShowColumnHeader -#lcl.customdrawndrawers.TCDCTabControlStateEx #lcl.customdrawndrawers.TCDControlStateEx +#lcl.CustomDrawnDrawers.TCDToolBarItem #rtl.System.TObject +0VKind +0VSubpartKind +0VImage +0VCaption +0VWidth +0VDown +0VState +#lcl.CustomDrawnDrawers.TCDToolBarStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx +0VShowCaptions +0VIsVertical +0VItems +0VToolBarHeight +#lcl.CustomDrawnDrawers.TCDCTabControlStateEx #lcl.CustomDrawnDrawers.TCDControlStateEx 3VLeftmostTabVisibleIndex 3VTabs 3VTabIndex @@ -37445,12 +39797,12 @@ 3VOptions 3VCurTabIndex 3VCurStartLeftPos -#lcl.customdrawndrawers.TCDSpinStateEx #lcl.customdrawndrawers.TCDPositionedCStateEx +#lcl.CustomDrawnDrawers.TCDSpinStateEx #lcl.CustomDrawnDrawers.TCDPositionedCStateEx 3VMin 3VIncrement 3VFloatMin 3VFloatIncrement -#lcl.customdrawndrawers.TCDColorPalette #rtl.System.TObject +#lcl.CustomDrawnDrawers.TCDColorPalette #rtl.System.TObject 3VScrollBar 3VBackground 3VActiveCaption @@ -37483,7 +39835,7 @@ 3VMenuBar 3VForm 3MAssign -#lcl.customdrawndrawers.TCDDrawer #rtl.System.TObject +#lcl.CustomDrawnDrawers.TCDDrawer #rtl.System.TObject 3VPalette 3VFallbackPalette 3VPaletteKind @@ -37498,6 +39850,7 @@ 3MLoadFallbackPaletteColors 3MPalDefaultUsesNativePalette 3MGetDrawStyle +3MVisibleText 3MGetControlDefaultColor 3MGetMeasures 3MGetMeasuresEx @@ -37534,13 +39887,15 @@ 3MDrawListView 3MDrawReportListView 3MDrawReportListViewItem +3MDrawToolBar +3MDrawToolBarItem 3MDrawCTabControl 3MDrawCTabControlFrame 3MDrawTabSheet 3MDrawTabs 3MDrawTab 3MDrawSpinEdit -#lcl.customdrawncontrols.TCDControl #lcl.Controls.TCustomControl +#lcl.CustomDrawnControls.TCDControl #lcl.Controls.TCustomControl 2VFDrawStyle 2VFDrawer 2VFState @@ -37566,7 +39921,7 @@ 3MEraseBackground 3MPaint 3MDrawToCanvas -#lcl.customdrawncontrols.TCDScrollableControl #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDScrollableControl #lcl.CustomDrawnControls.TCDControl 1VFRightScrollBar 1VFBottomScrollBar 1VFSpacer @@ -37575,7 +39930,7 @@ 3MCreate 3MDestroy 3PScrollBars rw -#lcl.customdrawncontrols.TCDButtonControl #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDButtonControl #lcl.CustomDrawnControls.TCDControl 2VFHasOnOffStates 2VFIsGrouped 2VFGroupIndex @@ -37598,7 +39953,7 @@ 2PAllowGrayed rw 2PChecked rw 2PState rw -#lcl.customdrawncontrols.TCDButton #lcl.customdrawncontrols.TCDButtonControl +#lcl.CustomDrawnControls.TCDButton #lcl.CustomDrawnControls.TCDButtonControl 1VFGlyph 1VFKind 1VFModalResult @@ -37654,7 +40009,7 @@ 4PTabOrder 4PTabStop 4PVisible -#lcl.customdrawncontrols.TCDEdit #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDEdit #lcl.CustomDrawnControls.TCDControl 1VDragDropStarted 1VFCaretTimer 1VFLines @@ -37664,6 +40019,8 @@ 1MGetLeftTextMargin 1MGetMultiLine 1MGetRightTextMargin +1MGetText +1MGetPasswordChar 1MHandleCaretTimer 1MDoDeleteSelection 1MDoClearSelection @@ -37673,6 +40030,8 @@ 1MSetLines 1MSetMultiLine 1MSetRightTextMargin +1MSetText +1MSetPasswordChar 1MMousePosToCaretPos 1MIsSomethingSelected 2VFEditState @@ -37709,10 +40068,12 @@ 4PEnabled 4PLines rw 4PMultiLine rw +4PPasswordChar rw 4PReadOnly rw 4PTabStop +4PText rws 4POnChange rw -#lcl.customdrawncontrols.TCDCheckBox #lcl.customdrawncontrols.TCDButtonControl +#lcl.CustomDrawnControls.TCDCheckBox #lcl.CustomDrawnControls.TCDButtonControl 2MGetControlId 3MCreate 3MDestroy @@ -37723,7 +40084,7 @@ 4PEnabled 4PTabStop 4PState -#lcl.customdrawncontrols.TCDRadioButton #lcl.customdrawncontrols.TCDButtonControl +#lcl.CustomDrawnControls.TCDRadioButton #lcl.CustomDrawnControls.TCDButtonControl 2MGetControlId 3MCreate 3MDestroy @@ -37732,7 +40093,7 @@ 4PDrawStyle 4PEnabled 4PTabStop -#lcl.customdrawncontrols.TCDComboBox #lcl.customdrawncontrols.TCDEdit +#lcl.CustomDrawnControls.TCDComboBox #lcl.CustomDrawnControls.TCDEdit 1VFIsClickingButton 1VFItemIndex 1VFItems @@ -37750,7 +40111,7 @@ 4PItems rw 4PItemIndex rw 4PKeyboardInputBehavior rw -#lcl.customdrawncontrols.TCDPositionedControl #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDPositionedControl #lcl.CustomDrawnControls.TCDControl 1VDragDropStarted 1VFLastMouseDownPos 1VFPositionAtMouseDown @@ -37791,7 +40152,7 @@ 4POnChange rw 4POnChangeByUser rw 4PPosition rw -#lcl.customdrawncontrols.TCDScrollBar #lcl.customdrawncontrols.TCDPositionedControl +#lcl.CustomDrawnControls.TCDScrollBar #lcl.CustomDrawnControls.TCDPositionedControl 1VFKind 1MSetKind 2MGetPositionFromMousePos @@ -37806,7 +40167,7 @@ 4PKind rw 4PPageSize 4PTabStop -#lcl.customdrawncontrols.TCDGroupBox #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDGroupBox #lcl.CustomDrawnControls.TCDControl 2MGetControlId 2MRealSetText 3MCreate @@ -37816,7 +40177,7 @@ 4PDrawStyle 4PEnabled 4PTabStop -#lcl.customdrawncontrols.TCDPanel #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDPanel #lcl.CustomDrawnControls.TCDControl 1VFBevelInner 1VFBevelOuter 1VFBevelWidth @@ -37837,7 +40198,7 @@ 4PDrawStyle 4PEnabled 4PTabStop -#lcl.customdrawncontrols.TCDStaticText #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDStaticText #lcl.CustomDrawnControls.TCDControl 2MGetControlId 2MRealSetText 3MCreate @@ -37846,7 +40207,7 @@ 4PDrawStyle 4PEnabled 4PTabStop -#lcl.customdrawncontrols.TCDTrackBar #lcl.customdrawncontrols.TCDPositionedControl +#lcl.CustomDrawnControls.TCDTrackBar #lcl.CustomDrawnControls.TCDPositionedControl 1VFOrientation 1MSetOrientation 2MGetPositionFromMousePos @@ -37861,7 +40222,7 @@ 4PEnabled 4POrientation rw 4PTabStop -#lcl.customdrawncontrols.TCDProgressBar #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDProgressBar #lcl.CustomDrawnControls.TCDControl 1VFBarShowText 1VFMin 1VFMax @@ -37894,7 +40255,7 @@ 4PPosition rw 4PSmooth rw 4PStyle rw -#lcl.customdrawncontrols.TCDListView #lcl.customdrawncontrols.TCDScrollableControl +#lcl.CustomDrawnControls.TCDListView #lcl.CustomDrawnControls.TCDScrollableControl 1VFColumns 1VFListItems 1VFShowColumnHeader @@ -37918,7 +40279,30 @@ 4PScrollBars 4PShowColumnHeader rw 4PViewStyle rw -#lcl.customdrawncontrols.TCDTabSheet #lcl.Controls.TCustomControl +#lcl.CustomDrawnControls.TCDToolBar #lcl.CustomDrawnControls.TCDControl +1VFShowCaptions +1VFItems +1MSetShowCaptions +2VFTBState +2MGetControlId +2MCreateControlStateEx +2MPrepareControlStateEx +2MMouseMove +2MMouseDown +2MMouseUp +2MMouseLeave +3MCreate +3MDestroy +3MInsertItem +3MAddItem +3MDeleteItem +3MGetItem +3MGetItemCount +3MGetItemWithMousePos +3MIsPosInButton +4PShowCaptions rw +4PDrawStyle +#lcl.CustomDrawnControls.TCDTabSheet #lcl.Controls.TCustomControl 1VCDTabControl 1VFTabVisible 2MRealSetText @@ -37931,7 +40315,7 @@ 4PColor 4PFont 4PTabVisible rw -#lcl.customdrawncontrols.TCDCustomTabControl #lcl.customdrawncontrols.TCDControl +#lcl.CustomDrawnControls.TCDCustomTabControl #lcl.CustomDrawnControls.TCDControl 1VFOnUserAddedPage 1VFTabIndex 1VFTabs @@ -37958,7 +40342,7 @@ 3POnChange rw 3POnUserAddedPage rw 3PTabIndex rw -#lcl.customdrawncontrols.TCDTabControl #lcl.customdrawncontrols.TCDCustomTabControl +#lcl.CustomDrawnControls.TCDTabControl #lcl.CustomDrawnControls.TCDCustomTabControl 4PColor 4PEnabled 4PFont @@ -37967,7 +40351,7 @@ 4POnChanging 4POnChange 4POnUserAddedPage -#lcl.customdrawncontrols.TCDPageControl #lcl.customdrawncontrols.TCDCustomTabControl +#lcl.CustomDrawnControls.TCDPageControl #lcl.CustomDrawnControls.TCDCustomTabControl 1MGetActivePage 1MGetPageCount 1MGetPageIndex @@ -38001,7 +40385,7 @@ 4POnChanging 4POnChange 4POnUserAddedPage -#lcl.customdrawncontrols.TCDSpinEdit #lcl.customdrawncontrols.TCDEdit +#lcl.CustomDrawnControls.TCDSpinEdit #lcl.CustomDrawnControls.TCDEdit 1VFDecimalPlaces 1VFIncrement 1VFMaxValue @@ -38024,7 +40408,7 @@ 4PMinValue rw 4PMaxValue rw 4PValue rw -#lcl.lazdeviceapis.TLazAccelerometer #rtl.System.TObject +#lcl.LazDeviceApis.TLazAccelerometer #rtl.System.TObject 1VFOnSensorChanged 1VFReadingStarted 3Vxaxis @@ -38033,7 +40417,7 @@ 3MStartReadingAccelerometerData 3MStopReadingAccelerometerData 3POnSensorChanged rw -#lcl.lazdeviceapis.TLazDeviceMessage #rtl.System.TObject +#lcl.LazDeviceApis.TLazDeviceMessage #rtl.System.TObject 3VbccAddress 3VBody 3VccAddress @@ -38048,7 +40432,7 @@ 3VvalidityPeriod 3MCreate 3MDestroy -#lcl.lazdeviceapis.TLazMessaging #rtl.System.TObject +#lcl.LazDeviceApis.TLazMessaging #rtl.System.TObject 1VFOnMessagingStatus 1VFMessages 3MCreate @@ -38057,7 +40441,7 @@ 3MCreateMessage 3MFreeMessage 3POnMessagingStatus rw -#lcl.lazdeviceapis.TLazPositionInfo #rtl.System.TObject +#lcl.LazDeviceApis.TLazPositionInfo #rtl.System.TObject 1VFOnPositionRetrieved 3VIsPositionDataAvailable 3Vaccuracy @@ -38069,7 +40453,7 @@ 3VtimeStamp 3MRequestPositionInfo 3POnPositionRetrieved rw -#lcl.lazdeviceapis.TLazDevice #rtl.System.TObject +#lcl.LazDeviceApis.TLazDevice #rtl.System.TObject 1MGetDeviceManufacturer 1MGetDeviceModel 3MVibrate @@ -38185,9 +40569,10 @@ 3MFillRect 3MFillPixels 3MDrawText +3MDrawGlyph 3PDestination rw 3MDestroy -#lcl.customdrawn_winxp.TCDDrawerWinXP #lcl.customdrawn_common.TCDDrawerCommon +#lcl.CustomDrawn_WinXP.TCDDrawerWinXP #lcl.CustomDrawn_Common.TCDDrawerCommon 3MGetMeasures 3MGetDrawStyle 3MLoadFallbackPaletteColors @@ -38195,7 +40580,7 @@ 3MDrawButton 3MDrawEditFrame 3MDrawCheckBoxSquare -#lcl.customdrawn_android.TCDDrawerAndroid #lcl.customdrawn_common.TCDDrawerCommon +#lcl.CustomDrawn_Android.TCDDrawerAndroid #lcl.CustomDrawn_Common.TCDDrawerCommon 1MDrawCheckBoxBitmap 1MDrawTransparentRoundCorners 1MDrawVerticalLineWithFirstLast Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/prog.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/prog.chm differ diff -Nru lazarus-1.4.4+dfsg/docs/chm/readmechm.txt lazarus-1.6+dfsg/docs/chm/readmechm.txt --- lazarus-1.4.4+dfsg/docs/chm/readmechm.txt 2015-10-04 13:38:39.000000000 +0000 +++ lazarus-1.6+dfsg/docs/chm/readmechm.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -CHM helpfiles. -============= - -CHM support based on the great work of Andrew is now also available in the -textmode IDE. This archive also contains the .xct and .kwd files that are -needed for crosslinking this archive with other CHM files. These files are -not required for viewing (but are only about 1% of the total size) - -How to install the CHMs in Lazarus ------------------------------------- - -- Install the chmhelp package -- Copy the chms to docs/html in the Lazarus directory. - -Note that Lazarus does not load ref.* at this moment, so (CHM) help -on keywords does not work yet. - -How to install the CHMs into the textmode IDE. -------------------------------------- - -1. extract the archive somewhere, the archive already has an "help/" path - built in. (on windows/dos: c:\fpc, under unix e.g. /usr/share/fpc/help) -2. add the files to the textmode IDE using the "help->files->new" button. - Add toc.chm first, then add the other files in random order. -3. it is safe to restart the IDE before testing. (in case something goes - wrong at least your help config will be saved) - -The helpconfiguration is stored, with paths in fp.ini, and might look like -this: - -[Help] -Files="/fpc/fpcdocs/toc.chm;/fpc/fpcdocs/fcl.chm;/fpc/fpcdocs/ref.chm;/fpc/fpcdocs/rtl.chm;/fpc/fpcdocs/prog.chm;/fpc/fpcdocs/user.chm" - -Troubleshooting --------------- - -If you use Windows XPsp2 or later, and an helpfile won't view, go into the -file explorer, and bring up the properties of the CHM file. Then click -"unblock" there. Apparantly, in some cases Windows thinks the helpfiles are -downloaded content, and prevents access. - -To do this programatically, FPC 2.4.3+ has this functionality built into the -chmls utility (chmls unblock ) - -What is CHM? ------------- - -CHM is an archive format specially made for HTML based help by Microsoft. It -is also known as HTMLHELP, but note that HTMLHELP2 (and in the future 3) are -not related. Besides being an archive format optimized to quickly extract a -single file, there is also a TOC, an Index and fulltext search dictionaries -in each CHM. - -The html in a CHM is basically unmodified except for links from one chm file -to the other, these use a ms-its://file.chm/path/to/htmlfile.html like URL -syntax. Some extra tables with references might be generated. - -The format is sometimes related to security problems, but as far as I have -been able to verify, this is more an Internet Explorer viewer application -problem, not a problem of the format itself - -What OSes support CHM natively? ----------------------- - -Windows versions after windows 98 can open CHMs. Due to new security -measures in XPsp2 and later, sometimes unlocking the CHMs is necessary (see -troubleshooting paragraph). - -On Linux (and mostly *nix in general) there are at least four packages -to process CHMs in addition to FPC/Lazarus' own: - -- the xCHM viewer -- the KCHMViewer viewer -- the GNOCHM viewer -- the chmlib packages (sometimes called extract_chmlib) that allows to unpack - chm files. - -Older kchmviewers (<=4.0) are known to have a problem with the indexes of -the larger chm files (rtl.chm, and lcl.chm from Lazarus), and only show the -first couple of hundred entries. The author has been notified and can't -reproduce it with his latest builds anymore. - -kchmviewer versions (even as new as in Fedora 13) seem to have problems with -links that don't have a leading / either ( ? ). I reported it to kchmviewer, -but the maintainer said it was a problem of QT (and indeed, switching -khtmlpart resolves it) - -Gnochm is extremely slow with the larger files, and development seems to -have stalled. - -xCHM in the recent version seems to work fine and reasonably fast. (lcl.chm -in a few secs). However its TOC system is not a tree, and some versions -won't load some nodes (same problem as kchmviewer ?). The most recent -version seems to have fixed it. - -Of course the lazarus and FPC textmode IDE now also support CHM. Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/ref.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/ref.chm differ diff -Nru lazarus-1.4.4+dfsg/docs/chm/ref.kwd lazarus-1.6+dfsg/docs/chm/ref.kwd --- lazarus-1.4.4+dfsg/docs/chm/ref.kwd 2015-10-04 13:38:39.000000000 +0000 +++ lazarus-1.6+dfsg/docs/chm/ref.kwd 2016-02-15 12:46:38.000000000 +0000 @@ -35,20 +35,23 @@ char=refsu7.html#keyword_char widechar=refsu8.html#keyword_widechar String=refsu10.html#keyword_String -ShortString=refsu11.html#keyword_ShortString -AnsiString=refsu12.html#keyword_AnsiString -nil=refsu12.html#keyword_nil -UnicodeString=refsu13.html#keyword_UnicodeString -Widestring=refsu14.html#keyword_Widestring -PChar=refsu16.html#keyword_PChar +ShortString=refsu10.html#keyword_ShortString +AnsiString=refsu10.html#keyword_AnsiString +nil=refsu10.html#keyword_nil +Rawbytestring=refsu10.html#keyword_Rawbytestring +Rawbytestring=refsu10.html#keyword_Rawbytestring +UTF8String=refsu10.html#keyword_UTF8String +UnicodeString=refsu11.html#keyword_UnicodeString +Widestring=refsu11.html#keyword_Widestring +PChar=refsu13.html#keyword_PChar packed=refse14.html#keyword_packed bitpacked=refse14.html#keyword_bitpacked -array=refsu18.html#keyword_array -of=refsu18.html#keyword_of -record=refsu19.html#keyword_record -set=refsu20.html#keyword_set -file=refsu21.html#keyword_file -Text=refsu21.html#keyword_Text +array=refsu15.html#keyword_array +of=refsu15.html#keyword_of +record=refsu16.html#keyword_record +set=refsu17.html#keyword_set +file=refsu18.html#keyword_file +Text=refsu18.html#keyword_Text pointer=refse15.html#keyword_pointer variant=refse18.html#keyword_variant var=refch4.html#keyword_var @@ -56,109 +59,109 @@ public=refse21.html#keyword_public absolute=refse21.html#keyword_absolute export=refse21.html#keyword_export -threadvar=refse24.html#keyword_threadvar -property=refse25.html#keyword_property -object=refse26.html#keyword_object -static=refse28.html#keyword_static -constructor=refse29.html#keyword_constructor -destructor=refse29.html#keyword_destructor -virtual=refsu26.html#keyword_virtual -override=refsu26.html#keyword_override -inherited=refsu26.html#keyword_inherited -abstract=refsu26.html#keyword_abstract -private=refse31.html#keyword_private -private=refse31.html#keyword_private -public=refse31.html#keyword_public -class=refch6.html#keyword_class +threadvar=refse25.html#keyword_threadvar +property=refse26.html#keyword_property +object=refse27.html#keyword_object +static=refse29.html#keyword_static +constructor=refse30.html#keyword_constructor +destructor=refse30.html#keyword_destructor +virtual=refsu23.html#keyword_virtual +override=refsu23.html#keyword_override +inherited=refsu23.html#keyword_inherited +abstract=refsu23.html#keyword_abstract +private=refse32.html#keyword_private private=refse32.html#keyword_private -strict=refse32.html#keyword_strict -protected=refse32.html#keyword_protected -strict protected=refse32.html#keyword_strict protected public=refse32.html#keyword_public -published=refse32.html#keyword_published -constructor=refse34.html#keyword_constructor -Destructor=refse35.html#keyword_Destructor -reintroduce=refsu31.html#keyword_reintroduce -dynamic=refsu31.html#keyword_dynamic -message=refsu35.html#keyword_message -property=refse37.html#keyword_property -index=refsu38.html#keyword_index -interface=refse40.html#keyword_interface +class=refch6.html#keyword_class +private=refse33.html#keyword_private +strict=refse33.html#keyword_strict +protected=refse33.html#keyword_protected +strict protected=refse33.html#keyword_strict protected +public=refse33.html#keyword_public +published=refse33.html#keyword_published +constructor=refse35.html#keyword_constructor +Destructor=refse36.html#keyword_Destructor +reintroduce=refsu28.html#keyword_reintroduce +dynamic=refsu28.html#keyword_dynamic +message=refsu32.html#keyword_message +property=refse38.html#keyword_property +index=refsu35.html#keyword_index +interface=refse41.html#keyword_interface helper=refch10.html#keyword_helper -objcclass=refse60.html#keyword_objcclass -objcprotocol=refse63.html#keyword_objcprotocol -objcategory=refse64.html#keyword_objcategory -objcselector=refse66.html#keyword_objcselector -not=refsu44.html#keyword_not -and=refsu44.html#keyword_and -or=refsu44.html#keyword_or -xor=refsu44.html#keyword_xor -shl=refsu44.html#keyword_shl -shr=refsu44.html#keyword_shr -in=refsu47.html#keyword_in -as=refsu49.html#keyword_as -is=refsu49.html#keyword_is -goto=refsu52.html#keyword_goto -begin=refsu53.html#keyword_begin -end=refsu53.html#keyword_end -case=refsu54.html#keyword_case -else=refsu54.html#keyword_else -otherwise=refsu54.html#keyword_otherwise -if=refsu55.html#keyword_if -then=refsu55.html#keyword_then -else=refsu55.html#keyword_else -for=refsu56.html#keyword_for -do=refsu56.html#keyword_do -downto=refsu56.html#keyword_downto -forin=refsu57.html#keyword_forin -do=refsu57.html#keyword_do -repeat=refsu58.html#keyword_repeat -until=refsu58.html#keyword_until -while=refsu59.html#keyword_while -with=refsu60.html#keyword_with -procedure=refse80.html#keyword_procedure -function=refse81.html#keyword_function -var=refsu63.html#keyword_var -out=refsu64.html#keyword_out -const=refsu65.html#keyword_const -forward=refse85.html#keyword_forward -external=refse86.html#keyword_external -assembler=refse87.html#keyword_assembler -alias=refsu68.html#keyword_alias -cdecl=refsu69.html#keyword_cdecl -export=refsu70.html#keyword_export -inline=refsu71.html#keyword_inline -interrupt=refsu72.html#keyword_interrupt -iocheck=refsu73.html#keyword_iocheck -local=refsu74.html#keyword_local -noreturn=refsu75.html#keyword_noreturn -nostackframe=refsu76.html#keyword_nostackframe -overload=refsu77.html#keyword_overload -pascal=refsu78.html#keyword_pascal -public=refsu79.html#keyword_public -register=refsu80.html#keyword_register -savecall=refsu81.html#keyword_savecall -saveregisters=refsu82.html#keyword_saveregisters -softfloat=refsu83.html#keyword_softfloat -stdcall=refsu84.html#keyword_stdcall -varargs=refsu85.html#keyword_varargs -far=refse89.html#keyword_far -near=refse89.html#keyword_near -operator=refse92.html#keyword_operator -program=refse96.html#keyword_program -uses=refse96.html#keyword_uses -unit=refse97.html#keyword_unit -interface=refse97.html#keyword_interface -implementation=refse97.html#keyword_implementation -initialization=refse97.html#keyword_initialization -finalization=refse97.html#keyword_finalization -library=refse101.html#keyword_library -raise=refse102.html#keyword_raise -try=refse103.html#keyword_try -except=refse103.html#keyword_except -on=refse103.html#keyword_on -do=refse103.html#keyword_do -try=refse104.html#keyword_try -finally=refse104.html#keyword_finally -asm=refse107.html#keyword_asm -assembler=refse108.html#keyword_assembler +objcclass=refse67.html#keyword_objcclass +objcprotocol=refse70.html#keyword_objcprotocol +objcategory=refse71.html#keyword_objcategory +objcselector=refse73.html#keyword_objcselector +not=refsu47.html#keyword_not +and=refsu47.html#keyword_and +or=refsu47.html#keyword_or +xor=refsu47.html#keyword_xor +shl=refsu47.html#keyword_shl +shr=refsu47.html#keyword_shr +in=refsu50.html#keyword_in +as=refsu52.html#keyword_as +is=refsu52.html#keyword_is +goto=refsu55.html#keyword_goto +begin=refsu56.html#keyword_begin +end=refsu56.html#keyword_end +case=refsu57.html#keyword_case +else=refsu57.html#keyword_else +otherwise=refsu57.html#keyword_otherwise +if=refsu58.html#keyword_if +then=refsu58.html#keyword_then +else=refsu58.html#keyword_else +for=refsu59.html#keyword_for +do=refsu59.html#keyword_do +downto=refsu59.html#keyword_downto +forin=refsu60.html#keyword_forin +do=refsu60.html#keyword_do +repeat=refsu61.html#keyword_repeat +until=refsu61.html#keyword_until +while=refsu62.html#keyword_while +with=refsu63.html#keyword_with +procedure=refse87.html#keyword_procedure +function=refse88.html#keyword_function +var=refsu66.html#keyword_var +out=refsu67.html#keyword_out +const=refsu68.html#keyword_const +forward=refse93.html#keyword_forward +external=refse94.html#keyword_external +assembler=refse95.html#keyword_assembler +alias=refsu71.html#keyword_alias +cdecl=refsu72.html#keyword_cdecl +export=refsu73.html#keyword_export +inline=refsu74.html#keyword_inline +interrupt=refsu75.html#keyword_interrupt +iocheck=refsu76.html#keyword_iocheck +local=refsu77.html#keyword_local +noreturn=refsu78.html#keyword_noreturn +nostackframe=refsu79.html#keyword_nostackframe +overload=refsu80.html#keyword_overload +pascal=refsu81.html#keyword_pascal +public=refsu82.html#keyword_public +register=refsu83.html#keyword_register +savecall=refsu84.html#keyword_savecall +saveregisters=refsu85.html#keyword_saveregisters +softfloat=refsu86.html#keyword_softfloat +stdcall=refsu87.html#keyword_stdcall +varargs=refsu88.html#keyword_varargs +far=refse97.html#keyword_far +near=refse97.html#keyword_near +operator=refse100.html#keyword_operator +program=refse104.html#keyword_program +uses=refse104.html#keyword_uses +unit=refse105.html#keyword_unit +interface=refse105.html#keyword_interface +implementation=refse105.html#keyword_implementation +initialization=refse105.html#keyword_initialization +finalization=refse105.html#keyword_finalization +library=refse110.html#keyword_library +raise=refse111.html#keyword_raise +try=refse112.html#keyword_try +except=refse112.html#keyword_except +on=refse112.html#keyword_on +do=refse112.html#keyword_do +try=refse113.html#keyword_try +finally=refse113.html#keyword_finally +asm=refse116.html#keyword_asm +assembler=refse117.html#keyword_assembler Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/rtl.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/rtl.chm differ diff -Nru lazarus-1.4.4+dfsg/docs/chm/rtl.xct lazarus-1.6+dfsg/docs/chm/rtl.xct --- lazarus-1.4.4+dfsg/docs/chm/rtl.xct 2015-10-04 13:38:39.000000000 +0000 +++ lazarus-1.6+dfsg/docs/chm/rtl.xct 2016-02-15 12:46:38.000000000 +0000 @@ -2,7 +2,7 @@ :link tree #rtl index.html System system/index.html - UnicodeString system/unicodestring.html + UnicodeSupport system/unicodesupport.html MiscellaneousFunctions system/miscellaneousfunctions.html OSfunctions system/osfunctions.html StringFunctions system/stringfunctions.html @@ -26,12 +26,6 @@ maxLongint system/maxlongint.html maxSmallint system/maxsmallint.html maxint system/maxint.html - Test8086 system/test8086.html - Test8087 system/test8087.html - has_sse_support system/has_sse_support.html - has_sse2_support system/has_sse2_support.html - has_sse3_support system/has_sse3_support.html - has_mmx_support system/has_mmx_support.html Max_Frame_Dump system/max_frame_dump.html ExitProc system/exitproc.html Erroraddr system/erroraddr.html @@ -443,8 +437,26 @@ real48 system/real48.html TFloatSpecial system/tfloatspecial.html TExtended80Rec system/textended80rec.html + Mantissa system/textended80rec.mantissa.html + Fraction system/textended80rec.fraction.html + Exponent system/textended80rec.exponent.html + Sign system/textended80rec.sign.html + Exp system/textended80rec.exp.html + SpecialType system/textended80rec.specialtype.html TDoubleRec system/tdoublerec.html + Mantissa system/tdoublerec.mantissa.html + Fraction system/tdoublerec.fraction.html + Exponent system/tdoublerec.exponent.html + Sign system/tdoublerec.sign.html + Exp system/tdoublerec.exp.html + SpecialType system/tdoublerec.specialtype.html TSingleRec system/tsinglerec.html + Mantissa system/tsinglerec.mantissa.html + Fraction system/tsinglerec.fraction.html + Exponent system/tsinglerec.exponent.html + Sign system/tsinglerec.sign.html + Exp system/tsinglerec.exp.html + SpecialType system/tsinglerec.specialtype.html TStandardCodePageEnum system/tstandardcodepageenum.html TUnicodeStringManager system/tunicodestringmanager.html TWideStringManager system/twidestringmanager.html @@ -561,6 +573,8 @@ Smallint system/smallint.html Word system/word.html WideChar system/widechar.html + UnicodeString system/unicodestring.html + WideString system/widestring.html TObject system/tobject.html Create system/tobject.create.html Destroy system/tobject.destroy.html @@ -697,8 +711,8 @@ trunc system/trunc.html FPower10 system/fpower10.html Real2Double system/real2double.html - operator :=(real48): Double system/op-assign-real48-double.html - operator :=(real48): extended system/op-assign-real48-extended.html + assign(real48):Double system/.op-assign-real48-ouble.html + assign(real48):extended system/.op-assign-real48-xtended.html FMASingle system/fmasingle.html FMADouble system/fmadouble.html FMAExtended system/fmaextended.html @@ -708,6 +722,7 @@ Sseg system/sseg.html strpas system/strpas.html strlen system/strlen.html + Utf8CodePointLen system/utf8codepointlen.html Delete system/delete.html Insert system/insert.html Pos system/pos.html @@ -827,134 +842,134 @@ SetVariantManager system/setvariantmanager.html Unassigned system/unassigned.html Null system/null.html - operator :=(Byte): variant system/op-assign-byte-variant.html - operator :=(ShortInt): variant system/op-assign-shortint-variant.html - operator :=(Word): variant system/op-assign-word-variant.html - operator :=(SmallInt): variant system/op-assign-smallint-variant.html - operator :=(DWord): variant system/op-assign-dword-variant.html - operator :=(LongInt): variant system/op-assign-longint-variant.html - operator :=(QWord): variant system/op-assign-qword-variant.html - operator :=(Int64): variant system/op-assign-int64-variant.html - operator :=(Boolean): variant system/op-assign-boolean-variant.html - operator :=(wordbool): variant system/op-assign-wordbool-variant.html - operator :=(longbool): variant system/op-assign-longbool-variant.html - operator :=(Char): variant system/op-assign-char-variant.html - operator :=(WideChar): variant system/op-assign-widechar-variant.html - operator :=(shortstring): variant system/op-assign-shortstring-variant.html - operator :=(ansistring): variant system/op-assign-ansistring-variant.html - operator :=(widestring): variant system/op-assign-widestring-variant.html - operator :=(UTF8String): variant system/op-assign-utf8string-variant.html - operator :=(UCS4String): variant system/op-assign-ucs4string-variant.html - operator :=(UnicodeString): variant system/op-assign-unicodestring-variant.html - operator :=(single): variant system/op-assign-single-variant.html - operator :=(Double): variant system/op-assign-double-variant.html - operator :=(extended): variant system/op-assign-extended-variant.html - operator :=(comp): variant system/op-assign-comp-variant.html - operator :=(Real): variant system/op-assign-real-variant.html - operator :=(currency): variant system/op-assign-currency-variant.html - operator :=(TDateTime): variant system/op-assign-tdatetime-variant.html - operator :=(TError): variant system/op-assign-terror-variant.html - operator :=(variant): Byte system/op-assign-variant-byte.html - operator :=(variant): ShortInt system/op-assign-variant-shortint.html - operator :=(variant): Word system/op-assign-variant-word.html - operator :=(variant): SmallInt system/op-assign-variant-smallint.html - operator :=(variant): DWord system/op-assign-variant-dword.html - operator :=(variant): LongInt system/op-assign-variant-longint.html - operator :=(variant): QWord system/op-assign-variant-qword.html - operator :=(variant): Int64 system/op-assign-variant-int64.html - operator :=(variant): Boolean system/op-assign-variant-boolean.html - operator :=(variant): wordbool system/op-assign-variant-wordbool.html - operator :=(variant): longbool system/op-assign-variant-longbool.html - operator :=(variant): Char system/op-assign-variant-char.html - operator :=(variant): WideChar system/op-assign-variant-widechar.html - operator :=(variant): shortstring system/op-assign-variant-shortstring.html - operator :=(variant): ansistring system/op-assign-variant-ansistring.html - operator :=(variant): widestring system/op-assign-variant-widestring.html - operator :=(variant): UTF8String system/op-assign-variant-utf8string.html - operator :=(variant): unicodestring system/op-assign-variant-unicodestring.html - operator :=(variant): single system/op-assign-variant-single.html - operator :=(variant): Double system/op-assign-variant-double.html - operator :=(variant): extended system/op-assign-variant-extended.html - operator :=(variant): comp system/op-assign-variant-comp.html - operator :=(variant): Real system/op-assign-variant-real.html - operator :=(olevariant): variant system/op-assign-olevariant-variant.html - operator :=(variant): olevariant system/op-assign-variant-olevariant.html - operator :=(variant): currency system/op-assign-variant-currency.html - operator :=(variant): TDateTime system/op-assign-variant-tdatetime.html - operator :=(variant): TError system/op-assign-variant-terror.html - operator or(variant, variant): variant system/op-or-variant-variant-variant.html - operator and(variant, variant): variant system/op-and-variant-variant-variant.html - operator xor(variant, variant): variant system/op-xor-variant-variant-variant.html - operator not(variant): variant system/op-not-variant-variant.html - operator shl(variant, variant): variant system/op-shl-variant-variant-variant.html - operator shr(variant, variant): variant system/op-shr-variant-variant-variant.html - operator +(variant, variant): variant system/op-add-variant-variant-variant.html - operator -(variant, variant): variant system/op-sub-variant-variant-variant.html - operator *(variant, variant): variant system/op-mul-variant-variant-variant.html - operator /(variant, variant): variant system/op-div-variant-variant-variant.html - operator **(variant, variant): variant system/op-power-variant-variant-variant.html - operator div(variant, variant): variant system/op-div-variant-variant-variant.html - operator mod(variant, variant): variant system/op-mod-variant-variant-variant.html - operator -(variant): variant system/op-sub-variant-variant.html - operator =(variant, variant): Boolean system/op-equal-variant-variant-boolean.html - operator <(variant, variant): Boolean system/op-less-variant-variant-boolean.html - operator >(variant, variant): Boolean system/op-greater-variant-variant-boolean.html - operator >=(variant, variant): Boolean system/op-greaterthan-variant-variant-boolean.html - operator <=(variant, variant): Boolean system/op-lessequal-variant-variant-boolean.html + assign(Byte):variant system/.op-assign-byte-ariant.html + assign(ShortInt):variant system/.op-assign-shortint-ariant.html + assign(Word):variant system/.op-assign-word-ariant.html + assign(SmallInt):variant system/.op-assign-smallint-ariant.html + assign(DWord):variant system/.op-assign-dword-ariant.html + assign(LongInt):variant system/.op-assign-longint-ariant.html + assign(QWord):variant system/.op-assign-qword-ariant.html + assign(Int64):variant system/.op-assign-int64-ariant.html + assign(Boolean):variant system/.op-assign-boolean-ariant.html + assign(wordbool):variant system/.op-assign-wordbool-ariant.html + assign(longbool):variant system/.op-assign-longbool-ariant.html + assign(Char):variant system/.op-assign-char-ariant.html + assign(WideChar):variant system/.op-assign-widechar-ariant.html + assign(shortstring):variant system/.op-assign-shortstring-ariant.html + assign(ansistring):variant system/.op-assign-ansistring-ariant.html + assign(widestring):variant system/.op-assign-widestring-ariant.html + assign(UTF8String):variant system/.op-assign-utf8string-ariant.html + assign(UCS4String):variant system/.op-assign-ucs4string-ariant.html + assign(UnicodeString):variant system/.op-assign-unicodestring-ariant.html + assign(single):variant system/.op-assign-single-ariant.html + assign(Double):variant system/.op-assign-double-ariant.html + assign(extended):variant system/.op-assign-extended-ariant.html + assign(comp):variant system/.op-assign-comp-ariant.html + assign(Real):variant system/.op-assign-real-ariant.html + assign(currency):variant system/.op-assign-currency-ariant.html + assign(TDateTime):variant system/.op-assign-tdatetime-ariant.html + assign(TError):variant system/.op-assign-terror-ariant.html + assign(variant):Byte system/.op-assign-variant-yte.html + assign(variant):ShortInt system/.op-assign-variant-hortint.html + assign(variant):Word system/.op-assign-variant-ord.html + assign(variant):SmallInt system/.op-assign-variant-mallint.html + assign(variant):DWord system/.op-assign-variant-word.html + assign(variant):LongInt system/.op-assign-variant-ongint.html + assign(variant):QWord system/.op-assign-variant-word.html + assign(variant):Int64 system/.op-assign-variant-nt64.html + assign(variant):Boolean system/.op-assign-variant-oolean.html + assign(variant):wordbool system/.op-assign-variant-ordbool.html + assign(variant):longbool system/.op-assign-variant-ongbool.html + assign(variant):Char system/.op-assign-variant-har.html + assign(variant):WideChar system/.op-assign-variant-idechar.html + assign(variant):shortstring system/.op-assign-variant-hortstring.html + assign(variant):ansistring system/.op-assign-variant-nsistring.html + assign(variant):widestring system/.op-assign-variant-idestring.html + assign(variant):UTF8String system/.op-assign-variant-tf8string.html + assign(variant):unicodestring system/.op-assign-variant-nicodestring.html + assign(variant):single system/.op-assign-variant-ingle.html + assign(variant):Double system/.op-assign-variant-ouble.html + assign(variant):extended system/.op-assign-variant-xtended.html + assign(variant):comp system/.op-assign-variant-omp.html + assign(variant):Real system/.op-assign-variant-eal.html + assign(olevariant):variant system/.op-assign-olevariant-ariant.html + assign(variant):olevariant system/.op-assign-variant-levariant.html + assign(variant):currency system/.op-assign-variant-urrency.html + assign(variant):TDateTime system/.op-assign-variant-datetime.html + assign(variant):TError system/.op-assign-variant-error.html + logicalor(variant,variant):variant system/.op-logicalor-variant-ariant-ariant.html + logicaland(variant,variant):variant system/.op-logicaland-variant-ariant-ariant.html + logicalxor(variant,variant):variant system/.op-logicalxor-variant-ariant-ariant.html + logicalnot(variant):variant system/.op-logicalnot-variant-ariant.html + leftshift(variant,variant):variant system/.op-leftshift-variant-ariant-ariant.html + rightshift(variant,variant):variant system/.op-rightshift-variant-ariant-ariant.html + add(variant,variant):variant system/.op-add-variant-ariant-ariant.html + subtract(variant,variant):variant system/.op-subtract-variant-ariant-ariant.html + multiply(variant,variant):variant system/.op-multiply-variant-ariant-ariant.html + divide(variant,variant):variant system/.op-divide-variant-ariant-ariant.html + power(variant,variant):variant system/.op-power-variant-ariant-ariant.html + intdivide(variant,variant):variant system/.op-intdivide-variant-ariant-ariant.html + modulus(variant,variant):variant system/.op-modulus-variant-ariant-ariant.html + negative(variant):variant system/.op-negative-variant-ariant.html + equal(variant,variant):Boolean system/.op-equal-variant-ariant-oolean.html + lessthan(variant,variant):Boolean system/.op-lessthan-variant-ariant-oolean.html + greaterthan(variant,variant):Boolean system/.op-greaterthan-variant-ariant-oolean.html + greaterthanorequal(variant,variant):Boolean system/.op-greaterthanorequal-variant-ariant-oolean.html + lessthanorequal(variant,variant):Boolean system/.op-lessthanorequal-variant-ariant-oolean.html VarArrayRedim system/vararrayredim.html VarArrayPut system/vararrayput.html VarArrayGet system/vararrayget.html VarCast system/varcast.html - operator :=(olevariant): Byte system/op-assign-olevariant-byte.html - operator :=(olevariant): ShortInt system/op-assign-olevariant-shortint.html - operator :=(olevariant): Word system/op-assign-olevariant-word.html - operator :=(olevariant): SmallInt system/op-assign-olevariant-smallint.html - operator :=(olevariant): DWord system/op-assign-olevariant-dword.html - operator :=(olevariant): LongInt system/op-assign-olevariant-longint.html - operator :=(olevariant): QWord system/op-assign-olevariant-qword.html - operator :=(olevariant): Int64 system/op-assign-olevariant-int64.html - operator :=(olevariant): Boolean system/op-assign-olevariant-boolean.html - operator :=(olevariant): wordbool system/op-assign-olevariant-wordbool.html - operator :=(olevariant): longbool system/op-assign-olevariant-longbool.html - operator :=(olevariant): Char system/op-assign-olevariant-char.html - operator :=(olevariant): WideChar system/op-assign-olevariant-widechar.html - operator :=(olevariant): shortstring system/op-assign-olevariant-shortstring.html - operator :=(olevariant): ansistring system/op-assign-olevariant-ansistring.html - operator :=(olevariant): widestring system/op-assign-olevariant-widestring.html - operator :=(olevariant): UnicodeString system/op-assign-olevariant-unicodestring.html - operator :=(olevariant): single system/op-assign-olevariant-single.html - operator :=(olevariant): Double system/op-assign-olevariant-double.html - operator :=(olevariant): extended system/op-assign-olevariant-extended.html - operator :=(olevariant): comp system/op-assign-olevariant-comp.html - operator :=(olevariant): Real system/op-assign-olevariant-real.html - operator :=(olevariant): currency system/op-assign-olevariant-currency.html - operator :=(olevariant): TDateTime system/op-assign-olevariant-tdatetime.html - operator :=(olevariant): TError system/op-assign-olevariant-terror.html - operator :=(Byte): olevariant system/op-assign-byte-olevariant.html - operator :=(ShortInt): olevariant system/op-assign-shortint-olevariant.html - operator :=(Word): olevariant system/op-assign-word-olevariant.html - operator :=(SmallInt): olevariant system/op-assign-smallint-olevariant.html - operator :=(DWord): olevariant system/op-assign-dword-olevariant.html - operator :=(LongInt): olevariant system/op-assign-longint-olevariant.html - operator :=(QWord): olevariant system/op-assign-qword-olevariant.html - operator :=(Int64): olevariant system/op-assign-int64-olevariant.html - operator :=(Boolean): olevariant system/op-assign-boolean-olevariant.html - operator :=(wordbool): olevariant system/op-assign-wordbool-olevariant.html - operator :=(longbool): olevariant system/op-assign-longbool-olevariant.html - operator :=(Char): olevariant system/op-assign-char-olevariant.html - operator :=(WideChar): olevariant system/op-assign-widechar-olevariant.html - operator :=(shortstring): olevariant system/op-assign-shortstring-olevariant.html - operator :=(ansistring): olevariant system/op-assign-ansistring-olevariant.html - operator :=(widestring): olevariant system/op-assign-widestring-olevariant.html - operator :=(UnicodeString): olevariant system/op-assign-unicodestring-olevariant.html - operator :=(single): olevariant system/op-assign-single-olevariant.html - operator :=(Double): olevariant system/op-assign-double-olevariant.html - operator :=(extended): olevariant system/op-assign-extended-olevariant.html - operator :=(comp): olevariant system/op-assign-comp-olevariant.html - operator :=(Real): olevariant system/op-assign-real-olevariant.html - operator :=(currency): olevariant system/op-assign-currency-olevariant.html - operator :=(TDateTime): olevariant system/op-assign-tdatetime-olevariant.html - operator :=(TError): olevariant system/op-assign-terror-olevariant.html + assign(olevariant):Byte system/.op-assign-olevariant-yte.html + assign(olevariant):ShortInt system/.op-assign-olevariant-hortint.html + assign(olevariant):Word system/.op-assign-olevariant-ord.html + assign(olevariant):SmallInt system/.op-assign-olevariant-mallint.html + assign(olevariant):DWord system/.op-assign-olevariant-word.html + assign(olevariant):LongInt system/.op-assign-olevariant-ongint.html + assign(olevariant):QWord system/.op-assign-olevariant-word.html + assign(olevariant):Int64 system/.op-assign-olevariant-nt64.html + assign(olevariant):Boolean system/.op-assign-olevariant-oolean.html + assign(olevariant):wordbool system/.op-assign-olevariant-ordbool.html + assign(olevariant):longbool system/.op-assign-olevariant-ongbool.html + assign(olevariant):Char system/.op-assign-olevariant-har.html + assign(olevariant):WideChar system/.op-assign-olevariant-idechar.html + assign(olevariant):shortstring system/.op-assign-olevariant-hortstring.html + assign(olevariant):ansistring system/.op-assign-olevariant-nsistring.html + assign(olevariant):widestring system/.op-assign-olevariant-idestring.html + assign(olevariant):UnicodeString system/.op-assign-olevariant-nicodestring.html + assign(olevariant):single system/.op-assign-olevariant-ingle.html + assign(olevariant):Double system/.op-assign-olevariant-ouble.html + assign(olevariant):extended system/.op-assign-olevariant-xtended.html + assign(olevariant):comp system/.op-assign-olevariant-omp.html + assign(olevariant):Real system/.op-assign-olevariant-eal.html + assign(olevariant):currency system/.op-assign-olevariant-urrency.html + assign(olevariant):TDateTime system/.op-assign-olevariant-datetime.html + assign(olevariant):TError system/.op-assign-olevariant-error.html + assign(Byte):olevariant system/.op-assign-byte-levariant.html + assign(ShortInt):olevariant system/.op-assign-shortint-levariant.html + assign(Word):olevariant system/.op-assign-word-levariant.html + assign(SmallInt):olevariant system/.op-assign-smallint-levariant.html + assign(DWord):olevariant system/.op-assign-dword-levariant.html + assign(LongInt):olevariant system/.op-assign-longint-levariant.html + assign(QWord):olevariant system/.op-assign-qword-levariant.html + assign(Int64):olevariant system/.op-assign-int64-levariant.html + assign(Boolean):olevariant system/.op-assign-boolean-levariant.html + assign(wordbool):olevariant system/.op-assign-wordbool-levariant.html + assign(longbool):olevariant system/.op-assign-longbool-levariant.html + assign(Char):olevariant system/.op-assign-char-levariant.html + assign(WideChar):olevariant system/.op-assign-widechar-levariant.html + assign(shortstring):olevariant system/.op-assign-shortstring-levariant.html + assign(ansistring):olevariant system/.op-assign-ansistring-levariant.html + assign(widestring):olevariant system/.op-assign-widestring-levariant.html + assign(UnicodeString):olevariant system/.op-assign-unicodestring-levariant.html + assign(single):olevariant system/.op-assign-single-levariant.html + assign(Double):olevariant system/.op-assign-double-levariant.html + assign(extended):olevariant system/.op-assign-extended-levariant.html + assign(comp):olevariant system/.op-assign-comp-levariant.html + assign(Real):olevariant system/.op-assign-real-levariant.html + assign(currency):olevariant system/.op-assign-currency-levariant.html + assign(TDateTime):olevariant system/.op-assign-tdatetime-levariant.html + assign(TError):olevariant system/.op-assign-terror-levariant.html InitializeArray system/initializearray.html FinalizeArray system/finalizearray.html CopyArray system/copyarray.html @@ -1076,6 +1091,12 @@ Pack system/pack.html UnPack system/unpack.html Slice system/slice.html + TypeInfo system/typeinfo.html + Fail system/fail.html + TypeOf system/typeof.html + Initialize system/initialize.html + Finalize system/finalize.html + Default system/default.html get_cmdline system/get_cmdline.html ExitCode system/exitcode.html RandSeed system/randseed.html @@ -1097,6 +1118,7 @@ InOutRes system/inoutres.html StackBottom system/stackbottom.html StackLength system/stacklength.html + WriteErrorsToStdErr system/writeerrorstostderr.html softfloat_exception_mask system/softfloat_exception_mask.html softfloat_exception_flags system/softfloat_exception_flags.html softfloat_rounding_mode system/softfloat_rounding_mode.html @@ -1118,7 +1140,7 @@ TPointerArray objpas/tpointerarray.html PPointerArray objpas/ppointerarray.html TBoundArray objpas/tboundarray.html - types types/index.html + Types types/index.html GUID_NULL types/guid_null.html STGTY_STORAGE types/stgty_storage.html STGTY_STREAM types/stgty_stream.html @@ -1375,6 +1397,7 @@ TrimSet strutils/trimset.html sysutils sysutils/index.html Localization sysutils/localization.html + UnicodeAndCodePages sysutils/unicodeandcodepages.html ConversionRoutines sysutils/conversionroutines.html DateTimeRoutines sysutils/datetimeroutines.html FileNameRoutines sysutils/filenameroutines.html @@ -1474,6 +1497,7 @@ TDayTable sysutils/tdaytable.html TFormatDateTimeOption sysutils/tformatdatetimeoption.html TFormatDateTimeOptions sysutils/tformatdatetimeoptions.html + TSystemTime sysutils/tsystemtime.html TTimeStamp sysutils/ttimestamp.html PString sysutils/pstring.html TFloatFormat sysutils/tfloatformat.html @@ -1519,7 +1543,7 @@ CreateFmtHelp sysutils/exception.createfmthelp.html CreateResHelp sysutils/exception.createreshelp.html CreateResFmtHelp sysutils/exception.createresfmthelp.html - ToString system/tobject.tostring.html + ToString sysutils/exception.tostring.html HelpContext sysutils/exception.helpcontext.html Message sysutils/exception.message.html EExternal sysutils/eexternal.html @@ -2090,6 +2114,8 @@ clock_getres linux/clock_getres.html clock_gettime linux/clock_gettime.html clock_settime linux/clock_settime.html + setregid linux/setregid.html + setreuid linux/setreuid.html BaseUnix baseunix/index.html ARG_MAX baseunix/arg_max.html NAME_MAX baseunix/name_max.html @@ -2240,9 +2266,7 @@ wordsinfdset baseunix/wordsinfdset.html ln2bitsinword baseunix/ln2bitsinword.html ln2bitmask baseunix/ln2bitmask.html - _STAT_VER_LINUX_OLD baseunix/_stat_ver_linux_old.html _STAT_VER_KERNEL baseunix/_stat_ver_kernel.html - _STAT_VER_SVR4 baseunix/_stat_ver_svr4.html _STAT_VER_LINUX baseunix/_stat_ver_linux.html _STAT_VER baseunix/_stat_ver.html POLLIN baseunix/pollin.html @@ -2533,7 +2557,6 @@ kernel_uid_t baseunix/kernel_uid_t.html kernel_gid_t baseunix/kernel_gid_t.html FLock baseunix/flock.html - FLock64 baseunix/flock64.html tms baseunix/tms.html TTms baseunix/ttms.html PTms baseunix/ptms.html @@ -3071,6 +3094,11 @@ PClose unix/pclose.html tzdaylight unix/tzdaylight.html tzname unix/tzname.html + errors errors/index.html + sys_errn errors/sys_errn.html + sys_errlist errors/sys_errlist.html + StrError errors/strerror.html + PError errors/perror.html strings strings/index.html strpas strings/strpas.html strlen strings/strlen.html @@ -4188,6 +4216,7 @@ PProcedureParam typinfo/pprocedureparam.html TProcedureParam typinfo/tprocedureparam.html TProcedureSignature typinfo/tproceduresignature.html + GetParam typinfo/tproceduresignature.getparam.html PTypeData typinfo/ptypedata.html TTypeData typinfo/ttypedata.html TPropData typinfo/tpropdata.html @@ -5125,6 +5154,7 @@ TextLineBreakStyle classes/tstrings.textlinebreakstyle.html Delimiter classes/tstrings.delimiter.html DelimitedText classes/tstrings.delimitedtext.html + LineBreak classes/tstrings.linebreak.html StrictDelimiter classes/tstrings.strictdelimiter.html QuoteChar classes/tstrings.quotechar.html NameValueSeparator classes/tstrings.namevalueseparator.html @@ -5276,6 +5306,7 @@ ReadInt32 classes/tabstractobjectreader.readint32.html ReadInt64 classes/tabstractobjectreader.readint64.html ReadSet classes/tabstractobjectreader.readset.html + ReadSignature classes/tabstractobjectreader.readsignature.html ReadStr classes/tabstractobjectreader.readstr.html ReadString classes/tabstractobjectreader.readstring.html ReadWideString classes/tabstractobjectreader.readwidestring.html @@ -5302,6 +5333,7 @@ ReadInt32 classes/tbinaryobjectreader.readint32.html ReadInt64 classes/tbinaryobjectreader.readint64.html ReadSet classes/tbinaryobjectreader.readset.html + ReadSignature classes/tbinaryobjectreader.readsignature.html ReadStr classes/tbinaryobjectreader.readstr.html ReadString classes/tbinaryobjectreader.readstring.html ReadWideString classes/tbinaryobjectreader.readwidestring.html @@ -5339,6 +5371,7 @@ ReadListEnd classes/treader.readlistend.html ReadRootComponent classes/treader.readrootcomponent.html ReadVariant classes/treader.readvariant.html + ReadSignature classes/treader.readsignature.html ReadString classes/treader.readstring.html ReadWideString classes/treader.readwidestring.html ReadUnicodeString classes/treader.readunicodestring.html @@ -5360,6 +5393,7 @@ TAbstractObjectWriter classes/tabstractobjectwriter.html BeginCollection classes/tabstractobjectwriter.begincollection.html BeginComponent classes/tabstractobjectwriter.begincomponent.html + WriteSignature classes/tabstractobjectwriter.writesignature.html BeginList classes/tabstractobjectwriter.beginlist.html EndList classes/tabstractobjectwriter.endlist.html BeginProperty classes/tabstractobjectwriter.beginproperty.html @@ -5383,6 +5417,7 @@ TBinaryObjectWriter classes/tbinaryobjectwriter.html Create classes/tbinaryobjectwriter.create.html Destroy classes/tbinaryobjectwriter.destroy.html + WriteSignature classes/tbinaryobjectwriter.writesignature.html Write classes/tbinaryobjectwriter.write.html WriteCurrency classes/tbinaryobjectwriter.writecurrency.html WriteUInt64 classes/tbinaryobjectwriter.writeuint64.html @@ -5428,6 +5463,7 @@ WriteSet classes/twriter.writeset.html WriteListBegin classes/twriter.writelistbegin.html WriteListEnd classes/twriter.writelistend.html + WriteSignature classes/twriter.writesignature.html WriteRootComponent classes/twriter.writerootcomponent.html WriteString classes/twriter.writestring.html WriteWideString classes/twriter.writewidestring.html @@ -5465,6 +5501,8 @@ TThread classes/tthread.html TSystemTimes classes/tthread.tsystemtimes.html Execute classes/tthread.execute.html + Synchronize classes/tthread.synchronize.html + Queue classes/tthread.queue.html Create classes/tthread.create.html Destroy classes/tthread.destroy.html CreateAnonymousThread classes/tthread.createanonymousthread.html @@ -5514,6 +5552,7 @@ MoveNext classes/tcomponentenumerator.movenext.html Current classes/tcomponentenumerator.current.html TComponent classes/tcomponent.html + Notification classes/tcomponent.notification.html WriteState classes/tcomponent.writestate.html Create classes/tcomponent.create.html Destroy classes/tcomponent.destroy.html @@ -5728,6 +5767,7 @@ FreeLibrary dynlibs/freelibrary.html GetProcAddress dynlibs/getprocaddress.html math math/index.html + CashFlowFunctions math/cashflowfunctions.html GeometricalRoutines math/geometricalroutines.html StatisticalRoutines math/statisticalroutines.html NumberConversionRoutines math/numberconversionroutines.html @@ -5736,8 +5776,16 @@ TrigoniometricRoutines math/trigoniometricroutines.html AngleConversionRoutines math/angleconversionroutines.html MinMaxRoutines math/minmaxroutines.html + MinFloat math/minfloat.html + MaxFloat math/maxfloat.html + MinSingle math/minsingle.html + MaxSingle math/maxsingle.html + MinDouble math/mindouble.html + MaxDouble math/maxdouble.html MinExtended math/minextended.html MaxExtended math/maxextended.html + MinComp math/mincomp.html + MaxComp math/maxcomp.html EqualsValue math/equalsvalue.html LessThanValue math/lessthanvalue.html GreaterThanValue math/greaterthanvalue.html @@ -5747,6 +5795,7 @@ NegativeValue math/negativevalue.html ZeroValue math/zerovalue.html PositiveValue math/positivevalue.html + Float math/float.html PFloat math/pfloat.html PInteger math/pinteger.html tpaymenttime math/tpaymenttime.html @@ -5808,8 +5857,8 @@ lnxp1 math/lnxp1.html power math/power.html intpower math/intpower.html - operator **(float, float): float math/op-power-float-float-float.html - operator **(Int64, Int64): Int64 math/op-power-int64-int64-int64.html + power(Float,Float):Float math/.op-power-float-loat-loat.html + power(Int64,Int64):Int64 math/.op-power-int64-nt64-nt64.html ceil math/ceil.html floor math/floor.html Frexp math/frexp.html @@ -6036,315 +6085,315 @@ determinant matrix/tmatrix4_extended.determinant.html inverse matrix/tmatrix4_extended.inverse.html transpose matrix/tmatrix4_extended.transpose.html - operator :=(Tvector2_single): Tvector2_double matrix/op-assign-tvector2_single-tvector2_double.html - operator :=(Tvector2_single): Tvector2_extended matrix/op-assign-tvector2_single-tvector2_extended.html - operator :=(Tvector2_double): Tvector2_single matrix/op-assign-tvector2_double-tvector2_single.html - operator :=(Tvector2_double): Tvector2_extended matrix/op-assign-tvector2_double-tvector2_extended.html - operator :=(Tvector2_extended): Tvector2_single matrix/op-assign-tvector2_extended-tvector2_single.html - operator :=(Tvector2_extended): Tvector2_double matrix/op-assign-tvector2_extended-tvector2_double.html - operator :=(Tvector2_single): Tvector3_single matrix/op-assign-tvector2_single-tvector3_single.html - operator :=(Tvector2_single): Tvector3_double matrix/op-assign-tvector2_single-tvector3_double.html - operator :=(Tvector2_single): Tvector3_extended matrix/op-assign-tvector2_single-tvector3_extended.html - operator :=(Tvector2_double): Tvector3_single matrix/op-assign-tvector2_double-tvector3_single.html - operator :=(Tvector2_double): Tvector3_double matrix/op-assign-tvector2_double-tvector3_double.html - operator :=(Tvector2_double): Tvector3_extended matrix/op-assign-tvector2_double-tvector3_extended.html - operator :=(Tvector2_extended): Tvector3_single matrix/op-assign-tvector2_extended-tvector3_single.html - operator :=(Tvector2_extended): Tvector3_double matrix/op-assign-tvector2_extended-tvector3_double.html - operator :=(Tvector2_extended): Tvector3_extended matrix/op-assign-tvector2_extended-tvector3_extended.html - operator :=(Tvector2_single): Tvector4_single matrix/op-assign-tvector2_single-tvector4_single.html - operator :=(Tvector2_single): Tvector4_double matrix/op-assign-tvector2_single-tvector4_double.html - operator :=(Tvector2_single): Tvector4_extended matrix/op-assign-tvector2_single-tvector4_extended.html - operator :=(Tvector2_double): Tvector4_single matrix/op-assign-tvector2_double-tvector4_single.html - operator :=(Tvector2_double): Tvector4_double matrix/op-assign-tvector2_double-tvector4_double.html - operator :=(Tvector2_double): Tvector4_extended matrix/op-assign-tvector2_double-tvector4_extended.html - operator :=(Tvector2_extended): Tvector4_single matrix/op-assign-tvector2_extended-tvector4_single.html - operator :=(Tvector2_extended): Tvector4_double matrix/op-assign-tvector2_extended-tvector4_double.html - operator :=(Tvector2_extended): Tvector4_extended matrix/op-assign-tvector2_extended-tvector4_extended.html - operator :=(Tvector3_single): Tvector2_single matrix/op-assign-tvector3_single-tvector2_single.html - operator :=(Tvector3_single): Tvector2_double matrix/op-assign-tvector3_single-tvector2_double.html - operator :=(Tvector3_single): Tvector2_extended matrix/op-assign-tvector3_single-tvector2_extended.html - operator :=(Tvector3_double): Tvector2_single matrix/op-assign-tvector3_double-tvector2_single.html - operator :=(Tvector3_double): Tvector2_double matrix/op-assign-tvector3_double-tvector2_double.html - operator :=(Tvector3_double): Tvector2_extended matrix/op-assign-tvector3_double-tvector2_extended.html - operator :=(Tvector3_extended): Tvector2_single matrix/op-assign-tvector3_extended-tvector2_single.html - operator :=(Tvector3_extended): Tvector2_double matrix/op-assign-tvector3_extended-tvector2_double.html - operator :=(Tvector3_extended): Tvector2_extended matrix/op-assign-tvector3_extended-tvector2_extended.html - operator :=(Tvector3_single): Tvector3_double matrix/op-assign-tvector3_single-tvector3_double.html - operator :=(Tvector3_single): Tvector3_extended matrix/op-assign-tvector3_single-tvector3_extended.html - operator :=(Tvector3_double): Tvector3_single matrix/op-assign-tvector3_double-tvector3_single.html - operator :=(Tvector3_double): Tvector3_extended matrix/op-assign-tvector3_double-tvector3_extended.html - operator :=(Tvector3_extended): Tvector3_single matrix/op-assign-tvector3_extended-tvector3_single.html - operator :=(Tvector3_extended): Tvector3_double matrix/op-assign-tvector3_extended-tvector3_double.html - operator :=(Tvector3_single): Tvector4_single matrix/op-assign-tvector3_single-tvector4_single.html - operator :=(Tvector3_single): Tvector4_double matrix/op-assign-tvector3_single-tvector4_double.html - operator :=(Tvector3_single): Tvector4_extended matrix/op-assign-tvector3_single-tvector4_extended.html - operator :=(Tvector3_double): Tvector4_single matrix/op-assign-tvector3_double-tvector4_single.html - operator :=(Tvector3_double): Tvector4_double matrix/op-assign-tvector3_double-tvector4_double.html - operator :=(Tvector3_double): Tvector4_extended matrix/op-assign-tvector3_double-tvector4_extended.html - operator :=(Tvector3_extended): Tvector4_single matrix/op-assign-tvector3_extended-tvector4_single.html - operator :=(Tvector3_extended): Tvector4_double matrix/op-assign-tvector3_extended-tvector4_double.html - operator :=(Tvector3_extended): Tvector4_extended matrix/op-assign-tvector3_extended-tvector4_extended.html - operator :=(Tvector4_single): Tvector2_single matrix/op-assign-tvector4_single-tvector2_single.html - operator :=(Tvector4_single): Tvector2_double matrix/op-assign-tvector4_single-tvector2_double.html - operator :=(Tvector4_single): Tvector2_extended matrix/op-assign-tvector4_single-tvector2_extended.html - operator :=(Tvector4_double): Tvector2_single matrix/op-assign-tvector4_double-tvector2_single.html - operator :=(Tvector4_double): Tvector2_double matrix/op-assign-tvector4_double-tvector2_double.html - operator :=(Tvector4_double): Tvector2_extended matrix/op-assign-tvector4_double-tvector2_extended.html - operator :=(Tvector4_extended): Tvector2_single matrix/op-assign-tvector4_extended-tvector2_single.html - operator :=(Tvector4_extended): Tvector2_double matrix/op-assign-tvector4_extended-tvector2_double.html - operator :=(Tvector4_extended): Tvector2_extended matrix/op-assign-tvector4_extended-tvector2_extended.html - operator :=(Tvector4_single): Tvector3_single matrix/op-assign-tvector4_single-tvector3_single.html - operator :=(Tvector4_single): Tvector3_double matrix/op-assign-tvector4_single-tvector3_double.html - operator :=(Tvector4_single): Tvector3_extended matrix/op-assign-tvector4_single-tvector3_extended.html - operator :=(Tvector4_double): Tvector3_single matrix/op-assign-tvector4_double-tvector3_single.html - operator :=(Tvector4_double): Tvector3_double matrix/op-assign-tvector4_double-tvector3_double.html - operator :=(Tvector4_double): Tvector3_extended matrix/op-assign-tvector4_double-tvector3_extended.html - operator :=(Tvector4_extended): Tvector3_single matrix/op-assign-tvector4_extended-tvector3_single.html - operator :=(Tvector4_extended): Tvector3_double matrix/op-assign-tvector4_extended-tvector3_double.html - operator :=(Tvector4_extended): Tvector3_extended matrix/op-assign-tvector4_extended-tvector3_extended.html - operator :=(Tvector4_single): Tvector4_double matrix/op-assign-tvector4_single-tvector4_double.html - operator :=(Tvector4_single): Tvector4_extended matrix/op-assign-tvector4_single-tvector4_extended.html - operator :=(Tvector4_double): Tvector4_single matrix/op-assign-tvector4_double-tvector4_single.html - operator :=(Tvector4_double): Tvector4_extended matrix/op-assign-tvector4_double-tvector4_extended.html - operator :=(Tvector4_extended): Tvector4_single matrix/op-assign-tvector4_extended-tvector4_single.html - operator :=(Tvector4_extended): Tvector4_double matrix/op-assign-tvector4_extended-tvector4_double.html - operator +(Tvector2_single, Tvector2_single): Tvector2_single matrix/op-add-tvector2_single-tvector2_single-tvector2_single.html - operator +(Tvector2_double, Tvector2_double): Tvector2_double matrix/op-add-tvector2_double-tvector2_double-tvector2_double.html - operator +(Tvector2_extended, Tvector2_extended): Tvector2_extended matrix/op-add-tvector2_extended-tvector2_extended-tvector2_extended.html - operator +(Tvector3_single, Tvector3_single): Tvector3_single matrix/op-add-tvector3_single-tvector3_single-tvector3_single.html - operator +(Tvector3_double, Tvector3_double): Tvector3_double matrix/op-add-tvector3_double-tvector3_double-tvector3_double.html - operator +(Tvector3_extended, Tvector3_extended): Tvector3_extended matrix/op-add-tvector3_extended-tvector3_extended-tvector3_extended.html - operator +(Tvector4_single, Tvector4_single): Tvector4_single matrix/op-add-tvector4_single-tvector4_single-tvector4_single.html - operator +(Tvector4_double, Tvector4_double): Tvector4_double matrix/op-add-tvector4_double-tvector4_double-tvector4_double.html - operator +(Tvector4_extended, Tvector4_extended): Tvector4_extended matrix/op-add-tvector4_extended-tvector4_extended-tvector4_extended.html - operator -(Tvector2_single, Tvector2_single): Tvector2_single matrix/op-sub-tvector2_single-tvector2_single-tvector2_single.html - operator -(Tvector2_double, Tvector2_double): Tvector2_double matrix/op-sub-tvector2_double-tvector2_double-tvector2_double.html - operator -(Tvector2_extended, Tvector2_extended): Tvector2_extended matrix/op-sub-tvector2_extended-tvector2_extended-tvector2_extended.html - operator -(Tvector3_single, Tvector3_single): Tvector3_single matrix/op-sub-tvector3_single-tvector3_single-tvector3_single.html - operator -(Tvector3_double, Tvector3_double): Tvector3_double matrix/op-sub-tvector3_double-tvector3_double-tvector3_double.html - operator -(Tvector3_extended, Tvector3_extended): Tvector3_extended matrix/op-sub-tvector3_extended-tvector3_extended-tvector3_extended.html - operator -(Tvector4_single, Tvector4_single): Tvector4_single matrix/op-sub-tvector4_single-tvector4_single-tvector4_single.html - operator -(Tvector4_double, Tvector4_double): Tvector4_double matrix/op-sub-tvector4_double-tvector4_double-tvector4_double.html - operator -(Tvector4_extended, Tvector4_extended): Tvector4_extended matrix/op-sub-tvector4_extended-tvector4_extended-tvector4_extended.html - operator -(Tvector2_single): Tvector2_single matrix/op-sub-tvector2_single-tvector2_single.html - operator -(Tvector2_double): Tvector2_double matrix/op-sub-tvector2_double-tvector2_double.html - operator -(Tvector2_extended): Tvector2_extended matrix/op-sub-tvector2_extended-tvector2_extended.html - operator -(Tvector3_single): Tvector3_single matrix/op-sub-tvector3_single-tvector3_single.html - operator -(Tvector3_double): Tvector3_double matrix/op-sub-tvector3_double-tvector3_double.html - operator -(Tvector3_extended): Tvector3_extended matrix/op-sub-tvector3_extended-tvector3_extended.html - operator -(Tvector4_single): Tvector4_single matrix/op-sub-tvector4_single-tvector4_single.html - operator -(Tvector4_double): Tvector4_double matrix/op-sub-tvector4_double-tvector4_double.html - operator -(Tvector4_extended): Tvector4_extended matrix/op-sub-tvector4_extended-tvector4_extended.html - operator *(Tvector2_single, Tvector2_single): Tvector2_single matrix/op-mul-tvector2_single-tvector2_single-tvector2_single.html - operator *(Tvector2_double, Tvector2_double): Tvector2_double matrix/op-mul-tvector2_double-tvector2_double-tvector2_double.html - operator *(Tvector2_extended, Tvector2_extended): Tvector2_extended matrix/op-mul-tvector2_extended-tvector2_extended-tvector2_extended.html - operator *(Tvector3_single, Tvector3_single): Tvector3_single matrix/op-mul-tvector3_single-tvector3_single-tvector3_single.html - operator *(Tvector3_double, Tvector3_double): Tvector3_double matrix/op-mul-tvector3_double-tvector3_double-tvector3_double.html - operator *(Tvector3_extended, Tvector3_extended): Tvector3_extended matrix/op-mul-tvector3_extended-tvector3_extended-tvector3_extended.html - operator *(Tvector4_single, Tvector4_single): Tvector4_single matrix/op-mul-tvector4_single-tvector4_single-tvector4_single.html - operator *(Tvector4_double, Tvector4_double): Tvector4_double matrix/op-mul-tvector4_double-tvector4_double-tvector4_double.html - operator *(Tvector4_extended, Tvector4_extended): Tvector4_extended matrix/op-mul-tvector4_extended-tvector4_extended-tvector4_extended.html - operator **(Tvector2_single, Tvector2_single): single matrix/op-power-tvector2_single-tvector2_single-single.html - operator **(Tvector2_double, Tvector2_double): Double matrix/op-power-tvector2_double-tvector2_double-double.html - operator **(Tvector2_extended, Tvector2_extended): extended matrix/op-power-tvector2_extended-tvector2_extended-extended.html - operator **(Tvector3_single, Tvector3_single): single matrix/op-power-tvector3_single-tvector3_single-single.html - operator **(Tvector3_double, Tvector3_double): Double matrix/op-power-tvector3_double-tvector3_double-double.html - operator **(Tvector3_extended, Tvector3_extended): extended matrix/op-power-tvector3_extended-tvector3_extended-extended.html - operator **(Tvector4_single, Tvector4_single): single matrix/op-power-tvector4_single-tvector4_single-single.html - operator **(Tvector4_double, Tvector4_double): Double matrix/op-power-tvector4_double-tvector4_double-double.html - operator **(Tvector4_extended, Tvector4_extended): extended matrix/op-power-tvector4_extended-tvector4_extended-extended.html - operator ><(Tvector3_single, Tvector3_single): Tvector3_single matrix/op-symmetricdifference-tvector3_single-tvector3_single-tvector3_single.html - operator ><(Tvector3_double, Tvector3_double): Tvector3_double matrix/op-symmetricdifference-tvector3_double-tvector3_double-tvector3_double.html - operator ><(Tvector3_extended, Tvector3_extended): Tvector3_extended matrix/op-symmetricdifference-tvector3_extended-tvector3_extended-tvector3_extended.html - operator +(Tvector2_single, single): Tvector2_single matrix/op-add-tvector2_single-single-tvector2_single.html - operator +(Tvector2_double, Double): Tvector2_double matrix/op-add-tvector2_double-double-tvector2_double.html - operator +(Tvector2_extended, extended): Tvector2_extended matrix/op-add-tvector2_extended-extended-tvector2_extended.html - operator +(Tvector3_single, single): Tvector3_single matrix/op-add-tvector3_single-single-tvector3_single.html - operator +(Tvector3_double, Double): Tvector3_double matrix/op-add-tvector3_double-double-tvector3_double.html - operator +(Tvector3_extended, extended): Tvector3_extended matrix/op-add-tvector3_extended-extended-tvector3_extended.html - operator +(Tvector4_single, single): Tvector4_single matrix/op-add-tvector4_single-single-tvector4_single.html - operator +(Tvector4_double, Double): Tvector4_double matrix/op-add-tvector4_double-double-tvector4_double.html - operator +(Tvector4_extended, extended): Tvector4_extended matrix/op-add-tvector4_extended-extended-tvector4_extended.html - operator -(Tvector2_single, single): Tvector2_single matrix/op-sub-tvector2_single-single-tvector2_single.html - operator -(Tvector2_double, Double): Tvector2_double matrix/op-sub-tvector2_double-double-tvector2_double.html - operator -(Tvector2_extended, extended): Tvector2_extended matrix/op-sub-tvector2_extended-extended-tvector2_extended.html - operator -(Tvector3_single, single): Tvector3_single matrix/op-sub-tvector3_single-single-tvector3_single.html - operator -(Tvector3_double, Double): Tvector3_double matrix/op-sub-tvector3_double-double-tvector3_double.html - operator -(Tvector3_extended, extended): Tvector3_extended matrix/op-sub-tvector3_extended-extended-tvector3_extended.html - operator -(Tvector4_single, single): Tvector4_single matrix/op-sub-tvector4_single-single-tvector4_single.html - operator -(Tvector4_double, Double): Tvector4_double matrix/op-sub-tvector4_double-double-tvector4_double.html - operator -(Tvector4_extended, extended): Tvector4_extended matrix/op-sub-tvector4_extended-extended-tvector4_extended.html - operator *(Tvector2_single, single): Tvector2_single matrix/op-mul-tvector2_single-single-tvector2_single.html - operator *(Tvector2_double, Double): Tvector2_double matrix/op-mul-tvector2_double-double-tvector2_double.html - operator *(Tvector2_extended, extended): Tvector2_extended matrix/op-mul-tvector2_extended-extended-tvector2_extended.html - operator *(Tvector3_single, single): Tvector3_single matrix/op-mul-tvector3_single-single-tvector3_single.html - operator *(Tvector3_double, Double): Tvector3_double matrix/op-mul-tvector3_double-double-tvector3_double.html - operator *(Tvector3_extended, extended): Tvector3_extended matrix/op-mul-tvector3_extended-extended-tvector3_extended.html - operator *(Tvector4_single, single): Tvector4_single matrix/op-mul-tvector4_single-single-tvector4_single.html - operator *(Tvector4_double, Double): Tvector4_double matrix/op-mul-tvector4_double-double-tvector4_double.html - operator *(Tvector4_extended, extended): Tvector4_extended matrix/op-mul-tvector4_extended-extended-tvector4_extended.html - operator /(Tvector2_single, single): Tvector2_single matrix/op-div-tvector2_single-single-tvector2_single.html - operator /(Tvector2_double, Double): Tvector2_double matrix/op-div-tvector2_double-double-tvector2_double.html - operator /(Tvector2_extended, extended): Tvector2_extended matrix/op-div-tvector2_extended-extended-tvector2_extended.html - operator /(Tvector3_single, single): Tvector3_single matrix/op-div-tvector3_single-single-tvector3_single.html - operator /(Tvector3_double, Double): Tvector3_double matrix/op-div-tvector3_double-double-tvector3_double.html - operator /(Tvector3_extended, extended): Tvector3_extended matrix/op-div-tvector3_extended-extended-tvector3_extended.html - operator /(Tvector4_single, single): Tvector4_single matrix/op-div-tvector4_single-single-tvector4_single.html - operator /(Tvector4_double, Double): Tvector4_double matrix/op-div-tvector4_double-double-tvector4_double.html - operator /(Tvector4_extended, extended): Tvector4_extended matrix/op-div-tvector4_extended-extended-tvector4_extended.html - operator :=(Tmatrix2_single): Tmatrix2_double matrix/op-assign-tmatrix2_single-tmatrix2_double.html - operator :=(Tmatrix2_single): Tmatrix2_extended matrix/op-assign-tmatrix2_single-tmatrix2_extended.html - operator :=(Tmatrix2_double): Tmatrix2_single matrix/op-assign-tmatrix2_double-tmatrix2_single.html - operator :=(Tmatrix2_double): Tmatrix2_extended matrix/op-assign-tmatrix2_double-tmatrix2_extended.html - operator :=(Tmatrix2_extended): Tmatrix2_single matrix/op-assign-tmatrix2_extended-tmatrix2_single.html - operator :=(Tmatrix2_extended): Tmatrix2_double matrix/op-assign-tmatrix2_extended-tmatrix2_double.html - operator :=(Tmatrix2_single): Tmatrix3_single matrix/op-assign-tmatrix2_single-tmatrix3_single.html - operator :=(Tmatrix2_single): Tmatrix3_double matrix/op-assign-tmatrix2_single-tmatrix3_double.html - operator :=(Tmatrix2_single): Tmatrix3_extended matrix/op-assign-tmatrix2_single-tmatrix3_extended.html - operator :=(Tmatrix2_double): Tmatrix3_single matrix/op-assign-tmatrix2_double-tmatrix3_single.html - operator :=(Tmatrix2_double): Tmatrix3_double matrix/op-assign-tmatrix2_double-tmatrix3_double.html - operator :=(Tmatrix2_double): Tmatrix3_extended matrix/op-assign-tmatrix2_double-tmatrix3_extended.html - operator :=(Tmatrix2_extended): Tmatrix3_single matrix/op-assign-tmatrix2_extended-tmatrix3_single.html - operator :=(Tmatrix2_extended): Tmatrix3_double matrix/op-assign-tmatrix2_extended-tmatrix3_double.html - operator :=(Tmatrix2_extended): Tmatrix3_extended matrix/op-assign-tmatrix2_extended-tmatrix3_extended.html - operator :=(Tmatrix2_single): Tmatrix4_single matrix/op-assign-tmatrix2_single-tmatrix4_single.html - operator :=(Tmatrix2_single): Tmatrix4_double matrix/op-assign-tmatrix2_single-tmatrix4_double.html - operator :=(Tmatrix2_single): Tmatrix4_extended matrix/op-assign-tmatrix2_single-tmatrix4_extended.html - operator :=(Tmatrix2_double): Tmatrix4_single matrix/op-assign-tmatrix2_double-tmatrix4_single.html - operator :=(Tmatrix2_double): Tmatrix4_double matrix/op-assign-tmatrix2_double-tmatrix4_double.html - operator :=(Tmatrix2_double): Tmatrix4_extended matrix/op-assign-tmatrix2_double-tmatrix4_extended.html - operator :=(Tmatrix2_extended): Tmatrix4_single matrix/op-assign-tmatrix2_extended-tmatrix4_single.html - operator :=(Tmatrix2_extended): Tmatrix4_double matrix/op-assign-tmatrix2_extended-tmatrix4_double.html - operator :=(Tmatrix2_extended): Tmatrix4_extended matrix/op-assign-tmatrix2_extended-tmatrix4_extended.html - operator :=(Tmatrix3_single): Tmatrix2_single matrix/op-assign-tmatrix3_single-tmatrix2_single.html - operator :=(Tmatrix3_single): Tmatrix2_double matrix/op-assign-tmatrix3_single-tmatrix2_double.html - operator :=(Tmatrix3_single): Tmatrix2_extended matrix/op-assign-tmatrix3_single-tmatrix2_extended.html - operator :=(Tmatrix3_double): Tmatrix2_single matrix/op-assign-tmatrix3_double-tmatrix2_single.html - operator :=(Tmatrix3_double): Tmatrix2_double matrix/op-assign-tmatrix3_double-tmatrix2_double.html - operator :=(Tmatrix3_double): Tmatrix2_extended matrix/op-assign-tmatrix3_double-tmatrix2_extended.html - operator :=(Tmatrix3_extended): Tmatrix2_single matrix/op-assign-tmatrix3_extended-tmatrix2_single.html - operator :=(Tmatrix3_extended): Tmatrix2_double matrix/op-assign-tmatrix3_extended-tmatrix2_double.html - operator :=(Tmatrix3_extended): Tmatrix2_extended matrix/op-assign-tmatrix3_extended-tmatrix2_extended.html - operator :=(Tmatrix3_single): Tmatrix3_double matrix/op-assign-tmatrix3_single-tmatrix3_double.html - operator :=(Tmatrix3_single): Tmatrix3_extended matrix/op-assign-tmatrix3_single-tmatrix3_extended.html - operator :=(Tmatrix3_double): Tmatrix3_single matrix/op-assign-tmatrix3_double-tmatrix3_single.html - operator :=(Tmatrix3_double): Tmatrix3_extended matrix/op-assign-tmatrix3_double-tmatrix3_extended.html - operator :=(Tmatrix3_extended): Tmatrix3_single matrix/op-assign-tmatrix3_extended-tmatrix3_single.html - operator :=(Tmatrix3_extended): Tmatrix3_double matrix/op-assign-tmatrix3_extended-tmatrix3_double.html - operator :=(Tmatrix3_single): Tmatrix4_single matrix/op-assign-tmatrix3_single-tmatrix4_single.html - operator :=(Tmatrix3_single): Tmatrix4_double matrix/op-assign-tmatrix3_single-tmatrix4_double.html - operator :=(Tmatrix3_single): Tmatrix4_extended matrix/op-assign-tmatrix3_single-tmatrix4_extended.html - operator :=(Tmatrix3_double): Tmatrix4_single matrix/op-assign-tmatrix3_double-tmatrix4_single.html - operator :=(Tmatrix3_double): Tmatrix4_double matrix/op-assign-tmatrix3_double-tmatrix4_double.html - operator :=(Tmatrix3_double): Tmatrix4_extended matrix/op-assign-tmatrix3_double-tmatrix4_extended.html - operator :=(Tmatrix3_extended): Tmatrix4_single matrix/op-assign-tmatrix3_extended-tmatrix4_single.html - operator :=(Tmatrix3_extended): Tmatrix4_double matrix/op-assign-tmatrix3_extended-tmatrix4_double.html - operator :=(Tmatrix3_extended): Tmatrix4_extended matrix/op-assign-tmatrix3_extended-tmatrix4_extended.html - operator :=(Tmatrix4_single): Tmatrix2_single matrix/op-assign-tmatrix4_single-tmatrix2_single.html - operator :=(Tmatrix4_single): Tmatrix2_double matrix/op-assign-tmatrix4_single-tmatrix2_double.html - operator :=(Tmatrix4_single): Tmatrix2_extended matrix/op-assign-tmatrix4_single-tmatrix2_extended.html - operator :=(Tmatrix4_double): Tmatrix2_single matrix/op-assign-tmatrix4_double-tmatrix2_single.html - operator :=(Tmatrix4_double): Tmatrix2_double matrix/op-assign-tmatrix4_double-tmatrix2_double.html - operator :=(Tmatrix4_double): Tmatrix2_extended matrix/op-assign-tmatrix4_double-tmatrix2_extended.html - operator :=(Tmatrix4_extended): Tmatrix2_single matrix/op-assign-tmatrix4_extended-tmatrix2_single.html - operator :=(Tmatrix4_extended): Tmatrix2_double matrix/op-assign-tmatrix4_extended-tmatrix2_double.html - operator :=(Tmatrix4_extended): Tmatrix2_extended matrix/op-assign-tmatrix4_extended-tmatrix2_extended.html - operator :=(Tmatrix4_single): Tmatrix3_single matrix/op-assign-tmatrix4_single-tmatrix3_single.html - operator :=(Tmatrix4_single): Tmatrix3_double matrix/op-assign-tmatrix4_single-tmatrix3_double.html - operator :=(Tmatrix4_single): Tmatrix3_extended matrix/op-assign-tmatrix4_single-tmatrix3_extended.html - operator :=(Tmatrix4_double): Tmatrix3_single matrix/op-assign-tmatrix4_double-tmatrix3_single.html - operator :=(Tmatrix4_double): Tmatrix3_double matrix/op-assign-tmatrix4_double-tmatrix3_double.html - operator :=(Tmatrix4_double): Tmatrix3_extended matrix/op-assign-tmatrix4_double-tmatrix3_extended.html - operator :=(Tmatrix4_extended): Tmatrix3_single matrix/op-assign-tmatrix4_extended-tmatrix3_single.html - operator :=(Tmatrix4_extended): Tmatrix3_double matrix/op-assign-tmatrix4_extended-tmatrix3_double.html - operator :=(Tmatrix4_extended): Tmatrix3_extended matrix/op-assign-tmatrix4_extended-tmatrix3_extended.html - operator :=(Tmatrix4_single): Tmatrix4_double matrix/op-assign-tmatrix4_single-tmatrix4_double.html - operator :=(Tmatrix4_single): Tmatrix4_extended matrix/op-assign-tmatrix4_single-tmatrix4_extended.html - operator :=(Tmatrix4_double): Tmatrix4_single matrix/op-assign-tmatrix4_double-tmatrix4_single.html - operator :=(Tmatrix4_double): Tmatrix4_extended matrix/op-assign-tmatrix4_double-tmatrix4_extended.html - operator :=(Tmatrix4_extended): Tmatrix4_single matrix/op-assign-tmatrix4_extended-tmatrix4_single.html - operator :=(Tmatrix4_extended): Tmatrix4_double matrix/op-assign-tmatrix4_extended-tmatrix4_double.html - operator +(Tmatrix2_single, Tmatrix2_single): Tmatrix2_single matrix/op-add-tmatrix2_single-tmatrix2_single-tmatrix2_single.html - operator +(Tmatrix2_double, Tmatrix2_double): Tmatrix2_double matrix/op-add-tmatrix2_double-tmatrix2_double-tmatrix2_double.html - operator +(Tmatrix2_extended, Tmatrix2_extended): Tmatrix2_extended matrix/op-add-tmatrix2_extended-tmatrix2_extended-tmatrix2_extended.html - operator +(Tmatrix3_single, Tmatrix3_single): Tmatrix3_single matrix/op-add-tmatrix3_single-tmatrix3_single-tmatrix3_single.html - operator +(Tmatrix3_double, Tmatrix3_double): Tmatrix3_double matrix/op-add-tmatrix3_double-tmatrix3_double-tmatrix3_double.html - operator +(Tmatrix3_extended, Tmatrix3_extended): Tmatrix3_extended matrix/op-add-tmatrix3_extended-tmatrix3_extended-tmatrix3_extended.html - operator +(Tmatrix4_single, Tmatrix4_single): Tmatrix4_single matrix/op-add-tmatrix4_single-tmatrix4_single-tmatrix4_single.html - operator +(Tmatrix4_double, Tmatrix4_double): Tmatrix4_double matrix/op-add-tmatrix4_double-tmatrix4_double-tmatrix4_double.html - operator +(Tmatrix4_extended, Tmatrix4_extended): Tmatrix4_extended matrix/op-add-tmatrix4_extended-tmatrix4_extended-tmatrix4_extended.html - operator -(Tmatrix2_single, Tmatrix2_single): Tmatrix2_single matrix/op-sub-tmatrix2_single-tmatrix2_single-tmatrix2_single.html - operator -(Tmatrix2_double, Tmatrix2_double): Tmatrix2_double matrix/op-sub-tmatrix2_double-tmatrix2_double-tmatrix2_double.html - operator -(Tmatrix2_extended, Tmatrix2_extended): Tmatrix2_extended matrix/op-sub-tmatrix2_extended-tmatrix2_extended-tmatrix2_extended.html - operator -(Tmatrix3_single, Tmatrix3_single): Tmatrix3_single matrix/op-sub-tmatrix3_single-tmatrix3_single-tmatrix3_single.html - operator -(Tmatrix3_double, Tmatrix3_double): Tmatrix3_double matrix/op-sub-tmatrix3_double-tmatrix3_double-tmatrix3_double.html - operator -(Tmatrix3_extended, Tmatrix3_extended): Tmatrix3_extended matrix/op-sub-tmatrix3_extended-tmatrix3_extended-tmatrix3_extended.html - operator -(Tmatrix4_single, Tmatrix4_single): Tmatrix4_single matrix/op-sub-tmatrix4_single-tmatrix4_single-tmatrix4_single.html - operator -(Tmatrix4_double, Tmatrix4_double): Tmatrix4_double matrix/op-sub-tmatrix4_double-tmatrix4_double-tmatrix4_double.html - operator -(Tmatrix4_extended, Tmatrix4_extended): Tmatrix4_extended matrix/op-sub-tmatrix4_extended-tmatrix4_extended-tmatrix4_extended.html - operator -(Tmatrix2_single): Tmatrix2_single matrix/op-sub-tmatrix2_single-tmatrix2_single.html - operator -(Tmatrix2_double): Tmatrix2_double matrix/op-sub-tmatrix2_double-tmatrix2_double.html - operator -(Tmatrix2_extended): Tmatrix2_extended matrix/op-sub-tmatrix2_extended-tmatrix2_extended.html - operator -(Tmatrix3_single): Tmatrix3_single matrix/op-sub-tmatrix3_single-tmatrix3_single.html - operator -(Tmatrix3_double): Tmatrix3_double matrix/op-sub-tmatrix3_double-tmatrix3_double.html - operator -(Tmatrix3_extended): Tmatrix3_extended matrix/op-sub-tmatrix3_extended-tmatrix3_extended.html - operator -(Tmatrix4_single): Tmatrix4_single matrix/op-sub-tmatrix4_single-tmatrix4_single.html - operator -(Tmatrix4_double): Tmatrix4_double matrix/op-sub-tmatrix4_double-tmatrix4_double.html - operator -(Tmatrix4_extended): Tmatrix4_extended matrix/op-sub-tmatrix4_extended-tmatrix4_extended.html - operator *(Tmatrix2_single, Tmatrix2_single): Tmatrix2_single matrix/op-mul-tmatrix2_single-tmatrix2_single-tmatrix2_single.html - operator *(Tmatrix2_double, Tmatrix2_double): Tmatrix2_double matrix/op-mul-tmatrix2_double-tmatrix2_double-tmatrix2_double.html - operator *(Tmatrix2_extended, Tmatrix2_extended): Tmatrix2_extended matrix/op-mul-tmatrix2_extended-tmatrix2_extended-tmatrix2_extended.html - operator *(Tmatrix3_single, Tmatrix3_single): Tmatrix3_single matrix/op-mul-tmatrix3_single-tmatrix3_single-tmatrix3_single.html - operator *(Tmatrix3_double, Tmatrix3_double): Tmatrix3_double matrix/op-mul-tmatrix3_double-tmatrix3_double-tmatrix3_double.html - operator *(Tmatrix3_extended, Tmatrix3_extended): Tmatrix3_extended matrix/op-mul-tmatrix3_extended-tmatrix3_extended-tmatrix3_extended.html - operator *(Tmatrix4_single, Tmatrix4_single): Tmatrix4_single matrix/op-mul-tmatrix4_single-tmatrix4_single-tmatrix4_single.html - operator *(Tmatrix4_double, Tmatrix4_double): Tmatrix4_double matrix/op-mul-tmatrix4_double-tmatrix4_double-tmatrix4_double.html - operator *(Tmatrix4_extended, Tmatrix4_extended): Tmatrix4_extended matrix/op-mul-tmatrix4_extended-tmatrix4_extended-tmatrix4_extended.html - operator *(Tmatrix2_single, Tvector2_single): Tvector2_single matrix/op-mul-tmatrix2_single-tvector2_single-tvector2_single.html - operator *(Tmatrix2_double, Tvector2_double): Tvector2_double matrix/op-mul-tmatrix2_double-tvector2_double-tvector2_double.html - operator *(Tmatrix2_extended, Tvector2_extended): Tvector2_extended matrix/op-mul-tmatrix2_extended-tvector2_extended-tvector2_extended.html - operator *(Tmatrix3_single, Tvector3_single): Tvector3_single matrix/op-mul-tmatrix3_single-tvector3_single-tvector3_single.html - operator *(Tmatrix3_double, Tvector3_double): Tvector3_double matrix/op-mul-tmatrix3_double-tvector3_double-tvector3_double.html - operator *(Tmatrix3_extended, Tvector3_extended): Tvector3_extended matrix/op-mul-tmatrix3_extended-tvector3_extended-tvector3_extended.html - operator *(Tmatrix4_single, Tvector4_single): Tvector4_single matrix/op-mul-tmatrix4_single-tvector4_single-tvector4_single.html - operator *(Tmatrix4_double, Tvector4_double): Tvector4_double matrix/op-mul-tmatrix4_double-tvector4_double-tvector4_double.html - operator *(Tmatrix4_extended, Tvector4_extended): Tvector4_extended matrix/op-mul-tmatrix4_extended-tvector4_extended-tvector4_extended.html - operator +(Tmatrix2_single, single): Tmatrix2_single matrix/op-add-tmatrix2_single-single-tmatrix2_single.html - operator +(Tmatrix2_double, Double): Tmatrix2_double matrix/op-add-tmatrix2_double-double-tmatrix2_double.html - operator +(Tmatrix2_extended, extended): Tmatrix2_extended matrix/op-add-tmatrix2_extended-extended-tmatrix2_extended.html - operator +(Tmatrix3_single, single): Tmatrix3_single matrix/op-add-tmatrix3_single-single-tmatrix3_single.html - operator +(Tmatrix3_double, Double): Tmatrix3_double matrix/op-add-tmatrix3_double-double-tmatrix3_double.html - operator +(Tmatrix3_extended, extended): Tmatrix3_extended matrix/op-add-tmatrix3_extended-extended-tmatrix3_extended.html - operator +(Tmatrix4_single, single): Tmatrix4_single matrix/op-add-tmatrix4_single-single-tmatrix4_single.html - operator +(Tmatrix4_double, Double): Tmatrix4_double matrix/op-add-tmatrix4_double-double-tmatrix4_double.html - operator +(Tmatrix4_extended, extended): Tmatrix4_extended matrix/op-add-tmatrix4_extended-extended-tmatrix4_extended.html - operator -(Tmatrix2_single, single): Tmatrix2_single matrix/op-sub-tmatrix2_single-single-tmatrix2_single.html - operator -(Tmatrix2_double, Double): Tmatrix2_double matrix/op-sub-tmatrix2_double-double-tmatrix2_double.html - operator -(Tmatrix2_extended, extended): Tmatrix2_extended matrix/op-sub-tmatrix2_extended-extended-tmatrix2_extended.html - operator -(Tmatrix3_single, single): Tmatrix3_single matrix/op-sub-tmatrix3_single-single-tmatrix3_single.html - operator -(Tmatrix3_double, Double): Tmatrix3_double matrix/op-sub-tmatrix3_double-double-tmatrix3_double.html - operator -(Tmatrix3_extended, extended): Tmatrix3_extended matrix/op-sub-tmatrix3_extended-extended-tmatrix3_extended.html - operator -(Tmatrix4_single, single): Tmatrix4_single matrix/op-sub-tmatrix4_single-single-tmatrix4_single.html - operator -(Tmatrix4_double, Double): Tmatrix4_double matrix/op-sub-tmatrix4_double-double-tmatrix4_double.html - operator -(Tmatrix4_extended, extended): Tmatrix4_extended matrix/op-sub-tmatrix4_extended-extended-tmatrix4_extended.html - operator *(Tmatrix2_single, single): Tmatrix2_single matrix/op-mul-tmatrix2_single-single-tmatrix2_single.html - operator *(Tmatrix2_double, Double): Tmatrix2_double matrix/op-mul-tmatrix2_double-double-tmatrix2_double.html - operator *(Tmatrix2_extended, extended): Tmatrix2_extended matrix/op-mul-tmatrix2_extended-extended-tmatrix2_extended.html - operator *(Tmatrix3_single, single): Tmatrix3_single matrix/op-mul-tmatrix3_single-single-tmatrix3_single.html - operator *(Tmatrix3_double, Double): Tmatrix3_double matrix/op-mul-tmatrix3_double-double-tmatrix3_double.html - operator *(Tmatrix3_extended, extended): Tmatrix3_extended matrix/op-mul-tmatrix3_extended-extended-tmatrix3_extended.html - operator *(Tmatrix4_single, single): Tmatrix4_single matrix/op-mul-tmatrix4_single-single-tmatrix4_single.html - operator *(Tmatrix4_double, Double): Tmatrix4_double matrix/op-mul-tmatrix4_double-double-tmatrix4_double.html - operator *(Tmatrix4_extended, extended): Tmatrix4_extended matrix/op-mul-tmatrix4_extended-extended-tmatrix4_extended.html - operator /(Tmatrix2_single, single): Tmatrix2_single matrix/op-div-tmatrix2_single-single-tmatrix2_single.html - operator /(Tmatrix2_double, Double): Tmatrix2_double matrix/op-div-tmatrix2_double-double-tmatrix2_double.html - operator /(Tmatrix2_extended, extended): Tmatrix2_extended matrix/op-div-tmatrix2_extended-extended-tmatrix2_extended.html - operator /(Tmatrix3_single, single): Tmatrix3_single matrix/op-div-tmatrix3_single-single-tmatrix3_single.html - operator /(Tmatrix3_double, Double): Tmatrix3_double matrix/op-div-tmatrix3_double-double-tmatrix3_double.html - operator /(Tmatrix3_extended, extended): Tmatrix3_extended matrix/op-div-tmatrix3_extended-extended-tmatrix3_extended.html - operator /(Tmatrix4_single, single): Tmatrix4_single matrix/op-div-tmatrix4_single-single-tmatrix4_single.html - operator /(Tmatrix4_double, Double): Tmatrix4_double matrix/op-div-tmatrix4_double-double-tmatrix4_double.html - operator /(Tmatrix4_extended, extended): Tmatrix4_extended matrix/op-div-tmatrix4_extended-extended-tmatrix4_extended.html + assign(Tvector2_single):Tvector2_double matrix/.op-assign-tvector2_single-vector2_double.html + assign(Tvector2_single):Tvector2_extended matrix/.op-assign-tvector2_single-vector2_extended.html + assign(Tvector2_double):Tvector2_single matrix/.op-assign-tvector2_double-vector2_single.html + assign(Tvector2_double):Tvector2_extended matrix/.op-assign-tvector2_double-vector2_extended.html + assign(Tvector2_extended):Tvector2_single matrix/.op-assign-tvector2_extended-vector2_single.html + assign(Tvector2_extended):Tvector2_double matrix/.op-assign-tvector2_extended-vector2_double.html + assign(Tvector2_single):Tvector3_single matrix/.op-assign-tvector2_single-vector3_single.html + assign(Tvector2_single):Tvector3_double matrix/.op-assign-tvector2_single-vector3_double.html + assign(Tvector2_single):Tvector3_extended matrix/.op-assign-tvector2_single-vector3_extended.html + assign(Tvector2_double):Tvector3_single matrix/.op-assign-tvector2_double-vector3_single.html + assign(Tvector2_double):Tvector3_double matrix/.op-assign-tvector2_double-vector3_double.html + assign(Tvector2_double):Tvector3_extended matrix/.op-assign-tvector2_double-vector3_extended.html + assign(Tvector2_extended):Tvector3_single matrix/.op-assign-tvector2_extended-vector3_single.html + assign(Tvector2_extended):Tvector3_double matrix/.op-assign-tvector2_extended-vector3_double.html + assign(Tvector2_extended):Tvector3_extended matrix/.op-assign-tvector2_extended-vector3_extended.html + assign(Tvector2_single):Tvector4_single matrix/.op-assign-tvector2_single-vector4_single.html + assign(Tvector2_single):Tvector4_double matrix/.op-assign-tvector2_single-vector4_double.html + assign(Tvector2_single):Tvector4_extended matrix/.op-assign-tvector2_single-vector4_extended.html + assign(Tvector2_double):Tvector4_single matrix/.op-assign-tvector2_double-vector4_single.html + assign(Tvector2_double):Tvector4_double matrix/.op-assign-tvector2_double-vector4_double.html + assign(Tvector2_double):Tvector4_extended matrix/.op-assign-tvector2_double-vector4_extended.html + assign(Tvector2_extended):Tvector4_single matrix/.op-assign-tvector2_extended-vector4_single.html + assign(Tvector2_extended):Tvector4_double matrix/.op-assign-tvector2_extended-vector4_double.html + assign(Tvector2_extended):Tvector4_extended matrix/.op-assign-tvector2_extended-vector4_extended.html + assign(Tvector3_single):Tvector2_single matrix/.op-assign-tvector3_single-vector2_single.html + assign(Tvector3_single):Tvector2_double matrix/.op-assign-tvector3_single-vector2_double.html + assign(Tvector3_single):Tvector2_extended matrix/.op-assign-tvector3_single-vector2_extended.html + assign(Tvector3_double):Tvector2_single matrix/.op-assign-tvector3_double-vector2_single.html + assign(Tvector3_double):Tvector2_double matrix/.op-assign-tvector3_double-vector2_double.html + assign(Tvector3_double):Tvector2_extended matrix/.op-assign-tvector3_double-vector2_extended.html + assign(Tvector3_extended):Tvector2_single matrix/.op-assign-tvector3_extended-vector2_single.html + assign(Tvector3_extended):Tvector2_double matrix/.op-assign-tvector3_extended-vector2_double.html + assign(Tvector3_extended):Tvector2_extended matrix/.op-assign-tvector3_extended-vector2_extended.html + assign(Tvector3_single):Tvector3_double matrix/.op-assign-tvector3_single-vector3_double.html + assign(Tvector3_single):Tvector3_extended matrix/.op-assign-tvector3_single-vector3_extended.html + assign(Tvector3_double):Tvector3_single matrix/.op-assign-tvector3_double-vector3_single.html + assign(Tvector3_double):Tvector3_extended matrix/.op-assign-tvector3_double-vector3_extended.html + assign(Tvector3_extended):Tvector3_single matrix/.op-assign-tvector3_extended-vector3_single.html + assign(Tvector3_extended):Tvector3_double matrix/.op-assign-tvector3_extended-vector3_double.html + assign(Tvector3_single):Tvector4_single matrix/.op-assign-tvector3_single-vector4_single.html + assign(Tvector3_single):Tvector4_double matrix/.op-assign-tvector3_single-vector4_double.html + assign(Tvector3_single):Tvector4_extended matrix/.op-assign-tvector3_single-vector4_extended.html + assign(Tvector3_double):Tvector4_single matrix/.op-assign-tvector3_double-vector4_single.html + assign(Tvector3_double):Tvector4_double matrix/.op-assign-tvector3_double-vector4_double.html + assign(Tvector3_double):Tvector4_extended matrix/.op-assign-tvector3_double-vector4_extended.html + assign(Tvector3_extended):Tvector4_single matrix/.op-assign-tvector3_extended-vector4_single.html + assign(Tvector3_extended):Tvector4_double matrix/.op-assign-tvector3_extended-vector4_double.html + assign(Tvector3_extended):Tvector4_extended matrix/.op-assign-tvector3_extended-vector4_extended.html + assign(Tvector4_single):Tvector2_single matrix/.op-assign-tvector4_single-vector2_single.html + assign(Tvector4_single):Tvector2_double matrix/.op-assign-tvector4_single-vector2_double.html + assign(Tvector4_single):Tvector2_extended matrix/.op-assign-tvector4_single-vector2_extended.html + assign(Tvector4_double):Tvector2_single matrix/.op-assign-tvector4_double-vector2_single.html + assign(Tvector4_double):Tvector2_double matrix/.op-assign-tvector4_double-vector2_double.html + assign(Tvector4_double):Tvector2_extended matrix/.op-assign-tvector4_double-vector2_extended.html + assign(Tvector4_extended):Tvector2_single matrix/.op-assign-tvector4_extended-vector2_single.html + assign(Tvector4_extended):Tvector2_double matrix/.op-assign-tvector4_extended-vector2_double.html + assign(Tvector4_extended):Tvector2_extended matrix/.op-assign-tvector4_extended-vector2_extended.html + assign(Tvector4_single):Tvector3_single matrix/.op-assign-tvector4_single-vector3_single.html + assign(Tvector4_single):Tvector3_double matrix/.op-assign-tvector4_single-vector3_double.html + assign(Tvector4_single):Tvector3_extended matrix/.op-assign-tvector4_single-vector3_extended.html + assign(Tvector4_double):Tvector3_single matrix/.op-assign-tvector4_double-vector3_single.html + assign(Tvector4_double):Tvector3_double matrix/.op-assign-tvector4_double-vector3_double.html + assign(Tvector4_double):Tvector3_extended matrix/.op-assign-tvector4_double-vector3_extended.html + assign(Tvector4_extended):Tvector3_single matrix/.op-assign-tvector4_extended-vector3_single.html + assign(Tvector4_extended):Tvector3_double matrix/.op-assign-tvector4_extended-vector3_double.html + assign(Tvector4_extended):Tvector3_extended matrix/.op-assign-tvector4_extended-vector3_extended.html + assign(Tvector4_single):Tvector4_double matrix/.op-assign-tvector4_single-vector4_double.html + assign(Tvector4_single):Tvector4_extended matrix/.op-assign-tvector4_single-vector4_extended.html + assign(Tvector4_double):Tvector4_single matrix/.op-assign-tvector4_double-vector4_single.html + assign(Tvector4_double):Tvector4_extended matrix/.op-assign-tvector4_double-vector4_extended.html + assign(Tvector4_extended):Tvector4_single matrix/.op-assign-tvector4_extended-vector4_single.html + assign(Tvector4_extended):Tvector4_double matrix/.op-assign-tvector4_extended-vector4_double.html + add(Tvector2_single,Tvector2_single):Tvector2_single matrix/.op-add-tvector2_single-vector2_single-vector2_single.html + add(Tvector2_double,Tvector2_double):Tvector2_double matrix/.op-add-tvector2_double-vector2_double-vector2_double.html + add(Tvector2_extended,Tvector2_extended):Tvector2_extended matrix/.op-add-tvector2_extended-vector2_extended-vector2_extended.html + add(Tvector3_single,Tvector3_single):Tvector3_single matrix/.op-add-tvector3_single-vector3_single-vector3_single.html + add(Tvector3_double,Tvector3_double):Tvector3_double matrix/.op-add-tvector3_double-vector3_double-vector3_double.html + add(Tvector3_extended,Tvector3_extended):Tvector3_extended matrix/.op-add-tvector3_extended-vector3_extended-vector3_extended.html + add(Tvector4_single,Tvector4_single):Tvector4_single matrix/.op-add-tvector4_single-vector4_single-vector4_single.html + add(Tvector4_double,Tvector4_double):Tvector4_double matrix/.op-add-tvector4_double-vector4_double-vector4_double.html + add(Tvector4_extended,Tvector4_extended):Tvector4_extended matrix/.op-add-tvector4_extended-vector4_extended-vector4_extended.html + subtract(Tvector2_single,Tvector2_single):Tvector2_single matrix/.op-subtract-tvector2_single-vector2_single-vector2_single.html + subtract(Tvector2_double,Tvector2_double):Tvector2_double matrix/.op-subtract-tvector2_double-vector2_double-vector2_double.html + subtract(Tvector2_extended,Tvector2_extended):Tvector2_extended matrix/.op-subtract-tvector2_extended-vector2_extended-vector2_extended.html + subtract(Tvector3_single,Tvector3_single):Tvector3_single matrix/.op-subtract-tvector3_single-vector3_single-vector3_single.html + subtract(Tvector3_double,Tvector3_double):Tvector3_double matrix/.op-subtract-tvector3_double-vector3_double-vector3_double.html + subtract(Tvector3_extended,Tvector3_extended):Tvector3_extended matrix/.op-subtract-tvector3_extended-vector3_extended-vector3_extended.html + subtract(Tvector4_single,Tvector4_single):Tvector4_single matrix/.op-subtract-tvector4_single-vector4_single-vector4_single.html + subtract(Tvector4_double,Tvector4_double):Tvector4_double matrix/.op-subtract-tvector4_double-vector4_double-vector4_double.html + subtract(Tvector4_extended,Tvector4_extended):Tvector4_extended matrix/.op-subtract-tvector4_extended-vector4_extended-vector4_extended.html + negative(Tvector2_single):Tvector2_single matrix/.op-negative-tvector2_single-vector2_single.html + negative(Tvector2_double):Tvector2_double matrix/.op-negative-tvector2_double-vector2_double.html + negative(Tvector2_extended):Tvector2_extended matrix/.op-negative-tvector2_extended-vector2_extended.html + negative(Tvector3_single):Tvector3_single matrix/.op-negative-tvector3_single-vector3_single.html + negative(Tvector3_double):Tvector3_double matrix/.op-negative-tvector3_double-vector3_double.html + negative(Tvector3_extended):Tvector3_extended matrix/.op-negative-tvector3_extended-vector3_extended.html + negative(Tvector4_single):Tvector4_single matrix/.op-negative-tvector4_single-vector4_single.html + negative(Tvector4_double):Tvector4_double matrix/.op-negative-tvector4_double-vector4_double.html + negative(Tvector4_extended):Tvector4_extended matrix/.op-negative-tvector4_extended-vector4_extended.html + multiply(Tvector2_single,Tvector2_single):Tvector2_single matrix/.op-multiply-tvector2_single-vector2_single-vector2_single.html + multiply(Tvector2_double,Tvector2_double):Tvector2_double matrix/.op-multiply-tvector2_double-vector2_double-vector2_double.html + multiply(Tvector2_extended,Tvector2_extended):Tvector2_extended matrix/.op-multiply-tvector2_extended-vector2_extended-vector2_extended.html + multiply(Tvector3_single,Tvector3_single):Tvector3_single matrix/.op-multiply-tvector3_single-vector3_single-vector3_single.html + multiply(Tvector3_double,Tvector3_double):Tvector3_double matrix/.op-multiply-tvector3_double-vector3_double-vector3_double.html + multiply(Tvector3_extended,Tvector3_extended):Tvector3_extended matrix/.op-multiply-tvector3_extended-vector3_extended-vector3_extended.html + multiply(Tvector4_single,Tvector4_single):Tvector4_single matrix/.op-multiply-tvector4_single-vector4_single-vector4_single.html + multiply(Tvector4_double,Tvector4_double):Tvector4_double matrix/.op-multiply-tvector4_double-vector4_double-vector4_double.html + multiply(Tvector4_extended,Tvector4_extended):Tvector4_extended matrix/.op-multiply-tvector4_extended-vector4_extended-vector4_extended.html + power(Tvector2_single,Tvector2_single):single matrix/.op-power-tvector2_single-vector2_single-ingle.html + power(Tvector2_double,Tvector2_double):Double matrix/.op-power-tvector2_double-vector2_double-ouble.html + power(Tvector2_extended,Tvector2_extended):extended matrix/.op-power-tvector2_extended-vector2_extended-xtended.html + power(Tvector3_single,Tvector3_single):single matrix/.op-power-tvector3_single-vector3_single-ingle.html + power(Tvector3_double,Tvector3_double):Double matrix/.op-power-tvector3_double-vector3_double-ouble.html + power(Tvector3_extended,Tvector3_extended):extended matrix/.op-power-tvector3_extended-vector3_extended-xtended.html + power(Tvector4_single,Tvector4_single):single matrix/.op-power-tvector4_single-vector4_single-ingle.html + power(Tvector4_double,Tvector4_double):Double matrix/.op-power-tvector4_double-vector4_double-ouble.html + power(Tvector4_extended,Tvector4_extended):extended matrix/.op-power-tvector4_extended-vector4_extended-xtended.html + symmetricaldifference(Tvector3_single,Tvector3_single):Tvector3_single matrix/.op-symmetricaldifference-tvector3_single-vector3_single-vector3_single.html + symmetricaldifference(Tvector3_double,Tvector3_double):Tvector3_double matrix/.op-symmetricaldifference-tvector3_double-vector3_double-vector3_double.html + symmetricaldifference(Tvector3_extended,Tvector3_extended):Tvector3_extended matrix/.op-symmetricaldifference-tvector3_extended-vector3_extended-vector3_extended.html + add(Tvector2_single,single):Tvector2_single matrix/.op-add-tvector2_single-ingle-vector2_single.html + add(Tvector2_double,Double):Tvector2_double matrix/.op-add-tvector2_double-ouble-vector2_double.html + add(Tvector2_extended,extended):Tvector2_extended matrix/.op-add-tvector2_extended-xtended-vector2_extended.html + add(Tvector3_single,single):Tvector3_single matrix/.op-add-tvector3_single-ingle-vector3_single.html + add(Tvector3_double,Double):Tvector3_double matrix/.op-add-tvector3_double-ouble-vector3_double.html + add(Tvector3_extended,extended):Tvector3_extended matrix/.op-add-tvector3_extended-xtended-vector3_extended.html + add(Tvector4_single,single):Tvector4_single matrix/.op-add-tvector4_single-ingle-vector4_single.html + add(Tvector4_double,Double):Tvector4_double matrix/.op-add-tvector4_double-ouble-vector4_double.html + add(Tvector4_extended,extended):Tvector4_extended matrix/.op-add-tvector4_extended-xtended-vector4_extended.html + subtract(Tvector2_single,single):Tvector2_single matrix/.op-subtract-tvector2_single-ingle-vector2_single.html + subtract(Tvector2_double,Double):Tvector2_double matrix/.op-subtract-tvector2_double-ouble-vector2_double.html + subtract(Tvector2_extended,extended):Tvector2_extended matrix/.op-subtract-tvector2_extended-xtended-vector2_extended.html + subtract(Tvector3_single,single):Tvector3_single matrix/.op-subtract-tvector3_single-ingle-vector3_single.html + subtract(Tvector3_double,Double):Tvector3_double matrix/.op-subtract-tvector3_double-ouble-vector3_double.html + subtract(Tvector3_extended,extended):Tvector3_extended matrix/.op-subtract-tvector3_extended-xtended-vector3_extended.html + subtract(Tvector4_single,single):Tvector4_single matrix/.op-subtract-tvector4_single-ingle-vector4_single.html + subtract(Tvector4_double,Double):Tvector4_double matrix/.op-subtract-tvector4_double-ouble-vector4_double.html + subtract(Tvector4_extended,extended):Tvector4_extended matrix/.op-subtract-tvector4_extended-xtended-vector4_extended.html + multiply(Tvector2_single,single):Tvector2_single matrix/.op-multiply-tvector2_single-ingle-vector2_single.html + multiply(Tvector2_double,Double):Tvector2_double matrix/.op-multiply-tvector2_double-ouble-vector2_double.html + multiply(Tvector2_extended,extended):Tvector2_extended matrix/.op-multiply-tvector2_extended-xtended-vector2_extended.html + multiply(Tvector3_single,single):Tvector3_single matrix/.op-multiply-tvector3_single-ingle-vector3_single.html + multiply(Tvector3_double,Double):Tvector3_double matrix/.op-multiply-tvector3_double-ouble-vector3_double.html + multiply(Tvector3_extended,extended):Tvector3_extended matrix/.op-multiply-tvector3_extended-xtended-vector3_extended.html + multiply(Tvector4_single,single):Tvector4_single matrix/.op-multiply-tvector4_single-ingle-vector4_single.html + multiply(Tvector4_double,Double):Tvector4_double matrix/.op-multiply-tvector4_double-ouble-vector4_double.html + multiply(Tvector4_extended,extended):Tvector4_extended matrix/.op-multiply-tvector4_extended-xtended-vector4_extended.html + divide(Tvector2_single,single):Tvector2_single matrix/.op-divide-tvector2_single-ingle-vector2_single.html + divide(Tvector2_double,Double):Tvector2_double matrix/.op-divide-tvector2_double-ouble-vector2_double.html + divide(Tvector2_extended,extended):Tvector2_extended matrix/.op-divide-tvector2_extended-xtended-vector2_extended.html + divide(Tvector3_single,single):Tvector3_single matrix/.op-divide-tvector3_single-ingle-vector3_single.html + divide(Tvector3_double,Double):Tvector3_double matrix/.op-divide-tvector3_double-ouble-vector3_double.html + divide(Tvector3_extended,extended):Tvector3_extended matrix/.op-divide-tvector3_extended-xtended-vector3_extended.html + divide(Tvector4_single,single):Tvector4_single matrix/.op-divide-tvector4_single-ingle-vector4_single.html + divide(Tvector4_double,Double):Tvector4_double matrix/.op-divide-tvector4_double-ouble-vector4_double.html + divide(Tvector4_extended,extended):Tvector4_extended matrix/.op-divide-tvector4_extended-xtended-vector4_extended.html + assign(Tmatrix2_single):Tmatrix2_double matrix/.op-assign-tmatrix2_single-matrix2_double.html + assign(Tmatrix2_single):Tmatrix2_extended matrix/.op-assign-tmatrix2_single-matrix2_extended.html + assign(Tmatrix2_double):Tmatrix2_single matrix/.op-assign-tmatrix2_double-matrix2_single.html + assign(Tmatrix2_double):Tmatrix2_extended matrix/.op-assign-tmatrix2_double-matrix2_extended.html + assign(Tmatrix2_extended):Tmatrix2_single matrix/.op-assign-tmatrix2_extended-matrix2_single.html + assign(Tmatrix2_extended):Tmatrix2_double matrix/.op-assign-tmatrix2_extended-matrix2_double.html + assign(Tmatrix2_single):Tmatrix3_single matrix/.op-assign-tmatrix2_single-matrix3_single.html + assign(Tmatrix2_single):Tmatrix3_double matrix/.op-assign-tmatrix2_single-matrix3_double.html + assign(Tmatrix2_single):Tmatrix3_extended matrix/.op-assign-tmatrix2_single-matrix3_extended.html + assign(Tmatrix2_double):Tmatrix3_single matrix/.op-assign-tmatrix2_double-matrix3_single.html + assign(Tmatrix2_double):Tmatrix3_double matrix/.op-assign-tmatrix2_double-matrix3_double.html + assign(Tmatrix2_double):Tmatrix3_extended matrix/.op-assign-tmatrix2_double-matrix3_extended.html + assign(Tmatrix2_extended):Tmatrix3_single matrix/.op-assign-tmatrix2_extended-matrix3_single.html + assign(Tmatrix2_extended):Tmatrix3_double matrix/.op-assign-tmatrix2_extended-matrix3_double.html + assign(Tmatrix2_extended):Tmatrix3_extended matrix/.op-assign-tmatrix2_extended-matrix3_extended.html + assign(Tmatrix2_single):Tmatrix4_single matrix/.op-assign-tmatrix2_single-matrix4_single.html + assign(Tmatrix2_single):Tmatrix4_double matrix/.op-assign-tmatrix2_single-matrix4_double.html + assign(Tmatrix2_single):Tmatrix4_extended matrix/.op-assign-tmatrix2_single-matrix4_extended.html + assign(Tmatrix2_double):Tmatrix4_single matrix/.op-assign-tmatrix2_double-matrix4_single.html + assign(Tmatrix2_double):Tmatrix4_double matrix/.op-assign-tmatrix2_double-matrix4_double.html + assign(Tmatrix2_double):Tmatrix4_extended matrix/.op-assign-tmatrix2_double-matrix4_extended.html + assign(Tmatrix2_extended):Tmatrix4_single matrix/.op-assign-tmatrix2_extended-matrix4_single.html + assign(Tmatrix2_extended):Tmatrix4_double matrix/.op-assign-tmatrix2_extended-matrix4_double.html + assign(Tmatrix2_extended):Tmatrix4_extended matrix/.op-assign-tmatrix2_extended-matrix4_extended.html + assign(Tmatrix3_single):Tmatrix2_single matrix/.op-assign-tmatrix3_single-matrix2_single.html + assign(Tmatrix3_single):Tmatrix2_double matrix/.op-assign-tmatrix3_single-matrix2_double.html + assign(Tmatrix3_single):Tmatrix2_extended matrix/.op-assign-tmatrix3_single-matrix2_extended.html + assign(Tmatrix3_double):Tmatrix2_single matrix/.op-assign-tmatrix3_double-matrix2_single.html + assign(Tmatrix3_double):Tmatrix2_double matrix/.op-assign-tmatrix3_double-matrix2_double.html + assign(Tmatrix3_double):Tmatrix2_extended matrix/.op-assign-tmatrix3_double-matrix2_extended.html + assign(Tmatrix3_extended):Tmatrix2_single matrix/.op-assign-tmatrix3_extended-matrix2_single.html + assign(Tmatrix3_extended):Tmatrix2_double matrix/.op-assign-tmatrix3_extended-matrix2_double.html + assign(Tmatrix3_extended):Tmatrix2_extended matrix/.op-assign-tmatrix3_extended-matrix2_extended.html + assign(Tmatrix3_single):Tmatrix3_double matrix/.op-assign-tmatrix3_single-matrix3_double.html + assign(Tmatrix3_single):Tmatrix3_extended matrix/.op-assign-tmatrix3_single-matrix3_extended.html + assign(Tmatrix3_double):Tmatrix3_single matrix/.op-assign-tmatrix3_double-matrix3_single.html + assign(Tmatrix3_double):Tmatrix3_extended matrix/.op-assign-tmatrix3_double-matrix3_extended.html + assign(Tmatrix3_extended):Tmatrix3_single matrix/.op-assign-tmatrix3_extended-matrix3_single.html + assign(Tmatrix3_extended):Tmatrix3_double matrix/.op-assign-tmatrix3_extended-matrix3_double.html + assign(Tmatrix3_single):Tmatrix4_single matrix/.op-assign-tmatrix3_single-matrix4_single.html + assign(Tmatrix3_single):Tmatrix4_double matrix/.op-assign-tmatrix3_single-matrix4_double.html + assign(Tmatrix3_single):Tmatrix4_extended matrix/.op-assign-tmatrix3_single-matrix4_extended.html + assign(Tmatrix3_double):Tmatrix4_single matrix/.op-assign-tmatrix3_double-matrix4_single.html + assign(Tmatrix3_double):Tmatrix4_double matrix/.op-assign-tmatrix3_double-matrix4_double.html + assign(Tmatrix3_double):Tmatrix4_extended matrix/.op-assign-tmatrix3_double-matrix4_extended.html + assign(Tmatrix3_extended):Tmatrix4_single matrix/.op-assign-tmatrix3_extended-matrix4_single.html + assign(Tmatrix3_extended):Tmatrix4_double matrix/.op-assign-tmatrix3_extended-matrix4_double.html + assign(Tmatrix3_extended):Tmatrix4_extended matrix/.op-assign-tmatrix3_extended-matrix4_extended.html + assign(Tmatrix4_single):Tmatrix2_single matrix/.op-assign-tmatrix4_single-matrix2_single.html + assign(Tmatrix4_single):Tmatrix2_double matrix/.op-assign-tmatrix4_single-matrix2_double.html + assign(Tmatrix4_single):Tmatrix2_extended matrix/.op-assign-tmatrix4_single-matrix2_extended.html + assign(Tmatrix4_double):Tmatrix2_single matrix/.op-assign-tmatrix4_double-matrix2_single.html + assign(Tmatrix4_double):Tmatrix2_double matrix/.op-assign-tmatrix4_double-matrix2_double.html + assign(Tmatrix4_double):Tmatrix2_extended matrix/.op-assign-tmatrix4_double-matrix2_extended.html + assign(Tmatrix4_extended):Tmatrix2_single matrix/.op-assign-tmatrix4_extended-matrix2_single.html + assign(Tmatrix4_extended):Tmatrix2_double matrix/.op-assign-tmatrix4_extended-matrix2_double.html + assign(Tmatrix4_extended):Tmatrix2_extended matrix/.op-assign-tmatrix4_extended-matrix2_extended.html + assign(Tmatrix4_single):Tmatrix3_single matrix/.op-assign-tmatrix4_single-matrix3_single.html + assign(Tmatrix4_single):Tmatrix3_double matrix/.op-assign-tmatrix4_single-matrix3_double.html + assign(Tmatrix4_single):Tmatrix3_extended matrix/.op-assign-tmatrix4_single-matrix3_extended.html + assign(Tmatrix4_double):Tmatrix3_single matrix/.op-assign-tmatrix4_double-matrix3_single.html + assign(Tmatrix4_double):Tmatrix3_double matrix/.op-assign-tmatrix4_double-matrix3_double.html + assign(Tmatrix4_double):Tmatrix3_extended matrix/.op-assign-tmatrix4_double-matrix3_extended.html + assign(Tmatrix4_extended):Tmatrix3_single matrix/.op-assign-tmatrix4_extended-matrix3_single.html + assign(Tmatrix4_extended):Tmatrix3_double matrix/.op-assign-tmatrix4_extended-matrix3_double.html + assign(Tmatrix4_extended):Tmatrix3_extended matrix/.op-assign-tmatrix4_extended-matrix3_extended.html + assign(Tmatrix4_single):Tmatrix4_double matrix/.op-assign-tmatrix4_single-matrix4_double.html + assign(Tmatrix4_single):Tmatrix4_extended matrix/.op-assign-tmatrix4_single-matrix4_extended.html + assign(Tmatrix4_double):Tmatrix4_single matrix/.op-assign-tmatrix4_double-matrix4_single.html + assign(Tmatrix4_double):Tmatrix4_extended matrix/.op-assign-tmatrix4_double-matrix4_extended.html + assign(Tmatrix4_extended):Tmatrix4_single matrix/.op-assign-tmatrix4_extended-matrix4_single.html + assign(Tmatrix4_extended):Tmatrix4_double matrix/.op-assign-tmatrix4_extended-matrix4_double.html + add(Tmatrix2_single,Tmatrix2_single):Tmatrix2_single matrix/.op-add-tmatrix2_single-matrix2_single-matrix2_single.html + add(Tmatrix2_double,Tmatrix2_double):Tmatrix2_double matrix/.op-add-tmatrix2_double-matrix2_double-matrix2_double.html + add(Tmatrix2_extended,Tmatrix2_extended):Tmatrix2_extended matrix/.op-add-tmatrix2_extended-matrix2_extended-matrix2_extended.html + add(Tmatrix3_single,Tmatrix3_single):Tmatrix3_single matrix/.op-add-tmatrix3_single-matrix3_single-matrix3_single.html + add(Tmatrix3_double,Tmatrix3_double):Tmatrix3_double matrix/.op-add-tmatrix3_double-matrix3_double-matrix3_double.html + add(Tmatrix3_extended,Tmatrix3_extended):Tmatrix3_extended matrix/.op-add-tmatrix3_extended-matrix3_extended-matrix3_extended.html + add(Tmatrix4_single,Tmatrix4_single):Tmatrix4_single matrix/.op-add-tmatrix4_single-matrix4_single-matrix4_single.html + add(Tmatrix4_double,Tmatrix4_double):Tmatrix4_double matrix/.op-add-tmatrix4_double-matrix4_double-matrix4_double.html + add(Tmatrix4_extended,Tmatrix4_extended):Tmatrix4_extended matrix/.op-add-tmatrix4_extended-matrix4_extended-matrix4_extended.html + subtract(Tmatrix2_single,Tmatrix2_single):Tmatrix2_single matrix/.op-subtract-tmatrix2_single-matrix2_single-matrix2_single.html + subtract(Tmatrix2_double,Tmatrix2_double):Tmatrix2_double matrix/.op-subtract-tmatrix2_double-matrix2_double-matrix2_double.html + subtract(Tmatrix2_extended,Tmatrix2_extended):Tmatrix2_extended matrix/.op-subtract-tmatrix2_extended-matrix2_extended-matrix2_extended.html + subtract(Tmatrix3_single,Tmatrix3_single):Tmatrix3_single matrix/.op-subtract-tmatrix3_single-matrix3_single-matrix3_single.html + subtract(Tmatrix3_double,Tmatrix3_double):Tmatrix3_double matrix/.op-subtract-tmatrix3_double-matrix3_double-matrix3_double.html + subtract(Tmatrix3_extended,Tmatrix3_extended):Tmatrix3_extended matrix/.op-subtract-tmatrix3_extended-matrix3_extended-matrix3_extended.html + subtract(Tmatrix4_single,Tmatrix4_single):Tmatrix4_single matrix/.op-subtract-tmatrix4_single-matrix4_single-matrix4_single.html + subtract(Tmatrix4_double,Tmatrix4_double):Tmatrix4_double matrix/.op-subtract-tmatrix4_double-matrix4_double-matrix4_double.html + subtract(Tmatrix4_extended,Tmatrix4_extended):Tmatrix4_extended matrix/.op-subtract-tmatrix4_extended-matrix4_extended-matrix4_extended.html + negative(Tmatrix2_single):Tmatrix2_single matrix/.op-negative-tmatrix2_single-matrix2_single.html + negative(Tmatrix2_double):Tmatrix2_double matrix/.op-negative-tmatrix2_double-matrix2_double.html + negative(Tmatrix2_extended):Tmatrix2_extended matrix/.op-negative-tmatrix2_extended-matrix2_extended.html + negative(Tmatrix3_single):Tmatrix3_single matrix/.op-negative-tmatrix3_single-matrix3_single.html + negative(Tmatrix3_double):Tmatrix3_double matrix/.op-negative-tmatrix3_double-matrix3_double.html + negative(Tmatrix3_extended):Tmatrix3_extended matrix/.op-negative-tmatrix3_extended-matrix3_extended.html + negative(Tmatrix4_single):Tmatrix4_single matrix/.op-negative-tmatrix4_single-matrix4_single.html + negative(Tmatrix4_double):Tmatrix4_double matrix/.op-negative-tmatrix4_double-matrix4_double.html + negative(Tmatrix4_extended):Tmatrix4_extended matrix/.op-negative-tmatrix4_extended-matrix4_extended.html + multiply(Tmatrix2_single,Tmatrix2_single):Tmatrix2_single matrix/.op-multiply-tmatrix2_single-matrix2_single-matrix2_single.html + multiply(Tmatrix2_double,Tmatrix2_double):Tmatrix2_double matrix/.op-multiply-tmatrix2_double-matrix2_double-matrix2_double.html + multiply(Tmatrix2_extended,Tmatrix2_extended):Tmatrix2_extended matrix/.op-multiply-tmatrix2_extended-matrix2_extended-matrix2_extended.html + multiply(Tmatrix3_single,Tmatrix3_single):Tmatrix3_single matrix/.op-multiply-tmatrix3_single-matrix3_single-matrix3_single.html + multiply(Tmatrix3_double,Tmatrix3_double):Tmatrix3_double matrix/.op-multiply-tmatrix3_double-matrix3_double-matrix3_double.html + multiply(Tmatrix3_extended,Tmatrix3_extended):Tmatrix3_extended matrix/.op-multiply-tmatrix3_extended-matrix3_extended-matrix3_extended.html + multiply(Tmatrix4_single,Tmatrix4_single):Tmatrix4_single matrix/.op-multiply-tmatrix4_single-matrix4_single-matrix4_single.html + multiply(Tmatrix4_double,Tmatrix4_double):Tmatrix4_double matrix/.op-multiply-tmatrix4_double-matrix4_double-matrix4_double.html + multiply(Tmatrix4_extended,Tmatrix4_extended):Tmatrix4_extended matrix/.op-multiply-tmatrix4_extended-matrix4_extended-matrix4_extended.html + multiply(Tmatrix2_single,Tvector2_single):Tvector2_single matrix/.op-multiply-tmatrix2_single-vector2_single-vector2_single.html + multiply(Tmatrix2_double,Tvector2_double):Tvector2_double matrix/.op-multiply-tmatrix2_double-vector2_double-vector2_double.html + multiply(Tmatrix2_extended,Tvector2_extended):Tvector2_extended matrix/.op-multiply-tmatrix2_extended-vector2_extended-vector2_extended.html + multiply(Tmatrix3_single,Tvector3_single):Tvector3_single matrix/.op-multiply-tmatrix3_single-vector3_single-vector3_single.html + multiply(Tmatrix3_double,Tvector3_double):Tvector3_double matrix/.op-multiply-tmatrix3_double-vector3_double-vector3_double.html + multiply(Tmatrix3_extended,Tvector3_extended):Tvector3_extended matrix/.op-multiply-tmatrix3_extended-vector3_extended-vector3_extended.html + multiply(Tmatrix4_single,Tvector4_single):Tvector4_single matrix/.op-multiply-tmatrix4_single-vector4_single-vector4_single.html + multiply(Tmatrix4_double,Tvector4_double):Tvector4_double matrix/.op-multiply-tmatrix4_double-vector4_double-vector4_double.html + multiply(Tmatrix4_extended,Tvector4_extended):Tvector4_extended matrix/.op-multiply-tmatrix4_extended-vector4_extended-vector4_extended.html + add(Tmatrix2_single,single):Tmatrix2_single matrix/.op-add-tmatrix2_single-ingle-matrix2_single.html + add(Tmatrix2_double,Double):Tmatrix2_double matrix/.op-add-tmatrix2_double-ouble-matrix2_double.html + add(Tmatrix2_extended,extended):Tmatrix2_extended matrix/.op-add-tmatrix2_extended-xtended-matrix2_extended.html + add(Tmatrix3_single,single):Tmatrix3_single matrix/.op-add-tmatrix3_single-ingle-matrix3_single.html + add(Tmatrix3_double,Double):Tmatrix3_double matrix/.op-add-tmatrix3_double-ouble-matrix3_double.html + add(Tmatrix3_extended,extended):Tmatrix3_extended matrix/.op-add-tmatrix3_extended-xtended-matrix3_extended.html + add(Tmatrix4_single,single):Tmatrix4_single matrix/.op-add-tmatrix4_single-ingle-matrix4_single.html + add(Tmatrix4_double,Double):Tmatrix4_double matrix/.op-add-tmatrix4_double-ouble-matrix4_double.html + add(Tmatrix4_extended,extended):Tmatrix4_extended matrix/.op-add-tmatrix4_extended-xtended-matrix4_extended.html + subtract(Tmatrix2_single,single):Tmatrix2_single matrix/.op-subtract-tmatrix2_single-ingle-matrix2_single.html + subtract(Tmatrix2_double,Double):Tmatrix2_double matrix/.op-subtract-tmatrix2_double-ouble-matrix2_double.html + subtract(Tmatrix2_extended,extended):Tmatrix2_extended matrix/.op-subtract-tmatrix2_extended-xtended-matrix2_extended.html + subtract(Tmatrix3_single,single):Tmatrix3_single matrix/.op-subtract-tmatrix3_single-ingle-matrix3_single.html + subtract(Tmatrix3_double,Double):Tmatrix3_double matrix/.op-subtract-tmatrix3_double-ouble-matrix3_double.html + subtract(Tmatrix3_extended,extended):Tmatrix3_extended matrix/.op-subtract-tmatrix3_extended-xtended-matrix3_extended.html + subtract(Tmatrix4_single,single):Tmatrix4_single matrix/.op-subtract-tmatrix4_single-ingle-matrix4_single.html + subtract(Tmatrix4_double,Double):Tmatrix4_double matrix/.op-subtract-tmatrix4_double-ouble-matrix4_double.html + subtract(Tmatrix4_extended,extended):Tmatrix4_extended matrix/.op-subtract-tmatrix4_extended-xtended-matrix4_extended.html + multiply(Tmatrix2_single,single):Tmatrix2_single matrix/.op-multiply-tmatrix2_single-ingle-matrix2_single.html + multiply(Tmatrix2_double,Double):Tmatrix2_double matrix/.op-multiply-tmatrix2_double-ouble-matrix2_double.html + multiply(Tmatrix2_extended,extended):Tmatrix2_extended matrix/.op-multiply-tmatrix2_extended-xtended-matrix2_extended.html + multiply(Tmatrix3_single,single):Tmatrix3_single matrix/.op-multiply-tmatrix3_single-ingle-matrix3_single.html + multiply(Tmatrix3_double,Double):Tmatrix3_double matrix/.op-multiply-tmatrix3_double-ouble-matrix3_double.html + multiply(Tmatrix3_extended,extended):Tmatrix3_extended matrix/.op-multiply-tmatrix3_extended-xtended-matrix3_extended.html + multiply(Tmatrix4_single,single):Tmatrix4_single matrix/.op-multiply-tmatrix4_single-ingle-matrix4_single.html + multiply(Tmatrix4_double,Double):Tmatrix4_double matrix/.op-multiply-tmatrix4_double-ouble-matrix4_double.html + multiply(Tmatrix4_extended,extended):Tmatrix4_extended matrix/.op-multiply-tmatrix4_extended-xtended-matrix4_extended.html + divide(Tmatrix2_single,single):Tmatrix2_single matrix/.op-divide-tmatrix2_single-ingle-matrix2_single.html + divide(Tmatrix2_double,Double):Tmatrix2_double matrix/.op-divide-tmatrix2_double-ouble-matrix2_double.html + divide(Tmatrix2_extended,extended):Tmatrix2_extended matrix/.op-divide-tmatrix2_extended-xtended-matrix2_extended.html + divide(Tmatrix3_single,single):Tmatrix3_single matrix/.op-divide-tmatrix3_single-ingle-matrix3_single.html + divide(Tmatrix3_double,Double):Tmatrix3_double matrix/.op-divide-tmatrix3_double-ouble-matrix3_double.html + divide(Tmatrix3_extended,extended):Tmatrix3_extended matrix/.op-divide-tmatrix3_extended-xtended-matrix3_extended.html + divide(Tmatrix4_single,single):Tmatrix4_single matrix/.op-divide-tmatrix4_single-ingle-matrix4_single.html + divide(Tmatrix4_double,Double):Tmatrix4_double matrix/.op-divide-tmatrix4_double-ouble-matrix4_double.html + divide(Tmatrix4_extended,extended):Tmatrix4_extended matrix/.op-divide-tmatrix4_extended-xtended-matrix4_extended.html dateutils dateutils/index.html DaysPerWeek dateutils/daysperweek.html WeeksPerFortnight dateutils/weeksperfortnight.html @@ -6560,6 +6609,8 @@ GetModuleByAddr exeinfo/getmodulebyaddr.html lineinfo lineinfo/index.html GetLineInfo lineinfo/getlineinfo.html + StabBackTraceStr lineinfo/stabbacktracestr.html + CloseStabs lineinfo/closestabs.html lnfodwrf lnfodwrf/index.html GetLineInfo lnfodwrf/getlineinfo.html ctypes ctypes/index.html @@ -6624,26 +6675,453 @@ coff_t ctypes/coff_t.html clongdouble ctypes/clongdouble.html Pclongdouble ctypes/pclongdouble.html - operator :=(clongdouble): Double ctypes/op-assign-clongdouble-double.html - operator :=(Double): clongdouble ctypes/op-assign-double-clongdouble.html - operator +(Double, clongdouble): Double ctypes/op-add-double-clongdouble-double.html - operator +(clongdouble, Double): Double ctypes/op-add-clongdouble-double-double.html - operator -(Double, clongdouble): Double ctypes/op-sub-double-clongdouble-double.html - operator -(clongdouble, Double): Double ctypes/op-sub-clongdouble-double-double.html - operator *(Double, clongdouble): Double ctypes/op-mul-double-clongdouble-double.html - operator *(clongdouble, Double): Double ctypes/op-mul-clongdouble-double-double.html - operator /(Double, clongdouble): Double ctypes/op-div-double-clongdouble-double.html - operator /(clongdouble, Double): Double ctypes/op-div-clongdouble-double-double.html - operator =(Double, clongdouble): Boolean ctypes/op-equal-double-clongdouble-boolean.html - operator =(clongdouble, Double): Boolean ctypes/op-equal-clongdouble-double-boolean.html - operator <(Double, clongdouble): Boolean ctypes/op-less-double-clongdouble-boolean.html - operator <(clongdouble, Double): Boolean ctypes/op-less-clongdouble-double-boolean.html - operator >(Double, clongdouble): Boolean ctypes/op-greater-double-clongdouble-boolean.html - operator >(clongdouble, Double): Boolean ctypes/op-greater-clongdouble-double-boolean.html - operator >=(Double, clongdouble): Boolean ctypes/op-greaterthan-double-clongdouble-boolean.html - operator >=(clongdouble, Double): Boolean ctypes/op-greaterthan-clongdouble-double-boolean.html - operator <=(Double, clongdouble): Boolean ctypes/op-lessequal-double-clongdouble-boolean.html - operator <=(clongdouble, Double): Boolean ctypes/op-lessequal-clongdouble-double-boolean.html + assign(clongdouble):Double ctypes/.op-assign-clongdouble-ouble.html + assign(Double):clongdouble ctypes/.op-assign-double-longdouble.html + add(Double,clongdouble):Double ctypes/.op-add-double-longdouble-ouble.html + add(clongdouble,Double):Double ctypes/.op-add-clongdouble-ouble-ouble.html + subtract(Double,clongdouble):Double ctypes/.op-subtract-double-longdouble-ouble.html + subtract(clongdouble,Double):Double ctypes/.op-subtract-clongdouble-ouble-ouble.html + multiply(Double,clongdouble):Double ctypes/.op-multiply-double-longdouble-ouble.html + multiply(clongdouble,Double):Double ctypes/.op-multiply-clongdouble-ouble-ouble.html + divide(Double,clongdouble):Double ctypes/.op-divide-double-longdouble-ouble.html + divide(clongdouble,Double):Double ctypes/.op-divide-clongdouble-ouble-ouble.html + equal(Double,clongdouble):Boolean ctypes/.op-equal-double-longdouble-oolean.html + equal(clongdouble,Double):Boolean ctypes/.op-equal-clongdouble-ouble-oolean.html + lessthan(Double,clongdouble):Boolean ctypes/.op-lessthan-double-longdouble-oolean.html + lessthan(clongdouble,Double):Boolean ctypes/.op-lessthan-clongdouble-ouble-oolean.html + greaterthan(Double,clongdouble):Boolean ctypes/.op-greaterthan-double-longdouble-oolean.html + greaterthan(clongdouble,Double):Boolean ctypes/.op-greaterthan-clongdouble-ouble-oolean.html + greaterthanorequal(Double,clongdouble):Boolean ctypes/.op-greaterthanorequal-double-longdouble-oolean.html + greaterthanorequal(clongdouble,Double):Boolean ctypes/.op-greaterthanorequal-clongdouble-ouble-oolean.html + lessthanorequal(Double,clongdouble):Boolean ctypes/.op-lessthanorequal-double-longdouble-oolean.html + lessthanorequal(clongdouble,Double):Boolean ctypes/.op-lessthanorequal-clongdouble-ouble-oolean.html + fpwidestring fpwidestring/index.html + SetActiveCollation fpwidestring/setactivecollation.html + GetActiveCollation fpwidestring/getactivecollation.html + DefaultCollationName fpwidestring/defaultcollationname.html + unicodedata unicodedata/index.html + SCollationNotFound unicodedata/index-1.html#scollationnotfound + MAX_WORD unicodedata/max_word.html + LOW_SURROGATE_BEGIN unicodedata/low_surrogate_begin.html + LOW_SURROGATE_END unicodedata/low_surrogate_end.html + HIGH_SURROGATE_BEGIN unicodedata/high_surrogate_begin.html + HIGH_SURROGATE_END unicodedata/high_surrogate_end.html + HIGH_SURROGATE_COUNT unicodedata/high_surrogate_count.html + UCS4_HALF_BASE unicodedata/ucs4_half_base.html + UCS4_HALF_MASK unicodedata/ucs4_half_mask.html + MAX_LEGAL_UTF32 unicodedata/max_legal_utf32.html + UGC_UppercaseLetter unicodedata/ugc_uppercaseletter.html + UGC_LowercaseLetter unicodedata/ugc_lowercaseletter.html + UGC_TitlecaseLetter unicodedata/ugc_titlecaseletter.html + UGC_ModifierLetter unicodedata/ugc_modifierletter.html + UGC_OtherLetter unicodedata/ugc_otherletter.html + UGC_NonSpacingMark unicodedata/ugc_nonspacingmark.html + UGC_CombiningMark unicodedata/ugc_combiningmark.html + UGC_EnclosingMark unicodedata/ugc_enclosingmark.html + UGC_DecimalNumber unicodedata/ugc_decimalnumber.html + UGC_LetterNumber unicodedata/ugc_letternumber.html + UGC_OtherNumber unicodedata/ugc_othernumber.html + UGC_ConnectPunctuation unicodedata/ugc_connectpunctuation.html + UGC_DashPunctuation unicodedata/ugc_dashpunctuation.html + UGC_OpenPunctuation unicodedata/ugc_openpunctuation.html + UGC_ClosePunctuation unicodedata/ugc_closepunctuation.html + UGC_InitialPunctuation unicodedata/ugc_initialpunctuation.html + UGC_FinalPunctuation unicodedata/ugc_finalpunctuation.html + UGC_OtherPunctuation unicodedata/ugc_otherpunctuation.html + UGC_MathSymbol unicodedata/ugc_mathsymbol.html + UGC_CurrencySymbol unicodedata/ugc_currencysymbol.html + UGC_ModifierSymbol unicodedata/ugc_modifiersymbol.html + UGC_OtherSymbol unicodedata/ugc_othersymbol.html + UGC_SpaceSeparator unicodedata/ugc_spaceseparator.html + UGC_LineSeparator unicodedata/ugc_lineseparator.html + UGC_ParagraphSeparator unicodedata/ugc_paragraphseparator.html + UGC_Control unicodedata/ugc_control.html + UGC_Format unicodedata/ugc_format.html + UGC_Surrogate unicodedata/ugc_surrogate.html + UGC_PrivateUse unicodedata/ugc_privateuse.html + UGC_Unassigned unicodedata/ugc_unassigned.html + ZERO_UINT24 unicodedata/zero_uint24.html + ROOT_COLLATION_NAME unicodedata/root_collation_name.html + ERROR_INVALID_CODEPOINT_SEQUENCE unicodedata/error_invalid_codepoint_sequence.html + ENDIAN_SUFFIX unicodedata/endian_suffix.html + TUInt24Rec unicodedata/tuint24rec.html + implicit(TUInt24Rec):Cardinal unicodedata/tuint24rec.op-implicit-tuint24rec-ardinal.html + implicit(TUInt24Rec):LongInt unicodedata/tuint24rec.op-implicit-tuint24rec-ongint.html + implicit(TUInt24Rec):Word unicodedata/tuint24rec.op-implicit-tuint24rec-ord.html + implicit(TUInt24Rec):Byte unicodedata/tuint24rec.op-implicit-tuint24rec-yte.html + implicit(Cardinal):TUInt24Rec unicodedata/tuint24rec.op-implicit-cardinal-uint24rec.html + equal(TUInt24Rec,TUInt24Rec):Boolean unicodedata/tuint24rec.op-equal-tuint24rec-uint24rec-oolean.html + equal(TUInt24Rec,Cardinal):Boolean unicodedata/tuint24rec.op-equal-tuint24rec-ardinal-oolean.html + equal(Cardinal,TUInt24Rec):Boolean unicodedata/tuint24rec.op-equal-cardinal-uint24rec-oolean.html + equal(TUInt24Rec,LongInt):Boolean unicodedata/tuint24rec.op-equal-tuint24rec-ongint-oolean.html + equal(LongInt,TUInt24Rec):Boolean unicodedata/tuint24rec.op-equal-longint-uint24rec-oolean.html + equal(TUInt24Rec,Word):Boolean unicodedata/tuint24rec.op-equal-tuint24rec-ord-oolean.html + equal(Word,TUInt24Rec):Boolean unicodedata/tuint24rec.op-equal-word-uint24rec-oolean.html + equal(TUInt24Rec,Byte):Boolean unicodedata/tuint24rec.op-equal-tuint24rec-yte-oolean.html + equal(Byte,TUInt24Rec):Boolean unicodedata/tuint24rec.op-equal-byte-uint24rec-oolean.html + notequal(TUInt24Rec,TUInt24Rec):Boolean unicodedata/tuint24rec.op-notequal-tuint24rec-uint24rec-oolean.html + notequal(TUInt24Rec,Cardinal):Boolean unicodedata/tuint24rec.op-notequal-tuint24rec-ardinal-oolean.html + notequal(Cardinal,TUInt24Rec):Boolean unicodedata/tuint24rec.op-notequal-cardinal-uint24rec-oolean.html + greaterthan(TUInt24Rec,TUInt24Rec):Boolean unicodedata/tuint24rec.op-greaterthan-tuint24rec-uint24rec-oolean.html + greaterthan(TUInt24Rec,Cardinal):Boolean unicodedata/tuint24rec.op-greaterthan-tuint24rec-ardinal-oolean.html + greaterthan(Cardinal,TUInt24Rec):Boolean unicodedata/tuint24rec.op-greaterthan-cardinal-uint24rec-oolean.html + greaterthanorequal(TUInt24Rec,TUInt24Rec):Boolean unicodedata/tuint24rec.op-greaterthanorequal-tuint24rec-uint24rec-oolean.html + greaterthanorequal(TUInt24Rec,Cardinal):Boolean unicodedata/tuint24rec.op-greaterthanorequal-tuint24rec-ardinal-oolean.html + greaterthanorequal(Cardinal,TUInt24Rec):Boolean unicodedata/tuint24rec.op-greaterthanorequal-cardinal-uint24rec-oolean.html + lessthan(TUInt24Rec,TUInt24Rec):Boolean unicodedata/tuint24rec.op-lessthan-tuint24rec-uint24rec-oolean.html + lessthan(TUInt24Rec,Cardinal):Boolean unicodedata/tuint24rec.op-lessthan-tuint24rec-ardinal-oolean.html + lessthan(Cardinal,TUInt24Rec):Boolean unicodedata/tuint24rec.op-lessthan-cardinal-uint24rec-oolean.html + lessthanorequal(TUInt24Rec,TUInt24Rec):Boolean unicodedata/tuint24rec.op-lessthanorequal-tuint24rec-uint24rec-oolean.html + lessthanorequal(TUInt24Rec,Cardinal):Boolean unicodedata/tuint24rec.op-lessthanorequal-tuint24rec-ardinal-oolean.html + lessthanorequal(Cardinal,TUInt24Rec):Boolean unicodedata/tuint24rec.op-lessthanorequal-cardinal-uint24rec-oolean.html + UInt24 unicodedata/uint24.html + PUInt24 unicodedata/puint24.html + PUC_Prop unicodedata/puc_prop.html + TUC_Prop unicodedata/tuc_prop.html + Category unicodedata/tuc_prop.category.html + WhiteSpace unicodedata/tuc_prop.whitespace.html + HangulSyllable unicodedata/tuc_prop.hangulsyllable.html + NumericValue unicodedata/tuc_prop.numericvalue.html + TUCA_PropWeights unicodedata/tuca_propweights.html + PUCA_PropWeights unicodedata/puca_propweights.html + TUCA_PropItemContextRec unicodedata/tuca_propitemcontextrec.html + GetCodePoints unicodedata/tuca_propitemcontextrec.getcodepoints.html + GetWeights unicodedata/tuca_propitemcontextrec.getweights.html + PUCA_PropItemContextRec unicodedata/puca_propitemcontextrec.html + PUCA_PropItemContextTreeNodeRec unicodedata/puca_propitemcontexttreenoderec.html + TUCA_PropItemContextTreeNodeRec unicodedata/tuca_propitemcontexttreenoderec.html + GetLeftNode unicodedata/tuca_propitemcontexttreenoderec.getleftnode.html + GetRightNode unicodedata/tuca_propitemcontexttreenoderec.getrightnode.html + TUCA_PropItemContextTreeRec unicodedata/tuca_propitemcontexttreerec.html + GetData unicodedata/tuca_propitemcontexttreerec.getdata.html + Data unicodedata/tuca_propitemcontexttreerec.data.html + Find unicodedata/tuca_propitemcontexttreerec.find.html + PUCA_PropItemContextTreeRec unicodedata/puca_propitemcontexttreerec.html + TUCA_PropItemRec unicodedata/tuca_propitemrec.html + HasCodePoint unicodedata/tuca_propitemrec.hascodepoint.html + CodePoint unicodedata/tuca_propitemrec.codepoint.html + IsValid unicodedata/tuca_propitemrec.isvalid.html + GetWeightArray unicodedata/tuca_propitemrec.getweightarray.html + GetSelfOnlySize unicodedata/tuca_propitemrec.getselfonlysize.html + GetContextual unicodedata/tuca_propitemrec.getcontextual.html + Contextual unicodedata/tuca_propitemrec.contextual.html + GetContext unicodedata/tuca_propitemrec.getcontext.html + IsDeleted unicodedata/tuca_propitemrec.isdeleted.html + IsWeightCompress_1 unicodedata/tuca_propitemrec.isweightcompress_1.html + IsWeightCompress_2 unicodedata/tuca_propitemrec.isweightcompress_2.html + PUCA_PropItemRec unicodedata/puca_propitemrec.html + TUCA_VariableKind unicodedata/tuca_variablekind.html + TCollationName unicodedata/tcollationname.html + PUCA_DataBook unicodedata/puca_databook.html + TUCA_DataBook unicodedata/tuca_databook.html + IsVariable unicodedata/tuca_databook.isvariable.html + TCollationField unicodedata/tcollationfield.html + TCollationFields unicodedata/tcollationfields.html + TUCASortKeyItem unicodedata/tucasortkeyitem.html + TUCASortKey unicodedata/tucasortkey.html + TEndianKind unicodedata/tendiankind.html + FromUCS4 unicodedata/fromucs4.html + ToUCS4 unicodedata/toucs4.html + UnicodeIsSurrogatePair unicodedata/unicodeissurrogatepair.html + UnicodeIsHighSurrogate unicodedata/unicodeishighsurrogate.html + UnicodeIsLowSurrogate unicodedata/unicodeislowsurrogate.html + UnicodeToUpper unicodedata/unicodetoupper.html + UnicodeToLower unicodedata/unicodetolower.html + GetProps unicodedata/getprops.html + GetPropUCA unicodedata/getpropuca.html + NormalizeNFD unicodedata/normalizenfd.html + CanonicalOrder unicodedata/canonicalorder.html + ComputeSortKey unicodedata/computesortkey.html + CompareSortKey unicodedata/comparesortkey.html + IncrementalCompareString unicodedata/incrementalcomparestring.html + RegisterCollation unicodedata/registercollation.html + UnregisterCollation unicodedata/unregistercollation.html + UnregisterCollations unicodedata/unregistercollations.html + FindCollation unicodedata/findcollation.html + GetCollationCount unicodedata/getcollationcount.html + PrepareCollation unicodedata/preparecollation.html + LoadCollation unicodedata/loadcollation.html + FreeCollation unicodedata/freecollation.html + unixcp unixcp/index.html + UnixCpMapLimit unixcp/unixcpmaplimit.html + UnixCpMap unixcp/unixcpmap.html + TUnixCpData unixcp/tunixcpdata.html + GetCodepageData unixcp/getcodepagedata.html + GetCodepageByName unixcp/getcodepagebyname.html + GetSystemCodepage unixcp/getsystemcodepage.html + fgl fgl/index.html + MaxListSize fgl/maxlistsize.html + MaxGListSize fgl/maxglistsize.html + TFPSListCompareFunc fgl/tfpslistcomparefunc.html + EListError fgl/elisterror.html + TFPSList fgl/tfpslist.html + Create fgl/tfpslist.create.html + Destroy fgl/tfpslist.destroy.html + Add fgl/tfpslist.add.html + Clear fgl/tfpslist.clear.html + Delete fgl/tfpslist.delete.html + Error fgl/tfpslist.error.html + Exchange fgl/tfpslist.exchange.html + Expand fgl/tfpslist.expand.html + Extract fgl/tfpslist.extract.html + IndexOf fgl/tfpslist.indexof.html + Insert fgl/tfpslist.insert.html + Move fgl/tfpslist.move.html + Assign fgl/tfpslist.assign.html + Remove fgl/tfpslist.remove.html + Pack fgl/tfpslist.pack.html + Sort fgl/tfpslist.sort.html + Capacity fgl/tfpslist.capacity.html + Count fgl/tfpslist.count.html + Items fgl/tfpslist.items.html + ItemSize fgl/tfpslist.itemsize.html + List fgl/tfpslist.list.html + First fgl/tfpslist.first.html + Last fgl/tfpslist.last.html + TFPGListEnumerator fgl/tfpglistenumerator.html + Create fgl/tfpglistenumerator.create.html + MoveNext fgl/tfpglistenumerator.movenext.html + Current fgl/tfpglistenumerator.current.html + TFPGList fgl/tfpglist.html + Create fgl/tfpglist.create.html + Add fgl/tfpglist.add.html + Extract fgl/tfpglist.extract.html + First fgl/tfpglist.first.html + GetEnumerator fgl/tfpglist.getenumerator.html + IndexOf fgl/tfpglist.indexof.html + Insert fgl/tfpglist.insert.html + Last fgl/tfpglist.last.html + Assign fgl/tfpglist.assign.html + Remove fgl/tfpglist.remove.html + Sort fgl/tfpglist.sort.html + Items fgl/tfpglist.items.html + List fgl/tfpglist.list.html + TFPGObjectList fgl/tfpgobjectlist.html + Create fgl/tfpgobjectlist.create.html + Add fgl/tfpgobjectlist.add.html + Extract fgl/tfpgobjectlist.extract.html + First fgl/tfpgobjectlist.first.html + GetEnumerator fgl/tfpgobjectlist.getenumerator.html + IndexOf fgl/tfpgobjectlist.indexof.html + Insert fgl/tfpgobjectlist.insert.html + Last fgl/tfpgobjectlist.last.html + Assign fgl/tfpgobjectlist.assign.html + Remove fgl/tfpgobjectlist.remove.html + Sort fgl/tfpgobjectlist.sort.html + Items fgl/tfpgobjectlist.items.html + List fgl/tfpgobjectlist.list.html + FreeObjects fgl/tfpgobjectlist.freeobjects.html + TFPGInterfacedObjectList fgl/tfpginterfacedobjectlist.html + Create fgl/tfpginterfacedobjectlist.create.html + Add fgl/tfpginterfacedobjectlist.add.html + Extract fgl/tfpginterfacedobjectlist.extract.html + First fgl/tfpginterfacedobjectlist.first.html + GetEnumerator fgl/tfpginterfacedobjectlist.getenumerator.html + IndexOf fgl/tfpginterfacedobjectlist.indexof.html + Insert fgl/tfpginterfacedobjectlist.insert.html + Last fgl/tfpginterfacedobjectlist.last.html + Assign fgl/tfpginterfacedobjectlist.assign.html + Remove fgl/tfpginterfacedobjectlist.remove.html + Sort fgl/tfpginterfacedobjectlist.sort.html + Items fgl/tfpginterfacedobjectlist.items.html + List fgl/tfpginterfacedobjectlist.list.html + TFPSMap fgl/tfpsmap.html + Create fgl/tfpsmap.create.html + Add fgl/tfpsmap.add.html + Find fgl/tfpsmap.find.html + IndexOf fgl/tfpsmap.indexof.html + IndexOfData fgl/tfpsmap.indexofdata.html + Insert fgl/tfpsmap.insert.html + InsertKey fgl/tfpsmap.insertkey.html + InsertKeyData fgl/tfpsmap.insertkeydata.html + Remove fgl/tfpsmap.remove.html + Sort fgl/tfpsmap.sort.html + Duplicates fgl/tfpsmap.duplicates.html + KeySize fgl/tfpsmap.keysize.html + DataSize fgl/tfpsmap.datasize.html + Keys fgl/tfpsmap.keys.html + Data fgl/tfpsmap.data.html + KeyData fgl/tfpsmap.keydata.html + Sorted fgl/tfpsmap.sorted.html + OnPtrCompare fgl/tfpsmap.onptrcompare.html + OnKeyPtrCompare fgl/tfpsmap.onkeyptrcompare.html + OnDataPtrCompare fgl/tfpsmap.ondataptrcompare.html + TFPGMap fgl/tfpgmap.html + Create fgl/tfpgmap.create.html + Add fgl/tfpgmap.add.html + Find fgl/tfpgmap.find.html + IndexOf fgl/tfpgmap.indexof.html + IndexOfData fgl/tfpgmap.indexofdata.html + InsertKey fgl/tfpgmap.insertkey.html + InsertKeyData fgl/tfpgmap.insertkeydata.html + Remove fgl/tfpgmap.remove.html + Keys fgl/tfpgmap.keys.html + Data fgl/tfpgmap.data.html + KeyData fgl/tfpgmap.keydata.html + OnCompare fgl/tfpgmap.oncompare.html + OnKeyCompare fgl/tfpgmap.onkeycompare.html + OnDataCompare fgl/tfpgmap.ondatacompare.html + TFPGMapInterfacedObjectData fgl/tfpgmapinterfacedobjectdata.html + Create fgl/tfpgmapinterfacedobjectdata.create.html + Add fgl/tfpgmapinterfacedobjectdata.add.html + Find fgl/tfpgmapinterfacedobjectdata.find.html + IndexOf fgl/tfpgmapinterfacedobjectdata.indexof.html + IndexOfData fgl/tfpgmapinterfacedobjectdata.indexofdata.html + InsertKey fgl/tfpgmapinterfacedobjectdata.insertkey.html + InsertKeyData fgl/tfpgmapinterfacedobjectdata.insertkeydata.html + Remove fgl/tfpgmapinterfacedobjectdata.remove.html + Keys fgl/tfpgmapinterfacedobjectdata.keys.html + Data fgl/tfpgmapinterfacedobjectdata.data.html + KeyData fgl/tfpgmapinterfacedobjectdata.keydata.html + OnCompare fgl/tfpgmapinterfacedobjectdata.oncompare.html + OnKeyCompare fgl/tfpgmapinterfacedobjectdata.onkeycompare.html + OnDataCompare fgl/tfpgmapinterfacedobjectdata.ondatacompare.html + character character/index.html + TUnicodeCategory character/tunicodecategory.html + TUnicodeCategorySet character/tunicodecategoryset.html + TCharacterOption character/tcharacteroption.html + TCharacterOptions character/tcharacteroptions.html + TCharacter character/tcharacter.html + Create character/tcharacter.create.html + ConvertFromUtf32 character/tcharacter.convertfromutf32.html + ConvertToUtf32 character/tcharacter.converttoutf32.html + GetNumericValue character/tcharacter.getnumericvalue.html + GetUnicodeCategory character/tcharacter.getunicodecategory.html + IsControl character/tcharacter.iscontrol.html + IsDigit character/tcharacter.isdigit.html + IsSurrogate character/tcharacter.issurrogate.html + IsHighSurrogate character/tcharacter.ishighsurrogate.html + IsLowSurrogate character/tcharacter.islowsurrogate.html + IsSurrogatePair character/tcharacter.issurrogatepair.html + IsLetter character/tcharacter.isletter.html + IsLetterOrDigit character/tcharacter.isletterordigit.html + IsLower character/tcharacter.islower.html + IsNumber character/tcharacter.isnumber.html + IsPunctuation character/tcharacter.ispunctuation.html + IsSeparator character/tcharacter.isseparator.html + IsSymbol character/tcharacter.issymbol.html + IsUpper character/tcharacter.isupper.html + IsWhiteSpace character/tcharacter.iswhitespace.html + ToLower character/tcharacter.tolower.html + ToUpper character/tcharacter.toupper.html + ConvertFromUtf32 character/convertfromutf32.html + ConvertToUtf32 character/converttoutf32.html + GetNumericValue character/getnumericvalue.html + GetUnicodeCategory character/getunicodecategory.html + IsControl character/iscontrol.html + IsDigit character/isdigit.html + IsSurrogate character/issurrogate.html + IsHighSurrogate character/ishighsurrogate.html + IsLowSurrogate character/islowsurrogate.html + IsSurrogatePair character/issurrogatepair.html + IsLetter character/isletter.html + IsLetterOrDigit character/isletterordigit.html + IsLower character/islower.html + IsNumber character/isnumber.html + IsPunctuation character/ispunctuation.html + IsSeparator character/isseparator.html + IsSymbol character/issymbol.html + IsUpper character/isupper.html + IsWhiteSpace character/iswhitespace.html + ToLower character/tolower.html + ToUpper character/toupper.html + charset charset/index.html + BINARY_MAPPING_FILE_EXT charset/binary_mapping_file_ext.html + tunicodechar charset/tunicodechar.html + tunicodestring charset/tunicodestring.html + tunicodecharmappingflag charset/tunicodecharmappingflag.html + punicodecharmapping charset/punicodecharmapping.html + tunicodecharmapping charset/tunicodecharmapping.html + preversecharmapping charset/preversecharmapping.html + treversecharmapping charset/treversecharmapping.html + punicodemap charset/punicodemap.html + tunicodemap charset/tunicodemap.html + TSerializedMapHeader charset/tserializedmapheader.html + loadunicodemapping charset/loadunicodemapping.html + loadbinaryunicodemapping charset/loadbinaryunicodemapping.html + registermapping charset/registermapping.html + registerbinarymapping charset/registerbinarymapping.html + getmap charset/getmap.html + mappingavailable charset/mappingavailable.html + getunicode charset/getunicode.html + getascii charset/getascii.html + unicodeducet unicodeducet/index.html + cp895 cp895/index.html + cp932 cp932/index.html + cp936 cp936/index.html + cp949 cp949/index.html + cp950 cp950/index.html + collation_de collation_de/index.html + collation_es collation_es/index.html + collation_fr_ca collation_fr_ca/index.html + collation_ja collation_ja/index.html + collation_ko collation_ko/index.html + collation_ru collation_ru/index.html + collation_sv collation_sv/index.html + collation_zh collation_zh/index.html + windirs windirs/index.html + CSIDL_PROGRAMS windirs/csidl_programs.html + CSIDL_PERSONAL windirs/csidl_personal.html + CSIDL_FAVORITES windirs/csidl_favorites.html + CSIDL_STARTUP windirs/csidl_startup.html + CSIDL_RECENT windirs/csidl_recent.html + CSIDL_SENDTO windirs/csidl_sendto.html + CSIDL_STARTMENU windirs/csidl_startmenu.html + CSIDL_MYMUSIC windirs/csidl_mymusic.html + CSIDL_MYVIDEO windirs/csidl_myvideo.html + CSIDL_DESKTOPDIRECTORY windirs/csidl_desktopdirectory.html + CSIDL_NETHOOD windirs/csidl_nethood.html + CSIDL_TEMPLATES windirs/csidl_templates.html + CSIDL_COMMON_STARTMENU windirs/csidl_common_startmenu.html + CSIDL_COMMON_PROGRAMS windirs/csidl_common_programs.html + CSIDL_COMMON_STARTUP windirs/csidl_common_startup.html + CSIDL_COMMON_DESKTOPDIRECTORY windirs/csidl_common_desktopdirectory.html + CSIDL_APPDATA windirs/csidl_appdata.html + CSIDL_PRINTHOOD windirs/csidl_printhood.html + CSIDL_LOCAL_APPDATA windirs/csidl_local_appdata.html + CSIDL_COMMON_FAVORITES windirs/csidl_common_favorites.html + CSIDL_INTERNET_CACHE windirs/csidl_internet_cache.html + CSIDL_COOKIES windirs/csidl_cookies.html + CSIDL_HISTORY windirs/csidl_history.html + CSIDL_COMMON_APPDATA windirs/csidl_common_appdata.html + CSIDL_WINDOWS windirs/csidl_windows.html + CSIDL_SYSTEM windirs/csidl_system.html + CSIDL_PROGRAM_FILES windirs/csidl_program_files.html + CSIDL_MYPICTURES windirs/csidl_mypictures.html + CSIDL_PROFILE windirs/csidl_profile.html + CSIDL_PROGRAM_FILES_COMMON windirs/csidl_program_files_common.html + CSIDL_COMMON_TEMPLATES windirs/csidl_common_templates.html + CSIDL_COMMON_DOCUMENTS windirs/csidl_common_documents.html + CSIDL_COMMON_ADMINTOOLS windirs/csidl_common_admintools.html + CSIDL_ADMINTOOLS windirs/csidl_admintools.html + CSIDL_COMMON_MUSIC windirs/csidl_common_music.html + CSIDL_COMMON_PICTURES windirs/csidl_common_pictures.html + CSIDL_COMMON_VIDEO windirs/csidl_common_video.html + CSIDL_CDBURN_AREA windirs/csidl_cdburn_area.html + CSIDL_PROFILES windirs/csidl_profiles.html + CSIDL_FLAG_CREATE windirs/csidl_flag_create.html + GetWindowsSpecialDir windirs/getwindowsspecialdir.html + sharemem sharemem/index.html + cp1251 cp1251/index.html + cp1252 cp1252/index.html + cp866 cp866/index.html + cp8859_1 cp8859_1/index.html + cp8859_2 cp8859_2/index.html + cp8859_5 cp8859_5/index.html + cp1253 cp1253/index.html + cp1250 cp1250/index.html + cp1254 cp1254/index.html + cp1255 cp1255/index.html + cp1256 cp1256/index.html + cp1257 cp1257/index.html + cp1258 cp1258/index.html + cp850 cp850/index.html + cp852 cp852/index.html + cp856 cp856/index.html + cp437 cp437/index.html + cp646 cp646/index.html + cp874 cp874/index.html + cpall cpall/index.html :classes #rtl.System.TObject #rtl.System.TObject @@ -6718,13 +7196,13 @@ 3PController r #rtl.System.TContainedObject #rtl.System.TAggregatedObject,#rtl.System.IInterface(#rtl.System.IUnknown) 2MQueryInterface -#rtl.types.IClassFactory #rtl.System.IUnknown +#rtl.Types.IClassFactory #rtl.System.IUnknown 0MCreateInstance 0MLockServer -#rtl.types.ISequentialStream #rtl.System.IUnknown +#rtl.Types.ISequentialStream #rtl.System.IUnknown 0MRead 0MWrite -#rtl.types.IStream #rtl.types.ISequentialStream +#rtl.Types.IStream #rtl.Types.ISequentialStream 0MSeek 0MSetSize 0MCopyTo @@ -7137,7 +7615,7 @@ 1VfindState 1MSetBit 1MSetSize -1MCheckBitIndex +2MCheckBitIndex 3MCreate 3MDestroy 3MGetFSize @@ -7274,6 +7752,7 @@ 1VFAdapter 1VFLBS 1VFStrictDelimiter +1VFLineBreak 1MGetCommaText 1MGetName 1MGetValue @@ -7291,6 +7770,8 @@ 1MGetDelimiter 1MGetNameValueSeparator 1MGetQuoteChar +1MGetLineBreak +1MSetLineBreak 2MDefineProperties 2MError 2MGet @@ -7310,6 +7791,8 @@ 2MGetValueFromIndex 2MSetValueFromIndex 2MCheckSpecialChars +2MGetNextLine +2MGetNextLinebreak 3MDestroy 3MAdd 3MAddObject @@ -7341,6 +7824,7 @@ 3PTextLineBreakStyle rw 3PDelimiter rw 3PDelimitedText rw +3PLineBreak rw 3PStrictDelimiter rw 3PQuoteChar rw 3PNameValueSeparator rw @@ -7519,7 +8003,7 @@ 3MCreate 3MCreateFromID 3MDestroy -#rtl.Classes.TStreamAdapter #rtl.System.TInterfacedObject,#rtl.types.IStream +#rtl.Classes.TStreamAdapter #rtl.System.TInterfacedObject,#rtl.Types.IStream 1VFStream 1VFOwnership 1Vm_bReverted @@ -7568,6 +8052,7 @@ 3MReadInt32 3MReadInt64 3MReadSet +3MReadSignature 3MReadStr 3MReadString 3MReadWideString @@ -7605,6 +8090,7 @@ 3MReadInt32 3MReadInt64 3MReadSet +3MReadSignature 3MReadStr 3MReadString 3MReadWideString @@ -7670,6 +8156,7 @@ 3MReadListEnd 3MReadRootComponent 3MReadVariant +3MReadSignature 3MReadString 3MReadWideString 3MReadUnicodeString @@ -7691,6 +8178,7 @@ #rtl.Classes.TAbstractObjectWriter #rtl.System.TObject 3MBeginCollection 3MBeginComponent +3MWriteSignature 3MBeginList 3MEndList 3MBeginProperty @@ -7717,7 +8205,6 @@ 2VFBufSize 2VFBufPos 2VFBufEnd -2VFSignatureWritten 2MWriteWord 2MWriteDWord 2MWriteQWord @@ -7726,6 +8213,7 @@ 2MWriteValue 3MCreate 3MDestroy +3MWriteSignature 3MBeginCollection 3MBeginComponent 3MBeginList @@ -7791,6 +8279,7 @@ 3MWriteSet 3MWriteListBegin 3MWriteListEnd +3MWriteSignature 3MWriteRootComponent 3MWriteString 3MWriteWideString @@ -8325,3 +8814,285 @@ 0Mdeterminant 0Minverse 0Mtranspose +#rtl.fgl.EListError #rtl.sysutils.Exception +#rtl.fgl.TFPSList #rtl.System.TObject +2VFList +2VFCount +2VFCapacity +2VFItemSize +2MCopyItem +2MDeref +2MGet +2MInternalExchange +2MInternalGet +2MInternalPut +2MPut +2MQuickSort +2MSetCapacity +2MSetCount +2MRaiseIndexError +2PInternalItems rw +2MGetLast +2MSetLast +2MGetFirst +2MSetFirst +3MCreate +3MDestroy +3MAdd +3MClear +3MDelete +3MError +3MExchange +3MExpand +3MExtract +3MIndexOf +3MInsert +3MMove +3MAssign +3MRemove +3MPack +3MSort +3PCapacity rw +3PCount rw +3PItems rw +3PItemSize r +3PList r +3PFirst rw +3PLast rw +#rtl.fgl.TFPGListEnumerator #rtl.System.TObject +2VFList +2VFPosition +2MGetCurrent +3MCreate +3MMoveNext +3PCurrent r +#rtl.fgl.TFPGList #rtl.fgl.TFPSList +1MTCompareFunc +1MTTypeList +1MPTypeList +1MPT +1MTFPGListEnumeratorSpec +2VFOnCompare +2MCopyItem +2MDeref +2MGet +2MGetList +2MItemPtrCompare +2MPut +2MGetLast +2MSetLast +2MGetFirst +2MSetFirst +3MCreate +3MAdd +3MExtract +3PFirst rw +3MGetEnumerator +3MIndexOf +3MInsert +3PLast rw +3MAssign +3MRemove +3MSort +3PItems rw +3PList r +#rtl.fgl.TFPGObjectList #rtl.fgl.TFPSList +1MTCompareFunc +1MTTypeList +1MPTypeList +1MPT +1MTFPGListEnumeratorSpec +2VFOnCompare +2VFFreeObjects +2MCopyItem +2MDeref +2MGet +2MGetList +2MItemPtrCompare +2MPut +2MGetLast +2MSetLast +2MGetFirst +2MSetFirst +3MCreate +3MAdd +3MExtract +3PFirst rw +3MGetEnumerator +3MIndexOf +3MInsert +3PLast rw +3MAssign +3MRemove +3MSort +3PItems rw +3PList r +3PFreeObjects rw +#rtl.fgl.TFPGInterfacedObjectList #rtl.fgl.TFPSList +1MTCompareFunc +1MTTypeList +1MPTypeList +1MPT +1MTFPGListEnumeratorSpec +2VFOnCompare +2MCopyItem +2MDeref +2MGet +2MGetList +2MItemPtrCompare +2MPut +2MGetLast +2MSetLast +2MGetFirst +2MSetFirst +3MCreate +3MAdd +3MExtract +3PFirst rw +3MGetEnumerator +3MIndexOf +3MInsert +3PLast rw +3MAssign +3MRemove +3MSort +3PItems rw +3PList r +#rtl.fgl.TFPSMap #rtl.fgl.TFPSList +1VFKeySize +1VFDataSize +1VFDuplicates +1VFSorted +1VFOnKeyPtrCompare +1VFOnDataPtrCompare +1MSetSorted +2MBinaryCompareKey +2MBinaryCompareData +2MSetOnKeyPtrCompare +2MSetOnDataPtrCompare +2MInitOnPtrCompare +2MCopyKey +2MCopyData +2MGetKey +2MGetKeyData +2MGetData +2MLinearIndexOf +2MPutKey +2MPutKeyData +2MPutData +3MCreate +3MAdd +3MFind +3MIndexOf +3MIndexOfData +3MInsert +3MInsertKey +3MInsertKeyData +3MRemove +3MSort +3PDuplicates rw +3PKeySize r +3PDataSize r +3PKeys rw +3PData rw +3PKeyData rw +3PSorted rw +3POnPtrCompare rw +3POnKeyPtrCompare rw +3POnDataPtrCompare rw +#rtl.fgl.TFPGMap #rtl.fgl.TFPSMap +1MTKeyCompareFunc +1MTDataCompareFunc +1MPKey +2VFOnKeyCompare +2VFOnDataCompare +2MCopyItem +2MCopyKey +2MCopyData +2MDeref +2MInitOnPtrCompare +2MGetKey +2MGetKeyData +2MGetData +2MKeyCompare +2MKeyCustomCompare +2MDataCustomCompare +2MPutKey +2MPutKeyData +2MPutData +2MSetOnKeyCompare +2MSetOnDataCompare +3MCreate +3MAdd +3MFind +3MIndexOf +3MIndexOfData +3MInsertKey +3MInsertKeyData +3MRemove +3PKeys rw +3PData rw +3PKeyData rw +3POnCompare rw +3POnKeyCompare rw +3POnDataCompare rw +#rtl.fgl.TFPGMapInterfacedObjectData #rtl.fgl.TFPSMap +1MTKeyCompareFunc +1MTDataCompareFunc +1MPKey +2VFOnKeyCompare +2VFOnDataCompare +2MCopyItem +2MCopyKey +2MCopyData +2MDeref +2MInitOnPtrCompare +2MGetKey +2MGetKeyData +2MGetData +2MKeyCompare +2MKeyCustomCompare +2MDataCustomCompare +2MPutKey +2MPutKeyData +2MPutData +2MSetOnKeyCompare +2MSetOnDataCompare +3MCreate +3MAdd +3MFind +3MIndexOf +3MIndexOfData +3MInsertKey +3MInsertKeyData +3MRemove +3PKeys rw +3PData rw +3PKeyData rw +3POnCompare rw +3POnKeyCompare rw +3POnDataCompare rw +#rtl.character.TCharacter #rtl.System.TObject +1MTestCategory +3MCreate +3MConvertFromUtf32 +3MConvertToUtf32 +3MGetNumericValue +3MGetUnicodeCategory +3MIsControl +3MIsDigit +3MIsSurrogate +3MIsHighSurrogate +3MIsLowSurrogate +3MIsSurrogatePair +3MIsLetter +3MIsLetterOrDigit +3MIsLower +3MIsNumber +3MIsPunctuation +3MIsSeparator +3MIsSymbol +3MIsUpper +3MIsWhiteSpace +3MToLower +3MToUpper Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/toc.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/toc.chm differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/docs/chm/user.chm and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/docs/chm/user.chm differ diff -Nru lazarus-1.4.4+dfsg/docs/Contributors.txt lazarus-1.6+dfsg/docs/Contributors.txt --- lazarus-1.4.4+dfsg/docs/Contributors.txt 2015-04-25 18:34:56.000000000 +0000 +++ lazarus-1.6+dfsg/docs/Contributors.txt 2015-11-12 10:43:17.000000000 +0000 @@ -8,6 +8,7 @@ Alexandr Gridnev Alexandre Leclerc Alexandru Alexandrov +Alexey Torgashin Andreas Hausladen Andreas Schneider Andrew Haines @@ -148,12 +149,14 @@ Mazen Neifer Micha Nelissen Michael A. Hess +Michael Fuchs Michal Bukovjan Michalis Kamburelis Mike Sapsard Mike Thompson Nikolay Ermolov Olivier Guilbaud +Ondrej Pokorny Patrick Chevalley Paul Ishenin Paul Michell @@ -183,6 +186,7 @@ Shane Miller Sileno Goedicke Silvio Clecio +Simon Ameis Slavko Fedorik Stefan Hille Takeda Matsuki diff -Nru lazarus-1.4.4+dfsg/docs/INSTALL.txt lazarus-1.6+dfsg/docs/INSTALL.txt --- lazarus-1.4.4+dfsg/docs/INSTALL.txt 2013-08-26 13:07:18.000000000 +0000 +++ lazarus-1.6+dfsg/docs/INSTALL.txt 2015-12-05 18:47:49.000000000 +0000 @@ -44,8 +44,8 @@ apt-get install lazarus #will pull in required gtk dependencies Download and install FreePascal. Either the rpm, tgz or the daily snapshot. - You need at least FPC 2.6.2 (2.6.2 is the stable version of FPC; uneven - versions like 2.7.1 are development versions). + You need at least FPC 2.6.4 (3.0.0 is the stable version of FPC; uneven + versions like 3.1.1 are development versions). To compile Lazarus (LCL + IDE) go to your unpacked Lazarus source and do: []$ make clean all @@ -64,8 +64,8 @@ http://developer.apple.com/. Download and install FreePascal. Either the dmg or the daily snapshot. - You need at least FPC 2.6.2 (2.6.2 is the stable version of FPC; uneven - versions like 2.7.1 are development versions). + You need at least FPC 2.6.4 (2.6.4 is the stable version of FPC; uneven + versions like 3.1.1 are development versions). To compile Lazarus (LCL + IDE) go to your unpacked Lazarus source and do: []$ make clean all @@ -81,7 +81,7 @@ -------------------------------------------------------------------------------- 2.1 Installing FreePascal under Linux: - Lazarus requires FPC (Free Pascal) version 2.6.2 (or newer) and it requires + Lazarus requires FPC (Free Pascal) version 2.6.4 (or newer) and it requires both the compiled FPC libs (binaries) and the FPC sources. Most of the Linux distributions contain packages for FreePascal (look for FPC). Use your package manager to install them. @@ -97,7 +97,7 @@ The FPC sources: The easiest way to get the Free Pascal sources is via svn. Of course you can also download it as whole, see http://www.freepascal.org/develop.html - for the daily snapshot of the release tree (2.7.x). + for the daily snapshot of the release tree (3.1.x). The FPC sources via svn: Create a directory where you would like to put the sources. You don't need @@ -147,8 +147,8 @@ (1) e.g. for FPC ftp://ftp.freepascal.org/fpc/dist/Linux/separate/sources.tar preferably an export (no SVN/ dirs). The above file misses this (2) Lazarus source snapshot. - - _any_ starting compiler from the 2.6.2 branch) You can do a check by parsing - the output of 'fpc -v' if it is 2.6.2, it is ok. + - _any_ starting compiler from the 2.6.4 branch) You can do a check by parsing + the output of 'fpc -v' if it is 2.6.4, it is ok. - dependant packages. (for FreeBSD that is gtk2, and GNU make, iconv and gettext) @@ -171,11 +171,11 @@ for ports) Create a symlink - ln -s $THEPREFIX/lib/fpc/2.4.2/ppc386 $THEPREFIX/bin/ppc386 + ln -s $THEPREFIX/lib/fpc/2.6.4/ppc386 $THEPREFIX/bin/ppc386 install sourceinstall PREFIX=$THEPREFIX - (5) (configure) run compiler/utils/samplecfg $THEPREFIX/lib/fpc/2.4.2 $ETCDIR + (5) (configure) run compiler/utils/samplecfg $THEPREFIX/lib/fpc/2.6.4 $ETCDIR (6) (optional, test), see if ppc386 -i gives output, else give a warning that user need to add $PREFIX/bin to his current path. Try to compiler a program with -viwn, and see if that gives errors. @@ -311,7 +311,7 @@ ftp://ftp.freepascal.org/pub/fpc/source/lazarus.zip Then unzip it to c:\lazarus for example. - You have to install at least FPC 2.6.2, e.g. in + You have to install at least FPC 2.6.4, e.g. in c:\pp\bin\win32. In this directory you can find a lot of exes (make, grep, ppc386, and so on). @@ -322,4 +322,4 @@ set path=c:\pp\bin\win32;c:\lazarus make - If you are lucky then you can type: lazarus.exe \ No newline at end of file + If you are lucky then you can type: lazarus.exe diff -Nru lazarus-1.4.4+dfsg/docs/lazdoc.css lazarus-1.6+dfsg/docs/lazdoc.css --- lazarus-1.4.4+dfsg/docs/lazdoc.css 2011-06-14 22:15:46.000000000 +0000 +++ lazarus-1.6+dfsg/docs/lazdoc.css 2015-08-01 08:48:43.000000000 +0000 @@ -83,7 +83,8 @@ /* comments in source fragments */ span.comment { color: darkcyan; - font-style: italic + font-style: italic; + font-family: monospace; } /* directives in source fragments */ diff -Nru lazarus-1.4.4+dfsg/docs/xml/lazutils/dictionarystringlist.xml lazarus-1.6+dfsg/docs/xml/lazutils/dictionarystringlist.xml --- lazarus-1.4.4+dfsg/docs/xml/lazutils/dictionarystringlist.xml 2013-04-20 12:55:58.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lazutils/dictionarystringlist.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru lazarus-1.4.4+dfsg/docs/xml/lazutils/fpcadds.xml lazarus-1.6+dfsg/docs/xml/lazutils/fpcadds.xml --- lazarus-1.4.4+dfsg/docs/xml/lazutils/fpcadds.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lazutils/fpcadds.xml 2015-01-25 14:40:27.000000000 +0000 @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lazutils/lazutf8.xml lazarus-1.6+dfsg/docs/xml/lazutils/lazutf8.xml --- lazarus-1.4.4+dfsg/docs/xml/lazutils/lazutf8.xml 2015-02-13 20:35:56.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lazutils/lazutf8.xml 2015-02-13 20:34:21.000000000 +0000 @@ -289,7 +289,7 @@ - + For a valid UTF-8 character it returns the length in bytes (1..4). Otherwise 0. diff -Nru lazarus-1.4.4+dfsg/docs/xml/lazutils/lazutilities.xml lazarus-1.6+dfsg/docs/xml/lazutils/lazutilities.xml --- lazarus-1.4.4+dfsg/docs/xml/lazutils/lazutilities.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lazutils/lazutilities.xml 2015-01-25 14:42:55.000000000 +0000 @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lazutils/lookupstringlist.xml lazarus-1.6+dfsg/docs/xml/lazutils/lookupstringlist.xml --- lazarus-1.4.4+dfsg/docs/xml/lazutils/lookupstringlist.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lazutils/lookupstringlist.xml 2015-07-07 12:05:03.000000000 +0000 @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/comboex.xml lazarus-1.6+dfsg/docs/xml/lcl/comboex.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/comboex.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/comboex.xml 2015-01-25 14:43:43.000000000 +0000 @@ -0,0 +1,3416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/comctrls.xml lazarus-1.6+dfsg/docs/xml/lcl/comctrls.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/comctrls.xml 2015-04-01 11:38:24.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/comctrls.xml 2015-11-14 07:10:24.000000000 +0000 @@ -13668,9 +13668,11 @@ - ImageIndex - the index of the image associated with the current node. Default -1 if no image + ImageIndex - the image index of the current node if not selected. Default -1 for no image - + + TTreeNode.SelectedIndex + @@ -13748,9 +13750,11 @@ - SelectedIndex - the index of the current node if selected: default - if not selected + SelectedIndex - the image index of the current node if selected. Default -1 for no image - + + TTreeNode.ImageIndex + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/controls.xml lazarus-1.6+dfsg/docs/xml/lcl/controls.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/controls.xml 2014-09-11 16:50:44.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/controls.xml 2015-07-11 23:27:51.000000000 +0000 @@ -11138,16 +11138,48 @@ - Is this control allowed to receive the focus? - A control can get the focus only when all of its Parents except the form are Visible and Enabled. -While CanFocus checks all control parents it does not check whether a form control is placed on can have focus. + Is this control allowed to receive the focus when parent form is visible? + +

    Checks if the control can get focus when parent form is visible, i.e. if all its parents except the form are visible and enabled. +

    +

    A possible usage:

    +
    if FormFoo.EditFoo.CanFocus then
    +  FormFoo.ActiveControl := FormFoo.EditFoo;
    +          
    +

    Please note that this function returns True also if the parent form isn't visible and therefore a consecutive SetFocus call could throw an exception. Use CanSetFocus in this case. +

    +
    - + + +
    + + Is this control allowed to receive the focus? + +

    Checks if the control can get focus, i.e. if all its parents are visible and enabled. +

    +

    A possible usage:

    +
    if MyControl.CanSetFocus then
    +  MyControl.SetFocus;
    +          
    +

    CanSetFocus should be prefered over CanFocus if used in CanSetFocus/SetFocus combination + because it checks also if the parent form can receive focus and thus prevents the "cannot focus an invisible window" LCL exception. +

    +
    + + + + +
    + + + + Finds the index value for the given control, in Controls[]. @@ -13426,8 +13458,8 @@ - - + If set to a value >0 call after value milliseconds OnShowHint again + Use this update the hint text while it is showing. diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/dbextctrls.xml lazarus-1.6+dfsg/docs/xml/lcl/dbextctrls.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/dbextctrls.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/dbextctrls.xml 2015-01-25 14:43:43.000000000 +0000 @@ -0,0 +1,403 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/dialogs.xml lazarus-1.6+dfsg/docs/xml/lcl/dialogs.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/dialogs.xml 2014-02-05 12:07:46.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/dialogs.xml 2015-12-23 21:47:53.000000000 +0000 @@ -730,6 +730,8 @@ The available filters and their description are separated by pipe symbols.
    To set this property during runtime assign a value like: "All files|*.*|Lazarus Project files|*.lpr"
    + +An entry can contain multiple masks separated by semicolon, e.g. "Pascal units|*.pas;*.pp;*.p"
    @@ -2772,29 +2774,28 @@ Show a question to the user and get a response - QuestionDlg has the same functionality as MessageDlg
    - -except for the parameter Buttons which is of a different type.
    - -You can define your own captions and return values of this function.
    -
    - - -Buttons is a list of TModalResult (defined as constants [mrNone..MrYesToAll] in - -) and strings.
    - -For each TModalResult a button is - created.
    - -To set a custom caption, add a string after a button.
    -
    - - - -The default TModalResults defined in controls.pp (mrNone..mrLast)
    - -doesn't need a caption. The default captions will be used.
    +

    QuestionDlg has the same functionality as MessageDlg except for the parameter Buttons which is of a different type.
    +You can define your own captions and return values of this function. +

    Buttons is a list of TModalResult (defined as constants [mrNone..MrYesToAll] in ) and strings.
    +For each TModalResult a button is created.
    +To set a custom caption, add a string after a button. You can use the special string parameters 'isdefault' and 'iscancel' to setup the default and cancel buttons. +

    The default TModalResults defined in controls.pp (mrNone..mrLast) don't need a caption. The default captions will be used. +

    You can mark one default button using the 'IsDefault' option. When the user presses 'Return' this button is triggered. +

    Some widgetsets provide an Escape key and/or a close button. This results in mrCancel even if it is not in the given button list. Use the 'IsCancel' option to redirect it to a button of your choice. You can combine 'IsDefault' and 'IsCancel'. +

    case QuestionDlg('COPYING',
    +                   'Abort?',
    +                   mtConfirmation,
    +                   [mrNo, '&No','IsDefault',
    +                   mrYes,'&Yes'],0) 
    +of
    +   mrYes : ShowMessage('You clicked Yes');
    +   mrNo : ShowMessage('You clicked No');
    +else
    +  // mrCancel
    +  ShowMessage('You cancelled the dialog.');
    +end;
    +
    +
    diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/editbtn.xml lazarus-1.6+dfsg/docs/xml/lcl/editbtn.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/editbtn.xml 2015-04-01 11:27:48.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/editbtn.xml 2015-06-02 11:59:42.000000000 +0000 @@ -2631,6 +2631,26 @@
    TCustomEditBtn sets default to True + Base class for filter controls which associate to a container control like Listbox or Treeview. + When the container control is connected to the filter control, the filtering happens automatically as a user enters text. When the filter is empty and does not have focus, it shows a grey "(filter)" text. + + + An event handler to give extra conditions for filtering, in addition to the default behavior. Returns True if the passes the filter.This feature has for example enabled filtering the Options windows in Lazarus IDE, based on captions of all controls on the options pages. + + Has effect when items in the filtered container can be checked. Typically a CheckListbox. + Called after all items are filtered. + The actual filter text.Typically a user types it in the edit control but it can also be set in code. +Filtering is done during idle time after the value of Filter text has changed. + + Items can be sorted while they are filtered. + For retaining selection in the filtered control. The actual type depends on the control. + Should be called when data was changed and it must be filtered again.Connects to OnIdle handler which filters the data later. + Removes the filter text and shows all items in the container. + Applies a new filter immediately without waiting for idle. Returns the previous filter. + Method that actually filters data in the container component. Must be implementation inherited classes. + Filters the data and updates the container.Does its job at once if Immediately=True. Otherwise connects to OnIdle handler which does it later. + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/extctrls.xml lazarus-1.6+dfsg/docs/xml/lcl/extctrls.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/extctrls.xml 2014-10-07 23:03:19.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/extctrls.xml 2015-11-23 21:34:39.000000000 +0000 @@ -6038,6 +6038,17 @@ + Container with flow layout of controls placed in it.Use TFloatPanel if you need a container with float layout. The Anchors and Align properties of child controls are ignored. +

    The floating direction is determined with FlowStyle property.

    +
    +
    Determine if controls in TCustomFlowPanel are wrapped. + Use ControlList to set extra options of flow panel controls. + Use FlowStyle to determine the flow direction of the flow panel layout. + The associated control to the flow panel control item.Don't set the Control property manually. It is used iternally by the designer. + Determines the wrap policy after this control.Valid only if TFlowPanel.AutoWrap = True. + The base class for TFlowPanel + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/forms.xml lazarus-1.6+dfsg/docs/xml/lcl/forms.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/forms.xml 2014-06-28 23:40:01.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/forms.xml 2015-12-27 20:27:38.000000000 +0000 @@ -1,4 +1,4 @@ - + @@ -8209,6 +8209,7 @@ The application terminates when this form is closed. + This property is set when the first form is created via Application.CreateForm and it is not FormStyle=fsSplash. @@ -9247,13 +9248,14 @@ - When True every form must have a resource. An exception is raised if the resource is missing when creating a form. + When True every form must have a resource (e.g. a .res file). An exception is raised if the resource is missing when creating a form. The form resource is the lfm file compiled into the executable of your application. For this flag it does not matter if it was compiled via an lrs file or via fpcres. The resource is automatically loaded by TForm and therfore any descendant when it is created via Create(Owner). If the resource is missing there is something wrong with either a resource or the unit which contains the faulty form. If the flag is false you will see a blank form and probably search a long time what is wrong. If you set this flag to true you get an exception. For creating forms without resources you have 3 options:
    • Create a TForm class (not a descendant)
    • Construct your form using the CreateNew() constructor.
    • It is also possible to disable the exception by setting the global variable RequireDerivedFormResource to False.
    -History:
    +History: + Before 0.9.31 there was no exception. Therefore some resourceless forms might use the standard constructor Create(Owner) and will now get exceptions. This change is Delphi compatible and compatible with TFrame and TDataModule components.
    diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/fpcadds.xml lazarus-1.6+dfsg/docs/xml/lcl/fpcadds.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/fpcadds.xml 2012-07-02 14:50:07.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/fpcadds.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/graphics.xml lazarus-1.6+dfsg/docs/xml/lcl/graphics.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/graphics.xml 2014-12-25 10:50:46.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/graphics.xml 2015-05-13 10:03:18.000000000 +0000 @@ -6084,28 +6084,42 @@ Writes Text string within a specified rectangle, according to predefined Style - Writes Text string within a specified rectangle, according to predefined Style
    -The boundaries of the rectangle are specified in ARect
    X, Y specify the starting point for writing the Text within the rectangle
    TextStyle determines whether the text is justified, centered, word-wrapped etc. If the Style argument is omitted, defaults are assumed
    + + Writes Text string within a specified rectangle, according to predefined Style
    + The boundaries of the rectangle are specified in ARect
    X, Y define the starting point for writing the Text within the rectangle.
    + TextStyle determines whether the text is justified, centered, word-wrapped, clipped at the rectangle boundaries, etc. If the Style argument is omitted, defaults are assumed.
    +
    + Note: + The exact text position depends on the specified rectangle, the TextStyle of the canvas, and the X, Y coordinates: +
      +
    • TextStyle.Alignment = taLeftJustify: Text begins at X
    • +
    • TextStyle.Alignment = taCenter: Text center is in the center of the rectangle (horizontally)
    • +
    • TextStyle.Alignment = taRightJustify: Text ends at right edge of the rectangle
    • +
    • TextStyle.Layout = tlTop: Top of the text is at Y
    • +
    • TextStyle.Layout = tlCenter: Text center is in the center of the rectangle (vertically)
    • +
    • TextStyle.Layout = tlBottom: Text sits above the the bottom edge of the rectangle
    • +
    +
    - + Rectangle within which the specified text is drawn - + Horizontal text start (respected only if TextStyle.Alignment = taLeftJustify) - + Vertical position of the top of the text (respected only if TextStyle.Layout = tlTop) - + Text to be drawn - + Optional parameter which determines whether the text is justified, word-wrapped, clipped, etc. If omitted, the current TextStyle of the canvas is used. @@ -14894,7 +14908,7 @@ FontData - the data describing the font - The Orientation (wheteher horizontal or vertical etc) of the current font + The OrientationRotation of the current font in 10th of a degree. Zero is text drawn to the right, upsides. With value 900 (90 degrees) it will be drawn towards the top. With 1800 it will be upside-down and drawn to the left. diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/grids.xml lazarus-1.6+dfsg/docs/xml/lcl/grids.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/grids.xml 2015-01-26 21:56:04.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/grids.xml 2015-11-21 17:13:06.000000000 +0000 @@ -4631,7 +4631,7 @@ - MouseToGridZone - convert muse coordinates to a gid zone + MouseToGridZone - convert mouse coordinates to a grid zone diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/lcltranslator.xml lazarus-1.6+dfsg/docs/xml/lcl/lcltranslator.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/lcltranslator.xml 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/lcltranslator.xml 2015-01-25 14:43:43.000000000 +0000 @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/menus.xml lazarus-1.6+dfsg/docs/xml/lcl/menus.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/menus.xml 2014-11-30 10:58:01.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/menus.xml 2015-04-05 11:02:16.000000000 +0000 @@ -1378,7 +1378,10 @@ Add - an item to the menu - + + Add - an item to the menu. + Be aware that adding an item to a TMenuItem that is a Separator, may crash your computer on non-Windows platforms. + diff -Nru lazarus-1.4.4+dfsg/docs/xml/lcl/stdctrls.xml lazarus-1.6+dfsg/docs/xml/lcl/stdctrls.xml --- lazarus-1.4.4+dfsg/docs/xml/lcl/stdctrls.xml 2015-04-01 11:27:48.000000000 +0000 +++ lazarus-1.6+dfsg/docs/xml/lcl/stdctrls.xml 2015-11-08 15:59:34.000000000 +0000 @@ -5021,6 +5021,9 @@ ~remove this?or to write the text it contains -> Font.Color!???of????here???OnDragOver? + Default text shown when the Text property is empty and control has no focus.TextHint fills the TCustomEdit with the value assigned to it, whenever the control's Text property is empty and the control does not have focus. +Hint only (and always if showhint = true) displays a baloontip when the mouse is over the control. +
    diff -Nru lazarus-1.4.4+dfsg/examples/address_book/addrbook.lpi lazarus-1.6+dfsg/examples/address_book/addrbook.lpi --- lazarus-1.4.4+dfsg/examples/address_book/addrbook.lpi 2013-03-24 11:57:34.000000000 +0000 +++ lazarus-1.6+dfsg/examples/address_book/addrbook.lpi 2015-07-07 15:35:28.000000000 +0000 @@ -1,4 +1,4 @@ - + @@ -41,7 +41,6 @@ - @@ -49,7 +48,6 @@ - @@ -75,7 +73,6 @@ - diff -Nru lazarus-1.4.4+dfsg/examples/address_book/frmmain.pas lazarus-1.6+dfsg/examples/address_book/frmmain.pas --- lazarus-1.4.4+dfsg/examples/address_book/frmmain.pas 2012-06-10 15:57:44.000000000 +0000 +++ lazarus-1.6+dfsg/examples/address_book/frmmain.pas 2015-07-07 15:35:28.000000000 +0000 @@ -23,9 +23,8 @@ interface uses - SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, DB, Dbf, Grids, DBGrids, DBCtrls, ExtCtrls, ActnList, Menus, - StdCtrls; + SysUtils, Controls, Forms, Dialogs, DB, Dbf, DBGrids, DBCtrls, ExtCtrls, + ActnList, Menus, StdCtrls; type TDataSetFirst = TAction; diff -Nru lazarus-1.4.4+dfsg/examples/affinetransforms/unit1.pas lazarus-1.6+dfsg/examples/affinetransforms/unit1.pas --- lazarus-1.4.4+dfsg/examples/affinetransforms/unit1.pas 2011-08-06 17:44:13.000000000 +0000 +++ lazarus-1.6+dfsg/examples/affinetransforms/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,9 +5,8 @@ interface uses - LCLType, LclIntf, Types, - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls, Grids, Menus, sqldb, Themes; + Classes, Types, + LCLType, LclIntf, Forms, Controls, Graphics, StdCtrls, ExtCtrls, Themes; type @@ -23,9 +22,8 @@ procedure PBPaint(Sender: TObject); procedure RGClick(Sender: TObject); private - { private declarations } + public - { public declarations } FImage: TBitmap; end; diff -Nru lazarus-1.4.4+dfsg/examples/androidlcl/android/build_debug_apk.bat lazarus-1.6+dfsg/examples/androidlcl/android/build_debug_apk.bat --- lazarus-1.4.4+dfsg/examples/androidlcl/android/build_debug_apk.bat 2012-12-01 14:09:43.000000000 +0000 +++ lazarus-1.6+dfsg/examples/androidlcl/android/build_debug_apk.bat 2015-03-19 11:40:29.000000000 +0000 @@ -30,24 +30,31 @@ REM Java compiler call javac -verbose -encoding UTF8 -classpath %APK_SDK_PLATFORM%\android.jar -d bin\classes src\com\pascal\lcltest\LCLActivity.java -REM DX to convert the java bytecode to dalvik bytecode -call dx --dex --verbose --output=%APK_PROJECT_PATH%\bin\classes.dex %APK_PROJECT_PATH%\bin\classes +REM Convert the java bytecode to dalvik bytecode +::REM For older SDKs: call dx --dex --verbose --output=%APK_PROJECT_PATH%\bin\classes.dex %APK_PROJECT_PATH%\bin\classes +call java -Djava.ext.dirs=%ANDROID_HOME%\platform-tools\lib\ -jar %ANDROID_HOME%\platform-tools\lib\dx.jar --dex --verbose --output=%APK_PROJECT_PATH%\bin\classes.dex %APK_PROJECT_PATH%\bin\classes REM It seams that dx calls echo off @echo on REM Now build the unsigned APK del %APK_PROJECT_PATH%\bin\%APP_NAME%-unsigned.apk -call apkbuilder %APK_PROJECT_PATH%\bin\%APP_NAME%-unsigned.apk -v -u -z %APK_PROJECT_PATH%\bin\%APP_NAME%.ap_ -f %APK_PROJECT_PATH%\bin\classes.dex +::REM For older SDKs: call apkbuilder %APK_PROJECT_PATH%\bin\%APP_NAME%-unsigned.apk -v -u -z %APK_PROJECT_PATH%\bin\%APP_NAME%.ap_ -f %APK_PROJECT_PATH%\bin\classes.dex +call java -classpath %ANDROID_HOME%\tools\lib\sdklib.jar com.android.sdklib.build.ApkBuilderMain %APK_PROJECT_PATH%\bin\%APP_NAME%-unsigned.apk -v -u -z %APK_PROJECT_PATH%\bin\%APP_NAME%.ap_ -f %APK_PROJECT_PATH%\bin\classes.dex REM Generating on the fly a debug key rem keytool -genkey -v -keystore bin\LCLDebugKey.keystore -alias LCLDebugKey -keyalg RSA -validity 10000 -dname NAME -storepass senhas -keypass senhas REM Signing the APK with a debug key del bin\%APP_NAME%-unaligned.apk -jarsigner -verbose -keystore bin\LCLDebugKey.keystore -keypass senhas -storepass senhas -signedjar bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%-unsigned.apk LCLDebugKey +::REM For Older SDKs: jarsigner -verbose -keystore bin\LCLDebugKey.keystore -keypass senhas -storepass senhas -signedjar bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%-unsigned.apk LCLDebugKey +REM JDK1.6 APK signing +jarsigner -verbose -keystore bin\LCLDebugKey.keystore -keypass 123456 -storepass 123456 -signedjar bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%-unsigned.apk LCLDebugKey +::REM JDK1.7 OR JDK1.8,Please use this command +::REM jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore bin\LCLDebugKey.keystore -keypass 123456 -storepass 123456 -signedjar bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%-unsigned.apk LCLDebugKey + REM Align the final APK package zipalign -v 4 bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%.apk REM call and pause together allow us to see the results in the end -pause \ No newline at end of file +pause diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/brushtest.pas lazarus-1.6+dfsg/examples/canvas_test/brushtest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/brushtest.pas 2012-04-06 14:34:36.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/brushtest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs; + Classes, Forms, Graphics; type @@ -14,9 +14,9 @@ TfrmBrush = class(TForm) procedure FormPaint(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/canvastestunit.pas lazarus-1.6+dfsg/examples/canvas_test/canvastestunit.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/canvastestunit.pas 2014-09-10 17:01:35.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/canvastestunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -6,8 +6,7 @@ uses // RTL, FCL, LCL - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, + Forms, StdCtrls, // Project units rectanglestest, brushtest, pentest, fonttest, shapedwindowtest, ellipseunit, screenshotunit, drawtest, imagetest, systemcolorstest; @@ -40,9 +39,9 @@ procedure btnShapedWindowClick(Sender: TObject); procedure btnSystemColorsClick(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/drawtest.pas lazarus-1.6+dfsg/examples/canvas_test/drawtest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/drawtest.pas 2014-03-07 08:38:28.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/drawtest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ComCtrls; + Classes, Forms, Graphics; type @@ -16,9 +15,9 @@ procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/ellipseunit.pas lazarus-1.6+dfsg/examples/canvas_test/ellipseunit.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/ellipseunit.pas 2013-06-06 09:44:25.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/ellipseunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs; + Forms, Graphics; type @@ -14,9 +14,9 @@ TfrmEllipse = class(TForm) procedure FormPaint(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/fonttest.pas lazarus-1.6+dfsg/examples/canvas_test/fonttest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/fonttest.pas 2011-04-08 09:15:38.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/fonttest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs; + SysUtils, Forms, Graphics; type @@ -14,9 +14,9 @@ TfrmFont = class(TForm) procedure FormPaint(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/imagetest.pas lazarus-1.6+dfsg/examples/canvas_test/imagetest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/imagetest.pas 2011-04-08 09:15:38.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/imagetest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,9 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ComCtrls, ExtCtrls, Menus, LCLIntf, LCLType, IntfGraphics, FPImage, - Math; + Classes, Math, Forms, Graphics, Dialogs, + StdCtrls, ComCtrls, ExtCtrls, LCLIntf, LCLType, IntfGraphics, FPImage; type @@ -26,9 +25,8 @@ procedure btnSaveJPEGClick(Sender: TObject); procedure FormCreate(Sender: TObject); private - { private declarations } + public - { public declarations } procedure RotateBitmap(ASource: TBitmap; ADest: TCanvas; x, y, Angle: integer); end; diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/pentest.pas lazarus-1.6+dfsg/examples/canvas_test/pentest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/pentest.pas 2011-04-08 09:15:38.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/pentest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs; + Classes, Forms, Graphics; type @@ -14,9 +14,9 @@ TfrmPen = class(TForm) procedure FormPaint(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/rectanglestest.pas lazarus-1.6+dfsg/examples/canvas_test/rectanglestest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/rectanglestest.pas 2011-04-08 09:15:38.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/rectanglestest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs; + Classes, Forms, Graphics; type @@ -14,9 +14,9 @@ TfrmRectangles = class(TForm) procedure FormPaint(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/screenshotunit.pas lazarus-1.6+dfsg/examples/canvas_test/screenshotunit.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/screenshotunit.pas 2011-04-08 09:15:38.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/screenshotunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ExtCtrls, Buttons, LCLType, LCLIntf; + SysUtils, Forms, Graphics, ExtCtrls, Buttons, LCLType, LCLIntf; type @@ -17,9 +16,9 @@ imgScreenshot: TImage; procedure btnScreenshotClick(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/shapedwindowtest.pas lazarus-1.6+dfsg/examples/canvas_test/shapedwindowtest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/shapedwindowtest.pas 2012-04-06 13:00:49.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/shapedwindowtest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, LCLIntf, LCLType; + Forms, Graphics, StdCtrls, LCLIntf; type @@ -17,9 +16,9 @@ procedure btnCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/canvas_test/systemcolorstest.pas lazarus-1.6+dfsg/examples/canvas_test/systemcolorstest.pas --- lazarus-1.4.4+dfsg/examples/canvas_test/systemcolorstest.pas 2014-09-10 17:49:20.000000000 +0000 +++ lazarus-1.6+dfsg/examples/canvas_test/systemcolorstest.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, types, FileUtil, LResources, Forms, Controls, Graphics, - Dialogs, LCLType, LCLIntf; + SysUtils, types, LResources, Forms, Graphics, LCLType, LCLIntf; type @@ -15,9 +14,9 @@ TfrmSystemColors = class(TForm) procedure FormPaint(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/cleandir/dircleaner.pp lazarus-1.6+dfsg/examples/cleandir/dircleaner.pp --- lazarus-1.4.4+dfsg/examples/cleandir/dircleaner.pp 2010-06-08 07:05:17.000000000 +0000 +++ lazarus-1.6+dfsg/examples/cleandir/dircleaner.pp 2015-07-04 23:08:27.000000000 +0000 @@ -34,7 +34,7 @@ interface uses - Classes, SysUtils, inicol, IniFiles, FileUtil; + Classes, SysUtils, inicol, IniFiles, LazFileUtils, LazUTF8; Type TSubDir = (sdExtension,sdYear,sdMonth,sdDay,sdDate,sdHour,sdMin,sdTime); diff -Nru lazarus-1.4.4+dfsg/examples/cleandir/frmlog.pp lazarus-1.6+dfsg/examples/cleandir/frmlog.pp --- lazarus-1.4.4+dfsg/examples/cleandir/frmlog.pp 2013-09-28 22:47:25.000000000 +0000 +++ lazarus-1.6+dfsg/examples/cleandir/frmlog.pp 2015-07-04 23:08:27.000000000 +0000 @@ -35,8 +35,7 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, - FileUtil, StdCtrls, dircleaner; + Forms, Dialogs, LazUTF8, StdCtrls, dircleaner; type diff -Nru lazarus-1.4.4+dfsg/examples/cleandir/frmmain.pp lazarus-1.6+dfsg/examples/cleandir/frmmain.pp --- lazarus-1.4.4+dfsg/examples/cleandir/frmmain.pp 2014-12-14 23:14:13.000000000 +0000 +++ lazarus-1.6+dfsg/examples/cleandir/frmmain.pp 2015-07-04 23:08:27.000000000 +0000 @@ -36,9 +36,8 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Menus, - ActnList, ComCtrls, ExtCtrls, RTTICtrls, StdCtrls, Buttons, - dircleaner, FileUtil, RTTIGrids; + SysUtils, Forms, Controls, Dialogs, Menus, ActnList, ComCtrls, ExtCtrls, + RTTICtrls, StdCtrls, Buttons, dircleaner, LazFileUtils, LazUTF8; type diff -Nru lazarus-1.4.4+dfsg/examples/cleandir/svccleandirs.pp lazarus-1.6+dfsg/examples/cleandir/svccleandirs.pp --- lazarus-1.4.4+dfsg/examples/cleandir/svccleandirs.pp 2015-02-07 12:08:55.000000000 +0000 +++ lazarus-1.6+dfsg/examples/cleandir/svccleandirs.pp 2015-07-04 23:08:27.000000000 +0000 @@ -36,7 +36,7 @@ {$R *.lfm} uses - Classes, SysUtils, daemonapp, eventlog, dircleaner, FileUtil; + Classes, SysUtils, daemonapp, eventlog, dircleaner, LazFileUtils, LazUTF8; type { TCleanDirsThread } diff -Nru lazarus-1.4.4+dfsg/examples/codepageconverter/filefind/filefind.pas lazarus-1.6+dfsg/examples/codepageconverter/filefind/filefind.pas --- lazarus-1.4.4+dfsg/examples/codepageconverter/filefind/filefind.pas 2013-10-05 04:50:14.000000000 +0000 +++ lazarus-1.6+dfsg/examples/codepageconverter/filefind/filefind.pas 2015-07-04 23:08:00.000000000 +0000 @@ -82,7 +82,7 @@ interface uses LResources, - SysUtils, Classes, FileUtil, Graphics, Controls, Forms, Dialogs; + SysUtils, Classes, LazFileUtils, Graphics, Controls, Forms, Dialogs; type TFindFileEvent = procedure(fullpath:string;info:TSearchRec)of object; diff -Nru lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.cs.po lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.cs.po --- lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.cs.po 2013-01-10 20:40:19.000000000 +0000 +++ lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.cs.po 2015-12-19 00:06:27.000000000 +0000 @@ -25,8 +25,7 @@ #: tlazconverterform.caption msgctxt "TLAZCONVERTERFORM.CAPTION" msgid "Codepage LazConverter for PAS, LFM, LRS, LRT & INC files v0.0.6" -msgstr "" -"LazConverter kódové stránky pro PAS, LFM, LRS, LRT a INC soubory v0.0.6" +msgstr "LazConverter kódové stránky pro PAS, LFM, LRS, LRT a INC soubory v0.0.6" #: tlazconverterform.label1.caption msgid "Path to your project:" @@ -51,3 +50,4 @@ #: tlazconverterform.selectdirectorydialog1.title msgid "Select Directory" msgstr "Vybrat složku" + diff -Nru lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.fr.po lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.fr.po --- lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -0,0 +1,54 @@ +msgid "" +msgstr "" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2016-01-25 10:10+0100\n" +"Last-Translator: Vasseur Gilles \n" +"Language-Team: Vasseur Gilles \n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.6\n" + +#: tlazconverterform.button1.caption +msgid "Path" +msgstr "Chemin" + +#: tlazconverterform.button2.caption +msgid "Search" +msgstr "Rechercher" + +#: tlazconverterform.button3.caption +msgid "Convert" +msgstr "Convertir" + +#: tlazconverterform.caption +msgctxt "TLAZCONVERTERFORM.CAPTION" +msgid "Codepage LazConverter for PAS, LFM, LRS, LRT & INC files v0.0.6" +msgstr "Codepage LazConverter pour PAS, LFM, LRS, LRT & INC files v0.0.6" + +#: tlazconverterform.label1.caption +msgid "Path to your project:" +msgstr "Chemin pour votre projet :" + +#: tlazconverterform.label2.caption +msgid "Convert From:" +msgstr "Convertir depuis :" + +#: tlazconverterform.label3.caption +msgid "Convert To:" +msgstr "Convertir vers :" + +#: tlazconverterform.label6.caption +msgid "Ready..." +msgstr "Prêt..." + +#: tlazconverterform.menuitem1.caption +msgid "Remove from conversion" +msgstr "Retirer de la conversion" + +#: tlazconverterform.selectdirectorydialog1.title +msgid "Select Directory" +msgstr "Choisir un répertoire" diff -Nru lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.hu.po lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.hu.po --- lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -51,3 +51,4 @@ #: tlazconverterform.selectdirectorydialog1.title msgid "Select Directory" msgstr "Könyvtár kiválasztása" + diff -Nru lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.lt.po lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.lt.po --- lazarus-1.4.4+dfsg/examples/codepageconverter/languages/lazconverter.lt.po 2012-08-15 23:40:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/codepageconverter/languages/lazconverter.lt.po 2015-12-19 00:06:27.000000000 +0000 @@ -9,8 +9,7 @@ "X-Generator: Lokalize 1.5\n" "MIME-Version: 1.0\n" "Last-Translator: Valdas Jankunas \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" -"100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "Language: lt\n" #: tlazconverterform.button1.caption @@ -28,8 +27,7 @@ #: tlazconverterform.caption msgctxt "TLAZCONVERTERFORM.CAPTION" msgid "Codepage LazConverter for PAS, LFM, LRS, LRT & INC files v0.0.6" -msgstr "" -"Koduotės konverteris LazConverter (PAS, LFM, LRS ir INC failams) v0.0.6" +msgstr "Koduotės konverteris LazConverter (PAS, LFM, LRS ir INC failams) v0.0.6" #: tlazconverterform.label1.caption msgid "Path to your project:" @@ -55,4 +53,3 @@ msgid "Select Directory" msgstr "Parinkite aplanką" - diff -Nru lazarus-1.4.4+dfsg/examples/codepageconverter/mainunit.pas lazarus-1.6+dfsg/examples/codepageconverter/mainunit.pas --- lazarus-1.4.4+dfsg/examples/codepageconverter/mainunit.pas 2010-05-15 16:01:55.000000000 +0000 +++ lazarus-1.6+dfsg/examples/codepageconverter/mainunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -26,9 +26,8 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls, - FileUtil, StdCtrls, Buttons, ComCtrls, Menus, - DefaultTranslator, FileCtrl; + Classes, SysUtils, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls, Menus, FileCtrl, + LazFileUtils, LazUTF8; type @@ -57,9 +56,8 @@ procedure Form1Show(Sender: TObject); procedure MenuItem1Click(Sender: TObject); private - { private declarations } + public - { public declarations } procedure CountFiles; end; diff -Nru lazarus-1.4.4+dfsg/examples/codetools/jumptoimplementation/codetoolsexample1.pas lazarus-1.6+dfsg/examples/codetools/jumptoimplementation/codetoolsexample1.pas --- lazarus-1.4.4+dfsg/examples/codetools/jumptoimplementation/codetoolsexample1.pas 2014-11-26 14:52:16.000000000 +0000 +++ lazarus-1.6+dfsg/examples/codetools/jumptoimplementation/codetoolsexample1.pas 2015-10-11 09:11:47.000000000 +0000 @@ -26,17 +26,31 @@ interface uses - Classes, SysUtils, MenuIntf, LazIDEIntf, Controls, SrcEditorIntf, + Classes, SysUtils, LazIDEIntf, Controls, SrcEditorIntf, CodeToolManager, CodeTree, CodeCache, CustomCodeTool, IDECommands, - LCLType; + ToolBarIntf, LCLType, Menus, ComCtrls; + +type + TJumpToSectionDemoToolButton = class(TIDEToolButton) + private + procedure JumpToInterface(Sender: TObject); + procedure JumpToImplementation(Sender: TObject); + public + procedure DoOnAdded; override; + end; + + TKeyWordType = (kwInterface, kwImplementation); + +procedure JumpIDEToKeyword(KeywordType: TKeyWordType); procedure JumpIDEToImplementationKeyword(Sender: TObject); +procedure JumpIDEToInterfaceKeyword(Sender: TObject); procedure Register; implementation -procedure JumpIDEToImplementationKeyword(Sender: TObject); +procedure JumpIDEToKeyword(KeywordType: TKeyWordType); var SrcEditor: TSourceEditorInterface; CodeBuffer: TCodeBuffer; @@ -47,15 +61,14 @@ NewTopLine: Integer; Ok: Boolean; begin - if Sender=nil then ; // commit editor changes to codetools if not LazarusIDE.BeginCodeTools then exit; - + // get active source editor SrcEditor:=SourceEditorManagerIntf.ActiveEditor; if SrcEditor=nil then exit; CodeBuffer:=SrcEditor.CodeToolsBuffer as TCodeBuffer; - + Ok:=false; try // init codetool for the source @@ -64,7 +77,10 @@ if CurCodeTool is TCodeTool then begin // search imlementation node Tool:=TCodeTool(CurCodeTool); - Node:=Tool.FindImplementationNode; + case KeywordType of + kwInterface: Node:=Tool.FindInterfaceNode; + kwImplementation: Node:=Tool.FindImplementationNode; + end; if Node<>nil then begin // convert text position to editor postion NewTopLine:=0; @@ -91,19 +107,65 @@ LazarusIDE.DoJumpToCodeToolBossError; end; +procedure JumpIDEToImplementationKeyword(Sender: TObject); +begin + JumpIDEToKeyword(kwImplementation); +end; + +procedure JumpIDEToInterfaceKeyword(Sender: TObject); +begin + JumpIDEToKeyword(kwInterface); +end; + procedure Register; var Key: TIDEShortCut; Cat: TIDECommandCategory; - CmdMyTool: TIDECommand; + xCmd: TIDECommand; + xBtnCmd: TIDEButtonCommand; begin - // register IDE shortcut and menu item + // register IDE shortcut and tool button Key := IDEShortCut(VK_UNKNOWN,[],VK_UNKNOWN,[]); Cat:=IDECommandList.FindCategoryByName(CommandCategoryCodeTools); - CmdMyTool := RegisterIDECommand(Cat,'JumpToImplementation', 'Jump to implementation keyword', Key, nil, @JumpIDEToImplementationKeyword); + xCmd := RegisterIDECommand(Cat,'JumpToImplementationDemo', 'Jump to implementation keyword (demo)', Key, nil, @JumpIDEToImplementationKeyword); + + xBtnCmd := RegisterIDEButtonCommand(xCmd); + xBtnCmd.ToolButtonClass := TJumpToSectionDemoToolButton; +end; + +{ TJumpToSectionDemoToolButton } - RegisterIDEMenuCommand(itmCodeToolSearches,'JumpToImplementation', - 'Jump to implementation keyword',nil,@JumpIDEToImplementationKeyword, CmdMyTool); +procedure TJumpToSectionDemoToolButton.DoOnAdded; +var + xItem: TMenuItem; +begin + inherited DoOnAdded; + + if DropdownMenu = nil then + begin + DropdownMenu := TPopupMenu.Create(Self); + Style := tbsDropDown; + end; + + xItem := TMenuItem.Create(DropdownMenu); + DropdownMenu.Items.Add(xItem); + xItem.Caption := 'Jump to interface keyword'; + xItem.OnClick := @JumpToInterface; + + xItem := TMenuItem.Create(DropdownMenu); + DropdownMenu.Items.Add(xItem); + xItem.Caption := 'Jump to implementation keyword'; + xItem.OnClick := @JumpToImplementation; +end; + +procedure TJumpToSectionDemoToolButton.JumpToImplementation(Sender: TObject); +begin + JumpIDEToImplementationKeyword(Sender); +end; + +procedure TJumpToSectionDemoToolButton.JumpToInterface(Sender: TObject); +begin + JumpIDEToInterfaceKeyword(Sender); end; end. diff -Nru lazarus-1.4.4+dfsg/examples/cooltoolbar/unit1.pas lazarus-1.6+dfsg/examples/cooltoolbar/unit1.pas --- lazarus-1.4.4+dfsg/examples/cooltoolbar/unit1.pas 2014-12-16 08:35:36.000000000 +0000 +++ lazarus-1.6+dfsg/examples/cooltoolbar/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -4,7 +4,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, + Classes, SysUtils, Forms, Controls, ComCtrls, Menus, ActnList, ExtCtrls, StdCtrls, Spin, Toolwin, IniFiles; type Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/examples/customhint/CustomHint1.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/examples/customhint/CustomHint1.ico differ diff -Nru lazarus-1.4.4+dfsg/examples/customhint/CustomHint1.lpi lazarus-1.6+dfsg/examples/customhint/CustomHint1.lpi --- lazarus-1.4.4+dfsg/examples/customhint/CustomHint1.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/customhint/CustomHint1.lpi 2015-02-20 15:49:38.000000000 +0000 @@ -0,0 +1,80 @@ + + + + + + + + + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="CustomHint1.lpr"/> + <IsPartOfProject Value="True"/> + <UnitName Value="CustomHint1"/> + </Unit0> + <Unit1> + <Filename Value="unit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Unit1"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="CustomHint1"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/examples/customhint/CustomHint1.lpr lazarus-1.6+dfsg/examples/customhint/CustomHint1.lpr --- lazarus-1.4.4+dfsg/examples/customhint/CustomHint1.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/customhint/CustomHint1.lpr 2015-02-20 15:49:38.000000000 +0000 @@ -0,0 +1,21 @@ +program CustomHint1; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, Unit1 + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource:=True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/examples/customhint/CustomHint1.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/examples/customhint/CustomHint1.res differ diff -Nru lazarus-1.4.4+dfsg/examples/customhint/unit1.lfm lazarus-1.6+dfsg/examples/customhint/unit1.lfm --- lazarus-1.4.4+dfsg/examples/customhint/unit1.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/customhint/unit1.lfm 2015-02-20 15:49:38.000000000 +0000 @@ -0,0 +1,58 @@ +object Form1: TForm1 + Left = 408 + Height = 246 + Top = 286 + Width = 443 + Caption = 'Form1' + ClientHeight = 246 + ClientWidth = 443 + OnCreate = FormCreate + LCLVersion = '1.5' + object Button1: TButton + Left = 30 + Height = 27 + Top = 30 + Width = 260 + AutoSize = True + Caption = 'Hover mouse over this button to see the hint' + ParentShowHint = False + ShowHint = True + TabOrder = 0 + end + object HideTimeoutTrackBar: TTrackBar + Left = 30 + Height = 44 + Top = 90 + Width = 170 + Max = 4000 + PageSize = 1 + Position = 500 + TabOrder = 1 + end + object HideTimeoutLabel: TLabel + Left = 220 + Height = 15 + Top = 104 + Width = 102 + Caption = 'HideTimeout in ms' + ParentColor = False + end + object ReshowTimeoutLabel: TLabel + Left = 220 + Height = 15 + Top = 166 + Width = 120 + Caption = 'ReshowTimeout in ms' + ParentColor = False + end + object ReshowTimeoutTrackBar: TTrackBar + Left = 30 + Height = 44 + Top = 150 + Width = 170 + Max = 2000 + PageSize = 1 + Position = 1000 + TabOrder = 2 + end +end diff -Nru lazarus-1.4.4+dfsg/examples/customhint/unit1.pas lazarus-1.6+dfsg/examples/customhint/unit1.pas --- lazarus-1.4.4+dfsg/examples/customhint/unit1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/customhint/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -0,0 +1,67 @@ +unit Unit1; + +{$mode objfpc}{$H+} + +interface + +uses + SysUtils, LazLogger, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls; + +type + + { TForm1 } + + TForm1 = class(TForm) + Button1: TButton; + HideTimeoutLabel: TLabel; + HideTimeoutTrackBar: TTrackBar; + ReshowTimeoutLabel: TLabel; + ReshowTimeoutTrackBar: TTrackBar; + procedure FormCreate(Sender: TObject); + procedure Button1ShowHint(Sender: TObject; HintInfo: PHintInfo); + private + public + end; + +var + Form1: TForm1; + +implementation + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.FormCreate(Sender: TObject); +begin + Button1.OnShowHint:=@Button1ShowHint; +end; + +procedure TForm1.Button1ShowHint(Sender: TObject; HintInfo: PHintInfo); +var + Hour: word; + Minute: word; + Second: word; + MilliSecond: word; +begin + DebugLn(['TForm1.Button1ShowHint', + ' HintControl=',DbgSName(HintInfo^.HintControl), + ' HintWindowClass=',DbgSName(HintInfo^.HintWindowClass), + ' HintPos=',dbgs(HintInfo^.HintPos), + ' HintMaxWidth=',HintInfo^.HintMaxWidth, + ' HintColor=',dbgs(HintInfo^.HintColor), + ' CursorRect=',dbgs(HintInfo^.CursorRect), + ' CursorPos=',dbgs(HintInfo^.CursorPos), + ' ReshowTimeout=',HintInfo^.ReshowTimeout, + ' HideTimeout=',HintInfo^.HideTimeout, + ' HintStr=',dbgstr(HintInfo^.HintStr), + ' HintData=',dbgs(HintInfo^.HintData) + ]); + DecodeTime(Now, Hour, Minute, Second, MilliSecond); + HintInfo^.HintStr:=Format('Time: %2D:%2D:%2D.%4D',[Hour, Minute, Second, MilliSecond]); + HintInfo^.HideTimeout:=HideTimeoutTrackBar.Position; + HintInfo^.ReshowTimeout:=ReshowTimeoutTrackBar.Position; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/examples/database/dblookup/unit1.pas lazarus-1.6+dfsg/examples/database/dblookup/unit1.pas --- lazarus-1.4.4+dfsg/examples/database/dblookup/unit1.pas 2011-08-06 17:14:42.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/dblookup/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - DbCtrls, db, DBGrids, dbf, ExtCtrls; + SysUtils, Forms, DbCtrls, db, DBGrids, dbf, ExtCtrls; type @@ -37,9 +36,9 @@ Splitter2: TSplitter; procedure FormShow(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/database/image_mushrooms/unit1.pas lazarus-1.6+dfsg/examples/database/image_mushrooms/unit1.pas --- lazarus-1.4.4+dfsg/examples/database/image_mushrooms/unit1.pas 2014-08-11 14:23:42.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/image_mushrooms/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -6,9 +6,9 @@ interface uses - Classes, SysUtils, FileUtil, LR_Class, LR_DBSet, Forms, Controls, Graphics, - Dialogs, DbCtrls, Buttons, ExtCtrls, StdCtrls, DBGrids, - db, sqldb, sqlite3conn, ibconnection, fbadmin, Grids; + Classes, SysUtils, db, sqldb, sqlite3conn, ibconnection, fbadmin, + FileUtil, Forms, Graphics, Dialogs, DbCtrls, Buttons, ExtCtrls, StdCtrls, + DBGrids, Grids, LR_Class, LR_DBSet; type @@ -44,13 +44,11 @@ procedure DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer; Column: TColumn; AState: TGridDrawState); procedure DBImage1DblClick(Sender: TObject); - procedure DBNavigator1BeforeAction(Sender: TObject; Button: TDBNavButtonType - ); + procedure DBNavigator1BeforeAction(Sender: TObject; Button: TDBNavButtonType); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure frReport1EnterRect(Memo: TStringList; View: TfrView); private - { private declarations } FUsingFirebird: boolean; //indicates whether we're using Firebird (true) or SQLite3 (false) // Updates linked image field with image named in DBEdit1.Text // Shows image to user @@ -63,7 +61,7 @@ // for either SQLite3 (empty) or Firebird (filled) function RecreateDB: boolean; public - { public declarations } + end; var @@ -115,8 +113,7 @@ ChangeImage; end; -procedure TForm1.DBNavigator1BeforeAction(Sender: TObject; - Button: TDBNavButtonType); +procedure TForm1.DBNavigator1BeforeAction(Sender: TObject; Button: TDBNavButtonType); begin if Button = nbRefresh then begin diff -Nru lazarus-1.4.4+dfsg/examples/database/sqldbtutorial3/dbconfiggui.pas lazarus-1.6+dfsg/examples/database/sqldbtutorial3/dbconfiggui.pas --- lazarus-1.4.4+dfsg/examples/database/sqldbtutorial3/dbconfiggui.pas 2012-11-27 22:34:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/sqldbtutorial3/dbconfiggui.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, dbconfig; + Forms, Dialogs, StdCtrls, dbconfig; type TConnectionTestFunction = function(ChosenConfig: TDBConnectionConfig): boolean of object; @@ -38,11 +38,9 @@ FConnectionConfig: TDBConnectionConfig; FConnectionTestFunction: TConnectionTestFunction; FSetupComplete: boolean; - { private declarations } public property Config: TDBConnectionConfig read FConnectionConfig; property ConnectionTestCallback: TConnectionTestFunction write FConnectionTestFunction; - { public declarations } end; var diff -Nru lazarus-1.4.4+dfsg/examples/database/sqldbtutorial3/dbconfig.pas lazarus-1.6+dfsg/examples/database/sqldbtutorial3/dbconfig.pas --- lazarus-1.4.4+dfsg/examples/database/sqldbtutorial3/dbconfig.pas 2012-11-27 22:34:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/sqldbtutorial3/dbconfig.pas 2015-07-04 23:08:27.000000000 +0000 @@ -29,7 +29,7 @@ interface uses - Classes, SysUtils, IniFiles; + SysUtils, IniFiles; type { TDBConnectionConfig } diff -Nru lazarus-1.4.4+dfsg/examples/database/sqldbtutorial3/mainform.pas lazarus-1.6+dfsg/examples/database/sqldbtutorial3/mainform.pas --- lazarus-1.4.4+dfsg/examples/database/sqldbtutorial3/mainform.pas 2012-11-27 22:34:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/sqldbtutorial3/mainform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids, + SysUtils, Forms, Controls, Dialogs, Grids, dbconfiggui,dbconfig, {General db unit}sqldb, {For EDataBaseError}db, @@ -23,14 +23,13 @@ procedure SalaryGridValidateEntry(sender: TObject; aCol, aRow: Integer; const OldValue: string; var NewValue: String); private - { private declarations } FConn: TSQLConnector; FQuery: TSQLQuery; FTran: TSQLTransaction; function ConnectionTest(ChosenConfig: TDBConnectionConfig): boolean; procedure LoadSalaryGrid; public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/database/sqlite_encryption_pragma/unit1.pas lazarus-1.6+dfsg/examples/database/sqlite_encryption_pragma/unit1.pas --- lazarus-1.4.4+dfsg/examples/database/sqlite_encryption_pragma/unit1.pas 2014-07-31 21:12:33.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/sqlite_encryption_pragma/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -49,8 +49,7 @@ interface uses - Classes, SysUtils, db, sqldb, sqlite3conn, FileUtil, Forms, Controls, - Graphics, Dialogs, StdCtrls, ExtCtrls, DBGrids; + SysUtils, db, sqldb, sqlite3conn, Forms, Dialogs, StdCtrls, ExtCtrls, DBGrids; type diff -Nru lazarus-1.4.4+dfsg/examples/database/tsqlscript/dbconfiggui.pas lazarus-1.6+dfsg/examples/database/tsqlscript/dbconfiggui.pas --- lazarus-1.4.4+dfsg/examples/database/tsqlscript/dbconfiggui.pas 2013-11-22 19:26:26.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/tsqlscript/dbconfiggui.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, dbconfig; + Forms, Dialogs, StdCtrls, dbconfig; type TConnectionTestFunction = function(ChosenConfig: TDBConnectionConfig): boolean of object; @@ -38,11 +38,9 @@ FConnectionConfig: TDBConnectionConfig; FConnectionTestFunction: TConnectionTestFunction; FSetupComplete: boolean; - { private declarations } public property Config: TDBConnectionConfig read FConnectionConfig; property ConnectionTestCallback: TConnectionTestFunction write FConnectionTestFunction; - { public declarations } end; var diff -Nru lazarus-1.4.4+dfsg/examples/database/tsqlscript/dbconfig.pas lazarus-1.6+dfsg/examples/database/tsqlscript/dbconfig.pas --- lazarus-1.4.4+dfsg/examples/database/tsqlscript/dbconfig.pas 2013-11-22 19:26:26.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/tsqlscript/dbconfig.pas 2015-07-04 23:08:27.000000000 +0000 @@ -29,7 +29,7 @@ interface uses - Classes, SysUtils, IniFiles; + SysUtils, IniFiles; type { TDBConnectionConfig } diff -Nru lazarus-1.4.4+dfsg/examples/database/tsqlscript/mainform.pas lazarus-1.6+dfsg/examples/database/tsqlscript/mainform.pas --- lazarus-1.4.4+dfsg/examples/database/tsqlscript/mainform.pas 2014-07-18 00:04:49.000000000 +0000 +++ lazarus-1.6+dfsg/examples/database/tsqlscript/mainform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids, - StdCtrls, dbconfiggui, dbconfig, + Classes, SysUtils, FileUtil, Forms, Controls, Dialogs, StdCtrls, + dbconfiggui, dbconfig, {General db unit}sqldb, {For EDataBaseError}db, {Now we add all databases we want to support, otherwise their drivers won't be loaded} @@ -32,7 +32,6 @@ procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private - { private declarations } FConn: TSQLConnector; FQuery: TSQLQuery; FTran: TSQLTransaction; @@ -41,7 +40,7 @@ // Display script error to the user procedure ShowScriptException(Sender: TObject; Statement: TStrings; TheException: Exception; var Continue: boolean); public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/dbeditmask/project1.lpi lazarus-1.6+dfsg/examples/dbeditmask/project1.lpi --- lazarus-1.4.4+dfsg/examples/dbeditmask/project1.lpi 2011-08-06 17:21:11.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dbeditmask/project1.lpi 2015-05-17 11:45:59.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -30,7 +30,7 @@ <RequiredPackages Count="3"> <Item1> <PackageName Value="DBFLaz"/> - <MinVersion Minor="1" Valid="True" Release="1"/> + <MinVersion Minor="1" Release="1" Valid="True"/> </Item1> <Item2> <PackageName Value="FCL"/> @@ -44,7 +44,6 @@ <Unit0> <Filename Value="project1.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="project1"/> </Unit0> <Unit1> <Filename Value="Unit1.pas"/> @@ -52,12 +51,11 @@ <ComponentName Value="Form1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <UnitName Value="Unit1"/> </Unit1> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="10"/> + <Version Value="11"/> <PathDelim Value="\"/> <Target> <Filename Value="project1"/> @@ -78,8 +76,5 @@ </Win32> </Options> </Linking> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/examples/dbeditmask/Unit1.lfm lazarus-1.6+dfsg/examples/dbeditmask/Unit1.lfm --- lazarus-1.4.4+dfsg/examples/dbeditmask/Unit1.lfm 2011-08-06 17:21:11.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dbeditmask/Unit1.lfm 2015-05-23 18:32:18.000000000 +0000 @@ -1,23 +1,23 @@ object Form1: TForm1 - Left = 363 + Left = 444 Height = 443 - Top = 307 - Width = 513 + Top = 175 + Width = 515 BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'Test DBEdit with mask' ClientHeight = 443 - ClientWidth = 513 + ClientWidth = 515 Font.Height = -11 Font.Name = 'MS Sans Serif' OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object Label3: TLabel Left = 8 - Height = 14 + Height = 13 Top = 16 - Width = 164 + Width = 163 Caption = 'ADate Field - Mask: !99/99/00;1;_' ParentColor = False end @@ -30,19 +30,16 @@ Columns = < item Title.Caption = 'ADATE' - Title.PrefixOption = poNone Width = 180 FieldName = 'ADATE' end item Title.Caption = 'ASTR' - Title.PrefixOption = poNone Width = 100 FieldName = 'ASTR' end item Title.Caption = 'AINT' - Title.PrefixOption = poNone Width = 100 FieldName = 'AINT' end> @@ -69,11 +66,12 @@ Options = [] TabOrder = 1 end - object DBEdit1: TDBEdit + object DateEdit: TDBEdit Left = 8 Height = 21 Top = 32 Width = 246 + CustomEditMask = True DataField = 'ADate' DataSource = DataSource1 CharCase = ecNormal @@ -83,18 +81,19 @@ end object ShowLongDateCheckBox: TCheckBox Left = 270 - Height = 17 - Top = 34 - Width = 90 + Height = 19 + Top = 32 + Width = 92 Caption = 'Show Full Date' OnChange = ShowLongDateCheckBoxChange TabOrder = 3 end - object DBEdit2: TDBEdit + object IntEdit: TDBEdit Left = 8 Height = 21 Top = 80 Width = 246 + CustomEditMask = True DataField = 'AINT' DataSource = DataSource1 CharCase = ecNormal @@ -104,13 +103,34 @@ end object Label1: TLabel Left = 8 - Height = 14 + Height = 13 Top = 64 - Width = 45 + Width = 44 Caption = 'AInt Field' ParentColor = False end - object DataSource1: TDatasource + object DBEdit1: TDBEdit + Left = 271 + Height = 21 + Top = 80 + Width = 193 + CustomEditMask = True + DataField = 'ASTR' + DataSource = DataSource1 + CharCase = ecNormal + EditMask = '(99) 9999.9999;1;_' + MaxLength = 14 + TabOrder = 5 + end + object Label2: TLabel + Left = 270 + Height = 13 + Top = 64 + Width = 85 + Caption = 'AStr Field (Phone)' + ParentColor = False + end + object DataSource1: TDataSource DataSet = Dbf1 left = 400 top = 288 diff -Nru lazarus-1.4.4+dfsg/examples/dbeditmask/Unit1.pas lazarus-1.6+dfsg/examples/dbeditmask/Unit1.pas --- lazarus-1.4.4+dfsg/examples/dbeditmask/Unit1.pas 2011-08-06 17:21:11.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dbeditmask/Unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -6,19 +6,20 @@ interface uses - LCLIntf, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, DBCtrls, ExtCtrls, DBGrids, DB, dbf, FileUtil, LResources; + SysUtils, Forms, StdCtrls, DBCtrls, DBGrids, DB, dbf, LazFileUtils; type { TForm1 } TForm1 = class(TForm) - DBEdit2: TDBEdit; + DBEdit1: TDBEdit; + IntEdit: TDBEdit; Dbf1ADATE: TDateField; Dbf1AINT: TLargeintField; Dbf1ASTR: TStringField; Label1: TLabel; + Label2: TLabel; ShowLongDateCheckBox: TCheckBox; DataSource1: TDataSource; ClientDataSet1ADate: TDateField; @@ -27,7 +28,7 @@ Dbf1: TDbf; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; - DBEdit1: TDBEdit; + DateEdit: TDBEdit; Label3: TLabel; procedure Dbf1ADATESetText(Sender: TField; const aText: string); procedure Dbf1AINTGetText(Sender: TField; var aText: string; @@ -36,7 +37,7 @@ procedure ShowLongDateCheckBoxChange(Sender: TObject); private public - { Public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/docking/unit1.pas lazarus-1.6+dfsg/examples/docking/unit1.pas --- lazarus-1.4.4+dfsg/examples/docking/unit1.pas 2013-09-29 07:26:58.000000000 +0000 +++ lazarus-1.6+dfsg/examples/docking/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Menus, ExtCtrls, Types, LDockTree, HelpIntfs, LazHelpHTML; + Classes, SysUtils, Types, Forms, Controls, Dialogs, Menus, ExtCtrls, + {LDockTree,} HelpIntfs, LazHelpHTML; type diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/easyedit/editmain.pas lazarus-1.6+dfsg/examples/dockmanager/easyedit/editmain.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/easyedit/editmain.pas 2013-09-29 07:26:58.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/easyedit/editmain.pas 2015-07-04 23:08:27.000000000 +0000 @@ -21,12 +21,12 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + Forms, Dialogs, Menus, {$IFDEF EditBook} fEditBook, {$ELSE} {$ENDIF} - Menus, fDockBook, fEditForm, SynEdit; + fDockBook, fEditForm; type {$IFDEF EditBook} diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/easytree/fdockable.pas lazarus-1.6+dfsg/examples/dockmanager/easytree/fdockable.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/easytree/fdockable.pas 2014-08-19 13:43:19.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/easytree/fdockable.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, LResources, ExtCtrls; + SysUtils, Forms, StdCtrls, ExtCtrls; type @@ -19,9 +18,9 @@ procedure Button1Click(Sender: TObject); procedure FormResize(Sender: TObject); private - { Private declarations } + public - { Public declarations } + end; implementation diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/easytree/fmain.pas lazarus-1.6+dfsg/examples/dockmanager/easytree/fmain.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/easytree/fmain.pas 2014-08-19 13:43:19.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/easytree/fmain.pas 2015-07-04 23:08:27.000000000 +0000 @@ -23,14 +23,13 @@ interface uses - LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, {$IFDEF easy} //use EasyDockSite {$ELSE} LDockTree, {$ENDIF} - Dialogs, StdCtrls, ComCtrls, Menus, ExtCtrls, LResources; + StdCtrls, ComCtrls, ExtCtrls; type @@ -71,7 +70,7 @@ Docker: TWinControl; ShapeCount: integer; public - { Public declarations } + end; var @@ -87,8 +86,6 @@ EasyDockSite, {$ELSE} {$ENDIF} - LCLProc, - Interfacebase, fTree; diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/easytree/ftree.pas lazarus-1.6+dfsg/examples/dockmanager/easytree/ftree.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/easytree/ftree.pas 2014-08-19 13:43:19.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/easytree/ftree.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,16 +5,15 @@ interface uses - LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, LResources; + Forms, StdCtrls; type TDumpBox = class(TForm) Memo1: TMemo; private - { Private declarations } + public - { Public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/elasticsite/fmastersite.pas lazarus-1.6+dfsg/examples/dockmanager/elasticsite/fmastersite.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/elasticsite/fmastersite.pas 2010-05-12 05:19:02.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/elasticsite/fmastersite.pas 2015-07-04 23:08:27.000000000 +0000 @@ -9,8 +9,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ExtCtrls, StdCtrls, + Classes, Forms, Controls, StdCtrls, uMakeSite; type Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/examples/dockmanager/elasticsite/SiteTest.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/examples/dockmanager/elasticsite/SiteTest.res differ diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo/fclientform.pas lazarus-1.6+dfsg/examples/dockmanager/ide_demo/fclientform.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo/fclientform.pas 2010-04-25 09:55:26.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/ide_demo/fclientform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -13,8 +13,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls; + Classes, Forms, StdCtrls; type TViewWindow = class(TForm) @@ -23,9 +22,9 @@ procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private - { private declarations } + public - { public declarations } + end; //var ViewWindow: TViewWindow; //useless diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo/feditbook.pas lazarus-1.6+dfsg/examples/dockmanager/ide_demo/feditbook.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo/feditbook.pas 2010-05-05 12:26:23.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/ide_demo/feditbook.pas 2015-07-04 23:08:27.000000000 +0000 @@ -18,8 +18,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - SynEdit, EasyDockSite, + Classes, SysUtils, Forms, Controls, SynEdit, EasyDockSite, fDockBook; type diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo/fminiide.pas lazarus-1.6+dfsg/examples/dockmanager/ide_demo/fminiide.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo/fminiide.pas 2010-05-01 15:19:43.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/ide_demo/fminiide.pas 2015-07-04 23:08:27.000000000 +0000 @@ -11,8 +11,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Menus, StdCtrls, SynEdit; + Classes, SysUtils, Forms, Controls, Dialogs, Menus, StdCtrls; type TMainBar = class(TForm) diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo2/fclientform2.pas lazarus-1.6+dfsg/examples/dockmanager/ide_demo2/fclientform2.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo2/fclientform2.pas 2010-05-21 18:50:10.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/ide_demo2/fclientform2.pas 2015-07-04 23:08:27.000000000 +0000 @@ -10,8 +10,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls, fEditBook2; + Classes, Forms, Controls, StdCtrls, fEditBook2; type TViewWindow = class(TForm) diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo2/feditbook2.pas lazarus-1.6+dfsg/examples/dockmanager/ide_demo2/feditbook2.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo2/feditbook2.pas 2010-05-22 10:59:28.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/ide_demo2/feditbook2.pas 2015-07-04 23:08:27.000000000 +0000 @@ -18,7 +18,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + Classes, SysUtils, Forms, Controls, ComCtrls, SynEdit, EasyDockSite, fDockBook; type diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo2/fminiide2.pas lazarus-1.6+dfsg/examples/dockmanager/ide_demo2/fminiide2.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/ide_demo2/fminiide2.pas 2010-05-21 11:25:33.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/ide_demo2/fminiide2.pas 2015-07-04 23:08:27.000000000 +0000 @@ -11,8 +11,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Menus, StdCtrls, SynEdit; + Classes, SysUtils, Forms, Controls, Dialogs, Menus, StdCtrls; type diff -Nru lazarus-1.4.4+dfsg/examples/dockmanager/toolbar/unit1.pas lazarus-1.6+dfsg/examples/dockmanager/toolbar/unit1.pas --- lazarus-1.4.4+dfsg/examples/dockmanager/toolbar/unit1.pas 2013-09-29 07:26:58.000000000 +0000 +++ lazarus-1.6+dfsg/examples/dockmanager/toolbar/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ComCtrls, StdCtrls, LCLProc, ColorBox; + Classes, SysUtils, Forms, ComCtrls, StdCtrls; type TForm1 = class(TForm) @@ -19,9 +18,9 @@ procedure Button1Click(Sender: TObject); procedure swView1Click(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/fbadmin/formunit.pas lazarus-1.6+dfsg/examples/fbadmin/formunit.pas --- lazarus-1.4.4+dfsg/examples/fbadmin/formunit.pas 2012-05-17 18:51:51.000000000 +0000 +++ lazarus-1.6+dfsg/examples/fbadmin/formunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FBAdmin, FileUtil, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls; + Classes, SysUtils, FBAdmin, Forms, StdCtrls, ExtCtrls; type diff -Nru lazarus-1.4.4+dfsg/examples/fontenum/mainunit.pas lazarus-1.6+dfsg/examples/fontenum/mainunit.pas --- lazarus-1.4.4+dfsg/examples/fontenum/mainunit.pas 2012-12-22 21:12:10.000000000 +0000 +++ lazarus-1.6+dfsg/examples/fontenum/mainunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,9 +5,8 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, - LCLType, LCLIntf, StdCtrls, Buttons, LCLProc, ExtCtrls, Grids, - FileUtil, IniFiles; + Classes, SysUtils, Forms, Graphics, Dialogs, StdCtrls, Grids, IniFiles, + LCLType, LCLIntf, LazUTF8; type @@ -44,7 +43,6 @@ procedure lbSizesClick(Sender: TObject); procedure lbStylesClick(Sender: TObject); private - { private declarations } FTime: LongWord; FIniTime: LongWord; FCurrentFamily,FCurrentStyle,FCurrentSize,FCurrentCharset: string; @@ -60,9 +58,8 @@ procedure LoadFontList; procedure LoadFamilyFonts(Charset: integer); procedure UpdateFont(F: TFont); - public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/fpdocmanager/fconfig.pas lazarus-1.6+dfsg/examples/fpdocmanager/fconfig.pas --- lazarus-1.4.4+dfsg/examples/fpdocmanager/fconfig.pas 2012-04-02 06:29:11.000000000 +0000 +++ lazarus-1.6+dfsg/examples/fpdocmanager/fconfig.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - ComCtrls, StdCtrls, CheckLst; + Classes, SysUtils, LazFileUtils, Forms, Dialogs, ExtCtrls, ComCtrls, StdCtrls, + CheckLst; type diff -Nru lazarus-1.4.4+dfsg/examples/fpdocmanager/feditor.pas lazarus-1.6+dfsg/examples/fpdocmanager/feditor.pas --- lazarus-1.4.4+dfsg/examples/fpdocmanager/feditor.pas 2012-03-08 19:54:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/fpdocmanager/feditor.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - FrmMain; + Classes, LazUTF8, FrmMain; type diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/columneditors/main.pas lazarus-1.6+dfsg/examples/gridexamples/columneditors/main.pas --- lazarus-1.4.4+dfsg/examples/gridexamples/columneditors/main.pas 2013-09-29 07:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/columneditors/main.pas 2015-07-04 23:08:27.000000000 +0000 @@ -34,8 +34,7 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Grids, - StdCtrls, ExtDlgs; + Classes, SysUtils, Forms, Graphics, Dialogs, Grids, StdCtrls, ExtDlgs; type diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/gridcelleditor/unit1.pas lazarus-1.6+dfsg/examples/gridexamples/gridcelleditor/unit1.pas --- lazarus-1.4.4+dfsg/examples/gridexamples/gridcelleditor/unit1.pas 2013-09-29 07:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/gridcelleditor/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Grids, - StdCtrls; + SysUtils, Forms, Controls, Grids, StdCtrls; type diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/grid_semaphor/example/unit1.pas lazarus-1.6+dfsg/examples/gridexamples/grid_semaphor/example/unit1.pas --- lazarus-1.4.4+dfsg/examples/gridexamples/grid_semaphor/example/unit1.pas 2014-08-19 13:43:19.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/grid_semaphor/example/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -26,8 +26,7 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, - Grids, SemaphorGrids, Buttons, StdCtrls, ExtCtrls; + Classes, Forms, Dialogs, Grids, SemaphorGrids, StdCtrls; type diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/grid_semaphor/semaphorgrids.pas lazarus-1.6+dfsg/examples/gridexamples/grid_semaphor/semaphorgrids.pas --- lazarus-1.4.4+dfsg/examples/gridexamples/grid_semaphor/semaphorgrids.pas 2013-10-07 16:52:08.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/grid_semaphor/semaphorgrids.pas 2015-07-04 23:08:00.000000000 +0000 @@ -57,7 +57,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, LCLProc, LCLIntf, LCLType, Forms, + Classes, SysUtils, LazUTF8, LResources, LCLProc, LCLIntf, LCLType, Forms, Controls, Graphics, Dialogs, Grids; const diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/spreadsheet/main.lfm lazarus-1.6+dfsg/examples/gridexamples/spreadsheet/main.lfm --- lazarus-1.4.4+dfsg/examples/gridexamples/spreadsheet/main.lfm 2008-10-16 17:42:49.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/spreadsheet/main.lfm 2015-07-04 23:08:27.000000000 +0000 @@ -3,82 +3,25 @@ Height = 370 Top = 193 Width = 550 - HelpContext = 0 + HorzScrollBar.Page = 89 + VertScrollBar.Page = 108 ActiveControl = grid - Align = alNone - AllowDropFiles = False AutoScroll = True - AutoSize = False - BorderIcons = [biSystemMenu, biMinimize, biMaximize] - BorderStyle = bsSizeable Caption = 'Spreadsheet example' - ChildSizing.LeftRightSpacing = 0 - ChildSizing.TopBottomSpacing = 0 - ChildSizing.HorizontalSpacing = 0 - ChildSizing.VerticalSpacing = 0 - ChildSizing.ControlsPerLine = 0 ClientHeight = 370 ClientWidth = 550 - DockSite = False - DragKind = dkDrag - DragMode = dmManual - Enabled = True - Font.Height = 0 - Font.Style = [] - FormStyle = fsNormal - ParentBiDiMode = True - ParentFont = False - Position = poDesigned - ShowInTaskBar = stDefault - UseDockManager = False - LCLVersion = '0.9.27' - WindowState = wsNormal + LCLVersion = '1.5' object grid: TStringGrid Left = 0 Height = 312 Top = 58 Width = 550 - HelpContext = 0 Align = alClient - AutoAdvance = aaRight - AutoEdit = True - AutoFillColumns = False - BorderSpacing.Left = 0 - BorderSpacing.Top = 0 - BorderSpacing.Right = 0 - BorderSpacing.Bottom = 0 - BorderSpacing.Around = 0 - BorderSpacing.CellAlignHorizontal = ccaFill - BorderSpacing.CellAlignVertical = ccaFill - BorderStyle = bsSingle ColCount = 257 DefaultColWidth = 90 - DefaultDrawing = True - DragCursor = crDrag - DragKind = dkDrag - DragMode = dmManual - Enabled = True - ExtendedSelect = True - FixedColor = clBtnFace - FixedCols = 1 - FixedRows = 1 - Flat = False - GridLineWidth = 1 - HeaderHotZones = [gzFixedCols] - HeaderPushZones = [gzFixedCols] Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing] - ParentColor = False - ParentFont = True - ParentShowHint = True RowCount = 1000 - ScrollBars = ssAutoBoth TabOrder = 0 - TabStop = True - TitleFont.Height = 0 - TitleFont.Style = [] - TitleStyle = tsLazarus - UseXORFeatures = False - Visible = True OnBeforeSelection = gridBeforeSelection OnDrawCell = gridDrawCell OnPrepareCanvas = gridPrepareCanvas @@ -347,74 +290,29 @@ Height = 58 Top = 0 Width = 550 - HelpContext = 0 - AutoSize = False - BorderSpacing.Left = 0 - BorderSpacing.Top = 0 - BorderSpacing.Right = 0 - BorderSpacing.Bottom = 0 - BorderSpacing.Around = 0 - BorderSpacing.CellAlignHorizontal = ccaFill - BorderSpacing.CellAlignVertical = ccaFill - BorderWidth = 0 ButtonHeight = 44 ButtonWidth = 44 Caption = 'ToolBar1' - ChildSizing.LeftRightSpacing = 0 - ChildSizing.TopBottomSpacing = 0 - ChildSizing.HorizontalSpacing = 0 - ChildSizing.VerticalSpacing = 0 - ChildSizing.ControlsPerLine = 0 - Ctl3D = False - DragCursor = crDrag - DragKind = dkDrag - DragMode = dmManual - EdgeInner = esRaised - EdgeOuter = esLowered - Enabled = True - ParentColor = True - ParentFont = True - ParentShowHint = True ShowCaptions = True TabOrder = 1 - TabStop = False - Visible = True object SaveButton: TToolButton Left = 1 Top = 2 - HelpContext = 0 Caption = 'Save' - DragCursor = crDrag - DragKind = dkDrag - DragMode = dmManual - Enabled = True - ParentShowHint = True - Visible = True OnClick = SaveButtonClick end object LoadButton: TToolButton Left = 45 Top = 2 - HelpContext = 0 Caption = 'Load' - DragCursor = crDrag - DragKind = dkDrag - DragMode = dmManual - Enabled = True - ParentShowHint = True - Visible = True OnClick = LoadButtonClick end end object OpenDialog1: TOpenDialog - Width = 0 - Height = 0 left = 42 top = 83 end object SaveDialog1: TSaveDialog - Width = 0 - Height = 0 left = 82 top = 85 end diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/spreadsheet/main.pas lazarus-1.6+dfsg/examples/gridexamples/spreadsheet/main.pas --- lazarus-1.4.4+dfsg/examples/gridexamples/spreadsheet/main.pas 2013-09-29 07:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/spreadsheet/main.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Grids, Buttons, ComCtrls; + Classes, SysUtils, Forms, Graphics, Dialogs, Grids, ComCtrls; type @@ -27,10 +26,9 @@ procedure LoadButtonClick(Sender: TObject); procedure SaveButtonClick(Sender: TObject); private - { private declarations } function IndexToAlphaIndex(AIndex: Integer): string; public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/title_images/main.lfm lazarus-1.6+dfsg/examples/gridexamples/title_images/main.lfm --- lazarus-1.4.4+dfsg/examples/gridexamples/title_images/main.lfm 2008-10-19 19:06:21.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/title_images/main.lfm 2015-07-04 23:08:27.000000000 +0000 @@ -3,95 +3,35 @@ Height = 278 Top = 206 Width = 425 - HelpContext = 0 - Align = alNone - AllowDropFiles = False + HorzScrollBar.Page = 235 + VertScrollBar.Page = 92 AutoScroll = True - AutoSize = False - BorderIcons = [biSystemMenu, biMinimize, biMaximize] - BorderStyle = bsSizeable Caption = 'Form1' - ChildSizing.LeftRightSpacing = 0 - ChildSizing.TopBottomSpacing = 0 - ChildSizing.HorizontalSpacing = 0 - ChildSizing.VerticalSpacing = 0 - ChildSizing.ControlsPerLine = 0 ClientHeight = 278 ClientWidth = 425 - DockSite = False - DragKind = dkDrag - DragMode = dmManual - Enabled = True - Font.Height = 0 - Font.Style = [] - FormStyle = fsNormal - ParentBiDiMode = True - ParentFont = False - Position = poDesigned - ShowInTaskBar = stDefault - UseDockManager = False - LCLVersion = '0.9.27' - WindowState = wsNormal + LCLVersion = '1.5' object StringGrid1: TStringGrid Left = 0 Height = 236 Top = 42 Width = 425 - HelpContext = 0 Align = alClient - AutoAdvance = aaRight - AutoEdit = True - AutoFillColumns = False - BorderSpacing.Left = 0 - BorderSpacing.Top = 0 - BorderSpacing.Right = 0 - BorderSpacing.Bottom = 0 - BorderSpacing.Around = 0 - BorderSpacing.CellAlignHorizontal = ccaFill - BorderSpacing.CellAlignVertical = ccaFill - BorderStyle = bsSingle ColCount = 3 Columns = < item - Alignment = taLeftJustify Title.Alignment = taCenter - Title.Caption = 'Fruit' Title.ImageLayout = blGlyphLeft + Title.Caption = 'Fruit' end item Alignment = taRightJustify Title.Alignment = taCenter - Title.Caption = 'Number' Title.ImageLayout = blGlyphLeft + Title.Caption = 'Number' end> - DefaultColWidth = 64 - DefaultDrawing = True - DragCursor = crDrag - DragKind = dkDrag - DragMode = dmManual - Enabled = True - ExtendedSelect = True - FixedColor = clBtnFace - FixedCols = 1 - FixedRows = 1 - Flat = False - GridLineWidth = 1 - HeaderHotZones = [gzFixedCols] - HeaderPushZones = [gzFixedCols] Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing, goSmoothScroll] - ParentColor = False - ParentFont = True - ParentShowHint = True - RowCount = 5 - ScrollBars = ssAutoBoth TabOrder = 0 - TabStop = True - TitleFont.Height = 0 - TitleFont.Style = [] TitleImageList = ImageList1 - TitleStyle = tsLazarus - UseXORFeatures = False - Visible = True OnHeaderClick = StringGrid1HeaderClick Cells = ( 8 @@ -126,36 +66,20 @@ Height = 42 Top = 0 Width = 425 - HelpContext = 0 Align = alTop AutoFill = True - AutoSize = False - BorderSpacing.Left = 0 - BorderSpacing.Top = 0 - BorderSpacing.Right = 0 - BorderSpacing.Bottom = 0 - BorderSpacing.Around = 0 - BorderSpacing.CellAlignHorizontal = ccaFill - BorderSpacing.CellAlignVertical = ccaFill Caption = ' Title image layout' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 - ChildSizing.HorizontalSpacing = 0 - ChildSizing.VerticalSpacing = 0 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize ChildSizing.EnlargeVertical = crsHomogenousChildResize ChildSizing.ShrinkHorizontal = crsScaleChilds ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 4 - ClientHeight = 24 + ClientHeight = 21 ClientWidth = 421 - ColumnLayout = clHorizontalThenVertical Columns = 4 - Ctl3D = False - DragCursor = crDrag - DragMode = dmManual - Enabled = True ItemIndex = 0 Items.Strings = ( 'Left' @@ -164,24 +88,10 @@ 'Bottom' ) OnClick = RadioGroup1Click - ParentFont = True - ParentColor = True - ParentCtl3D = True - ParentShowHint = True TabOrder = 1 TabStop = True - Visible = True end object ImageList1: TImageList - AllocBy = 4 - BlendColor = clNone - BkColor = clNone - DrawingStyle = dsNormal - Height = 16 - ImageType = itImage - Masked = False - ShareImages = False - Width = 16 left = 40 top = 128 Bitmap = { diff -Nru lazarus-1.4.4+dfsg/examples/gridexamples/title_images/main.pas lazarus-1.6+dfsg/examples/gridexamples/title_images/main.pas --- lazarus-1.4.4+dfsg/examples/gridexamples/title_images/main.pas 2013-09-29 07:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/gridexamples/title_images/main.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Grids, ExtCtrls; + SysUtils, Forms, Controls, Grids, ExtCtrls; type @@ -22,7 +21,7 @@ private procedure Refresh; public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/groupedcontrol/EditButtonDemo.lpi lazarus-1.6+dfsg/examples/groupedcontrol/EditButtonDemo.lpi --- lazarus-1.4.4+dfsg/examples/groupedcontrol/EditButtonDemo.lpi 2012-06-18 10:54:53.000000000 +0000 +++ lazarus-1.6+dfsg/examples/groupedcontrol/EditButtonDemo.lpi 2015-07-04 23:08:27.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -41,7 +41,6 @@ <Unit0> <Filename Value="EditButtonDemo.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="EditButtonDemo"/> </Unit0> <Unit1> <Filename Value="editbuttonunit1.pas"/> @@ -49,7 +48,6 @@ <ComponentName Value="Form1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <UnitName Value="editbuttonunit1"/> </Unit1> <Unit2> <Filename Value="groupedctrls.pas"/> @@ -74,12 +72,6 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <MsgFileName Value=""/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/examples/groupedcontrol/editbuttonunit1.pas lazarus-1.6+dfsg/examples/groupedcontrol/editbuttonunit1.pas --- lazarus-1.4.4+dfsg/examples/groupedcontrol/editbuttonunit1.pas 2012-06-18 12:25:12.000000000 +0000 +++ lazarus-1.6+dfsg/examples/groupedcontrol/editbuttonunit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls, EditBtn, GroupedCtrls; + RTTIGrids, Forms, StdCtrls, ExtCtrls, EditBtn, GroupedCtrls; type diff -Nru lazarus-1.4.4+dfsg/examples/htmlhelp_ipro/htmlhelp2viewer.pas lazarus-1.6+dfsg/examples/htmlhelp_ipro/htmlhelp2viewer.pas --- lazarus-1.4.4+dfsg/examples/htmlhelp_ipro/htmlhelp2viewer.pas 2013-09-29 07:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/htmlhelp_ipro/htmlhelp2viewer.pas 2016-02-13 12:39:14.000000000 +0000 @@ -147,5 +147,8 @@ BringToFront; // needed if already open and another help is shown end; +finalization + FreeAndNil(Help_Viewer); + end. diff -Nru lazarus-1.4.4+dfsg/examples/icons/unit1.pas lazarus-1.6+dfsg/examples/icons/unit1.pas --- lazarus-1.4.4+dfsg/examples/icons/unit1.pas 2010-07-29 09:13:16.000000000 +0000 +++ lazarus-1.6+dfsg/examples/icons/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, - IntfGraphics, GraphType, FPImage, LCLType, ExtCtrls, ComCtrls, FileUtil; + SysUtils, Forms, Graphics, StdCtrls, ExtCtrls, ComCtrls, LazUTF8; type { TForm1 } diff -Nru lazarus-1.4.4+dfsg/examples/idehelp/myidehelp.pas lazarus-1.6+dfsg/examples/idehelp/myidehelp.pas --- lazarus-1.4.4+dfsg/examples/idehelp/myidehelp.pas 2012-09-13 06:39:56.000000000 +0000 +++ lazarus-1.6+dfsg/examples/idehelp/myidehelp.pas 2015-07-04 23:08:27.000000000 +0000 @@ -44,9 +44,8 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, Forms, Controls, Graphics, Dialogs, - LazHelpIntf, HelpIntfs, ComCtrls, StdCtrls, LazConfigStorage, ExtCtrls, - IDEHelpIntf, IDEDialogs, IDEOptionsIntf, BaseIDEIntf; + Classes, SysUtils, LCLProc, Dialogs, ComCtrls, StdCtrls, ExtCtrls, IDEDialogs, + LazConfigStorage, LazHelpIntf, HelpIntfs, IDEHelpIntf, IDEOptionsIntf, BaseIDEIntf; const MyHelpConfigFilename = 'demo_myidehelp.xml'; diff -Nru lazarus-1.4.4+dfsg/examples/imagelist/unit1.pas lazarus-1.6+dfsg/examples/imagelist/unit1.pas --- lazarus-1.4.4+dfsg/examples/imagelist/unit1.pas 2013-09-08 20:58:12.000000000 +0000 +++ lazarus-1.6+dfsg/examples/imagelist/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, GraphType, Dialogs, - ExtCtrls, FileUtil, StdCtrls, ExtDlgs; + Classes, SysUtils, Forms, Controls, Graphics, GraphType, ExtCtrls, StdCtrls, + ExtDlgs, LazUTF8; type @@ -32,7 +32,7 @@ function GetImageMap(AEffect: TGraphicsDrawEffect): TImage; procedure ListBox1SelectionChange(Sender: TObject; User: boolean); private - { private declarations } + public procedure ShowImages(AIndex: Integer); procedure AddFile(AFileName: String); diff -Nru lazarus-1.4.4+dfsg/examples/imgviewer/frmmain.pas lazarus-1.6+dfsg/examples/imgviewer/frmmain.pas --- lazarus-1.4.4+dfsg/examples/imgviewer/frmmain.pas 2012-12-04 20:39:51.000000000 +0000 +++ lazarus-1.6+dfsg/examples/imgviewer/frmmain.pas 2015-07-04 23:08:27.000000000 +0000 @@ -25,7 +25,7 @@ interface uses - LCLIntf, SysUtils, Classes, Graphics, Controls, Forms, FileUtil, + SysUtils, Classes, Controls, Forms, LazFileUtils, LazUTF8, Dialogs, StdCtrls, ComCtrls, ExtCtrls, ActnList, Menus, LCLType, fpreadtiff {adds TIFF format read support to TImage}; diff -Nru lazarus-1.4.4+dfsg/examples/jpeg/jpegexample.lpi lazarus-1.6+dfsg/examples/jpeg/jpegexample.lpi --- lazarus-1.4.4+dfsg/examples/jpeg/jpegexample.lpi 2015-03-02 18:58:42.000000000 +0000 +++ lazarus-1.6+dfsg/examples/jpeg/jpegexample.lpi 2015-03-02 18:59:45.000000000 +0000 @@ -1,18 +1,19 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> + <Version Value="9"/> <PathDelim Value="\"/> - <Version Value="6"/> <General> <Flags> <SaveOnlyProjectUnits Value="True"/> + <LRSInOutputDirectory Value="False"/> </Flags> <MainUnit Value="0"/> - <IconPath Value=".\"/> - <TargetFileExt Value=""/> <Title Value="jpegexample"/> - <ActiveEditorIndexAtStart Value="0"/> </General> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> <PublishOptions> <Version Value="2"/> <DestinationDirectory Value="$(TestDir)\publishedproject\"/> @@ -36,53 +37,39 @@ <Unit0> <Filename Value="jpegexample.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="JPEGExample"/> <CursorPos X="10" Y="14"/> - <TopLine Value="1"/> <UsageCount Value="33"/> </Unit0> <Unit1> <Filename Value="mainform.pas"/> - <ComponentName Value="JPEGExampleForm"/> <IsPartOfProject Value="True"/> - <ResourceFilename Value="mainform.lrs"/> + <ComponentName Value="JPEGExampleForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> <UnitName Value="MainForm"/> - <CursorPos X="55" Y="57"/> - <TopLine Value="38"/> - <EditorIndex Value="0"/> + <IsVisibleTab Value="True"/> + <TopLine Value="74"/> + <CursorPos X="15" Y="89"/> <UsageCount Value="33"/> <Loaded Value="True"/> + <LoadedDesigner Value="True"/> </Unit1> <Unit2> <Filename Value="README.txt"/> <IsPartOfProject Value="True"/> <CursorPos X="2" Y="4"/> - <TopLine Value="1"/> - <UsageCount Value="21"/> <SyntaxHighlighter Value="None"/> + <UsageCount Value="21"/> </Unit2> </Units> </ProjectOptions> <CompilerOptions> - <Version Value="5"/> + <Version Value="11"/> <PathDelim Value="\"/> - <CodeGeneration> - <Generate Value="Faster"/> - </CodeGeneration> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> </CompilerOptions> - <Debugging> - <BreakPoints Count="2"> - <Item1> - <Source Value="home\satan\pascal\lazarus\lcl\interfaces\gtk2\gtk2int.pas"/> - <Line Value="34"/> - </Item1> - <Item2> - <Source Value="mainform.pas"/> - <Line Value="91"/> - </Item2> - </BreakPoints> - </Debugging> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/examples/lazresexplorer/languages/resexplorer.fr.po lazarus-1.6+dfsg/examples/lazresexplorer/languages/resexplorer.fr.po --- lazarus-1.4.4+dfsg/examples/lazresexplorer/languages/resexplorer.fr.po 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/lazresexplorer/languages/resexplorer.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -0,0 +1,117 @@ +msgid "" +msgstr "" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2016-01-25 21:42+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.6\n" + +#: reconstsunit.sabout +msgid "About ..." +msgstr "À propos de..." + +#: reconstsunit.sallfilesexcutablefilesexeexedlldlldll +msgid "All files (*.*)|*.*|Excutable files (*.exe)|*.exe|DLL (*.dll)|*.dll" +msgstr "Tous les fichiers (*.*)|*.*|Exécutables (*.exe)|*.exe|DLL (*.dll)|*.dll" + +#: reconstsunit.sallfilessharedlibsoso +msgid "All files (*)|*|Shared libraries (*.so)|*.so" +msgstr "Tous les fichiers (*)|*|Bibliothèques partagées (*.so)|*.so" + +#: reconstsunit.sbuilddate +msgid "Build date: " +msgstr "Date de création : " + +#: reconstsunit.scarbonwidgetset +msgid "Carbon widget set" +msgstr "Jeu graphique Carbon" + +#: reconstsunit.sexit +msgid "Exit" +msgstr "Quitter" + +#: reconstsunit.sfile +msgid "File" +msgstr "Fichier" + +#: reconstsunit.sfpcversion +msgid "FPC version: " +msgstr "Version FPC : " + +#: reconstsunit.sfpguiwidgetset +msgid "FpGUI widget set" +msgstr "Jeu graphique FpGUI" + +#: reconstsunit.sgtk2widgetset +msgid "GTK 2 widget set" +msgstr "Jeu graphique GTK 2" + +#: reconstsunit.sgtkwidgetset +msgid "GTK widget set" +msgstr "Jeu graphique GTK 1" + +#: reconstsunit.shelp +msgid "Help" +msgstr "Aide" + +#: reconstsunit.simage +msgid "Image" +msgstr "Image" + +#: reconstsunit.slclversion +msgid "LCL Version: " +msgstr "Version LCL : " + +#: reconstsunit.slicense +msgid "This program is free software under GNU GPL 2 license, see COPYING file" +msgstr "Ce programme est libre et édité sous la licence GNU GPL 2 (voir le fichier COPYING)" + +#: reconstsunit.sopen +msgid "Open ..." +msgstr "Ouvrir..." + +#: reconstsunit.sotherguiwidgetset +msgid "Other gui" +msgstr "Autre GUI" + +#: reconstsunit.sqtwidgetset +msgid "QT widget set" +msgstr "Jeu graphique QT" + +#: reconstsunit.sresourceexplorer +msgid "Resource explorer" +msgstr "Explorateur de ressources" + +#: reconstsunit.sresources +msgid "Resources" +msgstr "Ressources" + +#: reconstsunit.ssaveresource +msgid "Save resource ..." +msgstr "Enregistrement de ressource..." + +#: reconstsunit.sstrings +msgid "Strings" +msgstr "Chaînes" + +#: reconstsunit.stargetcpu +msgid "Target CPU: " +msgstr "Processeur cible : " + +#: reconstsunit.stargetos +msgid "Target OS: " +msgstr "OS cible : " + +#: reconstsunit.swin32_64widgetset +msgid "Win32/Win64 widget set" +msgstr "Jeu graphique Win32/Win64" + +#: reconstsunit.swincewidgetset +msgid "WinCE widget set" +msgstr "Jeu graphique WinCE" diff -Nru lazarus-1.4.4+dfsg/examples/lazresexplorer/reaboutunit.pas lazarus-1.6+dfsg/examples/lazresexplorer/reaboutunit.pas --- lazarus-1.4.4+dfsg/examples/lazresexplorer/reaboutunit.pas 2010-02-25 02:14:47.000000000 +0000 +++ lazarus-1.6+dfsg/examples/lazresexplorer/reaboutunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ButtonPanel, StdCtrls, versionresource; + LazUTF8, Forms, ButtonPanel, StdCtrls, versionresource; type @@ -41,7 +40,7 @@ TargetCPU = {$I %FPCTARGETCPU%}; implementation -uses reConstsUnit, resource, resreader, LCLVersion, +uses reConstsUnit, resource, LCLVersion, {$IFDEF WINDOWS} winpeimagereader {$ELSE} diff -Nru lazarus-1.4.4+dfsg/examples/lazresexplorer/reconstsunit.pas lazarus-1.6+dfsg/examples/lazresexplorer/reconstsunit.pas --- lazarus-1.4.4+dfsg/examples/lazresexplorer/reconstsunit.pas 2014-11-09 21:44:55.000000000 +0000 +++ lazarus-1.6+dfsg/examples/lazresexplorer/reconstsunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -4,9 +4,6 @@ interface -uses - Classes, SysUtils; - resourcestring sResourceExplorer = 'Resource explorer'; sSaveResource = 'Save resource ...'; @@ -40,7 +37,7 @@ function LCLVersionStr: string; implementation -uses gettext, translations, LCLVersion, InterfaceBase; +uses gettext, translations, InterfaceBase; function LCLVersionStr: string; begin diff -Nru lazarus-1.4.4+dfsg/examples/lazresexplorer/remainunit.lfm lazarus-1.6+dfsg/examples/lazresexplorer/remainunit.lfm --- lazarus-1.4.4+dfsg/examples/lazresexplorer/remainunit.lfm 2015-07-22 21:20:50.000000000 +0000 +++ lazarus-1.6+dfsg/examples/lazresexplorer/remainunit.lfm 2015-07-25 14:52:17.000000000 +0000 @@ -21,7 +21,7 @@ Images = ImageList1 ReadOnly = True TabOrder = 0 - OnClick = TreeView1Click + OnSelectionChanged = TreeView1SelectionChanged Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips] end object PageControl1: TPageControl @@ -29,9 +29,9 @@ Height = 506 Top = 56 Width = 475 - ActivePage = tabString + ActivePage = tabBinary Align = alClient - TabIndex = 0 + TabIndex = 2 TabOrder = 1 object tabString: TTabSheet Caption = 'String' @@ -67,6 +67,508 @@ Center = True end end + object tabBinary: TTabSheet + Caption = 'Binary' + ClientHeight = 478 + ClientWidth = 467 + inline SynEdit1: TSynEdit + Left = 0 + Height = 478 + Top = 0 + Width = 467 + Align = alClient + Font.Height = -13 + Font.Name = 'Courier New' + Font.Pitch = fpFixed + Font.Quality = fqNonAntialiased + ParentColor = False + ParentFont = False + TabOrder = 0 + Gutter.Width = 57 + Gutter.MouseActions = <> + RightGutter.Width = 0 + RightGutter.MouseActions = <> + Keystrokes = < + item + Command = ecUp + ShortCut = 38 + end + item + Command = ecSelUp + ShortCut = 8230 + end + item + Command = ecScrollUp + ShortCut = 16422 + end + item + Command = ecDown + ShortCut = 40 + end + item + Command = ecSelDown + ShortCut = 8232 + end + item + Command = ecScrollDown + ShortCut = 16424 + end + item + Command = ecLeft + ShortCut = 37 + end + item + Command = ecSelLeft + ShortCut = 8229 + end + item + Command = ecWordLeft + ShortCut = 16421 + end + item + Command = ecSelWordLeft + ShortCut = 24613 + end + item + Command = ecRight + ShortCut = 39 + end + item + Command = ecSelRight + ShortCut = 8231 + end + item + Command = ecWordRight + ShortCut = 16423 + end + item + Command = ecSelWordRight + ShortCut = 24615 + end + item + Command = ecPageDown + ShortCut = 34 + end + item + Command = ecSelPageDown + ShortCut = 8226 + end + item + Command = ecPageBottom + ShortCut = 16418 + end + item + Command = ecSelPageBottom + ShortCut = 24610 + end + item + Command = ecPageUp + ShortCut = 33 + end + item + Command = ecSelPageUp + ShortCut = 8225 + end + item + Command = ecPageTop + ShortCut = 16417 + end + item + Command = ecSelPageTop + ShortCut = 24609 + end + item + Command = ecLineStart + ShortCut = 36 + end + item + Command = ecSelLineStart + ShortCut = 8228 + end + item + Command = ecEditorTop + ShortCut = 16420 + end + item + Command = ecSelEditorTop + ShortCut = 24612 + end + item + Command = ecLineEnd + ShortCut = 35 + end + item + Command = ecSelLineEnd + ShortCut = 8227 + end + item + Command = ecEditorBottom + ShortCut = 16419 + end + item + Command = ecSelEditorBottom + ShortCut = 24611 + end + item + Command = ecToggleMode + ShortCut = 45 + end + item + Command = ecCopy + ShortCut = 16429 + end + item + Command = ecPaste + ShortCut = 8237 + end + item + Command = ecDeleteChar + ShortCut = 46 + end + item + Command = ecCut + ShortCut = 8238 + end + item + Command = ecDeleteLastChar + ShortCut = 8 + end + item + Command = ecDeleteLastChar + ShortCut = 8200 + end + item + Command = ecDeleteLastWord + ShortCut = 16392 + end + item + Command = ecUndo + ShortCut = 32776 + end + item + Command = ecRedo + ShortCut = 40968 + end + item + Command = ecLineBreak + ShortCut = 13 + end + item + Command = ecSelectAll + ShortCut = 16449 + end + item + Command = ecCopy + ShortCut = 16451 + end + item + Command = ecBlockIndent + ShortCut = 24649 + end + item + Command = ecLineBreak + ShortCut = 16461 + end + item + Command = ecInsertLine + ShortCut = 16462 + end + item + Command = ecDeleteWord + ShortCut = 16468 + end + item + Command = ecBlockUnindent + ShortCut = 24661 + end + item + Command = ecPaste + ShortCut = 16470 + end + item + Command = ecCut + ShortCut = 16472 + end + item + Command = ecDeleteLine + ShortCut = 16473 + end + item + Command = ecDeleteEOL + ShortCut = 24665 + end + item + Command = ecUndo + ShortCut = 16474 + end + item + Command = ecRedo + ShortCut = 24666 + end + item + Command = ecGotoMarker0 + ShortCut = 16432 + end + item + Command = ecGotoMarker1 + ShortCut = 16433 + end + item + Command = ecGotoMarker2 + ShortCut = 16434 + end + item + Command = ecGotoMarker3 + ShortCut = 16435 + end + item + Command = ecGotoMarker4 + ShortCut = 16436 + end + item + Command = ecGotoMarker5 + ShortCut = 16437 + end + item + Command = ecGotoMarker6 + ShortCut = 16438 + end + item + Command = ecGotoMarker7 + ShortCut = 16439 + end + item + Command = ecGotoMarker8 + ShortCut = 16440 + end + item + Command = ecGotoMarker9 + ShortCut = 16441 + end + item + Command = ecSetMarker0 + ShortCut = 24624 + end + item + Command = ecSetMarker1 + ShortCut = 24625 + end + item + Command = ecSetMarker2 + ShortCut = 24626 + end + item + Command = ecSetMarker3 + ShortCut = 24627 + end + item + Command = ecSetMarker4 + ShortCut = 24628 + end + item + Command = ecSetMarker5 + ShortCut = 24629 + end + item + Command = ecSetMarker6 + ShortCut = 24630 + end + item + Command = ecSetMarker7 + ShortCut = 24631 + end + item + Command = ecSetMarker8 + ShortCut = 24632 + end + item + Command = ecSetMarker9 + ShortCut = 24633 + end + item + Command = EcFoldLevel1 + ShortCut = 41009 + end + item + Command = EcFoldLevel2 + ShortCut = 41010 + end + item + Command = EcFoldLevel3 + ShortCut = 41011 + end + item + Command = EcFoldLevel4 + ShortCut = 41012 + end + item + Command = EcFoldLevel5 + ShortCut = 41013 + end + item + Command = EcFoldLevel6 + ShortCut = 41014 + end + item + Command = EcFoldLevel7 + ShortCut = 41015 + end + item + Command = EcFoldLevel8 + ShortCut = 41016 + end + item + Command = EcFoldLevel9 + ShortCut = 41017 + end + item + Command = EcFoldLevel0 + ShortCut = 41008 + end + item + Command = EcFoldCurrent + ShortCut = 41005 + end + item + Command = EcUnFoldCurrent + ShortCut = 41003 + end + item + Command = EcToggleMarkupWord + ShortCut = 32845 + end + item + Command = ecNormalSelect + ShortCut = 24654 + end + item + Command = ecColumnSelect + ShortCut = 24643 + end + item + Command = ecLineSelect + ShortCut = 24652 + end + item + Command = ecTab + ShortCut = 9 + end + item + Command = ecShiftTab + ShortCut = 8201 + end + item + Command = ecMatchBracket + ShortCut = 24642 + end + item + Command = ecColSelUp + ShortCut = 40998 + end + item + Command = ecColSelDown + ShortCut = 41000 + end + item + Command = ecColSelLeft + ShortCut = 40997 + end + item + Command = ecColSelRight + ShortCut = 40999 + end + item + Command = ecColSelPageDown + ShortCut = 40994 + end + item + Command = ecColSelPageBottom + ShortCut = 57378 + end + item + Command = ecColSelPageUp + ShortCut = 40993 + end + item + Command = ecColSelPageTop + ShortCut = 57377 + end + item + Command = ecColSelLineStart + ShortCut = 40996 + end + item + Command = ecColSelLineEnd + ShortCut = 40995 + end + item + Command = ecColSelEditorTop + ShortCut = 57380 + end + item + Command = ecColSelEditorBottom + ShortCut = 57379 + end> + MouseActions = <> + MouseTextActions = <> + MouseSelActions = <> + VisibleSpecialChars = [vscSpace, vscTabAtLast] + ReadOnly = True + SelectedColor.BackPriority = 50 + SelectedColor.ForePriority = 50 + SelectedColor.FramePriority = 50 + SelectedColor.BoldPriority = 50 + SelectedColor.ItalicPriority = 50 + SelectedColor.UnderlinePriority = 50 + SelectedColor.StrikeOutPriority = 50 + BracketHighlightStyle = sbhsBoth + BracketMatchColor.Background = clNone + BracketMatchColor.Foreground = clNone + BracketMatchColor.Style = [fsBold] + FoldedCodeColor.Background = clNone + FoldedCodeColor.Foreground = clGray + FoldedCodeColor.FrameColor = clGray + MouseLinkColor.Background = clNone + MouseLinkColor.Foreground = clBlue + LineHighlightColor.Background = clNone + LineHighlightColor.Foreground = clNone + inline SynLeftGutterPartList1: TSynGutterPartList + object SynGutterMarks1: TSynGutterMarks + Width = 24 + MouseActions = <> + end + object SynGutterLineNumber1: TSynGutterLineNumber + Width = 17 + MouseActions = <> + MarkupInfo.Background = clBtnFace + MarkupInfo.Foreground = clNone + DigitCount = 2 + ShowOnlyLineNumbersMultiplesOf = 1 + ZeroStart = False + LeadingZeros = False + end + object SynGutterChanges1: TSynGutterChanges + Width = 4 + MouseActions = <> + ModifiedColor = 59900 + SavedColor = clGreen + end + object SynGutterSeparator1: TSynGutterSeparator + Width = 2 + MouseActions = <> + MarkupInfo.Background = clWhite + MarkupInfo.Foreground = clGray + end + object SynGutterCodeFolding1: TSynGutterCodeFolding + MouseActions = <> + MarkupInfo.Background = clNone + MarkupInfo.Foreground = clGray + MouseActionsExpanded = <> + MouseActionsCollapsed = <> + end + end + end + end end object Splitter1: TSplitter Left = 288 diff -Nru lazarus-1.4.4+dfsg/examples/lazresexplorer/remainunit.pas lazarus-1.6+dfsg/examples/lazresexplorer/remainunit.pas --- lazarus-1.4.4+dfsg/examples/lazresexplorer/remainunit.pas 2015-07-22 21:20:50.000000000 +0000 +++ lazarus-1.6+dfsg/examples/lazresexplorer/remainunit.pas 2015-07-25 14:52:17.000000000 +0000 @@ -5,9 +5,9 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ComCtrls, ActnList, Menus, ExtCtrls, Grids, resource, - bitmapresource, versionresource, groupcursorresource, groupiconresource; + SysUtils, resource, LazUTF8, SynEdit, Forms, Controls, Dialogs, ComCtrls, + ActnList, Menus, ExtCtrls, Grids, bitmapresource, versionresource, + groupiconresource, Classes; type @@ -34,6 +34,8 @@ Splitter1: TSplitter; StatusBar1: TStatusBar; StringGrid1: TStringGrid; + SynEdit1: TSynEdit; + tabBinary: TTabSheet; tabString: TTabSheet; tabImage: TTabSheet; ToolBar1: TToolBar; @@ -50,13 +52,14 @@ Section: THeaderSection); procedure hlpAboutExecute(Sender: TObject); procedure Splitter1ChangeBounds(Sender: TObject); - procedure TreeView1Click(Sender: TObject); + procedure TreeView1SelectionChanged(Sender: TObject); private Res:TResources; procedure ClearDisplay; procedure LoadVersionResource(V:TVersionResource); procedure LoadBitmapResource(B:TBitmapResource); procedure LoadGroupIconResource(G:TGroupIconResource); + procedure LoadResourceAsBinary(R: TAbstractResource); public procedure OpenFile(const AFileName:string); end; @@ -69,8 +72,7 @@ {$R *.lfm} uses - winpeimagereader, elfreader, coffreader, resreader, reAboutUnit, - stringtableresource, acceleratorsresource, reConstsUnit; + winpeimagereader, elfreader, resreader, reAboutUnit, reConstsUnit; { TreMainForm } @@ -105,6 +107,8 @@ OpenDialog1.Filter := sAllFilesSharedLibSoSo; {$ENDIF} Splitter1ChangeBounds(nil); + SynEdit1.Gutter.Visible := False; + ClearDisplay; end; procedure TreMainForm.FormDestroy(Sender: TObject); @@ -132,13 +136,13 @@ HeaderControl1.Sections[1].Width:=Width - TreeView1.Width; end; -procedure TreMainForm.TreeView1Click(Sender: TObject); +procedure TreMainForm.TreeView1SelectionChanged(Sender: TObject); var ResItem:TAbstractResource; begin + if Assigned(TreeView1.Selected) then ClearDisplay; if Assigned(TreeView1.Selected) and Assigned(TreeView1.Selected.Data) then begin - ClearDisplay; ResItem:=TAbstractResource(TreeView1.Selected.Data); HeaderControl1.Sections[1].Text:=ResItem.ClassName + ' : ' + ResItem.Name.Name; if ResItem is TVersionResource then @@ -150,14 +154,17 @@ if ResItem is TGroupIconResource then LoadGroupIconResource(ResItem as TGroupIconResource) else - ; + LoadResourceAsBinary(ResItem); end; end; + procedure TreMainForm.ClearDisplay; begin StringGrid1.Clean; + StringGrid1.Visible := False; Image1.Picture.Clear; + SynEdit1.Lines.Clear; end; procedure TreMainForm.LoadVersionResource(V: TVersionResource); @@ -165,6 +172,7 @@ i,j, k:integer; begin PageControl1.ActivePage:=tabString; + StringGrid1.Visible := True; k:=0; StringGrid1.RowCount:=0; StringGrid1.ColCount:=2; @@ -190,7 +198,59 @@ procedure TreMainForm.LoadGroupIconResource(G: TGroupIconResource); begin + //ToDo: implement proper method to display + LoadResourceAsBinary(G); +end; +procedure TreMainForm.LoadResourceAsBinary(R: TAbstractResource); +var + Offset, Size, BytesRead: Int64; + Buf: Array[0..15] of Byte; + Line, BinLine, AscLine: ShortString; + i: Integer; +begin + PageControl1.ActivePage:=tabBinary; + //writeln('TreMainForm.LoadResourceAsBinary'); + //writeln(' ClassName = ',R.ClassName); + //writeln(' DataSize = ',R.DataSize); + //writeln(' R.RawData.Size = ',R.RawData.Size); + //writeln(' DataOffset = ',R.DataOffset); + //writeln(' DataVersion = ',R.DataVersion); + SynEdit1.Lines.BeginUpdate; + try + Offset := 0; + R.RawData.Position := 0; + Size := R.RawData.Size; + while (Offset < Size) do + begin + FillChar(Buf{%H-}, SizeOf(Buf), #0); + BytesRead := R.RawData.Read(Buf[0], SizeOf(Buf)); + //writeln(' BytesRead = ',BytesRead); + Line := ''; + BinLine := ''; + Ascline := ''; + for i := 0 to BytesRead - 1 do + begin + BinLine := BinLine + IntToHex(Buf[i],2) + #32; + if (Buf[i] in [32..127]) then + AscLine := AscLine + Char(Buf[i]) + else + AscLine := AscLine + #32; + end; + for i := (BytesRead + 1) to SizeOf(Buf) do + begin + BinLine := BinLine + ' '; + AscLine := AscLine + ' '; + end; + Line := IntToHex(Offset, 8) + #32; + Line := Line + BinLine + #32 + AscLine + LineEnding; + //writeln(' Line = ',Line); + SynEdit1.Lines.Add(Line); + Inc(Offset, SizeOf(Buf)); + end; + finally + SynEdit1.Lines.EndUpdate; + end; end; procedure TreMainForm.OpenFile(const AFileName: string); diff -Nru lazarus-1.4.4+dfsg/examples/lazresexplorer/resexplorer.lpi lazarus-1.6+dfsg/examples/lazresexplorer/resexplorer.lpi --- lazarus-1.4.4+dfsg/examples/lazresexplorer/resexplorer.lpi 2014-11-09 21:44:55.000000000 +0000 +++ lazarus-1.6+dfsg/examples/lazresexplorer/resexplorer.lpi 2015-07-25 14:52:17.000000000 +0000 @@ -22,8 +22,40 @@ <CharSet Value="04B0"/> <StringTable Comments="Explore your resources in executables and resource files" CompanyName="Alexey Lagunov" FileDescription="Resource Explorer" InternalName="LazResExplorer" LegalCopyright="Alexey Lagunov" LegalTrademarks="No Trademarks" OriginalFilename="lazresexplorer" ProductName="Lazarus Resource Explorer" ProductVersion=""/> </VersionInfo> - <BuildModes Count="1"> - <Item1 Name="default" Default="True"/> + <BuildModes Count="2"> + <Item1 Name="Release" Default="True"/> + <Item2 Name="Debug"> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="resexplorer"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Parsing> + <SyntaxOptions> + <IncludeAssertionCode Value="True"/> + </SyntaxOptions> + </Parsing> + <CodeGeneration> + <Checks> + <IOChecks Value="True"/> + <RangeChecks Value="True"/> + <OverflowChecks Value="True"/> + <StackChecks Value="True"/> + </Checks> + </CodeGeneration> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf2Set"/> + <UseHeaptrc Value="True"/> + <UseExternalDbgSyms Value="True"/> + </Debugging> + </Linking> + </CompilerOptions> + </Item2> </BuildModes> <PublishOptions> <Version Value="2"/> @@ -38,10 +70,13 @@ <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> </local> </RunParams> - <RequiredPackages Count="1"> + <RequiredPackages Count="2"> <Item1> - <PackageName Value="LCL"/> + <PackageName Value="SynEdit"/> </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> </RequiredPackages> <Units Count="4"> <Unit0> diff -Nru lazarus-1.4.4+dfsg/examples/levelgraph/lvlgraph_dep_unit1.pas lazarus-1.6+dfsg/examples/levelgraph/lvlgraph_dep_unit1.pas --- lazarus-1.4.4+dfsg/examples/levelgraph/lvlgraph_dep_unit1.pas 2013-04-08 10:13:26.000000000 +0000 +++ lazarus-1.6+dfsg/examples/levelgraph/lvlgraph_dep_unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, - Dialogs, ExtCtrls, LvlGraphCtrl, PropEdits, ObjectInspector; + RTTIGrids, Forms, ExtCtrls, LvlGraphCtrl, PropEdits; type diff -Nru lazarus-1.4.4+dfsg/examples/listboxtest.pp lazarus-1.6+dfsg/examples/listboxtest.pp --- lazarus-1.4.4+dfsg/examples/listboxtest.pp 2012-08-03 23:03:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/listboxtest.pp 2015-07-04 23:08:27.000000000 +0000 @@ -23,7 +23,7 @@ {$mode objfpc}{$H+} uses - Interfaces, Buttons, Classes, Forms, StdCtrls, SysUtils, Controls, LazLogger; + Interfaces, Classes, Forms, StdCtrls, SysUtils, Controls, LazLogger; type TListBoxTestForm = class(TForm) @@ -139,6 +139,7 @@ var X: PtrInt; begin + if ListBox.ItemIndex < 0 then Exit; X := PtrInt(ListBox.Items.Objects[ListBox.ItemIndex]); DebugLn(['TListBoxTestForm.Button4Click ',X]); end; diff -Nru lazarus-1.4.4+dfsg/examples/motiongraphics/mainform.pas lazarus-1.6+dfsg/examples/motiongraphics/mainform.pas --- lazarus-1.4.4+dfsg/examples/motiongraphics/mainform.pas 2011-12-21 10:57:34.000000000 +0000 +++ lazarus-1.6+dfsg/examples/motiongraphics/mainform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - StdCtrls, ComCtrls; + Classes, Forms, ExtCtrls, StdCtrls, ComCtrls; type @@ -20,9 +19,8 @@ procedure timerRedrawTimer(Sender: TObject); procedure trackSpeedChange(Sender: TObject); private - { private declarations } + public - { public declarations } CurStep: Double; procedure RotatePolygon(var APoints: array of TPoint; AAngle: Double); function RotatePoint(APoint, ACenter: TPoint; AAngle: Double): TPoint; diff -Nru lazarus-1.4.4+dfsg/examples/mssql/dbform.pas lazarus-1.6+dfsg/examples/mssql/dbform.pas --- lazarus-1.4.4+dfsg/examples/mssql/dbform.pas 2012-08-04 10:15:31.000000000 +0000 +++ lazarus-1.6+dfsg/examples/mssql/dbform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,10 +5,9 @@ interface uses - Classes, SysUtils, - mssqlconn, // mssqlconn was added to 2.6.1, you need a recent 2.6.1 - db, sqldb, FileUtil, Forms, Controls, Graphics, - Dialogs, DBGrids, dbloginform; + SysUtils, db, sqldb, Forms, Controls, Dialogs, DBGrids, dbloginform, + mssqlconn; // mssqlconn was added to 2.6.1, you need a recent 2.6.1 + type @@ -23,9 +22,9 @@ SybaseConnection1: TSybaseConnection; procedure FormCreate(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/mssql/dbloginform.pas lazarus-1.6+dfsg/examples/mssql/dbloginform.pas --- lazarus-1.4.4+dfsg/examples/mssql/dbloginform.pas 2012-04-01 07:26:10.000000000 +0000 +++ lazarus-1.6+dfsg/examples/mssql/dbloginform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; + Forms, StdCtrls; type @@ -31,9 +31,9 @@ procedure LocalMachineClick(Sender: TObject); procedure OSAuthenticationChange(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/multithreading/processmessagesunit1.pas lazarus-1.6+dfsg/examples/multithreading/processmessagesunit1.pas --- lazarus-1.4.4+dfsg/examples/multithreading/processmessagesunit1.pas 2012-11-22 19:41:50.000000000 +0000 +++ lazarus-1.6+dfsg/examples/multithreading/processmessagesunit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -28,8 +28,7 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Buttons, - ComCtrls, FileUtil, StdCtrls; + Classes, SysUtils, Forms, Dialogs, ComCtrls, StdCtrls, LazUTF8; type diff -Nru lazarus-1.4.4+dfsg/examples/objectinspector/mainunit.lfm lazarus-1.6+dfsg/examples/objectinspector/mainunit.lfm --- lazarus-1.4.4+dfsg/examples/objectinspector/mainunit.lfm 2013-07-10 09:38:26.000000000 +0000 +++ lazarus-1.6+dfsg/examples/objectinspector/mainunit.lfm 2015-10-27 22:41:21.000000000 +0000 @@ -10,7 +10,7 @@ ClientWidth = 473 OnCreate = Form1CREATE OnDestroy = Form1DESTROY - LCLVersion = '1.1' + LCLVersion = '1.5' object OIGroupbox: TGroupBox Left = 8 Height = 121 diff -Nru lazarus-1.4.4+dfsg/examples/objectinspector/mainunit.pas lazarus-1.6+dfsg/examples/objectinspector/mainunit.pas --- lazarus-1.4.4+dfsg/examples/objectinspector/mainunit.pas 2013-07-10 09:38:26.000000000 +0000 +++ lazarus-1.6+dfsg/examples/objectinspector/mainunit.pas 2015-10-27 22:41:21.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, TypInfo, LResources, Forms, Controls, Graphics, Dialogs, - ObjectInspector, PropEdits, StdCtrls, Buttons; + Classes, TypInfo, Forms, Controls, StdCtrls, + ObjectInspector, PropEdits, PropEditUtils, GraphPropEdits; type { TMyComponent } @@ -20,6 +20,8 @@ property AnInteger: integer read FAnInteger write SetAnInteger; end; + { TForm1 } + TForm1 = class(TForm) PropGridGroupbox: TGroupBox; SetCompAsOIRootButton: TButton; @@ -32,6 +34,8 @@ procedure SetCompAsOIRootButtonClick(Sender: TObject); private procedure SetObjectInspectorRoot(AComponent: TComponent); + protected + function GetOwner: TPersistent; override; public TheObjectInspector: TObjectInspectorDlg; ThePropertyEditorHook: TPropertyEditorHook; @@ -48,8 +52,8 @@ procedure TForm1.Form1Create(Sender: TObject); begin // create the PropertyEditorHook (the interface to the properties) - ThePropertyEditorHook:=TPropertyEditorHook.Create; - + ThePropertyEditorHook:=TPropertyEditorHook.Create(nil); + // create the ObjectInspector TheObjectInspector:=TObjectInspectorDlg.Create(Application); TheObjectInspector.PropertyEditorHook:=ThePropertyEditorHook; @@ -105,6 +109,13 @@ Selection.Free; end; +function TForm1.GetOwner: TPersistent; +begin + // this form is the LookupRoot => GetOwner must be nil + // see GetLookupRootForComponent + Result:=nil; +end; + { TMyComponent } procedure TMyComponent.SetAnInteger(const AValue: integer); diff -Nru lazarus-1.4.4+dfsg/examples/objectinspector/oiexample.lpi lazarus-1.6+dfsg/examples/objectinspector/oiexample.lpi --- lazarus-1.4.4+dfsg/examples/objectinspector/oiexample.lpi 2015-03-02 18:58:42.000000000 +0000 +++ lazarus-1.6+dfsg/examples/objectinspector/oiexample.lpi 2015-10-06 10:11:38.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -50,11 +50,5 @@ <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/examples/openbrowser/mainunit.pas lazarus-1.6+dfsg/examples/openbrowser/mainunit.pas --- lazarus-1.4.4+dfsg/examples/openbrowser/mainunit.pas 2013-11-07 12:51:26.000000000 +0000 +++ lazarus-1.6+dfsg/examples/openbrowser/mainunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, - FileUtil, UTF8Process, StdCtrls, Process, ExtCtrls; + SysUtils, LCLProc, Forms, Dialogs, + FileUtil, LazFileUtils, LazUTF8, UTF8Process, StdCtrls, Process, ExtCtrls; type { TForm1 } @@ -45,7 +45,7 @@ procedure TForm1.OpenLazarusButtonClick(Sender: TObject); begin - OpenURL('http://www.lazarus.freepascal.org/'); + OpenURL('http://www.lazarus-ide.org/'); end; procedure TForm1.OpenURL(const URL: string); diff -Nru lazarus-1.4.4+dfsg/examples/openglcontrol/exampleform.pp lazarus-1.6+dfsg/examples/openglcontrol/exampleform.pp --- lazarus-1.4.4+dfsg/examples/openglcontrol/exampleform.pp 2014-11-21 23:13:57.000000000 +0000 +++ lazarus-1.6+dfsg/examples/openglcontrol/exampleform.pp 2015-07-04 23:08:00.000000000 +0000 @@ -28,7 +28,7 @@ interface uses - Classes, SysUtils, FileUtil, LCLProc, Forms, LResources, Buttons, + Classes, SysUtils, LazFileUtils, LazUTF8, LCLProc, Forms, LResources, Buttons, StdCtrls, Dialogs, Graphics, IntfGraphics, GL, FPimage, OpenGLContext; const diff -Nru lazarus-1.4.4+dfsg/examples/openurltest/mainform.pas lazarus-1.6+dfsg/examples/openurltest/mainform.pas --- lazarus-1.4.4+dfsg/examples/openurltest/mainform.pas 2012-04-13 12:45:54.000000000 +0000 +++ lazarus-1.6+dfsg/examples/openurltest/mainform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - EditBtn, LCLIntf, LCLProc; + SysUtils, Forms, StdCtrls, EditBtn, LCLIntf; type @@ -26,9 +25,9 @@ procedure btnOpenURLHTTPClick(Sender: TObject); procedure btnOpenURLFILEClick(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/pen_brush/unit1.pas lazarus-1.6+dfsg/examples/pen_brush/unit1.pas --- lazarus-1.4.4+dfsg/examples/pen_brush/unit1.pas 2011-06-30 09:09:31.000000000 +0000 +++ lazarus-1.6+dfsg/examples/pen_brush/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls, Buttons, ColorBox, LCLIntf, FPCanvas; + Classes, SysUtils, Forms, Graphics, StdCtrls, ExtCtrls, Buttons, ColorBox, + LCLIntf, FPCanvas; type @@ -47,7 +47,7 @@ private FPattern: TBitmap; public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/postscript/samplepostscriptcanvas.lpi lazarus-1.6+dfsg/examples/postscript/samplepostscriptcanvas.lpi --- lazarus-1.4.4+dfsg/examples/postscript/samplepostscriptcanvas.lpi 2015-03-02 18:58:42.000000000 +0000 +++ lazarus-1.6+dfsg/examples/postscript/samplepostscriptcanvas.lpi 2015-07-04 23:08:27.000000000 +0000 @@ -49,9 +49,6 @@ </ProjectOptions> <CompilerOptions> <Version Value="11"/> - <SearchPaths> - - </SearchPaths> <Parsing> <SyntaxOptions> <UseAnsiStrings Value="False"/> diff -Nru lazarus-1.4.4+dfsg/examples/postscript/usamplepostscriptcanvas.pas lazarus-1.6+dfsg/examples/postscript/usamplepostscriptcanvas.pas --- lazarus-1.4.4+dfsg/examples/postscript/usamplepostscriptcanvas.pas 2014-12-05 01:09:46.000000000 +0000 +++ lazarus-1.6+dfsg/examples/postscript/usamplepostscriptcanvas.pas 2015-07-04 23:08:27.000000000 +0000 @@ -11,8 +11,8 @@ {$IFDEF UNIX} Unix, {$ENDIF} - Classes, SysUtils, types, FileUtil, LResources, Forms, Controls, Graphics, - Dialogs, Buttons, Printers, PostScriptCanvas, StdCtrls, ExtCtrls; + Classes, SysUtils, types, LazFileUtils, Forms, Graphics, + Printers, PostScriptCanvas, StdCtrls, ExtCtrls; type diff -Nru lazarus-1.4.4+dfsg/examples/propstorage/unit1.pas lazarus-1.6+dfsg/examples/propstorage/unit1.pas --- lazarus-1.4.4+dfsg/examples/propstorage/unit1.pas 2014-02-26 09:06:24.000000000 +0000 +++ lazarus-1.6+dfsg/examples/propstorage/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - XMLPropStorage, IniPropStorage; + Forms, StdCtrls, XMLPropStorage, IniPropStorage; type @@ -17,9 +16,9 @@ Memo1: TMemo; XMLPropStorage1: TXMLPropStorage; private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/project1.lpi lazarus-1.6+dfsg/examples/ReSizeImageDemo/project1.lpi --- lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/project1.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/ReSizeImageDemo/project1.lpi 2015-02-08 18:20:29.000000000 +0000 @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <SessionStorage Value="InProjectDir"/> + <MainUnit Value="0"/> + <Title Value="project1"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <DestinationDirectory Value="/home/mike/Documents/projects/ReSizeImageDemo/Published"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="project1.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="unit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="Unit1"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="project1"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <CodeGeneration> + <SmartLinkUnit Value="True"/> + </CodeGeneration> + <Linking> + <Debugging> + <GenerateDebugInfo Value="False"/> + </Debugging> + <LinkSmart Value="True"/> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/project1.lpr lazarus-1.6+dfsg/examples/ReSizeImageDemo/project1.lpr --- lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/project1.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/ReSizeImageDemo/project1.lpr 2015-02-08 18:20:29.000000000 +0000 @@ -0,0 +1,21 @@ +program project1; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, Unit1 + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource := True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff -Nru lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/unit1.lfm lazarus-1.6+dfsg/examples/ReSizeImageDemo/unit1.lfm --- lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/unit1.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/ReSizeImageDemo/unit1.lfm 2015-02-08 18:20:29.000000000 +0000 @@ -0,0 +1,103 @@ +object Form1: TForm1 + Left = 236 + Height = 413 + Hint = 'Click Checkboxes to select the redraw'#10'events, then resize the form.' + Top = 162 + Width = 572 + Caption = 'Image Resize Demo' + ClientHeight = 413 + ClientWidth = 572 + OnClose = FormClose + OnCreate = FormCreate + OnResize = FormResize + ShowHint = True + LCLVersion = '1.5' + object Pnl1: TPanel + Left = 0 + Height = 63 + Top = 350 + Width = 572 + Align = alBottom + ClientHeight = 63 + ClientWidth = 572 + TabOrder = 0 + object CheckBoxImage: TCheckBox + Left = 168 + Height = 22 + Top = 0 + Width = 167 + Caption = 'Redraw on Image resize' + TabOrder = 0 + end + object CheckBoxPanel: TCheckBox + Left = 168 + Height = 22 + Top = 16 + Width = 160 + Caption = 'Redraw on Panel resize' + TabOrder = 1 + end + object CheckBoxForm: TCheckBox + Left = 168 + Height = 22 + Top = 32 + Width = 160 + Caption = 'Redraw on Form resize' + TabOrder = 2 + end + object Button1: TButton + Left = 32 + Height = 25 + Hint = 'Clear Memo text' + Top = 16 + Width = 96 + Caption = 'Clear Memo' + OnClick = Button1Click + TabOrder = 3 + end + end + object Pnl2: TPanel + Left = 0 + Height = 350 + Top = 0 + Width = 160 + Align = alLeft + Caption = 'Pnl2' + ClientHeight = 350 + ClientWidth = 160 + TabOrder = 1 + object Memo1: TMemo + Left = 1 + Height = 348 + Hint = 'Displays event order. '#10'Clears every 200 lines.' + Top = 1 + Width = 158 + Align = alClient + Lines.Strings = ( + 'Memo1' + ) + ScrollBars = ssAutoBoth + TabOrder = 0 + end + end + object PnlImage: TPanel + Left = 160 + Height = 350 + Top = 0 + Width = 412 + Align = alClient + Caption = 'PnlImage' + ClientHeight = 350 + ClientWidth = 412 + TabOrder = 2 + OnResize = PnlImageResize + object Image1: TImage + Left = 1 + Height = 348 + Top = 1 + Width = 410 + Align = alClient + OnResize = Image1Resize + end + end +end diff -Nru lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/unit1.pas lazarus-1.6+dfsg/examples/ReSizeImageDemo/unit1.pas --- lazarus-1.4.4+dfsg/examples/ReSizeImageDemo/unit1.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/ReSizeImageDemo/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -0,0 +1,151 @@ +unit Unit1; + +{$mode objfpc}{$H+} + +{Author: Mike Sapsard, 2015. + License: GPL3. + + LCL demo of redraw event order for images, panels and forms. it should work + for all widget sets eg Windows, qt, OSX, GTK etc. + + Repaint or Invalidate are not needed for resizing events.} + +interface + +uses + {$ifdef Windows} Windows, {$Endif}SysUtils, Forms, Graphics, ExtCtrls, StdCtrls; + +type + + { TForm1 } + + TForm1 = class(TForm) + Button1: TButton; + CheckBoxImage: TCheckBox; + CheckBoxPanel: TCheckBox; + CheckBoxForm: TCheckBox; + Image1: TImage; + Memo1: TMemo; + Pnl1: TPanel; + Pnl2: TPanel; + PnlImage: TPanel; + procedure Button1Click(Sender: TObject); + procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormCreate(Sender: TObject); + procedure FormResize(Sender: TObject); + procedure Image1Resize(Sender: TObject); + procedure PnlImageResize(Sender: TObject); + private + + public + + end; + +var + Form1: TForm1; + Bitmap: TBitmap; + +implementation + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.FormCreate(Sender: TObject); +begin + Form1.DoubleBuffered := True; //Stop flickering on some widget sets + Bitmap := TBitmap.Create; + with Bitmap do + begin + // Use ClientWidth and ClientHeight so that code works across widget sets + // eg Windows, qt, OSX, GTK etc + // Height and Width do not allow for widget set and theme borders + Width := PnlImage.ClientWidth; + Height := PnlImage.ClientHeight; + Canvas.brush.color := clBlue; + Canvas.Rectangle(0, 0, Image1.ClientWidth, Image1.ClientHeight); + Canvas.Font.Size := 20; + Canvas.TextOut(15, 170, 'This is the Image'); + end; + Image1.Picture.Graphic := Bitmap; //Assign the bitmap to Image1 + Memo1.Clear; +end; + +procedure TForm1.FormResize(Sender: TObject); +begin + if CheckBoxForm.Checked then + begin + with Image1.Picture.Bitmap do + begin + // Bitmap has a height and width, but these do not change from default, + // because a copy is used by Image1.Picture.Bitmap + Image1.Picture.Bitmap.SetSize(Image1.ClientWidth, Image1.ClientHeight); + // If panel is green, this event was last + Canvas.Brush.Color := clGreen; + Canvas.Rectangle(0, 0, Image1.ClientWidth, Image1.ClientHeight); + Canvas.Font.Color := clYellow; + Canvas.Font.Size := 15; + Canvas.TextOut(10, 90, 'Form resized'); + end; + Memo1.Lines.Add(IntToStr(Memo1.Lines.Count) + ' Form resized'); + end; + if (Memo1.Lines.Count > 200) then + Memo1.Lines.Clear; +end; + +procedure TForm1.Image1Resize(Sender: TObject); +begin + if CheckBoxImage.Checked then + begin + // Bitmap has a height and width, but these do not change from default, + // because a copy is used by Image1.Picture.Bitmap + Image1.Picture.Bitmap.SetSize(Image1.ClientWidth, Image1.ClientHeight); + with Image1.Picture.Bitmap do + begin + // If panel is white, this event was last + Canvas.Brush.Color := clWhite; + Canvas.Rectangle(0, 0, Image1.ClientWidth, Image1.ClientHeight); + Canvas.Font.Color := clGreen; + Canvas.Font.Size := 15; + Canvas.TextOut(10, 10, 'Image resized'); + end; + Memo1.Lines.Add(IntToStr(Memo1.Lines.Count) + ' Image resize'); + end; + if (Memo1.Lines.Count > 200) then + Memo1.Lines.Clear; +end; + +procedure TForm1.PnlImageResize(Sender: TObject); +begin + if CheckBoxPanel.Checked then + begin + // Bitmap has a height and width, but these do not change from default, + // because a copy is used by Image1.Picture.Bitmap + Image1.Picture.Bitmap.SetSize(Image1.ClientWidth, Image1.ClientHeight); + with Image1.Picture.Bitmap do + begin + // If panel is red, this event was last + Canvas.Brush.Color := clRed; + Canvas.Rectangle(0, 0, Image1.ClientWidth, Image1.ClientHeight); + Canvas.Font.Color := clBlack; + Canvas.Font.Size := 15; + Canvas.TextOut(10, 50, 'Panel resized'); + end; + Memo1.Lines.Add(IntToStr(Memo1.Lines.Count) + ' Panel resize'); + end; + if (Memo1.Lines.Count > 200) then + Memo1.Lines.Clear; +end; + +procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction); +begin + CloseAction := caFree; + Bitmap.Free; +end; + +procedure TForm1.Button1Click(Sender: TObject); +begin + Memo1.Clear; +end; + +end. diff -Nru lazarus-1.4.4+dfsg/examples/stock_images/unit1.pas lazarus-1.6+dfsg/examples/stock_images/unit1.pas --- lazarus-1.4.4+dfsg/examples/stock_images/unit1.pas 2013-09-29 07:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/stock_images/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ComCtrls, ExtCtrls, LCLType, Themes, StdCtrls, Buttons; + Forms, Graphics, Dialogs, ComCtrls, ExtCtrls, LCLType, StdCtrls, Buttons; type @@ -30,7 +29,7 @@ procedure UpdateDialogImage; procedure UpdateButtonImage; public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/SynEdit/Completion/unit1.pas lazarus-1.6+dfsg/examples/SynEdit/Completion/unit1.pas --- lazarus-1.4.4+dfsg/examples/SynEdit/Completion/unit1.pas 2013-07-20 08:02:59.000000000 +0000 +++ lazarus-1.6+dfsg/examples/SynEdit/Completion/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, SynEdit, - SynCompletion; + SysUtils, Forms, StdCtrls, ExtCtrls, SynEdit, SynCompletion; type @@ -36,9 +35,9 @@ procedure DoExecute(Sender: TObject); procedure DoSearchPosition(var APosition: integer); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/SynEdit/NewHighlighterTutorial/contexthl.pas lazarus-1.6+dfsg/examples/SynEdit/NewHighlighterTutorial/contexthl.pas --- lazarus-1.4.4+dfsg/examples/SynEdit/NewHighlighterTutorial/contexthl.pas 2012-02-03 19:33:35.000000000 +0000 +++ lazarus-1.6+dfsg/examples/SynEdit/NewHighlighterTutorial/contexthl.pas 2015-07-04 23:08:27.000000000 +0000 @@ -19,7 +19,7 @@ interface uses - Classes, SysUtils, Graphics, SynEditTypes, SynEditHighlighter, SimpleHl; + SynEditHighlighter, SimpleHl; type diff -Nru lazarus-1.4.4+dfsg/examples/SynEdit/NewHighlighterTutorial/unit1.pas lazarus-1.6+dfsg/examples/SynEdit/NewHighlighterTutorial/unit1.pas --- lazarus-1.4.4+dfsg/examples/SynEdit/NewHighlighterTutorial/unit1.pas 2012-08-14 12:53:12.000000000 +0000 +++ lazarus-1.6+dfsg/examples/SynEdit/NewHighlighterTutorial/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -17,8 +17,7 @@ interface uses - Classes, SysUtils, FileUtil, SynEdit, Forms, Controls, Graphics, Dialogs, StdCtrls, - SimpleHl, ContextHL, FoldHl; + SynEdit, Forms, StdCtrls, SimpleHl, ContextHL, FoldHl; type @@ -34,12 +33,11 @@ procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private - { private declarations } FSynDemoHl: TSynDemoHl; FSynDemoHlContext: TSynDemoHlContext; FSynDemoHlFold: TSynDemoHlFold; public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/SynEdit/SynGutterMarks/unit1.pas lazarus-1.6+dfsg/examples/SynEdit/SynGutterMarks/unit1.pas --- lazarus-1.4.4+dfsg/examples/SynEdit/SynGutterMarks/unit1.pas 2012-08-04 10:28:59.000000000 +0000 +++ lazarus-1.6+dfsg/examples/SynEdit/SynGutterMarks/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Spin, + Forms, Controls, ExtCtrls, StdCtrls, Spin, SynEdit, SynEditTypes, SynEditMarks; type @@ -38,9 +38,9 @@ procedure spinMarkGutterWidthChange(Sender: TObject); procedure SynEdit1StatusChange(Sender: TObject; Changes: TSynStatusChanges); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/examples/SynEdit/SynPositionHighlighter/unit1.pas lazarus-1.6+dfsg/examples/SynEdit/SynPositionHighlighter/unit1.pas --- lazarus-1.4.4+dfsg/examples/SynEdit/SynPositionHighlighter/unit1.pas 2013-09-29 07:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/examples/SynEdit/SynPositionHighlighter/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, SynEdit, - FileUtil, StdCtrls, Menus, SynHighlighterPosition, SynEditHighlighter; + Forms, Graphics, Dialogs, SynEdit, Menus, LazUTF8, + SynHighlighterPosition, SynEditHighlighter; type diff -Nru lazarus-1.4.4+dfsg/examples/synedit1.pas lazarus-1.6+dfsg/examples/synedit1.pas --- lazarus-1.4.4+dfsg/examples/synedit1.pas 2011-08-10 19:57:50.000000000 +0000 +++ lazarus-1.6+dfsg/examples/synedit1.pas 2015-07-04 23:08:00.000000000 +0000 @@ -23,8 +23,7 @@ {$mode objfpc}{$H+} uses - Interfaces, Classes, SysUtils, FileUtil, Forms, Controls, GraphType, - Graphics, SynEdit, SynHighlighterPas; + Classes, LazUTF8, Forms, Graphics, SynEdit, SynHighlighterPas; type TForm1 = class(TForm) diff -Nru lazarus-1.4.4+dfsg/examples/testallform.pp lazarus-1.6+dfsg/examples/testallform.pp --- lazarus-1.4.4+dfsg/examples/testallform.pp 2013-09-28 15:25:27.000000000 +0000 +++ lazarus-1.6+dfsg/examples/testallform.pp 2015-07-04 23:08:27.000000000 +0000 @@ -40,7 +40,7 @@ {$ASSERTIONS ON} -uses Classes, SysUtils, FileUtil, Forms, Buttons, StdCtrls, Controls, Menus, +uses Classes, SysUtils, LazUTF8, Forms, Buttons, StdCtrls, Controls, Menus, ExtCtrls, ComCtrls, GraphType, Graphics, Dialogs, Inifiles, Spin, ClipBrd, LCLIntf, LResources; diff -Nru lazarus-1.4.4+dfsg/examples/translation/languages/translation_demo.fr.po lazarus-1.6+dfsg/examples/translation/languages/translation_demo.fr.po --- lazarus-1.4.4+dfsg/examples/translation/languages/translation_demo.fr.po 2013-12-20 20:41:54.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/languages/translation_demo.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -1,75 +1,76 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: Translation_Demo\n" +"Project-Id-Version: lazaruside\n" +"Report-Msgid-Bugs-To: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" +"PO-Revision-Date: 2015-12-18 09:27+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language: fr_FR\n" "MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.6.3\n" -"Language: fr\n" +"X-Generator: Poedit 1.8.6\n" #: stringsunit.rsbeer msgctxt "stringsunit.rsbeer" msgid "Beer" -msgstr "bière" +msgstr "Bière" #: stringsunit.rseight msgid "Eight" -msgstr "huit" +msgstr "Huit" #: stringsunit.rsfive msgid "Five" -msgstr "cinq" +msgstr "Cinq" #: stringsunit.rsfour msgid "Four" -msgstr "quatre" +msgstr "Quatre" #: stringsunit.rsnine msgid "Nine" -msgstr "neuf" +msgstr "Neuf" #: stringsunit.rsone msgid "One" -msgstr "un" +msgstr "Un" #: stringsunit.rsseven msgid "Seven" -msgstr "sept" +msgstr "Sept" #: stringsunit.rssix msgid "Six" -msgstr "six" +msgstr "Six" #: stringsunit.rssumofselectednumbers msgid "Sum of selected numbers: %s" -msgstr "Somme des nombres choisis: %s" +msgstr "Somme des nombres choisis : %s" #: stringsunit.rsthree msgid "Three" -msgstr "trois" +msgstr "Trois" #: stringsunit.rstodayis msgctxt "stringsunit.rstodayis" msgid "Today is %s" -msgstr "Aujourd'hui est %s." +msgstr "Aujourd'hui, nous sommes le %s." #: stringsunit.rstwo msgid "Two" -msgstr "deux" +msgstr "Deux" #: stringsunit.rswater msgctxt "stringsunit.rswater" msgid "Water" -msgstr "eau" +msgstr "Eau" #: stringsunit.rswine msgctxt "stringsunit.rswine" msgid "Wine" -msgstr "vin" +msgstr "Vin" #: stringsunit.rsyouselected msgctxt "stringsunit.rsyouselected" @@ -79,56 +80,56 @@ #: stringsunit.rsyouselectedat msgctxt "stringsunit.rsyouselectedat" msgid "You selected %0:s at %1:s." -msgstr "A %1:s, vous avez choisi %0:s." +msgstr "À %1:s, vous avez choisi %0:s." #: tform2.caption msgid "Second Form" -msgstr "Deuxième forme" +msgstr "Deuxième fiche" #: tform2.checkgroup.caption msgctxt "tform2.checkgroup.caption" msgid "Several items" -msgstr "Plusieurs articles" +msgstr "Plusieurs éléments" #: tform2.groupbox1.caption msgid "Please select" -msgstr "S'il vous plaît sélectionnez" +msgstr "Veuillez choisir" #: tform2.lblmoney.caption msgid "LblMoney" -msgstr "" +msgstr "LblArgent" #: tform2.lblsum.caption msgid "LblSum" -msgstr "" +msgstr "LblSomme" #: tform2.lbltodayis.caption msgid "LblTodayIs" -msgstr "" +msgstr "LblAujourdHui" #: tform2.radiogroup.caption msgctxt "tform2.radiogroup.caption" msgid "Single item" -msgstr "Un seul article" +msgstr "Un seul élément" #: tlocalizedform.caption msgid "LocalizedForm" -msgstr "" +msgstr "FicheTraduite" #: tmainform.button1.caption msgctxt "tmainform.button1.caption" msgid "Open second form" -msgstr "Ouverte deuxième forme " +msgstr "Ouvrir la deuxième fiche" #: tmainform.button2.caption msgctxt "tmainform.button2.caption" msgid "What did you select?" -msgstr "Qu'avez-vous choisi?" +msgstr "Qu'avez-vous choisi ?" #: tmainform.caption msgctxt "tmainform.caption" msgid "Translation demo" -msgstr "Démo de traduction" +msgstr "Démonstration de traduction" #: tmainform.label1.caption msgctxt "tmainform.label1.caption" @@ -138,10 +139,10 @@ #: tmainform.lblcurrentselection.caption msgctxt "tmainform.lblcurrentselection.caption" msgid "No drink selected." -msgstr "Aucune boisson est sélectionné." +msgstr "Aucune boisson n'est sélectionnée." #: tmainform.rgdrinks.caption msgctxt "tmainform.rgdrinks.caption" msgid "Please select a drink" -msgstr "S'il vous plaît sélectionner un verre" +msgstr "Veuillez choisir une boisson" diff -Nru lazarus-1.4.4+dfsg/examples/translation/languages/translation_demo.hu.po lazarus-1.6+dfsg/examples/translation/languages/translation_demo.hu.po --- lazarus-1.4.4+dfsg/examples/translation/languages/translation_demo.hu.po 2015-04-20 21:59:25.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/languages/translation_demo.hu.po 2015-12-19 00:06:27.000000000 +0000 @@ -144,3 +144,4 @@ msgctxt "TMAINFORM.RGDRINKS.CAPTION" msgid "Please select a drink" msgstr "Válasszon italt!" + diff -Nru lazarus-1.4.4+dfsg/examples/translation/languages/translation_demo.it.po lazarus-1.6+dfsg/examples/translation/languages/translation_demo.it.po --- lazarus-1.4.4+dfsg/examples/translation/languages/translation_demo.it.po 2014-10-25 11:38:58.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/languages/translation_demo.it.po 2015-12-19 00:06:27.000000000 +0000 @@ -143,3 +143,4 @@ msgctxt "TMAINFORM.RGDRINKS.CAPTION" msgid "Please select a drink" msgstr "Prego, selezionare una bevanda" + diff -Nru lazarus-1.4.4+dfsg/examples/translation/localizedforms.lfm lazarus-1.6+dfsg/examples/translation/localizedforms.lfm --- lazarus-1.4.4+dfsg/examples/translation/localizedforms.lfm 2013-12-20 20:41:54.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/localizedforms.lfm 2015-10-03 12:10:56.000000000 +0000 @@ -4,5 +4,5 @@ Top = 238 Width = 320 Caption = 'LocalizedForm' - LCLVersion = '1.3' + LCLVersion = '1.5' end diff -Nru lazarus-1.4.4+dfsg/examples/translation/localizedforms.pas lazarus-1.6+dfsg/examples/translation/localizedforms.pas --- lazarus-1.4.4+dfsg/examples/translation/localizedforms.pas 2014-01-15 22:29:24.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/localizedforms.pas 2015-10-03 12:10:56.000000000 +0000 @@ -16,7 +16,10 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs; +{$IFDEF MSWINDOWS} + Windows, +{$ENDIF} + Classes, SysUtils, Forms; type TLocalizedForm = class(TForm) @@ -48,13 +51,6 @@ {$R *.lfm} -uses -{$IFDEF MSWINDOWS} - Windows, -{$ENDIF} - ExtCtrls; - - { Local procedures } {$IFDEF MSWINDOWS} diff -Nru lazarus-1.4.4+dfsg/examples/translation/main.pas lazarus-1.6+dfsg/examples/translation/main.pas --- lazarus-1.4.4+dfsg/examples/translation/main.pas 2015-02-10 22:48:03.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/main.pas 2015-07-04 23:08:27.000000000 +0000 @@ -7,7 +7,9 @@ filename it must be relative to the location of the exe. Select the option to automatically update the po file. -- Add DefaultTranslator to uses clause of main form +- Add DefaultTranslator or LCLTranslator to uses clause of main form + (DefaultTranslator determines the default language automatically, + LCLTranslator does not). - If the project contains several forms that need translation: - Copy LocalizedForms.* (to be found in this project) to the folder of @@ -23,7 +25,7 @@ - Declare each string that needs to be translated as a resourcestring. This is not absolutely necessary for component properties "Caption", "Text" or - "Hint" which are transparently handled by DefaultTranslator. + "Hint" which are transparently handled by Default/LCLTranslator. Explicitly declared resource strings are required for stringlist items, such as those of comboboxes, radiogroups etc. @@ -51,8 +53,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - StdCtrls, LCLTranslator, LocalizedForms; + SysUtils, Dialogs, ExtCtrls, StdCtrls, LCLTranslator, LocalizedForms; type @@ -73,13 +74,12 @@ procedure FormCreate(Sender: TObject); procedure RgDrinksClick(Sender: TObject); private - { private declarations } FSelectionTime: TTime; procedure SelectLanguage(ALang: String); protected procedure UpdateTranslation(ALang: String); override; public - { public declarations } + end; var @@ -116,7 +116,7 @@ { Another comment: The strings used in "MessageDlg" can be translated by copying the files "lclstrconsts.*.po" to the languages folder. - DefaultTranslater then includes these strings as well. Please note that + LCL/DefaultTranslater then includes these strings as well. Please note that we did not copy these files in this demo project to avoid duplication of Lazarus files. } end; @@ -148,6 +148,8 @@ { Lets start the program with English translation by default. You could also store language in a configuration file and apply that selection here. } SelectLanguage('en'); + { OR: Start the program with system's default language: + SelectLanguage(GetDefaultLang); } end; { Another example how to combine translated strings, in this case for a @@ -171,7 +173,7 @@ i, p: Integer; lang: String; begin - // Switch language - this is in DefaultTranslator + // Switch language - this is in LCLTranslator SetDefaultLang(ALang); // Switch default settings by calling the procedure provided in BasicLocalizedForm.pas. @@ -204,20 +206,20 @@ end; { This method is inherited from LocalizedForm and manually inserts translated - strings in cases where DefaultTranslator cannot do this. } + strings in cases where LCL/DefaultTranslator cannot do this. } procedure TMainForm.UpdateTranslation(ALang: String); begin inherited; { The items of the radiogroup are not automatically handled by - DefaultTranslator. Therefore, we have to assign the strings to the + LCL/DefaultTranslator. Therefore, we have to assign the strings to the translated versions explicitly. } RgDrinks.Items[0] := rsBeer; RgDrinks.Items[1] := rsWine; RgDrinks.Items[2] := rsWater; { The label LblCurrentSelection is created by a Format statement. Since - DefaultTranslator does not execute code we have to update the translation + LCL/DefaultTranslator does not execute code we have to update the translation of the label here. It is sufficient to call RgDrinksClick here where the caption is re-composed by means of the Format statement. } RgDrinksClick(nil); diff -Nru lazarus-1.4.4+dfsg/examples/translation/stringsunit.pas lazarus-1.6+dfsg/examples/translation/stringsunit.pas --- lazarus-1.4.4+dfsg/examples/translation/stringsunit.pas 2013-12-20 20:41:54.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/stringsunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,9 +5,6 @@ interface -uses - Classes, SysUtils; - resourcestring rsBeer = 'Beer'; rsWine = 'Wine'; diff -Nru lazarus-1.4.4+dfsg/examples/translation/unit2.pas lazarus-1.6+dfsg/examples/translation/unit2.pas --- lazarus-1.4.4+dfsg/examples/translation/unit2.pas 2013-12-20 20:41:54.000000000 +0000 +++ lazarus-1.6+dfsg/examples/translation/unit2.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - ExtCtrls, LocalizedForms; + SysUtils, StdCtrls, ExtCtrls, LocalizedForms; type diff -Nru lazarus-1.4.4+dfsg/examples/turbopower_ipro/mainunit.pas lazarus-1.6+dfsg/examples/turbopower_ipro/mainunit.pas --- lazarus-1.4.4+dfsg/examples/turbopower_ipro/mainunit.pas 2013-09-29 09:51:07.000000000 +0000 +++ lazarus-1.6+dfsg/examples/turbopower_ipro/mainunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -7,11 +7,11 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons, + Classes, SysUtils, Forms, Graphics, Dialogs, ExtCtrls, StdCtrls, {$ifdef UsePreview} OsPrinters, {$endif} - FileUtil, IpHtml, ExtCtrls, StdCtrls; + LazFileUtils, LazUTF8, IpHtml; type TSimpleIpHtml = class(TIpHtml) Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReader.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/examples/xmlreader/TestXMLReader.ico differ diff -Nru lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReader.lpi lazarus-1.6+dfsg/examples/xmlreader/TestXMLReader.lpi --- lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReader.lpi 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlreader/TestXMLReader.lpi 2016-01-28 12:06:25.000000000 +0000 @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectOptions> + <Version Value="9"/> + <General> + <Flags> + <LRSInOutputDirectory Value="False"/> + </Flags> + <SessionStorage Value="InIDEConfig"/> + <MainUnit Value="0"/> + <Title Value="TestXMLReader"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <Icon Value="0"/> + </General> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <IgnoreBinaries Value="False"/> + <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> + <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + <CommandLineParams Value="test.xml"/> + <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + </RequiredPackages> + <Units Count="2"> + <Unit0> + <Filename Value="TestXMLReader.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="testxmlreaderunit.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="XMLReaderForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="TestXMLReaderUnit"/> + </Unit1> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="TestXMLReader"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff -Nru lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReader.lpr lazarus-1.6+dfsg/examples/xmlreader/TestXMLReader.lpr --- lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReader.lpr 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlreader/TestXMLReader.lpr 2016-01-28 12:06:25.000000000 +0000 @@ -0,0 +1,19 @@ +program TestXMLReder; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, TestXMLReaderUnit; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TXMLReaderForm, XMLReaderForm); + Application.Run; +end. + Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReader.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/examples/xmlreader/TestXMLReader.res differ diff -Nru lazarus-1.4.4+dfsg/examples/xmlreader/testxmlreaderunit.lfm lazarus-1.6+dfsg/examples/xmlreader/testxmlreaderunit.lfm --- lazarus-1.4.4+dfsg/examples/xmlreader/testxmlreaderunit.lfm 2012-08-20 18:05:46.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlreader/testxmlreaderunit.lfm 2016-01-28 12:06:25.000000000 +0000 @@ -1,4 +1,4 @@ -object XMLRederForm: TXMLRederForm +object XMLReaderForm: TXMLReaderForm Left = 312 Height = 381 Top = 119 @@ -10,14 +10,15 @@ OnClose = FormClose OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.7' object TreeView1: TTreeView Left = 0 - Height = 315 - Top = 66 + Height = 316 + Top = 65 Width = 342 Align = alLeft AutoExpand = True + DefaultItemHeight = 18 ReadOnly = True TabOrder = 0 OnClick = TreeView1Click @@ -25,12 +26,12 @@ end object Panel1: TPanel Left = 0 - Height = 66 + Height = 65 Top = 0 Width = 732 Align = alTop AutoSize = True - ClientHeight = 66 + ClientHeight = 65 ClientWidth = 732 TabOrder = 1 object BitBtn1: TBitBtn @@ -38,10 +39,10 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Panel1 AnchorSideRight.Side = asrBottom - Left = 650 - Height = 29 - Top = 30 - Width = 75 + Left = 665 + Height = 30 + Top = 28 + Width = 60 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Around = 6 @@ -66,9 +67,9 @@ AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Panel1 Left = 7 - Height = 17 + Height = 15 Top = 7 - Width = 61 + Width = 52 BorderSpacing.Around = 6 Caption = 'File name' ParentColor = False @@ -79,7 +80,7 @@ AnchorSideTop.Side = asrBottom Left = 13 Height = 25 - Top = 30 + Top = 28 Width = 620 FileName = 'test.xml' DialogOptions = [] @@ -93,30 +94,31 @@ BorderSpacing.Bottom = 6 MaxLength = 0 TabOrder = 1 + Text = 'test.xml' end end object Splitter1: TSplitter Left = 342 - Height = 315 - Top = 66 + Height = 316 + Top = 65 Width = 5 end object Panel2: TPanel Left = 347 - Height = 315 - Top = 66 + Height = 316 + Top = 65 Width = 385 Align = alClient Caption = 'Panel2' - ClientHeight = 315 + ClientHeight = 316 ClientWidth = 385 TabOrder = 3 object ListView1: TListView AnchorSideTop.Control = Edit2 AnchorSideTop.Side = asrBottom Left = 1 - Height = 199 - Top = 115 + Height = 204 + Top = 111 Width = 383 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] @@ -138,9 +140,9 @@ AnchorSideLeft.Control = Panel2 AnchorSideTop.Control = Panel2 Left = 7 - Height = 17 + Height = 15 Top = 7 - Width = 75 + Width = 63 BorderSpacing.Around = 6 Caption = 'Node name' ParentColor = False @@ -150,9 +152,9 @@ AnchorSideTop.Control = Edit1 AnchorSideTop.Side = asrBottom Left = 7 - Height = 17 - Top = 61 - Width = 72 + Height = 15 + Top = 59 + Width = 62 BorderSpacing.Around = 6 Caption = 'Node value' ParentColor = False @@ -165,7 +167,7 @@ AnchorSideRight.Side = asrBottom Left = 13 Height = 25 - Top = 30 + Top = 28 Width = 365 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 @@ -180,7 +182,7 @@ AnchorSideRight.Side = asrBottom Left = 13 Height = 25 - Top = 84 + Top = 80 Width = 365 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 diff -Nru lazarus-1.4.4+dfsg/examples/xmlreader/testxmlreaderunit.pas lazarus-1.6+dfsg/examples/xmlreader/testxmlreaderunit.pas --- lazarus-1.4.4+dfsg/examples/xmlreader/testxmlreaderunit.pas 2012-08-04 10:39:01.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlreader/testxmlreaderunit.pas 2016-01-28 12:06:25.000000000 +0000 @@ -5,14 +5,14 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - EditBtn, StdCtrls, Buttons, ComCtrls, ExtCtrls, DOM, XMLRead; + SysUtils, LazFileUtils, LazUTF8, Forms, EditBtn, StdCtrls, Buttons, + ComCtrls, ExtCtrls, DOM, XMLRead; type - { TXMLRederForm } + { TXMLReaderForm } - TXMLRederForm = class(TForm) + TXMLReaderForm = class(TForm) BitBtn1: TBitBtn; Edit1: TEdit; Edit2: TEdit; @@ -33,18 +33,18 @@ FDoc: TXMLDocument; procedure ParseDoc; public - { public declarations } + end; var - XMLRederForm: TXMLRederForm; + XMLReaderForm: TXMLReaderForm; implementation -{ TXMLRederForm } +{ TXMLReaderForm } -procedure TXMLRederForm.BitBtn1Click(Sender: TObject); +procedure TXMLReaderForm.BitBtn1Click(Sender: TObject); begin if Assigned(FDoc) then FreeAndNil(FDoc); @@ -55,13 +55,13 @@ ParseDoc; end; -procedure TXMLRederForm.FormClose(Sender: TObject; var CloseAction: TCloseAction); +procedure TXMLReaderForm.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin if Assigned(FDoc) then FDoc.Free; end; -procedure TXMLRederForm.FormCreate(Sender: TObject); +procedure TXMLReaderForm.FormCreate(Sender: TObject); begin if ParamCount > 0 then begin @@ -72,7 +72,7 @@ TreeView1Click(nil); end; -procedure TXMLRederForm.TreeView1Click(Sender: TObject); +procedure TXMLReaderForm.TreeView1Click(Sender: TObject); var Node:TDOMNode; Item:TListItem; @@ -101,7 +101,7 @@ ListView1.EndUpdate; end; -procedure TXMLRederForm.ParseDoc; +procedure TXMLReaderForm.ParseDoc; procedure DoFill(AOwner:TTreeNode; Node:TDOMNode); var Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReder.ico and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/examples/xmlreader/TestXMLReder.ico differ diff -Nru lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReder.lpi lazarus-1.6+dfsg/examples/xmlreader/TestXMLReder.lpi --- lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReder.lpi 2013-09-29 09:52:42.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlreader/TestXMLReder.lpi 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CONFIG> - <ProjectOptions> - <Version Value="9"/> - <General> - <Flags> - <LRSInOutputDirectory Value="False"/> - </Flags> - <SessionStorage Value="InIDEConfig"/> - <MainUnit Value="0"/> - <Title Value="TestXMLReder"/> - <ResourceType Value="res"/> - <UseXPManifest Value="True"/> - <Icon Value="0"/> - </General> - <VersionInfo> - <StringTable ProductVersion=""/> - </VersionInfo> - <BuildModes Count="1"> - <Item1 Name="default" Default="True"/> - </BuildModes> - <PublishOptions> - <Version Value="2"/> - <IgnoreBinaries Value="False"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> - </PublishOptions> - <RunParams> - <local> - <FormatVersion Value="1"/> - <CommandLineParams Value="test.xml"/> - <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> - </local> - </RunParams> - <RequiredPackages Count="1"> - <Item1> - <PackageName Value="LCL"/> - </Item1> - </RequiredPackages> - <Units Count="2"> - <Unit0> - <Filename Value="TestXMLReder.lpr"/> - <IsPartOfProject Value="True"/> - <UnitName Value="TestXMLReder"/> - </Unit0> - <Unit1> - <Filename Value="testxmlreaderunit.pas"/> - <IsPartOfProject Value="True"/> - <ComponentName Value="XMLRederForm"/> - <HasResources Value="True"/> - <ResourceBaseClass Value="Form"/> - <UnitName Value="TestXMLReaderUnit"/> - </Unit1> - </Units> - </ProjectOptions> - <CompilerOptions> - <Version Value="11"/> - <Target> - <Filename Value="TestXMLReder"/> - </Target> - <SearchPaths> - <IncludeFiles Value="$(ProjOutDir)"/> - <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> - </SearchPaths> - <Linking> - <Options> - <Win32> - <GraphicApplication Value="True"/> - </Win32> - </Options> - </Linking> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> - </CompilerOptions> - <Debugging> - <Exceptions Count="3"> - <Item1> - <Name Value="EAbort"/> - </Item1> - <Item2> - <Name Value="ECodetoolError"/> - </Item2> - <Item3> - <Name Value="EFOpenError"/> - </Item3> - </Exceptions> - </Debugging> -</CONFIG> diff -Nru lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReder.lpr lazarus-1.6+dfsg/examples/xmlreader/TestXMLReder.lpr --- lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReder.lpr 2013-09-29 09:52:42.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlreader/TestXMLReder.lpr 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -program TestXMLReder; - -{$mode objfpc}{$H+} - -uses - {$IFDEF UNIX}{$IFDEF UseCThreads} - cthreads, - {$ENDIF}{$ENDIF} - Interfaces, // this includes the LCL widgetset - Forms, TestXMLReaderUnit; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TXMLRederForm, XMLRederForm); - Application.Run; -end. - Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/examples/xmlreader/TestXMLReder.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/examples/xmlreader/TestXMLReder.res differ diff -Nru lazarus-1.4.4+dfsg/examples/xmlresource/xmlresourcefile.pas lazarus-1.6+dfsg/examples/xmlresource/xmlresourcefile.pas --- lazarus-1.4.4+dfsg/examples/xmlresource/xmlresourcefile.pas 2014-07-06 09:37:22.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlresource/xmlresourcefile.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,11 +5,10 @@ interface uses - Classes, Controls, SysUtils, - LCLMemManager, forms, - dom, XMLRead,XMLWrite, - ProjectIntf, - UnitResources; + Classes, Controls, SysUtils, RtlConsts, + LCLMemManager, forms, LazFileUtils, + dom, XMLRead, XMLWrite, + ProjectIntf, UnitResources, CodeCache; type @@ -148,11 +147,6 @@ implementation -uses - FileUtil, - RtlConsts, - CodeCache; - procedure register; begin RegisterUnitResourcefileFormat(TXMLUnitResourcefileFormat); diff -Nru lazarus-1.4.4+dfsg/examples/xmlstreaming/mainunit.pas lazarus-1.6+dfsg/examples/xmlstreaming/mainunit.pas --- lazarus-1.4.4+dfsg/examples/xmlstreaming/mainunit.pas 2014-06-25 07:40:54.000000000 +0000 +++ lazarus-1.6+dfsg/examples/xmlstreaming/mainunit.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, - FileUtil, StdCtrls, Laz_XMLStreaming, Laz2_DOM, Laz2_XMLCfg, Buttons, TypInfo; + Classes, SysUtils, TypInfo, LCLProc, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, LazUTF8, Laz_XMLStreaming, Laz2_DOM, Laz2_XMLCfg; type TMyEnum = (myEnum1, myEnum2, myEnum3); diff -Nru lazarus-1.4.4+dfsg/ide/aboutfrm.lfm lazarus-1.6+dfsg/ide/aboutfrm.lfm --- lazarus-1.4.4+dfsg/ide/aboutfrm.lfm 2011-10-02 19:42:59.000000000 +0000 +++ lazarus-1.6+dfsg/ide/aboutfrm.lfm 2015-05-13 22:09:27.000000000 +0000 @@ -4,6 +4,7 @@ Top = 282 Width = 460 ActiveControl = Notebook + BorderIcons = [biSystemMenu, biMaximize] Caption = 'About Lazarus' ClientHeight = 376 ClientWidth = 460 @@ -11,25 +12,27 @@ OnCreate = AboutFormCreate PopupMenu = PopupMenu1 Position = poScreenCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object Notebook: TPageControl Left = 0 Height = 326 Top = 0 Width = 460 + ActivePage = VersionPage Align = alClient - OnChange = NotebookPageChanged + TabIndex = 0 TabOrder = 0 + OnChange = NotebookPageChanged object VersionPage: TTabSheet Caption = 'Version' - ClientWidth = 458 - ClientHeight = 299 + ClientHeight = 298 + ClientWidth = 452 object LogoImage: TImage AnchorSideLeft.Control = VersionPage AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = VersionPage AnchorSideTop.Side = asrCenter - Left = 4 + Left = 1 Height = 300 Top = -1 Width = 450 @@ -39,10 +42,10 @@ AnchorSideLeft.Control = LogoImage AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = LogoImage - Left = 191 - Height = 18 + Left = 199 + Height = 15 Top = 120 - Width = 76 + Width = 55 Alignment = taCenter BorderSpacing.Top = 115 BorderSpacing.Around = 6 @@ -57,10 +60,10 @@ AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = VersionLabel AnchorSideTop.Side = asrBottom - Left = 211 - Height = 18 - Top = 144 - Width = 36 + Left = 213 + Height = 15 + Top = 141 + Width = 27 Alignment = taCenter BorderSpacing.Around = 6 Caption = 'Date:' @@ -73,10 +76,10 @@ AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = FPCVersionLabel AnchorSideTop.Side = asrBottom - Left = 186 - Height = 18 - Top = 192 - Width = 86 + Left = 190 + Height = 15 + Top = 183 + Width = 72 BorderSpacing.Around = 6 Caption = 'RevisionLabel' Font.Color = clSilver @@ -88,10 +91,10 @@ AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = RevisionLabel AnchorSideTop.Side = asrBottom - Left = 185 - Height = 18 - Top = 216 - Width = 89 + Left = 189 + Height = 15 + Top = 204 + Width = 74 BorderSpacing.Around = 6 Caption = 'PlatformLabel' Font.Color = clSilver @@ -103,10 +106,10 @@ AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = BuildDateLabel AnchorSideTop.Side = asrBottom - Left = 176 - Height = 18 - Top = 168 - Width = 106 + Left = 182 + Height = 15 + Top = 162 + Width = 88 BorderSpacing.Around = 6 Caption = 'FPCVersionLabel' Font.Color = clSilver @@ -116,8 +119,8 @@ end object AboutPage: TTabSheet Caption = 'About' - ClientWidth = 458 ClientHeight = 299 + ClientWidth = 458 object OfficialLabel: TLabel AnchorSideLeft.Control = AboutPage AnchorSideBottom.Control = DocumentationLabel @@ -209,6 +212,7 @@ Top = 326 Width = 460 Align = alBottom + BevelOuter = bvNone ClientHeight = 50 ClientWidth = 460 TabOrder = 1 @@ -219,17 +223,16 @@ AnchorSideTop.Side = asrCenter AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom - Left = 195 - Height = 32 - Top = 9 - Width = 70 + Left = 193 + Height = 26 + Top = 12 + Width = 75 AutoSize = True BorderSpacing.Around = 6 Cancel = True Caption = '&Close' Kind = bkClose ModalResult = 1 - NumGlyphs = 0 TabOrder = 0 end end diff -Nru lazarus-1.4.4+dfsg/ide/aboutfrm.pas lazarus-1.6+dfsg/ide/aboutfrm.pas --- lazarus-1.4.4+dfsg/ide/aboutfrm.pas 2014-06-08 12:49:44.000000000 +0000 +++ lazarus-1.6+dfsg/ide/aboutfrm.pas 2015-07-04 23:08:00.000000000 +0000 @@ -25,10 +25,9 @@ interface uses - Classes, SysUtils, FPCAdds, Forms, Controls, Graphics, Dialogs, LResources, - LCLProc, StdCtrls, Buttons, LazConf, LazarusIDEStrConsts, ExtCtrls, ComCtrls, - EnvironmentOpts, Clipbrd, FileUtil, lazutf8classes, DefineTemplates, Menus, - LCLIntf; + Classes, SysUtils, FPCAdds, Forms, Controls, Graphics, StdCtrls, Buttons, + ExtCtrls, ComCtrls, Menus, LCLIntf, LazConf, LazarusIDEStrConsts, + EnvironmentOpts, Clipbrd, LazFileUtils, lazutf8classes, DefineTemplates; type diff -Nru lazarus-1.4.4+dfsg/ide/abstractsmethodsdlg.pas lazarus-1.6+dfsg/ide/abstractsmethodsdlg.pas --- lazarus-1.4.4+dfsg/ide/abstractsmethodsdlg.pas 2014-06-21 15:35:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/abstractsmethodsdlg.pas 2015-03-10 12:02:19.000000000 +0000 @@ -35,7 +35,7 @@ uses Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, CheckLst, StdCtrls, ExtCtrls, Buttons, - CodeAtom, CodeTree, PascalParserTool, CodeCache, CodeToolManager, + CodeTree, PascalParserTool, CodeCache, CodeToolManager, LazIDEIntf, SrcEditorIntf, IDEDialogs, LazarusIDEStrConsts; diff -Nru lazarus-1.4.4+dfsg/ide/addprofiledialog.lfm lazarus-1.6+dfsg/ide/addprofiledialog.lfm --- lazarus-1.4.4+dfsg/ide/addprofiledialog.lfm 2011-10-03 23:14:54.000000000 +0000 +++ lazarus-1.6+dfsg/ide/addprofiledialog.lfm 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -object AddProfileForm: TAddProfileForm - Left = 279 - Height = 110 - Top = 246 - Width = 443 - AutoSize = True - Caption = 'Add New Profile' - ClientHeight = 110 - ClientWidth = 443 - Constraints.MinWidth = 400 - OnCreate = FormCreate - LCLVersion = '0.9.29' - object NameEdit: TEdit - AnchorSideLeft.Control = Owner - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = ButtonPanel - Left = 12 - Height = 21 - Top = 51 - Width = 419 - Anchors = [akLeft, akRight, akBottom] - BorderSpacing.Left = 12 - BorderSpacing.Right = 12 - BorderSpacing.Bottom = 6 - TabOrder = 0 - end - object ProfileHeaderLabel: TLabel - AnchorSideLeft.Control = NameEdit - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = NameEdit - Left = 12 - Height = 14 - Top = 31 - Width = 64 - Anchors = [akLeft, akBottom] - BorderSpacing.Top = 6 - BorderSpacing.Right = 12 - BorderSpacing.Bottom = 6 - Caption = 'Profile name:' - ParentColor = False - end - object ButtonPanel: TButtonPanel - Left = 6 - Height = 26 - Top = 78 - Width = 431 - OKButton.Name = 'OKButton' - HelpButton.Name = 'HelpButton' - HelpButton.Enabled = False - CloseButton.Name = 'CloseButton' - CloseButton.Enabled = False - CancelButton.Name = 'CancelButton' - TabOrder = 1 - ShowButtons = [pbOK, pbCancel] - ShowBevel = False - end -end diff -Nru lazarus-1.4.4+dfsg/ide/addprofiledialog.pas lazarus-1.6+dfsg/ide/addprofiledialog.pas --- lazarus-1.4.4+dfsg/ide/addprofiledialog.pas 2012-02-13 19:57:58.000000000 +0000 +++ lazarus-1.6+dfsg/ide/addprofiledialog.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -unit AddProfileDialog; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, ButtonPanel, LazarusIDEStrConsts; - -type - - { TAddProfileForm } - - TAddProfileForm = class(TForm) - ButtonPanel: TButtonPanel; - NameEdit: TEdit; - ProfileHeaderLabel: TLabel; - procedure FormCreate(Sender:TObject); - private - - public - - end; - -var - AddProfileForm: TAddProfileForm; - -implementation - -{$R *.lfm} - - -{ TAddProfileForm } - -procedure TAddProfileForm.FormCreate(Sender:TObject); -begin - ButtonPanel.OKButton.Caption:=lisMenuOk; - ButtonPanel.CancelButton.Caption:=lisCancel; -end; - -end. - diff -Nru lazarus-1.4.4+dfsg/ide/addtoprojectdlg.lfm lazarus-1.6+dfsg/ide/addtoprojectdlg.lfm --- lazarus-1.4.4+dfsg/ide/addtoprojectdlg.lfm 2014-09-25 21:06:18.000000000 +0000 +++ lazarus-1.6+dfsg/ide/addtoprojectdlg.lfm 2015-06-05 18:12:49.000000000 +0000 @@ -4,30 +4,31 @@ Top = 250 Width = 598 ActiveControl = Notebook - BorderStyle = bsSizeToolWin + BorderIcons = [biSystemMenu, biMaximize] Caption = 'AddToProjectDialog' ClientHeight = 339 ClientWidth = 598 OnClose = AddToProjectDialogClose + OnShow = AddToProjectDialogShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object Notebook: TPageControl Left = 0 - Height = 297 + Height = 301 Top = 0 Width = 598 - ActivePage = AddEditorFilePage + ActivePage = AddFilesPage Align = alClient - TabIndex = 0 + TabIndex = 2 TabOrder = 0 OnChange = NotebookChange object AddEditorFilePage: TTabSheet Caption = 'AddEditorFilePage' - ClientHeight = 264 + ClientHeight = 273 ClientWidth = 590 object AddFileLabel: TLabel Left = 6 - Height = 20 + Height = 15 Top = 6 Width = 578 Align = alTop @@ -37,8 +38,8 @@ end object AddFileListView: TListView Left = 6 - Height = 224 - Top = 32 + Height = 238 + Top = 27 Width = 578 Align = alTop Anchors = [akTop, akLeft, akRight, akBottom] @@ -84,13 +85,13 @@ end object DependPkgNameComboBox: TComboBox Left = 218 - Height = 28 + Height = 23 Top = 14 Width = 370 Anchors = [akTop, akLeft, akRight] AutoComplete = True AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending] - ItemHeight = 20 + ItemHeight = 15 OnChange = DependPkgNameComboBoxChange TabOrder = 0 Text = 'DependPkgNameComboBox' @@ -116,12 +117,12 @@ end object AddFilesPage: TTabSheet Caption = 'AddFilesPage' - ClientHeight = 264 + ClientHeight = 273 ClientWidth = 590 object FilesListView: TListView AnchorSideBottom.Control = FilesDirButton Left = 6 - Height = 216 + Height = 230 Top = 6 Width = 578 Anchors = [akTop, akLeft, akRight, akBottom] @@ -141,9 +142,9 @@ AnchorSideBottom.Control = AddFilesPage AnchorSideBottom.Side = asrBottom Left = 6 - Height = 30 - Top = 228 - Width = 119 + Height = 25 + Top = 242 + Width = 100 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -156,10 +157,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = FilesDirButton AnchorSideTop.Side = asrCenter - Left = 131 - Height = 30 - Top = 228 - Width = 150 + Left = 112 + Height = 25 + Top = 242 + Width = 126 AutoSize = True BorderSpacing.Around = 6 Caption = 'FilesShortenButton' @@ -171,10 +172,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = FilesShortenButton AnchorSideTop.Side = asrCenter - Left = 287 - Height = 30 - Top = 228 - Width = 143 + Left = 244 + Height = 25 + Top = 242 + Width = 118 AutoSize = True BorderSpacing.Around = 6 Caption = 'FilesDeleteButton' @@ -185,8 +186,8 @@ end object ButtonPanel: TButtonPanel Left = 6 - Height = 30 - Top = 303 + Height = 26 + Top = 307 Width = 586 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True diff -Nru lazarus-1.4.4+dfsg/ide/addtoprojectdlg.pas lazarus-1.6+dfsg/ide/addtoprojectdlg.pas --- lazarus-1.4.4+dfsg/ide/addtoprojectdlg.pas 2014-09-24 17:01:50.000000000 +0000 +++ lazarus-1.6+dfsg/ide/addtoprojectdlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -34,17 +34,17 @@ interface uses - Classes, SysUtils, Math, LCLProc, Forms, Controls, Buttons, - ComCtrls, StdCtrls, ExtCtrls, Menus, Dialogs, Graphics, FileUtil, ButtonPanel, - AVL_Tree, + Classes, SysUtils, Forms, Controls, Buttons, + ComCtrls, StdCtrls, Dialogs, FileUtil, LazFileUtils, ButtonPanel, AVL_Tree, IDEWindowIntf, PackageIntf, IDEDialogs, - LazarusIDEStrConsts, IDEProcs, IDEOptionDefs, - EnvironmentOpts, Project, PackageDefs, PackageSystem, InputHistory; + LazarusIDEStrConsts, + Project, PackageDefs, PackageSystem, InputHistory; type TAddToProjectType = ( a2pFiles, - a2pRequiredPkg + a2pRequiredPkg, + a2pEditorFiles ); TAddToProjectResult = class @@ -80,14 +80,15 @@ // add files page FilesListView: TListView; procedure AddFileButtonClick(Sender: TObject); - procedure AddFileListViewSelectItem(Sender: TObject; Item: TListItem; - Selected: Boolean); + procedure AddFileListViewSelectItem(Sender: TObject; {%H-}Item: TListItem; + {%H-}Selected: Boolean); procedure AddToProjectDialogClose(Sender: TObject; - var CloseAction: TCloseAction); + var {%H-}CloseAction: TCloseAction); + procedure AddToProjectDialogShow(Sender: TObject); procedure DependPkgNameComboBoxChange(Sender: TObject); procedure FilesDirButtonClick(Sender: TObject); - procedure FilesListViewSelectItem(Sender: TObject; Item: TListItem; - Selected: Boolean); + procedure FilesListViewSelectItem(Sender: TObject; {%H-}Item: TListItem; + {%H-}Selected: Boolean); procedure NewDependButtonClick(Sender: TObject); procedure FilesAddButtonClick(Sender: TObject); procedure FilesDeleteButtonClick(Sender: TObject); @@ -113,7 +114,8 @@ end; function ShowAddToProjectDlg(AProject: TProject; - var AddResult: TAddToProjectResult): TModalResult; + var AddResult: TAddToProjectResult; + AInitTab: TAddToProjectType): TModalResult; function CheckAddingDependency(LazProject: TProject; NewDependency: TPkgDependency): boolean; @@ -123,7 +125,9 @@ {$R *.lfm} function ShowAddToProjectDlg(AProject: TProject; - var AddResult: TAddToProjectResult): TModalResult; + var AddResult: TAddToProjectResult; + AInitTab: TAddToProjectType + ): TModalResult; var AddToProjectDialog: TAddToProjectDialog; begin @@ -131,6 +135,19 @@ AddToProjectDialog.TheProject:=AProject; AddToProjectDialog.UpdateAvailableFiles; AddToProjectDialog.UpdateAvailableDependencyNames; + + case AInitTab of + a2pFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=2; + a2pEditorFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=0; + a2pRequiredPkg: AddToProjectDialog.NoteBook.ActivePageIndex:=1; + end; + // hide tabs for simple look + AddToProjectDialog.NoteBook.ShowTabs:=false; + AddToProjectDialog.NoteBook.TabStop:=false; + // press "Add files" btn + if AInitTab=a2pFiles then + AddToProjectDialog.FilesDirButton.Click; + Result:=AddToProjectDialog.ShowModal; if Result=mrOk then begin AddResult:=AddToProjectDialog.AddResult; @@ -197,6 +214,11 @@ IDEDialogLayoutList.SaveLayout(Self); end; +procedure TAddToProjectDialog.AddToProjectDialogShow(Sender: TObject); +begin + SelectNext(NoteBook.ActivePage, True, True); +end; + procedure TAddToProjectDialog.DependPkgNameComboBoxChange(Sender: TObject); begin CheckNewReqOk; diff -Nru lazarus-1.4.4+dfsg/ide/allcompileroptions.pas lazarus-1.6+dfsg/ide/allcompileroptions.pas --- lazarus-1.4.4+dfsg/ide/allcompileroptions.pas 2014-09-29 18:22:38.000000000 +0000 +++ lazarus-1.6+dfsg/ide/allcompileroptions.pas 2015-10-26 21:34:11.000000000 +0000 @@ -7,7 +7,7 @@ uses Classes, SysUtils, math, contnrs, Forms, Controls, StdCtrls, Buttons, ButtonPanel, EditBtn, ExtCtrls, - LCLProc, Compiler, LazarusIDEStrConsts; + LCLProc, LazUTF8, Compiler, LazarusIDEStrConsts; type @@ -23,8 +23,8 @@ sbAllOptions: TScrollBox; procedure btnResetOptionsFilterClick(Sender: TObject); procedure cbShowModifiedClick(Sender: TObject); - procedure sbMouseWheel(Sender: TObject; Shift: TShiftState; - WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); + procedure sbMouseWheel(Sender: TObject; {%H-}Shift: TShiftState; + WheelDelta: Integer; {%H-}MousePos: TPoint; var Handled: Boolean); procedure edOptionsFilterChange(Sender: TObject); procedure FormCreate(Sender: TObject); private @@ -36,7 +36,7 @@ FEffectiveShowModified: Boolean; FRenderedOnce: Boolean; procedure SetIdleConnected(AValue: Boolean); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure CheckBoxClick(Sender: TObject); procedure EditChange(Sender: TObject); procedure ComboChange(Sender: TObject); @@ -324,7 +324,7 @@ if (FEffectiveFilter = edOptionsFilter.Text) and (FEffectiveShowModified = cbShowModified.Checked) then Exit; Container := sbAllOptions; - Container.DisableAutoSizing; + Container.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TfrmAllCompilerOptions.RenderAndFilterOptions'){$ENDIF}; try // First filter and set Visible flag. FOptionsReader.FilterOptions(UTF8LowerCase(edOptionsFilter.Text), @@ -337,7 +337,7 @@ FEffectiveShowModified := cbShowModified.Checked; FocusControl(edOptionsFilter); finally - Container.EnableAutoSizing; + Container.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TfrmAllCompilerOptions.RenderAndFilterOptions'){$ENDIF}; Container.Invalidate; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/applicationbundle.pas lazarus-1.6+dfsg/ide/applicationbundle.pas --- lazarus-1.4.4+dfsg/ide/applicationbundle.pas 2013-03-05 10:03:53.000000000 +0000 +++ lazarus-1.6+dfsg/ide/applicationbundle.pas 2015-12-03 09:40:41.000000000 +0000 @@ -34,7 +34,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Dialogs, + Classes, SysUtils, Forms, Controls, Dialogs, FileUtil, LazFileUtils, DialogProcs; type @@ -48,7 +48,7 @@ end; function CreateApplicationBundle(const Filename: String; Title: String = ''; Recreate: boolean = false): TModalResult; -function CreateAppBundleSymbolicLink(const Filename: String; Recreate: boolean = false): TModalResult; +function CreateAppBundleSymbolicLink(const {%H-}Filename: String; {%H-}Recreate: boolean = false): TModalResult; const ApplicationBundleExt = '.app'; diff -Nru lazarus-1.4.4+dfsg/ide/basebuildmanager.pas lazarus-1.6+dfsg/ide/basebuildmanager.pas --- lazarus-1.4.4+dfsg/ide/basebuildmanager.pas 2015-03-12 09:47:52.000000000 +0000 +++ lazarus-1.6+dfsg/ide/basebuildmanager.pas 2015-03-18 17:11:43.000000000 +0000 @@ -40,12 +40,9 @@ { TBaseBuildManager } TBaseBuildManager = class(TComponent) - private - FHasGUI: boolean; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; - property HasGUI: boolean read FHasGUI write FHasGUI; // methods for building IDE (will be changed when project groups are there) procedure SetBuildTargetProject1; virtual; abstract; @@ -64,7 +61,6 @@ function GetProjectPublishDir: string; virtual; abstract; function GetProjectTargetFilename(aProject: TProject): string; virtual; abstract; function GetProjectUsesAppBundle: Boolean; virtual; abstract; - function GetTestProjectFilename(aProject: TProject): string; virtual; abstract; function GetTestUnitFilename(AnUnitInfo: TUnitInfo): string; virtual; abstract; function GetTestBuildDirectory: string; virtual; abstract; function IsTestUnitFilename(const AFilename: string): boolean; virtual; abstract; diff -Nru lazarus-1.4.4+dfsg/ide/basedebugmanager.pas lazarus-1.6+dfsg/ide/basedebugmanager.pas --- lazarus-1.4.4+dfsg/ide/basedebugmanager.pas 2014-03-18 02:45:28.000000000 +0000 +++ lazarus-1.6+dfsg/ide/basedebugmanager.pas 2015-03-10 15:50:16.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: basedebugmanager.pas 44463 2014-03-18 02:45:28Z martin $ } +{ $Id: basedebugmanager.pas 48234 2015-03-10 15:50:16Z mattias $ } { /*************************************************************************** basedebugmanager.pp @@ -200,7 +200,7 @@ // Dialog routines procedure CreateDebugDialog(Sender: TObject; aFormName: string; - var AForm: TCustomForm; DoDisableAutoSizing: boolean); virtual; + var AForm: TCustomForm; DoDisableAutoSizing: boolean); virtual; abstract; procedure ViewDebugDialog(const ADialogType: TDebugDialogType; BringToFront: Boolean = True; Show: Boolean = true; DoDisableAutoSizing: boolean = false); virtual; abstract; @@ -239,14 +239,6 @@ implementation -{ TBaseDebugManager } - -procedure TBaseDebugManager.CreateDebugDialog(Sender: TObject; aFormName: string; - var AForm: TCustomForm; DoDisableAutoSizing: boolean); -begin - // -end; - { TDebuggerOptions } class function TDebuggerOptions.GetGroupCaption: string; diff -Nru lazarus-1.4.4+dfsg/ide/buildfiledlg.pas lazarus-1.6+dfsg/ide/buildfiledlg.pas --- lazarus-1.4.4+dfsg/ide/buildfiledlg.pas 2014-02-18 20:55:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildfiledlg.pas 2015-11-20 14:25:13.000000000 +0000 @@ -6,42 +6,13 @@ uses Classes, SysUtils, LCLProc, LCLType, Forms, Controls, Graphics, ComCtrls, - Dialogs, Buttons, ExtCtrls, StdCtrls, FileUtil, ButtonPanel, + Dialogs, Buttons, ExtCtrls, StdCtrls, LazFileUtils, ButtonPanel, BasicCodeTools, IDEHelpIntf, IDEProcs, InputHistory, LazarusIDEStrConsts, EnvironmentOpts, TransferMacros, - MacroDefIntf, IDEUtils; + MacroDefIntf, IDEUtils, LazIDEIntf; type - TIDEDirective = ( - idedNone, - idedBuildCommand, // Filename plus params to build the file - // default is '$(CompPath) $(EdFile)' - idedBuildWorkingDir,// Working directory for building. Default is the - // directory of the file - idedBuildScan, // Flags controlling what messages should be scanned for - // during building. See TIDEDirBuildScanFlag. - idedRunCommand, // Filename plus params to run the file - // default is '$NameOnly($(EdFile))' - idedRunWorkingDir, // Working directory for building. Default is the - // directory of the file - idedRunFlags // Flags for run. See TIDEDirRunFlag - ); - TIDEDirectives = set of TIDEDirective; - - TIDEDirBuildScanFlag = ( - idedbsfNone, - idedbsfFPC, // scan for FPC messages. FPC+ means on (default) and FPC- off. - idedbsfMake // scan for MAKE messages. MAKE- means on (default) and MAKE- off. - ); - TIDEDirBuildScanFlags = set of TIDEDirBuildScanFlag; - - TIDEDirRunFlag = ( - idedrfNone, - idedrfBuildBeforeRun // BUILD+ means on (default), BUILD- means off - ); - TIDEDirRunFlags = set of TIDEDirRunFlag; - { TMacroSelectionBox } @@ -92,7 +63,7 @@ procedure BuildBrowseWorkDirButtonCLICK(Sender: TObject); procedure BuildFileDialogCREATE(Sender: TObject); procedure BuildFileDialogKEYDOWN(Sender: TObject; var Key: Word; - Shift: TShiftState); + {%H-}Shift: TShiftState); procedure BuildMacroSelectionBoxAddMacro(Sender: TObject); procedure HelpButtonClick(Sender: TObject); procedure OkButtonClick(Sender: TObject); @@ -125,25 +96,6 @@ IDEDirDefaultRunCommand = '$MakeExe($(EdFile))'; IDEDirRunFlagDefValues = [idedrfBuildBeforeRun]; - IDEDirectiveNames: array[TIDEDirective] of string = ( - '', - 'BuildCommand', - 'BuildWorkingDir', - 'BuildScan', - 'RunCommand', - 'RunWorkingDir', - 'RunFlags' - ); - IDEDirBuildScanFlagNames: array[TIDEDirBuildScanFlag] of string = ( - '', - 'FPC', - 'MAKE' - ); - IDEDirRunFlagNames: array[TIDEDirRunFlag] of string = ( - '', - 'BUILD' - ); - var IDEDirectiveSpecialChars: string; @@ -237,7 +189,7 @@ // Example: 'FPC+ Make off BUILD on FPC-' function ReadNextWord(var ReadPos: integer; - var WordStart, WordEnd: integer): boolean; + out WordStart, WordEnd: integer): boolean; begin Result:=false; // skip space @@ -493,6 +445,7 @@ MacroCode: string; Macro: TTransferMacro; begin + MacroCode:=''; Macro:=BuildMacroSelectionBox.GetSelectedMacro(MacroCode); if Macro=nil then exit; BuildCommandMemo.SelText:=MacroCode; @@ -514,6 +467,7 @@ MacroCode: string; Macro: TTransferMacro; begin + MacroCode:=''; Macro:=RunMacroSelectionBox.GetSelectedMacro(MacroCode); if Macro=nil then exit; RunCommandMemo.SelText:=MacroCode; @@ -545,7 +499,7 @@ Parent:=RunPage; end; - GeneralPage.Caption:=dlgFROpts; + GeneralPage.Caption:=lisOptions; WhenFileIsActiveGroupbox.Caption:=lisBFWhenThisFileIsActiveInSourceEditor; OverrideBuildProjectCheckbox.Caption:= lisBFOnBuildProjectExecuteTheBuildFileCommandInstead; diff -Nru lazarus-1.4.4+dfsg/ide/buildlazdialog.pas lazarus-1.6+dfsg/ide/buildlazdialog.pas --- lazarus-1.4.4+dfsg/ide/buildlazdialog.pas 2015-04-03 09:47:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildlazdialog.pas 2015-12-09 22:59:24.000000000 +0000 @@ -48,8 +48,8 @@ {$IFDEF Windows} Windows, {$ENDIF} - LCLProc, Forms, Controls, LCLType, StdCtrls, ExtCtrls, - Buttons, FileUtil, LazUTF8, LazLogger, lazutf8classes, LazFileCache, Dialogs, + LCLProc, Forms, Controls, LCLType, StdCtrls, ExtCtrls, Buttons, Dialogs, + FileUtil, LazFileUtils, LazUTF8, LazLogger, lazutf8classes, LazFileCache, InterfaceBase, CheckLst, Menus, ComCtrls, DividerBevel, DefineTemplates, CodeToolManager, // IDEIntf @@ -291,7 +291,7 @@ Ext:=LowerCase(ExtractFileExt(FileInfo.Name)); if (Ext='.ppu') or (Ext='.o') or (Ext='.rst') or (Ext='.rsj') then begin if not DeleteFileUTF8(Filename) then - debugln(['CleanLazarusSrcDir failed to delete file "',Filename,'"']); + debugln(['Error : (lazarus) Clean directory: failed to delete file "',Filename,'"']); end; end; until FindNextUTF8(FileInfo)<>0; @@ -335,7 +335,7 @@ begin RevisionIncFile:=AppendPathDelim(EnvironmentOptions.GetParsedLazarusDirectory)+'ide'+PathDelim+'revision.inc'; if not FileExistsUTF8(RevisionIncFile) then begin - debugln(['Note: revision.inc file missing: ',RevisionIncFile]); + debugln(['Note: (lazarus) revision.inc file missing: ',RevisionIncFile]); sl:=TStringList.Create; sl.Add('// Created by lazbuild'); sl.Add('const RevisionStr = '''+LazarusVersionStr+''';'); @@ -343,7 +343,7 @@ sl.SaveToFile(RevisionIncFile); except on E: Exception do begin - debugln(['Note: can not write ',RevisionIncFile,': ',E.Message]); + debugln(['Warning: (lazarus) unable to write ',RevisionIncFile,': ',E.Message]); end; end; sl.Free; @@ -356,14 +356,14 @@ begin if FileExistsUTF8(fTargetFilename) then begin if not DeleteFileUTF8(fTargetFilename) then begin - debugln(['Building IDE failed. Can not delete "',fTargetFilename,'"']); + debugln(['Error: (lazarus) Building IDE failed. Unable to delete "',fTargetFilename,'"']); exit; end; end; BackupFilename:=GetBackupExeFilename(fTargetFilename); if FileExistsUTF8(BackupFilename) then begin if not RenameFileUTF8(BackupFilename,fTargetFilename) then begin - debugln(['Building IDE failed. Can not restore backup file "',BackupFilename,'" to "',fTargetFilename,'"']); + debugln(['Error: (lazarus) Building IDE failed. Unable to restore backup file "',BackupFilename,'" to "',fTargetFilename,'"']); end; end; end; @@ -389,6 +389,9 @@ Tool:=ExternalToolList.Add(CurTitle); Tool.Reference(Self,ClassName); try + Tool.Data:=TIDEExternalToolData.Create(IDEToolCompileIDE,'lazarus', + AppendPathDelim(EnvironmentOptions.GetParsedLazarusDirectory)+'lazarus.pp'); + Tool.FreeData:=true; Tool.Process.Executable:=Executable; Tool.AddParsers(SubToolFPC); Tool.AddParsers(SubToolMake); @@ -637,12 +640,12 @@ // Case 1. the user has set a target directory fTargetDir:=fProfile.GetParsedTargetDirectory(fMacros); if fTargetDir='' then begin - debugln('CalcTargets macro aborted Options.TargetDirectory=',fProfile.TargetDirectory); + debugln('Error: (lazarus) [CalcTargets] error resolving macros in TargetDirectory=',fProfile.TargetDirectory); Exit(mrAbort); end; fUnitOutDir:=AppendPathDelim(fTargetDir)+'units'; - debugln('CalcTargets TargetDirectory=',fTargetDir); - debugln('CalcTargets UnitsTargetDirectory=',fUnitOutDir); + debugln('Hint: (lazarus) [CalcTargets] TargetDirectory=',fTargetDir); + debugln('Hint: (lazarus) [CalcTargets] UnitsTargetDirectory=',fUnitOutDir); end else begin // no user defined target directory // => find it automatically @@ -668,7 +671,7 @@ // ppu files to <primary config dir>/units/<fTargetCPU>-<fTargetOS>/<LCLWidgetType> fUnitOutDir:=AppendPathDelim(GetPrimaryConfigPath)+'units' +PathDelim+fTargetCPU+'-'+fTargetOS+PathDelim+TargetLCLPlatform; - debugln('CalcTargets Options.TargetOS=',fProfile.FPCTargetOS,' Options.TargetCPU=', + debugln('Hint: (lazarus) [CalcTargets] Cross Compiling TargetOS=',fProfile.FPCTargetOS,' TargetCPU=', fProfile.FPCTargetCPU,' CompilerDefaultOS=',fCompilerTargetOS,' CompilerDefaultCPU=',fCompilerTargetCPU); end else begin // -> normal compile for this platform @@ -683,7 +686,7 @@ // ppu files to <primary config dir>/units/<fTargetCPU>-<fTargetOS>/<LCLWidgetType> fUpdateRevInc:=false; fTargetDir:=AppendPathDelim(GetPrimaryConfigPath)+'bin'; - debugln('CalcTargets LazDir readonly NewTargetDirectory=',fTargetDir); + debugln('Hint: (lazarus) [CalcTargets] Lazarus directory is readonly, using fallback target directory: ',fTargetDir); fUnitOutDir:=AppendPathDelim(GetPrimaryConfigPath)+'units' +PathDelim+fTargetCPU+'-'+fTargetOS+PathDelim+TargetLCLPlatform; end else begin @@ -768,30 +771,30 @@ BackupFilename:=GetBackupExeFilename(fTargetFilename); if FileExistsUTF8(BackupFilename) then begin if DeleteFileUTF8(BackupFilename) then begin - debugln(['Note: deleted backup "',BackupFilename,'"']); + debugln(['Note: (lazarus) deleted backup "',BackupFilename,'"']); end else begin // unable to delete old backup file, maybe an old IDE is still running // => try to backup the backup Backup2Filename:=LeftStr(fTargetFilename,length(fTargetFilename)-length(Ext))+'.old2'+Ext; if FileExistsUTF8(Backup2Filename) then begin if DeleteFileUTF8(Backup2Filename) then - debugln(['Note: deleted backup "',Backup2Filename,'"']) + debugln(['Note: (lazarus) deleted backup "',Backup2Filename,'"']) else - debugln(['WARNING: unable to delete old backup file "'+Backup2Filename+'"']); + debugln(['Warning: (lazarus) unable to delete old backup file "'+Backup2Filename+'"']); end; if not FileExistsUTF8(Backup2Filename) then begin if RenameFileUTF8(BackupFilename,Backup2Filename) then - debugln(['Note: renamed old backup file "'+BackupFilename+'" to "',Backup2Filename,'"']) + debugln(['Note: (lazarus) renamed old backup file "'+BackupFilename+'" to "',Backup2Filename,'"']) else - debugln(['WARNING: unable to rename old backup file "'+BackupFilename+'" to "',Backup2Filename,'"']); + debugln(['Warning: (lazarus) unable to rename old backup file "'+BackupFilename+'" to "',Backup2Filename,'"']); end; end; end; if not FileExistsUTF8(BackupFilename) then begin if RenameFileUTF8(fTargetFilename,BackupFilename) then - debugln(['Note: renamed file "'+fTargetFilename+'" to "',BackupFilename,'"']) + debugln(['Note: (lazarus) renamed file "'+fTargetFilename+'" to "',BackupFilename,'"']) else - debugln(['WARNING: unable to rename file "'+fTargetFilename+'" to "',BackupFilename,'"']); + debugln(['Warning: (lazarus) unable to rename file "'+fTargetFilename+'" to "',BackupFilename,'"']); end; if FileExistsUTF8(fTargetFilename) @@ -819,14 +822,14 @@ //debugln(['CreateAppleBundle TargetFile=',fTargetFilename]); Result:=CreateApplicationBundle(fTargetFilename, 'Lazarus'); if not (Result in [mrOk,mrIgnore]) then begin - debugln(['CreateAppleBundle CreateApplicationBundle failed']); + debugln(['Error: (lazarus) unable to create application bundle']); if IDEMessagesWindow<>nil then IDEMessagesWindow.AddCustomMessage(mluError,'to create application bundle '+BundleDir); exit; end; Result:=CreateAppBundleSymbolicLink(fTargetFilename); if not (Result in [mrOk,mrIgnore]) then begin - debugln(['CreateAppleBundle CreateAppBundleSymbolicLink failed']); + debugln(['Error: (lazarus) unable to create symlink in application bundle: ',fTargetFilename]); if IDEMessagesWindow<>nil then IDEMessagesWindow.AddCustomMessage(mluError,'failed to create application bundle symlink to '+fTargetFilename); exit; @@ -948,7 +951,9 @@ fs:=TFileStreamUTF8.Create(Filename,fmCreate); try if fExtraOptions<>'' then begin - OptionsAsText:=BreakExtraOptions; + // FPC expects console codepage for command line params + // and system codepage in config files + OptionsAsText:=UTF8ToWinCP(BreakExtraOptions); fs.Write(OptionsAsText[1],length(OptionsAsText)); end; finally @@ -1416,7 +1421,7 @@ procedure TConfigureBuildLazarusDlg.CleanRadioButtonClick(Sender: TObject); begin CleanCommonCheckBox.Checked:=CleanAllRadioButton.Checked; - DebugLn(['TConfigureBuildLazarusDlg.CleanRadioButtonClick: set CleanCommonCheckBox to ', CleanCommonRadioButton.Checked]); + //DebugLn(['TConfigureBuildLazarusDlg.CleanRadioButtonClick: set CleanCommonCheckBox to ', CleanCommonRadioButton.Checked]); end; procedure TConfigureBuildLazarusDlg.CleanCommonCheckBoxClick(Sender: TObject); @@ -1425,7 +1430,7 @@ CleanAllRadioButton.Checked:=True else CleanAutoRadioButton.Checked:=True; - DebugLn(['TConfigureBuildLazarusDlg.CleanCommonCheckBoxClick: set CleanCommonRadioButton to ', CleanCommonCheckBox.Checked]); + //DebugLn(['TConfigureBuildLazarusDlg.CleanCommonCheckBoxClick: set CleanCommonRadioButton to ', CleanCommonCheckBox.Checked]); end; end. diff -Nru lazarus-1.4.4+dfsg/ide/buildmanager.pas lazarus-1.6+dfsg/ide/buildmanager.pas --- lazarus-1.4.4+dfsg/ide/buildmanager.pas 2015-04-11 10:14:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildmanager.pas 2015-12-05 21:49:47.000000000 +0000 @@ -34,18 +34,20 @@ interface uses + // RTL + FCL + LCL Classes, SysUtils, AVL_Tree, - // LCL - LConvEncoding, InterfaceBase, LCLProc, Dialogs, FileUtil, Laz2_XMLCfg, - LazUTF8, LazFileUtils, LazFileCache, Forms, Controls, - // codetools + InterfaceBase, LCLProc, Dialogs, Forms, Controls, + // CodeTools ExprEval, BasicCodeTools, CodeToolManager, DefineTemplates, CodeCache, - FileProcs, CodeToolsCfgScript, CodeToolsStructs, + FileProcs, CodeToolsCfgScript, + // LazUtils + LConvEncoding, FileUtil, LazFileUtils, LazFileCache, LazUTF8, + Laz2_XMLCfg, // IDEIntf - ProjectIntf, MacroIntf, IDEDialogs, IDEExternToolIntf, + IDEOptionsIntf, ProjectIntf, MacroIntf, IDEDialogs, IDEExternToolIntf, CompOptsIntf, LazIDEIntf, MacroDefIntf, IDEMsgIntf, // IDE - IDECmdLine, LazarusIDEStrConsts, DialogProcs, IDEProcs, CodeToolsOptions, + IDECmdLine, LazarusIDEStrConsts, DialogProcs, IDEProcs, InputHistory, EditDefineTree, ProjectResources, MiscOptions, LazConf, EnvironmentOpts, TransferMacros, CompilerOptions, ExtToolEditDlg{needed for environment options ExternalUserTools}, @@ -189,7 +191,6 @@ function GetProjectPublishDir: string; override; function GetProjectTargetFilename(aProject: TProject): string; override; function GetProjectUsesAppBundle: Boolean; override; - function GetTestProjectFilename(aProject: TProject): string; override; function GetTestUnitFilename(AnUnitInfo: TUnitInfo): string; override; function GetTestBuildDirectory: string; override; function IsTestUnitFilename(const AFilename: string): boolean; override; @@ -284,7 +285,7 @@ begin if TheMacro=nil then begin if ConsoleVerbosity>=0 then - DebugLn('WARNING: Macro not defined: "'+MacroName+'".'); + DebugLn('Warning: (lazarus) Macro not defined: "'+MacroName+'".'); {$IFDEF VerboseMacroNotDefined} DumpStack; {$ENDIF} @@ -315,6 +316,7 @@ constructor TBuildManager.Create(AOwner: TComponent); begin EnvironmentOptions := TEnvironmentOptions.Create; + IDEEnvironmentOptions := EnvironmentOptions; EnvironmentOptions.IsGlobalMode:=@EnvironmentOptionsIsGlobalMode; DefaultCfgVars:=TCTCfgScriptVariables.Create; DefaultCfgVarsBuildMacroStamp:=CTInvalidChangeStamp; @@ -382,7 +384,7 @@ GlobalMacroList.Add(TTransferMacro.Create('FPC_FULLVERSION','', lisFPCFullVersionEG20701, @MacroFuncFPC_FULLVERSION, [])); GlobalMacroList.Add(TTransferMacro.Create('FPCMsgFile','', - lisFPCMessageFile, @MacroFuncFPCMsgFile, [])); + dlgFilterFPCMessageFile, @MacroFuncFPCMsgFile, [])); GlobalMacroList.Add(TTransferMacro.Create('Params','', lisCommandLineParamsOfProgram,@MacroFuncParams,[])); GlobalMacroList.Add(TTransferMacro.Create('ProjFile','', @@ -470,7 +472,7 @@ tr('ProjSrcPath',lisProjectSrcPath); tr('ProjOutDir',lisProjectOutDir); tr('Env',lisEnvironmentVariableNameAsParameter); - tr('FPCMsgFile',lisFPCMessageFile); + tr('FPCMsgFile',dlgFilterFPCMessageFile); tr('MakeExe',lisMakeExe); tr('MakeLib',lisMakeExe); tr('Make',lisPathOfTheMakeUtility); @@ -500,6 +502,7 @@ begin // setup the external tool queue ExternalTools:=TExternalTools.Create(Self); + EnvOptsChanged; RegisterFPCParser; RegisterMakeParser; ExternalToolList.RegisterParser(TDefaultParser); @@ -650,12 +653,12 @@ if s<>'' then Result:=s; end else begin - debugln(['WARNING: [GetFPCFrontEndOptions] ignoring invalid macros in custom options for fpc frontend: "',ExtractFPCFrontEndParameters(FBuildTarget.CompilerOptions.CustomOptions),'"']); + debugln(['Warning: (lazarus) [GetFPCFrontEndOptions] ignoring invalid macros in custom options for fpc frontend: "',ExtractFPCFrontEndParameters(FBuildTarget.CompilerOptions.CustomOptions),'"']); end; end; if LazarusIDE<>nil then if not LazarusIDE.CallHandlerGetFPCFrontEndParams(Self,Result) then begin - debugln(['WARNING: TBuildManager.GetFPCFrontEndOptions: LazarusIDE.CallHandlerGetFPCFrontEndParams failed Result="',Result,'"']); + debugln(['Warning: TBuildManager.GetFPCFrontEndOptions: LazarusIDE.CallHandlerGetFPCFrontEndParams failed Result="',Result,'"']); end; Result:=UTF8Trim(Result); end; @@ -683,15 +686,8 @@ if aProject=nil then exit; Result:=aProject.RunParameterOptions.HostApplicationFilename; GlobalMacroList.SubstituteStr(Result); - if Result='' then begin - if aProject.IsVirtual then - Result:=GetTestProjectFilename(aProject) - else begin - if aProject.MainUnitID>=0 then begin - Result := - aProject.CompilerOptions.CreateTargetFilename(aProject.MainFilename); - end; - end; + if (Result='') and (aProject.MainUnitID>=0) then begin + Result := aProject.CompilerOptions.CreateTargetFilename; end; end; @@ -702,24 +698,6 @@ and (GetTargetOS = 'darwin') and Project1.UseAppBundle; end; -function TBuildManager.GetTestProjectFilename(aProject: TProject): string; -var - TestDir: String; -begin - Result:=''; - if aProject=nil then exit; - if (aProject.MainUnitID<0) then exit; - Result:=GetTestUnitFilename(aProject.MainUnitInfo); - if Result='' then exit; - Result:=aProject.CompilerOptions.CreateTargetFilename(Result); - if Result='' then exit; - if (not FilenameIsAbsolute(Result)) then begin - TestDir:=GetTestBuildDirectory; - if TestDir='' then exit; - Result:=TestDir+Result; - end; -end; - function TBuildManager.GetTestUnitFilename(AnUnitInfo: TUnitInfo): string; var TestDir: String; @@ -813,7 +791,7 @@ if Cfg=nil then exit(true); if Cfg.RealCompiler='' then begin if ConsoleVerbosity>=0 then - debugln(['PPUFilesAndCompilerMatch Compiler=',Cfg.Compiler,' RealComp=',Cfg.RealCompiler,' InPath=',Cfg.RealCompilerInPath]); + debugln(['Error: (lazarus) [PPUFilesAndCompilerMatch] Compiler=',Cfg.Compiler,' RealComp=',Cfg.RealCompiler,' InPath=',Cfg.RealCompilerInPath]); IDEMessageDialog(lisCCOErrorCaption, Format( lisCompilerDoesNotSupportTarget, [Cfg.Compiler, Cfg.TargetCPU, Cfg.TargetOS]), mtError,[mbOk]); @@ -905,7 +883,7 @@ if not IsFPCExecutable(CompilerFilename,FPCExecMsg) then begin Msg+='Environment compiler: "'+CompilerFilename+'": '+FPCExecMsg+#13; end; - debugln('WARNING: TBuildManager.RescanCompilerDefines: invalid compiler:'); + debugln('Warning: (lazarus) [TBuildManager.RescanCompilerDefines]: invalid compiler:'); debugln(Msg); if not Quiet then begin IDEMessageDialog('Error','There is no Free Pascal Compiler' @@ -1084,7 +1062,7 @@ except on E: Exception do begin if ConsoleVerbosity>=0 then - debugln(['LoadFPCDefinesCaches Error loadinf file '+aFilename+':'+E.Message]); + debugln(['Error: (lazarus) [LoadFPCDefinesCaches] Error reading file '+aFilename+':'+E.Message]); end; end; end; @@ -1110,7 +1088,7 @@ except on E: Exception do begin if ConsoleVerbosity>=0 then - debugln(['LoadFPCDefinesCaches Error loading file '+aFilename+':'+E.Message]); + debugln(['Error: (lazarus) [SaveFPCDefinesCaches] Error writing file '+aFilename+':'+E.Message]); end; end; end; @@ -1124,6 +1102,8 @@ AnUnitInfo: TUnitInfo; LFMFilename: String; IcoRes: TProjectIcon; + aTargetFilename: String; + DbgCap: String; function EditorFileHasChanged: boolean; begin @@ -1138,7 +1118,7 @@ then begin Result:=true; if ConsoleVerbosity>=0 then - DebugLn('TMainIDE.CheckIfProjectNeedsCompilation Editor Unit in project''s unit path has changed ',AProject.IDAsString,' ',AnUnitInfo.Filename); + DebugLn(DbgCap,'Editor Unit in project''s unit path has changed ',AProject.IDAsString,' ',AnUnitInfo.Filename); Note+='Editor unit "'+AnUnitInfo.Filename+'" in project''s unit search path is newer than state file:'+LineEnding +' File age="'+FileAgeToStr(FileAgeCached(AnUnitInfo.Filename))+'"'+LineEnding +' State file age="'+FileAgeToStr(StateFileAge)+'"'+LineEnding @@ -1151,7 +1131,7 @@ then begin Result:=true; if ConsoleVerbosity>=0 then - DebugLn('TMainIDE.CheckIfProjectNeedsCompilation Editor Src in project''s include path has changed ',AProject.IDAsString,' ',AnUnitInfo.Filename); + DebugLn(DbgCap,'Editor Src in project''s include path has changed ',AProject.IDAsString,' ',AnUnitInfo.Filename); Note+='Editor file "'+AnUnitInfo.Filename+'" in project''s include search path is newer than state file:'+LineEnding +' File age="'+FileAgeToStr(FileAgeCached(AnUnitInfo.Filename))+'"'+LineEnding +' State file age="'+FileAgeToStr(StateFileAge)+'"'+LineEnding @@ -1162,6 +1142,7 @@ begin NeedBuildAllFlag:=false; + DbgCap:='Hint: (lazarus) Project needs building: '; // get main source filename if not AProject.IsVirtual then begin @@ -1172,12 +1153,12 @@ end; CompilerFilename:=AProject.GetCompilerFilename; - //DebugLn(['TBuildManager.DoCheckIfProjectNeedsCompilation CompilerFilename="',CompilerFilename,'" CompilerPath="',AProject.CompilerOptions.CompilerPath,'"']); + //DebugLn([DbgCap,'CompilerFilename="',CompilerFilename,'" CompilerPath="',AProject.CompilerOptions.CompilerPath,'"']); // Note: use absolute paths, because some external tools resolve symlinked directories CompilerParams := - AProject.CompilerOptions.MakeOptionsString(SrcFilename,[ccloAbsolutePaths]) + AProject.CompilerOptions.MakeOptionsString([ccloAbsolutePaths]) + ' ' + PrepareCmdLineOption(SrcFilename); - //DebugLn('TBuildManager.DoCheckIfProjectNeedsCompilation WorkingDir="',WorkingDir,'" SrcFilename="',SrcFilename,'" CompilerFilename="',CompilerFilename,'" CompilerParams="',CompilerParams,'"'); + //DebugLn(DbgCap,'WorkingDir="',WorkingDir,'" SrcFilename="',SrcFilename,'" CompilerFilename="',CompilerFilename,'" CompilerParams="',CompilerParams,'"'); // check state file StateFilename:=AProject.GetStateFilename; @@ -1185,7 +1166,7 @@ if Result<>mrOk then exit; // read error and user aborted if not (lpsfStateFileLoaded in AProject.StateFlags) then begin if ConsoleVerbosity>=0 then - DebugLn('TBuildManager.CheckIfPackageNeedsCompilation No state file for ',AProject.IDAsString); + DebugLn(DbgCap,'No state file for ',AProject.IDAsString); Note+='State file "'+StateFilename+'" of '+AProject.IDAsString+' is missing.'+LineEnding; NeedBuildAllFlag:=true; exit(mrYes); @@ -1207,7 +1188,7 @@ if FileExistsCached(SrcFilename) and (StateFileAge<FileAgeCached(SrcFilename)) then begin if ConsoleVerbosity>=0 then - DebugLn('TBuildManager.CheckIfProjectNeedsCompilation SrcFile outdated ',AProject.IDAsString); + DebugLn(DbgCap,'SrcFile outdated ',AProject.IDAsString); Note+='Source file "'+SrcFilename+'" of '+AProject.IDAsString+' outdated:'+LineEnding +' Source age='+FileAgeToStr(FileAgeCached(SrcFilename))+LineEnding +' State file age='+FileAgeToStr(StateFileAge)+LineEnding @@ -1218,7 +1199,7 @@ // check compiler and params if CompilerFilename<>AProject.LastCompilerFilename then begin if ConsoleVerbosity>=0 then begin - DebugLn('TBuildManager.CheckIfProjectNeedsCompilation Compiler filename changed for ',AProject.IDAsString); + DebugLn(DbgCap,'Compiler filename changed for ',AProject.IDAsString); DebugLn(' Old="',AProject.LastCompilerFilename,'"'); DebugLn(' Now="',CompilerFilename,'"'); end; @@ -1230,7 +1211,7 @@ end; if not FileExistsCached(CompilerFilename) then begin if ConsoleVerbosity>=0 then begin - DebugLn('TBuildManager.CheckIfProjectNeedsCompilation Compiler file not found for ',AProject.IDAsString); + DebugLn(DbgCap,'Compiler file not found for ',AProject.IDAsString); DebugLn(' File="',CompilerFilename,'"'); end; Note+='Compiler file "'+CompilerFilename+'" not found for '+AProject.IDAsString+'.'+LineEnding; @@ -1238,7 +1219,7 @@ end; if FileAgeCached(CompilerFilename)<>AProject.LastCompilerFileDate then begin if ConsoleVerbosity>=0 then begin - DebugLn('TBuildManager.CheckIfProjectNeedsCompilation Compiler file changed for ',AProject.IDAsString); + DebugLn(DbgCap,'Compiler file changed for ',AProject.IDAsString); DebugLn(' File="',CompilerFilename,'"'); end; Note+='Compiler file "'+CompilerFilename+'" for '+AProject.IDAsString+' changed:'+LineEnding @@ -1249,7 +1230,7 @@ end; if CompilerParams<>AProject.LastCompilerParams then begin if ConsoleVerbosity>=0 then begin - DebugLn('TBuildManager.CheckIfProjectNeedsCompilation Compiler params changed for ',AProject.IDAsString); + DebugLn(DbgCap,'Compiler params changed for ',AProject.IDAsString); DebugLn(' Old="',AProject.LastCompilerParams,'"'); DebugLn(' Now="',CompilerParams,'"'); end; @@ -1266,7 +1247,7 @@ if not AProject.LastCompileComplete then begin if ConsoleVerbosity>=0 then - DebugLn('TBuildManager.CheckIfProjectNeedsCompilation Compile was incomplete for ',AProject.IDAsString); + DebugLn(DbgCap,'Compile was incomplete for ',AProject.IDAsString); Note+='Last compile was incomplete.'+LineEnding +' State file='+StateFilename+LineEnding; exit(mrYes); @@ -1286,7 +1267,7 @@ begin if (StateFileAge<FileAgeCached(AnUnitInfo.Filename)) then begin if ConsoleVerbosity>=0 then - DebugLn('TMainIDE.CheckIfProjectNeedsCompilation Src has changed ',AProject.IDAsString,' ',AnUnitInfo.Filename); + DebugLn(DbgCap,'Src has changed ',AProject.IDAsString,' ',AnUnitInfo.Filename); Note+='File "'+AnUnitInfo.Filename+'" of '+AProject.IDAsString+' is newer than state file:'+LineEnding +' File age="'+FileAgeToStr(FileAgeCached(AnUnitInfo.Filename))+'"'+LineEnding +' State file age="'+FileAgeToStr(StateFileAge)+'"'+LineEnding @@ -1298,7 +1279,7 @@ if FileExistsCached(LFMFilename) and (StateFileAge<FileAgeCached(LFMFilename)) then begin if ConsoleVerbosity>=0 then - DebugLn('TMainIDE.CheckIfProjectNeedsCompilation LFM has changed ',AProject.IDAsString,' ',LFMFilename); + DebugLn(DbgCap,'LFM has changed ',AProject.IDAsString,' ',LFMFilename); Note+='File "'+LFMFilename+'" of '+AProject.IDAsString+' is newer than state file:'+LineEnding +' File age="'+FileAgeToStr(FileAgeCached(LFMFilename))+'"'+LineEnding +' State file age="'+FileAgeToStr(StateFileAge)+'"'+LineEnding @@ -1326,7 +1307,7 @@ and FileExistsCached(IcoRes.IcoFileName) and (StateFileAge<FileAgeCached(IcoRes.IcoFileName)) then begin if ConsoleVerbosity>=0 then - debugln(['TBuildManager.DoCheckIfProjectNeedsCompilation icon has changed ', + debugln([DbgCap,'icon has changed ', AProject.IDAsString,' "',IcoRes.IcoFileName,'"']); Note+='Project''s ico file "'+IcoRes.IcoFileName+'" is newer than state file:'+LineEnding +' File age="'+FileAgeToStr(FileAgeCached(IcoRes.IcoFileName))+'"'+LineEnding @@ -1335,6 +1316,18 @@ exit(mrYes); end; + // check target file + aTargetFilename:=AProject.CompilerOptions.CreateTargetFilename; + //debugln(['TBuildManager.DoCheckIfProjectNeedsCompilation aTargetFilename=',aTargetFilename]); + if (aTargetFilename<>'') and not FileExistsCached(aTargetFilename) then begin + if ConsoleVerbosity>=0 then + debugln([DbgCap,'missing target file "',aTargetFilename,'"']); + Note+='Project''s target file "'+aTargetFilename+'" is missing.'; + exit(mrYes); + end; + + if not HasGUI then + debugln(['Hint: (lazarus) Build Project: nothing to do.']); Result:=mrNo; end; @@ -1356,7 +1349,7 @@ NewFilename: string; begin NewFilename:=AmbiguousFilename+'.ambiguous'; - if not FileProcs.RenameFileUTF8(AmbiguousFilename,NewFilename) then + if not RenameFileUTF8(AmbiguousFilename,NewFilename) then begin Result:=IDEMessageDialog(lisErrorRenamingFile, Format(lisUnableToRenameAmbiguousFileTo,[AmbiguousFilename,LineEnding,NewFilename]), @@ -1578,7 +1571,7 @@ TListSortCompare(@CompareUnitNameAndUnitFile)); if (ANode<>nil) and (not IgnoreAll) then begin if ConsoleVerbosity>=0 then - DebugLn(['TBuildManager.CheckUnitPathForAmbiguousPascalFiles CurUnitName="',CurUnitName,'" CurFilename="',CurFilename,'" OtherUnitName="',PUnitFile(ANode.Data)^.FileUnitName,'" OtherFilename="',PUnitFile(ANode.Data)^.Filename,'"']); + DebugLn(['Note: (lazarus) [TBuildManager.CheckUnitPathForAmbiguousPascalFiles] CurUnitName="',CurUnitName,'" CurFilename="',CurFilename,'" OtherUnitName="',PUnitFile(ANode.Data)^.FileUnitName,'" OtherFilename="',PUnitFile(ANode.Data)^.Filename,'"']); // pascal unit exists twice Result:=IDEQuestionDialog(lisAmbiguousUnitFound, Format(lisTheUnitExistsTwiceInTheUnitPathOfThe,[CurUnitName,ContextDescription]) @@ -1622,12 +1615,7 @@ Result := False; if Project1.MainUnitInfo = nil then Exit; - if Project1.IsVirtual then - TargetExeName := GetTestBuildDirectory + - ExtractFilename(Project1.MainUnitInfo.Filename) - else - TargetExeName := Project1.CompilerOptions.CreateTargetFilename( - Project1.MainFilename); + TargetExeName := Project1.CompilerOptions.CreateTargetFilename; if not (CreateApplicationBundle(TargetExeName, Project1.GetTitle, True) in [mrOk, mrIgnore]) then @@ -1646,6 +1634,8 @@ IsPartOfProject: boolean; begin Result:=mrOk; + SubDir:=''; + BackupFilename:=''; if not (FileExistsUTF8(Filename)) then exit; // check if file in lpi IsPartOfProject:=(Project1<>nil) @@ -1668,8 +1658,12 @@ FilePath:=ExtractFilePath(Filename); FileExt:=ExtractFileExt(Filename); FileNameOnly:=ExtractFilenameOnly(Filename); - if BackupInfo.SubDirectory<>'' then begin - SubDir:=FilePath+BackupInfo.SubDirectory; + SubDir:=BackupInfo.SubDirectory; + if BackupInfo.SubDirectory<>'' then + GlobalMacroList.SubstituteStr(SubDir); + if SubDir<>'' then begin + if not FilenameIsAbsolute(SubDir) then + SubDir:=TrimFilename(FilePath+SubDir); Result:=ForceDirectoryInteractive(SubDir,[mbRetry,mbIgnore]); if Result=mrCancel then exit; if Result=mrIgnore then Result:=mrOk; @@ -1739,8 +1733,8 @@ dec(i); while i>=1 do begin repeat - if not FileProcs.RenameFileUTF8(BackupFilename+IntToStr(i), - BackupFilename+IntToStr(i+1)) then + if not RenameFileUTF8(BackupFilename+IntToStr(i), + BackupFilename+IntToStr(i+1)) then begin ACaption:=lisRenameFileFailed; AText:=Format(lisUnableToRenameFileTo, @@ -1854,6 +1848,7 @@ Code: TCodeBuffer; begin // update project resource + // ToDo: Fix uninitialized Result. Project1.ProjResources.Regenerate(Project1.MainFileName, False, True, TestDir); AnUnitInfo := Project1.FirstPartOfProject; while AnUnitInfo<>nil do @@ -1872,11 +1867,11 @@ Code:=AnUnitInfo.Source; if (Code<>nil) and (Code.DiskEncoding<>EncodingUTF8) then begin if ConsoleVerbosity>=0 then - DebugLn(['TBuildManager.UpdateProjectAutomaticFiles fixing encoding of ',Code.Filename,' from ',Code.DiskEncoding,' to ',EncodingUTF8]); + DebugLn(['Note: (lazarus) fixing encoding of ',Code.Filename,' from ',Code.DiskEncoding,' to ',EncodingUTF8]); Code.DiskEncoding:=EncodingUTF8; if not Code.Save then begin if ConsoleVerbosity>=0 then - DebugLn(['TBuildManager.UpdateProjectAutomaticFiles failed to save file ',Code.Filename]); + DebugLn(['Note: (lazarus) [TBuildManager.UpdateProjectAutomaticFiles] failed to save file ',Code.Filename]); end; end; end; @@ -1930,21 +1925,21 @@ if Prog<>'' then begin List:=nil; try - if ConsoleVerbosity>=0 then - debugln(['TBuildManager.MacroFuncInstantFPCCache ',Prog]); - List:=RunTool(Prog,'--get-cache'); + if ConsoleVerbosity>0 then + debugln(['Hint: (lazarus) TBuildManager.MacroFuncInstantFPCCache ',Prog]); + List:=RunTool(Prog,'--get-cache','',ConsoleVerbosity<1); if (List<>nil) and (List.Count>0) then FMacroInstantFPCCache:=List[0]; List.Free; except on E: Exception do begin if ConsoleVerbosity>=0 then - debugln(['TBuildManager.MacroFuncInstantFPCCache error running '+Prog+': '+E.Message]); + debugln(['Warning: (lazarus) [TBuildManager.MacroFuncInstantFPCCache] error running '+Prog+': '+E.Message]); end; end; end; - if ConsoleVerbosity>=0 then - debugln(['TBuildManager.MacroFuncInstantFPCCache ',FMacroInstantFPCCache]); + if ConsoleVerbosity>=1 then + debugln(['Hint: (lazarus) [TBuildManager.MacroFuncInstantFPCCache] ',FMacroInstantFPCCache]); end; Result:=FMacroInstantFPCCache; end; @@ -1966,7 +1961,7 @@ else begin Result:='<Invalid parameter for macro Project:'+Param+'>'; if ConsoleVerbosity>=0 then - debugln('WARNING: TMainIDE.MacroFuncProject: ',Result); + debugln('Warning: (lazarus) [TMainIDE.MacroFuncProject]: ',Result); end; end else begin Result:=''; @@ -2450,7 +2445,7 @@ if ParseOpts.MacroValuesParsing then begin if ConsoleVerbosity>=-1 then - debugln(['TBuildManager.OnGetBuildMacroValues cycle computing macros of ',dbgsname(Options.Owner)]); + debugln(['Warning: (lazarus) [TBuildManager.OnGetBuildMacroValues] cycle computing macros of ',dbgsname(Options.Owner)]); exit; end; @@ -2466,17 +2461,17 @@ Result.Assign(Values); {$IF defined(VerboseBuildMacros) or defined(DebugLCLBaseConditionals)} if (Options.Owner is TLazPackage) and (TLazPackage(Options.Owner).Name='LCLBase') then - Result.WriteDebugReport('TPkgManager.OnGetBuildMacroValues before execute: Conditionals="'+dbgstr(Options.Conditionals),'"'); + Result.WriteDebugReport('TBuildManager.OnGetBuildMacroValues before execute: Conditionals="'+dbgstr(Options.Conditionals),'"'); {$ENDIF} if not ParseOpts.MacroValues.Execute(Options.Conditionals) then begin if ConsoleVerbosity>=0 then - debugln(['TPkgManager.OnGetBuildMacroValues Error: ',ParseOpts.MacroValues.GetErrorStr(0)]); + debugln(['Error: (lazarus) [TBuildManager.OnGetBuildMacroValues] Error: ',ParseOpts.MacroValues.GetErrorStr(0)]); debugln(Options.Conditionals); end; {$IFDEF VerboseBuildMacros} if (Options.Owner is TLazPackage) and (TLazPackage(Options.Owner).Name='LCL') then - Result.WriteDebugReport('TPkgManager.OnGetBuildMacroValues executed: '+dbgstr(Options.Conditionals),' '); + Result.WriteDebugReport('TBuildManager.OnGetBuildMacroValues executed: '+dbgstr(Options.Conditionals),' '); {$ENDIF} // the macro values of the active project take precedence @@ -2493,7 +2488,7 @@ // compute inherited values if ParseOpts.InheritedMacroValuesParsing then begin if ConsoleVerbosity>=0 then - debugln(['TPkgManager.OnGetBuildMacroValues circle computing inherited macros of ',dbgsname(Options.Owner)]); + debugln(['Error: (lazarus) [TBuildManager.OnGetBuildMacroValues] cycle detected computing inherited macros of ',dbgsname(Options.Owner)]); exit; end; ParseOpts.InheritedMacroValuesParsing:=true; @@ -2672,7 +2667,7 @@ // => invalidate macros so they now use the actual values IncreaseBuildMacroChangeStamp; if ConsoleVerbosity>0 then - debugln(['TBuildManager.SetBuildTarget OS=',fTargetOS,' CPU=',fTargetCPU,' CompQueryOptions=',CompQueryOptions,' DefaultOS=',CompilerTargetOS,' DefaultCPU=',CompilerTargetCPU]); + debugln(['Hint: (lazarus) [TBuildManager.SetBuildTarget] OS=',fTargetOS,' CPU=',fTargetCPU,' CompQueryOptions=',CompQueryOptions,' DefaultOS=',CompilerTargetOS,' DefaultCPU=',CompilerTargetCPU]); end; fTargetOS:=GetFPCTargetOS(fTargetOS); @@ -2694,7 +2689,7 @@ if FPCTargetChanged or LCLTargetChanged then begin if ConsoleVerbosity>=0 then - DebugLn(['TBuildManager.SetBuildTarget Old=',OldTargetCPU,'-',OldTargetOS,'-',OldLCLWidgetType,' New=',fTargetCPU,'-',fTargetOS,'-',fLCLWidgetType,' FPC=',FPCTargetChanged,' LCL=',LCLTargetChanged]); + DebugLn(['Hint: (lazarus) [TBuildManager.SetBuildTarget] Old=',OldTargetCPU,'-',OldTargetOS,'-',OldLCLWidgetType,' New=',fTargetCPU,'-',fTargetOS,'-',fLCLWidgetType,' FPC=',FPCTargetChanged,' LCL=',LCLTargetChanged]); end; if LCLTargetChanged then CodeToolBoss.SetGlobalValue(ExternalMacroStart+'LCLWidgetType',fLCLWidgetType); @@ -2732,7 +2727,7 @@ NewLCLWidgetSet:=LCLPlatformDirNames[BuildLazOpts.TargetPlatform]; end; if ConsoleVerbosity>=1 then - debugln(['TBuildManager.SetBuildTargetIDE OS=',NewTargetOS,' CPU=',NewTargetCPU,' WS=',NewLCLWidgetSet]); + debugln(['Hint: (lazarus) [TBuildManager.SetBuildTargetIDE] OS=',NewTargetOS,' CPU=',NewTargetCPU,' WS=',NewLCLWidgetSet]); SetBuildTarget(NewTargetOS,NewTargetCPU,NewLCLWidgetSet,smsfsBackground,false); end; diff -Nru lazarus-1.4.4+dfsg/ide/buildmodediffdlg.lfm lazarus-1.6+dfsg/ide/buildmodediffdlg.lfm --- lazarus-1.4.4+dfsg/ide/buildmodediffdlg.lfm 2011-10-03 23:14:54.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildmodediffdlg.lfm 2015-06-16 11:32:46.000000000 +0000 @@ -1,27 +1,32 @@ object BuildModeDiffDialog: TBuildModeDiffDialog - Left = 453 - Height = 316 - Top = 261 - Width = 493 + Left = 407 + Height = 409 + Top = 266 + Width = 476 + BorderIcons = [biSystemMenu, biMaximize] Caption = 'BuildModeDiffDialog' - ClientHeight = 316 - ClientWidth = 493 + ClientHeight = 409 + ClientWidth = 476 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object ButtonPanel: TButtonPanel Left = 6 - Height = 34 - Top = 276 - Width = 481 + Height = 26 + Top = 377 + Width = 464 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True OKButton.Enabled = False HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True HelpButton.Enabled = False CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True CancelButton.Enabled = False - TabOrder = 0 + TabOrder = 2 ShowButtons = [pbClose] ShowBevel = False end @@ -30,9 +35,9 @@ AnchorSideTop.Control = ModeComboBox AnchorSideTop.Side = asrCenter Left = 6 - Height = 14 - Top = 9 - Width = 52 + Height = 15 + Top = 10 + Width = 59 BorderSpacing.Left = 6 Caption = 'ModeLabel' ParentColor = False @@ -43,40 +48,36 @@ AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 64 - Height = 21 + Left = 71 + Height = 23 Top = 6 - Width = 423 + Width = 399 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - ItemHeight = 13 + ItemHeight = 15 OnChange = ModeComboBoxChange - TabOrder = 1 - Text = 'ModeComboBox' + Style = csDropDownList + TabOrder = 0 end - object DiffsGroupBox: TGroupBox - AnchorSideTop.Control = ModeComboBox - AnchorSideTop.Side = asrBottom + object DiffLabel: TLabel Left = 6 - Height = 237 + Height = 15 Top = 33 - Width = 481 + Width = 47 + Caption = 'DiffLabel' + ParentColor = False + end + object DiffTreeView: TTreeView + AnchorSideTop.Control = DiffLabel + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 317 + Top = 54 + Width = 464 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 - Caption = 'DiffsGroupBox' - ClientHeight = 219 - ClientWidth = 477 - TabOrder = 2 - object DiffTreeView: TTreeView - Left = 6 - Height = 207 - Top = 6 - Width = 465 - Align = alClient - BorderSpacing.Around = 6 - DefaultItemHeight = 15 - TabOrder = 0 - end + DefaultItemHeight = 18 + TabOrder = 1 end end diff -Nru lazarus-1.4.4+dfsg/ide/buildmodediffdlg.pas lazarus-1.6+dfsg/ide/buildmodediffdlg.pas --- lazarus-1.4.4+dfsg/ide/buildmodediffdlg.pas 2014-02-06 19:42:58.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildmodediffdlg.pas 2015-06-16 11:32:46.000000000 +0000 @@ -41,7 +41,7 @@ TBuildModeDiffDialog = class(TForm) ButtonPanel: TButtonPanel; - DiffsGroupBox: TGroupBox; + DiffLabel: TLabel; DiffTreeView: TTreeView; ModeComboBox: TComboBox; ModeLabel: TLabel; @@ -84,7 +84,7 @@ Caption:=lisBuildModeDiffDifferencesBetweenBuildModes; ModeLabel.Caption:=lisBuildModeDiffMode; - DiffsGroupBox.Caption:=lisBuildModeDiffDifferencesToOtherBuildModes; + DiffLabel.Caption:=lisBuildModeDiffDifferencesToOtherBuildModes; ButtonPanel.CloseButton.Caption:=lisBtnClose; end; diff -Nru lazarus-1.4.4+dfsg/ide/buildmodesmanager.lfm lazarus-1.6+dfsg/ide/buildmodesmanager.lfm --- lazarus-1.4.4+dfsg/ide/buildmodesmanager.lfm 2013-07-28 09:14:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildmodesmanager.lfm 2016-01-05 13:11:56.000000000 +0000 @@ -1,176 +1,184 @@ object BuildModesForm: TBuildModesForm - Left = 335 - Height = 366 - Top = 486 + Left = 396 + Height = 354 + Top = 484 Width = 612 + ActiveControl = BuildModesStringGrid + BorderIcons = [biSystemMenu] Caption = 'BuildModesForm' - ClientHeight = 366 + ClientHeight = 354 ClientWidth = 612 OnCreate = FormCreate OnDestroy = FormDestroy OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.1' - object BuildModesGroupBox: TGroupBox + LCLVersion = '1.7' + object ButtonPanel1: TButtonPanel Left = 6 - Height = 305 - Top = 6 + Height = 32 + Top = 316 Width = 600 - Align = alTop - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Around = 6 - Caption = 'BuildModesGroupBox' - ClientHeight = 286 - ClientWidth = 596 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 2 + ShowButtons = [pbOK, pbCancel, pbHelp] + ShowBevel = False + end + object ToolBar1: TToolBar + AnchorSideLeft.Control = btnCreateDefaultModes + AnchorSideTop.Control = btnCreateDefaultModes + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 28 + Top = 39 + Width = 154 + Align = alNone + BorderSpacing.Top = 6 + ButtonHeight = 26 + ButtonWidth = 26 + Caption = 'ToolBar1' + EdgeBorders = [] + EdgeInner = esNone + EdgeOuter = esNone + Images = ImageList1 + ParentShowHint = False + ShowHint = True TabOrder = 0 - object BuildModesStringGrid: TStringGrid - AnchorSideTop.Control = AddSpeedButton - AnchorSideTop.Side = asrBottom - Left = 0 - Height = 263 - Top = 23 - Width = 596 - Align = alBottom - Anchors = [akTop, akLeft, akRight, akBottom] - AutoFillColumns = True - BorderSpacing.Top = 1 - ColCount = 3 - Columns = < - item - ButtonStyle = cbsCheckboxColumn - MaxSize = 50 - Title.Caption = 'Active' - Width = 197 - end - item - ButtonStyle = cbsCheckboxColumn - MaxSize = 50 - Title.Caption = 'InSession' - Width = 197 - end - item - MaxSize = 500 - SizePriority = 100 - Title.Caption = 'Title' - Width = 198 - end> - FixedCols = 0 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll] - TabOrder = 0 - OnCheckboxToggled = BuildModesCheckboxToggled - OnDrawCell = BuildModesStringGridDrawCell - OnSelection = BuildModesStringGridSelection - OnValidateEntry = BuildModesStringGridValidateEntry - ColWidths = ( - 197 - 197 - 198 - ) - end - object AddSpeedButton: TSpeedButton - AnchorSideLeft.Control = BuildModesGroupBox - AnchorSideTop.Control = BuildModesGroupBox - Left = 0 - Height = 22 + object ToolButtonAdd: TToolButton + Left = 1 Top = 0 - Width = 23 + Caption = 'ToolButtonAdd' OnClick = AddSpeedButtonClick - ShowHint = True - ParentShowHint = False end - object DeleteSpeedButton: TSpeedButton - AnchorSideLeft.Control = AddSpeedButton - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = BuildModesGroupBox - Left = 23 - Height = 22 + object ToolButtonDelete: TToolButton + Left = 27 Top = 0 - Width = 23 + Caption = 'ToolButtonDelete' OnClick = DeleteSpeedButtonClick - ShowHint = True - ParentShowHint = False end - object MoveUpSpeedButton: TSpeedButton - AnchorSideLeft.Control = DeleteSpeedButton - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = BuildModesGroupBox - Left = 46 - Height = 22 + object ToolButtonMoveUp: TToolButton + Left = 58 Top = 0 - Width = 23 + Caption = 'ToolButtonMoveUp' OnClick = MoveUpSpeedButtonClick - ShowHint = True - ParentShowHint = False end - object MoveDownSpeedButton: TSpeedButton - AnchorSideLeft.Control = MoveUpSpeedButton - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = BuildModesGroupBox - Left = 69 - Height = 22 + object ToolButtonMoveDown: TToolButton + Left = 84 Top = 0 - Width = 23 + Caption = 'ToolButtonMoveDown' OnClick = MoveDownSpeedButtonClick - ShowHint = True - ParentShowHint = False end - object DiffSpeedButton: TSpeedButton - AnchorSideLeft.Control = MoveDownSpeedButton - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = BuildModesGroupBox - Left = 102 - Height = 22 + object ToolButton5: TToolButton + Left = 110 + Height = 26 + Top = 0 + Width = 5 + Caption = 'ToolButton5' + Style = tbsDivider + end + object ToolButtonDiff: TToolButton + Left = 115 Top = 0 - Width = 23 - BorderSpacing.Left = 10 + Caption = 'ToolButtonDiff' OnClick = DiffSpeedButtonClick - ShowHint = True - ParentShowHint = False end - object NoteLabel: TLabel - AnchorSideTop.Control = DiffSpeedButton - AnchorSideTop.Side = asrCenter - Left = 160 - Height = 15 - Top = 4 - Width = 63 - Caption = 'NoteLabel' - ParentColor = False - end - object btnCreateDefaultModes: TButton - AnchorSideTop.Control = NoteLabel - AnchorSideTop.Side = asrCenter - Left = 362 - Height = 25 - Top = -1 - Width = 228 - Anchors = [akTop, akRight] - AutoSize = True - Caption = 'Create Debug and Release modes' - OnClick = btnCreateDefaultModesClick - TabOrder = 1 + object ToolButton1: TToolButton + Left = 53 + Height = 26 + Top = 0 + Width = 5 + Caption = 'ToolButton1' + Style = tbsDivider end end - object ButtonPanel1: TButtonPanel + object NoteLabel: TLabel + AnchorSideLeft.Control = ToolBar1 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = ToolBar1 + AnchorSideTop.Side = asrCenter + Left = 166 + Height = 17 + Top = 45 + Width = 66 + BorderSpacing.Left = 6 + Caption = 'NoteLabel' + Font.Color = clMaroon + Font.Style = [fsItalic] + ParentColor = False + ParentFont = False + end + object BuildModesStringGrid: TStringGrid + AnchorSideLeft.Control = ToolBar1 + AnchorSideTop.Control = ToolBar1 + AnchorSideTop.Side = asrBottom Left = 6 - Height = 41 - Top = 319 - Width = 600 - OKButton.Name = 'OKButton' - OKButton.DefaultCaption = True - OKButton.OnClick = OKButtonClick - HelpButton.Name = 'HelpButton' - HelpButton.DefaultCaption = True - CloseButton.Name = 'CloseButton' - CloseButton.DefaultCaption = True - CancelButton.Name = 'CancelButton' - CancelButton.DefaultCaption = True - CancelButton.OnClick = CancelButtonClick + Height = 242 + Top = 73 + Width = 602 + Anchors = [akTop, akLeft, akRight, akBottom] + AutoFillColumns = True + BorderSpacing.Top = 6 + ColCount = 3 + Columns = < + item + ButtonStyle = cbsCheckboxColumn + MaxSize = 50 + Title.Caption = 'Active' + Width = 200 + end + item + ButtonStyle = cbsCheckboxColumn + MaxSize = 50 + Title.Caption = 'InSession' + Width = 200 + end + item + MaxSize = 500 + SizePriority = 100 + Title.Caption = 'Title' + Width = 200 + end> + FixedCols = 0 + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goRowSelect, goThumbTracking, goSmoothScroll] TabOrder = 1 - ShowButtons = [pbOK, pbCancel, pbHelp] + OnCheckboxToggled = BuildModesCheckboxToggled + OnDrawCell = BuildModesStringGridDrawCell + OnSelection = BuildModesStringGridSelection + OnValidateEntry = BuildModesStringGridValidateEntry + ColWidths = ( + 200 + 200 + 200 + ) + end + object btnCreateDefaultModes: TButton + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = Owner + Left = 6 + Height = 27 + Top = 6 + Width = 183 + AutoSize = True + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 + Caption = 'Create now for this project' + OnClick = btnCreateDefaultModesClick + ParentShowHint = False + ShowHint = True + TabOrder = 3 end object BuildModesPopupMenu: TPopupMenu - left = 208 - top = 88 + left = 168 + top = 260 + end + object ImageList1: TImageList + left = 240 + top = 280 end end diff -Nru lazarus-1.4.4+dfsg/ide/buildmodesmanager.pas lazarus-1.6+dfsg/ide/buildmodesmanager.pas --- lazarus-1.4.4+dfsg/ide/buildmodesmanager.pas 2015-04-21 21:36:38.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildmodesmanager.pas 2016-01-05 13:11:56.000000000 +0000 @@ -30,31 +30,34 @@ interface uses - Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, Grids, Buttons, Menus, - ButtonPanel, LCLProc, Graphics, IDEOptionsIntf, IDEDialogs, TransferMacros, - Project, CompOptsIntf, CompilerOptions, Compiler_ModeMatrix, - BuildModeDiffDlg, LazarusIDEStrConsts; + Classes, SysUtils, + Forms, Controls, Dialogs, StdCtrls, Grids, Menus, ComCtrls, ButtonPanel, LCLProc, + IDEOptionsIntf, IDEDialogs, CompOptsIntf, + TransferMacros, Project, CompilerOptions, Compiler_ModeMatrix, BuildModeDiffDlg, + EnvironmentOpts, LazarusIDEStrConsts; type { TBuildModesForm } TBuildModesForm = class(TForm) - AddSpeedButton: TSpeedButton; - DeleteSpeedButton: TSpeedButton; - DiffSpeedButton: TSpeedButton; - MoveDownSpeedButton: TSpeedButton; - MoveUpSpeedButton: TSpeedButton; - BuildModesGroupBox: TGroupBox; - BuildModesPopupMenu: TPopupMenu; - BuildModesStringGrid: TStringGrid; btnCreateDefaultModes: TButton; + BuildModesStringGrid: TStringGrid; + ImageList1: TImageList; + BuildModesPopupMenu: TPopupMenu; ButtonPanel1: TButtonPanel; NoteLabel: TLabel; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton5: TToolButton; + ToolButtonAdd: TToolButton; + ToolButtonDelete: TToolButton; + ToolButtonDiff: TToolButton; + ToolButtonMoveDown: TToolButton; + ToolButtonMoveUp: TToolButton; procedure btnCreateDefaultModesClick(Sender: TObject); - procedure BuildModesStringGridDrawCell(Sender: TObject; aCol, - aRow: Integer; aRect: TRect; aState: TGridDrawState); - procedure CancelButtonClick(Sender: TObject); + procedure BuildModesStringGridDrawCell(Sender: TObject; + aCol, aRow: Integer; aRect: TRect; {%H-}aState: TGridDrawState); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure DiffSpeedButtonClick(Sender: TObject); @@ -65,11 +68,10 @@ procedure BuildModesCheckboxToggled(Sender: TObject; aCol, aRow: Integer; aState: TCheckboxState); procedure BuildModesStringGridSelection(Sender: TObject; - aCol, aRow: Integer); + {%H-}aCol, {%H-}aRow: Integer); procedure BuildModesStringGridValidateEntry(Sender: TObject; aCol, aRow: Integer; const OldValue: string; var NewValue: String); procedure FormShow(Sender: TObject); - procedure OKButtonClick(Sender: TObject); private fActiveBuildMode: TProjectBuildMode; fBuildModes: TProjectBuildModes; @@ -105,10 +107,6 @@ implementation -const - DebugModeName = 'Debug'; - ReleaseModeName = 'Release'; - {$R *.lfm} function ShowBuildModesDlg(aShowSession: Boolean): TModalResult; @@ -147,7 +145,6 @@ begin OnSaveIDEOptionsHook(Nil, Project1.CompilerOptions); // Save changes Project1.ActiveBuildModeID := aBuildModeID; // Switch - IncreaseBuildMacroChangeStamp; OnLoadIDEOptionsHook(Nil, Project1.CompilerOptions); // Load options end; @@ -204,17 +201,21 @@ procedure TBuildModesForm.FormShow(Sender: TObject); begin // options dialog - BuildModesGroupBox.Caption:=lisBuildModes; DoShowSession; // modes FillBuildModesGrid; UpdateBuildModeButtons; - AddSpeedButton.LoadGlyphFromResourceName(HInstance, 'laz_add'); - DeleteSpeedButton.LoadGlyphFromResourceName(HInstance, 'laz_delete'); - MoveUpSpeedButton.LoadGlyphFromResourceName(HInstance, 'arrow_up'); - MoveDownSpeedButton.LoadGlyphFromResourceName(HInstance, 'arrow_down'); - DiffSpeedButton.LoadGlyphFromResourceName(HInstance, 'menu_tool_diff'); + ImageList1.AddResourceName(HInstance, 'laz_add'); + ImageList1.AddResourceName(HInstance, 'laz_delete'); + ImageList1.AddResourceName(HInstance, 'arrow_up'); + ImageList1.AddResourceName(HInstance, 'arrow_down'); + ImageList1.AddResourceName(HInstance, 'menu_tool_diff'); + ToolButtonAdd.ImageIndex:=0; + ToolButtonDelete.ImageIndex:=1; + ToolButtonMoveUp.ImageIndex:=2; + ToolButtonMoveDown.ImageIndex:=3; + ToolButtonDiff.ImageIndex:=4; end; procedure TBuildModesForm.DiffSpeedButtonClick(Sender: TObject); @@ -226,32 +227,6 @@ procedure TBuildModesForm.btnCreateDefaultModesClick(Sender: TObject); var CurMode: TProjectBuildMode; - - procedure AssignAndSetBooleans(aMode: TProjectBuildMode; IsDebug: Boolean); - begin - if CurMode<>nil then - aMode.Assign(CurMode); // clone from currently selected mode - with aMode.CompilerOptions do - begin - // Smart linking - SmartLinkUnit:=not IsDebug; - LinkSmart:=not IsDebug; - // Checks - IOChecks:=IsDebug; - RangeChecks:=IsDebug; - OverflowChecks:=IsDebug; - StackChecks:=IsDebug; - IncludeAssertionCode:=IsDebug; - // Debug flags - GenerateDebugInfo:=IsDebug; - UseExternalDbgSyms:=IsDebug; - UseHeaptrc:=IsDebug; - TrashVariables:=IsDebug; - end; - end; - -var - NewMode: TProjectBuildMode; i: Integer; begin i:=BuildModesStringGrid.Row-1; @@ -259,20 +234,8 @@ CurMode:=fBuildModes[i] else CurMode:=nil; - - // Create Debug mode - NewMode:=fBuildModes.Add(DebugModeName); - AssignAndSetBooleans(NewMode, True); - NewMode.CompilerOptions.OptimizationLevel:=1; // Optimization - NewMode.CompilerOptions.DebugInfoType:=dsDwarf2Set; // Debug - fActiveBuildMode:=NewMode; // activate Debug mode - - // Create Release mode - NewMode:=fBuildModes.Add(ReleaseModeName); - AssignAndSetBooleans(NewMode, False); - NewMode.CompilerOptions.OptimizationLevel:=3; // Optimization - NewMode.CompilerOptions.DebugInfoType:=dsAuto; // Debug - + // Create Debug and Release modes, activate Debug mode + fActiveBuildMode:=fBuildModes.CreateExtraModes(CurMode); FillBuildModesGrid; // show // select identifier BuildModesStringGrid.Col:=fModeNameCol; @@ -517,26 +480,24 @@ CurMode:=fBuildModes[i]; Identifier:=BuildModesStringGrid.Cells[fModeNameCol,i+1]; end - else + else begin CurMode:=nil; + Identifier:=''; + end; // Dialog caption - if Project1<>nil then - Caption:=Format(dlgProjectOptionsFor,[Project1.GetTitleOrName]) - + ', '+copy(Identifier,1,12) - else - Caption:='No project'; + Caption:=Format(lisBuildMode, [Identifier]); // Buttons - AddSpeedButton.Hint:=Format(lisAddNewBuildModeCopyingSettingsFrom, [Identifier]); - DeleteSpeedButton.Enabled:=(CurMode<>nil) and (fBuildModes.Count>1); - DeleteSpeedButton.Hint:=Format(lisDeleteMode, [Identifier]); - MoveUpSpeedButton.Enabled:=(CurMode<>nil) and (i>0); - MoveUpSpeedButton.Hint:=Format(lisMoveOnePositionUp, [Identifier]); - MoveDownSpeedButton.Enabled:=i<BuildModesStringGrid.RowCount-2; - MoveDownSpeedButton.Hint:=Format(lisMoveOnePositionDown, [Identifier]); - DiffSpeedButton.Hint:=lisShowDifferencesBetweenModes; + ToolButtonAdd.Hint:=Format(lisAddNewBuildModeCopyingSettingsFrom, [Identifier]); + ToolButtonDelete.Enabled:=(CurMode<>nil) and (fBuildModes.Count>1); + ToolButtonDelete.Hint:=Format(lisDeleteMode, [Identifier]); + ToolButtonMoveUp.Enabled:=(CurMode<>nil) and (i>0); + ToolButtonMoveUp.Hint:=Format(lisMoveOnePositionUp, [Identifier]); + ToolButtonMoveDown.Enabled:=i<BuildModesStringGrid.RowCount-2; + ToolButtonMoveDown.Hint:=Format(lisMoveOnePositionDown, [Identifier]); + ToolButtonDiff.Hint:=lisShowDifferencesBetweenModes; NoteLabel.Caption:=''; btnCreateDefaultModes.Caption:=lisCreateDebugAndReleaseModes; - btnCreateDefaultModes.Hint:=''; + btnCreateDefaultModes.Hint:=''; // ToDo: Figure out a good hint. btnCreateDefaultModes.Visible := (fBuildModes.Find(DebugModeName)=Nil) and (fBuildModes.Find(ReleaseModeName)=Nil); end; @@ -593,16 +554,6 @@ Result:=fBuildModes[i]; end; -procedure TBuildModesForm.OKButtonClick(Sender: TObject); -begin - ; -end; - -procedure TBuildModesForm.CancelButtonClick(Sender: TObject); -begin - ; -end; - procedure TBuildModesForm.BuildModesStringGridDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState); begin diff -Nru lazarus-1.4.4+dfsg/ide/buildprofilemanager.lfm lazarus-1.6+dfsg/ide/buildprofilemanager.lfm --- lazarus-1.4.4+dfsg/ide/buildprofilemanager.lfm 2011-10-10 21:51:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildprofilemanager.lfm 2015-05-31 11:57:12.000000000 +0000 @@ -1,29 +1,31 @@ object BuildProfileManagerForm: TBuildProfileManagerForm Left = 221 - Height = 459 + Height = 435 Top = 176 Width = 360 + BorderIcons = [biSystemMenu] Caption = 'Build Profiles' - ClientHeight = 459 + ClientHeight = 435 ClientWidth = 360 OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object ProfilesPanel: TPanel Left = 0 - Height = 459 + Height = 435 Top = 0 Width = 360 Align = alClient - ClientHeight = 459 + BevelOuter = bvNone + ClientHeight = 435 ClientWidth = 360 TabOrder = 0 object ProfilesToolBar: TToolBar - Left = 1 + Left = 0 Height = 92 - Top = 1 - Width = 358 + Top = 0 + Width = 360 AutoSize = True ButtonHeight = 46 ButtonWidth = 47 @@ -41,21 +43,21 @@ OnClick = MoveDownButtonClick end object MoveUpButton: TToolButton - Left = 252 + Left = 223 Top = 0 Caption = 'MoveUpButton' ImageIndex = 3 OnClick = MoveUpButtonClick end object EditButton: TToolButton - Left = 173 + Left = 154 Top = 0 Caption = 'EditButton' ImageIndex = 2 OnClick = EditButtonClick end object RemoveButton: TToolButton - Left = 75 + Left = 67 Top = 0 Caption = 'RemoveButton' ImageIndex = 1 @@ -69,7 +71,8 @@ OnClick = AddButtonClick end object tbSeparator: TToolButton - Left = 247 + Left = 218 + Height = 46 Top = 0 Width = 5 Caption = 'tbSeparator' @@ -77,22 +80,21 @@ end end object ProfilesListBox: TListBox - Left = 1 - Height = 327 - Top = 93 - Width = 358 + Left = 0 + Height = 305 + Top = 92 + Width = 360 Align = alClient ItemHeight = 0 OnClick = ProfilesListboxClick ScrollWidth = 354 TabOrder = 0 - TopIndex = -1 end object ButtonPanel: TButtonPanel - Left = 7 + Left = 6 Height = 26 - Top = 426 - Width = 346 + Top = 403 + Width = 348 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' diff -Nru lazarus-1.4.4+dfsg/ide/buildprofilemanager.pas lazarus-1.6+dfsg/ide/buildprofilemanager.pas --- lazarus-1.4.4+dfsg/ide/buildprofilemanager.pas 2014-11-22 18:31:41.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildprofilemanager.pas 2015-05-16 11:09:08.000000000 +0000 @@ -161,9 +161,6 @@ {$R *.lfm} -uses - AddProfileDialog; - const DefaultTargetDirectory = ''; // empty will be replaced by '$(ConfDir)/bin'; @@ -560,25 +557,21 @@ procedure TBuildProfileManagerForm.AddButtonClick(Sender: TObject); var NewProfile: TBuildLazarusProfile; + Str: string; begin - with TAddProfileForm.Create(nil) do - try - Caption:=lisLazBuildNewProf; - ProfileHeaderLabel.Caption:=lisLazBuildNewProfInfo; - if (ShowModal=mrOk) and (NameEdit.Text<>'') then begin - // Update ProfsToManage collection. - NewProfile:=TBuildLazarusProfile.Create(fProfsToManage,NameEdit.Text); - NewProfile.Assign(fProfsToManage.Current, False); - fProfsToManage.Add(NewProfile); - fProfsToManage.fCurrentIndex:=fProfsToManage.Count-1; // Select the new profile. - // Update ListBox - ProfilesListbox.Items.Add(NameEdit.Text); - ProfilesListbox.ItemIndex:=ProfilesListbox.Count-1; - EnableButtons; - end; - finally - Free; - end; + Str:= ''; + if not InputQuery(lisLazBuildNewProf, lisLazBuildNewProfInfo, Str) then Exit; + if Str='' then Exit; + + // Update ProfsToManage collection. + NewProfile:=TBuildLazarusProfile.Create(fProfsToManage,Str); + NewProfile.Assign(fProfsToManage.Current, False); + fProfsToManage.Add(NewProfile); + fProfsToManage.fCurrentIndex:=fProfsToManage.Count-1; // Select the new profile. + // Update ListBox + ProfilesListbox.Items.Add(Str); + ProfilesListbox.ItemIndex:=ProfilesListbox.Count-1; + EnableButtons; end; procedure TBuildProfileManagerForm.RemoveButtonClick(Sender: TObject); @@ -612,28 +605,24 @@ procedure TBuildProfileManagerForm.EditButtonClick(Sender: TObject); var i, SelI: integer; + Str: string; begin i:=ProfilesListbox.ItemIndex; if i<0 then exit; - with TAddProfileForm.Create(nil) do - try - Caption:=lisLazBuildRenameProf; - ProfileHeaderLabel.Caption:=lisLazBuildRenameProfInfo; - NameEdit.Text:=ProfilesListbox.Items[i]; - if (ShowModal=mrOk) and (NameEdit.Text<>'') then begin - // Update ProfsToManage collection. - fProfsToManage[i].fName:=NameEdit.Text; - // Update selected list. - SelI:=fProfsToManage.Selected.IndexOf(ProfilesListbox.Items[i]); - if SelI>-1 then - fProfsToManage.Selected[SelI]:=NameEdit.Text; - // Update ListBox - ProfilesListbox.Items[i]:=NameEdit.Text; - EnableButtons; - end; - finally - Free; - end; + + Str:= ProfilesListbox.Items[i]; + if not InputQuery(lisLazBuildRenameProf, lisLazBuildRenameProfInfo, Str) then Exit; + if Str='' then Exit; + + // Update ProfsToManage collection. + fProfsToManage[i].fName:=Str; + // Update selected list. + SelI:=fProfsToManage.Selected.IndexOf(ProfilesListbox.Items[i]); + if SelI>-1 then + fProfsToManage.Selected[SelI]:=Str; + // Update ListBox + ProfilesListbox.Items[i]:=Str; + EnableButtons; end; procedure TBuildProfileManagerForm.MoveUpButtonClick(Sender: TObject); diff -Nru lazarus-1.4.4+dfsg/ide/buildprojectdlg.lfm lazarus-1.6+dfsg/ide/buildprojectdlg.lfm --- lazarus-1.4.4+dfsg/ide/buildprojectdlg.lfm 2011-10-03 23:14:54.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildprojectdlg.lfm 2015-09-18 22:47:47.000000000 +0000 @@ -3,6 +3,7 @@ Height = 492 Top = 250 Width = 537 + BorderIcons = [biSystemMenu, biMaximize] Caption = 'CleanBuildProjectDialog' ClientHeight = 492 ClientWidth = 537 @@ -11,18 +12,23 @@ OnDestroy = FormDestroy OnResize = FormResize Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object ButtonPanel1: TButtonPanel Left = 6 - Height = 34 - Top = 452 + Height = 37 + Top = 449 Width = 525 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True OKButton.OnClick = ButtonPanel1OKButtonClick HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' - TabOrder = 0 + CancelButton.DefaultCaption = True + TabOrder = 10 ShowButtons = [pbOK, pbCancel, pbHelp] end object ProjOutCheckBox: TCheckBox @@ -30,72 +36,72 @@ AnchorSideTop.Control = ProjOutMaskComboBox AnchorSideTop.Side = asrCenter Left = 10 - Height = 17 + Height = 24 Top = 12 - Width = 102 + Width = 145 BorderSpacing.Left = 10 Caption = 'ProjOutCheckBox' Checked = True OnChange = ProjOutCheckBoxChange State = cbChecked - TabOrder = 1 + TabOrder = 0 end object ProjSrcCheckBox: TCheckBox AnchorSideLeft.Control = ProjOutCheckBox AnchorSideTop.Control = ProjSrcMaskComboBox AnchorSideTop.Side = asrCenter Left = 10 - Height = 17 - Top = 39 - Width = 99 + Height = 24 + Top = 47 + Width = 141 Caption = 'ProjSrcCheckBox' Checked = True OnChange = ProjSrcCheckBoxChange State = cbChecked - TabOrder = 2 + TabOrder = 1 end object PkgOutCheckBox: TCheckBox AnchorSideLeft.Control = ProjOutCheckBox AnchorSideTop.Control = PkgOutMaskComboBox AnchorSideTop.Side = asrCenter Left = 10 - Height = 17 - Top = 66 - Width = 100 + Height = 24 + Top = 82 + Width = 142 Caption = 'PkgOutCheckBox' Checked = True OnChange = PkgOutCheckBoxChange State = cbChecked - TabOrder = 3 + TabOrder = 2 end object PkgSrcCheckBox: TCheckBox AnchorSideLeft.Control = ProjOutCheckBox AnchorSideTop.Control = PkgSrcMaskComboBox AnchorSideTop.Side = asrCenter Left = 10 - Height = 17 - Top = 93 - Width = 97 + Height = 24 + Top = 117 + Width = 138 Caption = 'PkgSrcCheckBox' Checked = True OnChange = PkgSrcCheckBoxChange State = cbChecked - TabOrder = 4 + TabOrder = 3 end object ProjOutMaskComboBox: TComboBox AnchorSideTop.Control = Owner - AnchorSideRight.Control = ButtonPanel1 + AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 241 - Height = 21 + Left = 232 + Height = 29 Top = 10 - Width = 280 + Width = 299 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 10 - BorderSpacing.Right = 10 - ItemHeight = 13 + BorderSpacing.Right = 6 + ItemHeight = 0 OnChange = ProjOutMaskComboBoxChange - TabOrder = 9 + TabOrder = 4 Text = 'ProjOutMaskComboBox' end object ProjSrcMaskComboBox: TComboBox @@ -104,13 +110,13 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ProjOutMaskComboBox AnchorSideRight.Side = asrBottom - Left = 241 - Height = 21 - Top = 37 - Width = 280 + Left = 232 + Height = 29 + Top = 45 + Width = 299 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 - ItemHeight = 13 + ItemHeight = 0 OnChange = ProjOutMaskComboBoxChange TabOrder = 5 Text = 'ProjSrcMaskComboBox' @@ -121,13 +127,13 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ProjOutMaskComboBox AnchorSideRight.Side = asrBottom - Left = 241 - Height = 21 - Top = 64 - Width = 280 + Left = 232 + Height = 29 + Top = 80 + Width = 299 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 - ItemHeight = 13 + ItemHeight = 0 OnChange = ProjOutMaskComboBoxChange TabOrder = 6 Text = 'PkgOutMaskComboBox' @@ -138,61 +144,61 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ProjOutMaskComboBox AnchorSideRight.Side = asrBottom - Left = 241 - Height = 21 - Top = 91 - Width = 280 + Left = 232 + Height = 29 + Top = 115 + Width = 299 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 - ItemHeight = 13 + ItemHeight = 0 OnChange = ProjOutMaskComboBoxChange TabOrder = 7 Text = 'PkgSrcMaskComboBox' end - object PreviewGroupBox: TGroupBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = PkgSrcMaskComboBox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = DeleteButton - Left = 6 - Height = 295 - Top = 122 - Width = 525 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Top = 4 - BorderSpacing.Around = 6 - Caption = 'PreviewGroupBox' - ClientHeight = 277 - ClientWidth = 521 - TabOrder = 8 - object FilesTreeView: TTreeView - Left = 0 - Height = 277 - Top = 0 - Width = 521 - Align = alClient - DefaultItemHeight = 15 - ReadOnly = True - TabOrder = 0 - OnMouseDown = FilesTreeViewMouseDown - Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] - end - end object DeleteButton: TButton - AnchorSideRight.Control = Owner + AnchorSideRight.Control = ProjOutMaskComboBox AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ButtonPanel1 - Left = 442 - Height = 23 - Top = 423 - Width = 89 + Left = 429 + Height = 29 + Top = 414 + Width = 102 Anchors = [akRight, akBottom] AutoSize = True - BorderSpacing.Around = 6 + BorderSpacing.Top = 6 + BorderSpacing.Bottom = 6 Caption = 'DeleteButton' OnClick = DeleteButtonClick - TabOrder = 10 + TabOrder = 9 + end + object FilesTreeView: TTreeView + AnchorSideLeft.Control = PreviewLabel + AnchorSideTop.Control = PreviewLabel + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ProjOutMaskComboBox + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = DeleteButton + Left = 10 + Height = 235 + Top = 173 + Width = 521 + Anchors = [akTop, akLeft, akRight, akBottom] + ReadOnly = True + TabOrder = 8 + OnMouseDown = FilesTreeViewMouseDown + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] + end + object PreviewLabel: TLabel + AnchorSideLeft.Control = PkgSrcCheckBox + AnchorSideTop.Control = PkgSrcMaskComboBox + AnchorSideTop.Side = asrBottom + Left = 10 + Height = 17 + Top = 150 + Width = 90 + BorderSpacing.Top = 6 + BorderSpacing.Bottom = 6 + Caption = 'PreviewLabel' + ParentColor = False end end diff -Nru lazarus-1.4.4+dfsg/ide/buildprojectdlg.pas lazarus-1.6+dfsg/ide/buildprojectdlg.pas --- lazarus-1.4.4+dfsg/ide/buildprojectdlg.pas 2014-06-15 11:52:01.000000000 +0000 +++ lazarus-1.6+dfsg/ide/buildprojectdlg.pas 2015-09-18 22:47:47.000000000 +0000 @@ -28,15 +28,16 @@ interface uses - Classes, SysUtils, Math, AVL_Tree, FileProcs, Forms, Controls, Graphics, - Dialogs, ButtonPanel, ExtCtrls, StdCtrls, ComCtrls, Masks, LCLIntf, + Classes, SysUtils, Math, AVL_Tree, Forms, Controls, + Dialogs, ButtonPanel, StdCtrls, ComCtrls, Masks, LCLIntf, + FileProcs, LazFileUtils, LazFileCache, LazUtilities, // codetools CodeToolManager, DirectoryCacher, CodeToolsStructs, // IDEIntf IDEDialogs, IDEImagesIntf, PackageIntf, // IDE PackageDefs, PackageSystem, InputHistory, LazarusIDEStrConsts, Project, - DialogProcs, IDEProcs; + IDEProcs; type TBuildProjectDialogItem = class @@ -54,7 +55,7 @@ PkgOutMaskComboBox: TComboBox; PkgSrcCheckBox: TCheckBox; PkgSrcMaskComboBox: TComboBox; - PreviewGroupBox: TGroupBox; + PreviewLabel: TLabel; FilesTreeView: TTreeView; ProjOutCheckBox: TCheckBox; ProjOutMaskComboBox: TComboBox; @@ -64,10 +65,11 @@ procedure DeleteButtonClick(Sender: TObject); procedure FilesTreeViewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormResize(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); procedure PkgOutCheckBoxChange(Sender: TObject); procedure PkgSrcCheckBoxChange(Sender: TObject); procedure ProjOutCheckBoxChange(Sender: TObject); @@ -78,7 +80,7 @@ ImageIndexFile: Integer; FIdleConnected: boolean; procedure SetIdleConnected(const AValue: boolean); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); private FProject: TProject; FUpdateNeeded: boolean; @@ -126,7 +128,7 @@ ProjSrcCheckBox.Caption:=lisProjectSourceDirectories; PkgOutCheckBox.Caption:=lisPackageOutputDirectories; PkgSrcCheckBox.Caption:=lisPackageSourceDirectories; - PreviewGroupBox.Caption:=lisTheseFilesWillBeDeleted; + PreviewLabel.Caption:=lisTheseFilesWillBeDeleted; ButtonPanel1.OKButton.Caption:=lisCleanUpAndBuild; ButtonPanel1.HelpButton.Caption:=lisMenuHelp; @@ -214,6 +216,11 @@ ProjOutMaskComboBox.Left:=r+10; end; +procedure TCleanBuildProjectDialog.HelpButtonClick(Sender: TObject); +begin + OpenUrl('http://wiki.freepascal.org/IDE_Window:_Clean_up_build_files_dialog'); +end; + procedure TCleanBuildProjectDialog.PkgOutCheckBoxChange(Sender: TObject); begin PkgOutMaskComboBox.Enabled:=PkgOutCheckBox.Checked; diff -Nru lazarus-1.4.4+dfsg/ide/charactermapdlg.lfm lazarus-1.6+dfsg/ide/charactermapdlg.lfm --- lazarus-1.4.4+dfsg/ide/charactermapdlg.lfm 2011-10-03 23:14:54.000000000 +0000 +++ lazarus-1.6+dfsg/ide/charactermapdlg.lfm 2015-11-23 17:15:44.000000000 +0000 @@ -1,30 +1,35 @@ object CharacterMapDialog: TCharacterMapDialog Left = 370 - Height = 432 + Height = 477 Top = 128 - Width = 484 + Width = 593 ActiveControl = PageControl1 BorderStyle = bsSizeToolWin Caption = 'CharacterMapDialog' - ClientHeight = 432 - ClientWidth = 484 + ClientHeight = 477 + ClientWidth = 593 FormStyle = fsStayOnTop KeyPreview = True OnCreate = FormCreate + OnKeyDown = FormKeyDown OnShow = FormShow Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object ButtonPanel: TButtonPanel Left = 6 - Height = 32 - Top = 394 - Width = 472 + Height = 29 + Top = 442 + Width = 581 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True OKButton.Enabled = False HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True HelpButton.OnClick = HelpButtonClick CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True CancelButton.Enabled = False TabOrder = 0 ShowButtons = [pbClose, pbHelp] @@ -37,9 +42,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ButtonPanel Left = 6 - Height = 382 + Height = 430 Top = 6 - Width = 472 + Width = 581 ActivePage = TabSheet1 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 @@ -47,8 +52,8 @@ TabOrder = 1 object TabSheet1: TTabSheet Caption = 'ANSI' - ClientHeight = 359 - ClientWidth = 468 + ClientHeight = 399 + ClientWidth = 577 object CharInfoLabel: TLabel AnchorSideLeft.Control = TabSheet1 AnchorSideTop.Side = asrBottom @@ -57,9 +62,9 @@ AnchorSideBottom.Control = TabSheet1 AnchorSideBottom.Side = asrBottom Left = 6 - Height = 14 - Top = 339 - Width = 456 + Height = 17 + Top = 376 + Width = 565 Anchors = [akLeft, akRight, akBottom] BorderSpacing.Around = 6 Caption = 'CharInfoLabel' @@ -72,9 +77,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = CharInfoLabel Left = 0 - Height = 333 + Height = 370 Top = 0 - Width = 468 + Width = 577 Anchors = [akTop, akLeft, akRight, akBottom] ColCount = 17 DefaultColWidth = 16 @@ -88,16 +93,16 @@ end object TabSheet2: TTabSheet Caption = 'Unicode' - ClientHeight = 359 - ClientWidth = 468 + ClientHeight = 399 + ClientWidth = 577 object UnicodeCharInfoLabel: TLabel AnchorSideLeft.Control = Owner AnchorSideTop.Control = cbUniRange AnchorSideTop.Side = asrCenter Left = 6 - Height = 14 - Top = 336 - Width = 124 + Height = 17 + Top = 369 + Width = 150 BorderSpacing.Around = 6 Caption = 'UnicodeCharInfoLabel' ParentColor = False @@ -109,9 +114,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = cbUniRange Left = 0 - Height = 327 + Height = 356 Top = 0 - Width = 468 + Width = 577 Anchors = [akTop, akLeft, akRight, akBottom] ColCount = 16 DefaultColWidth = 16 @@ -129,12 +134,13 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = TabSheet2 AnchorSideBottom.Side = asrBottom - Left = 250 - Height = 20 - Top = 333 + Left = 359 + Height = 31 + Top = 362 Width = 212 Anchors = [akRight, akBottom] BorderSpacing.Around = 6 + DropDownCount = 25 ItemHeight = 0 OnSelect = cbUniRangeSelect Style = csDropDownList diff -Nru lazarus-1.4.4+dfsg/ide/charactermapdlg.pas lazarus-1.6+dfsg/ide/charactermapdlg.pas --- lazarus-1.4.4+dfsg/ide/charactermapdlg.pas 2012-02-19 15:50:48.000000000 +0000 +++ lazarus-1.6+dfsg/ide/charactermapdlg.pas 2015-11-23 18:04:41.000000000 +0000 @@ -38,9 +38,8 @@ uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Buttons, - StdCtrls, LCLType, LCLProc, LCLUnicodeData, GraphType, Grids, ButtonPanel, - ComCtrls, - IDEHelpIntf, + StdCtrls, LCLType, LCLUnicodeData, GraphType, Grids, ButtonPanel, ComCtrls, + IDEHelpIntf, LazUTF8, LazarusIDEStrConsts, EditorOptions, EnvironmentOpts; type @@ -59,15 +58,16 @@ TabSheet1: TTabSheet; TabSheet2: TTabSheet; procedure cbUniRangeSelect(Sender: TObject); + procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure HelpButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure StringGridKeyPress(Sender: TObject; var Key: char); procedure StringGridMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, + {%H-}Shift: TShiftState; X, Y: Integer); + procedure StringGrid1MouseMove(Sender: TObject; {%H-}Shift: TShiftState; X, Y: Integer); - procedure StringGrid2MouseMove(Sender: TObject; Shift: TShiftState; X, + procedure StringGrid2MouseMove(Sender: TObject; {%H-}Shift: TShiftState; X, Y: Integer); private FOnInsertCharacter: TOnInsertCharacterEvent; @@ -141,6 +141,17 @@ StringGrid2.AutoSizeColumns; end; +procedure TCharacterMapDialog.FormKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if Key=VK_ESCAPE then + begin + Close; + Key:= 0; + Exit + end; +end; + procedure TCharacterMapDialog.FormShow(Sender: TObject); var i:integer; begin @@ -179,6 +190,7 @@ sg := Sender as TStringGrid; if (Button = mbLeft) and (sg.MouseToGridZone(X, Y) = gzNormal) then begin + Col:=0; Row:=0; sg.MouseToCell(X, Y, Col, Row); if (sg.Cells[Col, Row] <> '') and (Assigned(OnInsertCharacter)) then OnInsertCharacter(sg.Cells[Col, Row]); @@ -193,6 +205,7 @@ begin if StringGrid1.MouseToGridZone(X, Y) = gzNormal then begin + Col:=0; Row:=0; StringGrid1.MouseToCell(X, Y, Col, Row); if StringGrid1.Cells[Col, Row] <> '' then begin @@ -217,6 +230,7 @@ begin if StringGrid2.MouseToGridZone(X, Y) = gzNormal then begin + Col:=0; Row:=0; StringGrid2.MouseToCell(X, Y, Col, Row); S:=UnicodeBlocks[cbUniRange.ItemIndex].S+(Col)+(Row*16); tmp:=UnicodeToUTF8(S); diff -Nru lazarus-1.4.4+dfsg/ide/checkcompileropts.lfm lazarus-1.6+dfsg/ide/checkcompileropts.lfm --- lazarus-1.4.4+dfsg/ide/checkcompileropts.lfm 2012-03-30 14:16:28.000000000 +0000 +++ lazarus-1.6+dfsg/ide/checkcompileropts.lfm 2015-11-23 17:15:51.000000000 +0000 @@ -1,79 +1,27 @@ object CheckCompilerOptsDlg: TCheckCompilerOptsDlg - Left = 322 - Height = 307 - Top = 220 + Left = 653 + Height = 389 + Top = 418 Width = 624 BorderIcons = [biSystemMenu] Caption = 'CheckCompilerOptsDlg' - ClientHeight = 307 + ClientHeight = 389 ClientWidth = 624 Position = poScreenCenter - LCLVersion = '0.9.31' - object OutputGroupBox: TGroupBox - Left = 6 - Height = 145 - Top = 116 - Width = 612 - Align = alClient - Anchors = [akBottom] - BorderSpacing.Left = 6 - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 - Caption = 'Output' - ClientHeight = 129 - ClientWidth = 608 - TabOrder = 0 - object OutputTreeView: TTreeView - Left = 0 - Height = 129 - Top = 0 - Width = 608 - Align = alClient - DefaultItemHeight = 16 - PopupMenu = OutputPopupMenu - ReadOnly = True - TabOrder = 0 - Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] - end - end - object TestGroupbox: TGroupBox - Left = 6 - Height = 105 - Top = 6 - Width = 612 - Align = alTop - Anchors = [akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - Caption = 'Test' - ClientHeight = 89 - ClientWidth = 608 - TabOrder = 1 - object TestMemo: TMemo - Left = 6 - Height = 77 - Top = 6 - Width = 596 - Align = alClient - BorderSpacing.Around = 6 - ScrollBars = ssAutoBoth - TabOrder = 0 - end - end + LCLVersion = '1.5' object Splitter1: TSplitter Cursor = crVSplit Left = 0 Height = 5 - Top = 111 + Top = 174 Width = 624 Align = alTop ResizeAnchor = akTop end object ButtonPanel: TButtonPanel Left = 6 - Height = 34 - Top = 267 + Height = 29 + Top = 354 Width = 612 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -87,9 +35,51 @@ ShowButtons = [pbClose] ShowBevel = False end + object OutputTreeView: TTreeView + Left = 6 + Height = 140 + Top = 208 + Width = 612 + Align = alClient + BorderSpacing.Around = 6 + PopupMenu = OutputPopupMenu + ReadOnly = True + TabOrder = 2 + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] + end + object TestMemo: TMemo + Left = 6 + Height = 139 + Top = 29 + Width = 612 + Align = alTop + BorderSpacing.Around = 6 + ScrollBars = ssAutoBoth + TabOrder = 0 + end + object LabelTest: TLabel + Left = 6 + Height = 17 + Top = 6 + Width = 612 + Align = alTop + BorderSpacing.Around = 6 + Caption = 'LabelTest' + ParentColor = False + end + object LabelOutput: TLabel + Left = 6 + Height = 17 + Top = 185 + Width = 612 + Align = alTop + BorderSpacing.Around = 6 + Caption = 'LabelOutput' + ParentColor = False + end object OutputPopupMenu: TPopupMenu - left = 160 - top = 175 + left = 472 + top = 392 object CopyOutputMenuItem: TMenuItem Caption = 'CopyOutputMenuItem' OnClick = CopyOutputMenuItemClick diff -Nru lazarus-1.4.4+dfsg/ide/checkcompileropts.pas lazarus-1.6+dfsg/ide/checkcompileropts.pas --- lazarus-1.4.4+dfsg/ide/checkcompileropts.pas 2014-07-20 19:50:17.000000000 +0000 +++ lazarus-1.6+dfsg/ide/checkcompileropts.pas 2015-12-17 14:37:15.000000000 +0000 @@ -32,17 +32,16 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, FileUtil, - Clipbrd, StdCtrls, Buttons, Process, AVL_Tree, AsyncProcess, Menus, ExtCtrls, - UTF8Process, ButtonPanel, ComCtrls, + Classes, SysUtils, Forms, Controls, Dialogs, FileUtil, + Clipbrd, StdCtrls, AVL_Tree, Menus, ExtCtrls, ButtonPanel, ComCtrls, // codetools - KeywordFuncLists, CodeToolManager, FileProcs, DefineTemplates, - CodeToolsStructs, + CodeToolManager, FileProcs, LazFileCache, LazFileUtils, LazUTF8, + DefineTemplates, CodeToolsStructs, // IDEIntf ProjectIntf, MacroIntf, IDEExternToolIntf, LazIDEIntf, IDEDialogs, PackageIntf, IDEMsgIntf, // IDE - Project, PackageSystem, ExtToolEditDlg, IDEProcs, EnvironmentOpts, + Project, PackageSystem, IDEProcs, LazarusIDEStrConsts, PackageDefs, CompilerOptions, TransferMacros, LazConf; type @@ -73,9 +72,9 @@ OutputTreeView: TTreeView; Splitter1: TSplitter; TestMemo: TMemo; - TestGroupbox: TGroupBox; - OutputGroupBox: TGroupBox; - procedure ApplicationOnIdle(Sender: TObject; var Done: Boolean); + LabelTest: TLabel; + LabelOutput: TLabel; + procedure ApplicationOnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure CopyOutputMenuItemClick(Sender: TObject); private FIdleConnected: boolean; @@ -263,7 +262,7 @@ CompilerFiles: TStrings; begin FTest:=cotCheckCompilerExe; - TestGroupbox.Caption:=dlgCCOTestCheckingCompiler; + LabelTest.Caption:=dlgCCOTestCheckingCompiler; try CheckIfFileIsExecutable(CompilerFilename); except @@ -277,7 +276,7 @@ // check if there are several compilers in path CompilerFiles:=SearchAllFilesInPath(GetDefaultCompilerFilename,'', - GetEnvironmentVariableUTF8('PATH'),':',[sffDontSearchInBasePath]); + GetEnvironmentVariableUTF8('PATH'),PathSeparator,[sffDontSearchInBasePath]); try ResolveLinksInFileList(CompilerFiles,false); RemoveDoubles(CompilerFiles); @@ -305,7 +304,7 @@ begin // compile bogus file FTest:=cotCompileBogusFiles; - TestGroupbox.Caption:=dlgCCOTestCompilingEmptyFile; + LabelTest.Caption:=dlgCCOTestCompilingEmptyFile; // get Test directory TestDir:=AppendPathDelim(LazarusIDE.GetTestBuildDirectory); @@ -327,7 +326,7 @@ end; try // create compiler command line options - CmdLineParams:=Options.MakeOptionsString(BogusFilename, + CmdLineParams:=Options.MakeOptionsString( [ccloAddVerboseAll,ccloDoNotAppendOutFileOption,ccloAbsolutePaths]) +' '+BogusFilename; CompileTool:=ExternalToolList.Add(dlgCCOTestToolCompilingEmptyFile); @@ -419,7 +418,7 @@ CfgCount: Integer; begin FTest:=cotCheckCompilerConfig; - TestGroupbox.Caption:=dlgCCOTestCheckingCompilerConfig; + LabelTest.Caption:=dlgCCOTestCheckingCompilerConfig; CfgCount:=0; for i:=0 to CfgCache.ConfigFiles.Count-1 do begin @@ -501,16 +500,21 @@ begin FTest:=cotCheckMissingFPCPPUs; - TestGroupbox.Caption:=dlgCCOTestMissingPPU; + LabelTest.Caption:=dlgCCOTestMissingPPU; Result:=mrCancel; - // rtl + if not Check('system',ccmlError) then exit; - if not Check('sysutils',ccmlError) then exit; - if not Check('classes',ccmlError) then exit; - // fcl - if not Check('avl_tree',ccmlError) then exit; - if not Check('zstream',ccmlError) then exit; + if not Check('objpas',ccmlError) then exit; + + if CfgCache.TargetCPU='jvm' then begin + if not Check('uuchar',ccmlError) then exit; + end else begin + if not Check('sysutils',ccmlError) then exit; + if not Check('classes',ccmlError) then exit; + if not Check('avl_tree',ccmlError) then exit; + if not Check('zstream',ccmlError) then exit; + end; Result:=mrOk; end; @@ -556,7 +560,7 @@ if CfgCache.Units=nil then exit(mrOK); FTest:=cotCheckCompilerDate; - TestGroupbox.Caption:=dlgCCOTestCompilerDate; + LabelTest.Caption:=dlgCCOTestCompilerDate; Result:=mrCancel; @@ -668,7 +672,7 @@ WarnedDirectories: TStringList; begin FTest:=cotCheckFPCUnitPathsContainSources; - TestGroupbox.Caption:=dlgCCOTestSrcInPPUPaths; + LabelTest.Caption:=dlgCCOTestSrcInPPUPaths; Result:=mrCancel; WarnedDirectories:=TStringList.Create; @@ -953,7 +957,7 @@ CompilerFiles.Free; CompileTool.Free; FTest:=cotNone; - TestGroupbox.Caption:=dlgCCOTest; + LabelTest.Caption:=dlgCCOTest; FPC_PPUs.Free; Target_PPUs.Free; end; @@ -965,8 +969,8 @@ inherited Create(TheOwner); IdleConnected:=true; Caption:=dlgCCOCaption; - TestGroupbox.Caption:=dlgCCOTest; - OutputGroupBox.Caption:=dlgCCOResults; + LabelTest.Caption:=dlgCCOTest; + LabelOutput.Caption:=dlgCCOResults; CopyOutputMenuItem.Caption:=lisCCOCopyOutputToCliboard; end; diff -Nru lazarus-1.4.4+dfsg/ide/chooseclasssectiondlg.lfm lazarus-1.6+dfsg/ide/chooseclasssectiondlg.lfm --- lazarus-1.4.4+dfsg/ide/chooseclasssectiondlg.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/chooseclasssectiondlg.lfm 2015-11-04 11:21:19.000000000 +0000 @@ -0,0 +1,45 @@ +object ChooseClassSectionDialog: TChooseClassSectionDialog + Left = 460 + Height = 177 + Top = 220 + Width = 252 + BorderStyle = bsDialog + Caption = 'ChooseClassSectionDialog' + ClientHeight = 177 + ClientWidth = 252 + KeyPreview = True + OnKeyPress = FormKeyPress + Position = poScreenCenter + LCLVersion = '1.5' + object SectionsListBox: TListBox + Left = 10 + Height = 117 + Top = 10 + Width = 232 + Align = alClient + BorderSpacing.Left = 10 + BorderSpacing.Top = 10 + BorderSpacing.Right = 10 + BorderSpacing.Bottom = 10 + ItemHeight = 0 + OnDblClick = SectionsListBoxDblClick + OnKeyPress = SectionsListBoxKeyPress + TabOrder = 0 + end + object ButtonPanel: TButtonPanel + Left = 6 + Height = 34 + Top = 137 + Width = 240 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 1 + ShowButtons = [pbOK] + end +end diff -Nru lazarus-1.4.4+dfsg/ide/chooseclasssectiondlg.pas lazarus-1.6+dfsg/ide/chooseclasssectiondlg.pas --- lazarus-1.4.4+dfsg/ide/chooseclasssectiondlg.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/chooseclasssectiondlg.pas 2015-10-29 11:15:01.000000000 +0000 @@ -0,0 +1,127 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Ondrej Pokorny + + Abstract: + A simple dialog to select class section. +} +unit ChooseClassSectionDlg; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + ButtonPanel, SourceChanger, LazarusIDEStrConsts, EnvironmentOpts; + +type + //this dialog can easily be reused. + //for now it is used only in the method event assignment code creation + + TChooseClassSectionDialog = class(TForm) + ButtonPanel: TButtonPanel; + SectionsListBox: TListBox; + procedure FormKeyPress(Sender: TObject; var Key: char); + procedure SectionsListBoxDblClick(Sender: TObject); + procedure SectionsListBoxKeyPress(Sender: TObject; var Key: char); + protected + procedure DoCreate; override; + public + + end; + +function ChooseClassSectionDialog(const ACaption: string; ADefault: TInsertClassSectionResult; + out Section: TInsertClassSectionResult): Boolean; +function ShowEventMethodSectionDialog(out Section: TInsertClassSectionResult): Boolean; + +implementation + +{$R *.lfm} + +function ChooseClassSectionDialog(const ACaption: string; ADefault: TInsertClassSectionResult; + out Section: TInsertClassSectionResult): Boolean; +var + Dlg: TChooseClassSectionDialog; +begin + Dlg := TChooseClassSectionDialog.Create(Application); + try + Dlg.Caption := ACaption; + Dlg.PopupMode := pmAuto; + if Ord(ADefault) < Dlg.SectionsListBox.Count then + Dlg.SectionsListBox.ItemIndex := Ord(ADefault) + else + Dlg.SectionsListBox.ItemIndex := 0; + Result := Dlg.ShowModal = mrOK; + if Result then + Section := TInsertClassSectionResult(Dlg.SectionsListBox.ItemIndex) + else + Section := icsrPrivate; + finally + Dlg.Free; + end; +end; + +function ShowEventMethodSectionDialog(out Section: TInsertClassSectionResult): Boolean; +begin + Result := ChooseClassSectionDialog(lisChooseClassSectionDlgForMethodCaption, + EnvironmentOptions.LastEventMethodSectionPrompt, Section); + if Result then + EnvironmentOptions.LastEventMethodSectionPrompt := Section; +end; + +{ TChooseClassSectionDialog } + +procedure TChooseClassSectionDialog.DoCreate; +begin + inherited DoCreate; + + Assert(Ord(High(TInsertClassSectionResult)) = 3, 'TChooseClassSectionDialog.DoCreate: High(TInsertClassSectionResult) <> 3'); + SectionsListBox.Items.Add(lisPrivate); + SectionsListBox.Items.Add(lisProtected); + SectionsListBox.Items.Add(lisEMDPublic); + SectionsListBox.Items.Add(lisEMDPublished); +end; + +procedure TChooseClassSectionDialog.FormKeyPress(Sender: TObject; + var Key: char); +begin + if Key = #27 then + ModalResult := mrCancel; +end; + +procedure TChooseClassSectionDialog.SectionsListBoxDblClick(Sender: TObject); +begin + ModalResult := mrOK; +end; + +procedure TChooseClassSectionDialog.SectionsListBoxKeyPress( + Sender: TObject; var Key: char); +begin + if Key = #13 then + ModalResult := mrOK; +end; + +initialization + ShowEventMethodSectionPrompt := @ShowEventMethodSectionDialog; + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/cleandirdlg.lfm lazarus-1.6+dfsg/ide/cleandirdlg.lfm --- lazarus-1.4.4+dfsg/ide/cleandirdlg.lfm 2012-02-18 20:02:52.000000000 +0000 +++ lazarus-1.6+dfsg/ide/cleandirdlg.lfm 2015-06-05 17:10:53.000000000 +0000 @@ -1,37 +1,37 @@ object CleanDirectoryDialog: TCleanDirectoryDialog Left = 307 - Height = 309 + Height = 342 Top = 209 - Width = 353 + Width = 396 BorderIcons = [biSystemMenu] Caption = 'Clean Directory' - ClientHeight = 309 - ClientWidth = 353 + ClientHeight = 342 + ClientWidth = 396 OnCreate = CleanDirectoryDialogCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object DirGroupbox: TGroupBox Left = 6 Height = 84 Top = 6 - Width = 341 + Width = 384 Align = alTop BorderSpacing.Around = 6 Caption = 'Directory' - ClientHeight = 66 - ClientWidth = 337 + ClientHeight = 64 + ClientWidth = 380 TabOrder = 0 object DirCombobox: TComboBox AnchorSideRight.Control = DirBrowseButton Left = 6 - Height = 24 + Height = 23 Top = 6 - Width = 297 + Width = 328 Anchors = [akTop, akLeft, akRight] AutoCompleteText = [cbactSearchAscending] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 0 Text = 'DirCombobox' end @@ -39,61 +39,62 @@ AnchorSideTop.Control = DirCombobox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 36 - Width = 325 + Height = 23 + Top = 35 + Width = 368 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 Caption = 'Clean sub directories' - TabOrder = 1 + TabOrder = 2 end object DirBrowseButton: TButton AnchorSideLeft.Control = DirCombobox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = DirCombobox - AnchorSideTop.Side = asrCenter AnchorSideRight.Control = DirGroupbox AnchorSideRight.Side = asrBottom - Left = 309 - Height = 21 - Top = 8 - Width = 23 - Anchors = [akTop, akRight] + AnchorSideBottom.Control = DirCombobox + AnchorSideBottom.Side = asrBottom + Left = 340 + Height = 23 + Top = 6 + Width = 35 + Anchors = [akTop, akRight, akBottom] BorderSpacing.Right = 5 Caption = '...' OnClick = DirBrowseButtonClick - TabOrder = 2 + TabOrder = 1 end end object RemoveGroupbox: TGroupBox Left = 6 Height = 84 Top = 96 - Width = 341 + Width = 384 Align = alTop BorderSpacing.Around = 6 Caption = 'Remove files matching filter:' - ClientHeight = 66 - ClientWidth = 337 + ClientHeight = 64 + ClientWidth = 380 TabOrder = 1 object RemoveCombobox: TComboBox Left = 6 - Height = 24 + Height = 23 Top = 6 - Width = 325 + Width = 368 Align = alTop AutoCompleteText = [cbactSearchAscending] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 0 Text = 'RemoveCombobox' end object SimpleSyntaxRemoveCheckbox: TCheckBox Left = 6 - Height = 20 - Top = 36 - Width = 325 + Height = 19 + Top = 35 + Width = 368 Align = alTop BorderSpacing.Around = 6 Caption = 'Simple syntax (e.g. * instead of .*)' @@ -102,32 +103,32 @@ end object KeepGroupbox: TGroupBox Left = 6 - Height = 78 + Height = 118 Top = 186 - Width = 341 + Width = 384 Align = alClient BorderSpacing.Around = 6 Caption = 'Keep files matching filter:' - ClientHeight = 60 - ClientWidth = 337 + ClientHeight = 98 + ClientWidth = 380 TabOrder = 2 object KeepCombobox: TComboBox Left = 6 - Height = 24 + Height = 23 Top = 6 - Width = 325 + Width = 368 Align = alTop AutoCompleteText = [cbactSearchAscending] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 0 Text = 'KeepCombobox' end object SimpleSyntaxKeepCheckbox: TCheckBox Left = 6 - Height = 20 - Top = 36 - Width = 325 + Height = 19 + Top = 35 + Width = 368 Align = alTop BorderSpacing.Around = 6 Caption = 'Simple syntax (e.g. * instead of .*)' @@ -135,9 +136,9 @@ end object KeepTextFilesCheckbox: TCheckBox Left = 6 - Height = 20 - Top = 58 - Width = 325 + Height = 19 + Top = 60 + Width = 368 Align = alTop BorderSpacing.Around = 6 Caption = 'Keep Text Files' @@ -146,9 +147,9 @@ end object ButtonPanel: TButtonPanel Left = 6 - Height = 33 - Top = 270 - Width = 341 + Height = 26 + Top = 310 + Width = 384 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' diff -Nru lazarus-1.4.4+dfsg/ide/cleandirdlg.pas lazarus-1.6+dfsg/ide/cleandirdlg.pas --- lazarus-1.4.4+dfsg/ide/cleandirdlg.pas 2014-06-15 11:52:01.000000000 +0000 +++ lazarus-1.6+dfsg/ide/cleandirdlg.pas 2015-03-10 12:53:11.000000000 +0000 @@ -103,8 +103,9 @@ begin ModalResult:=mrNone; SaveSettings; - if not SearchFilesToDelete(List) then exit; + List:=nil; try + if not SearchFilesToDelete(List) then exit; if not DeleteFiles(List) then exit; finally List.Free; diff -Nru lazarus-1.4.4+dfsg/ide/codebrowser.lfm lazarus-1.6+dfsg/ide/codebrowser.lfm --- lazarus-1.4.4+dfsg/ide/codebrowser.lfm 2014-02-07 10:22:57.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codebrowser.lfm 2015-10-02 11:28:02.000000000 +0000 @@ -1,7 +1,7 @@ object CodeBrowserView: TCodeBrowserView - Left = 355 + Left = 378 Height = 563 - Top = 321 + Top = 309 Width = 645 ActiveControl = ScopeComboBox Caption = 'CodeBrowserView' @@ -10,7 +10,7 @@ OnCreate = FormCreate OnDeactivate = FormDeactivate OnDestroy = FormDestroy - LCLVersion = '1.3' + LCLVersion = '1.5' object ScopeGroupBox: TGroupBox Left = 6 Height = 62 @@ -87,7 +87,7 @@ ChildSizing.Layout = cclTopToBottomThenLeftToRight ClientHeight = 36 ClientWidth = 629 - TabOrder = 1 + TabOrder = 2 object ShowPrivateCheckBox: TCheckBox AnchorSideLeft.Control = OptionsGroupBox AnchorSideTop.Control = OptionsGroupBox @@ -97,33 +97,35 @@ Width = 176 BorderSpacing.Left = 6 BorderSpacing.Top = 6 + BorderSpacing.Bottom = 6 Caption = 'ShowPrivateCheckBox' OnChange = ShowPrivateCheckBoxChange TabOrder = 0 end object ShowProtectedCheckBox: TCheckBox - AnchorSideLeft.Control = OptionsGroupBox - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = OptionsGroupBox - Left = 216 + AnchorSideLeft.Control = ShowPrivateCheckBox + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = ShowPrivateCheckBox + Left = 206 Height = 24 Top = 6 Width = 196 - BorderSpacing.Around = 6 + BorderSpacing.Left = 24 Caption = 'ShowProtectedCheckBox' OnChange = ShowPrivateCheckBoxChange TabOrder = 1 end object ShowEmptyNodesCheckBox: TCheckBox - AnchorSideTop.Control = OptionsGroupBox + AnchorSideLeft.Control = ShowProtectedCheckBox + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = ShowPrivateCheckBox AnchorSideRight.Control = OptionsGroupBox AnchorSideRight.Side = asrBottom - Left = 408 + Left = 426 Height = 24 Top = 6 Width = 215 - Anchors = [akTop, akRight] - BorderSpacing.Around = 6 + BorderSpacing.Left = 24 Caption = 'ShowEmptyNodesCheckBox' OnEditingDone = ShowPrivateCheckBoxChange TabOrder = 2 @@ -132,20 +134,20 @@ object BrowseTreeView: TTreeView AnchorSideTop.Control = OptionsGroupBox AnchorSideTop.Side = asrBottom - Left = 0 - Height = 257 + Left = 6 + Height = 251 Top = 265 - Width = 645 + Width = 633 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Top = 6 + BorderSpacing.Around = 6 Images = ImageList1 ParentShowHint = False PopupMenu = PopupMenu1 ReadOnly = True RightClickSelect = True ShowHint = True - TabOrder = 2 + TabOrder = 3 OnMouseDown = BrowseTreeViewMouseDown OnMouseMove = BrowseTreeViewMouseMove OnShowHint = BrowseTreeViewShowHint @@ -174,17 +176,19 @@ Caption = 'LevelsGroupBox' ClientHeight = 105 ClientWidth = 629 - TabOrder = 3 + TabOrder = 1 object PackageFilterBeginsSpeedButton: TSpeedButton AnchorSideLeft.Control = PackageFilterEdit AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = PackageFilterEdit AnchorSideRight.Control = PackageFilterContainsSpeedButton + AnchorSideBottom.Control = PackageFilterEdit + AnchorSideBottom.Side = asrBottom Left = 451 - Height = 22 + Height = 27 Top = 6 Width = 86 - Anchors = [akTop, akRight] + Anchors = [akTop, akRight, akBottom] GroupIndex = 1 OnClick = PackageFilterEditEditingDone ShowHint = True @@ -196,11 +200,13 @@ AnchorSideTop.Control = PackageFilterEdit AnchorSideRight.Control = LevelsGroupBox AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = PackageFilterEdit + AnchorSideBottom.Side = asrBottom Left = 537 - Height = 22 + Height = 27 Top = 6 Width = 86 - Anchors = [akTop, akRight] + Anchors = [akTop, akRight, akBottom] BorderSpacing.Right = 6 GroupIndex = 1 OnClick = PackageFilterEditEditingDone @@ -211,13 +217,14 @@ AnchorSideLeft.Control = UnitFilterEdit AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = UnitFilterEdit - AnchorSideTop.Side = asrCenter AnchorSideRight.Control = UnitFilterContainsSpeedButton + AnchorSideBottom.Control = UnitFilterEdit + AnchorSideBottom.Side = asrBottom Left = 451 - Height = 22 - Top = 41 + Height = 27 + Top = 39 Width = 86 - Anchors = [akTop, akRight] + Anchors = [akTop, akRight, akBottom] GroupIndex = 2 OnClick = PackageFilterEditEditingDone ShowHint = True @@ -227,14 +234,15 @@ AnchorSideLeft.Control = UnitFilterBeginsSpeedButton AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = UnitFilterEdit - AnchorSideTop.Side = asrCenter AnchorSideRight.Control = LevelsGroupBox AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = UnitFilterEdit + AnchorSideBottom.Side = asrBottom Left = 537 - Height = 22 - Top = 41 + Height = 27 + Top = 39 Width = 86 - Anchors = [akTop, akRight] + Anchors = [akTop, akRight, akBottom] BorderSpacing.Right = 6 GroupIndex = 2 OnClick = PackageFilterEditEditingDone @@ -245,13 +253,14 @@ AnchorSideLeft.Control = IdentifierFilterEdit AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = IdentifierFilterEdit - AnchorSideTop.Side = asrCenter AnchorSideRight.Control = IdentifierFilterContainsSpeedButton + AnchorSideBottom.Control = IdentifierFilterEdit + AnchorSideBottom.Side = asrBottom Left = 451 - Height = 22 - Top = 74 + Height = 27 + Top = 72 Width = 86 - Anchors = [akTop, akRight] + Anchors = [akTop, akRight, akBottom] GroupIndex = 3 OnClick = PackageFilterEditEditingDone ShowHint = True @@ -261,14 +270,15 @@ AnchorSideLeft.Control = IdentifierFilterBeginsSpeedButton AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = IdentifierFilterEdit - AnchorSideTop.Side = asrCenter AnchorSideRight.Control = LevelsGroupBox AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = IdentifierFilterEdit + AnchorSideBottom.Side = asrBottom Left = 537 - Height = 22 - Top = 74 + Height = 27 + Top = 72 Width = 86 - Anchors = [akTop, akRight] + Anchors = [akTop, akRight, akBottom] BorderSpacing.Right = 6 GroupIndex = 3 OnClick = PackageFilterEditEditingDone @@ -370,7 +380,7 @@ Align = alBottom Max = 10000 Smooth = True - TabOrder = 5 + TabOrder = 4 end object ImageList1: TImageList Height = 18 diff -Nru lazarus-1.4.4+dfsg/ide/codebrowser.pas lazarus-1.6+dfsg/ide/codebrowser.pas --- lazarus-1.4.4+dfsg/ide/codebrowser.pas 2015-05-30 00:14:17.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codebrowser.pas 2015-10-26 21:34:11.000000000 +0000 @@ -45,21 +45,23 @@ interface uses - Classes, SysUtils, types, LCLProc, LResources, Forms, Controls, Graphics, - Dialogs, Clipbrd, LCLIntf, AVL_Tree, StdCtrls, ExtCtrls, ComCtrls, Buttons, - Menus, HelpIntfs, - // codetools - CodeAtom, BasicCodeTools, DefineTemplates, CodeTree, CodeCache, + // RTL + FCL + LCL + Classes, SysUtils, types, AVL_Tree, + LCLProc, LResources, Forms, Controls, Graphics, Dialogs, Clipbrd, StdCtrls, + ExtCtrls, ComCtrls, Buttons, Menus, HelpIntfs, LCLIntf, + // CodeTools + BasicCodeTools, DefineTemplates, CodeTree, CodeCache, CodeToolsStructs, CodeToolManager, PascalParserTool, LinkScanner, FileProcs, CodeIndex, StdCodeTools, SourceLog, CustomCodeTool, + // LazUtils + LazFileUtils, LazUtilities, // IDEIntf IDEWindowIntf, SrcEditorIntf, IDEMsgIntf, IDEDialogs, LazConfigStorage, - IDEHelpIntf, PackageIntf, TextTools, IDECommands, LazIDEIntf, + IDEHelpIntf, PackageIntf, IDECommands, LazIDEIntf, IDEExternToolIntf, // IDE Project, DialogProcs, PackageSystem, PackageDefs, LazarusIDEStrConsts, - IDEOptionDefs, etFPCMsgParser, BasePkgManager, AddToProjectDlg, - EnvironmentOpts; + IDEOptionDefs, etFPCMsgParser, BasePkgManager, EnvironmentOpts; type @@ -217,14 +219,14 @@ UnitFilterBeginsSpeedButton: TSpeedButton; UnitFilterContainsSpeedButton: TSpeedButton; UnitFilterEdit: TEdit; - procedure BrowseTreeViewMouseMove(Sender: TObject; Shift: TShiftState; X, - Y: Integer); + procedure BrowseTreeViewMouseMove(Sender: TObject; {%H-}Shift: TShiftState; {%H-}X, + {%H-}Y: Integer); procedure FormDeactivate(Sender: TObject); procedure UseIdentifierInCurUnitMenuItemClick(Sender: TObject); procedure UsePkgInCurUnitMenuItemClick(Sender: TObject); procedure UsePkgInProjectMenuItemClick(Sender: TObject); procedure UseUnitInCurUnitMenuItemClick(Sender: TObject); - procedure BrowseTreeViewMouseDown(Sender: TOBject; Button: TMouseButton; + procedure BrowseTreeViewMouseDown(Sender: TOBject; {%H-}Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure BrowseTreeViewShowHint(Sender: TObject; HintInfo: PHintInfo); procedure CollapseAllPackagesMenuItemClick(Sender: TObject); @@ -383,7 +385,7 @@ public function IsApplicable(Msg: TMessageLine; out Identifier: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; var CodeBrowserView: TCodeBrowserView = nil; @@ -444,7 +446,7 @@ IDEWindowCreators.CreateForm(CodeBrowserView,TCodeBrowserView, DisableAutoSizing,LazarusIDE.OwningComponent) else if DisableAutoSizing then - CodeBrowserView.DisableAutoSizing; + CodeBrowserView.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('CreateCodeBrowser'){$ENDIF}; end; procedure ShowCodeBrowser(const Identifier: string); @@ -1877,8 +1879,6 @@ Result:=LeftStr(Result, MAX_LEN)+'...'; end; -const - NodeFlags = []; begin if CTNode.StartPos>=CTNode.EndPos then begin Identifier:=''; @@ -1954,7 +1954,8 @@ case CTNode.FirstChild.Desc of ctnClass,ctnClassInterface,ctnObject, ctnObjCClass,ctnObjCCategory,ctnObjCProtocol, - ctnCPPClass: + ctnCPPClass, + ctnClassHelper,ctnRecordHelper,ctnTypeHelper: begin case CTNode.FirstChild.Desc of ctnClassInterface: @@ -1969,6 +1970,12 @@ Description:=Description+' = objcprotocol'; ctnCPPClass: Description:=Description+' = cppclass'; + ctnClassHelper: + Description:=Description+' = class helper'; + ctnRecordHelper: + Description:=Description+' = record helper'; + ctnTypeHelper: + Description:=Description+' = type helper'; else Description:=Description+' = class'; end; @@ -2010,8 +2017,8 @@ function IncUsedMem(c: integer): boolean; begin - Result:=(UsedMem div 16384)<>((UsedMem+c) div 16384); - inc(UsedMem,c); + Result:=(UsedMem div 16384)<>((UsedMem{%H-}+c) div 16384); + {%H-}inc(UsedMem,c); end; function IdentifierFitsFilter(LvlType: TCodeBrowserLevel; diff -Nru lazarus-1.4.4+dfsg/ide/codecontextform.pas lazarus-1.6+dfsg/ide/codecontextform.pas --- lazarus-1.4.4+dfsg/ide/codecontextform.pas 2014-06-02 19:58:33.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codecontextform.pas 2015-06-22 10:02:11.000000000 +0000 @@ -41,7 +41,7 @@ Graphics, Dialogs, LCLType, LCLIntf, Themes, Buttons, SynEdit, SynEditKeyCmds, BasicCodeTools, KeywordFuncLists, LinkScanner, CodeCache, FindDeclarationTool, IdentCompletionTool, CodeTree, CodeAtom, PascalParserTool, CodeToolManager, - SourceChanger, SrcEditorIntf, LazIDEIntf, IDEProcs, LazarusIDEStrConsts; + SrcEditorIntf, LazIDEIntf, IDEProcs, LazarusIDEStrConsts; type @@ -59,7 +59,7 @@ { TCodeContextFrm } TCodeContextFrm = class(THintWindow) - procedure ApplicationIdle(Sender: TObject; var Done: Boolean); + procedure ApplicationIdle(Sender: TObject; var {%H-}Done: Boolean); procedure CopyAllBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); @@ -80,7 +80,7 @@ procedure ClearMarksInHints; function GetHints(Index: integer): TCodeContextItem; procedure MarkCurrentParameterInHints(ParameterIndex: integer); // 0 based - procedure CalculateHintsBounds(const CodeContexts: TCodeContextInfo); + procedure CalculateHintsBounds; procedure DrawHints(var MaxWidth, MaxHeight: Integer; Draw: boolean); procedure CompleteParameters(DeclCode: string); procedure ClearHints; @@ -262,7 +262,7 @@ end; CreateHints(CodeContexts); - CalculateHintsBounds(CodeContexts); + CalculateHintsBounds; end; procedure TCodeContextFrm.UpdateHints; @@ -378,7 +378,7 @@ ExprNode: TCodeTreeNode; begin Result:=false; - Params:=TFindDeclarationParams.Create; + Params:=TFindDeclarationParams.Create(Tool, Node); try try Expr:=Tool.ConvertNodeToExpressionType(Node,Params); @@ -673,8 +673,7 @@ Invalidate; end; -procedure TCodeContextFrm.CalculateHintsBounds(const - CodeContexts: TCodeContextInfo); +procedure TCodeContextFrm.CalculateHintsBounds; var DrawWidth: LongInt; SrcEdit: TSourceEditorInterface; diff -Nru lazarus-1.4.4+dfsg/ide/codeexplopts.pas lazarus-1.6+dfsg/ide/codeexplopts.pas --- lazarus-1.4.4+dfsg/ide/codeexplopts.pas 2014-02-18 18:47:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codeexplopts.pas 2015-08-07 17:20:40.000000000 +0000 @@ -34,11 +34,17 @@ interface uses - Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, - Buttons, ExtCtrls, FileUtil, StdCtrls, ButtonPanel, AvgLvlTree, Laz2_XMLCfg, - CodeToolManager, BasicCodeTools, FileProcs, - IDEContextHelpEdit, - LazConf, IDEProcs, IDEOptionsIntf, LazarusIDEStrConsts; + // RTL + FCL + LCL + Classes, SysUtils, + LCLProc, Forms, Controls, Graphics, Dialogs, Buttons, + // CodeTools + BasicCodeTools, FileProcs, + // LazUtils + AvgLvlTree, Laz2_XMLCfg, LazFileUtils, LazFileCache, + // IDEIntf + IDEOptionsIntf, + // IDE + LazConf, IDEProcs, LazarusIDEStrConsts; type { TCodeExplorerOptions } @@ -441,8 +447,7 @@ constructor TCodeExplorerOptions.Create; begin - FOptionsFilename:= - AppendPathDelim(GetPrimaryConfigPath)+'codeexploreroptions.xml'; + FOptionsFilename:=AppendPathDelim(GetPrimaryConfigPath)+'codeexploreroptions.xml'; FObserverIgnoreConstants:=TAvgLvlTree.Create(TListSortCompare(@CompareAtom)); FCOIgnoreConstInFuncs:=TStringToStringTree.Create(false); Clear; diff -Nru lazarus-1.4.4+dfsg/ide/codeexplorer.lfm lazarus-1.6+dfsg/ide/codeexplorer.lfm --- lazarus-1.4.4+dfsg/ide/codeexplorer.lfm 2013-06-24 12:05:39.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codeexplorer.lfm 2015-05-17 11:41:44.000000000 +0000 @@ -9,28 +9,29 @@ KeyPreview = True OnCreate = CodeExplorerViewCREATE OnDestroy = CodeExplorerViewDestroy - LCLVersion = '1.1' + LCLVersion = '1.5' object MainNotebook: TPageControl Left = 0 Height = 517 Top = 0 Width = 220 - ActivePage = DirectivesPage + ActivePage = CodePage Align = alClient - TabIndex = 1 + TabIndex = 0 TabOrder = 0 OnChange = MainNotebookPageChanged object CodePage: TTabSheet Caption = 'CodePage' - ClientHeight = 485 + ClientHeight = 489 ClientWidth = 212 object CodeTreeview: TTreeView Left = 0 - Height = 461 + Height = 465 Top = 24 Width = 212 Align = alClient BorderSpacing.Top = 1 + DefaultItemHeight = 18 HideSelection = False Images = Imagelist1 PopupMenu = TreePopupmenu @@ -64,7 +65,6 @@ Anchors = [akTop, akLeft, akRight] OnChange = CodeFilterEditChange OnEnter = CodeFilterEditEnter - OnExit = CodeFilterEditExit TabOrder = 0 Text = 'CodeFilterEdit' end @@ -117,29 +117,28 @@ end object DirectivesPage: TTabSheet Caption = 'DirectivesPage' - ClientHeight = 478 - ClientWidth = 214 + ClientHeight = 489 + ClientWidth = 212 object DirTreeviewButtonPanel: TPanel Left = 0 - Height = 22 + Height = 23 Top = 0 - Width = 214 + Width = 212 Align = alTop AutoSize = True BevelOuter = bvNone - ClientHeight = 22 - ClientWidth = 214 + ClientHeight = 23 + ClientWidth = 212 TabOrder = 0 object DirectivesFilterEdit: TEdit AnchorSideRight.Control = DirRefreshSpeedButton Left = 0 - Height = 22 + Height = 23 Top = 0 - Width = 168 + Width = 166 Anchors = [akTop, akLeft, akRight] OnChange = DirectivesFilterEditChange OnEnter = DirectivesFilterEditEnter - OnExit = DirectivesFilterEditExit TabOrder = 0 Text = 'DirectivesFilterEdit' end @@ -147,8 +146,8 @@ AnchorSideRight.Control = DirOptionsSpeedButton AnchorSideBottom.Control = DirectivesFilterEdit AnchorSideBottom.Side = asrBottom - Left = 168 - Height = 21 + Left = 166 + Height = 22 Hint = 'Refresh CodeExplorer' Top = 1 Width = 23 @@ -163,8 +162,8 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = DirRefreshSpeedButton AnchorSideBottom.Side = asrBottom - Left = 191 - Height = 21 + Left = 189 + Height = 22 Hint = 'Options for CodeExplorer' Top = 1 Width = 23 @@ -179,9 +178,9 @@ AnchorSideTop.Control = DirTreeviewButtonPanel AnchorSideTop.Side = asrBottom Left = 0 - Height = 455 - Top = 23 - Width = 214 + Height = 465 + Top = 24 + Width = 212 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Top = 1 diff -Nru lazarus-1.4.4+dfsg/ide/codeexplorer.pas lazarus-1.6+dfsg/ide/codeexplorer.pas --- lazarus-1.4.4+dfsg/ide/codeexplorer.pas 2014-11-30 10:57:53.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codeexplorer.pas 2015-12-21 22:55:19.000000000 +0000 @@ -131,7 +131,6 @@ procedure CodeExplorerViewCreate(Sender: TObject); procedure CodeExplorerViewDestroy(Sender: TObject); procedure CodeFilterEditEnter(Sender: TObject); - procedure CodeFilterEditExit(Sender: TObject); procedure CodeTreeviewDblClick(Sender: TObject); procedure CodeTreeviewDeletion(Sender: TObject; Node: TTreeNode); procedure CodeTreeviewKeyUp(Sender: TObject; var Key: Word; @@ -139,7 +138,6 @@ procedure CodeFilterEditChange(Sender: TObject); procedure DirectivesFilterEditChange(Sender: TObject); procedure DirectivesFilterEditEnter(Sender: TObject); - procedure DirectivesFilterEditExit(Sender: TObject); procedure DirectivesTreeViewDblClick(Sender: TObject); procedure DirectivesTreeViewDeletion(Sender: TObject; Node: TTreeNode); procedure DirectivesTreeViewKeyUp(Sender: TObject; var Key: Word; @@ -156,7 +154,7 @@ procedure CodeRefreshSpeedButtonClick(Sender: TObject); procedure RenameMenuItemClick(Sender: TObject); procedure TreePopupmenuPopup(Sender: TObject); - procedure OnUserInput(Sender: TObject; Msg: Cardinal); + procedure OnUserInput(Sender: TObject; {%H-}Msg: Cardinal); private fCategoryNodes: array[TCodeExplorerCategory] of TTreeNode; FCodeFilename: string; @@ -182,6 +180,9 @@ fSortCodeTool: TCodeTool; FUpdateCount: integer; ImgIDClass: Integer; + ImgIDClassInterface: Integer; + ImgIDRecord: Integer; + ImgIDHelper: Integer; ImgIDConst: Integer; ImgIDSection: Integer; ImgIDDefault: integer; @@ -198,6 +199,8 @@ ImgIDUnit: Integer; ImgIDVariable: Integer; ImgIDHint: Integer; + procedure ClearCodeTreeView; + procedure ClearDirectivesTreeView; function GetCodeFilter: string; function GetCurrentPage: TCodeExplorerPage; function GetDirectivesFilter: string; @@ -243,7 +246,7 @@ procedure BeginUpdate; procedure EndUpdate; procedure CheckOnIdle; - procedure KeyUp(var Key: Word; Shift: TShiftState); override; + procedure KeyDown(var Key: Word; Shift: TShiftState); override; procedure Refresh(OnlyVisible: boolean); procedure RefreshCode(OnlyVisible: boolean); procedure RefreshDirectives(OnlyVisible: boolean); @@ -470,12 +473,14 @@ CodePage.Caption:=lisCode; CodeRefreshSpeedButton.Hint:=dlgUnitDepRefresh; - CodeOptionsSpeedButton.Hint:=dlgFROpts; - CodeFilterEdit.Text:=lisCEFilter; + CodeOptionsSpeedButton.Hint:=lisOptions; + CodeFilterEdit.Text:=''; DirectivesPage.Caption:=lisDirectives; - DirectivesFilterEdit.Text:=lisCEFilter; + DirectivesFilterEdit.Text:=''; DirRefreshSpeedButton.Hint:=dlgUnitDepRefresh; - DirOptionsSpeedButton.Hint:=dlgFROpts; + DirOptionsSpeedButton.Hint:=lisOptions; + CodeFilterEdit.TextHint:=lisCEFilter; + DirectivesFilterEdit.TextHint:=lisCEFilter; CodeRefreshSpeedButton.LoadGlyphFromResourceName(HInstance, 'laz_refresh'); CodeOptionsSpeedButton.LoadGlyphFromResourceName(HInstance, 'menu_environment_options'); @@ -493,6 +498,9 @@ ImgIDVariable := Imagelist1.AddResourceName(HInstance, 'ce_variable'); ImgIDConst := Imagelist1.AddResourceName(HInstance, 'ce_const'); ImgIDClass := Imagelist1.AddResourceName(HInstance, 'ce_class'); + ImgIDClassInterface := Imagelist1.AddResourceName(HInstance, 'ce_classinterface'); + ImgIDHelper := Imagelist1.AddResourceName(HInstance, 'ce_helper'); + ImgIDRecord := Imagelist1.AddResourceName(HInstance, 'ce_record'); ImgIDProcedure := Imagelist1.AddResourceName(HInstance, 'ce_procedure'); ImgIDFunction := Imagelist1.AddResourceName(HInstance, 'ce_function'); ImgIDProperty := Imagelist1.AddResourceName(HInstance, 'ce_property'); @@ -530,16 +538,7 @@ procedure TCodeExplorerView.CodeFilterEditEnter(Sender: TObject); begin - if CodeFilterEdit.Text = lisCEFilter then - CodeFilterEdit.Text:='' - else - CodeFilterEdit.SelectAll; -end; - -procedure TCodeExplorerView.CodeFilterEditExit(Sender: TObject); -begin - if CodeFilterEdit.Text='' then - CodeFilterEdit.Text:=lisCEFilter; + CodeFilterEdit.SelectAll; end; procedure TCodeExplorerView.CodeTreeviewDblClick(Sender: TObject); @@ -575,16 +574,7 @@ procedure TCodeExplorerView.DirectivesFilterEditEnter(Sender: TObject); begin - if DirectivesFilterEdit.Text = lisCEFilter then - DirectivesFilterEdit.Text:='' - else - DirectivesFilterEdit.SelectAll; -end; - -procedure TCodeExplorerView.DirectivesFilterEditExit(Sender: TObject); -begin - if DirectivesFilterEdit.Text='' then - DirectivesFilterEdit.Text:=lisCEFilter; + DirectivesFilterEdit.SelectAll; end; procedure TCodeExplorerView.DirectivesTreeViewDblClick(Sender: TObject); @@ -611,7 +601,19 @@ if not (cevCheckOnIdle in FFlags) then exit; if (Screen.ActiveCustomForm<>nil) and (fsModal in Screen.ActiveCustomForm.FormState) then + begin + // do not update while a modal form is shown, except for clear + if SourceEditorManagerIntf=nil then exit; + if SourceEditorManagerIntf.SourceEditorCount=0 then + begin + Exclude(FFlags,cevCheckOnIdle); + FLastCodeValid:=false; + ClearCodeTreeView; + FDirectivesFilename:=''; + ClearDirectivesTreeView; + end; exit; + end; if not IsVisible then exit; Exclude(FFlags,cevCheckOnIdle); case CurrentPage of @@ -736,6 +738,8 @@ function TCodeExplorerView.GetCodeNodeDescription(ACodeTool: TCodeTool; CodeNode: TCodeTreeNode): string; +var + ClassIdentNode, HelperForNode, InhNode: TCodeTreeNode; begin Result:='?'; @@ -760,9 +764,27 @@ ctnResStrSection: Result:='Resourcestring'; - ctnTypeDefinition,ctnVarDefinition,ctnConstDefinition,ctnUseUnit: + ctnVarDefinition,ctnConstDefinition,ctnUseUnit: Result:=ACodeTool.ExtractIdentifier(CodeNode.StartPos); + ctnTypeDefinition: + begin + Result:=ACodeTool.ExtractIdentifier(CodeNode.StartPos); + ClassIdentNode := CodeNode.FirstChild; + if Assigned(ClassIdentNode) then + begin + if ClassIdentNode.Desc in [ctnClassHelper, ctnRecordHelper, ctnTypeHelper] then + HelperForNode := ACodeTool.FindHelperForNode(ClassIdentNode) + else + HelperForNode := nil; + InhNode:=ACodeTool.FindInheritanceNode(ClassIdentNode); + if InhNode<>nil then + Result:=Result+ACodeTool.ExtractNode(InhNode,[]); + if HelperForNode<>nil then + Result:=Result+' '+ACodeTool.ExtractNode(HelperForNode,[]); + end; + end; + ctnGenericType: Result:=ACodeTool.ExtractDefinitionName(CodeNode); @@ -813,7 +835,25 @@ function TCodeExplorerView.GetCodeFilter: string; begin Result:=CodeFilterEdit.Text; - if Result=lisCEFilter then Result:=''; +end; + +procedure TCodeExplorerView.ClearCodeTreeView; +var + f: TCEObserverCategory; + c: TCodeExplorerCategory; +begin + for c:=low(TCodeExplorerCategory) to high(TCodeExplorerCategory) do + fCategoryNodes[c]:=nil; + fObserverNode:=nil; + for f:=low(TCEObserverCategory) to high(TCEObserverCategory) do + fObserverCatNodes[f]:=nil; + fSurroundingNode:=nil; + CodeTreeview.Items.Clear; +end; + +procedure TCodeExplorerView.ClearDirectivesTreeView; +begin + DirectivesTreeView.Items.Clear; end; function TCodeExplorerView.GetCurrentPage: TCodeExplorerPage; @@ -829,7 +869,6 @@ function TCodeExplorerView.GetDirectivesFilter: string; begin Result:=DirectivesFilterEdit.Text; - if Result=lisCEFilter then Result:=''; end; function TCodeExplorerView.GetCodeNodeImage(Tool: TFindDeclarationTool; @@ -845,9 +884,19 @@ ctnTypeSection: Result:=ImgIDSection; ctnTypeDefinition: begin - if (CodeNode.FirstChild <> nil) - and (CodeNode.FirstChild.Desc in AllClasses) then - Result := ImgIDClass + if (CodeNode.FirstChild <> nil) then + case CodeNode.FirstChild.Desc of + ctnClassInterface,ctnDispinterface,ctnObjCProtocol: + Result := ImgIDClassInterface; + ctnClass,ctnObjCClass,ctnObjCCategory,ctnCPPClass: + Result := ImgIDClass; + ctnObject,ctnRecordType: + Result := ImgIDRecord; + ctnClassHelper,ctnRecordHelper,ctnTypeHelper: + Result := ImgIDHelper; + else + Result := ImgIDType; + end else Result := ImgIDType; end; @@ -855,9 +904,14 @@ ctnVarDefinition: Result:=ImgIDVariable; ctnConstSection,ctnResStrSection: Result:=ImgIDSection; ctnConstDefinition: Result:=ImgIDConst; - ctnClass,ctnClassInterface,ctnObject, - ctnObjCClass,ctnObjCProtocol,ctnObjCCategory,ctnCPPClass: + ctnClassInterface,ctnDispinterface,ctnObjCProtocol: + Result := ImgIDClassInterface; + ctnClass,ctnObject, + ctnObjCClass,ctnObjCCategory,ctnCPPClass: Result:=ImgIDClass; + ctnRecordType: Result:=ImgIDRecord; + ctnClassHelper,ctnRecordHelper,ctnTypeHelper: + Result:=ImgIDHelper; ctnProcedure: if Tool.NodeIsFunction(CodeNode) then Result:=ImgIDFunction else @@ -928,6 +982,12 @@ ShowNode:=false; end; + //don't show child nodes of ctnUseUnit + if (CodeNode.Desc=ctnUseUnit) + then begin + ShowChilds:=false; + end; + // don't show subs if CodeNode.Desc in [ctnConstant,ctnIdentifier,ctnRangedArrayType, ctnOpenArrayType,ctnOfConstType,ctnRangeType,ctnTypeType,ctnFileType, @@ -941,8 +1001,10 @@ if CodeNode.Desc=ctnEnumerationType then ShowNode:=false; - // don't show special nodes - if CodeNode.Desc in [ctnEndPoint] then + // don't show end node and class modification nodes + if CodeNode.Desc in [ctnEndPoint,ctnClassInheritance,ctnHelperFor, + ctnClassAbstract,ctnClassExternal,ctnClassSealed] + then ShowNode:=false; // don't show class visibility section nodes @@ -1871,9 +1933,9 @@ Refresh(true); end; -procedure TCodeExplorerView.KeyUp(var Key: Word; Shift: TShiftState); +procedure TCodeExplorerView.KeyDown(var Key: Word; Shift: TShiftState); begin - inherited KeyUp(Key, Shift); + inherited KeyDown(Key, Shift); ExecuteIDEShortCut(Self,Key,Shift,nil); end; @@ -2022,8 +2084,6 @@ var OldExpanded: TTreeNodeExpandedState; ACodeTool: TCodeTool; - c: TCodeExplorerCategory; - f: TCEObserverCategory; SrcEdit: TSourceEditorInterface; Filename: String; Code: TCodeBuffer; @@ -2129,14 +2189,8 @@ if not CurFollowNode then OldExpanded:=TTreeNodeExpandedState.Create(CodeTreeView); - for c:=low(TCodeExplorerCategory) to high(TCodeExplorerCategory) do - fCategoryNodes[c]:=nil; - fObserverNode:=nil; - for f:=low(TCEObserverCategory) to high(TCEObserverCategory) do - fObserverCatNodes[f]:=nil; - fSurroundingNode:=nil; + ClearCodeTreeView; - CodeTreeview.Items.Clear; if (ACodeTool<>nil) and (ACodeTool.Tree<>nil) and (ACodeTool.Tree.Root<>nil) then begin CreateIdentifierNodes(ACodeTool,ACodeTool.Tree.Root,nil,nil,true); @@ -2238,12 +2292,10 @@ DirectivesTreeView.BeginUpdate; OldExpanded:=TTreeNodeExpandedState.Create(DirectivesTreeView); - if (ADirectivesTool=nil) or (ADirectivesTool.Tree=nil) - or (ADirectivesTool.Tree.Root=nil) then + ClearDirectivesTreeView; + if (ADirectivesTool<>nil) and (ADirectivesTool.Tree<>nil) + and (ADirectivesTool.Tree.Root<>nil) then begin - DirectivesTreeView.Items.Clear; - end else begin - DirectivesTreeView.Items.Clear; CreateDirectiveNodes(ADirectivesTool,ADirectivesTool.Tree.Root,nil,nil,true); end; diff -Nru lazarus-1.4.4+dfsg/ide/codehelp.pas lazarus-1.6+dfsg/ide/codehelp.pas --- lazarus-1.4.4+dfsg/ide/codehelp.pas 2014-10-14 14:05:30.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codehelp.pas 2015-08-07 17:20:40.000000000 +0000 @@ -39,14 +39,15 @@ interface uses - Classes, SysUtils, LazFileCache, LCLProc, Forms, Controls, FileUtil, Dialogs, - AvgLvlTree, LCLType, - Laz2_DOM, Laz2_XMLRead, Laz2_XMLWrite, - // codetools + // RTL + FCL + LCL + Classes, SysUtils, LCLType, LCLProc, Forms, Controls, FileUtil, Dialogs, + // CodeTools CodeAtom, CodeTree, CodeToolManager, FindDeclarationTool, BasicCodeTools, KeywordFuncLists, PascalParserTool, CodeCache, CacheCodeTools, CustomCodeTool, - FileProcs, CTXMLFixFragment, DefineTemplates, CodeToolsStructs, - // synedit + FileProcs, DefineTemplates, CodeToolsStructs, + // LazUtils + AvgLvlTree, LazFileUtils, LazUTF8, LazFileCache, Laz2_DOM, Laz2_XMLRead, Laz2_XMLWrite, + // SynEdit SynHighlighterPas, // IDEIntf IDECommands, IDEMsgIntf, MacroIntf, PackageIntf, LazHelpIntf, ProjectIntf, @@ -236,7 +237,7 @@ FSrcToDocMap: TAvgLvlTree; // tree of TCHSourceToFPDocFile sorted for SourceFilename FDeclarationCache: TDeclarationInheritanceCache; procedure AddHandler(HandlerType: TCodeHelpManagerHandler; - const AMethod: TMethod; AsLast: boolean = false); + const AMethod: TMethod; {%H-}AsLast: boolean = false); procedure RemoveHandler(HandlerType: TCodeHelpManagerHandler; const AMethod: TMethod); procedure FreeHandlers; @@ -266,10 +267,6 @@ out CacheWasUsed: boolean; out AnOwner: TObject;// a package or a project or LazarusHelp or nil for user defined CreateIfNotExists: boolean = false): string; - function GetFPDocFilenameForPkgFile(PkgFile: TPkgFile; - ResolveIncludeFiles: Boolean; - out CacheWasUsed: boolean; - CreateIfNotExists: boolean = false): string; procedure GetFPDocFilenamesForSources(SrcFilenames: TFilenameToStringTree; ResolveIncludeFiles: boolean; var FPDocFilenames: TFilenameToStringTree // Filename to ModuleName @@ -302,7 +299,7 @@ out CacheWasUsed: boolean): TCodeHelpParseResult; function GetCodeContext(CodePos: PCodeXYPosition; out FindContext: TFindContext; - Complete: boolean; + {%H-}Complete: boolean; out CacheWasUsed: boolean): TCodeHelpParseResult; function GetElementChain(Code: TCodeBuffer; X, Y: integer; Complete: boolean; out Chain: TCodeHelpElementChain; @@ -314,12 +311,18 @@ XYPos: TCodeXYPosition; Options: TCodeHelpHintOptions; out BaseURL, HTMLHint: string; out CacheWasUsed: boolean): TCodeHelpParseResult; + function GetHTMLHintForExpr(CTExprType: TExpressionType; + XYPos: TCodeXYPosition; Options: TCodeHelpHintOptions; + out BaseURL, HTMLHint: string; + out CacheWasUsed: boolean): TCodeHelpParseResult; function GetHTMLHintForUnit(AUnitName, InFilename: string; BaseDir: string; Options: TCodeHelpHintOptions; out BaseURL, HTMLHint: string; out CacheWasUsed: boolean): TCodeHelpParseResult; function GetHTMLDeclarationHeader(Tool: TFindDeclarationTool; Node: TCodeTreeNode; XYPos: TCodeXYPosition): string; + function GetHTMLDeclarationHeader(Tool: TFindDeclarationTool; + Node: TCodeTreeNode; Desc: TExpressionTypeDesc; XYPos: TCodeXYPosition): string; function GetPasDocCommentsAsHTML(Tool: TFindDeclarationTool; Node: TCodeTreeNode): string; function GetFPDocNodeAsHTML(FPDocFile: TLazFPDocFile; DOMNode: TDOMNode): string; function TextToHTML(Txt: string): string; @@ -1552,6 +1555,7 @@ CurPath: String; p: Integer; begin + Result:=false; if Paths='' then exit; if not IDEMacros.CreateAbsoluteSearchPath(Paths,BaseDir) then exit; //DebugLn(['SearchInPath START ',Paths]); @@ -1570,7 +1574,6 @@ end; until p>length(Paths); Filename:=''; - Result:=false; end; function CheckUnitOwners(CheckSourceDirectories: boolean; @@ -1723,40 +1726,6 @@ {$endif} end; -function TCodeHelpManager.GetFPDocFilenameForPkgFile(PkgFile: TPkgFile; - ResolveIncludeFiles: Boolean; out CacheWasUsed: boolean; - CreateIfNotExists: boolean): string; -var - APackage: TLazPackage; - BaseDir: String; - SrcFilename: String; - CodeBuf: TCodeBuffer; -begin - Result:=''; - CacheWasUsed:=false; - APackage:=TLazPackage(PkgFile.LazPackage); - if APackage.FPDocPaths='' then exit; - BaseDir:=APackage.DirectoryExpanded; - if BaseDir='' then exit; - - SrcFilename:=PkgFile.GetFullFilename; - if ResolveIncludeFiles then begin - CodeBuf:=CodeToolBoss.FindFile(SrcFilename); - if CodeBuf<>nil then begin - CodeBuf:=CodeToolBoss.GetMainCode(CodeBuf); - if CodeBuf<>nil then begin - SrcFilename:=CodeBuf.Filename; - end; - end; - end; - - if not FilenameIsPascalUnit(SrcFilename) then exit; - SrcFilename:=ExtractFileNameOnly(SrcFilename)+'.xml'; - - Result:=SearchFileInPath(SrcFilename,BaseDir,APackage.FPDocPaths,';', - ctsfcDefault); -end; - procedure TCodeHelpManager.GetFPDocFilenamesForSources( SrcFilenames: TFilenameToStringTree; ResolveIncludeFiles: boolean; var FPDocFilenames: TFilenameToStringTree); @@ -1876,10 +1845,8 @@ AProject:=LazarusIDE.ActiveProject; // virtual files belong to the project - if not FilenameIsAbsolute(Path) then begin - Result:=AProject; - exit; - end; + if not FilenameIsAbsolute(FPDocFile.Filename) then + exit(AProject); // check if in the doc path of the project if (AProject<>nil) and (AProject.FPDocPaths<>'') @@ -2025,6 +1992,7 @@ Result:=Tool.ExtractSourceName; end else begin while CodeNode<>nil do begin + NodeName:=''; case CodeNode.Desc of ctnVarDefinition: if Tool.NodeIsResultIdentifier(CodeNode) then @@ -2047,7 +2015,6 @@ ctnIdentifier: if Tool.NodeIsResultType(CodeNode) then NodeName:='Result'; - else NodeName:=''; end; if NodeName<>'' then begin if Result<>'' then @@ -2403,10 +2370,9 @@ out CacheWasUsed: boolean): TCodeHelpParseResult; var CursorPos: TCodeXYPosition; - CTTool: TFindDeclarationTool; - CTNode: TCodeTreeNode; XYPos: TCodeXYPosition; TopLine: integer; + CTExprType: TExpressionType; begin Result:=chprFailed; BaseURL:='lazdoc://'; @@ -2421,17 +2387,18 @@ try // find declaration if not CodeToolBoss.CurCodeTool.FindDeclaration(CursorPos, - DefaultFindSmartHintFlags+[fsfSearchSourceName],CTTool,CTNode,XYPos,TopLine) + DefaultFindSmartHintFlags+[fsfSearchSourceName],CTExprType,XYPos,TopLine) then exit; - if (CTNode=nil) then begin + if (CTExprType.Desc=xtContext) and (CTExprType.Context.Node=nil) then begin // codetools found a source file, not a declararion debugln(['TCodeHelpManager.GetHTMLHint not a declaration']); exit; end; - Result:=GetHTMLHintForNode(CTTool,CTNode,XYPos,Options,BaseURL,HTMLHint,CacheWasUsed); + Result:=GetHTMLHintForExpr(CTExprType,XYPos,Options,BaseURL,HTMLHint,CacheWasUsed); // Property details are like "published property TType.PropName:Integer" - PropDetails:=CTTool.GetSmartHint(CTNode,XYPos,false); + if (CTExprType.Desc=xtContext) and (CTExprType.Context.Tool<>nil) then + PropDetails:=CTExprType.Context.Tool.GetSmartHint(CTExprType.Context.Node,XYPos,false); except on E: ECodeToolError do begin //debugln(['TCodeHelpManager.GetHTMLHint ECodeToolError: ',E.Message]); @@ -2443,9 +2410,9 @@ end; end; -function TCodeHelpManager.GetHTMLHintForNode(CTTool: TFindDeclarationTool; - CTNode: TCodeTreeNode; XYPos: TCodeXYPosition; Options: TCodeHelpHintOptions; - out BaseURL, HTMLHint: string; out CacheWasUsed: boolean): TCodeHelpParseResult; +function TCodeHelpManager.GetHTMLHintForExpr(CTExprType: TExpressionType; + XYPos: TCodeXYPosition; Options: TCodeHelpHintOptions; out BaseURL, + HTMLHint: string; out CacheWasUsed: boolean): TCodeHelpParseResult; var aTopLine: integer; ListOfPCodeXYPosition: TFPList; @@ -2463,11 +2430,22 @@ n: Integer; s: String; Cmd: TKeyCommandRelation; + CTTool: TFindDeclarationTool; + CTNode: TCodeTreeNode; begin Result:=chprFailed; BaseURL:='lazdoc://'; HTMLHint:=''; CacheWasUsed:=true; + AnOwner := nil; + + if (CTExprType.Desc in xtAllIdentPredefinedTypes) then + CTExprType.Context.Tool := CodeToolBoss.CurCodeTool.FindCodeToolForUsedUnit('system','',false); + CTTool := CTExprType.Context.Tool; + CTNode := CTExprType.Context.Node; + + if CTTool=nil then + Exit(chprFailed); ListOfPCodeXYPosition:=nil; Complete:=not (chhoSmallStep in Options); @@ -2475,10 +2453,15 @@ try try if chhoDeclarationHeader in Options then - HTMLHint:=HTMLHint+GetHTMLDeclarationHeader(CTTool,CTNode,XYPos); + HTMLHint:=HTMLHint+GetHTMLDeclarationHeader(CTTool,CTNode,CTExprType.Desc,XYPos); for n:=1 to 30 do begin - ElementName:=CodeNodeToElementName(CTTool,CTNode); + if (CTExprType.Desc=xtContext) and (CTNode<>nil) then + ElementName:=CodeNodeToElementName(CTTool,CTNode) + else if (CTExprType.Desc in xtAllIdentPredefinedTypes) then + ElementName:=ExpressionTypeDescNames[CTExprType.Desc] + else + break; //debugln(['TCodeHelpManager.GetHTMLHintForNode ElementName=',ElementName]); i:=ElementNames.Count-1; while (i>=0) do begin @@ -2533,9 +2516,10 @@ end; // find inherited node - if (CTNode.Desc=ctnProperty) - or ((CTNode.Desc in [ctnProcedure,ctnProcedureHead]) - and (CTTool.ProcNodeHasSpecifier(CTNode,psOVERRIDE))) + if (CTNode<>nil) and ( + (CTNode.Desc=ctnProperty) or + ((CTNode.Desc in [ctnProcedure,ctnProcedureHead]) + and (CTTool.ProcNodeHasSpecifier(CTNode,psOVERRIDE)))) then begin {$ifdef VerboseCodeHelp} debugln(['TCodeHelpManager.GetHTMLHintForNode: searching for inherited of ',CTNode.DescAsString,' ',dbgs(XYPos)]); @@ -2600,6 +2584,19 @@ {$endif} end; +function TCodeHelpManager.GetHTMLHintForNode(CTTool: TFindDeclarationTool; + CTNode: TCodeTreeNode; XYPos: TCodeXYPosition; Options: TCodeHelpHintOptions; + out BaseURL, HTMLHint: string; out CacheWasUsed: boolean + ): TCodeHelpParseResult; +var + ExprType: TExpressionType; +begin + ExprType.Desc:=xtContext; + ExprType.Context.Tool:=CTTool; + ExprType.Context.Node:=CTNode; + Result := GetHTMLHintForExpr(ExprType, XYPos, Options, BaseURL, HTMLHint, CacheWasUsed); +end; + function TCodeHelpManager.GetHTMLHintForUnit(AUnitName, InFilename: string; BaseDir: string; Options: TCodeHelpHintOptions; out BaseURL, HTMLHint: string; out CacheWasUsed: boolean): TCodeHelpParseResult; @@ -2655,23 +2652,37 @@ end; function TCodeHelpManager.GetHTMLDeclarationHeader(Tool: TFindDeclarationTool; - Node: TCodeTreeNode; XYPos: TCodeXYPosition): string; + Node: TCodeTreeNode; Desc: TExpressionTypeDesc; XYPos: TCodeXYPosition + ): string; var CTHint: String; begin Result:='<div class="header">'; // add declaration - CTHint:=Tool.GetSmartHint(Node,XYPos,false); + if Desc=xtContext then + CTHint:=Tool.GetSmartHint(Node,XYPos,false) + else if Desc in xtAllIdentPredefinedTypes then + CTHint:='type '+ExpressionTypeDescNames[Desc]; Result:=Result+' <nobr>'+SourceToFPDocHint(CTHint)+'</nobr>'; // add link to declaration Result:=Result+'<br>'+LineEnding; - if XYPos.Code=nil then - Tool.CleanPosToCaret(Node.StartPos,XYPos); + if XYPos.Code=nil then begin + if (Node<>nil) then + Tool.CleanPosToCaret(Node.StartPos,XYPos) + else if Desc in xtAllIdentPredefinedTypes then + Tool.CleanPosToCaret(Tool.Tree.Root.StartPos,XYPos); + end; Result:=Result+' '+SourcePosToFPDocHint(XYPos)+LineEnding; Result:=Result+'</div>'+LineEnding; end; +function TCodeHelpManager.GetHTMLDeclarationHeader(Tool: TFindDeclarationTool; + Node: TCodeTreeNode; XYPos: TCodeXYPosition): string; +begin + Result := GetHTMLDeclarationHeader(Tool, Node, xtContext, XYPos); +end; + function TCodeHelpManager.GetPasDocCommentsAsHTML(Tool: TFindDeclarationTool; Node: TCodeTreeNode): string; var @@ -2683,6 +2694,43 @@ NestedComments: Boolean; CommentStr, LastComment: String; + function ShiftLeft(const Comment: String) : String; + var + Lines : TStringList; + S : String; + I, J, LeftMost : Integer; + begin + try + Lines := nil; + Lines := TStringList.Create; + Lines.Text := Comment; + + LeftMost := Length(Comment); + + for I := 0 to Lines.Count - 1 do + begin + if LeftMost <= 1 then + Break; + + S := Lines[I]; + J := 1; + while (J <= Length(S)) and (J < LeftMost) and (S[J] = ' ') do + Inc(J); + + if J < LeftMost then + LeftMost := J; + end; + + if LeftMost > 1 then + for I := 0 to Lines.Count - 1 do + Lines[I] := Copy(Lines[I], LeftMost, Length(Lines[I]) - LeftMost + 1); + + Result := Lines.Text; + finally + FreeAndNil(Lines); + end; + end; + procedure AddComment; begin if (CodeXYPos=nil) or (LastCodeXYPos=nil) @@ -2690,7 +2738,7 @@ or (CodeXYPos^.Y-LastCodeXYPos^.Y>10) then begin // the last comment is at a different position => add a source link if LastComment<>'' then - Result:=Result+'<span class="comment">'+TextToHTML(LastComment) + Result:=Result+'<span class="comment">'+TextToHTML(ShiftLeft(LastComment)) +' ('+SourcePosToFPDocHint(LastCodeXYPos^,'Source')+')' +'</span><br>'+LineEnding; LastComment:=CommentStr; @@ -2703,6 +2751,40 @@ LastCodeXYPos:=CodeXYPos; end; + function ExtractComment(const Source: String; + CommentStart: Integer) : String; + var + CommentEnd, XPos: Integer; + begin + XPos := CodeXYPos^.X; + CommentEnd := FindCommentEnd(Source, CommentStart, NestedComments); + + case Source[CommentStart] of + '/': + begin + CommentStart := CommentStart + 2; + XPos := 0; + end; + '(': + begin + CommentStart := CommentStart + 2; + CommentEnd := CommentEnd - 2; + XPos := XPos + 1; + end; + '{': + begin + CommentStart := CommentStart + 1; + CommentEnd := CommentEnd - 1; + end; + end; + Result:=Copy(Source, CommentStart, CommentEnd - CommentStart); + + Result := TrimRight(Result); + + if XPos > 0 then + Result := StringOfChar(' ', XPos) + Result; + end; + begin Result:=''; if (Tool=nil) or (Node=nil) then exit; @@ -2721,14 +2803,12 @@ if (CommentStart<1) or (CommentStart>CommentCode.SourceLength) then continue; - CommentStr:=ExtractCommentContent(CommentCode.Source,CommentStart, - NestedComments,true,true,true); + CommentStr := ExtractComment(CommentCode.Source, CommentStart); AddComment; end; CommentStr:=''; CodeXYPos:=nil; AddComment; - finally FreeListOfPCodeXYPosition(ListOfPCodeXYPosition); end; @@ -2818,6 +2898,7 @@ while p>0 do begin case Result[p] of + ' ': Result:=copy(Result,1,p-1)+' '+copy(Result,p+1,length(Result)); '<': Result:=copy(Result,1,p-1)+'<'+copy(Result,p+1,length(Result)); '>': Result:=copy(Result,1,p-1)+'>'+copy(Result,p+1,length(Result)); '&': Result:=copy(Result,1,p-1)+'&'+copy(Result,p+1,length(Result)); diff -Nru lazarus-1.4.4+dfsg/ide/codemacroprompt.pas lazarus-1.6+dfsg/ide/codemacroprompt.pas --- lazarus-1.4.4+dfsg/ide/codemacroprompt.pas 2014-04-17 22:25:13.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codemacroprompt.pas 2015-03-10 14:51:21.000000000 +0000 @@ -34,7 +34,7 @@ Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, BasicCodeTools, CodeToolManager, SynEditAutoComplete, SynPluginTemplateEdit, SynPluginSyncronizedEditBase, SynEdit, - MacroIntf, LazIDEIntf, SrcEditorIntf; + LazIDEIntf, SrcEditorIntf, LazUTF8; type TCodeMacroPromptDlg = class(TForm) @@ -86,7 +86,7 @@ function GetDestTemplate: String; override; function SubstituteMacro(const MacroName, MacroParameter: string; - var MacroValue: string): boolean; + out MacroValue: string): boolean; function SubstituteMacros(var Template: String): boolean; public constructor Create(TheTemplate: String); @@ -106,7 +106,7 @@ end; function ExecuteCodeTemplate(SrcEdit: TSourceEditorInterface; - const TemplateName, TemplateValue, TemplateComment, + const TemplateName, TemplateValue, {%H-}TemplateComment, EndOfTokenChr: string; Attributes: TStrings; IndentToTokenStart: boolean): boolean; @@ -169,14 +169,15 @@ Result := FDestTemplate; end; -function TLazTemplateParser.SubstituteMacro(const MacroName, MacroParameter: string; - var MacroValue: string): boolean; +function TLazTemplateParser.SubstituteMacro(const MacroName, + MacroParameter: string; out MacroValue: string): boolean; var Macro: TIDECodeMacro; NewValue: String; ErrMsg: string; begin Result := false; + MacroValue:=''; Macro := IDECodeMacros.FindByName(MacroName); //debugln('SubstituteMacro A ',MacroName,' ',dbgs(Macro<>nil),' ',MacroParameter); if Macro <> nil then begin diff -Nru lazarus-1.4.4+dfsg/ide/codemacroselect.pas lazarus-1.6+dfsg/ide/codemacroselect.pas --- lazarus-1.4.4+dfsg/ide/codemacroselect.pas 2010-06-16 11:53:34.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codemacroselect.pas 2015-03-10 16:27:19.000000000 +0000 @@ -46,9 +46,9 @@ DescriptionMemo: TMemo; MacrosGroupBox: TGroupBox; DescriptionGroupBox: TGroupBox; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); - procedure MacrosListBoxSelectionChange(Sender: TObject; User: boolean); + procedure MacrosListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); private FSelected: TIDECodeMacro; procedure FillMacrosListbox; @@ -57,13 +57,13 @@ end; -function ShowCodeMacroSelectDialog(var Parameter: string): TIDECodeMacro; +function ShowCodeMacroSelectDialog(out Parameter: string): TIDECodeMacro; implementation {$R *.lfm} -function ShowCodeMacroSelectDialog(var Parameter: string): TIDECodeMacro; +function ShowCodeMacroSelectDialog(out Parameter: string): TIDECodeMacro; var CodeMacroSelectDlg: TCodeMacroSelectDlg; begin diff -Nru lazarus-1.4.4+dfsg/ide/codetemplatesdlg.lfm lazarus-1.6+dfsg/ide/codetemplatesdlg.lfm --- lazarus-1.4.4+dfsg/ide/codetemplatesdlg.lfm 2015-01-02 13:34:07.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codetemplatesdlg.lfm 2015-05-14 11:58:52.000000000 +0000 @@ -3,15 +3,15 @@ Height = 540 Top = 174 Width = 729 - ActiveControl = FilenameEdit BorderIcons = [biSystemMenu] Caption = 'CodeTemplateDialog' ClientHeight = 540 ClientWidth = 729 OnClose = FormClose OnCreate = FormCreate + OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object FilenameGroupBox: TGroupBox Left = 6 Height = 51 @@ -20,34 +20,28 @@ Align = alTop BorderSpacing.Around = 6 Caption = 'FilenameGroupBox' - ClientHeight = 34 + ClientHeight = 31 ClientWidth = 713 TabOrder = 0 - object FilenameEdit: TEdit - AnchorSideRight.Control = FilenameButton - Left = 9 - Height = 25 - Top = 4 - Width = 667 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Right = 5 - TabOrder = 0 - Text = 'FilenameEdit' - end - object FilenameButton: TButton + object FilenameEdit: TFileNameEdit + AnchorSideLeft.Control = FilenameGroupBox AnchorSideRight.Control = FilenameGroupBox AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = FilenameEdit - AnchorSideBottom.Side = asrBottom - Left = 681 + Left = 6 Height = 23 - Top = 6 - Width = 26 - Anchors = [akRight, akBottom] + Top = 4 + Width = 701 + FileName = 'FilenameEdit' + FilterIndex = 0 + HideDirectories = False + ButtonWidth = 45 + NumGlyphs = 1 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 6 BorderSpacing.Right = 6 - Caption = '...' - OnClick = FilenameButtonClick - TabOrder = 1 + MaxLength = 0 + TabOrder = 0 + Text = 'FilenameEdit' end end object TemplatesGroupBox: TGroupBox @@ -58,7 +52,7 @@ Align = alTop BorderSpacing.Around = 6 Caption = 'TemplatesGroupBox' - ClientHeight = 150 + ClientHeight = 147 ClientWidth = 713 TabOrder = 1 object TemplateListBox: TListBox @@ -68,7 +62,7 @@ AnchorSideBottom.Control = TemplatesGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 138 + Height = 135 Top = 6 Width = 547 Anchors = [akTop, akLeft, akRight, akBottom] @@ -78,16 +72,14 @@ BorderSpacing.Bottom = 6 ItemHeight = 0 OnSelectionChange = TemplateListBoxSelectionChange - ScrollWidth = 545 TabOrder = 0 - TopIndex = -1 end object AddButton: TButton AnchorSideTop.Control = TemplateListBox AnchorSideRight.Control = TemplatesGroupBox AnchorSideRight.Side = asrBottom Left = 559 - Height = 30 + Height = 25 Top = 6 Width = 148 Anchors = [akTop, akRight] @@ -103,14 +95,14 @@ AnchorSideRight.Control = AddButton AnchorSideRight.Side = asrBottom Left = 559 - Height = 30 - Top = 42 + Height = 25 + Top = 37 Width = 148 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Caption = 'DeleteButton' OnClick = DeleteButtonClick - TabOrder = 3 + TabOrder = 2 end object RenameButton: TButton AnchorSideLeft.Control = AddButton @@ -119,14 +111,14 @@ AnchorSideRight.Control = DeleteButton AnchorSideRight.Side = asrBottom Left = 559 - Height = 30 - Top = 78 + Height = 25 + Top = 68 Width = 148 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Caption = 'RenameButton' OnClick = RenameButtonClick - TabOrder = 2 + TabOrder = 3 end end object EditTemplateGroupBox: TGroupBox @@ -134,13 +126,13 @@ AnchorSideRight.Control = Owner AnchorSideBottom.Control = FilenameGroupBox Left = 6 - Height = 264 + Height = 266 Top = 236 Width = 717 Align = alClient BorderSpacing.Around = 6 Caption = 'EditTemplateGroupBox' - ClientHeight = 247 + ClientHeight = 246 ClientWidth = 713 TabOrder = 2 inline TemplateSynEdit: TSynEdit @@ -151,7 +143,7 @@ AnchorSideBottom.Control = EditTemplateGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 163 + Height = 162 Top = 78 Width = 701 BorderSpacing.Around = 6 @@ -162,7 +154,7 @@ Font.Quality = fqNonAntialiased ParentColor = False ParentFont = False - TabOrder = 0 + TabOrder = 2 Gutter.Width = 57 Gutter.MouseActions = < item @@ -575,11 +567,7 @@ ClickDir = cdDown Command = emcStartDragMove end> - Lines.Strings = ( - 'TemplateSynEdit' - ) VisibleSpecialChars = [vscSpace, vscTabAtLast] - SelectedColor.FrameEdges = sfeAround SelectedColor.BackPriority = 50 SelectedColor.ForePriority = 50 SelectedColor.FramePriority = 50 @@ -587,23 +575,17 @@ SelectedColor.ItalicPriority = 50 SelectedColor.UnderlinePriority = 50 SelectedColor.StrikeOutPriority = 50 - IncrementColor.FrameEdges = sfeAround - HighlightAllColor.FrameEdges = sfeAround BracketHighlightStyle = sbhsBoth BracketMatchColor.Background = clNone BracketMatchColor.Foreground = clNone - BracketMatchColor.FrameEdges = sfeAround BracketMatchColor.Style = [fsBold] FoldedCodeColor.Background = clNone FoldedCodeColor.Foreground = clGray FoldedCodeColor.FrameColor = clGray - FoldedCodeColor.FrameEdges = sfeAround MouseLinkColor.Background = clNone MouseLinkColor.Foreground = clBlue - MouseLinkColor.FrameEdges = sfeAround LineHighlightColor.Background = clNone LineHighlightColor.Foreground = clNone - LineHighlightColor.FrameEdges = sfeAround inline TSynGutterPartList object TSynGutterMarks Width = 24 @@ -614,7 +596,6 @@ MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone - MarkupInfo.FrameEdges = sfeAround DigitCount = 2 ShowOnlyLineNumbersMultiplesOf = 1 ZeroStart = False @@ -631,7 +612,6 @@ MouseActions = <> MarkupInfo.Background = clWhite MarkupInfo.Foreground = clGray - MarkupInfo.FrameEdges = sfeAround end object TSynGutterCodeFolding MouseActions = < @@ -662,7 +642,6 @@ end> MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray - MarkupInfo.FrameEdges = sfeAround MouseActionsExpanded = < item ClickCount = ccAny @@ -693,10 +672,10 @@ AnchorSideTop.Control = EditTemplateGroupBox AnchorSideRight.Control = EditTemplateGroupBox AnchorSideRight.Side = asrBottom - Left = 181 + Left = 168 Height = 70 Top = 2 - Width = 530 + Width = 543 Anchors = [akTop, akLeft, akRight] AutoFill = True AutoSize = True @@ -720,21 +699,21 @@ AnchorSideLeft.Control = EditTemplateGroupBox AnchorSideTop.Control = EditTemplateGroupBox Left = 0 - Height = 93 + Height = 81 Top = 0 - Width = 171 + Width = 158 AutoSize = True BevelOuter = bvNone - ClientHeight = 93 - ClientWidth = 171 - TabOrder = 2 + ClientHeight = 81 + ClientWidth = 158 + TabOrder = 0 object KeepSubIndentCheckBox: TCheckBox AnchorSideLeft.Control = OptionsPanel AnchorSideTop.Control = OptionsPanel Left = 6 - Height = 24 + Height = 19 Top = 6 - Width = 165 + Width = 152 BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = 'KeepSubIndentCheckBox' @@ -747,9 +726,9 @@ AnchorSideTop.Control = KeepSubIndentCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 30 - Width = 139 + Height = 19 + Top = 25 + Width = 130 BorderSpacing.Left = 6 Caption = 'UseMacrosCheckBox' OnChange = UseMacrosCheckBoxChange @@ -763,9 +742,9 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 6 - Height = 27 - Top = 60 - Width = 117 + Height = 25 + Top = 50 + Width = 125 AutoSize = True BorderSpacing.Around = 6 Caption = 'InsertMacroButton' @@ -776,8 +755,8 @@ end object ButtonPanel: TButtonPanel Left = 6 - Height = 28 - Top = 506 + Height = 26 + Top = 508 Width = 717 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -796,17 +775,6 @@ end object ASynPasSyn: TSynFreePascalSyn Enabled = False - AsmAttri.FrameEdges = sfeAround - CommentAttri.FrameEdges = sfeAround - IDEDirectiveAttri.FrameEdges = sfeAround - IdentifierAttri.FrameEdges = sfeAround - KeyAttri.FrameEdges = sfeAround - NumberAttri.FrameEdges = sfeAround - SpaceAttri.FrameEdges = sfeAround - StringAttri.FrameEdges = sfeAround - SymbolAttri.FrameEdges = sfeAround - CaseLabelAttri.FrameEdges = sfeAround - DirectiveAttri.FrameEdges = sfeAround CompilerMode = pcmObjFPC NestedComments = True left = 304 diff -Nru lazarus-1.4.4+dfsg/ide/codetemplatesdlg.pas lazarus-1.6+dfsg/ide/codetemplatesdlg.pas --- lazarus-1.4.4+dfsg/ide/codetemplatesdlg.pas 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codetemplatesdlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -31,20 +31,17 @@ interface uses - Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, - ClipBrd, StdCtrls, Buttons, ExtCtrls, Menus, FileUtil, lazutf8classes, - ButtonPanel, + Classes, SysUtils, LCLProc, Forms, Controls, Dialogs, + ClipBrd, StdCtrls, ExtCtrls, Menus, FileUtil, LazFileUtils, lazutf8classes, + ButtonPanel, EditBtn, // synedit SynEdit, SynHighlighterPas, SynEditAutoComplete, SynRegExpr, // codetools - CodeToolManager, CodeAtom, CodeCache, KeywordFuncLists, BasicCodeTools, - PascalParserTool, + CodeToolManager, CodeCache, KeywordFuncLists, BasicCodeTools, PascalParserTool, // IDEIntf - IDECommands, TextTools, SrcEditorIntf, MenuIntf, IDEWindowIntf, LazIDEIntf, - IDEHelpIntf, IDEDialogs, + SrcEditorIntf, MenuIntf, IDEWindowIntf, LazIDEIntf, IDEHelpIntf, IDEDialogs, // IDE - IDEProcs, InputHistory, LazarusIDEStrConsts, EditorOptions, CodeMacroSelect, - CodeMacroPrompt; + IDEProcs, LazarusIDEStrConsts, EditorOptions, CodeMacroSelect, CodeMacroPrompt; type TAutoCompleteOption = ( @@ -76,6 +73,7 @@ AutoOnOptionsCheckGroup: TCheckGroup; ButtonPanel: TButtonPanel; EditTemplateGroupBox: TGroupBox; + FilenameEdit: TFileNameEdit; InsertMacroButton: TButton; KeepSubIndentCheckBox: TCheckBox; OptionsPanel: TPanel; @@ -85,15 +83,13 @@ TemplateListBox: TListBox; TemplateSynEdit: TSynEdit; TemplatesGroupBox: TGroupBox; - FilenameButton: TButton; - FilenameEdit: TEdit; FilenameGroupBox: TGroupBox; MainPopupMenu: TPopupMenu; procedure AddButtonClick(Sender: TObject); procedure DeleteButtonClick(Sender: TObject); + procedure FormShow(Sender: TObject); procedure RenameButtonClick(Sender: TObject); - procedure FilenameButtonClick(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure HelpButtonClick(Sender: TObject); procedure InsertMacroButtonClick(Sender: TObject); @@ -102,7 +98,7 @@ procedure OnCutMenuItem(Sender: TObject); procedure OnInsertMacroMenuItem(Sender: TObject); procedure OnPasteMenuItem(Sender: TObject); - procedure TemplateListBoxSelectionChange(Sender: TObject; User: boolean); + procedure TemplateListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); procedure UseMacrosCheckBoxChange(Sender: TObject); private SynAutoComplete: TSynEditAutoComplete; @@ -115,22 +111,6 @@ procedure SaveCurCodeTemplate; end; - { TCodeTemplateEditForm } - - TCodeTemplateEditForm = class(TForm) - TokenLabel: TLabel; - TokenEdit: TEdit; - CommentLabel: TLabel; - CommentEdit: TEdit; - OkButton: TButton; - CancelButton: TButton; - procedure OkButtonClick(Sender: TObject); - public - SynAutoComplete: TSynEditAutoComplete; - TemplateIndex: integer; - constructor Create(TheOwner: TComponent); override; - end; - { TLazCodeMacros } TLazCodeMacros = class(TIDECodeMacros) @@ -152,53 +132,53 @@ function ShowCodeTemplateDialog: TModalResult; function AddCodeTemplate(ASynAutoComplete: TSynEditAutoComplete; - var Token, Comment: string): TModalResult; + var AToken, AComment: string): TModalResult; function EditCodeTemplate(ASynAutoComplete: TSynEditAutoComplete; - Index: integer): TModalResult; + AIndex: integer): TModalResult; procedure CreateStandardCodeMacros; // standard code macros -function CodeMacroUpper(const Parameter: string; InteractiveValue: TPersistent; - SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; -function CodeMacroLower(const Parameter: string; InteractiveValue: TPersistent; - SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; -function CodeMacroPaste(const Parameter: string; InteractiveValue: TPersistent; - SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; +function CodeMacroUpper(const Parameter: string; {%H-}InteractiveValue: TPersistent; + {%H-}SrcEdit: TSourceEditorInterface; + var Value, {%H-}ErrorMsg: string): boolean; +function CodeMacroLower(const Parameter: string; {%H-}InteractiveValue: TPersistent; + {%H-}SrcEdit: TSourceEditorInterface; + var Value, {%H-}ErrorMsg: string): boolean; +function CodeMacroPaste(const {%H-}Parameter: string; {%H-}InteractiveValue: TPersistent; + {%H-}SrcEdit: TSourceEditorInterface; + var Value, {%H-}ErrorMsg: string): boolean; function CodeMacroProcedureHead(const Parameter: string; - InteractiveValue: TPersistent; + {%H-}InteractiveValue: TPersistent; SrcEdit: TSourceEditorInterface; var Value, ErrorMsg: string): boolean; -function CodeMacroProcedureName(const Parameter: string; +function CodeMacroProcedureName(const {%H-}Parameter: string; InteractiveValue: TPersistent; SrcEdit: TSourceEditorInterface; var Value, ErrorMsg: string): boolean; -function CodeMacroDate(const Parameter: string; InteractiveValue: TPersistent; +function CodeMacroDate(const Parameter: string; {%H-}InteractiveValue: TPersistent; + {%H-}SrcEdit: TSourceEditorInterface; + var Value, {%H-}ErrorMsg: string): boolean; +function CodeMacroTime(const Parameter: string; {%H-}InteractiveValue: TPersistent; + {%H-}SrcEdit: TSourceEditorInterface; + var Value, {%H-}ErrorMsg: string): boolean; +function CodeMacroDateTime(const Parameter: string; {%H-}InteractiveValue: TPersistent; + {%H-}SrcEdit: TSourceEditorInterface; + var Value, {%H-}ErrorMsg: string): boolean; +function CodeMacroAddMissingEnd(const {%H-}Parameter: string; + {%H-}InteractiveValue: TPersistent; SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; -function CodeMacroTime(const Parameter: string; InteractiveValue: TPersistent; - SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; -function CodeMacroDateTime(const Parameter: string; InteractiveValue: TPersistent; - SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; -function CodeMacroAddMissingEnd(const Parameter: string; - InteractiveValue: TPersistent; - SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; -function CodeMacroOfAll(const Parameter: string; InteractiveValue: TPersistent; + var Value, {%H-}ErrorMsg: string): boolean; +function CodeMacroOfAll(const {%H-}Parameter: string; {%H-}InteractiveValue: TPersistent; SrcEdit: TSourceEditorInterface; var Value, ErrorMsg: string): boolean; function CodeMacroPrevWord(const Parameter: string; - InteractiveValue: TPersistent; + {%H-}InteractiveValue: TPersistent; SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; -function CodeMacroWordAtCursor(const Parameter: string; InteractiveValue: TPersistent; + var Value, {%H-}ErrorMsg: string): boolean; +function CodeMacroWordAtCursor(const {%H-}Parameter: string; {%H-}InteractiveValue: TPersistent; SrcEdit: TSourceEditorInterface; - var Value, ErrorMsg: string): boolean; + var Value, {%H-}ErrorMsg: string): boolean; const CodeTemplatesMenuRootName = 'CodeTemplates'; @@ -224,56 +204,65 @@ CodeTemplateDialog.Free; end; -function AddCodeTemplate(ASynAutoComplete:TSynEditAutoComplete; - var Token,Comment: string):TModalResult; +function IsCodeTemplateOk(ASynAutoComplete: TSynEditAutoComplete; + const AToken: string; AIndex: integer): boolean; var - CodeTemplateEditForm:TCodeTemplateEditForm; + n: integer; begin - Result:=mrCancel; - CodeTemplateEditForm:=TCodeTemplateEditForm.Create(nil); - try - CodeTemplateEditForm.SynAutoComplete:=ASynAutoComplete; - CodeTemplateEditForm.TemplateIndex:=ASynAutoComplete.Completions.Count; - CodeTemplateEditForm.Caption:=lisCodeTemplAddCodeTemplate; - CodeTemplateEditForm.OkButton.Caption:=lisCodeTemplAdd; - CodeTemplateEditForm.TokenEdit.Text:=Token; - CodeTemplateEditForm.CommentEdit.Text:=Comment; - Result:=CodeTemplateEditForm.ShowModal; - if Result=mrOk then begin - Token:=CodeTemplateEditForm.TokenEdit.Text; - Comment:=CodeTemplateEditForm.CommentEdit.Text; - end; - finally - CodeTemplateEditForm.Free; + n:=ASynAutoComplete.Completions.IndexOf(AToken); + if (n<0) or (n=AIndex) then + Result:= true + else + begin + Result:= false; + IDEMessageDialog( + lisCodeTemplError, + Format(lisCodeTemplATokenAlreadyExists, [AToken]), + mtError, [mbOK]); end; end; -function EditCodeTemplate(ASynAutoComplete:TSynEditAutoComplete; - Index:integer):TModalResult; +function AddCodeTemplate(ASynAutoComplete: TSynEditAutoComplete; + var AToken, AComment: string): TModalResult; var - CodeTemplateEditForm:TCodeTemplateEditForm; + Str: array of string; begin - Result:=mrCancel; - if (Index<0) or (Index>=ASynAutoComplete.Completions.Count) then exit; - CodeTemplateEditForm:=TCodeTemplateEditForm.Create(nil); - try - CodeTemplateEditForm.SynAutoComplete:=ASynAutoComplete; - CodeTemplateEditForm.TemplateIndex:=Index; - CodeTemplateEditForm.Caption:=lisCodeTemplEditCodeTemplate; - CodeTemplateEditForm.OkButton.Caption:=lisCodeTemplChange; - CodeTemplateEditForm.TokenEdit.Text:=ASynAutoComplete.Completions[Index]; - CodeTemplateEditForm.CommentEdit.Text:= - ASynAutoComplete.CompletionComments[Index]; - Result:=CodeTemplateEditForm.ShowModal; - if Result=mrOk then begin - ASynAutoComplete.Completions[Index]:= - CodeTemplateEditForm.TokenEdit.Text; - ASynAutoComplete.CompletionComments[Index]:= - CodeTemplateEditForm.CommentEdit.Text; - end; - finally - CodeTemplateEditForm.Free; - end; + Result:= mrCancel; + + SetLength(Str, 2); + Str[0]:= AToken; + Str[1]:= AComment; + + if InputQuery(lisCodeTemplAddCodeTemplate, + [lisCodeTemplToken, lisCodeTemplComment], Str) then + if IsCodeTemplateOk(ASynAutoComplete, Str[0], ASynAutoComplete.Completions.Count) then + begin + Result:= mrOk; + AToken:= Str[0]; + AComment:= Str[1]; + end; +end; + +function EditCodeTemplate(ASynAutoComplete: TSynEditAutoComplete; + AIndex: integer): TModalResult; +var + Str: array of string; +begin + Result:= mrCancel; + if (AIndex<0) or (AIndex>=ASynAutoComplete.Completions.Count) then exit; + + SetLength(Str, 2); + Str[0]:= ASynAutoComplete.Completions[AIndex]; + Str[1]:= ASynAutoComplete.CompletionComments[AIndex]; + + if not InputQuery(lisCodeTemplEditCodeTemplate, + [lisCodeTemplToken, lisCodeTemplComment], Str) then exit; + + if not IsCodeTemplateOk(ASynAutoComplete, Str[0], AIndex) then exit; + + ASynAutoComplete.Completions[AIndex]:= Str[0]; + ASynAutoComplete.CompletionComments[AIndex]:= Str[1]; + Result:= mrOk; end; function CodeMacroUpper(const Parameter: string; InteractiveValue: TPersistent; @@ -640,8 +629,8 @@ end; function CodeMacroEditParam(const Parameter: string; - InteractiveValue: TPersistent; SrcEdit: TSourceEditorInterface; var Value, - ErrorMsg: string; TemplateParser: TIDETemplateParser): boolean; + {%H-}InteractiveValue: TPersistent; {%H-}SrcEdit: TSourceEditorInterface; var Value, + {%H-}ErrorMsg: string; TemplateParser: TIDETemplateParser): boolean; var p: TLazTemplateParser; temp: TStringList; @@ -799,134 +788,6 @@ @CodeMacroEditParam,nil); end; -{ TCodeTemplateEditForm } - -constructor TCodeTemplateEditForm.Create(TheOwner:TComponent); -begin - inherited CreateNew(TheOwner, 1); - if LazarusResources.Find(ClassName)=nil then begin - Width:=300; - Height:=150; - Constraints.MinWidth:=300; - Constraints.MinHeight:=150; - BorderIcons:=[biSystemMenu]; - Position:=poScreenCenter; - - TokenLabel:=TLabel.Create(Self); - with TokenLabel do begin - Name:='TokenLabel'; - Parent:=Self; - Caption:=lisCodeTemplToken; - AutoSize:=true; - AnchorSide[akLeft].Control:=Self; - AnchorSide[akTop].Control:=Self; - AnchorSide[akLeft].Side:=asrLeft; - AnchorSide[akTop].Side:=asrTop; - BorderSpacing.Left:=6; - BorderSpacing.Top:=12; - Anchors:=[akLeft,akTop]; - Show; - end; - - TokenEdit:=TEdit.Create(Self); - with TokenEdit do begin - Name:='TokenEdit'; - Parent:=Self; - AnchorSide[akLeft].Control:=Self; - AnchorSide[akTop].Control:=TokenLabel; - AnchorSide[akRight].Control:=Self; - AnchorSide[akLeft].Side:=asrLeft; - AnchorSide[akTop].Side:=asrBottom; - AnchorSide[akRight].Side:=asrRight; - BorderSpacing.Left:=6; - BorderSpacing.Right:=6; - BorderSpacing.Top:=0; - Anchors:=[akLeft,akTop,akRight]; - Text:=''; - Show; - end; - - CommentLabel:=TLabel.Create(Self); - with CommentLabel do begin - Name:='CommentLabel'; - Parent:=Self; - Caption:=lisCodeTemplComment; - AutoSize:=true; - AnchorSide[akLeft].Control:=Self; - AnchorSide[akTop].Control:=TokenEdit; - AnchorSide[akLeft].Side:=asrLeft; - AnchorSide[akTop].Side:=asrBottom; - BorderSpacing.Left:=6; - BorderSpacing.Top:=12; - Anchors:=[akLeft,akTop]; - Show; - end; - - CommentEdit:=TEdit.Create(Self); - with CommentEdit do begin - Name:='CommentEdit'; - Parent:=Self; - AnchorSide[akLeft].Control:=Self; - AnchorSide[akTop].Control:=CommentLabel; - AnchorSide[akRight].Control:=Self; - AnchorSide[akLeft].Side:=asrLeft; - AnchorSide[akTop].Side:=asrBottom; - AnchorSide[akRight].Side:=asrRight; - BorderSpacing.Left:=6; - BorderSpacing.Right:=6; - BorderSpacing.Top:=0; - Anchors:=[akLeft,akTop,akRight]; - Text:=''; - Show; - end; - - CancelButton:=TButton.Create(Self); - with CancelButton do begin - Name:='CancelButton'; - Parent:=Self; - Caption:=lisCancel; - ModalResult:=mrCancel; - AutoSize:=true; - AnchorSide[akRight].Control:=Self; - AnchorSide[akBottom].Control:=Self; - AnchorSide[akRight].Side:=asrRight; - AnchorSide[akBottom].Side:=asrBottom; - BorderSpacing.Around:=6; - Anchors:=[akRight,akBottom]; - Show; - end; - - OkButton:=TButton.Create(Self); - with OkButton do begin - Name:='OkButton'; - Parent:=Self; - Caption:=lisMenuOk; - OnClick:=@OkButtonClick; - AutoSize:=true; - AnchorSide[akRight].Control:=CancelButton; - AnchorSide[akBottom].Control:=Self; - AnchorSide[akRight].Side:=asrLeft; - AnchorSide[akBottom].Side:=asrBottom; - BorderSpacing.Around:=6; - Anchors:=[akRight,akBottom]; - Show; - end; - end; -end; - -procedure TCodeTemplateEditForm.OkButtonClick(Sender:TObject); -var a:integer; - AText,ACaption:AnsiString; -begin - a:=SynAutoComplete.Completions.IndexOf(TokenEdit.Text); - if (a<0) or (a=TemplateIndex) then - ModalResult:=mrOk - else begin - AText:=Format(lisCodeTemplATokenAlreadyExists, [TokenEdit.Text]); - ACaption:=lisCodeTemplError; - IDEMessageDialog(ACaption,AText,mterror,[mbok]); - end; -end; { TCodeTemplateDialog } @@ -965,6 +826,8 @@ AutoOnOptionsCheckGroup.Items.Add(lisAutomaticallyRemoveCharacter); FilenameEdit.Text:=EditorOpts.CodeTemplateFileName; + FilenameEdit.DialogTitle:=dlgChsCodeTempl; + FilenameEdit.Filter:=dlgFilterDciFile + '|*.dci|' + dlgFilterAll + '|' + GetAllFilesMask; // init synedit ColorScheme:=EditorOpts.ReadColorScheme(ASynPasSyn.GetLanguageName); @@ -1074,7 +937,7 @@ FillCodeTemplateListBox; Index := SynAutoComplete.Completions.IndexOf(Token); if Index >= 0 - then Index := TemplateListBox.Items.IndexOfObject(TObject(Pointer(Index))); + then Index := TemplateListBox.Items.IndexOfObject(TObject({%H-}Pointer(Index))); if Index >= 0 then TemplateListBox.ItemIndex:=Index; @@ -1104,6 +967,13 @@ end; ShowCurCodeTemplate; end; + + TemplateListBox.OnSelectionChange(Self, false); //update btn state +end; + +procedure TCodeTemplateDialog.FormShow(Sender: TObject); +begin + TemplateListBox.OnSelectionChange(Self, true); //update btn states end; procedure TCodeTemplateDialog.RenameButtonClick(Sender: TObject); @@ -1123,24 +993,6 @@ end; end; -procedure TCodeTemplateDialog.FilenameButtonClick(Sender: TObject); -var OpenDialog:TOpenDialog; -begin - OpenDialog:=TOpenDialog.Create(nil); - try - InputHistories.ApplyFileDialogSettings(OpenDialog); - with OpenDialog do begin - Title:=dlgChsCodeTempl; - Filter:=dlgDCIFileDci + '|*.dci|' + dlgAllFiles + '|' + GetAllFilesMask; - if Execute then - FilenameEdit.Text:=FileName; - end; - InputHistories.StoreFileDialogSettings(OpenDialog); - finally - OpenDialog.Free; - end; -end; - procedure TCodeTemplateDialog.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin @@ -1149,7 +1001,14 @@ procedure TCodeTemplateDialog.TemplateListBoxSelectionChange(Sender: TObject; User: boolean); +var + en: boolean; begin + en := TemplateListBox.ItemIndex>=0; + DeleteButton.Enabled := en; + RenameButton.Enabled := en; + EditTemplateGroupBox.Enabled := en; + SaveCurCodeTemplate; ShowCurCodeTemplate; end; @@ -1197,7 +1056,7 @@ // Add the index in SynAutoComplete as Object, since both indexes won't // be in sync after sorting sl.AddObject(SynAutoComplete.Completions[a] - +' - "'+SynAutoComplete.CompletionComments[a]+'"', TObject(Pointer(a))); + +' - "'+SynAutoComplete.CompletionComments[a]+'"', TObject({%H-}Pointer(a))); end; sl.Sort; TemplateListBox.Items.Assign(sl); diff -Nru lazarus-1.4.4+dfsg/ide/codetoolsdefines.lfm lazarus-1.6+dfsg/ide/codetoolsdefines.lfm --- lazarus-1.4.4+dfsg/ide/codetoolsdefines.lfm 2012-09-04 08:51:16.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codetoolsdefines.lfm 2015-09-08 22:06:39.000000000 +0000 @@ -3,17 +3,18 @@ Height = 500 Top = 228 Width = 544 - BorderStyle = bsSizeToolWin + BorderIcons = [biSystemMenu, biMaximize] Caption = 'CodeToolsDefinesEditor' - ClientHeight = 480 + ClientHeight = 479 ClientWidth = 544 KeyPreview = True Menu = MainMenu OnClose = FormClose + OnCreate = FormCreate OnKeyDown = CodeToolsDefinesEditorKeyDown OnKeyUp = CodeToolsDefinesEditorKeyUp Position = poScreenCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object DefineTreeView: TTreeView Left = 6 Height = 123 @@ -21,7 +22,7 @@ Width = 532 Align = alTop BorderSpacing.Around = 6 - DefaultItemHeight = 17 + DefaultItemHeight = 18 ReadOnly = True TabOrder = 0 OnSelectionChanged = DefineTreeViewSelectionChanged @@ -29,18 +30,18 @@ end object SelectedItemGroupBox: TGroupBox Left = 6 - Height = 328 + Height = 293 Top = 146 Width = 532 Align = alClient BorderSpacing.Around = 6 Caption = 'SelectedItemGroupBox' - ClientHeight = 310 + ClientHeight = 276 ClientWidth = 528 - TabOrder = 1 + TabOrder = 2 object NameLabel: TLabel Left = 10 - Height = 16 + Height = 15 Top = 26 Width = 61 BorderSpacing.Right = 6 @@ -49,16 +50,16 @@ end object DescriptionLabel: TLabel Left = 10 - Height = 16 + Height = 15 Top = 53 - Width = 89 + Width = 93 BorderSpacing.Right = 6 Caption = 'DescriptionLabel' ParentColor = False end object TypeLabel: TLabel Left = 6 - Height = 16 + Height = 15 Top = 6 Width = 516 Align = alTop @@ -68,32 +69,34 @@ end object VariableLabel: TLabel Left = 10 - Height = 16 + Height = 15 Top = 78 - Width = 71 + Width = 74 BorderSpacing.Right = 6 Caption = 'VariableLabel' ParentColor = False end object ValueNoteBook: TPageControl Left = 6 - Height = 198 + Height = 164 Top = 106 Width = 516 + ActivePage = ValueAsTextPage Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 + TabIndex = 0 + TabOrder = 3 OnChange = ValueNoteBookPageChanged - TabOrder = 0 object ValueAsTextPage: TTabSheet Caption = 'ValueAsTextPage' - ClientWidth = 508 - ClientHeight = 170 + ClientHeight = 135 + ClientWidth = 512 inline ValueAsTextSynEdit: TSynEdit Left = 0 - Height = 170 + Height = 135 Top = 0 - Width = 508 + Width = 512 Align = alClient Font.Height = -16 Font.Name = 'courier' @@ -104,30 +107,19 @@ TabOrder = 0 BookMarkOptions.Xoffset = -18 Gutter.Visible = False - Gutter.Width = 0 + Gutter.Width = 61 Gutter.MouseActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 13 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcOnMainGutterClick end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end> + RightGutter.Width = 0 + RightGutter.MouseActions = <> Keystrokes = < item Command = ecUp @@ -451,149 +443,108 @@ end> MouseActions = < item - Shift = [] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True Option = 1 - Priority = 0 end item Shift = [ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift, ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccDouble ClickDir = cdDown - Command = 6 + Command = emcSelectWord MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccTriple ClickDir = cdDown - Command = 7 + Command = emcSelectLine MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccQuad ClickDir = cdDown - Command = 8 + Command = emcSelectPara MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbMiddle - ClickCount = ccSingle ClickDir = cdDown - Command = 10 + Command = emcPasteSelection MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssCtrl] ShiftMask = [ssShift, ssAlt, ssCtrl] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdUp - Command = 11 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcMouseLink end> + MouseTextActions = <> MouseSelActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdDown - Command = 9 - MoveCaret = False - Option = 0 - Priority = 0 - end - item - Shift = [] - ShiftMask = [] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdDown - Command = 9 - MoveCaret = False - Option = 0 - Priority = 0 + ClickDir = cdDown + Command = emcStartDragMove + end + item + ClickDir = cdDown + Command = emcStartDragMove end> Lines.Strings = ( 'ValueAsTextSynEdit' ) - Options = [eoDragDropEditing, eoHalfPageScroll, eoScrollByOneLess, eoScrollPastEol, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces, eoBracketHighlight, eoHideRightMargin] + Options = [eoBracketHighlight, eoHalfPageScroll, eoHideRightMargin, eoScrollByOneLess, eoScrollPastEol, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces, eoDragDropEditing] + MouseOptions = [emDragDropEditing] + VisibleSpecialChars = [vscSpace, vscTabAtLast] + SelectedColor.BackPriority = 50 + SelectedColor.ForePriority = 50 + SelectedColor.FramePriority = 50 + SelectedColor.BoldPriority = 50 + SelectedColor.ItalicPriority = 50 + SelectedColor.UnderlinePriority = 50 + SelectedColor.StrikeOutPriority = 50 BracketHighlightStyle = sbhsBoth + BracketMatchColor.Background = clNone + BracketMatchColor.Foreground = clNone + BracketMatchColor.Style = [fsBold] + FoldedCodeColor.Background = clNone + FoldedCodeColor.Foreground = clGray + FoldedCodeColor.FrameColor = clGray + MouseLinkColor.Background = clNone + MouseLinkColor.Foreground = clBlue + LineHighlightColor.Background = clNone + LineHighlightColor.Foreground = clNone inline TSynGutterPartList object TSynGutterMarks - Width = 23 + Width = 24 + MouseActions = <> end object TSynGutterLineNumber - Width = 25 + Width = 21 MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone @@ -604,35 +555,28 @@ end object TSynGutterChanges Width = 4 + MouseActions = <> ModifiedColor = 59900 SavedColor = clGreen end object TSynGutterSeparator Width = 2 + MouseActions = <> + MarkupInfo.Background = clWhite + MarkupInfo.Foreground = clGray end object TSynGutterCodeFolding MouseActions = < item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 16 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldContextMenu end item - Shift = [] ShiftMask = [ssShift] Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end item Shift = [ssShift] @@ -640,58 +584,36 @@ Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False + Command = emcCodeFoldCollaps Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 0 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcNone end> MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray MouseActionsExpanded = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end> MouseActionsCollapsed = < item Shift = [ssCtrl] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldExpand end item - Shift = [] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False + Command = emcCodeFoldExpand Option = 1 - Priority = 0 end> end end @@ -699,8 +621,8 @@ end object ValueAsPathsPage: TTabSheet Caption = 'ValueAsPathsPage' - ClientWidth = 508 - ClientHeight = 168 + ClientHeight = 135 + ClientWidth = 512 inline ValueAsFilePathsSynEdit: TSynEdit AnchorSideRight.Control = DeleteFilePathBitBtn Left = 0 @@ -719,30 +641,19 @@ TabOrder = 0 BookMarkOptions.Xoffset = -18 Gutter.Visible = False - Gutter.Width = 0 + Gutter.Width = 61 Gutter.MouseActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 13 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcOnMainGutterClick end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end> + RightGutter.Width = 0 + RightGutter.MouseActions = <> Keystrokes = < item Command = ecUp @@ -1066,149 +977,108 @@ end> MouseActions = < item - Shift = [] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True Option = 1 - Priority = 0 end item Shift = [ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift, ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccDouble ClickDir = cdDown - Command = 6 + Command = emcSelectWord MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccTriple ClickDir = cdDown - Command = 7 + Command = emcSelectLine MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccQuad ClickDir = cdDown - Command = 8 + Command = emcSelectPara MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbMiddle - ClickCount = ccSingle ClickDir = cdDown - Command = 10 + Command = emcPasteSelection MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssCtrl] ShiftMask = [ssShift, ssAlt, ssCtrl] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdUp - Command = 11 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcMouseLink end> + MouseTextActions = <> MouseSelActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdDown - Command = 9 - MoveCaret = False - Option = 0 - Priority = 0 - end - item - Shift = [] - ShiftMask = [] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdDown - Command = 9 - MoveCaret = False - Option = 0 - Priority = 0 + ClickDir = cdDown + Command = emcStartDragMove + end + item + ClickDir = cdDown + Command = emcStartDragMove end> Lines.Strings = ( 'ValueAsTextSynEdit' ) - Options = [eoDragDropEditing, eoHalfPageScroll, eoScrollByOneLess, eoScrollPastEol, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces, eoBracketHighlight, eoHideRightMargin] + Options = [eoBracketHighlight, eoHalfPageScroll, eoHideRightMargin, eoScrollByOneLess, eoScrollPastEol, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces, eoDragDropEditing] + MouseOptions = [emDragDropEditing] + VisibleSpecialChars = [vscSpace, vscTabAtLast] + SelectedColor.BackPriority = 50 + SelectedColor.ForePriority = 50 + SelectedColor.FramePriority = 50 + SelectedColor.BoldPriority = 50 + SelectedColor.ItalicPriority = 50 + SelectedColor.UnderlinePriority = 50 + SelectedColor.StrikeOutPriority = 50 BracketHighlightStyle = sbhsBoth + BracketMatchColor.Background = clNone + BracketMatchColor.Foreground = clNone + BracketMatchColor.Style = [fsBold] + FoldedCodeColor.Background = clNone + FoldedCodeColor.Foreground = clGray + FoldedCodeColor.FrameColor = clGray + MouseLinkColor.Background = clNone + MouseLinkColor.Foreground = clBlue + LineHighlightColor.Background = clNone + LineHighlightColor.Foreground = clNone inline TSynGutterPartList object TSynGutterMarks - Width = 23 + Width = 24 + MouseActions = <> end object TSynGutterLineNumber - Width = 25 + Width = 21 MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone @@ -1219,35 +1089,28 @@ end object TSynGutterChanges Width = 4 + MouseActions = <> ModifiedColor = 59900 SavedColor = clGreen end object TSynGutterSeparator Width = 2 + MouseActions = <> + MarkupInfo.Background = clWhite + MarkupInfo.Foreground = clGray end object TSynGutterCodeFolding MouseActions = < item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 16 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldContextMenu end item - Shift = [] ShiftMask = [ssShift] Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end item Shift = [ssShift] @@ -1255,58 +1118,36 @@ Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False + Command = emcCodeFoldCollaps Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 0 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcNone end> MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray MouseActionsExpanded = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end> MouseActionsCollapsed = < item Shift = [ssCtrl] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldExpand end item - Shift = [] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False + Command = emcCodeFoldExpand Option = 1 - Priority = 0 end> end end @@ -1318,7 +1159,6 @@ Width = 75 Anchors = [akTop, akRight] Caption = 'MoveFilePathUpBitBtn' - NumGlyphs = 0 OnClick = MoveFilePathUpBitBtnClick TabOrder = 1 end @@ -1329,7 +1169,6 @@ Width = 75 Anchors = [akTop, akRight] Caption = 'MoveFilePathDownBitBtn' - NumGlyphs = 0 OnClick = MoveNodeDownMenuItemClick TabOrder = 2 end @@ -1340,7 +1179,6 @@ Width = 75 Anchors = [akTop, akRight] Caption = 'DeleteFilePathBitBtn' - NumGlyphs = 0 OnClick = DeleteFilePathBitBtnClick TabOrder = 3 end @@ -1351,7 +1189,6 @@ Width = 75 Anchors = [akTop, akRight] Caption = 'InsertFilePathBitBtn' - NumGlyphs = 0 OnClick = InsertFilePathBitBtnClick TabOrder = 4 end @@ -1359,31 +1196,31 @@ end object NameEdit: TEdit Left = 128 - Height = 23 + Height = 25 Top = 23 Width = 394 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - TabOrder = 1 + TabOrder = 0 Text = 'NameEdit' end object DescriptionEdit: TEdit Left = 128 - Height = 23 + Height = 25 Top = 50 Width = 394 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - TabOrder = 2 + TabOrder = 1 Text = 'DescriptionEdit' end object VariableEdit: TEdit Left = 128 - Height = 23 + Height = 25 Top = 76 Width = 394 Anchors = [akTop, akLeft, akRight] - TabOrder = 3 + TabOrder = 2 Text = 'VariableEdit' end end @@ -1396,23 +1233,27 @@ Align = alTop ResizeAnchor = akTop end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 28 + Top = 445 + Width = 532 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + OKButton.OnClick = OKButtonClick + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 3 + ShowButtons = [pbOK, pbCancel] + ShowBevel = False + end object MainMenu: TMainMenu left = 46 top = 72 - object ExitMenuItem: TMenuItem - Caption = 'ExitMenuItem' - object SaveAndExitMenuItem: TMenuItem - Caption = 'SaveAndExitMenuItem' - OnClick = SaveAndExitMenuItemClick - end - object MenuItem2: TMenuItem - Caption = '-' - end - object DontSaveAndExitMenuItem: TMenuItem - Caption = 'DontSaveAndExitMenuItem' - OnClick = DontSaveAndExitMenuItemClick - end - end object EditMenuItem: TMenuItem Caption = 'EditMenuItem' object MoveNodeUpMenuItem: TMenuItem diff -Nru lazarus-1.4.4+dfsg/ide/codetoolsdefines.pas lazarus-1.6+dfsg/ide/codetoolsdefines.pas --- lazarus-1.4.4+dfsg/ide/codetoolsdefines.pas 2014-11-15 12:39:26.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codetoolsdefines.pas 2015-09-08 22:06:39.000000000 +0000 @@ -45,7 +45,7 @@ uses Classes, SysUtils, Math, LCLIntf, Forms, Controls, Buttons, StdCtrls, - ComCtrls, LCLType, ExtCtrls, Menus, LCLProc, Graphics, Dialogs, + ComCtrls, LCLType, ExtCtrls, Menus, LCLProc, Graphics, Dialogs, ButtonPanel, SynEdit, CodeToolManager, DefineTemplates, IDEWindowIntf, IDEImagesIntf, IDEDialogs, @@ -58,6 +58,7 @@ { TCodeToolsDefinesEditor } TCodeToolsDefinesEditor = class(TForm) + ButtonPanel1: TButtonPanel; MenuItem1: TMenuItem; MenuItem10: TMenuItem; MenuItem11: TMenuItem; @@ -66,7 +67,6 @@ MenuItem17: TMenuItem; MenuItem18: TMenuItem; MenuItem19: TMenuItem; - MenuItem2: TMenuItem; MenuItem23: TMenuItem; MenuItem27: TMenuItem; MenuItem29: TMenuItem; @@ -76,11 +76,7 @@ ValueAsPathsPage: TTabSheet; MainSplitter: TSplitter; MainMenu: TMainMenu; - - // exit menu - ExitMenuItem: TMenuItem; - SaveAndExitMenuItem: TMenuItem; - DontSaveAndExitMenuItem: TMenuItem; + // edit nodes EditMenuItem: TMenuItem; @@ -184,10 +180,8 @@ Shift: TShiftState); procedure DefineTreeViewSelectionChanged(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); - - // exit menu - procedure SaveAndExitMenuItemClick(Sender: TObject); - procedure DontSaveAndExitMenuItemClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure OKButtonClick(Sender: TObject); // value notebook procedure ValueNoteBookPageChanged(Sender: TObject); @@ -237,8 +231,7 @@ function ConsistencyCheck: integer; procedure SetValuesEditable(AValue: boolean); public - procedure SetOptions(ACodeToolBoss: TCodeToolManager; - Options: TCodeToolsOptions); + procedure SetOptions(ACodeToolBoss: TCodeToolManager); constructor Create(TheOwner: TComponent); override; destructor Destroy; override; property DefineTree: TDefineTree read FDefineTree; @@ -260,7 +253,7 @@ var CodeToolsDefinesEditor: TCodeToolsDefinesEditor; begin CodeToolsDefinesEditor:=TCodeToolsDefinesEditor.Create(nil); - CodeToolsDefinesEditor.SetOptions(ACodeToolBoss,Options); + CodeToolsDefinesEditor.SetOptions(ACodeToolBoss); CodeToolsDefinesEditor.Macros:=Macros; Result:=CodeToolsDefinesEditor.ShowModal; if Result=mrOk then begin @@ -277,18 +270,6 @@ { TCodeToolsDefinesEditor } -procedure TCodeToolsDefinesEditor.SaveAndExitMenuItemClick(Sender: TObject); -begin - SaveSelectedValues; - FLastSelectedNode:=nil; - ModalResult:=mrOk; -end; - -procedure TCodeToolsDefinesEditor.DontSaveAndExitMenuItemClick(Sender: TObject); -begin - ModalResult:=mrCancel; -end; - procedure TCodeToolsDefinesEditor.CodeToolsDefinesEditorKeyDown( Sender: TObject; var Key: Word; Shift: TShiftState); begin @@ -316,6 +297,19 @@ IDEDialogLayoutList.SaveLayout(Self); end; +procedure TCodeToolsDefinesEditor.FormCreate(Sender: TObject); +begin + ButtonPanel1.OKButton.Caption:= lisOk; + ButtonPanel1.CancelButton.Caption:= lisCancel; +end; + +procedure TCodeToolsDefinesEditor.OKButtonClick(Sender: TObject); +begin + SaveSelectedValues; + FLastSelectedNode:=nil; + ModalResult:=mrOk; +end; + procedure TCodeToolsDefinesEditor.ValueNoteBookPageChanged(Sender: TObject); begin if ValueNoteBook.PageIndex=0 then @@ -388,7 +382,8 @@ else if Sender=InsertAsChildIfDefMenuItem then DefAction:=da_IfDef else if Sender=InsertAsChildIfNotDefMenuItem then DefAction:=da_IfNDef else if Sender=InsertAsChildElseIfMenuItem then DefAction:=da_ElseIf - else if Sender=InsertAsChildElseMenuItem then DefAction:=da_Else; + else if Sender=InsertAsChildElseMenuItem then DefAction:=da_Else + else DefAction:=da_None; InsertNewNode(Behind,DefAction); end; @@ -540,7 +535,8 @@ else if Sender=ConvertActionToIfDefMenuItem then NewAction:=da_IfDef else if Sender=ConvertActionToIfNotDefMenuItem then NewAction:=da_IfNDef else if Sender=ConvertActionToElseIfMenuItem then NewAction:=da_ElseIf - else if Sender=ConvertActionToElseMenuItem then NewAction:=da_Else; + else if Sender=ConvertActionToElseMenuItem then NewAction:=da_Else + else NewAction:=da_None; SelDefNode.Action:=NewAction; SetNodeImages(SelTreeNode,false); SetTypeLabel; @@ -933,11 +929,6 @@ var DefAction: TDefineAction; begin - // exit menu - ExitMenuItem.Caption := lisExit; - SaveAndExitMenuItem.Caption:=lisCodeToolsDefsSaveAndExit; - DontSaveAndExitMenuItem.Caption:=lisCodeToolsDefsExitWithoutSave; - // edit nodes EditMenuItem.Caption := lisEdit; MoveNodeUpMenuItem.Caption:=lisCodeToolsDefsMoveNodeUp; @@ -1390,8 +1381,7 @@ InsertFilePathBitBtn.Enabled:=AValue; end; -procedure TCodeToolsDefinesEditor.SetOptions(ACodeToolBoss: TCodeToolManager; - Options: TCodeToolsOptions); +procedure TCodeToolsDefinesEditor.SetOptions(ACodeToolBoss: TCodeToolManager); begin FLastSelectedNode:=nil; FBoss:=ACodeToolBoss; diff -Nru lazarus-1.4.4+dfsg/ide/codetoolsdefpreview.lfm lazarus-1.6+dfsg/ide/codetoolsdefpreview.lfm --- lazarus-1.4.4+dfsg/ide/codetoolsdefpreview.lfm 2012-08-20 18:05:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codetoolsdefpreview.lfm 2015-09-08 11:44:04.000000000 +0000 @@ -3,6 +3,7 @@ Height = 581 Top = 175 Width = 592 + BorderIcons = [biSystemMenu, biMaximize] Caption = 'CodeToolsDefinesDialog' ClientHeight = 581 ClientWidth = 592 @@ -10,13 +11,13 @@ OnCreate = CodeToolsDefinesDialogCREATE OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object DirectoryGroupbox: TGroupBox AnchorSideLeft.Control = ValuesTabSheet AnchorSideTop.Control = ValuesTabSheet AnchorSideRight.Control = ValuesTabSheet Left = 6 - Height = 62 + Height = 60 Top = 6 Width = 580 Align = alTop @@ -24,13 +25,14 @@ BorderSpacing.Around = 6 Caption = 'DirectoryGroupbox' ClientHeight = 41 - ClientWidth = 572 - TabOrder = 2 + ClientWidth = 576 + TabOrder = 0 object DirectoryCombobox: TComboBox + AnchorSideRight.Control = DirectoryBrowseButton Left = 6 Height = 29 Top = 6 - Width = 470 + Width = 508 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 ItemHeight = 0 @@ -44,12 +46,11 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = DirectoryCombobox AnchorSideBottom.Side = asrBottom - Left = 541 + Left = 520 Height = 29 Top = 6 - Width = 26 + Width = 51 Anchors = [akTop, akRight, akBottom] - AutoSize = True BorderSpacing.Right = 5 Caption = '...' OnClick = DirectoryBrowseButtonCLICK @@ -57,21 +58,22 @@ end end object PageControl1: TPageControl - Left = 0 - Height = 462 - Top = 74 - Width = 592 + Left = 6 + Height = 468 + Top = 72 + Width = 580 ActivePage = ValuesTabSheet Align = alClient + BorderSpacing.Around = 6 TabIndex = 0 - TabOrder = 0 + TabOrder = 1 object ValuesTabSheet: TTabSheet Caption = 'ValuesTabSheet' - ClientHeight = 429 - ClientWidth = 588 + ClientHeight = 437 + ClientWidth = 576 object ValuesListview: TListView Left = 6 - Height = 277 + Height = 285 Top = 6 Width = 296 Align = alLeft @@ -85,21 +87,21 @@ object ValueGroupbox: TGroupBox Left = 6 Height = 123 - Top = 300 - Width = 576 + Top = 308 + Width = 564 Align = alBottom Anchors = [akLeft, akBottom] BorderSpacing.Around = 6 Caption = 'Value' - ClientHeight = 102 - ClientWidth = 568 - TabOrder = 2 + ClientHeight = 104 + ClientWidth = 560 + TabOrder = 4 inline ValueSynedit: TSynEdit Cursor = crDefault Left = 6 - Height = 90 + Height = 92 Top = 6 - Width = 556 + Width = 548 Align = alClient BorderSpacing.Around = 6 Font.Height = -15 @@ -542,6 +544,7 @@ ShiftMask = [ssShift, ssAlt, ssCtrl] Command = emcMouseLink end> + MouseTextActions = <> MouseSelActions = < item ClickDir = cdDown @@ -567,13 +570,17 @@ ClickDir = cdDown Command = emcStartDragMove end> - Lines.Strings = ( - 'ValueSynedit' - ) Options = [eoAutoIndent, eoBracketHighlight, eoScrollPastEol, eoShowScrollHint, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces, eoDragDropEditing, eoShowCtrlMouseLinks] MouseOptions = [emDragDropEditing, emShowCtrlMouseLinks] VisibleSpecialChars = [vscSpace, vscTabAtLast] ReadOnly = True + SelectedColor.BackPriority = 50 + SelectedColor.ForePriority = 50 + SelectedColor.FramePriority = 50 + SelectedColor.BoldPriority = 50 + SelectedColor.ItalicPriority = 50 + SelectedColor.UnderlinePriority = 50 + SelectedColor.StrikeOutPriority = 50 BracketHighlightStyle = sbhsBoth BracketMatchColor.Background = clNone BracketMatchColor.Foreground = clNone @@ -585,6 +592,7 @@ MouseLinkColor.Foreground = clBlue LineHighlightColor.Background = clNone LineHighlightColor.Foreground = clNone + WantTabs = False inline TSynGutterPartList object TSynGutterMarks Width = 24 @@ -609,6 +617,8 @@ object TSynGutterSeparator Width = 2 MouseActions = <> + MarkupInfo.Background = clWhite + MarkupInfo.Foreground = clGray end object TSynGutterCodeFolding MouseActions = < @@ -666,26 +676,26 @@ end object MainSplitter: TSplitter Left = 308 - Height = 289 + Height = 297 Top = 0 Width = 5 end object TemplatesGroupBox: TGroupBox Left = 319 - Height = 277 + Height = 285 Top = 6 - Width = 263 + Width = 251 Align = alClient BorderSpacing.Around = 6 Caption = 'TemplatesGroupBox' - ClientHeight = 256 - ClientWidth = 255 - TabOrder = 3 + ClientHeight = 266 + ClientWidth = 247 + TabOrder = 1 object ParsedTemplatesTreeView: TTreeView Left = 6 Height = 122 Top = 6 - Width = 243 + Width = 235 Align = alTop BorderSpacing.Around = 6 ReadOnly = True @@ -698,54 +708,44 @@ Left = 0 Height = 5 Top = 134 - Width = 255 + Width = 247 Align = alTop ResizeAnchor = akTop end object TemplatesMemo: TMemo Left = 6 - Height = 105 + Height = 115 Top = 145 - Width = 243 + Width = 235 Align = alClient BorderSpacing.Around = 6 - Lines.Strings = ( - 'Memo1' - '' - '' - '' - '' - '' - ) ReadOnly = True - TabOrder = 1 + ScrollBars = ssBoth + TabOrder = 2 + WordWrap = False end end object Splitter1: TSplitter Cursor = crVSplit Left = 0 Height = 5 - Top = 289 - Width = 588 + Top = 297 + Width = 576 Align = alBottom ResizeAnchor = akBottom end end object ReportTabSheet: TTabSheet Caption = 'ReportTabSheet' - ClientHeight = 429 - ClientWidth = 588 + ClientHeight = 437 + ClientWidth = 576 object ReportMemo: TMemo - Left = 0 - Height = 429 - Top = 0 - Width = 588 + Left = 6 + Height = 425 + Top = 6 + Width = 564 Align = alClient - Lines.Strings = ( - 'ReportMemo' - '' - '' - ) + BorderSpacing.Around = 6 ReadOnly = True ScrollBars = ssBoth TabOrder = 0 @@ -754,8 +754,8 @@ end object ButtonPanel: TButtonPanel Left = 6 - Height = 33 - Top = 542 + Height = 29 + Top = 546 Width = 580 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -767,7 +767,7 @@ CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True CancelButton.Enabled = False - TabOrder = 1 + TabOrder = 2 ShowButtons = [pbOK, pbHelp] ShowBevel = False end diff -Nru lazarus-1.4.4+dfsg/ide/codetoolsdefpreview.pas lazarus-1.6+dfsg/ide/codetoolsdefpreview.pas --- lazarus-1.4.4+dfsg/ide/codetoolsdefpreview.pas 2014-06-08 12:49:44.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codetoolsdefpreview.pas 2015-07-04 23:08:00.000000000 +0000 @@ -32,9 +32,8 @@ uses Classes, SysUtils, Math, LCLProc, Forms, Controls, Graphics, Dialogs, ButtonPanel, - StdCtrls, Buttons, ComCtrls, ExtCtrls, FileUtil, AVGLvlTree, - SynEdit, DefineTemplates, ExprEval, - IDEWindowIntf, IDEHelpIntf, + StdCtrls, Buttons, ComCtrls, ExtCtrls, LazFileUtils, AVGLvlTree, + SynEdit, DefineTemplates, ExprEval, IDEWindowIntf, IDEHelpIntf, EditorOptions, LazarusIDEStrConsts, InputHistory, CodeToolsOptions, IDEProcs; type @@ -89,7 +88,7 @@ procedure ClearValues; procedure FillTemplateTree; procedure SetComboBox(AComboBox: TComboBox; const NewText: string); - procedure DefineTreeCalculate(DefineTree: TDefineTree; Node: TDefineTemplate; + procedure DefineTreeCalculate({%H-}DefineTree: TDefineTree; Node: TDefineTemplate; ValueParsed: boolean; const ParsedValue: string; ExpressionCalculated: boolean; const ExpressionResult: string; Execute: boolean); diff -Nru lazarus-1.4.4+dfsg/ide/codetoolsoptions.pas lazarus-1.6+dfsg/ide/codetoolsoptions.pas --- lazarus-1.4.4+dfsg/ide/codetoolsoptions.pas 2014-11-30 10:58:07.000000000 +0000 +++ lazarus-1.6+dfsg/ide/codetoolsoptions.pas 2015-12-04 17:36:14.000000000 +0000 @@ -35,10 +35,9 @@ interface uses - Classes, SysUtils, LazConf, FileUtil, Laz2_XMLCfg, lazutf8classes, - LazFileCache, LResources, Forms, Controls, Buttons, LclProc, LCLType, - ExtCtrls, Dialogs, CodeToolManager, DefineTemplates, SourceChanger, SynEdit, - IDEOptionsIntf, MacroIntf, IDEOptionDefs, LazarusIDEStrConsts, IDEProcs; + Classes, SysUtils, LazConf, LazFileUtils, Laz2_XMLCfg, LazUTF8, LazUTF8Classes, + LazFileCache, LclProc, LCLType, CodeToolManager, DefineTemplates, SourceChanger, + IDEOptionsIntf, MacroIntf, LazarusIDEStrConsts, IDEProcs; const DefaultIndentationFilename = 'laz_indentation.pas'; // in directory GetPrimaryConfigPath @@ -57,6 +56,7 @@ FIdentComplAddDo: Boolean; FIdentComplAddParameterBrackets: boolean; FIdentComplReplaceIdentifier: boolean; + FIdentComplJumpToError: boolean; FIdentComplShowHelp: boolean; // General @@ -82,11 +82,13 @@ FForwardProcBodyInsertPolicy: TForwardProcBodyInsertPolicy; FKeepForwardProcOrder: boolean; FMethodInsertPolicy: TMethodInsertPolicy; + FEventMethodSection: TInsertClassSection; FKeyWordPolicy : TWordPolicy; FIdentifierPolicy: TWordPolicy; FUpdateAllMethodSignatures: boolean; FUpdateMultiProcSignatures: boolean; FUpdateOtherProcSignaturesCase: boolean; + FGroupLocalVariables: boolean; FWordPolicyExceptions: TStringList; FDoNotSplitLineInFront: TAtomTypes; FDoNotSplitLineAfter: TAtomTypes; @@ -97,12 +99,15 @@ FPropertyStoredIdentPostfix: string; FPrivateVariablePrefix: string; FSetPropertyVariablename: string; + FSetPropertyVariableIsPrefix: Boolean; + FSetPropertyVariableUseConst: Boolean; FUsesInsertPolicy: TUsesInsertPolicy; // identifier completion FIdentComplAddSemicolon: Boolean; FIdentComplAddAssignOperator: Boolean; FIdentComplAutoStartAfterPoint: boolean; + FIdentComplAutoUseSingleIdent: boolean; // auto indentation FIndentOnLineBreak: boolean; @@ -116,6 +121,8 @@ procedure SetCodeCompletionTemplateFileName(aValue: String); procedure SetFilename(const AValue: string); procedure SetSetPropertyVariablename(aValue: string); + procedure SetSetPropertyVariableIsPrefix(aValue: Boolean); + procedure SetSetPropertyVariableUseConst(aValue: Boolean); public class function GetGroupCaption:string; override; class function GetInstance: TAbstractIDEOptions; override; @@ -174,12 +181,16 @@ read FUpdateMultiProcSignatures write FUpdateMultiProcSignatures; property UpdateOtherProcSignaturesCase: boolean read FUpdateOtherProcSignaturesCase write FUpdateOtherProcSignaturesCase; + property GroupLocalVariables: boolean + read FGroupLocalVariables write FGroupLocalVariables; property ClassHeaderComments: boolean read FClassHeaderComments write FClassHeaderComments; property ClassImplementationComments: boolean read FClassImplementationComments write FClassImplementationComments; property MethodInsertPolicy: TMethodInsertPolicy read FMethodInsertPolicy write FMethodInsertPolicy; + property EventMethodSection: TInsertClassSection + read FEventMethodSection write FEventMethodSection; property KeyWordPolicy : TWordPolicy read FKeyWordPolicy write FKeyWordPolicy; property IdentifierPolicy: TWordPolicy @@ -204,6 +215,10 @@ read FPrivateVariablePrefix write FPrivateVariablePrefix; property SetPropertyVariablename: string read FSetPropertyVariablename write SetSetPropertyVariablename; + property SetPropertyVariableIsPrefix: Boolean + read FSetPropertyVariableIsPrefix write SetSetPropertyVariableIsPrefix; + property SetPropertyVariableUseConst: Boolean + read FSetPropertyVariableUseConst write SetSetPropertyVariableUseConst; property UsesInsertPolicy: TUsesInsertPolicy read FUsesInsertPolicy write FUsesInsertPolicy; @@ -215,10 +230,14 @@ property IdentComplAddDo: Boolean read FIdentComplAddDo write FIdentComplAddDo; property IdentComplAutoStartAfterPoint: boolean read FIdentComplAutoStartAfterPoint write FIdentComplAutoStartAfterPoint; + property IdentComplAutoUseSingleIdent: boolean read FIdentComplAutoUseSingleIdent + write FIdentComplAutoUseSingleIdent; property IdentComplAddParameterBrackets: boolean read FIdentComplAddParameterBrackets write FIdentComplAddParameterBrackets; property IdentComplReplaceIdentifier: boolean read FIdentComplReplaceIdentifier write FIdentComplReplaceIdentifier; + property IdentComplJumpToError: boolean + read FIdentComplJumpToError write FIdentComplJumpToError; property IdentComplShowHelp: boolean read FIdentComplShowHelp write FIdentComplShowHelp; property IdentComplSortForHistory: boolean read FIdentComplSortForHistory @@ -436,6 +455,8 @@ 'CodeToolsOptions/UpdateMultiProcSignatures/Value',true); FUpdateOtherProcSignaturesCase:=XMLConfig.GetValue( 'CodeToolsOptions/UpdateOtherProcSignaturesCase/Value',true); + FGroupLocalVariables:=XMLConfig.GetValue( + 'CodeToolsOptions/GroupLocalVariables/Value',true); FClassHeaderComments:=XMLConfig.GetValue( 'CodeToolsOptions/ClassHeaderComments/Value',true); FClassImplementationComments:=XMLConfig.GetValue( @@ -444,6 +465,9 @@ FMethodInsertPolicy:=MethodInsertPolicyNameToPolicy(XMLConfig.GetValue( 'CodeToolsOptions/MethodInsertPolicy/Value', MethodInsertPolicyNames[mipClassOrder])); + FEventMethodSection:=InsertClassSectionNameToSection(XMLConfig.GetValue( + 'CodeToolsOptions/EventMethodSection/Value', + InsertClassSectionNames[DefaultEventMethodSection]), DefaultEventMethodSection); FKeyWordPolicy:=WordPolicyNameToPolicy(XMLConfig.GetValue( 'CodeToolsOptions/KeyWordPolicy/Value', WordPolicyNames[wpLowerCase])); @@ -470,6 +494,10 @@ 'CodeToolsOptions/PrivateVariablePrefix/Value',''),'F'); FSetPropertyVariablename:=ReadIdentifier(XMLConfig.GetValue( 'CodeToolsOptions/SetPropertyVariablename/Value',''),'AValue'); + FSetPropertyVariableIsPrefix:=XMLConfig.GetValue( + 'CodeToolsOptions/SetPropertyVariableIsPrefix/Value',false); + FSetPropertyVariableUseConst:=XMLConfig.GetValue( + 'CodeToolsOptions/SetPropertyVariableUseConst/Value',false); FUsesInsertPolicy:=UsesInsertPolicyNameToPolicy(XMLConfig.GetValue( 'CodeToolsOptions/UsesInsertPolicy/Value', UsesInsertPolicyNames[DefaultUsesInsertPolicy])); @@ -483,10 +511,14 @@ 'CodeToolsOptions/IdentifierCompletion/AddDo',true); FIdentComplAutoStartAfterPoint:=XMLConfig.GetValue( 'CodeToolsOptions/IdentifierCompletion/AutoStartAfterPoint',true); + FIdentComplAutoUseSingleIdent:=XMLConfig.GetValue( + 'CodeToolsOptions/IdentifierCompletion/AutoUseSingleIdent',true); FIdentComplAddParameterBrackets:=XMLConfig.GetValue( 'CodeToolsOptions/IdentifierCompletion/AutoAddParameterBrackets',true); FIdentComplReplaceIdentifier:=XMLConfig.GetValue( 'CodeToolsOptions/IdentifierCompletion/ReplaceIdentifier',true); + FIdentComplJumpToError:=XMLConfig.GetValue( + 'CodeToolsOptions/IdentifierCompletion/JumpToError',true); FIdentComplShowHelp:=XMLConfig.GetValue( 'CodeToolsOptions/IdentifierCompletion/ShowHelp',false); FIdentComplSortForHistory:=XMLConfig.GetValue( @@ -585,11 +617,17 @@ 'CodeToolsOptions/UpdateOtherProcSignaturesCase/Value',FUpdateOtherProcSignaturesCase, true); XMLConfig.SetDeleteValue( + 'CodeToolsOptions/GroupLocalVariables/Value',FGroupLocalVariables, + true); + XMLConfig.SetDeleteValue( 'CodeToolsOptions/ClassImplementationComments/Value', FClassImplementationComments,true); XMLConfig.SetDeleteValue('CodeToolsOptions/MethodInsertPolicy/Value', MethodInsertPolicyNames[FMethodInsertPolicy], MethodInsertPolicyNames[mipClassOrder]); + XMLConfig.SetDeleteValue('CodeToolsOptions/EventMethodSection/Value', + InsertClassSectionNames[FEventMethodSection], + InsertClassSectionNames[DefaultEventMethodSection]); XMLConfig.SetDeleteValue('CodeToolsOptions/KeyWordPolicy/Value', WordPolicyNames[FKeyWordPolicy], WordPolicyNames[wpLowerCase]); @@ -616,6 +654,10 @@ FPrivateVariablePrefix,'F'); XMLConfig.SetDeleteValue('CodeToolsOptions/SetPropertyVariablename/Value', FSetPropertyVariablename,'AValue'); + XMLConfig.SetDeleteValue('CodeToolsOptions/SetPropertyVariableIsPrefix/Value', + FSetPropertyVariableIsPrefix,false); + XMLConfig.SetDeleteValue('CodeToolsOptions/SetPropertyVariableUseConst/Value', + FSetPropertyVariableUseConst,false); XMLConfig.SetDeleteValue('CodeToolsOptions/UsesInsertPolicy/Value', UsesInsertPolicyNames[FUsesInsertPolicy], UsesInsertPolicyNames[DefaultUsesInsertPolicy]); @@ -629,10 +671,14 @@ FIdentComplAddDo,true); XMLConfig.SetDeleteValue('CodeToolsOptions/IdentifierCompletion/AutoStartAfterPoint', FIdentComplAutoStartAfterPoint,true); + XMLConfig.SetDeleteValue('CodeToolsOptions/IdentifierCompletion/AutoUseSingleIdent', + FIdentComplAutoUseSingleIdent,true); XMLConfig.SetDeleteValue('CodeToolsOptions/IdentifierCompletion/AutoAddParameterBrackets', FIdentComplAddParameterBrackets,true); XMLConfig.SetDeleteValue('CodeToolsOptions/IdentifierCompletion/ReplaceIdentifier', FIdentComplReplaceIdentifier,true); + XMLConfig.SetDeleteValue('CodeToolsOptions/IdentifierCompletion/JumpToError', + FIdentComplJumpToError,true); XMLConfig.SetDeleteValue('CodeToolsOptions/IdentifierCompletion/ShowHelp', FIdentComplShowHelp,false); XMLConfig.SetDeleteValue('CodeToolsOptions/IdentifierCompletion/SortForHistory', @@ -679,22 +725,33 @@ var ConfFileName: string; begin - ConfFileName:=SetDirSeparators( - GetPrimaryConfigPath+'/'+DefaultCodeToolsOptsFile); + ConfFileName:=SetDirSeparators(GetPrimaryConfigPath+'/'+DefaultCodeToolsOptsFile); CopySecondaryConfigFile(DefaultCodeToolsOptsFile); if (not FileExistsCached(ConfFileName)) then begin debugln('Looking for code tools config file: "' + ConfFileName + '"'); - debugln(UTF8ToConsole(lisCompilerNOTECodetoolsConfigFileNotFoundUsingDefaults)); + debugln(lisCompilerNOTECodetoolsConfigFileNotFoundUsingDefaults); end; FFilename:=ConfFilename; end; +procedure TCodeToolsOptions.SetSetPropertyVariableIsPrefix(aValue: Boolean); +begin + if FSetPropertyVariableIsPrefix=aValue then Exit; + FSetPropertyVariableIsPrefix:=aValue; +end; + procedure TCodeToolsOptions.SetSetPropertyVariablename(aValue: string); begin if FSetPropertyVariablename=aValue then Exit; FSetPropertyVariablename:=aValue; end; +procedure TCodeToolsOptions.SetSetPropertyVariableUseConst(aValue: Boolean); +begin + if FSetPropertyVariableUseConst=aValue then Exit; + FSetPropertyVariableUseConst:=aValue; +end; + procedure TCodeToolsOptions.Assign(Source: TPersistent); var CodeToolsOpts: TCodeToolsOptions absolute Source; @@ -734,9 +791,11 @@ FKeepForwardProcOrder:=CodeToolsOpts.KeepForwardProcOrder; FUpdateMultiProcSignatures:=CodeToolsOpts.UpdateMultiProcSignatures; FUpdateOtherProcSignaturesCase:=CodeToolsOpts.UpdateOtherProcSignaturesCase; + FGroupLocalVariables:=CodeToolsOpts.GroupLocalVariables; FClassHeaderComments:=CodeToolsOpts.ClassHeaderComments; FClassImplementationComments:=CodeToolsOpts.ClassImplementationComments; FMethodInsertPolicy:=CodeToolsOpts.FMethodInsertPolicy; + FEventMethodSection:=CodeToolsOpts.FEventMethodSection; FKeyWordPolicy:=CodeToolsOpts.FKeyWordPolicy; FIdentifierPolicy:=CodeToolsOpts.FIdentifierPolicy; FDoNotSplitLineInFront:=CodeToolsOpts.FDoNotSplitLineInFront; @@ -748,6 +807,8 @@ FPropertyStoredIdentPostfix:=CodeToolsOpts.FPropertyStoredIdentPostfix; FPrivateVariablePrefix:=CodeToolsOpts.FPrivateVariablePrefix; FSetPropertyVariablename:=CodeToolsOpts.FSetPropertyVariablename; + FSetPropertyVariableIsPrefix:=CodeToolsOpts.FSetPropertyVariableIsPrefix; + FSetPropertyVariableUseConst:=CodeToolsOpts.FSetPropertyVariableUseConst; FUsesInsertPolicy:=CodeToolsOpts.FUsesInsertPolicy; // identifier completion @@ -755,8 +816,10 @@ FIdentComplAddAssignOperator:=CodeToolsOpts.FIdentComplAddAssignOperator; FIdentComplAddDo:=CodeToolsOpts.FIdentComplAddDo; FIdentComplAutoStartAfterPoint:=CodeToolsOpts.FIdentComplAutoStartAfterPoint; + FIdentComplAutoUseSingleIdent:=CodeToolsOpts.FIdentComplAutoUseSingleIdent; FIdentComplAddParameterBrackets:=CodeToolsOpts.FIdentComplAddParameterBrackets; FIdentComplReplaceIdentifier:=CodeToolsOpts.FIdentComplReplaceIdentifier; + FIdentComplJumpToError:=CodeToolsOpts.FIdentComplJumpToError; FIdentComplShowHelp:=CodeToolsOpts.FIdentComplShowHelp; FIdentComplSortForHistory:=CodeToolsOpts.FIdentComplSortForHistory; FIdentComplSortForScope:=CodeToolsOpts.FIdentComplSortForScope; @@ -790,9 +853,11 @@ FKeepForwardProcOrder:=true; FUpdateMultiProcSignatures:=true; FUpdateOtherProcSignaturesCase:=true; + FGroupLocalVariables:=true; FClassHeaderComments:=true; FClassImplementationComments:=true; FMethodInsertPolicy:=mipClassOrder; + FEventMethodSection:=DefaultEventMethodSection; FKeyWordPolicy:=wpLowerCase; FIdentifierPolicy:=wpNone; FDoNotSplitLineInFront:=DefaultDoNotSplitLineInFront; @@ -804,6 +869,8 @@ FPropertyStoredIdentPostfix:='IsStored'; FPrivateVariablePrefix:='f'; FSetPropertyVariablename:='AValue'; + FSetPropertyVariableIsPrefix:=false; + FSetPropertyVariableUseConst:=false; FUsesInsertPolicy:=DefaultUsesInsertPolicy; // identifier completion @@ -811,8 +878,10 @@ FIdentComplAddAssignOperator:=true; FIdentComplAddDo:=true; FIdentComplAutoStartAfterPoint:=true; + FIdentComplAutoUseSingleIdent:=true; FIdentComplAddParameterBrackets:=true; FIdentComplReplaceIdentifier:=true; + FIdentComplJumpToError:=true; FIdentComplShowHelp:=false; FIdentComplSortForHistory:=true; FIdentComplSortForScope:=true; @@ -864,9 +933,11 @@ and (FKeepForwardProcOrder=CodeToolsOpts.KeepForwardProcOrder) and (FUpdateMultiProcSignatures=CodeToolsOpts.UpdateMultiProcSignatures) and (FUpdateOtherProcSignaturesCase=CodeToolsOpts.UpdateOtherProcSignaturesCase) + and (FGroupLocalVariables=CodeToolsOpts.GroupLocalVariables) and (FClassHeaderComments=CodeToolsOpts.ClassHeaderComments) and (FClassImplementationComments=CodeToolsOpts.ClassImplementationComments) and (FMethodInsertPolicy=CodeToolsOpts.FMethodInsertPolicy) + and (FEventMethodSection=CodeToolsOpts.FEventMethodSection) and (FKeyWordPolicy=CodeToolsOpts.FKeyWordPolicy) and (FIdentifierPolicy=CodeToolsOpts.FIdentifierPolicy) and (FDoNotSplitLineInFront=CodeToolsOpts.FDoNotSplitLineInFront) @@ -878,6 +949,8 @@ and (FPropertyStoredIdentPostfix=CodeToolsOpts.FPropertyStoredIdentPostfix) and (FPrivateVariablePrefix=CodeToolsOpts.FPrivateVariablePrefix) and (FSetPropertyVariablename=CodeToolsOpts.FSetPropertyVariablename) + and (FSetPropertyVariableIsPrefix=CodeToolsOpts.FSetPropertyVariableIsPrefix) + and (FSetPropertyVariableUseConst=CodeToolsOpts.FSetPropertyVariableUseConst) and (FUsesInsertPolicy=CodeToolsOpts.FUsesInsertPolicy) // identifier completion @@ -885,8 +958,10 @@ and (FIdentComplAddAssignOperator=CodeToolsOpts.FIdentComplAddAssignOperator) and (FIdentComplAddDo=CodeToolsOpts.FIdentComplAddDo) and (FIdentComplAutoStartAfterPoint=CodeToolsOpts.FIdentComplAutoStartAfterPoint) + and (FIdentComplAutoUseSingleIdent=CodeToolsOpts.FIdentComplAutoUseSingleIdent) and (FIdentComplAddParameterBrackets=CodeToolsOpts.FIdentComplAddParameterBrackets) and (FIdentComplReplaceIdentifier=CodeToolsOpts.FIdentComplReplaceIdentifier) + and (FIdentComplJumpToError=CodeToolsOpts.FIdentComplJumpToError) and (FIdentComplShowHelp=CodeToolsOpts.FIdentComplShowHelp) and (FIdentComplSortForHistory=CodeToolsOpts.FIdentComplSortForHistory) and (FIdentComplSortForScope=CodeToolsOpts.FIdentComplSortForScope) @@ -954,6 +1029,8 @@ // CreateCode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AssignTo(Boss.SourceChangeCache.BeautifyCodeOptions); Boss.SetPropertyVariablename:=SetPropertyVariablename; + Boss.SetPropertyVariableIsPrefix:=SetPropertyVariableIsPrefix; + Boss.SetPropertyVariableUseConst:=SetPropertyVariableUseConst; // Identifier Completion - - - - - - - - - - - - - - - - - - - - - - - - - - Boss.IdentifierList.SortForHistory:=IdentComplSortForHistory; @@ -978,9 +1055,11 @@ Beauty.KeepForwardProcOrder:=KeepForwardProcOrder; Beauty.UpdateMultiProcSignatures:=UpdateMultiProcSignatures; Beauty.UpdateOtherProcSignaturesCase:=UpdateOtherProcSignaturesCase; + Beauty.GroupLocalVariables:=GroupLocalVariables; Beauty.ClassHeaderComments:=ClassHeaderComments; Beauty.ClassImplementationComments:=ClassImplementationComments; Beauty.MethodInsertPolicy:=MethodInsertPolicy; + Beauty.EventMethodSection:=EventMethodSection; Beauty.KeyWordPolicy:=KeyWordPolicy; Beauty.IdentifierPolicy:=IdentifierPolicy; Beauty.SetupWordPolicyExceptions(WordPolicyExceptions); diff -Nru lazarus-1.4.4+dfsg/ide/compileroptions.pp lazarus-1.6+dfsg/ide/compileroptions.pp --- lazarus-1.4.4+dfsg/ide/compileroptions.pp 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/ide/compileroptions.pp 2015-11-30 16:31:44.000000000 +0000 @@ -42,9 +42,9 @@ interface uses - typinfo, Classes, SysUtils, FileProcs, FileUtil, Laz2_XMLCfg, LazFileUtils, + Classes, SysUtils, FileProcs, FileUtil, Laz2_XMLCfg, LazFileUtils, AvgLvlTree, Laz2_DOM, LazUTF8, - InterfaceBase, LCLProc, Forms, Controls, ExprEval, + InterfaceBase, Forms, Controls, LCLProc, ExprEval, DefineTemplates, CodeToolsCfgScript, CodeToolManager, KeywordFuncLists, BasicCodeTools, // IDEIntf @@ -52,7 +52,7 @@ IDEOptionsIntf, // IDE LazarusIDEStrConsts, IDEProcs, LazConf, TransferMacros, etFPCMsgParser, - ModeMatrixOpts, CompOptsModes, EnvironmentOpts; + IDECmdLine, ModeMatrixOpts, CompOptsModes, EnvironmentOpts; const DefaultCompilerPath = '$(CompPath)'; @@ -423,6 +423,7 @@ fInheritedOptParseStamps: integer; FParsedOpts: TParsedCompilerOptions; FStorePathDelim: TPathDelimSwitch; + FOtherDefines: TStrings; // list of user selectable defines for custom options FFPCMsgFile: TFPCMsgFilePoolItem; // other tools @@ -486,12 +487,10 @@ procedure SetAlternativeCompile(const Command: string; ScanFPCMsgs: boolean); override; - function MakeOptionsString(Flags: TCompilerCmdLineOptions): String; - function MakeOptionsString(const MainSourceFileName: string; - Flags: TCompilerCmdLineOptions): String; virtual; + function MakeOptionsString(Flags: TCompilerCmdLineOptions): String; virtual; function GetSyntaxOptionsString: string; virtual; function CreatePPUFilename(const SourceFileName: string): string; override; - function CreateTargetFilename(const MainSourceFileName: string): string; virtual; + function CreateTargetFilename: string; virtual; function GetTargetFileExt: string; virtual; function GetTargetFilePrefix: string; virtual; procedure GetInheritedCompilerOptions(var OptionsList: TFPList // list of TAdditionalCompilerOptions @@ -562,6 +561,7 @@ // stored properties property StorePathDelim: TPathDelimSwitch read FStorePathDelim write FStorePathDelim; + property OtherDefines: TStrings read FOtherDefines; // compilation property CompilerPath: String read GetCompilerPath write SetCompilerPath; @@ -1095,6 +1095,7 @@ begin inherited Create(AOwner); FParsedOpts := TParsedCompilerOptions.Create(Self); + FOtherDefines := TStringList.Create; FExecuteBefore := AToolClass.Create(Self); FExecuteBefore.OnChanged := @OnItemChanged; FExecuteAfter := AToolClass.Create(Self); @@ -1120,6 +1121,7 @@ FreeAndNil(fBuildMacros); FreeThenNil(fExecuteBefore); FreeThenNil(fExecuteAfter); + FreeThenNil(FOtherDefines); FreeThenNil(FParsedOpts); inherited Destroy; end; @@ -1509,7 +1511,8 @@ var b: boolean; dit: TCompilerDbgSymbolType; - i: Integer; + i, Cnt: Integer; + s: String; begin { Load the compiler options from the XML file } p:=Path; @@ -1673,6 +1676,15 @@ CustomOptions := LineBreaksToSystemLineBreaks(aXMLConfig.GetValue(p+'CustomOptions/Value', '')); UseCommentsInCustomOptions := aXMLConfig.GetValue(p+'ConfigFile/UseCommentsInCustomOptions/Value', false); + FOtherDefines.Clear; + Cnt := aXMLConfig.GetValue(p+'OtherDefines/Count', 0); + for i := 0 to Cnt-1 do + begin + s := aXMLConfig.GetValue(p+'OtherDefines/Define'+IntToStr(i)+'/Value', ''); + if s <> '' then + FOtherDefines.Add(s); + end; + { Compilation } CompilerPath := f(aXMLConfig.GetValue(p+'CompilerPath/Value',DefaultCompilerPath)); @@ -1731,6 +1743,7 @@ var P, s: string; + i: Integer; begin { Save the compiler options to the XML file } p:=Path; @@ -1854,6 +1867,11 @@ LineBreaksToSystemLineBreaks(CustomOptions),''); // do not touch / \ characters aXMLConfig.SetDeleteValue(p+'ConfigFile/UseCommentsInCustomOptions/Value', UseCommentsInCustomOptions,false); + for i:=0 to FOtherDefines.Count-1 do + aXMLConfig.SetDeleteValue(p+'OtherDefines/Define'+IntToStr(i)+'/Value', + FOtherDefines[i],''); + aXMLConfig.SetDeleteValue(p+'OtherDefines/Count',FOtherDefines.Count,0); + { Compilation } aXMLConfig.SetDeleteValue(p+'CompilerPath/Value', f(CompilerPath),DefaultCompilerPath); ExecuteBefore.SaveToXMLConfig(aXMLConfig,p+'ExecuteBefore/',UsePathDelim); @@ -1903,8 +1921,7 @@ {------------------------------------------------------------------------------ TBaseCompilerOptions CreateTargetFilename ------------------------------------------------------------------------------} -function TBaseCompilerOptions.CreateTargetFilename( - const MainSourceFileName: string): string; +function TBaseCompilerOptions.CreateTargetFilename: string; procedure AppendDefaultExt; var @@ -1926,7 +1943,7 @@ PathName: String; CurTargetOS: String; aSrcOS: String; - begin + begin //debugln ( 'Filename result is ',Result, ' in PrependDefaultType' ); if (ExtractFileName(Result)='') or (CompareText(copy(ExtractFileName(Result),1,3), 'lib') = 0) then exit; @@ -1940,7 +1957,7 @@ aSrcOS:=GetDefaultSrcOSForTargetOS(CurTargetOS); if (CompareText(aSrcOS, 'unix') = 0) then begin - Result:=PathName+Prefix+UTF8LowerCase(FileName); + Result:=PathName+Prefix+LazUTF8.UTF8LowerCase(FileName); end else begin Result:=PathName+Prefix+FileName; end; @@ -1952,6 +1969,7 @@ var UnitOutDir: String; OutFilename: String; + Dir: String; begin Result:=TargetFilename; if Assigned(ParsedOpts.OnLocalSubstitute) then @@ -1971,9 +1989,13 @@ if UnitOutDir='' then UnitOutDir:=BaseDirectory; Result:=AppendPathDelim(UnitOutDir)+ExtractFileName(Result); - end else begin + end else if BaseDirectory<>'' then begin // the program is put relative to the base directory Result:=CreateAbsolutePath(Result,BaseDirectory); + end else begin + // put into test directory + Dir:=EnvironmentOptions.GetParsedTestBuildDirectory; + Result:=CreateAbsolutePath(Result,Dir); end; end else begin // no target given => put into unit output directory @@ -1981,7 +2003,9 @@ UnitOutDir:=GetUnitOutPath(false); if UnitOutDir='' then UnitOutDir:=BaseDirectory; - OutFilename:=ExtractFileNameOnly(MainSourceFileName); + if UnitOutDir='' then + UnitOutDir:=EnvironmentOptions.GetParsedTestBuildDirectory; + OutFilename:=ExtractFileNameOnly(GetDefaultMainSourceFileName); //debugln('TBaseCompilerOptions.CreateTargetFilename MainSourceFileName=',MainSourceFileName,' OutFilename=',OutFilename,' TargetFilename=',TargetFilename,' UnitOutDir=',UnitOutDir); Result:=CreateAbsolutePath(OutFilename,UnitOutDir); end; @@ -2041,7 +2065,6 @@ var AddOptionsList: TFPList; // list of TAdditionalCompilerOptions p: TCompilerOptionsParseType; - ParsedValue, UnparsedValue: String; begin if (fInheritedOptParseStamps<>CompilerParseStamp) then begin @@ -2057,23 +2080,6 @@ end; AddOptionsList.Free; end; - // add project additions - if Assigned(OnAppendCustomOption) then begin - UnparsedValue:=''; - OnAppendCustomOption(Self,UnparsedValue,bmgtAll); - if Assigned(ParsedOpts.OnLocalSubstitute) then - begin - //DebugLn(['TParsedCompilerOptions.DoParseOption local "',ParsedValue,'" ...']); - ParsedValue:=ParsedOpts.OnLocalSubstitute(UnparsedValue,false); - end else - ParsedValue:=UnparsedValue; - ParsedValue:=SpecialCharsToSpaces(ParsedValue,true); - UnparsedValue:=SpecialCharsToSpaces(UnparsedValue,true); - fInheritedOptions[coptParsed][icoCustomOptions]:= - MergeCustomOptions(fInheritedOptions[coptParsed][icoCustomOptions],ParsedValue); - fInheritedOptions[coptUnparsed][icoCustomOptions]:= - MergeCustomOptions(fInheritedOptions[coptUnparsed][icoCustomOptions],UnparsedValue); - end; fInheritedOptParseStamps:=CompilerParseStamp; end; Result:=fInheritedOptions[Parsed][Option]; @@ -2453,15 +2459,6 @@ end; {------------------------------------------------------------------------------ - TBaseCompilerOptions MakeOptionsString -------------------------------------------------------------------------------} -function TBaseCompilerOptions.MakeOptionsString( - Flags: TCompilerCmdLineOptions): String; -begin - Result:=MakeOptionsString(GetDefaultMainSourceFileName,Flags); -end; - -{------------------------------------------------------------------------------ function TBaseCompilerOptions.MakeOptionsString( const MainSourceFilename: string; Flags: TCompilerCmdLineOptions): String; @@ -2469,9 +2466,9 @@ Get all the options and create a string that can be passed to the compiler ------------------------------------------------------------------------------} function TBaseCompilerOptions.MakeOptionsString( - const MainSourceFileName: string; Flags: TCompilerCmdLineOptions): String; + Flags: TCompilerCmdLineOptions): String; var - switches, tempsw, t: String; + switches, tempsw, quietsw, t: String; InhLinkerOpts: String; NewTargetFilename: String; NewTargetDirectory: String; @@ -2495,20 +2492,25 @@ FPCompilerFilename: String; s: string; CurFPCMsgFile: TFPCMsgFilePoolItem; + Quiet: Boolean; procedure EnableDisableVerbosityFlag(Enable: boolean; c: char); begin - if Enable then - tempsw+=c + if Quiet or not Enable then + quietsw+=c+'-' else - switches+=' -v'+c+'-'; + tempsw+=c; end; -begin - CurMainSrcFile:=MainSourceFileName; - if CurMainSrcFile='' then - CurMainSrcFile:=GetDefaultMainSourceFileName; + procedure EnableVerbosityFlag(Enable: boolean; c: char); + begin + if Quiet then + quietsw+=c+'-' + else if Enable then + tempsw+=c; + end; +begin switches := ''; { options of fpc 2.7.1 : @@ -2761,7 +2763,7 @@ Supported Microcontroller types: } - + Quiet:=ConsoleVerbosity<=-3; // lazbuild -q -q, lazarus -q -q -q CurTargetOS:=''; CurTargetCPU:=''; @@ -2856,11 +2858,8 @@ if SmallerCode then OptimizeSwitches := OptimizeSwitches + 's'; { OptimizationLevel 1 = Level 1 2 = Level 2 3 = Level 3 } - case (OptimizationLevel) of - 1: OptimizeSwitches := OptimizeSwitches + '1'; - 2: OptimizeSwitches := OptimizeSwitches + '2'; - 3: OptimizeSwitches := OptimizeSwitches + '3'; - end; + if OptimizationLevel>0 then + OptimizeSwitches := OptimizeSwitches + IntToStr(OptimizationLevel); if OptimizeSwitches<>'' then switches := switches + ' -O'+OptimizeSwitches; @@ -2962,42 +2961,40 @@ { ---------------- Other Tab -------------------- } { Verbosity } - if (WriteFPCLogo) then + if Quiet then + switches := switches + ' -l-' + else if WriteFPCLogo then switches := switches + ' -l'; tempsw := ''; + quietsw := ''; // the default fpc.cfg normally contains -viwn, if the user does not want - // to see warning pass -vw- + // to see warnings pass -vw- tempsw := tempsw + 'e'; // always pass -ve, you cannot ignore errors EnableDisableVerbosityFlag(ShowWarn,'w'); EnableDisableVerbosityFlag(ShowNotes,'n'); EnableDisableVerbosityFlag(ShowHints,'h'); - tempsw := tempsw + 'i'; // always pass -vi, (e.g. (3104) Compiling) needed to resolve filenames in fpc messages without path - if ShowLineNum then - tempsw := tempsw + 'l'; - if ShowDebugInfo then - tempsw := tempsw + 'd'; - if ShowUsedFiles then - tempsw := tempsw + 'u'; - if ShowTriedFiles then - tempsw := tempsw + 't'; - if ShowCompProc then - tempsw := tempsw + 'p'; - if ShowCond then - tempsw := tempsw + 'c'; - if ShowExecInfo then - tempsw := tempsw + 'x'; + // always pass -vi for IDE, (e.g. (3104) Compiling) needed to resolve filenames in fpc messages without path + EnableVerbosityFlag(true,'i'); + // optional verbosity flags, usually off in fpc.cfg, pass them only if wanted + EnableVerbosityFlag(ShowLineNum,'l'); + EnableVerbosityFlag(ShowDebugInfo,'d'); + EnableVerbosityFlag(ShowUsedFiles,'u'); + EnableVerbosityFlag(ShowTriedFiles,'t'); + EnableVerbosityFlag(ShowCompProc,'p'); + EnableVerbosityFlag(ShowCond,'c'); + EnableVerbosityFlag(ShowExecInfo,'x'); - if ShowAll or (ccloAddVerboseAll in Flags) then + if (ShowAll and not (Quiet)) or (ccloAddVerboseAll in Flags) then tempsw := 'a'; tempsw := tempsw + 'bq'; // b = full file names, q = message ids - if (tempsw <> '') then begin - tempsw := '-v' + tempsw; - switches := switches + ' ' + tempsw; - end; + if (tempsw <> '') then + switches := switches + ' -v' + tempsw; + if (quietsw <> '') then + switches := switches + ' -v' + quietsw; - // -vm flags allow to enable/disable types of messages +// -vm flags allow to enable/disable types of messages // Passing a -vm ID, unknown by the current compiler will create an error // => check the compiler message file if IDEMessageFlags.Count>0 then begin @@ -3027,12 +3024,11 @@ { Use Custom Config File @ = yes and path } if not (ccloNoMacroParams in Flags) - and (CustomConfigFile) and (ConfigFilePath<>'') then begin + and (CustomConfigFile) and (ConfigFilePath<>'') then switches := switches + ' ' + PrepareCmdLineOption('@' + ConfigFilePath); - end; { ------------- Search Paths ---------------- } - + CurOutputDir:=''; if not (ccloNoMacroParams in Flags) then begin // include path @@ -3067,8 +3063,7 @@ CurOutputDir:=ParsedOpts.GetParsedValue(pcosOutputDir); if not (ccloAbsolutePaths in Flags) then CurOutputDir:=CreateRelativePath(CurOutputDir,BaseDirectory,true); - end else - CurOutputDir:=''; + end; if CurOutputDir<>'' then switches := switches + ' '+PrepareCmdLineOption('-FU'+CurOutputDir); end; @@ -3078,12 +3073,13 @@ { * -o to define the target file name. * -FE if the target file name is not in the project directory (where the lpi file is) * -FU if the unit output directory is not empty } + CurMainSrcFile:=GetDefaultMainSourceFileName; //DebugLn(['TBaseCompilerOptions.MakeOptionsString ',DbgSName(Self),' ',ccloDoNotAppendOutFileOption in Flags,' TargetFilename="',TargetFilename,'" CurMainSrcFile="',CurMainSrcFile,'" CurOutputDir="',CurOutputDir,'"']); if (not (ccloDoNotAppendOutFileOption in Flags)) and (not (ccloNoMacroParams in Flags)) and ((TargetFilename<>'') or (CurMainSrcFile<>'') or (CurOutputDir<>'')) then begin - NewTargetFilename := CreateTargetFilename(CurMainSrcFile); + NewTargetFilename := CreateTargetFilename; if (NewTargetFilename<>'') then begin if not (ccloAbsolutePaths in Flags) then @@ -3417,6 +3413,7 @@ ClearInheritedOptions; ParsedOpts.Assign(CompOpts.ParsedOpts); FStorePathDelim := CompOpts.FStorePathDelim; + FOtherDefines.Assign(CompOpts.FOtherDefines); // compilation CompilerPath := CompOpts.CompilerPath; @@ -3562,6 +3559,7 @@ if Done(Tool.AddDiff('ConfigFilePath',fConfigFilePath,CompOpts.fConfigFilePath)) then exit; if Done(Tool.AddDiff('StopAfterErrCount',fStopAfterErrCount,CompOpts.fStopAfterErrCount)) then exit; if Done(Tool.AddDiff('CustomOptions',CustomOptions,CompOpts.CustomOptions)) then exit; + if Done(Tool.AddDiff('OtherDefines',OtherDefines.Text,CompOpts.OtherDefines.Text)) then exit; // compilation if Tool<>nil then Tool.Path:='Compilation'; @@ -3823,6 +3821,7 @@ Opts: TBaseCompilerOptions; VarName: String; Vars: TCTCfgScriptVariables; + MoreOptions: String; begin Result:=Values[Option].UnparsedValue; Opts:=nil; @@ -3846,7 +3845,19 @@ pcosLinkerOptions: Result:=MergeLinkerOptions(Result,Vars[VarName]); pcosCustomOptions: - Result:=MergeCustomOptions(Result,Vars[VarName]); + begin + Result:=MergeCustomOptions(Result,Vars[VarName]); + // add project/global overrides + if (Owner is TBaseCompilerOptions) and Assigned(OnAppendCustomOption) then + begin + MoreOptions:=''; + OnAppendCustomOption(Opts,MoreOptions,bmgtAll); + if Assigned(OnLocalSubstitute) then + MoreOptions:=OnLocalSubstitute(MoreOptions,false); + MoreOptions:=SpecialCharsToSpaces(MoreOptions,true); + Result:=MergeCustomOptions(Result,MoreOptions); + end; + end; pcosOutputDir,pcosCompilerPath: if Vars.IsDefined(PChar(VarName)) then Result:=GetForcedPathDelims(Vars[VarName]); @@ -3930,6 +3941,8 @@ Result:=GetParsedPIValue(pcosBaseDir) else Result:=GetParsedValue(pcosBaseDir); + if Result='' then + Result:=EnvironmentOptions.GetParsedTestBuildDirectory; end; procedure MakeFilenameAbsolute(var aFilename: string); diff -Nru lazarus-1.4.4+dfsg/ide/compiler.pp lazarus-1.6+dfsg/ide/compiler.pp --- lazarus-1.4.4+dfsg/ide/compiler.pp 2015-02-25 23:06:50.000000000 +0000 +++ lazarus-1.6+dfsg/ide/compiler.pp 2015-10-27 17:30:50.000000000 +0000 @@ -38,8 +38,8 @@ interface uses - Classes, SysUtils, Process, LCLProc, Forms, Controls, contnrs, strutils, FileUtil, - IDEExternToolIntf, IDEMsgIntf, CompOptsIntf, LazIDEIntf, + Classes, SysUtils, LCLProc, Forms, Controls, contnrs, strutils, + IDEExternToolIntf, IDEMsgIntf, LazIDEIntf, LazUTF8, IDECmdLine, LazarusIDEStrConsts, CompilerOptions, Project, DefineTemplates, TransferMacros, EnvironmentOpts, LazFileUtils; @@ -278,7 +278,7 @@ TargetFilename: String; begin Result:=mrCancel; - if ConsoleVerbosity>=0 then + if ConsoleVerbosity>=1 then DebugLn('TCompiler.Compile WorkingDir="',WorkingDir,'" CompilerFilename="',CompilerFilename,'" CompilerParams="',CompilerParams,'"'); try @@ -323,8 +323,7 @@ if TargetCPU<>GetCompiledTargetCPU then Title+=Format(lisCPU, [TargetCPU]); TargetFilename:=AProject.GetShortFilename( - AProject.CompilerOptions.CreateTargetFilename(AProject.MainFilename), - false); + AProject.CompilerOptions.CreateTargetFilename,false); if TargetFilename<>'' then Title+=Format(lisTarget2, [TargetFilename]); @@ -338,6 +337,7 @@ Tool.CmdLineParams:=CmdLine; Tool.Process.CurrentDirectory:=WorkingDir; FPCParser:=TFPCParser(Tool.AddParsers(SubToolFPC)); + FPCParser.ShowLinesCompiled:=EnvironmentOptions.MsgViewShowFPCMsgLinesCompiled; FPCParser.HideHintsSenderNotUsed:=not AProject.CompilerOptions.ShowHintsForSenderNotUsed; FPCParser.HideHintsUnitNotUsedInMainSource:=not AProject.CompilerOptions.ShowHintsForUnusedUnitsInMainSrc; if (not AProject.CompilerOptions.ShowHintsForUnusedUnitsInMainSrc) @@ -899,8 +899,10 @@ else Opt1 := ''; end - else + else begin + Opt2 := ''; Opt1 := aDescr; + end; if Opt1 <> '' then // Can be empty when line in help output is split. NewSetElem(Opt1) else if fCompilerOpts.Count > 0 then diff -Nru lazarus-1.4.4+dfsg/ide/componentlist.lfm lazarus-1.6+dfsg/ide/componentlist.lfm --- lazarus-1.4.4+dfsg/ide/componentlist.lfm 2015-03-15 11:15:39.000000000 +0000 +++ lazarus-1.6+dfsg/ide/componentlist.lfm 2015-06-28 12:27:53.000000000 +0000 @@ -11,7 +11,6 @@ OnClose = FormClose OnKeyDown = FormKeyDown OnShow = FormShow - Position = poScreenCenter LCLVersion = '1.5' object PageControl: TPageControl AnchorSideLeft.Control = Owner diff -Nru lazarus-1.4.4+dfsg/ide/componentlist.pas lazarus-1.6+dfsg/ide/componentlist.pas --- lazarus-1.4.4+dfsg/ide/componentlist.pas 2015-06-09 00:02:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/componentlist.pas 2016-02-06 14:12:55.000000000 +0000 @@ -34,7 +34,7 @@ uses Classes, SysUtils, LCLType, Forms, Controls, Graphics, StdCtrls, ExtCtrls, ComCtrls, ButtonPanel, Menus, LazarusIDEStrConsts, ComponentReg, PackageDefs, - IDEImagesIntf, TreeFilterEdit, FormEditingIntf; + IDEImagesIntf, TreeFilterEdit, FormEditingIntf, IDEOptionDefs; type @@ -71,23 +71,26 @@ procedure miExpandClick(Sender: TObject); procedure OKButtonClick(Sender: TObject); procedure ComponentsDblClick(Sender: TObject); - procedure ComponentsChange(Sender: TObject; Node: TTreeNode); + procedure ComponentsChange(Sender: TObject; {%H-}Node: TTreeNode); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure pmCollapseExpandPopup(Sender: TObject); procedure TreeFilterEdAfterFilter(Sender: TObject); procedure PageControlChange(Sender: TObject); procedure TreeKeyPress(Sender: TObject; var Key: char); - procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); private PrevPageIndex: Integer; PrevChangeStamp: Integer; // List for Component inheritence view FClassList: TStringList; FKeepSelected: Boolean; + FFirstTimeAnchored: Boolean; procedure ClearSelection; - procedure ComponentWasAdded; + procedure SelectionWasChanged; + procedure ComponentWasAdded({%H-}ALookupRoot, {%H-}AComponent: TComponent; + {%H-}ARegisteredComponent: TRegisteredComponent); procedure DoComponentInheritence(Comp: TRegisteredComponent); - procedure UpdateComponentSelection; + procedure UpdateComponents; procedure UpdateButtonState; protected procedure UpdateShowing; override; @@ -109,6 +112,9 @@ constructor TComponentListForm.Create(AOwner: TComponent); begin inherited Create(AOwner); + + Name:=NonModalIDEWindowNames[nmiwComponentList]; + //Translations LabelSearch.Caption := lisMenuFind; Caption := lisCmpLstComponents; @@ -129,8 +135,9 @@ PageControl.ActivePage := TabSheetList; if Assigned(IDEComponentPalette) then begin - UpdateComponentSelection; + UpdateComponents; TreeFilterEd.InvalidateFilter; + IDEComponentPalette.AddHandlerSelectionChanged(@SelectionWasChanged); IDEComponentPalette.AddHandlerComponentAdded(@ComponentWasAdded); end; end; @@ -157,9 +164,13 @@ UpdateButtonState; end else + begin PageControl.AnchorSideBottom.Side := asrBottom; + // Only with AnchorDocking. This is a temporary solution, many usability issues remain. + FFirstTimeAnchored := True; + end; - if not Assigned(Parent) then//only in undocked IDE + if not Assigned(Parent) then //only in undocked IDE begin if TreeFilterEd.CanFocus then TreeFilterEd.SetFocus; @@ -170,7 +181,7 @@ procedure TComponentListForm.FormActivate(Sender: TObject); begin if Assigned(IDEComponentPalette) and (IDEComponentPalette.ChangeStamp<>PrevChangeStamp) then - UpdateComponentSelection; + UpdateComponents; end; procedure TComponentListForm.ClearSelection; @@ -180,27 +191,50 @@ InheritanceTree.Selected := Nil; end; +procedure SelectTreeComp(aTree: TTreeView); +var + Node: TTreeNode; +begin + with IDEComponentPalette do + if Assigned(Selected) then + Node := aTree.Items.FindNodeWithText(Selected.ComponentClass.ClassName) + else + Node := Nil; + aTree.Selected := Node; +end; + +procedure TComponentListForm.SelectionWasChanged; +begin + // ToDo: Select the component in active treeview. + if ListTree.IsVisible then + SelectTreeComp(ListTree) + else if PalletteTree.IsVisible then + SelectTreeComp(PalletteTree) + else if InheritanceTree.IsVisible then + SelectTreeComp(InheritanceTree) +end; + +function GetSelectedTreeComp(aTree: TTreeView): TRegisteredComponent; +begin + if Assigned(aTree.Selected) then + Result := TRegisteredComponent(aTree.Selected.Data) + else + Result := nil; +end; + function TComponentListForm.GetSelectedComponent: TRegisteredComponent; begin - Result:=nil; + Result := nil; if ListTree.IsVisible then - begin - if Assigned(ListTree.Selected) then - Result := TRegisteredComponent(ListTree.Selected.Data); - end + Result := GetSelectedTreeComp(ListTree) else if PalletteTree.IsVisible then - begin - if Assigned(PalletteTree.Selected) then - Result := TRegisteredComponent(PalletteTree.Selected.Data); - end + Result := GetSelectedTreeComp(PalletteTree) else if InheritanceTree.IsVisible then - begin - if Assigned(InheritanceTree.Selected) then - Result := TRegisteredComponent(InheritanceTree.Selected.Data); - end; + Result := GetSelectedTreeComp(InheritanceTree) end; -procedure TComponentListForm.ComponentWasAdded; +procedure TComponentListForm.ComponentWasAdded(ALookupRoot, AComponent: TComponent; + ARegisteredComponent: TRegisteredComponent); begin ClearSelection; UpdateButtonState; @@ -273,7 +307,7 @@ end; end; -procedure TComponentListForm.UpdateComponentSelection; +procedure TComponentListForm.UpdateComponents; // Fill all three tabsheets: Flat list, Palette layout and Component inheritence. var Pg: TBaseComponentPage; @@ -357,10 +391,21 @@ var AComponent: TRegisteredComponent; begin - AComponent:=GetSelectedComponent; - if AComponent<>nil then - IDEComponentPalette.Selected:=AComponent; - UpdateButtonState; + if FFirstTimeAnchored then + begin + // Only run once when the anchored IDE starts. + FFirstTimeAnchored := False; + IDEComponentPalette.SetSelectedComp(nil, False); + ListTree.Selected := Nil; + PalletteTree.Selected := Nil; + InheritanceTree.Selected := Nil; + end + else begin + AComponent:=GetSelectedComponent; + if AComponent<>nil then + IDEComponentPalette.SetSelectedComp(AComponent, ssShift in GetKeyShiftState); + UpdateButtonState; + end; end; procedure TComponentListForm.TreeKeyPress(Sender: TObject; var Key: char); @@ -408,10 +453,14 @@ end; procedure TComponentListForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); -//Close the form on escape key like every other IDE dialog does begin if Key=VK_ESCAPE then - Close; + begin + if ListTree.Selected = nil then //close only if no component is selected + Close + else + ListTree.Selected := nil; //unselect if component is selected + end; end; procedure TComponentListForm.OKButtonClick(Sender: TObject); @@ -424,6 +473,8 @@ IDEComponentPalette.Selected := AComponent; FKeepSelected := True; Close; + if Assigned(IDEComponentPalette.OnClassSelected) then + IDEComponentPalette.OnClassSelected(Self); end; end; diff -Nru lazarus-1.4.4+dfsg/ide/componentpalette.pas lazarus-1.6+dfsg/ide/componentpalette.pas --- lazarus-1.4.4+dfsg/ide/componentpalette.pas 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/componentpalette.pas 2015-10-26 21:34:11.000000000 +0000 @@ -38,51 +38,23 @@ interface uses - Classes, SysUtils, Controls, Forms, Graphics, ComCtrls, Buttons, Menus, ExtCtrls, - FileUtil, LazFileCache, AVL_Tree, PropEdits, LCLProc, FormEditingIntf, LazIDEIntf, - {$IFDEF CustomIDEComps} - CustomIDEComps, - {$ENDIF} - MainBase, LazarusIDEStrConsts, ComponentReg, DesignerProcs, PackageDefs, EnvironmentOpts; + Classes, SysUtils, AVL_Tree, fgl, + Controls, Forms, Graphics, ComCtrls, Buttons, Menus, ExtCtrls, + LazFileUtils, LazFileCache, PropEdits, LCLProc, MainBase, LazarusIDEStrConsts, + FormEditingIntf, LazIDEIntf, IDEImagesIntf, + ComponentReg, DesignerProcs, PackageDefs, EnvironmentOpts; const CompPalSelectionToolBtnPrefix = 'PaletteSelectBtn'; CompPaletteCompBtnPrefix = 'PaletteBtn'; - {$IFDEF VerboseComponentPalette} - CompPalVerbPgName = 'Dialogs'; //'Standard'; - {$ENDIF} type - TComponentSelectionMode = ( - csmSingle, // reset selection on component add - csmMulty // don't reset selection on component add - ); - - TComponentPalette = class; - - { TCompPaletteUserOrder } - - // Like TCompPaletteOptions but collects all pages and components, - // including the original ones. The palette is later synchronized with this. - TCompPaletteUserOrder = class(TBaseCompPaletteOptions) - private - fPalette: TComponentPalette; - // Reference to either EnvironmentOptions.ComponentPaletteOptions or a copy of it. - fOptions: TCompPaletteOptions; - public - constructor Create(aPalette: TBaseComponentPalette); - destructor Destroy; override; - procedure Clear; - function SortPagesAndCompsUserOrder: Boolean; - public - property Options: TCompPaletteOptions read fOptions write fOptions; - end; - { TComponentPage } TComponentPage = class(TBaseComponentPage) private + fPageComponent: TCustomPage; + fSelectButton: TComponent; fBtnIndex: integer; - fIndex: Integer; // Index in the Pages container. fCompNames: TStringList; // Reference to component names. fGuiCreated: Boolean; procedure ReAlignButtons; @@ -96,8 +68,14 @@ public constructor Create(const ThePageName: string); destructor Destroy; override; + function GetScrollBox: TScrollBox; + public + property PageComponent: TCustomPage read fPageComponent write fPageComponent; + property SelectButton: TComponent read fSelectButton write fSelectButton; end; + TComponentButtonMap = specialize TFPGMap<String,TSpeedButton>; + { TComponentPalette } TComponentPalette = class(TBaseComponentPalette) @@ -110,118 +88,70 @@ procedure OpenPackageClicked(Sender: TObject); procedure OpenUnitClicked(Sender: TObject); procedure ComponentListClicked(Sender: TObject); + procedure OptionsClicked(Sender: TObject); procedure PalettePopupMenuPopup(Sender: TObject); procedure PopupMenuPopup(Sender: TObject); private - // Component cache, a tree of TRegisteredComponent sorted for componentclass - fComponentCache: TAVLTree; - // Two page caches, one for original pages, one for user ordered pages. - // Lists have page names. Object holds another StringList for component names. - fOrigComponentPageCache: TStringList; // Original - fUserComponentPageCache: TStringList; // User ordered + fComponentButtons: TComponentButtonMap; // Visual container for tabs FPageControl: TPageControl; - fNoteBookNeedsUpdate: boolean; FOnOpenPackage: TNotifyEvent; FOnOpenUnit: TNotifyEvent; - FOnClassSelected: TNotifyEvent; - FSelected: TRegisteredComponent; - FSelectionMode: TComponentSelectionMode; + FOnChangeActivePage: TNotifyEvent; fUnregisteredIcon: TCustomBitmap; fSelectButtonIcon: TCustomBitmap; fUpdatingPageControl: boolean; // Used by UpdateNoteBookButtons fOldActivePage: TTabSheet; fVisiblePageIndex: integer; - // User ordered + original pages and components - fUserOrder: TCompPaletteUserOrder; + procedure ClearButtons; + function FindCompByButton(Button: TSpeedButton): TRegisteredComponent; + function FindPkgCompByButton(Button: TComponent): TPkgComponent; + function IndexOfPageComponent(AComponent: TComponent): integer; procedure ReAlignButtons(aSheet: TCustomPage); procedure UpdateNoteBookButtons(ForceUpdateAll: Boolean); - //procedure AssociatePageComps(aPageInd: Integer; aCompNames: TStringList); - function CreatePagesFromUserOrder: Boolean; - procedure CacheOrigComponentPages; procedure RemoveUnneededPage(aSheet: TCustomPage); procedure SetPageControl(const AValue: TPageControl); procedure SelectionToolClick(Sender: TObject); procedure ComponentBtnMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure ComponentBtnMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + Shift: TShiftState; {%H-}X, {%H-}Y: Integer); + procedure ComponentBtnMouseUp(Sender: TObject; {%H-}Button: TMouseButton; + {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); procedure ComponentBtnDblClick(Sender: TObject); - procedure OnPageMouseWheel(Sender: TObject; Shift: TShiftState; - WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); + procedure OnPageMouseWheel(Sender: TObject; {%H-}Shift: TShiftState; + WheelDelta: Integer; {%H-}MousePos: TPoint; var Handled: Boolean); procedure CreatePopupMenu; procedure UnselectAllButtons; + procedure SelectionWasChanged; function GetUnregisteredIcon: TCustomBitmap; function GetSelectButtonIcon: TCustomBitmap; - function SelectAButton(Button: TComponent): boolean; - protected - procedure DoEndUpdate(Changed: boolean); override; - procedure OnPageAddedComponent(Component: TRegisteredComponent); override; - procedure OnPageRemovedComponent(Page: TBaseComponentPage; - Component: TRegisteredComponent); override; - procedure CheckComponentDesignerVisible(AComponent: TComponent; - var Invisible: boolean); - procedure SetSelected(const AValue: TRegisteredComponent); override; - function GetSelected: TRegisteredComponent; override; + function SelectAButton(Button: TSpeedButton): boolean; + procedure ComponentWasAdded({%H-}ALookupRoot, {%H-}AComponent: TComponent; + {%H-}ARegisteredComponent: TRegisteredComponent); + procedure CheckComponentDesignerVisible(AComponent: TComponent; var Invisible: boolean); public constructor Create; destructor Destroy; override; - procedure Clear; - procedure ClearButtons; - procedure DoAfterComponentAdded; override; procedure OnGetNonVisualCompIcon(Sender: TObject; AComponent: TComponent; var Icon: TCustomBitmap); - function FindComponent(const CompClassName: string): TRegisteredComponent; override; - procedure RegisterCustomIDEComponents( - const RegisterProc: RegisterUnitComponentProc); override; procedure Update(ForceUpdateAll: Boolean); override; - function AssignOrigCompsForPage(PageName: string; - DestComps: TStringList): Boolean; override; - function AssignOrigVisibleCompsForPage(PageName: string; - DestComps: TStringList): Boolean; override; - function RefUserCompsForPage(PageName: string): TStringList; override; public property PageControl: TPageControl read FPageControl write SetPageControl; - property SelectionMode: TComponentSelectionMode read FSelectionMode write FSelectionMode; property OnOpenPackage: TNotifyEvent read FOnOpenPackage write FOnOpenPackage; property OnOpenUnit: TNotifyEvent read FOnOpenUnit write FOnOpenUnit; - property OnClassSelected: TNotifyEvent read FOnClassSelected write FOnClassSelected; - // User ordered + original pages and components. - property UserOrder: TCompPaletteUserOrder read fUserOrder; + property OnChangeActivePage: TNotifyEvent read FOnChangeActivePage write FOnChangeActivePage; end; function CompareControlsWithTag(Control1, Control2: Pointer): integer; implementation - +uses componentpalette_options; {$R ../images/components_images.res} {$DEFINE USE_PageIndex} const OVERVIEW_PANEL_WIDTH = 20; -function CompareRegisteredComponents(Data1, Data2: Pointer): integer; -var - RegComp1: TRegisteredComponent; - RegComp2: TRegisteredComponent; -begin - RegComp1:=TRegisteredComponent(Data1); - RegComp2:=TRegisteredComponent(Data2); - Result:=CompareText(RegComp1.ComponentClass.ClassName, - RegComp2.ComponentClass.ClassName); -end; - -function CompareClassNameWithRegisteredComponent(Key, Data: Pointer): integer; -var - AClassName: String; - RegComp: TRegisteredComponent; -begin - AClassName:=String(Key); - RegComp:=TRegisteredComponent(Data); - Result:=CompareText(AClassName,RegComp.ComponentClass.ClassName); -end; - function CompareControlsWithTag(Control1, Control2: Pointer): integer; var Ctrl1: TControl absolute Control1; @@ -235,61 +165,6 @@ Result:=0; end; -{ TCompPaletteUserOrder } - -constructor TCompPaletteUserOrder.Create(aPalette: TBaseComponentPalette); -begin - inherited Create; - fPalette:=TComponentPalette(aPalette); -end; - -destructor TCompPaletteUserOrder.Destroy; -begin - Clear; - inherited Destroy; -end; - -procedure TCompPaletteUserOrder.Clear; -begin - inherited Clear; -end; - -function TCompPaletteUserOrder.SortPagesAndCompsUserOrder: Boolean; -// Calculate page order using user config and default order. User config takes priority. -// This order will finally be shown in the palette. -var - DstComps: TStringList; - PageI, i: Integer; - PgName: String; -begin - Result:=True; - Clear; - fPalette.CacheOrigComponentPages; - // First add user defined page order from EnvironmentOptions, - FComponentPages.Assign(fOptions.PageNames); - // then add other pages which don't have user configuration - for PageI := 0 to fPalette.OrigPagePriorities.Count-1 do - begin - PgName:=fPalette.OrigPagePriorities.Keys[PageI]; - if (FComponentPages.IndexOf(PgName) = -1) - and (fOptions.HiddenPageNames.IndexOf(PgName) = -1) then - FComponentPages.Add(PgName); - end; - // Map components with their pages - for PageI := 0 to FComponentPages.Count-1 do - begin - PgName := FComponentPages[PageI]; - DstComps := TStringList.Create; - DstComps.CaseSensitive := True; - FComponentPages.Objects[PageI] := DstComps; - i := fOptions.ComponentPages.IndexOf(PgName); - if i >= 0 then // Add components reordered by user. - DstComps.Assign(fOptions.ComponentPages.Objects[i] as TStringList) - else // Add components that were not reordered. - fPalette.AssignOrigCompsForPage(PgName, DstComps); - end; -end; - { TComponentPage } constructor TComponentPage.Create(const ThePageName: string); @@ -299,9 +174,20 @@ destructor TComponentPage.Destroy; begin + FreeAndNil(fSelectButton); + FreeAndNil(fPageComponent); inherited Destroy; end; +function TComponentPage.GetScrollBox: TScrollBox; +begin + if Assigned(PageComponent) and (PageComponent.ComponentCount > 0) + and (PageComponent.Components[0] is TScrollBox) then + Result := TScrollBox(PageComponent.Components[0]) + else + Result := Nil; +end; + function IsSelectionToolBtn(aControl: TControl): boolean; begin Result:=(aControl is TSpeedButton) @@ -358,12 +244,9 @@ ' IsScrollBarVisible=',ScrollBox.HorzScrollBar.IsScrollBarVisible ]); {$ENDIF} - MaxBtnPerRow:=ButtonTree.Count; - {$IFnDEF LCLCarbon} - // This condition prevents a mysterious repagination on Windows during startup. - if MainIDE.IDEStarted then - MaxBtnPerRow:=((ScrollBox.VertScrollBar.ClientSizeWithoutBar - ButtonX) div ComponentPaletteBtnWidth); - {$ENDIF} + + MaxBtnPerRow:=((ScrollBox.VertScrollBar.ClientSizeWithoutBar - ButtonX) div ComponentPaletteBtnWidth); + // If we need to wrap, make sure we have space for the scrollbar if MaxBtnPerRow < ButtonTree.Count then MaxBtnPerRow:=((ScrollBox.VertScrollBar.ClientSizeWithBar - ButtonX) div ComponentPaletteBtnWidth); @@ -448,6 +331,7 @@ AutoScroll:=false; {$ENDIF} VertScrollBar.Increment := ComponentPaletteBtnHeight; + VertScrollBar.Tracking := True; Parent := PageComponent; end; PanelRight := TPanel.Create(PageComponent); @@ -469,6 +353,7 @@ SetBounds(2,1,16,16); Hint := lisClickToSelectPalettePage; ShowHint := True; + OnMouseDown := @MainIDE.SelComponentPageButtonMouseDown; OnClick := @MainIDE.SelComponentPageButtonClick; OnMouseWheel := @Pal.OnPageMouseWheel; Parent := PanelRight; @@ -532,14 +417,23 @@ var Pal: TComponentPalette; Btn: TSpeedButton; + CompCN: String; // Component ClassName + i: Integer; begin - if aComp.Visible then begin + Pal := TComponentPalette(Palette); + CompCN := aComp.ComponentClass.ClassName; + if Pal.fComponentButtons.Find(CompCN, i) then + Btn := Pal.fComponentButtons.Data[i] + else + Btn := nil; + if aComp.Visible then + begin inc(fBtnIndex); - if aComp.Button=nil then begin - Pal := TComponentPalette(Palette); + if Btn=nil then + begin Btn := TSpeedButton.Create(nil); - aComp.Button:=Btn; - Btn.Name := CompPaletteCompBtnPrefix + aButtonUniqueName + aComp.ComponentClass.ClassName; + Pal.fComponentButtons[CompCN] := Btn; + Btn.Name := CompPaletteCompBtnPrefix + aButtonUniqueName + CompCN; // Left and Top will be set in ReAlignButtons. Btn.SetBounds(Btn.Left,Btn.Top,ComponentPaletteBtnWidth,ComponentPaletteBtnHeight); Btn.Glyph.Assign(aComp.Icon); @@ -550,31 +444,30 @@ Btn.OnDblClick := @Pal.ComponentBtnDblClick; Btn.OnMouseWheel := @Pal.OnPageMouseWheel; Btn.ShowHint := EnvironmentOptions.ShowHintsForComponentPalette; - Btn.Hint := aComp.ComponentClass.ClassName + sLineBreak - + '(' + aComp.ComponentClass.UnitName + ')'; + Btn.Hint := CompCN + sLineBreak + '(' + aComp.ComponentClass.UnitName + ')'; Btn.PopupMenu:=Pal.PopupMenu; {$IFDEF VerboseComponentPalette} if aComp.RealPage.PageName = CompPalVerbPgName then - DebugLn(['TComponentPalette.CreateOrDelButton Created Button: ',aComp.ComponentClass.ClassName,' ',aComp.Button.Name]); + DebugLn(['TComponentPalette.CreateOrDelButton Created Button: ',CompCN,' ',Btn.Name]); {$ENDIF} - end else begin - Btn:=TSpeedButton(aComp.Button); + end else + begin {$IFDEF VerboseComponentPalette} if aComp.RealPage.PageName = CompPalVerbPgName then - DebugLn(['TComponentPalette.CreateOrDelButton Keep Button: ',aComp.ComponentClass.ClassName,' ',aComp.Button.Name,' ',DbgSName(TControl(aComp.Button).Parent)]); + DebugLn(['TComponentPalette.CreateOrDelButton Keep Button: ',CompCN,' ',Btn.Name,' ',DbgSName(Btn.Parent)]); {$ENDIF} end; Btn.Parent := aScrollBox; Btn.Tag:=fBtnIndex; end - else if aComp.Button<>nil then begin + else if Btn<>nil then + begin {$IFDEF VerboseComponentPalette} if aComp.RealPage.PageName = CompPalVerbPgName then - DebugLn(['TComponentPalette.CreateOrDelButton Destroy Button: ',aComp.ComponentClass.ClassName,' ',aComp.Button.Name]); + DebugLn(['TComponentPalette.CreateOrDelButton Destroy Button: ',CompCN,' ',Btn.Name]); {$ENDIF} - Btn:=TSpeedButton(aComp.Button); Application.ReleaseComponent(Btn); - aComp.Button:=nil; + Pal.fComponentButtons.Remove(CompCN); Btn.Visible:=false; end; end; @@ -598,14 +491,14 @@ DebugLn(['TComponentPalette.CreateButtons PAGE="',PageName,'", PageIndex=',PageComponent.PageIndex]); {$ENDIF} // create selection button - CreateSelectionButton(IntToStr(fIndex), ScrollBox); + CreateSelectionButton(IntToStr(FIndex), ScrollBox); // create component buttons and delete unneeded ones fBtnIndex := 0; Assert(Assigned(fCompNames), 'TComponentPage.CreateButtons: fCompNames is not assigned.'); for i := 0 to fCompNames.Count-1 do begin Comp := Pal.FindComponent(fCompNames[i]) as TPkgComponent; if Assigned(Comp) then - CreateOrDelButton(Comp, Format('%d_%d_',[fIndex,i]), ScrollBox); + CreateOrDelButton(Comp, Format('%d_%d_',[FIndex,i]), ScrollBox); end; fGuiCreated := True; end; @@ -614,15 +507,17 @@ procedure TComponentPalette.ActivePageChanged(Sender: TObject); begin - if FPageControl=nil then exit; - if (FSelected<>nil) - and (FSelected.RealPage.PageComponent=FPageControl.ActivePage) then exit; - if fUpdatingPageControl then exit; + if (FPageControl=nil) or fUpdatingPageControl then exit; + if (Selected<>nil) + and ((Selected.RealPage as TComponentPage).PageComponent=FPageControl.ActivePage) then exit; {$IFDEF VerboseComponentPalette} DebugLn('TComponentPalette.ActivePageChanged: Calling ReAlignButtons, setting Selected:=nil.'); {$ENDIF} ReAlignButtons(FPageControl.ActivePage); Selected:=nil; + + if MainIDE.IDEStarted and Assigned(FOnChangeActivePage) then + FOnChangeActivePage(Sender); end; procedure TComponentPalette.OnScrollBoxResize(Sender: TObject); @@ -640,7 +535,7 @@ var PkgComponent: TPkgComponent; begin - PkgComponent:=TPkgComponent(FindButton(PopupMenu.PopupComponent)); + PkgComponent:=FindPkgCompByButton(PopupMenu.PopupComponent); if (PkgComponent=nil) or (PkgComponent.PkgFile=nil) or (PkgComponent.PkgFile.LazPackage=nil) then exit; if Assigned(OnOpenPackage) then @@ -651,7 +546,7 @@ var PkgComponent: TPkgComponent; begin - PkgComponent:=TPkgComponent(FindButton(PopupMenu.PopupComponent)); + PkgComponent:=FindPkgCompByButton(PopupMenu.PopupComponent); if (PkgComponent=nil) or (PkgComponent.PkgFile=nil) or (PkgComponent.PkgFile.LazPackage=nil) then exit; if Assigned(OnOpenUnit) then @@ -663,6 +558,11 @@ MainIDE.DoShowComponentList; end; +procedure TComponentPalette.OptionsClicked(Sender: TObject); +begin + MainIDE.DoOpenIDEOptions(TCompPaletteOptionsFrame, '', [], []); +end; + procedure TComponentPalette.PalettePopupMenuPopup(Sender: TObject); begin ; @@ -675,7 +575,7 @@ UnitFilename: String; ShownFilename: String; begin - PkgComponent:=TPkgComponent(FindButton(PopupMenu.PopupComponent)); + PkgComponent:=FindPkgCompByButton(PopupMenu.PopupComponent); APackage:=nil; if (PkgComponent<>nil) and (PkgComponent.PkgFile<>nil) then APackage:=PkgComponent.PkgFile.LazPackage; @@ -701,7 +601,8 @@ procedure TComponentPalette.SetPageControl(const AValue: TPageControl); var - MenuItem: TMenuItem; + miCompList, + miOptions: TMenuItem; begin if FPageControl=AValue then exit; ClearButtons; @@ -713,25 +614,33 @@ PalettePopupMenu.OnPopup:=@PalettePopupMenuPopup; PalettePopupMenu.Name:='PalettePopupMenu'; // Component List - MenuItem:=TMenuItem.Create(PalettePopupMenu); - with MenuItem do begin + PalettePopupMenu.Images := IDEImages.Images_16; + miCompList:=TMenuItem.Create(PalettePopupMenu); + with miCompList do begin Name:='ComponentListMenuItem'; Caption:=lisCompPalComponentList; OnClick:=@ComponentListClicked; end; - PalettePopupMenu.Items.Add(MenuItem); + PalettePopupMenu.Items.Add(miCompList); + miOptions:=TMenuItem.Create(PalettePopupMenu); + with miOptions do begin + Name:='OptionsMenuItem'; + Caption:=lisOptions; + OnClick:=@OptionsClicked; + ImageIndex := IDEImages.LoadImage(16, 'menu_environment_options'); + end; + PalettePopupMenu.Items.Add(miOptions); end; FPageControl.PopupMenu:=PalettePopupMenu; end; {$IFDEF VerboseComponentPalette} DebugLn(['TComponentPalette.SetPageControl, calling UpdateNoteBookButtons, ', AValue]); {$ENDIF} - UpdateNoteBookButtons(False); end; procedure TComponentPalette.SelectionToolClick(Sender: TObject); begin - SelectAButton(TComponent(Sender)); + SelectAButton(TSpeedButton(Sender)); end; procedure TComponentPalette.ComponentBtnMouseDown(Sender: TObject; Button: TMouseButton; @@ -743,7 +652,7 @@ SelectionMode := csmMulty else SelectionMode := csmSingle; - SelectAButton(TComponent(Sender)); + SelectAButton(TSpeedButton(Sender)); if Assigned(OnClassSelected) then OnClassSelected(Self); end; @@ -768,14 +677,12 @@ DisableAutoSize: Boolean; begin //debugln('TComponentPalette.ComponentBtnDblClick ',TComponent(Sender).Name); - if SelectAButton(TComponent(Sender)) and (FSelected<>nil) then begin + if SelectAButton(TSpeedButton(Sender)) and (Selected<>nil) then begin if FormEditingHook<>nil then begin - if assigned(FSelected.OnGetCreationClass) then - begin - FSelected.OnGetCreationClass(Self,TypeClass); - if TypeClass=nil then exit; - end else - TypeClass:=FSelected.ComponentClass; + TypeClass:=Selected.ComponentClass; + if assigned(Selected.OnGetCreationClass) then + Selected.OnGetCreationClass(Self,TypeClass); + if TypeClass=nil then exit; ParentComp:=FormEditingHook.GetDefaultComponentParent(TypeClass); if ParentComp=nil then exit; if not FormEditingHook.GetDefaultComponentPosition(TypeClass,ParentComp,X,Y) @@ -786,7 +693,7 @@ DisableAutoSize); if AComponent<>nil then begin if DisableAutoSize and (AComponent is TControl) then - TControl(AComponent).EnableAutoSizing; + TControl(AComponent).EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TComponentPalette.ComponentBtnDblClick'){$ENDIF}; GlobalDesignHook.PersistentAdded(AComponent,true); end; end; @@ -805,45 +712,35 @@ begin for i:=0 to Pages.Count-1 do begin CurPage:=Pages[i]; - if (FSelected=nil) or (FSelected.RealPage<>CurPage) then begin - SelectButtonOnPage:=TSpeedButton(CurPage.SelectButton); + if (Selected=nil) or (Selected.RealPage<>CurPage) then begin + SelectButtonOnPage:=TSpeedButton(TComponentPage(CurPage).SelectButton); if SelectButtonOnPage<>nil then SelectButtonOnPage.Down:=true; end; end; end; -procedure TComponentPalette.SetSelected(const AValue: TRegisteredComponent); +procedure TComponentPalette.SelectionWasChanged; +var + Sheet: TTabSheet; + i: Integer; begin - if FSelected=AValue then exit; - FSelected:=AValue; - if FSelected<>nil then begin - if (FSelected.RealPage=nil) or (FSelected.RealPage.Palette<>Self) - or (not FSelected.Visible) - or (not FSelected.CanBeCreatedInDesigner) then - FSelected:=nil; - end; if FPageControl=nil then exit; UnselectAllButtons; - if FSelected=nil then exit; - Assert(Assigned(FSelected.RealPage), 'TComponentPalette.SetSelected: FSelected.RealPage = Nil.'); + if Selected=nil then exit; + Assert(Assigned(Selected.RealPage), 'TComponentPalette.SelectionWasChanged: Selected.RealPage = Nil.'); + Sheet:=(Selected.RealPage as TComponentPage).PageComponent as TTabSheet; {$IFDEF VerboseComponentPalette} - DebugLn(['TComponentPalette.SetSelected: Setting FPageControl.ActivePage=', - FSelected.RealPage.PageComponent, ', Index ', FSelected.RealPage.PageComponent.PageIndex]); + DebugLn(['TComponentPalette.SelectionWasChanged: Setting FPageControl.ActivePage index ',Sheet.PageIndex]); {$ENDIF} // Switch to the new page - FPageControl.ActivePage:=TTabSheet(FSelected.RealPage.PageComponent); + FPageControl.ActivePage:=Sheet; // Build the GUI layout for this page if not done yet. - if FSelected.Button=nil then + if not fComponentButtons.Find(Selected.ComponentClass.ClassName, i) then ReAlignButtons(FPageControl.ActivePage); // Select button - Assert(Assigned(FSelected.Button), 'TComponentPalette.SetSelected: FSelected.Button = Nil'); - TSpeedButton(FSelected.Button).Down:=true; -end; - -function TComponentPalette.GetSelected: TRegisteredComponent; -begin - Result:=FSelected; + if fComponentButtons.Find(Selected.ComponentClass.ClassName, i) then //find again! + fComponentButtons.Data[i].Down := true; end; procedure TComponentPalette.CreatePopupMenu; @@ -854,7 +751,8 @@ PopupMenu:=TPopupMenu.Create(nil); PopupMenu.OnPopup:=@PopupMenuPopup; PopupMenu.Name:='ComponentPopupMenu'; - + PopupMenu.Images:=IDEImages.Images_16; + OpenPackageMenuItem:=TMenuItem.Create(PopupMenu); with OpenPackageMenuItem do begin Name:='OpenPackageMenuItem'; @@ -880,17 +778,15 @@ OnClick:=@ComponentListClicked; end; PopupMenu.Items.Add(MenuItem); -end; -procedure TComponentPalette.DoEndUpdate(Changed: boolean); -begin - if Changed or fNoteBookNeedsUpdate then begin - {$IFDEF VerboseComponentPalette} - DebugLn(['TComponentPalette.DoEndUpdate, calling UpdateNoteBookButtons, Changed=', Changed]); - {$ENDIF} - UpdateNoteBookButtons(False); + MenuItem:=TMenuItem.Create(PopupMenu); + with MenuItem do begin + Name:='OptionsMenuItem'; + Caption:=lisOptions; + OnClick:=@OptionsClicked; + ImageIndex := IDEImages.LoadImage(16, 'menu_environment_options'); end; - inherited DoEndUpdate(Changed); + PopupMenu.Items.Add(MenuItem); end; procedure TComponentPalette.OnPageMouseWheel(Sender: TObject; Shift: TShiftState; @@ -907,93 +803,11 @@ Handled := True; end; -procedure TComponentPalette.OnPageAddedComponent(Component: TRegisteredComponent); -begin - fComponentCache.Add(Component); - inherited OnPageAddedComponent(Component); -end; - -procedure TComponentPalette.OnPageRemovedComponent(Page: TBaseComponentPage; - Component: TRegisteredComponent); -begin - fComponentCache.Remove(Component); - inherited OnPageRemovedComponent(Page, Component); -end; - -procedure TComponentPalette.CacheOrigComponentPages; -var - sl: TStringList; - PageI, CompI: Integer; - PgName: string; - Comp: TRegisteredComponent; -begin - if fOrigComponentPageCache.Count > 0 then Exit; // Fill cache only once. - for PageI := 0 to fOrigPagePriorities.Count-1 do - begin - PgName:=fOrigPagePriorities.Keys[PageI]; - Assert((PgName <> '') and not fOrigComponentPageCache.Find(PgName, CompI), - Format('CacheComponentPages: %s already cached.', [PgName])); - // Add a cache StringList for this page name. - sl := TStringList.Create; - sl.CaseSensitive := True; - fOrigComponentPageCache.AddObject(PgName, sl); - // Find all components for this page and add them to cache. - for CompI := 0 to fComps.Count-1 do begin - Comp := fComps[CompI]; - if Comp.OrigPageName = PgName then //if SameText(Comp.OrigPageName, PgName) then - sl.AddObject(Comp.ComponentClass.ClassName, Comp); - end; - end; -end; - -function TComponentPalette.AssignOrigCompsForPage(PageName: string; - DestComps: TStringList): Boolean; -// Returns True if the page was found. -var - sl: TStringList; - i: Integer; -begin - Result := fOrigComponentPageCache.Find(PageName, i); - if Result then begin - sl := fOrigComponentPageCache.Objects[i] as TStringList; - DestComps.Assign(sl); - end - else - DestComps.Clear; - //raise Exception.Create(Format('AssignOrigCompsForPage: %s not found in cache.', [PageName])); -end; - -function TComponentPalette.AssignOrigVisibleCompsForPage(PageName: string; - DestComps: TStringList): Boolean; -// Returns True if the page was found. -var - sl: TStringList; - i: Integer; -begin - DestComps.Clear; - Result := fOrigComponentPageCache.Find(PageName, i); - if not Result then Exit; - sl := fOrigComponentPageCache.Objects[i] as TStringList; - for i := 0 to sl.Count-1 do - if FindComponent(sl[i]).Visible then - DestComps.Add(sl[i]); -end; - -function TComponentPalette.RefUserCompsForPage(PageName: string): TStringList; -var - i: Integer; -begin - if fUserComponentPageCache.Find(PageName, i) then - Result := fUserComponentPageCache.Objects[i] as TStringList - else - Result := Nil; -end; - procedure TComponentPalette.Update(ForceUpdateAll: Boolean); begin + inherited Update(ForceUpdateAll); {$IFDEF VerboseComponentPalette} - DebugLn(['TComponentPalette.Update, calling UpdateNoteBookButtons, fUpdatingPageControl=', - fUpdatingPageControl, ', fNoteBookNeedsUpdate=', fNoteBookNeedsUpdate]); + DebugLn(['TComponentPalette.Update, calling UpdateNoteBookButtons, fUpdatingPageControl=', fUpdatingPageControl]); {$ENDIF} UpdateNoteBookButtons(ForceUpdateAll); end; @@ -1015,31 +829,25 @@ constructor TComponentPalette.Create; begin - inherited Create; - FSelectionMode:=csmSingle; - fUserOrder:=TCompPaletteUserOrder.Create(Self); - fUserOrder.Options:=EnvironmentOptions.ComponentPaletteOptions; - fComponentCache:=TAVLTree.Create(@CompareRegisteredComponents); - fOrigComponentPageCache:=TStringList.Create; - fOrigComponentPageCache.OwnsObjects:=True; - fOrigComponentPageCache.CaseSensitive:=True; - fOrigComponentPageCache.Sorted:=True; - fUserComponentPageCache:=TStringList.Create; - fUserComponentPageCache.OwnsObjects:=True; - fUserComponentPageCache.CaseSensitive:=True; - fUserComponentPageCache.Sorted:=True; + inherited Create(EnvironmentOptions.Desktop.ComponentPaletteOptions); + fComponentButtons:=TComponentButtonMap.Create; + fComponentButtons.Sorted:=True; OnComponentIsInvisible:=@CheckComponentDesignerVisible; + {IDEComponentPalette.} AddHandlerComponentAdded(@ComponentWasAdded); + {IDEComponentPalette.} AddHandlerSelectionChanged(@SelectionWasChanged); + ComponentPageClass := TComponentPage; // Used by CreatePagesFromUserOrder end; destructor TComponentPalette.Destroy; +var + i: Integer; begin if OnComponentIsInvisible=@CheckComponentDesignerVisible then OnComponentIsInvisible:=nil; PageControl:=nil; - FreeAndNil(fUserComponentPageCache); - FreeAndNil(fOrigComponentPageCache); - FreeAndNil(fComponentCache); - FreeAndNil(fUserOrder); + for i := 0 to fComponentButtons.Count-1 do + fComponentButtons.Data[i].Free; + FreeAndNil(fComponentButtons); FreeAndNil(fUnregisteredIcon); FreeAndNil(fSelectButtonIcon); FreeAndNil(PopupMenu); @@ -1047,13 +855,6 @@ inherited Destroy; end; -procedure TComponentPalette.Clear; -begin - ClearButtons; - fUserOrder.Clear; - inherited Clear; -end; - procedure TComponentPalette.ClearButtons; begin if FPageControl<>nil then @@ -1068,82 +869,6 @@ FPageControl.EnableAlign; end; -function TComponentPalette.CreatePagesFromUserOrder: Boolean; -var - UserPageI, CurPgInd, CompI: Integer; - aVisibleCompCnt: integer; - PgName: String; - Pg: TComponentPage; - CompNames, UserComps: TStringList; - Comp: TRegisteredComponent; -begin - Result := True; - fUserComponentPageCache.Clear; - for UserPageI := 0 to fUserOrder.ComponentPages.Count-1 do - begin - PgName := fUserOrder.ComponentPages[UserPageI]; - CurPgInd := IndexOfPageName(PgName); - if CurPgInd = -1 then begin - // Create a new page - {$IFDEF VerboseComponentPalette} - DebugLn(['TComponentPalette.CreatePagesFromUserOrder, page ', PgName, ' index ',UserPageI]); - {$ENDIF} - Pg := TComponentPage.Create(PgName); - fPages.Insert(UserPageI, Pg); - Pg.Palette := Self; - end - else if CurPgInd <> UserPageI then begin - {$IFDEF VerboseComponentPalette} - DebugLn(['TComponentPalette.CreatePagesFromUserOrder, move ', PgName, ' from ',CurPgInd, ' to ',UserPageI]); - {$ENDIF} - fPages.Move(CurPgInd, UserPageI); // Move page to right place. - end; - Pg := TComponentPage(Pages[UserPageI]); - Pg.fIndex := UserPageI; - Assert(PgName = Pg.PageName, - Format('TComponentPalette.CreatePagesFromUserOrder: Page names differ, "%s" and "%s".', - [PgName, Pg.PageName])); - // New cache page - UserComps := TStringList.Create; - UserComps.CaseSensitive := True; - fUserComponentPageCache.AddObject(PgName, UserComps); - // Associate components belonging to this page - aVisibleCompCnt := 0; - CompNames := TStringList(fUserOrder.ComponentPages.Objects[UserPageI]); - for CompI := 0 to CompNames.Count-1 do - begin - Comp := FindComponent(CompNames[CompI]); - if not Assigned(Comp) then Continue; - Comp.RealPage := Pg; - UserComps.AddObject(CompNames[CompI], Comp); - if VoteCompVisibility(Comp) then - inc(aVisibleCompCnt); - end; - {$IFDEF VerboseComponentPalette} - if PgName=CompPalVerbPgName then - debugln(['TComponentPalette.CreatePagesFromUserOrder HideControls=',HideControls,' aVisibleCompCnt=',aVisibleCompCnt]); - {$ENDIF} - Pg.Visible := (CompareText(PgName,'Hidden')<>0) and (aVisibleCompCnt>0); - end; - // Remove left-over pages. - while fPages.Count > fUserOrder.ComponentPages.Count do begin - Pg := TComponentPage(fPages[fPages.Count-1]); - {$IFDEF VerboseComponentPalette} - DebugLn(['TComponentPalette.CreatePagesFromUserOrder: Deleting left-over page=', - Pg.PageName, ', Index=', fPages.Count-1]); - {$ENDIF} - fPages.Delete(fPages.Count-1); - Pg.Free; - end; -end; - -procedure TComponentPalette.DoAfterComponentAdded; -begin - inherited DoAfterComponentAdded; - if not (ssShift in GetKeyShiftState) and (SelectionMode = csmSingle) then - Selected := nil; -end; - function TComponentPalette.GetUnregisteredIcon: TCustomBitmap; begin if fUnregisteredIcon = nil then @@ -1162,15 +887,22 @@ Result:=fSelectButtonIcon; end; -function TComponentPalette.SelectAButton(Button: TComponent): boolean; +function TComponentPalette.SelectAButton(Button: TSpeedButton): boolean; var NewComponent: TRegisteredComponent; begin - NewComponent := FindButton(Button); + NewComponent := FindCompByButton(Button); Selected := NewComponent; Result := (Selected = NewComponent); end; +procedure TComponentPalette.ComponentWasAdded(ALookupRoot, AComponent: TComponent; + ARegisteredComponent: TRegisteredComponent); +begin + if not (ssShift in GetKeyShiftState) and (SelectionMode = csmSingle) then + Selected := nil; +end; + procedure TComponentPalette.ReAlignButtons(aSheet: TCustomPage); var PageInd: Integer; @@ -1211,24 +943,14 @@ Pg: TComponentPage; begin if fUpdatingPageControl then exit; - if IsUpdateLocked then begin - fNoteBookNeedsUpdate:=true; - exit; - end; - if FPageControl=nil then begin - fNoteBookNeedsUpdate:=false; - exit; - end; + Assert(not IsUpdateLocked, 'TComponentPalette.UpdateNoteBookButtons: IsUpdateLocked'); + if FPageControl=Nil then exit; // lock fUpdatingPageControl:=true; FPageControl.DisableAlign; - //FPageControl.DisableAutoSizing; try fOldActivePage:=FPageControl.ActivePage; - fUserOrder.SortPagesAndCompsUserOrder; - CreatePagesFromUserOrder; CreatePopupMenu; - {$IFDEF VerboseComponentPalette} DebugLn(['TComponentPalette.UpdateNoteBookButtons: FPageCount before=', FPageControl.PageCount]); {$ENDIF} @@ -1249,8 +971,8 @@ fVisiblePageIndex := 0; for i := 0 to Pages.Count-1 do begin - // fPages and fUserOrder.ComponentPages are now synchronized, same index applies. - Assert(Pages[i].PageName=fUserOrder.ComponentPages[i], + // Pages and UserOrder.ComponentPages are now synchronized, same index applies. + Assert(Pages[i].PageName=UserOrder.ComponentPages[i], 'UpdateNoteBookButtons: Page names do not match.'); Pg := TComponentPage(Pages[i]); {$IFDEF LCLQt} // Qt has some problems in moving existing tabs! @@ -1259,7 +981,7 @@ Pg.RemoveSheet; end; {$ENDIF} - Pg.InsertVisiblePage(TStringList(fUserOrder.ComponentPages.Objects[i])); + Pg.InsertVisiblePage(TStringList(UserOrder.ComponentPages.Objects[i])); {$IFDEF VerboseComponentPalette} DebugLn(['TComponentPalette.UpdateNoteBookButtons: PageIndex=', i, ' PageName=',Pages[i].PageName]); {$ENDIF} @@ -1285,8 +1007,6 @@ finally // unlock fUpdatingPageControl:=false; - fNoteBookNeedsUpdate:=false; - //FPageControl.EnableAutoSizing; FPageControl.EnableAlign; end; end; @@ -1306,25 +1026,30 @@ Icon:=GetUnregisteredIcon; end; -function TComponentPalette.FindComponent(const CompClassName: string): TRegisteredComponent; +function TComponentPalette.IndexOfPageComponent(AComponent: TComponent): integer; +begin + if AComponent<>nil then begin + Result:=Pages.Count-1; + while (Result>=0) and ((Pages[Result] as TComponentPage).PageComponent<>AComponent) do + dec(Result); + end else + Result:=-1; +end; + +function TComponentPalette.FindCompByButton(Button: TSpeedButton): TRegisteredComponent; var - ANode: TAVLTreeNode; + i: Integer; begin - ANode:=fComponentCache.FindKey(Pointer(CompClassName), - @CompareClassNameWithRegisteredComponent); - if ANode<>nil then - Result:=TRegisteredComponent(ANode.Data) + i := fComponentButtons.IndexOfData(Button); + if i >= 0 then + Result := FindComponent(fComponentButtons.Keys[i]) else - Result:=nil; + Result := nil; end; -procedure TComponentPalette.RegisterCustomIDEComponents( - const RegisterProc: RegisterUnitComponentProc); +function TComponentPalette.FindPkgCompByButton(Button: TComponent): TPkgComponent; begin - //inherited RegisterCustomIDEComponents(RegisterProc); - {$IFDEF CustomIDEComps} - CustomIDEComps.RegisterCustomComponents(RegisterProc); - {$ENDIF} + Result := FindCompByButton(Button as TSpeedButton) as TPkgComponent; end; end. diff -Nru lazarus-1.4.4+dfsg/ide/comppagespopup.lfm lazarus-1.6+dfsg/ide/comppagespopup.lfm --- lazarus-1.4.4+dfsg/ide/comppagespopup.lfm 2013-08-04 10:33:34.000000000 +0000 +++ lazarus-1.6+dfsg/ide/comppagespopup.lfm 2015-06-03 16:42:32.000000000 +0000 @@ -9,7 +9,7 @@ ClientWidth = 293 OnDeactivate = FormDeactivate OnShow = FormShow - LCLVersion = '1.1' + LCLVersion = '1.5' object Panel1: TPanel Left = 0 Height = 536 diff -Nru lazarus-1.4.4+dfsg/ide/comppagespopup.pas lazarus-1.6+dfsg/ide/comppagespopup.pas --- lazarus-1.4.4+dfsg/ide/comppagespopup.pas 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/comppagespopup.pas 2015-06-03 16:42:32.000000000 +0000 @@ -11,7 +11,7 @@ uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, - strutils, ExtCtrls, Buttons, MainBar, LazarusIDEStrConsts; + ExtCtrls, Buttons, MainBar, LazarusIDEStrConsts, LCLIntf, LMessages; type @@ -29,11 +29,20 @@ procedure TreeView1Click(Sender: TObject); private fGroups: TStringList; // Objects have group TreeNodes + fLastCloseUp: QWord; + fLastCanShowCheck: Boolean; procedure FindGroups; procedure BuildTreeItem(aPageCapt: string); procedure BuildList; + protected + procedure WMActivate(var Message : TLMActivate); message LM_ACTIVATE; + + procedure DoCreate; override; + procedure DoClose(var CloseAction: TCloseAction); override; public procedure FixBounds; + procedure CanShowCheck; + property LastCanShowCheck: Boolean read fLastCanShowCheck; end; var @@ -72,6 +81,21 @@ Close; end; +procedure TDlgCompPagesPopup.DoClose(var CloseAction: TCloseAction); +begin + inherited DoClose(CloseAction); + + if CloseAction = caHide then + fLastCloseUp := GetTickCount64; +end; + +procedure TDlgCompPagesPopup.DoCreate; +begin + inherited DoCreate; + + fLastCanShowCheck := True; +end; + procedure TDlgCompPagesPopup.FixBounds; begin if (self.Height+100)>screen.Height then @@ -102,6 +126,17 @@ Close; end; +procedure TDlgCompPagesPopup.WMActivate(var Message: TLMActivate); +begin + {$IFDEF LCLWin32} + //activate the mainform to simulate a true popup-window (works only on Windows) + if Assigned(PopupParent) and PopupParent.HandleAllocated then + SendMessage(PopupParent.Handle, LM_NCACTIVATE, Ord(Message.Active <> WA_INACTIVE), 0); + {$ENDIF} + + inherited WMActivate(Message); +end; + procedure TDlgCompPagesPopup.FindGroups; // Find groups. Page names with many words are grouped by the first word. var @@ -153,6 +188,11 @@ ItemNode.SelectedIndex:=0; end; +procedure TDlgCompPagesPopup.CanShowCheck; +begin + fLastCanShowCheck := not Visible and (GetTickCount64 > fLastCloseUp + 100); +end; + procedure TDlgCompPagesPopup.BuildList; var i: integer; @@ -174,8 +214,8 @@ end; TreeView1.EndUpdate; TreeView1.FullExpand; - Panel2.Caption:=Format(lisTotalPages, [IntToStr(MainIDEBar. - ComponentPageControl.PageCount)]); + Panel2.Caption:=Format(lisTotalPages, + [IntToStr(MainIDEBar.ComponentPageControl.PageCount)]); end; end. diff -Nru lazarus-1.4.4+dfsg/ide/condef.lfm lazarus-1.6+dfsg/ide/condef.lfm --- lazarus-1.4.4+dfsg/ide/condef.lfm 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/condef.lfm 1970-01-01 00:00:00.000000000 +0000 @@ -1,248 +0,0 @@ -object CondForm: TCondForm - Left = 305 - Height = 326 - Top = 265 - Width = 356 - ActiveControl = FirstTest - BorderIcons = [biSystemMenu] - Caption = 'Conditional Defines' - ClientHeight = 326 - ClientWidth = 356 - OnCreate = CondFormCREATE - OnShow = FormShow - Position = poScreenCenter - LCLVersion = '1.5' - object NewTestGroupBox: TGroupBox - Left = 6 - Height = 135 - Top = 6 - Width = 344 - Align = alTop - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'NewTestGroupBox' - ClientHeight = 117 - ClientWidth = 340 - TabOrder = 0 - object FirstLabel: TLabel - Left = 6 - Height = 13 - Top = 6 - Width = 328 - Align = alTop - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - Caption = '&First test' - ParentColor = False - end - object SecondLabel: TLabel - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 13 - Top = 46 - Width = 328 - Align = alTop - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - Caption = '&Second test' - ParentColor = False - end - object FirstTest: TComboBox - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 21 - Top = 19 - Width = 328 - Align = alTop - BorderSpacing.Left = 6 - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 - ItemHeight = 13 - ItemIndex = 0 - Items.Strings = ( - 'MSWINDOWS' - 'UNIX' - 'LINUX' - 'WIN32' - 'CLX_' - 'LCL_' - 'VCL_' - 'FPC' - 'KYLIX' - 'VER1_0' - ) - OnChange = TestEditChange - TabOrder = 0 - Text = 'MSWINDOWS' - end - object SecondTest: TComboBox - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 21 - Top = 59 - Width = 328 - Align = alTop - BorderSpacing.Left = 6 - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 - ItemHeight = 13 - ItemIndex = 0 - Items.Strings = ( - 'NONE' - 'ELSE' - ) - OnChange = TestEditChange - TabOrder = 1 - Text = 'NONE' - end - object AddBtn: TBitBtn - AnchorSideTop.Control = SecondTest - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = AddInverse - Left = 87 - Height = 25 - Top = 86 - Width = 75 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Around = 6 - Caption = '&Add' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - OnClick = AddBtnClick - TabOrder = 2 - end - object RemoveBtn: TBitBtn - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = SecondTest - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = NewTestGroupBox - AnchorSideRight.Side = asrBottom - Left = 259 - Height = 25 - Top = 86 - Width = 75 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Around = 6 - Caption = '&Remove' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - OnClick = RemoveBtnClick - TabOrder = 3 - end - object AddInverse: TBitBtn - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = SecondTest - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = RemoveBtn - Left = 168 - Height = 25 - Top = 86 - Width = 85 - HelpType = htKeyword - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'Add Inverse' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - OnClick = AddInverseCLICK - TabOrder = 4 - end - end - object ListBox: TListBox - Left = 6 - Height = 127 - Top = 147 - Width = 344 - Align = alClient - Anchors = [akTop, akBottom] - BorderSpacing.Around = 6 - ItemHeight = 0 - OnClick = ListBoxClick - OnDblClick = ListBoxDblClick - OnKeyDown = ListBoxKeyDown - TabOrder = 1 - end - object ButtonPanel: TPanel - Left = 0 - Height = 46 - Top = 280 - Width = 356 - Align = alBottom - ClientHeight = 46 - ClientWidth = 356 - TabOrder = 2 - object btnOk: TBitBtn - AnchorSideTop.Control = ButtonPanel - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = ButtonPanel - AnchorSideRight.Side = asrBottom - Left = 288 - Height = 26 - Top = 10 - Width = 61 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Around = 6 - Default = True - DefaultCaption = True - Kind = bkOK - ModalResult = 1 - OnClick = OKButtonClick - TabOrder = 0 - end - object btnSave: TBitBtn - AnchorSideTop.Control = btnOk - AnchorSideRight.Control = btnOk - AnchorSideBottom.Control = btnOk - AnchorSideBottom.Side = asrBottom - Left = 216 - Height = 26 - Top = 10 - Width = 66 - Anchors = [akTop, akRight, akBottom] - AutoSize = True - BorderSpacing.Right = 6 - Caption = 'btnSave' - ModalResult = 6 - OnClick = btnSaveClick - TabOrder = 1 - end - object btmCancel: TBitBtn - AnchorSideTop.Control = btnSave - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = btnSave - Left = 126 - Height = 26 - Top = 10 - Width = 84 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Right = 6 - Cancel = True - DefaultCaption = True - Kind = bkCancel - ModalResult = 2 - TabOrder = 2 - end - object btnHelp: TBitBtn - AnchorSideLeft.Control = ButtonPanel - AnchorSideTop.Control = ButtonPanel - AnchorSideTop.Side = asrCenter - Left = 7 - Height = 26 - Top = 10 - Width = 89 - AutoSize = True - BorderSpacing.Around = 6 - DefaultCaption = True - Kind = bkHelp - OnClick = HelpButtonClick - TabOrder = 3 - end - end -end diff -Nru lazarus-1.4.4+dfsg/ide/condef.pas lazarus-1.6+dfsg/ide/condef.pas --- lazarus-1.4.4+dfsg/ide/condef.pas 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/condef.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,453 +0,0 @@ -{ - /*************************************************************************** - condef.pas - Conditional Defines - ---------------------------------- - - ***************************************************************************/ - - *************************************************************************** - * * - * This source is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This code is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * General Public License for more details. * - * * - * A copy of the GNU General Public License is available on the World * - * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * - * obtain it by writing to the Free Software Foundation, * - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - *************************************************************************** -} -unit ConDef; - -{$mode objfpc}{$H+} - -interface - -(* Utility to assist in inserting conditional defines. For example, to convert - OnCreate := @CreateHandler - to: - OnCreate := {$IFDEF FPC} @ {$ENDIF} CreateHandler - select @ and then use Edit, Insert $IFDEF (default shortcut Ctrl+Shift+D), - select "FPC,NONE" and hit return. If you select one or more complete lines - then the conditional defines are put on sepearate lines as in: - {$IFDEF DEBUG} - Writeln('State= ', State) - {$ENDIF} - The choices are listed in abbreviated form so: - MSWINDOWS,UNIX => {$IFDEF MSWINDOWS} ... {$ENDIF} {$IFDEF UNIX} ... {$ENDIF} - FPC,ELSE => {$IFDEF FPC} ... {$ELSE} ... {$ENDIF} - DEBUG,NONE => {$IFDEF DEBUG} ... {$ENDIF} - This tool is most useful when you need to put several identical conditionals - in a file, You can add to the possible conditionals by selecting or typing - the required symbols in "First test" and /or "Second test" and using the - Add button. Your additons are saved in the condef.xml file in the lazarus - configuration directory. -*) - -uses - Classes, SysUtils, Controls, Forms, LCLProc, LCLType, LazConf, - StdCtrls, Buttons, FileUtil, Laz2_XMLCfg, LazFileCache, ExtCtrls, - IDEHelpIntf, LazarusIDEStrConsts, IDEProcs; - -type - - { TCondForm } - - TCondForm = class(TForm) - AddBtn: TBitBtn; - AddInverse: TBitBtn; - btnHelp: TBitBtn; - btmCancel: TBitBtn; - btnSave: TBitBtn; - btnOk: TBitBtn; - ButtonPanel: TPanel; - FirstLabel: TLabel; - FirstTest: TComboBox; - ListBox: TListBox; - NewTestGroupBox: TGroupBox; - RemoveBtn: TBitBtn; - SecondLabel: TLabel; - SecondTest: TComboBox; - procedure AddBtnClick(Sender: TObject); - procedure AddInverseCLICK(Sender: TObject); - procedure btnSaveClick(Sender: TObject); - procedure OKButtonClick(Sender: TObject); - procedure TestEditChange(Sender: TObject); - procedure HelpButtonClick(Sender: TObject); - procedure CondFormCREATE(Sender: TObject); - procedure ListBoxClick(Sender: TObject); - procedure ListBoxDblClick(Sender: TObject); - procedure RemoveBtnClick(Sender: TObject); - procedure ListBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure FormShow(Sender: TObject); - private - StoredChoice, StoredFirst, StoredSecond: string; - FS: string; - function SplitActiveRow(var aFirst, aSecond: string): Boolean; - procedure DeleteSelected; - procedure UpdateButtons; - function IsChanged: Boolean; - procedure SaveIfChanged; - function CreateXMLConfig: TXMLConfig; - end; - - -function ShowConDefDlg: string; -function AddConditional(Text: string; IsPascal: Boolean):string; - -implementation - -{$R *.lfm} - -function ShowConDefDlg: string; -var - CondForm: TCondForm; -begin - Result := ''; - CondForm := TCondForm.Create(nil); - try - CondForm.ActiveControl := CondForm.ListBox; - if CondForm.ShowModal <> mrOK then - Result := '' - else - Result := CondForm.FS; - finally - CondForm.Free; - end -end; - -function AddConditional(Text: string; IsPascal: Boolean):string; -var - cond, s, f: string; - p, p1: Integer; - IsElse, IsTwo, HasNewline: Boolean; - Tail, Indent: string; - - function ifdef(s:string):string; - begin - Result :=''; - if (s <>'') and (s[1] = '!') then begin - if IsPascal then - Result := 'N' - else - Result := 'n'; - s := Copy(s,2,Length(s)-1); - end; - if IsPascal then - Result := '{$IF' + Result + 'DEF ' + s + '}' - else - Result := '#if' + Result + 'def ' + s; - end; - -begin - Result := Text; - cond := ShowConDefDlg; - p := Pos(',',cond); - if p <= 0 then Exit; - f := Copy(Cond, 1, p-1); - s := Copy(Cond, p+1, Length(Cond)); - IsElse := CompareText(s, 'ELSE') = 0; - IsTwo := CompareText(s, 'NONE') <> 0; - HasNewline := Pos(#10, Text) > 0; - if HasNewline then begin - p := 1; - { leave leading newlines unchanged (outside $IFDEF) } - while (p <= Length(Text)) and (Text[p] in [#10,#13]) do Inc(p); - Result := Copy(Text,1,p-1); - p1 := p; - { Work out current indentation, to line up $IFDEFS } - while (p <= Length(Text)) and (Text[p] in [#9,' ']) do Inc(p); - Indent := Copy(Text, p1, p-p1); - Text := Copy(Text,p,Length(Text)); - p := Length(Text); - { Tailing whitespace is left outside $IFDEF } - while (p>0) and (Text[p] in [' ',#9,#10,#13]) do Dec(p); - Tail := Copy(Text, p+1, Length(Text)); - SetLength(Text,p); - end else begin - Result := ''; - Tail := ''; - Indent := ''; - end; - if IsPascal then begin - f := ifdef(f); - s := ifdef(s); - if HasNewline then begin - Result := Result + Indent + f + LineEnding + Indent + Text + LineEnding; - if IsElse then - Result := Result + Indent + '{$ELSE}' + LineEnding - else begin - Result := Result + Indent + '{$ENDIF}'; - if IsTwo then - Result := Result + LineEnding + Indent + s + LineEnding; - end; - if IsTwo then - Result := Result + Indent + Text + LineEnding + Indent + '{$ENDIF}'; - Result := Result + Tail; - end else begin - Result := Result + f + ' ' + Text; - if IsElse then - Result := Result + ' {$ELSE} ' - else begin - Result := Result + ' {$ENDIF}'; - if IsTwo then - Result := Result + ' ' + s + ' '; - end; - if IsTwo then - Result := Result + Text + ' {$ENDIF}'; - end; - end else begin - Result := Result + ifdef(f) + LineEnding + indent + Text + LineEnding; - if IsElse then - Result := Result + '#else' + LineEnding - else begin - Result := Result + '#endif /* ' + f + ' */' + LineEnding; - if IsTwo then - Result := Result + ifdef(s) + LineEnding; - end; - if IsTwo then begin - Result := Result + indent + Text + LineEnding + '#endif /* '; - if IsElse then - Result := Result + f - else - Result := Result + s; - Result := Result + ' */' + LineEnding; - end; - Result := Result + Tail; - end; -end; - -{ TCondForm } - -procedure TCondForm.CondFormCREATE(Sender: TObject); -var - i: Integer; - XMLConfig: TXMLConfig; -begin - NewTestGroupBox.Caption := rsCreateNewDefine; - Caption := rsConditionalDefines; - FirstLabel.Caption := lisFirstTest; - SecondLabel.Caption := lisSecondTest; - AddBtn.Caption := lisBtnAdd; - AddBtn.LoadGlyphFromResourceName(HInstance, 'laz_add'); - AddInverse.Caption := rsAddInverse; - AddInverse.LoadGlyphFromResourceName(HInstance, 'pkg_issues'); - RemoveBtn.Caption := lisBtnRemove; - RemoveBtn.LoadGlyphFromResourceName(HInstance, 'laz_delete'); - btnSave.Caption := lisSave; - btnSave.LoadGlyphFromStock(idButtonSave); - btnOk.Caption := lisApply; - //if btnSave.Glyph.Empty then - // btnSave.LoadGlyphFromResourceName(HInstance, 'laz_save'); - try - XMLConfig:=CreateXMLConfig; - try - StoredChoice := XMLConfig.GetValue('condef/Choice', - '"MSWINDOWS,UNIX","MSWINDOWS,ELSE","FPC,NONE","FPC,ELSE","DEBUG,NONE"'); - StoredFirst := XMLConfig.GetValue('condef/First', 'MSWINDOWS'); - StoredSecond := XMLConfig.GetValue('condef/Second', 'UNIX'); - finally - XMLConfig.Free; - end; - except - on E: Exception do begin - debugln('TCondForm.CondFormCREATE ',E.Message); - end; - end; - with ListBox do begin - Items.CommaText := StoredChoice; - i := Items.IndexOf(StoredFirst+','+StoredSecond); - if i < 0 then begin - Items.Add(StoredFirst+','+StoredSecond); - ItemIndex := 0; - end else - ItemIndex := i; - end; -end; - -procedure TCondForm.FormShow(Sender: TObject); -begin - if SecondTest.Items.Count < 10 then - SecondTest.Items.AddStrings(FirstTest.Items); - ListBoxClick(Nil); -end; - -function TCondForm.SplitActiveRow(var aFirst, aSecond: string): Boolean; -var - i: integer; - Line: string; -begin - Result := False; - aFirst := ''; - aSecond := ''; - with ListBox do - if ItemIndex >= 0 then begin - Line := Items[ItemIndex]; - i := Pos(',', Line); - if i > 0 then begin - Result := True; - aFirst := Copy(Line, 1, i-1); - aSecond := Copy(Line, i+1, Length(Line)); - end - end; -end; - -procedure TCondForm.AddBtnClick(Sender: TObject); -begin - ListBox.Items.Add(FirstTest.Text+','+SecondTest.Text); - ListBox.ItemIndex := ListBox.Items.Count-1; - UpdateButtons; -end; - -procedure TCondForm.AddInverseCLICK(Sender: TObject); -begin - ListBox.Items.Add('!'+FirstTest.Text+','+SecondTest.Text); - ListBox.ItemIndex := ListBox.Items.Count-1; - UpdateButtons; -end; - -procedure TCondForm.TestEditChange(Sender: TObject); -begin - UpdateButtons; -end; - -procedure TCondForm.btnSaveClick(Sender: TObject); -begin - SaveIfChanged; - Close; -end; - -procedure TCondForm.OKButtonClick(Sender: TObject); -begin - SaveIfChanged; - with ListBox do - FS := Items[ItemIndex]; // Return selected row to caller. -end; - -procedure TCondForm.HelpButtonClick(Sender: TObject); -begin - LazarusHelp.ShowHelpForIDEControl(Self); -end; - -procedure TCondForm.ListBoxClick(Sender: TObject); -var - ff, ss: string; -begin - if SplitActiveRow(ff, ss) then begin - FirstTest.Text := ff; - SecondTest.Text := ss; - UpdateButtons; - end; -end; - -procedure TCondForm.ListBoxDblClick(Sender: TObject); -begin - ModalResult := mrOK; -end; - -procedure TCondForm.RemoveBtnClick(Sender: TObject); -begin - DeleteSelected; -end; - -procedure TCondForm.ListBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); -begin - if Key = VK_DELETE then begin - DeleteSelected; - Key := 0; - end; -end; - -procedure TCondForm.DeleteSelected; -var - i: Integer; -begin - with ListBox.Items do - for i := Count-1 downto 0 do - if ListBox.Selected[i] then begin - Delete(i); - UpdateButtons; - end; -end; - -procedure TCondForm.UpdateButtons; -var - s: string; -begin - s := FirstTest.Text+','+SecondTest.Text; - AddBtn.Enabled := (FirstTest.Text <> '') and (ListBox.Items.IndexOf(s) = -1); - s := '!' + s; - AddInverse.Enabled := (FirstTest.Text <> '') - and (FirstTest.Text[1] <> '!') - and (ListBox.Items.IndexOf(s) = -1); - RemoveBtn.Enabled := ListBox.SelCount > 0; - btnSave.Enabled := IsChanged; - btnOk.Enabled := ListBox.SelCount > 0; -end; - -function TCondForm.IsChanged: Boolean; -var - ff, ss: string; -begin - if StoredChoice <> ListBox.Items.CommaText then - Exit(True); - if SplitActiveRow(ff, ss) then begin - if StoredFirst <> ff then - Exit(True); - if StoredSecond <> ss then - Exit(True); - end; - Result := False; -end; - -procedure TCondForm.SaveIfChanged; -var - ff, ss: string; - XMLConfig: TXMLConfig; -begin - if btnSave.Enabled then // Is enabled only if there are changes - try - SplitActiveRow(ff, ss); - InvalidateFileStateCache; - XMLConfig:=CreateXMLConfig; - try - XMLConfig.SetValue('condef/Choice', ListBox.Items.CommaText); - XMLConfig.SetValue('condef/First', ff); - XMLConfig.SetValue('condef/Second', ss); - XMLConfig.Flush; - finally - XMLConfig.Free; - end; - except - on E: Exception do begin - debugln('TCondForm.SaveIfChanged ',E.Message); - end; - end; -end; - -function TCondForm.CreateXMLConfig: TXMLConfig; -var - ConfFileName: String; -begin - Result:=nil; - ConfFileName:=SetDirSeparators(GetPrimaryConfigPath+'/condef.xml'); - try - if (not FileExistsUTF8(ConfFileName)) then - Result:=TXMLConfig.CreateClean(ConfFileName) - else - Result:=TXMLConfig.Create(ConfFileName); - except - on E: Exception do begin - debugln('TCondForm.CreateXMLConfig ',E.Message); - end; - end; -end; - -end. diff -Nru lazarus-1.4.4+dfsg/ide/customdefines.lfm lazarus-1.6+dfsg/ide/customdefines.lfm --- lazarus-1.4.4+dfsg/ide/customdefines.lfm 2013-08-24 09:08:12.000000000 +0000 +++ lazarus-1.6+dfsg/ide/customdefines.lfm 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -object CustomDefinesForm: TCustomDefinesForm - Left = 305 - Height = 326 - Top = 265 - Width = 341 - BorderIcons = [biSystemMenu] - Caption = 'Conditional Defines' - ClientHeight = 326 - ClientWidth = 341 - OnCreate = FormCreate - OnDestroy = FormDestroy - OnShow = FormShow - Position = poScreenCenter - LCLVersion = '1.1' - object gbNewDefine: TGroupBox - Left = 6 - Height = 79 - Top = 6 - Width = 329 - Align = alTop - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'gbNewDefine' - ClientHeight = 60 - ClientWidth = 325 - TabOrder = 0 - object AddBtn: TBitBtn - AnchorSideTop.Control = RemoveBtn - AnchorSideRight.Control = RemoveBtn - Left = 163 - Height = 26 - Top = 31 - Width = 75 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Right = 6 - Caption = '&Add' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - OnClick = AddBtnClick - TabOrder = 0 - end - object RemoveBtn: TBitBtn - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = edDefine - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = edDefine - AnchorSideRight.Side = asrBottom - Left = 244 - Height = 26 - Top = 31 - Width = 75 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Top = 6 - BorderSpacing.Bottom = 3 - Caption = '&Remove' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - OnClick = RemoveBtnClick - TabOrder = 1 - end - object edDefine: TEdit - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 25 - Top = 0 - Width = 313 - Align = alTop - BorderSpacing.Left = 6 - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 - OnChange = EditChange - TabOrder = 2 - end - end - object DefinesCheckList: TCheckListBox - Left = 6 - Height = 182 - Top = 91 - Width = 329 - Align = alClient - Anchors = [akTop, akBottom] - BorderSpacing.Around = 6 - ItemHeight = 0 - OnClick = DefinesCheckListClick - OnDblClick = DefinesCheckListDblClick - OnKeyDown = DefinesCheckListKeyDown - TabOrder = 1 - end - object ButtonPanel: TButtonPanel - Left = 6 - Height = 41 - Top = 279 - Width = 329 - OKButton.Name = 'OKButton' - OKButton.DefaultCaption = True - HelpButton.Name = 'HelpButton' - HelpButton.DefaultCaption = True - HelpButton.OnClick = HelpButtonClick - CloseButton.Name = 'CloseButton' - CloseButton.DefaultCaption = True - CancelButton.Name = 'CancelButton' - CancelButton.DefaultCaption = True - TabOrder = 2 - ShowButtons = [pbOK, pbCancel, pbHelp] - end -end diff -Nru lazarus-1.4.4+dfsg/ide/customdefines.pas lazarus-1.6+dfsg/ide/customdefines.pas --- lazarus-1.4.4+dfsg/ide/customdefines.pas 2014-06-15 14:43:35.000000000 +0000 +++ lazarus-1.6+dfsg/ide/customdefines.pas 1970-01-01 00:00:00.000000000 +0000 @@ -1,219 +0,0 @@ -{ - *************************************************************************** - * * - * This source is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This code is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * General Public License for more details. * - * * - * A copy of the GNU General Public License is available on the World * - * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * - * obtain it by writing to the Free Software Foundation, * - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - *************************************************************************** -} -unit CustomDefines; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, Forms, StdCtrls, Buttons, ButtonPanel, CheckLst, LCLType, Controls, - IDEHelpIntf, LazarusIDEStrConsts, Compiler; - -type - - { TCustomDefinesForm } - - TCustomDefinesForm = class(TForm) - AddBtn: TBitBtn; - ButtonPanel: TButtonPanel; - DefinesCheckList: TCheckListBox; - gbNewDefine: TGroupBox; - RemoveBtn: TBitBtn; - edDefine: TEdit; - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure AddBtnClick(Sender: TObject); - procedure EditChange(Sender: TObject); - procedure HelpButtonClick(Sender: TObject); - procedure DefinesCheckListClick(Sender: TObject); - procedure DefinesCheckListDblClick(Sender: TObject); - procedure RemoveBtnClick(Sender: TObject); - procedure DefinesCheckListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - private - FIdleConnected: Boolean; - FOptionsReader: TCompilerOptReader; - FOptionsThread: TCompilerOptThread; - FCustomOptions: TStrings; - FUseComments: Boolean; - procedure SetIdleConnected(AValue: Boolean); - procedure OnIdle(Sender: TObject; var Done: Boolean); - procedure DeleteSelected; - procedure UpdateButtons; - private - property IdleConnected: Boolean read FIdleConnected write SetIdleConnected; - public - function ToCustomOptions(aStrings: TStrings): TModalResult; - public - property OptionsReader: TCompilerOptReader read FOptionsReader write FOptionsReader; - property OptionsThread: TCompilerOptThread read FOptionsThread write FOptionsThread; - property CustomOptions: TStrings read FCustomOptions write FCustomOptions; - property UseComments: Boolean read FUseComments write FUseComments; - end; - - -implementation - -{$R *.lfm} - -{ TCustomDefinesForm } - -procedure TCustomDefinesForm.FormCreate(Sender: TObject); -begin - Caption := lisLazBuildDefines; - gbNewDefine.Caption := lisCodeToolsDefsDefine; - AddBtn.Caption := lisBtnAdd; - AddBtn.LoadGlyphFromResourceName(HInstance, 'laz_add'); - RemoveBtn.Caption := lisBtnRemove; - RemoveBtn.LoadGlyphFromResourceName(HInstance, 'laz_delete'); -end; - -procedure TCustomDefinesForm.FormShow(Sender: TObject); -begin - DefinesCheckListClick(Nil); - ActiveControl := DefinesCheckList; - IdleConnected := True; -end; - -procedure TCustomDefinesForm.FormDestroy(Sender: TObject); -begin - -end; - -procedure TCustomDefinesForm.AddBtnClick(Sender: TObject); -begin - DefinesCheckList.Items.Add(edDefine.Text); - DefinesCheckList.ItemIndex := DefinesCheckList.Items.Count-1; - UpdateButtons; -end; - -procedure TCustomDefinesForm.EditChange(Sender: TObject); -begin - UpdateButtons; -end; - -procedure TCustomDefinesForm.HelpButtonClick(Sender: TObject); -begin - LazarusHelp.ShowHelpForIDEControl(Self); -end; - -procedure TCustomDefinesForm.DefinesCheckListClick(Sender: TObject); -begin - with DefinesCheckList do - if ItemIndex > -1 then - edDefine.Text := Items[ItemIndex]; - UpdateButtons; -end; - -procedure TCustomDefinesForm.DefinesCheckListDblClick(Sender: TObject); -begin - //ModalResult := mrOK; -end; - -procedure TCustomDefinesForm.RemoveBtnClick(Sender: TObject); -begin - DeleteSelected; -end; - -procedure TCustomDefinesForm.DefinesCheckListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); -begin - if Key = VK_DELETE then - begin - DeleteSelected; - Key := 0; - end; -end; - -procedure TCustomDefinesForm.SetIdleConnected(AValue: Boolean); -begin - if FIdleConnected = AValue then exit; - FIdleConnected := AValue; - if FIdleConnected then - Application.AddOnIdleHandler(@OnIdle) - else - Application.RemoveOnIdleHandler(@OnIdle); -end; - -procedure TCustomDefinesForm.OnIdle(Sender: TObject; var Done: Boolean); -var - s: String; - i, ListInd: Integer; -begin - IdleConnected := False; - Screen.Cursor := crHourGlass; - try - FOptionsThread.EndParsing; // Make sure the options are read. - // Parse and separate defines from other options. - FOptionsReader.FromCustomOptions(FCustomOptions); - // Check the found defines in the GUI. - for i := 0 to FOptionsReader.Defines.Count-1 do - begin - s := Copy(FOptionsReader.Defines[i], 3, MaxInt); // Skip '-d'. - ListInd := DefinesCheckList.Items.IndexOf(s); - if ListInd = -1 then - begin - DefinesCheckList.Items.Add(s); - ListInd := DefinesCheckList.Items.Count-1; - end; - DefinesCheckList.Checked[ListInd] := True; - end; - finally - Screen.Cursor := crDefault; - end; -end; - -procedure TCustomDefinesForm.DeleteSelected; -var - i: Integer; -begin - with DefinesCheckList.Items do - for i := Count-1 downto 0 do - if DefinesCheckList.Selected[i] then - begin - Delete(i); - UpdateButtons; - end; -end; - -procedure TCustomDefinesForm.UpdateButtons; -begin - AddBtn.Enabled := (edDefine.Text <> '') - and (DefinesCheckList.Items.IndexOf(edDefine.Text) = -1); - RemoveBtn.Enabled := DefinesCheckList.SelCount > 0; -end; - -function TCustomDefinesForm.ToCustomOptions(aStrings: TStrings): TModalResult; -var - i: Integer; -begin - // First update defines to OptionsReader. - FOptionsReader.Defines.Clear; - for i := 0 to DefinesCheckList.Count-1 do - if DefinesCheckList.Checked[i] then - FOptionsReader.Defines.Add('-d' + DefinesCheckList.Items[i]); - // Then add all options and defines. - FOptionsReader.ToCustomOptions(aStrings, FUseComments); - Result:=mrOk; -end; - -end. - diff -Nru lazarus-1.4.4+dfsg/ide/customformeditor.pp lazarus-1.6+dfsg/ide/customformeditor.pp --- lazarus-1.4.4+dfsg/ide/customformeditor.pp 2015-02-27 22:37:07.000000000 +0000 +++ lazarus-1.6+dfsg/ide/customformeditor.pp 2015-10-26 21:34:11.000000000 +0000 @@ -40,17 +40,17 @@ {$ENDIF} // LCL+FCL Classes, SysUtils, TypInfo, Math, LCLIntf, LCLType, LResources, - AVL_Tree, LCLMemManager, FileUtil, LazFileCache, + LCLMemManager, FileUtil, LazFileUtils, LazFileCache, AvgLvlTree, LCLProc, Graphics, Controls, Forms, Menus, Dialogs, + CodeCache, CodeTree, CodeToolManager, FindDeclarationTool, // IDEIntf - PropEdits, PropEditUtils, ObjectInspector, IDECommands, FormEditingIntf, - UnitResources, IDEOptionsIntf, + PropEdits, PropEditUtils, ObjectInspector, FormEditingIntf, + UnitResources, IDEOptionsIntf, IDEDialogs, ComponentEditors, // IDE - LazarusIDEStrConsts, ControlSelection, Project, JITForms, MainIntf, + LazarusIDEStrConsts, EditorOptions, EnvironmentOpts, + ControlSelection, Project, JITForms, MainIntf, CustomNonFormDesigner, NonControlDesigner, FrameDesigner, ComponentReg, - IDEProcs, ComponentEditors, IDEDialogs, CodeCache, CodeToolManager, CodeTree, - FindDeclarationTool, KeyMapping, EditorOptions, EnvironmentOpts, - DesignerProcs, PackageDefs; + IDEProcs, DesignerProcs, PackageDefs; const OrdinalTypes = [tkInteger,tkChar,tkEnumeration,tkbool]; @@ -68,18 +68,20 @@ FOnSelectFrame: TSelectFrameEvent; FSelection: TPersistentSelectionList; FObj_Inspector: TObjectInspectorDlg; - FDefineProperties: TAVLTree;// tree of TDefinePropertiesCacheItem + FDefineProperties: TAvgLvlTree;// tree of TDefinePropertiesCacheItem FStandardDefinePropertiesRegistered: Boolean; FDesignerBaseClasses: TFPList; // list of TComponentClass FDesignerMediatorClasses: TFPList;// list of TDesignerMediatorClass FOnNodeGetImageIndex: TOnOINodeGetImageEvent; function GetPropertyEditorHook: TPropertyEditorHook; function FindDefinePropertyNode(const APersistentClassName: string - ): TAVLTreeNode; + ): TAvgLvlTreeNode; procedure FrameCompGetCreationClass(Sender: TObject; var NewComponentClass: TComponentClass); + function OnPropHookGetAncestorInstProp(const InstProp: TInstProp; + out AncestorInstProp: TInstProp): boolean; protected - FNonFormForms: TAVLTree; // tree of TNonControlDesignerForm sorted for LookupRoot + FNonFormForms: TAvgLvlTree; // tree of TNonControlDesignerForm sorted for LookupRoot procedure SetSelection(const ASelection: TPersistentSelectionList); procedure OnObjectInspectorModified(Sender: TObject); procedure SetObj_Inspector(AnObjectInspector: TObjectInspectorDlg); virtual; @@ -100,8 +102,10 @@ var ComponentClass: TComponentClass); function GetDesignerBaseClasses(Index: integer): TComponentClass; override; + function GetStandardDesignerBaseClasses(Index: integer): TComponentClass; override; + procedure SetStandardDesignerBaseClasses(Index: integer; AValue: TComponentClass); override; procedure OnDesignerMenuItemClick(Sender: TObject); virtual; - function FindNonFormFormNode(LookupRoot: TComponent): TAVLTreeNode; + function FindNonFormFormNode(LookupRoot: TComponent): TAvgLvlTreeNode; //because we only meet ObjInspectore here, not in abstract ancestor procedure DoOnNodeGetImageIndex(APersistent: TPersistent; var AImageIndex: integer); virtual; @@ -132,38 +136,28 @@ function IsJITComponent(AComponent: TComponent): boolean; function GetJITListOfType(AncestorType: TComponentClass): TJITComponentList; function FindJITList(AComponent: TComponent): TJITComponentList; - function FindJITListByClassName(const AComponentClassName: string - ): TJITComponentList; - function FindJITListByClass(AComponentClass: TComponentClass - ): TJITComponentList; + function FindJITListByClassName(const AComponentClassName: string): TJITComponentList; + function FindJITListByClass(AComponentClass: TComponentClass): TJITComponentList; function GetDesignerForm(APersistent: TPersistent): TCustomForm; override; - function FindNonFormForm(LookupRoot: TComponent): TCustomNonFormDesignerForm; + function FindNonFormForm(LookupRoot: TComponent): TNonFormProxyDesignerForm; + function CreateNonFormForm(LookupRoot: TComponent): TNonFormProxyDesignerForm; - function CreateNonFormForm(LookupRoot: TComponent): TCustomNonFormDesignerForm; - - procedure RenameJITComponent(AComponent: TComponent; - const NewClassName: shortstring); - procedure RenameJITComponentUnitname(AComponent: TComponent; - const NewUnitName: shortstring); + procedure RenameJITComponent(AComponent: TComponent; const NewClassName: shortstring); + procedure RenameJITComponentUnitname(AComponent: TComponent; const NewUnitName: shortstring); procedure UpdateDesignerFormName(AComponent: TComponent); procedure UpdateComponentName(AComponent: TComponent); - function CreateNewJITMethod(ALookupRoot: TComponent; - const AMethodName: shortstring): TMethod; - procedure RenameJITMethod(AComponent: TComponent; - const OldMethodName, NewMethodName: shortstring); + function CreateNewJITMethod(ALookupRoot: TComponent; const AMethodName: shortstring): TMethod; + procedure RenameJITMethod(AComponent: TComponent; const OldMethodName, NewMethodName: shortstring); procedure SaveHiddenDesignerFormProperties(AComponent: TComponent); - function FindJITComponentByClassName(const AComponentClassName: string - ): TComponent; - function FindJITComponentByClass(AComponentClass: TComponentClass - ): TComponent; + function FindJITComponentByClassName(const AComponentClassName: string): TComponent; + function FindJITComponentByClass(AComponentClass: TComponentClass): TComponent; procedure WriteMethodPropertyEvent(Writer: TWriter; {%H-}Instance: TPersistent; PropInfo: PPropInfo; const MethodValue, DefMethodValue: TMethod; var Handled: boolean); function SaveUnitComponentToBinStream(AnUnitInfo: TUnitInfo; var BinCompStream: TExtMemoryStream): TModalResult; - function OnGetDanglingMethodName(const AMethod: TMethod; - aRootComponent: TObject): string; + function OnGetDanglingMethodName(const AMethod: TMethod; aRootComponent: TObject): string; // ancestors function GetAncestorLookupRoot(AComponent: TComponent): TComponent; override; @@ -175,6 +169,7 @@ function DescendFromDesignerBaseClass(AClass: TComponentClass): integer; override; function FindDesignerBaseClassByName(const AClassName: shortstring; WithDefaults: boolean): TComponentClass; override; + function StandardDesignerBaseClassesCount: Integer; override; // designers function DesignerCount: integer; override; function GetDesigner(Index: integer): TIDesigner; override; @@ -199,7 +194,7 @@ ): TComponent; override; function GetDefaultComponentPosition(TypeClass: TComponentClass; ParentComponent: TComponent; - var X,Y: integer): boolean; override; + out X,Y: integer): boolean; override; function CreateComponent(ParentComponent: TComponent; TypeClass: TComponentClass; const AUnitName: shortstring; @@ -300,8 +295,8 @@ end; -const - StandardDesignerBaseClasses: array[1..3] of TComponentClass = +var + StandardDesignerBaseClasses: array[0..2] of TComponentClass = ( Forms.TForm, TDataModule, @@ -455,11 +450,11 @@ l: Integer; begin inherited Create; - FNonFormForms := TAVLTree.Create(@CompareNonFormDesignerForms); + FNonFormForms := TAvgLvlTree.Create(@CompareNonFormDesignerForms); FSelection := TPersistentSelectionList.Create; FDesignerBaseClasses:=TFPList.Create; FDesignerMediatorClasses:=TFPList.Create; - for l:=Low(StandardDesignerBaseClasses) to High(StandardDesignerBaseClasses) do + for l:=0 to StandardDesignerBaseClassesCount - 1 do FDesignerBaseClasses.Add(StandardDesignerBaseClasses[l]); JITFormList := TJITForms.Create(nil); @@ -473,6 +468,8 @@ FormEditingHook:=Self; RegisterDesignerBaseClass(TAbstractIDEOptionsEditor); + + GlobalDesignHook.AddHandlerGetAncestorInstProp(@OnPropHookGetAncestorInstProp); end; destructor TCustomFormEditor.Destroy; @@ -517,8 +514,7 @@ Obj_Inspector.Selection := FSelection; end; -procedure TCustomFormEditor.DeleteComponent(AComponent: TComponent; - FreeComponent: boolean); +procedure TCustomFormEditor.DeleteComponent(AComponent: TComponent; FreeComponent: boolean); var AForm: TCustomForm; AWinControl: TWinControl; @@ -563,7 +559,7 @@ end else if JITNonFormList.IsJITNonForm(AComponent) then begin // free/unbind a non form component and its designer form aForm:=GetDesignerForm(AComponent); - if (AForm<>nil) and (not (AForm is TCustomNonFormDesignerForm)) then + if (AForm<>nil) and (not (AForm is TNonFormProxyDesignerForm)) then RaiseException(Format( lisCFETCustomFormEditorDeleteComponentWhereIsTheTCustomN, [AComponent. ClassName])); @@ -571,7 +567,7 @@ if (AForm <> nil) then begin FNonFormForms.Remove(AForm); - TCustomNonFormDesignerForm(AForm).LookupRoot := nil; + (AForm as INonFormDesigner).LookupRoot := nil; Application.ReleaseComponent(AForm); end; @@ -593,10 +589,10 @@ DebugLn(['TCustomFormEditor.DeleteComponent Hiding: ',dbgsName(AWinControl)]); end; end; + PropertyEditorHook.PersistentDeleted; end; -function TCustomFormEditor.FindComponentByName(const Name: ShortString - ): TComponent; +function TCustomFormEditor.FindComponentByName(const Name: ShortString): TComponent; var i: longint; Begin @@ -808,38 +804,48 @@ exit; end; -function TCustomFormEditor.FindNonFormForm(LookupRoot: TComponent): TCustomNonFormDesignerForm; +function TCustomFormEditor.FindNonFormForm(LookupRoot: TComponent): TNonFormProxyDesignerForm; var - AVLNode: TAVLTreeNode; + AVLNode: TAvgLvlTreeNode; begin AVLNode := FindNonFormFormNode(LookupRoot); if AVLNode <> nil then - Result := TCustomNonFormDesignerForm(AVLNode.Data) + Result := TNonFormProxyDesignerForm(AVLNode.Data) else Result := nil; end; -function TCustomFormEditor.CreateNonFormForm(LookupRoot: TComponent): TCustomNonFormDesignerForm; +function TCustomFormEditor.CreateNonFormForm(LookupRoot: TComponent): TNonFormProxyDesignerForm; var MediatorClass: TDesignerMediatorClass; + LNonFormProxyDesignerClass: TNonFormProxyDesignerFormClass; begin + Result := Nil; if FindNonFormFormNode(LookupRoot) <> nil then RaiseException(lisCFETCustomFormEditorCreateNonFormFormAlreadyExists); if LookupRoot is TComponent then begin if LookupRoot is TCustomFrame then - Result := TFrameDesignerForm.Create(nil) + begin + LNonFormProxyDesignerClass := BaseFormEditor1.NonFormProxyDesignerForm[FrameProxyDesignerFormId]; + Result := TNonFormProxyDesignerForm(LNonFormProxyDesignerClass.NewInstance); + Result.Create(nil, TFrameDesignerForm.Create(Result)); + end else - Result := TNonControlDesignerForm.Create(nil); + begin + LNonFormProxyDesignerClass := BaseFormEditor1.NonFormProxyDesignerForm[NonControlProxyDesignerFormId]; + Result := TNonFormProxyDesignerForm(LNonFormProxyDesignerClass.NewInstance); + Result.Create(nil, TNonControlDesignerForm.Create(Result)); + end; Result.Name:='_Designer_'+LookupRoot.Name; - Result.LookupRoot := LookupRoot; + (Result as INonFormDesigner).LookupRoot := LookupRoot; FNonFormForms.Add(Result); - if Result is TNonControlDesignerForm then begin + if Result is BaseFormEditor1.NonFormProxyDesignerForm[NonControlProxyDesignerFormId] then begin // create the mediator MediatorClass:=GetDesignerMediatorClass(TComponentClass(LookupRoot.ClassType)); if MediatorClass<>nil then - TNonControlDesignerForm(Result).Mediator:=MediatorClass.CreateMediator(nil,LookupRoot); + (Result as INonControlDesigner).Mediator:=MediatorClass.CreateMediator(nil,LookupRoot); end; end else RaiseException(Format(lisCFETCustomFormEditorCreateNonFormFormUnknownType, [ @@ -870,7 +876,7 @@ procedure TCustomFormEditor.UpdateDesignerFormName(AComponent: TComponent); var - ANonFormForm: TCustomNonFormDesignerForm; + ANonFormForm: TNonFormProxyDesignerForm; begin ANonFormForm := FindNonFormForm(AComponent); //DebugLn(['TCustomFormEditor.UpdateDesignerFormName ',ANonFormForm<>nil, ' ',AComponent.Name]); @@ -917,11 +923,11 @@ procedure TCustomFormEditor.SaveHiddenDesignerFormProperties(AComponent: TComponent); var - NonFormForm: TCustomNonFormDesignerForm; + NonFormForm: TNonFormProxyDesignerForm; begin NonFormForm := FindNonFormForm(AComponent); if NonFormForm <> nil then - NonFormForm.DoSaveBounds; + (NonFormForm as INonFormDesigner).DoSaveBounds; end; function TCustomFormEditor.FindJITComponentByClassName( @@ -1236,7 +1242,7 @@ try NewComponent := TComponent(TypeClass.newinstance); if DisableAutoSize and (NewComponent is TControl) then - TControl(NewComponent).DisableAutoSizing; + TControl(NewComponent).DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomFormEditor.CreateComponent'){$ENDIF}; SetComponentDesignMode(NewComponent,true); if DescendFromDesignerBaseClass(TypeClass)>=0 then begin // this class can have its own lfm streams (e.g. a TFrame) @@ -1592,6 +1598,8 @@ function TCustomFormEditor.GetAncestorLookupRoot(AComponent: TComponent ): TComponent; +{ returns the ancestor of the Owner, if it owns a component with same name. +} var CurRoot: TComponent; AncestorRoot: TComponent; @@ -1600,32 +1608,26 @@ if AComponent=nil then exit; CurRoot:=AComponent.Owner; if CurRoot=nil then exit; - - if csInline in CurRoot.ComponentState then begin - // inline/embedded components (e.g. nested frame) - // find the non inlined instance (the IDE always creates one, it may be hidden) - CurRoot:=FindJITComponentByClass(TComponentClass(CurRoot.ClassType)); - if CurRoot=nil then exit; - if CurRoot.FindComponent(AComponent.Name)=nil then exit; - Result:=CurRoot; - end; - - repeat - // search in next ancestor - AncestorRoot:=GetAncestorInstance(CurRoot); - if AncestorRoot=nil then break; - if AncestorRoot.FindComponent(AComponent.Name)=nil then break; - // a better ancestor was found - Result:=AncestorRoot; - CurRoot:=AncestorRoot; - until false; + AncestorRoot:=GetAncestorInstance(CurRoot); + if AncestorRoot=nil then exit; + if AncestorRoot.FindComponent(AComponent.Name)=nil then exit; + Result:=AncestorRoot; {$IFDEF VerboseFormEditor} DebugLn(['TCustomFormEditor.GetAncestorLookupRoot AComponent=',DbgSName(AComponent),' Result=',DbgSName(Result)]); {$ENDIF} end; -function TCustomFormEditor.GetAncestorInstance(AComponent: TComponent - ): TComponent; +function TCustomFormEditor.GetAncestorInstance(AComponent: TComponent): TComponent; +{ Returns the next ancestor instance. + For example: + TFrame3 = class(TFrame2), TFrame2 = class(TFrame1) + Frame1 is the ancestor instance of Frame2. + Frame2 is the ancestor instance of Frame3. + + If TFrame1 introduced Button1 then + TFrame1.Button1 is the ancestor instance of TFrame2.Button1. + TFrame2.Button1 is the ancestor instance of TFrame3.Button1. +} var aRoot: TComponent; begin @@ -1639,14 +1641,16 @@ Result:=FindJITComponentByClass(TComponentClass(AComponent.ClassType)); end else begin // child component - aRoot:=GetAncestorLookupRoot(AComponent); - if aRoot=nil then exit; - Result:=aRoot.FindComponent(AComponent.Name); + aRoot:=GetAncestorInstance(AComponent.Owner); + if aRoot<>nil then + Result:=aRoot.FindComponent(AComponent.Name); end; + {$IFDEF VerboseFormEditor} + debugln(['TCustomFormEditor.GetAncestorInstance ',DbgSName(AComponent),' csAncestor=',csAncestor in AComponent.ComponentState,' Result=',DbgSName(Result)]); + {$ENDIF} end; -function TCustomFormEditor.RegisterDesignerBaseClass(AClass: TComponentClass - ): integer; +function TCustomFormEditor.RegisterDesignerBaseClass(AClass: TComponentClass): integer; begin if AClass=nil then RaiseGDBException('TCustomFormEditor.RegisterDesignerBaseClass'); @@ -1664,21 +1668,18 @@ var l: Integer; begin - for l:=Low(StandardDesignerBaseClasses) to High(StandardDesignerBaseClasses) - do + for l := 0 to StandardDesignerBaseClassesCount-1 do if StandardDesignerBaseClasses[l]=AClass then RaiseGDBException('TCustomFormEditor.UnregisterDesignerBaseClass'); FDesignerBaseClasses.Remove(AClass); end; -function TCustomFormEditor.IndexOfDesignerBaseClass(AClass: TComponentClass - ): integer; +function TCustomFormEditor.IndexOfDesignerBaseClass(AClass: TComponentClass): integer; begin Result:=FDesignerBaseClasses.IndexOf(AClass); end; -function TCustomFormEditor.DescendFromDesignerBaseClass(AClass: TComponentClass - ): integer; +function TCustomFormEditor.DescendFromDesignerBaseClass(AClass: TComponentClass): integer; begin Result:=FDesignerBaseClasses.Count-1; while (Result>=0) @@ -1690,24 +1691,43 @@ const AClassName: shortstring; WithDefaults: boolean): TComponentClass; var i: Integer; + + function SearchInParent(AParent: TComponentClass): TComponentClass; + begin + Result := nil; + while AParent <> nil do + begin + if CompareText(AClassName, AParent.ClassName)=0 then + Exit(AParent); + AParent:=TComponentClass(AParent.ClassParent); + if AParent = TComponent then + Exit; + end; + end; + begin - if WithDefaults then begin - for i:=Low(StandardDesignerBaseClasses) to high(StandardDesignerBaseClasses) - do begin - if CompareText(AClassName,StandardDesignerBaseClasses[i].ClassName)=0 then - begin - Result:=StandardDesignerBaseClasses[i]; - exit; - end; + if WithDefaults then + begin + for i := 0 to StandardDesignerBaseClassesCount - 1 do + begin + Result := SearchInParent(StandardDesignerBaseClasses[i]); + if Result <> nil then + Exit(StandardDesignerBaseClasses[i]); end; end; - for i:=FDesignerBaseClasses.Count-1 downto 0 do begin + for i:=FDesignerBaseClasses.Count-1 downto 0 do + begin Result:=DesignerBaseClasses[i]; if CompareText(Result.ClassName,AClassName)=0 then exit; end; Result:=nil; end; +function TCustomFormEditor.StandardDesignerBaseClassesCount: Integer; +begin + Result := Succ(High(CustomFormEditor.StandardDesignerBaseClasses) - Low(CustomFormEditor.StandardDesignerBaseClasses)); +end; + procedure TCustomFormEditor.FindDefineProperty( const APersistentClassName, AncestorClassName, Identifier: string; var IsDefined: boolean); @@ -1716,7 +1736,7 @@ APersistent: TPersistent; CacheItem: TDefinePropertiesCacheItem; DefinePropertiesReader: TDefinePropertiesReader; - ANode: TAVLTreeNode; + ANode: TAvgLvlTreeNode; OldClassName: String; DefinePropertiesPersistent: TDefinePropertiesPersistent; @@ -1874,7 +1894,7 @@ procedure TCustomFormEditor.RegisterDefineProperty(const APersistentClassName, Identifier: string); var - ANode: TAVLTreeNode; + ANode: TAvgLvlTreeNode; CacheItem: TDefinePropertiesCacheItem; begin //DebugLn('TCustomFormEditor.RegisterDefineProperty ',APersistentClassName,' ',Identifier); @@ -2057,7 +2077,7 @@ end; end; -function TCustomFormEditor.FindNonFormFormNode(LookupRoot: TComponent): TAVLTreeNode; +function TCustomFormEditor.FindNonFormFormNode(LookupRoot: TComponent): TAvgLvlTreeNode; begin Result := FNonFormForms.FindKey(Pointer(LookupRoot), @CompareLookupRootAndNonFormDesignerForm); @@ -2180,6 +2200,16 @@ Result:=TComponentClass(FDesignerBaseClasses[Index]); end; +function TCustomFormEditor.GetStandardDesignerBaseClasses(Index: integer): TComponentClass; +begin + Result := CustomFormEditor.StandardDesignerBaseClasses[Index]; +end; + +procedure TCustomFormEditor.SetStandardDesignerBaseClasses(Index: integer; AValue: TComponentClass); +begin + CustomFormEditor.StandardDesignerBaseClasses[Index] := AValue; +end; + procedure TCustomFormEditor.FrameCompGetCreationClass(Sender: TObject; var NewComponentClass: TComponentClass); begin @@ -2187,6 +2217,23 @@ OnSelectFrame(Sender,NewComponentClass); end; +function TCustomFormEditor.OnPropHookGetAncestorInstProp( + const InstProp: TInstProp; out AncestorInstProp: TInstProp): boolean; +var + aComponent: TComponent; +begin + Result:=false; + if (InstProp.Instance=nil) or (InstProp.PropInfo=nil) then exit; + if InstProp.Instance is TComponent then begin + aComponent:=TComponent(InstProp.Instance); + AncestorInstProp.Instance:=GetAncestorInstance(aComponent); + if AncestorInstProp.Instance=nil then exit; + AncestorInstProp.PropInfo:=GetPropInfo(AncestorInstProp.Instance,InstProp.PropInfo^.Name); + if AncestorInstProp.PropInfo<>InstProp.PropInfo then exit; + Result:=true; + end; +end; + function TCustomFormEditor.GetPropertyEditorHook: TPropertyEditorHook; begin Result:=GlobalDesignHook; @@ -2195,17 +2242,16 @@ end; function TCustomFormEditor.FindDefinePropertyNode( - const APersistentClassName: string): TAVLTreeNode; + const APersistentClassName: string): TAvgLvlTreeNode; begin if FDefineProperties=nil then FDefineProperties:= - TAVLTree.Create(TListSortCompare(@CompareDefPropCacheItems)); + TAvgLvlTree.Create(TListSortCompare(@CompareDefPropCacheItems)); Result:=FDefineProperties.FindKey(PChar(APersistentClassName), TListSortCompare(@ComparePersClassNameAndDefPropCacheItem)); end; -function TCustomFormEditor.CreateUniqueComponentName(AComponent: TComponent - ): string; +function TCustomFormEditor.CreateUniqueComponentName(AComponent: TComponent): string; begin Result:=''; if (AComponent=nil) then exit; @@ -2236,8 +2282,7 @@ end; end; -function TCustomFormEditor.TranslateKeyToDesignerCommand(Key: word; - Shift: TShiftState): word; +function TCustomFormEditor.TranslateKeyToDesignerCommand(Key: word; Shift: TShiftState): word; begin //debugln(['TCustomFormEditor.TranslateKeyToDesignerCommand ',DbgSName(TDesignerIDECommandForm),' ',Key,' ',dbgs(Shift)]); Result:=EditorOpts.KeyMap.TranslateKey(Key,Shift,TDesignerIDECommandForm); @@ -2290,13 +2335,13 @@ end; function TCustomFormEditor.GetDefaultComponentPosition( - TypeClass: TComponentClass; ParentComponent: TComponent; var X, Y: integer + TypeClass: TComponentClass; ParentComponent: TComponent; out X, Y: integer ): boolean; var i: Integer; CurComponent: TComponent; P: TPoint; - AForm: TCustomNonFormDesignerForm; + AForm: TNonFormProxyDesignerForm; MinX: Integer; MinY: Integer; MaxX: Integer; @@ -2393,8 +2438,7 @@ CustomForm.Designer.Modified; end; -procedure TCustomFormEditor.SetObj_Inspector( - AnObjectInspector: TObjectInspectorDlg); +procedure TCustomFormEditor.SetObj_Inspector(AnObjectInspector: TObjectInspectorDlg); begin if AnObjectInspector=FObj_Inspector then exit; if FObj_Inspector<>nil then begin @@ -2420,8 +2464,9 @@ DesignerForm := GetDesignerForm(APersistent); // ask TMediator - if DesignerForm is TNonControlDesignerForm then begin - Mediator:=TNonControlDesignerForm(DesignerForm).Mediator; + if DesignerForm is BaseFormEditor1.NonFormProxyDesignerForm[NonControlProxyDesignerFormId] then + begin + Mediator:=(DesignerForm as INonControlDesigner).Mediator; if Mediator<>nil then Mediator.GetObjInspNodeImageIndex(APersistent, AImageIndex); end; diff -Nru lazarus-1.4.4+dfsg/ide/debugmanager.pas lazarus-1.6+dfsg/ide/debugmanager.pas --- lazarus-1.4.4+dfsg/ide/debugmanager.pas 2014-12-10 14:26:18.000000000 +0000 +++ lazarus-1.6+dfsg/ide/debugmanager.pas 2015-10-29 11:52:52.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: debugmanager.pas 47172 2014-12-10 14:26:18Z mattias $ } +{ $Id: debugmanager.pas 50198 2015-10-29 11:52:52Z ondrej $ } { /*************************************************************************** debugmanager.pp @@ -41,15 +41,15 @@ MemCheck, {$ENDIF} // LCL - Classes, SysUtils, Forms, Controls, Dialogs, ExtCtrls, FileUtil, LCLProc, - LCLType, LCLIntf, LazLoggerBase, Laz2_XMLCfg, LazFileCache, + Classes, SysUtils, Forms, Controls, Dialogs, ExtCtrls, LazFileUtils, + LCLType, LCLIntf, LazLoggerBase, Laz2_XMLCfg, LazFileCache, LazUTF8, // codetools CodeCache, CodeToolManager, PascalParserTool, CodeTree, // IDEIntf IDEWindowIntf, SrcEditorIntf, MenuIntf, IDECommands, LazIDEIntf, ProjectIntf, CompOptsIntf, IDEDialogs, // IDE - LazConf, CompilerOptions, EnvironmentOpts, + CompilerOptions, EnvironmentOpts, SourceEditor, ProjectDefs, Project, IDEProcs, InputHistory, Debugger, LazarusIDEStrConsts, TransferMacros, MainBar, MainIntf, MainBase, BaseBuildManager, SourceMarks, @@ -80,7 +80,7 @@ procedure mnuAddBpDataAtCursor(Sender: TObject); // Debugger events - procedure DebuggerBreakPointHit(ADebugger: TDebuggerIntf; ABreakPoint: TBaseBreakPoint; var ACanContinue: Boolean); + procedure DebuggerBreakPointHit({%H-}ADebugger: TDebuggerIntf; ABreakPoint: TBaseBreakPoint; var {%H-}ACanContinue: Boolean); procedure DebuggerBeforeChangeState(ADebugger: TDebuggerIntf; AOldState: TDBGState); procedure DebuggerChangeState(ADebugger: TDebuggerIntf; OldState: TDBGState); procedure DebuggerCurrentLine(Sender: TObject; const ALocation: TDBGLocationRec); @@ -305,8 +305,6 @@ procedure Update(Item: TCollectionItem); override; end; - TDBGEventCategories = set of TDBGEventCategory; - { TProjectExceptions } procedure TProjectExceptions.SetIgnoreAll(const AValue: Boolean); @@ -435,6 +433,7 @@ [lisHitCount, Hitcount, lisAction, GetBreakPointActionsDescription(Self), lisCondition, Expression]); + if SenderMark<>nil then ; end; procedure TManagedBreakPoint.OnSourceMarkCreatePopupMenu( @@ -446,6 +445,7 @@ AddMenuItem(lisEnableBreakPoint, True, @OnToggleEnableMenuItemClick); AddMenuItem(lisDeleteBreakPoint, True, @OnDeleteMenuItemClick); AddMenuItem(lisViewBreakPointProperties, True, @OnViewPropertiesMenuItemClick); + if SenderMark<>nil then ; end; procedure TManagedBreakPoint.DoChanged; @@ -614,6 +614,7 @@ exit; debugln(['TDebugManager.GetFullFilename found ',CodePos.Code.Filename,' Line=',CodePos.Y,' Col=',CodePos.X]); AUnitinfo.LocationFullFile := CodePos.Code.Filename; + AUnitinfo.SrcLine := CodePos.Y; //DumpStack; Result:=true; end; @@ -625,6 +626,7 @@ Result := Filename <> ''; if Result then exit; + //debugln(['TDebugManager.GetFullFilename Src=',AUnitinfo.SrcClassName,' Func=',AUnitinfo.FunctionName]); if (dlfSearchByFunctionName in AUnitinfo.Flags) and (AUnitinfo.FunctionName<>'') then begin if FindSrc then exit; @@ -780,6 +782,7 @@ function TDebugManager.DoProjectClose(Sender: TObject; AProject: TLazProject): TModalResult; begin + if AProject<>Project1 then exit(mrCancel); ResetDebugger; Result := mrOK; end; @@ -882,28 +885,33 @@ end; procedure TDebugManager.mnuViewDebugDialogClick(Sender: TObject); +var + xCommand: Integer; begin - if Sender is TIDEMenuItem - then begin - ViewDebugDialog(TDebugDialogType((Sender as TIDEMenuItem).Tag)); - end; + if (Sender is TIDESpecialCommand) and (TIDESpecialCommand(Sender).Command<>nil) then + xCommand := TIDESpecialCommand(Sender).Command.Command + else + if Sender is TIDECommand then + xCommand := TIDECommand(Sender).Command + else + xCommand := -1; - if Sender is TIDECommand then begin - case TIDECommand(Sender).Command of - ecToggleWatches : ViewDebugDialog(ddtWatches); - ecToggleBreakPoints : ViewDebugDialog(ddtBreakpoints); - ecToggleDebuggerOut : ViewDebugDialog(ddtOutput); - ecToggleLocals : ViewDebugDialog(ddtLocals); - ecToggleCallStack : ViewDebugDialog(ddtCallStack); - ecToggleRegisters : ViewDebugDialog(ddtRegisters); - ecToggleAssembler : ViewDebugDialog(ddtAssembler); - ecToggleDebugEvents : ViewDebugDialog(ddtEvents); - ecEvaluate : ViewDebugDialog(ddtEvaluate); - ecInspect : ViewDebugDialog(ddtInspect); - ecViewPseudoTerminal: ViewDebugDialog(ddtPseudoTerminal); - ecViewThreads : ViewDebugDialog(ddtThreads); - ecViewHistory : ViewDebugDialog(ddtHistory); - end; + case xCommand of + ecToggleWatches : ViewDebugDialog(ddtWatches); + ecToggleBreakPoints : ViewDebugDialog(ddtBreakpoints); + ecToggleDebuggerOut : ViewDebugDialog(ddtOutput); + ecToggleLocals : ViewDebugDialog(ddtLocals); + ecToggleCallStack : ViewDebugDialog(ddtCallStack); + ecToggleRegisters : ViewDebugDialog(ddtRegisters); + ecToggleAssembler : ViewDebugDialog(ddtAssembler); + ecToggleDebugEvents : ViewDebugDialog(ddtEvents); + ecEvaluate : ViewDebugDialog(ddtEvaluate); + ecInspect : ViewDebugDialog(ddtInspect); + ecViewPseudoTerminal: ViewDebugDialog(ddtPseudoTerminal); + ecViewThreads : ViewDebugDialog(ddtThreads); + ecViewHistory : ViewDebugDialog(ddtHistory); + else + raise Exception.CreateFmt('IDE Internal error: TDebugManager.mnuViewDebugDialogClick, wrong command parameter %d.', [xCommand]); end; end; @@ -1080,6 +1088,7 @@ begin if Destroying or (MainIDE=nil) or (MainIDE.ToolStatus=itExiting) then exit; + if AOldState=dsNone then ; assert((ADebugger=FDebugger) and (ADebugger<>nil), 'TDebugManager.OnDebuggerChangeState'); FInStateChange := True; @@ -1169,7 +1178,7 @@ if (FDebugger.State in [dsRun]) then begin // hide IDE during run - if EnvironmentOptions.HideIDEOnRun and (MainIDE.ToolStatus=itDebugger) and not FStepping + if EnvironmentOptions.Desktop.HideIDEOnRun and (MainIDE.ToolStatus=itDebugger) and not FStepping then MainIDE.HideIDE; if (FPrevShownWindow <> 0) and not FStepping then @@ -1190,10 +1199,10 @@ if not FStepping then begin FPrevShownWindow := GetForegroundWindow; - if EnvironmentOptions.HideIDEOnRun then + if EnvironmentOptions.Desktop.HideIDEOnRun then MainIDE.UnhideIDE; - if not EnvironmentOptions.SingleTaskBarButton and - not EnvironmentOptions.HideIDEOnRun then + if not EnvironmentOptions.Desktop.SingleTaskBarButton and + not EnvironmentOptions.Desktop.HideIDEOnRun then Application.BringToFront; end; end; @@ -1345,8 +1354,10 @@ SrcLine := -1; end; end - else + else begin + NewSource := Nil; SrcLine := -1; + end; ReleaseRefAndNil(CurrentSourceUnitInfo); @@ -1438,7 +1449,7 @@ then begin CurDialog := TDebuggerDlg(DEBUGDIALOGCLASS[ADialogType].NewInstance); if FInStateChange then CurDialog.BeginUpdate; - CurDialog.DisableAutoSizing; + CurDialog.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDebugManager.ViewDebugDialog'){$ENDIF}; CurDialog.Create(Self); FDialogs[ADialogType]:=CurDialog; CurDialog.Name:= DebugDialogNames[ADialogType]; @@ -1462,7 +1473,7 @@ end else begin CurDialog:=FDialogs[ADialogType]; - CurDialog.DisableAutoSizing; + CurDialog.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDebugManager.ViewDebugDialog'){$ENDIF}; if (CurDialog is TBreakPointsDlg) then begin if (Project1<>nil) then @@ -1481,11 +1492,11 @@ end; end; if not DoDisableAutoSizing then - CurDialog.EnableAutoSizing; + CurDialog.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TDebugManager.ViewDebugDialog'){$ENDIF}; if Show then begin CurDialog.BeginUpdate; - IDEWindowCreators.ShowForm(CurDialog,BringToFront, vmOnlyMoveOffScreenToVisible); + IDEWindowCreators.ShowForm(CurDialog,BringToFront,vmOnlyMoveOffScreenToVisible); CurDialog.EndUpdate; end; end; @@ -1864,34 +1875,28 @@ and (pfRunnable in Project1.Flags) ); // Run - RunSpeedButton.Enabled := CanRun and (not DebuggerIsValid + itmRunMenuRun.Enabled := CanRun and (not DebuggerIsValid or (dcRun in FDebugger.Commands) or (FDebugger.State = dsIdle)); - itmRunMenuRun.Enabled := RunSpeedButton.Enabled; // Pause - PauseSpeedButton.Enabled := CanRun and DebuggerIsValid + itmRunMenuPause.Enabled := CanRun and DebuggerIsValid and (dcPause in FDebugger.Commands); - itmRunMenuPause.Enabled := PauseSpeedButton.Enabled; // Show execution point itmRunMenuShowExecutionPoint.Enabled := CanRun and DebuggerIsValid and (FDebugger.State = dsPause); // Step into - StepIntoSpeedButton.Enabled := CanRun and (not DebuggerIsValid + itmRunMenuStepInto.Enabled := CanRun and (not DebuggerIsValid or (dcStepInto in FDebugger.Commands) or (FDebugger.State = dsIdle)); - itmRunMenuStepInto.Enabled := StepIntoSpeedButton.Enabled; // Step over - StepOverSpeedButton.Enabled := CanRun and (not DebuggerIsValid + itmRunMenuStepOver.Enabled := CanRun and (not DebuggerIsValid or (dcStepOver in FDebugger.Commands) or (FDebugger.State = dsIdle)); - itmRunMenuStepOver.Enabled := StepOverSpeedButton.Enabled; // Step out - StepOutSpeedButton.Enabled := CanRun and DebuggerIsValid + itmRunMenuStepOut.Enabled := CanRun and DebuggerIsValid and (dcStepOut in FDebugger.Commands) and (FDebugger.State = dsPause); - itmRunMenuStepOut.Enabled := StepOutSpeedButton.Enabled; // Run to cursor itmRunMenuRunToCursor.Enabled := CanRun and DebuggerIsValid and (dcRunTo in FDebugger.Commands); // Stop itmRunMenuStop.Enabled := CanRun and DebuggerIsValid; - StopSpeedButton.Enabled := itmRunMenuStop.Enabled; //Attach / Detach itmRunMenuAttach.Enabled := (not DebuggerIsValid) or (dcAttach in FDebugger.Commands); diff -Nru lazarus-1.4.4+dfsg/ide/definesgui.lfm lazarus-1.6+dfsg/ide/definesgui.lfm --- lazarus-1.4.4+dfsg/ide/definesgui.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/definesgui.lfm 2015-05-24 12:01:06.000000000 +0000 @@ -0,0 +1,109 @@ +object DefinesGuiForm: TDefinesGuiForm + Left = 305 + Height = 326 + Top = 265 + Width = 341 + BorderIcons = [biSystemMenu] + Caption = 'Defines' + ClientHeight = 326 + ClientWidth = 341 + OnCreate = FormCreate + OnDestroy = FormDestroy + OnShow = FormShow + Position = poScreenCenter + LCLVersion = '1.5' + object gbNewDefine: TGroupBox + Left = 6 + Height = 73 + Top = 6 + Width = 329 + Align = alTop + AutoSize = True + BorderSpacing.Around = 6 + Caption = 'gbNewDefine' + ClientHeight = 57 + ClientWidth = 327 + TabOrder = 0 + object AddBtn: TBitBtn + AnchorSideTop.Control = RemoveBtn + AnchorSideRight.Control = RemoveBtn + Left = 165 + Height = 27 + Top = 27 + Width = 75 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Right = 6 + Caption = '&Add' + Constraints.MinHeight = 25 + Constraints.MinWidth = 75 + OnClick = AddBtnClick + TabOrder = 0 + end + object RemoveBtn: TBitBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = edDefine + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = edDefine + AnchorSideRight.Side = asrBottom + Left = 246 + Height = 27 + Top = 27 + Width = 75 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Top = 6 + BorderSpacing.Bottom = 3 + Caption = '&Remove' + Constraints.MinHeight = 25 + Constraints.MinWidth = 75 + OnClick = RemoveBtnClick + TabOrder = 1 + end + object edDefine: TEdit + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 21 + Top = 0 + Width = 315 + Align = alTop + BorderSpacing.Left = 6 + BorderSpacing.Right = 6 + BorderSpacing.Bottom = 6 + OnChange = EditChange + TabOrder = 2 + end + end + object DefinesCheckList: TCheckListBox + Left = 6 + Height = 187 + Top = 85 + Width = 329 + Align = alClient + Anchors = [akTop, akBottom] + BorderSpacing.Around = 6 + ItemHeight = 0 + OnClick = DefinesCheckListClick + OnDblClick = DefinesCheckListDblClick + OnKeyDown = DefinesCheckListKeyDown + TabOrder = 1 + TopIndex = -1 + end + object ButtonPanel: TButtonPanel + Left = 6 + Height = 42 + Top = 278 + Width = 329 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 2 + ShowButtons = [pbOK, pbCancel, pbHelp] + end +end diff -Nru lazarus-1.4.4+dfsg/ide/definesgui.pas lazarus-1.6+dfsg/ide/definesgui.pas --- lazarus-1.4.4+dfsg/ide/definesgui.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/definesgui.pas 2015-05-24 12:01:06.000000000 +0000 @@ -0,0 +1,219 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** +} +unit DefinesGui; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, Forms, StdCtrls, Buttons, ButtonPanel, CheckLst, LCLType, Controls, + IDEHelpIntf, LazarusIDEStrConsts, Compiler; + +type + + { TDefinesGuiForm } + + TDefinesGuiForm = class(TForm) + AddBtn: TBitBtn; + ButtonPanel: TButtonPanel; + DefinesCheckList: TCheckListBox; + gbNewDefine: TGroupBox; + RemoveBtn: TBitBtn; + edDefine: TEdit; + procedure FormCreate(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure AddBtnClick(Sender: TObject); + procedure EditChange(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); + procedure DefinesCheckListClick(Sender: TObject); + procedure DefinesCheckListDblClick(Sender: TObject); + procedure RemoveBtnClick(Sender: TObject); + procedure DefinesCheckListKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + private + FIdleConnected: Boolean; + FOptionsReader: TCompilerOptReader; + FOptionsThread: TCompilerOptThread; + FCustomOptions: TStrings; + FUseComments: Boolean; + procedure SetIdleConnected(AValue: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); + procedure DeleteSelected; + procedure UpdateButtons; + private + property IdleConnected: Boolean read FIdleConnected write SetIdleConnected; + public + function ToCustomOptions(aStrings: TStrings): TModalResult; + public + property OptionsReader: TCompilerOptReader read FOptionsReader write FOptionsReader; + property OptionsThread: TCompilerOptThread read FOptionsThread write FOptionsThread; + property CustomOptions: TStrings read FCustomOptions write FCustomOptions; + property UseComments: Boolean read FUseComments write FUseComments; + end; + + +implementation + +{$R *.lfm} + +{ TDefinesGuiForm } + +procedure TDefinesGuiForm.FormCreate(Sender: TObject); +begin + Caption := lisLazBuildDefines; + gbNewDefine.Caption := lisCodeToolsDefsDefine; + AddBtn.Caption := lisBtnAdd; + AddBtn.LoadGlyphFromResourceName(HInstance, 'laz_add'); + RemoveBtn.Caption := lisBtnRemove; + RemoveBtn.LoadGlyphFromResourceName(HInstance, 'laz_delete'); +end; + +procedure TDefinesGuiForm.FormShow(Sender: TObject); +begin + DefinesCheckListClick(Nil); + ActiveControl := DefinesCheckList; + IdleConnected := True; +end; + +procedure TDefinesGuiForm.FormDestroy(Sender: TObject); +begin + +end; + +procedure TDefinesGuiForm.AddBtnClick(Sender: TObject); +begin + DefinesCheckList.Items.Add(edDefine.Text); + DefinesCheckList.ItemIndex := DefinesCheckList.Items.Count-1; + UpdateButtons; +end; + +procedure TDefinesGuiForm.EditChange(Sender: TObject); +begin + UpdateButtons; +end; + +procedure TDefinesGuiForm.HelpButtonClick(Sender: TObject); +begin + LazarusHelp.ShowHelpForIDEControl(Self); +end; + +procedure TDefinesGuiForm.DefinesCheckListClick(Sender: TObject); +begin + with DefinesCheckList do + if ItemIndex > -1 then + edDefine.Text := Items[ItemIndex]; + UpdateButtons; +end; + +procedure TDefinesGuiForm.DefinesCheckListDblClick(Sender: TObject); +begin + //ModalResult := mrOK; +end; + +procedure TDefinesGuiForm.RemoveBtnClick(Sender: TObject); +begin + DeleteSelected; +end; + +procedure TDefinesGuiForm.DefinesCheckListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +begin + if Key = VK_DELETE then + begin + DeleteSelected; + Key := 0; + end; +end; + +procedure TDefinesGuiForm.SetIdleConnected(AValue: Boolean); +begin + if FIdleConnected = AValue then exit; + FIdleConnected := AValue; + if FIdleConnected then + Application.AddOnIdleHandler(@OnIdle) + else + Application.RemoveOnIdleHandler(@OnIdle); +end; + +procedure TDefinesGuiForm.OnIdle(Sender: TObject; var Done: Boolean); +var + s: String; + i, ListInd: Integer; +begin + IdleConnected := False; + Screen.Cursor := crHourGlass; + try + FOptionsThread.EndParsing; // Make sure the options are read. + // Parse and separate defines from other options. + FOptionsReader.FromCustomOptions(FCustomOptions); + // Check the found defines in the GUI. + for i := 0 to FOptionsReader.Defines.Count-1 do + begin + s := Copy(FOptionsReader.Defines[i], 3, MaxInt); // Skip '-d'. + ListInd := DefinesCheckList.Items.IndexOf(s); + if ListInd = -1 then + begin + DefinesCheckList.Items.Add(s); + ListInd := DefinesCheckList.Items.Count-1; + end; + DefinesCheckList.Checked[ListInd] := True; + end; + finally + Screen.Cursor := crDefault; + end; +end; + +procedure TDefinesGuiForm.DeleteSelected; +var + i: Integer; +begin + with DefinesCheckList.Items do + for i := Count-1 downto 0 do + if DefinesCheckList.Selected[i] then + begin + Delete(i); + UpdateButtons; + end; +end; + +procedure TDefinesGuiForm.UpdateButtons; +begin + AddBtn.Enabled := (edDefine.Text <> '') + and (DefinesCheckList.Items.IndexOf(edDefine.Text) = -1); + RemoveBtn.Enabled := DefinesCheckList.SelCount > 0; +end; + +function TDefinesGuiForm.ToCustomOptions(aStrings: TStrings): TModalResult; +var + i: Integer; +begin + // First update defines to OptionsReader. + FOptionsReader.Defines.Clear; + for i := 0 to DefinesCheckList.Count-1 do + if DefinesCheckList.Checked[i] then + FOptionsReader.Defines.Add('-d' + DefinesCheckList.Items[i]); + // Then add all options and defines. + FOptionsReader.ToCustomOptions(aStrings, FUseComments); + Result:=mrOk; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/desktopmanager.lfm lazarus-1.6+dfsg/ide/desktopmanager.lfm --- lazarus-1.4.4+dfsg/ide/desktopmanager.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/desktopmanager.lfm 2015-10-20 16:02:06.000000000 +0000 @@ -0,0 +1,266 @@ +object DesktopForm: TDesktopForm + Left = 334 + Height = 292 + Top = 319 + Width = 377 + BorderIcons = [biSystemMenu] + Caption = 'DesktopForm' + ClientHeight = 292 + ClientWidth = 377 + OnCreate = FormCreate + OnShow = FormShow + Position = poScreenCenter + LCLVersion = '1.5' + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 34 + Top = 252 + Width = 365 + OKButton.Name = 'OKButton' + OKButton.Caption = 'OK' + OKButton.DefaultCaption = False + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.Caption = 'Close' + CancelButton.DefaultCaption = False + TabOrder = 3 + ShowButtons = [pbClose, pbHelp] + object ExportBitBtn: TBitBtn + Left = 93 + Height = 26 + Top = 8 + Width = 91 + Align = alCustom + AutoSize = True + Caption = 'ExportBitBtn' + Constraints.MinWidth = 25 + OnClick = ExportBitBtnClick + TabOrder = 4 + end + object ImportBitBtn: TBitBtn + Left = 190 + Height = 26 + Top = 8 + Width = 94 + Align = alCustom + AutoSize = True + Caption = 'ImportBitBtn' + Constraints.MinWidth = 25 + OnClick = ImportActionClick + TabOrder = 5 + end + end + object DesktopListBox: TListBox + AnchorSideLeft.Control = LblGrayedInfo + AnchorSideRight.Control = LblGrayedInfo + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = AutoSaveActiveDesktopCheckBox + Left = 11 + Height = 190 + Top = 8 + Width = 320 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Bottom = 6 + ItemHeight = 18 + OnDblClick = SetActiveDesktopActionClick + OnDrawItem = DesktopListBoxDrawItem + OnKeyPress = DesktopListBoxKeyPress + OnSelectionChange = DesktopListBoxSelectionChange + Style = lbOwnerDrawFixed + TabOrder = 0 + end + object AutoSaveActiveDesktopCheckBox: TCheckBox + AnchorSideLeft.Control = LblGrayedInfo + AnchorSideTop.Side = asrBottom + AnchorSideBottom.Control = LblGrayedInfo + Left = 11 + Height = 19 + Top = 204 + Width = 151 + Anchors = [akLeft, akBottom] + BorderSpacing.Top = 6 + BorderSpacing.Bottom = 6 + Caption = 'Auto save active desktop' + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end + object ToolBar1: TToolBar + Left = 340 + Height = 241 + Top = 8 + Width = 30 + Align = alNone + Anchors = [akTop, akRight, akBottom] + Caption = 'ToolBar1' + EdgeBorders = [] + TabOrder = 2 + object SaveTB: TToolButton + Left = 1 + Top = 0 + Action = SaveAction + OnClick = SaveActionClick + ParentShowHint = False + ShowHint = True + end + object ToolButton1: TToolButton + Left = 1 + Height = 5 + Top = 22 + Width = 23 + Caption = 'ToolButton1' + Style = tbsDivider + end + object SetActiveDesktopTB: TToolButton + Left = 1 + Top = 27 + Action = SetActiveDesktopAction + OnClick = SetActiveDesktopActionClick + ParentShowHint = False + ShowHint = True + end + object SetDebugDesktopTB: TToolButton + Left = 1 + Top = 54 + Action = SetDebugDesktopAction + OnClick = SetDebugDesktopActionClick + ParentShowHint = False + ShowHint = True + end + object RenameTB: TToolButton + Left = 1 + Top = 76 + Action = RenameAction + OnClick = RenameActionClick + ParentShowHint = False + ShowHint = True + end + object DeleteTB: TToolButton + Left = 1 + Top = 98 + Action = DeleteAction + OnClick = DeleteActionClick + ParentShowHint = False + ShowHint = True + end + object MoveUpTB: TToolButton + Tag = -1 + Left = 1 + Top = 125 + Action = MoveUpAction + OnClick = MoveUpDownActionClick + ParentShowHint = False + ShowHint = True + end + object MoveDownTB: TToolButton + Tag = 1 + Left = 1 + Top = 147 + Action = MoveDownAction + OnClick = MoveUpDownActionClick + ParentShowHint = False + ShowHint = True + end + object ToolButton2: TToolButton + Left = 1 + Height = 5 + Top = 120 + Width = 23 + Caption = 'ToolButton2' + Style = tbsDivider + end + object ToolButton3: TToolButton + Left = 1 + Height = 5 + Top = 49 + Width = 23 + Caption = 'ToolButton3' + Style = tbsDivider + end + end + object LblGrayedInfo: TLabel + AnchorSideTop.Side = asrBottom + AnchorSideRight.Side = asrBottom + Left = 11 + Height = 15 + Top = 229 + Width = 320 + Anchors = [akLeft, akRight, akBottom] + BorderSpacing.Top = 3 + Caption = 'Grayed desktops are for undocked environment.' + ParentColor = False + WordWrap = True + end + object ExportMenu: TPopupMenu + left = 48 + top = 24 + object ExportItem: TMenuItem + Action = ExportAction + OnClick = ExportActionClick + end + object ExportAllItem: TMenuItem + Action = ExportAllAction + OnClick = ExportAllActionClick + end + end + object ActionList1: TActionList + left = 128 + top = 32 + object SaveAction: TAction + Caption = 'SaveAction' + OnExecute = SaveActionClick + ShortCut = 16467 + end + object SetActiveDesktopAction: TAction + Caption = 'SetActiveDesktopAction' + OnExecute = SetActiveDesktopActionClick + ShortCut = 16397 + end + object SetDebugDesktopAction: TAction + Caption = 'SetDebugDesktopAction' + OnExecute = SetDebugDesktopActionClick + ShortCut = 16452 + end + object RenameAction: TAction + Caption = 'RenameAction' + OnExecute = RenameActionClick + ShortCut = 16466 + end + object DeleteAction: TAction + Caption = 'DeleteAction' + OnExecute = DeleteActionClick + ShortCut = 16430 + end + object MoveUpAction: TAction + Tag = -1 + Caption = 'MoveUpAction' + OnExecute = MoveUpDownActionClick + ShortCut = 16422 + end + object MoveDownAction: TAction + Tag = 1 + Caption = 'MoveDownAction' + OnExecute = MoveUpDownActionClick + ShortCut = 16424 + end + object ExportAction: TAction + Caption = 'ExportAction' + OnExecute = ExportActionClick + ShortCut = 16453 + end + object ExportAllAction: TAction + Caption = 'ExportAllAction' + OnExecute = ExportAllActionClick + ShortCut = 24645 + end + object ImportAction: TAction + Caption = 'ImportAction' + OnExecute = ImportActionClick + ShortCut = 16457 + end + end +end diff -Nru lazarus-1.4.4+dfsg/ide/desktopmanager.pas lazarus-1.6+dfsg/ide/desktopmanager.pas --- lazarus-1.4.4+dfsg/ide/desktopmanager.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/desktopmanager.pas 2015-10-20 16:02:06.000000000 +0000 @@ -0,0 +1,849 @@ +unit DesktopManager; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Types, + LCLIntf, LCLType, LCLProc, Forms, Controls, Graphics, Dialogs, StdCtrls, + Buttons, ButtonPanel, Menus, ComCtrls, ActnList, + // LazUtils + Laz2_XMLCfg, + // IdeIntf + IDEImagesIntf, ToolBarIntf, + // IDE + LazarusIDEStrConsts, EnvironmentOpts, IDEOptionDefs, InputHistory; + +type + + { TDesktopForm } + + TDesktopForm = class(TForm) + ExportBitBtn: TBitBtn; + ImportBitBtn: TBitBtn; + ImportAction: TAction; + ExportAction: TAction; + ExportAllAction: TAction; + MoveUpAction: TAction; + MoveDownAction: TAction; + DeleteAction: TAction; + RenameAction: TAction; + SetDebugDesktopAction: TAction; + SetActiveDesktopAction: TAction; + SaveAction: TAction; + ActionList1: TActionList; + AutoSaveActiveDesktopCheckBox: TCheckBox; + ButtonPanel1: TButtonPanel; + LblGrayedInfo: TLabel; + ExportMenu: TPopupMenu; + ExportItem: TMenuItem; + ExportAllItem: TMenuItem; + DesktopListBox: TListBox; + ToolBar1: TToolBar; + SaveTB: TToolButton; + ToolButton1: TToolButton; + SetActiveDesktopTB: TToolButton; + SetDebugDesktopTB: TToolButton; + RenameTB: TToolButton; + DeleteTB: TToolButton; + MoveUpTB: TToolButton; + MoveDownTB: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + procedure DeleteActionClick(Sender: TObject); + procedure DesktopListBoxDrawItem(Control: TWinControl; Index: Integer; + ARect: TRect; {%H-}State: TOwnerDrawState); + procedure DesktopListBoxKeyPress(Sender: TObject; var Key: char); + procedure DesktopListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); + procedure ExportAllActionClick(Sender: TObject); + procedure ExportActionClick(Sender: TObject); + procedure ExportBitBtnClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); + procedure ImportActionClick(Sender: TObject); + procedure MoveUpDownActionClick(Sender: TObject); + procedure RenameActionClick(Sender: TObject); + procedure SaveActionClick(Sender: TObject); + procedure SetActiveDesktopActionClick(Sender: TObject); + procedure SetDebugDesktopActionClick(Sender: TObject); + private + FActiveDesktopChanged: Boolean; + + procedure RefreshList(SelectName: string = ''); + procedure ExportDesktops(const aDesktops: array of TDesktopOpt); + end; + + TShowDesktopItem = class(TMenuItem) + public + DesktopName: string; + end; + + TShowDesktopsToolButton = class(TIDEToolButton) + private class var + DoChangeDesktopName: string; + private + procedure ChangeDesktop(Sender: TObject); + class procedure DoChangeDesktop({%H-}Data: PtrInt); + procedure SaveAsDesktop(Sender: TObject); + procedure ToggleAsDebugDesktop(Sender: TObject); + procedure MenuOnPopup(Sender: TObject); + + procedure RefreshMenu; + public + procedure DoOnAdded; override; + end; + +function ShowDesktopManagerDlg: TModalResult; +function SaveCurrentDesktop(const aDesktopName: string; const aShowOverwriteDialog: Boolean): Boolean; +function ToggleDebugDesktop(const aDesktopName: string; const aShowIncompatibleDialog: Boolean): Boolean; + +implementation + +{$R *.lfm} + +function ShowDesktopManagerDlg: TModalResult; +var + theForm: TDesktopForm; + xActiveDesktopChanged: Boolean; +begin + //IMPORTANT INFORMATION: + //Desktop Manager must stay a modal dialog! Do not redesign it to a modeless IDE dialog!!! + + theForm := TDesktopForm.Create(Nil); + try + theForm.AutoSaveActiveDesktopCheckBox.Checked := EnvironmentOptions.AutoSaveActiveDesktop; + + Result := theForm.ShowModal; + + xActiveDesktopChanged := theForm.FActiveDesktopChanged; + EnvironmentOptions.AutoSaveActiveDesktop := theForm.AutoSaveActiveDesktopCheckBox.Checked; + finally + theForm.Free; + end; + + if xActiveDesktopChanged then + EnvironmentOptions.UseDesktop(EnvironmentOptions.ActiveDesktop); +end; + +function SaveCurrentDesktop(const aDesktopName: string; + const aShowOverwriteDialog: Boolean): Boolean; +var + dskIndex: Integer; + dsk: TDesktopOpt; +begin + Result := False; + if aDesktopName = '' then + Exit; + + with EnvironmentOptions do + begin + dskIndex := Desktops.IndexOf(aDesktopName); + if (dskIndex >= 0) and + aShowOverwriteDialog and + (MessageDlg(Format(dlgOverwriteDesktop, [aDesktopName]), mtWarning, mbYesNo, 0) <> mrYes) + then + Exit; + + if (dskIndex >= 0) then//old desktop must be recreated (because of docked/undocked desktops!) + begin + debugln(['TDesktopForm.SaveBitBtnClick: Deleting ', aDesktopName]); + Desktops.Delete(dskIndex); + end; + + debugln(['TDesktopForm.SaveBitBtnClick: Creating ', aDesktopName]); + dsk := TDesktopOpt.Create(aDesktopName); + if dskIndex < 0 then + Desktops.Add(dsk) + else + Desktops.Insert(dskIndex, dsk); + debugln(['TDesktopForm.SaveBitBtnClick: Assign from active desktop to ', aDesktopName]); + Desktop.ImportSettingsFromIDE; + dsk.Assign(Desktop); + ActiveDesktopName := aDesktopName; + Result := True; + end; +end; + +function ToggleDebugDesktop(const aDesktopName: string; + const aShowIncompatibleDialog: Boolean): Boolean; +var + xDsk: TDesktopOpt; +begin + Result := False; + xDsk := EnvironmentOptions.Desktops.Find(aDesktopName); + if not Assigned(xDsk) then + Exit; + + if not xDsk.Compatible then + begin + if aShowIncompatibleDialog then + MessageDlg(dlgCannotUseDockedUndockedDesktop, mtError, [mbOK], 0); + Exit; + end; + + if EnvironmentOptions.DebugDesktopName = aDesktopName then + EnvironmentOptions.DebugDesktopName := '' + else + EnvironmentOptions.DebugDesktopName := aDesktopName; + Result := True; +end; + +procedure TShowDesktopsToolButton.ChangeDesktop(Sender: TObject); +begin + DoChangeDesktopName := (Sender as TShowDesktopItem).DesktopName; + Application.QueueAsyncCall(@DoChangeDesktop, 1); +end; + +class procedure TShowDesktopsToolButton.DoChangeDesktop(Data: PtrInt); +var + xDesktopName: string; + xDesktop: TDesktopOpt; +begin + xDesktopName := DoChangeDesktopName; + if xDesktopName = '' then + Exit; + + xDesktop := EnvironmentOptions.Desktops.Find(xDesktopName); + if xDesktop = nil then + Exit; + + if not xDesktop.Compatible then + begin + MessageDlg(dlgCannotUseDockedUndockedDesktop, mtError, [mbOK], 0); + Exit; + end; + + EnvironmentOptions.UseDesktop(xDesktop); +end; + +procedure TShowDesktopsToolButton.DoOnAdded; +begin + inherited DoOnAdded; + + DropdownMenu := TPopupMenu.Create(Self); + Style := tbsDropDown; + DropdownMenu.OnPopup := @MenuOnPopup; + if Assigned(FToolBar) then + DropdownMenu.Images := IDEImages.Images_16; +end; + +procedure TShowDesktopsToolButton.MenuOnPopup(Sender: TObject); +begin + RefreshMenu; +end; + +procedure TShowDesktopsToolButton.RefreshMenu; + procedure _AddItem(const _Desktop: TDesktopOpt; const _Parent: TMenuItem; + const _OnClick: TNotifyEvent; const _AllowIncompatible: Boolean); + var + xItem: TShowDesktopItem; + begin + if not _Desktop.Compatible and not _AllowIncompatible then + Exit; + + xItem := TShowDesktopItem.Create(_Parent.Menu); + _Parent.Add(xItem); + xItem.Caption := _Desktop.Name; + xItem.OnClick := _OnClick; + xItem.DesktopName := _Desktop.Name; + xItem.Checked := _Desktop.Name = EnvironmentOptions.ActiveDesktopName; + if not _Desktop.Compatible then + xItem.ImageIndex := IDEImages.LoadImage(16, 'state_warning') + else + if _Desktop.Name = EnvironmentOptions.DebugDesktopName then + xItem.ImageIndex := IDEImages.LoadImage(16, 'debugger'); + end; + +var + xPM: TPopupMenu; + i: Integer; + xDesktop: TDesktopOpt; + xMISaveAs, xMISaveAsNew, xMIToggleDebug: TMenuItem; +begin + xPM := DropdownMenu; + xPM.Items.Clear; + + xMISaveAs := TMenuItem.Create(xPM); + xMISaveAs.Caption := dlgSaveCurrentDesktopAs; + xMISaveAs.ImageIndex := IDEImages.LoadImage(16, 'laz_save'); + xMIToggleDebug := TMenuItem.Create(xPM); + xMIToggleDebug.Caption := dlgToggleDebugDesktop; + xMIToggleDebug.ImageIndex := IDEImages.LoadImage(16, 'debugger'); + // Saved desktops + for i:=0 to EnvironmentOptions.Desktops.Count-1 do + begin + xDesktop := EnvironmentOptions.Desktops[i]; + _AddItem(xDesktop, xPM.Items, @ChangeDesktop, False); + _AddItem(xDesktop, xMISaveAs, @SaveAsDesktop, True); + _AddItem(xDesktop, xMIToggleDebug, @ToggleAsDebugDesktop, False); + end; + + if xPM.Items.Count > 0 then + xPM.Items.AddSeparator; + xPM.Items.Add(xMISaveAs); + xPM.Items.Add(xMIToggleDebug); + + if xMISaveAs.Count > 0 then + xMISaveAs.AddSeparator; + xMISaveAsNew := TMenuItem.Create(xPM); + xMISaveAs.Add(xMISaveAsNew); + xMISaveAsNew.Caption := dlgNewDesktop; + xMISaveAsNew.OnClick := @SaveAsDesktop; + xMISaveAsNew.ImageIndex := IDEImages.LoadImage(16, 'menu_saveas'); +end; + +procedure TShowDesktopsToolButton.SaveAsDesktop(Sender: TObject); +var + xDesktopName: string; + xShowOverwriteDlg: Boolean; +begin + if Sender is TShowDesktopItem then + begin + xDesktopName := (Sender as TShowDesktopItem).DesktopName; + xShowOverwriteDlg := False; + end else + begin + if not InputQuery(dlgDesktopName, dlgSaveCurrentDesktopAs, xDesktopName) + or (xDesktopName = '') // xDesktopName MUST NOT BE EMPTY !!! + then + Exit; + xShowOverwriteDlg := True; + end; + + SaveCurrentDesktop(xDesktopName, xShowOverwriteDlg); +end; + +procedure TShowDesktopsToolButton.ToggleAsDebugDesktop(Sender: TObject); +begin + ToggleDebugDesktop((Sender as TShowDesktopItem).DesktopName, True); +end; + +{ TDesktopForm } + +procedure TDesktopForm.FormCreate(Sender: TObject); +begin + // buttons captions & text + ToolBar1.Images := IDEImages.Images_16; + Caption := dlgManageDesktops; + SaveAction.Hint := dlgSaveCurrentDesktopAs; + SaveAction.ImageIndex := IDEImages.LoadImage(16, 'laz_save'); + DeleteAction.Hint := lisDelete; + DeleteAction.ImageIndex := IDEImages.LoadImage(16, 'laz_cancel'); + RenameAction.Hint := lisRename; + RenameAction.ImageIndex := IDEImages.LoadImage(16, 'laz_edit'); + MoveUpAction.Hint := lisMenuEditorMoveUp; + MoveUpAction.ImageIndex := IDEImages.LoadImage(16, 'arrow_up'); + MoveDownAction.Hint := lisMenuEditorMoveDown; + MoveDownAction.ImageIndex := IDEImages.LoadImage(16, 'arrow_down'); + SetActiveDesktopAction.Hint := dlgSetActiveDesktop; + SetActiveDesktopAction.ImageIndex := IDEImages.LoadImage(16, 'laz_tick'); + SetDebugDesktopAction.Hint := dlgToggleDebugDesktop; + SetDebugDesktopAction.ImageIndex := IDEImages.LoadImage(16, 'debugger'); + AutoSaveActiveDesktopCheckBox.Caption := dlgAutoSaveActiveDesktop; + AutoSaveActiveDesktopCheckBox.Hint := dlgAutoSaveActiveDesktopHint; + LblGrayedInfo.Caption := dlgGrayedDesktopsUndocked; + LblGrayedInfo.Font.Color := clGrayText; + + ExportAction.Hint := lisExport; + ExportAction.Caption := lisExportSelected; + ExportAllAction.Caption := lisExportAll; + ImportAction.Hint := lisImport; + ExportBitBtn.LoadGlyphFromStock(idButtonSave); + ExportBitBtn.Caption := lisExportSub; + ImportBitBtn.LoadGlyphFromStock(idButtonOpen); + ImportBitBtn.Caption := lisImport; + + ButtonPanel1.HelpButton.TabOrder := 0; + ExportBitBtn.TabOrder := 1; + ImportBitBtn.TabOrder := 2; + ButtonPanel1.OKButton.TabOrder := 3; +end; + +procedure TDesktopForm.FormShow(Sender: TObject); +var + xIndex: Integer; +begin + RefreshList; + xIndex := DesktopListBox.Items.IndexOf(EnvironmentOptions.ActiveDesktopName); + if xIndex >= 0 then + DesktopListBox.ItemIndex := xIndex; +end; + +procedure TDesktopForm.HelpButtonClick(Sender: TObject); +begin + OpenUrl('http://wiki.freepascal.org/IDE_Window:_Desktops'); +end; + +procedure TDesktopForm.RefreshList(SelectName: string); +var + DskTop: TDesktopOpt; + i: Integer; + HasNonCompatible: Boolean; +begin + if (SelectName='') and (DesktopListBox.ItemIndex>=0) then + SelectName:=DesktopListBox.Items[DesktopListBox.ItemIndex]; + + HasNonCompatible := False; + DesktopListBox.Clear; + // Saved desktops + for i:=0 to EnvironmentOptions.Desktops.Count-1 do + begin + DskTop := EnvironmentOptions.Desktops[i]; + DesktopListBox.Items.Add(DskTop.Name); + if not DskTop.Compatible then + HasNonCompatible := True; + end; + if HasNonCompatible then + LblGrayedInfo.Caption := dlgGrayedDesktopsUndocked + else + LblGrayedInfo.Caption := ''; + + i := DesktopListBox.Items.IndexOf(SelectName); + if (i < 0) and (DesktopListBox.Count > 0) then + i := 0; + DesktopListBox.ItemIndex := i; + + DesktopListBoxSelectionChange(DesktopListBox, False); +end; + +procedure TDesktopForm.RenameActionClick(Sender: TObject); +var + xDesktopName, xOldDesktopName: String; + dskIndex: Integer; +begin + if DesktopListBox.ItemIndex = -1 then + Exit; + + xDesktopName := DesktopListBox.Items[DesktopListBox.ItemIndex]; + xOldDesktopName := xDesktopName; + + if not InputQuery(dlgRenameDesktop, dlgDesktopName, xDesktopName) + or (xDesktopName = '') // xDesktopName MUST NOT BE EMPTY !!! + or (xDesktopName = xOldDesktopName) + then + Exit; + + with EnvironmentOptions do + begin + dskIndex := Desktops.IndexOf(xDesktopName);//delete old entry in list if new name is present + if (dskIndex >= 0) then + begin + if (MessageDlg(Format(dlgOverwriteDesktop, [xDesktopName]), mtWarning, mbYesNo, 0) = mrYes) then + Desktops.Delete(dskIndex) + else + Exit; + end; + + dskIndex := Desktops.IndexOf(xOldDesktopName);//rename + if Desktops[dskIndex].Name = EnvironmentOptions.ActiveDesktopName then + EnvironmentOptions.ActiveDesktopName := xDesktopName; + if Desktops[dskIndex].Name = EnvironmentOptions.DebugDesktopName then + EnvironmentOptions.DebugDesktopName := xDesktopName; + Desktops[dskIndex].Name := xDesktopName; + RefreshList(xDesktopName); + end; +end; + +procedure TDesktopForm.DeleteActionClick(Sender: TObject); +var + dskName: String; + dskIndex: Integer; +begin + if DesktopListBox.ItemIndex = -1 then + Exit; + dskName := DesktopListBox.Items[DesktopListBox.ItemIndex]; + if MessageDlg(Format(dlgReallyDeleteDesktop, [dskName]), mtConfirmation, mbYesNo, 0) <> mrYes then + Exit; + dskIndex := EnvironmentOptions.Desktops.IndexOf(dskName); + if dskIndex >= 0 then + begin + debugln(['TDesktopForm.SaveBitBtnClick: Deleting ', dskName]); + EnvironmentOptions.Desktops.Delete(dskIndex); + if DesktopListBox.ItemIndex+1 < DesktopListBox.Count then + dskName := DesktopListBox.Items[DesktopListBox.ItemIndex+1] + else if DesktopListBox.ItemIndex > 0 then + dskName := DesktopListBox.Items[DesktopListBox.ItemIndex-1] + else + dskName := ''; + RefreshList(dskName); + end; +end; + +procedure TDesktopForm.ExportActionClick(Sender: TObject); +var + xDesktopName: String; + xDesktop: TDesktopOpt; +begin + if DesktopListBox.ItemIndex < 0 then + Exit; + + xDesktopName := DesktopListBox.Items[DesktopListBox.ItemIndex]; + if xDesktopName = '' then + Exit; + + xDesktop := EnvironmentOptions.Desktops.Find(xDesktopName); + if xDesktop = nil then + Exit; + + ExportDesktops([xDesktop]); +end; + +procedure TDesktopForm.ExportBitBtnClick(Sender: TObject); +var + p: TPoint; +begin + p := ExportBitBtn.ClientToScreen(Point(0,ExportBitBtn.Height)); + ExportMenu.PopUp(p.x,p.y); +end; + +procedure TDesktopForm.ExportDesktops(const aDesktops: array of TDesktopOpt); +var + xXMLCfg: TRttiXMLConfig; + xConfigStore: TXMLOptionsStorage; + xSaveDialog: TSaveDialog; + xFileName: string; + xCurPath: String; + I: Integer; +begin + if Length(aDesktops) = 0 then + Exit; + + xSaveDialog := TSaveDialog.Create(nil); + try + try + InputHistories.ApplyFileDialogSettings(xSaveDialog); + xSaveDialog.Filter := dlgFilterXML +' (*.xml)|*.xml'; + xSaveDialog.Options := xSaveDialog.Options + [ofOverwritePrompt]; + if xSaveDialog.Execute then + begin + xFileName := xSaveDialog.FileName; + if ExtractFileExt(xFileName) = '' then + xFileName := xFileName + '.xml'; + + xXMLCfg := nil; + xConfigStore := nil; + try + xXMLCfg := TRttiXMLConfig.CreateClean(xFileName); + xConfigStore := TXMLOptionsStorage.Create(xXMLCfg); + xCurPath := 'Desktops/'; + xXMLCfg.SetDeleteValue(xCurPath + 'Count', Length(aDesktops), 0); + for I := 0 to Length(aDesktops)-1 do + begin + aDesktops[I].SetConfig(xXMLCfg, xConfigStore); + aDesktops[I].Save(xCurPath + 'Desktop'+IntToStr(I+1)+'/'); + end; + xConfigStore.WriteToDisk; + ShowMessageFmt(dlgDesktopsExported, [Length(aDesktops), xFileName]); + finally + xConfigStore.Free; + xXMLCfg.Free; + end; + end; + InputHistories.StoreFileDialogSettings(xSaveDialog); + except + on E: Exception do + begin + DebugLn('ERROR: [TDesktopMangerDialog.ExportBitBtnClick] ', E.Message); + Raise; + end; + end; + finally + xSaveDialog.Free; + end; +end; + +procedure TDesktopForm.ImportActionClick(Sender: TObject); +var + xXMLCfg: TRttiXMLConfig; + xConfigStore: TXMLOptionsStorage; + xOpenDialog: TOpenDialog; + xDesktopName, xOldDesktopName, xFileName, xDesktopDockMaster: string; + xCurPath, xDesktopPath: string; + I: Integer; + xCount, xImportedCount: Integer; + xDsk: TDesktopOpt; +begin + xOpenDialog := TOpenDialog.Create(nil); + try + try + InputHistories.ApplyFileDialogSettings(xOpenDialog); + xOpenDialog.Filter := dlgFilterXML +' (*.xml)|*.xml'; + if xOpenDialog.Execute then + begin + xFileName := xOpenDialog.FileName; + xXMLCfg := nil; + xConfigStore := nil; + try + xXMLCfg := TRttiXMLConfig.Create(xFileName); + xConfigStore := TXMLOptionsStorage.Create(xXMLCfg); + + xCurPath := 'Desktops/'; + xCount := xXMLCfg.GetValue(xCurPath+'Count', 0); + xImportedCount := 0; + for I := 1 to xCount do + begin + xDesktopPath := xCurPath+'Desktop'+IntToStr(I)+'/'; + if not xXMLCfg.HasPath(xDesktopPath, True) then + Continue; + + xDesktopName := xXMLCfg.GetValue(xDesktopPath+'Name', ''); + xOldDesktopName := xDesktopName; + xDesktopDockMaster := xXMLCfg.GetValue(xDesktopPath+'DockMaster', ''); + if not EnvironmentOptions.DesktopCanBeLoaded(xDesktopDockMaster) then + Continue; //desktop not compatible + + //show a dialog to modify desktop name + if (EnvironmentOptions.Desktops.IndexOf(xDesktopName) >= 0) and + not InputQuery(dlgDesktopName, dlgImportDesktopExists, xDesktopName) + then + Continue; + + if xDesktopName = '' then + Continue; + xDsk := EnvironmentOptions.Desktops.Find(xDesktopName); + if Assigned(xDsk) and + (xOldDesktopName <> xDesktopName) and + (MessageDlg(Format(dlgOverwriteDesktop, [xDesktopName]), mtWarning, mbYesNo, 0) <> mrYes) + then + Continue; + + if Assigned(xDsk) then //if desktop is to be rewritten, it has to be recreated + EnvironmentOptions.Desktops.Remove(xDsk); + + xDsk := TDesktopOpt.Create(xDesktopName, xDesktopDockMaster<>''); + EnvironmentOptions.Desktops.Add(xDsk); + + if xDsk.Name = EnvironmentOptions.ActiveDesktopName then + FActiveDesktopChanged := True; + xDsk.SetConfig(xXMLCfg, xConfigStore); + xDsk.Load(xDesktopPath); + Inc(xImportedCount); + end;//for + + if xImportedCount>0 then + begin + ShowMessageFmt(dlgDesktopsImported, [xImportedCount, xFileName]); + RefreshList; + end; + finally + xConfigStore.Free; + xXMLCfg.Free; + end; + end; + InputHistories.StoreFileDialogSettings(xOpenDialog); + except + on E: Exception do + begin + DebugLn('ERROR: [TDesktopMangerDialog.ImportBitBtnClick] ', E.Message); + Raise; + end; + end; + finally + xOpenDialog.Free; + end; +end; + +procedure TDesktopForm.MoveUpDownActionClick(Sender: TObject); +var + xIncPos: Integer; + xOldName: String; +begin + xIncPos := (Sender as TComponent).Tag; + if (DesktopListBox.ItemIndex < 0) or + (DesktopListBox.ItemIndex >= EnvironmentOptions.Desktops.Count) or + (DesktopListBox.ItemIndex+xIncPos < 0) or + (DesktopListBox.ItemIndex+xIncPos >= EnvironmentOptions.Desktops.Count) + then + Exit; //index out of range + + xOldName := EnvironmentOptions.Desktops[DesktopListBox.ItemIndex].Name; + EnvironmentOptions.Desktops.Move(DesktopListBox.ItemIndex, DesktopListBox.ItemIndex+xIncPos); + RefreshList(xOldName); +end; + +procedure TDesktopForm.DesktopListBoxDrawItem(Control: TWinControl; + Index: Integer; ARect: TRect; State: TOwnerDrawState); +var + xLB: TListBox; + xDesktopName, xInfo, xText: string; + + OldBrushStyle: TBrushStyle; + OldTextStyle: TTextStyle; + NewTextStyle: TTextStyle; + OldFontStyle: TFontStyles; + xDesktop: TDesktopOpt; + xTextLeft, xIconLeft: Integer; +begin + xLB := Control as TListBox; + if (Index < 0) or (Index >= xLB.Count) then + Exit; + + xLB.Canvas.FillRect(ARect); + OldBrushStyle := xLB.Canvas.Brush.Style; + xLB.Canvas.Brush.Style := bsClear; + + OldFontStyle := xLB.Canvas.Font.Style; + OldTextStyle := xLB.Canvas.TextStyle; + NewTextStyle := OldTextStyle; + NewTextStyle.Layout := tlCenter; + NewTextStyle.RightToLeft := Control.UseRightToLeftReading; + if Control.UseRightToLeftAlignment then + begin + NewTextStyle.Alignment := taRightJustify; + ARect.Right := ARect.Right - 2; + end + else + begin + NewTextStyle.Alignment := taLeftJustify; + ARect.Left := ARect.Left + 2; + end; + + xLB.Canvas.TextStyle := NewTextStyle; + + if Index < EnvironmentOptions.Desktops.Count then + begin + xDesktop := EnvironmentOptions.Desktops[Index]; + xDesktopName := xDesktop.Name; + end else + begin + //something went wrong ... + raise Exception.Create('Desktop manager internal error: the desktop list doesn''t match the listbox content.'); + end; + xInfo := ''; + xTextLeft := ARect.Left+ToolBar1.Images.Width + 4; + xIconLeft := ARect.Left+2; + if (xDesktopName <> '') and (EnvironmentOptions.ActiveDesktopName = xDesktopName) then + begin + if xInfo <> '' then + xInfo := xInfo + ', '; + xInfo := xInfo + dlgActiveDesktop; + xLB.Canvas.Font.Style := xLB.Canvas.Font.Style + [fsBold]; + ToolBar1.Images.Draw(xLB.Canvas, xIconLeft, (ARect.Top+ARect.Bottom-ToolBar1.Images.Height) div 2, SetActiveDesktopTB.ImageIndex, xDesktop.Compatible);//I don't see a problem painting the tick over the "run" icon... + end; + if (xDesktopName <> '') and (EnvironmentOptions.DebugDesktopName = xDesktopName) then + begin + if xInfo <> '' then + xInfo := xInfo + ', '; + xInfo := xInfo + dlgDebugDesktop; + if (EnvironmentOptions.ActiveDesktopName = xDesktopName) then + begin + xTextLeft := xTextLeft + ToolBar1.Images.Width; + xIconLeft := xIconLeft + ToolBar1.Images.Width; + end; + ToolBar1.Images.Draw(xLB.Canvas, xIconLeft, (ARect.Top+ARect.Bottom-ToolBar1.Images.Height) div 2, SetDebugDesktopTB.ImageIndex, xDesktop.Compatible); + end; + ARect.Left := xTextLeft; + xText := xDesktopName; + if xInfo <> '' then + xText := xText + ' ('+xInfo+')'; + + if not xDesktop.Compatible then + xLB.Canvas.Font.Color := LblGrayedInfo.Font.Color; + + xLB.Canvas.TextRect(ARect, ARect.Left, (ARect.Top+ARect.Bottom-xLB.Canvas.TextHeight('Hg')) div 2, xText); + xLB.Canvas.Brush.Style := OldBrushStyle; + xLB.Canvas.TextStyle := OldTextStyle; + xLB.Canvas.Font.Style := OldFontStyle; +end; + +procedure TDesktopForm.DesktopListBoxKeyPress(Sender: TObject; var Key: char); +begin + if Key = Char(VK_RETURN) then + SetActiveDesktopActionClick(Sender); +end; + +procedure TDesktopForm.DesktopListBoxSelectionChange(Sender: TObject; User: boolean); +var + HasSel, IsActive, IsDebug: Boolean; + CurName: String; +begin + HasSel := DesktopListBox.ItemIndex>=0; + if HasSel then + begin + CurName := DesktopListBox.Items[DesktopListBox.ItemIndex]; + IsActive := CurName = EnvironmentOptions.ActiveDesktopName; + IsDebug := CurName = EnvironmentOptions.DebugDesktopName; + end + else begin + IsActive := False; + IsDebug := False; + end; + SetActiveDesktopAction.Enabled := HasSel and not IsActive; + SetDebugDesktopAction.Enabled := HasSel and not IsDebug; + RenameAction.Enabled := HasSel; + DeleteAction.Enabled := HasSel and not (IsActive or IsDebug); + MoveUpAction.Enabled := HasSel and (DesktopListBox.ItemIndex > 0); + MoveDownAction.Enabled := HasSel and (DesktopListBox.ItemIndex < DesktopListBox.Items.Count-1); + ExportAction.Enabled := HasSel; + ExportAllAction.Enabled := DesktopListBox.Items.Count>0; + ExportBitBtn.Enabled := ExportItem.Enabled or ExportAllItem.Enabled; +end; + +procedure TDesktopForm.ExportAllActionClick(Sender: TObject); +var + xDesktops: array of TDesktopOpt; + I: Integer; +begin + SetLength(xDesktops, EnvironmentOptions.Desktops.Count); + for I := 0 to Length(xDesktops)-1 do + xDesktops[I] := EnvironmentOptions.Desktops[I]; + ExportDesktops(xDesktops); +end; + +procedure TDesktopForm.SaveActionClick(Sender: TObject); +var + xDesktopName, xOldDesktopName: string; +begin + if DesktopListBox.ItemIndex >= 0 then + xDesktopName := DesktopListBox.Items[DesktopListBox.ItemIndex] + else + xDesktopName := ''; + xOldDesktopName := xDesktopName; + + if not InputQuery(dlgDesktopName, dlgSaveCurrentDesktopAs, xDesktopName) + or (xDesktopName = '') // xDesktopName MUST NOT BE EMPTY !!! + then + Exit; + + if SaveCurrentDesktop(xDesktopName, xOldDesktopName <> xDesktopName{ask only if manually inserted}) then + begin + if xDesktopName = EnvironmentOptions.ActiveDesktopName then + FActiveDesktopChanged := True; + RefreshList(xDesktopName); + end; +end; + +procedure TDesktopForm.SetActiveDesktopActionClick(Sender: TObject); +begin + if (DesktopListBox.ItemIndex = -1) or + (EnvironmentOptions.ActiveDesktopName = DesktopListBox.Items[DesktopListBox.ItemIndex]) + then + Exit; + + if not EnvironmentOptions.Desktops[DesktopListBox.ItemIndex].Compatible then + begin + MessageDlg(dlgCannotUseDockedUndockedDesktop, mtError, [mbOK], 0); + Exit; + end; + + EnvironmentOptions.ActiveDesktopName := DesktopListBox.Items[DesktopListBox.ItemIndex]; + FActiveDesktopChanged := True; + RefreshList; +end; + +procedure TDesktopForm.SetDebugDesktopActionClick(Sender: TObject); +var + xDesktopName: String; +begin + if DesktopListBox.ItemIndex = -1 then + Exit; + + xDesktopName := DesktopListBox.Items[DesktopListBox.ItemIndex]; + ToggleDebugDesktop(xDesktopName, True); + RefreshList(xDesktopName); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/dialogprocs.pas lazarus-1.6+dfsg/ide/dialogprocs.pas --- lazarus-1.4.4+dfsg/ide/dialogprocs.pas 2015-04-01 15:03:22.000000000 +0000 +++ lazarus-1.6+dfsg/ide/dialogprocs.pas 2015-12-03 09:40:41.000000000 +0000 @@ -38,7 +38,7 @@ uses Classes, SysUtils, LCLProc, LResources, Forms, Controls, Dialogs, ComCtrls, FileProcs, FileUtil, LazFileUtils, Laz2_XMLCfg, lazutf8classes, LazFileCache, - CodeToolsConfig, CodeCache, CodeToolManager, AVL_Tree, LazIDEIntf, IDEDialogs, + CodeToolsConfig, CodeCache, CodeToolManager, LazIDEIntf, IDEDialogs, IDEProcs, LazarusIDEStrConsts; type @@ -101,8 +101,8 @@ function CheckDirPathExists(const Dir, ErrorCaption, ErrorMsg: string): TModalResult; function ChooseSymlink(var Filename: string; AskOnSymlink: boolean): TModalResult; -function CreateSymlinkInteractive(const LinkFilename, TargetFilename: string; - ErrorButtons: TMsgDlgButtons = []): TModalResult; +function CreateSymlinkInteractive(const {%H-}LinkFilename, {%H-}TargetFilename: string; + {%H-}ErrorButtons: TMsgDlgButtons = []): TModalResult; function ForceDirectoryInteractive(Directory: string; ErrorButtons: TMsgDlgButtons = []): TModalResult; function DeleteFileInteractive(const Filename: string; @@ -140,7 +140,7 @@ if SrcFilename=DestFilename then exit(mrOk); repeat - if FileProcs.RenameFileUTF8(SrcFilename,DestFilename) then begin + if RenameFileUTF8(SrcFilename,DestFilename) then begin InvalidateFileStateCache(SrcFilename); InvalidateFileStateCache(DestFilename); break; @@ -198,10 +198,9 @@ ACodeBuffer:=CodeToolBoss.LoadFile(AFilename,false,false); if ACodeBuffer<>nil then begin // file is in cache - if (not (lbfCheckIfText in Flags)) or ACodeBuffer.SourceIsText then begin - Result:=mrOk; - exit; - end; + if (not (lbfCheckIfText in Flags)) or ACodeBuffer.SourceIsText then + exit(mrOk); + ACodeBuffer:=nil; end; end; repeat @@ -272,7 +271,7 @@ if Backup then begin Result:=BackupFileInteractive(Filename); if Result<>mrOk then begin - debugln(['SaveCodeBufferToFile backup failed: "',Filename,'"']); + debugln(['Error: (lazarus) unable to backup file: "',Filename,'"']); exit; end; end else @@ -350,9 +349,9 @@ if (lbfQuiet in Flags) then begin Result:=mrCancel; end else begin - Result:=MessageDlg(lisXMLError, + Result:=IDEMessageDialog(lisXMLError, Format(lisXMLParserErrorInFileError, [Filename, LineEnding, E.Message]), - mtError, [mbCancel], 0); + mtError, [mbCancel]); end; end; end; @@ -381,9 +380,9 @@ Config.WriteToStream(ms); except on E: Exception do begin - Result:=MessageDlg(lisXMLError, + Result:=IDEMessageDialog(lisXMLError, Format(lisUnableToWriteXmlStreamToError, [Filename, LineEnding, E.Message]), - mtError, [mbCancel], 0); + mtError, [mbCancel]); end; end; ms.Position:=0; @@ -702,6 +701,8 @@ {$IFNDEF DisableChecks} DebugLn('LFMtoLRSstream ',E.Message); {$ENDIF} + debugln(['Error: (lazarus) [ConvertLFMToLRSFileInteractive] unable to convert '+LFMFilename+' to '+LRSFilename+':'+LineEnding + +E.Message]); Result:=IDEMessageDialogAb('Error', 'Error while converting '+LFMFilename+' to '+LRSFilename+':'+LineEnding +E.Message,mtError,[mbCancel,mbIgnore],ShowAbort); @@ -716,7 +717,7 @@ Result:=SaveCodeBuffer(LRSBuffer); end else begin Result:=mrCancel; - debugln('ConvertLFMToLRSFileInteractive unable to create codebuffer ',LRSFilename); + debugln('Error: (lazarus) [ConvertLFMToLRSFileInteractive] unable to create codebuffer ',LRSFilename); end; finally LFMMemStream.Free; diff -Nru lazarus-1.4.4+dfsg/ide/diffdialog.pas lazarus-1.6+dfsg/ide/diffdialog.pas --- lazarus-1.4.4+dfsg/ide/diffdialog.pas 2015-04-11 07:03:10.000000000 +0000 +++ lazarus-1.6+dfsg/ide/diffdialog.pas 2015-06-02 23:56:03.000000000 +0000 @@ -39,7 +39,7 @@ interface uses - Classes, SysUtils, Math, Forms, Controls, Buttons, StdCtrls, FileUtil, + Classes, SysUtils, Forms, Controls, Buttons, StdCtrls, FileUtil, lazutf8classes, LazarusIDEStrConsts, EditorOptions, LCLType, IDEWindowIntf, IDEHelpIntf, InputHistory, DiffPatch, ExtCtrls, Dialogs, ComCtrls, SynEdit, SynHighlighterDiff, SourceEditor; @@ -134,7 +134,7 @@ procedure SetupComponents; procedure UpdateDiff; procedure SetIdleConnected(const AValue: boolean); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; @@ -334,7 +334,7 @@ // options with OptionsGroupBox do begin - Caption:=dlgFROpts; + Caption:=lisOptions; Items.Add(lisDiffDlgCaseInsensitive); Items.Add(lisDiffDlgIgnoreIfEmptyLinesWereAdd); Items.Add(lisDiffDlgIgnoreSpacesAtStartOfLine); @@ -356,12 +356,12 @@ // dialogs dlgOpen.Title:=lisOpenExistingFile; - dlgOpen.Filter:=dlgAllFiles+' ('+GetAllFilesMask+')|'+GetAllFilesMask - +'|'+lisLazarusUnit+' (*.pas;*.pp)|*.pas;*.pp' - +'|'+lisLazarusProject+' (*.lpi)|*.lpi' - +'|'+lisLazarusForm+' (*.lfm;*.dfm)|*.lfm;*.dfm' - +'|'+lisLazarusPackage+' (*.lpk)|*.lpk' - +'|'+lisLazarusProjectSource+' (*.lpr)|*.lpr'; + dlgOpen.Filter:=dlgFilterAll+' ('+GetAllFilesMask+')|'+GetAllFilesMask + +'|'+dlgFilterLazarusUnit+' (*.pas;*.pp)|*.pas;*.pp' + +'|'+dlgFilterLazarusProject+' (*.lpi)|*.lpi' + +'|'+dlgFilterLazarusForm+' (*.lfm;*.dfm)|*.lfm;*.dfm' + +'|'+dlgFilterLazarusPackage+' (*.lpk)|*.lpk' + +'|'+dlgFilterLazarusProjectSource+' (*.lpr)|*.lpr'; // diff EditorOpts.GetSynEditSettings(DiffSynEdit); diff -Nru lazarus-1.4.4+dfsg/ide/diskdiffsdialog.lfm lazarus-1.6+dfsg/ide/diskdiffsdialog.lfm --- lazarus-1.4.4+dfsg/ide/diskdiffsdialog.lfm 2010-10-09 13:47:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/diskdiffsdialog.lfm 2015-06-01 22:30:48.000000000 +0000 @@ -11,7 +11,7 @@ OnClose = FormClose OnKeyDown = DiskDiffsDlgKeyDown Position = poScreenCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object FilesListBox: TListBox Left = 6 Height = 86 @@ -21,14 +21,13 @@ BorderSpacing.Left = 6 BorderSpacing.Top = 6 ItemHeight = 0 - OnMouseUp = FilesListBoxMouseUp + OnSelectionChange = FilesListBoxSelectionChange TabOrder = 0 - TopIndex = -1 end inline DiffSynEdit: TSynEdit AnchorSideBottom.Control = CheckDiskChangesWithLoadingCheckBox Left = 6 - Height = 182 + Height = 193 Top = 97 Width = 588 Align = alTop @@ -44,53 +43,27 @@ TabOrder = 1 BookMarkOptions.Xoffset = -18 Gutter.Visible = False - Gutter.Width = 57 + Gutter.Width = 59 Gutter.MouseActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 13 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcOnMainGutterClick end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end> RightGutter.Width = 0 RightGutter.MouseActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 13 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcOnMainGutterClick end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end> Highlighter = SynDiffSyn1 Keystrokes = < @@ -416,138 +389,104 @@ end> MouseActions = < item - Shift = [] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True Option = 1 - Priority = 0 end item Shift = [ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift, ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccDouble ClickDir = cdDown - Command = 6 + Command = emcSelectWord MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccTriple ClickDir = cdDown - Command = 7 + Command = emcSelectLine MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccQuad ClickDir = cdDown - Command = 8 + Command = emcSelectPara MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbMiddle - ClickCount = ccSingle ClickDir = cdDown - Command = 10 + Command = emcPasteSelection MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssCtrl] ShiftMask = [ssShift, ssAlt, ssCtrl] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdUp - Command = 11 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcMouseLink end> + MouseTextActions = <> MouseSelActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdDown - Command = 9 - MoveCaret = False - Option = 0 - Priority = 0 + ClickDir = cdDown + Command = emcStartDragMove end> Lines.Strings = ( 'DiffSynEdit' ) + VisibleSpecialChars = [vscSpace, vscTabAtLast] ReadOnly = True + SelectedColor.BackPriority = 50 + SelectedColor.ForePriority = 50 + SelectedColor.FramePriority = 50 + SelectedColor.BoldPriority = 50 + SelectedColor.ItalicPriority = 50 + SelectedColor.UnderlinePriority = 50 + SelectedColor.StrikeOutPriority = 50 BracketHighlightStyle = sbhsBoth + BracketMatchColor.Background = clNone + BracketMatchColor.Foreground = clNone + BracketMatchColor.Style = [fsBold] + FoldedCodeColor.Background = clNone + FoldedCodeColor.Foreground = clGray + FoldedCodeColor.FrameColor = clGray + MouseLinkColor.Background = clNone + MouseLinkColor.Foreground = clBlue + LineHighlightColor.Background = clNone + LineHighlightColor.Foreground = clNone + WantTabs = False inline SynGutterPartList1: TSynGutterPartList object SynGutterMarks1: TSynGutterMarks Width = 24 + MouseActions = <> end object SynGutterLineNumber1: TSynGutterLineNumber - Width = 17 + Width = 19 MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone @@ -558,35 +497,28 @@ end object SynGutterChanges1: TSynGutterChanges Width = 4 + MouseActions = <> ModifiedColor = 59900 SavedColor = clGreen end object SynGutterSeparator1: TSynGutterSeparator Width = 2 + MouseActions = <> + MarkupInfo.Background = clWhite + MarkupInfo.Foreground = clGray end object SynGutterCodeFolding1: TSynGutterCodeFolding MouseActions = < item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 16 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldContextMenu end item - Shift = [] ShiftMask = [ssShift] Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end item Shift = [ssShift] @@ -594,63 +526,39 @@ Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False + Command = emcCodeFoldCollaps Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 0 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcNone end> MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray MouseActionsExpanded = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end> MouseActionsCollapsed = < item Shift = [ssCtrl] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldExpand end item - Shift = [] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False + Command = emcCodeFoldExpand Option = 1 - Priority = 0 end> end end - inline SynRightGutterPartList1: TSynRightGutterPartList - end end object Splitter: TSplitter Cursor = crVSplit @@ -665,9 +573,9 @@ AnchorSideLeft.Control = Owner AnchorSideBottom.Control = BtnPanel Left = 6 - Height = 22 - Top = 285 - Width = 302 + Height = 17 + Top = 296 + Width = 216 Anchors = [akLeft, akBottom] BorderSpacing.Around = 6 Caption = 'CheckDiskChangesWithLoadingCheckBox' @@ -675,39 +583,39 @@ end object BtnPanel: TPanel Left = 0 - Height = 41 - Top = 313 + Height = 35 + Top = 319 Width = 600 Align = alBottom AutoSize = True BevelOuter = bvNone - ClientHeight = 41 + ClientHeight = 35 ClientWidth = 600 TabOrder = 4 object RevertAllButton: TButton - Left = 472 - Height = 29 + Left = 492 + Height = 23 Top = 6 - Width = 122 + Width = 102 Align = alRight AutoSize = True BorderSpacing.Around = 6 Caption = 'RevertAllButton' Default = True ModalResult = 10 - TabOrder = 0 + TabOrder = 1 end object IgnoreDiskChangesButton: TButton - Left = 278 - Height = 29 + Left = 335 + Height = 23 Top = 6 - Width = 188 + Width = 151 Align = alRight AutoSize = True BorderSpacing.Around = 6 Caption = 'IgnoreDiskChangesButton' ModalResult = 5 - TabOrder = 1 + TabOrder = 0 end end object SynDiffSyn1: TSynDiffSyn diff -Nru lazarus-1.4.4+dfsg/ide/diskdiffsdialog.pas lazarus-1.6+dfsg/ide/diskdiffsdialog.pas --- lazarus-1.4.4+dfsg/ide/diskdiffsdialog.pas 2014-10-31 23:19:06.000000000 +0000 +++ lazarus-1.6+dfsg/ide/diskdiffsdialog.pas 2015-08-07 17:20:40.000000000 +0000 @@ -32,10 +32,15 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Buttons, StdCtrls, - Laz2_XMLWrite, lazutf8classes, - SynEdit, SynHighlighterDiff, LCLType, ComCtrls, ExtCtrls, - FileProcs, CodeToolManager, CodeCache, + // RTL + FCL + LCL + Classes, SysUtils, LCLProc, Forms, Controls, StdCtrls, ExtCtrls, LCLType, + // CodeTools + FileProcs, CodeCache, + // LazUtils + LazUTF8Classes, LazFileUtils, + // SynEdit + SynEdit, SynHighlighterDiff, + // IDE Project, DiffPatch, LazarusIDEStrConsts, EnvironmentOpts, EditorOptions, PackageDefs; @@ -61,10 +66,9 @@ Splitter: TSplitter; SynDiffSyn1: TSynDiffSyn; procedure DiskDiffsDlgKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); - procedure FilesListBoxMouseUp(Sender: TOBject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + {%H-}Shift: TShiftState); + procedure FilesListBoxSelectionChange(Sender: TObject; User: boolean); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); private FPackageList: TStringList; FUnitList: TFPList; @@ -208,10 +212,11 @@ ModalResult := mrYesToAll; end; -procedure TDiskDiffsDlg.FilesListBoxMouseUp(Sender: TOBject; - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +procedure TDiskDiffsDlg.FilesListBoxSelectionChange(Sender: TObject; + User: boolean); begin - ShowDiff; + if User then + ShowDiff; end; procedure TDiskDiffsDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction); diff -Nru lazarus-1.4.4+dfsg/ide/editorfilemanager.lfm lazarus-1.6+dfsg/ide/editorfilemanager.lfm --- lazarus-1.4.4+dfsg/ide/editorfilemanager.lfm 2014-02-07 23:15:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/editorfilemanager.lfm 2015-06-28 12:27:53.000000000 +0000 @@ -10,8 +10,7 @@ KeyPreview = True OnCreate = FormCreate OnKeyDown = FormKeyDown - Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object CheckListBox1: TCheckListBox AnchorSideTop.Control = FilterPanel AnchorSideTop.Side = asrBottom @@ -30,7 +29,7 @@ OnKeyPress = CheckListBox1KeyPress OnKeyDown = CheckListBox1KeyDown PopupMenu = PopupMenu1 - TabOrder = 0 + TabOrder = 1 end object ButtonPanel1: TButtonPanel Left = 6 @@ -47,7 +46,7 @@ CloseButton.OnClick = CloseButtonClick CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 1 + TabOrder = 3 ShowButtons = [pbClose, pbHelp] end object Panel1: TPanel @@ -60,6 +59,7 @@ Width = 186 Anchors = [akTop, akRight, akBottom] ClientHeight = 328 + BevelOuter = bvNone ClientWidth = 186 TabOrder = 2 object CheckAllCheckBox: TCheckBox @@ -160,9 +160,10 @@ Top = 0 Width = 536 Anchors = [akTop, akLeft, akRight] + BevelOuter = bvNone ClientHeight = 28 ClientWidth = 536 - TabOrder = 3 + TabOrder = 0 object FilterEdit: TListFilterEdit AnchorSideLeft.Control = SortAlphabeticallyButton AnchorSideLeft.Side = asrBottom @@ -175,7 +176,6 @@ ButtonWidth = 23 NumGlyphs = 1 BorderSpacing.Left = 11 - Font.Color = clBtnShadow MaxLength = 0 ParentFont = False TabOrder = 0 diff -Nru lazarus-1.4.4+dfsg/ide/editorfilemanager.pas lazarus-1.6+dfsg/ide/editorfilemanager.pas --- lazarus-1.4.4+dfsg/ide/editorfilemanager.pas 2015-03-23 23:23:54.000000000 +0000 +++ lazarus-1.6+dfsg/ide/editorfilemanager.pas 2015-06-28 12:27:53.000000000 +0000 @@ -8,7 +8,7 @@ Classes, sysutils, Forms, Controls, CheckLst, ButtonPanel, StdCtrls, Buttons, ExtCtrls, Menus, LCLProc, LCLType, IDEImagesIntf, LazIDEIntf, IDEHelpIntf, SrcEditorIntf, IDEWindowIntf, SourceEditor, LazarusIDEStrConsts, - ListFilterEdit; + ListFilterEdit, IDEOptionDefs; type @@ -90,6 +90,8 @@ procedure TEditorFileManagerForm.FormCreate(Sender: TObject); begin + Name := NonModalIDEWindowNames[nmiwEditorFileManager]; + SourceEditorManager.RegisterChangeEvent(semEditorCreate, @DoEditorsChanged); SourceEditorManager.RegisterChangeEvent(semEditorDestroy, @DoEditorsChanged); diff -Nru lazarus-1.4.4+dfsg/ide/editormacrolistviewer.lfm lazarus-1.6+dfsg/ide/editormacrolistviewer.lfm --- lazarus-1.4.4+dfsg/ide/editormacrolistviewer.lfm 2012-08-25 01:02:55.000000000 +0000 +++ lazarus-1.6+dfsg/ide/editormacrolistviewer.lfm 2015-10-07 20:53:02.000000000 +0000 @@ -2,46 +2,46 @@ Left = 390 Height = 365 Top = 249 - Width = 340 + Width = 424 Caption = 'MacroListView' ClientHeight = 365 - ClientWidth = 340 + ClientWidth = 424 Constraints.MinHeight = 365 Constraints.MinWidth = 300 OnActivate = FormActivate OnDeactivate = FormActivate - LCLVersion = '1.1' + LCLVersion = '1.5' object Panel1: TPanel AnchorSideRight.Control = pnlButtons Left = 6 - Height = 313 + Height = 310 Top = 6 - Width = 211 + Width = 285 Align = alLeft Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Right = 6 BevelOuter = bvNone - ClientHeight = 313 - ClientWidth = 211 + ClientHeight = 310 + ClientWidth = 285 TabOrder = 0 object lbRecordedView: TListView Left = 0 - Height = 264 + Height = 261 Top = 24 - Width = 211 + Width = 285 Align = alClient AutoWidthLastColumn = True Columns = < item - Width = 207 + Width = 267 end> PopupMenu = PopupMenu1 RowSelect = True ShowColumnHeaders = False SortType = stText - TabOrder = 0 + TabOrder = 1 ViewStyle = vsReport OnSelectItem = lbRecordedViewSelectItem end @@ -49,14 +49,14 @@ Left = 0 Height = 24 Top = 0 - Width = 211 + Width = 285 AutoSize = True BorderSpacing.InnerBorder = 1 - EdgeBorders = [ebLeft, ebTop, ebRight] + EdgeBorders = [] ParentShowHint = False ShowCaptions = True ShowHint = True - TabOrder = 1 + TabOrder = 0 object tbRecorded: TToolButton Tag = 1 Left = 3 @@ -69,7 +69,7 @@ end object tbProject: TToolButton Tag = 1 - Left = 72 + Left = 99 Top = 2 Caption = 'tbProject' Grouped = True @@ -78,19 +78,35 @@ end object tbIDE: TToolButton Tag = 1 - Left = 128 + Left = 179 Top = 2 Caption = 'tbIDE' Grouped = True OnClick = tbIDEClick Style = tbsCheck end + object ToolButton3: TToolButton + Left = 91 + Height = 22 + Top = 2 + Width = 8 + Caption = 'ToolButton3' + Style = tbsSeparator + end + object ToolButton4: TToolButton + Left = 171 + Height = 22 + Top = 2 + Width = 8 + Caption = 'ToolButton4' + Style = tbsSeparator + end end object ToolBar2: TToolBar Left = 0 Height = 22 - Top = 291 - Width = 211 + Top = 288 + Width = 285 Align = alBottom AutoSize = True BorderSpacing.Top = 3 @@ -102,20 +118,20 @@ Left = 1 Height = 22 Top = 0 - Width = 54 + Width = 66 Align = alLeft Caption = 'lbMoveTo' Layout = tlCenter ParentColor = False end object tbMoveProject: TToolButton - Left = 55 + Left = 67 Top = 0 Caption = 'tbMoveProject' OnClick = tbMoveProjectClick end object tbMoveIDE: TToolButton - Left = 141 + Left = 176 Top = 0 Caption = 'tbMoveIDE' OnClick = tbMoveIDEClick @@ -124,9 +140,9 @@ end object ButtonPanel1: TButtonPanel Left = 6 - Height = 34 - Top = 325 - Width = 328 + Height = 37 + Top = 322 + Width = 412 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' @@ -136,21 +152,21 @@ CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 1 + TabOrder = 2 ShowButtons = [pbClose, pbHelp] end object pnlButtons: TPanel - Left = 223 - Height = 319 + Left = 297 + Height = 316 Top = 0 - Width = 117 + Width = 127 Align = alRight AutoSize = True BevelOuter = bvNone - ClientHeight = 319 - ClientWidth = 117 + ClientHeight = 316 + ClientWidth = 127 Constraints.MinHeight = 250 - TabOrder = 2 + TabOrder = 1 object btnSelect: TButton AnchorSideLeft.Control = pnlButtons AnchorSideTop.Control = pnlButtons @@ -158,9 +174,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 6 - Height = 25 + Height = 29 Top = 6 - Width = 105 + Width = 115 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 @@ -178,9 +194,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 6 - Height = 25 - Top = 37 - Width = 105 + Height = 29 + Top = 41 + Width = 115 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 @@ -197,9 +213,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = chkRepeat Left = 6 - Height = 25 - Top = 180 - Width = 105 + Height = 29 + Top = 160 + Width = 115 Anchors = [akLeft, akRight, akBottom] AutoSize = True BorderSpacing.Left = 6 @@ -207,7 +223,7 @@ BorderSpacing.Bottom = 3 Caption = 'btnPlay' OnClick = btnPlayClick - TabOrder = 2 + TabOrder = 5 end object btnRecord: TButton AnchorSideLeft.Control = pnlButtons @@ -217,9 +233,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = btnRecordStop Left = 6 - Height = 25 - Top = 263 - Width = 105 + Height = 29 + Top = 252 + Width = 115 Anchors = [akLeft, akRight, akBottom] AutoSize = True BorderSpacing.Left = 6 @@ -227,7 +243,7 @@ BorderSpacing.Bottom = 6 Caption = 'btnRecord' OnClick = btnRecordClick - TabOrder = 3 + TabOrder = 8 end object btnRecordStop: TButton AnchorSideLeft.Control = pnlButtons @@ -238,16 +254,16 @@ AnchorSideBottom.Control = pnlButtons AnchorSideBottom.Side = asrBottom Left = 6 - Height = 25 - Top = 294 - Width = 105 + Height = 29 + Top = 287 + Width = 115 Anchors = [akLeft, akRight, akBottom] AutoSize = True BorderSpacing.Left = 6 BorderSpacing.Right = 6 Caption = 'btnRecordStop' OnClick = btnRecordStopClick - TabOrder = 4 + TabOrder = 9 end object chkRepeat: TCheckBox AnchorSideLeft.Control = pnlButtons @@ -257,16 +273,16 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = edRepeat Left = 6 - Height = 19 - Top = 208 - Width = 105 + Height = 24 + Top = 192 + Width = 115 Anchors = [akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Right = 6 BorderSpacing.Bottom = 3 Caption = 'chkRepeat' - TabOrder = 5 + TabOrder = 6 end object edRepeat: TSpinEdit AnchorSideLeft.Control = pnlButtons @@ -277,8 +293,8 @@ AnchorSideBottom.Control = btnRecord Left = 6 Height = 23 - Top = 230 - Width = 105 + Top = 219 + Width = 115 Anchors = [akLeft, akRight, akBottom] AutoSize = False BorderSpacing.Left = 6 @@ -287,7 +303,7 @@ BorderSpacing.Bottom = 10 MaxValue = 999 MinValue = 1 - TabOrder = 6 + TabOrder = 7 Value = 1 end object btnDelete: TButton @@ -298,9 +314,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 6 - Height = 25 - Top = 130 - Width = 105 + Height = 29 + Top = 146 + Width = 115 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 @@ -308,7 +324,7 @@ BorderSpacing.Right = 6 Caption = 'btnDelete' OnClick = btnDeleteClick - TabOrder = 7 + TabOrder = 4 end object btnSetKeys: TButton AnchorSideLeft.Control = pnlButtons @@ -318,9 +334,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 6 - Height = 25 - Top = 68 - Width = 105 + Height = 29 + Top = 76 + Width = 115 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 @@ -328,7 +344,7 @@ BorderSpacing.Right = 6 Caption = 'btnSetKeys' OnClick = btnSetKeysClick - TabOrder = 8 + TabOrder = 2 end object btnEdit: TButton AnchorSideLeft.Control = pnlButtons @@ -338,9 +354,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 6 - Height = 25 - Top = 99 - Width = 105 + Height = 29 + Top = 111 + Width = 115 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 @@ -348,7 +364,7 @@ BorderSpacing.Right = 6 Caption = 'btnEdit' OnClick = btnEditClick - TabOrder = 9 + TabOrder = 3 end end object PopupMenu1: TPopupMenu diff -Nru lazarus-1.4.4+dfsg/ide/editormacrolistviewer.pas lazarus-1.6+dfsg/ide/editormacrolistviewer.pas --- lazarus-1.4.4+dfsg/ide/editormacrolistviewer.pas 2014-07-15 10:12:04.000000000 +0000 +++ lazarus-1.6+dfsg/ide/editormacrolistviewer.pas 2015-11-03 15:41:19.000000000 +0000 @@ -6,7 +6,7 @@ uses Classes, SysUtils, - FileUtil, Laz2_XMLCfg, LazUTF8, LazLoggerBase, + LazFileUtils, Laz2_XMLCfg, LazUTF8, LazLoggerBase, LCLType, Forms, Controls, Dialogs, StdCtrls, ButtonPanel, ComCtrls, ExtCtrls, Spin, Menus, SynMacroRecorder, SynEdit, SynEditKeyCmds, @@ -30,7 +30,7 @@ FKeyBinding: TEditorMacroKeyBinding; procedure DoMacroRecorderState(Sender: TObject); - procedure DoMacroRecorderUserCommand(aSender: TCustomSynMacroRecorder; + procedure DoMacroRecorderUserCommand({%H-}aSender: TCustomSynMacroRecorder; aCmd: TSynEditorCommand; var aEvent: TSynMacroEvent); protected function GetMacroName: String; override; @@ -192,6 +192,8 @@ ToolBar2: TToolBar; tbMoveProject: TToolButton; tbMoveIDE: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; procedure btnDeleteClick(Sender: TObject); procedure btnEditClick(Sender: TObject); procedure btnPlayClick(Sender: TObject); @@ -202,7 +204,7 @@ procedure btnSetKeysClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure HelpButtonClick(Sender: TObject); - procedure lbRecordedViewSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure lbRecordedViewSelectItem(Sender: TObject; {%H-}Item: TListItem; {%H-}Selected: Boolean); procedure mnExportClick(Sender: TObject); procedure mnImportClick(Sender: TObject); procedure tbIDEClick(Sender: TObject); @@ -235,7 +237,7 @@ procedure UpdateMacroListViewer; procedure DoEditorMacroStateChanged; -procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig; Merge: boolean); +procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig); procedure SaveProjectSpecificInfo(XMLConfig: TXMLConfig; Flags: TProjectWriteFlags); procedure LoadGlobalInfo; procedure SaveGlobalInfo; @@ -305,7 +307,7 @@ begin if EditorMacroForRecording= nil then exit; - if not(EditorMacroForRecording.State in [emRecording, emRecPaused]) and + if not(EditorMacroForRecording.State in [emRecording, emRecPaused]) and (CurrentRecordingMacro <> nil) then begin // finished recording @@ -332,7 +334,7 @@ MacroListView.DoEditorMacroStateChanged; end; -procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig; Merge: boolean); +procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig); begin MacroListViewer.FIgnoreMacroChanges := True; try @@ -536,6 +538,7 @@ ecSynMacroPlay, ecSynMacroRecord, ecToggleFormUnit..ecViewThreads, ecViewHistory, ecNextEditor, ecPrevEditor, ecNextWindow, ecPrevWindow, + ecPrevEditorInHistory, ecNextEditorInHistory, ecGotoEditor1..ecGotoEditor0: aEvent := TSynSkippedEvent.Create; else @@ -749,9 +752,8 @@ then begin FHasError := True; AddError('Wrong amount of param'); - exit; + exit(0); end; - Result := FParams[Index].Num; end; @@ -761,9 +763,8 @@ then begin FHasError := True; AddError('Wrong amount of param'); - exit; + exit(''); end; - Result := FParams[Index].Text; end; @@ -772,9 +773,8 @@ if (Index < 0) or (Index >= Length(FParams)) then begin FHasError := True; AddError('Wrong amount of param'); - exit; + exit(ptString); // What to return here? end; - Result := FParams[Index].ParamType; end; @@ -843,6 +843,7 @@ if i = 1 then exit(AddError('Expected Command, but found "'+UTF8Copy(FText,1,1)+'"')); s := Copy(FText, 1, i-1); + j:=0; if not IdentToEditorCommand(s, j) then exit(AddError('Unknown Command "'+s+'"')); FEventCommand := j; FEventName := s; @@ -1036,9 +1037,12 @@ var i: Integer; M: TEditorMacro; + se: TSourceEditorInterface; begin if ActiveEditorMacro <> nil then exit; if lbRecordedView.ItemIndex < 0 then exit; + se := SourceEditorManagerIntf.ActiveEditor; + if se = nil then Exit; i := 1; if chkRepeat.Enabled then i := edRepeat.Value; @@ -1048,7 +1052,7 @@ M := CurrentEditorMacroList.Macros[lbRecordedView.ItemIndex]; try while i > 0 do begin - M.PlaybackMacro(TCustomSynEdit(SourceEditorManagerIntf.ActiveEditor.EditorControl)); + M.PlaybackMacro(TCustomSynEdit(se.EditorControl)); Application.ProcessMessages; dec(i); if not FIsPlaying then break; @@ -1093,19 +1097,20 @@ end; procedure TMacroListView.btnRecordClick(Sender: TObject); +var + se: TSourceEditorInterface; begin - if (ActiveEditorMacro = nil) and (EditorMacroForRecording.State = emStopped) then begin - EditorMacroForRecording.RecordMacro(TCustomSynEdit(SourceEditorManagerIntf.ActiveEditor.EditorControl)); - end + se := SourceEditorManagerIntf.ActiveEditor; + if se = nil then Exit; + if (ActiveEditorMacro = nil) and (EditorMacroForRecording.State = emStopped) then + EditorMacroForRecording.RecordMacro(TCustomSynEdit(se.EditorControl)) else - if EditorMacroForRecording.State = emRecording then begin - EditorMacroForRecording.Pause; - end + if EditorMacroForRecording.State = emRecording then + EditorMacroForRecording.Pause else - if EditorMacroForRecording.State = emRecPaused then begin + if EditorMacroForRecording.State = emRecPaused then EditorMacroForRecording.Resume; - end; - SourceEditorManagerIntf.ActiveEditor.EditorControl.SetFocus; + se.EditorControl.SetFocus; end; procedure TMacroListView.btnRecordStopClick(Sender: TObject); @@ -1341,7 +1346,9 @@ chkRepeat.Enabled := IsStopped and (not FIsPlaying); edRepeat.Enabled := IsStopped and (not FIsPlaying); - btnRecord.Enabled := (RecState in [emStopped, emRecPaused, emRecording]) and (not FIsPlaying); + btnRecord.Enabled := Assigned(SourceEditorManagerIntf.ActiveEditor) + and (RecState in [emStopped, emRecPaused, emRecording]) + and (not FIsPlaying); btnRecordStop.Enabled := (not IsStopped) or FIsPlaying; if (RecState = emRecording) then @@ -1404,7 +1411,7 @@ tbIDE.Hint := lisSavedWithIDESettings; tbMoveProject.Caption := lisProjectMacro; tbMoveIDE.Caption := lisIDE; - lbMoveTo.Caption := lisMoveTo; + lbMoveTo.Caption := lisMoveTo + ' '; // Anchors do not work here. Use spaces. btnSelect.Caption := lisMenuSelect; btnRename.Caption := lisRename2; diff -Nru lazarus-1.4.4+dfsg/ide/editoroptions.pp lazarus-1.6+dfsg/ide/editoroptions.pp --- lazarus-1.4.4+dfsg/ide/editoroptions.pp 2015-02-21 09:19:16.000000000 +0000 +++ lazarus-1.6+dfsg/ide/editoroptions.pp 2015-11-28 10:10:11.000000000 +0000 @@ -43,7 +43,7 @@ Classes, SysUtils, resource, // LCL Controls, ExtCtrls, Graphics, LCLProc, FileUtil, Laz2_XMLCfg, lazutf8classes, - LazClasses, LazFileUtils, LResources, Forms, Dialogs, ComCtrls, LCLType, + LazClasses, LazFileUtils, LResources, Forms, Dialogs, ComCtrls, LCLType, LazUTF8, // Synedit SynEdit, SynEditAutoComplete, SynEditKeyCmds, SynEditTypes, SynEditMiscClasses, SynBeautifier, SynEditTextTrimmer, SynEditMouseCmds, @@ -59,7 +59,7 @@ SynHighlighterPas, SynHighlighterPerl, SynHighlighterPHP, SynHighlighterSQL, SynHighlighterPython, SynHighlighterUNIXShellScript, SynHighlighterXML, SynHighlighterJScript, SynHighlighterDiff, SynHighlighterBat, SynHighlighterIni, - SynHighlighterPo, + SynHighlighterPo, SynHighlighterPike, SynPluginMultiCaret, // codetools LinkScanner, CodeToolManager, // IDEIntf @@ -86,7 +86,7 @@ TLazSyntaxHighlighter = (lshNone, lshText, lshFreePascal, lshDelphi, lshLFM, lshXML, lshHTML, lshCPP, lshPerl, lshJava, lshBash, lshPython, lshPHP, lshSQL, lshJScript, - lshDiff, lshBat, lshIni, lshPo); + lshDiff, lshBat, lshIni, lshPo, lshPike); TColorSchemeAttributeFeature = ( hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, @@ -399,7 +399,8 @@ (Count: 0; Info: nil), // Diff (Count: 0; Info: nil), // Ini (Count: 0; Info: nil), // Bat - (Count: 0; Info: nil) // PO + (Count: 0; Info: nil), // PO + (Count: 0; Info: nil) // Pike ); type @@ -599,7 +600,8 @@ (Count: 3; Info: @EditorOptionsFoldInfoDiff[0]), // Diff (Count: 0; Info: nil), // Bat (Count: 0; Info: nil), // Ini - (Count: 0; Info: nil) // PO + (Count: 0; Info: nil), // PO + (Count: 0; Info: nil) // Pike ); const @@ -631,7 +633,7 @@ (nil, nil, TIDESynFreePasSyn, TIDESynPasSyn, TSynLFMSyn, TSynXMLSyn, TSynHTMLSyn, TSynCPPSyn, TSynPerlSyn, TSynJavaSyn, TSynUNIXShellScriptSyn, TSynPythonSyn, TSynPHPSyn, TSynSQLSyn, TSynJScriptSyn, TSynDiffSyn, - TSynBatSyn, TSynIniSyn, TSynPoSyn); + TSynBatSyn, TSynIniSyn, TSynPoSyn, TSynPikeSyn); { Comments } @@ -655,7 +657,8 @@ comtNone, // Diff comtNone, // Bat comtNone, // Ini - comtNone // po + comtNone, // po + comtCPP // lshPike ); const @@ -717,7 +720,11 @@ end; TEditorOptions = class; - TMouseOptGutterLeftType = (moGLDownClick, moglUpClickAndSelect); + TMouseOptGutterLeftType = ( + moGLDownClick, + moglUpClickAndSelect, + moglUpClickAndSelectRighHalf // Changes and fold gutter (parts close to the text) + ); TMouseOptButtonActionOld = ( mbaNone, mbaSelect, mbaSelectColumn, mbaSelectLine, @@ -736,6 +743,8 @@ mbaContextMenuDebug, mbaContextMenuTab, + mbaMultiCaretToggle, + // Old values, needed to load old config moTCLNone, moTMIgnore, moTMPaste, @@ -743,7 +752,7 @@ moTCLJumpOrBlock ); - TMouseOptButtonAction = mbaNone..mbaContextMenuTab; + TMouseOptButtonAction = mbaNone..mbaMultiCaretToggle; const MouseOptButtonActionOld: Array [moTCLNone..moTCLJumpOrBlock] of TMouseOptButtonActionOld = ( @@ -773,7 +782,9 @@ FUserSchemes: TQuickStringlist; private FCustomSavedActions: Boolean; + FGutterActionsChanges: TSynEditMouseActions; FMainActions, FSelActions, FTextActions: TSynEditMouseActions; + FSelectOnLineNumbers: Boolean; FName: String; FGutterActions: TSynEditMouseActions; FGutterActionsFold, FGutterActionsFoldExp, FGutterActionsFoldCol: TSynEditMouseActions; @@ -885,9 +896,12 @@ property GutterActionsFoldExp: TSynEditMouseActions read FGutterActionsFoldExp; property GutterActionsFoldCol: TSynEditMouseActions read FGutterActionsFoldCol; property GutterActionsLines: TSynEditMouseActions read FGutterActionsLines; + property GutterActionsChanges: TSynEditMouseActions read FGutterActionsChanges; published property GutterLeft: TMouseOptGutterLeftType read FGutterLeft write FGutterLeft default moglUpClickAndSelect; + property SelectOnLineNumbers: Boolean read FSelectOnLineNumbers write FSelectOnLineNumbers + default True; property TextDrag: Boolean read FTextDrag write FTextDrag default True; property TextRightMoveCaret: Boolean read FTextRightMoveCaret write FTextRightMoveCaret @@ -913,7 +927,7 @@ property TextAltLeftClick: TMouseOptButtonAction read FTextAltLeftClick write FTextAltLeftClick default mbaSelectColumn; property TextShiftCtrlLeftClick: TMouseOptButtonAction read FTextShiftCtrlLeftClick write FTextShiftCtrlLeftClick - default mbaNone; // continue selection + default mbaMultiCaretToggle; // continue selection property TextShiftAltLeftClick: TMouseOptButtonAction read FTextShiftAltLeftClick write FTextShiftAltLeftClick default mbaNone; // continue selection property TextAltCtrlLeftClick: TMouseOptButtonAction read FTextAltCtrlLeftClick write FTextAltCtrlLeftClick @@ -1280,11 +1294,13 @@ { TEditorOptions - Editor Options object used to hold the editor options } - TEditorOptions = class(TAbstractIDEEnvironmentOptions) + TEditorOptions = class(TIDEEditorOptions) private FBlockTabIndent: Integer; FCompletionLongLineHintInMSec: Integer; FCompletionLongLineHintType: TSynCompletionLongHintType; + FMultiCaretDefaultColumnSelectMode: TSynPluginMultiCaretDefaultMode; + FMultiCaretDefaultMode: TSynPluginMultiCaretDefaultMode; FPasExtendedKeywordsMode: Boolean; FHideSingleTabInWindow: Boolean; FPasStringKeywordMode: TSynPasStringMode; @@ -1297,6 +1313,7 @@ // general options fFindTextAtCursor: Boolean; fShowTabCloseButtons: Boolean; + FMultiLineTab: Boolean; fShowTabNumbers: Boolean; fUseTabHistory: Boolean; fTabPosition: TTabPosition; @@ -1312,6 +1329,7 @@ fUndoLimit: Integer; fTabWidth: Integer; FBracketHighlightStyle: TSynEditBracketHighlightStyle; + FMultiCaretOnColumnSelect: Boolean; // Display options fVisibleRightMargin: Boolean; @@ -1398,6 +1416,8 @@ FDefaultValues: TEditorOptions; + protected + function GetTabPosition: TTabPosition; override; public class function GetGroupCaption:string; override; class function GetInstance: TAbstractIDEOptions; override; @@ -1450,6 +1470,10 @@ read fSynEditOptions2 write fSynEditOptions2 default SynEditDefaultOptions2; property ShowTabCloseButtons: Boolean read fShowTabCloseButtons write fShowTabCloseButtons; + published + property MultiLineTab: Boolean + read FMultiLineTab write FMultiLineTab default False; + public property HideSingleTabInWindow: Boolean read FHideSingleTabInWindow write FHideSingleTabInWindow; property ShowTabNumbers: Boolean read fShowTabNumbers write fShowTabNumbers; @@ -1586,6 +1610,12 @@ property ReverseFoldPopUpOrder: Boolean read FReverseFoldPopUpOrder write FReverseFoldPopUpOrder default True; property UseTabHistory: Boolean read fUseTabHistory write fUseTabHistory; + property MultiCaretOnColumnSelect: Boolean + read FMultiCaretOnColumnSelect write FMultiCaretOnColumnSelect default True; + property MultiCaretDefaultMode: TSynPluginMultiCaretDefaultMode + read FMultiCaretDefaultMode write FMultiCaretDefaultMode default mcmMoveAllCarets; + property MultiCaretDefaultColumnSelectMode: TSynPluginMultiCaretDefaultMode + read FMultiCaretDefaultColumnSelectMode write FMultiCaretDefaultColumnSelectMode default mcmCancelOnCaretMove; // Highlighter Pas property PasExtendedKeywordsMode: Boolean @@ -1664,7 +1694,8 @@ 'Diff', 'Bat', 'Ini', - 'PO' + 'PO', + 'Pike' ); var @@ -1714,7 +1745,8 @@ lshDiff, lshBat, lshIni, - lshPo + lshPo, + lshPike ); var @@ -2323,8 +2355,8 @@ Stream: TLazarusResourceStream; begin FPResource := FindResource(HInstance, PChar(AResName), PChar(RT_RCDATA)); - if FPResource <> 0 then - Stream := TLazarusResourceStream.CreateFromHandle(HInstance, FPResource); + if FPResource = 0 then exit; + Stream := TLazarusResourceStream.CreateFromHandle(HInstance, FPResource); XMLConfig := TRttiXMLConfig.Create(''); XMLConfig.ReadFromStream(Stream); Singleton.RegisterScheme(XMLConfig, ASchemeName, 'Lazarus/ColorSchemes/'); @@ -2538,10 +2570,7 @@ Line: Integer): TAdditionalHilightAttribute; begin if Line < 1 then - begin - Result := ahaNone; - exit; - end; + exit(ahaNone); for Result := Low(TAdditionalHilightAttribute) to High(TAdditionalHilightAttribute) do if (Result <> ahaNone) and (AddAttrSampleLines[Result] = Line) then @@ -2887,7 +2916,7 @@ TheType := lshPython; DefaultCommentType := DefaultCommentTypes[TheType]; SynClass := LazSyntaxHighlighterClasses[TheType]; - SetBothFilextensions('py'); + SetBothFilextensions('py;pyw'); SampleSource := '# Python syntax highlighting'#13#10 + 'import math'#13#10 + #13#10 + @@ -3116,6 +3145,32 @@ end; Add(NewInfo); + // create info for Pike + NewInfo := TEditOptLanguageInfo.Create; + NewInfo.TheType := lshPike; + NewInfo.DefaultCommentType := DefaultCommentTypes[NewInfo.TheType]; + NewInfo.SynClass := LazSyntaxHighlighterClasses[NewInfo.TheType]; + NewInfo.SetBothFilextensions('pike;pmod'); + NewInfo.SampleSource := TSynPikeSyn.Pike_GetSampleSource(); + with NewInfo do + begin + AddAttrSampleLines[ahaTextBlock] := 12; + MappedAttributes := TStringList.Create; + with MappedAttributes do + begin + Add('Comment=Comment'); + Add('Documentation=Comment'); + Add('Identifier=Identifier'); + Add('Reserved_word=Reserved_word'); + Add('Number=Number'); + Add('Space=Space'); + Add('String=String'); + Add('Symbol=Symbol'); + end; + CaretXY := Point(1,1); + end; + Add(NewInfo); + end; destructor TEditOptLangList.Destroy; @@ -3224,6 +3279,7 @@ FGutterActionsFoldExp := TSynEditMouseActions.Create(nil); FGutterActionsFoldCol := TSynEditMouseActions.Create(nil); FGutterActionsLines := TSynEditMouseActions.Create(nil); + FGutterActionsChanges := TSynEditMouseActions.Create(nil); FUserSchemes := TQuickStringlist.Create; FVersion := 0; end; @@ -3240,6 +3296,7 @@ FGutterActionsFoldExp.Free; FGutterActionsFoldCol.Free; FGutterActionsLines.Free; + FGutterActionsChanges.Free; inherited Destroy; end; @@ -3260,7 +3317,7 @@ FTextAltCtrlLeftClick := mbaNone; FTextShiftLeftClick := mbaNone; FTextShiftAltLeftClick := mbaNone; - FTextShiftCtrlLeftClick := mbaNone; + FTextShiftCtrlLeftClick := mbaMultiCaretToggle; FTextShiftAltCtrlLeftClick := mbaNone; // middle FTextMiddleClick := mbaPaste; @@ -3311,17 +3368,27 @@ FTextRightMoveCaret := False; FTextDrag := True; + FSelectOnLineNumbers := True; end; procedure TEditorMouseOptions.ResetGutterToDefault; + procedure AddStartSel(List: TSynEditMouseActions); + begin + with List do begin + AddCommand(emcStartSelections, True, mbXLeft, ccAny, cdDown, [], [ssShift], emcoSelectionStart); + AddCommand(emcStartSelections, True, mbXLeft, ccAny, cdDown, [ssShift], [ssShift], emcoSelectionContinue); + end; + end; var CDir: TSynMAClickDir; + R: TSynMAUpRestrictions; begin FGutterActions.Clear; FGutterActionsFold.Clear; FGutterActionsFoldExp.Clear; FGutterActionsFoldCol.Clear; FGutterActionsLines.Clear; + FGutterActionsChanges.Clear; //TMouseOptGutterLeftType = (moGLDownClick, moglUpClickAndSelect); with FGutterActions do begin @@ -3331,36 +3398,69 @@ AddCommand(emcCodeFoldContextMenu, False, mbXRight, ccSingle, cdUp, [], []); end; + CDir := cdDown; + R := []; if FGutterLeft = moglUpClickAndSelect then begin CDir := cdUp; - with FGutterActions do begin - AddCommand(emcStartSelections, True, mbXLeft, ccAny, cdDown, [], [ssShift], emcoSelectionStart); - AddCommand(emcStartSelections, True, mbXLeft, ccAny, cdDown, [ssShift], [ssShift], emcoSelectionContinue); - end; + R := crRestrictAll; + AddStartSel(FGutterActions); end; + with FGutterActions do begin - AddCommand(emcOnMainGutterClick, False, mbXLeft, ccAny, CDir, [], []); // breakpoint + AddCommand(emcOnMainGutterClick, False, mbXLeft, ccAny, CDir, R, [], []); // breakpoint end; + + + if FGutterLeft in [moglUpClickAndSelect, moglUpClickAndSelectRighHalf] then begin + CDir := cdUp; + R := crRestrictAll; + AddStartSel(FGutterActionsChanges); + end; + + with FGutterActionsChanges do begin + if FGutterLeft = moGLDownClick then + AddCommand(emcNone, False, mbXLeft, ccAny, cdDown, [], []); + AddCommand(emcNone, False, mbXLeft, ccAny, cdUp, [], []); + end; + + + if FGutterLeft = moglUpClickAndSelectRighHalf then begin + if not FSelectOnLineNumbers then + AddStartSel(FGutterActionsLines); + AddStartSel(FGutterActionsFold); + end; + + + if FSelectOnLineNumbers then begin + with FGutterActionsLines do begin + AddCommand(emcStartLineSelectionsNoneEmpty, True, mbXLeft, ccAny, cdDown, [], [ssShift], emcoSelectionStart); + AddCommand(emcStartLineSelectionsNoneEmpty, True, mbXLeft, ccAny, cdDown, [ssShift], [ssShift], emcoSelectionContinue); + AddCommand(emcNone, False, mbXLeft, ccAny, cdUp, [], []); + end; + end; + with FGutterActionsFold do begin - AddCommand(emcNone, False, mbXLeft, ccAny, CDir, [], []); + AddCommand(emcNone, False, mbXLeft, ccAny, CDir, R, [], []); end; with FGutterActionsFoldCol do begin - AddCommand(emcCodeFoldCollaps, False, mbXLeft, ccAny, CDir, [ssAlt], [ssAlt, SYNEDIT_LINK_MODIFIER], emcoCodeFoldCollapsOne); - AddCommand(emcCodeFoldExpand, False, mbXLeft, ccAny, CDir, [SYNEDIT_LINK_MODIFIER], [ssAlt, SYNEDIT_LINK_MODIFIER], emcoCodeFoldExpandAll); - AddCommand(emcCodeFoldExpand, False, mbXLeft, ccAny, CDir, [], [], emcoCodeFoldExpandOne); + AddCommand(emcCodeFoldCollaps, False, mbXLeft, ccAny, CDir, R, [ssAlt], [ssAlt, SYNEDIT_LINK_MODIFIER], emcoCodeFoldCollapsOne); + AddCommand(emcCodeFoldExpand, False, mbXLeft, ccAny, CDir, R, [SYNEDIT_LINK_MODIFIER], [ssAlt, SYNEDIT_LINK_MODIFIER], emcoCodeFoldExpandAll); + AddCommand(emcCodeFoldExpand, False, mbXLeft, ccAny, CDir, R, [], [], emcoCodeFoldExpandOne); // TODO: why depend on FTextMiddleClick? if FTextMiddleClick <> mbaNone then - AddCommand(emcCodeFoldCollaps, False, mbXMiddle, ccAny, CDir, [], [], emcoCodeFoldCollapsOne); + AddCommand(emcCodeFoldCollaps, False, mbXMiddle, ccAny, CDir, R, [], [], emcoCodeFoldCollapsOne); + // do not allow selection, over colapse/expand icons. Those may depend cursor pos (e.g. hide selected lines) if CDir = cdUp then AddCommand(emcNone, False, mbXLeft, ccAny, cdDown, [], []); end; with FGutterActionsFoldExp do begin - AddCommand(emcCodeFoldCollaps, False, mbXLeft, ccAny, CDir, [], [SYNEDIT_LINK_MODIFIER], emcoCodeFoldCollapsOne); - AddCommand(emcCodeFoldCollaps, False, mbXLeft, ccAny, CDir, [SYNEDIT_LINK_MODIFIER], [SYNEDIT_LINK_MODIFIER], emcoCodeFoldCollapsAll); + AddCommand(emcCodeFoldCollaps, False, mbXLeft, ccAny, CDir, R, [], [SYNEDIT_LINK_MODIFIER], emcoCodeFoldCollapsOne); + AddCommand(emcCodeFoldCollaps, False, mbXLeft, ccAny, CDir, R, [SYNEDIT_LINK_MODIFIER], [SYNEDIT_LINK_MODIFIER], emcoCodeFoldCollapsAll); // TODO: why depend on FTextMiddleClick? if FTextMiddleClick <> mbaNone then - AddCommand(emcCodeFoldCollaps, False, mbXMiddle, ccAny, CDir, [], [], emcoCodeFoldCollapsOne); + AddCommand(emcCodeFoldCollaps, False, mbXMiddle, ccAny, CDir, R, [], [], emcoCodeFoldCollapsOne); + // do not allow selection, over colapse/expand icons. Those may depend cursor pos (e.g. hide selected lines) if CDir = cdUp then AddCommand(emcNone, False, mbXLeft, ccAny, cdDown, [], []); end; @@ -3431,6 +3531,11 @@ AddCommand(emcContextMenu, True, AButton, AClickCount, ADir, AShift, AShiftMask, emcoSelectionCaretMoveOutside, 0, 1); mbaContextMenuTab: AddCommand(emcContextMenu, True, AButton, AClickCount, ADir, AShift, AShiftMask, emcoSelectionCaretMoveOutside, 0, 2); + mbaMultiCaretToggle: + begin + AddCommand(emcPluginMultiCaretToggleCaret, False, AButton, AClickCount, ADir, AShift, AShiftMask); + FSelActions.AddCommand(emcPluginMultiCaretSelectionToCarets, False, AButton, AClickCount, ADir, AShift, AShiftMask); + end; end; end; end; @@ -3505,8 +3610,8 @@ if FTextShiftCtrlLeftClick = mbaNone then SelKey := [ssShift] else SelKey := []; - AddBtnClick(FTextCtrlLeftClick, mbXLeft, [SYNEDIT_LINK_MODIFIER], ModKeys, False, SelKey); - AddBtnClick(FTextShiftCtrlLeftClick, mbXLeft, [ssShift, SYNEDIT_LINK_MODIFIER], ModKeys, False, SelKey); + AddBtnClick(FTextCtrlLeftClick, mbXLeft, [SYNEDIT_LINK_MODIFIER], ModKeys, False, SelKey); + AddBtnClick(FTextShiftCtrlLeftClick, mbXLeft, [ssShift, SYNEDIT_LINK_MODIFIER], ModKeys, False, SelKey); if FTextShiftAltLeftClick = mbaNone then SelKey := [ssShift] @@ -3621,8 +3726,9 @@ if FTextDrag then with FSelActions do begin - AddCommand(emcStartDragMove, False, mbXLeft, ccSingle, cdDown, [], []); + AddCommand(emcStartDragMove, False, mbXLeft, ccSingle, cdDown, [], [], emcoNotDragedNoCaretOnUp); end; + FTextActions.AddCommand(emcNone, True, mbXLeft, ccSingle, cdUp, [], [], 0, 99); end; procedure TEditorMouseOptions.ResetToUserScheme; @@ -3644,6 +3750,7 @@ FGutterActionsFoldExp.Assign(Src.GutterActionsFoldExp); FGutterActionsFoldCol.Assign(Src.GutterActionsFoldCol); FGutterActionsLines.Assign (Src.GutterActionsLines); + FGutterActionsChanges.Assign(Src.GutterActionsChanges); end; procedure TEditorMouseOptions.SetTextCtrlLeftClick(AValue: TMouseOptButtonActionOld); @@ -3671,6 +3778,7 @@ FName := Src.FName; FGutterLeft := Src.GutterLeft; + FSelectOnLineNumbers := Src.SelectOnLineNumbers; FTextDrag := Src.TextDrag; FTextRightMoveCaret := Src.TextRightMoveCaret; FSelectedUserScheme := Src.FSelectedUserScheme; @@ -3777,7 +3885,8 @@ Temp.GutterActionsFold.Equals (self.GutterActionsFold) and Temp.GutterActionsFoldCol.Equals(self.GutterActionsFoldCol) and Temp.GutterActionsFoldExp.Equals(self.GutterActionsFoldExp) and - Temp.GutterActionsLines.Equals (self.GutterActionsLines); + Temp.GutterActionsLines.Equals (self.GutterActionsLines) and + Temp.GutterActionsChanges.Equals(Self.GutterActionsChanges); Temp.Free; end; @@ -3828,7 +3937,7 @@ TextDoubleSelLine: Boolean; begin Reset; - if (FileVersion > 0) and (FileVersion < 11) then + if FileVersion < 11 then FGutterLeft := moGLDownClick; AltColumnMode := False; TextDoubleSelLine := False; @@ -3882,6 +3991,7 @@ LoadMouseAct(aPath + 'GutterFoldExp/', GutterActionsFoldExp); LoadMouseAct(aPath + 'GutterFoldCol/', GutterActionsFoldCol); LoadMouseAct(aPath + 'GutterLineNum/', GutterActionsLines); + LoadMouseAct(aPath + 'GutterLineChange/', GutterActionsChanges); if Version < 1 then begin try @@ -3940,6 +4050,7 @@ SaveMouseAct(aPath + 'GutterFoldExp/', GutterActionsFoldExp); SaveMouseAct(aPath + 'GutterFoldCol/', GutterActionsFoldCol); SaveMouseAct(aPath + 'GutterLineNum/', GutterActionsLines); + SaveMouseAct(aPath + 'GutterLineChange/', GutterActionsChanges); end else begin // clear unused entries aXMLConfig.DeletePath(aPath + 'Main'); @@ -3992,6 +4103,7 @@ LoadMouseAct(aPath + 'GutterFoldExp/', GutterActionsFoldExp); LoadMouseAct(aPath + 'GutterFoldCol/', GutterActionsFoldCol); LoadMouseAct(aPath + 'GutterLineNum/', GutterActionsLines); + LoadMouseAct(aPath + 'GutterLineChange/', GutterActionsChanges); end; procedure TEditorMouseOptions.ExportToXml(aXMLConfig: TRttiXMLConfig; aPath: String); @@ -4022,6 +4134,7 @@ SaveMouseAct(aPath + 'GutterFoldExp/', GutterActionsFoldExp); SaveMouseAct(aPath + 'GutterFoldCol/', GutterActionsFoldCol); SaveMouseAct(aPath + 'GutterLineNum/', GutterActionsLines); + SaveMouseAct(aPath + 'GutterLineChange/', GutterActionsChanges); MAct.Free; end; @@ -4373,6 +4486,7 @@ begin // General options fShowTabCloseButtons := True; + FMultiLineTab := False; FHideSingleTabInWindow := False; fTabPosition := tpTop; FCopyWordAtCursorOnCopyNone := True; @@ -4387,6 +4501,9 @@ FGutterSeparatorIndex := 3; fSynEditOptions := SynEditDefaultOptions; fSynEditOptions2 := SynEditDefaultOptions2; + FMultiCaretOnColumnSelect := True; + FMultiCaretDefaultMode := mcmMoveAllCarets; + FMultiCaretDefaultColumnSelectMode := mcmCancelOnCaretMove; // Display options fEditorFont := SynDefaultFontName; @@ -4483,14 +4600,13 @@ DefOpts: TSynEditorOptions; begin try - FileVersion:=XMLConfig.GetValue('EditorOptions/Version', 0); + FileVersion:=XMLConfig.GetValue('EditorOptions/Version', EditorOptsFormatVersion); XMLConfig.ReadObject('EditorOptions/Misc/', Self, FDefaultValues); // general options DefOpts := SynEditDefaultOptions; - // FileVersion=0: load an empty (none existing) file - if (FileVersion > 0) and (FileVersion < 10) then DefOpts := DefOpts - [eoTabIndent]; + if (FileVersion < 10) then DefOpts := DefOpts - [eoTabIndent]; for SynEditOpt := Low(TSynEditorOption) to High(TSynEditorOption) do begin SynEditOptName := GetSynEditOptionName(SynEditOpt); @@ -4573,7 +4689,7 @@ XMLConfig.GetValue('EditorOptions/Display/VisibleRightMargin', True); fVisibleGutter := XMLConfig.GetValue('EditorOptions/Display/VisibleGutter', True); - if (FileVersion>0) and (FileVersion<4) then begin + if FileVersion<4 then begin fShowLineNumbers := XMLConfig.GetValue('EditorOptions/Display/ShowLineNumbers', False); fShowOnlyLineNumbersMultiplesOf := @@ -4609,7 +4725,7 @@ XMLConfig.GetValue('EditorOptions/Display/ExtraLineSpacing', 1); fDisableAntialiasing := XMLConfig.GetValue('EditorOptions/Display/DisableAntialiasing', - (FileVersion>0) and (FileVersion<7)); + FileVersion<7); FDoNotWarnForFont := XMLConfig.GetValue('EditorOptions/Display/DoNotWarnForFont', ''); @@ -5101,7 +5217,7 @@ var FormatVersion: Integer; begin - FormatVersion := XMLConfig.GetValue('EditorOptions/Color/Version', 0); + FormatVersion := XMLConfig.GetValue('EditorOptions/Color/Version', EditorOptsFormatVersion); if FormatVersion > 1 then Result := XMLConfig.GetValue( 'EditorOptions/Color/Lang' + StrToValidXMLName( @@ -5539,6 +5655,13 @@ end; end; + {$IFnDEF WithoutSynMultiCaret} + if ASynEdit is TIDESynEditor then begin + TIDESynEditor(ASynEdit).MultiCaret.EnableWithColumnSelection := MultiCaretOnColumnSelect; + TIDESynEditor(ASynEdit).MultiCaret.DefaultMode := FMultiCaretDefaultMode; + TIDESynEditor(ASynEdit).MultiCaret.DefaultColumnSelectMode := FMultiCaretDefaultColumnSelectMode; + end; + {$ENDIF} // Display options ASynEdit.Gutter.Visible := fVisibleGutter; @@ -5604,11 +5727,24 @@ if ASynEdit.Gutter.LineNumberPart <> nil then begin ASynEdit.Gutter.LineNumberPart.MouseActions.Assign(FUserMouseSettings.GutterActionsLines); end; + if ASynEdit.Gutter.ChangesPart<> nil then + ASynEdit.Gutter.ChangesPart.MouseActions.Assign(FUserMouseSettings.GutterActionsChanges); + + if (ASynEdit.Gutter.SeparatorPart <> nil) and (GutterSeparatorIndex = 2) and ShowLineNumbers then + ASynEdit.Gutter.SeparatorPart.MouseActions.Assign(FUserMouseSettings.GutterActionsLines) + else + if (ASynEdit.Gutter.SeparatorPart <> nil) and (GutterSeparatorIndex >= 2) then + ASynEdit.Gutter.SeparatorPart.MouseActions.Assign(FUserMouseSettings.GutterActionsChanges); finally ASynEdit.EndUpdate; end; end; +function TEditorOptions.GetTabPosition: TTabPosition; +begin + Result := fTabPosition; +end; + procedure TEditorOptions.GetSynEditPreviewSettings(APreviewEditor: TObject); // read synedit setings from config file var diff -Nru lazarus-1.4.4+dfsg/ide/editortoolbarstatic.pas lazarus-1.6+dfsg/ide/editortoolbarstatic.pas --- lazarus-1.4.4+dfsg/ide/editortoolbarstatic.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/editortoolbarstatic.pas 2015-10-16 22:16:45.000000000 +0000 @@ -0,0 +1,352 @@ +{ + Copyright (C) 2007 Graeme Geldenhuys (graemeg@gmail.com) + Modified by Giuliano Colla and Juha Manninen + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit EditorToolbarStatic; + +{$mode objfpc}{$H+} + +interface + +uses + SysUtils, Classes, fgl, ComCtrls, Controls, LCLProc, Menus, + IDEImagesIntf, SrcEditorIntf, BaseIDEIntf, + LazarusIDEStrConsts, LazConfigStorage, Laz2_XMLCfg, ToolbarConfig; + +type + + { TEditorToolBarOptions } + + TEditorToolBarOptions = class(TIDEToolBarOptionsBase) + private + FVisible: Boolean; + FPosition: string; + public + constructor Create; + //destructor Destroy; override; + procedure Clear; + function Equals(Opts: TEditorToolBarOptions): boolean; overload; + procedure Assign(Source: TEditorToolBarOptions); + procedure CreateDefaults; + procedure Load(XMLConfig: TXMLConfig; Path: String); + procedure Save(XMLConfig: TXMLConfig; Path: String); + published + property Visible: Boolean read FVisible write FVisible; + property Position: string read FPosition write FPosition; + end; + + TAllEditorToolbars = class; + + { TEditorToolbar } + + TEditorToolbar = class(TIDEToolbarBase) + private + FCollection: TAllEditorToolbars; + FWindow: TSourceEditorWindowInterface; + CfgItem: TMenuItem; + procedure ClearToolbar; + protected + procedure PostCopyOptions; override; + public + constructor Create(AOwner: TComponent; ACollection: TAllEditorToolbars); overload; + destructor Destroy; override; + property OwnerWindow: TSourceEditorWindowInterface read FWindow; + end; + + + TEditorToolbarList = specialize TFPGList<TEditorToolbar>; + + { TAllEditorToolbars } + + TAllEditorToolbars = class + private + FToolBars: TEditorToolbarList; + FConfigEvent: TNotifyEvent; + procedure SourceWindowCreated(Sender: TObject); + procedure SourceWindowDestroyed(Sender: TObject); + procedure DoConfigureEditorToolbar(Sender: TObject); + public + constructor Create; + destructor Destroy; override; + procedure ReloadAll; + end; + +procedure CreateEditorToolBar(aConfigEvent: TNotifyEvent); + +var + uAllEditorToolbars: TAllEditorToolbars; + +implementation + +uses EnvironmentOpts; + +const + BasePath = 'EditorToolBarOptions/'; + cSettingsFile = 'editortoolbar.xml'; + + +{ TEditorToolBarOptions } + +constructor TEditorToolBarOptions.Create; +begin + inherited Create; + FVisible := True; +end; +{ +destructor TEditorToolBarOptions.Destroy; +begin + inherited Destroy; +end; +} +procedure TEditorToolBarOptions.Clear; +begin + inherited Clear; + FVisible := True; +end; + +function TEditorToolBarOptions.Equals(Opts: TEditorToolBarOptions): boolean; +begin + Result := inherited Equals(Opts) + and (FVisible = Opts.FVisible) and (FPosition = Opts.FPosition); +end; + +procedure TEditorToolBarOptions.Assign(Source: TEditorToolBarOptions); +begin + inherited Assign(Source); + FVisible := Source.FVisible; + FPosition := Source.FPosition; +end; + +procedure TEditorToolBarOptions.CreateDefaults; +begin + ButtonNames.Clear; + ButtonNames.Add('IDEMainMenu/Search/itmJumpings/itmJumpToSection/itmJumpToImplementation'); + ButtonNames.Add('IDEMainMenu/Search/itmJumpings/itmJumpBack'); + ButtonNames.Add('IDEMainMenu/Search/itmJumpings/itmJumpForward'); + ButtonNames.Add(cIDEToolbarDivider); +end; + +procedure TEditorToolBarOptions.Load(XMLConfig: TXMLConfig; Path: String); +var + ButtonCount: Integer; + ButtonName: string; + I: Integer; + cfg: TConfigStorage; +begin + Path := Path + BasePath; + if XMLConfig.HasPath(Path + 'Count', True) then + begin + FVisible := XMLConfig.GetValue(Path + 'Visible', True); + FPosition := XMLConfig.GetValue(Path + 'Position', 'Top'); + LoadButtonNames(XMLConfig, Path); + end + else begin + // Plan B: Load the old configuration. User settings are not lost. + cfg := GetIDEConfigStorage(cSettingsFile, True); + try + FVisible := cfg.GetValue('Visible',True); + FPosition := cfg.GetValue('Position','Top'); + ButtonCount := cfg.GetValue('Count', 0); + if ButtonCount > 0 then + begin + DebugLn('TEditorToolBarOptions.Load: Using old configuration in editortoolbar.xml.'); + // This used to be hard-coded in old version, add it now. + ButtonNames.Add('IDEMainMenu/Search/itmJumpings/itmJumpToSection/itmJumpToImplementation'); + for I := 1 to ButtonCount do + begin + ButtonName := Trim(cfg.GetValue('Button' + Format('%2.2d', [I]) + '/Value', '')); + if ButtonName <> '' then + ButtonNames.Add(ButtonName); + end; + end + else // No old configuration, use defaults. + CreateDefaults; + finally + cfg.Free; + end; + end; +end; + +procedure TEditorToolBarOptions.Save(XMLConfig: TXMLConfig; Path: String); +begin + Path := Path + BasePath; + XMLConfig.SetDeleteValue(Path + 'Visible', FVisible, True); + XMLConfig.SetDeleteValue(Path + 'Position', FPosition, 'Top'); + SaveButtonNames(XMLConfig, Path); +end; + +{ TEditorToolbar } + +constructor TEditorToolbar.Create(AOwner: TComponent; ACollection: TAllEditorToolbars); +var + xPM: TPopupMenu; +begin + inherited Create(AOwner); + Assert(not Assigned(FToolBar), 'TEditorToolbar.Create: FToolBar is assigned'); + FCollection := ACollection; + FWindow := TSourceEditorWindowInterface(AOwner); + + // Toolbar must be created with Align = alTop, then initial positioning of buttons is correct. + FToolBar := TToolbar.Create(FWindow); + FToolBar.Parent := FWindow; + FToolBar.Height := 26; + FToolBar.Align := alTop; + FToolBar.Flat := True; + FToolBar.Images := IDEImages.Images_16; + FToolBar.ShowHint := True; + + xPM := TPopupMenu.Create(FToolBar); + xPM.Images := IDEImages.Images_16; + CfgItem := TMenuItem.Create(xPM); + xPM.Items.Add(CfgItem); + CfgItem.Caption := lisConfigureEditorToolbar; + CfgItem.ImageIndex := IDEImages.LoadImage(16, 'preferences'); + CfgItem.OnClick := @FCollection.DoConfigureEditorToolbar; + + FToolBar.PopupMenu := xPM; +end; + +destructor TEditorToolbar.Destroy; +begin + uAllEditorToolbars.FToolBars.Remove(Self); + inherited Destroy; +end; + +procedure TEditorToolbar.PostCopyOptions; +begin + case EnvironmentOptions.Desktop.EditorToolBarOptions.Position of + 'Top': begin + FToolBar.Align:= alTop; + FToolBar.Height:= 26; + end; + 'Bottom': begin + FToolBar.Align:= alBottom; + FToolBar.Height:= 26; + end; + 'Left': begin + FToolBar.Align:= alLeft; + FToolBar.Width:= 26; + end; + 'Right': begin + FToolBar.Align:= alRight; + FToolBar.Width:= 26; + end; + end; +end; + +procedure TEditorToolbar.ClearToolbar; +var + i: integer; +begin + FToolBar.BeginUpdate; + try + for i := FToolBar.ButtonCount - 1 downto 0 do + FToolBar.Buttons[i].Free + finally + FToolBar.EndUpdate; + end; +end; + +procedure CreateEditorToolBar(aConfigEvent: TNotifyEvent); +begin + uAllEditorToolbars := TAllEditorToolbars.Create; + uAllEditorToolbars.FConfigEvent := aConfigEvent; +end; + +{ TAllEditorToolbars } + +constructor TAllEditorToolbars.Create; +begin + inherited; + FToolBars := TEditorToolbarList.Create; + if SourceEditorManagerIntf <> nil then + begin + SourceEditorManagerIntf.RegisterChangeEvent(semWindowCreate, @SourceWindowCreated); + SourceEditorManagerIntf.RegisterChangeEvent(semWindowDestroy,@SourceWindowDestroyed); + end; +end; + +destructor TAllEditorToolbars.Destroy; +begin + while FToolBars.Count > 0 do + FToolBars[0].Free; + FreeAndNil(FToolBars); + inherited Destroy; +end; + +procedure TAllEditorToolbars.SourceWindowCreated(Sender: TObject); +var + ETB: TEditorToolbar; + Opts: TEditorToolBarOptions; +begin + ETB := TEditorToolbar.Create(Sender as TSourceEditorWindowInterface, Self); + FToolBars.Add(ETB); + Opts := EnvironmentOptions.Desktop.EditorToolBarOptions; + ETB.CopyFromOptions(Opts); + ETB.FToolBar.Visible := Opts.Visible; +end; + +procedure TAllEditorToolbars.SourceWindowDestroyed(Sender: TObject); +var + i: integer; + aBar: TEditorToolbar; +begin + // Let's remove from our list the destroyed window and then destroy the ToolBar + for i:= 0 to FToolBars.Count -1 do + begin + aBar := FToolBars[i]; + if aBar.OwnerWindow = TSourceEditorWindowInterface(Sender) then + begin + FToolBars.Remove(aBar); + aBar.Free; + exit; + end; + end; +end; + +procedure TAllEditorToolbars.DoConfigureEditorToolbar(Sender: TObject); +begin + if Assigned(FConfigEvent) then + FConfigEvent(Sender); +end; + +procedure TAllEditorToolbars.ReloadAll; +var + aBar: TEditorToolbar; + Opts: TEditorToolBarOptions; + i: Integer; +begin + for i := 0 to FToolBars.Count-1 do + begin + aBar := FToolBars[i]; + aBar.ClearToolbar; + Opts := EnvironmentOptions.Desktop.EditorToolBarOptions; + aBar.CopyFromOptions(Opts); + aBar.FToolBar.Visible := Opts.Visible; + end; +end; + + +initialization + ; + +finalization + uAllEditorToolbars.Free; + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/emptymethodsdlg.lfm lazarus-1.6+dfsg/ide/emptymethodsdlg.lfm --- lazarus-1.4.4+dfsg/ide/emptymethodsdlg.lfm 2012-04-13 15:09:17.000000000 +0000 +++ lazarus-1.6+dfsg/ide/emptymethodsdlg.lfm 2015-05-26 11:09:14.000000000 +0000 @@ -1,47 +1,52 @@ object EmptyMethodsDialog: TEmptyMethodsDialog Left = 290 - Height = 421 + Height = 429 Top = 202 - Width = 387 + Width = 634 ActiveControl = PrivateCheckBox + BorderIcons = [biSystemMenu, biMaximize] Caption = 'EmptyMethodsDialog' - ClientHeight = 421 - ClientWidth = 387 + ClientHeight = 429 + ClientWidth = 634 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object ButtonPanel1: TButtonPanel Left = 6 Height = 26 - Top = 389 - Width = 375 + Top = 397 + Width = 622 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True OKButton.OnClick = OKButtonClick HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True HelpButton.Enabled = False CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CloseButton.Enabled = False CancelButton.Name = 'CancelButton' - TabOrder = 0 + CancelButton.DefaultCaption = True + TabOrder = 2 ShowButtons = [pbOK, pbCancel] ShowBevel = False end object MethodsGroupBox: TGroupBox Left = 6 - Height = 261 - Top = 122 - Width = 375 + Height = 259 + Top = 132 + Width = 622 Align = alClient BorderSpacing.Around = 6 Caption = 'MethodsGroupBox' - ClientHeight = 243 - ClientWidth = 371 + ClientHeight = 239 + ClientWidth = 618 TabOrder = 1 inline MethodsSynEdit: TSynEdit Left = 6 - Height = 231 + Height = 227 Top = 6 - Width = 359 + Width = 606 Align = alClient BorderSpacing.Around = 6 Font.Height = -14 @@ -56,50 +61,24 @@ Gutter.Width = 59 Gutter.MouseActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 13 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcOnMainGutterClick end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end> RightGutter.Width = 0 RightGutter.MouseActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 13 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcOnMainGutterClick end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end> Highlighter = SynPasSyn1 Keystrokes = < @@ -425,135 +404,101 @@ end> MouseActions = < item - Shift = [] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 1 + Command = emcStartSelections MoveCaret = True Option = 1 - Priority = 0 end item Shift = [ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssShift, ssAlt] ShiftMask = [ssShift, ssAlt] - Button = mbLeft - ClickCount = ccSingle ClickDir = cdDown - Command = 3 + Command = emcStartColumnSelections MoveCaret = True Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 12 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcContextMenu end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccDouble ClickDir = cdDown - Command = 6 + Command = emcSelectWord MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccTriple ClickDir = cdDown - Command = 7 + Command = emcSelectLine MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccQuad ClickDir = cdDown - Command = 8 + Command = emcSelectPara MoveCaret = True - Option = 0 - Priority = 0 end item - Shift = [] - ShiftMask = [] Button = mbMiddle - ClickCount = ccSingle ClickDir = cdDown - Command = 10 + Command = emcPasteSelection MoveCaret = True - Option = 0 - Priority = 0 end item Shift = [ssCtrl] ShiftMask = [ssShift, ssAlt, ssCtrl] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdUp - Command = 11 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcMouseLink end> + MouseTextActions = <> MouseSelActions = < item - Shift = [] - ShiftMask = [] - Button = mbLeft - ClickCount = ccSingle - ClickDir = cdDown - Command = 9 - MoveCaret = False - Option = 0 - Priority = 0 + ClickDir = cdDown + Command = emcStartDragMove end> Lines.Strings = ( 'MethodsSynEdit' ) + VisibleSpecialChars = [vscSpace, vscTabAtLast] ReadOnly = True + SelectedColor.BackPriority = 50 + SelectedColor.ForePriority = 50 + SelectedColor.FramePriority = 50 + SelectedColor.BoldPriority = 50 + SelectedColor.ItalicPriority = 50 + SelectedColor.UnderlinePriority = 50 + SelectedColor.StrikeOutPriority = 50 BracketHighlightStyle = sbhsBoth + BracketMatchColor.Background = clNone + BracketMatchColor.Foreground = clNone + BracketMatchColor.Style = [fsBold] + FoldedCodeColor.Background = clNone + FoldedCodeColor.Foreground = clGray + FoldedCodeColor.FrameColor = clGray + MouseLinkColor.Background = clNone + MouseLinkColor.Foreground = clBlue + LineHighlightColor.Background = clNone + LineHighlightColor.Foreground = clNone + WantTabs = False inline TSynGutterPartList object TSynGutterMarks Width = 24 + MouseActions = <> end object TSynGutterLineNumber Width = 19 @@ -567,35 +512,28 @@ end object TSynGutterChanges Width = 4 + MouseActions = <> ModifiedColor = 59900 SavedColor = clGreen end object TSynGutterSeparator Width = 2 + MouseActions = <> + MarkupInfo.Background = clWhite + MarkupInfo.Foreground = clGray end object TSynGutterCodeFolding MouseActions = < item - Shift = [] - ShiftMask = [] Button = mbRight - ClickCount = ccSingle - ClickDir = cdUp - Command = 16 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldContextMenu end item - Shift = [] ShiftMask = [ssShift] Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end item Shift = [ssShift] @@ -603,58 +541,36 @@ Button = mbMiddle ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False + Command = emcCodeFoldCollaps Option = 1 - Priority = 0 end item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 0 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcNone end> MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray MouseActionsExpanded = < item - Shift = [] - ShiftMask = [] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 14 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldCollaps end> MouseActionsCollapsed = < item Shift = [ssCtrl] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False - Option = 0 - Priority = 0 + Command = emcCodeFoldExpand end item - Shift = [] ShiftMask = [ssCtrl] - Button = mbLeft ClickCount = ccAny ClickDir = cdDown - Command = 15 - MoveCaret = False + Command = emcCodeFoldExpand Option = 1 - Priority = 0 end> end end @@ -662,9 +578,9 @@ end object SectionsGroupBox: TGroupBox Left = 6 - Height = 110 + Height = 120 Top = 6 - Width = 375 + Width = 622 Align = alTop AutoSize = True BorderSpacing.Around = 6 @@ -674,59 +590,59 @@ ChildSizing.HorizontalSpacing = 15 ChildSizing.Layout = cclTopToBottomThenLeftToRight ChildSizing.ControlsPerLine = 4 - ClientHeight = 92 - ClientWidth = 371 - TabOrder = 2 + ClientHeight = 100 + ClientWidth = 618 + TabOrder = 0 object PrivateCheckBox: TCheckBox Left = 6 - Height = 23 + Height = 25 Top = 6 - Width = 112 + Width = 124 Caption = 'PrivateCheckBox' OnChange = PrivateCheckBoxChange TabOrder = 0 end object ProtectedCheckBox: TCheckBox Left = 6 - Height = 23 - Top = 29 - Width = 112 + Height = 25 + Top = 31 + Width = 124 Caption = 'ProtectedCheckBox' OnChange = PrivateCheckBoxChange TabOrder = 1 end object PublicCheckBox: TCheckBox Left = 6 - Height = 17 - Top = 52 - Width = 112 + Height = 19 + Top = 56 + Width = 124 Caption = 'PublicCheckBox' OnChange = PrivateCheckBoxChange TabOrder = 2 end object PublishedCheckBox: TCheckBox Left = 6 - Height = 17 - Top = 69 - Width = 112 + Height = 19 + Top = 75 + Width = 124 Caption = 'PublishedCheckBox' OnChange = PrivateCheckBoxChange TabOrder = 3 end object AllButton: TButton - Left = 133 - Height = 23 + Left = 145 + Height = 25 Top = 6 - Width = 103 + Width = 114 Caption = 'AllButton' OnClick = AllButtonClick TabOrder = 4 end object PublishedButton: TButton - Left = 133 - Height = 23 - Top = 29 - Width = 103 + Left = 145 + Height = 25 + Top = 31 + Width = 114 Caption = 'PublishedButton' OnClick = PublishedButtonClick TabOrder = 5 @@ -734,17 +650,6 @@ end object SynPasSyn1: TSynPasSyn Enabled = False - AsmAttri.FrameEdges = sfeAround - CommentAttri.FrameEdges = sfeAround - IDEDirectiveAttri.FrameEdges = sfeAround - IdentifierAttri.FrameEdges = sfeAround - KeyAttri.FrameEdges = sfeAround - NumberAttri.FrameEdges = sfeAround - SpaceAttri.FrameEdges = sfeAround - StringAttri.FrameEdges = sfeAround - SymbolAttri.FrameEdges = sfeAround - CaseLabelAttri.FrameEdges = sfeAround - DirectiveAttri.FrameEdges = sfeAround CompilerMode = pcmDelphi NestedComments = False left = 103 diff -Nru lazarus-1.4.4+dfsg/ide/emptymethodsdlg.pas lazarus-1.6+dfsg/ide/emptymethodsdlg.pas --- lazarus-1.4.4+dfsg/ide/emptymethodsdlg.pas 2013-11-30 15:30:19.000000000 +0000 +++ lazarus-1.6+dfsg/ide/emptymethodsdlg.pas 2015-03-10 12:53:11.000000000 +0000 @@ -34,7 +34,7 @@ uses Classes, SysUtils, TypInfo, LCLProc, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, ButtonPanel, SynEdit, SynHighlighterPas, - CodeToolsStructs, CodeAtom, CodeCache, CodeToolManager, PascalParserTool, + CodeToolsStructs, CodeCache, CodeToolManager, PascalParserTool, CodeTree, SrcEditorIntf, LazIDEIntf, PropEdits, IDEDialogs, CustomFormEditor, JitForms, Project, LazarusIDEStrConsts, EditorOptions; @@ -181,7 +181,7 @@ AncestorRoot, AncestorComponent: TComponent; AncestorMethod: TMethod; begin - FillByte(Result, SizeOf(Result), 0); + FillByte(Result{%H-}, SizeOf(Result), 0); if csAncestor in AComponent.ComponentState then begin // search for ancestor component @@ -208,7 +208,7 @@ end; end; - procedure CheckEvents(LookupRoot, AComponent: TComponent); + procedure CheckEvents(AComponent: TComponent); var TypeInfo: PTypeInfo; TypeData: PTypeData; @@ -292,9 +292,9 @@ and (SysUtils.CompareText(LookupRoot.ClassName,CurClassName)=0) then begin PropChanged:=false; - CheckEvents(LookupRoot,LookupRoot); + CheckEvents(LookupRoot); for i:=0 to LookupRoot.ComponentCount-1 do - CheckEvents(LookupRoot,LookupRoot.Components[i]); + CheckEvents(LookupRoot.Components[i]); // update objectinspector if PropChanged and (GlobalDesignHook.LookupRoot=LookupRoot) then GlobalDesignHook.RefreshPropertyValues; diff -Nru lazarus-1.4.4+dfsg/ide/encloseifdef.lfm lazarus-1.6+dfsg/ide/encloseifdef.lfm --- lazarus-1.4.4+dfsg/ide/encloseifdef.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/encloseifdef.lfm 2015-05-24 10:09:20.000000000 +0000 @@ -0,0 +1,183 @@ +object EncloseIfDefForm: TEncloseIfDefForm + Left = 415 + Height = 384 + Top = 298 + Width = 374 + ActiveControl = FirstTest + BorderIcons = [biSystemMenu] + Caption = 'Conditional Defines' + ClientHeight = 384 + ClientWidth = 374 + OnCreate = CondFormCREATE + OnShow = FormShow + Position = poScreenCenter + LCLVersion = '1.5' + object NewTestGroupBox: TGroupBox + Left = 6 + Height = 163 + Top = 6 + Width = 362 + Align = alTop + AutoSize = True + BorderSpacing.Around = 6 + Caption = 'NewTestGroupBox' + ClientHeight = 147 + ClientWidth = 360 + TabOrder = 0 + object FirstLabel: TLabel + Left = 6 + Height = 15 + Top = 6 + Width = 348 + Align = alTop + BorderSpacing.Around = 6 + Caption = '&First test' + ParentColor = False + end + object SecondLabel: TLabel + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 15 + Top = 60 + Width = 348 + Align = alTop + BorderSpacing.Around = 6 + Caption = '&Second test' + ParentColor = False + end + object FirstTest: TComboBox + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 27 + Top = 27 + Width = 348 + Align = alTop + BorderSpacing.Around = 6 + ItemHeight = 0 + ItemIndex = 0 + Items.Strings = ( + 'MSWINDOWS' + 'UNIX' + 'LINUX' + 'WIN32' + 'CLX_' + 'LCL_' + 'VCL_' + 'FPC' + 'KYLIX' + 'VER1_0' + ) + OnChange = TestEditChange + TabOrder = 0 + Text = 'MSWINDOWS' + end + object SecondTest: TComboBox + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 27 + Top = 81 + Width = 348 + Align = alTop + BorderSpacing.Around = 6 + ItemHeight = 0 + ItemIndex = 0 + Items.Strings = ( + 'NONE' + 'ELSE' + ) + OnChange = TestEditChange + TabOrder = 1 + Text = 'NONE' + end + object AddBtn: TBitBtn + AnchorSideTop.Control = SecondTest + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = AddInverse + Left = 108 + Height = 27 + Top = 114 + Width = 75 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Around = 6 + Caption = '&Add' + Constraints.MinHeight = 25 + Constraints.MinWidth = 75 + OnClick = AddBtnClick + TabOrder = 2 + end + object RemoveBtn: TBitBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = SecondTest + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = NewTestGroupBox + AnchorSideRight.Side = asrBottom + Left = 279 + Height = 27 + Top = 114 + Width = 75 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Around = 6 + Caption = '&Remove' + Constraints.MinHeight = 25 + Constraints.MinWidth = 75 + OnClick = RemoveBtnClick + TabOrder = 4 + end + object AddInverse: TBitBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = SecondTest + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = RemoveBtn + Left = 189 + Height = 27 + Top = 114 + Width = 84 + HelpType = htKeyword + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Around = 6 + Caption = 'Add Inverse' + Constraints.MinHeight = 25 + Constraints.MinWidth = 75 + OnClick = AddInverseCLICK + TabOrder = 3 + end + end + object ListBox: TListBox + Left = 6 + Height = 163 + Top = 175 + Width = 362 + Align = alClient + Anchors = [akTop] + BorderSpacing.Around = 6 + ItemHeight = 0 + OnClick = ListBoxClick + OnDblClick = ListBoxDblClick + OnKeyDown = ListBoxKeyDown + ScrollWidth = 360 + TabOrder = 1 + TopIndex = -1 + end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 34 + Top = 344 + Width = 362 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + OKButton.OnClick = OKButtonClick + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CloseButton.OnClick = btnSaveClick + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 2 + ShowBevel = False + end +end diff -Nru lazarus-1.4.4+dfsg/ide/encloseifdef.pas lazarus-1.6+dfsg/ide/encloseifdef.pas --- lazarus-1.4.4+dfsg/ide/encloseifdef.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/encloseifdef.pas 2015-07-04 23:08:00.000000000 +0000 @@ -0,0 +1,449 @@ +{ + /*************************************************************************** + encloseifdef.pas - Conditional Defines + ---------------------------------------- + + ***************************************************************************/ + + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** +} +unit EncloseIfDef; + +{$mode objfpc}{$H+} + +interface + +(* Utility to assist in inserting conditional defines. For example, to convert + OnCreate := @CreateHandler + to: + OnCreate := {$IFDEF FPC} @ {$ENDIF} CreateHandler + select @ and then use Edit, Insert $IFDEF (default shortcut Ctrl+Shift+D), + select "FPC,NONE" and hit return. If you select one or more complete lines + then the conditional defines are put on sepearate lines as in: + {$IFDEF DEBUG} + Writeln('State= ', State) + {$ENDIF} + The choices are listed in abbreviated form so: + MSWINDOWS,UNIX => {$IFDEF MSWINDOWS} ... {$ENDIF} {$IFDEF UNIX} ... {$ENDIF} + FPC,ELSE => {$IFDEF FPC} ... {$ELSE} ... {$ENDIF} + DEBUG,NONE => {$IFDEF DEBUG} ... {$ENDIF} + This tool is most useful when you need to put several identical conditionals + in a file, You can add to the possible conditionals by selecting or typing + the required symbols in "First test" and /or "Second test" and using the + Add button. Your additons are saved in the encloseifdef.xml file in the lazarus + configuration directory. +*) + +uses + Classes, SysUtils, Controls, Forms, StdCtrls, Buttons, ButtonPanel, + LCLProc, LCLType, LazConf, LazFileUtils, Laz2_XMLCfg, LazFileCache, + IDEHelpIntf, LazarusIDEStrConsts; + +type + + { TEncloseIfDefForm } + + TEncloseIfDefForm = class(TForm) + AddBtn: TBitBtn; + AddInverse: TBitBtn; + ButtonPanel1: TButtonPanel; + FirstLabel: TLabel; + FirstTest: TComboBox; + ListBox: TListBox; + NewTestGroupBox: TGroupBox; + RemoveBtn: TBitBtn; + SecondLabel: TLabel; + SecondTest: TComboBox; + procedure AddBtnClick(Sender: TObject); + procedure AddInverseCLICK(Sender: TObject); + procedure btnSaveClick(Sender: TObject); + procedure OKButtonClick(Sender: TObject); + procedure TestEditChange(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); + procedure CondFormCREATE(Sender: TObject); + procedure ListBoxClick(Sender: TObject); + procedure ListBoxDblClick(Sender: TObject); + procedure RemoveBtnClick(Sender: TObject); + procedure ListBoxKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + procedure FormShow(Sender: TObject); + private + StoredChoice, StoredFirst, StoredSecond: string; + FS: string; + function SplitActiveRow(out aFirst, aSecond: string): Boolean; + procedure DeleteSelected; + procedure UpdateButtons; + function IsChanged: Boolean; + procedure SaveIfChanged; + function CreateXMLConfig: TXMLConfig; + end; + + +function EncloseInsideIFDEF(Text: string; IsPascal: Boolean):string; + +implementation + +{$R *.lfm} + +const + XmlRoot = 'encloseifdef/'; + +function ShowEncloseIfDefDlg: string; +var + EncloseIfDefForm: TEncloseIfDefForm; +begin + Result := ''; + EncloseIfDefForm := TEncloseIfDefForm.Create(nil); + try + EncloseIfDefForm.ActiveControl := EncloseIfDefForm.ListBox; + if EncloseIfDefForm.ShowModal = mrOK then + Result := EncloseIfDefForm.FS; + finally + EncloseIfDefForm.Free; + end +end; + +function EncloseInsideIFDEF(Text: string; IsPascal: Boolean):string; +var + cond, s, f: string; + p, p1: Integer; + IsElse, IsTwo, HasNewline: Boolean; + Tail, Indent: string; + + function ifdef(s:string):string; + begin + Result :=''; + if (s <>'') and (s[1] = '!') then begin + if IsPascal then + Result := 'N' + else + Result := 'n'; + s := Copy(s,2,Length(s)-1); + end; + if IsPascal then + Result := '{$IF' + Result + 'DEF ' + s + '}' + else + Result := '#if' + Result + 'def ' + s; + end; + +begin + Result := Text; + cond := ShowEncloseIfDefDlg; + p := Pos(',',cond); + if p <= 0 then Exit; + f := Copy(Cond, 1, p-1); + s := Copy(Cond, p+1, Length(Cond)); + IsElse := CompareText(s, 'ELSE') = 0; + IsTwo := CompareText(s, 'NONE') <> 0; + HasNewline := Pos(#10, Text) > 0; + if HasNewline then begin + p := 1; + { leave leading newlines unchanged (outside $IFDEF) } + while (p <= Length(Text)) and (Text[p] in [#10,#13]) do Inc(p); + Result := Copy(Text,1,p-1); + p1 := p; + { Work out current indentation, to line up $IFDEFS } + while (p <= Length(Text)) and (Text[p] in [#9,' ']) do Inc(p); + Indent := Copy(Text, p1, p-p1); + Text := Copy(Text,p,Length(Text)); + p := Length(Text); + { Tailing whitespace is left outside $IFDEF } + while (p>0) and (Text[p] in [' ',#9,#10,#13]) do Dec(p); + Tail := Copy(Text, p+1, Length(Text)); + SetLength(Text,p); + end else begin + Result := ''; + Tail := ''; + Indent := ''; + end; + if IsPascal then begin + f := ifdef(f); + s := ifdef(s); + if HasNewline then begin + Result := Result + Indent + f + LineEnding + Indent + Text + LineEnding; + if IsElse then + Result := Result + Indent + '{$ELSE}' + LineEnding + else begin + Result := Result + Indent + '{$ENDIF}'; + if IsTwo then + Result := Result + LineEnding + Indent + s + LineEnding; + end; + if IsTwo then + Result := Result + Indent + Text + LineEnding + Indent + '{$ENDIF}'; + Result := Result + Tail; + end else begin + Result := Result + f + ' ' + Text; + if IsElse then + Result := Result + ' {$ELSE} ' + else begin + Result := Result + ' {$ENDIF}'; + if IsTwo then + Result := Result + ' ' + s + ' '; + end; + if IsTwo then + Result := Result + Text + ' {$ENDIF}'; + end; + end else begin + Result := Result + ifdef(f) + LineEnding + indent + Text + LineEnding; + if IsElse then + Result := Result + '#else' + LineEnding + else begin + Result := Result + '#endif /* ' + f + ' */' + LineEnding; + if IsTwo then + Result := Result + ifdef(s) + LineEnding; + end; + if IsTwo then begin + Result := Result + indent + Text + LineEnding + '#endif /* '; + if IsElse then + Result := Result + f + else + Result := Result + s; + Result := Result + ' */' + LineEnding; + end; + Result := Result + Tail; + end; +end; + +{ TEncloseIfDefForm } + +procedure TEncloseIfDefForm.CondFormCREATE(Sender: TObject); +var + i: Integer; + XMLConfig: TXMLConfig; +begin + NewTestGroupBox.Caption := rsCreateNewDefine; + Caption := rsConditionalDefines; + FirstLabel.Caption := lisFirstTest; + SecondLabel.Caption := lisSecondTest; + AddBtn.Caption := lisBtnAdd; + AddBtn.LoadGlyphFromResourceName(HInstance, 'laz_add'); + AddInverse.Caption := rsAddInverse; + AddInverse.LoadGlyphFromResourceName(HInstance, 'pkg_issues'); + RemoveBtn.Caption := lisBtnRemove; + RemoveBtn.LoadGlyphFromResourceName(HInstance, 'laz_delete'); + ButtonPanel1.CloseButton.Caption := lisSave; + ButtonPanel1.OKButton.Caption := lisOk; + //ButtonPanel1.CloseButton.LoadGlyphFromStock(idButtonSave); + //if btnSave.Glyph.Empty then + // btnSave.LoadGlyphFromResourceName(HInstance, 'laz_save'); + try + XMLConfig:=CreateXMLConfig; + try + StoredChoice := XMLConfig.GetValue(XmlRoot + 'Choice', + '"MSWINDOWS,UNIX","MSWINDOWS,ELSE","FPC,NONE","FPC,ELSE","DEBUG,NONE"'); + StoredFirst := XMLConfig.GetValue(XmlRoot + 'First', 'MSWINDOWS'); + StoredSecond := XMLConfig.GetValue(XmlRoot + 'Second', 'UNIX'); + finally + XMLConfig.Free; + end; + except + on E: Exception do begin + debugln('TCondForm.CondFormCREATE ',E.Message); + end; + end; + with ListBox do begin + Items.CommaText := StoredChoice; + i := Items.IndexOf(StoredFirst+','+StoredSecond); + if i < 0 then begin + Items.Add(StoredFirst+','+StoredSecond); + ItemIndex := 0; + end else + ItemIndex := i; + end; +end; + +procedure TEncloseIfDefForm.FormShow(Sender: TObject); +begin + if SecondTest.Items.Count < 10 then + SecondTest.Items.AddStrings(FirstTest.Items); + ListBoxClick(Nil); +end; + +function TEncloseIfDefForm.SplitActiveRow(out aFirst, aSecond: string): Boolean; +var + i: integer; + Line: string; +begin + Result := False; + aFirst := ''; + aSecond := ''; + with ListBox do + if ItemIndex >= 0 then begin + Line := Items[ItemIndex]; + i := Pos(',', Line); + if i > 0 then begin + Result := True; + aFirst := Copy(Line, 1, i-1); + aSecond := Copy(Line, i+1, Length(Line)); + end + end; +end; + +procedure TEncloseIfDefForm.AddBtnClick(Sender: TObject); +begin + ListBox.Items.Add(FirstTest.Text+','+SecondTest.Text); + ListBox.ItemIndex := ListBox.Items.Count-1; + UpdateButtons; +end; + +procedure TEncloseIfDefForm.AddInverseCLICK(Sender: TObject); +begin + ListBox.Items.Add('!'+FirstTest.Text+','+SecondTest.Text); + ListBox.ItemIndex := ListBox.Items.Count-1; + UpdateButtons; +end; + +procedure TEncloseIfDefForm.TestEditChange(Sender: TObject); +begin + UpdateButtons; +end; + +procedure TEncloseIfDefForm.btnSaveClick(Sender: TObject); +begin + SaveIfChanged; + Close; +end; + +procedure TEncloseIfDefForm.OKButtonClick(Sender: TObject); +begin + SaveIfChanged; + with ListBox do + FS := Items[ItemIndex]; // Return selected row to caller. +end; + +procedure TEncloseIfDefForm.HelpButtonClick(Sender: TObject); +begin + LazarusHelp.ShowHelpForIDEControl(Self); +end; + +procedure TEncloseIfDefForm.ListBoxClick(Sender: TObject); +var + ff, ss: string; +begin + if SplitActiveRow(ff, ss) then begin + FirstTest.Text := ff; + SecondTest.Text := ss; + UpdateButtons; + end; +end; + +procedure TEncloseIfDefForm.ListBoxDblClick(Sender: TObject); +begin + ModalResult := mrOK; +end; + +procedure TEncloseIfDefForm.RemoveBtnClick(Sender: TObject); +begin + DeleteSelected; +end; + +procedure TEncloseIfDefForm.ListBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +begin + if Key = VK_DELETE then begin + DeleteSelected; + Key := 0; + end; +end; + +procedure TEncloseIfDefForm.DeleteSelected; +var + i: Integer; +begin + with ListBox.Items do + for i := Count-1 downto 0 do + if ListBox.Selected[i] then begin + Delete(i); + UpdateButtons; + end; +end; + +procedure TEncloseIfDefForm.UpdateButtons; +var + s: string; +begin + s := FirstTest.Text+','+SecondTest.Text; + AddBtn.Enabled := (FirstTest.Text <> '') and (ListBox.Items.IndexOf(s) = -1); + s := '!' + s; + AddInverse.Enabled := (FirstTest.Text <> '') + and (FirstTest.Text[1] <> '!') + and (ListBox.Items.IndexOf(s) = -1); + RemoveBtn.Enabled := ListBox.SelCount > 0; + ButtonPanel1.CloseButton.Enabled := IsChanged; + ButtonPanel1.OKButton.Enabled := ListBox.SelCount > 0; +end; + +function TEncloseIfDefForm.IsChanged: Boolean; +var + ff, ss: string; +begin + if StoredChoice <> ListBox.Items.CommaText then + Exit(True); + if SplitActiveRow(ff, ss) then begin + if StoredFirst <> ff then + Exit(True); + if StoredSecond <> ss then + Exit(True); + end; + Result := False; +end; + +procedure TEncloseIfDefForm.SaveIfChanged; +var + ff, ss: string; + XMLConfig: TXMLConfig; +begin + if ButtonPanel1.CloseButton.Enabled then // enabled only if there are changes + try + SplitActiveRow(ff, ss); + InvalidateFileStateCache; + XMLConfig:=CreateXMLConfig; + try + XMLConfig.SetValue(XmlRoot + 'Choice', ListBox.Items.CommaText); + XMLConfig.SetValue(XmlRoot + 'First', ff); + XMLConfig.SetValue(XmlRoot + 'Second', ss); + XMLConfig.Flush; + finally + XMLConfig.Free; + end; + except + on E: Exception do begin + debugln('TCondForm.SaveIfChanged ',E.Message); + end; + end; +end; + +function TEncloseIfDefForm.CreateXMLConfig: TXMLConfig; +var + ConfFileName: String; +begin + Result:=nil; + ConfFileName:=SetDirSeparators(GetPrimaryConfigPath+'/encloseifdef.xml'); + try + if (not FileExistsUTF8(ConfFileName)) then + Result:=TXMLConfig.CreateClean(ConfFileName) + else + Result:=TXMLConfig.Create(ConfFileName); + except + on E: Exception do begin + debugln('TCondForm.CreateXMLConfig ',E.Message); + end; + end; +end; + +end. diff -Nru lazarus-1.4.4+dfsg/ide/encloseselectiondlg.lfm lazarus-1.6+dfsg/ide/encloseselectiondlg.lfm --- lazarus-1.4.4+dfsg/ide/encloseselectiondlg.lfm 2009-04-03 07:17:32.000000000 +0000 +++ lazarus-1.6+dfsg/ide/encloseselectiondlg.lfm 2015-05-24 10:09:20.000000000 +0000 @@ -8,10 +8,10 @@ ClientWidth = 331 OnCreate = EncloseSelectionDialogCREATE Position = poScreenCenter - LCLVersion = '0.9.27' + LCLVersion = '1.5' object TypeRadiogroup: TRadioGroup Left = 6 - Height = 200 + Height = 194 Top = 6 Width = 319 Align = alClient @@ -31,9 +31,17 @@ end object ButtonPanel: TButtonPanel Left = 6 - Height = 26 - Top = 212 + Height = 32 + Top = 206 Width = 319 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 1 ShowButtons = [pbOK, pbCancel] ShowBevel = False diff -Nru lazarus-1.4.4+dfsg/ide/encloseselectiondlg.pas lazarus-1.6+dfsg/ide/encloseselectiondlg.pas --- lazarus-1.4.4+dfsg/ide/encloseselectiondlg.pas 2014-07-18 07:58:57.000000000 +0000 +++ lazarus-1.6+dfsg/ide/encloseselectiondlg.pas 2015-03-10 15:59:16.000000000 +0000 @@ -35,9 +35,9 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, Buttons, + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Buttons, ExtCtrls, BasicCodeTools, CodeToolManager, SourceChanger, - LazarusIDEStrConsts, LazConf, IDEProcs, ButtonPanel; + LazarusIDEStrConsts, LazConf, LazUTF8, IDEProcs, ButtonPanel; type TEncloseSelectionType = ( @@ -62,16 +62,15 @@ function GetEncloseType: TEncloseSelectionType; end; -function ShowEncloseSelectionDialog(var TheType: TEncloseSelectionType +function ShowEncloseSelectionDialog(out TheType: TEncloseSelectionType ): TModalResult; function EncloseSelectionTypeDescription(TheType: TEncloseSelectionType ): string; procedure GetEncloseSelectionParams(TheType: TEncloseSelectionType; - var Template: string); + out Template: string); procedure EncloseTextSelection(const Template: string; Source: TStrings; SelectionStart, SelectionEnd: TPoint; - Indent: integer; - var NewSelection: string; var NewCursor: TPoint); + out NewSelection: string; out NewCursor: TPoint); implementation @@ -94,11 +93,12 @@ end; end; -function ShowEncloseSelectionDialog(var TheType: TEncloseSelectionType +function ShowEncloseSelectionDialog(out TheType: TEncloseSelectionType ): TModalResult; var TheDialog: TEncloseSelectionDialog; begin + TheType:=estBeginEnd; TheDialog:=TEncloseSelectionDialog.Create(nil); Result:=TheDialog.ShowModal; if Result=mrOk then @@ -106,8 +106,8 @@ TheDialog.Free; end; -procedure GetEncloseSelectionParams(TheType: TEncloseSelectionType; - var Template: string); +procedure GetEncloseSelectionParams(TheType: TEncloseSelectionType; out + Template: string); begin case TheType of estTryFinally: @@ -160,11 +160,8 @@ end; procedure EncloseTextSelection(const Template: string; Source: TStrings; - SelectionStart, SelectionEnd: TPoint; - Indent: integer; - var NewSelection: string; var NewCursor: TPoint); -const - TemplateBaseIndent = 2; + SelectionStart, SelectionEnd: TPoint; out NewSelection: string; out + NewCursor: TPoint); var TemplateLen: Integer; TemplatePos: Integer; @@ -336,6 +333,8 @@ begin //debugln(['EncloseTextSelection A ',SelectionStart.X,',',SelectionStart.Y,'-',SelectionEnd.X,',',SelectionEnd.Y,' indent=',Indent,' Template="',Template,'"']); + NewSelection:=''; + NewCursor:=Point(0,0); CutLastLineBreak:=true; if (SelectionEnd.X=1) and (SelectionEnd.Y>SelectionStart.Y) then begin CutLastLineBreak:=false; diff -Nru lazarus-1.4.4+dfsg/ide/environmentopts.pp lazarus-1.6+dfsg/ide/environmentopts.pp --- lazarus-1.4.4+dfsg/ide/environmentopts.pp 2015-10-03 16:09:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/environmentopts.pp 2015-11-28 19:42:00.000000000 +0000 @@ -37,20 +37,22 @@ {$ifdef Windows} ShlObj, {$endif} - Classes, SysUtils, TypInfo, Graphics, Controls, Forms, LCLProc, FileProcs, - Dialogs, LazConfigStorage, Laz2_XMLCfg, LazUTF8, + Classes, SysUtils, TypInfo, contnrs, Graphics, Controls, Forms, Dialogs, + LCLProc, FileProcs, LazFileUtils, LazFileCache, LazConfigStorage, + Laz2_XMLCfg, LazUTF8, SourceChanger, // IDEIntf ProjectIntf, ObjectInspector, IDEWindowIntf, IDEOptionsIntf, - ComponentReg, IDEExternToolIntf, MacroDefIntf, - DbgIntfDebuggerBase, + ComponentReg, IDEExternToolIntf, MacroDefIntf, DbgIntfDebuggerBase, // IDE IDEProcs, DialogProcs, LazarusIDEStrConsts, IDETranslations, LazConf, - IDEOptionDefs, TransferMacros, ModeMatrixOpts, Debugger; + IDEOptionDefs, TransferMacros, ModeMatrixOpts, Debugger, + IdeCoolbarData, EditorToolbarStatic; const - EnvOptsVersion: integer = 108; + EnvOptsVersion: integer = 109; // 107 added Lazarus version // 108 added LastCalledByLazarusFullPath + // 109 changed paths for desktop settings, supporting multiple desktops. {$IFDEF Windows} DefaultMakefilename = '$Path($(CompPath))make.exe'; @@ -67,6 +69,14 @@ DefaultMaxRecentProjectFiles = 5; DefaultMaxRecentPackageFiles = 10; + DefaultAutoSaveIntervalInSecs = 300; + + DefaultRubberbandSelectsGrandChilds = false; + DefaultGridColor = clBlack; + DefaultGridSize = 8; + DefaultGuideLineColorLeftTop = clBlue; + DefaultGuideLineColorRightBottom = clGreen; + //---------------------------------------------------------------------------- { Backup } @@ -174,6 +184,20 @@ 'Never' ); +type + TIDEMultipleInstancesOption = ( + mioAlwaysStartNew, + mioOpenFilesInRunning, + mioForceSingleInstance + ); +const + IDEMultipleInstancesOptionNames: array[TIDEMultipleInstancesOption] of string = ( + 'AlwaysStartNew', // mioAlwaysStartNew + 'OpenFilesInRunning', // mioOpenFilesInRunning + 'ForceSingleInstance' // mioForceSingleInstance + ); + DefaultIDEMultipleInstancesOption = mioOpenFilesInRunning; + { Messages window } type TMsgWndFileNameStyle = ( @@ -194,7 +218,8 @@ mwRunning, mwSuccess, mwFailed, - mwAutoHeader + mwAutoHeader, + mwTextColor ); const MsgWndDefBackgroundColor = clWindow; @@ -202,20 +227,23 @@ MsgWndDefHeaderBackgroundSuccess = TColor($60FF60); // light green MsgWndDefHeaderBackgroundFailed = TColor($6060FF); // light red MsgWndDefAutoHeaderBackground = clSkyBlue; + MsgWndDefTextColor = clDefault; MsgWndDefaultColors: array[TMsgWndColor] of TColor = ( MsgWndDefBackgroundColor, // mwBackground MsgWndDefHeaderBackgroundRunning, // mwRunning MsgWndDefHeaderBackgroundSuccess, // mwSuccess MsgWndDefHeaderBackgroundFailed, // mwFailed - MsgWndDefAutoHeaderBackground // mwAutoHeader + MsgWndDefAutoHeaderBackground, // mwAutoHeader + MsgWndDefTextColor ); MsgWndColorNames: array[TMsgWndColor] of string = ( 'Background', 'Running', 'Success', 'Failed', - 'AutoHeader' + 'AutoHeader', + 'TextColor' ); { External Tools - the user menu items in the Tools menu } @@ -246,13 +274,114 @@ type + TLastOpenPackagesList = class(TStringList) + public + function Remove(const aString: string): Boolean; + constructor Create; + end; + + { TDesktopOpt } + + TDesktopOpt = class + private + FName: String; + FIsDocked: Boolean; + FXMLCfg: TRttiXMLConfig; + FConfigStore: TXMLOptionsStorage; + // window layout + FIDEWindowCreatorsLayoutList: TSimpleWindowLayoutList; + FIDEDialogLayoutList: TIDEDialogLayoutList; + FSingleTaskBarButton: boolean; + FHideIDEOnRun: boolean; + FAutoAdjustIDEHeight: boolean; + FAutoAdjustIDEHeightFullCompPal: boolean; + // window menu + FIDENameForDesignedFormList: boolean; + // CompletionWindow + FCompletionWindowWidth: Integer; + FCompletionWindowHeight: Integer; + // title + FIDETitleStartsWithProject: boolean; + FIDETitleIncludesBuildMode: boolean; + FIDEProjectDirectoryInIdeTitle: boolean; + // IDE Coolbar + FIDECoolBarOptions: TIDECoolBarOptions; + // Editor Toolbar + FEditorToolBarOptions: TEditorToolBarOptions; + // component palette + FComponentPaletteOptions: TCompPaletteOptions; + + //Docking options + FDockedOpt: TAbstractDesktopDockingOpt; + + function GetCompatible: Boolean; + procedure InitLayoutList; + public + constructor Create(const aName: String); + constructor Create(const aName: String; const aIsDocked: Boolean); + destructor Destroy; override; + procedure Assign(Source: TDesktopOpt; const AssignName: Boolean = False); + public + procedure SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage); + procedure Load(Path: String); + procedure Save(Path: String); + procedure ImportSettingsFromIDE; + procedure ExportSettingsToIDE; + procedure RestoreDesktop; + + property Name: String read FName write FName; + property IDEWindowCreatorsLayoutList: TSimpleWindowLayoutList read FIDEWindowCreatorsLayoutList write FIDEWindowCreatorsLayoutList; + property IDEDialogLayoutList: TIDEDialogLayoutList read FIDEDialogLayoutList; + property SingleTaskBarButton: boolean read FSingleTaskBarButton write FSingleTaskBarButton; + property HideIDEOnRun: boolean read FHideIDEOnRun write FHideIDEOnRun; + property AutoAdjustIDEHeight: Boolean read FAutoAdjustIDEHeight write FAutoAdjustIDEHeight; + property AutoAdjustIDEHeightFullCompPal: Boolean read FAutoAdjustIDEHeightFullCompPal + write FAutoAdjustIDEHeightFullCompPal; + property IDENameForDesignedFormList: boolean read FIDENameForDesignedFormList + write FIDENameForDesignedFormList; + property CompletionWindowWidth: Integer read FCompletionWindowWidth write FCompletionWindowWidth; + property CompletionWindowHeight: Integer read FCompletionWindowHeight write FCompletionWindowHeight; + property IDETitleStartsWithProject: boolean read FIDETitleStartsWithProject + write FIDETitleStartsWithProject; + property IDETitleIncludesBuildMode: boolean read FIDETitleIncludesBuildMode + write FIDETitleIncludesBuildMode; + property IDEProjectDirectoryInIdeTitle: boolean read FIDEProjectDirectoryInIdeTitle + write FIDEProjectDirectoryInIdeTitle; + property IDECoolBarOptions: TIDECoolBarOptions read FIDECoolBarOptions; + property EditorToolBarOptions: TEditorToolBarOptions read FEditorToolBarOptions; + property ComponentPaletteOptions: TCompPaletteOptions read FComponentPaletteOptions; + property IsDocked: Boolean read FIsDocked; + property Compatible: Boolean read GetCompatible; + end; + + TEnvironmentOptions = class; + + { TDesktopOptList } + + TDesktopOptList = class(TObjectList) + private + FXMLCfg: TRttiXMLConfig; + FConfigStore: TXMLOptionsStorage; + FEnvOpts: TEnvironmentOptions; + function GetItem(Index: Integer): TDesktopOpt; + procedure SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage); + public + constructor Create(aEnvOpts: TEnvironmentOptions); + destructor Destroy; override; + procedure AddFromCfg(Path: String); + function IndexOf(aName: string): integer; + function Find(aName: string): TDesktopOpt; + property Items[Index: Integer]: TDesktopOpt read GetItem; default; + end; + { TEnvironmentOptions - class for storing environment options } - TEnvironmentOptions = class(TAbstractIDEEnvironmentOptions) + TEnvironmentOptions = class(TIDEEnvironmentOptions) private // config file FFilename: string; FFileAge: longint; + FFileVersion: integer; FFileHasChangedOnDisk: boolean; FMaxExtToolsInParallel: integer; FOldLazarusVersion: string; @@ -260,16 +389,7 @@ FConfigStore: TXMLOptionsStorage; FDbgConfigStore: TXMLOptionsStorage; // for debugger - // title - FIDETitleStartsWithProject: boolean; - FIDETitleIncludesBuildMode: boolean; - FIDEProjectDirectoryInIdeTitle: boolean; - - // window menu - FIDENameForDesignedFormList: boolean; - // main buttons - FIDESpeedButtonsVisible: boolean; FShowButtonGlyphs: TApplicationShowGlyphs; FShowMenuGlyphs: TApplicationShowGlyphs; @@ -278,18 +398,7 @@ FAutoSaveProject: boolean; FAutoSaveIntervalInSecs: integer; FLastSavedProjectFile: string; - - // window layout - FIDEDialogLayoutList: TIDEDialogLayoutList; - FSingleTaskBarButton: boolean; - FHideIDEOnRun: boolean; - FComponentPaletteVisible: boolean; - // CompletionWindow - FCompletionWindowWidth: Integer; - FCompletionWindowHeight: Integer; - - // component palette - FComponentPaletteOptions: TCompPaletteOptions; + FLastOpenPackages: TLastOpenPackagesList;//list of filenames with open packages // designer FCreateComponentFocusNameProperty: boolean; @@ -318,7 +427,6 @@ // object inspector FObjectInspectorOptions: TOIOptions; - // project inspector FProjInspSortAlphabetically: boolean; FProjInspShowDirHierarchy: boolean; @@ -342,9 +450,11 @@ FMsgViewAlwaysDrawFocused: boolean; FMsgViewFilenameStyle: TMsgWndFileNameStyle; fMsgViewColors: array[TMsgWndColor] of TColor; + fMsgColors: array[TMessageLineUrgency] of TColor; FShowCompileDialog: Boolean; // show dialog during compile FAutoCloseCompileDialog: Boolean; // auto close dialog after succesed compile FMsgViewFilters: TLMsgViewFilters; + FMsgViewShowFPCMsgLinesCompiled: Boolean; // compiler + debugger + lazarus files FParseValues: array[TEnvOptParseType] of TParseString; @@ -389,9 +499,13 @@ FRecentPackageFiles: TStringList; FMaxRecentPackageFiles: integer; FOpenLastProjectAtStart: boolean; + FMultipleInstances: TIDEMultipleInstancesOption; // Prevent repopulating Recent project files menu with example projects if it was already cleared up. FAlreadyPopulatedRecentFiles : Boolean; + //other recent settings + FLastEventMethodSectionPrompt: TInsertClassSectionResult; + // backup FBackupInfoProjectFiles: TBackupInfo; FBackupInfoOtherFiles: TBackupInfo; @@ -401,7 +515,7 @@ // naming conventions fPascalFileExtension: TPascalExtType; - fCharcaseFileAction : TCharCaseFileAction; + fCharcaseFileAction: TCharCaseFileAction; fAmbiguousFileAction: TAmbiguousFileAction; FUnitRenameReferencesAction: TUnitRenameReferencesAction; FAskForFilenameOnNewFile: boolean; @@ -415,8 +529,18 @@ FNewUnitTemplate: string; FFileDialogFilter: string; + // Desktop + FDesktops: TDesktopOptList; + FDesktop: TDesktopOpt; + FLastDesktopBeforeDebug: TDesktopOpt; + FActiveDesktopName: string; + FAutoSaveActiveDesktop: Boolean; + FDebugDesktopName: string; + + function GetActiveDesktop: TDesktopOpt; function GetCompilerFilename: string; function GetCompilerMessagesFilename: string; + function GetDebugDesktop: TDesktopOpt; function GetDebuggerEventLogColors(AIndex: TDBGEventType): TDebuggerEventLogColor; function GetDebuggerFilename: string; function GetDebuggerSearchPath: string; @@ -424,8 +548,11 @@ function GetFPDocPaths: string; function GetLazarusDirectory: string; function GetMakeFilename: string; + function GetMsgColors(u: TMessageLineUrgency): TColor; function GetMsgViewColors(c: TMsgWndColor): TColor; function GetTestBuildDirectory: string; + procedure LoadNonDesktop(Path: String); + procedure SaveNonDesktop(Path: String); procedure SetCompilerFilename(const AValue: string); procedure SetCompilerMessagesFilename(AValue: string); procedure SetDebuggerEventLogColors(AIndex: TDBGEventType; @@ -436,13 +563,13 @@ procedure SetDebuggerFilename(AValue: string); procedure SetFPCSourceDirectory(const AValue: string); procedure SetLazarusDirectory(const AValue: string); + procedure SetMsgColors(u: TMessageLineUrgency; AValue: TColor); procedure SetMsgViewColors(c: TMsgWndColor; AValue: TColor); procedure SetParseValue(o: TEnvOptParseType; const NewValue: string); - procedure InitLayoutList; procedure SetFileName(const NewFilename: string); function FileHasChangedOnDisk: boolean; - function GetXMLCfg(CleanConfig: boolean): TXMLConfig; + procedure InitXMLCfg(CleanConfig: boolean); procedure FileUpdated; procedure SetTestBuildDirectory(const AValue: string); public @@ -488,41 +615,18 @@ function MacroFuncConfDir(const {%H-}s:string; const {%H-}Data: PtrInt; var {%H-}Abort: boolean): string; + procedure UseDesktop(ADesktop: TDesktopOpt); + procedure EnableDebugDesktop; + procedure DisableDebugDesktop; + class function DesktopCanBeLoaded(const aDockMaster: string): Boolean; + // auto save // ask even if only project session needs saving property AskSaveSessionOnly: boolean read FAskSaveSessionOnly write FAskSaveSessionOnly; - // property AutoSaveEditorFiles: boolean read FAutoSaveEditorFiles write FAutoSaveEditorFiles; property AutoSaveProject: boolean read FAutoSaveProject write FAutoSaveProject; property AutoSaveIntervalInSecs: integer read FAutoSaveIntervalInSecs write FAutoSaveIntervalInSecs; - // window layouts - property IDEDialogLayoutList: TIDEDialogLayoutList read FIDEDialogLayoutList; - property SingleTaskBarButton: boolean read FSingleTaskBarButton - write FSingleTaskBarButton; - property HideIDEOnRun: boolean read FHideIDEOnRun write FHideIDEOnRun; - property IDETitleStartsWithProject: boolean read FIDETitleStartsWithProject - write FIDETitleStartsWithProject; - property IDETitleIncludesBuildMode: boolean read FIDETitleIncludesBuildMode - write FIDETitleIncludesBuildMode; - property IDEProjectDirectoryInIdeTitle: boolean read FIDEProjectDirectoryInIdeTitle - write FIDEProjectDirectoryInIdeTitle; - property ComponentPaletteVisible: boolean read FComponentPaletteVisible - write FComponentPaletteVisible; - property IDESpeedButtonsVisible: boolean read FIDESpeedButtonsVisible - write FIDESpeedButtonsVisible; - - property CompletionWindowWidth: Integer read FCompletionWindowWidth - write FCompletionWindowWidth; - property CompletionWindowHeight: Integer read FCompletionWindowHeight - write FCompletionWindowHeight; - - // window menu list - property IDENameForDesignedFormList: boolean read FIDENameForDesignedFormList - write FIDENameForDesignedFormList; - // component palette - property ComponentPaletteOptions: TCompPaletteOptions read FComponentPaletteOptions; - // form editor property ShowBorderSpacing: boolean read FShowBorderSpacing write FShowBorderSpacing; property ShowGrid: boolean read FShowGrid write FShowGrid; @@ -560,22 +664,19 @@ write FCreateComponentFocusNameProperty; property SwitchToFavoritesOITab: boolean read FSwitchToFavoritesOITab write FSwitchToFavoritesOITab; - // object inspector property ObjectInspectorOptions: TOIOptions read FObjectInspectorOptions; // project inspector property ProjInspSortAlphabetically: boolean read FProjInspSortAlphabetically - write FProjInspSortAlphabetically; + write FProjInspSortAlphabetically; property ProjInspShowDirHierarchy: boolean read FProjInspShowDirHierarchy - write FProjInspShowDirHierarchy; - + write FProjInspShowDirHierarchy; // package editor property PackageEditorSortAlphabetically: boolean read FPackageEditorSortAlphabetically - write FPackageEditorSortAlphabetically; + write FPackageEditorSortAlphabetically; property PackageEditorShowDirHierarchy: boolean read FPackageEditorShowDirHierarchy - write FPackageEditorShowDirHierarchy; - + write FPackageEditorShowDirHierarchy; // hints property CheckDiskChangesWithLoading: boolean read FCheckDiskChangesWithLoading write FCheckDiskChangesWithLoading; @@ -583,35 +684,25 @@ write FShowHintsForComponentPalette; property ShowHintsForMainSpeedButtons: boolean read FShowHintsForMainSpeedButtons write FShowHintsForMainSpeedButtons; - // files - property LazarusDirectory: string read GetLazarusDirectory - write SetLazarusDirectory; - property LazarusDirHistory: TStringList read FLazarusDirHistory - write FLazarusDirHistory; - property CompilerFilename: string read GetCompilerFilename - write SetCompilerFilename; - property CompilerFileHistory: TStringList read FCompilerFileHistory - write FCompilerFileHistory; - property FPCSourceDirectory: string read GetFPCSourceDirectory - write SetFPCSourceDirectory; + property LazarusDirectory: string read GetLazarusDirectory write SetLazarusDirectory; + property LazarusDirHistory: TStringList read FLazarusDirHistory write FLazarusDirHistory; + property CompilerFilename: string read GetCompilerFilename write SetCompilerFilename; + property CompilerFileHistory: TStringList read FCompilerFileHistory write FCompilerFileHistory; + property FPCSourceDirectory: string read GetFPCSourceDirectory write SetFPCSourceDirectory; property FPCSourceDirHistory: TStringList read FFPCSourceDirHistory; property MakeFilename: string read GetMakeFilename write SetMakeFilename; property MakeFileHistory: TStringList read FMakeFileHistory; property DebuggerFilename: string read GetDebuggerFilename write SetDebuggerFilename; property DebuggerFileHistory: TStringList read FDebuggerFileHistory; - property DebuggerSearchPath: string read GetDebuggerSearchPath - write SetDebuggerSearchPath; - property DebuggerShowStopMessage: boolean read FDebuggerShowStopMessage - write FDebuggerShowStopMessage; - property DebuggerResetAfterRun: boolean read FDebuggerResetAfterRun - write FDebuggerResetAfterRun; - property ShowCompileDialog: boolean read FShowCompileDialog - write FShowCompileDialog; - property AutoCloseCompileDialog: boolean read FAutoCloseCompileDialog - write FAutoCloseCompileDialog; - property TestBuildDirectory: string read GetTestBuildDirectory - write SetTestBuildDirectory; + property DebuggerSearchPath: string read GetDebuggerSearchPath write SetDebuggerSearchPath; + property DebuggerShowStopMessage: boolean read FDebuggerShowStopMessage write FDebuggerShowStopMessage; + property DebuggerResetAfterRun: boolean read FDebuggerResetAfterRun write FDebuggerResetAfterRun; + // ShowCompileDialog and AutoCloseCompileDialog are currently not used. + // But maybe someone will implement them again. Keep them till 1.4.2 + property ShowCompileDialog: boolean read FShowCompileDialog write FShowCompileDialog; + property AutoCloseCompileDialog: boolean read FAutoCloseCompileDialog write FAutoCloseCompileDialog; + property TestBuildDirectory: string read GetTestBuildDirectory write SetTestBuildDirectory; property TestBuildDirHistory: TStringList read FTestBuildDirHistory; property CompilerMessagesFilename: string read GetCompilerMessagesFilename write SetCompilerMessagesFilename; // non English translation file @@ -648,34 +739,41 @@ property RecentOpenFiles: TStringList read FRecentOpenFiles; property MaxRecentOpenFiles: integer read FMaxRecentOpenFiles write FMaxRecentOpenFiles; - procedure AddToRecentOpenFiles(const AFilename: string); - procedure RemoveFromRecentOpenFiles(const AFilename: string); + procedure AddToRecentOpenFiles(const AFilename: string); override; + procedure RemoveFromRecentOpenFiles(const AFilename: string); override; property RecentProjectFiles: TStringList read FRecentProjectFiles; property MaxRecentProjectFiles: integer read FMaxRecentProjectFiles write FMaxRecentProjectFiles; - procedure AddToRecentProjectFiles(const AFilename: string); - procedure RemoveFromRecentProjectFiles(const AFilename: string); + procedure AddToRecentProjectFiles(const AFilename: string); override; + procedure RemoveFromRecentProjectFiles(const AFilename: string); override; property RecentPackageFiles: TStringList read FRecentPackageFiles; property MaxRecentPackageFiles: integer read FMaxRecentPackageFiles write FMaxRecentPackageFiles; + procedure AddToRecentPackageFiles(const AFilename: string); override; + procedure RemoveFromRecentPackageFiles(const AFilename: string); override; property LastSavedProjectFile: string read FLastSavedProjectFile write FLastSavedProjectFile; { if empty then create new project, if '-' then do not load/create any project } + property LastOpenPackages: TLastOpenPackagesList read FLastOpenPackages; property OpenLastProjectAtStart: boolean read FOpenLastProjectAtStart write FOpenLastProjectAtStart; + property MultipleInstances: TIDEMultipleInstancesOption read FMultipleInstances + write FMultipleInstances; property FileDialogFilter: string read FFileDialogFilter write FFileDialogFilter; + // other recent settings + property LastEventMethodSectionPrompt: TInsertClassSectionResult + read FLastEventMethodSectionPrompt write FLastEventMethodSectionPrompt; + // backup property BackupInfoProjectFiles: TBackupInfo read FBackupInfoProjectFiles write FBackupInfoProjectFiles; property BackupInfoOtherFiles: TBackupInfo read FBackupInfoOtherFiles write FBackupInfoOtherFiles; - // external tools property ExternalToolMenuItems: TBaseExternalUserTools read fExternalUserTools; property MaxExtToolsInParallel: integer read FMaxExtToolsInParallel write FMaxExtToolsInParallel; // 0=automatic - // naming conventions property PascalFileExtension: TPascalExtType read fPascalFileExtension write fPascalFileExtension; @@ -690,7 +788,6 @@ write FAskForFilenameOnNewFile; property LowercaseDefaultFilename: boolean read FLowercaseDefaultFilename write FLowercaseDefaultFilename; - // fpdoc property FPDocPaths: string read GetFPDocPaths write SetFPDocPaths; @@ -712,6 +809,8 @@ write FMsgViewFilenameStyle; property MsgViewColors[c: TMsgWndColor]: TColor read GetMsgViewColors write SetMsgViewColors; property MsgViewFilters: TLMsgViewFilters read FMsgViewFilters; + property MsgColors[u: TMessageLineUrgency]: TColor read GetMsgColors write SetMsgColors; + property MsgViewShowFPCMsgLinesCompiled: Boolean read FMsgViewShowFPCMsgLinesCompiled write FMsgViewShowFPCMsgLinesCompiled; // glyphs property ShowButtonGlyphs: TApplicationShowGlyphs read FShowButtonGlyphs write FShowButtonGlyphs; @@ -720,6 +819,14 @@ // default template for each 'new item' category: Name=Path, Value=TemplateName property NewUnitTemplate: string read FNewUnitTemplate write FNewUnitTemplate; property NewFormTemplate: string read FNewFormTemplate write FNewFormTemplate; + // Desktop + property Desktops: TDesktopOptList read FDesktops; + property Desktop: TDesktopOpt read FDesktop; // the working desktop, standalone + property DebugDesktopName: string read FDebugDesktopName write FDebugDesktopName; + property DebugDesktop: TDesktopOpt read GetDebugDesktop; // debug desktop from Desktops list + property ActiveDesktopName: string read FActiveDesktopName write FActiveDesktopName; + property ActiveDesktop: TDesktopOpt read GetActiveDesktop; // active desktop from Desktops list + property AutoSaveActiveDesktop: Boolean read FAutoSaveActiveDesktop write FAutoSaveActiveDesktop; end; var @@ -731,6 +838,7 @@ function CharCaseFileActionNameToType(const Action: string): TCharCaseFileAction; function UnitRenameReferencesActionNameToType(const Action: string): TUnitRenameReferencesAction; function StrToMsgWndFilenameStyle(const s: string): TMsgWndFileNameStyle; +function StrToIDEMultipleInstancesOption(const s: string): TIDEMultipleInstancesOption; function SimpleDirectoryCheck(const OldDir, NewDir, NotFoundErrMsg: string; out StopChecking: boolean): boolean; @@ -754,6 +862,7 @@ ); function dbgs(o: TEnvOptParseType): string; overload; +function dbgs(u: TMessageLineUrgency): string; overload; implementation @@ -799,6 +908,13 @@ Result:=mwfsShort; end; +function StrToIDEMultipleInstancesOption(const s: string): TIDEMultipleInstancesOption; +begin + for Result in TIDEMultipleInstancesOption do + if CompareText(s,IDEMultipleInstancesOptionNames[Result])=0 then exit; + Result:=DefaultIDEMultipleInstancesOption; +end; + function SimpleDirectoryCheck(const OldDir, NewDir, NotFoundErrMsg: string; out StopChecking: boolean): boolean; var @@ -828,12 +944,315 @@ Result:=EnvOptParseTypeNames[o]; end; +function dbgs(u: TMessageLineUrgency): string; +begin + WriteStr(Result, u); +end; + +{ TLastOpenPackagesList } + +constructor TLastOpenPackagesList.Create; +begin + inherited Create; + Sorted:=true; + Duplicates:=dupIgnore; +end; + +function TLastOpenPackagesList.Remove(const aString: string): Boolean; +var + xIndex: Integer; +begin + xIndex := IndexOf(aString); + Result := xIndex >= 0; + if Result then + Delete(xIndex); +end; + +{ TDesktopOptList } + +constructor TDesktopOptList.Create(aEnvOpts: TEnvironmentOptions); +begin + inherited Create; + FEnvOpts := aEnvOpts; +end; + +destructor TDesktopOptList.Destroy; +begin + inherited Destroy; +end; + +procedure TDesktopOptList.SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage); +begin + FXMLCfg := aXMLCfg; + FConfigStore := aConfigStore; +end; + +procedure TDesktopOptList.AddFromCfg(Path: String); +var + dsk: TDesktopOpt; + dskName, dskDockMaster: String; +begin + dskName := FXMLCfg.GetValue(Path+'Name', 'default'); + dskDockMaster := FXMLCfg.GetValue(Path+'DockMaster', ''); + + if not EnvironmentOptions.DesktopCanBeLoaded(dskDockMaster) or (IndexOf(dskName) >= 0) then + Exit; + + dsk := TDesktopOpt.Create(dskName, dskDockMaster<>''); + dsk.SetConfig(FXMLCfg, FConfigStore); + dsk.Load(Path); + Add(dsk); +end; + +function TDesktopOptList.IndexOf(aName: string): integer; +begin + Result:=Count-1; + while (Result>=0) + and (CompareText(aName, Items[Result].Name)<>0) do + dec(Result); +end; + +function TDesktopOptList.Find(aName: string): TDesktopOpt; +var + i: LongInt; +begin + i:=IndexOf(aName); + if i>=0 then + Result:=Items[i] + else + Result:=nil; +end; + +function TDesktopOptList.GetItem(Index: Integer): TDesktopOpt; +begin + Result := TDesktopOpt(inherited Items[Index]); +end; + +{ TDesktopOpt } + +constructor TDesktopOpt.Create(const aName: String); +begin + Create(aName, Assigned(IDEDockMaster)); +end; + +constructor TDesktopOpt.Create(const aName: String; const aIsDocked: Boolean); +begin + if aIsDocked and not Assigned(IDEDockMaster) then + raise Exception.Create('Internal error: TEnvironmentOptions.CreateDesktop cannot create docked desktop in undocked environment.'); + + inherited Create; + + FName:=aName; + FIsDocked := aIsDocked; + if aIsDocked then + FDockedOpt := IDEDockMaster.DockedDesktopOptClass.Create; + FSingleTaskBarButton:=false; + FHideIDEOnRun:=false; + FAutoAdjustIDEHeight:=true; + FAutoAdjustIDEHeightFullCompPal := true; + // window menu + FIDENameForDesignedFormList:=false; + // CompletionWindow + FCompletionWindowWidth := 320; + FCompletionWindowHeight := 6; + // title + FIDETitleStartsWithProject:=false; + FIDETitleIncludesBuildMode:=false; + FIDEProjectDirectoryInIdeTitle:=false; + // IDE Coolbar + FIDECoolBarOptions:=TIDECoolBarOptions.Create; + // Editor Toolbar + FEditorToolBarOptions:=TEditorToolBarOptions.Create; + // component palette + FComponentPaletteOptions:=TCompPaletteOptions.Create; + // Windows layout + InitLayoutList; + + FIDEDialogLayoutList:=TIDEDialogLayoutList.Create; + FIDEWindowCreatorsLayoutList:=TSimpleWindowLayoutList.Create(False); + FIDEDialogLayoutList.Assign(IDEWindowIntf.IDEDialogLayoutList); + FIDEWindowCreatorsLayoutList.CopyItemsFrom(IDEWindowIntf.IDEWindowCreators.SimpleLayoutStorage); +end; + +destructor TDesktopOpt.Destroy; +begin + FreeAndNil(FComponentPaletteOptions); + FreeAndNil(FEditorToolBarOptions); + FreeAndNil(FIDECoolBarOptions); + FreeAndNil(FDockedOpt); + + FreeAndNil(FIDEDialogLayoutList); + FreeAndNil(FIDEWindowCreatorsLayoutList); + + inherited Destroy; +end; + +function TDesktopOpt.GetCompatible: Boolean; +begin + Result := (IsDocked = Assigned(IDEDockMaster)); +end; + +procedure TDesktopOpt.Assign(Source: TDesktopOpt; const AssignName: Boolean); +begin + if AssignName then + FName := Source.FName; + + if Assigned(FDockedOpt) <> Assigned(Source.FDockedOpt) then + raise Exception.Create('Internal error: TDesktopOpt.Assign mixed docked/undocked desktops.'); + + // window layout + FIDEWindowCreatorsLayoutList.CopyItemsFrom(Source.FIDEWindowCreatorsLayoutList); + FIDEDialogLayoutList.Assign(Source.FIDEDialogLayoutList); + FSingleTaskBarButton := Source.FSingleTaskBarButton; + FHideIDEOnRun := Source.FHideIDEOnRun; + FAutoAdjustIDEHeight := Source.FAutoAdjustIDEHeight; + FAutoAdjustIDEHeightFullCompPal := Source.FAutoAdjustIDEHeightFullCompPal; + // window menu + FIDENameForDesignedFormList := Source.FIDENameForDesignedFormList; + // CompletionWindow + FCompletionWindowWidth := Source.FCompletionWindowWidth; + FCompletionWindowHeight := Source.FCompletionWindowHeight; + // title + FIDETitleStartsWithProject := Source.FIDETitleStartsWithProject; + FIDETitleIncludesBuildMode := Source.FIDETitleIncludesBuildMode; + FIDEProjectDirectoryInIdeTitle := Source.FIDEProjectDirectoryInIdeTitle; + // IDE Coolbar + FIDECoolBarOptions.Assign(Source.FIDECoolBarOptions); + // Editor Toolbar + FEditorToolBarOptions.Assign(Source.FEditorToolBarOptions); + // component palette + FComponentPaletteOptions.Assign(Source.FComponentPaletteOptions); + + if Assigned(FDockedOpt) then + FDockedOpt.Assign(Source.FDockedOpt); +end; + +procedure TDesktopOpt.Load(Path: String); +begin + // Windows layout + FIDEWindowCreatorsLayoutList.LoadFromConfig(FConfigStore, Path); + FIDEDialogLayoutList.LoadFromConfig(FConfigStore, Path+'Dialogs/'); + + FSingleTaskBarButton:=FXMLCfg.GetValue(Path+'SingleTaskBarButton/Value', False); + FHideIDEOnRun:=FXMLCfg.GetValue(Path+'HideIDEOnRun/Value',false); + FAutoAdjustIDEHeight:=FXMLCfg.GetValue(Path+'AutoAdjustIDEHeight/Value',true); + FAutoAdjustIDEHeightFullCompPal:=FXMLCfg.GetValue(Path+'AutoAdjustIDEHeightFullComponentPalette/Value',true); + // Window menu + FIDENameForDesignedFormList:=FXMLCfg.GetValue(Path+'IDENameForDesignedFormList/Value',false); + // title + FIDETitleStartsWithProject:=FXMLCfg.GetValue(Path+'IDETitleStartsWithProject/Value',false); + FIDETitleIncludesBuildMode:=FXMLCfg.GetValue(Path+'IDETitleIncludesBuildMode/Value',false); + FIDEProjectDirectoryInIdeTitle:=FXMLCfg.GetValue(Path+'IDEProjectDirectoryInIdeTitle/Value',false); + // CompletionWindow + FCompletionWindowWidth:=FXMLCfg.GetValue(Path+'CompletionWindowWidth/Value', 320); + FCompletionWindowHeight:=FXMLCfg.GetValue(Path+'CompletionWindowHeight/Value', 6); + + if not FXMLCfg.HasPath(Path+'IDECoolBarOptions/', True) then + Path := ''; // Toolbars and palette were at the top level in XML. + // IDE Coolbar + FIDECoolBarOptions.Load(FXMLCfg, Path); + // Editor Toolbar + FEditorToolBarOptions.Load(FXMLCfg, Path); + // component palette + FComponentPaletteOptions.Load(FXMLCfg, Path); + + if Assigned(FDockedOpt) then + FDockedOpt.Load(Path, FXMLCfg); +end; + +procedure TDesktopOpt.RestoreDesktop; +begin + IDEWindowCreators.RestoreSimpleLayout; + if Assigned(FDockedOpt) then + FDockedOpt.RestoreDesktop; +end; + +procedure TDesktopOpt.ImportSettingsFromIDE; +begin + IDEWindowIntf.IDEWindowCreators.SimpleLayoutStorage.StoreWindowPositions; + FIDEDialogLayoutList.Assign(IDEWindowIntf.IDEDialogLayoutList); + FIDEWindowCreatorsLayoutList.CopyItemsFrom(IDEWindowIntf.IDEWindowCreators.SimpleLayoutStorage); + + if Assigned(FDockedOpt) then + FDockedOpt.ImportSettingsFromIDE; +end; + +procedure TDesktopOpt.Save(Path: String); +begin + // windows + FXMLCfg.SetDeleteValue(Path+'Name', FName, ''); + if Assigned(FDockedOpt) then + FXMLCfg.SetDeleteValue(Path+'DockMaster', IDEDockMaster.ClassName, '') + else + FXMLCfg.DeleteValue(Path+'DockMaster'); + + FIDEWindowCreatorsLayoutList.SaveToConfig(FConfigStore, Path); + FIDEDialogLayoutList.SaveToConfig(FConfigStore,Path+'Dialogs/'); + + FXMLCfg.SetDeleteValue(Path+'SingleTaskBarButton/Value',FSingleTaskBarButton, False); + FXMLCfg.SetDeleteValue(Path+'HideIDEOnRun/Value',FHideIDEOnRun,false); + FXMLCfg.SetDeleteValue(Path+'AutoAdjustIDEHeight/Value',FAutoAdjustIDEHeight,true); + FXMLCfg.SetDeleteValue(Path+'AutoAdjustIDEHeightFullComponentPalette/Value', + FAutoAdjustIDEHeightFullCompPal,true); + // Window menu + FXMLCfg.SetDeleteValue(Path+'IDENameForDesignedFormList/Value',FIDENameForDesignedFormList,false); + // title + FXMLCfg.SetDeleteValue(Path+'IDETitleStartsWithProject/Value',FIDETitleStartsWithProject,false); + FXMLCfg.SetDeleteValue(Path+'IDETitleIncludesBuildMode/Value',FIDETitleIncludesBuildMode,false); + FXMLCfg.SetDeleteValue(Path+'IDEProjectDirectoryInIdeTitle/Value',FIDEProjectDirectoryInIdeTitle,false); + // CompletionWindow + FXMLCfg.SetDeleteValue(Path+'CompletionWindowWidth/Value',FCompletionWindowWidth, 320); + FXMLCfg.SetDeleteValue(Path+'CompletionWindowHeight/Value',FCompletionWindowHeight, 6); + // IDE Coolbar + FIDECoolBarOptions.Save(FXMLCfg, Path); + // Editor Toolbar + FEditorToolBarOptions.Save(FXMLCfg, Path); + // component palette + FComponentPaletteOptions.Save(FXMLCfg, Path); + + if Assigned(FDockedOpt) then + FDockedOpt.Save(Path, FXMLCfg); +end; + +procedure TDesktopOpt.ExportSettingsToIDE; +begin + if Assigned(FDockedOpt) then + FDockedOpt.ExportSettingsToIDE; + + IDEWindowIntf.IDEDialogLayoutList.Assign(FIDEDialogLayoutList); + IDEWindowIntf.IDEWindowCreators.SimpleLayoutStorage.CopyItemsFrom(FIDEWindowCreatorsLayoutList); +end; + +procedure InitLayoutHelper(const FormID: string); +begin + with IDEWindowCreators.SimpleLayoutStorage do + if not Assigned(ItemByFormID(FormID)) then + CreateWindowLayout(FormID); +end; + +procedure TDesktopOpt.SetConfig(aXMLCfg: TRttiXMLConfig; aConfigStore: TXMLOptionsStorage); +begin + FXMLCfg := aXMLCfg; + FConfigStore := aConfigStore; +end; + +procedure TDesktopOpt.InitLayoutList; +var + l: TNonModalIDEWindow; +begin + for l:=Low(TNonModalIDEWindow) to High(TNonModalIDEWindow) do + if l<>nmiwNone then + InitLayoutHelper(NonModalIDEWindowNames[l]); + InitLayoutHelper(DefaultObjectInspectorName); +end; + { TEnvironmentOptions } constructor TEnvironmentOptions.Create; var o: TEnvOptParseType; c: TMsgWndColor; + u: TMessageLineUrgency; begin inherited Create; for o:=low(FParseValues) to high(FParseValues) do @@ -848,36 +1267,21 @@ FAskSaveSessionOnly:=false; FAutoSaveEditorFiles:=true; FAutoSaveProject:=true; - FAutoSaveIntervalInSecs:=300; // 5 minutes + FAutoSaveIntervalInSecs:=DefaultAutoSaveIntervalInSecs; FLastSavedProjectFile:=''; - - // windows - InitLayoutList; - FIDEDialogLayoutList:=TIDEDialogLayoutList.Create; - if IDEWindowIntf.IDEDialogLayoutList=nil then - IDEWindowIntf.IDEDialogLayoutList:=FIDEDialogLayoutList; - FSingleTaskBarButton:=false; - FHideIDEOnRun:=false; - FIDETitleStartsWithProject:=false; - FIDETitleIncludesBuildMode:=false; - FIDEProjectDirectoryInIdeTitle:=false; - FComponentPaletteVisible:=true; - FIDESpeedButtonsVisible:=true; - - // window menu - FIDENameForDesignedFormList:=false; + FLastOpenPackages:=TLastOpenPackagesList.Create; // EnvironmentOptionsDialog editor FShowGrid:=true; FShowBorderSpacing:=false; - FGridColor:=clBlack; + FGridColor:=DefaultGridColor; FSnapToGrid:=true; - FGridSizeX:=8; - FGridSizeY:=8; + FGridSizeX:=DefaultGridSize; + FGridSizeY:=DefaultGridSize; FShowGuideLines:=true; FSnapToGuideLines:=true; - FGuideLineColorLeftTop:=clBlue; - FGuideLineColorRightBottom:=clGreen; + FGuideLineColorLeftTop:=DefaultGuideLineColorLeftTop; + FGuideLineColorRightBottom:=DefaultGuideLineColorRightBottom; FShowComponentCaptions:=false; FShowEditorHints:=true; FAutoCreateFormsOnOpen:=true; @@ -887,17 +1291,11 @@ FMarkerColor:=clDkGray; FRubberbandSelectionColor:=clNavy; FRubberbandCreationColor:=clMaroon; - FRubberbandSelectsGrandChilds:=true; + FRubberbandSelectsGrandChilds:=DefaultRubberbandSelectsGrandChilds; FDesignerPaintLazy:=true; FCreateComponentFocusNameProperty:=false; FSwitchToFavoritesOITab:=false; - FCompletionWindowWidth := 320; - FCompletionWindowHeight := 6; - - // component palette - FComponentPaletteOptions:=TCompPaletteOptions.Create; - // object inspector FObjectInspectorOptions:=TOIOptions.Create; @@ -924,7 +1322,10 @@ FMsgViewFilenameStyle:=mwfsShort; for c:=low(TMsgWndColor) to high(TMsgWndColor) do fMsgViewColors[c]:=MsgWndDefaultColors[c]; + for u:=low(TMessageLineUrgency) to high(TMessageLineUrgency) do + fMsgColors[u] := clDefault; FMsgViewFilters:=TLMsgViewFilters.Create(nil); + FMsgViewShowFPCMsgLinesCompiled:=false; // glyphs FShowButtonGlyphs := sbgSystem; @@ -957,6 +1358,10 @@ FRecentPackageFiles:=TStringList.Create; FMaxRecentPackageFiles:=DefaultMaxRecentPackageFiles; FOpenLastProjectAtStart:=true; + FMultipleInstances:=DefaultIDEMultipleInstancesOption; + + // other recent settings + FLastEventMethodSectionPrompt:=InsertClassSectionToResult[DefaultEventMethodSection]; // backup with FBackupInfoProjectFiles do begin @@ -989,12 +1394,21 @@ // global build options FBuildMatrixOptions:=TBuildMatrixOptions.Create; + + // Desktop collection + FDesktops := TDesktopOptList.Create(Self); + // FDesktop points to the IDE properties + FDesktop := TDesktopOpt.Create(''); + FAutoSaveActiveDesktop := True; end; destructor TEnvironmentOptions.Destroy; var i: Integer; begin + FreeAndNil(FDesktops); + FreeAndNil(FDesktop); + FreeAndNil(FLastDesktopBeforeDebug); FreeAndNil(FBuildMatrixOptions); FreeAndNil(FMsgViewFilters); FreeAndNil(fExternalUserTools); @@ -1002,7 +1416,6 @@ FreeAndNil(FRecentProjectFiles); FreeAndNil(FRecentPackageFiles); FreeAndNil(FObjectInspectorOptions); - FreeAndNil(FComponentPaletteOptions); FreeAndNil(FLazarusDirHistory); FreeAndNil(FCompilerFileHistory); FreeAndNil(FFPCSourceDirHistory); @@ -1013,16 +1426,31 @@ FreeAndNil(FDebuggerProperties); FreeAndNil(FTestBuildDirHistory); FreeAndNil(FCompilerMessagesFileHistory); - if IDEWindowIntf.IDEDialogLayoutList=FIDEDialogLayoutList then - IDEWindowIntf.IDEDialogLayoutList:=nil; - FreeAndNil(FIDEDialogLayoutList); FreeAndNil(FDebuggerConfig); FreeAndNil(FConfigStore); FreeAndNil(FDbgConfigStore); FreeAndNil(FXMLCfg); + FreeAndNil(FLastOpenPackages); inherited Destroy; end; +procedure TEnvironmentOptions.DisableDebugDesktop; +begin + if (FLastDesktopBeforeDebug=nil) or (FDesktop=nil) then + Exit; + try + if AutoSaveActiveDesktop and Assigned(DebugDesktop) then + begin + Desktop.ImportSettingsFromIDE; + DebugDesktop.Assign(Desktop); + end; + + UseDesktop(FLastDesktopBeforeDebug); + finally + FreeAndNil(FLastDesktopBeforeDebug); + end; +end; + class function TEnvironmentOptions.GetGroupCaption: string; begin Result := dlgGroupEnvironment; @@ -1041,6 +1469,17 @@ inherited DoAfterWrite(Restore); end; +procedure TEnvironmentOptions.EnableDebugDesktop; +begin + if not Assigned(FLastDesktopBeforeDebug) and Assigned(DebugDesktop) then + begin + FLastDesktopBeforeDebug := TDesktopOpt.Create(''); + FLastDesktopBeforeDebug.Assign(Desktop); + FLastDesktopBeforeDebug.Name := ActiveDesktopName; + EnvironmentOptions.UseDesktop(DebugDesktop); + end; +end; + procedure TEnvironmentOptions.CreateConfig; var ConfFileName: string; @@ -1053,6 +1492,13 @@ Filename:=ConfFilename; end; +class function TEnvironmentOptions.DesktopCanBeLoaded(const aDockMaster: string + ): Boolean; +begin + Result := (aDockMaster = '') or ( + Assigned(IDEDockMaster) and (IDEDockMaster.ClassName = aDockMaster)); +end; + function TEnvironmentOptions.GetParsedLazarusDirectory: string; begin Result:=GetParsedValue(eopLazarusDirectory); @@ -1065,28 +1511,13 @@ FFileHasChangedOnDisk:=true; end; -procedure TEnvironmentOptions.Load(OnlyDesktop:boolean); -var - XMLConfig: TXMLConfig; - FileVersion: integer; - - procedure AddRecentProjectInitial(aProjPath, aProjFile: string); - // Add a project to the list of recent projects if the project has write access. - // The check can be removed when the IDE allows compiling read-only projects. - var - WholeFilePath: String; - begin - aProjPath:=SwitchPathDelims(aProjPath, True); - WholeFilePath:=ExtractFilePath(Application.ExeName) + aProjPath + aProjFile; - if FileIsWritable(aProjPath) and FileIsWritable(WholeFilePath) then - AddToRecentList(WholeFilePath,FRecentProjectFiles,FMaxRecentProjectFiles,rltFile); - end; +procedure TEnvironmentOptions.LoadNonDesktop(Path: String); procedure LoadBackupInfo(var BackupInfo: TBackupInfo; const Path:string); var i:integer; begin with BackupInfo do begin - i:=XMLConfig.GetValue(Path+'Type',5); + i:=FXMLCfg.GetValue(Path+'Type',5); case i of 0:BackupType:=bakNone; 1:BackupType:=bakSymbolInFront; @@ -1096,404 +1527,356 @@ else BackupType:=bakUserDefinedAddExt; end; - AdditionalExtension:=XMLConfig.GetValue(Path+'AdditionalExtension','bak'); - MaxCounter:=XMLConfig.GetValue(Path+'MaxCounter',9); - if FileVersion<101 then + AdditionalExtension:=FXMLCfg.GetValue(Path+'AdditionalExtension','bak'); + MaxCounter:=FXMLCfg.GetValue(Path+'MaxCounter',9); + if FFileVersion<101 then SubDirectory:='' else - SubDirectory:=XMLConfig.GetValue(Path+'SubDirectory','backup'); + SubDirectory:=FXMLCfg.GetValue(Path+'SubDirectory','backup'); end; end; +var + EventType: TDBGEventType; +begin + // files + LazarusDirectory:=FXMLCfg.GetValue(Path+'LazarusDirectory/Value',LazarusDirectory); + LoadRecentList(FXMLCfg,FLazarusDirHistory,Path+'LazarusDirectory/History/',rltFile); + if FLazarusDirHistory.Count=0 then + FLazarusDirHistory.Add(ProgramDirectory(true)); + CompilerFilename:=TrimFilename(FXMLCfg.GetValue( + Path+'CompilerFilename/Value',CompilerFilename)); + LoadRecentList(FXMLCfg,FCompilerFileHistory,Path+'CompilerFilename/History/',rltFile); + if FCompilerFileHistory.Count=0 then + GetDefaultCompilerFilenames(FCompilerFileHistory); + FPCSourceDirectory:=FXMLCfg.GetValue(Path+'FPCSourceDirectory/Value',FPCSourceDirectory); + LoadRecentList(FXMLCfg,FFPCSourceDirHistory,Path+'FPCSourceDirectory/History/',rltFile); + MakeFilename:=TrimFilename(FXMLCfg.GetValue(Path+'MakeFilename/Value',MakeFilename)); + LoadRecentList(FXMLCfg,FMakeFileHistory,Path+'MakeFilename/History/',rltFile); + if FMakeFileHistory.Count=0 then + GetDefaultMakeFilenames(FMakeFileHistory); + + TestBuildDirectory:=FXMLCfg.GetValue(Path+'TestBuildDirectory/Value',TestBuildDirectory); + LoadRecentList(FXMLCfg,FTestBuildDirHistory,Path+'TestBuildDirectory/History/',rltFile); + if FTestBuildDirHistory.Count=0 then + GetDefaultTestBuildDirs(FTestBuildDirHistory); + CompilerMessagesFilename:=FXMLCfg.GetValue(Path+'CompilerMessagesFilename/Value',CompilerMessagesFilename); + LoadRecentList(FXMLCfg,FCompilerMessagesFileHistory,Path+'CompilerMessagesFilename/History/',rltFile); + + // Primary-config verification + FLastCalledByLazarusFullPath:=FXMLCfg.GetValue(Path+'LastCalledByLazarusFullPath/Value',''); + + // global build options, additions and overrides + FConfigStore.AppendBasePath('BuildMatrix'); + FBuildMatrixOptions.LoadFromConfig(FConfigStore); + FConfigStore.UndoAppendBasePath; + FUseBuildModes:=FXMLCfg.GetValue(Path+'Build/UseBuildModes',false); + + // backup + LoadBackupInfo(FBackupInfoProjectFiles,Path+'BackupProjectFiles/'); + LoadBackupInfo(FBackupInfoOtherFiles,Path+'BackupOtherFiles/'); + + // Debugger + FDebuggerConfig.Load; + DebuggerFilename:=FXMLCfg.GetValue(Path+'DebuggerFilename/Value',''); + LoadRecentList(FXMLCfg,FDebuggerFileHistory,Path+'DebuggerFilename/History/',rltFile); + DebuggerSearchPath:=FXMLCfg.GetValue(Path+'DebuggerSearchPath/Value',''); + // Debugger General Options + DebuggerShowStopMessage:=FXMLCfg.GetValue(Path+'DebuggerOptions/ShowStopMessage/Value', True); + DebuggerResetAfterRun :=FXMLCfg.GetValue(Path+'DebuggerOptions/DebuggerResetAfterRun/Value', False); + FDebuggerEventLogClearOnRun := FXMLCfg.GetValue(Path+'Debugger/EventLogClearOnRun', True); + FDebuggerEventLogCheckLineLimit := FXMLCfg.GetValue(Path+'Debugger/EventLogCheckLineLimit', False); + FDebuggerEventLogLineLimit := FXMLCfg.GetValue(Path+'Debugger/EventLogLineLimit', 1000); + FDebuggerEventLogShowBreakpoint := FXMLCfg.GetValue(Path+'Debugger/EventLogShowBreakpoint', False); + FDebuggerEventLogShowProcess := FXMLCfg.GetValue(Path+'Debugger/EventLogShowProcess', True); + FDebuggerEventLogShowThread := FXMLCfg.GetValue(Path+'Debugger/EventLogShowThread', True); + FDebuggerEventLogShowModule := FXMLCfg.GetValue(Path+'Debugger/EventLogShowModule', False); + FDebuggerEventLogShowOutput := FXMLCfg.GetValue(Path+'Debugger/EventLogShowOutput', True); + FDebuggerEventLogShowWindows := FXMLCfg.GetValue(Path+'Debugger/EventLogShowWindows', False); + FDebuggerEventLogShowDebugger := FXMLCfg.GetValue(Path+'Debugger/EventLogShowDebugger', True); + FDebuggerEventLogUseColors := FXMLCfg.GetValue(Path+'Debugger/EventLogUseColors', True); + for EventType := Low(TDBGEventType) to High(TDBGEventType) do + begin + FDebuggerEventLogColors[EventType].Background := + FXMLCfg.GetValue(Path+'Debugger/EventLogColors/' + + GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Background', + DebuggerDefaultColors[EventType].Background); + FDebuggerEventLogColors[EventType].Foreground := + FXMLCfg.GetValue(Path+'Debugger/EventLogColors/' + + GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Foreground', + DebuggerDefaultColors[EventType].Foreground); + end; +end; + +procedure TEnvironmentOptions.Load(OnlyDesktop: boolean); + + procedure AddRecentProjectInitial(aProjPath, aProjFile: string); + // Add a project to the list of recent projects if the project has write access. + // The check can be removed when the IDE allows compiling read-only projects. + var + WholeFilePath: String; + begin + aProjPath:=SwitchPathDelims(aProjPath, True); + WholeFilePath:=ExtractFilePath(Application.ExeName) + aProjPath + aProjFile; + if FileIsWritable(aProjPath) and FileIsWritable(WholeFilePath) then + AddToRecentList(WholeFilePath,FRecentProjectFiles,FMaxRecentProjectFiles,rltFile); + end; + procedure LoadPascalFileExt(const Path: string); begin - fPascalFileExtension:=PascalExtToType(XMLConfig.GetValue( + fPascalFileExtension:=PascalExtToType(FXMLCfg.GetValue( Path+'Naming/PascalFileExtension',PascalExtension[petPAS])); if fPascalFileExtension=petNone then fPascalFileExtension:=petPAS; end; - procedure LoadLanguage; - begin - fLanguageID:=XMLConfig.GetValue('EnvironmentOptions/Language/ID',''); - end; - var - Path: String; - CurPath: String; + Path, CurPath: String; i, j: Integer; Rec: PIDEOptionsGroupRec; - Cfg: TXMLOptionsStorage; - EventType: TDBGEventType; - NodeName: String; + NodeName, xFileName: String; mwc: TMsgWndColor; + u: TMessageLineUrgency; begin - Cfg:=nil; try - XMLConfig:=GetXMLCfg(false); - Cfg:=TXMLOptionsStorage.Create(XMLConfig); - try - Path:='EnvironmentOptions/'; - FileVersion:=XMLConfig.GetValue(Path+'Version/Value',0); - FOldLazarusVersion:=XMLConfig.GetValue(Path+'Version/Lazarus',''); - if FOldLazarusVersion='' then begin - // 108 added LastCalledByLazarusFullPath - // 107 added Lazarus version - // 1.1 r36507 106 - // 0.9.31 r28811 106 - // 0.9.29 r21344 106 - // 0.9.27 r16725 106 - // 0.9.25 r12751 106 - // 0.9.23 r10809 106 - end; + InitXMLCfg(false); + // ToDo: Get rid of EnvironmentOptions/ path. The whole file is about + // environment options. Many section are not under it any more. + Path:='EnvironmentOptions/'; + FFileVersion:=FXMLCfg.GetValue(Path+'Version/Value',0); + FOldLazarusVersion:=FXMLCfg.GetValue(Path+'Version/Lazarus',''); + if FOldLazarusVersion='' then begin + // 108 added LastCalledByLazarusFullPath + // 107 added Lazarus version + // 1.1 r36507 106 + // 0.9.31 r28811 106 + // 0.9.29 r21344 106 + // 0.9.27 r16725 106 + // 0.9.25 r12751 106 + // 0.9.23 r10809 106 + end; - // language - LoadLanguage; + // language + fLanguageID:=FXMLCfg.GetValue(Path+'Language/ID',''); - // auto save - FAskSaveSessionOnly:=XMLConfig.GetValue( - Path+'AutoSave/AskSaveSessionOnly',false); - FAutoSaveEditorFiles:=XMLConfig.GetValue( - Path+'AutoSave/EditorFiles',true); - FAutoSaveProject:=XMLConfig.GetValue( - Path+'AutoSave/Project',true); - FAutoSaveIntervalInSecs:=XMLConfig.GetValue( - Path+'AutoSave/IntervalInSecs',600); - FLastSavedProjectFile:=XMLConfig.GetValue( - Path+'AutoSave/LastSavedProjectFile',''); - FOpenLastProjectAtStart:=XMLConfig.GetValue( - Path+'AutoSave/OpenLastProjectAtStart',true); - FShowCompileDialog:=XMLConfig.GetValue( - Path+'ShowCompileDialog/Value',false); - FAutoCloseCompileDialog:=XMLConfig.GetValue( - Path+'AutoCloseCompileDialog/Value',false); - - // Windows layout - IDEWindowCreators.SimpleLayoutStorage.LoadFromConfig(Cfg,Path+'Desktop/'); - FIDEDialogLayoutList.LoadFromConfig(FConfigStore, Path+'Desktop/Dialogs/'); - FSingleTaskBarButton := XMLConfig.GetValue( - Path+'Desktop/SingleTaskBarButton/Value', False); - FHideIDEOnRun:=XMLConfig.GetValue( - Path+'Desktop/HideIDEOnRun/Value',false); - FIDETitleStartsWithProject:=XMLConfig.GetValue( - Path+'Desktop/IDETitleStartsWithProject/Value',false); - FIDETitleIncludesBuildMode:=XMLConfig.GetValue( - Path+'Desktop/IDETitleIncludesBuildMode/Value',false); - IDEProjectDirectoryInIdeTitle:=XMLConfig.GetValue( - Path+'Desktop/IDEProjectDirectoryInIdeTitle/Value',false); - FComponentPaletteVisible:=XMLConfig.GetValue( - Path+'Desktop/ComponentPaletteVisible/Value',true); - FIDESpeedButtonsVisible:=XMLConfig.GetValue( - Path+'Desktop/IDESpeedButtonsVisible/Value',true); - FCompletionWindowWidth:=XMLConfig.GetValue( - Path+'Desktop/CompletionWindowWidth/Value', 320); - FCompletionWindowHeight:=XMLConfig.GetValue( - Path+'Desktop/CompletionWindowHeight/Value', 6); - - // Window menu - FIDENameForDesignedFormList:=XMLConfig.GetValue( - Path+'Desktop/IDENameForDesignedFormList/Value',false); - - // form editor - FShowGrid:=XMLConfig.GetValue( - Path+'FormEditor/ShowGrid',true); - FShowBorderSpacing:=XMLConfig.GetValue( - Path+'FormEditor/ShowBorderSpacing',false); - FGridColor:=XMLConfig.GetValue( - Path+'FormEditor/GridColor',FGridColor); - FSnapToGrid:=XMLConfig.GetValue( - Path+'FormEditor/SnapToGrid',true); - FGridSizeX:=XMLConfig.GetValue( - Path+'FormEditor/GridSizeX',8); - FGridSizeY:=XMLConfig.GetValue( - Path+'FormEditor/GridSizeY',8); - FShowGuideLines:=XMLConfig.GetValue( - Path+'FormEditor/ShowGuideLines',true); - FSnapToGuideLines:=XMLConfig.GetValue( - Path+'FormEditor/SnapToGuideLines',true); - FGuideLineColorLeftTop:=XMLConfig.GetValue( - Path+'FormEditor/GuideLineColorLeftTop', - FGuideLineColorLeftTop); - FGuideLineColorRightBottom:=XMLConfig.GetValue( - Path+'FormEditor/GuideLineColorRightBottom', - FGuideLineColorRightBottom); - FShowComponentCaptions:=XMLConfig.GetValue( - Path+'FormEditor/ShowComponentCaptions',true); - FShowEditorHints:=XMLConfig.GetValue( - Path+'FormEditor/ShowEditorHints',true); - FAutoCreateFormsOnOpen:=XMLConfig.GetValue( - Path+'FormEditor/AutoCreateFormsOnOpen',true); - FCheckPackagesOnFormCreate:=XMLConfig.GetValue( - Path+'FormEditor/CheckPackagesOnFormCreate',true); - FRightClickSelects:=XMLConfig.GetValue( - Path+'FormEditor/RightClickSelects',true); - FGrabberColor:=XMLConfig.GetValue( - Path+'FormEditor/GrabberColor/Value',FGrabberColor); - FMarkerColor:=XMLConfig.GetValue( - Path+'FormEditor/MarkerColor/Value',FMarkerColor); - FRubberbandSelectionColor:=XMLConfig.GetValue( - Path+'FormEditor/Rubberband/SelectionColor/Value', - FRubberbandSelectionColor); - FRubberbandCreationColor:=XMLConfig.GetValue( - Path+'FormEditor/Rubberband/CreationColor/Value', - FRubberbandCreationColor); - FRubberbandSelectsGrandChilds:=XMLConfig.GetValue( - Path+'FormEditor/Rubberband/SelectsGrandChilds/Value', - false); - FDesignerPaintLazy:=XMLConfig.GetValue( - Path+'FormEditor/DesignerPaint/Lazy/Value',true); - FCreateComponentFocusNameProperty:=XMLConfig.GetValue( - Path+'FormEditor/CreateComponentFocusNameProperty/Value',false); - FSwitchToFavoritesOITab:=XMLConfig.GetValue( - Path+'FormEditor/SwitchToFavoritesOITab/Value',false); - - if not OnlyDesktop then begin - // files - LazarusDirectory:=XMLConfig.GetValue(Path+'LazarusDirectory/Value',LazarusDirectory); - LoadRecentList(XMLConfig,FLazarusDirHistory, - Path+'LazarusDirectory/History/',rltFile); - if FLazarusDirHistory.Count=0 then - FLazarusDirHistory.Add(ProgramDirectory(true)); - CompilerFilename:=TrimFilename(XMLConfig.GetValue( - Path+'CompilerFilename/Value',CompilerFilename)); - LoadRecentList(XMLConfig,FCompilerFileHistory, - Path+'CompilerFilename/History/',rltFile); - if FCompilerFileHistory.Count=0 then - GetDefaultCompilerFilenames(FCompilerFileHistory); - FPCSourceDirectory:=XMLConfig.GetValue( - Path+'FPCSourceDirectory/Value',FPCSourceDirectory); - LoadRecentList(XMLConfig,FFPCSourceDirHistory, - Path+'FPCSourceDirectory/History/',rltFile); - MakeFilename:=TrimFilename(XMLConfig.GetValue( - Path+'MakeFilename/Value',MakeFilename)); - LoadRecentList(XMLConfig,FMakeFileHistory, - Path+'MakeFilename/History/',rltFile); - if FMakeFileHistory.Count=0 then - GetDefaultMakeFilenames(FMakeFileHistory); - - TestBuildDirectory:=XMLConfig.GetValue( - Path+'TestBuildDirectory/Value',TestBuildDirectory); - LoadRecentList(XMLConfig,FTestBuildDirHistory, - Path+'TestBuildDirectory/History/',rltFile); - if FTestBuildDirHistory.Count=0 then - GetDefaultTestBuildDirs(FTestBuildDirHistory); - CompilerMessagesFilename:=XMLConfig.GetValue( - Path+'CompilerMessagesFilename/Value',CompilerMessagesFilename); - LoadRecentList(XMLConfig, FCompilerMessagesFileHistory, - Path+'CompilerMessagesFilename/History/',rltFile); - - // Primary-config verification - FLastCalledByLazarusFullPath:=XMLConfig.GetValue( - Path+'LastCalledByLazarusFullPath/Value',''); - - // global build options, additions and overrides - Cfg.AppendBasePath('BuildMatrix'); - FBuildMatrixOptions.LoadFromConfig(Cfg); - Cfg.UndoAppendBasePath; - FUseBuildModes:=XMLConfig.GetValue(Path+'Build/UseBuildModes',false); - - // backup - LoadBackupInfo(FBackupInfoProjectFiles - ,Path+'BackupProjectFiles/'); - LoadBackupInfo(FBackupInfoOtherFiles - ,Path+'BackupOtherFiles/'); - - // Debugger - FDebuggerConfig.Load; - DebuggerFilename:=XMLConfig.GetValue( - Path+'DebuggerFilename/Value',''); - LoadRecentList(XMLConfig,FDebuggerFileHistory, - Path+'DebuggerFilename/History/',rltFile); - DebuggerSearchPath:=XMLConfig.GetValue( - Path+'DebuggerSearchPath/Value',''); - // Debugger General Options - DebuggerShowStopMessage:=XMLConfig.GetValue( - Path+'DebuggerOptions/ShowStopMessage/Value', True); - DebuggerResetAfterRun :=XMLConfig.GetValue( - Path+'DebuggerOptions/DebuggerResetAfterRun/Value', False); - FDebuggerEventLogClearOnRun := XMLConfig.GetValue( - Path+'Debugger/EventLogClearOnRun', True); - FDebuggerEventLogCheckLineLimit := XMLConfig.GetValue( - Path+'Debugger/EventLogCheckLineLimit', False); - FDebuggerEventLogLineLimit := XMLConfig.GetValue( - Path+'Debugger/EventLogLineLimit', 1000); - FDebuggerEventLogShowBreakpoint := XMLConfig.GetValue( - Path+'Debugger/EventLogShowBreakpoint', False); - FDebuggerEventLogShowProcess := XMLConfig.GetValue( - Path+'Debugger/EventLogShowProcess', True); - FDebuggerEventLogShowThread := XMLConfig.GetValue( - Path+'Debugger/EventLogShowThread', True); - FDebuggerEventLogShowModule := XMLConfig.GetValue( - Path+'Debugger/EventLogShowModule', False); - FDebuggerEventLogShowOutput := XMLConfig.GetValue( - Path+'Debugger/EventLogShowOutput', True); - FDebuggerEventLogShowWindows := XMLConfig.GetValue( - Path+'Debugger/EventLogShowWindows', False); - FDebuggerEventLogShowDebugger := XMLConfig.GetValue( - Path+'Debugger/EventLogShowDebugger', True); - FDebuggerEventLogUseColors := XMLConfig.GetValue( - Path+'Debugger/EventLogUseColors', True); - for EventType := Low(TDBGEventType) to High(TDBGEventType) do - begin - FDebuggerEventLogColors[EventType].Background := - XMLConfig.GetValue(Path+'Debugger/EventLogColors/' + - GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Background', - DebuggerDefaultColors[EventType].Background); - FDebuggerEventLogColors[EventType].Foreground := - XMLConfig.GetValue(Path+'Debugger/EventLogColors/' + - GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Foreground', - DebuggerDefaultColors[EventType].Foreground); - end; - end; + // auto save + FAskSaveSessionOnly:=FXMLCfg.GetValue(Path+'AutoSave/AskSaveSessionOnly',false); + FAutoSaveEditorFiles:=FXMLCfg.GetValue(Path+'AutoSave/EditorFiles',true); + FAutoSaveProject:=FXMLCfg.GetValue(Path+'AutoSave/Project',true); + FAutoSaveIntervalInSecs:=FXMLCfg.GetValue(Path+'AutoSave/IntervalInSecs',DefaultAutoSaveIntervalInSecs); + FLastSavedProjectFile:=FXMLCfg.GetValue(Path+'AutoSave/LastSavedProjectFile',''); + FOpenLastProjectAtStart:=FXMLCfg.GetValue(Path+'AutoSave/OpenLastProjectAtStart',true); + FShowCompileDialog:=FXMLCfg.GetValue(Path+'ShowCompileDialog/Value',false); + FAutoCloseCompileDialog:=FXMLCfg.GetValue(Path+'AutoCloseCompileDialog/Value',false); + FAutoSaveActiveDesktop:=FXMLCfg.GetValue(Path+'AutoSave/ActiveDesktop',True); + FLastOpenPackages.Clear; + if FOpenLastProjectAtStart then + begin + i := 1; + repeat + xFileName := FXMLCfg.GetValue(Path+'AutoSave/LastOpenPackages/Package'+IntToStr(i), ''); + if FileExistsCached(xFileName) then + FLastOpenPackages.Add(xFileName); + Inc(i); + until xFileName=''; + end; - // project inspector - FProjInspSortAlphabetically:=XMLConfig.GetValue( - Path+'ProjInspSortAlphabetically/Value',false); - FProjInspShowDirHierarchy:=XMLConfig.GetValue( - Path+'ProjInspShowDirHierarchy/Value',false); - - // package editor - FPackageEditorSortAlphabetically:=XMLConfig.GetValue( - Path+'PackageEditorSortAlphabetically/Value',false); - FPackageEditorShowDirHierarchy:=XMLConfig.GetValue( - Path+'PackageEditorShowDirHierarchy/Value',false); - - // hints - FCheckDiskChangesWithLoading:=XMLConfig.GetValue( - Path+'CheckDiskChangesWithLoading/Value',false); - FShowHintsForComponentPalette:=XMLConfig.GetValue( - Path+'ShowHintsForComponentPalette/Value',true); - FShowHintsForMainSpeedButtons:=XMLConfig.GetValue( - Path+'ShowHintsForMainSpeedButtons/Value',true); - - // messages view - fMsgViewDblClickJumps:=XMLConfig.GetValue( - Path+'MsgViewDblClickJumps/Value',false); - fMsgViewFocus:=XMLConfig.GetValue( - Path+'MsgViewFocus/Value',DefaultMsgViewFocus); - FShowMessagesIcons:=XMLConfig.GetValue( - Path+'Desktop/ShowMessagesIcons/Value',true); - FMsgViewStayOnTop:=XMLConfig.GetValue( - Path+'MsgView/StayOnTop/Value',false); - FMsgViewShowTranslations:=XMLConfig.GetValue( - Path+'MsgView/ShowTranslations/Value',false); - FMsgViewAlwaysDrawFocused:=XMLConfig.GetValue( - Path+'MsgView/AlwaysDrawFocused/Value',false); - FMsgViewFilenameStyle:=StrToMsgWndFilenameStyle(XMLConfig.GetValue( - Path+'MsgView/Filename/Style',MsgWndFileNameStyleNames[mwfsShort])); - for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do - fMsgViewColors[mwc]:=XMLConfig.GetValue( - Path+'MsgView/Colors/'+MsgWndColorNames[mwc],MsgWndDefaultColors[mwc]); - MsgViewFilters.LoadFromXMLConfig(XMLConfig,'MsgView/Filters/'); - - // glyphs - FShowButtonGlyphs := TApplicationShowGlyphs(XMLConfig.GetValue(Path+'ShowButtonGlyphs/Value', - Ord(sbgSystem))); - FShowMenuGlyphs := TApplicationShowGlyphs(XMLConfig.GetValue(Path+'ShowMenuGlyphs/Value', - Ord(sbgSystem))); - - // recent files and directories - FMaxRecentOpenFiles:=XMLConfig.GetValue( - Path+'Recent/OpenFiles/Max',DefaultMaxRecentOpenFiles); - LoadRecentList(XMLConfig,FRecentOpenFiles, - Path+'Recent/OpenFiles/',rltFile); - FMaxRecentProjectFiles:=XMLConfig.GetValue( - Path+'Recent/ProjectFiles/Max',DefaultMaxRecentProjectFiles); - LoadRecentList(XMLConfig,FRecentProjectFiles, - Path+'Recent/ProjectFiles/',rltFile); - FMaxRecentPackageFiles:=XMLConfig.GetValue( - Path+'Recent/PackageFiles/Max',DefaultMaxRecentPackageFiles); - LoadRecentList(XMLConfig,FRecentPackageFiles, - Path+'Recent/PackageFiles/',rltFile); - - FAlreadyPopulatedRecentFiles := XMLConfig.GetValue(Path+'Recent/AlreadyPopulated', false); - - // Add example projects to an empty project list if examples have write access - if (FRecentProjectFiles.count=0) and (not FAlreadyPopulatedRecentFiles) then begin - AddRecentProjectInitial('examples/jpeg/', 'jpegexample.lpi'); - AddRecentProjectInitial('examples/sprites/', 'spriteexample.lpi'); - AddRecentProjectInitial('examples/openglcontrol/', 'openglcontrol_demo.lpi'); - AddRecentProjectInitial('examples/imagelist/', 'project1.lpi'); - AddRecentProjectInitial('examples/', 'hello.lpi'); - FAlreadyPopulatedRecentFiles := True; - end; + // form editor + FShowGrid:=FXMLCfg.GetValue(Path+'FormEditor/ShowGrid',true); + FShowBorderSpacing:=FXMLCfg.GetValue(Path+'FormEditor/ShowBorderSpacing',false); + FGridColor:=FXMLCfg.GetValue(Path+'FormEditor/GridColor',DefaultGridColor); + FSnapToGrid:=FXMLCfg.GetValue(Path+'FormEditor/SnapToGrid',true); + FGridSizeX:=FXMLCfg.GetValue(Path+'FormEditor/GridSizeX',DefaultGridSize); + FGridSizeY:=FXMLCfg.GetValue(Path+'FormEditor/GridSizeY',DefaultGridSize); + FShowGuideLines:=FXMLCfg.GetValue(Path+'FormEditor/ShowGuideLines',true); + FSnapToGuideLines:=FXMLCfg.GetValue(Path+'FormEditor/SnapToGuideLines',true); + FGuideLineColorLeftTop:=FXMLCfg.GetValue(Path+'FormEditor/GuideLineColorLeftTop', + DefaultGuideLineColorLeftTop); + FGuideLineColorRightBottom:=FXMLCfg.GetValue(Path+'FormEditor/GuideLineColorRightBottom', + DefaultGuideLineColorRightBottom); + FShowComponentCaptions:=FXMLCfg.GetValue(Path+'FormEditor/ShowComponentCaptions',true); + FShowEditorHints:=FXMLCfg.GetValue(Path+'FormEditor/ShowEditorHints',true); + FAutoCreateFormsOnOpen:=FXMLCfg.GetValue(Path+'FormEditor/AutoCreateFormsOnOpen',true); + FCheckPackagesOnFormCreate:=FXMLCfg.GetValue(Path+'FormEditor/CheckPackagesOnFormCreate',true); + FRightClickSelects:=FXMLCfg.GetValue(Path+'FormEditor/RightClickSelects',true); + FGrabberColor:=FXMLCfg.GetValue(Path+'FormEditor/GrabberColor/Value',FGrabberColor); + FMarkerColor:=FXMLCfg.GetValue(Path+'FormEditor/MarkerColor/Value',FMarkerColor); + FRubberbandSelectionColor:=FXMLCfg.GetValue(Path+'FormEditor/Rubberband/SelectionColor/Value', + FRubberbandSelectionColor); + FRubberbandCreationColor:=FXMLCfg.GetValue(Path+'FormEditor/Rubberband/CreationColor/Value', + FRubberbandCreationColor); + FRubberbandSelectsGrandChilds:=FXMLCfg.GetValue(Path+'FormEditor/Rubberband/SelectsGrandChilds/Value',DefaultRubberbandSelectsGrandChilds); + FDesignerPaintLazy:=FXMLCfg.GetValue(Path+'FormEditor/DesignerPaint/Lazy/Value',true); + FCreateComponentFocusNameProperty:=FXMLCfg.GetValue( + Path+'FormEditor/CreateComponentFocusNameProperty/Value',false); + FSwitchToFavoritesOITab:=FXMLCfg.GetValue(Path+'FormEditor/SwitchToFavoritesOITab/Value',false); - // external tools - fExternalUserTools.Load(FConfigStore,Path+'ExternalTools/'); - FMaxExtToolsInParallel:=XMLConfig.GetValue(Path+'ExternalTools/MaxInParallel',0); - - // naming - LoadPascalFileExt(Path+''); - if FileVersion>=103 then begin - fCharcaseFileAction:=CharCaseFileActionNameToType(XMLConfig.GetValue( - Path+'CharcaseFileAction/Value','')); - end else begin - if XMLConfig.GetValue(Path+'PascalFileAskLowerCase/Value',true) then - fCharcaseFileAction:=ccfaAsk - else if XMLConfig.GetValue(Path+'PascalFileAutoLowerCase/Value',false) - then - fCharcaseFileAction:=ccfaAutoRename - else - fCharcaseFileAction:=ccfaIgnore; - end; - if FileVersion>=104 then - CurPath:=Path+'AmbiguousFileAction/Value' + if not OnlyDesktop then + LoadNonDesktop(Path); + + // project inspector + FProjInspSortAlphabetically:=FXMLCfg.GetValue(Path+'ProjInspSortAlphabetically/Value',false); + FProjInspShowDirHierarchy:=FXMLCfg.GetValue(Path+'ProjInspShowDirHierarchy/Value',false); + + // package editor + FPackageEditorSortAlphabetically:=FXMLCfg.GetValue(Path+'PackageEditorSortAlphabetically/Value',false); + FPackageEditorShowDirHierarchy:=FXMLCfg.GetValue(Path+'PackageEditorShowDirHierarchy/Value',false); + + // hints + FCheckDiskChangesWithLoading:=FXMLCfg.GetValue(Path+'CheckDiskChangesWithLoading/Value',false); + FShowHintsForComponentPalette:=FXMLCfg.GetValue(Path+'ShowHintsForComponentPalette/Value',true); + FShowHintsForMainSpeedButtons:=FXMLCfg.GetValue(Path+'ShowHintsForMainSpeedButtons/Value',true); + + // messages view + fMsgViewDblClickJumps:=FXMLCfg.GetValue(Path+'MsgViewDblClickJumps/Value',false); + fMsgViewFocus:=FXMLCfg.GetValue(Path+'MsgViewFocus/Value',DefaultMsgViewFocus); + FShowMessagesIcons:=FXMLCfg.GetValue(Path+'MsgView/ShowMessagesIcons/Value',true); + FMsgViewStayOnTop:=FXMLCfg.GetValue(Path+'MsgView/StayOnTop/Value',false); + FMsgViewShowTranslations:=FXMLCfg.GetValue(Path+'MsgView/ShowTranslations/Value',false); + FMsgViewAlwaysDrawFocused:=FXMLCfg.GetValue(Path+'MsgView/AlwaysDrawFocused/Value',false); + FMsgViewFilenameStyle:=StrToMsgWndFilenameStyle(FXMLCfg.GetValue( + Path+'MsgView/Filename/Style',MsgWndFileNameStyleNames[mwfsShort])); + for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do + fMsgViewColors[mwc]:=FXMLCfg.GetValue( + Path+'MsgView/Colors/'+MsgWndColorNames[mwc],MsgWndDefaultColors[mwc]); + for u:=low(TMessageLineUrgency) to high(TMessageLineUrgency) do + fMsgColors[u] := FXMLCfg.GetValue( + Path+'MsgView/MsgColors/'+dbgs(u),clDefault); + MsgViewFilters.LoadFromXMLConfig(FXMLCfg,'MsgView/Filters/'); + FMsgViewShowFPCMsgLinesCompiled:=FXMLCfg.GetValue(Path+'MsgView/FPCMsg/ShowLinesCompiled',false); + + // glyphs + FShowButtonGlyphs := TApplicationShowGlyphs(FXMLCfg.GetValue(Path+'ShowButtonGlyphs/Value', + Ord(sbgSystem))); + FShowMenuGlyphs := TApplicationShowGlyphs(FXMLCfg.GetValue(Path+'ShowMenuGlyphs/Value', + Ord(sbgSystem))); + + // recent files and directories + FMaxRecentOpenFiles:=FXMLCfg.GetValue(Path+'Recent/OpenFiles/Max',DefaultMaxRecentOpenFiles); + LoadRecentList(FXMLCfg,FRecentOpenFiles,Path+'Recent/OpenFiles/',rltFile); + FMaxRecentProjectFiles:=FXMLCfg.GetValue(Path+'Recent/ProjectFiles/Max',DefaultMaxRecentProjectFiles); + LoadRecentList(FXMLCfg,FRecentProjectFiles,Path+'Recent/ProjectFiles/',rltFile); + FMaxRecentPackageFiles:=FXMLCfg.GetValue(Path+'Recent/PackageFiles/Max',DefaultMaxRecentPackageFiles); + LoadRecentList(FXMLCfg,FRecentPackageFiles,Path+'Recent/PackageFiles/',rltFile); + + FAlreadyPopulatedRecentFiles := FXMLCfg.GetValue(Path+'Recent/AlreadyPopulated', false); + + // other recent settings + FLastEventMethodSectionPrompt:=InsertClassSectionResultNameToSection(FXMLCfg.GetValue( + 'Recent/EventMethodSectionPrompt/Value', + InsertClassSectionNames[DefaultEventMethodSection])); + + // Add example projects to an empty project list if examples have write access + if (FRecentProjectFiles.count=0) and (not FAlreadyPopulatedRecentFiles) then begin + AddRecentProjectInitial('examples/jpeg/', 'jpegexample.lpi'); + AddRecentProjectInitial('examples/sprites/', 'spriteexample.lpi'); + AddRecentProjectInitial('examples/openglcontrol/', 'openglcontrol_demo.lpi'); + AddRecentProjectInitial('examples/imagelist/', 'project1.lpi'); + AddRecentProjectInitial('examples/', 'hello.lpi'); + FAlreadyPopulatedRecentFiles := True; + end; + + // external tools + fExternalUserTools.Load(FConfigStore,Path+'ExternalTools/'); + FMaxExtToolsInParallel:=FXMLCfg.GetValue(Path+'ExternalTools/MaxInParallel',0); + + // naming + LoadPascalFileExt(Path+''); + if FFileVersion>=103 then begin + fCharcaseFileAction:=CharCaseFileActionNameToType(FXMLCfg.GetValue( + Path+'CharcaseFileAction/Value','')); + end else begin + if FXMLCfg.GetValue(Path+'PascalFileAskLowerCase/Value',true) then + fCharcaseFileAction:=ccfaAsk + else if FXMLCfg.GetValue(Path+'PascalFileAutoLowerCase/Value',false) + then + fCharcaseFileAction:=ccfaAutoRename else - CurPath:=Path+'AmbigiousFileAction/Value'; - fAmbiguousFileAction:=AmbiguousFileActionNameToType(XMLConfig.GetValue( - CurPath,AmbiguousFileActionNames[fAmbiguousFileAction])); - FUnitRenameReferencesAction:=UnitRenameReferencesActionNameToType(XMLConfig.GetValue( - Path+'UnitRenameReferencesAction/Value',UnitRenameReferencesActionNames[urraAsk])); - FAskForFilenameOnNewFile:=XMLConfig.GetValue( - Path+'AskForFilenameOnNewFile/Value',false); - FLowercaseDefaultFilename:=XMLConfig.GetValue( - Path+'LowercaseDefaultFilename/Value',true); - - // component palette - FComponentPaletteOptions.Load(XMLConfig); - - // fpdoc - FPDocPaths := XMLConfig.GetValue(Path+'LazDoc/Paths',''); - if FileVersion<=105 then - FPDocPaths:=LineBreaksToDelimiter(FPDocPaths,';'); - - // 'new items' - FNewUnitTemplate:=XMLConfig.GetValue(Path+'New/UnitTemplate/Value',FileDescNamePascalUnit); - FNewFormTemplate:=XMLConfig.GetValue(Path+'New/FormTemplate/Value',FileDescNameLCLForm); - - // object inspector - FObjectInspectorOptions.Load; - FObjectInspectorOptions.SaveBounds:=false; - - // IDEEditorGroups - for i := 0 to IDEEditorGroups.Count - 1 do begin - Rec := IDEEditorGroups[i]; - NodeName := Rec^.GroupClass.ClassName; - Rec^.Collapsed := XMLConfig.GetValue(Path+'OptionDialog/Tree/' + NodeName + '/Value', - Rec^.DefaultCollapsed); - if Rec^.Items <> nil then begin - for j := 0 to Rec^.Items.Count - 1 do begin - Rec^.Items[j]^.Collapsed := XMLConfig.GetValue(Path+'OptionDialog/Tree/' + NodeName - + '/' + Rec^.Items[j]^.EditorClass.ClassName + '/Value', - Rec^.Items[j]^.DefaultCollapsed); - end; + fCharcaseFileAction:=ccfaIgnore; + end; + if FFileVersion>=104 then + CurPath:=Path+'AmbiguousFileAction/Value' + else + CurPath:=Path+'AmbigiousFileAction/Value'; + fAmbiguousFileAction:=AmbiguousFileActionNameToType(FXMLCfg.GetValue( + CurPath,AmbiguousFileActionNames[fAmbiguousFileAction])); + FUnitRenameReferencesAction:=UnitRenameReferencesActionNameToType(FXMLCfg.GetValue( + Path+'UnitRenameReferencesAction/Value',UnitRenameReferencesActionNames[urraAsk])); + FAskForFilenameOnNewFile:=FXMLCfg.GetValue(Path+'AskForFilenameOnNewFile/Value',false); + FLowercaseDefaultFilename:=FXMLCfg.GetValue(Path+'LowercaseDefaultFilename/Value',true); + FMultipleInstances:=StrToIDEMultipleInstancesOption(FXMLCfg.GetValue(Path+'MultipleInstances/Value','')); + + // fpdoc + FPDocPaths := FXMLCfg.GetValue(Path+'LazDoc/Paths',''); + if FFileVersion<=105 then + FPDocPaths:=LineBreaksToDelimiter(FPDocPaths,';'); + + // 'new items' + FNewUnitTemplate:=FXMLCfg.GetValue(Path+'New/UnitTemplate/Value',FileDescNamePascalUnit); + FNewFormTemplate:=FXMLCfg.GetValue(Path+'New/FormTemplate/Value',FileDescNameLCLForm); + + // object inspector + FObjectInspectorOptions.Load; + FObjectInspectorOptions.SaveBounds:=false; + + // IDEEditorGroups + for i := 0 to IDEEditorGroups.Count-1 do + begin + Rec := IDEEditorGroups[i]; + NodeName := Rec^.GroupClass.ClassName; + Rec^.Collapsed := FXMLCfg.GetValue(Path+'OptionDialog/Tree/' + NodeName + '/Value', + Rec^.DefaultCollapsed); + if Rec^.Items <> nil then begin + for j := 0 to Rec^.Items.Count-1 do begin + Rec^.Items[j]^.Collapsed := FXMLCfg.GetValue(Path+'OptionDialog/Tree/' + NodeName + + '/' + Rec^.Items[j]^.EditorClass.ClassName + '/Value', + Rec^.Items[j]^.DefaultCollapsed); end; end; + end; - finally - Cfg.Free; + // The user can define many desktops. They are saved under path Desktops/. + FDesktops.Clear; + FDesktops.SetConfig(FXMLCfg, FConfigStore); + FActiveDesktopName := ''; + + if FFileVersion<109 then begin + //load old default desktop - backwards compatibility - or create a new default desktop + CurPath := 'Desktop/'; // New place: Desktop/ + if not FXMLCfg.HasPath(CurPath, True) then + CurPath := Path+'Desktop/'; // Old place: EnvironmentOptions/Desktop/ + if FXMLCfg.HasPath(CurPath, True) or//default desktop exists in the settings + ((ActiveDesktop.IDECoolBarOptions.ToolBars.Count = 0) and + (ActiveDesktop.FIDEDialogLayoutList.Count = 0))//desktop is empty, load it to recreate! + then + begin + ActiveDesktop.SetConfig(FXMLCfg, FConfigStore); + ActiveDesktop.Load(CurPath); + end; + end else begin + CurPath := 'Desktops/'; + FDebugDesktopName := FXMLCfg.GetValue(CurPath+'DebugDesktop', ''); + FActiveDesktopName := FXMLCfg.GetValue(CurPath+'ActiveDesktop', ''); + j := FXMLCfg.GetValue(CurPath+'Count', 1); + for i := 1 to j do + FDesktops.AddFromCfg(CurPath+'Desktop'+IntToStr(i)+'/'); end; + if FFileVersion<=109 then begin + FXMLCfg.DeletePath('Desktop'); + FXMLCfg.DeletePath(CurPath+'Desktop'); + end; + + Desktop.Assign(ActiveDesktop, False); + Desktop.ExportSettingsToIDE; + FileUpdated; except - // ToDo on E: Exception do DebugLn('[TEnvironmentOptions.Load] error reading "',FFilename,'": '+E.Message); end; end; -procedure TEnvironmentOptions.Save(OnlyDesktop: boolean); -var - XMLConfig: TXMLConfig; +procedure TEnvironmentOptions.SaveNonDesktop(Path: String); procedure SaveBackupInfo(var BackupInfo: TBackupInfo; Path:string); var i:integer; @@ -1508,347 +1891,300 @@ else i:=5; // bakUserDefinedAddExt; end; - XMLConfig.SetDeleteValue(Path+'Type',i,5); - XMLConfig.SetDeleteValue(Path+'AdditionalExtension',AdditionalExtension,'.bak'); - XMLConfig.SetDeleteValue(Path+'MaxCounter',MaxCounter,10); - XMLConfig.SetDeleteValue(Path+'SubDirectory',SubDirectory,'backup'); + FXMLCfg.SetDeleteValue(Path+'Type',i,5); + FXMLCfg.SetDeleteValue(Path+'AdditionalExtension',AdditionalExtension,'.bak'); + FXMLCfg.SetDeleteValue(Path+'MaxCounter',MaxCounter,10); + FXMLCfg.SetDeleteValue(Path+'SubDirectory',SubDirectory,'backup'); end; end; var - Path: String; + BaseDir, CurLazDir: String; + EventType: TDBGEventType; +begin + // files + CurLazDir:=ChompPathDelim(LazarusDirectory); + if not GlobalMacroList.StrHasMacros(CurLazDir) then begin + BaseDir:=ExtractFilePath(ChompPathDelim(GetPrimaryConfigPath)); + if (CompareFilenames(BaseDir,CurLazDir)=0) + or FileIsInPath(CurLazDir,BaseDir) then begin + // the pcp directory is in the lazarus directory + // or the lazarus directory is a sibling or a sub dir of a sibling of the pcp + // examples: + // pcp=C:\Lazarus\config, lazdir=C:\Lazarus => store '..' + // pcp=/home/user/.lazarus, lazdir=/home/user/freepascal/lazarus => store ../freepascal/lazarus + CurLazDir:=CreateRelativePath(CurLazDir,GetPrimaryConfigPath); + end; + FXMLCfg.SetValue(Path+'LazarusDirectory/Value',CurLazDir); // always store, no SetDeleteValue + end; + SaveRecentList(FXMLCfg,FLazarusDirHistory,Path+'LazarusDirectory/History/'); + FXMLCfg.SetDeleteValue(Path+'CompilerFilename/Value',CompilerFilename,''); + SaveRecentList(FXMLCfg,FCompilerFileHistory,Path+'CompilerFilename/History/'); + FXMLCfg.SetDeleteValue(Path+'FPCSourceDirectory/Value',FPCSourceDirectory,''); + SaveRecentList(FXMLCfg,FFPCSourceDirHistory,Path+'FPCSourceDirectory/History/'); + FXMLCfg.SetDeleteValue(Path+'MakeFilename/Value',MakeFilename,DefaultMakefilename); + SaveRecentList(FXMLCfg,FMakeFileHistory,Path+'MakeFilename/History/'); + FXMLCfg.SetDeleteValue(Path+'TestBuildDirectory/Value',TestBuildDirectory,''); + SaveRecentList(FXMLCfg,FTestBuildDirHistory,Path+'TestBuildDirectory/History/'); + FXMLCfg.SetDeleteValue(Path+'CompilerMessagesFilename/Value',CompilerMessagesFilename,''); + SaveRecentList(FXMLCfg,FCompilerMessagesFileHistory,Path+'CompilerMessagesFilename/History/'); + + // Primary-config verification + FXMLCfg.SetDeleteValue(Path+'LastCalledByLazarusFullPath/Value',FLastCalledByLazarusFullPath,''); + + // global buid options + FConfigStore.AppendBasePath('BuildMatrix'); + FBuildMatrixOptions.SaveToConfig(FConfigStore,IsGlobalMode); + FConfigStore.UndoAppendBasePath; + FXMLCfg.SetDeleteValue(Path+'Build/UseBuildModes',FUseBuildModes,false); + + // backup + SaveBackupInfo(FBackupInfoProjectFiles,Path+'BackupProjectFiles/'); + SaveBackupInfo(FBackupInfoOtherFiles,Path+'BackupOtherFiles/'); + + // debugger + FDebuggerConfig.Save; + SaveDebuggerPropertiesList; + FXMLCfg.SetDeleteValue(Path+'DebuggerFilename/Value',DebuggerFilename,''); + FXMLCfg.SetDeleteValue(Path+'DebuggerOptions/ShowStopMessage/Value', + FDebuggerShowStopMessage, True); + FXMLCfg.SetDeleteValue(Path+'DebuggerOptions/DebuggerResetAfterRun/Value', + FDebuggerResetAfterRun, False); + SaveRecentList(FXMLCfg,FDebuggerFileHistory,Path+'DebuggerFilename/History/'); + FXMLCfg.SetDeleteValue(Path+'DebuggerSearchPath/Value',DebuggerSearchPath,''); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogClearOnRun',FDebuggerEventLogClearOnRun, True); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogCheckLineLimit',FDebuggerEventLogCheckLineLimit, False); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogLineLimit',FDebuggerEventLogLineLimit, 1000); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogShowBreakpoint',FDebuggerEventLogShowBreakpoint, False); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogShowProcess',FDebuggerEventLogShowProcess, True); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogShowThread',FDebuggerEventLogShowThread, True); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogShowModule',FDebuggerEventLogShowModule, False); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogShowOutput',FDebuggerEventLogShowOutput, True); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogShowWindows',FDebuggerEventLogShowWindows, False); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogShowDebugger',FDebuggerEventLogShowDebugger, True); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogUseColors',FDebuggerEventLogUseColors, True); + for EventType := Low(TDBGEventType) to High(TDBGEventType) do + begin + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogColors/' + + GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Background', + FDebuggerEventLogColors[EventType].Background, + DebuggerDefaultColors[EventType].Background); + FXMLCfg.SetDeleteValue(Path+'Debugger/EventLogColors/' + + GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Foreground', + FDebuggerEventLogColors[EventType].Foreground, + DebuggerDefaultColors[EventType].Foreground); + end; +end; + +procedure TEnvironmentOptions.Save(OnlyDesktop: boolean); +var + Path, CurPath, NodeName: String; i, j: Integer; - NodeName: String; Rec: PIDEOptionsGroupRec; - Cfg: TXMLOptionsStorage; - EventType: TDBGEventType; - CurLazDir: String; - BaseDir: String; mwc: TMsgWndColor; + u: TMessageLineUrgency; + xSaveDesktop: TDesktopOpt; + xActiveDesktopName: string; begin - Cfg:=nil; try - XMLConfig:=GetXMLCfg(true); - Cfg:=TXMLOptionsStorage.Create(XMLConfig); - try - Path:='EnvironmentOptions/'; - - XMLConfig.SetValue(Path+'Version/Value',EnvOptsVersion); - XMLConfig.SetValue(Path+'Version/Lazarus',LazarusVersionStr); - - // language - XMLConfig.SetDeleteValue(Path+'Language/ID',LanguageID,''); - - // auto save - XMLConfig.SetDeleteValue(Path+'AutoSave/AskSaveSessionOnly' - ,FAskSaveSessionOnly,false); - XMLConfig.SetDeleteValue(Path+'AutoSave/EditorFiles' - ,FAutoSaveEditorFiles,true); - XMLConfig.SetDeleteValue(Path+'AutoSave/Project', - FAutoSaveProject,true); - XMLConfig.SetDeleteValue(Path+'AutoSave/IntervalInSecs' - ,FAutoSaveIntervalInSecs,600); - XMLConfig.SetDeleteValue(Path+'AutoSave/LastSavedProjectFile' - ,FLastSavedProjectFile,''); - XMLConfig.SetDeleteValue(Path+'AutoSave/OpenLastProjectAtStart', - FOpenLastProjectAtStart,true); - - // windows - IDEWindowCreators.SimpleLayoutStorage.SaveToConfig(Cfg,Path+'Desktop/'); - FIDEDialogLayoutList.SaveToConfig(FConfigStore,Path+'Desktop/Dialogs/'); - XMLConfig.SetDeleteValue(Path+'Desktop/SingleTaskBarButton/Value', - FSingleTaskBarButton, False); - XMLConfig.SetDeleteValue(Path+'Desktop/HideIDEOnRun/Value',FHideIDEOnRun, - false); - XMLConfig.SetDeleteValue(Path+'Desktop/IDETitleStartsWithProject/Value', - FIDETitleStartsWithProject,false); - XMLConfig.SetDeleteValue(Path+'Desktop/IDETitleIncludesBuildMode/Value', - FIDETitleIncludesBuildMode,false); - XMLConfig.SetDeleteValue(Path+'Desktop/IDEProjectDirectoryInIdeTitle/Value', - FIDEProjectDirectoryInIdeTitle,false); - XMLConfig.SetDeleteValue(Path+'Desktop/ComponentPaletteVisible/Value', - FComponentPaletteVisible,true); - XMLConfig.SetDeleteValue(Path+'Desktop/IDESpeedButtonsVisible/Value', - FIDESpeedButtonsVisible,true); - XMLConfig.SetDeleteValue(Path+'Desktop/CompletionWindowWidth/Value', - FCompletionWindowWidth, 320); - XMLConfig.SetDeleteValue(Path+'Desktop/CompletionWindowHeight/Value', - FCompletionWindowHeight, 6); - - // Window menu - XMLConfig.SetDeleteValue(Path+'Desktop/IDENameForDesignedFormList/Value', - FIDENameForDesignedFormList,false); - // form editor - XMLConfig.SetDeleteValue(Path+'FormEditor/ShowBorderSpacing', - FShowBorderSpacing,false); - XMLConfig.SetDeleteValue(Path+'FormEditor/ShowGrid',FShowGrid,true); - XMLConfig.SetDeleteValue(Path+'FormEditor/GridColor',FGridColor,clBlack); - XMLConfig.SetDeleteValue(Path+'FormEditor/SnapToGrid',FSnapToGrid,true); - XMLConfig.SetDeleteValue(Path+'FormEditor/GridSizeX',FGridSizeX,8); - XMLConfig.SetDeleteValue(Path+'FormEditor/GridSizeY',FGridSizeY,8); - XMLConfig.SetDeleteValue(Path+'FormEditor/ShowGuideLines',FShowGuideLines, - true); - XMLConfig.SetDeleteValue(Path+'FormEditor/SnapToGuideLines', - FSnapToGuideLines,true); - XMLConfig.SetDeleteValue(Path+'FormEditor/GuideLineColorLeftTop', - FGuideLineColorLeftTop,clGreen); - XMLConfig.SetDeleteValue(Path+'FormEditor/GuideLineColorRightBottom', - FGuideLineColorRightBottom,clBlue); - XMLConfig.SetDeleteValue(Path+'FormEditor/ShowComponentCaptions', - FShowComponentCaptions,true); - XMLConfig.SetDeleteValue( - Path+'FormEditor/ShowEditorHints',FShowEditorHints,true); - XMLConfig.SetDeleteValue( - Path+'FormEditor/AutoCreateFormsOnOpen',FAutoCreateFormsOnOpen,true); - XMLConfig.SetDeleteValue( - Path+'FormEditor/CheckPackagesOnFormCreate',FCheckPackagesOnFormCreate,true); - XMLConfig.SetDeleteValue( - Path+'FormEditor/RightClickSelects',FRightClickSelects,true); - XMLConfig.SetDeleteValue( - Path+'FormEditor/GrabberColor/Value',FGrabberColor,clBlack); - XMLConfig.SetDeleteValue( - Path+'FormEditor/MarkerColor/Value',FMarkerColor,clDkGray); - XMLConfig.SetDeleteValue( - Path+'FormEditor/Rubberband/SelectionColor/Value', - FRubberbandSelectionColor,clBlack); - XMLConfig.SetDeleteValue( - Path+'FormEditor/Rubberband/CreationColor/Value', - FRubberbandCreationColor,clRed); - XMLConfig.SetDeleteValue( - Path+'FormEditor/Rubberband/SelectsGrandChilds/Value', - FRubberbandSelectsGrandChilds,false); - XMLConfig.SetDeleteValue( - Path+'FormEditor/DesignerPaint/Lazy/Value',FDesignerPaintLazy,true); - XMLConfig.SetDeleteValue( - Path+'FormEditor/CreateComponentFocusNameProperty/Value',FCreateComponentFocusNameProperty,false); - XMLConfig.SetDeleteValue( - Path+'FormEditor/SwitchToFavoritesOITab/Value',FSwitchToFavoritesOITab,false); - - XMLConfig.SetDeleteValue( - Path+'ShowCompileDialog/Value',FShowCompileDialog,False); - XMLConfig.SetDeleteValue( - Path+'AutoCloseCompileDialog/Value',FAutoCloseCompileDialog,False); - - if not OnlyDesktop then begin - // files - CurLazDir:=ChompPathDelim(LazarusDirectory); - if not GlobalMacroList.StrHasMacros(CurLazDir) then begin - BaseDir:=ExtractFilePath(ChompPathDelim(GetPrimaryConfigPath)); - if (CompareFilenames(BaseDir,CurLazDir)=0) - or FileIsInPath(CurLazDir,BaseDir) then begin - // the pcp directory is in the lazarus directory - // or the lazarus directory is a sibling or a sub dir of a sibling of the pcp - // examples: - // pcp=C:\Lazarus\config, lazdir=C:\Lazarus => store '..' - // pcp=/home/user/.lazarus, lazdir=/home/user/freepascal/lazarus => store ../freepascal/lazarus - CurLazDir:=CreateRelativePath(CurLazDir,GetPrimaryConfigPath); - end; - XMLConfig.SetValue(Path+'LazarusDirectory/Value',CurLazDir); // always store, no SetDeleteValue - end; - SaveRecentList(XMLConfig,FLazarusDirHistory, - Path+'LazarusDirectory/History/'); - XMLConfig.SetDeleteValue( - Path+'CompilerFilename/Value',CompilerFilename,''); - SaveRecentList(XMLConfig,FCompilerFileHistory, - Path+'CompilerFilename/History/'); - XMLConfig.SetDeleteValue(Path+'FPCSourceDirectory/Value',FPCSourceDirectory,''); - SaveRecentList(XMLConfig,FFPCSourceDirHistory, - Path+'FPCSourceDirectory/History/'); - XMLConfig.SetDeleteValue(Path+'MakeFilename/Value',MakeFilename,DefaultMakefilename); - SaveRecentList(XMLConfig,FMakeFileHistory, - Path+'MakeFilename/History/'); - XMLConfig.SetDeleteValue(Path+'TestBuildDirectory/Value',TestBuildDirectory,''); - SaveRecentList(XMLConfig,FTestBuildDirHistory, - Path+'TestBuildDirectory/History/'); - XMLConfig.SetDeleteValue( - Path+'CompilerMessagesFilename/Value',CompilerMessagesFilename,''); - SaveRecentList(XMLConfig,FCompilerMessagesFileHistory, - Path+'CompilerMessagesFilename/History/'); - - // Primary-conyfig vurification - XMLConfig.SetDeleteValue( - Path+'LastCalledByLazarusFullPath/Value',FLastCalledByLazarusFullPath,''); - - // global buid options - Cfg.AppendBasePath('BuildMatrix'); - FBuildMatrixOptions.SaveToConfig(Cfg,IsGlobalMode); - Cfg.UndoAppendBasePath; - XMLConfig.SetDeleteValue(Path+'Build/UseBuildModes',FUseBuildModes,false); - - // backup - SaveBackupInfo(FBackupInfoProjectFiles - ,Path+'BackupProjectFiles/'); - SaveBackupInfo(FBackupInfoOtherFiles - ,Path+'BackupOtherFiles/'); - - // debugger - FDebuggerConfig.Save; - SaveDebuggerPropertiesList; - XMLConfig.SetDeleteValue(Path+'DebuggerFilename/Value', - DebuggerFilename,''); - XMLConfig.SetDeleteValue(Path+'DebuggerOptions/ShowStopMessage/Value', - FDebuggerShowStopMessage, True); - XMLConfig.SetDeleteValue(Path+'DebuggerOptions/DebuggerResetAfterRun/Value', - FDebuggerResetAfterRun, False); - SaveRecentList(XMLConfig,FDebuggerFileHistory, - Path+'DebuggerFilename/History/'); - XMLConfig.SetDeleteValue(Path+'DebuggerSearchPath/Value', - DebuggerSearchPath,''); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogClearOnRun', - FDebuggerEventLogClearOnRun, True); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogCheckLineLimit', - FDebuggerEventLogCheckLineLimit, False); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogLineLimit', - FDebuggerEventLogLineLimit, 1000); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogShowBreakpoint', - FDebuggerEventLogShowBreakpoint, False); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogShowProcess', - FDebuggerEventLogShowProcess, True); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogShowThread', - FDebuggerEventLogShowThread, True); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogShowModule', - FDebuggerEventLogShowModule, False); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogShowOutput', - FDebuggerEventLogShowOutput, True); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogShowWindows', - FDebuggerEventLogShowWindows, False); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogShowDebugger', - FDebuggerEventLogShowDebugger, True); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogUseColors', - FDebuggerEventLogUseColors, True); - for EventType := Low(TDBGEventType) to High(TDBGEventType) do - begin - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogColors/' + - GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Background', - FDebuggerEventLogColors[EventType].Background, - DebuggerDefaultColors[EventType].Background); - XMLConfig.SetDeleteValue(Path+'Debugger/EventLogColors/' + - GetEnumName(TypeInfo(EventType), Ord(EventType)) + '/Foreground', - FDebuggerEventLogColors[EventType].Foreground, - DebuggerDefaultColors[EventType].Foreground); + InitXMLCfg(true); + // ToDo: Get rid of EnvironmentOptions/ path. The whole file is about + // environment options. Many section are not under it any more. + Path:='EnvironmentOptions/'; + + FXMLCfg.SetValue(Path+'Version/Value',EnvOptsVersion); + FXMLCfg.SetValue(Path+'Version/Lazarus',LazarusVersionStr); + + // language + FXMLCfg.SetDeleteValue(Path+'Language/ID',LanguageID,''); + + // auto save + FXMLCfg.SetDeleteValue(Path+'AutoSave/AskSaveSessionOnly',FAskSaveSessionOnly,false); + FXMLCfg.SetDeleteValue(Path+'AutoSave/EditorFiles',FAutoSaveEditorFiles,true); + FXMLCfg.SetDeleteValue(Path+'AutoSave/Project',FAutoSaveProject,true); + FXMLCfg.SetDeleteValue(Path+'AutoSave/IntervalInSecs',FAutoSaveIntervalInSecs,DefaultAutoSaveIntervalInSecs); + FXMLCfg.SetDeleteValue(Path+'AutoSave/LastSavedProjectFile',FLastSavedProjectFile,''); + FXMLCfg.SetDeleteValue(Path+'AutoSave/OpenLastProjectAtStart',FOpenLastProjectAtStart,true); + FXMLCfg.SetDeleteValue(Path+'AutoSave/ActiveDesktop', FAutoSaveActiveDesktop, True); + if FOpenLastProjectAtStart and (FLastOpenPackages.Count > 0) then + begin + for i := 0 to FLastOpenPackages.Count-1 do + FXMLCfg.SetValue(Path+'AutoSave/LastOpenPackages/Package'+IntToStr(i+1), FLastOpenPackages[i]); + end else + FXMLCfg.DeletePath(Path+'AutoSave/LastOpenPackages/'); + + // form editor + FXMLCfg.SetDeleteValue(Path+'FormEditor/ShowBorderSpacing',FShowBorderSpacing,false); + FXMLCfg.SetDeleteValue(Path+'FormEditor/ShowGrid',FShowGrid,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/GridColor',FGridColor,DefaultGridColor); + FXMLCfg.SetDeleteValue(Path+'FormEditor/SnapToGrid',FSnapToGrid,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/GridSizeX',FGridSizeX,DefaultGridSize); + FXMLCfg.SetDeleteValue(Path+'FormEditor/GridSizeY',FGridSizeY,DefaultGridSize); + FXMLCfg.SetDeleteValue(Path+'FormEditor/ShowGuideLines',FShowGuideLines,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/SnapToGuideLines',FSnapToGuideLines,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/GuideLineColorLeftTop',FGuideLineColorLeftTop,DefaultGuideLineColorLeftTop); + FXMLCfg.SetDeleteValue(Path+'FormEditor/GuideLineColorRightBottom',FGuideLineColorRightBottom,DefaultGuideLineColorRightBottom); + FXMLCfg.SetDeleteValue(Path+'FormEditor/ShowComponentCaptions',FShowComponentCaptions,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/ShowEditorHints',FShowEditorHints,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/AutoCreateFormsOnOpen',FAutoCreateFormsOnOpen,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/CheckPackagesOnFormCreate',FCheckPackagesOnFormCreate,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/RightClickSelects',FRightClickSelects,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/GrabberColor/Value',FGrabberColor,clBlack); + FXMLCfg.SetDeleteValue(Path+'FormEditor/MarkerColor/Value',FMarkerColor,clDkGray); + FXMLCfg.SetDeleteValue(Path+'FormEditor/Rubberband/SelectionColor/Value', + FRubberbandSelectionColor,clBlack); + FXMLCfg.SetDeleteValue(Path+'FormEditor/Rubberband/CreationColor/Value', + FRubberbandCreationColor,clRed); + FXMLCfg.SetDeleteValue(Path+'FormEditor/Rubberband/SelectsGrandChilds/Value', + FRubberbandSelectsGrandChilds,DefaultRubberbandSelectsGrandChilds); + FXMLCfg.SetDeleteValue(Path+'FormEditor/DesignerPaint/Lazy/Value',FDesignerPaintLazy,true); + FXMLCfg.SetDeleteValue(Path+'FormEditor/CreateComponentFocusNameProperty/Value', + FCreateComponentFocusNameProperty,false); + FXMLCfg.SetDeleteValue(Path+'FormEditor/SwitchToFavoritesOITab/Value',FSwitchToFavoritesOITab,false); + + FXMLCfg.SetDeleteValue(Path+'ShowCompileDialog/Value',FShowCompileDialog,False); + FXMLCfg.SetDeleteValue(Path+'AutoCloseCompileDialog/Value',FAutoCloseCompileDialog,False); + + if not OnlyDesktop then + SaveNonDesktop(Path); + + // project inspector + FXMLCfg.SetDeleteValue(Path+'ProjInspSortAlphabetically/Value',FProjInspSortAlphabetically,false); + FXMLCfg.SetDeleteValue(Path+'ProjInspShowDirHierarchy/Value',FProjInspShowDirHierarchy,false); + + // package editor + FXMLCfg.SetDeleteValue(Path+'PackageEditorSortAlphabetically/Value',FPackageEditorSortAlphabetically,false); + FXMLCfg.SetDeleteValue(Path+'PackageEditorShowDirHierarchy/Value',FPackageEditorShowDirHierarchy,false); + + // hints + FXMLCfg.SetDeleteValue(Path+'CheckDiskChangesWithLoading/Value',FCheckDiskChangesWithLoading,false); + FXMLCfg.SetDeleteValue(Path+'ShowHintsForComponentPalette/Value',FShowHintsForComponentPalette,true); + FXMLCfg.SetDeleteValue(Path+'ShowHintsForMainSpeedButtons/Value',FShowHintsForMainSpeedButtons,true); + + // messages view + FXMLCfg.SetDeleteValue(Path+'MsgViewDblClickJumps/Value',fMsgViewDblClickJumps,false); + FXMLCfg.SetDeleteValue(Path+'MsgViewFocus/Value',fMsgViewFocus,DefaultMsgViewFocus); + FXMLCfg.SetDeleteValue(Path+'MsgView/ShowMessagesIcons/Value',FShowMessagesIcons,true); + FXMLCfg.SetDeleteValue(Path+'MsgView/StayOnTop/Value',FMsgViewStayOnTop,false); + FXMLCfg.SetDeleteValue(Path+'MsgView/ShowTranslations/Value',FMsgViewShowTranslations,false); + FXMLCfg.SetDeleteValue(Path+'MsgView/AlwaysDrawFocused/Value',FMsgViewAlwaysDrawFocused,false); + FXMLCfg.SetDeleteValue(Path+'MsgView/Filename/Style', + MsgWndFileNameStyleNames[FMsgViewFilenameStyle], + MsgWndFileNameStyleNames[mwfsShort]); + for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do + FXMLCfg.SetDeleteValue(Path+'MsgView/Colors/'+MsgWndColorNames[mwc], + fMsgViewColors[mwc],MsgWndDefaultColors[mwc]); + for u:=low(TMessageLineUrgency) to high(TMessageLineUrgency) do + FXMLCfg.SetDeleteValue(Path+'MsgView/MsgColors/'+dbgs(u), + fMsgColors[u],clDefault); + MsgViewFilters.SaveToXMLConfig(FXMLCfg,'MsgView/Filters/'); + FXMLCfg.SetDeleteValue(Path+'MsgView/FPCMsg/ShowLinesCompiled',FMsgViewShowFPCMsgLinesCompiled,false); + + // glyphs + FXMLCfg.SetDeleteValue(Path+'ShowButtonGlyphs/Value',Ord(FShowButtonGlyphs), Ord(sbgSystem)); + FXMLCfg.SetDeleteValue(Path+'ShowMenuGlyphs/Value',Ord(FShowMenuGlyphs), Ord(sbgSystem)); + + // recent files and directories + FXMLCfg.SetDeleteValue(Path+'Recent/OpenFiles/Max',FMaxRecentOpenFiles,DefaultMaxRecentOpenFiles); + SaveRecentList(FXMLCfg,FRecentOpenFiles,Path+'Recent/OpenFiles/'); + FXMLCfg.SetDeleteValue(Path+'Recent/ProjectFiles/Max',FMaxRecentProjectFiles,DefaultMaxRecentProjectFiles); + SaveRecentList(FXMLCfg,FRecentProjectFiles,Path+'Recent/ProjectFiles/'); + FXMLCfg.SetDeleteValue(Path+'Recent/PackageFiles/Max',FMaxRecentPackageFiles,DefaultMaxRecentPackageFiles); + SaveRecentList(FXMLCfg,FRecentPackageFiles,Path+'Recent/PackageFiles/'); + + FXMLCfg.SetDeleteValue(Path+'Recent/AlreadyPopulated', FAlreadyPopulatedRecentFiles, false); + + // other recent settings + FXMLCfg.SetDeleteValue('Recent/EventMethodSectionPrompt/Value', + InsertClassSectionResultNames[FLastEventMethodSectionPrompt], + InsertClassSectionResultNames[InsertClassSectionToResult[DefaultEventMethodSection]]); + + // external tools + fExternalUserTools.Save(FConfigStore,Path+'ExternalTools/'); + FXMLCfg.SetDeleteValue(Path+'ExternalTools/MaxInParallel',FMaxExtToolsInParallel,0); + + // naming + FXMLCfg.SetDeleteValue(Path+'Naming/PascalFileExtension', + PascalExtension[fPascalFileExtension],'.pas'); + FXMLCfg.SetDeleteValue(Path+'CharcaseFileAction/Value', + CharCaseFileActionNames[fCharcaseFileAction], + CharCaseFileActionNames[ccfaAutoRename]); + FXMLCfg.SetDeleteValue(Path+'AmbiguousFileAction/Value', + AmbiguousFileActionNames[fAmbiguousFileAction], + AmbiguousFileActionNames[afaAsk]); + FXMLCfg.SetDeleteValue(Path+'AskForFilenameOnNewFile/Value', + FAskForFilenameOnNewFile,false); + FXMLCfg.SetDeleteValue(Path+'LowercaseDefaultFilename/Value', + FLowercaseDefaultFilename,true); + FXMLCfg.SetDeleteValue(Path+'MultipleInstances/Value', + IDEMultipleInstancesOptionNames[FMultipleInstances], + IDEMultipleInstancesOptionNames[DefaultIDEMultipleInstancesOption]); + + // fpdoc + FXMLCfg.SetDeleteValue(Path+'LazDoc/Paths',FPDocPaths,''); + + // 'new items' + FXMLCfg.SetDeleteValue(Path+'New/UnitTemplate/Value',FNewUnitTemplate,FileDescNamePascalUnit); + FXMLCfg.SetDeleteValue(Path+'New/FormTemplate/Value',FNewFormTemplate,FileDescNameLCLForm); + + // object inspector + FObjectInspectorOptions.SaveBounds:=false; + FObjectInspectorOptions.Save; + + // IDEEditorGroups + for i := 0 to IDEEditorGroups.Count-1 do + begin + Rec := IDEEditorGroups[i]; + NodeName := Rec^.GroupClass.ClassName; + FXMLCfg.SetDeleteValue(Path+'OptionDialog/Tree/' + NodeName + '/Value', + Rec^.Collapsed, + Rec^.DefaultCollapsed); + if Rec^.Items <> nil then begin + for j := 0 to Rec^.Items.Count-1 do begin + FXMLCfg.SetDeleteValue(Path+'OptionDialog/Tree/' + NodeName + + '/' + Rec^.Items[j]^.EditorClass.ClassName + '/Value', + Rec^.Items[j]^.Collapsed, + Rec^.Items[j]^.DefaultCollapsed); end; end; + end; - // project inspector - XMLConfig.SetDeleteValue(Path+'ProjInspSortAlphabetically/Value', - FProjInspSortAlphabetically,false); - XMLConfig.SetDeleteValue(Path+'ProjInspShowDirHierarchy/Value', - FProjInspShowDirHierarchy,false); - - // package editor - XMLConfig.SetDeleteValue(Path+'PackageEditorSortAlphabetically/Value', - FPackageEditorSortAlphabetically,false); - XMLConfig.SetDeleteValue(Path+'PackageEditorShowDirHierarchy/Value', - FPackageEditorShowDirHierarchy,false); - - // hints - XMLConfig.SetDeleteValue(Path+'CheckDiskChangesWithLoading/Value', - FCheckDiskChangesWithLoading,false); - XMLConfig.SetDeleteValue(Path+'ShowHintsForComponentPalette/Value', - FShowHintsForComponentPalette,true); - XMLConfig.SetDeleteValue(Path+'ShowHintsForMainSpeedButtons/Value', - FShowHintsForMainSpeedButtons,true); - - // messages view - XMLConfig.SetDeleteValue(Path+'MsgViewDblClickJumps/Value', - fMsgViewDblClickJumps,false); - XMLConfig.SetDeleteValue(Path+'MsgViewFocus/Value', - fMsgViewFocus,DefaultMsgViewFocus); - XMLConfig.SetDeleteValue(Path+'Desktop/ShowMessagesIcons/Value', - FShowMessagesIcons,true); - XMLConfig.SetDeleteValue( - Path+'MsgView/StayOnTop/Value',FMsgViewStayOnTop,false); - XMLConfig.SetDeleteValue( - Path+'MsgView/ShowTranslations/Value',FMsgViewShowTranslations,false); - XMLConfig.SetDeleteValue( - Path+'MsgView/AlwaysDrawFocused/Value',FMsgViewAlwaysDrawFocused,false); - XMLConfig.SetDeleteValue(Path+'MsgView/Filename/Style', - MsgWndFileNameStyleNames[FMsgViewFilenameStyle], - MsgWndFileNameStyleNames[mwfsShort]); - for mwc:=low(TMsgWndColor) to high(TMsgWndColor) do - XMLConfig.SetDeleteValue(Path+'MsgView/Colors/'+MsgWndColorNames[mwc], - fMsgViewColors[mwc],MsgWndDefaultColors[mwc]); - MsgViewFilters.SaveToXMLConfig(XMLConfig,'MsgView/Filters/'); - - // glyphs - XMLConfig.SetDeleteValue(Path+'ShowButtonGlyphs/Value', - Ord(FShowButtonGlyphs), Ord(sbgSystem)); - XMLConfig.SetDeleteValue(Path+'ShowMenuGlyphs/Value', - Ord(FShowMenuGlyphs), Ord(sbgSystem)); - - // recent files and directories - XMLConfig.SetDeleteValue( - Path+'Recent/OpenFiles/Max',FMaxRecentOpenFiles,DefaultMaxRecentOpenFiles); - SaveRecentList(XMLConfig,FRecentOpenFiles, - Path+'Recent/OpenFiles/'); - XMLConfig.SetDeleteValue( - Path+'Recent/ProjectFiles/Max',FMaxRecentProjectFiles,DefaultMaxRecentProjectFiles); - SaveRecentList(XMLConfig,FRecentProjectFiles, - Path+'Recent/ProjectFiles/'); - XMLConfig.SetDeleteValue( - Path+'Recent/PackageFiles/Max',FMaxRecentPackageFiles,DefaultMaxRecentPackageFiles); - SaveRecentList(XMLConfig,FRecentPackageFiles, - Path+'Recent/PackageFiles/'); - - XMLConfig.SetDeleteValue(Path+'Recent/AlreadyPopulated', FAlreadyPopulatedRecentFiles, false); - - // external tools - fExternalUserTools.Save(FConfigStore,Path+'ExternalTools/'); - XMLConfig.SetDeleteValue(Path+'ExternalTools/MaxInParallel', - FMaxExtToolsInParallel,0); - - // naming - XMLConfig.SetDeleteValue(Path+'Naming/PascalFileExtension', - PascalExtension[fPascalFileExtension],'.pas'); - XMLConfig.SetDeleteValue(Path+'CharcaseFileAction/Value', - CharCaseFileActionNames[fCharcaseFileAction], - CharCaseFileActionNames[ccfaAutoRename]); - XMLConfig.SetDeleteValue(Path+'AmbiguousFileAction/Value', - AmbiguousFileActionNames[fAmbiguousFileAction], - AmbiguousFileActionNames[afaAsk]); - XMLConfig.SetDeleteValue(Path+'AskForFilenameOnNewFile/Value', - FAskForFilenameOnNewFile,false); - XMLConfig.SetDeleteValue(Path+'LowercaseDefaultFilename/Value', - FLowercaseDefaultFilename,true); - - // component palette - FComponentPaletteOptions.Save(XMLConfig); - - // fpdoc - XMLConfig.SetDeleteValue(Path+'LazDoc/Paths',FPDocPaths,''); - - // 'new items' - XMLConfig.SetDeleteValue(Path+'New/UnitTemplate/Value',FNewUnitTemplate,FileDescNamePascalUnit); - XMLConfig.SetDeleteValue(Path+'New/FormTemplate/Value',FNewFormTemplate,FileDescNameLCLForm); - - // object inspector - FObjectInspectorOptions.SaveBounds:=false; - FObjectInspectorOptions.Save; - - // IDEEditorGroups - for i := 0 to IDEEditorGroups.Count - 1 do begin - Rec := IDEEditorGroups[i]; - NodeName := Rec^.GroupClass.ClassName; - XMLConfig.SetDeleteValue(Path+'OptionDialog/Tree/' + NodeName + '/Value', - Rec^.Collapsed, - Rec^.DefaultCollapsed); - if Rec^.Items <> nil then begin - for j := 0 to Rec^.Items.Count - 1 do begin - XMLConfig.SetDeleteValue(Path+'OptionDialog/Tree/' + NodeName - + '/' + Rec^.Items[j]^.EditorClass.ClassName + '/Value', - Rec^.Items[j]^.Collapsed, - Rec^.Items[j]^.DefaultCollapsed); - end; - end; + //automatically save active desktops + if AutoSaveActiveDesktop then + begin + //save active desktop + Desktop.ImportSettingsFromIDE; + ActiveDesktop.Assign(Desktop); + + if Assigned(FLastDesktopBeforeDebug) then//are we in debug session? + begin + //save last desktop before the debug desktop + xSaveDesktop := FDesktops.Find(FLastDesktopBeforeDebug.Name); + if Assigned(xSaveDesktop) then + xSaveDesktop.Assign(FLastDesktopBeforeDebug, False); end; - finally - Cfg.Free; end; - XMLConfig.Flush; + if Assigned(FLastDesktopBeforeDebug) then + xActiveDesktopName := FLastDesktopBeforeDebug.Name + else + xActiveDesktopName := FActiveDesktopName; + + // The user can define many desktops. They are saved under path Desktops/. + FXMLCfg.DeletePath('Desktops/'); + CurPath:='Desktops/'; + FXMLCfg.SetDeleteValue(CurPath+'Count', FDesktops.Count, 0); + FXMLCfg.SetDeleteValue(CurPath+'DebugDesktop', FDebugDesktopName, ''); + FXMLCfg.SetDeleteValue(CurPath+'ActiveDesktop', xActiveDesktopName, ''); + for i := 0 to FDesktops.Count-1 do + begin + FDesktops[i].SetConfig(FXMLCfg, FConfigStore); + FDesktops[i].Save(CurPath+'Desktop'+IntToStr(i+1)+'/'); + end; + + FXMLCfg.Flush; FileUpdated; except on E: Exception do begin - // ToDo DebugLn('[TEnvironmentOptions.Save] error writing "',Filename,'": ',E.Message); end; end; @@ -1860,44 +2196,52 @@ end; procedure TEnvironmentOptions.AddToRecentOpenFiles(const AFilename: string); +var + Allow: Boolean; begin - AddToRecentList(AFilename,FRecentOpenFiles,FMaxRecentOpenFiles,rltFile); + Allow := True; + DoAddToRecentOpenFiles(AFilename, Allow); + if Allow then + AddToRecentList(AFilename,FRecentOpenFiles,FMaxRecentOpenFiles,rltFile); end; -procedure TEnvironmentOptions.RemoveFromRecentOpenFiles(const AFilename: string); +procedure TEnvironmentOptions.AddToRecentPackageFiles(const AFilename: string); +var + Allow: Boolean; begin - RemoveFromRecentList(AFilename,FRecentOpenFiles,rltFile); + Allow := True; + DoAddToRecentPackageFiles(AFilename, Allow); + if Allow then + AddToRecentList(AFilename,FRecentPackageFiles,FMaxRecentPackageFiles,rltFile); end; -procedure TEnvironmentOptions.AddToRecentProjectFiles(const AFilename: string); +procedure TEnvironmentOptions.RemoveFromRecentOpenFiles(const AFilename: string); begin - AddToRecentList(AFilename,FRecentProjectFiles,FMaxRecentProjectFiles,rltFile); - {$ifdef Windows} - SHAddToRecentDocs(SHARD_PATHW, PWideChar(UTF8ToUTF16(AFileName))); - {$endif} + RemoveFromRecentList(AFilename,FRecentOpenFiles,rltFile); end; -procedure TEnvironmentOptions.RemoveFromRecentProjectFiles( +procedure TEnvironmentOptions.RemoveFromRecentPackageFiles( const AFilename: string); begin - RemoveFromRecentList(AFilename,FRecentProjectFiles,rltFile); + RemoveFromRecentList(AFilename,FRecentPackageFiles,rltFile); end; -procedure InitLayoutHelper(const FormID: string); +procedure TEnvironmentOptions.AddToRecentProjectFiles(const AFilename: string); +var + Allow: Boolean; begin - with IDEWindowCreators.SimpleLayoutStorage do - if not Assigned(ItemByFormID(FormID)) then - CreateWindowLayout(FormID); + Allow := True; + DoAddToRecentProjectFiles(AFilename, Allow); + if Allow then + AddToRecentList(AFilename,FRecentProjectFiles,FMaxRecentProjectFiles,rltFile); + {$ifdef Windows} + SHAddToRecentDocs(SHARD_PATHW, PWideChar(UTF8ToUTF16(AFileName))); + {$endif} end; -procedure TEnvironmentOptions.InitLayoutList; -var - l: TNonModalIDEWindow; +procedure TEnvironmentOptions.RemoveFromRecentProjectFiles(const AFilename: string); begin - for l:=Low(TNonModalIDEWindow) to High(TNonModalIDEWindow) do - if l<>nmiwNone then - InitLayoutHelper(NonModalIDEWindowNames[l]); - InitLayoutHelper(DefaultObjectInspectorName); + RemoveFromRecentList(AFilename,FRecentProjectFiles,rltFile); end; function TEnvironmentOptions.GetParsedTestBuildDirectory: string; @@ -1905,8 +2249,7 @@ Result:=GetParsedValue(eopTestBuildDirectory); end; -function TEnvironmentOptions.GetParsedFPCSourceDirectory(FPCVer: string - ): string; +function TEnvironmentOptions.GetParsedFPCSourceDirectory(FPCVer: string): string; var s: String; begin @@ -1919,7 +2262,7 @@ IncreaseCompilerParseStamp; try Result:=GetParsedValue(eopFPCSourceDirectory); - debugln(['TEnvironmentOptions.GetParsedFPCSourceDirectory FPCVer=',FPCVer,' FPCSrcDir=',Result]); + //debugln(['TEnvironmentOptions.GetParsedFPCSourceDirectory FPCVer=',FPCVer,' FPCSrcDir=',Result]); finally OverrideFPCVer:=''; IncreaseCompilerParseStamp; @@ -2183,13 +2526,12 @@ FFileHasChangedOnDisk:=Result; end; -function TEnvironmentOptions.GetXMLCfg(CleanConfig: boolean): TXMLConfig; +procedure TEnvironmentOptions.InitXMLCfg(CleanConfig: boolean); begin if FileHasChangedOnDisk or (FXMLCfg=nil) then begin FreeAndNil(FConfigStore); FreeAndNil(FDbgConfigStore); FreeAndNil(FXMLCfg); - InvalidateFileStateCache; if CleanConfig then FXMLCfg:=TRttiXMLConfig.CreateClean(Filename) else @@ -2200,7 +2542,6 @@ FDbgConfigStore:=TXMLOptionsStorage.Create(FXMLCfg, 'EnvironmentOptions/Debugger/'); FDebuggerConfig.ConfigStore := FDbgConfigStore; end; - Result:=FXMLCfg; end; procedure TEnvironmentOptions.FileUpdated; @@ -2212,6 +2553,43 @@ FFileAge:=0; end; +function TEnvironmentOptions.GetActiveDesktop: TDesktopOpt; + + procedure ChooseDefault; + begin + //use default desktop name + if Assigned(IDEDockMaster) then + FActiveDesktopName := 'default docked'//name for desktop with AnchorDocking + else + FActiveDesktopName := 'default'; + end; + +begin + if FActiveDesktopName <> '' then + begin + Result := FDesktops.Find(FActiveDesktopName); + if Assigned(Result) and Result.Compatible then + Exit; + end; + + //the selected desktop is unsupported (docked/undocked) + // -> use default + ChooseDefault; + Result := FDesktops.Find(FActiveDesktopName); + if Assigned(Result) and Result.Compatible then + Exit; + + //recreate desktop with ActiveDesktopName + if Assigned(Result) then + FDesktops.Remove(Result); + + Result := TDesktopOpt.Create(FActiveDesktopName); + FDesktops.Add(Result); + Result.Assign(Desktop); + if Assigned(IDEDockMaster) then + Result.FDockedOpt.LoadDefaults; +end; + procedure TEnvironmentOptions.SetTestBuildDirectory(const AValue: string); var NewValue: String; @@ -2220,6 +2598,45 @@ SetParseValue(eopTestBuildDirectory,NewValue); end; +procedure TEnvironmentOptions.UseDesktop(ADesktop: TDesktopOpt); + function _ContainsControl(const _Parent, _Control: TWinControl): Boolean; + var + I: Integer; + begin + for I := 0 to _Parent.ControlCount-1 do + if _Parent.Controls[I] is TWinControl then + begin + if (_Parent.Controls[I] = _Control) or + _ContainsControl(TWinControl(_Parent.Controls[I]), _Control) + then + Exit(True); + end; + Result := False; + end; +var + xLastFocusControl: TWinControl; + xLastFocusForm: TCustomForm; +begin + xLastFocusControl := Screen.ActiveControl; + xLastFocusForm := Screen.ActiveCustomForm; + DoBeforeWrite(False); //this is needed to get the EditorToolBar refreshed!!! - needed only here in UseDesktop() + Desktop.Assign(ADesktop); + ActiveDesktopName := ADesktop.Name; + DoAfterWrite(False); //this is needed to get the EditorToolBar refreshed!!! - needed only here in UseDesktop() + Desktop.ExportSettingsToIDE; + Desktop.RestoreDesktop; + + //set focus back to the previously focused control + if Screen.CustomFormIndex(xLastFocusForm) >= 0 then//check if form hasn't been destroyed + begin + if ((xLastFocusForm = xLastFocusControl) or _ContainsControl(xLastFocusForm, xLastFocusControl)) and//check if control hasn't been destroyed + xLastFocusForm.CanFocus and + xLastFocusControl.CanFocus + then + xLastFocusControl.SetFocus; + end; +end; + procedure TEnvironmentOptions.SetLazarusDirectory(const AValue: string); var NewValue: String; @@ -2228,6 +2645,11 @@ SetParseValue(eopLazarusDirectory,NewValue); end; +procedure TEnvironmentOptions.SetMsgColors(u: TMessageLineUrgency; AValue: TColor); +begin + fMsgColors[u] := AValue; +end; + procedure TEnvironmentOptions.SetMsgViewColors(c: TMsgWndColor; AValue: TColor); begin fMsgViewColors[c]:=AValue; @@ -2284,6 +2706,17 @@ Result:=FParseValues[eopCompilerMessagesFilename].UnparsedValue; end; +function TEnvironmentOptions.GetDebugDesktop: TDesktopOpt; +begin + if FDebugDesktopName <> '' then + begin + Result := FDesktops.Find(FDebugDesktopName); + if not(Assigned(Result) and Result.Compatible) then//do not mix docked/undocked desktops + Result := nil; + end else + Result := nil; +end; + function TEnvironmentOptions.GetFPCSourceDirectory: string; begin Result:=FParseValues[eopFPCSourceDirectory].UnparsedValue; @@ -2304,6 +2737,11 @@ Result:=FParseValues[eopMakeFilename].UnparsedValue; end; +function TEnvironmentOptions.GetMsgColors(u: TMessageLineUrgency): TColor; +begin + Result:=fMsgColors[u]; +end; + function TEnvironmentOptions.GetMsgViewColors(c: TMsgWndColor): TColor; begin Result:=fMsgViewColors[c]; diff -Nru lazarus-1.4.4+dfsg/ide/etfpcmsgparser.pas lazarus-1.6+dfsg/ide/etfpcmsgparser.pas --- lazarus-1.4.4+dfsg/ide/etfpcmsgparser.pas 2015-04-10 19:54:28.000000000 +0000 +++ lazarus-1.6+dfsg/ide/etfpcmsgparser.pas 2015-12-05 00:16:40.000000000 +0000 @@ -32,12 +32,17 @@ interface uses + // RTL Classes, SysUtils, strutils, math, - LazUTF8, LConvEncoding, LazFileUtils, FileUtil, - IDEExternToolIntf, PackageIntf, LazIDEIntf, ProjectIntf, IDEUtils, - MacroIntf, - FileProcs, KeywordFuncLists, CodeToolsFPCMsgs, CodeToolsStructs, CodeCache, + // CodeTools + KeywordFuncLists, CodeToolsFPCMsgs, CodeToolsStructs, CodeCache, FileProcs, CodeToolManager, DirectoryCacher, BasicCodeTools, DefineTemplates, SourceLog, + // LazUtils + LConvEncoding, LazUTF8, FileUtil, LazFileUtils, + // IDEIntf + IDEExternToolIntf, PackageIntf, LazIDEIntf, ProjectIntf, MacroIntf, + IDEUtils, LazFileCache, + // IDE IDECmdLine, LazarusIDEStrConsts, EnvironmentOpts, LazConf, TransferMacros, etMakeMsgParser; @@ -53,6 +58,9 @@ FPCMsgIDMethodIdentifierExpected = 3047; FPCMsgIDIdentifierNotFound = 5000; FPCMsgIDChecksumChanged = 10028; + FPCMsgIDUnitNotUsed = 5023; // Unit "$1" not used in $2 + FPCMsgIDCompilationAborted = 1018; + FPCMsgIDLinesCompiled = 1008; FPCMsgAttrWorkerDirectory = 'WD'; FPCMsgAttrMissingUnit = 'MissingUnit'; @@ -122,7 +130,9 @@ public Pattern: string; MsgID: integer; + PatternLine: integer; // line index in a multi line pattern, starting at 0 end; + PPatternToMsgID = ^TPatternToMsgID; { TPatternToMsgIDs } @@ -134,9 +144,10 @@ constructor Create; destructor Destroy; override; procedure Clear; - procedure Add(Pattern: string; MsgID: integer); + procedure Add(Pattern: string; MsgID: integer; PatternLine: integer = 0); procedure AddLines(const Lines: string; MsgID: integer); - function LineToMsgID(p: PChar): integer; // 0 = not found + function LineToMsgID(p: PChar): integer; inline; // 0 = not found + function LineToPattern(p: PChar): PPatternToMsgID; procedure WriteDebugReport; procedure ConsistencyCheck; end; @@ -169,9 +180,10 @@ procedure FetchUnitPath(aPhase: TExtToolParserSyncPhase; MsgWorkerDir: String); function FileExists(const Filename: string; aSynchronized: boolean): boolean; function CheckForMsgId(p: PChar): boolean; // (MsgId) message + function CheckFollowUpMessage(p: PChar): boolean; function CheckForFileLineColMessage(p: PChar): boolean; // the normal messages: filename(y,x): Hint: .. function CheckForGeneralMessage(p: PChar): boolean; // Fatal: .., Error: ..., Panic: .. - function CheckForInfos(p: PChar): boolean; + function CheckForInfos(p: PChar): boolean; // e.g. Free Pascal Compiler version 2.6.4 [2014/02/26] for i386 function CheckForCompilingState(p: PChar): boolean; // Compiling .. function CheckForAssemblingState(p: PChar): boolean; // Assembling .. function CheckForLinesCompiled(p: PChar): boolean; // ..lines compiled.. @@ -179,6 +191,8 @@ function CheckForLineProgress(p: PChar): boolean; // 600 206.521/231.648 Kb Used function CheckForLoadFromUnit(p: PChar): Boolean; function CheckForWindresErrors(p: PChar): boolean; + function CheckForLinkerErrors(p: PChar): boolean; + function CheckForAssemblerErrors(p: PChar): boolean; function CreateMsgLine: TMessageLine; procedure AddLinkingMessages; procedure AddResourceMessages; @@ -615,7 +629,8 @@ SetLength(fItems,0); end; -procedure TPatternToMsgIDs.Add(Pattern: string; MsgID: integer); +procedure TPatternToMsgIDs.Add(Pattern: string; MsgID: integer; + PatternLine: integer); procedure RaiseInvalidMsgID; begin @@ -640,19 +655,23 @@ fItems[i]:=Item; Item.Pattern:=Pattern; Item.MsgID:=MsgID; + Item.PatternLine:=PatternLine; end; procedure TPatternToMsgIDs.AddLines(const Lines: string; MsgID: integer); var StartPos: PChar; p: PChar; + PatternLine: Integer; begin + PatternLine:=0; p:=PChar(Lines); while p^<>#0 do begin StartPos:=p; while not (p^ in [#0,#10,#13]) do inc(p); if p>StartPos then begin - Add(copy(Lines,StartPos-PChar(Lines)+1,p-StartPos),MsgID); + Add(copy(Lines,StartPos-PChar(Lines)+1,p-StartPos),MsgID,PatternLine); + inc(PatternLine); end; while p^ in [#10,#13] do inc(p); end; @@ -660,14 +679,25 @@ function TPatternToMsgIDs.LineToMsgID(p: PChar): integer; var + Item: PPatternToMsgID; +begin + Item:=LineToPattern(p); + if Item=nil then + Result:=0 + else + Result:=Item^.MsgID; +end; + +function TPatternToMsgIDs.LineToPattern(p: PChar): PPatternToMsgID; +var i: Integer; begin while p^ in [' ',#9,#10,#13] do inc(p); i:=IndexOf(p,false); if i<0 then - Result:=0 + Result:=nil else - Result:=fItems[i].MsgID; + Result:=@fItems[i]; end; procedure TPatternToMsgIDs.WriteDebugReport; @@ -1209,7 +1239,7 @@ MsgLine.SubTool:=SubToolFPC; MsgLine.Filename:=AFilename; MsgLine.Msg:=OldP; - AddMsgLine(MsgLine); + inherited AddMsgLine(MsgLine); Result:=true; end; @@ -1219,7 +1249,7 @@ OldP: PChar; begin Result:=fMsgID=9001; - if (fMsgID>0) and not Result then exit; + if (not Result) and (fMsgID>0) then exit; OldP:=p; if (not Result) and (not CompStr('Assembling ',p)) then exit; MsgLine:=CreateMsgLine; @@ -1227,7 +1257,7 @@ MsgLine.SubTool:=SubToolFPC; MsgLine.Urgency:=mluProgress; MsgLine.Msg:=OldP; - AddMsgLine(MsgLine); + inherited AddMsgLine(MsgLine); Result:=true; end; @@ -1238,7 +1268,6 @@ Error: /usr/bin/ppc386 returned an error exitcode } const - FPCMsgIDCompilationAborted = 1018; FrontEndFPCExitCodeError = 'returned an error exitcode'; var MsgLine: TMessageLine; @@ -1366,7 +1395,7 @@ MsgLine.SubTool:=SubToolFPC; MsgLine.Urgency:=mluProgress; MsgLine.Msg:=OldP; - AddMsgLine(MsgLine); + inherited AddMsgLine(MsgLine); Result:=true; end; @@ -1375,20 +1404,23 @@ OldStart: PChar; MsgLine: TMessageLine; begin - Result:=fMsgID=1008; - if (fMsgID>0) and not Result then exit; + Result:=fMsgID=FPCMsgIDLinesCompiled; + if (not Result) and (fMsgID>0) then exit; OldStart:=p; if not Result then begin if not ReadNumberWithThousandSep(p) then exit; if not ReadString(p,' lines compiled, ') then exit; if not ReadNumberWithThousandSep(p) then exit; end; + Result:=true; MsgLine:=CreateMsgLine; MsgLine.SubTool:=SubToolFPC; - MsgLine.Urgency:=mluProgress; + if ShowLinesCompiled then + MsgLine.Urgency:=mluImportant + else + MsgLine.Urgency:=mluVerbose; MsgLine.Msg:=OldStart; - AddMsgLine(MsgLine); - Result:=true; + inherited AddMsgLine(MsgLine); end; function TIDEFPCParser.CheckForExecutableInfo(p: PChar): boolean; @@ -1404,7 +1436,7 @@ MsgLine: TMessageLine; begin Result:=(fMsgID>=9130) and (fMsgID<=9140); - if (fMsgID>0) and not Result then exit; + if (not Result) and (fMsgID>0) then exit; OldStart:=p; if (not Result) then begin if not (ReadString(p,'Size of Code: ') or @@ -1421,7 +1453,7 @@ MsgLine.SubTool:=SubToolFPC; MsgLine.Urgency:=mluProgress; MsgLine.Msg:=OldStart; - AddMsgLine(MsgLine); + inherited AddMsgLine(MsgLine); end; function TIDEFPCParser.CheckForWindresErrors(p: PChar): boolean; @@ -1444,17 +1476,93 @@ AddMsgLine(MsgLine); end; +function TIDEFPCParser.CheckForLinkerErrors(p: PChar): boolean; +const + pat: String = 'Undefined symbols for architecture'; +var + MsgLine: TMessageLine; +begin + if CompareMem(PChar(pat),p,length(pat)) then begin + Result:=true; + MsgLine:=CreateMsgLine; + MsgLine.MsgID:=0; + MsgLine.SubTool:=SubToolFPCLinker; + MsgLine.Urgency:=mluError; + MsgLine.Msg:='linker: '+p; + inherited AddMsgLine(MsgLine); + end; +end; + +function TIDEFPCParser.CheckForAssemblerErrors(p: PChar): boolean; +// example: +// <stdin>:227:9: error: unsupported directive '.stabs' +var + APos: PChar; + s: string; + MsgLine: TMessageLine; +begin + Result:=false; + APos:=FindSubStrI('error: unsupported directive',p); + if APos=nil then exit; + Result:=true; + MsgLine:=CreateMsgLine; + MsgLine.SubTool:=SubToolFPCWindRes; + MsgLine.Urgency:=mluError; + s:=APos; + if Pos('.stabs',s)>0 then + s+='. Hint: Use another type of debug info.'; + MsgLine.Msg:='assembler: '+s; + AddMsgLine(MsgLine); +end; + function TIDEFPCParser.CheckForInfos(p: PChar): boolean; + + function ReadFPCLogo(PatternItem: PPatternToMsgID; + out FPCVersionAsInt: cardinal): boolean; + var + Line: string; + Ranges: TFPCMsgRanges; + aRange: PFPCMsgRange; + i: SizeInt; + aFPCFullVersion: String; + FPCVersion: integer; + FPCRelease: integer; + FPCPatch: integer; + begin + Result:=false; + FPCVersionAsInt:=0; + i:=Pos('$FPCFULLVERSION',PatternItem^.Pattern); + if i<1 then exit; + Line:=p; + Ranges:=nil; + try + ExtractFPCMsgParameters(PatternItem^.Pattern,Line,Ranges); + if Ranges.Count>0 then begin + // first is $FPCFULLVERSION + aRange:=@Ranges.Ranges[0]; + aFPCFullVersion:=copy(Line,aRange^.StartPos+1,aRange^.EndPos-aRange^.StartPos); + SplitFPCVersion(aFPCFullVersion,FPCVersion,FPCRelease,FPCPatch); + FPCVersionAsInt:=FPCVersion*10000+FPCRelease*100+FPCPatch; + Result:=FPCVersionAsInt>0; + end; + // second is $FPCDATE + // third is $FPCCPU + finally + Ranges.Free; + end; + end; + var MsgItem: TFPCMsgItem; MsgLine: TMessageLine; - i: Integer; MsgType: TMessageLineUrgency; + PatternItem: PPatternToMsgID; + aFPCVersion: cardinal; begin Result:=false; - i:=fLineToMsgID.LineToMsgID(p); - if i=0 then exit; - fMsgID:=i; + PatternItem:=fLineToMsgID.LineToPattern(p); + if PatternItem=nil then exit; + fMsgID:=PatternItem^.MsgID; if (fMsgID=FPCMsgIDLogo) and (DirectoryStack<>nil) then begin // a new call of the compiler (e.g. when compiling via make) // => clear stack @@ -1469,6 +1577,13 @@ MsgLine:=CreateMsgLine; MsgLine.SubTool:=SubToolFPC; MsgLine.Urgency:=MsgType; + if (fMsgID=FPCMsgIDLogo) and ReadFPCLogo(PatternItem,aFPCVersion) then begin + if aFPCVersion<>FPC_FullVersion then begin + // unexpected FPC version => always show + MsgLine.Urgency:=mluImportant; + FPC_FullVersion:=aFPCVersion; + end; + end; AddMsgLine(MsgLine); end; @@ -1527,8 +1642,11 @@ MsgLine:=inherited CreateMsgLine(i); MsgLine.MsgID:=0; MsgLine.SubTool:=SubToolFPCLinker; - MsgLine.Urgency:=mluImportant; - AddMsgLine(MsgLine); + if MsgLine.Msg<>'' then + MsgLine.Urgency:=mluImportant + else + MsgLine.Urgency:=mluVerbose2; + inherited AddMsgLine(MsgLine); end; end; @@ -1546,7 +1664,7 @@ i: Integer; MsgLine: TMessageLine; begin - // find message "Linking ..." + // find message "Calling resource compiler ..." i:=Tool.WorkerMessages.Count-1; while (i>=0) and (Tool.WorkerMessages[i].MsgID<>FPCMsgIDCallingResourceCompiler) do dec(i); @@ -1556,8 +1674,11 @@ MsgLine:=inherited CreateMsgLine(i); MsgLine.MsgID:=0; MsgLine.SubTool:=SubToolFPCRes; - MsgLine.Urgency:=mluHint; - AddMsgLine(MsgLine); + if MsgLine.Msg<>'' then + MsgLine.Urgency:=mluHint + else + MsgLine.Urgency:=mluVerbose2; + inherited AddMsgLine(MsgLine); end; end; @@ -1677,8 +1798,6 @@ MsgLine: TMessageLine); // check for Unit not used message in main sources // and change urgency to merely 'verbose' -const - FPCMsgIDUnitNotUsed = 5023; // Unit "$1" not used in $2 begin if aPhase<>etpspAfterReadLine then exit; if (MsgLine.Urgency<=mluVerbose) then exit; @@ -1854,6 +1973,7 @@ MissingPkg: TIDEPackage; MissingPkgName: String; MissingPkgFile: TLazPackageFile; + FPCUnitFilename: String; begin if MsgLine.Urgency<mluError then exit; if not IsMsgID(MsgLine,FPCMsgIDCantFindUnitUsedBy,fMsgItemCantFindUnitUsedBy) @@ -1959,6 +2079,11 @@ {$ENDIF} PPUFilename:=CodeToolBoss.DirectoryCachePool.FindCompiledUnitInCompletePath( ExtractFilePath(CodeBuf.Filename),MissingUnitname); + if (PPUFilename<>'') then begin + FPCUnitFilename:=CodeToolBoss.DirectoryCachePool.FindUnitInUnitSet( + ExtractFilePath(CodeBuf.Filename),MissingUnitName); + end else + FPCUnitFilename:=''; {$IFDEF VerboseFPCMsgUnitNotFound} debugln(['TIDEFPCParser.ImproveMsgUnitNotFound PPUFilename=',PPUFilename,' IsFileInIDESrcDir=',IsFileInIDESrcDir(CodeBuf.Filename)]); {$ENDIF} @@ -1974,12 +2099,12 @@ {$IFDEF VerboseFPCMsgUnitNotFound} debugln(['TIDEFPCParser.ImproveMsgUnitNotFound MissingUnitPkg=',MissingPkgName]); {$ENDIF} + s:=Format(lisCannotFind, [MissingUnitname]); + if UsedByUnit<>'' then + s+=Format(lisUsedBy, [UsedByUnit]); if PPUFiles.Count>0 then begin - // there is a ppu file, but the compiler didn't like it - // => change message - s:=Format(lisCannotFind, [MissingUnitname]); - if UsedByUnit<>'' then - s+=Format(lisUsedBy, [UsedByUnit]); + // there is a ppu file in a package output directory, but the compiler + // didn't like it => change message if PPUFilename='' then PPUFilename:=PPUFiles[0]; s+=Format(lisIncompatiblePpu, [PPUFilename]); @@ -1993,15 +2118,15 @@ s+=TIDEPackage(PPUFiles.Objects[i]).Name; end; end; - end else begin - // there is no ppu file in the ppu path (it might be in the source path) - {$IFDEF VerboseFPCMsgUnitNotFound} - debugln(['TIDEFPCParser.ImproveMsgUnitNotFound PPUFilename=',PPUFilename,' PPUFiles.Count=',PPUFiles.Count]); - {$ENDIF} - s:=Format(lisCannotFindUnit, [MissingUnitname]); - if UsedByUnit<>'' then - s+=Format(lisUsedBy, [UsedByUnit]); - if PPUFilename<>'' then begin + end else if PPUFilename<>'' then begin + if CompareFilenames(PPUFilename,FPCUnitFilename)=0 then begin + // there is ppu in the FPC units, but the compiler does not like it + // => a) using a wrong compiler version (wrong fpc.cfg) + // b) user units in fpc.cfg + // c) fpc units not compiled with -Ur + // d) wrong target platform + s+=', ppu='+PPUFilename+', check your fpc.cfg'; + end else begin // there is a ppu file in the source path if (MissingPkg<>nil) and (MissingPkg.LazCompilerOptions.UnitOutputDirectory='') then @@ -2011,32 +2136,34 @@ s+=' '+Format(lisPpuInWrongDirectory, [PPUFilename]); if MissingPkgName<>'' then s+=' '+Format(lisCleanUpPackage, [MissingPkgName]); - end - else if (UsedByPkg<>nil) - and (CompareTextCT(UsedByPkg.Name,MissingPkgName)=0) then - begin - // two units of a package cannot find each other - s+=Format(lisCheckSearchPathPackageTryACleanRebuildCheckImpleme, [ - UsedByPkg.Name]); - end else if (MissingPkgName<>'') - and (OnlyInstalled - or ((UsedByOwner<>nil) - and PackageEditingInterface.IsOwnerDependingOnPkg(UsedByOwner,MissingPkgName,DepOwner))) - then begin - // ppu file of an used package is missing - if (MissingPkgFile<>nil) and (not MissingPkgFile.InUses) then - s+=Format(lisEnableFlagUseUnitOfUnitInPackage, [MissingUnitName, MissingPkgName]) - else - s+=Format(lisCheckIfPackageCreatesPpuCheckNothingDeletesThisFil, [ - MissingPkgName, MissingUnitName]); - end else begin - if MissingPkgName<>'' then - s+=Format(lisCheckIfPackageIsInTheDependencies, [MissingPkgName]); - if UsedByOwner is TLazProject then - s+=lisOfTheProjectInspector - else if UsedByPkg<>nil then - s+=Format(lisOfPackage, [UsedByPkg.Name]); + s+='.'; end; + end + else if (UsedByPkg<>nil) and (CompareTextCT(UsedByPkg.Name,MissingPkgName)=0) + then begin + // two units of a package cannot find each other + s+=Format(lisCheckSearchPathPackageTryACleanRebuildCheckImpleme, [ + UsedByPkg.Name]); + s+='.'; + end else if (MissingPkgName<>'') + and (OnlyInstalled + or ((UsedByOwner<>nil) + and PackageEditingInterface.IsOwnerDependingOnPkg(UsedByOwner,MissingPkgName,DepOwner))) + then begin + // ppu file of an used package is missing + if (MissingPkgFile<>nil) and (not MissingPkgFile.InUses) then + s+=Format(lisEnableFlagUseUnitOfUnitInPackage, [MissingUnitName, MissingPkgName]) + else + s+=Format(lisCheckIfPackageCreatesPpuCheckNothingDeletesThisFil, [ + MissingPkgName, MissingUnitName]); + s+='.'; + end else begin + if MissingPkgName<>'' then + s+=Format(lisCheckIfPackageIsInTheDependencies, [MissingPkgName]); + if UsedByOwner is TLazProject then + s+=lisOfTheProjectInspector + else if UsedByPkg<>nil then + s+=Format(lisOfPackage, [UsedByPkg.Name]); s+='.'; end; MsgLine.Msg:=s; @@ -2480,7 +2607,7 @@ TranslatedItem: TFPCMsgItem; MsgLine: TMessageLine; TranslatedMsg: String; - MsgType: TMessageLineUrgency; + MsgUrgency: TMessageLineUrgency; Msg: string; begin Result:=false; @@ -2491,20 +2618,44 @@ TranslatedItem:=nil; if (TranslationFile<>nil) then TranslatedItem:=TranslationFile.GetMsg(fMsgID); - Translate(p,MsgItem,TranslatedItem,TranslatedMsg,MsgType); + Translate(p,MsgItem,TranslatedItem,TranslatedMsg,MsgUrgency); Msg:=p; case fMsgID of FPCMsgIDThereWereErrorsCompiling: // There were $1 errors compiling module, stopping - MsgType:=mluVerbose; + MsgUrgency:=mluVerbose; + FPCMsgIDLinesCompiled: // n lines compiled, m sec + if ShowLinesCompiled then MsgUrgency:=mluImportant; end; MsgLine:=CreateMsgLine; MsgLine.SubTool:=SubToolFPC; - MsgLine.Urgency:=MsgType; + MsgLine.Urgency:=MsgUrgency; MsgLine.Msg:=Msg; MsgLine.TranslatedMsg:=TranslatedMsg; AddMsgLine(MsgLine); end; +function TIDEFPCParser.CheckFollowUpMessage(p: PChar): boolean; +var + i: Integer; + LastMsgLine, MsgLine: TMessageLine; +begin + if (p^=' ') then begin + i:=Tool.WorkerMessages.Count-1; + if i<0 then exit; + LastMsgLine:=Tool.WorkerMessages[i]; + if LastMsgLine.SubTool=SubToolFPCLinker then begin + // a follow up line of the linker output + Result:=true; + MsgLine:=CreateMsgLine; + MsgLine.MsgID:=0; + MsgLine.SubTool:=SubToolFPCLinker; + MsgLine.Urgency:=LastMsgLine.Urgency; + MsgLine.Msg:='linker: '+p; + inherited AddMsgLine(MsgLine); + end; + end; +end; + function TIDEFPCParser.CheckForFileLineColMessage(p: PChar): boolean; { filename(line,column) Hint: message filename(line,column) Hint: (msgid) message @@ -2647,7 +2798,7 @@ MsgLine: TMessageLine; begin Result:=fMsgID=10027; - if (fMsgID>0) and not Result then exit; + if (not Result) and (fMsgID>0) then exit; OldP:=p; if not Result then begin if not ReadString(p,'Load from ') then exit; @@ -2686,8 +2837,13 @@ if Line='' then exit; if FPC_FullVersion>=20701 then Line:=LazUTF8.ConsoleToUTF8(Line) - else + else begin + {$IFDEF MSWINDOWS} + Line:=LazUTF8.WinCPToUTF8(Line); + {$ELSE} Line:=LazUTF8.SysToUTF8(Line); + {$ENDIF} + end; p:=PChar(Line); fOutputIndex:=OutputIndex; fMsgID:=0; @@ -2714,7 +2870,10 @@ while p^ in [' '] do inc(p); end; - if p^ in [#0..#31,' '] then exit; // not a fpc message + if p^ in [#0..#31,' '] then begin + CheckFollowUpMessage(p); + exit; // not a fpc message + end; Handled:=true; @@ -2740,6 +2899,10 @@ if CheckForLoadFromUnit(p) then exit; // check for windres errors if CheckForWindresErrors(p) then exit; + // check for linker errors + if CheckForLinkerErrors(p) then exit; + // check for assembler errors + if CheckForAssemblerErrors(p) then exit; {$IFDEF VerboseFPCParser} debugln('TFPCParser.ReadLine UNKNOWN: ',Line); diff -Nru lazarus-1.4.4+dfsg/ide/etmakemsgparser.pas lazarus-1.6+dfsg/ide/etmakemsgparser.pas --- lazarus-1.4.4+dfsg/ide/etmakemsgparser.pas 2014-07-20 20:02:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/etmakemsgparser.pas 2015-08-07 17:20:40.000000000 +0000 @@ -30,8 +30,14 @@ interface uses - Classes, SysUtils, IDEExternToolIntf, CodeToolsStructs, KeywordFuncLists, - LazFileUtils, FileUtil; + // RTL + Classes, SysUtils, + // CodeTools + CodeToolsStructs, KeywordFuncLists, + // LazUtils + FileUtil, LazFileUtils, + // IDEIntf + IDEExternToolIntf; const MakeMsgIDEnteringDirectory = 1; diff -Nru lazarus-1.4.4+dfsg/ide/etmessageframe.lfm lazarus-1.6+dfsg/ide/etmessageframe.lfm --- lazarus-1.4.4+dfsg/ide/etmessageframe.lfm 2014-06-05 21:28:50.000000000 +0000 +++ lazarus-1.6+dfsg/ide/etmessageframe.lfm 2015-05-27 10:41:52.000000000 +0000 @@ -10,29 +10,27 @@ DesignTop = 171 object SearchPanel: TPanel Left = 0 - Height = 27 - Top = 79 + Height = 23 + Top = 83 Width = 444 Align = alBottom AutoSize = True - ClientHeight = 27 + BevelOuter = bvNone + ClientHeight = 23 ClientWidth = 444 TabOrder = 0 object SearchEdit: TEdit AnchorSideLeft.Control = HideSearchSpeedButton AnchorSideLeft.Side = asrBottom - Left = 34 - Height = 25 + Left = 33 + Height = 23 Top = 1 Width = 200 BorderSpacing.Left = 10 Constraints.MinWidth = 200 OnChange = SearchEditChange - OnEnter = SearchEditEnter - OnExit = SearchEditExit OnKeyDown = SearchEditKeyDown TabOrder = 0 - Text = 'SearchEdit' end object SearchNextSpeedButton: TSpeedButton AnchorSideLeft.Control = SearchEdit @@ -40,8 +38,8 @@ AnchorSideTop.Control = SearchEdit AnchorSideBottom.Control = SearchEdit AnchorSideBottom.Side = asrBottom - Left = 234 - Height = 25 + Left = 233 + Height = 23 Top = 1 Width = 23 Anchors = [akTop, akLeft, akBottom] @@ -56,8 +54,8 @@ AnchorSideTop.Control = SearchNextSpeedButton AnchorSideBottom.Control = SearchNextSpeedButton AnchorSideBottom.Side = asrBottom - Left = 257 - Height = 25 + Left = 256 + Height = 23 Top = 1 Width = 23 Anchors = [akTop, akLeft, akBottom] @@ -71,9 +69,9 @@ AnchorSideTop.Control = SearchPanel AnchorSideBottom.Control = SearchPanel AnchorSideBottom.Side = asrBottom - Left = 1 - Height = 25 - Top = 1 + Left = 0 + Height = 23 + Top = 0 Width = 23 Anchors = [akTop, akLeft, akBottom] Flat = True diff -Nru lazarus-1.4.4+dfsg/ide/etmessageframe.pas lazarus-1.6+dfsg/ide/etmessageframe.pas --- lazarus-1.4.4+dfsg/ide/etmessageframe.pas 2015-03-10 18:20:52.000000000 +0000 +++ lazarus-1.6+dfsg/ide/etmessageframe.pas 2015-12-15 15:34:28.000000000 +0000 @@ -32,14 +32,19 @@ interface uses - Math, strutils, Classes, SysUtils, UTF8Process, FileProcs, LazFileCache, - LazUTF8Classes, LazFileUtils, LazUTF8, AvgLvlTree, LazConfigStorage, SynEdit, - SynEditMarks, LResources, Forms, Buttons, ExtCtrls, Controls, LMessages, + Math, strutils, Classes, SysUtils, + UTF8Process, FileProcs, LazFileCache, + LazUTF8Classes, LazFileUtils, LazUTF8, AvgLvlTree, SynEdit, + LResources, Forms, Buttons, ExtCtrls, Controls, LMessages, LCLType, Graphics, LCLIntf, Themes, ImgList, GraphType, Menus, Clipbrd, - Dialogs, StdCtrls, IDEExternToolIntf, IDEImagesIntf, MenuIntf, PackageIntf, - IDECommands, SrcEditorIntf, IDEDialogs, ProjectIntf, CompOptsIntf, + Dialogs, StdCtrls, + SynEditMarks, + // IDEIntf + IDEExternToolIntf, IDEImagesIntf, MenuIntf, PackageIntf, + IDECommands, IDEDialogs, ProjectIntf, CompOptsIntf, LazIDEIntf, + // IDE LazarusIDEStrConsts, EnvironmentOpts, HelpFPCMessages, etSrcEditMarks, - etQuickFixes, ExtTools, IDEOptionDefs, CompilerOptions; + MsgWnd_Options, etQuickFixes, ExtTools, IDEOptionDefs, CompilerOptions; const CustomViewCaption = '------------------------------'; @@ -154,6 +159,7 @@ FSelectedLine: integer; FSelectedView: TLMsgWndView; FSourceMarks: TETMarks; + FTextColor: TColor; fUpdateLock: integer; FUpdateTimer: TTimer; fSomeViewsRunning: boolean; @@ -183,6 +189,7 @@ procedure SetSelectedLine(AValue: integer); procedure SetSelectedView(AValue: TLMsgWndView); procedure SetSourceMarks(AValue: TETMarks); + procedure SetTextColor(AValue: TColor); procedure SetUrgencyStyles(Urgency: TMessageLineUrgency; AValue: TMsgCtrlUrgencyStyle); procedure SetAutoHeaderBackground(AValue: TColor); @@ -299,6 +306,7 @@ property SelectedView: TLMsgWndView read FSelectedView write SetSelectedView; property ShowHint default true; property SourceMarks: TETMarks read FSourceMarks write SetSourceMarks; + property TextColor: TColor read FTextColor write SetTextColor default MsgWndDefTextColor; property UrgencyStyles[Urgency: TMessageLineUrgency]: TMsgCtrlUrgencyStyle read GetUrgencyStyles write SetUrgencyStyles; end; @@ -327,6 +335,7 @@ procedure FilterMsgOfTypeMenuItemClick(Sender: TObject); procedure FilterUrgencyMenuItemClick(Sender: TObject); procedure HideSearchSpeedButtonClick(Sender: TObject); + procedure MoreOptionsMenuItemClick(Sender: TObject); procedure MsgCtrlPopupMenuPopup(Sender: TObject); procedure OnSelectFilterClick(Sender: TObject); procedure OpenToolsOptionsMenuItemClick(Sender: TObject); @@ -334,10 +343,8 @@ procedure SaveAllToFileMenuItemClick(Sender: TObject); procedure SaveShownToFileMenuItemClick(Sender: TObject); procedure SearchEditChange(Sender: TObject); - procedure SearchEditEnter(Sender: TObject); - procedure SearchEditExit(Sender: TObject); procedure SearchEditKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); + {%H-}Shift: TShiftState); procedure SearchNextSpeedButtonClick(Sender: TObject); procedure SearchPrevSpeedButtonClick(Sender: TObject); procedure ShowIDMenuItemClick(Sender: TObject); @@ -394,9 +401,6 @@ function AddCustomMessage(TheUrgency: TMessageLineUrgency; Msg: string; aFilename: string = ''; LineNumber: integer = 0; Column: integer = 0; const ViewCaption: string = CustomViewCaption): TMessageLine; - - // misc - function GetDefaultSearchText: string; end; const @@ -442,6 +446,7 @@ MsgFileStyleFullMenuItem: TIDEMenuCommand; MsgTranslateMenuItem: TIDEMenuCommand; MsgShowIDMenuItem: TIDEMenuCommand; + MsgMoreOptionsMenuItem: TIDEMenuCommand; procedure RegisterStandardMessagesViewMenuItems; @@ -458,7 +463,7 @@ MsgQuickFixMenuSection := RegisterIDEMenuSection(Root, 'Quick Fix'); MsgAboutSection:=RegisterIDEMenuSection(Root,'About'); Parent:=MsgAboutSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisAbout; MsgAboutToolMenuItem:=RegisterIDEMenuCommand(Parent, 'About', lisAbout); MsgOpenToolOptionsMenuItem:=RegisterIDEMenuCommand(Parent, 'Open Tool ' @@ -466,18 +471,18 @@ MsgFilterMsgOfTypeMenuItem:=RegisterIDEMenuCommand(Root,'FilterMsgOfType',lisFilterAllMessagesOfCertainType); MsgRemoveCompOptHideMenuSection:=RegisterIDEMenuSection(Root,'RemoveCompOptHideMsg'); Parent:=MsgRemoveCompOptHideMenuSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisRemoveCompilerOptionHideMessage; MsgRemoveMsgTypeFilterMenuSection:=RegisterIDEMenuSection(Root,'RemoveMsgTypeFilters'); Parent:=MsgRemoveMsgTypeFilterMenuSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisRemoveMessageTypeFilter; MsgRemoveFilterMsgOneTypeMenuSection:=RegisterIDEMenuSection(Parent,'RemoveOneMsgTypeFilterSection'); MsgRemoveFilterAllMsgTypesMenuItem:=RegisterIDEMenuCommand(Parent, 'Remove' +' all message type filters', lisRemoveAllMessageTypeFilters); MsgFilterBelowMenuSection:=RegisterIDEMenuSection(Root,'Filter Below Section'); Parent:=MsgFilterBelowMenuSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisFilterNonUrgentMessages; MsgFilterWarningsMenuItem:=RegisterIDEMenuCommand(Parent, 'Filter Warnings', lisFilterWarningsAndBelow); @@ -507,14 +512,14 @@ +' without Source Position', lisFilterHintsWithoutSourcePosition); MsgFiltersMenuSection:=RegisterIDEMenuSection(Root,'Switch Filter Section'); Parent:=MsgFiltersMenuSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisSwitchFilterSettings; MsgSelectFilterMenuSection:=RegisterIDEMenuSection(Parent,'Filters'); MsgAddFilterMenuItem:=RegisterIDEMenuCommand(Parent, 'Add Filter', lisAddFilter); MsgCopyMenuSection:=RegisterIDEMenuSection(Root,'Copy'); Parent:=MsgCopyMenuSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisCopy; MsgCopyFilenameMenuItem:=RegisterIDEMenuCommand(Parent, 'Filename', lisCopyFileNameToClipboard); @@ -524,7 +529,7 @@ lisCopyAllOriginalMessagesToClipboard); MsgSaveToFileMenuSection:=RegisterIDEMenuSection(Root,'Save'); Parent:=MsgSaveToFileMenuSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisSave; MsgSaveShownToFileMenuItem:=RegisterIDEMenuCommand(Parent, 'Save Shown ' +'Messages to File', lisSaveShownMessagesToFile); @@ -535,13 +540,13 @@ MsgClearMenuItem := RegisterIDEMenuCommand(Root, 'Clear', lisClear); MsgOptionsMenuSection:=RegisterIDEMenuSection(Root,'Option Section'); Parent:=MsgOptionsMenuSection; - Parent.ChildsAsSubMenu:=true; - Parent.Caption:=dlgOIOptions; + Parent.ChildrenAsSubMenu:=true; + Parent.Caption:=lisOptions; MsgWndStayOnTopMenuItem:=RegisterIDEMenuCommand(Parent, 'Window stay on top', lisWindowStaysOnTop); MsgFilenameStyleMenuSection:=RegisterIDEMenuSection(Parent,'Filename Styles'); Parent:=MsgFilenameStyleMenuSection; - Parent.ChildsAsSubMenu:=true; + Parent.ChildrenAsSubMenu:=true; Parent.Caption:=lisFilenameStyle; MsgFileStyleShortMenuItem:=RegisterIDEMenuCommand(Parent, 'Short', lisShortNoPath); @@ -553,6 +558,8 @@ lisTranslateTheEnglishMessages); MsgShowIDMenuItem:=RegisterIDEMenuCommand(Parent, 'ShowID', lisShowMessageTypeID); + MsgMoreOptionsMenuItem:=RegisterIDEMenuCommand(Parent, 'More Options', + lisDlgMore); end; {$R *.lfm} @@ -1233,6 +1240,13 @@ FreeNotification(SourceMarks); end; +procedure TMessagesCtrl.SetTextColor(AValue: TColor); +begin + if FTextColor=AValue then Exit; + FTextColor:=AValue; + Invalidate; +end; + procedure TMessagesCtrl.SetUrgencyStyles(Urgency: TMessageLineUrgency; AValue: TMsgCtrlUrgencyStyle); begin @@ -1511,6 +1525,7 @@ IsSelected: Boolean; FirstLineIsNotSelectedMessage: Boolean; SecondLineIsNotSelectedMessage: Boolean; + col: TColor; begin if Focused then Include(FStates,mcsFocused) @@ -1546,7 +1561,7 @@ Canvas.Line(NodeRect.Left,NodeRect.Top,NodeRect.Right,NodeRect.Top); Canvas.Pen.Style:=psSolid; DrawText(NodeRect,GetHeaderText(View), - (fSelectedView=View) and (FSelectedLine=-1),clDefault); + (fSelectedView=View) and (FSelectedLine=-1),TextColor); Canvas.Brush.Color:=BackgroundColor; end; inc(y,ItemHeight); @@ -1578,8 +1593,10 @@ inc(NodeRect.Left,Images.Width+2); end; // message text - DrawText(NodeRect,GetLineText(Line),IsSelected, - UrgencyStyles[Line.Urgency].Color); + col:=UrgencyStyles[Line.Urgency].Color; + if col=clDefault then + col:=TextColor; + DrawText(NodeRect,GetLineText(Line),IsSelected,col); inc(y,ItemHeight); inc(j); end; @@ -1597,7 +1614,7 @@ NodeRect:=Rect(0,0,ClientWidth,ItemHeight); Canvas.Line(NodeRect.Left,NodeRect.Bottom,NodeRect.Right,NodeRect.Bottom); Canvas.Pen.Style:=psSolid; - DrawText(NodeRect,'...'+GetHeaderText(View),false,clDefault); + DrawText(NodeRect,'...'+GetHeaderText(View),false,TextColor); Canvas.Brush.Color:=BackgroundColor; end; inc(y,ItemHeight*(View.Lines.Count-j)); @@ -1607,9 +1624,11 @@ if (y+ItemHeight>0) and (y<ClientHeight) then begin // progress text NodeRect:=Rect(Indent,y,ClientWidth,y+ItemHeight); + col:=UrgencyStyles[View.ProgressLine.Urgency].Color; + if col=clDefault then + col:=TextColor; DrawText(NodeRect,View.ProgressLine.Msg, - (fSelectedView=View) and (FSelectedLine=View.Lines.Count), - UrgencyStyles[View.ProgressLine.Urgency].Color); + (fSelectedView=View) and (FSelectedLine=View.Lines.Count),col); end; inc(y,ItemHeight); end; @@ -1746,6 +1765,7 @@ begin if GetLineAt(HintInfo^.CursorPos.Y,View,Line) then begin MsgLine:=nil; + s:=''; if Line<0 then s:=GetHeaderText(View) else if Line<View.Lines.Count then begin @@ -2360,6 +2380,7 @@ FHeaderBackground[lmvtsSuccess]:=MsgWndDefHeaderBackgroundSuccess; FHeaderBackground[lmvtsFailed]:=MsgWndDefHeaderBackgroundFailed; FAutoHeaderBackground:=MsgWndDefAutoHeaderBackground; + FTextColor:=MsgWndDefTextColor; TabStop := True; ParentColor := False; FImageChangeLink := TChangeLink.Create; @@ -2405,6 +2426,7 @@ procedure TMessagesCtrl.ApplyEnvironmentOptions; var NewOptions: TMsgCtrlOptions; + u: TMessageLineUrgency; procedure SetOption(Option: TMsgCtrlOption; State: boolean); begin @@ -2415,11 +2437,14 @@ end; begin + for u in TMessageLineUrgency do + UrgencyStyles[u].Color := EnvironmentOptions.MsgColors[u]; BackgroundColor:=EnvironmentOptions.MsgViewColors[mwBackground]; AutoHeaderBackground:=EnvironmentOptions.MsgViewColors[mwAutoHeader]; HeaderBackground[lmvtsRunning]:=EnvironmentOptions.MsgViewColors[mwRunning]; HeaderBackground[lmvtsSuccess]:=EnvironmentOptions.MsgViewColors[mwSuccess]; HeaderBackground[lmvtsFailed]:=EnvironmentOptions.MsgViewColors[mwFailed]; + TextColor:=EnvironmentOptions.MsgViewColors[mwTextColor]; NewOptions:=Options; SetOption(mcoSingleClickOpensFile,not EnvironmentOptions.MsgViewDblClickJumps); SetOption(mcoShowMsgIcons,EnvironmentOptions.ShowMessagesIcons); @@ -2795,12 +2820,11 @@ //assign default caption if item is not visible (needed for EditorToolBar) MsgOpenToolOptionsMenuItem.Caption:=lisOpenToolOptions; MsgOpenToolOptionsMenuItem.OnClick:=@OpenToolsOptionsMenuItemClick; - MsgAboutSection.ChildsAsSubMenu:=VisibleCnt>1; + MsgAboutSection.ChildrenAsSubMenu:=VisibleCnt>1; // Filtering if CanFilterMsgType then begin - MsgFilterMsgOfTypeMenuItem.Caption:=Format(lisFilterAllMessagesOfType, [ - MsgType]); + MsgFilterMsgOfTypeMenuItem.Caption:=Format(lisFilterAllMessagesOfType, [MsgType]); MsgFilterMsgOfTypeMenuItem.Visible:=true; end else begin //assign default caption if item is not visible (needed for EditorToolBar) @@ -2860,6 +2884,7 @@ MsgTranslateMenuItem.OnClick:=@TranslateMenuItemClick; MsgShowIDMenuItem.Checked:=mcoShowMessageID in MessagesCtrl.Options; MsgShowIDMenuItem.OnClick:=@ShowIDMenuItemClick; + MsgMoreOptionsMenuItem.OnClick:=@MoreOptionsMenuItemClick; UpdateRemoveCompOptHideMsgItems; UpdateRemoveMsgTypeFilterItems; @@ -2940,23 +2965,9 @@ s: TCaption; begin s:=SearchEdit.Text; - if s=GetDefaultSearchText then - s:=''; MessagesCtrl.SearchText:=s; end; -procedure TMessagesFrame.SearchEditEnter(Sender: TObject); -begin - if SearchEdit.Text=GetDefaultSearchText then - SearchEdit.Text:=''; -end; - -procedure TMessagesFrame.SearchEditExit(Sender: TObject); -begin - if SearchEdit.Text='' then - SearchEdit.Text:=GetDefaultSearchText; -end; - procedure TMessagesFrame.SearchEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin @@ -3123,7 +3134,7 @@ MinUrgency:=mluHint else if Sender=MsgFilterDebugMenuItem then MinUrgency:=mluVerbose3 - else if Sender=MsgFilterNoneMenuItem then + else {if Sender=MsgFilterNoneMenuItem then} MinUrgency:=mluNone; MessagesCtrl.ActiveFilter.MinUrgency:=MinUrgency; //debugln(['TMessagesFrame.FilterUrgencyMenuItemClick ',MessageLineUrgencyNames[MinUrgency]]); @@ -3134,6 +3145,11 @@ HideSearch; end; +procedure TMessagesFrame.MoreOptionsMenuItemClick(Sender: TObject); +begin + LazarusIDE.DoOpenIDEOptions(TMsgWndOptionsFrame); +end; + procedure TMessagesFrame.CopyFilenameMenuItemClick(Sender: TObject); begin CopyMsgToClipboard(true); @@ -3256,7 +3272,6 @@ begin SearchPanel.Visible:=false; MessagesCtrl.SearchText:=''; - SearchEdit.Text:=GetDefaultSearchText; end; procedure TMessagesFrame.SaveClicked(OnlyShown: boolean); @@ -3406,22 +3421,31 @@ Align:=alClient; Parent:=Self; - UrgencyStyles[mluNone].SetValues('?',ImgIDInfo,clDefault); - UrgencyStyles[mluProgress].SetValues(lisPDProgress, ImgIDInfo, clDefault); - UrgencyStyles[mluDebug].SetValues(lisDebug, ImgIDInfo, clDefault); + UrgencyStyles[mluNone].SetValues('?',ImgIDInfo,EnvironmentOptions.MsgColors[mluNone]); + UrgencyStyles[mluProgress].SetValues(lisPDProgress, ImgIDInfo, + EnvironmentOptions.MsgColors[mluProgress]); + UrgencyStyles[mluDebug].SetValues(lisDebug, ImgIDInfo, + EnvironmentOptions.MsgColors[mluDebug]); UrgencyStyles[mluVerbose3].SetValues(lisExtremelyVerbose, ImgIDInfo, - clDefault); - UrgencyStyles[mluVerbose2].SetValues(lisVeryVerbose, ImgIDInfo, clDefault); - UrgencyStyles[mluVerbose].SetValues(lisVerbose, ImgIDInfo, clDefault); - UrgencyStyles[mluHint].SetValues(lisHint, ImgIDHint, clDefault); - UrgencyStyles[mluNote].SetValues(lisNote, ImgIDNote, clDefault); + EnvironmentOptions.MsgColors[mluVerbose3]); + UrgencyStyles[mluVerbose2].SetValues(lisVeryVerbose, ImgIDInfo, + EnvironmentOptions.MsgColors[mluVerbose2]); + UrgencyStyles[mluVerbose].SetValues(lisVerbose, ImgIDInfo, + EnvironmentOptions.MsgColors[mluVerbose]); + UrgencyStyles[mluHint].SetValues(lisHint, ImgIDHint, + EnvironmentOptions.MsgColors[mluHint]); + UrgencyStyles[mluNote].SetValues(lisNote, ImgIDNote, + EnvironmentOptions.MsgColors[mluNote]); UrgencyStyles[mluWarning].SetValues(lisCCOWarningCaption, ImgIDWarning, - clDefault); - UrgencyStyles[mluImportant].SetValues(lisImportant, ImgIDInfo, clDefault); - UrgencyStyles[mluError].SetValues(lisCCOErrorCaption, ImgIDError, clDefault - ); - UrgencyStyles[mluFatal].SetValues(lisFatal, ImgIDFatal, clDefault); - UrgencyStyles[mluPanic].SetValues(lisPanic, ImgIDFatal, clDefault); + EnvironmentOptions.MsgColors[mluWarning]); + UrgencyStyles[mluImportant].SetValues(lisImportant, ImgIDInfo, + EnvironmentOptions.MsgColors[mluImportant]); + UrgencyStyles[mluError].SetValues(lisCCOErrorCaption, ImgIDError, + EnvironmentOptions.MsgColors[mluError]); + UrgencyStyles[mluFatal].SetValues(lisFatal, ImgIDFatal, + EnvironmentOptions.MsgColors[mluFatal]); + UrgencyStyles[mluPanic].SetValues(lisPanic, ImgIDFatal, + EnvironmentOptions.MsgColors[mluPanic]); Images:=IDEImages.Images_12; PopupMenu:=MsgCtrlPopupMenu; end; @@ -3431,11 +3455,11 @@ SearchPanel.Visible:=false; // by default the search is hidden HideSearchSpeedButton.Hint:=lisHideSearch; HideSearchSpeedButton.LoadGlyphFromResourceName(HInstance, 'debugger_power_grey'); - SearchEdit.Text:=GetDefaultSearchText; SearchNextSpeedButton.Hint:=lisUDSearchNextOccurrenceOfThisPhrase; SearchNextSpeedButton.LoadGlyphFromResourceName(HInstance, 'callstack_bottom'); SearchPrevSpeedButton.Hint:=lisUDSearchPreviousOccurrenceOfThisPhrase; SearchPrevSpeedButton.LoadGlyphFromResourceName(HInstance, 'callstack_top'); + SearchEdit.TextHint:=lisUDSearch; end; destructor TMessagesFrame.Destroy; @@ -3567,11 +3591,6 @@ MessagesCtrl.Select(Msg,DoScroll); end; -function TMessagesFrame.GetDefaultSearchText: string; -begin - Result:=lisUDSearch; -end; - function TMessagesFrame.SelectFirstUrgentMessage( aMinUrgency: TMessageLineUrgency; WithSrcPos: boolean): boolean; begin diff -Nru lazarus-1.4.4+dfsg/ide/etmessageswnd.pas lazarus-1.6+dfsg/ide/etmessageswnd.pas --- lazarus-1.4.4+dfsg/ide/etmessageswnd.pas 2014-11-01 15:26:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/etmessageswnd.pas 2015-06-28 12:27:53.000000000 +0000 @@ -30,9 +30,9 @@ interface uses - Classes, SysUtils, FileUtil, LazConfigStorage, IDEMsgIntf, IDEImagesIntf, - IDEExternToolIntf, LazIDEIntf, SrcEditorIntf, BaseIDEIntf, SynEditMarks, - Forms, Controls, Graphics, Dialogs, LCLProc, etMessageFrame, etSrcEditMarks, + Classes, SysUtils, FileUtil, IDEMsgIntf, IDEImagesIntf, IDEOptionDefs, + IDEExternToolIntf, LazIDEIntf, SynEditMarks, + Forms, Controls, Graphics, Dialogs, LCLProc, etMessageFrame, etQuickFixes, LazarusIDEStrConsts; type @@ -96,6 +96,7 @@ procedure TMessagesView.FormCreate(Sender: TObject); begin + Name := NonModalIDEWindowNames[nmiwMessagesViewName]; IDEMessagesWindow:=Self; Caption:=lisMenuViewMessages; try @@ -220,6 +221,7 @@ var i: Integer; begin + Result:=nil; if TryCaption(aCaptionPrefix,Result) then exit; if (aCaptionPrefix<>'') and (aCaptionPrefix[length(aCaptionPrefix)] in ['0'..'9']) then diff -Nru lazarus-1.4.4+dfsg/ide/etquickfixes.pas lazarus-1.6+dfsg/ide/etquickfixes.pas --- lazarus-1.4.4+dfsg/ide/etquickfixes.pas 2015-02-13 20:35:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/etquickfixes.pas 2015-06-06 11:19:40.000000000 +0000 @@ -35,7 +35,7 @@ - function header doesn't match any method: update interface/class - complete function implementation with missing parameters - private variable not used => remove - - Hint: Local variable "Path" does not seem to be initialized + - Hint/Warning: (5036) Local variable "Path" does not seem to be initialized auto add begin+end Pointer:=nil integer:=0 @@ -60,7 +60,8 @@ KeywordFuncLists, IDEExternToolIntf, IDEMsgIntf, LazIDEIntf, IDEDialogs, MenuIntf, ProjectIntf, PackageIntf, CompOptsIntf, - etFPCMsgParser, AbstractsMethodsDlg, LazarusIDEStrConsts; + LazarusIDEStrConsts, + etFPCMsgParser, AbstractsMethodsDlg, QFInitLocalVarDlg; type @@ -70,7 +71,7 @@ public function IsApplicable(Msg: TMessageLine; out Identifier: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; { TQuickFixLocalVariableNotUsed_Remove } @@ -79,7 +80,16 @@ public function IsApplicable(Msg: TMessageLine; out Identifier: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + end; + + { TQuickFixLocalVarNotInitialized_AddAssignment } + + TQuickFixLocalVarNotInitialized_AddAssignment = class(TMsgQuickFix) + public + function IsApplicable(Msg: TMessageLine; out Identifier: string): boolean; + procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; { TQuickFixUnitNotFound_Remove } @@ -89,7 +99,7 @@ function IsApplicable(Msg: TMessageLine; out MissingUnitName, UsedByUnit: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; { TQuickFixClassWithAbstractMethods @@ -100,7 +110,7 @@ public function IsApplicable(Msg: TMessageLine; out aClassName: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; { TQuickFixSrcPathOfPkgContains_OpenPkg @@ -112,7 +122,7 @@ public function IsApplicable(Msg: TMessageLine; out PkgName: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; { TQuickFix_HideWithIDEDirective - hide with IDE directive %H- } @@ -131,7 +141,7 @@ function IsApplicable(Msg: TMessageLine; out ToolData: TIDEExternalToolData; out IDETool: TObject): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; { TIDEQuickFixes } @@ -159,6 +169,12 @@ function GetMsgCodetoolPos(Msg: TMessageLine; out Code: TCodeBuffer; out Tool: TCodeTool; out CleanPos: integer; out Node: TCodeTreeNode): boolean; +function GetMsgSrcPosOfIdentifier(Msg: TMessageLine; out Identifier: string; + out Code: TCodeBuffer; out Tool: TCodeTool; out CleanPos: integer; + out Node: TCodeTreeNode): boolean; +function GetMsgSrcPosOfThisIdentifier(Msg: TMessageLine; const Identifier: string; + out Code: TCodeBuffer; out Tool: TCodeTool; out CleanPos: integer; + out Node: TCodeTreeNode): boolean; implementation @@ -221,6 +237,124 @@ Result:=Node<>nil; end; +function GetMsgSrcPosOfIdentifier(Msg: TMessageLine; out Identifier: string; + out Code: TCodeBuffer; out Tool: TCodeTool; out CleanPos: integer; out + Node: TCodeTreeNode): boolean; +begin + Result:=false; + Code:=nil; + Tool:=nil; + CleanPos:=0; + Node:=nil; + // check if message position is at end of identifier + // (FPC gives position of start or end of identifier) + if not GetMsgCodetoolPos(Msg,Code,Tool,CleanPos,Node) then exit; + Tool.MoveCursorToCleanPos(CleanPos); + if (CleanPos>Tool.SrcLen) or (not IsIdentChar[Tool.Src[CleanPos]]) then + Tool.ReadPriorAtom + else + Tool.ReadNextAtom; + Identifier:=Tool.GetAtom; + CleanPos:=Tool.CurPos.StartPos; + Result:=(Identifier<>'') and IsValidIdent(Identifier); +end; + +function GetMsgSrcPosOfThisIdentifier(Msg: TMessageLine; const Identifier: string; + out Code: TCodeBuffer; out Tool: TCodeTool; out CleanPos: integer; + out Node: TCodeTreeNode): boolean; +var + CurIdentifier: string; +begin + Result:=GetMsgSrcPosOfIdentifier(Msg,CurIdentifier,Code,Tool,CleanPos,Node) + and (CompareIdentifiers(PChar(CurIdentifier),PChar(Identifier))=0); +end; + +{ TQuickFixLocalVarNotInitialized_AddAssignment } + +function TQuickFixLocalVarNotInitialized_AddAssignment.IsApplicable( + Msg: TMessageLine; out Identifier: string): boolean; +var + Tool: TCodeTool; + CleanPos: integer; + Node: TCodeTreeNode; + Code: TCodeBuffer; +begin + Result:=false; + if (Msg=nil) or (Msg.SubTool<>SubToolFPC) or (Msg.MsgID<1) + or (not Msg.HasSourcePosition) then exit; + + // Check: Local variable "$1" does not seem to be initialized + case Msg.MsgID of + 5036, // W_Local variable "$1" does not seem to be initialized + 5037, // W_Variable "$1" does not seem to be initialized + 5057, // H_Local variable "$1" does not seem to be initialized + 5058, // H_Variable "$1" does not seem to be initialized + 5089, // W_Local variable "$1" of a managed type does not seem to be initialized + 5090, // W_Variable "$1" of a managed type does not seem to be initialized + 5091, // H_Local variable "$1" of a managed type does not seem to be initialized + 5092: // H_Variable "$1" of a managed type does not seem to be initialized + begin + Identifier:=TIDEFPCParser.GetFPCMsgValue1(Msg); + // check if message position is at end of identifier + if not GetMsgSrcPosOfThisIdentifier(Msg,Identifier,Code,Tool,CleanPos,Node) + then exit; + end; + 5059, // W_Function result variable does not seem to initialized + 5060, // H_Function result variable does not seem to be initialized + 5093, // W_function result variable of a managed type does not seem to initialized + 5094: // H_Function result variable of a managed type does not seem to be initialized + begin + if not GetMsgSrcPosOfIdentifier(Msg,Identifier,Code,Tool,CleanPos,Node) + then exit; + end; + else + exit; + end; + if not IsValidIdent(Identifier) then exit; + + // check if identifier is in statement and start of expression + if not (Node.Desc in AllPascalStatements) then exit; + if (Tool.CurPos.Flag in [cafPoint,cafRoundBracketClose,cafEdgedBracketClose, + cafEnd]) + then exit; + Result:=true; +end; + +procedure TQuickFixLocalVarNotInitialized_AddAssignment.CreateMenuItems( + Fixes: TMsgQuickFixes); +var + Msg: TMessageLine; + Identifier: String; + i: Integer; +begin + for i:=0 to Fixes.LineCount-1 do begin + Msg:=Fixes.Lines[i]; + if not IsApplicable(Msg,Identifier) then continue; + Fixes.AddMenuItem(Self, Msg, Format(lisInsertAssignment, [Identifier])); + exit; + end; +end; + +procedure TQuickFixLocalVarNotInitialized_AddAssignment.QuickFix( + Fixes: TMsgQuickFixes; Msg: TMessageLine); +var + Identifier: String; + Code: TCodeBuffer; +begin + if not IsApplicable(Msg,Identifier) then exit; + + if not LazarusIDE.BeginCodeTools then begin + DebugLn(['TQuickFixLocalVarNotInitialized_AddAssignment failed because IDE busy']); + exit; + end; + + Code:=CodeToolBoss.LoadFile(Msg.GetFullFilename,true,false); + if Code=nil then exit; + + if QuickFixLocalVarNotInitialized(Code, Msg.Column, Msg.Line) then + Msg.MarkFixed; +end; + { TQuickFixSrcPathOfPkgContains_OpenPkg } function TQuickFixSrcPathOfPkgContains_OpenPkg.IsApplicable(Msg: TMessageLine; @@ -377,15 +511,10 @@ if not Msg.HasSourcePosition or not IsValidIdent(Identifier) then exit; // check if message position is at end of identifier - // (FPC gives position of start or end of identifier) - if not GetMsgCodetoolPos(Msg,Code,Tool,CleanPos,Node) then exit; + if not GetMsgSrcPosOfThisIdentifier(Msg,Identifier,Code,Tool,CleanPos,Node) then exit; + + // check if identifier is a var definition if not (Node.Desc in [ctnVarDefinition]) then exit; - Tool.MoveCursorToCleanPos(CleanPos); - if (CleanPos>Tool.SrcLen) or (not IsIdentChar[Tool.Src[CleanPos]]) then - Tool.ReadPriorAtom - else - Tool.ReadNextAtom; - if not Tool.AtomIs(Identifier) then exit; Tool.ReadPriorAtom; if (Tool.CurPos.Flag in [cafPoint,cafRoundBracketClose,cafEdgedBracketClose, cafEnd]) @@ -424,11 +553,6 @@ Code:=CodeToolBoss.LoadFile(Msg.GetFullFilename,true,false); if Code=nil then exit; - if not IsIdentifierInCode(Code,Msg.Column,Msg.Line,Identifier, - Format(lisNotFoundInAtLineColumnMaybeTheMessageIsOutdated, - [Identifier, Code.Filename, IntToStr(Msg.Line), IntToStr(Msg.Column), LineEnding])) - then exit; - if not CodeToolBoss.RemoveIdentifierDefinition(Code,Msg.Column,Msg.Line) then begin DebugLn(['TQuickFixLocalVariableNotUsed_Remove remove failed']); @@ -611,11 +735,11 @@ function TQuickFixIdentifierNotFoundAddLocal.IsApplicable(Msg: TMessageLine; out Identifier: string): boolean; var + Code: TCodeBuffer; Tool: TCodeTool; CleanPos: integer; Node: TCodeTreeNode; Dummy: string; - Code: TCodeBuffer; begin Result:=false; Identifier:=''; @@ -625,15 +749,10 @@ if not Msg.HasSourcePosition or not IsValidIdent(Identifier) then exit; // check if message position is at identifier - if not GetMsgCodetoolPos(Msg, Code,Tool, CleanPos, Node) then exit; + if not GetMsgSrcPosOfThisIdentifier(Msg,Identifier,Code,Tool,CleanPos,Node) then exit; + + // check if identifier is expression start in statement if not (Node.Desc in AllPascalStatements) then exit; - Tool.MoveCursorToCleanPos(CleanPos); - if mlfLeftToken in Msg.Flags then - Tool.ReadPriorAtom - else - Tool.ReadNextAtom; - if not Tool.AtomIs(Identifier) then exit; - Tool.ReadPriorAtom; if (Tool.CurPos.Flag in [cafPoint,cafRoundBracketClose,cafEdgedBracketClose, cafEnd]) then exit; @@ -676,11 +795,6 @@ Code:=CodeToolBoss.LoadFile(Msg.GetFullFilename,true,false); if Code=nil then exit; - if not IsIdentifierInCode(Code,Msg.Column,Msg.Line,Identifier, - Format(lisNotFoundInAtLineColumnMaybeTheMessageIsOutdated, [Identifier, - Code.Filename, IntToStr(Msg.Line), IntToStr(Msg.Column), LineEnding])) - then exit; - if not CodeToolBoss.CreateVariableForIdentifier(Code,Msg.Column,Msg.Line,-1, NewCode,NewX,NewY,NewTopLine) then begin @@ -862,6 +976,7 @@ // add them in the order of usefulness IDEQuickFixes.RegisterQuickFix(TQuickFixIdentifierNotFoundAddLocal.Create); IDEQuickFixes.RegisterQuickFix(TQuickFixLocalVariableNotUsed_Remove.Create); + IDEQuickFixes.RegisterQuickFix(TQuickFixLocalVarNotInitialized_AddAssignment.Create); IDEQuickFixes.RegisterQuickFix(TQuickFixUnitNotFound_Remove.Create); IDEQuickFixes.RegisterQuickFix(TQuickFixClassWithAbstractMethods.Create); IDEQuickFixes.RegisterQuickFix(TQuickFixSrcPathOfPkgContains_OpenPkg.Create); diff -Nru lazarus-1.4.4+dfsg/ide/etsrceditmarks.pas lazarus-1.6+dfsg/ide/etsrceditmarks.pas --- lazarus-1.4.4+dfsg/ide/etsrceditmarks.pas 2014-07-20 20:02:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/etsrceditmarks.pas 2015-03-22 10:17:35.000000000 +0000 @@ -883,7 +883,7 @@ {$ENDIF} if (FromPosY=ToPosY) and (FromPosX=ToPosX) then - exit; // no change => ignore + exit(nil); // no change => ignore // consistency check if IsCaretInFront(ToPosY,ToPosX,FromPosY,FromPosX) then diff -Nru lazarus-1.4.4+dfsg/ide/examplemanager.lfm lazarus-1.6+dfsg/ide/examplemanager.lfm --- lazarus-1.4.4+dfsg/ide/examplemanager.lfm 2014-10-30 19:47:55.000000000 +0000 +++ lazarus-1.6+dfsg/ide/examplemanager.lfm 2015-05-05 21:59:15.000000000 +0000 @@ -3,13 +3,14 @@ Height = 495 Top = 130 Width = 870 + ActiveControl = ProjectFilter Caption = 'ExampleManagerForm' ClientHeight = 495 ClientWidth = 870 OnClose = FormClose OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object ProjectsGroupBox: TGroupBox Left = 0 Height = 326 @@ -18,9 +19,9 @@ Align = alClient BorderSpacing.Top = 3 Caption = 'Projects' - ClientHeight = 308 - ClientWidth = 453 - TabOrder = 0 + ClientHeight = 310 + ClientWidth = 455 + TabOrder = 1 object ProjectsListBox: TListBox AnchorSideLeft.Control = ProjectsGroupBox AnchorSideTop.Control = ProjectFilter @@ -30,15 +31,17 @@ AnchorSideBottom.Control = ProjectsGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 274 + Height = 276 Top = 28 - Width = 441 + Width = 443 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 ItemHeight = 0 MultiSelect = True OnSelectionChange = ProjectsListBoxSelectionChange - TabOrder = 0 + ScrollWidth = 441 + TabOrder = 2 + TopIndex = -1 end object ProjectFilter: TListFilterEdit AnchorSideLeft.Control = ProjectsListBox @@ -50,7 +53,7 @@ ButtonWidth = 23 NumGlyphs = 1 MaxLength = 0 - TabOrder = 1 + TabOrder = 0 FilteredListbox = ProjectsListBox end object cbRelativePath: TCheckBox @@ -58,14 +61,14 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ProjectFilter AnchorSideTop.Side = asrCenter - Left = 277 - Height = 17 - Top = 3 - Width = 87 + Left = 252 + Height = 22 + Top = 0 + Width = 108 BorderSpacing.Left = 25 Caption = 'Relative paths' OnClick = cbRelativePathClick - TabOrder = 2 + TabOrder = 1 end end object ButtonPanel1: TButtonPanel @@ -81,8 +84,9 @@ CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 1 + TabOrder = 4 ShowButtons = [pbClose, pbHelp] + ShowBevel = False end object ActionGroupBox: TGroupBox AnchorSideLeft.Side = asrBottom @@ -95,8 +99,8 @@ BorderSpacing.Left = 3 BorderSpacing.Top = 3 Caption = 'Action' - ClientHeight = 308 - ClientWidth = 401 + ClientHeight = 310 + ClientWidth = 403 TabOrder = 2 object OpenSelectedButton: TBitBtn AnchorSideLeft.Control = ActionGroupBox @@ -105,7 +109,7 @@ Left = 6 Height = 25 Top = 6 - Width = 188 + Width = 189 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 Caption = 'Open First Selected' @@ -122,14 +126,14 @@ Left = 6 Height = 25 Top = 43 - Width = 189 + Width = 190 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Around = 6 Caption = 'Build All Selected' Enabled = False OnClick = BuildAllSelectedButtonClick - TabOrder = 1 + TabOrder = 2 Visible = False end object SelectAllButton: TBitBtn @@ -138,15 +142,15 @@ AnchorSideTop.Control = ActionGroupBox AnchorSideRight.Control = ActionGroupBox AnchorSideRight.Side = asrBottom - Left = 207 + Left = 208 Height = 25 Top = 6 - Width = 188 + Width = 189 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 Caption = 'Select All' OnClick = SelectAllButtonClick - TabOrder = 2 + TabOrder = 1 end object SelectNoneButton: TBitBtn AnchorSideLeft.Control = lblCenter @@ -155,10 +159,10 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ActionGroupBox AnchorSideRight.Side = asrBottom - Left = 207 + Left = 208 Height = 25 Top = 43 - Width = 188 + Width = 189 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Around = 6 @@ -176,9 +180,9 @@ AnchorSideBottom.Control = ActionGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 228 + Height = 230 Top = 74 - Width = 389 + Width = 391 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 ReadOnly = True @@ -189,7 +193,7 @@ AnchorSideLeft.Control = ActionGroupBox AnchorSideLeft.Side = asrCenter AnchorSideTop.Control = ActionGroupBox - Left = 200 + Left = 201 Height = 1 Top = 0 Width = 1 @@ -202,22 +206,23 @@ Top = 0 Width = 870 Align = alTop + BevelOuter = bvNone ClientHeight = 120 ClientWidth = 870 - TabOrder = 3 + TabOrder = 0 object cbIncludeAllDirs: TCheckBox AnchorSideTop.Side = asrBottom AnchorSideRight.Control = edRootDirectory AnchorSideRight.Side = asrBottom - Left = 328 - Height = 17 + Left = 289 + Height = 22 Top = 56 - Width = 136 + Width = 175 Anchors = [akTop, akRight] BorderSpacing.Top = 3 Caption = 'Include all subdirectories' OnClick = cbIncludeAllDirsClick - TabOrder = 0 + TabOrder = 1 end object edRootDirectory: TDirectoryEdit AnchorSideLeft.Control = lbRootDirectory @@ -233,14 +238,14 @@ Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 7 MaxLength = 0 - TabOrder = 1 + TabOrder = 0 OnChange = edRootDirectoryChange end object cgIncludedDirs: TCheckGroup AnchorSideBottom.Control = SelectPanel AnchorSideBottom.Side = asrBottom Left = 496 - Height = 114 + Height = 115 Top = 5 Width = 369 Anchors = [akTop, akRight, akBottom] @@ -254,8 +259,8 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 4 - ClientHeight = 96 - ClientWidth = 365 + ClientHeight = 99 + ClientWidth = 367 Columns = 4 Items.Strings = ( 'example' @@ -275,9 +280,9 @@ end object lbRootDirectory: TLabel Left = 8 - Height = 13 + Height = 15 Top = 8 - Width = 70 + Width = 85 Caption = 'Root Directory' ParentColor = False end @@ -286,9 +291,9 @@ AnchorSideBottom.Control = SelectPanel AnchorSideBottom.Side = asrBottom Left = 8 - Height = 13 - Top = 95 - Width = 71 + Height = 15 + Top = 94 + Width = 88 Anchors = [akLeft, akBottom] BorderSpacing.Bottom = 11 Caption = 'lbProjectCount' diff -Nru lazarus-1.4.4+dfsg/ide/examplemanager.pas lazarus-1.6+dfsg/ide/examplemanager.pas --- lazarus-1.4.4+dfsg/ide/examplemanager.pas 2014-06-15 11:52:01.000000000 +0000 +++ lazarus-1.6+dfsg/ide/examplemanager.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, lazutf8classes, ListFilterEdit, Forms, Controls, - Graphics, Dialogs, StdCtrls, ExtCtrls, ButtonPanel, Buttons, EditBtn, LCLProc, + Classes, SysUtils, lazutf8classes, ListFilterEdit, Forms, Controls, Dialogs, + StdCtrls, ExtCtrls, ButtonPanel, Buttons, EditBtn, LCLProc, FileUtil, LazFileUtils, IDEWindowIntf, LazIDEIntf, MainIntf, EnvironmentOpts, LazarusIDEStrConsts; type @@ -34,13 +34,13 @@ SelectNoneButton: TBitBtn; ProjectsGroupBox: TGroupBox; procedure cbIncludeAllDirsClick(Sender: TObject); - procedure cgIncludedDirsItemClick(Sender: TObject; Index: integer); + procedure cgIncludedDirsItemClick(Sender: TObject; {%H-}Index: integer); procedure FormCreate(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure BuildAllSelectedButtonClick(Sender: TObject); procedure OpenSelectedButtonClick(Sender: TObject); procedure ProjectFilterAfterFilter(Sender: TObject); - procedure ProjectsListBoxSelectionChange(Sender: TObject; User: boolean); + procedure ProjectsListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); procedure cbRelativePathClick(Sender: TObject); procedure edRootDirectoryChange(Sender: TObject); procedure SelectAllButtonClick(Sender: TObject); @@ -52,7 +52,7 @@ fIdleConnected: boolean; procedure FillProjectsPending; procedure SetIdleConnected(const AValue: boolean); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); public constructor Create(AnOwner: TComponent); override; destructor Destroy; override; diff -Nru lazarus-1.4.4+dfsg/ide/extractprocdlg.pas lazarus-1.6+dfsg/ide/extractprocdlg.pas --- lazarus-1.4.4+dfsg/ide/extractprocdlg.pas 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/extractprocdlg.pas 2015-05-07 22:27:31.000000000 +0000 @@ -34,7 +34,7 @@ uses Classes, SysUtils, LCLProc, AVL_Tree, Forms, Controls, Graphics, Dialogs, ExtCtrls, Buttons, StdCtrls, ButtonPanel, - BasicCodeTools, CodeTree, CodeAtom, CodeCache, CodeToolManager, + BasicCodeTools, CodeTree, CodeCache, CodeToolManager, ExtractProcTool, IDEHelpIntf, IDEDialogs, LazarusIDEStrConsts, IDEProcs, MiscOptions; @@ -58,7 +58,7 @@ procedure HelpButtonClick(Sender: TObject); procedure ExtractProcDialogCreate(Sender: TObject); procedure ExtractProcDialogClose(Sender: TObject; - var CloseAction: TCloseAction); + var {%H-}CloseAction: TCloseAction); procedure OkButtonClick(Sender: TObject); private FMethodPossible: boolean; @@ -85,17 +85,16 @@ function ShowExtractProcDialog(Code: TCodeBuffer; const BlockBegin, BlockEnd: TPoint; - var NewSource: TCodeBuffer; - var NewX, NewY, NewTopLine: integer): TModalResult; + out NewSource: TCodeBuffer; + out NewX, NewY, NewTopLine: integer): TModalResult; implementation {$R *.lfm} -function ShowExtractProcDialog(Code: TCodeBuffer; - const BlockBegin, BlockEnd: TPoint; - var NewSource: TCodeBuffer; - var NewX, NewY, NewTopLine: integer): TModalresult; +function ShowExtractProcDialog(Code: TCodeBuffer; const BlockBegin, + BlockEnd: TPoint; out NewSource: TCodeBuffer; out NewX, NewY, + NewTopLine: integer): TModalResult; var ExtractProcDialog: TExtractProcDialog; MethodPossible: Boolean; @@ -109,6 +108,10 @@ SubProcPossible: boolean; begin Result:=mrCancel; + NewSource:=nil; + NewX:=0; + NewY:=0; + NewTopLine:=0; if CompareCaret(BlockBegin,BlockEnd)<=0 then begin IDEMessageDialog(lisNoCodeSelected, lisPleaseSelectSomeCodeToExtractANewProcedureMethod, diff -Nru lazarus-1.4.4+dfsg/ide/exttooldialog.lfm lazarus-1.6+dfsg/ide/exttooldialog.lfm --- lazarus-1.4.4+dfsg/ide/exttooldialog.lfm 2013-05-02 22:13:57.000000000 +0000 +++ lazarus-1.6+dfsg/ide/exttooldialog.lfm 2015-06-08 16:10:58.000000000 +0000 @@ -4,15 +4,15 @@ Top = 226 Width = 451 ActiveControl = ListBox - BorderStyle = bsSizeToolWin + BorderIcons = [biSystemMenu] Caption = 'ExternalToolDialog' ClientHeight = 347 ClientWidth = 451 Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object ToolBar: TToolBar Left = 0 - Height = 48 + Height = 94 Top = 0 Width = 451 AutoSize = True @@ -24,28 +24,28 @@ ShowHint = True TabOrder = 0 object MoveDownButton: TToolButton - Left = 281 + Left = 312 Top = 2 Caption = 'MoveDownButton' ImageIndex = 4 OnClick = MoveDownButtonClick end object MoveUpButton: TToolButton - Left = 202 + Left = 223 Top = 2 Caption = 'MoveUpButton' ImageIndex = 3 OnClick = MoveUpButtonClick end object EditButton: TToolButton - Left = 139 + Left = 154 Top = 2 Caption = 'EditButton' ImageIndex = 2 OnClick = EditButtonClick end object RemoveButton: TToolButton - Left = 60 + Left = 67 Top = 2 Caption = 'RemoveButton' ImageIndex = 1 @@ -59,30 +59,32 @@ OnClick = AddButtonClick end object tbSeparator: TToolButton - Left = 197 + Left = 218 + Height = 46 Top = 2 Width = 5 Caption = 'tbSeparator' Style = tbsDivider end object tbSeparator2: TToolButton - Left = 374 + Left = 417 + Height = 46 Top = 2 Width = 5 Caption = 'tbSeparator2' Style = tbsDivider end object ExtraButton: TToolButton - Left = 379 - Top = 2 + Left = 1 + Top = 48 Caption = 'ExtraButton' DropdownMenu = PopupDropdownMenu end end object ListBox: TListBox Left = 0 - Height = 261 - Top = 48 + Height = 215 + Top = 94 Width = 451 Align = alClient BorderSpacing.Bottom = 6 diff -Nru lazarus-1.4.4+dfsg/ide/exttooldialog.pas lazarus-1.6+dfsg/ide/exttooldialog.pas --- lazarus-1.4.4+dfsg/ide/exttooldialog.pas 2014-07-20 19:47:30.000000000 +0000 +++ lazarus-1.6+dfsg/ide/exttooldialog.pas 2015-12-03 09:40:41.000000000 +0000 @@ -38,9 +38,9 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, Process, LCLType, LCLProc, Controls, Forms, + Classes, SysUtils, LCLType, LCLProc, Controls, Forms, Buttons, StdCtrls, ComCtrls, Dialogs, ExtCtrls, ButtonPanel, Menus, - FileProcs, + FileProcs, FileUtil, IDEExternToolIntf, IDEImagesIntf, IDEDialogs, IDEHelpIntf, IDECommands, ProjectIntf, EnvironmentOpts, @@ -156,6 +156,9 @@ MoveDownButton.ImageIndex := IDEImages.LoadImage(16, 'arrow_down'); fExtToolList:=TExternalUserTools.Create; + + OpenDialog1.Filter:= dlgFilterXML+'|*.xml|'+dlgFilterAll+'|'+GetAllFilesMask; + SaveDialog1.Filter:= OpenDialog1.Filter; end; destructor TExternalToolDialog.Destroy; diff -Nru lazarus-1.4.4+dfsg/ide/exttooleditdlg.lfm lazarus-1.6+dfsg/ide/exttooleditdlg.lfm --- lazarus-1.4.4+dfsg/ide/exttooleditdlg.lfm 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/exttooleditdlg.lfm 2015-05-13 22:09:34.000000000 +0000 @@ -18,21 +18,21 @@ AnchorSideTop.Control = TitleEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 13 + Height = 15 Top = 10 - Width = 45 + Width = 51 BorderSpacing.Left = 6 Caption = 'TitleLabel' ParentColor = False end object FilenameLabel: TLabel AnchorSideLeft.Control = Owner - AnchorSideTop.Control = FilenameEdit + AnchorSideTop.Control = FileNameEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 13 - Top = 37 - Width = 67 + Height = 15 + Top = 39 + Width = 76 BorderSpacing.Left = 6 Caption = 'FilenameLabel' ParentColor = False @@ -42,9 +42,9 @@ AnchorSideTop.Control = MemoParameters AnchorSideTop.Side = asrCenter Left = 6 - Height = 13 - Top = 99 - Width = 80 + Height = 15 + Top = 102 + Width = 87 BorderSpacing.Left = 6 Caption = 'ParametersLabel' ParentColor = False @@ -54,9 +54,9 @@ AnchorSideTop.Control = WorkingDirEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 13 - Top = 160 - Width = 77 + Height = 15 + Top = 164 + Width = 88 BorderSpacing.Left = 6 Caption = 'WorkingDirLabel' ParentColor = False @@ -67,66 +67,16 @@ AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 103 - Height = 21 + Left = 112 + Height = 23 Top = 6 - Width = 552 + Width = 543 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 24 BorderSpacing.Around = 6 TabOrder = 0 Text = 'TitleEdit' end - object FilenameEdit: TEdit - AnchorSideLeft.Control = TitleEdit - AnchorSideTop.Control = TitleEdit - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = OpenButton - Left = 103 - Height = 21 - Top = 33 - Width = 508 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - TabOrder = 1 - Text = 'FilenameEdit' - end - object OpenButton: TButton - AnchorSideTop.Control = FilenameEdit - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = FilenameEdit - AnchorSideBottom.Side = asrBottom - Left = 617 - Height = 21 - Top = 33 - Width = 38 - Anchors = [akTop, akRight, akBottom] - AutoSize = True - BorderSpacing.Right = 6 - Caption = '...' - OnClick = OpenButtonClick - ParentShowHint = False - ShowHint = True - TabOrder = 2 - end - object WorkingDirEdit: TEdit - AnchorSideLeft.Control = TitleEdit - AnchorSideTop.Control = MemoParameters - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 103 - Height = 21 - Top = 156 - Width = 552 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - TabOrder = 3 - Text = 'WorkingDirEdit' - end object OptionsGroupBox: TGroupBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = WorkingDirEdit @@ -134,8 +84,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 105 - Top = 183 + Height = 107 + Top = 189 Width = 649 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -148,9 +98,9 @@ TabOrder = 4 object OptionScanOutputForFPCMessagesCheckBox: TCheckBox Left = 6 - Height = 17 + Height = 19 Top = 6 - Width = 242 + Width = 269 BorderSpacing.Around = 6 Caption = 'OptionScanOutputForFPCMessagesCheckBox' TabOrder = 0 @@ -159,9 +109,9 @@ AnchorSideTop.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 6 - Height = 17 - Top = 29 - Width = 242 + Height = 19 + Top = 31 + Width = 269 BorderSpacing.Around = 6 Caption = 'OptionScanOutputForMakeMessagesCheckBox' TabOrder = 1 @@ -171,24 +121,24 @@ AnchorSideTop.Control = OptionScanOutputForMakeMessagesCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 29 - Top = 52 + Height = 25 + Top = 56 Width = 323 BorderSpacing.Around = 6 Caption = 'ScannersButton' - TabOrder = 2 + TabOrder = 3 end object chkHideMainForm: TCheckBox AnchorSideLeft.Control = OptionScanOutputForFPCMessagesCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = OptionScanOutputForFPCMessagesCheckBox - Left = 254 - Height = 17 + Left = 281 + Height = 19 Top = 6 - Width = 101 + Width = 119 BorderSpacing.Left = 6 Caption = 'chkHideMainForm' - TabOrder = 3 + TabOrder = 2 end end object KeyGroupBox: TGroupBox @@ -199,7 +149,7 @@ AnchorSideRight.Side = asrBottom Left = 6 Height = 25 - Top = 294 + Top = 302 Width = 649 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -216,13 +166,13 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ButtonPanel Left = 6 - Height = 229 - Top = 325 + Height = 221 + Top = 333 Width = 649 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 Caption = 'MacrosGroupbox' - ClientHeight = 211 + ClientHeight = 201 ClientWidth = 645 TabOrder = 6 object MacrosListbox: TListBox @@ -232,9 +182,9 @@ AnchorSideBottom.Control = MacrosGroupbox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 203 + Height = 193 Top = 2 - Width = 506 + Width = 497 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Right = 6 @@ -248,10 +198,10 @@ AnchorSideTop.Control = MacrosGroupbox AnchorSideRight.Control = MacrosGroupbox AnchorSideRight.Side = asrBottom - Left = 518 - Height = 23 + Left = 509 + Height = 25 Top = 2 - Width = 121 + Width = 130 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Top = 2 @@ -284,24 +234,60 @@ end object MemoParameters: TMemo AnchorSideLeft.Control = TitleEdit - AnchorSideTop.Control = FilenameEdit + AnchorSideTop.Control = FileNameEdit AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner + AnchorSideRight.Control = TitleEdit AnchorSideRight.Side = asrBottom - Left = 103 + Left = 112 Height = 90 - Top = 60 - Width = 552 + Top = 64 + Width = 543 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 - BorderSpacing.Right = 6 ScrollBars = ssAutoBoth - TabOrder = 8 + TabOrder = 2 WordWrap = False end - object OpenDialog: TOpenDialog - Options = [ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail] - left = 80 - top = 56 + object FileNameEdit: TFileNameEdit + AnchorSideLeft.Control = TitleEdit + AnchorSideTop.Control = TitleEdit + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = TitleEdit + AnchorSideRight.Side = asrBottom + Left = 112 + Height = 23 + Top = 35 + Width = 543 + DialogOptions = [ofPathMustExist, ofFileMustExist, ofEnableSizing, ofViewDetail] + FilterIndex = 1 + HideDirectories = False + ButtonWidth = 45 + NumGlyphs = 1 + FocusOnButtonClick = True + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + MaxLength = 0 + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end + object WorkingDirEdit: TDirectoryEdit + AnchorSideLeft.Control = TitleEdit + AnchorSideTop.Control = MemoParameters + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = TitleEdit + AnchorSideRight.Side = asrBottom + Left = 112 + Height = 23 + Top = 160 + Width = 543 + ShowHidden = False + ButtonWidth = 45 + NumGlyphs = 1 + FocusOnButtonClick = True + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + MaxLength = 0 + TabOrder = 3 end end diff -Nru lazarus-1.4.4+dfsg/ide/exttooleditdlg.pas lazarus-1.6+dfsg/ide/exttooleditdlg.pas --- lazarus-1.4.4+dfsg/ide/exttooleditdlg.pas 2015-05-12 22:03:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/exttooleditdlg.pas 2015-07-07 11:43:38.000000000 +0000 @@ -41,11 +41,11 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, FileUtil, LazUTF8, LCLType, Controls, Forms, Buttons, - StdCtrls, Dialogs, ExtCtrls, LCLProc, ButtonPanel, + Classes, SysUtils, contnrs, FileUtil, LazUTF8, LCLType, Controls, Forms, Buttons, + StdCtrls, Dialogs, ExtCtrls, LCLProc, ButtonPanel, EditBtn, IDEExternToolIntf, IDEHelpIntf, PropEdits, IDEDialogs, IDECommands, - FileProcs, TransferMacros, LazarusIDEStrConsts, EnvironmentOpts, KeyMapping, - IDEProcs, LazConfigStorage, contnrs, IDEUtils; + FileProcs, LazFileUtils, TransferMacros, LazarusIDEStrConsts, EnvironmentOpts, + KeyMapping, IDEProcs, LazConfigStorage, IDEUtils; const ExternalToolOptionsVersion = 3; @@ -144,17 +144,15 @@ TExternalToolOptionDlg = class(TForm) ButtonPanel: TButtonPanel; + WorkingDirEdit: TDirectoryEdit; + FileNameEdit: TFileNameEdit; MemoParameters: TMemo; ScannersButton: TButton; TitleLabel: TLabel; TitleEdit: TEdit; FilenameLabel: TLabel; - FilenameEdit: TEdit; - OpenDialog: TOpenDialog; - OpenButton:TButton; ParametersLabel: TLabel; WorkingDirLabel: TLabel; - WorkingDirEdit: TEdit; OptionsGroupBox: TGroupBox; OptionScanOutputForFPCMessagesCheckBox: TCheckBox; OptionScanOutputForMakeMessagesCheckBox: TCheckBox; @@ -170,7 +168,6 @@ procedure MacrosListboxClick(Sender: TObject); procedure MacrosListboxDblClick(Sender: TObject); procedure OKButtonClick(Sender: TObject); - procedure OpenButtonClick({%H-}sender : TOBject); private fAllKeys: TKeyCommandRelationList; fOptions: TExternalUserTool; @@ -473,7 +470,7 @@ Src: TExternalUserTools; i: Integer; begin - if Obj=Self then exit; + if Obj=Self then exit(true); if Obj is TExternalUserTools then begin Src:=TExternalUserTools(Obj); Result:=false; @@ -650,12 +647,6 @@ { TExternalToolOptionDlg } -procedure TExternalToolOptionDlg.OpenButtonClick(sender : TOBject); -begin - OpenDialog.FileName := FilenameEdit.Text; - if OpenDialog.Execute then FilenameEdit.Text := OpenDialog.FileName; -End; - procedure TExternalToolOptionDlg.LoadFromOptions; begin TitleEdit.Text:=fOptions.Title; @@ -715,13 +706,11 @@ Caption:=lisEdtExtToolEditTool; TitleLabel.Caption:=dlgPOTitle; FilenameLabel.Caption:=lisEdtExtToolProgramfilename; - OpenButton.Hint:=lisClickHereToBrowseTheFileHint; + FilenameEdit.ButtonHint:=lisClickHereToBrowseTheFileHint; - with OpenDialog do begin - Title:=lisSelectFile; - Filter:=dlgAllFiles+' ('+GetAllFilesMask+')|'+GetAllFilesMask - +'|'+lisExePrograms+' (*.exe)|*.exe'; - end; + FilenameEdit.DialogTitle:=lisSelectFile; + FilenameEdit.Filter:=dlgFilterAll+' ('+GetAllFilesMask+')|'+GetAllFilesMask + +'|'+dlgFilterPrograms+' (*.exe)|*.exe'; ParametersLabel.Caption:=lisEdtExtToolParameters; WorkingDirLabel.Caption:=lisEdtExtToolWorkingDirectory; diff -Nru lazarus-1.4.4+dfsg/ide/exttools.pas lazarus-1.6+dfsg/ide/exttools.pas --- lazarus-1.4.4+dfsg/ide/exttools.pas 2015-02-28 22:48:16.000000000 +0000 +++ lazarus-1.6+dfsg/ide/exttools.pas 2015-11-18 22:19:00.000000000 +0000 @@ -34,15 +34,16 @@ interface uses - Classes, SysUtils, math, process, Pipes, UTF8Process, - LazFileUtils, - // Codetools + // RTL + FCL + LCL + Classes, SysUtils, math, process, Pipes, + LCLIntf, Forms, Dialogs, + // CodeTools FileProcs, CodeToolsStructs, - // LCL - LCLIntf, LCLProc, Forms, Dialogs, FileUtil, AvgLvlTree, + // LazUtils + FileUtil, AvgLvlTree, LazFileUtils, UTF8Process, LazUTF8, // IDEIntf IDEExternToolIntf, BaseIDEIntf, MacroIntf, IDEMsgIntf, IDEDialogs, - CompOptsIntf, PackageIntf, LazIDEIntf, + PackageIntf, LazIDEIntf, // IDE IDECmdLine, TransferMacros, LazarusIDEStrConsts; @@ -87,6 +88,7 @@ TLazExtToolConsole = class(TComponent) private + FTerminating: boolean; fViews: TFPList; // list of TLazExtToolConsoleView function GetViews(Index: integer): TLazExtToolConsoleView; public @@ -97,6 +99,7 @@ function FindUnfinishedView: TLazExtToolConsoleView; property Views[Index: integer]: TLazExtToolConsoleView read GetViews; function Count: integer; inline; + property Terminating: boolean read FTerminating write FTerminating; end; var @@ -283,13 +286,13 @@ inherited ToolExited; if Tool.Terminated then begin ToolState:=lmvtsFailed; - debugln(Caption,': terminated'); + debugln('Error: (lazarus) ',Caption,': terminated'); end else if (ExitStatus<>0) then begin ToolState:=lmvtsFailed; - debugln(Caption,': stopped with exit code '+IntToStr(ExitStatus)); + debugln('Error: (lazarus) ',Caption,': stopped with exit code '+IntToStr(ExitStatus)); end else if Tool.ErrorMessage<>'' then begin ToolState:=lmvtsFailed; - debugln(Caption,': ERROR: ',Tool.ErrorMessage); + debugln('Error: (lazarus) ',Caption,': ',Tool.ErrorMessage); end else begin ToolState:=lmvtsSuccess; end; @@ -303,6 +306,8 @@ procedure TLazExtToolConsoleView.OnNewOutput(Sender: TObject; FirstNewMsgLine: integer); begin + if (ExtToolConsole<>nil) and ExtToolConsole.Terminating then + exit; while fWrittenLineCount<Tool.WorkerOutput.Count do begin debugln(Tool.WorkerOutput[fWrittenLineCount]); inc(fWrittenLineCount); @@ -639,7 +644,7 @@ begin if (FStage>=etsStopped) then exit(true); if (ErrorMessage='') then exit(false); - debugln(['TExternalTool.DoExecute.CheckError Error=',ErrorMessage]); + debugln(['Error: (lazarus) [TExternalTool.DoExecute.CheckError] Error=',ErrorMessage]); EnterCriticalSection; try if FStage>=etsStopped then exit(true); @@ -755,6 +760,8 @@ end; procedure TExternalTool.DoStart; +var + i: Integer; begin // set Stage to etsStarting EnterCriticalSection; @@ -778,9 +785,12 @@ Thread.Tool:=Self; FThread.FreeOnTerminate:=true; end; - if ConsoleVerbosity>=0 then begin - debugln(['TExternalTool.DoExecute Title="',Title,'" Process.CurrentDirectory="',Process.CurrentDirectory,'" Executable="',Process.Executable,'" Params:']); - debugln(Process.Parameters.Text); + if ConsoleVerbosity>=-1 then begin + debugln(['Info: (lazarus) Execute Title="',Title,'"']); + debugln(['Info: (lazarus) Working Directory="',Process.CurrentDirectory,'"']); + debugln(['Info: (lazarus) Executable="',Process.Executable,'"']); + for i:=0 to Process.Parameters.Count-1 do + debugln(['Info: (lazarus) Param[',i,']="',Process.Parameters[i],'"']); end; Thread.Start; end; @@ -1101,13 +1111,13 @@ s:=ToolOptions.WorkingDirectory; if ToolOptions.ResolveMacros then begin if not GlobalMacroList.SubstituteStr(s) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: macros of WorkerDirectory: "',ToolOptions.WorkingDirectory,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: macros of WorkerDirectory: "',ToolOptions.WorkingDirectory,'"']); exit; end; end; s:=ChompPathDelim(CleanAndExpandDirectory(s)); if not DirectoryExistsUTF8(s) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: missing directory "',s,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: missing directory "',s,'"']); exit; end; Proc.CurrentDirectory:=s; @@ -1119,7 +1129,7 @@ for i:=0 to Proc.Environment.Count-1 do begin s:=Proc.Environment[i]; if not GlobalMacroList.SubstituteStr(s) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: environment override "',Proc.Environment,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: environment override "',Proc.Environment,'"']); exit; end; Proc.Environment[i]:=s; @@ -1130,7 +1140,7 @@ s:=ToolOptions.Executable; if ToolOptions.ResolveMacros then begin if not GlobalMacroList.SubstituteStr(s) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: macros of Executable: "',ToolOptions.Executable,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: macros of Executable: "',ToolOptions.Executable,'"']); exit; end; end; @@ -1151,21 +1161,21 @@ end; {$ENDIF} if s='' then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: missing executable "',ToolOptions.Executable,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: missing executable "',ToolOptions.Executable,'"']); exit; end; end; if (not FilenameIsAbsolute(s)) or (not FileExistsUTF8(s)) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: missing executable: "',s,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: missing executable: "',s,'"']); exit; end; if DirectoryExistsUTF8(s) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: executable is a directory: "',s,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: executable is a directory: "',s,'"']); exit; end; if not FileIsExecutable(s) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: executable lacks permission to run: "',s,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: executable lacks permission to run: "',s,'"']); exit; end; Proc.Executable:=s; @@ -1174,7 +1184,7 @@ s:=ToolOptions.CmdLineParams; if ToolOptions.ResolveMacros then begin if not GlobalMacroList.SubstituteStr(s) then begin - debugln(['TExternalTools.OnRunExternalTool ',ToolOptions.Title,' failed: macros in cmd line params "',ToolOptions.CmdLineParams,'"']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] ',ToolOptions.Title,' failed: macros in cmd line params "',ToolOptions.CmdLineParams,'"']); exit; end; end; @@ -1216,7 +1226,7 @@ Tool.AddParsers(ToolOptions.Scanners[i]); if ToolOptions.ResolveMacros then begin if not Tool.ResolveMacros then begin - debugln(['TExternalTools.OnRunExternalTool failed to resolve macros']); + debugln(['Error: (lazarus) [TExternalTools.OnRunExternalTool] failed to resolve macros']); exit; end; end; @@ -1297,7 +1307,7 @@ InitCriticalSection(FCritSec); fRunning:=TFPList.Create; fParsers:=TFPList.Create; - MaxProcessCount:=2; + MaxProcessCount:=DefaultMaxProcessCount; if ExternalToolList=nil then ExternalToolList:=Self; if ExternalTools=nil then @@ -1385,10 +1395,14 @@ i: Integer; begin // terminate all current tools + if ExtToolConsole<>nil then + ExtToolConsole.Terminating:=true; for i:=Count-1 downto 0 do begin if i>=Count then continue; Terminate(Items[i] as TExternalTool); end; + if ExtToolConsole<>nil then + ExtToolConsole.Terminating:=false; end; procedure TExternalTools.Clear; @@ -1421,6 +1435,8 @@ Result:=LazarusIDE.ActiveProject; end else if ToolData.Kind=IDEToolCompilePackage then begin Result:=PackageEditingInterface.FindPackageWithName(ToolData.ModuleName); + end else if ToolData.Kind=IDEToolCompileIDE then begin + Result:=LazarusIDE; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/filereferencelist.pas lazarus-1.6+dfsg/ide/filereferencelist.pas --- lazarus-1.4.4+dfsg/ide/filereferencelist.pas 2012-03-30 13:35:05.000000000 +0000 +++ lazarus-1.6+dfsg/ide/filereferencelist.pas 2015-07-07 11:43:38.000000000 +0000 @@ -38,7 +38,7 @@ interface uses - Classes, SysUtils, LCLProc, FileProcs, AvgLvlTree, IDEProcs; + Classes, SysUtils, LCLProc, FileProcs, LazFileUtils, AvgLvlTree, IDEProcs; type { TFileReference } diff -Nru lazarus-1.4.4+dfsg/ide/findinfilesdlg.lfm lazarus-1.6+dfsg/ide/findinfilesdlg.lfm --- lazarus-1.4.4+dfsg/ide/findinfilesdlg.lfm 2014-08-01 12:12:53.000000000 +0000 +++ lazarus-1.6+dfsg/ide/findinfilesdlg.lfm 2015-11-24 11:32:10.000000000 +0000 @@ -12,7 +12,7 @@ Constraints.MinWidth = 400 OnClose = FormClose OnCreate = FormCreate - LCLVersion = '1.3' + LCLVersion = '1.5' object OptionsCheckGroupBox: TCheckGroup AnchorSideLeft.Control = Owner AnchorSideTop.Control = ReplaceTextComboBox @@ -20,8 +20,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 83 - Top = 72 + Height = 76 + Top = 64 Width = 449 Anchors = [akTop, akLeft, akRight] AutoFill = True @@ -38,7 +38,7 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 2 - ClientHeight = 66 + ClientHeight = 56 ClientWidth = 445 Columns = 2 Items.Strings = ( @@ -59,8 +59,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 83 - Top = 161 + Height = 76 + Top = 146 Width = 449 Anchors = [akTop, akLeft, akRight] AutoFill = True @@ -77,7 +77,7 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 2 - ClientHeight = 66 + ClientHeight = 56 ClientWidth = 445 Columns = 2 ItemIndex = 1 @@ -97,14 +97,14 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 125 - Top = 250 + Height = 117 + Top = 228 Width = 449 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Around = 6 Caption = 'Directories' - ClientHeight = 108 + ClientHeight = 97 ClientWidth = 445 Enabled = False TabOrder = 5 @@ -114,8 +114,8 @@ AnchorSideTop.Side = asrCenter Left = 6 Height = 15 - Top = 12 - Width = 65 + Top = 10 + Width = 59 BorderSpacing.Left = 6 Caption = 'Directories:' FocusControl = DirectoriesComboBox @@ -127,7 +127,7 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 15 - Top = 45 + Top = 41 Width = 49 BorderSpacing.Left = 6 BorderSpacing.Top = 12 @@ -140,15 +140,15 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = DirectoriesOptionsGroupBox AnchorSideRight.Control = DirectoriesBrowse - Left = 77 - Height = 27 + Left = 71 + Height = 23 Top = 6 - Width = 335 + Width = 327 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Right = 6 - ItemHeight = 0 + ItemHeight = 15 ParentShowHint = False ShowHint = True TabOrder = 0 @@ -158,10 +158,10 @@ AnchorSideTop.Control = DirectoriesComboBox AnchorSideRight.Control = DirectoriesOptionsGroupBox AnchorSideRight.Side = asrBottom - Left = 418 - Height = 27 + Left = 404 + Height = 25 Top = 6 - Width = 21 + Width = 35 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Right = 6 @@ -178,12 +178,12 @@ AnchorSideRight.Control = DirectoriesComboBox AnchorSideRight.Side = asrBottom Left = 61 - Height = 27 - Top = 39 - Width = 351 + Height = 23 + Top = 37 + Width = 337 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 2 Text = '*.pas;*.pp;*.inc' end @@ -192,9 +192,9 @@ AnchorSideTop.Control = FileMaskComboBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 78 - Width = 151 + Height = 19 + Top = 72 + Width = 139 BorderSpacing.Left = 6 BorderSpacing.Top = 12 BorderSpacing.Bottom = 6 @@ -206,8 +206,8 @@ end object ButtonPanel1: TButtonPanel Left = 6 - Height = 28 - Top = 403 + Height = 26 + Top = 405 Width = 449 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -231,10 +231,10 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 82 - Height = 27 - Top = 39 - Width = 373 + Left = 73 + Height = 23 + Top = 35 + Width = 382 Anchors = [akTop, akLeft, akRight] AutoComplete = True AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactRetainPrefixCase, cbactSearchAscending] @@ -243,7 +243,7 @@ BorderSpacing.Right = 6 BorderSpacing.Bottom = 6 Enabled = False - ItemHeight = 0 + ItemHeight = 15 TabOrder = 2 end object ReplaceCheckBox: TCheckBox @@ -251,9 +251,9 @@ AnchorSideTop.Control = ReplaceTextComboBox AnchorSideTop.Side = asrCenter Left = 6 - Height = 24 - Top = 40 - Width = 70 + Height = 19 + Top = 37 + Width = 61 BorderSpacing.Left = 6 Caption = 'Replace' Enabled = False @@ -266,8 +266,8 @@ AnchorSideTop.Side = asrCenter Left = 6 Height = 15 - Top = 12 - Width = 69 + Top = 10 + Width = 66 BorderSpacing.Left = 6 Caption = 'Text To Find:' ParentColor = False @@ -278,17 +278,17 @@ AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 81 - Height = 27 + Left = 78 + Height = 23 Top = 6 - Width = 374 + Width = 377 Anchors = [akTop, akLeft, akRight] AutoComplete = True AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactRetainPrefixCase, cbactSearchAscending] BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Right = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 0 end object SelectDirectoryDialog: TSelectDirectoryDialog diff -Nru lazarus-1.4.4+dfsg/ide/findinfilesdlg.pas lazarus-1.6+dfsg/ide/findinfilesdlg.pas --- lazarus-1.4.4+dfsg/ide/findinfilesdlg.pas 2014-08-01 12:12:53.000000000 +0000 +++ lazarus-1.6+dfsg/ide/findinfilesdlg.pas 2015-07-07 11:43:38.000000000 +0000 @@ -18,9 +18,8 @@ uses Classes, SysUtils, - FileProcs, - LCLProc, LCLIntf, Controls, StdCtrls, Forms, Buttons, ExtCtrls, Dialogs, - ButtonPanel, + FileProcs, LazFileUtils, + LCLProc, Controls, StdCtrls, Forms, Buttons, ExtCtrls, Dialogs, ButtonPanel, SynEditTypes, SynEdit, MacroIntf, IDEWindowIntf, SrcEditorIntf, IDEHelpIntf, IDEDialogs, LazarusIDEStrConsts, InputHistory, EditorOptions, Project, IDEProcs, @@ -46,13 +45,14 @@ TextToFindLabel: TLabel; WhereRadioGroup: TRadioGroup; procedure DirectoriesBrowseClick(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure HelpButtonClick(Sender: TObject); procedure OKButtonClick(Sender : TObject); procedure ReplaceCheckBoxChange(Sender: TObject); procedure WhereRadioGroupClick(Sender: TObject); private + FProject: TProject; function GetFindText: string; function GetOptions: TLazFindInFileSearchOptions; function GetReplaceText: string; @@ -72,10 +72,14 @@ function GetBaseDirectory: string; procedure LoadHistory; procedure SaveHistory; + procedure FindInSearchPath(SearchPath: string); procedure FindInFilesPerDialog(AProject: TProject); + procedure InitFindText; procedure InitFromLazSearch(Sender: TObject); procedure FindInFiles(AProject: TProject; const AFindText: string); function GetResolvedDirectories: string; + function Execute: boolean; + property LazProject: TProject read FProject write FProject; end; function FindInFilesDialog: TLazFindInFilesDialog; @@ -162,7 +166,7 @@ TextToFindLabel.Caption := dlgTextToFind; ReplaceCheckBox.Caption := dlgReplaceWith; - OptionsCheckGroupBox.Caption := dlgFROpts; + OptionsCheckGroupBox.Caption := lisOptions; OptionsCheckGroupBox.Items[0] := dlgCaseSensitive; OptionsCheckGroupBox.Items[1] := dlgWholeWordsOnly; OptionsCheckGroupBox.Items[2] := dlgRegularExpressions; @@ -303,6 +307,9 @@ Result:=GetCurrentDirUTF8; end; +const + SharedOptions = [ssoMatchCase,ssoWholeWord,ssoRegExpr,ssoRegExprMultiLine]; + procedure TLazFindInFilesDialog.LoadHistory; procedure AssignToComboBox(AComboBox: TComboBox; Strings: TStrings); @@ -358,26 +365,50 @@ // show last used file masks AssignToComboBox(FileMaskComboBox, InputHistories.FindInFilesMaskHistory); Options := InputHistories.FindInFilesSearchOptions; + SynSearchOptions := InputHistories.FindOptions * SharedOptions;//share basic options with FindReplaceDlg end; procedure TLazFindInFilesDialog.SaveHistory; var Dir: String; begin + if ReplaceCheckBox.Checked then + InputHistories.AddToReplaceHistory(ReplaceText); InputHistories.AddToFindHistory(FindText); Dir:=AppendPathDelim(TrimFilename(DirectoriesComboBox.Text)); if Dir<>'' then InputHistories.AddToFindInFilesPathHistory(Dir); InputHistories.AddToFindInFilesMaskHistory(FileMaskComboBox.Text); InputHistories.FindInFilesSearchOptions:=Options; + InputHistories.FindOptions := InputHistories.FindOptions - SharedOptions + (SynSearchOptions*SharedOptions);//share basic options with FindReplaceDlg InputHistories.Save; end; +procedure TLazFindInFilesDialog.FindInSearchPath(SearchPath: string); +begin + debugln(['TLazFindInFilesDialog.FindInSearchPath ',SearchPath]); + InitFindText; + LoadHistory; + DirectoriesComboBox.Text:=SearchPath; + WhereRadioGroup.ItemIndex:=ItemIndDirectories; + // disable replace. Find in files is often called, + // but almost never to replace with the same parameters + Options := Options-[fifReplace,fifReplaceAll]; + Execute; +end; + procedure TLazFindInFilesDialog.FindInFilesPerDialog(AProject: TProject); +begin + InitFindText; + FindInFiles(AProject, FindText); +end; + +procedure TLazFindInFilesDialog.InitFindText; var TempEditor: TSourceEditorInterface; -Begin - FindText:=''; + NewFindText: String; +begin + NewFindText:=''; TempEditor := SourceEditorManagerIntf.ActiveEditor; if TempEditor <> nil then //with TempEditor.EditorComponent do @@ -385,15 +416,14 @@ if EditorOpts.FindTextAtCursor then begin if TempEditor.SelectionAvailable and (TempEditor.BlockBegin.Y = TempEditor.BlockEnd.Y) - then FindText := TempEditor.Selection - else FindText := TSynEdit(TempEditor.EditorControl).GetWordAtRowCol(TempEditor.CursorTextXY); + then NewFindText := TempEditor.Selection + else NewFindText := TSynEdit(TempEditor.EditorControl).GetWordAtRowCol(TempEditor.CursorTextXY); end else begin if InputHistories.FindHistory.Count>0 then - FindText:=InputHistories.FindHistory[0]; + NewFindText:=InputHistories.FindHistory[0]; end; end; - - FindInFiles(AProject, FindText); + FindText:=NewFindText; end; procedure TLazFindInFilesDialog.InitFromLazSearch(Sender: TObject); @@ -408,9 +438,8 @@ end; procedure TLazFindInFilesDialog.FindInFiles(AProject: TProject; const AFindText: string); -var - SearchForm: TSearchProgressForm; begin + LazProject:=AProject; LoadHistory; // if there is no FindText, use the most recently used FindText @@ -421,8 +450,23 @@ // disable replace. Find in files is often called, // but almost never to replace with the same parameters Options := Options-[fifReplace,fifReplaceAll]; + Execute; +end; + +function TLazFindInFilesDialog.GetResolvedDirectories: string; +begin + Result:=DirectoriesComboBox.Text; + IDEMacros.SubstituteMacros(Result); + Result:=TrimSearchPath(Result,GetBaseDirectory,true,true); +end; + +function TLazFindInFilesDialog.Execute: boolean; +var + SearchForm: TSearchProgressForm; +begin if ShowModal=mrOk then begin + Result:=true; SaveHistory; SearchForm:= TSearchProgressForm.Create(SearchResultsView); @@ -438,7 +482,11 @@ if FindText <> '' then begin case WhereRadioGroup.ItemIndex of - ItemIndProject : SearchForm.DoSearchProject(AProject); + ItemIndProject : + if LazProject=nil then + SearchForm.DoSearchProject(Project1) + else + SearchForm.DoSearchProject(LazProject); ItemIndOpenFiles : SearchForm.DoSearchOpenFiles; ItemIndDirectories: SearchForm.DoSearchDir; ItemIndActiveFile : SearchForm.DoSearchActiveFile; @@ -447,14 +495,10 @@ finally FreeAndNil(SearchForm); end; - end; -end; + end else + Result:=false; -function TLazFindInFilesDialog.GetResolvedDirectories: string; -begin - Result:=DirectoriesComboBox.Text; - IDEMacros.SubstituteMacros(Result); - Result:=TrimSearchPath(Result,GetBaseDirectory,true,true); + FProject:=nil; end; end. diff -Nru lazarus-1.4.4+dfsg/ide/findoverloadsdlg.pas lazarus-1.6+dfsg/ide/findoverloadsdlg.pas --- lazarus-1.4.4+dfsg/ide/findoverloadsdlg.pas 2013-07-11 23:15:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/findoverloadsdlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -37,11 +37,11 @@ interface uses - Classes, SysUtils, LCLProc,FileUtil, Forms, Controls, Graphics, + Classes, SysUtils, LCLProc, LazFileUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Buttons, ButtonPanel, ComCtrls, AvgLvlTree, // codetools - FindDeclarationTool, PascalParserTool, CodeTree, CodeCache, CodeAtom, - CodeToolManager, CodeGraph, FindOverloads, + FindDeclarationTool, PascalParserTool, CodeTree, CodeCache, + CodeToolManager, FindOverloads, // IDE LazIDEIntf, ProjectIntf, SrcEditorIntf, IDEProcs; @@ -471,7 +471,7 @@ CheckExtension: boolean): TFOWFile; begin if CheckExtension and (not FilenameIsPascalSource(Filename)) then - exit; + exit(nil); Result:=FindFile(Filename); if Result<>nil then exit; Result:=TFOWFile.Create(Filename); diff -Nru lazarus-1.4.4+dfsg/ide/findrenameidentifier.lfm lazarus-1.6+dfsg/ide/findrenameidentifier.lfm --- lazarus-1.4.4+dfsg/ide/findrenameidentifier.lfm 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/findrenameidentifier.lfm 2015-10-02 11:28:09.000000000 +0000 @@ -17,19 +17,19 @@ LCLVersion = '1.5' object CurrentGroupBox: TGroupBox Left = 6 - Height = 139 + Height = 100 Top = 6 Width = 448 Align = alClient BorderSpacing.Around = 6 Caption = 'CurrentGroupBox' - ClientHeight = 121 + ClientHeight = 81 ClientWidth = 444 Constraints.MinHeight = 100 TabOrder = 0 object CurrentListBox: TListBox Left = 6 - Height = 109 + Height = 69 Top = 6 Width = 432 Align = alClient @@ -38,18 +38,19 @@ ItemHeight = 0 ScrollWidth = 430 TabOrder = 0 + TopIndex = -1 end end object NewGroupBox: TGroupBox Left = 6 - Height = 97 - Top = 151 + Height = 118 + Top = 83 Width = 448 Align = alBottom AutoSize = True BorderSpacing.Around = 6 Caption = 'NewGroupBox' - ClientHeight = 79 + ClientHeight = 99 ClientWidth = 444 TabOrder = 1 object NewEdit: TEdit @@ -59,8 +60,8 @@ AnchorSideRight.Control = NewGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 21 - Top = 52 + Height = 27 + Top = 66 Width = 432 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 @@ -69,7 +70,7 @@ end object RenameCheckBox: TCheckBox Left = 6 - Height = 17 + Height = 24 Top = 6 Width = 432 Align = alTop @@ -85,8 +86,8 @@ AnchorSideRight.Control = NewGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 17 - Top = 29 + Height = 24 + Top = 36 Width = 432 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 @@ -96,20 +97,20 @@ end object ScopeGroupBox: TGroupBox Left = 6 - Height = 208 - Top = 254 + Height = 252 + Top = 207 Width = 448 Align = alBottom AutoSize = True BorderSpacing.Around = 6 Caption = 'ScopeGroupBox' - ClientHeight = 190 + ClientHeight = 233 ClientWidth = 444 TabOrder = 2 object ScopeCommentsCheckBox: TCheckBox Left = 6 - Height = 17 - Top = 167 + Height = 24 + Top = 203 Width = 432 Align = alTop BorderSpacing.Around = 6 @@ -118,7 +119,7 @@ end object ScopeRadioGroup: TRadioGroup Left = 6 - Height = 98 + Height = 127 Top = 6 Width = 432 Align = alTop @@ -134,7 +135,7 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 - ClientHeight = 80 + ClientHeight = 108 ClientWidth = 428 Items.Strings = ( 'in current unit' @@ -146,19 +147,19 @@ end object ExtraFilesGroupBox: TGroupBox Left = 6 - Height = 51 - Top = 110 + Height = 58 + Top = 139 Width = 432 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'ExtraFilesGroupBox' - ClientHeight = 33 + ClientHeight = 39 ClientWidth = 428 TabOrder = 1 object ExtraFilesEdit: TEdit Left = 6 - Height = 21 + Height = 27 Top = 6 Width = 416 Align = alTop @@ -170,22 +171,22 @@ end object ButtonPanel1: TButtonPanel Left = 6 - Height = 26 - Top = 468 + Height = 29 + Top = 465 Width = 448 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True OKButton.OnClick = FindOrRenameButtonClick HelpButton.Name = 'HelpButton' HelpButton.DefaultCaption = True - HelpButton.Enabled = False + HelpButton.OnClick = HelpButtonClick CloseButton.Name = 'CloseButton' CloseButton.DefaultCaption = True CloseButton.Enabled = False CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True TabOrder = 3 - ShowButtons = [pbOK, pbCancel] + ShowButtons = [pbOK, pbCancel, pbHelp] ShowBevel = False end end diff -Nru lazarus-1.4.4+dfsg/ide/findrenameidentifier.pas lazarus-1.6+dfsg/ide/findrenameidentifier.pas --- lazarus-1.4.4+dfsg/ide/findrenameidentifier.pas 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/findrenameidentifier.pas 2015-10-02 11:28:09.000000000 +0000 @@ -30,15 +30,16 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Dialogs, - StdCtrls, ExtCtrls, AvgLvlTree, ComCtrls, - laz2_DOM, - // codetools - FileProcs, AVL_Tree, CTUnitGraph, CodeTree, CodeCache, - CodeToolManager, CodeToolsStructs, + // RTL + FCL + LCL + Classes, SysUtils, AVL_Tree, LCLProc, Forms, Controls, Dialogs, + StdCtrls, ExtCtrls, ComCtrls, ButtonPanel, LclIntf, + // CodeTools + FileProcs, CTUnitGraph, CodeTree, CodeCache, CodeToolManager, CodeToolsStructs, + // LazUtils + LazFileUtils, LazFileCache, laz2_DOM, // IDE LazarusIDEStrConsts, IDEProcs, IDEWindowIntf, MiscOptions, DialogProcs, - LazIDEIntf, IDEDialogs, InputHistory, SearchResultView, CodeHelp, ButtonPanel; + LazIDEIntf, IDEDialogs, InputHistory, SearchResultView, CodeHelp; type @@ -59,9 +60,10 @@ ScopeRadioGroup: TRadioGroup; procedure FindOrRenameButtonClick(Sender: TObject); procedure FindRenameIdentifierDialogClose(Sender: TObject; - var CloseAction: TCloseAction); + var {%H-}CloseAction: TCloseAction); procedure FindRenameIdentifierDialogCreate(Sender: TObject); procedure FormShow(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); procedure RenameCheckBoxChange(Sender: TObject); private FAllowRename: boolean; @@ -102,7 +104,7 @@ DeclarationCode: TCodeBuffer; const DeclarationCaretXY: TPoint; TreeOfPCodeXYPosition: TAVLTree): TModalResult; procedure AddReferencesToResultView(DeclarationCode: TCodeBuffer; - const DeclarationCaretXY: TPoint; TargetCode: TCodeBuffer; + const DeclarationCaretXY: TPoint; TreeOfPCodeXYPosition: TAVLTree; ClearItems: boolean; SearchPageIndex: integer); function GatherFPDocReferencesForPascalFiles(PascalFiles: TStringList; @@ -312,7 +314,7 @@ // list results SearchResultsView.BeginUpdate(SearchPageIndex.PageIndex); AddReferencesToResultView(DeclarationCode,DeclarationCaretXY, - DeclarationCode,TreeOfPCodeXYPosition,true,SearchPageIndex.PageIndex); + TreeOfPCodeXYPosition,true,SearchPageIndex.PageIndex); OldSearchPageIndex:=SearchPageIndex; SearchPageIndex:=nil; SearchResultsView.EndUpdate(OldSearchPageIndex.PageIndex); @@ -324,9 +326,8 @@ end; procedure AddReferencesToResultView(DeclarationCode: TCodeBuffer; - const DeclarationCaretXY: TPoint; TargetCode: TCodeBuffer; - TreeOfPCodeXYPosition: TAVLTree; ClearItems: boolean; - SearchPageIndex: integer); + const DeclarationCaretXY: TPoint; TreeOfPCodeXYPosition: TAVLTree; + ClearItems: boolean; SearchPageIndex: integer); var Identifier: string; CodePos: PCodeXYPosition; @@ -545,6 +546,11 @@ end; end; +procedure TFindRenameIdentifierDialog.HelpButtonClick(Sender: TObject); +begin + OpenUrl('http://wiki.freepascal.org/IDE_Window:_Find_or_Rename_identifier'); +end; + procedure TFindRenameIdentifierDialog.RenameCheckBoxChange(Sender: TObject); begin UpdateRename; diff -Nru lazarus-1.4.4+dfsg/ide/findreplacedialog.pp lazarus-1.6+dfsg/ide/findreplacedialog.pp --- lazarus-1.4.4+dfsg/ide/findreplacedialog.pp 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/findreplacedialog.pp 2015-06-15 23:31:55.000000000 +0000 @@ -32,7 +32,7 @@ interface uses - Classes, Math, SysUtils, LCLProc, LCLType, Controls, StdCtrls, Forms, Buttons, + Classes, SysUtils, LCLProc, LCLType, Controls, StdCtrls, Forms, Buttons, ExtCtrls, Dialogs, Graphics, ButtonPanel, SynEditTypes, SynRegExpr, SynEdit, IDEHelpIntf, IDEImagesIntf, IDEWindowIntf, IDEDialogs, @@ -69,7 +69,7 @@ WholeWordsOnlyCheckBox: TCheckBox; procedure EnableAutoCompleteSpeedButtonClick(Sender: TObject); procedure FormChangeBounds(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure HelpButtonClick(Sender: TObject); procedure OptionsGroupBoxResize(Sender: TObject); procedure ReplaceWithCheckboxChange(Sender: TObject); @@ -132,7 +132,7 @@ ReplaceTextComboBox.Text:=''; ReplaceWithCheckbox.Caption:=dlgReplaceWith; EnableAutoCompleteSpeedButton.LoadGlyphFromResourceName(HInstance, 'menu_stepinto'); - OptionsGroupBox.Caption:=dlgFROpts; + OptionsGroupBox.Caption:=lisOptions; with CaseSensitiveCheckBox do begin Caption:=dlgCaseSensitive; @@ -452,6 +452,7 @@ ReplaceWithCheckbox.Checked := ssoReplace in NewOptions; ReplaceTextComboBox.Enabled := ssoReplace in NewOptions; PromptOnReplaceCheckBox.Enabled := ssoReplace in NewOptions; + fReplaceAllClickedLast := ssoReplaceAll in NewOptions; if ssoReplace in NewOptions then begin diff -Nru lazarus-1.4.4+dfsg/ide/findunitdlg.pas lazarus-1.6+dfsg/ide/findunitdlg.pas --- lazarus-1.4.4+dfsg/ide/findunitdlg.pas 2014-07-20 20:02:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/findunitdlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -34,39 +34,38 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Dialogs, ExtCtrls, - StdCtrls, ComCtrls, FileUtil, AvgLvlTree, Laz2_XMLCfg, LazFileCache, + Classes, SysUtils, LCLProc, Forms, Controls, ExtCtrls, + StdCtrls, ComCtrls, LazFileUtils, Laz2_XMLCfg, LazFileCache, // codetools CodeToolsStrConsts, CodeCache, CodeToolManager, // IDEIntf - LazIDEIntf, TextTools, IDEMsgIntf, PackageIntf, IDEExternToolIntf, + LazIDEIntf, IDEMsgIntf, PackageIntf, IDEExternToolIntf, // IDE DialogProcs, PackageDefs, Project, IDEProcs, LazarusIDEStrConsts, - etFPCMsgParser, - PackageLinks, PackageSystem, BasePkgManager; + etFPCMsgParser, PackageLinks, PackageSystem, BasePkgManager; type TFindUnitDialog = class; - { TQuickFixMissingUnit } + { TMissingUnit_QuickFix } - TQuickFixMissingUnit = class + TMissingUnit_QuickFix = class public Dlg: TFindUnitDialog; Caption: string; constructor Create(aDlg: TFindUnitDialog; aCaption: string); end; - { TQuickFixMissingUnitRemoveFromUses } + { TMissingUnit_QuickFix_RemoveFromUses } - TQuickFixMissingUnitRemoveFromUses = class(TQuickFixMissingUnit) + TMissingUnit_QuickFix_RemoveFromUses = class(TMissingUnit_QuickFix) public constructor Create(aDlg: TFindUnitDialog); end; - { TQuickFixMissingUnitAddRequirement } + { TMissingUnit_QuickFix_AddRequirement } - TQuickFixMissingUnitAddRequirement = class(TQuickFixMissingUnit) + TMissingUnit_QuickFix_AddRequirement = class(TMissingUnit_QuickFix) public PackageName: string; constructor Create(aDlg: TFindUnitDialog; aPackageName: string); @@ -94,17 +93,17 @@ FMissingUnitName: string; FSearchPackages: TStrings; FSearchPackagesIndex: integer; - fQuickFixes: TFPList;// list of TQuickFixMissingUnit + fQuickFixes: TFPList;// list of TMissingUnit_QuickFix fLastUpdateProgressBar: TDateTime; procedure InitSearchPackages; procedure OnIteratePkgLinks(APackage: TLazPackageID); - procedure AddQuickFix(Item: TQuickFixMissingUnit); - procedure AddRequirement(Item: TQuickFixMissingUnitAddRequirement); - procedure RemoveFromUsesSection(Item: TQuickFixMissingUnitRemoveFromUses); + procedure AddQuickFix(Item: TMissingUnit_QuickFix); + procedure AddRequirement(Item: TMissingUnit_QuickFix_AddRequirement); + procedure RemoveFromUsesSection(Item: TMissingUnit_QuickFix_RemoveFromUses); function MainOwnerHasRequirement(PackageName: string): boolean; procedure UpdateProgressBar; function CheckPackageOnDisk(PkgFilename: string): boolean; - function FindQuickFixAddRequirement(PkgName: string): TQuickFixMissingUnitAddRequirement; + function FindQuickFixAddRequirement(PkgName: string): TMissingUnit_QuickFix_AddRequirement; public procedure InitWithMsg(Line: string; aCode: TCodeBuffer; aMissingUnitName: string); @@ -121,7 +120,7 @@ public function IsApplicable(Msg: TMessageLine; out MissingUnit, UsedByUnit: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; { TQuickFixIncludeNotFound_Search - add menu item to open this search dialog } @@ -130,7 +129,7 @@ public function IsApplicable(Msg: TMessageLine; out IncludeFile: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; function IsCodetoolsErrorIncludeFileNotFound(Msg: string; out IncludeFile: string): boolean; end; @@ -175,7 +174,7 @@ for i:=0 to Fixes.LineCount-1 do begin Msg:=Fixes.Lines[i]; if not IsApplicable(Msg,MissingUnit,UsedByUnit) then continue; - Fixes.AddMenuItem(Self,Msg,'Search Unit "'+MissingUnit+'"'); + Fixes.AddMenuItem(Self, Msg, Format(lisSearchUnit, [MissingUnit])); exit; end; end; @@ -187,6 +186,7 @@ UsedByUnit: string; CodeBuf: TCodeBuffer; Dlg: TFindUnitDialog; + StartFilename: String; begin // get unitname if not IsApplicable(Msg,MissingUnit,UsedByUnit) then exit; @@ -202,9 +202,10 @@ exit; end; - CodeBuf:=CodeToolBoss.LoadFile(Msg.GetFullFilename,true,false); + StartFilename:=Msg.GetFullFilename; + CodeBuf:=CodeToolBoss.LoadFile(StartFilename,true,false); if CodeBuf=nil then begin - debugln(['TQuickFixUnitNotFound_Search.QuickFix can not open file "',Msg.GetFullFilename,'"']); + debugln(['TQuickFixUnitNotFound_Search.QuickFix cannot open file "',StartFilename,'", Msg="',Msg.Line,'"']); exit; end; @@ -247,18 +248,18 @@ procedure TFindUnitDialog.OkButtonClick(Sender: TObject); var i: LongInt; - Item: TQuickFixMissingUnit; + Item: TMissingUnit_QuickFix; begin i:=QuickFixRadioGroup.ItemIndex; if i<0 then begin OkButton.Enabled:=false; exit; end; - Item:=TQuickFixMissingUnit(fQuickFixes[i]); - if Item is TQuickFixMissingUnitRemoveFromUses then - RemoveFromUsesSection(TQuickFixMissingUnitRemoveFromUses(Item)) - else if Item is TQuickFixMissingUnitAddRequirement then - AddRequirement(TQuickFixMissingUnitAddRequirement(Item)); + Item:=TMissingUnit_QuickFix(fQuickFixes[i]); + if Item is TMissingUnit_QuickFix_RemoveFromUses then + RemoveFromUsesSection(TMissingUnit_QuickFix_RemoveFromUses(Item)) + else if Item is TMissingUnit_QuickFix_AddRequirement then + AddRequirement(TMissingUnit_QuickFix_AddRequirement(Item)); end; procedure TFindUnitDialog.OnIdle(Sender: TObject; var Done: Boolean); @@ -287,7 +288,7 @@ // already in requirements end else if FindQuickFixAddRequirement(APackage.Name)=nil then begin // not yet in requirements -> add a quick fix - AddQuickFix(TQuickFixMissingUnitAddRequirement.Create(Self,APackage.Name)); + AddQuickFix(TMissingUnit_QuickFix_AddRequirement.Create(Self,APackage.Name)); end; end; break; @@ -301,7 +302,7 @@ inc(FSearchPackagesIndex); if FSearchPackagesIndex>=FSearchPackages.Count then begin - AddQuickFix(TQuickFixMissingUnitRemoveFromUses.Create(Self)); + AddQuickFix(TMissingUnit_QuickFix_RemoveFromUses.Create(Self)); end; UpdateProgressBar; @@ -355,7 +356,7 @@ end; end; -procedure TFindUnitDialog.AddQuickFix(Item: TQuickFixMissingUnit); +procedure TFindUnitDialog.AddQuickFix(Item: TMissingUnit_QuickFix); begin fQuickFixes.Add(Item); QuickFixRadioGroup.Items.Add(Item.Caption); @@ -365,7 +366,7 @@ end; procedure TFindUnitDialog.AddRequirement( - Item: TQuickFixMissingUnitAddRequirement); + Item: TMissingUnit_QuickFix_AddRequirement); var AProject: TProject; APackage: TLazPackage; @@ -386,13 +387,14 @@ end; procedure TFindUnitDialog.RemoveFromUsesSection( - Item: TQuickFixMissingUnitRemoveFromUses); + Item: TMissingUnit_QuickFix_RemoveFromUses); begin + if Item=nil then ; if not CodeToolBoss.RemoveUnitFromAllUsesSections(Code,MissingUnitName) then begin - end; - ModalResult:=mrOk; + end else + ModalResult:=mrOk; end; function TFindUnitDialog.MainOwnerHasRequirement(PackageName: string): boolean; @@ -408,7 +410,10 @@ AProject.FirstRequiredDependency,PackageName)<>nil; end else if MainOwner is TLazPackage then begin APackage:=TLazPackage(MainOwner); - Result:=PackageGraph.FindDependencyRecursively( + if CompareText(APackage.Name,PackageName)=0 then + Result:=true + else + Result:=PackageGraph.FindDependencyRecursively( APackage.FirstRequiredDependency,PackageName)<>nil; end; end; @@ -468,7 +473,7 @@ //DebugLn(['TFindUnitDialog.CheckPackageOnDisk ',UnitName]); if SysUtils.CompareText(AUnitName,MissingUnitName)=0 then begin Result:=true; - AddQuickFix(TQuickFixMissingUnitAddRequirement.Create(Self,PkgName)); + AddQuickFix(TMissingUnit_QuickFix_AddRequirement.Create(Self,PkgName)); exit; end; end; @@ -478,15 +483,15 @@ end; function TFindUnitDialog.FindQuickFixAddRequirement(PkgName: string - ): TQuickFixMissingUnitAddRequirement; + ): TMissingUnit_QuickFix_AddRequirement; var i: Integer; begin Result:=nil; if fQuickFixes=nil then exit; for i:=0 to fQuickFixes.Count-1 do begin - if TObject(fQuickFixes[i]) is TQuickFixMissingUnitAddRequirement then begin - Result:=TQuickFixMissingUnitAddRequirement(fQuickFixes[i]); + if TObject(fQuickFixes[i]) is TMissingUnit_QuickFix_AddRequirement then begin + Result:=TMissingUnit_QuickFix_AddRequirement(fQuickFixes[i]); if SysUtils.CompareText(Result.PackageName,PkgName)=0 then exit; end; end; @@ -582,27 +587,28 @@ InitSearchPackages; end; -{ TQuickFixMissingUnit } +{ TMissingUnit_QuickFix } -constructor TQuickFixMissingUnit.Create(aDlg: TFindUnitDialog; aCaption: string); +constructor TMissingUnit_QuickFix.Create(aDlg: TFindUnitDialog; aCaption: string); begin Dlg:=aDlg;; Caption:=aCaption; end; -{ TQuickFixMissingUnitAddRequirement } +{ TMissingUnit_QuickFix_AddRequirement } -constructor TQuickFixMissingUnitAddRequirement.Create(aDlg: TFindUnitDialog; +constructor TMissingUnit_QuickFix_AddRequirement.Create(aDlg: TFindUnitDialog; aPackageName: string); begin PackageName:=aPackageName; Caption:='Add package '+PackageName+' as requirement to '+aDlg.MainOwnerName; end; -{ TQuickFixMissingUnitRemoveFromUses } +{ TMissingUnit_QuickFix_RemoveFromUses } -constructor TQuickFixMissingUnitRemoveFromUses.Create(aDlg: TFindUnitDialog); +constructor TMissingUnit_QuickFix_RemoveFromUses.Create(aDlg: TFindUnitDialog); begin + Dlg:=aDlg; Caption:='Remove unit from uses clause'; end; diff -Nru lazarus-1.4.4+dfsg/ide/fpcsrcscan.pas lazarus-1.6+dfsg/ide/fpcsrcscan.pas --- lazarus-1.4.4+dfsg/ide/fpcsrcscan.pas 2014-01-02 18:16:19.000000000 +0000 +++ lazarus-1.6+dfsg/ide/fpcsrcscan.pas 2015-07-07 11:43:38.000000000 +0000 @@ -31,7 +31,7 @@ interface uses - Classes, SysUtils, FileProcs, DefineTemplates, CodeToolManager, + Classes, SysUtils, FileProcs, LazFileUtils, DefineTemplates, CodeToolManager, LazarusIDEStrConsts, ProgressWnd, BaseBuildManager; type diff -Nru lazarus-1.4.4+dfsg/ide/fpdoceditwindow.pas lazarus-1.6+dfsg/ide/fpdoceditwindow.pas --- lazarus-1.4.4+dfsg/ide/fpdoceditwindow.pas 2014-12-20 13:05:04.000000000 +0000 +++ lazarus-1.6+dfsg/ide/fpdoceditwindow.pas 2015-10-26 21:34:11.000000000 +0000 @@ -31,19 +31,19 @@ uses // FCL - Classes, SysUtils, StrUtils, contnrs, - Laz2_DOM, Laz2_XMLRead, Laz2_XMLWrite, + Classes, SysUtils, + Laz2_DOM, Laz2_XMLRead, // LCL LCLProc, LResources, StdCtrls, Buttons, ComCtrls, Controls, Dialogs, ExtCtrls, Forms, Graphics, LCLType, // Synedit SynEdit, // codetools - BasicCodeTools, FileProcs, CodeAtom, CodeCache, CodeToolManager, + FileProcs, CodeCache, CodeToolManager, CTXMLFixFragment, // IDEIntf - IDEWindowIntf, ProjectIntf, LazIDEIntf, IDEHelpIntf, LazHelpIntf, Menus, - SrcEditorIntf, IDEDialogs, + IDEWindowIntf, ProjectIntf, LazIDEIntf, IDEHelpIntf, Menus, + SrcEditorIntf, IDEDialogs, LazFileUtils, // IDE IDEOptionDefs, EnvironmentOpts, PackageSystem, IDEProcs, LazarusIDEStrConsts, FPDocSelectInherited, FPDocSelectLink, CodeHelp; @@ -234,7 +234,7 @@ IDEWindowCreators.CreateForm(FPDocEditor,TFPDocEditor, State=iwgfDisabled,LazarusIDE.OwningComponent) else if State=iwgfDisabled then - FPDocEditor.DisableAutoSizing; + FPDocEditor.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('DoShowFPDocEditor'){$ENDIF}; if State>=iwgfShow then IDEWindowCreators.ShowForm(FPDocEditor,State=iwgfShowOnTop); @@ -277,7 +277,6 @@ ShortLabel.Caption:=lisShort; LinkLabel.Caption:=lisLink; CreateButton.Caption := lisCodeHelpCreateButton; - CreateButton.Enabled:=false; OpenXMLButton.Caption:=lisOpenXML; OpenXMLButton.Enabled:=false; SaveButton.Caption := ''; @@ -859,7 +858,8 @@ FPDocFPFile: TLazFPDocFile); begin if fpdefWriting in FFlags then exit; - + if FPDocFPFile=nil then exit; + // maybe eventually update the editor end; procedure TFPDocEditor.LoadGUIValues(Element: TCodeHelpElement); @@ -874,8 +874,8 @@ try EnabledState := (Element<>nil) and (Element.ElementNode<>nil); - CreateButton.Enabled := (Element<>nil) and (Element.ElementNode=nil) - and (Element.ElementName<>''); + //CreateButton.Enabled := (Element<>nil) and (Element.ElementNode=nil) + // and (Element.ElementName<>''); if EnabledState then begin @@ -1033,7 +1033,7 @@ fpdiDescription: begin PageControl.ActivePage:=DescrTabSheet; - + DescrMemo.CaretPos:=LineCol; end; fpdiErrors: PageControl.ActivePage:=ErrorsTabSheet; fpdiSeeAlso: PageControl.ActivePage:=SeeAlsoTabSheet; @@ -1055,7 +1055,7 @@ function TFPDocEditor.GUIModified: boolean; begin - if fpdefReading in FFlags then exit; + if fpdefReading in FFlags then exit(false); Result:=(ShortEdit.Text<>FOldVisualValues[fpdiShort]) or (LinkEdit.Text<>FOldVisualValues[fpdiElementLink]) or (DescrMemo.Text<>FOldVisualValues[fpdiDescription]) @@ -1167,7 +1167,7 @@ FOldVisualValues[i]:=''; Modified := False; - CreateButton.Enabled:=false; + //CreateButton.Enabled:=false; OpenXMLButton.Enabled:=false; finally Exclude(FFlags,fpdefReading); @@ -1577,7 +1577,7 @@ if Doc=nil then exit; InitIDEFileDialog(OpenDialog); OpenDialog.Title:=lisChooseAnExampleFile; - OpenDialog.Filter:=lisPascalFile+'|*.pas;*.pp;*.p|'+dlgAllFiles+'|'+FileMask; + OpenDialog.Filter:=dlgFilterPascalFile+'|*.pas;*.pp;*.p|'+dlgFilterAll+'|'+FileMask; OpenDialog.InitialDir:=ExtractFilePath(DocFile.Filename); if OpenDialog.Execute then begin ExampleEdit.Text := ExtractRelativepath( @@ -1613,7 +1613,12 @@ procedure TFPDocEditor.CreateButtonClick(Sender: TObject); begin - if (fChain=nil) or (fChain.Count=0) then exit; + if ((fChain=nil) or (fChain.Count=0)) + or (TCodeHelpElement(fChain[0]).ElementName='') then begin + IDEMessageDialog('Invalid Declaration','Please place the editor caret on an identifier. If this is a new unit, please save the file first.', + mtError,[mbOK]); + exit; + end; CreateElement(fChain[0]); end; diff -Nru lazarus-1.4.4+dfsg/ide/fpdochints.pas lazarus-1.6+dfsg/ide/fpdochints.pas --- lazarus-1.4.4+dfsg/ide/fpdochints.pas 2014-07-02 13:57:44.000000000 +0000 +++ lazarus-1.6+dfsg/ide/fpdochints.pas 2015-09-03 12:08:18.000000000 +0000 @@ -31,8 +31,7 @@ uses Classes, SysUtils, LCLProc, Forms, Controls, Graphics, StdCtrls, - CodeToolManager, CodeCache, BasicCodeTools, IdentCompletionTool, CodeTree, - CodeAtom, + CodeToolManager, CodeCache, IdentCompletionTool, CodeTree, IDEHelpIntf, SrcEditorIntf, SrcEditHintFrm, CodeHelp; type @@ -49,7 +48,7 @@ FTextControl: TLabel; procedure SetHintValid(const AValue: boolean); procedure SetWaitingForIdle(const AValue: boolean); - procedure ApplicationIdle(Sender: TObject; var Done: Boolean); + procedure ApplicationIdle(Sender: TObject; var {%H-}Done: Boolean); procedure DoUpdateHint; procedure UpdateHintControl; public @@ -215,6 +214,7 @@ // important: free provider before control FreeAndNil(FHTMLProvider); FreeAndNil(FTextControl); + FreeAndNil(FHTMLControl); WaitingForIdle:=false; inherited Destroy; end; diff -Nru lazarus-1.4.4+dfsg/ide/fpdocselectlink.lfm lazarus-1.6+dfsg/ide/fpdocselectlink.lfm --- lazarus-1.4.4+dfsg/ide/fpdocselectlink.lfm 2009-08-02 13:02:48.000000000 +0000 +++ lazarus-1.6+dfsg/ide/fpdocselectlink.lfm 2015-03-10 14:08:59.000000000 +0000 @@ -9,7 +9,7 @@ ClientWidth = 408 OnCreate = FormCreate OnDestroy = FormDestroy - LCLVersion = '0.9.27' + LCLVersion = '1.5' object LinkLabel: TLabel AnchorSideLeft.Control = Owner AnchorSideTop.Control = TitleEdit @@ -17,8 +17,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 18 - Top = 69 + Height = 15 + Top = 64 Width = 396 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 @@ -33,7 +33,7 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 18 + Height = 15 Top = 6 Width = 396 Anchors = [akTop, akLeft, akRight] @@ -46,8 +46,8 @@ AnchorSideTop.Control = LinkEdit AnchorSideTop.Side = asrBottom Left = 6 - Height = 106 - Top = 120 + Height = 124 + Top = 110 Width = 396 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] @@ -59,9 +59,17 @@ end object ButtonPanel1: TButtonPanel Left = 6 - Height = 44 - Top = 232 + Height = 36 + Top = 240 Width = 396 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 0 ShowButtons = [pbOK, pbCancel] end @@ -72,8 +80,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 27 - Top = 93 + Height = 25 + Top = 85 Width = 396 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 @@ -81,7 +89,6 @@ BorderSpacing.Right = 6 OnChange = LinkEditChange OnKeyDown = LinkEditKeyDown - OnUTF8KeyPress = LinkEditUTF8KeyPress ParentShowHint = False ShowHint = True TabOrder = 1 @@ -93,8 +100,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 27 - Top = 30 + Height = 25 + Top = 27 Width = 396 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 diff -Nru lazarus-1.4.4+dfsg/ide/fpdocselectlink.pas lazarus-1.6+dfsg/ide/fpdocselectlink.pas --- lazarus-1.4.4+dfsg/ide/fpdocselectlink.pas 2012-09-13 06:39:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/fpdocselectlink.pas 2015-07-04 23:08:00.000000000 +0000 @@ -30,10 +30,9 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, - ExtCtrls, StdCtrls, ButtonPanel, FileUtil, LCLType, AvgLvlTree, - Laz2_DOM, - PackageIntf, ProjectIntf, + Classes, SysUtils, LCLProc, Forms, Controls, Graphics, + ExtCtrls, StdCtrls, ButtonPanel, FileUtil, LazFileUtils, LCLType, AvgLvlTree, + Laz2_DOM, PackageIntf, ProjectIntf, CodeHelp, LazarusIDEStrConsts, PackageSystem, PackageDefs; type @@ -99,14 +98,13 @@ TitleLabel: TLabel; LinkEdit: TEdit; LinkLabel: TLabel; - procedure CompletionBoxMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + procedure CompletionBoxMouseDown(Sender: TObject; {%H-}Button: TMouseButton; + {%H-}Shift: TShiftState; {%H-}X, Y: Integer); procedure CompletionBoxPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure LinkEditChange(Sender: TObject); procedure LinkEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure LinkEditUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char); private FStartFPDocFile: TLazFPDocFile; fItems: TFPDocLinkCompletionList; @@ -276,11 +274,6 @@ end; end; -procedure TFPDocLinkEditorDlg.LinkEditUTF8KeyPress(Sender: TObject; - var UTF8Key: TUTF8Char); -begin -end; - procedure TFPDocLinkEditorDlg.SetSourceFilename(const AValue: string); var Owners: TFPList; @@ -447,11 +440,12 @@ end; if (ModuleOwner<>nil) and (ModuleOwner<>StartModuleOwner) then begin // different module - if ModuleOwner is TLazProject then begin - ModuleName:=lowercase(ExtractFileNameOnly(TLazProject(ModuleOwner).ProjectInfoFile)); - end else if ModuleOwner is TLazPackage then begin - ModuleName:=TLazPackage(ModuleOwner).Name; - end; + if ModuleOwner is TLazProject then + ModuleName:=lowercase(ExtractFileNameOnly(TLazProject(ModuleOwner).ProjectInfoFile)) + else if ModuleOwner is TLazPackage then + ModuleName:=TLazPackage(ModuleOwner).Name + else + ModuleName:=''; if ModuleName<>'' then ElementName:='#'+ModuleName+'.'+ElementName else diff -Nru lazarus-1.4.4+dfsg/ide/fpmake.pp lazarus-1.6+dfsg/ide/fpmake.pp --- lazarus-1.4.4+dfsg/ide/fpmake.pp 2015-01-02 20:45:33.000000000 +0000 +++ lazarus-1.6+dfsg/ide/fpmake.pp 2015-05-24 10:09:20.000000000 +0000 @@ -230,7 +230,6 @@ P.Sources.AddSrc('componentlist.pas'); P.Sources.AddSrc('componentpalette.pas'); P.Sources.AddSrc('compoptsmodes.pas'); - P.Sources.AddSrc('condef.pas'); P.Sources.AddSrc('customformeditor.pp'); P.Sources.AddSrc('debugmanager.pas'); P.Sources.AddSrc('dialogprocs.pas'); @@ -241,6 +240,7 @@ P.Sources.AddSrc('editmsgscannersdlg.pas'); P.Sources.AddSrc('editoroptions.pp'); P.Sources.AddSrc('emptymethodsdlg.pas'); + P.Sources.AddSrc('encloseifdef.pas'); P.Sources.AddSrc('encloseselectiondlg.pas'); P.Sources.AddSrc('extractprocdlg.pas'); P.Sources.AddSrc('exttooldialog.pas'); diff -Nru lazarus-1.4.4+dfsg/ide/frames/atom_checkboxes_options.pas lazarus-1.6+dfsg/ide/frames/atom_checkboxes_options.pas --- lazarus-1.4.4+dfsg/ide/frames/atom_checkboxes_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/atom_checkboxes_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -33,7 +33,7 @@ TCodetoolsAtomCheckboxesOptionsFrame = class(TAbstractIDEOptionsEditor) protected procedure CreateAtomCheckBoxes( - ParentGroupBox: TGroupBox; AtomTypes: TAtomTypes; Columns: integer; + ParentGroupBox: TGroupBox; AtomTypes: TAtomTypes; {%H-}Columns: integer; AOnClick: TNotifyEvent); function ReadAtomCheckBoxes(ParentGroupBox: TGroupBox): TAtomTypes; procedure SetAtomCheckBoxes(AtomTypes: TAtomTypes; ParentGroupBox: TGroupBox); diff -Nru lazarus-1.4.4+dfsg/ide/frames/backup_options.pas lazarus-1.6+dfsg/ide/frames/backup_options.pas --- lazarus-1.4.4+dfsg/ide/frames/backup_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/backup_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -58,7 +58,7 @@ private public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codeexplorer_categories_options.pas lazarus-1.6+dfsg/ide/frames/codeexplorer_categories_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codeexplorer_categories_options.pas 2011-12-04 11:20:41.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codeexplorer_categories_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -36,7 +36,7 @@ CategoriesCheckGroup: TCheckGroup; public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codeexplorer_update_options.pas lazarus-1.6+dfsg/ide/frames/codeexplorer_update_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codeexplorer_update_options.pas 2011-12-04 11:27:17.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codeexplorer_update_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -40,7 +40,7 @@ { private declarations } public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codeobserver_options.pas lazarus-1.6+dfsg/ide/frames/codeobserver_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codeobserver_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codeobserver_options.pas 2015-03-10 14:08:59.000000000 +0000 @@ -54,7 +54,7 @@ FGroupCheckBoxes: array [TCEObserverCategoryGroup] of TCheckBox; public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_classcompletion_options.lfm lazarus-1.6+dfsg/ide/frames/codetools_classcompletion_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/codetools_classcompletion_options.lfm 2013-07-22 22:08:53.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_classcompletion_options.lfm 2015-09-10 11:51:16.000000000 +0000 @@ -63,9 +63,9 @@ AnchorSideTop.Control = ClassPartInsertPolicyRadioGroup AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 + Height = 17 Top = 106 - Width = 227 + Width = 192 BorderSpacing.Around = 6 Caption = 'MixMethodsAndPropertiesCheckBox' TabOrder = 2 @@ -75,12 +75,12 @@ AnchorSideTop.Control = UpdateAllMethodSignaturesCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 166 - Width = 204 + Height = 17 + Top = 152 + Width = 177 BorderSpacing.Around = 6 Caption = 'ClassHeaderCommentsCheckBox' - TabOrder = 3 + TabOrder = 4 end object PropertyCompletionGroupBox: TGroupBox AnchorSideLeft.Control = Owner @@ -90,23 +90,23 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 0 - Height = 184 - Top = 226 + Height = 158 + Top = 198 Width = 575 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 Caption = 'PropertyCompletionGroupBox' - ClientHeight = 167 + ClientHeight = 140 ClientWidth = 571 - TabOrder = 4 + TabOrder = 6 object PropertyCompletionCheckBox: TCheckBox AnchorSideLeft.Control = PropertyCompletionGroupBox AnchorSideTop.Control = PropertyCompletionGroupBox Left = 6 - Height = 24 + Height = 17 Top = 6 - Width = 192 + Width = 162 BorderSpacing.Around = 6 Caption = 'PropertyCompletionCheckBox' TabOrder = 0 @@ -118,8 +118,8 @@ AnchorSideRight.Control = PropertyCompletionGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 125 - Top = 36 + Height = 105 + Top = 29 Width = 559 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -127,27 +127,29 @@ BevelOuter = bvNone ChildSizing.Layout = cclTopToBottomThenLeftToRight ChildSizing.ControlsPerLine = 5 - ClientHeight = 125 + ClientHeight = 105 ClientWidth = 559 TabOrder = 1 object SetPropertyVariablenameLabel: TLabel AnchorSideTop.Side = asrCenter Left = 11 - Height = 15 - Top = 5 - Width = 171 + Height = 13 + Top = 4 + Width = 147 BorderSpacing.Right = 6 BorderSpacing.CellAlignHorizontal = ccaRightBottom BorderSpacing.CellAlignVertical = ccaCenter Caption = 'SetPropertyVariablenameLabel' ParentColor = False + ParentShowHint = False + ShowHint = True end object PrivateVariablePrefixLabel: TLabel AnchorSideTop.Side = asrCenter - Left = 36 - Height = 15 - Top = 30 - Width = 146 + Left = 33 + Height = 13 + Top = 25 + Width = 125 BorderSpacing.Right = 6 BorderSpacing.CellAlignHorizontal = ccaRightBottom BorderSpacing.CellAlignVertical = ccaCenter @@ -157,9 +159,9 @@ object PropertyStoredIdentPostfixLabel: TLabel AnchorSideTop.Side = asrCenter Left = 0 - Height = 15 - Top = 55 - Width = 182 + Height = 13 + Top = 46 + Width = 158 BorderSpacing.Right = 6 BorderSpacing.CellAlignHorizontal = ccaRightBottom BorderSpacing.CellAlignVertical = ccaCenter @@ -169,9 +171,9 @@ object PropertyWriteIdentPrefixLabel: TLabel AnchorSideTop.Side = asrCenter Left = 11 - Height = 15 - Top = 80 - Width = 171 + Height = 13 + Top = 67 + Width = 147 BorderSpacing.Right = 6 BorderSpacing.CellAlignHorizontal = ccaRightBottom BorderSpacing.CellAlignVertical = ccaCenter @@ -180,10 +182,10 @@ end object PropertyReadIdentPrefixLabel: TLabel AnchorSideTop.Side = asrCenter - Left = 14 - Height = 15 - Top = 105 - Width = 168 + Left = 12 + Height = 13 + Top = 88 + Width = 146 BorderSpacing.Right = 6 BorderSpacing.CellAlignHorizontal = ccaRightBottom BorderSpacing.CellAlignVertical = ccaCenter @@ -193,53 +195,85 @@ object SetPropertyVariablenameEdit: TEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom - Left = 188 - Height = 25 + Left = 164 + Height = 21 Top = 0 Width = 80 + ParentShowHint = False + ShowHint = True TabOrder = 0 Text = 'SetPropertyVariablenameEdit' end object PrivateVariablePrefixEdit: TEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom - Left = 188 - Height = 25 - Top = 25 + Left = 164 + Height = 21 + Top = 21 Width = 80 - TabOrder = 1 + TabOrder = 3 Text = 'PrivateVariablePrefixEdit' end object PropertyStoredIdentPostfixEdit: TEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom - Left = 188 - Height = 25 - Top = 50 + Left = 164 + Height = 21 + Top = 42 Width = 80 - TabOrder = 2 + TabOrder = 4 Text = 'PropertyStoredIdentPostfixEdit' end object PropertyWriteIdentPrefixEdit: TEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom - Left = 188 - Height = 25 - Top = 75 + Left = 164 + Height = 21 + Top = 63 Width = 80 - TabOrder = 3 + TabOrder = 5 Text = 'PropertyWriteIdentPrefixEdit' end object PropertyReadIdentPrefixEdit: TEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom - Left = 188 - Height = 25 - Top = 100 + Left = 164 + Height = 21 + Top = 84 Width = 80 - TabOrder = 4 + TabOrder = 6 Text = 'PropertyReadIdentPrefixEdit' end + object SetPropertyVariableIsPrefixCheckBox: TCheckBox + AnchorSideLeft.Control = SetPropertyVariablenameEdit + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = SetPropertyVariablenameEdit + AnchorSideTop.Side = asrCenter + Left = 254 + Height = 17 + Top = 2 + Width = 200 + BorderSpacing.Left = 10 + Caption = 'SetPropertyVariableIsPrefixCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end + object SetPropertyVariableUseConstCheckBox: TCheckBox + AnchorSideLeft.Control = SetPropertyVariableIsPrefixCheckBox + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = SetPropertyVariablenameEdit + AnchorSideTop.Side = asrCenter + Left = 464 + Height = 17 + Top = 2 + Width = 209 + BorderSpacing.Left = 10 + Caption = 'SetPropertyVariableUseConstCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 2 + end end end object ClassImplementationCommentsCheckBox: TCheckBox @@ -247,9 +281,9 @@ AnchorSideTop.Control = ClassHeaderCommentsCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 196 - Width = 251 + Height = 17 + Top = 175 + Width = 216 BorderSpacing.Around = 6 Caption = 'ClassImplementationCommentsCheckBox' TabOrder = 5 @@ -259,11 +293,11 @@ AnchorSideTop.Control = MixMethodsAndPropertiesCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 136 - Width = 235 + Height = 17 + Top = 129 + Width = 200 BorderSpacing.Around = 6 Caption = 'UpdateAllMethodSignaturesCheckBox' - TabOrder = 6 + TabOrder = 3 end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_classcompletion_options.pas lazarus-1.6+dfsg/ide/frames/codetools_classcompletion_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codetools_classcompletion_options.pas 2013-07-22 22:08:53.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_classcompletion_options.pas 2015-09-10 11:51:16.000000000 +0000 @@ -33,6 +33,8 @@ { TCodetoolsClassCompletionOptionsFrame } TCodetoolsClassCompletionOptionsFrame = class(TAbstractIDEOptionsEditor) + SetPropertyVariableIsPrefixCheckBox: TCheckBox; + SetPropertyVariableUseConstCheckBox: TCheckBox; ClassHeaderCommentsCheckBox: TCheckBox; ClassImplementationCommentsCheckBox: TCheckBox; ClassPartInsertPolicyRadioGroup: TRadioGroup; @@ -55,7 +57,7 @@ private public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -108,6 +110,12 @@ PropertyStoredIdentPostfixLabel.Caption:=dlgCDTStoredPostfix; PrivateVariablePrefixLabel.Caption:=dlgCDTVariablePrefix; SetPropertyVariablenameLabel.Caption:=dlgSetPropertyVariable; + SetPropertyVariablenameLabel.Hint:=dlgSetPropertyVariableHint; + SetPropertyVariablenameEdit.Hint:=SetPropertyVariablenameLabel.Hint; + SetPropertyVariableIsPrefixCheckBox.Caption:=dlgSetPropertyVariableIsPrefix; + SetPropertyVariableIsPrefixCheckBox.Hint:=dlgSetPropertyVariableIsPrefixHint; + SetPropertyVariableUseConstCheckBox.Caption:=dlgSetPropertyVariableUseConst; + SetPropertyVariableUseConstCheckBox.Hint:=dlgSetPropertyVariableUseConstHint; end; procedure TCodetoolsClassCompletionOptionsFrame.ReadSettings( @@ -143,6 +151,8 @@ PropertyStoredIdentPostfixEdit.Text := PropertyStoredIdentPostfix; PrivateVariablePrefixEdit.Text := PrivateVariablePrefix; SetPropertyVariablenameEdit.Text := SetPropertyVariablename; + SetPropertyVariableIsPrefixCheckBox.Checked := SetPropertyVariableIsPrefix; + SetPropertyVariableUseConstCheckBox.Checked := SetPropertyVariableUseConst; end; end; @@ -178,6 +188,8 @@ ReadIdentifier(PrivateVariablePrefixEdit.Text,'F'); SetPropertyVariablename := ReadIdentifier(SetPropertyVariablenameEdit.Text,'AValue'); + SetPropertyVariableIsPrefix := SetPropertyVariableIsPrefixCheckBox.Checked; + SetPropertyVariableUseConst := SetPropertyVariableUseConstCheckBox.Checked; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_codecreation_options.lfm lazarus-1.6+dfsg/ide/frames/codetools_codecreation_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/codetools_codecreation_options.lfm 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_codecreation_options.lfm 2015-10-29 11:08:52.000000000 +0000 @@ -7,78 +7,29 @@ ClientWidth = 566 TabOrder = 0 Visible = False - DesignLeft = 211 - DesignTop = 209 - object ForwardProcsInsertPolicyRadioGroup: TRadioGroup - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Owner - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 100 - Top = 6 - Width = 554 - Anchors = [akTop, akLeft, akRight] - AutoFill = True - BorderSpacing.Around = 6 - Caption = 'ForwardProcsInsertPolicyRadioGroup' - ChildSizing.LeftRightSpacing = 6 - ChildSizing.TopBottomSpacing = 6 - ChildSizing.EnlargeHorizontal = crsHomogenousChildResize - ChildSizing.EnlargeVertical = crsHomogenousChildResize - ChildSizing.ShrinkHorizontal = crsScaleChilds - ChildSizing.ShrinkVertical = crsScaleChilds - ChildSizing.Layout = cclLeftToRightThenTopToBottom - ChildSizing.ControlsPerLine = 1 - TabOrder = 0 - end + DesignLeft = 322 + DesignTop = 167 object ForwardProcsKeepOrderCheckBox: TCheckBox AnchorSideLeft.Control = Owner - AnchorSideTop.Control = ForwardProcsInsertPolicyRadioGroup + AnchorSideTop.Control = ForwardProcsInsertPolicyComboBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 18 - Top = 112 - Width = 233 - BorderSpacing.Around = 6 + Height = 19 + Top = 45 + Width = 200 + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 Caption = 'ForwardProcsKeepOrderCheckBox' TabOrder = 1 end - object UsesInsertPolicyRadioGroup: TRadioGroup - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = ForwardProcsKeepOrderCheckBox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 6 - Height = 100 - Top = 142 - Width = 554 - Anchors = [akTop, akLeft, akRight] - AutoFill = True - AutoSize = True - BorderSpacing.Top = 6 - BorderSpacing.Around = 6 - Caption = 'UsesInsertPolicyRadioGroup' - ChildSizing.LeftRightSpacing = 6 - ChildSizing.TopBottomSpacing = 6 - ChildSizing.EnlargeHorizontal = crsHomogenousChildResize - ChildSizing.EnlargeVertical = crsHomogenousChildResize - ChildSizing.ShrinkHorizontal = crsScaleChilds - ChildSizing.ShrinkVertical = crsScaleChilds - ChildSizing.Layout = cclLeftToRightThenTopToBottom - ChildSizing.ControlsPerLine = 1 - Constraints.MinHeight = 100 - TabOrder = 2 - end object UpdateMultiProcSignaturesCheckBox: TCheckBox AnchorSideLeft.Control = Owner - AnchorSideTop.Control = UsesInsertPolicyRadioGroup + AnchorSideTop.Control = UsesInsertPolicyComboBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 18 - Top = 248 - Width = 251 + Height = 19 + Top = 99 + Width = 217 BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = 'UpdateMultiProcSignaturesCheckBox' @@ -89,37 +40,38 @@ AnchorSideTop.Control = UpdateMultiProcSignaturesCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 18 - Top = 266 - Width = 284 + Height = 19 + Top = 118 + Width = 244 BorderSpacing.Left = 6 Caption = 'UpdateOtherProcSignaturesCaseCheckBox' TabOrder = 4 end object TemplateFileLabel: TLabel - AnchorSideLeft.Control = UpdateOtherProcSignaturesCaseCheckBox + AnchorSideLeft.Control = GroupLocalVariablesCheckBox AnchorSideTop.Control = TemplateFileEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 16 - Top = 293 - Width = 114 + Height = 15 + Top = 195 + Width = 95 Caption = 'TemplateFileLabel' ParentColor = False end object TemplateFileEdit: TEdit AnchorSideLeft.Control = TemplateFileLabel AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = UpdateOtherProcSignaturesCaseCheckBox + AnchorSideTop.Control = EventMethodSectionComboBox AnchorSideTop.Side = asrBottom AnchorSideRight.Control = TemplateFileBrowseButton - Left = 120 - Height = 22 - Top = 290 - Width = 370 + Left = 107 + Height = 23 + Top = 191 + Width = 418 Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 6 BorderSpacing.Top = 6 - TabOrder = 5 + TabOrder = 7 Text = 'TemplateFileEdit' end object TemplateFileBrowseButton: TButton @@ -128,15 +80,105 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = TemplateFileEdit AnchorSideBottom.Side = asrBottom - Left = 490 - Height = 22 - Top = 290 - Width = 70 + Left = 525 + Height = 23 + Top = 191 + Width = 35 Anchors = [akTop, akRight, akBottom] AutoSize = True BorderSpacing.Right = 6 Caption = '...' OnClick = TemplateFileBrowseButtonClick + TabOrder = 8 + end + object GroupLocalVariablesCheckBox: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = UpdateOtherProcSignaturesCaseCheckBox + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 19 + Top = 137 + Width = 180 + BorderSpacing.Left = 6 + Caption = 'GroupLocalVariablesCheckBox' + TabOrder = 5 + end + object ForwardProcsInsertPolicyComboBox: TComboBox + AnchorSideLeft.Control = ForwardProcsInsertPolicyLabel + AnchorSideLeft.Side = asrBottom + Left = 173 + Height = 23 + Top = 16 + Width = 170 + ItemHeight = 15 + Style = csDropDownList + TabOrder = 0 + end + object ForwardProcsInsertPolicyLabel: TLabel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = ForwardProcsInsertPolicyComboBox + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = ForwardProcsInsertPolicyComboBox + Left = 6 + Height = 15 + Top = 20 + Width = 161 + BorderSpacing.Around = 6 + Caption = 'ForwardProcsInsertPolicyLabel' + ParentColor = False + end + object UsesInsertPolicyLabel: TLabel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = UsesInsertPolicyComboBox + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = UsesInsertPolicyComboBox + Left = 6 + Height = 15 + Top = 74 + Width = 113 + BorderSpacing.Around = 6 + Caption = 'UsesInsertPolicyLabel' + ParentColor = False + end + object UsesInsertPolicyComboBox: TComboBox + AnchorSideLeft.Control = UsesInsertPolicyLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = ForwardProcsKeepOrderCheckBox + AnchorSideTop.Side = asrBottom + Left = 125 + Height = 23 + Top = 70 + Width = 170 + BorderSpacing.Top = 6 + ItemHeight = 15 + Style = csDropDownList + TabOrder = 2 + end + object EventMethodSectionLabel: TLabel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = EventMethodSectionComboBox + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = EventMethodSectionComboBox + Left = 6 + Height = 15 + Top = 166 + Width = 138 + BorderSpacing.Around = 6 + Caption = 'EventMethodSectionLabel' + ParentColor = False + end + object EventMethodSectionComboBox: TComboBox + AnchorSideLeft.Control = EventMethodSectionLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = GroupLocalVariablesCheckBox + AnchorSideTop.Side = asrBottom + Left = 150 + Height = 23 + Top = 162 + Width = 170 + BorderSpacing.Top = 6 + ItemHeight = 15 + Style = csDropDownList TabOrder = 6 end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_codecreation_options.pas lazarus-1.6+dfsg/ide/frames/codetools_codecreation_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codetools_codecreation_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_codecreation_options.pas 2015-11-04 13:16:28.000000000 +0000 @@ -34,19 +34,24 @@ { TCodetoolsCodeCreationOptionsFrame } TCodetoolsCodeCreationOptionsFrame = class(TAbstractIDEOptionsEditor) - ForwardProcsInsertPolicyRadioGroup: TRadioGroup; + ForwardProcsInsertPolicyComboBox: TComboBox; + UsesInsertPolicyComboBox: TComboBox; ForwardProcsKeepOrderCheckBox: TCheckBox; + ForwardProcsInsertPolicyLabel: TLabel; + EventMethodSectionComboBox: TComboBox; + UsesInsertPolicyLabel: TLabel; TemplateFileBrowseButton: TButton; TemplateFileEdit: TEdit; TemplateFileLabel: TLabel; UpdateMultiProcSignaturesCheckBox: TCheckBox; UpdateOtherProcSignaturesCaseCheckBox: TCheckBox; - UsesInsertPolicyRadioGroup: TRadioGroup; + GroupLocalVariablesCheckBox: TCheckBox; + EventMethodSectionLabel: TLabel; procedure TemplateFileBrowseButtonClick(Sender: TObject); private public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -68,7 +73,7 @@ InitIDEFileDialog(OpenDialog); OpenDialog.Title:=lisChooseAFileWithCodeToolsTemplates; OpenDialog.Options:=OpenDialog.Options+[ofFileMustExist]; - OpenDialog.Filter:=lisCodetoolsTemplateFile+' (*.xml)|*.xml|'+dlgAllFiles+ + OpenDialog.Filter:=dlgFilterCodetoolsTemplateFile+' (*.xml)|*.xml|'+dlgFilterAll+ '|'+GetAllFilesMask; if OpenDialog.Execute then TemplateFileEdit.Text:=OpenDialog.FileName; @@ -86,8 +91,8 @@ procedure TCodetoolsCodeCreationOptionsFrame.Setup( ADialog: TAbstractOptionsEditorDialog); begin - with ForwardProcsInsertPolicyRadioGroup do begin - Caption:=dlgForwardProcsInsertPolicy; + ForwardProcsInsertPolicyLabel.Caption:=dlgForwardProcsInsertPolicy; + with ForwardProcsInsertPolicyComboBox do begin with Items do begin BeginUpdate; Add(dlgLast); @@ -99,8 +104,8 @@ ForwardProcsKeepOrderCheckBox.Caption:=dlgForwardProcsKeepOrder; - with UsesInsertPolicyRadioGroup do begin - Caption:=lisNewUnitsAreAddedToUsesSections; + UsesInsertPolicyLabel.Caption:=lisNewUnitsAreAddedToUsesSections; + with UsesInsertPolicyComboBox do begin with Items do begin BeginUpdate; Add(lisFirst); @@ -112,10 +117,26 @@ end; end; + EventMethodSectionLabel.Caption:=lisEventMethodSectionLabel; + with EventMethodSectionComboBox do begin + Assert(Ord(High(TInsertClassSectionResult)) = 3, 'TCodetoolsCodeCreationOptionsFrame.Setup: High(TInsertClassSectionResult) <> 3'); + with Items do begin + BeginUpdate; + Add(lisPrivate); + Add(lisProtected); + Add(lisEMDPublic); + Add(lisEMDPublished); + Add(dlgEnvAsk); + EndUpdate; + end; + end; + UpdateMultiProcSignaturesCheckBox.Caption:= lisCTOUpdateMultipleProcedureSignatures; UpdateOtherProcSignaturesCaseCheckBox.Caption:= lisUpdateOtherProcedureSignaturesWhenOnlyLetterCaseHa; + GroupLocalVariablesCheckBox.Caption:= + lisGroupLocalVariables; TemplateFileLabel.Caption:=lisTemplateFile; {$IFNDEF EnableCodeCompleteTemplates} @@ -131,27 +152,29 @@ with AOptions as TCodetoolsOptions do begin case ForwardProcBodyInsertPolicy of - fpipLast: ForwardProcsInsertPolicyRadioGroup.ItemIndex:=0; - fpipInFrontOfMethods: ForwardProcsInsertPolicyRadioGroup.ItemIndex:=1; + fpipLast: ForwardProcsInsertPolicyComboBox.ItemIndex:=0; + fpipInFrontOfMethods: ForwardProcsInsertPolicyComboBox.ItemIndex:=1; else // fpipBehindMethods - ForwardProcsInsertPolicyRadioGroup.ItemIndex:=2; + ForwardProcsInsertPolicyComboBox.ItemIndex:=2; end; ForwardProcsKeepOrderCheckBox.Checked := KeepForwardProcOrder; case UsesInsertPolicy of - uipFirst: UsesInsertPolicyRadioGroup.ItemIndex:=0; - uipInFrontOfRelated: UsesInsertPolicyRadioGroup.ItemIndex:=1; - uipBehindRelated: UsesInsertPolicyRadioGroup.ItemIndex:=2; - uipLast: UsesInsertPolicyRadioGroup.ItemIndex:=3; + uipFirst: UsesInsertPolicyComboBox.ItemIndex:=0; + uipInFrontOfRelated: UsesInsertPolicyComboBox.ItemIndex:=1; + uipBehindRelated: UsesInsertPolicyComboBox.ItemIndex:=2; + uipLast: UsesInsertPolicyComboBox.ItemIndex:=3; else //uipAlphabetically: - UsesInsertPolicyRadioGroup.ItemIndex:=4; + UsesInsertPolicyComboBox.ItemIndex:=4; end; + EventMethodSectionComboBox.ItemIndex := Ord(EventMethodSection); UpdateMultiProcSignaturesCheckBox.Checked:=UpdateMultiProcSignatures; UpdateOtherProcSignaturesCaseCheckBox.Checked:=UpdateOtherProcSignaturesCase; + GroupLocalVariablesCheckBox.Checked:=GroupLocalVariables; TemplateFileEdit.Text:=CodeCompletionTemplateFileName; end; @@ -162,7 +185,7 @@ begin with AOptions as TCodetoolsOptions do begin - case ForwardProcsInsertPolicyRadioGroup.ItemIndex of + case ForwardProcsInsertPolicyComboBox.ItemIndex of 0: ForwardProcBodyInsertPolicy := fpipLast; 1: ForwardProcBodyInsertPolicy := fpipInFrontOfMethods; 2: ForwardProcBodyInsertPolicy := fpipBehindMethods; @@ -170,7 +193,7 @@ KeepForwardProcOrder := ForwardProcsKeepOrderCheckBox.Checked; - case UsesInsertPolicyRadioGroup.ItemIndex of + case UsesInsertPolicyComboBox.ItemIndex of 0: UsesInsertPolicy:=uipFirst; 1: UsesInsertPolicy:=uipInFrontOfRelated; 2: UsesInsertPolicy:=uipBehindRelated; @@ -178,8 +201,11 @@ else UsesInsertPolicy:=uipAlphabetically; end; + EventMethodSection := TInsertClassSection(EventMethodSectionComboBox.ItemIndex); + UpdateMultiProcSignatures:=UpdateMultiProcSignaturesCheckBox.Checked; UpdateOtherProcSignaturesCase:=UpdateOtherProcSignaturesCaseCheckBox.Checked; + GroupLocalVariables:=GroupLocalVariablesCheckBox.Checked; CodeCompletionTemplateFileName:=TemplateFileEdit.Text; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_general_options.pas lazarus-1.6+dfsg/ide/frames/codetools_general_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codetools_general_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_general_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -27,7 +27,7 @@ uses Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, Buttons, Dialogs, ExtCtrls, Graphics, - IDEDialogs, PathEditorDlg, + IDEDialogs, CodeToolsOptions, LazarusIDEStrConsts, IDEOptionsIntf; type diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_identifiercompletion_options.lfm lazarus-1.6+dfsg/ide/frames/codetools_identifiercompletion_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/codetools_identifiercompletion_options.lfm 2015-01-19 10:44:28.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_identifiercompletion_options.lfm 2015-10-14 10:09:15.000000000 +0000 @@ -15,11 +15,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 90 - Width = 168 + Height = 19 + Top = 99 + Width = 161 Caption = 'ICAddSemicolonCheckBox' - TabOrder = 0 + TabOrder = 3 end object ICAddAssignOperatorCheckBox: TCheckBox AnchorSideLeft.Control = Owner @@ -27,11 +27,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 114 - Width = 198 + Height = 19 + Top = 118 + Width = 187 Caption = 'ICAddAssignOperatorCheckBox' - TabOrder = 1 + TabOrder = 4 end object ICAutoStartAfterPointCheckBox: TCheckBox AnchorSideLeft.Control = Owner @@ -39,11 +39,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 + Height = 19 Top = 25 - Width = 203 + Width = 187 Caption = 'ICAutoStartAfterPointCheckBox' - TabOrder = 2 + TabOrder = 0 end object ICAutoAddParameterBracketsCheckBox: TCheckBox AnchorSideLeft.Control = Owner @@ -51,25 +51,25 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 162 - Width = 245 + Height = 19 + Top = 156 + Width = 229 Caption = 'ICAutoAddParameterBracketsCheckBox' - TabOrder = 3 + TabOrder = 6 end object ICShowHelpCheckBox: TCheckBox AnchorSideLeft.Control = Owner - AnchorSideTop.Control = ICAutoStartAfterPointCheckBox + AnchorSideTop.Control = ICAutoUseSingleIdent AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 49 - Width = 144 + Height = 19 + Top = 63 + Width = 137 Caption = 'ICShowHelpCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 4 + TabOrder = 2 end object ICReplaceCheckBox: TCheckBox AnchorSideLeft.Control = Owner @@ -77,13 +77,13 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 268 - Width = 134 + Height = 19 + Top = 247 + Width = 124 Caption = 'ICReplaceCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 5 + TabOrder = 9 end object ICAddDoCheckBox: TCheckBox AnchorSideLeft.Control = Owner @@ -91,20 +91,20 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 138 - Width = 128 + Height = 19 + Top = 137 + Width = 120 Caption = 'ICAddDoCheckBox' - TabOrder = 6 + TabOrder = 5 end object ICSortForHistoryCheckBox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = ICSortDividerBevel AnchorSideTop.Side = asrBottom Left = 0 - Height = 24 - Top = 203 - Width = 170 + Height = 19 + Top = 192 + Width = 159 Caption = 'ICSortForHistoryCheckBox' TabOrder = 7 end @@ -113,9 +113,9 @@ AnchorSideTop.Control = ICSortForHistoryCheckBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 24 - Top = 227 - Width = 164 + Height = 19 + Top = 211 + Width = 153 Caption = 'ICSortForScopeCheckBox' ParentShowHint = False ShowHint = True @@ -142,7 +142,7 @@ AnchorSideRight.Side = asrBottom Left = 0 Height = 15 - Top = 75 + Top = 84 Width = 537 Caption = 'ICAddDividerBevel' Anchors = [akTop, akLeft, akRight] @@ -158,7 +158,7 @@ AnchorSideRight.Side = asrBottom Left = 0 Height = 15 - Top = 188 + Top = 177 Width = 537 Caption = 'ICSortDividerBevel' Anchors = [akTop, akLeft, akRight] @@ -174,7 +174,7 @@ AnchorSideRight.Side = asrBottom Left = 0 Height = 15 - Top = 253 + Top = 232 Width = 537 Caption = 'ICMiscDividerBevel' Anchors = [akTop, akLeft, akRight] @@ -182,4 +182,32 @@ Font.Style = [fsBold] ParentFont = False end + object ICJumpToErrorCheckBox: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = ICReplaceCheckBox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 19 + Top = 266 + Width = 151 + Caption = 'ICJumpToErrorCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 10 + end + object ICAutoUseSingleIdent: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = ICAutoStartAfterPointCheckBox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 19 + Top = 44 + Width = 135 + Caption = 'ICAutoUseSingleIdent' + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_identifiercompletion_options.pas lazarus-1.6+dfsg/ide/frames/codetools_identifiercompletion_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codetools_identifiercompletion_options.pas 2015-01-20 21:42:47.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_identifiercompletion_options.pas 2015-10-14 10:09:15.000000000 +0000 @@ -42,14 +42,16 @@ ICAddSemicolonCheckBox: TCheckBox; ICAddDividerBevel: TDividerBevel; ICReplaceCheckBox: TCheckBox; + ICJumpToErrorCheckBox: TCheckBox; ICShowHelpCheckBox: TCheckBox; + ICAutoUseSingleIdent: TCheckBox; ICSortDividerBevel: TDividerBevel; ICSortForHistoryCheckBox: TCheckBox; ICSortForScopeCheckBox: TCheckBox; private public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -69,18 +71,19 @@ procedure TCodetoolsIndentifierCompletionOptionsFrame.Setup( ADialog: TAbstractOptionsEditorDialog); begin - ICOpenDividerBevel.Caption:=lisIdCOpen; + ICOpenDividerBevel.Caption:=lisIdCOpening; ICAutoStartAfterPointCheckBox.Caption:=lisAutomaticallyInvokeAfterPoint; + ICAutoUseSingleIdent.Caption:=lisAutomaticallyUseSinglePossibleIdent; ICShowHelpCheckBox.Caption:=lisShowHelp; ICShowHelpCheckBox.Hint:=lisBestViewedByInstallingAHTMLControlLikeTurbopowerip; - ICAddDividerBevel.Caption:=lisIdCAdd; + ICAddDividerBevel.Caption:=lisIdCAddition; ICAddSemicolonCheckBox.Caption:=dlgAddSemicolon; ICAddAssignOperatorCheckBox.Caption:=dlgAddAssignmentOperator; ICAddDoCheckBox.Caption:=lisAddKeywordDo; ICAutoAddParameterBracketsCheckBox.Caption:=lisAddParameterBrackets; - ICSortDividerBevel.Caption:=lisSort; + ICSortDividerBevel.Caption:=lisSorting; ICSortForHistoryCheckBox.Caption:=lisShowRecentlyUsedIdentifiersAtTop; ICSortForScopeCheckBox.Caption:=lisSortForScope; ICSortForScopeCheckBox.Hint:=lisForExampleShowAtTopTheLocalVariablesThenTheMembers; @@ -88,6 +91,8 @@ ICMiscDividerBevel.Caption:=dlgEnvMisc; ICReplaceCheckBox.Caption:=lisReplaceWholeIdentifier; ICReplaceCheckBox.Hint:=lisEnableReplaceWholeIdentifierDisableReplacePrefix; + ICJumpToErrorCheckBox.Caption:=lisJumpToError; + ICJumpToErrorCheckBox.Hint:=lisJumpToErrorAtIdentifierCompletion; end; procedure TCodetoolsIndentifierCompletionOptionsFrame.ReadSettings( @@ -99,8 +104,10 @@ ICAddAssignOperatorCheckBox.Checked := IdentComplAddAssignOperator; ICAddDoCheckBox.Checked := IdentComplAddDo; ICAutoStartAfterPointCheckBox.Checked := IdentComplAutoStartAfterPoint; + ICAutoUseSingleIdent.Checked := IdentComplAutoUseSingleIdent; ICAutoAddParameterBracketsCheckBox.Checked:=IdentComplAddParameterBrackets; ICReplaceCheckBox.Checked:=IdentComplReplaceIdentifier; + ICJumpToErrorCheckBox.Checked:=IdentComplJumpToError; ICShowHelpCheckBox.Checked:=IdentComplShowHelp; ICSortForHistoryCheckBox.Checked:=IdentComplSortForHistory; ICSortForScopeCheckBox.Checked:=IdentComplSortForScope; @@ -116,8 +123,10 @@ IdentComplAddAssignOperator := ICAddAssignOperatorCheckBox.Checked; IdentComplAddDo := ICAddDoCheckBox.Checked; IdentComplAutoStartAfterPoint := ICAutoStartAfterPointCheckBox.Checked; + IdentComplAutoUseSingleIdent := ICAutoUseSingleIdent.Checked; IdentComplAddParameterBrackets:=ICAutoAddParameterBracketsCheckBox.Checked; IdentComplReplaceIdentifier:=ICReplaceCheckBox.Checked; + IdentComplJumpToError:=ICJumpToErrorCheckBox.Checked; IdentComplShowHelp:=ICShowHelpCheckBox.Checked; IdentComplSortForHistory:=ICSortForHistoryCheckBox.Checked; IdentComplSortForScope:=ICSortForScopeCheckBox.Checked; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_linesplitting_options.pas lazarus-1.6+dfsg/ide/frames/codetools_linesplitting_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codetools_linesplitting_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_linesplitting_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -51,7 +51,7 @@ destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_space_options.pas lazarus-1.6+dfsg/ide/frames/codetools_space_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codetools_space_options.pas 2014-12-16 21:40:33.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_space_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -50,7 +50,7 @@ destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/codetools_wordpolicy_options.pas lazarus-1.6+dfsg/ide/frames/codetools_wordpolicy_options.pas --- lazarus-1.4.4+dfsg/ide/frames/codetools_wordpolicy_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/codetools_wordpolicy_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -41,7 +41,7 @@ { private declarations } public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_buildmacro_options.pas lazarus-1.6+dfsg/ide/frames/compiler_buildmacro_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_buildmacro_options.pas 2014-06-15 11:52:27.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_buildmacro_options.pas 2015-03-22 10:17:35.000000000 +0000 @@ -88,7 +88,7 @@ constructor Create(TheOwner: TComponent); override; destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; @@ -399,6 +399,8 @@ case ParentType of cbmntBuildMacro: Result:=cbmntValue; + else + Result:=cbmntNone; end; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_codegen_options.lfm lazarus-1.6+dfsg/ide/frames/compiler_codegen_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/compiler_codegen_options.lfm 2014-09-13 20:57:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_codegen_options.lfm 2015-11-30 16:31:44.000000000 +0000 @@ -6,8 +6,8 @@ ClientHeight = 523 ClientWidth = 601 TabOrder = 0 - DesignLeft = 290 - DesignTop = 90 + DesignLeft = 343 + DesignTop = 220 object grpUnitStyle: TGroupBox AnchorSideLeft.Control = grpOptimizations AnchorSideTop.Control = grpOptimizations @@ -16,7 +16,7 @@ AnchorSideBottom.Side = asrBottom Left = 0 Height = 74 - Top = 185 + Top = 208 Width = 146 AutoSize = True BorderSpacing.Top = 5 @@ -60,7 +60,7 @@ AnchorSideBottom.Side = asrBottom Left = 153 Height = 80 - Top = 185 + Top = 208 Width = 448 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -133,13 +133,16 @@ object grpOptimizationLevels: TGroupBox AnchorSideBottom.Side = asrBottom Left = 0 - Height = 128 + Height = 151 Top = 0 Width = 601 Align = alTop AutoSize = True Caption = 'grpOptimizationLevels' - ClientHeight = 111 + ChildSizing.LeftRightSpacing = 6 + ChildSizing.TopBottomSpacing = 3 + ChildSizing.VerticalSpacing = 2 + ClientHeight = 134 ClientWidth = 597 TabOrder = 2 object radOptLevelNone: TRadioButton @@ -150,8 +153,6 @@ Top = 3 Width = 124 BorderSpacing.Left = 6 - BorderSpacing.Top = 3 - BorderSpacing.Right = 6 Caption = 'radOptLevelNone' Checked = True TabOrder = 0 @@ -163,11 +164,9 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 24 - Top = 30 - Width = 210 - BorderSpacing.Top = 3 - BorderSpacing.Right = 6 - Caption = '1 (quick, debugger friendly) (-O1)' + Top = 29 + Width = 101 + Caption = 'radOptLevel1' TabOrder = 1 end object radOptLevel2: TRadioButton @@ -176,10 +175,8 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 24 - Top = 57 + Top = 55 Width = 101 - BorderSpacing.Top = 3 - BorderSpacing.Right = 6 Caption = 'radOptLevel2' TabOrder = 2 end @@ -189,14 +186,22 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 24 - Top = 84 + Top = 81 Width = 101 - BorderSpacing.Top = 3 - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 3 Caption = 'radOptLevel3' TabOrder = 3 end + object radOptLevel4: TRadioButton + AnchorSideLeft.Control = radOptLevelNone + AnchorSideTop.Control = radOptLevel3 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 24 + Top = 107 + Width = 101 + Caption = 'radOptLevel4' + TabOrder = 4 + end end object grpLinking: TGroupBox AnchorSideLeft.Control = grpUnitStyle @@ -206,7 +211,7 @@ AnchorSideRight.Side = asrBottom Left = 0 Height = 98 - Top = 270 + Top = 293 Width = 601 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -261,7 +266,7 @@ object grpOptimizations: TGroupBox Left = 0 Height = 47 - Top = 133 + Top = 156 Width = 601 Align = alTop AutoSize = True diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_codegen_options.pas lazarus-1.6+dfsg/ide/frames/compiler_codegen_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_codegen_options.pas 2014-09-13 20:57:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_codegen_options.pas 2015-11-30 16:31:44.000000000 +0000 @@ -31,10 +31,11 @@ radOptLevel1: TRadioButton; radOptLevel2: TRadioButton; radOptLevel3: TRadioButton; + radOptLevel4: TRadioButton; radOptLevelNone: TRadioButton; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -68,6 +69,7 @@ radOptLevel1.Caption := dlgLevel1Opt + ' (-O1)'; radOptLevel2.Caption := dlgLevel2Opt + ' (-O2)'; radOptLevel3.Caption := dlgLevel3Opt + ' (-O3)'; + radOptLevel4.Caption := dlgLevel4Opt + ' (-O4)'; grpOptimizations.Caption := dlgOtherOptimizations; chkOptSmaller.Caption := lisSmallerRatherThanFaster + ' (-Os)'; @@ -97,6 +99,7 @@ 1: radOptLevel1.Checked := True; 2: radOptLevel2.Checked := True; 3: radOptLevel3.Checked := True; + 4: radOptLevel4.Checked := True; else radOptLevelNone.Checked := True; end; @@ -143,6 +146,9 @@ if (radOptLevel3.Checked) then OptimizationLevel := 3 else + if (radOptLevel4.Checked) then + OptimizationLevel := 4 + else OptimizationLevel := 0; LinkSmart := chkLinkSmart.Checked; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_compilation_options.lfm lazarus-1.6+dfsg/ide/frames/compiler_compilation_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/compiler_compilation_options.lfm 2014-10-30 19:48:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_compilation_options.lfm 2015-06-16 23:24:13.000000000 +0000 @@ -12,9 +12,9 @@ AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner Left = 0 - Height = 18 + Height = 19 Top = 0 - Width = 136 + Width = 118 Caption = 'chkCreateMakefile' ParentShowHint = False ShowHint = True @@ -27,23 +27,23 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 103 - Top = 218 + Height = 105 + Top = 222 Width = 741 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 Caption = 'ExecuteAfterGroupBox' - ClientHeight = 81 - ClientWidth = 733 + ClientHeight = 85 + ClientWidth = 737 TabOrder = 3 object lblRunIfExecAfter: TLabel AnchorSideLeft.Control = ExecuteAfterGroupBox AnchorSideTop.Control = ExecuteAfterGroupBox Left = 6 - Height = 16 + Height = 15 Top = 6 - Width = 109 + Width = 90 BorderSpacing.Around = 6 Caption = 'lblRunIfExecAfter' ParentColor = False @@ -53,9 +53,9 @@ AnchorSideTop.Control = ExecuteAfterCommandComboBox AnchorSideTop.Side = asrCenter Left = 6 - Height = 16 - Top = 32 - Width = 178 + Height = 15 + Top = 35 + Width = 151 BorderSpacing.Around = 6 Caption = 'ExecuteAfterCommandLabel' ParentColor = False @@ -64,10 +64,10 @@ AnchorSideLeft.Control = lblRunIfExecAfter AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteAfterGroupBox - Left = 145 - Height = 18 + Left = 126 + Height = 19 Top = 6 - Width = 154 + Width = 133 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkExecAfterCompile' @@ -77,10 +77,10 @@ AnchorSideLeft.Control = chkExecAfterCompile AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteAfterGroupBox - Left = 329 - Height = 18 + Left = 289 + Height = 19 Top = 6 - Width = 133 + Width = 115 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkExecAfterBuild' @@ -90,10 +90,10 @@ AnchorSideLeft.Control = chkExecAfterBuild AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteAfterGroupBox - Left = 492 - Height = 18 + Left = 434 + Height = 19 Top = 6 - Width = 126 + Width = 109 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkExecAfterRun' @@ -104,50 +104,50 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteAfterScanMakeCheckBox AnchorSideTop.Side = asrCenter - Left = 407 - Height = 18 - Top = 57 - Width = 213 + Left = 353 + Height = 19 + Top = 60 + Width = 184 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'ExecuteAfterScanFPCCheckBox' - TabOrder = 4 + TabOrder = 6 end object ExecuteAfterScanMakeCheckBox: TCheckBox AnchorSideLeft.Control = ExecuteAfterScanLabel AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteAfterCommandComboBox AnchorSideTop.Side = asrBottom - Left = 154 - Height = 18 - Top = 57 - Width = 223 + Left = 131 + Height = 19 + Top = 60 + Width = 192 BorderSpacing.Around = 6 Caption = 'ExecuteAfterScanMakeCheckBox' - TabOrder = 3 + TabOrder = 5 end object ExecuteAfterShowAllCheckBox: TCheckBox AnchorSideLeft.Control = ExecuteAfterScanFPCCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteAfterScanMakeCheckBox AnchorSideTop.Side = asrCenter - Left = 650 - Height = 18 - Top = 57 - Width = 211 + Left = 567 + Height = 19 + Top = 60 + Width = 181 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'ExecuteAfterShowAllCheckBox' - TabOrder = 5 + TabOrder = 7 end object ExecuteAfterScanLabel: TLabel AnchorSideLeft.Control = ExecuteAfterGroupBox AnchorSideTop.Control = ExecuteAfterScanMakeCheckBox AnchorSideTop.Side = asrCenter Left = 6 - Height = 16 - Top = 58 - Width = 142 + Height = 15 + Top = 62 + Width = 119 BorderSpacing.Left = 6 Caption = 'ExecuteAfterScanLabel' ParentColor = False @@ -158,16 +158,16 @@ AnchorSideTop.Control = chkExecAfterCompile AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ExecAfterBrowseButton - Left = 196 - Height = 21 - Top = 30 - Width = 461 + Left = 169 + Height = 23 + Top = 31 + Width = 527 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 12 BorderSpacing.Top = 6 BorderSpacing.Bottom = 6 - ItemHeight = 0 - TabOrder = 6 + ItemHeight = 15 + TabOrder = 3 Text = 'ExecuteAfterCommandComboBox' end object ExecAfterBrowseButton: TButton @@ -176,16 +176,16 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ExecuteAfterCommandComboBox AnchorSideBottom.Side = asrBottom - Left = 657 - Height = 20 - Top = 30 - Width = 70 - Anchors = [akTop, akRight] + Left = 696 + Height = 23 + Top = 31 + Width = 35 + Anchors = [akTop, akRight, akBottom] AutoSize = True BorderSpacing.Right = 6 Caption = '...' OnClick = CompCmdBrowseButtonClick - TabOrder = 7 + TabOrder = 4 end end object grpCompiler: TGroupBox @@ -195,23 +195,23 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 79 - Top = 133 + Height = 80 + Top = 136 Width = 741 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 Caption = 'grpCompiler' - ClientHeight = 57 - ClientWidth = 733 + ClientHeight = 60 + ClientWidth = 737 TabOrder = 2 object lblRunIfCompiler: TLabel AnchorSideLeft.Control = grpCompiler AnchorSideTop.Control = grpCompiler Left = 6 - Height = 16 + Height = 15 Top = 6 - Width = 106 + Width = 90 BorderSpacing.Around = 6 Caption = 'lblRunIfCompiler' ParentColor = False @@ -221,9 +221,9 @@ AnchorSideTop.Control = cobCompiler AnchorSideTop.Side = asrCenter Left = 6 - Height = 16 - Top = 32 - Width = 73 + Height = 15 + Top = 35 + Width = 62 BorderSpacing.Around = 6 Caption = 'lblCompiler' ParentColor = False @@ -232,10 +232,10 @@ AnchorSideLeft.Control = lblRunIfCompiler AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = grpCompiler - Left = 142 - Height = 18 + Left = 126 + Height = 19 Top = 6 - Width = 152 + Width = 133 BorderSpacing.Left = 30 BorderSpacing.Top = 6 Caption = 'chkCompilerCompile' @@ -245,10 +245,10 @@ AnchorSideLeft.Control = chkCompilerCompile AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = grpCompiler - Left = 324 - Height = 18 + Left = 289 + Height = 19 Top = 6 - Width = 131 + Width = 115 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkCompilerBuild' @@ -258,10 +258,10 @@ AnchorSideLeft.Control = chkCompilerBuild AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = grpCompiler - Left = 485 - Height = 18 + Left = 434 + Height = 19 Top = 6 - Width = 124 + Width = 109 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkCompilerRun' @@ -273,15 +273,15 @@ AnchorSideTop.Control = chkCompilerCompile AnchorSideTop.Side = asrBottom AnchorSideRight.Control = BrowseCompilerButton - Left = 91 - Height = 21 - Top = 30 - Width = 566 + Left = 80 + Height = 23 + Top = 31 + Width = 616 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 12 BorderSpacing.Top = 6 BorderSpacing.Bottom = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 3 Text = 'cobCompiler' end @@ -291,10 +291,10 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = cobCompiler AnchorSideBottom.Side = asrBottom - Left = 657 - Height = 21 - Top = 30 - Width = 70 + Left = 696 + Height = 23 + Top = 31 + Width = 35 Anchors = [akTop, akRight, akBottom] AutoSize = True BorderSpacing.Right = 6 @@ -312,23 +312,23 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 103 - Top = 24 + Height = 105 + Top = 25 Width = 741 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 Caption = 'ExecuteBeforeGroupBox' - ClientHeight = 81 - ClientWidth = 733 + ClientHeight = 85 + ClientWidth = 737 TabOrder = 1 object lblRunIfExecBefore: TLabel AnchorSideLeft.Control = ExecuteBeforeGroupBox AnchorSideTop.Control = ExecuteBeforeGroupBox Left = 6 - Height = 16 + Height = 15 Top = 6 - Width = 118 + Width = 98 BorderSpacing.Around = 6 Caption = 'lblRunIfExecBefore' ParentColor = False @@ -338,9 +338,9 @@ AnchorSideTop.Control = ExecuteBeforeCommandComboBox AnchorSideTop.Side = asrCenter Left = 6 - Height = 16 - Top = 32 - Width = 187 + Height = 15 + Top = 35 + Width = 159 BorderSpacing.Around = 6 Caption = 'ExecuteBeforeCommandLabel' ParentColor = False @@ -349,10 +349,10 @@ AnchorSideLeft.Control = lblRunIfExecBefore AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteBeforeGroupBox - Left = 154 - Height = 18 + Left = 134 + Height = 19 Top = 6 - Width = 163 + Width = 141 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkExecBeforeCompile' @@ -362,10 +362,10 @@ AnchorSideLeft.Control = chkExecBeforeCompile AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteBeforeGroupBox - Left = 347 - Height = 18 + Left = 305 + Height = 19 Top = 6 - Width = 142 + Width = 123 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkExecBeforeBuild' @@ -375,10 +375,10 @@ AnchorSideLeft.Control = chkExecBeforeBuild AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteBeforeGroupBox - Left = 519 - Height = 18 + Left = 458 + Height = 19 Top = 6 - Width = 135 + Width = 117 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'chkExecBeforeRun' @@ -389,50 +389,50 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteBeforeScanMakeCheckBox AnchorSideTop.Side = asrCenter - Left = 425 - Height = 18 - Top = 57 - Width = 222 + Left = 369 + Height = 19 + Top = 60 + Width = 192 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'ExecuteBeforeScanFPCCheckBox' - TabOrder = 4 + TabOrder = 6 end object ExecuteBeforeScanMakeCheckBox: TCheckBox AnchorSideLeft.Control = ExecuteBeforeScanLabel AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteBeforeCommandComboBox AnchorSideTop.Side = asrBottom - Left = 163 - Height = 18 - Top = 57 - Width = 232 + Left = 139 + Height = 19 + Top = 60 + Width = 200 BorderSpacing.Around = 6 Caption = 'ExecuteBeforeScanMakeCheckBox' - TabOrder = 3 + TabOrder = 5 end object ExecuteBeforeShowAllCheckBox: TCheckBox AnchorSideLeft.Control = ExecuteBeforeScanFPCCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ExecuteBeforeScanMakeCheckBox AnchorSideTop.Side = asrCenter - Left = 677 - Height = 18 - Top = 57 - Width = 220 + Left = 591 + Height = 19 + Top = 60 + Width = 189 BorderSpacing.Left = 24 BorderSpacing.Around = 6 Caption = 'ExecuteBeforeShowAllCheckBox' - TabOrder = 5 + TabOrder = 7 end object ExecuteBeforeScanLabel: TLabel AnchorSideLeft.Control = ExecuteBeforeGroupBox AnchorSideTop.Control = ExecuteBeforeScanMakeCheckBox AnchorSideTop.Side = asrCenter Left = 6 - Height = 16 - Top = 58 - Width = 151 + Height = 15 + Top = 62 + Width = 127 BorderSpacing.Left = 6 Caption = 'ExecuteBeforeScanLabel' ParentColor = False @@ -443,16 +443,16 @@ AnchorSideTop.Control = chkExecBeforeCompile AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ExecBeforeBrowseButton - Left = 205 - Height = 21 - Top = 30 - Width = 452 + Left = 177 + Height = 23 + Top = 31 + Width = 519 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 12 BorderSpacing.Top = 6 BorderSpacing.Bottom = 6 - ItemHeight = 0 - TabOrder = 6 + ItemHeight = 15 + TabOrder = 3 Text = 'ExecuteBeforeCommandComboBox' end object ExecBeforeBrowseButton: TButton @@ -462,16 +462,16 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ExecuteBeforeCommandComboBox AnchorSideBottom.Side = asrBottom - Left = 657 - Height = 21 - Top = 30 - Width = 70 + Left = 696 + Height = 23 + Top = 31 + Width = 35 Anchors = [akTop, akRight, akBottom] AutoSize = True BorderSpacing.Right = 6 Caption = '...' OnClick = CompCmdBrowseButtonClick - TabOrder = 7 + TabOrder = 4 end end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_compilation_options.pas lazarus-1.6+dfsg/ide/frames/compiler_compilation_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_compilation_options.pas 2014-11-15 12:39:26.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_compilation_options.pas 2015-08-07 17:20:40.000000000 +0000 @@ -5,10 +5,16 @@ interface uses + // RTL + FCL + LCL Classes, sysutils, Controls, StdCtrls, Dialogs, + // CodeTools FileProcs, DefineTemplates, CodeToolManager, - IDEOptionsIntf, CompOptsIntf, IDEDialogs, IDEUtils, + // LazUtils + FileUtil, LazFileUtils, + // IDEIntf + IDEOptionsIntf, CompOptsIntf, IDEDialogs, IDEUtils, + // IDE Project, CompilerOptions, PackageDefs, LazarusIDEStrConsts, EnvironmentOpts, LazConf, IDEProcs, DialogProcs, InputHistory, InitialSetupProc; @@ -54,7 +60,7 @@ private public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -82,6 +88,7 @@ try InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Options:=OpenDialog.Options+[ofFileMustExist]; + OpenDialog.Filter:=dlgFilterAll+'|'+GetAllFilesMask; OldFilename:=''; OldParams:=''; // set title @@ -90,11 +97,11 @@ OpenDialog.Title:=Format(lisChooseCompilerExecutable,[GetDefaultCompilerFilename]) end else if (Sender=ExecAfterBrowseButton) then begin Combo:=ExecuteAfterCommandComboBox; - OpenDialog.Title:='Choose an executable'; + OpenDialog.Title:=lisChooseExecutable; SplitCmdLine(Combo.Text,OldFilename,OldParams); end else if (Sender=ExecBeforeBrowseButton) then begin Combo:=ExecuteBeforeCommandComboBox; - OpenDialog.Title:='Choose an executable'; + OpenDialog.Title:=lisChooseExecutable; SplitCmdLine(Combo.Text,OldFilename,OldParams); end else exit; @@ -116,14 +123,14 @@ end; end else begin // maybe a script - if not CheckExecutable(OldFilename,NewFilename,'Invalid Executable','The file "%s" is not executable.') + if not CheckExecutable(OldFilename,NewFilename,lisInvalidExecutable,lisInvalidExecutableMessageText) then exit; end; end else if (Sender=ExecBeforeBrowseButton) or (Sender=ExecAfterBrowseButton) then begin // check executable - if not CheckExecutable(OldFilename,NewFilename,'Invalid Executable','The file "%s" is not executable.') + if not CheckExecutable(OldFilename,NewFilename,lisInvalidExecutable,lisInvalidExecutableMessageText) then exit; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_config_target.pas lazarus-1.6+dfsg/ide/frames/compiler_config_target.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_config_target.pas 2014-10-30 19:49:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_config_target.pas 2015-11-12 10:39:10.000000000 +0000 @@ -28,8 +28,8 @@ interface uses - Classes, SysUtils, strutils, FileUtil, Controls, Dialogs, Graphics, StdCtrls, - LCLProc, DefineTemplates, IDEOptionsIntf, MacroIntf, + Classes, SysUtils, strutils, Controls, Dialogs, Graphics, StdCtrls, + LCLProc, LazFileUtils, DefineTemplates, IDEOptionsIntf, MacroIntf, IDEDialogs, CompilerOptions, LazarusIDEStrConsts, TransferMacros, PackageDefs, Project, compiler_parsing_options; @@ -232,8 +232,9 @@ // Update selection list for target processor sl:=TStringList.Create; - sl.Add('('+lisDefault+')'); GetTargetProcessors(aTargetCPU,sl); + sl.Sort; + sl.Insert(0,'('+lisDefault+')'); for i:=0 to sl.Count-1 do sl[i]:=ProcessorToCaption(sl[i]); TargetProcComboBox.Items.Assign(sl); @@ -328,7 +329,7 @@ UpdateByTargetCPU(TargetCPU); UpdateByTargetOS(TargetOS); TargetProcComboBox.Text := ProcessorToCaption(TargetProcessor); - PkgDep:=(AOptions as TProjectCompilerOptions).LazProject.FindDependencyByName('LCL'); + PkgDep:=TProjectCompilerOptions(AOptions).LazProject.FindDependencyByName('LCL'); CurrentWidgetTypeLabel.Visible:=Assigned(PkgDep); LCLWidgetTypeLabel.Visible:=Assigned(PkgDep); end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_debugging_options.lfm lazarus-1.6+dfsg/ide/frames/compiler_debugging_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/compiler_debugging_options.lfm 2013-08-05 11:33:28.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_debugging_options.lfm 2015-06-16 11:52:26.000000000 +0000 @@ -12,15 +12,15 @@ AnchorSideTop.Control = grpChecks AnchorSideTop.Side = asrBottom Left = 6 - Height = 21 - Top = 112 + Height = 19 + Top = 107 Width = 689 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Around = 6 Caption = 'chkDebugGDB' OnChange = chkDebugGDBChange - TabOrder = 0 + TabOrder = 1 end object grpInfoForGDB: TGroupBox AnchorSideLeft.Control = Owner @@ -29,15 +29,15 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 125 - Top = 139 + Height = 118 + Top = 132 Width = 701 Anchors = [akTop, akLeft, akRight] AutoSize = True Caption = 'grpInfoForGDB' - ClientHeight = 106 + ClientHeight = 98 ClientWidth = 697 - TabOrder = 1 + TabOrder = 2 object chkUseLineInfoUnit: TCheckBox AnchorSideLeft.Control = grpInfoForGDB AnchorSideTop.Control = dropDbgSymbolType @@ -45,8 +45,8 @@ AnchorSideRight.Control = grpInfoForGDB AnchorSideRight.Side = asrBottom Left = 6 - Height = 21 - Top = 31 + Height = 19 + Top = 29 Width = 691 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 @@ -60,8 +60,8 @@ AnchorSideRight.Control = grpInfoForGDB AnchorSideRight.Side = asrBottom Left = 6 - Height = 21 - Top = 55 + Height = 19 + Top = 51 Width = 691 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 3 @@ -75,8 +75,8 @@ AnchorSideRight.Control = grpInfoForGDB AnchorSideRight.Side = asrBottom Left = 6 - Height = 21 - Top = 79 + Height = 19 + Top = 73 Width = 691 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 3 @@ -89,13 +89,13 @@ AnchorSideLeft.Side = asrBottom AnchorSideRight.Control = grpInfoForGDB AnchorSideRight.Side = asrBottom - Left = 122 - Height = 25 + Left = 113 + Height = 23 Top = 3 - Width = 572 + Width = 581 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 3 - ItemHeight = 0 + ItemHeight = 15 Style = csDropDownList TabOrder = 0 end @@ -105,8 +105,8 @@ AnchorSideTop.Side = asrCenter Left = 6 Height = 15 - Top = 8 - Width = 110 + Top = 7 + Width = 101 BorderSpacing.Around = 6 Caption = 'lblDbgSymbolType' ParentColor = False @@ -119,19 +119,19 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 121 - Top = 269 + Height = 114 + Top = 255 Width = 701 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 5 Caption = 'grpOtherDebuggingInfo' - ClientHeight = 102 + ClientHeight = 94 ClientWidth = 697 - TabOrder = 2 + TabOrder = 3 object chkUseHeaptrc: TCheckBox Left = 6 - Height = 21 + Height = 19 Top = 3 Width = 691 Align = alTop @@ -147,13 +147,13 @@ AnchorSideRight.Control = grpOtherDebuggingInfo AnchorSideRight.Side = asrBottom Left = 6 - Height = 21 - Top = 51 + Height = 19 + Top = 47 Width = 691 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 3 Caption = 'chkGenGProfCode' - TabOrder = 1 + TabOrder = 2 end object chkSymbolsStrip: TCheckBox AnchorSideLeft.Control = chkGenGProfCode @@ -162,32 +162,32 @@ AnchorSideRight.Control = grpOtherDebuggingInfo AnchorSideRight.Side = asrBottom Left = 6 - Height = 21 - Top = 75 + Height = 19 + Top = 69 Width = 691 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 3 BorderSpacing.Bottom = 6 Caption = 'chkSymbolsStrip' - TabOrder = 2 + TabOrder = 3 end object chkTrashVariables: TCheckBox AnchorSideLeft.Control = chkUseHeaptrc AnchorSideTop.Control = chkUseHeaptrc AnchorSideTop.Side = asrBottom Left = 6 - Height = 21 - Top = 27 - Width = 136 + Height = 19 + Top = 25 + Width = 115 BorderSpacing.Top = 3 Caption = 'chkTrashVariables' - TabOrder = 3 + TabOrder = 1 end end object grpChecks: TGroupBox AnchorSideBottom.Side = asrBottom Left = 0 - Height = 100 + Height = 95 Top = 0 Width = 701 Align = alTop @@ -197,14 +197,14 @@ ChildSizing.TopBottomSpacing = 6 ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 - ClientHeight = 81 + ClientHeight = 75 ClientWidth = 697 - TabOrder = 3 + TabOrder = 0 object chkChecksIO: TCheckBox Left = 6 - Height = 21 + Height = 19 Top = 6 - Width = 103 + Width = 89 BorderSpacing.Left = 6 Caption = 'chkChecksIO' TabOrder = 0 @@ -214,9 +214,9 @@ AnchorSideTop.Control = chkChecksIO AnchorSideTop.Side = asrBottom Left = 6 - Height = 21 - Top = 30 - Width = 131 + Height = 19 + Top = 28 + Width = 110 BorderSpacing.Top = 3 Caption = 'chkChecksRange' TabOrder = 1 @@ -226,9 +226,9 @@ AnchorSideTop.Control = chkChecksRange AnchorSideTop.Side = asrBottom Left = 6 - Height = 21 - Top = 54 - Width = 143 + Height = 19 + Top = 50 + Width = 125 BorderSpacing.Top = 3 BorderSpacing.Bottom = 6 Caption = 'chkChecksOverflow' @@ -238,10 +238,10 @@ AnchorSideLeft.Control = chkChecksIO AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = chkChecksIO - Left = 179 - Height = 21 + Left = 165 + Height = 19 Top = 6 - Width = 126 + Width = 105 BorderSpacing.Left = 70 Caption = 'chkChecksStack' TabOrder = 3 @@ -249,20 +249,20 @@ object chkVerifyObjMethodCall: TCheckBox AnchorSideLeft.Control = chkChecksStack AnchorSideTop.Control = chkChecksRange - Left = 179 - Height = 21 - Top = 30 - Width = 168 + Left = 165 + Height = 19 + Top = 28 + Width = 150 Caption = 'chkVerifyObjMethodCall' TabOrder = 4 end object chkAssertion: TCheckBox AnchorSideLeft.Control = chkVerifyObjMethodCall AnchorSideTop.Control = chkChecksOverflow - Left = 179 - Height = 21 - Top = 54 - Width = 105 + Left = 165 + Height = 19 + Top = 50 + Width = 88 Caption = 'chkAssertion' TabOrder = 5 end diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_debugging_options.pas lazarus-1.6+dfsg/ide/frames/compiler_debugging_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_debugging_options.pas 2013-07-29 07:21:18.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_debugging_options.pas 2015-03-10 13:17:19.000000000 +0000 @@ -34,7 +34,7 @@ procedure chkDebugGDBChange(Sender: TObject); public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_messages_options.pas lazarus-1.6+dfsg/ide/frames/compiler_messages_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_messages_options.pas 2014-07-20 20:02:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_messages_options.pas 2015-06-02 23:56:03.000000000 +0000 @@ -6,8 +6,8 @@ uses Classes, SysUtils, FileUtil, LazFileCache, LazLoggerBase, ListFilterEdit, - StdCtrls, CheckLst, Dialogs, IDEOptionsIntf, IDEMsgIntf, IDEExternToolIntf, - MacroIntf, IDEDialogs, CompOptsIntf, CodeToolsFPCMsgs, CompilerOptions, + StdCtrls, CheckLst, Dialogs, IDEOptionsIntf, IDEExternToolIntf, + IDEDialogs, CompOptsIntf, CodeToolsFPCMsgs, CompilerOptions, LazarusIDEStrConsts, etFPCMsgParser; type @@ -33,7 +33,7 @@ destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -50,7 +50,7 @@ MsgId: Integer; begin if (Index < 0) or (Index >= chklistCompMsg.Items.Count) then exit; - MsgId:=Integer(PtrUInt(Pointer(chklistCompMsg.Items.Objects[Index]))); + MsgId:=Integer({%H-}PtrUInt(Pointer(chklistCompMsg.Items.Objects[Index]))); if MsgId<=0 then exit; if chklistCompMsg.Checked[Index] then begin // show message, this is the default @@ -65,7 +65,7 @@ begin Result:=true; if TempMessages=nil then exit; - MsgId:=Integer(PtrUInt(Pointer(Item))); + MsgId:=Integer({%H-}PtrUInt(Pointer(Item))); if MsgId<=0 then exit; Result:=TempMessages[MsgId]<>cfvHide; end; @@ -80,7 +80,7 @@ InitIDEFileDialog(OpenDialog); OpenDialog.Title:=lisChooseAnFPCMessageFile; OpenDialog.Options:=OpenDialog.Options+[ofFileMustExist]; - OpenDialog.Filter:=lisFPCMessageFile+' (*.msg)|*.msg|'+dlgAllFiles+'|'+ + OpenDialog.Filter:=dlgFilterFPCMessageFile+' (*.msg)|*.msg|'+dlgFilterAll+'|'+ GetAllFilesMask; if OpenDialog.Execute then MsgFileEdit.Text:=OpenDialog.FileName; @@ -150,7 +150,7 @@ else continue; end; s+=': '+Item.Pattern; - editMsgFilter.Items.AddObject(s,TObject(Pointer(PtrUInt(Item.ID)))); + editMsgFilter.Items.AddObject(s,TObject({%H-}Pointer(PtrUInt(Item.ID)))); end; finally FPCMsgFilePool.UnloadFile(FPCMsgFile); diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_modematrix.lfm lazarus-1.6+dfsg/ide/frames/compiler_modematrix.lfm --- lazarus-1.4.4+dfsg/ide/frames/compiler_modematrix.lfm 2014-09-25 21:39:07.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_modematrix.lfm 2015-10-20 17:20:11.000000000 +0000 @@ -2,9 +2,9 @@ Left = 0 Height = 429 Top = 0 - Width = 550 + Width = 614 ClientHeight = 429 - ClientWidth = 550 + ClientWidth = 614 TabOrder = 0 DesignLeft = 414 DesignTop = 101 @@ -12,7 +12,7 @@ Left = 0 Height = 26 Top = 0 - Width = 550 + Width = 614 ButtonHeight = 25 Caption = 'BMMatrixToolBar' EdgeBorders = [] @@ -28,7 +28,7 @@ ShowHint = True end object BMMMoveDownButton: TToolButton - Left = 24 + Left = 26 Top = 0 Caption = 'Down' OnClick = BMMMoveDownButtonClick @@ -36,7 +36,7 @@ ShowHint = True end object BMMUndoButton: TToolButton - Left = 74 + Left = 79 Top = 0 Caption = 'Undo' OnClick = BMMUndoButtonClick @@ -44,7 +44,7 @@ ShowHint = True end object BMMRedoToolButton: TToolButton - Left = 111 + Left = 120 Top = 0 Caption = 'Redo' OnClick = BMMRedoToolButtonClick @@ -52,7 +52,7 @@ ShowHint = True end object BMMDeleteButton: TToolButton - Left = 385 + Left = 555 Top = 0 Caption = 'Delete' OnClick = BMMDeleteButtonClick @@ -60,28 +60,31 @@ ShowHint = True end object MoveSepToolButton: TToolButton - Left = 64 + Left = 69 + Height = 25 Top = 0 Width = 10 Caption = 'MoveSepToolButton' Style = tbsSeparator end object DoSepToolButton: TToolButton - Left = 148 + Left = 159 + Height = 25 Top = 0 Width = 10 Caption = 'DoSepToolButton' Style = tbsSeparator end - object AddOtherSepToolButton: TToolButton - Left = 375 + object SystemEncodingSepToolButton: TToolButton + Left = 545 + Height = 25 Top = 0 Width = 10 - Caption = 'AddOtherSepToolButton' + Caption = 'SystemEncodingSepToolButton' Style = tbsSeparator end object BMMAddOtherButton: TToolButton - Left = 297 + Left = 319 Top = 0 Caption = 'Add Other' DropdownMenu = BMMAddOtherPopupMenu @@ -89,19 +92,36 @@ Style = tbsDropDown end object BMMAddLclWidgetButton: TToolButton - Left = 158 + Left = 169 Top = 0 Caption = 'Add LCLWidgetType' OnClick = BMMAddLclWidgetButtonClick Style = tbsDropDown end object LCLMacroSepToolButton: TToolButton - Left = 287 + Left = 309 + Height = 25 Top = 0 Width = 10 Caption = 'LCLMacroSepToolButton' Style = tbsSeparator end + object BMMSystemEncodingButton: TToolButton + Left = 411 + Top = 0 + Caption = 'Use system encoding' + OnClick = BMMSystemEncodingButtonClick + ParentShowHint = False + ShowHint = True + end + object AddOtherSepToolButton: TToolButton + Left = 401 + Height = 25 + Top = 0 + Width = 10 + Caption = 'AddOtherSepToolButton' + Style = tbsSeparator + end end object BMMAddOtherPopupMenu: TPopupMenu left = 240 diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_modematrix.pas lazarus-1.6+dfsg/ide/frames/compiler_modematrix.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_modematrix.pas 2014-10-30 19:49:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_modematrix.pas 2015-10-20 17:20:11.000000000 +0000 @@ -61,9 +61,11 @@ BMMNewOutDirMenuItem: TMenuItem; MoveSepToolButton: TToolButton; DoSepToolButton: TToolButton; - AddOtherSepToolButton: TToolButton; + SystemEncodingSepToolButton: TToolButton; BMMAddLclWidgetButton: TToolButton; LCLMacroSepToolButton: TToolButton; + BMMSystemEncodingButton: TToolButton; + AddOtherSepToolButton: TToolButton; procedure BMMDeleteButtonClick(Sender: TObject); procedure BMMMoveDownButtonClick(Sender: TObject); procedure BMMMoveUpButtonClick(Sender: TObject); @@ -83,6 +85,7 @@ procedure GridShowHint(Sender: TObject; HintInfo: PHintInfo); procedure OnAddMacroMenuItemClick(Sender: TObject); procedure OnAddLCLWidgetTypeClick(Sender: TObject); + procedure BMMSystemEncodingButtonClick(Sender: TObject); private FDialog: TAbstractOptionsEditorDialog; FErrorColor: TColor; @@ -101,6 +104,10 @@ fCaptionPatternMacroValue: string; procedure AddLCLWidgetTypeValues(ParentMenu: TPopupMenu; Mcr: TLazBuildMacro); procedure AddMacroValues(ParentMI: TMenuItem; Mcr: TLazBuildMacro); + function ActiveModeAsText: string; + function CheckAndUpdateSystemEncoding(UpdateIt: Boolean; out WasUpdated: Boolean): Boolean; + function HasSystemEncoding: Boolean; + function SupportSystemEncoding: Boolean; procedure DoWriteSettings; procedure FillMenus; procedure MoveRow(Direction: integer); @@ -160,6 +167,9 @@ implementation +const + DisableUTF8RTL = '-dDisableUTF8RTL'; + function BuildMatrixOptionTypeCaption(Typ: TBuildMatrixOptionType): string; begin case Typ of @@ -531,6 +541,11 @@ BMMAddOtherPopupMenu.PopUp(p.x,p.y); end; +procedure TCompOptModeMatrixFrame.BMMSystemEncodingButtonClick(Sender: TObject); +begin + SupportSystemEncoding; +end; + procedure TCompOptModeMatrixFrame.GridEditingDone(Sender: TObject); begin //DebugLn(['TFrame1.GridEditingDone ']); @@ -727,26 +742,20 @@ Result:=AddMatrixTarget(Grid.Matrix,StorageGroup); end; +function TCompOptModeMatrixFrame.ActiveModeAsText: string; +begin + if EnvironmentOptions.UseBuildModes then + Result:=Grid.Modes[Grid.ActiveMode].Caption + else + Result:=LazProject.BuildModes[0].GetCaption; +end; + procedure TCompOptModeMatrixFrame.CreateNewOption(aTyp, aValue: string); var aRow: Integer; MatRow: TGroupedMatrixRow; Group: TGroupedMatrixGroup; NewRow: TGroupedMatrixValue; - - procedure CreateOption; - var - Capt: String; - begin - if aTyp='' then - aTyp:=Grid.TypeColumn.PickList.Names[0]; - if EnvironmentOptions.UseBuildModes then - Capt:=Grid.Modes[Grid.ActiveMode].Caption - else - Capt:=LazProject.BuildModes[0].GetCaption; - NewRow:=Grid.Matrix.AddValue(Group,Capt,aTyp,aValue,CreateBuildMatrixOptionGUID); - end; - begin aRow:=Grid.Row; if aRow<Grid.FixedRows then aRow:=Grid.FixedRows; @@ -754,6 +763,8 @@ Grid.MatrixChanging; try Grid.StoreUndo; + if aTyp='' then + aTyp:=Grid.TypeColumn.PickList.Names[0]; MatRow:=Grid.Matrix[aRow-1]; //debugln(['TCompOptModeMatrix.CreateNewOption ',DbgSName(MatRow),' ',MatRow.AsString]); if MatRow is TGroupedMatrixGroup then begin @@ -768,11 +779,13 @@ end; end; // add option as first item of Group - CreateOption; + NewRow:=Grid.Matrix.AddValue(Group, ActiveModeAsText, aTyp, aValue, + CreateBuildMatrixOptionGUID); end else begin // add behind current value Group:=MatRow.Group; - CreateOption; + NewRow:=Grid.Matrix.AddValue(Group, ActiveModeAsText, aTyp, aValue, + CreateBuildMatrixOptionGUID); Group.Move(Group.Count-1,MatRow.GetGroupIndex+1); end; Grid.Matrix.RebuildRows; @@ -870,10 +883,9 @@ procedure TCompOptModeMatrixFrame.UpdateGridStorageGroups; var - i: Integer; + i, j: Integer; MatRow: TGroupedMatrixRow; GroupRow: TGroupedMatrixGroup; - j: Integer; begin fGroupIDE:=nil; fGroupProject:=nil; @@ -902,6 +914,70 @@ DoWriteSettings; end; +function TCompOptModeMatrixFrame.CheckAndUpdateSystemEncoding(UpdateIt: Boolean; + out WasUpdated: Boolean): Boolean; +// Returns True if the support already was there. +var + GrpIndex: Integer; + Target: TGroupedMatrixGroup; + i: Integer; + ValueRow: TGroupedMatrixValue; + AMode: String; +begin + Result := False; + WasUpdated := False; + for GrpIndex:=0 to GroupProject.Count-1 do + begin + Target := TGroupedMatrixGroup(GroupProject[GrpIndex]); + if not (Target is TGroupedMatrixGroup) then + exit; + for i:=0 to Target.Count-1 do + begin + ValueRow := TGroupedMatrixValue(Target[i]); + if not (ValueRow is TGroupedMatrixValue) then + exit; + Result := (ValueRow.Typ = 'Custom') and (ValueRow.Value = DisableUTF8RTL); + if Result then + begin + AMode := ActiveModeAsText; + Result := (ValueRow.ModeList.IndexOf(AMode)>=0); + if (not Result) and UpdateIt then + begin + Grid.MatrixChanging; + try + ValueRow.ModeList.Add(AMode); + finally + Grid.MatrixChanged; + end; + WasUpdated := True; + end; + Exit; + end; + end; + end; +end; + +function TCompOptModeMatrixFrame.HasSystemEncoding: Boolean; +var + Dummy: Boolean; +begin + Result := CheckAndUpdateSystemEncoding(False, Dummy); +end; + +function TCompOptModeMatrixFrame.SupportSystemEncoding: Boolean; +// Add a compiler flag to use system encoding for string. +// Returns true if the flag was really added and did not exist earlier. +var + WasUpdated: Boolean; +begin + Result := not CheckAndUpdateSystemEncoding(True, WasUpdated); + if Result and not WasUpdated then + begin + CreateNewOption(BuildMatrixOptionTypeCaption(bmotCustom), DisableUTF8RTL); + UpdateModes; + end; +end; + procedure TCompOptModeMatrixFrame.UpdateModes(UpdateGrid: boolean); var i: Integer; @@ -1136,10 +1212,12 @@ BMMMoveDownButton.ImageIndex:=IDEImages.LoadImage(16,'arrow_down'); BMMMoveDownButton.Hint:=lisMMMoveSelectedItemDown; - BMMUndoButton.Caption:=lisUndo; + BMMUndoButton.ShowCaption:=false; + BMMUndoButton.ImageIndex:=IDEImages.LoadImage(16,'menu_undo'); BMMUndoButton.Hint:=lisMMUndoLastChangeToThisGrid; - BMMRedoToolButton.Caption:=lisRedo; + BMMRedoToolButton.ShowCaption:=false; + BMMRedoToolButton.ImageIndex:=IDEImages.LoadImage(16,'menu_redo'); BMMRedoToolButton.Hint:=lisMMRedoLastUndoToThisGrid; BMMDeleteButton.Caption:=lisDelete; @@ -1158,6 +1236,9 @@ BMMAddLclWidgetButton.Caption:=Format(fCaptionPatternMacroName,['LCLWidgetType']); BMMAddOtherButton.Caption:=lisAdd; + BMMSystemEncodingButton.Caption:=lisMMUseSystemEncoding; + BMMSystemEncodingButton.Hint:=lisMMUseSystemEncodingHint; + UpdateButtons; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_other_options.lfm lazarus-1.6+dfsg/ide/frames/compiler_other_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/compiler_other_options.lfm 2013-08-23 17:38:35.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_other_options.lfm 2015-10-20 17:20:11.000000000 +0000 @@ -1,32 +1,29 @@ object CompilerOtherOptionsFrame: TCompilerOtherOptionsFrame Left = 0 - Height = 373 + Height = 407 Top = 0 - Width = 480 - ClientHeight = 373 - ClientWidth = 480 + Width = 521 + ClientHeight = 407 + ClientWidth = 521 TabOrder = 0 - DesignLeft = 434 - DesignTop = 276 + DesignLeft = 444 + DesignTop = 275 object grpConditionals: TGroupBox - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom Left = 0 - Height = 166 - Top = 0 - Width = 480 - Align = alClient - Anchors = [akTop, akLeft, akRight] + Height = 194 + Top = 213 + Width = 521 + Align = alBottom Caption = 'grpConditionals' - ClientHeight = 147 - ClientWidth = 476 + ClientHeight = 176 + ClientWidth = 513 TabOrder = 0 inline CondSynEdit: TSynEdit AnchorSideRight.Side = asrBottom Left = 0 - Height = 127 + Height = 154 Top = 0 - Width = 476 + Width = 513 Align = alClient Font.Height = 9 Font.Name = '-misc-dejavu sans mono-*-*-*-*-*-*-*-*-*-*-iso10646-1' @@ -542,6 +539,7 @@ ShiftMask = [ssShift, ssAlt, ssCtrl] Command = emcMouseLink end> + MouseTextActions = <> MouseSelActions = < item ClickDir = cdDown @@ -551,7 +549,6 @@ 'CondSynEdit' ) VisibleSpecialChars = [vscSpace, vscTabAtLast] - SelectedColor.FrameEdges = sfeAround SelectedColor.BackPriority = 50 SelectedColor.ForePriority = 50 SelectedColor.FramePriority = 50 @@ -559,23 +556,17 @@ SelectedColor.ItalicPriority = 50 SelectedColor.UnderlinePriority = 50 SelectedColor.StrikeOutPriority = 50 - IncrementColor.FrameEdges = sfeAround - HighlightAllColor.FrameEdges = sfeAround BracketHighlightStyle = sbhsBoth BracketMatchColor.Background = clNone BracketMatchColor.Foreground = clNone - BracketMatchColor.FrameEdges = sfeAround BracketMatchColor.Style = [fsBold] FoldedCodeColor.Background = clNone FoldedCodeColor.Foreground = clGray FoldedCodeColor.FrameColor = clGray - FoldedCodeColor.FrameEdges = sfeAround MouseLinkColor.Background = clNone MouseLinkColor.Foreground = clBlue - MouseLinkColor.FrameEdges = sfeAround LineHighlightColor.Background = clNone LineHighlightColor.Foreground = clNone - LineHighlightColor.FrameEdges = sfeAround OnChange = CondSynEditChange OnProcessUserCommand = CondSynEditProcessUserCommand inline SynLeftGutterPartList1: TSynGutterPartList @@ -588,7 +579,6 @@ MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone - MarkupInfo.FrameEdges = sfeAround DigitCount = 2 ShowOnlyLineNumbersMultiplesOf = 1 ZeroStart = False @@ -605,7 +595,6 @@ MouseActions = <> MarkupInfo.Background = clWhite MarkupInfo.Foreground = clGray - MarkupInfo.FrameEdges = sfeAround end object SynGutterCodeFolding1: TSynGutterCodeFolding MouseActions = < @@ -636,7 +625,6 @@ end> MarkupInfo.Background = clNone MarkupInfo.Foreground = clGray - MarkupInfo.FrameEdges = sfeAround MouseActionsExpanded = < item ClickCount = ccAny @@ -663,9 +651,9 @@ end object CondStatusbar: TStatusBar Left = 0 - Height = 20 - Top = 127 - Width = 476 + Height = 22 + Top = 154 + Width = 513 Panels = < item Width = 80 @@ -683,66 +671,91 @@ Cursor = crVSplit Left = 0 Height = 5 - Top = 166 - Width = 480 + Top = 208 + Width = 521 Align = alBottom ResizeAnchor = akBottom end object grpCustomOptions: TGroupBox - AnchorSideRight.Side = asrBottom Left = 0 - Height = 202 - Top = 171 - Width = 480 - Align = alBottom + Height = 208 + Top = 0 + Width = 521 + Align = alClient Caption = 'grpCustomOptions' - ClientHeight = 183 - ClientWidth = 476 + ClientHeight = 190 + ClientWidth = 513 TabOrder = 2 object memoCustomOptions: TMemo AnchorSideLeft.Control = grpCustomOptions - AnchorSideRight.Control = btnAllOptions AnchorSideBottom.Control = grpCustomOptions AnchorSideBottom.Side = asrBottom Left = 0 - Height = 179 + Height = 186 Top = 4 - Width = 375 + Width = 357 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Right = 6 + OnChange = memoCustomOptionsChange + ParentShowHint = False ScrollBars = ssAutoBoth + ShowHint = True TabOrder = 0 WordWrap = False end object btnAllOptions: TBitBtn - AnchorSideRight.Control = grpCustomOptions + AnchorSideLeft.Control = memoCustomOptions + AnchorSideLeft.Side = asrBottom + AnchorSideRight.Control = btnDefines AnchorSideRight.Side = asrBottom - Left = 381 - Height = 26 + Left = 363 + Height = 29 Top = 4 - Width = 95 - Anchors = [akTop, akRight] + Width = 150 + Anchors = [akTop, akLeft, akRight] AutoSize = True Caption = 'All options ...' OnClick = btnAllOptionsClick + ParentShowHint = False + ShowHint = True TabOrder = 1 end object btnDefines: TBitBtn AnchorSideLeft.Control = btnAllOptions AnchorSideTop.Control = btnAllOptions AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = btnAllOptions AnchorSideRight.Side = asrBottom - Left = 381 - Height = 26 - Top = 36 - Width = 95 + Left = 363 + Height = 29 + Top = 39 + Width = 150 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 Caption = 'Defines ...' OnClick = btnDefinesClick + ParentShowHint = False + ShowHint = True TabOrder = 2 end + object btnFcUTF8: TBitBtn + AnchorSideLeft.Control = btnDefines + AnchorSideTop.Control = btnDefines + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = btnDefines + AnchorSideRight.Side = asrBottom + Left = 363 + Height = 29 + Top = 81 + Width = 150 + Anchors = [akTop, akLeft, akRight] + AutoSize = True + BorderSpacing.Top = 13 + Caption = 'Add -FcUTF8' + OnClick = btnFcUTF8Click + ParentShowHint = False + ShowHint = True + TabOrder = 3 + end end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_other_options.pas lazarus-1.6+dfsg/ide/frames/compiler_other_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_other_options.pas 2014-07-23 19:22:38.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_other_options.pas 2015-10-27 17:30:48.000000000 +0000 @@ -29,10 +29,10 @@ uses Classes, SysUtils, math, AVL_Tree, LazLogger, Forms, Controls, Graphics, - Dialogs, StdCtrls, LCLProc, ComCtrls, LCLType, ExtCtrls, Buttons, + Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, LCLType, LazUTF8, CodeToolsCfgScript, KeywordFuncLists, LazarusIDEStrConsts, - IDEOptionsIntf, CompOptsIntf, IDECommands, LazIDEIntf, Project, PackageDefs, - CompilerOptions, Compiler, AllCompilerOptions, CustomDefines, + IDEOptionsIntf, CompOptsIntf, IDECommands, PackageDefs, + CompilerOptions, Compiler, AllCompilerOptions, DefinesGui, EditorOptions, SynEdit, SynEditKeyCmds, SynCompletion, SourceSynEditor; type @@ -42,6 +42,7 @@ TCompilerOtherOptionsFrame = class(TAbstractIDEOptionsEditor) btnDefines: TBitBtn; btnAllOptions: TBitBtn; + btnFcUTF8: TBitBtn; grpCustomOptions: TGroupBox; grpConditionals: TGroupBox; CondStatusbar: TStatusBar; @@ -50,15 +51,18 @@ memoCustomOptions: TMemo; procedure btnAllOptionsClick(Sender: TObject); procedure btnDefinesClick(Sender: TObject); + procedure btnFcUTF8Click(Sender: TObject); procedure CondSynEditChange(Sender: TObject); - procedure CondSynEditKeyPress(Sender: TObject; var Key: char); + procedure CondSynEditKeyPress(Sender: TObject; var {%H-}Key: char); procedure CondSynEditProcessUserCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); - procedure CondSynEditStatusChange(Sender: TObject; Changes: TSynStatusChanges); + var Command: TSynEditorCommand; var {%H-}AChar: TUTF8Char; {%H-}Data: pointer); + procedure CondSynEditStatusChange(Sender: TObject; {%H-}Changes: TSynStatusChanges); + procedure memoCustomOptionsChange(Sender: TObject); private FCompOptions: TBaseCompilerOptions; FIdleConnected: Boolean; FIsPackage: boolean; + FLocalOtherDefines: TStrings; FCompletionHistory: TStrings; FCompletionValues: TStrings; FDefaultVariables: TCTCfgScriptVariables; @@ -76,18 +80,18 @@ function GetCondCursorWord: string; procedure UpdateMessages; procedure UpdateStatusBar; - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure OnSynCompletionCancel(Sender: TObject); procedure OnSynCompletionExecute(Sender: TObject); procedure OnSynCompletionKeyCompletePrefix(Sender: TObject); procedure OnSynCompletionKeyDelete(Sender: TObject); - procedure OnSynCompletionKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure OnSynCompletionKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure OnSynCompletionKeyNextChar(Sender: TObject); procedure OnSynCompletionKeyPrevChar(Sender: TObject); procedure OnSynCompletionSearchPosition(var Position: integer); - procedure OnSynCompletionUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char); - procedure OnSynCompletionValidate(Sender: TObject; KeyChar: TUTF8Char; - Shift: TShiftState); + procedure OnSynCompletionUTF8KeyPress(Sender: TObject; var {%H-}UTF8Key: TUTF8Char); + procedure OnSynCompletionValidate(Sender: TObject; {%H-}KeyChar: TUTF8Char; + {%H-}Shift: TShiftState); protected procedure SetVisible(Value: Boolean); override; public @@ -95,10 +99,11 @@ destructor Destroy; override; function Check: Boolean; override; function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; + function NoUtf8RtlSupportYet: Boolean; property StatusMessage: string read FStatusMessage write SetStatusMessage; property DefaultVariables: TCTCfgScriptVariables read FDefaultVariables; property CompletionValues: TStrings read FCompletionValues; @@ -111,6 +116,9 @@ {$R *.lfm} +const + FcUTF8 = '-FcUTF8'; + { TCompilerOtherOptionsFrame } procedure TCompilerOtherOptionsFrame.btnAllOptionsClick(Sender: TObject); @@ -142,19 +150,19 @@ procedure TCompilerOtherOptionsFrame.btnDefinesClick(Sender: TObject); var - EditForm: TCustomDefinesForm; + EditForm: TDefinesGuiForm; begin - EditForm := TCustomDefinesForm.Create(Nil); + EditForm := TDefinesGuiForm.Create(Nil); try try EditForm.OptionsReader := FOptionsReader; EditForm.OptionsThread := FOptionsThread; EditForm.CustomOptions := memoCustomOptions.Lines; - EditForm.DefinesCheckList.Items.Assign(Project1.CustomDefines); + EditForm.DefinesCheckList.Items.Assign(FLocalOtherDefines); EditForm.UseComments := FUseComments; if EditForm.ShowModal = mrOK then begin - Project1.CustomDefines.Assign(EditForm.DefinesCheckList.Items); + FLocalOtherDefines.Assign(EditForm.DefinesCheckList.Items); // Synchronize with custom options memo EditForm.ToCustomOptions(memoCustomOptions.Lines); memoCustomOptions.Invalidate; @@ -168,8 +176,24 @@ end; end; +procedure TCompilerOtherOptionsFrame.btnFcUTF8Click(Sender: TObject); +begin + if NoUtf8RtlSupportYet then + memoCustomOptions.Lines.Add(FcUTF8); +end; + +function TCompilerOtherOptionsFrame.NoUtf8RtlSupportYet: Boolean; +begin + Result := Pos(FcUTF8, memoCustomOptions.Text) = 0; +end; + // Events dealing with conditionals SynEdit : +procedure TCompilerOtherOptionsFrame.memoCustomOptionsChange(Sender: TObject); +begin + btnFcUTF8.Enabled := NoUtf8RtlSupportYet; +end; + procedure TCompilerOtherOptionsFrame.CondSynEditChange(Sender: TObject); begin UpdateStatusBar; @@ -650,6 +674,7 @@ constructor TCompilerOtherOptionsFrame.Create(TheOwner: TComponent); begin inherited Create(TheOwner); + FLocalOtherDefines:=TStringList.Create; FCompletionValues:=TStringList.Create; FCompletionHistory:=TStringList.Create; fDefaultVariables:=TCTCfgScriptVariables.Create; @@ -679,10 +704,11 @@ IdleConnected:=false; FreeAndNil(fOptionsThread); FreeAndNil(FOptionsReader); + FreeAndNil(fEngine); + FreeAndNil(fDefaultVariables); FreeAndNil(FCompletionHistory); FreeAndNil(FCompletionValues); - FreeAndNil(fDefaultVariables); - FreeAndNil(fEngine); + FreeAndNil(FLocalOtherDefines); inherited Destroy; end; @@ -693,7 +719,7 @@ function TCompilerOtherOptionsFrame.GetTitle: string; begin - Result := dlgCOOther; + Result := lisCustomOptions3; end; procedure TCompilerOtherOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); @@ -703,6 +729,8 @@ grpConditionals.Caption := lisConditionals; btnAllOptions.Caption := lisDlgAllOptions; btnDefines.Caption := lisDlgDefines; + btnFcUTF8.Caption := lisAddFcUTF8; + btnFcUTF8.Hint := lisAddFcUTF8Hint; end; procedure TCompilerOtherOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); @@ -730,7 +758,9 @@ // Custom Options memoCustomOptions.Text := FCompOptions.CustomOptions; + memoCustomOptions.OnChange(Nil); FUseComments := FCompOptions.UseCommentsInCustomOptions; + FLocalOtherDefines.Assign(FCompOptions.OtherDefines); UpdateStatusBar; end; @@ -741,11 +771,13 @@ begin //debugln(['TCompilerOtherOptionsFrame.WriteSettings ',DbgSName(AOptions)]); CurOptions := AOptions as TBaseCompilerOptions; - with CurOptions do + CurOptions.Conditionals := CondSynEdit.Lines.Text; + CurOptions.CustomOptions := memoCustomOptions.Text; + CurOptions.UseCommentsInCustomOptions := FUseComments; + if not CurOptions.OtherDefines.Equals(FLocalOtherDefines) then begin - Conditionals := CondSynEdit.Lines.Text; - CustomOptions := memoCustomOptions.Text; - UseCommentsInCustomOptions := FUseComments; + CurOptions.OtherDefines.Assign(FLocalOtherDefines); + CurOptions.IncreaseChangeStamp; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_parsing_options.pas lazarus-1.6+dfsg/ide/frames/compiler_parsing_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_parsing_options.pas 2014-11-18 14:09:23.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_parsing_options.pas 2015-03-10 13:17:19.000000000 +0000 @@ -21,7 +21,7 @@ FIsPackage: boolean; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_path_options.pas lazarus-1.6+dfsg/ide/frames/compiler_path_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_path_options.pas 2015-01-23 22:03:06.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_path_options.pas 2015-10-27 17:30:50.000000000 +0000 @@ -5,10 +5,10 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, LazFileCache, Controls, Dialogs, - Graphics, Buttons, StdCtrls, LCLType, IDEOptionsIntf, MacroIntf, IDEDialogs, + Classes, SysUtils, LCLProc, LazFileUtils, LazFileCache, Controls, Dialogs, + Buttons, StdCtrls, LCLType, IDEOptionsIntf, MacroIntf, IDEDialogs, CompOptsIntf, Project, CompilerOptions, LazarusIDEStrConsts, PathEditorDlg, - IDEProcs, CheckCompilerOpts, ShowCompilerOpts, PackageDefs, ImExportCompilerOpts; + IDEProcs, CheckCompilerOpts, ShowCompilerOpts, ImExportCompilerOpts; type @@ -356,7 +356,7 @@ p: Integer; CurPath: String; Duplicates: TStringList; - i: PtrInt; + i: PtrUInt; OldUnparsedSrcPath: String; NewUnparsedSrcPath: String; j: Integer; @@ -379,7 +379,7 @@ begin if (SearchDirectoryInSearchPath(NewParsedUnitPath,CurPath)>0) or (CompareFilenames(BaseDir,AppendPathDelim(CurPath))=0) then - Duplicates.AddObject(CurPath,TObject(Pointer(i))); + Duplicates.AddObject(CurPath,TObject({%H-}Pointer(i))); end; inc(i); until p>length(NewParsedSrcPath); @@ -640,22 +640,24 @@ btnCheck.ModalResult := mrNone; btnCheck.OnClick := @DoCheck; btnCheck.LoadGlyphFromStock(idButtonYes); - // Import + ADialog.AddButtonSeparator; - btnLoadSave := CreateButton(lisImport); - btnLoadSave.OnClick := @DoImport; - btnLoadSave.Hint := dlgCOLoadSaveHint; - btnLoadSave.LoadGlyphFromStock(idButtonOpen); + // Export btnExport := CreateButton(lisExport); btnExport.OnClick := @DoExport; btnExport.Hint := dlgCOLoadSaveHint; btnExport.LoadGlyphFromStock(idButtonSave); - ADialog.AddButtonSeparator; - + // Import + btnLoadSave := CreateButton(lisImport); + btnLoadSave.OnClick := @DoImport; + btnLoadSave.Hint := dlgCOLoadSaveHint; + btnLoadSave.LoadGlyphFromStock(idButtonOpen); if btnLoadSave.Glyph.Empty then btnLoadSave.LoadGlyphFromResourceName(HInstance, 'laz_save'); + ADialog.AddButtonSeparator; + chkUseAsDefault := TCheckBox(ADialog.AddControl(TCheckBox)); chkUseAsDefault.Caption := dlgCOSetAsDefault; chkUseAsDefault.ShowHint := True; diff -Nru lazarus-1.4.4+dfsg/ide/frames/compiler_verbosity_options.pas lazarus-1.6+dfsg/ide/frames/compiler_verbosity_options.pas --- lazarus-1.4.4+dfsg/ide/frames/compiler_verbosity_options.pas 2015-02-23 17:01:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/compiler_verbosity_options.pas 2015-09-27 20:32:15.000000000 +0000 @@ -18,7 +18,7 @@ grpVerbosity: TCheckGroup; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/componentpalette_options.lfm lazarus-1.6+dfsg/ide/frames/componentpalette_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/componentpalette_options.lfm 2015-01-04 19:37:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/componentpalette_options.lfm 2015-07-14 18:39:57.000000000 +0000 @@ -1,25 +1,32 @@ object CompPaletteOptionsFrame: TCompPaletteOptionsFrame Left = 0 - Height = 411 + Height = 468 Top = 0 - Width = 511 - ClientHeight = 411 - ClientWidth = 511 + Width = 589 + ClientHeight = 468 + ClientWidth = 589 TabOrder = 0 Visible = False DesignLeft = 494 DesignTop = 307 object PagesGroupBox: TGroupBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = cbPaletteVisible + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Splitter1 AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = Owner + AnchorSideBottom.Side = asrBottom Left = 0 - Height = 411 - Top = 0 - Width = 227 - Align = alLeft - Anchors = [] + Height = 440 + Top = 28 + Width = 195 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Top = 6 Caption = 'PagesGroupBox' - ClientHeight = 393 - ClientWidth = 223 + ClientHeight = 419 + ClientWidth = 191 + Constraints.MinWidth = 100 TabOrder = 0 object PagesListBox: TListBox AnchorSideLeft.Control = PagesGroupBox @@ -27,9 +34,9 @@ AnchorSideRight.Control = PageMoveUpBtn AnchorSideBottom.Control = AddPageButton Left = 1 - Height = 284 + Height = 326 Top = 0 - Width = 188 + Width = 156 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 1 BorderSpacing.Right = 6 @@ -47,9 +54,9 @@ AnchorSideTop.Side = asrBottom AnchorSideBottom.Control = ImportDividerBevel Left = 1 - Height = 23 - Top = 290 - Width = 60 + Height = 29 + Top = 332 + Width = 49 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Top = 6 @@ -63,9 +70,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = AddPageButton AnchorSideBottom.Side = asrBottom - Left = 70 - Height = 23 - Top = 290 + Left = 59 + Height = 29 + Top = 332 Width = 101 AutoSize = True BorderSpacing.Left = 9 @@ -78,7 +85,7 @@ AnchorSideLeft.Control = PageMoveUpBtn AnchorSideTop.Control = PageMoveUpBtn AnchorSideTop.Side = asrBottom - Left = 195 + Left = 163 Height = 26 Top = 135 Width = 22 @@ -93,7 +100,7 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = PagesGroupBox AnchorSideRight.Side = asrBottom - Left = 195 + Left = 163 Height = 26 Top = 102 Width = 22 @@ -105,97 +112,73 @@ ParentShowHint = False end object ImportDividerBevel: TDividerBevel - AnchorSideLeft.Control = ImportButton + AnchorSideLeft.Control = ExportButton AnchorSideTop.Side = asrBottom AnchorSideRight.Control = PagesGroupBox AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ImportButton Left = 1 - Height = 13 - Top = 319 - Width = 222 + Height = 17 + Top = 367 + Width = 190 Caption = 'Import / Export' Anchors = [akLeft, akRight, akBottom] Font.Style = [fsBold] ParentFont = False end - object RecentButton: TButton - AnchorSideLeft.Control = RecentLabel - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = RecentLabel - AnchorSideTop.Side = asrCenter - Left = 128 - Height = 25 - Hint = 'Recent files' - Top = 334 - Width = 35 - BorderSpacing.Around = 6 - Caption = '>>' - ParentShowHint = False - ShowHint = True - TabOrder = 3 - Visible = False - end - object RecentLabel: TLabel - AnchorSideLeft.Control = ImportButton - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = ImportButton - AnchorSideTop.Side = asrCenter - Left = 88 - Height = 13 - Top = 340 - Width = 34 - BorderSpacing.Left = 14 - Caption = 'Recent' - ParentColor = False - Visible = False - end object ImportButton: TBitBtn AnchorSideLeft.Control = ExportButton - AnchorSideTop.Side = asrBottom - AnchorSideBottom.Control = ExportButton - Left = 1 - Height = 23 - Top = 335 - Width = 73 - Anchors = [akLeft, akBottom] + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = ExportButton + AnchorSideTop.Side = asrCenter + AnchorSideBottom.Control = PagesGroupBox + AnchorSideBottom.Side = asrBottom + Left = 77 + Height = 29 + Top = 384 + Width = 65 AutoSize = True - BorderSpacing.Top = 3 + BorderSpacing.Left = 13 BorderSpacing.Bottom = 6 Caption = 'Import ...' OnClick = ImportButtonClick - TabOrder = 4 + TabOrder = 3 end object ExportButton: TBitBtn - AnchorSideLeft.Control = PagesGroupBox - AnchorSideTop.Side = asrBottom + AnchorSideLeft.Control = PagesListBox + AnchorSideTop.Side = asrCenter AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = PagesGroupBox AnchorSideBottom.Side = asrBottom Left = 1 - Height = 23 - Top = 364 - Width = 73 + Height = 29 + Top = 384 + Width = 63 Anchors = [akLeft, akBottom] AutoSize = True - BorderSpacing.Left = 1 - BorderSpacing.Top = 6 + BorderSpacing.Top = 3 BorderSpacing.Bottom = 6 Caption = 'Export ...' OnClick = ExportButtonClick - TabOrder = 5 + TabOrder = 4 end end object ComponentsGroupBox: TGroupBox - Left = 232 - Height = 411 + AnchorSideLeft.Control = Splitter1 + AnchorSideLeft.Side = asrBottom + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = PagesGroupBox + AnchorSideBottom.Side = asrBottom + Left = 201 + Height = 468 Top = 0 - Width = 279 - Align = alClient - Anchors = [] + Width = 388 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Left = 6 Caption = 'ComponentsGroupBox' - ClientHeight = 393 - ClientWidth = 275 + ClientHeight = 447 + ClientWidth = 384 TabOrder = 1 object ComponentsListView: TListView AnchorSideLeft.Control = ComponentsGroupBox @@ -204,9 +187,9 @@ AnchorSideBottom.Control = ComponentsGroupBox AnchorSideBottom.Side = asrBottom Left = 1 - Height = 391 + Height = 445 Top = 1 - Width = 240 + Width = 349 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Right = 5 BorderSpacing.Around = 1 @@ -254,7 +237,7 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ComponentsGroupBox AnchorSideRight.Side = asrBottom - Left = 247 + Left = 356 Height = 26 Top = 102 Width = 22 @@ -269,7 +252,7 @@ AnchorSideLeft.Control = CompMoveUpBtn AnchorSideTop.Control = CompMoveUpBtn AnchorSideTop.Side = asrBottom - Left = 247 + Left = 356 Height = 26 Top = 135 Width = 22 @@ -281,24 +264,37 @@ end end object Splitter1: TSplitter - Left = 227 - Height = 411 + AnchorSideLeft.Control = PagesGroupBox + AnchorSideLeft.Side = asrBottom + Left = 190 + Height = 468 Top = 0 Width = 5 - Anchors = [akLeft] + Align = alNone + Anchors = [] + end + object cbPaletteVisible: TCheckBox + AnchorSideTop.Side = asrBottom + Left = 1 + Height = 22 + Top = 0 + Width = 115 + BorderSpacing.Top = 6 + Caption = 'Palette is visible' + TabOrder = 3 end object ImportDialog: TOpenDialog - left = 152 - top = 376 + left = 168 + top = 432 end object ExportDialog: TSaveDialog - left = 192 - top = 376 + left = 200 + top = 432 end object PagesPopupMenu: TPopupMenu OnPopup = PagesPopupMenuPopup - left = 192 - top = 40 + left = 160 + top = 8 object RenameMenuItem: TMenuItem Caption = 'Rename' OnClick = RenameMenuItemClick diff -Nru lazarus-1.4.4+dfsg/ide/frames/componentpalette_options.pas lazarus-1.6+dfsg/ide/frames/componentpalette_options.pas --- lazarus-1.4.4+dfsg/ide/frames/componentpalette_options.pas 2015-01-04 17:41:59.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/componentpalette_options.pas 2015-07-14 18:39:57.000000000 +0000 @@ -25,10 +25,10 @@ interface uses - Classes, SysUtils, fgl, Graphics, Forms, Controls, StdCtrls, Dialogs, Buttons, + Classes, SysUtils, Graphics, Forms, Controls, StdCtrls, Dialogs, Buttons, ComCtrls, ExtCtrls, FileUtil, LCLProc, LCLType, Menus, IDEProcs, Laz2_XMLCfg, - LazConfigStorage, EnvironmentOpts, LazarusIDEStrConsts, IDEOptionsIntf, - IDEImagesIntf, DividerBevel, ComponentReg, ComponentPalette, IDEOptionDefs, + EnvironmentOpts, LazarusIDEStrConsts, IDEOptionsIntf, + IDEImagesIntf, DividerBevel, ComponentReg, IDEOptionDefs, PackageDefs; type @@ -36,16 +36,15 @@ TCompPaletteOptionsFrame = class(TAbstractIDEOptionsEditor) AddPageButton: TBitBtn; + cbPaletteVisible: TCheckBox; ImportButton: TBitBtn; ComponentsListView: TListView; CompMoveDownBtn: TSpeedButton; DeleteMenuItem: TMenuItem; RenameMenuItem: TMenuItem; PagesPopupMenu: TPopupMenu; - RecentLabel: TLabel; ExportButton: TBitBtn; ImportDividerBevel: TDividerBevel; - RecentButton: TButton; ImportDialog: TOpenDialog; PageMoveDownBtn: TSpeedButton; CompMoveUpBtn: TSpeedButton; @@ -58,16 +57,16 @@ Splitter1: TSplitter; procedure AddPageButtonClick(Sender: TObject); procedure ComponentsListViewChange(Sender: TObject; Item: TListItem; - Change: TItemChange); + {%H-}Change: TItemChange); procedure ComponentsListViewClick(Sender: TObject); procedure ComponentsListViewCustomDraw(Sender: TCustomListView; - const ARect: TRect; var DefaultDraw: Boolean); + const {%H-}ARect: TRect; var {%H-}DefaultDraw: Boolean); procedure ComponentsListViewCustomDrawItem(Sender: TCustomListView; - Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); + Item: TListItem; {%H-}State: TCustomDrawState; var {%H-}DefaultDraw: Boolean); procedure ComponentsListViewDragDrop(Sender, Source: TObject; X, Y: Integer); - procedure ComponentsListViewDragOver(Sender, Source: TObject; X, Y: Integer; - State: TDragState; var Accept: Boolean); - procedure ComponentsListViewItemChecked(Sender: TObject; Item: TListItem); + procedure ComponentsListViewDragOver(Sender, Source: TObject; {%H-}X, {%H-}Y: Integer; + {%H-}State: TDragState; var Accept: Boolean); + procedure ComponentsListViewItemChecked(Sender: TObject; {%H-}Item: TListItem); procedure ComponentsListViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure CompMoveDownBtnClick(Sender: TObject); procedure ImportButtonClick(Sender: TObject); @@ -77,9 +76,9 @@ procedure PageMoveUpBtnClick(Sender: TObject); procedure PagesListBoxDragDrop(Sender, Source: TObject; X, Y: Integer); procedure PagesListBoxDragOver(Sender, Source: TObject; X, Y: Integer; - State: TDragState; var Accept: Boolean); + {%H-}State: TDragState; var Accept: Boolean); procedure PagesListBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure PagesListBoxSelectionChange(Sender: TObject; User: boolean); + procedure PagesListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); procedure PagesPopupMenuPopup(Sender: TObject); procedure RestoreButtonClick(Sender: TObject); procedure DeleteMenuItemClick(Sender: TObject); @@ -117,6 +116,8 @@ implementation +uses MainBar; + {$R *.lfm} { TCompPaletteOptionsFrame } @@ -147,19 +148,20 @@ procedure TCompPaletteOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); begin fDialog := ADialog; + cbPaletteVisible.Caption := lisCmpPaletteVisible; // Component pages PagesGroupBox.Caption := lisCmpPages; AddPageButton.Caption := lisBtnDlgAdd; AddPageButton.LoadGlyphFromResourceName(HInstance, 'laz_add'); RestoreButton.Caption := lisCmpRestoreDefaults; - ImportDividerBevel.Caption := lisImportExport; + ImportDividerBevel.Caption := lisExportImport; ImportButton.LoadGlyphFromResourceName(HInstance, 'laz_open'); ImportButton.Caption := lisDlgImport; ExportButton.LoadGlyphFromResourceName(HInstance, 'laz_save'); ExportButton.Caption := lisDlgExport; // File dialogs ImportDialog.Title := lisImport; - ImportDialog.Filter := 'XML file (*.xml)|*.xml|All files (*)|*'; + ImportDialog.Filter := Format('%s|*.xml|%s|%s|', [dlgFilterXML, dlgFilterAll, GetAllFilesMask]); ExportDialog.Title := lisExport; ExportDialog.Filter := ImportDialog.Filter; // Components in one page @@ -185,9 +187,13 @@ end; procedure TCompPaletteOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); +var + Opts: TCompPaletteOptions; begin - fLocalOptions.Assign((AOptions as TEnvironmentOptions).ComponentPaletteOptions); - fLocalUserOrder.Options:=fLocalOptions; + Opts := (AOptions as TEnvironmentOptions).Desktop.ComponentPaletteOptions; + fLocalOptions.Assign(Opts); + fLocalUserOrder.Options := fLocalOptions; + cbPaletteVisible.Checked := Opts.Visible; ActualReadSettings; end; @@ -202,9 +208,15 @@ end; procedure TCompPaletteOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); +var + Opts: TCompPaletteOptions; begin + Opts := (AOptions as TEnvironmentOptions).Desktop.ComponentPaletteOptions; + Opts.Visible := cbPaletteVisible.Checked; + MainIDEBar.DoSetViewComponentPalette(cbPaletteVisible.Checked); if not fConfigChanged then Exit; - ActualWriteSettings((AOptions as TEnvironmentOptions).ComponentPaletteOptions); + ActualWriteSettings(Opts); + IDEComponentPalette.Update(True); IDEComponentPalette.IncChangeStamp; end; @@ -792,7 +804,7 @@ XMLConfig := OpenXML(ImportDialog.Filename); if Assigned(XMLConfig) then try - fLocalOptions.Load(XMLConfig); + fLocalOptions.Load(XMLConfig, ''); ActualReadSettings; // Read from options to GUI. ShowMessageFmt(lisSuccessfullyImported, [ImportDialog.Filename]); fConfigChanged := True; @@ -812,7 +824,7 @@ if Assigned(XMLConfig) then try ActualWriteSettings(fLocalOptions); // Write from GUI to options. - fLocalOptions.Save(XMLConfig); + fLocalOptions.Save(XMLConfig, ''); ShowMessageFmt(lisSuccessfullyExported, [ExportDialog.Filename]); finally XMLConfig.Free; diff -Nru lazarus-1.4.4+dfsg/ide/frames/desktop_options.lfm lazarus-1.6+dfsg/ide/frames/desktop_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/desktop_options.lfm 2014-10-31 23:19:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/desktop_options.lfm 2015-12-21 22:49:55.000000000 +0000 @@ -14,9 +14,9 @@ AnchorSideTop.Control = AutoSaveProjectCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 20 - Top = 383 - Width = 189 + Height = 15 + Top = 308 + Width = 150 BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = 'AutoSaveIntervalInSecsLabel' @@ -29,9 +29,9 @@ AnchorSideTop.Control = PanelGlyphsButtonsOptions AnchorSideTop.Side = asrCenter Left = 6 - Height = 20 - Top = 206 - Width = 73 + Height = 15 + Top = 166 + Width = 57 BorderSpacing.Left = 6 Caption = 'lblButtons' Font.Style = [fsBold] @@ -43,9 +43,9 @@ AnchorSideTop.Control = PanelGlyphsMenusOptions AnchorSideTop.Side = asrCenter Left = 6 - Height = 20 - Top = 233 - Width = 64 + Height = 15 + Top = 188 + Width = 50 BorderSpacing.Left = 6 Caption = 'lblMenus' Font.Style = [fsBold] @@ -57,35 +57,35 @@ AnchorSideTop.Control = lblCheckAndAutoSave AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 281 - Width = 296 + Height = 19 + Top = 226 + Width = 241 BorderSpacing.Left = 6 Caption = 'CheckDiskChangesWithLoadingCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 0 + TabOrder = 6 end object ShowHintsForComponentPaletteCheckBox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = ShowHintsForMainSpeedButtonsCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 151 - Width = 303 + Height = 19 + Top = 121 + Width = 246 BorderSpacing.Left = 6 Caption = 'ShowHintsForComponentPaletteCheckBox' - TabOrder = 1 + TabOrder = 3 end object ShowHintsForMainSpeedButtonsCheckBox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = lblHints AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 127 - Width = 304 + Height = 19 + Top = 102 + Width = 246 BorderSpacing.Left = 6 Caption = 'ShowHintsForMainSpeedButtonsCheckBox' TabOrder = 2 @@ -97,18 +97,18 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 28 - Top = 23 + Height = 23 + Top = 18 Width = 584 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Right = 6 - ItemHeight = 20 + ItemHeight = 15 ParentShowHint = False ShowHint = True Style = csDropDownList - TabOrder = 3 + TabOrder = 0 end object AutoSaveIntervalInSecsComboBox: TComboBox AnchorSideLeft.Control = Owner @@ -117,20 +117,20 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 28 - Top = 409 + Height = 23 + Top = 329 Width = 584 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 Enabled = False - ItemHeight = 20 + ItemHeight = 15 Items.Strings = ( '1200' '600' '300' '120' ) - TabOrder = 4 + TabOrder = 10 Visible = False end object AutoSaveProjectCheckBox: TCheckBox @@ -138,15 +138,15 @@ AnchorSideTop.Control = AutoSaveEditorFilesCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 353 - Width = 197 + Height = 19 + Top = 283 + Width = 159 BorderSpacing.Left = 6 Caption = 'AutoSaveProjectCheckBox' Enabled = False ParentShowHint = False ShowHint = True - TabOrder = 5 + TabOrder = 9 Visible = False end object AutoSaveEditorFilesCheckBox: TCheckBox @@ -154,52 +154,58 @@ AnchorSideTop.Control = AskSavingOnlySessionCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 329 - Width = 220 + Height = 19 + Top = 264 + Width = 176 BorderSpacing.Left = 6 Caption = 'AutoSaveEditorFilesCheckBox' Enabled = False ParentShowHint = False ShowHint = True - TabOrder = 6 + TabOrder = 8 Visible = False end - object LoadDesktopSettingsFromFileButton: TButton - AnchorSideLeft.Control = SaveDesktopSettingsToFileButton + object ImportDesktopButton: TButton + AnchorSideLeft.Control = ExportDesktopButton AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = SaveDesktopSettingsToFileButton + AnchorSideTop.Control = ExportDesktopButton AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 299 - Height = 30 - Top = 466 + Height = 25 + Top = 376 Width = 291 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 BorderSpacing.Right = 6 - Caption = 'LoadDesktopSettingsFromFileButton' - OnClick = LoadDesktopSettingsFromFileButtonClick - TabOrder = 7 + Caption = 'Import desktop' + OnClick = ImportDesktopButtonClick + ParentShowHint = False + ShowHint = True + TabOrder = 12 + Visible = False end - object SaveDesktopSettingsToFileButton: TButton + object ExportDesktopButton: TButton AnchorSideLeft.Control = Owner - AnchorSideTop.Control = lblDesktopFiles + AnchorSideTop.Control = lblImportExport AnchorSideTop.Side = asrBottom AnchorSideRight.Control = lblCenter Left = 6 - Height = 30 - Top = 466 + Height = 25 + Top = 376 Width = 287 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Right = 3 - Caption = 'SaveDesktopSettingsToFileButton' - OnClick = SaveDesktopSettingsToFileButtonClick - TabOrder = 8 + Caption = 'Export desktop' + OnClick = ExportDesktopButtonClick + ParentShowHint = False + ShowHint = True + TabOrder = 11 + Visible = False end object PanelGlyphsButtonsOptions: TPanel AnchorSideLeft.Control = lblButtons @@ -208,10 +214,10 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 85 - Height = 24 - Top = 204 - Width = 505 + Left = 69 + Height = 19 + Top = 164 + Width = 521 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 @@ -220,15 +226,15 @@ BevelOuter = bvNone ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 3 - ClientHeight = 24 - ClientWidth = 505 - TabOrder = 9 + ClientHeight = 19 + ClientWidth = 521 + TabOrder = 4 object rbBtnGlyphShowSystem: TRadioButton AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 + Height = 19 Top = 0 - Width = 181 + Width = 147 Caption = 'rbBtnGlyphShowSystem' Checked = True TabOrder = 0 @@ -236,18 +242,18 @@ end object rbBtnGlyphShowNever: TRadioButton AnchorSideLeft.Side = asrCenter - Left = 181 - Height = 24 + Left = 147 + Height = 19 Top = 0 - Width = 173 + Width = 140 Caption = 'rbBtnGlyphShowNever' TabOrder = 1 end object rbBtnGlyphShowAlways: TRadioButton - Left = 354 - Height = 24 + Left = 287 + Height = 19 Top = 0 - Width = 180 + Width = 146 Caption = 'rbBtnGlyphShowAlways' TabOrder = 2 end @@ -258,10 +264,10 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 85 - Height = 24 - Top = 231 - Width = 505 + Left = 69 + Height = 19 + Top = 186 + Width = 521 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 3 @@ -269,16 +275,16 @@ BevelOuter = bvNone ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 3 - ClientHeight = 24 - ClientWidth = 505 - TabOrder = 10 + ClientHeight = 19 + ClientWidth = 521 + TabOrder = 5 object rbMenuGlyphShowSystem: TRadioButton AnchorSideRight.Control = PanelGlyphsMenusOptions AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 + Height = 19 Top = 0 - Width = 196 + Width = 160 Caption = 'rbMenuGlyphShowSystem' Checked = True TabOrder = 0 @@ -286,18 +292,18 @@ end object rbMenuGlyphShowNever: TRadioButton AnchorSideLeft.Side = asrCenter - Left = 196 - Height = 24 + Left = 160 + Height = 19 Top = 0 - Width = 188 + Width = 153 Caption = 'rbMenuGlyphShowNever' TabOrder = 1 end object rbMenuGlyphShowAlways: TRadioButton - Left = 384 - Height = 24 + Left = 313 + Height = 19 Top = 0 - Width = 195 + Width = 159 Caption = 'rbMenuGlyphShowAlways' TabOrder = 2 end @@ -305,11 +311,11 @@ object lblCenter: TLabel AnchorSideLeft.Control = Owner AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = lblDesktopFiles + AnchorSideTop.Control = lblImportExport AnchorSideTop.Side = asrBottom Left = 296 Height = 5 - Top = 463 + Top = 373 Width = 5 AutoSize = False ParentColor = False @@ -319,36 +325,36 @@ AnchorSideTop.Control = CheckDiskChangesWithLoadingCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 305 - Width = 234 + Height = 19 + Top = 245 + Width = 190 BorderSpacing.Left = 6 Caption = 'AskSavingOnlySessionCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 11 + TabOrder = 7 end object PreferDoubleClickCheckBox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = lblMouseAction AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 77 - Width = 207 + Height = 19 + Top = 62 + Width = 167 BorderSpacing.Left = 6 Caption = 'PreferDoubleClickCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 12 + TabOrder = 1 end object lblLanguage: TDividerBevel AnchorSideTop.Control = Owner Left = 0 - Height = 20 + Height = 15 Top = 0 Width = 590 - Caption = 'lblLanguage' + Caption = 'Language' Anchors = [akTop, akLeft, akRight] Font.Style = [fsBold] ParentColor = False @@ -358,38 +364,39 @@ AnchorSideTop.Control = PanelGlyphsMenusOptions AnchorSideTop.Side = asrBottom Left = 0 - Height = 20 - Top = 261 + Height = 15 + Top = 211 Width = 597 - Caption = 'lblCheckAndAutoSave' + Caption = 'Check and Auto Save Files' Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] ParentColor = False ParentFont = False end - object lblDesktopFiles: TDividerBevel + object lblImportExport: TDividerBevel AnchorSideTop.Control = AutoSaveIntervalInSecsComboBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 20 - Top = 443 + Height = 15 + Top = 358 Width = 597 - Caption = 'lblDesktopFiles' + Caption = 'Import / Export' Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] ParentColor = False ParentFont = False + Visible = False end object lblGlyphs: TDividerBevel AnchorSideTop.Control = ShowHintsForComponentPaletteCheckBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 20 - Top = 181 + Height = 15 + Top = 146 Width = 597 - Caption = 'lblGlyphs' + Caption = 'Show Glyphs for' Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] @@ -400,10 +407,10 @@ AnchorSideTop.Control = PreferDoubleClickCheckBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 20 - Top = 107 + Height = 15 + Top = 87 Width = 597 - Caption = 'lblHints' + Caption = 'Hints' Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] @@ -414,10 +421,10 @@ AnchorSideTop.Control = LanguageComboBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 20 - Top = 57 + Height = 15 + Top = 47 Width = 597 - Caption = 'lblMouseAction' + Caption = 'Mouse Action' Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] diff -Nru lazarus-1.4.4+dfsg/ide/frames/desktop_options.pas lazarus-1.6+dfsg/ide/frames/desktop_options.pas --- lazarus-1.4.4+dfsg/ide/frames/desktop_options.pas 2014-10-31 23:19:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/desktop_options.pas 2015-11-28 19:42:00.000000000 +0000 @@ -25,8 +25,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, StdCtrls, Dialogs, LCLProc, - ExtCtrls, EnvironmentOpts, LazarusIDEStrConsts, IDETranslations, InputHistory, + Classes, SysUtils, FileUtil, Forms, StdCtrls, Dialogs, LCLProc, ExtCtrls, + Buttons, EnvironmentOpts, LazarusIDEStrConsts, IDETranslations, InputHistory, IDEProcs, IDEOptionsIntf, IDEWindowIntf, IDEUtils, DividerBevel; type @@ -40,7 +40,7 @@ AutoSaveIntervalInSecsLabel: TLabel; AutoSaveProjectCheckBox: TCheckBox; lblCheckAndAutoSave: TDividerBevel; - lblDesktopFiles: TDividerBevel; + lblImportExport: TDividerBevel; lblGlyphs: TDividerBevel; lblHints: TDividerBevel; lblLanguage: TDividerBevel; @@ -51,7 +51,7 @@ lblCenter: TLabel; lblMenus: TLabel; LanguageComboBox: TComboBox; - LoadDesktopSettingsFromFileButton: TButton; + ImportDesktopButton: TButton; PanelGlyphsButtonsOptions: TPanel; PanelGlyphsMenusOptions: TPanel; rbMenuGlyphShowAlways: TRadioButton; @@ -60,11 +60,11 @@ rbBtnGlyphShowAlways: TRadioButton; rbBtnGlyphShowNever: TRadioButton; rbBtnGlyphShowSystem: TRadioButton; - SaveDesktopSettingsToFileButton: TButton; + ExportDesktopButton: TButton; ShowHintsForComponentPaletteCheckBox: TCheckBox; ShowHintsForMainSpeedButtonsCheckBox: TCheckBox; - procedure SaveDesktopSettingsToFileButtonClick(Sender: TObject); - procedure LoadDesktopSettingsFromFileButtonClick(Sender: TObject); + procedure ExportDesktopButtonClick(Sender: TObject); + procedure ImportDesktopButtonClick(Sender: TObject); private function LangIDToCaption(const LangID: string): string; function CaptionToLangID(const ACaption: string): string; @@ -73,7 +73,7 @@ procedure DoSaveSettings(AOptions: TAbstractIDEOptions); public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -87,7 +87,7 @@ function TDesktopOptionsFrame.GetTitle: String; begin - Result := dlgDesktop; + Result := lisGeneral; end; procedure TDesktopOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); @@ -146,9 +146,11 @@ AutoSaveIntervalInSecsLabel.Caption := dlgIntvInSec; // desktop files - lblDesktopFiles.Caption := dlgDesktopFiles; - SaveDesktopSettingsToFileButton.Caption := dlgSaveDFile; - LoadDesktopSettingsFromFileButton.Caption := dlgLoadDFile; + lblImportExport.Caption := lisExportImport; + ExportDesktopButton.Caption := lisExport; + ImportDesktopButton.Caption := lisImport; + ExportDesktopButton.Hint := lisExportEnvironmentOptions; + ImportDesktopButton.Hint := lisImportEnvironmentOptions; end; procedure TDesktopOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); @@ -229,20 +231,20 @@ end; end; -procedure TDesktopOptionsFrame.SaveDesktopSettingsToFileButtonClick(Sender: TObject); +procedure TDesktopOptionsFrame.ExportDesktopButtonClick(Sender: TObject); var AnEnvironmentOptions: TEnvironmentOptions; SaveDialog: TSaveDialog; AFilename: String; begin - //debugln('TEnvironmentOptionsDialog.SaveDesktopSettingsToFileButtonClick A'); + //debugln('TDesktopOptionsFrame.ExportDesktopButtonClick A'); SaveDialog := TSaveDialog.Create(nil); try try InputHistories.ApplyFileDialogSettings(SaveDialog); - SaveDialog.Filter:=lisLazarusDesktopSettings+' (*.lds)|*.lds' - +'|'+lisXMLFiles+' (*.xml)|*.xml' - +'|'+dlgAllFiles+' ('+GetAllFilesMask+')|' + GetAllFilesMask; + SaveDialog.Filter:=dlgFilterLazarusDesktopSettings+' (*.lds)|*.lds' + //+'|'+dlgFilterXML+' (*.xml)|*.xml' + +'|'+dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask; if SaveDialog.Execute then begin AFilename:=SaveDialog.Filename; @@ -253,7 +255,7 @@ AnEnvironmentOptions.Filename := AFilename; DoSaveSettings(AnEnvironmentOptions); AnEnvironmentOptions.Save(true); - ShowMessage(lisSavedSuccessfully); + ShowMessageFmt(lisSuccessfullyExported, [SaveDialog.Filename]); finally AnEnvironmentOptions.Free; end; @@ -262,7 +264,7 @@ except on E: Exception do begin - DebugLn('ERROR: [TEnvironmentOptionsDialog.SaveDesktopSettingsToFileButtonClick] ', E.Message); + DebugLn('ERROR: [TDesktopOptionsFrame.ExportDesktopButtonClick] ', E.Message); end; end; finally @@ -270,19 +272,19 @@ end; end; -procedure TDesktopOptionsFrame.LoadDesktopSettingsFromFileButtonClick(Sender: TObject); +procedure TDesktopOptionsFrame.ImportDesktopButtonClick(Sender: TObject); var AnEnvironmentOptions: TEnvironmentOptions; OpenDialog: TOpenDialog; begin - //debugln('TEnvironmentOptionsDialog.LoadDesktopSettingsFromFileButtonClick A'); + //debugln('TDesktopOptionsFrame.ImportDesktopButtonClick A'); OpenDialog := TOpenDialog.Create(nil); try try InputHistories.ApplyFileDialogSettings(OpenDialog); - OpenDialog.Filter:=lisLazarusDesktopSettings+' (*.lds)|*.lds' - +'|'+lisXMLFiles+' (*.xml)|*.xml' - +'|'+dlgAllFiles+' ('+GetAllFilesMask+')|' + GetAllFilesMask; + OpenDialog.Filter:=dlgFilterLazarusDesktopSettings+' (*.lds)|*.lds' + //+'|'+dlgFilterXML+' (*.xml)|*.xml' + +'|'+dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask; if OpenDialog.Execute then begin AnEnvironmentOptions := TEnvironmentOptions.Create; @@ -290,9 +292,8 @@ AnEnvironmentOptions.Filename := OpenDialog.Filename; AnEnvironmentOptions.Load(true); DoLoadSettings(AnEnvironmentOptions); - if IDEDockMaster=nil then - IDEWindowCreators.RestoreSimpleLayout; - ShowMessage(lisLoadedSuccessfully); + IDEWindowCreators.RestoreSimpleLayout; + ShowMessageFmt(lisSuccessfullyImported, [OpenDialog.Filename]); finally AnEnvironmentOptions.Free; end; @@ -302,7 +303,7 @@ on E: Exception do begin // ToDo - DebugLn('ERROR: [TEnvironmentOptionsDialog.SaveDesktopSettingsToFileButtonClick] ', E.Message); + DebugLn('ERROR: [TDesktopOptionsFrame.ImportDesktopButtonClick] ', E.Message); end; end; finally diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_codefolding_options.pas lazarus-1.6+dfsg/ide/frames/editor_codefolding_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_codefolding_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_codefolding_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -27,7 +27,7 @@ uses Classes, SysUtils, FileUtil, Forms, StdCtrls, ExtCtrls, Graphics, LCLType, EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, Controls, - SynEditHighlighter, SynEditHighlighterFoldBase, Spin, ComCtrls, ColorBox, CheckLst, Buttons; + SynEditHighlighter, SynEditHighlighterFoldBase, CheckLst, Buttons; type @@ -49,7 +49,7 @@ procedure chkFoldChange(Sender: TObject); procedure FoldConfigCheckListBoxClick(Sender: TObject); procedure FoldConfigCheckListBoxClickCheck(Sender: TObject); - procedure FoldConfigCheckListBoxKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure FoldConfigCheckListBoxKeyUp(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); procedure LanguageComboBoxChange(Sender: TObject); procedure LanguageComboBoxExit(Sender: TObject); procedure LanguageComboBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); @@ -65,7 +65,7 @@ public destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; function GetHighlighter(SynType: TLazSyntaxHighlighter; @@ -116,7 +116,7 @@ FoldConfigCheckListBox.Checked[j] := Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].Enabled and (Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].Modes * [fmFold, fmHide] <> []); - FoldConfigCheckListBox.Items.Objects[j] := TObject(Pointer(PtrUInt(i))); + FoldConfigCheckListBox.Items.Objects[j] := TObject({%H-}Pointer(PtrUInt(i))); end; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_codetools_options.pas lazarus-1.6+dfsg/ide/frames/editor_codetools_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_codetools_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_codetools_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -26,8 +26,8 @@ uses Classes, StdCtrls, ComCtrls, Graphics, sysutils, - EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, Spin, ExtCtrls, - SynEditMarkupBracket, editor_color_options, editor_general_options, + EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, ExtCtrls, + editor_color_options, editor_general_options, SynEdit, SynCompletion, LCLType; type @@ -52,7 +52,7 @@ procedure AutoDelayTrackBarChange(Sender: TObject); public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_color_options.pas lazarus-1.6+dfsg/ide/frames/editor_color_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_color_options.pas 2014-06-04 16:28:42.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_color_options.pas 2015-06-02 23:56:03.000000000 +0000 @@ -26,8 +26,8 @@ uses Classes, Controls, math, types, typinfo, sysutils, Laz2_XMLCfg, LazFileUtils, - LCLProc, LCLType, LCLIntf, StdCtrls, ExtCtrls, Graphics, GraphUtil, ColorBox, - ComCtrls, Dialogs, Menus, Spin, maskedit, SynEdit, SynEditMiscClasses, + LCLProc, LCLType, LCLIntf, LazUTF8, StdCtrls, ExtCtrls, Graphics, + ComCtrls, Dialogs, Menus, SynEdit, SynEditMiscClasses, SynGutterCodeFolding, SynGutterLineNumber, SynEditTypes, SynGutterChanges, SynEditMouseCmds, SynEditHighlighter, SynTextDrawer, SynColorAttribEditor, DividerBevel, IDEOptionsIntf, IDEImagesIntf, IDEUtils, EditorOptions, @@ -90,12 +90,12 @@ pnlElementAttributes: TPanel; procedure btnExportClick(Sender: TObject); procedure ColorElementTreeAdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; - State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); - procedure ColorElementTreeChange(Sender: TObject; Node: TTreeNode); + State: TCustomDrawState; Stage: TCustomDrawStage; var {%H-}PaintImages, DefaultDraw: Boolean); + procedure ColorElementTreeChange(Sender: TObject; {%H-}Node: TTreeNode); procedure ColorElementTreeClick(Sender: TObject); - procedure ColorElementTreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure ColorPreviewMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + procedure ColorElementTreeKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + procedure ColorPreviewMouseUp(Sender: TObject; {%H-}Button: TMouseButton; + {%H-}Shift: TShiftState; X, Y: Integer); procedure ColorSchemeButtonClick(Sender: TObject); procedure DoColorChanged(Sender: TObject); procedure ForePriorEditKeyPress(Sender: TObject; var Key: char); @@ -152,13 +152,13 @@ procedure ApplyCurrentScheme; procedure UpdateCurrentScheme; - procedure OnStatusChange(Sender: TObject; Changes: TSynStatusChanges); + procedure OnStatusChange(Sender: TObject; {%H-}Changes: TSynStatusChanges); procedure OnSpecialLineMarkup(Sender: TObject; Line: Integer; var Special: boolean; aMarkup: TSynSelectedColor); function GeneralPage: TEditorGeneralOptionsFrame; function DoSynEditMouse(var AnInfo: TSynEditMouseActionInfo; - HandleActionProc: TSynEditMouseActionHandler): Boolean; + {%H-}HandleActionProc: TSynEditMouseActionHandler): Boolean; procedure LanguageMenuItemClick(Sender: TObject); procedure ColorSchemeMenuItemClick(Sender: TObject); procedure SetLanguageItem(ALanguage: String); @@ -1072,6 +1072,7 @@ ColorElementTree.Items.Add(nil, AdditionalHighlightGroupNames[j]); // Fill Attributes in + DefNode := nil; for i := 0 to FCurrentColorScheme.AttributeCount - 1 do begin Attr := FCurrentColorScheme.AttributeAtPos[i]; if Attr.StoredName <> '' then begin @@ -1344,6 +1345,9 @@ begin inherited Create(TheOwner); FTempColorSchemeSettings := TColorSchemeFactory.Create; + + ExportSaveDialog.Title := lisExport; + ExportSaveDialog.Filter := Format('%s|*.xml|', [dlgFilterXML]); end; destructor TEditorColorOptionsFrame.Destroy; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_display_options.pas lazarus-1.6+dfsg/ide/frames/editor_display_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_display_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_display_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -79,8 +79,8 @@ procedure SetEditorFontSizeSpinEditValue(FontSize: Integer); procedure FontDialogApplyClicked(Sender: TObject); - function DoSynEditMouse(var AnInfo: TSynEditMouseActionInfo; - HandleActionProc: TSynEditMouseActionHandler): Boolean; + function DoSynEditMouse(var {%H-}AnInfo: TSynEditMouseActionInfo; + {%H-}HandleActionProc: TSynEditMouseActionHandler): Boolean; public function GetTitle: String; override; procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; @@ -101,7 +101,7 @@ tm: TTextMetric; begin DisplayPreview.Canvas.Font.Assign(DisplayPreview.Font); - if LCLIntf.GetTextMetrics(DisplayPreview.Canvas.Handle, tm) then + if LCLIntf.GetTextMetrics(DisplayPreview.Canvas.Handle, tm{%H-}) then Result := -(NegativeSize + MulDiv(tm.tmInternalLeading, 72, DisplayPreview.Font.PixelsPerInch)) else Result := -NegativeSize; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_dividerdraw_options.pas lazarus-1.6+dfsg/ide/frames/editor_dividerdraw_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_dividerdraw_options.pas 2011-12-04 11:20:41.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_dividerdraw_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -52,7 +52,7 @@ procedure LanguageComboBoxChange(Sender: TObject); procedure LanguageComboBoxExit(Sender: TObject); procedure LanguageComboBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure DividerConfigListBoxKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure DividerConfigListBoxKeyUp(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); procedure DividerConfigListBoxClick(Sender: TObject); procedure DividerSpinEditChange(Sender: TObject); procedure NestLvlColorBoxChange(Sender: TObject); @@ -72,7 +72,7 @@ public destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_general_misc_options.lfm lazarus-1.6+dfsg/ide/frames/editor_general_misc_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/editor_general_misc_options.lfm 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_general_misc_options.lfm 2015-03-04 13:50:08.000000000 +0000 @@ -15,9 +15,9 @@ AnchorSideTop.Control = EditorTrimSpaceTypeCheckBox AnchorSideTop.Side = asrCenter Left = 156 - Height = 16 - Top = 161 - Width = 142 + Height = 15 + Top = 29 + Width = 141 BorderSpacing.Left = 6 Caption = 'EditorTrimSpaceTypeLabel' ParentColor = False @@ -30,7 +30,7 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 0 - Height = 152 + Height = 19 Top = 0 Width = 460 Anchors = [akTop, akLeft, akRight] @@ -56,37 +56,11 @@ AnchorSideTop.Side = asrBottom Left = 0 Height = 23 - Top = 158 + Top = 25 Width = 150 BorderSpacing.Top = 6 ItemHeight = 15 Style = csDropDownList TabOrder = 1 end - object EditorTabPositionCheckBox: TComboBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = EditorTrimSpaceTypeCheckBox - AnchorSideTop.Side = asrBottom - Left = 0 - Height = 23 - Top = 187 - Width = 150 - BorderSpacing.Top = 6 - ItemHeight = 15 - Style = csDropDownList - TabOrder = 2 - end - object EditorTabPositionLabel: TLabel - AnchorSideLeft.Control = EditorTrimSpaceTypeCheckBox - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = EditorTabPositionCheckBox - AnchorSideTop.Side = asrCenter - Left = 156 - Height = 16 - Top = 190 - Width = 142 - BorderSpacing.Left = 6 - Caption = 'EditorTrimSpaceTypeLabel' - ParentColor = False - end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_general_misc_options.pas lazarus-1.6+dfsg/ide/frames/editor_general_misc_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_general_misc_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_general_misc_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -31,7 +31,7 @@ interface uses - LCLProc, StdCtrls, SynEdit, ExtCtrls, ComCtrls, EditorOptions, + LCLProc, StdCtrls, SynEdit, ExtCtrls, EditorOptions, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf, editor_general_options, SynEditTextTrimmer; @@ -41,10 +41,8 @@ TEditorGeneralMiscOptionsFrame = class(TAbstractIDEOptionsEditor) EditorTrimSpaceTypeCheckBox: TComboBox; EditorOptionsGroupBox: TCheckGroup; - EditorTabPositionCheckBox: TComboBox; EditorTrimSpaceTypeLabel: TLabel; - EditorTabPositionLabel: TLabel; - procedure EditorOptionsGroupBoxItemClick(Sender: TObject; Index: integer); + procedure EditorOptionsGroupBoxItemClick(Sender: TObject; {%H-}Index: integer); private FDialog: TAbstractOptionsEditorDialog; function GeneralPage: TEditorGeneralOptionsFrame; inline; @@ -94,16 +92,9 @@ EditorTrimSpaceTypeCheckBox.Items.Add(dlgTrimSpaceTypeCaretMove); EditorTrimSpaceTypeCheckBox.Items.Add(dlgTrimSpaceTypePosOnly); EditorTrimSpaceTypeLabel.Caption := dlgTrimSpaceTypeCaption; - EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosTop); - EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosBottom); - EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosLeft); - EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosRight); - EditorTabPositionLabel.Caption := dlgNotebookTabPos; end; procedure TEditorGeneralMiscOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); -const - TabPosToIndex : Array [TTabPosition] of Integer = (0, 1, 2, 3); begin with AOptions as TEditorOptions do begin @@ -120,7 +111,6 @@ {$ENDIF} end; EditorTrimSpaceTypeCheckBox.ItemIndex := ord(TrimSpaceType); - EditorTabPositionCheckBox.ItemIndex := TabPosToIndex[TabPosition]; end; end; @@ -134,8 +124,6 @@ TEditorOptions(AOptions).SynEditOptions := TEditorOptions(AOptions).SynEditOptions - [AnOption]; end; -const - TabIndexToPos : Array [0..3] of TTabPosition = (tpTop, tpBottom, tpLeft, tpRight); begin with AOptions as TEditorOptions do begin @@ -149,7 +137,6 @@ else SynEditOptions2 := SynEditOptions2 - [eoFoldedCopyPaste]; TrimSpaceType := TSynEditStringTrimmingType(EditorTrimSpaceTypeCheckBox.ItemIndex); - TabPosition := TabIndexToPos[EditorTabPositionCheckBox.ItemIndex]; {$IFDEF WinIME} UseMinimumIme := EditorOptionsGroupBox.Checked[5]; {$ENDIF} diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_general_options.lfm lazarus-1.6+dfsg/ide/frames/editor_general_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/editor_general_options.lfm 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_general_options.lfm 2015-03-09 13:07:39.000000000 +0000 @@ -200,7 +200,7 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 254 + Top = 292 Width = 152 BorderSpacing.Left = 6 BorderSpacing.Top = 6 @@ -214,7 +214,7 @@ AnchorSideTop.Side = asrBottom Left = 218 Height = 19 - Top = 254 + Top = 292 Width = 152 BorderSpacing.Top = 6 Caption = 'OverwriteBlockCheckBox' @@ -251,7 +251,6 @@ Top = 0 Width = 434 Caption = 'UndoGroupDivider' - Autosize = True Anchors = [akTop, akLeft, akRight] Font.Style = [fsBold] ParentFont = False @@ -267,7 +266,6 @@ Top = 65 Width = 434 Caption = 'ScrollGroupDivider' - Autosize = True Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] @@ -284,7 +282,6 @@ Top = 130 Width = 434 Caption = 'CaretGroupDivider' - Autosize = True Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] @@ -292,16 +289,15 @@ end object BlockGroupDivider: TDividerBevel AnchorSideLeft.Control = Owner - AnchorSideTop.Control = ScrollPastEndLineCheckBox + AnchorSideTop.Control = chkMultiCaretMode AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 Height = 15 - Top = 233 + Top = 271 Width = 434 Caption = 'BlockGroupDivider' - Autosize = True Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] @@ -318,4 +314,38 @@ Caption = 'Scroll Hint' TabOrder = 16 end + object MultiCaretOnColumnSelection: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = ScrollPastEndLineCheckBox + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 19 + Top = 227 + Width = 183 + BorderSpacing.Left = 6 + Caption = 'MultiCaretOnColumnSelection' + TabOrder = 17 + end + object chkMultiCaretColumnMode: TCheckBox + AnchorSideLeft.Control = EndKeyJumpsToNearestStartCheckBox + AnchorSideTop.Control = MultiCaretOnColumnSelection + Left = 218 + Height = 19 + Top = 227 + Width = 169 + Caption = 'chkMultiCaretColumnMode' + TabOrder = 18 + end + object chkMultiCaretMode: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = MultiCaretOnColumnSelection + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 19 + Top = 246 + Width = 126 + BorderSpacing.Left = 6 + Caption = 'chkMultiCaretMode' + TabOrder = 19 + end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_general_options.pas lazarus-1.6+dfsg/ide/frames/editor_general_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_general_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_general_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -26,14 +26,17 @@ uses Classes, SysUtils, LCLProc, LCLType, StdCtrls, Controls, ExtCtrls, Graphics, - EditorOptions, LazarusIDEStrConsts, IDEProcs, SourceSynEditor, IDEOptionsIntf, - IDEUtils, SynEdit, SynBeautifier, SynHighlighterPas, DividerBevel; + EditorOptions, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf, + IDEUtils, SynEdit, SynHighlighterPas, SynPluginMultiCaret, DividerBevel; type TPreviewEditor = TSynEdit; { TEditorGeneralOptionsFrame } TEditorGeneralOptionsFrame = class(TAbstractIDEOptionsEditor) + chkMultiCaretColumnMode: TCheckBox; + chkMultiCaretMode: TCheckBox; + MultiCaretOnColumnSelection: TCheckBox; CursorSkipsTabCheckBox: TCheckBox; CaretGroupDivider: TDividerBevel; BlockGroupDivider: TDividerBevel; @@ -138,6 +141,9 @@ CursorSkipsTabCheckBox.Caption := dlgCursorSkipsTab; HomeKeyJumpsToNearestStartCheckBox.Caption := dlgHomeKeyJumpsToNearestStart; EndKeyJumpsToNearestStartCheckBox.Caption := dlgEndKeyJumpsToNearestStart; + MultiCaretOnColumnSelection.Caption := dlgMultiCaretOnColumnSelection; + chkMultiCaretColumnMode.Caption := dlgMultiCaretColumnMode; + chkMultiCaretMode.Caption := dlgMultiCaretMode; // Block BlockGroupDivider.Caption := dlgBlockGroupOptions; @@ -171,6 +177,9 @@ CursorSkipsTabCheckBox.Checked := eoCaretSkipTab in SynEditOptions2; HomeKeyJumpsToNearestStartCheckBox.Checked := eoEnhanceHomeKey in SynEditOptions; EndKeyJumpsToNearestStartCheckBox.Checked := eoEnhanceEndKey in SynEditOptions2; + MultiCaretOnColumnSelection.Checked := MultiCaretOnColumnSelect; + chkMultiCaretColumnMode.Checked := MultiCaretDefaultColumnSelectMode = mcmMoveAllCarets; + chkMultiCaretMode.Checked := MultiCaretDefaultMode = mcmMoveAllCarets; // block PersistentBlockCheckBox.Checked := eoPersistentBlock in SynEditOptions2; @@ -230,6 +239,16 @@ UpdateOptionFromBool(CursorSkipsTabCheckBox.Checked, eoCaretSkipTab); UpdateOptionFromBool(HomeKeyJumpsToNearestStartCheckBox.Checked, eoEnhanceHomeKey); UpdateOptionFromBool(EndKeyJumpsToNearestStartCheckBox.Checked, eoEnhanceEndKey); + MultiCaretOnColumnSelect := MultiCaretOnColumnSelection.Checked; + if chkMultiCaretColumnMode.Checked then + MultiCaretDefaultColumnSelectMode := mcmMoveAllCarets + else + MultiCaretDefaultColumnSelectMode := mcmCancelOnCaretMove; + if chkMultiCaretMode.Checked then + MultiCaretDefaultMode := mcmMoveAllCarets + else + MultiCaretDefaultMode := mcmCancelOnCaretMove; + // block UpdateOptionFromBool(PersistentBlockCheckBox.Checked, eoPersistentBlock); diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_keymapping_options.lfm lazarus-1.6+dfsg/ide/frames/editor_keymapping_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/editor_keymapping_options.lfm 2014-10-30 19:47:32.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_keymapping_options.lfm 2015-10-12 08:32:57.000000000 +0000 @@ -14,9 +14,10 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = FindKeyButton Left = 0 - Height = 22 + Height = 23 Top = 6 - Width = 257 + Width = 305 + OnAfterFilter = FilterEditAfterFilter OnFilterItem = FilterEditFilterItem ButtonWidth = 23 NumGlyphs = 1 @@ -34,10 +35,10 @@ AnchorSideTop.Control = FilterEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = ResetKeyFilterBtn - Left = 307 - Height = 22 - Top = 6 - Width = 115 + Left = 324 + Height = 29 + Top = 3 + Width = 98 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Left = 19 @@ -53,8 +54,8 @@ AnchorSideBottom.Control = FindKeyButton AnchorSideBottom.Side = asrBottom Left = 424 - Height = 22 - Top = 6 + Height = 29 + Top = 3 Width = 29 Anchors = [akTop, akRight, akBottom] BorderSpacing.Right = 6 @@ -69,24 +70,23 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 0 - Height = 394 - Top = 28 + Height = 390 + Top = 32 Width = 459 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Bottom = 2 BevelOuter = bvNone - ClientHeight = 394 + ClientHeight = 390 ClientWidth = 459 TabOrder = 2 object ConflictsTreeView: TTreeView Left = 0 - Height = 141 + Height = 137 Top = 253 Width = 459 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] BorderWidth = 1 - DefaultItemHeight = 18 PopupMenu = PopupMenu1 ReadOnly = True RightClickSelect = True @@ -107,13 +107,12 @@ end object TreeView: TTreeView Left = 0 - Height = 192 + Height = 181 Top = 3 Width = 459 Align = alClient BorderSpacing.Top = 3 BorderWidth = 1 - DefaultItemHeight = 18 PopupMenu = PopupMenu1 ReadOnly = True RightClickSelect = True @@ -127,13 +126,13 @@ end object BtnPanel: TPanel Left = 0 - Height = 53 - Top = 195 + Height = 64 + Top = 184 Width = 459 Align = alBottom AutoSize = True BevelOuter = bvNone - ClientHeight = 53 + ClientHeight = 64 ClientWidth = 459 TabOrder = 3 object ChooseSchemeButton: TBitBtn @@ -142,9 +141,9 @@ AnchorSideTop.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 0 - Height = 22 - Top = 28 - Width = 161 + Height = 29 + Top = 35 + Width = 139 AutoSize = True Caption = 'ChooseSchemeButton' OnClick = ChooseSchemeButtonClick @@ -155,38 +154,41 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ChooseSchemeButton AnchorSideTop.Side = asrCenter - Left = 167 - Height = 16 - Top = 31 - Width = 82 + Left = 145 + Height = 17 + Top = 41 + Width = 78 BorderSpacing.Around = 6 Caption = 'SchemeLabel' ParentColor = False end object ClearButton: TBitBtn + AnchorSideLeft.Control = EditButton + AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = BtnPanel AnchorSideRight.Control = BtnPanel AnchorSideRight.Side = asrBottom - Left = 361 - Height = 22 + Left = 177 + Height = 29 Top = 0 - Width = 98 - Anchors = [akTop, akRight] + Width = 83 AutoSize = True + BorderSpacing.Left = 6 BorderSpacing.Bottom = 6 Caption = 'ClearButton' OnClick = ClearButtonClick TabOrder = 1 end object EditButton: TBitBtn + AnchorSideLeft.Control = CommandLabel + AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = BtnPanel - AnchorSideRight.Control = ClearButton - Left = 265 - Height = 22 + Left = 97 + Height = 29 Top = 0 - Width = 90 - Anchors = [akTop, akRight] + Width = 74 AutoSize = True + BorderSpacing.Left = 6 BorderSpacing.Right = 6 BorderSpacing.Bottom = 6 Caption = 'EditButton' @@ -194,14 +196,13 @@ TabOrder = 2 end object CommandLabel: TLabel + AnchorSideLeft.Control = BtnPanel AnchorSideTop.Control = EditButton AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = EditButton - Left = 161 - Height = 16 - Top = 3 - Width = 98 - Anchors = [akTop, akRight] + Left = 0 + Height = 17 + Top = 6 + Width = 91 BorderSpacing.Right = 6 Caption = 'CommandLabel' ParentColor = False diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_keymapping_options.pas lazarus-1.6+dfsg/ide/frames/editor_keymapping_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_keymapping_options.pas 2015-01-19 10:45:01.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_keymapping_options.pas 2015-11-20 14:04:24.000000000 +0000 @@ -26,7 +26,7 @@ uses Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, StdCtrls, ComCtrls, - Controls, Dialogs, LCLType, LCLProc, Menus, Buttons, Clipbrd, EditorOptions, + Controls, Dialogs, LCLType, LazUTF8, Menus, Buttons, Clipbrd, EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, IDEImagesIntf, editor_general_options, KeymapSchemeDlg, KeyMapping, IDECommands, KeyMapShortCutDlg, SrcEditorIntf, EditBtn, ExtCtrls; @@ -59,10 +59,11 @@ procedure EditMenuItemClick(Sender: TObject); procedure ChooseSchemeButtonClick(Sender: TObject); procedure ClearButtonClick(Sender: TObject); + procedure FilterEditAfterFilter(Sender: TObject); function FilterEditFilterItem(Item: TObject; out Done: Boolean): Boolean; - procedure FilterEditKeyPress(Sender: TObject; var Key: char); + procedure FilterEditKeyPress(Sender: TObject; var {%H-}Key: char); procedure FindKeyButtonClick(Sender: TObject); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure ResetKeyFilterBtnClick(Sender: TObject); procedure TreeViewDblClick(Sender: TObject); procedure TreeViewKeyPress(Sender: TObject; var Key: char); @@ -473,6 +474,11 @@ end; end; +procedure TEditorKeymappingOptionsFrame.FilterEditAfterFilter(Sender: TObject); +begin + TreeView.MakeSelectionVisible; +end; + function TEditorKeymappingOptionsFrame.KeyMappingRelationToCaption(Index: Integer): String; begin Result := KeyMappingRelationToCaption(FEditingKeyMap.Relations[Index]); @@ -482,12 +488,6 @@ KeyRelation: TKeyCommandRelation): String; const MaxLength = 60; - - function AddBrakets(S: String): String; - begin - Result := '[' + S + ']'; - end; - begin with KeyRelation do begin @@ -496,18 +496,7 @@ Result := UTF8Copy(LocalizedName, 1, MaxLength)+'...'; if Result <> '' then Result := Result + ' '; - if (ShortcutA.Key1 = VK_UNKNOWN) and (ShortcutB.Key1 = VK_UNKNOWN) then - Result := Result{ + lisNone2 } - else - if (ShortcutA.Key1 = VK_UNKNOWN) then - Result := Result + AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutB)) - else - if (ShortcutB.Key1 = VK_UNKNOWN) then - Result := Result + AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutA)) - else - Result := Result + AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutA)) - + ' '+lisOr+' ' + - AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutB)); + Result := Result + KeyValuesToCaptionStr(ShortcutA, ShortcutB, '['); end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_markup_options.pas lazarus-1.6+dfsg/ide/frames/editor_markup_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_markup_options.pas 2014-01-26 15:16:36.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_markup_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -64,7 +64,7 @@ procedure BracketLinkMouseLeave(Sender: TObject); procedure chkExtPasKeywordsChange(Sender: TObject); procedure chkKWGroupsClickCheck(Sender: TObject); - procedure chkKWGroupsKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure chkKWGroupsKeyUp(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); procedure dropPasStringKeywordsChange(Sender: TObject); function GeneralPage: TEditorGeneralOptionsFrame; inline; function FoldPage: TEditorCodefoldingOptionsFrame; inline; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_markup_userdefined.pas lazarus-1.6+dfsg/ide/frames/editor_markup_userdefined.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_markup_userdefined.pas 2014-03-11 23:31:21.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_markup_userdefined.pas 2015-03-10 13:27:41.000000000 +0000 @@ -7,7 +7,7 @@ uses Classes, StdCtrls, ComCtrls, Graphics, sysutils, math, EditorOptions, LazarusIDEStrConsts, SynColorAttribEditor, KeyMapping, KeyMapShortCutDlg, - IDEOptionsIntf, IDECommands, IDEDialogs, Spin, ExtCtrls, SynEditMarkupBracket, + IDEOptionsIntf, IDECommands, IDEDialogs, Spin, ExtCtrls, editor_color_options, editor_general_options, editor_keymapping_options, SynEdit, SynCompletion, SynHighlighterPas, SynEditKeyCmds, SynEditMarkupHighAll, DividerBevel, LazLoggerBase, LCLType, Menus, Grids, @@ -89,12 +89,12 @@ procedure tbSelectListClick(Sender: TObject); procedure GeneralCheckBoxChange(Sender: TObject); procedure tbSelectPageClicked(Sender: TObject); - procedure WordListColRowDeleted(Sender: TObject; IsColumn: Boolean; sIndex, - tIndex: Integer); + procedure WordListColRowDeleted(Sender: TObject; {%H-}IsColumn: Boolean; {%H-}sIndex, + {%H-}tIndex: Integer); procedure WordListEditingDone(Sender: TObject); procedure WordListExit(Sender: TObject); - procedure WordListKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure WordListSelection(Sender: TObject; aCol, aRow: Integer); + procedure WordListKeyUp(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); + procedure WordListSelection(Sender: TObject; {%H-}aCol, aRow: Integer); private { private declarations } FGlobalColors: TEditorUserDefinedWordsList; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_mouseaction_options_advanced.pas lazarus-1.6+dfsg/ide/frames/editor_mouseaction_options_advanced.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_mouseaction_options_advanced.pas 2013-06-02 17:54:22.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_mouseaction_options_advanced.pas 2015-06-04 11:17:44.000000000 +0000 @@ -26,9 +26,9 @@ uses EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, sysutils, StdCtrls, - ExtCtrls, Classes, Controls, LCLProc, Grids, ComCtrls, Dialogs, + ExtCtrls, Classes, Controls, Grids, ComCtrls, Dialogs, SynEditMouseCmds, Laz2_XMLCfg, MouseActionDialog, math, KeyMapping, - IDEImagesIntf, IDEDialogs; + IDEImagesIntf, IDEDialogs, LazUTF8, FileUtil; type @@ -53,31 +53,31 @@ DelButton: TToolButton; ActionGrid: TStringGrid; ContextTree: TTreeView; - procedure ActionGridHeaderClick(Sender: TObject; IsColumn: Boolean; Index: Integer); - procedure ActionGridCompareCells(Sender: TObject; ACol, ARow, BCol, BRow: Integer; + procedure ActionGridHeaderClick(Sender: TObject; {%H-}IsColumn: Boolean; Index: Integer); + procedure ActionGridCompareCells(Sender: TObject; {%H-}ACol, ARow, {%H-}BCol, BRow: Integer; var Result: integer); - procedure ActionGridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; - X, Y: Integer); - procedure ActionGridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); - procedure ActionGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, - Y: Integer); - procedure ActionGridSelection(Sender: TObject; aCol, aRow: Integer); + procedure ActionGridMouseDown(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; + {%H-}X, Y: Integer); + procedure ActionGridMouseMove(Sender: TObject; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); + procedure ActionGridMouseUp(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, + {%H-}Y: Integer); + procedure ActionGridSelection(Sender: TObject; {%H-}aCol, {%H-}aRow: Integer); procedure ContextTreeChange(Sender: TObject; Node: TTreeNode); - procedure OtherActionGridHeaderClick(Sender: TObject; IsColumn: Boolean; Index: Integer); - procedure OtherActionGridHeaderSized(Sender: TObject; IsColumn: Boolean; Index: Integer); - procedure OtherActionGridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; - X, Y: Integer); - procedure OtherActionGridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); - procedure OtherActionGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, - Y: Integer); + procedure OtherActionGridHeaderClick(Sender: TObject; {%H-}IsColumn: Boolean; Index: Integer); + procedure OtherActionGridHeaderSized(Sender: TObject; {%H-}IsColumn: Boolean; {%H-}Index: Integer); + procedure OtherActionGridMouseDown(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; + {%H-}X, Y: Integer); + procedure OtherActionGridMouseMove(Sender: TObject; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); + procedure OtherActionGridMouseUp(Sender: TObject; {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, + {%H-}Y: Integer); procedure OtherActionGridResize(Sender: TObject); procedure AddNewButtonClick(Sender: TObject); - procedure OtherActionGridSelectCell(Sender: TObject; aCol, aRow: Integer; + procedure OtherActionGridSelectCell(Sender: TObject; {%H-}aCol, {%H-}aRow: Integer; var CanSelect: Boolean); procedure OtherActToggleBoxChange(Sender: TObject); procedure UpdateButtonClick(Sender: TObject); procedure DelButtonClick(Sender: TObject); - procedure ActionGridHeaderSized(Sender: TObject; IsColumn: Boolean; Index: Integer); + procedure ActionGridHeaderSized(Sender: TObject; {%H-}IsColumn: Boolean; {%H-}Index: Integer); procedure ActionGridResize(Sender: TObject); procedure BtnExportClick(Sender: TObject); procedure BtnImportClick(Sender: TObject); @@ -90,6 +90,7 @@ FGutterNode: TTreeNode; FGutterFoldNode, FGutterFoldExpNode, FGutterFoldColNode: TTreeNode; FGutterLinesNode: TTreeNode; + FGutterChangeNode: TTreeNode; FCurNode: TTreeNode; FCurActions: TSynEditMouseActions; @@ -113,7 +114,7 @@ constructor Create(AOwner: TComponent); override; destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; procedure RefreshSettings; @@ -424,7 +425,7 @@ FillRow(OtherActionGrid, Row, 2, ActList[i]); OtherActionGrid.Cells[1,Row] := Node.Text; OtherActionGrid.Cells[0,Row] := IntToStr(Order); - OtherActionGrid.Objects[1,Row] := TObject(Pointer(PtrInt(Order))); + OtherActionGrid.Objects[1,Row] := TObject({%H-}Pointer(PtrInt(Order))); FoundOrder := Order; FAllowOtherActSel := True; if ActList[i].Equals(MAct) and (ActList = FCurActions) then @@ -624,6 +625,9 @@ // LineNum FGutterLinesNode := ContextTree.Items.AddChild(FGutterNode, dlgMouseOptNodeGutterLines); FGutterLinesNode.Data := FTempMouseSettings.GutterActionsLines; + // Changes + FGutterChangeNode := ContextTree.Items.AddChild(FGutterNode, dlgMouseOptNodeGutterChanges); + FGutterChangeNode.Data := FTempMouseSettings.GutterActionsChanges; ActionGrid.Constraints.MinWidth := ActionGrid.ColCount * MinGridColSize; ActionGrid.Cells[0,0] := dlgMouseOptHeadDesc; @@ -711,6 +715,9 @@ OpenDialog1.Title := lisImport; SaveDialog1.Title := lisExport; + + OpenDialog1.Filter := Format('%s|*.xml|%s|%s|', [dlgFilterXML, dlgFilterAll, GetAllFilesMask]); + SaveDialog1.Filter := OpenDialog1.Filter; end; procedure TEditorMouseOptionsAdvFrame.ReadSettings( diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_mouseaction_options.lfm lazarus-1.6+dfsg/ide/frames/editor_mouseaction_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/editor_mouseaction_options.lfm 2013-08-10 07:27:44.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_mouseaction_options.lfm 2015-03-07 02:21:55.000000000 +0000 @@ -19,13 +19,13 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 29 + Height = 23 Top = 0 Width = 636 Anchors = [akTop, akLeft, akRight] AutoSize = True BevelOuter = bvNone - ClientHeight = 29 + ClientHeight = 23 ClientWidth = 636 TabOrder = 0 Visible = False @@ -34,8 +34,8 @@ AnchorSideTop.Control = dropUserSchemes AnchorSideTop.Side = asrCenter Left = 6 - Height = 23 - Top = 3 + Height = 19 + Top = 2 Width = 138 BorderSpacing.Left = 6 Caption = 'chkPredefinedScheme' @@ -49,13 +49,13 @@ AnchorSideRight.Control = pnlUserSchemes AnchorSideRight.Side = asrBottom Left = 150 - Height = 29 + Height = 23 Top = 0 Width = 200 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 Constraints.MaxWidth = 200 - ItemHeight = 0 + ItemHeight = 15 OnChange = dropUserSchemesChange OnExit = dropUserSchemesChange OnKeyDown = dropUserSchemesKeyDown @@ -68,9 +68,9 @@ AnchorSideTop.Control = GenericDividerLabel AnchorSideTop.Side = asrBottom Left = 6 - Height = 23 - Top = 58 - Width = 135 + Height = 19 + Top = 50 + Width = 133 BorderSpacing.Left = 6 Caption = 'HideMouseCheckBox' TabOrder = 1 @@ -82,13 +82,13 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 81 - Top = 110 + Height = 107 + Top = 96 Width = 636 Anchors = [akTop, akLeft, akRight] AutoSize = True BevelOuter = bvNone - ClientHeight = 81 + ClientHeight = 107 ClientWidth = 636 TabOrder = 2 object PanelGutter: TPanel @@ -97,7 +97,7 @@ AnchorSideRight.Control = pnlAllGutter AnchorSideRight.Side = asrBottom Left = 6 - Height = 46 + Height = 57 Top = 0 Width = 624 Anchors = [akTop, akLeft, akRight] @@ -105,7 +105,7 @@ BorderSpacing.Left = 6 BorderSpacing.Right = 6 BevelOuter = bvNone - ClientHeight = 46 + ClientHeight = 57 ClientWidth = 624 TabOrder = 0 object GutterLeftRadio1: TRadioButton @@ -114,7 +114,7 @@ AnchorSideRight.Control = PanelGutter AnchorSideRight.Side = asrBottom Left = 0 - Height = 23 + Height = 19 Top = 0 Width = 624 Anchors = [akTop, akLeft, akRight] @@ -131,24 +131,39 @@ AnchorSideRight.Control = PanelGutter AnchorSideRight.Side = asrBottom Left = 0 - Height = 23 - Top = 23 + Height = 19 + Top = 19 Width = 624 Anchors = [akTop, akLeft, akRight] Caption = 'GutterLeftRadio2' OnChange = CheckOrRadioChange TabOrder = 1 end + object GutterLeftRadio3: TRadioButton + AnchorSideLeft.Control = PanelGutter + AnchorSideTop.Control = GutterLeftRadio2 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = PanelGutter + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 19 + Top = 38 + Width = 624 + Anchors = [akTop, akLeft, akRight] + Caption = 'GutterLeftRadio3' + OnChange = CheckOrRadioChange + TabOrder = 2 + end end object ResetGutterButton: TButton - AnchorSideTop.Control = PanelGutter + AnchorSideTop.Control = chkGutterTextLines AnchorSideTop.Side = asrBottom AnchorSideRight.Control = pnlAllGutter AnchorSideRight.Side = asrBottom - Left = 515 - Height = 29 - Top = 52 - Width = 115 + Left = 507 + Height = 25 + Top = 82 + Width = 123 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Top = 6 @@ -157,6 +172,18 @@ OnClick = ResetGutterButtonClick TabOrder = 1 end + object chkGutterTextLines: TCheckBox + AnchorSideLeft.Control = PanelGutter + AnchorSideTop.Control = PanelGutter + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 19 + Top = 57 + Width = 121 + Caption = 'chkGutterTextLines' + OnChange = CheckOrRadioChange + TabOrder = 2 + end end object pnlAllText: TPanel AnchorSideLeft.Control = Owner @@ -166,13 +193,13 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = pnlBottom Left = 0 - Height = 324 - Top = 220 + Height = 318 + Top = 230 Width = 636 Anchors = [akTop, akLeft, akRight, akBottom] AutoSize = True BevelOuter = bvNone - ClientHeight = 324 + ClientHeight = 318 ClientWidth = 636 TabOrder = 3 object PanelTextCheckBox: TPanel @@ -181,7 +208,7 @@ AnchorSideRight.Control = pnlAllText AnchorSideRight.Side = asrBottom Left = 6 - Height = 46 + Height = 38 Top = 0 Width = 624 Anchors = [akTop, akLeft, akRight] @@ -191,15 +218,15 @@ BorderSpacing.Bottom = 6 BevelOuter = bvNone ChildSizing.ControlsPerLine = 2 - ClientHeight = 46 + ClientHeight = 38 ClientWidth = 624 TabOrder = 0 object TextDrag: TCheckBox AnchorSideLeft.Control = PanelTextCheckBox Left = 0 - Height = 23 + Height = 19 Top = 0 - Width = 75 + Width = 67 Caption = 'TextDrag' OnChange = CheckOrRadioChange TabOrder = 0 @@ -209,9 +236,9 @@ AnchorSideTop.Control = TextDrag AnchorSideTop.Side = asrBottom Left = 0 - Height = 23 - Top = 23 - Width = 111 + Height = 19 + Top = 19 + Width = 106 Caption = 'RightMoveCaret' OnChange = CheckOrRadioChange TabOrder = 1 @@ -225,7 +252,7 @@ AnchorSideRight.Side = asrBottom Left = 0 Height = 26 - Top = 52 + Top = 44 Width = 636 Align = alNone Anchors = [akTop, akLeft, akRight] @@ -234,7 +261,7 @@ TabOrder = 1 object ToolBtnMiddle: TToolButton Tag = 2 - Left = 196 + Left = 194 Top = 2 Caption = 'ToolBtnMiddle' Grouped = True @@ -243,7 +270,7 @@ end object ToolBtnWheel: TToolButton Tag = 3 - Left = 283 + Left = 281 Top = 2 Caption = 'ToolBtnWheel' Grouped = True @@ -261,7 +288,7 @@ end object ToolBtnLeftMulti: TToolButton Tag = 1 - Left = 97 + Left = 96 Top = 2 Caption = 'ToolBtnLeftMulti' Grouped = True @@ -270,7 +297,7 @@ end object ToolBtnRight: TToolButton Tag = 4 - Left = 367 + Left = 364 Top = 2 Caption = 'ToolBtnRight' Grouped = True @@ -279,7 +306,7 @@ end object ToolBtnExtra1: TToolButton Tag = 5 - Left = 444 + Left = 442 Top = 2 Caption = 'ToolBtnExtra1' Grouped = True @@ -288,7 +315,7 @@ end object ToolBtnExtra2: TToolButton Tag = 6 - Left = 530 + Left = 523 Top = 2 Caption = 'ToolBtnExtra2' Grouped = True @@ -303,10 +330,10 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = pnlAllText AnchorSideBottom.Side = asrBottom - Left = 526 - Height = 29 - Top = 295 - Width = 104 + Left = 518 + Height = 25 + Top = 293 + Width = 112 Anchors = [akRight, akBottom] AutoSize = True BorderSpacing.Top = 6 @@ -323,8 +350,8 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ResetTextButton Left = 0 - Height = 211 - Top = 78 + Height = 217 + Top = 70 Width = 636 PageIndex = 0 Anchors = [akTop, akLeft, akRight, akBottom] @@ -333,17 +360,17 @@ object PageLeftMod: TPage object ScrollBoxLeftMod: TScrollBox Left = 0 - Height = 211 + Height = 217 Top = 0 Width = 636 - HorzScrollBar.Page = 623 + HorzScrollBar.Page = 246 HorzScrollBar.Tracking = True - VertScrollBar.Page = 211 + VertScrollBar.Page = 203 VertScrollBar.Tracking = True Align = alClient BorderStyle = bsNone - ClientHeight = 211 - ClientWidth = 623 + ClientHeight = 217 + ClientWidth = 636 TabOrder = 0 object dropCtrlLeft: TComboBox AnchorSideLeft.Control = dropAltLeft @@ -352,14 +379,14 @@ AnchorSideRight.Control = ScrollBoxLeftMod AnchorSideRight.Side = asrBottom Left = 140 - Height = 29 - Top = 41 - Width = 477 + Height = 23 + Top = 35 + Width = 490 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Right = 6 DropDownCount = 12 - ItemHeight = 0 + ItemHeight = 15 OnChange = CheckOrRadioChange Style = csDropDownList TabOrder = 0 @@ -369,9 +396,9 @@ AnchorSideTop.Control = dropCtrlLeft AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 47 - Width = 73 + Height = 15 + Top = 39 + Width = 70 BorderSpacing.Left = 6 Caption = 'CtrLLeftLabel' ParentColor = False @@ -382,14 +409,14 @@ AnchorSideRight.Control = ScrollBoxLeftMod AnchorSideRight.Side = asrBottom Left = 140 - Height = 29 + Height = 23 Top = 6 - Width = 477 + Width = 490 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Right = 6 DropDownCount = 12 - ItemHeight = 0 + ItemHeight = 15 OnChange = CheckOrRadioChange Style = csDropDownList TabOrder = 1 @@ -399,9 +426,9 @@ AnchorSideTop.Control = dropAltLeft AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 12 - Width = 65 + Height = 15 + Top = 10 + Width = 63 BorderSpacing.Left = 6 Caption = 'AltLeftLabel' ParentColor = False @@ -413,15 +440,15 @@ AnchorSideRight.Control = ScrollBoxLeftMod AnchorSideRight.Side = asrBottom Left = 140 - Height = 29 - Top = 111 - Width = 477 + Height = 23 + Top = 93 + Width = 490 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 140 BorderSpacing.Top = 6 BorderSpacing.Right = 6 DropDownCount = 12 - ItemHeight = 0 + ItemHeight = 15 OnChange = CheckOrRadioChange Style = csDropDownList TabOrder = 2 @@ -433,14 +460,14 @@ AnchorSideRight.Control = ScrollBoxLeftMod AnchorSideRight.Side = asrBottom Left = 140 - Height = 29 - Top = 76 - Width = 477 + Height = 23 + Top = 64 + Width = 490 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Right = 6 DropDownCount = 12 - ItemHeight = 0 + ItemHeight = 15 OnChange = CheckOrRadioChange Style = csDropDownList TabOrder = 3 @@ -452,14 +479,14 @@ AnchorSideRight.Control = ScrollBoxLeftMod AnchorSideRight.Side = asrBottom Left = 140 - Height = 29 - Top = 146 - Width = 477 + Height = 23 + Top = 122 + Width = 490 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Right = 6 DropDownCount = 12 - ItemHeight = 0 + ItemHeight = 15 OnChange = CheckOrRadioChange Style = csDropDownList TabOrder = 4 @@ -471,14 +498,14 @@ AnchorSideRight.Control = ScrollBoxLeftMod AnchorSideRight.Side = asrBottom Left = 140 - Height = 29 - Top = 181 - Width = 477 + Height = 23 + Top = 151 + Width = 490 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Right = 6 DropDownCount = 12 - ItemHeight = 0 + ItemHeight = 15 OnChange = CheckOrRadioChange Style = csDropDownList TabOrder = 5 @@ -490,14 +517,14 @@ AnchorSideRight.Control = ScrollBoxLeftMod AnchorSideRight.Side = asrBottom Left = 140 - Height = 29 - Top = 216 - Width = 477 + Height = 23 + Top = 180 + Width = 490 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 BorderSpacing.Right = 6 DropDownCount = 12 - ItemHeight = 0 + ItemHeight = 15 OnChange = CheckOrRadioChange Style = csDropDownList TabOrder = 6 @@ -507,9 +534,9 @@ AnchorSideTop.Control = dropShiftLeft AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 117 - Width = 73 + Height = 15 + Top = 97 + Width = 72 BorderSpacing.Left = 6 Caption = 'ShiftLeftLabel' ParentColor = False @@ -519,9 +546,9 @@ AnchorSideTop.Control = dropAltCtrlLeft AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 82 - Width = 87 + Height = 15 + Top = 68 + Width = 82 BorderSpacing.Left = 6 Caption = 'AltCtrlLeftLabel' ParentColor = False @@ -531,9 +558,9 @@ AnchorSideTop.Control = dropShiftCtrlLeft AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 187 - Width = 95 + Height = 15 + Top = 155 + Width = 91 BorderSpacing.Left = 6 Caption = 'ShiftCtrlLeftLabel' ParentColor = False @@ -543,9 +570,9 @@ AnchorSideTop.Control = dropShiftAltLeft AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 152 - Width = 89 + Height = 15 + Top = 126 + Width = 87 BorderSpacing.Left = 6 Caption = 'ShiftAltLeftLabel' ParentColor = False @@ -555,9 +582,9 @@ AnchorSideTop.Control = dropShiftAltCtrlLeft AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 222 - Width = 111 + Height = 15 + Top = 184 + Width = 106 BorderSpacing.Left = 6 Caption = 'ShiftAltCtrlLeftLabel' ParentColor = False @@ -2181,13 +2208,13 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 0 - Height = 44 - Top = 544 + Height = 40 + Top = 548 Width = 636 Anchors = [akLeft, akRight, akBottom] AutoSize = True BevelOuter = bvNone - ClientHeight = 44 + ClientHeight = 40 ClientWidth = 636 TabOrder = 4 object BottomDivider: TBevel @@ -2210,9 +2237,9 @@ AnchorSideRight.Control = ResetAllButton AnchorSideBottom.Side = asrBottom Left = 6 - Height = 17 + Height = 15 Top = 15 - Width = 523 + Width = 514 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Right = 6 @@ -2229,9 +2256,9 @@ AnchorSideRight.Control = ResetAllButton AnchorSideBottom.Side = asrBottom Left = 6 - Height = 17 + Height = 15 Top = 15 - Width = 523 + Width = 514 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Right = 6 @@ -2247,10 +2274,10 @@ AnchorSideRight.Control = pnlBottom AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom - Left = 535 - Height = 29 + Left = 526 + Height = 25 Top = 15 - Width = 95 + Width = 104 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Top = 6 @@ -2267,8 +2294,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 17 - Top = 35 + Height = 15 + Top = 29 Width = 624 Caption = 'GenericDividerLabel' Anchors = [akTop, akLeft, akRight] @@ -2283,8 +2310,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 17 - Top = 87 + Height = 15 + Top = 75 Width = 624 Caption = 'GutterDividerLabel' Anchors = [akTop, akLeft, akRight] @@ -2299,8 +2326,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 17 - Top = 197 + Height = 15 + Top = 209 Width = 624 Caption = 'TextDividerLabel' Anchors = [akTop, akLeft, akRight] diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_mouseaction_options.pas lazarus-1.6+dfsg/ide/frames/editor_mouseaction_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_mouseaction_options.pas 2013-08-10 07:27:44.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_mouseaction_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -33,6 +33,8 @@ { TEditorMouseOptionsFrame } TEditorMouseOptionsFrame = class(TAbstractIDEOptionsEditor) + chkGutterTextLines: TCheckBox; + GutterLeftRadio3: TRadioButton; lblWheel: TLabel; lblWheelAlt: TLabel; lblWheelCtrl: TLabel; @@ -191,7 +193,7 @@ procedure CheckOrRadioChange(Sender: TObject); procedure chkPredefinedSchemeChange(Sender: TObject); procedure dropUserSchemesChange(Sender: TObject); - procedure dropUserSchemesKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure dropUserSchemesKeyDown(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); procedure ResetGutterButtonClick(Sender: TObject); procedure ResetTextButtonClick(Sender: TObject); procedure ResetAllButtonClick(Sender: TObject); @@ -498,7 +500,11 @@ if GutterLeftRadio2.Checked then FTempMouseSettings.GutterLeft := moglUpClickAndSelect else + if GutterLeftRadio3.Checked then + FTempMouseSettings.GutterLeft := moglUpClickAndSelectRighHalf + else FTempMouseSettings.GutterLeft := moGLDownClick; + FTempMouseSettings.SelectOnLineNumbers := chkGutterTextLines.Checked; FTempMouseSettings.ResetGutterToDefault; if FDialog.FindEditor(TEditorMouseOptionsAdvFrame) <> nil then TEditorMouseOptionsAdvFrame(FDialog.FindEditor(TEditorMouseOptionsAdvFrame)).RefreshSettings; @@ -577,6 +583,7 @@ ACombo.Items.Add(dlfMouseSimpleButtonContextMenu); // mbaContextMenu ACombo.Items.Add(dlfMouseSimpleButtonContextMenuDbg); // mbaContextMenuDebug; ACombo.Items.Add(dlfMouseSimpleButtonContextMenuTab); // mbaContextMenuTab; + ACombo.Items.Add(dlfMouseSimpleButtonMultiCaretToggle); // mbaMultiCaretToggle; end; procedure SetupWheelCombo(ACombo: TComboBox); @@ -604,6 +611,8 @@ GutterDividerLabel.Caption := dlfMouseSimpleGutterSect; GutterLeftRadio1.Caption := dlfMouseSimpleGutterLeftDown; GutterLeftRadio2.Caption := dlfMouseSimpleGutterLeftUp; + GutterLeftRadio3.Caption := dlfMouseSimpleGutterLeftUpRight; + chkGutterTextLines.Caption := dlfMouseSimpleGutterLines; TextDividerLabel.Caption := dlfMouseSimpleTextSect; TextDrag.Caption := dlfMouseSimpleTextSectDrag; @@ -772,7 +781,9 @@ case FTempMouseSettings.GutterLeft of moGLDownClick: GutterLeftRadio1.Checked := True; moglUpClickAndSelect: GutterLeftRadio2.Checked := True; + moglUpClickAndSelectRighHalf: GutterLeftRadio3.Checked := True; end; + chkGutterTextLines.Checked := FTempMouseSettings.SelectOnLineNumbers; TextDrag.Checked := FTempMouseSettings.TextDrag; RightMoveCaret.Checked := FTempMouseSettings.TextRightMoveCaret; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_multiwindow_options.lfm lazarus-1.6+dfsg/ide/frames/editor_multiwindow_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/editor_multiwindow_options.lfm 2012-03-23 08:33:47.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_multiwindow_options.lfm 2015-11-17 14:54:06.000000000 +0000 @@ -1,4 +1,4 @@ -inherited EditorMultiWindowOptionsFrame: TEditorMultiWindowOptionsFrame +object EditorMultiWindowOptionsFrame: TEditorMultiWindowOptionsFrame Left = 0 Height = 415 Top = 0 @@ -21,15 +21,15 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 6 - Height = 214 - Top = 201 + Height = 212 + Top = 203 Width = 509 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Right = 6 BevelOuter = bvNone - ClientHeight = 214 + ClientHeight = 212 ClientWidth = 509 TabOrder = 0 object listAccessType: TCheckListBox @@ -62,7 +62,7 @@ TabOrder = 1 object lblAccessTypeDesc: TLabel Left = 0 - Height = 16 + Height = 13 Top = 0 Width = 509 Align = alTop @@ -89,7 +89,7 @@ AnchorSideRight.Side = asrBottom Left = 0 Height = 3 - Top = 92 + Top = 105 Width = 60 BorderSpacing.Bottom = 6 end @@ -99,9 +99,9 @@ AnchorSideTop.Control = pnlNBTabs AnchorSideTop.Side = asrBottom Left = 70 - Height = 16 - Top = 85 - Width = 167 + Height = 13 + Top = 100 + Width = 166 BorderSpacing.Left = 10 BorderSpacing.Bottom = 6 Caption = 'lblEditActivationOrderSection' @@ -116,10 +116,10 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 247 + Left = 246 Height = 3 - Top = 92 - Width = 274 + Top = 105 + Width = 275 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 10 end @@ -130,8 +130,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 66 - Top = 107 + Height = 59 + Top = 119 Width = 509 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -139,12 +139,12 @@ BorderSpacing.Right = 6 BorderSpacing.Bottom = 6 BevelOuter = bvNone - ClientHeight = 66 + ClientHeight = 59 ClientWidth = 509 TabOrder = 1 object lblAccessOrder: TLabel Left = 0 - Height = 16 + Height = 13 Top = 0 Width = 509 Align = alTop @@ -160,8 +160,8 @@ AnchorSideRight.Control = Panel1 AnchorSideRight.Side = asrBottom Left = 0 - Height = 19 - Top = 22 + Height = 17 + Top = 19 Width = 509 Anchors = [akTop, akLeft, akRight] Caption = 'radioAccessOrderEdit' @@ -177,8 +177,8 @@ AnchorSideRight.Control = Panel1 AnchorSideRight.Side = asrBottom Left = 0 - Height = 19 - Top = 41 + Height = 17 + Top = 36 Width = 509 Anchors = [akTop, akLeft, akRight] BorderSpacing.Bottom = 6 @@ -194,8 +194,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 16 - Top = 179 + Height = 13 + Top = 184 Width = 521 Anchors = [akTop, akLeft, akRight] Caption = 'lblAccessType' @@ -209,7 +209,7 @@ AnchorSideRight.Side = asrBottom Left = 0 Height = 3 - Top = 7 + Top = 5 Width = 60 BorderSpacing.Bottom = 6 end @@ -218,9 +218,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Owner Left = 70 - Height = 16 + Height = 13 Top = 0 - Width = 127 + Width = 125 BorderSpacing.Left = 10 BorderSpacing.Bottom = 6 Caption = 'lblMultiWinTabSection' @@ -235,10 +235,10 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 207 + Left = 205 Height = 3 - Top = 7 - Width = 314 + Top = 5 + Width = 316 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 10 end @@ -249,8 +249,8 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 57 - Top = 22 + Height = 75 + Top = 19 Width = 509 Anchors = [akTop, akLeft, akRight] AutoSize = True @@ -259,16 +259,16 @@ BorderSpacing.Bottom = 6 BevelOuter = bvNone ChildSizing.ControlsPerLine = 2 - ClientHeight = 57 + ClientHeight = 75 ClientWidth = 509 TabOrder = 2 object chkShowCloseBtn: TCheckBox AnchorSideLeft.Control = pnlNBTabs AnchorSideTop.Control = pnlNBTabs Left = 0 - Height = 19 + Height = 17 Top = 0 - Width = 115 + Width = 102 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaLeftTop Caption = 'chkShowCloseBtn' @@ -279,9 +279,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = pnlNBTabs Left = 255 - Height = 19 + Height = 17 Top = 0 - Width = 117 + Width = 102 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaLeftTop Caption = 'chkShowNumbers' @@ -293,9 +293,9 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 19 - Top = 19 - Width = 116 + Height = 17 + Top = 17 + Width = 101 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaLeftTop Caption = 'chkHideSingleTab' @@ -307,9 +307,9 @@ AnchorSideTop.Control = chkShowNumbers AnchorSideTop.Side = asrBottom Left = 255 - Height = 19 - Top = 19 - Width = 116 + Height = 17 + Top = 17 + Width = 104 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaLeftTop Caption = 'chkUseTabHistory' @@ -320,9 +320,9 @@ AnchorSideTop.Control = chkHideSingleTab AnchorSideTop.Side = asrBottom Left = 0 - Height = 19 - Top = 38 - Width = 159 + Height = 17 + Top = 34 + Width = 140 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaLeftTop Caption = 'chkCtrlMiddleCloseOthers' @@ -338,5 +338,44 @@ Width = 1 ParentColor = False end + object chkMultiLine: TCheckBox + AnchorSideLeft.Control = CenterLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = chkUseTabHistory + AnchorSideTop.Side = asrBottom + Left = 255 + Height = 17 + Top = 34 + Width = 75 + Caption = 'chkMultiLine' + TabOrder = 5 + end + object EditorTabPositionLabel: TLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = EditorTabPositionCheckBox + AnchorSideTop.Side = asrCenter + Left = 156 + Height = 13 + Top = 58 + Width = 108 + BorderSpacing.Left = 6 + Caption = 'EditorTabPositionLabel' + ParentColor = False + end + object EditorTabPositionCheckBox: TComboBox + AnchorSideLeft.Control = EditorTabPositionLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = chkCtrlMiddleCloseOthers + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 21 + Top = 54 + Width = 150 + BorderSpacing.Left = 5 + BorderSpacing.Top = 3 + ItemHeight = 13 + Style = csDropDownList + TabOrder = 6 + end end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/editor_multiwindow_options.pas lazarus-1.6+dfsg/ide/frames/editor_multiwindow_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editor_multiwindow_options.pas 2013-01-30 15:15:35.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editor_multiwindow_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -38,11 +38,14 @@ Bevel2a: TBevel; Bevel2: TBevel; CenterLabel: TLabel; + chkMultiLine: TCheckBox; chkCtrlMiddleCloseOthers: TCheckBox; chkUseTabHistory: TCheckBox; chkShowCloseBtn: TCheckBox; chkShowNumbers: TCheckBox; chkHideSingleTab: TCheckBox; + EditorTabPositionCheckBox: TComboBox; + EditorTabPositionLabel: TLabel; lblAccessTypeDesc: TLabel; lblMultiWinTabSection: TLabel; listAccessType: TCheckListBox; @@ -57,7 +60,7 @@ Panel2: TPanel; Splitter1: TSplitter; procedure listAccessTypeClickCheck(Sender: TObject); - procedure listAccessTypeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure listAccessTypeKeyUp(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); procedure radioAccessOrderEditChange(Sender: TObject); private { private declarations } @@ -66,7 +69,7 @@ constructor Create(AOwner: TComponent); override; destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -127,6 +130,7 @@ begin TmpNB := TSourceNotebook.Create(nil, -1); chkShowCloseBtn.Enabled := nbcShowCloseButtons in TmpNB.GetCapabilities; + chkMultiLine.Enabled := nbcMultiLine in TmpNB.GetCapabilities; TmpNB.Free; lblMultiWinTabSection.Caption := dlgMultiWinTabGroup; @@ -140,11 +144,19 @@ chkShowCloseBtn.Caption := dlgCloseButtonsNotebook; chkUseTabHistory.Caption := dlgUseTabsHistory; chkCtrlMiddleCloseOthers.Caption := dlgCtrlMiddleTabCloseOtherPages; + chkMultiLine.Caption := dlgSourceEditTabMultiLine; + EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosTop); + EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosBottom); + EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosLeft); + EditorTabPositionCheckBox.Items.Add(lisNotebookTabPosRight); + EditorTabPositionLabel.Caption := dlgNotebookTabPos; end; procedure TEditorMultiWindowOptionsFrame.ReadSettings( AOptions: TAbstractIDEOptions); +const + TabPosToIndex : Array [TTabPosition] of Integer = (0, 1, 2, 3); var i: Integer; begin @@ -154,6 +166,8 @@ chkShowCloseBtn.Checked := ShowTabCloseButtons and chkShowCloseBtn.Enabled; chkUseTabHistory.Checked := UseTabHistory; chkCtrlMiddleCloseOthers.Checked := CtrlMiddleTabClickClosesOthers; + chkMultiLine.Checked := MultiLineTab; + EditorTabPositionCheckBox.ItemIndex := TabPosToIndex[TabPosition]; end; FMultiWinEditAccessOrder.Assign(TEditorOptions(AOptions).MultiWinEditAccessOrder); @@ -171,6 +185,8 @@ procedure TEditorMultiWindowOptionsFrame.WriteSettings( AOptions: TAbstractIDEOptions); +const + TabIndexToPos : Array [0..3] of TTabPosition = (tpTop, tpBottom, tpLeft, tpRight); begin TEditorOptions(AOptions).MultiWinEditAccessOrder.Assign(FMultiWinEditAccessOrder); with TEditorOptions(AOptions) do begin @@ -179,6 +195,8 @@ ShowTabCloseButtons := chkShowCloseBtn.Checked; UseTabHistory := chkUseTabHistory.Checked; CtrlMiddleTabClickClosesOthers := chkCtrlMiddleCloseOthers.Checked; + MultiLineTab := chkMultiLine.Checked; + TabPosition := TabIndexToPos[EditorTabPositionCheckBox.ItemIndex]; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/editortoolbar_options.lfm lazarus-1.6+dfsg/ide/frames/editortoolbar_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/editortoolbar_options.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editortoolbar_options.lfm 2015-10-05 23:00:40.000000000 +0000 @@ -0,0 +1,133 @@ +object EditorToolbarOptionsFrame: TEditorToolbarOptionsFrame + Left = 0 + Height = 342 + Top = 0 + Width = 503 + ClientHeight = 342 + ClientWidth = 503 + TabOrder = 0 + DesignLeft = 521 + DesignTop = 251 + object pnTop: TPanel + Left = 0 + Height = 342 + Top = 0 + Width = 503 + Align = alClient + BevelOuter = bvNone + ClientHeight = 342 + ClientWidth = 503 + Constraints.MinWidth = 350 + TabOrder = 0 + object dbGeneralSettings: TDividerBevel + Left = 0 + Height = 15 + Top = 5 + Width = 503 + Caption = 'Editor Toolbars Settings' + Align = alTop + BorderSpacing.Top = 5 + BorderSpacing.Bottom = 5 + Font.Style = [fsBold] + ParentColor = False + ParentFont = False + end + object cbCoolBarVisible: TCheckBox + AnchorSideLeft.Control = pnTop + AnchorSideTop.Control = dbGeneralSettings + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 19 + Top = 32 + Width = 108 + BorderSpacing.Top = 12 + Caption = 'Toolbar is visible' + OnClick = cbCoolBarVisibleClick + TabOrder = 0 + end + object pnTopCenterLabel: TLabel + AnchorSideLeft.Control = pnTop + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = pnTop + Left = 251 + Height = 1 + Top = 0 + Width = 1 + ParentColor = False + end + object bConfig: TBitBtn + AnchorSideLeft.Control = cbCoolBarVisible + AnchorSideTop.Control = cbCoolBarVisible + AnchorSideTop.Side = asrBottom + AnchorSideBottom.Side = asrBottom + Left = 0 + Height = 25 + Top = 65 + Width = 79 + AutoSize = True + BorderSpacing.Top = 14 + Caption = 'Configure' + OnClick = bConfigClick + TabOrder = 2 + end + object bDefaultToolbar: TBitBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = bConfig + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = cbPos + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Side = asrBottom + Left = 168 + Height = 25 + Top = 65 + Width = 110 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Top = 6 + Caption = 'Restore defaults' + OnClick = bDefaultToolbarClick + TabOrder = 3 + end + object lblpos: TLabel + AnchorSideLeft.Control = cbCoolBarVisible + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = cbCoolBarVisible + AnchorSideTop.Side = asrCenter + Left = 140 + Height = 15 + Top = 34 + Width = 32 + BorderSpacing.Left = 32 + BorderSpacing.Right = 6 + Caption = 'lblpos' + ParentColor = False + end + object cbPos: TComboBox + AnchorSideLeft.Control = lblpos + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = lblpos + AnchorSideTop.Side = asrCenter + AnchorSideRight.Side = asrBottom + Left = 178 + Height = 23 + Top = 30 + Width = 100 + BorderSpacing.Bottom = 6 + ItemHeight = 15 + ItemIndex = 0 + Items.Strings = ( + 'Top' + 'Bottom' + 'Right' + 'Left' + ) + OnChange = cbPosChange + Style = csDropDownList + TabOrder = 1 + Text = 'Top' + end + end + object imButtons: TImageList + left = 304 + end +end diff -Nru lazarus-1.4.4+dfsg/ide/frames/editortoolbar_options.pas lazarus-1.6+dfsg/ide/frames/editortoolbar_options.pas --- lazarus-1.4.4+dfsg/ide/frames/editortoolbar_options.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/editortoolbar_options.pas 2015-10-05 23:00:40.000000000 +0000 @@ -0,0 +1,185 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + Author: Juha Manninen + Abstract: + Frame for editortoolbar options. +} +unit editortoolbar_options; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, ExtCtrls, Buttons, Controls, StdCtrls, DividerBevel, + LazarusIDEStrConsts, LCLProc, IDEOptionsIntf, EnvironmentOpts, + EditorToolbarStatic, ToolbarConfig; + +type + + { TEditorToolbarOptionsFrame } + + TEditorToolbarOptionsFrame = class(TAbstractIDEOptionsEditor) + bConfig: TBitBtn; + bDefaultToolbar: TBitBtn; + cbCoolBarVisible: TCheckBox; + cbPos: TComboBox; + imButtons: TImageList; + dbGeneralSettings: TDividerBevel; + lblpos: TLabel; + pnTopCenterLabel: TLabel; + pnTop: TPanel; + procedure bConfigClick(Sender: TObject); + procedure bDefaultToolbarClick(Sender: TObject); + procedure cbCoolBarVisibleClick(Sender: TObject); + procedure cbPosChange(Sender: TObject); + private + FLocalOptions: TEditorToolBarOptions; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetTitle: string; override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings(AOptions: TAbstractIDEOptions); override; + procedure WriteSettings(AOptions: TAbstractIDEOptions); override; + class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; + end; + +var + sPosValues: array[0..3] of string = ('Top','Bottom','Right','Left'); + sLocalizedPosValues: array[0..3] of string; + + +implementation + +{$R *.lfm} + +function IndexFromEnglish (AValue: string): Integer; +var + i: Integer; +begin + for i := 0 to 3 do + if AValue = sPosValues[i] then + exit(i); + Result := 0; // default is Top +end; + +{ TEditorToolbarOptionsFrame } + +function TEditorToolbarOptionsFrame.GetTitle: string; +begin + Result := lisEditorToolbar; +end; + +procedure TEditorToolbarOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); +var + i: Integer; +begin + sLocalizedPosValues[0] := lisTop; + sLocalizedPosValues[1] := lisBottom; + sLocalizedPosValues[2] := lisRight; + sLocalizedPosValues[3] := lisLeft; + for i := 0 to high(sLocalizedPosValues) do + cbPos.Items[i] := sLocalizedPosValues[i]; // localized + cbPos.Caption := cbPos.Items[cbPos.ItemIndex]; + + dbGeneralSettings.Caption := lisEditorToolbarSettings; // ToDo: Will be removed ... + cbCoolBarVisible.Caption := lisEditorToolbarVisible; + lblpos.Caption := lisPosition; + bDefaultToolbar.Caption := lisCmpRestoreDefaults; + bConfig.Caption := lisCoolbarConfigure; +end; + +procedure TEditorToolbarOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); +var + Opts: TEditorToolBarOptions; +begin + Opts := (AOptions as TEnvironmentOptions).Desktop.EditorToolBarOptions; + cbCoolBarVisible.Checked := Opts.Visible; + cbPos.ItemIndex := IndexFromEnglish(Opts.Position); + // Disable controls when toolbar is hidden. + cbPos.Enabled := Opts.Visible; + bConfig.Enabled := Opts.Visible; + bDefaultToolbar.Enabled := Opts.Visible; + // Copy from environment options to local options. + FLocalOptions.Assign(Opts); +end; + +procedure TEditorToolbarOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); +var + Opts: TEditorToolBarOptions; +begin + Opts := (AOptions as TEnvironmentOptions).Desktop.EditorToolBarOptions; + Opts.Assign(FLocalOptions); +end; + +class function TEditorToolbarOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass; +begin + Result := TEnvironmentOptions; +end; + +procedure TEditorToolbarOptionsFrame.cbCoolBarVisibleClick(Sender: TObject); +var + chk: Boolean; +begin + chk := (Sender as TCheckBox).Checked; + FLocalOptions.Visible := chk; + // Disable controls when toolbar is hidden. + cbPos.Enabled := chk; + bConfig.Enabled := chk; + bDefaultToolbar.Enabled := chk; +end; + +procedure TEditorToolbarOptionsFrame.cbPosChange(Sender: TObject); +begin + DebugLn(['TEditorToolbarOptionsFrame.cbPosChange: cbPos.ItemIndex=', cbPos.ItemIndex]); + if cbPos.ItemIndex >= 0 then + FLocalOptions.Position := sPosValues[cbPos.ItemIndex]; +end; + +constructor TEditorToolbarOptionsFrame.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FLocalOptions := TEditorToolBarOptions.Create; +end; + +destructor TEditorToolbarOptionsFrame.Destroy; +begin + FreeAndNil(FLocalOptions); + inherited Destroy; +end; + +procedure TEditorToolbarOptionsFrame.bConfigClick(Sender: TObject); +begin + if ShowToolBarConfig(FLocalOptions.ButtonNames) = mrOK then + ; // Do Nothing, changed options were copied. +end; + +procedure TEditorToolbarOptionsFrame.bDefaultToolbarClick(Sender: TObject); +begin + FLocalOptions.CreateDefaults; +end; + + +initialization + RegisterIDEOptionsEditor(GroupEnvironment, TEditorToolbarOptionsFrame, EnvOptionsEditorToolbar); + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/frames/env_file_filters.pas lazarus-1.6+dfsg/ide/frames/env_file_filters.pas --- lazarus-1.4.4+dfsg/ide/frames/env_file_filters.pas 2013-06-02 17:54:22.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/env_file_filters.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Grids, Dialogs, Controls, + Classes, SysUtils, LazFileUtils, LResources, Forms, Grids, Dialogs, Controls, LCLProc, LCLType, Menus, StdCtrls, LazConfigStorage, IDEOptionsIntf, BaseIDEIntf, IDEDialogs, EnvironmentOpts, IDEOptionDefs, LazarusIDEStrConsts; @@ -25,7 +25,7 @@ pmiDelRow: TMenuItem; pmiInsRow: TMenuItem; lblTitle: TLabel; - procedure grdFileFiltersKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure grdFileFiltersKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure pmiAddRowClick(Sender: TObject); procedure pmiDelRowClick(Sender: TObject); procedure pmiInsRowClick(Sender: TObject); @@ -38,9 +38,9 @@ constructor Create(TheOwner: TComponent); override; destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; - procedure ReadSettings(AOptions: TAbstractIDEOptions); override; - procedure WriteSettings(AOptions: TAbstractIDEOptions); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override; + procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; end; @@ -64,8 +64,6 @@ procedure LoadFileDialogFilter; -const - cFilter = '%s (%s)|%s|'; // each filter is seperated by another | sign var cfg: TConfigStorage; cnt: integer; @@ -148,12 +146,12 @@ function GetDefaultFileDialogFilter: string; begin - Result := lisLazarusUnit + ' (*.pas;*.pp)|*.pas;*.pp' - + '|' + lisLazarusProject + ' (*.lpi)|*.lpi' - + '|' + lisLazarusForm + ' (*.lfm;*.dfm)|*.lfm;*.dfm' - + '|' + lisLazarusPackage + ' (*.lpk)|*.lpk' - + '|' + lisLazarusProjectSource + ' (*.lpr)|*.lpr' - + '|' + lisLazarusOtherFile + ' (*.inc;*.lrs;*.lpl)|*.inc;*.lrs;*.lpl'; + Result := dlgFilterLazarusUnit + ' (*.pas;*.pp)|*.pas;*.pp' + + '|' + dlgFilterLazarusProject + ' (*.lpi)|*.lpi' + + '|' + dlgFilterLazarusForm + ' (*.lfm;*.dfm)|*.lfm;*.dfm' + + '|' + dlgFilterLazarusPackage + ' (*.lpk)|*.lpk' + + '|' + dlgFilterLazarusProjectSource + ' (*.lpr)|*.lpr' + + '|' + dlgFilterLazarusOtherFile + ' (*.inc;*.lrs;*.lpl)|*.inc;*.lrs;*.lpl'; end; function GetFileDialogFilterFromGrid(Grid: TStringGrid): string; diff -Nru lazarus-1.4.4+dfsg/ide/frames/files_options.lfm lazarus-1.6+dfsg/ide/frames/files_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/files_options.lfm 2014-05-28 07:18:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/files_options.lfm 2015-10-03 21:52:02.000000000 +0000 @@ -17,7 +17,7 @@ Left = 2 Height = 15 Top = 2 - Width = 145 + Width = 138 Caption = 'MaxRecentOpenFilesLabel' ParentColor = False end @@ -27,7 +27,7 @@ Left = 287 Height = 15 Top = 2 - Width = 155 + Width = 146 BorderSpacing.Left = 3 Caption = 'MaxRecentProjectFilesLabel' ParentColor = False @@ -38,22 +38,23 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 2 - Height = 24 - Top = 50 - Width = 212 + Height = 19 + Top = 48 + Width = 195 BorderSpacing.Top = 6 Caption = 'OpenLastProjectAtStartCheckBox' TabOrder = 0 end object ShowCompileDialogCheckBox: TCheckBox AnchorSideLeft.Control = Owner - AnchorSideTop.Control = OpenLastProjectAtStartCheckBox + AnchorSideTop.Control = MultipleInstancesComboBox AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 2 - Height = 24 - Top = 74 - Width = 188 + Height = 19 + Top = 94 + Width = 180 + BorderSpacing.Top = 2 Caption = 'ShowCompileDialogCheckBox' OnChange = ShowCompileDialogCheckBoxChange TabOrder = 1 @@ -64,8 +65,8 @@ AnchorSideTop.Side = asrBottom Left = 2 Height = 15 - Top = 132 - Width = 87 + Top = 142 + Width = 82 BorderSpacing.Top = 10 Caption = 'LazarusDirLabel' ParentColor = False @@ -78,8 +79,8 @@ AnchorSideBottom.Control = LazarusDirComboBox AnchorSideBottom.Side = asrBottom Left = 542 - Height = 27 - Top = 147 + Height = 23 + Top = 157 Width = 25 Anchors = [akTop, akRight, akBottom] Caption = '...' @@ -92,11 +93,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = LazarusDirButton Left = 2 - Height = 27 - Top = 147 + Height = 23 + Top = 157 Width = 540 Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 + ItemHeight = 15 TabOrder = 3 Text = 'LazarusDirComboBox' end @@ -106,11 +107,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = CompilerPathButton Left = 2 - Height = 27 - Top = 195 + Height = 23 + Top = 201 Width = 540 Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 + ItemHeight = 15 TabOrder = 4 Text = 'CompilerPathComboBox' end @@ -121,8 +122,8 @@ AnchorSideBottom.Control = CompilerPathComboBox AnchorSideBottom.Side = asrBottom Left = 542 - Height = 27 - Top = 195 + Height = 23 + Top = 201 Width = 25 Anchors = [akTop, akRight, akBottom] Caption = '...' @@ -135,8 +136,8 @@ AnchorSideTop.Side = asrBottom Left = 2 Height = 15 - Top = 180 - Width = 103 + Top = 186 + Width = 101 BorderSpacing.Top = 6 Caption = 'CompilerPathLabel' ParentColor = False @@ -147,11 +148,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = FPCSourceDirButton Left = 2 - Height = 27 - Top = 243 + Height = 23 + Top = 245 Width = 540 Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 + ItemHeight = 15 TabOrder = 6 Text = 'FPCSourceDirComboBox' end @@ -162,8 +163,8 @@ AnchorSideBottom.Control = FPCSourceDirComboBox AnchorSideBottom.Side = asrBottom Left = 542 - Height = 27 - Top = 243 + Height = 23 + Top = 245 Width = 25 Anchors = [akTop, akRight, akBottom] Caption = '...' @@ -176,8 +177,8 @@ AnchorSideTop.Side = asrBottom Left = 2 Height = 15 - Top = 228 - Width = 104 + Top = 230 + Width = 100 BorderSpacing.Top = 6 Caption = 'FPCSourceDirLabel' ParentColor = False @@ -188,8 +189,8 @@ AnchorSideTop.Side = asrBottom Left = 2 Height = 15 - Top = 276 - Width = 83 + Top = 274 + Width = 81 BorderSpacing.Top = 6 Caption = 'MakePathLabel' ParentColor = False @@ -200,8 +201,8 @@ AnchorSideTop.Side = asrBottom Left = 2 Height = 15 - Top = 324 - Width = 97 + Top = 318 + Width = 92 BorderSpacing.Top = 6 Caption = 'TestBuildDirLabel' ParentColor = False @@ -212,11 +213,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = MakePathButton Left = 2 - Height = 27 - Top = 291 + Height = 23 + Top = 289 Width = 540 Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 + ItemHeight = 15 TabOrder = 8 Text = 'MakePathComboBox' end @@ -227,8 +228,8 @@ AnchorSideBottom.Control = MakePathComboBox AnchorSideBottom.Side = asrBottom Left = 542 - Height = 27 - Top = 291 + Height = 23 + Top = 289 Width = 25 Anchors = [akTop, akRight, akBottom] Caption = '...' @@ -241,11 +242,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = TestBuildDirButton Left = 2 - Height = 27 - Top = 339 + Height = 23 + Top = 333 Width = 540 Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 + ItemHeight = 15 TabOrder = 10 Text = 'TestBuildDirComboBox' end @@ -256,8 +257,8 @@ AnchorSideBottom.Control = TestBuildDirComboBox AnchorSideBottom.Side = asrBottom Left = 542 - Height = 27 - Top = 339 + Height = 23 + Top = 333 Width = 25 Anchors = [akTop, akRight, akBottom] Caption = '...' @@ -270,9 +271,9 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 32 - Height = 24 - Top = 98 - Width = 215 + Height = 19 + Top = 113 + Width = 206 BorderSpacing.Left = 30 Caption = 'AutoCloseCompileDialogCheckBox' TabOrder = 12 @@ -283,8 +284,8 @@ AnchorSideTop.Side = asrBottom Left = 2 Height = 15 - Top = 372 - Width = 158 + Top = 362 + Width = 154 Alignment = taRightJustify BorderSpacing.Top = 6 Caption = 'CompilerTranslationFileLabel' @@ -299,8 +300,8 @@ AnchorSideBottom.Control = CompilerTranslationFileComboBox AnchorSideBottom.Side = asrBottom Left = 542 - Height = 27 - Top = 387 + Height = 23 + Top = 377 Width = 25 Anchors = [akTop, akRight, akBottom] Caption = '...' @@ -315,11 +316,11 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = CompilerTranslationFileButton Left = 2 - Height = 27 - Top = 387 + Height = 23 + Top = 377 Width = 540 Anchors = [akTop, akLeft, akRight] - ItemHeight = 0 + ItemHeight = 15 ParentShowHint = False ShowHint = True TabOrder = 14 @@ -341,7 +342,7 @@ AnchorSideRight.Control = lblCenter AnchorSideRight.Side = asrBottom Left = 2 - Height = 25 + Height = 23 Top = 19 Width = 278 Anchors = [akTop, akLeft, akRight] @@ -356,7 +357,7 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 289 - Height = 25 + Height = 23 Top = 19 Width = 278 Anchors = [akTop, akLeft, akRight] @@ -364,4 +365,30 @@ BorderSpacing.Around = 2 TabOrder = 16 end + object MultipleInstancesLabel: TLabel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = MultipleInstancesComboBox + AnchorSideTop.Side = asrCenter + Left = 2 + Height = 15 + Top = 73 + Width = 121 + Caption = 'MultipleInstancesLabel' + ParentColor = False + end + object MultipleInstancesComboBox: TComboBox + AnchorSideLeft.Control = MultipleInstancesLabel + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = OpenLastProjectAtStartCheckBox + AnchorSideTop.Side = asrBottom + Left = 131 + Height = 23 + Top = 69 + Width = 294 + BorderSpacing.Left = 8 + BorderSpacing.Top = 2 + ItemHeight = 15 + Style = csDropDownList + TabOrder = 17 + end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/files_options.pas lazarus-1.6+dfsg/ide/frames/files_options.pas --- lazarus-1.4.4+dfsg/ide/frames/files_options.pas 2014-10-30 19:49:22.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/files_options.pas 2015-10-02 09:42:44.000000000 +0000 @@ -29,9 +29,8 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, CodeToolManager, DefineTemplates, Forms, - StdCtrls, Dialogs, Controls, Spin, EnvironmentOpts, MacroIntf, - IDEOptionsIntf, IDEDialogs, + SysUtils, StdCtrls, Dialogs, Controls, Spin, FileUtil, LazFileUtils, + EnvironmentOpts, CodeToolManager, DefineTemplates, IDEOptionsIntf, IDEDialogs, LazarusIDEStrConsts, InputHistory, LazConf, IDEProcs, IDEUtils, InitialSetupProc, DialogProcs; @@ -41,6 +40,7 @@ TFilesOptionsFrame = class(TAbstractIDEOptionsEditor) AutoCloseCompileDialogCheckBox: TCheckBox; + MultipleInstancesComboBox: TComboBox; CompilerTranslationFileButton:TButton; CompilerTranslationFileComboBox:TComboBox; CompilerTranslationFileLabel:TLabel; @@ -50,6 +50,7 @@ FPCSourceDirButton:TButton; FPCSourceDirComboBox:TComboBox; FPCSourceDirLabel:TLabel; + MultipleInstancesLabel: TLabel; lblCenter: TLabel; LazarusDirButton:TButton; LazarusDirComboBox:TComboBox; @@ -97,7 +98,7 @@ public function Check: Boolean; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; procedure RestoreSettings(AOptions: TAbstractIDEOptions); override; @@ -156,7 +157,7 @@ InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist]; OpenDialog.Title:=lisChooseCompilerMessages; - OpenDialog.Filter:=lisFPCMessageFile+' (*.msg)|*.msg|'+dlgAllFiles+'|'+ + OpenDialog.Filter:=dlgFilterFPCMessageFile+' (*.msg)|*.msg|'+dlgFilterAll+'|'+ GetAllFilesMask; if OpenDialog.Execute then begin AFilename:=CleanAndExpandFilename(OpenDialog.Filename); @@ -230,6 +231,16 @@ Add(ProgramDirectory(true)); EndUpdate; end; + MultipleInstancesLabel.Caption := dlgMultipleInstances; + with MultipleInstancesComboBox.Items do + begin + BeginUpdate; + Add(dlgMultipleInstances_AlwaysStartNew); + Add(dlgMultipleInstances_OpenFilesInRunning); + Add(dlgMultipleInstances_ForceSingleInstance); + EndUpdate; + end; + Assert(MultipleInstancesComboBox.Items.Count = Ord(High(TIDEMultipleInstancesOption))+1); CompilerPathLabel.Caption:=Format(dlgFpcExecutable,[GetDefaultCompilerFilename]); FPCSourceDirLabel.Caption:=dlgFpcSrcPath; @@ -362,6 +373,8 @@ // open last project at start OpenLastProjectAtStartCheckBox.Checked:=OpenLastProjectAtStart; + MultipleInstancesComboBox.ItemIndex := Ord(MultipleInstances); + // compile dialog fOldShowCompileDialog:=ShowCompileDialog; ShowCompileDialogCheckBox.Checked:=ShowCompileDialog; @@ -392,6 +405,7 @@ MaxRecentOpenFiles := MaxRecentOpenFilesSpin.Value; MaxRecentProjectFiles := MaxRecentProjectFilesSpin.Value; OpenLastProjectAtStart:=OpenLastProjectAtStartCheckBox.Checked; + MultipleInstances := TIDEMultipleInstancesOption(MultipleInstancesComboBox.ItemIndex); ShowCompileDialog := ShowCompileDialogCheckBox.Checked; AutoCloseCompileDialog := AutoCloseCompileDialogCheckBox.Checked; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/formed_options.lfm lazarus-1.6+dfsg/ide/frames/formed_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/formed_options.lfm 2014-10-30 19:49:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/formed_options.lfm 2015-06-28 12:27:56.000000000 +0000 @@ -17,24 +17,24 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 232 - Height = 183 + Height = 153 Top = 0 Width = 537 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 Caption = 'GridGroupBox' - ClientHeight = 158 + ClientHeight = 133 ClientWidth = 533 - TabOrder = 0 + TabOrder = 1 object GridSizeXLabel: TLabel AnchorSideLeft.Control = GridGroupBox AnchorSideTop.Control = GridSizeXSpinEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 20 - Top = 94 - Width = 100 + Height = 15 + Top = 79 + Width = 77 BorderSpacing.Around = 6 Caption = 'GridSizeXLabel' ParentColor = False @@ -44,9 +44,9 @@ AnchorSideTop.Control = GridSizeYSpinEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 20 - Top = 128 - Width = 99 + Height = 15 + Top = 108 + Width = 77 BorderSpacing.Around = 6 Caption = 'GridSizeYLabel' ParentColor = False @@ -58,24 +58,24 @@ AnchorSideRight.Control = GridGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 - Top = 60 - Width = 166 + Height = 19 + Top = 50 + Width = 134 BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Right = 6 Caption = 'SnapToGridCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 1 + TabOrder = 2 end object ShowGridCheckBox: TCheckBox AnchorSideLeft.Control = GridGroupBox AnchorSideTop.Control = GridGroupBox Left = 6 - Height = 24 + Height = 19 Top = 6 - Width = 152 + Width = 123 BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = 'ShowGridCheckBox' @@ -88,24 +88,24 @@ AnchorSideTop.Control = ShowGridCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 33 - Width = 209 + Height = 19 + Top = 28 + Width = 167 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'ShowBorderSpaceCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 2 + TabOrder = 1 end object GridSizeXSpinEdit: TSpinEdit AnchorSideLeft.Control = GridSizeXLabel AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = SnapToGridCheckBox AnchorSideTop.Side = asrBottom - Left = 112 - Height = 28 - Top = 90 + Left = 89 + Height = 23 + Top = 75 Width = 64 BorderSpacing.Around = 6 MaxValue = 128 @@ -120,9 +120,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = GridSizeXSpinEdit AnchorSideTop.Side = asrBottom - Left = 111 - Height = 28 - Top = 124 + Left = 89 + Height = 23 + Top = 104 Width = 64 BorderSpacing.Around = 6 MaxValue = 128 @@ -142,16 +142,16 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 0 - Height = 250 - Top = 283 + Height = 205 + Top = 238 Width = 769 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 Caption = 'FormEditMiscGroupBox' - ClientHeight = 225 + ClientHeight = 185 ClientWidth = 765 - TabOrder = 1 + TabOrder = 3 object ShowComponentCaptionsCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox AnchorSideTop.Control = RubberbandSelectsGrandChildsCheckBox @@ -159,16 +159,16 @@ AnchorSideRight.Control = FormEditMiscGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 - Top = 33 - Width = 260 + Height = 19 + Top = 28 + Width = 212 BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Right = 6 Caption = 'ShowComponentCaptionsCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 0 + TabOrder = 1 end object ShowEditorHintsCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox @@ -177,16 +177,16 @@ AnchorSideRight.Control = FormEditMiscGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 - Top = 60 - Width = 198 + Height = 19 + Top = 50 + Width = 160 BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Right = 6 Caption = 'ShowEditorHintsCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 1 + TabOrder = 2 end object OpenDesignerOnOpenUnitCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox @@ -195,16 +195,16 @@ AnchorSideRight.Control = FormEditMiscGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 - Top = 87 - Width = 265 + Height = 19 + Top = 72 + Width = 214 BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Right = 6 Caption = 'OpenDesignerOnOpenUnitCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 2 + TabOrder = 3 end object RightClickSelectsCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox @@ -213,15 +213,15 @@ AnchorSideRight.Control = FormEditMiscGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 - Top = 114 - Width = 200 + Height = 19 + Top = 94 + Width = 162 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'RightClickSelectsCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 3 + TabOrder = 4 end object DesignerPaintLazyCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox @@ -230,24 +230,24 @@ AnchorSideRight.Control = FormEditMiscGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 - Top = 141 - Width = 209 + Height = 19 + Top = 116 + Width = 168 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'DesignerPaintLazyCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 4 + TabOrder = 5 end object CreateCompFocusNameCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox AnchorSideTop.Control = DesignerPaintLazyCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 168 - Width = 248 + Height = 19 + Top = 138 + Width = 202 BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Bottom = 3 @@ -255,7 +255,7 @@ OnChange = CreateCompFocusNameCheckBoxChange ParentShowHint = False ShowHint = True - TabOrder = 5 + TabOrder = 6 end object RubberbandSelectsGrandChildsCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox @@ -263,7 +263,7 @@ AnchorSideRight.Control = FormEditMiscGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 + Height = 19 Top = 6 Width = 759 Anchors = [akTop, akLeft, akRight] @@ -272,38 +272,38 @@ Caption = 'RubberbandSelectsGrandChildsCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 6 + TabOrder = 0 end object CheckPackagesOnFormCreateCheckBox: TCheckBox AnchorSideLeft.Control = FormEditMiscGroupBox AnchorSideTop.Control = SwitchToFavoritesOITabCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 195 - Width = 284 + Height = 19 + Top = 160 + Width = 232 BorderSpacing.Left = 6 BorderSpacing.Top = 3 BorderSpacing.Bottom = 6 Caption = 'CheckPackagesOnFormCreateCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 7 + TabOrder = 8 end object SwitchToFavoritesOITabCheckBox: TCheckBox AnchorSideLeft.Control = CreateCompFocusNameCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = CreateCompFocusNameCheckBox AnchorSideTop.Side = asrCenter - Left = 274 - Height = 24 - Top = 168 - Width = 247 + Left = 228 + Height = 19 + Top = 138 + Width = 200 BorderSpacing.Left = 20 Caption = 'SwitchToFavoritesOITabCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 8 + TabOrder = 7 end end object GuideLinesGroupBox: TGroupBox @@ -315,15 +315,15 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 232 - Height = 88 - Top = 189 + Height = 73 + Top = 159 Width = 537 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = 'GuideLinesGroupBox' - ClientHeight = 63 + ClientHeight = 53 ClientWidth = 533 TabOrder = 2 object ShowGuideLinesCheckBox: TCheckBox @@ -331,7 +331,7 @@ AnchorSideRight.Control = GuideLinesGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 + Height = 19 Top = 6 Width = 521 Anchors = [akTop, akLeft, akRight] @@ -350,8 +350,8 @@ AnchorSideRight.Control = GuideLinesGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 24 - Top = 33 + Height = 19 + Top = 28 Width = 521 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 @@ -372,20 +372,20 @@ AnchorSideBottom.Control = GuideLinesGroupBox AnchorSideBottom.Side = asrBottom Left = 0 - Height = 277 + Height = 232 Top = 0 Width = 226 Anchors = [akTop, akLeft, akBottom] Caption = 'DesignerColorsGroupBox' - ClientHeight = 252 + ClientHeight = 212 ClientWidth = 222 - TabOrder = 3 + TabOrder = 0 object ColorsListBox: TColorListBox AnchorSideLeft.Control = DesignerColorsGroupBox AnchorSideTop.Control = DesignerColorsGroupBox AnchorSideBottom.Control = ColorBox Left = 6 - Height = 212 + Height = 172 Top = 6 Width = 210 Style = [cbCustomColors] @@ -406,7 +406,7 @@ AnchorSideBottom.Side = asrBottom Left = 6 Height = 22 - Top = 224 + Top = 184 Width = 210 Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbCustomColor, cbPrettyNames] Anchors = [akLeft, akBottom] diff -Nru lazarus-1.4.4+dfsg/ide/frames/formed_options.pas lazarus-1.6+dfsg/ide/frames/formed_options.pas --- lazarus-1.4.4+dfsg/ide/frames/formed_options.pas 2014-10-30 19:49:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/formed_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -76,7 +76,7 @@ procedure ChangeColor(AIndex: Integer; NewColor: TColor); public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/fpdoc_options.pas lazarus-1.6+dfsg/ide/frames/fpdoc_options.pas --- lazarus-1.4.4+dfsg/ide/frames/fpdoc_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/fpdoc_options.pas 2015-03-10 13:27:41.000000000 +0000 @@ -43,12 +43,12 @@ procedure LazDocDeletePathButtonClick(Sender: TObject); procedure LazDocAddPathButtonClick(Sender: TObject); procedure LazDocBrowseButtonClick(Sender: TObject); - procedure LazDocListBoxSelectionChange(Sender: TObject; User: boolean); + procedure LazDocListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); procedure LazDocPathEditChange(Sender: TObject); private public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/help_general_options.lfm lazarus-1.6+dfsg/ide/frames/help_general_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/help_general_options.lfm 2014-01-03 17:26:18.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/help_general_options.lfm 2015-11-08 09:00:57.000000000 +0000 @@ -6,14 +6,14 @@ ClientHeight = 500 ClientWidth = 500 TabOrder = 0 - DesignLeft = 476 - DesignTop = 241 + DesignLeft = 422 + DesignTop = 209 object FPCDocHTMLLabel: TLabel AnchorSideTop.Control = Owner Left = 70 - Height = 20 + Height = 17 Top = 0 - Width = 132 + Width = 134 Caption = 'FPCDocHTMLLabel' Font.Style = [fsBold] ParentColor = False @@ -26,7 +26,7 @@ AnchorSideRight.Control = lblViewers Left = 0 Height = 3 - Top = 69 + Top = 63 Width = 64 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 @@ -36,9 +36,9 @@ AnchorSideTop.Control = FPCDocHTMLEdit AnchorSideTop.Side = asrBottom Left = 70 - Height = 20 - Top = 60 - Width = 72 + Height = 17 + Top = 56 + Width = 77 BorderSpacing.Top = 6 Caption = 'lblViewers' Font.Style = [fsBold] @@ -52,10 +52,10 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 148 + Left = 153 Height = 3 - Top = 69 - Width = 352 + Top = 63 + Width = 347 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 end @@ -78,7 +78,7 @@ AnchorSideRight.Control = lblDatabases Left = 0 Height = 3 - Top = 285 + Top = 283 Width = 64 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 @@ -88,9 +88,9 @@ AnchorSideTop.Control = lblMiddle1 AnchorSideTop.Side = asrBottom Left = 70 - Height = 20 + Height = 17 Top = 276 - Width = 89 + Width = 93 Caption = 'lblDatabases' Font.Style = [fsBold] ParentColor = False @@ -103,10 +103,10 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 165 + Left = 169 Height = 3 - Top = 285 - Width = 335 + Top = 283 + Width = 331 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 end @@ -127,7 +127,7 @@ AnchorSideRight.Control = FPCDocHTMLLabel Left = 0 Height = 3 - Top = 9 + Top = 7 Width = 64 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 @@ -140,43 +140,30 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 208 + Left = 210 Height = 3 - Top = 9 - Width = 292 + Top = 7 + Width = 290 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 end - object FPCDocHTMLEdit: TEdit + object FPCDocHTMLEdit: TDirectoryEdit AnchorSideLeft.Control = Owner AnchorSideTop.Control = FPCDocHTMLLabel AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = FPCDocHTMLBrowseButton + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom Left = 6 - Height = 28 - Top = 26 - Width = 465 + Height = 27 + Top = 23 + Width = 488 + ShowHidden = False + ButtonWidth = 50 + NumGlyphs = 1 Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 + BorderSpacing.Around = 6 + MaxLength = 0 TabOrder = 0 - Text = 'FPCDocHTMLEdit' - end - object FPCDocHTMLBrowseButton: TButton - AnchorSideTop.Control = FPCDocHTMLEdit - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = FPCDocHTMLEdit - AnchorSideBottom.Side = asrBottom - Left = 471 - Height = 28 - Top = 26 - Width = 23 - Anchors = [akTop, akRight, akBottom] - BorderSpacing.Right = 6 - Caption = '...' - OnClick = FPCDocHTMLBrowseButtonClick - TabOrder = 1 end object ViewersListBox: TListBox AnchorSideLeft.Control = Owner @@ -185,15 +172,17 @@ AnchorSideRight.Control = lblMiddle AnchorSideBottom.Control = lblDatabases Left = 6 - Height = 184 - Top = 86 + Height = 191 + Top = 79 Width = 210 Anchors = [akTop, akLeft, akBottom] BorderSpacing.Around = 6 ClickOnSelChange = False ItemHeight = 0 OnSelectionChange = ViewersListBoxSelectionChange - TabOrder = 2 + ScrollWidth = 208 + TabOrder = 1 + TopIndex = -1 end object ViewerPropsGroupBox: TGroupBox AnchorSideLeft.Control = ViewersListBox @@ -204,13 +193,13 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = lblDatabases Left = 222 - Height = 184 - Top = 86 + Height = 191 + Top = 79 Width = 272 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 Caption = 'ViewerPropsGroupBox' - TabOrder = 3 + TabOrder = 2 end object DatabasesListBox: TListBox AnchorSideLeft.Control = Owner @@ -219,8 +208,8 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 6 - Height = 198 - Top = 302 + Height = 201 + Top = 299 Width = 210 Anchors = [akTop, akLeft, akBottom] BorderSpacing.Left = 6 @@ -229,7 +218,9 @@ ClickOnSelChange = False ItemHeight = 0 OnSelectionChange = DatabasesListBoxSelectionChange - TabOrder = 4 + ScrollWidth = 208 + TabOrder = 3 + TopIndex = -1 end object DataBasesPropsGroupBox: TGroupBox AnchorSideLeft.Control = DatabasesListBox @@ -241,14 +232,14 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 222 - Height = 198 - Top = 302 + Height = 201 + Top = 299 Width = 272 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Right = 6 Caption = 'DataBasesPropsGroupBox' - TabOrder = 5 + TabOrder = 4 end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/help_general_options.pas lazarus-1.6+dfsg/ide/frames/help_general_options.pas --- lazarus-1.4.4+dfsg/ide/frames/help_general_options.pas 2014-01-03 17:26:18.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/help_general_options.pas 2015-11-08 10:06:06.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, ExtCtrls, - IDEOptionsIntf, HelpOptions, IDEDialogs, LazarusIDEStrConsts, EnvironmentOpts, + Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, ExtCtrls, EditBtn, + IDEOptionsIntf, HelpOptions, LazarusIDEStrConsts, EnvironmentOpts, ObjectInspector, LazHelpIntf; type @@ -22,8 +22,7 @@ Bevel6: TBevel; DatabasesListBox: TListBox; DataBasesPropsGroupBox: TGroupBox; - FPCDocHTMLBrowseButton: TButton; - FPCDocHTMLEdit: TEdit; + FPCDocHTMLEdit: TDirectoryEdit; FPCDocHTMLLabel: TLabel; lblMiddle1: TLabel; lblMiddle: TLabel; @@ -31,9 +30,8 @@ lblDatabases: TLabel; ViewerPropsGroupBox: TGroupBox; ViewersListBox: TListBox; - procedure DatabasesListBoxSelectionChange(Sender: TObject; User: boolean); - procedure FPCDocHTMLBrowseButtonClick(Sender: TObject); - procedure ViewersListBoxSelectionChange(Sender: TObject; User: boolean); + procedure DatabasesListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); + procedure ViewersListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); private ViewersPropertiesGrid: TCustomPropertiesGrid; DatabasesPropertiesGrid: TCustomPropertiesGrid; @@ -44,7 +42,7 @@ public constructor Create(AOwner: TComponent); override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -56,15 +54,6 @@ { THelpGeneralOptionsFrame } -procedure THelpGeneralOptionsFrame.FPCDocHTMLBrowseButtonClick(Sender: TObject); -var - NewFilename: String; -begin - NewFilename := LazSelectDirectory('FPC Doc HTML directory',''); - if NewFilename = '' then Exit; - FPCDocHTMLEdit.Text := NewFilename; -end; - procedure THelpGeneralOptionsFrame.DatabasesListBoxSelectionChange( Sender: TObject; User: boolean); begin diff -Nru lazarus-1.4.4+dfsg/ide/frames/idecoolbar_options.lfm lazarus-1.6+dfsg/ide/frames/idecoolbar_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/idecoolbar_options.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/idecoolbar_options.lfm 2015-06-21 17:31:13.000000000 +0000 @@ -0,0 +1,388 @@ +object IdeCoolbarOptionsFrame: TIdeCoolbarOptionsFrame + Left = 0 + Height = 451 + Top = 0 + Width = 520 + ClientHeight = 451 + ClientWidth = 520 + TabOrder = 0 + DesignLeft = 744 + DesignTop = 282 + object pnBottom: TPanel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = dbAddConfigDelete + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = Owner + AnchorSideBottom.Side = asrBottom + Left = 0 + Height = 251 + Top = 200 + Width = 520 + Align = alClient + BorderSpacing.Top = 6 + BevelOuter = bvNone + ClientHeight = 251 + ClientWidth = 520 + Constraints.MinHeight = 115 + TabOrder = 1 + object pnButtons: TPanel + AnchorSideRight.Control = pnBottom + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = pnBottom + AnchorSideBottom.Side = asrBottom + Left = 0 + Height = 35 + Top = 216 + Width = 520 + Align = alBottom + AutoSize = True + BevelOuter = bvNone + ClientHeight = 35 + ClientWidth = 520 + Constraints.MinHeight = 35 + TabOrder = 1 + object bAdd: TBitBtn + AnchorSideLeft.Control = pnButtons + AnchorSideBottom.Control = pnButtons + AnchorSideBottom.Side = asrBottom + Left = 6 + Height = 27 + Top = 2 + Width = 36 + Anchors = [akLeft, akBottom] + AutoSize = True + BorderSpacing.Left = 6 + BorderSpacing.Bottom = 6 + Caption = 'Add' + OnClick = bAddClick + TabOrder = 0 + end + object bDelete: TBitBtn + AnchorSideLeft.Control = bConfig + AnchorSideLeft.Side = asrBottom + AnchorSideBottom.Control = pnButtons + AnchorSideBottom.Side = asrBottom + Left = 105 + Height = 27 + Top = 2 + Width = 50 + Anchors = [akLeft, akBottom] + AutoSize = True + BorderSpacing.Left = 6 + BorderSpacing.Bottom = 6 + Caption = 'Delete' + OnClick = bDeleteClick + TabOrder = 2 + end + object bConfig: TBitBtn + AnchorSideLeft.Control = bAdd + AnchorSideLeft.Side = asrBottom + AnchorSideBottom.Control = pnButtons + AnchorSideBottom.Side = asrBottom + Left = 48 + Height = 27 + Top = 2 + Width = 51 + Anchors = [akLeft, akBottom] + AutoSize = True + BorderSpacing.Left = 6 + BorderSpacing.Bottom = 6 + Caption = 'Config' + OnClick = bConfigClick + TabOrder = 1 + end + object bDefaultToolbar: TBitBtn + AnchorSideRight.Control = pnButtons + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = pnButtons + AnchorSideBottom.Side = asrBottom + Left = 459 + Height = 27 + Top = 2 + Width = 55 + Anchors = [akRight, akBottom] + AutoSize = True + BorderSpacing.Right = 6 + BorderSpacing.Bottom = 6 + Caption = 'Default' + OnClick = bDefaultToolbarClick + TabOrder = 3 + end + end + object sbCoolBar: TScrollBox + Left = 0 + Height = 188 + Top = 0 + Width = 520 + HorzScrollBar.Page = 75 + VertScrollBar.Page = 22 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderStyle = bsNone + ClientHeight = 188 + ClientWidth = 520 + Constraints.MinHeight = 75 + TabOrder = 0 + object Coolbar: TCoolBar + Left = 0 + Height = 25 + Top = 0 + Width = 520 + AutoSize = True + Bands = < + item + end> + EdgeBorders = [ebRight] + EdgeInner = esNone + EdgeOuter = esNone + FixedSize = True + GrabStyle = gsGripper + GrabWidth = 5 + HorizontalSpacing = 1 + ShowText = False + OnChange = CoolbarChange + OnMouseDown = CoolbarMouseDown + OnResize = CoolbarResize + end + end + end + object pnTop: TPanel + Left = 0 + Height = 179 + Top = 0 + Width = 520 + Align = alTop + AutoSize = True + BevelOuter = bvNone + ClientHeight = 179 + ClientWidth = 520 + Constraints.MinWidth = 350 + TabOrder = 0 + object dbGeneralSettings: TDividerBevel + Left = 0 + Height = 15 + Top = 5 + Width = 520 + Caption = 'General Coolbars Settings' + Align = alTop + BorderSpacing.Top = 5 + BorderSpacing.Bottom = 5 + Font.Style = [fsBold] + ParentColor = False + ParentFont = False + end + object gbGrabStyle: TGroupBox + AnchorSideLeft.Control = pnTop + AnchorSideTop.Control = spCoolBarWidth + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = pnTopCenterLabel + Left = 0 + Height = 80 + Top = 60 + Width = 257 + Anchors = [akTop, akLeft, akRight] + AutoSize = True + BorderSpacing.Top = 6 + BorderSpacing.Right = 3 + Caption = 'Grab Style' + ClientHeight = 64 + ClientWidth = 255 + TabOrder = 1 + object lbGrabWidth: TLabel + AnchorSideTop.Control = spGrabWidth + AnchorSideTop.Side = asrCenter + AnchorSideRight.Control = spGrabWidth + Left = 94 + Height = 15 + Top = 40 + Width = 73 + Anchors = [akTop, akRight] + BorderSpacing.Around = 6 + Caption = 'Grab Width:' + ParentColor = False + end + object spGrabWidth: TSpinEdit + AnchorSideTop.Control = cbGrabStyle + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = gbGrabStyle + AnchorSideRight.Side = asrBottom + Left = 173 + Height = 21 + Top = 37 + Width = 76 + Anchors = [akTop, akRight] + BorderSpacing.Around = 6 + MaxValue = 50 + MinValue = 1 + OnChange = spGrabWidthChange + TabOrder = 1 + Value = 5 + end + object cbGrabStyle: TComboBox + AnchorSideLeft.Control = gbGrabStyle + AnchorSideTop.Control = gbGrabStyle + AnchorSideRight.Control = gbGrabStyle + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 25 + Top = 6 + Width = 243 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + ItemHeight = 0 + ItemIndex = 1 + Items.Strings = ( + 'gsSimple' + 'gsDouble' + 'gsHorLines' + 'gsVerLines' + 'gsGripper' + 'gsButton' + ) + OnChange = cbGrabStyleChange + Style = csDropDownList + TabOrder = 0 + Text = 'gsDouble' + end + end + object bDefaultGeneral: TBitBtn + AnchorSideTop.Control = gbBorderStyle + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = pnTop + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = pnTop + AnchorSideBottom.Side = asrBottom + Left = 459 + Height = 27 + Top = 146 + Width = 55 + Anchors = [akTop, akRight] + AutoSize = True + BorderSpacing.Around = 6 + Caption = 'Default' + OnClick = bDefaultGeneralClick + TabOrder = 3 + end + object cbCoolBarVisible: TCheckBox + AnchorSideLeft.Control = pnTop + AnchorSideTop.Control = dbGeneralSettings + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 22 + Top = 32 + Width = 123 + BorderSpacing.Top = 12 + Caption = 'Coolbar is visible' + OnClick = cbCoolBarVisibleClick + TabOrder = 0 + end + object gbBorderStyle: TGroupBox + AnchorSideLeft.Control = gbGrabStyle + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = gbGrabStyle + AnchorSideRight.Control = pnTop + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = gbGrabStyle + AnchorSideBottom.Side = asrBottom + Left = 263 + Height = 80 + Top = 60 + Width = 257 + Anchors = [akTop, akLeft, akRight, akBottom] + AutoSize = True + BorderSpacing.Left = 6 + Caption = 'Band Border Style' + ClientHeight = 64 + ClientWidth = 255 + TabOrder = 2 + object cbBorderStyle: TComboBox + AnchorSideLeft.Control = gbBorderStyle + AnchorSideTop.Control = gbBorderStyle + AnchorSideRight.Control = gbBorderStyle + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 25 + Top = 6 + Width = 243 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + ItemHeight = 0 + ItemIndex = 1 + Items.Strings = ( + 'None' + 'Single' + ) + OnChange = cbBorderStyleChange + Style = csDropDownList + TabOrder = 0 + Text = 'Single' + end + end + object lbCoolBarWidth: TLabel + AnchorSideLeft.Control = cbCoolBarVisible + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = cbCoolBarVisible + AnchorSideTop.Side = asrCenter + Left = 155 + Height = 15 + Top = 36 + Width = 83 + Alignment = taRightJustify + BorderSpacing.Left = 32 + Caption = 'Coolbar width' + ParentColor = False + end + object spCoolBarWidth: TSpinEdit + AnchorSideLeft.Control = lbCoolBarWidth + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = lbCoolBarWidth + AnchorSideTop.Side = asrCenter + Left = 244 + Height = 21 + Top = 33 + Width = 64 + BorderSpacing.Left = 6 + MaxValue = 5000 + OnChange = spCoolBarWidthChange + TabOrder = 4 + Value = 230 + end + object pnTopCenterLabel: TLabel + AnchorSideLeft.Control = pnTop + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = pnTop + Left = 260 + Height = 1 + Top = 0 + Width = 1 + ParentColor = False + end + end + object dbAddConfigDelete: TDividerBevel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = pnTop + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 15 + Top = 179 + Width = 520 + Caption = 'Add/Config/Delete Toolbar(s)' + Align = alTop + BorderSpacing.Bottom = 6 + Font.Style = [fsBold] + ParentColor = False + ParentFont = False + end + object imButtons: TImageList + left = 472 + end + object tmWait: TTimer + Enabled = False + Interval = 100 + OnTimer = tmWaitTimer + left = 408 + end +end diff -Nru lazarus-1.4.4+dfsg/ide/frames/idecoolbar_options.pas lazarus-1.6+dfsg/ide/frames/idecoolbar_options.pas --- lazarus-1.4.4+dfsg/ide/frames/idecoolbar_options.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/idecoolbar_options.pas 2015-10-17 14:31:11.000000000 +0000 @@ -0,0 +1,467 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + Author: Balázs Székely + Abstract: + Frame for IDE Coolbar options. +} +unit idecoolbar_options; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, ExtCtrls, ComCtrls, Buttons, Controls, Menus, + Graphics, Dialogs, StdCtrls, DividerBevel, Spin, + LazarusIDEStrConsts, IDEOptionsIntf, EnvironmentOpts, IdeCoolbarData; + +type + + { TIdeCoolbarOptionsFrame } + + TIdeCoolbarOptionsFrame = class(TAbstractIDEOptionsEditor) + bAdd: TBitBtn; + bDefaultGeneral: TBitBtn; + bConfig: TBitBtn; + bDefaultToolbar: TBitBtn; + bDelete: TBitBtn; + cbGrabStyle: TComboBox; + cbBorderStyle: TComboBox; + cbCoolBarVisible: TCheckBox; + Coolbar: TCoolBar; + gbGrabStyle: TGroupBox; + gbBorderStyle: TGroupBox; + imButtons: TImageList; + dbAddConfigDelete: TDividerBevel; + dbGeneralSettings: TDividerBevel; + pnTopCenterLabel: TLabel; + lbGrabWidth: TLabel; + lbCoolBarWidth: TLabel; + pnTop: TPanel; + pnBottom: TPanel; + pnButtons: TPanel; + sbCoolBar: TScrollBox; + spGrabWidth: TSpinEdit; + spCoolBarWidth: TSpinEdit; + tmWait: TTimer; + procedure bAddClick(Sender: TObject); + procedure bConfigClick(Sender: TObject); + procedure bDefaultGeneralClick(Sender: TObject); + procedure bDefaultToolbarClick(Sender: TObject); + procedure bDeleteClick(Sender: TObject); + procedure cbBorderStyleChange(Sender: TObject); + procedure cbGrabStyleChange(Sender: TObject); + procedure cbCoolBarVisibleClick(Sender: TObject); + procedure CoolbarChange(Sender: TObject); + procedure CoolBarMouseDown(Sender: TObject; {%H-}Button: TMouseButton; + {%H-}Shift: TShiftState; X, Y: integer); + procedure CoolbarResize(Sender: TObject); + procedure spCoolBarWidthChange(Sender: TObject); + procedure spGrabWidthChange(Sender: TObject); + procedure tmWaitTimer(Sender: TObject); + private + FTempCoolBar: TIDECoolBar; + FTempCoolBarOptions: TIDECoolBarOptions; + // Used for assigning and testing the default configuration. + FDefaultOptions: TDefaultCoolBarOptions; + procedure EnableDisableGeneralButtons; + procedure EnableDisableToolbarButtons; + procedure SelectBand(const ID: integer); + function GetSelectedBand: Integer; + procedure ToolBarClick(Sender: TObject); + procedure PopulateToolBar; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function GetTitle: string; override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; + procedure ReadSettings(AOptions: TAbstractIDEOptions); override; + procedure WriteSettings(AOptions: TAbstractIDEOptions); override; + class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; + end; + + +implementation + +uses MainBar, ToolbarConfig; + +{$R *.lfm} + +{ TIdeCoolbarOptionsFrame } + +function TIdeCoolbarOptionsFrame.GetTitle: string; +begin + Result := lisCoolbarOptions; +end; + +procedure TIdeCoolbarOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); +begin + dbAddConfigDelete.Caption := lisCoolbarAddConfigDelete; + dbGeneralSettings.Caption := lisCoolbarGeneralSettings; + bDefaultToolbar.Caption := lisCoolbarRestoreDefaults; + bAdd.Caption := lisBtnAdd; + bConfig.Caption := lisCoolbarConfigure; + bDelete.Caption := lisBtnDelete; + cbCoolBarVisible.Caption := lisCoolbarVisible; + lbCoolBarWidth.Caption := lisCoolbarWidth; + gbGrabStyle.Caption := lisCoolbarGrabStyle; + cbGrabStyle.Items.Strings[0] := lisCoolbarGrabStyleItem0; + cbGrabStyle.Items.Strings[1] := lisCoolbarGrabStyleItem1; + cbGrabStyle.Items.Strings[2] := lisCoolbarGrabStyleItem2; + cbGrabStyle.Items.Strings[3] := lisCoolbarGrabStyleItem3; + cbGrabStyle.Items.Strings[4] := lisCoolbarGrabStyleItem4; + cbGrabStyle.Items.Strings[5] := lisCoolbarGrabStyleItem5; + lbGrabWidth.Caption := lisCoolbarGrabWidth; + gbBorderStyle.Caption := lisCoolbarBorderStyle; + cbBorderStyle.Items.Strings[0] := lisCoolbarBorderStyleItem0; + cbBorderStyle.Items.Strings[1] := lisCoolbarBorderStyleItem1; + bDefaultGeneral.Caption := lisCoolbarRestoreDefaults; +end; + +procedure TIdeCoolbarOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); +var + Opts: TIDECoolBarOptions; +begin + Opts := (AOptions as TEnvironmentOptions).Desktop.IDECoolBarOptions; + cbCoolBarVisible.Checked := Opts.Visible; + FTempCoolBar.IsVisible := Opts.Visible; + + spCoolBarWidth.Value := Opts.Width; + FTempCoolBar.Width := Opts.Width; + + if not (Opts.GrabStyle in [0..5]) then + Opts.GrabStyle := 1; + cbGrabStyle.ItemIndex := Opts.GrabStyle; + Coolbar.GrabStyle := TGrabStyle(Opts.GrabStyle); + + if not (Opts.GrabWidth in [1..50]) then + Opts.GrabWidth := 5; + spGrabWidth.Value := Opts.GrabWidth; + Coolbar.GrabWidth := Opts.GrabWidth; + + if not (Opts.BorderStyle in [0..1]) then + Opts.BorderStyle := 1; + cbBorderStyle.ItemIndex := Opts.BorderStyle; + Coolbar.BandBorderStyle := TBorderStyle(Opts.BorderStyle); + EnableDisableGeneralButtons; + + // ToDo: More tests? + if Opts.ToolBars.Count = 0 then + FTempCoolBar.CopyFromOptions(FDefaultOptions) + else + FTempCoolBar.CopyFromOptions(Opts); + + PopulateToolBar; +end; + +procedure TIdeCoolbarOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); +var + Opts: TIDECoolBarOptions; +begin + Opts := (AOptions as TEnvironmentOptions).Desktop.IDECoolBarOptions; + FTempCoolBar.CopyFromRealCoolbar(Coolbar); + FTempCoolBar.CopyToOptions(Opts); + Opts.Visible := cbCoolBarVisible.Checked; + Opts.Width := FTempCoolBar.Width; + Opts.GrabStyle := cbGrabStyle.ItemIndex; + Opts.GrabWidth := spGrabWidth.Value; + Opts.BorderStyle := cbBorderStyle.ItemIndex; + MainIDEBar.RefreshCoolbar; + MainIDEBar.SetMainIDEHeight; +end; + +class function TIdeCoolbarOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass; +begin + Result := TEnvironmentOptions; +end; + +procedure TIdeCoolbarOptionsFrame.CoolBarMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: integer); +var + ABand: integer; + AGrabber: boolean; +begin + CoolBar.MouseToBandPos(X, Y, ABand, AGrabber); + if ABand < 0 then + Exit; + if CoolBar.Bands.Items[ABand].Color <> clHighlight then + SelectBand(ABand); +end; + +procedure TIdeCoolbarOptionsFrame.CoolbarResize(Sender: TObject); +begin + if tmWait.Enabled then + Exit; + tmWait.Enabled := True; +end; + +procedure TIdeCoolbarOptionsFrame.spCoolBarWidthChange(Sender: TObject); +begin + FTempCoolBar.Width := spCoolBarWidth.Value; + EnableDisableGeneralButtons; +end; + +procedure TIdeCoolbarOptionsFrame.tmWaitTimer(Sender: TObject); +begin + Coolbar.AutosizeBands; + tmWait.Enabled := False; +end; + +procedure TIdeCoolbarOptionsFrame.spGrabWidthChange(Sender: TObject); +begin + CoolBar.GrabWidth := TSpinEdit(Sender).Value; + CoolBar.AutosizeBands; + EnableDisableGeneralButtons; +end; + +procedure TIdeCoolbarOptionsFrame.cbGrabStyleChange(Sender: TObject); +begin + CoolBar.GrabStyle := TGrabStyle(TComboBox(Sender).ItemIndex); + CoolBar.AutosizeBands; + EnableDisableGeneralButtons; +end; + +procedure TIdeCoolbarOptionsFrame.cbCoolBarVisibleClick(Sender: TObject); +begin + FTempCoolBar.IsVisible := cbCoolBarVisible.Checked; + EnableDisableGeneralButtons; +end; + +procedure TIdeCoolbarOptionsFrame.CoolbarChange(Sender: TObject); +begin + EnableDisableToolbarButtons; +end; + +procedure TIdeCoolbarOptionsFrame.cbBorderStyleChange(Sender: TObject); +begin + Coolbar.BandBorderStyle := TBorderStyle(TComboBox(Sender).ItemIndex); + Coolbar.AutosizeBands; + EnableDisableGeneralButtons; +end; + +procedure TIdeCoolbarOptionsFrame.SelectBand(const ID: integer); +var + I: integer; +begin + Coolbar.Color := clDefault; + for I := 0 to CoolBar.Bands.Count - 1 do + begin + if I <> ID then + begin + CoolBar.Bands.Items[I].Color := clDefault; + CoolBar.Bands.Items[I].Control.Color := clDefault; + end + else + begin + CoolBar.Bands.Items[I].Color := clHighlight; + CoolBar.Bands.Items[I].Control.Color := clHighLight; + end; + end; +end; + +function TIdeCoolbarOptionsFrame.GetSelectedBand: Integer; +var + I: Integer; +begin + Result := -1; + if CoolBar.Bands.Count = 0 then + Exit; + for I := 0 to CoolBar.Bands.Count - 1 do + begin + if CoolBar.Bands.Items[I].Color = clHighlight then + begin + Result := I; + Break; + end; + end; +end; + +procedure TIdeCoolbarOptionsFrame.ToolBarClick(Sender: TObject); +var + CoolBand: TCoolBand; +begin + CoolBand := Coolbar.Bands.FindBand(Sender as TToolBar); + if CoolBand <> nil then + SelectBand(CoolBand.Index); +end; + +procedure TIdeCoolbarOptionsFrame.EnableDisableGeneralButtons; +begin + bDefaultGeneral.Enabled := not FTempCoolBar.IsDefaultCoolbar; +end; + +procedure TIdeCoolbarOptionsFrame.EnableDisableToolbarButtons; +var + I: Integer; + Selected: Boolean; +begin + Selected := False; + for I := 0 to Coolbar.Bands.Count - 1 do + begin + if Coolbar.Bands[I].Color = clHighlight then + begin + Selected := True; + Break; + end; + end; + bConfig.Enabled := Selected; + bDelete.Enabled := Selected; + bDefaultToolbar.Enabled := not FTempCoolBar.IsDefaultToolbar; +end; + +procedure TIdeCoolbarOptionsFrame.PopulateToolBar; +var + CoolBand: TCoolBand; + I: Integer; +begin + CoolBar.Bands.Clear; + for I := 0 to FTempCoolBar.ToolBars.Count - 1 do + begin + CoolBand := CoolBar.Bands.Add; + CoolBand.Break := FTempCoolBar.ToolBars[I].CurrentOptions.Break; + CoolBand.Control := FTempCoolBar.ToolBars[I].Toolbar; + FTempCoolBar.ToolBars[I].Toolbar.Enabled := False; + CoolBand.Visible := True; + CoolBand.MinWidth := 25; + CoolBand.MinHeight := 22; + CoolBand.FixedSize := True; + FTempCoolBar.ToolBars[I].UseCurrentOptions; + end; + if CoolBar.Bands.Count > 0 then + SelectBand(0); + Coolbar.AutosizeBands; + EnableDisableToolbarButtons; +end; + +constructor TIdeCoolbarOptionsFrame.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FTempCoolBar := TIDEcoolBar.Create(Coolbar); + FTempCoolBarOptions := TIDECoolBarOptions.Create; + FDefaultOptions := TDefaultCoolBarOptions.Create; +end; + +destructor TIdeCoolbarOptionsFrame.Destroy; +begin + FreeAndNil(FDefaultOptions); + FreeAndNil(FTempCoolBarOptions); + FreeAndNil(FTempCoolBar); + inherited Destroy; +end; + +procedure TIdeCoolbarOptionsFrame.bAddClick(Sender: TObject); +var + CoolBand: TCoolBand; + IDEToolbar: TIDEToolBar; +begin + IDEToolbar := FTempCoolBar.Add; + IDEToolbar.CurrentOptions.Break := False; + IDEToolbar.OnToolBarClick := @ToolBarClick; + + CoolBand := CoolBar.Bands.Add; + CoolBand.Break := True; + CoolBand.Control := IDEToolbar.Toolbar; + IDEToolbar.Toolbar.Enabled := False; + CoolBand.Visible := True; + CoolBand.MinWidth := 25; + CoolBand.MinHeight := 22; + CoolBand.FixedSize := True; + SelectBand(CoolBand.Index); + EnableDisableToolbarButtons; +end; + +procedure TIdeCoolbarOptionsFrame.bConfigClick(Sender: TObject); +var + ToConfig: Integer; + ToolBar: TToolBar; +begin + ToConfig := GetSelectedBand; + if ToConfig = -1 then + begin + MessageDlg(lisCoolbarSelectToolBar, mtInformation, [mbOk], 0); + Exit; + end; + ToolBar := (Coolbar.Bands.Items[ToConfig].Control as TToolBar); + if ToolBar <> nil then + begin + ToConfig := FTempCoolBar.FindByToolBar(ToolBar); + if (ToConfig <> -1) + and (ShowToolBarConfig(FTempCoolBar.ToolBars[ToConfig].CurrentOptions.ButtonNames) = mrOK) + then + FTempCoolBar.ToolBars[ToConfig].UseCurrentOptions; + end; + Coolbar.AutosizeBands; + EnableDisableToolbarButtons; +end; + +procedure TIdeCoolbarOptionsFrame.bDeleteClick(Sender: TObject); +var + I: integer; + ToDelete: integer; +begin + if Coolbar.Bands.Count = 1 then + begin + MessageDlg(lisCoolbarDeleteWarning, mtInformation, [mbOk], 0); + Exit; + end; + ToDelete := GetSelectedBand; + if ToDelete > -1 then + begin + if MessageDlg(lisCoolbarDeleteToolBar, mtConfirmation, [mbYes, mbNo], 0) = mrYes then + begin + if ToDelete + 1 < CoolBar.Bands.Count then + SelectBand(ToDelete + 1) + else if ToDelete - 1 >= 0 then + SelectBand(ToDelete - 1); + I := FTempCoolBar.FindByToolBar((CoolBar.Bands.Items[ToDelete].Control as TToolBar)); + if I <> -1 then + FTempCoolBar.ToolBars.Delete(I); + CoolBar.Bands.Delete(ToDelete); + end; + end; + EnableDisableToolbarButtons; +end; + +procedure TIdeCoolbarOptionsFrame.bDefaultGeneralClick(Sender: TObject); +begin + cbCoolBarVisible.Checked := True; + FTempCoolBar.IsVisible := True; + spCoolBarWidth.Value := 230; + FTempCoolBar.Width := 230; + cbGrabStyle.ItemIndex := 1; + spGrabWidth.Value := 5; + BiDiMode := bdLeftToRight; + cbBorderStyle.ItemIndex := 1; + FTempCoolBar.SetCoolBarDefaults; + EnableDisableGeneralButtons; +end; + +procedure TIdeCoolbarOptionsFrame.bDefaultToolbarClick(Sender: TObject); +begin + FTempCoolBar.SetToolBarDefaults; + PopulateToolBar; +end; + + +initialization + RegisterIDEOptionsEditor(GroupEnvironment, TIdeCoolbarOptionsFrame, EnvOptionsToolbar); + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/frames/modematrixctrl.pas lazarus-1.6+dfsg/ide/frames/modematrixctrl.pas --- lazarus-1.4.4+dfsg/ide/frames/modematrixctrl.pas 2014-02-18 20:55:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/modematrixctrl.pas 2015-03-10 13:17:19.000000000 +0000 @@ -220,7 +220,7 @@ fRedoItems: TObjectList; // list of TGroupedMatrix, 0=oldest function GetModeColumns(Index: integer): TGridColumn; function GetModes: TGroupedMatrixModes; - procedure InvalidateGroupedCells(aCol, aRow: Integer); + procedure InvalidateGroupedCells({%H-}aCol, aRow: Integer); procedure SetActiveMode(AValue: integer); procedure SetActiveModeColor(AValue: TColor); procedure SetIndent(AValue: integer); diff -Nru lazarus-1.4.4+dfsg/ide/frames/msgwnd_options.lfm lazarus-1.6+dfsg/ide/frames/msgwnd_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/msgwnd_options.lfm 2014-11-01 15:26:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/msgwnd_options.lfm 2015-09-27 20:32:15.000000000 +0000 @@ -1,108 +1,22 @@ object MsgWndOptionsFrame: TMsgWndOptionsFrame Left = 0 - Height = 355 + Height = 422 Top = 0 - Width = 495 - ClientHeight = 355 - ClientWidth = 495 + Width = 520 + ClientHeight = 422 + ClientWidth = 520 TabOrder = 0 DesignLeft = 386 DesignTop = 221 - object MWColorsGroupBox: TGroupBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Owner - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 0 - Height = 172 - Top = 0 - Width = 495 - Anchors = [akTop, akLeft, akRight] - Caption = 'MWColorsGroupBox' - ClientHeight = 147 - ClientWidth = 491 - TabOrder = 0 - object MWColorListBox: TColorListBox - AnchorSideLeft.Control = MWColorsGroupBox - AnchorSideTop.Control = MWColorsGroupBox - AnchorSideRight.Control = MWSpeedSetColorsGroupBox - AnchorSideBottom.Control = MWColorBox - Left = 6 - Height = 103 - Top = 6 - Width = 303 - Style = [cbCustomColors] - OnGetColors = MWColorListBoxGetColors - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Around = 6 - ItemHeight = 0 - OnSelectionChange = MWColorListBoxSelectionChange - TabOrder = 0 - end - object MWColorBox: TColorBox - AnchorSideLeft.Control = MWColorsGroupBox - AnchorSideRight.Control = MWSpeedSetColorsGroupBox - AnchorSideBottom.Control = MWColorsGroupBox - AnchorSideBottom.Side = asrBottom - Left = 6 - Height = 26 - Top = 115 - Width = 303 - Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbCustomColor, cbPrettyNames] - Anchors = [akLeft, akRight, akBottom] - BorderSpacing.Around = 6 - ItemHeight = 20 - OnChange = MWColorBoxChange - TabOrder = 1 - end - object MWSpeedSetColorsGroupBox: TGroupBox - Left = 315 - Height = 135 - Top = 6 - Width = 170 - Align = alRight - BorderSpacing.Around = 6 - Caption = 'MWSpeedSetColorsGroupBox' - ChildSizing.Layout = cclLeftToRightThenTopToBottom - ChildSizing.ControlsPerLine = 1 - ClientHeight = 110 - ClientWidth = 166 - TabOrder = 2 - object MWSetEditorColorsButton: TButton - Left = 0 - Height = 30 - Top = 0 - Width = 209 - AutoSize = True - Caption = 'MWSetEditorColorsButton' - OnClick = MWSetEditorColorsButtonClick - TabOrder = 0 - end - object MWSetDefaultColorsButton: TButton - AnchorSideTop.Side = asrBottom - AnchorSideRight.Side = asrBottom - Left = 0 - Height = 30 - Top = 36 - Width = 209 - AutoSize = True - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - Caption = 'MWSetDefaultColorsButton' - OnClick = MWSetDefaultColorsButtonClick - TabOrder = 1 - end - end - end object MWOptionsLabel: TLabel AnchorSideLeft.Control = MWOptsLeftBevel AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = MWColorsGroupBox + AnchorSideTop.Control = Notebook1 AnchorSideTop.Side = asrBottom Left = 70 - Height = 20 - Top = 178 - Width = 115 + Height = 15 + Top = 206 + Width = 93 BorderSpacing.Left = 10 BorderSpacing.Top = 6 BorderSpacing.Right = 10 @@ -116,7 +30,7 @@ AnchorSideTop.Side = asrCenter Left = 0 Height = 3 - Top = 187 + Top = 212 Width = 60 end object MWOptsRightBevel: TBevel @@ -126,10 +40,10 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 195 + Left = 173 Height = 3 - Top = 187 - Width = 300 + Top = 212 + Width = 347 Anchors = [akTop, akLeft, akRight] end object MWShowIconsCheckBox: TCheckBox @@ -138,13 +52,13 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 24 - Top = 204 - Width = 185 + Top = 227 + Width = 158 BorderSpacing.Left = 6 Caption = 'MWShowIconsCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 1 + TabOrder = 0 end object MWFocusCheckBox: TCheckBox AnchorSideLeft.Control = Owner @@ -152,13 +66,13 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 24 - Top = 252 - Width = 152 + Top = 275 + Width = 132 BorderSpacing.Left = 6 Caption = 'MWFocusCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 2 + TabOrder = 1 end object MWAlwaysDrawFocusedCheckBox: TCheckBox AnchorSideLeft.Control = MWShowIconsCheckBox @@ -166,35 +80,236 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 24 - Top = 228 - Width = 250 + Top = 251 + Width = 212 Caption = 'MWAlwaysDrawFocusedCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 3 + TabOrder = 2 end object MWMaxProcsSpinEdit: TSpinEdit AnchorSideLeft.Control = MWMaxProcsLabel AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = MWFocusCheckBox AnchorSideTop.Side = asrBottom - Left = 134 - Height = 28 - Top = 276 + Left = 110 + Height = 25 + Top = 299 Width = 50 BorderSpacing.Left = 2 - TabOrder = 4 + TabOrder = 3 end object MWMaxProcsLabel: TLabel AnchorSideLeft.Control = Owner AnchorSideTop.Control = MWMaxProcsSpinEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 20 - Top = 280 - Width = 126 + Height = 15 + Top = 304 + Width = 102 BorderSpacing.Left = 6 Caption = 'MWMaxProcsLabel' ParentColor = False end + object ToolBar1: TToolBar + Left = 0 + Height = 26 + Top = 0 + Width = 520 + Caption = 'ToolBar1' + ShowCaptions = True + TabOrder = 4 + object BtnHeaderColor: TToolButton + Left = 1 + Top = 2 + AllowAllUp = True + Caption = 'BtnHeaderColor' + Down = True + Grouped = True + OnClick = BtnHeaderColorClick + Style = tbsCheck + end + object BtnMsgColor: TToolButton + Left = 98 + Top = 2 + AllowAllUp = True + Caption = 'BtnMsgColor' + Grouped = True + OnClick = BtnMsgColorClick + Style = tbsCheck + end + end + object Notebook1: TNotebook + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = ToolBar1 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 174 + Top = 26 + Width = 520 + PageIndex = 0 + Anchors = [akTop, akLeft, akRight] + TabOrder = 5 + TabStop = True + object PageHeader: TPage + object MWColorsGroupBox: TGroupBox + Left = 0 + Height = 174 + Top = 0 + Width = 520 + Align = alClient + Anchors = [akTop, akLeft, akRight] + Caption = 'MWColorsGroupBox' + ClientHeight = 157 + ClientWidth = 516 + TabOrder = 0 + object MWColorListBox: TColorListBox + AnchorSideLeft.Control = MWColorsGroupBox + AnchorSideTop.Control = MWColorsGroupBox + AnchorSideRight.Control = MWSpeedSetColorsGroupBox + AnchorSideBottom.Control = MWColorBox + Left = 6 + Height = 110 + Top = 6 + Width = 328 + Style = [cbCustomColors] + OnGetColors = MWColorListBoxGetColors + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + ItemHeight = 0 + OnSelectionChange = MWColorListBoxSelectionChange + TabOrder = 0 + TopIndex = -1 + end + object MWColorBox: TColorBox + AnchorSideLeft.Control = MWColorsGroupBox + AnchorSideTop.Control = MWColorListBox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = MWSpeedSetColorsGroupBox + AnchorSideBottom.Control = MWColorsGroupBox + AnchorSideBottom.Side = asrBottom + Left = 6 + Height = 29 + Top = 122 + Width = 328 + Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeNone, cbIncludeDefault, cbCustomColor, cbPrettyNames, cbCustomColors] + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Around = 6 + ItemHeight = 20 + OnChange = MWColorBoxChange + TabOrder = 1 + end + object MWSpeedSetColorsGroupBox: TGroupBox + Left = 340 + Height = 145 + Top = 6 + Width = 170 + Align = alRight + BorderSpacing.Around = 6 + Caption = 'MWSpeedSetColorsGroupBox' + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 128 + ClientWidth = 166 + TabOrder = 2 + object MWSetEditorColorsButton: TButton + Left = 0 + Height = 27 + Top = 0 + Width = 166 + AutoSize = True + Caption = 'MWSetEditorColorsButton' + OnClick = MWSetEditorColorsButtonClick + TabOrder = 0 + end + object MWSetDefaultColorsButton: TButton + AnchorSideTop.Side = asrBottom + AnchorSideRight.Side = asrBottom + Left = 0 + Height = 27 + Top = 33 + Width = 166 + AutoSize = True + BorderSpacing.Top = 6 + BorderSpacing.Right = 6 + Caption = 'MWSetDefaultColorsButton' + OnClick = MWSetDefaultColorsButtonClick + TabOrder = 1 + end + object MWSetPastelColorsButton: TButton + Left = 0 + Height = 27 + Top = 66 + Width = 166 + AutoSize = True + BorderSpacing.Top = 6 + Caption = 'MWSetPastelColorsButton' + OnClick = MWSetPastelColorsButtonClick + TabOrder = 2 + end + end + end + end + object PageMsg: TPage + object MsgColorGroupBox: TGroupBox + Left = 0 + Height = 174 + Top = 0 + Width = 495 + Align = alClient + Caption = 'MsgColorGroupBox' + ClientHeight = 157 + ClientWidth = 491 + TabOrder = 0 + object MsgColorListBox: TColorListBox + AnchorSideLeft.Control = MsgColorGroupBox + AnchorSideTop.Control = MsgColorGroupBox + Left = 6 + Height = 110 + Top = 6 + Width = 303 + Style = [cbCustomColors] + OnGetColors = MsgColorListBoxGetColors + BorderSpacing.Around = 6 + ItemHeight = 0 + OnSelectionChange = MsgColorListBoxSelectionChange + TabOrder = 0 + end + object MsgColorBox: TColorBox + AnchorSideLeft.Control = MsgColorGroupBox + AnchorSideTop.Control = MsgColorListBox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = MsgColorListBox + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 24 + Top = 122 + Width = 297 + Style = [cbStandardColors, cbExtendedColors, cbSystemColors, cbIncludeDefault, cbCustomColor] + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + ItemHeight = 16 + OnChange = MsgColorBoxChange + TabOrder = 1 + end + end + end + end + object MWShowFPCMsgLinesCompiledCheckBox: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = MWMaxProcsSpinEdit + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 24 + Top = 334 + Width = 251 + BorderSpacing.Left = 6 + BorderSpacing.Top = 10 + Caption = 'MWShowFPCMsgLinesCompiledCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 6 + end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/msgwnd_options.pas lazarus-1.6+dfsg/ide/frames/msgwnd_options.pas --- lazarus-1.4.4+dfsg/ide/frames/msgwnd_options.pas 2014-11-01 15:26:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/msgwnd_options.pas 2015-10-05 22:48:00.000000000 +0000 @@ -31,7 +31,7 @@ uses Classes, SysUtils, FileUtil, LazLoggerBase, SynEdit, Forms, - Controls, Graphics, Dialogs, StdCtrls, ColorBox, ExtCtrls, Spin, + Controls, Graphics, Dialogs, StdCtrls, ColorBox, ExtCtrls, Spin, ComCtrls, IDEOptionsIntf, IDEExternToolIntf, LazarusIDEStrConsts, EnvironmentOpts, editor_general_options, EditorOptions; @@ -40,8 +40,13 @@ { TMsgWndOptionsFrame } TMsgWndOptionsFrame = class(TAbstractIDEOptionsEditor) + MsgColorBox: TColorBox; + MsgColorListBox: TColorListBox; + MsgColorGroupBox: TGroupBox; MWAlwaysDrawFocusedCheckBox: TCheckBox; MWFocusCheckBox: TCheckBox; + MWSetPastelColorsButton: TButton; + MWShowFPCMsgLinesCompiledCheckBox: TCheckBox; MWShowIconsCheckBox: TCheckBox; MWMaxProcsLabel: TLabel; MWMaxProcsSpinEdit: TSpinEdit; @@ -54,12 +59,24 @@ MWSetDefaultColorsButton: TButton; MWSetEditorColorsButton: TButton; MWSpeedSetColorsGroupBox: TGroupBox; + Notebook1: TNotebook; + PageHeader: TPage; + PageMsg: TPage; + ToolBar1: TToolBar; + BtnHeaderColor: TToolButton; + BtnMsgColor: TToolButton; + procedure BtnHeaderColorClick(Sender: TObject); + procedure BtnMsgColorClick(Sender: TObject); + procedure MsgColorBoxChange(Sender: TObject); + procedure MsgColorListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings); + procedure MsgColorListBoxSelectionChange(Sender: TObject; User: boolean); procedure MWColorBoxChange(Sender: TObject); procedure MWColorListBoxGetColors(Sender: TCustomColorListBox; Items: TStrings); procedure MWColorListBoxSelectionChange(Sender: TObject; User: boolean); procedure MWSetDefaultColorsButtonClick(Sender: TObject); procedure MWSetEditorColorsButtonClick(Sender: TObject); + procedure MWSetPastelColorsButtonClick(Sender: TObject); private fReady: boolean; FDialog: TAbstractOptionsEditorDialog; @@ -90,6 +107,7 @@ Items.Add(lisToolHeaderSuccess); Items.Add(lisToolHeaderFailed); Items.Add(lisToolHeaderScrolledUp); + Items.Add(dlfMouseSimpleTextSect); end; procedure TMsgWndOptionsFrame.MWColorBoxChange(Sender: TObject); @@ -102,6 +120,67 @@ MWColorListBox.Colors[i]:=MWColorBox.Selected; end; +procedure TMsgWndOptionsFrame.BtnHeaderColorClick(Sender: TObject); +begin + Notebook1.PageIndex := 0; +end; + +procedure TMsgWndOptionsFrame.BtnMsgColorClick(Sender: TObject); +begin + Notebook1.PageIndex := 1; +end; + +procedure TMsgWndOptionsFrame.MsgColorBoxChange(Sender: TObject); +var + i: Integer; +begin + i:=MsgColorListBox.ItemIndex; + if not fReady or (i < 0) then + exit; + MsgColorListBox.Colors[i]:=MsgColorBox.Selected; +end; + +procedure TMsgWndOptionsFrame.MsgColorListBoxGetColors(Sender: TCustomColorListBox; + Items: TStrings); +begin +(* + mluNone, + mluProgress, // time and statistics about the run + mluDebug, // extreme verbosity, only useful for tool authors + mluVerbose3, // all infos + mluVerbose2, // almost all infos + mluVerbose, // extra infos + mluHint, // tool found something unusual + mluNote, // maybe wrong or unnecessary + mluWarning, // probably something is wrong + mluImportant, // message has no urgency level, but should be shown + mluError, // tool could not finish, some tools can still continue + mluFatal, // critical error in input, tool had to abort + mluPanic // bug in tool +*) + + Items.Add(dlgMsgWinColorUrgentNone); + Items.Add(dlgMsgWinColorUrgentProgress); + Items.Add(dlgMsgWinColorUrgentDebug); + Items.Add(dlgMsgWinColorUrgentVerbose3); + Items.Add(dlgMsgWinColorUrgentVerbose2); + Items.Add(dlgMsgWinColorUrgentVerbose); + Items.Add(dlgMsgWinColorUrgentHint); + Items.Add(dlgMsgWinColorUrgentNote); + Items.Add(dlgMsgWinColorUrgentWarning); + Items.Add(dlgMsgWinColorUrgentImportant); + Items.Add(dlgMsgWinColorUrgentError); + Items.Add(dlgMsgWinColorUrgentFatal); + Items.Add(dlgMsgWinColorUrgentPanic); +end; + +procedure TMsgWndOptionsFrame.MsgColorListBoxSelectionChange(Sender: TObject; User: boolean); +begin + if not (fReady and User) then + Exit; + MsgColorBox.Selected := MsgColorListBox.Selected; +end; + procedure TMsgWndOptionsFrame.MWColorListBoxSelectionChange(Sender: TObject; User: boolean); begin @@ -135,6 +214,16 @@ MWColorBox.Selected := MWColorListBox.Selected; end; +procedure TMsgWndOptionsFrame.MWSetPastelColorsButtonClick(Sender: TObject); +begin + MWColorListBox.Colors[ord(mwBackground)]:=clWindow; + MWColorListBox.Colors[ord(mwRunning)] :=TColor($00CBF3FF); // harmonic pastel yellow + MWColorListBox.Colors[ord(mwSuccess)] :=TColor($00BEEFC3); // harmonic pastel green + MWColorListBox.Colors[ord(mwFailed)] :=TColor($00CCCBFF); // harmonic pastel rose + MWColorListBox.Colors[ord(mwAutoHeader)]:=TColor($00EEC3BD); // harmonic pastel blue + MWColorBox.Selected := MWColorListBox.Selected; +end; + function TMsgWndOptionsFrame.GeneralPage: TEditorGeneralOptionsFrame; begin Result:=nil; @@ -146,10 +235,14 @@ begin inherited Create(AOwner); - MWOptionsLabel.Caption:=dlgOIOptions; + MWOptionsLabel.Caption:=lisOptions; + BtnHeaderColor.Caption := lisHeaderColors; + BtnMsgColor.Caption := lisMsgColors; MWColorsGroupBox.Caption:=dlgColors; + MsgColorGroupBox.Caption:=dlgColors; MWSpeedSetColorsGroupBox.Caption:=lisSetAllColors; MWSetDefaultColorsButton.Caption:=lisLazarusDefault; + MWSetPastelColorsButton.Caption:=lisPastelColors; MWSetEditorColorsButton.Caption:=lisEditorColors; MWShowIconsCheckBox.Caption:=dlgShowMessagesIcons; MWShowIconsCheckBox.Hint:=dlgAnIconForErrorWarningHintIsShown; @@ -158,6 +251,10 @@ MWFocusCheckBox.Caption:=dlgEOFocusMessagesAfterCompilation; MWMaxProcsLabel.Caption:=Format(lisMaximumParallelProcesses0MeansDefault, [ IntToStr(DefaultMaxProcessCount)]); + MWShowFPCMsgLinesCompiledCheckBox.Caption:=lisShowFPCMessageLinesCompiled; + MWShowFPCMsgLinesCompiledCheckBox.Hint:= + lisElevateTheMessagePriorityToAlwaysShowItByDefaultIt; + Notebook1.PageIndex := 0; end; function TMsgWndOptionsFrame.GetTitle: String; @@ -176,14 +273,18 @@ var o: TEnvironmentOptions; c: TMsgWndColor; + u: TMessageLineUrgency; begin o:=(AOptions as TEnvironmentOptions); for c in TMsgWndColor do MWColorListBox.Colors[ord(c)] := o.MsgViewColors[c]; + for u in TMessageLineUrgency do + MsgColorListBox.Colors[ord(u)] := o.MsgColors[u]; MWShowIconsCheckBox.Checked := o.ShowMessagesIcons; MWAlwaysDrawFocusedCheckBox.Checked := o.MsgViewAlwaysDrawFocused; MWFocusCheckBox.Checked := o.MsgViewFocus; MWMaxProcsSpinEdit.Value := o.MaxExtToolsInParallel; + MWShowFPCMsgLinesCompiledCheckBox.Checked := o.MsgViewShowFPCMsgLinesCompiled; fReady:=true; end; @@ -191,14 +292,18 @@ var o: TEnvironmentOptions; c: TMsgWndColor; + u: TMessageLineUrgency; begin o:=(AOptions as TEnvironmentOptions); for c in TMsgWndColor do o.MsgViewColors[c] := MWColorListBox.Colors[ord(c)]; + for u in TMessageLineUrgency do + o.MsgColors[u] := MsgColorListBox.Colors[ord(u)]; o.ShowMessagesIcons := MWShowIconsCheckBox.Checked; o.MsgViewAlwaysDrawFocused := MWAlwaysDrawFocusedCheckBox.Checked; o.MsgViewFocus := MWFocusCheckBox.Checked; o.MaxExtToolsInParallel := MWMaxProcsSpinEdit.Value; + o.MsgViewShowFPCMsgLinesCompiled := MWShowFPCMsgLinesCompiledCheckBox.Checked; end; class function TMsgWndOptionsFrame. diff -Nru lazarus-1.4.4+dfsg/ide/frames/naming_options.pas lazarus-1.6+dfsg/ide/frames/naming_options.pas --- lazarus-1.4.4+dfsg/ide/frames/naming_options.pas 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/naming_options.pas 2015-08-06 12:50:41.000000000 +0000 @@ -42,7 +42,7 @@ private public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -87,7 +87,7 @@ Add(dlgAutoDel); Add(dlgAutoRen); Add(dlgAmbigWarn); - Add(dlgIgnoreVerb); + Add(lisIgnore); EndUpdate; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/oi_options.pas lazarus-1.6+dfsg/ide/frames/oi_options.pas --- lazarus-1.4.4+dfsg/ide/frames/oi_options.pas 2014-11-18 23:40:20.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/oi_options.pas 2015-10-02 13:27:18.000000000 +0000 @@ -99,7 +99,7 @@ procedure ApplyOISettings(ASettings: TSpeedOISettings); public function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -129,7 +129,7 @@ { ooShowComponentTree } True, { ooShowHints } False, { ooAutoShow } True, - { ooCheckboxForBoolean } False, + { ooCheckboxForBoolean } True, { ooBoldNonDefault } True, { ooDrawGridLines } True, { ooShowGutter } True, @@ -172,7 +172,7 @@ begin ObjectInspectorColorsGroupBox.Caption := dlgColors; OIMiscGroupBox.Caption := dlgOIMiscellaneous; - OIOptionsGroupBox.Caption := dlgOIOptions; + OIOptionsGroupBox.Caption := lisOptions; ObjectInspectorSpeedSettingsGroupBox.Caption := dlgOISpeedSettings; BtnUseDefaultLazarusSettings.Caption := dlgOIUseDefaultLazarusSettings; diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_application_options.lfm lazarus-1.6+dfsg/ide/frames/project_application_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/project_application_options.lfm 2015-01-08 20:56:29.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_application_options.lfm 2015-06-14 21:38:29.000000000 +0000 @@ -15,7 +15,7 @@ Width = 487 Align = alTop Caption = 'AppSettingsGroupBox' - ClientHeight = 444 + ClientHeight = 449 ClientWidth = 483 TabOrder = 0 object TitleLabel: TLabel @@ -23,9 +23,9 @@ AnchorSideTop.Control = TitleEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 20 + Height = 15 Top = 10 - Width = 65 + Width = 51 BorderSpacing.Left = 6 Caption = 'TitleLabel' ParentColor = False @@ -34,9 +34,9 @@ AnchorSideLeft.Control = AppSettingsGroupBox AnchorSideTop.Control = IconPanel Left = 6 - Height = 20 - Top = 40 - Width = 64 + Height = 15 + Top = 35 + Width = 51 BorderSpacing.Left = 6 Caption = 'IconLabel' ParentColor = False @@ -48,9 +48,9 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = IconTrack Left = 240 - Height = 20 - Top = 178 - Width = 99 + Height = 15 + Top = 176 + Width = 80 BorderSpacing.Left = 6 BorderSpacing.Right = 6 Caption = 'IconTrackLabel' @@ -58,7 +58,7 @@ end object TitleEdit: TEdit Left = 106 - Height = 28 + Height = 23 Top = 6 Width = 371 Align = alTop @@ -72,22 +72,22 @@ AnchorSideTop.Control = DarwinDividerBevel AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 372 - Width = 186 + Height = 19 + Top = 337 + Width = 150 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'UseAppBundleCheckBox' - TabOrder = 6 + TabOrder = 11 end object UseXPManifestCheckBox: TCheckBox AnchorSideLeft.Control = AppSettingsGroupBox AnchorSideTop.Control = WindowsDividerBevel AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 - Top = 234 - Width = 186 + Height = 19 + Top = 224 + Width = 151 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'UseXPManifestCheckBox' @@ -100,7 +100,7 @@ AnchorSideTop.Side = asrBottom Left = 106 Height = 128 - Top = 40 + Top = 35 Width = 128 BorderSpacing.Left = 106 BorderSpacing.Top = 6 @@ -128,9 +128,9 @@ AnchorSideBottom.Control = IconPanel AnchorSideBottom.Side = asrBottom Left = 240 - Height = 30 - Top = 40 - Width = 131 + Height = 25 + Top = 35 + Width = 111 AutoSize = True BorderSpacing.Left = 6 Caption = 'LoadIconButton' @@ -142,28 +142,28 @@ AnchorSideTop.Control = DefaultIconButton AnchorSideTop.Side = asrBottom Left = 240 - Height = 30 - Top = 112 - Width = 129 + Height = 25 + Top = 97 + Width = 109 AutoSize = True BorderSpacing.Top = 6 Caption = 'SaveIconButton' OnClick = SaveIconButtonClick - TabOrder = 4 + TabOrder = 5 end object ClearIconButton: TBitBtn AnchorSideLeft.Control = SaveIconButton AnchorSideTop.Control = SaveIconButton AnchorSideTop.Side = asrBottom Left = 240 - Height = 30 - Top = 148 - Width = 132 + Height = 25 + Top = 128 + Width = 112 AutoSize = True BorderSpacing.Top = 6 Caption = 'ClearIconButton' OnClick = ClearIconButtonClick - TabOrder = 5 + TabOrder = 6 end object IconTrack: TTrackBar AnchorSideLeft.Control = IconPanel @@ -173,7 +173,7 @@ AnchorSideRight.Side = asrBottom Left = 106 Height = 40 - Top = 168 + Top = 163 Width = 128 Max = 0 OnChange = IconTrackChange @@ -187,9 +187,9 @@ AnchorSideTop.Control = UseXPManifestCheckBox AnchorSideTop.Side = asrBottom Left = 27 - Height = 24 - Top = 261 - Width = 154 + Height = 19 + Top = 246 + Width = 123 BorderSpacing.Left = 21 BorderSpacing.Top = 3 Caption = 'DpiAwareCheckBox' @@ -200,9 +200,9 @@ AnchorSideTop.Control = ExecutionLevelComboBox AnchorSideTop.Side = asrBottom Left = 27 - Height = 24 - Top = 319 - Width = 146 + Height = 19 + Top = 294 + Width = 119 BorderSpacing.Top = 3 Caption = 'UIAccessCheckBox' TabOrder = 10 @@ -212,14 +212,14 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = DpiAwareCheckBox AnchorSideTop.Side = asrBottom - Left = 167 - Height = 28 - Top = 288 - Width = 310 + Left = 139 + Height = 23 + Top = 268 + Width = 338 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Top = 3 - ItemHeight = 20 + ItemHeight = 15 Style = csDropDownList TabOrder = 9 end @@ -228,9 +228,9 @@ AnchorSideTop.Control = ExecutionLevelComboBox AnchorSideTop.Side = asrCenter Left = 27 - Height = 20 - Top = 292 - Width = 134 + Height = 15 + Top = 272 + Width = 106 Caption = 'ExecutionLevelLabel' ParentColor = False end @@ -239,21 +239,21 @@ AnchorSideTop.Control = LoadIconButton AnchorSideTop.Side = asrBottom Left = 240 - Height = 30 - Top = 76 - Width = 147 + Height = 25 + Top = 66 + Width = 123 AutoSize = True BorderSpacing.Top = 6 Caption = 'DefaultIconButton' OnClick = DefaultIconButtonClick - TabOrder = 11 + TabOrder = 4 end object WindowsDividerBevel: TDividerBevel AnchorSideTop.Control = IconTrack AnchorSideTop.Side = asrBottom Left = 6 - Height = 20 - Top = 211 + Height = 15 + Top = 206 Width = 471 Caption = 'For Windows' Anchors = [akTop, akLeft, akRight] @@ -265,8 +265,8 @@ AnchorSideTop.Control = UIAccessCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 20 - Top = 349 + Height = 15 + Top = 319 Width = 471 Caption = 'For Darwin' Anchors = [akTop, akLeft, akRight] @@ -279,9 +279,9 @@ AnchorSideTop.Control = UseAppBundleCheckBox AnchorSideTop.Side = asrBottom Left = 27 - Height = 30 - Top = 402 - Width = 187 + Height = 25 + Top = 362 + Width = 155 AutoSize = True BorderSpacing.Left = 21 BorderSpacing.Top = 6 diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_application_options.pas lazarus-1.6+dfsg/ide/frames/project_application_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_application_options.pas 2015-01-08 20:56:29.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_application_options.pas 2016-01-03 12:28:36.000000000 +0000 @@ -53,7 +53,7 @@ function GetIconAsStream: TStream; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -86,8 +86,7 @@ TargetExeName := LazarusIDE.GetTestBuildDirectory + ExtractFilename(AProject.MainUnitInfo.Filename) else - TargetExeName := AProject.CompilerOptions.CreateTargetFilename( - AProject.MainFilename); + TargetExeName := AProject.CompilerOptions.CreateTargetFilename; if not (CreateApplicationBundle(TargetExeName, AProject.GetTitle, True) in [mrOk, mrIgnore]) then @@ -256,10 +255,13 @@ begin TitleEdit.Text := Title; UseAppBundleCheckBox.Checked := UseAppBundle; - UseXPManifestCheckBox.Checked := TProjectXPManifest(ProjResources[TProjectXPManifest]).UseManifest; - DpiAwareCheckBox.Checked := TProjectXPManifest(ProjResources[TProjectXPManifest]).DpiAware; - ExecutionLevelComboBox.ItemIndex := Ord(TProjectXPManifest(ProjResources[TProjectXPManifest]).ExecutionLevel); - UIAccessCheckBox.Checked := TProjectXPManifest(ProjResources[TProjectXPManifest]).UIAccess; + with ProjResources.XPManifest do + begin + UseXPManifestCheckBox.Checked := UseManifest; + DpiAwareCheckBox.Checked := DpiAware; + ExecutionLevelComboBox.ItemIndex := Ord(ExecutionLevel); + UIAccessCheckBox.Checked := UIAccess; + end; DpiAwareCheckBox.Enabled := UseXPManifestCheckBox.Checked; ExecutionLevelLabel.Enabled := UseXPManifestCheckBox.Checked; ExecutionLevelComboBox.Enabled := UseXPManifestCheckBox.Checked; diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_forms_options.pas lazarus-1.6+dfsg/ide/frames/project_forms_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_forms_options.pas 2014-10-30 19:48:21.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_forms_options.pas 2015-05-29 09:04:18.000000000 +0000 @@ -34,7 +34,7 @@ procedure SelectOnlyThisAutoCreateForm(Index: integer); public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -263,6 +263,11 @@ FillAutoCreateFormsListbox; FillAvailFormsListBox; FormsAutoCreateNewFormsCheckBox.Checked := Project.AutoCreateForms; + + FormsMoveAutoCreatedFormUpBtn.ShowHint := true; + FormsMoveAutoCreatedFormsDownBtn.ShowHint := true; + FormsMoveAutoCreatedFormUpBtn.Hint := lisMMMoveSelectedItemUp; + FormsMoveAutoCreatedFormsDownBtn.Hint := lisMMMoveSelectedItemDown; end; procedure TProjectFormsOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_i18n_options.lfm lazarus-1.6+dfsg/ide/frames/project_i18n_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/project_i18n_options.lfm 2010-06-18 07:49:33.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_i18n_options.lfm 2015-09-20 15:09:00.000000000 +0000 @@ -1,5 +1,7 @@ -inherited ProjectI18NOptionsFrame: TProjectI18NOptionsFrame +object ProjectI18NOptionsFrame: TProjectI18NOptionsFrame + Left = 0 Height = 242 + Top = 0 Width = 438 ClientHeight = 242 ClientWidth = 438 @@ -7,9 +9,9 @@ TabOrder = 0 DesignLeft = 467 DesignTop = 355 - object EnableI18NCheckBox: TCheckBox[0] + object EnableI18NCheckBox: TCheckBox Left = 0 - Height = 22 + Height = 24 Top = 0 Width = 438 Align = alTop @@ -19,76 +21,65 @@ ShowHint = True TabOrder = 0 end - object I18NGroupBox: TGroupBox[1] + object I18NGroupBox: TGroupBox AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 112 - Top = 28 + Height = 108 + Top = 30 Width = 438 Align = alTop AutoSize = True BorderSpacing.Top = 6 Caption = 'i18n Options' - ClientHeight = 94 - ClientWidth = 430 + ClientHeight = 91 + ClientWidth = 434 TabOrder = 1 object PoOutDirLabel: TLabel Left = 6 - Height = 18 + Height = 15 Top = 6 - Width = 134 + Width = 118 BorderSpacing.Around = 6 Caption = 'PO Output Directory:' ParentColor = False end - object POOutDirEdit: TEdit + object PoForFormsCheckBox: TCheckBox + AnchorSideLeft.Control = PoOutDirLabel + AnchorSideTop.Control = POOutDirEdit + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 24 + Top = 67 + Width = 145 + BorderSpacing.Top = 15 + Caption = 'PoForFormsCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 1 + end + object POOutDirEdit: TEditButton AnchorSideLeft.Control = I18NGroupBox AnchorSideTop.Control = PoOutDirLabel AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = POOutDirButton + AnchorSideRight.Side = asrBottom Left = 6 - Height = 27 - Top = 30 - Width = 394 + Height = 25 + Top = 27 + Width = 420 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Bottom = 6 + ButtonWidth = 45 + MaxLength = 0 + NumGlyphs = 1 + OnButtonClick = POOutDirButtonClick ParentShowHint = False + PasswordChar = #0 ShowHint = True TabOrder = 0 Text = 'POOutDirEdit' end - object POOutDirButton: TButton - AnchorSideTop.Control = POOutDirEdit - AnchorSideRight.Control = I18NGroupBox - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = POOutDirEdit - AnchorSideBottom.Side = asrBottom - Left = 400 - Height = 27 - Top = 30 - Width = 24 - Anchors = [akTop, akRight, akBottom] - BorderSpacing.Right = 6 - Caption = '...' - OnClick = POOutDirButtonClick - TabOrder = 1 - end - object PoForFormsCheckBox: TCheckBox - AnchorSideLeft.Control = PoOutDirLabel - AnchorSideTop.Control = POOutDirEdit - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 22 - Top = 72 - Width = 171 - BorderSpacing.Top = 15 - Caption = 'PoForFormsCheckBox' - ParentShowHint = False - ShowHint = True - TabOrder = 2 - end end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_i18n_options.pas lazarus-1.6+dfsg/ide/frames/project_i18n_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_i18n_options.pas 2014-07-06 22:37:43.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_i18n_options.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - StdCtrls, Project, IDEProcs, IDEOptionsIntf, LazarusIDEStrConsts, IDEDialogs; + StdCtrls, EditBtn, LazFileUtils, Project, IDEOptionsIntf, + LazarusIDEStrConsts, IDEDialogs; type @@ -16,8 +16,7 @@ EnableI18NCheckBox: TCheckBox; I18NGroupBox: TGroupBox; PoForFormsCheckBox: TCheckBox; - POOutDirButton: TButton; - POOutDirEdit: TEdit; + POOutDirEdit: TEditButton; PoOutDirLabel: TLabel; procedure EnableI18NCheckBoxChange(Sender: TObject); procedure FrameClick(Sender: TObject); @@ -27,7 +26,7 @@ procedure Enablei18nInfo(Usei18n: boolean); public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -93,6 +92,7 @@ PoForFormsCheckBox.Checked:=EnableI18NForLFM; Enablei18nInfo(Enablei18n); end; + POOutDirEdit.Button.LoadGlyphFromResourceName(HInstance, ResBtnSelDir); //DirectoryEdit end; procedure TProjectI18NOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_lazdoc_options.lfm lazarus-1.6+dfsg/ide/frames/project_lazdoc_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/project_lazdoc_options.lfm 2012-02-04 17:02:16.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_lazdoc_options.lfm 2015-05-29 09:04:15.000000000 +0000 @@ -13,9 +13,9 @@ AnchorSideTop.Control = FPDocPackageNameEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 14 - Top = 9 - Width = 123 + Height = 15 + Top = 10 + Width = 138 BorderSpacing.Around = 6 Caption = 'FPDocPackageNameLabel' ParentColor = False @@ -24,17 +24,14 @@ AnchorSideLeft.Control = FPDocPackageNameLabel AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = Owner - Left = 135 - Height = 21 + Left = 150 + Height = 23 Top = 6 Width = 120 BorderSpacing.Around = 6 - OnEnter = FPDocPackageNameEditEnter - OnExit = FPDocPackageNameEditExit ParentShowHint = False ShowHint = True TabOrder = 0 - Text = 'FPDocPackageNameEdit' end object SearchPathsGroupBox: TGroupBox AnchorSideLeft.Control = Owner @@ -45,12 +42,12 @@ AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 0 - Height = 236 - Top = 33 + Height = 234 + Top = 35 Width = 478 Anchors = [akTop, akLeft, akRight, akBottom] Caption = 'SearchPathsGroupBox' - ClientHeight = 218 + ClientHeight = 214 ClientWidth = 474 TabOrder = 1 object PathsListBox: TListBox @@ -65,78 +62,56 @@ ScrollWidth = 472 TabOrder = 0 end - object PathEdit: TEdit - AnchorSideLeft.Control = SearchPathsGroupBox - AnchorSideTop.Control = PathsListBox - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = BrowseButton - Left = 6 - Height = 21 - Top = 120 - Width = 438 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Bottom = 6 - OnChange = PathEditChange - TabOrder = 1 - Text = 'PathEdit' - end object AddPathButton: TBitBtn AnchorSideLeft.Control = SearchPathsGroupBox - AnchorSideTop.Control = PathEdit AnchorSideTop.Side = asrBottom Left = 6 - Height = 23 + Height = 25 Top = 147 - Width = 99 + Width = 108 AutoSize = True BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = 'AddPathButton' Enabled = False - NumGlyphs = 0 OnClick = AddPathButtonClick TabOrder = 2 end object DeletePathButton: TBitBtn AnchorSideLeft.Control = AddPathButton AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = PathEdit AnchorSideTop.Side = asrBottom - Left = 111 - Height = 23 + Left = 120 + Height = 25 Top = 147 - Width = 111 + Width = 119 AutoSize = True BorderSpacing.Around = 6 Caption = 'DeletePathButton' Enabled = False - NumGlyphs = 0 OnClick = DeletePathButtonClick TabOrder = 3 end - object BrowseButton: TButton - AnchorSideLeft.Control = PathEdit - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = PathEdit + object PathEdit: TDirectoryEdit + AnchorSideLeft.Control = SearchPathsGroupBox + AnchorSideTop.Control = PathsListBox + AnchorSideTop.Side = asrBottom AnchorSideRight.Control = SearchPathsGroupBox AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = PathEdit - AnchorSideBottom.Side = asrBottom - Left = 444 - Height = 21 + Left = 6 + Height = 23 Top = 120 - Width = 24 - Anchors = [akTop, akRight, akBottom] - BorderSpacing.Right = 6 - Caption = '...' - OnClick = BrowseButtonClick - TabOrder = 4 + Width = 462 + Directory = 'PathEdit' + ShowHidden = False + ButtonWidth = 45 + NumGlyphs = 1 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + MaxLength = 0 + TabOrder = 1 + OnChange = PathEditChange + Text = 'PathEdit' end end - object SelectDirectoryDialog: TSelectDirectoryDialog - FilterIndex = 0 - left = 370 - end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_lazdoc_options.pas lazarus-1.6+dfsg/ide/frames/project_lazdoc_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_lazdoc_options.pas 2014-07-06 22:37:43.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_lazdoc_options.pas 2015-05-29 09:04:15.000000000 +0000 @@ -5,9 +5,9 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, - StdCtrls, Buttons, Project, IDEOptionsIntf, LazarusIDEStrConsts, IDEProcs, - FPDocEditWindow, CodeHelp; + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, + Buttons, EditBtn, Project, IDEOptionsIntf, LazarusIDEStrConsts, IDEProcs, + CodeHelp; type @@ -15,26 +15,21 @@ TProjectFPDocOptionsFrame = class(TAbstractIDEOptionsEditor) AddPathButton: TBitBtn; - BrowseButton: TButton; DeletePathButton: TBitBtn; FPDocPackageNameEdit: TEdit; FPDocPackageNameLabel: TLabel; + PathEdit: TDirectoryEdit; PathsListBox: TListBox; - PathEdit: TEdit; SearchPathsGroupBox: TGroupBox; - SelectDirectoryDialog: TSelectDirectoryDialog; procedure AddPathButtonClick(Sender: TObject); - procedure BrowseButtonClick(Sender: TObject); procedure DeletePathButtonClick(Sender: TObject); - procedure FPDocPackageNameEditEnter(Sender: TObject); - procedure FPDocPackageNameEditExit(Sender: TObject); - procedure PathsListBoxSelectionChange(Sender: TObject; User: boolean); + procedure PathsListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); procedure PathEditChange(Sender: TObject); private function GetFPDocPkgNameEditValue: string; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -64,12 +59,6 @@ PathEdit.Clear; end; -procedure TProjectFPDocOptionsFrame.BrowseButtonClick(Sender: TObject); -begin - if SelectDirectoryDialog.Execute then - PathEdit.Text := SelectDirectoryDialog.FileName; -end; - procedure TProjectFPDocOptionsFrame.AddPathButtonClick(Sender: TObject); begin if PathEdit.Text <> '' then begin @@ -86,20 +75,6 @@ end; end; -procedure TProjectFPDocOptionsFrame.FPDocPackageNameEditEnter(Sender: TObject); -begin - if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then - FPDocPackageNameEdit.Text:=''; -end; - -procedure TProjectFPDocOptionsFrame.FPDocPackageNameEditExit(Sender: TObject); -begin - if GetFPDocPkgNameEditValue='' then - FPDocPackageNameEdit.Text:=lisDefaultPlaceholder - else - FPDocPackageNameEdit.Text:=GetFPDocPkgNameEditValue; -end; - procedure TProjectFPDocOptionsFrame.PathsListBoxSelectionChange(Sender: TObject; User: boolean); begin DeletePathButton.Enabled:=(Sender as TListBox).ItemIndex <> -1; @@ -107,25 +82,20 @@ procedure TProjectFPDocOptionsFrame.PathEditChange(Sender: TObject); begin - AddPathButton.Enabled:=(Sender as TEdit).Text <> ''; + AddPathButton.Enabled:=PathEdit.Text<>''; end; function TProjectFPDocOptionsFrame.GetFPDocPkgNameEditValue: string; begin - if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then - Result:='' - else - Result:=MakeValidFPDocPackageName(FPDocPackageNameEdit.Text); + Result:=MakeValidFPDocPackageName(FPDocPackageNameEdit.Text); end; procedure TProjectFPDocOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); begin with (AOptions as TProjectIDEOptions).Project do begin SplitString(FPDocPaths, ';', PathsListBox.Items, True); - if FPDocPackageName='' then - FPDocPackageNameEdit.Text:=lisDefaultPlaceholder - else - FPDocPackageNameEdit.Text:=FPDocPackageName; + FPDocPackageNameEdit.TextHint:=lisDefaultPlaceholder; + FPDocPackageNameEdit.Text:=FPDocPackageName; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_misc_options.pas lazarus-1.6+dfsg/ide/frames/project_misc_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_misc_options.pas 2015-01-19 10:50:17.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_misc_options.pas 2015-03-10 13:17:19.000000000 +0000 @@ -33,7 +33,7 @@ private public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_resources_options.pas lazarus-1.6+dfsg/ide/frames/project_resources_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_resources_options.pas 2014-10-11 07:42:05.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_resources_options.pas 2015-09-05 22:29:56.000000000 +0000 @@ -7,10 +7,9 @@ interface uses - Classes, SysUtils, FileUtil, Graphics, Forms, Controls, ComCtrls, Dialogs, - LCLProc, LCLType, - IDEOptionsIntf, IDEImagesIntf, IDEDialogs, Project, - ProjectUserResources, LCLStrConsts, ExtCtrls, StdCtrls, LazarusIDEStrConsts; + Classes, SysUtils, Graphics, Controls, ComCtrls, Dialogs, LCLType, + FileUtil, LazFileUtils, LazUTF8, IDEOptionsIntf, IDEImagesIntf, IDEDialogs, Project, + ProjectUserResources, LCLStrConsts, StdCtrls, LazarusIDEStrConsts; type @@ -32,12 +31,13 @@ procedure btnDeleteClick(Sender: TObject); procedure cbResourceTypeChange(Sender: TObject); procedure edResourceNameEditingDone(Sender: TObject); - procedure edResourceNameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure lbResourcesInsert(Sender: TObject; Item: TListItem); - procedure lbResourcesKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure lbResourcesSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure edResourceNameKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + procedure lbResourcesInsert(Sender: TObject; {%H-}Item: TListItem); + procedure lbResourcesKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + procedure lbResourcesSelectItem(Sender: TObject; {%H-}Item: TListItem; {%H-}Selected: Boolean); private FProject: TProject; + FModified: Boolean; private FAddResourceItemDuplicates: integer; FResourceNameList: TStringList; // to keep resource names unique @@ -57,7 +57,7 @@ destructor Destroy; override; function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -103,6 +103,7 @@ lbResources.Items.Clear; FResourceNameList.Clear; FResourceFileNameList.Clear; + FModified := True; end; btnClear.Enabled := lbResources.Items.Count > 0; end; @@ -120,6 +121,7 @@ FResourceFileNameList.Delete(FResourceFileNameList.IndexOf(resFileName)); lbResources.Items.Delete(lbResources.Selected.Index); + FModified := True; end; btnClear.Enabled := lbResources.Items.Count > 0; end; @@ -266,6 +268,7 @@ FResourceFileNameList.Add(ResFile); FResourceNameList.Add(ResName); + FModified := True; exit(true); end; @@ -340,6 +343,7 @@ AddResourceEnd; end; btnClear.Enabled := lbResources.Items.Count > 0; + FModified := False; end; procedure TResourcesOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); @@ -347,11 +351,13 @@ Project: TProject; I: Integer; begin + if not FModified then Exit; Project := (AOptions as TProjectIDEOptions).Project; Project.ProjResources.UserResources.List.Clear; for I := 0 to lbResources.Items.Count - 1 do Project.ProjResources.UserResources.List.AddResource(lbResources.Items[I].Caption, StrToResourceType(lbResources.Items[I].SubItems[LVSUBITEM_TYPE]), lbResources.Items[I].SubItems[LVSUBITEM_NAME]); + Project.ProjResources.Modified := True; end; class function TResourcesOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass; diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_save_options.pas lazarus-1.6+dfsg/ide/frames/project_save_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_save_options.pas 2014-10-30 19:48:33.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_save_options.pas 2015-03-10 13:17:19.000000000 +0000 @@ -25,7 +25,7 @@ public function GetTitle: string; override; function GetSessionLocation: TProjectSessionStorage; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_versioninfo_options.lfm lazarus-1.6+dfsg/ide/frames/project_versioninfo_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/project_versioninfo_options.lfm 2015-02-17 23:53:36.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_versioninfo_options.lfm 2015-06-08 16:11:00.000000000 +0000 @@ -281,7 +281,7 @@ Width = 300 end> FixedCols = 0 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goAlwaysShowEditor, goSmoothScroll] + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goAlwaysShowEditor, goThumbTracking, goSmoothScroll] TabOrder = 0 TitleStyle = tsNative ColWidths = ( diff -Nru lazarus-1.4.4+dfsg/ide/frames/project_versioninfo_options.pas lazarus-1.6+dfsg/ide/frames/project_versioninfo_options.pas --- lazarus-1.4.4+dfsg/ide/frames/project_versioninfo_options.pas 2015-06-09 00:01:16.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/project_versioninfo_options.pas 2015-06-08 23:44:23.000000000 +0000 @@ -6,7 +6,7 @@ uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - Spin, Buttons, Grids, CheckLst, LCLProc, + Spin, Buttons, Grids, CheckLst, LazUTF8, Project, IDEOptionsIntf, LazarusIDEStrConsts, W32VersionInfo; type @@ -43,7 +43,7 @@ procedure DeleteKey(AKey: String); public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/ide/frames/window_options.lfm lazarus-1.6+dfsg/ide/frames/window_options.lfm --- lazarus-1.4.4+dfsg/ide/frames/window_options.lfm 2014-11-01 15:26:36.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/window_options.lfm 2015-06-23 10:41:54.000000000 +0000 @@ -1,22 +1,22 @@ object WindowOptionsFrame: TWindowOptionsFrame Left = 0 - Height = 545 + Height = 585 Top = 0 - Width = 562 - ClientHeight = 545 - ClientWidth = 562 + Width = 573 + ClientHeight = 585 + ClientWidth = 573 TabOrder = 0 - DesignLeft = 407 - DesignTop = 219 + DesignLeft = 349 + DesignTop = 181 object SingleTaskBarButtonCheckBox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = lblShowingWindows AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 20 - Width = 224 + Height = 22 + Top = 17 + Width = 200 Caption = 'SingleTaskBarButtonCheckBox' ParentShowHint = False ShowHint = True @@ -28,40 +28,36 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 24 - Top = 44 - Width = 187 + Height = 22 + Top = 39 + Width = 166 Caption = 'HideIDEOnRunCheckBox' ParentShowHint = False ShowHint = True TabOrder = 1 end object WindowPositionsPanel: TPanel - AnchorSideLeft.Control = Owner AnchorSideTop.Control = lblWindowPosition AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 0 - Height = 354 - Top = 191 - Width = 562 + Height = 383 + Top = 197 + Width = 570 Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Top = 1 + BorderSpacing.Top = 3 Caption = 'WindowPositionsPanel' - ClientHeight = 354 - ClientWidth = 562 - TabOrder = 2 + ClientHeight = 383 + ClientWidth = 570 + TabOrder = 8 object LeftLabel: TLabel AnchorSideTop.Control = LeftEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = LeftEdit - Left = 281 - Height = 20 - Top = 238 - Width = 61 + Left = 297 + Height = 17 + Top = 234 + Width = 53 Anchors = [akTop, akRight] BorderSpacing.Right = 3 Caption = 'LeftLabel' @@ -71,10 +67,10 @@ AnchorSideTop.Control = TopEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = TopEdit - Left = 280 - Height = 20 - Top = 272 - Width = 62 + Left = 297 + Height = 17 + Top = 263 + Width = 53 Anchors = [akTop, akRight] BorderSpacing.Right = 3 Caption = 'TopLabel' @@ -84,10 +80,10 @@ AnchorSideTop.Control = WidthEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = WidthEdit - Left = 401 - Height = 20 - Top = 238 - Width = 76 + Left = 420 + Height = 17 + Top = 234 + Width = 65 Anchors = [akTop, akRight] BorderSpacing.Right = 3 Caption = 'WidthLabel' @@ -97,10 +93,10 @@ AnchorSideTop.Control = HeightEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = HeightEdit - Left = 396 - Height = 20 - Top = 272 - Width = 81 + Left = 415 + Height = 17 + Top = 263 + Width = 70 Anchors = [akTop, akRight] BorderSpacing.Right = 3 Caption = 'HeightLabel' @@ -114,7 +110,7 @@ Left = 7 Height = 120 Top = 3 - Width = 548 + Width = 556 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Top = 2 @@ -122,7 +118,6 @@ ItemHeight = 0 OnSelectionChange = WindowPositionsListBoxSelectionChange ParentShowHint = False - ScrollWidth = 300 ShowHint = True TabOrder = 0 end @@ -131,41 +126,41 @@ AnchorSideTop.Control = RestoreWindowGeometryRadioButton AnchorSideTop.Side = asrBottom Left = 7 - Height = 24 - Top = 261 - Width = 288 + Height = 23 + Top = 257 + Width = 248 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'LetWindowManagerDecideRadioButton' OnClick = WindowGeometryRadioButtonClick ParentShowHint = False ShowHint = True - TabOrder = 1 + TabOrder = 3 end object FixedDefaultRadioButton: TRadioButton AnchorSideLeft.Control = WindowPositionsPanel AnchorSideTop.Control = LetWindowManagerDecideRadioButton AnchorSideTop.Side = asrBottom Left = 7 - Height = 24 - Top = 288 - Width = 191 + Height = 23 + Top = 283 + Width = 167 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'FixedDefaultRadioButton' OnClick = WindowGeometryRadioButtonClick ParentShowHint = False ShowHint = True - TabOrder = 2 + TabOrder = 4 end object RestoreWindowGeometryRadioButton: TRadioButton AnchorSideLeft.Control = WindowPositionsPanel AnchorSideTop.Control = SplitterPanel AnchorSideTop.Side = asrBottom Left = 7 - Height = 24 - Top = 234 - Width = 277 + Height = 23 + Top = 231 + Width = 241 BorderSpacing.Left = 6 BorderSpacing.Top = 4 Caption = 'RestoreWindowGeometryRadioButton' @@ -173,7 +168,7 @@ OnClick = CustomGeometryRadioButtonClick ParentShowHint = False ShowHint = True - TabOrder = 3 + TabOrder = 2 TabStop = True end object CustomGeometryRadioButton: TRadioButton @@ -181,23 +176,23 @@ AnchorSideTop.Control = FixedDefaultRadioButton AnchorSideTop.Side = asrBottom Left = 7 - Height = 24 - Top = 315 - Width = 222 + Height = 23 + Top = 309 + Width = 196 BorderSpacing.Left = 6 BorderSpacing.Top = 3 Caption = 'CustomGeometryRadioButton' OnClick = CustomGeometryRadioButtonClick ParentShowHint = False ShowHint = True - TabOrder = 4 + TabOrder = 5 end object LeftEdit: TSpinEdit AnchorSideTop.Control = RestoreWindowGeometryRadioButton AnchorSideRight.Control = WidthEdit - Left = 345 - Height = 28 - Top = 234 + Left = 353 + Height = 23 + Top = 231 Width = 75 Anchors = [akTop, akRight] BorderSpacing.Right = 60 @@ -205,15 +200,15 @@ MinValue = -5000 ParentShowHint = False ShowHint = True - TabOrder = 5 + TabOrder = 6 end object TopEdit: TSpinEdit AnchorSideTop.Control = LeftEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Control = HeightEdit - Left = 345 - Height = 28 - Top = 268 + Left = 353 + Height = 23 + Top = 260 Width = 75 Anchors = [akTop, akRight] BorderSpacing.Top = 6 @@ -222,31 +217,31 @@ MinValue = -5000 ParentShowHint = False ShowHint = True - TabOrder = 6 + TabOrder = 7 end object WidthEdit: TSpinEdit AnchorSideTop.Control = LeftEdit AnchorSideRight.Control = WindowPositionsPanel AnchorSideRight.Side = asrBottom - Left = 480 - Height = 28 - Top = 234 + Left = 488 + Height = 23 + Top = 231 Width = 75 Anchors = [akTop, akRight] BorderSpacing.Right = 6 MaxValue = 4096 ParentShowHint = False ShowHint = True - TabOrder = 7 + TabOrder = 8 end object HeightEdit: TSpinEdit AnchorSideTop.Control = WidthEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Control = WindowPositionsPanel AnchorSideRight.Side = asrBottom - Left = 480 - Height = 28 - Top = 268 + Left = 488 + Height = 23 + Top = 260 Width = 75 Anchors = [akTop, akRight] BorderSpacing.Top = 6 @@ -254,32 +249,32 @@ MaxValue = 4096 ParentShowHint = False ShowHint = True - TabOrder = 8 + TabOrder = 9 end object GetWindowPositionButton: TButton AnchorSideTop.Control = ApplyButton AnchorSideRight.Control = ApplyButton - Left = 239 - Height = 30 - Top = 308 - Width = 201 + Left = 314 + Height = 29 + Top = 295 + Width = 161 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Right = 6 Caption = 'GetWindowPositionButton' Constraints.MinWidth = 75 OnClick = GetWindowPositionButtonClick - TabOrder = 9 + TabOrder = 10 end object ApplyButton: TButton AnchorSideTop.Control = HeightEdit AnchorSideTop.Side = asrBottom AnchorSideRight.Control = WindowPositionsPanel AnchorSideRight.Side = asrBottom - Left = 446 - Height = 30 - Top = 308 - Width = 109 + Left = 481 + Height = 29 + Top = 295 + Width = 82 Anchors = [akTop, akRight] AutoSize = True BorderSpacing.Top = 12 @@ -287,7 +282,7 @@ Caption = 'ApplyButton' Constraints.MinWidth = 75 OnClick = ApplyButtonClick - TabOrder = 10 + TabOrder = 11 end object SplitterPanel: TPanel AnchorSideLeft.Control = WindowPositionsPanel @@ -299,8 +294,8 @@ AnchorSideBottom.Side = asrBottom Left = 5 Height = 78 - Top = 152 - Width = 556 + Top = 149 + Width = 564 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 4 BorderSpacing.Top = 3 @@ -309,8 +304,8 @@ BorderStyle = bsSingle Caption = ' ' ClientHeight = 74 - ClientWidth = 552 - TabOrder = 11 + ClientWidth = 560 + TabOrder = 1 Visible = False object SplitterList: TListBox AnchorSideLeft.Control = SplitterPanel @@ -325,7 +320,6 @@ ItemHeight = 0 OnSelectionChange = SplitterListSelectionChange ParentShowHint = False - ScrollWidth = 273 ShowHint = True TabOrder = 0 end @@ -333,10 +327,10 @@ AnchorSideTop.Control = SplitEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = SplitEdit - Left = 407 - Height = 20 - Top = 40 - Width = 66 + Left = 425 + Height = 17 + Top = 44 + Width = 56 Anchors = [akTop, akRight] BorderSpacing.Right = 3 Caption = 'SplitLabel' @@ -347,16 +341,16 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = SplitterPanel AnchorSideBottom.Side = asrBottom - Left = 476 - Height = 28 - Top = 36 + Left = 484 + Height = 23 + Top = 41 Width = 75 Anchors = [akRight, akBottom] BorderSpacing.Bottom = 9 MaxValue = 5000 ParentShowHint = False ShowHint = True - TabOrder = 1 + TabOrder = 2 end object dropSplitterPlacement: TComboBox AnchorSideLeft.Control = SplitterList @@ -365,16 +359,16 @@ AnchorSideRight.Control = SplitterPanel AnchorSideRight.Side = asrBottom Left = 282 - Height = 28 + Height = 23 Top = 1 - Width = 269 + Width = 277 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 - ItemHeight = 20 + ItemHeight = 17 ParentShowHint = False ShowHint = True Style = csDropDownList - TabOrder = 2 + TabOrder = 1 end end object lblWindowCaption: TDividerBevel @@ -384,9 +378,9 @@ AnchorSideRight.Control = WindowPositionsPanel AnchorSideRight.Side = asrBottom Left = 1 - Height = 20 + Height = 17 Top = 129 - Width = 560 + Width = 568 Caption = 'lblWindowCaption' Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 @@ -400,52 +394,52 @@ AnchorSideTop.Control = HideIDEOnRunCheckBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 24 - Top = 68 - Width = 231 + Height = 22 + Top = 61 + Width = 204 Caption = 'TitleStartsWithProjectCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 3 + TabOrder = 2 end object ProjectDirInIdeTitleCheckBox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = TitleStartsWithProjectCheckBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 24 - Top = 92 - Width = 216 + Height = 22 + Top = 83 + Width = 192 Caption = 'ProjectDirInIdeTitleCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 4 + TabOrder = 3 end object TitleIncludesBuildMode: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = ProjectDirInIdeTitleCheckBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 24 - Top = 116 - Width = 180 + Height = 22 + Top = 105 + Width = 158 Caption = 'TitleIncludesBuildMode' ParentShowHint = False ShowHint = True - TabOrder = 5 + TabOrder = 4 end object NameForDesignedFormList: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = TitleIncludesBuildMode AnchorSideTop.Side = asrBottom Left = 0 - Height = 24 - Top = 140 - Width = 204 + Height = 22 + Top = 127 + Width = 181 Caption = 'NameForDesignedFormList' ParentShowHint = False ShowHint = True - TabOrder = 6 + TabOrder = 5 end object lblShowingWindows: TDividerBevel AnchorSideLeft.Control = Owner @@ -453,9 +447,9 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 20 + Height = 17 Top = 0 - Width = 562 + Width = 573 Caption = 'lblShowingWindows' Anchors = [akTop, akLeft, akRight] Font.Style = [fsBold] @@ -463,18 +457,45 @@ end object lblWindowPosition: TDividerBevel AnchorSideLeft.Control = Owner - AnchorSideTop.Control = NameForDesignedFormList + AnchorSideTop.Control = AutoAdjustIDEHeightFullCompPalCheckBox AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 20 - Top = 170 - Width = 562 + Height = 17 + Top = 177 + Width = 573 Caption = 'lblWindowPosition' Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 Font.Style = [fsBold] ParentFont = False end + object AutoAdjustIDEHeightCheckBox: TCheckBox + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = NameForDesignedFormList + AnchorSideTop.Side = asrBottom + Left = 0 + Height = 22 + Top = 149 + Width = 201 + Caption = 'AutoAdjustIDEHeightCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 6 + end + object AutoAdjustIDEHeightFullCompPalCheckBox: TCheckBox + AnchorSideLeft.Control = AutoAdjustIDEHeightCheckBox + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = AutoAdjustIDEHeightCheckBox + Left = 221 + Height = 22 + Top = 149 + Width = 272 + BorderSpacing.Left = 20 + Caption = 'AutoAdjustIDEHeightFullCompPalCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 7 + end end diff -Nru lazarus-1.4.4+dfsg/ide/frames/window_options.pas lazarus-1.6+dfsg/ide/frames/window_options.pas --- lazarus-1.4.4+dfsg/ide/frames/window_options.pas 2014-11-25 17:46:20.000000000 +0000 +++ lazarus-1.6+dfsg/ide/frames/window_options.pas 2015-09-29 18:05:38.000000000 +0000 @@ -35,10 +35,12 @@ TWindowOptionsFrame = class(TAbstractIDEOptionsEditor) ApplyButton: TButton; + AutoAdjustIDEHeightFullCompPalCheckBox: TCheckBox; lblWindowPosition: TDividerBevel; lblShowingWindows: TDividerBevel; lblWindowCaption: TDividerBevel; NameForDesignedFormList: TCheckBox; + AutoAdjustIDEHeightCheckBox: TCheckBox; TitleIncludesBuildMode: TCheckBox; dropSplitterPlacement: TComboBox; CustomGeometryRadioButton: TRadioButton; @@ -89,7 +91,7 @@ constructor Create(TheOwner: TComponent); override; destructor Destroy; override; function GetTitle: String; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -122,6 +124,10 @@ TitleIncludesBuildMode.Hint:=lisBuildModeInTitleInExample; NameForDesignedFormList.Caption:=lisWindowMenuWithNameForDesignedForm; NameForDesignedFormList.Hint:=lisWindowMenuWithNameForDesignedFormHint; + AutoAdjustIDEHeightCheckBox.Caption:=lisAutoAdjustIDEHeight; + AutoAdjustIDEHeightCheckBox.Hint:=lisAutoAdjustIDEHeightHint; + AutoAdjustIDEHeightFullCompPalCheckBox.Caption:=lisAutoAdjustIDEHeightFullComponentPalette; + AutoAdjustIDEHeightFullCompPalCheckBox.Hint:=lisAutoAdjustIDEHeightFullComponentPaletteHint; ProjectDirInIdeTitleCheckBox.Caption:=lisIDETitleShowsProjectDir; ProjectDirInIdeTitleCheckBox.Hint:=lisProjectDirectoryIsShowedInIdeTitleBar; end; @@ -131,7 +137,7 @@ Creator: TIDEWindowCreator; i, j: Integer; begin - with AOptions as TEnvironmentOptions do + with (AOptions as TEnvironmentOptions).Desktop do begin // window minimizing and hiding SingleTaskBarButtonCheckBox.Checked := SingleTaskBarButton; @@ -139,10 +145,12 @@ TitleStartsWithProjectCheckBox.Checked:=IDETitleStartsWithProject; TitleIncludesBuildMode.Checked:=IDETitleIncludesBuildMode; NameForDesignedFormList.Checked:=IDENameForDesignedFormList; + AutoAdjustIDEHeightCheckBox.Checked:=AutoAdjustIDEHeight; + AutoAdjustIDEHeightFullCompPalCheckBox.Checked:=AutoAdjustIDEHeightFullCompPal; ProjectDirInIdeTitleCheckBox.Checked:=IDEProjectDirectoryInIdeTitle; end; - FLayouts.Assign(IDEWindowCreators.SimpleLayoutStorage); + FLayouts.CopyItemsFrom(IDEWindowCreators.SimpleLayoutStorage); if FShowSimpleLayout then begin // Window Positions @@ -209,9 +217,9 @@ procedure TWindowOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); begin SaveLayout; - IDEWindowCreators.SimpleLayoutStorage.Assign(FLayouts); + IDEWindowCreators.SimpleLayoutStorage.CopyItemsFrom(FLayouts); - with AOptions as TEnvironmentOptions do + with (AOptions as TEnvironmentOptions).Desktop do begin // window minimizing SingleTaskBarButton := SingleTaskBarButtonCheckBox.Checked; @@ -219,6 +227,8 @@ IDETitleStartsWithProject:=TitleStartsWithProjectCheckBox.Checked; IDETitleIncludesBuildMode := TitleIncludesBuildMode.Checked; IDENameForDesignedFormList := NameForDesignedFormList.Checked; + AutoAdjustIDEHeight := AutoAdjustIDEHeightCheckBox.Checked; + AutoAdjustIDEHeightFullCompPal := AutoAdjustIDEHeightFullCompPalCheckBox.Checked; IDEProjectDirectoryInIdeTitle:=ProjectDirInIdeTitleCheckBox.Checked; end; end; @@ -473,7 +483,7 @@ constructor TWindowOptionsFrame.Create(TheOwner: TComponent); begin inherited Create(TheOwner); - FLayouts:=TSimpleWindowLayoutList.Create; + FLayouts:=TSimpleWindowLayoutList.Create(False); FShowSimpleLayout:=(IDEDockMaster=nil) or (not IDEDockMaster.HideSimpleLayoutOptions); end; diff -Nru lazarus-1.4.4+dfsg/ide/genericchecklist.lfm lazarus-1.6+dfsg/ide/genericchecklist.lfm --- lazarus-1.4.4+dfsg/ide/genericchecklist.lfm 2013-12-25 17:23:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/genericchecklist.lfm 2015-11-03 12:50:08.000000000 +0000 @@ -1,7 +1,7 @@ object GenericCheckListForm: TGenericCheckListForm Left = 389 Height = 277 - Top = 544 + Top = 463 Width = 343 ActiveControl = CheckListBox1 Caption = 'GenericCheckListForm' @@ -9,11 +9,11 @@ ClientWidth = 343 OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object ButtonPanel1: TButtonPanel Left = 6 - Height = 33 - Top = 238 + Height = 29 + Top = 242 Width = 331 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -30,23 +30,29 @@ ShowBevel = False end object CheckListBox1: TCheckListBox + AnchorSideLeft.Control = Owner AnchorSideTop.Control = InfoLabel AnchorSideTop.Side = asrBottom - Left = 0 - Height = 216 - Top = 15 - Width = 343 + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 202 + Top = 29 + Width = 331 Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Around = 6 ItemHeight = 0 OnItemClick = CheckListBox1ItemClick TabOrder = 1 + TopIndex = -1 end object InfoLabel: TLabel - Left = 0 - Height = 15 - Top = 0 - Width = 343 + Left = 6 + Height = 17 + Top = 6 + Width = 331 Align = alTop + BorderSpacing.Around = 6 Caption = 'InfoLabel' ParentColor = False WordWrap = True diff -Nru lazarus-1.4.4+dfsg/ide/helpfpcmessages.pas lazarus-1.6+dfsg/ide/helpfpcmessages.pas --- lazarus-1.4.4+dfsg/ide/helpfpcmessages.pas 2014-07-20 19:52:20.000000000 +0000 +++ lazarus-1.6+dfsg/ide/helpfpcmessages.pas 2015-07-07 11:43:38.000000000 +0000 @@ -37,11 +37,12 @@ interface uses - Classes, SysUtils, fgl, LCLProc, Dialogs, FileUtil, TextTools, MacroIntf, + Classes, SysUtils, fgl, LCLProc, Dialogs, TextTools, MacroIntf, LazarusIDEStrConsts, LazConfigStorage, HelpIntfs, IDEHelpIntf, BaseIDEIntf, IDEMsgIntf, IDEDialogs, IDEExternToolIntf, LazHelpIntf, LazHelpHTML, StdCtrls, ButtonPanel, ExtCtrls, Forms, Controls, Graphics, LCLIntf, CodeToolsFPCMsgs, - FileProcs, CodeToolManager, CodeCache, DefineTemplates, EnvironmentOpts; + FileProcs, LazFileUtils, LazFileCache, CodeToolManager, CodeCache, + DefineTemplates, EnvironmentOpts; const lihcFPCMessages = 'Free Pascal Compiler messages'; diff -Nru lazarus-1.4.4+dfsg/ide/helpoptions.pas lazarus-1.6+dfsg/ide/helpoptions.pas --- lazarus-1.4.4+dfsg/ide/helpoptions.pas 2014-02-18 18:47:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/helpoptions.pas 2015-07-04 23:08:00.000000000 +0000 @@ -35,11 +35,9 @@ interface uses - Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, - FileUtil, Laz2_XMLCfg, LazFileCache, StdCtrls, Buttons, ExtCtrls, - IDEContextHelpEdit, EnvironmentOpts, ButtonPanel, ObjectInspector, - LazHelpIntf, IDEWindowIntf, IDEDialogs, IDEOptionsIntf, MacroIntf, LazConf, - LazarusIDEStrConsts, IDEProcs, IDEOptionDefs; + Classes, SysUtils, LCLProc, LazFileUtils, Laz2_XMLCfg, LazFileCache, + LazHelpIntf, IDEOptionsIntf, MacroIntf, LazConf, + LazarusIDEStrConsts, IDEOptionDefs; type { THelpOptions } diff -Nru lazarus-1.4.4+dfsg/ide/idecmdline.pas lazarus-1.6+dfsg/ide/idecmdline.pas --- lazarus-1.4.4+dfsg/ide/idecmdline.pas 2015-02-04 22:31:14.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idecmdline.pas 2015-10-02 09:42:44.000000000 +0000 @@ -38,7 +38,7 @@ interface uses - Classes, SysUtils, FileUtil, LazFileUtils, LazUTF8Classes, + Classes, SysUtils, FileUtil, LazFileUtils, LazUTF8, LazUTF8Classes, LazLogger, LazConf, LCLProc; const @@ -50,6 +50,7 @@ NoSplashScreenOptLong='--no-splash-screen'; NoSplashScreenOptShort='--nsc'; StartedByStartLazarusOpt='--started-by-startlazarus'; + ForceNewInstanceOpt='--force-new-instance'; SkipLastProjectOpt='--skip-last-project'; DebugLogOpt='--debug-log='; DebugLogOptEnable='--debug-enable='; diff -Nru lazarus-1.4.4+dfsg/ide/idecoolbardata.pas lazarus-1.6+dfsg/ide/idecoolbardata.pas --- lazarus-1.4.4+dfsg/ide/idecoolbardata.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idecoolbardata.pas 2015-11-20 14:04:24.000000000 +0000 @@ -0,0 +1,590 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Balázs Székely + Abstract: + The implementation of IDE Coolbar. + ToDo: + Extract an interface from here and put it to IdeIntf package. +} + +unit IdeCoolbarData; + + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LCLProc, ComCtrls, ToolWin, Controls, fgl, + IDEImagesIntf, Laz2_XMLCfg, ToolbarConfig; + +type + + // Option classes take care of saving / loading environment options data. + // They don't contain LCL components. + + { TIDEToolBarOptions } + + TIDEToolBarOptions = class(TIDEToolBarOptionsBase) + private + FPosIndex: Integer; + FBreak: Boolean; + public + //constructor Create; + //destructor Destroy; override; + function Equals(Opts: TIDEToolBarOptions): boolean; overload; + procedure Assign(Source: TIDEToolBarOptions); + procedure CopyPosFromBand(Band: TCoolBand); + procedure Load(XMLConfig: TXMLConfig; SubPath: String); + procedure Save(XMLConfig: TXMLConfig; SubPath: String); + published + property Break: Boolean read FBreak write FBreak; + property PosIndex: Integer read FPosIndex write FPosIndex; + end; + + + { TIDEToolBarOptionList } + + Ttbo = specialize TFPGObjectList<TIDEToolBarOptions>; + TIDEToolBarOptionList = class(Ttbo) + procedure Assign(Source: TIDEToolBarOptionList); + end; + + { TIDECoolBarOptions } + + TIDECoolBarOptions = class + private + FVisible: Boolean; + FWidth: Integer; + FGrabStyle: Integer; + FGrabWidth: Integer; + FBorderStyle: Integer; //TFormBorderStyle; + FToolBars: TIDEToolBarOptionList; + procedure CreateDefaultToolbars; + public + constructor Create; + destructor Destroy; override; + procedure Clear; + procedure Assign(Source: TIDECoolBarOptions); + function EqualToolbars(Opts: TIDECoolBarOptions): boolean; + procedure Load(XMLConfig: TXMLConfig; Path: String); + procedure Save(XMLConfig: TXMLConfig; Path: String); + public + property Visible: Boolean read FVisible write FVisible; + property Width: Integer read FWidth write FWidth; + property GrabStyle: Integer read FGrabStyle write FGrabStyle; + property GrabWidth: Integer read FGrabWidth write FGrabWidth; + property BorderStyle: Integer read FBorderStyle write FBorderStyle; + property ToolBars: TIDEToolBarOptionList read FToolBars; + end; + + { TDefaultCoolBarOptions } + + TDefaultCoolBarOptions = class(TIDECoolBarOptions) + public + constructor Create; + destructor Destroy; override; + end; + + // Actual Coolbar and its member Toolbars + + TOnToolBarClick = procedure(Sender: TObject) of object; + + { TIDEToolBar } + + TIDEToolBar = class(TIDEToolbarBase) + private + FCurrentOptions: TIDEToolBarOptions; + FOnToolbarClick: TOnToolBarClick; + procedure DoToolBarClick(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure ClearToolbar; + procedure UseCurrentOptions; + public + property CurrentOptions: TIDEToolBarOptions read FCurrentOptions; + property OnToolBarClick: TOnToolbarClick read FOnToolbarClick write FOnToolbarClick; + end; + + TIDEToolBarList = specialize TFPGObjectList<TIDEToolBar>; + + { TIDECoolBar } + + TIDECoolBar = class + private + FCoolBar: TCoolBar; // The actual CoolBar, not owned by this class. + FCoolBarToolBars: TIDEToolBarList; + FIsVisible: Boolean; //cannot hide/show the coolbar on toolbar_options, instead we use a variable + FWidth: Integer; //same as Isvisible + // Used for assigning and testing the default configuration. + FDefaultOptions: TDefaultCoolBarOptions; + procedure SetIsVisible(AValue: Boolean); + public + constructor Create(ACoolBar: TCoolBar); + destructor Destroy; override; + procedure SetCoolBarDefaults; + procedure SetToolBarDefaults; + procedure CopyFromRealCoolbar(RealCoolbar: TCoolBar); + procedure CopyFromOptions(Options: TIDECoolBarOptions); + procedure CopyToOptions(Options: TIDECoolBarOptions); + function Add: TIDEToolBar; + function FindByToolBar(const aToolBar: TToolBar): Integer; + procedure Sort; + function IsDefaultCoolbar: Boolean; + function IsDefaultToolbar: Boolean; + public + property ToolBars: TIDEToolBarList read FCoolBarToolBars; + property CoolBar: TCoolBar read FCoolBar; + property IsVisible: Boolean read FIsVisible write SetIsVisible; + property Width: Integer read FWidth write FWidth; + end; + +var + IDECoolBar: TIDECoolBar; + +implementation + +const + BasePath = 'IDECoolBarOptions/'; + +{ TIDEToolBarOptions } +{ +constructor TIDEToolBarOptions.Create; +begin + inherited Create; +end; + +destructor TIDEToolBarOptions.Destroy; +begin + inherited Destroy; +end; +} +function TIDEToolBarOptions.Equals(Opts: TIDEToolBarOptions): boolean; +begin + Result := inherited Equals(Opts) + and (FPosIndex = Opts.FPosIndex) and (FBreak = Opts.FBreak); +end; + +procedure TIDEToolBarOptions.Assign(Source: TIDEToolBarOptions); +begin + inherited Assign(Source); + FPosIndex := Source.FPosIndex; + FBreak := Source.FBreak; +end; + +procedure TIDEToolBarOptions.CopyPosFromBand(Band: TCoolBand); +begin + FPosIndex := Band.Index; + FBreak := Band.Break; +end; + +procedure TIDEToolBarOptions.Load(XMLConfig: TXMLConfig; SubPath: String); +begin + FBreak := XMLConfig.GetValue(SubPath + 'Break/Value', False); + LoadButtonNames(XMLConfig, SubPath); +end; + +procedure TIDEToolBarOptions.Save(XMLConfig: TXMLConfig; SubPath: String); +begin + XMLConfig.SetDeleteValue(SubPath + 'Break/Value', FBreak, False); + SaveButtonNames(XMLConfig, SubPath); +end; + +{ TIDEToolBarOptionList } + +procedure TIDEToolBarOptionList.Assign(Source: TIDEToolBarOptionList); +var + tbo: TIDEToolBarOptions; + i: Integer; +begin + Clear; + for i := 0 to Source.Count-1 do + begin + tbo := TIDEToolBarOptions.Create; + tbo.Assign(Source[i]); + Add(tbo); + end; +end; + +{ TIDECoolBarOptions } +constructor TIDECoolBarOptions.Create; +begin + inherited Create; + FToolBars := TIDEToolBarOptionList.Create; +end; + +destructor TIDECoolBarOptions.Destroy; +begin + FToolBars.Free; + inherited Destroy; +end; + +procedure TIDECoolBarOptions.Clear; +begin + FToolBars.Clear; +end; + +procedure TIDECoolBarOptions.Assign(Source: TIDECoolBarOptions); +begin + FVisible := Source.FVisible; + FWidth := Source.FWidth; + FGrabStyle := Source.FGrabStyle; + FGrabWidth := Source.FGrabWidth; + FBorderStyle := Source.FBorderStyle; + FToolBars.Assign(Source.FToolBars); +end; + +function TIDECoolBarOptions.EqualToolbars(Opts: TIDECoolBarOptions): boolean; +var + I: Integer; +begin + Result := (FToolBars.Count = Opts.FToolBars.Count); + if not Result then Exit; + for I := 0 to FToolBars.Count-1 do + if not FToolBars[I].Equals(Opts.FToolBars[I]) then Exit(False); +end; + +procedure TIDECoolBarOptions.CreateDefaultToolbars; +var + ToolBarOpts: TIDEToolBarOptions; +begin + //standard toolbar defaults + ToolBarOpts := TIDEToolBarOptions.Create; + ToolBarOpts.PosIndex := 0; + ToolBarOpts.Break := False; + with ToolBarOpts.ButtonNames do + begin + Add('NewForm'); + Add('NewUnit'); + Add(cIDEToolbarDivider); + Add('Open'); + Add('Save'); + Add('SaveAll'); + Add(cIDEToolbarDivider); + Add('Toggle between Unit and Form'); + Add(cIDEToolbarDivider); + Add('Manage desktops'); + end; + FToolBars.Add(ToolBarOpts); + + //debug toolbar defaults + ToolBarOpts := TIDEToolBarOptions.Create; + ToolBarOpts.PosIndex := 1; + ToolBarOpts.Break := True; + with ToolBarOpts.ButtonNames do + begin + Add('View Units'); + Add('View Forms'); + Add(cIDEToolbarDivider); + Add('Change build mode'); + Add('Run program'); + Add('Pause program'); + Add('Stop program'); + Add('Step over'); + Add('Step into'); + Add('Step out'); + end; + FToolBars.Add(ToolBarOpts); +end; + +procedure TIDECoolBarOptions.Load(XMLConfig: TXMLConfig; Path: String); +var + ToolBarOpt: TIDEToolBarOptions; + ToolBarCount: Integer; + I: Integer; +begin + Path := Path + BasePath; + ToolbarCount := XMLConfig.GetValue(Path + 'Count', 0); + if ToolBarCount = 0 then // Old format + ToolbarCount := XMLConfig.GetValue(Path + 'ToolBarCount/Value', 0); + FVisible := XMLConfig.GetValue(Path + 'Visible/Value', True); + FWidth := XMLConfig.GetValue(Path + 'Width/Value', 230); + FGrabStyle := XMLConfig.GetValue(Path + 'GrabStyle/Value', 1); + FGrabWidth := XMLConfig.GetValue(Path + 'GrabWidth/Value', 5); + FBorderStyle := XMLConfig.GetValue(Path + 'BorderStyle/Value', 1); + if ToolBarCount > 0 then + begin + FToolBars.Clear; + for I := 0 to ToolbarCount-1 do + begin + ToolBarOpt := TIDEToolBarOptions.Create; + FToolBars.Add(ToolBarOpt); + ToolBarOpt.PosIndex := I; + ToolBarOpt.Load(XMLConfig, Path + 'ToolBar' + IntToStr(I+1) + '/'); + end; + end; + if ToolBarCount = 0 then + CreateDefaultToolbars; +end; + +procedure TIDECoolBarOptions.Save(XMLConfig: TXMLConfig; Path: String); +var + DefaultOpts: TDefaultCoolBarOptions; + I: Integer; +begin + DefaultOpts := TDefaultCoolBarOptions.Create; + try + Path := Path + BasePath; + XMLConfig.DeletePath(Path); + XMLConfig.SetDeleteValue(Path + 'Visible/Value', FVisible, True); + XMLConfig.SetDeleteValue(Path + 'Width/Value', FWidth, 0); + XMLConfig.SetDeleteValue(Path + 'GrabStyle/Value', FGrabStyle, 1); + XMLConfig.SetDeleteValue(Path + 'GrabWidth/Value', FGrabWidth, 5); + XMLConfig.SetDeleteValue(Path + 'BorderStyle/Value', FBorderStyle, 1); + if EqualToolbars(DefaultOpts) then Exit; + if FToolBars.Count > 0 then + begin + XMLConfig.SetDeleteValue(Path + 'Count', FToolBars.Count, 0); + for I := 0 to FToolBars.Count - 1 do + FToolBars[I].Save(XMLConfig, Path + 'ToolBar' + IntToStr(I+1) + '/'); + end; + finally + DefaultOpts.Free; + end; +end; + +{ TDefaultCoolBarOptions } + +constructor TDefaultCoolBarOptions.Create; +begin + inherited Create; + //coolbar defaults + FVisible := True; + FWidth := 230; + FGrabStyle := 1; + FGrabWidth := 5; + FBorderStyle := 1; + //toolbar defaults + CreateDefaultToolbars; +end; + +destructor TDefaultCoolBarOptions.Destroy; +begin + inherited Destroy; +end; + +{ TIDEToolBar } + +constructor TIDEToolBar.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FToolBar := TToolbar.Create(nil); + with FToolBar do + begin + ButtonHeight := 22; + ButtonWidth := 22; + Height := 22; + Width := 0; + Flat := True; + AutoSize := True; + Transparent := True; + EdgeInner := esNone; + EdgeOuter := esNone; + Images := IDEImages.Images_16; + ShowHint := True; + OnClick := @DoToolBarClick; + end; + FCurrentOptions := TIDEToolBarOptions.Create; +end; + +destructor TIDEToolBar.Destroy; +begin + FCurrentOptions.Free; + FToolBar.Free; + inherited Destroy; +end; + +procedure TIDEToolBar.ClearToolbar; +var + i: Integer; +begin + FToolBar.BeginUpdate; + try + for i := FToolBar.ButtonCount - 1 downto 0 do + FToolBar.Buttons[i].Free + finally + FToolBar.EndUpdate; + end; +end; + +procedure TIDEToolBar.UseCurrentOptions; +begin + ClearToolbar; + CopyFromOptions(FCurrentOptions); +end; + +procedure TIDEToolBar.DoToolBarClick(Sender: TObject); +begin + if Assigned(FOnToolbarClick) then + FOnToolbarClick(FToolbar); +end; + +{ TIDECoolBar } + +procedure TIDECoolBar.SetIsVisible(AValue: Boolean); +begin + FIsVisible := AValue; + if Assigned(FCoolBar) then + FCoolBar.Visible := AValue; +end; + +constructor TIDECoolBar.Create(ACoolBar: TCoolBar); +begin + inherited Create; + FCoolBar := ACoolBar; + FCoolBarToolBars := TIDEToolBarList.Create; + FDefaultOptions := TDefaultCoolBarOptions.Create; + if Assigned(FCoolBar) then begin + CopyFromOptions(FDefaultOptions); + SetCoolBarDefaults; + SetToolBarDefaults; + end; +end; + +destructor TIDECoolBar.Destroy; +begin + FreeAndNil(FDefaultOptions); + FreeAndNil(FCoolBarToolBars); + inherited Destroy; +end; + +procedure TIDECoolBar.SetCoolBarDefaults; +begin + FCoolBar.Vertical := False; + FCoolBar.HorizontalSpacing := 1; + FCoolBar.VerticalSpacing := 3; + FCoolBar.FixedSize := True; + FCoolBar.DoubleBuffered := True; + FCoolBar.EdgeInner := esNone; + FCoolBar.EdgeOuter := esNone; + + FCoolBar.GrabStyle := TGrabStyle(1); + FCoolBar.GrabWidth := 5; + FCoolBar.BandBorderStyle := bsSingle; +end; + +procedure TIDECoolBar.SetToolBarDefaults; +begin + CopyFromOptions(FDefaultOptions); +end; + +procedure TIDECoolBar.CopyFromRealCoolbar(RealCoolbar: TCoolBar); +var + ToolBar: TToolBar; + I, J: Integer; +begin + for I := 0 to RealCoolbar.Bands.Count - 1 do + begin + if RealCoolbar.Bands[I].Control = nil then + Continue; + ToolBar := (RealCoolbar.Bands[I].Control as TToolBar); + J := FindByToolBar(ToolBar); + if J <> -1 then + ToolBars[J].CurrentOptions.CopyPosFromBand(RealCoolbar.Bands[I]); + end; + Sort; +end; + +procedure TIDECoolBar.CopyFromOptions(Options: TIDECoolBarOptions); +var + I: Integer; + IDEToolBar: TIDEToolBar; +begin + FCoolBarToolBars.Clear; + for I := 0 to Options.FToolBars.Count - 1 do + begin + IDEToolBar := TIDEToolBar.Create(Nil); + FCoolBarToolBars.Add(IDEToolBar); + IDEToolBar.CurrentOptions.PosIndex := I; + IDEToolBar.CurrentOptions.Break := Options.FToolBars[I].Break; + IDEToolBar.CurrentOptions.ButtonNames.Assign(Options.FToolBars[I].ButtonNames); + end; +end; + +procedure TIDECoolBar.CopyToOptions(Options: TIDECoolBarOptions); +var + I: Integer; + Opt: TIDEToolBarOptions; +begin + Options.FToolBars.Clear; + for I := 0 to FCoolBarToolBars.Count - 1 do + begin + Opt := TIDEToolBarOptions.Create; + Options.FToolBars.Add(Opt); + Opt.PosIndex := FCoolBarToolBars[I].CurrentOptions.PosIndex; + Opt.Break := FCoolBarToolBars[I].CurrentOptions.Break; + Opt.ButtonNames.Assign(FCoolBarToolBars[I].CurrentOptions.ButtonNames); + end; +end; + +function TIDECoolBar.Add: TIDEToolBar; +begin + Result := TIDEToolBar.Create(Nil); + FCoolBarToolBars.Add(Result); +end; + +function TIDECoolBar.FindByToolBar(const aToolBar: TToolBar): Integer; +var + I: Integer; +begin + Result := -1; + for I := 0 to FCoolbarToolBars.Count-1 do + begin + if ToolBars[I].ToolBar = aToolBar then + begin + Result := I; + Break; + end; + end; +end; + +function Compare(const Item1, Item2: TIDEToolBar): Integer; +begin + Result := Item1.CurrentOptions.PosIndex - Item2.CurrentOptions.PosIndex; +end; + +procedure TIDECoolBar.Sort; +begin + FCoolbarToolBars.Sort(@Compare); +end; + +function TIDECoolBar.IsDefaultCoolbar: Boolean; +begin + Result := (FIsVisible) and (FCoolBar.BandBorderStyle = bsSingle) and + (FCoolBar.GrabStyle = gsDouble) and (FCoolBar.GrabWidth = 5) and + (FWidth = 230); +end; + +function TIDECoolBar.IsDefaultToolbar: Boolean; +var + TempOpts: TIDECoolBarOptions; +begin + TempOpts := TIDECoolBarOptions.Create; + try + CopyToOptions(TempOpts); + Result := TempOpts.EqualToolbars(FDefaultOptions); + finally + TempOpts.Free; + end; +end; + +end. diff -Nru lazarus-1.4.4+dfsg/ide/idefpcinfo.lfm lazarus-1.6+dfsg/ide/idefpcinfo.lfm --- lazarus-1.4.4+dfsg/ide/idefpcinfo.lfm 2012-04-07 02:43:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idefpcinfo.lfm 2015-08-05 21:58:23.000000000 +0000 @@ -1,33 +1,35 @@ object IDEFPCInfoDialog: TIDEFPCInfoDialog - Left = 275 + Left = 505 Height = 450 - Top = 250 - Width = 704 + Top = 227 + Width = 700 + BorderIcons = [biSystemMenu, biMaximize] Caption = 'IDEFPCInfoDialog' ClientHeight = 450 - ClientWidth = 704 + ClientWidth = 700 OnClose = FormClose OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object PageControl1: TPageControl - Left = 0 - Height = 450 - Top = 0 - Width = 704 - ActivePage = OutputTabSheet + Left = 6 + Height = 403 + Top = 6 + Width = 688 + ActivePage = ValuesTabSheet Align = alClient - TabIndex = 1 + BorderSpacing.Around = 6 + TabIndex = 0 TabOrder = 0 object ValuesTabSheet: TTabSheet Caption = 'FPC values used by the IDE' - ClientHeight = 418 - ClientWidth = 698 + ClientHeight = 372 + ClientWidth = 684 object ValuesMemo: TMemo Left = 0 - Height = 422 + Height = 372 Top = 0 - Width = 696 + Width = 684 Align = alClient Lines.Strings = ( 'ValuesMemo' @@ -40,13 +42,13 @@ end object OutputTabSheet: TTabSheet Caption = 'FPC output' - ClientHeight = 418 - ClientWidth = 698 + ClientHeight = 372 + ClientWidth = 684 object CmdLineOutputMemo: TMemo Left = 0 - Height = 418 + Height = 372 Top = 0 - Width = 698 + Width = 688 Align = alClient Lines.Strings = ( 'CmdLineOutputMemo' @@ -57,4 +59,21 @@ end end end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 415 + Width = 688 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 1 + ShowButtons = [pbClose] + ShowBevel = False + end end diff -Nru lazarus-1.4.4+dfsg/ide/idefpcinfo.pas lazarus-1.6+dfsg/ide/idefpcinfo.pas --- lazarus-1.4.4+dfsg/ide/idefpcinfo.pas 2014-06-16 05:49:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idefpcinfo.pas 2015-08-07 17:20:40.000000000 +0000 @@ -30,22 +30,29 @@ interface uses - Classes, SysUtils, AVL_Tree, FileUtil, lazutf8classes, Forms, Controls, - Graphics, Dialogs, StdCtrls, ComCtrls, FileProcs, DefineTemplates, - CodeToolManager, BaseBuildManager, Project, EnvironmentOpts, - LazarusIDEStrConsts, AboutFrm, TransferMacros, IDEWindowIntf, LazIDEIntf; + // RTL + LCL + Classes, SysUtils, + Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, ButtonPanel, + // CodeTools + DefineTemplates, CodeToolManager, FileProcs, + // LazUtils + LazUTF8Classes, LazFileUtils, LazUTF8, + // Other + IDEWindowIntf, LazIDEIntf, BaseBuildManager, + Project, EnvironmentOpts, LazarusIDEStrConsts, AboutFrm, TransferMacros; type { TIDEFPCInfoDialog } TIDEFPCInfoDialog = class(TForm) + ButtonPanel1: TButtonPanel; CmdLineOutputMemo: TMemo; ValuesMemo: TMemo; PageControl1: TPageControl; ValuesTabSheet: TTabSheet; OutputTabSheet: TTabSheet; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); private procedure UpdateValuesMemo; diff -Nru lazarus-1.4.4+dfsg/ide/idefpdocfilesearch.pas lazarus-1.6+dfsg/ide/idefpdocfilesearch.pas --- lazarus-1.4.4+dfsg/ide/idefpdocfilesearch.pas 2012-01-22 09:59:06.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idefpdocfilesearch.pas 2015-03-10 12:02:19.000000000 +0000 @@ -6,8 +6,8 @@ uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - ButtonPanel, Buttons, ComCtrls, ExtCtrls, LCLType, - LazarusIDEStrConsts, PackageSystem, PackageDefs; + Buttons, ComCtrls, ExtCtrls, LCLType, + PackageSystem, PackageDefs; type @@ -22,8 +22,8 @@ SearchTextLabel: TLabel; Splitter1: TSplitter; procedure FormCreate(Sender: TObject); - procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); private FIdleConnected: boolean; procedure SetIdleConnected(AValue: boolean); diff -Nru lazarus-1.4.4+dfsg/ide/ideguicmdline.pas lazarus-1.6+dfsg/ide/ideguicmdline.pas --- lazarus-1.4.4+dfsg/ide/ideguicmdline.pas 2015-02-04 22:31:14.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideguicmdline.pas 2015-10-18 17:23:53.000000000 +0000 @@ -40,8 +40,8 @@ interface uses - Classes, SysUtils, math, FileUtil, lazutf8classes, LazConf, LCLProc, - LazarusIDEStrConsts, IDECmdLine; + Classes, SysUtils, math, lazutf8classes, LazConf, LCLProc, + FileProcs, LazFileUtils, IDECmdLine; procedure ParseGuiCmdLineParams(var SkipAutoLoadingLastProject, StartedByStartLazarus, @@ -120,8 +120,8 @@ s: String; begin Result:=false; - if GetProcessForPID(aPid,psn)<>noErr then exit; - FillByte(info,SizeOf(info),0); + if GetProcessForPID(aPid,psn{%H-})<>noErr then exit; + FillByte(info{%H-},SizeOf(info),0); if GetProcessInformation(psn,info)<>noErr then exit; processName := nil; if CopyProcessName(psn, processName)<>noErr then exit; @@ -177,6 +177,8 @@ else if ParamIsOption(i, '--quiet') then ConsoleVerbosity:=Min(0,ConsoleVerbosity-1); end; + if ConsoleVerbosity>=0 then + CTConsoleVerbosity:=1; end; function SetupMainIDEInstance: boolean; diff -Nru lazarus-1.4.4+dfsg/ide/idehelpmanager.lfm lazarus-1.6+dfsg/ide/idehelpmanager.lfm --- lazarus-1.4.4+dfsg/ide/idehelpmanager.lfm 2014-07-25 16:56:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idehelpmanager.lfm 2015-12-06 14:42:42.000000000 +0000 @@ -8,34 +8,34 @@ ClientWidth = 500 OnClose = HelpSelectorDialogClose Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.7' object NodesGroupBox: TGroupBox Left = 6 - Height = 239 + Height = 237 Top = 6 Width = 488 Align = alClient BorderSpacing.Around = 6 Caption = 'NodesGroupBox' - ClientHeight = 221 + ClientHeight = 220 ClientWidth = 484 TabOrder = 0 - object NodesListBox: TListBox - Left = 6 - Height = 209 - Top = 6 - Width = 472 + object NodesTreeView: TTreeView + Left = 0 + Height = 220 + Top = 0 + Width = 484 Align = alClient - BorderSpacing.Around = 6 - ItemHeight = 0 - OnDblClick = NodesListBoxDblClick + DefaultItemHeight = 18 TabOrder = 0 + OnDblClick = NodesTreeViewDblClick + OnSelectionChanged = NodesTreeViewSelectionChanged end end object BtnPanel: TButtonPanel Left = 6 - Height = 26 - Top = 251 + Height = 28 + Top = 249 Width = 488 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True diff -Nru lazarus-1.4.4+dfsg/ide/idehelpmanager.pas lazarus-1.6+dfsg/ide/idehelpmanager.pas --- lazarus-1.4.4+dfsg/ide/idehelpmanager.pas 2014-10-18 03:17:36.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idehelpmanager.pas 2015-12-06 14:42:42.000000000 +0000 @@ -35,21 +35,21 @@ // FCL+LCL Classes, SysUtils, AVL_Tree, LCLProc, LCLIntf, LCLType, Forms, Controls, Buttons, StdCtrls, Dialogs, ExtCtrls, FileProcs, Graphics, ButtonPanel, - LConvEncoding, lazutf8classes, + LConvEncoding, lazutf8classes, LazFileUtils, // CodeTools - BasicCodeTools, CodeToolManager, CodeAtom, CodeCache, CustomCodeTool, CodeTree, + BasicCodeTools, CodeToolManager, CodeCache, CustomCodeTool, CodeTree, PascalParserTool, FindDeclarationTool, // IDEIntf - PropEdits, ObjectInspector, FormEditingIntf, ProjectIntf, TextTools, + PropEdits, ObjectInspector, ProjectIntf, TextTools, IDEDialogs, LazHelpIntf, LazHelpHTML, HelpFPDoc, MacroIntf, IDEWindowIntf, - IDEMsgIntf, PackageIntf, LazIDEIntf, HelpIntfs, IDEHelpIntf, - IDEExternToolIntf, + IDEMsgIntf, PackageIntf, LazIDEIntf, HelpIntfs, ComCtrls, IDEHelpIntf, + IDEExternToolIntf, IDEImagesIntf, // IDE LazarusIDEStrConsts, TransferMacros, DialogProcs, IDEOptionDefs, - ObjInspExt, EnvironmentOpts, AboutFrm, Project, MainBar, etMessagesWnd, + ObjInspExt, EnvironmentOpts, AboutFrm, Project, MainBar, IDEFPDocFileSearch, PackageDefs, PackageSystem, HelpOptions, MainIntf, LazConf, HelpFPCMessages, CodeHelp, - IDEContextHelpEdit, IDEWindowHelp, CodeBrowser; + IDEWindowHelp, CodeBrowser; type @@ -60,10 +60,10 @@ FKeywordPrefixNode: THelpNode; public function GetNodesForKeyword(const HelpKeyword: string; - var ListOfNodes: THelpNodeQueryList; var ErrMsg: string + var ListOfNodes: THelpNodeQueryList; var {%H-}ErrMsg: string ): TShowHelpResult; override; - function ShowHelp(Query: THelpQuery; BaseNode, NewNode: THelpNode; - QueryItem: THelpQueryItem; + function ShowHelp(Query: THelpQuery; {%H-}BaseNode, {%H-}NewNode: THelpNode; + {%H-}QueryItem: THelpQueryItem; var ErrMsg: string): TShowHelpResult; override; end; @@ -76,7 +76,7 @@ fWaitingForAsync: boolean; FProviders: TLIHProviders; procedure SetProviders(const AValue: TLIHProviders); - procedure OpenNextURL(Data: PtrInt); // called via Application.QueueAsyncCall + procedure OpenNextURL({%H-}Data: PtrInt); // called via Application.QueueAsyncCall procedure OpenFPDoc(Path: string); public NextURL: string; @@ -156,8 +156,8 @@ TIDEHelpDatabases = class(THelpDatabases) public - function ShowHelpSelector(Query: THelpQuery; Nodes: THelpNodeQueryList; - var ErrMsg: string; + function ShowHelpSelector({%H-}Query: THelpQuery; Nodes: THelpNodeQueryList; + var {%H-}ErrMsg: string; var Selection: THelpNodeQuery ): TShowHelpResult; override; function GetBaseDirectoryForBasePathObject(BasePathObject: TObject): string; override; @@ -214,7 +214,7 @@ procedure ShowHelpForObjectInspector(Sender: TObject); override; procedure ShowHelpForIDEControl(Sender: TControl); override; function CreateHint(aHintWindow: THintWindow; ScreenPos: TPoint; - const BaseURL: string; var TheHint: string; out HintWinRect: TRect): boolean; + const {%H-}BaseURL: string; var TheHint: string; out HintWinRect: TRect): boolean; override; deprecated 'Use THintWindowManager class instead'; function GetHintForSourcePosition(const ExpandedFilename: string; const CodePos: TPoint; out BaseURL, HTMLHint: string; @@ -250,16 +250,20 @@ THelpSelectorDialog = class(TForm) BtnPanel: TButtonPanel; NodesGroupBox: TGroupBox; - NodesListBox: TListBox; - procedure HelpSelectorDialogClose(Sender: TObject; var CloseAction: TCloseAction); - procedure NodesListBoxDblClick(Sender: TObject); + NodesTreeView: TTreeView; + procedure HelpSelectorDialogClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); + procedure NodesTreeViewDblClick(Sender: TObject); + procedure NodesTreeViewSelectionChanged(Sender: TObject); private FNodes: THelpNodeQueryList; + FImgIndexDB, FImgIndexNode: Integer; procedure SetNodes(const AValue: THelpNodeQueryList); - procedure FillNodesListBox; + procedure FillNodesTV; + procedure UpdateButtons; public constructor Create(TheOwner: TComponent); override; property Nodes: THelpNodeQueryList read FNodes write SetNodes; + function GetSelectedNodeQuery: THelpNodeQuery; end; { Help Contexts for IDE help } @@ -362,6 +366,8 @@ KeywordQuery:=THelpQueryKeyword(Query); KeyWord:=copy(KeywordQuery.Keyword,length(FPCKeyWordHelpPrefix)+1,length(KeywordQuery.Keyword)); debugln(['TSimpleFPCKeywordHelpDatabase.ShowHelp Keyword=',Keyword]); + // ToDo: implement me + ErrMsg:=''; end; function HTMLToCaption(const s: string; MaxLines: integer): string; @@ -462,12 +468,12 @@ Result:=copy(Result,1,p-1)+NewTag+copy(Result,EndPos,length(Result)); inc(p,length(NewTag)); end; - end else if Result[p] in [' ',#9,#10,#13] then begin + end else if Result[p] in [#9,#10,#13] then begin // replace spaces and newline characters with a single space EndPos:=p+1; - while (EndPos<=length(Result)) and (Result[EndPos] in [' ',#9,#10,#13]) do + while (EndPos<=length(Result)) and (Result[EndPos] in [#9,#10,#13]) do inc(EndPos); - if (p > 1) and not (Result[p-1] in [' ',#9,#10,#13]) then + if (p > 1) and not (Result[p-1] in [#9,#10,#13]) then begin Result:=copy(Result,1,p-1)+' '+copy(Result,EndPos,length(Result)); inc(p); @@ -475,7 +481,7 @@ else Result:=copy(Result,1,p-1)+copy(Result,EndPos,length(Result)); end else if Result[p]='&' then begin - // special chars: < > & + // special chars: < > &   if (p+2<Length(Result)) and (Result[p+1]='l') and (Result[p+2]='t') and (Result[p+3]=';') then begin EndPos:=p+4; Result:=copy(Result,1,p-1)+'<'+copy(Result,EndPos,length(Result)); @@ -484,6 +490,10 @@ EndPos:=p+4; Result:=copy(Result,1,p-1)+'>'+copy(Result,EndPos,length(Result)); end else + if (p+4<Length(Result)) and (Result[p+1]='n') and (Result[p+2]='b') and (Result[p+3]='s') and (Result[p+4]='p') and (Result[p+5]=';') then begin + EndPos:=p+6; + Result:=copy(Result,1,p-1)+' '+copy(Result,EndPos,length(Result)); + end else if (p+3<Length(Result)) and (Result[p+1]='a') and (Result[p+2]='m') and (Result[p+3]='p') and (Result[p+4]=';') then begin EndPos:=p+5; Result:=copy(Result,1,p-1)+'&'+copy(Result,EndPos,length(Result)); @@ -801,6 +811,7 @@ if ElementName='' then break; ContextList.Add(pihcType,ElementName); until false; + ErrMsg:='TLazIDEHTMLProvider.OpenFPDoc ShowHelpForPascalContexts'; ShowHelpForPascalContexts(Filename,Point(1,1),PascalHelpContextLists,ErrMsg); finally if PascalHelpContextLists<>nil then begin @@ -825,7 +836,7 @@ URLParams: string; begin Result:=false; - SplitURL(NextURL,URLScheme,URLPath,URLParams); + SplitURL(URL,URLScheme,URLPath,URLParams); if (URLScheme='file') or (URLScheme='lazdoc') or (URLScheme='fpdoc') then Result:=true; end; @@ -1017,34 +1028,64 @@ IDEDialogLayoutList.SaveLayout(Self); end; -procedure THelpSelectorDialog.NodesListBoxDblClick(Sender: TObject); +procedure THelpSelectorDialog.NodesTreeViewDblClick(Sender: TObject); begin ModalResult := mrOK; end; +procedure THelpSelectorDialog.NodesTreeViewSelectionChanged(Sender: TObject); +begin + UpdateButtons; +end; + procedure THelpSelectorDialog.SetNodes(const AValue: THelpNodeQueryList); begin if FNodes=AValue then exit; FNodes:=AValue; - FillNodesListBox; + FillNodesTV; end; -procedure THelpSelectorDialog.FillNodesListBox; +procedure THelpSelectorDialog.FillNodesTV; var - List: TStringList; i: Integer; NodeQuery: THelpNodeQuery; + Node: THelpNode; + DB: THelpDatabase; + DBTVNode, TVNode: TTreeNode; begin - List:=TStringList.Create; - if (Nodes<>nil) then begin - for i:=0 to Nodes.Count-1 do begin - NodeQuery:=Nodes[i]; - List.Add(NodeQuery.AsString); + NodesTreeView.BeginUpdate; + try + TVNode:=nil; + NodesTreeView.Items.Clear; + if (Nodes<>nil) then begin + for i:=0 to Nodes.Count-1 do begin + NodeQuery:=Nodes[i]; + Node:=NodeQuery.Node; + DB:=Node.Owner; + + DBTVNode:=NodesTreeView.Items.FindTopLvlNode(DB.ID); + if DBTVNode=nil then + begin + DBTVNode:=NodesTreeView.Items.AddChild(nil,DB.ID); + DBTVNode.ImageIndex:=FImgIndexDB; + end; + + TVNode:=NodesTreeView.Items.AddChild(DBTVNode,NodeQuery.AsString); + TVNode.ImageIndex:=FImgIndexNode; + TVNode.Data:=NodeQuery; + + DBTVNode.Expand(true); + end; end; + NodesTreeView.Selected:=TVNode; + finally + NodesTreeView.EndUpdate; end; - NodesListBox.Items.Assign(List); - List.Free; - if NodesListBox.Count > 0 then NodesListBox.ItemIndex := 0; +end; + +procedure THelpSelectorDialog.UpdateButtons; +begin + BtnPanel.OKButton.Enabled:=GetSelectedNodeQuery<>nil; end; constructor THelpSelectorDialog.Create(TheOwner: TComponent); @@ -1055,6 +1096,20 @@ Caption := lisHelpSelectorDialog; NodesGroupBox.Caption:=lisSelectAHelpItem; BtnPanel.OKButton.Caption:=lisMenuOk; + + NodesTreeView.Images:=IDEImages.Images_16; + FImgIndexDB:=IDEImages.LoadImage(16, 'item_package'); + FImgIndexNode:=IDEImages.LoadImage(16, 'menu_help'); +end; + +function THelpSelectorDialog.GetSelectedNodeQuery: THelpNodeQuery; +var + TVNode: TTreeNode; +begin + Result:=nil; + TVNode:=NodesTreeView.Selected; + if (TVNode=nil) or (TVNode.Data=nil) then exit; + Result:=TObject(TVNode.Data) as THelpNodeQuery; end; { TIDEHelpDatabases } @@ -1066,7 +1121,6 @@ ): TShowHelpResult; var Dialog: THelpSelectorDialog; - i: LongInt; begin Selection:=nil; Result:=shrNone; @@ -1074,11 +1128,9 @@ try Dialog.Nodes:=Nodes; if Dialog.ShowModal=mrOk then begin - i:=Dialog.NodesListBox.ItemIndex; - if i>=0 then begin - Selection:=Nodes[i]; + Selection:=Dialog.GetSelectedNodeQuery; + if Selection<>nil then Result:=shrSuccess; - end; end else begin Result:=shrCancel; end; @@ -1619,6 +1671,7 @@ if FindDeclarationOfOIProperty(AnInspector,nil,Code,Caret,NewTopLine) then begin if NewTopLine=0 then ; + ErrMsg:='TIDEHelpManager.ShowHelpForObjectInspector ShowHelpForSourcePosition'; ShowHelpForSourcePosition(Code.Filename,Caret,ErrMsg); end; end else begin diff -Nru lazarus-1.4.4+dfsg/ide/ideinfodlg.lfm lazarus-1.6+dfsg/ide/ideinfodlg.lfm --- lazarus-1.4.4+dfsg/ide/ideinfodlg.lfm 2012-04-07 02:43:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideinfodlg.lfm 2015-08-05 21:58:23.000000000 +0000 @@ -1,27 +1,30 @@ object IDEInfoDialog: TIDEInfoDialog - Left = 269 - Height = 397 - Top = 294 - Width = 735 + Left = 490 + Height = 450 + Top = 207 + Width = 700 + BorderIcons = [biSystemMenu, biMaximize] Caption = 'IDEInfoDialog' - ClientHeight = 397 - ClientWidth = 735 + ClientHeight = 450 + ClientWidth = 700 OnClose = FormClose OnCreate = FormCreate - LCLVersion = '1.1' + Position = poScreenCenter + LCLVersion = '1.5' object PageControl1: TPageControl - Left = 0 - Height = 397 - Top = 0 - Width = 735 + Left = 6 + Height = 403 + Top = 6 + Width = 688 ActivePage = HelpTabSheet Align = alClient + BorderSpacing.Around = 6 TabIndex = 2 TabOrder = 0 object GeneralTabSheet: TTabSheet Caption = 'General' - ClientHeight = 365 - ClientWidth = 729 + ClientHeight = 372 + ClientWidth = 684 object GeneralMemo: TMemo Left = 0 Height = 361 @@ -38,8 +41,8 @@ end object ModifiedTabSheet: TTabSheet Caption = 'Modified' - ClientHeight = 365 - ClientWidth = 729 + ClientHeight = 372 + ClientWidth = 684 object ModifiedMemo: TMemo Left = 0 Height = 361 @@ -55,13 +58,13 @@ end object HelpTabSheet: TTabSheet Caption = 'Help' - ClientHeight = 365 - ClientWidth = 729 + ClientHeight = 372 + ClientWidth = 684 object HelpMemo: TMemo Left = 0 - Height = 365 + Height = 372 Top = 0 - Width = 729 + Width = 684 Align = alClient Lines.Strings = ( 'HelpMemo' @@ -71,4 +74,21 @@ end end end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 415 + Width = 688 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 1 + ShowButtons = [pbClose] + ShowBevel = False + end end diff -Nru lazarus-1.4.4+dfsg/ide/ideinfodlg.pas lazarus-1.6+dfsg/ide/ideinfodlg.pas --- lazarus-1.4.4+dfsg/ide/ideinfodlg.pas 2014-06-07 21:02:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideinfodlg.pas 2015-08-05 21:58:23.000000000 +0000 @@ -30,17 +30,18 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - ComCtrls, LCLProc, LazHelpHTML, LazHelpIntf, DefineTemplates, CodeToolManager, - EnvironmentOpts, AboutFrm, LazConf, IDEHelpIntf, IDEWindowIntf, LazIDEIntf, - LazarusIDEStrConsts, Project, SourceEditor, InitialSetupProc, PackageSystem, - PackageDefs; + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, + LCLProc, LazFileUtils, LazUTF8, IDEHelpIntf, IDEWindowIntf, LazIDEIntf, + LazHelpIntf, LazHelpHTML, ButtonPanel, DefineTemplates, CodeToolManager, + EnvironmentOpts, AboutFrm, LazConf, LazarusIDEStrConsts, Project, + SourceEditor, InitialSetupProc, PackageSystem, PackageDefs; type { TIDEInfoDialog } TIDEInfoDialog = class(TForm) + ButtonPanel1: TButtonPanel; GeneralMemo: TMemo; HelpMemo: TMemo; ModifiedMemo: TMemo; @@ -48,7 +49,7 @@ GeneralTabSheet: TTabSheet; ModifiedTabSheet: TTabSheet; HelpTabSheet: TTabSheet; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); private // general @@ -192,8 +193,6 @@ end; procedure TIDEInfoDialog.GatherIDEVersion(sl: TStrings); -const - LazarusVersionStr= {$I version.inc}; begin sl.Add('Lazarus version: '+GetLazarusVersionString); sl.Add('Lazarus svn revision: '+LazarusRevisionStr); diff -Nru lazarus-1.4.4+dfsg/ide/ideinfoneedbuild.pas lazarus-1.6+dfsg/ide/ideinfoneedbuild.pas --- lazarus-1.4.4+dfsg/ide/ideinfoneedbuild.pas 2015-03-11 12:22:38.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideinfoneedbuild.pas 2015-07-07 11:43:38.000000000 +0000 @@ -30,8 +30,8 @@ interface uses - Classes, SysUtils, FileUtil, AvgLvlTree, FileProcs, Forms, Controls, Graphics, - Dialogs, StdCtrls, Buttons, ButtonPanel, LCLType, + Classes, SysUtils, Forms, Controls, StdCtrls, ButtonPanel, LCLType, + AvgLvlTree, LazUtilities, IDEWindowIntf, LazIDEIntf, ProjectIntf, PackageIntf, LazarusIDEStrConsts, PackageDefs, PackageSystem, Project, InputHistory, EnvironmentOpts, IDEProcs, BuildManager; @@ -60,11 +60,11 @@ MainMemo: TMemo; TargetComboBox: TComboBox; TargetLabel: TLabel; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); - procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure TargetComboBoxChange(Sender: TObject); private FIdleConnected: boolean; diff -Nru lazarus-1.4.4+dfsg/ide/ideinstances.pas lazarus-1.6+dfsg/ide/ideinstances.pas --- lazarus-1.4.4+dfsg/ide/ideinstances.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideinstances.pas 2015-12-06 10:32:42.000000000 +0000 @@ -0,0 +1,842 @@ +{ + /*************************************************************************** + ideinstances.pas + ---------------- + + ***************************************************************************/ + + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Ondrej Pokorny + + Abstract: + This unit handles one/multiple Lazarus IDE instances. + +} +unit IDEInstances; + +{$mode objfpc}{$H+} + +interface + +uses + sysutils, Interfaces, Classes, Controls, Forms, Dialogs, ExtCtrls, + LCLProc, LCLIntf, LCLType, LazFileUtils, LazUTF8, laz2_XMLRead, laz2_XMLWrite, + Laz2_DOM, LazarusIDEStrConsts, IDECmdLine, + {$IF (FPC_FULLVERSION >= 30101)} + AdvancedIPC + {$ELSE} + LazAdvancedIPC + {$ENDIF} + ; + +type + TStartNewInstanceResult = (ofrStartNewInstance, ofrDoNotStart, ofrModalError, + ofrForceSingleInstanceModalError, ofrNotResponding); + TStartNewInstanceEvent = procedure(const aFiles: TStrings; + var outResult: TStartNewInstanceResult; var outSourceWindowHandle: HWND) of object; + TGetCurrentProjectEvent = procedure(var outProjectFileName: string) of object; + + TMessageParam = record + Name: string; + Value: string; + end; + TMessageParams = array of TMessageParam; + + TUniqueServer = class(TIPCServer) + public + procedure StartUnique(const aServerPrefix: string); + end; + + TMainServer = class(TUniqueServer) + private + FStartNewInstanceEvent: TStartNewInstanceEvent; + FGetCurrentProjectEvent: TGetCurrentProjectEvent; + FTimer: TTimer; + FMsgStream: TMemoryStream; + + procedure DoStartNewInstance(const aMsgID: Integer; const aInParams: TMessageParams); + procedure DoGetCurrentProject(const aMsgID: Integer; const {%H-}aInParams: TMessageParams); + + procedure SimpleResponse(const aResponseToMsgID: Integer; + const aResponseType: string; const aParams: array of TMessageParam); + + procedure DoCheckMessages; + procedure CheckMessagesOnTimer(Sender: TObject); + + procedure StartListening(const aStartNewInstanceEvent: TStartNewInstanceEvent; + const aGetCurrentProjectEvent: TGetCurrentProjectEvent); + procedure StopListening; + + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + end; + + TResponseClient = class(TIPCClient) + public + function GetCurrentProjectFileName: string; + function AllowStartNewInstance( + const aFiles: TStrings; var outModalErrorMessage, + outModalErrorForceUniqueMessage, outNotRespondingErrorMessage: string; + var outHandleBringToFront: HWND): TStartNewInstanceResult; + end; + + TIDEInstances = class(TComponent) + private + FMainServer: TMainServer;//running IDE + FStartIDE: Boolean;// = True; + FForceNewInstance: Boolean; + FFilesToOpen: TStrings; + + class procedure AddFilesToParams(const aFiles: TStrings; + var ioParams: TMessageParams); static; + class procedure AddFilesFromParams(const aParams: TMessageParams; + const aFiles: TStrings); static; + class procedure BuildMessage(const aMessageType: string; + const aParams: array of TMessageParam; const aStream: TStream); static; + class function MessageParam(const aName, aValue: string): TMessageParam; static; + class function ParseMessage(const aStream: TStream; out outMessageType: string; + out outParams: TMessageParams): Boolean; static; + class function GetMessageParam(const aParams: array of TMessageParam; + const aParamName: string): string; static; + + function CheckParamsForForceNewInstanceOpt: Boolean; + + procedure CollectFiles(out + outFilesWereSentToCollectingServer: Boolean); + + function AllowStartNewInstance(const aFiles: TStrings; + var outModalErrorMessage, outModalErrorForceUniqueMessage, outNotRespondingErrorMessage: string; + var outHandleBringToFront: HWND): TStartNewInstanceResult; + procedure InitIDEInstances; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + public + procedure PerformCheck;//call PerformCheck after Application.Initialize - it can open dialogs! + + procedure StartServer; + procedure StopServer; + procedure StartListening(const aStartNewInstanceEvent: TStartNewInstanceEvent; + const aGetCurrentProjectEvent: TGetCurrentProjectEvent); + procedure StopListening; + + function StartIDE: Boolean;//can the IDE be started? + function ProjectIsOpenInAnotherInstance(aProjectFileName: string): Boolean; + function FilesToOpen: TStrings; + end; + +function LazIDEInstances: TIDEInstances; + +implementation + +const + SERVERPREFIX_MAIN = 'LazarusMain'; + SERVERNAME_COLLECT = 'LazarusCollect'; + MESSAGETYPE_XML = 2; + ELEMENT_ROOT = 'ideinstances'; + ATTR_VALUE = 'value'; + ATTR_MESSAGE_TYPE = 'msgtype'; + MESSAGE_STARTNEWINSTANCE = 'startnewinstance'; + RESPONSE_OPENFILES = 'openfilesResponse'; + TIMEOUT_OPENFILES = 1000; + MESSAGE_COLLECTFILES = 'collectfiles'; + TIMEOUT_COLLECTFILES = 100; + PARAM_FILE = 'file'; + PARAM_RESULT = 'result'; + PARAM_HANDLEBRINGTOFRONT = 'handlebringtofront'; + PARAM_MODALERRORMESSAGE = 'modalerrormessage'; + PARAM_FORCEUNIQUEMODALERRORMESSAGE = 'forceuniquemodalerrormessage'; + PARAM_NOTRESPONDINGERRORMESSAGE = 'notrespondingerrormessage'; + MESSAGE_GETOPENEDPROJECT = 'getopenedproject'; + RESPONSE_GETOPENEDPROJECT = 'getopenedprojectResponse'; + TIMEOUT_GETOPENEDPROJECT = 100; +var + FLazIDEInstances: TIDEInstances; + +function LazIDEInstances: TIDEInstances; +begin + Result := FLazIDEInstances; +end; + +{ TIDEInstances } + +class function TIDEInstances.MessageParam(const aName, aValue: string): TMessageParam; +begin + Result.Name := aName; + Result.Value := aValue; +end; + +function TIDEInstances.StartIDE: Boolean; +begin + Result := FStartIDE; +end; + +function TIDEInstances.ProjectIsOpenInAnotherInstance(aProjectFileName: string + ): Boolean; +var + xStartClient: TResponseClient; + I: Integer; + xServerIDs, xOpenedProjectFiles: TStringList; + xProjFileName: string; +begin + aProjectFileName := ExtractFilePath(aProjectFileName)+ExtractFileNameOnly(aProjectFileName); + + xStartClient := nil; + xServerIDs := nil; + xOpenedProjectFiles := nil; + try + xStartClient := TResponseClient.Create(nil); + xServerIDs := TStringList.Create; + xOpenedProjectFiles := TStringList.Create; + + xStartClient.FindRunningServers(SERVERPREFIX_MAIN, xServerIDs); + + for I := 0 to xServerIDs.Count-1 do + begin + if FMainServer.ServerID = xServerIDs[I] then + continue; // ignore current instance + xStartClient.ServerID := xServerIDs[I]; + xProjFileName := xStartClient.GetCurrentProjectFileName; + if (xProjFileName='') then + continue; + xProjFileName := ExtractFilePath(xProjFileName)+ExtractFileNameOnly(xProjFileName); + if CompareFilenames(xProjFileName, aProjectFileName)=0 then + Exit(True); + end; + finally + xStartClient.Free; + xServerIDs.Free; + xOpenedProjectFiles.Free; + end; + + Result := False; +end; + +function TIDEInstances.FilesToOpen: TStrings; +begin + if not Assigned(FFilesToOpen) then + FFilesToOpen := TStringList.Create; + Result := FFilesToOpen; +end; + +procedure TIDEInstances.StartListening( + const aStartNewInstanceEvent: TStartNewInstanceEvent; + const aGetCurrentProjectEvent: TGetCurrentProjectEvent); +begin + Assert(Assigned(FMainServer)); + + FMainServer.StartListening(aStartNewInstanceEvent, aGetCurrentProjectEvent); +end; + +procedure TIDEInstances.StartServer; +begin + Assert(FMainServer = nil); + + FMainServer := TMainServer.Create(Self); + FMainServer.StartUnique(SERVERPREFIX_MAIN); +end; + +procedure TIDEInstances.StopListening; +begin + FMainServer.StopListening; +end; + +procedure TIDEInstances.StopServer; +begin + FreeAndNil(FMainServer); +end; + +class procedure TIDEInstances.AddFilesFromParams(const aParams: TMessageParams; + const aFiles: TStrings); +var + I: Integer; +begin + //do not clear aFiles + for I := Low(aParams) to High(aParams) do + if aParams[I].Name = PARAM_FILE then + aFiles.Add(aParams[I].Value); +end; + +class procedure TIDEInstances.AddFilesToParams(const aFiles: TStrings; + var ioParams: TMessageParams); +var + xStartIndex: Integer; + I: Integer; +begin + xStartIndex := Length(ioParams); + SetLength(ioParams, xStartIndex+aFiles.Count); + for I := 0 to aFiles.Count-1 do + ioParams[xStartIndex+I] := MessageParam(PARAM_FILE, aFiles[I]); +end; + +class function TIDEInstances.GetMessageParam( + const aParams: array of TMessageParam; const aParamName: string): string; +var + I: Integer; +begin + for I := Low(aParams) to High(aParams) do + if aParams[I].Name = aParamName then + Exit(aParams[I].Value); + + Result := '';//not found +end; + +class procedure TIDEInstances.BuildMessage(const aMessageType: string; + const aParams: array of TMessageParam; const aStream: TStream); +var + xDOM: TXMLDocument; + xRoot: TDOMElement; + xParam: TDOMElement; + I: Integer; +begin + xDOM := TXMLDocument.Create; + try + xRoot := xDOM.CreateElement(ELEMENT_ROOT); + xRoot.AttribStrings[ATTR_MESSAGE_TYPE] := aMessageType; + xDOM.AppendChild(xRoot); + + for I := Low(aParams) to High(aParams) do + begin + xParam := xDOM.CreateElement(aParams[I].Name); + xRoot.AppendChild(xParam); + xParam.AttribStrings[ATTR_VALUE] := aParams[I].Value; + end; + + WriteXMLFile(xDOM, aStream); + finally + xDOM.Free; + end; +end; + +class function TIDEInstances.ParseMessage(const aStream: TStream; out + outMessageType: string; out outParams: TMessageParams): Boolean; +var + xDOM: TXMLDocument; + xChildList: TDOMNodeList; + I, J: Integer; +begin + Result := False; + + outMessageType := ''; + SetLength(outParams, 0); + try + ReadXMLFile(xDOM, aStream, []); + except + on EXMLReadError do + Exit;//eat XML exceptions + end; + try + if (xDOM = nil) or (xDOM.DocumentElement = nil) or (xDOM.DocumentElement.NodeName <> ELEMENT_ROOT) then + Exit; + + outMessageType := xDOM.DocumentElement.AttribStrings[ATTR_MESSAGE_TYPE]; + + xChildList := xDOM.DocumentElement.ChildNodes; + SetLength(outParams, xChildList.Count); + J := 0; + for I := 0 to xChildList.Count-1 do + if xChildList[I] is TDOMElement then + begin + outParams[J].Name := xChildList[I].NodeName; + outParams[J].Value := TDOMElement(xChildList[I]).AttribStrings[ATTR_VALUE]; + Inc(J); + end; + SetLength(outParams, J); + Result := True; + finally + xDOM.Free; + end; +end; + +function TIDEInstances.AllowStartNewInstance(const aFiles: TStrings; + var outModalErrorMessage, outModalErrorForceUniqueMessage, + outNotRespondingErrorMessage: string; var outHandleBringToFront: HWND + ): TStartNewInstanceResult; +var + xStartClient: TResponseClient; + I: Integer; + xServerIDs: TStringList; +begin + Result := ofrStartNewInstance; + xStartClient := TResponseClient.Create(nil); + xServerIDs := TStringList.Create; + try + xStartClient.FindRunningServers(SERVERPREFIX_MAIN, xServerIDs);//check for multiple instances + xServerIDs.Sort; + + for I := xServerIDs.Count-1 downto 0 do//last started is first to choose + begin + xStartClient.ServerID := xServerIDs[I]; + if xStartClient.ServerRunning then + begin + Result := xStartClient.AllowStartNewInstance(aFiles, outModalErrorMessage, + outModalErrorForceUniqueMessage, outNotRespondingErrorMessage, outHandleBringToFront); + if not(Result in [ofrModalError, ofrForceSingleInstanceModalError, ofrNotResponding]) then + Exit;//handle only one running Lazarus IDE + end; + end; + finally + xStartClient.Free; + xServerIDs.Free; + end; +end; + +function TIDEInstances.CheckParamsForForceNewInstanceOpt: Boolean; +var + I: Integer; +begin + Result := False; + for I := 1 to ParamsAndCfgCount do + if ParamIsOption(i, ForceNewInstanceOpt) then//ignore the settings and start new Lazarus IDE instance + Result := True; +end; + +procedure TIDEInstances.PerformCheck; +var + xResult: TStartNewInstanceResult; + xModalErrorMessage: string = ''; + xModalErrorForceUniqueMessage: string = ''; + xNotRespondingErrorMessage: string = ''; + xHandleBringToFront: HWND = 0; +begin + if not FStartIDE then//InitIDEInstances->CollectOtherOpeningFiles decided not to start the IDE + Exit; + + if not FForceNewInstance then + xResult := AllowStartNewInstance(FilesToOpen, xModalErrorMessage, xModalErrorForceUniqueMessage, xNotRespondingErrorMessage, xHandleBringToFront) + else + xResult := ofrStartNewInstance; + + if xModalErrorMessage = '' then + xModalErrorMessage := dlgRunningInstanceModalError; + if xNotRespondingErrorMessage = '' then + xNotRespondingErrorMessage := dlgRunningInstanceNotRespondingError; + if xModalErrorForceUniqueMessage = '' then + xModalErrorForceUniqueMessage := dlgForceUniqueInstanceModalError; + + FStartIDE := (xResult = ofrStartNewInstance); + case xResult of + ofrModalError: + FStartIDE := MessageDlg(lisLazarusIDE, Format(xModalErrorMessage, [FilesToOpen.Text]), mtWarning, mbYesNo, 0, mbYes) = mrYes; + ofrNotResponding: + MessageDlg(lisLazarusIDE, xNotRespondingErrorMessage, mtError, [mbOK], 0); + ofrForceSingleInstanceModalError: + MessageDlg(lisLazarusIDE, xModalErrorForceUniqueMessage, mtError, [mbOK], 0); + end; + + {$IFDEF MSWINDOWS} + if not FStartIDE and (xHandleBringToFront <> 0) then + begin + try + SetForegroundWindow(xHandleBringToFront);//SetForegroundWindow works (on Windows) only if the calling process is the foreground process, therefore it must be here! + except + //eat all widget exceptions + end; + end; + {$ENDIF} +end; + +constructor TIDEInstances.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + FStartIDE := True; +end; + +destructor TIDEInstances.Destroy; +begin + StopServer; + FreeAndNil(FMainServer); + FreeAndNil(FFilesToOpen); + + inherited Destroy; +end; + +procedure TIDEInstances.CollectFiles(out + outFilesWereSentToCollectingServer: Boolean); + +var + xThisClientMessageId: Integer; + + procedure _SendToServer; + var + xClient: TIPCClient; + xOutParams: TMessageParams; + xStream: TMemoryStream; + begin + xClient := TIPCClient.Create(nil); + try + xClient.ServerID := SERVERNAME_COLLECT; + + SetLength(xOutParams, 0); + AddFilesToParams(FilesToOpen, xOutParams); + + xStream := TMemoryStream.Create; + try + BuildMessage(MESSAGE_COLLECTFILES, xOutParams, xStream); + xStream.Position := 0; + xThisClientMessageId := xClient.PostRequest(MESSAGETYPE_XML, xStream); + finally + xStream.Free; + end; + finally + xClient.Free; + end; + end; + + procedure _WaitForFiles; + var + xLastCount, xNewCount: Integer; + xServer: TIPCServer; + begin + xServer := TIPCServer.Create(nil); + try + xServer.ServerID := SERVERNAME_COLLECT; + //do not start server here + xLastCount := -1; + xNewCount := xServer.GetPendingRequestCount; + while xLastCount <> xNewCount do + begin + xLastCount := xNewCount; + Sleep(TIMEOUT_COLLECTFILES); + xNewCount := xServer.GetPendingRequestCount; + end; + finally + xServer.Free; + end; + end; + + function _ReceiveAsServer: Boolean; + var + xServer: TIPCServer; + xInParams: TMessageParams; + xStream: TMemoryStream; + xMsgType: Integer; + xMessageType: string; + begin + xStream := TMemoryStream.Create; + xServer := TIPCServer.Create(nil); + try + xServer.ServerID := SERVERNAME_COLLECT; + //files have to be handled only by one instance! + Result := xServer.FindHighestPendingRequestId = xThisClientMessageId; + if Result then + begin + //we are the highest client, handle the files + xServer.StartServer(False); + end else + begin + //we are not the highest client, maybe there are pending files, check that + {$IFNDEF MSWINDOWS} + //this code is not slowing up IDE start because if there was highest client found (the normal way), we close anyway + Randomize; //random sleep in order to prevent double file locks on unix + Sleep((PtrInt(Random($3F)) + {%H-}PtrInt(GetCurrentThreadId)) and $3F); + {$ENDIF} + if not (xServer.StartServer(False) and (xServer.GetPendingRequestCount > 0)) then + Exit;//server is already running or there are no pending message -> close + Result := True;//no one handled handled the files, do it by myself + end; + + FilesToOpen.Clear; + while xServer.PeekRequest(xStream, xMsgType{%H-}) do + if xMsgType = MESSAGETYPE_XML then + begin + if ParseMessage(xStream, xMessageType, xInParams) and + (xMessageType = MESSAGE_COLLECTFILES) + then + AddFilesFromParams(xInParams, FilesToOpen); + end; + finally + xStream.Free; + xServer.Free; + end; + end; +begin + //if you select more files in explorer and open them, they are not opened in one process but one process is started per file + // -> collect them + + //first send messages to queue (there is no server, no problem, it will collect the messages when it is created) + _SendToServer; + + //now wait until we have everything + _WaitForFiles; + + //now send them to one instance + outFilesWereSentToCollectingServer := not _ReceiveAsServer; +end; + +procedure TIDEInstances.InitIDEInstances; +var + xFilesWereSentToCollectingServer: Boolean; + I: Integer; +begin + FForceNewInstance := CheckParamsForForceNewInstanceOpt; + + //get cmd line filenames + FFilesToOpen := ExtractCmdLineFilenames; + for I := 0 to FilesToOpen.Count-1 do + FilesToOpen[I] := CleanAndExpandFilename(FilesToOpen[I]); + + if FilesToOpen.Count > 0 then//if there are file in the cmd, check for multiple starting instances + begin + CollectFiles(xFilesWereSentToCollectingServer); + if xFilesWereSentToCollectingServer then + begin + FilesToOpen.Clear; + FStartIDE := False; + end; + end; +end; + +{ TUniqueServer } + +procedure TUniqueServer.StartUnique(const aServerPrefix: string); +var + I: Integer; +begin + if Active then + StopServer; + + I := 0; + while not Active do + begin + Inc(I); + if I < 10 then + ServerID := aServerPrefix+'0'+IntToStr(I) + else + ServerID := aServerPrefix+IntToStr(I); + StartServer; + end; +end; + +{ TResponseClient } + +function TResponseClient.AllowStartNewInstance(const aFiles: TStrings; + var outModalErrorMessage, outModalErrorForceUniqueMessage, + outNotRespondingErrorMessage: string; var outHandleBringToFront: HWND + ): TStartNewInstanceResult; +var + xStream: TMemoryStream; + xMsgType: Integer; + xResponseType: string; + xOutParams, xInParams: TMessageParams; +begin + Result := ofrStartNewInstance; + xStream := TMemoryStream.Create; + try + //ask to show prompt + xStream.Clear; + SetLength(xOutParams, 0); + TIDEInstances.AddFilesToParams(aFiles, xOutParams); + TIDEInstances.BuildMessage(MESSAGE_STARTNEWINSTANCE, xOutParams, xStream); + xStream.Position := 0; + Self.PostRequest(MESSAGETYPE_XML, xStream); + xStream.Clear; + if PeekResponse(xStream, xMsgType{%H-}, TIMEOUT_OPENFILES) and + (xMsgType = MESSAGETYPE_XML) then + begin + xStream.Position := 0; + if TIDEInstances.ParseMessage(xStream, xResponseType, xInParams) and + (xResponseType = RESPONSE_OPENFILES) then + begin + Result := TStartNewInstanceResult(StrToIntDef(TIDEInstances.GetMessageParam(xInParams, PARAM_RESULT), 0)); + outModalErrorMessage := TIDEInstances.GetMessageParam(xInParams, PARAM_MODALERRORMESSAGE); + outModalErrorForceUniqueMessage := TIDEInstances.GetMessageParam(xInParams, PARAM_FORCEUNIQUEMODALERRORMESSAGE); + outNotRespondingErrorMessage := TIDEInstances.GetMessageParam(xInParams, PARAM_NOTRESPONDINGERRORMESSAGE); + outHandleBringToFront := StrToInt64Def(TIDEInstances.GetMessageParam(xInParams, PARAM_HANDLEBRINGTOFRONT), 0); + end; + end else//no response + begin + DeleteRequest; + Result := ofrNotResponding; + end; + finally + xStream.Free; + end; +end; + +function TResponseClient.GetCurrentProjectFileName: string; +var + xStream: TMemoryStream; + xMsgType: Integer; + xResponseType: string; + xOutParams, xInParams: TMessageParams; +begin + Result := ''; + xStream := TMemoryStream.Create; + try + xStream.Clear; + SetLength(xOutParams, 0); + TIDEInstances.BuildMessage(MESSAGE_GETOPENEDPROJECT, xOutParams, xStream); + xStream.Position := 0; + Self.PostRequest(MESSAGETYPE_XML, xStream); + xStream.Clear; + if PeekResponse(xStream, xMsgType{%H-}, TIMEOUT_GETOPENEDPROJECT) and + (xMsgType = MESSAGETYPE_XML) then + begin + xStream.Position := 0; + if TIDEInstances.ParseMessage(xStream, xResponseType, xInParams) and + (xResponseType = RESPONSE_GETOPENEDPROJECT) then + begin + Result := TIDEInstances.GetMessageParam(xInParams, PARAM_RESULT); + end; + end else//no response + begin + DeleteRequest; + Result := ''; + end; + finally + xStream.Free; + end; +end; + +{ TMainServer } + +procedure TMainServer.CheckMessagesOnTimer(Sender: TObject); +begin + DoCheckMessages; +end; + +constructor TMainServer.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + FMsgStream := TMemoryStream.Create; +end; + +destructor TMainServer.Destroy; +begin + FMsgStream.Free; + StopListening; + + inherited Destroy; +end; + +procedure TMainServer.DoStartNewInstance(const aMsgID: Integer; + const aInParams: TMessageParams); +var + xResult: TStartNewInstanceResult; + xFiles: TStrings; + xParams: TMessageParams; + xSourceWindowHandle: HWND = 0; +begin + xResult := ofrStartNewInstance; + if Assigned(FStartNewInstanceEvent) then + begin + xFiles := TStringList.Create; + try + TIDEInstances.AddFilesFromParams(aInParams, xFiles); + FStartNewInstanceEvent(xFiles, xResult, xSourceWindowHandle); + finally + xFiles.Free; + end; + end; + + SetLength(xParams, 5); + xParams[0] := TIDEInstances.MessageParam(PARAM_RESULT, IntToStr(Ord(xResult))); + xParams[1] := TIDEInstances.MessageParam(PARAM_HANDLEBRINGTOFRONT, IntToStr(xSourceWindowHandle)); // do not use Application.MainFormHandle here - it steals focus from active source editor + xParams[2] := TIDEInstances.MessageParam(PARAM_MODALERRORMESSAGE, dlgRunningInstanceModalError); + xParams[3] := TIDEInstances.MessageParam(PARAM_FORCEUNIQUEMODALERRORMESSAGE, dlgForceUniqueInstanceModalError); + xParams[4] := TIDEInstances.MessageParam(PARAM_NOTRESPONDINGERRORMESSAGE, dlgRunningInstanceNotRespondingError); + SimpleResponse(aMsgID, RESPONSE_OPENFILES, xParams); +end; + +procedure TMainServer.SimpleResponse(const aResponseToMsgID: Integer; const + aResponseType: string; const aParams: array of TMessageParam); +var + xStream: TMemoryStream; +begin + xStream := TMemoryStream.Create; + try + TIDEInstances.BuildMessage(aResponseType, aParams, xStream); + xStream.Position := 0; + PostResponse(aResponseToMsgID, MESSAGETYPE_XML, xStream); + finally + xStream.Free; + end; +end; + +procedure TMainServer.StartListening( + const aStartNewInstanceEvent: TStartNewInstanceEvent; + const aGetCurrentProjectEvent: TGetCurrentProjectEvent); +begin + Assert((FTimer = nil) and Assigned(aStartNewInstanceEvent) and Assigned(aGetCurrentProjectEvent)); + + FTimer := TTimer.Create(nil); + FTimer.OnTimer := @CheckMessagesOnTimer; + FTimer.Interval := 50; + FTimer.Enabled := True; + + FStartNewInstanceEvent := aStartNewInstanceEvent; + FGetCurrentProjectEvent := aGetCurrentProjectEvent; +end; + +procedure TMainServer.StopListening; +begin + FreeAndNil(FTimer); + + FStartNewInstanceEvent := nil; +end; + +procedure TMainServer.DoCheckMessages; +var + xMessageType: string; + xParams: TMessageParams; + xMsgID, xMsgType: Integer; +begin + if Active then + begin + while + PeekRequest(FMsgStream, xMsgID{%H-}, xMsgType{%H-}) and + (xMsgType = MESSAGETYPE_XML) and + (TIDEInstances.ParseMessage(FMsgStream, xMessageType, xParams)) + do + case xMessageType of + MESSAGE_STARTNEWINSTANCE: DoStartNewInstance(xMsgID, xParams); + MESSAGE_GETOPENEDPROJECT: DoGetCurrentProject(xMsgID, xParams); + end; + end; +end; + +procedure TMainServer.DoGetCurrentProject(const aMsgID: Integer; + const aInParams: TMessageParams); +var + xResult: string; + xParams: TMessageParams; +begin + xResult := ''; + if Assigned(FStartNewInstanceEvent) then + FGetCurrentProjectEvent(xResult); + + SetLength(xParams, 1); + xParams[0] := TIDEInstances.MessageParam(PARAM_RESULT, xResult); + SimpleResponse(aMsgID, RESPONSE_GETOPENEDPROJECT, xParams); +end; + +initialization + FLazIDEInstances := TIDEInstances.Create(nil); + FLazIDEInstances.InitIDEInstances; + +finalization + FreeAndNil(FLazIDEInstances); + +end. diff -Nru lazarus-1.4.4+dfsg/ide/ideoptiondefs.pas lazarus-1.6+dfsg/ide/ideoptiondefs.pas --- lazarus-1.4.4+dfsg/ide/ideoptiondefs.pas 2014-07-20 20:02:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideoptiondefs.pas 2015-07-04 23:08:00.000000000 +0000 @@ -32,7 +32,7 @@ interface uses - Classes, SysUtils, types, LCLProc, FileUtil, Laz2_XMLCfg, + Classes, SysUtils, types, LCLProc, LazFileUtils, Laz2_XMLCfg, Forms, Controls, Buttons, BaseIDEIntf, LazConfigStorage, LazUTF8, IDEWindowIntf, IDEExternToolIntf, LazConf; @@ -82,7 +82,6 @@ nmiwPkgGraphExplorer, nmiwProjectInspector, nmiwEditorFileManager, - // not shown at startup nmiwSearchResultsViewName, nmiwAnchorEditor, nmiwTabOrderEditor, diff -Nru lazarus-1.4.4+dfsg/ide/ideoptionsdlg.lfm lazarus-1.6+dfsg/ide/ideoptionsdlg.lfm --- lazarus-1.4.4+dfsg/ide/ideoptionsdlg.lfm 2014-10-30 19:47:16.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideoptionsdlg.lfm 2015-11-30 13:07:04.000000000 +0000 @@ -6,22 +6,22 @@ ActiveControl = FilterEdit BorderIcons = [biSystemMenu] Caption = 'IDEOptionsDialog' - ClientHeight = 404 - ClientWidth = 689 + ClientHeight = 500 + ClientWidth = 800 Constraints.MinHeight = 350 Constraints.MinWidth = 500 OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object ButtonPanel: TButtonPanel AnchorSideLeft.Control = Owner AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = Owner Left = 6 - Height = 41 - Top = 357 - Width = 677 + Height = 37 + Top = 457 + Width = 788 BorderSpacing.Left = 6 BorderSpacing.Right = 6 BorderSpacing.Bottom = 6 @@ -40,7 +40,7 @@ end object CatTVSplitter: TSplitter Left = 255 - Height = 357 + Height = 457 Top = 0 Width = 4 end @@ -48,12 +48,12 @@ AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner Left = 0 - Height = 357 + Height = 457 Top = 0 Width = 255 Align = alLeft BevelOuter = bvNone - ClientHeight = 357 + ClientHeight = 457 ClientWidth = 255 Constraints.MinWidth = 150 TabOrder = 2 @@ -65,12 +65,11 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = SettingsPanel Left = 6 - Height = 300 - Top = 37 + Height = 398 + Top = 39 Width = 249 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Top = 6 - DefaultItemHeight = 18 ReadOnly = True TabOrder = 0 OnChange = CategoryTreeChange @@ -84,7 +83,7 @@ AnchorSideTop.Control = CategoryPanel AnchorSideRight.Side = asrBottom Left = 6 - Height = 28 + Height = 27 Top = 6 Width = 249 OnFilterItem = FilterEditFilterItem @@ -102,7 +101,7 @@ object SettingsPanel: TPanel Left = 0 Height = 20 - Top = 337 + Top = 437 Width = 255 Align = alBottom AutoSize = True @@ -120,23 +119,23 @@ Left = 259 Height = 40 Top = 0 - Width = 424 + Width = 535 Anchors = [akTop, akLeft, akRight] BevelOuter = bvNone ClientHeight = 40 - ClientWidth = 424 + ClientWidth = 535 TabOrder = 3 object BuildModeComboBox: TComboBox AnchorSideLeft.Control = UseBuildModeCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = UseBuildModeCheckBox AnchorSideTop.Side = asrCenter - Left = 119 - Height = 25 + Left = 124 + Height = 27 Top = 5 Width = 154 BorderSpacing.Left = 7 - ItemHeight = 0 + ItemHeight = 23 OnSelect = BuildModeComboBoxSelect Style = csDropDownList TabOrder = 0 @@ -146,11 +145,11 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = BuildModeComboBox AnchorSideTop.Side = asrCenter - Left = 288 + Left = 289 Height = 25 - Top = 5 + Top = 6 Width = 25 - BorderSpacing.Left = 15 + BorderSpacing.Left = 11 Caption = '...' OnClick = BuildModeManageButtonClick TabOrder = 1 @@ -158,9 +157,9 @@ object UseBuildModeCheckBox: TCheckBox AnchorSideTop.Side = asrCenter Left = 12 - Height = 21 + Height = 22 Top = 7 - Width = 100 + Width = 105 BorderSpacing.Left = 6 Caption = 'Build modes' OnChange = UseBuildModeCheckBoxChange @@ -178,9 +177,9 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ButtonPanel Left = 259 - Height = 317 + Height = 417 Top = 40 - Width = 424 + Width = 535 HorzScrollBar.Page = 1 HorzScrollBar.Tracking = True VertScrollBar.Page = 1 diff -Nru lazarus-1.4.4+dfsg/ide/ideoptionsdlg.pas lazarus-1.6+dfsg/ide/ideoptionsdlg.pas --- lazarus-1.4.4+dfsg/ide/ideoptionsdlg.pas 2015-04-16 20:21:57.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideoptionsdlg.pas 2015-11-04 21:29:29.000000000 +0000 @@ -30,13 +30,16 @@ interface uses - Classes, SysUtils, - LCLProc, LCLType, Controls, Forms, ComCtrls, - Buttons, ButtonPanel, ExtCtrls, EditBtn, StdCtrls, Dialogs, TreeFilterEdit, + Classes, SysUtils, LCLProc, + LCLType, Controls, Forms, ComCtrls, Buttons, ButtonPanel, ExtCtrls, StdCtrls, + Dialogs, TreeFilterEdit, + // IdeIntf IDEWindowIntf, IDEOptionsIntf, IDECommands, IDEHelpIntf, ProjectIntf, - CompOptsIntf, IDEDialogs, - EnvironmentOpts, LazarusIDEStrConsts, EditorOptions, - BuildModesManager, project_save_options, Project, Compiler_ModeMatrix; + // IDE + EnvironmentOpts, EditorOptions, BuildModesManager, Compiler_ModeMatrix, + Project, LazarusIDEStrConsts, + // Packager + PackageDefs, PackageSystem; type TIDEOptsDlgAction = ( @@ -71,7 +74,6 @@ function FilterEditFilterItem(Item: TObject; out Done: Boolean): Boolean; procedure FormShow(Sender: TObject); procedure HelpButtonClick(Sender: TObject); - procedure IDEOptionsDialogKeyPress(Sender: TObject; var Key: char); procedure OkButtonClick(Sender: TObject); procedure CancelButtonClick(Sender: TObject); private @@ -123,8 +125,26 @@ {$R *.lfm} -uses - IDEContextHelpEdit; + +const + LazUtilsPkg = 'LazUtils'; + +function HasLazUtilsDependency: Boolean; +begin + Result := Assigned(Project1.FindDependencyByName('LCL')) + or Assigned(Project1.FindDependencyByName(LazUtilsPkg)); +end; + +procedure AddLazUtilsDependency; +var + Dep: TPkgDependency; +begin + if HasLazUtilsDependency then Exit; + Project1.AddPackageDependency(LazUtilsPkg); + Dep:=Project1.FindDependencyByName(LazUtilsPkg); + if Assigned(Dep) then + PackageGraph.OpenDependency(Dep,false); +end; { TIDEOptionsDialog } @@ -147,8 +167,6 @@ ButtonPanel.CancelButton.OnClick := @CancelButtonClick; ButtonPanel.HelpButton.Caption:= lisMenuHelp; ButtonPanel.HelpButton.OnClick := @HelpButtonClick; - - OnKeyPress:=@IDEOptionsDialogKeyPress; end; procedure TIDEOptionsDialog.FormShow(Sender: TObject); @@ -169,11 +187,6 @@ LazarusHelp.ShowHelpForIDEControl(Self); end; -procedure TIDEOptionsDialog.IDEOptionsDialogKeyPress(Sender: TObject; var Key: char); -begin - //debugln(['TIDEOptionsDialog.IDEOptionsDialogKeyPress ',ord(Key)]); -end; - procedure TIDEOptionsDialog.CategoryTreeChange(Sender: TObject; Node: TTreeNode); var GroupClass: TAbstractIDEOptionsClass; @@ -223,7 +236,7 @@ procedure TIDEOptionsDialog.BuildModeComboBoxSelect(Sender: TObject); begin if AllBuildModes then begin - ShowMessage('This will allow changing all build modes at once. Not implemented yet.'); + ShowMessage(lisThisWillAllowChangingAllBuildModesAtOnceNotImpleme); end else begin Assert(BuildModeSelectPanel.Visible, 'BuildModeComboBoxSelect: BuildModeSelectPanel not Visible'); @@ -614,6 +627,7 @@ UseBuildModeCheckBox.Enabled := not ManyBuildModes; BuildModeComboBox.Visible := EnvironmentOptions.UseBuildModes; BuildModeManageButton.Visible := EnvironmentOptions.UseBuildModes; + ModeMatrix:=TCompOptModeMatrixFrame(FindEditor(TCompOptModeMatrixFrame)); if Assigned(ModeMatrix) then ModeMatrix.UpdateModes; diff -Nru lazarus-1.4.4+dfsg/ide/ideprocs.pp lazarus-1.6+dfsg/ide/ideprocs.pp --- lazarus-1.4.4+dfsg/ide/ideprocs.pp 2015-03-04 15:44:48.000000000 +0000 +++ lazarus-1.6+dfsg/ide/ideprocs.pp 2016-01-18 22:47:58.000000000 +0000 @@ -30,9 +30,15 @@ interface uses - Classes, SysUtils, FileUtil, LCLProc, AvgLvlTree, Laz2_XMLCfg, LazUTF8, - lazutf8classes, LazFileUtils, LazFileCache, StdCtrls, ExtCtrls, SourceLog, - FileProcs, CodeToolManager, CodeToolsConfig, CodeCache, LazConf; + // RTL + LCL + Classes, SysUtils, LCLProc, StdCtrls, ExtCtrls, + // CodeTools + BasicCodeTools, SourceLog, FileProcs, CodeToolManager, CodeToolsConfig, CodeCache, + // LazUtils + FileUtil, LazFileUtils, LazFileCache, LazUTF8, lazutf8classes, + AvgLvlTree, Laz2_XMLCfg, + // IDE + LazConf; type // comments @@ -128,8 +134,6 @@ procedure MergeSearchPaths(SearchPath: TStrings; const AddSearchPath: string); function RemoveSearchPaths(const SearchPath, RemoveSearchPath: string): string; function RemoveNonExistingPaths(const SearchPath, BaseDirectory: string): string; -function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; inline; -function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string; inline; function RebaseSearchPath(const SearchPath, OldBaseDirectory, NewBaseDirectory: string; SkipPathsStartingWithMacro: boolean): string; @@ -355,18 +359,29 @@ end; function FilenameIsPascalSource(const Filename: string): boolean; -var Ext: string; - p: Integer; - AnUnitName: String; +var + s: string; + i: Integer; +begin + Result:=False; + // Check unit name + s:=ExtractFileNameOnly(Filename); + if (s='') or not IsDottedIdentifier(s) then + exit; + // Check extension + s:=lowercase(ExtractFileExt(Filename)); + for i:=Low(PascalSourceExt) to High(PascalSourceExt) do + if s=PascalSourceExt[i] then + exit(True); +end; + +function FilenameIsFormText(const Filename: string): boolean; +var + Ext: string; begin - AnUnitName:=ExtractFileNameOnly(Filename); - if (AnUnitName='') or (not IsValidIdent(AnUnitName)) then - exit(false); Ext:=lowercase(ExtractFileExt(Filename)); - for p:=Low(PascalFileExt) to High(PascalFileExt) do - if Ext=PascalFileExt[p] then - exit(true); - Result:=(Ext='.lpr') or (Ext='.dpr') or (Ext='.dpk'); + Result:=((Ext='.lfm') or (Ext='.dfm') or (Ext='.xfm')) + and (ExtractFileNameOnly(Filename)<>''); end; function FindShortFileNameOnDisk(const Filename: string): string; @@ -444,14 +459,6 @@ end; end; -function FilenameIsFormText(const Filename: string): boolean; -var Ext: string; -begin - Ext:=lowercase(ExtractFileExt(Filename)); - Result:=((Ext='.lfm') or (Ext='.dfm') or (Ext='.xfm')) - and (ExtractFileNameOnly(Filename)<>''); -end; - function MergeSearchPaths(const OldSearchPath, AddSearchPath: string): string; var l: Integer; @@ -810,11 +817,6 @@ end; end; -function CreateRelativeSearchPath(const SearchPath, BaseDirectory: string): string; -begin - Result:=FileProcs.CreateRelativeSearchPath(SearchPath,BaseDirectory); -end; - function RemoveNonExistingPaths(const SearchPath, BaseDirectory: string): string; var StartPos: Integer; @@ -860,11 +862,6 @@ end; end; -function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; -begin - Result:=FileProcs.CreateAbsoluteSearchPath(SearchPath,BaseDirectory); -end; - function SwitchPathDelims(const Filename: string; Switch: TPathDelimSwitch): string; var i: Integer; @@ -890,8 +887,7 @@ Result:=Filename; end; -function CheckPathDelim(const OldPathDelim: string; out Changed: boolean - ): TPathDelimSwitch; +function CheckPathDelim(const OldPathDelim: string; out Changed: boolean): TPathDelimSwitch; begin Changed:=OldPathDelim<>PathDelim; if Changed then begin @@ -961,8 +957,7 @@ Result:=rltCaseSensitive; end; -function CompareRecentListItem(s1, s2: string; ListType: TRecentListType - ): boolean; +function CompareRecentListItem(s1, s2: string; ListType: TRecentListType): boolean; begin case ListType of rltCaseInsensitive: Result:=UTF8LowerCase(s1)=UTF8LowerCase(s2); @@ -1109,8 +1104,7 @@ ARect.Bottom:=XMLConfig.GetValue(Path+'Bottom',DefaultRect.Bottom); end; -procedure SaveRect(XMLConfig: TXMLConfig; const Path: string; - const ARect: TRect); +procedure SaveRect(XMLConfig: TXMLConfig; const Path: string; const ARect: TRect); begin SaveRect(XMLConfig,Path,ARect,Rect(0,0,0,0)); end; @@ -1455,7 +1449,7 @@ if not FileIsSymlink(Filename) and not FileIsHardLink(FileName) and not FileIsLocked(Filename) and - FileProcs.RenameFileUTF8(Filename, BackupFilename) then + RenameFileUTF8(Filename, BackupFilename) then begin // create empty file FHandle := FileCreate(UTF8ToSys(FileName)); @@ -2603,12 +2597,11 @@ Count1: Int64; Count2: Int64; begin + Result:=false; if s1.Memory=nil then begin Result:=s2.Memory=nil; end else begin - if s2.Memory=nil then begin - Result:=false; - end else begin + if s2.Memory<>nil then begin p1:=PChar(s1.Memory); p2:=PChar(s2.Memory); Count1:=s1.Size; @@ -2670,10 +2663,5 @@ LCLProc.DbgOut(s); end; -initialization - CTDbgOutEvent:=@CTDbgOut; -finalization - CTDbgOutEvent:=nil; - end. diff -Nru lazarus-1.4.4+dfsg/ide/idetranslations.pas lazarus-1.6+dfsg/ide/idetranslations.pas --- lazarus-1.4.4+dfsg/ide/idetranslations.pas 2014-12-03 22:23:59.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idetranslations.pas 2015-10-07 14:14:46.000000000 +0000 @@ -32,8 +32,8 @@ interface uses - Classes, SysUtils, GetText, LCLProc, Translations, - IDEProcs, FileProcs, avl_tree, + Classes, SysUtils, GetText, LazUTF8, Translations, + IDEProcs, FileProcs, LazFileUtils, LazFileCache, CodeToolManager, DirectoryCacher, CodeCache, LazarusIDEStrConsts; { IDE Language (Human, not computer) } @@ -201,7 +201,7 @@ i: Integer; Item: PItem; j: Integer; - OutputFilename: String; + OutputFilename, OtherRSTFilename, Ext, OtherExt: String; begin Result:=true; if (RSTDirectory='') or (PODirectory='') then exit;// nothing to do @@ -227,11 +227,10 @@ Item:=nil; // collect all rst/po files that needs update for i:=0 to Files.Count-1 do begin - if (CompareFileExt(Files[i],'.rst',false)<>0) and - (CompareFileExt(Files[i],'.lrt',false)<>0) and - (CompareFileExt(Files[i],'.rsj',false)<>0) - then continue; RSTFilename:=RSTDirectory+Files[i]; + Ext:=LowerCase(ExtractFileExt(RSTFilename)); + if (Ext<>'.rst') and (Ext<>'.lrt') and (Ext<>'.rsj') then + continue; if POFilename='' then OutputFilename:=PODirectory+ChangeFileExt(Files[i],'.po') else @@ -250,7 +249,32 @@ Item^.RSTFileList:=TStringList.Create; Item^.OutputFilename:=OutputFilename; Items.Add(Item); + end else begin + // there is already a source file for this .po file + //debugln(['ConvertRSTFiles found another source: ',RSTFilename]); + if (Ext='.rsj') or (Ext='.rst') then begin + // rsj are created by FPC 2.7.1+, rst by older => use only the newest + for j:=Item^.RSTFileList.Count-1 downto 0 do begin + OtherRSTFilename:=Item^.RSTFileList[j]; + //debugln(['ConvertRSTFiles old: ',OtherRSTFilename]); + OtherExt:=LowerCase(ExtractFileExt(OtherRSTFilename)); + if (OtherExt='.rsj') or (OtherExt='.rst') then begin + if FileAgeCached(RSTFilename)<=FileAgeCached(OtherRSTFilename) then + begin + // this one is older => skip + //debugln(['ConvertRSTFiles ',RSTFilename,' is older => skip']); + RSTFilename:=''; + break; + end else begin + // this one is newer + //debugln(['ConvertRSTFiles ',RSTFilename,' is newer => ignoring old']); + Item^.RSTFileList.Delete(j); + end; + end; + end; + end; end; + if RSTFilename='' then continue; Item^.RSTFileList.Add(RSTFilename); if (not Item^.NeedUpdate) or (not FileExistsCached(OutputFilename)) @@ -512,7 +536,7 @@ initialization LazarusTranslations:=nil; - LCLGetLanguageIDs(SystemLanguageID1,SystemLanguageID2); + LazGetLanguageIDs(SystemLanguageID1,SystemLanguageID2); finalization FreeAndNil(LazarusTranslations); diff -Nru lazarus-1.4.4+dfsg/ide/idewindowhelp.pas lazarus-1.6+dfsg/ide/idewindowhelp.pas --- lazarus-1.4.4+dfsg/ide/idewindowhelp.pas 2014-06-03 19:01:24.000000000 +0000 +++ lazarus-1.6+dfsg/ide/idewindowhelp.pas 2015-07-04 23:08:00.000000000 +0000 @@ -30,7 +30,7 @@ interface uses - Classes, SysUtils, LCLProc, Controls, FileUtil, Dialogs, HelpIntfs, + Classes, SysUtils, LCLProc, Controls, LazFileUtils, Dialogs, HelpIntfs, LazConfigStorage, IDEDialogs, EnvironmentOpts, IDEOptionDefs, LazarusIDEStrConsts; diff -Nru lazarus-1.4.4+dfsg/ide/imexportcompileropts.lfm lazarus-1.6+dfsg/ide/imexportcompileropts.lfm --- lazarus-1.4.4+dfsg/ide/imexportcompileropts.lfm 2014-09-25 22:03:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/imexportcompileropts.lfm 2015-06-14 21:38:23.000000000 +0000 @@ -1,21 +1,24 @@ object ImExportCompOptsDlg: TImExportCompOptsDlg Left = 416 - Height = 129 + Height = 171 Top = 208 - Width = 746 + Width = 451 + BorderIcons = [biSystemMenu] + BorderStyle = bsDialog Caption = 'ImExportCompOptsDlg' - ClientHeight = 129 - ClientWidth = 746 + ClientHeight = 171 + ClientWidth = 451 Constraints.MinHeight = 113 Constraints.MinWidth = 300 OnClose = ImExportCompOptsDlgCLOSE OnCreate = ImExportCompOptsDlgCREATE - LCLVersion = '1.3' + Position = poScreenCenter + LCLVersion = '1.5' object ButtonPanel1: TButtonPanel Left = 6 - Height = 38 - Top = 85 - Width = 734 + Height = 34 + Top = 131 + Width = 439 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' @@ -24,78 +27,29 @@ CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 0 + TabOrder = 3 ShowButtons = [pbOK, pbCancel, pbHelp] end - object HistoryLabel: TLabel - AnchorSideTop.Control = HistoryButton - AnchorSideTop.Side = asrCenter - Left = 16 - Height = 20 - Top = 8 - Width = 47 - Caption = 'History' - ParentColor = False - end - object HistoryButton: TButton - AnchorSideLeft.Control = HistoryLabel - AnchorSideLeft.Side = asrBottom + object FileLabel: TLabel + AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner - Left = 69 - Height = 25 - Hint = 'Recent files' + Left = 6 + Height = 15 Top = 6 - Width = 35 - BorderSpacing.Around = 6 - Caption = '>>' - OnClick = HistoryButtonClick - ParentShowHint = False - PopupMenu = RecentPopupMenu - ShowHint = True - TabOrder = 1 - end - object FileLabel: TLabel - AnchorSideLeft.Control = HistoryLabel - AnchorSideTop.Control = HistoryLabel - AnchorSideTop.Side = asrBottom - Left = 16 - Height = 20 - Top = 41 - Width = 23 - BorderSpacing.Top = 13 + Width = 18 + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 Caption = 'File' ParentColor = False end - object FileNameEdit: TFileNameEdit - AnchorSideLeft.Control = FileLabel - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = FileLabel - AnchorSideTop.Side = asrCenter - Left = 45 - Height = 28 - Top = 37 - Width = 431 - DialogOptions = [ofExtensionDifferent, ofEnableSizing, ofViewDetail] - Filter = 'XML file (*.xml)|*.xml|Project file (*.lpi)|*.lpi|Package file (*.lpk)|*.lpk|Session file (*.lps)|*.lps|All files (*)|*' - FilterIndex = 0 - HideDirectories = False - ButtonWidth = 23 - NumGlyphs = 1 - BorderSpacing.Left = 6 - MaxLength = 0 - ParentShowHint = False - PopupMenu = RecentPopupMenu - TabOrder = 2 - end object ExportRadioGroup: TRadioGroup - AnchorSideLeft.Control = FileNameEdit - AnchorSideLeft.Side = asrBottom - Left = 491 - Height = 69 - Top = 6 - Width = 185 + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 66 + Top = 54 + Width = 210 AutoFill = True - BorderSpacing.Left = 15 + BorderSpacing.Top = 6 Caption = 'Compiler options of' ChildSizing.LeftRightSpacing = 6 ChildSizing.EnlargeHorizontal = crsHomogenousChildResize @@ -104,19 +58,55 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 - ClientHeight = 44 - ClientWidth = 181 + ClientHeight = 46 + ClientWidth = 206 ItemIndex = 0 Items.Strings = ( 'Current build mode' 'All build modes' ) - TabOrder = 3 + TabOrder = 2 + end + object FileNameEdit: TComboBox + AnchorSideLeft.Control = FileLabel + AnchorSideTop.Control = FileLabel + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 23 + Top = 25 + Width = 378 + BorderSpacing.Top = 4 + BorderSpacing.Right = 6 + ItemHeight = 15 + OnChange = FileNameEditChange + ParentShowHint = False + TabOrder = 0 + end + object ButtonBrowse: TButton + AnchorSideLeft.Control = FileNameEdit + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = FileNameEdit + AnchorSideRight.Control = Owner + AnchorSideRight.Side = asrBottom + Left = 390 + Height = 25 + Top = 25 + Width = 55 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Right = 6 + Caption = '...' + OnClick = ButtonBrowseClick + TabOrder = 1 end - object RecentPopupMenu: TPopupMenu - left = 376 - object MenuItem1: TMenuItem - Caption = 'New Item1' - end + object OpenDlg: TOpenDialog + Options = [ofFileMustExist, ofEnableSizing, ofViewDetail] + left = 304 + top = 88 + end + object SaveDlg: TSaveDialog + left = 349 + top = 88 end end diff -Nru lazarus-1.4.4+dfsg/ide/imexportcompileropts.pas lazarus-1.6+dfsg/ide/imexportcompileropts.pas --- lazarus-1.4.4+dfsg/ide/imexportcompileropts.pas 2014-09-25 22:03:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/imexportcompileropts.pas 2015-10-07 10:41:26.000000000 +0000 @@ -32,36 +32,31 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, - Menus, ExtCtrls, EditBtn, ButtonPanel, - IDEProcs, FileUtil, Laz2_XMLCfg, LazFileCache, LCLType, LazarusIDEStrConsts, - MainIntf, IDEOptionsIntf, InputHistory, Project, CompilerOptions; + SysUtils, Forms, Controls, Dialogs, StdCtrls, Buttons, ExtCtrls, ButtonPanel, + IDEProcs, FileUtil, LazFileUtils, Laz2_XMLCfg, LCLType, LazarusIDEStrConsts, + IDEOptionsIntf, InputHistory, Project, CompilerOptions; type { TImExportCompOptsDlg } TImExportCompOptsDlg = class(TForm) + ButtonBrowse: TButton; ButtonPanel1: TButtonPanel; ExportRadioGroup: TRadioGroup; FileLabel: TLabel; - FileNameEdit: TFileNameEdit; - HistoryLabel: TLabel; - MenuItem1: TMenuItem; - HistoryButton: TButton; - RecentPopupMenu: TPopupMenu; - procedure FileNameEditChangeImport(Sender: TObject); - procedure FileNameEditChangeExport(Sender: TObject); - procedure ImExportCompOptsDlgCLOSE(Sender: TObject; var CloseAction: TCloseAction); + FileNameEdit: TComboBox; + OpenDlg: TOpenDialog; + SaveDlg: TSaveDialog; + procedure ButtonBrowseClick(Sender: TObject); + procedure FileNameEditChange(Sender: TObject); + procedure ImExportCompOptsDlgCLOSE(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure ImExportCompOptsDlgCREATE(Sender: TObject); procedure OpenButtonCLICK(Sender: TObject); - procedure PopupClick(Sender: TObject); - procedure HistoryButtonClick(Sender: TObject); - //procedure RecentSaveButton1Click(Sender: TObject); procedure SaveButtonCLICK(Sender: TObject); private FFilename: string; FParentDialog: TAbstractOptionsEditorDialog; - procedure HideRadioButtons; + FExport: boolean; procedure InitExport; procedure InitImport; procedure LoadRecentList; @@ -199,7 +194,7 @@ if CompareFileExt(fXMLConfig.Filename,'.lpk',false)=0 then begin try - FileVersion:=fXMLConfig.GetValue(PkgVersionPath,0); + FileVersion:=fXMLConfig.GetValue(PkgVersionPath,2); except FileVersion:=2; // On error assume version 2. end; @@ -249,23 +244,27 @@ { TImExportCompOptsDlg } -procedure TImExportCompOptsDlg.HideRadioButtons; -begin - Width:=FileNameEdit.Left + FileNameEdit.Width + 70; // Room for localized "File" - ExportRadioGroup.Visible:=False; -end; - procedure TImExportCompOptsDlg.InitImport; begin + FExport:=false; Caption:=lisIECOImportCompilerOptions; - HideRadioButtons; - FileNameEdit.Filter:='XML file (*.xml)|*.xml|' - +'Project file (*.lpi)|*.lpi|' - +'Package file (*.lpk)|*.lpk|' - +'Session file (*.lps)|*.lps|' - +'All files (*)|*'; - FileNameEdit.DialogOptions:=FileNameEdit.DialogOptions+[ofFileMustExist]; - FileNameEdit.OnChange:=@FileNameEditChangeImport; + // ToDo: Later when the XML file is selected, ExportRadioGroup can be made + // Visible but disabled. Then ItemIndex must be set according to file contents. + // If file contains one mode -> ItemIndex:=0. If more modes -> ItemIndex:=1. + ExportRadioGroup.Visible:=False; + + OpenDlg.Filter:=Format( + '%s|*.xml|' + +'%s|*.lpi|' + +'%s|*.lpk|' + +'%s|*.lps|' + +'%s|%s', + [dlgFilterXML, + dlgFilterLazarusProject, + dlgFilterLazarusPackage, + dlgFilterLazarusSession, + dlgFilterAll, GetAllFilesMask]); + with ButtonPanel1 do begin OKButton.Caption:=lisIECOLoadFromFile; OKButton.LoadGlyphFromStock(idButtonOpen); @@ -278,12 +277,13 @@ procedure TImExportCompOptsDlg.InitExport; begin + FExport:=true; Caption:=lisIECOExportCompilerOptions; - FileNameEdit.Filter:='XML file (*.xml)|*.xml|All files (*)|*'; - FileNameEdit.DialogKind:=dkSave; - FileNameEdit.OnChange:=@FileNameEditChangeExport; + SaveDlg.Filter:=Format('%s|*.xml|%s|%s', + [dlgFilterXML, dlgFilterAll, GetAllFilesMask]); + if Project1.BuildModes.Count <= 1 then - HideRadioButtons; + ExportRadioGroup.Enabled:=False; with ButtonPanel1 do begin OKButton.Caption:=lisIECOSaveToFile; OKButton.LoadGlyphFromStock(idButtonSave); @@ -296,8 +296,6 @@ procedure TImExportCompOptsDlg.ImExportCompOptsDlgCREATE(Sender: TObject); begin - HistoryLabel.Caption:=lisIECORecentFiles; - HistoryLabel.Hint:=lisIECORecentFiles; FileLabel.Caption:=lisFile; ExportRadioGroup.Caption:=lisIECOCompilerOptionsOf; ExportRadioGroup.Items.Strings[0]:=lisIECOCurrentBuildMode; @@ -305,39 +303,40 @@ LoadRecentList; end; -procedure TImExportCompOptsDlg.FileNameEditChangeImport(Sender: TObject); +procedure TImExportCompOptsDlg.ButtonBrowseClick(Sender: TObject); +var + Dlg: TFileDialog; begin - ButtonPanel1.OKButton.Enabled := FileExistsUTF8((Sender as TFileNameEdit).FileName); -end; + if FExport then Dlg:= SaveDlg + else Dlg:= OpenDlg; -procedure TImExportCompOptsDlg.FileNameEditChangeExport(Sender: TObject); -begin - ButtonPanel1.OKButton.Enabled := (Sender as TFileNameEdit).FileName <> ''; + with Dlg do + begin + FileName := ''; + if Execute then + begin + FileNameEdit.Text := FileName; + FileNameEditChange(nil); + end; + end; end; -procedure TImExportCompOptsDlg.OpenButtonCLICK(Sender: TObject); +procedure TImExportCompOptsDlg.FileNameEditChange(Sender: TObject); begin - DoOpenFile(CleanAndExpandFilename(FileNameEdit.FileName)); + if FExport then + ButtonPanel1.OKButton.Enabled := FileNameEdit.Text <> '' + else + ButtonPanel1.OKButton.Enabled := FileExistsUTF8(FileNameEdit.Text); end; -procedure TImExportCompOptsDlg.PopupClick(Sender: TObject); +procedure TImExportCompOptsDlg.OpenButtonCLICK(Sender: TObject); begin - FileNameEdit.Text := (Sender as TMenuItem).Caption; + DoOpenFile(CleanAndExpandFilename(FileNameEdit.Text)); end; -procedure TImExportCompOptsDlg.HistoryButtonClick(Sender: TObject); -begin - RecentPopupMenu.PopUp; -end; -{ -procedure TImExportCompOptsDlg.RecentSaveButton1Click(Sender: TObject); -begin - RecentPopupMenu.PopUp; -end; -} procedure TImExportCompOptsDlg.SaveButtonCLICK(Sender: TObject); begin - DoSaveFile(CleanAndExpandFilename(FileNameEdit.FileName)); + DoSaveFile(CleanAndExpandFilename(FileNameEdit.Text)); end; procedure TImExportCompOptsDlg.ImExportCompOptsDlgCLOSE(Sender: TObject; var CloseAction: TCloseAction); @@ -346,32 +345,15 @@ end; procedure TImExportCompOptsDlg.LoadRecentList; -var - sl: TStringList; - mi: TMenuItem; - i: Integer; begin - sl := TStringList.Create; - try - RecentPopupMenu.Items.Clear; - sl.Assign(InputHistories.HistoryLists.GetList(hlCompilerOptsImExport,true,rltFile)); - for i := 0 to sl.Count-1 do begin - mi := TMenuItem.Create(RecentPopupMenu); - mi.Caption:=sl[i]; - mi.OnClick:=@PopupClick; - RecentPopupMenu.Items.Add(mi); - end; - HistoryLabel.Visible := sl.Count > 0; - HistoryButton.Visible := HistoryLabel.Visible; - finally - sl.Free; - end; + FileNameEdit.Items.Assign( + InputHistories.HistoryLists.GetList(hlCompilerOptsImExport,true,rltFile)); end; { procedure TImExportCompOptsDlg.SaveRecentList; begin InputHistories.HistoryLists.GetList(hlCompilerOptsImExport,true,rltFile).Assign( - RecentListbox.Items); + FileNameEdit.Items); InputHistories.Save; end; } diff -Nru lazarus-1.4.4+dfsg/ide/include/ide.inc lazarus-1.6+dfsg/ide/include/ide.inc --- lazarus-1.4.4+dfsg/ide/include/ide.inc 2014-07-23 17:29:51.000000000 +0000 +++ lazarus-1.6+dfsg/ide/include/ide.inc 2015-03-10 15:28:11.000000000 +0000 @@ -54,5 +54,9 @@ {$OPTIMIZATION NOSTACKFRAME} {$ENDIF} +{$IF defined(Windows) and defined(HEAPTRC_WINDOW) and (FPC_FULLVERSION>=20701)} + {$DEFINE EnableRedirectStdErr} +{$ENDIF} + // end. diff -Nru lazarus-1.4.4+dfsg/ide/include/win/lazbaseconf.inc lazarus-1.6+dfsg/ide/include/win/lazbaseconf.inc --- lazarus-1.4.4+dfsg/ide/include/win/lazbaseconf.inc 2013-07-11 23:15:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/include/win/lazbaseconf.inc 2015-12-09 16:04:57.000000000 +0000 @@ -148,7 +148,7 @@ // the last part of the path returned by GetAppConfigDir is the application // name. Replace that by 'lazarus', to make sure that lazbuild uses // the same primary config path - PrimaryConfigPath:= ExtractFilePath(ChompPathDelim(SysToUTF8(GetAppConfigDir(False)))) + 'lazarus'; + PrimaryConfigPath:= ExtractFilePath(ChompPathDelim(GetAppConfigDirUTF8(False))) + 'lazarus'; SecondaryConfigPath:=ChompPathDelim(ProgramDirectory); DefaultFPCSrcDirs[1] := AppendPathDelim(ProgramDirectory) + 'fpcsrc'; DefaultLazarusSrcDirs[1] := DefaultDrive + '\lazarus'; diff -Nru lazarus-1.4.4+dfsg/ide/initialsetupdlgs.pas lazarus-1.6+dfsg/ide/initialsetupdlgs.pas --- lazarus-1.4.4+dfsg/ide/initialsetupdlgs.pas 2015-03-12 00:32:49.000000000 +0000 +++ lazarus-1.6+dfsg/ide/initialsetupdlgs.pas 2015-12-20 09:54:01.000000000 +0000 @@ -40,11 +40,16 @@ interface uses - Classes, SysUtils, strutils, contnrs, LCLProc, Forms, Controls, Buttons, - Dialogs, FileUtil, Laz2_XMLCfg, lazutf8classes, LazFileUtils, LazFileCache, - LazLogger, Graphics, ComCtrls, ExtCtrls, StdCtrls, DefineTemplates, - CodeToolManager, FileProcs, TransferMacros, MacroDefIntf, GDBMIDebugger, - DbgIntfDebuggerBase, LazarusIDEStrConsts, LazConf, EnvironmentOpts, IDEProcs, + // RTL + FCL + LCL + Classes, SysUtils, + Forms, Controls, Buttons, Dialogs, Graphics, ComCtrls, ExtCtrls, StdCtrls, LCLProc, + // CodeTools + FileProcs, CodeToolManager, DefineTemplates, + // LazUtils + FileUtil, LazUTF8, LazUTF8Classes, LazFileUtils, LazFileCache, LazLogger, + // Other + MacroDefIntf, GDBMIDebugger, DbgIntfDebuggerBase, + TransferMacros, LazarusIDEStrConsts, LazConf, EnvironmentOpts, AboutFrm, IDETranslations, BaseBuildManager, InitialSetupProc; type @@ -508,9 +513,9 @@ Filename:='gdb'+GetExecutableExt; Dlg.Title:=SimpleFormat(lisSelectPathTo, [Filename]); Dlg.Options:=Dlg.Options+[ofFileMustExist]; - Filter:=dlgAllFiles+'|'+GetAllFilesMask; + Filter:=dlgFilterAll+'|'+GetAllFilesMask; if ExtractFileExt(Filename)<>'' then - Filter:=lisExecutable+'|*'+ExtractFileExt(Filename)+'|'+Filter; + Filter:=dlgFilterExecutable+'|*'+ExtractFileExt(Filename)+'|'+Filter; Dlg.Filter:=Filter; if not Dlg.Execute then exit; Filename:=Dlg.FileName; @@ -537,9 +542,9 @@ Filename:='fpc'+GetExecutableExt; Dlg.Title:=SimpleFormat(lisSelectPathTo, [Filename]); Dlg.Options:=Dlg.Options+[ofFileMustExist]; - Filter:=dlgAllFiles+'|'+GetAllFilesMask; + Filter:=dlgFilterAll+'|'+GetAllFilesMask; if ExtractFileExt(Filename)<>'' then - Filter:=lisExecutable+'|*'+ExtractFileExt(Filename)+'|'+Filter; + Filter:=dlgFilterExecutable+'|*'+ExtractFileExt(Filename)+'|'+Filter; Dlg.Filter:=Filter; if not Dlg.Execute then exit; Filename:=Dlg.FileName; @@ -605,9 +610,9 @@ Filename:='make'+GetExecutableExt; Dlg.Title:=SimpleFormat(lisSelectPathTo, [Filename]); Dlg.Options:=Dlg.Options+[ofFileMustExist]; - Filter:=dlgAllFiles+'|'+GetAllFilesMask; + Filter:=dlgFilterAll+'|'+GetAllFilesMask; if ExtractFileExt(Filename)<>'' then - Filter:=lisExecutable+'|*'+ExtractFileExt(Filename)+'|'+Filter; + Filter:=dlgFilterExecutable+'|*'+ExtractFileExt(Filename)+'|'+Filter; Dlg.Filter:=Filter; if not Dlg.Execute then exit; Filename:=Dlg.FileName; @@ -656,6 +661,7 @@ MsgResult: TModalResult; begin Node:=FirstErrorNode; + s:=''; if Node=TVNodeLazarus then s:=lisWithoutAProperLazarusDirectoryYouWillGetALotOfWarn else if Node=TVNodeCompiler then @@ -973,17 +979,16 @@ fLastParsedCompiler:=EnvironmentOptions.GetParsedCompilerFilename; //debugln(['TInitialSetupDialog.UpdateCompilerNote ',fLastParsedCompiler]); - // check compiler again - CfgCache:=CodeToolBoss.FPCDefinesCache.ConfigCaches.Find( - fLastParsedCompiler,'','','',true); - CfgCache.Update(CodeToolBoss.FPCDefinesCache.TestFilename); - BuildBoss.SetBuildTargetIDE; - Quality:=CheckCompilerQuality(fLastParsedCompiler,Note, CodeToolBoss.FPCDefinesCache.TestFilename); if Quality<>sddqInvalid then begin CodeToolBoss.FPCDefinesCache.ConfigCaches.Find( fLastParsedCompiler,'','','',true); + // check compiler again + CfgCache:=CodeToolBoss.FPCDefinesCache.ConfigCaches.Find( + fLastParsedCompiler,'','','',true); + CfgCache.Update(CodeToolBoss.FPCDefinesCache.TestFilename); + BuildBoss.SetBuildTargetIDE; end; case Quality of @@ -1285,12 +1290,19 @@ // Make executable UpdateMakeExeCandidates; - if IsFirstStart or (EnvironmentOptions.MakeFilename='') then + if IsFirstStart + or (EnvironmentOptions.MakeFilename='') + or (not FileExistsCached(EnvironmentOptions.GetParsedMakeFilename)) then begin // first start => choose first best candidate Candidate:=GetFirstCandidate(FCandidates[sddtMakeExeFilename]); if Candidate<>nil then - EnvironmentOptions.MakeFilename:=Candidate.Caption; + EnvironmentOptions.MakeFilename:=Candidate.Caption + else begin // second chance => better an incomplete instead of none (especially for windows) + Candidate:=GetFirstCandidate(FCandidates[sddtMakeExeFilename], sddqIncomplete); + if Candidate<>nil then + EnvironmentOptions.MakeFilename:=Candidate.Caption; + end; end; MakeExeComboBox.Text:=EnvironmentOptions.MakeFilename; fLastParsedMakeExe:='. .'; @@ -1311,12 +1323,10 @@ UpdateDebuggerNote; // select first error - if PropertiesTreeView.Selected=nil then begin - Node:=FirstErrorNode; - if Node=nil then - Node:=TVNodeLazarus; - PropertiesTreeView.Selected:=Node; - end; + Node:=FirstErrorNode; + if Node=nil then + Node:=TVNodeLazarus; + PropertiesTreeView.Selected:=Node; end; end. diff -Nru lazarus-1.4.4+dfsg/ide/initialsetupproc.pas lazarus-1.6+dfsg/ide/initialsetupproc.pas --- lazarus-1.4.4+dfsg/ide/initialsetupproc.pas 2015-03-11 23:53:21.000000000 +0000 +++ lazarus-1.6+dfsg/ide/initialsetupproc.pas 2015-12-18 10:28:39.000000000 +0000 @@ -32,10 +32,15 @@ interface uses - Classes, SysUtils, strutils, LazFileCache, LazUTF8Classes, LazFileUtils, - LazLoggerBase, LazUTF8, Laz2_XMLCfg, LazLogger, DefineTemplates, - CodeToolManager, FileProcs, LazarusIDEStrConsts, LazConf, EnvironmentOpts, - IDEProcs, contnrs; + // RTL + FCL + LCL + Classes, SysUtils, strutils, contnrs, + // CodeTools + DefineTemplates, CodeToolManager, FileProcs, + // LazUtils + LazFileCache, LazUTF8, LazUTF8Classes, LazFileUtils, + LazLoggerBase, LazLogger, Laz2_XMLCfg, + // IDE + LazarusIDEStrConsts, LazConf, EnvironmentOpts, IDEProcs; type TSDFilenameQuality = ( @@ -462,11 +467,15 @@ 'EnvironmentOptions/CompilerFilename/Value'); if CheckFile(AFilename,Result) then exit; + // check environment variable PP + AFileName := GetEnvironmentVariableUTF8('PP'); + if CheckFile(AFilename,Result) then exit; + // search fpc(.exe) in PATH - if CheckFile(GetDefaultCompilerFilename,Result) then exit; + if CheckFile('fpc'+ExeExt,Result) then exit; // search ppccpu(.exe) in PATH - if CheckFile(FindDefaultCompilerPath,Result) then exit; + if CheckFile(GetDefaultCompilerFilename(GetCompiledTargetCPU),Result) then exit; // check history Files:=EnvironmentOptions.CompilerFileHistory; @@ -475,10 +484,14 @@ if CheckFile(Files[i],Result) then exit; // check paths with versions - ShortCompFile:=GetDefaultCompilerFilename; + ShortCompFile:='fpc'+ExeExt; + + // check $(LazarusDir)\fpc\3.0.0\bin\i386-win32\fpc.exe + if CheckFile(SetDirSeparators('$(LazarusDir)/fpc/'+{$I %FPCVERSION%}+'/bin/'+GetCompiledTargetCPU+'-'+GetCompiledTargetOS+'/')+ShortCompFile,Result) + then exit; // check $(LazarusDir)\fpc\bin\i386-win32\fpc.exe - if CheckFile(SetDirSeparators('$(LazarusDir)/fpc/bin/$(TargetCPU)-$(TargetOS)/')+ShortCompFile,Result) + if CheckFile(SetDirSeparators('$(LazarusDir)/fpc/bin/'+GetCompiledTargetCPU+'-'+GetCompiledTargetOS+'/')+ShortCompFile,Result) then exit; // check common directories @@ -721,6 +734,10 @@ 'EnvironmentOptions/FPCSourceDirectory/Value'); if Check(AFilename,Result) then exit; + // check environment variable FPCDIR + AFileName := GetEnvironmentVariableUTF8('FPCDIR'); + if Check(AFilename,Result) then exit; + // check history Dirs:=EnvironmentOptions.FPCSourceDirHistory; if Dirs<>nil then @@ -773,6 +790,7 @@ // Windows-only locations: if (GetDefaultSrcOSForTargetOS(GetCompiledTargetOS)='win') then begin // under Windows, make.exe is in the same directory as fpc.exe + // other make.exe are often incompatible if not FileExistsCached(ExtractFilePath(AFilename)+'fpc.exe') then begin Note:=Format(lisThereIsNoFpcExeInTheDirectoryOfUsuallyTheMakeExecu, [ ExtractFilename(AFilename)]); @@ -837,8 +855,11 @@ // Windows-only locations: if (GetDefaultSrcOSForTargetOS(GetCompiledTargetOS)='win') then begin // check make in fpc.exe directory - if CheckFile(SetDirSeparators('$Path($(CompPath))/make.exe'),Result) + if CheckFile(SetDirSeparators('$Path($(CompPath))\make.exe'),Result) then exit; + // check $(LazarusDir)\fpc\bin\i386-win32\fpc.exe + if CheckFile(SetDirSeparators('$(LazarusDir)\fpc\bin\$(TargetCPU)-$(TargetOS)\make.exe'),Result) + then exit; end; // check history diff -Nru lazarus-1.4.4+dfsg/ide/inputfiledialog.pas lazarus-1.6+dfsg/ide/inputfiledialog.pas --- lazarus-1.4.4+dfsg/ide/inputfiledialog.pas 2014-02-18 18:47:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/inputfiledialog.pas 2015-07-04 23:08:00.000000000 +0000 @@ -23,7 +23,7 @@ uses // LCL Classes, SysUtils, Math, Forms, Controls, Dialogs, Buttons, StdCtrls, - FileUtil, LazFileCache, LResources, + LazFileUtils, LazFileCache, LResources, // IDE LazarusIDEStrConsts, TransferMacros, InputHistory, IDEProcs, IDEDialogs; diff -Nru lazarus-1.4.4+dfsg/ide/inputhistory.pas lazarus-1.6+dfsg/ide/inputhistory.pas --- lazarus-1.4.4+dfsg/ide/inputhistory.pas 2014-06-09 07:40:55.000000000 +0000 +++ lazarus-1.6+dfsg/ide/inputhistory.pas 2015-07-07 11:43:38.000000000 +0000 @@ -36,8 +36,9 @@ interface uses - Classes, SysUtils, FileUtil, FileProcs, DiffPatch, IDEProcs, AvgLvlTree, - Laz2_XMLCfg, SynEditTypes, LazConf, Dialogs, LCLProc, IDEDialogs, ProjectIntf; + Classes, SysUtils, FileProcs, LazFileCache, DiffPatch, IDEProcs, + AvgLvlTree, Laz2_XMLCfg, SynEditTypes, LazConf, Dialogs, LazUTF8, IDEDialogs, + ProjectIntf; {$ifdef Windows} {$define CaseInsensitiveFilenames} diff -Nru lazarus-1.4.4+dfsg/ide/inspectchksumchangeddlg.pas lazarus-1.6+dfsg/ide/inspectchksumchangeddlg.pas --- lazarus-1.4.4+dfsg/ide/inspectchksumchangeddlg.pas 2014-07-20 19:47:30.000000000 +0000 +++ lazarus-1.6+dfsg/ide/inspectchksumchangeddlg.pas 2015-08-07 17:20:40.000000000 +0000 @@ -40,13 +40,15 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, - contnrs, StdCtrls, ExtCtrls, ComCtrls, ButtonPanel, - // codetools - CodeCache, CodeToolManager, FileProcs, DirectoryCacher, DefineTemplates, + // RTL + FCL + LCL + Classes, SysUtils, contnrs, + LCLProc, Forms, Controls, StdCtrls, ExtCtrls, ComCtrls, ButtonPanel, + // CodeTools + CodeToolManager, FileProcs, DirectoryCacher, DefineTemplates, + // LazUtils + LazFileUtils, LazFileCache, // IDEIntf - LazIDEIntf, TextTools, IDEMsgIntf, PackageIntf, ProjectIntf, - IDEExternToolIntf, + TextTools, IDEMsgIntf, PackageIntf, ProjectIntf, IDEExternToolIntf, // IDE LazarusIDEStrConsts; @@ -108,7 +110,7 @@ procedure FindUnitOwnerNames(aFile: TICCFile); procedure SearchDirectory(anUnitName: string; Dir: string; IsFPCPath: boolean; Files: TICCFiles); - procedure SearchInFPCFiles(anUnitName, SearchPath: string; Files: TICCFiles); + procedure SearchInFPCFiles(anUnitName: string; Files: TICCFiles); procedure SearchInSearchPath(anUnitName, SearchPath: string; Files: TICCFiles); function SearchUnit(anUnitName, SearchPath: string): TICCFiles; procedure AddNodesForUnit(anUnitName: string; Files: TICCFiles); @@ -128,7 +130,7 @@ public function IsApplicable(Msg: TMessageLine; out Unitname1, Unitname2: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; procedure InitInspectChecksumChangedQuickFixItems; @@ -282,7 +284,7 @@ end; procedure TInspectChksumChgDialog.SearchInFPCFiles( - anUnitName, SearchPath: string; Files: TICCFiles); + anUnitName: string; Files: TICCFiles); var UnitSetID: String; UnitSet: TFPCUnitSetCache; @@ -312,7 +314,7 @@ if (anUnitName='') then exit; SearchInSearchPath(anUnitName,SearchPath,Result); - SearchInFPCFiles(anUnitName,SearchPath,Result); + SearchInFPCFiles(anUnitName,Result); end; procedure TInspectChksumChgDialog.AddNodesForUnit(anUnitName: string; @@ -351,8 +353,7 @@ APackage:=PackageEditingInterface.FindPackageWithName(OwnerName); if APackage<>nil then begin if APackage.IsVirtual then begin - s:=Format(lisCheckTheTargetOSCPULCLWidgetTypeMaybeYouHaveToReco, [ - s]); + s:=Format(lisCheckTheTargetOSCPULCLWidgetTypeMaybeYouHaveToReco, [s]); end else begin s:=Format(lisMaybeYouHaveToRecompileThePackage, [s]); end; @@ -363,6 +364,7 @@ end; end; if PPUCount>1 then begin + // ToDo: Fix uninitialized FileNode. It is initialized inside a loop, this is outside of the loop. InfoTreeView.Items.AddChild(FileNode, lisDuplicatePpuFilesDeleteOneOrMakeSureAllSearchPaths); end; @@ -380,9 +382,8 @@ SearchPath: String; begin FMsg:=aMsg; - REMatches(Msg,'Recompiling ([a-z_][a-z_0-9]*), checksum changed for ([a-z_][a-z_0-9]*)','i'); - FUnit1:=REVar(1); - FUnit2:=REVar(2); + FUnit1:=aUnitName1; + FUnit2:=aUnitName2; FreeAndNil(FUnit1Files); FreeAndNil(FUnit2Files); diff -Nru lazarus-1.4.4+dfsg/ide/invertassigntool.pas lazarus-1.6+dfsg/ide/invertassigntool.pas --- lazarus-1.4.4+dfsg/ide/invertassigntool.pas 2011-11-19 21:21:14.000000000 +0000 +++ lazarus-1.6+dfsg/ide/invertassigntool.pas 2015-03-22 10:17:35.000000000 +0000 @@ -163,7 +163,7 @@ HasLinefeed: Boolean; begin if InText = '' then - Exit; + Exit(''); HasLinefeed := InText[Length(InText)] in [#10,#13]; InLines := TStringList.Create; InLines.Text := InText; diff -Nru lazarus-1.4.4+dfsg/ide/jumphistoryview.pas lazarus-1.6+dfsg/ide/jumphistoryview.pas --- lazarus-1.4.4+dfsg/ide/jumphistoryview.pas 2014-08-12 10:44:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/jumphistoryview.pas 2015-03-10 12:59:28.000000000 +0000 @@ -25,9 +25,9 @@ interface uses - Classes, SysUtils, Forms, Controls, StdCtrls, Menus, LCLProc, + Classes, SysUtils, Forms, Controls, StdCtrls, Menus, CodeToolManager, CodeCache, - IDEOptionDefs, EnvironmentOpts, IDEProcs, LazarusIDEStrConsts, + IDEOptionDefs, EnvironmentOpts, IDEProcs, LazarusIDEStrConsts, LazUTF8, Project, ProjectDefs; type @@ -40,7 +40,7 @@ procedure listHistoryClick(Sender : TObject); procedure listHistoryDblClick(Sender : TObject); procedure listHistoryKeyPress(Sender: TObject; var Key: char); - procedure OnIdle(Sender : TObject; var Done: Boolean); + procedure OnIdle(Sender : TObject; var {%H-}Done: Boolean); private { private declarations } fOnSelectionChanged : TNotifyEvent; @@ -50,8 +50,8 @@ const Line: string): string; procedure InitDisplay; protected - procedure IndexChanged(Sender: TObject; Index: Integer); - procedure ListChanged(Sender: TObject; Index: Integer); + procedure IndexChanged(Sender: TObject; {%H-}Index: Integer); + procedure ListChanged(Sender: TObject; {%H-}Index: Integer); public { public declarations } property SelectedIndex : Integer read GetSelectedIndex; diff -Nru lazarus-1.4.4+dfsg/ide/keymapping.pp lazarus-1.6+dfsg/ide/keymapping.pp --- lazarus-1.4.4+dfsg/ide/keymapping.pp 2015-09-29 22:24:14.000000000 +0000 +++ lazarus-1.6+dfsg/ide/keymapping.pp 2016-02-13 12:36:53.000000000 +0000 @@ -33,7 +33,7 @@ uses Classes, SysUtils, contnrs, Forms, LCLType, LCLProc, AvgLvlTree, Laz2_XMLCfg, - SynEditKeyCmds, SynPluginTemplateEdit, SynPluginSyncroEdit, + SynEditKeyCmds, SynPluginTemplateEdit, SynPluginSyncroEdit, SynPluginMultiCaret, IDECommands, LazarusIDEStrConsts, Debugger; type @@ -218,6 +218,8 @@ function ShiftStateToCfgStr(Shift: TShiftState): string; function KeyValuesToCfgStr(const ShortcutA, ShortcutB: TIDEShortCut): string; +function KeyValuesToCaptionStr(const ShortcutA, ShortcutB: TIDEShortCut; + Brackets: Char = '['): String; function CfgStrToShiftState(const s: string): TShiftState; function CompareLoadedKeyCommands(Data1, Data2: Pointer): integer; @@ -287,7 +289,7 @@ Cmd1, Cmd2: PtrInt; CmdRel: TKeyCommandRelation absolute Key; begin - Pointer(Cmd1):=aCommand; + {%H-}Pointer(Cmd1):=aCommand; Cmd2:=CmdRel.Command; Result:=Cmd1-Cmd2; end; @@ -315,8 +317,8 @@ begin case cmd of ecNone : Result:= dlgEnvNone; - ecLeft : Result:= lisLeft; - ecRight : Result:= lisRight; + ecLeft : Result:= srkmecKeyMapLeft; + ecRight : Result:= srkmecKeyMapRight; ecUp : Result:= lisUp; ecDown : Result:= lisDown; ecWordLeft : Result:= srkmecWordLeft; @@ -412,7 +414,6 @@ ecColumnSelect : Result:= srkmecColumnSelect; ecLineSelect : Result:= srkmecLineSelect; ecAutoCompletion : Result:= srkmecAutoCompletion; - ecUserFirst : Result:= srkmecPrevBookmark; ecSetFreeBookmark : Result:= srkmecSetFreeBookmark; ecClearBookmarkForFile : Result:= srkmecClearBookmarkForFile; ecClearAllBookmark : Result:= srkmecClearAllBookmark; @@ -436,9 +437,25 @@ ecBlockGotoBegin : Result := srkmecBlockGotoBegin; ecBlockGotoEnd : Result := srkmecBlockGotoEnd; + ecZoomOut : Result := srkmecZoomOut; + ecZoomIn : Result := srkmecZoomIn; + ecZoomNorm : Result := dlfMouseSimpleButtonZoomReset; + + // multi caret + ecPluginMultiCaretSetCaret : Result := srkmecPluginMultiCaretSetCaret; + ecPluginMultiCaretUnsetCaret : Result := srkmecPluginMultiCaretUnsetCaret; + ecPluginMultiCaretToggleCaret : Result := srkmecPluginMultiCaretToggleCaret; + ecPluginMultiCaretClearAll : Result := srkmecPluginMultiCaretClearAll; + + ecPluginMultiCaretModeCancelOnMove : Result := srkmecPluginMultiCaretModeCancelOnMove; + ecPluginMultiCaretModeMoveAll : Result := srkmecPluginMultiCaretModeMoveAll; + + // sourcenotebook ecNextEditor : Result:= srkmecNextEditor; ecPrevEditor : Result:= srkmecPrevEditor; + ecPrevEditorInHistory : Result:= srkmecPrevEditorInHistory; + ecNextEditorInHistory : Result:= srkmecNextEditorInHistory; ecMoveEditorLeft : Result:= srkmecMoveEditorLeft; ecMoveEditorRight : Result:= srkmecMoveEditorRight; ecMoveEditorLeftmost : Result:= srkmecMoveEditorLeftmost; @@ -541,6 +558,13 @@ ecJumpToNextError : Result:= lisMenuJumpToNextError; ecJumpToPrevError : Result:= lisMenuJumpToPrevError; ecGotoIncludeDirective : Result:= srkmecGotoIncludeDirective; + ecJumpToInterface : Result:= lisMenuJumpToInterface; + ecJumpToInterfaceUses : Result:= lisMenuJumpToInterfaceUses; + ecJumpToImplementation : Result:= lisMenuJumpToImplementation; + ecJumpToImplementationUses: Result:= lisMenuJumpToImplementationUses; + ecJumpToInitialization : Result:= lisMenuJumpToInitialization; + ecJumpToProcedureHeader : Result:= lisMenuJumpToProcedureHeader; + ecJumpToProcedureBegin : Result:= lisMenuJumpToProcedureBegin; ecOpenFileAtCursor : Result:= srkmecOpenFileAtCursor; ecProcedureList : Result:= lisPListProcedureList; @@ -617,6 +641,7 @@ ecViewProjectForms : Result:= srkmecViewForms; ecViewProjectSource : Result:= lisMenuViewProjectSource; ecProjectOptions : Result:= lisMenuProjectOptions; + ecProjectChangeBuildMode : Result:= lisChangeBuildMode; // run menu (menu string resource) ecCompile : Result:= srkmecCompile; @@ -668,6 +693,7 @@ ecRescanFPCSrcDir : Result:= lisMenuRescanFPCSourceDirectory; ecEditCodeTemplates : Result:= lisMenuEditCodeTemplates; ecCodeToolsDefinesEd : Result:= lisKMCodeToolsDefinesEditor; + ecManageDesktops : Result:= lisDesktops; ecExtToolSettings : Result:= srkmecExtToolSettings; ecManageExamples : Result:= lisMenuExampleProjects; @@ -679,7 +705,7 @@ ecDiff : Result:= srkmecDiff; // window menu - ecManageSourceEditors : Result:= lisSourceEditorWindowManager; + ecManageSourceEditors : Result:= lisSourceEditorWindowManager; // help menu ecAboutLazarus : Result:= lisAboutLazarus; @@ -688,6 +714,7 @@ ecEditContextHelp : Result:= lisMenuEditContextHelp; ecReportingBug : Result:= srkmecReportingBug; ecFocusHint : Result:= lisFocusHint; + ecSmartHint : Result:= lisMenuShowSmartHint; // desginer ecDesignerCopy : Result:= lisDsgCopyComponents; @@ -776,6 +803,35 @@ end; end; +function KeyValuesToCaptionStr(const ShortcutA, ShortcutB: TIDEShortCut; + Brackets: Char): String; + function AddBrakets(S: String): String; + begin + if Brackets = '[' then + Result := '[' + S + ']' + else if Brackets = '(' then + Result := '(' + S + ')' + else if Brackets > #0 then + Result := Brackets + S + Brackets + else + Result := S; + end; +begin + Result := ''; + if (ShortcutA.Key1 = VK_UNKNOWN) and (ShortcutB.Key1 = VK_UNKNOWN) then + Result := Result{ + lisNone2 } + else + if (ShortcutA.Key1 = VK_UNKNOWN) then + Result := Result + AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutB)) + else + if (ShortcutB.Key1 = VK_UNKNOWN) then + Result := Result + AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutA)) + else + Result := Result + AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutA)) + + ' '+lisOr+' ' + + AddBrakets(KeyAndShiftStateToEditorKeyString(ShortcutB)); +end; + function IDEShortCutEmpty(const Key: TIDEShortCut): boolean; begin Result:=(Key.Key1=VK_UNKNOWN) and (Key.Key2=VK_UNKNOWN); @@ -972,6 +1028,15 @@ ecColSelEditorTop: SetSingle(VK_HOME,[ssAlt,ssShift,ssCtrl]); ecColSelEditorBottom: SetSingle(VK_END,[ssAlt,ssShift,ssCtrl]); + // multi caret + ecPluginMultiCaretSetCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]); + ecPluginMultiCaretUnsetCaret: SetSingle(VK_DELETE,[ssShift, ssCtrl]); + //ecPluginMultiCaretToggleCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]); + ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl]); + + ecPluginMultiCaretModeCancelOnMove: SetCombo(VK_Q,[ssShift, ssCtrl], VK_X,[ssShift, ssCtrl]); + ecPluginMultiCaretModeMoveAll: SetCombo(VK_Q,[ssShift, ssCtrl], VK_M,[ssShift, ssCtrl]); + // editing ecBlockIndent: SetCombo(VK_I,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_I,[]); ecBlockUnindent: SetCombo(VK_U,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_U,[]); @@ -1099,6 +1164,8 @@ // source notebook ecNextEditor: SetSingle(VK_TAB,[ssCtrl]); ecPrevEditor: SetSingle(VK_TAB,[ssShift,ssCtrl]); + ecPrevEditorInHistory: SetSingle(VK_OEM_3,[ssCtrl]);//~ + ecNextEditorInHistory: SetSingle(VK_OEM_3,[ssShift,ssCtrl]);//~ ecResetDebugger: SetSingle(VK_UNKNOWN,[]); ecToggleBreakPoint: SetSingle(VK_F5,[]); ecMoveEditorLeft: SetSingle(VK_UNKNOWN,[]); @@ -1203,6 +1270,7 @@ ecViewProjectForms: SetSingle(VK_F12,[ssShift]); ecViewProjectSource: SetSingle(VK_UNKNOWN,[]); ecProjectOptions: SetSingle(VK_F11,[ssShift,ssCtrl]); + ecProjectChangeBuildMode:SetSingle(VK_UNKNOWN,[]); // run menu ecCompile: SetSingle(VK_F9,[ssCtrl]); @@ -1425,6 +1493,15 @@ ecColSelEditorTop: SetSingle(VK_HOME, [ssAlt,ssShift,ssCtrl]); ecColSelEditorBottom: SetSingle(VK_END, [ssAlt,ssShift,ssCtrl]); + // multi caret + ecPluginMultiCaretSetCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]); + ecPluginMultiCaretUnsetCaret: SetSingle(VK_DELETE,[ssShift, ssCtrl]); + //ecPluginMultiCaretToggleCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]); + ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl], VK_ESCAPE,[ssShift]); + + ecPluginMultiCaretModeCancelOnMove: SetCombo(VK_Q,[ssShift, ssCtrl], VK_X,[ssShift, ssCtrl]); + ecPluginMultiCaretModeMoveAll: SetCombo(VK_Q,[ssShift, ssCtrl], VK_M,[ssShift, ssCtrl]); + // editing ecInsertMode: SetSingle(VK_V,[ssCtrl], VK_INSERT,[]); ecBlockIndent: SetCombo(VK_K,[ssCtrl],VK_I,[]); @@ -1524,6 +1601,8 @@ // source notebook ecNextEditor: SetSingle(VK_F6,[], VK_TAB,[ssCtrl]); ecPrevEditor: SetSingle(VK_F6,[ssShift], VK_TAB,[ssShift,ssCtrl]); + ecPrevEditorInHistory: SetSingle(VK_OEM_3,[ssCtrl]);//~ + ecNextEditorInHistory: SetSingle(VK_OEM_3,[ssShift,ssCtrl]);//~ ecResetDebugger: SetSingle(VK_UNKNOWN,[]); ecToggleBreakPoint: SetSingle(VK_UNKNOWN,[]); ecMoveEditorLeft: SetSingle(VK_UNKNOWN,[]); @@ -1625,6 +1704,7 @@ ecViewProjectForms: SetSingle(VK_F12,[ssShift]); ecViewProjectSource: SetSingle(VK_UNKNOWN,[]); ecProjectOptions: SetSingle(VK_F11,[ssShift,ssCtrl]); + ecProjectChangeBuildMode:SetSingle(VK_UNKNOWN,[]); // run menu ecCompile: SetSingle(VK_F9,[ssCtrl]); @@ -2031,6 +2111,15 @@ ecColSelEditorTop: SetSingle(VK_HOME,[ssAlt,ssShift,ssCtrl]); ecColSelEditorBottom: SetSingle(VK_END,[ssAlt,ssShift,ssCtrl]); + // multi caret + ecPluginMultiCaretSetCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]); + ecPluginMultiCaretUnsetCaret: SetSingle(VK_DELETE,[ssShift, ssCtrl]); + //ecPluginMultiCaretToggleCaret: SetSingle(VK_INSERT,[ssShift, ssCtrl]); + ecPluginMultiCaretClearAll: SetSingle(VK_ESCAPE,[ssShift, ssCtrl], VK_ESCAPE,[ssShift]); + + ecPluginMultiCaretModeCancelOnMove: SetCombo(VK_Q,[ssShift, ssCtrl], VK_X,[ssShift, ssCtrl]); + ecPluginMultiCaretModeMoveAll: SetCombo(VK_Q,[ssShift, ssCtrl], VK_M,[ssShift, ssCtrl]); + // editing ecBlockIndent: SetCombo(VK_I,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_I,[]); ecBlockUnindent: SetCombo(VK_U,[ssCtrl],VK_UNKNOWN,[], VK_K,[SSCtrl],VK_U,[]); @@ -2237,6 +2326,7 @@ ecViewProjectForms: SetSingle(VK_U,[ssShift,ssCtrl]); ecViewProjectSource: SetSingle(VK_UNKNOWN,[]); ecProjectOptions: SetSingle(VK_UNKNOWN,[]); + ecProjectChangeBuildMode:SetSingle(VK_UNKNOWN,[]); // run menu ecCompile: SetSingle(VK_B,[ssMeta]); @@ -2300,6 +2390,7 @@ ecEditContextHelp: SetSingle(VK_F1,[ssShift,ssCtrl], VK_HELP,[ssCtrl]); ecReportingBug: SetSingle(VK_UNKNOWN,[]); ecFocusHint: SetSingle(VK_UNKNOWN,[]); + ecSmartHint: SetSingle(VK_UNKNOWN,[]); // designer ecDesignerCopy: SetSingle(VK_C,[ssMeta]); @@ -2575,6 +2666,15 @@ AddDefault(C, 'Column Select to absolute beginning', srkmecColSelEditorTop, ecColSelEditorTop); AddDefault(C, 'Column Select to absolute end', srkmecColSelEditorBottom, ecColSelEditorBottom); + // multi caret + C:=Categories[AddCategory('MultiCaret', srkmCatMultiCaret, nil)]; + AddDefault(C, 'Add extra caret', srkmecPluginMultiCaretSetCaret, ecPluginMultiCaretSetCaret); + AddDefault(C, 'Remove extra caret', srkmecPluginMultiCaretUnsetCaret, ecPluginMultiCaretUnsetCaret); + AddDefault(C, 'Toggle extra caret', srkmecPluginMultiCaretToggleCaret, ecPluginMultiCaretToggleCaret); + AddDefault(C, 'Clear all extra carets', srkmecPluginMultiCaretClearAll, ecPluginMultiCaretClearAll); + AddDefault(C, 'Cursor keys clear all extra carets', srkmecPluginMultiCaretModeCancelOnMove, ecPluginMultiCaretModeCancelOnMove); + AddDefault(C, 'Cursor keys move all extra carets', srkmecPluginMultiCaretModeMoveAll, ecPluginMultiCaretModeMoveAll); + // editing - without menu items in the IDE bar C:=Categories[AddCategory(CommandCategoryTextEditingName,srkmCatEditing, IDECmdScopeSrcEditOnly)]; @@ -2713,6 +2813,13 @@ AddDefault(C, 'Find block other end', srkmecFindBlockOtherEnd, ecFindBlockOtherEnd); AddDefault(C, 'Find block start', srkmecFindBlockStart, ecFindBlockStart); AddDefault(C, 'Goto include directive', lisMenuGotoIncludeDirective, ecGotoIncludeDirective); + AddDefault(C, 'Jump to Interface', lisMenuJumpToInterface, ecJumpToInterface); + AddDefault(C, 'Jump to Interface uses', lisMenuJumpToInterfaceUses, ecJumpToInterfaceUses); + AddDefault(C, 'Jump to Implementation', lisMenuJumpToImplementation, ecJumpToImplementation); + AddDefault(C, 'Jump to Implementation uses', lisMenuJumpToImplementationUses, ecJumpToImplementationUses); + AddDefault(C, 'Jump to Initialization', lisMenuJumpToInitialization, ecJumpToInitialization); + AddDefault(C, 'Jump to Procedure header', lisMenuJumpToProcedureHeader, ecJumpToProcedureHeader); + AddDefault(C, 'Jump to Procedure begin', lisMenuJumpToProcedureBegin, ecJumpToProcedureBegin); AddDefault(C, 'Show abstract methods', srkmecShowAbstractMethods, ecShowAbstractMethods); AddDefault(C, 'Remove empty methods', srkmecRemoveEmptyMethods, ecRemoveEmptyMethods); AddDefault(C, 'Remove unused units', srkmecRemoveUnusedUnits, ecRemoveUnusedUnits); @@ -2804,6 +2911,8 @@ C:=Categories[AddCategory('SourceNotebook',srkmCatSrcNoteBook,IDECmdScopeSrcEdit)]; AddDefault(C, 'Go to next editor', srkmecNextEditor, ecNextEditor); AddDefault(C, 'Go to prior editor', srkmecPrevEditor, ecPrevEditor); + AddDefault(C, 'Go to previous editor in history', srkmecPrevEditorInHistory, ecPrevEditorInHistory); + AddDefault(C, 'Go to next editor in history', srkmecNextEditorInHistory, ecNextEditorInHistory); AddDefault(C, 'Add break point', srkmecToggleBreakPoint, ecToggleBreakPoint); AddDefault(C, 'Remove break point', srkmecRemoveBreakPoint, ecRemoveBreakPoint); AddDefault(C, 'Move editor left', srkmecMoveEditorLeft, ecMoveEditorLeft); @@ -2834,6 +2943,10 @@ AddDefault(C, 'Lock editor', srkmecLockEditor, ecLockEditor); + AddDefault(C, 'Zoom Reset', dlfMouseSimpleButtonZoomReset, ecZoomNorm); + AddDefault(C, 'Zoom In', srkmecZoomIn, ecZoomIn); + AddDefault(C, 'Zoom Out', srkmecZoomOut, ecZoomOut); + // file menu C:=Categories[AddCategory('FileMenu',srkmCatFileMenu,nil)]; AddDefault(C, 'New', lisNew, ecNew); @@ -2896,6 +3009,7 @@ AddDefault(C, 'View Forms', lisHintViewForms, ecViewProjectForms); AddDefault(C, 'View project source', lisKMViewProjectSource, ecViewProjectSource); AddDefault(C, 'View project options', lisKMViewProjectOptions, ecProjectOptions); + AddDefault(C, 'Change build mode', lisChangeBuildMode, ecProjectChangeBuildMode); // run menu C:=Categories[AddCategory('RunMenu',srkmCatRunMenu,nil)]; @@ -2951,6 +3065,7 @@ AddDefault(C, 'Rescan FPC source directory', lisMenuRescanFPCSourceDirectory, ecRescanFPCSrcDir); AddDefault(C, 'Edit Code Templates', lisKMEditCodeTemplates, ecEditCodeTemplates); AddDefault(C, 'CodeTools defines editor', lisKMCodeToolsDefinesEditor, ecCodeToolsDefinesEd); + AddDefault(C, 'Manage desktops', dlgManageDesktops, ecManageDesktops); AddDefault(C, 'External Tools settings', lisKMExternalToolsSettings, ecExtToolSettings); AddDefault(C, 'Example Projects', lisKMExampleProjects, ecManageExamples); @@ -2977,6 +3092,7 @@ AddDefault(C, 'Edit context sensitive help', lisKMEditContextSensitiveHelp, ecEditContextHelp); AddDefault(C, 'Reporting a bug', srkmecReportingBug, ecReportingBug); AddDefault(C, 'Focus hint', lisFocusHint, ecFocusHint); + AddDefault(C, 'Context sensitive smart hint', lisMenuShowSmartHint, ecSmartHint); // designer - without menu items in the IDE bar (at least not directly) C:=Categories[AddCategory('Designer',lisKeyCatDesigner,IDECmdScopeDesignerOnly)]; @@ -3105,6 +3221,7 @@ if (ExtToolRelation.Command>=ecExtToolFirst) and (ExtToolRelation.Command<=ecExtToolLast) then begin fRelations.Remove(ExtToolRelation); + fCmdRelCache.Remove(ExtToolRelation); ExtToolCat.Delete(i); dec(fExtToolCount); end; @@ -3399,7 +3516,7 @@ var AVLNode: TAvgLvlTreeNode; begin - AVLNode:=fCmdRelCache.FindKey(Pointer(PtrUInt(ACommand)), @CompareCmdWithCmdRel); + AVLNode:=fCmdRelCache.FindKey({%H-}Pointer(PtrUInt(ACommand)), @CompareCmdWithCmdRel); if Assigned(AVLNode) then Result:=TKeyCommandRelation(AVLNode.Data) else @@ -3717,6 +3834,7 @@ procedure TKeyCommandRelationList.RemoveCommand(ACommand: TIDECommand); begin fRelations.Remove(ACommand); + fCmdRelCache.Remove(ACommand); end; function TKeyCommandRelationList.GetCategory(Index: integer): TIDECommandCategory; diff -Nru lazarus-1.4.4+dfsg/ide/keymapschemedlg.pas lazarus-1.6+dfsg/ide/keymapschemedlg.pas --- lazarus-1.4.4+dfsg/ide/keymapschemedlg.pas 2011-06-22 07:52:10.000000000 +0000 +++ lazarus-1.6+dfsg/ide/keymapschemedlg.pas 2015-03-10 13:27:41.000000000 +0000 @@ -57,9 +57,6 @@ {$R *.lfm} -uses - IDEContextHelpEdit; - function ShowChooseKeySchemeDialog(var NewScheme: string): TModalResult; var ChooseKeySchemeDlg: TChooseKeySchemeDlg; diff -Nru lazarus-1.4.4+dfsg/ide/keymapshortcutdlg.lfm lazarus-1.6+dfsg/ide/keymapshortcutdlg.lfm --- lazarus-1.4.4+dfsg/ide/keymapshortcutdlg.lfm 2015-01-07 21:21:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/keymapshortcutdlg.lfm 2015-05-26 11:09:12.000000000 +0000 @@ -5,12 +5,15 @@ Width = 545 ActiveControl = BtnPanel AutoSize = True + BorderIcons = [biSystemMenu] + BorderStyle = bsDialog Caption = 'ShortCutDialog' ClientHeight = 260 ClientWidth = 545 OnCreate = FormCreate OnShow = FormShow - LCLVersion = '1.3' + Position = poScreenCenter + LCLVersion = '1.5' object PrimaryGroupBox: TGroupBox Left = 6 Height = 93 @@ -34,7 +37,7 @@ object BtnPanel: TButtonPanel AnchorSideTop.Side = asrBottom Left = 6 - Height = 28 + Height = 26 Top = 216 Width = 533 Align = alTop diff -Nru lazarus-1.4.4+dfsg/ide/lazadvancedipc.pp lazarus-1.6+dfsg/ide/lazadvancedipc.pp --- lazarus-1.4.4+dfsg/ide/lazadvancedipc.pp 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazadvancedipc.pp 2015-11-12 12:55:30.000000000 +0000 @@ -0,0 +1,789 @@ +{ + This file is part of the Free Component Library (FCL) + Copyright (c) 2015 by Ondrej Pokorny + + Unit implementing two-way (request/response) IPC between 1 server and more + clients, based on files. + The order of message processing is not deterministic (if there are more + pending messages, the server won't process them in the order they have + been sent to the server. + SendRequest and PostRequest+PeekResponse sequences from 1 client are + blocking and processed in correct order. + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + *** + This unit is a duplicate of AdvancedIPC.pp from FPC (added in 3.1.1). + It should be removed when support of older FPC versions is dropped. + + **********************************************************************} + +unit LazAdvancedIPC; + +{$mode objfpc} +{$H+} + +interface + +uses + {$IFDEF UNIX} + baseunix, + {$endif} + sysutils, Classes, LazFileUtils + {$IF FPC_FULLVERSION<20701} + ,LazUTF8SysUtils + {$ENDIF} + ; + +const + HEADER_VERSION = 2; + +type + TMessageType = LongInt; + TMessageHeader = packed record + HeaderVersion: Byte; + FileLock: Byte;//0 = unlocked, 1 = locked + MsgType: TMessageType; + MsgLen: Integer; + MsgVersion: Integer; + end; + + TFileHandle = Classes.THandle; + + TReleaseHandleStream = class(THandleStream) + public + destructor Destroy; override; + end; + + TIPCBase = class(TComponent) + private + FGlobal: Boolean; + FFileName: string; + FServerID: string; + FMessageVersion: Integer; + protected + class function ServerIDToFileName(const aServerID: string; const aGlobal: Boolean): string; + function GetResponseFileName(const aRequestID: Integer): string; + function GetResponseFileName(const aRequestFileName: string): string; + function GetPeekedRequestFileName(const aRequestID: Integer): string; + function GetPeekedRequestFileName(const aRequestFileName: string): string; + function GetRequestPrefix: string; + function GetRequestFileName(const aRequestID: Integer): string; + function RequestFileNameToID(const aFileName: string): Integer; + function RequestExists(const aRequestFileName: string): Boolean; + + procedure SetServerID(const aServerID: string); virtual; + procedure SetGlobal(const aGlobal: Boolean); virtual; + + function CanReadMessage(const aFileName: string; out outStream: TStream; out outMsgType: TMessageType; out outMsgLen: Integer): Boolean; + procedure DoPostMessage(const aFileName: string; const aMsgType: TMessageType; const aStream: TStream); overload; + procedure DoPostMessage(const aFileStream: TFileStream; const aMsgType: TMessageType; const aStream: TStream); overload; + function DoReadMessage(const aFileName: string; const aStream: TStream; out outMsgType: TMessageType): Boolean; + + property FileName: string read FFileName; + public + class procedure FindRunningServers(const aServerIDPrefix: string; + const outServerIDs: TStrings; const aGlobal: Boolean = False); + class function ServerRunning(const aServerID: string; const aGlobal: Boolean = False): Boolean; overload; + public + //ServerID: name/ID of the server. Use only ['a'..'z', 'A'..'Z', '0'..'9', '_'] characters + property ServerID: string read FServerID write SetServerID; + //Global: if true, processes from different users can communicate; false, processes only from current user can communicate + property Global: Boolean read FGlobal write SetGlobal; + //MessageVersion: only messages with the same MessageVersion can be delivered between server/client + property MessageVersion: Integer read FMessageVersion write FMessageVersion; + end; + + TIPCClient = class(TIPCBase) + private + FLastRequestID: Integer; + + function CreateUniqueRequest(out outFileStream: TFileStream): Integer; + function DoPeekResponse(const aResponseFileName: string; const aStream: TStream; out outMsgType: TMessageType; const aTimeOut: Integer): Boolean; + public + constructor Create(aOwner: TComponent); override; + public + //post request to server, do not wait until request is peeked; returns request ID + function PostRequest(const aMsgType: TMessageType; const aStream: TStream): Integer; + //send request to server, wait until request is peeked; returns True if request was peeked within the aTimeOut limit + function SendRequest(const aMsgType: TMessageType; const aStream: TStream; const aTimeOut: Integer): Boolean; + function SendRequest(const aMsgType: TMessageType; const aStream: TStream; const aTimeOut: Integer; out outRequestID: Integer): Boolean; + //peek a response from last request from this client + function PeekResponse(const aStream: TStream; out outMsgType: TMessageType): Boolean; overload; + function PeekResponse(const aStream: TStream; out outMsgType: TMessageType; const aTimeOut: Integer): Boolean; overload; + //peek a response from request by ID + function PeekResponse(const aRequestID: Integer; const aStream: TStream; out outMsgType: TMessageType): Boolean; overload; + function PeekResponse(const aRequestID: Integer; const aStream: TStream; out outMsgType: TMessageType; const aTimeOut: Integer): Boolean; overload; + //delete last request from this client, returns true if request file existed and was deleted + function DeleteRequest: Boolean; overload; + //delete request by ID, returns true if request existed file and was deleted + function DeleteRequest(const aRequestID: Integer): Boolean; overload; + //check if server is running + function ServerRunning: Boolean; overload; + end; + + TIPCServer = class(TIPCBase) + private + FFileHandle: TFileHandle; + FActive: Boolean; + + function FindFirstRequest(out outFileName: string; out outStream: TStream; out outMsgType: TMessageType; out outMsgLen: Integer): Integer; + + protected + procedure SetServerID(const aServerID: string); override; + procedure SetGlobal(const aGlobal: Boolean); override; + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + public + //peek request and read the message into a stream + function PeekRequest(const aStream: TStream; out outMsgType: TMessageType): Boolean; overload; + function PeekRequest(const aStream: TStream; out outRequestID: Integer; out outMsgType: TMessageType): Boolean; overload; + function PeekRequest(const aStream: TStream; out outRequestID: Integer; out outMsgType: TMessageType; const aTimeOut: Integer): Boolean; overload; + //only peek request, you have to read/delete the request manually with ReadRequest/DeleteRequest + function PeekRequest(out outMsgType: TMessageType): Boolean; overload; + function PeekRequest(out outRequestID: Integer; out outMsgType: TMessageType): Boolean; overload; + function PeekRequest(out outRequestID: Integer; out outMsgType: TMessageType; const aTimeOut: Integer): Boolean; overload; + //read a peeked request (that hasn't been read yet) + function ReadRequest(const aRequestID: Integer; const aStream: TStream): Boolean; + //delete a peeked request (that hasn't been read yet), returns true if request file existed and was deleted + function DeleteRequest(const aRequestID: Integer): Boolean; + + //post response to a request + procedure PostResponse(const aRequestID: Integer; const aMsgType: TMessageType; const aStream: TStream); + + //find the highest request ID from all pending requests + function FindHighestPendingRequestId: Integer; + //get the pending request count + function GetPendingRequestCount: Integer; + + //start server: returns true if unique and started + function StartServer(const aDeletePendingRequests: Boolean = True): Boolean; + //stop server: returns true if stopped + function StopServer(const aDeletePendingRequests: Boolean = True): Boolean; + + //delete all pending requests and responses + procedure DeletePendingRequests; + public + //true if server runs (was started) + property Active: Boolean read FActive; + end; + + EICPException = class(Exception); + +resourcestring + SErrInvalidServerID = 'Invalid server ID "%s". Please use only alphanumerical characters and underlines.'; + SErrSetGlobalActive = 'You cannot change the global property when the server is active.'; + SErrSetServerIDActive = 'You cannot change the server ID when the server is active.'; + +implementation + +type + TIPCSearchRec = {$IF FPC_FULLVERSION>=20701}TRawByteSearchRec{$ELSE}TSearchRec{$ENDIF}; + +const + {$IFDEF UNIX} + GLOBAL_RIGHTS = S_IRUSR or S_IWUSR or S_IRGRP or S_IWGRP or S_IROTH or S_IWOTH; + {$ELSE} + GLOBAL_RIGHTS = 0; + {$ENDIF} + +var + CreateUniqueRequestCritSec: TRTLCriticalSection; + +{ TIPCBase } + +function TIPCBase.CanReadMessage(const aFileName: string; out + outStream: TStream; out outMsgType: TMessageType; out outMsgLen: Integer + ): Boolean; +var + xFileHandle: TFileHandle; + xHeader: TMessageHeader; +begin + outStream := nil; + outMsgType := -1; + outMsgLen := 0; + Result := FileExists(aFileName); + if not Result then + Exit; + + xFileHandle := FileOpen(aFileName, fmOpenRead or fmShareExclusive); + Result := xFileHandle <> feInvalidHandle; + if not Result then + Exit; + + outStream := TReleaseHandleStream.Create(xFileHandle); + + Result := (outStream.Size >= SizeOf(xHeader)); + if not Result then + begin + FreeAndNil(outStream); + Exit; + end; + + outStream.ReadBuffer(xHeader{%H-}, SizeOf(xHeader)); + Result := + (xHeader.HeaderVersion = HEADER_VERSION) and (xHeader.FileLock = 0) and + (xHeader.MsgVersion = MessageVersion) and + (outStream.Size = Int64(SizeOf(xHeader))+Int64(xHeader.MsgLen)); + if not Result then + begin + FreeAndNil(outStream); + Exit; + end; + outMsgType := xHeader.MsgType; + outMsgLen := xHeader.MsgLen; +end; + +function TIPCBase.DoReadMessage(const aFileName: string; + const aStream: TStream; out outMsgType: TMessageType): Boolean; +var + xStream: TStream; + xMsgLen: Integer; +begin + aStream.Size := 0; + xStream := nil; + try + Result := CanReadMessage(aFileName, xStream, outMsgType, xMsgLen); + if Result then + begin + if xMsgLen > 0 then + aStream.CopyFrom(xStream, xMsgLen); + FreeAndNil(xStream); + aStream.Position := 0; + DeleteFile(aFileName); + end; + finally + xStream.Free; + end; +end; + +function TIPCBase.RequestExists(const aRequestFileName: string): Boolean; +begin + Result := + (FileExists(aRequestFileName) or + FileExists(GetResponseFileName(aRequestFileName)) or + FileExists(GetPeekedRequestFileName(aRequestFileName))); +end; + +class function TIPCBase.ServerRunning(const aServerID: string; + const aGlobal: Boolean): Boolean; +var + xServerFileHandle: TFileHandle; + xFileName: String; +begin + xFileName := ServerIDToFileName(aServerID, aGlobal); + Result := FileExists(xFileName); + if Result then + begin//+ check -> we should not be able to access the file + xServerFileHandle := FileCreate(xFileName, fmOpenReadWrite or fmShareExclusive, GLOBAL_RIGHTS); + Result := (xServerFileHandle=feInvalidHandle); + if not Result then + FileClose(xServerFileHandle); + end; +end; + +class function TIPCBase.ServerIDToFileName(const aServerID: string; + const aGlobal: Boolean): string; +begin + Result := GetTempDir(aGlobal)+aServerID; +end; + +procedure TIPCBase.SetGlobal(const aGlobal: Boolean); +begin + if FGlobal = aGlobal then Exit; + + FGlobal := aGlobal; + FFileName := ServerIDToFileName(FServerID, FGlobal); +end; + +procedure TIPCBase.DoPostMessage(const aFileName: string; + const aMsgType: TMessageType; const aStream: TStream); +var + xStream: TFileStream; +begin + xStream := TFileStream.Create(aFileName, fmCreate or fmShareExclusive, GLOBAL_RIGHTS); + try + DoPostMessage(xStream, aMsgType, aStream); + finally + xStream.Free; + end; +end; + +procedure TIPCBase.DoPostMessage(const aFileStream: TFileStream; + const aMsgType: TMessageType; const aStream: TStream); +var + xHeader: TMessageHeader; +begin + xHeader.HeaderVersion := HEADER_VERSION; + xHeader.FileLock := 1;//locking + xHeader.MsgType := aMsgType; + if Assigned(aStream) then + xHeader.MsgLen := aStream.Size-aStream.Position + else + xHeader.MsgLen := 0; + xHeader.MsgVersion := MessageVersion; + + aFileStream.WriteBuffer(xHeader, SizeOf(xHeader)); + if Assigned(aStream) and (aStream.Size-aStream.Position > 0) then + aFileStream.CopyFrom(aStream, aStream.Size-aStream.Position); + + aFileStream.Position := 0;//unlocking + xHeader.FileLock := 0; + aFileStream.WriteBuffer(xHeader, SizeOf(xHeader)); + aFileStream.Seek(0, soEnd); +end; + +function TIPCBase.RequestFileNameToID(const aFileName: string): Integer; +begin + //the function prevents all responses/temp files to be handled + //only valid response files are returned + if (Length(aFileName) > 9) and (aFileName[Length(aFileName)-8] = '-') then + Result := StrToIntDef('$'+Copy(aFileName, Length(aFileName)-7, 8), -1) + else + Result := -1; +end; + +class procedure TIPCBase.FindRunningServers(const aServerIDPrefix: string; + const outServerIDs: TStrings; const aGlobal: Boolean); +var + xRec: TIPCSearchRec; +begin + if FindFirstUTF8(ServerIDToFileName(aServerIDPrefix+AllFilesMask, aGlobal), faAnyFile, xRec) = 0 then + begin + repeat + if (Pos('-', xRec.Name) = 0) and//file that we found is a pending message + ServerRunning(xRec.Name, aGlobal) + then + outServerIDs.Add(xRec.Name); + until FindNextUTF8(xRec) <> 0; + end; + FindCloseUTF8(xRec); +end; + +function TIPCBase.GetPeekedRequestFileName(const aRequestID: Integer): string; +begin + Result := GetPeekedRequestFileName(GetRequestFileName(aRequestID)); +end; + +function TIPCBase.GetPeekedRequestFileName(const aRequestFileName: string + ): string; +begin + Result := aRequestFileName+'-t'; +end; + +function TIPCBase.GetRequestFileName(const aRequestID: Integer): string; +begin + Result := GetRequestPrefix+IntToHex(aRequestID, 8); +end; + +function TIPCBase.GetRequestPrefix: string; +begin + Result := FFileName+'-'; +end; + +function TIPCBase.GetResponseFileName(const aRequestID: Integer): string; +begin + Result := GetResponseFileName(GetRequestFileName(aRequestID)); +end; + +function TIPCBase.GetResponseFileName(const aRequestFileName: string): string; +begin + Result := aRequestFileName+'-r'; +end; + +procedure TIPCBase.SetServerID(const aServerID: string); +var + I: Integer; +begin + if FServerID = aServerID then Exit; + + for I := 1 to Length(aServerID) do + if not (aServerID[I] in ['a'..'z', 'A'..'Z', '0'..'9', '_']) then + raise EICPException.CreateFmt(SErrInvalidServerID , [aServerID]); + + FServerID := aServerID; + + FFileName := ServerIDToFileName(FServerID, FGlobal); +end; + +{ TIPCClient } + +constructor TIPCClient.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + FLastRequestID := -1; +end; + +function TIPCClient.DeleteRequest(const aRequestID: Integer): Boolean; +var + xRequestFileName: string; +begin + xRequestFileName := GetRequestFileName(aRequestID); + Result := DeleteFile(xRequestFileName); + if (aRequestID = FLastRequestID) and not FileExists(xRequestFileName) then + FLastRequestID := -1; +end; + +function TIPCClient.DeleteRequest: Boolean; +begin + if FLastRequestID >= 0 then + Result := DeleteRequest(FLastRequestID) + else + Result := False; +end; + +function TIPCClient.DoPeekResponse(const aResponseFileName: string; + const aStream: TStream; out outMsgType: TMessageType; const aTimeOut: Integer + ): Boolean; +var + xStart: QWord; +begin + aStream.Size := 0; + Result := False; + xStart := GetTickCount64; + repeat + if DoReadMessage(aResponseFileName, aStream, outMsgType) then + Exit(True) + else if aTimeOut > 20 then + Sleep(10); + until (GetTickCount64-xStart > aTimeOut); +end; + +function TIPCClient.CreateUniqueRequest(out outFileStream: TFileStream): Integer; +var + xFileName: string; +begin + outFileStream := nil; + EnterCriticalsection(CreateUniqueRequestCritSec); + try + Randomize; + repeat + //if Randomize/Random is started from 2 processes at exactly same moment, it returns the same number! -> prevent duplicates by xor GetProcessId + //the result must be of range 0..$7FFFFFFF (High(Integer)) + Result := Integer((PtrInt(Random($7FFFFFFF)) xor {%H-}PtrInt(GetProcessID)) and $7FFFFFFF); + xFileName := GetRequestFileName(Result); + until not RequestExists(xFileName); + + outFileStream := TFileStream.Create(xFileName, fmCreate or fmShareExclusive, GLOBAL_RIGHTS); + finally + LeaveCriticalsection(CreateUniqueRequestCritSec); + end; +end; + +function TIPCClient.PeekResponse(const aRequestID: Integer; + const aStream: TStream; out outMsgType: TMessageType): Boolean; +begin + Result := DoReadMessage(GetResponseFileName(aRequestID), aStream, outMsgType); +end; + +function TIPCClient.PeekResponse(const aRequestID: Integer; + const aStream: TStream; out outMsgType: TMessageType; const aTimeOut: Integer + ): Boolean; +begin + Result := DoPeekResponse(GetResponseFileName(aRequestID), aStream, outMsgType, aTimeOut); +end; + +function TIPCClient.PeekResponse(const aStream: TStream; out + outMsgType: TMessageType): Boolean; +begin + Result := DoReadMessage(GetResponseFileName(FLastRequestID), aStream, outMsgType); +end; + +function TIPCClient.PeekResponse(const aStream: TStream; out + outMsgType: TMessageType; const aTimeOut: Integer): Boolean; +begin + Result := DoPeekResponse(GetResponseFileName(FLastRequestID), aStream, outMsgType, aTimeOut); +end; + +function TIPCClient.PostRequest(const aMsgType: TMessageType; + const aStream: TStream): Integer; +var + xRequestFileStream: TFileStream; +begin + xRequestFileStream := nil; + try + Result := CreateUniqueRequest(xRequestFileStream); + DoPostMessage(xRequestFileStream, aMsgType, aStream); + finally + xRequestFileStream.Free; + end; + FLastRequestID := Result; +end; + +function TIPCClient.SendRequest(const aMsgType: TMessageType; + const aStream: TStream; const aTimeOut: Integer): Boolean; +var + xRequestID: Integer; +begin + Result := SendRequest(aMsgType, aStream, aTimeOut, xRequestID); +end; + +function TIPCClient.SendRequest(const aMsgType: TMessageType; + const aStream: TStream; const aTimeOut: Integer; out outRequestID: Integer + ): Boolean; +var + xStart: QWord; + xRequestFileName: string; +begin + outRequestID := PostRequest(aMsgType, aStream); + Result := False; + + xRequestFileName := GetRequestFileName(outRequestID); + xStart := GetTickCount64; + repeat + if not FileExists(xRequestFileName) then + Exit(True) + else if aTimeOut > 20 then + Sleep(10); + until (GetTickCount64-xStart > aTimeOut); +end; + +function TIPCClient.ServerRunning: Boolean; +begin + Result := ServerRunning(ServerID, Global); +end; + +{ TReleaseHandleStream } + +destructor TReleaseHandleStream.Destroy; +begin + FileClose(Handle); + + inherited Destroy; +end; + +{ TIPCServer } + +procedure TIPCServer.DeletePendingRequests; +var + xRec: TIPCSearchRec; + xDir: string; +begin + xDir := ExtractFilePath(FFileName); + if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then + begin + repeat + DeleteFile(xDir+xRec.Name); + until FindNextUTF8(xRec) <> 0; + end; + FindCloseUTF8(xRec); +end; + +function TIPCServer.DeleteRequest(const aRequestID: Integer): Boolean; +begin + Result := DeleteFile(GetPeekedRequestFileName(aRequestID)); +end; + +constructor TIPCServer.Create(aOwner: TComponent); +begin + inherited Create(aOwner); + + FFileHandle := feInvalidHandle; +end; + +destructor TIPCServer.Destroy; +begin + if Active then + StopServer; + + inherited Destroy; +end; + +function TIPCServer.FindFirstRequest(out outFileName: string; out + outStream: TStream; out outMsgType: TMessageType; out outMsgLen: Integer + ): Integer; +var + xRec: TIPCSearchRec; +begin + outFileName := ''; + outStream := nil; + outMsgType := -1; + outMsgLen := 0; + Result := -1; + if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then + begin + repeat + Result := RequestFileNameToID(xRec.Name); + if Result >= 0 then + begin + outFileName := GetRequestFileName(Result); + if not CanReadMessage(outFileName, outStream, outMsgType, outMsgLen) then + Result := -1; + end; + until (Result >= 0) or (FindNextUTF8(xRec) <> 0); + end; + FindCloseUTF8(xRec); +end; + +function TIPCServer.FindHighestPendingRequestId: Integer; +var + xRec: TIPCSearchRec; + xRequestID: LongInt; +begin + Result := -1; + if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then + begin + repeat + xRequestID := RequestFileNameToID(xRec.Name); + if xRequestID > Result then + Result := xRequestID; + until FindNextUTF8(xRec) <> 0; + end; + FindCloseUTF8(xRec); +end; + +function TIPCServer.GetPendingRequestCount: Integer; +var + xRec: TIPCSearchRec; +begin + Result := 0; + if FindFirstUTF8(GetRequestPrefix+AllFilesMask, faAnyFile, xRec) = 0 then + begin + repeat + if RequestFileNameToID(xRec.Name) >= 0 then + Inc(Result); + until FindNextUTF8(xRec) <> 0; + end; + FindCloseUTF8(xRec); +end; + +function TIPCServer.PeekRequest(out outRequestID: Integer; out + outMsgType: TMessageType): Boolean; +var + xStream: TStream; + xMsgLen: Integer; + xMsgFileName: string; +begin + outMsgType := -1; + xMsgFileName := ''; + xStream := nil; + try + outRequestID := FindFirstRequest(xMsgFileName, xStream, outMsgType, xMsgLen); + Result := outRequestID >= 0; + if Result then + begin + FreeAndNil(xStream); + RenameFile(xMsgFileName, GetPeekedRequestFileName(xMsgFileName)); + end; + finally + xStream.Free; + end; +end; + +function TIPCServer.PeekRequest(out outRequestID: Integer; out + outMsgType: TMessageType; const aTimeOut: Integer): Boolean; +var + xStart: QWord; +begin + Result := False; + xStart := GetTickCount64; + repeat + if PeekRequest(outRequestID, outMsgType) then + Exit(True) + else if aTimeOut > 20 then + Sleep(10); + until (GetTickCount64-xStart > aTimeOut); +end; + +function TIPCServer.PeekRequest(out outMsgType: TMessageType): Boolean; +var + xRequestID: Integer; +begin + Result := PeekRequest(xRequestID, outMsgType); +end; + +function TIPCServer.PeekRequest(const aStream: TStream; out outRequestID: Integer; + out outMsgType: TMessageType): Boolean; +begin + Result := PeekRequest(outRequestID, outMsgType); + if Result then + Result := ReadRequest(outRequestID, aStream); +end; + +function TIPCServer.PeekRequest(const aStream: TStream; out outRequestID: Integer; + out outMsgType: TMessageType; const aTimeOut: Integer): Boolean; +begin + Result := PeekRequest(outRequestID, outMsgType, aTimeOut); + if Result then + Result := ReadRequest(outRequestID, aStream); +end; + +function TIPCServer.PeekRequest(const aStream: TStream; out + outMsgType: TMessageType): Boolean; +var + xRequestID: Integer; +begin + Result := PeekRequest(aStream, xRequestID, outMsgType); +end; + +procedure TIPCServer.PostResponse(const aRequestID: Integer; + const aMsgType: TMessageType; const aStream: TStream); +begin + DoPostMessage(GetResponseFileName(aRequestID), aMsgType, aStream); +end; + +function TIPCServer.ReadRequest(const aRequestID: Integer; const aStream: TStream + ): Boolean; +var + xMsgType: TMessageType; +begin + Result := DoReadMessage(GetPeekedRequestFileName(aRequestID), aStream, xMsgType); +end; + +procedure TIPCServer.SetGlobal(const aGlobal: Boolean); +begin + if Active then + raise EICPException.Create(SErrSetGlobalActive); + + inherited SetGlobal(aGlobal); +end; + +procedure TIPCServer.SetServerID(const aServerID: string); +begin + if Active then + raise EICPException.Create(SErrSetServerIDActive); + + inherited SetServerID(aServerID); +end; + +function TIPCServer.StartServer(const aDeletePendingRequests: Boolean): Boolean; +begin + if Active then + Exit(True); + + FFileHandle := FileCreate(FFileName, fmCreate or fmShareExclusive, GLOBAL_RIGHTS); + Result := (FFileHandle<>feInvalidHandle); + FActive := Result; + if Result and aDeletePendingRequests then + DeletePendingRequests; +end; + +function TIPCServer.StopServer(const aDeletePendingRequests: Boolean): Boolean; +begin + if not Active then + Exit(True); + + if FFileHandle<>feInvalidHandle then + FileClose(FFileHandle); + Result := DeleteFile(FFileName); + + if aDeletePendingRequests then + DeletePendingRequests; + + FActive := False; +end; + +initialization + InitCriticalSection(CreateUniqueRequestCritSec); + +finalization + DoneCriticalsection(CreateUniqueRequestCritSec); + +end. diff -Nru lazarus-1.4.4+dfsg/ide/lazarusidestrconsts.pas lazarus-1.6+dfsg/ide/lazarusidestrconsts.pas --- lazarus-1.4.4+dfsg/ide/lazarusidestrconsts.pas 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazarusidestrconsts.pas 2016-01-05 13:11:56.000000000 +0000 @@ -40,7 +40,8 @@ Classes, SysUtils; resourcestring - // Common strings that can be used around Lazarus: + // *** Common single word resources that can be safely shared around Lazarus *** + lisLazarus = 'Lazarus'; lisAdd = 'Add'; lisBtnAdd = '&Add'; @@ -64,22 +65,22 @@ lisOpen = 'Open'; lisSave = 'Save'; lisDlgSave = 'Save ...'; - lisSaveShownMessagesToFile = 'Save Shown Messages to File ...'; lisSaveAs = 'Save As'; lisSaveAll = 'Save All'; - lisExportHtml = 'Export as HTML'; lisCloseAll = 'Close All'; lisFile = 'File'; lisNew = 'New'; lisClose = 'Close'; lisBtnClose = '&Close'; - lisMMAddsCustomOptions = 'Adds custom options:'; - lisMMDoesNotAddCustomOptions = 'Does not add custom options:'; lisOk = 'OK'; lisMenuOk = '&OK'; lisCancel = 'Cancel'; - lisUnusedUnitsOf = 'Unused units of %s'; lisNo = 'No'; + lisYes = 'Yes'; + lisAbort = 'Abort'; + lisIgnore = 'Ignore'; + lisNever = 'Never'; + lisAlways = 'Always'; lisContinue = 'Continue'; lisBreak = 'Break'; lisExit = 'Exit'; @@ -87,21 +88,19 @@ lisBtnQuit = '&Quit'; lisRestart = 'Restart'; lisHelp = 'Help'; - lisSaveAllOriginalMessagesToFile = 'Save All/Original Messages to File ...'; lisEnabled = 'Enabled'; lisBtnEnabled = '&Enabled'; lisUndo = 'Undo'; lisRedo = 'Redo'; lisCut = 'Cut'; lisCopy = 'Copy'; - lisMoveFiles2 = 'Move files?'; lisPaste = 'Paste'; lisDown = 'Down'; lisUp = 'Up'; lisRight = 'Right'; lisLeft = 'Left'; -// lisTop = 'Top'; -// lisBottom = 'Bottom'; + lisTop = 'Top'; + lisBottom = 'Bottom'; lisName = 'Name'; lisKey = 'Key'; lisValue = 'Value'; @@ -121,25 +120,52 @@ lisRunButtonHint = 'Run'; lisPause = 'Pause'; lisStop = 'Stop'; + lisSorting = 'Sorting'; lisBuilding = 'Building'; - lisTheIDEIsStillBuilding = 'The IDE is still building.'; + lisOptions = 'Options'; lisLess = 'Less'; lisMore = 'More'; + lisDlgMore = 'More ...'; lisMoreSub = 'More >>'; lisDefault = 'Default'; lisClone = 'Clone'; lisExport = 'Export'; lisDlgExport = 'Export ...'; + lisExportSub = 'Export >>'; lisImport = 'Import'; lisDlgImport = 'Import ...'; + // *** Common sentence resources that can be safely shared around Lazarus *** + // Be careful, sharing sentences can lead to wrong translations in some places. + + lisExportHtml = 'Export as HTML'; + lisMoveFiles = 'Move Files'; + lisMoveFiles2 = 'Move files?'; + lrsPLDDeleteSelected = 'Delete selected'; + + dlgMultipleInstances = 'Multiple Lazarus instances'; + dlgMultipleInstances_AlwaysStartNew = 'always start a new instance'; + dlgMultipleInstances_OpenFilesInRunning = 'open files in a running instance'; + dlgMultipleInstances_ForceSingleInstance = 'do not allow multiple instances'; + dlgRunningInstanceModalError = 'The running Lazarus instance cannot accept any files.'+sLineBreak+'Do you want to open them in a new IDE instance?'+sLineBreak+sLineBreak+'%s'; + dlgForceUniqueInstanceModalError = 'The running Lazarus instance cannot accept any files.'; + dlgRunningInstanceNotRespondingError = 'Lazarus instance is running but not responding.'; + + // *** Rest of the resource strings *** + lisImportPackageListXml = 'Import package list (*.xml)'; lisExportPackageListXml = 'Export package list (*.xml)'; lrsRescanLplFiles = 'Rescan lpl files'; - lrsPLDDeleteSelected = 'Delete selected'; lisRenameShowResult = 'Show list of renamed Identifiers'; lisResourceNameMustBeUnique = 'Resource name must be unique.'; lisFailedToAddNNotUniqueResources = 'Failed to add %d not unique resource(s)'; + lisTheIDEIsStillBuilding = 'The IDE is still building.'; + + lisSaveShownMessagesToFile = 'Save Shown Messages to File ...'; + lisMMAddsCustomOptions = 'Adds custom options:'; + lisMMDoesNotAddCustomOptions = 'Does not add custom options:'; + lisUnusedUnitsOf = 'Unused units of %s'; + lisSaveAllOriginalMessagesToFile = 'Save All/Original Messages to File ...'; // errors lisErrInvalidOption = 'Invalid option at position %d: "%s"'; @@ -155,6 +181,8 @@ lisCmdLineLCLInterfaceSpecificOptions = 'LCL Interface specific options:'; lisDoNotShowSplashScreen = 'Do not show splash screen'; lisSkipLoadingLastProject = 'Skip loading last project'; + lisDoNotCheckIfAnotherIDEInstanceIsAlreadyRunning = '%sDo not check if ' + +'another IDE instance is already running'; lisOverrideLanguage = 'Override language. For example --language=de.'+ ' For possible values see files in the languages directory.'; lissecondaryConfigDirectoryWhereLazarusSearchesFor = 'secondary config '+ @@ -164,7 +192,10 @@ 'not specified, debug output is written to the console.'; lisGroupsForDebugOutput = 'Enable or Disable groups of debug output.' + ' Valid Options are:'; - lisLazarusDirOverride = 'directory, to be used as a basedirectory'; + lisLazarusDirOverride = 'directory, to be used as a basedirectory'; + lisMaximumNumberOfThreadsForCompilingInParallelDefaul = 'Maximum number of ' + +'threads for compiling in parallel. Default is 0, which guesses the ' + +'number of cores in the system.'; // component palette lisSelectionTool = 'Selection tool'; @@ -216,7 +247,7 @@ lisKMPublishProject = 'Publish project'; lisOpenTheFileAsNormalSource = 'Open the file as normal source'; lisOpenAsXmlFile = 'Open as XML file'; - lisAnErrorOccuredAtLastStartupWhileLoadingLoadThisPro = 'An error occured ' + lisAnErrorOccuredAtLastStartupWhileLoadingLoadThisPro = 'An error occurred ' +'at last startup while loading %s!' +'%sLoad this project again?'; lisOpenProjectAgain = 'Open project again'; @@ -224,13 +255,15 @@ lisConfigDirectory = 'Lazarus config directory'; lisPkgMacroPackageDirectoryParameterIsPackageID = 'Package directory. ' - +'Parameter is package ID'; + +'Parameter is package ID, e.g. "Name" or "Name 1.0"'; lisPkgMacroPackageSourceSearchPathParameterIsPackageID = 'Package source ' - +'search path. Parameter is package ID'; + +'search path. Parameter is package ID, e.g. "Name" or "Name 1.0"'; lisPkgMacroPackageUnitSearchPathParameterIsPackageID = 'Package unit search ' - +'path. Parameter is package ID'; + +'path. Parameter is package ID, e.g. "Name" or "Name 1.0"'; lisPkgMacroPackageIncludeFilesSearchPathParameterIsPackageID = 'Package ' - +'include files search path. Parameter is package ID'; + +'include files search path. Parameter is package ID, e.g. "Name" or "Name 1.0"'; + lisPkgMacroPackageNameParameterIsPackageID = 'Package name. Parameter is package ID, e.g. "Name" or "Name 1.0"'; + lisPkgMacroPackageOutputDirectoryParameterIsPackageID = 'Package output directory. Parameter is package ID, e.g. "Name" or "Name 1.0"'; // main bar menu lisMenuFile = '&File'; @@ -244,8 +277,11 @@ lisMenuTools = '&Tools'; lisMenuWindow = '&Window'; lisMenuHelp = '&Help'; + lisThisWillAllowChangingAllBuildModesAtOnceNotImpleme = 'This will allow ' + +'changing all build modes at once. Not implemented yet.'; lisMenuNewUnit = 'New Unit'; + lisMenuNewCustom = 'New %s'; lisMenuNewForm = 'New Form'; lisMenuNewOther = 'New ...'; lisMenuOpen = '&Open ...'; @@ -309,7 +345,6 @@ lisMenuInsertCVSKeyword = 'Insert CVS Keyword'; lisMenuInsertGeneral = 'Insert General'; lisGeneral = 'General'; -// lisNone2 = 'none'; lisOr = 'or'; lisNone = '%snone'; lisUnitPaths = 'Unit paths'; @@ -360,7 +395,13 @@ lisMenuViewRestrictionBrowser = 'Restriction Browser'; lisMenuViewComponents = '&Components'; lisMenuJumpTo = 'Jump to'; + lisMenuJumpToInterface = 'Jump to Interface'; + lisMenuJumpToInterfaceUses = 'Jump to Interface uses'; lisMenuJumpToImplementation = 'Jump to Implementation'; + lisMenuJumpToImplementationUses = 'Jump to Implementation uses'; + lisMenuJumpToInitialization = 'Jump to Initialization'; + lisMenuJumpToProcedureHeader = 'Jump to Procedure header'; + lisMenuJumpToProcedureBegin = 'Jump to Procedure begin'; lisMenuViewUnits = 'Units ...'; lisMenuViewForms = 'Forms ...'; lisMenuViewUnitDependencies = 'Unit Dependencies'; @@ -389,8 +430,7 @@ lisSwitchFilterSettings = 'Switch Filter Settings'; lisAddFilter = 'Add Filter ...'; lisCopyAllShownMessagesToClipboard = 'Copy All Shown Messages to Clipboard'; - lisCopyAllOriginalMessagesToClipboard = 'Copy All/Original Messages to ' - +'Clipboard'; + lisCopyAllOriginalMessagesToClipboard = 'Copy All/Original Messages to Clipboard'; lisCopyItemToClipboard = 'Copy Item to Clipboard'; lisCopySelectedItemToClipboard = 'Copy Selected Items to Clipboard'; lisCopyAllItemsToClipboard = 'Copy All Items to Clipboard'; @@ -402,7 +442,6 @@ lisMenuViewTabOrder = 'Tab Order'; lisKMToggleViewComponentPalette = 'Toggle View Component Palette'; lisMenuViewComponentPalette = 'Component Palette'; - lisMenuViewIDESpeedButtons = 'IDE Speed Buttons'; lisMenuDebugWindows = 'Debug Windows'; lisMenuViewWatches = 'Watches'; lisMenuViewBreakPoints = 'BreakPoints'; @@ -570,6 +609,7 @@ lisKMEditContextSensitiveHelp = 'Edit context sensitive help'; lisMenuContextHelp = 'Context sensitive Help'; lisMenuEditContextHelp = 'Edit context sensitive Help'; + lisMenuShowSmartHint = 'Context sensitive smart hint'; lisDsgCopyComponents = 'Copy selected components to clipboard'; lisDsgCutComponents = 'Cut selected components to clipboard'; @@ -587,9 +627,6 @@ lisChooseDelphiUnit = 'Choose Delphi unit (*.pas)'; lisChooseDelphiProject = 'Choose Delphi project (*.dpr)'; lisChooseDelphiPackage = 'Choose Delphi package (*.dpk)'; - lisDelphiUnit = 'Delphi unit'; - lisDelphiProject = 'Delphi project'; - lisDelphiPackage = 'Delphi package'; lisFormatError = 'Format error'; lisLFMFileCorrupt = 'LFM file corrupt'; lisUnableToFindAValidClassnameIn = 'Unable to find a valid classname in "%s"'; @@ -735,6 +772,8 @@ lisTheDirectoryContainsNoProjectUnitsAnyMoreRemoveThi = 'The directory "%s" ' +'contains no project units any more. Remove this directory from the ' +'project''s unit search path?'; + lisInvalidExecutable = 'Invalid Executable'; + lisInvalidExecutableMessageText = 'The file "%s" is not executable.'; lisInvalidProjectFilename = 'Invalid project filename'; lisisAnInvalidProjectNamePleaseChooseAnotherEGProject = '"%s" is an ' +'invalid project name.%sPlease choose another (e.g. project1.lpi)'; @@ -788,6 +827,9 @@ 'The new unit is not yet in the unit search path.%sAdd directory %s?'; lisisAlreadyPartOfTheProject = '%s is already part of the Project.'; lisRemoveFromProject = 'Remove from Project'; + lisShouldTheComponentBeAutoCreatedWhenTheApplicationS = 'Should the ' + +'component "%s" be auto created when the application starts?'; + lisAddToStartupComponents = 'Add to startup components?'; lisCreateAProjectFirst = 'Create a project first!'; lisTheTestDirectoryCouldNotBeFoundSeeIDEOpt = 'The Test Directory ' +'could not be found:%s"%s"%s(see IDE options)'; @@ -868,6 +910,10 @@ lisConversionError = 'Conversion error'; lisUnableToConvertComponentTextIntoBinaryFormat = 'Unable to convert ' +'component text into binary format:%s%s'; + lisInsufficientEncoding = 'Insufficient encoding'; + lisUnableToConvertToEncoding = 'Unable to convert to encoding "%s"'; + lisSavingFileAsLoosesCharactersAtLineColumn = 'Saving file "%s" as "%s" ' + +'looses characters at line %s, column %s.'; lisNOTECouldNotCreateDefineTemplateForLazarusSources = 'NOTE: Could not ' +'create Define Template for Lazarus Sources'; lisInvalidExpressionHintTheMakeResourcestringFunction = 'Invalid expression.%s' @@ -963,13 +1009,9 @@ lisIECORecentFiles = 'Recent files'; lisIECOSaveToFile = 'Save to file'; lisIECOLoadFromFile = 'Load from file'; - lisLazarusFile = 'Lazarus file'; lisDebugUnableToLoadFile = 'Unable to load file'; lisDebugUnableToLoadFile2 = 'Unable to load file "%s".'; lisOpenProjectFile = 'Open Project File'; - lisLazarusProjectInfoFile = 'Lazarus Project Info file'; - lisAllFiles = 'All Files'; - lisExePrograms = 'Programs'; lisSelectFile = 'Select the file'; lisClickHereToBrowseTheFileHint = 'Click here to browse the file'; lisOpenPackageFile = 'Open Package File'; @@ -985,8 +1027,7 @@ lisChooseMakeExecutable = 'Choose "make" executable'; lisChooseDebuggerExecutable = 'Choose debugger executable'; lisChooseTestBuildDir = 'Choose the directory for tests'; - lisLazarusDesktopSettings = 'Lazarus Desktop Settings'; - lisXMLFiles = 'XML files'; + lisChooseExecutable = 'Choose an executable'; // dialogs lisProjectChanged = 'Project changed'; @@ -1144,6 +1185,9 @@ dlgEOFocusMessagesAfterCompilation = 'Focus messages after compilation'; lisMaximumParallelProcesses0MeansDefault = 'Maximum parallel processes, 0 ' +'means default (%s)'; + lisShowFPCMessageLinesCompiled = 'Show FPC message "lines compiled"'; + lisElevateTheMessagePriorityToAlwaysShowItByDefaultIt = 'Elevate the message' + +' priority to always show it (by default it has low priority "verbose")'; lisMessagesWindow = 'Messages Window'; lisCheckForDiskFileChangesViaContent = 'Check for disk file changes via content ' +'rather than timestamp'; @@ -1157,7 +1201,6 @@ lissSearching = 'Searching'; lissSearchText = 'Search text'; - dlgDesktop = 'Desktop'; dlgWindow = 'Window'; dlgFrmEditor = 'Form Editor'; dlgObjInsp = 'Object Inspector'; @@ -1217,7 +1260,7 @@ podAddPackageUnitToUsesSection = 'Add package unit to uses section'; lisCodeBrowser = 'Code Browser'; - // Desktop options + // IDE General options dlgEnvLanguage = 'Language'; dlgEnvLanguageHint = 'Language of all IDE strings. Restart IDE after changing it for best result.'; dlgCheckAndAutoSaveFiles = 'Check and Auto Save Files'; @@ -1225,9 +1268,6 @@ lisIfOnlySessionInfoChangedThenAsk = 'If only the session info changed, ask about saving it.'; dlgEdFiles = 'Editor Files'; dlgIntvInSec = 'Interval in secs'; - dlgDesktopFiles = 'Desktop Files'; - dlgSaveDFile = 'Save desktop settings to file'; - dlgLoadDFile = 'Load desktop settings from file'; dlgDesktopHints = 'Hints'; dlgDesktopButtons = 'Buttons - '; dlgDesktopMenus = 'Menus - '; @@ -1237,8 +1277,30 @@ dlgPreferDoubleClickOverSingleClick = 'Prefer double-click over single-click'; dlgCurrentlyRespectedByMessagesWindow = 'Currently respected by messages window, ' +'jump history and search results.'; - lisSavedSuccessfully = 'Saved successfully'; - lisLoadedSuccessfully = 'Loaded successfully'; + lisExportEnvironmentOptions = 'Export environment options'; + lisImportEnvironmentOptions = 'Import environment options'; + + // Desktop options + dlgManageDesktops = 'Manage desktops'; + dlgSaveCurrentDesktopAs = 'Save current desktop as'; + dlgReallyDeleteDesktop = 'Really delete desktop "%s"?'; + dlgCannotUseDockedUndockedDesktop = 'You cannot use docked desktop in undocked environment and vice versa.'; + dlgRenameDesktop = 'Rename desktop'; + dlgNewDesktop = 'New desktop ...'; + dlgSetActiveDesktop = 'Set active'; + dlgToggleDebugDesktop = 'Toggle as debug desktop'; + dlgDesktopName = 'Desktop name'; + dlgOverwriteDesktop = 'Desktop with the name "%s" was found.'+sLineBreak+'Should the old desktop be overwritten?'; + dlgDebugDesktop = 'debug'; + dlgActiveDesktop = 'active'; + dlgImportDesktopExists = 'A desktop with the same name already exists.'+sLineBreak+'Please confirm the desktop name:'; + dlgDesktopsImported = '%d desktop(s) successfully imported from "%s"'; + dlgDesktopsExported = '%d desktop(s) successfully exported to "%s"'; + lisExportSelected = 'Export selected'; + lisExportAll = 'Export all'; + dlgGrayedDesktopsUndocked = 'Grayed desktops are for undocked environment.'; + dlgAutoSaveActiveDesktop = 'Auto save active desktop'; + dlgAutoSaveActiveDesktopHint = 'Save active desktop on IDE close'+sLineBreak+'Save debug desktop on IDE close and debug end'; // Window options dlgShowingWindows = 'Showing Windows'; @@ -1252,6 +1314,10 @@ lisIDETitleStartsWithProjectName = 'IDE title starts with project name'; lisIDETitleShowsProjectDir = 'IDE title shows project directory'; lisIDETitleShowsBuildMode = 'IDE title shows selected build mode'; + lisAutoAdjustIDEHeight = 'Automatically adjust IDE main window height'; + lisAutoAdjustIDEHeightHint = ''; + lisAutoAdjustIDEHeightFullComponentPalette = 'Show complete component palette'; + lisAutoAdjustIDEHeightFullComponentPaletteHint = 'If component palette spans over more lines, show them all and not only one.'; lisWindowMenuWithNameForDesignedForm = 'Window menu shows designed form''s name instead of caption'; lisWindowMenuWithNameForDesignedFormHint = 'Useful especially if the caption is left empty.'; dlgWinPos = 'Window positions'; @@ -1271,6 +1337,7 @@ +'focused, even if the Messages window has no focus. Use this if your ' +'theme has a hardly visible unfocused drawing.'; lisEditorColors = 'Editor Colors'; + lisPastelColors = 'Pastel Colors'; dlgMainMenu = 'Main Menu'; dlgSrcEdit = 'Source Editor'; @@ -1278,6 +1345,8 @@ dlgProjFiles = 'Project Files'; dlgEnvType = 'Type'; dlgEnvNone = 'None'; + srkmecKeyMapLeft = 'Left'; + srkmecKeyMapRight = 'Right'; dlgSmbFront = 'Symbol in front (.~pp)'; lisNoBackupFiles = 'No backup files'; dlgSmbBehind = 'Symbol behind (.pp~)'; @@ -1290,7 +1359,7 @@ dlgEnvOtherFiles = 'Other Files'; dlgMaxRecentFiles = 'Max recent files'; dlgMaxRecentProjs = 'Max recent project files'; - dlgQOpenLastPrj = 'Open last project at start'; + dlgQOpenLastPrj = 'Open last project and packages at start'; dlgLazarusDir = 'Lazarus directory (default for all projects)'; dlgFpcExecutable = 'Compiler executable (e.g. %s)'; dlgFpcSrcPath = 'FPC source directory'; @@ -1357,14 +1426,11 @@ dlgCharCaseFileAct = 'Save As - auto rename Pascal files lower case'; dlgAmbigFileAct = 'Ambiguous file action:'; dlgEnvAsk = 'Ask'; - lisNever = 'Never'; dlgAutoDel = 'Auto delete file'; dlgAutoRen = 'Auto rename file lowercase'; dlgnoAutomaticRenaming = 'No automatic renaming'; lisWhenAUnitIsRenamedUpdateReferences = 'When a unit is renamed, update references'; - lisAlways = 'Always'; dlgAmbigWarn = 'Warn on compile'; - dlgIgnoreVerb = 'Ignore'; lisAlwaysIgnore = 'Always ignore'; // OI colors dlgBackColor = 'Background'; @@ -1392,7 +1458,6 @@ dlgOIMiscellaneous = 'Miscellaneous'; dlgOISpeedSettings = 'Speed settings'; - dlgOIOptions = 'Options'; dlgOIItemHeight = 'Item height'; dlgHeightOfOnePropertyInGrid = 'Height of one property in the grid.'; dlgOIUseDefaultLazarusSettings = 'Use default Lazarus settings'; @@ -1429,6 +1494,36 @@ lisPkgMangThePackageFailedToCompileRemoveItFromTheInstallati = 'The package "%s" ' +'failed to compile.%sRemove it from the installation list?'; lisEnvOptDlgTestDirNotFoundMsg = 'Test directory "%s" not found.'; + lisTitleOpenComponentIcon24x24 = 'Choose a component icon 24x24'; + + // open-dialog filters + dlgFilterAll = 'All files'; + dlgFilterXML = 'XML files'; + dlgFilterHTML = 'HTML files'; + dlgFilterPrograms = 'Programs'; + dlgFilterExecutable = 'Executable'; + dlgFilterLazarusFile = 'Lazarus file'; + dlgFilterLazarusEditorFile = 'Editor file types'; + dlgFilterLazarusUnit = 'Lazarus unit'; + dlgFilterLazarusInclude = 'Lazarus include file'; + dlgFilterLazarusProject = 'Lazarus project'; + dlgFilterLazarusForm = 'Lazarus form'; + dlgFilterLazarusPackage = 'Lazarus package'; + dlgFilterLazarusProjectSource = 'Lazarus project source'; + dlgFilterLazarusOtherFile = 'Lazarus other file'; + dlgFilterLazarusSession = 'Lazarus session'; + dlgFilterLazarusDesktopSettings = 'Lazarus Desktop Settings'; + dlgFilterDelphiUnit = 'Delphi unit'; + dlgFilterDelphiProject = 'Delphi project'; + dlgFilterDelphiPackage = 'Delphi package'; + dlgFilterDelphiForm = 'Delphi form'; + dlgFilterPascalFile = 'Pascal file'; + dlgFilterDciFile = 'DCI file'; + dlgFilterFPCMessageFile = 'FPC message file'; + dlgFilterCodetoolsTemplateFile = 'CodeTools template file'; + dlgFilterImagesPng = 'PNG images'; + dlgFilterImagesBitmap = 'Bitmap images'; + dlgFilterImagesPixmap = 'Pixmap images'; // editor options dlgEdMisc = 'Misc'; @@ -1440,11 +1535,6 @@ dlgReport = 'Report'; dlgDelTemplate = 'Delete template '; dlgChsCodeTempl = 'Choose code template file (*.dci)'; - dlgAllFiles = 'All files'; - dlgDCIFileDci = 'DCI file (*.dci)'; - lisCodetoolsTemplateFile = 'CodeTools template file'; - lisExecutable = 'Executable'; - lisEditorFileTypes = 'Editor file types'; lisPkgMgrNew = 'new'; lisPkgMgrRemove = 'remove'; lisPkgMgrKeep = 'keep'; @@ -1454,13 +1544,6 @@ lisConfirmPackageAction = 'Action'; lisSaveFileAs = 'Save file as'; lisOpenExistingFile = 'Open existing file'; - lisLazarusUnit = 'Lazarus unit'; - lisLazarusInclude = 'Lazarus include file'; - lisLazarusProject = 'Lazarus project'; - lisLazarusForm = 'Lazarus form'; - lisLazarusPackage = 'Lazarus package'; - lisLazarusProjectSource = 'Lazarus project source'; - lisLazarusOtherFile = 'Lazarus other file'; dlgUndoGroupOptions = 'Undo / Redo'; dlgScrollGroupOptions = 'Scrolling'; @@ -1488,6 +1571,7 @@ lisShowSpecialCharacters = 'Show special characters'; dlgCloseButtonsNotebook = 'Show close buttons in notebook'; dlgCtrlMiddleTabCloseOtherPages = 'Ctrl-middle-click on tab closes all others'; + dlgSourceEditTabMultiLine = 'Multiline tabs'; dlgHideSingleTabInNotebook = 'Hide tab in single page windows'; dlgTabNumbersNotebook = 'Show tab numbers in notebook'; dlgNotebookTabPos = 'Source notebook tabs position'; @@ -1540,6 +1624,8 @@ dlfMouseSimpleGutterSect = 'Gutter'; dlfMouseSimpleGutterLeftDown = 'Standard, All actions (breakpoint, fold) on mouse down'; dlfMouseSimpleGutterLeftUp = 'Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move'; + dlfMouseSimpleGutterLeftUpRight = 'Extended, Actions, right gutter half only'; + dlfMouseSimpleGutterLines = 'Use line numbers to select lines'; dlfMouseSimpleTextSect = 'Text'; dlfMouseSimpleTextSectDrag = 'Drag selection (copy/paste)'; dlfMouseSimpleRightMoveCaret = 'Right mouse includes caret move'; @@ -1602,6 +1688,7 @@ dlfMouseSimpleButtonContextMenu = 'Context Menu'; dlfMouseSimpleButtonContextMenuDbg = 'Context Menu (debug)'; dlfMouseSimpleButtonContextMenuTab = 'Context Menu (tab)'; + dlfMouseSimpleButtonMultiCaretToggle = 'Toggle extra Caret'; dlfMouseSimpleWheelNothing = 'Nothing/Default'; dlfMouseSimpleWheelSrollDef = 'Scroll (System speed)'; @@ -1632,6 +1719,7 @@ dlgMouseOptNodeGutterFoldCol = 'Collapsed [+]'; dlgMouseOptNodeGutterFoldExp = 'Expanded [-]'; dlgMouseOptNodeGutterLines = 'Line Numbers'; + dlgMouseOptNodeGutterChanges = 'Line Changes'; dlgMouseOptHeadOrder = 'Order'; dlgMouseOptHeadContext = 'Context'; dlgMouseOptHeadDesc = 'Action'; @@ -1685,6 +1773,9 @@ dlgCopyWordAtCursorOnCopyNone = 'Copy word on copy none'; dlgHomeKeyJumpsToNearestStart = 'Home key jumps to nearest start'; dlgEndKeyJumpsToNearestStart = 'End key jumps to nearest end'; + dlgMultiCaretOnColumnSelection = 'Enable multi caret for column selection'; + dlgMultiCaretColumnMode = 'Multi-caret (column-select) move with cursor'; + dlgMultiCaretMode = 'Multi-caret move with cursor'; dlgColorLink = '(Edit Color)'; dlgKeyLink = '(Edit Key)'; dlgBracketHighlight = 'Bracket highlight'; @@ -1741,11 +1832,27 @@ dlgUseSchemeLocal = 'Use local scheme settings'; dlgColor = 'Color'; dlgColors = 'Colors'; + lisHeaderColors = 'Header colors'; + lisMsgColors = 'Message colors'; lisSetAllColors = 'Set all colors:'; lisLazarusDefault = 'Lazarus Default'; dlgColorNotModified = 'Not modified'; dlgPriorities = 'Priorities'; + dlgMsgWinColorUrgentNone = 'Normal'; + dlgMsgWinColorUrgentProgress = 'Time and statistics'; + dlgMsgWinColorUrgentDebug = 'Debug'; + dlgMsgWinColorUrgentVerbose3 = 'Verbose 3'; + dlgMsgWinColorUrgentVerbose2 = 'Verbose 2'; + dlgMsgWinColorUrgentVerbose = 'Verbose'; + dlgMsgWinColorUrgentHint = 'Hint'; + dlgMsgWinColorUrgentNote = 'Note'; + dlgMsgWinColorUrgentWarning = 'Warning'; + dlgMsgWinColorUrgentImportant = 'Important'; + dlgMsgWinColorUrgentError = 'Error'; + dlgMsgWinColorUrgentFatal = 'Fatal'; + dlgMsgWinColorUrgentPanic = 'Panic'; + dlgForecolor = 'Foreground'; dlgFrameColor = 'Text-mark'; dlgUnsavedLineColor = 'Unsaved line'; @@ -2014,6 +2121,11 @@ dlgCDTStoredPostfix = 'Stored postfix'; dlgCDTVariablePrefix = 'Variable prefix'; dlgSetPropertyVariable = 'Set property Variable'; + dlgSetPropertyVariableHint = 'The parameter name for the default setter procedure.'; + dlgSetPropertyVariableIsPrefix = 'is prefix'; + dlgSetPropertyVariableIsPrefixHint = 'If checked, the "Set property Variable" is a prefix. Otherwise it is a fixed name.'; + dlgSetPropertyVariableUseConst = 'use const'; + dlgSetPropertyVariableUseConstHint = 'If checked, the setter parameter is marked with "const".'; dlgMaxLineLength = 'Max line length:'; dlgNotSplitLineFront = 'Do not split line in front of'; dlgNotSplitLineAfter = 'Do not split line after'; @@ -2021,11 +2133,10 @@ dlgInsSpaceFront = 'Insert space in front of'; dlgInsSpaceAfter = 'Insert space after'; dlgWRDPreview = 'Preview'; - lisIdCAdd = 'Add'; + lisIdCAddition = 'Addition'; dlgAddSemicolon = 'Add semicolon'; dlgAddAssignmentOperator = 'Add assignment operator :='; lisAddKeywordDo = 'Add keyword "do"'; - dlgUserSchemeError = 'Failed to load user-scheme file %s'; // source editor @@ -2062,9 +2173,7 @@ dlgCOVerbosity = 'Verbosity'; dlgCOCfgCmpMessages = 'Messages'; lisChooseAnFPCMessageFile = 'Choose an FPC message file'; - lisFPCMessageFile = 'FPC message file'; lisChooseAFileWithCodeToolsTemplates = 'Choose a file with CodeTools templates'; - dlgCOOther = 'Other'; dlgCOCompilerCommands = 'Compiler Commands'; lisUnitOutputDirectory = 'Unit Output directory'; lisSelectANode = 'Select a node'; @@ -2104,8 +2213,9 @@ lisSmallerRatherThanFaster = 'Smaller rather than faster'; dlgLevelNoneOpt = '0 (no optimization)'; dlgLevel1Opt = '1 (quick, debugger friendly)'; - dlgLevel2Opt = '2 (quick optimizations)'; - dlgLevel3Opt = '3 (slow optimizations)'; + dlgLevel2Opt = '2 (-O1 + quick optimizations)'; + dlgLevel3Opt = '3 (-O2 + slow optimizations)'; + dlgLevel4Opt = '4 (-O3 + aggressive optimizations, beware)'; dlgTargetOS = 'Target OS'; dlgTargetCPUFamily = 'Target CPU family'; dlgCOInfoForGDB = 'Info for GDB'; @@ -2155,6 +2265,7 @@ lisShowOnlyModified = 'Show only modified'; lisUseCommentsInCustomOptions = 'Use comments in custom options'; lisCustomOptions2 = 'Custom options'; + lisCustomOptions3 = 'Custom Options'; lisCustomOptHint = 'These options are passed to the compiler after macros are replaced.'; dlgStopAfterNrErr = 'Stop after number of errors:'; @@ -2295,8 +2406,7 @@ +'does not look correct:%s%s'; lisTheLazarusDirectoryDoesNotLookCorrect = 'The Lazarus directory "%s" does ' +'not look correct:%s%s'; - lisTheContainsANotExistingDirectory = 'The %s contains a nonexistent ' - +'directory:%s%s'; + lisTheContainsANotExistingDirectory = 'The %s contains a nonexistent directory:%s%s'; lisTheProjectDoesNotUseTheLCLUnitInterfacesButItSeems = 'The project does ' +'not use the LCL unit interfaces, which is required by LCLBase.%sYou will ' +'get strange linker errors if you use the LCL without interfaces.'; @@ -2404,7 +2514,7 @@ +'They are also freed automatically.'; dlgAvailableForms = 'Available forms:'; dlgAvailableFormsHint = 'These forms must be created and freed in the program code.'; - dlgAutoCreateNewForms = 'When creating new forms, add them to auto-created forms'; + dlgAutoCreateNewForms = 'Auto-create new forms'; dlgSaveEditorInfo = 'Save editor info for closed files'; dlgSaveEditorInfoHint = 'The files are available in the "Open Recent" history list.'; @@ -2466,7 +2576,6 @@ lisRunParamsTheHostApplicationIsNotExecutable = 'The host application "%s" is not executable.'; dlgTextToFind = '&Text to find'; dlgReplaceWith = '&Replace with'; - dlgFROpts = 'Options'; lisBFWhenThisFileIsActiveInSourceEditor = 'When this file is active in source editor'; lisBFOnBuildProjectExecuteTheBuildFileCommandInstead = 'On build project ' +'execute the Build File command instead'; @@ -2724,8 +2833,8 @@ srkmecWordRight = 'Move cursor word right'; srkmecWordEndLeft = 'Move cursor word-end left'; srkmecWordEndRight = 'Move cursor word-end right'; - srkmecHalfWordLeft = 'Move cursor half-word left'; - srkmecHalfWordRight = 'Move cursor half-word right'; + srkmecHalfWordLeft = 'Move cursor part-word left (e.g. CamelCase)'; + srkmecHalfWordRight = 'Move cursor part-word right (e.g. CamelCase)'; srkmecLineStart = 'Move cursor to line start'; srkmecLineEnd = 'Move cursor to line end'; srkmecPageUp = 'Move cursor up one page'; @@ -2750,8 +2859,8 @@ srkmecSelWordRight = 'Select Word Right'; srkmecSelWordEndLeft = 'Select word-end left'; srkmecSelWordEndRight = 'Select word-end right'; - srkmecSelHalfWordLeft = 'Select half-word left'; - srkmecSelHalfWordRight = 'Select half-word right'; + srkmecSelHalfWordLeft = 'Select part-word left (e.g. CamelCase)'; + srkmecSelHalfWordRight = 'Select part-word right (e.g. CamelCase)'; srkmecSelLineStart = 'Select Line Start'; srkmecSelLineEnd = 'Select Line End'; srkmecSelPageUp = 'Select Page Up'; @@ -2804,6 +2913,12 @@ srkmecToggleMode = 'Toggle Mode'; srkmecBlockIndent = 'Indent block'; srkmecBlockUnindent = 'Unindent block'; + srkmecPluginMultiCaretSetCaret = 'Add extra caret'; + srkmecPluginMultiCaretUnsetCaret = 'Remove extra caret'; + srkmecPluginMultiCaretToggleCaret = 'Toggle extra caret'; + srkmecPluginMultiCaretClearAll = 'Clear all extra carets'; + srkmecPluginMultiCaretModeCancelOnMove = 'Cursor keys clear all extra carets'; + srkmecPluginMultiCaretModeMoveAll = 'Cursor keys move all extra carets'; srkmecBlockSetBegin = 'Set block begin'; srkmecBlockSetEnd = 'Set block end'; @@ -2816,6 +2931,9 @@ srkmecBlockGotoBegin = 'Goto Block begin'; srkmecBlockGotoEnd = 'Goto Block end'; + srkmecZoomIn = 'Zoom in'; + srkmecZoomOut = 'Zoom out'; + srkmecShiftTab = 'Shift Tab'; lisTab = 'Tab'; srkmecMatchBracket = 'Go to matching bracket'; @@ -2870,6 +2988,8 @@ srkmecMoveEditorRight = 'Move editor right'; srkmecMoveEditorLeftmost = 'Move editor leftmost'; srkmecMoveEditorRightmost = 'Move editor rightmost'; + srkmecPrevEditorInHistory = 'Go to previous editor in history'; + srkmecNextEditorInHistory = 'Go to next editor in history'; srkmecNextSharedEditor = 'Go to next editor with same Source'; srkmecPrevSharedEditor = 'Go to prior editor with same Source'; @@ -3081,6 +3201,7 @@ lisMenuCodeToolsDefinesEditor = 'CodeTools Defines Editor ...'; lisMenuRescanFPCSourceDirectory = 'Rescan FPC Source Directory'; srkmecMakeResourceString = 'Make Resource String'; + lisDesktops = 'Desktops ...'; lisKMDiffEditorFiles = 'Diff Editor Files'; lisKMConvertDFMFileToLFM = 'Convert DFM File to LFM'; lisKMConvertDelphiUnitToLazarusUnit = 'Convert Delphi Unit to Lazarus Unit'; @@ -3099,6 +3220,7 @@ srkmCatEditing = 'Text editing commands'; lisKMDeleteLastChar = 'Delete last char'; srkmCatCmdCmd = 'Command commands'; + srkmCatMultiCaret = 'Multi caret commands'; srkmCatSearchReplace = 'Text search and replace commands'; srkmCatMarker = 'Text marker commands'; srkmCatFold = 'Text folding commands'; @@ -3318,7 +3440,6 @@ lisFPDocThereIsASyntaxErrorInTheFpdocElement = 'There is a syntax error in ' +'the fpdoc element "%s":%s%s'; lisChooseAnExampleFile = 'Choose an example file'; - lisPascalFile = 'Pascal file'; lisUnableToWriteTheProjectInfoFileError = 'Unable to write the project info ' +'file%s"%s".%sError: %s'; lisUnableToWriteTheProjectSessionFileError = 'Unable to write the project session ' @@ -3485,11 +3606,11 @@ lisUnableToOpenDesignerTheClassDoesNotDescendFromADes = 'Unable to open ' +'designer.%sThe class %s does not descend from a designable class like ' +'TForm or TDataModule.'; + lisIgnoreUseAsAncestor = 'Ignore, use %s as ancestor'; lisUnableToLoadTheComponentClassBecauseItDependsOnIts = 'Unable to load the ' +'component class "%s", because it depends on itself.'; lisCancelLoadingThisComponent = 'Cancel loading this component'; lisAbortWholeLoading = 'Abort whole loading'; - lisIgnoreUseTFormAsAncestor = 'Ignore, use TForm as ancestor'; lisTheResourceClassDescendsFromProbablyThisIsATypoFor = 'The resource ' +'class "%s" descends from "%s". Probably this is a typo for TForm.'; @@ -3529,6 +3650,10 @@ lisAllBlocksLooksOk = 'All blocks look ok.'; lisTheApplicationBundleWasCreatedFor = 'The Application Bundle was created for "%s"'; + //codetools ChooseClassSectionDlg + lisChooseClassSectionDlgForMethodCaption = 'Insert new method to section'; + lisEventMethodSectionLabel = 'Insert new event methods to section'; + // diff dialog lisDiffDlgFile1 = 'File1'; lisDiffDlgOnlySelection = 'Only selection'; @@ -3722,10 +3847,10 @@ lisProjAddInvalidVersion = 'Invalid version'; lisProjAddTheMinimumVersionIsInvalid = 'The Minimum Version "%s" is invalid.' +'%sPlease use the format major.minor.release.build' - +'%sFor exmaple: 1.0.20.10'; + +'%sFor example: 1.0.20.10'; lisProjAddTheMaximumVersionIsInvalid = 'The Maximum Version "%s" is invalid.' +'%sPlease use the format major.minor.release.build' - +'%sFor exmaple: 1.0.20.10'; + +'%sFor example: 1.0.20.10'; lisProjAddInvalidPascalUnitName = 'Invalid Pascal unit name'; lisProjAddTheUnitNameIsNotAValidPascalIdentifier = 'The unit name "%s" is ' +'not a valid Pascal identifier.'; @@ -3900,6 +4025,7 @@ +'%s%s' +'%slazbuild is non interactive, aborting now.'; lisPkgMangSavePackageLpk = 'Save Package %s (*.lpk)'; + lisPkgMangSaveAsAlreadyOpenedPackage = 'The package %s is already open in the IDE.'+sLineBreak+'You cannot save a package with the same name.'; lisPkgMangInvalidPackageFileExtension = 'Invalid package file extension'; lisPkgMangPackagesMustHaveTheExtensionLpk = 'Packages must have the ' +'extension .lpk'; @@ -4042,6 +4168,7 @@ lisOtherSourcesPathOfPackageContainsDirectoryWhichIsA = 'other sources path ' +'of package "%s" contains directory "%s", which is already in the unit ' +'search path.'; + lisInsertAssignment = 'Insert Assignment %s := ...'; lisPkgManginvalidCompilerFilename = 'invalid Compiler filename'; lisPkgMangTheCompilerFileForPackageIsNotAValidExecutable = 'The compiler ' +'file for package %s is not a valid executable:%s%s'; @@ -4096,7 +4223,7 @@ lisPkgMangThePackageIsMarkedForInstallationButCanNotBeFound = 'The package "%s" ' +'is marked for installation, but cannot be found.' +'%sRemove dependency from the installation list of packages?'; - lisERRORInvalidBuildMode = 'ERROR: invalid build mode "%s"'; + lisERRORInvalidBuildMode = 'Error: (lazarus) invalid build mode "%s"'; lisAvailableProjectBuildModes = 'Available project build modes:'; lisThisProjectHasOnlyTheDefaultBuildMode = 'This project has only the default build mode.'; lisPkgMangstaticPackagesConfigFile = 'static packages config file'; @@ -4104,7 +4231,7 @@ +'target directory for Lazarus:' +'%s"%s".' +'%sThis directory is needed for the new changed Lazarus IDE with your custom packages.'; - lisPkgMangCompilingPackage = 'Compiling package %s'; + lisPkgMangCompilePackage = 'Compile package %s'; lisPkgMangErrorUpdatingPoFilesFailedForPackage = 'Error: updating po files ' +'failed for package %s'; lisIDEInfoErrorRunningCompileAfterToolFailedForPackage = 'Error: running ''co' @@ -4157,9 +4284,6 @@ lisAF2PPackageNotFound = 'Package "%s" not found.'; lisAF2PPackageIsReadOnly = 'Package is read only'; lisAF2PThePackageIsReadOnly = 'The package %s is read only.'; - lisAF2PTheFileIsAlreadyInThePackage = 'The file "%s"%sis already in the package %s.'; - lisAF2PUnitName = 'Unit name: '; - lisAF2PHasRegisterProcedure = 'Has Register procedure'; lisAF2PFileType = 'File type'; lisPEExpandDirectory = 'Expand directory'; lisPECollapseDirectory = 'Collapse directory'; @@ -4248,6 +4372,7 @@ lisA2PUnitName = 'Unit Name:'; lisA2PShortenOrExpandFilename = 'Shorten or expand filename'; lisA2PSaveFileDialog = 'Save file dialog'; + lisA2PIconAndSize = 'Icon (maximum 24x24):'; lisMoveSelectedUp = 'Move selected item up (Ctrl+Up)'; lisMoveSelectedDown = 'Move selected item down (Ctrl+Down)'; @@ -4257,6 +4382,7 @@ +'%sSelect Yes to change all listed dependencies.' +'%sSelect Ignore to break the dependencies and continue.'; lisA2PDependency = 'Dependency'; + lisA2PPackageOrProject = 'Package/Project'; lisA2PBrokenDependencies = 'Broken Dependencies'; // open installed packages dialog @@ -4330,14 +4456,14 @@ lisPckEditCompilerOptionsForPackage = 'Compiler Options for Package %s'; lisPckEditSavePackage = 'Save Package'; lisPckEditCompilePackage = 'Compile package'; - lisPckEditAddFiles = 'Add files from the file system'; + lisPckEditAddFilesFromFileSystem = 'Add Files from File System'; lisPckEditAddOtherItems = 'Add other items'; lisPckEditRemoveSelectedItem = 'Remove selected item'; - lisPckEditInstallPackageInTheIDE = 'Install package in the IDE'; lisUseSub = 'Use >>'; - lisClickToSeeThePossibleUses = 'Click to see the possible uses'; - lisPckEditEditGeneralOptions = 'Edit General Options'; - lisPkgEdThereAreMoreFunctionsInThePopupmenu = 'There are more functions in the popupmenu'; + lisAddSub = 'Add >>'; + lisClickToSeeTheChoices = 'Click to see the choices'; + lisPckEditEditGeneralOptions = 'Edit general options'; + lisPkgEdMoreFunctionsForThePackage = 'More functions for the package'; lisPckEditRequiredPackages = 'Required Packages'; lisPckEditFileProperties = 'File Properties'; lisPckEditRegisterUnit = 'Register unit'; @@ -4394,9 +4520,7 @@ +'" in %s%sOld: %s%sNew: %s%s%sContinue?'; lisUnitNotFoundAtNewPosition = 'unit %s not found at new position "%s"'; lisUnitRequiresPackage = 'unit %s requires package %s'; - lisDifferentUnitFoundAtNewPosition = 'different unit %s found at new ' - +'position "%s"'; - lisMoveFiles = 'Move Files'; + lisDifferentUnitFoundAtNewPosition = 'different unit %s found at new position "%s"'; lisUnitNotFound = 'unit %s not found'; lisTwoMovedFilesWillHaveTheSameFileNameIn = 'Two moved files will ' +'have the same file name:%s%s%s%s%sin %s'; @@ -4474,14 +4598,65 @@ lisProjInspRemovedRequiredPackages = 'Removed required packages'; lisProjInspProjectInspector = 'Project Inspector - %s'; + // IDE Coolbar + lisCoolbarOptions = 'IDE CoolBar'; + lisCoolbarDeleteToolBar = 'Are you sure you want to delete the selected toolbar?'; + lisCoolbarSelectToolBar = 'Please select a toolbar first!'; + lisCoolbarAddSelected = 'Add selected item to toolbar'; + lisCoolbarRemoveSelected = 'Remove selected item from toolbar'; + lisCoolbarMoveSelectedUp = 'Move selected toolbar item up'; + lisCoolbarMoveSelectedDown = 'Move selected toolbar item down'; + lisCoolbarAddDivider = 'Add Divider'; + lisCoolbarClearSelection = 'Clear selection'; + lisToolbarConfiguration = 'Toolbar Configuration'; + lisCoolbarAvailableCommands = 'Available commands'; + lisCoolbarToolbarCommands = 'Toolbar commands'; + // Command root nodes + lisCoolbarIDEMainMenu = 'IDE Main Menu'; + lisCoolbarSourceTab = 'Source Tab'; + lisCoolbarSourceEditor = 'Source Editor'; + lisCoolbarMessages = 'Messages'; + lisCoolbarCodeExplorer = 'Code Explorer'; + lisCoolbarCodeTemplates = 'Code Templates'; + lisCoolbarDesigner = 'Designer'; + lisCoolbarPackageEditor = 'Package Editor'; + lisCoolbarPackageEditorFiles = 'Package Editor Files'; + + lisCoolbarAddConfigDelete = 'Add/Config/Delete Toolbar(s)'; + lisCoolbarGeneralSettings = 'General Coolbar Settings'; + lisCoolbarConfigure = '&Configure'; + lisCoolbarVisible = 'Coolbar is &visible'; + lisCoolbarWidth = 'Coolbar width'; + lisCoolbarGrabStyle = 'Toolbars grab style'; + lisCoolbarGrabStyleItem0 = 'Simple'; + lisCoolbarGrabStyleItem1 = 'Double'; + lisCoolbarGrabStyleItem2 = 'HorLines'; + lisCoolbarGrabStyleItem3 = 'VerLines'; + lisCoolbarGrabStyleItem4 = 'Gripper'; + lisCoolbarGrabStyleItem5 = 'Button'; + lisCoolbarGrabWidth = 'Grab width'; + lisCoolbarBorderStyle = 'Toolbars border style'; + lisCoolbarBorderStyleItem0 = 'None'; + lisCoolbarBorderStyleItem1 = 'Single'; + lisCoolbarDeleteWarning = 'There must be at least one toolbar!'; + lisCoolbarRestoreDefaults = 'Restore defaults'; + + // Editor Toolbar + lisEditorToolbar = 'Editor ToolBar'; + lisConfigureEditorToolbar = 'Configure Toolbar'; + lisEditorToolbarVisible = 'Editor Toolbar is &visible'; + lisEditorToolbarSettings = 'Editor Toolbar Settings'; + lisPosition = 'Position'; + // components palette settings and list form lisCmpPages = 'Pages'; - lisCmpRestoreDefaults = '&Restore defaults'; - lisImportExport = 'Import / Export'; lisCmpLstComponents = 'Components'; + lisCmpPaletteVisible = 'Palette is &visible'; + lisCmpRestoreDefaults = '&Restore defaults'; lisCmpLstList = 'List'; lisCmpLstPalette = 'Palette'; lisCmpLstInheritance = 'Inheritance'; + lisExportImport = 'Export / Import'; lisSuccessfullyImported = 'Successfully imported from "%s".'; lisSuccessfullyExported = 'Successfully exported to "%s".'; @@ -4824,7 +4999,6 @@ lisInheritedParameters = 'Inherited parameters'; lisShowRelativePaths = 'Show relative paths'; lisCommandLineParameters = 'Command line parameters'; - rsFormDataFileDfm = 'Form data file (*.dfm)|*.dfm'; liswlWatchList = 'Watch List'; liswlExpression = 'Expression'; lisKMChooseKeymappingScheme = 'Choose Keymapping scheme'; @@ -5308,17 +5482,19 @@ lisClassesAndPropertiesExistValuesWereNotChecked = 'Classes and properties ' +'exist. Values were not checked.'; lisInsertPrintShortTag = 'Insert PrintShort tag'; - lisIdCOpen = 'Open'; + lisIdCOpening = 'Opening'; lisAutomaticallyInvokeAfterPoint = 'Automatically invoke after point'; + lisAutomaticallyUseSinglePossibleIdent = 'Automatically use single possible identifier'; lisAddParameterBrackets = 'Add parameter brackets'; lisReplaceWholeIdentifier = 'Replace whole identifier'; lisEnableReplaceWholeIdentifierDisableReplacePrefix = 'Enable = replace ' +'whole identifier, Disable = replace prefix'; + lisJumpToError = 'Jump to error'; + lisJumpToErrorAtIdentifierCompletion = 'When an error in the sources is found at identifier completion, jump to it.'; lisShowHelp = 'Show help'; lisBestViewedByInstallingAHTMLControlLikeTurbopowerip = 'Best viewed by ' +'installing a HTML control like turbopoweriprodsgn'; lisShowRecentlyUsedIdentifiersAtTop = 'Show recently used identifiers at top'; - lisSort = 'Sort'; lisSortForScope = 'Sort for scope'; lisForExampleShowAtTopTheLocalVariablesThenTheMembers = 'For example show at' +' top the local variables, then the members of current class, then of the' @@ -5418,8 +5594,7 @@ lisCanNotCompileProject = 'Cannot compile project'; lisTheProjectHasNoMainSourceFile = 'The project has no main source file.'; - lisInvalidMacroTheNameIsAKeyword = 'Invalid macro name "%s". The name ' - +'is a keyword.'; + lisInvalidMacroTheNameIsAKeyword = 'Invalid macro name "%s". The name is a keyword.'; lisTheMacroDoesNotBeginWith = 'The macro "%s" does not begin with "%s".'; lisRenameTo = 'Rename to %s'; lisAddValueToMacro = 'Add value to macro %s'; @@ -5432,30 +5607,29 @@ lisConditionals = 'Conditionals'; lisDlgAllOptions = 'All options ...'; lisDlgDefines = 'Defines ...'; - lisSupportUTF8RTL = 'Support UTF-8 RTL'; lisWithIncludes2 = ', with includes '; lisParsed = ', parsed '; - lisCreatingFileIndexOfFPCSources = - 'Creating file index of FPC sources %s ...'; + lisCreatingFileIndexOfFPCSources = 'Creating file index of FPC sources %s ...'; lisTheFileIndexIsNeededForFunctionsLikeFindDeclaratio = 'The file index is ' +'needed for functions like find declaration. While scanning you can edit ' +'sources and compile, but functions like find declaration will show unit-' +'not-found errors. This can take a minute.'; lisActive = 'Active'; lisBuildModes = 'Build modes'; + lisAddFcUTF8 = 'Add -FcUTF8'; + lisAddFcUTF8Hint = 'May be needed if source files have non-ansistring literals.'; lisInSession = 'In session'; lisTheDefaultModeMustBeStoredInProject = 'The default mode must be stored in project, not in session.'; lisThereMustBeAtLeastOneBuildMode = 'There must be at least one build mode.'; lisDuplicateEntry = 'Duplicate entry'; - lisThereIsAlreadyABuildModeWithThisName = 'There is already a build mode ' - +'with this name.'; - lisAddNewBuildModeCopyingSettingsFrom = 'Add new build mode, copying ' - +'settings from "%s"'; + lisThereIsAlreadyABuildModeWithThisName = 'There is already a build mode with this name.'; + lisAddNewBuildModeCopyingSettingsFrom = 'Add new build mode, copying settings from "%s"'; lisDeleteMode = 'Delete mode "%s"'; lisMoveOnePositionUp = 'Move "%s" one position up'; lisMoveOnePositionDown = 'Move "%s" one position down'; lisShowDifferencesBetweenModes = 'Show differences between modes ...'; + lisBuildMode = 'Build Mode: %s'; lisCreateDebugAndReleaseModes = 'Create Debug and Release modes'; lisChangeBuildMode = 'Change build mode'; lisWarningThisIsTheMainUnitTheNewMainUnitWillBePas = '%sWarning: This is ' @@ -5558,7 +5732,7 @@ +'package create a simple Makefile.'; // Custom form editor - lisCFEAnExceptionOccuredDuringDeletionOf = 'An exception occured during ' + lisCFEAnExceptionOccuredDuringDeletionOf = 'An exception occurred during ' +'deletion of%s"%s:%s"%s%s'; lisCFETCustomFormEditorDeleteComponentWhereIsTheTCustomN = 'TCustomFormEditor' +'.DeleteComponent Where is the TCustomNonFormDesignerForm? %s'; @@ -5705,6 +5879,11 @@ lisUnableToCreateNewFileBecauseThereIsAlreadyADirecto = 'Unable to create ' +'new file, because there is already a directory with this name.'; + //Toolbar options + lisToolbarOptions = 'Toolbar'; + lisToolbarOptionsHighLight = 'Highlight toolbars buttons'; + lisToolbarOptionsRaise = 'Raise toolbars'; + // File Filters - Environment options lisFileFiltersTitle ='These are file filters that will appear in all File Open dialogs'; lisFileFilters = 'File Filters'; @@ -5801,6 +5980,8 @@ lisMMCustomOption = 'Custom Option'; lisMMIDEMacro = 'IDE Macro'; lisMMOverrideOutputDirectory = 'Override output directory (-FU)'; + lisMMUseSystemEncoding = 'Use system encoding'; + lisMMUseSystemEncodingHint = 'Disable support for UTF-8 default string encoding.'; lisPriority = 'Priority'; lisUDScanningUnits = 'Scanning: %s units ...'; lisUDFile = 'File: %s'; @@ -5837,6 +6018,7 @@ lisUDUnits2 = 'Units: %s'; lisCTOUpdateAllMethodSignatures = 'Update all method signatures'; lisCTOUpdateMultipleProcedureSignatures = 'Update multiple procedure signatures'; + lisGroupLocalVariables = 'Group automatically defined local variables'; lisUpdateOtherProcedureSignaturesWhenOnlyLetterCaseHa = 'Update other ' +'procedure signatures when only letter case has changed'; lisTemplateFile = 'Template file'; @@ -5910,6 +6092,14 @@ lisPageNameAlreadyExists = 'Page name "%s" already exists. Not added.'; lisJumpToProcedure = 'Jump to procedure %s'; lisFindDeclarationOf = 'Find Declaration of %s'; + lisInitializeLocalVariable = 'Initialize Local Variable'; + synfMatchActionPosOfMouseDown = 'Match action pos of mouse down'; + synfMatchActionLineOfMouseDown = 'Match action line of mouse down'; + synfSearchAllActionOfMouseDown = 'Search all action of mouse down'; + synfMatchActionButtonOfMouseDown = 'Match action button of mouse down'; + synfMatchActionModifiersOfMouseDown = 'Match action modifiers of mouse down'; + synfContinueWithNextMouseUpAction = 'Continue with next mouse up action'; + lisDuplicateUnitIn = 'Duplicate unit "%s" in "%s"'; implementation end. diff -Nru lazarus-1.4.4+dfsg/ide/lazarus.lpi lazarus-1.6+dfsg/ide/lazarus.lpi --- lazarus-1.4.4+dfsg/ide/lazarus.lpi 2015-10-03 16:44:06.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazarus.lpi 2016-02-14 09:55:12.000000000 +0000 @@ -17,13 +17,14 @@ <XPManifest> <DpiAware Value="True"/> </XPManifest> + <Icon Value="0"/> </General> <LazDoc Paths="docs/xml/ide"/> <VersionInfo> <UseVersionInfo Value="True"/> <MajorVersionNr Value="1"/> - <MinorVersionNr Value="4"/> - <RevisionNr Value="4"/> + <MinorVersionNr Value="6"/> + <BuildNr Value="4"/> <CharSet Value="04B0"/> <StringTable ProductName="Lazarus IDE" ProductVersion=""/> </VersionInfo> @@ -66,7 +67,7 @@ <PackageName Value="SynEdit"/> </Item7> </RequiredPackages> - <Units Count="240"> + <Units Count="241"> <Unit0> <Filename Value="lazarus.pp"/> <IsPartOfProject Value="True"/> @@ -254,6 +255,7 @@ <ComponentName Value="SourceNotebook"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> + <UnitName Value="SourceEditor"/> </Unit30> <Unit31> <Filename Value="componentlist.pas"/> @@ -303,6 +305,7 @@ <Unit38> <Filename Value="main.pp"/> <IsPartOfProject Value="True"/> + <UnitName Value="Main"/> </Unit38> <Unit39> <Filename Value="../designer/designer.pp"/> @@ -433,6 +436,7 @@ <ComponentName Value="CompilerOtherOptionsFrame"/> <HasResources Value="True"/> <ResourceBaseClass Value="Frame"/> + <UnitName Value="Compiler_Other_Options"/> </Unit59> <Unit60> <Filename Value="frames/compiler_compilation_options.pas"/> @@ -531,6 +535,7 @@ <Unit76> <Filename Value="ideguicmdline.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="IDEGuiCmdLine"/> </Unit76> <Unit77> <Filename Value="frames/env_file_filters.pas"/> @@ -603,6 +608,7 @@ <ComponentName Value="EditorOptionsForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> + <UnitName Value="EditorOptions"/> </Unit88> <Unit89> <Filename Value="../packager/cleanpkgdeps.pas"/> @@ -632,6 +638,7 @@ <Unit93> <Filename Value="../converter/convertdelphi.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="ConvertDelphi"/> </Unit93> <Unit94> <Filename Value="etfpcmsgparser.pas"/> @@ -647,6 +654,7 @@ <ComponentName Value="MessagesFrame"/> <HasResources Value="True"/> <ResourceBaseClass Value="Frame"/> + <UnitName Value="etMessageFrame"/> </Unit96> <Unit97> <Filename Value="etquickfixes.pas"/> @@ -677,6 +685,7 @@ <ComponentName Value="DebugAttachDialogForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> + <UnitName Value="DebugAttachDialog"/> </Unit101> <Unit102> <Filename Value="frames/msgwnd_options.pas"/> @@ -684,6 +693,7 @@ <ComponentName Value="MsgWndOptionsFrame"/> <HasResources Value="True"/> <ResourceBaseClass Value="Frame"/> + <UnitName Value="MsgWnd_Options"/> </Unit102> <Unit103> <Filename Value="compileroptions.pp"/> @@ -696,6 +706,7 @@ <Unit105> <Filename Value="compiler.pp"/> <IsPartOfProject Value="True"/> + <UnitName Value="Compiler"/> </Unit105> <Unit106> <Filename Value="exttooldialog.pas"/> @@ -773,10 +784,12 @@ <Unit122> <Filename Value="environmentopts.pp"/> <IsPartOfProject Value="True"/> + <UnitName Value="EnvironmentOpts"/> </Unit122> <Unit123> <Filename Value="lazarusidestrconsts.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="LazarusIDEStrConsts"/> </Unit123> <Unit124> <Filename Value="codetemplatesdlg.pas"/> @@ -791,6 +804,7 @@ <Unit126> <Filename Value="mainbase.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="MainBase"/> </Unit126> <Unit127> <Filename Value="buildmanager.pas"/> @@ -816,6 +830,7 @@ <Unit132> <Filename Value="mainbar.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="MainBar"/> </Unit132> <Unit133> <Filename Value="procedurelist.pas"/> @@ -878,444 +893,462 @@ <HasResources Value="True"/> </Unit145> <Unit146> - <Filename Value="addprofiledialog.pas"/> + <Filename Value="diskdiffsdialog.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit146> <Unit147> - <Filename Value="diskdiffsdialog.pas"/> + <Filename Value="unusedunitsdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit147> <Unit148> - <Filename Value="unusedunitsdlg.pas"/> + <Filename Value="fpdocselectlink.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit148> <Unit149> - <Filename Value="fpdocselectlink.pas"/> + <Filename Value="srcedithintfrm.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit149> <Unit150> - <Filename Value="srcedithintfrm.pas"/> + <Filename Value="findreplacedialog.pp"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit150> <Unit151> - <Filename Value="findreplacedialog.pp"/> + <Filename Value="idecontexthelpedit.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit151> <Unit152> - <Filename Value="idecontexthelpedit.pas"/> + <Filename Value="extractprocdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit152> <Unit153> - <Filename Value="extractprocdlg.pas"/> + <Filename Value="buildmodesmanager.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit153> <Unit154> - <Filename Value="buildmodesmanager.pas"/> + <Filename Value="codetoolsdefpreview.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit154> <Unit155> - <Filename Value="codetoolsdefpreview.pas"/> + <Filename Value="newprojectdlg.pp"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit155> <Unit156> - <Filename Value="newprojectdlg.pp"/> + <Filename Value="codetoolsoptions.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit156> <Unit157> - <Filename Value="codetoolsoptions.pas"/> + <Filename Value="keymapshortcutdlg.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit157> <Unit158> - <Filename Value="keymapshortcutdlg.pas"/> + <Filename Value="restrictionbrowser.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit158> <Unit159> - <Filename Value="restrictionbrowser.pas"/> + <Filename Value="emptymethodsdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit159> <Unit160> - <Filename Value="emptymethodsdlg.pas"/> + <Filename Value="newdialog.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit160> <Unit161> - <Filename Value="newdialog.pas"/> + <Filename Value="transfermacros.pp"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit161> <Unit162> - <Filename Value="transfermacros.pp"/> + <Filename Value="publishmodule.pas"/> <IsPartOfProject Value="True"/> </Unit162> <Unit163> - <Filename Value="publishmodule.pas"/> + <Filename Value="checkcompileropts.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> + <UnitName Value="CheckCompilerOpts"/> </Unit163> <Unit164> - <Filename Value="checkcompileropts.pas"/> + <Filename Value="inputfiledialog.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit164> <Unit165> - <Filename Value="inputfiledialog.pas"/> + <Filename Value="buildprofilemanager.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit165> <Unit166> - <Filename Value="buildprofilemanager.pas"/> + <Filename Value="comppagespopup.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit166> <Unit167> - <Filename Value="comppagespopup.pas"/> + <Filename Value="fpdoceditwindow.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit167> <Unit168> - <Filename Value="fpdoceditwindow.pas"/> + <Filename Value="unitinfodlg.pp"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit168> <Unit169> - <Filename Value="unitinfodlg.pp"/> + <Filename Value="multireplacedlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit169> <Unit170> - <Filename Value="multireplacedlg.pas"/> + <Filename Value="diffpatch.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit170> <Unit171> - <Filename Value="diffpatch.pas"/> + <Filename Value="lazarusmanager.pas"/> <IsPartOfProject Value="True"/> </Unit171> <Unit172> - <Filename Value="lazarusmanager.pas"/> + <Filename Value="macropromptdlg.pas"/> <IsPartOfProject Value="True"/> </Unit172> <Unit173> - <Filename Value="macropromptdlg.pas"/> + <Filename Value="ide.pas"/> <IsPartOfProject Value="True"/> </Unit173> <Unit174> - <Filename Value="ide.pas"/> + <Filename Value="publishprojectdlg.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit174> <Unit175> - <Filename Value="publishprojectdlg.pas"/> + <Filename Value="findoverloadsdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit175> <Unit176> - <Filename Value="findoverloadsdlg.pas"/> + <Filename Value="codeexplopts.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit176> <Unit177> - <Filename Value="codeexplopts.pas"/> + <Filename Value="encloseselectiondlg.pas"/> <IsPartOfProject Value="True"/> + <ComponentName Value="EncloseSelectionDialog"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="EncloseSelectionDlg"/> </Unit177> <Unit178> - <Filename Value="encloseselectiondlg.pas"/> + <Filename Value="fpmake.pp"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit178> <Unit179> - <Filename Value="fpmake.pp"/> + <Filename Value="miscoptions.pas"/> <IsPartOfProject Value="True"/> </Unit179> <Unit180> - <Filename Value="miscoptions.pas"/> + <Filename Value="codeexplorer.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit180> <Unit181> - <Filename Value="codeexplorer.pas"/> + <Filename Value="projectwizarddlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit181> <Unit182> - <Filename Value="projectwizarddlg.pas"/> + <Filename Value="projectdefs.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit182> <Unit183> - <Filename Value="projectdefs.pas"/> + <Filename Value="codemacroprompt.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit183> <Unit184> - <Filename Value="condef.pas"/> + <Filename Value="helpfpcmessages.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit184> <Unit185> - <Filename Value="codemacroprompt.pas"/> + <Filename Value="genericchecklist.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit185> <Unit186> - <Filename Value="helpfpcmessages.pas"/> + <Filename Value="patheditordlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit186> <Unit187> - <Filename Value="genericchecklist.pas"/> + <Filename Value="fpdocselectinherited.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit187> <Unit188> - <Filename Value="patheditordlg.pas"/> + <Filename Value="compoptsmodes.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit188> <Unit189> - <Filename Value="fpdocselectinherited.pas"/> + <Filename Value="applicationbundle.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> + <UnitName Value="ApplicationBundle"/> </Unit189> <Unit190> - <Filename Value="compoptsmodes.pas"/> + <Filename Value="msgvieweditor.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit190> <Unit191> - <Filename Value="applicationbundle.pas"/> + <Filename Value="viewunit_dlg.pp"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit191> <Unit192> - <Filename Value="msgvieweditor.pas"/> + <Filename Value="codetoolsdefines.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit192> <Unit193> - <Filename Value="viewunit_dlg.pp"/> + <Filename Value="frmcustomapplicationoptions.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit193> <Unit194> - <Filename Value="codetoolsdefines.pas"/> + <Filename Value="advhistorylist.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit194> <Unit195> - <Filename Value="frmcustomapplicationoptions.pas"/> + <Filename Value="exttooleditdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit195> <Unit196> - <Filename Value="advhistorylist.pas"/> + <Filename Value="addtoprojectdlg.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit196> <Unit197> - <Filename Value="exttooleditdlg.pas"/> + <Filename Value="sysvaruseroverridedlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit197> <Unit198> - <Filename Value="addtoprojectdlg.pas"/> + <Filename Value="raw_window.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit198> <Unit199> - <Filename Value="sysvaruseroverridedlg.pas"/> + <Filename Value="codehelp.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit199> <Unit200> - <Filename Value="raw_window.pas"/> + <Filename Value="diffdialog.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit200> <Unit201> - <Filename Value="codehelp.pas"/> + <Filename Value="keymapschemedlg.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit201> <Unit202> - <Filename Value="diffdialog.pas"/> + <Filename Value="gotofrm.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit202> <Unit203> - <Filename Value="keymapschemedlg.pas"/> + <Filename Value="ideoptiondefs.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit203> <Unit204> - <Filename Value="gotofrm.pas"/> + <Filename Value="sourceeditprocs.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit204> <Unit205> - <Filename Value="ideoptiondefs.pas"/> + <Filename Value="helpoptions.pas"/> <IsPartOfProject Value="True"/> </Unit205> <Unit206> - <Filename Value="sourceeditprocs.pas"/> + <Filename Value="findinfilesdlg.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit206> <Unit207> - <Filename Value="helpoptions.pas"/> + <Filename Value="ideoptionsdlg.pas"/> <IsPartOfProject Value="True"/> + <ComponentName Value="IDEOptionsDialog"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> </Unit207> <Unit208> - <Filename Value="findinfilesdlg.pas"/> + <Filename Value="findunitdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit208> <Unit209> - <Filename Value="ideoptionsdlg.pas"/> + <Filename Value="idewindowhelp.pas"/> <IsPartOfProject Value="True"/> - <ComponentName Value="IDEOptionsDialog"/> - <HasResources Value="True"/> - <ResourceBaseClass Value="Form"/> </Unit209> <Unit210> - <Filename Value="findunitdlg.pas"/> + <Filename Value="showcompileropts.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit210> <Unit211> - <Filename Value="idewindowhelp.pas"/> + <Filename Value="cleandirdlg.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit211> <Unit212> - <Filename Value="showcompileropts.pas"/> + <Filename Value="searchresultview.pp"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit212> <Unit213> - <Filename Value="cleandirdlg.pas"/> + <Filename Value="invertassigntool.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit213> <Unit214> - <Filename Value="searchresultview.pp"/> + <Filename Value="wordcompletion.pp"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit214> <Unit215> - <Filename Value="invertassigntool.pas"/> + <Filename Value="editdefinetree.pas"/> <IsPartOfProject Value="True"/> </Unit215> <Unit216> - <Filename Value="wordcompletion.pp"/> + <Filename Value="runparamsopts.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit216> <Unit217> - <Filename Value="editdefinetree.pas"/> + <Filename Value="idetranslations.pas"/> <IsPartOfProject Value="True"/> </Unit217> <Unit218> - <Filename Value="runparamsopts.pas"/> + <Filename Value="useunitdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> + <UnitName Value="UseUnitDlg"/> </Unit218> <Unit219> - <Filename Value="idetranslations.pas"/> + <Filename Value="keymapping.pp"/> <IsPartOfProject Value="True"/> </Unit219> <Unit220> - <Filename Value="useunitdlg.pas"/> + <Filename Value="redirect_stderr.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> - <UnitName Value="UseUnitDlg"/> </Unit220> <Unit221> - <Filename Value="keymapping.pp"/> + <Filename Value="clipboardhistory.pas"/> <IsPartOfProject Value="True"/> </Unit221> <Unit222> - <Filename Value="redirect_stderr.pas"/> + <Filename Value="allcompileroptions.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit222> <Unit223> - <Filename Value="clipboardhistory.pas"/> + <Filename Value="jumphistoryview.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit223> <Unit224> - <Filename Value="allcompileroptions.pas"/> + <Filename Value="ideprotocol.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit224> <Unit225> - <Filename Value="jumphistoryview.pas"/> + <Filename Value="progressdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit225> <Unit226> - <Filename Value="ideprotocol.pas"/> + <Filename Value="findrenameidentifier.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit226> <Unit227> - <Filename Value="progressdlg.pas"/> + <Filename Value="charactermapdlg.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit227> <Unit228> - <Filename Value="findrenameidentifier.pas"/> + <Filename Value="idedefs.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit228> <Unit229> - <Filename Value="charactermapdlg.pas"/> + <Filename Value="examplemanager.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit229> <Unit230> - <Filename Value="idedefs.pas"/> + <Filename Value="formeditor.pp"/> <IsPartOfProject Value="True"/> </Unit230> <Unit231> - <Filename Value="customdefines.pas"/> + <Filename Value="revision.inc"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit231> <Unit232> - <Filename Value="examplemanager.pas"/> + <Filename Value="objectlists.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit232> <Unit233> - <Filename Value="formeditor.pp"/> + <Filename Value="mouseactiondialog.pas"/> <IsPartOfProject Value="True"/> + <HasResources Value="True"/> </Unit233> <Unit234> - <Filename Value="revision.inc"/> + <Filename Value="basedebugmanager.pas"/> <IsPartOfProject Value="True"/> </Unit234> <Unit235> - <Filename Value="objectlists.pas"/> + <Filename Value="imexportcompileropts.pas"/> <IsPartOfProject Value="True"/> + <ComponentName Value="ImExportCompOptsDlg"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> </Unit235> <Unit236> - <Filename Value="mouseactiondialog.pas"/> + <Filename Value="initialsetupproc.pas"/> <IsPartOfProject Value="True"/> - <HasResources Value="True"/> </Unit236> <Unit237> - <Filename Value="basedebugmanager.pas"/> + <Filename Value="qfinitlocalvardlg.pas"/> <IsPartOfProject Value="True"/> + <ComponentName Value="QFInitLocalVarDialog"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> </Unit237> <Unit238> - <Filename Value="imexportcompileropts.pas"/> + <Filename Value="../packager/interpkgconflictfiles.pas"/> <IsPartOfProject Value="True"/> - <ComponentName Value="ImExportCompOptsDlg"/> <HasResources Value="True"/> - <ResourceBaseClass Value="Form"/> </Unit238> <Unit239> - <Filename Value="initialsetupproc.pas"/> + <Filename Value="encloseifdef.pas"/> <IsPartOfProject Value="True"/> + <ComponentName Value="EncloseIfDefForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="EncloseIfDef"/> </Unit239> + <Unit240> + <Filename Value="definesgui.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="DefinesGuiForm"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="DefinesGui"/> + </Unit240> </Units> </ProjectOptions> <CompilerOptions> diff -Nru lazarus-1.4.4+dfsg/ide/lazarusmanager.pas lazarus-1.6+dfsg/ide/lazarusmanager.pas --- lazarus-1.4.4+dfsg/ide/lazarusmanager.pas 2014-05-30 12:41:17.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazarusmanager.pas 2015-11-15 07:31:22.000000000 +0000 @@ -91,9 +91,9 @@ {$IFDEF unix} BaseUnix, {$ENDIF} - Classes, SysUtils, Process, UTF8Process, - LCLProc, FileProcs, FileUtil, LazFileUtils, Forms, Controls, Dialogs, - IDECmdLine, LazConf, Splash, BaseIDEIntf; + Classes, SysUtils, Process, Forms, Controls, Dialogs, LCLProc, + UTF8Process, FileUtil, FileProcs, LazUTF8, LazFileUtils, + IDECmdLine, LazConf, Splash, BaseIDEIntf, IDEInstances; type @@ -167,7 +167,7 @@ Result := mrAbort; exit; end; - if not FileProcs.RenameFileUTF8(CurFilename, BackupFileName) then begin + if not RenameFileUTF8(CurFilename, BackupFileName) then begin MessageDlg (format('Can''t rename "%s" to "%s"'+LineEnding+'%s', [CurFilename, BackupFileName, SysErrorMessageUTF8(GetLastOSError)]), mtError, [mbOK], 0); @@ -176,7 +176,7 @@ end; InvalidateFileStateCache; end; - if not FileProcs.RenameFileUTF8(NewFileName, CurFilename) then begin + if not RenameFileUTF8(NewFileName, CurFilename) then begin MessageDlg (format('Can''t rename "%s" to "%s"'+LineEnding+'%s', [NewFileName, CurFilename, SysErrorMessageUTF8(GetLastOSError)]), mtError, [mbOK], 0); @@ -244,13 +244,17 @@ if FShowSplashOption then ShowSplash; + // we already handled IDEInstances, ignore it in lazarus EXE + if (FCmdLineParams.IndexOf(ForceNewInstanceOpt) = -1) then + FCmdLineParams.Add(ForceNewInstanceOpt); + // set primary config path PCP:=ExtractPrimaryConfigPath(FCmdLineParams); if PCP<>'' then SetPrimaryConfigPath(PCP); // get command line files - CmdLineFiles := ExtractCmdLineFilenames; + CmdLineFiles := LazIDEInstances.FilesToOpen; if CmdLineFiles<>nil then begin for i := 0 to CmdLineFiles.Count-1 do diff -Nru lazarus-1.4.4+dfsg/ide/lazarus.pp lazarus-1.6+dfsg/ide/lazarus.pp --- lazarus-1.4.4+dfsg/ide/lazarus.pp 2014-09-14 09:48:01.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazarus.pp 2015-11-02 07:20:20.000000000 +0000 @@ -38,7 +38,9 @@ {off $DEFINE IDE_MEM_CHECK} uses + {$IFDEF EnableRedirectStdErr} redirect_stderr, + {$ENDIF} {$IF defined(UNIX) and not defined(DisableMultiThreading)} cthreads, {$ENDIF} @@ -50,7 +52,9 @@ {$IFEND} SysUtils, Interfaces, + IDEInstances,//keep IDEInstances up so that it will be initialized soon Forms, LCLProc, + IDEOptionsIntf, LazConf, IDEGuiCmdLine, Splash, Main, @@ -65,9 +69,7 @@ TurboPowerIPro, TurboPowerIProDsgn, jcfidelazarus, chmhelppkg, FPCUnitTestRunner, FPCUnitIDE, ProjTemplates, TAChartLazarusPkg, - TodoListLaz, EditorToolbar, DateTimeCtrls, - SQLDBLaz, DBFLaz, - pascalscript, EditorMacroScript, + TodoListLaz, DateTimeCtrls, SQLDBLaz, DBFLaz, pascalscript, EditorMacroScript, {$ENDIF} MainBase; @@ -76,6 +78,7 @@ {$R ../images/laz_images.res} begin + HasGUI:=true; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('lazarus.pp: begin');{$ENDIF} RequireDerivedFormResource := True; @@ -101,7 +104,16 @@ Application.{%H-}MainFormOnTaskBar := False; {$ENDIF} + {$IF (FPC_FULLVERSION >= 30101) AND DEFINED(MSWINDOWS) AND DECLARED(useheaptrace)} + // don't show empty heaptrc output dialog on windows + heaptrc.GlobalSkipIfNoLeaks := True; + {$ENDIF} + Application.Initialize; + LazIDEInstances.PerformCheck; + if not LazIDEInstances.StartIDE then + Exit; + LazIDEInstances.StartServer; TMainIDE.ParseCmdLineOptions; if not SetupMainIDEInstance then exit; if Application.Terminated then exit; Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/ide/lazarus.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/ide/lazarus.res differ diff -Nru lazarus-1.4.4+dfsg/ide/lazbuild.lpi lazarus-1.6+dfsg/ide/lazbuild.lpi --- lazarus-1.4.4+dfsg/ide/lazbuild.lpi 2014-09-25 10:04:08.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazbuild.lpi 2015-03-18 21:44:39.000000000 +0000 @@ -52,6 +52,7 @@ <Unit1> <Filename Value="buildmanager.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="BuildManager"/> </Unit1> <Unit2> <Filename Value="basebuildmanager.pas"/> @@ -60,6 +61,7 @@ <Unit3> <Filename Value="idecmdline.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="IDECmdLine"/> </Unit3> </Units> </ProjectOptions> @@ -70,7 +72,7 @@ </Target> <SearchPaths> <IncludeFiles Value="include;include/$(TargetOS)"/> - <OtherUnitFiles Value="../designer;../packager;../debugger"/> + <OtherUnitFiles Value="../designer;../packager;../debugger;../ide"/> <UnitOutputDirectory Value="../units/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/> </SearchPaths> </CompilerOptions> diff -Nru lazarus-1.4.4+dfsg/ide/lazbuild.lpr lazarus-1.6+dfsg/ide/lazbuild.lpr --- lazarus-1.4.4+dfsg/ide/lazbuild.lpr 2015-05-21 11:37:36.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazbuild.lpr 2015-11-18 11:18:21.000000000 +0000 @@ -28,21 +28,22 @@ {$IFDEF unix} cthreads, {$ENDIF} - Classes, SysUtils, math, + Classes, SysUtils, math, CustApp, Interfaces, // this includes the NoGUI widgetset - CustApp, LCLProc, Dialogs, Forms, Controls, - FileUtil, Masks, InterfaceBase, UTF8Process, LConvEncoding, + LCLProc, Dialogs, Forms, Controls, InterfaceBase, // codetools - CodeCache, CodeToolManager, DefineTemplates, Laz2_XMLCfg, LazUTF8, + CodeCache, CodeToolManager, DefineTemplates, FileProcs, // IDEIntf MacroIntf, PackageIntf, IDEDialogs, ProjectIntf, IDEExternToolIntf, - CompOptsIntf, LazIDEIntf, + CompOptsIntf, IDEOptionsIntf, LazIDEIntf, + // LazUtils + Masks, LConvEncoding, Laz2_XMLCfg, FileUtil, LazFileUtils, LazUTF8, // IDE IDEProcs, InitialSetupProc, ExtTools, CompilerOptions, ApplicationBundle, TransferMacros, EnvironmentOpts, IDETranslations, LazarusIDEStrConsts, - IDECmdLine, ExtToolDialog, MiscOptions, Project, LazConf, PackageDefs, - PackageLinks, PackageSystem, BuildLazDialog, BuildProfileManager, - BuildManager, BaseBuildManager, ModeMatrixOpts; + IDECmdLine, MiscOptions, Project, LazConf, PackageDefs, + PackageLinks, PackageSystem, InterPkgConflictFiles, BuildLazDialog, + BuildProfileManager, BuildManager, BaseBuildManager, ModeMatrixOpts; type @@ -62,7 +63,9 @@ fLazarusDirOverride : String; fLazarusDirInCfg: string; fCPUOverride: String; + FMaxProcessCount: integer; fOSOverride: String; + FPkgGraphVerbosity: TPkgVerbosityFlags; FSkipDependencies: boolean; fInitialized: boolean; fInitResult: boolean; @@ -81,11 +84,11 @@ out Directory: string); // Event procedure that adds every package added to the package graph to the (user) package links procedure PackageGraphAddPackage(Pkg: TLazPackage); + function PackageGraphCheckInterPkgFiles(IDEObject: TObject; + PkgList: TFPList; out FilesChanged: boolean): boolean; // project procedure OnProjectChangeInfoFile(TheProject: TProject); - procedure OnProjectGetTestDirectory({%H-}TheProject: TProject; out - TestDir: string); // dialogs function OnIDEMessageDialog(const aCaption, aMsg: string; @@ -162,6 +165,8 @@ property CompilerOverride: String read fCompilerOverride write fCompilerOverride; property LazarusDirOverride: String read fLazarusDirOverride write fLazarusDirOverride; property BuildModeOverride: String read FBuildModeOverride write FBuildModeOverride; + property MaxProcessCount: integer read FMaxProcessCount write FMaxProcessCount; + property PkgGraphVerbosity: TPkgVerbosityFlags read FPkgGraphVerbosity write FPkgGraphVerbosity; end; var @@ -221,8 +226,8 @@ Description:=Format(lisPkgMangPackage, [TLazPackage(DepOwner).IDAsString] ); end else if DepOwner is TProject then begin - Description:=Format(lisPkgMangProject, [ExtractFileNameOnly(TProject( - DepOwner).ProjectInfoFile)]); + Description:=Format(lisPkgMangProject, + [ExtractFileNameOnly(TProject(DepOwner).ProjectInfoFile)]); end else begin Description:=dbgsName(DepOwner) end; @@ -262,6 +267,9 @@ DebugLn(['TLazBuildApplication.OnCodeBufferEncodeSaving Filename=',Code.Filename,' Mem=',Code.MemEncoding,' to Disk=',Code.DiskEncoding]); {$ENDIF} Source:=ConvertEncoding(Source,Code.MemEncoding,Code.DiskEncoding); + {$IF FPC_FULLVERSION >= 20701} + //SetCodePage(Source,CP_ACP); + {$ENDIF} end; end; @@ -299,6 +307,12 @@ if FileExists(Pkg.FileName) then PkgLinks.AddUserLink(Pkg); end; +function TLazBuildApplication.PackageGraphCheckInterPkgFiles( + IDEObject: TObject; PkgList: TFPList; out FilesChanged: boolean): boolean; +begin + Result:=CheckInterPkgFiles(IDEObject,PkgList,FilesChanged); +end; + procedure TLazBuildApplication.OnProjectChangeInfoFile(TheProject: TProject); begin if TheProject<>Project1 then exit; @@ -309,12 +323,6 @@ Project1.ProjectDirectory) end; -procedure TLazBuildApplication.OnProjectGetTestDirectory(TheProject: TProject; - out TestDir: string); -begin - TestDir:=BuildBoss.GetTestBuildDirectory; -end; - function TLazBuildApplication.OnIDEMessageDialog(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; const HelpKeyword: string ): Integer; @@ -413,6 +421,9 @@ if not Init then exit; + if ConsoleVerbosity>=0 then + debugln(['Hint: (lazarus) compile package "',AFilename,'"']); + APackage:=LoadPackage(AFilename); if APackage=nil then Error(ErrorLoadPackageFailed, 'unable to load package "'+AFilename+'"'); @@ -504,7 +515,7 @@ i:=BuildLazProfiles.IndexByName(BuildModeOverride); if i<0 then begin - debugln(['ERROR: IDE build mode "'+BuildModeOverride+'" not found']); + debugln(['Error: (lazarus) IDE build mode "'+BuildModeOverride+'" not found']); if ConsoleVerbosity>=-2 then begin debugln; debugln('Available IDE build modes:'); @@ -524,7 +535,7 @@ BuildLazProfiles.CurrentIndex:=i; end; if ConsoleVerbosity>=0 then - debugln(['NOTE: Building Lazarus IDE with profile "',CurProf.Name,'"']); + debugln(['Hint: (lazarus) Building Lazarus IDE with profile "',CurProf.Name,'"']); if (Length(OSOverride) <> 0) then CurProf.TargetOS:=OSOverride; @@ -556,7 +567,7 @@ IDEMacros.SubstituteMacros(TargetDir); if not ForceDirectory(TargetDir) then begin if ConsoleVerbosity>=-1 then - DebugLn('WARNING: failed creating IDE target directory "',TargetDir,'" (TLazBuildApplication.BuildLazarusIDE)'); + DebugLn('Warning: (lazarus) failed creating IDE target directory "',TargetDir,'" (TLazBuildApplication.BuildLazarusIDE)'); exit; end; @@ -571,7 +582,7 @@ Flags+[blfDontBuild]); if CurResult<>mrOk then begin if ConsoleVerbosity>=-1 then - DebugLn('ERROR: BuildLazarusIDE: Clean all failed.'); + DebugLn('Error: (lazarus) Building IDE: Clean all failed.'); exit; end; end; @@ -580,7 +591,7 @@ CurResult:=PackageGraph.SaveAutoInstallConfig; if CurResult<>mrOk then begin if ConsoleVerbosity>=-1 then - DebugLn('ERROR: BuildLazarusIDE: failed saving IDE make config files.'); + DebugLn('Error: (lazarus) Building IDE: failed saving IDE make config files.'); exit; end; @@ -588,7 +599,7 @@ if not CompileAutoInstallPackages(BuildLazProfiles.Current.IdeBuildMode<>bmBuild) then begin if ConsoleVerbosity>=-1 then - DebugLn('ERROR: BuildLazarusIDE: Compile AutoInstall Packages failed.'); + DebugLn('Error: (lazarus) Building IDE: Compile AutoInstall Packages failed.'); exit; end; @@ -599,7 +610,7 @@ CurResult:=Builder.SaveIDEMakeOptions(BuildLazProfiles.Current,Flags+[blfBackupOldExe]); if CurResult<>mrOk then begin if ConsoleVerbosity>=-1 then - DebugLn('ERROR: BuildLazarusIDE: failed saving idemake.cfg'); + DebugLn('Error: (lazarus) Building IDE: failed saving idemake.cfg'); exit; end; @@ -608,7 +619,7 @@ Flags+[blfUseMakeIDECfg,blfOnlyIDE]); if CurResult<>mrOk then begin if ConsoleVerbosity>=-1 then - DebugLn('ERROR: BuildLazarusIDE: Building IDE failed.'); + DebugLn('Error: (lazarus) Building IDE: Building IDE failed.'); exit; end; @@ -790,7 +801,7 @@ Error(ErrorBuildFailed,'Unable to create project unit output directory '+UnitOutputDirectory); // create target output directory - TargetExeName := Project1.CompilerOptions.CreateTargetFilename(Project1.MainFilename); + TargetExeName := Project1.CompilerOptions.CreateTargetFilename; TargetExeDir := ExtractFilePath(TargetExeName); if not ForceDirectory(TargetExeDir) then Error(ErrorBuildFailed,'Unable to create project target directory '+TargetExeDir); @@ -812,7 +823,7 @@ if not Project1.ProjResources.Regenerate(SrcFileName, False, True, '') then begin if ConsoleVerbosity>=-1 then - DebugLn('TLazBuildApplication.BuildProject Project1.Resources.Regenerate failed'); + DebugLn('Error: (lazarus) Project1.Resources.Regenerate failed of ',SrcFilename); end; // get compiler parameters @@ -822,7 +833,7 @@ CompilerFilename:=Project1.GetCompilerFilename; //DebugLn(['TLazBuildApplication.BuildProject CompilerFilename="',CompilerFilename,'" CompilerPath="',Project1.CompilerOptions.CompilerPath,'"']); // CompileHint: use absolute paths, same as TBuildManager.DoCheckIfProjectNeedsCompilation - CompilerParams:=Project1.CompilerOptions.MakeOptionsString(SrcFilename,[ccloAbsolutePaths]) + CompilerParams:=Project1.CompilerOptions.MakeOptionsString([ccloAbsolutePaths]) +' '+PrepareCmdLineOption(SrcFilename); NeedBuildAllFlag:=false; @@ -830,18 +841,18 @@ if (crCompile in Project1.CompilerOptions.CompileReasons) then begin // check if project is already uptodate SubResult:=MainBuildBoss.DoCheckIfProjectNeedsCompilation(Project1, - NeedBuildAllFlag,CompileHint); + NeedBuildAllFlag,CompileHint); if (not BuildAll) and (not (pfAlwaysBuild in Project1.Flags)) then begin if SubResult=mrNo then begin if ConsoleVerbosity>=0 then - debugln(['TLazBuildApplication.BuildProject MainBuildBoss.DoCheckIfProjectNeedsCompilation nothing to be done']); + debugln(['Hint: (lazarus) [TLazBuildApplication.BuildProject] MainBuildBoss.DoCheckIfProjectNeedsCompilation nothing to do']); exit(true); end; if SubResult<>mrYes then begin if ConsoleVerbosity>=0 then - debugln(['TLazBuildApplication.BuildProject MainBuildBoss.DoCheckIfProjectNeedsCompilation failed']); + debugln(['Hint: (lazarus) [TLazBuildApplication.BuildProject] MainBuildBoss.DoCheckIfProjectNeedsCompilation failed']); exit(false); end; end; @@ -944,6 +955,19 @@ end else Result := StartBuilding; + + // Auto increment build number + if Result then + begin + with Project1.ProjResources.VersionInfo do + begin + if UseVersionInfo and AutoIncrementBuild then + begin + BuildNr := BuildNr + 1; + Project1.WriteProject(Project1.PublishOptions.WriteFlags,AFileName,EnvironmentOptions.BuildMatrixOptions); + end; + end; + end; end; function TLazBuildApplication.LoadProject(const AFilename: string): TProject; @@ -964,7 +988,6 @@ Result.MainProject:=true; Result.OnFileBackup:=@BuildBoss.BackupFile; - Result.OnGetTestDirectory:=@OnProjectGetTestDirectory; Result.OnChangeProjectInfoFile:=@OnProjectChangeInfoFile; finally @@ -1047,7 +1070,7 @@ PackageName:=Package.Name; // set it as (static) autoinstall: select for installation if ConsoleVerbosity>=0 then - debugln(['adding package "'+PkgFilename+'" to install list of IDE']); + debugln(['Hint: (lazarus) adding package "'+PkgFilename+'" to install list of IDE']); if MiscellaneousOptions.BuildLazProfiles.StaticAutoInstallPackages.IndexOf(PackageName)<0 then MiscellaneousOptions.BuildLazProfiles.StaticAutoInstallPackages.Add(PackageName); end; @@ -1058,6 +1081,7 @@ end; // save list MiscellaneousOptions.Save; + PkgLinks.SaveUserLinks(true); Result:=true; end; @@ -1069,11 +1093,10 @@ fInitialized:=true; if ConsoleVerbosity>=0 then - debugln(['primary config path: ',GetPrimaryConfigPath]); + debugln(['Hint: (lazarus) primary config path: ',GetPrimaryConfigPath]); CreatePrimaryConfigPath; MainBuildBoss:=TBuildManager.Create(nil); - MainBuildBoss.HasGUI:=false; SetupMacros; LoadEnvironmentOptions; if Terminated then exit(false); @@ -1109,7 +1132,7 @@ if LazBuildApp.HasOption('language') then begin if ConsoleVerbosity>=0 then - debugln('Note: overriding language with command line: ', + debugln('Note: (lazarus) overriding language with command line: ', LazBuildApp.GetOptionValue('language')); EnvironmentOptions.LanguageID:=LazBuildApp.GetOptionValue('language'); end; @@ -1120,13 +1143,15 @@ //debugln(['TLazBuildApplication.LoadEnvironmentOptions LazarusDirectory="',LazarusDirectory,'"']); if LazarusDirOverride<>'' then LazarusDirectory:=CleanAndExpandDirectory(LazarusDirOverride); + if MaxProcessCount>=0 then; + MaxExtToolsInParallel:=MaxProcessCount; end; if not FileExistsUTF8(EnvironmentOptions.GetParsedLazarusDirectory +SetDirSeparators('packager/registration/fcl.lpk')) then begin CheckLazarusDirectoryQuality(EnvironmentOptions.GetParsedLazarusDirectory,Note); if ConsoleVerbosity>=-1 then - debugln(['Error: invalid Lazarus directory "'+EnvironmentOptions.LazarusDirectory+'": '+Note]); + debugln(['Error: (lazarus) invalid Lazarus directory "'+EnvironmentOptions.LazarusDirectory+'": '+Note]); Terminate; end; end; @@ -1167,7 +1192,10 @@ // package graph PackageGraph:=TLazPackageGraph.Create; + PackageGraphInterface:=PackageGraph; PackageGraph.OnAddPackage:=@PackageGraphAddPackage; + PackageGraph.OnCheckInterPkgFiles:=@PackageGraphCheckInterPkgFiles; + PackageGraph.Verbosity:=PkgGraphVerbosity; end; procedure TLazBuildApplication.SetupDialogs; @@ -1189,7 +1217,7 @@ try if ConsoleVerbosity>=-1 then begin - dbgout('storing'); + dbgout('Hint: (lazarus) storing'); if StoreLazDir then dbgout(' Lazarus directory "',EnvironmentOptions.LazarusDirectory,'"'); if StoreCompPath then @@ -1209,6 +1237,8 @@ Cfg.Free; end; except + on E: Exception do + debugln(['Error: (lazarus) unable to edit file ',EnvironmentOptions.Filename]); end; end; @@ -1316,7 +1346,7 @@ begin // Required argument NeedArg:=true; - if ConsoleVerbosity>=-1 then + if ConsoleVerbosity>0 then debugln(['P ',P,' J ',J,' ',O[J],' ',l,' Havearg ',HaveArg]); If ((P+1)=Length(ShortOptions)) or (Shortoptions[P+2]<>':') Then If (J<L) or not haveArg then // Must be last in multi-opt !! @@ -1347,6 +1377,7 @@ inherited Create(TheOwner); SetupDialogs; Files:=TStringList.Create; + fMaxProcessCount:=-1; end; destructor TLazBuildApplication.Destroy; @@ -1383,7 +1414,7 @@ for i:=0 to Files.Count-1 do begin if not BuildFile(Files[i]) then begin if ConsoleVerbosity>=-1 then - debugln('Failed building ',Files[i]); + debugln('Error: (lazarus) Building failed: ',Files[i]); ExitCode := ErrorBuildFailed; exit; end; @@ -1393,7 +1424,7 @@ if AddPackage then begin if not AddPackagesToInstallList(Files) then begin if ConsoleVerbosity>=-1 then - debugln('Failed adding package(s) ',Files.Text); + debugln('Error (lazarus) Adding package(s) failed: ',Files.Text); ExitCode := ErrorBuildFailed; exit; end; @@ -1443,6 +1474,7 @@ else if (p='-q') or (p='--quiet') then ConsoleVerbosity:=Min(0,ConsoleVerbosity-1); end; + CTConsoleVerbosity:=ConsoleVerbosity; Options:=TStringList.Create; NonOptions:=TStringList.Create; @@ -1450,6 +1482,7 @@ try LongOptions.Add('quiet'); LongOptions.Add('verbose'); + LongOptions.Add('verbose-pkgsearch'); LongOptions.Add('primary-config-path:'); LongOptions.Add('pcp:'); LongOptions.Add('secondary-config-path:'); @@ -1470,6 +1503,7 @@ LongOptions.Add('compiler:'); LongOptions.Add('lazarusdir:'); LongOptions.Add('create-makefile'); + LongOptions.Add('max-process-count:'); ErrorMsg:=RepairedCheckOptions('lBrdq',LongOptions,Options,NonOptions); if ErrorMsg<>'' then begin writeln(ErrorMsg); @@ -1477,15 +1511,17 @@ exit; end; + if HasOption('verbose-pkgsearch') then + Include(fPkgGraphVerbosity,pvPkgSearch); + // building IDE if HasOption('build-ide') then begin BuildIDE:=true; BuildIDEOptions:=GetOptionValue('build-ide'); + if ConsoleVerbosity>=0 then + writeln('Parameter: build-ide=',BuildIDEOptions); end; - // Add package to list of to be installed packages) - AddPackage:=HasOption('add-package'); - // files Files.Assign(NonOptions); if (Files.Count=0) and (not BuildIDE) then begin @@ -1494,27 +1530,52 @@ exit; end; + // Add package to list of to be installed packages + if HasOption('add-package') then begin + AddPackage:=true; + if ConsoleVerbosity>=0 then + writeln('Parameter: add-package'); + end; + // primary config path - if HasOption('primary-config-path') then - SetPrimaryConfigPath(GetOptionValue('primary-config-path')) - else if HasOption('pcp') then + if HasOption('primary-config-path') then begin + SetPrimaryConfigPath(GetOptionValue('primary-config-path')); + if ConsoleVerbosity>=0 then + writeln('Parameter: primary-config-path=',GetPrimaryConfigPath); + end else if HasOption('pcp') then begin SetPrimaryConfigPath(GetOptionValue('pcp')); + if ConsoleVerbosity>=0 then + writeln('Parameter: pcp=',GetPrimaryConfigPath); + end; // secondary config path - if HasOption('secondary-config-path') then - SetPrimaryConfigPath(GetOptionValue('secondary-config-path')) - else if HasOption('scp') then + if HasOption('secondary-config-path') then begin + SetPrimaryConfigPath(GetOptionValue('secondary-config-path')); + if ConsoleVerbosity>=0 then + writeln('Parameter: secondary-config-path=',GetSecondaryConfigPath); + end else if HasOption('scp') then begin SetSecondaryConfigPath(GetOptionValue('scp')); - + if ConsoleVerbosity>=0 then + writeln('Parameter: scp=',GetSecondaryConfigPath); + end; + // build all - if HasOption('B','build-all') then + if HasOption('B','build-all') then begin BuildAll:=true; + if ConsoleVerbosity>=0 then + writeln('Parameter: build-all'); + end; if HasOption('r','recursive') then begin BuildAll:=true; BuildRecursive:=true; + if ConsoleVerbosity>=0 then + writeln('Parameter: recursive'); end; - if HasOption('d','skip-dependencies') then + if HasOption('d','skip-dependencies') then begin SkipDependencies:=true; + if ConsoleVerbosity>=0 then + writeln('Parameter: skip-dependencies'); + end; if BuildRecursive and SkipDependencies then begin writeln('Error: --recursive and --skip-dependencies. You have to make up your mind.'); WriteUsage; @@ -1523,39 +1584,73 @@ // overides // widgetset - if HasOption('ws') then - WidgetSetOverride := GetOptionValue('ws') - else if HasOption('widgetset') then + if HasOption('ws') then begin + WidgetSetOverride := GetOptionValue('ws'); + if ConsoleVerbosity>=0 then + writeln('Parameter: ws=',WidgetSetOverride); + end else if HasOption('widgetset') then begin WidgetSetOverride := GetOptionValue('widgetset'); - + if ConsoleVerbosity>=0 then + writeln('Parameter: widgetset=',WidgetSetOverride); + end; + // operating system - if HasOption('os') then - OSOverride := GetOptionValue('os') - else if HasOption('operating-system') then + if HasOption('os') then begin + OSOverride := GetOptionValue('os'); + if ConsoleVerbosity>=0 then + writeln('Parameter: os=',OSOverride); + end else if HasOption('operating-system') then begin OSOverride := GetOptionValue('operating-system'); + if ConsoleVerbosity>=0 then + writeln('Parameter: operating-system=',OSOverride); + end; // cpu - if HasOption('cpu') then + if HasOption('cpu') then begin CPUOverride := GetOptionValue('cpu'); + if ConsoleVerbosity>=0 then + writeln('Parameter: cpu=',CPUOverride); + end; // build mode - if HasOption('bm') then - BuildModeOverride := GetOptionValue('bm') - else if HasOption('build-mode') then + if HasOption('bm') then begin + BuildModeOverride := GetOptionValue('bm'); + if ConsoleVerbosity>=0 then + writeln('Parameter: bm=',BuildModeOverride); + end else if HasOption('build-mode') then begin BuildModeOverride := GetOptionValue('build-mode'); + if ConsoleVerbosity>=0 then + writeln('Parameter: build-mode=',BuildModeOverride); + end; // compiler - if HasOption('compiler') then + if HasOption('compiler') then begin CompilerOverride := GetOptionValue('compiler'); + if ConsoleVerbosity>=0 then + writeln('Parameter: compiler=',CompilerOverride); + end; - if HasOption('lazarusdir') then + // lazarusdir + if HasOption('lazarusdir') then begin LazarusDirOverride := GetOptionValue('lazarusdir'); + if ConsoleVerbosity>=0 then + writeln('Parameter: lazarusdir=',LazarusDirOverride); + end; + + // max-process-count + if HasOption('max-process-count') then begin + MaxProcessCount:=StrToInt(GetOptionValue('max-process-count')); + if ConsoleVerbosity>=0 then + writeln('Parameter: max-process-count=',MaxProcessCount); + end; if HasOption('create-makefile') then begin CreateMakefile := true; + if ConsoleVerbosity>=0 then + writeln('Parameter: create-makefile'); if AddPackage then - Error(ErrorPackageNameInvalid,'Can you combine --create-makefile and --add-package'); + Error(ErrorPackageNameInvalid,'You can not combine --create-makefile and --add-package'); end; finally Options.Free; @@ -1573,37 +1668,53 @@ begin Result:=UTF8ToConsole(BreakString(s,75, length(space))) end; + + procedure w(Msg: string); + begin + writeln(LongToConsole(Msg)); + end; + begin TranslateResourceStrings(ProgramDirectory(true),''); writeln(''); writeln('lazbuild [options] <project/package filename or package name>'); writeln(''); - writeln(UTF8ToConsole(lisEdtExtToolParameters)); + w(lisEdtExtToolParameters); writeln(''); - writeln('--help or -? ', UTF8ToConsole(listhisHelpMessage)); - writeln(''); - writeln('-B or --build-all ', UTF8ToConsole(lisBuildAllFilesOfProjectPackageIDE)); - writeln('-r or --recursive ', UTF8ToConsole(lisApplyBuildFlagsBToDependenciesToo)); - writeln('-d or --skip-dependencies ', UTF8ToConsole(lisDoNotCompileDependencies)); - writeln('--build-ide=<options> ', UTF8ToConsole(lisBuildIDEWithPackages)); - writeln('-v or --version ', UTF8ToConsole(lisShowVersionAndExit)); - writeln('-q or --quiet ', UTF8ToConsole(lisBeLessVerboseCanBeGivenMultipleTimes)); - writeln('--verbose ', UTF8ToConsole(lisBeMoreVerboseCanBeGivenMultipleTimes)); + writeln('--help or -?'); + w(space+listhisHelpMessage); + writeln('-B or --build-all'); + w(space+lisBuildAllFilesOfProjectPackageIDE); + writeln('-r or --recursive'); + w(space+lisApplyBuildFlagsBToDependenciesToo); + writeln('-d or --skip-dependencies'); + w(space+lisDoNotCompileDependencies); + writeln('--build-ide=<options>'); + w(space+lisBuildIDEWithPackages); + writeln('-v or --version'); + w(space+lisShowVersionAndExit); + writeln('-q or --quiet'); + w(space+lisBeLessVerboseCanBeGivenMultipleTimes); + w(space+'Passing quiet two times, will pass -vw-n-h-i-l-d-u-t-p-c-x- to the compiler'); + writeln('--verbose'); + w(space+lisBeMoreVerboseCanBeGivenMultipleTimes); + writeln('--verbose-pkgsearch'); + w(space+'Write what package files are searched and found'); writeln(''); writeln('--add-package'); - writeln(LongToConsole(space+lisAddPackageSToListOfInstalledPackagesCombineWithBui)); + w(space+lisAddPackageSToListOfInstalledPackagesCombineWithBui); writeln('--create-makefile'); - writeln(LongToConsole(space+lisInsteadOfCompilePackageCreateASimpleMakefile)); + w(space+lisInsteadOfCompilePackageCreateASimpleMakefile); writeln(''); writeln(PrimaryConfPathOptLong,'<path>'); writeln('or ',PrimaryConfPathOptShort,'<path>'); - writeln(LongToConsole(space+lisprimaryConfigDirectoryWhereLazarusStoresItsConfig+LazConf.GetPrimaryConfigPath)); + w(space+lisprimaryConfigDirectoryWhereLazarusStoresItsConfig+LazConf.GetPrimaryConfigPath); writeln(''); writeln(SecondaryConfPathOptLong,'<path>'); writeln('or ',SecondaryConfPathOptShort,'<path>'); - writeln(LongToConsole(space+lissecondaryConfigDirectoryWhereLazarusSearchesFor+LazConf.GetSecondaryConfigPath)); + w(space+lissecondaryConfigDirectoryWhereLazarusSearchesFor+LazConf.GetSecondaryConfigPath); writeln(''); writeln('--operating-system=<operating-system>'); writeln('or --os=<operating-system>'); @@ -1631,10 +1742,13 @@ lisOverrideTheDefaultCompilerEGPpc386Ppcx64PpcppcEtcD, [space]))); writeln(''); writeln(LanguageOpt); - writeln(LongToConsole(space+lisOverrideLanguage)); + w(space+lisOverrideLanguage); writeln(''); writeln('--lazarusdir=<Lazarus directory>'); - writeln(LongToConsole(space+lisLazarusDirOverride)); + w(space+lisLazarusDirOverride); + writeln(''); + writeln('--max-process-count=<count>'); + w(space+lisMaximumNumberOfThreadsForCompilingInParallelDefaul); writeln(''); end; @@ -1647,17 +1761,10 @@ begin // When quick rebuilding lazbuild, FPC rebuilds only the lazbuild.lpr, so any // flag that should work with quick build must be set here. + // At the moment there is no flag - {$IFDEF BuildWidgetSetWin32} Result:=lpWin32; {$ENDIF} - {$IFDEF BuildWidgetSetWinCE} Result:=lpWinCE; {$ENDIF} - {$IFDEF BuildWidgetSetGTK} Result:=lpGtk; {$ENDIF} - {$IFDEF BuildWidgetSetGTK2} Result:=lpGtk2; {$ENDIF} - {$IFDEF BuildWidgetSetQT} Result:=lpQT; {$ENDIF} - {$IFDEF BuildWidgetSetFPGui} Result:=lpfpGUI; {$ENDIF} - {$IFDEF BuildWidgetSetCarbon} Result:=lpCarbon; {$ENDIF} - {$IFDEF BuildWidgetSetCocoa} Result:=lpCocoa; {$ENDIF} - {$IFDEF BuildWidgetSetNoGui} Result:=lpNoGUI; {$ENDIF} - + HasGUI:=false; + ConsoleVerbosity:=-1; FilterConfigFileContent; // free LCL Application to help debugging nogui issues Application.Free; diff -Nru lazarus-1.4.4+dfsg/ide/lazconf.pp lazarus-1.6+dfsg/ide/lazconf.pp --- lazarus-1.4.4+dfsg/ide/lazconf.pp 2014-10-18 20:59:47.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lazconf.pp 2015-12-17 14:37:15.000000000 +0000 @@ -46,8 +46,8 @@ {$endif} uses - SysUtils, Classes, InterfaceBase, FileUtil, lazutf8classes, LCLProc, - DefineTemplates; + SysUtils, Classes, InterfaceBase, FileUtil, LazFileUtils, + LazUTF8, lazutf8classes, LCLProc, DefineTemplates; const LazarusVersionStr = {$I version.inc}; @@ -92,7 +92,6 @@ function CreateCompilerTestPascalFilename: string; function FindDefaultExecutablePath(const Executable: string): string; -function GetDefaultCompilerFilename: string; // e.g. ppc386.exe procedure GetDefaultCompilerFilenames(List: TStrings); // list of standard paths of compiler on various distributions function FindDefaultCompilerPath: string; // full path of GetDefaultCompilerFilename function FindDefaultMakePath: string; // full path of "make" @@ -213,7 +212,7 @@ Result:=Executable else Result:=SearchFileInPath(Executable,'', - GetEnvironmentVariableUTF8('PATH'),':', + GetEnvironmentVariableUTF8('PATH'),PathSeparator, [sffDontSearchInBasePath]); Result:=TrimFilename(Result); end; @@ -444,11 +443,6 @@ Result:=ExtractFilePath(Result)+lowercase(ExtractFileName(Result)); end; -function GetDefaultCompilerFilename: string; -begin - Result:=DefineTemplates.GetDefaultCompilerFilename; -end; - function GetDefaultLazarusSrcDirectories: TStringList; var i: Integer; diff -Nru lazarus-1.4.4+dfsg/ide/lfmunitresource.pas lazarus-1.6+dfsg/ide/lfmunitresource.pas --- lazarus-1.4.4+dfsg/ide/lfmunitresource.pas 2014-06-25 08:16:06.000000000 +0000 +++ lazarus-1.6+dfsg/ide/lfmunitresource.pas 2015-03-10 14:51:21.000000000 +0000 @@ -32,7 +32,7 @@ uses Classes, SysUtils, // packages - LCLMemManager, LResources, Forms, CodeCache, CodeToolManager, + LResources, Forms, CodeCache, CodeToolManager, // IDEIntf UnitResources, SrcEditorIntf, LazFileCache, LazFileUtils, AvgLvlTree, // IDE diff -Nru lazarus-1.4.4+dfsg/ide/macropromptdlg.pas lazarus-1.6+dfsg/ide/macropromptdlg.pas --- lazarus-1.4.4+dfsg/ide/macropromptdlg.pas 2013-05-01 08:44:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/macropromptdlg.pas 2015-03-10 15:28:11.000000000 +0000 @@ -38,7 +38,7 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, LCLType, Controls, Forms, Buttons, StdCtrls, ComCtrls, + Classes, SysUtils, LCLType, Controls, Forms, Buttons, StdCtrls, Dialogs, LResources, LazarusIDEStrConsts; @@ -51,7 +51,7 @@ procedure MacroPrompDialogResize(Sender: TObject); procedure OkButtonClick(Sender: TObject); procedure CancelButtonClick(Sender: TObject); - procedure DataEditKeyDown(Sender: TObject; var Key:Word; Shift:TShiftState); + procedure DataEditKeyDown(Sender: TObject; var Key:Word; {%H-}Shift:TShiftState); public constructor Create(AnOwner: TComponent); override; end; diff -Nru lazarus-1.4.4+dfsg/ide/mainbar.pas lazarus-1.6+dfsg/ide/mainbar.pas --- lazarus-1.4.4+dfsg/ide/mainbar.pas 2015-01-29 14:41:10.000000000 +0000 +++ lazarus-1.6+dfsg/ide/mainbar.pas 2016-02-06 14:12:55.000000000 +0000 @@ -38,48 +38,40 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, LCLProc, Forms, Controls, Buttons, Menus, - ComCtrls, ExtCtrls, Dialogs, LMessages, + Classes, SysUtils, Math, Forms, Controls, Buttons, Menus, + ComCtrls, ExtCtrls, LMessages, LCLIntf, LCLType, LCLProc, // IDEIntf - ProjectIntf, NewItemIntf, MenuIntf, LazIDEIntf, LazFileCache, - EnvironmentOpts, LazarusIDEStrConsts; + ProjectIntf, MenuIntf, LazIDEIntf, IDEWindowIntf, IDEImagesIntf, + LazFileCache, EnvironmentOpts, LazarusIDEStrConsts, ComponentReg, IdeCoolbarData; type { TMainIDEBar } TMainIDEBar = class(TForm) - - // the speedbuttons panel for frequently used IDE functions - pnlSpeedButtons : TPanel; - tbStandard : TToolBar; - NewUnitSpeedBtn : TToolButton; - NewFormSpeedBtn : TToolButton; - tbDivider1 : TToolButton; - OpenFileSpeedBtn : TToolButton; - OpenFilePopUpMenu : TPopupMenu; - SaveSpeedBtn : TToolButton; - SaveAllSpeedBtn : TToolButton; - tbDivider2 : TToolButton; - ToggleFormSpeedBtn : TToolButton; - tbViewDebug : TToolBar; - ViewUnitsSpeedBtn : TToolButton; - ViewFormsSpeedBtn : TToolButton; - tbDivider3 : TToolButton; - BuildModeSpeedButton : TToolButton; - RunSpeedButton : TToolButton; - SetBuildModePopupMenu: TPopupMenu; - PauseSpeedButton : TToolButton; - StopSpeedButton : TToolButton; - StepIntoSpeedButton : TToolButton; - StepOverSpeedButton : TToolButton; - StepOutSpeedButton : TToolButton; - - NewUnitFormPopupMenu : TPopupMenu; - NewUFSetDefaultMenuItem: TMenuItem; - + private + OptionsPopupMenu: TPopupMenu; + FMainOwningComponent: TComponent; + FOldWindowState: TWindowState; + FOnActive: TNotifyEvent; + procedure CreatePopupMenus(TheOwner: TComponent); + function CalcMainIDEHeight: Integer; + function CalcNonClientHeight: Integer; + protected + procedure DoActive; + procedure WndProc(var Message: TLMessage); override; + procedure Resizing(State: TWindowState); override; + public + ApplicationIsActivate: boolean; + LastCompPaletteForm: TCustomForm; + //Coolbar and PopUpMenus + CoolBar: TCoolBar; + OptionsMenuItem: TMenuItem; + NewUFSetDefaultMenuItem: TMenuItem; + ComponentPageControl: TPageControl; // component palette + //GlobalMouseSpeedButton: TSpeedButton; <- what is this + MainSplitter: TSplitter; // splitter between the Coolbar and MainMenu // MainMenu mnuMainMenu: TMainMenu; - //mnuMain: TIDEMenuSection; // file menu @@ -148,6 +140,11 @@ itmAddJumpPoint: TIDEMenuCommand; itmJumpToNextError: TIDEMenuCommand; itmJumpToPrevError: TIDEMenuCommand; + itmJumpToInterface: TIDEMenuCommand; + itmJumpToInterfaceUses: TIDEMenuCommand; + itmJumpToImplementation: TIDEMenuCommand; + itmJumpToImplementationUses: TIDEMenuCommand; + itmJumpToInitialization: TIDEMenuCommand; //itmBookmarks: TIDEMenuSection; itmSetFreeBookmark: TIDEMenuCommand; itmJumpToNextBookmark: TIDEMenuCommand; @@ -178,8 +175,6 @@ //itmViewSecondaryWindows: TIDEMenuSection; itmViewAnchorEditor: TIDEMenuCommand; itmViewTabOrder: TIDEMenuCommand; - itmViewComponentPalette: TIDEMenuCommand; - itmViewIDESpeedButtons: TIDEMenuCommand; itmViewMessage: TIDEMenuCommand; itmViewSearchResults: TIDEMenuCommand; //itmViewDebugWindows: TIDEMenuSection; @@ -318,7 +313,7 @@ //mnuComponents: TIDEMenuSection; //itmPkgOpening: TIDEMenuSection; itmPkgNewPackage: TIDEMenuCommand; - itmPkgOpenPackage: TIDEMenuCommand; + itmPkgOpenLoadedPackage: TIDEMenuCommand; itmPkgOpenPackageFile: TIDEMenuCommand; itmPkgOpenPackageOfCurUnit: TIDEMenuCommand; //itmPkgOpenRecent: TIDEMenuSection; @@ -343,6 +338,8 @@ //itmCustomTools: TIDEMenuSection; itmToolConfigure: TIDEMenuCommand; //itmSecondaryTools: TIDEMenuSection; + itmToolManageDesktops: TIDEMenuCommand; + itmToolManageExamples: TIDEMenuCommand; itmToolDiff: TIDEMenuCommand; //itmDelphiConversion: TIDEMenuSection; itmToolCheckLFM: TIDEMenuCommand; @@ -352,7 +349,6 @@ itmToolConvertDFMtoLFM: TIDEMenuCommand; itmToolConvertEncoding: TIDEMenuCommand; //itmBuildingLazarus: TIDEMenuSection; - itmToolManageExamples: TIDEMenuCommand; itmToolBuildLazarus: TIDEMenuCommand; itmToolConfigureBuildLazarus: TIDEMenuCommand; @@ -371,26 +367,25 @@ itmHelpAboutLazarus: TIDEMenuCommand; //itmHelpTools: TIDEMenuSection; - // component palette - ComponentPageControl: TPageControl; - GlobalMouseSpeedButton: TSpeedButton; - procedure MainIDEBarDropFiles(Sender: TObject; - const FileNames: array of String); - private - FOldWindowState: TWindowState; - FOnActive: TNotifyEvent; - procedure NewUFDefaultClick(Sender: TObject); - procedure NewUnitFormPopupMenuPopup(Sender: TObject); - protected - procedure DoActive; - procedure WndProc(var Message: TLMessage); override; - public constructor Create(TheOwner: TComponent); override; + procedure MainIDEBarDropFiles(Sender: TObject; const FileNames: array of String); + procedure CoolBarOnChange(Sender: TObject); + procedure MainSplitterMoved(Sender: TObject); + procedure SetMainIDEHeightEvent(Sender: TObject); + procedure OnMainBarActive(Sender: TObject); + procedure Setup(TheOwner: TComponent); + procedure SetupHints; + procedure UpdateIDEComponentPalette(IfFormChanged: boolean); procedure HideIDE; procedure UnhideIDE; - procedure CreatePopupMenus(TheOwner: TComponent); property OnActive: TNotifyEvent read FOnActive write FOnActive; procedure UpdateDockCaption({%H-}Exclude: TControl); override; + procedure RefreshCoolbar; + procedure SetMainIDEHeight; + procedure DoSetMainIDEHeight(const AIDEIsMaximized: Boolean; ANewHeight: Integer = 0); + procedure DoSetViewComponentPalette(aVisible: Boolean); + procedure AllowCompilation(aAllow: Boolean); + procedure InitPaletteAndCoolBar; end; var @@ -409,76 +404,135 @@ LazarusIDE.DoDropFiles(Sender,FileNames); end; -procedure TMainIDEBar.NewUFDefaultClick(Sender: TObject); -var - Category: TNewIDEItemCategory; - i: Integer; - Item: TMenuItem; - Template: TNewIDEItemTemplate; -begin - Item:=Sender as TMenuItem; - Category:=NewIDEItems.FindCategoryByPath(FileDescGroupName,true); - i:=Item.MenuIndex; - if (i<0) or (i>=Category.Count) then exit; - Template:=Category[i]; - if NewUnitFormPopupMenu.Tag=1 then - EnvironmentOptions.NewUnitTemplate:=Template.Name - else - EnvironmentOptions.NewFormTemplate:=Template.Name; - //DebugLn(['TMainIDEBar.NewUFDefaultClick ',Template.Name]); - - EnvironmentOptions.Save(False); +procedure TMainIDEBar.DoActive; +begin + if Assigned(FOnActive) then + FOnActive(Self); end; -procedure TMainIDEBar.NewUnitFormPopupMenuPopup(Sender: TObject); -var - TemplateName: String; - Category: TNewIDEItemCategory; - i: Integer; - CurTemplate: TNewIDEItemTemplate; - Index: Integer; - Item: TMenuItem; -begin - Category:=NewIDEItems.FindCategoryByPath(FileDescGroupName,true); - // find default template name - if NewUnitFormPopupMenu.PopupComponent=NewUnitSpeedBtn then begin - TemplateName:=EnvironmentOptions.NewUnitTemplate; - if (TemplateName='') or (Category.FindTemplateByName(TemplateName)=nil) then - TemplateName:=FileDescNamePascalUnit; - NewUnitFormPopupMenu.Tag:=1; - end else begin - TemplateName:=EnvironmentOptions.NewFormTemplate; - if (TemplateName='') or (Category.FindTemplateByName(TemplateName)=nil) then - TemplateName:=FileDescNameLCLForm; - NewUnitFormPopupMenu.Tag:=2; - end; - // create menu items - Index:=0; - for i:=0 to Category.Count-1 do begin - CurTemplate:=Category[i]; - if not CurTemplate.VisibleInNewDialog then continue; - if Index<NewUFSetDefaultMenuItem.Count then - Item:=NewUFSetDefaultMenuItem[Index] - else begin - Item:=TMenuItem.Create(NewUFSetDefaultMenuItem); - Item.Name:='NewUFSetDefaultMenuItem'+IntToStr(Index); - Item.OnClick:=@NewUFDefaultClick; - NewUFSetDefaultMenuItem.Add(Item); +procedure TMainIDEBar.DoSetMainIDEHeight(const AIDEIsMaximized: Boolean; ANewHeight: Integer); +begin + if not Showing then + Exit; + + if ANewHeight <= 0 then + ANewHeight := CalcMainIDEHeight; + + if Assigned(IDEDockMaster) then + begin + if EnvironmentOptions.Desktop.AutoAdjustIDEHeight then + IDEDockMaster.AdjustMainIDEWindowHeight(Self, True, ANewHeight) + else + IDEDockMaster.AdjustMainIDEWindowHeight(Self, False, 0); + end else + begin + if (AIDEIsMaximized or EnvironmentOptions.Desktop.AutoAdjustIDEHeight) then + begin + Inc(ANewHeight, CalcNonClientHeight); + if ANewHeight <> Constraints.MaxHeight then + begin + Constraints.MaxHeight := ANewHeight; + Constraints.MinHeight := ANewHeight; + ClientHeight := ANewHeight; + end else if ClientHeight <> ANewHeight then + ClientHeight := ANewHeight; + end else + if Constraints.MaxHeight <> 0 then + begin + Constraints.MaxHeight := 0; + Constraints.MinHeight := 0; end; - Item.Caption:=CurTemplate.LocalizedName; - Item.ShowAlwaysCheckable:=true; - Item.Checked:=SysUtils.CompareText(TemplateName,CurTemplate.Name)=0; - inc(Index); end; - // remove unneeded items - while NewUFSetDefaultMenuItem.Count>Index do - NewUFSetDefaultMenuItem.Items[NewUFSetDefaultMenuItem.Count-1].Free; end; -procedure TMainIDEBar.DoActive; +function TMainIDEBar.CalcNonClientHeight: Integer; +{$IF DEFINED(LCLWin32) OR DEFINED(LCLGtk2) OR DEFINED(LCLQt)} +var + WindowRect, WindowClientRect: TRect; +{$ENDIF} begin - if Assigned(FOnActive) then - FOnActive(Self); + { + This function is a bug-workaround for various LCL widgetsets. + Every widgetset handles constrained height differently. + In an ideal word (when the bugs are fixed), this function shouldn't be + needed at all - it should return always 0. + + Currently tested: Win32, Gtk2, Carbon, Qt. + + List of bugs related to this workaround: + http://bugs.freepascal.org/view.php?id=28033 + http://bugs.freepascal.org/view.php?id=28034 + http://bugs.freepascal.org/view.php?id=28036 + + } + + if not Showing then + Exit(0); + + {$IF DEFINED(LCLWin32) OR DEFINED(LCLGtk2) OR DEFINED(LCLQt)} + //Gtk2 + Win32 + Qt + //retrieve real main menu height because + // - Win32: multi-line is possible (SM_CYMENU reflects only single line) + // - Gtk2, Qt: SM_CYMENU does not work + LclIntf.GetWindowRect(Handle, WindowRect{%H-}); + LclIntf.GetClientRect(Handle, WindowClientRect{%H-}); + LclIntf.ClientToScreen(Handle, WindowClientRect.TopLeft); + + Result := WindowClientRect.Top - WindowRect.Top; + + {$IFDEF LCLQt} + // ToDo: fix this properly for QT. + // Result can be negative (-560) when both Coolbar and Palette are hidden. + if Result < 0 then + Result := 55; + {$ENDIF LCLQt} + Assert(Result >= 0, 'TMainIDEBar.CalcNonClientHeight: Result < 0'); + + {$IFDEF LCLWin32} + //Win32 the constrained height has to be without SM_CYSIZEFRAME and SM_CYMENU + Result := Result - (LCLIntf.GetSystemMetrics(SM_CYSIZEFRAME) + LCLIntf.GetSystemMetrics(SM_CYMENU)); + {$ENDIF LCLWin32} + + {$ELSE} + //other widgetsets + //Carbon tested - behaves correctly + Result := 0; + {$ENDIF} +end; + +procedure TMainIDEBar.SetMainIDEHeightEvent(Sender: TObject); +begin + SetMainIDEHeight; +end; + +procedure TMainIDEBar.OnMainBarActive(Sender: TObject); +var + i, FormCount: integer; + AForm: TCustomForm; +begin + if EnvironmentOptions.Desktop.SingleTaskBarButton and not ApplicationIsActivate + and (WindowState=wsNormal) then + begin + ApplicationIsActivate:=true; + FormCount:=0; + for i:=Screen.CustomFormCount-1 downto 0 do + begin + AForm:=Screen.CustomForms[i]; + if (AForm.Parent=nil) and (AForm<>Self) and (AForm.IsVisible) + and not IsFormDesign(AForm) + and not (fsModal in AForm.FormState) then + inc(FormCount); + end; + while LazarusIDE.LastActivatedWindows.Count>0 do + begin + AForm:=TCustomForm(LazarusIDE.LastActivatedWindows[0]); + if Assigned(AForm) and (not (CsDestroying in AForm.ComponentState)) and + AForm.IsVisible then + AForm.BringToFront; + LazarusIDE.LastActivatedWindows.Delete(0); + end; + Self.BringToFront; + end; end; procedure TMainIDEBar.WndProc(var Message: TLMessage); @@ -519,22 +573,258 @@ procedure TMainIDEBar.CreatePopupMenus(TheOwner: TComponent); begin - // create the popupmenu for the MainIDEBar.OpenFileArrowSpeedBtn - OpenFilePopUpMenu := TPopupMenu.Create(TheOwner); - OpenFilePopupMenu.Name:='OpenFilePopupMenu'; - - SetBuildModePopupMenu:=TPopupMenu.Create(TheOwner); - SetBuildModePopupMenu.Name:='SetBuildModePopupMenu'; - - NewUnitFormPopupMenu:=TPopupMenu.Create(TheOwner); - NewUnitFormPopupMenu.Name:='NewUnitFormPopupMenu'; - NewUnitFormPopupMenu.OnPopup:=@NewUnitFormPopupMenuPopup; - NewUnitSpeedBtn.PopupMenu := NewUnitFormPopupMenu; - NewFormSpeedBtn.PopupMenu := NewUnitFormPopupMenu; - NewUFSetDefaultMenuItem:=TMenuItem.Create(TheOwner); - NewUFSetDefaultMenuItem.Name:='NewUFSetDefaultMenuItem'; - NewUFSetDefaultMenuItem.Caption:=lisSetDefault; - NewUnitFormPopupMenu.Items.Add(NewUFSetDefaultMenuItem); + OptionsPopupMenu := TPopupMenu.Create(TheOwner); + OptionsPopupMenu.Images := IDEImages.Images_16; + OptionsMenuItem := TMenuItem.Create(TheOwner); + OptionsMenuItem.Name := 'miToolbarOption'; + OptionsMenuItem.Caption := lisOptions; + OptionsMenuItem.Enabled := True; + OptionsMenuItem.Visible := True; + OptionsMenuItem.ImageIndex := IDEImages.LoadImage(16, 'menu_environment_options'); + OptionsPopupMenu.Items.Add(OptionsMenuItem); +end; + +procedure TMainIDEBar.Setup(TheOwner: TComponent); +begin + FMainOwningComponent := TheOwner; + OnActive:=@OnMainBarActive; + + MainSplitter := TSplitter.Create(TheOwner); + MainSplitter.Parent := Self; + MainSplitter.Align := alLeft; + MainSplitter.MinSize := 50; + MainSplitter.OnMoved := @MainSplitterMoved; + + // IDE Coolbar + CoolBar := TCoolBar.Create(TheOwner); + CoolBar.Parent := Self; + if EnvironmentOptions.Desktop.ComponentPaletteOptions.Visible then + begin + CoolBar.Align := alLeft; + CoolBar.Width := EnvironmentOptions.Desktop.IDECoolBarOptions.Width; + end + else + CoolBar.Align := alClient; + + // IDE Coolbar object wraps the actual CoolBar. + IDECoolBar := TIDECoolBar.Create(CoolBar); + IDECoolBar.IsVisible := EnvironmentOptions.Desktop.IDECoolBarOptions.Visible; + CoolBar.OnChange := @CoolBarOnChange; + CreatePopupMenus(TheOwner); + CoolBar.PopupMenu := OptionsPopupMenu; + + // Component palette + ComponentPageControl := TPageControl.Create(TheOwner); + ComponentPageControl.Name := 'ComponentPageControl'; + ComponentPageControl.Align := alClient; + ComponentPageControl.Visible := EnvironmentOptions.Desktop.ComponentPaletteOptions.Visible; + ComponentPageControl.Parent := Self; +end; + +procedure TMainIDEBar.SetupHints; +var + CurShowHint: boolean; + AControl: TControl; + i, j: integer; +begin + if EnvironmentOptions=nil then exit; + // update all hints in the component palette + CurShowHint:=EnvironmentOptions.ShowHintsForComponentPalette; + for i:=0 to ComponentPageControl.PageCount-1 do begin + for j:=0 to ComponentPageControl.Page[i].ControlCount-1 do begin + AControl:=ComponentPageControl.Page[i].Controls[j]; + AControl.ShowHint:=CurShowHint; + end; + end; + // update all hints in main ide toolbars + //??? CurShowHint:=EnvironmentOptions.ShowHintsForMainSpeedButtons; +end; + +procedure TMainIDEBar.UpdateIDEComponentPalette(IfFormChanged: boolean); +var + OldLastCompPaletteForm, LastActiveForm: TCustomForm; + AResult: Boolean; +begin + // Package manager updates the palette initially. + LastActiveForm := LazarusIDE.LastFormActivated; + if not LazarusIDE.IDEStarted + or (IfFormChanged and (LastCompPaletteForm=LastActiveForm)) then + exit; + OldLastCompPaletteForm:=LastCompPaletteForm; + LastCompPaletteForm:=LastActiveForm; + AResult:=(LastActiveForm<>nil) and (LastActiveForm.Designer<>nil) + and (LastActiveForm.Designer.LookupRoot<>nil) + and not (LastActiveForm.Designer.LookupRoot is TControl); + IDEComponentPalette.HideControls:=AResult; + // Don't update palette at the first time if not hiding controls. + if (OldLastCompPaletteForm = Nil) and not IDEComponentPalette.HideControls then + exit; + {$IFDEF VerboseComponentPalette} + DebugLn(['* TMainIDEBar.UpdateIDEComponentPalette: Updating palette *', + ', HideControls=', IDEComponentPalette.HideControls]); + {$ENDIF} + IDEComponentPalette.Update(False); + SetupHints; +end; + +procedure TMainIDEBar.InitPaletteAndCoolBar; +begin + RefreshCoolbar; + ComponentPageControl.OnChange(Self);//refresh component palette with button reposition + SetMainIDEHeight; + if IDEDockMaster<>nil then + IDEDockMaster.ResetSplitters; +end; + +procedure TMainIDEBar.RefreshCoolbar; +var + I: Integer; + CoolBand: TCoolBand; + CoolBarOpts: TIDECoolBarOptions; +begin + CoolBarOpts := EnvironmentOptions.Desktop.IDECoolBarOptions; + //read general settings + if not (CoolBarOpts.GrabStyle in [0..5]) then + CoolBarOpts.GrabStyle := 4; + Coolbar.GrabStyle := TGrabStyle(CoolBarOpts.GrabStyle); + if not (CoolBarOpts.GrabWidth in [1..50]) then + CoolBarOpts.GrabWidth := 5; + Coolbar.GrabWidth := CoolBarOpts.GrabWidth; + Coolbar.BandBorderStyle := TBorderStyle(CoolBarOpts.BorderStyle); + Coolbar.Width := CoolBarOpts.Width; + //read toolbars + CoolBar.Bands.Clear; + IDECoolBar.CopyFromOptions(CoolBarOpts); + IDECoolBar.Sort; + for I := 0 to IDECoolBar.ToolBars.Count - 1 do + begin + CoolBand := CoolBar.Bands.Add; + CoolBand.Break := IDECoolBar.ToolBars[I].CurrentOptions.Break; + CoolBand.Control := IDECoolBar.ToolBars[I].ToolBar; + CoolBand.MinWidth := 25; + CoolBand.MinHeight := 22; + CoolBand.FixedSize := True; + IDECoolBar.ToolBars[I].UseCurrentOptions; + end; + CoolBar.AutosizeBands; + + CoolBar.Visible := CoolBarOpts.Visible; + MainSplitter.Align := alLeft; + MainSplitter.Visible := Coolbar.Visible and ComponentPageControl.Visible; +end; + +procedure TMainIDEBar.Resizing(State: TWindowState); +begin + case State of + wsMaximized, wsNormal: DoSetMainIDEHeight(State = wsMaximized); + end; + + inherited Resizing(State); +end; + +procedure TMainIDEBar.MainSplitterMoved(Sender: TObject); +begin + EnvironmentOptions.Desktop.IDECoolBarOptions.Width := CoolBar.Width; + SetMainIDEHeight; +end; + +function TMainIDEBar.CalcMainIDEHeight: Integer; +var + NewHeight: Integer; + I: Integer; + ComponentScrollBox: TScrollBox; + SBControl: TControl; +begin + Result := 0; + if not (Assigned(EnvironmentOptions) and Assigned(CoolBar) and Assigned(ComponentPageControl)) then + Exit; + + if EnvironmentOptions.Desktop.IDECoolBarOptions.Visible then + begin + for I := 0 to CoolBar.Bands.Count-1 do + begin + NewHeight := CoolBar.Bands[I].Top + CoolBar.Bands[I].Height; + Result := Max(Result, NewHeight); + end; + end; + + if EnvironmentOptions.Desktop.ComponentPaletteOptions.Visible + and Assigned(ComponentPageControl.ActivePage) then + begin + ComponentScrollBox := nil; + for I := 0 to ComponentPageControl.ActivePage.ControlCount-1 do + if (ComponentPageControl.ActivePage.Controls[I] is TScrollBox) then + begin + ComponentScrollBox := TScrollBox(ComponentPageControl.ActivePage.Controls[I]); + Break; + end; + + if Assigned(ComponentScrollBox) then + for I := 0 to ComponentScrollBox.ControlCount-1 do + begin + SBControl := ComponentScrollBox.Controls[I]; + NewHeight := + SBControl.Top + SBControl.Height + //button height + ComponentPageControl.Height - ComponentScrollBox.ClientHeight; //page control non-client height (tabs, borders). + Result := Max(Result, NewHeight); + + if not EnvironmentOptions.Desktop.AutoAdjustIDEHeightFullCompPal then + Break; //we need only one button (we calculate one line only) + end; + end; +end; + +procedure TMainIDEBar.CoolBarOnChange(Sender: TObject); +begin + IDECoolBar.CopyFromRealCoolbar(Coolbar); + IDECoolBar.CopyToOptions(EnvironmentOptions.Desktop.IDECoolBarOptions); + SetMainIDEHeight; +end; + +procedure TMainIDEBar.SetMainIDEHeight; +begin + DoSetMainIDEHeight(WindowState = wsMaximized); +end; + +procedure TMainIDEBar.DoSetViewComponentPalette(aVisible: Boolean); +begin + if aVisible = ComponentPageControl.Visible then Exit; + ComponentPageControl.Visible := aVisible; + EnvironmentOptions.Desktop.ComponentPaletteOptions.Visible := aVisible; + if aVisible then + begin + if CoolBar.Align = alClient then + begin + CoolBar.Width := 230; + EnvironmentOptions.Desktop.IDECoolBarOptions.Width := 230; + end; + CoolBar.Align := alLeft; + CoolBar.Vertical := False; + MainSplitter.Align := alLeft; + end + else + CoolBar.Align := alClient; + MainSplitter.Visible := Coolbar.Visible and aVisible; + + if aVisible then//when showing component palette, it must be visible to calculate it correctly + //this will cause the IDE to flicker, but it's better than to have wrongly calculated IDE height + DoSetMainIDEHeight(WindowState = wsMaximized, 55); + SetMainIDEHeight; +end; + +procedure TMainIDEBar.AllowCompilation(aAllow: Boolean); +// Enables or disables IDE GUI controls associated with compiling and building. +// Does it interfere with DebugBoss.UpdateButtonsAndMenuItems? Maybe should be refactored and combined. +begin + itmRunMenuRun.Enabled:=aAllow; + itmRunMenuCompile.Enabled:=aAllow; + itmRunMenuBuild.Enabled:=aAllow; + itmRunMenuQuickCompile.Enabled:=aAllow; + itmRunMenuCleanUpAndBuild.Enabled:=aAllow; + itmPkgEditInstallPkgs.Enabled:=aAllow; + itmToolRescanFPCSrcDir.Enabled:=aAllow; + itmToolBuildLazarus.Enabled:=aAllow; + //itmToolConfigureBuildLazarus.Enabled:=aAllow; end; end. diff -Nru lazarus-1.4.4+dfsg/ide/mainbase.pas lazarus-1.6+dfsg/ide/mainbase.pas --- lazarus-1.4.4+dfsg/ide/mainbase.pas 2014-12-04 23:29:03.000000000 +0000 +++ lazarus-1.6+dfsg/ide/mainbase.pas 2016-01-03 12:28:36.000000000 +0000 @@ -55,20 +55,20 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Math, Classes, LCLType, LCLProc, LCLIntf, StdCtrls, Buttons, Menus, ComCtrls, - SysUtils, types, Controls, Graphics, ExtCtrls, Dialogs, FileUtil, Forms, - CodeToolManager, CodeCache, AVL_Tree, SynEditKeyCmds, PackageIntf, + Math, Classes, LCLType, LCLProc, LCLIntf, Buttons, Menus, ComCtrls, + SysUtils, types, Controls, Graphics, ExtCtrls, Dialogs, LazFileUtils, Forms, + CodeToolManager, AVL_Tree, SynEditKeyCmds, PackageIntf, // IDEIntf - IDEImagesIntf, SrcEditorIntf, LazIDEIntf, MenuIntf, - IDECommands, IDEMsgIntf, IDEWindowIntf, + IDEImagesIntf, SrcEditorIntf, LazIDEIntf, MenuIntf, NewItemIntf, + IDECommands, IDEWindowIntf, ProjectIntf, ToolBarIntf, // IDE - LazConf, LazarusIDEStrConsts, ProjectDefs, Project, PublishModule, - BuildLazDialog, Compiler, ComponentReg, etMessagesWnd, - TransferMacros, ObjectInspector, PropEdits, IDEDefs, + LazConf, LazarusIDEStrConsts, ProjectDefs, Project, IDEDialogs, + TransferMacros, ObjectInspector, PropEdits, BuildManager, EnvironmentOpts, EditorOptions, CompilerOptions, KeyMapping, IDEProcs, - Debugger, IDEOptionDefs, CodeToolsDefines, Splash, Designer, - SourceEditor, BuildManager, FindInFilesDlg, - MainBar, MainIntf, SourceSynEditor, PseudoTerminalDlg; + Debugger, IDEOptionDefs, Splash, Designer, + SourceEditor, FindInFilesDlg, + MainBar, MainIntf, SourceSynEditor, PseudoTerminalDlg, + DesktopManager; type TResetToolFlag = ( @@ -82,15 +82,11 @@ TMainIDEBase = class(TMainIDEInterface) private - FToolStatus: TIDEToolStatus; FWindowMenuActiveForm: TCustomForm; FDisplayState: TDisplayState; - // used to find the last form so you can display the correct tab - FLastFormActivated: TCustomForm; procedure SetDisplayState(AValue: TDisplayState); protected FNeedUpdateHighlighters: boolean; - FIDEStarted: boolean; function CreateMenuSeparator : TMenuItem; procedure CreateMenuItem(Section: TIDEMenuSection; @@ -122,8 +118,7 @@ procedure SetupHelpMenu; virtual; procedure LoadMenuShortCuts; virtual; - function GetToolStatus: TIDEToolStatus; override; - procedure SetToolStatus(const AValue: TIDEToolStatus); virtual; + procedure SetToolStatus(const AValue: TIDEToolStatus); override; procedure DoMnuWindowClicked(Sender: TObject); procedure mnuOpenProjectClicked(Sender: TObject); virtual; abstract; @@ -131,6 +126,7 @@ procedure mnuWindowItemClick(Sender: TObject); virtual; procedure mnuCenterWindowItemClick(Sender: TObject); virtual; procedure mnuWindowSourceItemClick(Sender: TObject); virtual; + procedure mnuBuildModeClicked(Sender: TObject); virtual; abstract; procedure UpdateWindowMenu; @@ -141,7 +137,7 @@ procedure StartIDE; virtual; abstract; destructor Destroy; override; procedure CreateOftenUsedForms; virtual; abstract; - function GetMainBar: TComponent; override; + function GetMainBar: TForm; override; procedure SetRecentProjectFilesMenu; procedure SetRecentFilesMenu; function BeginCodeTool(var ActiveSrcEdit: TSourceEditor; @@ -153,7 +149,7 @@ Flags: TCodeToolsFlags): boolean; procedure ActivateCodeToolAbortableMode; function OnCodeToolBossCheckAbort: boolean; - procedure DoShowDesignerFormOfCurrentSrc; virtual; abstract; + procedure DoShowDesignerFormOfCurrentSrc(AComponentPaletteClassSelected: Boolean); virtual; abstract; function CreateDesignerForComponent(AnUnitInfo: TUnitInfo; AComponent: TComponent): TCustomForm; virtual; abstract; procedure UpdateSaveMenuItemsAndButtons(UpdateSaveAll: boolean); virtual; abstract; @@ -172,13 +168,13 @@ procedure GetCurrentUnit(out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); virtual; abstract; procedure GetDesignerUnit(ADesigner: TDesigner; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); virtual; abstract; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); virtual; abstract; procedure GetObjectInspectorUnit( - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); virtual; abstract; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); virtual; abstract; procedure GetUnitWithForm(AForm: TCustomForm; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); virtual; abstract; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); virtual; abstract; procedure GetUnitWithPersistent(APersistent: TPersistent; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); virtual; abstract; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); virtual; abstract; procedure DoShowComponentList(State: TIWGetFormState = iwgfShowOnTop); virtual; abstract; function DoOpenMacroFile(Sender: TObject; const AFilename: string): TModalResult; override; @@ -190,13 +186,93 @@ procedure FindInFilesPerDialog(AProject: TProject); override; procedure FindInFiles(AProject: TProject; const FindText: string); override; + procedure SelComponentPageButtonMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual; abstract; procedure SelComponentPageButtonClick(Sender: TObject); virtual; abstract; public - property ToolStatus: TIDEToolStatus read FToolStatus write SetToolStatus; property WindowMenuActiveForm: TCustomForm read FWindowMenuActiveForm write FWindowMenuActiveForm; property DisplayState: TDisplayState read FDisplayState write SetDisplayState; - property IDEStarted: boolean read FIDEStarted; - property LastFormActivated: TCustomForm read FLastFormActivated write FLastFormActivated; + end; + + { TJumpToSectionToolButton } + + TJumpToSectionToolButton = class(TIDEToolButton) + private + procedure AddMenuItem(aCmd: TIDEMenuCommand); + public + procedure DoOnAdded; override; + procedure RefreshMenu; + end; + + { TSetBuildModeToolButton } + + TSetBuildModeToolButton = class(TIDEToolButton) + private + procedure RefreshMenu(Sender: TObject); + procedure mnuSetBuildModeClick(Sender: TObject); + public + procedure DoOnAdded; override; + end; + + { TOpenFileToolButton } + + TOpenFileToolButton = class(TIDEToolButton) + private + procedure RefreshMenu(Sender: TObject); + procedure mnuOpenFile(Sender: TObject); + procedure mnuProjectFile(Sender: TObject); + public + procedure DoOnAdded; override; + end; + + { TOpenFileMenuItem } + + TOpenFileMenuItem = class(TMenuItem) + public + FileName: string; + end; + + { TNewFormUnitToolButton } + + TNewFormUnitToolButton = class(TIDEToolButton) + private + SetDefaultMenuItem: TMenuItem; + + procedure RefreshMenu(Sender: TObject); + procedure mnuSetFormUnitTemplate(Sender: TObject); + protected + class function FindDefaultTemplateName(Category: TNewIDEItemCategory): string; virtual; abstract; + class procedure SetTemplateName(const TemplateName: string); virtual; abstract; + class procedure UpdateHint(const AHint: string); virtual; abstract; + public + procedure DoOnAdded; override; + + class procedure UpdateHints; + end; + + { TNewUnitToolButton } + + TNewUnitToolButton = class(TNewFormUnitToolButton) + protected + class function FindDefaultTemplateName(Category: TNewIDEItemCategory): string; override; + class procedure SetTemplateName(const TemplateName: string); override; + class procedure UpdateHint(const AHint: string); override; + end; + + { TNewFormToolButton } + + TNewFormToolButton = class(TNewFormUnitToolButton) + protected + class function FindDefaultTemplateName(Category: TNewIDEItemCategory): string; override; + class procedure SetTemplateName(const TemplateName: string); override; + class procedure UpdateHint(const AHint: string); override; + end; + + { TNewFormUnitMenuItem } + + TNewFormUnitMenuItem = class(TMenuItem) + public + TemplateName: string; end; function GetMainIde: TMainIDEBase; @@ -215,6 +291,292 @@ Result := TMainIDEBase(MainIDEInterface) end; +{ TNewFormUnitToolButton } + +procedure TNewFormUnitToolButton.DoOnAdded; +begin + inherited DoOnAdded; + + PopupMenu := TPopupMenu.Create(Self); + PopupMenu.OnPopup := @RefreshMenu; + + SetDefaultMenuItem:=TMenuItem.Create(PopupMenu); + SetDefaultMenuItem.Caption:=lisSetDefault; + PopupMenu.Items.Add(SetDefaultMenuItem); + + UpdateHints; +end; + +procedure TNewFormUnitToolButton.mnuSetFormUnitTemplate(Sender: TObject); +begin + SetTemplateName((Sender as TNewFormUnitMenuItem).TemplateName); + EnvironmentOptions.Save(False); + + UpdateHints; +end; + +procedure TNewFormUnitToolButton.RefreshMenu(Sender: TObject); +var + TemplateName: String; + Category: TNewIDEItemCategory; + i: Integer; + CurTemplate: TNewIDEItemTemplate; + TheIndex: Integer; + xItem: TNewFormUnitMenuItem; +begin + Category:=NewIDEItems.FindCategoryByPath(FileDescGroupName,true); + TemplateName:=FindDefaultTemplateName(Category); + + // create menu items + TheIndex:=0; + for i:=0 to Category.Count-1 do begin + CurTemplate:=Category[i]; + if not CurTemplate.VisibleInNewDialog then continue; + if TheIndex<SetDefaultMenuItem.Count then + xItem:=SetDefaultMenuItem[TheIndex] as TNewFormUnitMenuItem + else begin + xItem:=TNewFormUnitMenuItem.Create(SetDefaultMenuItem); + SetDefaultMenuItem.Add(xItem); + end; + xItem.OnClick:=@mnuSetFormUnitTemplate; + xItem.Caption:=CurTemplate.LocalizedName; + xItem.TemplateName:=CurTemplate.Name; + xItem.ShowAlwaysCheckable:=true; + xItem.Checked:=CompareText(TemplateName,CurTemplate.Name)=0; + inc(TheIndex); + end; + // remove unneeded items + while SetDefaultMenuItem.Count>TheIndex do + SetDefaultMenuItem.Items[SetDefaultMenuItem.Count-1].Free; +end; + +class procedure TNewFormUnitToolButton.UpdateHints; +var + Category: TNewIDEItemCategory; + TemplateName: String; + Template: TNewIDEItemTemplate; +begin + if not Assigned(NewIDEItems) then + Exit; + Category:=NewIDEItems.FindCategoryByPath(FileDescGroupName,true); + TemplateName:=FindDefaultTemplateName(Category); + if TemplateName<>'' then //try to get the LocalizedName + begin + Template:=Category.FindTemplateByName(TemplateName); + if Assigned(Template) then + TemplateName := Template.LocalizedName; + end; + UpdateHint(Format(lisMenuNewCustom, [TemplateName])); +end; + +{ TNewFormToolButton } + +class function TNewFormToolButton.FindDefaultTemplateName( + Category: TNewIDEItemCategory): string; +begin + Result:=EnvironmentOptions.NewFormTemplate; + if (Result='') or (Category.FindTemplateByName(Result)=nil) then + Result:=FileDescNameLCLForm; +end; + +class procedure TNewFormToolButton.SetTemplateName(const TemplateName: string); +begin + EnvironmentOptions.NewFormTemplate:=TemplateName; +end; + +class procedure TNewFormToolButton.UpdateHint(const AHint: string); +begin + MainIDEBar.itmFileNewForm.Hint := AHint; +end; + +{ TNewUnitToolButton } + +class function TNewUnitToolButton.FindDefaultTemplateName( + Category: TNewIDEItemCategory): string; +begin + Result:=EnvironmentOptions.NewUnitTemplate; + if (Result='') or (Category.FindTemplateByName(Result)=nil) then + Result:=FileDescNamePascalUnit; +end; + +class procedure TNewUnitToolButton.SetTemplateName(const TemplateName: string); +begin + EnvironmentOptions.NewUnitTemplate:=TemplateName; +end; + +class procedure TNewUnitToolButton.UpdateHint(const AHint: string); +begin + MainIDEBar.itmFileNewUnit.Hint := AHint; +end; + +{ TOpenFileToolButton } + +procedure TOpenFileToolButton.DoOnAdded; +begin + inherited DoOnAdded; + + DropdownMenu := TPopupMenu.Create(Self); + DropdownMenu.OnPopup := @RefreshMenu; + Style := tbsDropDown; +end; + +procedure TOpenFileToolButton.mnuOpenFile(Sender: TObject); +begin + if MainIDE.DoOpenEditorFile((Sender as TOpenFileMenuItem).FileName,-1,-1, + [ofAddToRecent])=mrOk then + begin + MainIDE.SetRecentFilesMenu; + MainIDE.SaveEnvironment; + end; +end; + +procedure TOpenFileToolButton.mnuProjectFile(Sender: TObject); +begin + MainIDE.DoOpenProjectFile((Sender as TOpenFileMenuItem).FileName,[ofAddToRecent]); +end; + +procedure TOpenFileToolButton.RefreshMenu(Sender: TObject); + procedure AddFile(const AFileName: string; const AOnClick: TNotifyEvent); + var + AMenuItem: TOpenFileMenuItem; + begin + AMenuItem := TOpenFileMenuItem.Create(DropdownMenu); + AMenuItem.OnClick := AOnClick; + AMenuItem.FileName := AFileName; + DropdownMenu.Items.Add(AMenuItem); + AMenuItem.Caption := AFilename; + end; + + procedure AddFiles(List: TStringList; MaxCount: integer; const AOnClick: TNotifyEvent); + var + i: integer; + begin + i := 0; + while (i < List.Count) and (i < MaxCount) do + begin + AddFile(List[i], AOnClick); + inc(i); + end; + end; + +begin + DropdownMenu.Items.Clear; + + // first add recent projects + AddFiles(EnvironmentOptions.RecentProjectFiles, EnvironmentOptions.MaxRecentProjectFiles, @mnuProjectFile); + // add a separator + DropdownMenu.Items.AddSeparator; + // then add recent files + AddFiles(EnvironmentOptions.RecentOpenFiles, EnvironmentOptions.MaxRecentOpenFiles, @mnuOpenFile); +end; + +{ TSetBuildModeToolButton } + +procedure TSetBuildModeToolButton.DoOnAdded; +begin + inherited DoOnAdded; + + DropdownMenu := TPopupMenu.Create(Self); + DropdownMenu.OnPopup := @RefreshMenu; + Style := tbsDropDown; +end; + +procedure TSetBuildModeToolButton.mnuSetBuildModeClick(Sender: TObject); +var + TheMenuItem: TMenuItem; + TheIndex: LongInt; + NewMode: TProjectBuildMode; +begin + TheMenuItem := (Sender as TMenuItem); + if TheMenuItem.Caption = '-' then exit; + TheIndex := TheMenuItem.MenuIndex; + if (TheIndex < 0) or (TheIndex >= Project1.BuildModes.Count) then exit; + NewMode := Project1.BuildModes[TheIndex]; + if NewMode = Project1.ActiveBuildMode then exit; + if not (MainIDE.ToolStatus in [itNone,itDebugger]) then begin + IDEMessageDialog('Error','You can not change the build mode while compiling.', + mtError,[mbOk]); + exit; + end; + + Project1.ActiveBuildMode := NewMode; + MainBuildBoss.SetBuildTargetProject1(false); + MainIDE.UpdateCaption; +end; + +procedure TSetBuildModeToolButton.RefreshMenu(Sender: TObject); +var + aMenu: TPopupMenu; + CurIndex: Integer; + i: Integer; + + procedure AddMode(CurMode: TProjectBuildMode); + var + AMenuItem: TMenuItem; + begin + if aMenu.Items.Count > CurIndex then + AMenuItem := aMenu.Items[CurIndex] + else + begin + AMenuItem := TMenuItem.Create(DropdownMenu); + AMenuItem.Name := aMenu.Name + 'Mode' + IntToStr(CurIndex); + AMenuItem.OnClick := @mnuSetBuildModeClick; + aMenu.Items.Add(AMenuItem); + end; + AMenuItem.Caption := CurMode.GetCaption; + AMenuItem.Checked := (Project1<>nil) and (Project1.ActiveBuildMode=CurMode); + AMenuItem.ShowAlwaysCheckable:=true; + inc(CurIndex); + end; + +begin + // fill the PopupMenu: + CurIndex := 0; + aMenu := DropdownMenu; + if Project1<>nil then + for i:=0 to Project1.BuildModes.Count-1 do + AddMode(Project1.BuildModes[i]); + // remove unused menuitems + while aMenu.Items.Count > CurIndex do + aMenu.Items[aMenu.Items.Count - 1].Free; +end; + +{ TJumpToSectionToolButton } + +procedure TJumpToSectionToolButton.DoOnAdded; +begin + inherited DoOnAdded; + RefreshMenu; +end; + +procedure TJumpToSectionToolButton.AddMenuItem(aCmd: TIDEMenuCommand); +var + xItem: TMenuItem; +begin + xItem := TMenuItem.Create(DropdownMenu); + DropdownMenu.Items.Add(xItem); + xItem.Caption := aCmd.Caption; + xItem.OnClick := aCmd.OnClick; + xItem.ImageIndex := aCmd.ImageIndex; +end; + +procedure TJumpToSectionToolButton.RefreshMenu; +begin + if DropdownMenu = nil then + begin + DropdownMenu := TPopupMenu.Create(Self); + if Assigned(FToolBar) then + DropdownMenu.Images := FToolBar.Images; + Style := tbsDropDown; + end; + DropdownMenu.Items.Clear; + AddMenuItem(MainIDEBar.itmJumpToInterface); + AddMenuItem(MainIDEBar.itmJumpToInterfaceUses); + AddMenuItem(MainIDEBar.itmJumpToImplementation); + AddMenuItem(MainIDEBar.itmJumpToImplementationUses); + AddMenuItem(MainIDEBar.itmJumpToInitialization); +end; + //{$IFDEF LCLCarbon} //var // mnuApple: TIDEMenuSection = nil; @@ -226,12 +588,14 @@ var i: Integer; Form: TCustomForm; + nfd: Boolean; begin i:=Screen.CustomFormCount-1; while (i>=0) do begin Form:=Screen.CustomForms[i]; - if (EnvironmentOptions.IDENameForDesignedFormList and (Form.Name=(Sender as TIDEMenuCommand).Caption)) or - ((not EnvironmentOptions.IDENameForDesignedFormList) and (Form.Caption=(Sender as TIDEMenuCommand).Caption)) then + nfd := EnvironmentOptions.Desktop.IDENameForDesignedFormList; + if (nfd and (Form.Name=(Sender as TIDEMenuCommand).Caption)) + or ((not nfd) and (Form.Caption=(Sender as TIDEMenuCommand).Caption)) then begin IDEWindowCreators.ShowForm(Form,true); break; @@ -245,12 +609,14 @@ i: Integer; Form: TCustomForm; r, NewBounds: TRect; + nfd: Boolean; begin i:=Screen.CustomFormCount-1; while (i>=0) do begin Form:=Screen.CustomForms[i]; - if (EnvironmentOptions.IDENameForDesignedFormList and (Form.Name=(Sender as TIDEMenuCommand).Caption)) or - ((not EnvironmentOptions.IDENameForDesignedFormList) and (Form.Caption=(Sender as TIDEMenuCommand).Caption)) then + nfd := EnvironmentOptions.Desktop.IDENameForDesignedFormList; + if (nfd and (Form.Name=(Sender as TIDEMenuCommand).Caption)) + or ((not nfd) and (Form.Caption=(Sender as TIDEMenuCommand).Caption)) then begin // show if not Form.IsVisible then @@ -296,8 +662,8 @@ procedure TMainIDEBase.SetToolStatus(const AValue: TIDEToolStatus); begin - if FToolStatus=AValue then exit; - FToolStatus:=AValue; + if ToolStatus=AValue then exit; + inherited SetToolStatus(AValue); UpdateCaption; end; @@ -339,7 +705,7 @@ ActiveUnitInfo:=AnUnitInfo; end; -function TMainIDEBase.GetMainBar: TComponent; +function TMainIDEBase.GetMainBar: TForm; begin Result:=MainIDEBar; end; @@ -451,19 +817,9 @@ AFilename:=AppendPathDelim(GetPrimaryConfigPath)+DefaultProjectOptionsFilename; if not FileExistsUTF8(AFilename) then CopySecondaryConfigFile(DefaultProjectOptionsFilename); - if FileExistsUTF8(AFilename) then begin - if AProject.ReadProject(AFilename,nil,True)<>mrOk then - DebugLn(['TMainIDEBase.DoLoadDefaultCompilerOptions failed']); - end else begin - // old way (<0.9.31) - // load default compiler options if exists - AFilename:=AppendPathDelim(GetPrimaryConfigPath)+DefaultProjectCompilerOptionsFilename; - if not FileExistsUTF8(AFilename) then - CopySecondaryConfigFile(DefaultProjectCompilerOptionsFilename); - if not FileExistsUTF8(AFilename) then exit; - if AProject.CompilerOptions.LoadFromFile(AFilename)<>mrOk then + if FileExistsUTF8(AFilename) then + if AProject.ReadProject(AFilename,nil,False)<>mrOk then DebugLn(['TMainIDEBase.DoLoadDefaultCompilerOptions failed']); - end; // change target file name AFilename:=ExtractFileName(AProject.CompilerOptions.TargetFilename); @@ -543,7 +899,7 @@ const AName: String); begin Section:=RegisterIDEMenuSection(ParentSection,AName); - Section.ChildsAsSubMenu := false; + Section.ChildrenAsSubMenu := false; end; procedure TMainIDEBase.CreateMenuSubSection(ParentSection: TIDEMenuSection; @@ -694,6 +1050,15 @@ CreateMenuItem(ParentMI,itmJumpToNextError,'itmJumpToNextError',lisMenuJumpToNextError); CreateMenuItem(ParentMI,itmJumpToPrevError,'itmJumpToPrevError',lisMenuJumpToPrevError); + CreateMenuSubSection(ParentMI,itmJumpToSection,'itmJumpToSection',lisMenuJumpTo); + ParentMI:=itmJumpToSection; + + CreateMenuItem(ParentMI,itmJumpToInterface,'itmJumpToInterface',lisMenuJumpToInterface, 'menu_jumpto_interface'); + CreateMenuItem(ParentMI,itmJumpToInterfaceUses,'itmJumpToInterfaceUses',lisMenuJumpToInterfaceUses, 'menu_jumpto_interfaceuses'); + CreateMenuItem(ParentMI,itmJumpToImplementation,'itmJumpToImplementation',lisMenuJumpToImplementation, 'menu_jumpto_implementation'); + CreateMenuItem(ParentMI,itmJumpToImplementationUses,'itmJumpToImplementationUses',lisMenuJumpToImplementationUses, 'menu_jumpto_implementationuses'); + CreateMenuItem(ParentMI,itmJumpToInitialization,'itmJumpToInitialization',lisMenuJumpToInitialization, 'menu_jumpto_initialization'); + CreateMenuSeparatorSection(mnuSearch,itmBookmarks,'itmBookmarks'); ParentMI:=itmBookmarks; @@ -768,10 +1133,6 @@ CreateMenuItem(itmViewIDEInternalsWindows, itmSearchInFPDocFiles,'itmSearchInFPDocFiles','Search in FPDoc files'); {$ENDIF} end; - CreateMenuItem(ParentMI,itmViewComponentPalette,'itmViewComponentPalette',lisMenuViewComponentPalette, '', - true, EnvironmentOptions.ComponentPaletteVisible); - CreateMenuItem(ParentMI,itmViewIDESpeedButtons,'itmViewIDESpeedButtons',lisMenuViewIDESpeedButtons, '', - true, EnvironmentOptions.IDESpeedButtonsVisible); end; end; @@ -788,6 +1149,7 @@ CreateMenuItem(ParentMI,itmSourceEncloseBlock,'itmSourceEncloseBlock',lisMenuEncloseSelection); CreateMenuItem(ParentMI,itmSourceEncloseInIFDEF,'itmSourceEncloseInIFDEF',lisMenuEncloseInIFDEF); CreateMenuItem(ParentMI,itmSourceCompleteCode,'itmSourceCompleteCode',lisMenuCompleteCode); + CreateMenuItem(ParentMI,itmRefactorInvertAssignment,'itmInvertAssignment',uemInvertAssignment); CreateMenuItem(ParentMI,itmSourceUseUnit,'itmSourceUseUnit',lisMenuUseUnit); // Refactor CreateMenuSeparatorSection(mnuSource,itmSourceRefactor,'itmSourceRefactor'); @@ -797,7 +1159,6 @@ ParentMI:=itmRefactorCodeTools; CreateMenuItem(ParentMI,itmRefactorRenameIdentifier,'itmRefactorRenameIdentifier',lisMenuRenameIdentifier); CreateMenuItem(ParentMI,itmRefactorExtractProc,'itmRefactorExtractProc',lisMenuExtractProc); - CreateMenuItem(ParentMI,itmRefactorInvertAssignment,'itmInvertAssignment',uemInvertAssignment); CreateMenuSeparatorSection(SubParentMI,itmRefactorAdvanced,'itmRefactorAdvanced'); ParentMI:=itmRefactorAdvanced; @@ -882,7 +1243,7 @@ CreateMenuSeparatorSection(mnuProject,itmProjectWindowSection,'itmProjectWindowSection'); ParentMI:=itmProjectWindowSection; - CreateMenuItem(ParentMI,itmProjectInspector,'itmProjectInspector',lisMenuProjectInspector,'menu_project_inspector'); + CreateMenuItem(ParentMI,itmProjectInspector,'itmProjectInspector',lisMenuProjectInspector+' ...','menu_project_inspector'); CreateMenuItem(ParentMI,itmProjectOptions,'itmProjectOptions',lisMenuProjectOptions,'menu_project_options'); CreateMenuSeparatorSection(mnuProject,itmProjectAddRemoveSection,'itmProjectAddRemoveSection'); @@ -921,7 +1282,7 @@ CreateMenuItem(ParentMI,itmRunMenuRunToCursor,'itmRunMenuRunToCursor',lisMenuRunToCursor,'menu_run_cursor'); CreateMenuItem(ParentMI,itmRunMenuStop,'itmRunMenuStop',lisStop,'menu_stop', False); - CreateMenuItem(ParentMI,itmRunMenuAttach,'itmRunMenuAttach',srkmecAttach,'', False); + CreateMenuItem(ParentMI,itmRunMenuAttach,'itmRunMenuAttach',srkmecAttach+' ...','', False); CreateMenuItem(ParentMI,itmRunMenuDetach,'itmRunMenuDetach',srkmecDetach,'', False); CreateMenuItem(ParentMI,itmRunMenuRunParameters,'itmRunMenuRunParameters',lisMenuRunParameters, 'menu_run_parameters'); @@ -953,7 +1314,7 @@ CreateMenuSeparatorSection(mnuComponent,itmPkgOpening,'itmPkgOpening'); ParentMI:=itmPkgOpening; CreateMenuItem(ParentMI,itmPkgNewPackage,'itmPkgNewPackage',lisMenuNewPackage); - CreateMenuItem(ParentMI,itmPkgOpenPackage,'itmPkgOpenPackage',lisMenuOpenPackage,'pkg_installed'); + CreateMenuItem(ParentMI,itmPkgOpenLoadedPackage,'itmPkgOpenPackage',lisMenuOpenPackage,'pkg_installed'); CreateMenuItem(ParentMI,itmPkgOpenPackageFile,'itmPkgOpenPackageFile',lisMenuOpenPackageFile,'pkg_open'); CreateMenuItem(ParentMI,itmPkgOpenPackageOfCurUnit,'itmPkgOpenPackageOfCurUnit',lisMenuOpenPackageOfCurUnit); CreateMenuSubSection(ParentMI,itmPkgOpenRecent,'itmPkgOpenRecent',lisMenuOpenRecentPkg); @@ -961,11 +1322,11 @@ CreateMenuSeparatorSection(mnuComponent,itmPkgUnits,'itmPkgUnits'); ParentMI:=itmPkgUnits; CreateMenuItem(ParentMI,itmPkgAddCurFileToPkg,'itmPkgAddCurFileToPkg',lisMenuAddCurFileToPkg,'pkg_add'); - CreateMenuItem(ParentMI, itmPkgAddNewComponentToPkg, 'itmPkgAddNewComponentToPkg', lisMenuNewComponent, 'pkg_add'); + CreateMenuItem(ParentMI, itmPkgAddNewComponentToPkg, 'itmPkgAddNewComponentToPkg', lisMenuNewComponent+' ...', 'pkg_add'); CreateMenuSeparatorSection(mnuComponent,itmPkgGraphSection,'itmPkgGraphSection'); ParentMI:=itmPkgGraphSection; - CreateMenuItem(ParentMI,itmPkgPkgGraph,'itmPkgPkgGraph',lisMenuPackageGraph,'pkg_graph'); + CreateMenuItem(ParentMI,itmPkgPkgGraph,'itmPkgPkgGraph',lisMenuPackageGraph+' ...','pkg_graph'); CreateMenuItem(ParentMI,itmPkgPackageLinks,'itmPkgPackageLinks',lisMenuPackageLinks); CreateMenuItem(ParentMI,itmPkgEditInstallPkgs,'itmPkgEditInstallPkgs',lisMenuEditInstallPkgs,'pkg_properties'); @@ -996,17 +1357,21 @@ CreateMenuSeparatorSection(mnuTools,itmSecondaryTools,'itmSecondaryTools'); ParentMI:=itmSecondaryTools; + CreateMenuItem(ParentMI,itmToolManageDesktops,'itmToolManageDesktops', lisDesktops, 'menu_manage_desktops'); CreateMenuItem(ParentMI,itmToolManageExamples,'itmToolManageExamples',lisMenuExampleProjects, 'camera'); CreateMenuItem(ParentMI,itmToolDiff,'itmToolDiff',lisMenuCompareFiles, 'menu_tool_diff'); + CreateMenuSeparatorSection(mnuTools,itmConversion,'itmConversion'); + ParentMI:=itmConversion; + CreateMenuItem(ParentMI,itmToolConvertEncoding,'itmToolConvertEncoding',lisMenuConvertEncoding); + CreateMenuItem(ParentMI,itmToolCheckLFM,'itmToolCheckLFM',lisMenuCheckLFM, 'menu_tool_check_lfm'); + CreateMenuSubSection(mnuTools,itmDelphiConversion,'itmDelphiConversion',lisMenuDelphiConversion,'menu_tool_dfm_to_lfm'); ParentMI:=itmDelphiConversion; - CreateMenuItem(ParentMI,itmToolCheckLFM,'itmToolCheckLFM',lisMenuCheckLFM, 'menu_tool_check_lfm'); CreateMenuItem(ParentMI,itmToolConvertDelphiUnit,'itmToolConvertDelphiUnit',lisMenuConvertDelphiUnit,'menu_tool_dfm_to_lfm'); CreateMenuItem(ParentMI,itmToolConvertDelphiProject,'itmToolConvertDelphiProject',lisMenuConvertDelphiProject,'menu_tool_dfm_to_lfm'); CreateMenuItem(ParentMI,itmToolConvertDelphiPackage,'itmToolConvertDelphiPackage',lisMenuConvertDelphiPackage,'menu_tool_dfm_to_lfm'); CreateMenuItem(ParentMI,itmToolConvertDFMtoLFM,'itmToolConvertDFMtoLFM',lisMenuConvertDFMtoLFM,'menu_tool_dfm_to_lfm'); - CreateMenuItem(ParentMI,itmToolConvertEncoding,'itmToolConvertEncoding',lisMenuConvertEncoding); CreateMenuSeparatorSection(mnuTools,itmBuildingLazarus,'itmBuildingLazarus'); ParentMI:=itmBuildingLazarus; @@ -1027,7 +1392,7 @@ // Populated later with a list of editor names CreateMenuSeparatorSection(mnuWindow,itmWindowLists,'itmWindowLists'); CreateMenuSeparatorSection(mnuWindow,itmCenterWindowLists,'itmCenterWindowLists'); - itmCenterWindowLists.ChildsAsSubMenu:=true; + itmCenterWindowLists.ChildrenAsSubMenu:=true; itmCenterWindowLists.Caption:=lisCenterALostWindow; CreateMenuSeparatorSection(mnuWindow,itmTabLists,'itmTabLists'); CreateMenuSubSection(itmTabLists,itmTabListProject,'itmTabListProject', dlgEnvProject); @@ -1073,18 +1438,40 @@ procedure TMainIDEBase.LoadMenuShortCuts; - function GetCommand(ACommand: word): TIDECommand; + function GetCmdAndBtn(ACommand: word; out ToolButton: TIDEButtonCommand): TIDECommand; begin Result:=IDECommandList.FindIDECommand(ACommand); + if Result<>nil then + ToolButton := RegisterIDEButtonCommand(Result) + else + ToolButton := nil; + end; + + function GetCommand(ACommand: word): TIDECommand; + var + ToolButton: TIDEButtonCommand; + begin + Result:=GetCmdAndBtn(ACommand, ToolButton); + end; + + function GetCommand(ACommand: word; ToolButtonClass: TIDEToolButtonClass): TIDECommand; + var + ToolButton: TIDEButtonCommand; + begin + Result:=GetCmdAndBtn(ACommand, ToolButton); + if ToolButton<>nil then + ToolButton.ToolButtonClass := ToolButtonClass; end; +var + xBtnItem: TIDEButtonCommand; begin with MainIDEBar do begin // file menu - itmFileNewUnit.Command:=GetCommand(ecNewUnit); - itmFileNewForm.Command:=GetCommand(ecNewForm); + itmFileNewUnit.Command:=GetCommand(ecNewUnit, TNewUnitToolButton); + itmFileNewForm.Command:=GetCommand(ecNewForm, TNewFormToolButton); itmFileNewOther.Command:=GetCommand(ecNew); - itmFileOpen.Command:=GetCommand(ecOpen); + itmFileOpen.Command:=GetCommand(ecOpen, TOpenFileToolButton); itmFileRevert.Command:=GetCommand(ecRevert); itmFileSave.Command:=GetCommand(ecSave); itmFileSaveAs.Command:=GetCommand(ecSaveAs); @@ -1093,7 +1480,6 @@ itmFileCloseAll.Command:=GetCommand(ecCloseAll); itmFileCleanDirectory.Command:=GetCommand(ecCleanDirectory); itmFileQuit.Command:=GetCommand(ecQuit); - itmFileQuit.Command:=GetCommand(ecQuit); // edit menu itmEditUndo.Command:=GetCommand(ecUndo); @@ -1137,6 +1523,17 @@ itmSetFreeBookmark.Command:=GetCommand(ecSetFreeBookmark); itmJumpToNextBookmark.Command:=GetCommand(ecNextBookmark); itmJumpToPrevBookmark.Command:=GetCommand(ecPrevBookmark); + itmJumpToInterface.Command:=GetCommand(ecJumpToInterface, TJumpToSectionToolButton); + itmJumpToInterfaceUses.Command:=GetCommand(ecJumpToInterfaceUses, TJumpToSectionToolButton); + itmJumpToImplementation.Command:=GetCommand(ecJumpToImplementation, TJumpToSectionToolButton); + itmJumpToImplementationUses.Command:=GetCommand(ecJumpToImplementationUses, TJumpToSectionToolButton); + itmJumpToInitialization.Command:=GetCommand(ecJumpToInitialization, TJumpToSectionToolButton); + GetCmdAndBtn(ecJumpToProcedureHeader, xBtnItem); + xBtnItem.OnClick := @SourceEditorManager.JumpToProcedureHeaderClicked; + xBtnItem.ImageIndex := IDEImages.LoadImage(16, 'menu_jumpto_procedureheader'); + GetCmdAndBtn(ecJumpToProcedureBegin, xBtnItem); + xBtnItem.ImageIndex := IDEImages.LoadImage(16, 'menu_jumpto_procedurebegin'); + xBtnItem.OnClick := @SourceEditorManager.JumpToProcedureBeginClicked; itmFindBlockOtherEnd.Command:=GetCommand(ecFindBlockOtherEnd); itmFindBlockStart.Command:=GetCommand(ecFindBlockStart); itmFindDeclaration.Command:=GetCommand(ecFindDeclaration); @@ -1159,8 +1556,6 @@ itmViewSearchResults.Command:=GetCommand(ecToggleSearchResults); itmViewAnchorEditor.Command:=GetCommand(ecViewAnchorEditor); itmViewTabOrder.Command:=GetCommand(ecViewTabOrder); - itmViewComponentPalette.Command:=GetCommand(ecToggleCompPalette); - itmViewIDESpeedButtons.Command:=GetCommand(ecToggleIDESpeedBtns); //itmPkgPackageLinks.Command:=GetCommand(ec?); // source menu @@ -1230,6 +1625,10 @@ itmProjectViewUnits.Command:=GetCommand(ecViewProjectUnits); itmProjectViewForms.Command:=GetCommand(ecViewProjectForms); itmProjectViewSource.Command:=GetCommand(ecViewProjectSource); + GetCmdAndBtn(ecProjectChangeBuildMode, xBtnItem); + xBtnItem.ToolButtonClass:=TSetBuildModeToolButton; + xBtnItem.ImageIndex := IDEImages.LoadImage(16, 'menu_compiler_options'); + xBtnItem.OnClick := @mnuBuildModeClicked; // run menu itmRunMenuCompile.Command:=GetCommand(ecCompile); @@ -1255,7 +1654,7 @@ // package menu itmPkgNewPackage.Command:=GetCommand(ecNewPackage); - itmPkgOpenPackage.Command:=GetCommand(ecOpenPackage); + itmPkgOpenLoadedPackage.Command:=GetCommand(ecOpenPackage); itmPkgOpenPackageFile.Command:=GetCommand(ecOpenPackageFile); itmPkgOpenPackageOfCurUnit.Command:=GetCommand(ecOpenPackageOfCurUnit); itmPkgAddCurFileToPkg.Command:=GetCommand(ecAddCurFileToPkg); @@ -1274,6 +1673,9 @@ itmEnvCodeToolsDefinesEditor.Command:=GetCommand(ecCodeToolsDefinesEd); itmToolConfigure.Command:=GetCommand(ecExtToolSettings); + + itmToolManageDesktops.Command:=GetCommand(ecManageDesktops, TShowDesktopsToolButton); + itmToolManageExamples.Command:=GetCommand(ecManageExamples); itmToolDiff.Command:=GetCommand(ecDiff); itmToolConvertDFMtoLFM.Command:=GetCommand(ecConvertDFM2LFM); @@ -1282,7 +1684,6 @@ itmToolConvertDelphiProject.Command:=GetCommand(ecConvertDelphiProject); itmToolConvertDelphiPackage.Command:=GetCommand(ecConvertDelphiPackage); itmToolConvertEncoding.Command:=GetCommand(ecConvertEncoding); - itmToolManageExamples.Command:=GetCommand(ecManageExamples); itmToolBuildLazarus.Command:=GetCommand(ecBuildLazarus); itmToolConfigureBuildLazarus.Command:=GetCommand(ecConfigBuildLazarus); @@ -1296,11 +1697,6 @@ end; end; -function TMainIDEBase.GetToolStatus: TIDEToolStatus; -begin - Result:=FToolStatus; -end; - function TMainIDEBase.DoOpenMacroFile(Sender: TObject; const AFilename: string ): TModalResult; begin @@ -1351,7 +1747,7 @@ AForm:=Screen.Forms[i]; //debugln(['TMainIDEBase.UpdateWindowMenu ',DbgSName(AForm),' Vis=',AForm.IsVisible,' Des=',DbgSName(AForm.Designer)]); if (not AForm.IsVisible) or (AForm=MainIDEBar) or (AForm=SplashForm) - or (AForm.Designer<>nil) or (WindowsList.IndexOf(AForm)>=0) then + or IsFormDesign(AForm) or (WindowsList.IndexOf(AForm)>=0) then continue; if IDEDockMaster<>nil then begin @@ -1373,7 +1769,8 @@ begin // in the 'bring to front' list CurMenuItem := GetMenuItem(i, itmWindowLists); - if EnvironmentOptions.IDENameForDesignedFormList and (TCustomForm(WindowsList[i]).Designer<>nil) then + if EnvironmentOptions.Desktop.IDENameForDesignedFormList + and IsFormDesign(TWinControl(WindowsList[i])) then CurMenuItem.Caption:=TCustomForm(WindowsList[i]).Name else CurMenuItem.Caption:=TCustomForm(WindowsList[i]).Caption; @@ -1381,7 +1778,8 @@ CurMenuItem.OnClick:=@mnuWindowItemClick; // in the 'center' list CurMenuItem := GetMenuItem(i, itmCenterWindowLists); - if EnvironmentOptions.IDENameForDesignedFormList and (TCustomForm(WindowsList[i]).Designer<>nil) then + if EnvironmentOptions.Desktop.IDENameForDesignedFormList + and IsFormDesign(TWinControl(WindowsList[i])) then CurMenuItem.Caption:=TCustomForm(WindowsList[i]).Name else CurMenuItem.Caption:=TCustomForm(WindowsList[i]).Caption; diff -Nru lazarus-1.4.4+dfsg/ide/mainintf.pas lazarus-1.6+dfsg/ide/mainintf.pas --- lazarus-1.4.4+dfsg/ide/mainintf.pas 2015-05-01 10:39:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/mainintf.pas 2015-12-21 22:44:50.000000000 +0000 @@ -59,9 +59,13 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Classes, LCLType, LCLIntf, Buttons, Menus, SysUtils, - typinfo, Controls, Graphics, ExtCtrls, Dialogs, FileUtil, Forms, - CodeToolManager, CodeCache, AVL_Tree, SynEditKeyCmds, + Classes, SysUtils, typinfo, AVL_Tree, + LCLType, LCLIntf, Buttons, Menus, Controls, Graphics, ExtCtrls, Dialogs, Forms, + SynEditKeyCmds, + // Codetools + CodeToolManager, CodeCache, + // LazUtils + FileUtil, LazFileUtils, // IDEIntf PropEdits, ObjectInspector, MenuIntf, SrcEditorIntf, ProjectIntf, CompOptsIntf, LazIDEIntf, IDEDialogs, IDEWindowIntf, @@ -72,17 +76,7 @@ type // The IDE is at anytime in a specific state: - TIDEToolStatus = ( - itNone, // The default mode. All editing allowed. - itExiting, // the ide is shutting down - itBuilder, // compiling (the project, a package, IDE itself, an external tool) - // Loading/Saving/Debugging is not allowed. - itDebugger, // debugging the project. - // Loading/Saving/Compiling is not allowed. - itCodeTools, // the CodeToolBoss is working and has called the progress event. - itCodeToolAborting,// the CodeToolBoss is working and is about to abort - itCustom // this state is not used yet. - ); + TIDEToolStatus = TLazToolStatus; // window in front TDisplayState = ( @@ -122,15 +116,12 @@ TMainIDEInterface = class(TLazIDEInterface) protected - function GetToolStatus: TIDEToolStatus; virtual; abstract; function GetActiveProject: TLazProject; override; public HiddenWindowsOnRun: TFPList; // list of forms, that were automatically hidden // and will be shown when debugged program stops - property ToolStatus: TIDEToolStatus read GetToolStatus; - constructor Create(TheOwner: TComponent); override; destructor Destroy; override; @@ -404,6 +395,7 @@ else exit(false); end; end; + Result:=true; end; function TMainIDEInterface.DoJumpToSourcePosition(const Filename: string; NewX, NewY, diff -Nru lazarus-1.4.4+dfsg/ide/main.pp lazarus-1.6+dfsg/ide/main.pp --- lazarus-1.4.4+dfsg/ide/main.pp 2015-05-01 10:39:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/main.pp 2016-02-06 14:12:55.000000000 +0000 @@ -59,34 +59,31 @@ MemCheck, {$ENDIF} // fpc packages - Math, Classes, SysUtils, Process, TypInfo, types, strutils, AVL_Tree, -{$IFDEF UseAsyncProcess} - AsyncProcess, -{$ENDIF} - // lazutils - LazUTF8, Laz2_XMLCfg, AvgLvlTree, - // lcl - LCLProc, LCLType, LCLIntf, LConvEncoding, ComCtrls, - FileUtil, LResources, Forms, Buttons, Menus, Controls, GraphType, - HelpIntfs, Graphics, ExtCtrls, Dialogs, InterfaceBase, UTF8Process, LazLogger, - lazutf8classes, LazFileCache, - // codetools + Math, Classes, SysUtils, TypInfo, types, strutils, AVL_Tree, + // LCL + LCLProc, LCLType, LCLIntf, LResources, ComCtrls, HelpIntfs, InterfaceBase, + Forms, Buttons, Menus, Controls, GraphType, Graphics, ExtCtrls, Dialogs, + // CodeTools FileProcs, FindDeclarationTool, LinkScanner, BasicCodeTools, CodeToolsStructs, CodeToolManager, CodeCache, DefineTemplates, KeywordFuncLists, CodeTree, - StdCodeTools, - // synedit - AllSynEdit, SynEditKeyCmds, SynBeautifier, SynEditMarks, + StdCodeTools, ChooseClassSectionDlg, + // LazUtils + // use lazutf8, lazfileutils and lazfilecache after FileProcs and FileUtil + FileUtil, LazFileUtils, LazFileCache, LazUTF8, LazUTF8Classes, UTF8Process, + LConvEncoding, Laz2_XMLCfg, LazLogger, + // SynEdit + AllSynEdit, SynEditKeyCmds, SynEditMarks, SynEditHighlighter, // IDE interface IDEIntf, ObjectInspector, PropEdits, PropEditUtils, MacroIntf, IDECommands, IDEWindowIntf, ComponentReg, SrcEditorIntf, NewItemIntf, IDEExternToolIntf, IDEMsgIntf, PackageIntf, ProjectIntf, CompOptsIntf, MenuIntf, LazIDEIntf, IDEDialogs, - IDEOptionsIntf, IDEImagesIntf, ComponentEditors, + IDEOptionsIntf, IDEImagesIntf, ComponentEditors, ToolBarIntf, // protocol IDEProtocol, // compile CompilerOptions, CheckCompilerOpts, BuildProjectDlg, - ApplicationBundle, ImExportCompilerOpts, + ApplicationBundle, ExtTools, // projects ProjectResources, Project, ProjectDefs, NewProjectDlg, @@ -94,7 +91,7 @@ // help manager IDEContextHelpEdit, IDEHelpIntf, IDEHelpManager, CodeHelp, HelpOptions, // designer - JITForms, ComponentPalette, ComponentList, CompPagesPopup, + JITForms, ComponentPalette, ComponentList, CompPagesPopup, IdeCoolbarData, ObjInspExt, Designer, FormEditor, CustomFormEditor, lfmUnitResource, ControlSelection, AnchorEditor, TabOrderDlg, MenuEditorForm, // LRT stuff @@ -115,7 +112,7 @@ // environment option frames editor_general_options, componentpalette_options, formed_options, OI_options, MsgWnd_Options, files_options, desktop_options, window_options, - Backup_Options, naming_options, fpdoc_options, + Backup_Options, naming_options, fpdoc_options, idecoolbar_options, editortoolbar_options, editor_display_options, editor_keymapping_options, editor_mouseaction_options, editor_mouseaction_options_advanced, editor_color_options, editor_markup_options, editor_markup_userdefined, editor_codetools_options, editor_codefolding_options, @@ -146,7 +143,7 @@ CodeTemplatesDlg, CodeBrowser, FindUnitDlg, InspectChksumChangedDlg, IdeOptionsDlg, EditDefineTree, PublishModule, EnvironmentOpts, TransferMacros, KeyMapping, IDETranslations, IDEProcs, ExtToolDialog, ExtToolEditDlg, - JumpHistoryView, ExampleManager, + JumpHistoryView, DesktopManager, ExampleManager, BuildLazDialog, BuildProfileManager, BuildManager, CheckCompOptsForNewUnitDlg, MiscOptions, InputHistory, UnitDependencies, IDEFPCInfo, IDEInfoDlg, IDEInfoNeedBuild, ProcessList, InitialSetupDlgs, @@ -156,7 +153,8 @@ UseUnitDlg, FindOverloadsDlg, EditorFileManager, CleanDirDlg, CodeContextForm, AboutFrm, CompatibilityRestrictions, RestrictionBrowser, ProjectWizardDlg, IDECmdLine, IDEGuiCmdLine, CodeExplOpts, - EditorMacroListViewer, SourceFileManager, + EditorMacroListViewer, SourceFileManager, EditorToolbarStatic, + IDEInstances, // main ide MainBar, MainIntf, MainBase; @@ -170,23 +168,27 @@ { TMainIDE } TMainIDE = class(TMainIDEBase) + private // event handlers - procedure MainIDEFormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure MainIDEFormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure MainIDEFormCloseQuery(Sender: TObject; var CanClose: boolean); - procedure OnApplicationUserInput(Sender: TObject; Msg: Cardinal); - procedure OnApplicationIdle(Sender: TObject; var Done: Boolean); - procedure OnApplicationActivate(Sender: TObject); - procedure OnApplicationDeActivate(Sender: TObject); - procedure OnApplicationKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure OnApplicationQueryEndSession(var Cancel: Boolean); - procedure OnApplicationEndSession(Sender: TObject); - procedure OnScreenChangedForm(Sender: TObject; Form: TCustomForm); - procedure OnScreenRemoveForm(Sender: TObject; AForm: TCustomForm); - procedure OnRemoteControlTimer(Sender: TObject); - procedure OnSelectFrame(Sender: TObject; var AComponentClass: TComponentClass); + procedure HandleApplicationUserInput(Sender: TObject; {%H-}Msg: Cardinal); + procedure HandleApplicationIdle(Sender: TObject; var {%H-}Done: Boolean); + procedure HandleApplicationActivate(Sender: TObject); + procedure HandleApplicationDeActivate(Sender: TObject); + procedure HandleApplicationKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure HandleApplicationQueryEndSession(var Cancel: Boolean); + procedure HandleApplicationEndSession(Sender: TObject); + procedure HandleScreenChangedForm(Sender: TObject; {%H-}Form: TCustomForm); + procedure HandleScreenChangedControl(Sender: TObject; LastControl: TControl); + procedure HandleScreenRemoveForm(Sender: TObject; AForm: TCustomForm); + procedure HandleRemoteControlTimer(Sender: TObject); + procedure HandleSelectFrame(Sender: TObject; var AComponentClass: TComponentClass); procedure OIChangedTimerTimer(Sender: TObject); - procedure OnMainBarActive(Sender: TObject); - + procedure LazInstancesStartNewInstance(const aFiles: TStrings; + var Result: TStartNewInstanceResult; var outSourceWindowHandle: HWND); + procedure LazInstancesGetOpenedProjectFileName(var outProjectFileName: string); + public // file menu procedure mnuNewUnitClicked(Sender: TObject); procedure mnuNewFormClicked(Sender: TObject); @@ -252,8 +254,6 @@ procedure mnuToggleFormUnitClicked(Sender: TObject); procedure mnuViewAnchorEditorClicked(Sender: TObject); procedure mnuViewTabOrderClicked(Sender: TObject); - procedure mnuViewComponentPaletteClicked(Sender: TObject); - procedure mnuViewIDESpeedButtonsClicked(Sender: TObject); procedure mnuViewFPCInfoClicked(Sender: TObject); procedure mnuViewIDEInfoClicked(Sender: TObject); procedure mnuViewNeedBuildClicked(Sender: TObject); @@ -322,6 +322,7 @@ procedure mnuViewFormsClicked(Sender: TObject); procedure mnuViewProjectSourceClicked(Sender: TObject); procedure mnuProjectOptionsClicked(Sender: TObject); + procedure mnuBuildModeClicked(Sender: TObject); override; // run menu procedure mnuCompileProjectClicked(Sender: TObject); @@ -355,6 +356,7 @@ procedure mnuToolConvertDelphiProjectClicked(Sender: TObject); procedure mnuToolConvertDelphiPackageClicked(Sender: TObject); procedure mnuToolConvertEncodingClicked(Sender: TObject); + procedure mnuToolManageDesktopsClicked(Sender: TObject); procedure mnuToolManageExamplesClicked(Sender: TObject); procedure mnuToolBuildLazarusClicked(Sender: TObject); procedure mnuToolBuildAdvancedLazarusClicked(Sender: TObject); @@ -364,7 +366,6 @@ // options menu procedure mnuEnvGeneralOptionsClicked(Sender: TObject); - procedure mnuEnvEditorOptionsClicked(Sender: TObject); procedure mnuEnvCodeTemplatesClicked(Sender: TObject); procedure mnuEnvCodeToolsDefinesEditorClicked(Sender: TObject); procedure mnuEnvRescanFPCSrcDirClicked(Sender: TObject); @@ -375,48 +376,54 @@ // help menu // see helpmanager.pas - // Handlers called when a menu opens. Can disable sub-items etc. - procedure mnuFileClicked(Sender: TObject); // file menu - procedure mnuEditClicked(Sender: TObject); // edit menu - procedure mnuSourceClicked(Sender: TObject); // source menu - procedure mnuProjectClicked(Sender: TObject); // project menu - procedure mnuRunClicked(Sender: TObject); // run menu - procedure mnuPackageClicked(Sender: TObject); // package menu + // Handlers to update commands. Can disable sub-items etc. + private + UpdateFileCommandsStamp: TFileCommandsStamp; + UpdateProjectCommandsStamp: TProjectCommandsStamp; + UpdateEditorCommandsStamp: TSourceEditorCommandsStamp; + UpdateEditorTabCommandsStamp: TSourceEditorTabCommandsStamp; + UpdatePackageCommandsStamp: TPackageCommandsStamp; + UpdateBookmarkCommandsStamp: TBookmarkCommandsStamp; + BookmarksStamp: Int64; + public + procedure UpdateMainIDECommands(Sender: TObject); + procedure UpdateFileCommands(Sender: TObject); + procedure UpdateEditorCommands(Sender: TObject); + procedure UpdateBookmarkCommands(Sender: TObject); + procedure UpdateEditorTabCommands(Sender: TObject); + procedure UpdateProjectCommands(Sender: TObject); + procedure UpdatePackageCommands(Sender: TObject); // see pkgmanager.pas - procedure OpenFilePopupMenuPopup(Sender: TObject); - procedure mnuOpenFilePopupClick(Sender: TObject); - procedure SetBuildModePopupMenuPopup(Sender: TObject); - procedure mnuChgBuildModeClicked(Sender: TObject); - procedure mnuSetBuildModeClick(Sender: TObject); // event for drop down items + procedure ToolBarOptionsClick(Sender: TObject); private fBuilder: TLazarusBuilder; - procedure AllowCompilation(aAllow: Boolean); function DoBuildLazarusSub(Flags: TBuildLazarusFlags): TModalResult; - public + procedure ProjectOptionsHelper(AFilter: array of TAbstractIDEOptionsClass); // Global IDE events - procedure OnProcessIDECommand(Sender: TObject; Command: word; + procedure HandleProcessIDECommand(Sender: TObject; Command: word; var Handled: boolean); - procedure OnExecuteIDEShortCut(Sender: TObject; + procedure HandleExecuteIDEShortCut(Sender: TObject; var Key: word; Shift: TShiftState; IDEWindowClass: TCustomFormClass); - function OnExecuteIDECommand(Sender: TObject; Command: word): boolean; - function OnSelectDirectory(const Title, InitialDir: string): string; - procedure OnInitIDEFileDialog(AFileDialog: TFileDialog); - procedure OnStoreIDEFileDialog(AFileDialog: TFileDialog); - function OnIDEMessageDialog(const aCaption, aMsg: string; + function HandleExecuteIDECommand(Sender: TObject; Command: word): boolean; + function HandleSelectDirectory(const Title, InitialDir: string): string; + procedure HandleInitIDEFileDialog(AFileDialog: TFileDialog); + procedure HandleStoreIDEFileDialog(AFileDialog: TFileDialog); + function HandleIDEMessageDialog(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; const HelpKeyword: string): Integer; - function OnIDEQuestionDialog(const aCaption, aMsg: string; + function HandleIDEQuestionDialog(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: array of const; const HelpKeyword: string): Integer; - + procedure HandleLayoutChanged(Sender: TObject); + public // Environment options dialog events - procedure OnLoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); - procedure OnSaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); - procedure DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; + procedure DoLoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); + procedure DoSaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); + function DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; ACaption: String; AOptionsFilter: array of TAbstractIDEOptionsClass; - ASettings: TIDEOptionsEditorSettings); override; + ASettings: TIDEOptionsEditorSettings): Boolean; override; procedure DoEnvironmentOptionsBeforeRead(Sender: TObject); procedure DoEnvironmentOptionsBeforeWrite(Sender: TObject; Restore: boolean); @@ -434,6 +441,8 @@ // ComponentPalette events procedure ComponentPaletteClassSelected(Sender: TObject); // Copied from CodeTyphon + procedure SelComponentPageButtonMouseDown(Sender: TObject; + {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); override; procedure SelComponentPageButtonClick(Sender: TObject); override; // SourceNotebook events @@ -441,12 +450,9 @@ procedure OnSrcNoteBookAddJumpPoint(ACaretXY: TPoint; ATopLine: integer; AEditor: TSourceEditor; DeleteForwardHistory: boolean); procedure OnSrcNoteBookClickLink(Sender: TObject; - Button: TMouseButton; Shift: TShiftstate; X, Y: Integer); + {%H-}Button: TMouseButton; {%H-}Shift: TShiftstate; X, Y: Integer); procedure OnSrcNoteBookMouseLink( Sender: TObject; X, Y: Integer; var AllowMouseLink: Boolean); - function OnSrcNoteBookGetIndent(Sender: TObject; SrcEditor: TSourceEditor; - LogCaret, OldLogCaret: TPoint; FirstLinePos, LastLinePos: Integer; - Reason: TSynEditorCommand; SetIndentProc: TSynBeautifierSetIndentProc): Boolean; procedure OnSrcNotebookDeleteLastJumPoint(Sender: TObject); procedure OnSrcNotebookEditorActived(Sender: TObject); procedure OnSrcNotebookEditorPlaceBookmark(Sender: TObject; var Mark: TSynEditMark); @@ -469,12 +475,12 @@ JumpToError: boolean; out Handled, Abort: boolean); procedure OnSrcNotebookShowCodeContext(JumpToError: boolean; out Abort: boolean); - procedure OnSrcNotebookJumpToHistoryPoint(var NewCaretXY: TPoint; - var NewTopLine: integer; var DestEditor: TSourceEditor; JumpAction: TJumpHistoryAction); + procedure OnSrcNotebookJumpToHistoryPoint(out NewCaretXY: TPoint; + out NewTopLine: integer; out DestEditor: TSourceEditor; JumpAction: TJumpHistoryAction); procedure OnSrcNotebookReadOnlyChanged(Sender: TObject); procedure OnSrcNotebookSaveAll(Sender: TObject); procedure OnSrcNotebookShowHintForSource(SrcEdit: TSourceEditor; - ClientPos: TPoint; CaretPos: TPoint); + CaretPos: TPoint; AutoShown: Boolean); procedure OnSrcNoteBookShowUnitInfo(Sender: TObject); procedure OnSrcNotebookToggleFormUnit(Sender: TObject); procedure OnSrcNotebookToggleObjectInsp(Sender: TObject); @@ -536,7 +542,8 @@ // designer events procedure OnDesignerGetSelectedComponentClass(Sender: TObject; var RegisteredComponent: TRegisteredComponent); - procedure OnDesignerComponentAdded(Sender: TObject); + procedure OnDesignerComponentAdded(Sender: TObject; AComponent: TComponent; + ARegisteredComponent: TRegisteredComponent); procedure OnDesignerSetDesigning(Sender: TObject; Component: TComponent; Value: boolean); procedure OnDesignerShowOptions(Sender: TObject); @@ -592,15 +599,13 @@ procedure OnCodeToolBossFindDefineProperty(Sender: TObject; const PersistentClassName, AncestorClassName, Identifier: string; var IsDefined: boolean); - procedure OnCodeBufferDecodeLoaded(Code: TCodeBuffer; + procedure OnCodeBufferDecodeLoaded({%H-}Code: TCodeBuffer; const Filename: string; var Source, DiskEncoding, MemEncoding: string); procedure OnCodeBufferEncodeSaving(Code: TCodeBuffer; const Filename: string; var Source: string); function OnCodeToolBossGetMethodName(const Method: TMethod; PropOwner: TObject): String; procedure CodeToolBossPrepareTree(Sender: TObject); - procedure CodeToolBossProgress(Sender: TObject; Index, MaxIndex: integer; - const Msg: string; var Abort: boolean); procedure OnCodeToolBossGetIndenterExamples(Sender: TObject; Code: TCodeBuffer; Step: integer; // starting at 0 var CodeBuffers: TFPList; // stopping when CodeBuffers=nil @@ -611,14 +616,14 @@ function CTMacroFunctionProject(Data: Pointer): boolean; procedure OnCompilerParseStampIncreased; - procedure CodeToolBossScannerInit(Self: TCodeToolManager; + procedure CodeToolBossScannerInit({%H-}Self: TCodeToolManager; Scanner: TLinkScanner); // SearchResultsView events - procedure SearchResultsViewSelectionChanged(sender: TObject); + procedure SearchResultsViewSelectionChanged({%H-}sender: TObject); // JumpHistoryView events - procedure JumpHistoryViewSelectionChanged(sender: TObject); + procedure JumpHistoryViewSelectionChanged({%H-}sender: TObject); // External Tools events procedure FPCMsgFilePoolLoadFile(aFilename: string; out s: string); @@ -628,7 +633,6 @@ private FUserInputSinceLastIdle: boolean; FDesignerToBeFreed: TFilenameToStringTree; // form file names to be freed OnIdle. - FApplicationIsActivate: boolean; fNeedSaveEnvironment: boolean; FRemoteControlTimer: TTimer; FRemoteControlFileAge: integer; @@ -639,12 +643,25 @@ FOIHelpProvider: TAbstractIDEHTMLProvider; FWaitForClose: Boolean; FFixingGlobalComponentLock: integer; - fLastCompPaletteForm: TCustomForm; OldCompilerFilename, OldLanguage: String; OIChangedTimer: TIdleTimer; + procedure DoDropFilesAsync(Data: PtrInt); procedure RenameInheritedMethods(AnUnitInfo: TUnitInfo; List: TStrings); function OIHelpProvider: TAbstractIDEHTMLProvider; + // form editor and designer + procedure DoBringToFrontFormOrUnit; + procedure DoBringToFrontFormOrInspector(ForceInspector: boolean); + procedure DoShowSourceOfActiveDesignerForm; + procedure SetDesigning(AComponent: TComponent; Value: Boolean); + procedure SetDesignInstance(AComponent: TComponent; Value: Boolean); + procedure InvalidateAllDesignerForms; + procedure ShowDesignerForm(AForm: TCustomForm); + procedure DoViewAnchorEditor(State: TIWGetFormState = iwgfShowOnTop); + procedure DoViewTabOrderEditor(State: TIWGetFormState = iwgfShowOnTop); + // editor and environment options + procedure LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); + procedure SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); protected procedure SetToolStatus(const AValue: TIDEToolStatus); override; procedure Notification(AComponent: TComponent; @@ -669,10 +686,7 @@ procedure SetupHelpMenu; override; procedure LoadMenuShortCuts; override; procedure ConnectMainBarEvents; - procedure SetupSpeedButtons; procedure SetupDialogs; - procedure SetupComponentPalette; - procedure SetupHints; procedure SetupObjectInspector; procedure SetupFormEditor; procedure SetupSourceNotebook; @@ -695,7 +709,6 @@ XMLConfig: TXMLConfig; Merge: boolean); procedure OnSaveProjectInfoToXMLConfig(TheProject: TProject; XMLConfig: TXMLConfig; WriteFlags: TProjectWriteFlags); - procedure OnProjectGetTestDirectory(TheProject: TProject; out TestDir: string); procedure OnProjectChangeInfoFile(TheProject: TProject); procedure OnSaveProjectUnitSessionInfo(AUnitInfo: TUnitInfo); public @@ -708,6 +721,7 @@ function DoResetToolStatus(AFlags: TResetToolFlags): boolean; override; // files/units + function DoAddUnitToProject(AEditor: TSourceEditorInterface): TModalResult; override; function DoNewFile(NewFileDescriptor: TProjectFileDescriptor; var NewFilename: string; NewSource: string; NewFlags: TNewFlags; NewOwner: TObject): TModalResult; override; @@ -780,13 +794,14 @@ function DoWarnAmbiguousFiles: TModalResult; function DoSaveForBuild(AReason: TCompileReason): TModalResult; override; function DoBuildProject(const AReason: TCompileReason; - Flags: TProjectBuildFlags): TModalResult; override; + Flags: TProjectBuildFlags; + FinalizeResources: boolean = True): TModalResult; override; function UpdateProjectPOFile(AProject: TProject): TModalResult; function DoAbortBuild(Interactive: boolean): TModalResult; procedure DoCompile; procedure DoQuickCompile; function DoInitProjectRun: TModalResult; override; - function DoRunProject: TModalResult; + function DoRunProject: TModalResult; override; function DoSaveProjectToTestDirectory(Flags: TSaveFlags): TModalResult; function QuitIDE: boolean; @@ -803,19 +818,20 @@ function DoExampleManager: TModalResult; override; function DoBuildLazarus(Flags: TBuildLazarusFlags): TModalResult; override; function DoBuildAdvancedLazarus(ProfileNames: TStringList): TModalResult; - function DoBuildFile(ShowAbort: Boolean): TModalResult; - function DoRunFile: TModalResult; - function DoConfigBuildFile: TModalResult; - function GetIDEDirectives(AnUnitInfo: TUnitInfo; + function DoBuildFile({%H-}ShowAbort: Boolean; Filename: string = ''): TModalResult; override; + function DoRunFile(Filename: string = ''): TModalResult; override; + function DoConfigureBuildFile: TModalResult; override; + function GetIDEDirectives(aFilename: string; DirectiveList: TStrings): TModalResult; function FilterIDEDirective(Tool: TStandardCodeTool; StartPos, {%H-}EndPos: integer): boolean; // useful information methods + procedure GetUnit(SourceEditor: TSourceEditor; out UnitInfo: TUnitInfo); procedure GetCurrentUnit(out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); override; procedure GetDesignerUnit(ADesigner: TDesigner; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); override; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); override; function GetProjectFileForProjectEditor(AEditor: TSourceEditorInterface): TLazProjectFile; override; function GetDesignerForProjectEditor(AEditor: TSourceEditorInterface; LoadForm: boolean): TIDesigner; override; @@ -826,11 +842,11 @@ function GetProjectFileWithRootComponent(AComponent: TComponent): TLazProjectFile; override; function GetProjectFileWithDesigner(ADesigner: TIDesigner): TLazProjectFile; override; procedure GetObjectInspectorUnit( - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); override; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); override; procedure GetUnitWithForm(AForm: TCustomForm; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); override; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); override; procedure GetUnitWithPersistent(APersistent: TPersistent; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); override; + out ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); override; function GetAncestorUnit(AnUnitInfo: TUnitInfo): TUnitInfo; function GetAncestorLookupRoot(AnUnitInfo: TUnitInfo): TComponent; procedure UpdateSaveMenuItemsAndButtons(UpdateSaveAll: boolean); override; @@ -865,6 +881,7 @@ ActiveUnitInfo: TUnitInfo; NewSource: TCodeBuffer; NewX, NewY, NewTopLine: integer; Flags: TJumpToCodePosFlags = [jfFocusEditor]): TModalResult; override; + function DoShowCodeToolBossError: TMessageLine; override; procedure DoJumpToCodeToolBossError; override; function NeedSaveSourceEditorChangesToCodeCache(AEditor: TSourceEditorInterface): boolean; override; function SaveSourceEditorChangesToCodeCache(AEditor: TSourceEditorInterface): boolean; override; @@ -901,9 +918,10 @@ function DoConvertDelphiPackage(const DelphiFilename: string): TModalResult; // message view + function GetSelectedCompilerMessage: TMessageLine; override; function DoJumpToCompilerMessage(FocusEditor: boolean; Msg: TMessageLine = nil ): boolean; override; - procedure DoJumpToNextError(DirectionDown: boolean); override; + procedure DoJumpToNextCompilerMessage(aMinUrgency: TMessageLineUrgency; DirectionDown: boolean); override; procedure DoShowMessagesView(BringToFront: boolean = true); override; // methods for debugging, compiling and external tools @@ -918,26 +936,14 @@ procedure DoShowSearchResultsView(State: TIWGetFormState = iwgfShowOnTop); override; // form editor and designer - procedure DoBringToFrontFormOrUnit; - procedure DoBringToFrontFormOrInspector(ForceInspector: boolean); - procedure DoShowDesignerFormOfCurrentSrc; override; - procedure DoShowSourceOfActiveDesignerForm; - procedure SetDesigning(AComponent: TComponent; Value: Boolean); - procedure SetDesignInstance(AComponent: TComponent; Value: Boolean); + procedure DoShowDesignerFormOfCurrentSrc(AComponentPaletteClassSelected: Boolean); override; + procedure DoShowDesignerFormOfSrc(AEditor: TSourceEditorInterface); override; + procedure DoShowMethod(AEditor: TSourceEditorInterface; const AMethodName: String); override; + procedure DoShowDesignerFormOfSrc(AEditor: TSourceEditorInterface; out AForm: TCustomForm); override; function CreateDesignerForComponent(AnUnitInfo: TUnitInfo; - AComponent: TComponent): TCustomForm; override; - procedure InvalidateAllDesignerForms; - procedure UpdateIDEComponentPalette(IfFormChanged: boolean); - procedure ShowDesignerForm(AForm: TCustomForm); - procedure DoViewAnchorEditor(State: TIWGetFormState = iwgfShowOnTop); - procedure DoViewTabOrderEditor(State: TIWGetFormState = iwgfShowOnTop); - procedure DoToggleViewComponentPalette; - procedure DoToggleViewIDESpeedButtons; - + AComponent: TComponent): TCustomForm; override; // editor and environment options procedure SaveEnvironment(Immediately: boolean = false); override; - procedure LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); - procedure SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); procedure PackageTranslated(APackage: TLazPackage); override; end; @@ -956,6 +962,14 @@ StartedByStartLazarus: boolean = false; ShowSetupDialog: boolean = false; +type + TDoDropFilesAsyncParams = class(TComponent) + public + FileNames: array of string; + WindowIndex: Integer; + BringToFront: Boolean; + end; + function FindDesignComponent(const aName: string): TComponent; var AnUnitInfo: TUnitInfo; @@ -972,9 +986,6 @@ end; end; -//============================================================================== - - { TMainIDE } {------------------------------------------------------------------------------- @@ -1060,8 +1071,7 @@ except end; end; - if HelpLang<>'' then - TranslateResourceStrings(ProgramDirectory(true), HelpLang); + TranslateResourceStrings(ProgramDirectory(true), HelpLang); AHelp := TStringList.Create; AddHelp([lislazarusOptionsProjectFilename]); @@ -1099,6 +1109,10 @@ AddHelp(['or ',NoSplashScreenOptShort]); AddHelp([BreakString(space+lisDoNotShowSplashScreen,75, 22)]); AddHelp(['']); + AddHelp([ForceNewInstanceOpt]); + AddHelp([BreakString(Format( + lisDoNotCheckIfAnotherIDEInstanceIsAlreadyRunning, [space]), 75, 22)]); + AddHelp(['']); AddHelp([SkipLastProjectOpt]); AddHelp([BreakString(space+lisSkipLoadingLastProject, 75, 22)]); AddHelp(['']); @@ -1126,9 +1140,11 @@ ParseGuiCmdLineParams(SkipAutoLoadingLastProject, StartedByStartLazarus, EnableRemoteControl, ShowSplashScreen, ShowSetupDialog); - DebugLn('TMainIDE.ParseCmdLineOptions:'); - Debugln(' PrimaryConfigPath="',GetPrimaryConfigPath,'"'); - Debugln(' SecondaryConfigPath="',GetSecondaryConfigPath,'"'); + if ConsoleVerbosity>=0 then + begin + Debugln('Hint: (lazarus) [TMainIDE.ParseCmdLineOptions] PrimaryConfigPath="',GetPrimaryConfigPath,'"'); + Debugln('Hint: (lazarus) [TMainIDE.ParseCmdLineOptions] SecondaryConfigPath="',GetSecondaryConfigPath,'"'); + end; end; procedure TMainIDE.LoadGlobalOptions; @@ -1190,13 +1206,13 @@ // read language and lazarusdir paramters, needed for translation if Application.HasOption('language') then begin - debugln('TMainIDE.LoadGlobalOptions overriding language with command line: ', + debugln('Hint: (lazarus) [TMainIDE.LoadGlobalOptions] overriding language with command line: ', Application.GetOptionValue('language')); EnvironmentOptions.LanguageID := Application.GetOptionValue('language'); end; if Application.HasOption('lazarusdir') then begin - debugln('TMainIDE.LoadGlobalOptions overriding Lazarusdir with command line: ', + debugln('Hint: (lazarus) [TMainIDE.LoadGlobalOptions] overriding Lazarusdir with command line: ', Application.GetOptionValue('lazarusdir')); EnvironmentOptions.Lazarusdirectory:= Application.GetOptionValue('lazarusdir'); end; @@ -1236,10 +1252,10 @@ // => either the user forgot to pass a --pcp // or the user uninstalled and installed to another directory // => warn - debugln(['TMainIDE.LoadGlobalOptions ']); - debugln([' LastCalled="',LastCalled,'"']); - debugln([' CurPrgName="',CurPrgName,'"']); - debugln([' AltPrgName="',AltPrgName,'"']); + debugln(['Hint: (lazarus) [TMainIDE.LoadGlobalOptions]']); + debugln(['Hint: (lazarus) LastCalled="',LastCalled,'"']); + debugln(['Hint: (lazarus) CurPrgName="',CurPrgName,'"']); + debugln(['Hint: (lazarus) AltPrgName="',AltPrgName,'"']); MsgResult := IDEQuestionDialog(lisIncorrectConfigurationDirectoryFound, SimpleFormat(lisIDEConficurationFoundMayBelongToOtherLazarus, [LineEnding, GetSecondConfDirWarning, GetPrimaryConfigPath, @@ -1296,6 +1312,7 @@ LoadFileDialogFilter; EditorOpts := TEditorOptions.Create; + IDEEditorOptions := EditorOpts; EditorOpts.OnBeforeRead := @DoEditorOptionsBeforeRead; EditorOpts.OnAfterWrite := @DoEditorOptionsAfterWrite; SetupIDECommands; @@ -1347,7 +1364,7 @@ if (not ShowSetupDialog) and (CheckLazarusDirectoryQuality(EnvironmentOptions.GetParsedLazarusDirectory,Note)<>sddqCompatible) then begin - debugln(['Warning: incompatible Lazarus directory: ',EnvironmentOptions.GetParsedLazarusDirectory]); + debugln(['Warning: (lazarus) incompatible Lazarus directory: ',EnvironmentOptions.GetParsedLazarusDirectory]); ShowSetupDialog:=true; end; @@ -1356,7 +1373,7 @@ and (CheckCompilerQuality(EnvironmentOptions.GetParsedCompilerFilename,Note, CodeToolBoss.FPCDefinesCache.TestFilename)=sddqInvalid) then begin - debugln(['Warning: invalid compiler: ',EnvironmentOptions.GetParsedCompilerFilename]); + debugln(['Warning: (lazarus) invalid compiler: ',EnvironmentOptions.GetParsedCompilerFilename]); ShowSetupDialog:=true; end; @@ -1368,7 +1385,7 @@ if CheckFPCSrcDirQuality(EnvironmentOptions.GetParsedFPCSourceDirectory,Note, CfgCache.GetFPCVer)=sddqInvalid then begin - debugln(['Warning: invalid fpc source directory: ',EnvironmentOptions.GetParsedFPCSourceDirectory]); + debugln(['Warning: (lazarus) invalid fpc source directory: ',EnvironmentOptions.GetParsedFPCSourceDirectory]); ShowSetupDialog:=true; end; end; @@ -1379,7 +1396,15 @@ or (EnvironmentOptions.DebuggerConfig.DebuggerClass='TGDBMIDebugger')) and (CheckDebuggerQuality(EnvironmentOptions.GetParsedDebuggerFilename, Note)<>sddqCompatible) then begin - debugln(['Warning: missing GDB exe',EnvironmentOptions.GetParsedLazarusDirectory]); + debugln(['Warning: (lazarus) missing GDB exe',EnvironmentOptions.GetParsedLazarusDirectory]); + ShowSetupDialog:=true; + end; + + // check 'make' utility + if (not ShowSetupDialog) + and (CheckMakeExeQuality(EnvironmentOptions.GetParsedMakeFilename,Note)<>sddqCompatible) + then begin + debugln(['Warning: (lazarus) incompatible make utility: ',EnvironmentOptions.GetParsedMakeFilename]); ShowSetupDialog:=true; end; @@ -1414,7 +1439,8 @@ var Layout: TSimpleWindowLayout; FormCreator: TIDEWindowCreator; - AMenuHeight: Integer; + PkgMngr: TPkgManager; + CompPalette: TComponentPalette; begin {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.Create START');{$ENDIF} inherited Create(TheOwner); @@ -1425,7 +1451,6 @@ SetupDialogs; MainBuildBoss:=TBuildManager.Create(nil); - MainBuildBoss.HasGUI:=true; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.Create BUILD MANAGER');{$ENDIF} // setup macros before loading options MainBuildBoss.SetupTransferMacros; @@ -1436,7 +1461,7 @@ LoadGlobalOptions; if Application.Terminated then exit; - if EnvironmentOptions.SingleTaskBarButton then + if EnvironmentOptions.Desktop.SingleTaskBarButton then Application.TaskBarBehavior := tbSingleButton; // setup code templates @@ -1459,23 +1484,6 @@ // build and position the MainIDE form Application.CreateForm(TMainIDEBar,MainIDEBar); - MainIDEBar.OnActive:=@OnMainBarActive; - - AMenuHeight := LCLIntf.GetSystemMetrics(SM_CYMENU); - if AMenuHeight > 0 then - begin - // what we know: - // 1. cmd speedbuttons height = 22 - // 2. components palette buttons = 32 - // 3. menu height provided by widgetset (varies , depends on theme) - // so we set 22 + 32 + (borders * 2). - MainIDEBar.Constraints.MaxHeight := AMenuHeight + - 22 {cmd speedbtns} + 32 {component buttons} + - LCLIntf.GetSystemMetrics(SM_CYSIZEFRAME) + - (LCLIntf.GetSystemMetrics(SM_CYBORDER) * 2) {borders}; - end else - MainIDEBar.Constraints.MaxHeight:=85; - MainIDEBar.Name := NonModalIDEWindowNames[nmiwMainIDEName]; FormCreator:=IDEWindowCreators.Add(MainIDEBar.Name); FormCreator.Right:='100%'; @@ -1487,15 +1495,15 @@ IDEDockMaster.MakeIDEWindowDockSite(MainIDEBar); HiddenWindowsOnRun:=TFPList.Create; - LastActivatedWindows:=TFPList.Create; + FLastActivatedWindows:=TFPList.Create; // menu MainIDEBar.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.Create'){$ENDIF}; try SetupStandardIDEMenuItems; SetupMainMenu; - SetupSpeedButtons; - SetupComponentPalette; + MainIDEBar.Setup(OwningComponent); + MainIDEBar.OptionsMenuItem.OnClick := @ToolBarOptionsClick; ConnectMainBarEvents; finally MainIDEBar.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.Create'){$ENDIF}; @@ -1510,9 +1518,10 @@ // initialize the other IDE managers DebugBoss:=TDebugManager.Create(nil); DebugBoss.ConnectMainBarEvents; - DebuggerDlg.OnProcessCommand := @OnProcessIDECommand; + DebuggerDlg.OnProcessCommand := @HandleProcessIDECommand; - PkgBoss:=TPkgManager.Create(nil); + PkgMngr:=TPkgManager.Create(nil); + PkgBoss:=PkgMngr; PkgBoss.ConnectMainBarEvents; LPKInfoCache:=TLPKInfoCache.Create; HelpBoss:=TIDEHelpManager.Create(nil); @@ -1529,6 +1538,13 @@ LoadMenuShortCuts; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.Create IDE COMPONENTS');{$ENDIF} + // componentpalette + CompPalette:=TComponentPalette.Create; + IDEComponentPalette:=CompPalette; + CompPalette.OnOpenPackage:=@PkgMngr.IDEComponentPaletteOpenPackage; + CompPalette.OnOpenUnit:=@PkgMngr.IDEComponentPaletteOpenUnit; + CompPalette.PageControl:=MainIDEBar.ComponentPageControl; + CompPalette.OnChangeActivePage:=@MainIDEBar.SetMainIDEHeightEvent; // load installed packages PkgBoss.LoadInstalledPackages; @@ -1545,19 +1561,22 @@ begin {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.StartIDE START');{$ENDIF} // set Application handlers - Application.AddOnUserInputHandler(@OnApplicationUserInput); - Application.AddOnIdleHandler(@OnApplicationIdle); - Application.AddOnActivateHandler(@OnApplicationActivate); - Application.AddOnDeActivateHandler(@OnApplicationDeActivate); - Application.AddOnKeyDownHandler(@OnApplicationKeyDown); - Application.AddOnQueryEndSessionHandler(@OnApplicationQueryEndSession); - Application.AddOnEndSessionHandler(@OnApplicationEndSession); - Screen.AddHandlerRemoveForm(@OnScreenRemoveForm); - Screen.AddHandlerActiveFormChanged(@OnScreenChangedForm); - TComponentPalette(IDEComponentPalette).OnClassSelected := @ComponentPaletteClassSelected; - SetupHints; + Application.AddOnUserInputHandler(@HandleApplicationUserInput); + Application.AddOnIdleHandler(@HandleApplicationIdle); + Application.AddOnActivateHandler(@HandleApplicationActivate); + Application.AddOnDeActivateHandler(@HandleApplicationDeActivate); + Application.AddOnKeyDownHandler(@HandleApplicationKeyDown); + Application.AddOnQueryEndSessionHandler(@HandleApplicationQueryEndSession); + Application.AddOnEndSessionHandler(@HandleApplicationEndSession); + Screen.AddHandlerRemoveForm(@HandleScreenRemoveForm); + Screen.AddHandlerActiveFormChanged(@HandleScreenChangedForm); + Screen.AddHandlerActiveControlChanged(@HandleScreenChangedControl); + IDEComponentPalette.OnClassSelected := @ComponentPaletteClassSelected; + MainIDEBar.SetupHints; SetupIDEWindowsLayout; RestoreIDEWindows; + MainIDEBar.InitPaletteAndCoolBar; + IDEWindowCreators.AddLayoutChangedHandler(@HandleLayoutChanged); // make sure the main IDE bar is always shown IDEWindowCreators.ShowForm(MainIDEBar,false); DebugBoss.UpdateButtonsAndMenuItems; // Disable Stop-button (and some others). @@ -1566,9 +1585,11 @@ Application.Terminate; exit; end; - DoShowMessagesView(false); // reopen extra windows fUserInputSinceLastIdle:=true; // Idle work gets done initially before user action. - FApplicationIsActivate:=true; + MainIDEBar.ApplicationIsActivate:=true; + IDECommandList.AddCustomUpdateEvent(@UpdateMainIDECommands); + LazIDEInstances.StartListening(@LazInstancesStartNewInstance, @LazInstancesGetOpenedProjectFileName); + IDECommandList.StartUpdateEvents; FIDEStarted:=true; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.StartIDE END');{$ENDIF} end; @@ -1576,10 +1597,14 @@ destructor TMainIDE.Destroy; begin ToolStatus:=itExiting; + + IDECommandList.RemoveCustomUpdateEvent(@UpdateMainIDECommands); + if Assigned(ExternalTools) then ExternalTools.TerminateAll; - DebugLn('[TMainIDE.Destroy] A '); + if ConsoleVerbosity>0 then + DebugLn('Hint: (lazarus) [TMainIDE.Destroy]'); {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.Destroy A ');{$ENDIF} if Assigned(MainIDEBar) then begin @@ -1622,12 +1647,16 @@ FreeThenNil(IDEQuickFixes); FreeThenNil(GlobalDesignHook); FreeThenNil(LPKInfoCache); + if IDEComponentPalette<>nil then + TComponentPalette(IDEComponentPalette).PageControl:=nil; FreeThenNil(PkgBoss); + FreeThenNil(IDEComponentPalette); + FreeThenNil(IDECoolBar); FreeThenNil(HelpBoss); FreeThenNil(DebugBoss); FreeThenNil(TheCompiler); FreeThenNil(HiddenWindowsOnRun); - FreeThenNil(LastActivatedWindows); + FreeThenNil(FLastActivatedWindows); FreeThenNil(GlobalMacroList); FreeThenNil(IDEMacros); FreeThenNil(IDECodeMacros); @@ -1635,6 +1664,7 @@ FreeThenNil(LazProjectDescriptors); FreeThenNil(NewIDEItems); FreeThenNil(IDEMenuRoots); + FreeThenNil(IDEToolButtonCategories); // IDE options objects FreeThenNil(CodeToolsOpts); FreeThenNil(CodeExplorerOptions); @@ -1647,7 +1677,8 @@ // free control selection FreeThenNil(TheControlSelection); - DebugLn('[TMainIDE.Destroy] B -> inherited Destroy... ',ClassName); + if ConsoleVerbosity>=0 then + DebugLn('Hint: (lazarus) [TMainIDE.Destroy] B -> inherited Destroy... ',ClassName); {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.Destroy B ');{$ENDIF} FreeThenNil(MainBuildBoss); inherited Destroy; @@ -1655,7 +1686,8 @@ FreeThenNil(IDEProtocolOpts); FreeThenNil(fBuilder); - DebugLn('[TMainIDE.Destroy] END'); + if ConsoleVerbosity>=0 then + DebugLn('Hint: (lazarus) [TMainIDE.Destroy] END'); end; procedure TMainIDE.CreateOftenUsedForms; @@ -1730,7 +1762,7 @@ procedure TMainIDE.OIRemainingKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin - OnExecuteIDEShortCut(Sender,Key,Shift,nil); + HandleExecuteIDEShortCut(Sender,Key,Shift,nil); end; procedure TMainIDE.OIOnAddToFavorites(Sender: TObject); @@ -1879,7 +1911,7 @@ begin ActiveSrcEdit:=nil; if not BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[ctfSwitchToFormSource]) then - Exit; + Exit(False); {$IFDEF IDE_DEBUG} debugln(''); debugln('[TMainIDE.OnPropHookCompatibleMethodExists] ************ ',AMethodName); @@ -1955,6 +1987,8 @@ procedure TMainIDE.MainIDEFormClose(Sender: TObject; var CloseAction: TCloseAction); begin + LazIDEInstances.StopServer; + IDECommandList.StopUpdateEvents; DoCallNotifyHandler(lihtIDEClose); SaveEnvironment(true); if IDEDockMaster<>nil then @@ -1970,11 +2004,10 @@ end; procedure TMainIDE.MainIDEFormCloseQuery(Sender: TObject; var CanClose: boolean); -const IsClosing: Boolean = False; begin CanClose := True; - if IsClosing then Exit; - IsClosing := True; + if IDEIsClosing then Exit; + FIDEIsClosing := True; CanClose := False; SourceFileMgr.CheckingFilesOnDisk := True; try @@ -1996,7 +2029,7 @@ CanClose:=(DoCloseProject <> mrAbort); finally - IsClosing := False; + FIDEIsClosing := CanClose; SourceFileMgr.CheckingFilesOnDisk:=false; if not CanClose then DoCheckFilesOnDisk(false); @@ -2004,137 +2037,17 @@ end; {------------------------------------------------------------------------------} -procedure TMainIDE.SetupSpeedButtons; - - function CreateButton(AToolBar: TToolBar; const AName, APixName: String; - const AOnClick: TNotifyEvent; const AHint: String): TToolButton; - begin - Result := TToolButton.Create(OwningComponent); - with Result do - begin - Name := AName; - Parent := AToolBar; - Enabled := True; - OnClick := AOnClick; - ImageIndex := IDEImages.LoadImage(16, APixName); - Hint := AHint; - end; - end; - - function CreateDivider(AToolBar: TToolBar): TToolButton; - begin - Result := TToolButton.Create(OwningComponent); - with Result do - begin - Style := tbsDivider; - AutoSize := True; - Parent := AToolBar; - end; - end; - - function CreateToolBar(AName: String): TToolBar; - begin - Result := TToolBar.Create(OwningComponent); - Result.Name := AName; - Result.Parent := MainIDEBar.pnlSpeedButtons; - Result.Images := IDEImages.Images_16; - Result.AutoSize := true; - end; - -begin - // Panel for buttons on the left - MainIDEBar.pnlSpeedButtons := TPanel.Create(OwningComponent); - with MainIDEBar.pnlSpeedButtons do - begin - Name := 'pnlSpeedButtons'; - Parent := MainIDEBar; - Align := alLeft; - Caption := ''; - BevelOuter := bvNone; - AutoSize := true; - Visible := EnvironmentOptions.IDESpeedButtonsVisible; - end; - - MainIDEBar.tbViewDebug := CreateToolBar('tbViewDebug'); - MainIDEBar.tbStandard := CreateToolBar('tbStandard'); - - MainIDEBar.NewUnitSpeedBtn := CreateButton(MainIDEBar.tbStandard , 'NewUnitSpeedBtn' , 'item_unit' , @mnuNewUnitClicked, lisMenuNewUnit); - MainIDEBar.NewFormSpeedBtn := CreateButton(MainIDEBar.tbStandard , 'NewFormSpeedBtn' , 'item_form' , @mnuNewFormClicked, lisMenuNewForm); - MainIDEBar.tbDivider1 := CreateDivider(MainIDEBar.tbStandard); - MainIDEBar.OpenFileSpeedBtn := CreateButton(MainIDEBar.tbStandard , 'OpenFileSpeedBtn' , 'laz_open' , @mnuOpenClicked, lisOpen); - MainIDEBar.SaveSpeedBtn := CreateButton(MainIDEBar.tbStandard , 'SaveSpeedBtn' , 'laz_save' , @mnuSaveClicked, lisSave); - MainIDEBar.SaveAllSpeedBtn := CreateButton(MainIDEBar.tbStandard , 'SaveAllSpeedBtn' , 'menu_save_all' , @mnuSaveAllClicked, lisHintSaveAll); - MainIDEBar.tbDivider2 := CreateDivider(MainIDEBar.tbStandard); - MainIDEBar.ToggleFormSpeedBtn := CreateButton(MainIDEBar.tbStandard , 'ToggleFormSpeedBtn' , 'menu_view_toggle_form_unit', @mnuToggleFormUnitCLicked, lisHintToggleFormUnit); - - MainIDEBar.ViewUnitsSpeedBtn := CreateButton(MainIDEBar.tbViewDebug, 'ViewUnitsSpeedBtn' , 'menu_view_units' , @mnuViewUnitsClicked, lisHintViewUnits); - MainIDEBar.ViewFormsSpeedBtn := CreateButton(MainIDEBar.tbViewDebug, 'ViewFormsSpeedBtn' , 'menu_view_forms' , @mnuViewFormsClicked, lisHintViewForms); - MainIDEBar.tbDivider3 := CreateDivider(MainIDEBar.tbViewDebug); - MainIDEBar.BuildModeSpeedButton:= CreateButton(MainIDEBar.tbViewDebug, 'BuildModeSpeedButton', 'menu_compiler_options' , @mnuChgBuildModeClicked, lisChangeBuildMode); - MainIDEBar.RunSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'RunSpeedButton' , 'menu_run' , @mnuRunProjectClicked, lisRunButtonHint); - MainIDEBar.PauseSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'PauseSpeedButton' , 'menu_pause' , @mnuPauseProjectClicked, lisPause); - MainIDEBar.StopSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StopSpeedButton' , 'menu_stop' , @mnuStopProjectClicked, lisStop); - MainIDEBar.StepIntoSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepIntoSpeedButton', 'menu_stepinto' , @mnuStepIntoProjectClicked, lisHintStepInto); - MainIDEBar.StepOverSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepOverpeedButton' , 'menu_stepover' , @mnuStepOverProjectClicked, lisHintStepOver); - MainIDEBar.StepOutSpeedButton := CreateButton(MainIDEBar.tbViewDebug, 'StepOutSpeedButton' , 'menu_stepout' , @mnuStepOutProjectClicked, lisHintStepOut); - - MainIDEBar.CreatePopupMenus(OwningComponent); - - MainIDEBar.OpenFileSpeedBtn.Style := tbsDropDown; - MainIDEBar.OpenFileSpeedBtn.DropDownMenu := MainIDEBar.OpenFilePopUpMenu; - MainIDEBar.OpenFilePopupMenu.OnPopup := @OpenFilePopupMenuPopup; - - MainIDEBar.BuildModeSpeedButton.Style:=tbsDropDown; - MainIDEBar.BuildModeSpeedButton.DropdownMenu:=MainIDEBar.SetBuildModePopupMenu; - MainIDEBar.SetBuildModePopupMenu.OnPopup := @SetBuildModePopupMenuPopup; -end; - procedure TMainIDE.SetupDialogs; begin - LazIDESelectDirectory:=@OnSelectDirectory; - InitIDEFileDialog:=@OnInitIDEFileDialog; - StoreIDEFileDialog:=@OnStoreIDEFileDialog; - IDEMessageDialog:=@OnIDEMessageDialog; - IDEQuestionDialog:=@OnIDEQuestionDialog; + LazIDESelectDirectory:=@HandleSelectDirectory; + InitIDEFileDialog:=@HandleInitIDEFileDialog; + StoreIDEFileDialog:=@HandleStoreIDEFileDialog; + IDEMessageDialog:=@HandleIDEMessageDialog; + IDEQuestionDialog:=@HandleIDEQuestionDialog; TestCompilerOptions:=@OnCompilerOptionsDialogTest; CheckCompOptsAndMainSrcForNewUnitEvent:=@OnCheckCompOptsAndMainSrcForNewUnit; end; -procedure TMainIDE.SetupComponentPalette; -begin - // Component palette - MainIDEBar.ComponentPageControl := TPageControl.Create(OwningComponent); - with MainIDEBar.ComponentPageControl do begin - Name := 'ComponentPageControl'; - Align := alClient; - Visible:=EnvironmentOptions.ComponentPaletteVisible; - Parent := MainIDEBar; - end; -end; - -procedure TMainIDE.SetupHints; -var - CurShowHint: boolean; - AControl: TControl; - i, j: integer; -begin - if EnvironmentOptions=nil then exit; - // update all hints in the component palette - CurShowHint:=EnvironmentOptions.ShowHintsForComponentPalette; - for i:=0 to MainIDEBar.ComponentPageControl.PageCount-1 do begin - for j:=0 to MainIDEBar.ComponentPageControl.Page[i].ControlCount-1 do begin - AControl:=MainIDEBar.ComponentPageControl.Page[i].Controls[j]; - AControl.ShowHint:=CurShowHint; - end; - end; - // update all hints in main ide toolbars - CurShowHint:=EnvironmentOptions.ShowHintsForMainSpeedButtons; - for i:=0 to MainIDEBar.pnlSpeedButtons.ControlCount-1 do begin - AControl:=MainIDEBar.pnlSpeedButtons.Controls[i]; - AControl.ShowHint:=CurShowHint; - end; -end; - procedure TMainIDE.SetupObjectInspector; begin IDECmdScopeObjectInspectorOnly.AddWindowClass(TObjectInspectorDlg); @@ -2170,7 +2083,7 @@ CreateFormEditor; FormEditor1.Obj_Inspector := ObjectInspector1; - FormEditor1.OnSelectFrame := @OnSelectFrame; + FormEditor1.OnSelectFrame := @HandleSelectFrame; end; procedure TMainIDE.SetupSourceNotebook; @@ -2181,7 +2094,6 @@ SourceEditorManager.OnCloseClicked := @OnSrcNotebookFileClose; SourceEditorManager.OnClickLink := @OnSrcNoteBookClickLink; SourceEditorManager.OnMouseLink := @OnSrcNoteBookMouseLink; - SourceEditorManager.OnGetIndent := @OnSrcNoteBookGetIndent; SourceEditorManager.OnCurrentCodeBufferChanged:=@OnSrcNotebookCurCodeBufferChanged; SourceEditorManager.OnDeleteLastJumpPoint := @OnSrcNotebookDeleteLastJumPoint; SourceEditorManager.RegisterChangeEvent(semEditorActivate, @OnSrcNotebookEditorActived); @@ -2193,13 +2105,12 @@ SourceEditorManager.OnClearBookmarkId := @OnSrcNotebookEditorClearBookmarkId; SourceEditorManager.OnSetBookmark := @OnSrcNotebookEditorDoSetBookmark; SourceEditorManager.OnGotoBookmark := @OnSrcNotebookEditorDoGotoBookmark; - SourceEditorManager.OnEditorPropertiesClicked := @mnuEnvEditorOptionsClicked; SourceEditorManager.OnFindDeclarationClicked := @OnSrcNotebookFindDeclaration; SourceEditorManager.OnInitIdentCompletion :=@OnSrcNotebookInitIdentCompletion; SourceEditorManager.OnShowCodeContext :=@OnSrcNotebookShowCodeContext; SourceEditorManager.OnJumpToHistoryPoint := @OnSrcNotebookJumpToHistoryPoint; SourceEditorManager.OnOpenFileAtCursorClicked := @OnSrcNotebookFileOpenAtCursor; - SourceEditorManager.OnProcessUserCommand := @OnProcessIDECommand; + SourceEditorManager.OnProcessUserCommand := @HandleProcessIDECommand; SourceEditorManager.OnReadOnlyChanged := @OnSrcNotebookReadOnlyChanged; SourceEditorManager.OnShowHintForSource := @OnSrcNotebookShowHintForSource; SourceEditorManager.OnShowUnitInfo := @OnSrcNoteBookShowUnitInfo; @@ -2228,6 +2139,11 @@ MainIDEBar.itmJumpHistory.OnClick := @SourceEditorManager.ViewJumpHistoryClicked; MainIDEBar.itmJumpToNextBookmark.OnClick := @SourceEditorManager.BookMarkNextClicked; MainIDEBar.itmJumpToPrevBookmark.OnClick := @SourceEditorManager.BookMarkPrevClicked; + MainIDEBar.itmJumpToInterface.OnClick := @SourceEditorManager.JumpToInterfaceClicked; + MainIDEBar.itmJumpToInterfaceUses.OnClick := @SourceEditorManager.JumpToInterfaceUsesClicked; + MainIDEBar.itmJumpToImplementation.OnClick := @SourceEditorManager.JumpToImplementationClicked; + MainIDEBar.itmJumpToImplementationUses.OnClick := @SourceEditorManager.JumpToImplementationUsesClicked; + MainIDEBar.itmJumpToInitialization.OnClick := @SourceEditorManager.JumpToInitializationClicked; MainIDEBar.itmFindBlockStart.OnClick:=@mnuSearchFindBlockStart; MainIDEBar.itmFindBlockOtherEnd.OnClick:=@mnuSearchFindBlockOtherEnd; MainIDEBar.itmFindDeclaration.OnClick:=@mnuSearchFindDeclaration; @@ -2254,8 +2170,8 @@ procedure TMainIDE.SetupIDECommands; begin IDECommandList:=EditorOpts.KeyMap; - IDECommands.OnExecuteIDECommand:=@OnExecuteIDECommand; - IDECommands.OnExecuteIDEShortCut:=@OnExecuteIDEShortCut; + IDECommands.OnExecuteIDECommand:=@HandleExecuteIDECommand; + IDECommands.OnExecuteIDEShortCut:=@HandleExecuteIDEShortCut; CreateStandardIDECommandScopes; IDECmdScopeSrcEdit.AddWindowClass(TSourceEditorWindowInterface); IDECmdScopeSrcEdit.AddWindowClass(nil); @@ -2284,13 +2200,13 @@ function AskIfLoadLastFailingProject: boolean; begin - debugln(['AskIfLoadLastFailingProject START']); + debugln(['Hint: (lazarus) AskIfLoadLastFailingProject START']); Result:=IDEQuestionDialog(lisOpenProject2, Format(lisAnErrorOccuredAtLastStartupWhileLoadingLoadThisPro, [EnvironmentOptions.LastSavedProjectFile, LineEnding+LineEnding]), mtWarning, [mrYes, lisOpenProjectAgain, mrNoToAll, lisStartWithANewProject])=mrYes; - debugln(['AskIfLoadLastFailingProject END ',dbgs(Result)]); + debugln(['Hint: (lazarus) AskIfLoadLastFailingProject END ',dbgs(Result)]); end; var @@ -2300,115 +2216,139 @@ i: Integer; OpenFlags: TOpenFlags; AFilename: String; + PkgOpenFlags: TPkgOpenFlags; begin {$IFDEF IDE_DEBUG} debugln('TMainIDE.SetupStartProject A ***********'); {$ENDIF} {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.SetupStartProject A');{$ENDIF} // load command line project or last project or create a new project - CmdLineFiles:=ExtractCmdLineFilenames; - try - ProjectLoaded:=false; + CmdLineFiles:=LazIDEInstances.FilesToOpen; + ProjectLoaded:=false; - // try command line project - if (CmdLineFiles<>nil) and (CmdLineFiles.Count>0) then begin - AProjectFilename:=CmdLineFiles[0]; - if (CompareFileExt(AProjectFilename,'.lpr',false)=0) then - AProjectFilename:=ChangeFileExt(AProjectFilename,'.lpi'); - // only try to load .lpi files, other files are loaded later - if (CompareFileExt(AProjectFilename,'.lpi',false)=0) then begin - AProjectFilename:=CleanAndExpandFilename(AProjectFilename); - if FileExistsUTF8(AProjectFilename) then begin - CmdLineFiles.Delete(0); - ProjectLoaded:=(DoOpenProjectFile(AProjectFilename,[])=mrOk); - end; + // try command line project + if (CmdLineFiles<>nil) and (CmdLineFiles.Count>0) then begin + AProjectFilename:=CmdLineFiles[0]; + if (CompareFileExt(AProjectFilename,'.lpr',false)=0) then + AProjectFilename:=ChangeFileExt(AProjectFilename,'.lpi'); + // only try to load .lpi files, other files are loaded later + if (CompareFileExt(AProjectFilename,'.lpi',false)=0) then begin + AProjectFilename:=CleanAndExpandFilename(AProjectFilename); + if FileExistsUTF8(AProjectFilename) then begin + CmdLineFiles.Delete(0); + ProjectLoaded:=(DoOpenProjectFile(AProjectFilename,[ofAddToRecent])=mrOk); end; end; + end; - // try loading last project if lazarus didn't fail last time - if (not ProjectLoaded) - and (not SkipAutoLoadingLastProject) - and (EnvironmentOptions.OpenLastProjectAtStart) - and (EnvironmentOptions.LastSavedProjectFile<>'') - and (EnvironmentOptions.LastSavedProjectFile<>RestoreProjectClosed) - and (FileExistsCached(EnvironmentOptions.LastSavedProjectFile)) - then begin - if (not IDEProtocolOpts.LastProjectLoadingCrashed) - or AskIfLoadLastFailingProject then begin - // protocol that the IDE is trying to load the last project and did not - // yet succeed - IDEProtocolOpts.LastProjectLoadingCrashed := True; - IDEProtocolOpts.Save; - // try loading the project - ProjectLoaded:= - (DoOpenProjectFile(EnvironmentOptions.LastSavedProjectFile,[])=mrOk); - // protocol that the IDE was able to open the project without crashing - IDEProtocolOpts.LastProjectLoadingCrashed := false; - IDEProtocolOpts.Save; - if not ProjectLoaded then begin - DoCloseProject; + // try loading last project if lazarus didn't fail last time + {debugln(['TMainIDE.SetupStartProject ProjectLoaded=',ProjectLoaded, + ' SkipAutoLoadingLastProject=',SkipAutoLoadingLastProject, + ' EnvironmentOptions.OpenLastProjectAtStart=',EnvironmentOptions.OpenLastProjectAtStart, + ' EnvironmentOptions.LastSavedProjectFile="',EnvironmentOptions.LastSavedProjectFile,'"', + ' RestoreProjectClosed=',RestoreProjectClosed, + ' FileExistsCached(EnvironmentOptions.LastSavedProjectFile)=',FileExistsCached(EnvironmentOptions.LastSavedProjectFile) + ]);} + if (not ProjectLoaded) + and (not SkipAutoLoadingLastProject) + and (EnvironmentOptions.OpenLastProjectAtStart) + and (EnvironmentOptions.LastSavedProjectFile<>'') + and ((EnvironmentOptions.MultipleInstances=mioAlwaysStartNew) + or (not LazIDEInstances.ProjectIsOpenInAnotherInstance(EnvironmentOptions.LastSavedProjectFile))) + and (EnvironmentOptions.LastSavedProjectFile<>RestoreProjectClosed) + and (FileExistsCached(EnvironmentOptions.LastSavedProjectFile)) + then begin + if (not IDEProtocolOpts.LastProjectLoadingCrashed) + or AskIfLoadLastFailingProject then begin + // protocol that the IDE is trying to load the last project and did not + // yet succeed + IDEProtocolOpts.LastProjectLoadingCrashed := True; + IDEProtocolOpts.Save; + // try loading the project + ProjectLoaded:= + (DoOpenProjectFile(EnvironmentOptions.LastSavedProjectFile,[])=mrOk); + // protocol that the IDE was able to open the project without crashing + IDEProtocolOpts.LastProjectLoadingCrashed := false; + IDEProtocolOpts.Save; + if ProjectLoaded then + begin + PkgOpenFlags:=[pofAddToRecent]; + for I := 0 to EnvironmentOptions.LastOpenPackages.Count-1 do + begin + AFilename:=EnvironmentOptions.LastOpenPackages[I]; + if AFilename='' then + continue; + if i<EnvironmentOptions.LastOpenPackages.Count-1 then + Include(PkgOpenFlags,pofMultiOpen) + else + Exclude(PkgOpenFlags,pofMultiOpen); + if PkgBoss.DoOpenPackageFile(AFilename,PkgOpenFlags,true)=mrAbort then begin + break; + end; end; + end else + begin + DoCloseProject; end; end; - {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.SetupStartProject B');{$ENDIF} + end; + {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.SetupStartProject B');{$ENDIF} - if (not ProjectLoaded) then - begin - if EnvironmentOptions.OpenLastProjectAtStart - and (EnvironmentOptions.LastSavedProjectFile=RestoreProjectClosed) then begin - // IDE was closed without a project => restore that state - end else begin - // create new project - DoNewProject(ProjectDescriptorApplication); - end; + if (not ProjectLoaded) then + begin + if EnvironmentOptions.OpenLastProjectAtStart + and (EnvironmentOptions.LastSavedProjectFile=RestoreProjectClosed) then begin + // IDE was closed without a project => restore that state + end else begin + // create new project + DoNewProject(ProjectDescriptorApplication); end; + end; - // load the cmd line files - if CmdLineFiles<>nil then begin - for i:=0 to CmdLineFiles.Count-1 do - Begin - AFilename:=CleanAndExpandFilename(CmdLineFiles.Strings[i]); - if not FileExistsCached(AFilename) then begin - debugln(['WARNING: command line file not found: "',AFilename,'"']); - continue; - end; - if Project1=nil then begin - // to open a file a project is needed - // => create a project - DoNewProject(ProjectDescriptorEmptyProject); - end; - if CompareFileExt(AFilename,'.lpk',false)=0 then begin - if PkgBoss.DoOpenPackageFile(AFilename,[pofAddToRecent,pofMultiOpen],true)=mrAbort - then - break; - end else begin - OpenFlags:=[ofAddToRecent,ofRegularFile]; - if i<CmdLineFiles.Count then - Include(OpenFlags,ofMultiOpen); - if DoOpenEditorFile(AFilename,-1,-1,OpenFlags)=mrAbort then begin - break; - end; + // load the cmd line files + if CmdLineFiles<>nil then begin + for i:=0 to CmdLineFiles.Count-1 do + Begin + AFilename:=CleanAndExpandFilename(CmdLineFiles.Strings[i]); + if not FileExistsCached(AFilename) then begin + debugln(['Warning: (lazarus) command line file not found: "',AFilename,'"']); + continue; + end; + if Project1=nil then begin + // to open a file a project is needed + // => create a project + DoNewProject(ProjectDescriptorEmptyProject); + end; + if CompareFileExt(AFilename,'.lpk',false)=0 then begin + if PkgBoss.DoOpenPackageFile(AFilename,[pofAddToRecent,pofMultiOpen],true)=mrAbort + then + break; + end else begin + OpenFlags:=[ofAddToRecent,ofRegularFile]; + if i<CmdLineFiles.Count then + Include(OpenFlags,ofMultiOpen); + if DoOpenEditorFile(AFilename,-1,-1,OpenFlags)=mrAbort then begin + break; end; end; end; + end; - if Project1=nil then - DoNoProjectWizard(nil); + if Project1=nil then + DoNoProjectWizard(nil); - {$IFDEF IDE_DEBUG} - debugln('TMainIDE.Create B'); - {$ENDIF} - {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.SetupStartProject C');{$ENDIF} - finally - CmdLineFiles.Free; - end; + {$IFDEF IDE_DEBUG} + debugln('TMainIDE.Create B'); + {$ENDIF} + {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.SetupStartProject C');{$ENDIF} end; procedure TMainIDE.SetupRemoteControl; var Filename: String; begin - debugln(['TMainIDE.SetupRemoteControl ']); + if ConsoleVerbosity>=0 then + debugln(['TMainIDE.SetupRemoteControl ']); // delete old remote commands Filename:=GetRemoteControlFilename; if FileExistsUTF8(Filename) then @@ -2416,7 +2356,7 @@ // start timer FRemoteControlTimer:=TTimer.Create(OwningComponent); FRemoteControlTimer.Interval:=500; - FRemoteControlTimer.OnTimer:=@OnRemoteControlTimer; + FRemoteControlTimer.OnTimer:=@HandleRemoteControlTimer; FRemoteControlTimer.Enabled:=true; end; @@ -2458,8 +2398,7 @@ procedure TMainIDE.RestoreIDEWindows; begin DoCallNotifyHandler(lihtIDERestoreWindows); - if IDEDockMaster=nil then - IDEWindowCreators.RestoreSimpleLayout; + EnvironmentOptions.Desktop.RestoreDesktop; end; procedure TMainIDE.FreeIDEWindows; @@ -2472,7 +2411,7 @@ AForm:=Screen.CustomForms[i]; if (AForm<>MainIDEBar) and ((AForm.Owner=MainIDEBar) or (AForm.Owner=Self)) then begin - DebugLn(['TMainIDE.FreeIDEWindows ',dbgsName(AForm)]); + DebugLn(['Hint: (lazarus) [TMainIDE.FreeIDEWindows] ',dbgsName(AForm)]); AForm.Free; end; i:=Math.Min(i,Screen.CustomFormCount)-1; @@ -2487,7 +2426,7 @@ for i:=0 to Screen.CustomFormCount-1 do begin AForm:=Screen.CustomForms[i]; if AForm=MainIDEBar then continue; - if AForm.Designer<>nil then continue; + if IsFormDesign(AForm) then continue; if AForm.Parent<>nil then continue; if not AForm.CloseQuery then exit(false); end; @@ -2498,19 +2437,51 @@ // returns the designer that is currently active // the MainIDEBar is ignored var - ActForm: TCustomForm; + ActForm, ActParentForm: TCustomForm; ActControl: TWinControl; + + function TryGetDesignerFromForm(AForm: TCustomForm; + out ADesigner: TComponentEditorDesigner): Boolean; + begin + if Assigned(IDETabMaster) and (AForm is TSourceEditorWindowInterface) + and (IDETabMaster.TabDisplayState=tdsDesign) + then + ADesigner := TComponentEditorDesigner(TSourceEditorWindowInterface(AForm). + ActiveEditor.GetDesigner(True)) + else + ADesigner := nil; + + Result := ADesigner <> nil; + end; + begin ActForm:=Screen.ActiveCustomForm; - if ActForm=MainIDEBar then + + if ActForm = nil then + Exit(nil); + + if TryGetDesignerFromForm(ActForm, Result) then + Exit; // docked design form has focus (inside SourceEditorWindow) + + ActControl:=ActForm.ActiveControl; + if ActControl<>nil then begin - ActControl:=ActForm.ActiveControl; - if (ActControl<>nil) and (GetFirstParentForm(ActControl)<>MainIDEBar) then - exit(nil); // a docked form has focus - if Screen.CustomFormZOrderCount < 2 then exit(nil); - ActForm:=Screen.CustomFormsZOrdered[1]; + ActParentForm := GetFirstParentForm(ActControl); + if TryGetDesignerFromForm(ActParentForm, Result) then + Exit; // docked design form has focus (inside docked SourceEditorWindow) + + if ActForm=MainIDEBar then + if (ActParentForm<>MainIDEBar) then + Exit(nil); // a docked form has focus end; - if (ActForm<>nil) and (ActForm.Designer is TComponentEditorDesigner) then + + if ActForm=MainIDEBar then + if Screen.CustomFormZOrderCount < 2 then + Exit(nil) + else + ActForm:=Screen.CustomFormsZOrdered[1]; + + if (ActForm.Designer is TComponentEditorDesigner) then Result := TComponentEditorDesigner(ActForm.Designer) else Result := nil; @@ -2542,6 +2513,8 @@ procedure TMainIDE.SetupStandardIDEMenuItems; begin IDEMenuRoots:=TIDEMenuRoots.Create; + IDEToolButtonCategories:=TIDEToolButtonCategories.Create; + RegisterStandardSourceTabMenuItems; RegisterStandardSourceEditorMenuItems; RegisterStandardMessagesViewMenuItems; @@ -2580,7 +2553,6 @@ procedure TMainIDE.SetupFileMenu; begin inherited SetupFileMenu; - mnuFile.OnClick:=@mnuFileClicked; with MainIDEBar do begin itmFileNewUnit.OnClick := @mnuNewUnitClicked; itmFileNewForm.OnClick := @mnuNewFormClicked; @@ -2605,7 +2577,6 @@ procedure TMainIDE.SetupEditMenu; begin inherited SetupEditMenu; - mnuEdit.OnClick:=@mnuEditClicked; with MainIDEBar do begin itmEditUndo.OnClick:=@mnuEditUndoClicked; itmEditRedo.OnClick:=@mnuEditRedoClicked; @@ -2659,8 +2630,6 @@ itmViewSearchResults.OnClick := @mnuViewSearchResultsClick; itmViewAnchorEditor.OnClick := @mnuViewAnchorEditorClicked; itmViewTabOrder.OnClick := @mnuViewTabOrderClicked; - itmViewComponentPalette.OnClick := @mnuViewComponentPaletteClicked; - itmViewIDESpeedButtons.OnClick := @mnuViewIDESpeedButtonsClicked; itmViewFPCInfo.OnClick:=@mnuViewFPCInfoClicked; itmViewIDEInfo.OnClick:=@mnuViewIDEInfoClicked; @@ -2671,7 +2640,6 @@ procedure TMainIDE.SetupSourceMenu; begin inherited SetupSourceMenu; - mnuSource.OnClick:=@mnuSourceClicked; with MainIDEBar do begin itmSourceCommentBlock.OnClick:=@mnuSourceCommentBlockClicked; itmSourceUncommentBlock.OnClick:=@mnuSourceUncommentBlockClicked; @@ -2729,7 +2697,6 @@ procedure TMainIDE.SetupProjectMenu; begin inherited SetupProjectMenu; - mnuProject.OnClick:=@mnuProjectClicked; with MainIDEBar do begin itmProjectNew.OnClick := @mnuNewProjectClicked; itmProjectNewFromFile.OnClick := @mnuNewProjectFromFileClicked; @@ -2752,7 +2719,6 @@ procedure TMainIDE.SetupRunMenu; begin inherited SetupRunMenu; - mnuRun.OnClick:=@mnuRunClicked; with MainIDEBar do begin itmRunMenuCompile.OnClick := @mnuCompileProjectClicked; itmRunMenuBuild.OnClick := @mnuBuildProjectClicked; @@ -2780,7 +2746,6 @@ procedure TMainIDE.SetupPackageMenu; begin inherited SetupPackageMenu; - mnuPackage.OnClick:=@mnuPackageClicked; end; procedure TMainIDE.SetupToolsMenu; @@ -2793,6 +2758,8 @@ itmEnvCodeToolsDefinesEditor.OnClick := @mnuEnvCodeToolsDefinesEditorClicked; itmToolConfigure.OnClick := @mnuToolConfigureUserExtToolsClicked; + itmToolManageDesktops.OnClick := @mnuToolManageDesktopsClicked; + itmToolManageExamples.OnClick := @mnuToolManageExamplesClicked; itmToolDiff.OnClick := @mnuToolDiffClicked; itmToolCheckLFM.OnClick := @mnuToolCheckLFMClicked; @@ -2801,7 +2768,6 @@ itmToolConvertDelphiProject.OnClick := @mnuToolConvertDelphiProjectClicked; itmToolConvertDelphiPackage.OnClick := @mnuToolConvertDelphiPackageClicked; itmToolConvertEncoding.OnClick := @mnuToolConvertEncodingClicked; - itmToolManageExamples.OnClick := @mnuToolManageExamplesClicked; itmToolBuildLazarus.OnClick := @mnuToolBuildLazarusClicked; itmToolConfigureBuildLazarus.OnClick := @mnuToolConfigBuildLazClicked; // Set initial caption for Build Lazarus item. Will be changed in BuildLazDialog. @@ -2815,9 +2781,7 @@ procedure TMainIDE.SetupWindowsMenu; begin inherited SetupWindowsMenu; - with MainIDEBar do begin - itmWindowManager.OnClick := @mnuWindowManagerClicked; - end; + MainIDEBar.itmWindowManager.OnClick := @mnuWindowManagerClicked; end; procedure TMainIDE.SetupHelpMenu; @@ -2842,7 +2806,10 @@ procedure TMainIDE.mnuToggleFormUnitClicked(Sender: TObject); begin - DoBringToFrontFormOrUnit; + if IDETabMaster <> nil then + IDETabMaster.ToggleFormUnit + else + DoBringToFrontFormOrUnit; end; procedure TMainIDE.mnuViewAnchorEditorClicked(Sender: TObject); @@ -2855,16 +2822,6 @@ DoViewTabOrderEditor; end; -procedure TMainIDE.mnuViewComponentPaletteClicked(Sender: TObject); -begin - DoToggleViewComponentPalette; -end; - -procedure TMainIDE.mnuViewIDESpeedButtonsClicked(Sender: TObject); -begin - DoToggleViewIDESpeedButtons; -end; - procedure TMainIDE.mnuViewFPCInfoClicked(Sender: TObject); begin ShowFPCInfo; @@ -2958,15 +2915,15 @@ // append a filter for all file types of the open files in the source editor CreateFileDialogFilterForSourceEditorFiles(Filter,AllEditorMask,AllMask); if (AllEditorMask<>'') then - Filter:=Filter+ '|' + lisEditorFileTypes + ' (' + AllEditorMask + ')|' + + Filter:=Filter+ '|' + dlgFilterLazarusEditorFile + ' (' + AllEditorMask + ')|' + AllEditorMask; // prepend an all normal files filter - Filter:=lisLazarusFile + ' ('+AllMask+')|' + AllMask + '|' + Filter; + Filter:=dlgFilterLazarusFile + ' ('+AllMask+')|' + AllMask + '|' + Filter; // append an any files filter if TFileDialog.FindMaskInFilter(Filter,GetAllFilesMask)<1 then - Filter:=Filter+ '|' + dlgAllFiles + ' (' + GetAllFilesMask + ')|' + GetAllFilesMask; + Filter:=Filter+ '|' + dlgFilterAll + ' (' + GetAllFilesMask + ')|' + GetAllFilesMask; OpenDialog.Filter := Filter; @@ -3092,13 +3049,11 @@ try SaveDialog.Title:=lisSaveSpace; SaveDialog.FileName:=SrcEdit.PageName+'.html'; - SaveDialog.Filter := ' (*.html;*.htm)|*.html;*.htm'; - SaveDialog.Options := [ofOverwritePrompt, ofPathMustExist{, ofNoReadOnlyReturn}]; // Does not work for desktop + SaveDialog.Filter:=dlgFilterHTML+' (*.html;*.htm)|*.html;*.htm'; + SaveDialog.Options:=[ofOverwritePrompt, ofPathMustExist{, ofNoReadOnlyReturn}]; // Does not work for desktop // show save dialog if (not SaveDialog.Execute) or (ExtractFileName(SaveDialog.Filename)='') - then begin - exit; - end; + then exit; Filename:=ExpandFileNameUTF8(SaveDialog.Filename); finally SaveDialog.Free; @@ -3219,7 +3174,7 @@ mnuViewInspectorClicked(Sender); end; -procedure TMainIDE.OnProcessIDECommand(Sender: TObject; +procedure TMainIDE.HandleProcessIDECommand(Sender: TObject; Command: word; var Handled: boolean); function IsOnWindow(Wnd: TWinControl): boolean; @@ -3371,13 +3326,13 @@ //DebugLn('TMainIDE.OnProcessIDECommand Handled=',dbgs(Handled),' Command=',dbgs(Command)); end; -function TMainIDE.OnExecuteIDECommand(Sender: TObject; Command: word): boolean; +function TMainIDE.HandleExecuteIDECommand(Sender: TObject; Command: word): boolean; begin Result:=false; - OnProcessIDECommand(Sender,Command,Result); + HandleProcessIDECommand(Sender,Command,Result); end; -function TMainIDE.OnSelectDirectory(const Title, InitialDir: string): string; +function TMainIDE.HandleSelectDirectory(const Title, InitialDir: string): string; var Dialog: TSelectDirectoryDialog; DummyResult: Boolean; @@ -3400,31 +3355,31 @@ end; end; -procedure TMainIDE.OnInitIDEFileDialog(AFileDialog: TFileDialog); +procedure TMainIDE.HandleInitIDEFileDialog(AFileDialog: TFileDialog); begin InputHistories.ApplyFileDialogSettings(AFileDialog); end; -procedure TMainIDE.OnStoreIDEFileDialog(AFileDialog: TFileDialog); +procedure TMainIDE.HandleStoreIDEFileDialog(AFileDialog: TFileDialog); begin InputHistories.StoreFileDialogSettings(AFileDialog); end; -function TMainIDE.OnIDEMessageDialog(const aCaption, aMsg: string; +function TMainIDE.HandleIDEMessageDialog(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; const HelpKeyword: string): Integer; begin Result:=MessageDlg{ !!! DO NOT REPLACE WITH IDEMessageDialog } (aCaption,aMsg,DlgType,Buttons,HelpKeyword); end; -function TMainIDE.OnIDEQuestionDialog(const aCaption, aMsg: string; +function TMainIDE.HandleIDEQuestionDialog(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: array of const; const HelpKeyword: string): Integer; begin Result:=QuestionDlg{ !!! DO NOT REPLACE WITH IDEQuestionDialog } (aCaption,aMsg,DlgType,Buttons,HelpKeyword); end; -procedure TMainIDE.OnExecuteIDEShortCut(Sender: TObject; var Key: word; +procedure TMainIDE.HandleExecuteIDEShortCut(Sender: TObject; var Key: word; Shift: TShiftState; IDEWindowClass: TCustomFormClass); var @@ -3435,7 +3390,7 @@ Command := EditorOpts.KeyMap.TranslateKey(Key,Shift,IDEWindowClass); if (Command = ecNone) then exit; Handled := false; - OnProcessIDECommand(Sender, Command, Handled); + HandleProcessIDECommand(Sender, Command, Handled); if Handled then Key := VK_UNKNOWN; end; @@ -3459,152 +3414,6 @@ {------------------------------------------------------------------------------} -procedure TMainIDE.OpenFilePopupMenuPopup(Sender: TObject); -var - CurIndex: integer; - OpenMenuItem: TPopupMenu; - - procedure AddFile(const Filename: string); - var - AMenuItem: TMenuItem; - begin - if MainIDEBar.OpenFilePopupMenu.Items.Count > CurIndex then - AMenuItem := MainIDEBar.OpenFilePopupMenu.Items[CurIndex] - else - begin - AMenuItem := TMenuItem.Create(OwningComponent); - AMenuItem.Name := MainIDEBar.OpenFilePopupMenu.Name + 'Recent' + IntToStr(CurIndex); - AMenuItem.OnClick := @mnuOpenFilePopupClick; - MainIDEBar.OpenFilePopupMenu.Items.Add(AMenuItem); - end; - AMenuItem.Caption := Filename; - inc(CurIndex); - end; - - procedure AddFiles(List: TStringList; MaxCount: integer); - var - i: integer; - begin - i := 0; - while (i < List.Count) and (i < MaxCount) do - begin - AddFile(List[i]); - inc(i); - end; - end; - -begin - // fill the PopupMenu: - CurIndex := 0; - // first add 8 recent projects - AddFiles(EnvironmentOptions.RecentProjectFiles, 8); - // add a separator - AddFile('-'); - // add 12 recent files - AddFiles(EnvironmentOptions.RecentOpenFiles, 12); - OpenMenuItem := MainIDEBar.OpenFilePopupMenu; - // remove unused menuitems - while OpenMenuItem.Items.Count > CurIndex do - OpenMenuItem.Items[OpenMenuItem.Items.Count - 1].Free; -end; - -procedure TMainIDE.mnuOpenFilePopupClick(Sender: TObject); -var - TheMenuItem: TMenuItem; - Index, SeparatorIndex: integer; - AFilename: string; -begin - TheMenuItem:=(Sender as TMenuItem); - if TheMenuItem.Caption='-' then exit; - Index:=TheMenuItem.MenuIndex; - SeparatorIndex:=0; - while SeparatorIndex<MainIDEBar.OpenFilePopupMenu.Items.Count do begin - if MainIDEBar.OpenFilePopupMenu.Items[SeparatorIndex].Caption='-' then - break; - inc(SeparatorIndex); - end; - if Index=SeparatorIndex then exit; - if Index<SeparatorIndex then begin - // open recent project - AFilename:=EnvironmentOptions.RecentProjectFiles[Index]; - DoOpenProjectFile(AFileName,[ofAddToRecent]); - end else begin - // open recent file - dec(Index, SeparatorIndex+1); - if DoOpenEditorFile(EnvironmentOptions.RecentOpenFiles[Index],-1,-1, - [ofAddToRecent])=mrOk then - begin - SetRecentFilesMenu; - SaveEnvironment; - end; - end; -end; - -procedure TMainIDE.SetBuildModePopupMenuPopup(Sender: TObject); -var - aMenu: TPopupMenu; - CurIndex: Integer; - i: Integer; - - procedure AddMode(CurMode: TProjectBuildMode); - var - AMenuItem: TMenuItem; - begin - if aMenu.Items.Count > CurIndex then - AMenuItem := aMenu.Items[CurIndex] - else - begin - AMenuItem := TMenuItem.Create(OwningComponent); - AMenuItem.Name := aMenu.Name + 'Mode' + IntToStr(CurIndex); - AMenuItem.OnClick := @mnuSetBuildModeClick; - aMenu.Items.Add(AMenuItem); - end; - AMenuItem.Caption := CurMode.GetCaption; - AMenuItem.Checked := (Project1<>nil) and (Project1.ActiveBuildMode=CurMode); - AMenuItem.ShowAlwaysCheckable:=true; - inc(CurIndex); - end; - -begin - // fill the PopupMenu: - CurIndex := 0; - aMenu := MainIDEBar.SetBuildModePopupMenu; - if Project1<>nil then - for i:=0 to Project1.BuildModes.Count-1 do - AddMode(Project1.BuildModes[i]); - // remove unused menuitems - while aMenu.Items.Count > CurIndex do - aMenu.Items[aMenu.Items.Count - 1].Free; -end; - -procedure TMainIDE.mnuChgBuildModeClicked(Sender: TObject); -begin - DoOpenIDEOptions(TCompilerPathOptionsFrame, '', [TProjectCompilerOptions], []); -end; - -procedure TMainIDE.mnuSetBuildModeClick(Sender: TObject); -var - TheMenuItem: TMenuItem; - Index: LongInt; - NewMode: TProjectBuildMode; -begin - TheMenuItem:=(Sender as TMenuItem); - if TheMenuItem.Caption='-' then exit; - Index:=TheMenuItem.MenuIndex; - if (Index<0) or (Index>=Project1.BuildModes.Count) then exit; - NewMode:=Project1.BuildModes[Index]; - if NewMode=Project1.ActiveBuildMode then exit; - if not (ToolStatus in [itNone,itDebugger]) then begin - IDEMessageDialog('Error','You can not change the build mode while compiling.', - mtError,[mbOk]); - exit; - end; - - Project1.ActiveBuildMode:=NewMode; - MainBuildBoss.SetBuildTargetProject1(false); - UpdateCaption; -end; - function TMainIDE.CreateDesignerForComponent(AnUnitInfo: TUnitInfo; AComponent: TComponent): TCustomForm; var @@ -3643,7 +3452,7 @@ OnModified:=@OnDesignerModified; OnPasteComponents:=@OnDesignerPasteComponents; OnPastedComponents:=@OnDesignerPastedComponents; - OnProcessCommand:=@OnProcessIDECommand; + OnProcessCommand:=@HandleProcessIDECommand; OnPropertiesChanged:=@OnDesignerPropertiesChanged; OnRenameComponent:=@OnDesignerRenameComponent; OnSetDesigning:=@OnDesignerSetDesigning; @@ -3679,32 +3488,6 @@ end; end; -procedure TMainIDE.UpdateIDEComponentPalette(IfFormChanged: boolean); -var - OldLastCompPaletteForm: TCustomForm; - AResult: Boolean; -begin - // Package manager updates the palette initially. - if not FIDEStarted - or (IfFormChanged and (fLastCompPaletteForm=LastFormActivated)) then - exit; - OldLastCompPaletteForm:=fLastCompPaletteForm; - fLastCompPaletteForm:=LastFormActivated; - AResult:=(LastFormActivated<>nil) and (LastFormActivated.Designer<>nil) - and (LastFormActivated.Designer.LookupRoot<>nil) - and not (LastFormActivated.Designer.LookupRoot is TControl); - IDEComponentPalette.HideControls:=AResult; - // Don't update palette at the first time if not hiding controls. - if (OldLastCompPaletteForm = Nil) and not IDEComponentPalette.HideControls then - exit; - {$IFDEF VerboseComponentPalette} - DebugLn(['* TMainIDE.UpdateIDEComponentPalette: Updating palette *', - ', HideControls=', IDEComponentPalette.HideControls]); - {$ENDIF} - IDEComponentPalette.Update(False); - SetupHints; -end; - procedure TMainIDE.ShowDesignerForm(AForm: TCustomForm); var ARestoreVisible: Boolean; @@ -3749,57 +3532,27 @@ IDEWindowCreators.ShowForm(TabOrderDialog,State=iwgfShowOnTop); end; -procedure TMainIDE.DoToggleViewComponentPalette; -var - ComponentPaletteVisible: boolean; -begin - ComponentPaletteVisible:=not MainIDEBar.ComponentPageControl.Visible; - MainIDEBar.itmViewComponentPalette.Checked:=ComponentPaletteVisible; - MainIDEBar.ComponentPageControl.Visible:=ComponentPaletteVisible; - EnvironmentOptions.ComponentPaletteVisible:=ComponentPaletteVisible; -end; - -procedure TMainIDE.DoToggleViewIDESpeedButtons; -var - SpeedButtonsVisible: boolean; -begin - SpeedButtonsVisible:=not MainIDEBar.pnlSpeedButtons.Visible; - MainIDEBar.itmViewIDESpeedButtons.Checked:=SpeedButtonsVisible; - MainIDEBar.pnlSpeedButtons.Visible:=SpeedButtonsVisible; - EnvironmentOptions.IDESpeedButtonsVisible:=MainIDEBar.pnlSpeedButtons.Visible; -end; - -procedure TMainIDE.AllowCompilation(aAllow: Boolean); -// Enables or disables IDE GUI controls associated with compiling and building. -// Does it interfere with DebugBoss.UpdateButtonsAndMenuItems? Maybe should be refactored and combined. -begin - if MainIDEBar=Nil then Exit; - with MainIDEBar do begin - Assert(Assigned(RunSpeedButton), 'TMainIDE.AllowCompilation: RunSpeedButton not assigned!'); - RunSpeedButton.Enabled:=aAllow; - itmRunMenuRun.Enabled:=aAllow; - itmRunMenuCompile.Enabled:=aAllow; - itmRunMenuBuild.Enabled:=aAllow; - itmRunMenuQuickCompile.Enabled:=aAllow; - itmRunMenuCleanUpAndBuild.Enabled:=aAllow; - itmPkgEditInstallPkgs.Enabled:=aAllow; - itmToolRescanFPCSrcDir.Enabled:=aAllow; - itmToolBuildLazarus.Enabled:=aAllow; - //itmToolConfigureBuildLazarus.Enabled:=aAllow; - end; -end; - procedure TMainIDE.SetToolStatus(const AValue: TIDEToolStatus); begin + if ToolStatus=AValue then exit; inherited SetToolStatus(AValue); if DebugBoss <> nil then DebugBoss.UpdateButtonsAndMenuItems; - AllowCompilation(ToolStatus <> itBuilder); // Disable some GUI controls while compiling. + if Assigned(MainIDEBar) and not IDEIsClosing then + MainIDEBar.AllowCompilation(ToolStatus <> itBuilder); // Disable some GUI controls while compiling. if FWaitForClose and (ToolStatus = itNone) then begin FWaitForClose := False; MainIDEBar.Close; end; + + if not IDEIsClosing and MainIDEBar.HandleAllocated then + begin + if (ToolStatus = itDebugger) then + EnvironmentOptions.EnableDebugDesktop + else if (ToolStatus <> itExiting) then + EnvironmentOptions.DisableDebugDesktop; + end; end; function TMainIDE.DoResetToolStatus(AFlags: TResetToolFlags): boolean; @@ -3841,183 +3594,260 @@ {------------------------------------------------------------------------------} -procedure TMainIDE.mnuFileClicked(Sender: TObject); +procedure TMainIDE.UpdateFileCommands(Sender: TObject); var ASrcEdit: TSourceEditor; AnUnitInfo: TUnitInfo; begin GetCurrentUnit(ASrcEdit,AnUnitInfo); - with MainIDEBar do begin - itmFileClose.Enabled := ASrcEdit<>nil; - itmFileCloseAll.Enabled := ASrcEdit<>nil; - end; + if not UpdateFileCommandsStamp.Changed(ASrcEdit) then + Exit; + + IDECommandList.FindIDECommand(ecClose).Enabled := ASrcEdit<>nil; + IDECommandList.FindIDECommand(ecCloseAll).Enabled := ASrcEdit<>nil; end; -procedure TMainIDE.mnuEditClicked(Sender: TObject); +procedure TMainIDE.UpdateMainIDECommands(Sender: TObject); +begin + UpdateFileCommands(Sender); + UpdateEditorCommands(Sender); + UpdateBookmarkCommands(Sender); + UpdateEditorTabCommands(Sender); + UpdateProjectCommands(Sender); + UpdatePackageCommands(Sender); +end; + +procedure TMainIDE.UpdateEditorCommands(Sender: TObject); var ASrcEdit: TSourceEditor; AnUnitInfo: TUnitInfo; Editable: Boolean; SelAvail: Boolean; SelEditable: Boolean; - SrcEditorActive, DsgEditorActive: Boolean; + SrcEditorActive, DsgEditorActive, IdentFound, StringFound: Boolean; ActiveDesigner: TComponentEditorDesigner; + CurWordAtCursor: string; begin GetCurrentUnit(ASrcEdit, AnUnitInfo); + if not UpdateEditorCommandsStamp.Changed(ASrcEdit, DisplayState) then + Exit; + Editable := Assigned(ASrcEdit) and not ASrcEdit.ReadOnly; SelAvail := Assigned(ASrcEdit) and ASrcEdit.SelectionAvailable; SelEditable := Editable and SelAvail; SrcEditorActive := DisplayState = dsSource; DsgEditorActive := DisplayState = dsForm; ActiveDesigner := GetActiveDesignerSkipMainBar; - with MainIDEBar do + + if ASrcEdit<>nil then begin - if Assigned(ActiveDesigner) then - begin - // activate them when Designer start to support Undo/Redo - itmEditUndo.Enabled := DsgEditorActive and ActiveDesigner.CanUndo; {and not ActiveDesigner.ReadOnly} - itmEditRedo.Enabled := DsgEditorActive and ActiveDesigner.CanRedo; {and not ActiveDesigner.ReadOnly} - itmEditCut.Enabled := ActiveDesigner.CanCopy; - itmEditCopy.Enabled := itmEditCut.Enabled; - itmEditPaste.Enabled := ActiveDesigner.CanPaste; - end - else - begin - itmEditUndo.Enabled := Editable and SrcEditorActive and ASrcEdit.EditorComponent.CanUndo; - itmEditRedo.Enabled := Editable and SrcEditorActive and ASrcEdit.EditorComponent.CanRedo; - itmEditCut.Enabled := SelEditable; - itmEditCopy.Enabled := SelAvail; - itmEditPaste.Enabled := Editable; - end; - //itmEditSelect: TIDEMenuSection; [...] - //itmEditBlockActions: TIDEMenuSection; - itmEditIndentBlock.Enabled := Editable; - itmEditUnindentBlock.Enabled := Editable; - itmEditUpperCaseBlock.Enabled := SelEditable; - itmEditLowerCaseBlock.Enabled := SelEditable; - itmEditSwapCaseBlock.Enabled := SelEditable; - itmEditSortBlock.Enabled := SelEditable; - itmEditTabsToSpacesBlock.Enabled := SelEditable; - itmEditSelectionBreakLines.Enabled := SelEditable; - itmEditInsertCharacter.Enabled := Editable; + CurWordAtCursor := ASrcEdit.GetWordAtCurrentCaret; + //it is faster to get information from SynEdit than from CodeTools + ASrcEdit.EditorComponent.CaretAtIdentOrString(ASrcEdit.EditorComponent.CaretXY, IdentFound, StringFound); + end + else begin + CurWordAtCursor := ''; + IdentFound := False; + StringFound := False; end; + + if Assigned(ActiveDesigner) then + begin + IDECommandList.FindIDECommand(ecUndo).Enabled := DsgEditorActive and ActiveDesigner.CanUndo; {and not ActiveDesigner.ReadOnly} + IDECommandList.FindIDECommand(ecRedo).Enabled := DsgEditorActive and ActiveDesigner.CanRedo; {and not ActiveDesigner.ReadOnly} + IDECommandList.FindIDECommand(ecCut).Enabled := ActiveDesigner.CanCopy; + IDECommandList.FindIDECommand(ecCopy).Enabled := ActiveDesigner.CanCopy; + IDECommandList.FindIDECommand(ecPaste).Enabled := ActiveDesigner.CanPaste; + IDECommandList.FindIDECommand(ecSelectAll).Enabled := Assigned(ActiveDesigner.Form) and (ActiveDesigner.Form.ComponentCount>0); + end + else + begin + IDECommandList.FindIDECommand(ecUndo).Enabled := Editable and SrcEditorActive and Assigned(ASrcEdit) and ASrcEdit.EditorComponent.CanUndo; + IDECommandList.FindIDECommand(ecRedo).Enabled := Editable and SrcEditorActive and Assigned(ASrcEdit) and ASrcEdit.EditorComponent.CanRedo; + IDECommandList.FindIDECommand(ecCut).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecCopy).Enabled := SelAvail; + IDECommandList.FindIDECommand(ecPaste).Enabled := Editable; + IDECommandList.FindIDECommand(ecSelectAll).Enabled := Assigned(ASrcEdit) and (ASrcEdit.SourceText<>''); + end; + + IDECommandList.FindIDECommand(ecBlockIndent).Enabled := Editable; + IDECommandList.FindIDECommand(ecBlockUnindent).Enabled := Editable; + IDECommandList.FindIDECommand(ecSelectionUpperCase).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionLowerCase).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionSwapCase).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionSort).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionTabs2Spaces).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionBreakLines).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionComment).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionUnComment).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionEnclose).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecSelectionEncloseIFDEF).Enabled := SelEditable; + + IDECommandList.FindIDECommand(ecInsertCharacter).Enabled := Editable; + IDECommandList.FindIDECommand(ecCompleteCode).Enabled := Editable; + IDECommandList.FindIDECommand(ecUseUnit).Enabled := Editable; + + IDECommandList.FindIDECommand(ecInsertCVSAuthor).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertCVSDate).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertCVSHeader).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertCVSID).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertCVSLog).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertCVSName).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertCVSRevision).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertCVSSource).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertGPLNotice).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertGPLNoticeTranslated).Enabled := Editable; + MainIDEBar.itmSourceInsertGPLNoticeTranslated.Visible := (EnglishGPLNotice<>lisGPLNotice); + IDECommandList.FindIDECommand(ecInsertLGPLNotice).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertLGPLNoticeTranslated).Enabled := Editable; + MainIDEBar.itmSourceInsertLGPLNoticeTranslated.Visible := (EnglishLGPLNotice<>lisLGPLNotice); + IDECommandList.FindIDECommand(ecInsertModifiedLGPLNotice).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertModifiedLGPLNoticeTranslated).Enabled := Editable; + MainIDEBar.itmSourceInsertModifiedLGPLNoticeTranslated.Visible := (EnglishModifiedLGPLNotice<>lisModifiedLGPLNotice); + IDECommandList.FindIDECommand(ecInsertMITNotice).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertMITNoticeTranslated).Enabled := Editable; + MainIDEBar.itmSourceInsertMITNoticeTranslated.Visible := (EnglishMITNotice<>lisMITNotice); + IDECommandList.FindIDECommand(ecInsertUserName).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertDateTime).Enabled := Editable; + IDECommandList.FindIDECommand(ecInsertChangeLogEntry).Enabled := Editable; + + IDECommandList.FindIDECommand(ecRenameIdentifier).Enabled := Editable and IdentFound; + IDECommandList.FindIDECommand(ecExtractProc).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecInvertAssignment).Enabled := SelEditable; + IDECommandList.FindIDECommand(ecMakeResourceString).Enabled := Editable and StringFound; + IDECommandList.FindIDECommand(ecFindIdentifierRefs).Enabled := IdentFound; + IDECommandList.FindIDECommand(ecFindUsedUnitRefs).Enabled := IdentFound; + IDECommandList.FindIDECommand(ecFindOverloads).Enabled := IdentFound; + IDECommandList.FindIDECommand(ecShowAbstractMethods).Enabled := Editable; + IDECommandList.FindIDECommand(ecRemoveEmptyMethods).Enabled := Editable; + + IDECommandList.FindIDECommand(ecFindDeclaration).Enabled := CurWordAtCursor<>''; + if CurWordAtCursor<>'' then + IDECommandList.FindIDECommand(ecFindDeclaration).Caption := + Format(lisFindDeclarationOf, [CurWordAtCursor]) + else + IDECommandList.FindIDECommand(ecFindDeclaration).Caption := + uemFindDeclaration; end; -procedure TMainIDE.mnuSourceClicked(Sender: TObject); +procedure TMainIDE.UpdateEditorTabCommands(Sender: TObject); var ASrcEdit: TSourceEditor; AnUnitInfo: TUnitInfo; - Editable, SelEditable, SelAvail, IdentFound, StringFound: Boolean; - StartCode, EndCode: TCodeBuffer; - StartPos, EndPos: TPoint; - NewX, NewY, NewTopLine: integer; - CursorXY: TPoint; -begin - Editable:=False; - SelAvail:=False; - IdentFound:=False; - StringFound:=False; - ASrcEdit:=nil; - if BeginCodeTool(ASrcEdit,AnUnitInfo,[]) then begin - Assert(Assigned(ASrcEdit)); - Editable:=not ASrcEdit.ReadOnly; - SelAvail:=ASrcEdit.SelectionAvailable; - - // Try to find main identifier declaration to enable rename feature. - CursorXY:=ASrcEdit.EditorComponent.LogicalCaretXY; - IdentFound:=CodeToolBoss.FindMainDeclaration(AnUnitInfo.Source, - CursorXY.X,CursorXY.Y,StartCode,NewX,NewY,NewTopLine); - - // Calculate start and end of string expr to enable ResourceString feature. - if ASrcEdit.EditorComponent.SelAvail then - CursorXY:=ASrcEdit.EditorComponent.BlockBegin; - if CodeToolBoss.GetStringConstBounds(AnUnitInfo.Source,CursorXY.X,CursorXY.Y, - StartCode,StartPos.X,StartPos.Y, - EndCode,EndPos.X,EndPos.Y,true) then - StringFound:=(StartCode<>EndCode) or (CompareCaret(StartPos,EndPos)<>0); + + {$IFnDEF SingleSrcWindow} + function ToWindow(WinForFind: Boolean = False): Boolean; + var + i, ThisWin, SharedEditor: Integer; + nb: TSourceNotebook; + begin + Result := False; + if ASrcEdit=nil then + Exit; + ThisWin := SourceEditorManager.IndexOfSourceWindow(ASrcEdit.SourceNotebook); + for i := 0 to SourceEditorManager.SourceWindowCount - 1 do begin + nb:=SourceEditorManager.SourceWindows[i]; + SharedEditor:=nb.IndexOfEditorInShareWith(ASrcEdit); + if (i <> ThisWin) and ((SharedEditor < 0) <> WinForFind) then begin + Result := True; + Break; + end; + end; end; - SelEditable:=Editable and SelAvail; - with MainIDEBar do begin - //itmSourceBlockActions - itmSourceCommentBlock.Enabled:=SelEditable; - itmSourceUncommentBlock.Enabled:=SelEditable; - itmSourceEncloseBlock.Enabled:=SelEditable; - itmSourceEncloseInIFDEF.Enabled:=SelEditable; - itmSourceCompleteCode.Enabled:=Editable; - itmSourceUseUnit.Enabled:=Editable; - //itmSourceInsertions - //itmSourceInsertCVSKeyWord - itmSourceInsertCVSAuthor.Enabled:=Editable; - itmSourceInsertCVSDate.Enabled:=Editable; - itmSourceInsertCVSHeader.Enabled:=Editable; - itmSourceInsertCVSID.Enabled:=Editable; - itmSourceInsertCVSLog.Enabled:=Editable; - itmSourceInsertCVSName.Enabled:=Editable; - itmSourceInsertCVSRevision.Enabled:=Editable; - itmSourceInsertCVSSource.Enabled:=Editable; - //itmSourceInsertGeneral - itmSourceInsertGPLNotice.Enabled:=Editable; - itmSourceInsertGPLNoticeTranslated.Visible:= - Editable and (EnglishGPLNotice<>lisGPLNotice); - itmSourceInsertLGPLNotice.Enabled:=Editable; - itmSourceInsertLGPLNoticeTranslated.Visible:= - Editable and (EnglishLGPLNotice<>lisLGPLNotice); - itmSourceInsertModifiedLGPLNotice.Enabled:=Editable; - itmSourceInsertModifiedLGPLNoticeTranslated.Visible:= - Editable and (EnglishModifiedLGPLNotice<>lisModifiedLGPLNotice); - itmSourceInsertMITNotice.Enabled:=Editable; - itmSourceInsertMITNoticeTranslated.Visible:= - Editable and (EnglishMITNotice<>lisMITNotice); - itmSourceInsertUsername.Enabled:=Editable; - itmSourceInsertDateTime.Enabled:=Editable; - itmSourceInsertChangeLogEntry.Enabled:=Editable; - //itmSourceRefactor - //itmRefactorCodeTools - itmRefactorRenameIdentifier.Enabled:=Editable and IdentFound; - itmRefactorExtractProc.Enabled:=Editable and SelAvail; - itmRefactorInvertAssignment.Enabled:=Editable and SelAvail; - //itmRefactorAdvanced - itmRefactorMakeResourceString.Enabled:=Editable and StringFound; + {$ENDIF} + +var + NBAvail: Boolean; + PageIndex, PageCount: Integer; +begin + GetCurrentUnit(ASrcEdit, AnUnitInfo); + if not UpdateEditorTabCommandsStamp.Changed(ASrcEdit) then + Exit; + + if Assigned(ASrcEdit) then + begin + PageIndex := ASrcEdit.SourceNotebook.PageIndex; + PageCount := ASrcEdit.SourceNotebook.PageCount; + end else + begin + PageIndex := 0; + PageCount := 0; end; + + {$IFnDEF SingleSrcWindow} + SrcEditMenuEditorLock.Checked := Assigned(ASrcEdit) and ASrcEdit.IsLocked; // Editor locks + // Multi win + NBAvail := ToWindow(); + SrcEditMenuMoveToNewWindow.Visible := not NBAvail; + SrcEditMenuMoveToNewWindow.Enabled := PageCount > 1; + SrcEditMenuMoveToOtherWindow.Visible := NBAvail; + SrcEditMenuMoveToOtherWindowNew.Enabled := PageCount > 1; + + SrcEditMenuCopyToNewWindow.Visible := not NBAvail; + SrcEditMenuCopyToOtherWindow.Visible := NBAvail; + + SrcEditMenuFindInOtherWindow.Enabled := NBAvail; + {$ENDIF} + + // editor layout + SrcEditMenuMoveEditorLeft.Enabled:= (PageCount>1); + SrcEditMenuMoveEditorRight.Enabled:= (PageCount>1); + SrcEditMenuMoveEditorFirst.Enabled:= (PageCount>1) and (PageIndex>0); + SrcEditMenuMoveEditorLast.Enabled:= (PageCount>1) and (PageIndex<(PageCount-1)); end; -procedure TMainIDE.mnuProjectClicked(Sender: TObject); +procedure TMainIDE.UpdateProjectCommands(Sender: TObject); var ASrcEdit: TSourceEditor; AUnitInfo: TUnitInfo; - NotPartOfProj: Boolean; + xCmd: TIDECommand; begin GetCurrentUnit(ASrcEdit,AUnitInfo); - NotPartOfProj:=Assigned(AUnitInfo) and not AUnitInfo.IsPartOfProject; - MainIDEBar.itmProjectAddTo.Enabled:=NotPartOfProj; -end; + if not UpdateProjectCommandsStamp.Changed(AUnitInfo) then + Exit; -procedure TMainIDE.mnuRunClicked(Sender: TObject); -begin - with MainIDEBar do begin - itmRunMenuBuildManyModes.Enabled:=Project1.BuildModes.Count>1; - end; + IDECommandList.FindIDECommand(ecAddCurUnitToProj).Enabled:=Assigned(AUnitInfo) and not AUnitInfo.IsPartOfProject; + IDECommandList.FindIDECommand(ecBuildManyModes).Enabled:=(Project1<>nil) and (Project1.BuildModes.Count>1); + + xCmd := IDECommandList.FindIDECommand(ecProjectChangeBuildMode); + if Assigned(Project1) then + xCmd.Hint := + Trim(lisChangeBuildMode + ' ' + KeyValuesToCaptionStr(xCmd.ShortcutA, xCmd.ShortcutB, '(')) + sLineBreak + + Format('[%s]', [Project1.ActiveBuildMode.GetCaption]) + else + xCmd.Hint := + Trim(lisChangeBuildMode + ' ' + KeyValuesToCaptionStr(xCmd.ShortcutA, xCmd.ShortcutB, '(')); end; -procedure TMainIDE.mnuPackageClicked(Sender: TObject); +procedure TMainIDE.UpdatePackageCommands(Sender: TObject); var ASrcEdit: TSourceEditor; AUnitInfo: TUnitInfo; PkgFile: TPkgFile; CanOpenPkgOfFile, CanAddCurFile: Boolean; begin - CanOpenPkgOfFile:=False; - CanAddCurFile:=False; GetCurrentUnit(ASrcEdit,AUnitInfo); - if Assigned(ASrcEdit) then begin + if Assigned(AUnitInfo) then + else + PkgFile := nil; + + if not UpdatePackageCommandsStamp.Changed(AUnitInfo) then + Exit; + + if Assigned(AUnitInfo) then + begin PkgFile:=PackageGraph.FindFileInAllPackages(AUnitInfo.Filename,true, - not AUnitInfo.IsPartOfProject); + not AUnitInfo.IsPartOfProject); CanOpenPkgOfFile:=Assigned(PkgFile); CanAddCurFile:=(not AUnitInfo.IsVirtual) and FileExistsUTF8(AUnitInfo.Filename) and not AUnitInfo.IsPartOfProject; + MainIDEBar.itmPkgOpenPackageOfCurUnit.Enabled:=CanOpenPkgOfFile; + MainIDEBar.itmPkgAddCurFileToPkg.Enabled:=CanAddCurFile; + end else + begin + MainIDEBar.itmPkgOpenPackageOfCurUnit.Enabled:=False; + MainIDEBar.itmPkgAddCurFileToPkg.Enabled:=False; end; - MainIDEBar.itmPkgOpenPackageOfCurUnit.Enabled:=CanOpenPkgOfFile; - MainIDEBar.itmPkgAddCurFileToPkg.Enabled:=CanAddCurFile; end; {------------------------------------------------------------------------------} @@ -4187,11 +4017,35 @@ OpenMainUnit(-1,-1,[]); end; -procedure TMainIDE.mnuProjectOptionsClicked(Sender: TObject); +procedure TMainIDE.ProjectOptionsHelper(AFilter: array of TAbstractIDEOptionsClass); +var + Capt: String; begin if Project1=nil then exit; - DoOpenIDEOptions(nil, Format(dlgProjectOptionsFor, [Project1.GetTitleOrName]), - [TProjectIDEOptions, TProjectCompilerOptions], []); + // This is kind of a hack. Copy OtherDefines from project to current + // buildmode's compiler options and then back after they are modified. + // Only needed for projects, packages don't have buildmodes. + Project1.CompilerOptions.OtherDefines.Assign(Project1.OtherDefines); + + Capt := Format(dlgProjectOptionsFor, [Project1.GetTitleOrName]); + if DoOpenIDEOptions(nil, Capt, AFilter, []) then + begin + if not Project1.OtherDefines.Equals(Project1.CompilerOptions.OtherDefines) then + Project1.OtherDefines.Assign(Project1.CompilerOptions.OtherDefines); + Project1.Modified:=True; + MainBuildBoss.SetBuildTargetProject1(false); + MainIDE.UpdateCaption; + end; +end; + +procedure TMainIDE.mnuProjectOptionsClicked(Sender: TObject); +begin + ProjectOptionsHelper([TProjectIDEOptions, TProjectCompilerOptions]); +end; + +procedure TMainIDE.mnuBuildModeClicked(Sender: TObject); +begin + ProjectOptionsHelper([TProjectCompilerOptions]); end; function TMainIDE.UpdateProjectPOFile(AProject: TProject): TModalResult; @@ -4214,7 +4068,7 @@ POFilename := MainBuildBoss.GetProjectTargetFilename(AProject); if POFilename='' then begin - DebugLn(['TMainIDE.UpdateProjectPOFile unable to get project target filename']); + DebugLn(['Warning: (lazarus) [TMainIDE.UpdateProjectPOFile] unable to get project target filename']); exit; end; POFilename:=ChangeFileExt(POFilename, '.po'); @@ -4389,14 +4243,16 @@ var H: boolean; begin - OnProcessIDECommand(nil, ecAttach, H); + H:=false; + HandleProcessIDECommand(nil, ecAttach, H); end; procedure TMainIDE.mnuDetachDebuggerClicked(Sender: TObject); var H: boolean; begin - OnProcessIDECommand(nil, ecDetach, H); + H:=false; + HandleProcessIDECommand(nil, ecDetach, H); end; procedure TMainIDE.mnuBuildFileClicked(Sender: TObject); @@ -4411,7 +4267,7 @@ procedure TMainIDE.mnuConfigBuildFileClicked(Sender: TObject); begin - DoConfigBuildFile; + DoConfigureBuildFile; end; procedure TMainIDE.mnuRunParametersClicked(Sender: TObject); @@ -4491,8 +4347,8 @@ InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Title:=lisChooseDelphiUnit; OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist,ofFileMustExist,ofAllowMultiSelect]; - OpenDialog.Filter:=lisDelphiUnit+' (*.pas)|*.pas|'+ - dlgAllFiles+' ('+GetAllFilesMask+')|' + GetAllFilesMask; + OpenDialog.Filter:=dlgFilterDelphiUnit+' (*.pas)|*.pas|'+ + dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask; if InputHistories.LastConvertDelphiUnit<>'' then begin OpenDialog.InitialDir:=ExtractFilePath(InputHistories.LastConvertDelphiUnit); OpenDialog.Filename :=ExtractFileName(InputHistories.LastConvertDelphiUnit); @@ -4528,9 +4384,9 @@ InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Title:=lisChooseDelphiProject; OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist,ofFileMustExist]; - OpenDialog.Filter:=lisDelphiProject+' (*.dpr)|*.dpr|'+ - lisLazarusProject+' (*.lpr)|*.lpr|'+ - dlgAllFiles+' ('+GetAllFilesMask+')|' + GetAllFilesMask; + OpenDialog.Filter:=dlgFilterDelphiProject+' (*.dpr)|*.dpr|'+ + dlgFilterLazarusProject+' (*.lpr)|*.lpr|'+ + dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask; if InputHistories.LastConvertDelphiProject<>'' then begin OpenDialog.InitialDir:=ExtractFilePath(InputHistories.LastConvertDelphiProject); OpenDialog.Filename :=ExtractFileName(InputHistories.LastConvertDelphiProject); @@ -4558,8 +4414,8 @@ InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Title:=lisChooseDelphiPackage; OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist,ofFileMustExist]; - OpenDialog.Filter:=lisDelphiPackage+' (*.dpk)|*.dpk|'+ - dlgAllFiles+' ('+GetAllFilesMask+')|' + GetAllFilesMask; + OpenDialog.Filter:=dlgFilterDelphiPackage+' (*.dpk)|*.dpk|'+ + dlgFilterAll+' ('+GetAllFilesMask+')|' + GetAllFilesMask; if InputHistories.LastConvertDelphiPackage<>'' then begin OpenDialog.InitialDir:=ExtractFilePath(InputHistories.LastConvertDelphiPackage); OpenDialog.Filename :=ExtractFileName(InputHistories.LastConvertDelphiPackage); @@ -4583,6 +4439,11 @@ ShowConvertEncodingDlg; end; +procedure TMainIDE.mnuToolManageDesktopsClicked(Sender: TObject); +begin + ShowDesktopManagerDlg; +end; + procedure TMainIDE.mnuToolManageExamplesClicked(Sender: TObject); begin DoExampleManager(); @@ -4691,52 +4552,51 @@ //------------------------------------------------------------------------------ -procedure TMainIDE.SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); -// Called also before reading EnvironmentOptions +procedure TMainIDE.LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); begin - IDEWindowCreators.SimpleLayoutStorage.StoreWindowPositions; - // do not auto show the search results view - IDEWindowCreators.SimpleLayoutStorage.ItemByFormID( - NonModalIDEWindowNames[nmiwSearchResultsViewName]).Visible:=false; - + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) TMainIDE.LoadDesktopSettings']); if ObjectInspector1<>nil then - TheEnvironmentOptions.ObjectInspectorOptions.Assign(ObjectInspector1); + TheEnvironmentOptions.ObjectInspectorOptions.AssignTo(ObjectInspector1); + if MessagesView<>nil then + MessagesView.ApplyIDEOptions; end; -procedure TMainIDE.PackageTranslated(APackage: TLazPackage); +procedure TMainIDE.SaveDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); +// Called also before reading EnvironmentOptions begin - if APackage=PackageGraph.SynEditPackage then begin - EditorOpts.TranslateResourceStrings; - end; -end; + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) TMainIDE.SaveDesktopSettings']); + EnvironmentOptions.Desktop.ImportSettingsFromIDE; -procedure TMainIDE.LoadDesktopSettings(TheEnvironmentOptions: TEnvironmentOptions); -begin if ObjectInspector1<>nil then - TheEnvironmentOptions.ObjectInspectorOptions.AssignTo(ObjectInspector1); - if MessagesView<>nil then - MessagesView.ApplyIDEOptions; + TheEnvironmentOptions.ObjectInspectorOptions.Assign(ObjectInspector1); end; -procedure TMainIDE.OnLoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); +procedure TMainIDE.DoLoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); begin + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) TMainIDE.OnLoadIDEOptions: ', AOptions.ClassName]); + // ToDo: Figure out why this is not called. if AOptions is TEnvironmentOptions then LoadDesktopSettings(AOptions as TEnvironmentOptions); end; -procedure TMainIDE.OnSaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); +procedure TMainIDE.DoSaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions); begin + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) TMainIDE.OnSaveIDEOptions: ', AOptions.ClassName]); + // ToDo: Figure out why this is not called. if AOptions is TEnvironmentOptions then SaveDesktopSettings(AOptions as TEnvironmentOptions); end; -procedure TMainIDE.DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; +function TMainIDE.DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass; ACaption: String; AOptionsFilter: array of TAbstractIDEOptionsClass; - ASettings: TIDEOptionsEditorSettings); + ASettings: TIDEOptionsEditorSettings): Boolean; var IDEOptionsDialog: TIDEOptionsDialog; OptionsFilter: TIDEOptionsEditorFilter; - PaletteOpt: TCompPaletteOptionsFrame; i: Integer; begin IDEOptionsDialog := TIDEOptionsDialog.Create(nil); @@ -4751,8 +4611,7 @@ else OptionsFilter[0] := TAbstractIDEEnvironmentOptions; end - else - begin + else begin SetLength(OptionsFilter, Length(AOptionsFilter)); for i := 0 to Length(AOptionsFilter) - 1 do OptionsFilter[i] := AOptionsFilter[i]; @@ -4760,23 +4619,20 @@ IDEOptionsDialog.OptionsFilter := OptionsFilter; IDEOptionsDialog.Settings := ASettings; IDEOptionsDialog.OpenEditor(AEditor); - IDEOptionsDialog.OnLoadIDEOptionsHook:=@Self.OnLoadIDEOptions; - IDEOptionsDialog.OnSaveIDEOptionsHook:=@Self.OnSaveIDEOptions; + IDEOptionsDialog.OnLoadIDEOptionsHook:=@DoLoadIDEOptions; + IDEOptionsDialog.OnSaveIDEOptionsHook:=@DoSaveIDEOptions; IDEOptionsDialog.ReadAll; - if IDEOptionsDialog.ShowModal = mrOk then begin - IDEOptionsDialog.WriteAll(false); - // Update component palette only when needed. - PaletteOpt := TCompPaletteOptionsFrame(IDEOptionsDialog.FindEditor(TCompPaletteOptionsFrame)); - if Assigned(PaletteOpt) and PaletteOpt.ConfigChanged then - IDEComponentPalette.Update(True); + Result := IDEOptionsDialog.ShowModal = mrOk; + IDEOptionsDialog.WriteAll(not Result); // Restore if user cancelled. + if Result then + begin + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) TMainIDE.DoOpenIDEOptions: Options saved, updating TaskBar.']); // Update TaskBarBehavior immediately. - if EnvironmentOptions.SingleTaskBarButton then + if EnvironmentOptions.Desktop.SingleTaskBarButton then Application.TaskBarBehavior := tbSingleButton else Application.TaskBarBehavior := tbDefault; - end else begin - // restore - IDEOptionsDialog.WriteAll(true); end; finally IDEOptionsDialog.Free; @@ -4884,13 +4740,14 @@ UpdateDesigners; UpdateObjectInspector; UpdateMessagesView; - SetupHints; + MainIDEBar.SetupHints; Application.ShowButtonGlyphs := EnvironmentOptions.ShowButtonGlyphs; Application.ShowMenuGlyphs := EnvironmentOptions.ShowMenuGlyphs; - if EnvironmentOptions.SingleTaskBarButton then + if EnvironmentOptions.Desktop.SingleTaskBarButton then Application.TaskBarBehavior := tbSingleButton else Application.TaskBarBehavior := tbDefault; + uAllEditorToolbars.ReloadAll; // reload lazarus packages if LazarusSrcDirChanged then @@ -5039,8 +4896,12 @@ begin //debugln(['TMainIDE.DoProjectOptionsAfterWrite ',DbgSName(Sender),' Restore=',Restore]); AProject:=(Sender as TProjectIDEOptions).Project; - if not Restore then + if Restore then begin + AProject.RestoreBuildModes; + AProject.RestoreSession; + end + else begin SetTitle; SetAutoCreateForms; // extend include path @@ -5051,20 +4912,10 @@ IDEMessageDialog(lisCCOWarningCaption, AProject.ProjResources.Messages.Text, mtWarning, [mbOk]); end; - UpdateCaption; - AProject.DefineTemplates.AllChanged; - end; - if Restore then - begin - AProject.RestoreBuildModes; - AProject.RestoreSession; - end; - - IncreaseCompilerParseStamp; - MainBuildBoss.SetBuildTargetProject1(false); + UpdateCaption; + AProject.DefineTemplates.AllChanged; + IncreaseCompilerParseStamp; - if not Restore then - begin if AProject.UseAsDefault then begin // save as default @@ -5086,37 +4937,43 @@ procedure TMainIDE.ComponentPaletteClassSelected(Sender: TObject); begin - if (Screen.CustomFormZOrderCount > 1) + // code below cant be handled correctly by integrated IDE + if (IDETabMaster = nil) and (Screen.CustomFormZOrderCount > 1) and Assigned(Screen.CustomFormsZOrdered[1].Designer) then + begin // previous active form was designer form - ShowDesignerForm(Screen.CustomFormsZOrdered[1]) - else - DoShowDesignerFormOfCurrentSrc; + ShowDesignerForm(Screen.CustomFormsZOrdered[1]); + DoCallShowDesignerFormOfSourceHandler(lihtShowDesignerFormOfSource, + Screen.CustomFormsZOrdered[1], nil, True); + end else + DoShowDesignerFormOfCurrentSrc(True); end; procedure TMainIDE.SelComponentPageButtonClick(Sender: TObject); var zPos: TPoint; - btn: TGraphicControl; + btn: TControl; begin - btn := Sender as TGraphicControl; - zPos:=point(btn.Width,btn.Height); + btn := Sender as TControl; + zPos:=point(btn.Width div 2,btn.Height); zPos:=btn.ClientToScreen(zPos); if DlgCompPagesPopup=nil then Application.CreateForm(TDlgCompPagesPopup, DlgCompPagesPopup); - if not DlgCompPagesPopup.Visible then + if DlgCompPagesPopup.LastCanShowCheck then begin DlgCompPagesPopup.Left:=zPos.x-(DlgCompPagesPopup.Width div 2); - DlgCompPagesPopup.Top:=zPos.y-5; + DlgCompPagesPopup.Top:=zPos.y; DlgCompPagesPopup.FixBounds; + DlgCompPagesPopup.PopupParent := GetParentForm(btn); DlgCompPagesPopup.Show; - end else - DlgCompPagesPopup.Close; + end; end; -procedure TMainIDE.mnuEnvEditorOptionsClicked(Sender: TObject); +procedure TMainIDE.SelComponentPageButtonMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin - DoOpenIDEOptions(TEditorGeneralOptionsFrame); + if DlgCompPagesPopup<>nil then + DlgCompPagesPopup.CanShowCheck;//do the check in OnMouseDown end; procedure TMainIDE.mnuEnvCodeTemplatesClicked(Sender: TObject); @@ -5161,6 +5018,12 @@ SaveOIFavoriteProperties(ObjectInspector1.Favorites); end; +procedure TMainIDE.PackageTranslated(APackage: TLazPackage); +begin + if APackage=PackageGraph.SynEditPackage then + EditorOpts.TranslateResourceStrings; +end; + function TMainIDE.DoOpenComponent(const UnitFilename: string; OpenFlags: TOpenFlags; CloseFlags: TCloseFlags; out Component: TComponent): TModalResult; begin @@ -5205,7 +5068,7 @@ try CTResult:=CodeToolBoss.FindUsedUnitFiles(RootUnitInfo.Source,CurUnitFilenames); if not CTResult then begin - DebugLn(['TMainIDE.DoFixupComponentReferences.FindUsedUnits failed parsing ',RootUnitInfo.Filename]); + DebugLn(['Error: (lazarus) [TMainIDE.DoFixupComponentReferences.FindUsedUnits] failed parsing ',RootUnitInfo.Filename]); // ignore the error. This was just a fallback search. end; if (CurUnitFilenames<>nil) then begin @@ -5226,7 +5089,7 @@ CTResult:=CodeToolBoss.FindUsedUnitFiles(Project1.MainUnitInfo.Source, CurUnitFilenames); if not CTResult then begin - DebugLn(['TMainIDE.DoFixupComponentReferences.FindUsedUnits failed parsing ',Project1.MainUnitInfo.Filename]); + DebugLn(['Error: (lazarus) [TMainIDE.DoFixupComponentReferences.FindUsedUnits] failed parsing ',Project1.MainUnitInfo.Filename]); // ignore the error. This was just a fallback search. end; if (CurUnitFilenames<>nil) then begin @@ -5249,7 +5112,7 @@ // load the lfm file ModalResult:=LoadCodeBuffer(LFMCode,LFMFilename,[lbfCheckIfText],true); if ModalResult<>mrOk then begin - debugln('TMainIDE.DoFixupComponentReferences Failed loading ',LFMFilename); + debugln('Error: (lazarus) [TMainIDE.DoFixupComponentReferences] Failed loading ',LFMFilename); if ModalResult=mrAbort then break; end else begin // read the LFM component name @@ -5287,7 +5150,7 @@ end; end; - DebugLn(['FindUnitFilename missing: ',aComponentName]); + DebugLn(['Warning: (lazarus) FindUnitFilename missing: ',aComponentName]); Result:=''; end; @@ -5304,7 +5167,7 @@ // load lfm UnitFilename:=FindUnitFilename(RefRootName); if UnitFilename='' then begin - DebugLn(['TMainIDE.DoFixupComponentReferences.LoadDependencyHidden failed to find lfm for "',RefRootName,'"']); + DebugLn(['Error: (lazarus) [TMainIDE.DoFixupComponentReferences.LoadDependencyHidden] failed to find lfm for "',RefRootName,'"']); exit(mrCancel); end; // ToDo: use UnitResources @@ -5313,7 +5176,7 @@ LFMFilename:=ChangeFileExt(UnitFilename,'.dfm'); ModalResult:=LoadCodeBuffer(LFMCode,LFMFilename,[lbfCheckIfText],false); if ModalResult<>mrOk then begin - debugln('TMainIDE.DoFixupComponentReferences Failed loading ',LFMFilename); + debugln('Error: (lazarus) [TMainIDE.DoFixupComponentReferences] Failed loading ',LFMFilename); exit(mrCancel); end; @@ -5329,7 +5192,7 @@ begin ModalResult := LoadCodeBuffer(UnitCode, UnitFileName, [lbfCheckIfText],false); if ModalResult<>mrOk then begin - debugln('TMainIDE.DoFixupComponentReferences Failed loading ',UnitFilename); + debugln('Error: (lazarus) [TMainIDE.DoFixupComponentReferences] Failed loading ',UnitFilename); exit(mrCancel); end; RefUnitInfo.Source := UnitCode; @@ -5380,7 +5243,7 @@ CurRoot:=CurRoot.Owner; RootUnitInfo:=Project1.UnitWithComponent(CurRoot); if RootUnitInfo=nil then begin - debugln(['TMainIDE.DoFixupComponentReferences WARNING: component without unitinfo: ',DbgSName(RootComponent),' CurRoot=',DbgSName(CurRoot)]); + debugln(['Warning: (lazarus) [TMainIDE.DoFixupComponentReferences] component without unitinfo: ',DbgSName(RootComponent),' CurRoot=',DbgSName(CurRoot)]); exit; end; @@ -5405,7 +5268,7 @@ ReferenceInstanceNames.Clear; GetFixupInstanceNames(CurRoot,RefRootName,ReferenceInstanceNames); - DebugLn(['TMainIDE.DoFixupComponentReferences UNRESOLVED BEFORE loading ',j,' Root=',dbgsName(CurRoot),' RefRoot=',RefRootName,' Refs="',Trim(ReferenceInstanceNames.Text),'"']); + DebugLn(['Note: (lazarus) [TMainIDE.DoFixupComponentReferences] UNRESOLVED BEFORE loading ',j,' Root=',dbgsName(CurRoot),' RefRoot=',RefRootName,' Refs="',Trim(ReferenceInstanceNames.Text),'"']); // load the referenced component LoadResult:=LoadDependencyHidden(RefRootName); @@ -5419,7 +5282,7 @@ // ToDo: give a nice error message and give user the choice between // a) ignore and loose the references // b) undo the opening (close the designer forms) - DebugLn(['TMainIDE.DoFixupComponentReferences failed loading component ',RefRootName]); + DebugLn(['Error: (lazarus) [TMainIDE.DoFixupComponentReferences] failed loading component ',RefRootName]); Result:=mrCancel; end; end; @@ -5430,7 +5293,7 @@ GlobalFixupReferences; except on E: Exception do begin - DebugLn(['TMainIDE.DoFixupComponentReferences GlobalFixupReferences ',E.Message]); + DebugLn(['Error: (lazarus) [TMainIDE.DoFixupComponentReferences] GlobalFixupReferences ',E.Message]); DumpExceptionBackTrace; end; end; @@ -5447,7 +5310,7 @@ continue; ReferenceInstanceNames.Clear; GetFixupInstanceNames(CurRoot,RefRootName,ReferenceInstanceNames); - DebugLn(['TMainIDE.DoFixupComponentReferences UNRESOLVED AFTER loading ',j,' ',dbgsName(CurRoot),' RefRoot=',RefRootName,' Refs="',Trim(ReferenceInstanceNames.Text),'"']); + DebugLn(['Warning: (lazarus) [TMainIDE.DoFixupComponentReferences] UNRESOLVED AFTER loading ',j,' ',dbgsName(CurRoot),' RefRoot=',RefRootName,' Refs="',Trim(ReferenceInstanceNames.Text),'"']); // forget the rest of the dangling references RemoveFixupReferences(CurRoot,RefRootName); @@ -5512,12 +5375,6 @@ MainIDEBar.itmFileExportHtml.Enabled := (SrcEdit<>nil); if UpdateSaveAll then MainIDEBar.itmFileSaveAll.Enabled := MainIDEBar.itmProjectSave.Enabled; - // toolbar buttons - MainIDEBar.BuildModeSpeedButton.Visible:=(Project1<>nil) - and (Project1.BuildModes.Count>1); - MainIDEBar.SaveSpeedBtn.Enabled := MainIDEBar.itmFileSave.Enabled; - if UpdateSaveAll then - MainIDEBar.SaveAllSpeedBtn.Enabled := MainIDEBar.itmFileSaveAll.Enabled; end; procedure TMainIDE.OnSaveProjectUnitSessionInfo(AUnitInfo: TUnitInfo); @@ -5550,7 +5407,7 @@ DebugBoss.LoadProjectSpecificInfo(XMLConfig,Merge); if (TheProject=Project1) then - EditorMacroListViewer.LoadProjectSpecificInfo(XMLConfig, Merge); + EditorMacroListViewer.LoadProjectSpecificInfo(XMLConfig); end; procedure TMainIDE.OnSaveProjectInfoToXMLConfig(TheProject: TProject; @@ -5563,11 +5420,6 @@ EditorMacroListViewer.SaveProjectSpecificInfo(XMLConfig, WriteFlags); end; -procedure TMainIDE.OnProjectGetTestDirectory(TheProject: TProject; out TestDir: string); -begin - TestDir:=GetTestBuildDirectory; -end; - procedure TMainIDE.OnProjectChangeInfoFile(TheProject: TProject); begin if (Project1=nil) or (TheProject<>Project1) then exit; @@ -5620,14 +5472,14 @@ CurResult:=DoCallModalFunctionHandler(lihtSavingAll); if CurResult=mrAbort then begin if ConsoleVerbosity>0 then - debugln(['TMainIDE.DoSaveAll DoCallModalFunctionHandler(lihtSavingAll) failed']); + debugln(['Error: (lazarus) [TMainIDE.DoSaveAll] DoCallModalFunctionHandler(lihtSavingAll) failed']); exit(mrAbort); end; if CurResult<>mrOk then Result:=mrCancel; CurResult:=DoSaveProject(Flags); if CurResult<>mrOK then begin if ConsoleVerbosity>0 then - debugln(['TMainIDE.DoSaveAll DoSaveProject failed']); + debugln(['Error: (lazarus) [TMainIDE.DoSaveAll] DoSaveProject failed']); end; SaveEnvironment(true); SaveIncludeLinks; @@ -5638,7 +5490,7 @@ CurResult:=DoCallModalFunctionHandler(lihtSavedAll); if CurResult<>mrOK then begin if ConsoleVerbosity>0 then - debugln(['TMainIDE.DoSaveAll DoCallModalFunctionHandler(lihtSavedAll) failed']); + debugln(['Error: (lazarus) [TMainIDE.DoSaveAll] DoCallModalFunctionHandler(lihtSavedAll) failed']); end; if CurResult=mrAbort then Result:=mrAbort @@ -5685,6 +5537,27 @@ SetRecentFilesMenu; end; +procedure TMainIDE.DoDropFilesAsync(Data: PtrInt); +var + xParams: TDoDropFilesAsyncParams; +begin + xParams := TDoDropFilesAsyncParams(Data); + try + if Length(xParams.FileNames) > 0 then + DoDropFiles(Self, xParams.FileNames, xParams.WindowIndex); + if xParams.BringToFront then + begin + if Application.MainForm.WindowState = wsMinimized then + UnhideIDE; + Application.BringToFront; + if SourceEditorManager.ActiveSourceWindow <> nil then + SourceEditorManager.ActiveSourceWindow.BringToFront; + end; + finally + xParams.Free; + end; +end; + function TMainIDE.DoSelectFrame: TComponentClass; var UnitList: TStringList; @@ -5704,11 +5577,11 @@ begin aFilename:=UnitList[i]; if not FileExistsUTF8(aFilename) then continue; - debugln(['TMainIDE.DoSelectFrame Filename="',aFilename,'"']); + //debugln(['TMainIDE.DoSelectFrame Filename="',aFilename,'"']); if DoOpenComponent(aFilename, [ofOnlyIfExists,ofLoadHiddenResource,ofUseCache],[],AComponent)<>mrOk then exit; - debugln(['TMainIDE.DoSelectFrame AncestorComponent=',DbgSName(AComponent)]); + //debugln(['TMainIDE.DoSelectFrame AncestorComponent=',DbgSName(AComponent)]); Result := TComponentClass(AComponent.ClassType); exit; end; @@ -5856,7 +5729,7 @@ CodeExplorerView.OnJumpToCode:=@OnCodeExplorerJumpToCode; CodeExplorerView.OnShowOptions:=@OnCodeExplorerShowOptions; end else if State=iwgfDisabled then - CodeExplorerView.DisableAutoSizing; + CodeExplorerView.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.DoShowCodeExplorer'){$ENDIF}; if State>=iwgfShow then begin IDEWindowCreators.ShowForm(CodeExplorerView,State=iwgfShowOnTop); @@ -5864,6 +5737,24 @@ end; end; +function TMainIDE.DoShowCodeToolBossError: TMessageLine; +begin + if CodeToolBoss.ErrorMessage='' then + Result := nil + else + begin + MessagesView.ClearCustomMessages('Codetools'); + if CodeToolBoss.ErrorCode<>nil then begin + Result:=MessagesView.AddCustomMessage(mluError,CodeToolBoss.ErrorMessage, + CodeToolBoss.ErrorCode.Filename,CodeToolBoss.ErrorLine,CodeToolBoss.ErrorColumn, + 'Codetools'); + Result.Flags:=Result.Flags+[mlfLeftToken]; + end else + Result:=MessagesView.AddCustomMessage(mluError,CodeToolBoss.ErrorMessage,'',0,0,'Codetools'); + MessagesView.SelectMsgLine(Result); + end; +end; + procedure TMainIDE.DoShowCodeBrowser(State: TIWGetFormState); begin CreateCodeBrowser(State=iwgfDisabled); @@ -5878,7 +5769,7 @@ IDEWindowCreators.CreateForm(RestrictionBrowserView,TRestrictionBrowserView, State=iwgfDisabled,OwningComponent) else if State=iwgfDisabled then - RestrictionBrowserView.DisableAutoSizing; + RestrictionBrowserView.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.DoShowRestrictionBrowser'){$ENDIF}; RestrictionBrowserView.SetIssueName(RestrictedName); if State>=iwgfShow then @@ -5891,9 +5782,8 @@ begin IDEWindowCreators.CreateForm(ComponentListForm,TComponentListForm, State=iwgfDisabled,OwningComponent); - ComponentListForm.Name:=NonModalIDEWindowNames[nmiwComponentList]; end else if State=iwgfDisabled then - ComponentListForm.DisableAutoSizing; + ComponentListForm.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.DoShowComponentList'){$ENDIF}; if State>=iwgfShow then IDEWindowCreators.ShowForm(ComponentListForm,State=iwgfShowOnTop); end; @@ -5905,7 +5795,7 @@ State=iwgfDisabled,OwningComponent); JumpHistoryViewWin.OnSelectionChanged := @JumpHistoryViewSelectionChanged; end else if State=iwgfDisabled then - JumpHistoryViewWin.DisableAutoSizing; + JumpHistoryViewWin.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.DoShowJumpHistory'){$ENDIF}; if State>=iwgfShow then IDEWindowCreators.ShowForm(JumpHistoryViewWin,State=iwgfShowOnTop); end; @@ -6162,7 +6052,6 @@ Result.OnLoadProjectInfo:=@OnLoadProjectInfoFromXMLConfig; Result.OnSaveProjectInfo:=@OnSaveProjectInfoToXMLConfig; Result.OnSaveUnitSessionInfo:=@OnSaveProjectUnitSessionInfo; - Result.OnGetTestDirectory:=@OnProjectGetTestDirectory; Result.OnChangeProjectInfoFile:=@OnProjectChangeInfoFile; Result.IDEOptions.OnBeforeRead:=@DoProjectOptionsBeforeRead; Result.IDEOptions.OnAfterWrite:=@DoProjectOptionsAfterWrite; @@ -6260,7 +6149,7 @@ // check if it is a directory if DirPathExistsCached(AFileName) then begin - debugln(['TMainIDE.DoOpenProjectFile file is a directory']); + debugln(['Error: (lazarus) [TMainIDE.DoOpenProjectFile] file is a directory']); exit; end; @@ -6275,7 +6164,7 @@ DiskFilename:=CodeToolBoss.DirectoryCachePool.FindDiskFilename(AFilename); if DiskFilename<>AFilename then begin // the case is different - DebugLn(['TMainIDE.DoOpenProjectFile Fixing file name: ',AFilename,' -> ',DiskFilename]); + DebugLn(['Warning: (lazarus) [TMainIDE.DoOpenProjectFile] Fixing file name: ',AFilename,' -> ',DiskFilename]); AFilename:=DiskFilename; end; @@ -6288,7 +6177,7 @@ Ext:='.lpi'; end; - if (not FileUtil.FileIsText(AFilename,FileReadable)) and FileReadable then + if (not FileIsText(AFilename,FileReadable)) and FileReadable then begin ACaption:=lisFileNotText; AText:=Format(lisFileDoesNotLookLikeATextFileOpenItAnyway,[AFilename,LineEnding,LineEnding]); @@ -6373,6 +6262,12 @@ Result:=SourceFileMgr.AddActiveUnitToProject; end; +function TMainIDE.DoAddUnitToProject(AEditor: TSourceEditorInterface + ): TModalResult; +begin + Result := SourceFileMgr.AddUnitToProject(AEditor); +end; + function TMainIDE.DoRemoveFromProjectDialog: TModalResult; Begin Result:=SourceFileMgr.RemoveFromProjectDialog; @@ -6402,7 +6297,7 @@ Result:=mrCancel; if not (ToolStatus in [itNone,itDebugger,itBuilder]) then begin if ConsoleVerbosity>0 then - DebugLn('TMainIDE.DoSaveForBuild ToolStatus forbids it: ',dbgs(ToolStatus)); + DebugLn('Error: (lazarus) [TMainIDE.DoSaveForBuild] ToolStatus forbids it: ',dbgs(ToolStatus)); Result:=mrAbort; exit; end; @@ -6420,14 +6315,14 @@ Project1.UpdateExecutableType; if Result<>mrOk then begin if ConsoleVerbosity>0 then - DebugLn('TMainIDE.DoSaveForBuild project saving failed'); + DebugLn('Error: (lazarus) [TMainIDE.DoSaveForBuild] project saving failed'); exit; end; Result:=PkgBoss.DoSaveAllPackages([]); if Result<>mrOK then if ConsoleVerbosity>0 then - debugln(['TMainIDE.DoSaveForBuild PkgBoss.DoSaveAllPackages failed']); + debugln(['Error: (lazarus) [TMainIDE.DoSaveForBuild] PkgBoss.DoSaveAllPackages failed']); // get non IDE disk changes InvalidateFileStateCache; @@ -6530,7 +6425,7 @@ end; function TMainIDE.DoBuildProject(const AReason: TCompileReason; - Flags: TProjectBuildFlags): TModalResult; + Flags: TProjectBuildFlags; FinalizeResources: boolean): TModalResult; var SrcFilename: string; ToolBefore: TProjectCompilationToolOptions; @@ -6550,13 +6445,13 @@ StartTime: TDateTime; begin if DoAbortBuild(true)<>mrOK then begin - debugln(['TMainIDE.DoBuildProject DoAbortBuild failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] DoAbortBuild failed']); exit(mrCancel); end; Result:=SourceFileMgr.PrepareForCompileWithMsg; if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject PrepareForCompile failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] PrepareForCompile failed']); exit; end; @@ -6566,7 +6461,7 @@ // warn if nothing to do Result:=CheckCompileReasons(AReason,Project1.CompilerOptions,false); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject CheckCompileReasons negative']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] CheckCompileReasons negative']); exit; end; end; @@ -6585,7 +6480,7 @@ try Result:=DoSaveForBuild(AReason); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject DoSaveForBuild failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] DoSaveForBuild failed']); exit; end; @@ -6604,7 +6499,7 @@ // now building can start: call handler Result:=DoCallModalFunctionHandler(lihtProjectBuilding); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject handler lihtProjectBuilding negative']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] handler lihtProjectBuilding negative']); exit; end; @@ -6621,7 +6516,7 @@ if not (pbfDoNotCompileDependencies in Flags) then begin Result:=DoCallModalFunctionHandler(lihtProjectDependenciesCompiling); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject handler lihtProjectDependenciesCompiling negative']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] handler lihtProjectDependenciesCompiling negative']); exit; end; PkgFlags:=[pcfDoNotSaveEditorFiles]; @@ -6630,12 +6525,12 @@ Result:=PkgBoss.DoCompileProjectDependencies(Project1,PkgFlags); if Result <> mrOk then begin - debugln(['TMainIDE.DoBuildProject PkgBoss.DoCompileProjectDependencies failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] PkgBoss.DoCompileProjectDependencies failed']); exit; end; Result:=DoCallModalFunctionHandler(lihtProjectDependenciesCompiled); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject handler lihtProjectDependenciesCompiled negative']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] handler lihtProjectDependenciesCompiled negative']); exit; end; end; @@ -6644,7 +6539,7 @@ Result:=DoWarnAmbiguousFiles; if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject DoWarnAmbiguousFiles negative']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] DoWarnAmbiguousFiles negative']); exit; end; @@ -6658,13 +6553,13 @@ if (pbfOnlyIfNeeded in Flags) and (not (pfAlwaysBuild in Project1.Flags)) then begin if Result=mrNo then begin - debugln(['TMainIDE.DoBuildProject MainBuildBoss.DoCheckIfProjectNeedsCompilation nothing to be done']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] MainBuildBoss.DoCheckIfProjectNeedsCompilation nothing to be done']); Result:=mrOk; exit; end; if Result<>mrYes then begin - debugln(['TMainIDE.DoBuildProject MainBuildBoss.DoCheckIfProjectNeedsCompilation failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] MainBuildBoss.DoCheckIfProjectNeedsCompilation failed']); exit; end; end; @@ -6686,15 +6581,13 @@ end; Result:=ForceDirectoryInteractive(UnitOutputDirectory,[mbRetry]); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject ForceDirectoryInteractive "',UnitOutputDirectory,'" failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] ForceDirectoryInteractive "',UnitOutputDirectory,'" failed']); exit; end; end; // create target output directory - TargetExeName := Project1.CompilerOptions.CreateTargetFilename(Project1.MainFilename); - if Project1.IsVirtual and (not FilenameIsAbsolute(TargetExeName)) then - TargetExeName := GetTestBuildDirectory + TargetExeName; + TargetExeName := Project1.CompilerOptions.CreateTargetFilename; TargetExeDirectory:=ExtractFilePath(TargetExeName); if (FilenameIsAbsolute(TargetExeDirectory)) and (not DirPathExistsCached(TargetExeDirectory)) then begin @@ -6706,7 +6599,7 @@ end; Result:=ForceDirectoryInteractive(TargetExeDirectory,[mbRetry]); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject ForceDirectoryInteractive "',TargetExeDirectory,'" failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] ForceDirectoryInteractive "',TargetExeDirectory,'" failed']); exit; end; end; @@ -6717,12 +6610,12 @@ then begin Result:=CreateApplicationBundle(TargetExeName, Project1.GetTitleOrName); if not (Result in [mrOk,mrIgnore]) then begin - debugln(['TMainIDE.DoBuildProject CreateApplicationBundle "',TargetExeName,'" failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] CreateApplicationBundle "',TargetExeName,'" failed']); exit; end; Result:=CreateAppBundleSymbolicLink(TargetExeName); if not (Result in [mrOk,mrIgnore]) then begin - debugln(['TMainIDE.DoBuildProject CreateAppBundleSymbolicLink "',TargetExeName,'" failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] CreateAppBundleSymbolicLink "',TargetExeName,'" failed']); exit; end; end; @@ -6730,7 +6623,7 @@ // update project resource files if not Project1.ProjResources.Regenerate(Project1.MainFilename, False, True, TargetExeDirectory) then begin - debugln(['TMainIDE.DoBuildProject ProjResources.Regenerate failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] ProjResources.Regenerate failed']); exit; end; @@ -6744,7 +6637,7 @@ aCompileHint); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject CompilerOptions.ExecuteBefore.Execute failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] CompilerOptions.ExecuteBefore.Execute failed']); exit; end; end; @@ -6762,12 +6655,12 @@ CompilerFilename:=Project1.GetCompilerFilename; // Hint: use absolute paths, because some external tools resolve symlinked directories CompilerParams := - Project1.CompilerOptions.MakeOptionsString(SrcFilename,[ccloAbsolutePaths]) + Project1.CompilerOptions.MakeOptionsString([ccloAbsolutePaths]) + ' ' + PrepareCmdLineOption(SrcFilename); // write state file, to avoid building clean every time Result:=Project1.SaveStateFile(CompilerFilename,CompilerParams,false); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject SaveStateFile before compile failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] SaveStateFile before compile failed']); exit; end; @@ -6778,27 +6671,28 @@ pbfSkipLinking in Flags, pbfSkipAssembler in Flags,aCompileHint); if ConsoleVerbosity>=0 then - debugln(['TMainIDE.DoBuildProject compiler time in s: ',(Now-StartTime)*86400]); + debugln(['Hint: (lazarus) [TMainIDE.DoBuildProject] compiler time in s: ',(Now-StartTime)*86400]); + DoCallBuildingFinishedHandler(lihtProjectBuildingFinished, Self, Result=mrOk); if Result<>mrOk then begin // save state, so that next time the project is not compiled clean Project1.LastCompilerFilename:=CompilerFilename; Project1.LastCompilerParams:=CompilerParams; Project1.LastCompilerFileDate:=FileAgeCached(CompilerFilename); - debugln(['TMainIDE.DoBuildProject Compile failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] Compile failed']); exit; end; // compilation succeded -> write state file IsComplete:=[pbfSkipLinking,pbfSkipAssembler,pbfSkipTools]*Flags=[]; Result:=Project1.SaveStateFile(CompilerFilename,CompilerParams,IsComplete); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject SaveStateFile after compile failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] SaveStateFile after compile failed']); exit; end; // update project .po file Result:=UpdateProjectPOFile(Project1); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject UpdateProjectPOFile failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] UpdateProjectPOFile failed']); exit; end; @@ -6823,13 +6717,14 @@ lisProject2+lisExecutingCommandAfter,aCompileHint); if Result<>mrOk then begin - debugln(['TMainIDE.DoBuildProject CompilerOptions.ExecuteAfter.Execute failed']); + debugln(['Error: (lazarus) [TMainIDE.DoBuildProject] CompilerOptions.ExecuteAfter.Execute failed']); exit; end; end; end; - Project1.ProjResources.DoAfterBuild(AReason, Project1.IsVirtual); + if FinalizeResources then + Project1.ProjResources.DoAfterBuild(AReason, Project1.IsVirtual); finally // check sources DoCheckFilesOnDisk; @@ -6850,7 +6745,7 @@ if Interactive then begin if IDEQuestionDialog(lisBuilding, lisTheIDEIsStillBuilding, - mtConfirmation, [mrAbort, lisKMAbortBuilding, mrNo, lisContinueBuilding]) + mtConfirmation, [mrAbort, lisKMAbortBuilding, 'IsDefault', mrNo, lisContinueBuilding]) <> mrAbort then exit; @@ -6896,7 +6791,7 @@ (Project1.RunParameterOptions.HostApplicationFilename<>'')) and (pfRunnable in Project1.Flags) and (Project1.MainUnitID >= 0) ) then begin - debugln(['TMainIDE.DoInitProjectRun Project can not run:', + debugln(['Error: (lazarus) [TMainIDE.DoInitProjectRun] Project can not run:', ' pfRunnable=',pfRunnable in Project1.Flags, ' MainUnitID=',Project1.MainUnitID, ' Launchable=',(Project1.CompilerOptions.ExecutableType=cetProgram) or @@ -6922,13 +6817,15 @@ end; // Build project first - debugln('TMainIDE.DoInitProjectRun Check build ...'); + if ConsoleVerbosity>0 then + debugln('Hint: (lazarus) TMainIDE.DoInitProjectRun Check build ...'); if DoBuildProject(crRun,[pbfOnlyIfNeeded]) <> mrOk then Exit; // Check project build ProgramFilename := MainBuildBoss.GetProjectTargetFilename(Project1); - DebugLn(['TMainIDE.DoInitProjectRun ProgramFilename=',ProgramFilename]); + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) TMainIDE.DoInitProjectRun ProgramFilename=',ProgramFilename]); if ((DebugClass = nil) or DebugClass.RequiresLocalExecutable) and not FileExistsUTF8(ProgramFilename) then begin @@ -6947,7 +6844,7 @@ function TMainIDE.DoRunProject: TModalResult; begin - DebugLn('[TMainIDE.DoRunProject] INIT'); + DebugLn('Hint: (lazarus) [TMainIDE.DoRunProject] INIT'); if (DoInitProjectRun <> mrOK) or (ToolStatus <> itDebugger) @@ -6955,19 +6852,21 @@ Result := mrAbort; Exit; end; - debugln('[TMainIDE.DoRunProject] Debugger=',EnvironmentOptions.DebuggerConfig.DebuggerClass); + debugln('Hint: (lazarus) [TMainIDE.DoRunProject] Debugger=',EnvironmentOptions.DebuggerConfig.DebuggerClass); Result := mrCancel; Result := DebugBoss.StartDebugging; - DebugLn('[TMainIDE.DoRunProject] END'); + DebugLn('Hint: (lazarus) [TMainIDE.DoRunProject] END'); end; procedure TMainIDE.DoRestart; +{$ifdef darwin} const DarwinStartlazBundlePath = 'lazarus.app/Contents/Resources/startlazarus.app/Contents/MacOS/'; +{$endif} procedure StartStarter; var @@ -7005,13 +6904,13 @@ ' --lazarus-pid='+IntToStr(GetProcessID) + ' '+ GetCommandLineParameters(Params, False); - DebugLn('CommandLine 1 : %s', [CmdLine]); + DebugLn('Hint: (lazarus) CommandLine 1 : %s', [CmdLine]); if (pos(PrimaryConfPathOptLong, CmdLine) = 0) and (pos(PrimaryConfPathOptShort, CmdLine) = 0) then CmdLine := CmdLine + ' "' + PrimaryConfPathOptLong + GetPrimaryConfigPath+'"'; - DebugLn('CommandLine 2 : %s', [CmdLine]); + DebugLn('Hint: (lazarus) CommandLine 2 : %s', [CmdLine]); StartLazProcess.CommandLine := CmdLine; StartLazProcess.Execute; finally @@ -7022,7 +6921,7 @@ var CanClose: boolean; begin - DebugLn(['TMainIDE.DoRestart ']); + DebugLn(['Hint: (lazarus) TMainIDE.DoRestart ']); CanClose:=true; MainIDEBar.OnCloseQuery(Self, CanClose); if not CanClose then exit; @@ -7035,6 +6934,19 @@ end; end; +procedure TMainIDE.HandleLayoutChanged(Sender: TObject); +begin + MainIDEBar.RefreshCoolbar; + MainIDEBar.DoSetViewComponentPalette(EnvironmentOptions.Desktop.ComponentPaletteOptions.Visible); + // to be able to calculate IDE height correctly, the ComponentPalette + // has to have some valid height if it is visible + if EnvironmentOptions.Desktop.ComponentPaletteOptions.Visible + and Assigned(MainIDEBar.ComponentPageControl.ActivePage) + and (MainIDEBar.ComponentPageControl.ActivePage.Width<=0) then + MainIDEBar.DoSetMainIDEHeight(MainIDEBar.WindowState = wsMaximized, 55); + MainIDEBar.SetMainIDEHeight; +end; + procedure TMainIDE.DoExecuteRemoteControl; procedure OpenFiles(Files: TStrings); @@ -7047,7 +6959,7 @@ begin if (Files=nil) or (Files.Count=0) then exit; ProjectLoaded:=Project1<>nil; - DebugLn(['TMainIDE.DoExecuteRemoteControl.OpenFiles ProjectLoaded=',ProjectLoaded]); + DebugLn(['Hint: (lazarus) TMainIDE.DoExecuteRemoteControl.OpenFiles ProjectLoaded=',ProjectLoaded]); // open project (only the last in the list) AProjectFilename:=''; @@ -7060,7 +6972,7 @@ Files.Delete(i); // remove from the list AProjectFilename:=CleanAndExpandFilename(AProjectFilename); if FileExistsUTF8(AProjectFilename) then begin - DebugLn(['TMainIDE.DoExecuteRemoteControl.OpenFiles AProjectFilename="',AProjectFilename,'"']); + DebugLn(['Hint: (lazarus) TMainIDE.DoExecuteRemoteControl.OpenFiles AProjectFilename="',AProjectFilename,'"']); if (Project1<>nil) and (CompareFilenames(AProjectFilename,Project1.ProjectInfoFile)=0) then begin @@ -7083,7 +6995,7 @@ if Files<>nil then begin for i:=0 to Files.Count-1 do begin AFilename:=CleanAndExpandFilename(Files.Strings[i]); - DebugLn(['TMainIDE.DoExecuteRemoteControl.OpenFiles AFilename="',AFilename,'"']); + DebugLn(['Hint: (lazarus) TMainIDE.DoExecuteRemoteControl.OpenFiles AFilename="',AFilename,'"']); if CompareFileExt(AFilename,'.lpk',false)=0 then begin if PkgBoss.DoOpenPackageFile(AFilename,[pofAddToRecent],true)=mrAbort then @@ -7118,7 +7030,7 @@ try List.LoadFromFile(Filename); except - DebugLn(['TMainIDE.DoExecuteRemoteControl reading file failed: ',Filename]); + DebugLn(['Error: (lazarus) TMainIDE.DoExecuteRemoteControl reading file failed: ',Filename]); end; DeleteFileUTF8(Filename); FRemoteControlFileAge:=-1; @@ -7178,7 +7090,7 @@ try // prepare static auto install packages // create inherited compiler options - Builder.PackageOptions:=PackageGraph.GetIDEInstallPackageOptions(InheritedOptionStrings); + Builder.PackageOptions:=PackageGraph.GetIDEInstallPackageOptions(InheritedOptionStrings{%H-}); Result:=Builder.SaveIDEMakeOptions(MiscellaneousOptions.BuildLazProfiles.Current, Flags+[blfOnlyIDE]); @@ -7212,7 +7124,13 @@ Result:=DoSaveAll([sfDoNotSaveVirtualFiles]); if Result<>mrOk then begin - DebugLn('TMainIDE.DoBuildLazarus: failed because saving failed'); + DebugLn('Error: (lazarus) TMainIDE.DoBuildLazarus: failed because saving failed'); + exit; + end; + + Result:=DoCallModalFunctionHandler(lihtLazarusBuilding); + if Result<>mrOk then begin + debugln(['Error: (lazarus) TMainIDE.DoBuildLazarusSub handler lihtLazarusBuilding negative']); exit; end; @@ -7225,7 +7143,7 @@ ToolStatus:=itBuilder; with MiscellaneousOptions do try - if MainBuildBoss.HasGUI then begin + if HasGUI then begin // Note: while the IDE is running the user might run another IDE, // => save install list, so that starting the new IDE shows the right // package list @@ -7243,7 +7161,7 @@ fBuilder.PackageOptions:=''; Result:=fBuilder.MakeLazarus(BuildLazProfiles.Current, [blfDontBuild]); if Result<>mrOk then begin - DebugLn('TMainIDE.DoBuildLazarus: Clean all failed.'); + DebugLn('Error: (lazarus) TMainIDE.DoBuildLazarus: Clean all failed.'); exit; end; end; @@ -7252,19 +7170,19 @@ // compile auto install static packages Result:=PkgBoss.DoCompileAutoInstallPackages(PkgCompileFlags+[pcfDoNotSaveEditorFiles],false); if Result<>mrOk then begin - DebugLn('TMainIDE.DoBuildLazarusSub: Compile AutoInstall Packages failed.'); + DebugLn('Error: (lazarus) TMainIDE.DoBuildLazarusSub: Compile AutoInstall Packages failed.'); exit; end; // create uses section addition for lazarus.pp Result:=PkgBoss.DoSaveAutoInstallConfig; if Result<>mrOk then begin - DebugLn('TMainIDE.DoBuildLazarus: Save AutoInstall Config failed.'); + DebugLn('Error: (lazarus) TMainIDE.DoBuildLazarus: Save AutoInstall Config failed.'); exit; end; // create inherited compiler options - fBuilder.PackageOptions:=PackageGraph.GetIDEInstallPackageOptions(InheritedOptionStrings); + fBuilder.PackageOptions:=PackageGraph.GetIDEInstallPackageOptions(InheritedOptionStrings{%H-}); // check ambiguous units CodeToolBoss.GetFPCVersionForDirectory(EnvironmentOptions.GetParsedLazarusDirectory, @@ -7276,7 +7194,7 @@ InheritedOptionStrings[icoUnitPath], CompiledUnitExt,'IDE'); if Result<>mrOk then begin - DebugLn('TMainIDE.DoBuildLazarus: Check UnitPath for ambiguous pascal files failed.'); + DebugLn('Error: (lazarus) TMainIDE.DoBuildLazarus: Check UnitPath for ambiguous pascal files failed.'); exit; end; @@ -7285,7 +7203,7 @@ Result:=fBuilder.SaveIDEMakeOptions(BuildLazProfiles.Current, IDEBuildFlags-[blfDontClean]+[blfBackupOldExe]); if Result<>mrOk then begin - DebugLn('TMainIDE.DoBuildLazarus: Save IDEMake options failed.'); + DebugLn('Error: (lazarus) TMainIDE.DoBuildLazarus: Save IDEMake options failed.'); exit; end; @@ -7293,6 +7211,7 @@ SourceEditorManager.ClearErrorLines; IDEBuildFlags:=IDEBuildFlags+[blfUseMakeIDECfg,blfDontClean]; Result:=fBuilder.MakeLazarus(BuildLazProfiles.Current, IDEBuildFlags); + DoCallBuildingFinishedHandler(lihtLazarusBuildingFinished, Self, Result=mrOk); if Result<>mrOk then exit; if fBuilder.ProfileChanged then begin @@ -7371,7 +7290,8 @@ end; end; -function TMainIDE.DoBuildFile(ShowAbort: Boolean): TModalResult; +function TMainIDE.DoBuildFile(ShowAbort: Boolean; Filename: string + ): TModalResult; var ActiveSrcEdit: TSourceEditor; ActiveUnitInfo: TUnitInfo; @@ -7382,22 +7302,36 @@ ProgramFilename: string; Params: string; ExtTool: TIDEExternalToolOptions; - Filename: String; OldToolStatus: TIDEToolStatus; begin Result:=mrCancel; if ToolStatus<>itNone then exit; ActiveSrcEdit:=nil; - if not BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[]) then exit; + ActiveUnitInfo:=nil; Result:=DoSaveProject([]); if Result<>mrOk then exit; + if Filename='' then begin + if not BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[]) then exit; + if not FilenameIsAbsolute(ActiveUnitInfo.Filename) then begin + Result:=DoSaveEditorFile(ActiveSrcEdit,[sfCheckAmbiguousFiles]); + if Result<>mrOk then exit; + end; + Filename:=ActiveUnitInfo.Filename; + end else begin + Filename:=TrimFilename(Filename); + if not FilenameIsAbsolute(Filename) then begin + IDEMessageDialog('Error','Unable to run file "'+Filename+'". Please save it first.', + mtError,[mbOk]); + exit; + end; + end; if ExternalTools.RunningCount=0 then IDEMessagesWindow.Clear; DirectiveList:=TStringList.Create; OldToolStatus:=ToolStatus; ToolStatus:=itBuilder; try - Result:=GetIDEDirectives(ActiveUnitInfo,DirectiveList); + Result:=GetIDEDirectives(Filename,DirectiveList); if Result<>mrOk then exit; // get values from directive list @@ -7406,7 +7340,7 @@ IDEDirectiveNames[idedBuildWorkingDir], ''); if BuildWorkingDir='' then - BuildWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename); + BuildWorkingDir:=ExtractFilePath(Filename); if not GlobalMacroList.SubstituteStr(BuildWorkingDir) then begin Result:=mrCancel; exit; @@ -7436,7 +7370,7 @@ ExtTool:=TIDEExternalToolOptions.Create; try - ExtTool.Title:='Build File '+ActiveUnitInfo.Filename; + ExtTool.Title:='Build File '+Filename; ExtTool.WorkingDirectory:=BuildWorkingDir; ExtTool.CmdLineParams:=Params; ExtTool.Executable:=ProgramFilename; @@ -7459,7 +7393,7 @@ end; end; -function TMainIDE.DoRunFile: TModalResult; +function TMainIDE.DoRunFile(Filename: string): TModalResult; var ActiveSrcEdit: TSourceEditor; ActiveUnitInfo: TUnitInfo; @@ -7475,50 +7409,65 @@ Params: string; ExtTool: TIDEExternalToolOptions; DirectiveList: TStringList; + Code: TCodeBuffer; begin Result:=mrCancel; if ToolStatus<>itNone then exit; ActiveSrcEdit:=nil; - if not BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[]) then exit; - if not FilenameIsAbsolute(ActiveUnitInfo.Filename) then begin - Result:=DoSaveEditorFile(ActiveSrcEdit,[sfCheckAmbiguousFiles]); - if Result<>mrOk then exit; + ActiveUnitInfo:=nil; + if Filename='' then begin + if not BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[]) then exit; + if not FilenameIsAbsolute(ActiveUnitInfo.Filename) then begin + Result:=DoSaveEditorFile(ActiveSrcEdit,[sfCheckAmbiguousFiles]); + if Result<>mrOk then exit; + end; + Filename:=ActiveUnitInfo.Filename; + end else begin + Filename:=TrimFilename(Filename); + if not FilenameIsAbsolute(Filename) then begin + IDEMessageDialog('Error','Unable to run file "'+Filename+'". Please save it first.', + mtError,[mbOk]); + exit; + end; end; DirectiveList:=TStringList.Create; try - Result:=GetIDEDirectives(ActiveUnitInfo,DirectiveList); + Result:=GetIDEDirectives(Filename,DirectiveList); if Result<>mrOk then exit; - if ActiveUnitInfo.Source.LineCount>0 then - FirstLine:=ActiveUnitInfo.Source.GetLine(0,false) + Code:=CodeToolBoss.LoadFile(Filename,true,false); + if Code=nil then exit; + if Code.LineCount>0 then + FirstLine:=Code.GetLine(0,false) else FirstLine:=''; HasShebang:=copy(FirstLine,1,2)='#!'; DefRunFlags:=IDEDirRunFlagDefValues; - if HasShebang then Exclude(DefRunFlags,idedrfBuildBeforeRun); + if HasShebang then + Exclude(DefRunFlags,idedrfBuildBeforeRun); RunFlags:=GetIDEDirRunFlagFromString( GetIDEStringDirective(DirectiveList,IDEDirectiveNames[idedRunFlags],''), DefRunFlags); AlwaysBuildBeforeRun:=idedrfBuildBeforeRun in RunFlags; if AlwaysBuildBeforeRun then begin - Result:=DoBuildFile(true); + Result:=DoBuildFile(true,Filename); if Result<>mrOk then exit; end; RunWorkingDir:=GetIDEStringDirective(DirectiveList, IDEDirectiveNames[idedRunWorkingDir],''); if RunWorkingDir='' then - RunWorkingDir:=ExtractFilePath(ActiveUnitInfo.Filename); + RunWorkingDir:=ExtractFilePath(Filename); if not GlobalMacroList.SubstituteStr(RunWorkingDir) then begin Result:=mrCancel; exit; end; if HasShebang then - DefRunCommand:='instantfpc'+ExeExt+' '+ActiveUnitInfo.Filename + DefRunCommand:='instantfpc'+ExeExt+' '+Filename else DefRunCommand:=IDEDirDefaultRunCommand; RunCommand:=GetIDEStringDirective(DirectiveList, - IDEDirectiveNames[idedRunCommand], - DefRunCommand); + IDEDirectiveNames[idedRunCommand], + DefRunCommand); if (not GlobalMacroList.SubstituteStr(RunCommand)) then exit(mrCancel); if (RunCommand='') then @@ -7530,10 +7479,12 @@ ExtTool:=TIDEExternalToolOptions.Create; try - ExtTool.Title:='Run File '+ActiveUnitInfo.Filename; + ExtTool.Title:='Run File '+Filename; ExtTool.WorkingDirectory:=RunWorkingDir; ExtTool.CmdLineParams:=Params; ExtTool.Executable:=ProgramFilename; + if idedrfMessages in RunFlags then + ExtTool.Scanners.Add(SubToolDefault); if RunExternalTool(ExtTool) then Result:=mrOk else @@ -7547,7 +7498,7 @@ end; end; -function TMainIDE.DoConfigBuildFile: TModalResult; +function TMainIDE.DoConfigureBuildFile: TModalResult; var ActiveSrcEdit: TSourceEditor; ActiveUnitInfo: TUnitInfo; @@ -7565,7 +7516,7 @@ end; DirectiveList:=TStringList.Create; try - Result:=GetIDEDirectives(ActiveUnitInfo,DirectiveList); + Result:=GetIDEDirectives(ActiveUnitInfo.Filename,DirectiveList); if Result<>mrOk then exit; BuildFileDialog:=TBuildFileDialog.Create(nil); @@ -7577,7 +7528,7 @@ BuildFileDialog.Filename:= CreateRelativePath(ActiveUnitInfo.Filename,Project1.ProjectDirectory); if BuildFileDialog.ShowModal<>mrOk then begin - DebugLn(['TMainIDE.DoConfigBuildFile cancelled']); + DebugLn(['Error: (lazarus) TMainIDE.DoConfigBuildFile cancelled']); Result:=mrCancel; exit; end; @@ -7615,23 +7566,29 @@ Result:=mrOk; end; -function TMainIDE.GetIDEDirectives(AnUnitInfo: TUnitInfo; - DirectiveList: TStrings): TModalResult; +function TMainIDE.GetIDEDirectives(aFilename: string; DirectiveList: TStrings + ): TModalResult; var - CodeResult: Boolean; + AnUnitInfo: TUnitInfo; + Code: TCodeBuffer; begin Result:=mrCancel; - if FilenameIsPascalSource(AnUnitInfo.Filename) then begin + if FilenameIsPascalSource(aFilename) then begin // parse source for IDE directives (i.e. % comments) - CodeResult:=CodeToolBoss.GetIDEDirectives(AnUnitInfo.Source,DirectiveList,@FilterIDEDirective); - if not CodeResult then begin + Result:=LoadCodeBuffer(Code,aFilename,[lbfUpdateFromDisk],false); + if Result<>mrOk then exit; + if not CodeToolBoss.GetIDEDirectives(Code,DirectiveList,@FilterIDEDirective) + then begin DoJumpToCodeToolBossError; exit; end; - end else begin + end else if Project1<>nil then begin + AnUnitInfo:=Project1.UnitInfoWithFilename(aFilename); + if AnUnitInfo=nil then exit; StringToStringList(AnUnitInfo.CustomData['IDEDirectives'],DirectiveList); //DebugLn(['TMainIDE.GetIDEDirectives ',dbgstr(DirectiveList.Text)]); - end; + end else + exit; Result:=mrOk; end; @@ -7665,7 +7622,7 @@ InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Title:=lisSelectDFMFiles; OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; - OpenDialog.Filter:=rsFormDataFileDfm+'|'+dlgAllFiles+'|'+GetAllFilesMask; + OpenDialog.Filter:=dlgFilterDelphiForm+' (*.dfm)|*.dfm|'+dlgFilterAll+'|'+GetAllFilesMask; if OpenDialog.Execute and (OpenDialog.Files.Count>0) then begin For I := 0 to OpenDialog.Files.Count-1 do begin AFilename:=ExpandFileNameUTF8(OpenDialog.Files.Strings[i]); @@ -7816,6 +7773,14 @@ //----------------------------------------------------------------------------- +procedure TMainIDE.GetUnit(SourceEditor: TSourceEditor; out UnitInfo: TUnitInfo); +begin + if SourceEditor=nil then + UnitInfo:=nil + else + UnitInfo := Project1.UnitWithEditorComponent(SourceEditor); +end; + procedure TMainIDE.GetCurrentUnit(out ActiveSourceEditor:TSourceEditor; out ActiveUnitInfo:TUnitInfo); begin @@ -7826,14 +7791,13 @@ ActiveUnitInfo := Project1.UnitWithEditorComponent(ActiveSourceEditor); end; -procedure TMainIDE.GetDesignerUnit(ADesigner: TDesigner; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); +procedure TMainIDE.GetDesignerUnit(ADesigner: TDesigner; out + ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); begin + ActiveSourceEditor:=nil; + ActiveUnitInfo:=nil; if ADesigner<>nil then begin GetUnitWithForm(ADesigner.Form,ActiveSourceEditor,ActiveUnitInfo); - end else begin - ActiveSourceEditor:=nil; - ActiveUnitInfo:=nil; end; end; @@ -7870,8 +7834,8 @@ Result:=nil; end; -procedure TMainIDE.GetObjectInspectorUnit( - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); +procedure TMainIDE.GetObjectInspectorUnit(out + ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); begin ActiveSourceEditor:=nil; ActiveUnitInfo:=nil; @@ -7882,11 +7846,13 @@ ActiveSourceEditor,ActiveUnitInfo); end; -procedure TMainIDE.GetUnitWithForm(AForm: TCustomForm; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); +procedure TMainIDE.GetUnitWithForm(AForm: TCustomForm; out + ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); var AComponent: TComponent; begin + ActiveSourceEditor:=nil; + ActiveUnitInfo:=nil; if AForm<>nil then begin if (AForm.Designer=nil) then RaiseException('TMainIDE.GetUnitWithForm AForm.Designer'); @@ -7894,15 +7860,14 @@ if AComponent=nil then RaiseException('TMainIDE.GetUnitWithForm AComponent=nil'); GetUnitWithPersistent(AComponent,ActiveSourceEditor,ActiveUnitInfo); - end else begin - ActiveSourceEditor:=nil; - ActiveUnitInfo:=nil; end; end; -procedure TMainIDE.GetUnitWithPersistent(APersistent: TPersistent; - var ActiveSourceEditor: TSourceEditor; var ActiveUnitInfo: TUnitInfo); +procedure TMainIDE.GetUnitWithPersistent(APersistent: TPersistent; out + ActiveSourceEditor: TSourceEditor; out ActiveUnitInfo: TUnitInfo); begin + ActiveSourceEditor:=nil; + ActiveUnitInfo:=nil; if (APersistent<>nil) and (Project1<>nil) then begin ActiveUnitInfo:=Project1.FirstUnitWithComponent; while ActiveUnitInfo<>nil do begin @@ -7914,8 +7879,6 @@ ActiveUnitInfo:=ActiveUnitInfo.NextUnitWithComponent; end; end; - ActiveSourceEditor:=nil; - ActiveUnitInfo:=nil; end; function TMainIDE.DoCheckFilesOnDisk(Instantaneous: boolean): TModalResult; @@ -7943,7 +7906,7 @@ function AddToCaption(const CurrentCaption, CaptAddition: string): String; begin - if EnvironmentOptions.IDETitleStartsWithProject then + if EnvironmentOptions.Desktop.IDETitleStartsWithProject then Result := CaptAddition + ' - ' + CurrentCaption else Result := CurrentCaption + ' - ' + CaptAddition; @@ -7965,7 +7928,7 @@ ProjectName := Project1.GetTitleOrName; if ProjectName <> '' then begin - if EnvironmentOptions.IDEProjectDirectoryInIdeTitle then + if EnvironmentOptions.Desktop.IDEProjectDirectoryInIdeTitle then begin DirName := ExtractFileDir(Project1.ProjectInfoFile); if DirName <> '' then @@ -7975,8 +7938,8 @@ else ProjectName := lisnewProject; NewTitle := AddToCaption(NewCaption, ProjectName); - if EnvironmentOptions.IDETitleIncludesBuildMode and (Project1.BuildModes.Count > 1) - then + if EnvironmentOptions.Desktop.IDETitleIncludesBuildMode + and (Project1.BuildModes.Count > 1) then ProjectName:= ProjectName + ' - ' +Project1.ActiveBuildMode.GetCaption; NewCaption := AddToCaption(NewCaption, ProjectName); end; @@ -8030,7 +7993,7 @@ for i:=0 to HiddenWindowsOnRun.Count-1 do begin AForm:=TCustomForm(HiddenWindowsOnRun[i]); - if (AForm.Designer <> nil) or (csDesigning in AForm.ComponentState) then + if IsFormDesign(AForm) then begin {$IFDEF DEBUGHIDEIDEWINDOWSONRUN} DebugLn('TMainIDE.HideIDE: HIDING VIA LCLINTF ',dbgsName(AForm),' WindowState ',dbgs(AForm.WindowState), @@ -8085,7 +8048,7 @@ for i := HiddenWindowsOnRun.Count - 1 downto 0 do begin AForm:=TCustomForm(HiddenWindowsOnRun[i]); - if (csDesigning in AForm.ComponentState) or (AForm.Designer <> nil) then + if IsFormDesign(AForm) then begin {$IFDEF DEBUGHIDEIDEWINDOWSONRUN} DebugLn('TMainIDE.UnhideIDE: Showing LCLIntf AForm ',dbgsName(AForm), @@ -8116,6 +8079,42 @@ Application.BringToFront; end; +procedure TMainIDE.UpdateBookmarkCommands(Sender: TObject); +var + se: TSourceEditor; + MarkDesc: string; + MarkComand: TIDECommand; + BookMarkID, i, BookMarkX, BookMarkY: Integer; + BookmarkAvail: Boolean; +begin + if not UpdateBookmarkCommandsStamp.Changed(BookmarksStamp) then + Exit; + + for BookMarkID:=0 to 9 do begin + MarkDesc:=' '+IntToStr(BookMarkID); + BookmarkAvail:=False; + i := 0; + while i < SourceEditorManager.SourceEditorCount do begin + se:=SourceEditorManager.SourceEditors[i]; + BookMarkX:=0; BookMarkY:=0; + if se.EditorComponent.GetBookMark(BookMarkID,BookMarkX,BookMarkY) then + begin + MarkDesc:=MarkDesc+': '+se.PageName+' ('+IntToStr(BookMarkY)+','+IntToStr(BookMarkX)+')'; + BookmarkAvail:=True; + break; + end; + inc(i); + end; + // goto book mark item + MarkComand:=IDECommandList.FindIDECommand(ecGotoMarker0+BookMarkID); + MarkComand.Caption:=uemBookmarkN+MarkDesc; + MarkComand.Enabled:=BookmarkAvail; + // set book mark item + MarkComand:=IDECommandList.FindIDECommand(ecToggleMarker0+BookMarkID); + MarkComand.Caption:=uemToggleBookmark+MarkDesc; + end; +end; + procedure TMainIDE.SaveIncludeLinks; var AFilename: string; @@ -8133,7 +8132,7 @@ if DisplayState <> dsSource then begin DoShowSourceOfActiveDesignerForm; end else begin - DoShowDesignerFormOfCurrentSrc; + DoShowDesignerFormOfCurrentSrc(false); end; end; @@ -8147,24 +8146,93 @@ debugln(['TMainIDE.DoBringToFrontFormOrInspector old=',dbgs(DisplayState)]); {$ENDIF} case DisplayState of - dsInspector: DoShowDesignerFormOfCurrentSrc; + dsInspector: DoShowDesignerFormOfCurrentSrc(false); dsInspector2: DoShowSourceOfActiveDesignerForm; else DoShowInspector(iwgfShowOnTop); end; end; -procedure TMainIDE.DoShowDesignerFormOfCurrentSrc; +procedure TMainIDE.DoShowDesignerFormOfCurrentSrc(AComponentPaletteClassSelected: Boolean); +var + LForm: TCustomForm; +begin + DoShowDesignerFormOfSrc(SourceEditorManager.ActiveEditor, LForm); + if LForm <> nil then + DoCallShowDesignerFormOfSourceHandler(lihtShowDesignerFormOfSource, LForm, SourceEditorManager.ActiveEditor, AComponentPaletteClassSelected); +end; + +procedure TMainIDE.DoShowDesignerFormOfSrc(AEditor: TSourceEditorInterface); +var + LForm: TCustomForm; +begin + DoShowDesignerFormOfSrc(AEditor, LForm); +end; + +procedure TMainIDE.DoShowMethod(AEditor: TSourceEditorInterface; + const AMethodName: String); +var + //ActiveSrcEdit: TSourceEditor; + ActiveUnitInfo: TUnitInfo; + NewSource: TCodeBuffer; + NewX, NewY, NewTopLine: integer; + AClassName: string; + AInheritedMethodName: string; + AnInheritedClassName: string; + CurMethodName: String; +begin + if SourceEditorManagerIntf.ActiveEditor <> AEditor then + SourceEditorManagerIntf.ActiveEditor := AEditor; + + GetUnit(TSourceEditor(AEditor), ActiveUnitInfo); + if not BeginCodeTool(TSourceEditor(AEditor),ActiveUnitInfo,[ctfSwitchToFormSource]) + then exit; + {$IFDEF IDE_DEBUG} + debugln(''); + debugln('[TMainIDE.OnPropHookShowMethod] ************ "',AMethodName,'" ',ActiveUnitInfo.Filename); + {$ENDIF} + + AClassName:=ActiveUnitInfo.Component.ClassName; + CurMethodName:=AMethodName; + + if IsValidIdentPair(AMethodName,AnInheritedClassName,AInheritedMethodName) + then begin + AEditor:=nil; + ActiveUnitInfo:=Project1.UnitWithComponentClassName(AnInheritedClassName); + if ActiveUnitInfo=nil then begin + IDEMessageDialog(lisMethodClassNotFound, + Format(lisClassOfMethodNotFound, ['"', AnInheritedClassName, '"', '"', + AInheritedMethodName, '"']), + mtError,[mbCancel],''); + exit; + end; + AClassName:=AnInheritedClassName; + CurMethodName:=AInheritedMethodName; + end; + + if CodeToolBoss.JumpToPublishedMethodBody(ActiveUnitInfo.Source, + AClassName,CurMethodName, + NewSource,NewX,NewY,NewTopLine) then + begin + DoJumpToCodePosition(AEditor, ActiveUnitInfo, + NewSource, NewX, NewY, NewTopLine, [jfAddJumpPoint, jfFocusEditor]); + end else begin + DebugLn(['Error: (lazarus) TMainIDE.OnPropHookShowMethod failed finding the method in code']); + DoJumpToCodeToolBossError; + raise Exception.Create(lisUnableToShowMethod+' '+lisPleaseFixTheErrorInTheMessageWindow); + end; +end; + +procedure TMainIDE.DoShowDesignerFormOfSrc(AEditor: TSourceEditorInterface; + out AForm: TCustomForm); var - ActiveSourceEditor: TSourceEditor; ActiveUnitInfo: TUnitInfo; - AForm: TCustomForm; UnitCodeBuf: TCodeBuffer; begin {$IFDEF VerboseIDEDisplayState} debugln(['TMainIDE.DoShowDesignerFormOfCurrentSrc ']); {$ENDIF} - GetCurrentUnit(ActiveSourceEditor,ActiveUnitInfo); + GetUnit(TSourceEditor(AEditor), ActiveUnitInfo); if (ActiveUnitInfo = nil) then exit; if (ActiveUnitInfo.Component=nil) @@ -8199,13 +8267,18 @@ procedure TMainIDE.DoShowSourceOfActiveDesignerForm; var ActiveUnitInfo: TUnitInfo; + ActiveSourceEditor: TSourceEditor; begin if SourceEditorManager.SourceEditorCount = 0 then exit; - if LastFormActivated <> nil then begin - ActiveUnitInfo := Project1.UnitWithComponent(LastFormActivated.Designer.LookupRoot); + if LastFormActivated <> nil then + begin + GetCurrentUnit(ActiveSourceEditor,ActiveUnitInfo); + if (ActiveUnitInfo <> nil) and (ActiveUnitInfo.OpenEditorInfoCount > 0) then - SourceEditorManager.ActiveEditor := - TSourceEditor(ActiveUnitInfo.OpenEditorInfo[0].EditorComponent); + begin + SourceEditorManager.ActiveEditor := TSourceEditor(ActiveUnitInfo.OpenEditorInfo[0].EditorComponent); + DoCallNotifyHandler(lihtShowSourceOfActiveDesignerForm, SourceEditorManager.ActiveEditor); + end; end; SourceEditorManager.ShowActiveWindowOnTop(False); {$IFDEF VerboseIDEDisplayState} @@ -8315,6 +8388,8 @@ IDEWindowCreators.ShowForm(MessagesView,true); SourceEditorManager.ShowActiveWindowOnTop(True); end; + if IDETabMaster <> nil then + IDETabMaster.JumpToCompilerMessage(SrcEdit); SrcEdit.EditorComponent.LogicalCaretXY:=LogCaretXY; SrcEdit.EditorComponent.TopLine:=TopLine; SrcEdit.CenterCursorHoriz(hcmSoftKeepEOL); @@ -8333,11 +8408,12 @@ end; end; -procedure TMainIDE.DoJumpToNextError(DirectionDown: boolean); +procedure TMainIDE.DoJumpToNextCompilerMessage( + aMinUrgency: TMessageLineUrgency; DirectionDown: boolean); var Msg: TMessageLine; begin - if not MessagesView.SelectNextUrgentMessage(mluError,true,DirectionDown) then + if not MessagesView.SelectNextUrgentMessage(aMinUrgency,true,DirectionDown) then exit; Msg:=MessagesView.GetSelectedLine; if Msg=nil then exit; @@ -8355,10 +8431,9 @@ AnEditorInfo: TUnitEditorInfo; begin Result:=false; - if pos('(',SearchResultsView.GetSelectedText) > 0 then + AFileName:= SearchResultsView.GetSourceFileName; + if AFilename<>'' then begin - AFileName:= SearchResultsView.GetSourceFileName; - if AFilename='' then exit; LogCaretXY:= SearchResultsView.GetSourcePositon; OpenFlags:=[ofOnlyIfExists,ofRegularFile]; if MainBuildBoss.IsTestUnitFilename(AFilename) then begin @@ -8432,9 +8507,13 @@ State=iwgfDisabled,LazarusIDE.OwningComponent); SearchresultsView.OnSelectionChanged := OnSearchResultsViewSelectionChanged; end else if State=iwgfDisabled then - SearchResultsView.DisableAutoSizing; + SearchResultsView.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.DoShowSearchResultsView'){$ENDIF}; if State>=iwgfShow then + begin IDEWindowCreators.ShowForm(SearchresultsView,State=iwgfShowOnTop); + if (State=iwgfShowOnTop) and SearchresultsView.SearchInListEdit.CanFocus then + SearchresultsView.SearchInListEdit.SetFocus; + end; end; function TMainIDE.GetTestBuildDirectory: string; @@ -8487,12 +8566,14 @@ RegisteredComponent:=IDEComponentPalette.Selected; end; -procedure TMainIDE.OnDesignerComponentAdded(Sender: TObject); +procedure TMainIDE.OnDesignerComponentAdded(Sender: TObject; + AComponent: TComponent; ARegisteredComponent: TRegisteredComponent); var Grid: TOICustomPropertyGrid; Row: TOIPropertyGridRow; begin - TComponentPalette(IDEComponentPalette).DoAfterComponentAdded; + TComponentPalette(IDEComponentPalette).DoAfterComponentAdded(TDesigner(Sender).LookupRoot, + AComponent, ARegisteredComponent); if EnvironmentOptions.CreateComponentFocusNameProperty and (ObjectInspector1<>nil) then begin if (ObjectInspector1.ShowFavorites) and (EnvironmentOptions.SwitchToFavoritesOITab) then @@ -8528,7 +8609,8 @@ BinCompStream: TMemoryStream; c: Char; begin - DebugLn('TMainIDE.OnDesignerPasteComponent A'); + if ConsoleVerbosity>0 then + DebugLn('Hint: (lazarus) TMainIDE.OnDesignerPasteComponent A'); // check the class of the new component NewClassName:=FindLFMClassName(TxtCompStream); @@ -8543,7 +8625,8 @@ end; // check if there is a valid parent - if (ParentControl=nil) and ARegComp.IsTControl then begin + if (ParentControl=nil) and ARegComp.ComponentClass.InheritsFrom(TControl) then + begin IDEMessageDialog(lisControlNeedsParent, Format(lisTheClassIsATControlAndCanNotBePastedOntoANonContro,[NewClassName,LineEnding]), mtError,[mbCancel]); @@ -8574,7 +8657,7 @@ FormEditor1.CreateChildComponentsFromStream(BinCompStream, ARegComp.ComponentClass,LookupRoot,ParentControl,NewComponents); if NewComponents.Count=0 then begin - DebugLn('TMainIDE.OnDesignerPasteComponent FAILED FormEditor1.CreateChildComponentFromStream'); + DebugLn('Error: (lazarus) TMainIDE.OnDesignerPasteComponent FAILED FormEditor1.CreateChildComponentFromStream'); exit; end; @@ -8595,9 +8678,10 @@ end; procedure TMainIDE.OnDesignerPersistentDeleted(Sender: TObject; APersistent: TPersistent); -// important: APersistent was freed, do not access it +// important: APersistent was freed, do not access its content, only the pointer begin if dfDestroyingForm in TDesigner(Sender).Flags then exit; + if APersistent=nil then ; if ObjectInspector1<>nil then ObjectInspector1.FillPersistentComboBox; end; @@ -8617,6 +8701,7 @@ if dfDestroyingForm in CurDesigner.Flags then exit; + ActiveSrcEdit:=nil; if not BeginCodeTool(CurDesigner,ActiveSrcEdit,ActiveUnitInfo, [ctfSwitchToFormSource]) then exit; ActiveForm:=CurDesigner.Form; @@ -8710,7 +8795,7 @@ DebugLn('***'); DebugLn('** TMainIDE.OnControlSelectionFormChanged: Calling UpdateIDEComponentPalette(true)'); {$ENDIF} - UpdateIDEComponentPalette(true); + MainIDEBar.UpdateIDEComponentPalette(true); end; procedure TMainIDE.OnGetDesignerSelection(const ASelection: TPersistentSelectionList); @@ -8750,6 +8835,7 @@ ActiveSrcEdit: TSourceEditor; ActiveUnitInfo: TUnitInfo; begin + if Manager<>CodeToolBoss then exit; ActiveSrcEdit:=nil; Abort:=not BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[]); end; @@ -8768,7 +8854,6 @@ // load caches MainBuildBoss.LoadFPCDefinesCaches; - CodeToolBoss.DefinePool.OnProgress:=@CodeToolBossProgress; CodeToolBoss.SourceCache.ExpirationTimeInDays:=365; CodeToolBoss.SourceCache.OnEncodeSaving:=@OnCodeBufferEncodeSaving; CodeToolBoss.SourceCache.OnDecodeLoaded:=@OnCodeBufferDecodeLoaded; @@ -8850,6 +8935,7 @@ Flags: TOpenFlags; CodeBuf: TCodeBuffer; begin + if Manager<>CodeToolBoss then exit; if OpenEditorsOnCodeToolChange then begin // open all sources in editor for i:=0 to Manager.SourceChangeCache.BuffersToModifyCount-1 do begin @@ -8884,6 +8970,7 @@ AnUnitInfo: TUnitInfo; MsgResult: TModalResult; begin + if Manager<>CodeToolBoss then exit; for i:=0 to CodeToolBoss.SourceChangeCache.BuffersToModifyCount-1 do begin SrcBuf:=CodeToolBoss.SourceChangeCache.BuffersToModify[i]; AnUnitInfo:=nil; @@ -8912,6 +8999,7 @@ Result:=nil; // check if SrcFilename is project file if Project1=nil then exit; + if TheUnitInFilename<>'' then exit; AnUnitInfo:=Project1.ProjectUnitWithFilename(SrcFilename); if AnUnitInfo=nil then exit; // SrcFilename is a project file @@ -8965,13 +9053,41 @@ procedure TMainIDE.OnCodeBufferEncodeSaving(Code: TCodeBuffer; const Filename: string; var Source: string); +var + OldSource, NewSource, Msg: String; + i, Line, Col: Integer; begin if (Code.DiskEncoding<>'') and (Code.MemEncoding<>'') and (Code.DiskEncoding<>Code.MemEncoding) then begin {$IFDEF VerboseIDEEncoding} DebugLn(['TMainIDE.OnCodeBufferEncodeSaving Filename=',Code.Filename,' Mem=',Code.MemEncoding,' to Disk=',Code.DiskEncoding]); {$ENDIF} + OldSource:=Source; Source:=ConvertEncoding(Source,Code.MemEncoding,Code.DiskEncoding); + //debugln(['TMainIDE.OnCodeBufferEncodeSaving ',dbgMemRange(PByte(Source),length(Source))]); + NewSource:=ConvertEncoding(Source,Code.DiskEncoding,Code.MemEncoding); + if OldSource<>NewSource then + begin + Line:=0; + for i:=1 to length(OldSource) do + if (i>length(NewSource)) or (OldSource[i]<>NewSource[i]) then + begin + SrcPosToLineCol(OldSource,i,Line,Col); + break; + end; + if Line=0 then + SrcPosToLineCol(OldSource,length(OldSource),Line,Col); + Msg:=Format(lisSavingFileAsLoosesCharactersAtLineColumn, [Filename, Code. + DiskEncoding, IntToStr(Line), IntToStr(Col)]); + if IDEMessageDialog(lisInsufficientEncoding,Msg, + mtWarning,[mbIgnore,mbCancel])<>mrIgnore + then begin + IDEMessagesWindow.AddCustomMessage(mluError, + Format(lisUnableToConvertToEncoding, [Code.DiskEncoding]), + Filename,Line,Col); + raise Exception.Create(Msg); + end; + end; end; end; @@ -8991,12 +9107,6 @@ end; end; -procedure TMainIDE.CodeToolBossProgress(Sender: TObject; Index, - MaxIndex: integer; const Msg: string; var Abort: boolean); -begin - //DebugLn(['TMainIDE.CodeToolBossProgress ',Index,' ',MaxIndex]); -end; - procedure TMainIDE.OnCodeToolBossGetIndenterExamples(Sender: TObject; Code: TCodeBuffer; Step: integer; var CodeBuffers: TFPList; var ExpandedFilenames: TStrings); @@ -9142,7 +9252,7 @@ FuncData^.Result:=Project1.CompilerOptions.GetUnitPath(false) else begin FuncData^.Result:='<unknown parameter for CodeTools Macro project:"'+Param+'">'; - debugln('TMainIDE.MacroFunctionProject WARNING: ',FuncData^.Result); + debugln('Warning: (lazarus) TMainIDE.MacroFunctionProject: ',FuncData^.Result); end; end; @@ -9177,7 +9287,7 @@ begin Result:=mrCancel; if NewSource=nil then begin - DebugLn(['TMainIDE.DoJumpToCodePosition ERROR: missing NewSource']); + DebugLn(['Error: (lazarus) TMainIDE.DoJumpToCodePosition missing NewSource']); DumpStack; exit; end; @@ -9297,6 +9407,58 @@ Result:=false; end; +procedure TMainIDE.LazInstancesStartNewInstance(const aFiles: TStrings; + var Result: TStartNewInstanceResult; var outSourceWindowHandle: HWND); +var + xParams: TDoDropFilesAsyncParams; + I: Integer; +begin + if EnvironmentOptions.MultipleInstances = mioAlwaysStartNew then + begin + Result:=ofrStartNewInstance; + exit; + end; + + if aFiles.Count > 0 then + begin + //there are files to open + if (not IsWindowEnabled(Application.MainForm.Handle) or//check that main is active + (Application.ModalLevel > 0))//check that no modal window is opened + then + begin + if EnvironmentOptions.MultipleInstances = mioForceSingleInstance then + Result := ofrForceSingleInstanceModalError + else + Result := ofrModalError; + end else + Result := ofrDoNotStart; + end else + begin + //no files to open + if EnvironmentOptions.MultipleInstances = mioForceSingleInstance then + Result := ofrDoNotStart + else + Result := ofrStartNewInstance; + end; + + if (SourceEditorManager.ActiveSourceWindow <> nil) + and (SourceEditorManager.ActiveSourceWindow.HandleAllocated) + then + outSourceWindowHandle := SourceEditorManager.ActiveSourceWindow.Handle; + + if Result in [ofrStartNewInstance, ofrModalError, ofrForceSingleInstanceModalError] then + Exit; + + //show up the current IDE and open files (if there are any) + xParams := TDoDropFilesAsyncParams.Create(Self);//we need direct response, do not wait to get the files opened! + SetLength(xParams.FileNames, aFiles.Count); + for I := 0 to aFiles.Count-1 do + xParams.FileNames[I] := aFiles[I]; + xParams.WindowIndex := -1; + xParams.BringToFront := True; + Application.QueueAsyncCall(@DoDropFilesAsync, PtrInt(xParams)); +end; + procedure TMainIDE.ApplyCodeToolChanges; begin // all changes were handled automatically by events, just clear the logs @@ -9340,26 +9502,18 @@ ErrorTopLine: integer; AnUnitInfo: TUnitInfo; AnEditorInfo: TUnitEditorInfo; - Msg: TMessageLine; begin if (Screen.GetCurrentModalForm<>nil) or (CodeToolBoss.ErrorMessage='') then begin SourceFileMgr.UpdateSourceNames; - debugln('TMainIDE.DoJumpToCodeToolBossError No errormessage'); + if ConsoleVerbosity>0 then + debugln('Note: (lazarus) TMainIDE.DoJumpToCodeToolBossError No errormessage'); exit; end; // syntax error -> show error and jump // show error in message view SourceFileMgr.ArrangeSourceEditorAndMessageView(false); - MessagesView.ClearCustomMessages; - if CodeToolBoss.ErrorCode<>nil then begin - Msg:=MessagesView.AddCustomMessage(mluError,CodeToolBoss.ErrorMessage, - CodeToolBoss.ErrorCode.Filename,CodeToolBoss.ErrorLine,CodeToolBoss.ErrorColumn, - 'Codetools'); - Msg.Flags:=Msg.Flags+[mlfLeftToken]; - end else - Msg:=MessagesView.AddCustomMessage(mluError,CodeToolBoss.ErrorMessage,'Codetools'); - MessagesView.SelectMsgLine(Msg); + DoShowCodeToolBossError; // jump to error in source editor if CodeToolBoss.ErrorCode<>nil then begin @@ -9547,7 +9701,7 @@ Result:=ShowFindRenameIdentifierDialog(DeclarationUnitInfo.Source.Filename, DeclarationCaretXY,true,Rename,nil); if Result<>mrOk then begin - debugln('TMainIDE.DoFindRenameIdentifier failed: user cancelled dialog'); + debugln('Error: (lazarus) TMainIDE.DoFindRenameIdentifier failed: user cancelled dialog'); exit; end; @@ -9591,7 +9745,7 @@ // add user defined extra files Result:=AddExtraFiles(Files); if Result<>mrOk then begin - debugln('TMainIDE.DoFindRenameIdentifier unable to add user defined extra files'); + debugln('Error: (lazarus) TMainIDE.DoFindRenameIdentifier unable to add user defined extra files'); exit; end; @@ -9601,7 +9755,7 @@ if CodeToolBoss.ErrorMessage<>'' then DoJumpToCodeToolBossError; if Result<>mrOk then begin - debugln('TMainIDE.DoFindRenameIdentifier GatherIdentifierReferences failed'); + debugln('Error: (lazarus) TMainIDE.DoFindRenameIdentifier GatherIdentifierReferences failed'); exit; end; @@ -9610,7 +9764,7 @@ Result:=GatherFPDocReferencesForPascalFiles(Files,DeclarationUnitInfo.Source, DeclarationCaretXY,ListOfLazFPDocNode); if Result<>mrOk then begin - debugln('TMainIDE.DoFindRenameIdentifier GatherFPDocReferences failed'); + debugln('Error: (lazarus) TMainIDE.DoFindRenameIdentifier GatherFPDocReferences failed'); exit; end; {$ENDIF} @@ -9635,7 +9789,7 @@ Identifier,Options.RenameTo, DeclarationUnitInfo.Source, @DeclarationCaretXY) then begin DoJumpToCodeToolBossError; - debugln('TMainIDE.DoFindRenameIdentifier unable to commit'); + debugln('Error: (lazarus) TMainIDE.DoFindRenameIdentifier unable to commit'); Result:=mrCancel; exit; end; @@ -9781,7 +9935,9 @@ LogCaretXY.X,LogCaretXY.Y); if not Result then begin if JumpToError then - DoJumpToCodeToolBossError; + DoJumpToCodeToolBossError + else + DoShowCodeToolBossError; exit; end; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoInitIdentCompletion B');{$ENDIF} @@ -9802,7 +9958,9 @@ Result:=ShowCodeContext(ActiveUnitInfo.Source); if not Result then begin if JumpToError then - DoJumpToCodeToolBossError; + DoJumpToCodeToolBossError + else + DoShowCodeToolBossError; exit; end; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoShowCodeContext B');{$ENDIF} @@ -10048,7 +10206,6 @@ // show make resourcestring dialog Result:=ShowMakeResStrDialog(StartPos,EndPos,StartCode, - CodeToolBoss.Positions, NewIdentifier,NewIdentValue,NewSourceLines, SectionCode,SectionCaretXY,InsertPolicy); if (Result<>mrOk) then exit; @@ -10103,8 +10260,16 @@ function TMainIDE.DoFindInFiles: TModalResult; begin - Result:=mrOk; FindInFilesDialog.FindInFilesPerDialog(Project1); + Result:=FindInFilesDialog.ModalResult; + if (Result=mrOK) and (FindInFilesDialog.Options*[fifReplace, fifReplaceAll] = []) then + begin + //copy settings into FindReplaceDialog to use for F3 (if replace function wasn't used). + // Those settings won't be used when FindReplaceDialog is shown again because + // the FindReplaceDialog settings are always loaded from InputHistories. + LazFindReplaceDialog.FindText := FindInFilesDialog.FindText; + LazFindReplaceDialog.Options := FindInFilesDialog.SynSearchOptions; + end; end; procedure TMainIDE.DoCompleteCodeAtCursor; @@ -10193,6 +10358,15 @@ SourceEditorManager.ShowActiveWindowOnTop(True); end; +procedure TMainIDE.LazInstancesGetOpenedProjectFileName( + var outProjectFileName: string); +begin + if Project1<>nil then + outProjectFileName := Project1.MainFilename + else + outProjectFileName := ''; +end; + procedure TMainIDE.OnSrcNotebookEditorActived(Sender: TObject); var ActiveUnitInfo: TUnitInfo; @@ -10214,7 +10388,6 @@ UpdateSaveMenuItemsAndButtons(false); MainIDEBar.itmViewToggleFormUnit.Enabled := Assigned(ActiveUnitInfo.Component) or (ActiveUnitInfo.ComponentName<>''); - MainIDEBar.ToggleFormSpeedBtn.Enabled := MainIDEBar.itmViewToggleFormUnit.Enabled; end; procedure TMainIDE.OnSrcNotebookEditorPlaceBookmark(Sender: TObject; var Mark: TSynEditMark); @@ -10261,7 +10434,6 @@ procedure TMainIDE.OnSrcNotebookEditorDoSetBookmark(Sender: TObject; ID: Integer; Toggle: Boolean); var ActEdit, OldEdit: TSourceEditor; - Cmd: TIDEMenuCommand; OldX, OldY: integer; NewXY: TPoint; SetMark: Boolean; @@ -10281,7 +10453,7 @@ AnUnitInfo := TUnitInfo(Project1.Bookmarks.UnitInfoForBookmarkWithIndex(ID)); if (AnUnitInfo <> nil) and (AnUnitInfo.OpenEditorInfoCount > 0) then OldEdit := TSourceEditor(AnUnitInfo.OpenEditorInfo[0].EditorComponent); - if (OldEdit<>nil) and OldEdit.EditorComponent.GetBookMark(ID,OldX,OldY) then + if (OldEdit<>nil) and OldEdit.EditorComponent.GetBookMark(ID,OldX{%H-},OldY{%H-}) then begin if (not Toggle) and (OldX=NewXY.X) and (OldY=NewXY.Y) then exit; // no change @@ -10291,8 +10463,10 @@ end; if SetMark then ActEdit.EditorComponent.SetBookMark(ID,NewXY.X,NewXY.Y); - Cmd:=SrcEditSubMenuToggleBookmarks[ID] as TIDEMenuCommand; - Cmd.Checked := SetMark; + + {$push}{$R-} // range check off + Inc(BookmarksStamp); + {$pop} end; procedure TMainIDE.OnSrcNotebookEditorDoGotoBookmark(Sender: TObject; ID: Integer; Backward: Boolean); @@ -10510,12 +10684,12 @@ procedure TMainIDE.OnSrcNotebookCurCodeBufferChanged(Sender: TObject); begin - if SourceEditorManager.SourceEditorCount = 0 then Exit; - if CodeExplorerView<>nil then CodeExplorerView.CurrentCodeBufferChanged; + if CodeExplorerView<>nil then + CodeExplorerView.CurrentCodeBufferChanged; end; procedure TMainIDE.OnSrcNotebookShowHintForSource(SrcEdit: TSourceEditor; - ClientPos: TPoint; CaretPos: TPoint); + CaretPos: TPoint; AutoShown: Boolean); function CheckExpressionIsValid(var Expr: String): boolean; var @@ -10545,6 +10719,8 @@ HasHint: Boolean; p: SizeInt; Opts: TDBGEvaluateFlags; + AtomStartPos, AtomEndPos: integer; + AtomRect: TRect; begin //DebugLn(['TMainIDE.OnSrcNotebookShowHintForSource START']); if (SrcEdit=nil) then exit; @@ -10585,6 +10761,7 @@ Opts := []; if EditorOpts.DbgHintAutoTypeCastClass then Opts := [defClassAutoCast]; + DebugEval:=''; if not DebugBoss.Evaluate(Expression, DebugEval, DBGType, Opts) or (DebugEval = '') then DebugEval := '???'; // deference a pointer - maybe it is a class @@ -10594,6 +10771,7 @@ begin if DBGType.Value.AsPointer <> nil then begin + DebugEvalDerefer:=''; if DebugBoss.Evaluate(Expression + '^', DebugEvalDerefer, DBGTypeDerefer, Opts) then begin if Assigned(DBGTypeDerefer) and @@ -10625,7 +10803,16 @@ end; if HasHint then - SrcEdit.ActivateHint(ClientPos, BaseURL, SmartHintStr); + begin + //Find start of identifier + AtomRect := Rect(-1,-1,-1,-1); + SrcEdit.EditorComponent.GetWordBoundsAtRowCol(CaretPos, AtomStartPos, AtomEndPos); + AtomRect.TopLeft := SrcEdit.EditorComponent.RowColumnToPixels(Point(AtomStartPos, CaretPos.y)); + AtomRect.BottomRight := SrcEdit.EditorComponent.RowColumnToPixels(Point(AtomEndPos, CaretPos.y)); + Inc(AtomRect.Bottom, SrcEdit.EditorComponent.LineHeight); + + SrcEdit.ActivateHint(AtomRect, BaseURL, SmartHintStr, AutoShown); + end; end; procedure TMainIDE.OnSrcNoteBookActivated(Sender: TObject); @@ -10651,7 +10838,7 @@ DebugLn(['** TMainIDE.OnDesignerActivated: Calling UpdateIDEComponentPalette(true)', ', IDEStarted=', FIDEStarted, ' **']); {$ENDIF} - UpdateIDEComponentPalette(true); + MainIDEBar.UpdateIDEComponentPalette(true); end; procedure TMainIDE.OnDesignerCloseQuery(Sender: TObject); @@ -10782,7 +10969,8 @@ FRenamingComponents:=TFPList.Create; FRenamingComponents.Add(InheritedComponent); try - DebugLn(['RenameInheritedComponents ',dbgsName(InheritedComponent),' Owner=',dbgsName(InheritedComponent.Owner)]); + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) RenameInheritedComponents ',dbgsName(InheritedComponent),' Owner=',dbgsName(InheritedComponent.Owner)]); if Simulate then begin // only check if rename is possible if (InheritedComponent.Owner<>nil) @@ -10852,7 +11040,8 @@ Root,AComponent,Root.ClassName,NewName,PropInfo^.Name); if (CurMethodName=NewMethodName) then continue; // auto rename it - DebugLn(['RenameMethods OldMethodName="',DefaultName,'" NewMethodName="',NewMethodName,'"']); + if ConsoleVerbosity>0 then + DebugLn(['Hint: (lazarus) RenameMethods OldMethodName="',DefaultName,'" NewMethodName="',NewMethodName,'"']); // rename/create published method in source CTResult:=CodeToolBoss.RenamePublishedMethod(ActiveUnitInfo.Source, @@ -10869,7 +11058,7 @@ end else begin // unable to rename method in source // this is just a nice to have feature -> ignore the error - DebugLn(['TMainIDE.OnDesignerRenameComponent.RenameMethods failed OldMethodName="',CurMethodName,'" NewMethodName="',NewMethodName,'" Error=',CodeToolBoss.ErrorMessage]); + DebugLn(['Error: (lazarus) TMainIDE.OnDesignerRenameComponent.RenameMethods failed OldMethodName="',CurMethodName,'" NewMethodName="',NewMethodName,'" Error=',CodeToolBoss.ErrorMessage]); end; end; ApplyCodeToolChanges; @@ -10888,7 +11077,7 @@ s: String; OldOpenEditorsOnCodeToolChange: Boolean; begin - DebugLn('TMainIDE.OnDesignerRenameComponent Old=',AComponent.Name,':',AComponent.ClassName,' New=',NewName,' Owner=',dbgsName(AComponent.Owner)); + DebugLn('Hint: (lazarus) TMainIDE.OnDesignerRenameComponent Old=',AComponent.Name,':',AComponent.ClassName,' New=',NewName,' Owner=',dbgsName(AComponent.Owner)); if (not IsValidIdent(NewName)) or (NewName='') then raise Exception.Create(Format(lisComponentNameIsNotAValidIdentifier, [Newname])); if WordIsKeyWord.DoItCaseInsensitive(PChar(NewName)) @@ -11020,7 +11209,7 @@ begin ADesigner:=TDesigner(Sender); GetDesignerUnit(ADesigner,ASrcEdit,AnUnitInfo); - debugln('TMainIDE.OnDesignerViewLFM ',AnUnitInfo.Filename); + debugln('Hint: (lazarus) TMainIDE.OnDesignerSaveAsXML ',AnUnitInfo.Filename); SaveAsFileExt:='.xml'; SaveAsFilename:=ChangeFileExt(AnUnitInfo.Filename,SaveAsFileExt); @@ -11113,8 +11302,8 @@ Project1.JumpHistory.DeleteLast; end; -procedure TMainIDE.OnSrcNotebookJumpToHistoryPoint(var NewCaretXY: TPoint; - var NewTopLine: integer; var DestEditor: TSourceEditor; +procedure TMainIDE.OnSrcNotebookJumpToHistoryPoint(out NewCaretXY: TPoint; out + NewTopLine: integer; out DestEditor: TSourceEditor; JumpAction: TJumpHistoryAction); { How the HistoryIndex works: @@ -11142,6 +11331,8 @@ begin DestEditor := nil; NewCaretXY.Y:=-1; + NewCaretXY.X:=-1; + NewTopLine:=-1; JumpHistory:=Project1.JumpHistory; {$IFDEF VerboseJumpHistory} @@ -11251,14 +11442,6 @@ ActiveUnitInfo.Source,X,Y,NewSource,NewX,NewY,NewTopLine); end; -function TMainIDE.OnSrcNoteBookGetIndent(Sender: TObject; - SrcEditor: TSourceEditor; LogCaret, OldLogCaret: TPoint; - FirstLinePos, LastLinePos: Integer; Reason: TSynEditorCommand; - SetIndentProc: TSynBeautifierSetIndentProc): Boolean; -begin - Result := False; -end; - procedure TMainIDE.OnSrcNotebookReadOnlyChanged(Sender: TObject); var ActiveSourceEditor: TSourceEditor; @@ -11317,7 +11500,7 @@ begin if ObjectInspector1<>nil then begin if aDisableAutoSize then - ObjectInspector1.DisableAutoSizing; + ObjectInspector1.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.CreateObjectInspector'){$ENDIF}; exit; end; IDEWindowCreators.CreateForm(ObjectInspector1,TObjectInspectorDlg, @@ -11360,7 +11543,7 @@ end; end; -procedure TMainIDE.OnApplicationUserInput(Sender: TObject; Msg: Cardinal); +procedure TMainIDE.HandleApplicationUserInput(Sender: TObject; Msg: Cardinal); begin fUserInputSinceLastIdle:=true; if ToolStatus=itCodeTools then @@ -11368,7 +11551,7 @@ ToolStatus:=itCodeToolAborting; end; -procedure TMainIDE.OnApplicationIdle(Sender: TObject; var Done: Boolean); +procedure TMainIDE.HandleApplicationIdle(Sender: TObject; var Done: Boolean); var SrcEdit: TSourceEditor; AnUnitInfo: TUnitInfo; @@ -11429,7 +11612,6 @@ end; MainIDEBar.itmViewToggleFormUnit.Enabled := HasResources; end; - MainIDEBar.ToggleFormSpeedBtn.Enabled := MainIDEBar.itmViewToggleFormUnit.Enabled; DebugBoss.UpdateButtonsAndMenuItems; end; end; @@ -11453,62 +11635,32 @@ end; end; -procedure TMainIDE.OnApplicationDeActivate(Sender: TObject); +procedure TMainIDE.HandleApplicationDeActivate(Sender: TObject); var i: Integer; AForm: TCustomForm; begin - if EnvironmentOptions.SingleTaskBarButton and FApplicationIsActivate - and (MainIDEBar.WindowState=wsNormal) then + if EnvironmentOptions.Desktop.SingleTaskBarButton and MainIDEBar.ApplicationIsActivate + and (MainIDEBar.WindowState=wsNormal) then begin for i:=Screen.CustomFormCount-1 downto 0 do begin AForm:=Screen.CustomFormsZOrdered[i]; if (AForm.Parent=nil) and (AForm<>MainIDEBar) and (AForm.IsVisible) - and (AForm.Designer=nil) and (not (csDesigning in AForm.ComponentState)) + and not IsFormDesign(AForm) and not (fsModal in AForm.FormState) then LastActivatedWindows.Add(AForm); end; - FApplicationIsActivate:=false; - end; -end; - -procedure TMainIDE.OnMainBarActive(Sender: TObject); -var - i, FormCount: integer; - AForm: TCustomForm; -begin - if EnvironmentOptions.SingleTaskBarButton and not FApplicationIsActivate - and (MainIDEBar.WindowState=wsNormal) then - begin - FApplicationIsActivate:=true; - FormCount:=0; - for i:=Screen.CustomFormCount-1 downto 0 do - begin - AForm:=Screen.CustomForms[i]; - if (AForm.Parent=nil) and (AForm<>MainIDEBar) and (AForm.IsVisible) - and (AForm.Designer=nil) and (not (csDesigning in AForm.ComponentState)) - and not (fsModal in AForm.FormState) then - inc(FormCount); - end; - while LastActivatedWindows.Count>0 do - begin - AForm:=TCustomForm(LastActivatedWindows[0]); - if Assigned(AForm) and (not (CsDestroying in AForm.ComponentState)) and - AForm.IsVisible then - AForm.BringToFront; - LastActivatedWindows.Delete(0); - end; - MainIDEBar.BringToFront; + MainIDEBar.ApplicationIsActivate:=false; end; end; -procedure TMainIDE.OnApplicationActivate(Sender: TObject); +procedure TMainIDE.HandleApplicationActivate(Sender: TObject); begin DoCheckFilesOnDisk; end; -procedure TMainIDE.OnApplicationKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +procedure TMainIDE.HandleApplicationKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var Command: Word; aForm: TCustomForm; @@ -11550,17 +11702,17 @@ end; end; -procedure TMainIDE.OnApplicationQueryEndSession(var Cancel: Boolean); +procedure TMainIDE.HandleApplicationQueryEndSession(var Cancel: Boolean); begin Cancel := False; end; -procedure TMainIDE.OnApplicationEndSession(Sender: TObject); +procedure TMainIDE.HandleApplicationEndSession(Sender: TObject); begin QuitIDE; end; -procedure TMainIDE.OnScreenChangedForm(Sender: TObject; Form: TCustomForm); +procedure TMainIDE.HandleScreenChangedForm(Sender: TObject; Form: TCustomForm); var aForm: TForm; begin @@ -11571,24 +11723,38 @@ WindowMenuActiveForm := aForm; end; -procedure TMainIDE.OnScreenRemoveForm(Sender: TObject; AForm: TCustomForm); +procedure TMainIDE.HandleScreenChangedControl(Sender: TObject; LastControl: TControl); +var + LOwner: TComponent; +begin + if LastControl = nil then + Exit; + LOwner := LastControl.Owner; + if LOwner is TOICustomPropertyGrid then + case DisplayState of + dsSource: DisplayState:=dsInspector; + dsForm: DisplayState:=dsInspector2; + end; +end; + +procedure TMainIDE.HandleScreenRemoveForm(Sender: TObject; AForm: TCustomForm); begin HiddenWindowsOnRun.Remove(AForm); LastActivatedWindows.Remove(AForm); if WindowMenuActiveForm=AForm then WindowMenuActiveForm:=nil; - if fLastCompPaletteForm=AForm then - fLastCompPaletteForm:=nil; + if MainIDEBar.LastCompPaletteForm=AForm then + MainIDEBar.LastCompPaletteForm:=nil; end; -procedure TMainIDE.OnRemoteControlTimer(Sender: TObject); +procedure TMainIDE.HandleRemoteControlTimer(Sender: TObject); begin FRemoteControlTimer.Enabled:=false; DoExecuteRemoteControl; FRemoteControlTimer.Enabled:=true; end; -procedure TMainIDE.OnSelectFrame(Sender: TObject; var AComponentClass: TComponentClass); +procedure TMainIDE.HandleSelectFrame(Sender: TObject; var AComponentClass: TComponentClass); begin AComponentClass := DoSelectFrame; end; @@ -11855,6 +12021,11 @@ Result:=nil; end; +function TMainIDE.GetSelectedCompilerMessage: TMessageLine; +begin + Result:=MessagesView.GetSelectedLine; +end; + function TMainIDE.GetProjectFileWithDesigner(ADesigner: TIDesigner): TLazProjectFile; var AComponent: TComponent; @@ -11873,7 +12044,7 @@ begin ActiveSrcEdit:=nil; if not BeginCodeTool(ActiveSrcEdit,ActiveUnitInfo,[ctfSwitchToFormSource]) then - Exit; + Exit(False); {$IFDEF IDE_DEBUG} debugln(''); debugln('[TMainIDE.OnPropHookMethodExists] ************ ',AMethodName); @@ -12040,7 +12211,7 @@ Result:=FormEditor1.CreateNewJITMethod(ActiveUnitInfo.Component, AMethodName); end else begin - DebugLn(['TMainIDE.OnPropHookCreateMethod failed adding method "'+AMethodName+'" to source']); + DebugLn(['Error: (lazarus) TMainIDE.OnPropHookCreateMethod failed adding method "'+AMethodName+'" to source']); DoJumpToCodeToolBossError; raise Exception.Create(lisUnableToCreateNewMethod+' '+lisPleaseFixTheErrorInTheMessageWindow); end; @@ -12092,7 +12263,7 @@ DoJumpToCodePosition(ActiveSrcEdit, ActiveUnitInfo, NewSource, NewX, NewY, NewTopLine, [jfAddJumpPoint, jfFocusEditor]); end else begin - DebugLn(['TMainIDE.OnPropHookShowMethod failed finding the method in code']); + DebugLn(['Error: (lazarus) TMainIDE.OnPropHookShowMethod failed finding the method in code']); DoJumpToCodeToolBossError; raise Exception.Create(lisUnableToShowMethod+' '+lisPleaseFixTheErrorInTheMessageWindow); end; @@ -12167,7 +12338,7 @@ DebugLn('** TMainIDE.OnPropHookBeforeAddPersistent: Calling UpdateIDEComponentPalette(false) **'); {$ENDIF} // make sure the component palette shows only the available components - UpdateIDEComponentPalette(false); + MainIDEBar.UpdateIDEComponentPalette(false); exit; end; @@ -12217,7 +12388,8 @@ ClassUnitInfo: TUnitInfo; i: Integer; begin - DebugLn('TMainIDE.OnPropHookPersistentAdded A ',dbgsName(APersistent)); + if ConsoleVerbosity>0 then + DebugLn('Hint: (lazarus) TMainIDE.OnPropHookPersistentAdded A ',dbgsName(APersistent)); ADesigner:=nil; if APersistent is TComponent then AComponent:=TComponent(APersistent) @@ -12227,7 +12399,7 @@ if (RegComp=nil) and (AComponent<>nil) then begin ClassUnitInfo:=Project1.UnitWithComponentClass(TComponentClass(APersistent.ClassType)); if ClassUnitInfo=nil then begin - DebugLn('TMainIDE.OnPropHookPersistentAdded ',APersistent.ClassName, + DebugLn('Error: (lazarus) TMainIDE.OnPropHookPersistentAdded ',APersistent.ClassName, ' not registered'); exit; end; @@ -12291,7 +12463,7 @@ AComponent: TComponent; begin if APersistent=nil then exit; - DebugLn('TMainIDE.OnPropHookDeletePersistent A ',dbgsName(APersistent)); + DebugLn('Hint: (lazarus) TMainIDE.OnPropHookDeletePersistent A ',dbgsName(APersistent)); if APersistent is TComponent then begin AComponent:=TComponent(APersistent); ADesigner:=TDesigner(FindRootDesigner(AComponent)); @@ -12317,7 +12489,7 @@ // find the current unit AnUnitInfo:=Project1.UnitWithComponent(TComponent(GlobalDesignHook.LookupRoot)); if AnUnitInfo=nil then begin - DebugLn(['TMainIDE.OnPropHookObjectPropertyChanged LookupRoot not found']); + DebugLn(['Error: (lazarus) TMainIDE.OnPropHookObjectPropertyChanged LookupRoot not found']); exit; end; // find the reference unit @@ -12327,7 +12499,7 @@ if ReferenceDesigner=nil then exit; ReferenceUnitInfo:=Project1.UnitWithComponent(ReferenceDesigner.LookupRoot); if ReferenceUnitInfo=nil then begin - DebugLn(['TMainIDE.OnPropHookObjectPropertyChanged reference LookupRoot not found']); + DebugLn(['Error: (lazarus) TMainIDE.OnPropHookObjectPropertyChanged reference LookupRoot not found']); exit; end; if ReferenceUnitInfo<>AnUnitInfo then begin @@ -12366,7 +12538,7 @@ if not (GlobalDesignHook.LookupRoot is TComponent) then exit; AnUnitInfo:=Project1.UnitWithComponent(TComponent(GlobalDesignHook.LookupRoot)); if AnUnitInfo=nil then begin - DebugLn(['TMainIDE.OnPropHookAddDependency LookupRoot not found']); + DebugLn(['Error: (lazarus) TMainIDE.OnPropHookAddDependency LookupRoot not found']); exit; end; @@ -12496,7 +12668,7 @@ procedure TMainIDE.mnuEditSortBlockClicked(Sender: TObject); begin // MG: sometimes the function does nothing - debugln(['TMainIDE.mnuEditSortBlockClicked ',DbgSName(FindOwnerControl(GetFocus))]); + debugln(['Hint: (lazarus) TMainIDE.mnuEditSortBlockClicked ',DbgSName(FindOwnerControl(GetFocus))]); DoSourceEditorCommand(ecSelectionSort); end; @@ -12779,6 +12951,11 @@ DoFindDeclarationAtCursor; end; +procedure TMainIDE.ToolBarOptionsClick(Sender: TObject); +begin + DoOpenIDEOptions(TIdeCoolbarOptionsFrame, '', [], []); +end; + initialization {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('main.pp: initialization');{$ENDIF} diff -Nru lazarus-1.4.4+dfsg/ide/Makefile.fpc lazarus-1.6+dfsg/ide/Makefile.fpc --- lazarus-1.4.4+dfsg/ide/Makefile.fpc 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/ide/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -124,7 +124,6 @@ -Fu../components/memds/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) \ -Fu../components/tachart/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) \ -Fu../components/todolist/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) \ - -Fu../components/editortoolbar/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) \ -Fu../components/datetimectrls/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) \ -Fu../components/jcf2/IdePlugin/lazarus/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) \ -Fu../components/chmhelp/packages/help/lib/$(CPU_TARGET)-$(OS_TARGET)/$(LCL_PLATFORM) \ diff -Nru lazarus-1.4.4+dfsg/ide/makeresstrdlg.lfm lazarus-1.6+dfsg/ide/makeresstrdlg.lfm --- lazarus-1.4.4+dfsg/ide/makeresstrdlg.lfm 2015-03-15 12:34:25.000000000 +0000 +++ lazarus-1.6+dfsg/ide/makeresstrdlg.lfm 2015-05-22 20:20:40.000000000 +0000 @@ -1,28 +1,27 @@ object MakeResStrDialog: TMakeResStrDialog Left = 386 - Height = 551 + Height = 535 Top = 234 Width = 649 ActiveControl = CustomIdentifierCheckBox BorderIcons = [biSystemMenu] Caption = 'MakeResStrDialog' - ClientHeight = 551 + ClientHeight = 535 ClientWidth = 649 Constraints.MinHeight = 513 Constraints.MinWidth = 480 - OnCreate = FormCreate Position = poScreenCenter LCLVersion = '1.5' object ConversionGroupBox: TGroupBox Left = 6 - Height = 242 + Height = 224 Top = 6 Width = 637 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'ConversionGroupBox' - ClientHeight = 225 + ClientHeight = 204 ClientWidth = 633 TabOrder = 0 object ResStrSectionLabel: TLabel @@ -31,8 +30,8 @@ AnchorSideTop.Side = asrBottom Left = 12 Height = 15 - Top = 131 - Width = 106 + Top = 123 + Width = 99 Alignment = taRightJustify BorderSpacing.Top = 2 BorderSpacing.Around = 6 @@ -45,8 +44,8 @@ AnchorSideTop.Side = asrBottom Left = 12 Height = 15 - Top = 164 - Width = 151 + Top = 152 + Width = 143 Alignment = taRightJustify BorderSpacing.Top = 2 BorderSpacing.Around = 6 @@ -59,13 +58,13 @@ AnchorSideTop.Side = asrBottom AnchorSideBottom.Side = asrBottom Left = 6 - Height = 24 - Top = 195 - Width = 175 + Height = 19 + Top = 179 + Width = 160 BorderSpacing.Around = 6 Caption = 'AppendResStrRadioButton' Checked = True - TabOrder = 0 + TabOrder = 3 TabStop = True end object InsertContextSensitiveRadioButton: TRadioButton @@ -73,26 +72,26 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ResStrWithSameValuesCombobox AnchorSideTop.Side = asrBottom - Left = 434 - Height = 24 - Top = 195 - Width = 221 + Left = 400 + Height = 19 + Top = 179 + Width = 202 BorderSpacing.Around = 6 Caption = 'InsertContextSensitiveRadioButton' - TabOrder = 1 + TabOrder = 5 end object InsertAlphabeticallyResStrRadioButton: TRadioButton AnchorSideLeft.Control = AppendResStrRadioButton AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ResStrWithSameValuesCombobox AnchorSideTop.Side = asrBottom - Left = 187 - Height = 24 - Top = 195 - Width = 241 + Left = 172 + Height = 19 + Top = 179 + Width = 222 BorderSpacing.Around = 6 Caption = 'InsertAlphabeticallyResStrRadioButton' - TabOrder = 2 + TabOrder = 4 end object ResStrSectionComboBox: TComboBox AnchorSideLeft.Control = ResStrSectionLabel @@ -101,15 +100,15 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ConversionGroupBox AnchorSideRight.Side = asrBottom - Left = 124 - Height = 27 - Top = 129 - Width = 503 + Left = 117 + Height = 23 + Top = 121 + Width = 510 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 OnChange = ResStrSectionComboBoxChange - TabOrder = 3 + TabOrder = 1 Text = 'ResStrSectionComboBox' end object ResStrWithSameValuesCombobox: TComboBox @@ -119,37 +118,37 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ConversionGroupBox AnchorSideRight.Side = asrBottom - Left = 169 - Height = 27 - Top = 162 - Width = 458 + Left = 161 + Height = 23 + Top = 150 + Width = 466 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 OnChange = ResStrWithSameValuesComboboxChange - TabOrder = 4 + TabOrder = 2 Text = 'ResStrWithSameValuesCombobox' end object IdentifierGroupBox: TGroupBox Left = 6 - Height = 117 + Height = 109 Top = 6 Width = 621 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'IdentifierGroupBox' - ClientHeight = 100 + ClientHeight = 89 ClientWidth = 617 - TabOrder = 5 + TabOrder = 0 object IdentLengthLabel: TLabel AnchorSideTop.Control = IdentLengthComboBox AnchorSideTop.Side = asrCenter AnchorSideRight.Control = IdentLengthComboBox - Left = 408 + Left = 413 Height = 15 - Top = 42 - Width = 97 + Top = 35 + Width = 92 Alignment = taRightJustify Anchors = [akTop, akRight] BorderSpacing.Top = 2 @@ -163,8 +162,8 @@ AnchorSideTop.Side = asrCenter Left = 6 Height = 15 - Top = 42 - Width = 91 + Top = 35 + Width = 84 Alignment = taRightJustify BorderSpacing.Top = 2 BorderSpacing.Around = 6 @@ -178,28 +177,28 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = IdentifierGroupBox AnchorSideRight.Side = asrBottom - Left = 103 - Height = 25 - Top = 69 - Width = 508 + Left = 96 + Height = 23 + Top = 60 + Width = 515 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 Enabled = False OnChange = IdentifierEditChange - TabOrder = 0 + TabOrder = 3 Text = 'IdentifierEdit' end object CustomIdentifierCheckBox: TCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 + Height = 19 Top = 6 Width = 605 Align = alTop BorderSpacing.Around = 6 Caption = 'CustomIdentifierCheckBox' OnChange = CustomIdentifierCheckBoxClick - TabOrder = 1 + TabOrder = 0 end object IdentLengthComboBox: TComboBox AnchorSideTop.Control = CustomIdentifierCheckBox @@ -207,12 +206,12 @@ AnchorSideRight.Control = IdentifierGroupBox AnchorSideRight.Side = asrBottom Left = 511 - Height = 27 - Top = 36 + Height = 23 + Top = 31 Width = 100 Anchors = [akTop, akRight] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 OnChange = IdentLengthComboBoxChange TabOrder = 2 Text = 'IdentLengthComboBox' @@ -222,45 +221,44 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = CustomIdentifierCheckBox AnchorSideTop.Side = asrBottom - Left = 103 - Height = 27 - Top = 36 + Left = 96 + Height = 23 + Top = 31 Width = 100 BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 OnChange = IdentPrefixComboBoxChange - TabOrder = 3 + TabOrder = 1 Text = 'IdentPrefixComboBox' end end end object CodePanel: TPanel - AnchorSideBottom.Control = CancelButton Left = 6 - Height = 251 - Top = 254 + Height = 261 + Top = 236 Width = 637 Align = alClient BorderSpacing.Around = 6 BevelOuter = bvNone - ClientHeight = 251 + ClientHeight = 261 ClientWidth = 637 TabOrder = 1 object SrcPreviewGroupBox: TGroupBox AnchorSideBottom.Control = Splitter1 Left = 0 - Height = 99 + Height = 135 Top = 0 Width = 637 Align = alTop - Anchors = [akTop, akLeft, akRight, akBottom] Caption = 'SrcPreviewGroupBox' - ClientHeight = 82 + ClientHeight = 115 ClientWidth = 633 + Constraints.MinHeight = 80 TabOrder = 0 inline SrcPreviewSynEdit: TSynEdit Left = 6 - Height = 70 + Height = 103 Top = 6 Width = 621 Align = alClient @@ -275,7 +273,7 @@ TabOrder = 0 BookMarkOptions.Xoffset = -18 Gutter.Visible = False - Gutter.Width = 57 + Gutter.Width = 59 Gutter.MouseActions = < item ClickCount = ccAny @@ -701,13 +699,14 @@ MouseLinkColor.Foreground = clBlue LineHighlightColor.Background = clNone LineHighlightColor.Foreground = clNone + WantTabs = False inline TSynGutterPartList object TSynGutterMarks Width = 24 MouseActions = <> end object TSynGutterLineNumber - Width = 17 + Width = 19 MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone @@ -784,17 +783,19 @@ end object StringConstGroupBox: TGroupBox Left = 0 - Height = 147 - Top = 104 + Height = 121 + Top = 140 Width = 637 Align = alClient + Anchors = [akLeft, akRight] Caption = 'StringConstGroupBox' - ClientHeight = 130 + ClientHeight = 101 ClientWidth = 633 - TabOrder = 1 + Constraints.MinHeight = 80 + TabOrder = 2 inline StringConstSynEdit: TSynEdit Left = 6 - Height = 118 + Height = 89 Top = 6 Width = 621 Align = alClient @@ -809,7 +810,7 @@ TabOrder = 0 BookMarkOptions.Xoffset = -18 Gutter.Visible = False - Gutter.Width = 57 + Gutter.Width = 59 Gutter.MouseActions = < item ClickCount = ccAny @@ -1235,13 +1236,14 @@ MouseLinkColor.Foreground = clBlue LineHighlightColor.Background = clNone LineHighlightColor.Foreground = clNone + WantTabs = False inline TSynGutterPartList object TSynGutterMarks Width = 24 MouseActions = <> end object TSynGutterLineNumber - Width = 17 + Width = 19 MouseActions = <> MarkupInfo.Background = clBtnFace MarkupInfo.Foreground = clNone @@ -1320,76 +1322,31 @@ Cursor = crVSplit Left = 0 Height = 5 - Top = 99 + Top = 135 Width = 637 Align = alTop + AutoSnap = False ResizeAnchor = akTop end end - object BtnPanel: TPanel - Left = 0 - Height = 40 - Top = 511 - Width = 649 - Align = alBottom - AutoSize = True - BevelOuter = bvNone - ClientHeight = 40 - ClientWidth = 649 + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 26 + Top = 503 + Width = 637 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + OKButton.OnClick = OkButtonClick + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 2 - object OKButton: TBitBtn - AnchorSideBottom.Side = asrBottom - Left = 487 - Height = 28 - Top = 6 - Width = 75 - Align = alRight - AutoSize = True - BorderSpacing.Around = 6 - Caption = '&OK' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - Default = True - Kind = bkOK - ModalResult = 1 - OnClick = OkButtonClick - TabOrder = 0 - end - object CancelButton: TBitBtn - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Side = asrBottom - Left = 568 - Height = 28 - Top = 6 - Width = 75 - Align = alRight - AutoSize = True - BorderSpacing.Around = 6 - Cancel = True - Caption = 'Cancel' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - Kind = bkCancel - ModalResult = 2 - OnClick = CancelButtonClick - TabOrder = 1 - end - object HelpButton: TBitBtn - AnchorSideBottom.Side = asrBottom - Left = 6 - Height = 28 - Top = 6 - Width = 75 - Align = alLeft - AutoSize = True - BorderSpacing.Around = 6 - Caption = '&Help' - Constraints.MinHeight = 25 - Constraints.MinWidth = 75 - Kind = bkHelp - OnClick = HelpButtonClick - TabOrder = 2 - end + ShowButtons = [pbOK, pbCancel, pbHelp] + ShowBevel = False end object SynPasSyn: TSynPasSyn Enabled = False diff -Nru lazarus-1.4.4+dfsg/ide/makeresstrdlg.pas lazarus-1.6+dfsg/ide/makeresstrdlg.pas --- lazarus-1.4.4+dfsg/ide/makeresstrdlg.pas 2014-06-18 07:26:30.000000000 +0000 +++ lazarus-1.6+dfsg/ide/makeresstrdlg.pas 2015-05-22 20:20:40.000000000 +0000 @@ -39,10 +39,10 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Buttons, ComCtrls, StdCtrls, - Dialogs, ExtCtrls, IDEWindowIntf, + Classes, SysUtils, LCLProc, Forms, Controls, Buttons, StdCtrls, + Dialogs, ExtCtrls, ButtonPanel, IDEWindowIntf, SynHighlighterPas, SynEdit, - CodeToolManager, CodeAtom, CodeToolsStructs, CodeCache, + CodeToolManager, CodeToolsStructs, CodeCache, IDEHelpIntf, IDEDialogs, LazarusIDEStrConsts, EditorOptions, InputHistory, MiscOptions, IDEProcs; @@ -52,6 +52,7 @@ { TMakeResStrDialog } TMakeResStrDialog = class(TForm) + ButtonPanel1: TButtonPanel; CustomIdentifierCheckBox: TCheckBox; IdentifierGroupBox: TGroupBox; IdentifierEdit: TEdit; @@ -63,7 +64,6 @@ // options ConversionGroupBox: TGroupBox; CodePanel: TPanel; - BtnPanel: TPanel; // resourcestring section ResStrSectionLabel: TLabel; ResStrSectionComboBox: TComboBox; @@ -84,14 +84,8 @@ // highlighter SynPasSyn: TSynPasSyn; - // ok+cancel buttons - OkButton: TBitBtn; - CancelButton: TBitBtn; - HelpButton: TBitBtn; - procedure CancelButtonClick(Sender: TObject); procedure CustomIdentifierCheckBoxClick(Sender: TObject); - procedure FormCreate(Sender: TObject); procedure HelpButtonClick(Sender: TObject); procedure IdentLengthComboBoxChange(Sender: TObject); procedure IdentPrefixComboBoxChange(Sender: TObject); @@ -121,7 +115,7 @@ function ResStrExistsInCurrentSection(const Identifier: string): boolean; function ResStrExistsInAnySection(const Identifier: string): boolean; function ResStrExistsWithSameValue(const Identifier: string): boolean; - procedure GetNewSource(var NewSource, ResourceStringValue: string); + procedure GetNewSource(out NewSource, ResourceStringValue: string); procedure Init; procedure SaveHistories; procedure SaveIdentPrefixes; @@ -131,34 +125,35 @@ function ShowMakeResStrDialog( const StartPos, EndPos: TPoint; Code: TCodeBuffer; - Positions: TCodeXYPositions; - var NewIdentifier, NewIdentifierValue: string; - var NewSourceLines: string; - var ResStrSectionCode: TCodeBuffer; - var ResStrSectionXY: TPoint; - var InsertPolicy: TResourcestringInsertPolicy): TModalResult; + out NewIdentifier, NewIdentifierValue: string; + out NewSourceLines: string; + out ResStrSectionCode: TCodeBuffer; + out ResStrSectionXY: TPoint; + out InsertPolicy: TResourcestringInsertPolicy): TModalResult; implementation {$R *.lfm} -uses - Math; -function ShowMakeResStrDialog( - const StartPos, EndPos: TPoint; Code: TCodeBuffer; - Positions: TCodeXYPositions; - var NewIdentifier, NewIdentifierValue: string; - var NewSourceLines: string; - var ResStrSectionCode: TCodeBuffer; - var ResStrSectionXY: TPoint; - var InsertPolicy: TResourcestringInsertPolicy): TModalResult; +function ShowMakeResStrDialog(const StartPos, EndPos: TPoint; + Code: TCodeBuffer; out NewIdentifier, NewIdentifierValue: string; out + NewSourceLines: string; out ResStrSectionCode: TCodeBuffer; out + ResStrSectionXY: TPoint; out InsertPolicy: TResourcestringInsertPolicy + ): TModalResult; var MakeResStrDialog: TMakeResStrDialog; Section: PCodeXYPosition; ResourcestringSectionID: Integer; begin //debugln('ShowMakeResStrDialog StartPos=',dbgs(StartPos),' EndPos=',dbgs(EndPos),' '); + NewIdentifier:=''; + NewIdentifierValue:=''; + NewSourceLines:=''; + ResStrSectionCode:=nil; + ResStrSectionXY:=Point(0,0); + InsertPolicy:=rsipNone; + MakeResStrDialog:=TMakeResStrDialog.Create(nil); MakeResStrDialog.Positions:=CodeToolBoss.Positions.CreateCopy; MakeResStrDialog.SetSource(Code,StartPos,EndPos); @@ -195,21 +190,11 @@ { TMakeResStrDialog } -procedure TMakeResStrDialog.CancelButtonClick(Sender: TObject); -begin - ModalResult:=mrCancel; -end; - procedure TMakeResStrDialog.CustomIdentifierCheckBoxClick(Sender: TObject); begin UpdateIdentifier; end; -procedure TMakeResStrDialog.FormCreate(Sender: TObject); -begin - ActiveControl:=OkButton; -end; - procedure TMakeResStrDialog.HelpButtonClick(Sender: TObject); begin LazarusHelp.ShowHelpForIDEControl(Self); @@ -290,9 +275,9 @@ StringConstGroupBox.Caption:=lisMakeResStrStringConstantInSource; // OK, Cancel, Help buttons - OkButton.Caption:=lisMenuOk; - CancelButton.Caption:=lisCancel; - HelpButton.Caption:=lisMenuHelp; + ButtonPanel1.OkButton.Caption:=lisMenuOk; + ButtonPanel1.CancelButton.Caption:=lisCancel; + ButtonPanel1.HelpButton.Caption:=lisMenuHelp; end; constructor TMakeResStrDialog.Create(TheOwner: TComponent); @@ -529,7 +514,7 @@ Result:=false; end; -procedure TMakeResStrDialog.GetNewSource(var NewSource, +procedure TMakeResStrDialog.GetNewSource(out NewSource, ResourceStringValue: string); var FormatStringConstant: string; @@ -540,6 +525,8 @@ RightSide: String; StartInStringConst, EndInStringConst: boolean; begin + NewSource:=''; + ResourceStringValue:=''; if not CodeToolBoss.StringConstToFormatString(Code,StartPos.X,StartPos.Y, Code,EndPos.X,EndPos.Y,FormatStringConstant,FormatParameters, StartInStringConst,EndInStringConst) diff -Nru lazarus-1.4.4+dfsg/ide/miscoptions.pas lazarus-1.6+dfsg/ide/miscoptions.pas --- lazarus-1.4.4+dfsg/ide/miscoptions.pas 2014-06-09 07:40:55.000000000 +0000 +++ lazarus-1.6+dfsg/ide/miscoptions.pas 2015-07-04 23:08:00.000000000 +0000 @@ -31,7 +31,7 @@ uses Classes, SysUtils, LCLProc, BuildProfileManager, CodeToolsStructs, TextTools, - FileUtil, Laz2_XMLCfg, LazFileCache, LazConf, IDEProcs; + LazFileUtils, Laz2_XMLCfg, LazFileCache, LazConf, IDEProcs; type { TFindRenameIdentifierOptions } diff -Nru lazarus-1.4.4+dfsg/ide/mouseactiondialog.lfm lazarus-1.6+dfsg/ide/mouseactiondialog.lfm --- lazarus-1.4.4+dfsg/ide/mouseactiondialog.lfm 2013-05-05 15:48:52.000000000 +0000 +++ lazarus-1.6+dfsg/ide/mouseactiondialog.lfm 2015-11-06 22:34:29.000000000 +0000 @@ -1,27 +1,24 @@ object MouseaActionDialog: TMouseaActionDialog - Left = 314 - Height = 255 - Top = 217 - Width = 374 - AutoSize = True + Left = 412 + Height = 449 + Top = 225 + Width = 627 BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'MouseaActionDialog' - ClientHeight = 255 - ClientWidth = 374 + ClientHeight = 449 + ClientWidth = 627 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object BtnLabel: TLabel AnchorSideLeft.Control = Owner - AnchorSideTop.Control = ButtonBox - AnchorSideTop.Side = asrCenter AnchorSideRight.Control = ActionLabel AnchorSideRight.Side = asrBottom Left = 6 - Height = 13 - Top = 136 - Width = 55 + Height = 17 + Top = 159 + Width = 90 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 Caption = 'BtnLabel' @@ -32,11 +29,12 @@ AnchorSideTop.Control = ActionBox AnchorSideTop.Side = asrCenter Left = 6 - Height = 13 - Top = 10 - Width = 55 + Height = 17 + Top = 13 + Width = 90 BorderSpacing.Left = 6 Caption = 'ActionLabel' + Constraints.MinWidth = 90 ParentColor = False end object OptLabel: TLabel @@ -45,10 +43,10 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 67 + Left = 102 Height = 16 - Top = 56 - Width = 301 + Top = 73 + Width = 519 Anchors = [akTop, akLeft, akRight] AutoSize = False BorderSpacing.Top = 6 @@ -61,156 +59,105 @@ AnchorSideTop.Control = PriorSpin AnchorSideTop.Side = asrCenter Left = 6 - Height = 13 - Top = 103 - Width = 47 + Height = 17 + Top = 131 + Width = 71 BorderSpacing.Left = 6 Caption = 'PriorLabel' ParentColor = False end object CapturePanel: TPanel - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = ShiftCheck + AnchorSideLeft.Control = chkUpRestrict + AnchorSideTop.Control = chkUpRestrict AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = BtnDefault + AnchorSideRight.Control = chkUpRestrict + AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = ButtonPanel1 - Left = 6 - Height = 27 - Top = 182 - Width = 279 + Left = 255 + Height = 65 + Top = 335 + Width = 368 Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - BorderSpacing.Bottom = 6 BevelOuter = bvLowered BevelWidth = 2 - ClientHeight = 27 - ClientWidth = 279 + ClientHeight = 65 + ClientWidth = 368 Color = clBtnShadow ParentColor = False - TabOrder = 2 + TabOrder = 13 OnMouseDown = CapturePanelMouseDown object PaintBox1: TPaintBox Left = 2 - Height = 23 + Height = 61 Top = 2 - Width = 275 + Width = 364 Align = alClient + Anchors = [akTop, akRight, akBottom] OnMouseDown = CapturePanelMouseDown OnMouseWheel = PaintBox1MouseWheel end end object ShiftCheck: TCheckBox - AnchorSideLeft.Control = ButtonBox - AnchorSideTop.Control = ButtonBox + AnchorSideLeft.Control = DirCheck + AnchorSideTop.Control = DirCheck AnchorSideTop.Side = asrBottom - Left = 67 - Height = 17 - Top = 159 - Width = 69 + Left = 102 + Height = 24 + Top = 257 + Width = 98 AllowGrayed = True - BorderSpacing.Top = 6 Caption = 'ShiftCheck' - TabOrder = 6 + TabOrder = 8 end object AltCheck: TCheckBox AnchorSideLeft.Control = ShiftCheck - AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ShiftCheck - AnchorSideTop.Side = asrCenter - Left = 142 - Height = 17 - Top = 159 - Width = 60 + AnchorSideTop.Side = asrBottom + Left = 102 + Height = 24 + Top = 281 + Width = 86 AllowGrayed = True - BorderSpacing.Left = 6 Caption = 'AltCheck' - TabOrder = 7 + TabOrder = 9 end object CtrlCheck: TCheckBox AnchorSideLeft.Control = AltCheck - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = ShiftCheck - AnchorSideTop.Side = asrCenter - Left = 208 - Height = 17 - Top = 159 - Width = 64 + AnchorSideTop.Control = AltCheck + AnchorSideTop.Side = asrBottom + Left = 102 + Height = 24 + Top = 305 + Width = 91 AllowGrayed = True - BorderSpacing.Left = 6 Caption = 'CtrlCheck' - TabOrder = 8 + TabOrder = 10 end object BtnDefault: TButton - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = CapturePanel - AnchorSideTop.Side = asrCenter + AnchorSideLeft.Control = CtrlCheck + AnchorSideTop.Control = CtrlCheck + AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom AnchorSideBottom.Side = asrBottom - Left = 291 - Height = 23 - Top = 184 - Width = 77 - Anchors = [akTop, akRight] + Left = 102 + Height = 29 + Top = 335 + Width = 85 AutoSize = True BorderSpacing.Top = 6 - BorderSpacing.Right = 6 Caption = 'BtnDefault' OnClick = BtnDefaultClick - TabOrder = 9 - end - object DirCheck: TCheckBox - AnchorSideLeft.Control = ClickBox - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = ClickBox - AnchorSideTop.Side = asrCenter - Left = 279 - Height = 17 - Top = 134 - Width = 60 - BorderSpacing.Around = 6 - Caption = 'DirCheck' - TabOrder = 5 - end - object ClickBox: TComboBox - AnchorSideLeft.Control = ButtonBox - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = ButtonBox - Left = 173 - Height = 21 - Top = 132 - Width = 100 - BorderSpacing.Left = 6 - ItemHeight = 13 - Style = csDropDownList - TabOrder = 4 - end - object ButtonBox: TComboBox - AnchorSideLeft.Control = BtnLabel - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = PriorSpin - AnchorSideTop.Side = asrBottom - Left = 67 - Height = 21 - Top = 132 - Width = 100 - BorderSpacing.Left = 6 - BorderSpacing.Top = 12 - ItemHeight = 13 - OnChange = ButtonBoxChange - Style = csDropDownList - TabOrder = 3 + TabOrder = 11 end object CaretCheck: TCheckBox AnchorSideLeft.Control = ActionBox AnchorSideTop.Control = ActionBox AnchorSideTop.Side = asrBottom - Left = 67 - Height = 17 - Top = 33 - Width = 74 + Left = 102 + Height = 24 + Top = 43 + Width = 103 BorderSpacing.Top = 6 Caption = 'CaretCheck' TabOrder = 1 @@ -221,15 +168,13 @@ AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 67 - Height = 21 + Left = 102 + Height = 31 Top = 6 - Width = 301 + Width = 519 Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - ItemHeight = 13 + BorderSpacing.Around = 6 + ItemHeight = 0 OnChange = ActionBoxChange Style = csDropDownList TabOrder = 0 @@ -240,9 +185,9 @@ AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 6 - Height = 34 - Top = 215 - Width = 362 + Height = 37 + Top = 406 + Width = 615 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' @@ -251,7 +196,7 @@ CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 10 + TabOrder = 14 ShowButtons = [pbOK, pbCancel] end object OptBox: TComboBox @@ -260,28 +205,28 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 67 - Height = 21 - Top = 72 - Width = 301 + Left = 102 + Height = 31 + Top = 89 + Width = 519 Anchors = [akTop, akLeft, akRight] BorderSpacing.Right = 6 Enabled = False - ItemHeight = 13 + ItemHeight = 0 Style = csDropDownList - TabOrder = 11 + TabOrder = 2 end object PriorSpin: TSpinEdit AnchorSideLeft.Control = OptLabel AnchorSideTop.Control = OptBox AnchorSideTop.Side = asrBottom - Left = 67 - Height = 21 - Top = 99 + Left = 102 + Height = 27 + Top = 126 Width = 60 BorderSpacing.Top = 6 MaxValue = 3 - TabOrder = 12 + TabOrder = 3 end object Opt2Spin: TSpinEdit AnchorSideLeft.Control = OptLabel @@ -289,29 +234,86 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom - Left = 308 - Height = 21 - Top = 99 + Left = 561 + Height = 27 + Top = 126 Width = 60 Anchors = [akTop, akRight] BorderSpacing.Top = 6 BorderSpacing.Right = 6 MaxValue = 999 - TabOrder = 13 + TabOrder = 4 end object Opt2Label: TLabel AnchorSideLeft.Control = Owner AnchorSideTop.Control = Opt2Spin AnchorSideTop.Side = asrCenter AnchorSideRight.Control = Opt2Spin - Left = 253 - Height = 13 - Top = 103 - Width = 49 + Left = 484 + Height = 17 + Top = 131 + Width = 71 Anchors = [akTop, akRight] BorderSpacing.Left = 6 BorderSpacing.Right = 6 Caption = 'Opt2Label' ParentColor = False end + object chkUpRestrict: TCheckListBox + AnchorSideLeft.Control = ButtonBox + AnchorSideLeft.Side = asrBottom + AnchorSideBottom.Control = BtnDefault + Left = 255 + Height = 170 + Top = 159 + Width = 368 + Anchors = [akTop, akRight, akBottom] + BorderSpacing.Around = 6 + ItemHeight = 0 + TabOrder = 12 + TopIndex = -1 + end + object ButtonBox: TComboBox + AnchorSideLeft.Control = PriorSpin + AnchorSideTop.Control = chkUpRestrict + AnchorSideRight.Control = chkUpRestrict + Left = 102 + Height = 31 + Top = 159 + Width = 147 + Anchors = [akTop, akLeft, akRight] + ItemHeight = 0 + OnChange = ButtonBoxChange + Style = csDropDownList + TabOrder = 5 + end + object ClickBox: TComboBox + AnchorSideLeft.Control = ButtonBox + AnchorSideTop.Control = ButtonBox + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ButtonBox + AnchorSideRight.Side = asrBottom + Left = 102 + Height = 31 + Top = 196 + Width = 147 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 6 + ItemHeight = 0 + Style = csDropDownList + TabOrder = 6 + end + object DirCheck: TCheckBox + AnchorSideLeft.Control = ButtonBox + AnchorSideTop.Control = ClickBox + AnchorSideTop.Side = asrBottom + Left = 102 + Height = 24 + Top = 233 + Width = 86 + BorderSpacing.Top = 6 + Caption = 'DirCheck' + OnChange = DirCheckChange + TabOrder = 7 + end end diff -Nru lazarus-1.4.4+dfsg/ide/mouseactiondialog.pas lazarus-1.6+dfsg/ide/mouseactiondialog.pas --- lazarus-1.4.4+dfsg/ide/mouseactiondialog.pas 2012-02-12 13:04:36.000000000 +0000 +++ lazarus-1.6+dfsg/ide/mouseactiondialog.pas 2015-11-06 22:34:29.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, Forms, Controls, ExtCtrls, StdCtrls, ButtonPanel, Spin, + Classes, Forms, Controls, ExtCtrls, StdCtrls, ButtonPanel, Spin, CheckLst, SynEditMouseCmds, LazarusIDEStrConsts, KeyMapping, IDECommands, types; var @@ -26,12 +26,13 @@ ButtonBox: TComboBox; ButtonPanel1: TButtonPanel; CaretCheck: TCheckBox; + chkUpRestrict: TCheckListBox; ClickBox: TComboBox; + DirCheck: TCheckBox; PaintBox1: TPaintBox; PriorLabel: TLabel; OptBox: TComboBox; CtrlCheck: TCheckBox; - DirCheck: TCheckBox; CapturePanel: TPanel; OptLabel: TLabel; Opt2Spin: TSpinEdit; @@ -42,12 +43,15 @@ procedure BtnDefaultClick(Sender: TObject); procedure ButtonBoxChange(Sender: TObject); procedure CapturePanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; - X, Y: Integer); + {%H-}X, {%H-}Y: Integer); + procedure DirCheckChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure PaintBox1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; - MousePos: TPoint; var Handled: Boolean); + {%H-}MousePos: TPoint; var {%H-}Handled: Boolean); private FKeyMap: TKeyCommandRelationList; + procedure AddMouseCmd(const S: string); + procedure FillListbox; public { public declarations } Procedure ResetInputs; @@ -60,6 +64,8 @@ implementation +uses Math; + {$R *.lfm} const @@ -80,10 +86,53 @@ { MouseaActionDialog } -procedure TMouseaActionDialog.FormCreate(Sender: TObject); +procedure TMouseaActionDialog.AddMouseCmd(const S: string); var i: Integer; - CName: String; + s2: String; +begin + i:=0; + if IdentToSynMouseCmd(S, i) then begin + s2 := MouseCommandName(i); + if s2 = '' then s2 := s; + ActionBox.Items.AddObject(s2, TObject(ptrint(i))); + end; +end; + +procedure TMouseaActionDialog.FillListbox; +const + cCheckSize=35; +var + r: TSynMAUpRestriction; + s: string; + i, Len: integer; +begin + for r := low(TSynMAUpRestriction) to high(TSynMAUpRestriction) do + case r of + crLastDownPos: chkUpRestrict.AddItem(synfMatchActionPosOfMouseDown, nil); + crLastDownPosSameLine: chkUpRestrict.AddItem(synfMatchActionLineOfMouseDown, nil); + crLastDownPosSearchAll: chkUpRestrict.AddItem(synfSearchAllActionOfMouseDown, nil); + crLastDownButton: chkUpRestrict.AddItem(synfMatchActionButtonOfMouseDown, nil); + crLastDownShift: chkUpRestrict.AddItem(synfMatchActionModifiersOfMouseDown, nil); + crAllowFallback: chkUpRestrict.AddItem(synfContinueWithNextMouseUpAction, nil); + else begin + WriteStr(s, r); + chkUpRestrict.AddItem(s, nil); + end; + end; + + // update scrollbar + Len := 0; + with chkUpRestrict do + begin + for i := 0 to Items.Count-1 do + Len := Max(Len, Canvas.TextWidth(Items[i])+cCheckSize); + ScrollWidth := Len; + end; +end; + +procedure TMouseaActionDialog.FormCreate(Sender: TObject); +var mb: TSynMouseButton; cc: TSynMAClickCount; begin @@ -101,6 +150,8 @@ ClickName[ccQuad]:=dlgMouseOptBtn4; ClickName[ccAny]:=dlgMouseOptBtnAny; + FillListbox; + ButtonDirName[cdUp]:=lisUp; ButtonDirName[cdDown]:=lisDown; @@ -109,11 +160,7 @@ CapturePanel.ControlStyle := ControlStyle + [csTripleClicks, csQuadClicks]; CaretCheck.Caption := dlgMouseOptCaretMove; ActionBox.Clear; - for i:= 0 to emcMax do begin - CName := MouseCommandName(i); - if CName <> '' then - ActionBox.Items.AddObject(CName, TObject(ptrint(i))); - end; + GetEditorMouseCommandValues(@AddMouseCmd); ButtonBox.Clear; for mb := low(TSynMouseButton) to high(TSynMouseButton) do ButtonBox.Items.add(ButtonName[mb]); @@ -132,6 +179,8 @@ end; procedure TMouseaActionDialog.ResetInputs; +var + r: TSynMAUpRestriction; begin ActionBox.ItemIndex := 0; ButtonBox.ItemIndex := 0; @@ -140,6 +189,8 @@ ShiftCheck.State := cbGrayed; AltCheck.State := cbGrayed; CtrlCheck.State := cbGrayed; + for r := low(TSynMAUpRestriction) to high(TSynMAUpRestriction) do + chkUpRestrict.Checked[ord(r)] := False; ActionBoxChange(nil); OptBox.ItemIndex := 0; @@ -155,6 +206,7 @@ procedure TMouseaActionDialog.ButtonBoxChange(Sender: TObject); begin DirCheck.Enabled := not(IndexToBtn[ButtonBox.ItemIndex] in [mbXWheelUp, mbXWheelDown]); + chkUpRestrict.Enabled := DirCheck.Enabled and DirCheck.Checked; end; procedure TMouseaActionDialog.ActionBoxChange(Sender: TObject); @@ -163,7 +215,7 @@ i: Integer; begin OptBox.Items.Clear; - ACmd := TSynEditorMouseCommand(PtrUInt(Pointer(ActionBox.items.Objects[ActionBox.ItemIndex]))); + ACmd := TSynEditorMouseCommand({%H-}PtrUInt(Pointer(ActionBox.items.Objects[ActionBox.ItemIndex]))); if ACmd = emcSynEditCommand then begin OptBox.Enabled := True; OptBox.Clear; @@ -172,7 +224,7 @@ (KeyMap.Relations[i].Category.Scope = IDECmdScopeSrcEditOnly) then OptBox.Items.AddObject(KeyMap.Relations[i].GetLocalizedName, - TObject(Pointer(PtrUInt(KeyMap.Relations[i].Command)))); + TObject({%H-}Pointer(PtrUInt(KeyMap.Relations[i].Command)))); OptLabel.Caption := dlgMouseOptionsynCommand; OptBox.ItemIndex := 0; end @@ -204,6 +256,11 @@ CtrlCheck.Checked := ssCtrl in Shift; end; +procedure TMouseaActionDialog.DirCheckChange(Sender: TObject); +begin + chkUpRestrict.Enabled := DirCheck.Checked; +end; + procedure TMouseaActionDialog.PaintBox1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin @@ -217,8 +274,10 @@ end; procedure TMouseaActionDialog.ReadFromAction(MAct: TSynEditMouseAction); +var + r: TSynMAUpRestriction; begin - ActionBox.ItemIndex := ActionBox.Items.IndexOfObject(TObject(Pointer(PtrUInt(MAct.Command)))); + ActionBox.ItemIndex := ActionBox.Items.IndexOfObject(TObject({%H-}Pointer(PtrUInt(MAct.Command)))); ButtonBox.ItemIndex := BtnToIndex[MAct.Button]; ClickBox.ItemIndex := ClickToIndex[MAct.ClickCount]; DirCheck.Checked := MAct.ClickDir = cdUp; @@ -231,20 +290,24 @@ if not(ssCtrl in MAct.ShiftMask) then CtrlCheck.State := cbGrayed; PriorSpin.Value := MAct.Priority; Opt2Spin.Value := MAct.Option2; + for r := low(TSynMAUpRestriction) to high(TSynMAUpRestriction) do + chkUpRestrict.Checked[ord(r)] := r in MAct.ButtonUpRestrictions; ActionBoxChange(nil); ButtonBoxChange(nil); if OptBox.Enabled then begin if MAct.Command = emcSynEditCommand then - OptBox.ItemIndex := OptBox.Items.IndexOfObject(TObject(Pointer(PtrUInt(MAct.Option)))) + OptBox.ItemIndex := OptBox.Items.IndexOfObject(TObject({%H-}Pointer(PtrUInt(MAct.Option)))) else OptBox.ItemIndex := MAct.Option; end; end; procedure TMouseaActionDialog.WriteToAction(MAct: TSynEditMouseAction); +var + r: TSynMAUpRestriction; begin - MAct.Command := TSynEditorMouseCommand(PtrUInt(Pointer(ActionBox.items.Objects[ActionBox.ItemIndex]))); + MAct.Command := TSynEditorMouseCommand({%H-}PtrUInt(Pointer(ActionBox.items.Objects[ActionBox.ItemIndex]))); MAct.Button := IndexToBtn[ButtonBox.ItemIndex]; MAct.ClickCount := IndexToClick[ClickBox.ItemIndex]; MAct.MoveCaret := CaretCheck.Checked; @@ -261,10 +324,14 @@ if CtrlCheck.Checked then MAct.Shift := MAct.Shift + [ssCtrl]; MAct.Priority := PriorSpin.Value; MAct.Option2 := Opt2Spin.Value; + MAct.ButtonUpRestrictions := []; + for r := low(TSynMAUpRestriction) to high(TSynMAUpRestriction) do + if chkUpRestrict.Checked[ord(r)] then + MAct.ButtonUpRestrictions := MAct.ButtonUpRestrictions + [r]; if OptBox.Enabled then begin if MAct.Command = emcSynEditCommand then begin - MAct.Option := TSynEditorMouseCommandOpt(PtrUInt(Pointer(OptBox.Items.Objects[OptBox.ItemIndex]))); + MAct.Option := TSynEditorMouseCommandOpt({%H-}PtrUInt(Pointer(OptBox.Items.Objects[OptBox.ItemIndex]))); end else MAct.Option := OptBox.ItemIndex; diff -Nru lazarus-1.4.4+dfsg/ide/newdialog.lfm lazarus-1.6+dfsg/ide/newdialog.lfm --- lazarus-1.4.4+dfsg/ide/newdialog.lfm 2012-08-20 18:05:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/newdialog.lfm 2015-05-18 22:31:35.000000000 +0000 @@ -8,23 +8,23 @@ ClientHeight = 421 ClientWidth = 561 Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object Panel1: TPanel Left = 6 - Height = 370 + Height = 374 Top = 6 Width = 549 Align = alClient BorderSpacing.Around = 6 BevelOuter = bvNone - ClientHeight = 370 + ClientHeight = 374 ClientWidth = 549 TabOrder = 0 object ItemsTreeView: TTreeView AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner Left = 0 - Height = 370 + Height = 374 Top = 0 Width = 263 Align = alClient @@ -41,19 +41,19 @@ AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner Left = 268 - Height = 370 + Height = 374 Top = 0 Width = 281 Align = alRight Caption = 'DescriptionGroupBox' - ClientHeight = 349 - ClientWidth = 273 + ClientHeight = 353 + ClientWidth = 277 TabOrder = 1 object DescriptionLabel: TLabel Left = 6 Height = 17 Top = 6 - Width = 261 + Width = 265 Align = alTop BorderSpacing.Around = 6 Caption = 'DescriptionLabel' @@ -62,9 +62,9 @@ end object InheritableComponentsListView: TListView Left = 0 - Height = 320 + Height = 324 Top = 29 - Width = 273 + Width = 277 Align = alClient Columns = < item @@ -86,7 +86,7 @@ end object Splitter1: TSplitter Left = 263 - Height = 370 + Height = 374 Top = 0 Width = 5 Align = alRight @@ -95,8 +95,8 @@ end object ButtonPanel: TButtonPanel Left = 6 - Height = 33 - Top = 382 + Height = 29 + Top = 386 Width = 549 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True diff -Nru lazarus-1.4.4+dfsg/ide/newdialog.pas lazarus-1.6+dfsg/ide/newdialog.pas --- lazarus-1.4.4+dfsg/ide/newdialog.pas 2013-06-02 17:54:22.000000000 +0000 +++ lazarus-1.6+dfsg/ide/newdialog.pas 2015-05-19 21:05:37.000000000 +0000 @@ -39,10 +39,10 @@ interface uses - Buttons, SysUtils, Classes, LCLProc, ComCtrls, Controls, Dialogs, + Buttons, SysUtils, Classes, ComCtrls, Controls, Dialogs, Forms, StdCtrls, ExtCtrls, FileProcs, ButtonPanel, IDEWindowIntf, IDEImagesIntf, NewItemIntf, PackageIntf, ProjectIntf, - LazIDEIntf, IDEHelpIntf, IDEDialogs, + LazIDEIntf, IDEHelpIntf, IDEDialogs, LazUTF8, InputHistory, LazarusIDEStrConsts, Project, MainIntf; type @@ -71,7 +71,7 @@ function IndexOf(const CategoryName: string): integer; override; function FindByName(const CategoryName: string): TNewIDEItemCategory; override; procedure RegisterItem(const Paths: string; NewItem: TNewIDEItemTemplate); override; - procedure UnregisterItem(NewItem: TNewIDEItemTemplate); override; + procedure UnregisterItem({%H-}NewItem: TNewIDEItemTemplate); override; function FindCategoryByPath(const Path: string; ErrorOnNotFound: boolean): TNewIDEItemCategory; override; end; @@ -133,31 +133,32 @@ ImageIndexTemplate: integer; FNewItem: TNewIDEItemTemplate; procedure FillProjectInheritableItemsList; - procedure FillItemsTree; + procedure FillItemsTree(AOnlyModules: boolean); procedure SetupComponents; procedure UpdateDescription; function FindItem(const aName: string): TTreeNode; public - constructor Create(TheOwner: TComponent); override; + constructor Create(TheOwner: TComponent; AOnlyModules: boolean); reintroduce; destructor Destroy; override; public property NewItem: TNewIDEItemTemplate Read FNewItem; end; -function ShowNewIDEItemDialog(var NewItem: TNewIDEItemTemplate): TModalResult; +function ShowNewIDEItemDialog(out NewItem: TNewIDEItemTemplate; + AOnlyModules: boolean = false): TModalResult; implementation - {$R *.lfm} -function ShowNewIDEItemDialog(var NewItem: TNewIDEItemTemplate): TModalResult; +function ShowNewIDEItemDialog(out NewItem: TNewIDEItemTemplate; + AOnlyModules: boolean): TModalResult; var NewOtherDialog: TNewOtherDialog; begin NewItem := nil; - NewOtherDialog := TNewOtherDialog.Create(nil); + NewOtherDialog := TNewOtherDialog.Create(nil, AOnlyModules); Result := NewOtherDialog.ShowModal; if Result = mrOk then NewItem := NewOtherDialog.NewItem; @@ -278,37 +279,35 @@ end; end; -procedure TNewOtherDialog.FillItemsTree; +procedure TNewOtherDialog.FillItemsTree(AOnlyModules: boolean); var - NewParentNode: TTreeNode; - CategoryID: integer; - Category: TNewIDEItemCategory; - TemplateID: integer; - Template: TNewIDEItemTemplate; + NewParentNode, ChildNode: TTreeNode; + CategoryID, TemplateID, CategoryCount: integer; + Category: TNewIDEItemCategory; + Template: TNewIDEItemTemplate; begin ItemsTreeView.BeginUpdate; ItemsTreeView.Items.Clear; - for CategoryID := 0 to NewIDEItems.Count - 1 do + CategoryCount := NewIDEItems.Count; + if AOnlyModules and (CategoryCount > 1) then + CategoryCount := 1; + for CategoryID := 0 to CategoryCount-1 do begin Category := NewIDEItems[CategoryID]; if not Category.VisibleInNewDialog then continue; - NewParentNode := ItemsTreeView.Items.AddObject(nil, - Category.LocalizedName, Category); - + NewParentNode := ItemsTreeView.Items.AddObject(nil,Category.LocalizedName, Category); NewParentNode.ImageIndex := ImageIndexFolder; NewParentNode.SelectedIndex := ImageIndexFolder; - for TemplateID := 0 to Category.Count - 1 do begin Template := Category[TemplateID]; //DebugLn('TNewOtherDialog.FillItemsTree ',Template.Name,' ',dbgs(Template.VisibleInNewDialog)); if Template.VisibleInNewDialog then - with ItemsTreeView.Items.AddChildObject(NewParentNode, - Template.LocalizedName, Template) - do begin - ImageIndex := ImageIndexTemplate; - SelectedIndex := ImageIndexTemplate; - end; + begin + ChildNode := ItemsTreeView.Items.AddChildObject(NewParentNode, Template.LocalizedName, Template); + ChildNode.ImageIndex := ImageIndexTemplate; + ChildNode.SelectedIndex := ImageIndexTemplate; + end; end; NewParentNode.Expand(True); end; @@ -388,14 +387,14 @@ end; end; -constructor TNewOtherDialog.Create(TheOwner: TComponent); +constructor TNewOtherDialog.Create(TheOwner: TComponent; AOnlyModules: boolean); var Node: TTreeNode; begin inherited Create(TheOwner); Caption := lisMenuNewOther; SetupComponents; - FillItemsTree; + FillItemsTree(AOnlyModules); FillProjectInheritableItemsList; InheritableComponentsListView.Visible := false; IDEDialogLayoutList.ApplyLayout(Self, 570, 400); diff -Nru lazarus-1.4.4+dfsg/ide/newprojectdlg.lfm lazarus-1.6+dfsg/ide/newprojectdlg.lfm --- lazarus-1.4.4+dfsg/ide/newprojectdlg.lfm 2012-03-07 00:04:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/newprojectdlg.lfm 2015-07-16 16:45:15.000000000 +0000 @@ -1,42 +1,43 @@ object NewProjectDialog: TNewProjectDialog - Left = 240 + Left = 371 Height = 302 - Top = 451 + Top = 381 Width = 561 + BorderIcons = [biSystemMenu] Caption = 'NewProjectDialog' ClientHeight = 302 ClientWidth = 561 Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object Panel1: TPanel AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner AnchorSideRight.Control = Owner Left = 6 - Height = 252 + Height = 258 Top = 6 Width = 549 Align = alClient BorderSpacing.Around = 6 BevelOuter = bvNone - ClientHeight = 252 + ClientHeight = 258 ClientWidth = 549 TabOrder = 0 object DescriptionGroupBox: TGroupBox - Left = 251 - Height = 252 + Left = 274 + Height = 258 Top = 0 - Width = 298 + Width = 275 Align = alClient Caption = 'DescriptionGroupBox' - ClientHeight = 231 - ClientWidth = 294 - TabOrder = 0 + ClientHeight = 238 + ClientWidth = 271 + TabOrder = 1 object HelpLabel: TLabel Left = 6 - Height = 219 + Height = 226 Top = 6 - Width = 282 + Width = 259 Align = alClient BorderSpacing.Around = 6 Caption = 'HelpLabel' @@ -44,31 +45,36 @@ WordWrap = True end end - object ListBox: TListBox + object Splitter1: TSplitter + Left = 269 + Height = 258 + Top = 0 + Width = 5 + end + object Tree: TTreeView Left = 0 - Height = 252 + Height = 258 Top = 0 - Width = 246 + Width = 269 Align = alLeft Anchors = [] - ItemHeight = 0 - OnDblClick = ListBoxDblClick - TabOrder = 1 - end - object Splitter1: TSplitter - Left = 246 - Height = 252 - Top = 0 - Width = 5 + HideSelection = False + ReadOnly = True + ScrollBars = ssAutoBoth + TabOrder = 0 + OnDblClick = OkClick + OnSelectionChanged = TreeSelectionChange + Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] end end object ButtonPanel: TButtonPanel Left = 6 - Height = 32 - Top = 264 + Height = 26 + Top = 270 Width = 549 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True + OKButton.OnClick = OkClick HelpButton.Name = 'HelpButton' HelpButton.DefaultCaption = True HelpButton.OnClick = HelpButtonClick diff -Nru lazarus-1.4.4+dfsg/ide/newprojectdlg.pp lazarus-1.6+dfsg/ide/newprojectdlg.pp --- lazarus-1.4.4+dfsg/ide/newprojectdlg.pp 2012-02-13 19:57:58.000000000 +0000 +++ lazarus-1.6+dfsg/ide/newprojectdlg.pp 2015-07-16 16:45:15.000000000 +0000 @@ -32,8 +32,8 @@ uses Classes, SysUtils, Forms, Graphics, Controls, Project, Buttons, ButtonPanel, - StdCtrls, ProjectIntf, ExtCtrls, LazarusIDEStrConsts, - IDEHelpIntf; + StdCtrls, ProjectIntf, ExtCtrls, ComCtrls, LazarusIDEStrConsts, + IDEHelpIntf, IDEImagesIntf; type @@ -43,12 +43,12 @@ ButtonPanel: TButtonPanel; DescriptionGroupBox: TGroupBox; HelpLabel: TLabel; - ListBox: TListBox; + Tree: TTreeView; Panel1: TPanel; Splitter1: TSplitter; procedure HelpButtonClick(Sender: TObject); - procedure ListBoxDblClick(Sender: TObject); - procedure ListBoxSelectionChange(Sender: TObject; User: boolean); + procedure OkClick(Sender: TObject); + procedure TreeSelectionChange(Sender: TObject); private FProjectDescriptor: TProjectDescriptor; procedure FillHelpLabel; @@ -90,34 +90,55 @@ end; procedure TNewProjectDialog.FillHelpLabel; +var + ANode: TTreeNode; begin - FProjectDescriptor := TProjectDescriptor(ListBox.Items.Objects[ListBox.ItemIndex]); - HelpLabel.Caption:=FProjectDescriptor.GetLocalizedDescription; - HelpLabel.Width:=Self.ClientWidth-HelpLabel.Left-10; + ANode := Tree.Selected; + if Assigned(ANode) and Assigned(ANode.Data) then + begin + FProjectDescriptor:=TProjectDescriptor(ANode.Data); + HelpLabel.Caption:=FProjectDescriptor.GetLocalizedDescription; + ButtonPanel.OKButton.Enabled:=true; + end + else + begin + FProjectDescriptor:=nil; + HelpLabel.Caption:=lisChooseOneOfTheseItemsToCreateANewProject; + ButtonPanel.OKButton.Enabled:=false; + end; end; procedure TNewProjectDialog.SetupComponents; var + NIndexTemplate, NIndexFolder: integer; + RootNode, ItemNode: TTreeNode; i: integer; begin - with ListBox do begin - with Items do begin - BeginUpdate; - for i:=0 to ProjectDescriptors.Count-1 do begin - if ProjectDescriptors[i].VisibleInNewDialog then - AddObject(ProjectDescriptors[i].GetLocalizedName, ProjectDescriptors[i]); - end; - EndUpdate; + Tree.Images:=IDEImages.Images_16; + NIndexFolder:=IDEImages.LoadImage(16, 'folder'); + NIndexTemplate:=IDEImages.LoadImage(16, 'template'); + + Tree.Items.BeginUpdate; + RootNode:=Tree.Items.Add(nil, dlgProject); + RootNode.ImageIndex:=NIndexFolder; + RootNode.SelectedIndex:=NIndexFolder; + for i:=0 to ProjectDescriptors.Count-1 do + if ProjectDescriptors[i].VisibleInNewDialog then + begin + ItemNode:=Tree.Items.AddChildObject(RootNode, ProjectDescriptors[i].GetLocalizedName, + ProjectDescriptors[i]); + ItemNode.ImageIndex:=NIndexTemplate; + ItemNode.SelectedIndex:=NIndexTemplate; end; - ItemIndex:=0; - OnSelectionChange:=@ListBoxSelectionChange; - end; + Tree.FullExpand; + Tree.Items.EndUpdate; - DescriptionGroupBox.Caption := lisCodeHelpDescrTag; + //select first child node + with Tree do + if Items.Count>0 then + Selected:=Items[1]; - ButtonPanel.OKButton.Caption := lisMenuOk; - ButtonPanel.HelpButton.Caption := lisMenuHelp; - ButtonPanel.CancelButton.Caption := lisCancel; + DescriptionGroupBox.Caption:=lisCodeHelpDescrTag; end; procedure TNewProjectDialog.HelpButtonClick(Sender: TObject); @@ -125,14 +146,18 @@ LazarusHelp.ShowHelpForIDEControl(Self); end; -procedure TNewProjectDialog.ListBoxDblClick(Sender: TObject); +procedure TNewProjectDialog.OkClick(Sender: TObject); +var + ANode: TTreeNode; begin - if ListBox.ItemAtPos(ListBox.ScreenToClient(Mouse.CursorPos),true) >= 0 then - ModalResult:=mrOk; + ANode := Tree.Selected; + if Assigned(ANode) and Assigned(ANode.Data) then + ModalResult:=mrOk + else + ModalResult:=mrNone; end; -procedure TNewProjectDialog.ListBoxSelectionChange(Sender: TObject; - User: boolean); +procedure TNewProjectDialog.TreeSelectionChange(Sender: TObject); begin FillHelpLabel; end; diff -Nru lazarus-1.4.4+dfsg/ide/patheditordlg.lfm lazarus-1.6+dfsg/ide/patheditordlg.lfm --- lazarus-1.4.4+dfsg/ide/patheditordlg.lfm 2014-09-13 08:40:50.000000000 +0000 +++ lazarus-1.6+dfsg/ide/patheditordlg.lfm 2015-02-09 22:16:24.000000000 +0000 @@ -13,10 +13,10 @@ OnResize = FormResize OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object PathGroupBox: TGroupBox Left = 6 - Height = 214 + Height = 219 Top = 6 Width = 541 Align = alClient @@ -24,7 +24,7 @@ AutoSize = True BorderSpacing.Around = 6 Caption = 'PathGroupBox' - ClientHeight = 195 + ClientHeight = 202 ClientWidth = 537 Constraints.MinHeight = 194 Constraints.MinWidth = 488 @@ -37,7 +37,7 @@ AnchorSideBottom.Side = asrBottom Left = 506 Height = 25 - Top = 45 + Top = 47 Width = 25 Anchors = [akRight] BorderSpacing.Around = 6 @@ -56,7 +56,7 @@ AnchorSideBottom.Side = asrBottom Left = 506 Height = 25 - Top = 84 + Top = 86 Width = 25 BorderSpacing.Around = 14 GlyphShowMode = gsmAlways @@ -70,10 +70,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideBottom.Control = PathGroupBox AnchorSideBottom.Side = asrBottom - Left = 203 - Height = 26 - Top = 163 - Width = 97 + Left = 186 + Height = 27 + Top = 169 + Width = 89 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -88,28 +88,32 @@ AnchorSideLeft.Control = PathGroupBox AnchorSideTop.Control = PathGroupBox AnchorSideRight.Control = MoveUpButton + AnchorSideBottom.Control = DirectoryEdit Left = 6 - Height = 127 + Height = 132 Top = 6 Width = 494 Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Around = 6 + BorderSpacing.Left = 6 + BorderSpacing.Top = 6 ItemHeight = 0 OnDrawItem = PathListBoxDrawItem OnKeyDown = PathListBoxKeyDown OnSelectionChange = PathListBoxSelectionChange PopupMenu = PopupMenu1 + ScrollWidth = 492 Style = lbOwnerDrawFixed TabOrder = 0 + TopIndex = -1 end object ReplaceButton: TBitBtn AnchorSideLeft.Control = PathGroupBox AnchorSideBottom.Control = PathGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 26 - Top = 163 - Width = 105 + Height = 27 + Top = 169 + Width = 95 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -125,10 +129,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideBottom.Control = PathGroupBox AnchorSideBottom.Side = asrBottom - Left = 117 - Height = 26 - Top = 163 - Width = 80 + Left = 107 + Height = 27 + Top = 169 + Width = 73 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -144,10 +148,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideBottom.Control = PathGroupBox AnchorSideBottom.Side = asrBottom - Left = 306 - Height = 26 - Top = 163 - Width = 171 + Left = 281 + Height = 27 + Top = 169 + Width = 154 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -164,7 +168,7 @@ AnchorSideBottom.Control = ReplaceButton Left = 6 Height = 25 - Top = 132 + Top = 138 Width = 494 OnAcceptDirectory = DirectoryEditAcceptDirectory ShowHidden = False @@ -180,13 +184,13 @@ AnchorSideTop.Side = asrBottom Left = 6 Height = 164 - Top = 237 + Top = 242 Width = 541 Align = alBottom Anchors = [] BorderSpacing.Around = 6 Caption = 'TemplateGroupBox' - ClientHeight = 145 + ClientHeight = 147 ClientWidth = 537 TabOrder = 1 object TemplatesListBox: TListBox @@ -196,7 +200,7 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = AddTemplateButton Left = 6 - Height = 101 + Height = 102 Top = 6 Width = 525 Anchors = [akTop, akLeft, akRight, akBottom] @@ -205,16 +209,18 @@ MultiSelect = True OnDblClick = TemplatesListBoxDblClick OnSelectionChange = TemplatesListBoxSelectionChange + ScrollWidth = 523 TabOrder = 0 + TopIndex = -1 end object AddTemplateButton: TBitBtn AnchorSideLeft.Control = TemplateGroupBox AnchorSideBottom.Control = TemplateGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 26 - Top = 113 - Width = 136 + Height = 27 + Top = 114 + Width = 124 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -227,8 +233,8 @@ end object ButtonPanel1: TButtonPanel Left = 6 - Height = 33 - Top = 407 + Height = 28 + Top = 412 Width = 541 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -246,19 +252,19 @@ Cursor = crVSplit Left = 0 Height = 5 - Top = 226 + Top = 231 Width = 553 Align = alBottom ResizeAnchor = akBottom end object BrowseDialog: TSelectDirectoryDialog Options = [ofFileMustExist, ofEnableSizing, ofViewDetail] - left = 504 - top = 32 + left = 350 + top = 50 end object PopupMenu1: TPopupMenu - left = 504 - top = 168 + left = 130 + top = 100 object CopyMenuItem: TMenuItem Caption = 'Copy All' OnClick = CopyMenuItemClick @@ -280,11 +286,11 @@ end end object OpenDialog1: TOpenDialog - left = 476 - top = 197 + left = 240 + top = 100 end object SaveDialog1: TSaveDialog - left = 512 - top = 197 + left = 350 + top = 100 end end diff -Nru lazarus-1.4.4+dfsg/ide/patheditordlg.pas lazarus-1.6+dfsg/ide/patheditordlg.pas --- lazarus-1.4.4+dfsg/ide/patheditordlg.pas 2015-02-22 11:20:02.000000000 +0000 +++ lazarus-1.6+dfsg/ide/patheditordlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -21,10 +21,9 @@ interface uses - Classes, SysUtils, types, Forms, Controls, Buttons, StdCtrls, Dialogs, - FileUtil, ButtonPanel, ExtCtrls, EditBtn, MacroIntf, IDEImagesIntf, LCLType, - Graphics, Menus, TransferMacros, LazarusIDEStrConsts, shortpathedit, Clipbrd, - LCLProc; + Classes, SysUtils, types, Forms, Controls, Buttons, StdCtrls, Dialogs, Graphics, + Menus, ButtonPanel, ExtCtrls, FileUtil, LazFileUtils, MacroIntf, IDEImagesIntf, + LCLType, TransferMacros, LazarusIDEStrConsts, ShortPathEdit, Clipbrd, LCLProc; type @@ -68,15 +67,15 @@ procedure FormShow(Sender: TObject); procedure MoveDownButtonClick(Sender: TObject); procedure MoveUpButtonClick(Sender: TObject); - procedure PathListBoxDrawItem(Control: TWinControl; Index: Integer; - ARect: TRect; State: TOwnerDrawState); + procedure PathListBoxDrawItem({%H-}Control: TWinControl; Index: Integer; + ARect: TRect; {%H-}State: TOwnerDrawState); procedure PathListBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure PathListBoxSelectionChange(Sender: TObject; User: boolean); + procedure PathListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); procedure ReplaceButtonClick(Sender: TObject); procedure ImportMenuItemClick(Sender: TObject); procedure TemplatesListBoxDblClick(Sender: TObject); - procedure TemplatesListBoxSelectionChange(Sender: TObject; User: boolean); + procedure TemplatesListBoxSelectionChange(Sender: TObject; {%H-}User: boolean); private FBaseDirectory: string; FEffectiveBaseDirectory: string; diff -Nru lazarus-1.4.4+dfsg/ide/procedurelist.lfm lazarus-1.6+dfsg/ide/procedurelist.lfm --- lazarus-1.4.4+dfsg/ide/procedurelist.lfm 2012-08-20 18:05:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/procedurelist.lfm 2015-06-10 09:02:56.000000000 +0000 @@ -12,11 +12,11 @@ OnResize = FormResize OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object StatusBar: TStatusBar Left = 0 - Height = 22 - Top = 666 + Height = 23 + Top = 665 Width = 952 Panels = < item @@ -33,6 +33,7 @@ Top = 0 Width = 952 Caption = 'TB' + EdgeBorders = [] TabOrder = 1 object tbAbout: TToolButton Left = 136 @@ -46,6 +47,7 @@ end object ToolButton2: TToolButton Left = 131 + Height = 22 Top = 2 Width = 5 Caption = 'ToolButton2' @@ -63,6 +65,7 @@ end object ToolButton4: TToolButton Left = 103 + Height = 22 Top = 2 Width = 5 Caption = 'ToolButton4' @@ -93,10 +96,12 @@ end object ToolButton7: TToolButton Left = 52 + Height = 22 Top = 2 Width = 5 Caption = 'ToolButton7' Style = tbsDivider + Visible = False end object tbChangeFont: TToolButton Left = 29 @@ -104,11 +109,14 @@ Top = 2 Caption = 'tbChangeFont' ImageIndex = 4 + OnClick = tbChangeFontClick ParentShowHint = False ShowHint = True + Visible = False end object ToolButton9: TToolButton Left = 24 + Height = 22 Top = 2 Width = 5 Caption = 'ToolButton9' @@ -127,13 +135,13 @@ end object pnlHeader: TPanel Left = 0 - Height = 41 + Height = 35 Top = 26 Width = 952 Align = alTop AutoSize = True BevelOuter = bvNone - ClientHeight = 41 + ClientHeight = 35 ClientWidth = 952 ParentColor = False TabOrder = 2 @@ -141,9 +149,9 @@ AnchorSideTop.Control = pnlHeader AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 12 - Width = 45 + Height = 15 + Top = 10 + Width = 35 BorderSpacing.Around = 6 Caption = '&Search' ParentColor = False @@ -154,9 +162,9 @@ AnchorSideTop.Control = pnlHeader AnchorSideTop.Side = asrCenter Left = 581 - Height = 17 - Top = 12 - Width = 48 + Height = 15 + Top = 10 + Width = 40 BorderSpacing.Left = 12 BorderSpacing.Around = 6 Caption = '&Objects' @@ -169,10 +177,10 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = cbObjects AnchorSideBottom.Side = asrBottom - Left = 57 - Height = 29 + Left = 47 + Height = 23 Top = 6 - Width = 506 + Width = 516 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Top = 6 @@ -188,13 +196,13 @@ AnchorSideTop.Control = pnlHeader AnchorSideRight.Control = pnlHeader AnchorSideRight.Side = asrBottom - Left = 635 - Height = 29 + Left = 627 + Height = 23 Top = 6 - Width = 311 + Width = 319 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 OnChange = cbObjectsChange Sorted = True Style = csDropDownList @@ -203,8 +211,8 @@ end object LV: TListView Left = 0 - Height = 599 - Top = 67 + Height = 604 + Top = 61 Width = 952 Align = alClient Columns = < diff -Nru lazarus-1.4.4+dfsg/ide/procedurelist.pas lazarus-1.6+dfsg/ide/procedurelist.pas --- lazarus-1.4.4+dfsg/ide/procedurelist.pas 2015-03-24 21:42:22.000000000 +0000 +++ lazarus-1.6+dfsg/ide/procedurelist.pas 2015-06-10 09:02:56.000000000 +0000 @@ -39,7 +39,7 @@ uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, StdCtrls, - CodeTree, CodeToolManager, CodeAtom, CodeCache, + CodeTree, CodeToolManager, CodeCache, IDEImagesIntf; type @@ -66,7 +66,7 @@ procedure cbObjectsChange(Sender: TObject); procedure edMethodsChange(Sender: TObject); procedure edMethodsKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); + {%H-}Shift: TShiftState); procedure edMethodsKeyPress(Sender: TObject; var Key: char); procedure FormCreate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: char); @@ -75,6 +75,7 @@ procedure LVDblClick(Sender: TObject); procedure LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); procedure tbAboutClick(Sender: TObject); + procedure tbChangeFontClick(Sender: TObject); procedure tbCopyClick(Sender: TObject); private FCaret: TCodeXYPosition; @@ -105,8 +106,7 @@ {$R *.lfm} uses - MenuIntf - ,SrcEditorIntf + SrcEditorIntf ,PascalParserTool ,KeywordFuncLists ,LCLType @@ -172,11 +172,8 @@ c: Char; i: Integer; begin - if SubStr='' then - begin - Result := true; - end - else + Result := SubStr=''; + if not Result then begin Src := PChar(Str); PFilter := PChar(SubStr); @@ -240,6 +237,11 @@ ShowMessage(cAbout); end; +procedure TProcedureListForm.tbChangeFontClick(Sender: TObject); +begin + +end; + procedure TProcedureListForm.tbCopyClick(Sender: TObject); begin diff -Nru lazarus-1.4.4+dfsg/ide/progresswnd.pas lazarus-1.6+dfsg/ide/progresswnd.pas --- lazarus-1.4.4+dfsg/ide/progresswnd.pas 2011-01-11 16:41:54.000000000 +0000 +++ lazarus-1.6+dfsg/ide/progresswnd.pas 2015-10-26 21:34:11.000000000 +0000 @@ -251,7 +251,7 @@ inherited Notification(AComponent, Operation); if Operation=opRemove then begin - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TIDEProgressWindow.Notification'){$ENDIF}; try for i:=Count-1 downto 0 do if Items[i]=AComponent then @@ -263,7 +263,7 @@ if Count=0 then Hide; finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TIDEProgressWindow.Notification'){$ENDIF}; end; end; end; @@ -343,14 +343,14 @@ Result.ProgressBar.Top:=10; // show panel - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TIDEProgressWindow.AddItem'){$ENDIF}; try AutoSize:=false; Result.Panel.Parent:=Self; AutoSize:=true; Show; finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TIDEProgressWindow.AddItem'){$ENDIF}; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/projectdefs.pas lazarus-1.6+dfsg/ide/projectdefs.pas --- lazarus-1.4.4+dfsg/ide/projectdefs.pas 2014-07-03 11:50:41.000000000 +0000 +++ lazarus-1.6+dfsg/ide/projectdefs.pas 2016-01-03 12:28:36.000000000 +0000 @@ -37,10 +37,9 @@ interface uses - Classes, SysUtils, - Controls, Forms, SynRegExpr, FileProcs, Laz2_XMLCfg, LCLProc, + Classes, SysUtils, Controls, Forms, + FileProcs, LazFileUtils, Laz2_XMLCfg, LazUTF8, CompOptsIntf, ProjectIntf, LazIDEIntf, - ProjectResourcesIntf, frmCustomApplicationOptions, PublishModule, IDEProcs, LazarusIDEStrConsts; type @@ -1261,8 +1260,7 @@ Result := GetLocalizedName + LineEnding+LineEnding + lisApplicationProgramDescriptor; end; -function TProjectApplicationDescriptor.InitProject( - AProject: TLazProject): TModalResult; +function TProjectApplicationDescriptor.InitProject(AProject: TLazProject): TModalResult; var NewSource: String; MainFile: TLazProjectFile; @@ -1291,7 +1289,7 @@ +' { you can add units after this };'+LineEnding +LineEnding +'begin'+LineEnding - +' RequireDerivedFormResource := True;'+LineEnding + +' RequireDerivedFormResource:=True;'+LineEnding +' Application.Initialize;'+LineEnding +' Application.Run;'+LineEnding +'end.'+LineEnding @@ -1481,7 +1479,9 @@ begin if AProject.MainFile<>nil then Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1, - [ofProjectLoading,ofRegularFile]); + [ofProjectLoading,ofRegularFile]) + else + Result:=mrCancel; end; { TProjectEmptyProgramDescriptor } diff -Nru lazarus-1.4.4+dfsg/ide/projecticon.pas lazarus-1.6+dfsg/ide/projecticon.pas --- lazarus-1.4.4+dfsg/ide/projecticon.pas 2015-02-26 09:02:13.000000000 +0000 +++ lazarus-1.6+dfsg/ide/projecticon.pas 2015-07-07 11:43:38.000000000 +0000 @@ -34,9 +34,9 @@ interface uses - Classes, SysUtils, FileUtil, Laz2_XMLCfg, lazutf8classes, Process, LCLProc, - Controls, Graphics, Forms, CodeToolManager, FileProcs, LazConf, LResources, - resource, groupiconresource, ProjectIntf, ProjectResourcesIntf; + Classes, SysUtils, FileUtil, Laz2_XMLCfg, lazutf8classes, LCLProc, + Graphics, FileProcs, LazFileUtils, LazFileCache, + resource, groupiconresource, ProjectResourcesIntf; type TIconData = array of byte; diff -Nru lazarus-1.4.4+dfsg/ide/projectinspector.lfm lazarus-1.6+dfsg/ide/projectinspector.lfm --- lazarus-1.4.4+dfsg/ide/projectinspector.lfm 2014-10-30 19:47:24.000000000 +0000 +++ lazarus-1.6+dfsg/ide/projectinspector.lfm 2015-06-03 15:49:59.000000000 +0000 @@ -1,7 +1,7 @@ object ProjectInspectorForm: TProjectInspectorForm - Left = 393 + Left = 670 Height = 456 - Top = 104 + Top = 134 Width = 299 ActiveControl = ItemsTreeView AllowDropFiles = True @@ -9,7 +9,7 @@ ClientHeight = 456 ClientWidth = 299 OnDropFiles = FormDropFiles - LCLVersion = '1.3' + LCLVersion = '1.5' object ItemsTreeView: TTreeView Left = 0 Height = 378 @@ -39,6 +39,7 @@ Top = 48 Width = 299 Align = alTop + BevelOuter = bvNone ClientHeight = 28 ClientWidth = 299 TabOrder = 1 @@ -46,13 +47,14 @@ AnchorSideLeft.Control = BtnPanel AnchorSideTop.Control = BtnPanel AnchorSideTop.Side = asrCenter - Left = 1 - Height = 26 - Top = 1 + Left = 2 + Height = 25 + Top = 2 Width = 25 Align = alLeft AllowAllUp = True AutoSize = True + BorderSpacing.Around = 2 Constraints.MinHeight = 25 Constraints.MinWidth = 25 OnClick = OpenButtonClick @@ -64,13 +66,14 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = OpenButton AnchorSideTop.Side = asrCenter - Left = 37 + Left = 40 Height = 25 Top = 2 Width = 25 AllowAllUp = True AutoSize = True BorderSpacing.Left = 11 + BorderSpacing.Around = 2 Constraints.MinHeight = 25 Constraints.MinWidth = 25 GroupIndex = 1 @@ -83,13 +86,13 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = OpenButton AnchorSideTop.Side = asrCenter - Left = 63 + Left = 67 Height = 25 Top = 2 Width = 25 AllowAllUp = True AutoSize = True - BorderSpacing.Left = 1 + BorderSpacing.Around = 2 Constraints.MinHeight = 25 Constraints.MinWidth = 25 GroupIndex = 2 @@ -102,10 +105,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = SortAlphabeticallyButton AnchorSideTop.Side = asrCenter - Left = 91 - Height = 28 - Top = 0 - Width = 205 + Left = 95 + Height = 23 + Top = 3 + Width = 201 UseFormActivate = True ButtonWidth = 23 NumGlyphs = 1 @@ -132,5 +135,32 @@ OnPopup = ItemsPopupMenuPopup left = 72 top = 112 + object MenuItem1: TMenuItem + Caption = 'New Item1' + end + end + object AddPopupMenu: TPopupMenu + left = 74 + top = 163 + object mnuAddDiskFile: TMenuItem + Caption = 'Add file from disk' + Default = True + OnClick = mnuAddBitBtnClick + end + object MenuItem2: TMenuItem + Caption = '-' + end + object mnuAddDiskFiles: TMenuItem + Caption = 'Add files' + OnClick = mnuAddDiskFilesClick + end + object mnuAddEditorFiles: TMenuItem + Caption = 'Add editor files' + OnClick = mnuAddEditorFilesClick + end + object mnuAddReq: TMenuItem + Caption = 'Add requirement' + OnClick = mnuAddReqClick + end end end diff -Nru lazarus-1.4.4+dfsg/ide/projectinspector.pas lazarus-1.6+dfsg/ide/projectinspector.pas --- lazarus-1.4.4+dfsg/ide/projectinspector.pas 2014-09-24 17:40:05.000000000 +0000 +++ lazarus-1.6+dfsg/ide/projectinspector.pas 2015-07-04 23:08:00.000000000 +0000 @@ -56,8 +56,8 @@ uses Classes, SysUtils, LCLProc, LCLType, Forms, Controls, Buttons, ComCtrls, - Menus, Dialogs, FileUtil, LazFileCache, ExtCtrls, Graphics, - CodeToolManager, CodeCache, TreeFilterEdit, + Menus, Dialogs, FileUtil, LazFileUtils, LazFileCache, ExtCtrls, Graphics, + TreeFilterEdit, // IDEIntf IDEHelpIntf, IDECommands, IDEDialogs, IDEImagesIntf, LazIDEIntf, ProjectIntf, PackageIntf, @@ -86,9 +86,16 @@ { TProjectInspectorForm } TProjectInspectorForm = class(TForm,IFilesEditorInterface) + AddPopupMenu: TPopupMenu; BtnPanel: TPanel; DirectoryHierarchyButton: TSpeedButton; FilterEdit: TTreeFilterEdit; + MenuItem1: TMenuItem; + MenuItem2: TMenuItem; + mnuAddEditorFiles: TMenuItem; + mnuAddDiskFile: TMenuItem; + mnuAddDiskFiles: TMenuItem; + mnuAddReq: TMenuItem; OpenButton: TSpeedButton; ItemsTreeView: TTreeView; ItemsPopupMenu: TPopupMenu; @@ -97,25 +104,26 @@ ToolBar: TToolBar; // toolbuttons AddBitBtn: TToolButton; - AddMoreBitBtn: TToolButton; RemoveBitBtn: TToolButton; OptionsBitBtn: TToolButton; HelpBitBtn: TToolButton; - procedure AddBitBtnClick(Sender: TObject); - procedure AddMoreBitBtnClick(Sender: TObject); procedure CopyMoveToDirMenuItemClick(Sender: TObject); procedure DirectoryHierarchyButtonClick(Sender: TObject); procedure FormDropFiles(Sender: TObject; const FileNames: array of String); procedure ItemsPopupMenuPopup(Sender: TObject); procedure ItemsTreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView; - Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; - var PaintImages, DefaultDraw: Boolean); + Node: TTreeNode; {%H-}State: TCustomDrawState; Stage: TCustomDrawStage; + var {%H-}PaintImages, {%H-}DefaultDraw: Boolean); procedure ItemsTreeViewDblClick(Sender: TObject); procedure ItemsTreeViewDragDrop(Sender, Source: TObject; X, Y: Integer); procedure ItemsTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); - procedure ItemsTreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure ItemsTreeViewKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure ItemsTreeViewSelectionChanged(Sender: TObject); + procedure mnuAddBitBtnClick(Sender: TObject); + procedure mnuAddDiskFilesClick(Sender: TObject); + procedure mnuAddEditorFilesClick(Sender: TObject); + procedure mnuAddReqClick(Sender: TObject); procedure MoveDependencyUpClick(Sender: TObject); procedure MoveDependencyDownClick(Sender: TObject); procedure SetDependencyDefaultFilenameMenuItemClick(Sender: TObject); @@ -161,7 +169,9 @@ ImageIndexDirectory: integer; FFlags: TProjectInspectorFlags; FProjectNodeDataList : array [TPENodeType] of TPENodeData; + procedure AddMenuItemClick(Sender: TObject); function AddOneFile(aFilename: string): TModalResult; + procedure DoAddMoreDialog(AInitTab: TAddToProjectType); procedure FreeNodeData(Typ: TPENodeType); function CreateNodeData(Typ: TPENodeType; aName: string; aRemoved: boolean): TPENodeData; procedure SetDependencyDefaultFilename(AsPreferred: boolean); @@ -170,21 +180,21 @@ procedure SetShowDirectoryHierarchy(const AValue: boolean); procedure SetSortAlphabetically(const AValue: boolean); procedure SetupComponents; - function OnTreeViewGetImageIndex(Str: String; Data: TObject; var AIsEnabled: Boolean): Integer; + function OnTreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer; procedure OnProjectBeginUpdate(Sender: TObject); procedure OnProjectEndUpdate(Sender: TObject; ProjectChanged: boolean); procedure EnableI18NForSelectedLFM(TheEnable: boolean); protected procedure KeyUp(var Key: Word; Shift: TShiftState); override; - procedure IdleHandler(Sender: TObject; var Done: Boolean); + procedure IdleHandler(Sender: TObject; var {%H-}Done: Boolean); public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; function IsUpdateLocked: boolean; inline; - procedure UpdateTitle(Immediately: boolean = false); - procedure UpdateProjectFiles(Immediately: boolean = false); - procedure UpdateRequiredPackages(Immediately: boolean = false); - procedure UpdateButtons(Immediately: boolean = false); + procedure UpdateTitle; + procedure UpdateProjectFiles; + procedure UpdateRequiredPackages; + procedure UpdateButtons; procedure UpdatePending; function CanUpdate(Flag: TProjectInspectorFlag): boolean; function GetSingleSelectedDependency: TPkgDependency; @@ -306,7 +316,7 @@ else if Key = VK_DELETE then RemoveBitBtnClick(Nil) else if Key = VK_INSERT then - AddBitBtnClick(Nil) + AddMenuItemClick(Nil) else Handled := False; finally @@ -320,6 +330,51 @@ UpdateButtons; end; +procedure TProjectInspectorForm.mnuAddBitBtnClick(Sender: TObject); +var + OpenDialog: TOpenDialog; + i: Integer; + ADirectory: String; +begin + OpenDialog:=TOpenDialog.Create(nil); + try + InputHistories.ApplyFileDialogSettings(OpenDialog); + ADirectory:=LazProject.ProjectDirectory; + if not FilenameIsAbsolute(ADirectory) then ADirectory:=''; + if ADirectory<>'' then + OpenDialog.InitialDir:=ADirectory; + OpenDialog.Title:=lisOpenFile; + OpenDialog.Options:=OpenDialog.Options + +[ofFileMustExist,ofPathMustExist,ofAllowMultiSelect]; + OpenDialog.Filter:=dlgFilterAll+' ('+GetAllFilesMask+')|'+GetAllFilesMask + +'|'+dlgFilterLazarusUnit+' (*.pas;*.pp)|*.pas;*.pp' + +'|'+dlgFilterLazarusInclude+' (*.inc)|*.inc' + +'|'+dlgFilterLazarusForm+' (*.lfm;*.dfm)|*.lfm;*.dfm'; + if OpenDialog.Execute then begin + for i:=0 to OpenDialog.Files.Count-1 do + if not (AddOneFile(OpenDialog.Files[i]) in [mrOk, mrIgnore]) then break; + end; + InputHistories.StoreFileDialogSettings(OpenDialog); + finally + OpenDialog.Free; + end; +end; + +procedure TProjectInspectorForm.mnuAddDiskFilesClick(Sender: TObject); +begin + DoAddMoreDialog(a2pFiles); +end; + +procedure TProjectInspectorForm.mnuAddEditorFilesClick(Sender: TObject); +begin + DoAddMoreDialog(a2pEditorFiles); +end; + +procedure TProjectInspectorForm.mnuAddReqClick(Sender: TObject); +begin + DoAddMoreDialog(a2pRequiredPkg); +end; + procedure TProjectInspectorForm.MoveDependencyUpClick(Sender: TObject); var Dependency: TPkgDependency; @@ -398,42 +453,32 @@ FNextSelectedPart:=NewFile; end; -procedure TProjectInspectorForm.AddBitBtnClick(Sender: TObject); -var - OpenDialog: TOpenDialog; - i: Integer; - ADirectory: String; -begin - OpenDialog:=TOpenDialog.Create(nil); - try - InputHistories.ApplyFileDialogSettings(OpenDialog); - ADirectory:=LazProject.ProjectDirectory; - if not FilenameIsAbsolute(ADirectory) then ADirectory:=''; - if ADirectory<>'' then - OpenDialog.InitialDir:=ADirectory; - OpenDialog.Title:=lisOpenFile; - OpenDialog.Options:=OpenDialog.Options - +[ofFileMustExist,ofPathMustExist,ofAllowMultiSelect]; - OpenDialog.Filter:=dlgAllFiles+' ('+GetAllFilesMask+')|'+GetAllFilesMask - +'|'+lisLazarusUnit+' (*.pas;*.pp)|*.pas;*.pp' - +'|'+lisLazarusInclude+' (*.inc)|*.inc' - +'|'+lisLazarusForm+' (*.lfm;*.dfm)|*.lfm;*.dfm'; - if OpenDialog.Execute then begin - for i:=0 to OpenDialog.Files.Count-1 do - if not (AddOneFile(OpenDialog.Files[i]) in [mrOk, mrIgnore]) then break; - end; - InputHistories.StoreFileDialogSettings(OpenDialog); - finally - OpenDialog.Free; +procedure TProjectInspectorForm.AddMenuItemClick(Sender: TObject); + + function _NodeTreeIsIn(xIterNode, xParentNode: TTreeNode): Boolean; + begin + Result := (xIterNode = xParentNode); + if not Result and Assigned(xIterNode) then + Result := _NodeTreeIsIn(xIterNode.Parent, xParentNode); end; + +begin + //check the selected item in ItemsTreeView + // -> if it's "Required Packages", call "New Requirement" (mnuAddReqClick) + // -> otherwise (selected = "Files") call "Add files from file system" (AddBitBtnClick) + if _NodeTreeIsIn(ItemsTreeView.Selected, FDependenciesNode) then + mnuAddReqClick(Sender) + else + mnuAddBitBtnClick(Sender); end; -procedure TProjectInspectorForm.AddMoreBitBtnClick(Sender: TObject); +procedure TProjectInspectorForm.DoAddMoreDialog(AInitTab: TAddToProjectType); var AddResult: TAddToProjectResult; i: Integer; begin - if ShowAddToProjectDlg(LazProject,AddResult)<>mrOk then exit; + AddResult:=nil; + if ShowAddToProjectDlg(LazProject,AddResult,AInitTab)<>mrOk then exit; case AddResult.AddType of a2pFiles: @@ -455,6 +500,8 @@ EndUpdate; end; + else + Showmessage('Not implemented'); end; AddResult.Free; @@ -494,7 +541,7 @@ ItemCnt: integer; function AddPopupMenuItem(const ACaption: string; AnEvent: TNotifyEvent; - EnabledFlag: boolean): TMenuItem; + EnabledFlag: boolean = True): TMenuItem; begin if ItemsPopupMenu.Items.Count<=ItemCnt then begin Result:=TMenuItem.Create(Self); @@ -578,16 +625,30 @@ end; end; - // general - AddPopupMenuItem(lisOpen, @OpenButtonClick, CanOpenCount>0); - AddPopupMenuItem(lisBtnDlgAdd, @AddBitBtnClick, AddBitBtn.Enabled); - AddPopupMenuItem(lisRemove, @RemoveBitBtnClick, CanRemoveCount>0); - - // files section - AddPopupMenuItem(lisCopyMoveFileToDirectory,@CopyMoveToDirMenuItemClick, - (CanMoveFileCount>0)); - AddPopupMenuItem(lisRemoveNonExistingFiles,@RemoveNonExistingFilesMenuItemClick, - not LazProject.IsVirtual); + if ItemsTreeView.Selected = FFilesNode then + begin + // Only the Files node is selected. + Assert(AddBitBtn.Enabled, 'AddBitBtn not Enabled'); + AddPopupMenuItem(lisBtnDlgAdd, @mnuAddBitBtnClick); + if not LazProject.IsVirtual then + AddPopupMenuItem(lisRemoveNonExistingFiles,@RemoveNonExistingFilesMenuItemClick); + end + else if ItemsTreeView.Selected = FDependenciesNode then + begin + // Only the Required Packages node is selected. + AddPopupMenuItem(lisBtnDlgAdd, @mnuAddReqClick); + end + else begin + // Files, dependencies or everything mixed is selected. + if CanOpenCount>0 then + AddPopupMenuItem(lisOpen, @OpenButtonClick); + if CanRemoveCount>0 then + AddPopupMenuItem(lisRemove, @RemoveBitBtnClick); + // files section + if CanMoveFileCount>0 then + AddPopupMenuItem(lisCopyMoveFileToDirectory,@CopyMoveToDirMenuItemClick); + end; + if LazProject.EnableI18N and LazProject.EnableI18NForLFM and (HasLFMCount>0) then begin AddPopupMenuItem(lisEnableI18NForLFM, @@ -936,12 +997,17 @@ ToolBar.Images := IDEImages.Images_16; FilterEdit.OnGetImageIndex:=@OnTreeViewGetImageIndex; - AddBitBtn := CreateToolButton('AddBitBtn', lisAdd, lisPckEditAddFiles, 'laz_add', @AddBitBtnClick); - AddMoreBitBtn := CreateToolButton('AddMoreBitBtn', lisDlgAdd, lisPckEditAddOtherItems, 'laz_addmore', @AddMoreBitBtnClick); + AddBitBtn := CreateToolButton('AddBitBtn', lisAddSub, lisClickToSeeTheChoices, 'laz_add', nil); RemoveBitBtn := CreateToolButton('RemoveBitBtn', lisRemove, lisPckEditRemoveSelectedItem, 'laz_delete', @RemoveBitBtnClick); CreateDivider; - OptionsBitBtn := CreateToolButton('OptionsBitBtn', dlgFROpts, lisPckEditEditGeneralOptions, 'menu_environment_options', @OptionsBitBtnClick); - HelpBitBtn := CreateToolButton('HelpBitBtn', GetButtonCaption(idButtonHelp), lisPkgEdThereAreMoreFunctionsInThePopupmenu, 'menu_help', @HelpBitBtnClick); + OptionsBitBtn := CreateToolButton('OptionsBitBtn', lisOptions, lisPckEditEditGeneralOptions, 'menu_environment_options', @OptionsBitBtnClick); + HelpBitBtn := CreateToolButton('HelpBitBtn', GetButtonCaption(idButtonHelp), lisMenuOnlineHelp, 'menu_help', @HelpBitBtnClick); + + AddBitBtn.DropdownMenu:=AddPopupMenu; + mnuAddDiskFile.Caption:=lisPckEditAddFilesFromFileSystem; + mnuAddDiskFiles.Caption:=lisAddFilesInDirectory; + mnuAddEditorFiles.Caption:=lisProjAddEditorFile; + mnuAddReq.Caption:=lisProjAddNewRequirement; OpenButton.LoadGlyphFromResourceName(HInstance, 'laz_open'); OpenButton.Caption:=''; @@ -991,7 +1057,7 @@ end; end; -procedure TProjectInspectorForm.UpdateProjectFiles(Immediately: boolean); +procedure TProjectInspectorForm.UpdateProjectFiles; var CurFile: TUnitInfo; FilesBranch: TTreeFilterBranch; @@ -1027,7 +1093,7 @@ UpdateButtons; end; -procedure TProjectInspectorForm.UpdateRequiredPackages(Immediately: boolean); +procedure TProjectInspectorForm.UpdateRequiredPackages; var Dependency: TPkgDependency; RequiredBranch, RemovedBranch: TTreeFilterBranch; @@ -1101,7 +1167,8 @@ procedure TProjectInspectorForm.OnProjectEndUpdate(Sender: TObject; ProjectChanged: boolean); begin - UpdateAll; + if ProjectChanged then + UpdateAll; EndUpdate; end; @@ -1149,8 +1216,7 @@ Result:=TPkgDependency(Item); end; -function TProjectInspectorForm.TreeViewToInspector(TV: TTreeView - ): TProjectInspectorForm; +function TProjectInspectorForm.TreeViewToInspector(TV: TTreeView): TProjectInspectorForm; begin if TV=ItemsTreeView then Result:=Self @@ -1183,14 +1249,12 @@ ProjInspector:=nil; end; -function TProjectInspectorForm.ExtendIncSearchPath(NewIncPaths: string - ): boolean; +function TProjectInspectorForm.ExtendIncSearchPath(NewIncPaths: string): boolean; begin Result:=MainIDEInterface.ExtendProjectIncSearchPath(LazProject,NewIncPaths); end; -function TProjectInspectorForm.ExtendUnitSearchPath(NewUnitPaths: string - ): boolean; +function TProjectInspectorForm.ExtendUnitSearchPath(NewUnitPaths: string): boolean; begin Result:=MainIDEInterface.ExtendProjectUnitSearchPath(LazProject,NewUnitPaths); end; @@ -1289,7 +1353,7 @@ end; end; -procedure TProjectInspectorForm.UpdateTitle(Immediately: boolean); +procedure TProjectInspectorForm.UpdateTitle; var NewCaption: String; begin @@ -1305,7 +1369,7 @@ end; end; -procedure TProjectInspectorForm.UpdateButtons(Immediately: boolean); +procedure TProjectInspectorForm.UpdateButtons; var i: Integer; TVNode: TTreeNode; @@ -1354,13 +1418,13 @@ ItemsTreeView.BeginUpdate; try if pifNeedUpdateFiles in FFlags then - UpdateProjectFiles(true); + UpdateProjectFiles; if pifNeedUpdateDependencies in FFlags then - UpdateRequiredPackages(true); + UpdateRequiredPackages; if pifNeedUpdateTitle in FFlags then - UpdateTitle(true); + UpdateTitle; if pifNeedUpdateButtons in FFlags then - UpdateButtons(true); + UpdateButtons; IdleConnected:=false; finally ItemsTreeView.EndUpdate; diff -Nru lazarus-1.4.4+dfsg/ide/project.pp lazarus-1.6+dfsg/ide/project.pp --- lazarus-1.4.4+dfsg/ide/project.pp 2015-05-01 10:39:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/project.pp 2016-01-18 23:42:01.000000000 +0000 @@ -46,16 +46,17 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, TypInfo, FPCAdds, LCLProc, LCLIntf, LCLType, Forms, - FileUtil, Laz2_XMLCfg, Controls, Dialogs, maps, LazFileUtils, LazFileCache, - LazUTF8, - // codetools + // RTL + FCL + LCL + Classes, SysUtils, TypInfo, LCLProc, Forms, Controls, Dialogs, maps, + // CodeTools CodeToolsConfig, ExprEval, DefineTemplates, BasicCodeTools, CodeToolsCfgScript, CodeToolManager, CodeCache, FileProcs, + // LazUtils + FPCAdds, FileUtil, LazFileUtils, LazFileCache, LazUTF8, Laz2_XMLCfg, // IDEIntf PropEdits, CompOptsIntf, ProjectIntf, MacroIntf, MacroDefIntf, UnitResources, PackageIntf, SrcEditorIntf, IDEOptionsIntf, IDEDialogs, LazIDEIntf, - // synedit + // SynEdit SynEdit, // IDE CompOptsModes, ProjectResources, LazConf, W32Manifest, ProjectIcon, @@ -76,8 +77,6 @@ Merge: boolean) of object; TOnSaveProjectInfo = procedure(TheProject: TProject; XMLConfig: TXMLConfig; WriteFlags: TProjectWriteFlags) of object; - TOnProjectGetTestDirectory = procedure(TheProject: TProject; - out TestDir: string) of object; TOnChangeProjectInfoFile = procedure(TheProject: TProject) of object; TOnSaveUnitSessionInfoInfo = procedure(AUnitInfo: TUnitInfo) of object; @@ -104,6 +103,9 @@ const AllUnitCompDependencyTypes = [low(TUnitCompDependencyType)..high(TUnitCompDependencyType)]; + // Names for extra buildmodes which may be created automatically. + DebugModeName = 'Debug'; + ReleaseModeName = 'Release'; type @@ -544,8 +546,7 @@ function CreateDiff(CompOpts: TBaseCompilerOptions; Tool: TCompilerDiffTool = nil): boolean; override; // true if differ procedure InvalidateOptions; - procedure SetAlternativeCompile(const Command: string; ScanFPCMsgs: boolean - ); override; + procedure SetAlternativeCompile(const Command: string; ScanFPCMsgs: boolean); override; public property LazProject: TProject read FProject; property BuildMode: TProjectBuildMode read FBuildMode; @@ -574,19 +575,11 @@ { TProjectBuildMode } - TProjectBuildMode = class(TComponent) + TProjectBuildMode = class(TLazProjectBuildMode) private - FChangeStamp: int64; - fSavedChangeStamp: int64; FCompilerOptions: TProjectCompilerOptions; - FIdentifier: string; - FInSession: boolean; - fOnChanged: TMethodList; - function GetModified: boolean; - procedure SetIdentifier(const AValue: string); - procedure SetInSession(const AValue: boolean); - procedure OnItemChanged(Sender: TObject); - procedure SetModified(const AValue: boolean); + protected + function GetLazCompilerOptions: TLazCompilerOptions; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -600,28 +593,18 @@ procedure SaveMacroValuesAtOldPlace(XMLConfig: TXMLConfig; const Path: string); procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string; IsDefault: Boolean; var Cnt: integer); - property ChangeStamp: int64 read FChangeStamp; - procedure IncreaseChangeStamp; - procedure AddOnChangedHandler(const Handler: TNotifyEvent); - procedure RemoveOnChangedHandler(const Handler: TNotifyEvent); - function GetCaption: string; - function GetIndex: integer; + function GetCaption: string; override; + function GetIndex: integer; override; public - property Name; // See Identifier for the name of the buildmode - property InSession: boolean read FInSession write SetInSession; - property Identifier: string read FIdentifier write SetIdentifier;// arbitrary string - property Modified: boolean read GetModified write SetModified; - // copied by Assign, compared by Equals, cleared by Clear property CompilerOptions: TProjectCompilerOptions read FCompilerOptions; end; { TProjectBuildModes } - TProjectBuildModes = class(TComponent) + TProjectBuildModes = class(TLazProjectBuildModes) private FAssigning: Boolean; - FChangeStamp: integer; FSessionMatrixOptions: TBuildMatrixOptions; FSharedMatrixOptions: TBuildMatrixOptions; fSavedChangeStamp: int64; @@ -646,6 +629,8 @@ // Used by SaveToXMLConfig procedure SaveSessionData(const Path: string); procedure SaveSharedMatrixOptions(const Path: string); + protected + function GetLazBuildModes(Index: integer): TLazProjectBuildMode; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -658,7 +643,7 @@ function Find(Identifier: string): TProjectBuildMode; function Add(Identifier: string): TProjectBuildMode; procedure Move(FromIndex, ToIndex: integer); - function Count: integer; + function Count: integer; override; procedure IncreaseChangeStamp; procedure AddOnChangedHandler(const Handler: TNotifyEvent); procedure RemoveOnChangedHandler(const Handler: TNotifyEvent); @@ -667,10 +652,11 @@ function IsSessionMode(const ModeIdentifier: string): boolean; function IsSharedMode(const ModeIdentifier: string): boolean; procedure RenameMatrixMode(const OldName, NewName: string); + function CreateExtraModes(aCurMode: TProjectBuildMode): TProjectBuildMode; // load, save procedure LoadProjOptsFromXMLConfig(XMLConfig: TXMLConfig; const Path: string); procedure LoadSessionFromXMLConfig(XMLConfig: TXMLConfig; const Path: string; - LoadParts: boolean); + LoadAllOptions: boolean); procedure SaveProjOptsToXMLConfig(XMLConfig: TXMLConfig; const Path: string; SaveSession: boolean); procedure SaveSessionOptsToXMLConfig(XMLConfig: TXMLConfig; const Path: string; @@ -722,7 +708,6 @@ FAllEditorsInfoList: TUnitEditorInfoList; FAllEditorsInfoMap: TMap; FAutoCreateForms: boolean; - FChangeStamp: integer; FChangeStampSaved: integer; FEnableI18NForLFM: boolean; FLastCompileComplete: boolean; @@ -751,7 +736,6 @@ FOnChangeProjectInfoFile: TOnChangeProjectInfoFile; FOnEndUpdate: TEndUpdateProjectEvent; fOnFileBackup: TOnFileBackup; - FOnGetTestDirectory: TOnProjectGetTestDirectory; FOnLoadProjectInfo: TOnLoadProjectInfo; FOnSaveProjectInfo: TOnSaveProjectInfo; FOnSaveUnitSessionInfo: TOnSaveUnitSessionInfoInfo; @@ -773,18 +757,17 @@ FStateFlags: TLazProjectStateFlags; FStorePathDelim: TPathDelimSwitch; FUnitList: TFPList; // list of _all_ units (TUnitInfo) - FCustomDefines: TStrings; // list of user selectable defines for custom options + FOtherDefines: TStrings; // list of user selectable defines for custom options FUpdateLock: integer; FUseAsDefault: Boolean; // Variables used by ReadProject / WriteProject FXMLConfig: TXMLConfig; - FLoadParts: Boolean; + FLoadAllOptions: Boolean; // All options / just options used as default for new projects FFileVersion: Integer; FNewMainUnitID: LongInt; FProjectWriteFlags: TProjectWriteFlags; FSaveSessionInLPI: Boolean; procedure ClearBuildModes; - function GetActiveBuildModeID: string; function GetAllEditorsInfo(Index: Integer): TUnitEditorInfo; function GetCompilerOptions: TProjectCompilerOptions; function GetBaseCompilerOptions: TBaseCompilerOptions; @@ -811,10 +794,10 @@ const OldUnitName, NewUnitName: string; CheckIfAllowed: boolean; var Allowed: boolean); procedure SetActiveBuildMode(const AValue: TProjectBuildMode); - procedure SetActiveBuildModeID(aIdent: string); procedure SetAutoOpenDesignerFormsDisabled(const AValue: boolean); procedure SetEnableI18N(const AValue: boolean); procedure SetEnableI18NForLFM(const AValue: boolean); + procedure SetLastCompilerParams(AValue: string); procedure SetMainProject(const AValue: boolean); procedure SetMainUnitID(const AValue: Integer); procedure SetPOOutputDirectory(const AValue: string); @@ -839,7 +822,7 @@ // Methods for ReadProject function LoadOldProjectType(const Path: string): TOldProjectType; procedure LoadFlags(const Path: string); - procedure LoadCustomDefines(const Path: string); + procedure LoadOtherDefines(const Path: string); procedure LoadSessionInfo(const Path: string; Merge: boolean); procedure LoadFromLPI; procedure LoadFromSession; @@ -848,26 +831,29 @@ // Methods for WriteProject procedure SaveFlags(const Path: string); procedure SaveUnits(const Path: string; SaveSession: boolean); - procedure SaveCustomDefines(const Path: string); + procedure SaveOtherDefines(const Path: string); procedure SaveSessionInfo(const Path: string); procedure SaveToLPI; procedure SaveToSession; function DoWrite(Filename: String; IsLpi: Boolean): TModalResult; protected + function GetActiveBuildModeID: string; override; function GetDefineTemplates: TProjPackDefineTemplates; + function GetFiles(Index: integer): TLazProjectFile; override; + function GetLazBuildModes: TLazProjectBuildModes; override; function GetMainFile: TLazProjectFile; override; function GetMainFileID: Integer; override; - procedure SetMainFileID(const AValue: Integer); override; - function GetFiles(Index: integer): TLazProjectFile; override; - procedure SetFlags(const AValue: TProjectFlags); override; function GetModified: boolean; override; function GetProjectInfoFile: string; override; - procedure SetProjectInfoFile(const NewFilename: string); override; - procedure SetSessionStorage(const AValue: TProjectSessionStorage); override; + function GetUseManifest: boolean; override; + procedure SetActiveBuildModeID(aIdent: string); override; + procedure SetExecutableType(const AValue: TProjectExecutableType); override; + procedure SetFlags(const AValue: TProjectFlags); override; + procedure SetMainFileID(const AValue: Integer); override; procedure SetModified(const AValue: boolean); override; + procedure SetProjectInfoFile(const NewFilename: string); override; procedure SetSessionModified(const AValue: boolean); override; - procedure SetExecutableType(const AValue: TProjectExecutableType); override; - function GetUseManifest: boolean; override; + procedure SetSessionStorage(const AValue: TProjectSessionStorage); override; procedure SetUseManifest(AValue: boolean); override; protected // special unit lists @@ -895,18 +881,16 @@ function SomethingModified(CheckData, CheckSession: boolean; Verbose: boolean = false): boolean; function SomeDataModified(Verbose: boolean = false): boolean; function SomeSessionModified(Verbose: boolean = false): boolean; - procedure IncreaseChangeStamp; inline; - property ChangeStamp: integer read FChangeStamp; procedure MainSourceFilenameChanged; procedure GetUnitsChangedOnDisk(var AnUnitList: TFPList); function HasProjectInfoFileChangedOnDisk: boolean; procedure IgnoreProjectInfoFileOnDisk; function ReadProject(const NewProjectInfoFile: string; GlobalMatrixOptions: TBuildMatrixOptions; - LoadParts: Boolean = False): TModalResult; + LoadAllOptions: Boolean = True): TModalResult; function WriteProject(ProjectWriteFlags: TProjectWriteFlags; const OverrideProjectInfoFile: string; - GlobalMatrixOptions: TBuildMatrixOptions): TModalResult; + GlobalMatrixOptions: TBuildMatrixOptions): TModalResult; procedure UpdateExecutableType; override; procedure BackupSession; procedure RestoreSession; @@ -1025,7 +1009,6 @@ function GetOutputDirectory: string; function GetCompilerFilename: string; function GetStateFilename: string; - function GetTestDirectory: string; function GetCompileSourceFilename: string; procedure AutoAddOutputDirToIncPath; @@ -1050,8 +1033,6 @@ public property ActiveBuildMode: TProjectBuildMode read FActiveBuildMode write SetActiveBuildMode; - property ActiveBuildModeID: string read GetActiveBuildModeID - write SetActiveBuildModeID; property ActiveWindowIndexAtStart: integer read FActiveWindowIndexAtStart write FActiveWindowIndexAtStart; property AutoCreateForms: boolean read FAutoCreateForms write FAutoCreateForms; @@ -1059,7 +1040,6 @@ write SetAutoOpenDesignerFormsDisabled; property Bookmarks: TProjectBookmarkList read FBookmarks write FBookmarks; property BuildModes: TProjectBuildModes read FBuildModes; - property BuildModesBackup: TProjectBuildModes read FBuildModesBackup; property SkipCheckLCLInterfaces: boolean read FSkipCheckLCLInterfaces write SetSkipCheckLCLInterfaces; property CompilerOptions: TProjectCompilerOptions read GetCompilerOptions; @@ -1083,7 +1063,7 @@ property LastCompilerFilename: string read FLastCompilerFilename write FLastCompilerFilename; property LastCompilerParams: string read FLastCompilerParams - write FLastCompilerParams; + write SetLastCompilerParams; property LastCompileComplete: boolean read FLastCompileComplete write FLastCompileComplete; property MacroEngine: TTransferMacroList read FMacroEngine; property MainFilename: String read GetMainFilename; @@ -1095,8 +1075,6 @@ write FOnChangeProjectInfoFile; property OnEndUpdate: TEndUpdateProjectEvent read FOnEndUpdate write FOnEndUpdate; property OnFileBackup: TOnFileBackup read fOnFileBackup write fOnFileBackup; - property OnGetTestDirectory: TOnProjectGetTestDirectory read FOnGetTestDirectory - write FOnGetTestDirectory; property OnLoadProjectInfo: TOnLoadProjectInfo read FOnLoadProjectInfo write FOnLoadProjectInfo; property OnSaveProjectInfo: TOnSaveProjectInfo read FOnSaveProjectInfo @@ -1117,7 +1095,7 @@ property StorePathDelim: TPathDelimSwitch read FStorePathDelim write SetStorePathDelim; property TargetFilename: string read GetTargetFilename write SetTargetFilename; property Units[Index: integer]: TUnitInfo read GetUnits; - property CustomDefines: TStrings read FCustomDefines; + property OtherDefines: TStrings read FOtherDefines; property UpdateLock: integer read FUpdateLock; property UseAsDefault: Boolean read FUseAsDefault write FUseAsDefault; // for dialog only (used to store options once) end; @@ -1544,10 +1522,9 @@ end; repeat if not fSource.Save then begin - ACaption:='Write error'; - AText:='Unable to write file "'+Filename+'"!'; - Result:=Application.MessageBox(PChar(AText),PChar(ACaption) - ,MB_ABORTRETRYIGNORE); + ACaption:=lisCodeToolsDefsWriteError; + AText:=Format(lisUnableToWriteFile2, [Filename]); + Result:=IDEMessageDialog(ACaption,AText,mtError,mbAbortRetryIgnore); if Result=mrAbort then exit; if Result=mrIgnore then Result:=mrOk; end else begin @@ -1573,10 +1550,9 @@ end; repeat if not fSource.SaveToFile(AFileName) then begin - ACaption:='Write error'; - AText:='Unable to write file "'+AFilename+'"!'; - Result:=Application.MessageBox(PChar(AText),PChar(ACaption) - ,MB_ABORTRETRYIGNORE); + ACaption:=lisCodeToolsDefsWriteError; + AText:=Format(lisUnableToWriteFile2, [AFilename]); + Result:=IDEMessageDialog(ACaption,AText,mtError,mbAbortRetryIgnore); if Result=mrAbort then exit; if Result=mrIgnore then Result:=mrOk; end else @@ -1599,7 +1575,7 @@ if NewSource=nil then begin ACaption:=lisCodeToolsDefsReadError; AText:=Format(lisUnableToReadFile2, [Filename]); - Result:=Application.MessageBox(PChar(AText),PChar(ACaption),MB_ABORTRETRYIGNORE); + Result:=IDEMessageDialog(ACaption,AText,mtError,mbAbortRetryIgnore); if Result in [mrAbort,mrIgnore] then exit; end else begin @@ -2180,7 +2156,7 @@ begin Src:=SourceText; if Beautify then - Src:=SourceEditorManagerIntf.ReIndent(Src); + Src:=SourceEditorManagerIntf.Beautify(Src); Source.Source:=Src; end; @@ -2293,7 +2269,9 @@ function TUnitInfo.AddBookmark(X, Y, ID: integer): integer; begin if FSetBookmarLock = 0 then - Result := Bookmarks.Add(X, Y, ID); + Result := Bookmarks.Add(X, Y, ID) + else + Result := -1; SessionModified := True; Project1.AddBookmark(X, Y, ID, Self); end; @@ -2635,7 +2613,10 @@ class function TProjectIDEOptions.GetInstance: TAbstractIDEOptions; begin - Result := Project1.IDEOptions; + if Project1<>nil then + Result := Project1.IDEOptions + else + Result := nil; end; class function TProjectIDEOptions.GetGroupCaption: string; @@ -2686,7 +2667,7 @@ FRunParameters:=TRunParamsOptions.Create; Title := ''; FUnitList := TFPList.Create; // list of TUnitInfo - FCustomDefines := TStringList.Create; + FOtherDefines := TStringList.Create; FResources := TProjectResources.Create(Self); ProjResources.OnModified := @EmbeddedObjectModified; @@ -2709,7 +2690,7 @@ FreeAndNil(FAllEditorsInfoList); FreeThenNil(FResources); FreeThenNil(FBookmarks); - FreeThenNil(FCustomDefines); + FreeThenNil(FOtherDefines); FreeThenNil(FUnitList); FreeThenNil(FJumpHistory); FreeThenNil(FSourceDirectories); @@ -2770,17 +2751,20 @@ Flags:=Flags-[pfUseDefaultCompilerOptions]; end; -procedure TProject.LoadCustomDefines(const Path: string); +procedure TProject.LoadOtherDefines(const Path: string); var Cnt, i: Integer; - s: String; + SubPath, s: String; begin - Cnt := FXMLConfig.GetValue(Path+'CustomDefines/Count', 0); + SubPath := 'OtherDefines/'; + if not FXMLConfig.HasPath(Path+SubPath, False) then + SubPath := 'CustomDefines/'; // Load from the old path name. + Cnt := FXMLConfig.GetValue(Path+SubPath+'Count', 0); for i := 0 to Cnt-1 do begin - s := FXMLConfig.GetValue(Path+'CustomDefines/Define'+IntToStr(i)+'/Value', ''); + s := FXMLConfig.GetValue(Path+SubPath+'Define'+IntToStr(i)+'/Value', ''); if s <> '' then - CustomDefines.Add(s); + FOtherDefines.Add(s); end; end; @@ -2865,7 +2849,6 @@ // automatically fixes broken lpi files. FNewMainUnitID := FXMLConfig.GetValue(Path+'General/MainUnit/Value', 0); Title := FXMLConfig.GetValue(Path+'General/Title/Value', ''); - UseAppBundle := FXMLConfig.GetValue(Path+'General/UseAppBundle/Value', True); AutoCreateForms := FXMLConfig.GetValue(Path+'General/AutoCreateForms/Value', true); // fpdoc @@ -2885,9 +2868,6 @@ end; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TProject.ReadProject E reading comp sets');{$ENDIF} - // Resources - ProjResources.ReadFromProjectFile(FXMLConfig, Path); - // load custom data LoadStringToStringTree(FXMLConfig,CustomData,Path+'CustomData/'); {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TProject.ReadProject update ct boss');{$ENDIF} @@ -2900,8 +2880,8 @@ RunParameterOptions.Load(FXMLConfig,Path,fPathDelimChanged); // load the Publish Options PublishOptions.LoadFromXMLConfig(FXMLConfig,Path+'PublishOptions/',fPathDelimChanged); - // load custom defines - LoadCustomDefines(Path); + // load defines used for custom options + LoadOtherDefines(Path); // load session info LoadSessionInfo(Path,false); // call hooks to read their info (e.g. DebugBoss) @@ -2923,10 +2903,10 @@ FFileVersion:=FXMLConfig.GetValue(Path+'Version/Value',0); // load MacroValues and compiler options - BuildModes.LoadSessionFromXMLConfig(FXMLConfig, Path, FLoadParts); + BuildModes.LoadSessionFromXMLConfig(FXMLConfig, Path, FLoadAllOptions); - // load custom defines - LoadCustomDefines(Path); + // load defines used for custom options + LoadOtherDefines(Path); // load session info LoadSessionInfo(Path,true); @@ -2940,21 +2920,8 @@ PIFile: String; begin Result:=mrOk; - if FLoadParts then begin - // read only parts of the lpi, keep other values - try - FXMLConfig := TCodeBufXMLConfig.CreateWithCache(Filename,true) - except - on E: Exception do begin - IDEMessageDialog(lisUnableToReadLpi, - Format(lisUnableToReadTheProjectInfoFile,[LineEnding,Filename])+LineEnding+E.Message, - mtError, [mbOk]); - Result:=mrCancel; - exit; - end; - end; - end - else begin + if FLoadAllOptions then + begin // read the whole lpi, clear any old values Clear; ProjectInfoFile:=Filename; @@ -2984,6 +2951,20 @@ fLastReadLPIFilename:=PIFile; fLastReadLPIFileDate:=Now; FNewMainUnitID:=-1; + end + else begin + // read only parts of the lpi, keep other values + try + FXMLConfig := TCodeBufXMLConfig.CreateWithCache(Filename,true) + except + on E: Exception do begin + IDEMessageDialog(lisUnableToReadLpi, + Format(lisUnableToReadTheProjectInfoFile,[LineEnding,Filename])+LineEnding+E.Message, + mtError, [mbOk]); + Result:=mrCancel; + exit; + end; + end; end; try @@ -2993,8 +2974,11 @@ fCurStorePathDelim:=StorePathDelim; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TProject.ReadProject C reading values');{$ENDIF} FFileVersion:= FXMLConfig.GetValue(ProjOptionsPath+'Version/Value',0); - if not FLoadParts then + UseAppBundle := FXMLConfig.GetValue(ProjOptionsPath+'General/UseAppBundle/Value', True); + if FLoadAllOptions then LoadFromLPI; + // Resources + ProjResources.ReadFromProjectFile(FXMLConfig, ProjOptionsPath, FLoadAllOptions); // load MacroValues and compiler options ClearBuildModes; BuildModes.LoadProjOptsFromXMLConfig(FXMLConfig, ProjOptionsPath); @@ -3024,7 +3008,7 @@ LoadFromSession; except IDEMessageDialog(lisCCOErrorCaption, - Format(lisUnableToReadTheProjectInfoFile, [LineEnding,ProjectInfoFile]), + Format(lisUnableToReadTheProjectInfoFile, [LineEnding,Filename]), mtError,[mbOk]); Result:=mrCancel; exit; @@ -3045,13 +3029,13 @@ // Method ReadProject itself function TProject.ReadProject(const NewProjectInfoFile: string; - GlobalMatrixOptions: TBuildMatrixOptions; LoadParts: Boolean): TModalResult; + GlobalMatrixOptions: TBuildMatrixOptions; LoadAllOptions: Boolean): TModalResult; begin Result := mrCancel; BeginUpdate(true); try BuildModes.FGlobalMatrixOptions := GlobalMatrixOptions; - FLoadParts := LoadParts; + FLoadAllOptions := LoadAllOptions; // load project lpi file Result:=DoLoadLPI(NewProjectInfoFile); @@ -3060,7 +3044,7 @@ // load session file (if available) if (SessionStorage in pssHasSeparateSession) and (CompareFilenames(ProjectInfoFile,ProjectSessionFile)<>0) - and not FLoadParts then + and FLoadAllOptions then begin Result:=DoLoadSession(ProjectSessionFile); if Result<>mrOK then Exit; @@ -3102,15 +3086,14 @@ FXMLConfig.SetDeleteValue(Path+'Units/Count',SaveUnitCount,0); end; -procedure TProject.SaveCustomDefines(const Path: string); +procedure TProject.SaveOtherDefines(const Path: string); var i: integer; begin - for i:=0 to FCustomDefines.Count-1 do begin - FXMLConfig.SetDeleteValue(Path+'CustomDefines/Define'+IntToStr(i)+'/Value', - FCustomDefines[i],''); - end; - FXMLConfig.SetDeleteValue(Path+'CustomDefines/Count',FCustomDefines.Count,0); + for i:=0 to FOtherDefines.Count-1 do + FXMLConfig.SetDeleteValue(Path+'OtherDefines/Define'+IntToStr(i)+'/Value', + FOtherDefines[i],''); + FXMLConfig.SetDeleteValue(Path+'OtherDefines/Count',FOtherDefines.Count,0); end; procedure TProject.SaveSessionInfo(const Path: string); @@ -3153,7 +3136,7 @@ ProjectSessionStorageNames[SessionStorage], ProjectSessionStorageNames[DefaultProjectSessionStorage]); // general properties - FXMLConfig.SetValue(Path+'General/MainUnit/Value', MainUnitID); // always write a value to support opening by older IDEs (<=0.9.28). This can be changed in a few released. + FXMLConfig.SetValue(Path+'General/MainUnit/Value', MainUnitID); // always write a value to support opening by older IDEs (<=0.9.28). This can be changed in a few releases. FXMLConfig.SetDeleteValue(Path+'General/AutoCreateForms/Value', AutoCreateForms,true); FXMLConfig.SetDeleteValue(Path+'General/Title/Value', Title,''); @@ -3191,8 +3174,8 @@ SaveUnits(Path,FSaveSessionInLPI); if FSaveSessionInLPI then begin - // save custom defines - SaveCustomDefines(Path); + // save defines used for custom options + SaveOtherDefines(Path); // save session info SaveSessionInfo(Path); end; @@ -3208,7 +3191,8 @@ // save lpi to disk //debugln(['TProject.WriteProject ',DbgSName(FXMLConfig),' FCfgFilename=',FCfgFilename]); FXMLConfig.Flush; - Modified:=false; + if not (pwfIgnoreModified in FProjectWriteFlags) then + Modified:=false; if FSaveSessionInLPI then SessionModified:=false; end; @@ -3227,8 +3211,8 @@ BuildModes.SaveSessionData(Path); // save all units SaveUnits(Path,true); - // save custom defines - SaveCustomDefines(Path); + // save defines used for custom options + SaveOtherDefines(Path); // save session info SaveSessionInfo(Path); @@ -3323,8 +3307,12 @@ FSaveSessionInLPI:=(SessFilename='') or (CompareFilenames(SessFilename,CfgFilename)=0); // check if modified - if not (pwfIgnoreModified in ProjectWriteFlags) then + if pwfIgnoreModified in ProjectWriteFlags then begin + WriteLPI:=true; + WriteLPS:=true; + end + else begin WriteLPI:=SomeDataModified or (not FileExistsUTF8(CfgFilename)); if (CompareFilenames(ProjectInfoFile,CfgFilename)=0) then // save to default lpi @@ -3338,10 +3326,7 @@ end else begin WriteLPS:=WriteLPI or SomeSessionModified or (not FileExistsUTF8(SessFilename)); end; - if (not WriteLPI) and (not WriteLPS) then exit(mrOk); - end else begin - WriteLPI:=true; - WriteLPS:=true; + if not (WriteLPI or WriteLPS) then exit(mrOk); end; //debugln(['TProject.WriteProject WriteLPI=',WriteLPI,' WriteLPS=',WriteLPS,' Modifed=',Modified,' SessionModified=',SessionModified]); @@ -3414,7 +3399,7 @@ {$IFDEF VerboseIDEModified} debugln(['TProject.BackupBuildModes START=====================']); {$ENDIF} - BuildModesBackup.Assign(BuildModes,true); + FBuildModesBackup.Assign(BuildModes,true); {$IFDEF VerboseIDEModified} debugln(['TProject.BackupBuildModes END===================== Modified=',Modified]); {$ENDIF} @@ -3422,8 +3407,9 @@ procedure TProject.RestoreBuildModes; begin + Assert(FBuildModesBackup.Count>0, 'TProject.RestoreBuildModes: FBuildModesBackup.Count=0'); ActiveBuildMode:=nil; - BuildModes.Assign(BuildModesBackup,true); + BuildModes.Assign(FBuildModesBackup,true); if (FActiveBuildModeBackup>=0) and (FActiveBuildModeBackup<BuildModes.Count) then ActiveBuildMode:=BuildModes[FActiveBuildModeBackup] @@ -3796,12 +3782,12 @@ function TProject.GetUseManifest: boolean; begin - Result:=TProjectXPManifest(ProjResources[TProjectXPManifest]).UseManifest; + Result:=ProjResources.XPManifest.UseManifest; end; procedure TProject.SetUseManifest(AValue: boolean); begin - TProjectXPManifest(ProjResources[TProjectXPManifest]).UseManifest:=AValue; + ProjResources.XPManifest.UseManifest:=AValue; end; function TProject.UnitCount:integer; @@ -3977,8 +3963,7 @@ TProjectIcon(ProjResources[TProjectIcon]).LoadDefaultIcon; end; -function TProject.GetShortFilename(const Filename: string; UseUp: boolean - ): string; +function TProject.GetShortFilename(const Filename: string; UseUp: boolean): string; var BaseDir: String; CurPath: String; @@ -4009,7 +3994,7 @@ begin CodeBuf:=GetResourceFile(AnUnitInfo,1); if CodeBuf=nil then begin - if AnUnitInfo.Filename='' then exit; + if AnUnitInfo.Filename='' then exit(''); Result:=ChangeFileExt(AnUnitInfo.Filename,ResourceFileExt); exit; end else @@ -4337,8 +4322,7 @@ Result:=true; end; -procedure TProject.GetVirtualDefines(DefTree: TDefineTree; - DirDef: TDirectoryDefines); +procedure TProject.GetVirtualDefines(DefTree: TDefineTree; DirDef: TDirectoryDefines); procedure ExtendPath(const AVariable, APath: string); var @@ -4413,15 +4397,13 @@ fProjectInfoFileDate:=FileAgeCached(ProjectInfoFile); end; -function TProject.FindDependencyByName(const PackageName: string - ): TPkgDependency; +function TProject.FindDependencyByName(const PackageName: string): TPkgDependency; begin Result:=FindDependencyByNameInList(FFirstRequiredDependency,pdlRequires, PackageName); end; -function TProject.FindRemovedDependencyByName(const PkgName: string - ): TPkgDependency; +function TProject.FindRemovedDependencyByName(const PkgName: string): TPkgDependency; begin Result:=FindDependencyByNameInList(FFirstRemovedDependency,pdlRequires,PkgName); end; @@ -4845,10 +4827,7 @@ function TProject.GetOutputDirectory: string; begin - if IsVirtual then - Result:=GetTestDirectory - else - Result:=CompilerOptions.ParsedOpts.GetParsedValue(pcosOutputDir); + Result:=CompilerOptions.ParsedOpts.GetParsedValue(pcosOutputDir); end; function TProject.GetCompilerFilename: string; @@ -4864,14 +4843,6 @@ Result:=AppendPathDelim(Result)+ChangeFileExt(GetCompileSourceFilename,'.compiled'); end; -function TProject.GetTestDirectory: string; -begin - if Assigned(OnGetTestDirectory) then - OnGetTestDirectory(Self,Result) - else - Result:=GetCurrentDirUTF8; -end; - function TProject.GetCompileSourceFilename: string; begin if MainUnitID<0 then @@ -5110,8 +5081,6 @@ begin if BuildModes[i].Identifier=aIdent then begin - // Force setting active mode. Values may be assigned, looks like active mode - ActiveBuildMode:=Nil; // is already set but it is not ActiveBuildMode:=BuildModes[i]; Break; end; @@ -5134,6 +5103,14 @@ Modified:=true; end; +procedure TProject.SetLastCompilerParams(AValue: string); +begin + if FLastCompilerParams=AValue then Exit; + //debugln(['TProject.SetLastCompilerParams Old="',FLastCompilerParams,'"']); + //debugln(['TProject.SetLastCompilerParams New="',AValue,'"']); + FLastCompilerParams:=AValue; +end; + procedure TProject.SetMainProject(const AValue: boolean); begin if MainProject=AValue then exit; @@ -5243,11 +5220,6 @@ Result:=false; end; -procedure TProject.IncreaseChangeStamp; -begin - LUIncreaseChangeStamp(FChangeStamp); -end; - procedure TProject.MainSourceFilenameChanged; begin @@ -5780,6 +5752,11 @@ MainUnitID:=AValue; end; +function TProject.GetLazBuildModes: TLazProjectBuildModes; +begin + Result:=FBuildModes; +end; + procedure TProject.AddToList(AnUnitInfo: TUnitInfo; ListType: TUnitInfoList); begin // add to list if AnUnitInfo is not in list @@ -6135,7 +6112,9 @@ begin MainUnitInfo:=FProject.MainUnitInfo; if (MainUnitInfo<>nil) then - Result:=ExtractFileName(MainUnitInfo.Filename); + Result:=ExtractFileName(MainUnitInfo.Filename) + else + Result:=''; if Result='' then Result:=inherited GetDefaultMainSourceFileName; end; @@ -6600,55 +6579,14 @@ { TProjectBuildMode } -procedure TProjectBuildMode.SetInSession(const AValue: boolean); +function TProjectBuildMode.GetLazCompilerOptions: TLazCompilerOptions; begin - if FInSession=AValue then exit; - FInSession:=AValue; - {$IFDEF VerboseIDEModified} - debugln(['TProjectBuildMode.SetInSession ',AValue]); - {$ENDIF} - IncreaseChangeStamp; -end; - -procedure TProjectBuildMode.OnItemChanged(Sender: TObject); -begin - {$IFDEF VerboseIDEModified} - debugln(['TProjectBuildMode.OnItemChanged ',DbgSName(Sender)]); - {$ENDIF} - IncreaseChangeStamp; -end; - -procedure TProjectBuildMode.SetModified(const AValue: boolean); -begin - if AValue then - IncreaseChangeStamp - else begin - fSavedChangeStamp:=FChangeStamp; - FCompilerOptions.Modified:=false; - end; -end; - -procedure TProjectBuildMode.SetIdentifier(const AValue: string); -begin - if FIdentifier=AValue then exit; - FIdentifier:=AValue; - {$IFDEF VerboseIDEModified} - debugln(['TProjectBuildMode.SetIdentifier ',AValue]); - {$ENDIF} - IncreaseChangeStamp; -end; - -function TProjectBuildMode.GetModified: boolean; -begin - Result:=fSavedChangeStamp<>FChangeStamp; + Result:=FCompilerOptions; end; constructor TProjectBuildMode.Create(AOwner: TComponent); begin inherited Create(AOwner); - fOnChanged:=TMethodList.Create; - FChangeStamp:=CTInvalidChangeStamp64; - fSavedChangeStamp:=FChangeStamp; FCompilerOptions:=TProjectCompilerOptions.Create(LazProject); FCompilerOptions.AddOnChangedHandler(@OnItemChanged); FCompilerOptions.FBuildMode:=Self; @@ -6656,7 +6594,6 @@ destructor TProjectBuildMode.Destroy; begin - FreeAndNil(fOnChanged); FreeAndNil(FCompilerOptions); inherited Destroy; end; @@ -6731,28 +6668,6 @@ end; end; -procedure TProjectBuildMode.IncreaseChangeStamp; -begin - {$IFDEF VerboseIDEModified} - if not Modified then begin - debugln(['TProjectBuildMode.IncreaseChangeStamp ']); - CTDumpStack; - end; - {$ENDIF} - CTIncreaseChangeStamp64(FChangeStamp); - if fOnChanged<>nil then fOnChanged.CallNotifyEvents(Self); -end; - -procedure TProjectBuildMode.AddOnChangedHandler(const Handler: TNotifyEvent); -begin - fOnChanged.Add(TMethod(Handler)); -end; - -procedure TProjectBuildMode.RemoveOnChangedHandler(const Handler: TNotifyEvent); -begin - fOnChanged.Remove(TMethod(Handler)); -end; - function TProjectBuildMode.GetCaption: string; var i: Integer; @@ -7013,6 +6928,48 @@ SessionMatrixOptions.RenameMode(OldName,NewName); end; +function TProjectBuildModes.CreateExtraModes(aCurMode: TProjectBuildMode): TProjectBuildMode; +// Create Debug and Release buildmodes. Return the created debug mode. +// Params: aCurMode - existing mode to copy settings from. + + procedure AssignAndSetBooleans(aMode: TProjectBuildMode; IsDebug: Boolean); + begin + if Assigned(aCurMode) then + aMode.Assign(aCurMode); // clone from currently selected mode + with aMode.CompilerOptions do + begin + // Smart linking + SmartLinkUnit:=not IsDebug; + LinkSmart:=not IsDebug; + // Checks + IOChecks:=IsDebug; + RangeChecks:=IsDebug; + OverflowChecks:=IsDebug; + StackChecks:=IsDebug; + IncludeAssertionCode:=IsDebug; + // Debug flags + GenerateDebugInfo:=IsDebug; + UseExternalDbgSyms:=IsDebug; + UseHeaptrc:=IsDebug; + TrashVariables:=IsDebug; + end; + end; + +var + RelMode: TProjectBuildMode; +begin + // Create Debug mode + Result:=Add(DebugModeName); + AssignAndSetBooleans(Result, True); + Result.CompilerOptions.OptimizationLevel:=1; // Optimization + Result.CompilerOptions.DebugInfoType:=dsDwarf2Set; // Debug + // Create Release mode + RelMode:=Add(ReleaseModeName); + AssignAndSetBooleans(RelMode, False); + RelMode.CompilerOptions.OptimizationLevel:=3; // Optimization, slow, but safe, -O4 is dangerous + RelMode.CompilerOptions.DebugInfoType:=dsAuto; // No Debug +end; + // Methods for LoadFromXMLConfig procedure TProjectBuildModes.AddMatrixMacro(const MacroName, MacroValue, ModeIdentifier: string; @@ -7179,14 +7136,14 @@ end; procedure TProjectBuildModes.LoadSessionFromXMLConfig(XMLConfig: TXMLConfig; - const Path: string; LoadParts: boolean); + const Path: string; LoadAllOptions: boolean); // Load for session var Cnt: Integer; begin FXMLConfig := XMLConfig; - if not LoadParts then + if LoadAllOptions then // load matrix options SessionMatrixOptions.LoadFromXMLConfig(FXMLConfig, Path+'BuildModes/SessionMatrixOptions/'); @@ -7197,7 +7154,7 @@ LoadAllMacroValues(Path+'MacroValues/', Cnt); end; - if not LoadParts then + if LoadAllOptions then // load what matrix options are enabled in session build modes LoadSessionEnabledNonSessionMatrixOptions(Path+'BuildModes/SessionEnabledMatrixOptions/'); @@ -7235,6 +7192,11 @@ SharedMatrixOptions.SaveToXMLConfig(FXMLConfig, Path+'BuildModes/SharedMatrixOptions/',@IsSharedMode); end; +function TProjectBuildModes.GetLazBuildModes(Index: integer): TLazProjectBuildMode; +begin + Result:=TLazProjectBuildMode(fItems[Index]); +end; + // SaveToXMLConfig itself procedure TProjectBuildModes.SaveProjOptsToXMLConfig(XMLConfig: TXMLConfig; const Path: string; SaveSession: boolean); @@ -7270,6 +7232,7 @@ FXMLConfig.SetDeleteValue(Path+'BuildModes/Count',Cnt,0); end; + initialization RegisterIDEOptionsGroup(GroupProject, TProjectIDEOptions); RegisterIDEOptionsGroup(GroupCompiler, TProjectCompilerOptions); diff -Nru lazarus-1.4.4+dfsg/ide/projectresources.pas lazarus-1.6+dfsg/ide/projectresources.pas --- lazarus-1.4.4+dfsg/ide/projectresources.pas 2014-06-15 11:52:27.000000000 +0000 +++ lazarus-1.6+dfsg/ide/projectresources.pas 2016-01-03 12:28:36.000000000 +0000 @@ -37,15 +37,22 @@ interface uses - Classes, SysUtils, Contnrs, Controls, LCLProc, LResources, FileUtil, - Dialogs, AvgLvlTree, Laz2_XMLCfg, resource, reswriter, + // RTL + LCL + Classes, SysUtils, Contnrs, resource, reswriter, fgl, + Controls, LCLProc, LResources, Dialogs, + // LazUtils + LazFileUtils, AvgLvlTree, Laz2_XMLCfg, + // Codetools KeywordFuncLists, BasicCodeTools, CodeToolManager, CodeCache, + // IdeIntf ProjectIntf, ProjectResourcesIntf, CompOptsIntf, - LazarusIDEStrConsts, - IDEProcs, DialogProcs, + // IDE + LazarusIDEStrConsts, IDEProcs, DialogProcs, W32Manifest, W32VersionInfo, ProjectIcon, ProjectUserResources; type + TResourceList = specialize TFPGObjectList<TAbstractProjectResource>; + { TProjectResources } TProjectResources = class(TAbstractProjectResources) @@ -55,7 +62,7 @@ FInModified: Boolean; FLrsIncludeAllowed: Boolean; - FResources: TObjectList; + FResources: TResourceList; FSystemResources: TResources; FLazarusResources: TStringList; @@ -101,7 +108,7 @@ function HasLazarusResources: Boolean; procedure WriteToProjectFile(AConfig: TXMLConfig; Path: String); - procedure ReadFromProjectFile(AConfig: TXMLConfig; Path: String); + procedure ReadFromProjectFile(AConfig: TXMLConfig; Path: String; ReadAll: Boolean); property Modified: Boolean read FModified write SetModified; property OnModified: TNotifyEvent read FOnModified write FOnModified; @@ -378,7 +385,7 @@ if not FModified then begin for i := 0 to FResources.Count - 1 do - TAbstractProjectResource(FResources[i]).Modified := False; + FResources[i].Modified := False; end; if Assigned(FOnModified) then OnModified(Self); @@ -389,16 +396,14 @@ function TProjectResources.Update: Boolean; var i: integer; - Res: TAbstractProjectResource; begin Result:=true; Clear; for i := 0 to FResources.Count - 1 do begin - Res:=TAbstractProjectResource(FResources[i]); - Result := Res.UpdateResources(Self, resFileName); + Result := FResources[i].UpdateResources(Self, resFileName); if not Result then begin - debugln(['TProjectResources.Update UpdateResources of ',DbgSName(Res),' failed']); + debugln(['TProjectResources.Update UpdateResources of ',DbgSName(FResources[i]),' failed']); Exit; end; end; @@ -424,7 +429,7 @@ FSystemResources := TResources.Create; FLazarusResources := TStringList.Create; - FResources := TObjectList.Create; + FResources := TResourceList.Create; L := GetRegisteredResources; for i := 0 to L.Count - 1 do begin @@ -471,7 +476,7 @@ begin for i := 0 to FResources.Count - 1 do begin - Result := TAbstractProjectResource(FResources[i]); + Result := FResources[i]; if Result.InheritsFrom(AIndex) then Exit; end; @@ -483,7 +488,7 @@ i: integer; begin for i := 0 to FResources.Count - 1 do - TAbstractProjectResource(FResources[i]).DoAfterBuild(Self, AReason, SaveToTestDir); + FResources[i].DoAfterBuild(Self, AReason, SaveToTestDir); end; procedure TProjectResources.DoBeforeBuild(AReason: TCompileReason; SaveToTestDir: boolean); @@ -491,7 +496,7 @@ i: integer; begin for i := 0 to FResources.Count - 1 do - TAbstractProjectResource(FResources[i]).DoBeforeBuild(Self, AReason, SaveToTestDir); + FResources[i].DoBeforeBuild(Self, AReason, SaveToTestDir); end; procedure TProjectResources.Clear; @@ -559,16 +564,17 @@ begin AConfig.SetDeleteValue(Path+'General/ResourceType/Value', ResourceTypeNames[ResourceType], ResourceTypeNames[rtLRS]); for i := 0 to FResources.Count - 1 do - TAbstractProjectResource(FResources[i]).WriteToProjectFile(AConfig, Path); + FResources[i].WriteToProjectFile(AConfig, Path); end; -procedure TProjectResources.ReadFromProjectFile(AConfig: TXMLConfig; Path: String); +procedure TProjectResources.ReadFromProjectFile(AConfig: TXMLConfig; Path: String; ReadAll: Boolean); var i: integer; begin ResourceType := StrToResourceType(AConfig.GetValue(Path+'General/ResourceType/Value', ResourceTypeNames[rtLRS])); for i := 0 to FResources.Count - 1 do - TAbstractProjectResource(FResources[i]).ReadFromProjectFile(AConfig, Path); + if ReadAll or FResources[i].IsDefaultOption then + FResources[i].ReadFromProjectFile(AConfig, Path); end; function TProjectResources.UpdateMainSourceFile(const AFileName: string): Boolean; @@ -778,13 +784,12 @@ CodeBuf: TCodeBuffer; TestFilename: String; begin + Result := True; CodeBuf := CodeToolBoss.FindFile(Filename); - if (CodeBuf = nil) or CodeBuf.IsDeleted then - Exit(True); + if (CodeBuf = nil) or CodeBuf.IsDeleted then Exit; if not CodeBuf.IsVirtual then - begin - Result := SaveCodeBuffer(CodeBuf) in [mrOk,mrIgnore]; - end else if SaveToTestDir<>'' then + Result := SaveCodeBuffer(CodeBuf) in [mrOk,mrIgnore] + else if SaveToTestDir<>'' then begin TestFilename := AppendPathDelim(SaveToTestDir) + CodeBuf.Filename; Result := SaveCodeBufferToFile(CodeBuf, TestFilename) in [mrOk, mrIgnore]; diff -Nru lazarus-1.4.4+dfsg/ide/projectuserresources.pas lazarus-1.6+dfsg/ide/projectuserresources.pas --- lazarus-1.4.4+dfsg/ide/projectuserresources.pas 2014-07-20 19:47:30.000000000 +0000 +++ lazarus-1.6+dfsg/ide/projectuserresources.pas 2015-09-05 18:11:36.000000000 +0000 @@ -35,8 +35,7 @@ interface uses - Classes, SysUtils, FileUtil, Laz2_XMLCfg, Process, LCLProc, Controls, - Graphics, Forms, CodeToolManager, FileProcs, LazConf, LResources, ProjectIntf, + Classes, SysUtils, Laz2_XMLCfg, LCLProc, FileProcs, LazFileUtils, LazUTF8, ProjectResourcesIntf, IDEMsgIntf, MacroIntf, IDEExternToolIntf, LazarusIDEStrConsts, resource, bitmapresource, groupresource, groupiconresource, groupcursorresource; @@ -186,7 +185,7 @@ end; end else - IDEMessagesWindow.AddCustomMessage(mluError,Format(lisFileNotFound2, [Filename])); + AddIDEMessage(mluError,Format(lisFileNotFound2, [Filename])); end; function TResourceItem.GetRealFileName(ProjectDirectory: String): String; diff -Nru lazarus-1.4.4+dfsg/ide/publishmodule.pas lazarus-1.6+dfsg/ide/publishmodule.pas --- lazarus-1.4.4+dfsg/ide/publishmodule.pas 2012-03-13 20:55:43.000000000 +0000 +++ lazarus-1.6+dfsg/ide/publishmodule.pas 2015-07-04 23:08:00.000000000 +0000 @@ -36,7 +36,7 @@ uses Classes, SysUtils, - IDEProcs, SynRegExpr, FileUtil, Laz2_XMLCfg, LCLProc; + IDEProcs, SynRegExpr, LazFileUtils, Laz2_XMLCfg, LCLProc; type { TPublishModuleOptions } diff -Nru lazarus-1.4.4+dfsg/ide/publishprojectdlg.pas lazarus-1.6+dfsg/ide/publishprojectdlg.pas --- lazarus-1.4.4+dfsg/ide/publishprojectdlg.pas 2013-09-27 12:27:04.000000000 +0000 +++ lazarus-1.6+dfsg/ide/publishprojectdlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -37,7 +37,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Buttons, + Classes, SysUtils, LazFileUtils, Forms, Controls, Graphics, Buttons, StdCtrls, Dialogs, LCLType, IDEWindowIntf, IDEHelpIntf, IDEDialogs, ProjectDefs, PackageDefs, PublishModule, IDEOptionDefs, InputHistory, @@ -73,7 +73,7 @@ procedure BrowseDestDirBitBtnCLICK(Sender: TObject); procedure DestDirGroupBoxRESIZE(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure HelpButtonClick(Sender: TObject); procedure OkButtonCLICK(Sender: TObject); diff -Nru lazarus-1.4.4+dfsg/ide/qfinitlocalvardlg.lfm lazarus-1.6+dfsg/ide/qfinitlocalvardlg.lfm --- lazarus-1.4.4+dfsg/ide/qfinitlocalvardlg.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/qfinitlocalvardlg.lfm 2015-02-16 22:32:30.000000000 +0000 @@ -0,0 +1,76 @@ +object QFInitLocalVarDialog: TQFInitLocalVarDialog + Left = 314 + Height = 225 + Top = 251 + Width = 564 + Caption = 'QFInitLocalVarDialog' + ClientHeight = 225 + ClientWidth = 564 + OnCreate = FormCreate + LCLVersion = '1.5' + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 36 + Top = 183 + Width = 552 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 0 + ShowButtons = [pbOK, pbCancel] + end + object Panel1: TPanel + Left = 0 + Height = 177 + Top = 0 + Width = 564 + Align = alClient + BevelOuter = bvNone + ChildSizing.EnlargeHorizontal = crsScaleChilds + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 177 + ClientWidth = 564 + TabOrder = 1 + object WhereRadioGroup: TRadioGroup + Left = 6 + Height = 78 + Top = 6 + Width = 548 + AutoFill = True + BorderSpacing.Around = 6 + Caption = 'WhereRadioGroup' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + TabOrder = 0 + end + object ValueRadioGroup: TRadioGroup + Left = 6 + Height = 77 + Top = 90 + Width = 548 + AutoFill = True + BorderSpacing.Around = 6 + Caption = 'ValueRadioGroup' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + TabOrder = 1 + end + end +end diff -Nru lazarus-1.4.4+dfsg/ide/qfinitlocalvardlg.pas lazarus-1.6+dfsg/ide/qfinitlocalvardlg.pas --- lazarus-1.4.4+dfsg/ide/qfinitlocalvardlg.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/qfinitlocalvardlg.pas 2015-06-06 11:19:40.000000000 +0000 @@ -0,0 +1,168 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Mattias Gaertner + + Abstract: + Dialog used by the quick fix "Insert Assignment var := ..." for messages + Hint/Warning: (5036) Local variable "$1" does not seem to be initialized + Dialog shows a list of possible statements and a list of possible insert + positions. +} +unit QFInitLocalVarDlg; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Math, contnrs, LazLogger, + Forms, Controls, Graphics, Dialogs, ButtonPanel, ExtCtrls, + CodeToolManager, CodeCache, StdCodeTools, + LazIDEIntf, IDEDialogs, + LazarusIDEStrConsts; + +type + + { TQFInitLocalVarDialog } + + TQFInitLocalVarDialog = class(TForm) + ButtonPanel1: TButtonPanel; + Panel1: TPanel; + ValueRadioGroup: TRadioGroup; + WhereRadioGroup: TRadioGroup; + procedure ButtonPanel1OKButtonClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + public + Statements: TStrings; + InsertPositions: TObjectList; + procedure Init(TheStatements: TStrings; TheInsertPositions: TObjectList); + end; + +function QuickFixLocalVarNotInitialized(Code: TCodeBuffer; X, Y: integer): boolean; + +implementation + +function QuickFixLocalVarNotInitialized(Code: TCodeBuffer; X, Y: integer): boolean; +var + Statements: TStrings; + InsertPositions: TObjectList; + Dlg: TQFInitLocalVarDialog; +begin + Result:=false; + Statements:=nil; + InsertPositions:=nil; + try + if not CodeToolBoss.GetPossibleInitsForVariable(Code,X,Y,Statements, + InsertPositions) + then begin + if CodeToolBoss.ErrorCode<>nil then + LazarusIDE.DoJumpToCodeToolBossError + else + ShowMessage('CodeToolBoss.GetPossibleInitsForVariable failed at '+Code.Filename+'('+IntToStr(Y)+','+IntToStr(X)+')'); + exit; + end; + + Dlg:=TQFInitLocalVarDialog.Create(nil); + try + Dlg.Init(Statements,InsertPositions); + case Dlg.ShowModal of + mrOk: Result:=true; + mrAbort: + if CodeToolBoss.ErrorCode<>nil then + LazarusIDE.DoJumpToCodeToolBossError + else + IDEMessageDialog('Error','Unable to insert the code',mtError,[mbOk]); + else + // user cancel + end; + finally + Dlg.Free; + end; + finally + Statements.Free; + InsertPositions.Free; + end; +end; + +{$R *.lfm} + +{ TQFInitLocalVarDialog } + +procedure TQFInitLocalVarDialog.FormCreate(Sender: TObject); +begin + Caption:=lisInitializeLocalVariable; + ButtonPanel1.OKButton.OnClick:=@ButtonPanel1OKButtonClick; +end; + +procedure TQFInitLocalVarDialog.ButtonPanel1OKButtonClick(Sender: TObject); +begin + if CodeToolBoss.InsertStatements( + TInsertStatementPosDescription(InsertPositions[Max(0,WhereRadioGroup.ItemIndex)]), + Statements[Max(0,ValueRadioGroup.ItemIndex)]) + then begin + ModalResult:=mrOk; + end else begin + ModalResult:=mrAbort; + end; +end; + +procedure TQFInitLocalVarDialog.Init(TheStatements: TStrings; + TheInsertPositions: TObjectList); +var + i: Integer; + InsertPos: TInsertStatementPosDescription; + sl: TStringList; + s: String; + CodeXY: TCodeXYPosition; +begin + Statements:=TheStatements; + InsertPositions:=TheInsertPositions; + sl:=TStringList.Create; + try + // show possible insert positions + for i:=0 to InsertPositions.Count-1 do begin + InsertPos:=TInsertStatementPosDescription(InsertPositions[i]); + CodeXY:=InsertPos.CodeXYPos; + s:=ExtractFileName(CodeXY.Code.Filename) + +'('+IntToStr(CodeXY.Y)+','+IntToStr(CodeXY.X)+') ' + +InsertPos.Description; + sl.Add(s); + end; + WhereRadioGroup.Items.Assign(sl); + WhereRadioGroup.ItemIndex:=0; + WhereRadioGroup.AutoSize:=true; + WhereRadioGroup.Caption:='Insert where:'; + + // show possible statements + sl.Clear; + for s in Statements do + sl.Add(DbgStr(s)); + ValueRadioGroup.Items.Assign(sl); + ValueRadioGroup.ItemIndex:=0; + ValueRadioGroup.Caption:='Insert what:'; + finally + sl.Free; + end; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/redirect_stderr.pas lazarus-1.6+dfsg/ide/redirect_stderr.pas --- lazarus-1.4.4+dfsg/ide/redirect_stderr.pas 2013-05-15 18:00:26.000000000 +0000 +++ lazarus-1.6+dfsg/ide/redirect_stderr.pas 2015-03-10 21:07:44.000000000 +0000 @@ -24,26 +24,21 @@ unit redirect_stderr; {$mode objfpc}{$H+} +{$I ide.inc} interface -{$IFDEF Windows} -{$IFDEF HEAPTRC_WINDOW} -{$IF FPC_FULLVERSION>=20701} +{$IFDEF EnableRedirectStdErr} uses heaptrc, SysUtils, raw_window; {$ENDIF} -{$ENDIF} -{$ENDIF} Var DoShowWindow : Boolean = True; implementation -{$IFDEF Windows} -{$IFDEF HEAPTRC_WINDOW} -{$IF FPC_FULLVERSION>=20701} +{$IFDEF EnableRedirectStdErr} const ErrorBufferLength = 2 * 1024; @@ -135,8 +130,6 @@ SetHeapTraceOutput(MyStdErr); {$ENDIF} -{$ENDIF} -{$ENDIF} end. diff -Nru lazarus-1.4.4+dfsg/ide/restrictionbrowser.lfm lazarus-1.6+dfsg/ide/restrictionbrowser.lfm --- lazarus-1.4.4+dfsg/ide/restrictionbrowser.lfm 2012-05-19 18:32:55.000000000 +0000 +++ lazarus-1.6+dfsg/ide/restrictionbrowser.lfm 2015-05-17 11:41:41.000000000 +0000 @@ -7,7 +7,7 @@ ClientHeight = 405 ClientWidth = 674 OnCreate = FormCreate - LCLVersion = '1.1' + LCLVersion = '1.5' object IssueMemo: TMemo Left = 311 Height = 405 @@ -16,7 +16,7 @@ Align = alClient ReadOnly = True ScrollBars = ssAutoVertical - TabOrder = 0 + TabOrder = 2 end object Panel1: TPanel Left = 0 @@ -24,37 +24,38 @@ Top = 0 Width = 306 Align = alLeft + BevelOuter = bvNone ClientHeight = 405 ClientWidth = 306 - TabOrder = 1 + TabOrder = 0 object IssueFilterGroupBox: TGroupBox - Left = 1 + Left = 0 Height = 96 - Top = 1 - Width = 304 + Top = 0 + Width = 306 Align = alTop Caption = 'IssueFilterGroupBox' - ClientHeight = 77 - ClientWidth = 298 + ClientHeight = 76 + ClientWidth = 302 TabOrder = 0 object NameLabel: TLabel Left = 10 Height = 15 Top = 44 - Width = 64 + Width = 60 Caption = 'NameLabel' ParentColor = False end object FilterEdit: TTreeFilterEdit AnchorSideLeft.Control = NameLabel AnchorSideLeft.Side = asrBottom - Left = 80 - Height = 22 + Left = 76 + Height = 23 Top = 41 Width = 156 UseFormActivate = True ButtonWidth = 23 - NumGlyphs = 0 + NumGlyphs = 1 BorderSpacing.Left = 6 MaxLength = 0 TabOrder = 0 @@ -62,13 +63,13 @@ end end object IssueTreeView: TTreeView - Left = 1 - Height = 307 - Top = 97 - Width = 304 + Left = 0 + Height = 309 + Top = 96 + Width = 306 Align = alClient Anchors = [akTop, akLeft, akBottom] - DefaultItemHeight = 16 + DefaultItemHeight = 18 HideSelection = False Indent = 2 ReadOnly = True diff -Nru lazarus-1.4.4+dfsg/ide/restrictionbrowser.pas lazarus-1.6+dfsg/ide/restrictionbrowser.pas --- lazarus-1.4.4+dfsg/ide/restrictionbrowser.pas 2013-05-23 11:37:56.000000000 +0000 +++ lazarus-1.6+dfsg/ide/restrictionbrowser.pas 2015-03-10 12:50:12.000000000 +0000 @@ -34,7 +34,7 @@ Dialogs, StdCtrls, ComCtrls, TreeFilterEdit, ExtCtrls, Buttons, IDEImagesIntf, ObjectInspector, CompatibilityRestrictions, IDEOptionDefs, LazarusIDEStrConsts, - EnvironmentOpts, ComponentReg, LazConf; + EnvironmentOpts, LazConf; type { TRestrictionBrowserView } diff -Nru lazarus-1.4.4+dfsg/ide/runparamsopts.lfm lazarus-1.6+dfsg/ide/runparamsopts.lfm --- lazarus-1.4.4+dfsg/ide/runparamsopts.lfm 2013-06-29 13:14:58.000000000 +0000 +++ lazarus-1.6+dfsg/ide/runparamsopts.lfm 2015-05-18 21:49:57.000000000 +0000 @@ -3,14 +3,15 @@ Height = 501 Top = 176 Width = 500 + BorderIcons = [biSystemMenu] Caption = 'RunParamsOptsDlg' ClientHeight = 501 ClientWidth = 500 Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object Notebook: TPageControl Left = 0 - Height = 456 + Height = 463 Top = 0 Width = 500 ActivePage = GeneralPage @@ -20,24 +21,24 @@ TabOrder = 0 object GeneralPage: TTabSheet Caption = 'GeneralPage' - ClientHeight = 423 - ClientWidth = 496 + ClientHeight = 435 + ClientWidth = 492 object DisplayGroupBox: TGroupBox Left = 6 - Height = 86 - Top = 234 - Width = 484 + Height = 80 + Top = 214 + Width = 480 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'DisplayGroupBox' - ClientHeight = 65 + ClientHeight = 60 ClientWidth = 476 TabOrder = 3 object DisplayEdit: TEdit Left = 6 - Height = 25 - Top = 34 + Height = 23 + Top = 31 Width = 464 Align = alTop BorderSpacing.Around = 6 @@ -46,7 +47,7 @@ end object UseDisplayCheckBox: TCheckBox Left = 6 - Height = 22 + Height = 19 Top = 6 Width = 464 Align = alTop @@ -60,43 +61,43 @@ end object CmdLineParametersGroupBox: TGroupBox Left = 6 - Height = 62 - Top = 70 - Width = 484 + Height = 55 + Top = 67 + Width = 480 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'CmdLineParametersGroupBox' - ClientHeight = 41 + ClientHeight = 35 ClientWidth = 476 TabOrder = 1 object CmdLineParametersComboBox: TComboBox Left = 6 - Height = 29 + Height = 23 Top = 6 Width = 464 Align = alTop BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 0 Text = 'CmdLineParametersComboBox' end end object UseLaunchingApplicationGroupBox: TGroupBox Left = 6 - Height = 90 - Top = 138 - Width = 484 + Height = 80 + Top = 128 + Width = 480 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'UseLaunchingApplicationGroupBox' - ClientHeight = 69 + ClientHeight = 60 ClientWidth = 476 TabOrder = 2 object UseLaunchingApplicationCheckBox: TCheckBox Left = 6 - Height = 22 + Height = 19 Top = 6 Width = 464 Align = alTop @@ -109,26 +110,26 @@ end object UseLaunchingApplicationComboBox: TComboBox Left = 6 - Height = 29 - Top = 34 + Height = 23 + Top = 31 Width = 464 Align = alTop BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 1 Text = 'UseLaunchingApplicationComboBox' end end object HostApplicationGroupBox: TGroupBox Left = 6 - Height = 58 + Height = 55 Top = 6 - Width = 484 + Width = 480 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'HostApplicationGroupBox' - ClientHeight = 37 + ClientHeight = 35 ClientWidth = 476 TabOrder = 0 object HostApplicationBrowseBtn: TButton @@ -137,10 +138,10 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = HostApplicationEdit AnchorSideBottom.Side = asrBottom - Left = 288 - Height = 25 + Left = 302 + Height = 23 Top = 6 - Width = 182 + Width = 168 Anchors = [akTop, akRight, akBottom] AutoSize = True BorderSpacing.Left = 6 @@ -155,9 +156,9 @@ AnchorSideTop.Control = HostApplicationGroupBox AnchorSideRight.Control = HostApplicationBrowseBtn Left = 6 - Height = 25 + Height = 23 Top = 6 - Width = 276 + Width = 290 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 TabOrder = 0 @@ -166,14 +167,14 @@ end object WorkingDirectoryGroupBox: TGroupBox Left = 6 - Height = 62 - Top = 326 - Width = 484 + Height = 55 + Top = 300 + Width = 480 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'WorkingDirectoryGroupBox' - ClientHeight = 41 + ClientHeight = 35 ClientWidth = 476 TabOrder = 4 object WorkingDirectoryBtn: TButton @@ -182,10 +183,10 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = WorkingDirectoryComboBox AnchorSideBottom.Side = asrBottom - Left = 327 - Height = 29 + Left = 333 + Height = 23 Top = 6 - Width = 143 + Width = 137 Anchors = [akTop, akRight, akBottom] AutoSize = True BorderSpacing.Top = 6 @@ -199,12 +200,12 @@ AnchorSideTop.Control = WorkingDirectoryGroupBox AnchorSideRight.Control = WorkingDirectoryBtn Left = 6 - Height = 29 + Height = 23 Top = 6 - Width = 315 + Width = 321 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 - ItemHeight = 0 + ItemHeight = 15 TabOrder = 0 Text = 'WorkingDirectoryComboBox' end @@ -212,16 +213,16 @@ end object EnvVarsPage: TTabSheet Caption = 'EnvVarsPage' - ClientHeight = 423 - ClientWidth = 496 + ClientHeight = 435 + ClientWidth = 492 OnResize = EnvVarsPageResize object IncludeSystemVariablesCheckBox: TCheckBox AnchorSideLeft.Control = EnvVarsPage AnchorSideBottom.Control = EnvVarsPage Left = 6 - Height = 22 - Top = 395 - Width = 484 + Height = 19 + Top = 410 + Width = 480 Align = alBottom BorderSpacing.Around = 6 Caption = 'IncludeSystemVariablesCheckBox' @@ -235,13 +236,13 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = IncludeSystemVariablesCheckBox Left = 6 - Height = 160 + Height = 175 Top = 229 - Width = 484 + Width = 480 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 Caption = 'UserOverridesGroupBox' - ClientHeight = 139 + ClientHeight = 155 ClientWidth = 476 TabOrder = 1 object UserOverridesListView: TListView @@ -250,7 +251,7 @@ AnchorSideRight.Control = UserOverridesGroupBox AnchorSideBottom.Control = UserOverridesAddButton Left = 6 - Height = 93 + Height = 112 Top = 6 Width = 464 Align = alTop @@ -260,26 +261,27 @@ item AutoSize = True Caption = 'Caption' - Width = 100 + Width = 460 end item AutoSize = True Caption = 'Caption' - Width = 100 + Width = 54 end> RowSelect = True SortType = stText TabOrder = 0 ViewStyle = vsReport + OnSelectItem = UserOverridesListViewSelectItem end object UserOverridesAddButton: TBitBtn AnchorSideLeft.Control = UserOverridesGroupBox AnchorSideBottom.Control = UserOverridesGroupBox AnchorSideBottom.Side = asrBottom Left = 6 - Height = 28 - Top = 105 - Width = 173 + Height = 25 + Top = 124 + Width = 157 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -292,10 +294,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideBottom.Control = UserOverridesGroupBox AnchorSideBottom.Side = asrBottom - Left = 381 - Height = 28 - Top = 105 - Width = 172 + Left = 343 + Height = 25 + Top = 124 + Width = 155 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -308,10 +310,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideBottom.Control = UserOverridesGroupBox AnchorSideBottom.Side = asrBottom - Left = 185 - Height = 28 - Top = 105 - Width = 190 + Left = 169 + Height = 25 + Top = 124 + Width = 168 Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -325,12 +327,12 @@ Left = 6 Height = 217 Top = 6 - Width = 484 + Width = 480 Align = alTop Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Around = 6 Caption = 'SystemVariablesGroupBox' - ClientHeight = 196 + ClientHeight = 197 ClientWidth = 476 TabOrder = 0 object SystemVariablesListView: TListView @@ -339,7 +341,7 @@ AnchorSideRight.Control = SystemVariablesGroupBox AnchorSideBottom.Control = SystemVariablesGroupBox Left = 6 - Height = 184 + Height = 185 Top = 6 Width = 464 Align = alClient @@ -348,13 +350,14 @@ item AutoSize = True Caption = 'Caption' - Width = 100 + Width = 460 end item AutoSize = True Caption = 'Caption' - Width = 100 + Width = 54 end> + ReadOnly = True RowSelect = True SortType = stText TabOrder = 0 @@ -365,8 +368,8 @@ end object ButtonPanel: TButtonPanel Left = 6 - Height = 33 - Top = 462 + Height = 26 + Top = 469 Width = 488 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True diff -Nru lazarus-1.4.4+dfsg/ide/runparamsopts.pas lazarus-1.6+dfsg/ide/runparamsopts.pas --- lazarus-1.4.4+dfsg/ide/runparamsopts.pas 2014-09-24 17:01:50.000000000 +0000 +++ lazarus-1.6+dfsg/ide/runparamsopts.pas 2015-07-04 23:08:00.000000000 +0000 @@ -49,7 +49,7 @@ {$ENDIF} Classes, SysUtils, LCLProc, Controls, Forms, Buttons, StdCtrls, ComCtrls, Dialogs, ExtCtrls, BaseIDEIntf, IDEHelpIntf, ProjectIntf, IDEDialogs, - IDEProcs, SysVarUserOverrideDlg, InputHistory, LazarusIDEStrConsts, FileUtil, + IDEProcs, SysVarUserOverrideDlg, InputHistory, LazarusIDEStrConsts, LazFileUtils, Laz2_XMLCfg, LazFileCache, ButtonPanel; { The xml format version: @@ -115,6 +115,8 @@ procedure HelpButtonClick(Sender: TObject); procedure OkButtonClick(Sender: TObject); procedure HostApplicationBrowseBtnClick(Sender: TObject); + procedure UserOverridesListViewSelectItem(Sender: TObject; {%H-}Item: TListItem; + {%H-}Selected: Boolean); procedure WorkingDirectoryBtnClick(Sender: TObject); procedure UserOverridesAddButtonClick(Sender: TObject); procedure UserOverridesEditButtonClick(Sender: TObject); @@ -480,6 +482,16 @@ end; end; +procedure TRunParamsOptsDlg.UserOverridesListViewSelectItem(Sender: TObject; + Item: TListItem; Selected: Boolean); +var + en: Boolean; +begin + en := Assigned(UserOverridesListView.Selected); + UserOverridesDeleteButton.Enabled := en; + UserOverridesEditButton.Enabled := en; +end; + procedure TRunParamsOptsDlg.WorkingDirectoryBtnClick(Sender: TObject); var NewDirectory: String; @@ -700,6 +712,7 @@ procedure TRunParamsOptsDlg.FillUserOverridesListView; begin FillListView(UserOverridesListView, Options.UserOverrides); + UserOverridesListView.OnSelectItem(nil, nil, false); //update buttons end; end. diff -Nru lazarus-1.4.4+dfsg/ide/searchfrm.pas lazarus-1.6+dfsg/ide/searchfrm.pas --- lazarus-1.4.4+dfsg/ide/searchfrm.pas 2014-12-04 08:15:32.000000000 +0000 +++ lazarus-1.6+dfsg/ide/searchfrm.pas 2015-11-06 19:07:52.000000000 +0000 @@ -31,13 +31,15 @@ interface uses - // LCL - Classes, SysUtils, types, LCLProc, LCLIntf, Forms, Controls, - Dialogs, ExtCtrls, StdCtrls, Buttons, FileProcs, FileUtil, ComCtrls, - // synedit, codetools - SynRegExpr, SourceLog, KeywordFuncLists, BasicCodeTools, + // RTL + FCL + LCL + Classes, SysUtils, types, LCLProc, LCLIntf, Forms, Controls, ComCtrls, + Dialogs, ExtCtrls, StdCtrls, Buttons, + // SynEdit, CodeTools + SynRegExpr, SourceLog, KeywordFuncLists, BasicCodeTools, FileProcs, + // LazUtils + FileUtil, LazFileUtils, LazFileCache, // IDEIntf - IDEWindowIntf, LazIDEIntf, SrcEditorIntf, IDEDialogs, MainIntf, + IDEWindowIntf, LazIDEIntf, SrcEditorIntf, IDEDialogs, // ide LazarusIDEStrConsts, InputHistory, IDEProcs, SearchResultView, Project; @@ -54,7 +56,7 @@ lblProgress: TLABEL; lblSearchText: TLABEL; Panel2: TPANEL; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormShow(Sender: TObject); procedure OnAddMatch(const Filename: string; const StartPos, EndPos: TPoint; const Lines: string); @@ -214,6 +216,8 @@ StartPos:=1; while (StartPos<=length(Lines)) and (Lines[StartPos] in WhiteSpaceChars) do inc(StartPos); + if (APosition>0) and (StartPos>APosition) then + StartPos:=APosition; EndPos:=length(Lines)+1; while (EndPos>=StartPos) and (Lines[EndPos-1] in WhiteSpaceChars) do dec(EndPos); @@ -709,7 +713,7 @@ //DebugLn(['TSearchForm.OnAddMatch length(Lines)=',length(Lines),' LastLineLen=',LastLineLen,' MatchLen=',MatchLen]); TrimmedMatch:=StartPos.X; TrimmedLines:=TrimLinesAndAdjustPos(Lines,TrimmedMatch); - //DebugLn(['TSearchForm.OnAddMatch StartPos=',dbgs(StartPos),' EndPos=',dbgs(EndPos),' Lines="',Lines,'"']); + //DebugLn(['TSearchForm.OnAddMatch StartPos=',dbgs(StartPos),' EndPos=',dbgs(EndPos),' Lines="',Lines,'" Trimmed="',TrimmedLines,'" TrimmedMatch=',TrimmedMatch]); SearchResultsView.AddMatch(fResultsWindow.PageIndex,FileName,StartPos,EndPos, TrimmedLines, TrimmedMatch, MatchLen); UpdateMatches; @@ -845,7 +849,7 @@ F: String; begin F := FileName; - if FileProcs.FileIsTextCached(F) then + if FileIsTextCached(F) then begin FParent.UpdateProgress(F); FParent.SearchFile(F); diff -Nru lazarus-1.4.4+dfsg/ide/searchresultview.lfm lazarus-1.6+dfsg/ide/searchresultview.lfm --- lazarus-1.4.4+dfsg/ide/searchresultview.lfm 2015-06-25 20:40:32.000000000 +0000 +++ lazarus-1.6+dfsg/ide/searchresultview.lfm 2015-06-28 12:27:53.000000000 +0000 @@ -11,8 +11,7 @@ OnClose = FormClose OnCreate = Form1Create OnKeyDown = FormKeyDown - Position = poDefault - LCLVersion = '1.1' + LCLVersion = '1.5' object ResultsNoteBook: TPageControl AnchorSideTop.Control = ToolBar AnchorSideTop.Side = asrBottom @@ -35,6 +34,7 @@ Width = 57 Align = alNone AutoSize = True + EdgeBorders = [] Images = ImageList TabOrder = 2 object SearchAgainButton: TToolButton @@ -53,6 +53,7 @@ end object ToolButton3: TToolButton Left = 47 + Height = 22 Top = 2 Width = 10 Caption = 'ToolButton3' @@ -65,8 +66,8 @@ AnchorSideTop.Control = ToolBar AnchorSideTop.Side = asrCenter Left = 63 - Height = 21 - Top = 2 + Height = 23 + Top = 1 Width = 296 UseFormActivate = True ButtonWidth = 23 diff -Nru lazarus-1.4.4+dfsg/ide/searchresultview.pp lazarus-1.6+dfsg/ide/searchresultview.pp --- lazarus-1.4.4+dfsg/ide/searchresultview.pp 2015-06-25 20:40:32.000000000 +0000 +++ lazarus-1.6+dfsg/ide/searchresultview.pp 2015-11-28 19:42:00.000000000 +0000 @@ -37,7 +37,7 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Graphics, ComCtrls, LCLType, LCLIntf, + Classes, SysUtils, LCLProc, Forms, Controls, Graphics, ComCtrls, LCLType, LCLIntf, LazUTF8, Menus, strutils, IDEOptionDefs, LazarusIDEStrConsts, EnvironmentOpts, InputHistory, IDEProcs, Project, MainIntf, Clipbrd, ActnList, IDECommands, TreeFilterEdit; @@ -148,25 +148,25 @@ procedure ClosePageButtonClick(Sender: TObject); procedure Form1Create(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); - procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure mniCopyAllClick(Sender: TObject); procedure mniCopyItemClick(Sender: TObject); procedure mniCopySelectedClick(Sender: TObject); procedure mniExpandAllClick(Sender: TObject); procedure mniCollapseAllClick(Sender: TObject); procedure ResultsNoteBookMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + {%H-}Shift: TShiftState; X, Y: Integer); procedure TreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ResultsNoteBookClosetabclicked(Sender: TObject); procedure SearchAgainButtonClick(Sender: TObject); procedure TreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; - var PaintImages, DefaultDraw: Boolean); - procedure LazTVShowHint(Sender: TObject; HintInfo: PHintInfo); - procedure LazTVMousemove(Sender: TObject; Shift: TShiftState; + var {%H-}PaintImages, {%H-}DefaultDraw: Boolean); + procedure LazTVShowHint(Sender: TObject; {%H-}HintInfo: PHintInfo); + procedure LazTVMousemove(Sender: TObject; {%H-}Shift: TShiftState; X, Y: Integer); Procedure LazTVMouseWheel(Sender: TObject; Shift: TShiftState; - WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); + {%H-}WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); procedure TreeViewKeyPress(Sender: TObject; var Key: char); procedure ResultsNoteBookPageChanged (Sender: TObject ); procedure SearchInListChange(Sender: TObject ); @@ -368,7 +368,8 @@ var TabIndex: LongInt; begin - if (Button = mbMiddle) then begin + if (Button = mbMiddle) then + begin TabIndex := ResultsNoteBook.TabIndexAtClientPos(Point(X,Y)); if TabIndex >= 0 then ResultsNoteBookClosetabclicked(ResultsNoteBook.Page[TabIndex]); @@ -448,7 +449,8 @@ if Key = Char(VK_RETURN) then //SearchInListEdit passes only OnPress through begin Key := #0; - FOnSelectionChanged(Self); + if Assigned(FOnSelectionChanged) then + FOnSelectionChanged(Self); end; end; @@ -711,7 +713,8 @@ if (Key = VK_RETURN) and (Shift = []) then begin Key:=VK_UNKNOWN; - FOnSelectionChanged(Self); + if Assigned(FOnSelectionChanged) then + FOnSelectionChanged(Self); end; end; @@ -757,16 +760,18 @@ PopupMenu := popList; NewTreeView.Canvas.Brush.Color:= clWhite; end;//with - end;//if - SearchObj:=NewTreeView.SearchObject; - if SearchObj<>nil then begin - SearchObj.SearchString:= SearchText; - SearchObj.ReplaceText := ReplaceText; - SearchObj.SearchDirectories:= ADirectories; - SearchObj.SearchMask:= AMask; - SearchObj.SearchOptions:= TheOptions; - end; - NewTreeView.Skipped:=0; + SearchObj:=NewTreeView.SearchObject; + if SearchObj<>nil then begin + SearchObj.SearchString:= SearchText; + SearchObj.ReplaceText := ReplaceText; + SearchObj.SearchDirectories:= ADirectories; + SearchObj.SearchMask:= AMask; + SearchObj.SearchOptions:= TheOptions; + end; + NewTreeView.Skipped:=0; + end + else + NewTreeView:=nil; Result:= Pages[PageIndex]; SearchInListEdit.Text:=''; SearchInListEdit.Filter:=''; @@ -812,72 +817,74 @@ MatchPos,FirstMatchPos: TLazSearchMatchPos; TextEnd, DrawnTextLength: integer; ARect: TRect; + TV: TLazSearchResultTV; begin if Stage <> cdPostPaint then Exit; - With Sender as TLazSearchResultTV do - begin - if [cdsSelected,cdsMarked] * State <> [] then - Canvas.Font.Color := clHighlightText; - - ARect:=Node.DisplayRect(true); - Canvas.FillRect(ARect); - - MatchObj := TLazSearchMatchPos(Node.Data); - if assigned(MatchObj) and (MatchObj is TLazSearchMatchPos) then - MatchPos:= TLazSearchMatchPos(Node.Data) - else - MatchPos:= nil; - - if Assigned(MatchPos) then - begin - - FirstMatchPos:=MatchPos; - TheTop:= ARect.Top; - TextEnd:=ARect.Left; - DrawnTextLength:=0; - - CurPart:=MatchPos.ShownFilename+' ('+IntToStr(MatchPos.FileStartPos.Y) - +':'+IntToStr(MatchPos.FileStartPos.X); + TV:=Sender as TLazSearchResultTV; + if [cdsSelected,cdsMarked] * State <> [] then + TV.Canvas.Font.Color := clHighlightText; + + ARect:=Node.DisplayRect(true); + TV.Canvas.FillRect(ARect); + + MatchObj := TLazSearchMatchPos(Node.Data); + if assigned(MatchObj) and (MatchObj is TLazSearchMatchPos) then + MatchPos:= TLazSearchMatchPos(Node.Data) + else + MatchPos:= nil; + + if Assigned(MatchPos) then + begin + + FirstMatchPos:=MatchPos; + TheTop:= ARect.Top; + TextEnd:=ARect.Left; + DrawnTextLength:=0; + + CurPart:=MatchPos.ShownFilename+' ('+IntToStr(MatchPos.FileStartPos.Y) + +':'+IntToStr(MatchPos.FileStartPos.X); + MatchPos:=MatchPos.NextInThisLine; + SetBkMode(TV.Canvas.Handle, TRANSPARENT); + while assigned(MatchPos) do begin + CurPart:=CurPart+','+IntToStr(MatchPos.FileStartPos.X); MatchPos:=MatchPos.NextInThisLine; - SetBkMode(Canvas.Handle, TRANSPARENT); - while assigned(MatchPos) do begin - CurPart:=CurPart+','+IntToStr(MatchPos.FileStartPos.X); - MatchPos:=MatchPos.NextInThisLine; - end; - CurPart:=CurPart+') '; - Canvas.TextOut(TextEnd, TheTop, CurPart); - TextEnd:= TextEnd + Canvas.TextWidth(CurPart); - - MatchPos:=FirstMatchPos; - while assigned(MatchPos) do begin - CurPart:=SpecialCharsToHex(copy(MatchPos.TheText,DrawnTextLength+1,MatchPos.MatchStart-1-DrawnTextLength)); - DrawnTextLength:=MatchPos.MatchStart-1; - Canvas.TextOut(TextEnd, TheTop, CurPart); - TextEnd:= TextEnd + Canvas.TextWidth(CurPart); - - CurPart:=SpecialCharsToHex(copy(MatchPos.TheText,DrawnTextLength+1,MatchPos.MatchLen)); - DrawnTextLength:=DrawnTextLength+MatchPos.MatchLen; - if UTF8Length(CurPart)>MaxTextLen then - CurPart:=UTF8Copy(CurPart,1,MaxTextLen)+'...'; - Canvas.Font.Style:= Canvas.Font.Style + [fsBold]; - Canvas.TextOut(TextEnd, TheTop, CurPart); - TextEnd:= TextEnd + Canvas.TextWidth(CurPart); - Canvas.Font.Style:= Canvas.Font.Style - [fsBold]; - - if MatchPos.NextInThisLine=nil then begin - CurPart:=SpecialCharsToHex(copy(MatchPos.TheText, DrawnTextLength+1,Length(MatchPos.TheText))); - Canvas.TextOut(TextEnd, TheTop, CurPart); - end; - MatchPos:=MatchPos.NextInThisLine; + end; + CurPart:=CurPart+') '; + TV.Canvas.TextOut(TextEnd, TheTop, CurPart); + TextEnd:= TextEnd + TV.Canvas.TextWidth(CurPart); + + MatchPos:=FirstMatchPos; + while assigned(MatchPos) do begin + //debugln(['TSearchResultsView.TreeViewAdvancedCustomDrawItem MatchPos.TheText="',MatchPos.TheText,'" MatchPos.MatchStart=',MatchPos.MatchStart,' MatchPos.MatchLen=',MatchPos.MatchLen]); + // draw normal text + CurPart:=SpecialCharsToHex(copy(MatchPos.TheText,DrawnTextLength+1,MatchPos.MatchStart-1-DrawnTextLength)); + DrawnTextLength:=MatchPos.MatchStart-1; + TV.Canvas.TextOut(TextEnd, TheTop, CurPart); + TextEnd:= TextEnd + TV.Canvas.TextWidth(CurPart); + + // draw found text (matched) + CurPart:=SpecialCharsToHex(copy(MatchPos.TheText,DrawnTextLength+1,MatchPos.MatchLen)); + DrawnTextLength:=DrawnTextLength+MatchPos.MatchLen; + if UTF8Length(CurPart)>MaxTextLen then + CurPart:=UTF8Copy(CurPart,1,MaxTextLen)+'...'; + TV.Canvas.Font.Style:= TV.Canvas.Font.Style + [fsBold]; + TV.Canvas.TextOut(TextEnd, TheTop, CurPart); + TextEnd:= TextEnd + TV.Canvas.TextWidth(CurPart); + TV.Canvas.Font.Style:= TV.Canvas.Font.Style - [fsBold]; + + if MatchPos.NextInThisLine=nil then begin + CurPart:=SpecialCharsToHex(copy(MatchPos.TheText, DrawnTextLength+1,Length(MatchPos.TheText))); + TV.Canvas.TextOut(TextEnd, TheTop, CurPart); end; - end - else begin - // this is usually the filename only - // draw it here too, so that the correct colors are used - Canvas.TextOut(ARect.Left, ARect.Top, Node.Text); - end;//if - end;//with + MatchPos:=MatchPos.NextInThisLine; + end; + end + else begin + // this is usually the filename only + // draw it here too, so that the correct colors are used + TV.Canvas.TextOut(ARect.Left, ARect.Top, Node.Text); + end;//if end;//TreeViewDrawItem {Returns the Position within the source file from a properly formated search result} diff -Nru lazarus-1.4.4+dfsg/ide/showcompileropts.pas lazarus-1.6+dfsg/ide/showcompileropts.pas --- lazarus-1.4.4+dfsg/ide/showcompileropts.pas 2014-06-09 07:40:55.000000000 +0000 +++ lazarus-1.6+dfsg/ide/showcompileropts.pas 2015-07-07 11:43:38.000000000 +0000 @@ -35,11 +35,10 @@ interface uses - Classes, SysUtils, LazUTF8, LazLogger, - Forms, Controls, Graphics, Dialogs, Buttons, StdCtrls, ComCtrls, ExtCtrls, - CodeToolsCfgScript, + Classes, SysUtils, Forms, Controls, Buttons, StdCtrls, ComCtrls, ExtCtrls, + LazFileUtils, LazUTF8, CodeToolsCfgScript, LazIDEIntf, IDEImagesIntf, CompOptsIntf, ProjectIntf, - LazarusIDEStrConsts, CompilerOptions, TransferMacros, + LazarusIDEStrConsts, CompilerOptions, IDEProcs, Project, ModeMatrixOpts, PackageDefs, MiscOptions; type @@ -56,7 +55,7 @@ InhTreeView: TTreeView; PageControl1: TPageControl; RelativePathsCheckBox: TCheckBox; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure InhTreeViewSelectionChanged(Sender: TObject); diff -Nru lazarus-1.4.4+dfsg/ide/sortselectiondlg.pas lazarus-1.6+dfsg/ide/sortselectiondlg.pas --- lazarus-1.4.4+dfsg/ide/sortselectiondlg.pas 2013-09-19 20:06:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sortselectiondlg.pas 2015-05-22 20:20:45.000000000 +0000 @@ -62,7 +62,7 @@ DomainRadioGroup: TRadioGroup; procedure DirectionRadioGroupClick(Sender: TObject); procedure DomainRadioGroupClick(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure OptionsCheckGroupItemClick(Sender: TObject; Index: integer); private @@ -95,7 +95,7 @@ function ShowSortSelectionDialog(const TheText: string; Highlighter: TSynCustomHighlighter; - var SortedText: string): TModalResult; + out SortedText: string): TModalResult; function SortText(const TheText: string; Direction: TSortDirection; Domain: TSortDomain; CaseSensitive, IgnoreSpace: boolean): string; @@ -104,23 +104,27 @@ {$R *.lfm} function ShowSortSelectionDialog(const TheText: string; - Highlighter: TSynCustomHighlighter; - var SortedText: string): TModalResult; + Highlighter: TSynCustomHighlighter; out SortedText: string): TModalResult; var SortSelectionDialog: TSortSelectionDialog; begin + SortedText:=''; SortSelectionDialog:=TSortSelectionDialog.Create(nil); - SortSelectionDialog.BeginUpdate; - SortSelectionDialog.TheText:=TheText; - SortSelectionDialog.PreviewSynEdit.Highlighter:=Highlighter; - EditorOpts.SetMarkupColor(Highlighter, ahaTextBlock, SortSelectionDialog.PreviewSynEdit.SelectedColor); - SortSelectionDialog.UpdatePreview; - SortSelectionDialog.EndUpdate; - Result:=SortSelectionDialog.ShowModal; - if Result=mrOk then - SortedText:=SortSelectionDialog.SortedText; - IDEDialogLayoutList.SaveLayout(SortSelectionDialog); - SortSelectionDialog.Free; + try + SortSelectionDialog.BeginUpdate; + SortSelectionDialog.TheText:=TheText; + SortSelectionDialog.PreviewSynEdit.Highlighter:=Highlighter; + EditorOpts.SetMarkupColor(Highlighter, ahaTextBlock, SortSelectionDialog.PreviewSynEdit.SelectedColor); + EditorOpts.ApplyFontSettingsTo(SortSelectionDialog.PreviewSynEdit); + SortSelectionDialog.UpdatePreview; + SortSelectionDialog.EndUpdate; + Result:=SortSelectionDialog.ShowModal; + if Result=mrOk then + SortedText:=SortSelectionDialog.SortedText; + IDEDialogLayoutList.SaveLayout(SortSelectionDialog); + finally + SortSelectionDialog.Free; + end; end; function ShowSortSelectionDialogBase(const TheText: string; diff -Nru lazarus-1.4.4+dfsg/ide/sourceeditor.lfm lazarus-1.6+dfsg/ide/sourceeditor.lfm --- lazarus-1.4.4+dfsg/ide/sourceeditor.lfm 2014-07-20 18:27:21.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sourceeditor.lfm 2015-05-31 10:21:27.000000000 +0000 @@ -8,11 +8,11 @@ ClientHeight = 300 ClientWidth = 400 OnMouseUp = FormMouseUp - LCLVersion = '1.3' + LCLVersion = '1.5' object StatusBar: TStatusBar Left = 0 - Height = 21 - Top = 279 + Height = 20 + Top = 280 Width = 400 Panels = < item diff -Nru lazarus-1.4.4+dfsg/ide/sourceeditor.pp lazarus-1.6+dfsg/ide/sourceeditor.pp --- lazarus-1.4.4+dfsg/ide/sourceeditor.pp 2015-05-26 22:32:12.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sourceeditor.pp 2016-01-18 22:47:58.000000000 +0000 @@ -42,33 +42,35 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - SynEditMouseCmds, Classes, SysUtils, Math, Controls, ExtendedNotebook, - LCLProc, LCLType, LResources, LCLIntf, FileUtil, Forms, ComCtrls, Dialogs, - StdCtrls, Graphics, Translations, ClipBrd, types, Extctrls, Menus, HelpIntfs, + SynEditMouseCmds, Classes, SysUtils, types, Math, + Controls, Forms, ComCtrls, StdCtrls, Graphics, Dialogs, Extctrls, Menus, + ExtendedNotebook, LCLProc, LCLType, LResources, LCLIntf, FileUtil, LazFileUtils, + Translations, ClipBrd, HelpIntfs, LConvEncoding, Messages, LazLoggerBase, lazutf8classes, LazLogger, AvgLvlTree, - LazFileCache, + LazFileCache, LazUTF8, // codetools BasicCodeTools, CodeBeautifier, CodeToolManager, CodeCache, SourceLog, - LinkScanner, CodeTree, + LinkScanner, CodeTree, SourceChanger, // synedit SynEditLines, SynEditStrConst, SynEditTypes, SynEdit, SynRegExpr, SynEditHighlighter, SynEditAutoComplete, SynEditKeyCmds, SynCompletion, SynEditMiscClasses, SynEditMarkupHighAll, SynEditMarks, - SynBeautifier, LazSynEditText, - SynPluginSyncronizedEditBase, SourceSynEditor, SynMacroRecorder, + SynBeautifier, SynPluginMultiCaret, + SynPluginSyncronizedEditBase, SourceSynEditor, SynExportHTML, SynHighlighterPas, SynEditMarkup, SynEditMarkupIfDef, // Intf SrcEditorIntf, MenuIntf, LazIDEIntf, PackageIntf, IDEHelpIntf, IDEImagesIntf, - IDEWindowIntf, ProjectIntf, MacroDefIntf, + IDEWindowIntf, ProjectIntf, MacroDefIntf, ToolBarIntf, // IDE units - IDECmdLine, IDEDialogs, LazarusIDEStrConsts, IDECommands, CompOptsIntf, + IDECmdLine, IDEDialogs, LazarusIDEStrConsts, IDECommands, EditorOptions, EnvironmentOpts, WordCompletion, FindReplaceDialog, IDEProcs, IDEOptionDefs, IDEHelpManager, MacroPromptDlg, TransferMacros, CodeContextForm, SrcEditHintFrm, etMessagesWnd, etSrcEditMarks, InputHistory, CodeMacroPrompt, CodeTemplatesDlg, CodeToolsOptions, - SortSelectionDlg, EncloseSelectionDlg, ConDef, InvertAssignTool, + editor_general_options, + SortSelectionDlg, EncloseSelectionDlg, EncloseIfDef, InvertAssignTool, SourceEditProcs, SourceMarks, CharacterMapDlg, SearchFrm, - FPDocHints, EditorMacroListViewer, + FPDocHints, EditorMacroListViewer, EditorToolbarStatic, editortoolbar_options, DbgIntfBaseTypes, DbgIntfDebuggerBase, BaseDebugManager, Debugger, MainIntf, GotoFrm; @@ -244,6 +246,7 @@ FOnMouseDown: TMouseEvent; FOnMouseWheel : TMouseWheelEvent; FOnKeyDown: TKeyEvent; + FOnKeyUp: TKeyEvent; FSourceNoteBook: TSourceNotebook; procedure EditorMouseMoved(Sender: TObject; Shift: TShiftState; X,Y:Integer); @@ -252,7 +255,8 @@ procedure EditorMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); procedure EditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure EditorStatusChanged(Sender: TObject; Changes: TSynStatusChanges); + procedure EditorKeyUp({%H-}Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); + procedure EditorStatusChanged(Sender: TObject; {%H-}Changes: TSynStatusChanges); procedure EditorPaste(Sender: TObject; var AText: String; var AMode: TSynSelectionMode; ALogStartPos: TPoint; var AnAction: TSynCopyPasteAction); @@ -261,9 +265,9 @@ procedure EditorEnter(Sender: TObject); procedure EditorActivateSyncro(Sender: TObject); procedure EditorDeactivateSyncro(Sender: TObject); - procedure EditorChangeUpdating(ASender: TObject; AnUpdating: Boolean); + procedure EditorChangeUpdating({%H-}ASender: TObject; AnUpdating: Boolean); function EditorHandleMouseAction(AnAction: TSynEditMouseAction; - var AnInfo: TSynEditMouseActionInfo): Boolean; + var {%H-}AnInfo: TSynEditMouseActionInfo): Boolean; function GetCodeBuffer: TCodeBuffer; function GetExecutionLine: integer; function GetHasExecutionMarks: Boolean; @@ -271,7 +275,6 @@ procedure SetCodeBuffer(NewCodeBuffer: TCodeBuffer); function GetSource: TStrings; procedure SetIsLocked(const AValue: Boolean); - procedure SetPageName(const AValue: string); procedure UpdateExecutionSourceMark; procedure UpdatePageName; procedure SetSource(Value: TStrings); @@ -291,23 +294,29 @@ procedure UpdateIfDefNodeStates(Force: Boolean = False); protected + function GetPageCaption: string; override; + function GetPageName: string; override; + procedure SetPageName(const AValue: string); + protected + procedure DoMultiCaretBeforeCommand(Sender: TObject; ACommand: TSynEditorCommand; + var AnAction: TSynMultiCaretCommandAction; var {%H-}AFlags: TSynMultiCaretCommandFlags); procedure ProcessCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); + var Command: TSynEditorCommand; var AChar: TUTF8Char; {%H-}Data: pointer); procedure ProcessUserCommand(Sender: TObject; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); procedure UserCommandProcessed(Sender: TObject; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); function AutoCompleteChar(Char: TUTF8Char; var AddChar: boolean; Category: TAutoCompleteOption): boolean; - function AutoBlockCompleteChar(Char: TUTF8Char; var AddChar: boolean; + function AutoBlockCompleteChar({%H-}Char: TUTF8Char; var {%H-}AddChar: boolean; Category: TAutoCompleteOption; aTextPos: TPoint; Line: string): boolean; - function AutoBlockCompleteChar(Char: TUTF8Char): boolean; + function AutoBlockCompleteChar({%H-}Char: TUTF8Char): boolean; procedure AutoCompleteBlock; procedure FocusEditor;// called by TSourceNotebook when the Notebook page // changes so the editor is focused - procedure OnGutterClick(Sender: TObject; X, Y, Line: integer; - mark: TSynEditMark); + procedure OnGutterClick(Sender: TObject; {%H-}X, {%H-}Y, Line: integer; + {%H-}Mark: TSynEditMark); procedure OnEditorSpecialLineColor(Sender: TObject; Line: integer; var Special: boolean; Markup: TSynSelectedColor); function RefreshEditorSettings: Boolean; @@ -318,7 +327,7 @@ procedure SetErrorLine(NewLine: integer); procedure SetExecutionLine(NewLine: integer); procedure StartIdentCompletionBox(JumpToError: boolean); - procedure StartWordCompletionBox(JumpToError: boolean); + procedure StartWordCompletionBox; function IsFirstShared(Sender: TObject): boolean; @@ -355,9 +364,9 @@ // find procedure StartFindAndReplace(Replace:boolean); procedure AskReplace(Sender: TObject; const ASearch, AReplace: - string; Line, Column: integer; var Action: TSrcEditReplaceAction); override; + string; Line, Column: integer; out Action: TSrcEditReplaceAction); override; procedure OnReplace(Sender: TObject; const ASearch, AReplace: - string; Line, Column: integer; var Action: TSynReplaceAction); + string; {%H-}Line, {%H-}Column: integer; var Action: TSynReplaceAction); function DoFindAndReplace(aFindText, aReplaceText: String; anOptions: TSynSearchOptions): Integer; procedure FindNextUTF8; procedure FindPrevious; @@ -366,7 +375,10 @@ // dialogs procedure GetDialogPosition(Width, Height: integer; out Left, Top: integer); - procedure ActivateHint(ClientPos: TPoint; const BaseURL, TheHint: string); + procedure ActivateHint(const ClientPos: TPoint; const ABaseURL, AHint: string; + AAutoShown: Boolean = True); overload; + procedure ActivateHint(ClientRect: TRect; const ABaseURL, AHint: string; + AAutoShown: Boolean); overload; // selections function SelectionAvailable: boolean; override; @@ -418,9 +430,13 @@ // context help procedure FindHelpForSourceAtCursor; + //Smart hint + procedure ShowSmartHintForSourceAtCursor; // editor commands - procedure DoEditorExecuteCommand(EditorCommand: word); + procedure DoEditorExecuteCommand(EditorCommand: word); override; + procedure MoveToWindow(AWindowIndex: Integer); override; + procedure CopyToWindow(AWindowIndex: Integer); override; // used to get the word at the mouse cursor function GetWordFromCaret(const ACaretPos: TPoint): String; @@ -474,10 +490,10 @@ procedure CheckActiveWindow; // debugging - procedure DoRequestExecutionMarks(Data: PtrInt); + procedure DoRequestExecutionMarks({%H-}Data: PtrInt); procedure FillExecutionMarks; procedure ClearExecutionMarks; - procedure LineInfoNotificationChange(const ASender: TObject; const ASource: String); + procedure LineInfoNotificationChange(const {%H-}ASender: TObject; const ASource: String); function SourceToDebugLine(aLinePos: Integer): Integer; function DebugToSourceLine(aLinePos: Integer): Integer; @@ -502,8 +518,9 @@ property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown; property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write FOnMouseWheel; property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown; + property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp; property Owner: TComponent read FAOwner; - property PageName: string read FPageName write SetPageName; + property PageName: string read GetPageName write SetPageName; property PopupMenu: TPopupMenu read FPopUpMenu write SetPopUpMenu; property ReadOnly: Boolean read GetReadOnly write SetReadOnly; property Source: TStrings read GetSource write SetSource; @@ -524,17 +541,17 @@ TJumpHistoryAction = (jhaBack, jhaForward, jhaViewWindow); - TOnJumpToHistoryPoint = procedure(var NewCaretXY: TPoint; - var NewTopLine: integer; - var DestEditor: TSourceEditor; + TOnJumpToHistoryPoint = procedure(out NewCaretXY: TPoint; + out NewTopLine: integer; + out DestEditor: TSourceEditor; Action: TJumpHistoryAction) of object; TOnAddJumpPoint = procedure(ACaretXY: TPoint; ATopLine: integer; AEditor: TSourceEditor; DeleteForwardHistory: boolean) of object; TOnMovingPage = procedure(Sender: TObject; OldPageIndex, NewPageIndex: integer) of object; TOnCloseSrcEditor = procedure(Sender: TObject; InvertedClose: boolean) of object; - TOnShowHintForSource = procedure(SrcEdit: TSourceEditor; ClientPos: TPoint; - CaretPos: TPoint) of object; + TOnShowHintForSource = procedure(SrcEdit: TSourceEditor; + CaretPos: TPoint; AutoShown: Boolean) of object; TOnInitIdentCompletion = procedure(Sender: TObject; JumpToError: boolean; out Handled, Abort: boolean) of object; TSrcEditPopupMenuEvent = procedure(const AddMenuItemProc: TAddMenuItemProc @@ -565,6 +582,8 @@ ); TSourceNotebookUpdateFlags = set of TSourceNotebookUpdateFlag; + TBrowseEditorTabHistoryDialog = class; + { TSourceNotebook } TSourceNotebook = class(TSourceEditorWindowInterface) @@ -575,8 +594,8 @@ procedure EncodingClicked(Sender: TObject); procedure ExtractProcMenuItemClick(Sender: TObject); procedure FindOverloadsMenuItemClick(Sender: TObject); - procedure FormMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + procedure FormMouseUp(Sender: TObject; {%H-}Button: TMouseButton; + {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); procedure HighlighterClicked(Sender: TObject); procedure InsertCharacter(const C: TUTF8Char); procedure InvertAssignmentMenuItemClick(Sender: TObject); @@ -600,7 +619,7 @@ procedure SrcPopUpMenuPopup(Sender: TObject); procedure StatusBarClick(Sender: TObject); procedure StatusBarDblClick(Sender: TObject); - procedure StatusBarDrawPanel(AStatusBar: TStatusBar; APanel: TStatusPanel; + procedure StatusBarDrawPanel({%H-}AStatusBar: TStatusBar; APanel: TStatusPanel; const ARect: TRect); procedure TabPopUpMenuPopup(Sender: TObject); private @@ -629,7 +648,9 @@ FProcessingCommand: boolean; FSourceEditorList: TFPList; // list of TSourceEditor FHistoryList: TFPList; // list of TSourceEditor page order for when a window closes + FHistoryDlg: TBrowseEditorTabHistoryDialog; FStopBtnIdx: Integer; + FOnEditorPageCaptionUpdate: TMethodList; private FUpdateTabAndPageTimer: TTimer; FWindowID: Integer; @@ -642,9 +663,9 @@ function GetPageIndex: Integer; procedure SetPageIndex(AValue: Integer); - procedure UpdateHighlightMenuItems; - procedure UpdateLineEndingMenuItems; - procedure UpdateEncodingMenuItems; + procedure UpdateHighlightMenuItems(SrcEdit: TSourceEditor); + procedure UpdateLineEndingMenuItems(SrcEdit: TSourceEditor); + procedure UpdateEncodingMenuItems(SrcEdit: TSourceEditor); procedure RemoveUserDefinedMenuItems; function AddUserDefinedPopupMenuItem(const NewCaption: string; const NewEnabled: boolean; @@ -666,6 +687,7 @@ procedure NoteBookDeletePage(APageIndex: Integer); procedure UpdateTabsAndPageTitle; procedure UpdateTabsAndPageTimeReached(Sender: TObject); + procedure CallOnEditorPageCaptionUpdate(Sender: TObject); protected function NoteBookIndexOfPage(APage: TTabSheet): Integer; procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState; @@ -684,34 +706,36 @@ procedure EditorChanged(Sender: TObject); procedure DoClose(var CloseAction: TCloseAction); override; procedure DoShow; override; - + procedure DoHide; override; + function GetWindowID: Integer; override; protected function GetActiveCompletionPlugin: TSourceEditorCompletionPlugin; override; function GetCompletionPlugins(Index: integer): TSourceEditorCompletionPlugin; override; - procedure EditorMouseMove(Sender: TObject; Shift: TShiftstate; - X,Y: Integer); - procedure EditorMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftstate; X,Y: Integer); + procedure EditorMouseMove(Sender: TObject; {%H-}Shift: TShiftstate; + {%H-}X,{%H-}Y: Integer); + procedure EditorMouseDown(Sender: TObject; {%H-}Button: TMouseButton; + {%H-}Shift: TShiftstate; {%H-}X,{%H-}Y: Integer); function EditorGetIndent(Sender: TObject; Editor: TObject; LogCaret, OldLogCaret: TPoint; FirstLinePos, LastLinePos: Integer; Reason: TSynEditorCommand; SetIndentProc: TSynBeautifierSetIndentProc): Boolean; - procedure EditorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure EditorMouseWheel(Sender: TObject; Shift: TShiftState; - WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); + procedure EditorKeyDown(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); + procedure EditorKeyUp(Sender: TObject; var {%H-}Key: Word; {%H-}Shift: TShiftState); + procedure EditorMouseWheel(Sender: TObject; {%H-}Shift: TShiftState; + {%H-}WheelDelta: Integer; {%H-}MousePos: TPoint; var {%H-}Handled: Boolean); procedure NotebookMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X,Y: Integer); - procedure NotebookDragTabMove(Sender, Source: TObject; + {%H-}Shift: TShiftState; X,Y: Integer); + procedure NotebookDragDropEx(Sender, Source: TObject; OldIndex, NewIndex: Integer; CopyDrag: Boolean; var Done: Boolean); - procedure NotebookCanDragTabMove(Sender, Source: TObject; + procedure NotebookDragOverEx(Sender, Source: TObject; OldIndex, NewIndex: Integer; CopyDrag: Boolean; var Accept: Boolean); procedure NotebookDragOver(Sender, Source: TObject; - X,Y: Integer; State: TDragState; var Accept: Boolean); - procedure NotebookEndDrag(Sender, Target: TObject; X,Y: Integer); + {%H-}X,{%H-}Y: Integer; State: TDragState; var Accept: Boolean); + procedure NotebookEndDrag(Sender, {%H-}Target: TObject; {%H-}X,{%H-}Y: Integer); procedure OnApplicationDeactivate(Sender: TObject); procedure ShowSynEditHint(const MousePos: TPoint); @@ -731,10 +755,10 @@ procedure MoveEditorNextWindow(Backward: Boolean = False; Copy: Boolean = False); procedure CopyEditor(OldPageIndex, NewWindowIndex, NewPageIndex: integer; Focus: Boolean = False); procedure ProcessParentCommand(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer; + var Command: TSynEditorCommand; var {%H-}AChar: TUTF8Char; {%H-}Data: pointer; var Handled: boolean); procedure ParentCommandProcessed(Sender: TObject; - var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer; + var Command: TSynEditorCommand; var {%H-}AChar: TUTF8Char; {%H-}Data: pointer; var Handled: boolean); function GetActiveEditor: TSourceEditorInterface; override; @@ -747,6 +771,9 @@ procedure BeginAutoFocusLock; procedure EndAutoFocusLock; + public + procedure AddUpdateEditorPageCaptionHandler(AEvent: TNotifyEvent; const AsLast: Boolean = True); override; + procedure RemoveUpdateEditorPageCaptionHandler(AEvent: TNotifyEvent); override; protected procedure CloseTabClicked(Sender: TObject); procedure CloseClicked(Sender: TObject; CloseOthers: Boolean = False); @@ -793,7 +820,7 @@ function FindSourceEditorWithEditorComponent(EditorComp: TComponent): TSourceEditor; function GetActiveSE: TSourceEditor; { $note deprecate and use SetActiveEditor} procedure CheckCurrentCodeBufferChanged; - function IndexOfEditorInShareWith(AnOtherEditor: TSourceEditor): Integer; + function IndexOfEditorInShareWith(AnOtherEditor: TSourceEditorInterface): Integer; override; procedure MoveEditor(OldPageIndex, NewPageIndex: integer); procedure MoveEditor(OldPageIndex, NewWindowIndex, NewPageIndex: integer); @@ -807,18 +834,32 @@ procedure CloseFile(APageIndex:integer); procedure FocusEditor; function GetCapabilities: TCTabControlCapabilities; - procedure IncUpdateLock; - procedure DecUpdateLock; + procedure IncUpdateLock; override; + procedure DecUpdateLock; override; public property Editors[Index:integer]:TSourceEditor read GetEditors; // !!! not ordered for PageIndex - // The number in the Form.Caption minus 1 (0-based), if multiple Win are open - property WindowID: Integer read FWindowID; // forwarders to the FNotebook property PageIndex: Integer read GetPageIndex write SetPageIndex; property PageCount: Integer read GetPageCount; property NotebookPages: TStrings read GetNotebookPages; end; + { TBrowseEditorTabHistoryDialog } + + TBrowseEditorTabHistoryDialog = class(TForm) + private + FNotebook: TSourceNotebook; + FEditorList: TListBox; + + procedure MoveInList(aForward: Boolean); + protected + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + procedure KeyUp(var Key: Word; Shift: TShiftState); override; + procedure DoCreate; override; + public + procedure Show(aForward: Boolean); reintroduce; + end; + TSrcEditMangerHandlerType = ( semhtCopyPaste ); @@ -840,6 +881,7 @@ FActiveEditorLock: Integer; FAutoFocusLock: Integer; FUpdateFlags: TSrcEditManagerUpdateFlags; + FShowTabs: Boolean; procedure FreeSourceWindows; function GetActiveSourceWindowIndex: integer; function GetSourceWindowByLastFocused(Index: Integer): TSourceEditorWindowInterface; @@ -852,7 +894,7 @@ function GetActiveSourceWindow: TSourceEditorWindowInterface; override; procedure SetActiveSourceWindow(const AValue: TSourceEditorWindowInterface); override; function GetSourceWindows(Index: integer): TSourceEditorWindowInterface; override; - procedure DoWindowFocused(AWindow: TSourceNotebook); // Includes Focus to ChildControl (aka Activated) + procedure DoWindowFocused({%H-}AWindow: TSourceNotebook); // Includes Focus to ChildControl (aka Activated) function GetActiveEditor: TSourceEditorInterface; override; procedure SetActiveEditor(const AValue: TSourceEditorInterface); override; procedure DoActiveEditorChanged; @@ -861,6 +903,10 @@ function GetUniqueSourceEditors(Index: integer): TSourceEditorInterface; override; function GetMarklingProducers(Index: integer): TSourceMarklingProducer; override; procedure SyncMessageWnd(Sender: TObject); + procedure DoWindowShow(AWindow: TSourceNotebook); + procedure DoWindowHide(AWindow: TSourceNotebook); + function GetShowTabs: Boolean; override; + procedure SetShowTabs(const AShowTabs: Boolean); override; public procedure BeginAutoFocusLock; procedure EndAutoFocusLock; @@ -927,7 +973,7 @@ public procedure IncUpdateLock; procedure DecUpdateLock; - procedure ShowActiveWindowOnTop(Focus: Boolean = False); + procedure ShowActiveWindowOnTop(Focus: Boolean = False); override; private FMacroRecorder: TIdeEditorMacro; FOnCurrentCodeBufferChanged: TNotifyEvent; @@ -938,11 +984,45 @@ read FOnCurrentCodeBufferChanged write FOnCurrentCodeBufferChanged; end; + TJumpToSectionType = ( + jmpInterface, jmpInterfaceUses, + jmpImplementation, jmpImplementationUses, + jmpInitialization); + TJumpToProcedureType = (jmpHeader, jmpBegin); + + TSourceEditorHintWindowManager = class(TIDEHintWindowManager) + private + FManager: TSourceEditorManager; + FAutoShown: Boolean; + FAutoHintMousePos: TPoint; + FAutoHintTimer: TIdleTimer; + FAutoHideHintTimer: TTimer; + FLastHint: string; + FScreenRect: TRect; + + procedure HintTimer(Sender: TObject); + procedure HideHintTimer(Sender: TObject); + public + procedure ActivateHint(const ScreenRect: TRect; const ABaseURL, AHint: string; + AAutoShown: Boolean = True); overload; + procedure ActivateHint(const ScreenPos: TPoint; const ABaseURL, AHint: string; + AAutoShown: Boolean = True); overload; + procedure HideAutoHintAfterMouseMoved; + procedure HideAutoHint; + procedure UpdateHintTimer; + public + constructor Create(AManager: TSourceEditorManager); + destructor Destroy; override; + public + property AutoHintTimer: TIdleTimer read FAutoHintTimer; + end; + { TSourceEditorManager } (* Reintroduce all Methods with the final types *) TSourceEditorManager = class(TSourceEditorManagerBase) private + procedure DoConfigureEditorToolbar(Sender: TObject); function GetActiveSourceNotebook: TSourceNotebook; function GetActiveSrcEditor: TSourceEditor; function GetSourceEditorsByPage(WindowIndex, PageIndex: integer): TSourceEditor; @@ -951,6 +1031,8 @@ procedure SetActiveSourceNotebook(const AValue: TSourceNotebook); function GetSourceNotebook(Index: integer): TSourceNotebook; procedure SetActiveSrcEditor(const AValue: TSourceEditor); + procedure SrcEditMenuProcedureJumpGetCaption(Sender: TObject; var ACaption, + {%H-}AHint: string); public // Windows function SourceWindowWithEditor(const AEditor: TSourceEditorInterface): TSourceNotebook; @@ -993,8 +1075,7 @@ procedure ClearExecutionMarks; procedure FillExecutionMarks; procedure ReloadEditorOptions; - function ReIndent(const Src: string; OldIndent: integer=0; - OldTabWidth: integer=4): string; override; + function Beautify(const Src: string): string; override; // find / replace text procedure FindClicked(Sender: TObject); procedure FindNextClicked(Sender: TObject); @@ -1014,23 +1095,33 @@ public procedure BookMarkNextClicked(Sender: TObject); procedure BookMarkPrevClicked(Sender: TObject); + procedure JumpToPos(FileName: string; Pos: TCodeXYPosition; TopLine: Integer); + procedure JumpToSection(JumpType: TJumpToSectionType); + procedure JumpToInterfaceClicked(Sender: TObject); + procedure JumpToInterfaceUsesClicked(Sender: TObject); + procedure JumpToImplementationClicked(Sender: TObject); + procedure JumpToImplementationUsesClicked(Sender: TObject); + procedure JumpToInitializationClicked(Sender: TObject); + procedure JumpToProcedure(const JumpType: TJumpToProcedureType); + procedure JumpToProcedureHeaderClicked(Sender: TObject); + procedure JumpToProcedureBeginClicked(Sender: TObject); protected // macros - function MacroFuncCol(const s:string; const Data: PtrInt; - var Abort: boolean): string; - function MacroFuncRow(const s:string; const Data: PtrInt; - var Abort: boolean): string; - function MacroFuncEdFile(const s:string; const Data: PtrInt; - var Abort: boolean): string; - function MacroFuncCurToken(const s:string; const Data: PtrInt; - var Abort: boolean): string; - function MacroFuncConfirm(const s:string; const Data: PtrInt; + function MacroFuncCol(const {%H-}s:string; const {%H-}Data: PtrInt; + var {%H-}Abort: boolean): string; + function MacroFuncRow(const {%H-}s:string; const {%H-}Data: PtrInt; + var {%H-}Abort: boolean): string; + function MacroFuncEdFile(const {%H-}s:string; const {%H-}Data: PtrInt; + var {%H-}Abort: boolean): string; + function MacroFuncCurToken(const {%H-}s:string; const {%H-}Data: PtrInt; + var {%H-}Abort: boolean): string; + function MacroFuncConfirm(const s:string; const {%H-}Data: PtrInt; var Abort: boolean): string; - function MacroFuncPrompt(const s:string; const Data: PtrInt; + function MacroFuncPrompt(const s:string; const {%H-}Data: PtrInt; var Abort: boolean): string; - function MacroFuncSave(const s:string; const Data: PtrInt; + function MacroFuncSave(const {%H-}s:string; const {%H-}Data: PtrInt; var Abort: boolean): string; - function MacroFuncSaveAll(const s:string; const Data: PtrInt; + function MacroFuncSaveAll(const {%H-}s:string; const {%H-}Data: PtrInt; var Abort: boolean): string; public procedure InitMacros(AMacroList: TTransferMacroList); @@ -1038,7 +1129,7 @@ function FindUniquePageName(FileName:string; IgnoreEditor: TSourceEditor):string; function SomethingModified(Verbose: boolean = false): boolean; - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure OnUserInput(Sender: TObject; Msg: Cardinal); procedure LockAllEditorsInSourceChangeCache; procedure UnlockAllEditorsInSourceChangeCache; @@ -1050,15 +1141,11 @@ procedure HistoryJump(Sender: TObject; CloseAction: TJumpHistoryAction); private // Hints - FHints: TIDEHintWindowManager; - FMouseHintTimer: TIdleTimer; - FMouseHideHintTimer: TTimer; - FHintMousePos: TPoint; - procedure HintTimer(Sender: TObject); - procedure HideHintTimer(Sender: TObject); - procedure ActivateHint(const ScreenPos: TPoint; const BaseURL, TheHint: string); - procedure MaybeHideHint; - procedure UpdateHintTimer; + FHints: TSourceEditorHintWindowManager; + procedure ActivateHint(const ScreenRect: TRect; const BaseURL, TheHint: string; + AutoShown: Boolean = True); overload; + procedure ActivateHint(const ScreenPos: TPoint; const BaseURL, TheHint: string; + AutoShown: Boolean = True); overload; private FCodeTemplateModul: TSynEditAutoComplete; FGotoDialog: TfrmGoto; @@ -1072,7 +1159,7 @@ procedure OnWordCompletionGetSource(var Source: TStrings; SourceIndex: integer); procedure OnSourceCompletionTimer(Sender: TObject); // marks - procedure OnSourceMarksAction(AMark: TSourceMark; AAction: TMarksAction); + procedure OnSourceMarksAction(AMark: TSourceMark; {%H-}AAction: TMarksAction); procedure OnSourceMarksGetSynEdit(Sender: TObject; aFilename: string; var aSynEdit: TSynEdit); property CodeTemplateModul: TSynEditAutoComplete @@ -1104,7 +1191,6 @@ FOnCloseClicked: TOnCloseSrcEditor; FOnDeleteLastJumpPoint: TNotifyEvent; FOnEditorMoved: TNotifyEvent; - FOnEditorPropertiesClicked: TNotifyEvent; FOnFindDeclarationClicked: TNotifyEvent; FOnGetIndent: TOnGetIndentEvent; FOnGotoBookmark: TBookMarkActionEvent; @@ -1139,8 +1225,6 @@ read FOnDeleteLastJumpPoint write FOnDeleteLastJumpPoint; property OnEditorMoved: TNotifyEvent read FOnEditorMoved write FOnEditorMoved; - property OnEditorPropertiesClicked: TNotifyEvent - read FOnEditorPropertiesClicked write FOnEditorPropertiesClicked; property OnFindDeclarationClicked: TNotifyEvent read FOnFindDeclarationClicked write FOnFindDeclarationClicked; property OnInitIdentCompletion: TOnInitIdentCompletion @@ -1334,18 +1418,18 @@ r: Boolean; begin if SourceEditorManager = nil then exit; - if not (Sender is TIDEMenuCommand) then exit; - if TIDEMenuCommand(Sender).Command = nil then exit; + if not (Sender is TIDESpecialCommand) then exit; + if TIDESpecialCommand(Sender).Command = nil then exit; ActEdit := SourceEditorManager.ActiveEditor; if ActEdit = nil then exit; - r := TIDEMenuCommand(Sender).Command.OnExecuteProc = @ExecuteIdeMenuClick; + r := TIDESpecialCommand(Sender).Command.OnExecuteProc = @ExecuteIdeMenuClick; if r then - TIDEMenuCommand(Sender).Command.OnExecuteProc := nil; + TIDESpecialCommand(Sender).Command.OnExecuteProc := nil; // Commands may not work without focusing when anchordocking is installed ActEdit.FocusEditor; - ActEdit.DoEditorExecuteCommand(TIDEMenuCommand(Sender).Command.Command); + ActEdit.DoEditorExecuteCommand(TIDESpecialCommand(Sender).Command.Command); if r then - TIDEMenuCommand(Sender).Command.OnExecuteProc := @ExecuteIdeMenuClick; + TIDESpecialCommand(Sender).Command.OnExecuteProc := @ExecuteIdeMenuClick; end; procedure RegisterStandardSourceTabMenuItems; @@ -1577,6 +1661,8 @@ (AParent,'itmSourceEncloseInIFDEF',lisMenuEncloseInIFDEF); SrcEditMenuCompleteCode := RegisterIDEMenuCommand (AParent,'CompleteCode', lisMenuCompleteCode, nil, @ExecuteIdeMenuClick); + SrcEditMenuInvertAssignment := RegisterIDEMenuCommand + (AParent, 'InvertAssignment',uemInvertAssignment, nil, @ExecuteIdeMenuClick); SrcEditMenuUseUnit := RegisterIDEMenuCommand (AParent,'UseUnit', lisMenuUseUnit, nil, @ExecuteIdeMenuClick); SrcEditMenuShowUnitInfo := RegisterIDEMenuCommand @@ -1591,8 +1677,6 @@ (AParent, 'RenameIdentifier',lisMenuRenameIdentifier, nil, @ExecuteIdeMenuClick); SrcEditMenuExtractProc := RegisterIDEMenuCommand (AParent, 'ExtractProc',lisMenuExtractProc, nil, @ExecuteIdeMenuClick); - SrcEditMenuInvertAssignment := RegisterIDEMenuCommand - (AParent, 'InvertAssignment',uemInvertAssignment, nil, @ExecuteIdeMenuClick); SrcEditMenuShowAbstractMethods := RegisterIDEMenuCommand (AParent, 'ShowAbstractMethods',srkmecAbstractMethods, nil, @ExecuteIdeMenuClick); SrcEditMenuShowEmptyMethods := RegisterIDEMenuCommand @@ -1609,7 +1693,7 @@ {%endregion} SrcEditMenuEditorProperties:=RegisterIDEMenuCommand(SourceEditorMenuRoot, - 'EditorProperties', dlgFROpts, nil, nil, nil, 'menu_environment_options'); + 'EditorProperties', lisOptions, nil, nil, nil, 'menu_environment_options'); end; function dbgSourceNoteBook(snb: TSourceNotebook): string; @@ -1646,13 +1730,345 @@ Result:=CompareFilenames(AnsiString(FileNameStr),SE1.FileName); end; +{ TBrowseEditorTabHistoryDialog } + +procedure TBrowseEditorTabHistoryDialog.DoCreate; +begin + inherited DoCreate; + + Assert(Owner is TSourceNotebook); + FNotebook := TSourceNotebook(Owner); + + Caption := lisCoolbarSourceTab; + BorderIcons:=[]; + BorderStyle:=bsSizeable; + KeyPreview := True; + + FEditorList := TListBox.Create(Self); + FEditorList.Parent := Self; + FEditorList.Align := alClient; + {$IFDEF MSWINDOWS}//bsNone seems to work on Windows only + FEditorList.BorderStyle := bsNone; + {$ENDIF} +end; + +procedure TBrowseEditorTabHistoryDialog.KeyDown(var Key: Word; + Shift: TShiftState); + function CommandUsed(Command: TIDECommand): Boolean; + begin + Result := + ((Command.ShortcutA.Key1 = Key) and (Command.ShortcutA.Shift1 = Shift)) or + ((Command.ShortcutA.Key2 = Key) and (Command.ShortcutA.Shift2 = Shift)); + end; +var + xPrev, xNext: TIDECommand; +begin + xPrev := IDECommandList.FindIDECommand(ecPrevEditorInHistory); + if CommandUsed(xPrev) then + begin + MoveInList(True); + Key := 0; + end else + begin + xNext := IDECommandList.FindIDECommand(ecNextEditorInHistory); + if CommandUsed(xNext) then + begin + MoveInList(False); + Key := 0; + end; + end; + inherited KeyDown(Key, Shift); +end; + +procedure TBrowseEditorTabHistoryDialog.MoveInList(aForward: Boolean); +begin + if aForward then + begin + if FEditorList.ItemIndex < FEditorList.Items.Count-1 then + FEditorList.ItemIndex := FEditorList.ItemIndex + 1 + else + FEditorList.ItemIndex := 0; + end else + begin + if FEditorList.ItemIndex > 0 then + FEditorList.ItemIndex := FEditorList.ItemIndex - 1 + else + FEditorList.ItemIndex := FEditorList.Items.Count - 1; + end; +end; + +procedure TBrowseEditorTabHistoryDialog.KeyUp(var Key: Word; Shift: TShiftState + ); +begin + if Key = VK_CONTROL then + begin + Close; + if FEditorList.ItemIndex >= 0 then + FNotebook.PageIndex := TCustomPage(FEditorList.Items.Objects[FEditorList.ItemIndex]).PageIndex; + if (FNotebook.ActiveEditor<>nil) and + FNotebook.ActiveEditor.EditorControl.CanSetFocus + then + FNotebook.ActiveEditor.EditorControl.SetFocus; + Key := 0; + end; + + inherited KeyUp(Key, Shift); +end; + +procedure TBrowseEditorTabHistoryDialog.Show(aForward: Boolean); + procedure PlaceMe; + var + xWidth, xHeight: Integer; + begin + xWidth := Canvas.TextWidth('m')*20; + if FEditorList.ItemHeight>0 then//ItemHeight can be 0 the first time + xHeight := Min(10, FEditorList.Items.Count)*FEditorList.ItemHeight + else + xHeight := 200; + {$IFNDEF MSWINDOWS} + xHeight := xHeight + GetSystemMetrics(SM_CYBORDER)*2; + {$ENDIF} + + SetBounds( + (FNotebook.Left+FNotebook.BoundsRect.Right-xWidth) div 2, + (FNotebook.Top+FNotebook.BoundsRect.Bottom-xHeight) div 2, + xWidth, + xHeight); + end; + +var + I: Integer; + xPage: TCustomPage; + xIndex: TAvgLvlTree; +begin + if FNotebook.PageCount <= 1 then + Exit; + + FEditorList.Items.BeginUpdate; + xIndex := TAvgLvlTree.Create; + try + FEditorList.Items.Clear; + for I := 0 to FNotebook.FHistoryList.Count-1 do + begin + xPage := TCustomPage(FNotebook.FHistoryList[I]); + FEditorList.Items.AddObject(xPage.Caption, xPage); + xIndex.Add(xPage); + end; + + //add pages not in history to the right of the active page + for I := FNotebook.PageIndex+1 to FNotebook.PageCount-1 do + begin + xPage := FNotebook.NoteBookPage[I]; + if xIndex.Find(xPage)=nil then + FEditorList.Items.AddObject(xPage.Caption, xPage); + end; + //add pages not in history to the left of the active page + for I := 0 to FNotebook.PageIndex-1 do + begin + xPage := FNotebook.NoteBookPage[I]; + if xIndex.Find(xPage)=nil then + FEditorList.Items.AddObject(xPage.Caption, xPage); + end; + finally + xIndex.Free; + FEditorList.Items.EndUpdate; + end; + + if aForward then + FEditorList.ItemIndex := 1 + else + FEditorList.ItemIndex := FEditorList.Count-1; + + PlaceMe; + Visible := True; + PlaceMe; + BringToFront; +end; + +{ TSourceEditorHintWindowManager } + +procedure TSourceEditorHintWindowManager.ActivateHint(const ScreenPos: TPoint; + const ABaseURL, AHint: string; AAutoShown: Boolean); +begin + ActivateHint(Rect(ScreenPos.x, ScreenPos.y, ScreenPos.x, ScreenPos.y), ABaseURL, AHint, AAutoShown); +end; + +procedure TSourceEditorHintWindowManager.ActivateHint(const ScreenRect: TRect; + const ABaseURL, AHint: string; AAutoShown: Boolean); +begin + FAutoShown := AAutoShown; + BaseURL := ABaseURL; + FLastHint := AHint; + FScreenRect := ScreenRect; + if AAutoShown then + begin + FAutoHintMousePos := Mouse.CursorPos; + if not(HintIsVisible and (FLastHint = AHint)) then + ShowHint(ScreenRect.TopLeft,AHint); + end else + begin + if HintIsVisible and (FLastHint = AHint) then + HideIfVisible + else + ShowHint(ScreenRect.TopLeft,AHint); + end; + FAutoHideHintTimer.Enabled := AAutoShown; +end; + +constructor TSourceEditorHintWindowManager.Create(AManager: TSourceEditorManager + ); +begin + inherited Create; + + FManager := AManager; + // HintTimer + FAutoHintTimer := TIdleTimer.Create(nil); + with FAutoHintTimer do begin + Interval := EditorOpts.AutoDelayInMSec; + Enabled := False; + AutoEnabled := False; + OnTimer := @HintTimer; + end; + // Track mouse movements outside the IDE, if hint is visible + FAutoHideHintTimer := TTimer.Create(nil); + with FAutoHideHintTimer do begin + Interval := 500; + Enabled := False; + OnTimer := @HideHintTimer; + end; +end; + +destructor TSourceEditorHintWindowManager.Destroy; +begin + FAutoHintTimer.Free; + FAutoHideHintTimer.Free; + + inherited Destroy; +end; + +procedure TSourceEditorHintWindowManager.HideAutoHint; +begin + if FAutoHintTimer<>nil then + begin + FAutoHintTimer.AutoEnabled := false; + FAutoHintTimer.Enabled:=false; + end; + if FAutoHideHintTimer <> nil then + FAutoHideHintTimer.Enabled := False; + if AutoStartCompletionBoxTimer<>nil then + AutoStartCompletionBoxTimer.Enabled:=false; + if FAutoShown then + HideHint; +end; + +procedure TSourceEditorHintWindowManager.HideHintTimer(Sender: TObject); +begin + if HintIsVisible and FAutoShown then begin + if ComparePoints(FAutoHintMousePos, Mouse.CursorPos) <> 0 then begin + // TODO: introduce property, to indicate if hint is interactive + if HintIsComplex or not IsRectEmpty(FScreenRect) then + HideAutoHintAfterMouseMoved + else + HideAutoHint; + end; + end + else + FAutoHideHintTimer.Enabled := false; +end; + +procedure TSourceEditorHintWindowManager.HintTimer(Sender: TObject); +var + MousePos: TPoint; + AControl: TControl; +begin + FAutoHintTimer.Enabled := False; + FAutoHintTimer.AutoEnabled := False; + if not FManager.ActiveSourceWindow.IsVisible then exit; + MousePos := Mouse.CursorPos; + AControl:=FindLCLControl(MousePos); + if (AControl=nil) or (not FManager.ActiveSourceWindow.ContainsControl(AControl)) then exit; + if AControl is TSynEdit then + FManager.ActiveSourceWindow.ShowSynEditHint(MousePos); +end; + +procedure TSourceEditorHintWindowManager.HideAutoHintAfterMouseMoved; +const + MaxJitter = 3; +var + Cur: TPoint; + OkX, OkY: Boolean; + hw: THintWindow; +begin + if HintIsVisible and not FAutoShown then Exit; + FAutoHideHintTimer.Enabled := False; + if HintIsVisible then begin + Cur := Mouse.CursorPos; // Desktop coordinates + if not IsRectEmpty(FScreenRect) then + begin + if PtInRect(FScreenRect, Cur) then + Exit; + end else + begin + hw := CurHintWindow; + Cur := Mouse.CursorPos; // Desktop coordinates + OkX := ( (FAutoHintMousePos.x <= hw.Left) and + (Cur.x > FAutoHintMousePos.x) and (Cur.x <= hw.Left + hw.Width) + ) or + ( (FAutoHintMousePos.x >= hw.Left + hw.Width) and + (Cur.x < FAutoHintMousePos.x) and (Cur.x >= hw.Left) + ) or + ( (Cur.x >= hw.Left) and (Cur.x <= hw.Left + hw.Width) ); + OkY := ( (FAutoHintMousePos.y <= hw.Top) and + (Cur.y > FAutoHintMousePos.y) and (Cur.y <= hw.Top + hw.Height) + ) or + ( (FAutoHintMousePos.y >= hw.Top + hw.Height) and + (Cur.y < FAutoHintMousePos.y) and (Cur.y >= hw.Top) + ) or + ( (Cur.y >= hw.Top) and (Cur.y <= hw.Top + hw.Height) ); + + if OkX then FAutoHintMousePos.x := Cur.x; + if OkY then FAutoHintMousePos.y := Cur.y; + + OkX := OkX or + ( (FAutoHintMousePos.x <= hw.Left + MaxJitter) and + (Cur.x > FAutoHintMousePos.x - MaxJitter) and (Cur.x <= hw.Left + hw.Width + MaxJitter) + ) or + ( (FAutoHintMousePos.x >= hw.Left + hw.Width - MaxJitter) and + (Cur.x < FAutoHintMousePos.x + MaxJitter) and (Cur.x >= hw.Left - MaxJitter) + ); + OkY := OkY or + ( (FAutoHintMousePos.y <= hw.Top + MaxJitter) and + (Cur.y > FAutoHintMousePos.y - MaxJitter) and (Cur.y <= hw.Top + hw.Height + MaxJitter) + ) or + ( (FAutoHintMousePos.y >= hw.Top + hw.Height - MaxJitter) and + (Cur.y < FAutoHintMousePos.y + MaxJitter) and (Cur.y >= hw.Top - MaxJitter) + ); + + if (OkX and OkY) then begin + FAutoHideHintTimer.Enabled := True; + exit; + end; + end; + end; + HideHint; +end; + +procedure TSourceEditorHintWindowManager.UpdateHintTimer; +begin + with EditorOpts do + if (MainIDEInterface.ToolStatus=itDebugger) then + FAutoHintTimer.AutoEnabled := AutoToolTipExprEval or AutoToolTipSymbTools + else + FAutoHintTimer.AutoEnabled := AutoToolTipSymbTools; +end; + { TSourceEditCompletion } procedure TSourceEditCompletion.CompletionFormResized(Sender: TObject); begin - EnvironmentOptions.CompletionWindowWidth := TheForm.Width; - EnvironmentOptions.CompletionWindowHeight := TheForm.NbLinesInWindow; + EnvironmentOptions.Desktop.CompletionWindowWidth := TheForm.Width; + EnvironmentOptions.Desktop.CompletionWindowHeight := TheForm.NbLinesInWindow; end; procedure TSourceEditCompletion.ccExecute(Sender: TObject); @@ -1894,7 +2310,7 @@ if Editor.Owner is TSourceNoteBook then begin SourceNoteBook := Editor.Owner as TSourceNoteBook; - SourceNotebook.StartShowCodeContext(true); + SourceNotebook.StartShowCodeContext(CodeToolsOpts.IdentComplJumpToError); end; end; @@ -2246,8 +2662,8 @@ OnPositionChanged:=@OnSynCompletionPositionChanged; ShortCut:=Menus.ShortCut(VK_UNKNOWN,[]); TheForm.ShowSizeDrag := True; - TheForm.Width := Max(50, EnvironmentOptions.CompletionWindowWidth); - TheForm.NbLinesInWindow := Max(3, EnvironmentOptions.CompletionWindowHeight); + TheForm.Width := Max(50, EnvironmentOptions.Desktop.CompletionWindowWidth); + TheForm.NbLinesInWindow := Max(3, EnvironmentOptions.Desktop.CompletionWindowHeight); TheForm.OnDragResized := @CompletionFormResized; end; @@ -2624,7 +3040,7 @@ if FCodeBuffer=nil then exit; //DebugLn(['TSourceEditor.UpdateCodeBuffer ',FCodeBuffer.FileName]); IncreaseIgnoreCodeBufferLock; - SynEditor.BeginUpdate; + SynEditor.BeginUpdate(False); try FCodeBuffer.Assign(SynEditor.Lines); FEditorStampCommitedToCodetools:=(SynEditor.Lines as TSynEditLines).TextChangeStamp; @@ -2851,6 +3267,12 @@ Self.FocusEditor; end; +procedure TSourceEditor.ShowSmartHintForSourceAtCursor; +begin + if Assigned(Manager) and Assigned(Manager.OnShowHintForSource) then + Manager.OnShowHintForSource(Self,FEditor.LogicalCaretXY, False); +end; + procedure TSourceEditor.GetDialogPosition(Width, Height: integer; out Left, Top: integer); var @@ -2869,20 +3291,21 @@ if Top < ABounds.Top then Top := ABounds.Top; end; -procedure TSourceEditor.ActivateHint(ClientPos: TPoint; - const BaseURL, TheHint: string); +procedure TSourceEditor.ActivateHint(ClientRect: TRect; const ABaseURL, + AHint: string; AAutoShown: Boolean); var - ScreenPos: TPoint; + ScreenRect: TRect; begin if SourceNotebook=nil then exit; - ScreenPos:=EditorComponent.ClientToScreen(ClientPos); - Manager.ActivateHint(ScreenPos,BaseURL,TheHint); + ScreenRect.TopLeft:=EditorComponent.ClientToScreen(ClientRect.TopLeft); + ScreenRect.BottomRight:=EditorComponent.ClientToScreen(ClientRect.BottomRight); + Manager.ActivateHint(ScreenRect,ABaseURL,AHint,AAutoShown); end; {------------------------------S T A R T F I N D-----------------------------} procedure TSourceEditor.StartFindAndReplace(Replace:boolean); const - SaveOptions = [ssoWholeWord,ssoBackwards,ssoEntireScope,ssoRegExpr,ssoRegExprMultiLine]; + SaveOptions = [ssoMatchCase,ssoWholeWord,ssoRegExpr,ssoRegExprMultiLine,ssoPrompt,ssoEntireScope,ssoSelectedOnly,ssoBackwards]; var NewOptions: TSynSearchOptions; ALeft,ATop:integer; @@ -2964,7 +3387,7 @@ end; procedure TSourceEditor.AskReplace(Sender: TObject; const ASearch, - AReplace: string; Line, Column: integer; var Action: TSrcEditReplaceAction); + AReplace: string; Line, Column: integer; out Action: TSrcEditReplaceAction); var SynAction: TSynReplaceAction; begin @@ -2992,7 +3415,7 @@ end else begin DoFindAndReplace(LazFindReplaceDialog.FindText, LazFindReplaceDialog.ReplaceText, - LazFindReplaceDialog.Options - [ssoEntireScope, ssoSelectedOnly, ssoReplaceAll] + LazFindReplaceDialog.Options - [ssoEntireScope, ssoSelectedOnly] + [ssoFindContinue]); end; End; @@ -3009,7 +3432,7 @@ // TODO: maybe start with default set to backwards direction? But StartFindAndReplace replaces it with input-history StartFindAndReplace(False); end else begin - SrchOptions:=LazFindReplaceDialog.Options - [ssoEntireScope, ssoSelectedOnly, ssoReplaceAll] + SrchOptions:=LazFindReplaceDialog.Options - [ssoEntireScope, ssoSelectedOnly] + [ssoFindContinue]; if ssoBackwards in SrchOptions then SrchOptions := SrchOptions - [ssoBackwards] @@ -3171,6 +3594,11 @@ Result := nil; end; +procedure TSourceEditor.MoveToWindow(AWindowIndex: Integer); +begin + SourceNotebook.MoveEditor(PageIndex, AWindowIndex, -1) +end; + function TSourceEditor.GetSharedValues: TSourceEditorSharedValuesBase; begin Result := FSharedValues; @@ -3197,6 +3625,37 @@ FEditor.CaretXY := FTempCaret; end; +procedure TSourceEditor.DoMultiCaretBeforeCommand(Sender: TObject; + ACommand: TSynEditorCommand; var AnAction: TSynMultiCaretCommandAction; + var AFlags: TSynMultiCaretCommandFlags); +begin + if (FSourceNoteBook<>nil) and (snIncrementalFind in FSourceNoteBook.States) then begin + AnAction := ccaClearCarets; + end; + + case ACommand of + ecToggleComment: + if FEditor.SelAvail then + AnAction := ccaAdjustCarets + else + AnAction := ccaRepeatCommandPerLine; // one per line + ecInsertUserName, + ecInsertDateTime, + ecInsertChangeLogEntry, + ecInsertCVSAuthor, + ecInsertCVSDate, + ecInsertCVSHeader, + ecInsertCVSID, + ecInsertCVSLog, + ecInsertCVSName, + ecInsertCVSRevision, + ecInsertCVSSource, + ecInsertGUID, + ecInsertFilename: + AnAction := ccaRepeatCommand; + end; +end; + procedure TSourceEditor.ProcessCommand(Sender: TObject; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); // these are normal commands for synedit (lower than ecUserFirst), @@ -3218,6 +3677,7 @@ if (SrcEditHintWindow<>nil) then SrcEditHintWindow.Hide; end; + Manager.HideHint; if (FSourceNoteBook<>nil) and (snIncrementalFind in FSourceNoteBook.States) then begin @@ -3269,7 +3729,7 @@ ecSelEditorTop, ecSelEditorBottom, ecEditorTop, ecEditorBottom: begin - if FaOwner<>nil then + if (FaOwner<>nil) and (not FEditor.IsInMultiCaretRepeatExecution) then Manager.AddJumpPointClicked(Self); end; @@ -3369,14 +3829,17 @@ ecContextHelp: FindHelpForSourceAtCursor; + ecSmartHint: + ShowSmartHintForSourceAtCursor; + ecIdentCompletion : - StartIdentCompletionBox(true); + StartIdentCompletionBox(CodeToolsOpts.IdentComplJumpToError); ecShowCodeContext : - SourceNotebook.StartShowCodeContext(true); + SourceNotebook.StartShowCodeContext(CodeToolsOpts.IdentComplJumpToError); ecWordCompletion : - StartWordCompletionBox(true); + StartWordCompletionBox; ecFind: StartFindAndReplace(false); @@ -3542,7 +4005,7 @@ ecClearBookmarkForFile: begin if Assigned(Manager) and Assigned(Manager.OnClearBookmarkId) then for i := 0 to 9 do - if EditorComponent.GetBookMark(i,x,y) then + if EditorComponent.GetBookMark(i,x{%H-},y{%H-}) then Manager.OnClearBookmarkId(Self, i); end; @@ -3593,6 +4056,8 @@ If Assigned(OnEditorChange) then OnEditorChange(Sender); UpdatePageName; + if Changes * [scCaretX, scCaretY, scSelection] <> [] then + IDECommandList.PostponeUpdateEvents; end; function TSourceEditor.SelectionAvailable: boolean; @@ -3618,7 +4083,7 @@ if ReadOnly then exit; if not EditorComponent.SelAvail then exit; FEditor.SetTextBetweenPoints(FEditor.BlockBegin, FEditor.BlockEnd, - UpperCase(EditorComponent.SelText), + UTF8UpperCase(EditorComponent.SelText), [setSelect], scamIgnore, smaKeep, smCurrent ); end; @@ -3633,7 +4098,7 @@ if ReadOnly then exit; if not EditorComponent.SelAvail then exit; FEditor.SetTextBetweenPoints(FEditor.BlockBegin, FEditor.BlockEnd, - LowerCase(EditorComponent.SelText), + UTF8LowerCase(EditorComponent.SelText), [setSelect], scamIgnore, smaKeep, smCurrent ); end; @@ -3643,7 +4108,7 @@ if ReadOnly then exit; if not EditorComponent.SelAvail then exit; FEditor.SetTextBetweenPoints(FEditor.BlockBegin, FEditor.BlockEnd, - SwapCase(EditorComponent.SelText), + UTF8SwapCase(EditorComponent.SelText), [setSelect], scamIgnore, smaKeep, smCurrent ); end; @@ -3834,7 +4299,7 @@ if i>=0 then IsPascal := EditorOpts.HighlighterList[i].DefaultCommentType <> comtCPP; // will show modal dialog - must not be in Editor.BeginUpdate block, or painting will not work - FEditor.SelText:=AddConditional(EditorComponent.SelText,IsPascal); + FEditor.SelText:=EncloseInsideIFDEF(EditorComponent.SelText,IsPascal); finally FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.ConditionalSelection'){$ENDIF}; end; @@ -4110,7 +4575,7 @@ end; procedure TSourceEditor.OnGutterClick(Sender: TObject; X, Y, Line: integer; - mark: TSynEditMark); + Mark: TSynEditMark); var Marks: PSourceMark; i, MarkCount: Integer; @@ -4120,7 +4585,7 @@ Mrk: TSourceMark; begin // create or delete breakpoint - // find breakpoint mark at line + // find breakpoint Mark at line Marks := nil; Ctrl := SYNEDIT_LINK_MODIFIER in GetKeyShiftState; try @@ -4370,6 +4835,9 @@ s: String; begin Result:=false; + if (not EditorOpts.AutoBlockCompletion) + or (not (SyntaxHighlighterType in [lshFreePascal,lshDelphi])) then + exit; FEditor.GetWordBoundsAtRowCol(aTextPos, x1, x2); // use the token left of the caret x2 := Min(x2, aTextPos.x); @@ -4526,11 +4994,13 @@ OnClickLink := Manager.OnClickLink; OnMouseLink := Manager.OnMouseLink; OnKeyDown := @EditorKeyDown; + OnKeyUp := @EditorKeyUp; OnPaste:=@EditorPaste; OnEnter:=@EditorEnter; OnPlaceBookmark := @EditorPlaceBookmark; OnClearBookmark := @EditorClearBookmark; OnChangeUpdating := @EditorChangeUpdating; + OnMultiCaretBeforeCommand := @DoMultiCaretBeforeCommand; RegisterMouseActionExecHandler(@EditorHandleMouseAction); // IMPORTANT: when you change above, don't forget updating UnbindEditor Parent := AParent; @@ -4596,13 +5066,14 @@ if UseWordCompletion then Completion.CurrentCompletionType:=ctWordCompletion; + Completion.AutoUseSingleIdent := CodeToolsOpts.IdentComplAutoUseSingleIdent; Completion.Execute(TextS2, CompletionRect); {$IFDEF VerboseIDECompletionBox} debugln(['TSourceEditor.StartIdentCompletionBox END Completion.TheForm.Visible=',Completion.TheForm.Visible]); {$ENDIF} end; -procedure TSourceEditor.StartWordCompletionBox(JumpToError: boolean); +procedure TSourceEditor.StartWordCompletionBox; var TextS: String; LogCaret: TPoint; @@ -4680,7 +5151,7 @@ procedure TSourceEditor.UpdatePageName; var p: Integer; - NewPageName: String; + NewPageCaption: String; begin if SourceNotebook.FUpdateLock > 0 then begin include(SourceNotebook.FUpdateFlags, ufPageNames); @@ -4689,14 +5160,15 @@ p:=SourceNotebook.FindPageWithEditor(Self); if EditorOpts.ShowTabNumbers and (p < 10) then // Number pages 1, ..., 9, 0 -- according to Alt+N hotkeys. - NewPageName:=Format('%s:%d', [FPageName, (p+1) mod 10]) + NewPageCaption:=Format('%s:%d', [FPageName, (p+1) mod 10]) else - NewPageName:=FPageName; - if IsLocked then NewPageName:='#'+NewPageName; - if Modified then NewPageName:='*'+NewPageName; - if SourceNotebook.NoteBookPages[p] <> NewPageName then begin - SourceNotebook.NoteBookPages[p] := NewPageName; + NewPageCaption:=FPageName; + if IsLocked then NewPageCaption:='#'+NewPageCaption; + if Modified then NewPageCaption:='*'+NewPageCaption; + if SourceNotebook.NoteBookPages[p] <> NewPageCaption then begin + SourceNotebook.NoteBookPages[p] := NewPageCaption; SourceNotebook.UpdateTabsAndPageTitle; + SourceNotebook.CallOnEditorPageCaptionUpdate(Self); end; end; @@ -4775,7 +5247,6 @@ GetEncloseSelectionParams(EncloseType,EncloseTemplate); EncloseTextSelection(EncloseTemplate,FEditor.Lines, FEditor.BlockBegin,FEditor.BlockEnd, - FEditor.BlockIndent, NewSelection,NewCaretXY); //debugln(['TSourceEditor.EncloseSelection A NewCaretXY=',NewCaretXY.X,',',NewCaretXY.Y,' "',NewSelection,'"']); FEditor.SelText:=NewSelection; @@ -5076,6 +5547,18 @@ CheckActiveWindow; if Assigned(OnKeyDown) then OnKeyDown(Sender, Key, Shift); + + IDECommandList.PostponeUpdateEvents; +end; + +procedure TSourceEditor.EditorKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + CheckActiveWindow; + if Assigned(OnKeyUp) then + OnKeyUp(Sender, Key, Shift); + + IDECommandList.PostponeUpdateEvents; end; {------------------------------------------------------------------------------- @@ -5324,8 +5807,7 @@ for o:=Low(TSrcEditSearchOption) to High(TSrcEditSearchOption) do if o in SearchOptions then Include(NewOptions,SrcEdit2SynEditSearchOption[o]); - Result:=DoFindAndReplace(LazFindReplaceDialog.FindText, LazFindReplaceDialog.ReplaceText, - NewOptions); + Result:=DoFindAndReplace(ASearch, AReplace, NewOptions); end; function TSourceEditor.GetSourceText: string; @@ -5346,6 +5828,16 @@ FSourceNoteBook.ActiveEditor := Self; end; +procedure TSourceEditor.ActivateHint(const ClientPos: TPoint; const ABaseURL, + AHint: string; AAutoShown: Boolean); +var + ScreenPos: TPoint; +begin + if SourceNotebook=nil then exit; + ScreenPos:=EditorComponent.ClientToScreen(ClientPos); + Manager.ActivateHint(ScreenPos,ABaseURL,AHint,AAutoShown); +end; + function TSourceEditor.PageIndex: integer; begin if FSourceNoteBook<>nil then @@ -5444,6 +5936,11 @@ DebugBoss.LineInfo.RemoveNotification(FLineInfoNotification); end; +procedure TSourceEditor.CopyToWindow(AWindowIndex: Integer); +begin + SourceNotebook.CopyEditor(PageIndex, AWindowIndex, -1) +end; + procedure TSourceEditor.LineInfoNotificationChange(const ASender: TObject; const ASource: String); begin if ASource = FileName then begin @@ -5594,6 +6091,22 @@ Result := GetWordFromCaret(ACaretPos); end; +function TSourceEditor.GetPageCaption: string; +var + I: Integer; +begin + I := SourceNotebook.FindPageWithEditor(Self); + if I >= 0 then + Result := SourceNotebook.NoteBookPages[I] + else + Result := FPageName; +end; + +function TSourceEditor.GetPageName: string; +begin + Result := FPageName; +end; + function TSourceEditor.GetOperandAtCurrentCaret: String; var CaretPos: TPoint; @@ -5639,6 +6152,7 @@ OnClickLink := nil; OnMouseLink := nil; OnKeyDown := nil; + OnKeyUp := nil; OnEnter := nil; OnPlaceBookmark := nil; OnClearBookmark := nil; @@ -5706,6 +6220,9 @@ FHistoryList := TFPList.Create; FSrcEditsSortedForFilenames := TAvgLvlTree.Create(@CompareSrcEditIntfWithFilename); + FHistoryDlg := TBrowseEditorTabHistoryDialog.CreateNew(Self); + FOnEditorPageCaptionUpdate := TMethodList.Create; + OnDropFiles := @SourceNotebookDropFiles; AllowDropFiles:=true; @@ -5743,6 +6260,7 @@ Editors[i].Free; FreeAndNil(FSourceEditorList); FreeAndNil(FHistoryList); + FreeAndNil(FOnEditorPageCaptionUpdate); FreeAndNil(FSrcEditsSortedForFilenames); Application.RemoveOnDeactivateHandler(@OnApplicationDeactivate); @@ -5787,13 +6305,19 @@ Options:=Options+[nboShowCloseButtons] else Options:=Options-[nboShowCloseButtons]; - TabPosition := EditorOpts.TabPosition; + MultiLine := EditorOpts.MultiLineTab; + if Manager<>nil then + ShowTabs := Manager.ShowTabs + else + ShowTabs := True; + if ShowTabs then + TabPosition := EditorOpts.TabPosition; OnChange := @NotebookPageChanged; OnCloseTabClicked := @CloseTabClicked; OnMouseDown:=@NotebookMouseDown; TabDragMode := dmAutomatic; - OnTabDragOverEx := @NotebookCanDragTabMove; - OnTabDragDropEx := @NotebookDragTabMove; + OnTabDragOverEx := @NotebookDragOverEx; + OnTabDragDropEx := @NotebookDragDropEx; OnTabDragOver := @NotebookDragOver; OnTabEndDrag := @NotebookEndDrag; ShowHint:=true; @@ -5990,7 +6514,6 @@ end; var - NBAvail: Boolean; PageCtrl: TPageControl; PopM: TPopupMenu; PageI: integer; @@ -6014,35 +6537,18 @@ else DebugLn(['TSourceNotebook.TabPopUpMenuPopup: Popup PageIndex=', PageI]); end; - ASrcEdit:=Editors[PageIndex]; + ASrcEdit:=ActiveEditor as TSourceEditor; {$IFnDEF SingleSrcWindow} - SrcEditMenuEditorLock.Checked := ASrcEdit.IsLocked; // Editor locks // Multi win - NBAvail := ToWindow(SrcEditMenuMoveToOtherWindowList, 'MoveToWindow', + ToWindow(SrcEditMenuMoveToOtherWindowList, 'MoveToWindow', @SrcEditMenuMoveToExistingWindowClicked); - SrcEditMenuMoveToNewWindow.Visible := not NBAvail; - SrcEditMenuMoveToNewWindow.Enabled := PageCount > 1; - SrcEditMenuMoveToOtherWindow.Visible := NBAvail; - SrcEditMenuMoveToOtherWindowNew.Enabled := PageCount > 1; - - NBAvail := ToWindow(SrcEditMenuCopyToOtherWindowList, 'CopyToWindow', + ToWindow(SrcEditMenuCopyToOtherWindowList, 'CopyToWindow', @SrcEditMenuCopyToExistingWindowClicked); - SrcEditMenuCopyToNewWindow.Visible := not NBAvail; - SrcEditMenuCopyToOtherWindow.Visible := NBAvail; - - NBAvail := ToWindow(SrcEditMenuFindInOtherWindowList, 'FindInWindow', + ToWindow(SrcEditMenuFindInOtherWindowList, 'FindInWindow', @SrcEditMenuFindInWindowClicked, True); - SrcEditMenuFindInOtherWindow.Enabled := NBAvail; {$ENDIF} - // editor layout - SrcEditMenuMoveEditorLeft.MenuItem.Enabled:= (PageCount>1); - SrcEditMenuMoveEditorRight.MenuItem.Enabled:= (PageCount>1); - SrcEditMenuMoveEditorFirst.MenuItem.Enabled:= (PageCount>1) and (PageIndex>0); - SrcEditMenuMoveEditorLast.MenuItem.Enabled:= (PageCount>1) and (PageIndex<(PageCount-1)); - - SrcEditMenuSectionEditors.Clear; if Manager <> nil then begin EdList := TStringList.Create; @@ -6147,25 +6653,16 @@ end; var - se: TSourceEditor; - BookMarkID, BookMarkX, BookMarkY: integer; - MarkDesc, FPDocSrc, ShortFileName: String; - MarkMenuItem: TIDEMenuItem; + FPDocSrc, ShortFileName: String; EditorComp: TSynEdit; MainCodeBuf: TCodeBuffer; AnOwner: TObject; Marks: PSourceMark; i, MarkCount: integer; EditorPopupPoint, EditorCaret: TPoint; - SelAvail, SelAvailAndWritable, AtIdentifier: Boolean; - CurWordAtCursor: String; - CodeTool: TCodeTool; - CaretXY: TCodeXYPosition; - CleanPos: integer; - CodeNode: TCodeTreeNode; - ProcNode: TCodeTreeNode; - ProcName: String; begin + IDECommandList.ExecuteUpdateEvents; + SourceEditorMenuRoot.MenuItem:=SrcPopupMenu.Items; SourceEditorMenuRoot.BeginUpdate; try @@ -6174,52 +6671,26 @@ ASrcEdit:=FindSourceEditorWithEditorComponent(TPopupMenu(Sender).PopupComponent); Assert(Assigned(ASrcEdit), 'TSourceNotebook.SrcPopUpMenuPopup: ASrcEdit=nil'); + Assert((ASrcEdit=GetActiveSE), 'TSourceNotebook.SrcPopUpMenuPopup: ASrcEdit<>GetActiveSE'); EditorComp:=ASrcEdit.EditorComponent; - // Clipboard section: - SrcEditMenuCut.Enabled := ASrcEdit.SelectionAvailable and not ASrcEdit.ReadOnly; - SrcEditMenuCopy.Enabled := ASrcEdit.SelectionAvailable; - SrcEditMenuPaste.Enabled := not ASrcEdit.ReadOnly; - SrcEditMenuSelectAll.Enabled:= ASrcEdit.SourceText<>''; - - // Files section: Readonly, ShowLineNumbers SrcEditMenuReadOnly.Checked:=ASrcEdit.ReadOnly; SrcEditMenuShowLineNumbers.Checked := ASrcEdit.EditorComponent.Gutter.LineNumberPart.Visible; SrcEditMenuDisableI18NForLFM.Visible:=false; - UpdateHighlightMenuItems; - UpdateEncodingMenuItems; - UpdateLineEndingMenuItems; + UpdateHighlightMenuItems(ASrcEdit); + UpdateEncodingMenuItems(ASrcEdit); + UpdateLineEndingMenuItems(ASrcEdit); - // add context specific menu items + // ask Codetools CurFilename:=ASrcEdit.FileName; ShortFileName:=ExtractFileName(CurFilename); - SelAvail:=ASrcEdit.EditorComponent.SelAvail; - SelAvailAndWritable:=SelAvail and (not ASrcEdit.ReadOnly); - CurWordAtCursor:=ASrcEdit.GetWordAtCurrentCaret; - AtIdentifier:=IsValidIdent(CurWordAtCursor); - - // ask Codetools MainCodeBuf:=nil; if FilenameIsPascalUnit(ShortFileName) or (CompareFileExt(ShortFileName,'.inc',true)=0) then MainCodeBuf:=CodeToolBoss.GetMainCode(ASrcEdit.CodeBuffer) else if FilenameIsPascalSource(ShortFileName) then MainCodeBuf:=ASrcEdit.CodeBuffer; - CodeTool:=nil; - CaretXY:=CleanCodeXYPosition; - CaretXY.Code:=ASrcEdit.CodeBuffer; - CaretXY.X:=ASrcEdit.CursorTextXY.X; - CaretXY.Y:=ASrcEdit.CursorTextXY.Y; - CodeNode:=nil; - if MainCodeBuf<>nil then begin - CodeToolBoss.Explore(MainCodeBuf,CodeTool,true); - if CodeTool<>nil then begin - CodeTool.CaretToCleanPos(CaretXY,CleanPos); - CodeNode:=CodeTool.FindDeepestNodeAtPos(CleanPos,false); - end; - end; - if (FilenameIsAbsolute(CurFilename)) then begin if (MainCodeBuf<>nil) and (MainCodeBuf<>ASrcEdit.CodeBuffer) @@ -6258,65 +6729,8 @@ true,@OnPopupMenuOpenFile); end; - // bookmarks - for BookMarkID:=0 to 9 do begin - MarkDesc:=' '+IntToStr(BookMarkID); - SelAvail:=False; - i := 0; - while i < Manager.SourceEditorCount do begin - se:=Manager.SourceEditors[i]; - if se.EditorComponent.GetBookMark(BookMarkID,BookMarkX,BookMarkY) then - begin - MarkDesc:=MarkDesc+': '+se.PageName+' ('+IntToStr(BookMarkY)+','+IntToStr(BookMarkX)+')'; - SelAvail:=True; - break; - end; - inc(i); - end; - // goto book mark item - MarkMenuItem:=SrcEditSubMenuGotoBookmarks[BookMarkID]; - MarkMenuItem.Caption:=uemBookmarkN+MarkDesc; - MarkMenuItem.Enabled:=SelAvail; - // set book mark item - MarkMenuItem:=SrcEditSubMenuToggleBookmarks[BookMarkID]; - MarkMenuItem.Caption:=uemToggleBookmark+MarkDesc; - end; - EditorPopupPoint:=EditorComp.ScreenToClient(SrcPopUpMenu.PopupPoint); - if EditorPopupPoint.X>EditorComp.Gutter.Width then begin - // user clicked on text - // enable search menu items - SrcEditMenuFindDeclaration.Enabled:=CurWordAtCursor<>''; - if CurWordAtCursor<>'' then - SrcEditMenuFindDeclaration.Caption:=Format(lisFindDeclarationOf, [ - CurWordAtCursor]) - else - SrcEditMenuFindDeclaration.Caption:=uemFindDeclaration; - SrcEditMenuFindIdentifierReferences.Enabled:=AtIdentifier; - SrcEditMenuFindUsedUnitReferences.Enabled:=AtIdentifier; - SrcEditMenuFindOverloads.Enabled:=AtIdentifier; - ProcName:=''; - if CodeNode<>nil then begin - ProcNode:=CodeNode.GetNodeOfType(ctnProcedure); - if ProcNode<>nil then - ProcName:=CodeTool.ExtractProcName(ProcNode,[]); - end; - SrcEditMenuProcedureJump.Enabled:=(ProcName<>''); - if ProcName<>'' then - SrcEditMenuProcedureJump.Caption:=Format(lisJumpToProcedure, [ProcName]) - else - SrcEditMenuProcedureJump.Caption:=uemProcedureJump; - // enable refactoring menu items - SrcEditMenuEncloseSelection.Enabled := SelAvailAndWritable; - SrcEditMenuEncloseInIFDEF.Enabled := SelAvailAndWritable; - SrcEditMenuExtractProc.Enabled := SelAvailAndWritable; - SrcEditMenuInvertAssignment.Enabled := SelAvailAndWritable; - SrcEditMenuRenameIdentifier.Enabled:=AtIdentifier and (not ASrcEdit.ReadOnly); - SrcEditMenuShowAbstractMethods.Enabled:=not ASrcEdit.ReadOnly; - SrcEditMenuShowEmptyMethods.Enabled:=not ASrcEdit.ReadOnly; - SrcEditMenuMakeResourceString.Enabled:=not ASrcEdit.ReadOnly; - end else - begin + if EditorPopupPoint.X<=EditorComp.Gutter.Width then begin EditorCaret := EditorComp.PhysicalToLogicalPos(EditorComp.PixelsToRowColumn(EditorPopupPoint)); // user clicked on gutter SourceEditorMarks.GetMarksForLine(ASrcEdit, EditorCaret.y, Marks, MarkCount); @@ -6402,6 +6816,11 @@ {$ENDIF} end; +procedure TSourceNotebook.CallOnEditorPageCaptionUpdate(Sender: TObject); +begin + FOnEditorPageCaptionUpdate.CallNotifyEvents(Sender); +end; + function TSourceNotebook.GetNoteBookPage(Index: Integer): TTabSheet; begin if FNotebook.Visible then @@ -6437,6 +6856,11 @@ Result := -1 end; +function TSourceNotebook.GetWindowID: Integer; +begin + Result := FWindowID; +end; + procedure TSourceNotebook.SetPageIndex(AValue: Integer); begin if (fPageIndex = AValue) and (FNotebook.PageIndex = AValue) then begin @@ -6454,17 +6878,15 @@ DebugLnExit(SRCED_PAGES, ['<< TSourceNotebook.SetPageIndex ']); end; -procedure TSourceNotebook.UpdateHighlightMenuItems; +procedure TSourceNotebook.UpdateHighlightMenuItems(SrcEdit: TSourceEditor); var h: TLazSyntaxHighlighter; i: Integer; CurName: String; CurCaption: String; IDEMenuItem: TIDEMenuItem; - SrcEdit: TSourceEditor; begin - SrcEditSubMenuHighlighter.ChildsAsSubMenu:=true; - SrcEdit:=GetActiveSE; + SrcEditSubMenuHighlighter.ChildrenAsSubMenu:=true; i:=0; for h:=Low(TLazSyntaxHighlighter) to High(TLazSyntaxHighlighter) do begin CurName:='Highlighter'+IntToStr(i); @@ -6485,10 +6907,9 @@ end; end; -procedure TSourceNotebook.UpdateLineEndingMenuItems; +procedure TSourceNotebook.UpdateLineEndingMenuItems(SrcEdit: TSourceEditor); var le: TLineEnding; - SrcEdit: TSourceEditor; FileEndings: String; IDEMenuItem: TIDEMenuCommand; const @@ -6498,8 +6919,7 @@ 'CRLF (Win, DOS)' ); begin - SrcEditSubMenuLineEnding.ChildsAsSubMenu:=true; - SrcEdit:=GetActiveSE; + SrcEditSubMenuLineEnding.ChildrenAsSubMenu:=true; if (SrcEdit<>nil) and (SrcEdit.CodeBuffer<>nil) then FileEndings:=SrcEdit.CodeBuffer.DiskLineEnding else @@ -6547,11 +6967,10 @@ Editors[i].UpdateProjectFile; end; -procedure TSourceNotebook.UpdateEncodingMenuItems; +procedure TSourceNotebook.UpdateEncodingMenuItems(SrcEdit: TSourceEditor); var List: TStringList; i: Integer; - SrcEdit: TSourceEditor; Encoding: String; CurEncoding: string; CurName: String; @@ -6559,8 +6978,7 @@ IDEMenuItem: TIDEMenuItem; SysEncoding: String; begin - SrcEditSubMenuEncoding.ChildsAsSubMenu:=true; - SrcEdit:=GetActiveSE; + SrcEditSubMenuEncoding.ChildrenAsSubMenu:=true; Encoding:=''; if SrcEdit<>nil then begin if SrcEdit.CodeBuffer<>nil then @@ -6621,6 +7039,12 @@ {$ENDIF} end; +procedure TSourceNotebook.RemoveUpdateEditorPageCaptionHandler( + AEvent: TNotifyEvent); +begin + FOnEditorPageCaptionUpdate.Remove(TMethod(AEvent)); +end; + function TSourceNotebook.AddContextPopupMenuItem(const NewCaption: string; const NewEnabled: boolean; const NewOnClick: TNotifyEvent): TIDEMenuItem; begin @@ -6629,6 +7053,12 @@ Result.Enabled:=NewEnabled; end; +procedure TSourceNotebook.AddUpdateEditorPageCaptionHandler( + AEvent: TNotifyEvent; const AsLast: Boolean); +begin + FOnEditorPageCaptionUpdate.Add(TMethod(AEvent), AsLast); +end; + {------------------------------------------------------------------------------- Procedure TSourceNotebook.EditorChanged Params: Sender: TObject @@ -6662,7 +7092,7 @@ Layout:=IDEWindowCreators.SimpleLayoutStorage.ItemByForm(Self); if Layout<>nil then Layout.Form:=nil; - Name := Name + '___' + IntToStr(PtrUInt(Pointer(Self))); + Name := Name + '___' + IntToStr({%H-}PtrUInt(Pointer(Self))); CloseAction := caFree; end else begin @@ -6684,14 +7114,24 @@ // statusbar was not updated when visible=false, update now if snUpdateStatusBarNeeded in States then UpdateStatusBar; + if Assigned(Manager) and (Parent <> nil) then + Manager.DoWindowShow(Self); end; -function TSourceNotebook.IndexOfEditorInShareWith(AnOtherEditor: TSourceEditor): Integer; +procedure TSourceNotebook.DoHide; +begin + inherited DoHide; + if Assigned(Manager) and (Parent <> nil) then + Manager.DoWindowHide(Self); +end; + +function TSourceNotebook.IndexOfEditorInShareWith( + AnOtherEditor: TSourceEditorInterface): Integer; var i: Integer; begin for i := 0 to EditorCount - 1 do - if Editors[i].IsSharedWith(AnOtherEditor) then + if Editors[i].IsSharedWith(AnOtherEditor as TSourceEditor) then exit(i); Result := -1; end; @@ -6749,6 +7189,7 @@ AnEditor.OnMouseDown := @EditorMouseDown; AnEditor.OnMouseWheel := @EditorMouseWheel; AnEditor.OnKeyDown := @EditorKeyDown; + AnEditor.OnKeyUp := @EditorKeyUp; AnEditor.EditorComponent.Beautifier.OnGetDesiredIndent := @EditorGetIndent; AnEditor.EditorComponent.EndUpdate; @@ -6768,10 +7209,35 @@ var I: integer; TempEditor: TControl; + + function FindSynEdit(AControl: TWinControl): TControl; + var + I: Integer; + begin + Result := nil; + + with AControl do + for I := 0 to ControlCount - 1 do + begin + if Controls[I] is TIDESynEditor then + Exit(Controls[I]) + else + if Controls[I] is TWinControl then + begin + Result := FindSynEdit(TWinControl(Controls[I])); + if Result <> nil then + Exit; + end; + end; + end; + begin Result := nil; if (FSourceEditorList=nil) or (APageIndex < 0) or (APageIndex >= PageCount) then exit; + + TempEditor := FindSynEdit(NotebookPage[APageIndex]); + { TempEditor:=nil; with NotebookPage[APageIndex] do for I := 0 to ControlCount-1 do @@ -6780,6 +7246,7 @@ TempEditor := Controls[I]; Break; end; + } if TempEditor=nil then exit; I := FSourceEditorList.Count-1; while (I>=0) and (TSourceEditor(FSourceEditorList[I]).EditorComponent <> TempEditor) do @@ -6819,9 +7286,12 @@ begin // Todo: Move to manager, include window changes SrcEdit:=GetActiveSE; - if SrcEdit = nil then Exit; - if FLastCodeBuffer=SrcEdit.CodeBuffer then exit; - FLastCodeBuffer:=SrcEdit.CodeBuffer; + if SrcEdit <> nil then + begin + if FLastCodeBuffer=SrcEdit.CodeBuffer then exit; + FLastCodeBuffer:=SrcEdit.CodeBuffer; + end else if FLastCodeBuffer=nil then + exit; if assigned(Manager) and Assigned(Manager.OnCurrentCodeBufferChanged) then Manager.OnCurrentCodeBufferChanged(Self); end; @@ -6836,6 +7306,7 @@ if FUpdateLock = 0 then begin FUpdateFlags := []; DebugLn(SRCED_LOCK, ['TSourceNotebook.IncUpdateLockInternal']); + FPageIndex := PageIndex; end; inc(FUpdateLock); end; @@ -6907,8 +7378,10 @@ FPageIndex := APageIndex + 1 else FPageIndex := APageIndex - 1; - FNoteBook.PageIndex := FPageIndex; - Include(FUpdateFlags,ufPageIndexChanged); + if FUpdateLock = 0 then + ApplyPageIndex + else + Include(FUpdateFlags,ufPageIndexChanged); end; NotebookPages.Delete(APageIndex); end else begin @@ -6931,7 +7404,7 @@ FNotebook.ShowTabs := False; end else begin Caption := FBaseCaption; - FNotebook.ShowTabs := True; + FNotebook.ShowTabs := (Manager=nil) or Manager.ShowTabs; end; end; @@ -6954,7 +7427,7 @@ if State = dsDragLeave then FUpdateTabAndPageTimer.Enabled := True else if Source is TExtendedNotebook then - FNotebook.ShowTabs := True; + FNotebook.ShowTabs := (Manager=nil) or Manager.ShowTabs; end; procedure TSourceNotebook.DragCanceled; @@ -7198,9 +7671,11 @@ then exit; - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TSourceNotebook.MoveEditor'){$ENDIF}; + IncUpdateLock; try - DestWin.DisableAutoSizing; + DestWin.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TSourceNotebook.MoveEdito DestWinr'){$ENDIF}; + DestWin.IncUpdateLock; try Edit := FindSourceEditorWithPageIndex(OldPageIndex); DestWin.NoteBookInsertPage(NewPageIndex, Edit.PageName); @@ -7220,14 +7695,19 @@ DestWin.UpdateStatusBar; DestWin.NotebookPageChanged(nil); // make sure page SynEdit willl be visible finally - DestWin.EnableAutoSizing; + DestWin.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TSourceNotebook.MoveEdito DestWinr'){$ENDIF}; + DestWin.DecUpdateLock; end; finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TSourceNotebook.MoveEditor'){$ENDIF}; + DecUpdateLock end; if (PageCount = 0) and (Parent=nil) and not FIsClosing then Close; + + DoActiveEditorChanged; + Manager.ActiveEditor := Edit; end; procedure TSourceNotebook.CopyEditor(OldPageIndex, NewWindowIndex, @@ -7528,7 +8008,8 @@ // Move focus from Notebook-tabs to editor TempEditor:=FindSourceEditorWithPageIndex(PageIndex); if IsVisible and (TempEditor <> nil) and (FUpdateLock = 0) then - TempEditor.EditorComponent.SetFocus; + // this line raises exception when editor is in other tab (for example - focused is designer) + ;// TempEditor.EditorComponent.SetFocus; finally debugln(SRCED_CLOSE, ['TSourceNotebook.CloseFile UnLock']); DebugBoss.UnLockCommandProcessing; @@ -7842,12 +8323,26 @@ function TSourceNotebook.FindPageWithEditor( ASourceEditor: TSourceEditor):integer; +var + LParent: TWinControl; + LTabSheet: TWinControl; begin - if (ASourceEditor.EditorComponent.Parent is TTabSheet) and - (TTabSheet(ASourceEditor.EditorComponent.Parent).Parent = FNotebook) - then - Result:=TTabSheet(ASourceEditor.EditorComponent.Parent).PageIndex - else + if (ASourceEditor.EditorComponent.Parent is TTabSheet) then + begin + LParent := ASourceEditor.EditorComponent.Parent.Parent; + LTabSheet := ASourceEditor.EditorComponent.Parent; + while (LParent <> FNotebook) and (LParent <> nil) do + begin + LTabSheet := LParent; + LParent := LParent.Parent; + end; + + if (LParent <> nil) and (LTabSheet is TTabSheet) then + Result:=TTabSheet(LTabSheet).PageIndex + else + Result:=-1; + end + else Result:=-1; end; @@ -7867,7 +8362,8 @@ var TabIndex: Integer; begin - if (Button = mbMiddle) then begin + if (Button = mbMiddle) then + begin TabIndex:=FNotebook.TabIndexAtClientPos(Point(X,Y)); if TabIndex>=0 then CloseClicked(NoteBookPage[TabIndex], @@ -7875,7 +8371,7 @@ end; end; -procedure TSourceNotebook.NotebookDragTabMove(Sender, Source: TObject; OldIndex, +procedure TSourceNotebook.NotebookDragDropEx(Sender, Source: TObject; OldIndex, NewIndex: Integer; CopyDrag: Boolean; var Done: Boolean); function SourceIndex: Integer; begin @@ -7907,7 +8403,7 @@ Done := True; end; -procedure TSourceNotebook.NotebookCanDragTabMove(Sender, Source: TObject; +procedure TSourceNotebook.NotebookDragOverEx(Sender, Source: TObject; OldIndex, NewIndex: Integer; CopyDrag: Boolean; var Accept: Boolean); function SourceIndex: Integer; @@ -7938,11 +8434,12 @@ procedure TSourceNotebook.NotebookDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin + if Accept=true then ; // set by NotebookDragOverEx FUpdateTabAndPageTimer.Enabled := False; if State = dsDragLeave then FUpdateTabAndPageTimer.Enabled := True else if Source is TExtendedNotebook then - FNotebook.ShowTabs := True; + FNotebook.ShowTabs := (Manager=nil) or Manager.ShowTabs; end; procedure TSourceNotebook.NotebookEndDrag(Sender, Target: TObject; X, Y: Integer); @@ -8050,6 +8547,12 @@ ecPrevEditor : PrevEditor; + ecPrevEditorInHistory : + FHistoryDlg.Show(True); + + ecNextEditorInHistory: + FHistoryDlg.Show(False); + ecMoveEditorLeft: MoveActivePageLeft; @@ -8152,7 +8655,11 @@ FNoteBook.Options:=FNoteBook.Options+[nboShowCloseButtons] else FNoteBook.Options:=FNoteBook.Options-[nboShowCloseButtons]; - FNotebook.TabPosition := EditorOpts.TabPosition; + FNoteBook.MultiLine := EditorOpts.MultiLineTab; + if FNotebook.ShowTabs then + FNotebook.TabPosition := EditorOpts.TabPosition + else + FNotebook.TabPosition := tpTop; Exclude(States,snWarnedFont); CheckFont; @@ -8204,9 +8711,9 @@ procedure TSourceNotebook.EditorMouseMove(Sender: TObject; Shift: TShiftstate; X, Y: Integer); begin - Manager.MaybeHideHint; + Manager.FHints.HideAutoHintAfterMouseMoved; if Visible then - Manager.UpdateHintTimer; + Manager.FHints.UpdateHintTimer; end; procedure TSourceNotebook.EditorMouseWheel(Sender: TObject; Shift: TShiftState; @@ -8234,7 +8741,7 @@ CodeBuf: TCodeBuffer; begin Result:=false; - // SynBeatifier is shared arrcoss SynEdits, and may call the wrong SrcNoteBook + // SynBeautifier is shared arrcoss SynEdits, and may call the wrong SrcNoteBook if assigned(Manager) then SrcEdit := Manager.FindSourceEditorWithEditorComponent(TComponent(Editor)) else SrcEdit := FindSourceEditorWithEditorComponent(TComponent(Editor)); @@ -8287,6 +8794,8 @@ begin if (CodeContextFrm<>nil) then CodeContextFrm.Hide; + if (Manager<>nil) and (Manager.FHints<>nil) then + Manager.FHints.HideIfVisible; end; procedure TSourceNotebook.EditorKeyDown(Sender: TObject; var Key: Word; @@ -8295,6 +8804,12 @@ end; +procedure TSourceNotebook.EditorKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + +end; + procedure TSourceNotebook.ShowSynEditHint(const MousePos: TPoint); var EditPos: TPoint; @@ -8349,7 +8864,7 @@ end else begin // hint for source if Assigned(Manager) and Assigned(Manager.OnShowHintForSource) then - Manager.OnShowHintForSource(ASrcEdit,EditPos,EditCaret); + Manager.OnShowHintForSource(ASrcEdit,EditCaret, True); end; end; @@ -8466,6 +8981,8 @@ SRCED_OPEN := DebugLogger.RegisterLogGroup('SRCED_OPEN' {$IFDEF SRCED_OPEN} , True {$ENDIF} ); SRCED_CLOSE := DebugLogger.RegisterLogGroup('SRCED_CLOSE' {$IFDEF SRCED_CLOSE} , True {$ENDIF} ); SRCED_PAGES := DebugLogger.RegisterLogGroup('SRCED_PAGES' {$IFDEF SRCED_PAGES} , True {$ENDIF} ); + + IDEWindowsGlobalOptions.Add(NonModalIDEWindowNames[nmiwSourceNoteBookName], False); end; procedure InternalFinal; @@ -8517,6 +9034,11 @@ ActiveSourceWindow := SourceWindows[AValue]; end; +procedure TSourceEditorManagerBase.SetShowTabs(const AShowTabs: Boolean); +begin + FShowTabs := AShowTabs; +end; + function TSourceEditorManagerBase.GetActiveSourceWindow: TSourceEditorWindowInterface; begin Result := FActiveWindow; @@ -8759,12 +9281,27 @@ Result.BottomRight := AnEditor.ClientToScreen(AnEditor.RowColumnToPixels(Point(EndColumn+1, PhysRow+1))); end; +function TSourceEditorManagerBase.GetShowTabs: Boolean; +begin + Result := FShowTabs; +end; + function TSourceEditorManagerBase.GetMarklingProducers(Index: integer ): TSourceMarklingProducer; begin Result:=TSourceMarklingProducer(fProducers[Index]); end; +procedure TSourceEditorManagerBase.DoWindowShow(AWindow: TSourceNotebook); +begin + FChangeNotifyLists[semWindowShow].CallNotifyEvents(AWindow); +end; + +procedure TSourceEditorManagerBase.DoWindowHide(AWindow: TSourceNotebook); +begin + FChangeNotifyLists[semWindowHide].CallNotifyEvents(AWindow); +end; + procedure TSourceEditorManagerBase.SyncMessageWnd(Sender: TObject); begin MessagesView.MessagesFrame1.ApplyMultiSrcChanges(Sender as TETMultiSrcChanges); @@ -8931,6 +9468,7 @@ if EditorMacroForRecording = nil then EditorMacroForRecording := FMacroRecorder; + FShowTabs := True; FUpdateFlags := []; FAutoFocusLock := 0; for i := low(TsemChangeReason) to high(TsemChangeReason) do @@ -9265,6 +9803,56 @@ end; end; +procedure TSourceEditorManager.SrcEditMenuProcedureJumpGetCaption( + Sender: TObject; var ACaption, AHint: string); +var + ShortFileName, CurFilename: String; + MainCodeBuf: TCodeBuffer; + CodeTool: TCodeTool; + CaretXY: TCodeXYPosition; + CleanPos: integer; + CodeNode: TCodeTreeNode; + ProcNode: TCodeTreeNode; + ProcName: String; + SrcEdit: TSourceEditor; +begin + // ask Codetools + SrcEdit:=GetActiveSE; + if not Assigned(SrcEdit) then Exit; + CurFilename:=SrcEdit.FileName; + ShortFileName:=ExtractFileName(CurFilename); + MainCodeBuf:=nil; + if FilenameIsPascalUnit(ShortFileName) + or (CompareFileExt(ShortFileName,'.inc',true)=0) then + MainCodeBuf:=CodeToolBoss.GetMainCode(SrcEdit.CodeBuffer) + else if FilenameIsPascalSource(ShortFileName) then + MainCodeBuf:=SrcEdit.CodeBuffer; + CodeTool:=nil; + CaretXY:=CleanCodeXYPosition; + CaretXY.Code:=SrcEdit.CodeBuffer; + CaretXY.X:=SrcEdit.CursorTextXY.X; + CaretXY.Y:=SrcEdit.CursorTextXY.Y; + CodeNode:=nil; + if MainCodeBuf<>nil then begin + CodeToolBoss.Explore(MainCodeBuf,CodeTool,true); + if CodeTool<>nil then begin + CodeTool.CaretToCleanPos(CaretXY,CleanPos); + CodeNode:=CodeTool.FindDeepestNodeAtPos(CleanPos,false); + end; + end; + + ProcName:=''; + if CodeNode<>nil then begin + ProcNode:=CodeNode.GetNodeOfType(ctnProcedure); + if ProcNode<>nil then + ProcName:=CodeTool.ExtractProcName(ProcNode,[]); + end; + if ProcName<>'' then + ACaption:=Format(lisJumpToProcedure, [ProcName]) + else + ACaption:=uemProcedureJump; +end; + function TSourceEditorManager.IndexOfSourceWindowWithID(const AnID: Integer): Integer; begin Result := SourceWindowCount - 1; @@ -9428,7 +10016,7 @@ IndentToTokenStart:=EditorOpts.CodeTemplateIndentToTokenStart; end; - FMouseHintTimer.Interval:=EditorOpts.AutoDelayInMSec; + FHints.AutoHintTimer.Interval:=EditorOpts.AutoDelayInMSec; if FDefaultCompletionForm <> nil then begin FDefaultCompletionForm.LongLineHintTime := EditorOpts.CompletionLongLineHintInMSec; @@ -9436,22 +10024,20 @@ end; end; -function TSourceEditorManager.ReIndent(const Src: string; OldIndent: integer; - OldTabWidth: integer): string; +function TSourceEditorManager.Beautify(const Src: string): string; var - NewTabWidth: Integer; - NewIndent: Integer; + NewIndent, NewTabWidth: Integer; begin - if OldIndent=0 then - GuessIndentSize(Src,OldIndent,EditorOpts.TabWidth); + Result:=CodeToolBoss.Beautifier.BeautifyStatement(Src,2,[bcfDoNotIndentFirstLine]); + if (eoTabsToSpaces in EditorOpts.SynEditOptions) or (EditorOpts.BlockTabIndent=0) then NewTabWidth:=0 else NewTabWidth:=EditorOpts.TabWidth; NewIndent:=EditorOpts.BlockTabIndent*EditorOpts.TabWidth+EditorOpts.BlockIndent; - //debugln(['TSourceEditorManager.ReIndent OldIndent=',OldIndent,' OldTabWidth=',OldTabWidth,' NewIndent=',NewIndent,' NewTabWidth=',NewTabWidth]); - Result:=BasicCodeTools.ReIndent(Src,OldIndent,OldTabWidth,NewIndent,NewTabWidth); + + Result:=BasicCodeTools.ReIndent(Result,2,0,NewIndent,NewTabWidth); end; procedure TSourceEditorManager.FindClicked(Sender: TObject); @@ -9484,6 +10070,11 @@ if ActiveEditor <> nil then ActiveEditor.ShowGotoLineDialog; end; +procedure TSourceEditorManager.HideHint; +begin + FHints.HideHint; +end; + procedure TSourceEditorManager.JumpBackClicked(Sender: TObject); begin if ActiveSourceWindow <> nil then HistoryJump(Sender,jhaBack); @@ -9494,6 +10085,155 @@ if ActiveSourceWindow <> nil then HistoryJump(Sender,jhaForward); end; +procedure TSourceEditorManager.JumpToImplementationClicked(Sender: TObject); +begin + JumpToSection(jmpImplementation); +end; + +procedure TSourceEditorManager.JumpToImplementationUsesClicked(Sender: TObject); +begin + JumpToSection(jmpImplementationUses); +end; + +procedure TSourceEditorManager.JumpToInitializationClicked(Sender: TObject); +begin + JumpToSection(jmpInitialization); +end; + +procedure TSourceEditorManager.JumpToInterfaceClicked(Sender: TObject); +begin + JumpToSection(jmpInterface); +end; + +procedure TSourceEditorManager.JumpToInterfaceUsesClicked(Sender: TObject); +begin + JumpToSection(jmpInterfaceUses); +end; + +procedure TSourceEditorManager.JumpToPos(FileName: string; + Pos: TCodeXYPosition; TopLine: Integer); +begin + if (LazarusIDE.DoOpenFileAndJumpToPos(Filename + ,Point(Pos.X,Pos.Y), TopLine, -1,-1 + ,[ofRegularFile,ofUseCache]) = mrOk) + then + ActiveEditor.EditorControl.SetFocus; +end; + +procedure TSourceEditorManager.JumpToProcedure( + const JumpType: TJumpToProcedureType); +const + cJumpNames: array[TJumpToProcedureType] of string = ( + 'procedure header', 'procedure begin'); +var + SrcEditor: TSourceEditorInterface; + ProcNode: TCodeTreeNode; + Tool: TCodeTool; + CleanPos: integer; + NewPos: TCodeXYPosition; + NewTopLine: integer; + JumpFound: Boolean; +begin + if not LazarusIDE.BeginCodeTools then Exit; //==> + + SrcEditor := SourceEditorManagerIntf.ActiveEditor; + if not Assigned(SrcEditor) then Exit; //==> + + if CodeToolBoss.Explore(SrcEditor.CodeToolsBuffer as TCodeBuffer, Tool, false, false) then + begin + if Tool.CaretToCleanPos( + CodeXYPosition(SrcEditor.CursorTextXY.X, SrcEditor.CursorTextXY.Y, SrcEditor.CodeToolsBuffer as TCodeBuffer), + CleanPos) <> 0 + then + Exit; + ProcNode := Tool.FindDeepestNodeAtPos(CleanPos{%H-},true); + while (ProcNode <> nil) and (ProcNode.Desc <> ctnProcedure) do + ProcNode := ProcNode.Parent; + + if (ProcNode <> nil) and (ProcNode.Desc = ctnProcedure) then + begin + if JumpType = jmpBegin then + JumpFound := Tool.FindJumpPointInProcNode(ProcNode, NewPos, NewTopLine) + else + JumpFound := Tool.JumpToCleanPos(ProcNode.StartPos, ProcNode.StartPos, ProcNode.EndPos, NewPos, NewTopLine, True); + end else + JumpFound := False; + + if JumpFound then + JumpToPos(NewPos.Code.Filename, NewPos, NewTopLine) + else + begin + CodeToolBoss.SetError(nil, 0, 0, Format(lisCannotFind, [cJumpNames[JumpType]])); + LazarusIDE.DoJumpToCodeToolBossError; + end; + end + else + LazarusIDE.DoJumpToCodeToolBossError; +end; + +procedure TSourceEditorManager.JumpToProcedureBeginClicked(Sender: TObject); +begin + JumpToProcedure(jmpBegin); +end; + +procedure TSourceEditorManager.JumpToProcedureHeaderClicked(Sender: TObject); +begin + JumpToProcedure(jmpHeader); +end; + +procedure TSourceEditorManager.JumpToSection(JumpType: TJumpToSectionType); +const + cJumpNames: array[TJumpToSectionType] of string = ( + 'Interface', 'Interface uses', 'Implementation', 'Implementation uses', 'Initialization'); +var + SrcEditor: TSourceEditorInterface; + Node: TCodeTreeNode; + Tool: TCodeTool; + NewTopLine: Integer; + NewCodePos: TCodeXYPosition; +begin + if not LazarusIDE.BeginCodeTools then Exit; //==> + + SrcEditor := SourceEditorManagerIntf.ActiveEditor; + if not Assigned(SrcEditor) then Exit; //==> + + if CodeToolBoss.Explore(SrcEditor.CodeToolsBuffer as TCodeBuffer, Tool, false, false) then + begin + case JumpType of + jmpInterface: Node := Tool.FindInterfaceNode; + jmpInterfaceUses: + begin + Node := Tool.FindMainUsesNode; + if Node = nil then//if the uses section is missing, jump to interface + Node := Tool.FindInterfaceNode; + end; + jmpImplementation: Node := Tool.FindImplementationNode; + jmpImplementationUses: + begin + Node := Tool.FindImplementationUsesNode; + if Node = nil then//if the uses section is missing, jump to implementation + Node := Tool.FindImplementationNode; + end; + jmpInitialization: + begin + Node := Tool.FindInitializationNode; + if Node = nil then//if initialization is missing, jump to last end + Node := Tool.FindRootNode(ctnEndPoint); + end; + end; + + if (Node <> nil) and Tool.CleanPosToCaretAndTopLine(Node.StartPos, NewCodePos, NewTopLine) then + JumpToPos(NewCodePos.Code.Filename, NewCodePos, NewTopLine) + else + begin + CodeToolBoss.SetError(nil, 0, 0, Format(lisCannotFind, [cJumpNames[JumpType]])); + LazarusIDE.DoJumpToCodeToolBossError; + end; + end + else + LazarusIDE.DoJumpToCodeToolBossError; +end; + procedure TSourceEditorManager.AddJumpPointClicked(Sender: TObject); begin if Assigned(OnAddJumpPoint) and (ActiveEditor <> nil) then @@ -9625,9 +10365,20 @@ procedure TSourceEditorManager.SetupShortCuts; - function GetCommand(ACommand: Word): TIDECommand; inline; + function GetCmdAndBtn(ACommand: word; out ToolButton: TIDEButtonCommand): TIDECommand; begin - Result := IDECommandList.FindIDECommand(ACommand); + Result:=IDECommandList.FindIDECommand(ACommand); + if Result<>nil then + ToolButton := RegisterIDEButtonCommand(Result) + else + ToolButton := nil; + end; + + function GetCommand(ACommand: word): TIDECommand; + var + ToolButton: TIDEButtonCommand; + begin + Result:=GetCmdAndBtn(ACommand, ToolButton); end; var @@ -9637,6 +10388,7 @@ SrcEditMenuFindDeclaration.Command := GetCommand(ecFindDeclaration); {%region *** Submenu: Find Section *** } SrcEditMenuProcedureJump.Command := GetCommand(ecFindProcedureDefinition); + SrcEditMenuProcedureJump.OnRequestCaptionHint := @SrcEditMenuProcedureJumpGetCaption; SrcEditMenuFindNextWordOccurrence.Command := GetCommand(ecFindNextWordOccurrence); SrcEditMenuFindPrevWordOccurrence.Command := GetCommand(ecFindPrevWordOccurrence); SrcEditMenuFindInFiles.Command := GetCommand(ecFindInFiles); @@ -9651,9 +10403,13 @@ {$IFnDEF SingleSrcWindow} SrcEditMenuEditorLock.Command := GetCommand(ecLockEditor); + SrcEditMenuMoveToNewWindow.SyncProperties := False; SrcEditMenuMoveToNewWindow.Command := GetCommand(ecMoveEditorNewWindow); + SrcEditMenuMoveToOtherWindowNew.SyncProperties := False; SrcEditMenuMoveToOtherWindowNew.Command := GetCommand(ecMoveEditorNewWindow); + SrcEditMenuCopyToNewWindow.SyncProperties := False; SrcEditMenuCopyToNewWindow.Command := GetCommand(ecCopyEditorNewWindow); + SrcEditMenuCopyToOtherWindowNew.SyncProperties := False; SrcEditMenuCopyToOtherWindowNew.Command := GetCommand(ecCopyEditorNewWindow); {$ENDIF} {%endregion} @@ -9793,7 +10549,7 @@ begin //debugln(['TSourceEditorManager.OnIdle ',MarklingProducerCount]); aFilename:=SrcEdit.FileName; - SrcEdit.EditorComponent.BeginUpdate; + SrcEdit.EditorComponent.BeginUpdate(False); for i:=0 to MarklingProducerCount-1 do begin Marklings:=MarklingProducers[i].GetMarklings(aFilename,FreeList,FreeMarklings); @@ -9832,7 +10588,7 @@ exit; end; if (Msg = WM_MOUSEMOVE) {$IFDEF WINDOWS} or (Msg = WM_NCMOUSEMOVE){$ENDIF} then begin - MaybeHideHint; + FHints.HideAutoHintAfterMouseMoved; exit; end; end; @@ -9840,7 +10596,7 @@ //debugln('TSourceEditorManager.OnUserInput'); // don't hide hint if Sender is a hint window or child control if not FHints.SenderIsHintControl(Sender) then - HideHint; + FHints.HideAutoHint; end; procedure TSourceEditorManager.LockAllEditorsInSourceChangeCache; @@ -9920,127 +10676,26 @@ end; end; -procedure TSourceEditorManager.HintTimer(Sender: TObject); -var - MousePos: TPoint; - AControl: TControl; -begin - FMouseHintTimer.Enabled := False; - FMouseHintTimer.AutoEnabled := False; - if not FActiveWindow.IsVisible then exit; - MousePos := Mouse.CursorPos; - AControl:=FindLCLControl(MousePos); - if (AControl=nil) or (not FActiveWindow.ContainsControl(AControl)) then exit; - if AControl is TSynEdit then - FActiveWindow.ShowSynEditHint(MousePos); -end; - -procedure TSourceEditorManager.HideHintTimer(Sender: TObject); -begin - if FHints.HintIsVisible then begin - if ComparePoints(FHintMousePos, Mouse.CursorPos) <> 0 then begin - // TODO: introduce property, to indicate if hint is interactive - if FHints.HintIsComplex then - MaybeHideHint - else - HideHint; - end; - end - else - FMouseHideHintTimer.Enabled := false; -end; - procedure TSourceEditorManager.ActivateHint(const ScreenPos: TPoint; - const BaseURL, TheHint: string); + const BaseURL, TheHint: string; AutoShown: Boolean); begin if csDestroying in ComponentState then exit; - FHintMousePos := Mouse.CursorPos; - FHints.BaseURL := BaseURL; - if FHints.ShowHint(ScreenPos,TheHint) then - FMouseHideHintTimer.Enabled := True; -end; -procedure TSourceEditorManager.HideHint; -begin - //DebugLn(['TSourceEditorManager.HideHint ']); - if FMouseHintTimer<>nil then - begin - FMouseHintTimer.AutoEnabled := false; - FMouseHintTimer.Enabled:=false; - end; - if FMouseHideHintTimer <> nil then - FMouseHideHintTimer.Enabled := False; - if AutoStartCompletionBoxTimer<>nil then - AutoStartCompletionBoxTimer.Enabled:=false; - FHints.HideHint; + FHints.ActivateHint(ScreenPos, BaseURL, TheHint, AutoShown); end; -procedure TSourceEditorManager.MaybeHideHint; -const - MaxJitter = 3; -var - Cur: TPoint; - OkX, OkY: Boolean; - hw: THintWindow; +procedure TSourceEditorManager.ActivateHint(const ScreenRect: TRect; + const BaseURL, TheHint: string; AutoShown: Boolean); begin - FMouseHideHintTimer.Enabled := False; - if FHints.HintIsVisible then begin - hw := FHints.CurHintWindow; - Cur := Mouse.CursorPos; // Desktop coordinates - OkX := ( (FHintMousePos.x <= hw.Left) and - (Cur.x > FHintMousePos.x) and (Cur.x <= hw.Left + hw.Width) - ) or - ( (FHintMousePos.x >= hw.Left + hw.Width) and - (Cur.x < FHintMousePos.x) and (Cur.x >= hw.Left) - ) or - ( (Cur.x >= hw.Left) and (Cur.x <= hw.Left + hw.Width) ); - OkY := ( (FHintMousePos.y <= hw.Top) and - (Cur.y > FHintMousePos.y) and (Cur.y <= hw.Top + hw.Height) - ) or - ( (FHintMousePos.y >= hw.Top + hw.Height) and - (Cur.y < FHintMousePos.y) and (Cur.y >= hw.Top) - ) or - ( (Cur.y >= hw.Top) and (Cur.y <= hw.Top + hw.Height) ); - - if OkX then FHintMousePos.x := Cur.x; - if OkY then FHintMousePos.y := Cur.y; - - - OkX := OkX or - ( (FHintMousePos.x <= hw.Left + MaxJitter) and - (Cur.x > FHintMousePos.x - MaxJitter) and (Cur.x <= hw.Left + hw.Width + MaxJitter) - ) or - ( (FHintMousePos.x >= hw.Left + hw.Width - MaxJitter) and - (Cur.x < FHintMousePos.x + MaxJitter) and (Cur.x >= hw.Left - MaxJitter) - ); - OkY := OkY or - ( (FHintMousePos.y <= hw.Top + MaxJitter) and - (Cur.y > FHintMousePos.y - MaxJitter) and (Cur.y <= hw.Top + hw.Height + MaxJitter) - ) or - ( (FHintMousePos.y >= hw.Top + hw.Height - MaxJitter) and - (Cur.y < FHintMousePos.y + MaxJitter) and (Cur.y >= hw.Top - MaxJitter) - ); - - if (OkX and OkY) then begin - FMouseHideHintTimer.Enabled := True; - exit; - end; - end; - HideHint; -end; + if csDestroying in ComponentState then exit; -procedure TSourceEditorManager.UpdateHintTimer; -begin - with EditorOpts do - if (MainIDEInterface.ToolStatus=itDebugger) then - FMouseHintTimer.AutoEnabled := AutoToolTipExprEval or AutoToolTipSymbTools - else - FMouseHintTimer.AutoEnabled := AutoToolTipSymbTools; + FHints.ActivateHint(ScreenRect, BaseURL, TheHint, AutoShown); end; procedure TSourceEditorManager.OnCodeTemplateTokenNotFound(Sender: TObject; AToken: string; AnEditor: TCustomSynEdit; var Index: integer); begin + if Index=0 then ; //debugln('TSourceNotebook.OnCodeTemplateTokenNotFound ',AToken,',',AnEditor.ReadOnly,',',DefaultCompletionForm.CurrentCompletionType=ctNone); if (AnEditor.ReadOnly=false) and (DefaultCompletionForm.CurrentCompletionType=ctNone) @@ -10048,7 +10703,8 @@ DefaultCompletionForm.CurrentCompletionType:=ctTemplateCompletion; DefaultCompletionForm.Editor:=AnEditor; DefaultCompletionForm.Execute - (AToken, GetScreenRectForToken(AnEditor, AnEditor.CaretX-length(AToken), AnEditor.CaretY, AnEditor.CaretX-1)); + (AToken, GetScreenRectForToken(AnEditor, AnEditor.CaretX-length(AToken), + AnEditor.CaretY, AnEditor.CaretX-1)); end; end; @@ -10223,6 +10879,11 @@ Result := FGotoDialog; end; +procedure TSourceEditorManager.DoConfigureEditorToolbar(Sender: TObject); +begin + LazarusIDE.DoOpenIDEOptions(TEditorToolbarOptionsFrame, '', [], []); +end; + constructor TSourceEditorManager.Create(AOwner: TComponent); var DCIFilename: String; @@ -10268,26 +10929,9 @@ SourceEditorMarks.ExtToolsMarks.OnGetSynEditOfFile:=@OnSourceMarksGetSynEdit; // HintWindow - FHints := TIDEHintWindowManager.Create; + FHints := TSourceEditorHintWindowManager.Create(Self); FHints.WindowName := Self.Name+'_HintWindow'; FHints.HideInterval := 4000; - // HintTimer - FMouseHintTimer := TIdleTimer.Create(Self); - with FMouseHintTimer do begin - Name := Self.Name+'_MouseHintTimer'; - Interval := EditorOpts.AutoDelayInMSec; - Enabled := False; - AutoEnabled := False; - OnTimer := @HintTimer; - end; - // Track mouse movements outside the IDE, if hint is visible - FMouseHideHintTimer := TTimer.Create(Self); - with FMouseHideHintTimer do begin - Name := Self.Name+'_MouseHintHideTimer'; - Interval := 500; - Enabled := False; - OnTimer := @HideHintTimer; - end; // code templates FCodeTemplateModul:=TSynEditAutoComplete.Create(Self); @@ -10306,6 +10950,9 @@ EndOfTokenChr:=' ()[]{},.;:"+-*^@$\<>='''; end; + // EditorToolBar + CreateEditorToolBar(@DoConfigureEditorToolbar); + // layout IDEWindowCreators.Add(NonModalIDEWindowNames[nmiwSourceNoteBookName], nil,@CreateSourceWindow,'250','100','+70%','+70%', @@ -10318,8 +10965,6 @@ destructor TSourceEditorManager.Destroy; begin - FreeAndNil(FMouseHideHintTimer); - FreeAndNil(FMouseHintTimer); FreeAndNil(FHints); SourceEditorMarks.OnAction := nil; Application.RemoveAllHandlersOfObject(Self); @@ -10340,7 +10985,14 @@ i: Integer; begin Result := TSourceNotebook(TSourceNotebook.NewInstance); + {$IFDEF DebugDisableAutoSizing} + if DoDisableAutoSizing then + Result.DisableAutoSizing('TAnchorDockMaster Delayed') + else + Result.DisableAutoSizing('TSourceEditorManager.CreateNewWindow'); + {$ELSE} Result.DisableAutoSizing; + {$ENDIF}; if AnID > 0 then Result.Create(Self, AnID) else @@ -10359,7 +11011,7 @@ end; FChangeNotifyLists[semWindowCreate].CallNotifyEvents(Result); if not DoDisableAutoSizing then - Result.EnableAutoSizing; + Result.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TSourceEditorManager.CreateNewWindow'){$ENDIF}; end; function TSourceEditorManager.SenderToEditor(Sender: TObject): TSourceEditor; @@ -10423,12 +11075,12 @@ procedure TSourceEditorManager.ToggleLineNumbersClicked(Sender: TObject); var - MenuITem: TIDEMenuCommand; + MenuITem: TIDESpecialCommand; ActEdit:TSourceEditor; i: integer; ShowLineNumbers: boolean; begin - MenuItem := Sender as TIDEMenuCommand; + MenuItem := Sender as TIDESpecialCommand; ActEdit:=ActiveEditor; if ActEdit = nil then exit; @@ -10462,8 +11114,7 @@ procedure TSourceEditorManager.EditorPropertiesClicked(Sender: TObject); begin - if Assigned(OnEditorPropertiesClicked) then - OnEditorPropertiesClicked(Sender); + LazarusIDE.DoOpenIDEOptions(TEditorGeneralOptionsFrame); end; initialization diff -Nru lazarus-1.4.4+dfsg/ide/sourceeditprocs.pas lazarus-1.6+dfsg/ide/sourceeditprocs.pas --- lazarus-1.4.4+dfsg/ide/sourceeditprocs.pas 2014-10-18 10:22:38.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sourceeditprocs.pas 2015-11-12 17:01:27.000000000 +0000 @@ -36,13 +36,13 @@ interface uses - Classes, SysUtils, LCLProc, LCLType, GraphType, Graphics, Controls, SynEdit, - SynEditHighlighter, SynRegExpr, SynCompletion, BasicCodeTools, CodeTree, + Classes, SysUtils, LCLProc, LCLType, Graphics, Controls, + SynRegExpr, SynCompletion, BasicCodeTools, CodeTree, CodeAtom, CodeCache, SourceChanger, CustomCodeTool, CodeToolManager, PascalParserTool, KeywordFuncLists, FileProcs, IdentCompletionTool, - PascalReaderTool, SourceLog, - LazIDEIntf, TextTools, IDETextConverter, DialogProcs, MainIntf, EditorOptions, - IDEImagesIntf, CodeToolsOptions; + PascalReaderTool, + LazIDEIntf, IDEImagesIntf, TextTools, IDETextConverter, + DialogProcs, LazFileUtils, EditorOptions, CodeToolsOptions; type @@ -51,23 +51,37 @@ TLazTextConverterToolClasses = class(TTextConverterToolClasses) public function GetTempFilename: string; override; - function SupportsType(aTextType: TTextConverterType): boolean; override; + function SupportsType({%H-}aTextType: TTextConverterType): boolean; override; function LoadFromFile(Converter: TIDETextConverter; const AFilename: string; UpdateFromDisk, Revert: Boolean): Boolean; override; function SaveCodeBufferToFile(Converter: TIDETextConverter; const AFilename: string): Boolean; override; function GetCodeBufferSource(Converter: TIDETextConverter; out Source: string): boolean; override; - function CreateCodeBuffer(Converter: TIDETextConverter; + function CreateCodeBuffer({%H-}Converter: TIDETextConverter; const Filename, NewSource: string; out CodeBuffer: Pointer): boolean; override; - function LoadCodeBufferFromFile(Converter: TIDETextConverter; + function LoadCodeBufferFromFile({%H-}Converter: TIDETextConverter; const Filename: string; UpdateFromDisk, Revert: Boolean; out CodeBuffer: Pointer): boolean; override; procedure AssignCodeToolBossError(Target: TCustomTextConverterTool); override; end; - + + TLazIdentifierListItem = class(TIdentifierListItem) + private + FBeautified: Boolean; + public + procedure BeautifyIdentifier({%H-}IdentList: TIdentifierList); override; + end; + + TLazUnitNameSpaceIdentifierListItem = class(TUnitNameSpaceIdentifierListItem) + private + FBeautified: Boolean; + public + procedure BeautifyIdentifier(IdentList: TIdentifierList); override; + end; + procedure SetupTextConverters; procedure FreeTextConverters; @@ -86,7 +100,7 @@ // completion form and functions function PaintCompletionItem(const AKey: string; ACanvas: TCanvas; X, Y, MaxX: integer; ItemSelected: boolean; Index: integer; - aCompletion : TSynCompletion; CurrentCompletionType: TCompletionType; + {%H-}aCompletion : TSynCompletion; CurrentCompletionType: TCompletionType; Highlighter: TSrcIDEHighlighter; MeasureOnly: Boolean = False): TPoint; function GetIdentCompletionValue(aCompletion : TSynCompletion; @@ -238,6 +252,7 @@ ImageIndex: longint; HintModifiers: TPascalHintModifiers; HintModifier: TPascalHintModifier; + HelperForNode: TCodeTreeNode; begin ForegroundColor := ColorToRGB(ACanvas.Font.Color); Result.X := 0; @@ -250,6 +265,7 @@ ACanvas.TextOut(x+1, y, 'PaintCompletionItem: BUG in codetools or misuse of PaintCompletionItem'); exit; end; + IdentItem.BeautifyIdentifier(CodeToolBoss.IdentifierList); BackgroundColor:=ColorToRGB(ACanvas.Brush.Color); BGRed:=(BackgroundColor shr 16) and $ff; BGGreen:=(BackgroundColor shr 8) and $ff; @@ -288,7 +304,7 @@ else begin AColor:=clNavy; - if IdentItem.IsContructor then + if IdentItem.IsConstructor then s := 'constructor' else if IdentItem.IsDestructor then @@ -321,12 +337,18 @@ s:='label'; end; - ctnUnit, ctnUseUnit: + ctnUnit, ctnUseUnitClearName: begin AColor:=clBlack; s:='unit'; end; + ctnUseUnitNamespace: + begin + AColor:=clBlack; + s:='namespace'; + end; + ctnNone: if iliKeyword in IdentItem.Flags then begin AColor:=clBlack; @@ -353,8 +375,6 @@ SetFontColor(ForegroundColor); ACanvas.Font.Style:=ACanvas.Font.Style+[fsBold]; s:=IdentItem.Identifier; - with CodeToolBoss.SourceChangeCache.BeautifyCodeOptions do - WordExceptions.CheckExceptions(s); if MeasureOnly then Inc(Result.X, 1+ACanvas.TextWidth(s)) else begin @@ -421,10 +441,14 @@ case ANode.Desc of ctnClass,ctnObject,ctnObjCClass,ctnObjCCategory, ctnCPPClass, - ctnClassInterface,ctnObjCProtocol,ctnDispinterface: + ctnClassInterface,ctnObjCProtocol,ctnDispinterface, + ctnClassHelper,ctnRecordHelper,ctnTypeHelper: begin case ANode.Desc of ctnClass: s:=s+'class'; + ctnClassHelper: s:=s+'class helper'; + ctnRecordHelper: s:=s+'record helper'; + ctnTypeHelper: s:=s+'type helper'; ctnObject: s:=s+'object'; ctnObjCClass: s:=s+'objcclass'; ctnObjCCategory: s:=s+'objccategory'; @@ -438,9 +462,15 @@ except on ECodeToolError do ; end; + if ANode.Desc in [ctnClassHelper, ctnRecordHelper, ctnTypeHelper] then + HelperForNode := IdentItem.Tool.FindHelperForNode(ANode) + else + HelperForNode := nil; SubNode:=IdentItem.Tool.FindInheritanceNode(ANode); if SubNode<>nil then s:=s+IdentItem.Tool.ExtractNode(SubNode,[]); + if HelperForNode<>nil then + s:=s+' '+IdentItem.Tool.ExtractNode(HelperForNode,[]); end; ctnRecordType: s:=s+'record'; @@ -529,19 +559,6 @@ end; end; -function FindUnitName(IdentList: TIdentifierList; - IdentItem: TIdentifierListItem): string; -var - CodeBuf: TCodeBuffer; -begin - Result:=IdentItem.Identifier; - CodeBuf:=CodeToolBoss.FindUnitSource(IdentList.StartContextPos.Code,Result,''); - if CodeBuf=nil then exit; - Result:=CodeToolBoss.GetSourceName(CodeBuf,true); - if Result='' then - Result:=IdentItem.Identifier; -end; - function GetIdentCompletionValue(aCompletion : TSynCompletion; AddChar: TUTF8Char; out ValueType: TIdentComplValue; out CursorToLeft: integer): string; @@ -560,7 +577,6 @@ Indent: LongInt; StartContextPos: TCodeXYPosition; s: String; - IsWordPolicyExcept: Boolean; begin Result:=''; CursorToLeft:=0; @@ -575,15 +591,14 @@ exit; end; + IdentItem.BeautifyIdentifier(IdentList); CodeToolBoss.IdentItemCheckHasChilds(IdentItem); CanAddSemicolon:=CodeToolsOpts.IdentComplAddSemicolon and (AddChar<>';'); - CanAddComma:=(AddChar<>','); + CanAddComma:=CodeToolsOpts.IdentComplAddSemicolon and (AddChar<>','); IsReadOnly:=false; Result:=IdentItem.Identifier; - with CodeToolBoss.SourceChangeCache.BeautifyCodeOptions do - IsWordPolicyExcept:=WordExceptions.CheckExceptions(Result); //debugln(['GetIdentCompletionValue IdentItem.GetDesc=',NodeDescriptionAsString(IdentItem.GetDesc),' IdentList.ContextFlags=',dbgs(IdentList.ContextFlags),' IdentItem.Node=',IdentItem.Node<>nil]); @@ -606,10 +621,14 @@ IsReadOnly:=IdentItem.IsPropertyReadOnly; end; - ctnUnit, ctnPackage, ctnLibrary: + ctnUnit, ctnPackage, ctnLibrary, ctnUseUnitNamespace: ValueType:=icvUnitName; end; + //Add the '&' character to prefixed identifiers + if (iliNeedsAmpersand in IdentItem.Flags) then + Result := '&' + Result; + case ValueType of icvProcWithParams: @@ -679,10 +698,6 @@ //debugln(['GetIdentCompletionValue ',dbgstr(Result),' LineLen=',CodeToolBoss.SourceChangeCache.BeautifyCodeOptions.LineLength]); CanAddSemicolon:=false; end; - - icvUnitName: - if not IsWordPolicyExcept then - Result:=FindUnitName(IdentList,IdentItem); end; if CursorAtEnd then ; @@ -718,10 +733,11 @@ Result+=','; end; - if (IdentItem.GetDesc=ctnUseUnit) and (AddChar<>'.') then begin - // ToDo: check if there is already a point + if CodeToolsOpts.IdentComplAddSemicolon and + (IdentItem.GetDesc in [ctnUseUnitNamespace,ctnUseUnitClearName]) and (AddChar<>'.') and + not IdentList.StartUpAtomBehindIs('.')//check if there is already a point + then Result+='.'; - end; // add 'do' if CodeToolsOpts.IdentComplAddDo and (AddChar='') @@ -821,6 +837,50 @@ SynREEngine.Split(TheText,Pieces); end; +{ TLazIdentifierListItem } + +procedure TLazIdentifierListItem.BeautifyIdentifier(IdentList: TIdentifierList); +begin + if FBeautified then + Exit; + + CodeToolBoss.SourceChangeCache.BeautifyCodeOptions.WordExceptions.CheckExceptions(Identifier); + FBeautified:=True; +end; + +{ TLazUnitNameSpaceIdentifierListItem } + +procedure TLazUnitNameSpaceIdentifierListItem.BeautifyIdentifier( + IdentList: TIdentifierList); +var + CodeBuf: TCodeBuffer; + LastPointPos: Integer; + NewIdentifier: string; +begin + if FBeautified then + Exit; + + NewIdentifier:=Identifier; + if not CodeToolBoss.SourceChangeCache.BeautifyCodeOptions.WordExceptions.CheckExceptions(NewIdentifier) then + begin + CodeBuf:=CodeToolBoss.FindUnitSource(IdentList.StartContextPos.Code,FileUnitName,''); + if CodeBuf=nil then Exit; + + NewIdentifier:=Copy(CodeToolBoss.GetSourceName(CodeBuf,true), IdentifierStartInUnitName, Length(Identifier)); + + if NewIdentifier='' then + NewIdentifier:=Identifier + else + begin + LastPointPos := LastDelimiter('.', NewIdentifier); + if LastPointPos > 0 then + NewIdentifier := Copy(NewIdentifier, LastPointPos+1, High(Integer)); + end; + end; + Identifier := NewIdentifier; + FBeautified := True; +end; + { TLazTextConverterToolClasses } function TLazTextConverterToolClasses.GetTempFilename: string; @@ -943,6 +1003,8 @@ REVarCountFunction:=@SynREVarCount; REReplaceProcedure:=@SynREReplace; RESplitFunction:=@SynRESplit; + CIdentifierListItem:=TLazIdentifierListItem; + CUnitNameSpaceIdentifierListItem:=TLazUnitNameSpaceIdentifierListItem; finalization FreeAndNil(SynREEngine); diff -Nru lazarus-1.4.4+dfsg/ide/sourcefilemanager.pas lazarus-1.6+dfsg/ide/sourcefilemanager.pas --- lazarus-1.4.4+dfsg/ide/sourcefilemanager.pas 2015-05-01 10:39:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sourcefilemanager.pas 2016-01-03 12:28:36.000000000 +0000 @@ -27,13 +27,14 @@ unit SourceFileManager; {$mode objfpc}{$H+} +{$MODESWITCH ADVANCEDRECORDS} interface uses AVL_Tree, typinfo, math, Classes, SysUtils, Controls, Forms, Dialogs, LCLIntf, - LCLType, LCLProc, FileProcs, FileUtil, IDEProcs, DialogProcs, IDEDialogs, - LConvEncoding, LazFileCache, LazFileUtils, LResources, PropEdits, + LCLType, LCLProc, FileProcs, IDEProcs, DialogProcs, IDEDialogs, + LConvEncoding, LazFileCache, FileUtil, LazFileUtils, LazUTF8, LResources, PropEdits, DefineTemplates, IDEMsgIntf, IDEProtocol, LazarusIDEStrConsts, NewDialog, NewProjectDlg, LazIDEIntf, MainBase, MainBar, MainIntf, MenuIntf, NewItemIntf, CompOptsIntf, SrcEditorIntf, IDEWindowIntf, ProjectIntf, Project, ProjectDefs, @@ -45,10 +46,63 @@ DiskDiffsDialog, InputHistory, CheckLFMDlg, LCLMemManager, CodeToolManager, CodeToolsStructs, ConvCodeTool, CodeCache, CodeTree, FindDeclarationTool, BasicCodeTools, SynEdit, UnitResources, IDEExternToolIntf, ObjectInspector, - ExtToolDialog, PublishModule, etMessagesWnd; + PublishModule, etMessagesWnd, + FormEditingIntf; type + TBookmarkCommandsStamp = record + private + BookmarksStamp: Int64; + public + function Changed(ABookmarksStamp: Int64): Boolean; + end; + + TFileCommandsStamp = record + private + FSrcEdit: TSourceEditor; + public + function Changed(ASrcEdit: TSourceEditor): Boolean; + end; + + TProjectCommandsStamp = record + private + FUnitInfo: TUnitInfo; + FProjectChangeStamp: Int64; + FCompilerParseStamp: integer; + FBuildMacroChangeStamp: integer; + public + function Changed(AUnitInfo: TUnitInfo): Boolean; + end; + + TPackageCommandsStamp = record + private + FUnitInfo: TUnitInfo; + FPackagesChangeStamp: Int64; + public + function Changed(AUnitInfo: TUnitInfo): Boolean; + end; + + TSourceEditorTabCommandsStamp = record + private + FSrcEdit: TSourceEditor; + FSrcEditLocked: Boolean; + FSourceNotebook: TSourceNotebook; + FPageIndex, FPageCount: Integer; + public + function Changed(ASrcEdit: TSourceEditor): Boolean; + end; + + TSourceEditorCommandsStamp = record + private + FSrcEdit: TSourceEditor; + FDisplayState: TDisplayState; + FEditorComponentStamp: int64; + FEditorCaretStamp: int64; + public + function Changed(ASrcEdit: TSourceEditor; ADisplayState: TDisplayState): Boolean; + end; + { TFileOpener } TFileOpener = class @@ -115,7 +169,7 @@ // methods for publish project procedure OnCopyFile(const Filename: string; var Copy: boolean; Data: TObject); procedure OnCopyError(const ErrorData: TCopyErrorData; - var Handled: boolean; Data: TObject); + var {%H-}Handled: boolean; {%H-}Data: TObject); public constructor Create; destructor Destroy; override; @@ -154,6 +208,7 @@ Files: TStringList; MultiSelect: boolean; var MultiSelectCheckedState: Boolean): TModalResult; + function AddUnitToProject(const AEditor: TSourceEditorInterface): TModalResult; function AddActiveUnitToProject: TModalResult; function RemoveFromProjectDialog: TModalResult; function InitNewProject(ProjectDesc: TProjectDescriptor): TModalResult; @@ -187,8 +242,7 @@ var LFMCode, LRSCode: TCodeBuffer; CanAbort: boolean): TModalResult; function SaveUnitComponent(AnUnitInfo: TUnitInfo; LRSCode, LFMCode: TCodeBuffer; Flags: TSaveFlags): TModalResult; - function RemoveLooseEvents(AnUnitInfo: TUnitInfo; - OkOnCodeErrors: boolean): TModalResult; + function RemoveLooseEvents(AnUnitInfo: TUnitInfo): TModalResult; function RenameUnit(AnUnitInfo: TUnitInfo; NewFilename, NewUnitName: string; var LFMCode, LRSCode: TCodeBuffer): TModalResult; function RenameUnitLowerCase(AnUnitInfo: TUnitInfo; AskUser: boolean): TModalresult; @@ -196,7 +250,7 @@ // methods for 'open unit' and 'open main unit' private function LoadResourceFile(AnUnitInfo: TUnitInfo; var LFMCode, LRSCode: TCodeBuffer; - IgnoreSourceErrors, AutoCreateResourceCode, ShowAbort: boolean): TModalResult; + AutoCreateResourceCode, ShowAbort: boolean): TModalResult; function FindBaseComponentClass(AnUnitInfo: TUnitInfo; const AComponentClassName, DescendantClassName: string; out AComponentClass: TComponentClass): boolean; function LoadAncestorDependencyHidden(AnUnitInfo: TUnitInfo; @@ -209,7 +263,8 @@ function LoadComponentDependencyHidden(AnUnitInfo: TUnitInfo; const AComponentClassName: string; Flags: TOpenFlags; MustHaveLFM: boolean; out AComponentClass: TComponentClass; out ComponentUnitInfo: TUnitInfo; - out AncestorClass: TComponentClass): TModalResult; + out AncestorClass: TComponentClass; + const IgnoreBtnText: string = ''): TModalResult; function LoadIDECodeBuffer(var ACodeBuffer: TCodeBuffer; const AFilename: string; Flags: TLoadBufferFlags; ShowAbort: boolean): TModalResult; public @@ -221,6 +276,8 @@ CloseFlags: TCloseFlags): TModalResult; function OpenComponent(const UnitFilename: string; OpenFlags: TOpenFlags; CloseFlags: TCloseFlags; out Component: TComponent): TModalResult; + function UpdateUnitInfoResourceBaseClass(AnUnitInfo: TUnitInfo; + Quiet: boolean): boolean; // methods for 'close unit' function CloseUnitComponent(AnUnitInfo: TUnitInfo; Flags: TCloseFlags): TModalResult; @@ -237,8 +294,8 @@ private function ShowSaveProjectAsDialog(UseMainSourceFile: boolean): TModalResult; function SaveProjectInfo(var Flags: TSaveFlags): TModalResult; - procedure GetMainUnit(var MainUnitInfo: TUnitInfo; - var MainUnitSrcEdit: TSourceEditor; UpdateModified: boolean); + procedure GetMainUnit(out MainUnitInfo: TUnitInfo; + out MainUnitSrcEdit: TSourceEditor; UpdateModified: boolean); procedure SaveSrcEditorProjectSpecificSettings(AnEditorInfo: TUnitEditorInfo); procedure SaveSourceEditorProjectSpecificSettings; procedure UpdateProjectResourceInfo; @@ -384,6 +441,124 @@ end; end; +{ TBookmarkCommandsStamp } + +function TBookmarkCommandsStamp.Changed(ABookmarksStamp: Int64): Boolean; +begin + Result := not( + (BookmarksStamp = ABookmarksStamp) + ); + + if not Result then + Exit; + + BookmarksStamp := ABookmarksStamp; +end; + +{ TFileCommandsStamp } + +function TFileCommandsStamp.Changed(ASrcEdit: TSourceEditor): Boolean; +begin + Result := not( + (FSrcEdit = ASrcEdit) + ); + + if not Result then Exit; + + FSrcEdit := ASrcEdit; +end; + +{ TProjectCommandsStamp } + +function TProjectCommandsStamp.Changed(AUnitInfo: TUnitInfo): Boolean; +var + CurProjectChangeStamp: Integer; +begin + if Project1=nil then + CurProjectChangeStamp := LUInvalidChangeStamp + else + CurProjectChangeStamp := Project1.ChangeStamp; + Result := not( + (FUnitInfo = AUnitInfo) + and (FProjectChangeStamp = CurProjectChangeStamp) + and (FCompilerParseStamp = CompilerParseStamp) + and (FBuildMacroChangeStamp = BuildMacroChangeStamp) + ); + + if not Result then Exit; + + FUnitInfo := AUnitInfo; + FProjectChangeStamp := CurProjectChangeStamp; + FCompilerParseStamp := CompilerParseStamp; + FBuildMacroChangeStamp := BuildMacroChangeStamp; +end; + +{ TPackageCommandsStamp } + +function TPackageCommandsStamp.Changed(AUnitInfo: TUnitInfo): Boolean; +begin + Result := not( + (FUnitInfo = AUnitInfo) + and (FPackagesChangeStamp = PackageGraph.ChangeStamp) + ); + + if not Result then Exit; + + FUnitInfo := AUnitInfo; + FPackagesChangeStamp := PackageGraph.ChangeStamp; +end; + +{ TSourceEditorTabCommandsStamp } + +function TSourceEditorTabCommandsStamp.Changed(ASrcEdit: TSourceEditor): Boolean; +begin + Result := not( + (FSrcEdit = ASrcEdit) + and (ASrcEdit <> nil) + and (FSrcEditLocked = ASrcEdit.IsLocked) + and (FSourceNotebook = ASrcEdit.SourceNotebook) + and (FPageIndex = ASrcEdit.SourceNotebook.PageIndex) + and (FPageCount = ASrcEdit.SourceNotebook.PageCount) + ); + + if not Result then Exit; + + FSrcEdit := ASrcEdit; + if ASrcEdit<>nil then + begin + FSrcEditLocked := ASrcEdit.IsLocked; + FSourceNotebook := ASrcEdit.SourceNotebook; + FPageIndex := ASrcEdit.SourceNotebook.PageIndex; + FPageCount := ASrcEdit.SourceNotebook.PageCount; + end; +end; + +{ TSourceEditorCommandsStamp } + +function TSourceEditorCommandsStamp.Changed(ASrcEdit: TSourceEditor; + ADisplayState: TDisplayState): Boolean; +begin + Result := not( + (FSrcEdit = ASrcEdit) + and (ASrcEdit <> nil) + and (FDisplayState = ADisplayState) + and (FEditorComponentStamp = ASrcEdit.EditorComponent.ChangeStamp) + and (FEditorCaretStamp = ASrcEdit.EditorComponent.CaretStamp) + ); + + if not Result then Exit; + + FSrcEdit := ASrcEdit; + FDisplayState := ADisplayState; + if ASrcEdit<>nil then + begin + FEditorComponentStamp := ASrcEdit.EditorComponent.ChangeStamp; + FEditorCaretStamp := ASrcEdit.EditorComponent.CaretStamp; + end; +end; + +//============================================================================== + { TFileOpener } function TFileOpener.OpenFileInSourceEditor(AnEditorInfo: TUnitEditorInfo): TModalResult; @@ -657,8 +832,15 @@ if Result <> nil then break; end; - if Result = nil then // should never happen + if Result = nil then + // should never happen Result := AnUnitInfo.OpenEditorInfo[0]; + if Result<>nil then begin + // WantedTopLine + if (WantedTopLine>0) + and (Result.EditorComponent<>nil) then + Result.EditorComponent.TopLine:=WantedTopLine; + end; end; function TFileOpener.OpenResource: TModalResult; @@ -1221,6 +1403,7 @@ CurPath:=AppendPathDelim(ExtractFilePath(FActiveUnitInfo.Filename))+CurPath; end; for c:=0 to 2 do begin + TempFile:=''; // FPC searches first lowercase, then keeping case, then uppercase case c of 0: TempFile:=LowerCase(FFileName); @@ -1471,7 +1654,7 @@ begin MsgResult:=IDEQuestionDialog(lisCCOWarningCaption, Format(lisTheProjectDoesNotUseTheLCLUnitInterfacesButItSeems, [LineEnding]), - mtWarning, [mrYes, lisAddUnitInterfaces, mrNo, dlgIgnoreVerb, + mtWarning, [mrYes, lisAddUnitInterfaces, mrNo, lisIgnore, mrNoToAll, lisAlwaysIgnore, mrCancel]); case MsgResult of mrNo: exit; @@ -1493,6 +1676,144 @@ MainIDE.SaveEnvironment; end; +function TLazSourceFileManager.AddUnitToProject( + const AEditor: TSourceEditorInterface): TModalResult; +var + ActiveSourceEditor: TSourceEditor; + ActiveUnitInfo: TUnitInfo; + s, ShortUnitName, LFMFilename, LFMType, LFMComponentName, + LFMClassName: string; + OkToAdd: boolean; + Owners: TFPList; + i: Integer; + APackage: TLazPackage; + MsgResult: TModalResult; + LFMCode: TCodeBuffer; +begin + Result:=mrCancel; + if AEditor<>nil then + begin + ActiveSourceEditor := AEditor as TSourceEditor; + if not MainIDE.BeginCodeTool(ActiveSourceEditor,ActiveUnitInfo,[ctfUseGivenSourceEditor]) then exit; + end else + begin + ActiveSourceEditor:=nil; + if not MainIDE.BeginCodeTool(ActiveSourceEditor,ActiveUnitInfo,[]) then exit; + end; + if (ActiveUnitInfo=nil) then exit; + if ActiveUnitInfo.IsPartOfProject then begin + if not ActiveUnitInfo.IsVirtual then + s:=Format(lisTheFile, [ActiveUnitInfo.Filename]) + else + s:=Format(lisTheFile, [ActiveSourceEditor.PageName]); + s:=Format(lisisAlreadyPartOfTheProject, [s]); + IDEMessageDialog(lisInformation, s, mtInformation, [mbOk]); + exit; + end; + if not ActiveUnitInfo.IsVirtual then + s:='"'+ActiveUnitInfo.Filename+'"' + else + s:='"'+ActiveSourceEditor.PageName+'"'; + if (ActiveUnitInfo.SrcUnitName<>'') + and (Project1.IndexOfUnitWithName(ActiveUnitInfo.SrcUnitName,true,ActiveUnitInfo)>=0) then + begin + IDEMessageDialog(lisInformation, Format( + lisUnableToAddToProjectBecauseThereIsAlreadyAUnitWith, [s]), + mtInformation, [mbOk]); + exit; + end; + + Owners:=PkgBoss.GetPossibleOwnersOfUnit(ActiveUnitInfo.Filename,[]); + try + if (Owners<>nil) then begin + for i:=0 to Owners.Count-1 do begin + if TObject(Owners[i]) is TLazPackage then begin + APackage:=TLazPackage(Owners[i]); + MsgResult:=IDEQuestionDialog(lisAddPackageRequirement, + Format(lisTheUnitBelongsToPackage, [APackage.IDAsString]), + mtConfirmation, [mrYes, lisAddPackageToProject2, + mrIgnore, lisAddUnitNotRecommended, mrCancel],''); + case MsgResult of + mrYes: + begin + PkgBoss.AddProjectDependency(Project1,APackage); + exit; + end; + mrIgnore: ; + else + exit; + end; + end; + end; + end; + finally + Owners.Free; + end; + + if FilenameIsPascalUnit(ActiveUnitInfo.Filename) + and (EnvironmentOptions.CharcaseFileAction<>ccfaIgnore) then + begin + // ask user to apply naming conventions + Result:=RenameUnitLowerCase(ActiveUnitInfo,true); + if Result=mrIgnore then Result:=mrOk; + if Result<>mrOk then begin + DebugLn('AddActiveUnitToProject A RenameUnitLowerCase failed ',ActiveUnitInfo.Filename); + exit; + end; + end; + + if IDEMessageDialog(lisConfirmation, Format(lisAddToProject, [s]), + mtConfirmation, [mbYes, mbCancel]) in [mrOk, mrYes] + then begin + OkToAdd:=True; + if FilenameIsPascalUnit(ActiveUnitInfo.Filename) then + OkToAdd:=CheckDirIsInSearchPath(ActiveUnitInfo,False,False) + else if CompareFileExt(ActiveUnitInfo.Filename,'inc',false)=0 then + OkToAdd:=CheckDirIsInSearchPath(ActiveUnitInfo,False,True); + if OkToAdd then begin + ActiveUnitInfo.IsPartOfProject:=true; + Project1.Modified:=true; + if (FilenameIsPascalUnit(ActiveUnitInfo.Filename)) + and (pfMainUnitHasUsesSectionForAllUnits in Project1.Flags) + then begin + ActiveUnitInfo.ReadUnitNameFromSource(false); + ShortUnitName:=ActiveUnitInfo.CreateUnitName; + if (ShortUnitName<>'') then begin + if CodeToolBoss.AddUnitToMainUsesSection(Project1.MainUnitInfo.Source,ShortUnitName,'') + then + Project1.MainUnitInfo.Modified:=true; + end; + end; + end; + end; + + if Project1.AutoCreateForms + and (pfMainUnitHasCreateFormStatements in Project1.Flags) + and FilenameIsPascalUnit(ActiveUnitInfo.Filename) then + begin + UpdateUnitInfoResourceBaseClass(ActiveUnitInfo,true); + if ActiveUnitInfo.ResourceBaseClass in [pfcbcForm,pfcbcDataModule] then + begin + LFMFilename:=ActiveUnitInfo.UnitResourceFileformat.GetUnitResourceFilename(ActiveUnitInfo.Filename,true); + if LoadCodeBuffer(LFMCode,LFMFilename,[lbfUpdateFromDisk],false)=mrOk then + begin + // read lfm header + ReadLFMHeader(LFMCode.Source,LFMType,LFMComponentName,LFMClassName); + if (LFMComponentName<>'') + and (LFMClassName<>'') then begin + if IDEMessageDialog(lisAddToStartupComponents, + Format(lisShouldTheComponentBeAutoCreatedWhenTheApplicationS, [ + LFMComponentName]), + mtInformation,[mbYes,mbNo])=mrYes then + begin + Project1.AddCreateFormToProjectFile(LFMClassName,LFMComponentName); + end; + end; + end; + end; + end; +end; + procedure TLazSourceFileManager.UpdateSourceNames; var i: integer; @@ -1604,6 +1925,8 @@ IsPartOfProject: Boolean; RequiredPackages: String; Src: String; + i: Integer; + LFindDesignerBaseClassByName: Boolean = True; begin //debugln('TLazSourceFileManager.NewFile A NewFilename=',NewFilename); // empty NewFilename is ok, it will be auto generated @@ -1725,7 +2048,7 @@ NewUnitInfo.ComponentResourceName:=''; end; Src:=NewFileDescriptor.CreateSource(NewUnitInfo.Filename,NewUnitName,NewUnitInfo.ComponentName); - Src:=SourceEditorManager.ReIndent(Src); + Src:=SourceEditorManager.Beautify(Src); //debugln(['TLazSourceFileManager.NewFile ',dbgtext(Src)]); Src:=CodeToolBoss.SourceChangeCache.BeautifyCodeOptions.BeautifyStatement(Src,0); NewUnitInfo.Source.Source:=Src; @@ -1751,6 +2074,7 @@ // syntax highlighter type NewUnitInfo.DefaultSyntaxHighlighter := FilenameToLazSyntaxHighlighter(NewFilename); + NewSrcEdit := Nil; if nfOpenInEditor in NewFlags then begin // open a new sourceeditor SrcNoteBook := SourceEditorManager.ActiveOrNewSourceWindow; @@ -1768,6 +2092,18 @@ // create component AncestorType:=NewFileDescriptor.ResourceClass; + if AncestorType <> nil then + begin + // loop for Inherited Items + for i:=0 to BaseFormEditor1.StandardDesignerBaseClassesCount - 1 do + if AncestorType.InheritsFrom(BaseFormEditor1.StandardDesignerBaseClasses[i]) then + begin + LFindDesignerBaseClassByName := False; + Break; + end; + if LFindDesignerBaseClassByName then + AncestorType:=FormEditor1.FindDesignerBaseClassByName(AncestorType.ClassName, True); + end; //DebugLn(['TLazSourceFileManager.NewFile AncestorType=',dbgsName(AncestorType),' ComponentName',NewUnitInfo.ComponentName]); if AncestorType<>nil then begin ResType:=MainBuildBoss.GetResourceType(NewUnitInfo); @@ -1805,7 +2141,7 @@ DisableAutoSize); if DisableAutoSize and (NewUnitInfo.Component<>nil) and (NewUnitInfo.Component is TControl) then - TControl(NewUnitInfo.Component).EnableAutoSizing; + TControl(NewUnitInfo.Component).EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster Delayed'){$ENDIF}; end; if Result<>mrOk then begin @@ -1818,7 +2154,7 @@ if NewUnitInfo.Component<>nil then begin // show form IDEWindowCreators.ShowForm(DefaultObjectInspectorName,false); - MainIDE.DoShowDesignerFormOfCurrentSrc; + MainIDE.DoShowDesignerFormOfCurrentSrc(False); end else begin MainIDE.DisplayState:= dsSource; end; @@ -1983,10 +2319,8 @@ WasVirtual:=AnUnitInfo.IsVirtual; WasPascalSource:=FilenameIsPascalSource(AnUnitInfo.Filename); - // if this file is part of the project and the project is virtual then save - // project first - if (not (sfProjectSaving in Flags)) and Project1.IsVirtual - and AnUnitInfo.IsPartOfProject then + // if this file is part of a virtual project then save the project first + if (not (sfProjectSaving in Flags)) and Project1.IsVirtual and AnUnitInfo.IsPartOfProject then begin SaveProjectFlags:=Flags*[sfSaveToTestDir]; if AnUnitInfo=Project1.MainUnitInfo then @@ -2013,10 +2347,8 @@ MacroListViewer.UpdateDisplay; AnUnitInfo.ClearModifieds; AEditor.Modified:=false; - Result := mrOK; - exit; end; - // unknown internal file => skip + // otherwise unknown internal file => skip exit(mrOk); end; @@ -2051,8 +2383,7 @@ end; // check if file is writable on disk - if (not AnUnitInfo.IsVirtual) - and FileExistsUTF8(AnUnitInfo.Filename) then + if (not AnUnitInfo.IsVirtual) and FileExistsUTF8(AnUnitInfo.Filename) then AnUnitInfo.FileReadOnly:=not FileIsWritable(AnUnitInfo.Filename) else AnUnitInfo.FileReadOnly:=false; @@ -2066,8 +2397,7 @@ LRSCode:=nil; if WasPascalSource then begin - Result:=LoadResourceFile(AnUnitInfo,LFMCode,LRSCode, - not (sfSaveAs in Flags),true,CanAbort); + Result:=LoadResourceFile(AnUnitInfo,LFMCode,LRSCode,true,CanAbort); if not (Result in [mrIgnore,mrOk]) then exit; end; @@ -2098,6 +2428,7 @@ end; // b) do actual save + DestFilename := ''; if (sfSaveToTestDir in Flags) or AnUnitInfo.IsVirtual then begin // save source to test directory @@ -2152,8 +2483,7 @@ NewUnitName:=AnUnitInfo.ReadUnitNameFromSource(true); NewFilename:=AnUnitInfo.Filename; if (NewUnitName<>'') - and ((OldUnitName<>NewUnitName) - or (CompareFilenames(OldFilename,NewFilename)<>0)) + and ((OldUnitName<>NewUnitName) or (CompareFilenames(OldFilename,NewFilename)<>0)) then begin if EnvironmentOptions.UnitRenameReferencesAction<>urraNever then begin @@ -2481,7 +2811,7 @@ SearchPath: String; SearchFile: String; begin - if CompiledSrcExt='' then exit; + if CompiledSrcExt='' then exit(''); // get unit path for compiled units UnitPath:=BaseDir+';'+StartUnitPath; UnitPath:=TrimSearchPath(UnitPath,BaseDir); @@ -2909,6 +3239,7 @@ LFMComponentName: String; LFMClassName: String; anUnitName: String; + LFMCode: TCodeBuffer; begin if Project1=nil then exit(mrCancel); MainIDE.GetCurrentUnit(ActiveSourceEditor, ActiveUnitInfo); @@ -2928,18 +3259,22 @@ CurUnitInfo.Filename, i, CurUnitInfo = ActiveUnitInfo); end else if FilenameIsAbsolute(CurUnitInfo.Filename) and FilenameIsPascalSource(CurUnitInfo.Filename) - and FileExistsCached(CurUnitInfo.Filename) then begin + and FileExistsCached(CurUnitInfo.Filename) then + begin // this unit has a lfm, but the lpi does not know a ComponentName // => maybe this component was added without the IDE LFMFilename:=ChangeFileExt(CurUnitInfo.Filename,'.lfm'); - if FileExistsCached(LFMFilename) - and ReadLFMHeaderFromFile(LFMFilename,LFMType,LFMComponentName,LFMClassName) - then begin - anUnitName:=CurUnitInfo.SrcUnitName; - if anUnitName='' then - anUnitName:=ExtractFileNameOnly(LFMFilename); - ItemList.Add(LFMComponentName, CurUnitInfo.Filename, - i, CurUnitInfo = ActiveUnitInfo); + LFMCode:=CodeToolBoss.LoadFile(LFMFilename,true,false); + if LFMCode<>nil then + begin + ReadLFMHeader(LFMCode.Source,LFMType,LFMComponentName,LFMClassName); + if LFMComponentName<>'' then begin + anUnitName:=CurUnitInfo.SrcUnitName; + if anUnitName='' then + anUnitName:=ExtractFileNameOnly(LFMFilename); + ItemList.Add(LFMComponentName, CurUnitInfo.Filename, + i, CurUnitInfo = ActiveUnitInfo); + end; end; end; end else @@ -3129,105 +3464,8 @@ end; function TLazSourceFileManager.AddActiveUnitToProject: TModalResult; -var - ActiveSourceEditor: TSourceEditor; - ActiveUnitInfo: TUnitInfo; - s, ShortUnitName: string; - OkToAdd: boolean; - Owners: TFPList; - i: Integer; - APackage: TLazPackage; - MsgResult: TModalResult; begin - Result:=mrCancel; - ActiveSourceEditor:=nil; - if not MainIDE.BeginCodeTool(ActiveSourceEditor,ActiveUnitInfo,[]) then exit; - if (ActiveUnitInfo=nil) then exit; - if ActiveUnitInfo.IsPartOfProject then begin - if not ActiveUnitInfo.IsVirtual then - s:=Format(lisTheFile, [ActiveUnitInfo.Filename]) - else - s:=Format(lisTheFile, [ActiveSourceEditor.PageName]); - s:=Format(lisisAlreadyPartOfTheProject, [s]); - IDEMessageDialog(lisInformation, s, mtInformation, [mbOk]); - exit; - end; - if not ActiveUnitInfo.IsVirtual then - s:='"'+ActiveUnitInfo.Filename+'"' - else - s:='"'+ActiveSourceEditor.PageName+'"'; - if (ActiveUnitInfo.SrcUnitName<>'') - and (Project1.IndexOfUnitWithName(ActiveUnitInfo.SrcUnitName,true,ActiveUnitInfo)>=0) then - begin - IDEMessageDialog(lisInformation, Format( - lisUnableToAddToProjectBecauseThereIsAlreadyAUnitWith, [s]), - mtInformation, [mbOk]); - exit; - end; - - Owners:=PkgBoss.GetPossibleOwnersOfUnit(ActiveUnitInfo.Filename,[]); - try - if (Owners<>nil) then begin - for i:=0 to Owners.Count-1 do begin - if TObject(Owners[i]) is TLazPackage then begin - APackage:=TLazPackage(Owners[i]); - MsgResult:=IDEQuestionDialog(lisAddPackageRequirement, - Format(lisTheUnitBelongsToPackage, [APackage.IDAsString]), - mtConfirmation, [mrYes, lisAddPackageToProject2, - mrIgnore, lisAddUnitNotRecommended, mrCancel],''); - case MsgResult of - mrYes: - begin - PkgBoss.AddProjectDependency(Project1,APackage); - exit; - end; - mrIgnore: ; - else - exit; - end; - end; - end; - end; - finally - Owners.Free; - end; - - if FilenameIsPascalUnit(ActiveUnitInfo.Filename) - and (EnvironmentOptions.CharcaseFileAction<>ccfaIgnore) then - begin - // ask user to apply naming conventions - Result:=RenameUnitLowerCase(ActiveUnitInfo,true); - if Result=mrIgnore then Result:=mrOk; - if Result<>mrOk then begin - DebugLn('AddActiveUnitToProject A RenameUnitLowerCase failed ',ActiveUnitInfo.Filename); - exit; - end; - end; - - if IDEMessageDialog(lisConfirmation, Format(lisAddToProject, [s]), - mtConfirmation, [mbYes, mbCancel]) in [mrOk, mrYes] - then begin - OkToAdd:=True; - if FilenameIsPascalUnit(ActiveUnitInfo.Filename) then - OkToAdd:=CheckDirIsInSearchPath(ActiveUnitInfo,False,False) - else if CompareFileExt(ActiveUnitInfo.Filename,'inc',false)=0 then - OkToAdd:=CheckDirIsInSearchPath(ActiveUnitInfo,False,True); - if OkToAdd then begin - ActiveUnitInfo.IsPartOfProject:=true; - Project1.Modified:=true; - if (FilenameIsPascalUnit(ActiveUnitInfo.Filename)) - and (pfMainUnitHasUsesSectionForAllUnits in Project1.Flags) - then begin - ActiveUnitInfo.ReadUnitNameFromSource(false); - ShortUnitName:=ActiveUnitInfo.CreateUnitName; - if (ShortUnitName<>'') then begin - if CodeToolBoss.AddUnitToMainUsesSection(Project1.MainUnitInfo.Source,ShortUnitName,'') - then - Project1.MainUnitInfo.Modified:=true; - end; - end; - end; - end; + Result := AddUnitToProject(nil); end; function TLazSourceFileManager.RemoveFromProjectDialog: TModalResult; @@ -3363,7 +3601,7 @@ // read project info file {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TLazSourceFileManager.InitOpenedProjectFile B3');{$ENDIF} - Project1.ReadProject(AFilename,EnvironmentOptions.BuildMatrixOptions); + Project1.ReadProject(AFilename, EnvironmentOptions.BuildMatrixOptions, True); {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TLazSourceFileManager.InitOpenedProjectFile B4');{$ENDIF} Result:=CompleteLoadingProjectInfo; finally @@ -3388,7 +3626,7 @@ // restore files while EditorInfoIndex < Project1.AllEditorsInfoCount do begin - // TProject.ReadProject sorts alle UnitEditorInfos + // TProject.ReadProject sorts all UnitEditorInfos AnEditorInfo := Project1.AllEditorsInfo[EditorInfoIndex]; AnUnitInfo := AnEditorInfo.UnitInfo; if (not AnUnitInfo.Loaded) or (AnEditorInfo.PageIndex < 0) then begin @@ -3517,9 +3755,9 @@ InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Title:=lisChooseProgramSourcePpPasLpr; OpenDialog.Options:=OpenDialog.Options+[ofPathMustExist,ofFileMustExist]; - Filter := lisLazarusUnit + ' (*.pas;*.pp;*.p)|*.pas;*.pp;*.p' - + '|' + lisLazarusProjectSource + ' (*.lpr)|*.lpr'; - Filter:=Filter+ '|' + dlgAllFiles + ' (' + GetAllFilesMask + ')|' + GetAllFilesMask; + Filter := dlgFilterLazarusUnit + ' (*.pas;*.pp;*.p)|*.pas;*.pp;*.p' + + '|' + dlgFilterLazarusProjectSource + ' (*.lpr)|*.lpr'; + Filter:=Filter+ '|' + dlgFilterAll + ' (' + GetAllFilesMask + ')|' + GetAllFilesMask; OpenDialog.Filter := Filter; if OpenDialog.Execute then begin AFilename:=ExpandFileNameUTF8(OpenDialog.Filename); @@ -3548,7 +3786,7 @@ begin //debugln('[TLazSourceFileManager.CreateProjectForProgram] A ',ProgramBuf.Filename); if (Project1 <> nil) - and (not MainIDE.DoResetToolStatus([rfInteractive, rfSuccessOnTrigger])) then exit; + and (not MainIDE.DoResetToolStatus([rfInteractive, rfSuccessOnTrigger])) then exit(mrAbort); Result:=SaveProjectIfChanged; if Result=mrAbort then exit; @@ -3727,6 +3965,8 @@ function TLazSourceFileManager.CloseProject: TModalResult; begin + if Project1=nil then exit(mrOk); + //debugln('TLazSourceFileManager.CloseProject A'); {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TLazSourceFileManager.CloseProject A');{$ENDIF} Result:=DebugBoss.DoStopProject; @@ -3760,6 +4000,7 @@ FreeThenNil(Project1); if IDEMessagesWindow<>nil then IDEMessagesWindow.Clear; + MainIDE.UpdateCaption; {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TLazSourceFileManager.CloseProject C');{$ENDIF} Result:=mrOk; //debugln('TLazSourceFileManager.CloseProject end ',CodeToolBoss.ConsistencyCheck); @@ -3791,11 +4032,11 @@ try InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Title:=lisOpenProjectFile+' (*.lpi)'; - OpenDialog.Filter := lisLazarusProjectInfoFile+' (*.lpi)|*.lpi|' - +lisAllFiles+'|'+GetAllFilesMask; + OpenDialog.Filter := dlgFilterLazarusProject+' (*.lpi)|*.lpi|' + +dlgFilterAll+'|'+GetAllFilesMask; if OpenDialog.Execute then begin AFilename:=GetPhysicalFilenameCached(ExpandFileNameUTF8(OpenDialog.Filename),false); - if FileUtil.CompareFileExt(AFilename,'.lpi')<>0 then begin + if CompareFileExt(AFilename,'.lpi')<>0 then begin // not a lpi file // check if it is a program source @@ -4014,13 +4255,13 @@ var ModeCnt: Integer; - function BuildOneMode: Boolean; + function BuildOneMode(LastMode: boolean): Boolean; begin Inc(ModeCnt); DebugLn(''); DebugLn(Format('Building mode %d: %s ...', [ModeCnt, Project1.ActiveBuildMode.Identifier])); DebugLn(''); - Result := MainIDE.DoBuildProject(crBuild,[]) = mrOK; + Result := MainIDE.DoBuildProject(crBuild, [], LastMode) = mrOK; end; var @@ -4028,6 +4269,7 @@ md, ActiveMode: TProjectBuildMode; BuildActiveMode: Boolean; i: Integer; + LastMode: boolean; begin Result := False; ModeCnt := 0; @@ -4050,12 +4292,16 @@ end; // Build first the active mode so we don't have to switch many times. if BuildActiveMode then - if not BuildOneMode then Exit; + begin + LastMode := (ModeList.Count=0); + if not BuildOneMode(LastMode) then Exit; + end; // Build rest of the modes. for i := 0 to ModeList.Count-1 do begin + LastMode := (i=(ModeList.Count-1)); Project1.ActiveBuildMode := TProjectBuildMode(ModeList[i]); - if not BuildOneMode then Exit; + if not BuildOneMode(LastMode) then Exit; end; // Switch back to original mode. Project1.ActiveBuildMode := ActiveMode; @@ -4384,25 +4630,25 @@ SaveDialog.Title:=lisSaveSpace+SaveAsFilename+' (*'+SaveAsFileExt+')'; SaveDialog.FileName:=SaveAsFilename+SaveAsFileExt; - Filter := lisLazarusUnit + ' (*.pas;*.pp)|*.pas;*.pp'; + Filter := dlgFilterLazarusUnit + ' (*.pas;*.pp)|*.pas;*.pp'; if (SaveAsFileExt='.lpi') then - Filter:=Filter+ '|' + lisLazarusProject + ' (*.lpi)|*.lpi'; + Filter:=Filter+ '|' + dlgFilterLazarusProject + ' (*.lpi)|*.lpi'; if (SaveAsFileExt='.lfm') or (SaveAsFileExt='.dfm') then - Filter:=Filter+ '|' + lisLazarusForm + ' (*.lfm;*.dfm)|*.lfm;*.dfm'; + Filter:=Filter+ '|' + dlgFilterLazarusForm + ' (*.lfm;*.dfm)|*.lfm;*.dfm'; if (SaveAsFileExt='.lpk') then - Filter:=Filter+ '|' + lisLazarusPackage + ' (*.lpk)|*.lpk'; + Filter:=Filter+ '|' + dlgFilterLazarusPackage + ' (*.lpk)|*.lpk'; if (SaveAsFileExt='.lpr') then - Filter:=Filter+ '|' + lisLazarusProjectSource + ' (*.lpr)|*.lpr'; + Filter:=Filter+ '|' + dlgFilterLazarusProjectSource + ' (*.lpr)|*.lpr'; // append a filter for all editor files CreateFileDialogFilterForSourceEditorFiles(Filter,AllEditorExt,AllFilter); if AllEditorExt<>'' then - Filter:=Filter+ '|' + lisEditorFileTypes + ' (' + AllEditorExt + ')|' + AllEditorExt; + Filter:=Filter+ '|' + dlgFilterLazarusEditorFile + ' (' + AllEditorExt + ')|' + AllEditorExt; // append an any file filter *.* - Filter:=Filter+ '|' + dlgAllFiles + ' (' + GetAllFilesMask + ')|' + GetAllFilesMask; + Filter:=Filter+ '|' + dlgFilterAll + ' (' + GetAllFilesMask + ')|' + GetAllFilesMask; // prepend an all filter - Filter:= lisLazarusFile + ' ('+AllFilter+')|' + AllFilter + '|' + Filter; + Filter:= dlgFilterLazarusFile + ' ('+AllFilter+')|' + AllFilter + '|' + Filter; SaveDialog.Filter := Filter; // if this is a project file, start in project directory @@ -4645,7 +4891,7 @@ ComponentSavingOk:=true; // clean up component - Result:=RemoveLooseEvents(AnUnitInfo,true); + Result:=RemoveLooseEvents(AnUnitInfo); if Result<>mrOk then exit; // save designer form properties to the component @@ -4911,8 +5157,8 @@ {$ENDIF} end; -function TLazSourceFileManager.RemoveLooseEvents(AnUnitInfo: TUnitInfo; - OkOnCodeErrors: boolean): TModalResult; +function TLazSourceFileManager.RemoveLooseEvents(AnUnitInfo: TUnitInfo + ): TModalResult; var ComponentModified: boolean; ActiveSrcEdit: TSourceEditor; @@ -5004,13 +5250,20 @@ // create new source with the new filename OldSourceCode:=AnUnitInfo.Source.Source; NewSource:=CodeToolBoss.CreateFile(NewFilename); - NewSource.Source:=OldSourceCode; if NewSource=nil then begin Result:=IDEMessageDialog(lisUnableToCreateFile, Format(lisCanNotCreateFile, [NewFilename]), mtError,[mbCancel,mbAbort]); exit; end; + NewSource.Source:=OldSourceCode; + if (AnUnitInfo.Source.DiskEncoding<>'') and (AnUnitInfo.Source.DiskEncoding<>EncodingUTF8) + then begin + NewSource.DiskEncoding:=AnUnitInfo.Source.DiskEncoding; + InputHistories.FileEncodings[NewFilename]:=NewSource.DiskEncoding; + end else + InputHistories.FileEncodings.Remove(NewFilename); + // get final filename NewFilename:=NewSource.Filename; NewFilePath:=ExtractFilePath(NewFilename); @@ -5437,7 +5690,7 @@ function TLazSourceFileManager.LoadResourceFile(AnUnitInfo: TUnitInfo; var LFMCode, LRSCode: TCodeBuffer; - IgnoreSourceErrors, AutoCreateResourceCode, ShowAbort: boolean): TModalResult; + AutoCreateResourceCode, ShowAbort: boolean): TModalResult; var LFMFilename: string; LRSFilename: String; @@ -5476,8 +5729,6 @@ LRSFilename:=''; LRSCode:=nil; end; - // if no resource file found (i.e. normally the .lrs file) - // don't bother the user, because it is created automatically anyway end; Result:=mrOk; end; @@ -5719,7 +5970,7 @@ if ofLoadHiddenResource in OpenFlags then NewControl.ControlStyle:=NewControl.ControlStyle+[csNoDesignVisible]; if DisableAutoSize then - NewControl.EnableAutoSizing; + NewControl.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster Delayed'){$ENDIF}; end; if NewComponent is TFrame then @@ -5908,6 +6159,107 @@ Result:=mrCancel; end; +function TLazSourceFileManager.UpdateUnitInfoResourceBaseClass( + AnUnitInfo: TUnitInfo; Quiet: boolean): boolean; +var + LFMFilename, LFMClassName, LFMType, Ancestor, LFMComponentName: String; + LFMCode, Code: TCodeBuffer; + LoadFileFlags: TLoadBufferFlags; + ClearOldInfo: Boolean; + Tool: TCodeTool; + Node: TCodeTreeNode; + ListOfPFindContext: TFPList; + i: Integer; + Context: PFindContext; +begin + Result:=false; + if AnUnitInfo.Component<>nil then + exit(true); // a loaded resource is always uptodate + if AnUnitInfo.IsVirtual then + exit(true); // a new unit is always uptodate + ListOfPFindContext:=nil; + ClearOldInfo:=true; + try + // find lfm file + if not FilenameIsPascalUnit(AnUnitInfo.Filename) then + exit(true); // not a unit -> clear info + LFMFilename:=AnUnitInfo.UnitResourceFileformat.GetUnitResourceFilename( + AnUnitInfo.Filename,true); + if (LFMFilename='') or not FileExistsCached(LFMFilename) then + exit(true); // no lfm -> clear info + finally + if ClearOldInfo then begin + AnUnitInfo.ResourceBaseClass:=pfcbcNone; + AnUnitInfo.ComponentName:=''; + AnUnitInfo.ComponentResourceName:=''; + end; + end; + try + if (CompareFileExt(LFMFilename,'lfm')<>0) then + begin + // no lfm format -> keep old info + exit(true); + end; + // clear old info + AnUnitInfo.ResourceBaseClass:=pfcbcNone; + AnUnitInfo.ComponentName:=''; + AnUnitInfo.ComponentResourceName:=''; + // load lfm + LoadFileFlags:=[lbfUpdateFromDisk,lbfCheckIfText]; + if Quiet then + Include(LoadFileFlags,lbfQuiet); + if LoadCodeBuffer(LFMCode,LFMFilename,LoadFileFlags,false)<>mrOk then + exit; // lfm read error + // read lfm header + ReadLFMHeader(LFMCode.Source,LFMType,LFMComponentName,LFMClassName); + if LFMClassName='' then + exit; // lfm syntax error + + // LFM component name + AnUnitInfo.ComponentName:=LFMComponentName; + AnUnitInfo.ComponentResourceName:=LFMComponentName; + + // check ancestors + if LoadCodeBuffer(Code,AnUnitInfo.Filename,LoadFileFlags,false)<>mrOk then + exit; // pas read error + CodeToolBoss.Explore(Code,Tool,false,true); + if Tool=nil then + exit; // pas load error + try + Node:=Tool.FindDeclarationNodeInInterface(LFMClassName,true); + if Node=nil then + exit(Tool.FindImplementationNode<>nil); // class not found, reliable if whole interface was read + + if (Node=nil) or (Node.Desc<>ctnTypeDefinition) + or (Node.FirstChild=nil) or (Node.FirstChild.Desc<>ctnClass) then + exit(true); // this is not a class + Tool.FindClassAndAncestors(Node.FirstChild,ListOfPFindContext,false); + if ListOfPFindContext=nil then + exit; // ancestor not found -> probably syntax error + + for i:=0 to ListOfPFindContext.Count-1 do begin + Context:=PFindContext(ListOfPFindContext[i]); + Ancestor:=UpperCase(Context^.Tool.ExtractClassName(Context^.Node,false)); + if (Ancestor='TFORM') or (Ancestor='TCUSTOMFORM') then begin + AnUnitInfo.ResourceBaseClass:=pfcbcForm; + exit(true); + end else if Ancestor='TDATAMODULE' then begin + AnUnitInfo.ResourceBaseClass:=pfcbcDataModule; + exit(true); + end else if (Ancestor='TFRAME') or (Ancestor='TCUSTOMFRAME') then begin + AnUnitInfo.ResourceBaseClass:=pfcbcFrame; + exit(true); + end else if Ancestor='TCOMPONENT' then + exit(true); + end; + except + exit; // syntax error or unit not found + end; + finally + FreeListOfPFindContext(ListOfPFindContext); + end; +end; + function TLazSourceFileManager.FindBaseComponentClass(AnUnitInfo: TUnitInfo; const AComponentClassName, DescendantClassName: string; out AComponentClass: TComponentClass): boolean; @@ -5947,7 +6299,7 @@ end; end else begin // default is TForm - AComponentClass:=TForm; + AComponentClass:=BaseFormEditor1.StandardDesignerBaseClasses[DesignerBaseClassId_TForm]; end; Result:=true; end; @@ -5958,9 +6310,9 @@ out AncestorClass: TComponentClass; out AncestorUnitInfo: TUnitInfo): TModalResult; var - AncestorClassName: String; + AncestorClassName, IgnoreBtnText: String; CodeBuf: TCodeBuffer; - GrandAncestorClass: TComponentClass; + GrandAncestorClass, DefAncestorClass: TComponentClass; begin AncestorClassName:=''; AncestorClass:=nil; @@ -5988,9 +6340,22 @@ end; // try loading the ancestor first (unit, lfm and component instance) + + if AnUnitInfo.UnitResourceFileformat<>nil then + DefAncestorClass:=AnUnitInfo.UnitResourceFileformat.DefaultComponentClass; + // use TForm as default ancestor + if DefAncestorClass=nil then + DefAncestorClass:=BaseFormEditor1.StandardDesignerBaseClasses[DesignerBaseClassId_TForm]; + if (AncestorClass=nil) then begin + IgnoreBtnText:=''; + if DefAncestorClass<>nil then + IgnoreBtnText:=Format(lisIgnoreUseAsAncestor, [DefAncestorClass.ClassName] + ); + Result:=LoadComponentDependencyHidden(AnUnitInfo,AncestorClassName, - OpenFlags,false,AncestorClass,AncestorUnitInfo,GrandAncestorClass); + OpenFlags,false,AncestorClass,AncestorUnitInfo,GrandAncestorClass, + IgnoreBtnText); if Result<>mrOk then begin DebugLn(['TLazSourceFileManager.LoadAncestorDependencyHidden DoLoadComponentDependencyHidden failed AnUnitInfo=',AnUnitInfo.Filename]); end; @@ -5998,11 +6363,7 @@ mrAbort: exit; mrOk: ; mrIgnore: - begin - if AnUnitInfo.UnitResourceFileformat<>nil then - AncestorClass:=AnUnitInfo.UnitResourceFileformat.DefaultComponentClass; - AncestorUnitInfo:=nil; - end; + AncestorUnitInfo:=nil; else // cancel Result:=mrCancel; @@ -6010,10 +6371,9 @@ end; end; - // use TForm as default ancestor - if AncestorClass=nil then - AncestorClass:=TForm; //DebugLn('TLazSourceFileManager.LoadAncestorDependencyHidden Filename="',AnUnitInfo.Filename,'" AncestorClassName=',AncestorClassName,' AncestorClass=',dbgsName(AncestorClass)); + if AncestorClass=nil then + AncestorClass:=DefAncestorClass; Result:=mrOk; end; @@ -6436,8 +6796,8 @@ function TLazSourceFileManager.LoadComponentDependencyHidden( AnUnitInfo: TUnitInfo; const AComponentClassName: string; Flags: TOpenFlags; MustHaveLFM: boolean; out AComponentClass: TComponentClass; out - ComponentUnitInfo: TUnitInfo; out AncestorClass: TComponentClass - ): TModalResult; + ComponentUnitInfo: TUnitInfo; out AncestorClass: TComponentClass; + const IgnoreBtnText: string): TModalResult; { Possible results: mrOk: - AComponentClass<>nil and ComponentUnitInfo<>nil @@ -6533,12 +6893,13 @@ end; var - Quiet: Boolean; - LFMFilename: string; + Quiet, HideAbort: Boolean; + LFMFilename, MsgText: string; begin Result:=mrCancel; AComponentClass:=nil; Quiet:=([ofProjectLoading,ofQuiet]*Flags<>[]); + HideAbort:=not (ofProjectLoading in Flags); if (AComponentClassName='') or (not IsValidIdent(AComponentClassName)) then begin @@ -6548,10 +6909,9 @@ // check for cycles if AnUnitInfo.LoadingComponent then begin - Result:=IDEQuestionDialog(lisCodeTemplError, + Result:=IDEQuestionDialogAb(lisCodeTemplError, Format(lisUnableToLoadTheComponentClassBecauseItDependsOnIts, [AComponentClassName]), - mtError, [mrCancel, lisCancelLoadingThisComponent, - mrAbort, lisAbortWholeLoading]); + mtError, [mrCancel, lisCancelLoadingThisComponent],HideAbort); exit; end; @@ -6563,9 +6923,9 @@ {$endif} Result:=FindComponentClass(AnUnitInfo,AComponentClassName,Quiet, ComponentUnitInfo,AComponentClass,LFMFilename,AncestorClass); - {$if defined(VerboseFormEditor) or defined(VerboseLFMSearch)} + { $if defined(VerboseFormEditor) or defined(VerboseLFMSearch)} debugln('TLazSourceFileManager.LoadComponentDependencyHidden ',AnUnitInfo.Filename,' AComponentClassName=',AComponentClassName,' AComponentClass=',dbgsName(AComponentClass),' AncestorClass=',DbgSName(AncestorClass),' LFMFilename=',LFMFilename); - {$endif} + { $endif} //- AComponentClass<>nil and ComponentUnitInfo<>nil // designer component @@ -6585,12 +6945,17 @@ Result:=mrCancel; if Result=mrAbort then exit; if Result<>mrOk then begin - Result:=IDEQuestionDialog(lisCodeTemplError, - Format(lisUnableToFindTheComponentClassItIsNotRegisteredViaR, [ - AComponentClassName, LineEnding, LineEnding, LineEnding, AnUnitInfo.Filename]), - mtError, [mrCancel, lisCancelLoadingThisComponent, - mrAbort, lisAbortWholeLoading, - mrIgnore, lisIgnoreUseTFormAsAncestor]); + MsgText:=Format(lisUnableToFindTheComponentClassItIsNotRegisteredViaR, [ + AComponentClassName, LineEnding, LineEnding, LineEnding, AnUnitInfo.Filename]); + if IgnoreBtnText<>'' then + Result:=IDEQuestionDialogAb(lisCodeTemplError, + MsgText, mtError, + [mrCancel, lisCancelLoadingThisComponent, + mrIgnore, IgnoreBtnText], + HideAbort) + else + Result:=IDEQuestionDialogAb(lisCodeTemplError, + MsgText,mtError,[mrCancel, lisCancelLoadingThisComponent],HideAbort); end; finally AnUnitInfo.LoadingComponent:=false; @@ -6736,7 +7101,8 @@ DependingUnitInfo: TUnitInfo; DependenciesFlags: TCloseFlags; begin - repeat + ModResult:=mrOk; +repeat DependingUnitInfo:=Project1.UnitUsingComponentUnit(AnUnitInfo,Types); if DependingUnitInfo=nil then break; if (not UserAsked) and (not (cfQuiet in Flags)) @@ -6755,10 +7121,12 @@ ModResult:=CloseUnitComponent(DependingUnitInfo,DependenciesFlags); if ModResult<>mrOk then exit(false); until false; + ModResult:=mrOk; Result:=true; end; begin + Result:=mrOk; UserAsked:=false; Project1.LockUnitComponentDependencies; try @@ -6777,7 +7145,7 @@ if not CloseNext(Result,[ucdtInlineClass]) then exit; // then close all referring components - // These can build circles and can be freed in any order. + // These can build cycles and can be freed in any order. if not CloseNext(Result,[ucdtProperty]) then exit; finally Project1.UnlockUnitComponentDependencies; @@ -6986,6 +7354,7 @@ DestFilename: String; SkipSavingMainSource: Boolean; begin + Result:=mrOk; Project1.ActiveWindowIndexAtStart := SourceEditorManager.ActiveSourceWindowIndex; // update source notebook page names @@ -7020,7 +7389,6 @@ AddRecentProjectFileToEnvironment(Project1.ProjectInfoFile); MainIDE.SaveIncludeLinks; MainIDE.UpdateCaption; - if Result=mrAbort then exit; end; // save main source @@ -7059,12 +7427,10 @@ end; end; end; - - Result:=mrOk; end; -procedure TLazSourceFileManager.GetMainUnit(var MainUnitInfo: TUnitInfo; - var MainUnitSrcEdit: TSourceEditor; UpdateModified: boolean); +procedure TLazSourceFileManager.GetMainUnit(out MainUnitInfo: TUnitInfo; out + MainUnitSrcEdit: TSourceEditor; UpdateModified: boolean); begin MainUnitSrcEdit:=nil; if Project1.MainUnitID>=0 then begin @@ -7121,11 +7487,11 @@ MainUnitSrcEdit: TSourceEditor; MainUnitInfo: TUnitInfo; SaveDialog: TSaveDialog; - NewBuf: TCodeBuffer; + NewBuf, OldBuf: TCodeBuffer; TitleWasDefault: Boolean; NewLPIFilename, NewProgramFN, NewProgramName, AFilename, NewTargetFN: String; AText, ACaption, Ext: string; - OldSource, OldProjectDir, prDir: string; + OldSourceCode, OldProjectDir, prDir: string; i: Integer; begin Project1.BeginUpdate(false); @@ -7250,6 +7616,7 @@ //DebugLn(['TLazSourceFileManager.ShowSaveProjectAsDialog NewLPI=',NewLPIFilename,' NewProgramName=',NewProgramName,' NewMainSource=',NewProgramFN]); // check if info file or source file already exists + // Note: if user confirms overwriting .lpi do not ask for overwriting .lpr if FileExistsUTF8(NewLPIFilename) then begin ACaption:=lisOverwriteFile; @@ -7302,7 +7669,8 @@ // Save old source code, to prevent overwriting it, // if the file name didn't actually change. - OldSource := MainUnitInfo.Source.Source; + OldBuf := MainUnitInfo.Source; + OldSourceCode := OldBuf.Source; // switch MainUnitInfo.Source to new code NewBuf := CodeToolBoss.CreateFile(NewProgramFN); @@ -7314,7 +7682,13 @@ end; // copy the source to the new buffer - NewBuf.Source:=OldSource; + NewBuf.Source:=OldSourceCode; + if (OldBuf.DiskEncoding<>'') and (OldBuf.DiskEncoding<>EncodingUTF8) then + begin + NewBuf.DiskEncoding:=OldBuf.DiskEncoding; + InputHistories.FileEncodings[NewProgramFN]:=NewBuf.DiskEncoding; + end else + InputHistories.FileEncodings[NewProgramFN]:=''; // assign the new buffer to the MainUnit MainUnitInfo.Source:=NewBuf; @@ -7467,10 +7841,11 @@ OnlyEditorFiles: Boolean; aFilename: String; begin - if (CompareFilenames(OldFilename,NewFilename)=0) - and (OldUnitName=NewUnitName) then // compare unitnames case sensitive, maybe only the case changed + // compare unitnames case sensitive, maybe only the case changed + if (CompareFilenames(OldFilename,NewFilename)=0) and (OldUnitName=NewUnitName) then exit(mrOk); - OnlyEditorFiles:=not FilenameIsAbsolute(OldFilename); // this was a new file, files on disk can not refer to it + // this was a new file, files on disk can not refer to it + OnlyEditorFiles:=not FilenameIsAbsolute(OldFilename); OwnerList:=nil; OldCode:=nil; diff -Nru lazarus-1.4.4+dfsg/ide/sourcemarks.pas lazarus-1.6+dfsg/ide/sourcemarks.pas --- lazarus-1.4.4+dfsg/ide/sourcemarks.pas 2014-07-20 20:02:40.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sourcemarks.pas 2015-03-10 15:22:25.000000000 +0000 @@ -223,7 +223,7 @@ function FindBreakPointMark(ASrcEdit: TSourceEditorBase; ALine: integer): TSourceMark; procedure GetMarksForLine(ASrcEdit: TSourceEditorBase; ALine: integer; - var Marks: PSourceMark; var MarkCount: integer); + out Marks: PSourceMark; out MarkCount: integer); public property ImgList: TImageList read FImgList write FImgList; property Items[Index: integer]: TSourceMark read GetItems; default; @@ -753,7 +753,7 @@ end; procedure TSourceMarks.GetMarksForLine(ASrcEdit: TSourceEditorBase; - ALine: integer; var Marks: PSourceMark; var MarkCount: integer); + ALine: integer; out Marks: PSourceMark; out MarkCount: integer); var i, Capacity: integer; AVLNode: TAVLTreeNode; @@ -762,13 +762,13 @@ HasChange: Boolean; SrcEditorID: TSourceEditorSharedValuesBase; begin + MarkCount := 0; + Marks := nil; SrcEditorID := ASrcEdit.GetSharedValues; if SrcEditorID = nil then exit; Capacity := 0; - MarkCount := 0; - Marks := nil; EditorIDAndLine.EditorID := SrcEditorID; EditorIDAndLine.Line := ALine; AVLNode := FindFirstMarkNode(EditorIDAndLine.EditorID, ALine); diff -Nru lazarus-1.4.4+dfsg/ide/sourcesyneditor.pas lazarus-1.6+dfsg/ide/sourcesyneditor.pas --- lazarus-1.4.4+dfsg/ide/sourcesyneditor.pas 2015-04-11 17:53:16.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sourcesyneditor.pas 2015-10-23 17:04:26.000000000 +0000 @@ -56,7 +56,7 @@ SynEditTextBuffer, SynEditFoldedView, SynTextDrawer, SynEditTextBase, LazSynEditText, SynPluginTemplateEdit, SynPluginSyncroEdit, LazSynTextArea, SynEditHighlighter, SynEditHighlighterFoldBase, SynHighlighterPas, SynEditMarkupHighAll, SynEditKeyCmds, - SynEditMarkupIfDef, SynEditMiscProcs, + SynEditMarkupIfDef, SynEditMiscProcs, SynPluginMultiCaret, SynEditPointClasses, etSrcEditMarks, LazarusIDEStrConsts; type @@ -213,9 +213,11 @@ TIDESynEditor = class(TSynEdit) private + FCaretStamp: Int64; FShowTopInfo: boolean; FSyncroEdit: TSynPluginSyncroEdit; FTemplateEdit: TSynPluginTemplateEdit; + FMultiCaret: TSynPluginMultiCaret; FMarkupForGutterMark: TSynEditMarkupGutterMark; FOnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest; FMarkupIfDef: TSourceSynEditMarkupIfDef; @@ -232,9 +234,13 @@ function GetHighlightUserWordCount: Integer; function GetHighlightUserWords(AIndex: Integer): TSourceSynEditMarkupHighlightAllMulti; function GetIDEGutterMarks: TIDESynGutterMarks; + function GetIsInMultiCaretMainExecution: Boolean; + function GetIsInMultiCaretRepeatExecution: Boolean; + function GetOnMultiCaretBeforeCommand: TSynMultiCaretBeforeCommand; procedure GetTopInfoMarkupForLine(Sender: TObject; {%H-}Line: integer; var Special: boolean; aMarkup: TSynSelectedColor); procedure SetHighlightUserWordCount(AValue: Integer); + procedure SetOnMultiCaretBeforeCommand(AValue: TSynMultiCaretBeforeCommand); procedure SetShowTopInfo(AValue: boolean); procedure SetTopInfoMarkup(AValue: TSynSelectedColor); procedure DoHighlightChanged(Sender: TSynEditStrings; {%H-}AIndex, {%H-}ACount : Integer); @@ -254,6 +260,7 @@ property ViewedTextBuffer; property TemplateEdit: TSynPluginTemplateEdit read FTemplateEdit; property SyncroEdit: TSynPluginSyncroEdit read FSyncroEdit; + property MultiCaret: TSynPluginMultiCaret read FMultiCaret; ////// property TopInfoMarkup: TSynSelectedColor read FTopInfoMarkup write SetTopInfoMarkup; property ShowTopInfo: boolean read FShowTopInfo write SetShowTopInfo; @@ -269,6 +276,10 @@ procedure SetIfdefNodeState(ALinePos, AstartPos: Integer; AState: TSynMarkupIfdefNodeState); property OnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest read FOnIfdefNodeStateRequest write FOnIfdefNodeStateRequest; property MarkupIfDef: TSourceSynEditMarkupIfDef read FMarkupIfDef; + property IsInMultiCaretMainExecution: Boolean read GetIsInMultiCaretMainExecution; + property IsInMultiCaretRepeatExecution: Boolean read GetIsInMultiCaretRepeatExecution; + property OnMultiCaretBeforeCommand: TSynMultiCaretBeforeCommand read GetOnMultiCaretBeforeCommand write SetOnMultiCaretBeforeCommand; + property CaretStamp: Int64 read FCaretStamp; end; TIDESynHighlighterPasRangeList = class(TSynHighlighterPasRangeList) @@ -806,6 +817,8 @@ NewBounds: TSynSearchTermOptsBounds; begin NewTerm := ''; + B1 := False; + B2 := False; if syn.SelAvail and (syn.BlockBegin.y = syn.BlockEnd.y) then begin NewTerm := syn.SelText; LineTxt := syn.Lines[syn.CaretY-1]; @@ -1473,6 +1486,10 @@ inherited DoOnStatusChange(Changes); if Changes * [scTopLine, scLinesInWindow] <> []then SrcSynCaretChanged(nil); + {$push}{$R-} // range check off + if Changes * [scCaretX, scCaretY, scSelection] <> []then + Inc(FCaretStamp); + {$pop} end; procedure TIDESynEditor.GetTopInfoMarkupForLine(Sender: TObject; Line: integer; @@ -1507,6 +1524,11 @@ end; end; +procedure TIDESynEditor.SetOnMultiCaretBeforeCommand(AValue: TSynMultiCaretBeforeCommand); +begin + FMultiCaret.OnBeforeCommand := AValue; +end; + procedure TIDESynEditor.SetShowTopInfo(AValue: boolean); begin if FShowTopInfo = AValue then Exit; @@ -1532,6 +1554,21 @@ Result := TIDESynGutterMarks(Gutter.Parts.ByClass[TIDESynGutterMarks, 0]); end; +function TIDESynEditor.GetIsInMultiCaretMainExecution: Boolean; +begin + Result := FMultiCaret.IsInMainExecution; +end; + +function TIDESynEditor.GetIsInMultiCaretRepeatExecution: Boolean; +begin + Result := FMultiCaret.IsInRepeatExecution; +end; + +function TIDESynEditor.GetOnMultiCaretBeforeCommand: TSynMultiCaretBeforeCommand; +begin + Result := FMultiCaret.OnBeforeCommand; +end; + function TIDESynEditor.IsIfdefMarkupActive: Boolean; begin Result := FMarkupIfDef.RealEnabled; @@ -1608,6 +1645,12 @@ FUserWordsList := TFPList.Create; FTemplateEdit:=TSynPluginTemplateEdit.Create(Self); FSyncroEdit := TSynPluginSyncroEdit.Create(Self); + FMultiCaret := TSynPluginMultiCaret.Create(Self); + FMultiCaret.MouseActions.Clear; // will be added to SynEdit + FMultiCaret.KeyStrokes.Clear; + FMultiCaret.SetCaretTypeSize(ctVerticalLine, 2, 1024, -1, 0, [ccsRelativeHeight]); + FMultiCaret.SetCaretTypeSize(ctBlock, 1024, 1024, 0, 0, [ccsRelativeWidth, ccsRelativeHeight]); + FMultiCaret.Color := $606060; FMarkupForGutterMark := TSynEditMarkupGutterMark.Create(Self, FWordBreaker); TSynEditMarkupManager(MarkupMgr).AddMarkUp(FMarkupForGutterMark); diff -Nru lazarus-1.4.4+dfsg/ide/srcedithintfrm.pas lazarus-1.6+dfsg/ide/srcedithintfrm.pas --- lazarus-1.4.4+dfsg/ide/srcedithintfrm.pas 2011-06-21 18:06:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/srcedithintfrm.pas 2015-03-10 14:58:34.000000000 +0000 @@ -46,7 +46,7 @@ protected procedure SetControl(const AValue: TWinControl); virtual; public - procedure GetPreferredSize(var PreferredWidth, PreferredHeight: integer); virtual; + procedure GetPreferredSize(var {%H-}PreferredWidth, {%H-}PreferredHeight: integer); virtual; procedure UpdateHint; virtual; property Control: TWinControl read FControl write SetControl; end; @@ -55,7 +55,7 @@ TSrcEditHintWindow = class(THintWindow) IdleTimer1: TIdleTimer; - procedure ApplicationIdle(Sender: TObject; var Done: Boolean); + procedure ApplicationIdle(Sender: TObject; var {%H-}Done: Boolean); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); diff -Nru lazarus-1.4.4+dfsg/ide/startlazarus.lpi lazarus-1.6+dfsg/ide/startlazarus.lpi --- lazarus-1.4.4+dfsg/ide/startlazarus.lpi 2012-12-11 09:33:51.000000000 +0000 +++ lazarus-1.6+dfsg/ide/startlazarus.lpi 2015-10-02 09:42:44.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -8,6 +8,7 @@ </Flags> <SessionStorage Value="InIDEConfig"/> <MainUnit Value="0"/> + <UseXPManifest Value="True"/> <Icon Value="0"/> </General> <BuildModes Count="1"> @@ -68,11 +69,5 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/ide/startlazarus.lpr lazarus-1.6+dfsg/ide/startlazarus.lpr --- lazarus-1.4.4+dfsg/ide/startlazarus.lpr 2013-05-13 14:10:33.000000000 +0000 +++ lazarus-1.6+dfsg/ide/startlazarus.lpr 2015-10-02 09:42:44.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: startlazarus.lpr 41169 2013-05-13 14:10:33Z juha $ } +{ $Id: startlazarus.lpr 49909 2015-10-02 09:42:44Z juha $ } { /*************************************************************************** startlazarus.lpr @@ -34,6 +34,7 @@ redirect_stderr, Interfaces, SysUtils, Forms, + IDEInstances, LazarusManager; {$R *.res} @@ -44,6 +45,9 @@ begin redirect_stderr.DoShowWindow := False; Application.Initialize; + LazIDEInstances.PerformCheck; + if not LazIDEInstances.StartIDE then + Exit; ALazarusManager := TLazarusManager.Create(nil); ALazarusManager.Initialize; ALazarusManager.Run; diff -Nru lazarus-1.4.4+dfsg/ide/syncolorattribeditor.pas lazarus-1.6+dfsg/ide/syncolorattribeditor.pas --- lazarus-1.4.4+dfsg/ide/syncolorattribeditor.pas 2013-09-19 20:06:45.000000000 +0000 +++ lazarus-1.6+dfsg/ide/syncolorattribeditor.pas 2015-03-10 13:27:41.000000000 +0000 @@ -6,10 +6,10 @@ uses Classes, Controls, StdCtrls, sysutils, ExtCtrls, Graphics, GraphUtil, - ColorBox, ComCtrls, LCLProc, LCLType, LCLIntf, Dialogs, Menus, Forms, Spin, SynEdit, - SynEditMiscClasses, SynGutterCodeFolding, SynGutterLineNumber, SynEditTypes, - SynGutterChanges, SynEditMouseCmds, SynEditHighlighter, SynTextDrawer, - DividerBevel, Laz2_XMLCfg, EditorOptions, IDEOptionsIntf, + ColorBox, LCLProc, LCLType, LCLIntf, Dialogs, Menus, Forms, Spin, SynEdit, + SynGutterCodeFolding, SynEditTypes, + SynEditMouseCmds, SynEditHighlighter, SynTextDrawer, + EditorOptions, IDEOptionsIntf, editor_general_options, IDEImagesIntf, LazarusIDEStrConsts, IDEProcs, typinfo, LazConf, SourceMarks, types, math, FPCanvas; @@ -65,9 +65,9 @@ procedure ForegroundColorBoxGetColors(Sender: TCustomColorBox; Items: TStrings); procedure ForePriorSpinChange(Sender: TObject); procedure FrameEdgesBoxDrawItem(Control: TWinControl; Index: Integer; ARect: TRect; - State: TOwnerDrawState); + {%H-}State: TOwnerDrawState); procedure FrameStyleBoxDrawItem(Control: TWinControl; Index: Integer; ARect: TRect; - State: TOwnerDrawState); + {%H-}State: TOwnerDrawState); procedure GeneralCheckBoxOnChange(Sender: TObject); procedure pnlElementAttributesResize(Sender: TObject); procedure TextStyleRadioOnChange(Sender: TObject); @@ -384,6 +384,8 @@ var w,h: Integer; begin if not Other.Visible then exit; + h:=0; + w:=0; Other.GetPreferredSize(w,h); if w <= MinWidth then exit; MinAnchor := Other; diff -Nru lazarus-1.4.4+dfsg/ide/sysvaruseroverridedlg.lfm lazarus-1.6+dfsg/ide/sysvaruseroverridedlg.lfm --- lazarus-1.4.4+dfsg/ide/sysvaruseroverridedlg.lfm 2009-11-18 22:21:21.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sysvaruseroverridedlg.lfm 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -object SysVarUserOverrideDialog: TSysVarUserOverrideDialog - Left = 348 - Height = 161 - Top = 397 - Width = 400 - HorzScrollBar.Page = 399 - VertScrollBar.Page = 146 - ActiveControl = VariableEdit - Align = alTop - AutoSize = True - Caption = 'SysVarUserOverrideDialog' - ClientHeight = 161 - ClientWidth = 400 - OnCreate = FormCreate - Position = poScreenCenter - LCLVersion = '0.9.29' - object VariableLabel: TLabel - Left = 6 - Height = 18 - Top = 6 - Width = 388 - Align = alTop - BorderSpacing.Around = 6 - Caption = 'VariableLabel' - ParentColor = False - end - object ValueLabel: TLabel - Left = 6 - Height = 18 - Top = 63 - Width = 388 - Align = alTop - BorderSpacing.Around = 6 - Caption = 'ValueLabel' - ParentColor = False - end - object ValueEdit: TEdit - Left = 6 - Height = 27 - Top = 87 - Width = 388 - Align = alTop - BorderSpacing.Around = 6 - TabOrder = 1 - Text = 'ValueEdit' - end - object VariableEdit: TEdit - Left = 6 - Height = 27 - Top = 30 - Width = 388 - Align = alTop - BorderSpacing.Around = 6 - TabOrder = 0 - Text = 'VariableEdit' - end - object ButtonPanel: TButtonPanel - Left = 6 - Height = 34 - Top = 120 - Width = 388 - Align = alTop - TabOrder = 2 - ShowButtons = [pbOK, pbCancel] - ShowBevel = False - end -end diff -Nru lazarus-1.4.4+dfsg/ide/sysvaruseroverridedlg.pas lazarus-1.6+dfsg/ide/sysvaruseroverridedlg.pas --- lazarus-1.4.4+dfsg/ide/sysvaruseroverridedlg.pas 2014-06-15 11:52:15.000000000 +0000 +++ lazarus-1.6+dfsg/ide/sysvaruseroverridedlg.pas 2015-10-18 15:20:19.000000000 +0000 @@ -36,76 +36,36 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - Classes, SysUtils, Controls, Forms, Buttons, StdCtrls, Dialogs, - LazarusIDEStrConsts, ButtonPanel, IDEDialogs; + Classes, SysUtils, Controls, Forms, Dialogs, + LazarusIDEStrConsts, IDEDialogs; -type - { TSysVarUserOverrideDialog } - TSysVarUserOverrideDialog = class(TForm) - ButtonPanel: TButtonPanel; - VariableLabel: TLabel; - VariableEdit: TEdit; - ValueLabel: TLabel; - ValueEdit: TEdit; - procedure FormCreate(Sender: TObject); - procedure OkButtonClick(Sender: TObject); - private - public - constructor Create(TheOwner: TComponent); override; - end; - -function ShowSysVarUserOverrideDialog(var Variable, Value: string): TModalResult; +function ShowSysVarUserOverrideDialog(var AName, AValue: string): TModalResult; implementation -{$R *.lfm} - -function ShowSysVarUserOverrideDialog(var Variable, Value: string): TModalResult; -var SysVarUserOverrideDialog: TSysVarUserOverrideDialog; -begin - SysVarUserOverrideDialog:=TSysVarUserOverrideDialog.Create(nil); - with SysVarUserOverrideDialog do begin - VariableEdit.Text:=Variable; - ValueEdit.Text:=Value; - if Variable='' - then ActiveControl := VariableEdit; - Result:=ShowModal; - if (Result=mrOk) then begin - Variable:=Trim(VariableEdit.Text); - Value:=ValueEdit.Text; - end; - Free; - end; -end; - -{ TSysVarUserOverrideDialog } - -procedure TSysVarUserOverrideDialog.OkButtonClick(Sender: TObject); -var v: string; -begin - v:=Trim(VariableEdit.Text); - if not IsValidIdent(v) then begin - if IDEMessageDialog(lisSVUOInvalidVariableName, - Format(lisSVUOisNotAValidIdentifier, [v]), - mtWarning,[mbCancel,mbIgnore])=mrCancel - then ModalResult := mrNone; //cancel close - end; -end; - -procedure TSysVarUserOverrideDialog.FormCreate(Sender: TObject); +function ShowSysVarUserOverrideDialog(var AName, AValue: string): TModalResult; +var + ok: boolean; + Vals: array of string; begin - //XXX: ButtonPanel's button event can't be assigned from OI - ButtonPanel.OKButton.OnClick:=@OKButtonClick; -end; - -constructor TSysVarUserOverrideDialog.Create(TheOwner: TComponent); -begin - inherited Create(TheOwner); - - Caption:=lisSVUOOverrideSystemVariable; - - VariableLabel.Caption:=lisVariable; - ValueLabel.Caption:=lisValue; + SetLength(Vals, 2); + Vals[0]:= AName; + Vals[1]:= AValue; + + repeat + ok:= InputQuery(lisSVUOOverrideSystemVariable, + [lisVariable, lisValue], Vals); + if not ok then exit(mrCancel); + + AName:= Trim(Vals[0]); + AValue:= Vals[1]; + if IsValidIdent(AName) then + exit(mrOk) + else + if IDEMessageDialog(lisSVUOInvalidVariableName, + Format(lisSVUOisNotAValidIdentifier, [AName]), + mtWarning, [mbCancel, mbIgnore])=mrIgnore then exit(mrOk); + until false; end; end. diff -Nru lazarus-1.4.4+dfsg/ide/toolbarconfig.lfm lazarus-1.6+dfsg/ide/toolbarconfig.lfm --- lazarus-1.4.4+dfsg/ide/toolbarconfig.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/toolbarconfig.lfm 2015-10-06 15:45:49.000000000 +0000 @@ -0,0 +1,227 @@ +object ToolBarConfig: TToolBarConfig + Left = 583 + Height = 457 + Top = 263 + Width = 696 + Caption = 'ToolBarConfig' + ClientHeight = 457 + ClientWidth = 696 + Constraints.MinHeight = 350 + Constraints.MinWidth = 500 + OnCreate = FormCreate + OnDestroy = FormDestroy + Position = poScreenCenter + LCLVersion = '1.5' + object lblMenuTree: TLabel + AnchorSideLeft.Control = TV + AnchorSideLeft.Side = asrCenter + Left = 145 + Height = 17 + Top = 14 + Width = 83 + Caption = 'lblMenuTree' + ParentColor = False + end + object lblToolbar: TLabel + AnchorSideLeft.Control = lvToolbar + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = lblMenuTree + Left = 507 + Height = 17 + Top = 14 + Width = 69 + Caption = 'lblToolbar' + ParentColor = False + end + object btnRemove: TSpeedButton + AnchorSideLeft.Control = btnAdd + AnchorSideTop.Control = btnAdd + AnchorSideTop.Side = asrBottom + Left = 375 + Height = 26 + Top = 122 + Width = 22 + BorderSpacing.Top = 1 + Enabled = False + OnClick = btnRemoveClick + ShowHint = True + ParentShowHint = False + end + object btnAdd: TSpeedButton + AnchorSideLeft.Control = Splitter1 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = TV + Left = 375 + Height = 26 + Top = 95 + Width = 22 + BorderSpacing.Left = 6 + BorderSpacing.Top = 25 + Enabled = False + OnClick = btnAddClick + ShowHint = True + ParentShowHint = False + end + object btnMoveUp: TSpeedButton + AnchorSideLeft.Control = btnRemove + AnchorSideTop.Control = btnRemove + AnchorSideTop.Side = asrBottom + Left = 375 + Height = 26 + Top = 173 + Width = 22 + BorderSpacing.Top = 25 + Enabled = False + OnClick = btnMoveUpClick + ShowHint = True + ParentShowHint = False + end + object btnMoveDown: TSpeedButton + AnchorSideLeft.Control = btnMoveUp + AnchorSideTop.Control = btnMoveUp + AnchorSideTop.Side = asrBottom + Left = 375 + Height = 26 + Top = 200 + Width = 22 + BorderSpacing.Top = 1 + Enabled = False + OnClick = btnMoveDownClick + ShowHint = True + ParentShowHint = False + end + object TV: TTreeView + AnchorSideLeft.Control = FilterEdit + AnchorSideTop.Control = FilterEdit + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Splitter1 + Left = 16 + Height = 339 + Top = 70 + Width = 341 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Top = 6 + BorderSpacing.Right = 3 + BorderSpacing.Bottom = 6 + ReadOnly = True + ScrollBars = ssAutoBoth + TabOrder = 1 + OnSelectionChanged = TVSelectionChanged + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips] + end + object FilterEdit: TTreeFilterEdit + AnchorSideTop.Side = asrBottom + Left = 16 + Height = 27 + Top = 37 + Width = 192 + UseFormActivate = True + ButtonWidth = 23 + NumGlyphs = 1 + BorderSpacing.Top = 6 + MaxLength = 0 + ParentFont = False + TabOrder = 0 + FilteredTreeview = TV + ExpandAllInitially = True + end + object Splitter1: TSplitter + AnchorSideLeft.Control = TV + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = TV + AnchorSideBottom.Control = TV + AnchorSideBottom.Side = asrBottom + Left = 360 + Height = 339 + Top = 70 + Width = 9 + Align = alNone + Anchors = [akTop, akBottom] + end + object lvToolbar: TListView + AnchorSideLeft.Control = btnAdd + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = TV + Left = 403 + Height = 339 + Top = 70 + Width = 277 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Left = 6 + BorderSpacing.Bottom = 37 + Columns = < + item + AutoSize = True + Caption = 'Name' + Width = 275 + end> + HideSelection = False + ReadOnly = True + ScrollBars = ssAutoBoth + ShowColumnHeaders = False + TabOrder = 3 + ViewStyle = vsReport + OnDrawItem = lvToolbarDrawItem + OnSelectItem = lvToolbarSelectItem + end + object sbAddDivider: TSpeedButton + AnchorSideLeft.Control = btnAdd + AnchorSideTop.Control = btnMoveDown + AnchorSideTop.Side = asrBottom + Left = 375 + Height = 26 + Top = 352 + Width = 22 + Anchors = [akLeft, akBottom] + BorderSpacing.Top = 50 + OnClick = btnAddDividerClick + ShowHint = True + ParentShowHint = False + end + object lbSelect: TLabel + AnchorSideLeft.Control = lvToolbar + AnchorSideTop.Control = FilterEdit + AnchorSideRight.Control = lvToolbar + AnchorSideRight.Side = asrBottom + Left = 626 + Height = 17 + Top = 37 + Width = 54 + Anchors = [akTop, akRight] + Caption = 'lbSelect' + ParentColor = False + Visible = False + end + object btnClear: TSpeedButton + AnchorSideLeft.Control = btnAdd + AnchorSideBottom.Control = lvToolbar + AnchorSideBottom.Side = asrBottom + Left = 375 + Height = 26 + Top = 383 + Width = 22 + Anchors = [akLeft, akBottom] + Enabled = False + OnClick = btnClearClick + ShowHint = True + ParentShowHint = False + end + object pnlButtons: TButtonPanel + Left = 6 + Height = 37 + Top = 414 + Width = 684 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = btnHelpClick + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 4 + ShowButtons = [pbOK, pbCancel, pbHelp] + ShowGlyphs = [pbOK, pbCancel, pbHelp] + end +end diff -Nru lazarus-1.4.4+dfsg/ide/toolbarconfig.pas lazarus-1.6+dfsg/ide/toolbarconfig.pas --- lazarus-1.4.4+dfsg/ide/toolbarconfig.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/ide/toolbarconfig.pas 2015-10-15 20:55:07.000000000 +0000 @@ -0,0 +1,802 @@ +{ + Copyright (C) 2007 Graeme Geldenhuys (graemeg@gmail.com) + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License + for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +} + +unit ToolbarConfig; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, + // LCL and LazControls + LCLProc, Forms, Graphics, ExtCtrls, Buttons, StdCtrls, + Controls, ComCtrls, Menus, ButtonPanel, TreeFilterEdit, LclIntf, + // LazUtils + Laz2_XMLCfg, + // IdeIntf + IDECommands, ToolBarIntf, IDEImagesIntf, + // IDE + LazarusIDEStrConsts; + +const + IDEToolBarConfigVersion = 1; + // 1 added file version in config + +type + { TLvItem } + TLvItem = class (TObject) + Item: TIDEButtonCommand; + LvIndex: Integer; + end; + + { TToolBarConfig } + + TToolBarConfig = class(TForm) + btnHelp: TBitBtn; + btnAdd: TSpeedButton; + btnMoveDown: TSpeedButton; + btnMoveUp: TSpeedButton; + btnOK: TButton; + btnCancel: TButton; + btnRemove: TSpeedButton; + lbSelect: TLabel; + lblMenuTree: TLabel; + lblToolbar: TLabel; + lvToolbar: TListView; + miAll: TMenuItem; + miDesign: TMenuItem; + miDebug: TMenuItem; + miHTML: TMenuItem; + miCustom: TMenuItem; + pnlButtons: TButtonPanel; + FilterEdit: TTreeFilterEdit; + sbAddDivider: TSpeedButton; + btnClear: TSpeedButton; + Splitter1: TSplitter; + TV: TTreeView; + procedure btnClearClick(Sender: TObject); + procedure btnHelpClick(Sender: TObject); + procedure btnShowClick(Sender: TObject); + procedure btnHideClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure lbToolbarSelectionChange(Sender: TObject); + procedure btnAddClick(Sender: TObject); + procedure btnAddDividerClick(Sender: TObject); + procedure btnMoveDownClick(Sender: TObject); + procedure btnMoveUpClick(Sender: TObject); + procedure btnRemoveClick(Sender: TObject); + procedure lvToolbarDrawItem(Sender: TCustomListView; AItem: TListItem; + ARect: TRect; {%H-}AState: TOwnerDrawState); + procedure lvToolbarSelectItem(Sender: TObject; {%H-}Item: TListItem; + {%H-}Selected: Boolean); + procedure TVSelectionChanged(Sender: TObject); + private + Image: TBitMap; + defImageIndex: integer; + divImageIndex: Integer; + // Main list related entries + MainList: TStringList; + function GetMainListIndex(Item: TListItem): Integer; + procedure InsertMainListItem (Item,NextItem: TListItem); + procedure RemoveMainListItem (Item:TListItem); + procedure ExchangeMainListItem (Item1,Item2: TListItem); + procedure SetupCaptions; + procedure LoadCategories; + procedure AddMenuItem(ParentNode: TTreeNode; Item: TIDEButtonCommand); + function RootNodeCaption(Item: TIDEButtonCommand): string; + procedure AddListItem(Item: TIDEButtonCommand); + procedure AddToolBarItem(Item: TIDEButtonCommand); + procedure AddDivider; + procedure FillToolBar; + public + procedure LoadSettings(SL: TStringList); + procedure SaveSettings(SL: TStringList); + end; + + { TIDEToolBarOptionsBase } + + TIDEToolBarOptionsBase = class + private + FButtonNames: TStringList; + protected + procedure LoadButtonNames(XMLConfig: TXMLConfig; SubPath: String); + procedure SaveButtonNames(XMLConfig: TXMLConfig; SubPath: String); + public + constructor Create; + destructor Destroy; override; + procedure Clear; + function Equals(Opts: TIDEToolBarOptionsBase): boolean; overload; + procedure Assign(Source: TIDEToolBarOptionsBase); + //procedure Load(XMLConfig: TXMLConfig; Path: String); + //procedure Save(XMLConfig: TXMLConfig; Path: String); + published + property ButtonNames: TStringList read FButtonNames; // write FButtonNames; + end; + + { TIDEToolbarBase } + + TIDEToolbarBase = class(TComponent) + private + protected + FToolBar: TToolBar; + procedure AddButton(ACommand: TIDEButtonCommand); + procedure AddDivider; + procedure CopyFromOptions(Options: TIDEToolBarOptionsBase); + procedure PositionAtEnd(AToolBar: TToolBar; AButton: TToolButton); + procedure PostCopyOptions; virtual; + public + //constructor Create(AOwner: TComponent); override; + //destructor Destroy; override; + property ToolBar: TToolBar read FToolBar; + end; + +const + cIDEToolbarDivider = '---------------'; + +function ShowToolBarConfig(aNames: TStringList): TModalResult; + + +implementation + +{$R *.lfm} + +function ShowToolBarConfig(aNames: TStringList): TModalResult; +var + Conf: TToolBarConfig; +begin + Conf := TToolBarConfig.Create(Nil); + try + if Assigned(aNames) then + Conf.LoadSettings(aNames); + Result := Conf.ShowModal; + if (Result = mrOK) and Assigned(aNames) then + Conf.SaveSettings(aNames); + finally + Conf.Free; + end; +end; + +{ TToolBarConfig } + +procedure TToolBarConfig.FormCreate(Sender: TObject); +begin + inherited; + //we have to ownerdraw the listview on qt + {$IFDEF LCLQT} + lvToolbar.OwnerDraw := True; + {$ENDIF} + pnlButtons.Color := clBtnFace; + // load button images + btnAdd.LoadGlyphFromResourceName(HInstance, 'arrow_right'); + btnRemove.LoadGlyphFromResourceName(HInstance, 'arrow_left'); + btnMoveUp.LoadGlyphFromResourceName(HInstance, 'arrow_up'); + btnMoveDown.LoadGlyphFromResourceName(HInstance, 'arrow_down'); + btnClear.LoadGlyphFromResourceName(HINSTANCE,'menu_close'); + sbAddDivider.LoadGlyphFromResourceName(HINSTANCE, 'menu_divider16'); + + btnAdd.Hint := lisCoolBarAddSelected; + btnRemove.Hint := lisCoolBarRemoveSelected; + btnMoveUp.Hint := lisCoolBarMoveSelectedUp; + btnMoveDown.Hint := lisCoolBarMoveSelectedDown; + sbAddDivider.Hint:= lisCoolBarAddDivider; + btnClear.Hint := lisCoolBarClearSelection; + + TV.Images := IDEImages.Images_16; + lvToolbar.SmallImages := IDEImages.Images_16; + // default image to be used when none is available + defImageIndex := IDEImages.LoadImage(16, 'execute'); + // Image for divider + divImageIndex := IDEImages.Images_16.Add(sbAddDivider.Glyph,nil); + + MainList := TStringList.Create; + MainList.OwnsObjects:= True; // it should be the default, but just to make sure... + Image := TBitmap.Create; + SetupCaptions; + LoadCategories; +end; + +procedure TToolBarConfig.FormDestroy(Sender: TObject); +begin + MainList.Free; + Image.Free; +end; + +procedure TToolBarConfig.btnClearClick(Sender: TObject); +begin + lvToolbar.Selected := nil; +end; + +procedure TToolBarConfig.btnHelpClick(Sender: TObject); +begin + OpenUrl('http://wiki.freepascal.org/IDE_Window:_Toolbar_Config'); +end; + +procedure TToolBarConfig.btnShowClick(Sender: TObject); +begin + lvToolbar.Columns[1].Visible:= true; +end; + +procedure TToolBarConfig.btnHideClick(Sender: TObject); +begin + lvToolbar.Columns[1].Visible:= false; +end; + +procedure TToolBarConfig.lbToolbarSelectionChange(Sender: TObject); +var + i: Integer; +begin + i := lvToolbar.ItemIndex; + btnRemove.Enabled := i > -1; + btnMoveUp.Enabled := i > 0; + btnMoveDown.Enabled := (i > -1) and (i < lvToolbar.Items.Count-1); +end; + +procedure TToolBarConfig.TVSelectionChanged(Sender: TObject); +var + n: TTreeNode; +begin + n := TV.Selected; + btnAdd.Enabled := (Assigned(n) and Assigned(n.Data)); +end; + +function TToolBarConfig.GetMainListIndex(Item: TListItem): Integer; +var + I: Integer; +begin + for I:= 0 to MainList.Count -1 do + if TLvItem(MainList.Objects[I]).LvIndex = Item.Index then + Exit(I); + Result := -1; +end; + +procedure TToolBarConfig.InsertMainListItem(Item,NextItem: TListItem); +var + I,J: Integer; + aMainListItem: TLvItem; +begin + aMainListItem := TLvItem.Create; + aMainListItem.Item := TIDEButtonCommand(Item.Data); + aMainListItem.LvIndex := Item.Index; + if NextItem = Nil then + MainList.AddObject(Item.Caption,aMainListItem) + else begin + I := GetMainListIndex(NextItem); + MainList.InsertObject(I,Item.Caption,aMainListItem); + for J := I+1 to MainList.Count -1 do begin + aMainListItem := TLvItem(MainList.Objects[J]); + aMainListItem.LvIndex:= aMainListItem.LvIndex +1; + end; + end; +end; + +procedure TToolBarConfig.RemoveMainListItem(Item: TListItem); +var + I,J: Integer; + aMainListItem: TLvItem; +begin + I := GetMainListIndex(Item); + if I > -1 then begin + MainList.Delete(I); + for J := I to MainList.Count -1 do begin + aMainListItem := TLvItem(MainList.Objects[J]); + aMainListItem.LvIndex:= aMainListItem.LvIndex -1; + end; + end; +end; + +procedure TToolBarConfig.ExchangeMainListItem(Item1, Item2: TListItem); +var + MainIndex1,MainIndex2: Integer; + aMainListItem: TLvItem; +begin + MainIndex1:= GetMainListIndex(Item1); + MainIndex2:= GetMainListIndex(Item2); + MainList.Exchange(MainIndex1,MainIndex2); + aMainListItem := TLvItem(MainList.Objects[MainIndex1]); + aMainListItem.LvIndex:= Item1.Index; + aMainListItem := TLvItem(MainList.Objects[MainIndex2]); + aMainListItem.LvIndex:= Item2.Index; +end; + +procedure TToolBarConfig.btnAddClick(Sender: TObject); +var + n, nNext: TTreeNode; + ACaption: string; + lvItem: TListItem; + anIndex: Integer; +begin + n := TV.Selected; + if (Assigned(n) and Assigned(n.Data)) then + begin + btnAdd.Enabled := False; + anIndex:= lvToolbar.ItemIndex; + ACaption:= TIDEButtonCommand(n.Data).Caption; + DeleteAmpersands(ACaption); + if anIndex > -1 then + lvItem := lvToolbar.Items.Insert(lvToolbar.ItemIndex) + else + lvItem := lvToolbar.Items.Add; + lvItem.Caption := ACaption; + lvItem.Data := n.Data; + {$IF not DEFINED(LCLQt)} + if n.ImageIndex > -1 then + lvItem.ImageIndex := n.ImageIndex + else + lvItem.ImageIndex := defImageIndex; + {$ENDIF} + //lvItem.SubItems.Add(IntToStr(CurrProfile)); + if anIndex > -1 then begin + // clear previous selection to avoid double sel in Qt + lvToolbar.Selected := nil; + lvToolbar.ItemIndex := lvItem.Index; + InsertMainListItem(lvItem,lvToolbar.Items[anIndex]); + end + else begin + // lvToolbar.ItemIndex := lvToolbar.Items.Count-1; + InsertMainListItem(lvItem,Nil); + end; + lbToolbarSelectionChange(lblToolbar); + nNext := TV.Selected.GetNext; + TV.Selected.Visible:= False; + if nNext <> nil then + TV.Selected := nNext; + end; +end; + +procedure TToolBarConfig.btnRemoveClick(Sender: TObject); +Var + mi: TIDEButtonCommand; + n: TTreeNode; + I: Integer; + lvItem: TListItem; +begin + I := lvToolbar.ItemIndex; + if I > -1 then begin + lvItem := lvToolbar.Items[I]; + mi := TIDEButtonCommand(lvItem.Data); + RemoveMainListItem(lvItem); + lvToolbar.Items.Delete(lvToolbar.ItemIndex); + if I < lvToolbar.Items.Count then + lvToolbar.Selected := lvToolbar.Items[I]; // Qt Workaround + lbToolbarSelectionChange(lvToolbar); + if assigned(mi) then begin + n:= TV.Items.FindNodeWithData(mi); + if n<>nil then + n.Visible:= True; + end; + TVSelectionChanged(TV); + end; +end; + +procedure TToolBarConfig.lvToolbarDrawItem(Sender: TCustomListView; + AItem: TListItem; ARect: TRect; AState: TOwnerDrawState); +var + ImageIndex: integer; +begin + with Sender.Canvas do + begin + if AItem.Selected then + begin + Brush.Color := clHighlight; + Font.Color := clHighlightText; + end + else begin + Brush.Color := clDefault; + Font.Color := clDefault; + end; + FillRect(ARect); + + if AItem.Caption = cIDEToolbarDivider then + ImageIndex := divImageIndex + else if Assigned(AItem.Data) and (TIDEButtonCommand(AItem.Data).ImageIndex > -1) then + ImageIndex := TIDEButtonCommand(AItem.Data).ImageIndex + else + ImageIndex := defImageIndex; + Image.Clear; + lvToolBar.SmallImages.GetBitmap(ImageIndex, Image); + Draw(ARect.Left + 2, ARect.Top + 2, Image); + + TextOut(ARect.Left + 21, ARect.Top + 2, AItem.Caption); + end; +end; + +procedure TToolBarConfig.lvToolbarSelectItem(Sender: TObject; + Item: TListItem; Selected: Boolean); +begin + lbToolbarSelectionChange(Sender); + lbSelect.Caption:= IntToStr(lvToolbar.ItemIndex)+ ' / ' + IntToStr(lvToolbar.Items.Count); + btnClear.Enabled:= lvToolbar.Selected <> nil; + btnRemove.Enabled:= btnClear.Enabled; +end; + + +procedure TToolBarConfig.btnAddDividerClick(Sender: TObject); +var + lvItem: TListItem; + anIndex: Integer; +begin + anIndex := lvToolbar.ItemIndex; + if anIndex > -1 then + lvItem := lvToolbar.Items.Insert(anIndex) + else + lvItem := lvToolbar.Items.Add; + lvItem.Selected := False; + lvItem.Caption:= cIDEToolbarDivider; + {$IF not DEFINED(LCLQt)} + lvItem.ImageIndex:= divImageIndex; + {$ENDIF} + //lvItem.SubItems.Add(IntToStr(CurrProfile)); + if lvToolbar.ItemIndex > -1 then + InsertMainListItem(lvItem,lvToolbar.Items[anIndex]) + else + InsertMainListItem(lvItem,Nil); +end; + +procedure TToolBarConfig.btnMoveDownClick(Sender: TObject); +var + Index1,Index2: Integer; +begin + if lvToolbar.ItemIndex = -1 then + Exit; + if lvToolbar.ItemIndex < lvToolbar.Items.Count - 1 then begin + Index1 := lvToolbar.ItemIndex; + Index2 := Index1+1; + lvToolbar.Items.Exchange(Index1,Index2); + ExchangeMainListItem(lvToolbar.Items[Index1],lvToolbar.Items[Index2]); + lvToolbar.Items[Index1].Selected := False; + lvToolbar.Items[Index2].Selected := False; + lvToolbar.Selected := nil; + lvToolbar.ItemIndex:= Index2; + end; +end; + +procedure TToolBarConfig.btnMoveUpClick(Sender: TObject); +var + Index1,Index2: Integer; +begin + if lvToolbar.ItemIndex = -1 then + exit; + if lvToolbar.ItemIndex > 0 then begin + Index1:= lvToolbar.ItemIndex; + Index2:= Index1-1; + lvToolbar.Items.Exchange(Index1, Index2); + ExchangeMainListItem(lvToolbar.Items[Index1],lvToolbar.Items[Index2]); + lvToolbar.Items[Index1].Selected := False; + lvToolbar.Items[Index2].Selected := False; + lvToolbar.Selected := nil; + lvToolbar.ItemIndex:= Index2; + end; +end; + +procedure TToolBarConfig.SetupCaptions; +begin + Caption := lisToolbarConfiguration; + lblMenuTree.Caption := lisCoolbarAvailableCommands; + lblToolbar.Caption := lisCoolbarToolbarCommands; +end; + +procedure TToolBarConfig.LoadCategories; +var + i, l: integer; + xCategory: TIDEToolButtonCategory; + xCaption: string; + n: TTreeNode; +begin + TV.Items.BeginUpdate; + try + TV.Items.Clear; + for i := 0 to IDEToolButtonCategories.Count-1 do + begin + xCategory := IDEToolButtonCategories[i]; + xCaption := xCategory.Description; + DeleteAmpersands(xCaption); + n := TV.Items.AddChild(nil, Format('%s', [xCaption])); + for l := 0 to xCategory.ButtonCount-1 do + AddMenuItem(n, xCategory.Buttons[l]); + end; + finally + TV.Items.EndUpdate; + end; +end; + +procedure TToolBarConfig.AddMenuItem(ParentNode: TTreeNode; + Item: TIDEButtonCommand); +var + n: TTreeNode; +begin + if Item.Caption <> '-' then begin // workaround for HTML Editor dividers + n := TV.Items.AddChild(ParentNode, Format('%s', [Item.GetCaptionWithShortCut])); + n.ImageIndex := Item.ImageIndex; + n.SelectedIndex := Item.ImageIndex; + n.Data := Item; + end; +end; + +function TToolBarConfig.RootNodeCaption(Item: TIDEButtonCommand): string; +var + AName: string; +begin + AName:= Item.Caption; + case AName of + 'IDEMainMenu': Result := lisCoolbarIDEMainMenu; // mnuMain + 'SourceTab': Result := lisCoolbarSourceTab; // SourceTabMenuRootName + 'SourceEditor': Result := lisCoolbarSourceEditor; // SourceEditorMenuRootName + 'Messages': Result := lisCoolbarMessages; // MessagesMenuRootName + 'Code Explorer': Result := lisCoolbarCodeExplorer; // CodeExplorerMenuRootName + 'CodeTemplates': Result := lisCoolbarCodeTemplates; // CodeTemplatesMenuRootName + 'Designer': Result := lisCoolbarDesigner; // DesignerMenuRootName + 'PackageEditor': Result := lisCoolbarPackageEditor; // PackageEditorMenuRootName + 'PackageEditorFiles': Result := lisCoolbarPackageEditorFiles // PackageEditorMenuFilesRootName + else Result := Item.Caption; + end; +end; + +procedure TToolBarConfig.AddListItem(Item: TIDEButtonCommand); +var + aListItem: TLvItem; +begin + aListItem := TLvItem.Create; + if assigned(Item) then begin + aListItem.Item := Item; + MainList.AddObject(Item.Caption,aListItem); + end + else begin + aListItem.Item := nil; + MainList.AddObject(cIDEToolbarDivider,aListItem); + end; +end; + +procedure TToolBarConfig.AddToolBarItem(Item: TIDEButtonCommand); +Var + n: TTreeNode; + lvItem: TListItem; +begin + if Assigned(Item) then begin + lvItem := lvToolbar.Items.Add; + lvItem.Caption:= Item.GetCaptionWithShortCut; + lvItem.Data:= Item; + {$IF not DEFINED(LCLQt)} + if Item.ImageIndex > -1 then + lvItem.ImageIndex:= Item.ImageIndex + else + lvItem.ImageIndex:= defImageIndex; + {$ENDIF} + // lvItem.SubItems.Add(IntToStr(PMask)); + n:= TV.Items.FindNodeWithData(Item); + if n<>nil then + n.Visible:= False; + end; +end; + +procedure TToolBarConfig.AddDivider; +var + lvItem: TListItem; +begin + lvItem := lvToolbar.Items.Add; + lvItem.Caption:= cIDEToolbarDivider; + {$IF not DEFINED(LCLQt)} + lvItem.ImageIndex:= divImageIndex; + {$ENDIF} + // lvItem.SubItems.Add(IntToStr(PMask)); +end; + +procedure TToolBarConfig.FillToolBar; +var + I: Integer; + aListItem: TLvItem; + aCaption: string; + mi: TIDEButtonCommand; +begin + for I:= 0 to MainList.Count -1 do + begin + aListItem := TLvItem(MainList.Objects[I]); + mi := aListItem.Item; + aCaption := MainList.Strings[I]; + if aCaption = cIDEToolbarDivider then + AddDivider + else + AddToolBarItem(mi); + aListItem.LvIndex:= lvToolbar.Items.Count - 1; + end; +end; + +procedure TToolBarConfig.LoadSettings(SL: TStringList); +var + I: Integer; + Value: string; + MI: TIDEButtonCommand; +begin + for I := 0 to SL.Count - 1 do + begin + Value := SL[I]; + if Value = '' then Continue; + if Value = cIDEToolbarDivider then + MI := nil + else + begin + MI := IDEToolButtonCategories.FindItemByMenuPathOrName(Value); + SL[I] := Value; + end; + AddListItem(MI); + end; + FillToolBar; +end; + +procedure TToolBarConfig.SaveSettings(SL: TStringList); +var + lvItem: TLvItem; + I: Integer; +begin + SL.Clear; + for i := 0 to MainList.Count - 1 do + begin + lvItem := TLvItem(MainList.Objects[I]); + if MainList[I] = cIDEToolbarDivider then + SL.Add(cIDEToolbarDivider) + else + SL.Add(lvItem.Item.Name); + end; +end; + +{ TIDEToolBarOptionsBase } + +constructor TIDEToolBarOptionsBase.Create; +begin + FButtonNames := TStringList.Create; +end; + +destructor TIDEToolBarOptionsBase.Destroy; +begin + FButtonNames.Free; + inherited Destroy; +end; + +procedure TIDEToolBarOptionsBase.Clear; +begin + FButtonNames.Clear; +end; + +function TIDEToolBarOptionsBase.Equals(Opts: TIDEToolBarOptionsBase): boolean; +begin + Result := FButtonNames.Equals(Opts.FButtonNames); +end; + +procedure TIDEToolBarOptionsBase.Assign(Source: TIDEToolBarOptionsBase); +begin + FButtonNames.Assign(Source.FButtonNames); +end; + +procedure TIDEToolBarOptionsBase.LoadButtonNames(XMLConfig: TXMLConfig; SubPath: String); +var + ButtonCount: Integer; + ButtonName: string; + I, FileVersion: Integer; +begin + FileVersion := XMLConfig.GetValue(SubPath + 'Version', 0); + ButtonCount := XMLConfig.GetValue(SubPath + 'Count', 0); + if (FileVersion < 1) and (ButtonCount = 0) then // Old format + ButtonCount := XMLConfig.GetValue(SubPath + 'ButtonCount/Value', 0); + for I := 1 to ButtonCount do + begin + ButtonName := XMLConfig.GetValue(SubPath + 'Button' + IntToStr(I) + '/Name', ''); + if (FileVersion < 1) and (ButtonName = '') then // Old format + ButtonName := XMLConfig.GetValue(SubPath + 'Buttons/Name' + IntToStr(I) + '/Value', ''); + if ButtonName <> '' then + ButtonNames.Add(ButtonName); + end; +end; + +procedure TIDEToolBarOptionsBase.SaveButtonNames(XMLConfig: TXMLConfig; SubPath: String); +var + I: Integer; +begin + XMLConfig.SetValue(SubPath + 'Version', IDEToolBarConfigVersion); + XMLConfig.SetDeleteValue(SubPath + 'Count', ButtonNames.Count, 0); + for I := 0 to ButtonNames.Count-1 do + XMLConfig.SetDeleteValue(SubPath + 'Button' + IntToStr(I+1) + '/Name', ButtonNames[I], ''); +end; + +{ TIDEToolbarBase } +{ For future needs ... +constructor TIDEToolbarBase.Create(AOwner: TComponent); +begin + inherited Create(AOwner); +end; + +destructor TIDEToolbarBase.Destroy; +begin + inherited Destroy; +end; +} +procedure TIDEToolbarBase.AddButton(ACommand: TIDEButtonCommand); +var + B: TIDEToolButton; +begin + B := ACommand.ToolButtonClass.Create(FToolBar); + B.Hint := ACommand.GetHintOrCaptionWithShortCut; + B.Enabled := ACommand.Enabled; + // If we have a image, use it. Otherwise supply a default. + if ACommand.ImageIndex <> -1 then + B.ImageIndex := ACommand.ImageIndex + else + B.ImageIndex := IDEImages.LoadImage(16, 'execute'); + B.Style := tbsButton; + B.Item := ACommand; + PositionAtEnd(FToolBar, B); + ACommand.ToolButtonAdded(B); +end; + +procedure TIDEToolbarBase.AddDivider; +var + B: TToolButton; +begin + B := TToolButton.Create(FToolBar); + B.Style := tbsDivider; + PositionAtEnd(FToolBar, B); +end; + +procedure TIDEToolbarBase.CopyFromOptions(Options: TIDEToolBarOptionsBase); +var + mi: TIDEButtonCommand; + ButtonName: string; + i: Integer; +begin + FToolBar.BeginUpdate; + try + for i := 0 to Options.ButtonNames.Count-1 do + begin + ButtonName := Options.ButtonNames[i]; + if ButtonName = cIDEToolbarDivider then + AddDivider + else + begin + mi := IDEToolButtonCategories.FindItemByMenuPathOrName(ButtonName); + Options.ButtonNames[i] := ButtonName; + if Assigned(mi) then + AddButton(mi); + end; + end; + PostCopyOptions; + finally + FToolBar.EndUpdate; + end; +end; + +procedure TIDEToolbarBase.PositionAtEnd(AToolBar: TToolBar; AButton: TToolButton); +// position the button next to the last button +var + SiblingButton: TToolButton; +begin + if AToolBar.ButtonCount > 0 then + begin + SiblingButton := AToolBar.Buttons[AToolBar.ButtonCount-1]; + AButton.SetBounds(SiblingButton.Left + SiblingButton.Width, + SiblingButton.Top, AButton.Width, AButton.Height); + end; + AButton.Parent := AToolBar; +end; + +procedure TIDEToolbarBase.PostCopyOptions; +begin + // Can be overridden. +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/ide/transfermacros.pp lazarus-1.6+dfsg/ide/transfermacros.pp --- lazarus-1.4.4+dfsg/ide/transfermacros.pp 2014-02-16 01:34:41.000000000 +0000 +++ lazarus-1.6+dfsg/ide/transfermacros.pp 2015-07-07 11:43:38.000000000 +0000 @@ -38,7 +38,7 @@ interface -uses Classes, SysUtils, LCLProc, FileUtil, FileProcs, LazarusIDEStrConsts, +uses Classes, SysUtils, LazUTF8, FileProcs, LazFileUtils, LazarusIDEStrConsts, MacroIntf, MacroDefIntf; type diff -Nru lazarus-1.4.4+dfsg/ide/unitdependencies.lfm lazarus-1.6+dfsg/ide/unitdependencies.lfm --- lazarus-1.4.4+dfsg/ide/unitdependencies.lfm 2015-01-05 13:11:28.000000000 +0000 +++ lazarus-1.6+dfsg/ide/unitdependencies.lfm 2015-10-05 22:47:01.000000000 +0000 @@ -8,8 +8,8 @@ ClientWidth = 620 OnCreate = FormCreate OnDestroy = FormDestroy - Position = poScreenCenter - LCLVersion = '1.3' + OnShow = FormShow + LCLVersion = '1.5' object MainPageControl: TPageControl Left = 0 Height = 407 @@ -25,21 +25,22 @@ ClientWidth = 616 object ScopePanel: TPanel Left = 0 - Height = 59 + Height = 57 Top = 0 Width = 616 Align = alTop AutoSize = True - ClientHeight = 59 + BevelOuter = bvNone + ClientHeight = 57 ClientWidth = 616 TabOrder = 0 object SearchCustomFilesCheckBox: TCheckBox AnchorSideLeft.Control = ScopePanel AnchorSideTop.Control = SearchCustomFilesComboBox AnchorSideTop.Side = asrCenter - Left = 3 + Left = 2 Height = 24 - Top = 4 + Top = 3 Width = 182 BorderSpacing.Around = 2 Caption = 'SearchCustomFilesCheckBox' @@ -54,39 +55,39 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = ScopePanel AnchorSideRight.Side = asrBottom - Left = 562 + Left = 563 Height = 27 - Top = 3 + Top = 2 Width = 53 Anchors = [akTop, akRight] AutoSize = True Caption = 'Browse' OnClick = SearchCustomFilesBrowseButtonClick - TabOrder = 1 + TabOrder = 2 end object SearchCustomFilesComboBox: TComboBox AnchorSideLeft.Control = SearchCustomFilesCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = ScopePanel AnchorSideRight.Control = SearchCustomFilesBrowseButton - Left = 187 + Left = 186 Height = 27 - Top = 3 - Width = 373 + Top = 2 + Width = 375 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 2 ItemHeight = 0 OnChange = SearchCustomFilesComboBoxChange - TabOrder = 2 + TabOrder = 1 Text = 'SearchCustomFilesComboBox' end object SearchPkgsCheckBox: TCheckBox AnchorSideLeft.Control = ScopePanel AnchorSideTop.Control = SearchCustomFilesComboBox AnchorSideTop.Side = asrBottom - Left = 3 + Left = 2 Height = 24 - Top = 32 + Top = 31 Width = 142 BorderSpacing.Around = 2 Caption = 'SearchPkgsCheckBox' @@ -98,9 +99,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = SearchPkgsCheckBox AnchorSideTop.Side = asrCenter - Left = 162 + Left = 161 Height = 24 - Top = 32 + Top = 31 Width = 156 BorderSpacing.Left = 15 BorderSpacing.Around = 2 @@ -113,12 +114,12 @@ end object AllUnitsGroupBox: TGroupBox Left = 0 - Height = 319 - Top = 59 + Height = 321 + Top = 57 Width = 248 Align = alLeft Caption = 'AllUnitsGroupBox' - ClientHeight = 302 + ClientHeight = 304 ClientWidth = 244 TabOrder = 1 object AllUnitsShowGroupNodesSpeedButton: TSpeedButton @@ -164,10 +165,7 @@ Width = 198 Anchors = [akTop, akLeft, akRight] OnChange = AllUnitsFilterEditChange - OnEnter = AllUnitsFilterEditEnter - OnExit = AllUnitsFilterEditExit TabOrder = 0 - Text = 'AllUnitsFilterEdit' end object AllUnitsSearchNextSpeedButton: TSpeedButton AnchorSideTop.Control = AllUnitsSearchEdit @@ -175,7 +173,7 @@ AnchorSideRight.Control = AllUnitsSearchPrevSpeedButton Left = 198 Height = 22 - Top = 278 + Top = 280 Width = 23 Anchors = [akTop, akRight] OnClick = AllUnitsSearchNextSpeedButtonClick @@ -189,7 +187,7 @@ AnchorSideRight.Side = asrBottom Left = 221 Height = 22 - Top = 278 + Top = 280 Width = 23 Anchors = [akTop, akRight] OnClick = AllUnitsSearchPrevSpeedButtonClick @@ -204,7 +202,7 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = AllUnitsSearchEdit Left = 0 - Height = 252 + Height = 254 Top = 25 Width = 244 Anchors = [akTop, akLeft, akRight, akBottom] @@ -230,30 +228,27 @@ AnchorSideBottom.Side = asrBottom Left = 0 Height = 25 - Top = 277 + Top = 279 Width = 198 Anchors = [akLeft, akRight, akBottom] OnChange = AllUnitsSearchEditChange - OnEnter = AllUnitsSearchEditEnter - OnExit = AllUnitsSearchEditExit TabOrder = 2 - Text = 'AllUnitsSearchEdit' end end object UnitsSplitter: TSplitter Left = 248 - Height = 319 - Top = 59 + Height = 321 + Top = 57 Width = 5 end object SelectedUnitsGroupBox: TGroupBox Left = 253 - Height = 319 - Top = 59 + Height = 321 + Top = 57 Width = 363 Align = alClient Caption = 'SelectedUnitsGroupBox' - ClientHeight = 302 + ClientHeight = 304 ClientWidth = 359 TabOrder = 3 object SelUnitsSearchNextSpeedButton: TSpeedButton @@ -262,7 +257,7 @@ AnchorSideRight.Control = SelUnitsSearchPrevSpeedButton Left = 313 Height = 22 - Top = 278 + Top = 280 Width = 23 Anchors = [akTop, akRight] OnClick = SelUnitsSearchNextSpeedButtonClick @@ -276,7 +271,7 @@ AnchorSideRight.Side = asrBottom Left = 336 Height = 22 - Top = 278 + Top = 280 Width = 23 Anchors = [akTop, akRight] OnClick = SelUnitsSearchPrevSpeedButtonClick @@ -290,14 +285,11 @@ AnchorSideBottom.Side = asrBottom Left = 0 Height = 25 - Top = 277 + Top = 279 Width = 313 Anchors = [akLeft, akRight, akBottom] OnChange = SelUnitsSearchEditChange - OnEnter = SelUnitsSearchEditEnter - OnExit = SelUnitsSearchEditExit - TabOrder = 0 - Text = 'SelUnitsSearchEdit' + TabOrder = 1 end object SelUnitsTreeView: TTreeView AnchorSideLeft.Control = SelectedUnitsGroupBox @@ -306,7 +298,7 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = SelUnitsSearchEdit Left = 0 - Height = 277 + Height = 279 Top = 0 Width = 359 Anchors = [akTop, akLeft, akRight, akBottom] @@ -318,7 +310,7 @@ RightClickSelect = True ShowHint = True ShowRoot = False - TabOrder = 1 + TabOrder = 0 OnExpanding = SelUnitsTreeViewExpanding OnMouseDown = UnitsTreeViewMouseDown OnShowHint = UnitsTreeViewShowHint diff -Nru lazarus-1.4.4+dfsg/ide/unitdependencies.pas lazarus-1.6+dfsg/ide/unitdependencies.pas --- lazarus-1.4.4+dfsg/ide/unitdependencies.pas 2015-01-05 13:11:28.000000000 +0000 +++ lazarus-1.6+dfsg/ide/unitdependencies.pas 2015-10-05 22:47:01.000000000 +0000 @@ -35,14 +35,19 @@ interface uses - Classes, SysUtils, types, math, AVL_Tree, LazLogger, LazFileUtils, LazUTF8, - Forms, Controls, ExtCtrls, ComCtrls, StdCtrls, Buttons, Dialogs, Menus, - Clipbrd, LvlGraphCtrl, LazIDEIntf, ProjectIntf, IDEWindowIntf, PackageIntf, - SrcEditorIntf, IDEImagesIntf, IDECommands, IDEDialogs, IDEMsgIntf, TextTools, - IDEExternToolIntf, - CodeToolManager, DefineTemplates, CodeToolsStructs, - CTUnitGraph, CTUnitGroupGraph, FileProcs, CodeCache, LazarusIDEStrConsts, - UnusedUnitsDlg; + // RTL + FCL + LCL + Classes, SysUtils, types, math, AVL_Tree, + Forms, Controls, ExtCtrls, ComCtrls, StdCtrls, Buttons, Dialogs, Menus, Clipbrd, + // CodeTools + CodeToolManager, DefineTemplates, CodeToolsStructs, CTUnitGraph, CTUnitGroupGraph, + FileProcs, CodeCache, + // LazUtils + LazLogger, LazFileUtils, LazFileCache, LazUtilities, LazUTF8, LvlGraphCtrl, + // IDE interface + LazIDEIntf, ProjectIntf, IDEWindowIntf, PackageIntf, SrcEditorIntf, IDEImagesIntf, + IDEMsgIntf, IDEExternToolIntf, IDECommands, IDEDialogs, + // IDE + IDEOptionDefs, LazarusIDEStrConsts, UnusedUnitsDlg; const GroupPrefixProject = '-Project-'; @@ -176,15 +181,12 @@ UnitsTabSheet: TTabSheet; UnitsTVPopupMenu: TPopupMenu; procedure AllUnitsFilterEditChange(Sender: TObject); - procedure AllUnitsFilterEditEnter(Sender: TObject); - procedure AllUnitsFilterEditExit(Sender: TObject); procedure AllUnitsSearchEditChange(Sender: TObject); - procedure AllUnitsSearchEditEnter(Sender: TObject); - procedure AllUnitsSearchEditExit(Sender: TObject); procedure AllUnitsSearchNextSpeedButtonClick(Sender: TObject); procedure AllUnitsSearchPrevSpeedButtonClick(Sender: TObject); procedure AllUnitsShowDirsSpeedButtonClick(Sender: TObject); procedure AllUnitsShowGroupNodesSpeedButtonClick(Sender: TObject); + procedure FormShow(Sender: TObject); procedure RefreshButtonClick(Sender: TObject); procedure SelUnitsTreeViewExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean); @@ -203,8 +205,6 @@ procedure SearchPkgsCheckBoxChange(Sender: TObject); procedure SearchSrcEditCheckBoxChange(Sender: TObject); procedure SelUnitsSearchEditChange(Sender: TObject); - procedure SelUnitsSearchEditEnter(Sender: TObject); - procedure SelUnitsSearchEditExit(Sender: TObject); procedure SelUnitsSearchNextSpeedButtonClick(Sender: TObject); procedure SelUnitsSearchPrevSpeedButtonClick(Sender: TObject); procedure SearchCustomFilesBrowseButtonClick(Sender: TObject); @@ -310,7 +310,7 @@ public function IsApplicable(Msg: TMessageLine; out Unitname1, Unitname2: string): boolean; procedure CreateMenuItems(Fixes: TMsgQuickFixes); override; - procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override; + procedure QuickFix({%H-}Fixes: TMsgQuickFixes; Msg: TMessageLine); override; end; var @@ -324,6 +324,8 @@ implementation +{$R *.lfm} + procedure ShowUnitDependenciesClicked(Sender: TObject); begin ShowUnitDependencies; @@ -336,8 +338,8 @@ State=iwgfDisabled,LazarusIDE.OwningComponent) else if State=iwgfDisabled then UnitDependenciesWindow.DisableAlign; - if State>=iwgfShow then - IDEWindowCreators.ShowForm(UnitDependenciesWindow,State=iwgfShowOnTop); + if State>=iwgfShow then + IDEWindowCreators.ShowForm(UnitDependenciesWindow,State=iwgfShowOnTop); end; procedure InitUnitDependenciesQuickFixItems; @@ -538,6 +540,8 @@ procedure TUnitDependenciesWindow.FormCreate(Sender: TObject); begin + Name := NonModalIDEWindowNames[nmiwUnitDependenciesName]; + FPendingUnitDependencyRoute:=TStringList.Create; CreateUsesGraph(FUsesGraph,FGroups); @@ -568,18 +572,6 @@ IdleConnected:=true; end; -procedure TUnitDependenciesWindow.AllUnitsSearchEditEnter(Sender: TObject); -begin - if AllUnitsSearchEdit.Text=ResStrSearch then - AllUnitsSearchEdit.Text:=''; -end; - -procedure TUnitDependenciesWindow.AllUnitsSearchEditExit(Sender: TObject); -begin - if AllUnitsSearchEdit.Text='' then - AllUnitsSearchEdit.Text:=ResStrSearch; -end; - procedure TUnitDependenciesWindow.AllUnitsSearchNextSpeedButtonClick(Sender: TObject); begin SelectNextSearchTV(AllUnitsTreeView,AllUnitsTreeView.Selected,true,true); @@ -604,6 +596,13 @@ IdleConnected:=true; end; +procedure TUnitDependenciesWindow.FormShow(Sender: TObject); +begin + AllUnitsFilterEdit.TextHint:=ResStrFilter; + AllUnitsSearchEdit.TextHint:=ResStrSearch; + SelUnitsSearchEdit.TextHint:=ResStrSearch; +end; + procedure TUnitDependenciesWindow.RefreshButtonClick(Sender: TObject); begin if udwParsing in FFlags then exit; @@ -768,17 +767,6 @@ IdleConnected:=true; end; -procedure TUnitDependenciesWindow.AllUnitsFilterEditEnter(Sender: TObject); -begin - if AllUnitsFilterEdit.Text=ResStrFilter then - AllUnitsFilterEdit.Text:=''; -end; - -procedure TUnitDependenciesWindow.AllUnitsFilterEditExit(Sender: TObject); -begin - if AllUnitsFilterEdit.Text='' then - AllUnitsFilterEdit.Text:=ResStrFilter; -end; procedure TUnitDependenciesWindow.FormDestroy(Sender: TObject); begin @@ -859,18 +847,6 @@ IdleConnected:=true; end; -procedure TUnitDependenciesWindow.SelUnitsSearchEditEnter(Sender: TObject); -begin - if SelUnitsSearchEdit.Text=ResStrSearch then - SelUnitsSearchEdit.Text:=''; -end; - -procedure TUnitDependenciesWindow.SelUnitsSearchEditExit(Sender: TObject); -begin - if SelUnitsSearchEdit.Text='' then - SelUnitsSearchEdit.Text:=ResStrSearch; -end; - procedure TUnitDependenciesWindow.SelUnitsSearchNextSpeedButtonClick(Sender: TObject); begin SelectNextSearchTV(SelUnitsTreeView,SelUnitsTreeView.Selected,true,true); @@ -1043,7 +1019,7 @@ CurUnit: TUGUnit; ProjFile: TLazProjectFile; begin - if AProject=nil then exit; + if AProject=nil then exit(nil); Result:=Groups.GetGroup(GroupPrefixProject,true); Result.BaseDir:=ExtractFilePath(AProject.ProjectInfoFile); if not FilenameIsAbsolute(Result.BaseDir) then @@ -1070,7 +1046,7 @@ Filename: String; CurUnit: TUGUnit; begin - if APackage=nil then exit; + if APackage=nil then exit(nil); Result:=Groups.GetGroup(APackage.Name,true); Result.BaseDir:=APackage.DirectoryExpanded; if not FilenameIsAbsolute(Result.BaseDir) then @@ -1799,7 +1775,6 @@ // view all units AllUnitsGroupBox.Caption:=lisUDAllUnits; - AllUnitsFilterEdit.Text:=ResStrFilter; AllUnitsShowDirsSpeedButton.Hint:=lisUDShowNodesForDirectories; AllUnitsShowDirsSpeedButton.LoadGlyphFromResourceName(HInstance, 'pkg_hierarchical'); AllUnitsShowDirsSpeedButton.Down:=true; @@ -1807,7 +1782,6 @@ AllUnitsShowGroupNodesSpeedButton.LoadGlyphFromResourceName(HInstance, 'pkg_hierarchical'); AllUnitsShowGroupNodesSpeedButton.Down:=true; - AllUnitsSearchEdit.Text:=ResStrSearch; AllUnitsSearchNextSpeedButton.Hint:=lisUDSearchNextOccurrenceOfThisPhrase; AllUnitsSearchNextSpeedButton.LoadGlyphFromResourceName(HInstance, 'arrow_down'); AllUnitsSearchPrevSpeedButton.Hint:=lisUDSearchPreviousOccurrenceOfThisPhrase; @@ -1815,7 +1789,6 @@ // selected units SelectedUnitsGroupBox.Caption:=lisUDSelectedUnits; - SelUnitsSearchEdit.Text:=ResStrSearch; SelUnitsSearchNextSpeedButton.Hint:=lisUDSearchNextUnitOfThisPhrase; SelUnitsSearchNextSpeedButton.LoadGlyphFromResourceName(HInstance, 'arrow_down'); SelUnitsSearchPrevSpeedButton.Hint:=lisUDSearchPreviousUnitOfThisPhrase; @@ -2274,27 +2247,21 @@ function TUnitDependenciesWindow.GetAllUnitsFilter(Lower: boolean): string; begin Result:=AllUnitsFilterEdit.Text; - if Result=ResStrFilter then - Result:='' - else if Lower then + if Lower then Result:=UTF8LowerCase(Result); end; function TUnitDependenciesWindow.GetAllUnitsSearch(Lower: boolean): string; begin Result:=AllUnitsSearchEdit.Text; - if Result=ResStrSearch then - Result:='' - else if Lower then + if Lower then Result:=UTF8LowerCase(Result); end; function TUnitDependenciesWindow.GetSelUnitsSearch(Lower: boolean): string; begin Result:=SelUnitsSearchEdit.Text; - if Result=ResStrSearch then - Result:='' - else if Lower then + if Lower then Result:=UTF8LowerCase(Result); end; @@ -2327,7 +2294,5 @@ TheUsesGraph.UsesClass:=TUDUses; end; -{$R *.lfm} - end. diff -Nru lazarus-1.4.4+dfsg/ide/unitinfodlg.lfm lazarus-1.6+dfsg/ide/unitinfodlg.lfm --- lazarus-1.4.4+dfsg/ide/unitinfodlg.lfm 2010-10-01 13:29:52.000000000 +0000 +++ lazarus-1.6+dfsg/ide/unitinfodlg.lfm 2015-05-13 22:09:32.000000000 +0000 @@ -1,22 +1,22 @@ object UnitInfoDialog: TUnitInfoDialog Left = 347 - Height = 283 - Top = 251 + Height = 307 + Top = 249 Width = 500 ActiveControl = Notebook - BorderStyle = bsSizeToolWin + BorderIcons = [biSystemMenu, biMaximize] Caption = 'UnitInfoDialog' - ClientHeight = 283 + ClientHeight = 307 ClientWidth = 500 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object OkButton: TBitBtn AnchorSideBottom.Control = Owner AnchorSideBottom.Side = asrBottom Left = 419 - Height = 32 - Top = 245 + Height = 26 + Top = 275 Width = 75 Anchors = [akRight, akBottom] AutoSize = True @@ -27,13 +27,12 @@ Default = True Kind = bkOK ModalResult = 1 - NumGlyphs = 0 TabOrder = 0 end object Notebook: TPageControl AnchorSideBottom.Control = OkButton Left = 6 - Height = 233 + Height = 263 Top = 6 Width = 488 ActivePage = GeneralPage @@ -44,182 +43,52 @@ TabOrder = 1 object GeneralPage: TTabSheet Caption = 'GeneralPage' - ClientHeight = 206 - ClientWidth = 486 - object ULines: TLabel - Left = 12 - Height = 18 - Top = 92 - Width = 52 - Alignment = taRightJustify - Caption = 'ULines' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - end - object OutLines: TLabel - AnchorSideLeft.Control = ULines - AnchorSideLeft.Side = asrBottom - Left = 76 - Height = 18 - Top = 92 - Width = 58 - BorderSpacing.Left = 12 - Caption = 'OutLines' - ParentColor = False - end - object OutPath: TLabel - AnchorSideLeft.Control = UPath - AnchorSideLeft.Side = asrBottom - Left = 70 - Height = 18 - Top = 112 - Width = 52 - BorderSpacing.Left = 12 - Caption = 'OutPath' - ParentColor = False - end - object UPath: TLabel - Left = 12 - Height = 18 - Top = 112 - Width = 46 - Alignment = taRightJustify - Caption = 'UPath' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - end - object UIncludedBy: TLabel - Left = 12 - Height = 18 - Top = 132 - Width = 96 - Alignment = taRightJustify - Caption = 'UIncludedBy' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - end - object OutIncludedBy: TLabel - AnchorSideLeft.Control = UIncludedBy - AnchorSideLeft.Side = asrBottom - Left = 120 - Height = 18 - Top = 132 - Width = 96 - BorderSpacing.Left = 12 - Caption = 'OutIncludedBy' - ParentColor = False - end - object OutSize: TLabel - AnchorSideLeft.Control = USize - AnchorSideLeft.Side = asrBottom - Left = 68 - Height = 18 - Top = 72 - Width = 51 - BorderSpacing.Left = 12 - Caption = 'OutSize' - ParentColor = False - end - object USize: TLabel - Left = 12 - Height = 18 - Top = 72 - Width = 44 - Alignment = taRightJustify - Caption = 'USize' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - end - object UInProject: TLabel - Left = 12 - Height = 18 - Top = 52 - Width = 80 - Alignment = taRightJustify - Caption = 'UInProject' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - end - object OutInProject: TLabel - AnchorSideLeft.Control = UInProject - AnchorSideLeft.Side = asrBottom - Left = 104 - Height = 18 - Top = 52 - Width = 81 - BorderSpacing.Left = 12 - Caption = 'OutInProject' - ParentColor = False - end - object OutType: TLabel - AnchorSideLeft.Control = UType - AnchorSideLeft.Side = asrBottom - Left = 71 - Height = 18 - Top = 32 - Width = 54 - BorderSpacing.Left = 12 - Caption = 'OutType' - ParentColor = False - end - object UType: TLabel - Left = 12 - Height = 18 - Top = 32 - Width = 47 - Alignment = taRightJustify - Caption = 'UType' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - end - object OutName: TLabel - AnchorSideLeft.Control = UName - AnchorSideLeft.Side = asrBottom - Left = 79 - Height = 18 - Top = 12 - Width = 63 - BorderSpacing.Left = 12 - Caption = 'OutName' - ParentColor = False - end - object UName: TLabel - Left = 12 - Height = 18 - Top = 12 - Width = 55 - Alignment = taRightJustify - Caption = 'UName' - Font.Style = [fsBold] - ParentColor = False - ParentFont = False - end + ClientHeight = 235 + ClientWidth = 480 object ClearIncludedBy: TButton - AnchorSideTop.Control = UIncludedBy - Left = 12 - Height = 29 - Top = 152 - Width = 118 + Left = 6 + Height = 25 + Top = 204 + Width = 112 + Anchors = [akLeft, akBottom] AutoSize = True BorderSpacing.Top = 20 Caption = 'ClearIncludedBy' OnClick = clearIncludedByClick TabOrder = 0 end + object ListValues: TListView + Left = 6 + Height = 191 + Top = 6 + Width = 468 + Anchors = [akTop, akLeft, akRight, akBottom] + Columns = < + item + AutoSize = True + Caption = '(name)' + Width = 464 + end + item + AutoSize = True + Caption = '(value)' + Width = 48 + end> + ReadOnly = True + RowSelect = True + ScrollBars = ssAutoBoth + ShowColumnHeaders = False + TabOrder = 1 + ViewStyle = vsReport + end end object UnitPathsPage: TTabSheet Caption = 'UnitPathsPage' - ClientHeight = 206 - ClientWidth = 486 + ClientHeight = 235 + ClientWidth = 480 object UnitPathMemo: TMemo Left = 6 - Height = 194 + Height = 223 Top = 6 Width = 468 Align = alClient @@ -231,11 +100,11 @@ end object IncludePathsPage: TTabSheet Caption = 'IncludePathsPage' - ClientHeight = 206 - ClientWidth = 486 + ClientHeight = 235 + ClientWidth = 480 object IncludePathMemo: TMemo Left = 6 - Height = 201 + Height = 223 Top = 6 Width = 468 Align = alClient @@ -247,13 +116,13 @@ end object CompleteUnitPathsPage: TTabSheet Caption = 'CompleteUnitPathsPage' - ClientHeight = 206 - ClientWidth = 486 + ClientHeight = 235 + ClientWidth = 480 object SrcPathMemo: TMemo Left = 6 - Height = 194 + Height = 223 Top = 6 - Width = 474 + Width = 468 Align = alClient BorderSpacing.Around = 6 ReadOnly = True @@ -267,9 +136,9 @@ AnchorSideBottom.Control = OkButton AnchorSideBottom.Side = asrBottom Left = 6 - Height = 32 - Top = 245 - Width = 151 + Height = 26 + Top = 275 + Width = 142 Anchors = [akTop, akLeft, akBottom] AutoSize = True Caption = 'CodeToolsDefsButton' @@ -281,10 +150,10 @@ AnchorSideRight.Control = OkButton AnchorSideBottom.Control = OkButton AnchorSideBottom.Side = asrBottom - Left = 221 - Height = 32 - Top = 245 - Width = 192 + Left = 240 + Height = 26 + Top = 275 + Width = 173 Anchors = [akTop, akRight, akBottom] AutoSize = True BorderSpacing.Right = 6 diff -Nru lazarus-1.4.4+dfsg/ide/unitinfodlg.pp lazarus-1.6+dfsg/ide/unitinfodlg.pp --- lazarus-1.4.4+dfsg/ide/unitinfodlg.pp 2011-03-09 08:13:30.000000000 +0000 +++ lazarus-1.6+dfsg/ide/unitinfodlg.pp 2015-08-07 17:20:40.000000000 +0000 @@ -27,9 +27,13 @@ interface uses - Classes, SysUtils, LCLProc, LCLType, Controls, StdCtrls, Forms, Buttons, - FileProcs, ExtCtrls, ComCtrls, - CodeToolsDefPreview, CodeToolManager, + // LCL + FCL + SysUtils, LCLProc, Controls, StdCtrls, Forms, Buttons, ComCtrls, + // CodeTools + CodeToolsDefPreview, CodeToolManager, FileProcs, + // LazUtils + LazFileUtils, + // IDE LazarusIDEStrConsts; type @@ -39,31 +43,18 @@ TUnitInfoDialog = class(TForm) GotoIncludeDirectiveButton: TButton; CodeToolsDefsButton: TButton; + ListValues: TListView; OkButton: TBitBtn; ClearIncludedBy: TButton; UnitPathMemo: TMemo; IncludePathMemo: TMemo; SrcPathMemo: TMemo; Notebook: TPageControl; - OutIncludedBy: TLabel; - OutInProject: TLabel; - OutLines: TLabel; - OutName: TLabel; - OutPath: TLabel; - OutSize: TLabel; - OutType: TLabel; GeneralPage: TTabSheet; UnitPathsPage: TTabSheet; IncludePathsPage: TTabSheet; CompleteUnitPathsPage: TTabSheet; PathsGroupBox: TGroupBox; - UIncludedBy: TLabel; - UInProject: TLabel; - ULines: TLabel; - UName: TLabel; - UPath: TLabel; - USize: TLabel; - UType: TLabel; procedure CodeToolsDefsButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure clearIncludedByClick(Sender: TObject); @@ -75,7 +66,7 @@ function ShowUnitInfoDlg(const AnUnitName, AType: string; IsPartOfProject: boolean; SizeInBytes, UnitSizeWithIncludeFiles, UnitSizeParsed, LineCount, UnitLineCountWithIncludes, UnitLineCountParsed: integer; - const FilePath: string; const IncludedBy: string; var ClearIncludedBy: boolean; + const FilePath: string; const IncludedBy: string; out ClearIncludedBy: boolean; const UnitPath, IncludePath, SrcPath: string): TModalResult; implementation @@ -83,44 +74,44 @@ {$R *.lfm} function ShowUnitInfoDlg(const AnUnitName, AType: string; - IsPartOfProject: boolean; - SizeInBytes, UnitSizeWithIncludeFiles, UnitSizeParsed, - LineCount, UnitLineCountWithIncludes, UnitLineCountParsed: integer; - const FilePath: string; const IncludedBy: string; var ClearIncludedBy: boolean; - const UnitPath, IncludePath, SrcPath: string): TModalResult; + IsPartOfProject: boolean; SizeInBytes, UnitSizeWithIncludeFiles, + UnitSizeParsed, LineCount, UnitLineCountWithIncludes, + UnitLineCountParsed: integer; const FilePath: string; + const IncludedBy: string; out ClearIncludedBy: boolean; const UnitPath, + IncludePath, SrcPath: string): TModalResult; var Dlg: TUnitInfoDialog; s: String; begin + ClearIncludedBy:=false; + Dlg:=TUnitInfoDialog.Create(nil); with Dlg do begin Caption:=Format(lisInformationAboutUnit, [AnUnitName]); FFilePath:=FilePath; - OutName.Caption:=AnUnitName; - OutType.Caption:=AType; + ListValues.Items[0].SubItems[0]:=AnUnitName; + ListValues.Items[1].SubItems[0]:=AType; - if IsPartOfProject then - OutInProject.Caption:=lisUIDyes - else - OutInProject.Caption:=lisUIDno; + if IsPartOfProject then s:=lisUIDyes else s:=lisUIDno; + ListValues.Items[2].SubItems[0]:=s; s:=Format(lisUIDbytes, [IntToStr(SizeInBytes)]); if UnitSizeWithIncludeFiles<>SizeInBytes then s:=s+lisWithIncludes2+IntToStr(UnitSizeWithIncludeFiles); if UnitSizeParsed<>UnitSizeWithIncludeFiles then s:=s+lisParsed+IntToStr(UnitSizeParsed); - OutSize.Caption:=s; + ListValues.Items[3].SubItems[0]:=s; s:=IntToStr(LineCount); if UnitLineCountWithIncludes<>LineCount then s:=s+lisWithIncludes2+IntToStr(UnitLineCountWithIncludes); if UnitLineCountParsed<>LineCount then s:=s+lisParsed+IntToStr(UnitLineCountParsed); - OutLines.Caption:=s; + ListValues.Items[4].SubItems[0]:=s; - OutPath.Caption:=FilePath; - OutIncludedBy.Caption:=IncludedBy; + ListValues.Items[5].SubItems[0]:=FilePath; + ListValues.Items[6].SubItems[0]:=IncludedBy; UnitPathMemo.Lines.Delimiter := ';'; UnitPathMemo.Lines.StrictDelimiter := true; @@ -159,13 +150,17 @@ Notebook.Page[3].Caption := lisSourcePaths; Notebook.PageIndex := 0; - UName.Caption:=lisUIDName; - UType.Caption:=lisUIDType; - UInProject.Caption:=lisUIDinProject; - USize.Caption:=lisUIDSize; - ULines.Caption:=lisUIDLines; - UPath.Caption:=lisToFPCPath; - UIncludedBy.Caption:=lisUIDIncludedBy; + with ListValues do + begin + with Items.Add do begin Caption:= lisUIDName; SubItems.Add(''); end; + with Items.Add do begin Caption:= lisUIDType; SubItems.Add(''); end; + with Items.Add do begin Caption:= lisUIDinProject; SubItems.Add(''); end; + with Items.Add do begin Caption:= lisUIDSize; SubItems.Add(''); end; + with Items.Add do begin Caption:= lisUIDLines; SubItems.Add(''); end; + with Items.Add do begin Caption:= lisToFPCPath; SubItems.Add(''); end; + with Items.Add do begin Caption:= lisUIDIncludedBy; SubItems.Add(''); end; + end; + ClearIncludedBy.Caption:=lisUIClearIncludedByReference; CodeToolsDefsButton.Caption:=lisUIShowCodeToolsValues; GotoIncludeDirectiveButton.Caption:=lisMenuGotoIncludeDirective; @@ -173,12 +168,12 @@ procedure TUnitInfoDialog.clearIncludedByClick(Sender: TObject); begin - OutIncludedBy.Caption:=''; + ListValues.Items[6].SubItems[0]:=''; end; function TUnitInfoDialog.getIncludedBy: string; begin - Result:=OutIncludedBy.Caption; + Result:=ListValues.Items[6].SubItems[0]; end; end. diff -Nru lazarus-1.4.4+dfsg/ide/unusedunitsdlg.lfm lazarus-1.6+dfsg/ide/unusedunitsdlg.lfm --- lazarus-1.4.4+dfsg/ide/unusedunitsdlg.lfm 2015-01-15 00:41:39.000000000 +0000 +++ lazarus-1.6+dfsg/ide/unusedunitsdlg.lfm 2015-05-26 11:09:13.000000000 +0000 @@ -4,6 +4,7 @@ Top = 236 Width = 501 ActiveControl = UnitsTreeView + BorderIcons = [biSystemMenu] Caption = 'UnusedUnitsDialog' ClientHeight = 382 ClientWidth = 501 @@ -17,7 +18,7 @@ Width = 489 Align = alClient BorderSpacing.Around = 6 - DefaultItemHeight = 22 + DefaultItemHeight = 18 MultiSelect = True ReadOnly = True ScrollBars = ssAutoBoth @@ -31,6 +32,7 @@ Top = 306 Width = 501 Align = alBottom + BevelOuter = bvNone ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.HorizontalSpacing = 10 @@ -38,26 +40,27 @@ ClientWidth = 501 TabOrder = 1 object CancelBitBtn: TBitBtn - Left = 404 - Height = 30 - Top = 39 - Width = 90 + Left = 412 + Height = 26 + Top = 43 + Width = 82 Anchors = [akRight, akBottom] AutoSize = True + BorderSpacing.Around = 6 Cancel = True Caption = 'Cancel' Constraints.MinWidth = 75 Kind = bkCancel ModalResult = 2 OnClick = CancelBitBtnClick - TabOrder = 0 + TabOrder = 3 end object RemoveSelectedBitBtn: TBitBtn AnchorSideRight.Control = CancelBitBtn - Left = 217 - Height = 30 - Top = 39 - Width = 177 + Left = 257 + Height = 25 + Top = 44 + Width = 145 Anchors = [akRight, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -65,14 +68,14 @@ Constraints.MinWidth = 75 ModalResult = 1 OnClick = RemoveSelectedBitBtnClick - TabOrder = 1 + TabOrder = 2 end object RemoveAllBitBtn: TBitBtn AnchorSideRight.Control = RemoveSelectedBitBtn - Left = 69 - Height = 30 - Top = 39 - Width = 138 + Left = 132 + Height = 25 + Top = 44 + Width = 115 Anchors = [akRight, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -80,20 +83,20 @@ Constraints.MinWidth = 75 ModalResult = 8 OnClick = RemoveAllBitBtnClick - TabOrder = 2 + TabOrder = 1 end object ShowInitializationCheckBox: TCheckBox Left = 8 - Height = 24 + Height = 19 Top = 6 - Width = 350 + Width = 280 Caption = 'Show units with initialization/finalization sections' Checked = True OnClick = ShowInitializationCheckBoxClick ParentShowHint = False ShowHint = True State = cbChecked - TabOrder = 3 + TabOrder = 0 end end end diff -Nru lazarus-1.4.4+dfsg/ide/unusedunitsdlg.pas lazarus-1.6+dfsg/ide/unusedunitsdlg.pas --- lazarus-1.4.4+dfsg/ide/unusedunitsdlg.pas 2014-10-24 21:50:53.000000000 +0000 +++ lazarus-1.6+dfsg/ide/unusedunitsdlg.pas 2015-03-22 10:17:35.000000000 +0000 @@ -85,6 +85,7 @@ Code: TCodeBuffer; begin // get cursor position + Result:=mrAbort; SrcEdit:=SourceEditorManagerIntf.ActiveEditor; if SrcEdit=nil then exit; Code:=TCodeBuffer(SrcEdit.CodeToolsBuffer); diff -Nru lazarus-1.4.4+dfsg/ide/useunitdlg.pas lazarus-1.6+dfsg/ide/useunitdlg.pas --- lazarus-1.4.4+dfsg/ide/useunitdlg.pas 2015-05-01 10:39:09.000000000 +0000 +++ lazarus-1.6+dfsg/ide/useunitdlg.pas 2015-06-16 09:22:42.000000000 +0000 @@ -30,11 +30,11 @@ interface uses - Classes, SysUtils, Forms, Controls, ComCtrls, StdCtrls, ExtCtrls, Buttons, - ButtonPanel, Dialogs, LCLProc, FileProcs, Graphics, LCLType, EditBtn, StrUtils, + Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, Buttons, + ButtonPanel, Dialogs, LCLProc, FileProcs, Graphics, LCLType, SourceEditor, LazIDEIntf, IDEImagesIntf, LazarusIDEStrConsts, ProjectIntf, - Project, CodeCache, CodeToolManager, IdentCompletionTool, CodeAtom, CodeTree, - PascalParserTool, ListFilterEdit, LinkScanner; + Project, CodeCache, CodeToolManager, IdentCompletionTool, CodeTree, + ListFilterEdit, LinkScanner; type @@ -51,7 +51,7 @@ procedure FormDestroy(Sender: TObject); procedure SectionRadioGroupClick(Sender: TObject); procedure UnitsListBoxDblClick(Sender: TObject); - procedure UnitsListBoxDrawItem(Control: TWinControl; Index: Integer; + procedure UnitsListBoxDrawItem({%H-}Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); procedure UnitsListBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); @@ -65,7 +65,7 @@ procedure CreateOtherUnitsList; function SelectedUnit: string; function InterfaceSelected: Boolean; - procedure DetermineUsesSection(ACode: TCodeBuffer; ACursorPos: TPoint); + procedure DetermineUsesSection(ACode: TCodeBuffer); procedure FillAvailableUnitsList; public @@ -108,7 +108,7 @@ UseUnitDlg.SectionRadioGroup.Enabled := False else // automatic choice of dest uses-section by cursor position - UseUnitDlg.DetermineUsesSection(SrcEdit.CodeBuffer, SrcEdit.GetCursorTextXY); + UseUnitDlg.DetermineUsesSection(SrcEdit.CodeBuffer); if UseUnitDlg.FilterEdit.Items.Count = 0 then // no available units from current project => turn on "all units" @@ -392,30 +392,19 @@ Result:=SectionRadioGroup.ItemIndex=0; end; -procedure TUseUnitDialog.DetermineUsesSection(ACode: TCodeBuffer; ACursorPos: TPoint); +procedure TUseUnitDialog.DetermineUsesSection(ACode: TCodeBuffer); var ImplUsesNode: TCodeTreeNode; i: Integer; Tool: TCodeTool; - //CursorPos: TCodeXYPosition; - //CleanCursorPos: Integer; - //ImplNode: TCodeTreeNode; begin CodeToolBoss.Explore(ACode,Tool,false); if Tool=nil then exit; // collect implementation use unit nodes - ImplUsesNode := Tool.FindImplementationUsesSection; + ImplUsesNode := Tool.FindImplementationUsesNode; if Assigned(ImplUsesNode) then for i := 0 to FImplUsedUnits.Count - 1 do FImplUsedUnits.Objects[i] := ImplUsesNode; - // check if cursor is behind interface section -{Note: now default to interface section always. - CursorPos := CodeXYPosition(ACursorPos.X, ACursorPos.Y, ACode); - Tool.CaretToCleanPos(CursorPos,CleanCursorPos); - ImplNode:=Tool.FindImplementationNode; - if (ImplNode<>nil) and (CleanCursorPos>ImplNode.StartPos) then - SectionRadioGroup.ItemIndex := 1; -} // update SectionRadioGroup.OnClick(SectionRadioGroup); end; diff -Nru lazarus-1.4.4+dfsg/ide/version.inc lazarus-1.6+dfsg/ide/version.inc --- lazarus-1.4.4+dfsg/ide/version.inc 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/ide/version.inc 2016-02-14 09:48:23.000000000 +0000 @@ -1 +1 @@ -'1.4.4' +'1.6' diff -Nru lazarus-1.4.4+dfsg/ide/viewunit_dlg.lfm lazarus-1.6+dfsg/ide/viewunit_dlg.lfm --- lazarus-1.4.4+dfsg/ide/viewunit_dlg.lfm 2014-10-30 19:48:03.000000000 +0000 +++ lazarus-1.6+dfsg/ide/viewunit_dlg.lfm 2015-05-10 07:59:53.000000000 +0000 @@ -15,11 +15,11 @@ OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object Listbox: TListBox Left = 6 - Height = 278 - Top = 34 + Height = 279 + Top = 35 Width = 366 Align = alClient BorderSpacing.Around = 6 @@ -32,12 +32,11 @@ ScrollWidth = 364 Style = lbOwnerDrawFixed TabOrder = 0 - TopIndex = -1 end object ButtonPanel: TButtonPanel Left = 6 - Height = 36 - Top = 344 + Height = 34 + Top = 346 Width = 366 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -55,23 +54,24 @@ ShowButtons = [pbOK, pbCancel, pbHelp] end object BtnPanel: TPanel - Left = 0 - Height = 28 - Top = 0 - Width = 378 + Left = 6 + Height = 23 + Top = 6 + Width = 366 Align = alTop AutoSize = True - ClientHeight = 28 - ClientWidth = 378 + BorderSpacing.Around = 6 + BevelOuter = bvNone + ClientHeight = 23 + ClientWidth = 366 TabOrder = 2 object SortAlphabeticallySpeedButton: TSpeedButton - Left = 1 - Height = 26 - Top = 1 - Width = 15 + Left = 0 + Height = 23 + Top = 0 + Width = 25 Align = alLeft AllowAllUp = True - AutoSize = True Constraints.MinHeight = 15 Constraints.MinWidth = 15 GroupIndex = 2 @@ -80,20 +80,14 @@ ParentShowHint = False end object FilterEdit: TListFilterEdit - AnchorSideLeft.Control = SortAlphabeticallySpeedButton - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = SortAlphabeticallySpeedButton - AnchorSideTop.Side = asrCenter - Left = 22 - Height = 28 + Left = 31 + Height = 23 Top = 0 - Width = 349 + Width = 335 ButtonWidth = 23 NumGlyphs = 1 - Anchors = [akTop, akLeft, akRight] + Align = alClient BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Bottom = 6 MaxLength = 0 ParentFont = False TabOrder = 0 @@ -103,7 +97,7 @@ object ProgressBar1: TProgressBar Left = 6 Height = 20 - Top = 318 + Top = 320 Width = 366 Align = alBottom BorderSpacing.Left = 6 diff -Nru lazarus-1.4.4+dfsg/ide/viewunit_dlg.pp lazarus-1.6+dfsg/ide/viewunit_dlg.pp --- lazarus-1.4.4+dfsg/ide/viewunit_dlg.pp 2014-02-06 19:42:58.000000000 +0000 +++ lazarus-1.6+dfsg/ide/viewunit_dlg.pp 2015-12-05 18:24:32.000000000 +0000 @@ -40,15 +40,16 @@ interface uses - SysUtils, Classes, Math, Controls, Forms, Dialogs, Buttons, StdCtrls, - LazarusIdeStrConsts, IDEProcs, CustomFormEditor, LCLType, LCLIntf, LMessages, - ExtCtrls, ButtonPanel, Menus, StrUtils, AVL_Tree, contnrs, ImgList, ComCtrls, + SysUtils, Classes, Controls, Forms, Buttons, StdCtrls, + LazarusIdeStrConsts, IDEProcs, CustomFormEditor, LCLType, LCLIntf, + ExtCtrls, ButtonPanel, Menus, AVL_Tree, ComCtrls, PackageDefs, IDEWindowIntf, IDEHelpIntf, IDEImagesIntf, ListFilterEdit, - CodeToolsStructs, CodeToolManager, FileProcs, lazutf8sysutils, LazFileUtils, - LazLogger; + CodeToolsStructs, CodeToolManager, FileProcs, + lazutf8sysutils, LazFileUtils, LazFileCache; type TIDEProjectItem = ( + piNone, piUnit, piComponent, piFrame @@ -112,9 +113,9 @@ SortAlphabeticallySpeedButton: TSpeedButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); - procedure ListboxDrawItem(Control: TWinControl; Index: Integer; - ARect: TRect; State: TOwnerDrawState); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure ListboxDrawItem({%H-}Control: TWinControl; Index: Integer; + ARect: TRect; {%H-}State: TOwnerDrawState); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure SortAlphabeticallySpeedButtonClick(Sender: TObject); procedure OKButtonClick(Sender :TObject); procedure HelpButtonClick(Sender: TObject); @@ -363,21 +364,19 @@ case ItemType of piUnit: begin - fFoundFiles[aFilename]:=ExtractFileName(aFilename); end; piComponent: begin CompClass:=FindLFMBaseClass(aFilename); if CompClass=pfcbcNone then exit; - fFoundFiles[aFilename]:=ExtractFileName(aFilename); end; piFrame: begin CompClass:=FindLFMBaseClass(aFilename); if CompClass<>pfcbcFrame then exit; - fFoundFiles[aFilename]:=ExtractFileName(aFilename); end; end; + fFoundFiles[aFilename]:=ExtractFileName(aFilename); end; procedure CheckDirectory(aDirectory: string); @@ -511,7 +510,7 @@ var UEntry: TViewUnitsEntry; begin - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TViewUnitDialog.ShowEntries'){$ENDIF}; try // Data items FilterEdit.Items.Clear; @@ -523,7 +522,7 @@ if UEntry.Selected then FilterEdit.SelectionList.Add(UEntry.Name); finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TViewUnitDialog.ShowEntries'){$ENDIF}; end; end; diff -Nru lazarus-1.4.4+dfsg/ide/w32manifest.pas lazarus-1.6+dfsg/ide/w32manifest.pas --- lazarus-1.4.4+dfsg/ide/w32manifest.pas 2015-08-10 21:15:46.000000000 +0000 +++ lazarus-1.6+dfsg/ide/w32manifest.pas 2016-01-03 12:28:36.000000000 +0000 @@ -152,6 +152,7 @@ constructor TProjectXPManifest.Create; begin inherited Create; + FIsDefaultOption := True; UseManifest := False; DpiAware := False; ExecutionLevel := xmelAsInvoker; diff -Nru lazarus-1.4.4+dfsg/ide/w32versioninfo.pas lazarus-1.6+dfsg/ide/w32versioninfo.pas --- lazarus-1.4.4+dfsg/ide/w32versioninfo.pas 2014-02-06 19:42:58.000000000 +0000 +++ lazarus-1.6+dfsg/ide/w32versioninfo.pas 2015-12-03 09:40:41.000000000 +0000 @@ -39,7 +39,7 @@ interface uses - Classes, SysUtils, Process, LCLProc, Controls, Forms, FileUtil, TypInfo, laz2_DOM, + Classes, SysUtils, LCLProc, Controls, Forms, FileUtil, TypInfo, laz2_DOM, Laz2_XMLCfg, CodeToolManager, LazConf, IDEProcs, ProjectIntf, CompOptsIntf, ProjectResourcesIntf, resource, versionresource, versiontypes, versionconsts, TransferMacros; diff -Nru lazarus-1.4.4+dfsg/images/actions/execute.xpm lazarus-1.6+dfsg/images/actions/execute.xpm --- lazarus-1.4.4+dfsg/images/actions/execute.xpm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/images/actions/execute.xpm 2015-06-21 10:11:52.000000000 +0000 @@ -0,0 +1,276 @@ +/* XPM */ +static char * execute_xpm[] = { +"16 16 257 2", +" c None", +". c #B57B4A", +"+ c #C66B29", +"@ c #C67B52", +"# c #D66B18", +"$ c #D68C52", +"% c #D69431", +"& c #E77B39", +"* c #E78452", +"= c #EF7B10", +"- c #EF7B31", +"; c #EF8410", +"> c #EFAD29", +", c #EFAD39", +"' c #EFB510", +") c #EFBD08", +"! c #F77300", +"~ c #F77318", +"{ c #F77329", +"] c #F78408", +"^ c #F79408", +"/ c #F7A518", +"( c #F7CE00", +"_ c #F7DE18", +": c #F7DE63", +"< c #FF00FF", +"[ c #FF7300", +"} c #FF7B00", +"| c #FF8400", +"1 c #FF8C00", +"2 c #FF9400", +"3 c #FF9C00", +"4 c #FFA500", +"5 c #FFA510", +"6 c #FFA539", +"7 c #FFA552", +"8 c #FFA55A", +"9 c #FFAD00", +"0 c #FFAD29", +"a c #FFAD31", +"b c #FFB500", +"c c #FFB56B", +"d c #FFB584", +"e c #FFBD00", +"f c #FFBD08", +"g c #FFBD10", +"h c #FFC600", +"i c #FFC608", +"j c #FFC66B", +"k c #FFCE00", +"l c #FFCE18", +"m c #FFD600", +"n c #FFD608", +"o c #FFD610", +"p c #FFD621", +"q c #FFD631", +"r c #FFDE00", +"s c #FFDE18", +"t c #FFDE29", +"u c #FFDE42", +"v c #FFE700", +"w c #FFE710", +"x c #FFE718", +"y c #FFE739", +"z c #FFEF00", +"A c #FFEF18", +"B c #FFEF39", +"C c #FFEF4A", +"D c #FFF700", +"E c #FFF708", +"F c #FFF729", +"G c #FFF731", +"H c #FFF742", +"I c #FFF74A", +"J c #FFF75A", +"K c #FFFF00", +"L c #FFFF08", +"M c #FFFF18", +"N c #FFFF21", +"O c #FFFF31", +"P c #FFFF39", +"Q c #FFFFFF", +"R c #FFFFFF", +"S c #FFFFFF", +"T c #FFFFFF", +"U c #FFFFFF", +"V c #FFFFFF", +"W c #FFFFFF", +"X c #FFFFFF", +"Y c #FFFFFF", +"Z c #FFFFFF", +"` c #FFFFFF", +" . c #FFFFFF", +".. c #FFFFFF", +"+. c #FFFFFF", +"@. c #FFFFFF", +"#. c #FFFFFF", +"$. c #FFFFFF", +"%. c #FFFFFF", +"&. c #FFFFFF", +"*. c #FFFFFF", +"=. c #FFFFFF", +"-. c #FFFFFF", +";. c #FFFFFF", +">. c #FFFFFF", +",. c #FFFFFF", +"'. c #FFFFFF", +"). c #FFFFFF", +"!. c #FFFFFF", +"~. c #FFFFFF", +"{. c #FFFFFF", +"]. c #FFFFFF", +"^. c #FFFFFF", +"/. c #FFFFFF", +"(. c #FFFFFF", +"_. c #FFFFFF", +":. c #FFFFFF", +"<. c #FFFFFF", +"[. c #FFFFFF", +"}. c #FFFFFF", +"|. c #FFFFFF", +"1. c #FFFFFF", +"2. c #FFFFFF", +"3. c #FFFFFF", +"4. c #FFFFFF", +"5. c #FFFFFF", +"6. c #FFFFFF", +"7. c #FFFFFF", +"8. c #FFFFFF", +"9. c #FFFFFF", +"0. c #FFFFFF", +"a. c #FFFFFF", +"b. c #FFFFFF", +"c. c #FFFFFF", +"d. c #FFFFFF", +"e. c #FFFFFF", +"f. c #FFFFFF", +"g. c #FFFFFF", +"h. c #FFFFFF", +"i. c #FFFFFF", +"j. c #FFFFFF", +"k. c #FFFFFF", +"l. c #FFFFFF", +"m. c #FFFFFF", +"n. c #FFFFFF", +"o. c #FFFFFF", +"p. c #FFFFFF", +"q. c #FFFFFF", +"r. c #FFFFFF", +"s. c #FFFFFF", +"t. c #FFFFFF", +"u. c #FFFFFF", +"v. c #FFFFFF", +"w. c #FFFFFF", +"x. c #FFFFFF", +"y. c #FFFFFF", +"z. c #FFFFFF", +"A. c #FFFFFF", +"B. c #FFFFFF", +"C. c #FFFFFF", +"D. c #FFFFFF", +"E. c #FFFFFF", +"F. c #FFFFFF", +"G. c #FFFFFF", +"H. c #FFFFFF", +"I. c #FFFFFF", +"J. c #FFFFFF", +"K. c #FFFFFF", +"L. c #FFFFFF", +"M. c #FFFFFF", +"N. c #FFFFFF", +"O. c #FFFFFF", +"P. c #FFFFFF", +"Q. c #FFFFFF", +"R. c #FFFFFF", +"S. c #FFFFFF", +"T. c #FFFFFF", +"U. c #FFFFFF", +"V. c #FFFFFF", +"W. c #FFFFFF", +"X. c #FFFFFF", +"Y. c #FFFFFF", +"Z. c #FFFFFF", +"`. c #FFFFFF", +" + c #FFFFFF", +".+ c #FFFFFF", +"++ c #FFFFFF", +"@+ c #FFFFFF", +"#+ c #FFFFFF", +"$+ c #FFFFFF", +"%+ c #FFFFFF", +"&+ c #FFFFFF", +"*+ c #FFFFFF", +"=+ c #FFFFFF", +"-+ c #FFFFFF", +";+ c #FFFFFF", +">+ c #FFFFFF", +",+ c #FFFFFF", +"'+ c #FFFFFF", +")+ c #FFFFFF", +"!+ c #FFFFFF", +"~+ c #FFFFFF", +"{+ c #FFFFFF", +"]+ c #FFFFFF", +"^+ c #FFFFFF", +"/+ c #FFFFFF", +"(+ c #FFFFFF", +"_+ c #FFFFFF", +":+ c #FFFFFF", +"<+ c #FFFFFF", +"[+ c #FFFFFF", +"}+ c #FFFFFF", +"|+ c #FFFFFF", +"1+ c #FFFFFF", +"2+ c #FFFFFF", +"3+ c #FFFFFF", +"4+ c #FFFFFF", +"5+ c #FFFFFF", +"6+ c #FFFFFF", +"7+ c #FFFFFF", +"8+ c #FFFFFF", +"9+ c #FFFFFF", +"0+ c #FFFFFF", +"a+ c #FFFFFF", +"b+ c #FFFFFF", +"c+ c #FFFFFF", +"d+ c #FFFFFF", +"e+ c #FFFFFF", +"f+ c #FFFFFF", +"g+ c #FFFFFF", +"h+ c #FFFFFF", +"i+ c #FFFFFF", +"j+ c #FFFFFF", +"k+ c #FFFFFF", +"l+ c #FFFFFF", +"m+ c #FFFFFF", +"n+ c #FFFFFF", +"o+ c #FFFFFF", +"p+ c #FFFFFF", +"q+ c #FFFFFF", +"r+ c #FFFFFF", +"s+ c #FFFFFF", +"t+ c #FFFFFF", +"u+ c #FFFFFF", +"v+ c #FFFFFF", +"w+ c #FFFFFF", +"x+ c #FFFFFF", +"y+ c #FFFFFF", +"z+ c #FFFFFF", +"A+ c #FFFFFF", +"B+ c #FFFFFF", +"C+ c #FFFFFF", +"D+ c #FFFFFF", +"E+ c #FFFFFF", +"F+ c #FFFFFF", +"G+ c #FFFFFF", +"H+ c #FFFFFF", +" q 7 @ ", +" q u o 8 @ ", +" q D z 9 4 @ ", +" q E K D m b @ ", +" i y C H M K K L N @ ", +" 6 h z D z r K K B i @ ", +" 0 h z D D K C l 4 @ ", +" @ @ @ h L G g 9 @ @ ", +" b f 9 3 @ ", +" b i 3 3 @ ", +" b 1 2 @ @ ", +" 3 1 1 @ ", +" & } ! @ ", +" - @ + ", +" @ ", +" "}; Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/actions/laz_addmore.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/actions/laz_addmore.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/actions/laz_cancel.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/actions/laz_cancel.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/actions/laz_export.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/actions/laz_export.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/actions/laz_tick.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/actions/laz_tick.png differ diff -Nru lazarus-1.4.4+dfsg/images/actions/preferences.xpm lazarus-1.6+dfsg/images/actions/preferences.xpm --- lazarus-1.4.4+dfsg/images/actions/preferences.xpm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/images/actions/preferences.xpm 2015-06-21 10:11:52.000000000 +0000 @@ -0,0 +1,147 @@ +/* XPM */ +static char * preferences16_xpm[] = { +"16 16 128 2", +" c None", +". c #969697", +"+ c #E4E4E5", +"@ c #E9E9EA", +"# c #BCBCBC", +"$ c #9E9EA3", +"% c #E0E0E1", +"& c #C7C7C6", +"* c #A3A3A5", +"= c #A5A5B3", +"- c #B2B2B2", +"; c #A0A0A0", +"> c #969699", +", c #A0A0AB", +"' c #E2E3E5", +") c #AFAFAE", +"! c #A1A1AB", +"~ c #B6B6D8", +"{ c #B48913", +"] c #BE8F0D", +"^ c #E2E5EC", +"/ c #B2B2B1", +"( c #A2A2AC", +"_ c #B6B8E0", +": c #C19A1E", +"< c #BA9322", +"[ c #AA800E", +"} c #D3A220", +"| c #EBBC36", +"1 c #E0E2E9", +"2 c #B4B6DD", +"3 c #FDE165", +"4 c #E6CA68", +"5 c #A47905", +"6 c #B88C14", +"7 c #CD9D1F", +"8 c #DDAC27", +"9 c #EFC547", +"0 c #B4B5DC", +"a c #FBE47C", +"b c #F9ECAC", +"c c #E0CB8A", +"d c #C4A548", +"e c #BC921E", +"f c #DFAD27", +"g c #E3B431", +"h c #F4CF5A", +"i c #E2E3E9", +"j c #B3B3B2", +"k c #B5B7E1", +"l c #FADC59", +"m c #FFF09C", +"n c #FCEFB5", +"o c #BD9B3D", +"p c #B88E1C", +"q c #DEAD28", +"r c #E7BB3F", +"s c #F6D76D", +"t c #D3C791", +"u c #D8BC45", +"v c #FFD202", +"w c #FED314", +"x c #FBD21E", +"y c #CB9E0C", +"z c #C09113", +"A c #D7A622", +"B c #EAC34E", +"C c #F7DF81", +"D c #FFEF92", +"E c #E8D371", +"F c #CCB85C", +"G c #C9B250", +"H c #EBC72A", +"I c #FFD107", +"J c #FECF04", +"K c #FED009", +"L c #F5C908", +"M c #E1B40E", +"N c #D7BA60", +"O c #D2B048", +"P c #E0BE53", +"Q c #FFED95", +"R c #FFEF8D", +"S c #FFE55A", +"T c #FFDA27", +"U c #FFD81C", +"V c #FFE252", +"W c #FFE879", +"X c #FFEB7D", +"Y c #EECB3F", +"Z c #D9B131", +"` c #CEA42C", +" . c #B48C20", +".. c #BD982C", +"+. c #D5B54E", +"@. c #EFDB85", +"#. c #DEC051", +"$. c #ECC839", +"%. c #FFD71E", +"&. c #FFDB3A", +"*. c #F1D45F", +"=. c #DFC675", +"-. c #ECE1B0", +";. c #E1CE90", +">. c #B58B1B", +",. c #C9A532", +"'. c #DCB837", +"). c #D9AE14", +"!. c #CBA111", +"~. c #F0C71D", +"{. c #F8D748", +"]. c #CAA634", +"^. c #DDC15C", +"/. c #DEC467", +"(. c #C6A43F", +"_. c #C9A32B", +":. c #CCA524", +"<. c #AE840F", +"[. c #C39A14", +"}. c #D6AE24", +"|. c #D5B133", +"1. c #B48B18", +"2. c #AF8717", +"3. c #CCAB43", +"4. c #CBA83D", +"5. c #C9A120", +"6. c #CFAA2C", +"7. c #AC8210", +" . . . . ", +" . + @ # $ . ", +" . % & * = . ", +" . - ; > , . ", +" . ' ) ! ~ . ", +" { ] . ^ / ( _ . : < ", +" [ } | . 1 / ( 2 . 3 4 5 ", +" 6 7 8 9 . 1 / ( 0 . a b c d ", +" e f g h . i j ( k . l m n o ", +" p q r s t . . . . u v w x y ", +" z A B C D E F G H I J K L M ", +" N O P Q R S T U V W X Y Z ` ", +" ...+.@.#.$.%.&.*.=.-.;.>. ", +" ,.'.).!.~.{.].^./.(. ", +" _.:.<.[.}.|.1.2.3.4. ", +" 5.6.7. "}; Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/codeexplorer/ce_classinterface.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/codeexplorer/ce_classinterface.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/codeexplorer/ce_helper.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/codeexplorer/ce_helper.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/codeexplorer/ce_record.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/codeexplorer/ce_record.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/components/tflowpanel.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/components/tflowpanel.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/components/ttimeedit.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/components/ttimeedit.png differ diff -Nru lazarus-1.4.4+dfsg/images/components_images_list.txt lazarus-1.6+dfsg/images/components_images_list.txt --- lazarus-1.4.4+dfsg/images/components_images_list.txt 2015-03-24 21:39:08.000000000 +0000 +++ lazarus-1.6+dfsg/images/components_images_list.txt 2015-11-17 21:19:07.000000000 +0000 @@ -51,6 +51,7 @@ components/tfiltercombobox.png components/tfinddialog.png components/tfloatspinedit.png +components/tflowpanel.png components/tfontdialog.png components/tframe.png components/tgroupbox.png @@ -105,6 +106,7 @@ components/tstatusbar.png components/tstringgrid.png components/ttabcontrol.png +components/ttimeedit.png components/ttimer.png components/ttogglebox.png components/ttoolbar.png Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/components_images.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/components_images.res differ diff -Nru lazarus-1.4.4+dfsg/images/components_images.sh lazarus-1.6+dfsg/images/components_images.sh --- lazarus-1.4.4+dfsg/images/components_images.sh 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/images/components_images.sh 2015-03-16 23:29:50.000000000 +0000 @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +../tools/lazres components_images.res @components_images_list.txt diff -Nru lazarus-1.4.4+dfsg/images/laz_images_list.txt lazarus-1.6+dfsg/images/laz_images_list.txt --- lazarus-1.4.4+dfsg/images/laz_images_list.txt 2014-09-24 17:01:50.000000000 +0000 +++ lazarus-1.6+dfsg/images/laz_images_list.txt 2015-09-10 13:57:24.000000000 +0000 @@ -3,11 +3,11 @@ template.png mainiconproject.ico actions/laz_add.png -actions/laz_addmore.png actions/arrow_down.png actions/arrow_left.png actions/arrow_right.png actions/arrow_up.png +actions/execute.xpm actions/laz_delete.png actions/laz_edit.png actions/laz_highlighter.png @@ -17,6 +17,10 @@ actions/laz_set_color_default.png actions/laz_set_colors_default.png actions/laz_wand.png +actions/preferences.xpm +actions/laz_cancel.png +actions/laz_tick.png +actions/laz_export.png items/item_character.png items/item_filter.png items/item_font.png @@ -55,6 +59,7 @@ menu/menu_help.png menu/menu_indent.png menu/menu_information.png +menu/menu_manage_desktops.png menu/menu_new.png menu/menu_pause.png menu/menu_project_add.png @@ -84,6 +89,13 @@ menu/menu_search_incremental.png menu/menu_search_jumpback.png menu/menu_search_jumpforward.png +menu/menu_jumpto_interface.png +menu/menu_jumpto_interfaceuses.png +menu/menu_jumpto_implementation.png +menu/menu_jumpto_implementationuses.png +menu/menu_jumpto_initialization.png +menu/menu_jumpto_procedureheader.png +menu/menu_jumpto_procedurebegin.png menu/menu_search_next_bookmark.png menu/menu_search_openfile_atcursor.png menu/menu_search_previous_bookmark.png @@ -134,6 +146,9 @@ states/state_unknown.png states/state_warning.png codeexplorer/ce_class.png +codeexplorer/ce_classinterface.png +codeexplorer/ce_record.png +codeexplorer/ce_helper.png codeexplorer/ce_const.png codeexplorer/ce_default.png codeexplorer/ce_deprecated.png Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/laz_images.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/laz_images.res differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_jumpto_implementation.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_jumpto_implementation.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_jumpto_implementationuses.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_jumpto_implementationuses.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_jumpto_initialization.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_jumpto_initialization.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_jumpto_interface.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_jumpto_interface.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_jumpto_interfaceuses.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_jumpto_interfaceuses.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_jumpto_procedurebegin.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_jumpto_procedurebegin.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_jumpto_procedureheader.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_jumpto_procedureheader.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/images/menu/menu_manage_desktops.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/images/menu/menu_manage_desktops.png differ diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.af_ZA.po lazarus-1.6+dfsg/languages/lazaruside.af_ZA.po --- lazarus-1.4.4+dfsg/languages/lazaruside.af_ZA.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.af_ZA.po 2016-01-05 13:41:02.000000000 +0000 @@ -76,6 +76,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -159,6 +163,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -380,6 +392,10 @@ msgid "Lowercase, first letter up" msgstr "" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "" @@ -543,10 +559,6 @@ msgid "Adjust top line due to comment in front" msgstr "" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "" @@ -588,7 +600,7 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "" #: lazarusidestrconsts.dlgautodel @@ -625,6 +637,16 @@ msgid "Auto rename file lowercase" msgstr "" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "" @@ -702,6 +724,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1039,11 +1065,6 @@ msgid "Config files" msgstr "" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1177,8 +1198,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1201,18 +1222,10 @@ msgid "Delete template " msgstr "" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1221,6 +1234,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "" @@ -1303,6 +1328,7 @@ msgstr "" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "" @@ -1532,6 +1558,138 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Lazarus forum" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Lazarus paket" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Lazarus projek" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programme" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "" @@ -1695,6 +1853,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "" @@ -1731,11 +1893,6 @@ msgid "&From cursor" msgstr "" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opsies" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Kry posisie" @@ -1752,6 +1909,10 @@ msgid "Grabber color" msgstr "" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "" @@ -1933,9 +2094,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Verwerp" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2043,11 +2206,15 @@ msgstr "" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" +msgstr "" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" msgstr "" #: lazarusidestrconsts.dlglevelnoneopt @@ -2066,10 +2233,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "" @@ -2091,6 +2254,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "" @@ -2247,6 +2414,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2452,6 +2620,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2504,6 +2676,95 @@ msgid "Messages" msgstr "" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "" @@ -2540,6 +2801,10 @@ msgid "Naming" msgstr "" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "" @@ -2578,11 +2843,6 @@ msgid "Miscellaneous" msgstr "" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opsies" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2611,6 +2871,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "" @@ -2793,7 +3059,7 @@ msgstr "" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2808,6 +3074,10 @@ msgid "Snap to grid" msgstr "" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "" @@ -2816,6 +3086,10 @@ msgid "Regular e&xpressions" msgstr "" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Vervang Alles" @@ -2859,6 +3133,18 @@ msgid "Rubberband Selection" msgstr "" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "" @@ -2888,8 +3174,8 @@ msgid "Run Parameters" msgstr "" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor @@ -2961,6 +3247,10 @@ msgid "&Selected text" msgstr "" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "" @@ -2973,6 +3263,26 @@ msgid "Set property Variable" msgstr "" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3096,6 +3406,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3199,6 +3513,11 @@ msgid "&Text to find" msgstr "&Teks of te vind" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3574,6 +3893,10 @@ msgid "File not unit" msgstr "" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "" @@ -3619,6 +3942,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "" +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "" @@ -3747,6 +4074,11 @@ msgid "Abandon changes?" msgstr "" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "" @@ -3857,6 +4189,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -3922,6 +4262,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -3930,6 +4274,10 @@ msgid "Add %s to project?" msgstr "" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -3958,10 +4306,6 @@ msgid "File type" msgstr "" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "" @@ -3983,19 +4327,10 @@ msgid "Show all" msgstr "" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "" -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "" @@ -4020,10 +4355,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4141,7 +4472,7 @@ msgstr "" #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "" #: lazarusidestrconsts.lisapplicationclassname @@ -4201,6 +4532,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4258,6 +4601,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "" @@ -4346,6 +4693,11 @@ msgid "Border space" msgstr "" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4456,6 +4808,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4706,6 +5062,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "" @@ -4921,7 +5278,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5156,6 +5513,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5184,6 +5545,10 @@ msgid "Choose directory" msgstr "Kies 'n vouer" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "" @@ -5338,8 +5703,8 @@ msgid "Click here to browse the file" msgstr "" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5411,6 +5776,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6001,10 +6370,6 @@ msgid "Symbol" msgstr "Simbool" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "" @@ -6197,6 +6562,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6602,40 +6971,200 @@ msgid "This log was saved to %s" msgstr "" -#: lazarusidestrconsts.lisconvtopoff -msgid "Top offset" +#: lazarusidestrconsts.lisconvtopoff +msgid "Top offset" +msgstr "" + +#: lazarusidestrconsts.lisconvtypereplacements +msgid "Type Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvtypereplhint +msgid "Unknown types in form file (DFM/LFM)" +msgstr "" + +#: lazarusidestrconsts.lisconvtypestoreplace +msgid "Types to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" msgstr "" -#: lazarusidestrconsts.lisconvtypereplacements -msgid "Type Replacements" +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" msgstr "" -#: lazarusidestrconsts.lisconvtypereplhint -msgid "Unknown types in form file (DFM/LFM)" +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" msgstr "" -#: lazarusidestrconsts.lisconvtypestoreplace -msgid "Types to replace" +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -6914,6 +7443,10 @@ msgid "Custom options" msgstr "" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "" @@ -7415,22 +7948,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "" @@ -7652,6 +8177,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7670,6 +8200,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "" @@ -7795,6 +8329,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7820,14 +8358,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -7930,6 +8476,10 @@ msgid "Working Directory:" msgstr "" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8139,7 +8689,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8240,6 +8790,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8280,10 +8834,6 @@ msgid "Exclude filter" msgstr "" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8304,10 +8854,6 @@ msgid "Execution stopped" msgstr "" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programme" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8342,14 +8888,27 @@ msgid "Export" msgstr "" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "" @@ -8358,6 +8917,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8434,6 +9001,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8777,10 +9345,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -8973,6 +9537,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9005,6 +9573,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "" @@ -9055,6 +9627,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9143,15 +9716,12 @@ msgid "ID" msgstr "" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Voeg by" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" msgstr "" #: lazarusidestrconsts.liside @@ -9286,6 +9856,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Verwerp" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "" @@ -9302,8 +9878,8 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage @@ -9320,11 +9896,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9419,6 +9997,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9428,6 +10010,10 @@ msgid "Insert" msgstr "Insit" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9567,6 +10153,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9583,6 +10173,14 @@ msgid "Invalid delete" msgstr "" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -9696,6 +10294,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10299,10 +10905,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "" @@ -10315,22 +10917,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarus forum" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "" @@ -10343,30 +10933,6 @@ msgid "lazarus [options] <project-filename>" msgstr "" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarus paket" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarus projek" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10653,10 +11219,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -10839,6 +11401,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11278,6 +11844,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11302,6 +11884,14 @@ msgid "Jump to Previous Error" msgstr "Spring na vorige vout" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "" @@ -11319,6 +11909,10 @@ msgid "New Component" msgstr "" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nuwe Vorm" @@ -11586,6 +12180,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -11772,11 +12370,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12094,6 +12687,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12191,6 +12792,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12403,6 +13008,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12712,6 +13318,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opsies" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -12829,6 +13441,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -12840,10 +13453,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -12861,6 +13470,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -12935,8 +13548,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -12994,7 +13607,7 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +msgid "Edit general options" msgstr "" #: lazarusidestrconsts.lispckeditfileproperties @@ -13005,10 +13618,6 @@ msgid "Install" msgstr "" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "" @@ -13459,8 +14068,8 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary @@ -13498,19 +14107,27 @@ msgstr "" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13545,8 +14162,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -13715,6 +14332,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "" @@ -14148,6 +14771,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14273,7 +14900,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14283,7 +14910,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15103,10 +15730,6 @@ msgid "Save current editor file" msgstr "" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15177,6 +15800,10 @@ msgid "Save " msgstr "Stoor" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "" @@ -15346,6 +15973,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -15370,6 +16001,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -15527,14 +16162,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "" @@ -15741,10 +16376,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -16400,6 +17031,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -16458,6 +17093,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "" @@ -16494,6 +17133,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16518,6 +17173,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "" @@ -16840,6 +17500,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "" @@ -17359,6 +18023,7 @@ msgstr "" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -17593,14 +18258,14 @@ msgid "XML Error" msgstr "" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -17742,10 +18407,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18024,6 +18685,10 @@ msgid "Text marker commands" msgstr "" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -18478,11 +19143,11 @@ msgstr "" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -18594,6 +19259,18 @@ msgid "Invert Assignment" msgstr "" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Links" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Regs" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -18666,6 +19343,10 @@ msgid "Go to next editor" msgstr "" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -18718,6 +19399,30 @@ msgid "pause program" msgstr "" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "" @@ -18726,6 +19431,10 @@ msgid "Go to prior editor" msgstr "" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -18827,11 +19536,11 @@ msgstr "" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -19280,10 +19989,22 @@ msgid "Move cursor word right" msgstr "" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -19316,6 +20037,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.ar.po lazarus-1.6+dfsg/languages/lazaruside.ar.po --- lazarus-1.4.4+dfsg/languages/lazaruside.ar.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.ar.po 2016-01-05 13:41:02.000000000 +0000 @@ -78,6 +78,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -165,6 +169,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -386,6 +398,10 @@ msgid "Lowercase, first letter up" msgstr "" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "" @@ -549,10 +565,6 @@ msgid "Adjust top line due to comment in front" msgstr "" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "كلّ الجذاذات" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "هجائيّا" @@ -594,7 +606,7 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "" #: lazarusidestrconsts.dlgautodel @@ -631,6 +643,16 @@ msgid "Auto rename file lowercase" msgstr "" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "" @@ -708,6 +730,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1049,11 +1075,6 @@ msgid "Config files" msgstr "" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "الأخرى" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1187,8 +1208,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1211,18 +1232,10 @@ msgid "Delete template " msgstr "" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1231,6 +1244,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "" @@ -1313,6 +1338,7 @@ msgstr "" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "" @@ -1542,6 +1568,135 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "كلّ الجذاذات" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "" @@ -1705,6 +1860,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "" @@ -1741,11 +1900,6 @@ msgid "&From cursor" msgstr "" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "" @@ -1762,6 +1916,10 @@ msgid "Grabber color" msgstr "" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "" @@ -1943,9 +2101,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "تجاهل" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2053,11 +2213,15 @@ msgstr "" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" +msgstr "" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" msgstr "" #: lazarusidestrconsts.dlglevelnoneopt @@ -2076,10 +2240,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "" @@ -2101,6 +2261,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "" @@ -2256,6 +2420,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2461,6 +2626,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2513,6 +2682,95 @@ msgid "Messages" msgstr "" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "تعيين متعدّد" @@ -2549,6 +2807,10 @@ msgid "Naming" msgstr "" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "" @@ -2587,11 +2849,6 @@ msgid "Miscellaneous" msgstr "متفرّقات" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "خيارات" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2620,6 +2877,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "" @@ -2802,7 +3065,7 @@ msgstr "" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2817,6 +3080,10 @@ msgid "Snap to grid" msgstr "" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "" @@ -2825,6 +3092,10 @@ msgid "Regular e&xpressions" msgstr "" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "" @@ -2868,6 +3139,18 @@ msgid "Rubberband Selection" msgstr "" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "" @@ -2897,8 +3180,8 @@ msgid "Run Parameters" msgstr "" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor @@ -2970,6 +3253,10 @@ msgid "&Selected text" msgstr "النّصّ المعيّن" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "" @@ -2982,6 +3269,26 @@ msgid "Set property Variable" msgstr "" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3105,6 +3412,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3208,6 +3519,11 @@ msgid "&Text to find" msgstr "إبحث عن العبارة التالية" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3583,6 +3899,10 @@ msgid "File not unit" msgstr "" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "" @@ -3628,6 +3948,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "" +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "" @@ -3756,6 +4080,12 @@ msgid "Abandon changes?" msgstr "" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "أجهض" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "أجهض الكل" @@ -3866,6 +4196,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -3931,6 +4269,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -3939,6 +4281,10 @@ msgid "Add %s to project?" msgstr "" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -3967,10 +4313,6 @@ msgid "File type" msgstr "" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "" @@ -3992,19 +4334,10 @@ msgid "Show all" msgstr "" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "" -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "" @@ -4029,10 +4362,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4150,7 +4479,7 @@ msgstr "" #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "" #: lazarusidestrconsts.lisapplicationclassname @@ -4210,6 +4539,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4267,6 +4608,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "" @@ -4355,6 +4700,11 @@ msgid "Border space" msgstr "" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4467,6 +4817,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4715,6 +5069,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "" @@ -4932,7 +5287,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5167,6 +5522,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5195,6 +5554,10 @@ msgid "Choose directory" msgstr "" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "" @@ -5349,8 +5712,8 @@ msgid "Click here to browse the file" msgstr "" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5422,6 +5785,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6010,10 +6377,6 @@ msgid "Symbol" msgstr "" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "" @@ -6204,6 +6567,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6617,32 +6984,196 @@ msgid "Type Replacements" msgstr "" -#: lazarusidestrconsts.lisconvtypereplhint -msgid "Unknown types in form file (DFM/LFM)" +#: lazarusidestrconsts.lisconvtypereplhint +msgid "Unknown types in form file (DFM/LFM)" +msgstr "" + +#: lazarusidestrconsts.lisconvtypestoreplace +msgid "Types to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "لا شيئ" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "كاشف الأوامر" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "مضاعف" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" msgstr "" -#: lazarusidestrconsts.lisconvtypestoreplace -msgid "Types to replace" +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "محرّر الأوامر" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -6921,6 +7452,10 @@ msgid "Custom options" msgstr "" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "" @@ -7422,22 +7957,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "" @@ -7662,6 +8189,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7680,6 +8212,10 @@ msgid "Do not change" msgstr "لا تغيّر" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "لا تغلق المشروع" @@ -7805,6 +8341,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7830,14 +8370,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -7940,6 +8488,10 @@ msgid "Working Directory:" msgstr "" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8149,7 +8701,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8250,6 +8802,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8290,10 +8846,6 @@ msgid "Exclude filter" msgstr "" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8314,10 +8866,6 @@ msgid "Execution stopped" msgstr "" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8352,14 +8900,27 @@ msgid "Export" msgstr "" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "حوّل إلى HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "" @@ -8368,6 +8929,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8442,6 +9011,7 @@ msgstr "لا يمكن حفظ الجذاذة" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8787,10 +9357,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -8983,6 +9549,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9015,6 +9585,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "" @@ -9065,6 +9639,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9153,16 +9728,13 @@ msgid "ID" msgstr "" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "إفتح" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9296,6 +9868,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "تجاهل" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "" @@ -9312,8 +9890,8 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage @@ -9330,11 +9908,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9429,6 +10009,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9438,6 +10022,10 @@ msgid "Insert" msgstr "" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9577,6 +10165,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9593,6 +10185,14 @@ msgid "Invalid delete" msgstr "" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -9708,6 +10308,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10311,10 +10919,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "" @@ -10327,22 +10931,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "" @@ -10355,30 +10947,6 @@ msgid "lazarus [options] <project-filename>" msgstr "" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10665,10 +11233,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -10851,6 +11415,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11280,6 +11848,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "" @@ -11296,6 +11880,14 @@ msgid "Jump to Previous Error" msgstr "" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "" @@ -11313,6 +11905,10 @@ msgid "New Component" msgstr "" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "&شكل جديد" @@ -11545,6 +12141,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "" @@ -11723,11 +12323,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12046,6 +12641,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12143,6 +12746,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12357,6 +12964,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12666,6 +13274,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "خيارات" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -12783,6 +13397,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -12794,10 +13409,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -12815,6 +13426,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -12889,8 +13504,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -12948,7 +13563,9 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "غير الخيارات العامة" #: lazarusidestrconsts.lispckeditfileproperties @@ -12959,10 +13576,6 @@ msgid "Install" msgstr "" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "" @@ -13409,8 +14022,8 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary @@ -13448,19 +14061,27 @@ msgstr "" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13495,8 +14116,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -13665,6 +14286,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "" @@ -14098,6 +14725,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14223,7 +14854,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14233,7 +14864,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15039,10 +15670,6 @@ msgid "Save current editor file" msgstr "" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15113,6 +15740,10 @@ msgid "Save " msgstr "إحفظ" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "" @@ -15282,6 +15913,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -15306,6 +15941,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -15463,14 +16102,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "" @@ -15677,10 +16316,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -16336,6 +16971,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -16394,6 +17033,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "" @@ -16430,6 +17073,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16454,6 +17113,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "" @@ -16776,6 +17440,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "" @@ -17296,6 +17964,7 @@ msgstr "" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -17530,14 +18199,14 @@ msgid "XML Error" msgstr "" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -17680,10 +18349,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -17962,6 +18627,10 @@ msgid "Text marker commands" msgstr "" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -18412,11 +19081,11 @@ msgstr "" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -18528,6 +19197,17 @@ msgid "Invert Assignment" msgstr "" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "الأيمن" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -18600,6 +19280,10 @@ msgid "Go to next editor" msgstr "" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -18652,6 +19336,30 @@ msgid "pause program" msgstr "" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "" @@ -18660,6 +19368,10 @@ msgid "Go to prior editor" msgstr "" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -18759,11 +19471,11 @@ msgstr "" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -19212,10 +19924,22 @@ msgid "Move cursor word right" msgstr "" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -19248,6 +19972,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.ca.po lazarus-1.6+dfsg/languages/lazaruside.ca.po --- lazarus-1.4.4+dfsg/languages/lazaruside.ca.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.ca.po 2016-01-05 13:41:02.000000000 +0000 @@ -74,6 +74,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -157,6 +161,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -378,6 +390,10 @@ msgid "Lowercase, first letter up" msgstr "Minúscules, primera lletra Maj." +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "" @@ -541,10 +557,6 @@ msgid "Adjust top line due to comment in front" msgstr "Ajusta la línia de sobre a causa del comentari de davant" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Tots els fitxers" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Alfabèticament" @@ -590,7 +602,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Quan es creen noves formes, afegeix-les a les formes creades automàticament" #: lazarusidestrconsts.dlgautodel @@ -627,6 +641,16 @@ msgid "Auto rename file lowercase" msgstr "Canvia el nom del fitxer a minúscules automàticament" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Formes disponibles:" @@ -704,6 +728,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1065,11 +1093,6 @@ msgid "Config files" msgstr "Fitxers de configuració:" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Altres" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1217,8 +1240,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Extensions definides per l'usuari (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1241,20 +1264,10 @@ msgid "Delete template " msgstr "Elimina la plantilla" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Escriptori" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -#, fuzzy -#| msgid "Desktop files" -msgid "Desktop Files" -msgstr "Fitxers de l'escriptori" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1263,6 +1276,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Direcció" @@ -1347,6 +1372,7 @@ #: lazarusidestrconsts.dlgedcodetempl #, fuzzy #| msgid "Code templates" +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Plantilles del codi" @@ -1582,6 +1608,144 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Tots els fitxers" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Projecte Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +#| msgid "Lazarus File" +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Arxiu Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Forma Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Paquet Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Projecte Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Font de projecte Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Unitat Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Arxius XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Cerca el text al cursor" @@ -1745,6 +1909,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Color primer pla " @@ -1781,11 +1949,6 @@ msgid "&From cursor" msgstr "" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opcions" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Posició" @@ -1802,6 +1965,10 @@ msgid "Grabber color" msgstr "Color capturador" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Color de la graella" @@ -1989,9 +2156,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignora" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2101,11 +2270,15 @@ msgstr "" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" +msgstr "" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" msgstr "" #: lazarusidestrconsts.dlglevelnoneopt @@ -2130,10 +2303,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Mostra els números de línia en errors en temps d'execució en seguiments inversos" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Carrega els paràmetres de l'escriptori des del fitxer" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Menú principal" @@ -2159,6 +2328,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Marge i canal" @@ -2315,6 +2488,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2520,6 +2694,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2572,6 +2750,97 @@ msgid "Messages" msgstr "" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Depuració" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "S'ha produït un error" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Sel·lecció múltiple" @@ -2608,6 +2877,10 @@ msgid "Naming" msgstr "Anomenat" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming #, fuzzy #| msgid "no automatic renaming" @@ -2652,11 +2925,6 @@ msgid "Miscellaneous" msgstr "Miscel·lània" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opcions" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2687,6 +2955,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Suggeriments per a la paleta de components" @@ -2875,7 +3149,9 @@ msgstr "Nom de propietat" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Obre l'últim projecte a l'iniciar" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2890,6 +3166,10 @@ msgid "Snap to grid" msgstr "Ajusta a la graella" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "" @@ -2898,6 +3178,10 @@ msgid "Regular e&xpressions" msgstr "" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Reemplaça Tot" @@ -2949,6 +3233,18 @@ msgid "Rubberband Selection" msgstr "Selecció" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Pantalla(no per win32, p.ex. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2980,9 +3276,9 @@ msgid "Run Parameters" msgstr "Executa els paràmetres" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Desa els paràmetres de l'escriptori al fitxer" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3057,6 +3353,10 @@ msgid "&Selected text" msgstr "" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Predetermina tots els elements" @@ -3069,6 +3369,26 @@ msgid "Set property Variable" msgstr "Variable de propietat" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3198,6 +3518,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3303,6 +3627,11 @@ msgid "&Text to find" msgstr "Cerca el &text" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3704,6 +4033,10 @@ msgid "File not unit" msgstr "El fitxer no és una unitat" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "El tipus d'avantpassat no és vàlid" @@ -3753,6 +4086,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "No s'ha trobat cap paquet per la dependència %s%s%s.%sSi us plau, escolliu un paquet existent." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "El nom del paquet és massa llarg" @@ -3909,6 +4246,12 @@ msgid "Abandon changes?" msgstr "" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Avortar" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Avortar tot" @@ -4021,6 +4364,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -4086,6 +4437,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4094,6 +4449,10 @@ msgid "Add %s to project?" msgstr "Voleu afegir %s al projecte?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4128,10 +4487,6 @@ msgid "File type" msgstr "Tipus de fitxer" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Té procediment del registre" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "El paquet no és vàlid" @@ -4159,21 +4514,10 @@ msgid "Show all" msgstr "Mostra-ho tot" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "El paquet %s és de només lectura." -#: lazarusidestrconsts.lisaf2punitname -#, fuzzy -#| msgid "Unit Name: " -msgid "Unit name: " -msgstr "Nom de la unitat: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4202,10 +4546,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Tots els arxius" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4325,7 +4665,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Va ocorrer un error durant l'ultima execució mentre s'hi carregava %s!%s%sCarregar aquest projecte de nou?" #: lazarusidestrconsts.lisapplicationclassname @@ -4385,6 +4725,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4442,6 +4794,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "" @@ -4530,6 +4886,11 @@ msgid "Border space" msgstr "" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4642,6 +5003,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4898,6 +5263,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "" @@ -5115,7 +5481,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5350,6 +5716,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5378,6 +5748,10 @@ msgid "Choose directory" msgstr "Tria el directori" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Tria un directori del codi font del FPC" @@ -5534,8 +5908,8 @@ msgid "Click here to browse the file" msgstr "" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5607,6 +5981,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6213,10 +6591,6 @@ msgid "Symbol" msgstr "Símbol" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Executa després de" @@ -6415,6 +6789,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6838,24 +7216,187 @@ msgid "Types to replace" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Cap" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +#| msgid "Code templates" +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Plantilles del codi" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7138,6 +7679,10 @@ msgid "Custom options" msgstr "Opcions personalitzades" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Programa personalitzat" @@ -7334,9 +7879,10 @@ msgstr "" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Depuració" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7647,22 +8193,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Projecte Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Directori de destinació" @@ -7890,6 +8428,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7908,6 +8451,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "" @@ -8033,6 +8580,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8058,14 +8609,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8168,6 +8727,10 @@ msgid "Working Directory:" msgstr "Directori de treball:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8377,7 +8940,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8478,6 +9041,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8518,10 +9085,6 @@ msgid "Exclude filter" msgstr "" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8542,10 +9105,6 @@ msgid "Execution stopped" msgstr "S'ha aturat l'execució" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8580,14 +9139,27 @@ msgid "Export" msgstr "" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Exporta la llista" @@ -8596,6 +9168,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8672,6 +9252,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -9026,10 +9607,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9224,6 +9801,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9256,6 +9837,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Comentari de capçalera per a la classe" @@ -9306,6 +9891,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9394,17 +9980,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Afegeix" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Obre" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9538,6 +10120,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignora" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "" @@ -9554,8 +10142,8 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage @@ -9572,11 +10160,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9671,6 +10261,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9680,6 +10274,10 @@ msgid "Insert" msgstr "Insereix" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9819,6 +10417,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9835,6 +10437,14 @@ msgid "Invalid delete" msgstr "L'eliminació no és vàlida" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -9952,6 +10562,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10555,10 +11173,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Directori del Lazarus" @@ -10571,24 +11185,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -#, fuzzy -#| msgid "Lazarus File" -msgid "Lazarus file" -msgstr "Arxiu Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Forma Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "" @@ -10601,30 +11201,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [opcions] <projecte-nomfitxer>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Paquet Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Projecte Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Font de projecte Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Unitat Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10913,10 +11489,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -11107,6 +11679,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11620,6 +12196,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11644,6 +12236,14 @@ msgid "Jump to Previous Error" msgstr "Salta a l'error previ" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -11663,6 +12263,10 @@ msgid "New Component" msgstr "Nou component" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nova forma" @@ -11944,6 +12548,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -12144,11 +12752,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12478,6 +13081,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12577,6 +13188,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12791,6 +13406,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -13108,6 +13724,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opcions" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -13227,6 +13849,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13238,10 +13861,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -13259,6 +13878,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -13337,8 +13960,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13396,7 +14019,9 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Edita les opcions generals" #: lazarusidestrconsts.lispckeditfileproperties @@ -13407,10 +14032,6 @@ msgid "Install" msgstr "Instal·la" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Instal·la el paquet a l'IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "la versió màxima no és vàlida" @@ -13891,9 +14512,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "El fitxer %s%s%s%sja no és a la trajectòria d'unitats del paquet.%s%sVoleu afegir %s%s%s a la trajectòria de les unitats? " -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Hi ha més funcions en el menú emergent" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13930,19 +14551,27 @@ msgstr "Unitat virtual" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13981,8 +14610,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -14161,6 +14790,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage #, fuzzy #| msgid "Save Package?" @@ -14664,6 +15299,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14799,7 +15438,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La versió màxima %s%s%s no és vàlida.%sSi us plau, utilitzeu el format major.menor.llançament.muntatje%sPer exemple: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14811,7 +15450,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La versió mínima %s%s%s no és vàlida.%sSi us plau, utilitzeu el format major.menor.llançament.muntatje%sPer exemple: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15643,10 +16282,6 @@ msgid "Save current editor file" msgstr "desa el fitxer editor actual" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15719,6 +16354,10 @@ msgid "Save " msgstr "Desa " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Factor d'escalat:" @@ -15888,6 +16527,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -15912,6 +16555,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -16072,14 +16719,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Ho sento, aquest tipus encara no està implementat" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Ascendent" @@ -16290,10 +16937,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -16989,6 +17632,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "No s'ha pogut extraure aquesta declaració.%sSi us plau, seleccioneu codi per extreure'n un nou procediment/mètode." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -17047,6 +17694,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funció: afegir el delimitador de la trajectòria" @@ -17085,6 +17736,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -17109,6 +17776,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "" @@ -17451,6 +18123,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "No es poden convertir dades de forma del fitxer %s%s%s%s%sa afluent binari. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "No es pot copiar el fitxer" @@ -17996,6 +18672,7 @@ msgstr "Variable" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18230,14 +18907,14 @@ msgid "XML Error" msgstr "" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Arxius XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -18381,10 +19058,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Arxiu de dades de Forma (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18665,6 +19338,10 @@ msgid "Text marker commands" msgstr "Ordres de marcadors del text" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -19141,11 +19818,11 @@ msgstr "Suposa $IFDEF inexistent" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -19259,6 +19936,18 @@ msgid "Invert Assignment" msgstr "Inverteix l'assignació" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Esquerra" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Dreta" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -19333,6 +20022,10 @@ msgid "Go to next editor" msgstr "Vés al següent editor" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -19387,6 +20080,30 @@ msgid "pause program" msgstr "pausa el programa" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Marcador Previ" @@ -19395,6 +20112,10 @@ msgid "Go to prior editor" msgstr "Vés a l'editor anterior" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -19500,11 +20221,11 @@ msgstr "Selecciona anar a XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -19961,10 +20682,22 @@ msgid "Move cursor word right" msgstr "Mou el cursor una paraula a la dreta" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -19997,6 +20730,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.cs.po lazarus-1.6+dfsg/languages/lazaruside.cs.po --- lazarus-1.4.4+dfsg/languages/lazaruside.cs.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.cs.po 2016-01-05 13:41:02.000000000 +0000 @@ -2,14 +2,14 @@ msgstr "" "Project-Id-Version: Lazarus\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2014-07-04 07:37+0100\n" -"Last-Translator: Václav Valíček <valicek1994@gmail.com>\n" +"PO-Revision-Date: 2015-11-14 14:03+0100\n" +"Last-Translator: Chronos <robie@centrum.cz>\n" "Language-Team: Czech <vaclav@valicek.name>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: UTF-8\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.4\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Language: cs\n" @@ -52,15 +52,15 @@ #: lazarusidestrconsts.dlfmousesimplebuttoncontextmenu msgid "Context Menu" -msgstr "Kontextové menu" +msgstr "Kontextová nabídka" #: lazarusidestrconsts.dlfmousesimplebuttoncontextmenudbg msgid "Context Menu (debug)" -msgstr "Kontextové menu (ladění)" +msgstr "Kontextová nabídka (ladění)" #: lazarusidestrconsts.dlfmousesimplebuttoncontextmenutab msgid "Context Menu (tab)" -msgstr "Kontextové menu (tab)" +msgstr "Kontextová nabídka (tab)" #: lazarusidestrconsts.dlfmousesimplebuttondeclaration msgid "Jumps to implementation" @@ -78,6 +78,10 @@ msgid "History forward" msgstr "Vpřed v historii" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "Přepnout dodatečnou Vsuvku" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -161,6 +165,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Rozšířené, akce (body přerušení, složení) při uvolnění tlačítka myši. Výběr při současném stisknutí tlačítka myši a pohybu" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "Rozšířené, Akce, pravý žlábek pouze poloviční" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "Použít čísla řádků pro výběr řádků" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -322,23 +334,23 @@ #: lazarusidestrconsts.dlfmousesimplewheelhsrolldef msgid "Scroll horizontal (System speed)" -msgstr "Posunout horizontálně (systémová rychlost)" +msgstr "Posunout vodorovně (systémová rychlost)" #: lazarusidestrconsts.dlfmousesimplewheelhsrollline msgid "Scroll horizontal (Single line)" -msgstr "Posunout horizontálně (jeden řádek)" +msgstr "Posunout vodorovně (jeden řádek)" #: lazarusidestrconsts.dlfmousesimplewheelhsrollpage msgid "Scroll horizontal (Page)" -msgstr "Posunout horizontálně (stránku)" +msgstr "Posunout vodorovně (stránku)" #: lazarusidestrconsts.dlfmousesimplewheelhsrollpagehalf msgid "Scroll horizontal (Half page)" -msgstr "Posunout horizontálně (půl stránky)" +msgstr "Posunout vodorovně (půl stránky)" #: lazarusidestrconsts.dlfmousesimplewheelhsrollpageless msgid "Scroll horizontal (Page, less one line)" -msgstr "Posunout horizontálně (stránka bez jedné řádky)" +msgstr "Posunout vodorovně (stránka bez jedné řádky)" #: lazarusidestrconsts.dlfmousesimplewheelnothing msgctxt "lazarusidestrconsts.dlfmousesimplewheelnothing" @@ -382,6 +394,10 @@ msgid "Lowercase, first letter up" msgstr "Malé písmena, první písmeno velké" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "aktivní" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Přidat operátor přiřazení :=" @@ -545,10 +561,6 @@ msgid "Adjust top line due to comment in front" msgstr "Přizpůsobit vrchní linku kvůli komentářů vpředu" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Všechny soubory" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Abecedně" @@ -567,7 +579,7 @@ #: lazarusidestrconsts.dlganiconforerrorwarninghintisshown msgid "An icon for error/warning/hint is shown in front of a message. The same icon shows in source editor gutter in any case." -msgstr "" +msgstr "Ikona pro chybu/varování/pokyn je ukázána na začátku zprávy. Stejná ikona je ukázána ve žlábku zdrojovém editoru v těchto případech." #: lazarusidestrconsts.dlgansicommenttab msgid "Ansi (* *)" @@ -587,11 +599,11 @@ #: lazarusidestrconsts.dlgautocreateformshint msgid "Main .lpr unit creates each form with Application.CreateForm(). They are also freed automatically." -msgstr "" +msgstr "Hlavní .lpr jednotka vytváří každý formulář s Application.CreateForm(). Formuláře jsou také automaticky uvolněny." #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" -msgstr "Při vytváření nových formulářů je přidat do seznamu automaticky vytvářených formulářů." +msgid "Auto-create new forms" +msgstr "Automaticky vytvářet formuláře" #: lazarusidestrconsts.dlgautodel msgid "Auto delete file" @@ -627,13 +639,25 @@ msgid "Auto rename file lowercase" msgstr "Automaticky nastav malá písmena v názvu souboru" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "Automaticky uložit aktivní plochu" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" +"Uložit aktivní plochu při uzavření IDE\n" +"Uložit ladící plochu při uzavření IDE a ukončení ladění\n" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Dostupné formuláře:" #: lazarusidestrconsts.dlgavailableformshint msgid "These forms must be created and freed in the program code." -msgstr "" +msgstr "Tyto formuláře musí být vytvořeny a uvolněny v kódu programu." #: lazarusidestrconsts.dlgbackcolor msgid "Background" @@ -694,7 +718,7 @@ #: lazarusidestrconsts.dlgborderspacecanbesetinanchoreditor msgid "Border space can be set in Anchor editor. A red line is shown if spacing > 0." -msgstr "" +msgstr "Okrajový prostor může být nastaven v editoru kotev. Červená čára je ukázána pokud rozestup > 0." #: lazarusidestrconsts.dlgbrackethighlight msgid "Bracket highlight" @@ -704,6 +728,10 @@ msgid "Matching bracket pairs" msgstr "Odpovídající závorkový pár" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "Nemůžete použit ukotvovací plochu v prostředí bez ukotvení a naopak." + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -804,7 +832,7 @@ #: lazarusidestrconsts.dlgcheckandautosavefiles msgid "Check and Auto Save Files" -msgstr "" +msgstr "Zkontrolovat a automaticky uložit soubory" #: lazarusidestrconsts.dlgcheckpackagesonformcreate msgid "Check packages on form create" @@ -812,7 +840,7 @@ #: lazarusidestrconsts.dlgcheckpackagesonformcreatehint msgid "The form may require a package to work. Install such a package automatically." -msgstr "" +msgstr "Formulář může vyžaduje balíček pro práci. Instalovat takový balíček automaticky." #: lazarusidestrconsts.dlgchscodetempl msgid "Choose code template file (*.dci)" @@ -850,11 +878,11 @@ #: lazarusidestrconsts.dlgcocompilercommands msgid "Compiler Commands" -msgstr "Příkazy Kompileru" +msgstr "Příkazy překladače" #: lazarusidestrconsts.dlgcocops msgid "C style operators (*=, +=, /= and -=)" -msgstr "Operátory ve stylu C (*=, +=, /= and -=)" +msgstr "Operátory ve stylu C (*=, +=, /= a -=)" #: lazarusidestrconsts.dlgcocreatemakefile msgctxt "lazarusidestrconsts.dlgcocreatemakefile" @@ -904,7 +932,7 @@ #: lazarusidestrconsts.dlgcoinfoforgdb msgid "Info for GDB" -msgstr "Info pro GDB" +msgstr "Infomace pro GDB" #: lazarusidestrconsts.dlgcolibraries msgid "Libraries (-Fl):" @@ -942,7 +970,7 @@ #: lazarusidestrconsts.dlgcommentalignmaxdefault msgid "Make default indent for new line if comment opens at column:" -msgstr "Vychozí odsazení pro nový řádek pokud komentář začíná ve sloupi:" +msgstr "Výchozí odsazení pro nový řádek pokud komentář začíná ve sloupci:" #: lazarusidestrconsts.dlgcommentalignmaxtoken msgid "Limit indent to" @@ -950,7 +978,7 @@ #: lazarusidestrconsts.dlgcommentcontinue msgid "Prefix comments on linebreak" -msgstr "Přefixovat komentáře na zalomení řádku" +msgstr "Předpona komentářů na zalomení řádku" #: lazarusidestrconsts.dlgcommentcontinuematch msgid "Match current line" @@ -994,11 +1022,11 @@ #: lazarusidestrconsts.dlgcommentshlashextendalways msgid "Extend, if matched or not matched" -msgstr "Rozšířít, pokud odpovídá nebo neodpovídá" +msgstr "Rozšířit, pokud odpovídá nebo neodpovídá" #: lazarusidestrconsts.dlgcommentshlashextendalwayssplit msgid "Extend, if matched or not matched (not at EOL)" -msgstr "Rozšířit, pokud odpovídá nebo neodpovídá (ne konec řádku)" +msgstr "Rozšířit, pokud odpovídá nebo neodpovídá (ne na konci řádku)" #: lazarusidestrconsts.dlgcommentshlashextendmatch msgid "Extend, if matched" @@ -1006,11 +1034,11 @@ #: lazarusidestrconsts.dlgcommentshlashextendmatchsplit msgid "Extend, if matched and caret in the middle of text (not at EOL)" -msgstr "Rozšířit, pokud odpovídá s vynechávkou v prostřed textu (ne konec řádku)" +msgstr "Rozšířit, pokud odpovídá s vsuvka je uprostřed textu (ne na koneci řádku)" #: lazarusidestrconsts.dlgcompilationandlinking msgid "Compilation and Linking" -msgstr "Kompilace a Linkování" +msgstr "Překlad a spojování" #: lazarusidestrconsts.dlgcompilermessage msgid "Compiler messages" @@ -1031,7 +1059,7 @@ #: lazarusidestrconsts.dlgcomponentundermousecursorisfirstselected msgid "Component under mouse cursor is first selected, then the popup menu commands work on it." -msgstr "" +msgstr "Komponenta pod ukazatelem myši je první vybraná, pak u ní funguje rolovací nabídka." #: lazarusidestrconsts.dlgconfigandtarget msgid "Config and Target" @@ -1041,11 +1069,6 @@ msgid "Config files" msgstr "Konfigurační soubory" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Jiné" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Ostatní ladící info" @@ -1157,7 +1180,7 @@ #: lazarusidestrconsts.dlgcurrentlyrespectedbymessageswindow msgid "Currently respected by messages window, jump history and search results." -msgstr "" +msgstr "Aktuálně respektováno oknem zpráv, historií skoků a výsledky hledání." #: lazarusidestrconsts.dlgcursorbeyondeol msgid "Cursor beyond EOL" @@ -1179,9 +1202,9 @@ msgid "User defined extension (.pp.xxx)" msgstr "Uživatelsky definované rozšíření (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" -msgstr "" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" +msgstr "ladění" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption msgid "Path Editor" @@ -1203,18 +1226,10 @@ msgid "Delete template " msgstr "Odstranit šablonu " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Plocha" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Tlačítka - " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Soubory na ploše" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Pokyny" @@ -1223,6 +1238,18 @@ msgid "Menus - " msgstr "Nabídky - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "Jméno plochy" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "%d ploch úspěšně exportováno do \"%s\"" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "%d ploch úspěšně importováno z \"%s\"" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Směr" @@ -1233,7 +1260,7 @@ #: lazarusidestrconsts.dlgdistancebetweengridpointsissmalleststep msgid "Distance between grid points is the smallest step when moving a control." -msgstr "" +msgstr "Vzdálenost mezi body mřížky je nejmenší krok při posunu prvků." #: lazarusidestrconsts.dlgdividercolordefault msgid "Use right margin color" @@ -1290,7 +1317,7 @@ #: lazarusidestrconsts.dlgdrawcomponentsnamebelowit msgid "Draw the component's name below it." -msgstr "" +msgstr "Kreslit jméno komponenty pod ní" #: lazarusidestrconsts.dlgedback msgid "Back" @@ -1305,6 +1332,7 @@ msgstr "Podadresář" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Šablony kódu" @@ -1407,7 +1435,7 @@ #: lazarusidestrconsts.dlgeditaccessdescunlockedopennewinoldwin msgid "If no unlocked tab is found, then this option will open a new Tab in an existing (and only in an existing) Window. A tab is only opened if a window exists, that has not yet an editor for the target file." -msgstr "Pokud není nalezena odemčená záložka, pak tato volba otevře novou záložku v existujícím (pouze existujícím) okně. Záložka je otevřena pouze pokud existující okno dosud nemá editor pto cílový soubor." +msgstr "Pokud není nalezena odemčená záložka, pak tato volba otevře novou záložku v existujícím (pouze existujícím) okně. Záložka je otevřena pouze pokud existující okno dosud nemá editor pro cílový soubor." #: lazarusidestrconsts.dlgedital msgid "Italic" @@ -1481,7 +1509,7 @@ #: lazarusidestrconsts.dlgenvlanguagehint msgid "Language of all IDE strings. Restart IDE after changing it for best result." -msgstr "" +msgstr "Jazyk všech řetězců IDE. Pro nejlepší výsledek restartovat po změně IDE." #: lazarusidestrconsts.dlgenvlguidelines msgid "Guide lines" @@ -1532,7 +1560,135 @@ #: lazarusidestrconsts.dlgfiles msgid "%s files" -msgstr "" +msgstr "%s souborů" + +#: lazarusidestrconsts.dlgfilterall +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Všechny soubory" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "Soubor šablony CodeTools" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "Soubor DCI" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "Formulář Delphi" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Balíček Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Projekt Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Jednotka Delphi" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Spustitelný" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "Soubor FPC zpráv" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "Soubory HTML" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "Bitmapové obrázky" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "Pixmapové obrázky" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "Obrázky PNG" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Nastavení plochy Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Typy souborů editoru" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Soubor Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Formulář Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Zahrnutý soubor Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Jiný soubor Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Balíček Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Projekt Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Zdrojový soubor projektu Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "Sezení Lazarusu" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Jednotka Lazarusu" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Soubor Pascalu" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programy" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML soubory" #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" @@ -1595,7 +1751,7 @@ #: lazarusidestrconsts.dlgfoldpascase msgid "Case" -msgstr "Case" +msgstr "Velikost znaků" #: lazarusidestrconsts.dlgfoldpasclass msgid "Class/Object" @@ -1697,6 +1853,10 @@ msgid "Processing Instruction" msgstr "Zpracování instrukcí" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "Běžící instance Lazarusu nepřijímá řádné soubory." + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Popředí" @@ -1711,7 +1871,7 @@ #: lazarusidestrconsts.dlgfpcexecutable msgid "Compiler executable (e.g. %s)" -msgstr "" +msgstr "Spustitelný soubor překladače (např. %s)" #: lazarusidestrconsts.dlgfpcsrcpath msgid "FPC source directory" @@ -1733,11 +1893,6 @@ msgid "&From cursor" msgstr "&Od kurzoru" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Volby" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Získat pozici" @@ -1754,13 +1909,17 @@ msgid "Grabber color" msgstr "Barva zachytávače" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "Zašedlé plochy jsou pro prostředí bez ukotvení" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Barva mřížky" #: lazarusidestrconsts.dlggridconsistsofsmalldots msgid "Grid consists of small dots which help aligning controls." -msgstr "" +msgstr "Mřížka je tvořena malými tečkami, které pomáhají zarovnání prvků." #: lazarusidestrconsts.dlggridx msgid "Grid size X" @@ -1811,7 +1970,7 @@ #: lazarusidestrconsts.dlgguidelineshint msgid "When a control is aligned horizontally or vertically with another controls, a blue guide line is shown." -msgstr "" +msgstr "Když je prvek zarovnán vodorovně nebo svisle s jinými prvky, je zobrazena modrá vodící čára." #: lazarusidestrconsts.dlggutter msgctxt "lazarusidestrconsts.dlggutter" @@ -1848,7 +2007,7 @@ #: lazarusidestrconsts.dlgheightofonepropertyingrid msgid "Height of one property in the grid." -msgstr "" +msgstr "Výška jedné vlastnosti v mřížce" #: lazarusidestrconsts.dlgheightpos msgid "Height:" @@ -1860,7 +2019,7 @@ #: lazarusidestrconsts.dlghideideonrunhint msgid "Do not show the IDE at all while program is running." -msgstr "" +msgstr "Vůbec neukazovat IDE pokud běží program" #: lazarusidestrconsts.dlghidesingletabinnotebook msgid "Hide tab in single page windows" @@ -1933,11 +2092,15 @@ #: lazarusidestrconsts.dlgifdefnodetmpactive msgid "Included mixed state $IFDEF node" -msgstr "Zahrnut $IFDEF uzel smíšerného stavu" +msgstr "Zahrnut $IFDEF uzel smíšeného stavu" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignorovat" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" +"Již existuje plocha se stejným jménem.\n" +"Prosím potvrďte jméno plochy:\n" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2045,13 +2208,21 @@ msgstr "1 (rychlé a přátelské k ladění)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +#, fuzzy +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "2 (Úroveň 1 + rychlá optimalizace)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +#, fuzzy +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "3 (Úroveň 2 + pomalá optimalizace)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" msgstr "0 (bez zvláštní optimalizace)" @@ -2068,13 +2239,9 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Zobrazit čísla řádků v běhových chybách při zpětném sledování" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Načíst nastavení plochy ze souboru" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" -msgstr "Hlavní menu" +msgstr "Hlavní nabídka" #: lazarusidestrconsts.dlgmainviewforms msgid "View Project Forms" @@ -2091,7 +2258,11 @@ #: lazarusidestrconsts.dlgmakeexecutable msgid "\"Make\" executable" -msgstr "" +msgstr "spustitelné pomocí \"Make\"" + +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "Spravovat plochy" #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" @@ -2246,9 +2417,10 @@ #: lazarusidestrconsts.dlgmouseaction msgid "Mouse Action" -msgstr "" +msgstr "Akce myši" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Jednoduchý" @@ -2454,6 +2626,10 @@ msgid "Gutter" msgstr "Žlábek" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "Změny řádků" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Svinout strom" @@ -2506,6 +2682,95 @@ msgid "Messages" msgstr "Zprávy" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Ladění" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Chyba" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "Fatální" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Tip" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Důležité" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "Normální" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "Poznámka" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "Panika" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "Čas a statistiky" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "Výřečný" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "Výřečně 2" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "Výřečně 3" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Varování" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "Více-vsuvkový (vybraný sloupec) přesun s kurzorem" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "Více-vsuvkový přesun s kurzorem" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "Povolit více vsuvek pro výběr sloupce" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "Více instancí Lazarusu" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "vždy startovat novou instanci" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "nepovolit více instancí" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "otevřít soubory běžící instance" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Vícenásobný výběr" @@ -2542,6 +2807,10 @@ msgid "Naming" msgstr "Pojmenování" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "Nová plocha ..." + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Automaticky nepřejmenovávat" @@ -2580,11 +2849,6 @@ msgid "Miscellaneous" msgstr "Různé" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Volby" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Nastavení rychlosti" @@ -2606,15 +2870,21 @@ msgstr "Ostatní optimalizace" #: lazarusidestrconsts.dlgotherunitfiles -#, fuzzy -#| msgid "Other unit files (-Fu) (delimiter is semicolon):" msgid "Other unit files (-Fu):" -msgstr "Jiné soubory jednotek (-Fu) (středník je oddělovač)" +msgstr "Jiné soubory jednotek (-Fu)" #: lazarusidestrconsts.dlgoverwriteblock msgid "Overwrite block" msgstr "Přepsání bloku" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" +"Nalezena plocha se jménem \"%s\".\n" +"Má být stará plocha přepsána?\n" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Popisky pro paletu komponent" @@ -2733,7 +3003,7 @@ #: lazarusidestrconsts.dlgporesources msgid "Resources" -msgstr "Zdroje (Resources)" +msgstr "Zdroje" #: lazarusidestrconsts.dlgposaveicon msgid "&Save Icon" @@ -2752,20 +3022,16 @@ msgstr "UI přístup (uiAccess)" #: lazarusidestrconsts.dlgpouseappbundle -#, fuzzy -#| msgid "Use Application Bundle for running and debugging (Darwin only)" msgid "Use Application Bundle for running and debugging" -msgstr "Použít aplikační balík pro spuštění a ladění (pouze Darwin)" +msgstr "Použít aplikační balík pro spuštění a ladění" #: lazarusidestrconsts.dlgpousemanifest -#, fuzzy -#| msgid "Use manifest file to enable themes (Windows only)" msgid "Use manifest file to enable themes" -msgstr "Použít soubor manifest k povolení grafických stylů (pouze Windows)" +msgstr "Použít soubor manifest k povole grafických témat" #: lazarusidestrconsts.dlgpreferdoubleclickoversingleclick msgid "Prefer double-click over single-click" -msgstr "" +msgstr "Raději dvojklik místo jednoho kliku" #: lazarusidestrconsts.dlgpriorities msgid "Priorities" @@ -2801,8 +3067,8 @@ msgstr "Jméno vlastnosti" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" -msgstr "Otevřít poslední projekt při startu" +msgid "Open last project and packages at start" +msgstr "Otevřít poslední projekt a balíčky při startu" #: lazarusidestrconsts.dlgqshowborderspacing msgid "Show border spacing" @@ -2816,6 +3082,10 @@ msgid "Snap to grid" msgstr "Přichytit k mřížce" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "Opravdu odebrat plochu \"%s\"?" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Odkazy" @@ -2824,6 +3094,10 @@ msgid "Regular e&xpressions" msgstr "&Regulární výrazy" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "Přejmenovat plochu" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Nahradit &vše" @@ -2850,7 +3124,7 @@ #: lazarusidestrconsts.dlgroworkingdirectory msgid "Working directory" -msgstr "Pracovní složka:" +msgstr "Pracovní adresář:" #: lazarusidestrconsts.dlgrubberbandselectsgrandchildren msgid "Select grandchildren" @@ -2865,6 +3139,22 @@ msgid "Rubberband Selection" msgstr "Výběr vodících linek" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" +"Běžící instance Lazarusu nepřijímá řádné soubory.\n" +"Chcete je otevřít v nové instanci IDE?\n" +"\n" +"%s\n" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "Instance Lazarusu běží, ale neodpovídá." + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Zobrazení (ne pro win32, např. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2894,9 +3184,9 @@ msgid "Run Parameters" msgstr "Spustit s parametry" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Uložit nastavení plochy do souboru" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "Uložit aktuální plochu jako" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2908,7 +3198,7 @@ #: lazarusidestrconsts.dlgsaveeditorinfohint msgid "The files are available in the \"Open Recent\" history list." -msgstr "" +msgstr "Soubory jsou dostupné v seznamu historie \"Otevřít nedávné\"." #: lazarusidestrconsts.dlgsaveeditorinfoproject msgid "Save editor info only for project files" @@ -2916,7 +3206,7 @@ #: lazarusidestrconsts.dlgsaveeditorinfoprojecthint msgid "Only files that belong to this project." -msgstr "" +msgstr "Pouze soubory patřící do tohoto projektu." #: lazarusidestrconsts.dlgscrollbyoneless msgid "Scroll by one less" @@ -2957,16 +3247,20 @@ #: lazarusidestrconsts.dlgsearchscope msgid "Search scope" -msgstr "" +msgstr "Rozsah hledání" #: lazarusidestrconsts.dlgselectallchildcontrols msgid "Select all child controls together with their parent." -msgstr "" +msgstr "Vybrat všechny dětské prvky s jejich rodičem." #: lazarusidestrconsts.dlgselectedtext msgid "&Selected text" msgstr "&Vybraný text" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "Nastavit aktivní" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Nastavit všechny prvky na výchozí" @@ -2979,17 +3273,37 @@ msgid "Set property Variable" msgstr "Nastavit hodnotu vlastnosti" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "Jméno parametru pro výchozí nastavovač procedury." + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "je prefix" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "Pokud zaškrtnuto, pak je předpona \"Nastavit proměnnou vlastnosti\". Jinak je pevné jméno." + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "použít const" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "Pokud zaškrtnuto, nastavovací parametr je označen jako \"const\"." + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Ukázat všechny jednotky" #: lazarusidestrconsts.dlgshowcaptionsofnonvisuals msgid "Show captions of non-visual components" -msgstr "" +msgstr "Ukázat titulky neviditelných komponent" #: lazarusidestrconsts.dlgshowcompiledprocedures msgid "Show compiled procedures" -msgstr "Ukázat kompilované procedury" +msgstr "Ukázat přeložené procedury" #: lazarusidestrconsts.dlgshowcompilinglinenumbers msgctxt "lazarusidestrconsts.dlgshowcompilinglinenumbers" @@ -3006,11 +3320,11 @@ #: lazarusidestrconsts.dlgshowdesignerhints msgid "Show designer hints" -msgstr "" +msgstr "Ukázat tipy návrháže" #: lazarusidestrconsts.dlgshowdesignerhintshint msgid "Hint shows control's position or size while moving or resizing it." -msgstr "" +msgstr "Pokyn ukazuje pozici prvku nebo velikost během přesunu nebo změny jeho velikosti." #: lazarusidestrconsts.dlgshoweverything msgid "Show everything" @@ -3035,7 +3349,7 @@ #: lazarusidestrconsts.dlgshowingwindows msgid "Showing Windows" -msgstr "" +msgstr "Ukazují se okna" #: lazarusidestrconsts.dlgshowlinenumbers msgctxt "lazarusidestrconsts.dlgshowlinenumbers" @@ -3044,7 +3358,7 @@ #: lazarusidestrconsts.dlgshowmessagesicons msgid "Show Messages Icons" -msgstr "" +msgstr "Ukázat ikony zpráv" #: lazarusidestrconsts.dlgshownotes msgid "Show notes" @@ -3100,7 +3414,11 @@ #: lazarusidestrconsts.dlgsnapguidelineshint msgid "When a control is close to being aligned with another control, it snaps to the aligned position." -msgstr "" +msgstr "Když je prvek blízko k zarovnání s jiným prvkem, přilne k zarovnané pozici." + +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "Víceřádkové tabelátory" #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" @@ -3138,7 +3456,7 @@ #: lazarusidestrconsts.dlgstringautoprefix msgid "Prefix string on new line" -msgstr "Přefix. řetězce na novém řádku" +msgstr "Předpona řetězců na novém řádku" #: lazarusidestrconsts.dlgstringbreakindenttab msgid "String ''" @@ -3196,13 +3514,18 @@ #: lazarusidestrconsts.dlgtestprjdir msgid "Directory for building test projects" -msgstr "Složka pro sestavení pokusných projektů" +msgstr "Adresář pro sestavení pokusných projektů" #: lazarusidestrconsts.dlgtexttofind msgctxt "lazarusidestrconsts.dlgtexttofind" msgid "&Text to find" msgstr "Hledaný &Text" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "Přepnout jako ladící plochu" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Tip aktuální třídy/procedury" @@ -3217,7 +3540,7 @@ #: lazarusidestrconsts.dlgtrimspacetypecaretmove msgid "Caret or Edit" -msgstr "Ukazatel nebo editace" +msgstr "Vsuvka nebo úprava" #: lazarusidestrconsts.dlgtrimspacetypeeditline msgid "Line Edited" @@ -3286,10 +3609,8 @@ msgstr "Použít spouštěcí aplikaci" #: lazarusidestrconsts.dlguseminimumime -#, fuzzy -#| msgid "Ime handled by System" msgid "IME handled by System" -msgstr "Ime obsluhováno systémem" +msgstr "IME obsluhováno systémem" #: lazarusidestrconsts.dlguserschemeerror msgid "Failed to load user-scheme file %s" @@ -3301,7 +3622,7 @@ #: lazarusidestrconsts.dlguseschemelocal msgid "Use local scheme settings" -msgstr "Použít nastavení lokálního schéma" +msgstr "Použít nastavení místního schéma" #: lazarusidestrconsts.dlgusesyntaxhighlight msgid "Use syntax highlight" @@ -3313,7 +3634,7 @@ #: lazarusidestrconsts.dlguseunitcaption msgid "Add unit to Uses section" -msgstr "Přidatt jednotku do sekce použitých jednotek" +msgstr "Přidat jednotku do sekce použitých jednotek" #: lazarusidestrconsts.dlgvaluecolor msgctxt "lazarusidestrconsts.dlgvaluecolor" @@ -3409,7 +3730,7 @@ #: lazarusidestrconsts.fdmresetmenu msgid "Reset ..." -msgstr "Reset ..." +msgstr "Nulovat ..." #: lazarusidestrconsts.fdmsaveformasxml msgid "Save Form as XML" @@ -3578,6 +3899,10 @@ msgid "File not unit" msgstr "Soubor není jednotka" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "Ikona (maximálně 24x24):" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Neplatný typ předka" @@ -3620,10 +3945,13 @@ msgstr "Nový soubor" #: lazarusidestrconsts.lisa2pnopackagefoundfordependencypleasechooseanexisting -#, fuzzy msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Pro závislost \"%s\" nebyl nalezen balíček.%sProsím vyberte existující balíček." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "Balíček/Projekt" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Jméno stránky je příliš dlouhé" @@ -3678,20 +4006,17 @@ msgstr "Jméno třídy \"%s\" není platný identifikátor pascalu." #: lazarusidestrconsts.lisa2pthefileispartofthecurrentprojectitisabadidea -#, fuzzy msgid "The file \"%s\" is part of the current project.%sIt is a bad idea to share files between projects and packages." msgstr "Soubor \"%s\" je částí aktuálního projektu.%sSdílet soubory mezi projekty a balíčky je špatný nápad." #: lazarusidestrconsts.lisa2pthefilenameisambiguouspleasespecifiyafilename -#, fuzzy msgid "The filename \"%s\" is ambiguous, because the package has no default directory yet.%sPlease specify a filename with full path." msgstr "Jméno souboru \"%s\" je nejednoznačné, protože balíček zatím nemá předvolený adresář.%sProsím zadejte jméno souboru s úplnou cestou." #: lazarusidestrconsts.lisa2pthemaximumversionisinvalidpleaseusetheformatmajor -#, fuzzy msgctxt "lazarusidestrconsts.lisa2pthemaximumversionisinvalidpleaseusetheformatmajor" msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" -msgstr "Nejvýšší verze \"%s\" je neplatná.%sProsím použijte formát hlavní.vedlejší.vydání.sestavení%sNapříklad: 1.0.20.10" +msgstr "Nejvyšší verze \"%s\" je neplatná.%sProsím použijte formát hlavní.vedlejší.vydání.sestavení%sNapříklad: 1.0.20.10" #: lazarusidestrconsts.lisa2pthemaximumversionislowerthantheminimimversion msgctxt "lazarusidestrconsts.lisa2pthemaximumversionislowerthantheminimimversion" @@ -3699,7 +4024,6 @@ msgstr "Maximální verze je nižší než Minimální verze." #: lazarusidestrconsts.lisa2ptheminimumversionisinvalidpleaseusetheformatmajor -#, fuzzy msgctxt "lazarusidestrconsts.lisa2ptheminimumversionisinvalidpleaseusetheformatmajor" msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Nejnižší verze %s je neplatná.%sProsím použijte formát hlavní.vedlejší.vydání.sestavení%sNapříklad: 1.0.20.10" @@ -3709,7 +4033,6 @@ msgstr "Balíček již má závislost na balíčku \"%s\"." #: lazarusidestrconsts.lisa2pthepackagenameisinvalidpleasechooseanexisting -#, fuzzy msgid "The package name \"%s\" is invalid.%sPlease choose an existing package." msgstr "Jméno balíčku \"%s\" není platné.%sProsím vyberte existující balíček." @@ -3734,7 +4057,6 @@ msgstr "Jméno jednotky \"%s\" nesouhlasí s názvem souboru." #: lazarusidestrconsts.lisa2ptheunitnameisthesameasanregisteredcomponent -#, fuzzy msgid "The unit name \"%s\" is the same as a registered component.%sUsing this can cause strange error messages." msgstr "Jméno jednotky \"%s\" je stejné jaké má registrované komponenta.%sToto použití může způsobit podivná chybová hlášení." @@ -3758,6 +4080,11 @@ msgid "Abandon changes?" msgstr "Zrušit změny?" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Přerušit" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Přerušit vše" @@ -3779,15 +4106,13 @@ msgstr "Přerušit celé načítání" #: lazarusidestrconsts.lisabout -#, fuzzy -#| msgid "About ..." msgctxt "lazarusidestrconsts.lisabout" msgid "About" -msgstr "Info ..." +msgstr "O aplikaci" #: lazarusidestrconsts.lisabout2 msgid "About %s" -msgstr "Info o %s" +msgstr "Informace o %s" #: lazarusidestrconsts.lisaboutdocumentation msgid "Documentation:" @@ -3803,7 +4128,7 @@ #: lazarusidestrconsts.lisaboutlazarusmsg msgid "License: GPL/LGPL. See Lazarus and Free Pascal sources for license details.%sLazarus is an IDE to create graphical and console applications with Free Pascal. Free Pascal is Pascal and Object Pascal compiler that runs on Windows, Linux, Mac OS X, FreeBSD and more.%sLazarus is the missing part of the puzzle that will allow you to develop programs for all of the above platforms in a Delphi like environment. The IDE is a RAD tool that includes a form designer.%sAs Lazarus is growing we need more developers." -msgstr "Licence: GPL/LGPL%sLazarus je IDE pro tvorbu (grafických a konzolových) aplikací s Free Pascalem. Free Pascal je (L)GPL Pascal a Object Pascal překladač, který beží ve Windows, Linuxu, Mac OS X, FreeBSD a jiných.%sLazarus je chybějící částí skládačky, která umožní vytvářet programy pro všechny výše uvedené platformy v prostředí podobném Delphi. IDE je RAD nástroj, který zahrnuje návrháře formulářů.%sVzhledem k tomu, že Lazarus roste, potřebujeme více vývojářů." +msgstr "Licence: GPL/LGPL%sLazarus je IDE pro tvorbu (grafických a konzolových) aplikací s Free Pascalem. Free Pascal je (L)GPL Pascal a Object Pascal překladač, který běží ve Windows, Linuxu, Mac OS X, FreeBSD a jiných.%sLazarus je chybějící částí skládačky, která umožní vytvářet programy pro všechny výše uvedené platformy v prostředí podobném Delphi. IDE je RAD nástroj, který zahrnuje návrháře formulářů.%sVzhledem k tomu, že Lazarus roste, potřebujeme více vývojářů." #: lazarusidestrconsts.lisaboutnocontributors msgid "Cannot find contributors list." @@ -3860,7 +4185,7 @@ #: lazarusidestrconsts.lisadddelphidefinehint msgid "Useful when the code has checks for supported compiler versions" -msgstr "Užitečné když má kód kontroly pro podporované verze kompileru" +msgstr "Užitečné, když má kód kontroly pro podporované verze překladače" #: lazarusidestrconsts.lisaddedmissingobjectstopascalsource msgid "Added missing object \"%s\" to pascal source." @@ -3870,6 +4195,14 @@ msgid "Added property \"%s\" for %s." msgstr "Přidána vlastnost \"%s\" pro %s" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "Přidat -FcUTF8" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "Může být potřeba pokud zdrojové soubory mají ne-ansi znaky v řetězcích." + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Přidat soubory v adresáři" @@ -3880,15 +4213,15 @@ #: lazarusidestrconsts.lisadditiondoesnotfitthecurrentmessage msgid "Addition does not fit the current message" -msgstr "" +msgstr "Přídavek nevyhovuje aktuální zprávě" #: lazarusidestrconsts.lisadditionfitsthecurrentmessage msgid "Addition fits the current message" -msgstr "" +msgstr "Přídavek vyhovuje aktuální zprávě" #: lazarusidestrconsts.lisadditions msgid "Additions" -msgstr "" +msgstr "Přídavky" #: lazarusidestrconsts.lisaddkeyworddo msgid "Add keyword \"do\"" @@ -3935,6 +4268,10 @@ msgid "&Address Breakpoint ..." msgstr "Adresa bodu přerušení ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "Přidat >>" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "Přidat do cesty hledání \"include\"?" @@ -3943,9 +4280,13 @@ msgid "Add %s to project?" msgstr "Přidat %s do projektu?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "Přidat do spouštěných komponent?" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" -msgstr "Přidat do cesty hledání unit?" +msgstr "Přidat do cesty hledání jednotek?" #: lazarusidestrconsts.lisaddunitinterfaces msgid "Add unit interfaces" @@ -3971,10 +4312,6 @@ msgid "File type" msgstr "Typ souboru" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Má registrační proceduru" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Neplatný balíček" @@ -3996,19 +4333,10 @@ msgid "Show all" msgstr "Ukázat vše" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Soubor \"%s\"%s již je v balíčku %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Balíček %s je pouze pro čtení." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Jméno jednotky: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "Soubor \"%s\" už existuje.%sNahradit?" @@ -4033,10 +4361,6 @@ msgid "<All build modes>" msgstr "<Všechny módy sestavení>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Všechny soubory" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Všechny zděděné volby" @@ -4058,9 +4382,8 @@ msgstr "Všechny parametry této funkce jsou již v tomto volání nastaveny. Není co přidat." #: lazarusidestrconsts.lisallyourmodificationstowillbelostandthefilereopened -#, fuzzy msgid "All your modifications to \"%s\"%swill be lost and the file reopened." -msgstr "Všechny vaše úpravy v \"%s\"%s budou ztraceny a soubor bude otevřen znovu." +msgstr "Všechny vaše úpravy v \"%s\"%sbudou ztraceny a soubor bude otevřen znovu." #: lazarusidestrconsts.lisalpha msgid "Alpha" @@ -4084,7 +4407,7 @@ #: lazarusidestrconsts.lisalwaysdrawselecteditemsfocused msgid "Always draw selected items focused" -msgstr "Vybrané položky se vždy vykrelí zaměřené" +msgstr "Vybrané položky se vždy vykreslí zaměřené" #: lazarusidestrconsts.lisalwaysignore msgid "Always ignore" @@ -4099,7 +4422,6 @@ msgstr "Nalezen nejasný soubor" #: lazarusidestrconsts.lisambiguousfilefoundthisfilecanbemistakenwithdelete -#, fuzzy msgid "Ambiguous file found: \"%s\"%sThis file can be mistaken with \"%s\"%sDelete the ambiguous file?" msgstr "Nalezen nejednoznačný soubor: \"%s\"%sTento soubor může být chybě zaměněn za \"%s\"%sSmazat nejednoznačný soubor?" @@ -4156,9 +4478,8 @@ msgstr "Ukotvit horní okraj k hornímu okraji sourozence. Použijte BorderSpacing pro nastavení vzdálenosti. BorderSpacing sourozence je ignorováno." #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -#, fuzzy -msgid "An error occured at last startup while loading %s!%sLoad this project again?" -msgstr "Při posledním startu došlo k chybě při načítání \"%s!\"%sNačíst znovu tento projekt?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" +msgstr "Při posledním startu došlo k chybě při načítání %s!%sNačíst znovu tento projekt?" #: lazarusidestrconsts.lisapplicationclassname msgid "&Application class name" @@ -4183,7 +4504,7 @@ #: lazarusidestrconsts.lisapplyconventionshint msgid "Adjust name extension and character case for platform and file type." -msgstr "" +msgstr "Upravte jméno přípony a velikost znaků pro platformu a typ souboru." #: lazarusidestrconsts.lisaprojectunitcannotbeusedbyotherpackagesprojects msgid "A project unit can not be used by other packages/projects" @@ -4202,10 +4523,8 @@ msgstr "Zeptat se před uložením sezení projektu" #: lazarusidestrconsts.lisaskforcomponentnameafterputtingitonform -#, fuzzy -#| msgid "Ask for component name after putting it on a designer form" msgid "Ask for component name after putting it on a designer form." -msgstr "Dotázat se na jméno komponenty po jejím umístění na návrhový formulář" +msgstr "Dotázat se na jméno komponenty po jejím umístění na návrhový formulář." #: lazarusidestrconsts.lisaskforfilenameonnewfile msgid "Ask for file name on new file" @@ -4219,6 +4538,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Užitečné nastavení na systémech Windows je: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "Automaticky upravit výšku hlavního okna IDE" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "Ukázat celou paletu komponent" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "Pokud je paleta komponent roztažena přes více řádek, zobrazit je všechny a ne pouze jednu." + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Automatické dokončení: vypnuto" @@ -4246,7 +4577,7 @@ #: lazarusidestrconsts.lisautomaticallyconvertlfmtolrs msgid "Automatically convert .lfm files to .lrs resource files" -msgstr "" +msgstr "Automaticky převést soubory .lfm na soubory zdrojů .lrs" #: lazarusidestrconsts.lisautomaticallyignoreforselection msgid "do not complete selection" @@ -4276,6 +4607,10 @@ msgid "do not add character" msgstr "nepřidávat znak" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "Automaticky použít jediný možný identifikátor" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Doplňování a Tipy" @@ -4318,11 +4653,11 @@ #: lazarusidestrconsts.lisbelessverbosecanbegivenmultipletimes msgid "be less verbose, can be given multiple times" -msgstr "" +msgstr "buď méně výřečný, může být dáno vícekrát" #: lazarusidestrconsts.lisbemoreverbosecanbegivenmultipletimes msgid "be more verbose, can be given multiple times" -msgstr "" +msgstr "buď víc výřečný, může být dáno vícekrát" #: lazarusidestrconsts.lisbestviewedbyinstallingahtmlcontrolliketurbopowerip msgid "Best viewed by installing a HTML control like turbopoweriprodsgn" @@ -4354,7 +4689,7 @@ #: lazarusidestrconsts.lisbfworkingdirectoryleaveemptyforfilepath msgid "Working directory (leave empty for file path)" -msgstr "Pracovní složka (nechejte prázné pro cestu souboru)" +msgstr "Pracovní adresář (nechejte prázdné pro cestu souboru)" #: lazarusidestrconsts.lisboldnondefaultobjectinspector msgid "Bold non default values" @@ -4364,6 +4699,11 @@ msgid "Border space" msgstr "Okrajový prostor" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Dolní" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Dolní okrajový prostor. Tato hodnota je přidána k základnímu okraji a je použita pro místo pod prvkem." @@ -4456,7 +4796,7 @@ #: lazarusidestrconsts.lisbuildfollowingmodes msgid "Build the following modes" -msgstr "" +msgstr "Sestavit následující režimy" #: lazarusidestrconsts.lisbuildide msgid "Build IDE" @@ -4468,12 +4808,16 @@ #: lazarusidestrconsts.lisbuilding msgid "Building" -msgstr "" +msgstr "Sestavování" #: lazarusidestrconsts.lisbuildinglazarusfailed msgid "Building Lazarus failed" msgstr "Sestavení Lazarusu selhalo" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "Režim sestavení: %s" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Rozdíly mezi sestavovacími módy" @@ -4553,32 +4897,28 @@ msgstr "Nelze vytvořit soubor \"%s\"" #: lazarusidestrconsts.liscannotexecute -#, fuzzy -#| msgid "can not execute \"%s\"" msgid "cannot execute \"%s\"" -msgstr "nelze spustit %s" +msgstr "nelze spustit \" %s\"" #: lazarusidestrconsts.liscannotfind msgid "Cannot find %s" msgstr "Nelze najít %s" #: lazarusidestrconsts.liscannotfindexecutable -#, fuzzy -#| msgid "can not find executable \"%s\"" msgid "cannot find executable \"%s\"" -msgstr "nelze najít spustitelný %s" +msgstr "nelze najít spustitelný \"%s\"" #: lazarusidestrconsts.liscannotfindlazarusstarter msgid "Cannot find Lazarus starter:%s%s" -msgstr "Nelze nalézt spouštěč lazarusu:%s%s" +msgstr "Nelze nalézt spouštěč Lazarusu:%s%s" #: lazarusidestrconsts.liscannotfindunit msgid "Cannot find unit %s" -msgstr "Nelze najít unitu %s" +msgstr "Nelze najít jednotku %s" #: lazarusidestrconsts.liscannottestthecompilerwhiledebuggingorcompiling msgid "Cannot test the compiler while debugging or compiling." -msgstr "Nelze testovat kompiler během ladění/kompilace." +msgstr "Nelze testovat překladač během ladění/překladu." #: lazarusidestrconsts.liscanonlychangetheclassoftcomponents msgid "Can only change the class of TComponents." @@ -4590,7 +4930,7 @@ #: lazarusidestrconsts.liscaptioncomparefiles msgid "Compare files (not for creating patches)" -msgstr "" +msgstr "Porovnat soubory (nevytvářet záplaty)" #: lazarusidestrconsts.liscbpfiles msgid "%s (%s files)" @@ -4614,7 +4954,7 @@ #: lazarusidestrconsts.lisccochecktestdir msgid "Please check the Test directory under %sTools -> Options -> Files -> Directory for building test projects" -msgstr "Prosím zkontrolujte adresář Test v %sNástroje -> Volbyí -> Soubory -> Adresář pro sestavení testovacích projektů" +msgstr "Prosím zkontrolujte adresář Test v %sNástroje -> Volby -> Soubory -> Adresář pro sestavení testovacích projektů" #: lazarusidestrconsts.lisccocompilernotanexe msgid "The compiler \"%s\" is not an executable file.%sDetails: %s" @@ -4630,7 +4970,7 @@ #: lazarusidestrconsts.lisccodatesdiffer msgid "The dates of the .ppu files of FPC differ by more than one hour.%sThis can mean, they are from two different installations.%sFile1: %s%sFile2: %s" -msgstr "Datumy .ppu souborů FPC se liší o víc než hodinu.%sTo může znamenat, že jsou z různých instalací.%sSoubor1: %s%sSoubor2: %s" +msgstr "Data.ppu souborů FPC se liší o víc než hodinu.%sTo může znamenat, že jsou z různých instalací.%sSoubor1: %s%sSoubor2: %s" #: lazarusidestrconsts.lisccoerrorcaption msgctxt "lazarusidestrconsts.lisccoerrorcaption" @@ -4726,6 +5066,7 @@ msgstr "neobvyklé znaky" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Varování" @@ -4941,7 +5282,7 @@ msgstr "Nesprávné odsazení" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Došlo k výjimce během mazání%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5071,7 +5412,7 @@ #: lazarusidestrconsts.lischangedscoordofsfromdtodinsides msgid "Changed %s coord of %s from \"%d\" to \"%d\" inside %s." -msgstr "Změnena souřadnice %s od %s z \"%d\" na \"%d\" uvnitř %s." +msgstr "Změněna souřadnice %s od %s z \"%d\" na \"%d\" uvnitř %s." #: lazarusidestrconsts.lischangeencoding msgid "Change Encoding" @@ -5110,19 +5451,18 @@ msgstr "Vybrat vše" #: lazarusidestrconsts.lischeckfordiskfilechangesviacontent -#, fuzzy msgctxt "lazarusidestrconsts.lischeckfordiskfilechangesviacontent" msgid "Check for disk file changes via content rather than timestamp" msgstr "Kontrolovat změny v souborech na disku raději podle obsahu než podle času" #: lazarusidestrconsts.lischeckifpackagecreatesppuchecknothingdeletesthisfil msgid ". Check if package %s creates %s.ppu, check nothing deletes this file and check that no two packages have access to the unit source." -msgstr ". Zkontrolujte, jestli balíček %s vytváří %s.ppu, jestli tento soubor nic nemaže a jestli žádné dva balíčky nemají přístup k zdroji unity." +msgstr ". Zkontrolujte, jestli balíček %s vytváří %s.ppu, jestli tento soubor nic nemaže a jestli žádné dva balíčky nemají přístup k zdroji jednotky." #: lazarusidestrconsts.lischeckifpackageisinthedependencies msgctxt "lazarusidestrconsts.lischeckifpackageisinthedependencies" msgid ". Check if package %s is in the dependencies" -msgstr ". Zkostrolujte, jestli je balíček %s v seznamu závislostí" +msgstr ". Zkontrolujte, jestli je balíček %s v seznamu závislostí" #: lazarusidestrconsts.lischeckifthenexttokeninsourceisanendandifnotreturnsl msgid "check if the next token in source is an end and if not returns lineend + end; + lineend" @@ -5133,11 +5473,9 @@ msgstr "Zkontrolovat nastavení" #: lazarusidestrconsts.lischecksearchpathpackagetryacleanrebuildcheckimpleme -#, fuzzy -#| msgid ". Check search path package %s, try a clean rebuild, check implementation uses sections." msgctxt "lazarusidestrconsts.lischecksearchpathpackagetryacleanrebuildcheckimpleme" msgid ". Check search path of package %s, try a clean rebuild, check implementation uses sections." -msgstr "Zkontrolujte cestu pro hledání balíčku %s, zkuste čisté sestavení, zkontrolujte sekci 'uses' sekce 'implementation'." +msgstr ". Zkontrolujte cestu pro balíčku %s, zkuste čisté sestavení, zkontrolujte sekci 'uses' sekce 'implementation'." #: lazarusidestrconsts.lischeckthetargetoscpulclwidgettypemaybeyouhavetoreco msgid "%s Check the target (OS, CPU, LCL widget type). Maybe you have to recompile the package for this target or set another target for the project." @@ -5145,7 +5483,7 @@ #: lazarusidestrconsts.lischeckuncheckall msgid "Check/uncheck all" -msgstr "" +msgstr "Označit/Odznačit vše" #: lazarusidestrconsts.lischooseadifferentname msgid "Choose a different name" @@ -5165,7 +5503,7 @@ #: lazarusidestrconsts.lischooseanameforthecomponent msgid "Choose a name for the component" -msgstr "" +msgstr "Vybrat jméno pro komponentu" #: lazarusidestrconsts.lischooseanexamplefile msgid "Choose an example file" @@ -5179,9 +5517,13 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Vyberte pascalovských soubor pro ukázku odsazení" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "Vložit novou metodu do sekce" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" -msgstr "" +msgstr "Vybrat spustitelné překladače (%s)" #: lazarusidestrconsts.lischoosecompilermessages msgid "Choose compiler messages file" @@ -5189,7 +5531,7 @@ #: lazarusidestrconsts.lischoosedebuggerexecutable msgid "Choose debugger executable" -msgstr "" +msgstr "Vybrat spustitelné ladiče" #: lazarusidestrconsts.lischoosedelphipackage msgid "Choose Delphi package (*.dpk)" @@ -5207,6 +5549,10 @@ msgid "Choose directory" msgstr "Vyberte adresář" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "Vybrat spustitelné" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Vyberte zdrojový adresář FPC" @@ -5217,7 +5563,7 @@ #: lazarusidestrconsts.lischoosemakeexecutable msgid "Choose \"make\" executable" -msgstr "" +msgstr "Vybrat \"make\" spustitelné" #: lazarusidestrconsts.lischoosename msgid "Choose name" @@ -5338,7 +5684,7 @@ #: lazarusidestrconsts.liscleanuppackage msgid "Clean up package \"%s\"." -msgstr "" +msgstr "Vyčistit balíček \"%s\"." #: lazarusidestrconsts.liscleanupunitpath msgid "Clean up unit path?" @@ -5361,13 +5707,13 @@ msgid "Click here to browse the file" msgstr "K procházení souboru klikněte zde" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Klikněte pro zobrazení možných použití" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "Klikni pro zobrazení vybraných" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" -msgstr "" +msgstr "Klikni pro výběr stránky palety" #: lazarusidestrconsts.lisclone msgid "Clone" @@ -5385,7 +5731,7 @@ #: lazarusidestrconsts.liscloseallchecked msgid "Close All Checked" -msgstr "Zavřit všechny vybrané" +msgstr "Zavřít všechny vybrané" #: lazarusidestrconsts.lisclosealltabsclose msgid "Close files" @@ -5432,6 +5778,10 @@ msgid "Pages" msgstr "Stránky" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "Paleta je &viditelná" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "Nav&rátit výchozí" @@ -5708,7 +6058,7 @@ #: lazarusidestrconsts.liscodetoolsdefsdirectory msgid "%s directory" -msgstr "%s složka" +msgstr "%s adresář" #: lazarusidestrconsts.liscodetoolsdefselse msgid "Else" @@ -5741,7 +6091,7 @@ #: lazarusidestrconsts.liscodetoolsdefsinsertbehinddirectory msgid "Directory" -msgstr "Složka" +msgstr "Adresář" #: lazarusidestrconsts.liscodetoolsdefsinsertdelphi5compilertemp msgid "Insert Delphi 5 Compiler Template" @@ -5883,7 +6233,7 @@ #: lazarusidestrconsts.liscodetoolsdefsprojectdirectory2 msgid "%s project directory" -msgstr "%s složka projektu" +msgstr "%s adresář projektu" #: lazarusidestrconsts.liscodetoolsdefsreaderror msgid "Read error" @@ -5967,7 +6317,7 @@ #: lazarusidestrconsts.liscodetoolsoptscaret msgid "Caret (^)" -msgstr "" +msgstr "Stříška (^)" #: lazarusidestrconsts.liscodetoolsoptscolon msgid "Colon" @@ -6020,10 +6370,6 @@ msgid "Symbol" msgstr "Symbol" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "Šablona CodeTools" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Spustit pak" @@ -6092,7 +6438,7 @@ #: lazarusidestrconsts.liscompileproject msgid "Compile Project" -msgstr "" +msgstr "Přeložit projekt" #: lazarusidestrconsts.liscompiler msgid "Compiler" @@ -6104,7 +6450,7 @@ #: lazarusidestrconsts.liscompilererrorinvalidcompiler msgid "Error: invalid compiler: %s" -msgstr "Chyba: neplatný kompilátor: %s" +msgstr "Chyba: neplatný překladač: %s" #: lazarusidestrconsts.liscompilerfilename msgid "Compiler filename" @@ -6112,7 +6458,7 @@ #: lazarusidestrconsts.liscompilerhintyoucansetthecompilerpath msgid "Hint: you can set the compiler path in Tools -> Options-> Files -> Compiler Path" -msgstr "Tip: cestu překladače můžete nastavit v Nástroje -> Nastavení -> Soubory -> Cesta překaldače" +msgstr "Tip: cestu překladače můžete nastavit v Nástroje -> Nastavení -> Soubory -> Cesta překladače" #: lazarusidestrconsts.liscompilermessagesfilenotfound msgid "Compiler messages file not found:%s%s" @@ -6132,14 +6478,12 @@ msgstr "Přeložit" #: lazarusidestrconsts.liscompilewithvdformoredetailscheckforduplicates -#, fuzzy,badformat -#| msgid "%s -> Compile with -vd for more details. Check for duplicates." msgid "Compile with -vd for more details. Check for duplicates." -msgstr "%s-> Kompilujte s -vd pro více detailů. Kontrolujte na duplicity." +msgstr "Přeložit s -vd pro více podrobností. Kontroluje na duplicity." #: lazarusidestrconsts.liscompiling msgid "%s (compiling ...)" -msgstr "%s (kompilování ...)" +msgstr "%s (překládání ...)" #: lazarusidestrconsts.liscompletionlonglinehinttype msgid "Show long line hints" @@ -6206,7 +6550,7 @@ #: lazarusidestrconsts.lisconfigfileofadditions msgid "Config file of additions:" -msgstr "" +msgstr "Soubor nastavení pro přídavky:" #: lazarusidestrconsts.lisconfigurebuild msgid "Configure Build %s" @@ -6216,6 +6560,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Nastavení \"Sestavení Lazarusu\"" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "Nastavit nástrojový panel" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Nastavit Lazarus IDE" @@ -6300,7 +6648,7 @@ #: lazarusidestrconsts.liscontinuebuilding msgid "Continue building" -msgstr "" +msgstr "Pokračovat v sestavování" #: lazarusidestrconsts.liscontinuewithoutloadingform msgid "Continue without loading form" @@ -6320,23 +6668,23 @@ #: lazarusidestrconsts.lisconvaddedunittousessection msgid "Added unit %s to uses section" -msgstr "" +msgstr "Přidána jednotka %s do sekce uses" #: lazarusidestrconsts.lisconvaddingflagforregister msgid "Adding flag for \"Register\" procedure in unit %s." -msgstr "" +msgstr "Přidání příznaku pro proceduru \"Register\" v jednotce %s." #: lazarusidestrconsts.lisconvbracketmissingfromreplfunc msgid "\")\" is missing from replacement function: %s" -msgstr "" +msgstr "\")\" chybí ve funkci nahrazení: %s" #: lazarusidestrconsts.lisconvbracketnotfound msgid "Bracket not found" -msgstr "" +msgstr "Závorka nenalezena" #: lazarusidestrconsts.lisconvconvertedfrom msgid " { *Converted from %s* }" -msgstr "" +msgstr "{ *Převedeno z %s* }" #: lazarusidestrconsts.lisconvcoordhint msgid "An offset is added to Top coordinate of controls inside visual containers" @@ -6348,7 +6696,7 @@ #: lazarusidestrconsts.lisconvdeletedfile msgid "Deleted file %s" -msgstr "" +msgstr "Odstranit soubor %s" #: lazarusidestrconsts.lisconvdelphiaddedcustomoptiondefines msgid "Added defines %s in custom options" @@ -6385,7 +6733,7 @@ #: lazarusidestrconsts.lisconvdelphiconversiontook msgid "Conversion took: %s" -msgstr "Konverze zabrala: %s" +msgstr "Převod zabral: %s" #: lazarusidestrconsts.lisconvdelphiconvertdelphipackage msgid "Convert Delphi package" @@ -6405,11 +6753,11 @@ #: lazarusidestrconsts.lisconvdelphiconvertingfoundunits msgid "*** Converting unit files found during conversion ***" -msgstr "*** Převádím soubory unit nalezené během konverze ***" +msgstr "*** Převádím soubory jednotek nalezené během převodu ***" #: lazarusidestrconsts.lisconvdelphiconvertingprojpackunits msgid "*** Converting unit files belonging to project/package ***" -msgstr "*** Převádím soubory unit patřící projektu/balíku ***" +msgstr "*** Převádím soubory jednotek patřící projektu/balíku ***" #: lazarusidestrconsts.lisconvdelphierror msgid "Error=\"%s\"" @@ -6417,7 +6765,7 @@ #: lazarusidestrconsts.lisconvdelphiexceptionduringconversion msgid "Exception happened during unit conversion. Continuing with form files of already converted units..." -msgstr "Během konverze unity nastala chyba. Pokračuji s formuláři už převedených unit." +msgstr "Během převodu jednotky nastala chyba. Pokračuji s formuláři už převedených jednotek..." #: lazarusidestrconsts.lisconvdelphifailedconvertingunit msgid "Failed converting unit" @@ -6437,7 +6785,7 @@ #: lazarusidestrconsts.lisconvdelphifoundallunitfiles msgid "Found all unit files" -msgstr "Nalezeny všechny soubory unit." +msgstr "Nalezeny všechny soubory jednotky" #: lazarusidestrconsts.lisconvdelphifunc msgid "Delphi Function" @@ -6486,7 +6834,7 @@ #: lazarusidestrconsts.lisconvdelphiunitnameexistsinlcl msgid "Unitname exists in LCL" -msgstr "Jméno unity existuje v LCL" +msgstr "Jméno jednotky existuje v LCL" #: lazarusidestrconsts.lisconvdelphiunitstoreplacein msgid "Units to replace in %s" @@ -6494,11 +6842,11 @@ #: lazarusidestrconsts.lisconvdelphiunitwithnameexistsinlcl msgid "LCL already has a unit with name %s. Delete local file %s?" -msgstr "LCL již má unitu s názvem %s. Odstranit lokální soubor %s?" +msgstr "LCL již má jednotku s názvem %s. Odstranit místní soubor %s?" #: lazarusidestrconsts.lisconvdprojfilenotsupportedyet msgid ".dproj file is not supported yet. The file is used by Delphi 2007 and newer. Please select a .dpr file for projects or .dpk file for packages." -msgstr "" +msgstr "soubor .dproj není ještě podporován. Soubor je použit Delphi 2007 a novějšími. Prosím vyberte .dpr soubor pro projekt nebo .dpk soubor pro balíčky." #: lazarusidestrconsts.lisconversionerror msgid "Conversion error" @@ -6518,7 +6866,7 @@ #: lazarusidestrconsts.lisconvertotherhint msgid "Other options affecting the conversion" -msgstr "" +msgstr "Jiné volby ovlivňující převod" #: lazarusidestrconsts.lisconvertprojectorpackage msgid "Convert project or package" @@ -6530,11 +6878,11 @@ #: lazarusidestrconsts.lisconverttargetcrossplatform msgid "Cross-platform" -msgstr "Multi-platformní" +msgstr "Více-platformní" #: lazarusidestrconsts.lisconverttargetcrossplatformhint msgid "Cross-platform versus Windows-only" -msgstr "Multi-platformní vs. Pouze pro windows" +msgstr "Více-platformní proti Pouze pro Windows" #: lazarusidestrconsts.lisconverttargethint msgid "Converter adds conditional compilation to support different targets" @@ -6558,7 +6906,7 @@ #: lazarusidestrconsts.lisconvfixedunitname msgid "Fixed unit name from %s to %s." -msgstr "" +msgstr "Pevné jméno jednotky z %s na %s." #: lazarusidestrconsts.lisconvfuncreplacements msgid "Function Replacements" @@ -6587,39 +6935,39 @@ #: lazarusidestrconsts.lisconvproblemsfindingallunits msgid "Problems when trying to find all units from project file %s" -msgstr "" +msgstr "Problémy během pokusu o nalezení všech jednotek ze souboru projektu %s" #: lazarusidestrconsts.lisconvproblemsfixingincludefile msgid "Problems when fixing include files in file %s" -msgstr "" +msgstr "Problémy během opravování include souborů v souborů %s" #: lazarusidestrconsts.lisconvproblemsrepairingformfile msgid "Problems when repairing form file %s" -msgstr "" +msgstr "Problémy během opravování souboru formuláře %s" #: lazarusidestrconsts.lisconvrepairingincludefiles msgid "Repairing include files : " -msgstr "" +msgstr "Opravování include souborů : " #: lazarusidestrconsts.lisconvreplacedcall msgid "Replaced call %s with %s" -msgstr "" +msgstr "Nahrazeno volání %s s %s" #: lazarusidestrconsts.lisconvreplfuncparameternum msgid "Replacement function parameter number should be >= 1: %s" -msgstr "" +msgstr "Počet parametrů nahrazující funkce musí být >= 1: %s" #: lazarusidestrconsts.lisconvshouldbefollowedbynumber msgid "\"$\" should be followed by a number: %s" -msgstr "" +msgstr "\"$\" by měl být následován číslem: %s" #: lazarusidestrconsts.lisconvstoppedbecausethereispackage msgid "Stopped because there already is a package with the same name" -msgstr "" +msgstr "Zastaveno, protože již existuje balíček se stejným jménem" #: lazarusidestrconsts.lisconvthislogwassaved msgid "This log was saved to %s" -msgstr "" +msgstr "Tento záznam byl uložen do %s" #: lazarusidestrconsts.lisconvtopoff msgid "Top offset" @@ -6655,7 +7003,167 @@ #: lazarusidestrconsts.lisconvuserselectedtoendconversion msgid "User selected to end conversion with file %s" -msgstr "" +msgstr "Uživatelsky vybrané k ukončení převodu se souborem %s" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "Přidat/Nastavit/Odebrat nástrojový panel(y)" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "Přidat oddělovač" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "Přidat vybranou položku do nástrojového panelu" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "Dostupné příkazy" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "Styl okraje nástrojového panelu" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Žádné" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Jednoduchý" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "Vyčistit výběr" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Průzkumník kódu" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Šablony kódu" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "&Nastavit" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "Opravdu chcete odstranit vybraný panel nástrojů?" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "Musí být nejméně jeden nástrojový panel!" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "Návrhář" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "Obecná nastavení Coolbaru" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "Styl uchopení nástrojového panelu" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "Jednoduchý" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Dvojitý" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "Vodorovné řádky" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "Svislé řádky" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "Zachycovač" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Tlačítko" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "Šířka uchopení" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "Hlavní nabídka IDE" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Zprávy" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "Přesunout vybranou položku nástrojového panelu dolů" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "Přesunout vybranou položku nástrojového panelu nahoru" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "CoolBar IDE" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "Editor balíčků" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "Soubory editoru balíčků" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "Odstranit vybranou položku z nástrojového panelu" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "Obnovit výchozí" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "Prosím nejdříve vyberte nástrojový panel" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Editor zdrojového kódu" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "Zdrojová záložka" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "Příkazy nástrojového panelu" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "Coolbar je &viditelný" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "Šířka Coolbaru" #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" @@ -6696,7 +7204,7 @@ #: lazarusidestrconsts.liscopyfilename msgid "Copy Filename %s" -msgstr "" +msgstr "Kopírovat jméno souboru %s" #: lazarusidestrconsts.liscopyfilenametoclipboard msgid "Copy File Name to Clipboard" @@ -6716,7 +7224,7 @@ #: lazarusidestrconsts.liscopymovefiletodirectory msgid "Copy/Move File to Directory" -msgstr "Kopírovat/Přesunout soubor do složky" +msgstr "Kopírovat/Přesunout soubor do adresáře" #: lazarusidestrconsts.liscopyselecteditemtoclipboard msgid "Copy Selected Items to Clipboard" @@ -6724,7 +7232,7 @@ #: lazarusidestrconsts.liscopyselectedmessagestoclipboard msgid "Copy Selected Messages to Clipboard" -msgstr "Lopírovat Vybrané Zprávy do Schránky" +msgstr "Kopírovat Vybrané Zprávy do Schránky" #: lazarusidestrconsts.liscoscanforfpcmessages msgid "Scan for FPC messages" @@ -6752,7 +7260,7 @@ #: lazarusidestrconsts.liscouldnotaddtomainsource msgid "Could not add \"%s\" to main source!" -msgstr "Nelze přidats \"%s\" do hlavního zdrojového kódu!" +msgstr "Nelze přidat \"%s\" do hlavního zdrojového kódu!" #: lazarusidestrconsts.liscouldnotremovefrommainsource msgid "Could not remove \"%s\" from main source!" @@ -6780,7 +7288,7 @@ #: lazarusidestrconsts.liscpu msgid ", CPU: %s" -msgstr "" +msgstr ", CPU: %s" #: lazarusidestrconsts.liscreateaprojectfirst msgid "Create a project first!" @@ -6788,7 +7296,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "Vytvořit Ladící a Vydávací módy" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -6812,11 +7320,11 @@ #: lazarusidestrconsts.liscreatelocalvariable msgid "Create local variable \"%s\"" -msgstr "Vytvořit lokální proměnnou \"%s\"" +msgstr "Vytvořit místní proměnnou \"%s\"" #: lazarusidestrconsts.liscreatenewaddition msgid "Create new addition" -msgstr "" +msgstr "Vytvořit nový přídavek" #: lazarusidestrconsts.liscreatenewpackage msgid "(Create new package)" @@ -6890,7 +7398,7 @@ #: lazarusidestrconsts.lisctoupdatemultipleproceduresignatures msgid "Update multiple procedure signatures" -msgstr "Aktualizobat vícenásobné podpisy procedur" +msgstr "Aktualizovat vícenásobné podpisy procedur" #: lazarusidestrconsts.lisctpleaseselectamacro msgid "please select a macro" @@ -6907,7 +7415,7 @@ #: lazarusidestrconsts.liscurrentlclwidgetset msgid "Current LCL widgetset: \"%s\"" -msgstr "" +msgstr "Aktuální LCL widgetset: \"%s\"" #: lazarusidestrconsts.liscurrentstate msgid "Current state: " @@ -6922,10 +7430,8 @@ msgstr "Řádek kurzoru v aktuálním editoru" #: lazarusidestrconsts.liscustomopthint -#, fuzzy -#| msgid "These options are passed to the compiler after comments are deleted and macros are replaced." msgid "These options are passed to the compiler after macros are replaced." -msgstr "Tyto volby jsou přímo předány překladači jakmile jsou Makra nahrazena a komentáře odstraněny." +msgstr "Tyto volby jsou přímo předány překladači jakmile jsou makra nahrazena." #: lazarusidestrconsts.liscustomoptions msgid "custom options" @@ -6935,6 +7441,10 @@ msgid "Custom options" msgstr "Vlastní nastavení" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "Vlastní volby" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Vlastní program" @@ -7009,7 +7519,7 @@ #: lazarusidestrconsts.lisdbgbreakpointpropertieshint msgctxt "lazarusidestrconsts.lisdbgbreakpointpropertieshint" msgid "Breakpoint Properties ..." -msgstr "Nastavení bodu přerušní ..." +msgstr "Nastavení bodu přerušení ..." #: lazarusidestrconsts.lisdbgemexpression msgid "&Expression:" @@ -7118,7 +7628,7 @@ #: lazarusidestrconsts.lisdbgmangthereisnodebuggerspecifiedsettingbreakpointshaveno msgid "There is no debugger specified.%sSetting breakpoints have no effect until you set up a Debugger in the debugger options dialog in the menu." -msgstr "Není nastaven ladič.%sNastavení bodu přerušení nemá význam, dokud nenastavíte ladič v dialogu Volby ladiče v menu." +msgstr "Není nastaven ladič.%sNastavení bodu přerušení nemá význam, dokud nenastavíte ladič v dialogu Volby ladiče v nabídce." #: lazarusidestrconsts.lisdbgwinpower msgid "On/Off" @@ -7131,7 +7641,7 @@ #: lazarusidestrconsts.lisdebug msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Ladění" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7309,7 +7819,7 @@ #: lazarusidestrconsts.lisdefaultiscomboboxwithtrueandfalse msgid "The default is ComboBox with \"True\" and \"False\" selections" -msgstr "" +msgstr "Výchozí je ComboBox s vybraným \"True\" nebo \"False\"" #: lazarusidestrconsts.lisdefaultplaceholder msgid "(default)" @@ -7330,11 +7840,11 @@ #: lazarusidestrconsts.lisdelete2 msgid "Delete?" -msgstr "" +msgstr "Odstranit?" #: lazarusidestrconsts.lisdeleteaddition msgid "Delete addition \"%s\"?" -msgstr "" +msgstr "Odstranit přídavek \"%s\"?" #: lazarusidestrconsts.lisdeleteall msgid "&Delete All" @@ -7410,7 +7920,7 @@ #: lazarusidestrconsts.lisdeletethisaddition msgid "Delete this addition" -msgstr "" +msgstr "Odstranit tento přídavek" #: lazarusidestrconsts.lisdeletevalue msgid "Delete value \"%s\"?" @@ -7426,7 +7936,7 @@ #: lazarusidestrconsts.lisdelimiterissemicolon msgid "Delimiter is semicolon." -msgstr "" +msgstr "Oddělovačem je středník" #: lazarusidestrconsts.lisdelphi msgid "Delphi" @@ -7434,27 +7944,19 @@ #: lazarusidestrconsts.lisdelphicompatibleresources msgid "Delphi compatible resources. Recommended." -msgstr "" - -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Balíček Delphi" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Projekt Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Jednotka Delphi" +msgstr "Zdroj kompatibilní s Delphi. Doporučeno." #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." -msgstr "\"Návrhové\" balíky přidávají komponenty a položky do menu IDE. Mohou být použity projekty, ale nemohou být kompilovány do projektu. Kompiler nenajde jednotky balíku během kompilace projektu." +msgstr "\"Návrhové\" balíky přidávají komponenty a položky do nabídky IDE. Mohou být použity projekty, ale nemohou být přeloženy do projektu. Překladač nenajde jednotky balíku během přeložení projektu." + +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "Plochy ..." #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" -msgstr "Cílová složka" +msgstr "Cílový adresář" #: lazarusidestrconsts.lisdestructorcode msgid "Destructor code" @@ -7466,11 +7968,11 @@ #: lazarusidestrconsts.lisdiffdlgfile1 msgid "File1" -msgstr "" +msgstr "Soubor1" #: lazarusidestrconsts.lisdiffdlgfile2 msgid "File2" -msgstr "" +msgstr "Soubor2" #: lazarusidestrconsts.lisdiffdlgignoreifemptylineswereadd msgid "Ignore if empty lines were added or removed" @@ -7501,10 +8003,8 @@ msgstr "Pouze výběr" #: lazarusidestrconsts.lisdiffdlgopendiffineditor -#, fuzzy -#| msgid "Open Diff in editor" msgid "Open difference in editor" -msgstr "Otevřít Diff v editoru" +msgstr "Otevřít rozdíl v editoru" #: lazarusidestrconsts.lisdifferentunitfoundatnewposition msgid "different unit %s found at new position \"%s\"" @@ -7524,7 +8024,7 @@ #: lazarusidestrconsts.lisdirectories msgid "Directories" -msgstr "" +msgstr "Adresáře" #: lazarusidestrconsts.lisdirectory msgid "Directory: " @@ -7568,11 +8068,11 @@ #: lazarusidestrconsts.lisdisableoptionxg msgid "Disable Option -Xg?" -msgstr "" +msgstr "Zakázat Volbu -Xg?" #: lazarusidestrconsts.lisdisableoptionxg2 msgid "Disable option -Xg" -msgstr "" +msgstr "Zakázat volbu -Xg" #: lazarusidestrconsts.lisdisassassembler msgctxt "lazarusidestrconsts.lisdisassassembler" @@ -7644,7 +8144,6 @@ msgstr "Rozlišovat velká a malá písmena např. A a a" #: lazarusidestrconsts.lisdlgadd -#, fuzzy msgctxt "lazarusidestrconsts.lisdlgadd" msgid "Add ..." msgstr "Přidat ..." @@ -7662,7 +8161,6 @@ msgstr "Definice ..." #: lazarusidestrconsts.lisdlgedit -#, fuzzy msgctxt "lazarusidestrconsts.lisdlgedit" msgid "Edit ..." msgstr "Upravit ..." @@ -7677,6 +8175,11 @@ msgid "Import ..." msgstr "Importovat ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "Více ..." + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7695,6 +8198,10 @@ msgid "Do not change" msgstr "Neměnit" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "%sNekontrolovat zda již běží jiná instance IDE" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Nezavírat projekt" @@ -7801,7 +8308,6 @@ msgstr "Duplicitní jméno" #: lazarusidestrconsts.lisduplicatenameacomponentnamedalreadyexistsintheinhe -#, fuzzy msgid "Duplicate name: A component named \"%s\" already exists in the inherited component %s" msgstr "Zdvojené jméno: Komponenta pojmenovaná \"%s\" již existuje ve zděděné komponentě %s" @@ -7821,6 +8327,10 @@ msgid "Duplicate Unit" msgstr "Duplicitní Jednotka" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "Zdvojit jednotku \"%s\" v \"%s\"" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7828,7 +8338,7 @@ #: lazarusidestrconsts.liseditadditionalhelpformessages msgid "Edit additional help for messages" -msgstr "" +msgstr "Upravit dodatečnou nápovědu pro zprávy" #: lazarusidestrconsts.liseditcontexthelp msgid "Edit context help" @@ -7846,14 +8356,22 @@ msgid "Editor Colors" msgstr "Barvy Editoru" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Typy souborů editoru" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Návrhář maker" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "Editor ToolBaru" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "Nastavení Editoru nástrojových panelů" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "Editor nástrojového panelu je &viditelný" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Nahrát schéma" @@ -7954,7 +8472,11 @@ #: lazarusidestrconsts.lisedtexttoolworkingdirectory msgid "Working Directory:" -msgstr "Pracovní složka:" +msgstr "Pracovní adresář:" + +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "Povýšit prioritu zpráv, aby se vždy ukazovalo (jako výchozí má nízkou prioritu \"výřečný\")" #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" @@ -8025,11 +8547,11 @@ #: lazarusidestrconsts.lisenabledonlyforpackages msgid "Enabled only for packages." -msgstr "" +msgstr "Povolit pouze pro balíčky." #: lazarusidestrconsts.lisenableflaguseunitofunitinpackage msgid ". Enable flag \"Use Unit\" of unit %s in package %s" -msgstr ". Aktivní příznak \"Use Unit\" jednotky %s v balíčku %s" +msgstr ". Povolit příznak \"Použít jednotku\" jednotky %s v balíčku %s" #: lazarusidestrconsts.lisenablegroups msgid "Enable Groups" @@ -8061,7 +8583,7 @@ #: lazarusidestrconsts.lisencodingnumberoffilesfailed msgid "Number of files failed to convert: %d" -msgstr "" +msgstr "Počet souborů, které se nepodařilo převést: %d" #: lazarusidestrconsts.lisencodingoffileondiskisnewencodingis msgctxt "lazarusidestrconsts.lisencodingoffileondiskisnewencodingis" @@ -8082,7 +8604,7 @@ #: lazarusidestrconsts.lisenvoptdlgdirectorynotfound msgid "Directory not found" -msgstr "Složka nenalezena" +msgstr "Adresář nenalezen" #: lazarusidestrconsts.lisenvoptdlginvaliddebuggerfilename msgid "Invalid debugger filename" @@ -8094,7 +8616,7 @@ #: lazarusidestrconsts.lisenvoptdlgtestdirnotfoundmsg msgid "Test directory \"%s\" not found." -msgstr "Testovací složka \"%s\" nenalezena." +msgstr "Testovací adresář \"%s\" nenalezen." #: lazarusidestrconsts.liserrinvalidoption msgid "Invalid option at position %d: \"%s\"" @@ -8133,10 +8655,8 @@ msgstr "Chyba ve vlastních nastaveních překladače (Ostatní):" #: lazarusidestrconsts.liserrorinthecustomlinkeroptionslinkingpassoptionstol -#, fuzzy -#| msgid "Error in the custom linker options (Linking / Pass options to linker):" msgid "Error in the custom linker options (Compilation and Linking / Pass options to linker):" -msgstr "Chyba ve vlastních nastaveních spojovače (Spojování / Předat volby spojovači):" +msgstr "Chyba ve vlastních nastaveních spojovače (Překládání a Spojování / Předat volby spojovači):" #: lazarusidestrconsts.liserrorinthedebuggerpathaddition msgid "Error in the \"Debugger path addition\":" @@ -8167,8 +8687,8 @@ msgstr "Chyba v \"výstupní adresář jednotek\":" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" -msgstr "CHYBA: neplatný sestavovací mód \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" +msgstr "Chyba: (lazarus) neplatný režim sestavení \"%s\"" #: lazarusidestrconsts.liserrorloadingfile msgid "Error loading file" @@ -8224,10 +8744,8 @@ msgstr "Chyby" #: lazarusidestrconsts.liserrors2 -#, fuzzy -#| msgid ", Errors:%s" msgid ", Errors: %s" -msgstr ", Chyby:%s" +msgstr ", Chyb:%s" #: lazarusidestrconsts.liserrorsavingto msgid "Error saving %s to%s%s%s%s" @@ -8264,12 +8782,16 @@ #: lazarusidestrconsts.liseventlogoptions msgid "Event Log Options ..." -msgstr "Volby záznamu událoastí ..." +msgstr "Volby záznamu událostí ..." #: lazarusidestrconsts.liseventlogsavetofile msgid "Save Events to File" msgstr "Uložit události do souboru" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "Vložit nové metody události do sekce" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Přidat komentář ..." @@ -8310,13 +8832,9 @@ msgid "Exclude filter" msgstr "Filtr vyřazení" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Spustitelný" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" -msgstr "spustitelný soubor \"%s\" je složka" +msgstr "spustitelný soubor \"%s\" je adresář" #: lazarusidestrconsts.lisexecutablelacksthepermissiontorun msgid "executable \"%s\" lacks the permission to run" @@ -8334,10 +8852,6 @@ msgid "Execution stopped" msgstr "Vykonání zastaveno" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programy" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8372,14 +8886,27 @@ msgid "Export" msgstr "Exportovat" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "Exportovat vše" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" -msgstr "" +msgstr "Exportovat všechny položky do souboru" + +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "Exportovat volby prostředí" #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Exportovat jako HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "Exportovat / Importovat" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Exportovat seznam" @@ -8388,35 +8915,37 @@ msgid "Export package list (*.xml)" msgstr "Exportovat seznam balíčků (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "Exportovat vybrané" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "Exportovat >>" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Výraz:" #: lazarusidestrconsts.lisextendincludefilesearchpathofpackagewith -#, fuzzy,badformat -#| msgid "Extend include file search path of package \"%s\" with\"%s\"?" msgid "Extend include file search path of package \"%s\" with%s\"%s\"?" -msgstr "Rozšiřit cestu pro hledání includů balíčku \"%s\" s \"%s\"?" +msgstr "Rozšířit cestu pro hledání zahrnutých souborů balíčku \"%s\" s%s\"%s\"?" #: lazarusidestrconsts.lisextendincludefilessearchpathofprojectwith msgid "Extend include files search path of project with%s\"%s\"?" msgstr "Rozšířit prohledávanou cestu include projektu s%s\"%s\"?" #: lazarusidestrconsts.lisextendincludepath -#, fuzzy -#| msgid "Extend Include Path?" msgid "Extend include path?" -msgstr "Rozšířit cestu pro hledání includů?" +msgstr "Rozšířit cestu zahrnutých souborů?" #: lazarusidestrconsts.lisextendunitpath msgid "Extend unit path?" msgstr "Rozšířit cestu jednotky?" #: lazarusidestrconsts.lisextendunitsearchpathofpackagewith -#, fuzzy,badformat -#| msgid "Extend unit search path of package \"%s\" with\"%s\"?" msgid "Extend unit search path of package \"%s\" with%s\"%s\"?" -msgstr "Rozšířit cestu pro hledání unit balíčku \"%s\" s \"%s\"?" +msgstr "Rozšířit cestu pro hledání jednotek balíčku \"%s\" s%s\"%s\"?" #: lazarusidestrconsts.lisextendunitsearchpathofprojectwith msgid "Extend unit search path of project with%s\"%s\"?" @@ -8449,7 +8978,7 @@ #: lazarusidestrconsts.lisfailedtoaddnnotuniqueresources msgid "Failed to add %d not unique resource(s)" -msgstr "" +msgstr "Selhalo přidání %d není jedinečný zdroj(e)" #: lazarusidestrconsts.lisfailedtocreateapplicationbundlefor msgid "Failed to create Application Bundle for \"%s\"" @@ -8468,6 +8997,7 @@ msgstr "Uložení souboru selhalo." #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "Fatální" @@ -8476,7 +9006,6 @@ msgstr "Redukovat vykreslování návrháře" #: lazarusidestrconsts.lisfepaintdesigneritemsonidlehint -#, fuzzy msgctxt "lazarusidestrconsts.lisfepaintdesigneritemsonidlehint" msgid "Paint designer items only on idle (reduce overhead for slow computers)" msgstr "Vykreslovat prvky návrháře pouze při nečinnosti (snižuje zatížení u pomalých počítačů)" @@ -8568,10 +9097,8 @@ msgstr "Jméno souboru/Adresa" #: lazarusidestrconsts.lisfilenamestyle -#, fuzzy -#| msgid "Filename Style ..." msgid "Filename Style" -msgstr "Styl Cest k Souborům ...." +msgstr "Styl jména souboru" #: lazarusidestrconsts.lisfilenotfound msgid "File not found" @@ -8616,7 +9143,7 @@ #: lazarusidestrconsts.lisfileshasregisterprocedureinpackageusessection msgid "Files: %s, has Register procedure: %s, in package uses section: %s" -msgstr "Soubor: %s má proceduru Register: %s v sekci uses balíčku: %s" +msgstr "Soubor: %s má proceduru 'Register': %s v sekci 'uses' balíčku: %s" #: lazarusidestrconsts.lisfileshaverightencoding msgid "*** All found files already have the right encoding ***" @@ -8648,7 +9175,7 @@ #: lazarusidestrconsts.lisfilterallmessagesofcertaintype msgid "Filter all messages of certain type" -msgstr "" +msgstr "Filtrovat všechny zprávy určitého typu" #: lazarusidestrconsts.lisfilterallmessagesoftype msgid "Filter all messages of type %s" @@ -8660,15 +9187,15 @@ #: lazarusidestrconsts.lisfilterdebugmessagesandbelow msgid "Filter Debug Messages and below" -msgstr "Filtrovat zprávy 'debug' a níže" +msgstr "Filtrovat ladící zprávy a níže" #: lazarusidestrconsts.lisfilterhintsandbelow msgid "Filter Hints and below" -msgstr "Filtrovat zprávy 'hint' a níže" +msgstr "Filtrovat tipy a níže" #: lazarusidestrconsts.lisfilterhintswithoutsourceposition msgid "Filter Hints without Source Position" -msgstr "Filtrovat zprávy 'Hint' bez polohy v kódu " +msgstr "Filtrovat tipy bez polohy v kódu " #: lazarusidestrconsts.lisfilternonedonotfilterbyurgency msgid "Filter None, do not filter by urgency" @@ -8680,7 +9207,7 @@ #: lazarusidestrconsts.lisfilternotesandbelow msgid "Filter Notes and below" -msgstr "Filtrovat zprávy 'note' a níže" +msgstr "Filtrovat poznámky a níže" #: lazarusidestrconsts.lisfiltersets msgid "Filter Sets" @@ -8692,11 +9219,11 @@ #: lazarusidestrconsts.lisfilterverbosemessagesandbelow msgid "Filter Verbose Messages and below" -msgstr "Filtrovat zprávy 'verbose' a níže" +msgstr "Filtrovat výřečné zprávy a níže" #: lazarusidestrconsts.lisfilterwarningsandbelow msgid "Filter Warnings and below" -msgstr "Filtrovat zprávy 'warning' a níže" +msgstr "Filtrovat varování a níže" #: lazarusidestrconsts.lisfind msgid "Find ..." @@ -8704,11 +9231,11 @@ #: lazarusidestrconsts.lisfinddeclarationof msgid "Find Declaration of %s" -msgstr "" +msgstr "Hledat deklarace %s" #: lazarusidestrconsts.lisfindfiledirectories msgid "D&irectories" -msgstr "" +msgstr "A&dresáře" #: lazarusidestrconsts.lisfindfilefilemask msgid "Fi&le mask" @@ -8760,7 +9287,7 @@ #: lazarusidestrconsts.lisfirsttest msgid "&First test" -msgstr "" +msgstr "&První test" #: lazarusidestrconsts.lisfixlfmfile msgid "Fix LFM file" @@ -8780,11 +9307,11 @@ #: lazarusidestrconsts.lisfordarwin msgid "For Darwin" -msgstr "" +msgstr "Pro Darwin" #: lazarusidestrconsts.lisforexampleshowattopthelocalvariablesthenthemembers msgid "For example show at top the local variables, then the members of current class, then of the ancestors, then the current unit, then of used units" -msgstr "" +msgstr "Například ukázat nahoře místní proměnné, když členové aktuální třídy, když předci, když aktuální jednotky, když použité jednotky" #: lazarusidestrconsts.lisform msgid "Form" @@ -8796,7 +9323,7 @@ #: lazarusidestrconsts.lisforwindows msgid "For Windows" -msgstr "" +msgstr "Pro Windows" #: lazarusidestrconsts.lisfoundversionexpected msgid "Found version %s, expected %s" @@ -8808,29 +9335,23 @@ #: lazarusidestrconsts.lisfpcfullversioneg20701 msgid "FPC version as one number (e.g. 20701)" -msgstr "" +msgstr "Verze FPC jako jedno číslo (např. 20701)" #: lazarusidestrconsts.lisfpcmakefailed msgid "fpcmake failed" msgstr "fpcmake selhal" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "Soubor FPC zpráv" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" -msgstr "" +msgstr "Soubor zpráv FPC:" #: lazarusidestrconsts.lisfpcmessagesappendix msgid "FPC messages: Appendix" -msgstr "" +msgstr "Zprávy FPC: Dodatek" #: lazarusidestrconsts.lisfpcresources -#, fuzzy -#| msgid "FPC resources" msgid "FPC resources (.res)" -msgstr "Zdroje FPC" +msgstr "Zdroje (.res) FPC" #: lazarusidestrconsts.lisfpcsources msgid "FPC sources" @@ -8943,11 +9464,11 @@ #: lazarusidestrconsts.lisfrirenaming msgid "Renaming" -msgstr "" +msgstr "Přejmenování" #: lazarusidestrconsts.lisfrisearch msgid "Search" -msgstr "" +msgstr "Hledat" #: lazarusidestrconsts.lisfrisearchincommentstoo msgid "Search in comments too" @@ -8973,7 +9494,7 @@ #: lazarusidestrconsts.lisglobalsettings msgid "Global settings" -msgstr "" +msgstr "Celkové nastavení" #: lazarusidestrconsts.lisgotoline msgid "Goto Line" @@ -8981,7 +9502,7 @@ #: lazarusidestrconsts.lisgotoselected msgid "Goto selected" -msgstr "" +msgstr "Vybráno Goto" #: lazarusidestrconsts.lisgplnotice msgid "" @@ -9017,6 +9538,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sExistuje %d dalších prázdných skupin, smazat všechny?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "Automaticky určené místní proměnné skupiny" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Jméno skupiny nemůže být prázdné. Vyčistit skupiny bodu přerušení?" @@ -9049,6 +9574,10 @@ msgid "Has Help" msgstr "Má nápovědu" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "Barva hlavičky" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Hlavičkový komentář pro třídu" @@ -9076,7 +9605,7 @@ #: lazarusidestrconsts.lishideallhintsandwarningsbyinsertingidedirectivesh msgid "Hide all hints and warnings by inserting IDE directives {%H-}" -msgstr "Skrýt všechny 'hint' a 'warning' vložením IDE direktivy {%H-}" +msgstr "Skrýt všechny tipy a varování vložením IDE direktivy {%H-}" #: lazarusidestrconsts.lishidemessageatbyinsertingidedirectiveh msgid "Hide message at %s by inserting IDE directive {%H-}" @@ -9099,6 +9628,7 @@ msgstr "Skrýt volbou projektu (-vm%s)" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Tip" @@ -9108,17 +9638,15 @@ #: lazarusidestrconsts.lishintatpropertysnameshowsdescription msgid "A hint at property's name shows its description." -msgstr "" +msgstr "Pokyn u jména vlastnosti ukazuje její popis." #: lazarusidestrconsts.lishintcheckiftwopackagescontainaunitwiththesamename msgid "Hint: Check if two packages contain a unit with the same name." msgstr "Tip: Zkontrolujte, zda dva balíčky neobsahují jednotku se stejným jménem." #: lazarusidestrconsts.lishints -#, fuzzy -#| msgid ", Hints:%s" msgid ", Hints: %s" -msgstr ",Hintů:%s" +msgstr ", Pokynů:%s" #: lazarusidestrconsts.lishintsaveall msgid "Save all" @@ -9182,24 +9710,20 @@ #: lazarusidestrconsts.lishorizontallinesbetweenproperties msgid "Horizontal lines between properties." -msgstr "" +msgstr "Vodorovné linky mezi vlastnostmi." #: lazarusidestrconsts.lisid msgctxt "lazarusidestrconsts.lisid" msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Přidat" - -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Otevřít" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "Přídavek" + +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "Otevírání" #: lazarusidestrconsts.liside msgid "IDE" @@ -9211,11 +9735,11 @@ #: lazarusidestrconsts.lisidecompileandrestart msgid "The IDE will be recompiled and restarted during installation/uninstallation of packages." -msgstr "IDE bude rekompilováno a restartováno během instalace/odinstalace balíčků." +msgstr "IDE bude znovu přeloženo a restartováno během instalace/odinstalace balíčků." #: lazarusidestrconsts.lisideconficurationfoundmaybelongtootherlazarus msgid "Welcome to Lazarus.%0:sThe IDE configuration found was previously used by another installation of Lazarus.%0:sIf you have two or more separate installations of Lazarus, they should not share the same configuration. This may lead to conflicts, and your Lazarus installations may become unusable.%0:s%0:sIf you have only one installation and copied or moved the Lazarus executable, then you may upgrade this configuration.%0:s%1:s%0:s%0:sChoose:%0:s%0:s* Update info: Use this configuration and update it for being used with this Lazarus in future. The old installation will no longer use this.%0:s* Ignore: Use this configuration, but keep the warning. This may lead to conflicts with the other installation.%0:s* Abort: Exit now. You can then fix the problem by starting this Lazarus with the correct configuration.%0:s%0:sAdditional information:%0:sThis configuration is at: %2:s%0:sIt belongs to the Lazarus installation at: %3:s%0:sThe current IDE was started from: %4:s%0:s" -msgstr "Vítejte v Lazarusu.%0:sNalezená Konfigurace IDE byla dříve použita jinou instalací Lazarusu.%0:sPokud máte dvě a více oddělených instalací Lazarusu, tyto instalace by neměly sdílet stejnou konfiguraci. To by mohlo véct ke konfliktům a Vaše instalace Lazarusu by se mohly stát nestabilní.%0:s%0:sPokud máte pouze jednu instalaci a zkopírovanoý/přesunutý spustitelný soubor Lazarusu, můžet aktualizovat tuto konfiguraci.%0:s%1:s%0:s%0:sVyberte:%0:s%:s* Informace o aktualizaci: Použijte tuto konfiguraci a aktualizujte jipro budoucí použití s Lazarusem. Stará instalace ji nebude více používat.%0:s* Ignorovat: Použít tuto konfiguraci, ale ponechat upozornění. Toto může véct ke konfliktům s ostatními instalacemi.%0:s* Zrušit: Ukončit právě teď. Můžete potom vyřešit problém spuštěním Lazarusu se správnou konfigurací.%0:s%0:sDalší informace:%0:sTato konfigurace je pro: %2:s%0:sPatří instalaci Lazarusu v %3:s%0:s.Aktuální IDE bylo spuštěno z: %4:s%0:s" +msgstr "Vítejte v Lazarusu.%0:sNalezená Konfigurace IDE byla dříve použita jinou instalací Lazarusu.%0:sPokud máte dvě a více oddělených instalací Lazarusu, tyto instalace by neměly sdílet stejnou konfiguraci. To by mohlo vést ke konfliktům a Vaše instalace Lazarusu by se mohly stát nestabilní.%0:s%0:sPokud máte pouze jednu instalaci a zkopírovanoý/přesunutý spustitelný soubor Lazarusu, může aktualizovat tuto konfiguraci.%0:s%1:s%0:s%0:sVyberte:%0:s%:s* Informace o aktualizaci: Použijte tuto konfiguraci a aktualizujte jipro budoucí použití s Lazarusem. Stará instalace ji nebude více používat.%0:s* Ignorovat: Použít tuto konfiguraci, ale ponechat upozornění. Toto může vést ke konfliktům s ostatními instalacemi.%0:s* Zrušit: Ukončit právě teď. Můžete potom vyřešit problém spuštěním Lazarusu se správnou konfigurací.%0:s%0:sDalší informace:%0:sTato konfigurace je pro: %2:s%0:sPatří instalaci Lazarusu v %3:s%0:s.Aktuální IDE bylo spuštěno z: %4:s%0:s" #: lazarusidestrconsts.lisideinfocreatingmakefileforpackage msgid "Creating Makefile for package %s" @@ -9239,7 +9763,7 @@ #: lazarusidestrconsts.lisidemaintainsthetitleinmainunit msgid "The IDE maintains the title in main unit." -msgstr "" +msgstr "IDE udržuje titulek v hlavní jednotce." #: lazarusidestrconsts.lisidentifier msgid "identifier" @@ -9263,7 +9787,7 @@ #: lazarusidestrconsts.lisidetitleshowsprojectdir msgid "IDE title shows project directory" -msgstr "Titulek IDE zobrazuje složku projektu" +msgstr "Titulek IDE zobrazuje adresář projektu" #: lazarusidestrconsts.lisidetitlestartswithprojectname msgid "IDE title starts with project name" @@ -9298,7 +9822,6 @@ msgstr "Exportovaný soubor existuje" #: lazarusidestrconsts.lisiecoexportfileexistsopenfileandreplaceonlycompileropti -#, fuzzy msgid "Export file \"%s\" exists.%sOpen file and replace only compiler options?%s(Other settings will be kept.)" msgstr "Exportovaný soubor \"%s\" existuje.%sOtevřít soubor a nahradit jen volby překladače?%s(Ostatní nastavení zůstanou zachována.)" @@ -9328,12 +9851,16 @@ #: lazarusidestrconsts.lisifonlysessioninfochangedthenask msgid "If only the session info changed, ask about saving it." -msgstr "" +msgstr "Pokud jsou změněny pouze informace sezení, zeptej se na uložení." #: lazarusidestrconsts.lisifyouwanttousetwodifferentlazarusversionsyoumustst -#, fuzzy msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" -msgstr "Pokud chcete používat dvě rozdílné verze Lazarusu, musíte spustit druhou verzi s parametrem příkazové řádky primary-config-path nebo pcp. %sNapříklad:" +msgstr "Pokud chcete používat dvě rozdílné verze Lazarusu, musíte spustit druhou verzi s parametrem příkazové řádky primary-config-path nebo pcp.%sNapříklad:" + +#: lazarusidestrconsts.lisignore +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignorovat" #: lazarusidestrconsts.lisignoreall msgid "Ignore all" @@ -9351,9 +9878,9 @@ msgid "Ignore this exception type" msgstr "Ignorovat tento typ výjimky" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ignorovat, použít TForm jako předka" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9369,16 +9896,18 @@ msgstr "Importovat" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "Důležité" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "Importovat volby prostředí" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" -msgstr "" +msgstr "Importovat ze Souboru" #: lazarusidestrconsts.lisimportlist msgid "Import list" @@ -9426,7 +9955,7 @@ #: lazarusidestrconsts.lisincorrectconfigurationdirectoryfound msgid "Incorrect configuration directory found" -msgstr "Neplatná složka konfigurace nalezena" +msgstr "Nalezen neplatný konfigurační adresář" #: lazarusidestrconsts.lisindentationforpascalsources msgid "Indentation for Pascal sources" @@ -9468,8 +9997,11 @@ msgid "Inherited project component" msgstr "Zděděné komponenty projektu" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "Inicializovat místní proměnnou" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil -#, fuzzy msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "Před vytvořením čisté kopie projektu/balíčku budou smazané všechny soubory v následujícím adresáři a veškerý jejich obsah bude ztracen.%sSmazat všechny soubory v \"%s\"?" @@ -9478,6 +10010,10 @@ msgid "Insert" msgstr "Vložit" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "Vložit přiřazení %s := ..." + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "vložit datum" @@ -9617,6 +10153,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Místo překladu balíčku vytvořte jednoduchý Makefile." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "Nedostatečné kódování" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Interaktivní" @@ -9633,6 +10173,14 @@ msgid "Invalid delete" msgstr "Neplatné odebrání" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "Neplatný spustitelný soubor" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "Soubor \"%s\" není spustitelný." + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Neplatný výraz:%s%s%s%s" @@ -9718,9 +10266,8 @@ msgstr "%s už je částí projektu." #: lazarusidestrconsts.lisisaninvalidprojectnamepleasechooseanotheregproject -#, fuzzy msgid "\"%s\" is an invalid project name.%sPlease choose another (e.g. project1.lpi)" -msgstr "\"%s\" je chybné jméno projektu.%sProsím vyberte jiné (např. project1.lpi)" +msgstr "\"%s\" je chybné jméno projektu.%sProsím vyberte jiné (např. projekt1.lpi)" #: lazarusidestrconsts.lisisathiscirculardependencyisnotallowed msgid "%s is a %s.%sThis circular dependency is not allowed." @@ -9747,9 +10294,17 @@ msgid "Jump History" msgstr "Historie skoků" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "skočit na chybu" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "Skočit na ni, pokud je nalezena chyba ve zdrojích při doplnění identifikátorů." + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" -msgstr "" +msgstr "skočit na proceduru %s" #: lazarusidestrconsts.liskb msgid "%s KB" @@ -9830,7 +10385,7 @@ #: lazarusidestrconsts.liskmbuildmanymodes msgid "Build many modes" -msgstr "" +msgstr "Sestavit mnoho režimů" #: lazarusidestrconsts.liskmbuildprojectprogram msgid "Build project/program" @@ -10331,7 +10886,7 @@ #: lazarusidestrconsts.lislastopened msgid "Last opened" -msgstr "" +msgstr "Poslední otevřené" #: lazarusidestrconsts.lislaunchingapplicationinvalid msgid "Launching application invalid" @@ -10350,13 +10905,9 @@ msgid "Lazarus Default" msgstr "Lazarus Výchoí" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Nastavení plochy Lazarusu" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" -msgstr "Složka Lazarusu" +msgstr "Adresář Lazarusu" #: lazarusidestrconsts.lislazarusdiroverride msgid "directory, to be used as a basedirectory" @@ -10366,22 +10917,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Soubor Lazarusu" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Formulář Lazarusu" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Lazarus IDE" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Zahrnutý soubor Lazarusu" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "ID jazyka Lazarusu (např. en, de, br, cz)" @@ -10394,30 +10933,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [volby] <jméno-projektu>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Jiný soubor Lazarusu" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Balíček Lazarusu" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Projekt Lazarusu" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Informační soubor projektu Lazarusu" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Zdrojový soubor Lazarusu" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Jednotka Lazarusu" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10541,7 +11056,7 @@ #: lazarusidestrconsts.lislazbuildshowconfirmationdialogwhenbuilding msgctxt "lazarusidestrconsts.lislazbuildshowconfirmationdialogwhenbuilding" msgid "Show confirmation dialog when building directly from Tools menu" -msgstr "Zobrazit potvrzovací dialog při sestavování přímo z menu Nástroje" +msgstr "Zobrazit potvrzovací dialog při sestavování přímo z nabídky Nástroje" #: lazarusidestrconsts.lislazbuildshowoptionsanddefinesforcommandline msgid "Show options and defines for command line" @@ -10708,10 +11223,6 @@ msgid "list of all case values" msgstr "seznam všech případných hodnot" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Úspěšně nahráno" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Načítání %s selhalo." @@ -10734,7 +11245,7 @@ #: lazarusidestrconsts.lislocalsnotevaluated msgid "Locals not evaluated" -msgstr "Lokální nejsou vyhodnoceny" +msgstr "Místní nejsou vyhodnoceny" #: lazarusidestrconsts.lislogcallstack msgid "Log Call Stack" @@ -10770,10 +11281,8 @@ msgstr "lpk chybí" #: lazarusidestrconsts.lislrsincludefiles -#, fuzzy -#| msgid "lrs include files" msgid "Lazarus resources (.lrs) include files" -msgstr "zahrnuté soubory lrs" +msgstr "zahrnuté soubory zdrojů (.lrs) Lazarusu" #: lazarusidestrconsts.lismacpascal msgid "Mac Pascal" @@ -10809,7 +11318,7 @@ #: lazarusidestrconsts.lismainunitispascalsourcehint msgid "Assume Pascal even if it does not end with .pas/.pp suffix." -msgstr "" +msgstr "Předpokládat Pascal také pokud nekončí s příponou .pas/.pp." #: lazarusidestrconsts.lismakeexe msgid "Make Executable" @@ -10828,9 +11337,8 @@ msgstr "Doplnit k sekci" #: lazarusidestrconsts.lismakeresstrchooseanothername -#, fuzzy msgid "The resourcestring \"%s\" already exists.%sPlease choose another name.%sUse Ignore to add it anyway." -msgstr "Resourcestring \"%s\" již existuje.%sProsím vyberte jiný název.%sPoužijte Ignorovat pokud chcete i tak přidat." +msgstr "Resourcestring \"%s\" již existuje.%sProsím vyberte jiný název.%sPoužijte 'Ignorovat' pokud chcete i tak přidat." #: lazarusidestrconsts.lismakeresstrconversionoptions msgid "Conversion Options" @@ -10891,15 +11399,19 @@ #: lazarusidestrconsts.lismakesureallppufilesofapackageareinitsoutputdirecto msgid "Make sure all ppu files of a package are in its output directory." -msgstr "" +msgstr "Ujistěte se, že všechny ppu soubor balíčku jsou v jeho výstupním adresáři." #: lazarusidestrconsts.lismanagesourceeditors msgid "Manage Source Editors ..." msgstr "Spravovat editory zdrojových kódů ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "Nejvyšší počet vláken pro souběžný překlad. Výchozí je 0, znamená zjistit počet jader ze systému." + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" -msgstr "" +msgstr "Nejvýše souběžných procesů, 0 znamená výchozí (%s)" #: lazarusidestrconsts.lismaxs msgid "Max %d" @@ -10968,7 +11480,7 @@ #: lazarusidestrconsts.lismenubuildmanymodes msgid "Build many Modes ..." -msgstr "" +msgstr "Sestavit mnoho Režimů ..." #: lazarusidestrconsts.lismenuchecklfm msgid "Check LFM File in Editor" @@ -10980,7 +11492,7 @@ #: lazarusidestrconsts.lismenucleanupandbuild msgid "Clean up and Build ..." -msgstr "" +msgstr "Vyčistit a sestavit ..." #: lazarusidestrconsts.lismenucloseall msgid "Close A&ll" @@ -11004,7 +11516,7 @@ #: lazarusidestrconsts.lismenucomparefiles msgid "Compare files ..." -msgstr "" +msgstr "Porovnat soubory ..." #: lazarusidestrconsts.lismenucompletecode msgctxt "lazarusidestrconsts.lismenucompletecode" @@ -11057,11 +11569,11 @@ #: lazarusidestrconsts.lismenudelphiconversion msgid "Delphi Conversion" -msgstr "Delphi Konverze:" +msgstr "Delphi převod:" #: lazarusidestrconsts.lismenuedit msgid "&Edit" -msgstr "&Editace" +msgstr "&Úpravy" #: lazarusidestrconsts.lismenueditcodetemplates msgid "Code Templates ..." @@ -11077,11 +11589,11 @@ #: lazarusidestrconsts.lismenueditor msgid "Menu Editor ..." -msgstr "Editor menu ..." +msgstr "Editor nabídky ..." #: lazarusidestrconsts.lismenueditorcreatesubmenu msgid "Create Submenu" -msgstr "Vytvořit podmenu" +msgstr "Vytvořit podnabídku" #: lazarusidestrconsts.lismenueditordeletefromtemplate msgid "Delete From Template ..." @@ -11109,7 +11621,7 @@ #: lazarusidestrconsts.lismenueditormenueditor msgid "Menu Editor" -msgstr "Editor menu" +msgstr "Editor nabídky" #: lazarusidestrconsts.lismenueditormovedown msgid "Move Down (or right)" @@ -11129,7 +11641,7 @@ #: lazarusidestrconsts.lismenueditorselectmenu msgid "Select Menu:" -msgstr "Vyberte menu:" +msgstr "Vyberte nabídku:" #: lazarusidestrconsts.lismenueditorselecttemplate msgid "Select Template:" @@ -11153,7 +11665,7 @@ #: lazarusidestrconsts.lismenuexampleprojects msgid "Example Projects ..." -msgstr "Ukázkové projkety ..." +msgstr "Ukázkové projekty ..." #: lazarusidestrconsts.lismenuextractproc msgid "Extract Procedure ..." @@ -11202,7 +11714,7 @@ #: lazarusidestrconsts.lismenufindreferencesofusedunit msgid "Find References Of Used Unit" -msgstr "Najít Reference Použité Unity" +msgstr "Najít reference použité jednotky" #: lazarusidestrconsts.lismenugeneraloptions msgid "Options ..." @@ -11322,6 +11834,22 @@ msgid "Jump to Implementation" msgstr "Skočit na implementaci" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "Skočit na Implementation uses" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "skočit na Initialization" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "skočit na Interface" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "skočit na Interface uses" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Skočit na další značku" @@ -11338,6 +11866,14 @@ msgid "Jump to Previous Error" msgstr "Skočit na předchozí chybu" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "skočit na začátek procedury" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "skočit na hlavičku procedury" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Změnit výběr na malá písmena" @@ -11355,6 +11891,10 @@ msgid "New Component" msgstr "Nová komponenta" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "Nový %s" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nový formulář" @@ -11581,6 +12121,10 @@ msgid "S&how Execution Point" msgstr "Ukázat bod vykonávání" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "Chytré tipy citlivé na kontext" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Seřadit výběr ..." @@ -11638,7 +12182,6 @@ msgstr "Tabulátory na mezery ve výběru" #: lazarusidestrconsts.lismenutemplateabout -#, fuzzy msgctxt "lazarusidestrconsts.lismenutemplateabout" msgid "About" msgstr "O aplikaci" @@ -11649,15 +12192,15 @@ #: lazarusidestrconsts.lismenutemplatedescriptionstandardeditmenu msgid "Standard Edit Menu" -msgstr "Normální menu Editace" +msgstr "Normální nabídka Úpravy" #: lazarusidestrconsts.lismenutemplatedescriptionstandardfilemenu msgid "Standard File Menu" -msgstr "Normální menu Soubor" +msgstr "Normální nabídka Soubor" #: lazarusidestrconsts.lismenutemplatedescriptionstandardhelpmenu msgid "Standard Help Menu" -msgstr "Normální menu Nápověda" +msgstr "Normální nabídka Nápověda" #: lazarusidestrconsts.lismenutemplatefind msgctxt "lazarusidestrconsts.lismenutemplatefind" @@ -11760,11 +12303,6 @@ msgid "History" msgstr "Historie" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Rychlá tlačítka IDE" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -11871,7 +12409,7 @@ #: lazarusidestrconsts.lismissingdirectory msgid "missing directory \"%s\"" -msgstr "chybějící složka \"%s\"" +msgstr "chybějící adresář \"%s\"" #: lazarusidestrconsts.lismissingevents msgid "Missing Events" @@ -11950,7 +12488,7 @@ #: lazarusidestrconsts.lismmaddscustomoptions msgid "Adds custom options:" -msgstr "Přídává vlastní možnosti:" +msgstr "Přidává vlastní možnosti:" #: lazarusidestrconsts.lismmappendarbitraryfpcoptionsego1ghtldflag msgid "Append arbitrary fpc options, e.g. -O1 -ghtl -dFlag" @@ -12050,11 +12588,11 @@ #: lazarusidestrconsts.lismmoverrideoutputdirectory msgid "Override output directory (-FU)" -msgstr "Přepsat výstupni složku (-FU)" +msgstr "Přepsat výstupní adresář (-FU)" #: lazarusidestrconsts.lismmoverrideoutputdirectoryfuoftarget msgid "Override output directory -FU of target" -msgstr "Přepsat výstupní složku -FU cíle" +msgstr "Přepsat výstupní adresář -FU cíle" #: lazarusidestrconsts.lismmredolastundotothisgrid msgid "Redo last undo to this grid" @@ -12088,6 +12626,14 @@ msgid "Undo last change to this grid" msgstr "Vrátit poslední změnu této tabulky" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "Použít systémové kódování" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "Zakázat podporu pro UTF-8 jako výchozí kódování řetězců" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Hodnota \"%s\"" @@ -12098,7 +12644,7 @@ #: lazarusidestrconsts.lismode msgid ", Mode: %s" -msgstr "" +msgstr ", Režim: %s" #: lazarusidestrconsts.lismodifiedlgplnotice msgid "" @@ -12148,10 +12694,8 @@ msgstr "Přesunout soubory?" #: lazarusidestrconsts.lismovefilesfromtothedirectoryof -#, fuzzy -#| msgid "Move %s file(s) from %s to the directory%s%s%sof %s." msgid "Move %s file(s) from %s to the directory%s%s%sof %s?" -msgstr "Přesun %s soubor(ů) z %s do složky%s%s%sz %s" +msgstr "Přesun %s soubor(ů) z %s do adresáře%s%s%sz %s?" #: lazarusidestrconsts.lismoveonepositiondown msgid "Move \"%s\" one position down" @@ -12166,10 +12710,8 @@ msgstr "Přesunout nebo Kopírovat soubory?" #: lazarusidestrconsts.lismoveorcopyfilesfromtothedirectoryofpackage -#, fuzzy -#| msgid "Move or copy %s file(s) from %s to the directory%s%s%sof %s." msgid "Move or copy %s file(s) from %s to the directory%s%s%sof %s?" -msgstr "Přesun nebo kopírování %s soubor(ů) z %s do složky%s%s%sz %s" +msgstr "Přesun nebo kopírovat %s soubor(ů) z %s do adresáře%s%s%sz %s?" #: lazarusidestrconsts.lismovepage msgid "Move Page" @@ -12189,19 +12731,23 @@ #: lazarusidestrconsts.lismovingtheseunitswillbreaktheirusessectionsseemessa msgid "Moving these units will break their uses sections. See Messages window for details." -msgstr "Přesunt těchto unit rozbije jejich sekce uses. Podívej se do okna Zprávy pro více informací." +msgstr "Přesun těchto jednotek rozbije jejich sekce uses. Podívej se do okna Zprávy pro více informací." #: lazarusidestrconsts.lisms msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "Barvy zpráv" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" -msgstr "" +msgstr "Více adresářů je odděleno středníkem" #: lazarusidestrconsts.lismultiplepack msgid ", multiple packages: " -msgstr "" +msgstr ", více balíčků: " #: lazarusidestrconsts.lismvsavemessagestofiletxt msgid "Save messages to file (*.txt)" @@ -12296,7 +12842,7 @@ #: lazarusidestrconsts.lisnewpage msgid "New page" -msgstr "" +msgstr "Nová stránka" #: lazarusidestrconsts.lisnewproject msgid "(new project)" @@ -12352,7 +12898,7 @@ #: lazarusidestrconsts.lisnomessageselected msgid "(no message selected)" -msgstr "" +msgstr "(nevybrány žádné zprávy)" #: lazarusidestrconsts.lisnoname msgid "noname" @@ -12368,7 +12914,7 @@ #: lazarusidestrconsts.lisnoneselected msgid "(None selected)" -msgstr "" +msgstr "(Nic nevybráno)" #: lazarusidestrconsts.lisnonodeselected msgid "no node selected" @@ -12407,6 +12953,7 @@ msgstr "Neplatný pascalovský identifikátor" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "Poznámka" @@ -12481,7 +13028,7 @@ #: lazarusidestrconsts.lisobjectinspectorbecomesvisible msgid "Object Inspector becomes visible when components are selected in designer." -msgstr "" +msgstr "Inspektor objektů se stane viditelným, když jsou vybrány komponenty v návrháři." #: lazarusidestrconsts.lisobjectpascaldefault msgid "Object Pascal - default" @@ -12607,11 +13154,11 @@ #: lazarusidestrconsts.lisonlymessagesfittingthisregularexpression msgid "Only messages fitting this regular expression:" -msgstr "" +msgstr "Pouze zprávy vyhovující tomuto regulárnímu výrazu:" #: lazarusidestrconsts.lisonlymessageswiththesefpcidscommaseparated msgid "Only messages with these FPC IDs (comma separated):" -msgstr "" +msgstr "Pouze zprávy s těmito FPC ID (oddělené čárkou):" #: lazarusidestrconsts.lisonlysearchforwholewords msgid "Only search for whole words" @@ -12636,7 +13183,7 @@ #: lazarusidestrconsts.lisopendesigneronopenunithint msgid "Form is loaded in designer always when source unit is opened." -msgstr "" +msgstr "Formulář je vždy načten v návrháři, když je otevřena zdrojová jednotka." #: lazarusidestrconsts.lisopenexistingfile msgid "Open existing file" @@ -12706,16 +13253,21 @@ #: lazarusidestrconsts.lisopentooloptions msgid "Open Tool Options" -msgstr "" +msgstr "Otevřít volby nástroje" #: lazarusidestrconsts.lisopenurl msgid "Open URL" -msgstr "" +msgstr "Otevřít URL" #: lazarusidestrconsts.lisopenxml msgid "Open XML" msgstr "Otevřít XML" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Volby" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Volby změněny, čisté překládání s -B" @@ -12726,11 +13278,11 @@ #: lazarusidestrconsts.lisos msgid ", OS: %s" -msgstr "" +msgstr ", OS: %s" #: lazarusidestrconsts.lisothersourcespathofpackagecontainsdirectorywhichisa msgid "other sources path of package \"%s\" contains directory \"%s\", which is already in the unit search path." -msgstr "jiná zdrojová cesta balíčku \"%s\" obsahuje složku \"%s\", která je už v cestě pro hledání unit. " +msgstr "jiná zdrojová cesta balíčku \"%s\" obsahuje adresář \"%s\", který je už v cestě pro hledání jednotek. " #: lazarusidestrconsts.lisoverridelanguage msgid "Override language. For example --language=de. For possible values see files in the languages directory." @@ -12794,7 +13346,7 @@ #: lazarusidestrconsts.lispackageneedsanoutputdirectory msgid "Package needs an output directory." -msgstr "" +msgstr "Balíček vyžaduje výstupní adresář." #: lazarusidestrconsts.lispackageneedsinstallation msgid "Package needs installation" @@ -12814,7 +13366,7 @@ #: lazarusidestrconsts.lispackagesunitsidentifierslinesbytes msgid "packages=%s/%s units=%s/%s identifiers=%s/%s lines=%s bytes=%s" -msgstr "" +msgstr "balíčky=%s/%s jednotky=%s/%s identifikátory=%s/%s řádky=%s bajtů=%s" #: lazarusidestrconsts.lispackageunit msgid "package unit" @@ -12826,13 +13378,14 @@ #: lazarusidestrconsts.lispagename msgid "Page name" -msgstr "" +msgstr "Jméno stránky" #: lazarusidestrconsts.lispagenamealreadyexists msgid "Page name \"%s\" already exists. Not added." -msgstr "" +msgstr "Jméno stránky \"%s\" již existuje. Nepřidáno." #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "Panika" @@ -12844,10 +13397,6 @@ msgid "parser \"%s\": %s" msgstr "parser \"%s\":%s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Soubor Pascalu" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Počet průchodů" @@ -12863,7 +13412,11 @@ #: lazarusidestrconsts.lispastefromclipboard msgid "Paste from clipboard" -msgstr "" +msgstr "Vložit ze schránky" + +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "Pastelové barvy" #: lazarusidestrconsts.lispath msgid "Path" @@ -12939,13 +13492,13 @@ msgid "Disable I18N of lfm" msgstr "Zakázat I18N v lfm" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" -msgstr "" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" +msgstr "Přidat soubor ze souborového systému" #: lazarusidestrconsts.lispckeditaddotheritems msgid "Add other items" -msgstr "" +msgstr "Přidat jiné položky" #: lazarusidestrconsts.lispckeditaddtoproject msgctxt "lazarusidestrconsts.lispckeditaddtoproject" @@ -12958,7 +13511,7 @@ #: lazarusidestrconsts.lispckeditcallregisterprocedureofselectedunit msgid "Call %sRegister%s procedure of selected unit" -msgstr "Volání %sRegistr%s procedura vybrané jednotky" +msgstr "Volání %sRegister%s procedura vybrané jednotky" #: lazarusidestrconsts.lispckeditcleanupdependencies msgid "Clean up dependencies ..." @@ -12974,7 +13527,7 @@ #: lazarusidestrconsts.lispckeditcompilepackage msgid "Compile package" -msgstr "Kompilovat balíček" +msgstr "Přeložit balíček" #: lazarusidestrconsts.lispckeditcompileroptionsforpackage msgid "Compiler Options for Package %s" @@ -12998,8 +13551,8 @@ msgstr "Vlastnosti závislosti" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" -msgstr "Upravit obecné nastavení" +msgid "Edit general options" +msgstr "Upravit obecná nastavení" #: lazarusidestrconsts.lispckeditfileproperties msgid "File Properties" @@ -13009,10 +13562,6 @@ msgid "Install" msgstr "Instalovat" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Instalovat balíček do IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Neplatná maximální verze" @@ -13143,14 +13692,12 @@ msgstr "Uchovat jméno souboru jako preferované pro tuto závislost" #: lazarusidestrconsts.lispckeditthemaximumversionisnotavalidpackageversion -#, fuzzy msgid "The maximum version \"%s\" is not a valid package version.%s(good example 1.2.3.4)" msgstr "Maximální verze \"%s\" není platná verze balíčku.%s(dobrý příklad 1.2.3.4)" #: lazarusidestrconsts.lispckedittheminimumversionisnotavalidpackageversion -#, fuzzy msgid "The minimum version \"%s\" is not a valid package version.%s(good example 1.2.3.4)" -msgstr "Minimální verze \"%s\" není platná verze balíčku.%s(dobrý příklad 1.2.3.4)" +msgstr "Nejmenší verze \"%s\" není platná verze balíčku.%s(dobrý příklad 1.2.3.4)" #: lazarusidestrconsts.lispckedituninstall msgid "Uninstall" @@ -13284,9 +13831,8 @@ msgstr "Čas běhu" #: lazarusidestrconsts.lispckoptsthepackagehastheautoinstallflagthismeans -#, fuzzy msgid "The package \"%s\" has the auto install flag.%sThis means it will be installed in the IDE.%sInstallation packages must be designtime Packages." -msgstr "Balíček \"%s\" má příznak autoinstalace.%sTo znamená, že bude instalován do IDE. Instalované balíčky%smusí být návrhové." +msgstr "Balíček \"%s\" má příznak autoinstalace.%sTo znamená, že bude instalován do IDE.%sInstalované balíčky musí být návrhové balíčky." #: lazarusidestrconsts.lispckoptsthispackageprovidesthesameasthefollowingpackages msgid "This package provides the same as the following packages:" @@ -13459,13 +14005,12 @@ msgstr "Navrátit balíček?" #: lazarusidestrconsts.lispkgeditthefileiscurrentlynotintheunitpathofthepackage -#, fuzzy msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Soubor \"%s\"%snení aktuálně v cestě jednotek balíčku.%sPřidat \"%s\" do cesty jednotek?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "V roletovém menu je více funkcí" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "Více funkcí pro balíček" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13502,19 +14047,35 @@ msgstr "Virtuální jednotka" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +#, fuzzy +#| msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Adresář balíčku. Parametr je ID balíčku" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +#, fuzzy +#| msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Zahrnutá prohledávaná cestu souborů balíčku. Parametr je ID balíčku" +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +#, fuzzy +#| msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Prohledávaná cesta zdrojových souborů balíčku. Parametr je ID balíčku" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +#, fuzzy +#| msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Prohledávaná cesta jednotek balíčku. Parametr je ID balíčku" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13549,9 +14110,9 @@ msgid "Circular dependencies found" msgstr "Nalezeny kruhové závislosti" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "Překládání balíčku %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "Přeložit balíček %s" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13652,9 +14213,8 @@ msgstr "Neplatné jméno balíčku" #: lazarusidestrconsts.lispkgmangloadingpackagewillreplacepackage -#, fuzzy msgid "Loading package %s will replace package %s%sfrom file %s.%sThe old package is modified.%sSave old package %s?" -msgstr "Loading package %s will replace package %s%sfrom file %s.%sThe old package is modified.%sSave old package %s?" +msgstr "Načtení balíčku %s nahradí balíček %s%sze souboru %s.%sStarý balíček je upraven.%sUložit starý balíček %s?" #: lazarusidestrconsts.lispkgmangnewpackage msgid "NewPackage" @@ -13720,6 +14280,14 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Jeden nebo více vyžadovaných balíčků nebylo nalezeno. Viz graf balíčků pro více detailů." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" +"Balíček %s je již otevřen v IDE.\n" +"Nemůžete uložit balíček se stejným jménem.\n" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Uložit balíček?" @@ -13754,12 +14322,10 @@ msgstr "Soubor \"%s\" není balíček Lazarusu." #: lazarusidestrconsts.lispkgmangthefilenamedoesnotcorrespondtothepackage -#, fuzzy msgid "The filename \"%s\" does not correspond to the package name \"%s\" in the file.%sChange package name to \"%s\"?" msgstr "Jméno souboru \"%s\" nesouhlasí se jménem balíčku \"%s\" v souboru.%sZměnit jméno balíčku na \"%s\"?" #: lazarusidestrconsts.lispkgmangthefilenameispartofthecurrentproject -#, fuzzy msgid "The file name \"%s\" is part of the current project.%sProjects and Packages should not share files." msgstr "Jméno souboru \"%s\" je částí aktuálního projektu.%sProjekty a balíčky nemůžou sdílet soubory." @@ -13780,17 +14346,14 @@ msgstr "Následující balíčky se nepodařilo načíst:" #: lazarusidestrconsts.lispkgmangthefollowingunitswillbeaddedtotheusessectionof -#, fuzzy msgid "%sThe following units will be added to the uses section of%s%s:%s%s" -msgstr "%sNásledující jednotky budou přidány do sekce uses jednotky %s%s:%s%s" +msgstr "%sNásledující jednotky budou přidány do sekce 'uses' jednotky%s%s:%s%s" #: lazarusidestrconsts.lispkgmangthepackagefailedtocompileremoveitfromtheinstallati -#, fuzzy msgid "The package \"%s\" failed to compile.%sRemove it from the installation list?" msgstr "Selhal překlad balíčku \"%s\".%sOdstranit jej z instalačního seznamu?" #: lazarusidestrconsts.lispkgmangthepackagefilenameinisnotavalidlazaruspackagename -#, fuzzy msgid "The package file name \"%s\" in%s\"%s\" is not a valid Lazarus package name." msgstr "Jméno souboru balíčku \"%s\" v%s\"%s\" není platné jméno balíčku Lazarusu." @@ -13799,45 +14362,38 @@ msgstr "Balíček %s je balíčkem běhovým. %sBěhové balíčky nelze instalovat do IDE." #: lazarusidestrconsts.lispkgmangthepackageiscompiledautomaticallyanditsoutputdirec -#, fuzzy msgid "The package \"%s\" is compiled automatically and its output directory is \"%s\", which is in the default unit search path of the compiler. The package uses other packages which also use the default unit search of the compiler. This creates an endless loop.%sYou can fix this issue by removing the path from your compiler config (e.g. fpc.cfg)%sor by disabling the auto update of this package or by removing dependencies." -msgstr "Balíček \"%s\" je překládán automaticky a jeho výstupní adresář je \"%s\", což je přednastavená cesta hledání jednotek překladače. Balíček používá jiné balíčky, které rovněž používají přednastavenou prohledávanou cestu jednotek překladače. To vytváří nekonečnou smyčku.%sTento problém můžete opravit odstraněním cesty z Vaší konfigurace překladače (např.: fpc.cfg)%snebo zakázáním automatické změny tohoto balíčku nebo odstraněním závislostí." +msgstr "Balíček \"%s\" je překládán automaticky a jeho výstupní adresář je \"%s\", což je přednastavená cesta hledání jednotek překladače. Balíček používá jiné balíčky, které rovněž používají přednastavenou prohledávanou cestu jednotek překladače. To vytváří nekonečnou smyčku.%sTento problém můžete opravit odstraněním cesty z vaší konfigurace překladače (např.: fpc.cfg)%snebo zakázáním automatické změny tohoto balíčku nebo odstraněním závislostí." #: lazarusidestrconsts.lispkgmangthepackageismarkedforinstallationbutcannotbefound -#, fuzzy msgid "The package \"%s\" is marked for installation, but cannot be found.%sRemove dependency from the installation list of packages?" msgstr "Balíček \"%s\" je označen k instalaci, ale nedá se najít.%sOdstranit závislost ze seznamu instalovaných balíčků?" #: lazarusidestrconsts.lispkgmangthepackageisrequiredbywhichismarkedforinstallation msgid "The package %s is required by %s, which is marked for installation.%sSee package graph." -msgstr "Balíček %s je vyžadován balíčkem %s, který je označen k instalaci.%sViz. graf balíčků." +msgstr "Balíček %s je vyžadován balíčkem %s, který je označen k instalaci.%sViz graf balíčků." #: lazarusidestrconsts.lispkgmangthepackagenameisnotavalidpackagenamepleasechoosean -#, fuzzy msgid "The package name \"%s\" is not a valid package name%sPlease choose another name (e.g. package1.lpk)" -msgstr "Jméno balíčku \"%s\" není platným jménem balíčku%sProsím, zvolte jiné jméno (např. balicek1.lpk)" +msgstr "Jméno balíčku \"%s\" není platným jménem balíčku%sProsím zvolte jiné jméno (např. balicek1.lpk)" #: lazarusidestrconsts.lispkgmangthepackagenameofthefileisinvalid msgid "The package name \"%s\" of%sthe file \"%s\" is invalid." msgstr "Jméno balíčku \"%s\" %ssouboru \"%s\" je neplatné." #: lazarusidestrconsts.lispkgmangthepackagewasmarkedcurrentlylazarus -#, fuzzy msgid "The package \"%s\" was marked.%sCurrently Lazarus only supports static linked packages. The real un-installation needs rebuilding and restarting of Lazarus.%sDo you want to rebuild Lazarus now?" -msgstr "Balíček \"%s\" byl označen.%sAktuálně lazarus podporuje pouze staticky spojené balíčky. Skutečné odinstalování vyžaduje znovu sestavení a restartování lazarusu.%sChcete teď znovu sestavit Lazarus?" +msgstr "Balíček \"%s\" byl označen.%sAktuálně Lazarus podporuje pouze staticky spojené balíčky. Skutečné odinstalování vyžaduje znovu sestavení a restartování Lazarusu.%sChcete teď znovu sestavit Lazarus?" #: lazarusidestrconsts.lispkgmangthepackagewasmarkedforinstallationcurrentlylazarus -#, fuzzy msgid "The package \"%s\" was marked for installation.%sCurrently Lazarus only supports static linked packages. The real installation needs rebuilding and restarting of Lazarus.%sDo you want to rebuild Lazarus now?" -msgstr "Balíček \"%s\" byl označen pro instalaci.%sAktuálně lazarus podporuje pouze staticky spojené balíčky. Skutečná instalace vyžaduje znovu sestavení a restart lazarusu.%sChcete teď znovu sestavit Lazarus?" +msgstr "Balíček \"%s\" byl označen pro instalaci.%sAktuálně Lazarus podporuje pouze staticky spojené balíčky. Skutečná instalace vyžaduje znovu sestavení a restart Lazarusu.%sChcete teď znovu sestavit Lazarus?" #: lazarusidestrconsts.lispkgmangtheprojectrequiresthepackagebutitwasnotfound -#, fuzzy msgid "The project requires the package \"%s\".%sBut it was not found. See Project -> Project Inspector." msgstr "Projekt vyžaduje balíček \"%s\".%sAle tento nebyl nalezen. Viz Projekt -> Inspektor projektu." #: lazarusidestrconsts.lispkgmangtherearetwounitswiththesamename1from2from -#, fuzzy msgid "There are two units with the same name:%s1. \"%s\" from %s%s2. \"%s\" from %s" msgstr "Dvě jednotky mají stejné jméno:%s1. \"%s\" z %s%s2. \"%s\" z %s" @@ -13854,23 +14410,20 @@ msgstr "Existuje jednotka FPC se stejným jménem jako %s\"%s\" z %s" #: lazarusidestrconsts.lispkgmangthereisalreadyanotherpackagewiththename -#, fuzzy msgid "There is already another package with the name \"%s\".%sConflict package: \"%s\"%sFile: \"%s\"" msgstr "Balíček se zvoleným jménem \"%s\" už existuje. %sKonfliktní balíček:\"%s\"%sSoubor: \"%s\"." #: lazarusidestrconsts.lispkgmangthereisalreadyapackageloadedfromfile -#, fuzzy msgid "There is already a package \"%s\" loaded%sfrom file \"%s\".%sSee Package -> Package Graph.%sReplace is impossible." -msgstr "Už máme balíček \"%s\" načtený %sze souboru \"%s\".%sViz Balíček -> Graf balíčku.%sNahrazení není možné." +msgstr "Již existuje balíček \"%s\" načtený %sze souboru \"%s\".%sViz Balíček -> Graf balíčku.%sNahrazení není možné." #: lazarusidestrconsts.lispkgmangthereisanunsavedpackageintherequiredpackages msgid "There is an unsaved package in the required packages. See package graph." msgstr "Mezi vyžadovanými balíčky jsou některé neuložené. Viz graf balíčků." #: lazarusidestrconsts.lispkgmangthereisaunitwiththesamenameasapackage1from2 -#, fuzzy msgid "There is a unit with the same name as a package:%s1. \"%s\" from %s%s2. \"%s\"" -msgstr "Již existuje jednotka se stejným jménem jako balíček: %s1. \"%s\" z %s%s2. \"%s\"" +msgstr "Již existuje jednotka se stejným jménem jako balíček:%s1. \"%s\" z %s%s2. \"%s\"" #: lazarusidestrconsts.lispkgmangthisisavirtualpackageithasnosourceyetpleasesavethe msgid "This is a virtual package. It has no source yet. Please save the package first." @@ -13889,9 +14442,8 @@ msgstr "Nelze vytvořit zdrojový adresář \"%s\"%sbalíčku %s." #: lazarusidestrconsts.lispkgmangunabletocreatetargetdirectoryforlazarus -#, fuzzy msgid "Unable to create target directory for Lazarus:%s\"%s\".%sThis directory is needed for the new changed Lazarus IDE with your custom packages." -msgstr "Nelze vytvořit cílový adresář Lazarusu:%s\"%s\".%sTento adresář je nutný pro nové, změněné Lazarus IDE s vlastními balíčky." +msgstr "Nelze vytvořit cílový adresář Lazarusu:%s\"%s\".%sTento adresář je nutný pro nové změněné Lazarus IDE s vašimi vlastními balíčky." #: lazarusidestrconsts.lispkgmangunabletodeletefile msgid "Unable to delete file \"%s\"." @@ -13910,7 +14462,6 @@ msgstr "Nelze načíst balíček" #: lazarusidestrconsts.lispkgmangunabletoopenthepackage -#, fuzzy msgid "Unable to open the package \"%s\".%sThis package was marked for installation." msgstr "Nelze otevřít balíček \"%s\".%sTento balíček byl označen k instalaci." @@ -14015,7 +14566,6 @@ msgstr "%s%sSoubor lpk nebyl nalezen." #: lazarusidestrconsts.lispkgsysthepackageisinstalledbutnovalidpackagefilewasfound -#, fuzzy msgid "The package \"%s\" is installed, but no valid package file (.lpk) was found.%sA broken dummy package was created." msgstr "Balíček \"%s\" je instalován, ale nebyl nalezen platný soubor (.lpk).%sByl vytvořen rozbitý prázdný balíček." @@ -14045,10 +14595,8 @@ msgstr "Následující závislosti nejsou nutné kvůli automatické přechodnosti závislostí mezi balíčky." #: lazarusidestrconsts.lispkgtheprojectoverridestheoutputdirectoryofthefollowin -#, fuzzy -#| msgid "The project overrides the output directory of the following packages.%sSee Project / Compiler Options / Additions and Overrides%s%s" msgid "The project overrides the output directory of the following packages.%sSee Project / Project Options (compiler options section) / Additions and Overrides%s%s" -msgstr "Přojekt přepisuje výstupní složku následných balíčků.%sViz Projekt / Volby projektu / Přídavky a Přepisy%s%s" +msgstr "Projekt přepisuje výstupní adresář následujících balíčků.%sViz Projekt / Volby projektu / Přídavky a Přepisy%s%s" #: lazarusidestrconsts.lispkgthisfileisnotinanyloadedpackage msgid "This file is not in any loaded package." @@ -14077,11 +14625,11 @@ #: lazarusidestrconsts.lispldshowgloballinksin msgid "Show global links in " -msgstr "" +msgstr "Ukázat souhrnné odkaz v " #: lazarusidestrconsts.lispldshowuserlinksin msgid "Show user links in " -msgstr "" +msgstr "Ukázat odkaz uživatele v " #: lazarusidestrconsts.lisplduser msgid "User" @@ -14154,10 +14702,8 @@ msgstr "Ukazatel" #: lazarusidestrconsts.lisposaveinideconfigdirectory -#, fuzzy -#| msgid "Save in IDE config directory" msgid "Save in .lps file in IDE config directory" -msgstr "v konfiguračním adresáři IDE" +msgstr "Uložit v souboru .lps v konfiguračním adresáři IDE" #: lazarusidestrconsts.lisposaveinlpifil msgid "Save in .lpi file" @@ -14173,21 +14719,23 @@ #: lazarusidestrconsts.lisposavesessioninformationinhint msgid ".lpi is the project main info file, .lps is a separate file for session data only." -msgstr "" +msgstr ".lpi je hlavní informační soubor projektu, .lps je samostatný soubor jen pro data sezení." + +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "Pozice" #: lazarusidestrconsts.lispositionoutsideofsource -#, fuzzy -#| msgid "%s (position outside of source" msgid "%s (position outside of source)" -msgstr "%s (pozice vně zdroje" +msgstr "%s (pozice vně zdroje)" #: lazarusidestrconsts.lisppuinwrongdirectory msgid "ppu in wrong directory=%s." -msgstr "" +msgstr "ppu ve špatném adresáři=%s" #: lazarusidestrconsts.lisppunotfoundcheckyourfpccfg msgid "%s.ppu not found. Check your fpc.cfg." -msgstr "" +msgstr "%s.ppu nenalezeno. Zkontrolujte vás fpc.cfg." #: lazarusidestrconsts.lisprecedingword msgid "Preceding word" @@ -14195,7 +14743,7 @@ #: lazarusidestrconsts.lisprimaryconfigdirectorywherelazarusstoresitsconfig msgid "primary config directory, where Lazarus stores its config files. Default is " -msgstr "hlavní konfigurační složka, kde Lazarus uchovává své konfigurační soubory. Implicitní je " +msgstr "hlavní konfigurační adresář, kde Lazarus uchovává své konfigurační soubory. Výchozí je " #: lazarusidestrconsts.lisprimaryconfigpath msgid "Primary config path" @@ -14219,7 +14767,6 @@ msgstr "Soukromá metoda" #: lazarusidestrconsts.lisprobablyyouneedtoinstallsomepackagesforbeforeconti -#, fuzzy msgid "Probably you need to install some packages before continuing.%sWarning:%sThe project uses the following design time packages, which might be needed to open the form in the designer. If you continue, you might get errors about missing components and the form loading will probably create very unpleasant results.%sIt is recommended to cancel and install these packages first." msgstr "Před pokračováním asi bude nutné nainstalovat některé balíčky .%sVarování:%sProjekt používá následující návrhové balíčky, které mohou být nezbytné k otevření formuláře v návrháři. Pokud budete pokračovat, můžete obdržet chyby o chybějících komponentách a načítání formuláře pravděpodobně způsobí nechtěné výsledky.%sJe doporučeno zrušit akci a nejdříve nainstalovat tyto balíčky." @@ -14298,15 +14845,13 @@ msgstr "Balíček nenalezen" #: lazarusidestrconsts.lisprojaddthedependencywasnotfound -#, fuzzy msgid "The dependency \"%s\" was not found.%sPlease choose an existing package." msgstr "Závislost \"%s\" nebyla nalezena.%sProsím zvolte existující balíček." #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid -#, fuzzy msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" -msgstr "Maximální verze \"%s\" je neplatná.%sProsím použite formát hlavní.vedlejší.vydání.sestavení%sNapříklad: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" +msgstr "Maximální verze \"%s\" je neplatná.%sProsím použijte formát hlavní.vedlejší.vydání.sestavení%sNapříklad: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion" @@ -14314,13 +14859,11 @@ msgstr "Maximální verze je menší než Minimální verze." #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid -#, fuzzy msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" -msgstr "Minimální verze \"%s\" je neplatná.%sProsím použijte formát hlavní.vedlejší.vydání.sestavení%sNapříklad: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" +msgstr "Nejmenší verze \"%s\" je neplatná.%sProsím použijte formát hlavní.vedlejší.vydání.sestavení%sNapříklad: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag -#, fuzzy msgid "The package name \"%s\" is invalid.%sPlase choose an existing package." msgstr "Jméno balíčku \"%s\" není platné.%sProsím použijte existující balíček." @@ -14329,12 +14872,10 @@ msgstr "Projekt již je závislý na balíčku \"%s\"." #: lazarusidestrconsts.lisprojaddtheunitnamealreadyexistsintheproject -#, fuzzy msgid "The unit name \"%s\" already exists in the project%swith file: \"%s\"." msgstr "Jméno jednotky \"%s\" už v projektu%sexistuje se souborem: \"%s\"." #: lazarusidestrconsts.lisprojaddtheunitnamealreadyexistsintheselection -#, fuzzy msgid "The unit name \"%s\" already exists in the selection%swith file: \"%s\"." msgstr "Jméno jednotky \"%s\" už existuje ve výběru%sse souborem: \"%s\"." @@ -14361,7 +14902,7 @@ #: lazarusidestrconsts.lisproject3 msgid "project" -msgstr "" +msgstr "projekt" #: lazarusidestrconsts.lisprojectchanged msgid "Project changed" @@ -14406,7 +14947,7 @@ #: lazarusidestrconsts.lisprojectisrunnablehint msgid "Generates a binary executable which can be run." -msgstr "" +msgstr "Generuje binární spustitelné, které lze spustit." #: lazarusidestrconsts.lisprojectmacro msgctxt "lazarusidestrconsts.lisprojectmacro" @@ -14516,7 +15057,7 @@ #: lazarusidestrconsts.lisprojinspremoveitemsf msgid "Remove %s items from project?" -msgstr "" +msgstr "Odebrat %s položek z projektu?" #: lazarusidestrconsts.lisprojmangunabletoreadstatefileofprojecterror msgid "Unable to read state file %s of project %s%sError: %s" @@ -14532,7 +15073,7 @@ #: lazarusidestrconsts.lisprojoptsalwaysbuildhint msgid "May be needed if there is a bug in dependency check, normally not needed." -msgstr "" +msgstr "Může být potřeba pokud je chyba v kontrole závislostí, obyčejně není potřeba." #: lazarusidestrconsts.lisprojoptserror msgctxt "lazarusidestrconsts.lisprojoptserror" @@ -14593,7 +15134,7 @@ #: lazarusidestrconsts.lisputlrsfilesinoutputdirectoryhint msgid "The resource will be available for FPC." -msgstr "" +msgstr "Zdroj bude dostupný pro FPC." #: lazarusidestrconsts.lispvuapascalunitmusthavetheextensionpporpas msgctxt "lazarusidestrconsts.lispvuapascalunitmusthavetheextensionpporpas" @@ -14756,7 +15297,7 @@ #: lazarusidestrconsts.lisremovefrominstalllist msgid "Remove from install list" -msgstr "Odestranit ze seznamu instalovaných" +msgstr "Odstranit ze seznamu instalovaných" #: lazarusidestrconsts.lisremovefromproject msgid "Remove from Project" @@ -14772,11 +15313,11 @@ #: lazarusidestrconsts.lisremovelocalvariable msgid "Remove local variable %s" -msgstr "Odstranit lokální proměnnou %s" +msgstr "Odstranit místní proměnnou %s" #: lazarusidestrconsts.lisremovelocalvariable3 msgid "Remove local variable \"%s\"" -msgstr "Odsranit lokální proměnnou \"%s\"" +msgstr "Odstranit místní proměnnou \"%s\"" #: lazarusidestrconsts.lisremovemessagetypefilter msgid "Remove Message Type Filter" @@ -14871,7 +15412,7 @@ #: lazarusidestrconsts.lisreplacementfuncs msgid "Replacement functions" -msgstr "Náhrazující funkce" +msgstr "Nahrazující funkce" #: lazarusidestrconsts.lisreplacements msgid "Replacements" @@ -14899,7 +15440,7 @@ #: lazarusidestrconsts.lisreset msgid "Reset" -msgstr "Reset" +msgstr "Nulovat" #: lazarusidestrconsts.lisresetallfilefilterstodefaults msgid "Reset all file filters to defaults?" @@ -14911,7 +15452,7 @@ #: lazarusidestrconsts.lisresourcenamemustbeunique msgid "Resource name must be unique." -msgstr "" +msgstr "Jméno zdroje musí být jedinečné" #: lazarusidestrconsts.lisresourcesaveerror msgid "Resource save error" @@ -14969,7 +15510,7 @@ #: lazarusidestrconsts.lisrootdirectory msgid "Root Directory" -msgstr "Kořenová složka" +msgstr "Kořenový adresář" #: lazarusidestrconsts.lisrun msgctxt "lazarusidestrconsts.lisrun" @@ -15121,10 +15662,6 @@ msgid "Save current editor file" msgstr "Uložit aktuální editovaný soubor" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Úspěšně uloženo" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Uloženo s nastavením IDE" @@ -15166,24 +15703,22 @@ msgstr "Uložit změny sezení do projektu %s?" #: lazarusidestrconsts.lissavesessionfoldstate -#, fuzzy msgctxt "lazarusidestrconsts.lissavesessionfoldstate" msgid "Save fold info" msgstr "Uložit informaci o skládání" #: lazarusidestrconsts.lissavesessionfoldstatehint msgid "Code editor supports folding (temporarily hiding) blocks of code." -msgstr "" +msgstr "Editor kódu podporuje skládání (dočasné skrývání) úseků kódu." #: lazarusidestrconsts.lissavesessionjumphistory -#, fuzzy msgctxt "lazarusidestrconsts.lissavesessionjumphistory" msgid "Save jump history" msgstr "Uložit historii skoků" #: lazarusidestrconsts.lissavesessionjumphistoryhint msgid "Ctrl-Click on an identifier in code editor is stored in jump history." -msgstr "" +msgstr "Ctrl+Klik na identifikátor v editoru kódu je uložen v historii skoků" #: lazarusidestrconsts.lissavesettings msgid "Save Settings" @@ -15197,17 +15732,21 @@ msgid "Save " msgstr "Uložit " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "Ukládání souboru \"%s\" jako \"%s\" ztratí znaky na řádce %s, sloupci %s." + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Činitel zvětšení:" #: lazarusidestrconsts.lisscanfilesinparentdir msgid "Scan files in parent directory" -msgstr "" +msgstr "Skenovat soubory v nadřazeném adresáři" #: lazarusidestrconsts.lisscanfilesinparentdirhint msgid "Search for source files in sibling directories (parent directory and its children)" -msgstr "" +msgstr "Hledat zdrojové soubory v adresářích sourozenců (rodičovský adresář a jeho potomci)" #: lazarusidestrconsts.lisscanning msgid "Scanning" @@ -15215,7 +15754,7 @@ #: lazarusidestrconsts.lisscanning2 msgid "%s. Scanning ..." -msgstr "" +msgstr "%s. Skenování ..." #: lazarusidestrconsts.lisscanparentdir msgid "Scanning parent directory" @@ -15227,11 +15766,11 @@ #: lazarusidestrconsts.lissearchunit msgid "Search Unit \"%s\"" -msgstr "" +msgstr "Hledat jednotku \"%s\"" #: lazarusidestrconsts.lissecondaryconfigdirectorywherelazarussearchesfor msgid "secondary config directory, where Lazarus searches for config template files. Default is " -msgstr "druhotná konfigurační složka, kde Lazarus hledá šablony konfiguračních souborů. Implicitní je " +msgstr "druhotný konfigurační adresář, kde Lazarus hledá šablony konfiguračních souborů. Implicitní je " #: lazarusidestrconsts.lissecondaryconfigpath msgid "Secondary config path" @@ -15239,7 +15778,7 @@ #: lazarusidestrconsts.lissecondtest msgid "&Second test" -msgstr "" +msgstr "&Druhý test" #: lazarusidestrconsts.lisseemessages msgid "See messages." @@ -15259,7 +15798,7 @@ #: lazarusidestrconsts.lisselectanotherlclwidgetset msgid "Select another LCL widgetset (macro LCLWidgetType)" -msgstr "" +msgstr "Vybrat jiný LCL widgetset (makro LCLWidgetType)" #: lazarusidestrconsts.lisselectdfmfiles msgid "Select Delphi form files (*.dfm)" @@ -15272,7 +15811,7 @@ #: lazarusidestrconsts.lisselectedaddition msgid "Selected addition:" -msgstr "" +msgstr "Vybrané přídavky:" #: lazarusidestrconsts.lisselectedandchildcontrols msgid "Selected and child controls" @@ -15300,11 +15839,11 @@ #: lazarusidestrconsts.lisselectedmessageinmessageswindow msgid "Selected message in messages window:" -msgstr "" +msgstr "Vybrané zprávy v okně zprávy:" #: lazarusidestrconsts.lisselectedmodeswerebuilt msgid "Selected %d modes were successfully built." -msgstr "" +msgstr "Vybrané %d režimy byly úspěšně sestaveny." #: lazarusidestrconsts.lisselectedrightneighbour msgid "(selected right neighbour)" @@ -15340,7 +15879,7 @@ #: lazarusidestrconsts.lisselecttargetdirectory msgid "Select target directory" -msgstr "Vybrat cílovou složku" +msgstr "Vybrat cílový adresář" #: lazarusidestrconsts.lissetallcolors msgid "Set all colors:" @@ -15366,6 +15905,10 @@ msgid "Short, no path" msgstr "Krátké, bez cesty" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "Měla by být komponenta \"%s\" automaticky vytvořena, když aplikace nastartuje?" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Ukázat" @@ -15390,11 +15933,13 @@ msgid "Show empty units/packages" msgstr "Ukázat prázdné jednotky/balíčky" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "Ukázat zprávu FPC \"přeloženo řádků\"" + #: lazarusidestrconsts.lisshowglyphsfor -#, fuzzy -#| msgid "Show Glyphs for:" msgid "Show Glyphs for" -msgstr "Zobrazit ikony pro:" +msgstr "Zobrazit ikony pro" #: lazarusidestrconsts.lisshowgutterinobjectinspector msgid "Show gutter" @@ -15443,7 +15988,7 @@ #: lazarusidestrconsts.lisshowrecentlyusedidentifiersattop msgid "Show recently used identifiers at top" -msgstr "" +msgstr "Ukázat nedávno použité identifikátory na vrchu" #: lazarusidestrconsts.lisshowrelativepaths msgid "Show relative paths" @@ -15451,11 +15996,11 @@ #: lazarusidestrconsts.lisshowsallcontrolsintreehierarchy msgid "Shows all controls in tree hierarchy." -msgstr "" +msgstr "Ukáže všechny prvky v hierarchii stromu" #: lazarusidestrconsts.lisshowsdescriptionforselectedproperty msgid "A box at the bottom shows description for the selected property." -msgstr "" +msgstr "Rámeček vespodu ukazuje popis vybrané vlastnosti." #: lazarusidestrconsts.lisshowsetupdialogformostimportantsettings msgid "Show setup dialog for most important settings" @@ -15466,8 +16011,6 @@ msgstr "Ukázat speciální znaky" #: lazarusidestrconsts.lisshowstatusbarinobjectinspector -#, fuzzy -#| msgid "Show status bar" msgid "Show statusbar" msgstr "Ukázat stavový pruh" @@ -15477,15 +16020,15 @@ #: lazarusidestrconsts.lisshowunitswithinitialization msgid "Show units with initialization/finalization sections" -msgstr "" +msgstr "Ukázat jednotky se sekcemi initialization/finalization" #: lazarusidestrconsts.lisshowunitswithinitializationhint msgid "These units may initialize global data used by the program/application. Remove with care." -msgstr "" +msgstr "Tyto jednotky mohou inicializovat globální data použitá programem/aplikací. Odstraňte je opatrností." #: lazarusidestrconsts.lisshowunusedunits msgid "Show unused units ..." -msgstr "Zobrazit nepoužité unity ..." +msgstr "Zobrazit nepoužité jednotky ..." #: lazarusidestrconsts.lisshowvaluehintswhiledebugging msgid "Show value hints while debugging" @@ -15533,11 +16076,11 @@ #: lazarusidestrconsts.lisskipthesewarnings msgid "Skip these warnings" -msgstr "" +msgstr "Přeskočit tyto varování" #: lazarusidestrconsts.lisslowerbutmoreaccurate msgid "Slower but more accurate." -msgstr "" +msgstr "Pomalejší, ale přesnější" #: lazarusidestrconsts.lissmallerratherthanfaster msgid "Smaller rather than faster" @@ -15551,13 +16094,13 @@ msgid "Sorry, this type is not yet implemented" msgstr "Omlouváme se, tento typ ještě nebyl implementován." -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" -msgstr "" +msgstr "Řadit pro rozsah" + +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "Řazení" #: lazarusidestrconsts.lissortselascending msgid "Ascending" @@ -15620,9 +16163,8 @@ msgstr "&Zdrojový bod přerušení ..." #: lazarusidestrconsts.lissourcedirectoryanddestinationdirectoryarethesamema -#, fuzzy msgid "Source directory \"%s\"%sand destination directory \"%s\"%sare the same. Maybe you misunderstand this feature.%sIt will clean/recreate the destination directory and copy the package/project into it." -msgstr "Zdrojový adresář \"%s\"%sa cílový adresář \"%s\"%sjsou stejné.Možná jste špatně pochopili tuto funkci.%sFunkce vyčistí/znovuvytvoří cílový adresář a zkopíruje do něj balíček/projekt." +msgstr "Zdrojový adresář \"%s\"%sa cílový adresář \"%s\"%sjsou stejné. Možná jste špatně pochopili tuto funkci.%sFunkce vyčistí/znovuvytvoří cílový adresář a zkopíruje do něj balíček/projekt." #: lazarusidestrconsts.lissourcedirectorydoesnotexist msgid "Source directory \"%s\" does not exist." @@ -15642,7 +16184,7 @@ #: lazarusidestrconsts.lissourceofpagehaschangedsaveex msgid "Sources of pages have changed. Save page \"%s\"? (%d more)" -msgstr "Zdoje stránek se změnily. Uložit stránku \"%s\"? (%d další)" +msgstr "Zdroje stránek se změnily. Uložit stránku \"%s\"? (%d další)" #: lazarusidestrconsts.lissourcepaths msgid "Source paths" @@ -15678,7 +16220,7 @@ #: lazarusidestrconsts.lisstatusbarshowspropertysnameandclass msgid "Statusbar shows the property's name and the class where it is published." -msgstr "" +msgstr "Stavová lišta ukazuje jména vlastností a třídy, kde jsou zveřejněny" #: lazarusidestrconsts.lisstop msgctxt "lazarusidestrconsts.lisstop" @@ -15740,36 +16282,32 @@ #: lazarusidestrconsts.lissuccessfullyexported msgid "Successfully exported to \"%s\"." -msgstr "" +msgstr "Úspěšně exportováno do \"%s\"." #: lazarusidestrconsts.lissuccessfullyexportedbuildmodes msgid "Successfully exported %d BuildModes to \"%s\"." -msgstr "" +msgstr "Úspěšně exportováno %d režimu sestavení do \"%s\"." #: lazarusidestrconsts.lissuccessfullyexportedcompileroptions msgid "Successfully exported compiler options to \"%s\"." -msgstr "" +msgstr "Úspěšně exportovány volby překladače do \"%s\"." #: lazarusidestrconsts.lissuccessfullyimported msgid "Successfully imported from \"%s\"." -msgstr "" +msgstr "Úspěšně importováno z \"%s\"." #: lazarusidestrconsts.lissuccessfullyimportedbuildmodes msgid "Successfully imported %d BuildModes from \"%s\"." -msgstr "" +msgstr "Úspěšně importováno %d režimů sestavení z \"%s\"." #: lazarusidestrconsts.lissuccessfullyimportedcompileroptions msgid "Successfully imported compiler options from \"%s\"." -msgstr "" +msgstr "Úspěšně importovány volby překladače z \"%s\"." #: lazarusidestrconsts.lissuggestdefaultnameofnewfileinlowercase msgid "Suggest default name of new file in lowercase" msgstr "Navrhnout přednastavené jméno nového souboru malými písmeny" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Podezřelá cesta zahrnovaných" @@ -15800,7 +16338,7 @@ #: lazarusidestrconsts.lisswitchtofavoritestabafterasking msgid "Switch to Favorites tab after asking for component name." -msgstr "" +msgstr "Přepnout záložku Oblíbené po dotazu na jméno komponenty." #: lazarusidestrconsts.lissyntaxmode msgid "Syntax mode" @@ -15816,7 +16354,7 @@ #: lazarusidestrconsts.listaborderconfirmsort msgid "Sort tab orders of all child controls of \"%s\" by their positions?" -msgstr "Setřídit pořadí záložek všch dceřinných prvků \"%s\" podle jejich pozice?" +msgstr "Setřídit pořadí záložek všech dceřiných prvků \"%s\" podle jejich pozice?" #: lazarusidestrconsts.listaborderdownhint msgid "Move the selected control down in tab order" @@ -15848,7 +16386,7 @@ #: lazarusidestrconsts.listarget2 msgid ", Target: %s" -msgstr "" +msgstr ", Cíl: %s" #: lazarusidestrconsts.listargetcpu msgid "Target CPU" @@ -15885,7 +16423,7 @@ #: lazarusidestrconsts.listemplateeditparamcellhelp msgid "Inserts an editable Cell. Cells can be navigated using the tab key.%0:sThe \"param\" macro takes a list of comma separated arguments.%0:sThe first argument is the default value.%0:sThe 2nd argument (optional) can be used to link the cell to another cell (syncro edit)%0:s%0:s while param(\"foo\") do param(foo);%0:sInserts 2 independent cells, both with the default text \"foo\"%0:sThe quotes are optional%0:s%0:s if param(\"foo\") > 0 and param(\"foo\",sync=1) < 99 then%0:sInserts 2 linked cells, editing either one, will change the other one too%0:sThe value \"1\" refers to the position of the other \"param()\", so if there are more params:%0:s if param(\"bar\") and param(foo) > 0 and param(foo,sync=2) < 99 then%0:sThe 2nd and third are linked. (the 3rd refers to \"2\") %0:s%0:s\"sync can be shortened to \"s\":%0:s if param(\"foo\") > 0 and param(\"foo\",s=1) < 99 then%0:s%0:s if param(\"bar\") and param(\"foo\") > 0 and param(\"foo\",sync) < 99 then%0:sThe 2nd and third are linked.%0:sNote: \"Sync has no position and no \"=\", so it syncs to the previous cell with the same default (in this case \"foo\")" -msgstr "Vloží upravitelné buňky. Mezi buňkami můžete přecházet klávesou Tab.%0:sMakro \"param\" přijímá seznam argumentů oddělených čárkou.%0:sPrvním argumentem je výchozí hodnota.%0:sDruhý argument (nepovinný) může být použit k propojení buňky s jinou buňkou (synchronní úprava)%0:s%0:s while param(\"foo\") do param(foo);%0:sVloží dvě nezávislé buňky, obě s výchozím textem \"foo\"%0:sUvozovky nejsou povinné%0:s%0:s if param(\"foo\") > 0 and param(\"foo\",sync=1) < 99 then%0:sVloží dvě propojené buňky. Úprava jedné z nich se promítne i do druhé%0:sHodnota \"1\" odkazuje na pozici dalšího \"param()\", takže pokud je více parametrů:%0:s if param(\"bar\") and param(foo) > 0 and param(foo,sync=2) < 99 then%0:sDruhá a třetí jsou propojené (třetí odkazuje na \"2\") %0:s%0:s\"sync\" může být zkráceno na \"s\":%0:s if param(\"foo\") > 0 and param(\"foo\",s=1) < 99 then%0:s%0:s if param(\"bar\") and param(\"foo\") > 0 and param(\"foo\",sync) < 99 then%0:sDruhá a třetí jsou propojené.%0:sPoznámka: Pokud \"sync\" namá uvedeno \"=\" a pozici, propojí se k předchozí buňce se stejnou výchozí hodnotou (v tomto případě \"foo\")" +msgstr "Vloží upravitelné buňky. Mezi buňkami můžete přecházet klávesou Tab.%0:sMakro \"param\" přijímá seznam argumentů oddělených čárkou.%0:sPrvním argumentem je výchozí hodnota.%0:sDruhý argument (nepovinný) může být použit k propojení buňky s jinou buňkou (synchronní úprava)%0:s%0:s while param(\"foo\") do param(foo);%0:sVloží dvě nezávislé buňky, obě s výchozím textem \"foo\"%0:sUvozovky nejsou povinné%0:s%0:s if param(\"foo\") > 0 and param(\"foo\",sync=1) < 99 then%0:sVloží dvě propojené buňky. Úprava jedné z nich se promítne i do druhé%0:sHodnota \"1\" odkazuje na pozici dalšího \"param()\", takže pokud je více parametrů:%0:s if param(\"bar\") and param(foo) > 0 and param(foo,sync=2) < 99 then%0:sDruhá a třetí jsou propojené (třetí odkazuje na \"2\") %0:s%0:s\"sync\" může být zkráceno na \"s\":%0:s if param(\"foo\") > 0 and param(\"foo\",s=1) < 99 then%0:s%0:s if param(\"bar\") and param(\"foo\") > 0 and param(\"foo\",sync) < 99 then%0:sDruhá a třetí jsou propojené.%0:sPoznámka: Pokud \"sync\" nemá uvedeno \"=\" a pozici, propojí se k předchozí buňce se stejnou výchozí hodnotou (v tomto případě \"foo\")" #: lazarusidestrconsts.listemplatefile msgid "Template file" @@ -15893,18 +16431,17 @@ #: lazarusidestrconsts.listestdirectory msgid "Test directory" -msgstr "Testovací složka" +msgstr "Testovací adresář" #: lazarusidestrconsts.listesturl msgid "Test URL" -msgstr "" +msgstr "Zkušební URL" #: lazarusidestrconsts.listheapplicationbundlewascreatedfor msgid "The Application Bundle was created for \"%s\"" msgstr "Aplikační balík byl vytvořen pro \"%s\"" #: lazarusidestrconsts.listheclassisatcontrolandcannotbepastedontoanoncontro -#, fuzzy msgid "The class \"%s\" is a TControl and cannot be pasted onto a non control.%sUnable to paste." msgstr "Třída \"%s\" je TControl a nemůže být vložena na neovládací prvek.%sNelze vložit." @@ -15933,17 +16470,16 @@ msgstr "Editor komponenty třídy \"%s\" vytvořil chybu:%s\"%s\"" #: lazarusidestrconsts.listhecomponenteditorofclassinvokedwithverbhascreated -#, fuzzy msgid "The component editor of class \"%s\"%sinvoked with verb #%s \"%s\"%shas created the error:%s\"%s\"" msgstr "Třída editoru komponent \"%s\"%svyvolaná slovesem #%s \"%s\"%svytvořila chybu:%s\"%s\"" #: lazarusidestrconsts.listhecomponentisinheritedfromtodeleteaninheritedcomp msgid "The component %s is inherited from %s.%sTo delete an inherited component open the ancestor and delete it there." -msgstr "Komponenta %s je zděděná z %s.%sKe smazání zděděné komponenty otevřete předka a smažte ji tam." +msgstr "Komponenta %s je zděděná z %s.%sK smazání zděděné komponenty otevřete předka a smažte ji tam." #: lazarusidestrconsts.listhecomponentisinheritedfromtorenameaninheritedcomp msgid "The component %s is inherited from %s.%sTo rename an inherited component open the ancestor and rename it there." -msgstr "Komponenta %s je zděděná z %s.%sKe přejmenování zděděné komponenty otevřete předka a přejmenujte jij tam." +msgstr "Komponenta %s je zděděná z %s.%sK přejmenování zděděné komponenty otevřete předka a přejmenujte ji tam." #: lazarusidestrconsts.listhecomponentnamemustbeuniqueinallcomponentsonthefo msgid "The component name must be unique in all components on the form/datamodule.The name is compared case insensitive like a normal Pascal identifier." @@ -15951,7 +16487,7 @@ #: lazarusidestrconsts.listheconfigurationwillbedowngradedconverted msgid "The configuration will be downgraded/converted." -msgstr "Konfigurace bude ponížena/překonvertována" +msgstr "Nastavení bude poníženo/převedeno." #: lazarusidestrconsts.listhecontainsanotexistingdirectory msgid "The %s contains a nonexistent directory:%s%s" @@ -15966,9 +16502,8 @@ msgstr "Aktuální FPC nemá žádný konfigurační soubor. Pravděpodobně budou chybět některé jednotky. Zkontrolujte svou instalaci FPC." #: lazarusidestrconsts.listhedebuggerdoesnotexistsorisnotexecutableseeenviro -#, fuzzy msgid "The debugger \"%s\"%sdoes not exist or is not executable.%sSee Tools -> Options -> Debugger options" -msgstr "Ladič \"%s\"%sneexistuje, nebo není spustitelný.%sZkontrolujte Nástroje -> Nastavení -> Volby ladiče" +msgstr "Ladič \"%s\"%sneexistuje, nebo není spustitelný.%sZkontrolujte Nástroje -> Nastavení -> Volby ladiče " #: lazarusidestrconsts.listhedebuggerexecutabletypicallyhasthenamepleasegive msgid "The debugger executable typically has the name \"%s\". Please give the full file path." @@ -15983,9 +16518,8 @@ msgstr "Cílový adresář%s\"%s\" neexistuje." #: lazarusidestrconsts.listhedestinationdirectorydoesnotexistpleasecheckthep -#, fuzzy msgid "The destination directory \"%s\" does not exist.%sPlease check the project target file name Menu > Project > Project Options." -msgstr "Cílový adresář \"%s\" neexistuje.%sProsím, zkontrolujte cílové jméno souboru projektu v menu Projekt -> Volby projektu." +msgstr "Cílový adresář \"%s\" neexistuje.%sProsím zkontrolujte cílové jméno souboru projektu v Nabídka > Projekt > Volby projektu." #: lazarusidestrconsts.listhedirectorycontainsnoprojectincludefilesanymorere msgid "The directory \"%s\" contains no project include files any more. Remove this directory from the project's include search path?" @@ -15996,7 +16530,6 @@ msgstr "Adresář \"%s\" již neobsahuje žádné projektové jednotky. Odstranit tento adresář z projektové cesty jednotek?" #: lazarusidestrconsts.listhedirectoryisnolongerneededintheunitpathremoveit -#, fuzzy msgid "The directory \"%s\" is no longer needed in the unit path.%sRemove it?" msgstr "Adresář \"%s\" nadále není potřeba v cestě jednotek.%sOdstranit jej?" @@ -16029,9 +16562,8 @@ msgstr "Soubor \"%s\" je symbolický odkaz.%sOtevřít místo něj \"%s\"?" #: lazarusidestrconsts.listhefileisnotalazarusprojectcreateanewprojectforthi -#, fuzzy msgid "The file \"%s\" is not a Lazarus project.%sCreate a new project for this \"%s\"?" -msgstr "Soubor \"%s\" není projekt lazarusu.%sVytvořit nový projekt pro \"%s\"?" +msgstr "Soubor \"%s\" není projekt Lazarusu.%sVytvořit nový projekt pro \"%s\"?" #: lazarusidestrconsts.listhefilemaskisinvalid msgid "The file mask \"%s\" is invalid." @@ -16042,7 +16574,6 @@ msgstr "Maska souboru \"%s\" není platný regulární výraz." #: lazarusidestrconsts.listhefileseemstobeaprogramclosecurrentproject -#, fuzzy msgid "The file \"%s\" seems to be a program.%sClose current project and create a new Lazarus project for this program?%s\"No\" will load the file as normal source." msgstr "Soubor \"%s\" vypadá jako program. %sZavřít aktuální projekt a vytvořit nový projekt Lazarusu pro tento program?%s\"Ne\" načte soubor jako normální zdroj." @@ -16051,22 +16582,18 @@ msgstr "Soubor %s vypadá, že je programový soubor existujícího projektu Lazarusu." #: lazarusidestrconsts.listhefilewasfoundinoneofthesourcedirectoriesofthepac -#, fuzzy msgid "The file \"%s\"%swas found in one of the source directories of the package %s and looks like a compiled unit. Compiled units must be in the output directory of the package, otherwise other packages can get problems using this package.%sDelete ambiguous file?" msgstr "Soubor \"%s\"%sbyl nalezen v jednom ze zdrojových adresářů balíčku %s a vypadá jako přeložená jednotka. Přeložené jednotky musí být ve výstupním adresáři balíčku, jinak můžou mít jiné balíčky problémy s použitím tohoto balíčku.%sSmazat tento soubor?" #: lazarusidestrconsts.listhefilewasnotfounddoyouwanttolocateityourself -#, fuzzy msgid "The file \"%s\" was not found.%sDo you want to locate it yourself?" msgstr "Soubor \"%s\" nebyl nalezen.%sChcete ho najít sami?" #: lazarusidestrconsts.listhefilewasnotfoundignorewillgoonloadingtheproject -#, fuzzy msgid "The file \"%s\" was not found.%sIgnore will go on loading the project,%sAbort will stop the loading." msgstr "Soubor \"%s\" nebyl nalezen.%sZvolte Ignorovat pro pokračování v načítání projektu,%szvolte Zrušit pro zastavení načítání." #: lazarusidestrconsts.listhefollowingmethodsusedbyarenotinthesourceremoveth -#, fuzzy msgid "The following methods used by %s are not in the source%s%s%s%s%sRemove the dangling references?" msgstr "Následující metody použité v %s nejsou v zdrojovém kódu%s%s%s%s%sOdstranit tyto odkazy?" @@ -16080,26 +16607,23 @@ #: lazarusidestrconsts.listheideisstillbuilding msgid "The IDE is still building." -msgstr "" +msgstr "IDE stále sestavuje." #: lazarusidestrconsts.listheidentifierisaunitpleaseusethefilesaveasfunction msgid "The identifier is a unit. Please use the File - Save as function to rename a unit." -msgstr "Identifikátor je jednotkou. Použijte funkci Soubor->Uložit jako k přejmenování jednotky." +msgstr "Identifikátor je jednotkou. Použijte funkci Soubor - Uložit jako k přejmenování jednotky." #: lazarusidestrconsts.listhekeyisalreadyassignedtoremovetheoldassignmentand -#, fuzzy msgid "The key %s%sis already assigned to %s.%sRemove the old assignment and assign the key to the new function%s%s?" msgstr "Klávesa %s%sje již přiřazena k %s.%sOdstranit staré přiřazení a přiřadit klávese novou funkci%s%s?" #: lazarusidestrconsts.listhelaunchingapplicationbundledoesnotexists -#, fuzzy msgid "The Application Bundle %s%sneeded for execution does not exist or is not executable.%sDo you want to create one?%sSee Project -> Project Options -> Application for settings." -msgstr "Program %s%snutný ke spuštění neexistuje, nebo není spustitelný.%sChcete jej vytvořit?%sViz. nastavení v Projekt -> Volby projektu -> Aplikace" +msgstr "Program %s%snutný ke spuštění neexistuje, nebo není spustitelný.%sChcete jej vytvořit?%sViz nastavení v Projekt -> Volby projektu -> Aplikace" #: lazarusidestrconsts.listhelaunchingapplicationdoesnotexistsorisnotexecuta -#, fuzzy msgid "The launching application \"%s\"%sdoes not exist or is not executable.%sSee Run -> Run parameters -> Local" -msgstr "Spouštěcí aplikace \"%s\"%sneexistuje, nebo není spustitelná.%sViz. Spustit -> Parametry spouštění -> Lokální" +msgstr "Spouštěcí aplikace \"%s\"%sneexistuje, nebo není spustitelná.%sViz Spustit -> Parametry spouštění -> Místní" #: lazarusidestrconsts.listhelazarusdirectorycontainsthesourcesoftheideandth msgid "The Lazarus directory contains the sources of the IDE and the package files of LCL and many standard packages. For example it contains the file \"ide%slazarus.lpi\". The translation files are located there too." @@ -16122,12 +16646,10 @@ msgstr "Spouštěcí soubor \"make\" má obvykle jméno \"%s\". Je potřeba pro sestavení IDE. Prosím, zadejte celou cestu souboru." #: lazarusidestrconsts.listhenewincludefileisnotyetintheincludesearchpathadd -#, fuzzy msgid "The new include file is not yet in the include search path.%sAdd directory %s?" -msgstr "Nový include soubor ještě není v cestě hledání.%sPřidat adresář %s?" +msgstr "Nový 'include' soubor ještě není v cestě hledání.%sPřidat adresář %s?" #: lazarusidestrconsts.listhenewunitisnotyetintheunitsearchpathadddirectory -#, fuzzy msgid "The new unit is not yet in the unit search path.%sAdd directory %s?" msgstr "Nová jednotka zatím není v cestě hledání.%sPřidat adresář %s?" @@ -16192,9 +16714,8 @@ msgstr "Balíček %s nemůže být odinstalován, protože jej potřebuje samo IDE." #: lazarusidestrconsts.listhepackagedoesnothaveanyregisterprocedurewhichtypi -#, fuzzy msgid "The package %s does not have any \"Register\" procedure, which typically means, it does not provide any IDE addon. Installing it will probably only increase the size of the IDE and may even make it unstable.%sHint: If you want to use a package in your project, use the \"Add to project\" menu item." -msgstr "Balíček %s nemá proceduru \"Register\", což typicky znamená, že neposkytuje žádný přídavek pro IDE. Jeho instalací se pravděpodobně pouze zvětší velikost IDE a může dokonce způsobit jeho nestabilitu.%sTip: Pokud chcete použít balíček v projektu, použijte položku menu \"Přidat do projektu\"." +msgstr "Balíček %s nemá proceduru \"Register\", což typicky znamená, že neposkytuje žádný přídavek pro IDE. Jeho instalací se pravděpodobně pouze zvětší velikost IDE a může dokonce způsobit jeho nestabilitu.%sTip: Pokud chcete použít balíček v projektu, použijte položku nabídky \"Přidat do projektu\"." #: lazarusidestrconsts.listhepackageisalreadyinthelist msgid "The package %s is already in the list" @@ -16209,7 +16730,6 @@ msgstr "Cesta \"make\" není správná: \"%s\"" #: lazarusidestrconsts.listheprogrammakewasnotfoundthistoolisneededtobuildla -#, fuzzy msgid "The program \"make\" was not found.%sThis tool is needed to build Lazarus." msgstr "Program \"make\" nenalezen.%sTento nástroj je nutný k sestavení Lazarusu." @@ -16226,7 +16746,6 @@ msgstr "Projekt nemá hlavní soubor zdrojového kódu." #: lazarusidestrconsts.listheprojectinfofileisequaltotheprojectmainsource -#, fuzzy msgid "The project info file \"%s\"%sis equal to the project main source file!" msgstr "Informační soubor projektu \"%s\"%sje shodný s hlavním souborem zdrojového kódu!" @@ -16239,9 +16758,8 @@ msgstr "Před sestavením musíte projekt uložit%sPokud jste nastavili testovací adresář v nastavení IDE,%smůžete nový projekt zároveň vytvořit i sestavit.%sUložit projekt?" #: lazarusidestrconsts.listheprojectusestargetosandcputhesystemppuforthistar -#, fuzzy msgid "The project uses target OS=%s and CPU=%s.%sThe system.ppu for this target was not found in the FPC binary directories.%sMake sure fpc is installed correctly for this target and the fpc.cfg contains the right directories." -msgstr "The project uses target OS=%s and CPU=%s.%sThe system.ppu for this target was not found in the FPC binary directories.%sMake sure fpc is installed correctly for this target and the fpc.cfg contains the right directories." +msgstr "Projekt používá cílový OS=%s a CPU=%s.%ssystem.ppu pro tento cíl nebyl nalezen v binárním adresáři FPC.%sUjistěte se, že fpc je pro tento cíl správně nainstalováno a že fpc.cfg obsahuje správné adresáře." #: lazarusidestrconsts.listheprojectusesthenewfpcresourceswhichrequiresatlea msgid "The project uses the new FPC resources, which requires at least FPC 2.4" @@ -16249,24 +16767,23 @@ #: lazarusidestrconsts.listheprojectwritesthedebugsymbolstoanexternalfilethe msgid "The project writes the debug symbols to an external file. The \"%s\" supports only symbols within the executable." -msgstr "" +msgstr "Projekt zapisuje ladící symboly do vnějšího souboru. \"%s\" podporuje pouze symboly ve spustitelných." #: lazarusidestrconsts.listhereareadditionalnotesforthismessageon msgid "%sThere are additional notes for this message on%s" -msgstr "" +msgstr "%sExistují dodatečné poznámky pro tuto zprávu na%s" #: lazarusidestrconsts.listherearenoconflictingkeys msgid "There are no conflicting keys." -msgstr "" +msgstr "Nejsou žádné kolidující klávesy." #: lazarusidestrconsts.listhereareotherfilesinthedirectorywiththesamename msgid "There are other files in the directory with the same name,%swhich only differ in case:%s%s%sDelete them?" msgstr "V adresáři jsou další soubory se stejným jménem, %skteré se liší pouze ve velikosti písmen:%s%s%sSmazat je?" #: lazarusidestrconsts.listhereisafilewiththesamenameandasimilarextension -#, fuzzy msgid "There is a file with the same name and a similar extension on disk%sFile: %s%sAmbiguous File: %s%sDelete ambiguous file?" -msgstr "Na disku už je soubor se stejným jménem a podobnou koncovkou%sSoubor: %s%sNeplatný soubor: %s%sSmazat neplatný soubor?" +msgstr "Na disku už je soubor se stejným jménem a podobnou koncovkou%sSoubor: %s%sNejednoznačný soubor: %s%sSmazat nejednoznačný soubor?" #: lazarusidestrconsts.listhereisalreadyabuildmodewiththisname msgid "There is already a build mode with this name." @@ -16306,15 +16823,13 @@ #: lazarusidestrconsts.listhereisalreadyaunitinoldnewyouhavetomakesur msgid "There is already a unit \"%s\" in %s%sOld: %s%sNew: %s%sYou have to make sure that the unit search path contains only one of them.%s%sContinue?" -msgstr "Už existuje unita \"%s\" v %s%sStará: %s%sNová: %s%sMěli by jste se přesvědčit že v cestě pro hledání unit je pouze jedna z nich.%s%sPokračovat?" +msgstr "Už existuje jednotka \"%s\" v %s%sStará: %s%sNová: %s%sMěli by jste se přesvědčit že v cestě pro hledání jednotek je pouze jedna z nich.%s%sPokračovat?" #: lazarusidestrconsts.listhereisalreadyaunitwiththenamepascalidentifiersmus -#, fuzzy msgid "There is already a unit with the name \"%s\". Pascal identifiers must be unique." msgstr "Jednotka se jménem \"%s\" již existuje. Identifikátory Pascalu musí být unikátní." #: lazarusidestrconsts.listhereisaunitwiththenameintheprojectpleasechoose -#, fuzzy msgid "There is a unit with the name \"%s\" in the project.%sPlease choose a different name" msgstr "Jednotka se jménem \"%s\" již v projektu existuje.%sZvolte, prosím, jiné jméno" @@ -16327,7 +16842,6 @@ msgstr "Musí existovat alespoň jeden sestavovací mód." #: lazarusidestrconsts.listheresourceclassdescendsfromprobablythisisatypofor -#, fuzzy msgid "The resource class \"%s\" descends from \"%s\". Probably this is a typo for TForm." msgstr "Zdrojová třída \"%s\" dědí z \"%s\". Pravděpodobně je to překlep pro TForm." @@ -16388,9 +16902,8 @@ msgstr "Jednotka má toto jméno" #: lazarusidestrconsts.listheunitisnotlowercasethefreepascalcompiler -#, fuzzy msgid "The unit filename \"%s\" is not lowercase.%sThe Free Pascal compiler does not search for all cases. It is recommended to use lowercase filename.%sRename file lowercase?" -msgstr "Jméno souboru jednotky \"%s\" není malými písmeny.%sPřekladač Free Pascal nehledá všechny velikosti. Je lepší použít jména souborů s malými písmeny.%sPřejmenovat soubor malými písmeny?" +msgstr "Jméno souboru jednotky \"%s\" není malými písmeny.%sPřekladač Free Pascal nehledá všechny velikosti. Je doporučeno použít jména souborů s malými písmeny.%sPřejmenovat soubor malými písmeny?" #: lazarusidestrconsts.listheunitispartofthefpcsourcesbutthecorrespondingfpd msgid "The unit %s is part of the FPC sources, but the corresponding fpdoc xml file was not found.%sEither you have not yet added the fpcdocs directory to the search path or the unit is not yet documented.%sThe fpdoc files for the FPC sources can be downloaded from: %s%sPlease add the directory in the fpdoc editor options.%sIn order to create a new file the directory must be writable." @@ -16401,19 +16914,16 @@ msgstr "Jednotka %s je používaná jinými soubory.%sAktualizovat automaticky odkazy?" #: lazarusidestrconsts.listheunititselfhasalreadythenamepascalidentifiersmus -#, fuzzy msgid "The unit itself has already the name \"%s\". Pascal identifiers must be unique." msgstr "Jednotka samotná už má jméno \"%s\". Identifikátory Pascalu musí být unikátní." #: lazarusidestrconsts.listheunitsearchpathofcontainsthesourcedirectoryofpac -#, fuzzy msgid "The unit search path of \"%s\" contains the source directory \"%s\" of package %s" msgstr "Cesta hledání jednotek \"%s\" obsahuje zdrojový adresář \"%s\" balíčku %s" #: lazarusidestrconsts.listheworkingdirectorydoesnotexistpleasechecktheworki -#, fuzzy msgid "The working directory \"%s\" does not exist.%sPlease check the working directory in Menu > Run > Run parameters." -msgstr "Pracovní adresář \"%s\" neexistuje.%sProsím, zkontrolujte pracovní adresář v Spustit -> Parametry spuštění." +msgstr "Pracovní adresář \"%s\" neexistuje.%sProsím, zkontrolujte pracovní adresář vNabídka > Spustit > Parametry spuštění." #: lazarusidestrconsts.listhiscomponentalreadycontainsaclasswiththename msgid "This component already contains a class with the name %s." @@ -16429,7 +16939,7 @@ #: lazarusidestrconsts.listhisistestprojectfordesigntimepackage msgid "This is a test project for a design time package, testing it outside the IDE." -msgstr "" +msgstr "Toto je zkušební projekt pro balíčky v době návrhu, zkouším mimo IDE." #: lazarusidestrconsts.listhislookslikeapascalfileitisrecommendedtouselowerc msgid "This looks like a Pascal file.%sIt is recommended to use lower case filenames, to avoid various problems on some filesystems and different compilers.%sRename it to lowercase?" @@ -16441,24 +16951,27 @@ #: lazarusidestrconsts.listhisprojecthasonlythedefaultbuildmode msgid "This project has only the default build mode." -msgstr "Tento projekt ma pouze výchozí sestavovací mód." +msgstr "Tento projekt má pouze výchozí sestavovací mód." #: lazarusidestrconsts.listhissetofoptionstobuildlazarusisnotsupportedbythis -#, fuzzy msgid "This set of options to build Lazarus is not supported by this installation.%sThe directory \"%s\" is not writable.%sSee the Lazarus website for other ways to install Lazarus." -msgstr "Tato kombinace voleb sestavení Lazarusu není podporována touto instalací.%sAdresář \"%s\" není zapisovatelný.%sViz. webové stránky Lazarusu pro jiné způsoby instalace Lazarusu." +msgstr "Tato kombinace voleb sestavení Lazarusu není podporována touto instalací.%sAdresář \"%s\" není zapisovatelný.%sViz webové stránky Lazarusu pro jiné způsoby instalace Lazarusu." #: lazarusidestrconsts.listhisstatementcannotbeextractedpleaseselectsomecode msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Tento příkaz nelze vyjmout.%sProsím, vyberte nějaký kód pro vyjmutí procedury/metody." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "Toto umožní změnu všech režimů sestavení najednou. Ještě není hotovo." + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Toto vytvoří kruhovou závislost." #: lazarusidestrconsts.listhiswillputalotoftextontheclipboardproceed msgid "This will put a lot of text (%s) on the clipboard.%sProceed?" -msgstr "Toto vloži hodně textu (%s) do schránky.%sPokračovat?" +msgstr "Toto vloží hodně textu (%s) do schránky.%sPokračovat?" #: lazarusidestrconsts.listhreads msgctxt "lazarusidestrconsts.listhreads" @@ -16510,6 +17023,10 @@ msgid "Title (leave empty for default)" msgstr "Název (nechejte prázdné pro výchozí)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "Vybrat ikonu komponenty 24x24" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funkce: připojit oddělovač cesty" @@ -16546,6 +17063,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Přepnout zobrazení názvů souborů s plnou cestou nebo s relativní cestou" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "Nastavení nástrojového panelu" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "Nástrojový panel" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "Zvýraznit tlačítka nástrojových panelů" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "Vyvolat nástrojové panely" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "nástroj \"%s\" nemá spustitelný soubor" @@ -16568,7 +17101,12 @@ #: lazarusidestrconsts.listoolstoppedwithexitcodeusecontextmenutogetmoreinfo msgid "tool stopped with exit code %s. Use context menu to get more information." -msgstr "nástro skončil s kódem %s. Použijte kontextové menu pro více informací." +msgstr "nástroj skončil s kódem %s. Použijte kontextovou nabídku pro více informací." + +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Nahoře" #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" @@ -16596,7 +17134,7 @@ #: lazarusidestrconsts.listotalpages msgid "Total Pages: %s" -msgstr "" +msgstr "Celkem stránek: %s" #: lazarusidestrconsts.listranslatetheenglishmessages msgid "Translate the English Messages" @@ -16620,23 +17158,23 @@ #: lazarusidestrconsts.lisudadditionaldirectories msgid "Additional directories:" -msgstr "Přídavné složky:" +msgstr "Přídavné adresáře:" #: lazarusidestrconsts.lisudallpackageunits msgid "All package units" -msgstr "Všechny unity balíčku" +msgstr "Všechny jednotky balíčku" #: lazarusidestrconsts.lisudallsourceeditorunits msgid "All source editor units" -msgstr "Všechny unity v editoru zdrojáků" +msgstr "Všechny jednotky v zdrojovém editoru" #: lazarusidestrconsts.lisudallunits msgid "All units" -msgstr "Všechny unity" +msgstr "Všechny jednotky" #: lazarusidestrconsts.lisudbydefaultonlytheprojectunitsandthesourceeditorunit msgid "By default only the project units and the source editor units are searched. Add here a list of directories separated by semicolon to search as well." -msgstr "Defaultně jsou prohledány pouze otevřené unity a unity projektu. Přidejte sem seznam složek k prohledání oddělený středníkem." +msgstr "Jako výchozí jsou prohledány pouze otevřené jednotky a jednotky projektu. Přidejte sem seznam adresářů k prohledání oddělený středníkem." #: lazarusidestrconsts.lisudcollapseallnodes msgid "Collapse all nodes" @@ -16680,7 +17218,7 @@ #: lazarusidestrconsts.lisudscanningunits msgid "Scanning: %s units ..." -msgstr "Skenování: %s unit(y) ..." +msgstr "Skenování: %s jednotek ..." #: lazarusidestrconsts.lisudsearch msgid "(Search)" @@ -16692,7 +17230,7 @@ #: lazarusidestrconsts.lisudsearchnextunitofthisphrase msgid "Find next unit with this phrase" -msgstr "Najít další unitu s touto frází" +msgstr "Najít další jednotku s touto frází" #: lazarusidestrconsts.lisudsearchpreviousoccurrenceofthisphrase msgid "Find previous occurrence of this phrase" @@ -16700,15 +17238,15 @@ #: lazarusidestrconsts.lisudsearchpreviousunitofthisphrase msgid "Find previous unit with this phrase" -msgstr "Najít předchozí unitu s touto frází" +msgstr "Najít předchozí jednotku s touto frází" #: lazarusidestrconsts.lisudselectedunits msgid "Selected units" -msgstr "Vybrané unity" +msgstr "Vybrané jednotky" #: lazarusidestrconsts.lisudshownodesfordirectories msgid "Show nodes for directories" -msgstr "Zobrazit uzly pro složky" +msgstr "Zobrazit uzly pro adresáře" #: lazarusidestrconsts.lisudshownodesforprojectandpackages msgid "Show nodes for project and packages" @@ -16716,11 +17254,11 @@ #: lazarusidestrconsts.lisudunits msgid "Units" -msgstr "Unity" +msgstr "Jednotky" #: lazarusidestrconsts.lisudunits2 msgid "Units: %s" -msgstr "Unity: %s" +msgstr "Jednotky: %s" #: lazarusidestrconsts.lisudusedbyimplementations msgid "Used by Implementations: %s" @@ -16732,7 +17270,7 @@ #: lazarusidestrconsts.lisudusedbyinterfaces msgid "Used by Interfaces: %s" -msgstr "Použito v Rozhratních: %s" +msgstr "Použito v Rozhraních: %s" #: lazarusidestrconsts.lisudusedbyinterfaces2 msgid "used by interfaces: %s" @@ -16799,10 +17337,8 @@ msgstr "Zahrnut tímto:" #: lazarusidestrconsts.lisuidinproject -#, fuzzy -#| msgid "in Project:" msgid "In project:" -msgstr "v projektu:" +msgstr "V projektu:" #: lazarusidestrconsts.lisuidlines msgctxt "lazarusidestrconsts.lisuidlines" @@ -16843,12 +17379,10 @@ msgstr "Nelze zkopírovat komponenty do schránky" #: lazarusidestrconsts.lisunabletoaddresourceheadercommenttoresourcefile -#, fuzzy msgid "Unable to add resource header comment to resource file %s\"%s\".%sProbably a syntax error." -msgstr "Nelze přidat zdrojovou hlavičku do souboru zdrojů %s\"%s\".%sNejspíše chyba syntaxe." +msgstr "Nelze přidat komentář zdrojové hlavičky do souboru zdrojů %s\"%s\".%sNejspíše chyba syntaxe." #: lazarusidestrconsts.lisunabletoaddresourcetformdatatoresourcefileprobably -#, fuzzy msgid "Unable to add resource T%s:FORMDATA to resource file %s\"%s\".%sProbably a syntax error." msgstr "Nelze přidat zdroj T%s:FORMDATA do souboru zdrojů %s\"%s\".%sPravděpodobně syntaktická chyba." @@ -16893,10 +17427,13 @@ msgstr "Nelze převést soubor \"%s\"%sChyba: %s" #: lazarusidestrconsts.lisunabletoconverttextformdataoffileintobinarystream -#, fuzzy msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Nelze převést textová data formuláře souboru %s\"%s\"%sdo binárního proudu. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "Nelze převést na kódování \"%s\"" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Soubor nelze zkopírovat" @@ -16966,9 +17503,8 @@ msgstr "Nelze nalézt soubor \"%s\"." #: lazarusidestrconsts.lisunabletofindfilechecksearchpathinprojectcompileroption -#, fuzzy msgid "Unable to find file \"%s\".%sIf it belongs to your project, check search path in%sProject -> Compiler Options -> Search Paths -> Other Unit Files. If this file belongs to a package, check the appropriate package compiler options. If this file belongs to Lazarus, make sure compiling clean. If the file belongs to FPC then check fpc.cfg. If unsure, check Project -> CompilerOptions -> Test" -msgstr "Nelze najít soubor \"%s\".%sPokud patří do Vašeho projektu, zkontrolujte cestu hledání v %sProjekt -> Volby překladače -> Prohledávané cesty -> Ostatní soubory jednotek. Pokud tento soubor patří do balíčku, zkontrolujte příslušné volby překladače balíčku. Pokud tento soubor patří do Lazarusu, ujistěte se čistým přeložením. Pokud soubor patří do FPC, zkontrolujte fpc.cfg. Pokud si nejste jistí, použijte Projekt -> Volby překladače -> Test" +msgstr "Nelze najít soubor \"%s\".%sPokud patří do vašeho projektu, zkontrolujte cestu hledání v %sProjekt -> Volby překladače -> Prohledávané cesty -> Ostatní soubory jednotek. Pokud tento soubor patří do balíčku, zkontrolujte příslušné volby překladače balíčku. Pokud tento soubor patří do Lazarusu, ujistěte se čistým přeložením. Pokud soubor patří do FPC, zkontrolujte fpc.cfg. Pokud si nejste jistí, použijte Projekt -> Volby překladače -> Test" #: lazarusidestrconsts.lisunabletofindinlfmstream msgid "Unable to find %s in LFM Stream." @@ -17003,7 +17539,6 @@ msgstr "Nelze přečíst balíček \"%s\"" #: lazarusidestrconsts.lisunabletoloadthecomponentclassbecauseitdependsonits -#, fuzzy msgid "Unable to load the component class \"%s\", because it depends on itself." msgstr "Nelze načíst třídu komponenty \"%s\", protože závisí na sobě samé." @@ -17041,7 +17576,7 @@ #: lazarusidestrconsts.lisunabletoreadprocessexitstatus msgid "unable to read process ExitStatus" -msgstr "Selhalo čtení Exit Kódu procesu" +msgstr "nelze číst proces ExitStatus" #: lazarusidestrconsts.lisunabletoreadtheprojectinfofile msgctxt "lazarusidestrconsts.lisunabletoreadtheprojectinfofile" @@ -17170,7 +17705,6 @@ msgstr "Odinstalovat vybrané?" #: lazarusidestrconsts.lisunit -#, fuzzy msgctxt "lazarusidestrconsts.lisunit" msgid "Unit" msgstr "Jednotka" @@ -17201,11 +17735,11 @@ #: lazarusidestrconsts.lisunitnotfound msgid "unit %s not found" -msgstr "unita %s nenalezena" +msgstr "jednotka %s nenalezena" #: lazarusidestrconsts.lisunitnotfoundatnewposition msgid "unit %s not found at new position \"%s\"" -msgstr "unita %s nenalezena na místě \"%s\"" +msgstr "jednotka %s nenalezena na místě \"%s\"" #: lazarusidestrconsts.lisunitnotfoundinproject msgid "A unit not found in project %s" @@ -17225,7 +17759,7 @@ #: lazarusidestrconsts.lisunitrequirespackage msgid "unit %s requires package %s" -msgstr "unita %s vyžaduje balíček %s" +msgstr "jednotka %s vyžaduje balíček %s" #: lazarusidestrconsts.lisunitsnotfoundinproject msgid "Units not found in project %s" @@ -17237,7 +17771,7 @@ #: lazarusidestrconsts.lisunusedunitsof msgid "Unused units of %s" -msgstr "Nepoužité unity z %s" +msgstr "Nepoužité jednotky z %s" #: lazarusidestrconsts.lisunusualcompilerfilenameusuallyitstartswithfpcppcor msgid "Unusual compiler file name. Usually it starts with fpc, ppc or ppcross." @@ -17250,7 +17784,7 @@ #: lazarusidestrconsts.lisupdateinfo msgid "Update info" -msgstr "Aktualitovat info" +msgstr "Aktualizovat infoormace" #: lazarusidestrconsts.lisupdateotherproceduresignatureswhenonlylettercaseha msgid "Update other procedure signatures when only letter case has changed" @@ -17262,7 +17796,7 @@ #: lazarusidestrconsts.lisupdatingpofilesfailedforpackage msgid "Updating PO files failed for package %s" -msgstr "" +msgstr "Aktualizace PO souborů selhala pro balíček %s" #: lazarusidestrconsts.lisupgrade msgid "Upgrade" @@ -17282,7 +17816,7 @@ #: lazarusidestrconsts.lisurlonwikithebaseurlis msgid "URL on wiki (the base url is %s)" -msgstr "" +msgstr "URL na wiki (základní url je %s)" #: lazarusidestrconsts.lisusagemessagehoption msgid "Usage message (-h option)" @@ -17299,7 +17833,7 @@ #: lazarusidestrconsts.lisusecheckboxforbooleanvalues msgid "Use CheckBox for Boolean values" -msgstr "" +msgstr "Použijte zaškrtávátko pro boolovské hodnoty" #: lazarusidestrconsts.lisusecommentsincustomoptions msgid "Use comments in custom options" @@ -17315,7 +17849,7 @@ #: lazarusidestrconsts.lisusedforautocreatedforms msgid "Used for auto-created forms." -msgstr "" +msgstr "Použito pro automaticky vytvořené formuláře" #: lazarusidestrconsts.lisuseexcludefilter msgid "Use exclude filter" @@ -17411,7 +17945,7 @@ #: lazarusidestrconsts.lisvaluesthatarechangedfromdefault msgid "Values that are changed from the default are stored in .lfm file and are shown differently in Object Inspector." -msgstr "" +msgstr "Hodnoty, které jsou změněny z výchozího jsou uložen v .lfm souboru a jsou zobrazeny jinak v Inspektoru objektů." #: lazarusidestrconsts.lisvariable msgctxt "lazarusidestrconsts.lisvariable" @@ -17419,6 +17953,7 @@ msgstr "Proměnná" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "Výřečný" @@ -17473,10 +18008,8 @@ msgstr "Varování: víceznačný soubor nalezen: \"%s\". Zdrojový soubor je: \"%s\"" #: lazarusidestrconsts.liswarnings -#, fuzzy -#| msgid ", Warnings:%s" msgid ", Warnings: %s" -msgstr "Varování:%s" +msgstr ", Varování:%s" #: lazarusidestrconsts.liswarningthisisthemainunitthenewmainunitwillbepas msgid "%sWarning: This is the main unit. The new main unit will be %s.pas." @@ -17540,9 +18073,8 @@ msgstr "Vítejte v Lazarus IDE %s" #: lazarusidestrconsts.liswelcometolazarusthereisalreadyaconfigurationfromve -#, fuzzy msgid "Welcome to Lazarus %s%sThere is already a configuration from version %s in%s%s" -msgstr "Vítejte v Lazarusu %s%sJiž existuje konfigurace z verze %s v %s%s" +msgstr "Vítejte v Lazarusu %s%sJiž existuje konfigurace z verze %s v%s%s" #: lazarusidestrconsts.liswhatneedsbuilding msgid "What needs building" @@ -17562,11 +18094,11 @@ #: lazarusidestrconsts.liswindowmenuwithnamefordesignedform msgid "Window menu shows designed form's name instead of caption" -msgstr "Menu okna zobrazuje jméno navrhovaného formuláře namísto jeho popisku" +msgstr "Nabídka okna zobrazuje jméno navrhovaného formuláře namísto jeho popisku" #: lazarusidestrconsts.liswindowmenuwithnamefordesignedformhint msgid "Useful especially if the caption is left empty." -msgstr "Užitečné zejména když je titulek (Caption) okna prázdný" +msgstr "Užitečné zejména když je titulek okna prázdný." #: lazarusidestrconsts.liswindowstaysontop msgid "Window stays on top" @@ -17634,11 +18166,11 @@ #: lazarusidestrconsts.lisworkingdirectoryforbuilding msgid "Working directory for building" -msgstr "Pracovní složka pro sestavení" +msgstr "Pracovní adresář pro sestavení" #: lazarusidestrconsts.lisworkingdirectoryforrun msgid "Working directory for run" -msgstr "Pracovní složka pro spuštění" +msgstr "Pracovní adresář pro spuštění" #: lazarusidestrconsts.liswriteerror msgid "Write Error" @@ -17656,21 +18188,21 @@ msgid "XML Error" msgstr "Chyba XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML soubory" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Chyba XML analyzátoru v souboru %s%sChyba: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "Ano" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Toto můžete zakázat pro jednotlivé formuláře v editoru balíčku" #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepopupmenu msgid "You can disable this for individual forms via the popup menu in the project inspector" -msgstr "Můžete to vypnout pro jednotlivé formuláře pomocí kontextového menu v Inspektoru projektu" +msgstr "Můžete to vypnout pro jednotlivé formuláře pomocí kontextového nabídky v Inspektoru projektu" #: lazarusidestrconsts.lisyoucandownloadfpcandthefpcsourcesfromhttpsourcefor msgid "You can download FPC and the FPC sources from http://sourceforge.net/projects/lazarus/?source=directory" @@ -17678,10 +18210,9 @@ #: lazarusidestrconsts.lisyoucannotbuildlazaruswhiledebuggingorcompiling msgid "You cannot build Lazarus while debugging or compiling." -msgstr "Nemůžete sestavit lazarus v průběhu ladění nebo překládání." +msgstr "Nemůžete sestavit Lazarus v průběhu ladění nebo překládání." #: lazarusidestrconsts.lis_all_ -#, fuzzy msgctxt "lazarusidestrconsts.lis_all_" msgid "<All>" msgstr "<Všechno>" @@ -17709,7 +18240,7 @@ #: lazarusidestrconsts.lrspldunabletodeletefile msgid "Unable to delete file \"%s\"" -msgstr "Nebylo možné odstanit soubor \"%s\"" +msgstr "Nebylo možné odstranit soubor \"%s\"" #: lazarusidestrconsts.lrspldvalid msgid "valid" @@ -17771,7 +18302,7 @@ #: lazarusidestrconsts.rsautomaticallyincreasebuildnumberhint msgid "Increased every time the project is compiled." -msgstr "" +msgstr "Zvýšeno pokaždé, když je projekt přeložen." #: lazarusidestrconsts.rsbuild msgid "&Build:" @@ -17783,7 +18314,7 @@ #: lazarusidestrconsts.rsclosecurrentpage msgid "Close current page" -msgstr "Zavřít aktuální složku" +msgstr "Zavřít aktuální stránku" #: lazarusidestrconsts.rsconditionaldefines msgid "Conditional defines" @@ -17805,10 +18336,6 @@ msgid "Filter the lines in list with a string" msgstr "Filtrovat řádky v seznamu s řetězcem" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Datový soubor formuláře (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Nalezeno, ale zde nevypsáno: " @@ -17819,7 +18346,7 @@ #: lazarusidestrconsts.rsincludeversioninfohint msgid "Version info is stored if the executable format supports it." -msgstr "" +msgstr "Informace o verzi je uloženo pokud to formát spustitelného podporuje." #: lazarusidestrconsts.rsincludeversioninfoinexecutable msgid "Include version info in executable" @@ -17927,7 +18454,7 @@ #: lazarusidestrconsts.rslanguagefrench msgid "French" -msgstr "Francouzsština" +msgstr "Francouzština" #: lazarusidestrconsts.rslanguagegerman msgid "German" @@ -18048,7 +18575,7 @@ #: lazarusidestrconsts.srkmcarhelpmenu msgid "Help menu commands" -msgstr "Příkazy menu Nápověda" +msgstr "Příkazy nabídky Nápověda" #: lazarusidestrconsts.srkmcatcmdcmd msgid "Command commands" @@ -18068,11 +18595,11 @@ #: lazarusidestrconsts.srkmcatediting msgid "Text editing commands" -msgstr "Příkazy editace textu" +msgstr "Příkazy úpravy textu" #: lazarusidestrconsts.srkmcatfilemenu msgid "File menu commands" -msgstr "Příkazy menu Soubor" +msgstr "Příkazy nabídky Soubor" #: lazarusidestrconsts.srkmcatfold msgid "Text folding commands" @@ -18087,17 +18614,21 @@ msgid "Text marker commands" msgstr "Příkazy označení textu" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "Více-vsuvkové příkazy" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" -msgstr "Příkazy menu Balíček" +msgstr "Příkazy nabídky Balíček" #: lazarusidestrconsts.srkmcatprojectmenu msgid "Project menu commands" -msgstr "Příkazy menu Projekt" +msgstr "Příkazy nabídky Projekt" #: lazarusidestrconsts.srkmcatrunmenu msgid "Run menu commands" -msgstr "Spustit příkazy menu" +msgstr "Příkazy nabídky Spustit" #: lazarusidestrconsts.srkmcatsearchreplace msgid "Text search and replace commands" @@ -18133,11 +18664,11 @@ #: lazarusidestrconsts.srkmcattoolmenu msgid "Tools menu commands" -msgstr "Příkazy menu Nástroje" +msgstr "Příkazy nabídky Nástroje" #: lazarusidestrconsts.srkmcatviewmenu msgid "View menu commands" -msgstr "Zobrazit příkazy menu" +msgstr "Zobrazit příkazy nabídky" #: lazarusidestrconsts.srkmcommand msgctxt "lazarusidestrconsts.srkmcommand" @@ -18246,7 +18777,7 @@ #: lazarusidestrconsts.srkmecbuildmanymodes msgid "build many modes" -msgstr "" +msgstr "sestavit mnoho režimů" #: lazarusidestrconsts.srkmecchar msgid "Char" @@ -18254,7 +18785,7 @@ #: lazarusidestrconsts.srkmeccleanupandbuild msgid "clean up and build" -msgstr "" +msgstr "vyčistit a sestavit" #: lazarusidestrconsts.srkmecclearall msgid "Delete whole text" @@ -18529,12 +19060,12 @@ msgstr "Hádat chybně umístěné $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" -msgstr "Posunout kurzor půl slova vlevo" +msgid "Move cursor part-word left (e.g. CamelCase)" +msgstr "Posunout kurzor část slova vlevo (např. CamelCase)" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" -msgstr "Posunout kurzor půl slova vpravo" +msgid "Move cursor part-word right (e.g. CamelCase)" +msgstr "Posunout kurzor část slova vpravo (např. CamelCase)" #: lazarusidestrconsts.srkmecimestr msgid "Ime Str" @@ -18645,6 +19176,16 @@ msgid "Invert Assignment" msgstr "Převrátit přiřazení" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Vlevo" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Vpravo" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Přesunout kurzor vlevo" @@ -18717,6 +19258,10 @@ msgid "Go to next editor" msgstr "Přejít na další editor" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "Jít na další editor v historii" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Jít na další editor se stejným Zdrojem" @@ -18769,6 +19314,30 @@ msgid "pause program" msgstr "pozastavit program" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "Vyčistit všechny stříšky navíc" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "Kurzorové klávesy mažou všechny dodatečné vsuvky" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "Kurzorové klávesy přesouvají všechny dodatečné vsuvky" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "Přidat další vsuvku" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Přepnout dodatečnou vsuvku" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "Odstranit dodatečnou vsuvku" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Předchozí značka" @@ -18777,6 +19346,10 @@ msgid "Go to prior editor" msgstr "Přejít na předchozí editor" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "Jít na předchozí editor v historii" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Jít na předchozí editor se stejným Zdrojem" @@ -18876,12 +19449,12 @@ msgstr "Vybrat Goto XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" -msgstr "Vybrat půl slova vlevo" +msgid "Select part-word left (e.g. CamelCase)" +msgstr "Vybrat část slova vlevo (např. CamelCase)" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" -msgstr "Vybrat půl slova vpravo" +msgid "Select part-word right (e.g. CamelCase)" +msgstr "Vybrat část slova vpravo (např. CamelCase)" #: lazarusidestrconsts.srkmecselleft msgid "Select Left" @@ -19329,10 +19902,22 @@ msgid "Move cursor word right" msgstr "Přesunout ukazatel o slovo doprava" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "Přiblížit" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "Oddálit" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Upravit klávesy povelů" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "Pokračovat s další akcí uvolnění tlačítka myši" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Složit komentáře" @@ -19365,6 +19950,26 @@ msgid "Hide comments in selection" msgstr "Skrýt komentáře ve výběru" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "Srovnat akci tlačítka s tlačítkem myši dolů" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "Srovnat akci řádku s tlačítkem myši dolů" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "Srovnat akci úprav s tlačítkem myši dolů" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "Srovnat akci pozice s tlačítkem myši dolů" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "Hledat všechny akce kliknutí myši" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Rozložit aktivní IfDef" @@ -19570,7 +20175,7 @@ #: lazarusidestrconsts.uemrefactor msgid "Refactoring" -msgstr "Refactoring" +msgstr "Přepracování" #: lazarusidestrconsts.uemruntocursor msgid "&Run to Cursor" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.de.po lazarus-1.6+dfsg/languages/lazaruside.de.po --- lazarus-1.4.4+dfsg/languages/lazaruside.de.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.de.po 2016-01-05 13:41:02.000000000 +0000 @@ -2,7 +2,7 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-04-19 22:09+0100\n" +"PO-Revision-Date: 2015-12-02 19:51+0100\n" "Last-Translator: Swen Heinig <swen@heinig.email>\n" "Language-Team: Deutsch <lazarus@miraclec.com>\n" "MIME-Version: 1.0\n" @@ -10,7 +10,7 @@ "Content-Transfer-Encoding: 8bit\n" "X-Poedit-SourceCharset: utf-8\n" "Language: de_DE\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.4\n" #: lazarusidestrconsts.dbgbreakgroupdlgcaption msgctxt "lazarusidestrconsts.dbgbreakgroupdlgcaption" @@ -77,6 +77,10 @@ msgid "History forward" msgstr "Historie vorwärts" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -160,6 +164,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Erweitert, Aktionen (Haltepunkte, Falten) beim Loslassen der Maustaste. Auswahl beim Drücken und Bewegen" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "Erweitert, Aktionen, nur rechte Randhälfte" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "Zeilennummern verwenden zur Zeilenauswahl" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -381,6 +393,10 @@ msgid "Lowercase, first letter up" msgstr "Kleinbuchstaben, erster immer groß" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "aktiv" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Zuweisungsoperator := hinzufügen" @@ -544,10 +560,6 @@ msgid "Adjust top line due to comment in front" msgstr "Ausrichten der oberen Zeile vorne am Kommentar" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Alle Dateien" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "alphabetisch" @@ -589,7 +601,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Neue Formulare werden beim Erzeugen zu den automatisch generierten zugefügt" #: lazarusidestrconsts.dlgautodel @@ -626,6 +640,16 @@ msgid "Auto rename file lowercase" msgstr "Dateinamen in Kleinbuchstaben" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "Aktiven Desktop automatisch speichern" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Verfügbare Formulare:" @@ -703,6 +727,10 @@ msgid "Matching bracket pairs" msgstr "Korrespondierende Klammernpaare" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1040,11 +1068,6 @@ msgid "Config files" msgstr "Konfigurationsdateien:" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Andere" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Andere Debugger-Optionen" @@ -1178,9 +1201,9 @@ msgid "User defined extension (.pp.xxx)" msgstr "Benutzerdefinierte Erweiterung (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" -msgstr "DCI-Datei (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" +msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption msgid "Path Editor" @@ -1202,18 +1225,10 @@ msgid "Delete template " msgstr "Vorlage löschen" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Desktop" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Buttons -" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Desktopdateien" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Hinweise" @@ -1222,6 +1237,18 @@ msgid "Menus - " msgstr "Menüs - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "Desktop-Name:" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Richtung" @@ -1289,7 +1316,7 @@ #: lazarusidestrconsts.dlgdrawcomponentsnamebelowit msgid "Draw the component's name below it." -msgstr "" +msgstr "Den Komponentennamen darunter zeichnen." #: lazarusidestrconsts.dlgedback msgid "Back" @@ -1534,6 +1561,134 @@ msgid "%s files" msgstr "%s Dateien" +#: lazarusidestrconsts.dlgfilterall +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Alle Dateien" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "CodeTools-Vorlagendatei" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "DCI-Datei" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "Delphi-Formular" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Delphi-Package" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Delphi-Projekt" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Delphi-Unit" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "FPC-Nachrichten-Datei" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "HTML-Dateien" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "Bitmap-Bilder" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "Pixmap-Bilder" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "PNG-Bilder" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Lazarus-Desktop-Einstellungen" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Editor-Dateitypen" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Lazarus-Datei" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Lazarus-Formular" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Lazarus-Include-Datei" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Lazarus andere Datei" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Lazarus-Package" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Lazarus-Projekt" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Lazarus-Projektquelltext" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "Lazarus-Sitzung" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Lazarus-Unit" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Pascal-Datei" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programme" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML-Dateien" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Text am Cursor suchen" @@ -1697,6 +1852,10 @@ msgid "Processing Instruction" msgstr "Verarbeite Anweisung" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "Die laufende Lazarus-Instanz akzeptiert keine Dateien." + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Vordergrundfarbe" @@ -1733,11 +1892,6 @@ msgid "&From cursor" msgstr "Ab &Cursorposition" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Einstellungen" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Stelle ermitteln" @@ -1754,6 +1908,10 @@ msgid "Grabber color" msgstr "Grabberfarbe" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Gitterfarbe" @@ -1935,9 +2093,13 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Übergehen" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" +"Ein Desktop mit dem gleichen Namen existiert bereits.\n" +"Bitte bestätigen Sie den Desktopnamen:\n" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2045,12 +2207,16 @@ msgstr "Stufe 1 (schnell, debuggerfreundlich)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" -msgstr "Stufe 2 (Stufe 1 + schnelle Opt.)" +msgid "2 (-O1 + quick optimizations)" +msgstr "Stufe 2 (-O1 + schnelle Opt.)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" -msgstr "Stufe 3 (Stufe 2 + langsame Opt.)" +msgid "3 (-O2 + slow optimizations)" +msgstr "Stufe 3 (-O2 + langsame Opt.)" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "Stufe 4 (-O3 + aggressive Opt. , Vorsicht)" #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" @@ -2068,10 +2234,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Zeilennummern in Laufzeitfehler-Backtraces anzeigen" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Einstellungen des Desktops aus Datei laden" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Hauptmenü" @@ -2093,6 +2255,10 @@ msgid "\"Make\" executable" msgstr "Pfad zum \"Make\"-Programm" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "Desktops verwalten" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Rand und Leiste" @@ -2455,6 +2621,10 @@ msgid "Gutter" msgstr "Randleiste" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "Zeilenänderungen" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Falt-Baum" @@ -2507,6 +2677,96 @@ msgid "Messages" msgstr "Meldungen" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Debug" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Fehler" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Hinweis" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Wichtig" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "Normal" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "Zeit und Statistik" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Warnung" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "Mehrfache Lazarus-Instanzen" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "immer eine neue Instanz öffnen" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "Mehrfache Instanzen nicht erlauben" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "Dateien in einer laufenden Instanz öffnen" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Mehrfachauswahl" @@ -2543,6 +2803,10 @@ msgid "Naming" msgstr "Namensvergabe" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "Neuer Desktop ..." + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Kein automatisches Umbenennen" @@ -2581,11 +2845,6 @@ msgid "Miscellaneous" msgstr "Verschiedenes" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Einstellungen" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Schnellumstellung" @@ -2614,6 +2873,14 @@ msgid "Overwrite block" msgstr "Block überschreiben" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" +"Desktop mit dem Namen \"%s\" wurde gefunden.\n" +"Soll der alte Desktop überschrieben werden?\n" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Hinweise für die Komponentenpalette" @@ -2796,8 +3063,8 @@ msgstr "Name der Eigenschaft" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" -msgstr "Zuletzt geladenes Projekt beim Start öffnen" +msgid "Open last project and packages at start" +msgstr "Zuletzt geladenes Projekt und Packages beim Start öffnen" #: lazarusidestrconsts.dlgqshowborderspacing msgid "Show border spacing" @@ -2811,6 +3078,10 @@ msgid "Snap to grid" msgstr "Am Gitter ausrichten" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "Desktop \"%s\" wirklich löschen?" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Referenz" @@ -2819,6 +3090,10 @@ msgid "Regular e&xpressions" msgstr "Reguläre Ausdrücke" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "Desktop umbenennen" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "&Alle ersetzen" @@ -2860,6 +3135,22 @@ msgid "Rubberband Selection" msgstr "Auswahl" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" +"Die laufende Lazarus-Instanz akzeptiert keine Dateien.\n" +"Wollen Sie sie in einer neuen IDE-Instanz öffnen?\n" +"\n" +"%s\n" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "Lazarus-Instanz läuft, reagiert aber nicht." + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Anzeige (nicht bei Win32, beispielsweise 198.112.45.11:0, x.org:1, hydra:0,1)" @@ -2889,9 +3180,9 @@ msgid "Run Parameters" msgstr "Start-Parameter" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Desktopeinstellungen in Datei speichern" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "Aktuellen Desktop speichern unter" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2952,7 +3243,7 @@ #: lazarusidestrconsts.dlgsearchscope msgid "Search scope" -msgstr "" +msgstr "Suchbereich" #: lazarusidestrconsts.dlgselectallchildcontrols msgid "Select all child controls together with their parent." @@ -2962,6 +3253,10 @@ msgid "&Selected text" msgstr "Au&sgewählter Text" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "aktivieren" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Alle Elemente auf Voreinstellungen setzen" @@ -2974,6 +3269,26 @@ msgid "Set property Variable" msgstr "Eigenschaften-Variable setzen" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "ist Präfix" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "verwende const" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Zeige alle Units" @@ -3097,6 +3412,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "Mehrzeilige Tabs" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3198,6 +3517,11 @@ msgid "&Text to find" msgstr "Such&text" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Aktueller Klassen-/Prozedurenhinweis" @@ -3571,6 +3895,10 @@ msgid "File not unit" msgstr "Keine Unit-Datei" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "Icon (Maximum 24x24):" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Ungültige Basisklasse" @@ -3616,6 +3944,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Kein Package für die Abhängigkeit \"%s\" gefunden.%sBitte wählen Sie ein vorhandenes Package." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "Package/Projekt" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Name des Reiters zu lang" @@ -3744,6 +4076,11 @@ msgid "Abandon changes?" msgstr "Änderungen verwerfen?" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Alles abbrechen" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Alles abbrechen" @@ -3854,6 +4191,14 @@ msgid "Added property \"%s\" for %s." msgstr "Eigenschaft \"%s\" für %s hinzugefügt." +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "-FcUTF8 hinzufügen" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Dateien im Verzeichnis hinzufügen" @@ -3919,6 +4264,10 @@ msgid "&Address Breakpoint ..." msgstr "&Adresshaltepunkt ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "Hinzuf.>>" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "Zum Include-Suchpfad hinzufügen?" @@ -3927,6 +4276,10 @@ msgid "Add %s to project?" msgstr "%s zum Projekt hinzufügen?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "Zum Unit-Suchpfad hinzufügen?" @@ -3955,10 +4308,6 @@ msgid "File type" msgstr "Dateityp" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Besitzt Register-Prozedur" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Ungültiges Package" @@ -3980,19 +4329,10 @@ msgid "Show all" msgstr "Alle anzeigen" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Die Datei \"%s\"%sbefindet sich bereits im Package %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Das Package %s ist schreibgeschützt." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Unit-Name: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "Die Datei \"%s\" ist bereits vorhanden.%sErsetzen?" @@ -4017,10 +4357,6 @@ msgid "<All build modes>" msgstr "<Alle Erstellmodi>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Alle Dateien" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Alle übernommenen Einstellungen" @@ -4138,7 +4474,7 @@ msgstr "" #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Ein Fehler trat beim letzten Start während des Ladens von %s auf!%sDas Projekt erneut laden?" #: lazarusidestrconsts.lisapplicationclassname @@ -4198,6 +4534,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Eine brauchbare Einstellung unter Windows ist: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "IDE-Hauptmenü-Höhe automatisch anpassen" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "Zeige komplette Komponentenpalette" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "Wenn sich die Komponentenpalette über mehrere Zeilen erstreckt, zeige alle und nicht nur eine." + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Auto-Vervollständigung: aus" @@ -4255,6 +4603,10 @@ msgid "do not add character" msgstr "Zeichen nicht hinzufügen" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "Automatisch einen einfachen Bezeichner verwenden" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Vervollständigung/Hinweise" @@ -4343,6 +4695,11 @@ msgid "Border space" msgstr "Randbreite" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Unten" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Unterer Randabstand, Der Wert wird zum Basis-Randabstand addiert und für den Platz unter dem Element verwendet." @@ -4453,6 +4810,10 @@ msgid "Building Lazarus failed" msgstr "Neukompilieren von Lazarus fehlgeschlagen" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "Erstellmodus: %s" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Unterschiede zwischen den Erstellmodi" @@ -4917,7 +5278,7 @@ msgstr "Falsche Einrückung" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Eine Ausnahme trat auf während des Löschens von%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5152,6 +5513,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Geben Sie eine Pascal-Datei für die Einrückungsbeispiele an" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "Fügt neue Methode zu Abschnitt hinzu" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5180,6 +5545,10 @@ msgid "Choose directory" msgstr "Verzeichnis auswählen" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "FPC Quelltextverzeichnis auswählen" @@ -5311,7 +5680,7 @@ #: lazarusidestrconsts.liscleanuppackage msgid "Clean up package \"%s\"." -msgstr "" +msgstr "Package \"%s\" aufräumen." #: lazarusidestrconsts.liscleanupunitpath msgid "Clean up unit path?" @@ -5334,9 +5703,9 @@ msgid "Click here to browse the file" msgstr "Hier klicken um die Datei zu browsen" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Klicken sie, um die Einsatzmöglichkeiten zu sehen" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5405,6 +5774,10 @@ msgid "Pages" msgstr "Seiten" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "Palette ist sichtbar" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "Vo&rgaben wiederherst." @@ -5993,10 +6366,6 @@ msgid "Symbol" msgstr "Symbol" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "CodeTools-Vorlagendatei" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Nachher ausführen" @@ -6187,6 +6556,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "\"Lazarus kompilieren\" einstellen" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "Symbolleiste konfigurieren" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Lazarus IDE einrichten" @@ -6582,7 +6955,7 @@ #: lazarusidestrconsts.lisconvshouldbefollowedbynumber msgid "\"$\" should be followed by a number: %s" -msgstr "" +msgstr "auf \"$\" sollte eine Zahl folgen: %s" #: lazarusidestrconsts.lisconvstoppedbecausethereispackage msgid "Stopped because there already is a package with the same name" @@ -6628,6 +7001,166 @@ msgid "User selected to end conversion with file %s" msgstr "" +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "Symbolleiste(n) hinzufügen/konfigurieren/löschen" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "Trenner hinzufügen" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "Gewähltes Element zur Symbolleiste hinzufügen" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "Verfügbare Kommandos" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "Symbolleisten-Umrandungsstil" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Keine" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Einfach" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "Auswahl löschen" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Code-Explorer" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Quelltextvorlagen" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "Konfigurieren" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "Wollen Sie die ausgewählte Symbolleiste wirklich löschen?" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "Es muß wenigstens eine Symbolleiste geben!" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "Allgemeine Coolbar-Einstellungen" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Doppelt" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Schaltfläche" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "IDE-Hauptmenü" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Meldungen" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "Gewähltes Symbolleisten-Element nach unten verschieben" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "Gewähltes Symbolleisten-Element nach oben verschieben" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "IDE-CoolBar" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "Package-Editor" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "Package-Editordateien" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "Gewähltes Element aus der Symbolleiste entfernen" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "Vorgaben wiederherstellen" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "Bitte wählen Sie zunächst eine Symbolleiste aus!" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Quelltexteditor" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "Quelltext-Tabulator" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "Symbolleisten-Kommandos" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "Coolbar ist sichtbar" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "Coolbar-Breite" + #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" msgid "Copy" @@ -6759,7 +7292,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "Debug- und Release-Modi erstellen" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -6904,6 +7437,10 @@ msgid "Custom options" msgstr "Benutzerdefinierte Einstellungen" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "Benutzerdefinierte Einstellungen" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Benutzerdefiniertes Programm" @@ -6919,7 +7456,7 @@ #: lazarusidestrconsts.lisdadattach msgid "Attach" -msgstr "" +msgstr "Anhängen" #: lazarusidestrconsts.lisdadimagename msgid "Image Name" @@ -7406,22 +7943,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "Delphi-kompatible Ressourcen. Empfohlen." -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Delphi-Package" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphi-Projekt" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Delphi-Unit" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "Desktops ..." + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Zielverzeichnis" @@ -7532,7 +8061,7 @@ #: lazarusidestrconsts.lisdisablei18nforlfm msgid "Disable I18N for LFM" -msgstr "i18n für LFM deaktivieren" +msgstr "i18n für lfm-Dateien ausschalten" #: lazarusidestrconsts.lisdisableoptionxg msgid "Disable Option -Xg?" @@ -7643,6 +8172,11 @@ msgid "Import ..." msgstr "Import ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "Mehr ..." + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7661,6 +8195,10 @@ msgid "Do not change" msgstr "unverändert" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "%sNicht prüfen, ob eine andere Lazarus-Instanz bereits läuft" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Schließen Sie das Projekt nicht" @@ -7786,6 +8324,10 @@ msgid "Duplicate Unit" msgstr "Doppelte Unit" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7811,14 +8353,22 @@ msgid "Editor Colors" msgstr "Editorfarben" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Editor-Dateitypen" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Editormakros" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "Editor-Symbolleiste" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "Editor-Symbolleisten-Einstellungen" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "Editor-Symbolleiste ist sichtbar" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Ein Schema laden" @@ -7921,6 +8471,10 @@ msgid "Working Directory:" msgstr "Arbeitsverzeichnis:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8002,7 +8556,7 @@ #: lazarusidestrconsts.lisenablei18nforlfm msgid "Enable I18N for LFM" -msgstr "" +msgstr "i18n für lfm-Dateien einschalten" #: lazarusidestrconsts.lisenableinternationalizationandtranslationsupport msgid "Enable internationalization and translation support" @@ -8130,7 +8684,7 @@ msgstr "Fehler im \"unit output directory\":" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "Fehler: Ungültiger Erstellmodus \"%s\"" #: lazarusidestrconsts.liserrorloadingfile @@ -8231,6 +8785,10 @@ msgid "Save Events to File" msgstr "Ereignisse in Datei speichern" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "Neue Ereignis-Methoden einfügen in Abschnitt" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Kommentar hinzufügen ..." @@ -8271,10 +8829,6 @@ msgid "Exclude filter" msgstr "Ausschließender Filter" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "ausführbare Datei \"%s\" ist ein Verzeichnis" @@ -8295,10 +8849,6 @@ msgid "Execution stopped" msgstr "Ausführung beendet" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programme" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8333,14 +8883,27 @@ msgid "Export" msgstr "Export ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "Alle exportieren" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "Alle Elemente in Datei exportieren" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "Umgebungseinstellungen exportieren" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Als HTML exportieren" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "Export / Import" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Exportiere Liste" @@ -8349,6 +8912,14 @@ msgid "Export package list (*.xml)" msgstr "Package-Liste exportieren (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "Ausgewählte exportieren" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "Export >>" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Ausdruck:" @@ -8767,10 +9338,6 @@ msgid "fpcmake failed" msgstr "fpcmake fehlgeschlagen" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "FPC-Nachrichten-Datei" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -8972,6 +9539,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sEs gibt %d weitere leere Gruppen. Alle löschen?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "Automatisch definierte lokale Variablen gruppieren" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Der Gruppenname darf nicht leer sein. Haltepunkt-Gruppe(n) löschen?" @@ -9004,6 +9575,10 @@ msgid "Has Help" msgstr "Besitzt Onlinehilfe" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Header-Kommentar für die Klasse" @@ -9143,15 +9718,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Hinzufügen" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Öffnen" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9285,6 +9858,11 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Wenn Sie zwei verschiedene Lazarus-Versionen verwenden wollen, müssen Sie das zweite Lazarus mit dem Kommandozeilenparameter primary-config-path oder pcp starten.%sZum Beispiel:" +#: lazarusidestrconsts.lisignore +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Übergehen" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Alle übergehen" @@ -9301,9 +9879,9 @@ msgid "Ignore this exception type" msgstr "Diesen Ausnahmetyp übergehen" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Übergehen, TForm als Vorfahr verwenden" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9323,9 +9901,10 @@ msgid "Important" msgstr "Wichtig" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "Umgebungseinstellungen importieren" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" @@ -9419,6 +9998,10 @@ msgid "Inherited project component" msgstr "Abgeleitete Projekt-Komponente" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "Lokale Variable initialisieren" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "Um eine saubere Kopie des Projekts oder Packages zu erhalten, werden alle Dateien im folgenden Verzeichnis gelöscht, der gesamte Inhalt geht verloren.%sAlle Dateien in \"%s\" löschen?" @@ -9428,6 +10011,10 @@ msgid "Insert" msgstr "Einfügen" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "Datum einfügen" @@ -9567,6 +10154,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Erzeuge eine einfache Make-Datei anstatt das Package zu kompilieren" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Interaktiv" @@ -9583,6 +10174,14 @@ msgid "Invalid delete" msgstr "Ungültiger Löschvorgang" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "Die Datei \"%s\" ist nicht ausführbar." + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Ungültiger Ausdruck:%s%s%s%s" @@ -9696,6 +10295,14 @@ msgid "Jump History" msgstr "Sprungliste" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "Zum Fehler springen" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Springe zu Prozedur %s" @@ -10280,7 +10887,7 @@ #: lazarusidestrconsts.lislastopened msgid "Last opened" -msgstr "" +msgstr "Zuletzt geöffnet" #: lazarusidestrconsts.lislaunchingapplicationinvalid msgid "Launching application invalid" @@ -10299,10 +10906,6 @@ msgid "Lazarus Default" msgstr "Lazarus-Vorgabe" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazarus-Desktop-Einstellungen" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazarus Verzeichnis" @@ -10315,22 +10918,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Lazarus-Datei" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarus-Form" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Lazarus-IDE" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarus-Include-Datei" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus-Sprach-ID (z.B. en, de, br, fi)" @@ -10343,30 +10934,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [Einstellungen] <Projektdatei>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Lazarus andere Datei" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarus-Package" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarus-Projekt" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarus-Projektinfo-Datei" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Lazarus-Projektquelltext" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Lazarus-Unit" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10662,10 +11229,6 @@ msgid "list of all case values" msgstr "Liste aller Case-Werte" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Erfolgreich geladen" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Laden von %s fehlgeschlagen" @@ -10848,6 +11411,10 @@ msgid "Manage Source Editors ..." msgstr "Quelltexteditoren verwalten ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "Maximale Anzahl paralleler Prozesse, 0 bedeutet Vorgabe (%s)" @@ -11273,6 +11840,22 @@ msgid "Jump to Implementation" msgstr "Zur Implementierung springen" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Springe zum nächsten Lesezeichen" @@ -11289,6 +11872,14 @@ msgid "Jump to Previous Error" msgstr "Zum vorherigen Fehler springen" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Auswahl kleinschreiben" @@ -11306,6 +11897,10 @@ msgid "New Component" msgstr "Neue Komponente" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Neues Formular" @@ -11532,6 +12127,10 @@ msgid "S&how Execution Point" msgstr "Ausführungspunkt anzeigen" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Auswahl sortieren ..." @@ -11710,11 +12309,6 @@ msgid "History" msgstr "Historie" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Speedbuttons der IDE anzeigen" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12032,6 +12626,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "Systemkodierung verwenden" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "Unterstützung für UTF-8 Vorgabe-Zeichenkodierung deaktivieren" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Wert \"%s\"" @@ -12140,6 +12742,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "Nachrichten-Farben" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "Mehrfache Verzeichnisse werden mit Semikolons getrennt" @@ -12455,7 +13061,7 @@ #: lazarusidestrconsts.lisoifaddtofavoriteproperties msgid "Add to favorite properties" -msgstr "" +msgstr "Zu Favoriteneigenschaften hinzufügen" #: lazarusidestrconsts.lisoifchooseabaseclassforthefavoriteproperty msgid "Choose a base class for the favorite property \"%s\"." @@ -12467,7 +13073,7 @@ #: lazarusidestrconsts.lisoifremovefromfavoriteproperties msgid "Remove from favorite properties" -msgstr "" +msgstr "Aus Favoriteneigenschaften entfernen" #: lazarusidestrconsts.lisoipautoinstalldynamic msgid "auto install dynamic" @@ -12662,6 +13268,11 @@ msgid "Open XML" msgstr "XML öffnen" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Einstellungen" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Einstellungen geändert, sauberes Neucompilieren mit -B" @@ -12791,10 +13402,6 @@ msgid "parser \"%s\": %s" msgstr "Parser \"%s\": %s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Pascal-Datei" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Laufzähler" @@ -12812,6 +13419,10 @@ msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "Pastellfarben" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Pfad" @@ -12884,10 +13495,10 @@ #: lazarusidestrconsts.lispckdisablei18noflfm msgid "Disable I18N of lfm" -msgstr "" +msgstr "i18n für lfm-Dateien ausschalten" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "Dateien aus dem Dateisystem hinzufügen" #: lazarusidestrconsts.lispckeditaddotheritems @@ -12945,7 +13556,9 @@ msgstr "Abhängigkeitseigenschaften" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Allgemeine Einstellungen" #: lazarusidestrconsts.lispckeditfileproperties @@ -12956,10 +13569,6 @@ msgid "Install" msgstr "Installieren" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Installiere Packages in der IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Ungültige Maximalversion" @@ -13142,7 +13751,7 @@ #: lazarusidestrconsts.lispckoptsauthor msgid "Author" -msgstr "Autor:" +msgstr "Autor" #: lazarusidestrconsts.lispckoptsautomaticallyrebuildasneeded msgid "Automatically rebuild as needed" @@ -13186,7 +13795,7 @@ #: lazarusidestrconsts.lispckoptslicense msgid "License" -msgstr "Lizenz:" +msgstr "Lizenz" #: lazarusidestrconsts.lispckoptslinker msgid "Linker" @@ -13406,9 +14015,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Die Datei \"%s\"%sbefindet sich derzeit nicht im Unitpfad des Packages.%s \"%s\" In den Unitpfad aufnehmen?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Das Popup-Menü enthält mehr Funktionen" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "Weitere Funktionen für das Package" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13445,19 +14054,27 @@ msgstr "Virtuelle Unit" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Package-Verzeichnis. Parameter ist die Package-ID" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Package-Includedateien-Suchpfad. Parameter ist die Package-ID." +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Package-Name. Parameter ist Package ID, z.B. \"Name\" oder \"Name 1.0\"" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Package-Ausgabeverzeichnis. Parameter ist Package ID, z.B. \"Name\" oder \"Name 1.0\"" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Package-Quellcode-Suchpfad. Parameter ist die Package-ID." #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Package-Unitsuchpfad. Parameter ist die Package-ID." #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13492,8 +14109,8 @@ msgid "Circular dependencies found" msgstr "Zirkuläre Abhängigkeiten gefunden" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "Kompiliere Package %s" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -13662,6 +14279,14 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Ein oder mehrere benötigte Packages wurden nicht gefunden. Siehe Package-Graph für Details." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" +"Das Package %s ist bereits in der IDE geöffnet.\n" +"Sie können kein Package mit dem selben Namen speichern.\n" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Package speichern?" @@ -13999,11 +14624,11 @@ #: lazarusidestrconsts.lispldshowgloballinksin msgid "Show global links in " -msgstr "" +msgstr "Zeige globale Links in" #: lazarusidestrconsts.lispldshowuserlinksin msgid "Show user links in " -msgstr "" +msgstr "Zeige Benutzer-Links in" #: lazarusidestrconsts.lisplduser msgid "User" @@ -14095,17 +14720,21 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "Position" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" #: lazarusidestrconsts.lisppuinwrongdirectory msgid "ppu in wrong directory=%s." -msgstr "" +msgstr "ppu im falschen Verzeichnis=%s." #: lazarusidestrconsts.lisppunotfoundcheckyourfpccfg msgid "%s.ppu not found. Check your fpc.cfg." -msgstr "" +msgstr "%s.ppu nicht gefunden. Prüfen Sie ihre fpc.cfg." #: lazarusidestrconsts.lisprecedingword msgid "Preceding word" @@ -14220,7 +14849,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Die maximale Versionsangabe \"%s\" ist ungültig.%sDas Format lautet Major.Minor.Release.Build%sBeispielsweise: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14230,7 +14859,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Die Minimalversionsangabe \"%s\" ist ungültig.%sBitte verwenden Sie das Format Major.Minor.Release.Build%sBeispielsweise: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -14460,7 +15089,7 @@ #: lazarusidestrconsts.lispromptforvalue msgid "Prompt for value" -msgstr "Benutzer nach Daten fragen" +msgstr "Benutzer nach Entscheidung fragen" #: lazarusidestrconsts.lisproperties msgid "Properties (replace or remove)" @@ -14715,7 +15344,7 @@ #: lazarusidestrconsts.lisremoveuses msgid "Remove uses \"%s\"" -msgstr "" +msgstr "\"%s\" aus uses-Abschnitt entfernen" #: lazarusidestrconsts.lisrename msgctxt "lazarusidestrconsts.lisrename" @@ -15032,10 +15661,6 @@ msgid "Save current editor file" msgstr "Aktuelle Datei im Editor speichern" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Erfolgreich gespeichert" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Gespeichert mit IDE-Einstellungen" @@ -15106,6 +15731,10 @@ msgid "Save " msgstr "Speichere " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Skalierungsfaktor:" @@ -15275,6 +15904,10 @@ msgid "Short, no path" msgstr "Kurz, kein Pfad" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Anzeigen" @@ -15299,6 +15932,10 @@ msgid "Show empty units/packages" msgstr "Leere Units/Packages anzeigen" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "Zeige FPC-Nachricht \"Zeilen kompiliert\"" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "Zeige Bildzeichen für" @@ -15438,7 +16075,7 @@ #: lazarusidestrconsts.lisskipthesewarnings msgid "Skip these warnings" -msgstr "" +msgstr "Diese Warnungen überspringen" #: lazarusidestrconsts.lisslowerbutmoreaccurate msgid "Slower but more accurate." @@ -15456,14 +16093,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Entschuldigung, dieser Typ ist (noch) nicht implementiert" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "Sortieren" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "Nach Bereich sortieren" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Aufsteigend" @@ -15670,10 +16307,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Neuen Dateinamen in Kleinbuchstaben vorschlagen" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Verdächtiger Include-Pfad" @@ -16327,6 +16960,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Diese Anweisung kann nicht extrahiert werden.%sBitte wählen Sie etwas Code, um eine neue Prozedur/Methode zu extrahieren." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Dies wird eine zirkuläre Abhängigkeit erzeugen." @@ -16385,6 +17022,10 @@ msgid "Title (leave empty for default)" msgstr "Titel (für Voreinstellung leerlassen)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "Ein Komponenten-Icon 24x24 wählen" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funktion: Pfadtrenner anhängen" @@ -16421,6 +17062,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Umschalten der Anzeige der Dateinamen zwischen voller/relativer Pfad" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "Symbolleisten-Konfiguration" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "Symbolleiste" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "Symbolleisten-Schaltflächen hervorheben" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "Werkzeug \"%s\" hat keine ausführbare Datei" @@ -16445,6 +17102,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Oben" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Oben verankert" @@ -16767,6 +17429,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Kann die Textformulardaten der Datei %s\"%s\"%snicht in einen Binärstream umwandeln. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Kann Datei nicht kopieren" @@ -17227,7 +17893,7 @@ #: lazarusidestrconsts.lisuserdefinedmarkupkeygroup msgctxt "lazarusidestrconsts.lisuserdefinedmarkupkeygroup" msgid "User defined text markup" -msgstr "" +msgstr "Benutzerdefinierte Texthervorhebung" #: lazarusidestrconsts.lisuserdefinedmarkupkeyremove msgid "Remove from list \"%s\"" @@ -17521,14 +18187,14 @@ msgid "XML Error" msgstr "XML-Fehler" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML-Dateien" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "XML-Parserfehler in der Datei %s%sFehler: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "Ja" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Sie können das für individuelle Formulare deaktivieren über den Package-Editor." @@ -17623,7 +18289,7 @@ #: lazarusidestrconsts.rsattachto msgid "Attach to" -msgstr "" +msgstr "Anhängen an" #: lazarusidestrconsts.rsattributes msgid "Attributes" @@ -17669,10 +18335,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Form-Datendatei (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Gefunden aber hier nicht aufgeführt: " @@ -17951,6 +18613,10 @@ msgid "Text marker commands" msgstr "Textmarkierungsbefehle" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Befehle aus dem Menü 'Package'" @@ -18042,7 +18708,7 @@ #: lazarusidestrconsts.srkmecattach msgid "Attach to program" -msgstr "" +msgstr "An Prozess anhängen" #: lazarusidestrconsts.srkmecautocompletion msgid "Code template completion" @@ -18259,7 +18925,7 @@ #: lazarusidestrconsts.srkmecdetach msgid "Detach from program" -msgstr "" +msgstr "Vom Prozess abtrennen" #: lazarusidestrconsts.srkmecdiff msgctxt "lazarusidestrconsts.srkmecdiff" @@ -18393,11 +19059,11 @@ msgstr "Falsch gesetzte $IFDEF raten" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Cursor halbes Wort nach links" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Cursor halbes Wort nach rechts" #: lazarusidestrconsts.srkmecimestr @@ -18509,6 +19175,16 @@ msgid "Invert Assignment" msgstr "Umgekehrte Zuweisung" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Links" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Rechts" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Cursor nach links" @@ -18581,6 +19257,10 @@ msgid "Go to next editor" msgstr "Zu nächstem Editorfenster wechseln" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Zum nächsten Editor mit dem selben Quelltext" @@ -18633,6 +19313,30 @@ msgid "pause program" msgstr "Programmpause" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Vorheriges Lesezeichen setzen" @@ -18641,6 +19345,10 @@ msgid "Go to prior editor" msgstr "Zu vorigem Editorfenster wechseln" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Zum vorherigen Editor mit dem selben Quelltext" @@ -18740,11 +19448,11 @@ msgstr "Bis zu Position auswählen" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "Halbwort links markieren" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "Halbwort rechts markieren" #: lazarusidestrconsts.srkmecselleft @@ -19193,10 +19901,22 @@ msgid "Move cursor word right" msgstr "Cursor ein Wort nach rechts bewegen" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Taste für Befehl bearbeiten" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Kommentare falten" @@ -19229,6 +19949,26 @@ msgid "Hide comments in selection" msgstr "Kommentare in Auswahl verbergen" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Aktive Ifdef entfalten" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.es.po lazarus-1.6+dfsg/languages/lazaruside.es.po --- lazarus-1.4.4+dfsg/languages/lazaruside.es.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.es.po 2016-01-05 13:41:02.000000000 +0000 @@ -74,6 +74,10 @@ msgid "History forward" msgstr "Avanzar en el historial" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -157,6 +161,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Extendido, Acciones (punto de interrupción, plegado) al soltar el ratón. Selección al hacer clic y mover" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -378,6 +390,10 @@ msgid "Lowercase, first letter up" msgstr "Minúsculas, primera letra en mayúsculas" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Añadir operador de asignación :=" @@ -541,10 +557,6 @@ msgid "Adjust top line due to comment in front" msgstr "Ajustar línea superior para mostrar el comentario anterior" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Todos los archivos" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Alfabéticamente" @@ -586,7 +598,9 @@ msgstr "La unidad principal .lpr crea cada formulario con Application.CreateForm(). También los libera automáticamente." #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Al crear formularios nuevos, añadirlos a formularios creados automáticamente" #: lazarusidestrconsts.dlgautodel @@ -623,6 +637,16 @@ msgid "Auto rename file lowercase" msgstr "Renombrar automáticamente en minúsculas" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Formularios disponibles:" @@ -700,6 +724,10 @@ msgid "Matching bracket pairs" msgstr "Coincidente con pares de paréntesis" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1037,11 +1065,6 @@ msgid "Config files" msgstr "Archivos de configuración" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Otros" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Otra información de depuración" @@ -1175,8 +1198,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Extensión definida por usuario (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1199,18 +1222,10 @@ msgid "Delete template " msgstr "Borrar plantilla" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Escritorio" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Botones - " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Archivos del escritorio" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Descripciones" @@ -1219,6 +1234,18 @@ msgid "Menus - " msgstr "Menús - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Dirección" @@ -1301,6 +1328,7 @@ msgstr "Subdirectorio" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Plantillas de Código" @@ -1530,6 +1558,154 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Todos los archivos" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "Fichero plantilla de CodeTools" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Paquete Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Proyecto Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Unidad Delphi" + +#: lazarusidestrconsts.dlgfilterexecutable +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Ejecutable" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "Archivo mensaje FPC" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Opciones de Escritorio de Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Tipos de archivo del editor" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Fichero de Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Formulario de Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Fichero include de Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Lazarus otro archivo" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Paquete de Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Proyecto de Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Fuente de proyecto de Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Unidad de Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Archivo Pascal" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programas" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Archivos XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Buscar texto desde el cursor" @@ -1693,6 +1869,10 @@ msgid "Processing Instruction" msgstr "Procesando Instrucción" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Color de texto" @@ -1729,11 +1909,6 @@ msgid "&From cursor" msgstr "&Desde el cursor" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opciones" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Obtener posición" @@ -1750,6 +1925,10 @@ msgid "Grabber color" msgstr "Coger color" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Color de rejilla" @@ -1931,9 +2110,11 @@ msgid "Included mixed state $IFDEF node" msgstr "Inclusión de nodo de estado $IFDEF mixto" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignorar" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2041,13 +2222,21 @@ msgstr "1 (rápido y amigable con el depurador)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +#, fuzzy +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "2 (optimizaciones rápidas)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +#, fuzzy +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "3 (optimizaciones lentas)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" msgstr "0 (sin optimización)" @@ -2064,10 +2253,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Visualizar números de líneas en los errores de tiempo de ejecución en trazados inversos" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Cargar configuración del escritorio desde fichero" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Menú Principal" @@ -2089,6 +2274,10 @@ msgid "\"Make\" executable" msgstr "\"Make\" ejecutable" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Margen y columna de marcas" @@ -2451,6 +2640,10 @@ msgid "Gutter" msgstr "Columna de marcas" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Plegado de Código" @@ -2503,6 +2696,104 @@ msgid "Messages" msgstr "Mensajes" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Depurar" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Error" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "Fatal" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Indicación" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Importante" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "Nota" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "Pánico" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "Explicativo" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Advertencia" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Multiselección" @@ -2539,6 +2830,10 @@ msgid "Naming" msgstr "Nombrar" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "No renombrar automáticamente" @@ -2577,11 +2872,6 @@ msgid "Miscellaneous" msgstr "Miscelánea" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opciones" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "configuración rápida" @@ -2610,6 +2900,12 @@ msgid "Overwrite block" msgstr "Sobreescribir bloque" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Descripciones para la paleta de componentes" @@ -2792,7 +3088,9 @@ msgstr "Nombre de la propiedad" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Abrir último proyecto al iniciar" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2807,6 +3105,10 @@ msgid "Snap to grid" msgstr "Ajustar a rejilla" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Referencia" @@ -2815,6 +3117,10 @@ msgid "Regular e&xpressions" msgstr "Expresiones ®ulares" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Reemplazar &todo" @@ -2856,6 +3162,18 @@ msgid "Rubberband Selection" msgstr "Selección de goma elástica" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Display (no para win32, e.j. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2885,9 +3203,9 @@ msgid "Run Parameters" msgstr "Parámetros de ejecución" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Guardar configuración del escritorio a fichero" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2958,6 +3276,10 @@ msgid "&Selected text" msgstr "Texto &Seleccionado" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Asignar predeterminado en todos los elementos" @@ -2970,6 +3292,26 @@ msgid "Set property Variable" msgstr "Fijar propiedad Variable" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Mostrar todas las unidades" @@ -3093,6 +3435,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "Cuando el control está a punto de alinearse con otro control, se ajusta a la posición de alineación." +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3194,6 +3540,11 @@ msgid "&Text to find" msgstr "&Texto a buscar" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Pista del actual clase/Procedimiento" @@ -3567,6 +3918,10 @@ msgid "File not unit" msgstr "El archivo no es una unidad" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Tipo del Ancestro no válido" @@ -3612,6 +3967,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "No se ha encontrado un paquete para la dependencia \"%s\".%sPor favor seleccione un paquete existente." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Nombre de página demasiado largo" @@ -3740,6 +4099,12 @@ msgid "Abandon changes?" msgstr "¿Abandonar cambios?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Abortar" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Abortar todo" @@ -3850,6 +4215,14 @@ msgid "Added property \"%s\" for %s." msgstr "Añadida propiedad \"%s\" para %s." +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Añadir Archivos en Directorio" @@ -3915,6 +4288,10 @@ msgid "&Address Breakpoint ..." msgstr "Direcciones de Punto de Interrupción ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "¿Añadir para trayecto de búsqueda de include?" @@ -3923,6 +4300,10 @@ msgid "Add %s to project?" msgstr "¿Añadir %s al proyecto?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "¿Añadir para trayecto de búsqueda de unidad?" @@ -3951,10 +4332,6 @@ msgid "File type" msgstr "Tipo de Archivo" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Tiene procedimiento de registro" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Paquete no válido" @@ -3976,19 +4353,10 @@ msgid "Show all" msgstr "Mostrar Todo" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "El archivo \"%s\"%sya esta en el paquete %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "El paquete %s es de sólo-lectura." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Nombre de Unidad: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "Ya existe el archivo \"%s\".%s¿Reemplazarlo?" @@ -4013,10 +4381,6 @@ msgid "<All build modes>" msgstr "<Todos los modos de construcción>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Todos los Archivos" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Todas la opciones heredadas" @@ -4134,7 +4498,7 @@ msgstr "Anclaje parte superior al lado de la parte superior de los hermanos. Utilice BorderSpacing para establecer la distancia. BorderSpacing de hermano se ignora." #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "¡Ocurrió un error en el último inicio mientras se cargaba %s!%s¿Cargar este proyecto otra vez?" #: lazarusidestrconsts.lisapplicationclassname @@ -4194,6 +4558,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Una opción útil en sistemas Windows es la siguiente: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Completar Automáticamente: desactivado" @@ -4251,6 +4627,10 @@ msgid "do not add character" msgstr "No agregar carácter" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Completado y Descripciones" @@ -4339,6 +4719,12 @@ msgid "Border space" msgstr "Espacio de borde" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Abajo" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Espacio de borde inferior. Este valor se añade al valor base de espacio de borde y es usado para el espacio bajo el control." @@ -4449,6 +4835,10 @@ msgid "Building Lazarus failed" msgstr "Ha fallado la construcción de Lazarus" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Diferencias entre modos de construcción" @@ -4913,7 +5303,7 @@ msgstr "Sangrado erróneo" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Se produjo una excepción durante la eliminación de%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5147,6 +5537,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Elija un archivo Pascal para ejemplos de sangrado" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "Escoge el ejecutable para compilador (%s)" @@ -5175,6 +5569,10 @@ msgid "Choose directory" msgstr "Escoja directorio" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Escoja directorio fuente de FPC" @@ -5329,9 +5727,9 @@ msgid "Click here to browse the file" msgstr "Pulse aquí para explorar el archivo" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Clic para ver los usos posibles" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5400,6 +5798,10 @@ msgid "Pages" msgstr "Páginas" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "&Restaurar valores por defecto" @@ -5988,10 +6390,6 @@ msgid "Symbol" msgstr "Símbolo" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "Fichero plantilla de CodeTools" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Ejecutar después de" @@ -6182,6 +6580,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Configurar \"Construir Lazarus\"" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Configurar IDE Lazarus" @@ -6615,13 +7017,181 @@ msgid "Units to replace" msgstr "Unidades a reemplazar" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" -msgstr "Propiedades desconocidas" +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "Propiedades desconocidas" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "El usuario ha elegido finalizar la conversión del fichero %s" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Nada" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Simple" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Explorador de Código" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Plantillas de Código" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Doble" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Botón" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Mensajes" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Editor de Código Fuente" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" -msgstr "El usuario ha elegido finalizar la conversión del fichero %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "" #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" @@ -6754,7 +7324,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "Crea modos Debug y Release" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -6899,6 +7469,10 @@ msgid "Custom options" msgstr "Opciones personalizadas" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Programa personalizado" @@ -7400,22 +7974,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "Recursos compatibles con Delphi. Recomendado." -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Paquete Delphi" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Proyecto Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Unidad Delphi" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "Los paquetes \"Tiempo diseño\" pueden agregar componentes y elementos de menú del IDE. Puede ser utilizados por proyectos, pero no se compilan en el proyecto. El compilador no encontrará unidades de este paquete al compilar el proyecto." +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Directorio de destino" @@ -7637,6 +8203,11 @@ msgid "Import ..." msgstr "Importar ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7655,6 +8226,10 @@ msgid "Do not change" msgstr "No cambiar" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "No cerrar el proyecto" @@ -7780,6 +8355,10 @@ msgid "Duplicate Unit" msgstr "Unidad duplicada" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7805,14 +8384,22 @@ msgid "Editor Colors" msgstr "Editar colores" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Tipos de archivo del editor" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Editar macros" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Cargar un esquema" @@ -7915,6 +8502,10 @@ msgid "Working Directory:" msgstr "Directorio de Trabajo:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8124,9 +8715,7 @@ msgstr "Error en el \"Directorio de salida de la unidad\":" #: lazarusidestrconsts.liserrorinvalidbuildmode -#, fuzzy -#| msgid "Error: (lazarus) invalid build mode \"%s\"" -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "Error: (lazarus) Modo de construcción inválido \"%s\"" #: lazarusidestrconsts.liserrorloadingfile @@ -8227,6 +8816,10 @@ msgid "Save Events to File" msgstr "Guardar Eventos a Archivo" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Añadir Comentario ..." @@ -8267,10 +8860,6 @@ msgid "Exclude filter" msgstr "Excluir filtro" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Ejecutable" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "ejecutable \"%s\" es un directorio" @@ -8291,10 +8880,6 @@ msgid "Execution stopped" msgstr "Ejecución detenida" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programas" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8329,14 +8914,27 @@ msgid "Export" msgstr "Exportar ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "Exportar todos los elementos a fichero" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Exportar como HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Exportar lista" @@ -8345,6 +8943,14 @@ msgid "Export package list (*.xml)" msgstr "Exportar lista de paquete (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Expresión:" @@ -8762,10 +9368,6 @@ msgid "fpcmake failed" msgstr "Falló fpcmake" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "Archivo mensaje FPC" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "Fichero de mensaje FPC:" @@ -8968,6 +9570,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sHay %d grupos vacíos más, ¿borrarlos todos?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "El nombre del grupo no puede estar vacío. ¿Limpiar los grupo(s) de puntos de interrupción?" @@ -9000,6 +9606,10 @@ msgid "Has Help" msgstr "Tiene Ayuda" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Comentario de cabecera para la clase" @@ -9139,15 +9749,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Añadir" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Abrir" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9281,6 +9889,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Si desea utilizar dos diferentes versiones de Lazarus debe iniciar el segundo Lazarus con la línea de comando parámetro primary-config-path o pcp.%sPor ejemplo:" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignorar" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Ignorar todo" @@ -9297,9 +9911,9 @@ msgid "Ignore this exception type" msgstr "Ignorar este tipo de excepción" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ignorar, usar TForm como ascendente" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9319,9 +9933,10 @@ msgid "Important" msgstr "Importante" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "Importar / Exportar" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" @@ -9415,6 +10030,10 @@ msgid "Inherited project component" msgstr "Componente de proyecto heredado" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "Para crear una copia limpia del proyecto/paquete, todos los archivos en el siguiente directorio seran borrados y todo su contenido se habrá perdido.%s¿Borrar todos los archivos en \"%s\"?" @@ -9424,6 +10043,10 @@ msgid "Insert" msgstr "Insertar" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "insertar fecha" @@ -9563,6 +10186,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "En lugar de compilar el paquete crear un simple Makefile." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Interactivo" @@ -9579,6 +10206,14 @@ msgid "Invalid delete" msgstr "Borrado no válido" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Expresión no válida:%s%s%s%s" @@ -9692,6 +10327,14 @@ msgid "Jump History" msgstr "Historial de Saltos" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Saltar al procedimiento %s" @@ -10295,10 +10938,6 @@ msgid "Lazarus Default" msgstr "Predeterminados de Lazarus" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Opciones de Escritorio de Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Directorio de Lazarus" @@ -10311,22 +10950,10 @@ msgid "Lazarus IDE v%s" msgstr "IDE de Lazarus v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Fichero de Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Formulario de Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "IDE de Lazarus" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Fichero include de Lazarus" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "ID de idioma de Lazarus (por ejemplo: en, de, br, fi)" @@ -10339,30 +10966,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [opciones] <nombre-proyecto>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Lazarus otro archivo" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Paquete de Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Proyecto de Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Fichero de información de proyecto de Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Fuente de proyecto de Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Unidad de Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10659,10 +11262,6 @@ msgid "list of all case values" msgstr "listar todos los valores case" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Cargado correctamente" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "La carga de %s falló" @@ -10845,6 +11444,10 @@ msgid "Manage Source Editors ..." msgstr "Gestionar Editores de fuente ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "Máximos procesos paralelos, 0 significa por defecto (%s)" @@ -11270,6 +11873,22 @@ msgid "Jump to Implementation" msgstr "Saltar a la Implementacion" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Saltar al Marcador Siguiente" @@ -11286,6 +11905,14 @@ msgid "Jump to Previous Error" msgstr "Saltar al Error Anterior" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Selección en Minúsculas" @@ -11303,6 +11930,10 @@ msgid "New Component" msgstr "Nuevo Componente" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nuevo Formulario" @@ -11529,6 +12160,10 @@ msgid "S&how Execution Point" msgstr "Ver Punto de Ejecucción" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Ordenar selección ..." @@ -11707,11 +12342,6 @@ msgid "History" msgstr "Historial" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Ver Botones del IDE" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12039,6 +12669,14 @@ msgid "Undo last change to this grid" msgstr "Deshacer último cambio realizado en esta rejilla" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Valor \"%s\"" @@ -12148,6 +12786,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "Multiples directorios se separan mediante punto y coma (;)" @@ -12670,6 +13312,12 @@ msgid "Open XML" msgstr "Abrir XML" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opciones" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Opciones cambiadas, recompila limpiando con -B" @@ -12799,10 +13447,6 @@ msgid "parser \"%s\": %s" msgstr "analizador \"%s\": %s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Archivo Pascal" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Cuenta de pasadas" @@ -12820,6 +13464,10 @@ msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Ruta" @@ -12894,9 +13542,9 @@ msgid "Disable I18N of lfm" msgstr "Desactiva I18N de lfm" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" -msgstr "Añadir ficheros desde el sistema de ficheros" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" +msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems msgid "Add other items" @@ -12953,7 +13601,9 @@ msgstr "Propiedades de la dependencia" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Editar Opciones Generales" #: lazarusidestrconsts.lispckeditfileproperties @@ -12964,10 +13614,6 @@ msgid "Install" msgstr "Instalar" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Instalar paquete en el IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Versión máxima no válida" @@ -13414,9 +14060,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "El archivo \"%s\"%sno está actualmente en la ruta de unidades del paquete.%s¿Añadir \"%s\" a la ruta de unidades?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Hay más funciones en el menú contextual" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13453,19 +14099,35 @@ msgstr "Unidad virtual" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +#, fuzzy +#| msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Directorio paquete. Parametro es ID paquete" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +#, fuzzy +#| msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Path busqueda inclusion de paquete. Parametro es ID paquete" +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +#, fuzzy +#| msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Path busqueda fuentes de paquete. Parametro es ID paquete" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +#, fuzzy +#| msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Path busqueda unidad de paquete. Parametro es ID paquete" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13500,9 +14162,9 @@ msgid "Circular dependencies found" msgstr "Dependencia circular encontrada" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "Compilando paquete %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13670,6 +14332,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Uno o más paquetes necesarios no fueron encontrados. Ver el gráfico de paquete para más detalles." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "¿Guardar paquete?" @@ -14103,6 +14771,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr ".lpi es el fichero principal del proyecto, .lps es un fichero separado para datos de sesión únicamente." +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "%s (posición fuera de la fuente)" @@ -14228,7 +14900,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La versión máxima \"%s\" no es válida.%sPor favor use el formato mayor.menor.release.construccion%s Por ejemplo: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14238,7 +14910,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La Versión Mínima \"%s\" no es válida.%sPor favor use el formato mayor.menor.release.construccion%s Por ejemplo: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15040,10 +15712,6 @@ msgid "Save current editor file" msgstr "Guardar el archivo actual del editor" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Salvado automaticamente" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Salvado con ajustes de IDE" @@ -15113,6 +15781,10 @@ msgid "Save " msgstr "Guardar " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Factor de Escala:" @@ -15282,6 +15954,10 @@ msgid "Short, no path" msgstr "Corto, sin trayecto" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Mostrar" @@ -15306,6 +15982,10 @@ msgid "Show empty units/packages" msgstr "Ver unidades/paquetes vacios" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "Mostrar iconos (Glyphs) para:" @@ -15463,14 +16143,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Lo siento, este tipo no está todavía implementado" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "Ordenar" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "Ordenar para el campo de acción" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Ascendiendo" @@ -15677,10 +16357,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Sugerir nombre predeterminado del nuevo archivo en minúsculas" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "Soporte UTF-8 RTL" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Ruta de inclusión sospechosa" @@ -16336,6 +17012,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Esta sentencia no puede ser extraida.%sPor favor, seleccione algo de código para extraer un nuevo procedimiento/método." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Esto creará una dependencia circular." @@ -16395,6 +17075,10 @@ msgid "Title (leave empty for default)" msgstr "Título (dejar vacio en forma predeterminada)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Función: añadir delimitador de ruta" @@ -16431,6 +17115,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Intercambiar mostrar ruta completa o relativa para nombres de archivo" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "la utilidad \"%s\" no tiene ejecutable" @@ -16455,6 +17155,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "utilidad detenida con código de salida %s. Utiliza el menú contextual para obtener más información." +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Arriba" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Anclaje superior" @@ -16777,6 +17483,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "No se ha podido convertir los datos en forma de texto del archivo \"%s\"%s%s en un flujo binario (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "No se puede copiar el archivo" @@ -17531,14 +18241,14 @@ msgid "XML Error" msgstr "Error XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Archivos XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Error de análisis en archivo XML %s%sError: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Puede desactivar esta para las formularios(forms) individuales a través del editor de paquetes" @@ -17680,10 +18390,6 @@ msgid "Filter the lines in list with a string" msgstr "Filtrar las líneas de la lista con una cadena" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Fichero de datos del formulario (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Hallado, pero no listado aquí:" @@ -17962,6 +18668,10 @@ msgid "Text marker commands" msgstr "Comandos de marcas de texto" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Comandos para el menu del Paquete" @@ -18404,13 +19114,11 @@ msgstr "Buscar $IFDEF Fuera de Lugar" #: lazarusidestrconsts.srkmechalfwordleft -#, fuzzy -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Mover cursor parte de palabra a la izquierda (ej. CamelCase)" #: lazarusidestrconsts.srkmechalfwordright -#, fuzzy -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Mover cursor parte de palabra a la derecha (ej. CamelCase)" #: lazarusidestrconsts.srkmecimestr @@ -18522,6 +19230,18 @@ msgid "Invert Assignment" msgstr "Invertir Tarea" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Izquierda" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Derecha" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Mover cursor a la izquierda" @@ -18594,6 +19314,10 @@ msgid "Go to next editor" msgstr "Ir a siguiente editor" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Ir al editor siguiente con la misma Fuente " @@ -18646,6 +19370,30 @@ msgid "pause program" msgstr "pausar programa" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Marcador Anterior" @@ -18654,6 +19402,10 @@ msgid "Go to prior editor" msgstr "Ir a editor anterior" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Ir al editor anterior con la misma Fuente " @@ -18753,13 +19505,11 @@ msgstr "Seleccionar ir a XY" #: lazarusidestrconsts.srkmecselhalfwordleft -#, fuzzy -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "Seleccoinar parte de la palabra a la izquierda (ej. CamelCase)" #: lazarusidestrconsts.srkmecselhalfwordright -#, fuzzy -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "Seleccionar parte de la palabra a la derecha (ej. CamelCase)" #: lazarusidestrconsts.srkmecselleft @@ -19208,10 +19958,22 @@ msgid "Move cursor word right" msgstr "Mover cursor una palabra a la derecha" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Editar teclas de comando" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Plegar comentarios" @@ -19244,6 +20006,26 @@ msgid "Hide comments in selection" msgstr "Ocultar los comentarios de la selección" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Desplegar Ifdef activo" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.fi.po lazarus-1.6+dfsg/languages/lazaruside.fi.po --- lazarus-1.4.4+dfsg/languages/lazaruside.fi.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.fi.po 2016-01-05 13:41:02.000000000 +0000 @@ -74,6 +74,10 @@ msgid "History forward" msgstr "Historia eteenpäin" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "Vaihda extra tekstikursori" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -157,6 +161,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Toiminnot kun hiiren nappi vapautuu. Valinta: hiiren nappi alas + liike" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "Toiminnot vain oikeaa reunapalkkia varten" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "Käytä rivinumeroita valitaksesi rivit" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -363,7 +375,7 @@ #: lazarusidestrconsts.dlfmousesimplewheelzoom msgid "Zoom" -msgstr "" +msgstr "Zoomaus" #: lazarusidestrconsts.dlfnopredefinedscheme msgid "< None >" @@ -378,6 +390,10 @@ msgid "Lowercase, first letter up" msgstr "Ensimmäinen kirjain iso muut pieniä" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "aktiivinen" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Lisää := operaattori (saa arvokseen) " @@ -541,10 +557,6 @@ msgid "Adjust top line due to comment in front" msgstr "Säädä ylin rivi edellä olevan kommentin mukaan" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Kaikki tiedostot" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Aakkosjärjestys" @@ -586,8 +598,8 @@ msgstr "Pää .lpr tiedosto luo jokaisen lomakkeen Application.CreateForm():ssa. Ne myös tuhotaan automaattisesti." #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" -msgstr "Kun tehdään uusi lomake, niin se laitetaan automaattisesti luotaviin lomakkeisiin" +msgid "Auto-create new forms" +msgstr "Luo automaattisesti uusi lomake" #: lazarusidestrconsts.dlgautodel msgid "Auto delete file" @@ -623,6 +635,18 @@ msgid "Auto rename file lowercase" msgstr "Muuta nimi pieniksi kirjaimiksi" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "Tallenna aktiivinen työpöytä automaattisesti" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" +"Tallenna aktiivinen työpöytä kun IDE suljetaan\n" +"Tallenna debug-työpöytä kun IDE suljetaan ja virheenjäljitys loppuu\n" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Käytettävissä olevat lomakkeet:" @@ -678,11 +702,11 @@ #: lazarusidestrconsts.dlgblockindenttypetabonly msgid "Tabs, cut off" -msgstr "" +msgstr "Tabulaattorit, leikkaa" #: lazarusidestrconsts.dlgblockindenttypetabspace msgid "Tabs, then spaces" -msgstr "" +msgstr "Tabulaattorit, sitten välilyönnit" #: lazarusidestrconsts.dlgblocktabindent msgid "Block indent (tabs)" @@ -700,6 +724,10 @@ msgid "Matching bracket pairs" msgstr "Yhteensopivat sulkuparit" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "Telakoitua työpäytää ei voi käyttää erillisten ikkunoiden kanssa ja päinvastoin." + #: lazarusidestrconsts.dlgcasesensitive msgid "&Case sensitive" msgstr "&Sama kirjainkoko" @@ -1032,11 +1060,6 @@ msgid "Config files" msgstr "Asetustiedostot" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Muu" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Muu virheenjäljitystieto" @@ -1170,9 +1193,9 @@ msgid "User defined extension (.pp.xxx)" msgstr "Käyttäjän määrittämä tarkennin (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" -msgstr "" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" +msgstr "virheenjäljitys" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption msgid "Path Editor" @@ -1194,18 +1217,10 @@ msgid "Delete template " msgstr "Poistetaan malline " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Työpöytä" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Napit - " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Työpöytätiedostot" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Vihjeet" @@ -1214,6 +1229,18 @@ msgid "Menus - " msgstr "Valikot -" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "Työpöydän nimi" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "%d työpöytää vietiin onnistuneesti \"%s\":hen" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "%d työpöytää tuotiin onnistuneesti \"%s\":sta" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Suunta" @@ -1248,7 +1275,7 @@ #: lazarusidestrconsts.dlgdivpasprocedurename msgid "Procedure/Function" -msgstr "" +msgstr "Aliohjelma/funktio" #: lazarusidestrconsts.dlgdivpasstructglobalname msgid "Class/Struct" @@ -1296,6 +1323,7 @@ msgstr "Alikansio" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Koodimallit" @@ -1522,7 +1550,115 @@ #: lazarusidestrconsts.dlgfiles msgid "%s files" -msgstr "" +msgstr "%s tiedostoa" + +#: lazarusidestrconsts.dlgfilterall +msgid "All files" +msgstr "Kaikki tiedostot" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgid "CodeTools template file" +msgstr "CodeTools-mallinetiedosto" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "DCI tiedosto" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "Delphi lomake" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgid "Delphi package" +msgstr "Delphi-paketti" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgid "Delphi project" +msgstr "Delphi-projekti" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgid "Delphi unit" +msgstr "Delphi-käännösyksikkö" + +#: lazarusidestrconsts.dlgfilterexecutable +msgid "Executable" +msgstr "Suoritettava ohjelma" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgid "FPC message file" +msgstr "FPC viestitiedosto" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "HTML tiedostot" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "Bitmap kuvat" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "Pixmap kuvat" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "PNG kuvat" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgid "Lazarus Desktop Settings" +msgstr "Lazaruksen työpöytäasetukset" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgid "Editor file types" +msgstr "Editorin tiedostojen tyypit" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgid "Lazarus file" +msgstr "Lazarus-tiedosto" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgid "Lazarus form" +msgstr "Lazarus-lomake" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgid "Lazarus include file" +msgstr "Lazarus include-tiedosto" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgid "Lazarus other file" +msgstr "Lazarus muu tiedosto" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgid "Lazarus package" +msgstr "Lazarus-paketti" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgid "Lazarus project" +msgstr "Lazarus-projekti" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgid "Lazarus project source" +msgstr "Lazarus-projektin lähdekoodi" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "Lazarus istunto" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgid "Lazarus unit" +msgstr "Lazarus-käännösyksikkö" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgid "Pascal file" +msgstr "Pascal-tiedosto" + +#: lazarusidestrconsts.dlgfilterprograms +msgid "Programs" +msgstr "Ohjelmat" + +#: lazarusidestrconsts.dlgfilterxml +msgid "XML files" +msgstr "XML-tiedostot" #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" @@ -1613,7 +1749,7 @@ #: lazarusidestrconsts.dlgfoldpasprocbeginend msgid "Begin/End (procedure)" -msgstr "" +msgstr "Begin/End (aliohjelma)" #: lazarusidestrconsts.dlgfoldpasprocedure msgctxt "lazarusidestrconsts.dlgfoldpasprocedure" @@ -1687,6 +1823,10 @@ msgid "Processing Instruction" msgstr "Toimintaohjeet" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "Käynnissä oleva Lazarus ei huoli tiedostoja." + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Edusta" @@ -1705,7 +1845,7 @@ #: lazarusidestrconsts.dlgfpcsrcpath msgid "FPC source directory" -msgstr "FPC:n lähdekoodin kansio" +msgstr "FPC:n lähdehakemisto" #: lazarusidestrconsts.dlgframecolor msgid "Text-mark" @@ -1723,11 +1863,6 @@ msgid "&From cursor" msgstr "&Kursorin kohdasta" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Asetukset" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Hae sijainti" @@ -1742,7 +1877,11 @@ #: lazarusidestrconsts.dlggrabbercolor msgid "Grabber color" -msgstr "Valitun komponentin väri" +msgstr "Tarttujan väri" + +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "Harmaat työpöydät eivät käytä telakoitua ympäristöä." #: lazarusidestrconsts.dlggridcolor msgid "Grid color" @@ -1910,7 +2049,7 @@ #: lazarusidestrconsts.dlgifdefblocktmpactive msgid "Included mixed state $IFDEF code" -msgstr "" +msgstr "Luettu sekoitettua $IFDEF koodia" #: lazarusidestrconsts.dlgifdefnodeactive msgid "Active $IFDEF node" @@ -1922,11 +2061,15 @@ #: lazarusidestrconsts.dlgifdefnodetmpactive msgid "Included mixed state $IFDEF node" -msgstr "" +msgstr "Luettu sekoitettua $IFDEF koodia" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ohita" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" +"Samanniminen työpöytä on jo olemassa.\n" +"Vahvista työpöydän nimi:\n" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2034,12 +2177,16 @@ msgstr "1 (nopea ja helppo virheenjäljittimelle)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" -msgstr "2 (Taso 1 + nopeita optimointeja)" +msgid "2 (-O1 + quick optimizations)" +msgstr "2 (-O1 + nopeita optimointeja)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" -msgstr "3 (Taso 2 + hitaita optimointeja)" +msgid "3 (-O2 + slow optimizations)" +msgstr "3 (-O2 + hitaita optimointeja)" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "4 (-O3 + rajuja optimointeja, varo)" #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" @@ -2057,10 +2204,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Näytä rivinumerot ajonaikaisissa virhelistauksissa" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Lue asetukset tiedostosta" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Päävalikko" @@ -2074,7 +2217,6 @@ msgstr "Näytä projektin kehykset" #: lazarusidestrconsts.dlgmainviewunits -msgctxt "lazarusidestrconsts.dlgmainviewunits" msgid "View Project Units" msgstr "Näytä projektin käännösyksiköt" @@ -2082,6 +2224,10 @@ msgid "\"Make\" executable" msgstr "\"Make\" ohjelma" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "Hallinnoi työpöytiä" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Marginaali ja reunapalkki" @@ -2238,6 +2384,7 @@ msgstr "Hiiritoiminto" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Yksittäinen" @@ -2443,6 +2590,10 @@ msgid "Gutter" msgstr "Reunapalkki" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "Rivimuutokset" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Laskosta puu" @@ -2495,6 +2646,95 @@ msgid "Messages" msgstr "Viestit" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Virheenjäljitys" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Virhe" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "Tuhoisa" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Vihje" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Tärkeä" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "Normaali" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "Huom." + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "Paniikki" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "Aika ja tilastot" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "Monisanainen" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "Monisanainen 2" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "Monisanainen 3" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Varoitus" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "Moni-osoitin (sarakevalinta) siirrä kursorin mukana" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "Moni-osoitin siirrä kursorin mukana" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "Salli moni-osoitin sarakevalintaan" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "Useita Lazarus instansseja" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "käynnistä aina uusi instanssi" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "älä salli useita instansseja" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "avaa tiedostot käynnissä olevassa instanssissa" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Monivalinta" @@ -2531,6 +2771,10 @@ msgid "Naming" msgstr "Nimeäminen" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "Uusi työpöytä ..." + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Ei automaattista nimeämistä" @@ -2569,11 +2813,6 @@ msgid "Miscellaneous" msgstr "Sekalaiset" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Asetukset" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Nopeusasetukset" @@ -2602,6 +2841,14 @@ msgid "Overwrite block" msgstr "Ylikirjoita lohko" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" +"Löytyi työpöytä nimellä \"%s\".\n" +"Korvataanko vanha työpöytä?\n" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Vihjetekstit komponenttipaletille" @@ -2784,8 +3031,8 @@ msgstr "Ominaisuuden nimi" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" -msgstr "Avaa viimeksi käytetty projekti Lazaruksen käynnistyessä" +msgid "Open last project and packages at start" +msgstr "Avaa viime projektit ja paketit alussa" #: lazarusidestrconsts.dlgqshowborderspacing msgid "Show border spacing" @@ -2799,6 +3046,10 @@ msgid "Snap to grid" msgstr "Asemoi ristikon avulla" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "Poistetaanko työpöytä \"%s\" todella?" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Viittaus" @@ -2807,6 +3058,10 @@ msgid "Regular e&xpressions" msgstr "&Säännölliset lausekkeet" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "Nimeä työpöytä" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Korvaa &kaikki" @@ -2847,6 +3102,22 @@ msgid "Rubberband Selection" msgstr "Kuminauhojen valinta" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" +"Käynnissä oleva Lazarus ei huoli tiedostoja.\n" +"Haluatko avata ne uudessa instanssissa?\n" +"\n" +"%s\n" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "Lazarus instanssi on käynnissä muttei vastaa." + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Näyttö (ei win32:lle, esim. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2874,11 +3145,11 @@ #: lazarusidestrconsts.dlgrunparameters msgid "Run Parameters" -msgstr "Suoritusaikaiset parametrit" +msgstr "Suoritusparametrit" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Tallenna asetukset tiedostoon" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "Tallenna nykyinen työpöytä nimellä" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2927,7 +3198,7 @@ #: lazarusidestrconsts.dlgsearchabort msgid "Search terminated by user." -msgstr "Käyttäjä keskeytti hakemisen" +msgstr "Käyttäjä keskeytti etsinnän" #: lazarusidestrconsts.dlgsearchcaption msgid "Searching ..." @@ -2939,7 +3210,7 @@ #: lazarusidestrconsts.dlgsearchscope msgid "Search scope" -msgstr "" +msgstr "Etsinnän ulottuvuus" #: lazarusidestrconsts.dlgselectallchildcontrols msgid "Select all child controls together with their parent." @@ -2949,6 +3220,10 @@ msgid "&Selected text" msgstr "&Valittu teksti" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "Aseta aktiiviseksi" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Aseta kaikki elementit oletusarvoon" @@ -2961,6 +3236,26 @@ msgid "Set property Variable" msgstr "Muuttuja ominaisuuden asettajassa" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "Oletus asettaja-aliohjelman parametrin nimi." + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "on etuliite" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "Kun valittu, \"Muuttuja ominaisuuden asettajassa\" on etuliite. Muuten se on kiinteä nimi." + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "käytä const" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "Kun valittu, asettajan parametriin lisätään \"const\"." + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Näytä kaikki käännösyksiköt" @@ -3084,6 +3379,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "Kun kontrolli on melkein linjassa toisen kontrollin kanssa, se napsahtaa samaan linjaan." +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "Moniriviset tabit" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3116,7 +3415,7 @@ #: lazarusidestrconsts.dlgstringautoappend msgid "Append text to close string" -msgstr "" +msgstr "Lisää teksti merkkijonon loppuun" #: lazarusidestrconsts.dlgstringautoprefix msgid "Prefix string on new line" @@ -3162,7 +3461,7 @@ #: lazarusidestrconsts.dlgtargetos msgctxt "lazarusidestrconsts.dlgtargetos" msgid "Target OS" -msgstr "Käyttöjärjestelmä" +msgstr "Kohdekäyttöjärjestelmä" #: lazarusidestrconsts.dlgtargetplatform msgid "Target platform" @@ -3184,6 +3483,11 @@ msgid "&Text to find" msgstr "&Etsittävä" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "Vaihda debug-työpöydäksi" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Nykyisen luokan/metodin vihje" @@ -3198,7 +3502,7 @@ #: lazarusidestrconsts.dlgtrimspacetypecaretmove msgid "Caret or Edit" -msgstr "" +msgstr "Osoitin tekstin päällä" #: lazarusidestrconsts.dlgtrimspacetypeeditline msgid "Line Edited" @@ -3206,7 +3510,7 @@ #: lazarusidestrconsts.dlgtrimspacetypeleaveline msgid "Leave line" -msgstr "Jätä rivi" +msgstr "Jätetään rivi" #: lazarusidestrconsts.dlgtrimspacetypeposonly msgid "Position Only" @@ -3556,6 +3860,10 @@ msgid "File not unit" msgstr "Tiedosto ei ole käännösyksikkö" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "Kuvake (maximi 24x24):" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Kelvoton kantatyyppi" @@ -3601,6 +3909,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Riippuvuuden \"%s\" pakettia ei löydy. %sValitse olemassaoleva paketti." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "Paketti/Projekti" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Sivun nimi on liian pitkä" @@ -3663,6 +3975,7 @@ msgstr "Tiedoston nimi \"%s\" on ristiriitainen, koska paketilla ei ole vielä oletushakemistoa.%sMäärittele koko polku tiedostolle." #: lazarusidestrconsts.lisa2pthemaximumversionisinvalidpleaseusetheformatmajor +msgctxt "lazarusidestrconsts.lisa2pthemaximumversionisinvalidpleaseusetheformatmajor" msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Maximiversio \"%s\" on kelvoton.%sKäytä muotoa iso.pieni.julkaisu.käännös%sEsim.: 1.0.20.10" @@ -3672,6 +3985,7 @@ msgstr "Maximiversio on pienempi kuin Minimiversio." #: lazarusidestrconsts.lisa2ptheminimumversionisinvalidpleaseusetheformatmajor +msgctxt "lazarusidestrconsts.lisa2ptheminimumversionisinvalidpleaseusetheformatmajor" msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Minimiversio \"%s\" on kelvoton.%sKäytä muotoa iso.pieni.julkaisu.käännös%sEsim.: 1.0.20.10" @@ -3727,6 +4041,11 @@ msgid "Abandon changes?" msgstr "Hylkää muutokset?" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Keskeytä" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Keskeytä kaikki" @@ -3837,6 +4156,14 @@ msgid "Added property \"%s\" for %s." msgstr "Lisätty ominaisuus \"%s\" %s:hen." +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "Lisää -FcUTF8" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "Voidaan tarvita jos lähdekoodissa on muita kuin ansistring vakioita." + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Lisää hakemiston tiedostot" @@ -3901,6 +4228,10 @@ msgid "&Address Breakpoint ..." msgstr "&Osoite-keskeytyskohta ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "Lisää >>" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "Lisätäänkö include-hakupolkuun?" @@ -3909,6 +4240,10 @@ msgid "Add %s to project?" msgstr "Lisätäänkö %s projektiin?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "Lisää käynnistyskomponentteihin?" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "Lisätäänkö käännösyksikköjen hakupolkuun?" @@ -3937,10 +4272,6 @@ msgid "File type" msgstr "Tiedoston tyyppi" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Sisältää Register-aliohjelman" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Kelvoton paketti" @@ -3962,19 +4293,10 @@ msgid "Show all" msgstr "Näytä kaikki" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Tiedosto \"%s\"%son jo paketissa %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Pakettia %s voidaan vain lukea." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Käännösyksikön nimi: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "Tiedosto \"%s\" on jo olemassa.%sKorvataanko se? " @@ -3999,10 +4321,6 @@ msgid "<All build modes>" msgstr "<Kaikki koontamoodit>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Kaikki tiedostot" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Kaikki periytyvät asetukset" @@ -4120,7 +4438,7 @@ msgstr "Ankkuroi yläreuna sisarusten yläreunaan. Käytä BorderSpacing välimatkan säätämiseen. Sisarusten BorderSpacing ei vaikuta." #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Virhe esiintyi, kun avattiin projektia %s!%sAvataanko tämä projekti uudelleen?" #: lazarusidestrconsts.lisapplicationclassname @@ -4180,6 +4498,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Hyödyllinen asetus Windowsissa on: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "Säädä IDE pääikkunan korkeus automaattisesti" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "Näytä koko komponenttipaletti" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "Jos komponenttipaletti menee monelle riville, näytä kaikki rivit." + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Automaattinen täydennys: pois" @@ -4227,7 +4557,7 @@ #: lazarusidestrconsts.lisautomaticallyontab msgid "tab" -msgstr "" +msgstr "tabulaattori" #: lazarusidestrconsts.lisautomaticallyonwordend msgid "word end" @@ -4237,6 +4567,10 @@ msgid "do not add character" msgstr "älä lisää merkkiä" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "Käytä ainutta tarjolla olevaa tunnistetta automaattisesti" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Koodin täydennys ja vihjeet" @@ -4279,11 +4613,11 @@ #: lazarusidestrconsts.lisbelessverbosecanbegivenmultipletimes msgid "be less verbose, can be given multiple times" -msgstr "" +msgstr "vähemmän monisanainen, voidaan antaa monta kertaa" #: lazarusidestrconsts.lisbemoreverbosecanbegivenmultipletimes msgid "be more verbose, can be given multiple times" -msgstr "" +msgstr "enemmän monisanainen, voidaan antaa monta kertaa" #: lazarusidestrconsts.lisbestviewedbyinstallingahtmlcontrolliketurbopowerip msgid "Best viewed by installing a HTML control like turbopoweriprodsgn" @@ -4325,6 +4659,11 @@ msgid "Border space" msgstr "Reuna-alue" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Alhaalla" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Alapuolen reuna-alue. Tämä arvo lisätään yhteiseen reuna-alueeseen." @@ -4429,12 +4768,16 @@ #: lazarusidestrconsts.lisbuilding msgid "Building" -msgstr "" +msgstr "Kokoaminen" #: lazarusidestrconsts.lisbuildinglazarusfailed msgid "Building Lazarus failed" msgstr "Lazaruksen kokoaminen epäonnistui" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "Koontamoodi: %s" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Koontamoodien erot" @@ -4571,7 +4914,7 @@ #: lazarusidestrconsts.lisccochecktestdir msgid "Please check the Test directory under %sTools -> Options -> Files -> Directory for building test projects" -msgstr "Tarkista Test hakemisto kohdasta %sTyökalut -> Asetukset -> Files -> Kansio mihin käännetään testiprojektit" +msgstr "Tarkista testihakemisto kohdasta %sTyökalut -> Asetukset -> Tiedostot -> Kansio testiprojektien kokoamiseen" #: lazarusidestrconsts.lisccocompilernotanexe msgid "The compiler \"%s\" is not an executable file.%sDetails: %s" @@ -4683,6 +5026,7 @@ msgstr "epätavallisia merkkejä" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Varoitus" @@ -4896,7 +5240,7 @@ msgstr "Väärä sisennys" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Keskeytys tapahtui poistettaessa%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5030,7 +5374,7 @@ #: lazarusidestrconsts.lischangeencoding msgid "Change Encoding" -msgstr "Vaihda merkistökoodaus" +msgstr "Vaihda merkkikoodaus" #: lazarusidestrconsts.lischangefile msgid "Change file" @@ -5086,7 +5430,7 @@ #: lazarusidestrconsts.lischecksearchpathpackagetryacleanrebuildcheckimpleme msgid ". Check search path of package %s, try a clean rebuild, check implementation uses sections." -msgstr ". Tarkista paketin %s hakupolku, yritä puhdasta uudelleen käännöstä, tarkista implementation uses lauseet." +msgstr ". Tarkista paketin %s hakupolku, yritä puhdasta uudelleen käännöstä, tarkista toteutuksen uses lauseet." #: lazarusidestrconsts.lischeckthetargetoscpulclwidgettypemaybeyouhavetoreco msgid "%s Check the target (OS, CPU, LCL widget type). Maybe you have to recompile the package for this target or set another target for the project." @@ -5094,7 +5438,7 @@ #: lazarusidestrconsts.lischeckuncheckall msgid "Check/uncheck all" -msgstr "" +msgstr "Valitse/poista valinta, kaikki" #: lazarusidestrconsts.lischooseadifferentname msgid "Choose a different name" @@ -5128,6 +5472,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Valitse sisennysesimerkiksi Pascal-tiedosto" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "Lisää uusi metodi osioon" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "Valitse kääntäjä (%s)" @@ -5156,9 +5504,13 @@ msgid "Choose directory" msgstr "Valitse hakemisto" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "Valitse ohjelma" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" -msgstr "Valitse FPC:n lähdekoodihakemisto" +msgstr "Valitse FPC:n lähdehakemisto" #: lazarusidestrconsts.lischooselazarussourcedirectory msgid "Choose Lazarus Directory" @@ -5287,7 +5639,7 @@ #: lazarusidestrconsts.liscleanuppackage msgid "Clean up package \"%s\"." -msgstr "" +msgstr "Siivoa paketti \"%s\"." #: lazarusidestrconsts.liscleanupunitpath msgid "Clean up unit path?" @@ -5309,13 +5661,13 @@ msgid "Click here to browse the file" msgstr "Klikkaa tästä selataksesi tiedostoa" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Klikkaa nähdäksesi mahdolliset käyttötavat" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "Klikkaa nähdäksesi valinnat" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" -msgstr "" +msgstr "Klikkaa valitaksesi paletin sivu" #: lazarusidestrconsts.lisclone msgid "Clone" @@ -5380,6 +5732,10 @@ msgid "Pages" msgstr "Sivut" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "Paletti &näytetään" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "&Palauta oletukset" @@ -5910,7 +6266,7 @@ #: lazarusidestrconsts.liscodetoolsoptscaret msgid "Caret (^)" -msgstr "" +msgstr "Tekstikursori (^)" #: lazarusidestrconsts.liscodetoolsoptscolon msgid "Colon" @@ -5963,10 +6319,6 @@ msgid "Symbol" msgstr "Symboli" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "CodeTools-mallinetiedosto" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Suorita jälkeen" @@ -6156,6 +6508,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Konfiguroi \"Lazaruksen kokoaminen\"" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "Konfiguroi työkalupalkki" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Konfiguroi Lazarus IDE" @@ -6448,11 +6804,11 @@ #: lazarusidestrconsts.lisconvertencoding msgid "Convert Encoding" -msgstr "Muunna merkistökoodaus" +msgstr "Muunna merkkikoodaus" #: lazarusidestrconsts.lisconvertencodingofprojectspackages msgid "Convert encoding of projects/packages" -msgstr "Muunna projektin/paketin merkistökoodaus" +msgstr "Muunna projektin/paketin merkkikoodaus" #: lazarusidestrconsts.lisconvertotherhint msgid "Other options affecting the conversion" @@ -6594,6 +6950,166 @@ msgid "User selected to end conversion with file %s" msgstr "Käyttäjä päätti lopettaa muunnoksen tiedostoon %s" +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "Lisää/muokkaa/poista työkalupalkki" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "Lisää erotin" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "Lisää valitut kohdat työkalupalkkiin" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "Tarjolla olevat komennot" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "Työkalupalkin kehyksen tyyli" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Ei yhtään" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Yksittäinen" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "Tyhjennä valinta" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Koodin tutkija" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Koodimallit" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "&Konfiguroi" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "Haluatko varmasti poistaa valitun työkalupalkin?" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "Vähintään yksi työkalupalkki tarvitaan!" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "Lomake-editori" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "Yleiset Coolbar asetukset" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "Työkalupalkin tarttumistyyli" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "Yksinkertainen" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Kaksois" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "Vaakaviivat" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "Pystyviivat" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "Pihdit" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Nappi" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "Tarttumisleveys" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "IDE päävalikko" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Viestit" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "Siirrä valittu työkalupalkin kohta alas" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "Siirrä valittu työkalupalkin kohta ylös" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "Pakettimuokkain" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "Pakettimuokkaimen tiedostot" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "Poista valittu kohta työkalupalkista" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "Palauta oletukset" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "Valitse ensin työkalupalkki!" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Lähdekoodieditori" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "Lähdekoodin välilehti" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "Työkalupalkin komennot" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "Coolbar &näytetään" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "Coolbar leveys" + #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" msgid "Copy" @@ -6725,7 +7241,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "Luo Debug- ja Release-moodit" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -6870,6 +7386,10 @@ msgid "Custom options" msgstr "Mukautetut asetukset" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Mukautettu ohjelma" @@ -7065,7 +7585,7 @@ #: lazarusidestrconsts.lisdebug msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Virheenjäljitys" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7196,11 +7716,11 @@ #: lazarusidestrconsts.lisdebugoptionsfrmresumehandled msgid "Resume Handled" -msgstr "" +msgstr "Jatka käsiteltyä" #: lazarusidestrconsts.lisdebugoptionsfrmresumeunhandled msgid "Resume Unhandled" -msgstr "" +msgstr "Jatka käsittelemätöntä" #: lazarusidestrconsts.lisdebugoptionsfrmshowmessageonstop msgid "Show message on stop" @@ -7220,7 +7740,7 @@ #: lazarusidestrconsts.lisdebugoptionsfrmwindows msgid "Windows" -msgstr "" +msgstr "Ikkunat" #: lazarusidestrconsts.lisdebugunabletoloadfile msgid "Unable to load file" @@ -7369,29 +7889,21 @@ msgid "Delphi compatible resources. Recommended." msgstr "Delphi yhteensopivat resurssit. Suositus." -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Delphi-paketti" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphi-projekti" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Delphi-käännösyksikkö" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "\"Suunnittelupaketti\" lisää komponentteja ja valikkoja IDE:en. Projektit voivat käyttää niitä, mutta niitä ei käännetä projektin mukana. Kääntäjä ei löydä käännösyksikköjä näistä paketista kääntäessään projektia." +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "Työpöydät ..." + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Kohdehakemisto" #: lazarusidestrconsts.lisdestructorcode msgid "Destructor code" -msgstr "" +msgstr "Destructor koodi" #: lazarusidestrconsts.lisdiffdlgcaseinsensitive msgid "Case Insensitive" @@ -7602,6 +8114,11 @@ msgid "Import ..." msgstr "Tuo ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "Lisää ..." + #: lazarusidestrconsts.lisdlgopen msgid "Open ..." msgstr "Avaa ..." @@ -7618,6 +8135,10 @@ msgid "Do not change" msgstr "Älä muuta" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "%sÄlä tarkista onko toinen IDE instanssi käynnissä" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Ei suljetakaan projektia" @@ -7742,6 +8263,10 @@ msgid "Duplicate Unit" msgstr "Päällekkäinen käännösyksikkö" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "Päällekkäinen käännösyksikkö \"%s\" \"%s\":ssa" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7767,14 +8292,22 @@ msgid "Editor Colors" msgstr "Editorin värit" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Editorin tiedostojen tyypit" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Editorin makrot" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "Editorin työkalupalkki" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "Editorin työkalupalkin asetukset" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "Editorin työkalupalkin &näytetään" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Lataa kaava" @@ -7877,6 +8410,10 @@ msgid "Working Directory:" msgstr "Työhakemisto" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "Nosta viestin tärkeyttä niin että se näytetään aina (oletuksena matala taso \"verbose\")" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8014,7 +8551,7 @@ #: lazarusidestrconsts.lisenvoptdlgtestdirnotfoundmsg msgid "Test directory \"%s\" not found." -msgstr "Testiprojektien kansiota \"%s\" ei löytynyt. " +msgstr "Testihakemistoa \"%s\" ei löytynyt. " #: lazarusidestrconsts.liserrinvalidoption msgid "Invalid option at position %d: \"%s\"" @@ -8085,8 +8622,8 @@ msgstr "Virhe Käännöshakemistossa:" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" -msgstr "Virhe: kelvoton koontamoodi \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" +msgstr "Virhe: (lazarus) kelvoton koontamoodi \"%s\"" #: lazarusidestrconsts.liserrorloadingfile msgid "Error loading file" @@ -8186,6 +8723,10 @@ msgid "Save Events to File" msgstr "Talleta tapahtumat tieostoon" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "Lisää uusia tapahtumametodeja osioon" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Lisää kommentti ..." @@ -8226,10 +8767,6 @@ msgid "Exclude filter" msgstr "Poistosuodatin" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Suoritettava ohjelma" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "Suoritettava ohjelma \"%s\" onkin hakemisto" @@ -8250,10 +8787,6 @@ msgid "Execution stopped" msgstr "Suoritus on pysäytetty" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Ohjelmat" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8288,14 +8821,27 @@ msgid "Export" msgstr "Vie" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "Vie kaikki" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "Vie kaikki kohdat tiedostoon" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "Vie ympäristön asetukset" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Vie HTML:nä" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "Vie / Tuo" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Vie luettelo" @@ -8304,6 +8850,14 @@ msgid "Export package list (*.xml)" msgstr "Vie pakettiluettelo (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "Vie valitut" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "Vie >>" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Ilmaisu:" @@ -8359,7 +8913,7 @@ #: lazarusidestrconsts.lisfailedtoaddnnotuniqueresources msgid "Failed to add %d not unique resource(s)" -msgstr "" +msgstr "%d resurssin lisääminen epäonnistui" #: lazarusidestrconsts.lisfailedtocreateapplicationbundlefor msgid "Failed to create Application Bundle for \"%s\"" @@ -8371,13 +8925,14 @@ #: lazarusidestrconsts.lisfailedtoresolvemacros msgid "failed to resolve macros" -msgstr "" +msgstr "makrojen selvitys epäonnistui" #: lazarusidestrconsts.lisfailedtosavefile msgid "Failed to save file." msgstr "Tiedoston tallennus epäonnistui." #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "Tuhoisa" @@ -8664,7 +9219,7 @@ #: lazarusidestrconsts.lisfirsttest msgid "&First test" -msgstr "" +msgstr "&Ensimmäinen testi" #: lazarusidestrconsts.lisfixlfmfile msgid "Fix LFM file" @@ -8684,7 +9239,7 @@ #: lazarusidestrconsts.lisfordarwin msgid "For Darwin" -msgstr "" +msgstr "Darwinille" #: lazarusidestrconsts.lisforexampleshowattopthelocalvariablesthenthemembers msgid "For example show at top the local variables, then the members of current class, then of the ancestors, then the current unit, then of used units" @@ -8700,7 +9255,7 @@ #: lazarusidestrconsts.lisforwindows msgid "For Windows" -msgstr "" +msgstr "Windowsille" #: lazarusidestrconsts.lisfoundversionexpected msgid "Found version %s, expected %s" @@ -8718,10 +9273,6 @@ msgid "fpcmake failed" msgstr "fpcmake epäonnistui" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "FPC viestitiedosto" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "FPC viestitiedosto:" @@ -8797,7 +9348,7 @@ #: lazarusidestrconsts.lisfreepascalsourcedirectory msgid "Free Pascal source directory" -msgstr "Free Pascal -lähdekoodihakemisto" +msgstr "Free Pascal -lähdehakemisto" #: lazarusidestrconsts.lisfrforwardsearch msgid "Forwar&d search" @@ -8845,11 +9396,11 @@ #: lazarusidestrconsts.lisfrirenaming msgid "Renaming" -msgstr "" +msgstr "Uudelleen nimeys" #: lazarusidestrconsts.lisfrisearch msgid "Search" -msgstr "" +msgstr "Etsi" #: lazarusidestrconsts.lisfrisearchincommentstoo msgid "Search in comments too" @@ -8883,7 +9434,7 @@ #: lazarusidestrconsts.lisgotoselected msgid "Goto selected" -msgstr "" +msgstr "Mene valintaan" #: lazarusidestrconsts.lisgplnotice msgid "" @@ -8914,6 +9465,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sJäljellä on %d tyhjää ryhmää, poista kaikki?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "Ryhmittele automaattisesti luodut paikalliset muuttujat" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Ryhmän nimi ei saa olla tyhjä. Tyhjennä keskeytyskohtien ryhmä(t)?" @@ -8946,6 +9501,10 @@ msgid "Has Help" msgstr "Ohje löytyy" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "Otsikon värit" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Luokan pääkommentti" @@ -8996,6 +9555,7 @@ msgstr "Piilota projektivalinnan (-vm%s) kanssa" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Vihje" @@ -9084,15 +9644,13 @@ msgid "ID" msgstr "" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Lisää" - -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Avaa" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "Lisäys" + +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "Avaus" #: lazarusidestrconsts.liside msgid "IDE" @@ -9226,6 +9784,10 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Haluttaessa kaksi eri Lazarus versiota, pitää toinen käynnistää parametrin primary-config-path tai pcp kanssa.%sEsimerkiksi:" +#: lazarusidestrconsts.lisignore +msgid "Ignore" +msgstr "Ohita" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Ohita kaikki" @@ -9242,9 +9804,9 @@ msgid "Ignore this exception type" msgstr "Ohita tämän tyyppiset poikkeukset" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Jätä huomiotta, käytä TForm isä-luokkana" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9260,12 +9822,14 @@ msgstr "Tuo" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "Tärkeä" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "Tuo / Vie" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "Tuo ympäristön asetukset" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" @@ -9285,11 +9849,11 @@ #: lazarusidestrconsts.lisinasourcedirectoryofthepackage msgid "In a source directory of the package \"%s\"." -msgstr "Paketin \"%s\" lähdekoodihakemistossa." +msgstr "Paketin \"%s\" lähdehakemistossa." #: lazarusidestrconsts.lisinasourcedirectoryoftheprojectcheckforduplicates msgid "In a source directory of the project. Check for duplicates." -msgstr "Projektin lähdekoodihakemistossa. Tarkista kaksoiskappaleet." +msgstr "Projektin lähdehakemistossa. Tarkista kaksoiskappaleet." #: lazarusidestrconsts.lisincludeallsubdirectories msgid "Include all subdirectories" @@ -9359,6 +9923,10 @@ msgid "Inherited project component" msgstr "Periytyvä projektin komponentti" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "Alusta paikallinen muuttuja" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "Tehtäessä puhdasta kopiota projektista/paketista, kaikki tiedostot seuraavassa hakemistossa poistetaan ja sisältö menetetään.%sPoistetaanko kaikki tiedostot: \"%s\"?" @@ -9368,6 +9936,10 @@ msgid "Insert" msgstr "Lisää" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "Lisää operaattori %s := ..." + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "liitä päivämäärä" @@ -9505,6 +10077,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Paketin kääntämisen sijaan tee yksinkertainen Makefile." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "Riittämätön merkkikoodaus" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Vuorovaikutteinen" @@ -9521,6 +10097,14 @@ msgid "Invalid delete" msgstr "Onnistumaton poisto" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "Kelvoton ohjelma" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "Tiedosto \"%s\" ei ole ohjelma." + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Kelvoton lauseke:%s%s%s%s" @@ -9634,6 +10218,14 @@ msgid "Jump History" msgstr "Hyppyhistoria" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "Hyppää virheeseen" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "Kun koodissa havaitaan virhe tunnistetta täydennettäessä, hyppää siihen." + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Hyppy aliohjelmaan %s" @@ -10218,7 +10810,7 @@ #: lazarusidestrconsts.lislastopened msgid "Last opened" -msgstr "" +msgstr "Viimeinen avattu" #: lazarusidestrconsts.lislaunchingapplicationinvalid msgid "Launching application invalid" @@ -10237,10 +10829,6 @@ msgid "Lazarus Default" msgstr "Lazarus oletukset" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazaruksen työpöytäasetukset" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazaruksen hakemisto" @@ -10253,22 +10841,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Lazarus-tiedosto" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarus-lomake" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarus include-tiedosto" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus kieli-ID (esim. en, de, br, fi)" @@ -10279,31 +10855,7 @@ #: lazarusidestrconsts.lislazarusoptionsprojectfilename msgid "lazarus [options] <project-filename>" -msgstr "" - -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Lazarus muu tiedosto" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarus-paketti" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarus-projekti" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarus-projektin tietoja" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Lazarus-projektin lähdekoodi" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Lazarus-käännösyksikkö" +msgstr "lazarus [valinnat] <projekti-tiedosto>" #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" @@ -10587,10 +11139,6 @@ msgid "list of all case values" msgstr "luettelo kaikista case-arvoista" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Ladattu onnistuneesti" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "%s lataus epäonnistui." @@ -10767,12 +11315,16 @@ #: lazarusidestrconsts.lismakesureallppufilesofapackageareinitsoutputdirecto msgid "Make sure all ppu files of a package are in its output directory." -msgstr "" +msgstr "Varmista että paketin kaikki ppu tiedostot ovat käännöshakemistossa." #: lazarusidestrconsts.lismanagesourceeditors msgid "Manage Source Editors ..." msgstr "Hallinnoi lähdekoodieditoria ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "Rinnakkaiseen käännökseen käytettävien säikeiden maximimäärä. Oletus on 0, mikä arvaa prosessorin ytimien määrän." + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "Suurin rinnakkaisten prosessien määrä, 0 tarkoittaa oletusta (%s)" @@ -10925,7 +11477,7 @@ #: lazarusidestrconsts.lismenuconvertencoding msgid "Convert Encoding of Projects/Packages ..." -msgstr "Muunna projektin/paketin merkistökoodaus ..." +msgstr "Muunna projektin/paketin merkkikoodaus ..." #: lazarusidestrconsts.lismenudebugwindows msgid "Debug Windows" @@ -11197,6 +11749,22 @@ msgid "Jump to Implementation" msgstr "Hyppää toteutukseen" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "Hyppää toteutuksen uses-lauseeseen" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "Hyppää Initialization-osioon" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "Hyppää rajapintaan" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "Hyppää rajapinnan uses-lauseeseen" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Hyppää seuraavaan kirjanmerkkiin" @@ -11213,6 +11781,14 @@ msgid "Jump to Previous Error" msgstr "Hyppää edelliseen virheeseen" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "Hyppää aliohjelman begin-sanaan" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "Hyppää aliohjelman otsikkoon" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Valinta pieniksi kirjaimiksi" @@ -11230,6 +11806,10 @@ msgid "New Component" msgstr "Uusi komponentti" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "Uusi %s" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Uusi Lomake" @@ -11453,6 +12033,10 @@ msgid "S&how Execution Point" msgstr "Näytä &suorituspiste" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "Tilanteesta riippuva älykäs vihje" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Järjestä valinta ..." @@ -11629,10 +12213,6 @@ msgid "History" msgstr "Historia" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgid "IDE Speed Buttons" -msgstr "IDEn pikavalinnat" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -11950,6 +12530,14 @@ msgid "Undo last change to this grid" msgstr "Kumoa viimeinen muutos tässä taulukossa" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "Käytä järjestelmän merkkikoodausta" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "Poista UTF-8 oletusmerkkikoodauksen tuki." + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Arvo \"%s\"" @@ -12047,6 +12635,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "Viestin värit" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "Hakemistot erotetaan puolipisteellä" @@ -12136,7 +12728,7 @@ #: lazarusidestrconsts.lisnewencoding msgid "New encoding:" -msgstr "Uusi merkistö:" +msgstr "Uusi merkkikoodaus:" #: lazarusidestrconsts.lisnewmacroname msgid "Macro %d" @@ -12240,7 +12832,7 @@ #: lazarusidestrconsts.lisnormallythefilterisaregularexpressioninsimplesynta msgid "Normally the filter is a regular expression. In simple syntax a . is a normal character, a * stands for anything, a ? stands for any character, and comma and semicolon separates alternatives. For example: Simple syntax *.pas;*.pp corresponds to ^(.*\\.pas|.*\\.pp)$" -msgstr "" +msgstr "Yleensä suodatin on säännöllinen lauseke. Yksinkertaisessa suotimessa . on normaali merkki, * tarkoittaa mitä vaan, ? on joku 1 merkki, pilkku ja puolipiste erottavat vaihtoehdot. Esim.: Yksinkertainen *.pas;*.pp vastaa ^(.*\\.pas|.*\\.pp)$" #: lazarusidestrconsts.lisnostringconstantfound msgid "No string constant found" @@ -12259,6 +12851,7 @@ msgstr "Ei ole kelvollinen Pascal-tunniste" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "Huom." @@ -12376,11 +12969,11 @@ #: lazarusidestrconsts.lisoipautoinstalldynamic msgid "auto install dynamic" -msgstr "" +msgstr "asenna dynaamisesti" #: lazarusidestrconsts.lisoipautoinstallstatic msgid "auto install static" -msgstr "" +msgstr "asenna staattisesti" #: lazarusidestrconsts.lisoipdescription msgid "Description: " @@ -12428,7 +13021,7 @@ #: lazarusidestrconsts.lisoipreadonly msgid "readonly" -msgstr "vai luku" +msgstr "vain luku" #: lazarusidestrconsts.lisoipstate msgctxt "lazarusidestrconsts.lisoipstate" @@ -12564,6 +13157,11 @@ msgid "Open XML" msgstr "Avaa XML" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Asetukset" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Asetukset muuttuivat, käännetään kaikki option -B kanssa" @@ -12642,7 +13240,7 @@ #: lazarusidestrconsts.lispackageneedsanoutputdirectory msgid "Package needs an output directory." -msgstr "" +msgstr "Paketti tarvitsee käännöshakemiston." #: lazarusidestrconsts.lispackageneedsinstallation msgid "Package needs installation" @@ -12654,15 +13252,15 @@ #: lazarusidestrconsts.lispackageoutputdirectories msgid "Package output directories" -msgstr "Paketin käännöshakemisto" +msgstr "Paketin käännöshakemistot" #: lazarusidestrconsts.lispackagesourcedirectories msgid "Package source directories" -msgstr "Paketin lähdehakemisto" +msgstr "Paketin lähdehakemistot" #: lazarusidestrconsts.lispackagesunitsidentifierslinesbytes msgid "packages=%s/%s units=%s/%s identifiers=%s/%s lines=%s bytes=%s" -msgstr "" +msgstr "paketteja=%s/%s käännösyksikköjä=%s/%s tunnisteita=%s/%s rivejä=%s tavuja=%s" #: lazarusidestrconsts.lispackageunit msgid "package unit" @@ -12681,6 +13279,7 @@ msgstr "Sivun nimi \"%s\" on jo olemassa. Ei lisätä." #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "Paniikki" @@ -12692,10 +13291,6 @@ msgid "parser \"%s\": %s" msgstr "jäsentäjä \"%s\": %s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Pascal-tiedosto" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Suoritusmäärä" @@ -12713,6 +13308,10 @@ msgid "Paste from clipboard" msgstr "Liitä leikepöydältä" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "Pastelli värit" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Polku" @@ -12787,9 +13386,9 @@ msgid "Disable I18N of lfm" msgstr "Estä lfm:n I18N" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" -msgstr "Lisää tiedostoja hakemistoista" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" +msgstr "Lisää tiedostoja tiedostojärjestelmästä" #: lazarusidestrconsts.lispckeditaddotheritems msgid "Add other items" @@ -12846,7 +13445,7 @@ msgstr "Riippuvuuden ominaisuudet" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +msgid "Edit general options" msgstr "Muokkaa yleisiä asetuksia" #: lazarusidestrconsts.lispckeditfileproperties @@ -12857,10 +13456,6 @@ msgid "Install" msgstr "Asenna" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Asenna paketti IDE:en" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Kelvoton maximiversio" @@ -13000,7 +13595,7 @@ #: lazarusidestrconsts.lispckedituninstall msgid "Uninstall" -msgstr "Poista asennuksesta" +msgstr "Poista asennus" #: lazarusidestrconsts.lispckeditviewpackagesource msgid "View Package Source" @@ -13008,7 +13603,7 @@ #: lazarusidestrconsts.lispckexplbase msgid "Base, cannot be uninstalled" -msgstr "Kanta, ei voi poistaa asennuksesta" +msgstr "Kanta, ei voi poistaa asennusta" #: lazarusidestrconsts.lispckexplinstalled msgctxt "lazarusidestrconsts.lispckexplinstalled" @@ -13161,6 +13756,7 @@ msgstr "Kun lomake on talletettu, IDE voi tallentaa kaikki TTranslateString ominaisuudet paketin po-tiedostoon. Siksi I18N pitää sallia tälle paketille, antaa po-hakemisto ja jättää tämä asetus ruksaamatta." #: lazarusidestrconsts.lispdabort +msgctxt "lazarusidestrconsts.lispdabort" msgid "Abort" msgstr "Keskeytä" @@ -13266,7 +13862,7 @@ #: lazarusidestrconsts.lispkgdefscompiledsrcpathaddition msgid "CompiledSrcPath addition" -msgstr "" +msgstr "CompiledSrcPath lisäys" #: lazarusidestrconsts.lispkgdefsoutputdirectory msgid "Output directory" @@ -13304,9 +13900,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Tiedosto \"%s\"%sei ole paketin hakupolussa.%sLisätäänkö \"%s\" polkuun?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Lista lisätoiminnoista" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "Lisää toimintoja paketille" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13343,20 +13939,28 @@ msgstr "Virtuaalinen käännösyksikkö" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" -msgstr "Pakettihakemisto. Parametri on paketin ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Pakettihakemisto. Parametri on paketin ID, e.g. \"Nimi\" or \"Nimi 1.0\"" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" -msgstr "Paketin include-tiedostojen hakupolku. Parametri on paketin ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Paketin include-tiedostojen hakupolku. Parametri on paketin ID, e.g. \"Nimi\" or \"Nimi 1.0\"" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Paketin nimi. Parametri on paketin ID, e.g. \"Nimi\" or \"Nimi 1.0\"" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Paketin käännöshakemisto. Parametri on paketin ID, e.g. \"Nimi\" or \"Nimi 1.0\"" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" -msgstr "Paketin lähdetiedostojen hakupolku. Parametri on paketin ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Paketin lähdetiedostojen hakupolku. Parametri on paketin ID, e.g. \"Nimi\" or \"Nimi 1.0\"" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" -msgstr "Paketin käännösyksikköjen hakupolku. Parametri on paketin ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Paketin käännösyksikköjen hakupolku. Parametri on paketin ID, e.g. \"Nimi\" or \"Nimi 1.0\"" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage msgid "%sAdding new Dependency for package %s: package %s" @@ -13390,9 +13994,9 @@ msgid "Circular dependencies found" msgstr "Kehäriippuvuus löydetty" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "Käännetään pakettia %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "Käännä paketti %s" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13560,6 +14164,14 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Joitain vaadittuja paketteja ei löytynyt. Katso tarkemmin pakettikuvaajasta." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" +"Paketti %s on jo avoinna IDE:ssä.\n" +"Pakettia ei voi tallentaa samalla nimellä.\n" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Tallenna paketti?" @@ -13683,7 +14295,7 @@ #: lazarusidestrconsts.lispkgmangthereisalreadyanotherpackagewiththename msgid "There is already another package with the name \"%s\".%sConflict package: \"%s\"%sFile: \"%s\"" -msgstr "\"%s\" niminen paketti on jo olemassa.%sPaketti: \"%s\"%sTiedosto: \"%s\"" +msgstr "\"%s\" niminen paketti on jo olemassa.%sRistiriitainen paketti: \"%s\"%sTiedosto: \"%s\"" #: lazarusidestrconsts.lispkgmangthereisalreadyapackageloadedfromfile msgid "There is already a package \"%s\" loaded%sfrom file \"%s\".%sSee Package -> Package Graph.%sReplace is impossible." @@ -13711,7 +14323,7 @@ #: lazarusidestrconsts.lispkgmangunabletocreatepackagesourcedirectoryforpackage msgid "Unable to create package source directory \"%s\"%sfor package %s." -msgstr "Lähdekoodihakemiston \"%s\"%sluominen paketille %s ei onnistu." +msgstr "Lähdehakemiston \"%s\"%sluominen paketille %s ei onnistu." #: lazarusidestrconsts.lispkgmangunabletocreatetargetdirectoryforlazarus msgid "Unable to create target directory for Lazarus:%s\"%s\".%sThis directory is needed for the new changed Lazarus IDE with your custom packages." @@ -13751,11 +14363,11 @@ #: lazarusidestrconsts.lispkgmanguninstallpackage msgid "Uninstall package?" -msgstr "Poistetaanko paketti asennuksesta?" +msgstr "Poistetaanko paketin asennus?" #: lazarusidestrconsts.lispkgmanguninstallpackage2 msgid "Uninstall package %s?" -msgstr "Poistetaanko paketti %s ?" +msgstr "Poistetaanko paketin %s asennus?" #: lazarusidestrconsts.lispkgmangunsavedpackage msgid "Unsaved package" @@ -13896,11 +14508,11 @@ #: lazarusidestrconsts.lispldshowgloballinksin msgid "Show global links in " -msgstr "" +msgstr "Näytä globaalit linkit: " #: lazarusidestrconsts.lispldshowuserlinksin msgid "Show user links in " -msgstr "" +msgstr "Näytä käyttäjän linkit: " #: lazarusidestrconsts.lisplduser msgid "User" @@ -13992,17 +14604,21 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr ".lpi on projektin määrittelytiedosto, .lps on erillinen tiedosto vain istunnon tietoja varten." +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "Sijainti" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "%s (sijainti lähdekoodin ulkopuolella)" #: lazarusidestrconsts.lisppuinwrongdirectory msgid "ppu in wrong directory=%s." -msgstr "" +msgstr "ppu väärässä hakemistossa=%s." #: lazarusidestrconsts.lisppunotfoundcheckyourfpccfg msgid "%s.ppu not found. Check your fpc.cfg." -msgstr "" +msgstr "%s.ppu ei löydy. Tarkista fpc.cfg." #: lazarusidestrconsts.lisprecedingword msgid "Preceding word" @@ -14116,7 +14732,8 @@ msgstr "Riippuvuutta \"%s\" ei löytynyt.%sValitse jokin toinen paketti." #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Maximiversio \"%s\" on kelvoton.%sKäytä muotoa iso.pieni.julkaisu.käännös%sEsim.: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14125,7 +14742,8 @@ msgstr "Maximiversio on pienempi kuin Minimiversio." #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Minimiversio \"%s\" on kelvoton.%sKäytä muotoa iso.pieni.julkaisu.käännös%sEsim.: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -14347,7 +14965,7 @@ #: lazarusidestrconsts.lisprojoptsunabletochangetheautocreateformlist msgid "Unable to change the auto create form list in the program source.%sPlease fix errors first." -msgstr "" +msgstr "Automaattisesti luotua lomakelistaa ohjelman lähdekoodissa ei voi muuttaa.%sKorjaa ensin virheet." #: lazarusidestrconsts.lisprojprojectsourcedirectorymark msgid "Project Source Directory Mark" @@ -14387,11 +15005,11 @@ #: lazarusidestrconsts.lispublprojinvalidexcludefilter msgid "Invalid exclude filter" -msgstr "" +msgstr "Kelvoton poistosuodatin" #: lazarusidestrconsts.lispublprojinvalidincludefilter msgid "Invalid include filter" -msgstr "" +msgstr "Kelvoton lisäyssuodatin" #: lazarusidestrconsts.lisputlrsfilesinoutputdirectory msgid "Save .lrs files in the output directory" @@ -14528,7 +15146,7 @@ #: lazarusidestrconsts.lisremoveallinvalidproperties msgid "Remove all invalid properties" -msgstr "Poista kaikki vikaantuneet tai toimimattomat ominaisuudet" +msgstr "Poista kaikki kelvottomat ominaisuudet" #: lazarusidestrconsts.lisremoveallmessagetypefilters msgid "Remove all message type filters" @@ -14640,7 +15258,7 @@ #: lazarusidestrconsts.lisreopenwithanotherencoding msgid "Reopen with another encoding" -msgstr "Avaa uudestaan toisella merkistön koodauksella" +msgstr "Avaa uudestaan toisella merkkikoodauksella" #: lazarusidestrconsts.lisrepeat msgctxt "lazarusidestrconsts.lisrepeat" @@ -14919,10 +15537,6 @@ msgid "Save current editor file" msgstr "Tallenna nykyinen editorin tiedosto" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Tallennus onnistui" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Tallennettu IDE:n asetusten kanssa" @@ -14991,6 +15605,10 @@ msgid "Save " msgstr "Tallenna " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "Tiedoston \"%s\" tallennus nimellä \"%s\" hävittää merkkejä rivillä %s, sarakkeessa %s." + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Skaalauskerroin:" @@ -15009,7 +15627,7 @@ #: lazarusidestrconsts.lisscanning2 msgid "%s. Scanning ..." -msgstr "" +msgstr "%s. Tutkii ..." #: lazarusidestrconsts.lisscanparentdir msgid "Scanning parent directory" @@ -15021,7 +15639,7 @@ #: lazarusidestrconsts.lissearchunit msgid "Search Unit \"%s\"" -msgstr "" +msgstr "Etsi käännösyksikköä \"%s\"" #: lazarusidestrconsts.lissecondaryconfigdirectorywherelazarussearchesfor msgid "secondary config directory, where Lazarus searches for config template files. Default is " @@ -15033,7 +15651,7 @@ #: lazarusidestrconsts.lissecondtest msgid "&Second test" -msgstr "" +msgstr "Toinen polku" #: lazarusidestrconsts.lisseemessages msgid "See messages." @@ -15085,7 +15703,7 @@ #: lazarusidestrconsts.lisselectedforuninstallation msgid "selected for uninstallation" -msgstr "valittu poistettavaksi asennuksesta" +msgstr "asennus valittu poistettavaksi" #: lazarusidestrconsts.lisselectedleftneighbour msgid "(selected left neighbour)" @@ -15113,7 +15731,7 @@ #: lazarusidestrconsts.lisselectfpcsourcedirectory msgid "Select FPC source directory" -msgstr "Valitse FPC lähdekoodihakemisto" +msgstr "Valitse FPC lähdehakemisto" #: lazarusidestrconsts.lisselectionexceedsstringconstant msgid "Selection exceeds string constant" @@ -15159,6 +15777,10 @@ msgid "Short, no path" msgstr "Lyhyt, ei polkua" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "Pitääkö komponentti \"%s\" luoda automaattisesti kun ohjelma käynnistyy?" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Näytä" @@ -15183,6 +15805,10 @@ msgid "Show empty units/packages" msgstr "Näytä tyhjät käännösyksiköt/paketit" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "Näytä FPC viesti \"rivejä käännetty\"" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "Näytä kuvakkeet" @@ -15322,7 +15948,7 @@ #: lazarusidestrconsts.lisskipthesewarnings msgid "Skip these warnings" -msgstr "" +msgstr "Ohita nämä varoitukset" #: lazarusidestrconsts.lisslowerbutmoreaccurate msgid "Slower but more accurate." @@ -15340,14 +15966,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Valitan, tätä tyyppiä ei ole vielä toteutettu" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "Järjestä ulottuvuuden mukaan" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "Järjestää" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Nouseva" @@ -15414,11 +16040,11 @@ #: lazarusidestrconsts.lissourcedirectorydoesnotexist msgid "Source directory \"%s\" does not exist." -msgstr "Lähdekoodihakemistoa \"%s\" ei ole." +msgstr "Lähdehakemistoa \"%s\" ei ole." #: lazarusidestrconsts.lissourceeditorwindowmanager msgid "Source Editor Window Manager" -msgstr "Lähdekoodieditorin ikkunat" +msgstr "Koodieditorin ikkunat" #: lazarusidestrconsts.lissourcemodified msgid "Source modified" @@ -15553,10 +16179,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Ehdota uuden tiedoston nimeen pieniä kirjaimia" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Epäilyttävä include polku" @@ -15591,7 +16213,7 @@ #: lazarusidestrconsts.lissyntaxmode msgid "Syntax mode" -msgstr "Kielioppi-moodi" +msgstr "Kielioppimoodi" #: lazarusidestrconsts.lissystemppunotfoundcheckyourfpccfg msgid "system.ppu not found. Check your fpc.cfg." @@ -15724,15 +16346,15 @@ #: lazarusidestrconsts.listhecomponentisinheritedfromtodeleteaninheritedcomp msgid "The component %s is inherited from %s.%sTo delete an inherited component open the ancestor and delete it there." -msgstr "Komponentti %s periytyy luokasta %s.%sSen voi poistaa avaamalla kyseinen luokka ja poistamalla sen sieltä." +msgstr "Komponentti %s periytyy %s:sta.%sSen voi poistaa avaamalla kyseinen luokka ja poistamalla se sieltä." #: lazarusidestrconsts.listhecomponentisinheritedfromtorenameaninheritedcomp msgid "The component %s is inherited from %s.%sTo rename an inherited component open the ancestor and rename it there." -msgstr "Komponentti %s periytyy luokasta %s.%sSen voi nimetä avaamalla kyseinen luokka ja nimeämällä sen siellä." +msgstr "Komponentti %s periytyy %s:sta.%sSen voi nimetä avaamalla kyseinen luokka ja nimeämällä se siellä." #: lazarusidestrconsts.listhecomponentnamemustbeuniqueinallcomponentsonthefo msgid "The component name must be unique in all components on the form/datamodule.The name is compared case insensitive like a normal Pascal identifier." -msgstr "" +msgstr "Komponentin nimen pitää olla yksilöllinen lomakkeen/datamodulin sisällä. Nimiä verrataan kuten Pascal tunnisteita välittämättä kirjaimen koosta." #: lazarusidestrconsts.listheconfigurationwillbedowngradedconverted msgid "The configuration will be downgraded/converted." @@ -15804,7 +16426,7 @@ #: lazarusidestrconsts.listhefileindexisneededforfunctionslikefinddeclaratio msgid "The file index is needed for functions like find declaration. While scanning you can edit sources and compile, but functions like find declaration will show unit-not-found errors. This can take a minute." -msgstr "" +msgstr "Tiedostoindexiä tarvitaan esim. määrittelyjen hakemiseen. Tiedostoja tutkittaessa koodia voi muokata, mutta määrittelyn haku antaa virheen käännösyksikköä-ei-löydy. Tämä voi kestää minuutin." #: lazarusidestrconsts.listhefileisasymlinkopeninstead msgid "The file \"%s\" is a symlink.%sOpen \"%s\" instead?" @@ -15832,7 +16454,7 @@ #: lazarusidestrconsts.listhefilewasfoundinoneofthesourcedirectoriesofthepac msgid "The file \"%s\"%swas found in one of the source directories of the package %s and looks like a compiled unit. Compiled units must be in the output directory of the package, otherwise other packages can get problems using this package.%sDelete ambiguous file?" -msgstr "" +msgstr "Tiedosto \"%s\"%slöytyy paketin %s lähdehakemistosta ja näyttää käännetyltä yksiköltä. Käännetyn yksikön pitää olla paketin käännöshakemistossa, muuten muilla paketeilla on vaikeuksia käyttää tätä pakettia.%sPoistetaanko ristiriitainen tiedosto?" #: lazarusidestrconsts.listhefilewasnotfounddoyouwanttolocateityourself msgid "The file \"%s\" was not found.%sDo you want to locate it yourself?" @@ -15856,7 +16478,7 @@ #: lazarusidestrconsts.listheideisstillbuilding msgid "The IDE is still building." -msgstr "" +msgstr "IDE:ä kootaan yhä." #: lazarusidestrconsts.listheidentifierisaunitpleaseusethefilesaveasfunction msgid "The identifier is a unit. Please use the File - Save as function to rename a unit." @@ -15864,7 +16486,7 @@ #: lazarusidestrconsts.listhekeyisalreadyassignedtoremovetheoldassignmentand msgid "The key %s%sis already assigned to %s.%sRemove the old assignment and assign the key to the new function%s%s?" -msgstr "Avain %s%son jo kiinnitetty %s:lle.%sPoista vanha kiinnitys ja kiinnitä avain uuteen funktioon%s%s?" +msgstr "Näppäin %s%son jo kiinnitetty %s:lle.%sPoista vanha kiinnitys ja kiinnitä näppäin uuteen funktioon%s%s?" #: lazarusidestrconsts.listhelaunchingapplicationbundledoesnotexists msgid "The Application Bundle %s%sneeded for execution does not exist or is not executable.%sDo you want to create one?%sSee Project -> Project Options -> Application for settings." @@ -15872,7 +16494,7 @@ #: lazarusidestrconsts.listhelaunchingapplicationdoesnotexistsorisnotexecuta msgid "The launching application \"%s\"%sdoes not exist or is not executable.%sSee Run -> Run parameters -> Local" -msgstr "" +msgstr "Käynnistävä ohjelma \"%s\"%sei ole olemassa tai se ei ole suoritettava.%sKatso Suorita -> Suoritusparametrit -> Paikallinen" #: lazarusidestrconsts.listhelazarusdirectorycontainsthesourcesoftheideandth msgid "The Lazarus directory contains the sources of the IDE and the package files of LCL and many standard packages. For example it contains the file \"ide%slazarus.lpi\". The translation files are located there too." @@ -15916,11 +16538,11 @@ #: lazarusidestrconsts.listheoutputdirectoryofislistedintheincludesearchpath msgid "The output directory of %s is listed in the include search path of %s." -msgstr "" +msgstr "%s:n käännöshakemisto on jo mukana %s:n include hakupolussa." #: lazarusidestrconsts.listheoutputdirectoryofislistedintheinheritedincludes msgid "The output directory of %s is listed in the inherited include search path of %s." -msgstr "" +msgstr "%s:n käännöshakemisto on jo mukana %s:n periytyvässä include hakupolussa." #: lazarusidestrconsts.listheoutputdirectoryofislistedintheinheritedunitsear msgid "The output directory of %s is listed in the inherited unit search path of %s." @@ -15928,11 +16550,11 @@ #: lazarusidestrconsts.listheoutputdirectoryofislistedintheunitsearchpathof msgid "The output directory of %s is listed in the unit search path of %s." -msgstr "" +msgstr "%s:n käännöshakemisto on jo mukana %s:n käännösyksikköjen hakupolussa." #: lazarusidestrconsts.listheoutputdirectoryshouldbeaseparatedirectoryandnot msgid " The output directory should be a separate directory and not contain any source files." -msgstr "" +msgstr "Käännöshakemiston pitäisi olla erillinen hakemisto, missä ei ole lähdekoodeja." #: lazarusidestrconsts.listheownerclasshasthisname msgid "The owner class has this name" @@ -16004,11 +16626,11 @@ #: lazarusidestrconsts.listheprojectmustbesavedbeforebuildingifyousetthetest msgid "The project must be saved before building%sIf you set the Test Directory in the IDE options,%syou can create new projects and build them at once.%sSave project?" -msgstr "" +msgstr "Projekti pitää tallentaa ennen kokoamista%sJos asetat testihakemiston IDE:n asetuksissa,%svoit luoda uusia projekteja ja koota ne saman tien.%sTallenna projekti?" #: lazarusidestrconsts.listheprojectusestargetosandcputhesystemppuforthistar msgid "The project uses target OS=%s and CPU=%s.%sThe system.ppu for this target was not found in the FPC binary directories.%sMake sure fpc is installed correctly for this target and the fpc.cfg contains the right directories." -msgstr "" +msgstr "Projektin kohdekäyttöjärjestelmä=%s ja CPU=%s.%sKohteelle ei löydy system.ppu tiedostoa FPC:n binaari-hakemistoista.%sVarmista että fpc on asennettu oikein tälle kohteelle ja että fpc.cfg:ssa on oikeat hakemistot." #: lazarusidestrconsts.listheprojectusesthenewfpcresourceswhichrequiresatlea msgid "The project uses the new FPC resources, which requires at least FPC 2.4" @@ -16016,15 +16638,15 @@ #: lazarusidestrconsts.listheprojectwritesthedebugsymbolstoanexternalfilethe msgid "The project writes the debug symbols to an external file. The \"%s\" supports only symbols within the executable." -msgstr "" +msgstr "Projekti kirjoittaa virheenjäljitys symbolit ulkoiseen tiedostoon. \"%s\" tukee vain symboleja suoritettavassa ohjelmassa." #: lazarusidestrconsts.listhereareadditionalnotesforthismessageon msgid "%sThere are additional notes for this message on%s" -msgstr "" +msgstr "%sLisätietoja tähän viestiin löytyy täältä%s" #: lazarusidestrconsts.listherearenoconflictingkeys msgid "There are no conflicting keys." -msgstr "" +msgstr "Ei ristiriitaisia näppäimiä." #: lazarusidestrconsts.listhereareotherfilesinthedirectorywiththesamename msgid "There are other files in the directory with the same name,%swhich only differ in case:%s%s%sDelete them?" @@ -16072,7 +16694,7 @@ #: lazarusidestrconsts.listhereisalreadyaunitinoldnewyouhavetomakesur msgid "There is already a unit \"%s\" in %s%sOld: %s%sNew: %s%sYou have to make sure that the unit search path contains only one of them.%s%sContinue?" -msgstr "" +msgstr "Käännösyksikkö \"%s\" on jo %s:ssa%sVanha: %s%sUusi: %s%sVarmista että käännösyksikköjen hakupolussa on vain toinen niistä.%s%sJatketaanko?" #: lazarusidestrconsts.listhereisalreadyaunitwiththenamepascalidentifiersmus msgid "There is already a unit with the name \"%s\". Pascal identifiers must be unique." @@ -16084,7 +16706,7 @@ #: lazarusidestrconsts.listhereisnofpcexeinthedirectoryofusuallythemakeexecu msgid "There is no fpc.exe in the directory of %s. Usually the make executable is installed together with the FPC compiler." -msgstr "" +msgstr "fpc.exe ei ole %s:n hakemistossa. Yleensä make ohjelma asennetaan yhdessä FPC:n kanssa." #: lazarusidestrconsts.listheremustbeatleastonebuildmode msgid "There must be at least one build mode." @@ -16092,19 +16714,19 @@ #: lazarusidestrconsts.listheresourceclassdescendsfromprobablythisisatypofor msgid "The resource class \"%s\" descends from \"%s\". Probably this is a typo for TForm." -msgstr "" +msgstr "Resurssiluokka \"%s\" periytyy \"%s\":sta. Kyseessä on ehkä kirjoitusvirhe TForm:lle." #: lazarusidestrconsts.listherewasanerrorduringwritingtheselectedcomponent msgid "There was an error during writing the selected component %s:%s:%s%s" -msgstr "" +msgstr "Tapahtui virhe kirjoitettaessa valittua komponenttia %s:%s:%s%s" #: lazarusidestrconsts.listherewasanerrorwhileconvertingthebinarystreamofthe msgid "There was an error while converting the binary stream of the selected component %s:%s:%s%s" -msgstr "" +msgstr "Tapahtui virhe muunnettaessa binaarivuota valitulle komponentille %s:%s:%s%s" #: lazarusidestrconsts.listherewasanerrorwhilecopyingthecomponentstreamtocli msgid "There was an error while copying the component stream to clipboard:%s%s" -msgstr "" +msgstr "Tapahtui virhe kopioitaessa komponentin vuota leikepöydälle:%s%s" #: lazarusidestrconsts.listherootcomponentcannotbedeleted msgid "The root component cannot be deleted." @@ -16132,7 +16754,7 @@ #: lazarusidestrconsts.listhetestdirectorycouldnotbefoundseeideopt msgid "The Test Directory could not be found:%s\"%s\"%s(see IDE options)" -msgstr "Testi-hakemistoa ei löydy:%s\"%s\"%s(katso IDE asetukset)" +msgstr "Testihakemistoa ei löydy:%s\"%s\"%s(katso IDE asetukset)" #: lazarusidestrconsts.listheunitalreadyexists msgid "The unit \"%s\" already exists." @@ -16156,7 +16778,7 @@ #: lazarusidestrconsts.listheunitispartofthefpcsourcesbutthecorrespondingfpd msgid "The unit %s is part of the FPC sources, but the corresponding fpdoc xml file was not found.%sEither you have not yet added the fpcdocs directory to the search path or the unit is not yet documented.%sThe fpdoc files for the FPC sources can be downloaded from: %s%sPlease add the directory in the fpdoc editor options.%sIn order to create a new file the directory must be writable." -msgstr "" +msgstr "Käännösyksikkö %s kuuluu FPC:n lähdekoodeihin, mutta vastaavaa fpdoc xml tiedostoa ei löydy.%sJoko et ole lisännyt fpcdoc hakemistoa hakupolkuun tai käännösyksikköä ei ole vielä dokumentoitu.%sfpdoc tiedostot FPC lähdekoodeille voi ladata täältä: %s%sLisää hakemisto fpdoc editorin valintoihin.%sUuden tiedoston luomiseksi hakemistoon pitää olla kirjoitusoikeus." #: lazarusidestrconsts.listheunitisusedbyotherfilesupdatereferencesautomatic msgid "The unit %s is used by other files.%sUpdate references automatically?" @@ -16168,11 +16790,11 @@ #: lazarusidestrconsts.listheunitsearchpathofcontainsthesourcedirectoryofpac msgid "The unit search path of \"%s\" contains the source directory \"%s\" of package %s" -msgstr "" +msgstr "Käännösyksikön hakupolku \"%s\":lle sisältää lähdehakemiston \"%s\" paketille %s" #: lazarusidestrconsts.listheworkingdirectorydoesnotexistpleasechecktheworki msgid "The working directory \"%s\" does not exist.%sPlease check the working directory in Menu > Run > Run parameters." -msgstr "" +msgstr "Työhakemistoa \"%s\" ei ole olemassa.%sTarkista työhakemisto valikosta Suorita > Suoritusparametrit." #: lazarusidestrconsts.listhiscomponentalreadycontainsaclasswiththename msgid "This component already contains a class with the name %s." @@ -16204,19 +16826,23 @@ #: lazarusidestrconsts.listhissetofoptionstobuildlazarusisnotsupportedbythis msgid "This set of options to build Lazarus is not supported by this installation.%sThe directory \"%s\" is not writable.%sSee the Lazarus website for other ways to install Lazarus." -msgstr "" +msgstr "Asennus ei tue näitä valintoja Lazaruksen kokoamiseksi%sHakemisto \"%s\" ei ole kirjoitettava.%sKatso Lazaruksen web-sivulta muita ohjeita Lazaruksen asentamiseen." #: lazarusidestrconsts.listhisstatementcannotbeextractedpleaseselectsomecode msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Tästä ei voi tehdä omaa aliohjelmaa.%sValitse ensin jokin muu koodin osa josta voi tehdä uusi aliohjelma tai metodi" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Tämä synnyttää kehäriippuvuuden." #: lazarusidestrconsts.listhiswillputalotoftextontheclipboardproceed msgid "This will put a lot of text (%s) on the clipboard.%sProceed?" -msgstr "" +msgstr "Tämä kopioi paljon tekstiä (%s) leikepöydälle.%sJatketaanko?" #: lazarusidestrconsts.listhreads msgctxt "lazarusidestrconsts.listhreads" @@ -16268,6 +16894,10 @@ msgid "Title (leave empty for default)" msgstr "Otsikko (oletusotsikko jos tyhjä)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "Valitse komponentin kuvake 24x24" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funktio: lisää polkuerotin" @@ -16304,29 +16934,50 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Vaihda näyttö tiedostojen täyden polun ja suhteellisen polun välillä" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "Työkalupalkin asetukset" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "Työkalupalkki" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "Korosta työkalupalkin napit" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "Nosta työkalupalkit" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" -msgstr "" +msgstr "työkalulla \"%s\" ei ole suoritettavaa ohjelmaa" #: lazarusidestrconsts.listoolheaderfailed msgid "Tool Header: Failed" -msgstr "" +msgstr "Työkalu otsikko: Epäonnistui" #: lazarusidestrconsts.listoolheaderrunning msgid "Tool Header: Running" -msgstr "" +msgstr "Työkalu otsikko: Suorittaa" #: lazarusidestrconsts.listoolheaderscrolledup msgid "Tool Header: Scrolled up" -msgstr "" +msgstr "Työkalu otsikko: Rullattu ylös" #: lazarusidestrconsts.listoolheadersuccess msgid "Tool Header: Success" -msgstr "" +msgstr "Työkalu otsikko: Onnistui" #: lazarusidestrconsts.listoolstoppedwithexitcodeusecontextmenutogetmoreinfo msgid "tool stopped with exit code %s. Use context menu to get more information." -msgstr "" +msgstr "työkalu lopetti koodilla %s. Lisää tietoa pikavalikosta." + +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Ylhäällä" #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" @@ -16354,11 +17005,11 @@ #: lazarusidestrconsts.listotalpages msgid "Total Pages: %s" -msgstr "" +msgstr "Sivuja yhteensä: %s" #: lazarusidestrconsts.listranslatetheenglishmessages msgid "Translate the English Messages" -msgstr "" +msgstr "Käännä englanninkieliset viestit" #: lazarusidestrconsts.listreeneedsrefresh msgid "Tree needs refresh" @@ -16370,7 +17021,7 @@ #: lazarusidestrconsts.listwomovedfileswillhavethesamefilenamein msgid "Two moved files will have the same file name:%s%s%s%s%sin %s" -msgstr "" +msgstr "Kahdella siirretyllä tiedostolla on sama nimi:%s%s%s%s%s %s:ssa" #: lazarusidestrconsts.listypes msgid "Types (not removed if no replacement)" @@ -16378,123 +17029,123 @@ #: lazarusidestrconsts.lisudadditionaldirectories msgid "Additional directories:" -msgstr "" +msgstr "Lisähakemistot:" #: lazarusidestrconsts.lisudallpackageunits msgid "All package units" -msgstr "" +msgstr "Kaikki paketin käännösyksiköt" #: lazarusidestrconsts.lisudallsourceeditorunits msgid "All source editor units" -msgstr "" +msgstr "Kaikki editorin käännösyksiköt" #: lazarusidestrconsts.lisudallunits msgid "All units" -msgstr "" +msgstr "Kaikki käännösyksiköt" #: lazarusidestrconsts.lisudbydefaultonlytheprojectunitsandthesourceeditorunit msgid "By default only the project units and the source editor units are searched. Add here a list of directories separated by semicolon to search as well." -msgstr "" +msgstr "Oletuksena vain projektin ja editorin käännösyksiköistä etsitään. Lisää tähän puolipisteellä erotettu luettelo hakemistoista, mistä myös etsitään." #: lazarusidestrconsts.lisudcollapseallnodes msgid "Collapse all nodes" -msgstr "" +msgstr "Supista kaikki solmut" #: lazarusidestrconsts.lisudexpandallnodes msgid "Expand all nodes" -msgstr "" +msgstr "Laajenna kaikki solmut" #: lazarusidestrconsts.lisudfile msgid "File: %s" -msgstr "" +msgstr "Tiedosto: %s" #: lazarusidestrconsts.lisudfilter msgid "(Filter)" -msgstr "" +msgstr "(Suodatin)" #: lazarusidestrconsts.lisudimplementationuses msgid "Implementation Uses: %s" -msgstr "" +msgstr "Toteutuksen uses-lause: %s" #: lazarusidestrconsts.lisudimplementationuses2 msgid "implementation uses: %s" -msgstr "" +msgstr "Toteutuksen uses-lause: %s" #: lazarusidestrconsts.lisudinterfaceuses msgid "Interface Uses: %s" -msgstr "" +msgstr "Rajapinnan uses-lause: %s" #: lazarusidestrconsts.lisudinterfaceuses2 msgid "interface uses: %s" -msgstr "" +msgstr "Rajapinnan uses-lause: %s" #: lazarusidestrconsts.lisudprojectsandpackages msgid "Projects and packages" -msgstr "" +msgstr "Projektit ja paketit" #: lazarusidestrconsts.lisudscanning msgid "Scanning ..." -msgstr "" +msgstr "Tutkii ..." #: lazarusidestrconsts.lisudscanningunits msgid "Scanning: %s units ..." -msgstr "" +msgstr "Tutkii: %s käännösyksikköä ..." #: lazarusidestrconsts.lisudsearch msgid "(Search)" -msgstr "" +msgstr "(Etsi)" #: lazarusidestrconsts.lisudsearchnextoccurrenceofthisphrase msgid "Find next occurrence of this phrase" -msgstr "" +msgstr "Etsi tämän lauseen seuraava esiintymä" #: lazarusidestrconsts.lisudsearchnextunitofthisphrase msgid "Find next unit with this phrase" -msgstr "" +msgstr "Etsi seuraava käännösyksikkö, missä tämä lause esiintyy" #: lazarusidestrconsts.lisudsearchpreviousoccurrenceofthisphrase msgid "Find previous occurrence of this phrase" -msgstr "" +msgstr "Etsi tämän lauseen edellinen esiintymä" #: lazarusidestrconsts.lisudsearchpreviousunitofthisphrase msgid "Find previous unit with this phrase" -msgstr "" +msgstr "Etsi edellinen käännösyksikkö, missä tämä lause esiintyy" #: lazarusidestrconsts.lisudselectedunits msgid "Selected units" -msgstr "" +msgstr "Valitut käännösyksiköt" #: lazarusidestrconsts.lisudshownodesfordirectories msgid "Show nodes for directories" -msgstr "" +msgstr "Näytä hakemistot solmuina" #: lazarusidestrconsts.lisudshownodesforprojectandpackages msgid "Show nodes for project and packages" -msgstr "" +msgstr "Näytä projektit ja paketit solmuina" #: lazarusidestrconsts.lisudunits msgid "Units" -msgstr "" +msgstr "Käännösyksiköt" #: lazarusidestrconsts.lisudunits2 msgid "Units: %s" -msgstr "" +msgstr "Käännösyksiköt: %s" #: lazarusidestrconsts.lisudusedbyimplementations msgid "Used by Implementations: %s" -msgstr "" +msgstr "Toteutus käyttää: %s" #: lazarusidestrconsts.lisudusedbyimplementations2 msgid "used by implementations: %s" -msgstr "" +msgstr "toteutus käyttää: %s" #: lazarusidestrconsts.lisudusedbyinterfaces msgid "Used by Interfaces: %s" -msgstr "" +msgstr "Rajapinta käyttää: %s" #: lazarusidestrconsts.lisudusedbyinterfaces2 msgid "used by interfaces: %s" -msgstr "" +msgstr "rajapinta käyttää: %s" #: lazarusidestrconsts.lisuedonotsho msgid "Do not show this message again." @@ -16600,15 +17251,15 @@ #: lazarusidestrconsts.lisunabletoaddresourceheadercommenttoresourcefile msgid "Unable to add resource header comment to resource file %s\"%s\".%sProbably a syntax error." -msgstr "" +msgstr "Resurssiotsikon kommentin lisääminen resurssitiedostoon %s\"%s\" ei onnistu.%sEhkä kielioppivirhe." #: lazarusidestrconsts.lisunabletoaddresourcetformdatatoresourcefileprobably msgid "Unable to add resource T%s:FORMDATA to resource file %s\"%s\".%sProbably a syntax error." -msgstr "" +msgstr "Resurssin T%s:FORMDATA lisääminen resurssitiedostoon %s\"%s\" ei onnistu.%sEhkä kielioppivirhe." #: lazarusidestrconsts.lisunabletoaddthedependencybecausethepackagehasalread msgid "Unable to add the dependency %s, because the package %s has already a dependency %s" -msgstr "" +msgstr "Riippuvuuden %s lisääminen ei onnistu, koska paketilla %s on jo riippuvuus %s" #: lazarusidestrconsts.lisunabletoaddthedependencybecausethiswouldcreatea msgid "Unable to add the dependency %s, because this would create a circular dependency. Dependency %s" @@ -16648,7 +17299,11 @@ #: lazarusidestrconsts.lisunabletoconverttextformdataoffileintobinarystream msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" -msgstr "" +msgstr "Teksti-lomakedatan tiedostossa %s\"%s\"%sbinaarivuoksi ei onnistu. (%s)" + +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "Muunnos merkkikoodaukselle \"%s\" ei onnistu" #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" @@ -16704,7 +17359,7 @@ #: lazarusidestrconsts.lisunabletoexecute msgid "unable to execute: %s" -msgstr "" +msgstr "ei voi suorittaa: %s" #: lazarusidestrconsts.lisunabletofindaresourcestringsectioninthisoranyofthe msgid "Unable to find a ResourceString section in this or any of the used units." @@ -16712,7 +17367,7 @@ #: lazarusidestrconsts.lisunabletofindavalidclassnamein msgid "Unable to find a valid classname in \"%s\"" -msgstr "" +msgstr "Kelvollista luokkanimeä ei löydy \"%s\":ssa" #: lazarusidestrconsts.lisunabletofindfile msgid "Unable to find file \"%s\"." @@ -16720,7 +17375,7 @@ #: lazarusidestrconsts.lisunabletofindfilechecksearchpathinprojectcompileroption msgid "Unable to find file \"%s\".%sIf it belongs to your project, check search path in%sProject -> Compiler Options -> Search Paths -> Other Unit Files. If this file belongs to a package, check the appropriate package compiler options. If this file belongs to Lazarus, make sure compiling clean. If the file belongs to FPC then check fpc.cfg. If unsure, check Project -> CompilerOptions -> Test" -msgstr "" +msgstr "Tiedostoa \"%s\" ei löydy.%sJos se kuuluu projektiin, tarkista hakupolku%sProjekti -> Kääntäjän asetukset -> Hakupolut -> Muut lähdekoodit. Jos se kuuluu pakettiin, tarkista vastaavasti paketin kääntäjän asetukset. Jos se kuuluu Lazarukseen, käännä kaikki (siivoa ja kokoa). Jos se kuuluu FPC:hen, tarkista fpc.cfg. Jos olet epävarma, tarkista Projekti -> Kääntäjän asetukset -> Testi-nappi" #: lazarusidestrconsts.lisunabletofindinlfmstream msgid "Unable to find %s in LFM Stream." @@ -16736,7 +17391,7 @@ #: lazarusidestrconsts.lisunabletofindthecomponentclassitisnotregisteredviar msgid "Unable to find the component class \"%s\".%sIt is not registered via RegisterClass and no lfm was found.%sIt is needed by unit:%s%s" -msgstr "" +msgstr "Komponenttiluokkaa \"%s\" ei löydy.%sSitä ei ole rekisteröity RegisterClass funktion kautta eikä lfm:ää löydy.%sSitä tarvitsee käännösyksikkö:%s%s" #: lazarusidestrconsts.lisunabletogathereditorchanges msgid "Unable to gather editor changes." @@ -16756,19 +17411,19 @@ #: lazarusidestrconsts.lisunabletoloadthecomponentclassbecauseitdependsonits msgid "Unable to load the component class \"%s\", because it depends on itself." -msgstr "" +msgstr "Komponenttiluokan \"%s\" lataaminen ei onnistu, koska sillä on riippuvuus itseensä." #: lazarusidestrconsts.lisunabletoopen msgid "Unable to open \"%s\"" -msgstr "" +msgstr "Ei voi avata \"%s\"" #: lazarusidestrconsts.lisunabletoopenancestorcomponent msgid "Unable to open ancestor component" -msgstr "Ei voi avata isä-komponenttia" +msgstr "Kantakomponentin avaaminen ei onnistu" #: lazarusidestrconsts.lisunabletoopendesignertheclassdoesnotdescendfromades msgid "Unable to open designer.%sThe class %s does not descend from a designable class like TForm or TDataModule." -msgstr "" +msgstr "Lomake-editorin avaaminen ei onnistu.%sLuokka %s ei periydy sopivasta luokasta kuten TForm tai TDataModule." #: lazarusidestrconsts.lisunabletoread msgid "Unable to read %s" @@ -16780,11 +17435,11 @@ #: lazarusidestrconsts.lisunabletoreadfile2 msgid "Unable to read file \"%s\"." -msgstr "Ei pystytä lukemaan tiedostoa \"%s\"." +msgstr "Tiedoston \"%s\" lukeminen ei onnistu." #: lazarusidestrconsts.lisunabletoreadfileerror msgid "Unable to read file \"%s\"%sError: %s" -msgstr "Ei pystytä lukemaan tiedostoa \"%s\"%sVirhe: %s" +msgstr "Tiedoston \"%s\" lukeminen ei onnistu%sVirhe: %s" #: lazarusidestrconsts.lisunabletoreadlpi msgid "Unable to read lpi" @@ -16792,11 +17447,11 @@ #: lazarusidestrconsts.lisunabletoreadprocessexitstatus msgid "unable to read process ExitStatus" -msgstr "" +msgstr "Prosessin ExitStatus lukeminen ei onnistu" #: lazarusidestrconsts.lisunabletoreadtheprojectinfofile msgid "Unable to read the project info file%s\"%s\"." -msgstr "Ei pystytä lukemaan 'project info file'- tiedostoa%s\"%s\"." +msgstr "Projektin lukeminen ei onnistu tiedostoon%s\"%s\"." #: lazarusidestrconsts.lisunabletoremoveoldbackupfile msgid "Unable to remove old backup file \"%s\"!" @@ -16824,7 +17479,7 @@ #: lazarusidestrconsts.lisunabletorenameforminsource msgid "Unable to rename form in source." -msgstr "Lomakkeen nimeäminen lähdekoodissa ei onnistu" +msgstr "Lomakkeen nimeäminen lähdekoodissa ei onnistu." #: lazarusidestrconsts.lisunabletorenamemethodpleasefixtheerrorshowninthemessag msgid "Unable to rename method. Please fix the error shown in the message window." @@ -16832,7 +17487,7 @@ #: lazarusidestrconsts.lisunabletorenamevariableinsource msgid "Unable to rename variable in source." -msgstr "Ei pystytä tekemään muutoksia lähdekoodiin." +msgstr "Muutujan nimeäminen lähdekoodissa ei onnistu." #: lazarusidestrconsts.lisunabletorun msgid "Unable to run" @@ -16860,7 +17515,7 @@ #: lazarusidestrconsts.lisunabletotransformbinarycomponentstreamoftintotext msgid "Unable to transform binary component stream of %s:T%s into text." -msgstr "" +msgstr "%s:T%s binaari komponenttivuon muuttaminen tekstiksi ei onnistu." #: lazarusidestrconsts.lisunabletoupdatecreateformstatementinprojectsource msgid "Unable to update CreateForm statement in project source" @@ -16868,7 +17523,7 @@ #: lazarusidestrconsts.lisunabletowrite2 msgid "Unable to write \"%s\"" -msgstr "Kirjoittaminen ei onnistu \"%s\"" +msgstr "\"%s\":n kirjoittaminen ei onnistu" #: lazarusidestrconsts.lisunabletowritefile msgid "Unable to write file" @@ -17064,7 +17719,7 @@ #: lazarusidestrconsts.lisusedforautocreatedforms msgid "Used for auto-created forms." -msgstr "" +msgstr "Automaattisesti luodut lomakkeet käyttävät." #: lazarusidestrconsts.lisuseexcludefilter msgid "Use exclude filter" @@ -17167,6 +17822,7 @@ msgstr "Muuttuja" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "Monisanainen" @@ -17222,7 +17878,7 @@ #: lazarusidestrconsts.liswarnings msgid ", Warnings: %s" -msgstr "" +msgstr ", Varoituksia: %s" #: lazarusidestrconsts.liswarningthisisthemainunitthenewmainunitwillbepas msgid "%sWarning: This is the main unit. The new main unit will be %s.pas." @@ -17254,11 +17910,11 @@ #: lazarusidestrconsts.liswatchpoint msgid "&Data/Watch Breakpoint ..." -msgstr "" +msgstr "&Tieto/Vahti keskeytyskohta ..." #: lazarusidestrconsts.liswatchpointbreakpoint msgid "&Data/watch Breakpoint ..." -msgstr "" +msgstr "&Tieto/Vahti keskeytyskohta ..." #: lazarusidestrconsts.liswatchpropert msgid "Watch Properties" @@ -17266,7 +17922,7 @@ #: lazarusidestrconsts.liswatchscope msgid "Watch scope" -msgstr "" +msgstr "Vahdin ulottuvuus" #: lazarusidestrconsts.liswatchscopeglobal msgctxt "lazarusidestrconsts.liswatchscopeglobal" @@ -17279,7 +17935,7 @@ #: lazarusidestrconsts.liswatchtowatchpoint msgid "Create &Data/Watch Breakpoint ..." -msgstr "" +msgstr "Luo &Tieto/Vahti keskeytyskohta ..." #: lazarusidestrconsts.liswelcometolazaruside msgid "Welcome to Lazarus IDE %s" @@ -17307,7 +17963,7 @@ #: lazarusidestrconsts.liswindowmenuwithnamefordesignedform msgid "Window menu shows designed form's name instead of caption" -msgstr "" +msgstr "Ikkunat-valikko näyttää muokattavan lomakkeen nimen Caption:in sijaan." #: lazarusidestrconsts.liswindowmenuwithnamefordesignedformhint msgid "Useful especially if the caption is left empty." @@ -17319,7 +17975,7 @@ #: lazarusidestrconsts.liswithincludes2 msgid ", with includes " -msgstr "" +msgstr ", includes-tiedostojen kanssa " #: lazarusidestrconsts.liswithoutapropercompilerthecodebrowsingandcompilingw msgid "Without a proper compiler the code browsing and compiling will be disappointing." @@ -17401,29 +18057,29 @@ msgid "XML Error" msgstr "XML-virhe" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML-tiedostot" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" -msgstr "" +msgstr "XML jäsentäjän virhe tiedostossa %s%sVirhe: %s" + +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "Kyllä" #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" -msgstr "" +msgstr "Tämän voi estää yksittäisille lomakkeille pakettimuokkaimessa" #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepopupmenu msgid "You can disable this for individual forms via the popup menu in the project inspector" -msgstr "" +msgstr "Tämän voi estää yksittäisille lomakkeille projektinhallinnan paikallisvalikosta" #: lazarusidestrconsts.lisyoucandownloadfpcandthefpcsourcesfromhttpsourcefor msgid "You can download FPC and the FPC sources from http://sourceforge.net/projects/lazarus/?source=directory" -msgstr "" +msgstr "FPC ja sen lähdekoodit löytyvät: http://sourceforge.net/projects/lazarus/?source=directory" #: lazarusidestrconsts.lisyoucannotbuildlazaruswhiledebuggingorcompiling msgid "You cannot build Lazarus while debugging or compiling." -msgstr "Lazarusta ei voi koota, kun ohjelmaa ajetaan tai käännetään." +msgstr "Lazarusta ei voi koota kun ohjelmaa ajetaan tai käännetään." #: lazarusidestrconsts.lis_all_ msgctxt "lazarusidestrconsts.lis_all_" @@ -17483,7 +18139,7 @@ #: lazarusidestrconsts.regdlgformat msgid "Format" -msgstr "" +msgstr "Muoto" #: lazarusidestrconsts.regdlghex msgid "Hex" @@ -17503,11 +18159,11 @@ #: lazarusidestrconsts.rsattachto msgid "Attach to" -msgstr "" +msgstr "Kiinnitä" #: lazarusidestrconsts.rsattributes msgid "Attributes" -msgstr "" +msgstr "Määritteet" #: lazarusidestrconsts.rsautomaticallyincreasebuildnumber msgid "Automatically increase build number" @@ -17515,7 +18171,7 @@ #: lazarusidestrconsts.rsautomaticallyincreasebuildnumberhint msgid "Increased every time the project is compiled." -msgstr "" +msgstr "Kasvaa aina kun projekti käännetään." #: lazarusidestrconsts.rsbuild msgid "&Build:" @@ -17549,10 +18205,6 @@ msgid "Filter the lines in list with a string" msgstr "Suodata luettelon rivit tekstillä" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Lomaketiedosto (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Löytyi, muttei ole luettelossa: " @@ -17780,7 +18432,7 @@ #: lazarusidestrconsts.rsselectaninheritedentry msgid "Select an inherited entry" -msgstr "" +msgstr "Valitse periytyvä kohta" #: lazarusidestrconsts.rsstartanewsearch msgid "Start a new search" @@ -17831,6 +18483,10 @@ msgid "Text marker commands" msgstr "Tekstin merkkauskomennot" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "Moni-osoitin komennot" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Pakettivalikon komennot" @@ -17873,7 +18529,7 @@ #: lazarusidestrconsts.srkmcattemplateeditoff msgid "Template Editing (not in Cell)" -msgstr "Mallineen muokkaus" +msgstr "Mallineen muokkaus (ei solussa)" #: lazarusidestrconsts.srkmcattoolmenu msgid "Tools menu commands" @@ -18273,12 +18929,12 @@ msgstr "Arvaa väärin sijoitettu $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" -msgstr "Siirrä kursori puoli sanaa vasemmalle" +msgid "Move cursor part-word left (e.g. CamelCase)" +msgstr "Siirrä kursori osa sanasta vasemmalle (esim. CamelCase)" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" -msgstr "Siirrä kursori puoli sanaa oikealle" +msgid "Move cursor part-word right (e.g. CamelCase)" +msgstr "Siirrä kursori osa sanasta oikealle (esim. CamelCase)" #: lazarusidestrconsts.srkmecimestr msgid "Ime Str" @@ -18389,6 +19045,16 @@ msgid "Invert Assignment" msgstr "Käännä asettaminen" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Vasen" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Oikea" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Siirrä kursori vasemmalle" @@ -18461,6 +19127,10 @@ msgid "Go to next editor" msgstr "Mene seuraavan editoriin" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "Mene seuraavaan editoriin historiassa" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Mene seuraavaan samansisältöiseen editoriin" @@ -18513,6 +19183,30 @@ msgid "pause program" msgstr "keskeytä ohjelma" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "Poista muut tekstikursorit" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "Kursorinäppäimet poistavat muut tekstikursorit" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "Kursorinäppäimet siirtävät muita tekstikursoreita" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "Lisää tekstikursori" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Vaihda tekstikursori" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "Poista tekstikursori" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Edellinen kirjanmerkki" @@ -18521,6 +19215,10 @@ msgid "Go to prior editor" msgstr "Mene edelliselle välilehdelle" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "Mene edelliseen editoriin historiassa" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Mene edelliseen samansisältöiseen editoriin" @@ -18619,12 +19317,12 @@ msgstr "Valitse Goto XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" -msgstr "Valitse puoli sanaa vasemmalle" +msgid "Select part-word left (e.g. CamelCase)" +msgstr "Valitse osa sanasta vasemmalle (esim. CamelCase)" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" -msgstr "Valitse puoli sanaa oikealle" +msgid "Select part-word right (e.g. CamelCase)" +msgstr "Valitse osa sanasta oikealle (esim. CamelCase)" #: lazarusidestrconsts.srkmecselleft msgid "Select Left" @@ -18696,11 +19394,11 @@ #: lazarusidestrconsts.srkmecselwordendleft msgid "Select word-end left" -msgstr "" +msgstr "Valitse sanan loppuun vasemmalle" #: lazarusidestrconsts.srkmecselwordendright msgid "Select word-end right" -msgstr "" +msgstr "Valitse sanan loppuun oikealle" #: lazarusidestrconsts.srkmecselwordleft msgctxt "lazarusidestrconsts.srkmecselwordleft" @@ -19070,10 +19768,22 @@ msgid "Move cursor word right" msgstr "Siirrä kursori sana oikealle" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "Zoomaa sisään" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "Zoomaa ulos" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Muokkaa komennon näppäimiä" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "Jatka seuraavalla hiiri-ylös toiminnolla" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Laskosta kommentit" @@ -19106,6 +19816,26 @@ msgid "Hide comments in selection" msgstr "Piilota valinnan kommentit" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "Etsi kaikki hiiri-alas toiminnot" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Poista aktiivisen Ifdef:in laskostus" @@ -19215,7 +19945,7 @@ #: lazarusidestrconsts.uemencoding msgid "Encoding" -msgstr "Merkistökoodaus" +msgstr "Merkkikoodaus" #: lazarusidestrconsts.uemevaluatemodify msgid "&Evaluate/Modify ..." diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.fr.po lazarus-1.6+dfsg/languages/lazaruside.fr.po --- lazarus-1.4.4+dfsg/languages/lazaruside.fr.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.fr.po 2016-02-06 14:51:17.000000000 +0000 @@ -3,14 +3,14 @@ "Project-Id-Version: lazaruside\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-05-14 21:22+0100\n" -"Last-Translator: Yann Mérignac <yann.merignac@laposte.net>\n" +"PO-Revision-Date: 2016-01-25 17:52+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: lazarusidestrconsts.dbgbreakgroupdlgcaption @@ -78,6 +78,10 @@ msgid "History forward" msgstr "Historique en avant" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "Inverser le curseur supplémentaire" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -161,6 +165,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Étendu, actions (point d'arrêt, pliage) sur fin de clic. Sélection sur clic et déplacement" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "Étendu, actions, seulement sur la moitié de gouttière à droite" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "Utiliser les numéros de lignes pour choisir les lignes" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -382,6 +394,10 @@ msgid "Lowercase, first letter up" msgstr "Minuscules, première lettre en majuscule" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "actif" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Ajouter l'opérateur d'affectation :=" @@ -545,10 +561,6 @@ msgid "Adjust top line due to comment in front" msgstr "Ajuster la ligne supérieure au commentaire qui précède" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Tous les fichiers" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Par ordre alphabétique" @@ -590,8 +602,8 @@ msgstr "L'unité principale \".lpr\" crée toutes les fiches grâce à \"Application.CreateForm()\". Elles sont aussi libérées automatiquement." #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" -msgstr "Ajouter les nouvelles fiches à celles créées automatiquement" +msgid "Auto-create new forms" +msgstr "Créer automatiquement les nouvelles fiches" #: lazarusidestrconsts.dlgautodel msgid "Auto delete file" @@ -627,6 +639,18 @@ msgid "Auto rename file lowercase" msgstr "Renommer automatiquement les fichiers en minuscules" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "Sauvegarde automatique du bureau actif" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" +"Sauvegarder le bureau actif à la fermeture de l'EDI\n" +"Sauvegarder le bureau de débogage à la fermeture de l'EDI et en fin de débogage\n" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Fiches disponibles :" @@ -704,6 +728,10 @@ msgid "Matching bracket pairs" msgstr "Parenthèses appariées" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "Vous ne pouvez pas utiliser un bureau ancré dans un environnement non ancré et vice versa." + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1041,11 +1069,6 @@ msgid "Config files" msgstr "Fichiers de configuration" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Autre " - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Autres informations de débogage" @@ -1067,6 +1090,7 @@ msgstr "Copier le mot si rien à copier" #: lazarusidestrconsts.dlgcorange +msgctxt "lazarusidestrconsts.dlgcorange" msgid "Range" msgstr "Intervalle" @@ -1179,9 +1203,9 @@ msgid "User defined extension (.pp.xxx)" msgstr "Extension utilisateur (\".pp.xxx\")" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" -msgstr "Fichiers DCI (\"*.dci\")" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" +msgstr "débogage" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption msgid "Path Editor" @@ -1203,18 +1227,10 @@ msgid "Delete template " msgstr "Supprimer le modèle de code" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Bureau" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Boutons - " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Fichiers du bureau" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Conseils" @@ -1223,6 +1239,18 @@ msgid "Menus - " msgstr "Menus - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "Nom du bureau" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "%d bureau(x) exporté(s) avec succès vers \"%s\"" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "%d bureau(x) importé(s) avec succès depuis \"%s\"" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Sens" @@ -1535,6 +1563,134 @@ msgid "%s files" msgstr "%s fichiers" +#: lazarusidestrconsts.dlgfilterall +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Tous les fichiers" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "Fichier modèle d'outils de code" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "Fichier DCI" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "Fiche Delphi" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Paquet Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Projet Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Unité Delphi" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Exécutable" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "Fichier de messages FPC" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "Fichiers HTML" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "Images Bitmap" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "Images Pixmap" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "Images PNG" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Paramètres du bureau Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Types de fichiers de l'éditeur" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Fichier Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Fiche Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Fichier d'inclusion Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Autre fichier Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Paquet Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Projet Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Code source du projet Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "Session Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Unité Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Fichier Pascal" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programmes" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Fichiers XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Chercher le texte sous le curseur" @@ -1698,6 +1854,10 @@ msgid "Processing Instruction" msgstr "Instruction de traitement" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "L'instance en cours de Lazarus ne peut pas accepter un quelconque fichier." + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Avant-plan" @@ -1734,11 +1894,6 @@ msgid "&From cursor" msgstr "Depuis le &curseur" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Op&tions" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Lire la position" @@ -1755,6 +1910,10 @@ msgid "Grabber color" msgstr "Couleur d'accroche" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "Les bureaux grisées sont pour un environnement non ancré." + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Couleur de la grille" @@ -1936,9 +2095,13 @@ msgid "Included mixed state $IFDEF node" msgstr "État \"$IFDEF\" mélangé (nœud)" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignorer" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" +"Un bureau portant le même nom existe déjà.\n" +"Veuillez confirmer le nom du bureau :\n" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2046,12 +2209,16 @@ msgstr "Niveau 1 (rapide avec débogueur convivial)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" -msgstr "Niveau 2 (optimisations rapides)" +msgid "2 (-O1 + quick optimizations)" +msgstr "2 (-O1 + optimisations rapides)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" -msgstr "Niveau 3 (optimisations lentes)" +msgid "3 (-O2 + slow optimizations)" +msgstr "3 (-O2 + optimisations lentes)" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "4 (-O3 + optimisations agressives - se méfier)" #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" @@ -2069,10 +2236,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Afficher les numéros des lignes dans les traces d'erreurs à l'exécution" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Charger les paramètres du bureau" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Menu principal" @@ -2094,6 +2257,10 @@ msgid "\"Make\" executable" msgstr "Programme \"Make\"" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "Gestion des bureaux" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Marge et gouttière" @@ -2456,6 +2623,10 @@ msgid "Gutter" msgstr "Gouttière" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "Changements de ligne" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Arbre de pliage" @@ -2508,6 +2679,95 @@ msgid "Messages" msgstr "Messages" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Déboguer" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Erreur" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "Fatal" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Conseil" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Important" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "Normal" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "Note" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "Panique" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "Heure et statistiques" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "Verbeux" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "Verbosité 2" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "Verbosité 3" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Avertissement" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "Les curseurs multiples (sélection de colonne) se déplacent avec le curseur principal" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "Les curseurs multiples se déplacent avec le curseur principal" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "Activer les curseurs multiples pour la sélection de colonne" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "Plusieurs instances de Lazarus" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "toujours démarrer une nouvelle instance" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "ne pas autoriser plusieurs instances" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "ouvrir les fichiers dans l'instance en cours" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Multisélection" @@ -2544,6 +2804,10 @@ msgid "Naming" msgstr "Nommage" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "Nouveau bureau..." + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Pas de renommage automatique" @@ -2582,11 +2846,6 @@ msgid "Miscellaneous" msgstr "Divers" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Options" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Configuration rapide" @@ -2615,6 +2874,14 @@ msgid "Overwrite block" msgstr "Écraser le bloc" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" +"Un bureau portant le nom \"%s\" a été trouvé.\n" +"L'ancien bureau doit-il être remplacé ?\n" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Conseils pour la palette de composants" @@ -2797,8 +3064,8 @@ msgstr "Nom de propriété" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" -msgstr "Ouvrir le dernier projet au démarrage" +msgid "Open last project and packages at start" +msgstr "Ouvrir les derniers projet et paquets au démarrage" #: lazarusidestrconsts.dlgqshowborderspacing msgid "Show border spacing" @@ -2812,6 +3079,10 @@ msgid "Snap to grid" msgstr "Aligner sur la grille" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "Voulez-vous vraiment supprimer le bureau \"%s\" ?" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Référence" @@ -2820,6 +3091,10 @@ msgid "Regular e&xpressions" msgstr "&Expressions régulières" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "Renommer le bureau" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "&Remplacer tout" @@ -2861,6 +3136,22 @@ msgid "Rubberband Selection" msgstr "Sélection de code" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" +"L'instance en cours de Lazarus ne peut pas accepter un quelconque fichier.\n" +"Voulez-vous en ouvrir grâce à une nouvelle instance ?\n" +"\n" +"%s\n" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "L'instance de Lazarus est en cours d'exécution, mais ne répond pas." + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Affichage (pas pour Win32 ; par exemple : 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2890,9 +3181,9 @@ msgid "Run Parameters" msgstr "Paramètres d'exécution" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Enregistrer les paramètres du bureau" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "Enregistrer le bureau courant sous..." #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2963,6 +3254,10 @@ msgid "&Selected text" msgstr "&Texte sélectionné" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "Rendre actif" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Réinitialiser tous les éléments" @@ -2975,6 +3270,26 @@ msgid "Set property Variable" msgstr "Variable d'affectation" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "Le nom du paramètre pour la procédure \"setter\" par défaut." + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "est un préfixe" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "Si coché, \"Set property variable\" est un préfixe. Sinon, il s'agit d'un nom fixe." + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "utiliser \"const\"" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "Si coché, le paramètre \"setter\" est marqué avec \"const\"." + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Voir toutes les unités" @@ -3098,6 +3413,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "Quand un contrôle est presque aligné avec un autre contrôle, il s'aligne sur sa position." +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "Tabulations lignes multiples" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3199,6 +3518,11 @@ msgid "&Text to find" msgstr "&Texte à chercher" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "Basculer en bureau de débogage" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Conseil sur Classe/Procédure courante" @@ -3452,7 +3776,7 @@ #: lazarusidestrconsts.histdlgbtnenablehint msgid "Toggle view snapshot or current" -msgstr "Inverser l'affichage (instantané ou actuel)" +msgstr "Inverser l'affichage (instantané ou en cours)" #: lazarusidestrconsts.histdlgbtnmakesnaphint msgid "Take Snapshot" @@ -3572,6 +3896,10 @@ msgid "File not unit" msgstr "Le fichier n'est pas une unité" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "Icône (24x24 maximum) :" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Type d'ancêtre incorrect" @@ -3617,6 +3945,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Pas de paquet trouvé pour la dépendance \"%s\".%sVeuillez choisir un paquet existant." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "Paquet/Projet" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Nom de page trop long" @@ -3745,6 +4077,11 @@ msgid "Abandon changes?" msgstr "Voulez-vous annuler les changements ?" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Abandon" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Tout arrêter" @@ -3788,7 +4125,7 @@ #: lazarusidestrconsts.lisaboutlazarusmsg msgid "License: GPL/LGPL. See Lazarus and Free Pascal sources for license details.%sLazarus is an IDE to create graphical and console applications with Free Pascal. Free Pascal is Pascal and Object Pascal compiler that runs on Windows, Linux, Mac OS X, FreeBSD and more.%sLazarus is the missing part of the puzzle that will allow you to develop programs for all of the above platforms in a Delphi like environment. The IDE is a RAD tool that includes a form designer.%sAs Lazarus is growing we need more developers." -msgstr "License : GPL/LGPL. Voir les sources Lazarus et Free Pascal pour les détails de la licence.%sLazarus est un EDI (Environnement de Développement Intégré) qui permet de créer des applications (graphiques et consoles) avec Free Pascal. Ce dernier est un compilateur Pascal et Pascal Objet fonctionnant sous Windows, Linux, Mac OS X, FreeBSD et autres.%sLazarus est le chaînon manquant pour le développement d'applications multiplateformes dans un environnement proche de celui de Delphi, mais non limité à Windows. À l'image de Delphi, cet EDI est un outil de \"Développement Rapide d'Applications\" (ou \"RAD\" en anglais) doté d'un concepteur de fiches.%sComme le projet Lazarus est en pleine expansion, nous avons besoin de développeurs plus nombreux." +msgstr "License : GPL/LGPL. Voir les sources Lazarus et Free Pascal pour les détails de la licence.%sLazarus est un EDI (Environnement de Développement Intégré) qui permet de créer des applications graphiques et consoles avec Free Pascal. Ce dernier est un compilateur Pascal et Pascal Objet fonctionnant sous Windows, Linux, Mac OS X, FreeBSD et autres.%sLazarus est le chaînon manquant pour le développement d'applications multiplateformes dans un environnement proche de celui de Delphi, mais non limité à Windows. À l'image de Delphi, cet EDI est un outil de \"Développement Rapide d'Applications\" (ou \"RAD\" en anglais) doté d'un concepteur de fiches.%sComme le projet Lazarus est en pleine expansion, les nouveaux développeurs sont les bienvenus ." #: lazarusidestrconsts.lisaboutnocontributors msgid "Cannot find contributors list." @@ -3855,6 +4192,14 @@ msgid "Added property \"%s\" for %s." msgstr "Propriété \"%s\" ajoutée pour %s." +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "Ajouter -FcUTF8" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "Peut être nécessaire si les fichiers source contiennent des littéraux non Ansi." + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Ajouter les fichiers du répertoire" @@ -3897,7 +4242,7 @@ #: lazarusidestrconsts.lisaddpackagestolistofinstalledpackagescombinewithbui msgid "add package(s) to list of installed packages (combine with --build-ide to rebuild IDE)." -msgstr "ajouter le(s) paquet(s) à la liste des paquets installés (combiner avec \"--build-ide\" pour reconstruire l'EDI)" +msgstr "ajouter le(s) paquet(s) à la liste des paquets installés (combiner avec \"--build-ide\" pour reconstruire l'EDI)." #: lazarusidestrconsts.lisaddpackagetoproject msgid "Add package %s to project?" @@ -3920,6 +4265,10 @@ msgid "&Address Breakpoint ..." msgstr "&Adresse du point d'arrêt..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "Ajouter >>" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "Ajouter au chemin de recherche des fichiers inclus ?" @@ -3928,6 +4277,10 @@ msgid "Add %s to project?" msgstr "Voulez-vous ajouter %s au projet?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "A ajouter aux composants de démarrage ?" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "Ajouter au chemin de recherche des unités ?" @@ -3956,10 +4309,6 @@ msgid "File type" msgstr "Type de fichier" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Possède une procédure \"Register\"" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Paquet incorrect" @@ -3981,19 +4330,10 @@ msgid "Show all" msgstr "Tout afficher" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Le fichier \"%s\"%sest déjà dans le paquet %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Le paquet %s est en lecture seule." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Nom d'unité : " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "Le fichier \"%s\" existe déjà. %sVoulez-vous le remplacer ?" @@ -4018,10 +4358,6 @@ msgid "<All build modes>" msgstr "<Tous les mode de création>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Tous les fichiers" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Toutes les options héritées" @@ -4139,7 +4475,7 @@ msgstr "Ancrer le haut au haut du frère. Utilisez \"BorderSpacing\" pour définir la distance. Le \"BorderSpacing\" du frère est ignoré." #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Une erreur est survenue durant le démarrage précédent pendant le chargement de \"%s\" !%sVoulez-vous charger ce projet à nouveau ?" #: lazarusidestrconsts.lisapplicationclassname @@ -4199,6 +4535,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Un paramètre utile pour les systèmes Windows est : \"$(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe\"" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "Ajuster automatiquement la hauteur de la fenêtre principale de l'EDI" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "Montrer la palette des composants entière" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "Si la palette de composants s'étend sur plus de lignes, tous les montrer et non pas un seul." + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Complétion automatique inactive" @@ -4256,6 +4604,10 @@ msgid "do not add character" msgstr "ne pas ajouter de caractère" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "Utiliser automatiquement un identificateur possible unique" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Complétion et conseils" @@ -4266,7 +4618,7 @@ #: lazarusidestrconsts.lisavailableforinstallation msgid "Available for installation" -msgstr "Disponible pour l'installation" +msgstr "Disponibles pour l'installation" #: lazarusidestrconsts.lisavailableprojectbuildmodes msgid "Available project build modes:" @@ -4344,6 +4696,11 @@ msgid "Border space" msgstr "Espace de bordure" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Bas" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "L'espace inférieur de bordure. Cette valeur est ajoutée à l'espace de bas de bordure et employée pour l'espace au-dessous de la commande." @@ -4454,6 +4811,10 @@ msgid "Building Lazarus failed" msgstr "La création de Lazarus a échoué" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "Mode de construction : %s" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Différences entre les modes de création" @@ -4918,7 +5279,7 @@ msgstr "Mauvaise indentation" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Une exception s'est produite lors de la suppression de%s\"%s :%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5119,7 +5480,7 @@ #: lazarusidestrconsts.lischeckuncheckall msgid "Check/uncheck all" -msgstr "" +msgstr "Tout cocher/décocher" #: lazarusidestrconsts.lischooseadifferentname msgid "Choose a different name" @@ -5153,6 +5514,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Choisir un fichier Pascal pour des exemples d'indentation" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "Insérer une nouvelle méthode à la section" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "Choisir l'exécutable du compilateur (%s)" @@ -5181,6 +5546,10 @@ msgid "Choose directory" msgstr "Choisir le répertoire" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "Choisir un exécutable" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Choisir le répertoire des codes sources de FPC" @@ -5335,9 +5704,9 @@ msgid "Click here to browse the file" msgstr "Cliquez ici pour parcourir le fichier" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Cliquez pour voir les utilisations possibles" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "Cliquez pour voir les choix" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5406,6 +5775,10 @@ msgid "Pages" msgstr "Pages" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "La palette est &visible" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "&Valeurs par défaut" @@ -5994,10 +6367,6 @@ msgid "Symbol" msgstr "Symbole" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "Fichier modèle d'outils de code" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Exécuter après" @@ -6152,7 +6521,7 @@ #: lazarusidestrconsts.liscomppalopenpackage msgid "Open package" -msgstr "Ouvrir un paquet" +msgstr "Ouvrir le paquet" #: lazarusidestrconsts.liscomppalopenunit msgid "Open unit" @@ -6188,6 +6557,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Configurer la création de Lazarus" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "Configurer la barre d'outils" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Configurer l'EDI de Lazarus" @@ -6629,6 +7002,166 @@ msgid "User selected to end conversion with file %s" msgstr "Utilisateur choisi pour terminer la conversion avec le fichier %s" +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "Ajouter/Configurer/Supprimer une/des barre(s) d'outils" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "Ajouter un diviseur" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "Ajouter l'élément sélectionné à la barre d'outils" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "Commandes disponibles" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "Style de bordure des barres d'outils" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Aucun" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Simple" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "Effacer la sélection" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Explorateur de code" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Modèles de code" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "&Configurer" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "Voulez-vous vraiment supprimer la barre d'outils sélectionnée ?" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "Il doit y avoir au moins une barre d'outils !" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "Concepteur" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "Paramètres généraux des barres d'outils" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "Style de saisie d'une barre d'outils" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "Simple" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Double" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "Lignes horizontales" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "Lignes verticales" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "Pince" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Bouton" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "Largeur de saisie" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "Menu principal de l'EDI" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Messages" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "Déplacer l'élément choisi de la barre d'outils vers le bas" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "Déplacer l'élément choisi de la barre d'outils vers le haut" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "Barre de l'EDI" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "Éditeur de paquet" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "Fichiers de l'éditeur de paquet" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "Retirer l'élément sélectionné de la barre d'outils" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "Valeurs par défaut" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "Veuillez d'abord sélectionner une barre d'outils !" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Éditeur de source" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "Onglet Source" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "Commandes de la barre d'outils" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "La barre est &visible" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "Largeur des barres d'outils" + #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" msgid "Copy" @@ -6760,7 +7293,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "Créer les modes débogage et version finale" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -6905,6 +7438,10 @@ msgid "Custom options" msgstr "Options personnalisées" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "Options personnalisées" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Programme personnalisé" @@ -7406,22 +7943,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "Ressources compatibles avec Delphi. Recommandées." -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Paquet Delphi" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Projet Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Unité Delphi" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "Les paquets de conception ajoutent des composants et des éléments de menu à l'EDI. Ils peuvent être utilisés par les projets, mais ne sont pas compilés dans le projet. Le compilateur ne trouvera pas les unités de ce paquet lors de la compilation du projet." +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "Bureaux..." + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Répertoire de destination" @@ -7643,6 +8172,11 @@ msgid "Import ..." msgstr "Importer..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "Plus..." + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7661,6 +8195,10 @@ msgid "Do not change" msgstr "Ne pas modifier" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "%sNe pas vérifier si une autre instance de l'EDI est en cours d'exécution" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Ne pas fermer le projet " @@ -7786,6 +8324,10 @@ msgid "Duplicate Unit" msgstr "Unité dupliquée" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "Unité dupliquée \"%s\" dans \"%s\"" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7811,14 +8353,22 @@ msgid "Editor Colors" msgstr "Couleurs de l'éditeur" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Types de fichiers de l'éditeur" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Macros de l'éditeur" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "Éditeur de barre d'outils" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "Paramètres de l'éditeur de la barre d'outils" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "L'éditeur de la barre d'outils est &visible" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Charger un schéma" @@ -7921,6 +8471,10 @@ msgid "Working Directory:" msgstr "Répertoire de travail :" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "Augmenter la priorité du message afin de toujours le montrer (par défaut, sa priorité est basse)" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8130,9 +8684,7 @@ msgstr "Erreur dans le \"répertoire de sortie de l'unité\" :" #: lazarusidestrconsts.liserrorinvalidbuildmode -#, fuzzy -#| msgid "Error: (lazarus) invalid build mode \"%s\"" -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "Erreur : mode de construction \"%s\" incorrect" #: lazarusidestrconsts.liserrorloadingfile @@ -8233,6 +8785,10 @@ msgid "Save Events to File" msgstr "Sauver les événements dans un fichier" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "Insérer de nouvelles méthodes d'événements à la section" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Ajouter un commentaire..." @@ -8273,10 +8829,6 @@ msgid "Exclude filter" msgstr "Filtre d'exclusion" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Exécutable" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "l'exécutable \"%s\" est un répertoire" @@ -8297,10 +8849,6 @@ msgid "Execution stopped" msgstr "Exécution interrompue" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programmes" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8335,14 +8883,27 @@ msgid "Export" msgstr "Exporter" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "Tout exporter" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "Exporter tous les éléments vers le fichier" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "Exporter les options d'environnement" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Exporter en HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "Exporter / Importer" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Liste d'exportation" @@ -8351,6 +8912,14 @@ msgid "Export package list (*.xml)" msgstr "Exporter la liste des paquets (\"*.xml\")" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "Exporter le sélectionné" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "Exporter >>" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Expression :" @@ -8571,7 +9140,7 @@ #: lazarusidestrconsts.lisfileshasregisterprocedureinpackageusessection msgid "Files: %s, has Register procedure: %s, in package uses section: %s" -msgstr "Fichiers : %s, a une procédure \"Register \" : %s, dans la section \"uses\" du paquet %s" +msgstr "Fichiers : %s - avec procédure \"Register \" : %s - dans la section \"uses\" du paquet : %s" #: lazarusidestrconsts.lisfileshaverightencoding msgid "*** All found files already have the right encoding ***" @@ -8769,10 +9338,6 @@ msgid "fpcmake failed" msgstr "\"fpcmake\" a échoué" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "Fichier de messages FPC" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "Fichier de messages FPC :" @@ -8934,7 +9499,7 @@ #: lazarusidestrconsts.lisgotoselected msgid "Goto selected" -msgstr "" +msgstr "Aller au sélectionné" #: lazarusidestrconsts.lisgplnotice msgid "" @@ -8975,6 +9540,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sIl y a %d groupes vides en plus. Voulez-vous tout supprimer ?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "Regrouper automatiquement les variables locales définies" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Le nom du groupe ne peut pas être vide. Voulez-vous effacer le(s) groupe(s) de points d'arrêt?" @@ -9007,6 +9576,10 @@ msgid "Has Help" msgstr "Comprend une aide" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "Couleurs des en-têtes" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Commentaire d'en-tête pour la classe" @@ -9099,7 +9672,7 @@ #: lazarusidestrconsts.lishinttoggleformunit msgid "Toggle Form/Unit" -msgstr "Commutation Fiche/Unité" +msgstr "Commuter Fiche/Unité" #: lazarusidestrconsts.lishintviewforms msgid "View Forms" @@ -9131,7 +9704,7 @@ #: lazarusidestrconsts.lishofpcdochtmlpath msgid "FPC Doc HTML Path" -msgstr "Chemin FPC Doc HTML" +msgstr "Chemin HTML de la doc de FPC" #: lazarusidestrconsts.lishorizontal msgid "Horizontal" @@ -9146,15 +9719,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Ajouter" - -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Ouvrir" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "Ajout" + +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "Ouverture en cours" #: lazarusidestrconsts.liside msgid "IDE" @@ -9170,7 +9741,7 @@ #: lazarusidestrconsts.lisideconficurationfoundmaybelongtootherlazarus msgid "Welcome to Lazarus.%0:sThe IDE configuration found was previously used by another installation of Lazarus.%0:sIf you have two or more separate installations of Lazarus, they should not share the same configuration. This may lead to conflicts, and your Lazarus installations may become unusable.%0:s%0:sIf you have only one installation and copied or moved the Lazarus executable, then you may upgrade this configuration.%0:s%1:s%0:s%0:sChoose:%0:s%0:s* Update info: Use this configuration and update it for being used with this Lazarus in future. The old installation will no longer use this.%0:s* Ignore: Use this configuration, but keep the warning. This may lead to conflicts with the other installation.%0:s* Abort: Exit now. You can then fix the problem by starting this Lazarus with the correct configuration.%0:s%0:sAdditional information:%0:sThis configuration is at: %2:s%0:sIt belongs to the Lazarus installation at: %3:s%0:sThe current IDE was started from: %4:s%0:s" -msgstr "Bienvenue dans Lazarus%0:sLa configuration trouvée de l’EDI a déjà été utilisée par une autre installation de Lazarus.%0:sSi vous avez plusieurs installations distinctes de Lazarus, elles ne doivent pas partager la même configuration. Cette situation peut conduire à des conflits et vos installations Lazarus peuvent en devenir inutilisables.%0:s%0:sSi vous n'avez qu'une seule installation et que vous avez copié ou déplacé le fichier exécutable Lazarus, vous pouvez mettre à jour cette configuration.%0:s%1:s%0:s%0:sChoisissez :%0:s%0:s* Mettre à jour : utilisez cette configuration et la mettre à jour pour être utilisée avec Lazarus à l'avenir. L'ancienne installation ne l’utilisera plus.%0:s* Ignorer : utilisez cette configuration, mais garder l'avertissement. Cela peut conduire à des conflits avec l'autre installation.%0:s* Abandon : quitter maintenant. Vous pouvez alors régler le problème en démarrant Lazarus avec la configuration correcte.%0:s%0:sInformations complémentaires :%0:scette configuration se trouve dans %2:s%0:sElle appartient à l'installation Lazarus qui se trouve dans %3:s%0:sL'EDI actuel a démarré depuis : %4:s%0:s" +msgstr "Bienvenue dans Lazarus%0:sLa configuration trouvée de l’EDI a déjà été utilisée par une autre installation de Lazarus.%0:sSi vous avez plusieurs installations distinctes de Lazarus, elles ne doivent pas partager la même configuration. Cette situation peut conduire à des conflits et vos installations Lazarus peuvent en devenir inutilisables.%0:s%0:sSi vous n'avez qu'une seule installation et que vous avez copié ou déplacé le fichier exécutable Lazarus, vous pouvez mettre à jour cette configuration.%0:s%1:s%0:s%0:sChoisissez :%0:s%0:s* Mettre à jour : utiliser cette configuration et la mettre à jour pour être utilisée avec Lazarus à l'avenir. L'ancienne installation ne l’utilisera plus.%0:s* Ignorer : utiliser cette configuration, mais garder l'avertissement. Cela peut conduire à des conflits avec l'autre installation.%0:s* Abandon : quitter maintenant. Vous pouvez alors régler le problème en démarrant Lazarus avec la configuration correcte.%0:s%0:sInformations complémentaires :%0:scette configuration se trouve dans %2:s%0:sElle appartient à l'installation Lazarus qui se trouve dans %3:s%0:sL'EDI actuel a démarré depuis : %4:s%0:s" #: lazarusidestrconsts.lisideinfocreatingmakefileforpackage msgid "Creating Makefile for package %s" @@ -9288,6 +9859,11 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Si vous souhaitez utiliser deux versions différentes de Lazarus, vous devez démarrer le second Lazarus avec le paramètre de ligne de commande \"primary-config-path\" ou \"pcp\".%sPar exemple : " +#: lazarusidestrconsts.lisignore +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignorer" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Tout ignorer" @@ -9304,9 +9880,9 @@ msgid "Ignore this exception type" msgstr "Ignorer ce type d'exception" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ignorer, employer \"TForm\" comme ancêtre " +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "Ignorer et utiliser %s comme ancêtre" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9326,9 +9902,10 @@ msgid "Important" msgstr "Important" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "Importer/Exporter" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "Importer les options d'environnement" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" @@ -9422,6 +9999,10 @@ msgid "Inherited project component" msgstr "Composant du projet hérité" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "Initialiser la variable locale" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "Afin de créer une copie propre du projet/paquet, tous les fichiers du répertoire suivant seront supprimés et tout son contenu sera perdu.%sVoulez-vous supprimer tous les fichiers de \"%s\" ?" @@ -9431,6 +10012,10 @@ msgid "Insert" msgstr "Insérer" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "Insérer l'affectation %s :=..." + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "Insérer la date" @@ -9564,12 +10149,16 @@ #: lazarusidestrconsts.lisinstalluninstallpackages msgctxt "lazarusidestrconsts.lisinstalluninstallpackages" msgid "Install/Uninstall Packages" -msgstr "Installer/Désinstaller les paquets" +msgstr "Installer/Désinstaller des paquets" #: lazarusidestrconsts.lisinsteadofcompilepackagecreateasimplemakefile msgid "Instead of compile package create a simple Makefile." msgstr "Au lieu de compiler le paquet, créer un \"Makefile\" simple." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "Encodage insuffisant" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Intéractif" @@ -9586,6 +10175,14 @@ msgid "Invalid delete" msgstr "Effacement incorrect" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "Exécutable incorrect" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "Le fichier \"%s\" n'est pas exécutable." + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Expression incorrecte :%s%s%s%s" @@ -9699,6 +10296,14 @@ msgid "Jump History" msgstr "Historique des sauts" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "Aller à l'erreur" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "Quand une erreur dans les sources se trouve à la complétion d'un identificateur, sauter à elle." + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Aller à la procédure %s" @@ -10302,10 +10907,6 @@ msgid "Lazarus Default" msgstr "Lazarus par défaut" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Paramètres du bureau Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Répertoire de Lazarus" @@ -10318,22 +10919,10 @@ msgid "Lazarus IDE v%s" msgstr "EDI Lazarus v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Fichier Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Fiche Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "EDI Lazarus" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Fichier d'inclusion Lazarus" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Identificateur de langue de Lazarus (par exemple : \"en\", \"de\")" @@ -10346,30 +10935,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [options] <ficher-projet>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Autres fichiers Lazarus" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Paquet Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Projet Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Fichier d'information du projet Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Code source du projet Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Unité Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10667,10 +11232,6 @@ msgid "list of all case values" msgstr "liste de toutes les valeurs de cas" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Succès du chargement" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Le chargement de%s a échoué." @@ -10853,6 +11414,10 @@ msgid "Manage Source Editors ..." msgstr "Gérer les éditeurs de source..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "Nombre maximum de tâches à compiler en parallèle. Le nombre par défaut est 0, ce qui correspond à la recherche du nombre de cœurs du système." + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "Nombre maximum de processus parallèles - 0 signifie \"par défaut\" (%s)" @@ -11278,6 +11843,22 @@ msgid "Jump to Implementation" msgstr "Aller à l'implémentation" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "Aller à la clause \"uses\" de l'implémentation" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "Allez à \"Initialization\"" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "Aller à \"Interface\"" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "Aller à la clause \"uses\" de l'interface" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Aller au signet suivant" @@ -11294,6 +11875,14 @@ msgid "Jump to Previous Error" msgstr "Aller à l'erreur précédente" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "Aller au début de la procédure" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "Aller à l'entête de la procédure" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Sélection en minuscules" @@ -11311,6 +11900,10 @@ msgid "New Component" msgstr "Nouveau composant" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "Nouveau %s" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nouvelle fiche" @@ -11537,6 +12130,10 @@ msgid "S&how Execution Point" msgstr "Montrer le &point d'exécution" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "Astuce intelligente sensible au contexte" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Trier la sélection..." @@ -11715,11 +12312,6 @@ msgid "History" msgstr "Historique" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Boutons rapides de l'EDI" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -11776,7 +12368,7 @@ #: lazarusidestrconsts.lismenuviewtoggleformunit msgid "Toggle Form/Unit View" -msgstr "Commutation Fiche/Unité" +msgstr "Commuter Fiche/Unité" #: lazarusidestrconsts.lismenuviewunitdependencies msgctxt "lazarusidestrconsts.lismenuviewunitdependencies" @@ -12048,6 +12640,14 @@ msgid "Undo last change to this grid" msgstr "Annuler le dernier changement dans cette grille" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "Utiliser l'encodage du système" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "Désactiver le support pour le codage de chaîne UTF-8 par défaut." + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Valeur \"%s\"" @@ -12157,6 +12757,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "Couleurs des messages" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "Les différents répertoires sont séparés par des points-virgules" @@ -12488,11 +13092,11 @@ #: lazarusidestrconsts.lisoipautoinstalldynamic msgid "auto install dynamic" -msgstr "Installation auto-dynamique" +msgstr "installation auto-dynamique" #: lazarusidestrconsts.lisoipautoinstallstatic msgid "auto install static" -msgstr "Installation auto-statique" +msgstr "installation auto-statique" #: lazarusidestrconsts.lisoipdescription msgid "Description: " @@ -12679,6 +13283,11 @@ msgid "Open XML" msgstr "Ouvrir XML" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Options" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Les options ont changé ; nettoyage et recompilation avec -B" @@ -12689,7 +13298,7 @@ #: lazarusidestrconsts.lisos msgid ", OS: %s" -msgstr ", OS : %s" +msgstr "- OS : %s" #: lazarusidestrconsts.lisothersourcespathofpackagecontainsdirectorywhichisa msgid "other sources path of package \"%s\" contains directory \"%s\", which is already in the unit search path." @@ -12741,11 +13350,11 @@ #: lazarusidestrconsts.lispackage3 msgid ", package %s" -msgstr ", paquet %s" +msgstr "- paquet %s" #: lazarusidestrconsts.lispackageinfo msgid "Package info" -msgstr "Informations de paquet" +msgstr "Informations concernant le paquet" #: lazarusidestrconsts.lispackagenamebeginswith msgid "Package name begins with ..." @@ -12777,7 +13386,7 @@ #: lazarusidestrconsts.lispackagesunitsidentifierslinesbytes msgid "packages=%s/%s units=%s/%s identifiers=%s/%s lines=%s bytes=%s" -msgstr "" +msgstr "paquets=%s/%s unités=%s/%s identificateurs=%s/%s lignes=%s octets=%s" #: lazarusidestrconsts.lispackageunit msgid "package unit" @@ -12808,10 +13417,6 @@ msgid "parser \"%s\": %s" msgstr "analyseur \"%s\" : %s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Fichier Pascal" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Nombre de passes" @@ -12829,6 +13434,10 @@ msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "Couleurs pastel" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Chemin" @@ -12903,8 +13512,8 @@ msgid "Disable I18N of lfm" msgstr "Désactiver \"I18N\" du \"lfm\"" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "Ajouter les fichiers depuis le système" #: lazarusidestrconsts.lispckeditaddotheritems @@ -12955,14 +13564,14 @@ #: lazarusidestrconsts.lispckeditdefault msgid "%s, default: %s" -msgstr "%s, par defaut : %s" +msgstr "%s - par défaut : %s" #: lazarusidestrconsts.lispckeditdependencyproperties msgid "Dependency Properties" msgstr "Propriétés de dépendance" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +msgid "Edit general options" msgstr "Éditer les options générales" #: lazarusidestrconsts.lispckeditfileproperties @@ -12973,10 +13582,6 @@ msgid "Install" msgstr "Installer" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Installer le paquet dans l'EDI" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Version maximale incorrecte" @@ -13019,7 +13624,7 @@ #: lazarusidestrconsts.lispckeditpage msgid "%s, Page: %s" -msgstr "%s, Page : %s" +msgstr "%s - Page : %s" #: lazarusidestrconsts.lispckeditreadddependency msgid "Re-Add dependency" @@ -13130,7 +13735,7 @@ #: lazarusidestrconsts.lispckexplinstalled msgctxt "lazarusidestrconsts.lispckexplinstalled" msgid "Installed" -msgstr "Installé" +msgstr "Installés" #: lazarusidestrconsts.lispckexplinstallonnextstart msgid "Install on next start" @@ -13275,7 +13880,7 @@ #: lazarusidestrconsts.lispckwhentheformissavedtheidecanstoreallttranslatestring msgid "When the form is saved, the IDE can store all TTranslateString properties to the package po file. For this you must enable I18N for this package, provide a po output directory and leave this option unchecked." -msgstr "Lorsque la fiche est enregistrée, l'EDI peut stocker toutes les propriétés \"TTranslateString\" dans le fichier \"po\" du paquet . Pour cela, vous devez activer \"I18N\" pour ce paquet, fournir un répertoire de sortie \"po\" et laisser cette option désactivée." +msgstr "Lorsque la fiche est enregistrée, l'EDI peut stocker toutes les propriétés \"TTranslateString\" dans le fichier \".po\" du paquet . Pour cela, vous devez activer \"I18N\" pour ce paquet, fournir un répertoire de sortie \"po\" et laisser cette option désactivée." #: lazarusidestrconsts.lispdabort msgctxt "lazarusidestrconsts.lispdabort" @@ -13423,9 +14028,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Le fichier \"%s\"%s n'est pas actuellement dans le chemin des unités du paquet.%sVoulez-vous ajouter \"%s\" au chemin d'unités ?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Il y a plus de fonctions dans le menu contextuel" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "Davantage de fonctions pour le paquet" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13462,20 +14067,28 @@ msgstr "Unité virtuelle" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" -msgstr "Répertoire du paquet. Le paramètre est l'ID du paquet" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Répertoire du paquet. Le paramètre est l'ID du paquet : par exemple, \"Nom\" ou \"Nom 1.0\"" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" -msgstr "Chemin de recherche des fichiers d'inclusion. Le paramètre est l'ID du paquet" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Chemin de recherche des fichiers d'inclusion. Le paramètre est l'ID du paquet (par exemple : \"Nom\" ou \"Nom 1.0\")" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Nom du paquet. Le paramètre est l'ID du paquet (par exemple, « Nom » ou « Nom 1.0 »)" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Répertoire d'enregistrement des paquets. Le paramètre est l'ID du paquet (par exemple, « Nom » ou « Nom 1.0 »)" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" -msgstr "Chemin de recherche des codes sources du paquet. Le paramètre est l'ID du paquet" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Chemin de recherche des codes sources du paquet. Le paramètre est l'ID du paquet (par exemple : \"Nom\" ou \"Nom 1.0\")" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" -msgstr "Chemin de recherche des unités du paquet. Le paramètre est l'ID du paquet" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Chemin de recherche des unités du paquet. Le paramètre est l'ID du paquet (par exemple : \"Nom\" ou \"Nom 1.0\")" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage msgid "%sAdding new Dependency for package %s: package %s" @@ -13509,9 +14122,9 @@ msgid "Circular dependencies found" msgstr "Références circulaires trouvées" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "Compiler le paquet %s" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13679,6 +14292,14 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Un ou plusieurs paquets sont introuvables. Voir le graphe des paquets pour les détails." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" +"Le paquet \"%s\" est déjà ouvert dans l'EDI.\n" +"Vous ne pouvez pas sauvegarder un paquet portant le même nom.\n" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Voulez-vous enregistrer le paquet ?" @@ -13974,7 +14595,7 @@ #: lazarusidestrconsts.lispkgsysunitwasnotfoundinthelpkfileprobablythislpkfilewasn msgid "Unit \"%s\" was not found in the lpk file.%sProbably this lpk file was not used for building this IDE. Or the package misuses the procedure RegisterUnit." -msgstr "L'unité \"%s\" n'a pas été trouvée dans le fichier \"lpk\".%sIl est possible que ce fichier \"lpk\" n'ait pas été utilisé pour créer cet EDI ou que le paquet fasse un mauvais usage de la procédure \"RegisterUnit\"." +msgstr "L'unité \"%s\" n'a pas été trouvée dans le fichier \"lpk\".%sIl est possible que ce fichier \".lpk\" n'ait pas été utilisé pour créer cet EDI ou que le paquet fasse un mauvais usage de la procédure \"RegisterUnit\"." #: lazarusidestrconsts.lispkgsysunitwasremovedfrompackagelpk msgctxt "lazarusidestrconsts.lispkgsysunitwasremovedfrompackagelpk" @@ -14112,6 +14733,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "\".lpi\" est le fichier principal d'informations du projet ; \".lps\" est un fichier séparé seulement pour les données de la session." +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "Position" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "%s (position hors du code source)" @@ -14237,7 +14862,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La version maximale \"%s\" est incorrecte.%sVeuillez utiliser le format majeure.mineure.sous-version.construction%sPar exemple : 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14247,7 +14872,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La version minimale \"%s\" est incorrecte.%sVeuillez utiliser le format majeure.mineure.sous-version.construction%sPar exemple : 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15049,10 +15674,6 @@ msgid "Save current editor file" msgstr "Enregistrer le fichier d'édition courant" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Enregistré avec succès" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Enregistré avec les paramètres de l'EDI" @@ -15123,6 +15744,10 @@ msgid "Save " msgstr "Enregistrer " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "Sauvegarder le fichier \"%s\" en tant que \"%s\" produit une perte de caractères à la ligne %s, colonne %s." + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Facteur d'ajustement :" @@ -15141,7 +15766,7 @@ #: lazarusidestrconsts.lisscanning2 msgid "%s. Scanning ..." -msgstr "" +msgstr "%s. Parcours..." #: lazarusidestrconsts.lisscanparentdir msgid "Scanning parent directory" @@ -15214,7 +15839,7 @@ #: lazarusidestrconsts.lisselectedforinstallation msgid "selected for installation" -msgstr "Sélectionné pour l'installation" +msgstr "sélectionné pour l'installation" #: lazarusidestrconsts.lisselectedforuninstallation msgid "selected for uninstallation" @@ -15292,6 +15917,10 @@ msgid "Short, no path" msgstr "Court (sans le chemin)" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "Le composant \"%s\" doit-il être auto-créé au démarrage de l'application ?" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Afficher" @@ -15316,6 +15945,10 @@ msgid "Show empty units/packages" msgstr "Montrer les unités/paquets vides" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "Montrer le message FPC \"lignes compilées\"" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "Montrer les glyphes pour " @@ -15473,14 +16106,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Désolé, ce type n'est pas encore implémenté" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "Trier" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "Trier pour la portée" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "Tri en cours" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Croissant" @@ -15687,10 +16320,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Proposer un nom par défaut de nouveau fichier en minuscules" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Chemin d'inclusion suspect" @@ -16344,6 +16973,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Cette instruction ne peut pas être extraite.%sVeuillez sélectionner du code pour en extraire une nouvelle procédure/méthode." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "Cela permettra de changer en une seule fois tous les modes de construction. Pas encore implémenté." + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Cela va créer une dépendance circulaire." @@ -16402,6 +17035,10 @@ msgid "Title (leave empty for default)" msgstr "Titre (laisser vide pour la valeur par défaut)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "Choisir une icône de composant 24x24" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Fonction : ajouter un délimiteur de chemin" @@ -16438,6 +17075,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Commuter l'affichage des noms de fichiers (chemins absolus ou relatifs)" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "Configuration de la barre d'outils" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "Barre d'outils" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "Surligner les boutons des barres d'outils" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "Hisser les barres d'outils" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "l'outil \"%s\" n'a pas d'exécutable associé" @@ -16462,6 +17115,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "Outil arrêté avec le code de sortie %s. Utilisez le menu contextuel pour obtenir plus d'informations." +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Haut" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Ancrage en haut" @@ -16784,6 +17442,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Impossible de convertir les données texte de la fiche du fichier %s\"%s\"%sen flux binaire. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "Impossible de convertir avec l'encodage \"%s\"" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Impossible de copier le fichier" @@ -17538,14 +18200,14 @@ msgid "XML Error" msgstr "Erreur XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Fichiers XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Erreur de l'analyseur \"XML\" dans le fichier %s%sErreur : %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "Oui" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Vous pouvez désactiver ceci pour des fiches individuelles dans l'éditeur de paquets" @@ -17686,10 +18348,6 @@ msgid "Filter the lines in list with a string" msgstr "Filtrer les lignes dans la liste avec une chaîne de caractères" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Fichier de données fiche (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Trouvé mais ne figure pas ici :" @@ -17968,6 +18626,10 @@ msgid "Text marker commands" msgstr "Commandes des marqueurs" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "Commandes multi-curseurs" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Commandes du menu Paquets" @@ -18410,15 +19072,11 @@ msgstr "Deviner les \"$IFDEF\" mal placés" #: lazarusidestrconsts.srkmechalfwordleft -#, fuzzy -#| msgid "Move cursor part-word left (e.g. CamelCase)" -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Déplacer le curseur d'un demi-mot à gauche (ex. : PasMot)" #: lazarusidestrconsts.srkmechalfwordright -#, fuzzy -#| msgid "Move cursor part-word right (e.g. CamelCase)" -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Déplacer le curseur d'un demi-mot à droite (ex. : PasMot)" #: lazarusidestrconsts.srkmecimestr @@ -18530,6 +19188,16 @@ msgid "Invert Assignment" msgstr "Inverser l'affectation" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Gauche" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Droite" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Déplacer le curseur vers la gauche" @@ -18602,6 +19270,10 @@ msgid "Go to next editor" msgstr "Aller à l'éditeur suivant" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "Aller à l'éditeur suivant dans l'historique" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Aller à l'éditeur suivant avec le même code source" @@ -18654,6 +19326,30 @@ msgid "pause program" msgstr "Suspendre le programme" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "Effacer tous les curseurs supplémentaires" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "Les touches du curseur principal effacent tous les autres curseurs" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "Les touches du curseur principal déplacent tous les autres curseurs" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "Ajouter un curseur" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Inverser le curseur supplémentaire" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "Supprimer une curseur supplémentaire" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Signet précédent" @@ -18662,6 +19358,10 @@ msgid "Go to prior editor" msgstr "Aller à l'éditeur précédent" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "Aller à l'éditeur précédent dans l'historique" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Aller au précédent éditeur avec le même code source" @@ -18761,15 +19461,11 @@ msgstr "Sélectionner Aller en XY" #: lazarusidestrconsts.srkmecselhalfwordleft -#, fuzzy -#| msgid "Select part-word left (e.g. CamelCase)" -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "Sélectionner le demi-mot à gauche (ex. : MotPas)" #: lazarusidestrconsts.srkmecselhalfwordright -#, fuzzy -#| msgid "Select part-word right (e.g. CamelCase)" -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "Sélectionner le demi-mot à droite (ex. : PasMot)" #: lazarusidestrconsts.srkmecselleft @@ -19047,7 +19743,7 @@ #: lazarusidestrconsts.srkmectogglebreakpoint msgid "toggle breakpoint" -msgstr "Inverser le point d'arrêt" +msgstr "inverser le point d'arrêt" #: lazarusidestrconsts.srkmectogglebreakpoints msgid "View breakpoints" @@ -19218,10 +19914,22 @@ msgid "Move cursor word right" msgstr "Déplacer le curseur d'un mot à droite" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "Zoomer" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "Dézoomer" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Éditer les touches de commande" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "Continuer avec la prochaine action de bouton de souris relâché" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Replier les commentaires" @@ -19254,6 +19962,26 @@ msgid "Hide comments in selection" msgstr "Cacher les commentaires de la sélection" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "Dernier bouton pressé identique" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "Même ligne de texte que sur clic" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "Mêmes touches modificatrices que sur clic" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "Même action que sur clic à cet endroit" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "Rechercher toutes les actions du bouton de la souris enfoncé" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Déplier les \"Ifdef\" actifs" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.he.po lazarus-1.6+dfsg/languages/lazaruside.he.po --- lazarus-1.4.4+dfsg/languages/lazaruside.he.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.he.po 2016-01-05 13:41:02.000000000 +0000 @@ -77,6 +77,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -164,6 +168,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "מורחב, פעולות (נקודת עצירה, קפול) כשלחצן העכבר למעלה.בחירה כשלחצן העכבר לחוץ והעכבר זז" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -387,6 +399,10 @@ msgid "Lowercase, first letter up" msgstr "אותיות קטנות, אות ראשונה למעלה" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "הוסף אופרטור הצבה :=" @@ -550,10 +566,6 @@ msgid "Adjust top line due to comment in front" msgstr "התאם את הקו העליון להערות בהתחלה" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "כל הקבצים" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "לפי סדר א' ב'" @@ -599,7 +611,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "בזמן יצירת טפסים חדשים הוסף אותם לטפסים הנוצרים אוטומטית." #: lazarusidestrconsts.dlgautodel @@ -638,6 +652,16 @@ msgid "Auto rename file lowercase" msgstr "שנה אוטומטית שם קובץ לאותיות קטנות" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "טפסים זמינים" @@ -719,6 +743,10 @@ msgid "Matching bracket pairs" msgstr "זוגות סוגריים תואמים" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive #, fuzzy #| msgid "&Case Sensitive" @@ -1088,11 +1116,6 @@ msgid "Config files" msgstr "קבצי תצורה:" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "אחר" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1240,8 +1263,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "הרחבה של המשתמש (pp.xxx.)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1264,20 +1287,10 @@ msgid "Delete template " msgstr "מחק תבנית" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "שולחן עבודה" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "לחצנים -" -#: lazarusidestrconsts.dlgdesktopfiles -#, fuzzy -#| msgid "Desktop files" -msgid "Desktop Files" -msgstr "קבצי שולחן עבודה" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "טיפים" @@ -1286,6 +1299,18 @@ msgid "Menus - " msgstr "תפריטים -" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "כיוון" @@ -1370,6 +1395,7 @@ #: lazarusidestrconsts.dlgedcodetempl #, fuzzy #| msgid "Code templates" +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "תבניות קוד" @@ -1608,6 +1634,150 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "כל הקבצים" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "חבילת דלפי" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "פרוייקט דלפי" + +#: lazarusidestrconsts.dlgfilterdelphiunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "יחידת דלפי" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "הגדרות שולחן העבודה של לזארוס" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "סוגי הקבצים של העורך" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +#| msgid "Lazarus File" +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "קובץ לזארוס" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "טופס לזארוס" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "קובץ \"כלול\" של לזארוס" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "חבילת לזארוס" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "פרוייקט לזארוס" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "קובץ קוד של פרוייקט לזארוס" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "יחידת לזארוס" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "תוכנות" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "קבצי XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "מצא טקסט במוקום הסמן" @@ -1771,6 +1941,10 @@ msgid "Processing Instruction" msgstr "הוראת עיבוד" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "קידמה" @@ -1809,11 +1983,6 @@ msgid "&From cursor" msgstr "סמן טפסים" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "אפשרויות" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "השג את המיקום" @@ -1830,6 +1999,10 @@ msgid "Grabber color" msgstr "לוכד צבע" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "צבע הרשת" @@ -2019,9 +2192,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "התעלם" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2136,16 +2311,20 @@ #: lazarusidestrconsts.dlglevel2opt #, fuzzy -#| msgid "Level 2 (Level 1 + quick optimizations)" -msgid "2 (quick optimizations)" +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "רמה 2 (רמה 1 + אופטימיזציה מהירה)" #: lazarusidestrconsts.dlglevel3opt #, fuzzy -#| msgid "Level 3 (Level 2 + slow optimizations)" -msgid "3 (slow optimizations)" +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "רמה 3 (רמה 2 + אופטימיזציה איטית)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt #, fuzzy #| msgid "Level 0 (no extra optimizations)" @@ -2168,10 +2347,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "הצג מספרי שורות בסוגריים של שגיאות בזמן ריצה" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "טען הגדרות שולחן עבודה מקובץ" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "תפריט ראשי" @@ -2199,6 +2374,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "שוליים וקווי עזר" @@ -2363,6 +2542,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "יחיד" @@ -2568,6 +2748,10 @@ msgid "Gutter" msgstr "קוו עזר" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "קפל עץ" @@ -2623,6 +2807,99 @@ msgid "Messages" msgstr "הודעות" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "נפה שגיאות" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "שגיאה" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "טיפ" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "אזהרה" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "בחירה מרובה" @@ -2663,6 +2940,10 @@ msgid "Naming" msgstr "מתן שם" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "ללא מתן שמות אוטומטי" @@ -2705,11 +2986,6 @@ msgid "Miscellaneous" msgstr "שונות" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "אפשרויות" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "הגדרות מהירות" @@ -2742,6 +3018,12 @@ msgid "Overwrite block" msgstr "כתוב על הבלוק הקיים" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "טיפים ללוח הרכיבים" @@ -2951,7 +3233,9 @@ msgstr "שם התכונה" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "פתח את הפרויקט האחרון בהתחלה" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2966,6 +3250,10 @@ msgid "Snap to grid" msgstr "הצמד לקווי הרשת" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "מקור" @@ -2976,6 +3264,10 @@ msgid "Regular e&xpressions" msgstr "ביטוי רגולרי" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "החלף הכל" @@ -3021,6 +3313,18 @@ msgid "Rubberband Selection" msgstr "בחירת סרגל גמיש" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "תצוגה (לא עבור win32, למשל 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -3052,9 +3356,9 @@ msgid "Run Parameters" msgstr "הרץ פרמטרים" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "שמור הגדרות שולחן עבודה לקובץ" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3132,6 +3436,10 @@ msgid "&Selected text" msgstr "ה&טקסט שנבחר" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "קבע את כל האלמנטים לברירת המחדל" @@ -3144,6 +3452,26 @@ msgid "Set property Variable" msgstr "קבע את משתנה התכונות" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3273,6 +3601,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3380,6 +3712,11 @@ msgid "&Text to find" msgstr "טקסט לחיפוש" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3784,6 +4121,10 @@ msgid "File not unit" msgstr "הקובץ אינו יחידה" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "סוג קדום לא מוכר" @@ -3833,6 +4174,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "לא נמצאה חבילה עבור התלות s%.s%s%s%. בחר חבילה קיימת." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "שם הדף ארוך מידי" @@ -3997,6 +4342,12 @@ msgid "Abandon changes?" msgstr "לזנוח שינויים ?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "בטל" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "בטל הכל" @@ -4111,6 +4462,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -4177,6 +4536,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4185,6 +4548,10 @@ msgid "Add %s to project?" msgstr "להוסיף את %s לפרויקט ?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4219,10 +4586,6 @@ msgid "File type" msgstr "סוג הקובץ" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "פרוצדורת רישום קיימת" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "חבילה שגויה" @@ -4250,24 +4613,11 @@ msgid "Show all" msgstr "הצג הכל" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -#, fuzzy,badformat -#| msgid "The file %s%s%s%sis already in the package %s." -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "הקובץ s%s%s% כבר נמצא בחבילה s%." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly #, fuzzy,badformat msgid "The package %s is read only." msgstr "החבילה s% היא לקריאה בלבד." -#: lazarusidestrconsts.lisaf2punitname -#, fuzzy -#| msgid "Unit Name: " -msgid "Unit name: " -msgstr "שם יחידה:" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4296,10 +4646,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "כל הקבצים" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "כל האפשרויות שעברו בהורשה" @@ -4426,7 +4772,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "ארעה שגיאה באיתחול האחרון בזמן טעינת s!%s%s%. האם לטעון את הפרוייקט שוב?" #: lazarusidestrconsts.lisapplicationclassname @@ -4488,6 +4834,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "השלמה אוטומטית: כבה" @@ -4545,6 +4903,10 @@ msgid "do not add character" msgstr "אל תוסיף תו" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures #, fuzzy #| msgid "Automatic features" @@ -4643,6 +5005,12 @@ msgid "Border space" msgstr "מרווח גבול" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "תחתית" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "רווח תחתון. רווח זה מתווסף לרווח הבסיסי של הפקד." @@ -4753,6 +5121,10 @@ msgid "Building Lazarus failed" msgstr "בניית לזארוס נכשלה" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "הבדלים בין אופני בניה" @@ -5023,6 +5395,7 @@ msgstr "תוווים מיוחדים" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "אזהרה" @@ -5253,7 +5626,7 @@ msgstr "הזחה שגויה" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "קרתה חריגה בזמן הסרת %s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5504,6 +5877,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "בחר קובץ פסקל עבור דוגמאות זיהוי" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5532,6 +5909,10 @@ msgid "Choose directory" msgstr "בחר ספרייה" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "בחר את ספריית קוד המקור של FPC" @@ -5690,9 +6071,9 @@ msgid "Click here to browse the file" msgstr "לחץ כאן בשביל לצפות בקובץ" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "הקלק כדי לראות את השימושים האפשריים" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5763,6 +6144,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6386,10 +6771,6 @@ msgid "Symbol" msgstr "סמל" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "בצע אחרי" @@ -6593,6 +6974,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "הגדר ובנה את לזארוס" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -7032,16 +7417,185 @@ msgid "Unit names in uses section of a source unit" msgstr "שמות היחידות בסעיף \"משתמש ב\" של יחידת הקוד" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" -msgstr "יחידות להחלפה" +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "יחידות להחלפה" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "תכונות לא ידועות" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "ללא" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "יחיד" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "סייר קוד" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +#| msgid "Code templates" +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "תבניות קוד" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "כפול " + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "לחצן" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "הודעות" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "עורך קוד מקור" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" -msgstr "תכונות לא ידועות" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7349,6 +7903,10 @@ msgid "Custom options" msgstr "אפשרויות מותאמות אישית" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "תכנית של המשתמש" @@ -7547,9 +8105,10 @@ msgstr "נטרל/אפשר עידכון של כל החלון" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "נפה שגיאות" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7871,22 +8430,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "חבילת דלפי" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "פרוייקט דלפי" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "יחידת דלפי" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "תיקיית היעד" @@ -8125,6 +8676,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -8145,6 +8701,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "אל תסגור את הפרוייקט" @@ -8274,6 +8834,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8299,14 +8863,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "סוגי הקבצים של העורך" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8409,6 +8981,10 @@ msgid "Working Directory:" msgstr "ספריית העבודה:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8627,7 +9203,7 @@ msgstr "שגיאה בתיקיית הפלט של היחידה:" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8738,6 +9314,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8783,10 +9363,6 @@ msgid "Exclude filter" msgstr "אל תכלול מסנן" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8807,10 +9383,6 @@ msgid "Execution stopped" msgstr "הריצה נעצרה" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "תוכנות" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8847,14 +9419,27 @@ msgid "Export" msgstr "ייצא ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "ייצא רשימה" @@ -8863,6 +9448,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "ביטוי:" @@ -8939,6 +9532,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -9298,10 +9892,6 @@ msgid "fpcmake failed" msgstr "fpcmake נכשל" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9503,6 +10093,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9535,6 +10129,10 @@ msgid "Has Help" msgstr "יש לו עזרה" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "הערת כותרת למחלקה" @@ -9587,6 +10185,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "טיפ" @@ -9676,17 +10275,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "הוסף" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "פתח" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9822,6 +10417,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "התעלם" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "התעלם מהכל" @@ -9838,9 +10439,9 @@ msgid "Ignore this exception type" msgstr "התעלם מסוג חריגות זה" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "התעלם, השתמש ב TForm כמחלקה הראשונית" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9856,11 +10457,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9959,6 +10562,10 @@ msgid "Inherited project component" msgstr "רכיב מורש של הפרוייקט" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil #, fuzzy #| msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%s%sDelete all files in %s%s%s?" @@ -9970,6 +10577,10 @@ msgid "Insert" msgstr "הכנס" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "הכנס תאריך" @@ -10111,6 +10722,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "במקום חבילה מהודרת צור קובץ Makefile פשוט." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "אינטראקטיבי" @@ -10127,6 +10742,14 @@ msgid "Invalid delete" msgstr "מחיקה לא חוקית" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression #, fuzzy,badformat msgid "Invalid expression:%s%s%s%s" @@ -10248,6 +10871,14 @@ msgid "Jump History" msgstr "היסטוריית קפיצות" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10903,10 +11534,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "הגדרות שולחן העבודה של לזארוס" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "הספרייה של לזרוס" @@ -10919,24 +11546,10 @@ msgid "Lazarus IDE v%s" msgstr "לזרוס IDE v%s" -#: lazarusidestrconsts.lislazarusfile -#, fuzzy -#| msgid "Lazarus File" -msgid "Lazarus file" -msgstr "קובץ לזארוס" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "טופס לזארוס" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "לזארוס IDE" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "קובץ \"כלול\" של לזארוס" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "מזהה השפה של לזרוס (למשל: en, de, br,fi, he)" @@ -10949,30 +11562,6 @@ msgid "lazarus [options] <project-filename>" msgstr "לזארוס [אפשרויות] <פרוייקט-שם קובץ>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "חבילת לזארוס" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "פרוייקט לזארוס" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "קובץ מידע של פרוייקט לזארוס" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "קובץ קוד של פרוייקט לזארוס" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "יחידת לזארוס" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -11271,10 +11860,6 @@ msgid "list of all case values" msgstr "רשימה של כל ערכי case" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed #, fuzzy,badformat msgid "Loading %s failed." @@ -11472,6 +12057,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -12005,6 +12594,22 @@ msgid "Jump to Implementation" msgstr "קפוץ למימוש" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -12029,6 +12634,14 @@ msgid "Jump to Previous Error" msgstr "קפוץ אל השגיאה הקודמת" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -12048,6 +12661,10 @@ msgid "New Component" msgstr "רכיב חדש" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "טופס חדש" @@ -12331,6 +12948,10 @@ msgid "S&how Execution Point" msgstr "הראה נקודת ביצוע" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -12548,13 +13169,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -#, fuzzy -#| msgid "IDE speed buttons" -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "כפתורי ה Speed ב IDE" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12884,6 +13498,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12986,6 +13608,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -13211,6 +13837,7 @@ msgstr "זה אינו מזהה פסקל חוקי" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -13533,6 +14160,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "אפשרויות" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "אפשרויות השתנו, הדר (נקי) מחדש עם הפרמטר -B" @@ -13659,6 +14292,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13670,10 +14304,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "ספירת מעברים" @@ -13691,6 +14321,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "נתיב" @@ -13769,8 +14403,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13832,7 +14466,9 @@ msgstr "תכונות התלות" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "ערוך אפשרויות כלליות" #: lazarusidestrconsts.lispckeditfileproperties @@ -13843,10 +14479,6 @@ msgid "Install" msgstr "התקן" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "התקן חבילה ב IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "גירסה מקסימלית לא חוקית" @@ -14340,9 +14972,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "הקובץ %s%s%s%s אינו בנתיב החבילה כרגע. להוסיף אותו לנתיב החבילה?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "יש עוד פונקציות בתפריט הקופץ" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -14379,19 +15011,27 @@ msgstr "יחידה ווירטואלית" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -14431,9 +15071,9 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "מהדר חבילה %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -14613,6 +15253,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage #, fuzzy #| msgid "Save Package?" @@ -15131,6 +15777,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -15270,7 +15920,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "הגרסה המרבית s%s%s% שגויה. השתמש בצורה build.major.release לדוגמה: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -15282,7 +15932,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "הגרסה המינימלית s%s%s% שגויה. השתמש בצורה build.major.release לדוגמה: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -16149,10 +16799,6 @@ msgid "Save current editor file" msgstr "שמור את הקובץ הנוכחי שבעורך" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -16226,6 +16872,10 @@ msgid "Save " msgstr "שמור" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "קנה מידה:" @@ -16398,6 +17048,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -16422,6 +17076,10 @@ msgid "Show empty units/packages" msgstr "הראה יחידות/חבילות ריקות" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor #, fuzzy #| msgid "Show Glyphs for:" @@ -16587,14 +17245,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "מצטער, סוג זה לא ממומש עדיין" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "עולה" @@ -16810,10 +17468,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "נתיב \"כלול\" חשוד" @@ -17588,6 +18242,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "אי אפשר לחלץ משפט זה. בחר קוד אחר לחילוץ פרוצדורה/מתודה חדשה." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -17646,6 +18304,10 @@ msgid "Title (leave empty for default)" msgstr "כותרת (השאר ריק לברירת מחדל)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "פונקציה: הוסף את תוחם הנתיב" @@ -17685,6 +18347,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "החלף בין תצוגה עם נתיב מלא לבין נתיב יחסי" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -17709,6 +18387,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "פסגה" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "עיגון למעלה" @@ -18050,6 +18734,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "לא ניתן להמיר מידע טקסטואלי של הקובץ %s%s%s%s%s לזרם בינרי. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "לא ניתן להעתיק את הקובץ" @@ -18633,6 +19321,7 @@ msgstr "משתנה" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18877,14 +19566,14 @@ msgid "XML Error" msgstr "שגיאת XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "קבצי XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "שגיאה בקובץ %s בעת קריאת XML%sשגיאה: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -19030,10 +19719,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "קובץ מידע טופס (dfm.*)" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "נמצא אבל לא מופיע ברשימה שכאן:" @@ -19316,6 +20001,10 @@ msgid "Text marker commands" msgstr "פקודות של סימון טקסט" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "פקודות של תפריט \"חבילה\"" @@ -19802,11 +20491,11 @@ msgstr "נחש IFDEF$ שלא במקומו" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -19920,6 +20609,18 @@ msgid "Invert Assignment" msgstr "החלף הצבה" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "שמאל" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "ימין" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -19994,6 +20695,10 @@ msgid "Go to next editor" msgstr "לך לעורך הבא" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "גש לעורך הטקסט הבא עם אותו הקוד" @@ -20048,6 +20753,30 @@ msgid "pause program" msgstr "השהה תוכנה" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "סמנייה קודמת" @@ -20056,6 +20785,10 @@ msgid "Go to prior editor" msgstr "לך לעורך קודם" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "גש לעורך הטקסט הקודם עם אותו הקוד" @@ -20165,11 +20898,11 @@ msgstr "בחר \"לך לקואורדינטות XY\"" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -20642,10 +21375,22 @@ msgid "Move cursor word right" msgstr "הזז את הסמן מילה אחת ימינה" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "ערוך מקשים של פקודה" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -20678,6 +21423,26 @@ msgid "Hide comments in selection" msgstr "הסתר הערות בזמן הבחירה" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.hu.po lazarus-1.6+dfsg/languages/lazaruside.hu.po --- lazarus-1.4.4+dfsg/languages/lazaruside.hu.po 2015-09-18 22:54:21.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.hu.po 2016-02-06 15:11:04.000000000 +0000 @@ -76,6 +76,10 @@ msgid "History forward" msgstr "Előzmények közt előre" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "Extra kurzor ki/be" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -159,6 +163,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Kibővített, műveletek (töréspont, összecsukás) egérgomb felengedésére. Kijelölés egérgomb lenyomására és mozgatás" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "Kibővített, műveletek csak a hasábköz jobb felén" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "Sorszámok használata a sor kijelöléséhez" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -380,6 +392,10 @@ msgid "Lowercase, first letter up" msgstr "Kisbetűs, első betű nagy" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "aktív" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Értékadás operátor hozzáadása :=" @@ -543,10 +559,6 @@ msgid "Adjust top line due to comment in front" msgstr "Felső sor igazítása az előtte lévő megjegyzéshez" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Minden fájl" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Ábécé rendben" @@ -588,8 +600,8 @@ msgstr "A fő .lpr unit létrehozza az összes form-ot az Application.CreateForm() eljárással. Ezek automatikusan meg is lesznek szüntetve." #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" -msgstr "Új form-ok létrehozásakor adja őket hozzá az automatikusan létrehozott form-okhoz" +msgid "Auto-create new forms" +msgstr "Új form-ok automatikus létrehozása" #: lazarusidestrconsts.dlgautodel msgid "Auto delete file" @@ -625,6 +637,18 @@ msgid "Auto rename file lowercase" msgstr "Fájlok automatikus átnevezése kisbetűsre" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "Az aktív felület automatikus mentése" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" +"Az aktív felület mentése az IDE bezárásakor\n" +"Hibakereső felület mentése az IDE bezárásakor és a hibakeresés végén\n" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Elérhető form-ok:" @@ -702,6 +726,10 @@ msgid "Matching bracket pairs" msgstr "Illeszkedő zárójel párok" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "Dokkolt felületek nem használhatók nem dokkolt környezetben és fordítva." + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1039,11 +1067,6 @@ msgid "Config files" msgstr "Beállítás fájlok" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Egyéb" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Egyéb hibakeresési infó" @@ -1177,9 +1200,9 @@ msgid "User defined extension (.pp.xxx)" msgstr "Felhasználó által megadott kiterjesztés (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" -msgstr "DCI fájl (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" +msgstr "hibakeresés" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption msgid "Path Editor" @@ -1201,18 +1224,10 @@ msgid "Delete template " msgstr "Sablon törlése: " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Felület" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Gombokon: " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Felület fájlok" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Tippek" @@ -1221,6 +1236,18 @@ msgid "Menus - " msgstr "Menükben: " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "Felület neve" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "%d felület sikeresen exportálva ide: \"%s\"" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "%d felület sikeresen importálva innen: \"%s\"" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Irány" @@ -1303,6 +1330,7 @@ msgstr "Alkönyvtár" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Kódsablonok" @@ -1532,6 +1560,134 @@ msgid "%s files" msgstr "%s fájl" +#: lazarusidestrconsts.dlgfilterall +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Minden fájl" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "CodeTools sablonfájl" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "DCI fájl" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "Delphi form" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Delphi csomag" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Delphi projekt" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Delphi unit" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Futtatható" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "FPC üzenetfájl" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "HTML fájlok" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "Bitmap képek" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "Pixmap képek" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "PNG képek" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Lazarus felület beállításai" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Szerkeszthető fájltípusok" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Lazarus fájl" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Lazarus form" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Lazarus include fájl" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Lazarus egyéb fájl" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Lazarus csomag" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Lazarus projekt" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Lazarus projekt forráskód" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "Lazarus munkamenet" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Lazarus unit" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Pascal fájl" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programok" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML fájlok" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Kurzornál lévő szöveg keresése" @@ -1695,6 +1851,10 @@ msgid "Processing Instruction" msgstr "Feldolgozási utasítások" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "A futó Lazarus példány nem fogad el fájlokat." + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Előtér" @@ -1721,7 +1881,7 @@ #: lazarusidestrconsts.dlgfrmeditor msgid "Form Editor" -msgstr "Form-szerkesztő" +msgstr "Form szerkesztő" #: lazarusidestrconsts.dlgfrombeginning msgid "From b&eginning" @@ -1731,11 +1891,6 @@ msgid "&From cursor" msgstr "Kurzortól" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Beállítások" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Pozíció lekérdezése" @@ -1752,6 +1907,10 @@ msgid "Grabber color" msgstr "Méretező színe" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "Az elhalványított felületek nem dokkolt környezethez tartoznak." + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Rács színe" @@ -1933,9 +2092,13 @@ msgid "Included mixed state $IFDEF node" msgstr "Kevert állapotú $IFDEF csomópont" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Kihagyás" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" +"Egy felület már létezik ugyanezzel a névvel.\n" +"A név jóváhagyása szükséges:\n" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2011,7 +2174,7 @@ #: lazarusidestrconsts.dlgkeywordpolicy msgid "Keyword policy" -msgstr "Gyorsbillentyű módszer" +msgstr "Kulcsszavak írásmódja" #: lazarusidestrconsts.dlglabelgoto msgid "Allow LABEL and GOTO" @@ -2043,12 +2206,16 @@ msgstr "1 (gyors, hibakereső-barát)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" -msgstr "2 (gyors optimalizálás)" +msgid "2 (-O1 + quick optimizations)" +msgstr "2 (-O1 + gyors optimalizálás)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" -msgstr "3 (lassú optimalizálás)" +msgid "3 (-O2 + slow optimizations)" +msgstr "3 (-O2 + lassú optimalizálás)" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "4 (-O3 + aggresszív optimalizálás, óvatosan)" #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" @@ -2066,10 +2233,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Sorszámok megjelenítése a futási hibák esetén" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Felület beállításainak betöltése fájlból" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Főmenü" @@ -2091,6 +2254,10 @@ msgid "\"Make\" executable" msgstr "\"Make\" program" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "Felületek kezelése" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Margó és hasábköz" @@ -2247,6 +2414,7 @@ msgstr "Egér művelet" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Egyszeres" @@ -2452,6 +2620,10 @@ msgid "Gutter" msgstr "Hasábköz" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "Sorváltások" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Összecsukható fa" @@ -2504,6 +2676,95 @@ msgid "Messages" msgstr "Üzenetek" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Hibakeresés" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Hiba" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "Végzetes" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Tipp" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Fontos" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "Normál" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "Megjegyzés" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "Pánik" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "Idő és statisztika" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "Egyéb" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "Egyéb 2" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "Egyéb 3" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Figyelmeztetés" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "Multi-kurzor (oszlopkijelölés) mozgatása a kurzorral" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "Multi-kurzor mozgatása a kurzorral" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "Multi-kurzor engedélyezése oszlopkijelöléskor" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "Több Lazarus példány" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "Mindig új példány indítása" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "Ne lehessen több példányt futtatni" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "Fájlok megnyitása egy futó példányban" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Többszörös kijelölés" @@ -2540,6 +2801,10 @@ msgid "Naming" msgstr "Elnevezések" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "Új felület ..." + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Nincs automatikus átnevezés" @@ -2578,11 +2843,6 @@ msgid "Miscellaneous" msgstr "Egyéb" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Beállítások" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Gyorsbeállítás" @@ -2611,6 +2871,14 @@ msgid "Overwrite block" msgstr "Kijelölés felülírása" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" +"Létezik \"%s\" nevű felület.\n" +"Felülírható a régi felület?\n" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Tippek a komponens palettához" @@ -2793,8 +3061,8 @@ msgstr "Tulajdonság név" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" -msgstr "Legutóbbi projekt megnyitása indításkor" +msgid "Open last project and packages at start" +msgstr "Legutóbbi projekt és csomagok megnyitása indításkor" #: lazarusidestrconsts.dlgqshowborderspacing msgid "Show border spacing" @@ -2808,6 +3076,10 @@ msgid "Snap to grid" msgstr "Rácshoz igazítás" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "Valóban törölhető a(z) \"%s\" felület?" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Hivatkozás" @@ -2816,6 +3088,10 @@ msgid "Regular e&xpressions" msgstr "Reguláris kifejerések" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "Felület átnevezése" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Összes cseréje" @@ -2857,6 +3133,22 @@ msgid "Rubberband Selection" msgstr "Nyújtható kijelölés" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" +"A futó Lazarus példány nem fogad el fájlokat.\n" +"Megnyitás egy új IDE példányban?\n" +"\n" +"%s\n" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "Egy Lazarus példány már fut, de nem válaszol." + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Megjelenítő (nem win32-höz, pl. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2886,9 +3178,9 @@ msgid "Run Parameters" msgstr "Futtatási paraméterek" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Felület beállításainak mentése fájlba" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "Jelenlegi felület mentése másként" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2959,6 +3251,10 @@ msgid "&Selected text" msgstr "Kijelölt szöveg" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "Aktiválás" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Minden elem alapértelmezettre" @@ -2971,6 +3267,26 @@ msgid "Set property Variable" msgstr "Tulajdonság-beállítás változója" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "Az alapértelmezett értékadó eljárás paraméterének neve." + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "Előtag" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "Ha be van jelölve akkor a \"Tulajdonság-beállítás változója\" csak előtag, egyébként rögzített név." + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "Állandó" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "Ha be van jelölve akkor az értékadó eljárás paramétere állandóként (\"const\") lesz meghatározva." + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Minden unit megjelenítése" @@ -3023,7 +3339,7 @@ #: lazarusidestrconsts.dlgshowhint msgctxt "lazarusidestrconsts.dlgshowhint" msgid "Show hints" -msgstr "Tanácsok megjelenítése" +msgstr "Tippek megjelenítése" #: lazarusidestrconsts.dlgshowingwindows msgid "Showing Windows" @@ -3094,6 +3410,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "Amikor egy vezérlő elég közel van egy másik vezérlőhöz, akkor az igazított helyzetbe ugrik." +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "Fülek több sorba rendezése" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3195,6 +3515,11 @@ msgid "&Text to find" msgstr "Keresendő szöveg" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "Hibakereső felületként történő használat ki-/bekapcsolása" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Aktuális osztály/eljárás tipp" @@ -3568,6 +3893,10 @@ msgid "File not unit" msgstr "A fájl nem unit" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "Ikon (maximum 24x24):" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Érvénytelen ős típus" @@ -3613,6 +3942,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Nem található csomag a(z) \"%s\" függőséghez.%sVálasszon egy létező csomagot!" +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "Csomag/Projekt" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Túl hosszú lapnév" @@ -3741,6 +4074,11 @@ msgid "Abandon changes?" msgstr "Változások elvetése?" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Megszakítás" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Összes megszakítása" @@ -3776,7 +4114,7 @@ #: lazarusidestrconsts.lisaboutide msgid "About IDE" -msgstr "Az IDE névjegye" +msgstr "Az IDE adatai" #: lazarusidestrconsts.lisaboutlazarus msgid "About Lazarus" @@ -3851,6 +4189,14 @@ msgid "Added property \"%s\" for %s." msgstr "A(z) \"%s\" tulajdonság hozzá lett adva ehhez: \"%s\"" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "-FcUTF8 hozzáadása" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "Szükséges lehet ha a forrásfájlok nem csak ansi karakterláncokat tartalmaznak." + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Fájlok hozzáadása könyvtárból" @@ -3916,6 +4262,10 @@ msgid "&Address Breakpoint ..." msgstr "Töréspont adott címen ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "Hozzáadás >>" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "Hozzáadás az include keresési útvonalakhoz?" @@ -3924,6 +4274,10 @@ msgid "Add %s to project?" msgstr "%s hozzáadása a projekthez?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "Hozzádadja az indításkori komponensekhez?" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "Hozzáadás a unit keresési útvonalakhoz?" @@ -3952,10 +4306,6 @@ msgid "File type" msgstr "Fájltípus" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Van \"Register\" eljárása" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Érvénytelen csomag" @@ -3977,19 +4327,10 @@ msgid "Show all" msgstr "Összes megjelenítése" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "A(z) \"%s\"%sfájl már a(z) %s csomagban van." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "A(z) %s csomag csak olvasható" -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Unit-név:" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "A(z) \"%s\" fájl már létezik.%sLecseréli?" @@ -4014,10 +4355,6 @@ msgid "<All build modes>" msgstr "<Minden építési mód>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Minden fájl" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Minden örökölt beállítás" @@ -4135,7 +4472,7 @@ msgstr "Felső szél horgonyzása a testvér felső széléhez. A BorderSpacing használható a távolság beállításához. A testvér BorderSpacing tulajdonsága nem számít." #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Hiba történt a legutóbbi indításkor a(z) %s betöltése közben!%sÚjra megnyitja a projektet?" #: lazarusidestrconsts.lisapplicationclassname @@ -4195,6 +4532,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Egy jól használható beállítás Windows-on: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "Az IDE főablakának magassága automatikusan legyen beállítva" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "Teljes komponens paletta megjelenítése" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "Ha a komponens paletta több sort foglal el akkor mind jelenjen meg, ne csak egy." + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Automatikus kiegészítés: ki" @@ -4252,6 +4601,10 @@ msgid "do not add character" msgstr "ne adjon hozzá karaktert" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "Automatikus beillesztés ha csak egy lehetséges azonosító van" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Kiegészítés és tippek" @@ -4340,6 +4693,11 @@ msgid "Border space" msgstr "Keret-térköz" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Lent" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Alsó keret-térköz. Ez az érték hozzáadódik az alap oldaltérközhöz és a vezérlő aljára vonatkozik." @@ -4450,6 +4808,10 @@ msgid "Building Lazarus failed" msgstr "A Lazarus építése nem sikerült" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "Építési mód: %s" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Különbségek az építési módok között" @@ -4698,6 +5060,7 @@ msgstr "szokatlan karaktereket" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Figyelmeztetés" @@ -4913,7 +5276,7 @@ msgstr "Hibás behúzás" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Kivétel keletkezett a következő törlése közben:%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -4938,15 +5301,15 @@ #: lazarusidestrconsts.liscfedonotknowhowtocopythisformeditingselection msgid "Do not know how to copy this form editing selection" -msgstr "Nem tudom, hogyan kell másolni ezt a kijelölést az Form-szerkesztőben" +msgstr "Nem tudom, hogyan kell másolni ezt a kijelölést az Form szerkesztőben" #: lazarusidestrconsts.liscfedonotknowhowtocutthisformeditingselection msgid "Do not know how to cut this form editing selection" -msgstr "Nem tudom, hogyan kell kivágni ezt a kijelölést az Form-szerkesztőben" +msgstr "Nem tudom, hogyan kell kivágni ezt a kijelölést az Form szerkesztőben" #: lazarusidestrconsts.liscfedonotknowhowtodeletethisformeditingselection msgid "Do not know how to delete this form editing selection" -msgstr "Nem tudom, hogyan kell törölni ezt a kijelölést az Form-szerkesztőben" +msgstr "Nem tudom, hogyan kell törölni ezt a kijelölést az Form szerkesztőben" #: lazarusidestrconsts.liscfeerrorcreatingcomponent msgid "Error creating component" @@ -5026,7 +5389,7 @@ #: lazarusidestrconsts.liscfeunabletocleartheformeditingselection msgid "Unable to clear the form editing selection%s%s" -msgstr "Nem lehet megszüntetni a kijelölést az Form-szerkesztőben%s%s" +msgstr "Nem lehet megszüntetni a kijelölést az Form szerkesztőben%s%s" #: lazarusidestrconsts.lischange msgctxt "lazarusidestrconsts.lischange" @@ -5148,6 +5511,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Válasszon egy pascal fájlt behúzási példaként!" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "Új metódusok beszúrásának helye" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "Válasszon fordító programot! (%s)" @@ -5176,6 +5543,10 @@ msgid "Choose directory" msgstr "Válasszon könyvtárat!" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "Válasszon egy programot!" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Válasszon FPC forrás könyvtárat!" @@ -5330,9 +5701,9 @@ msgid "Click here to browse the file" msgstr "Kattintson ide a fájl böngészéséhez" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Kattintson ide a lehetséges használat megjelenítéséhez" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "Kattintson ide a lehetőségek megjelenítéséhez" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5401,6 +5772,10 @@ msgid "Pages" msgstr "Lapok" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "A paletta látható" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "Alaphelyzet" @@ -5519,7 +5894,7 @@ #: lazarusidestrconsts.liscodehelpmainformcaption msgctxt "lazarusidestrconsts.liscodehelpmainformcaption" msgid "FPDoc Editor" -msgstr "FPDoc-szerkesztő" +msgstr "FPDoc szerkesztő" #: lazarusidestrconsts.liscodehelpnoinheriteddescriptionfound msgid "(no inherited description found)" @@ -5818,7 +6193,7 @@ #: lazarusidestrconsts.liscodetoolsdefsmovenodeup msgid "Move node up" -msgstr "Csomópont mozgatása feljfelé" +msgstr "Csomópont mozgatása felfelé" #: lazarusidestrconsts.liscodetoolsdefsname msgctxt "lazarusidestrconsts.liscodetoolsdefsname" @@ -5989,10 +6364,6 @@ msgid "Symbol" msgstr "Szimbólum" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "CodeTools sablonfájl" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Utólag végrehajtandó" @@ -6183,6 +6554,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "\"Lazarus építés\" beállítása" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "Eszköztár beállítása" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Lazarus IDE beállítása" @@ -6624,6 +6999,166 @@ msgid "User selected to end conversion with file %s" msgstr "A felhasználó úgy döntött, hogy befejezi az átalakítást e fájllal: %s" +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "Eszköztár(ak) hozzáadása/beállítása/törlése" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "Elválasztó hozzáadása" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "A kijelölt elem hozzáadása az eszköztárhoz" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "Elérhető parancsok" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "Eszköztárak keretének stílusa" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Nincs" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Egyszeres" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "Kijelölés megszüntetése" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Kódböngésző" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Kódsablonok" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "&Beállítás" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "Biztosan törölhető a kijelölt eszköztár?" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "Legalább egy eszköztárnak léteznie kell!" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "Tervező" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "Általános eszköztár beállításai" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "Eszköztárak fogantyújának stílusa" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "Egyszerű" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Kétszeres" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "Vízszintes vonalak" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "Függoleges vonalak" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "Fogantyú" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Nyomógomb" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "Fogantyú szélessége" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "IDE Főmenü" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Üzenetek" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "A kijelölt eszköztárelem mozgatása lefelé" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "A kijelölt eszköztárelem mozgatása felfelé" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "IDE eszköztár" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "Csomagszerkesztő" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "Csomagszerkesztő fájljai" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "A kijelölt elem eltávolítása az eszköztárról" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "Alaphelyzet" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "Előbb ki kell választani egy eszköztárat!" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Forráskódszerkesztő" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "Forrás-fül" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "Eszköztár parancsai" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "Az eszköztár látható" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "Eszköztár szélessége" + #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" msgid "Copy" @@ -6900,6 +7435,10 @@ msgid "Custom options" msgstr "Egyéni beállítások" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "Egyéni beállítások" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Egyedi program" @@ -7187,7 +7726,7 @@ #: lazarusidestrconsts.lisdebugoptionsfrmignoretheseexceptions msgid "Ignore these exceptions" -msgstr "E kivételek a figyelmen kívül hagyása" +msgstr "E kivételek figyelmen kívül hagyása" #: lazarusidestrconsts.lisdebugoptionsfrmlanguageexceptions msgid "Language Exceptions" @@ -7401,22 +7940,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "Delphi kompatibilis erőforrások. Ajánlott." -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Delphi csomag" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphi projekt" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Delphi unit" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "A \"tervezési\" csomagok komponenseket és menübejegyzéseket adnak az IDE-hez. A projektek használhatják őket, de nem lesznek beléjük építve. A fordító nem fogja megtalálni ezen csomagok unit-jait a projekt fordításakor." +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "Felületek ..." + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Célkönyvtár" @@ -7638,6 +8169,11 @@ msgid "Import ..." msgstr "Importálás ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "Továbbiak ..." + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7656,6 +8192,10 @@ msgid "Do not change" msgstr "Ne változzon" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "%sNe legyen ellenőrizve, hogy fut-e már másik IDE példány" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Ne zárja be a projektet" @@ -7781,6 +8321,10 @@ msgid "Duplicate Unit" msgstr "Ismétlődő unit" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "Ismétlődő unit \"%s\" itt: \"%s\"" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7806,14 +8350,22 @@ msgid "Editor Colors" msgstr "Szerkesztő színei" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Szerkeszthető fájltípusok" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Szerkesztő makrók" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "Szerkesztő eszköztára" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "Szerkesztő eszköztárának beállításai" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "A szerkesztő eszköztára látható" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Séma betöltése" @@ -7916,6 +8468,10 @@ msgid "Working Directory:" msgstr "Munkakönyvtár:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "Üzenet prioritásának növelése, hogy mindig megjelenjen (alaphelyzetben alacsony: \"Egyéb\")" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8125,8 +8681,8 @@ msgstr "Hiba az \"unitok kimeneti könytára\" útvonalában:" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" -msgstr "HIBA: Érvénytelen építési mód: \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" +msgstr "Hiba: (lazarus) érvénytelen építési mód: \"%s\"" #: lazarusidestrconsts.liserrorloadingfile msgid "Error loading file" @@ -8226,6 +8782,10 @@ msgid "Save Events to File" msgstr "Események mentése fájlba" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "Új eseménykezelő metódusok beszúrásának helye" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Megjegyzés hozzáadása ..." @@ -8266,10 +8826,6 @@ msgid "Exclude filter" msgstr "Kizáró szűrő" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Futtatható" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "a(z) \"%s\" állomány egy könyvtár" @@ -8290,10 +8846,6 @@ msgid "Execution stopped" msgstr "Futtatás leállítva" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programok" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8328,14 +8880,27 @@ msgid "Export" msgstr "Exportálás" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "Összes exportálása" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "Minden elem exportálása fájlba" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "Környezet beállításainak exportálása" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Exportálás HTML-ként" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "Exportálás / Importálás" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Lista exportálása" @@ -8344,6 +8909,14 @@ msgid "Export package list (*.xml)" msgstr "Csomaglista exportálása (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "Kijelölt exportálása" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "Exportálás >>" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Kifejezés:" @@ -8418,6 +8991,7 @@ msgstr "A fájl mentése nem sikerült." #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "Végzetes" @@ -8761,10 +9335,6 @@ msgid "fpcmake failed" msgstr "fpcmake sikertelen" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "FPC üzenetfájl" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "FPC üzenetfájl:" @@ -8796,7 +9366,7 @@ #: lazarusidestrconsts.lisfpdoceditor msgctxt "lazarusidestrconsts.lisfpdoceditor" msgid "FPDoc Editor" -msgstr "FPDoc-szerkesztő" +msgstr "FPDoc szerkesztő" #: lazarusidestrconsts.lisfpdocerrorwriting msgid "Error writing \"%s\"%s%s" @@ -8966,6 +9536,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sVan még %d üres csoport. Összes törlése?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "Az automatikusan létrehozott helyi változók csoportosítása" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "A csoport neve nem lehet üres. Törlendő a töréspontok csoportja?" @@ -8998,6 +9572,10 @@ msgid "Has Help" msgstr "Van súgója" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "Fejlécek színei" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Fejléc megjegyzés az osztályhoz" @@ -9048,6 +9626,7 @@ msgstr "Elrejtés projektbeállítással (-vm%s)" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Tipp" @@ -9136,14 +9715,12 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Hozzáadás" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "Kiegészítés" -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" msgstr "Megnyitás" #: lazarusidestrconsts.liside @@ -9278,6 +9855,11 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Ha különböző Lazarus változatokat akar használni, a második Lazarus-t a primary-config-path vagy a pcp parancssori paraméterrel kell indítani.%sPéldául:" +#: lazarusidestrconsts.lisignore +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Kihagyás" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Összes kihagyása" @@ -9292,11 +9874,11 @@ #: lazarusidestrconsts.lisignoreexceptiontype msgid "Ignore this exception type" -msgstr "E kivétel típus figyelmen kívül hagyása" +msgstr "Az ilyen típusú kivételek figyelmen kívül hagyása" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Kihagyás, TForm használata ősként" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "Kihagyás, %s használata ősként" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9312,12 +9894,14 @@ msgstr "Importálás" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "Fontos" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "Importálás / Exportálás" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "Környezet beállításainak importálása" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" @@ -9411,6 +9995,10 @@ msgid "Inherited project component" msgstr "Örökölt projekt komponens" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "Helyi változó előkészítése" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "Azért, hogy egy tiszta másolat jöhessen létre a projektből/csomagból, a következő könyvtár minden eleme törölve lesz és annak teljes tartalma el fog veszni.%sTörli az összes fájlt a(z) \"%s\" könyvtárból?" @@ -9420,6 +10008,10 @@ msgid "Insert" msgstr "Beszúrás" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "Értékadás beszúrása: %s := ..." + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "dátum beillesztése" @@ -9559,6 +10151,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Csomag fordítása helyett egy egyszerű Makefile létrehozása" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "Elégtelen kódolás" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Interaktív" @@ -9575,6 +10171,14 @@ msgid "Invalid delete" msgstr "Érvénytelen törlés" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "Érvénytelen futtatható állomány" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "A(z) \"%s\" fájl nem futtatható állomány." + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Érvénytelen kifejezés:%s%s%s%s" @@ -9688,6 +10292,14 @@ msgid "Jump History" msgstr "Ugrási előzmények" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "Ugrás a hibára" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "Ha egy azonosító kiegészítésekor hiba kerül elő a forrásban, ugrás oda." + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Ugrás az eljárásra: %s" @@ -10291,10 +10903,6 @@ msgid "Lazarus Default" msgstr "Lazarus alapértelmezés" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazarus felület beállításai" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazarus könyvtára" @@ -10307,22 +10915,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Lazarus fájl" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarus form" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Lazarus IDE" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarus include fájl" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus nyelv azonosító (pl. en, de, br, fi)" @@ -10335,30 +10931,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [beállítások] <projekt-fájlnév>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Lazarus egyéb fájl" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarus csomag" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarus projekt" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarus projekt infó fájl" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Lazarus projekt forráskód" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Lazarus unit" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10654,10 +11226,6 @@ msgid "list of all case values" msgstr "minden case érték listázása" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Sikeresen betöltve" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Hiba %s betöltése közben." @@ -10840,6 +11408,10 @@ msgid "Manage Source Editors ..." msgstr "Forráskódszerkesztők kezelése ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "A párhuzamos fordításhoz engedélyezett szálak száma. Alapértelmezés a 0, ez jelenti a rendszerben használt magok számát." + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "Párhuzamos folyamatok maximális száma, a 0 az alapértelmezést jelenti (%s)" @@ -10871,7 +11443,7 @@ #: lazarusidestrconsts.lismenuaboutfpc msgid "About FPC" -msgstr "A(z) FPC névjegye" +msgstr "Az FPC adatai" #: lazarusidestrconsts.lismenuaddbreakpoint msgid "Add &Breakpoint" @@ -11265,6 +11837,22 @@ msgid "Jump to Implementation" msgstr "Ugrás a kidolgozáshoz" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "Ugrás a kidolgozás uses szakaszához" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "Ugrás az előkészítéshez" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "Ugrás a felülethez" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "Ugrás a felület uses szakaszához" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Ugrás a következő könyvjelzőre" @@ -11281,6 +11869,14 @@ msgid "Jump to Previous Error" msgstr "Ugrás az előző hibára" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "Ugrás az eljárás elejére" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "Ugrás az eljárás fejlécére" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Kijelölés kisbetűssé alakítása" @@ -11298,6 +11894,10 @@ msgid "New Component" msgstr "Új komponens" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "Új %s" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Új form" @@ -11524,6 +12124,10 @@ msgid "S&how Execution Point" msgstr "Futási pont megjelenítése" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "Tartalomérzékeny súgó" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Kijelölés rendezése ..." @@ -11702,11 +12306,6 @@ msgid "History" msgstr "Előzmények" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "IDE gyorsgombok" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -11979,11 +12578,11 @@ #: lazarusidestrconsts.lismmmoveselecteditemdown msgid "Move selected item down" -msgstr "Kijelölt elem mozgatása le" +msgstr "Kijelölt elem mozgatása lefelé" #: lazarusidestrconsts.lismmmoveselecteditemup msgid "Move selected item up" -msgstr "Kjelölt elem mozgatása fel" +msgstr "Kijelölt elem mozgatása felfelé" #: lazarusidestrconsts.lismmnewtarget msgid "New Target" @@ -12033,6 +12632,14 @@ msgid "Undo last change to this grid" msgstr "Legutóbbi változtatás visszavonása e rácsban" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "A rendszer kódolásának használata" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "Az UTF-8 alapértelmezett karakterkódolás támogatásának kikapcsolása" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Érték: \"%s\"" @@ -12077,7 +12684,7 @@ #: lazarusidestrconsts.lismore msgctxt "lazarusidestrconsts.lismore" msgid "More" -msgstr "Tovább" +msgstr "Továbbiak" #: lazarusidestrconsts.lismoresub msgctxt "lazarusidestrconsts.lismoresub" @@ -12140,6 +12747,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "Üzenetek színei" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "Több könyvtárat pontosvesszővel kell elválasztani" @@ -12352,6 +12963,7 @@ msgstr "Nem érvényes pascal azonosító" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "Megjegyzés" @@ -12661,6 +13273,11 @@ msgid "Open XML" msgstr "XML megnyitása" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Beállítások" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "A beállítások megváltoztak, tiszta újrafordítás -B használatával" @@ -12778,6 +13395,7 @@ msgstr "Már létezik \"%s\" nevű lap. Nem lett hozzáadva." #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "Pánik" @@ -12789,10 +13407,6 @@ msgid "parser \"%s\": %s" msgstr "\"%s\" elemző: %s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Pascal fájl" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Megszakítások száma" @@ -12810,6 +13424,10 @@ msgid "Paste from clipboard" msgstr "Beillesztés a vágólapról" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "Pasztellszínek" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Útvonal" @@ -12825,11 +13443,11 @@ #: lazarusidestrconsts.lispatheditmovepathdown msgid "Move path down (Ctrl+Down)" -msgstr "Útvonal mozgatása le" +msgstr "Útvonal mozgatása lefelé" #: lazarusidestrconsts.lispatheditmovepathup msgid "Move path up (Ctrl+Up)" -msgstr "Útvonal mozgatása fel" +msgstr "Útvonal mozgatása felfelé" #: lazarusidestrconsts.lispatheditoraddhint msgid "Add new path to the list" @@ -12884,8 +13502,8 @@ msgid "Disable I18N of lfm" msgstr "I18N kikapcsolása az lfm-ben" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "Fájlok hozzáadása a fájlrendszerből" #: lazarusidestrconsts.lispckeditaddotheritems @@ -12943,7 +13561,7 @@ msgstr "Függőség tulajdonságai" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +msgid "Edit general options" msgstr "Általános beállítások szerkesztése" #: lazarusidestrconsts.lispckeditfileproperties @@ -12954,10 +13572,6 @@ msgid "Install" msgstr "Telepítés" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Csomag telepítése az IDE-be" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Érvénytelen legnagyobb változatszám" @@ -12980,11 +13594,11 @@ #: lazarusidestrconsts.lispckeditmovedependencydown msgid "Move dependency down" -msgstr "Függőség lefelé mozgatása" +msgstr "Függőség mozgatása lefelé" #: lazarusidestrconsts.lispckeditmovedependencyup msgid "Move dependency up" -msgstr "Függőség felfelé mozgatása" +msgstr "Függőség mozgatása felfelé" #: lazarusidestrconsts.lispckeditpackage msgid "Package %s" @@ -13404,9 +14018,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "A(z) \"%s\" fájl%sjelenleg nem szerepel a csomag unit útvonalai között.%s Hozzáadja a unit útvonalakhoz ezt: \"%s\"?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "További funkciók találhatók a felugró menüben" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "További műveletek a csomaggal" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13443,20 +14057,28 @@ msgstr "Virtuális unit" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" -msgstr "Csomag könyvtára. Paraméter a csomag azonosítója" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Csomag könyvtára. Paraméter a csomag azonosítója, pl. \"Név\" vagy \"Név 1.0\"" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" -msgstr "Csomag include fájlok keresési útvonala. Paraméter a csomag azonosítója" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Csomag include fájlok keresési útvonala. Paraméter a csomag azonosítója, pl. \"Név\" vagy \"Név 1.0\"" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Csomag neve. Paraméter a csomag azonosítója, pl. \"Név\" vagy \"Név 1.0\"" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Csomag kimeneti könyvtára. Paraméter a csomag azonosítója, pl. \"Név\" vagy \"Név 1.0\"" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" -msgstr "Csomag forrás keresési útvonala. Paraméter a csomag azonosítója" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Csomag forrás keresési útvonala. Paraméter a csomag azonosítója, pl. \"Név\" vagy \"Név 1.0\"" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" -msgstr "Csomag unit keresési útvonala. Paraméter a csomag azonosítója" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Csomag unit keresési útvonala. Paraméter a csomag azonosítója, pl. \"Név\" vagy \"Név 1.0\"" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage msgid "%sAdding new Dependency for package %s: package %s" @@ -13490,8 +14112,8 @@ msgid "Circular dependencies found" msgstr "Körkörös függőség észlelve" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "Csomag fordítása: %s" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -13660,6 +14282,14 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Egy vagy több szükséges csomag nem található. Lásd a Csomag-fát a részletekért!" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" +"A(z) %s csomag már meg van nyitva az IDE-ben.\n" +"Nem lehet csomagot menteni ugyanezzel a névvel.\n" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Menti a csomagot?" @@ -14034,15 +14664,15 @@ #: lazarusidestrconsts.lisplistfilterany msgid "Filter by matching any part of method" -msgstr "Szűrés metódus rész egyezésre" +msgstr "Szűrés: egyezés a metódus nevének bármely részén" #: lazarusidestrconsts.lisplistfilterstart msgid "Filter by matching with start of method" -msgstr "Szűrés metódus kezdetére" +msgstr "Szűrés: egyezés a metódus nevének elején" #: lazarusidestrconsts.lisplistjumptoselection msgid "Jump To Selection" -msgstr "Ugrás a kijelöléshez" +msgstr "Ugrás a kijelölthöz" #: lazarusidestrconsts.lisplistnone msgid "<None>" @@ -14093,6 +14723,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "Az .lpi a projekt fő információs fájlja, az .lps egy különálló fájl csak a munkamenet adatai számára." +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "Elhelyezés" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "%s (a pozíció a forráson kívül van)" @@ -14218,7 +14852,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "A(z) \"%s\" legnagyobb változatszám érvénytelen.%sHasználja a fő.al.kiadás.építés formátumot!%sPéldául: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14228,7 +14862,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "A(z) \"%s\" legkisebb változatszám érvénytelen.%sHasználja a fő.al.kiadás.építés formátumot!%sPéldául: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15030,10 +15664,6 @@ msgid "Save current editor file" msgstr "A jelenleg szerkesztett fájl mentése" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Sikeresen mentve" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Mentve az IDE beállításokkal" @@ -15104,6 +15734,10 @@ msgid "Save " msgstr "Mentés " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "A(z) \"%s\" fájl mentése \"%s\"-ként karaktervesztéssel jár a(z) %s sor %s oszlopában." + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Nagyítás:" @@ -15273,6 +15907,10 @@ msgid "Short, no path" msgstr "Rövid, nincs útvonal" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "A(z) \"%s\" komponens automatikusan létre legyen hozva amikor az alkalmazás elindul?" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Megjelenítés" @@ -15297,6 +15935,10 @@ msgid "Show empty units/packages" msgstr "Üres unit-ok/csomagok megjelenítése" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "A \"lefordított sorok\" FPC üzenet megjelenítése" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "Ikonok megjelenítése" @@ -15454,14 +16096,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Sajnáljuk, ez a típus egyelőre nincs megvalósítva" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "Rendezés" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "Rendezés hatókör alapján" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "Rendezés" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Növekvő" @@ -15668,10 +16310,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Az új fájl alapértelmezett nevét kisbetűvel ajánlja fel" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "UTF-8 RTL támogatás" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Gyanús include útvonal" @@ -15991,7 +16629,7 @@ #: lazarusidestrconsts.listhelazarusdirectorycontainsthesourcesoftheideandth msgid "The Lazarus directory contains the sources of the IDE and the package files of LCL and many standard packages. For example it contains the file \"ide%slazarus.lpi\". The translation files are located there too." -msgstr "A Lazarus könyvtára tartalmazza az IDE forrásait, az LCL csomagok fájljait, és sok alapvető csomagok. Például tartalmazza az \"ide%slazarus.lpi\" fájlt. A fordítások fájljai is ott találhatók." +msgstr "A Lazarus könyvtára tartalmazza az IDE forrásait, az LCL csomagok fájljait, és sok alapvető csomagot. Tartalmazza például az \"ide%slazarus.lpi\" fájlt. A fordítások fájljai is ott találhatók." #: lazarusidestrconsts.listhelazarusdirectorydoesnotlookcorrect msgid "The Lazarus directory \"%s\" does not look correct:%s%s" @@ -16239,7 +16877,7 @@ #: lazarusidestrconsts.listhesourcesofthefreepascalpackagesarerequiredforbro msgid "The sources of the Free Pascal packages are required for browsing and code completion. For example it has the file \"%s\"." -msgstr "A Free Pascal csomag forrásaira szükség van a böngészéshez és a kódkiegészítéshez. Mert az tartalmazza például az \"%s\" fájlt." +msgstr "A Free Pascal csomag forrásaira szükség van a böngészéshez és a kódkiegészítéshez. Az tartalmazza például a(z) \"%s\" fájlt." #: lazarusidestrconsts.listhetargetisnotwritable msgid "The target %s is not writable." @@ -16271,7 +16909,7 @@ #: lazarusidestrconsts.listheunitispartofthefpcsourcesbutthecorrespondingfpd msgid "The unit %s is part of the FPC sources, but the corresponding fpdoc xml file was not found.%sEither you have not yet added the fpcdocs directory to the search path or the unit is not yet documented.%sThe fpdoc files for the FPC sources can be downloaded from: %s%sPlease add the directory in the fpdoc editor options.%sIn order to create a new file the directory must be writable." -msgstr "A(z) %s unit az FPC forrásainak része, de a megfelelő FPDoc xml fájl nincs meg.%sVagy az fpcdocs könyvtár nem lett hozzáadva a keresési útvonalakhoz vagy a unit még nincs dokumentálva.%sAz FPC forrásainak FPDoc fájljai letölthetők innen: %s%sAdja meg a könyvtárat az FPDoc-szerkesztő beállításai között.%sÚj fájl létrehozásához a könyvtárnak írhatónak kell lennie." +msgstr "A(z) %s unit az FPC forrásainak része, de a megfelelő FPDoc xml fájl nincs meg.%sVagy az fpcdocs könyvtár nem lett hozzáadva a keresési útvonalakhoz vagy a unit még nincs dokumentálva.%sAz FPC forrásainak FPDoc fájljai letölthetők innen: %s%sAdja meg a könyvtárat az FPDoc szerkesztő beállításai között.%sÚj fájl létrehozásához a könyvtárnak írhatónak kell lennie." #: lazarusidestrconsts.listheunitisusedbyotherfilesupdatereferencesautomatic msgid "The unit %s is used by other files.%sUpdate references automatically?" @@ -16325,6 +16963,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Ez állomány nem helyezhető át.%sJelöljön ki kódot, amit új eljárásba/metódusba helyezhet!" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "Ez lehetővé teszi az összes építési mód egyidejű megváltoztatását. Még nincs kidolgozva." + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Ez körkörös függést hoz létre." @@ -16383,6 +17025,10 @@ msgid "Title (leave empty for default)" msgstr "Cím (üres = alapértelmezett)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "Ikon választása a komponenshez (24x24)" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Művelet: útvonal-elválasztó hozzáfűzése" @@ -16419,6 +17065,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Teljes/Részleges elérési út megjelenítésének átkapcsolása fájlneveknél" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "Eszköztár beállítása" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "Eszköztár" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "Eszköztárak gombjainak kiemelése" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "Eszköztárak kiemelése" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "a(z) \"%s\" eszköz nem tartalmaz futtatható állományt" @@ -16443,6 +17105,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "az eszköz kilépési kóddal állt le: %s. A helyi menüből további információ érhető el." +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Fent" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Felső oldal horgonyozása" @@ -16765,6 +17432,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "A fájl szövegadata nem alakítható át bináris adatfolyammá:%s\"%s\"%s(%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "Nem lehet átalakítani \"%s\" kódolásra" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "A fájl másolása nem lehetséges" @@ -17284,6 +17955,7 @@ msgstr "Változó" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "Egyéb" @@ -17518,14 +18190,14 @@ msgid "XML Error" msgstr "XML Hiba" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML fájlok" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "XML elemző hiba a(z) %s%s fájlban. Hiba: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "Igen" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Ez letiltható az egyes form-ok esetén a csomagkezelőben" @@ -17666,10 +18338,6 @@ msgid "Filter the lines in list with a string" msgstr "A lista sorainak szűrése egy karakterlánc alapján" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Form adatfájl (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Megtalálható, de itt nincs felsorolva:" @@ -17948,6 +18616,10 @@ msgid "Text marker commands" msgstr "Szöveg megjelölési parancsai" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "Multi-kurzoros parancsok" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Csomag menü parancsai" @@ -18390,12 +19062,12 @@ msgstr "Rosszul elhelyezett $IFDEF keresése" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" -msgstr "Kurzor mozgatása fél szóval balra" +msgid "Move cursor part-word left (e.g. CamelCase)" +msgstr "Kurzor mozgatása rész-szóval balra (pl. CamelCase)" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" -msgstr "Kurzor mozgatása fél szóval jobbra" +msgid "Move cursor part-word right (e.g. CamelCase)" +msgstr "Kurzor mozgatása rész-szóval jobbra (pl. CamelCase)" #: lazarusidestrconsts.srkmecimestr msgid "Ime Str" @@ -18506,6 +19178,16 @@ msgid "Invert Assignment" msgstr "Hozzárendelés megfordítása" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Balra" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Jobbra" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Kurzor mozgatása balra" @@ -18524,7 +19206,7 @@ #: lazarusidestrconsts.srkmeclinestart msgid "Move cursor to line start" -msgstr "Kurzor mozgatása a sor elejére" +msgstr "Kurzor mozgatása a sor elejére" #: lazarusidestrconsts.srkmeclinetextstart msgid "Move cursor to text start in line" @@ -18578,6 +19260,10 @@ msgid "Go to next editor" msgstr "Következő lapfülre ugrás" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "Váltás az következő szerkesztőre az előzmények között" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Váltás a következő szerkesztőre ugyanezzel a forrással" @@ -18630,6 +19316,30 @@ msgid "pause program" msgstr "program szüneteltetése" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "Az összes extra kurzor eltávolítása" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "A kurzorbillentyűk az összes extra kurzort eltávolítják" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "A kurzorbillentyűk az összes extra kurzort mozgatják" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "Extra kurzor hozzáadása" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Extra kurzor ki/be" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "Extra kurzor eltávolítása" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Előző könyvjelző" @@ -18638,6 +19348,10 @@ msgid "Go to prior editor" msgstr "Előző lapfülre ugrás" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "Váltás az előző szerkesztőre az előzmények között" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Váltás az előző szerkesztőre ugyanezzel a forrással" @@ -18737,12 +19451,12 @@ msgstr "Pozíció kijelölése" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" -msgstr "Fél szó kijelölése balra" +msgid "Select part-word left (e.g. CamelCase)" +msgstr "Rész-szó kijelölése balra (pl. CamelCase)" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" -msgstr "Fél szó kijelölése jbbra" +msgid "Select part-word right (e.g. CamelCase)" +msgstr "Rész-szó kijelölése jobbra (pl. CamelCase)" #: lazarusidestrconsts.srkmecselleft msgid "Select Left" @@ -19056,7 +19770,7 @@ #: lazarusidestrconsts.srkmectoggleidespeedbtns msgctxt "lazarusidestrconsts.srkmectoggleidespeedbtns" msgid "View IDE speed buttons" -msgstr "IDE gyorsbillentyűk megjelenítése" +msgstr "IDE gyorsgombok megjelenítése" #: lazarusidestrconsts.srkmectogglelocals msgid "View local variables" @@ -19190,10 +19904,22 @@ msgid "Move cursor word right" msgstr "Kurzor mozgatása szavanként jobbra" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "Nagyítás" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "Kicsinyítés" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Parancs billentyűinek szerkesztése" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "Folytatás a következő egérfelengedés művelettel" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Megjegyzések összecsukása" @@ -19226,6 +19952,26 @@ msgid "Hide comments in selection" msgstr "Megjegyzések elrejtése a kijelölésben" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "Az egérlenyomás művelettel egyező gomb" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "Az egérlenyomás művelettel egyező sor" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "Az egérlenyomás művelettel egyező módosító" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "Az egérlenyomás művelettel egyező hely" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "Összes egérlenyomás művelet keresése" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Aktív Ifdef kinyitása" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.id.po lazarus-1.6+dfsg/languages/lazaruside.id.po --- lazarus-1.4.4+dfsg/languages/lazaruside.id.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.id.po 2016-01-05 13:41:02.000000000 +0000 @@ -74,6 +74,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -157,6 +161,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -378,6 +390,10 @@ msgid "Lowercase, first letter up" msgstr "Huruf kecil, huruf pertama besar" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "" @@ -541,10 +557,6 @@ msgid "Adjust top line due to comment in front" msgstr "Sesuaikan baris atas karena komentar di depan" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Semua file" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Secara alfabetik" @@ -590,7 +602,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "ketika pembuatan form baru, tambahkan ke otomatis-buat form" #: lazarusidestrconsts.dlgautodel @@ -627,6 +641,16 @@ msgid "Auto rename file lowercase" msgstr "Otomatis mengganti nama file ke huruf kecil" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Form tersedia:" @@ -706,6 +730,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1067,11 +1095,6 @@ msgid "Config files" msgstr "File Konfig:" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Lainnya" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1219,8 +1242,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Ekstensi ditetapkan pemakai (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1243,20 +1266,10 @@ msgid "Delete template " msgstr "Hapus template" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Desktop" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -#, fuzzy -#| msgid "Desktop files" -msgid "Desktop Files" -msgstr "File Desktop" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1265,6 +1278,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Arah" @@ -1349,6 +1374,7 @@ #: lazarusidestrconsts.dlgedcodetempl #, fuzzy #| msgid "Code templates" +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Template kode" @@ -1584,6 +1610,146 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Semua file" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Proyek Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Seting Desktop Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +#| msgid "Lazarus File" +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "File Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Form Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "File include Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Paket Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Proyek Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Sumber proyek Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Unit Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "File XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Cari teks di kursor" @@ -1747,6 +1913,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Warna latar depan" @@ -1783,11 +1953,6 @@ msgid "&From cursor" msgstr "" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opsi" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Ambil posisi" @@ -1804,6 +1969,10 @@ msgid "Grabber color" msgstr "Warna Penggengam" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Warna grid" @@ -1993,9 +2162,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Abaikan" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2107,15 +2278,19 @@ msgstr "Tingkat 1 (cepat dan ramah debugger)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt #, fuzzy -#| msgid "Level 3 (Level 2 + slow optimizations)" -msgid "3 (slow optimizations)" +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "Tingkat 3 (Tingkat 2 + optimasi lambat)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt #, fuzzy #| msgid "Level 0 (no extra optimizations)" @@ -2138,10 +2313,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Tampilkan Nomor Baris dalam Penelusuran Kesalahan Run-time" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Ambil seting desktop dari file" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Menu Utama" @@ -2167,6 +2338,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Margin dan saluran" @@ -2323,6 +2498,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2528,6 +2704,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2580,6 +2760,97 @@ msgid "Messages" msgstr "" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Debug" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Salah" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Pilihan Multi" @@ -2616,6 +2887,10 @@ msgid "Naming" msgstr "Penamaan" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming #, fuzzy #| msgid "no automatic renaming" @@ -2660,11 +2935,6 @@ msgid "Miscellaneous" msgstr "Lain-lain" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opsi" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2695,6 +2965,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Petunjuk untuk palet komponen" @@ -2887,7 +3163,9 @@ msgstr "Nama properti" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Buka proyek terakhir saat mulai" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2902,6 +3180,10 @@ msgid "Snap to grid" msgstr "Menempel ke grid" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Referensi" @@ -2910,6 +3192,10 @@ msgid "Regular e&xpressions" msgstr "" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Ganti &Semua" @@ -2961,6 +3247,18 @@ msgid "Rubberband Selection" msgstr "Pemilihan" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Tampilan (tidak untuk win32, contoh 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2992,9 +3290,9 @@ msgid "Run Parameters" msgstr "Parameter Menjalankan" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Simpan seting desktop ke file" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3069,6 +3367,10 @@ msgid "&Selected text" msgstr "" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Set semua elemen ke default" @@ -3081,6 +3383,26 @@ msgid "Set property Variable" msgstr "Set property Variable" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3210,6 +3532,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3317,6 +3643,11 @@ msgid "&Text to find" msgstr "&Teks yang Dicari" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3720,6 +4051,10 @@ msgid "File not unit" msgstr "File bukan unit" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Tipe Karuhun tidak benar" @@ -3769,6 +4104,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Tidak ada paket ditemukan untuk dependensi %s%s%s.%sSilahkan pilih paket yang sudah ada." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Nama Halaman terlalu panjang" @@ -3929,6 +4268,12 @@ msgid "Abandon changes?" msgstr "" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Batalkan" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Gugurkan semua" @@ -4043,6 +4388,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -4108,6 +4461,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4116,6 +4473,10 @@ msgid "Add %s to project?" msgstr "Tambah %s ke proyek?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4150,10 +4511,6 @@ msgid "File type" msgstr "Tipe File" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Mempunyai prosedur Register" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Paket Tidak benar" @@ -4181,21 +4538,10 @@ msgid "Show all" msgstr "Tampilkan Semua" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Paket %s hanya baca." -#: lazarusidestrconsts.lisaf2punitname -#, fuzzy -#| msgid "Unit Name: " -msgid "Unit name: " -msgstr "Nama Unit:" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4224,10 +4570,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Semua File" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4351,7 +4693,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Kesalahan terjadi saat terakhir startup ketika mengambil %s!%s%sAmbil proyek ini lagi?" #: lazarusidestrconsts.lisapplicationclassname @@ -4411,6 +4753,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4468,6 +4822,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures #, fuzzy #| msgid "Automatic features" @@ -4566,6 +4924,11 @@ msgid "Border space" msgstr "BatasSpasi" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Batas spasi Bawah. Nilai ini ditambahkan ke batas spasi dasar dan digunakan untuk spasi dibawah kontrol." @@ -4678,6 +5041,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4934,6 +5301,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "" @@ -5155,7 +5523,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5392,6 +5760,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5420,6 +5792,10 @@ msgid "Choose directory" msgstr "Pilih direktori" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Pilih direktori sumber FPC" @@ -5576,8 +5952,8 @@ msgid "Click here to browse the file" msgstr "" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5649,6 +6025,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6259,10 +6639,6 @@ msgid "Symbol" msgstr "Simbol" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Jalankan setelah" @@ -6461,6 +6837,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6884,24 +7264,187 @@ msgid "Types to replace" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Tidak ada" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +#| msgid "Code templates" +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Template kode" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7186,6 +7729,10 @@ msgid "Custom options" msgstr "Opsi Kustom" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Program Kustom" @@ -7382,9 +7929,10 @@ msgstr "" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Debug" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7697,22 +8245,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Proyek Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Direktori Tujuan" @@ -7940,6 +8480,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7958,6 +8503,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Jangan tutup proyek" @@ -8085,6 +8634,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8110,14 +8663,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8220,6 +8781,10 @@ msgid "Working Directory:" msgstr "Direktori Kerja:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8429,7 +8994,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8531,6 +9096,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8573,10 +9142,6 @@ msgid "Exclude filter" msgstr "Filter Kekecualian" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8597,10 +9162,6 @@ msgid "Execution stopped" msgstr "Eksekusi dihentikan" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8637,14 +9198,27 @@ msgid "Export" msgstr "Ekspor ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Daftar ekspor" @@ -8653,6 +9227,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8729,6 +9311,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -9083,10 +9666,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9282,6 +9861,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9314,6 +9897,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Komentar header untuk class" @@ -9366,6 +9953,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9454,17 +10042,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Tambah" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Buka" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9600,6 +10184,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Abaikan" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "" @@ -9616,9 +10206,9 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Abaikan, gunakan TForm sebagai leluhur" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9634,11 +10224,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9735,6 +10327,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9744,6 +10340,10 @@ msgid "Insert" msgstr "Insert" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9883,6 +10483,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9899,6 +10503,14 @@ msgid "Invalid delete" msgstr "Penghapusan tidak benar" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -10016,6 +10628,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10663,10 +11283,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Seting Desktop Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Direktori Lazarus" @@ -10679,24 +11295,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -#, fuzzy -#| msgid "Lazarus File" -msgid "Lazarus file" -msgstr "File Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Form Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Lazarus IDE" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "File include Lazarus" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "ID bahasa Lazarus (contoh. en, de, id, fi)" @@ -10709,30 +11311,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [opsi] <namafile-proyek>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Paket Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Proyek Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "File Info Proyek Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Sumber proyek Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Unit Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -11022,10 +11600,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -11216,6 +11790,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11729,6 +12307,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11753,6 +12347,14 @@ msgid "Jump to Previous Error" msgstr "Lompat ke kesalahan sebelumnya" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -11772,6 +12374,10 @@ msgid "New Component" msgstr "Komponen Baru" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Form Baru" @@ -12055,6 +12661,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -12256,13 +12866,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -#, fuzzy -#| msgid "IDE speed buttons" -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Lihat tombol cepat IDE" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12592,6 +13195,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12692,6 +13303,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12910,6 +13525,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -13227,6 +13843,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opsi" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -13346,6 +13968,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13357,10 +13980,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -13378,6 +13997,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -13456,8 +14079,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13515,7 +14138,9 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Edit Opsi Umum" #: lazarusidestrconsts.lispckeditfileproperties @@ -13526,10 +14151,6 @@ msgid "Install" msgstr "Instalasi" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Instalasi paket dalam IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Versi maksimum tidak benar" @@ -14010,9 +14631,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "File %s%s%s%ssaat ini tidak dalam unitpath dari paket.%s%sTambah %s%s%s ke UnitPath?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Ada fungsi lebih banyak dalam menu popup" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -14049,19 +14670,27 @@ msgstr "Unit Virtual" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -14100,8 +14729,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -14280,6 +14909,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage #, fuzzy #| msgid "Save Package?" @@ -14793,6 +15428,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14930,7 +15569,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Versi Maksimum %s%s%s tidak benar.%sSilahkan gunakan format mayor.minor.rilis.buatan%sSebagai contoh: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14942,7 +15581,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Versi Minimum %s%s%s tidak benar.%sSilahkan gunakan format mayor mayor.minor.rilis.buatan%sSebagai contoh: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15782,10 +16421,6 @@ msgid "Save current editor file" msgstr "simpan file editor saat ini" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15858,6 +16493,10 @@ msgid "Save " msgstr "Simpan" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Faktor Skala:" @@ -16027,6 +16666,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -16051,6 +16694,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -16211,14 +16858,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Maaf, tipe ini belum diimplementasikan" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Membesar" @@ -16429,10 +17076,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -17144,6 +17787,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Pernyataan ini tidak bisa diekstrak.%sSilahkan pilih beberapa kode untuk mengekstrak procedure/method baru." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -17202,6 +17849,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Fungsi: tambah delimiter path" @@ -17240,6 +17891,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -17264,6 +17931,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Anchor Atas" @@ -17606,6 +18278,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Tidak bisa mengubah data form teks dari file %s%s%s%s%skedalam aliran biner. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Tidak bisa meng-copy file" @@ -18161,6 +18837,7 @@ msgstr "Variabel" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18399,14 +19076,14 @@ msgid "XML Error" msgstr "" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "File XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -18550,10 +19227,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Dari file data (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18834,6 +19507,10 @@ msgid "Text marker commands" msgstr "Perintah penanda teks" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -19310,11 +19987,11 @@ msgstr "Tebak $IFDEF salah tempat" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -19428,6 +20105,18 @@ msgid "Invert Assignment" msgstr "Balikkan penempatan" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Left" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Right" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -19502,6 +20191,10 @@ msgid "Go to next editor" msgstr "Pergi ke editor berikutnya" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -19556,6 +20249,30 @@ msgid "pause program" msgstr "pause program" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Penanda sebelumnya" @@ -19564,6 +20281,10 @@ msgid "Go to prior editor" msgstr "Pergi ke editor sebelumnya" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -19669,11 +20390,11 @@ msgstr "Pilih Pergi ke XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -20138,10 +20859,22 @@ msgid "Move cursor word right" msgstr "Pindahkan kursor sekata ke kanan" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -20174,6 +20907,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.it.po lazarus-1.6+dfsg/languages/lazaruside.it.po --- lazarus-1.4.4+dfsg/languages/lazaruside.it.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.it.po 2016-01-05 13:41:02.000000000 +0000 @@ -82,6 +82,10 @@ msgid "History forward" msgstr "Storico avanti" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -165,6 +169,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Estesa: azioni (breakpoint, fold) su rilascio del click. Selezione con click e trascinamento" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -386,6 +398,10 @@ msgid "Lowercase, first letter up" msgstr "Minuscolo, prima lettera maiuscola" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Aggiungi operatore di assegnazione :=" @@ -549,10 +565,6 @@ msgid "Adjust top line due to comment in front" msgstr "Aggiusta linea in testa per il commento nel frontespizio" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Tutti i file" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Alfabeticamente" @@ -594,7 +606,9 @@ msgstr "La unit principale .lpr crea ogni form con Application.CreateForm(). Sono anche rilasciate automaticamente." #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Alla creazione di nuove form, aggiungile a quelle auto-create" #: lazarusidestrconsts.dlgautodel @@ -631,6 +645,16 @@ msgid "Auto rename file lowercase" msgstr "Rinomina automatica dei file in minuscolo" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Form disponibili:" @@ -708,6 +732,10 @@ msgid "Matching bracket pairs" msgstr "Riconosci parentesi a coppie" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1045,11 +1073,6 @@ msgid "Config files" msgstr "File di configurazione" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Varie" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Altre informazioni di debug" @@ -1183,8 +1206,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Definita dall'utente (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1207,18 +1230,10 @@ msgid "Delete template " msgstr "Cancella il modello " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Scrivania" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Bottoni -" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "File della scrivania" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Consigli:" @@ -1227,6 +1242,18 @@ msgid "Menus - " msgstr "Menu - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Direzione" @@ -1309,6 +1336,7 @@ msgstr "Sottocartella" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Modelli di codice" @@ -1538,6 +1566,154 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Tutti i file" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "File modelli di CodeTools" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Pacchetto Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Progetto Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Unit Delphi" + +#: lazarusidestrconsts.dlgfilterexecutable +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Eseguibile" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "File messaggi FPC" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Settaggi Desktop di Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Tipi di file dell'editor" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "File di Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "form di Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "File include di Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Altro file di Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Pacchetto di Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Progetto Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Sorgente del progetto Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Unit di Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "File Pascal" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programmi" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Files XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Trova il testo al cursore" @@ -1701,6 +1877,10 @@ msgid "Processing Instruction" msgstr "Elaborazione istruzioni" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Colore primo piano" @@ -1737,11 +1917,6 @@ msgid "&From cursor" msgstr "&Dal cursore" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opzioni" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Ottieni la posizione" @@ -1758,6 +1933,10 @@ msgid "Grabber color" msgstr "Reperisci il colore" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Colore della griglia" @@ -1939,9 +2118,11 @@ msgid "Included mixed state $IFDEF node" msgstr "Nodo incluso con $IFDEF misto" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignora" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2049,13 +2230,21 @@ msgstr "1 (veloce, compatibile con debugger)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +#, fuzzy +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "2 (ottimizzazione veloce)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +#, fuzzy +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "3 (ottimizzazione lenta)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" msgstr "0 (nessuna ottimizzazione)" @@ -2072,10 +2261,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Mostra i numeri di linea nelle backtrace degli errori di esecuzione" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Carica impostazioni del desktop dal file" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Menu principale" @@ -2097,6 +2282,10 @@ msgid "\"Make\" executable" msgstr "Eseguibile di \"Make\"" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Margini e spaziatura laterale" @@ -2253,6 +2442,7 @@ msgstr "Azione del mouse" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Singolo" @@ -2458,6 +2648,10 @@ msgid "Gutter" msgstr "Spaziatura" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Albero collassature" @@ -2510,6 +2704,104 @@ msgid "Messages" msgstr "Messaggi" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Debug" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Errore" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "Fatale" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Consiglio" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Importante" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "Nota" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "Panico" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "Prolisso" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Attenzione:" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Multiselezione" @@ -2546,6 +2838,10 @@ msgid "Naming" msgstr "Assegnazione nomi" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Nessuna rinomina automatica" @@ -2584,11 +2880,6 @@ msgid "Miscellaneous" msgstr "Varie" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opzioni" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Impostazioni velocità" @@ -2617,6 +2908,12 @@ msgid "Overwrite block" msgstr "Sovrascrivi blocco" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Consigli per le palette componenti" @@ -2803,7 +3100,9 @@ msgstr "Nome proprietà" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Apertura ultimo progetto alla partenza" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2818,6 +3117,10 @@ msgid "Snap to grid" msgstr "Griglia magnetica" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Riferimento" @@ -2826,6 +3129,10 @@ msgid "Regular e&xpressions" msgstr "Espressione ®olare" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Sostituisci &Tutto" @@ -2867,6 +3174,18 @@ msgid "Rubberband Selection" msgstr "Selezione a elastico" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Display (non per win32, esempio 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2896,9 +3215,9 @@ msgid "Run Parameters" msgstr "Parametri di esecuzione" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Salva le impostazioni del desktop su file" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2969,6 +3288,10 @@ msgid "&Selected text" msgstr "Testo &selezionato" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Imposta tutti gli elementi come predefiniti" @@ -2981,6 +3304,26 @@ msgid "Set property Variable" msgstr "Imposta la proprietà variabile" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Mostra tutte le unit" @@ -3104,6 +3447,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "Quando un controllo è prossimo ad essere allineato con un'altro, scatta nella posizione allineata." +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3205,6 +3552,11 @@ msgid "&Text to find" msgstr "&Testo da trovare" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Consigli della Classe/Proc corrente" @@ -3580,6 +3932,10 @@ msgid "File not unit" msgstr "Il file non è una unit" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Tipo antenato non valido" @@ -3625,6 +3981,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Non è stato trovato un pacchetto per la dipendenza \"%s\".%sScegliere un pacchetto esistente." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Nome pagina troppo lungo" @@ -3753,6 +4113,12 @@ msgid "Abandon changes?" msgstr "Abbandonare i cambiamenti?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Interrompi" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Interrompi tutto" @@ -3863,6 +4229,14 @@ msgid "Added property \"%s\" for %s." msgstr "Aggiunta proprietà \"%s\" per %s." +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Aggiungere file nella Cartella" @@ -3928,6 +4302,10 @@ msgid "&Address Breakpoint ..." msgstr "&Indirizzo del breakpoint ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "Aggiungere al percorso di ricerca degli include?" @@ -3936,6 +4314,10 @@ msgid "Add %s to project?" msgstr "Aggiungere %s al progetto?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "Aggiungere al percorso di ricerca delle unit?" @@ -3964,10 +4346,6 @@ msgid "File type" msgstr "Tipo file" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Possiede una procedura di registrazione" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Pacchetto non valido" @@ -3989,19 +4367,10 @@ msgid "Show all" msgstr "Mostra tutto" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Il file \"%s\"%ssi trova già nel pacchetto %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Il pacchetto %s è a sola lettura." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Nome unit:" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "Un file \"%s\" esiste gia.%sLo sostituisco?" @@ -4026,10 +4395,6 @@ msgid "<All build modes>" msgstr "<Tutti i build modes>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Tutti i files" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Tutte le opzioni ereditate" @@ -4147,7 +4512,7 @@ msgstr "Ancora il lato superiore al lato superiore del figlio. Usare BorderSpacing per fissare la distanza. BorderSpacing del figlio è ignorato." #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Si è verificato un errore all'ultimo avvio, nel caricare %s!%sCaricare di nuovo questo progetto?" #: lazarusidestrconsts.lisapplicationclassname @@ -4207,6 +4572,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Una impostazione utile sotto Windows è: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Completamento automatico: off" @@ -4264,6 +4641,10 @@ msgid "do not add character" msgstr "non aggiungere caratteri" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Completamenti e consigli" @@ -4352,6 +4733,12 @@ msgid "Border space" msgstr "Spazio del bordo" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Basso" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Spazio del bordo inferiore. Questo valore viene aggiunto al bordo inferiore, ed è usato per lo spazio sotto il controllo." @@ -4462,6 +4849,10 @@ msgid "Building Lazarus failed" msgstr "Costruzione di Lazarus fallita" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Differenza fra modi di costruzione" @@ -4710,6 +5101,7 @@ msgstr "caratteri insoliti" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Attenzione:" @@ -4925,7 +5317,7 @@ msgstr "Indentazione errata" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Si è verificato un errore nel cancellare%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5160,6 +5552,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Scegli un file pascal per esempi di indentazione" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "Scegli l'eseguibile del compilatore (%s)" @@ -5188,6 +5584,10 @@ msgid "Choose directory" msgstr "Scegliere la cartella" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Scegliere la cartella sorgente FPC" @@ -5342,9 +5742,9 @@ msgid "Click here to browse the file" msgstr "Clicca qui per sfogliare i file" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Clicca per vedere i possibili usi" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5413,6 +5813,10 @@ msgid "Pages" msgstr "Pagine" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "&Ripristina i valori predefiniti" @@ -5998,10 +6402,6 @@ msgid "Symbol" msgstr "Simbolo" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "File modelli di CodeTools" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Esegui dopo" @@ -6194,6 +6594,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Configura \"Build Lazarus\"" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Configura l'IDE di Lazarus" @@ -6631,9 +7035,177 @@ msgid "Unknown properties" msgstr "Proprietà sconosciute" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" -msgstr "L'utente ha deciso di terminare la conversione con il file %s" +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "L'utente ha deciso di terminare la conversione con il file %s" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Niente" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Singolo" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Browser del codice" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Modelli di codice" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Doppio" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Bottone" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Messaggi" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Sorgente editor" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "" #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" @@ -6766,7 +7338,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "Crea modalità di Debug e di Distribuzione" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -6913,6 +7485,10 @@ msgid "Custom options" msgstr "Opzioni personalizzate" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Programma personalizzato" @@ -7414,22 +7990,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "Risorse compatibili con Delphi. Raccomandato." -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Pacchetto Delphi" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Progetto Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Unit Delphi" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "I pacchetti \"Design time\" aggiungono componenti e voci di menu all'IDE. Possono essere usati dai progetti, ma non vengono compilati nei progetti. Il compilatore non troverà le units di questo pacchetto durante la compilazione del progetto." +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Cartella di destinazione" @@ -7651,6 +8219,11 @@ msgid "Import ..." msgstr "Importare ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7669,6 +8242,10 @@ msgid "Do not change" msgstr "Non modificare" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Non chiudere il progetto" @@ -7794,6 +8371,10 @@ msgid "Duplicate Unit" msgstr "Unit duplicata" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7819,14 +8400,22 @@ msgid "Editor Colors" msgstr "Colori dell'editor" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Tipi di file dell'editor" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Macro dell'editor" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Caricare uno schema" @@ -7929,6 +8518,10 @@ msgid "Working Directory:" msgstr "Cartella di lavoro:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8140,7 +8733,9 @@ msgstr "Errore in \"cartella di uscita delle unit\":" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +#, fuzzy +#| msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "ERRORE: modo di build non valido \"%s\"" #: lazarusidestrconsts.liserrorloadingfile @@ -8241,6 +8836,10 @@ msgid "Save Events to File" msgstr "Salva gli eventi in file" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Aggiungi Commento ..." @@ -8281,10 +8880,6 @@ msgid "Exclude filter" msgstr "Escludi Filtro" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Eseguibile" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "l'eseguibile \"%s\" è una cartella" @@ -8305,10 +8900,6 @@ msgid "Execution stopped" msgstr "Esecuzione bloccata" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programmi" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8343,14 +8934,27 @@ msgid "Export" msgstr "Esporta" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "Esporta tutte le voci nel file" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Esportare come HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Esporta elenco" @@ -8359,6 +8963,14 @@ msgid "Export package list (*.xml)" msgstr "Esportare la lista dei pacchetti (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Espressione:" @@ -8433,6 +9045,7 @@ msgstr "Salvataggio file fallito." #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "Fatale" @@ -8776,10 +9389,6 @@ msgid "fpcmake failed" msgstr "fpcmake fallito" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "File messaggi FPC" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "File messaggi FPC:" @@ -8981,6 +9590,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sVi sono altri %d gruppi vuoti. Cancellare tutti?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Il nome di un gruppo non può essere vuoto. Cancellare il gruppo?" @@ -9013,6 +9626,10 @@ msgid "Has Help" msgstr "Ha aiuto" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Intestazione commento per classe" @@ -9063,6 +9680,7 @@ msgstr "Nascondi con l'opzione di progetto (-vm%s)" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Consiglio" @@ -9151,17 +9769,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Aggiungi" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Apri" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9295,6 +9909,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Se volete usare due versioni diverse di Lazarus, dovete avviare la seconda da riga di comando, con il parametro \"primary-config-path\" o \"pcp\".%sPer esempio:" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignora" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Ignora tutto" @@ -9311,9 +9931,9 @@ msgid "Ignore this exception type" msgstr "Ignora questo tipo di eccezione" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ignora, usa TForm come antenato" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9329,12 +9949,14 @@ msgstr "Importare" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "Importante" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "Importa / Esporta" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" @@ -9428,6 +10050,10 @@ msgid "Inherited project component" msgstr "Componenti del progetto ereditati" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "Per poter creare una copia pulita del progetto/pacchetto, tutti i file nella seguente cartella saranno cancellati e il loro contenuto sarà perso.%sCancella tutti i file in \"%s\"?" @@ -9437,6 +10063,10 @@ msgid "Insert" msgstr "Inserisci" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "Inserisci la data" @@ -9576,6 +10206,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Invce di compilare il pacchetto creare un semplice Makefile." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Interattivo" @@ -9592,6 +10226,14 @@ msgid "Invalid delete" msgstr "Cancellazione non valida" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Espressione non valida:%s%s%s%s" @@ -9705,6 +10347,14 @@ msgid "Jump History" msgstr "Storico dei salti" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Salta alla procedura %s" @@ -10308,10 +10958,6 @@ msgid "Lazarus Default" msgstr "Lazarus predefiniti" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Settaggi Desktop di Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Cartella di Lazarus" @@ -10324,22 +10970,10 @@ msgid "Lazarus IDE v%s" msgstr "IDE Lazarus v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "File di Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "form di Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "IDE Lazarus" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "File include di Lazarus" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "ID della lingua di Lazarus (es.: en, de, br)" @@ -10352,30 +10986,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [opzioni] <nomefile-progetto>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Altro file di Lazarus" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Pacchetto di Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Progetto Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "File di informazione di progetto Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Sorgente del progetto Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Unit di Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10671,10 +11281,6 @@ msgid "list of all case values" msgstr "elenco di tutti i valori CASE" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Caricamento riuscito" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Caricamento di %s fallito." @@ -10857,6 +11463,10 @@ msgid "Manage Source Editors ..." msgstr "Gestire Editor sorgente ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "Massimo numero di processi paralleli. 0 per il valore predefinito (%s(" @@ -11282,6 +11892,22 @@ msgid "Jump to Implementation" msgstr "Salta a Implementation" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Salta al prossimo segnalibro" @@ -11298,6 +11924,14 @@ msgid "Jump to Previous Error" msgstr "Salta all'errore precedente" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Selezione in minuscolo" @@ -11315,6 +11949,10 @@ msgid "New Component" msgstr "Nuovo componente" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nuova form" @@ -11541,6 +12179,10 @@ msgid "S&how Execution Point" msgstr "&Mostra punto di esecuzione" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Ordina selezione ..." @@ -11719,11 +12361,6 @@ msgid "History" msgstr "Storico" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Visualizza gli speed buttons dell'IDE" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12050,6 +12687,14 @@ msgid "Undo last change to this grid" msgstr "Disfa l'ultimo cambiamento in questa griglia" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Valore \"%s\"" @@ -12158,6 +12803,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "Cartelle multiple sono separate da punto e virgola" @@ -12370,6 +13019,7 @@ msgstr "Non è in identificatore Pascal valido" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "Nota" @@ -12679,6 +13329,12 @@ msgid "Open XML" msgstr "Apri XML" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opzioni" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Opzioni cambiate, ricompilazione da zero con -B" @@ -12796,6 +13452,7 @@ msgstr "Il nome della pagina \"%s\" esiste già. Non agggiunta." #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "Panico" @@ -12807,10 +13464,6 @@ msgid "parser \"%s\": %s" msgstr "parser \"%s\": %s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "File Pascal" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Conteggio dei passi" @@ -12828,6 +13481,10 @@ msgid "Paste from clipboard" msgstr "Incolla dagli Appunti " +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Percorso" @@ -12902,9 +13559,9 @@ msgid "Disable I18N of lfm" msgstr "Disabilita I18N dell'lfm" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" -msgstr "Aggiungi file dal file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" +msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems msgid "Add other items" @@ -12961,7 +13618,9 @@ msgstr "Proprietà delle dipendenze" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Modifica opzioni generali" #: lazarusidestrconsts.lispckeditfileproperties @@ -12972,10 +13631,6 @@ msgid "Install" msgstr "Installa" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Installa pacchetto nell'IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Versione massima non valida" @@ -13421,9 +14076,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Il file \"%s\"%snon è attualmente nel percorso unit del pacchetto.%sAggiungere \"%s\" al percorso unit?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Ci sono altre funzioni nel menu a scomparsa" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13460,19 +14115,35 @@ msgstr "Unit virtuale" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +#, fuzzy +#| msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Cartella del pacchetto. Il parametro è l'ID del pacchetto" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +#, fuzzy +#| msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Il pacchetto include i percorsi di ricerca dei file. Il parametro è l'ID del pacchetto" +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +#, fuzzy +#| msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Percorso di ricerca dei sorgenti. Il parametro è l'ID del pacchetto" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +#, fuzzy +#| msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Percorso di ricerca delle unit. Il parametro è l'ID del pacchetto" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13507,9 +14178,9 @@ msgid "Circular dependencies found" msgstr "Trovate dipendenze circolari" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "Compilazione del pacchetto %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13677,6 +14348,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Uno o più pacchetti richiesti non sono stati trovati. Vedere il grafico dei pacchetti per i dettagli." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Salvare il pacchetto?" @@ -14112,6 +14789,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr ".lpi è il file principale di informazioni sul progetto, .lps è un file separato per i soli dati della sessione." +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "%s (posizione fuori dal sorgente)" @@ -14237,7 +14918,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La versione massima \"%s\" non è valida.%sUsare il formato major.minor.release.build%sPer esempio: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14247,7 +14928,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "La versione minima \"%s\" non è valida.%sUsare il formato major.minor.release.build%sPer esempio: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15049,10 +15730,6 @@ msgid "Save current editor file" msgstr "Salva file dell'editor corrente" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Salvato con successo." - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Salvato con le impostazioni dell'IDE" @@ -15123,6 +15800,10 @@ msgid "Save " msgstr "Salva " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Fattore di scala:" @@ -15292,6 +15973,10 @@ msgid "Short, no path" msgstr "Breve, senza percorso" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Mostra" @@ -15316,6 +16001,10 @@ msgid "Show empty units/packages" msgstr "Mostra unit/pacchetti vuoti" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "Mostra Glifi per" @@ -15473,14 +16162,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Spiacente, questo tipo non è ancora implementato" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "Ordina per visibilità" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Ascendente" @@ -15687,10 +16376,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Suggerire il nome predefinito del nuovo file in minuscolo" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Percorso di include sospetto" @@ -16344,6 +17029,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Questo comando non può essere estratto.%sSelezionare del codice per estrarre una nuova procedura/metodo." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Questo creerà una dipendenza circolare." @@ -16402,6 +17091,10 @@ msgid "Title (leave empty for default)" msgstr "Titolo (lasciare vuoto per usare il predefinito)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funzione: aggiunge in fondo il delimitatore di percorso" @@ -16438,6 +17131,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Scambia i nomi di file mostrati con il percorso completo o relativo" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "lo strumento \"%s\" non ha un eseguibile" @@ -16462,6 +17171,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "lo strumento ha terminato con codice di uscita %s. Usare il menu contestuale per maggiori informazioni." +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Cima" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Ancoraggio superiore" @@ -16786,6 +17501,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Impossibile convertire dati di form testo del file %s\"%s\"%sin formato di stream binario. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Impossibile copiare il file" @@ -17305,6 +18024,7 @@ msgstr "Variabile" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "Prolisso" @@ -17539,14 +18259,14 @@ msgid "XML Error" msgstr "Errore XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Files XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Errore del parser XML nel file%s%sErrore: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Potete disabilitarlo per le singole form usando l'editor dei pacchetti" @@ -17687,10 +18407,6 @@ msgid "Filter the lines in list with a string" msgstr "Filtrare le righe nella lista con una stringa" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Sorgente del form (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Trovati, ma non elencati qui:" @@ -17970,6 +18686,10 @@ msgid "Text marker commands" msgstr "Comandi della selezione del testo" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Comandi del menu dei pacchetti" @@ -18412,11 +19132,15 @@ msgstr "Indovina $IFDEF malposti" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +#, fuzzy +#| msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Sposta il cursore di una mezza parola a sinistra" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +#, fuzzy +#| msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Sposta il cursore di una mezza parola a destra" #: lazarusidestrconsts.srkmecimestr @@ -18528,6 +19252,18 @@ msgid "Invert Assignment" msgstr "Inverti assegnamento" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Sinistra" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Destra" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Sposta il cursore a sinistra" @@ -18600,6 +19336,10 @@ msgid "Go to next editor" msgstr "Vai all'editor successivo" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Vai al successivo editor con lo stesso sorgente" @@ -18652,6 +19392,30 @@ msgid "pause program" msgstr "poni in pausa il programma" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Segnalibri precedente" @@ -18660,6 +19424,10 @@ msgid "Go to prior editor" msgstr "Vai all'editor precedente" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Vai all'editor precedente con lo stesso sorgente" @@ -18759,11 +19527,15 @@ msgstr "Seleziona fino a XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +#, fuzzy +#| msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "Seleziona mezza parola a sinistra" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +#, fuzzy +#| msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "Seleziona mezza parola a destra" #: lazarusidestrconsts.srkmecselleft @@ -19212,10 +19984,22 @@ msgid "Move cursor word right" msgstr "Sposta il cursore di una parola a destra" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Edita i tasti dei comandi" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Collassa i commenti" @@ -19248,6 +20032,26 @@ msgid "Hide comments in selection" msgstr "Nascondi i commenti nella selezione" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Espandi $IFDEF attivi" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.ja.po lazarus-1.6+dfsg/languages/lazaruside.ja.po --- lazarus-1.4.4+dfsg/languages/lazaruside.ja.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.ja.po 2016-01-05 13:41:02.000000000 +0000 @@ -74,6 +74,10 @@ msgid "History forward" msgstr "履歴を前進" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -157,6 +161,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "拡張、マウスボタンを離した時に動作(ブレークポイント、折りたたみ)を行う。マウスボタンの押しと移動で選択" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -378,6 +390,10 @@ msgid "Lowercase, first letter up" msgstr "頭文字以外を小文字に" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "代入演算子 := を追加" @@ -541,10 +557,6 @@ msgid "Adjust top line due to comment in front" msgstr "前のコメントのため先頭行を調整" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "すべてのファイル" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "アルファベット順に" @@ -586,7 +598,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "新しいフォームを作成した時、自動生成フォームに追加" #: lazarusidestrconsts.dlgautodel @@ -623,6 +637,16 @@ msgid "Auto rename file lowercase" msgstr "ファイル名を自動的に小文字化" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "利用可能フォーム" @@ -700,6 +724,10 @@ msgid "Matching bracket pairs" msgstr "括弧のペアを揃える" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1041,11 +1069,6 @@ msgid "Config files" msgstr "設定ファイル" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "その他" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "他のデバッグ情報" @@ -1179,8 +1202,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "ユーザー定義拡張子(.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1203,18 +1226,10 @@ msgid "Delete template " msgstr "テンプレートを削除" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "デスクトップ" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "ボタン -" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "デスクトップパッケージ" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "ヒント" @@ -1223,6 +1238,18 @@ msgid "Menus - " msgstr "メニュー -" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "方向" @@ -1305,6 +1332,7 @@ msgstr "サブディレクトリ" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "コードテンプレート" @@ -1535,6 +1563,154 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "すべてのファイル" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "CodeToolsテンプレートファイル" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Delphiパッケージ" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Delphiプロジェクト" + +#: lazarusidestrconsts.dlgfilterdelphiunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Delphiユニット" + +#: lazarusidestrconsts.dlgfilterexecutable +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "実行ファイル" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "FPC メッセージファイル" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Lazarusデスクトップ設定" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "ファイル型を編集" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Lazarusファイル" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Lazarusフォーム" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Lazarusインクルードファイル" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Lazarusのその他のファイル" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Lazarusパッケージ" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Lazarusプロジェクト" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Lazarusプロジェクトソース" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Lazarusユニット" + +#: lazarusidestrconsts.dlgfilterpascalfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Pascalファイル" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "プログラム" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML ファイル" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "カーソル位置のテキストを検索" @@ -1698,6 +1874,10 @@ msgid "Processing Instruction" msgstr "処理指示" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "前景" @@ -1734,11 +1914,6 @@ msgid "&From cursor" msgstr "カーソルから(&F)" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "オプション" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "位置を取得" @@ -1755,6 +1930,10 @@ msgid "Grabber color" msgstr "グラバーの色" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "グリッド色" @@ -1936,9 +2115,11 @@ msgid "Included mixed state $IFDEF node" msgstr "インクルードされた混合状態の$IFDEFコード" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "無視" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2048,13 +2229,21 @@ msgstr "1 (迅速、デバッガ親和的)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +#, fuzzy +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "2 (迅速最適化)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +#, fuzzy +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "3 (緩慢最適化)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" msgstr "0 (最適化なし)" @@ -2071,10 +2260,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "実行時エラーの後方探索で行番号を表示" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "ファイルからデスクトップの設定を読み込む" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "メインメニュー" @@ -2096,6 +2281,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "マージンと余白" @@ -2252,6 +2441,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "シングル" @@ -2457,6 +2647,10 @@ msgid "Gutter" msgstr "ガター" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "折りたたみツリー" @@ -2509,6 +2703,99 @@ msgid "Messages" msgstr "メッセージ" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "デバッグ" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "エラー" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "ヒント" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "警告" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "複数選択" @@ -2545,6 +2832,10 @@ msgid "Naming" msgstr "ネーミング" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "自動的にリネームしない" @@ -2583,11 +2874,6 @@ msgid "Miscellaneous" msgstr "その他" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "オプション" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "速度設定" @@ -2618,6 +2904,12 @@ msgid "Overwrite block" msgstr "ブロックを上書き" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "コンポーネントパレットのヒント" @@ -2804,7 +3096,9 @@ msgstr "プロパティ名" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "起動時に最後に開いていたプロジェクトを開く" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2819,6 +3113,10 @@ msgid "Snap to grid" msgstr "グリッドに留まる" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "参照" @@ -2827,6 +3125,10 @@ msgid "Regular e&xpressions" msgstr "正規表現(&x)" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "すべて置換(&A)" @@ -2868,6 +3170,18 @@ msgid "Rubberband Selection" msgstr "ラバーバンド選択" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "表示 (win32では無効です。例. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2897,9 +3211,9 @@ msgid "Run Parameters" msgstr "実行パラメーター" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "デスクトップの設定をファイル保存" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2970,6 +3284,10 @@ msgid "&Selected text" msgstr "選択されたテキスト(&S)" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "すべての要素を既定値に設定" @@ -2982,6 +3300,26 @@ msgid "Set property Variable" msgstr "プロパティ変数を設定" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "すべてのユニットを表示" @@ -3105,6 +3443,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3206,6 +3548,11 @@ msgid "&Text to find" msgstr "検索テキスト(&T)" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "現在のクラス/手続きヒント" @@ -3585,6 +3932,10 @@ msgid "File not unit" msgstr "ファイルはユニットでない" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "無効な先祖型" @@ -3634,6 +3985,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "依存関係%s%s%sにパッケージが見つかりませんでした。%s存在しているパッケージを一つ選択してください。" +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "ページ名が長すぎます" @@ -3798,6 +4153,12 @@ msgid "Abandon changes?" msgstr "変更を破棄しますか?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "中止" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "全て中止" @@ -3908,6 +4269,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "ディレクトリにファイルを追加" @@ -3973,6 +4342,10 @@ msgid "&Address Breakpoint ..." msgstr "アドレスブレークポイント(&A) ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -3981,6 +4354,10 @@ msgid "Add %s to project?" msgstr "%s をプロジェクトに追加しますか?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4009,10 +4386,6 @@ msgid "File type" msgstr "ファイルのタイプ" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Register手続きを保有" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "無効なパッケージ" @@ -4038,21 +4411,10 @@ msgid "Show all" msgstr "すべて表示" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -#, fuzzy,badformat -#| msgid "The file %s%s%s%sis already in the package %s." -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "ファイル %s%s%s%sは既にパッケージ%sにあります。" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "パッケージ %s は読み込み専用です。" -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "ユニット名: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4079,10 +4441,6 @@ msgid "<All build modes>" msgstr "<全ての構築モード>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "すべてのファイル" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "すべての継承されたオプション" @@ -4208,7 +4566,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "最近の%s!%s%sの読み込み時に起動時にエラーが起こりました。またこのプロジェクトを読み込みますか?" #: lazarusidestrconsts.lisapplicationclassname @@ -4270,6 +4628,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Windowsシステムに対する便利な設定は:$(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "自動補完:off" @@ -4327,6 +4697,10 @@ msgid "do not add character" msgstr "文字を追加しない" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "補完とヒント" @@ -4415,6 +4789,12 @@ msgid "Border space" msgstr "境界間隔" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "底" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "下部の境界間隔。この値は基本境界間隔に加算され、コントロールの下の間隔に用いられます。" @@ -4525,6 +4905,10 @@ msgid "Building Lazarus failed" msgstr "Lazarusの構築の失敗" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "構築モード間の違い" @@ -4775,6 +5159,7 @@ msgstr "特殊な文字" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "警告" @@ -4992,7 +5377,7 @@ msgstr "間違ったインデント" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "削除中に例外が発生しました %s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5230,6 +5615,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "インデント例に対する Pascal ファイルを選択してください" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5258,6 +5647,10 @@ msgid "Choose directory" msgstr "ディレクトリを選択してください" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "FPC ソースディレクトリを選択してください" @@ -5416,9 +5809,9 @@ msgid "Click here to browse the file" msgstr "ファイルを閲覧するためにここをクリックしてください。" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "可能な利用方法を見るにはクリック" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5487,6 +5880,10 @@ msgid "Pages" msgstr "ページ" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "既定値に戻す" @@ -6077,10 +6474,6 @@ msgid "Symbol" msgstr "シンボル" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "CodeToolsテンプレートファイル" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "次の後に実行:" @@ -6277,6 +6670,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "%sLazarus構築 %s を設定" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Lazarus IDEを設定" @@ -6716,8 +7113,176 @@ msgid "Unknown properties" msgstr "不明なプロパティ" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "なし" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "シングル" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "コードエクスプローラ" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "コードテンプレート" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "ダブル" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "ボタン" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "メッセージ" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "ソースエディタ" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -6865,7 +7430,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "デバッグとリリースモードを作成" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -7012,6 +7577,10 @@ msgid "Custom options" msgstr "カスタムオプション" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "カスタムプログラム" @@ -7206,9 +7775,10 @@ msgstr "ウィンドウ全体への更新を無効/有効" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "デバッグ" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7525,22 +8095,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Delphiパッケージ" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphiプロジェクト" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Delphiユニット" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "\"設計時\"パッケージはコンポーネントとメニューアイテムをIDEに追加します。プロジェクトはそれらを使用できますがプロジェクト内に束ねる(compiled into)ことはできません。コンパイラはプロジェクトをコンパイルする際にこのパッケージのユニットを見つけないでしょう。" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "行き先のディレクトリ" @@ -7768,6 +8330,11 @@ msgid "Import ..." msgstr "インポート ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7786,6 +8353,10 @@ msgid "Do not change" msgstr "変更しない" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "プロジェクトを閉じない" @@ -7915,6 +8486,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7940,14 +8515,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "ファイル型を編集" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "マクロエディタ" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "スキームを読み込む" @@ -8050,6 +8633,10 @@ msgid "Working Directory:" msgstr "作業ディレクトリ:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8263,7 +8850,9 @@ msgstr "\"unit output directory\"の検索パスにエラー:" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +#, fuzzy +#| msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "エラー:無効な構築モード \"%s\"" #: lazarusidestrconsts.liserrorloadingfile @@ -8368,6 +8957,10 @@ msgid "Save Events to File" msgstr "イベントをファイルに保存" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "コメントを追加 ..." @@ -8408,10 +9001,6 @@ msgid "Exclude filter" msgstr "除外フィルタ" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "実行ファイル" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8432,10 +9021,6 @@ msgid "Execution stopped" msgstr "実行を停止しました" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "プログラム" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8470,14 +9055,27 @@ msgid "Export" msgstr "エクスポート" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "HTMLとしてエクスポート" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "エクスポートリスト" @@ -8486,6 +9084,14 @@ msgid "Export package list (*.xml)" msgstr "パッケージリスト(*.xml)をエクスポート" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "評価" @@ -8560,6 +9166,7 @@ msgstr "ファイルの保存に失敗" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8914,10 +9521,6 @@ msgid "fpcmake failed" msgstr "fpcmakeに失敗しました" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "FPC メッセージファイル" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9113,6 +9716,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%s %d の空のグループがあります。全て削除しますか?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "グループ名は空であってはなりません。ブレークポイントのグループを消去しますか?" @@ -9145,6 +9752,10 @@ msgid "Has Help" msgstr "ヘルプあり" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "クラスのためのヘッダコメント" @@ -9195,6 +9806,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "ヒント" @@ -9283,17 +9895,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "追加" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "開く" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9431,6 +10039,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Lazarus の異なる 2 つのバージョンを共に使用されたいのであれば、2 つ目の Lazarus を primary-config-path あるいは pcp のコマンドライン引数で開始しなければなりません。%s%s例:%s" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "無視" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "すべて無視" @@ -9447,9 +10061,9 @@ msgid "Ignore this exception type" msgstr "この例外型を無視" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "無視し、TFormを先祖型に使用" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9465,11 +10079,13 @@ msgstr "インポート" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9564,6 +10180,10 @@ msgid "Inherited project component" msgstr "継承されたプロジェクトコンポーネント" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil #, fuzzy,badformat #| msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%s%sDelete all files in %s%s%s?" @@ -9575,6 +10195,10 @@ msgid "Insert" msgstr "挿入" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "日付を挿入" @@ -9714,6 +10338,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "コンパイルパッケージの代わりに簡単なMakefileを作成" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "双方向的" @@ -9730,6 +10358,14 @@ msgid "Invalid delete" msgstr "無効な削除" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "無効な式:%s%s%s%s" @@ -9847,6 +10483,14 @@ msgid "Jump History" msgstr "移動履歴" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10452,10 +11096,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazarusデスクトップ設定" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazarusディレクトリ" @@ -10468,22 +11108,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Lazarusファイル" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarusフォーム" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Lazarus IDE" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarusインクルードファイル" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus言語ID(例: en, de, br, fi, ja)" @@ -10496,30 +11124,6 @@ msgid "lazarus [options] <project-filename>" msgstr "Lazarus [オプション]<プロジェクト-ファイル名>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Lazarusのその他のファイル" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarusパッケージ" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarusプロジェクト" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarusプロジェクト情報ファイル" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Lazarusプロジェクトソース" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Lazarusユニット" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10807,10 +11411,6 @@ msgid "list of all case values" msgstr "すべてのcase値のリスト" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "読み込みに成功" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "%sの読み込みに失敗しました。" @@ -10997,6 +11597,10 @@ msgid "Manage Source Editors ..." msgstr "ソースエディタの管理 ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11422,6 +12026,22 @@ msgid "Jump to Implementation" msgstr "実装部へ移動" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "次のブックマークへ移動" @@ -11438,6 +12058,14 @@ msgid "Jump to Previous Error" msgstr "前のエラーへ移動" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "選択部を小文字化" @@ -11455,6 +12083,10 @@ msgid "New Component" msgstr "新しいコンポーネント" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "新規フォーム" @@ -11681,6 +12313,10 @@ msgid "S&how Execution Point" msgstr "実行ポイントを表示(&h)" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "選択部分をソートする ..." @@ -11859,11 +12495,6 @@ msgid "History" msgstr "履歴" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "IDEスピードボタンを表示" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12182,6 +12813,14 @@ msgid "Undo last change to this grid" msgstr "最後の変更をこのグリッドまで元に戻す" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "値 \"%s\"" @@ -12280,6 +12919,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12494,6 +13137,7 @@ msgstr "Pascal の有効な識別子ではありません" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12807,6 +13451,12 @@ msgid "Open XML" msgstr "Open XML" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "オプション" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "オプションが変更されたので、-Bでクリーン再コンパイルしています" @@ -12924,6 +13574,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -12935,10 +13586,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Pascalファイル" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "通過カウント" @@ -12956,6 +13603,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Path" @@ -13030,8 +13681,8 @@ msgid "Disable I18N of lfm" msgstr "lfmの国際化を無効化" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13089,7 +13740,9 @@ msgstr "依存関係属性" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "一般的なオプションを編集" #: lazarusidestrconsts.lispckeditfileproperties @@ -13100,10 +13753,6 @@ msgid "Install" msgstr "インストール" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "IDEにパッケージをインストール" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "無効な最大バージョン" @@ -13564,9 +14213,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "ファイル %s%s%s%sはまだパッケージのユニットパスにありません。%s%s %s%s%s をユニットパスに追加しますか?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "ポップアップメニューの中にもっと多くの機能があります。" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13603,19 +14252,35 @@ msgstr "仮想ユニット" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +#, fuzzy +#| msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "パッケージディレクトリ。引数はパッケージID" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +#, fuzzy +#| msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "パッケージのインクルードファイルのパス。引数はパッケージID" +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +#, fuzzy +#| msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "パッケージのソースファイルのパス。引数はパッケージID" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +#, fuzzy +#| msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "パッケージのユニット検索パス。引数はパッケージID" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13654,9 +14319,9 @@ msgid "Circular dependencies found" msgstr "循環参照が見つかりました" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "パッケージ%sをコンパイル中" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13832,6 +14497,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "一つ以上の要求されたパッケージが見つかりませんでした。詳細はパッケージグラフをご参照ください。" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "パッケージを保存しますか?" @@ -14345,6 +15016,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14476,7 +15151,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "バージョンの上限値%s%s%sが無効です。%sメジャー.マイナー.リリース.ビルドの書式を用いてください。%s例: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14488,7 +15163,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "バージョンの下限値%s%s%sが無効です。%sメジャー.マイナー.リリース.ビルドの書式を用いてください。%s例: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15302,10 +15977,6 @@ msgid "Save current editor file" msgstr "現在のエディタファイルを保存" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "保存に成功" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "IDE の設定と共に保存されます" @@ -15380,6 +16051,10 @@ msgid "Save " msgstr "保存 " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "スケーリング係数:" @@ -15549,6 +16224,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "表示" @@ -15573,6 +16252,10 @@ msgid "Show empty units/packages" msgstr "空のユニットやパッケージを表示" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor #, fuzzy #| msgid "Show Glyphs for:" @@ -15734,14 +16417,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "すみません、この型はまだ実装されていません" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "昇順" @@ -15954,10 +16637,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "新しいデフォルトファイル名を小文字で提案" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "疑わしいインクルードパス" @@ -16701,6 +17380,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "この文は抽出できません。%s新しい手続き/メソッドを抽出するためにコードの一部を選択してください。" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "これは循環参照を招くでしょう。" @@ -16759,6 +17442,10 @@ msgid "Title (leave empty for default)" msgstr "タイトル(デフォルトの場合空欄にしておいて下さい)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "機能:パスの区切り記号を添える" @@ -16795,6 +17482,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "ファイル名をフルパスで表示するか相対パスで表示するかの切り替え" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16819,6 +17522,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "上端" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "上端アンカー" @@ -17157,6 +17866,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "ファイル%s%s%s%s%sのテキストフォームデータをバイナリストリームに変換できません。(%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "ファイルをコピーできません。" @@ -17727,6 +18440,7 @@ msgstr "変数" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -17965,14 +18679,14 @@ msgid "XML Error" msgstr "XMLエラー" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML ファイル" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "ファイル%s%sでXMLパーサエラー: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "パッケージエディタを通して個々のフォームでこれを無効化できます。" @@ -18114,10 +18828,6 @@ msgid "Filter the lines in list with a string" msgstr "リスト内の行を文字列で選別" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "フォームデータファイル(*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "見つかりましたが、ここにはリストされません:" @@ -18396,6 +19106,10 @@ msgid "Text marker commands" msgstr "テキストマーカーコマンド" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "パッケージメニューコマンド" @@ -18838,11 +19552,15 @@ msgstr "不適切に置かれた$IFDEFを推察" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +#, fuzzy +#| msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "カーソルを左側の単語の中程まで移動" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +#, fuzzy +#| msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "カーソルを右側の単語の中程まで移動" #: lazarusidestrconsts.srkmecimestr @@ -18954,6 +19672,18 @@ msgid "Invert Assignment" msgstr "代入を反転" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "左" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "右" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "カーソルを左に移動" @@ -19026,6 +19756,10 @@ msgid "Go to next editor" msgstr "次のエディタに移動" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "同じソースをもつ次のエディタに移動" @@ -19078,6 +19812,30 @@ msgid "pause program" msgstr "プログラムを一時停止" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "前のブックマーク" @@ -19086,6 +19844,10 @@ msgid "Go to prior editor" msgstr "前のエディタに移動" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "同じソースをもつ前のエディタに移動" @@ -19185,11 +19947,15 @@ msgstr " Goto XYを選択" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +#, fuzzy +#| msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "左側の単語の中程まで選択" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +#, fuzzy +#| msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "右側の単語の中程選択" #: lazarusidestrconsts.srkmecselleft @@ -19638,10 +20404,22 @@ msgid "Move cursor word right" msgstr "カーソルを単語の右側に移動" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "コマンドのキーを編集" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "コメントを折り畳み" @@ -19674,6 +20452,26 @@ msgid "Hide comments in selection" msgstr "選択範囲のコメントを隠す" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "アクティブなifdefを展開" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.lt.po lazarus-1.6+dfsg/languages/lazaruside.lt.po --- lazarus-1.4.4+dfsg/languages/lazaruside.lt.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.lt.po 2016-01-05 13:41:02.000000000 +0000 @@ -77,6 +77,10 @@ msgid "History forward" msgstr "Pirmyn praeityje" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -164,6 +168,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Išplėstinis, veiksmai (stabdos taškas, lankstymas) atleidus pelės klavišą. Žymėjimas velkant nuspaustą pelę." +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -385,6 +397,10 @@ msgid "Lowercase, first letter up" msgstr "Mažosiomis raidėmis, pirmoji - didžioji" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Padėti priskyrimo operatorių :=" @@ -548,10 +564,6 @@ msgid "Adjust top line due to comment in front" msgstr "Turi matytis ir komentaras" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Visi failai" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Pagal abėcėlę" @@ -593,7 +605,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Kuriant nauja formą, ją įdėti į automatiškai kuriamų formų sąrašą" #: lazarusidestrconsts.dlgautodel @@ -632,6 +646,16 @@ msgid "Auto rename file lowercase" msgstr "Failą automatiškai pervadinti mažosiomis raidėmis" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Esamos formos:" @@ -709,6 +733,10 @@ msgid "Matching bracket pairs" msgstr "Atitinkančios skliaustų poros" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1058,11 +1086,6 @@ msgid "Config files" msgstr "Nustatymų failai" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Kiti" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1198,8 +1221,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Naudotojo nurodytas plėtinys (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1222,18 +1245,10 @@ msgid "Delete template " msgstr "Pašalinti šabloną" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Darbalaukis" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Klavišai - " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Darbalaukio failai" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Užuominos" @@ -1242,6 +1257,18 @@ msgid "Menus - " msgstr "Meniu - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Kryptis" @@ -1324,6 +1351,7 @@ msgstr "Poaplankis" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Kodo šablonai" @@ -1555,6 +1583,153 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Visi failai" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Delphi paketas" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Delphi projektas" + +#: lazarusidestrconsts.dlgfilterdelphiunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Delphi modulis" + +#: lazarusidestrconsts.dlgfilterexecutable +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Vykdomasis failas" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "FPC pranešimo failas" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Lazarus darbalaukio nuostatos" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Rengyklės failų tipai" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Lazarus failas" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Lazarus forma" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Lazarus įdedamasis failas" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Kitoks Lazarus failas" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Lazarus paketas" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Lazarus projektas" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Lazarus projekto pirminis kodas" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Lazarus modulis" + +#: lazarusidestrconsts.dlgfilterpascalfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Paskalio failas" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programos" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML failai" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Ieškoti ties žymekliu esančio teksto" @@ -1718,6 +1893,10 @@ msgid "Processing Instruction" msgstr "Apdorojimo komanda" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Priekinė spalva" @@ -1754,11 +1933,6 @@ msgid "&From cursor" msgstr "Nuo žy&meklio" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Parinktys" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Sužinoti poziciją" @@ -1775,6 +1949,10 @@ msgid "Grabber color" msgstr "Rankenėlės spalva" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Tinklelio spalva" @@ -1956,9 +2134,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignoruoti" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2073,16 +2253,20 @@ #: lazarusidestrconsts.dlglevel2opt #, fuzzy -#| msgid "Level 2 (Level 1 + quick optimizations)" -msgid "2 (quick optimizations)" +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "2 lygis (1 lygis + registro duomenų bereikalingų pakartotinų įkėlimų eliminavimas)" #: lazarusidestrconsts.dlglevel3opt #, fuzzy -#| msgid "Level 3 (Level 2 + slow optimizations)" -msgid "3 (slow optimizations)" +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "3 lygis (2 lygis + kitos, ilgai daromos optimizacijos)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt #, fuzzy #| msgid "Level 0 (no extra optimizations)" @@ -2101,10 +2285,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Rodyti eilučių numerius veikos metu įvykusių klaidų pėdsako pranešimuose" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Įkelti darbalaukio nuostatas iš failo" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Pagrindinis meniu" @@ -2126,6 +2306,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Paraštės" @@ -2282,6 +2466,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Vienkartis" @@ -2487,6 +2672,10 @@ msgid "Gutter" msgstr "Paraštė" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Sulankstymo medis" @@ -2539,6 +2728,99 @@ msgid "Messages" msgstr "Pranešimai" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Derinimas" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Klaida" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Užuomina" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Įspėjimas" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Pažymėti kelis" @@ -2575,6 +2857,10 @@ msgid "Naming" msgstr "Pavadinimų suteikimas" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Automatiškai nepervadinti" @@ -2613,11 +2899,6 @@ msgid "Miscellaneous" msgstr "Įvairūs" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Parinktys" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Greičio nuostatos" @@ -2648,6 +2929,12 @@ msgid "Overwrite block" msgstr "Pakeisti bloką" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Sufleriai komponenčių paletei" @@ -2838,7 +3125,9 @@ msgstr "Savybės pavadinimas" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Startuojant atverti paskutini syk atvertą projektą" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2853,6 +3142,10 @@ msgid "Snap to grid" msgstr "Pritraukti prie tinklelio taškų" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Rodyklė" @@ -2861,6 +3154,10 @@ msgid "Regular e&xpressions" msgstr "&Reguliarusis reiškinys" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "P&akeisti visus" @@ -2902,6 +3199,18 @@ msgid "Rubberband Selection" msgstr "Žymėjimo rėmelis" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Ekranas (neskirta win32; pvz.: 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2931,9 +3240,9 @@ msgid "Run Parameters" msgstr "Starto parametrai" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Įrašyti darbalaukio nuostatas faile" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3004,6 +3313,10 @@ msgid "&Selected text" msgstr "Paž&ymėtame tekste" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Visiems priskirti numatytas vertes" @@ -3016,6 +3329,26 @@ msgid "Set property Variable" msgstr "„Set“ kintamojo pavadinimas" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Rodyti visus modulius" @@ -3139,6 +3472,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3240,6 +3577,11 @@ msgid "&Text to find" msgstr "Ieškomasis t&ekstas" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Veikiamosios klasės/procedūros užuomina" @@ -3621,6 +3963,10 @@ msgid "File not unit" msgstr "Failas nėra modulis" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Klaidingas protėvio tipas" @@ -3670,6 +4016,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "%s%s%s priklausiniui nerastas paketas.%sNurodykite egzistuojantį paketą." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Per ilgas pavadinimas" @@ -3834,6 +4184,12 @@ msgid "Abandon changes?" msgstr "Pamiršti pakeitimus?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Nutraukti" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Nutraukti viską" @@ -3946,6 +4302,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Pridėti aplanko failus" @@ -4011,6 +4375,10 @@ msgid "&Address Breakpoint ..." msgstr "&Adreso stabdos taškas…" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4019,6 +4387,10 @@ msgid "Add %s to project?" msgstr "Įdėti %s į projektą?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4047,10 +4419,6 @@ msgid "File type" msgstr "Failo tipas" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Turi procedūra Register" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Klaidingas paketas" @@ -4076,21 +4444,10 @@ msgid "Show all" msgstr "Rodyti visus" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -#, fuzzy,badformat -#| msgid "The file %s%s%s%sis already in the package %s." -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Failas %s%s%s%s jau yra pakete %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Paketas %s tik skaitymui." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Modulio pavadinimas: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4117,10 +4474,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Visi failai" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Viso paveldėtos parinktys" @@ -4246,7 +4599,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Paskutinio starto metu įkeliant projektą %s įvyko klaida!%s%sVėl įkelti šį projektą?" #: lazarusidestrconsts.lisapplicationclassname @@ -4310,6 +4663,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Naudinga nuostata Windows sistemoje: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Automatinis baigimas: išjungtas" @@ -4367,6 +4732,10 @@ msgid "do not add character" msgstr "neįdėti simbolio" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Užbaigimai ir užuominos" @@ -4455,6 +4824,12 @@ msgid "Border space" msgstr "Kraštinės plotis" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Apačion" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4569,6 +4944,10 @@ msgid "Building Lazarus failed" msgstr "Lazarus darymas nepavyko" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Darymo veiksenų skirtumai" @@ -4829,6 +5208,7 @@ msgstr "bereikšmiai simboliai" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Įspėjimas" @@ -5046,7 +5426,7 @@ msgstr "Bloga įtrauka" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Įvyko išimtinė situacija trinant%s„%s:%s“%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5286,6 +5666,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Lygiavimo pavyzdžiams parinkite paskalio failą" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5314,6 +5698,10 @@ msgid "Choose directory" msgstr "Nurodykite aplanką" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Nurodykite FPC pirminio kodo aplanką" @@ -5472,9 +5860,9 @@ msgid "Click here to browse the file" msgstr "Čia paspaudę, galėsite naršyti failo" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Paspaudus bus parodyti galimi naudojimai" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5543,6 +5931,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6141,10 +6533,6 @@ msgid "Symbol" msgstr "Simbolis" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Startuoti po" @@ -6343,6 +6731,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Derinti %sDaryti Lazarus%s" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Derinti Lazarus IKA" @@ -6782,12 +7174,180 @@ msgid "Units to replace" msgstr "Keistini moduliai" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" -msgstr "Nežinomos savybės" +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "Nežinomos savybės" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Joks" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Vienkartis" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Kodo tyrinėtojas" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Kodo šablonai" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Dvikartis" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Mygtukas" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Pranešimai" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Pirminio kodo rengyklė" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7082,6 +7642,10 @@ msgid "Custom options" msgstr "Naudotojo parinktys" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "naudotojo programa" @@ -7278,9 +7842,10 @@ msgstr "Įgalinti arba drausti viso lango naujinimus" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Derinimas" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7599,22 +8164,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Delphi paketas" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphi projektas" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Delphi modulis" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Paskirties aplankas" @@ -7842,6 +8399,11 @@ msgid "Import ..." msgstr "Importuoti…" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7862,6 +8424,10 @@ msgid "Do not change" msgstr "Nekeisti" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Neužverti projekto" @@ -7991,6 +8557,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8016,14 +8586,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Rengyklės failų tipai" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Rengyklės makrokomandos" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Įkelti schemą" @@ -8126,6 +8704,10 @@ msgid "Working Directory:" msgstr "Darbinis aplankas:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8341,7 +8923,9 @@ msgstr "Klaidingas „Kitų modulių failai“:" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +#, fuzzy +#| msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "Klaida: darymo veiksena „%s“ yra klaidinga" #: lazarusidestrconsts.liserrorloadingfile @@ -8446,6 +9030,10 @@ msgid "Save Events to File" msgstr "Įvykius įrašyti į failą" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Įdėti komentarą…" @@ -8486,10 +9074,6 @@ msgid "Exclude filter" msgstr "Neįtraukimo filtras" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Vykdomasis failas" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8510,10 +9094,6 @@ msgid "Execution stopped" msgstr "Veika sustabdyta" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programos" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8550,14 +9130,27 @@ msgid "Export" msgstr "Eksportas…" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Eksportuoti HTML formatu" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Eksportuoti sąrašą" @@ -8566,6 +9159,14 @@ msgid "Export package list (*.xml)" msgstr "Eksportuoti paketų sąrašą (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Išraiška:" @@ -8640,6 +9241,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8994,10 +9596,6 @@ msgid "fpcmake failed" msgstr "„fpcmake“ nepavyko" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "FPC pranešimo failas" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9193,6 +9791,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sČia yra ir daugiau (%d) tuščių grupių. Jas visas pašalinti?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Grupės pavadinimas neturi būti tuščias. Ar išvalyti stabdos taškų grupę(-es)?" @@ -9225,6 +9827,10 @@ msgid "Has Help" msgstr "Turi žinyną" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Antraštinis komentaras klasei" @@ -9275,6 +9881,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Užuomina" @@ -9363,17 +9970,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Pridėti" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Atverti" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9511,6 +10114,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Naudojant dvi Lazarus laidas, antrasis Lazarus turi būti startuojamas naudojant komandinės eilutės parametrą „primary-config-path“ (arba „pcp“).%s%sPavyzdžiui:%s" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignoruoti" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Visada ignoruoti" @@ -9527,9 +10136,9 @@ msgid "Ignore this exception type" msgstr "Ignoruoti šio tipo išimtines situacijas" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ignoruoti, TForm naudoti kaip protėvį." +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9547,11 +10156,13 @@ msgstr "Importuoti…" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9648,6 +10259,10 @@ msgid "Inherited project component" msgstr "Paveldėta projekto komponentė" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil #, fuzzy,badformat #| msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%s%sDelete all files in %s%s%s?" @@ -9659,6 +10274,10 @@ msgid "Insert" msgstr "Insert" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "Įterpti datą" @@ -9798,6 +10417,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Ne kompiliuoti paketą, o kurti paprastą „Makefile“." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Interaktyvus" @@ -9814,6 +10437,14 @@ msgid "Invalid delete" msgstr "Klaidingas šalinimas" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Klaidingas reiškinys: %s%s%s%s" @@ -9933,6 +10564,14 @@ msgid "Jump History" msgstr "Peršokimų praeitis" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10538,10 +11177,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazarus darbalaukio nuostatos" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazarus aplankas" @@ -10554,22 +11189,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IKA v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Lazarus failas" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarus forma" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Lazarus IKA" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarus įdedamasis failas" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus kalbos ID (t.y. en, de, lt, …)" @@ -10582,30 +11205,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [parinktys] <projekto_failo_pavadinimas>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Kitoks Lazarus failas" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarus paketas" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarus projektas" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarus projekto informacinis failas" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Lazarus projekto pirminis kodas" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Lazarus modulis" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10897,10 +11496,6 @@ msgid "list of all case values" msgstr "Visų „case“ verčių sąrašas" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Įkelta sėkmingai" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Nepavyko įkelti %s." @@ -11087,6 +11682,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11514,6 +12113,22 @@ msgid "Jump to Implementation" msgstr "Šokti į įgyvendinimą" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Šokti prie tolesnės žymės" @@ -11530,6 +12145,14 @@ msgid "Jump to Previous Error" msgstr "Šokti prie ankstesnės klaidos" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Pažymėjime visas raides mažosiomis" @@ -11547,6 +12170,10 @@ msgid "New Component" msgstr "Nauja komponentė" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nauja forma" @@ -11775,6 +12402,10 @@ msgid "S&how Execution Point" msgstr "&Rodyti vykdymo tašką" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Rūšiuoti pažymėtą…" @@ -11953,11 +12584,6 @@ msgid "History" msgstr "Praeitis" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "IKA spartieji mygtukai" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12278,6 +12904,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12376,6 +13010,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12594,6 +13232,7 @@ msgstr "Ne paskalio identifikatorius" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12905,6 +13544,12 @@ msgid "Open XML" msgstr "Atverti XML" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Parinktys" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Parinktys pakito, kompiliuojama švariai iš naujo naudojant „-B“" @@ -13022,6 +13667,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13033,10 +13679,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Paskalio failas" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Kirsta kartų" @@ -13054,6 +13696,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Kelias" @@ -13128,8 +13774,8 @@ msgid "Disable I18N of lfm" msgstr "Nenaudoti LFM internacionalizacijos" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13187,7 +13833,9 @@ msgstr "Priklausomybių savybės" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Keisti pagrindines parinktis" #: lazarusidestrconsts.lispckeditfileproperties @@ -13198,10 +13846,6 @@ msgid "Install" msgstr "Įdiegti" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Įdiegti paketą į IKA" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Klaidinga maksimali versija" @@ -13664,9 +14308,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Failas %s%s%s%s yra ne paketo modulių kelyje.%s%s%s%s%s įtraukti į modulių kelią?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Daugiau funkcijų yra iškylančiame menių" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13703,19 +14347,35 @@ msgstr "Virtualus modulis" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +#, fuzzy +#| msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Paketo aplankas. Parametras yra paketo ID" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +#, fuzzy +#| msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Įterpiamų į paketą paieškos kelias. Parametras yra paketo ID" +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +#, fuzzy +#| msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Paketo pirminio kodo paieškos kelias. Parametras yra paketo ID" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +#, fuzzy +#| msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Paketo modulių paieškos kelias. Parametras yra paketo ID" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13754,9 +14414,9 @@ msgid "Circular dependencies found" msgstr "Aptiktas priklausomybių ratas" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "Kompiliuojamas paketas „%s“" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13934,6 +14594,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Trūksta vieno ar daugiau būtinų paketų. Žvilgtelėkit į paketų grafą." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Įrašyti paketą?" @@ -14449,6 +15115,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14584,7 +15254,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Maksimali versija %s%s%s klaidinga.%sNaudokite formatą „Didysis.Mažasis.Laida.DarymoNumeris“.%sPavyzdžiui: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14596,7 +15266,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Minimali versija %s%s%s klaidinga.%sNaudokite formatą „Didysis.Mažasis.Laida.DarymoNumeris“.%sPavyzdžiui: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15422,10 +16092,6 @@ msgid "Save current editor file" msgstr "Įrašyti dabartinį rengyklės failą" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Sėkmingai įrašyta" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Įrašyta kartu su IKA nuostatomis" @@ -15500,6 +16166,10 @@ msgid "Save " msgstr "Įrašyti " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Santykinis mastelis:" @@ -15671,6 +16341,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Rodyti" @@ -15695,6 +16369,10 @@ msgid "Show empty units/packages" msgstr "Rodyti tuščius modulius/paketus" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor #, fuzzy #| msgid "Show Glyphs for:" @@ -15856,14 +16534,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Deja, šis tipas dar neįgyvendintas" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Didėjanti" @@ -16076,10 +16754,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Naujo failo pavadinimą siūlyti mažosiomis raidėmis" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Įtartinas įterpiamųjų kelias" @@ -16843,6 +17517,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Sakinį ištraukti neis.%sPrieš ištraukiant naują procedūrą/metodą pažymėkite kažkiek kodo." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Tai sukurs priklausomybių ratą." @@ -16901,6 +17579,10 @@ msgid "Title (leave empty for default)" msgstr "Antraštė (palikus tuščią - bus naudojama numatytoji)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funkcija: kelio gale pridėti kelio skirtuką" @@ -16939,6 +17621,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Failų pavadinimuose rodyti pilnus arba reliatyvius kelius" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16963,6 +17661,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Viršun" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Viršaus prieraiša" @@ -17307,6 +18011,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Nepavyko faile %s%s%s%s%sesantį tekstą konvertuoti į dvejetainį srautą. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Nepavyko kopijuoti failą" @@ -17878,6 +18586,7 @@ msgstr "Kintamasis" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18116,14 +18825,14 @@ msgid "XML Error" msgstr "XML klaida" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML failai" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "XML analizatorius klaida, failas: %s%sKlaida: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Naudojant paketų rengyklę, šitai galima išjungti individualioms formoms" @@ -18267,10 +18976,6 @@ msgid "Filter the lines in list with a string" msgstr "Sąrašą filtruoti naudojant tekstą" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Formos duomenų failas (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Rastas, tačiau neįtrauktas į šį sąrašą:" @@ -18551,6 +19256,10 @@ msgid "Text marker commands" msgstr "Teksto žymeklio komandos" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Paketo menių komandos" @@ -18996,11 +19705,15 @@ msgstr "Nuspėti nevietoj esančius „$IFDEF“" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +#, fuzzy +#| msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Perkelti žymeklį puse žodžio kairiau" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +#, fuzzy +#| msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Perkelti žymeklį puse žodžio dešiniau" #: lazarusidestrconsts.srkmecimestr @@ -19112,6 +19825,18 @@ msgid "Invert Assignment" msgstr "Sukeisti priskyrimą" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Kairysis_Kairysis" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Right" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Perkelti žymeklį kairiau" @@ -19184,6 +19909,10 @@ msgid "Go to next editor" msgstr "Eiti į tolesnę rengyklę" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Eiti tolesnę rengyklę, kurioje yra tas pats pirminis kodas" @@ -19236,6 +19965,30 @@ msgid "pause program" msgstr "pristabdyti programos veiką" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Ankstesnė žymė" @@ -19244,6 +19997,10 @@ msgid "Go to prior editor" msgstr "Eiti į ankstesnę rengyklę" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Eiti į ankstesnę rengyklę, kurioje yra tas pats pirminis kodas" @@ -19343,11 +20100,15 @@ msgstr "Žymėti ir eiti į XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +#, fuzzy +#| msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "Žymėti puse žodžio kairiau" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +#, fuzzy +#| msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "Pažymėti puse žodžio dešinėje" #: lazarusidestrconsts.srkmecselleft @@ -19796,10 +20557,22 @@ msgid "Move cursor word right" msgstr "Perkelti žymeklį žodžiu dešiniau" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Komandos klavišų keitimas" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -19832,6 +20605,26 @@ msgid "Hide comments in selection" msgstr "Slėpti pažymėtus komentarus" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.nl.po lazarus-1.6+dfsg/languages/lazaruside.nl.po --- lazarus-1.4.4+dfsg/languages/lazaruside.nl.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.nl.po 2016-01-05 13:41:02.000000000 +0000 @@ -74,6 +74,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -157,6 +161,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -378,6 +390,10 @@ msgid "Lowercase, first letter up" msgstr "Kleine letters, eerste letter hoofdletter" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "" @@ -541,10 +557,6 @@ msgid "Adjust top line due to comment in front" msgstr "Bewerk bovenste lijn" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Alle bestanden" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Alfabetisch" @@ -590,7 +602,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Nieuwe forms toevoegen aan de \"auto-created forms\"" #: lazarusidestrconsts.dlgautodel @@ -627,6 +641,16 @@ msgid "Auto rename file lowercase" msgstr "Automatisch hernoemen bestand naar kleine letters" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Beschikbare Forms:" @@ -706,6 +730,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1067,11 +1095,6 @@ msgid "Config files" msgstr "Configuratiebestanden:" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Ander" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1219,8 +1242,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Door gebruiker gedefinieerde extensie (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1243,20 +1266,10 @@ msgid "Delete template " msgstr "Verwijder template" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Bureaublad" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -#, fuzzy -#| msgid "Desktop files" -msgid "Desktop Files" -msgstr "Bureaubladbestanden" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1265,6 +1278,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Richting" @@ -1349,6 +1374,7 @@ #: lazarusidestrconsts.dlgedcodetempl #, fuzzy #| msgid "Code templates" +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Broncode templates" @@ -1584,6 +1610,146 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Alle bestanden" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Delphi project" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Lazarus Desktop instellingen" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +#| msgid "Lazarus File" +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Lazarus bestand" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Lazarus form" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Lazarus include bestand" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Lazarus pakket" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Lazarus project" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Lazarus project broncode" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Lazarus unit" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML bestanden" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Zoek Tekst (op cursor)" @@ -1747,6 +1913,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Voorgrond kleur" @@ -1783,11 +1953,6 @@ msgid "&From cursor" msgstr "" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opties" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "positie" @@ -1804,6 +1969,10 @@ msgid "Grabber color" msgstr "Kleur opnemen" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Rasterkleur" @@ -1993,9 +2162,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Negeren" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2105,11 +2276,15 @@ msgstr "" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" +msgstr "" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" msgstr "" #: lazarusidestrconsts.dlglevelnoneopt @@ -2134,10 +2309,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Toon regelnummers in Run-time Error Backtraces" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Laad desktop instelling van een bestand" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Hoofd menu" @@ -2163,6 +2334,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Marge en goot" @@ -2319,6 +2494,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2524,6 +2700,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2576,6 +2756,97 @@ msgid "Messages" msgstr "" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Debug" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Fout" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Meervoudige selectie" @@ -2612,6 +2883,10 @@ msgid "Naming" msgstr "Naamgeving" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming #, fuzzy #| msgid "no automatic renaming" @@ -2656,11 +2931,6 @@ msgid "Miscellaneous" msgstr "Overige" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opties" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2691,6 +2961,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Hints voor componenten palet" @@ -2879,7 +3155,9 @@ msgstr "Propertie naam" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Open laatste project bij start" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2894,6 +3172,10 @@ msgid "Snap to grid" msgstr "Aan raster plakken" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Referentie" @@ -2902,6 +3184,10 @@ msgid "Regular e&xpressions" msgstr "" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Vervang &alles" @@ -2953,6 +3239,18 @@ msgid "Rubberband Selection" msgstr "Selectie" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Display (niet voor win32, bv. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2984,9 +3282,9 @@ msgid "Run Parameters" msgstr "Start parameters" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Desktop instelling opslaan in een bestand" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3061,6 +3359,10 @@ msgid "&Selected text" msgstr "" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Geef alle element standaardwaarde" @@ -3073,6 +3375,26 @@ msgid "Set property Variable" msgstr "Geef property variabele een waarde" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3202,6 +3524,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3309,6 +3635,11 @@ msgid "&Text to find" msgstr "&Zoek tekst" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3712,6 +4043,10 @@ msgid "File not unit" msgstr "Bestand is geen unit" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Ongeldige Ancestor Type" @@ -3761,6 +4096,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Geen pakket gevonden voor afhankelijkheid \"%s\".%sKies een bestaand pakket." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Naam van pagina te lang" @@ -3921,6 +4260,12 @@ msgid "Abandon changes?" msgstr "" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Afbreken" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Alles afbreken" @@ -4033,6 +4378,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -4098,6 +4451,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4106,6 +4463,10 @@ msgid "Add %s to project?" msgstr "%s aan het project toevoegen?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4140,10 +4501,6 @@ msgid "File type" msgstr "Bestandstype" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Heeft Register procedure" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Ongeldig Package" @@ -4171,21 +4528,10 @@ msgid "Show all" msgstr "Toon alles" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Het package %s is niet wijzigbaar" -#: lazarusidestrconsts.lisaf2punitname -#, fuzzy -#| msgid "Unit Name: " -msgid "Unit name: " -msgstr "Unitnaam: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4214,10 +4560,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Alle bestanden" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4341,7 +4683,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Bij het laden van %s is er laatst een fout opgetreden!%sDit project opnieuw laden?" #: lazarusidestrconsts.lisapplicationclassname @@ -4401,6 +4743,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4458,6 +4812,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures #, fuzzy #| msgid "Automatic features" @@ -4550,6 +4908,11 @@ msgid "Border space" msgstr "Randruimte" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Bodem randruimte. Deze waarde wordt toegevoegd aan de basis randruimte en gebruikt voor de ruimte onder het control." @@ -4662,6 +5025,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4918,6 +5285,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "" @@ -5135,7 +5503,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5370,6 +5738,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5398,6 +5770,10 @@ msgid "Choose directory" msgstr "Kies directory" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Kies FPC-directory" @@ -5554,8 +5930,8 @@ msgid "Click here to browse the file" msgstr "" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5627,6 +6003,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6235,10 +6615,6 @@ msgid "Symbol" msgstr "Symbool" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Voer uit Na" @@ -6437,6 +6813,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6860,24 +7240,187 @@ msgid "Types to replace" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Geen" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +#| msgid "Code templates" +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Broncode templates" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7162,6 +7705,10 @@ msgid "Custom options" msgstr "Aanpasbare Opties" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Aanpasbaar Programma" @@ -7358,9 +7905,10 @@ msgstr "" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Debug" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7673,22 +8221,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphi project" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Doeldirectorie" @@ -7916,6 +8456,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7934,6 +8479,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Sluit project niet" @@ -8059,6 +8608,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8084,14 +8637,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8194,6 +8755,10 @@ msgid "Working Directory:" msgstr "Werkdirectory:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8403,7 +8968,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8504,6 +9069,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8546,10 +9115,6 @@ msgid "Exclude filter" msgstr "Uitzonderingen filter" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8570,10 +9135,6 @@ msgid "Execution stopped" msgstr "Uitvoering afgebroken" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8610,14 +9171,27 @@ msgid "Export" msgstr "Exporteer ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Export lijst" @@ -8626,6 +9200,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8702,6 +9284,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -9056,10 +9639,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9254,6 +9833,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9286,6 +9869,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Header commentaar voor klasse" @@ -9336,6 +9923,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9424,17 +10012,13 @@ msgid "ID" msgstr "" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Toevoegen" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Openen" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9568,6 +10152,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Negeren" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "" @@ -9584,8 +10174,8 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage @@ -9602,11 +10192,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9703,6 +10295,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9712,6 +10308,10 @@ msgid "Insert" msgstr "Invoegen" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9851,6 +10451,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9867,6 +10471,14 @@ msgid "Invalid delete" msgstr "Ongeldige verwijdering" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -9984,6 +10596,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10595,10 +11215,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazarus Desktop instellingen" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazarus directory" @@ -10611,24 +11227,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -#, fuzzy -#| msgid "Lazarus File" -msgid "Lazarus file" -msgstr "Lazarus bestand" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarus form" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarus include bestand" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus taal ID (en, de, fi, etc.)" @@ -10641,30 +11243,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [opties] <project-bestandsnaam>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarus pakket" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarus project" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarus Project informatie bestand" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Lazarus project broncode" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Lazarus unit" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10953,10 +11531,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -11147,6 +11721,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11660,6 +12238,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11684,6 +12278,14 @@ msgid "Jump to Previous Error" msgstr "Spring naar vorige fout" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -11703,6 +12305,10 @@ msgid "New Component" msgstr "Nieuw Component" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nieuwe Form" @@ -11984,6 +12590,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -12184,13 +12794,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -#, fuzzy -#| msgid "IDE speed buttons" -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Toon IDE speed buttons" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12520,6 +13123,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12619,6 +13230,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12835,6 +13450,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -13152,6 +13768,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opties" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -13271,6 +13893,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13282,10 +13905,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -13303,6 +13922,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -13381,8 +14004,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13440,7 +14063,9 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Bewerk algemene opies" #: lazarusidestrconsts.lispckeditfileproperties @@ -13451,10 +14076,6 @@ msgid "Install" msgstr "Installeren" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Pakket in IDE installeren" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Ongeldige maximum versie" @@ -13935,9 +14556,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Het bestand \"%s\"%sstaat niet in het unitpad van het package.%s\"%s\" toevoegen aan het unitpad?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Er zijn meer functies in het popup menu" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13974,19 +14595,27 @@ msgstr "Virtuele Unit" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -14025,8 +14654,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -14205,6 +14834,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage #, fuzzy #| msgid "Save Package?" @@ -14716,6 +15351,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14853,7 +15492,7 @@ #, fuzzy #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "De Maximum Versie \"%s\" is ongeldig.%sGebruik het formaat major.minor.release.build%sBijvoorbeeld: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14865,7 +15504,7 @@ #, fuzzy #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "De Minimum Versie \"%s\" is ongeldig.%sGebruik het formaat major.minor.release.build%sBijvoorbeeld: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15701,10 +16340,6 @@ msgid "Save current editor file" msgstr "huidige bestanden in de bewerker opslaan" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15777,6 +16412,10 @@ msgid "Save " msgstr "Opslaan " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Schaal:" @@ -15946,6 +16585,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -15970,6 +16613,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -16130,14 +16777,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Excuses, dit type is nog niet geimplementeerd." -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Neerwaarts" @@ -16348,10 +16995,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -17061,6 +17704,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Dit statement kan niet worden gedistilleerd.%sSelecteer meer code om een nieuwe procedure te distilleren." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -17119,6 +17766,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Functie: toevoegen pad scheidingsteken" @@ -17157,6 +17808,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -17181,6 +17848,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Top verankering" @@ -17523,6 +18195,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Kan de tekst form data van bestand %s\"%s\"%sniet wijzigen in een binaire stream. (%s)." +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Kan het bestand niet kopiëren" @@ -18076,6 +18752,7 @@ msgstr "Variabele" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18312,14 +18989,14 @@ msgid "XML Error" msgstr "" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML bestanden" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -18463,10 +19140,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Formulier data bestand (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18747,6 +19420,10 @@ msgid "Text marker commands" msgstr "Tekstmarkering opdrachten" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -19219,11 +19896,11 @@ msgstr "Corrigeer verkeerde $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -19337,6 +20014,18 @@ msgid "Invert Assignment" msgstr "Draai toekenning om" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Links" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Rechts" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -19411,6 +20100,10 @@ msgid "Go to next editor" msgstr "Ga naar volgende tekstverwerker" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -19465,6 +20158,30 @@ msgid "pause program" msgstr "pauzeer programma" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Vorig Bookmark" @@ -19473,6 +20190,10 @@ msgid "Go to prior editor" msgstr "Ga naar vorige tekstverwerker" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -19578,11 +20299,11 @@ msgstr "Selecteer Goto XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -20041,10 +20762,22 @@ msgid "Move cursor word right" msgstr "Verplaats cursor een woord naar rechts" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -20077,6 +20810,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.pl.po lazarus-1.6+dfsg/languages/lazaruside.pl.po --- lazarus-1.4.4+dfsg/languages/lazaruside.pl.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.pl.po 2016-01-05 13:41:02.000000000 +0000 @@ -77,6 +77,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -166,6 +170,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Rozszerzone, działania (pułapka, zwijanie) przy puszczeniu klawisza myszy. Zaznaczenie przy wciśnieciu klawisza myszy i ruchu" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -389,6 +401,10 @@ msgid "Lowercase, first letter up" msgstr "Małymi Literami, Pierwsza Duża" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Dodaj operator przypisania :=" @@ -554,10 +570,6 @@ msgid "Adjust top line due to comment in front" msgstr "Wyrównaj górną linię do komentarza z przodu" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Wszystkie pliki" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Alfabetycznie" @@ -601,7 +613,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Nowe formularze dodawaj do tworzonych automatycznie" #: lazarusidestrconsts.dlgautodel @@ -639,6 +653,16 @@ msgid "Auto rename file lowercase" msgstr "Automatycznie zmień nazwę na małe litery" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Dostępne formularze:" @@ -720,6 +744,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive #, fuzzy #| msgid "&Case Sensitive" @@ -1087,11 +1115,6 @@ msgid "Config files" msgstr "Pliki konfiguracyjne:" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Inne" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Pozostałe informacje odpluskwiacza" @@ -1241,8 +1264,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Inne rozszerzenie (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1265,20 +1288,10 @@ msgid "Delete template " msgstr "Usuń szablon " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Pulpit" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Przyciski -" -#: lazarusidestrconsts.dlgdesktopfiles -#, fuzzy -#| msgid "Desktop files" -msgid "Desktop Files" -msgstr "Ustawienia pulpitu" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Podpowiedzi" @@ -1287,6 +1300,18 @@ msgid "Menus - " msgstr "Menu -" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Kierunek" @@ -1371,6 +1396,7 @@ #: lazarusidestrconsts.dlgedcodetempl #, fuzzy #| msgid "Code templates" +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Szablony źródeł" @@ -1611,6 +1637,138 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Wszystkie pliki" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Projekt Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Ustawienia pulpitu Lazarusa" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Pliki XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Wyszukaj tekst przy kursorze" @@ -1778,6 +1936,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Kolor tekstu" @@ -1818,11 +1980,6 @@ msgid "&From cursor" msgstr "&Od kursora" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opcje" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Pobierz pozycję" @@ -1839,6 +1996,10 @@ msgid "Grabber color" msgstr "Kolor paska ikon" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Kolor siatki" @@ -2028,9 +2189,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignoruj" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2145,16 +2308,20 @@ #: lazarusidestrconsts.dlglevel2opt #, fuzzy -#| msgid "Level 2 (Level 1 + quick optimizations)" -msgid "2 (quick optimizations)" +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "Poziom 2 (Poziom 1 + szybkie optymalizacje)" #: lazarusidestrconsts.dlglevel3opt #, fuzzy -#| msgid "Level 3 (Level 2 + slow optimizations)" -msgid "3 (slow optimizations)" +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "Poziom 3 (Poziom 2 + wolne optymalizacje)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt #, fuzzy #| msgid "Level 0 (no extra optimizations)" @@ -2177,10 +2344,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Wyświetlaj numery linii w zrzucie błędu uruchomieniowego:" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Odczytaj ustawenia IDE z pliku" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Menu główne" @@ -2206,6 +2369,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Margines i pasek ikon" @@ -2370,6 +2537,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Pojedyncze" @@ -2575,6 +2743,10 @@ msgid "Gutter" msgstr "Kolektor" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Drzewo zwijania" @@ -2628,6 +2800,99 @@ msgid "Messages" msgstr "Komunikaty" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Odpluskwanie" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Błąd" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Podpowiedź" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Ostrzeżenie" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "" @@ -2666,6 +2931,10 @@ msgid "Naming" msgstr "Nazewnictwo" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming #, fuzzy #| msgid "no automatic renaming" @@ -2710,11 +2979,6 @@ msgid "Miscellaneous" msgstr "Pozostałe" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opcje" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Szybkie ustawienia" @@ -2747,6 +3011,12 @@ msgid "Overwrite block" msgstr "Nadpisz blok" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Podpowiedzi dla palety komponentów" @@ -2949,7 +3219,9 @@ msgstr "Nazwa właściwości" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Otwieraj poprzedni projekt po uruchomieniu" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2965,6 +3237,10 @@ msgid "Snap to grid" msgstr "Przyciągaj do siatki" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "" @@ -2975,6 +3251,10 @@ msgid "Regular e&xpressions" msgstr "&Wyrażenia regularne" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Zastąp &wszystko" @@ -3026,6 +3306,18 @@ msgid "Rubberband Selection" msgstr "Wybór" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Ekran (nie dotyczy win32), np. 198.112.45.11:0, x.org:1, hydra:0.1" @@ -3057,9 +3349,9 @@ msgid "Run Parameters" msgstr "Parametry uruchomienia" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Zapisz ustawienia IDE do pliku" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3136,6 +3428,10 @@ msgid "&Selected text" msgstr "&Zaznaczony tekst" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Domyślny wygląd wszystkich elementów" @@ -3148,6 +3444,26 @@ msgid "Set property Variable" msgstr "Zmienna właściwości" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3277,6 +3593,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "Wielolinijkowe zakładki" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3384,6 +3704,11 @@ msgid "&Text to find" msgstr "&Znajdź" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3785,6 +4110,10 @@ msgid "File not unit" msgstr "Plik nie jest modułem" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Nieprawidłowy typ przodka" @@ -3834,6 +4163,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Nie znalazłem pakietu dla zależności %s%s%s.%sWybierz _istniejący_ pakiet." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Nazwa zakładki jest zbyt długa" @@ -3991,6 +4324,12 @@ msgid "Abandon changes?" msgstr "Porzucić zmiany?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Przerwij" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Przerwij wszystko" @@ -4101,6 +4440,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -4166,6 +4513,10 @@ msgid "&Address Breakpoint ..." msgstr "Pułapka adresu ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4174,6 +4525,10 @@ msgid "Add %s to project?" msgstr "Chcesz dodać %s do projektu?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "Dodać do katalogów modułów?" @@ -4208,10 +4563,6 @@ msgid "File type" msgstr "Typ pliku" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Ma procedurę Register" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Błędny pakiet" @@ -4239,21 +4590,10 @@ msgid "Show all" msgstr "Pokaż wszystkie" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Pakiet %s jest dostępny tylko do odczytu" -#: lazarusidestrconsts.lisaf2punitname -#, fuzzy -#| msgid "Unit Name: " -msgid "Unit name: " -msgstr "Nazwa modułu:" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4282,10 +4622,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Wszystkie pliki" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Wszystkie dziedziczone opcje" @@ -4406,7 +4742,7 @@ msgstr "" #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "" #: lazarusidestrconsts.lisapplicationclassname @@ -4466,6 +4802,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Automatyczne wypełnienie: wyłączone" @@ -4523,6 +4871,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures #, fuzzy #| msgid "Automatic features" @@ -4615,6 +4967,12 @@ msgid "Border space" msgstr "Odstęp " +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Dół" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4727,6 +5085,10 @@ msgid "Building Lazarus failed" msgstr "Budowanie Lazarusa nie powiodło się" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4977,6 +5339,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Ostrzeżenie" @@ -5198,7 +5561,7 @@ msgstr "Błędne wcięcia" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5435,6 +5798,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Wybierz plik Pascala dla przykładu wcięć " +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5463,6 +5830,10 @@ msgid "Choose directory" msgstr "Wybierz katalog" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Wybierz katalog źródeł FPC" @@ -5617,8 +5988,8 @@ msgid "Click here to browse the file" msgstr "" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5690,6 +6061,10 @@ msgid "Pages" msgstr "Strony" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6290,10 +6665,6 @@ msgid "Symbol" msgstr "Symbol" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Wykonaj po" @@ -6496,6 +6867,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Konfiguracja %sBuduj Lazarusa%s" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6919,24 +7294,193 @@ msgid "Types to replace" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "Moduł do zamiany" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Brak" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Pojedyncze" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Przeglądarka źródeł" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +#| msgid "Code templates" +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Szablony źródeł" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Podwójne" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Przycisk" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Komunikaty" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Edytor źródła" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" -msgstr "Moduł do zamiany" - -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7217,6 +7761,10 @@ msgid "Custom options" msgstr "Opcje niestandardowe" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "" @@ -7411,9 +7959,10 @@ msgstr "" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Odpluskwanie" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7728,22 +8277,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Projekt Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Katalog docelowy" @@ -7971,6 +8512,11 @@ msgid "Import ..." msgstr "Importuj ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7989,6 +8535,10 @@ msgid "Do not change" msgstr "nie zmieniaj" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "" @@ -8114,6 +8664,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8139,14 +8693,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Edytor makr" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8249,6 +8811,10 @@ msgid "Working Directory:" msgstr "Katalog roboczy:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8458,7 +9024,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8559,6 +9125,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8601,10 +9171,6 @@ msgid "Exclude filter" msgstr "" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8625,10 +9191,6 @@ msgid "Execution stopped" msgstr "Wykonanie zatrzymane" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8665,14 +9227,27 @@ msgid "Export" msgstr "Eksportuj..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Eksportuj jako HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Eksportuj listę" @@ -8681,6 +9256,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8755,6 +9338,7 @@ msgstr "Błąd podczas zapisu pliku." #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -9110,10 +9694,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9310,6 +9890,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9342,6 +9926,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Komentarz w nagłówku dla klas" @@ -9392,6 +9980,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Podpowiedź" @@ -9480,17 +10069,13 @@ msgid "ID" msgstr "" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Dodaj" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Otwórz" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9624,6 +10209,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignoruj" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "" @@ -9640,8 +10231,8 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage @@ -9658,11 +10249,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9757,6 +10350,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9766,6 +10363,10 @@ msgid "Insert" msgstr "Insert" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "wstaw datę" @@ -9905,6 +10506,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9921,6 +10526,14 @@ msgid "Invalid delete" msgstr "" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -10038,6 +10651,14 @@ msgid "Jump History" msgstr "Historia skoków" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Przejdź do procedury %s" @@ -10653,10 +11274,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Ustawienia pulpitu Lazarusa" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Katalog Lazarusa" @@ -10669,22 +11286,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "" @@ -10697,30 +11302,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [options] <project-filename>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -11013,10 +11594,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -11211,6 +11788,10 @@ msgid "Manage Source Editors ..." msgstr "Zarządzaj oknami kodu źródłowego ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11728,6 +12309,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11752,6 +12349,14 @@ msgid "Jump to Previous Error" msgstr "Przejdź do poprzedniego błędu" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -11773,6 +12378,10 @@ msgid "New Component" msgstr "Nowy komponent" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nowy formularz" @@ -12060,6 +12669,10 @@ msgid "S&how Execution Point" msgstr "Pokaż punkt wykonywania" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -12258,13 +12871,6 @@ msgid "History" msgstr "Historia" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -#, fuzzy -#| msgid "IDE speed buttons" -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Przyciski szybkiego uruchamiania" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12594,6 +13200,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12695,6 +13309,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12913,6 +13531,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -13228,6 +13847,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opcje" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -13347,6 +13972,7 @@ msgstr "Nazwa zakładki \"%s\" już istnieje. Nie dodano." #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13358,10 +13984,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -13379,6 +14001,10 @@ msgid "Paste from clipboard" msgstr "Wklej ze schowka" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -13457,8 +14083,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13518,7 +14144,9 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Zmień ogólne opcje" #: lazarusidestrconsts.lispckeditfileproperties @@ -13529,10 +14157,6 @@ msgid "Install" msgstr "Zainstaluj" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Zainstaluj pakiet w IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Błędny maksymalny numer wersji" @@ -14017,9 +14641,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Plik %s%s%s%sis jest poza ścieżką do modułów .%s%sCzy dodać %s%s%s do ścieżki do modułów?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Więcej funkcji jest w menu podręcznym" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -14056,19 +14680,27 @@ msgstr "Wirtualny moduł" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -14103,8 +14735,8 @@ msgid "Circular dependencies found" msgstr "Znaleziono cykliczne zależności" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -14283,6 +14915,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage #, fuzzy #| msgid "Save Package?" @@ -14786,6 +15424,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14919,7 +15561,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Maksymalny numer wersji %s%s%s jest nieprawidłowy.%sUżyj formatu: major.minor.release.build%sNp.: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14931,7 +15573,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Minimalny numer wersji %s%s%s jest nieprawidłowy.%sUżyj formatu: major.minor.release.build%sNp.: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15769,10 +16411,6 @@ msgid "Save current editor file" msgstr "zapisz edytowany plik" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15847,6 +16485,10 @@ msgid "Save " msgstr "Zapisz " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "" @@ -16016,6 +16658,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -16040,6 +16686,10 @@ msgid "Show empty units/packages" msgstr "pokaż puste moduły/pakiety" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor #, fuzzy #| msgid "Show Glyphs for:" @@ -16202,14 +16852,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Przykro mi, ten typ jeszcze nie jest obsługiwany" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Rosnąco" @@ -16418,10 +17068,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Sugeruj domyślną nazwę pliku małymi literami" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -17099,6 +17745,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -17158,6 +17808,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funkcja: dołącz rozgranicznik ścieżki" @@ -17196,6 +17850,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -17220,6 +17890,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Góra" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Górne umocowanie" @@ -17560,6 +18236,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Nie można skonwertować pliku z danymi w formie tekstu z pliku%s%s%s%s%sna strumień dwójkowy. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "" @@ -18111,6 +18791,7 @@ msgstr "Zmienna" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18349,14 +19030,14 @@ msgid "XML Error" msgstr "Błąd XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Pliki XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -18502,10 +19183,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18788,6 +19465,10 @@ msgid "Text marker commands" msgstr "Znaczniki" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -19262,11 +19943,11 @@ msgstr "Znajdź błędnie umieszczone $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Przesuń kursor w lewo o część słowa (CamelCase)" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Przesuń kursor w prawo o część słowa (CamelCase)" #: lazarusidestrconsts.srkmecimestr @@ -19378,6 +20059,18 @@ msgid "Invert Assignment" msgstr "" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "W lewo" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "W prawo" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Przesuń kursor w lewo" @@ -19452,6 +20145,10 @@ msgid "Go to next editor" msgstr "Przejdź do następnego edytora" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -19506,6 +20203,30 @@ msgid "pause program" msgstr "przerwij działanie programu" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Poprzednia zakładka" @@ -19514,6 +20235,10 @@ msgid "Go to prior editor" msgstr "Przejdź do poprzedniego edytora" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -19623,11 +20348,11 @@ msgstr "Wybierz do XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -20084,10 +20809,22 @@ msgid "Move cursor word right" msgstr "Przesuń kursor o słowo w prawo" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Zwiń komentarze" @@ -20120,6 +20857,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.po lazarus-1.6+dfsg/languages/lazaruside.po --- lazarus-1.4.4+dfsg/languages/lazaruside.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.po 2016-01-05 13:41:02.000000000 +0000 @@ -69,6 +69,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -152,6 +156,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -373,6 +385,10 @@ msgid "Lowercase, first letter up" msgstr "" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "" @@ -536,10 +552,6 @@ msgid "Adjust top line due to comment in front" msgstr "" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "" @@ -581,7 +593,7 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "" #: lazarusidestrconsts.dlgautodel @@ -618,6 +630,16 @@ msgid "Auto rename file lowercase" msgstr "" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "" @@ -695,6 +717,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1032,11 +1058,6 @@ msgid "Config files" msgstr "" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1170,8 +1191,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1194,18 +1215,10 @@ msgid "Delete template " msgstr "" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1214,6 +1227,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "" @@ -1296,6 +1321,7 @@ msgstr "" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "" @@ -1525,6 +1551,134 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "" @@ -1688,6 +1842,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "" @@ -1724,11 +1882,6 @@ msgid "&From cursor" msgstr "" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "" @@ -1745,6 +1898,10 @@ msgid "Grabber color" msgstr "" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "" @@ -1926,8 +2083,10 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables @@ -2036,11 +2195,15 @@ msgstr "" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" +msgstr "" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" msgstr "" #: lazarusidestrconsts.dlglevelnoneopt @@ -2059,10 +2222,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "" @@ -2084,6 +2243,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "" @@ -2240,6 +2403,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2445,6 +2609,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2497,6 +2665,95 @@ msgid "Messages" msgstr "" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "" @@ -2533,6 +2790,10 @@ msgid "Naming" msgstr "" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "" @@ -2571,11 +2832,6 @@ msgid "Miscellaneous" msgstr "" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2604,6 +2860,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "" @@ -2786,7 +3048,7 @@ msgstr "" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2801,6 +3063,10 @@ msgid "Snap to grid" msgstr "" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "" @@ -2809,6 +3075,10 @@ msgid "Regular e&xpressions" msgstr "" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "" @@ -2850,6 +3120,18 @@ msgid "Rubberband Selection" msgstr "" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "" @@ -2879,8 +3161,8 @@ msgid "Run Parameters" msgstr "" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor @@ -2952,6 +3234,10 @@ msgid "&Selected text" msgstr "" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "" @@ -2964,6 +3250,26 @@ msgid "Set property Variable" msgstr "" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3087,6 +3393,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3188,6 +3498,11 @@ msgid "&Text to find" msgstr "" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3561,6 +3876,10 @@ msgid "File not unit" msgstr "" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "" @@ -3606,6 +3925,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "" +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "" @@ -3734,6 +4057,11 @@ msgid "Abandon changes?" msgstr "" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "" @@ -3844,6 +4172,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -3909,6 +4245,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -3917,6 +4257,10 @@ msgid "Add %s to project?" msgstr "" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -3945,10 +4289,6 @@ msgid "File type" msgstr "" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "" @@ -3970,19 +4310,10 @@ msgid "Show all" msgstr "" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "" -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "" @@ -4007,10 +4338,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4128,7 +4455,7 @@ msgstr "" #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "" #: lazarusidestrconsts.lisapplicationclassname @@ -4188,6 +4515,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4245,6 +4584,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "" @@ -4333,6 +4676,11 @@ msgid "Border space" msgstr "" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4443,6 +4791,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4691,6 +5043,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "" @@ -4906,7 +5259,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5141,6 +5494,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5169,6 +5526,10 @@ msgid "Choose directory" msgstr "" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "" @@ -5323,8 +5684,8 @@ msgid "Click here to browse the file" msgstr "" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5394,6 +5755,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -5982,10 +6347,6 @@ msgid "Symbol" msgstr "" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "" @@ -6176,6 +6537,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6569,52 +6934,212 @@ msgid "Replacement function parameter number should be >= 1: %s" msgstr "" -#: lazarusidestrconsts.lisconvshouldbefollowedbynumber -msgid "\"$\" should be followed by a number: %s" +#: lazarusidestrconsts.lisconvshouldbefollowedbynumber +msgid "\"$\" should be followed by a number: %s" +msgstr "" + +#: lazarusidestrconsts.lisconvstoppedbecausethereispackage +msgid "Stopped because there already is a package with the same name" +msgstr "" + +#: lazarusidestrconsts.lisconvthislogwassaved +msgid "This log was saved to %s" +msgstr "" + +#: lazarusidestrconsts.lisconvtopoff +msgid "Top offset" +msgstr "" + +#: lazarusidestrconsts.lisconvtypereplacements +msgid "Type Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvtypereplhint +msgid "Unknown types in form file (DFM/LFM)" +msgstr "" + +#: lazarusidestrconsts.lisconvtypestoreplace +msgid "Types to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" msgstr "" -#: lazarusidestrconsts.lisconvstoppedbecausethereispackage -msgid "Stopped because there already is a package with the same name" +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" msgstr "" -#: lazarusidestrconsts.lisconvthislogwassaved -msgid "This log was saved to %s" +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" msgstr "" -#: lazarusidestrconsts.lisconvtopoff -msgid "Top offset" +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" msgstr "" -#: lazarusidestrconsts.lisconvtypereplacements -msgid "Type Replacements" +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" msgstr "" -#: lazarusidestrconsts.lisconvtypereplhint -msgid "Unknown types in form file (DFM/LFM)" +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" msgstr "" -#: lazarusidestrconsts.lisconvtypestoreplace -msgid "Types to replace" +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -6893,6 +7418,10 @@ msgid "Custom options" msgstr "" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "" @@ -7394,22 +7923,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "" @@ -7631,6 +8152,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7649,6 +8175,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "" @@ -7774,6 +8304,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7799,14 +8333,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -7909,6 +8451,10 @@ msgid "Working Directory:" msgstr "" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8118,7 +8664,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8219,6 +8765,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8259,10 +8809,6 @@ msgid "Exclude filter" msgstr "" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8283,10 +8829,6 @@ msgid "Execution stopped" msgstr "" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8321,14 +8863,27 @@ msgid "Export" msgstr "" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "" @@ -8337,6 +8892,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8411,6 +8974,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8754,10 +9318,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -8950,6 +9510,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -8982,6 +9546,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "" @@ -9032,6 +9600,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9120,14 +9689,12 @@ msgid "ID" msgstr "" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" msgstr "" -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" msgstr "" #: lazarusidestrconsts.liside @@ -9262,6 +9829,11 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "" @@ -9278,8 +9850,8 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage @@ -9296,11 +9868,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9395,6 +9969,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9404,6 +9982,10 @@ msgid "Insert" msgstr "" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9543,6 +10125,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9559,6 +10145,14 @@ msgid "Invalid delete" msgstr "" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -9672,6 +10266,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10275,10 +10877,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "" @@ -10291,22 +10889,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "" @@ -10319,30 +10905,6 @@ msgid "lazarus [options] <project-filename>" msgstr "" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10629,10 +11191,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -10815,6 +11373,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11240,6 +11802,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "" @@ -11256,6 +11834,14 @@ msgid "Jump to Previous Error" msgstr "" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "" @@ -11273,6 +11859,10 @@ msgid "New Component" msgstr "" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "" @@ -11499,6 +12089,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "" @@ -11677,11 +12271,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -11999,6 +12588,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12096,6 +12693,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12308,6 +12909,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12617,6 +13219,11 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -12734,6 +13341,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -12745,10 +13353,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -12766,6 +13370,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -12840,8 +13448,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -12899,7 +13507,7 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +msgid "Edit general options" msgstr "" #: lazarusidestrconsts.lispckeditfileproperties @@ -12910,10 +13518,6 @@ msgid "Install" msgstr "" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "" @@ -13360,8 +13964,8 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary @@ -13399,19 +14003,27 @@ msgstr "" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13446,8 +14058,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -13616,6 +14228,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "" @@ -14049,6 +14667,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14174,7 +14796,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14184,7 +14806,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -14986,10 +15608,6 @@ msgid "Save current editor file" msgstr "" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15060,6 +15678,10 @@ msgid "Save " msgstr "" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "" @@ -15229,6 +15851,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -15253,6 +15879,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -15410,14 +16040,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "" @@ -15624,10 +16254,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -16281,6 +16907,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -16339,6 +16969,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "" @@ -16375,6 +17009,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16399,6 +17049,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "" @@ -16721,6 +17376,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "" @@ -17240,6 +17899,7 @@ msgstr "" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -17474,14 +18134,14 @@ msgid "XML Error" msgstr "" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -17622,10 +18282,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -17904,6 +18560,10 @@ msgid "Text marker commands" msgstr "" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -18346,11 +19006,11 @@ msgstr "" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -18462,6 +19122,16 @@ msgid "Invert Assignment" msgstr "" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -18534,6 +19204,10 @@ msgid "Go to next editor" msgstr "" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -18586,6 +19260,30 @@ msgid "pause program" msgstr "" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "" @@ -18594,6 +19292,10 @@ msgid "Go to prior editor" msgstr "" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -18693,11 +19395,11 @@ msgstr "" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -19146,10 +19848,22 @@ msgid "Move cursor word right" msgstr "" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -19182,6 +19896,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.pt_BR.po lazarus-1.6+dfsg/languages/lazaruside.pt_BR.po --- lazarus-1.4.4+dfsg/languages/lazaruside.pt_BR.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.pt_BR.po 2016-01-05 13:41:02.000000000 +0000 @@ -76,6 +76,10 @@ msgid "History forward" msgstr "Avançar histórico" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -163,6 +167,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Extendido, Ações (ponto parada, retração) no mouse acima. Seleção no mouse abaixo e movimento" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -384,6 +396,10 @@ msgid "Lowercase, first letter up" msgstr "Minúscula, primeira letra maiúscula" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Adicionar operador de atribuição :=" @@ -547,10 +563,6 @@ msgid "Adjust top line due to comment in front" msgstr "Ajustar linha superior devido ao comentário em frente" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Todos os arquivos" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Alfabeticamente" @@ -592,7 +604,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Quando criar novos formulários, adicioná-los a formulários auto. criados" #: lazarusidestrconsts.dlgautodel @@ -629,6 +643,16 @@ msgid "Auto rename file lowercase" msgstr "Auto renomear arquivo em minúsculas" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Formulários disponíveis:" @@ -706,6 +730,10 @@ msgid "Matching bracket pairs" msgstr "Correspondendo pares parênteses" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1047,11 +1075,6 @@ msgid "Config files" msgstr "Arquivos de configuração" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Outros" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Outras info. de depuração" @@ -1185,8 +1208,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Extensão definida pelo usuário (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1209,18 +1232,10 @@ msgid "Delete template " msgstr "Excluir modelo " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Área de Trabalho" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Botões -" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Arquivos da área de trabalho" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Dicas" @@ -1229,6 +1244,18 @@ msgid "Menus - " msgstr "Menus - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Direção" @@ -1311,6 +1338,7 @@ msgstr "Subdiretório" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Modelos de código" @@ -1546,6 +1574,154 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Todos os arquivos" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "Arquivo modelo CodeTools" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Pacote Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Projeto Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Unidade Delphi" + +#: lazarusidestrconsts.dlgfilterexecutable +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Executável" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "Arquivo de mensagem FPC" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Configurações da Área de Trabalho do Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Tipos Editor arquivos" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Arquivo Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Formulário Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Arquivo de inclusões Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Outros arquivos Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Pacote Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Projeto Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Fonte de Projeto Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Unidade Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Arquivo Pascal" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programas" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Arquivos XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Localizar texto sob o cursor" @@ -1709,6 +1885,10 @@ msgid "Processing Instruction" msgstr "Processando Instrução" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Primeiro plano" @@ -1745,11 +1925,6 @@ msgid "&From cursor" msgstr "&Do cursor" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Opções" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Obter Posição" @@ -1766,6 +1941,10 @@ msgid "Grabber color" msgstr "Cor dos esticadores" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Cor da Grade" @@ -1947,9 +2126,11 @@ msgid "Included mixed state $IFDEF node" msgstr "Incluso nó $IFDEF de estado misto" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignorar" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2059,13 +2240,21 @@ msgstr "1 (rápido e amigável ao depurador)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +#, fuzzy +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "2 (otimizações rápidas)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +#, fuzzy +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "3 (otimizações lentas)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" msgstr "0 (nenhuma otimização)" @@ -2082,10 +2271,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Exibir número de linhas nos erros de tempo de execução ao rastreá-los" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Carregar configurações do arquivo" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Menu Principal" @@ -2107,6 +2292,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Margem e medianiz" @@ -2263,6 +2452,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Único" @@ -2468,6 +2658,10 @@ msgid "Gutter" msgstr "Medianiz" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Árvore retrátil" @@ -2522,6 +2716,99 @@ msgid "Messages" msgstr "Mensagens" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Depurar" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Erro" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Dica" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Aviso" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Seleção múltipla" @@ -2558,6 +2845,10 @@ msgid "Naming" msgstr "Nomeação" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Sem renomeação automática" @@ -2596,11 +2887,6 @@ msgid "Miscellaneous" msgstr "Miscelânea" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Opções" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Configurações rápidas" @@ -2631,6 +2917,12 @@ msgid "Overwrite block" msgstr "Sobrescrever bloco" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Dicas para a paleta de componentes" @@ -2817,7 +3109,9 @@ msgstr "Nome da propriedade" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Abrir o último projeto ao iniciar" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2832,6 +3126,10 @@ msgid "Snap to grid" msgstr "Ajustar à grade" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Referência" @@ -2840,6 +3138,10 @@ msgid "Regular e&xpressions" msgstr "E&xpressões regulares" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Substituir &Tudo" @@ -2881,6 +3183,18 @@ msgid "Rubberband Selection" msgstr "Seleção Banda elástica" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Tela (não para win32, ex: 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2910,9 +3224,9 @@ msgid "Run Parameters" msgstr "Parâmetros de execução" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Salvar configurações para arquivo" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2983,6 +3297,10 @@ msgid "&Selected text" msgstr "Texto &selecionado" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Redefinir para o padrão" @@ -2995,6 +3313,26 @@ msgid "Set property Variable" msgstr "Variável da propriedade" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Exibir todas as unidades" @@ -3118,6 +3456,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3219,6 +3561,11 @@ msgid "&Text to find" msgstr "&Texto a localizar" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Dica Classe/Proc atual" @@ -3598,6 +3945,10 @@ msgid "File not unit" msgstr "Arquivo nao é uma unidade" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Tipo Ancestral inválido" @@ -3647,6 +3998,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Pacote não encontrado para a dependência %s%s%s.%sFavor escolher um pacote existente." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Nome da Página muito longo" @@ -3811,6 +4166,12 @@ msgid "Abandon changes?" msgstr "Abandonar alterações?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Abortar" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Abortar tudo" @@ -3925,6 +4286,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Adicionar arquivos no diretório" @@ -3990,6 +4359,10 @@ msgid "&Address Breakpoint ..." msgstr "&Endereço do Ponto de Parada ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -3998,6 +4371,10 @@ msgid "Add %s to project?" msgstr "Adicionar %s ao projeto?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4026,10 +4403,6 @@ msgid "File type" msgstr "Tipo de arquivo" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Tem procedimento Registro" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Pacote Inválido" @@ -4055,21 +4428,10 @@ msgid "Show all" msgstr "Exibir tudo" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -#, fuzzy,badformat -#| msgid "The file %s%s%s%sis already in the package %s." -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "O arquivo %s%s%s%sjá está no pacote %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "O Pacote %s é somente leitura." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Nome da unidade:" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4096,10 +4458,6 @@ msgid "<All build modes>" msgstr "<Todos os modes de construção>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Todos os arquivos" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Todas opções herdadas" @@ -4225,7 +4583,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Ocorreu um erro na última inicialização carregando %s!%s%sCarregar este projeto novamente?" #: lazarusidestrconsts.lisapplicationclassname @@ -4287,6 +4645,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Uma configuração útil em sistemas Windows é: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Auto completar: desligado" @@ -4344,6 +4714,10 @@ msgid "do not add character" msgstr "não adicionar caractere" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Complementos e Dicas" @@ -4432,6 +4806,12 @@ msgid "Border space" msgstr "Espaço da Borda" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Base" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Espaço da Borda Base. Este valor será adicionado para espaço da borda base e usado para o espaço inferior do controle." @@ -4542,6 +4922,10 @@ msgid "Building Lazarus failed" msgstr "Construção Lazarus falhou" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Diferenças entre modos de construção" @@ -4798,6 +5182,7 @@ msgstr "caracteres não usuais" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Aviso" @@ -5014,7 +5399,7 @@ msgstr "Recuo incorreto" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Uma exceção ocorreu durante exclusão de %s\"%s%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5252,6 +5637,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Escolha um arquivo Pascal para exemplos de identação" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5280,6 +5669,10 @@ msgid "Choose directory" msgstr "Escolher diretório" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Escolher diretório fonte FPC" @@ -5438,9 +5831,9 @@ msgid "Click here to browse the file" msgstr "Clique aqui para navegar no arquivo" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Clique para ver usos possíveis" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5509,6 +5902,10 @@ msgid "Pages" msgstr "Páginas" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "&Restaurar padrões" @@ -6107,10 +6504,6 @@ msgid "Symbol" msgstr "Símbolo" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "Arquivo modelo CodeTools" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Executar após" @@ -6309,6 +6702,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Configurar %sConstrução Lazarus%s" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Configurar IDE Lazarus" @@ -6748,8 +7145,176 @@ msgid "Unknown properties" msgstr "Propriedades desconhecidas" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Nenhum" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Único" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Explorador de Código" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Modelos de código" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Duplo" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Botão" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Mensagens" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Editor de Código" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -6899,7 +7464,7 @@ #: lazarusidestrconsts.liscreatedebugandreleasemodes msgid "Create Debug and Release modes" -msgstr "Criar modes de depuração e lançamento" +msgstr "" #: lazarusidestrconsts.liscreatedirectory msgid "Create directory?" @@ -7046,6 +7611,10 @@ msgid "Custom options" msgstr "Opções personalizadas" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Programa personalizado" @@ -7242,9 +7811,10 @@ msgstr "Desativar/Ativar atualizações para toda a janela" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Depurar" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7561,22 +8131,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Pacote Delphi" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Projeto Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Unidade Delphi" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "Pacotes de \"Tempo de projeto\" adicionam componentes e itens de menu à IDE. Eles podem ser usados por projetos, mas não são compilados no projeto. O compilador não encontrará as unidades deste pacote ao compilar o projeto." +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Diretório de destino" @@ -7804,6 +8366,11 @@ msgid "Import ..." msgstr "Importar ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7822,6 +8389,10 @@ msgid "Do not change" msgstr "Não alterar" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Não fechar o projeto" @@ -7951,6 +8522,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7976,14 +8551,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Tipos Editor arquivos" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Editor de macros" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Carregar um esquema" @@ -8086,6 +8669,10 @@ msgid "Working Directory:" msgstr "Diretório trabalho:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8301,7 +8888,9 @@ msgstr "Erro no \"diretório de saída de unidades\":" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +#, fuzzy +#| msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "ERRO: modo de construção inválido \"%s\"" #: lazarusidestrconsts.liserrorloadingfile @@ -8406,6 +8995,10 @@ msgid "Save Events to File" msgstr "Salvar Eventos para Arquivo" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Adicionar Comentário ..." @@ -8446,10 +9039,6 @@ msgid "Exclude filter" msgstr "Filtro de exclusão" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Executável" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8470,10 +9059,6 @@ msgid "Execution stopped" msgstr "Execução parada" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programas" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8508,14 +9093,27 @@ msgid "Export" msgstr "Exportar" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Exportar como HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Exportar Lista" @@ -8524,6 +9122,14 @@ msgid "Export package list (*.xml)" msgstr "Exportar lista de pacote (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Expressão:" @@ -8598,6 +9204,7 @@ msgstr "Falha ao salvar arquivo." #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8952,10 +9559,6 @@ msgid "fpcmake failed" msgstr "\"fpcmake\" falhou" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "Arquivo de mensagem FPC" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9151,6 +9754,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sExistem mais %d grupos vazios, excluir todos?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "O nome de grupo não pode ser vazio. Limpar grupo(s) de pontos de parada?" @@ -9183,6 +9790,10 @@ msgid "Has Help" msgstr "Tem Ajuda" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Cabeçalho de comentário para classe" @@ -9233,6 +9844,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Dica" @@ -9321,17 +9933,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Adicionar" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Abrir" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9469,6 +10077,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Se você deseja usar duas versões diferentes do Lazarus, você deve iniciar o segundo Lazarus com o parâmetro de linha de comando \"primary-config-path\" ou \"pcp.%s%s\"Por exemplo:%s" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignorar" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Ignorar tudo" @@ -9485,9 +10099,9 @@ msgid "Ignore this exception type" msgstr "Ignorar este tipo de exceção" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ignorar, usar TForm como ancestral" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9503,11 +10117,13 @@ msgstr "Importar" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9602,6 +10218,10 @@ msgid "Inherited project component" msgstr "Componente projeto herdado" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil #, fuzzy,badformat #| msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%s%sDelete all files in %s%s%s?" @@ -9613,6 +10233,10 @@ msgid "Insert" msgstr "Inserir" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "inserir data" @@ -9752,6 +10376,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Ao invés de compilar o pacote criar um simples Makefile." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Interativo" @@ -9768,6 +10396,14 @@ msgid "Invalid delete" msgstr "Exclusão inválida" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Expressão inválida: %s%s%s%s" @@ -9885,6 +10521,14 @@ msgid "Jump History" msgstr "Histórico de Saltos" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10490,10 +11134,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Configurações da Área de Trabalho do Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Diretório Lazarus" @@ -10506,22 +11146,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Arquivo Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Formulário Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "IDE do Lazarus" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Arquivo de inclusões Lazarus" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "ID de idioma do Lazarus (ex. en, de, br, fi)" @@ -10534,30 +11162,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [opções] <nome-de-arquivo-do-projeto>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Outros arquivos Lazarus" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Pacote Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Projeto Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Arquivo de informações de Projeto Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Fonte de Projeto Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Unidade Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10845,10 +11449,6 @@ msgid "list of all case values" msgstr "lista de todos os valores \"case\"" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Carregado com sucesso" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Carga %s falhou." @@ -11035,6 +11635,10 @@ msgid "Manage Source Editors ..." msgstr "Gerenciar Editores de Código ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11460,6 +12064,22 @@ msgid "Jump to Implementation" msgstr "Saltar para implementação" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Saltar para o próximo marcador" @@ -11476,6 +12096,14 @@ msgid "Jump to Previous Error" msgstr "Saltar para o erro anterior" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Seleção em minúsculas" @@ -11493,6 +12121,10 @@ msgid "New Component" msgstr "Novo Componente" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Novo Formulário" @@ -11719,6 +12351,10 @@ msgid "S&how Execution Point" msgstr "Exibir &ponto de execução" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Ordenar seleção ..." @@ -11897,11 +12533,6 @@ msgid "History" msgstr "Histórico" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Botões aceleradores da IDE" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12220,6 +12851,14 @@ msgid "Undo last change to this grid" msgstr "Desfazer última alteração nesta grid" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Valor \"%s\"" @@ -12318,6 +12957,10 @@ msgid "(ms)" msgstr "(ms)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12534,6 +13177,7 @@ msgstr "Não é um identificador Pascal válido" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12847,6 +13491,12 @@ msgid "Open XML" msgstr "Abrir XML" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Opções" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Opções alteradas, recompilando após limpeza com -B" @@ -12964,6 +13614,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -12975,10 +13626,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Arquivo Pascal" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Núm. Passos" @@ -12996,6 +13643,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Caminho" @@ -13070,8 +13721,8 @@ msgid "Disable I18N of lfm" msgstr "Desabilitar I18N do lfm" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13129,7 +13780,9 @@ msgstr "Propriedades de Dependência" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Editar Opções Gerais" #: lazarusidestrconsts.lispckeditfileproperties @@ -13140,10 +13793,6 @@ msgid "Install" msgstr "Instalar" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Instalar pacote na IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Versão máxima inválida" @@ -13604,9 +14253,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "O arquivo %s%s%s%snão está atualmente no caminho de unidades do pacote.%s%sAdicionar %s%s%s ao caminho de unidades?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Há mais funções no menu \"PopUp\"" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13643,19 +14292,35 @@ msgstr "Unidade Virtual" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +#, fuzzy +#| msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Diretório Pacotes. Parâmetro é a ID do pacote" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +#, fuzzy +#| msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Caminho de busca de arquivos de inclusão de Pacotes. Parâmetro é a ID do pacote" +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +#, fuzzy +#| msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Caminho de busca de fonte de Pacote. Parâmetro é a ID do pacote" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +#, fuzzy +#| msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Caminho de busca de unidade de Pacote. Parâmetro é a ID do pacote" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13694,9 +14359,9 @@ msgid "Circular dependencies found" msgstr "Dependências circulares encontradas" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "Compilando pacote %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13872,6 +14537,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Um ou mais pacotes requeridos não foram encontrados. Veja gráfico de pacotes para detalhes." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Salvar Pacote?" @@ -14387,6 +15058,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14518,7 +15193,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "A Versão Máxima %s%s%s é inválida.%sFavor usar o formato maior.menor.lançamento.construção%sPor exemplo: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14530,7 +15205,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "A Versão Mínima %s%s%s é inválida.%sFavor usar o formato maior.menor.lançamento.construção%sPor exemplo: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15346,10 +16021,6 @@ msgid "Save current editor file" msgstr "Salvar o arquivo atual do editor" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Salvo com sucesso" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Salvo com as configurações da IDE" @@ -15424,6 +16095,10 @@ msgid "Save " msgstr "Salvar " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Fator de Escala:" @@ -15593,6 +16268,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Exibir" @@ -15617,6 +16296,10 @@ msgid "Show empty units/packages" msgstr "Exibir unidades/pacotes vazios" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor #, fuzzy #| msgid "Show Glyphs for:" @@ -15778,14 +16461,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Desculpe, este tipo ainda não foi implementado" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Ascendente" @@ -15998,10 +16681,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Sugerir nome padrão do novo arquivo em minúsculas" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Caminho inclusões suspeito" @@ -16761,6 +17440,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Esta declaração não pode ser extraída.%sFavor selecionar algum código para extrair um novo procedimento/método." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Isto criará uma dependência circular." @@ -16819,6 +17502,10 @@ msgid "Title (leave empty for default)" msgstr "Título (deixar vazio para padrão)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Função: adicionar o delimitador de caminho" @@ -16855,6 +17542,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Alterar exibição nomes de arquivo com caminho completo ou relativo" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16879,6 +17582,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Topo" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Ancoragem superior" @@ -17219,6 +17928,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Impossível converter os dados texto do arquivo %s%s%s%s%sem um fluxo binário (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Impossível copiar arquivo" @@ -17789,6 +18502,7 @@ msgstr "Variável" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18027,14 +18741,14 @@ msgid "XML Error" msgstr "Erro XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Arquivos XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Erro análise XML no arquivo %s%sErro: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Você pode desabilitar isso para formulários individuais via editor de pacotes" @@ -18176,10 +18890,6 @@ msgid "Filter the lines in list with a string" msgstr "Filtrar as linhas na lista com a \"string\"" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Arquivo dados de formulário (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Encontrado, mas não listado aqui:" @@ -18458,6 +19168,10 @@ msgid "Text marker commands" msgstr "Comandos do Marcador Texto" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Comandos do menu Pacotes" @@ -18900,11 +19614,15 @@ msgstr "Tenta identificar $IFDEF mal colocado" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +#, fuzzy +#| msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Mover cursor meia palavra à esquerda" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +#, fuzzy +#| msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Mover cursor meia palavra à direita" #: lazarusidestrconsts.srkmecimestr @@ -19016,6 +19734,18 @@ msgid "Invert Assignment" msgstr "Inverter atribuição" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Esquefa" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Direito" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Mover cursor à esquerda" @@ -19088,6 +19818,10 @@ msgid "Go to next editor" msgstr "Ir para o próximo editor" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Ir para o próximo editor com o mesmo Fonte" @@ -19140,6 +19874,30 @@ msgid "pause program" msgstr "pausar programa" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Marcador Anterior" @@ -19148,6 +19906,10 @@ msgid "Go to prior editor" msgstr "Ir para o editor anterior" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Ir para editor anterior com o mesmo Fonte" @@ -19247,11 +20009,15 @@ msgstr "Selecionar ir para XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +#, fuzzy +#| msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "Selecionar meia palavra à esquerda" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +#, fuzzy +#| msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "Selecionar meia palavra à direita" #: lazarusidestrconsts.srkmecselleft @@ -19700,10 +20466,22 @@ msgid "Move cursor word right" msgstr "Mover cursor uma palavra a direita" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Editar teclas do comando" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Retrair comentários" @@ -19736,6 +20514,26 @@ msgid "Hide comments in selection" msgstr "Ocultar comentários na seleção" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Expandir Ifdef ativo" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.ru.po lazarus-1.6+dfsg/languages/lazaruside.ru.po --- lazarus-1.4.4+dfsg/languages/lazaruside.ru.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.ru.po 2016-02-13 12:47:57.000000000 +0000 @@ -5,10 +5,12 @@ "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-06-11 02:24+0300\n" +"PO-Revision-Date: 2016-02-13 15:25+0300\n" "Language-Team: \n" "MIME-Version: 1.0\n" "X-Poedit-Bookmarks: -1,-1,-1,-1,-1,-1,-1,3325,-1,-1\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: lazarusidestrconsts.dbgbreakgroupdlgcaption msgctxt "lazarusidestrconsts.dbgbreakgroupdlgcaption" @@ -75,6 +77,10 @@ msgid "History forward" msgstr "Перейти по истории вперёд" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "Включить или выключить дополнительный курсор" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -158,6 +164,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Расширенное, действия - при отпускании кнопки мыши. Выделение - при нажатии и перемещении" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "Расширенное, действия - при нажатии кнопки мыши на правой половине поля" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "Выделять строку при щелчке по её номеру" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -379,6 +393,10 @@ msgid "Lowercase, first letter up" msgstr "Только первая буква заглавная" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "активный" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Добавлять оператор присваивания :=" @@ -542,10 +560,6 @@ msgid "Adjust top line due to comment in front" msgstr "Устанавливать верхнюю строку на комментарии" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Все файлы" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "По алфавиту" @@ -587,8 +601,8 @@ msgstr "Каждая форма создаётся в главном модуле .lpr посредством вызова Application.CreateForm(). Освобождаются формы также автоматически." #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" -msgstr "При создании новых форм добавить их к автосоздаваемым" +msgid "Auto-create new forms" +msgstr "Создавать новые формы автоматически" #: lazarusidestrconsts.dlgautodel msgid "Auto delete file" @@ -624,6 +638,18 @@ msgid "Auto rename file lowercase" msgstr "Переименовать в нижний регистр" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "Автоматически сохранять активный" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" +"Сохранять активный рабочий стол при закрытии IDE,\n" +"сохранять отладочный рабочий стол при закрытии IDE и окончании отладки\n" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Доступные формы:" @@ -701,6 +727,10 @@ msgid "Matching bracket pairs" msgstr "Парные скобки" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "Невозможно использовать стыкуемый рабочий стол в нестыкуемом окружении, и наоборот." + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1038,11 +1068,6 @@ msgid "Config files" msgstr "Файлы настройки" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Другие" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "Прочая отладочная информация" @@ -1176,9 +1201,9 @@ msgid "User defined extension (.pp.xxx)" msgstr "Расширение пользователя (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" -msgstr "Файл DCI (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" +msgstr "отладочный" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption msgid "Path Editor" @@ -1200,18 +1225,10 @@ msgid "Delete template " msgstr "Удалить шаблон " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Рабочий стол" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Кнопок - " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Файлы рабочего стола" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Подсказки" @@ -1220,6 +1237,18 @@ msgid "Menus - " msgstr "Меню - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "Имя рабочего стола" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "Рабочие столы (%d шт.) успешно экспортированы в \"%s\"" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "Рабочие столы (%d шт.) успешно импортированы из \"%s\"" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Направление" @@ -1302,6 +1331,7 @@ msgstr "Подкаталог" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Шаблоны кода" @@ -1531,6 +1561,134 @@ msgid "%s files" msgstr "Файлов: %s" +#: lazarusidestrconsts.dlgfilterall +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Все файлы" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "Файл шаблонов CodeTools" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "Файл DCI" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "Форма Delphi" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Пакет Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiproject +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Проект Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Модуль Delphi" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Исполнимый файл" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "Файл сообщений FPC" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "Файлы HTML" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "Изображения Bitmap" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "Изображения Pixmap" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "Изображения PNG" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Параметры рабочего стола Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Типы файлов редактора" + +#: lazarusidestrconsts.dlgfilterlazarusfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Файл Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Форма Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Включаемый файл Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Иной файл Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Пакет Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Проект Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Исходный код проекта Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "Сеанс работы в Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Модуль Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Файл Паскаля" + +#: lazarusidestrconsts.dlgfilterprograms +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Программы" + +#: lazarusidestrconsts.dlgfilterxml +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Файлы XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Поиск текста под курсором" @@ -1694,6 +1852,10 @@ msgid "Processing Instruction" msgstr "Команда обработки" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "Запущенный экземпляр Lazarus не может принять файлы." + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Цвет текста" @@ -1730,11 +1892,6 @@ msgid "&From cursor" msgstr "От &курсора" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Параметры" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Взять положение" @@ -1751,6 +1908,10 @@ msgid "Grabber color" msgstr "Узел захвата" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "Серым отмечены рабочие столы для нестыкуемого окружения." + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Сетка" @@ -1932,9 +2093,13 @@ msgid "Included mixed state $IFDEF node" msgstr "Директива $IFDEF подключаемого условно активного кода" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Пропустить" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" +"Рабочий стол с таким именем уже имеется.\n" +"Подтвердите это имя:\n" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2042,12 +2207,16 @@ msgstr "1 (быстро и дружественно к отладчику)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" -msgstr "2 (быстрые оптимизации)" +msgid "2 (-O1 + quick optimizations)" +msgstr "2 (-O1 + быстрые оптимизации)" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" -msgstr "3 (медленные оптимизации)" +msgid "3 (-O2 + slow optimizations)" +msgstr "3 (-O2 + медленные оптимизации)" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "4 (-O3 + агрессивные оптимизации, будьте осторожны)" #: lazarusidestrconsts.dlglevelnoneopt msgid "0 (no optimization)" @@ -2065,10 +2234,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Выдавать номера строк в ошибках времени исполнения" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Загрузить рабочий стол из файла" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Главное меню" @@ -2090,6 +2255,10 @@ msgid "\"Make\" executable" msgstr "Исполнимый файл \"Make\"" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "Управление рабочими столами" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Границы" @@ -2246,6 +2415,7 @@ msgstr "Реакция на действия мышью" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Одинарный" @@ -2451,6 +2621,10 @@ msgid "Gutter" msgstr "Поле слева" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "Маркеры изменений" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Дерево сворачиваний" @@ -2503,6 +2677,95 @@ msgid "Messages" msgstr "Сообщения" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Отладочное" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Ошибка" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "Фатальная ошибка" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Подсказка" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "Важное" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "Обычное" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "Замечание" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "Чрезвычайное" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "Время и статистика" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "Подробное" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "Подробное 2" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "Подробное 3" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Предупреждение" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "Перемещать все курсоры за основным при выделении столбца" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "Перемещать все курсоры за основным" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "Включить несколько курсоров при выделении столбца" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "Несколько экземпляров Lazarus" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "всегда запускать новый экземпляр" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "не разрешать несколько экземпляров" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "открывать файлы в запущенном экземпляре" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Множественное выделение" @@ -2539,6 +2802,10 @@ msgid "Naming" msgstr "Именование" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "Новый рабочий стол ..." + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Не переименовывать автоматически" @@ -2577,11 +2844,6 @@ msgid "Miscellaneous" msgstr "Разное" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Параметры" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Быстрая настройка" @@ -2610,6 +2872,14 @@ msgid "Overwrite block" msgstr "Заменять выделение" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" +"Рабочий стол с именем \"%s\" уже имеется.\n" +"Перезаписать его?\n" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Подсказки палитры компонентов" @@ -2792,8 +3062,8 @@ msgstr "Имя свойства" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" -msgstr "Открывать последний проект при запуске" +msgid "Open last project and packages at start" +msgstr "Открывать последние проект и пакеты при запуске" #: lazarusidestrconsts.dlgqshowborderspacing msgid "Show border spacing" @@ -2807,6 +3077,10 @@ msgid "Snap to grid" msgstr "Выравнивать по сетке" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "Вы действительно хотите удалить рабочий стол \"%s\"?" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Ссылка" @@ -2815,6 +3089,10 @@ msgid "Regular e&xpressions" msgstr "&Регулярные выражения" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "Переименовать рабочий стол" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Заменить &Все" @@ -2856,6 +3134,22 @@ msgid "Rubberband Selection" msgstr "Прямоугольник выделения" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" +"Запущенный экземпляр Lazarus не может принять файлы.\n" +"Хотите открыть их в новом экземпляре IDE?\n" +"\n" +"%s\n" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "Экземпляр Lazarus запущен, но не отвечает." + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Дисплей (не для win32, например, 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2885,9 +3179,9 @@ msgid "Run Parameters" msgstr "Параметры запуска" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Сохранить рабочий стол в файл" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "Сохранить текущий рабочий стол как" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -2958,6 +3252,10 @@ msgid "&Selected text" msgstr "В вы&деленном" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "Сделать активным" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Установить все элементы по умолчанию" @@ -2970,6 +3268,26 @@ msgid "Set property Variable" msgstr "Переменная свойства" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "Имя параметра для процедуры установки свойства по умолчанию." + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "префикс" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "При выборе \"переменная свойства\" будет префиксом. В противном случае это будет фиксированное имя." + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "использовать const" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "При выборе параметр помечается \"const\"." + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Показывать все модули" @@ -3093,6 +3411,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "Когда компонент уже почти выровнен с другим, он перемещается в выровненное положение" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "Многострочный список вкладок" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3194,6 +3516,11 @@ msgid "&Text to find" msgstr "Н&айти текст" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "Переключить режим отладочного рабочего стола" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Подсказка о текущих классе/процедуре" @@ -3567,6 +3894,10 @@ msgid "File not unit" msgstr "Файл не является модулем" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "Значок (не более 24x24):" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Неверный тип предка" @@ -3612,6 +3943,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Не найдено пакета для зависимости \"%s\".%sВыберите существующий пакет." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "Пакет/проект" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Имя вкладки слишком длинное" @@ -3740,6 +4075,11 @@ msgid "Abandon changes?" msgstr "Отбросить изменения?" +#: lazarusidestrconsts.lisabort +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Прервать" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Прервать все" @@ -3850,6 +4190,14 @@ msgid "Added property \"%s\" for %s." msgstr "Добавлено свойство \"%s\" для %s." +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "Добавить -FcUTF8" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "Может понадобиться, если файлы исходного кода содержат литералы, не являющиеся Ansistring." + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Добавить файлы из каталога" @@ -3915,6 +4263,10 @@ msgid "&Address Breakpoint ..." msgstr "Точка останова по &адресу ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "Добавить >>" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "Добавить к путям поиска включаемых файлов?" @@ -3923,6 +4275,10 @@ msgid "Add %s to project?" msgstr "Добавить %s к проекту?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "Добавить компонент к создаваемым при запуске?" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "Добавить к путям поиска модулей?" @@ -3951,10 +4307,6 @@ msgid "File type" msgstr "Тип файла" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Имеет процедуру Register" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Неверный пакет" @@ -3976,19 +4328,10 @@ msgid "Show all" msgstr "Показать все" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Файл \"%s\"%sуже имеется в пакете %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Пакет %s только для чтения." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Имя модуля: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit msgid "A file \"%s\" already exists.%sReplace it?" msgstr "Файл \"%s\" уже существует.%sЗаменить его?" @@ -4013,10 +4356,6 @@ msgid "<All build modes>" msgstr "<Все режимы сборки>" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Все файлы" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Все унаследованные параметры" @@ -4134,7 +4473,7 @@ msgstr "Привязать верх компонента к верху соседа. Используйте зазор для задания расстояния. Зазор соседа игнорируется." #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Во время загрузки %s при последнем запуске произошла ошибка!%sЗагрузить проект снова?" #: lazarusidestrconsts.lisapplicationclassname @@ -4194,6 +4533,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "Типичное значение для ОС Windows: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "Выставлять высоту главного окна IDE автоматически" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "Показывать палитру компонентов полностью" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "Показывать все строки палитры компонентов, если она занимает несколько." + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Автодополнение: выключено" @@ -4251,6 +4602,10 @@ msgid "do not add character" msgstr "не добавлять сам символ" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "Автоматически выбирать единственный возможный идентификатор" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Автозавершение и подсказки" @@ -4339,6 +4694,11 @@ msgid "Border space" msgstr "Зазор" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Снизу" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Нижний зазор. Его значение добавляется к базовуму зазору и используется для определения пространства под компонентом." @@ -4449,6 +4809,10 @@ msgid "Building Lazarus failed" msgstr "Сборка Lazarus не удалась" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "Режим сборки: %s" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Различия между режимами сборки" @@ -4573,7 +4937,7 @@ #: lazarusidestrconsts.lisccdchangeclassof msgid "Change Class of %s" -msgstr "Изменить класс %s" +msgstr "Сменить класс %s" #: lazarusidestrconsts.lisccdnoclass msgid "no class" @@ -4697,6 +5061,7 @@ msgstr "необычные символы" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Предупреждение" @@ -4912,7 +5277,7 @@ msgstr "Неверные отступы" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Произошло исключение во время удаления%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5038,7 +5403,7 @@ #: lazarusidestrconsts.lischangeclass msgid "Change Class" -msgstr "Изменить класс" +msgstr "Сменить класс" #: lazarusidestrconsts.lischangedscoordofsfromdtodinsides msgid "Changed %s coord of %s from \"%d\" to \"%d\" inside %s." @@ -5147,6 +5512,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Выберите файл Паскаля для получения образцов отступов" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "Вставить новый метод в секцию" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "Выберите исполнимый файл компилятора (%s)" @@ -5175,6 +5544,10 @@ msgid "Choose directory" msgstr "Выберите каталог" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "Выберите исполнимый файл" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Выберите каталог исходного кода FPC" @@ -5329,9 +5702,9 @@ msgid "Click here to browse the file" msgstr "Щёлкните здесь для выбора файла" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Щёлкните для просмотра возможных вариантов использования" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "Нажмите, чтобы увидеть возможные действия" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5400,6 +5773,10 @@ msgid "Pages" msgstr "Вкладки" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "&Показывать палитру" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "Сброс&ить" @@ -5985,10 +6362,6 @@ msgid "Symbol" msgstr "Символ" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "Файл шаблонов CodeTools" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Выполнить после компиляции" @@ -6179,6 +6552,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Параметры \"Сборки Lazarus\"" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "Настроить инструментальную панель" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Настройка Lazarus" @@ -6620,6 +6997,166 @@ msgid "User selected to end conversion with file %s" msgstr "Пользователь запросил завершение преобразования на файле %s" +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "Добавление/настройка/удаление инструментальных панелей" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "Добавить разделитель" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "Добавить выбранный элемент на панель" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "Доступные команды" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "Граница инструментальной панели" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Нет" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Одинарная" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "Снять выбор" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Обозреватель кода" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Шаблоны кода" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "&Настроить" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "Вы действительно хотите удалить эту панель?" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "Должна иметься хотя бы одна панель!" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "Дизайнер" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "Общие параметры инструментальных панелей" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "Стиль узла захвата" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "Простой" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Двойной" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "Горизонтальные линии" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "Вертикальные линии" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "Рельефный" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Кнопка" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "Ширина" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "Главное меню IDE" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Сообщения" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "Переместить выбранный элемент вниз" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "Переместить выбранный элемент вверх" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "Инструментальные панели IDE" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "Редактор пакетов" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "Файлы в редакторе пакетов" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "Удалить выбранный элемент с панели" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "Сбросить" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "Сначала выберите панель!" + +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Редактор исходного кода" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "Вкладка редактора исходного кода" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "Элементы панели" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "&Показывать инструментальные панели" + +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" +msgstr "Ширина панели" + #: lazarusidestrconsts.liscopy msgctxt "lazarusidestrconsts.liscopy" msgid "Copy" @@ -6896,6 +7433,10 @@ msgid "Custom options" msgstr "Параметры пользователя" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "Параметры пользователя" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Программа пользователя" @@ -7397,22 +7938,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "Ресурсы, совместимые с Delphi. Рекомендуется использовать именно их." -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Пакет Delphi" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Проект Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Модуль Delphi" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "Пакеты времени разработки добавляют компоненты и элементы меню в IDE. Они могут использоваться проектами, но не собираться с ними. Компилятор не найдёт модулей такого пакета при сборке проекта." +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "Рабочие столы ..." + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Каталог назначения" @@ -7634,6 +8167,11 @@ msgid "Import ..." msgstr "Импортировать ..." +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "Прочие ..." + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7652,6 +8190,10 @@ msgid "Do not change" msgstr "В неизменном виде" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "%sНе проверять, что другой экземпляр IDE уже запущен" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Не закрывать проект" @@ -7777,6 +8319,10 @@ msgid "Duplicate Unit" msgstr "Дублирующийся модуль" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "Дублирующийся модуль \"%s\" в \"%s\"" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7802,14 +8348,22 @@ msgid "Editor Colors" msgstr "Цвета редактора" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Типы файлов редактора" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "Макросы редактора" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "Инструментальная панель редактора" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "Параметры инструментальной панели редактора" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "&Показывать инструментальную панель редактора" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Загрузить схему" @@ -7912,6 +8466,10 @@ msgid "Working Directory:" msgstr "Рабочий каталог:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "Всегда отображать сообщение как важное (по умолчанию оно относится к менее важным \"подробным\")" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8121,8 +8679,8 @@ msgstr "Ошибка в поле \"Каталог вывода модулей\":" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" -msgstr "ОШИБКА: некорректный режим сборки \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" +msgstr "Ошибка: (Lazarus) некорректный режим сборки \"%s\"" #: lazarusidestrconsts.liserrorloadingfile msgid "Error loading file" @@ -8222,6 +8780,10 @@ msgid "Save Events to File" msgstr "Сохранить события в файл" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "Вставлять новые методы событий в секцию" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Добавить комментарий ..." @@ -8262,10 +8824,6 @@ msgid "Exclude filter" msgstr "Исключающий фильтр" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Исполнимый файл" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "исполнимый файл \"%s\" является каталогом" @@ -8286,10 +8844,6 @@ msgid "Execution stopped" msgstr "Исполнение остановлено" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Программы" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8324,14 +8878,27 @@ msgid "Export" msgstr "Экспортировать" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "Экспортировать все" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "Экспортировать всё в файл" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "Экспортировать параметры окружения" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Экспортировать в HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "Экспорт / импорт" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Список экспорта" @@ -8340,6 +8907,14 @@ msgid "Export package list (*.xml)" msgstr "Список экспортируемых пакетов (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "Экспортировать выбранный" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "Экспортировать >>" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Выражение:" @@ -8414,6 +8989,7 @@ msgstr "Не удалось сохранить файл." #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "Фатальная ошибка" @@ -8757,10 +9333,6 @@ msgid "fpcmake failed" msgstr "ошибка fpcmake" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "Файл сообщений FPC" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "Файл сообщений FPC:" @@ -8962,6 +9534,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sИмеется ещё ряд пустых групп (%d), удалить их все?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "Группировать автоматически создаваемые объявления локальных переменных" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Имя группы не может быть пустым. Очистить группу точки останова?" @@ -8994,6 +9570,10 @@ msgid "Has Help" msgstr "Имеет справку" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "Цвета заголовков" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Комментарий перед заголовком класса" @@ -9044,6 +9624,7 @@ msgstr "Скрыть с помощью параметра проекта (-vm%s)" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Подсказка" @@ -9132,14 +9713,12 @@ msgid "ID" msgstr "Идентификатор" -#: lazarusidestrconsts.lisidcadd -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" msgstr "Добавление" -#: lazarusidestrconsts.lisidcopen -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" msgstr "Открытие" #: lazarusidestrconsts.liside @@ -9274,6 +9853,11 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Если вы хотите использовать два экземпляра Lazarus разных версий, второй экземпляр Lazarus следует запускать с параметром командной строки primary-config-path или pcp.%sНапример:" +#: lazarusidestrconsts.lisignore +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Пропустить" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Игнорировать все" @@ -9290,9 +9874,9 @@ msgid "Ignore this exception type" msgstr "Игнорировать этот тип исключений" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Игнорировать, использовать TForm как предка" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "Игнорировать, использовать %s как предка" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9308,12 +9892,14 @@ msgstr "Импортировать" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "Важное" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" -msgstr "Импорт / экспорт" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" +msgstr "Импортировать параметры окружения" #: lazarusidestrconsts.lisimportfromfile msgid "Import from File" @@ -9407,6 +9993,10 @@ msgid "Inherited project component" msgstr "Унаследованный от компонента проекта" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "Инициализация локальной переменной" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "При создании очищенной копии проекта/пакета все файлы в следующем каталоге будут удалены, и всё их содержимое будет утеряно.%sУдалить все файлы в \"%s\"?" @@ -9416,6 +10006,10 @@ msgid "Insert" msgstr "Вставить" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "Вставить присваивание %s := ..." + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "Вставить дату" @@ -9555,6 +10149,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Вместо компиляции пакета создавать простой Makefile." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "Неподходящая кодировка" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Интерактивный режим" @@ -9571,6 +10169,14 @@ msgid "Invalid delete" msgstr "Недопустимое удаление" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "Некорректный исполнимый файл" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "Файл \"%s\" не является исполнимым." + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Неверное выражение:%s%s%s%s" @@ -9684,6 +10290,14 @@ msgid "Jump History" msgstr "История переходов" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "Переходить к ошибке" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "Переходить к ошибке, обнаруженной в исходном коде при завершении идентификатора." + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "Перейти к процедуре %s" @@ -10288,10 +10902,6 @@ msgid "Lazarus Default" msgstr "Lazarus по умолчанию" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Установки Рабочего Стола Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Каталог Lazarus" @@ -10304,22 +10914,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Файл Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Форма Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "IDE Lazarus" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Включаемый файл Lazarus" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Идентификатор языка Lazarus (пример: en, de, br, fi)" @@ -10332,30 +10930,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [параметры] <имя файла проекта>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Иной файл Lazarus" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Пакет Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Проект Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Файл сведений о проекте Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Исходный код проекта Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Модуль Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10550,7 +11124,7 @@ #: lazarusidestrconsts.lisleft msgctxt "lazarusidestrconsts.lisleft" msgid "Left" -msgstr "Влево" +msgstr "Слева" #: lazarusidestrconsts.lisleftborderspacespinedithint msgid "Left borderspace. This value is added to base borderspace and used for the space left to the control." @@ -10651,10 +11225,6 @@ msgid "list of all case values" msgstr "Список всех значений оператора case" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Загрузка прошла успешно" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Загрузка %s не удалась." @@ -10837,6 +11407,10 @@ msgid "Manage Source Editors ..." msgstr "Управление редакторами исходного кода ..." +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "Максимальное количество потоков исполнения для параллельной сборки. Значение по умолчанию - 0 (пытаться определить количество ядер процессоров в системе автоматически)." + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "Максимально параллельных процессов, 0 - значение по умолчанию (%s)" @@ -11260,7 +11834,23 @@ #: lazarusidestrconsts.lismenujumptoimplementation msgid "Jump to Implementation" -msgstr "Перейти к реализации" +msgstr "Перейти к секции Implementation" + +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "Перейти к выражению Uses секции Implementation" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "Перейти к секции Initialization" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "Перейти к секции Interface" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "Перейти к выражению Uses секции Interface" #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" @@ -11278,6 +11868,14 @@ msgid "Jump to Previous Error" msgstr "Перейти к предыдущей ошибке" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "Перейти к началу тела процедуры" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "Перейти к заголовку процедуры" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Нижний регистр выделенного" @@ -11295,6 +11893,10 @@ msgid "New Component" msgstr "Новый компонент" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "Новый элемент: %s" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Создать форму" @@ -11521,6 +12123,10 @@ msgid "S&how Execution Point" msgstr "Показать точку &исполнения" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "Контекстно-зависимая умная подсказка" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Сортировать выделенное ..." @@ -11699,11 +12305,6 @@ msgid "History" msgstr "История" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Кнопки быстрого доступа IDE" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12030,6 +12631,14 @@ msgid "Undo last change to this grid" msgstr "Отменить последнюю правку в данной таблице" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "Использовать системную кодировку" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "Отключить поддержку UTF-8 в качестве кодировки строки по умолчанию." + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "Значение \"%s\"" @@ -12138,6 +12747,10 @@ msgid "(ms)" msgstr "(мс)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "Цвета сообщений" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "Разделителем каталогов является точка с запятой" @@ -12350,6 +12963,7 @@ msgstr "Некорректный идентификатор Паскаля" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "Замечание" @@ -12659,6 +13273,11 @@ msgid "Open XML" msgstr "Открыть XML" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Параметры" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Параметры были изменены, перекомпиляция с очисткой (ключ -B)" @@ -12776,6 +13395,7 @@ msgstr "Вкладка с именем \"%s\" уже имеется. Добавление отменено." #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "Чрезвычайное" @@ -12787,10 +13407,6 @@ msgid "parser \"%s\": %s" msgstr "анализатор \"%s\": %s" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Файл Паскаля" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Число проходов" @@ -12808,6 +13424,10 @@ msgid "Paste from clipboard" msgstr "Вставить из буфера обмена" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "Пастельные цвета" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Путь" @@ -12882,9 +13502,9 @@ msgid "Disable I18N of lfm" msgstr "Отключить i18n для LFM" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" -msgstr "Добавить файлы из файловой системы" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" +msgstr "Добавить файлы" #: lazarusidestrconsts.lispckeditaddotheritems msgid "Add other items" @@ -12941,7 +13561,7 @@ msgstr "Свойства зависимости" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +msgid "Edit general options" msgstr "Изменить общие параметры" #: lazarusidestrconsts.lispckeditfileproperties @@ -12952,10 +13572,6 @@ msgid "Install" msgstr "Установить" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Установить пакет в IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Неверная максимальная версия" @@ -13402,9 +14018,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Файл \"%s\"%sсейчас не находится в списке путей к модулям пакета.%sДобавить \"%s\" к списку путей к модулям?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Во всплывающем меню больше функций" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "Прочие возможности управления пакетом" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13441,20 +14057,28 @@ msgstr "Виртуальный модуль" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" -msgstr "Каталог пакета. Параметром является идентификатор пакета" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Каталог пакета. Параметром является идентификатор пакета, например, \"Имя\" или \"Имя 1.0\"" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" -msgstr "Путь поиска включаемых файлов пакета. Параметром является идентификатор пакета" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Путь поиска включаемых файлов пакета. Параметром является идентификатор пакета, например, \"Имя\" или \"Имя 1.0\"" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Имя пакета. Параметром является идентификатор пакета, например, \"Имя\" или \"Имя 1.0\"" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Каталог вывода пакета. Параметром является идентификатор пакета, например, \"Имя\" или \"Имя 1.0\"" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" -msgstr "Путь поиска файлов исходного кода пакета. Параметром является идентификатор пакета" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Путь поиска файлов исходного кода пакета. Параметром является идентификатор пакета, например, \"Имя\" или \"Имя 1.0\"" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" -msgstr "Путь поиска модулей пакета. Параметром является идентификатор пакета" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "Путь поиска модулей пакета. Параметром является идентификатор пакета, например, \"Имя\" или \"Имя 1.0\"" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage msgid "%sAdding new Dependency for package %s: package %s" @@ -13488,8 +14112,8 @@ msgid "Circular dependencies found" msgstr "Обнаружен порочный круг зависимостей" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "Компиляция пакета %s" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -13658,6 +14282,14 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Некоторых требуемых пакетов не найдено. Для получения подробностей смотрите диаграмму пакетов." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" +"Пакет %s уже открыт в IDE.\n" +"Невозможно сохранить пакет с таким же именем.\n" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Сохранить пакет?" @@ -14091,6 +14723,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "Файл .lpi является главным хранилищем сведений о проекте, в то время как .lps содержит только сведения о сеансе работы" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "Положение" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "%s (положение вне границ исходного кода)" @@ -14216,7 +14852,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Максимальная версия \"%s\" некорректна.%sИспользуйте формат главная.вторичная.релиз.сборка%sНапример: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14226,7 +14862,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Минимальная версия \"%s\" некорректна.%sИспользуйте формат главная.вторичная.релиз.сборка%sНапример: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -14848,7 +15484,7 @@ #: lazarusidestrconsts.lisright msgctxt "lazarusidestrconsts.lisright" msgid "Right" -msgstr "Вправо" +msgstr "Справа" #: lazarusidestrconsts.lisrightanchoring msgid "Right anchoring" @@ -15028,10 +15664,6 @@ msgid "Save current editor file" msgstr "Сохранить файл в текущем редакторе" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Сохранение прошло успешно" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "Сохраняемые с параметрами IDE" @@ -15102,6 +15734,10 @@ msgid "Save " msgstr "Сохранить " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "Сохранение файла \"%s\" в \"%s\" приведёт к потере символов (строка %s, столбец %s)." + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Коэффициент масштабирования:" @@ -15271,6 +15907,10 @@ msgid "Short, no path" msgstr "Короткое, без указания пути" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "Должен ли компонент \"%s\" автоматически создаваться при запуске приложения?" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Отображать" @@ -15295,6 +15935,10 @@ msgid "Show empty units/packages" msgstr "Показывать пустые модули/пакеты" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "Показывать сообщение FPC со статистикой компиляции" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "Показывать значки для" @@ -15452,14 +16096,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Извините, этот тип ещё не реализован" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "Сортировка" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "Сортировать по области действия" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "Сортировка" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "По возрастанию" @@ -15666,10 +16310,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Предлагать имя нового файла по умолчанию в нижнем регистре" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "Поддержка RTL с UTF-8" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Подозрительный путь поиска включаемых файлов" @@ -15953,7 +16593,7 @@ #: lazarusidestrconsts.listhefilewasnotfoundignorewillgoonloadingtheproject msgid "The file \"%s\" was not found.%sIgnore will go on loading the project,%sAbort will stop the loading." -msgstr "Файл \"%s\" не найден.%sПропуск - продолжить загрузку проекта,%sПрервать - остановить загрузку." +msgstr "Файл \"%s\" не найден.%sПропустить- продолжить загрузку проекта,%sПрервать - остановить загрузку." #: lazarusidestrconsts.listhefollowingmethodsusedbyarenotinthesourceremoveth msgid "The following methods used by %s are not in the source%s%s%s%s%sRemove the dangling references?" @@ -16323,6 +16963,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Это выражение не может быть извлечено.%sВыберите какой-то код, чтобы извлечь новую процедуру/метод." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "Действие позволит вносить изменения во все режимы сборки сразу. Ещё не реализовано." + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Это действие создаст порочный круг зависимостей." @@ -16381,6 +17025,10 @@ msgid "Title (leave empty for default)" msgstr "Название (оставьте пустым для значения по умолчанию)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "Выберите значок компонента (24x24)" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Функция: добавление разделителя пути" @@ -16417,6 +17065,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Переключение режимов показа имён файлов с полным или относительным путём" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "Настройка инструментальной панели" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "Инструментальная панель" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "Выделить кнопки на инструментальных панелях" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "Приподнять инструментальные панели" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "средство \"%s\" не имеет исполнимого файла" @@ -16441,6 +17105,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "средство завершило работу с кодом %s. Для получения дополнительных сведений воспользуйтесь контекстным меню." +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Сверху" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Верхняя привязка" @@ -16763,6 +17432,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Невозможно преобразовать текстовые данные формы файла %s\"%s\"%sв двоичный поток. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "Невозможно провести преобразование в кодировку \"%s\"" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Невозможно скопировать файл" @@ -17282,6 +17955,7 @@ msgstr "Переменная" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "Подробное" @@ -17516,14 +18190,14 @@ msgid "XML Error" msgstr "Ошибка XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Файлы XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Ошибка анализа XML в файле %s%sОшибка: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "Да" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Это поведение можно отключить для отдельных форм через редактор пакета" @@ -17664,10 +18338,6 @@ msgid "Filter the lines in list with a string" msgstr "Отфильтровывайте значения списка при помощи строки" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Файл данных формы (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Найденных, но не отображаемых здесь: " @@ -17946,6 +18616,10 @@ msgid "Text marker commands" msgstr "Команды управления закладками исходного кода" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "Команды управления несколькими курсорами" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Команды меню Пакет" @@ -18388,12 +19062,12 @@ msgstr "Исправить отсутствие $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" -msgstr "Переместить курсор влево на полслова" +msgid "Move cursor part-word left (e.g. CamelCase)" +msgstr "Переместить курсор влево на часть слова (например, смешанный регистр)" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" -msgstr "Переместить курсор вправо на полслова" +msgid "Move cursor part-word right (e.g. CamelCase)" +msgstr "Переместить курсор вправо на часть слова (например, смешанный регистр)" #: lazarusidestrconsts.srkmecimestr msgid "Ime Str" @@ -18502,7 +19176,17 @@ #: lazarusidestrconsts.srkmecinvertassignment msgctxt "lazarusidestrconsts.srkmecinvertassignment" msgid "Invert Assignment" -msgstr "Инвертировать присвоение" +msgstr "Обратить присваивание" + +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Влево" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Вправо" #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" @@ -18576,6 +19260,10 @@ msgid "Go to next editor" msgstr "Перейти к следующему редактору" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "Перейти к следующему редактору в истории" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Перейти к следующему редактору с тем же файлом исходного кода" @@ -18628,6 +19316,30 @@ msgid "pause program" msgstr "приостановить программу" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "Удалить все дополнительные курсоры" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "Удалять все дополнительные курсоры клавишами управления" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "Перемещать все курсоры клавишами управления" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "Добавить дополнительный курсор" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "Включить или выключить дополнительный курсор" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "Удалить дополнительный курсор" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Предыдущая закладка" @@ -18636,6 +19348,10 @@ msgid "Go to prior editor" msgstr "Перейти к предыдущему редактору" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "Перейти к предыдущему редактору в истории" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Перейти к предыдущему редактору с тем же файлом исходного кода" @@ -18735,12 +19451,12 @@ msgstr "Выделить до координаты XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" -msgstr "Выделить полслова слева" +msgid "Select part-word left (e.g. CamelCase)" +msgstr "Выделить часть слова слева (например, смешанный регистр)" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" -msgstr "Выделить полслова справа" +msgid "Select part-word right (e.g. CamelCase)" +msgstr "Выделить часть слова справа (например, смешанный регистр)" #: lazarusidestrconsts.srkmecselleft msgid "Select Left" @@ -19188,10 +19904,22 @@ msgid "Move cursor word right" msgstr "Переместить курсор на слово вправо" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "Увеличить масштаб" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "Уменьшить масштаб" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Редактирование клавиш вызова команды" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "Выполнить также следующее действие при отпускании кнопки мыши" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "Свернуть комментарии" @@ -19224,6 +19952,26 @@ msgid "Hide comments in selection" msgstr "Скрыть комментарии в выделенном" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "Учитывать кнопку мыши при её нажатии" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "Учитывать строку при нажатии кнопки мыши" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "Учитывать модификаторы при нажатии кнопки мыши" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "Учитывать положение мыши при нажатии кнопки" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "Искать все действия при нажатии кнопки мыши" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "Развернуть активный блок IFDEF" @@ -19363,7 +20111,7 @@ #: lazarusidestrconsts.ueminvertassignment msgctxt "lazarusidestrconsts.ueminvertassignment" msgid "Invert Assignment" -msgstr "Инвертировать присвоение" +msgstr "Обратить присваивание" #: lazarusidestrconsts.uemlineending msgid "Line Ending" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.sk.po lazarus-1.6+dfsg/languages/lazaruside.sk.po --- lazarus-1.4.4+dfsg/languages/lazaruside.sk.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.sk.po 2016-01-05 13:41:02.000000000 +0000 @@ -77,6 +77,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -160,6 +164,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -381,6 +393,10 @@ msgid "Lowercase, first letter up" msgstr "Malé písmená, prvé veľké" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Pridať operátor priradenia (:=)" @@ -544,10 +560,6 @@ msgid "Adjust top line due to comment in front" msgstr "Prispôsobiť horný riadok pre komentár vpredu" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Všetky súbory" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Podľa abecedy" @@ -593,7 +605,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "Nový formulár pridať k automaticky vytváraným formulárom" #: lazarusidestrconsts.dlgautodel @@ -630,6 +644,16 @@ msgid "Auto rename file lowercase" msgstr "Automaticky na malé písmená" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Dostupné formuláre:" @@ -709,6 +733,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive #, fuzzy #| msgid "&Case Sensitive" @@ -1074,11 +1102,6 @@ msgid "Config files" msgstr "Konfiguračné súbory" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Ostatné" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1226,8 +1249,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Používateľská prípona (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1250,20 +1273,10 @@ msgid "Delete template " msgstr "Zmazať šablónu" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Plocha" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -#, fuzzy -#| msgid "Desktop files" -msgid "Desktop Files" -msgstr "Súbory plochy" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1272,6 +1285,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Smer" @@ -1356,6 +1381,7 @@ #: lazarusidestrconsts.dlgedcodetempl #, fuzzy #| msgid "Code templates" +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Šablóny kódu" @@ -1591,6 +1617,147 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Všetky súbory" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Projekt Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Nastavenia plochy Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +#| msgid "Lazarus File" +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Súbor Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Formulár Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Include súbor Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Balíček Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Projekt Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Zdrojový kód Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Jednotka Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programy" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Súbory XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Nájsť text na kurzore" @@ -1754,6 +1921,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Farba popredia" @@ -1792,11 +1963,6 @@ msgid "&From cursor" msgstr "&Od kurzora" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Voľby" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Získať pozíciu" @@ -1813,6 +1979,10 @@ msgid "Grabber color" msgstr "Farba zachytávača" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Farba mriežky" @@ -2002,9 +2172,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ignorovať" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2116,15 +2288,19 @@ msgstr "Úroveň 1 (rýchle a priateľské debugeru)" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt #, fuzzy -#| msgid "Level 3 (Level 2 + slow optimizations)" -msgid "3 (slow optimizations)" +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "Úroveň 3 (Úroveň 2 + pomalé optimalizácie)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt #, fuzzy #| msgid "Level 0 (no extra optimizations)" @@ -2147,10 +2323,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Zobraziť čísla riadkov v behovom výpise chýb" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Načítať nastavenia plochy zo súboru" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Hlavné menu" @@ -2178,6 +2350,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Okraj a gutter" @@ -2334,6 +2510,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2539,6 +2716,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2591,6 +2772,98 @@ msgid "Messages" msgstr "Správy" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Ladiť" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Chyba" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Upozorňovanie" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Viacnásobný výber" @@ -2627,6 +2900,10 @@ msgid "Naming" msgstr "Pomenovanie" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming #, fuzzy #| msgid "no automatic renaming" @@ -2671,11 +2948,6 @@ msgid "Miscellaneous" msgstr "Zaujímavé" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Voľby" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2706,6 +2978,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Rady pre paletu komponentov" @@ -2906,7 +3184,9 @@ msgstr "Meno vlastnosti" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "Pri spustení otvoriť posledný projekt" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2921,6 +3201,10 @@ msgid "Snap to grid" msgstr "Prichytiť k mriežke" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Odkazy" @@ -2931,6 +3215,10 @@ msgid "Regular e&xpressions" msgstr "&Regulárne výrazy" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "N&ahradiť všetko" @@ -2982,6 +3270,18 @@ msgid "Rubberband Selection" msgstr "Výber" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Zobraziť (nie pre Win32, napr. 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -3013,9 +3313,9 @@ msgid "Run Parameters" msgstr "Parametre spustenia" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Uložiť nastavenie plochy do súboru" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3092,6 +3392,10 @@ msgid "&Selected text" msgstr "&Vybratý text" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Nastaviť všetky prvky na predvolené" @@ -3104,6 +3408,26 @@ msgid "Set property Variable" msgstr "Premenná nastavenia vlastnosti" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3233,6 +3557,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3340,6 +3668,11 @@ msgid "&Text to find" msgstr "&Hľadaný text" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3747,6 +4080,10 @@ msgid "File not unit" msgstr "Súbor nie je jednotka" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Neplatný typ predka" @@ -3796,6 +4133,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Nenájdený balíček pre závislosť %s%s%s.%sProsím zvoľte existujúci balíček." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Meno balíčka veľmi dlhé" @@ -3960,6 +4301,12 @@ msgid "Abandon changes?" msgstr "Zahodiť zmeny?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Zrušiť" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Zrušiť všetko" @@ -4074,6 +4421,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -4139,6 +4494,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4147,6 +4506,10 @@ msgid "Add %s to project?" msgstr "Pridať %s do projektu?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4181,10 +4544,6 @@ msgid "File type" msgstr "Typ súboru" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Má procedúru Register" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Neplatný balíček" @@ -4212,23 +4571,10 @@ msgid "Show all" msgstr "Zobraziť všetko" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -#, fuzzy,badformat -#| msgid "The file %s%s%s%sis already in the package %s." -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Súbor %s%s%s%sis už je v balíčku %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Balíček %s je len na čítanie." -#: lazarusidestrconsts.lisaf2punitname -#, fuzzy -#| msgid "Unit Name: " -msgid "Unit name: " -msgstr "Meno jednotky:" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4257,10 +4603,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Všetky súbory" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4386,7 +4728,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Pri poslednom štarte nastala chyba pri otváraní %s!%s%sOtvoriť projekt znova?" #: lazarusidestrconsts.lisapplicationclassname @@ -4446,6 +4788,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4503,6 +4857,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures #, fuzzy #| msgid "Automatic features" @@ -4601,6 +4959,12 @@ msgid "Border space" msgstr "Medzera okraja" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Dole" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Spodný okraj. Táto hodnota je pridaná k základnému okraju a použitá pre medzeru pod prvkom." @@ -4713,6 +5077,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4975,6 +5343,7 @@ msgstr "nezvyčajné znaky" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Upozorňovanie" @@ -5198,7 +5567,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5435,6 +5804,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5463,6 +5836,10 @@ msgid "Choose directory" msgstr "Zvoľte adresár" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Vyberte adresár zdrojových kódov FPC" @@ -5621,8 +5998,8 @@ msgid "Click here to browse the file" msgstr "Pre prehľadávanie súboru kliknite tu" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5694,6 +6071,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6309,10 +6690,6 @@ msgid "Symbol" msgstr "Symbol" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Spustiť po" @@ -6511,6 +6888,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6940,20 +7321,186 @@ msgid "Unit Replacements" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Žiadne" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Prehliadač kódu" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +#| msgid "Code templates" +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Šablóny kódu" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Správy" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Editor kódu" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7238,6 +7785,10 @@ msgid "Custom options" msgstr "Vlastné voľby" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Vlastný program" @@ -7434,9 +7985,10 @@ msgstr "" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Ladiť" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7751,22 +8303,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Projekt Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Cieľový adresár" @@ -7994,6 +8538,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -8014,6 +8563,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Nezatvárať projekt" @@ -8141,6 +8694,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8166,14 +8723,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8276,6 +8841,10 @@ msgid "Working Directory:" msgstr "Pracovný adresár:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8489,7 +9058,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8592,6 +9161,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8636,10 +9209,6 @@ msgid "Exclude filter" msgstr "Vylučovací filter" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8660,10 +9229,6 @@ msgid "Execution stopped" msgstr "Vykonávanie zastavené" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programy" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8700,14 +9265,27 @@ msgid "Export" msgstr "Exportovať ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Exportovať zoznam" @@ -8716,6 +9294,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Výraz:" @@ -8792,6 +9378,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -9148,10 +9735,6 @@ msgid "fpcmake failed" msgstr "fpcmake zlyhal" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9348,6 +9931,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9380,6 +9967,10 @@ msgid "Has Help" msgstr "Má pomoc" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Hlavičkový komentár pre triedu" @@ -9432,6 +10023,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9520,17 +10112,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Pridať" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Otvoriť" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9666,6 +10254,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ignorovať" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Ignorovať všetko" @@ -9682,9 +10276,9 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ignorovať použitie TForm ako predka" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9700,11 +10294,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9801,6 +10397,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil #, fuzzy,badformat #| msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%s%sDelete all files in %s%s%s?" @@ -9812,6 +10412,10 @@ msgid "Insert" msgstr "Vložiť" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9951,6 +10555,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9967,6 +10575,14 @@ msgid "Invalid delete" msgstr "Neplatné mazanie" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Neplatný výraz:%s%s%s%s" @@ -10084,6 +10700,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10731,10 +11355,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Nastavenia plochy Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Adresár Lazarus" @@ -10747,24 +11367,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -#, fuzzy -#| msgid "Lazarus File" -msgid "Lazarus file" -msgstr "Súbor Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Formulár Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Lazarus IDE" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Include súbor Lazarus" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Identifikátor jazyka Lazarus (napr. en, de, sk)" @@ -10777,30 +11383,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [voľby] <meno-suboru-projektu>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Balíček Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Projekt Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Informačný súbor projektu Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Zdrojový kód Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Jednotka Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -11094,10 +11676,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "načítanie %s zlyhalo." @@ -11288,6 +11866,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11807,6 +12389,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11831,6 +12429,14 @@ msgid "Jump to Previous Error" msgstr "Skoč na predchádzajúcu chybu" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -11850,6 +12456,10 @@ msgid "New Component" msgstr "Nový komponent" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Nový formulár" @@ -12139,6 +12749,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -12340,13 +12954,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -#, fuzzy -#| msgid "IDE speed buttons" -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Zobraziť tlačítka IDE" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12676,6 +13283,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12778,6 +13393,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12996,6 +13615,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -13315,6 +13935,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Voľby" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -13434,6 +14060,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13445,10 +14072,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -13466,6 +14089,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Cesta" @@ -13544,8 +14171,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13605,7 +14232,9 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Upraviť Všeobecné voľby" #: lazarusidestrconsts.lispckeditfileproperties @@ -13616,10 +14245,6 @@ msgid "Install" msgstr "Inštalovať" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Inštalovať balíček do IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Neplatná maximálna verzia" @@ -14102,9 +14727,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Súbor %s%s%s%smomentálne nie je v ceste jednotiek balíčka.%s%sPridať %s%s%s do cesty jednotiek?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "Ďalšie funkcie sú vo vyskakujúcom menu" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -14141,19 +14766,27 @@ msgstr "Virtuálna jednotka" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -14192,8 +14825,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -14372,6 +15005,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage #, fuzzy #| msgid "Save Package?" @@ -14885,6 +15524,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -15022,7 +15665,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Maximálna verzia %s%s%s je neplatná.%sProsím použite formát hlavné.vedľajšie.uvoľnenie.vybudovanie%sNapríklad: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -15034,7 +15677,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Minimálna·verzia·%s%s%s·je·neplatná.%sProsím·použite·formát hlavné.vedľajšie.uvoľnenie.vybudovanie%sNapríklad: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15884,10 +16527,6 @@ msgid "Save current editor file" msgstr "uložiť aktuálny súbor editora" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15960,6 +16599,10 @@ msgid "Save " msgstr "Uložiť" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Mierka:" @@ -16129,6 +16772,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -16153,6 +16800,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -16313,14 +16964,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Prepáčte, tento typ zatiaľ nie je implementovaný" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Vzostupne" @@ -16535,10 +17186,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -17275,6 +17922,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Tento príkaz nemôže byť vytiahnutý.%sProsím vyberte nejaký kód pre vytiahnutie procedúry/metódy." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -17333,6 +17984,10 @@ msgid "Title (leave empty for default)" msgstr "Titulok (nechajte prázdne pre predvolený)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Funkcia: pripojiť oddeľovač cesty" @@ -17371,6 +18026,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Prepnúť zobrazenie mien súborov s absolútnou alebo relatívnou cestou" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -17395,6 +18066,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Hore" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Horné zarovnanie" @@ -17737,6 +18414,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Nemožno konvertovať textové dáta formulára súboru %s%s%s%s%sdo binárneho streamu. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Nemožno kopírovať súbor" @@ -18300,6 +18981,7 @@ msgstr "Premenná" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18538,14 +19220,14 @@ msgid "XML Error" msgstr "XML Chyba" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Súbory XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Chyba parsera XML v súbore %s%sChyba: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -18691,10 +19373,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Dátový súbor formulára (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18977,6 +19655,10 @@ msgid "Text marker commands" msgstr "Príkazy značkovania textu" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Príkazy menu Balíček" @@ -19453,11 +20135,11 @@ msgstr "Odhadni zle umiestnený $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -19571,6 +20253,18 @@ msgid "Invert Assignment" msgstr "Otočiť priradenie" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "šípka vľavo" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "šípka vpravo" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -19645,6 +20339,10 @@ msgid "Go to next editor" msgstr "Choď na nasledujúci editor" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -19699,6 +20397,30 @@ msgid "pause program" msgstr "prerušiť program" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Predchádzajúca záložka" @@ -19707,6 +20429,10 @@ msgid "Go to prior editor" msgstr "Choď na predchádzajúci editor" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -19814,11 +20540,11 @@ msgstr "" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -20281,10 +21007,22 @@ msgid "Move cursor word right" msgstr "Posunúť kurzor o slovo vpravo" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Uparviť klávesy príkazu" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -20317,6 +21055,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.tr.po lazarus-1.6+dfsg/languages/lazaruside.tr.po --- lazarus-1.4.4+dfsg/languages/lazaruside.tr.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.tr.po 2016-01-05 13:41:02.000000000 +0000 @@ -74,6 +74,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -157,6 +161,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -378,6 +390,10 @@ msgid "Lowercase, first letter up" msgstr "" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Atama operatörü ekle :=" @@ -541,10 +557,6 @@ msgid "Adjust top line due to comment in front" msgstr "Yorum önde olduğundan en üstteki satırı ayarla" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Tüm dosyalar" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "Alfabetik" @@ -588,7 +600,7 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "" #: lazarusidestrconsts.dlgautodel @@ -625,6 +637,16 @@ msgid "Auto rename file lowercase" msgstr "Dosyayı otomatik olarak küçük harfe çevir" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Kullanılabilir formlar:" @@ -704,6 +726,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive #, fuzzy #| msgid "&Case Sensitive" @@ -1045,11 +1071,6 @@ msgid "Config files" msgstr "" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1183,8 +1204,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1207,18 +1228,10 @@ msgid "Delete template " msgstr "" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Masaüstü" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1227,6 +1240,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "" @@ -1309,6 +1334,7 @@ msgstr "" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "" @@ -1538,6 +1564,141 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Tüm dosyalar" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Delphi projesi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Lazarus Masaüstü Ayarları" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +#| msgid "Lazarus File" +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Lazarus Dosyası" + +#: lazarusidestrconsts.dlgfilterlazarusform +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusproject +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Programlar" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML dosyaları" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "" @@ -1701,6 +1862,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "" @@ -1739,11 +1904,6 @@ msgid "&From cursor" msgstr "İmleçten itibaren" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "" @@ -1760,6 +1920,10 @@ msgid "Grabber color" msgstr "" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "" @@ -1941,8 +2105,10 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables @@ -2051,11 +2217,15 @@ msgstr "" #: lazarusidestrconsts.dlglevel2opt -msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "" #: lazarusidestrconsts.dlglevel3opt -msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" +msgstr "" + +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" msgstr "" #: lazarusidestrconsts.dlglevelnoneopt @@ -2074,10 +2244,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "" @@ -2099,6 +2265,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "" @@ -2255,6 +2425,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2460,6 +2631,10 @@ msgid "Gutter" msgstr "" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2512,6 +2687,95 @@ msgid "Messages" msgstr "" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "" @@ -2548,6 +2812,10 @@ msgid "Naming" msgstr "Adlandırma" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "" @@ -2586,11 +2854,6 @@ msgid "Miscellaneous" msgstr "" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "" @@ -2619,6 +2882,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "" @@ -2803,7 +3072,7 @@ msgstr "" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2818,6 +3087,10 @@ msgid "Snap to grid" msgstr "" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "" @@ -2828,6 +3101,10 @@ msgid "Regular e&xpressions" msgstr "Düzenli İfadeler" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "" @@ -2871,6 +3148,18 @@ msgid "Rubberband Selection" msgstr "" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "" @@ -2900,8 +3189,8 @@ msgid "Run Parameters" msgstr "" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor @@ -2977,6 +3266,10 @@ msgid "&Selected text" msgstr "&Seçilmiş Metin" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "" @@ -2989,6 +3282,26 @@ msgid "Set property Variable" msgstr "" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3112,6 +3425,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3215,6 +3532,11 @@ msgid "&Text to find" msgstr "Aranacak Me&tin" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3594,6 +3916,10 @@ msgid "File not unit" msgstr "" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "" @@ -3641,6 +3967,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "" +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "" @@ -3769,6 +4099,12 @@ msgid "Abandon changes?" msgstr "" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Durdur" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Tümünü durdur" @@ -3883,6 +4219,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -3948,6 +4292,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -3956,6 +4304,10 @@ msgid "Add %s to project?" msgstr "%s projeye eklensin mi?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -3986,10 +4338,6 @@ msgid "File type" msgstr "" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "" @@ -4011,19 +4359,10 @@ msgid "Show all" msgstr "" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "" - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "" -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "" - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4052,10 +4391,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Tüm Dosyalar" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4179,7 +4514,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "Son açılışta %s yüklenirken bir hata oluştı! %s%sBu proje tekrar yüklensin mi?" #: lazarusidestrconsts.lisapplicationclassname @@ -4239,6 +4574,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4296,6 +4643,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures #, fuzzy #| msgid "Automatic features" @@ -4392,6 +4743,11 @@ msgid "Border space" msgstr "Çerçeve Alanı" +#: lazarusidestrconsts.lisbottom +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4504,6 +4860,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4754,6 +5114,7 @@ msgstr "" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "" @@ -4971,7 +5332,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5206,6 +5567,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5234,6 +5599,10 @@ msgid "Choose directory" msgstr "Dizin seç" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "FPC kaynak kod dizini seç" @@ -5390,8 +5759,8 @@ msgid "Click here to browse the file" msgstr "Dosyayı araştırmak için buraya tıklayın" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5463,6 +5832,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6061,10 +6434,6 @@ msgid "Symbol" msgstr "" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "" @@ -6259,6 +6628,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6668,36 +7041,196 @@ msgid "Top offset" msgstr "" -#: lazarusidestrconsts.lisconvtypereplacements -msgid "Type Replacements" +#: lazarusidestrconsts.lisconvtypereplacements +msgid "Type Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvtypereplhint +msgid "Unknown types in form file (DFM/LFM)" +msgstr "" + +#: lazarusidestrconsts.lisconvtypestoreplace +msgid "Types to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplacements +msgid "Unit Replacements" +msgstr "" + +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodetemplates +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" msgstr "" -#: lazarusidestrconsts.lisconvtypereplhint -msgid "Unknown types in form file (DFM/LFM)" +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" msgstr "" -#: lazarusidestrconsts.lisconvtypestoreplace -msgid "Types to replace" +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" msgstr "" -#: lazarusidestrconsts.lisconvunitreplacements -msgid "Unit Replacements" +#: lazarusidestrconsts.liscoolbarsourceeditor +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -6978,6 +7511,10 @@ msgid "Custom options" msgstr "" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "" @@ -7485,22 +8022,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphi projesi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Hedef dizin" @@ -7724,6 +8253,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7742,6 +8276,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Projeyi kapatma" @@ -7869,6 +8407,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -7894,14 +8436,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8004,6 +8554,10 @@ msgid "Working Directory:" msgstr "" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8213,7 +8767,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8314,6 +8868,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8356,10 +8914,6 @@ msgid "Exclude filter" msgstr "Hariç Süzgeci" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8380,10 +8934,6 @@ msgid "Execution stopped" msgstr "" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Programlar" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8418,14 +8968,27 @@ msgid "Export" msgstr "" +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "" @@ -8434,6 +8997,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "" @@ -8508,6 +9079,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8859,10 +9431,6 @@ msgid "fpcmake failed" msgstr "" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9059,6 +9627,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9091,6 +9663,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "" @@ -9141,6 +9717,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9229,17 +9806,13 @@ msgid "ID" msgstr "" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Ekle" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Aç" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9375,6 +9948,11 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Tümünü yoksay" @@ -9391,8 +9969,8 @@ msgid "Ignore this exception type" msgstr "" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage @@ -9409,11 +9987,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9510,6 +10090,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9519,6 +10103,10 @@ msgid "Insert" msgstr "" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9658,6 +10246,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9674,6 +10266,14 @@ msgid "Invalid delete" msgstr "" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "" @@ -9791,6 +10391,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10416,10 +11024,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazarus Masaüstü Ayarları" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazarus dizini" @@ -10432,24 +11036,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -#, fuzzy -#| msgid "Lazarus File" -msgid "Lazarus file" -msgstr "Lazarus Dosyası" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus dil tanımlayıcısı(ID) (Ör: tr, de, br, fi)" @@ -10462,30 +11052,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [seçenekler] <proje-dosyası>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarus Proje Bilgi Dosyası" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10775,10 +11341,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "" @@ -10961,6 +11523,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11468,6 +12034,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11492,6 +12074,14 @@ msgid "Jump to Previous Error" msgstr "Önceki hataya atla" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -11511,6 +12101,10 @@ msgid "New Component" msgstr "" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Yeni Pencere" @@ -11796,6 +12390,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -11996,13 +12594,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -#, fuzzy -#| msgid "IDE speed buttons" -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "IDE hız düğmelerini görüntüle" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12330,6 +12921,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12428,6 +13027,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12644,6 +13247,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12959,6 +13563,11 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -13076,6 +13685,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13087,10 +13697,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "" @@ -13108,6 +13714,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "" @@ -13182,8 +13792,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13241,7 +13851,7 @@ msgstr "" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +msgid "Edit general options" msgstr "" #: lazarusidestrconsts.lispckeditfileproperties @@ -13252,10 +13862,6 @@ msgid "Install" msgstr "" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "" @@ -13704,8 +14310,8 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary @@ -13743,19 +14349,27 @@ msgstr "" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13794,8 +14408,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -13965,6 +14579,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "" @@ -14404,6 +15024,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14533,7 +15157,7 @@ #: lazarusidestrconsts.lisprojaddthemaximumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14543,7 +15167,7 @@ #: lazarusidestrconsts.lisprojaddtheminimumversionisinvalid msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15363,10 +15987,6 @@ msgid "Save current editor file" msgstr "Şu anki düzenleyici dosyasını kaydet" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15439,6 +16059,10 @@ msgid "Save " msgstr "Kaydet" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "" @@ -15608,6 +16232,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -15632,6 +16260,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -15791,14 +16423,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Üzgünüz, bu tür henüz gerçeklenmedi" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "Artarak" @@ -16011,10 +16643,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -16702,6 +17330,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "" +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -16760,6 +17392,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "" @@ -16796,6 +17432,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16820,6 +17472,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "" @@ -17154,6 +17811,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "%s%s%s%s%s dosyasındaki metin biçimindeki veri, ikili akış biçimine dönüştürülemedi. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Dosya kopyalanamıyor" @@ -17703,6 +18364,7 @@ msgstr "" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -17937,14 +18599,14 @@ msgid "XML Error" msgstr "" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML dosyaları" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -18088,10 +18750,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18372,6 +19030,10 @@ msgid "Text marker commands" msgstr "" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "" @@ -18816,11 +19478,11 @@ msgstr "" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -18932,6 +19594,16 @@ msgid "Invert Assignment" msgstr "" +#: lazarusidestrconsts.srkmeckeymapleft +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "" + +#: lazarusidestrconsts.srkmeckeymapright +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -19004,6 +19676,10 @@ msgid "Go to next editor" msgstr "" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -19056,6 +19732,30 @@ msgid "pause program" msgstr "" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "" @@ -19064,6 +19764,10 @@ msgid "Go to prior editor" msgstr "" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -19163,11 +19867,11 @@ msgstr "" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -19622,10 +20326,22 @@ msgid "Move cursor word right" msgstr "" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -19658,6 +20374,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.uk.po lazarus-1.6+dfsg/languages/lazaruside.uk.po --- lazarus-1.4.4+dfsg/languages/lazaruside.uk.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.uk.po 2016-01-05 13:41:02.000000000 +0000 @@ -75,6 +75,10 @@ msgid "History forward" msgstr "Преред по історії" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -162,6 +166,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "Розширене, Дії - при відпуск. кнопки Миші. Виділення - при натиск. і переміщ." +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -383,6 +395,10 @@ msgid "Lowercase, first letter up" msgstr "Нижній регістр, з великої букви" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "Додавати оператор присвоєння :=" @@ -546,10 +562,6 @@ msgid "Adjust top line due to comment in front" msgstr "Вирівняти верхній рядок за рахунок коментаря попереду" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "Всі файли" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "За алфавітом" @@ -591,7 +603,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "При створенні нових форм додати їх до автостворюваних" #: lazarusidestrconsts.dlgautodel @@ -630,6 +644,16 @@ msgid "Auto rename file lowercase" msgstr "Автоперейменування в нижній регістр" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "Доступні форми:" @@ -707,6 +731,10 @@ msgid "Matching bracket pairs" msgstr "Підбір пар дужок" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive msgctxt "lazarusidestrconsts.dlgcasesensitive" msgid "&Case sensitive" @@ -1056,11 +1084,6 @@ msgid "Config files" msgstr "Файли налаштувань" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "Інше" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1196,8 +1219,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "Розширення користувача (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1220,18 +1243,10 @@ msgid "Delete template " msgstr "Видалити шаблон " -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "Робочий Стіл" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "Кнопки - " -#: lazarusidestrconsts.dlgdesktopfiles -msgid "Desktop Files" -msgstr "Файли робочого столу" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "Підказки" @@ -1240,6 +1255,18 @@ msgid "Menus - " msgstr "Меню - " +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "Напрямок" @@ -1322,6 +1349,7 @@ msgstr "Підтека" #: lazarusidestrconsts.dlgedcodetempl +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "Кодові Шаблони" @@ -1553,6 +1581,153 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "Всі файли" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "Пакунок Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Проект Delphi" + +#: lazarusidestrconsts.dlgfilterdelphiunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "Модуль Delphi" + +#: lazarusidestrconsts.dlgfilterexecutable +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "Виконуваний" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "Файл повідомлень FPC" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Налаштування стільниці Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "Файлові типи Редактора" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Файл Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Форма Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Lazarus-файли, що включаються" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "Інші файли Lazarus" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Пакунок Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Проект Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Текст проекту Lazarus" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Модуль Lazarus" + +#: lazarusidestrconsts.dlgfilterpascalfile +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "Файл Паскаля" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "Програми" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "Файли XML" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "Знайти текст над курсором" @@ -1716,6 +1891,10 @@ msgid "Processing Instruction" msgstr "Інструкція Обробки" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "Колір переднього плану" @@ -1752,11 +1931,6 @@ msgid "&From cursor" msgstr "&Від курсора" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "Параметри" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "Задіяти позицію" @@ -1773,6 +1947,10 @@ msgid "Grabber color" msgstr "Колір виділення" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "Колір сітки" @@ -1954,9 +2132,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "Ігнорувати" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2071,16 +2251,20 @@ #: lazarusidestrconsts.dlglevel2opt #, fuzzy -#| msgid "Level 2 (Level 1 + quick optimizations)" -msgid "2 (quick optimizations)" +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "Рівень 2 (Рівень 1 + швидкі оптимізації)" #: lazarusidestrconsts.dlglevel3opt #, fuzzy -#| msgid "Level 3 (Level 2 + slow optimizations)" -msgid "3 (slow optimizations)" +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "Рівень 3 (Рівень 2 + повільні оптимізації)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt #, fuzzy #| msgid "Level 0 (no extra optimizations)" @@ -2099,10 +2283,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "Вивести номери рядків в помилках часу виконання" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "Завант. налашт. роб. столу з файлу" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "Головне меню" @@ -2124,6 +2304,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "Додатковий відступ зліва на сторінці для палітурки" @@ -2280,6 +2464,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "Одинарний" @@ -2485,6 +2670,10 @@ msgid "Gutter" msgstr "Канавка" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "Згорнути Дерево" @@ -2537,6 +2726,99 @@ msgid "Messages" msgstr "Повідомлення" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "Налагодження" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "Помилка" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "Підказка" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "Попередження" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "Множинний Вибір" @@ -2573,6 +2855,10 @@ msgid "Naming" msgstr "Надання назви" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming msgid "No automatic renaming" msgstr "Без автоперейменування" @@ -2611,11 +2897,6 @@ msgid "Miscellaneous" msgstr "Різне" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "Параметри" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "Параметри Швидкості" @@ -2646,6 +2927,12 @@ msgid "Overwrite block" msgstr "Переписати блок" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "Довідки до палітри компонентів" @@ -2836,7 +3123,9 @@ msgstr "Назва властивості" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "При старті відкрити останній проект" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2851,6 +3140,10 @@ msgid "Snap to grid" msgstr "Вирівнювати по сітці" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "Посилання" @@ -2859,6 +3152,10 @@ msgid "Regular e&xpressions" msgstr "&Регулярні вирази" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "Замінити &Всі" @@ -2900,6 +3197,18 @@ msgid "Rubberband Selection" msgstr "Вибір Гумки" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "Дисплей (не для win32, напр., 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -2929,9 +3238,9 @@ msgid "Run Parameters" msgstr "Параметри Виконання" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "Збер. робочий стіл у файл" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3002,6 +3311,10 @@ msgid "&Selected text" msgstr "&Виділений текст" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "Встановити всі елементи за замовчуванням" @@ -3014,6 +3327,26 @@ msgid "Set property Variable" msgstr "Встановити змінну властивості" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "Показати всі модулі" @@ -3137,6 +3470,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3238,6 +3575,11 @@ msgid "&Text to find" msgstr "&Текст для пошуку" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "Підказка Поточного Класу/Проц" @@ -3619,6 +3961,10 @@ msgid "File not unit" msgstr "Файл не є модулем" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "Неправильний тип предка" @@ -3668,6 +4014,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "Не знайдено пакунку для залежності %s%s%s.%sВиберіть існуючий пакунок." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "Задовга назва сторінки" @@ -3832,6 +4182,12 @@ msgid "Abandon changes?" msgstr "Скасувати зміни?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "Перервати" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "Прервати все" @@ -3944,6 +4300,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "Додати Файли в Теку" @@ -4009,6 +4373,10 @@ msgid "&Address Breakpoint ..." msgstr "&Точка зупинки за Адресою ..." +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4017,6 +4385,10 @@ msgid "Add %s to project?" msgstr "Додати %s до проекту?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4045,10 +4417,6 @@ msgid "File type" msgstr "Тип файлу" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "Має процедуру Register" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "Неправильний пакунок" @@ -4074,21 +4442,10 @@ msgid "Show all" msgstr "Показувати всі" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -#, fuzzy,badformat -#| msgid "The file %s%s%s%sis already in the package %s." -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "Файл %s%s%s%sвже в пакунку %s." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "Пакунок %s тільки для читання." -#: lazarusidestrconsts.lisaf2punitname -msgid "Unit name: " -msgstr "Назва модуля: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4115,10 +4472,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "Всі файли" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "Всі успадковані параметри" @@ -4243,8 +4596,8 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat -#| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +#| msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "При останньому запуску виникла помилка при завантаженні %s!%s%sЗавантажити цей проект знову?" #: lazarusidestrconsts.lisapplicationclassname @@ -4306,6 +4659,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "Автозавершення: викл" @@ -4363,6 +4728,10 @@ msgid "do not add character" msgstr "не додавати символ" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures msgid "Completion and Hints" msgstr "Завершення і Підказки" @@ -4451,6 +4820,12 @@ msgid "Border space" msgstr "Простір Межі" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "Нижній" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "Нижній бордюр. Ця величина додається до базового бордюру і використовується для відступу під контролем." @@ -4561,6 +4936,10 @@ msgid "Building Lazarus failed" msgstr "Побудова Lazarus не вдалась" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "Відмінності між режимами побудови" @@ -4821,6 +5200,7 @@ msgstr "незвичайні символи" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "Попередження" @@ -5038,7 +5418,7 @@ msgstr "Невірні відступи" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "Стався виняток під час видалення%s\"%s:%s\"%s%s" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5278,6 +5658,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "Виберіть файл Паскаля для прикладу відступів" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5306,6 +5690,10 @@ msgid "Choose directory" msgstr "Виберіть теку" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "Виберіть теку коду FPC" @@ -5464,9 +5852,9 @@ msgid "Click here to browse the file" msgstr "Клацніть тут для вибору файлу" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" -msgstr "Клацніть для перегляду можливих варіантів використання" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" +msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage msgid "Click to Select Palette Page" @@ -5535,6 +5923,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6135,10 +6527,6 @@ msgid "Symbol" msgstr "Символ" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "Виконати після" @@ -6337,6 +6725,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "Налаштувати %sПобудову Lazarus%s" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "Налаштувати Lazarus IDE" @@ -6776,12 +7168,180 @@ msgid "Units to replace" msgstr "Замінювані модулі" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" -msgstr "Невідомі властивості" +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "Невідомі властивості" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "Відсутнє" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "Одинарний" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "Провідник Коду" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "Кодові Шаблони" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "Подвійний" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "Кнопка" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "Повідомлення" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "Редактор Коду" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" +msgstr "" + +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" +msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7076,6 +7636,10 @@ msgid "Custom options" msgstr "Спеціальні параметри" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "Спеціальна програма" @@ -7272,9 +7836,10 @@ msgstr "Вимкнення/Ввімкнення оновлень всього вікна" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "Налагодження" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7593,22 +8158,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "Пакунок Delphi" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Проект Delphi" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "Модуль Delphi" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "Тека призначення" @@ -7836,6 +8393,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -7856,6 +8418,10 @@ msgid "Do not change" msgstr "Не змінювати" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "Не закривати проект" @@ -7985,6 +8551,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8010,14 +8580,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "Файлові типи Редактора" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "Завантажити схему" @@ -8120,6 +8698,10 @@ msgid "Working Directory:" msgstr "Робоча тека:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8335,7 +8917,9 @@ msgstr "Помилка в \"вихідній теці модуля\":" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +#, fuzzy +#| msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "ПОМИЛКА: Невірний режим побудови \"%s\"" #: lazarusidestrconsts.liserrorloadingfile @@ -8440,6 +9024,10 @@ msgid "Save Events to File" msgstr "Зберегти Події в Файл" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "Додати Коментар ..." @@ -8480,10 +9068,6 @@ msgid "Exclude filter" msgstr "Фільтр для виключення" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "Виконуваний" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8504,10 +9088,6 @@ msgid "Execution stopped" msgstr "Виконання завершене" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "Програми" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8544,14 +9124,27 @@ msgid "Export" msgstr "Експорт ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "Експортувати як HTML" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "Список експорту" @@ -8560,6 +9153,14 @@ msgid "Export package list (*.xml)" msgstr "Експортувати список пакунків (*.xml)" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "Вираз:" @@ -8634,6 +9235,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -8988,10 +9590,6 @@ msgid "fpcmake failed" msgstr "fpcmake провалився" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "Файл повідомлень FPC" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9187,6 +9785,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "%sЄ ще %d порожніх груп, видалити всі?" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "Назва групи не може бути порожня. Очистити груп(и) точок зупинки?" @@ -9219,6 +9821,10 @@ msgid "Has Help" msgstr "Має Довідку" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "Коментар заголовка для класу" @@ -9269,6 +9875,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "Підказка" @@ -9357,17 +9964,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "Додати" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "Відкрити" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9505,6 +10108,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "Якщо ви хочете використовувати дві різні версії Lazarus ви повинні запустити інший Lazarus з ком. параметром primary-config-path чи pcp.%s%sНаприклад:%s" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "Ігнорувати" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "Ігнорувати все" @@ -9521,9 +10130,9 @@ msgid "Ignore this exception type" msgstr "Ігнорувати цей тип винятків" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "Ігнорувати, використовувати TForm як предка" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9539,11 +10148,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9640,6 +10251,10 @@ msgid "Inherited project component" msgstr "Успадкований компонент проекту" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil #, fuzzy,badformat #| msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%s%sDelete all files in %s%s%s?" @@ -9651,6 +10266,10 @@ msgid "Insert" msgstr "Вставити" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "Вставити дату" @@ -9790,6 +10409,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "Замість компілювання пакунку створити простий Makefile." +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "Інтерактивний" @@ -9806,6 +10429,14 @@ msgid "Invalid delete" msgstr "Неприпустиме видалення" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "Неприпустимий вираз:%s%s%s%s" @@ -9925,6 +10556,14 @@ msgid "Jump History" msgstr "Історія Переходів" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10530,10 +11169,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Налаштування стільниці Lazarus" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Тека Lazarus" @@ -10546,22 +11181,10 @@ msgid "Lazarus IDE v%s" msgstr "Lazarus IDE v%s" -#: lazarusidestrconsts.lislazarusfile -msgid "Lazarus file" -msgstr "Файл Lazarus" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Форма Lazarus" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "Графічна оболонка Lazarus" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarus-файли, що включаються" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Мова графічної оболонки Lazarus (напр. en, uk, de, br, fi)" @@ -10574,30 +11197,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [параметри] <назва файлу проекту>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "Інші файли Lazarus" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Пакунок Lazarus" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Проект Lazarus" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Файл Info проекту Lazarus" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Текст проекту Lazarus" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Модуль Lazarus" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -10885,10 +11484,6 @@ msgid "list of all case values" msgstr "список всіх значень case" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "Завантажено успішно" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "Завантаження %s провалилось." @@ -11075,6 +11670,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11502,6 +12101,22 @@ msgid "Jump to Implementation" msgstr "Перейти до реалізації" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark msgid "Jump to Next Bookmark" msgstr "Перейти до наст. Закладки" @@ -11518,6 +12133,14 @@ msgid "Jump to Previous Error" msgstr "Перейти до попер. помилки" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection msgid "Lowercase Selection" msgstr "Вибір в нижньому регістрі" @@ -11535,6 +12158,10 @@ msgid "New Component" msgstr "Новий компонент" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "Нова форма" @@ -11763,6 +12390,10 @@ msgid "S&how Execution Point" msgstr "По&казати Точку Виконання" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection msgid "Sort Selection ..." msgstr "Сортування вибраного ..." @@ -11941,11 +12572,6 @@ msgid "History" msgstr "Історія" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "Швидкі клавіші IDE" - #: lazarusidestrconsts.lismenuviewjumphistory msgctxt "lazarusidestrconsts.lismenuviewjumphistory" msgid "Jump History" @@ -12265,6 +12891,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12363,6 +12997,10 @@ msgid "(ms)" msgstr "(мс)" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -12581,6 +13219,7 @@ msgstr "Не є допустимим ідентифікатором Паскаля" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -12892,6 +13531,12 @@ msgid "Open XML" msgstr "Відкритий XML" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "Параметри" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "Опції змінені, перезбираю начисто з -B" @@ -13009,6 +13654,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13020,10 +13666,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "Файл Паскаля" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "Кількість Проходів" @@ -13041,6 +13683,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "Шлях" @@ -13115,8 +13761,8 @@ msgid "Disable I18N of lfm" msgstr "Вимкнути I18N в lfm" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13174,7 +13820,9 @@ msgstr "Властивості Залежності" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "Редагувати Загальні Параметри" #: lazarusidestrconsts.lispckeditfileproperties @@ -13185,10 +13833,6 @@ msgid "Install" msgstr "Встановити" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "Встановити пакунки IDE" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "Неправильна максимальна версія" @@ -13651,9 +14295,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "Файл %s%s%s%sзараз не знаходиться в списку шляхів модулів пакунку.%s%sДодати %s%s%s в шлях?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "У спливаючому меню більше функцій" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -13690,19 +14334,35 @@ msgstr "Віртуальний модуль" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +#, fuzzy +#| msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Тека пакунку. Параметром є ID пакунку" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +#, fuzzy +#| msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Шлях пошуку заголовних файлів пакунку. Параметром є ID пакунку" +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +#, fuzzy +#| msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Шлях пошуку джерел пакунку. Параметром є ID пакунку" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +#, fuzzy +#| msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "Шлях пошуку модуля пакунку. Параметром є ID пакунку" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -13741,9 +14401,9 @@ msgid "Circular dependencies found" msgstr "Знайдені кругові залежності" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" -msgstr "Компілювання пакунку %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" +msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed msgid "Delete failed" @@ -13921,6 +14581,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "Один або кілька необхідних пакетів не були знайдені. Дивіться графік пакетів." +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage msgid "Save package?" msgstr "Зберегти пакунок?" @@ -14436,6 +15102,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -14571,7 +15241,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Максимальна версія %s%s%s некоректна.%sВикористовуйте формат головний.вторинний.реліз.збірка%sНаприклад: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -14583,7 +15253,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "Мінімальна версія %s%s%s є некоректною.%sВикористовуйте формат головний.вторинний.реліз.збірка%sНаприклад: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15405,10 +16075,6 @@ msgid "Save current editor file" msgstr "Зберегти поточний файл редактора" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "Збережено успішно" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15483,6 +16149,10 @@ msgid "Save " msgstr "Зберегти " +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "Масштабний фактор:" @@ -15654,6 +16324,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "Показати" @@ -15678,6 +16352,10 @@ msgid "Show empty units/packages" msgstr "Показати порожні модулі/пакунки" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor #, fuzzy #| msgid "Show Glyphs for:" @@ -15839,14 +16517,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "Вибачте, цей тип ще не реалізовано" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "За зростанням" @@ -16059,10 +16737,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "Запропонувати типове ім'я нового файлу в нижньому регістрі" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "Підозрілий шлях включення" @@ -16820,6 +17494,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "Цей вираз не може бути витягнутий.%sВиберіть будь-який код, щоб витягти нову процедуру/метод." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "Це створить кругову залежність." @@ -16878,6 +17556,10 @@ msgid "Title (leave empty for default)" msgstr "Назва (залишити порожнім для типової)" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "Функція: додати розподілювач шляхів" @@ -16916,6 +17598,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "Перемкнути показ імен файлів з повним або відносним шляхом" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -16940,6 +17638,12 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +#, fuzzy +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "Верхній" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "Фіксація по верху" @@ -17280,6 +17984,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "Не можу перетворити текстові дані форми файлу %s%s%s%s%sна двійковий потік. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "Не можу скопіювати файл" @@ -17851,6 +18559,7 @@ msgstr "Змінна" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18089,14 +18798,14 @@ msgid "XML Error" msgstr "Помилка XML" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "Файли XML" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "Помилка розбору XML в файлі %s%sПомилка: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "Ви можете вимкнути це для окремих форм в редакторі пакетів" @@ -18240,10 +18949,6 @@ msgid "Filter the lines in list with a string" msgstr "Фільрувати рядки в списку з текстом" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "Файл форми (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "Знайдено, але тут не вказано: " @@ -18524,6 +19229,10 @@ msgid "Text marker commands" msgstr "Команди маркера тексту" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "Команди Меню Пакунок" @@ -18968,11 +19677,15 @@ msgstr "Передбачити зміщене $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +#, fuzzy +#| msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "Пересунути курсор на півслова вліво" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +#, fuzzy +#| msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "Пересунути курсор на півслова вправо" #: lazarusidestrconsts.srkmecimestr @@ -19084,6 +19797,18 @@ msgid "Invert Assignment" msgstr "Інвертувати Присвоєння" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "Ліворуч" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "Справа" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "Змістити курсор вліво" @@ -19156,6 +19881,10 @@ msgid "Go to next editor" msgstr "Перейти до наступного редактора" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "Йти до наступного редактора з тим же Джерелом" @@ -19208,6 +19937,30 @@ msgid "pause program" msgstr "призупинити програму" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "Попередня закладка" @@ -19216,6 +19969,10 @@ msgid "Go to prior editor" msgstr "Перейти до попереднього редактора" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "Йти до попереднього редактора з тим же Джерелом" @@ -19315,11 +20072,15 @@ msgstr "Виділити перехід за коорд." #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +#, fuzzy +#| msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "Вибрати півслова вліво" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +#, fuzzy +#| msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "Вибрати півслова вправо" #: lazarusidestrconsts.srkmecselleft @@ -19772,10 +20533,22 @@ msgid "Move cursor word right" msgstr "Пересунути курсор на слово вправо" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "Змінити кнопки команди" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -19808,6 +20581,26 @@ msgid "Hide comments in selection" msgstr "Сховати коментарі в виділенні" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/languages/lazaruside.zh_CN.po lazarus-1.6+dfsg/languages/lazaruside.zh_CN.po --- lazarus-1.4.4+dfsg/languages/lazaruside.zh_CN.po 2015-06-11 00:13:46.000000000 +0000 +++ lazarus-1.6+dfsg/languages/lazaruside.zh_CN.po 2016-01-05 13:41:02.000000000 +0000 @@ -77,6 +77,10 @@ msgid "History forward" msgstr "" +#: lazarusidestrconsts.dlfmousesimplebuttonmulticarettoggle +msgid "Toggle extra Caret" +msgstr "" + #: lazarusidestrconsts.dlfmousesimplebuttonnothing msgctxt "lazarusidestrconsts.dlfmousesimplebuttonnothing" msgid "Nothing/Default" @@ -160,6 +164,14 @@ msgid "Extended, Actions (breakpoint, fold) on mouse up. Selection on mouse down and move" msgstr "" +#: lazarusidestrconsts.dlfmousesimplegutterleftupright +msgid "Extended, Actions, right gutter half only" +msgstr "" + +#: lazarusidestrconsts.dlfmousesimplegutterlines +msgid "Use line numbers to select lines" +msgstr "" + #: lazarusidestrconsts.dlfmousesimpleguttersect msgctxt "lazarusidestrconsts.dlfmousesimpleguttersect" msgid "Gutter" @@ -381,6 +393,10 @@ msgid "Lowercase, first letter up" msgstr "转换为小写, 首字母大写" +#: lazarusidestrconsts.dlgactivedesktop +msgid "active" +msgstr "" + #: lazarusidestrconsts.dlgaddassignmentoperator msgid "Add assignment operator :=" msgstr "增加分配操作符 :=" @@ -544,10 +560,6 @@ msgid "Adjust top line due to comment in front" msgstr "调整行高以适应前面的注释" -#: lazarusidestrconsts.dlgallfiles -msgid "All files" -msgstr "所有文件" - #: lazarusidestrconsts.dlgalphabetically msgid "Alphabetically" msgstr "按字母顺序排列" @@ -593,7 +605,9 @@ msgstr "" #: lazarusidestrconsts.dlgautocreatenewforms -msgid "When creating new forms, add them to auto-created forms" +#, fuzzy +#| msgid "When creating new forms, add them to auto-created forms" +msgid "Auto-create new forms" msgstr "创建一个新的窗体时,添加到自动创建的窗体" #: lazarusidestrconsts.dlgautodel @@ -630,6 +644,16 @@ msgid "Auto rename file lowercase" msgstr "自动把文件名重命名为小写" +#: lazarusidestrconsts.dlgautosaveactivedesktop +msgid "Auto save active desktop" +msgstr "" + +#: lazarusidestrconsts.dlgautosaveactivedesktophint +msgid "" +"Save active desktop on IDE close\n" +"Save debug desktop on IDE close and debug end\n" +msgstr "" + #: lazarusidestrconsts.dlgavailableforms msgid "Available forms:" msgstr "可用窗体:" @@ -709,6 +733,10 @@ msgid "Matching bracket pairs" msgstr "" +#: lazarusidestrconsts.dlgcannotusedockedundockeddesktop +msgid "You cannot use docked desktop in undocked environment and vice versa." +msgstr "" + #: lazarusidestrconsts.dlgcasesensitive #, fuzzy #| msgid "&Case Sensitive" @@ -1076,11 +1104,6 @@ msgid "Config files" msgstr "配置文件:" -#: lazarusidestrconsts.dlgcoother -msgctxt "lazarusidestrconsts.dlgcoother" -msgid "Other" -msgstr "其余的" - #: lazarusidestrconsts.dlgcootherdebugginginfo msgid "Other debugging info" msgstr "" @@ -1230,8 +1253,8 @@ msgid "User defined extension (.pp.xxx)" msgstr "用户定义后缀 (.pp.xxx)" -#: lazarusidestrconsts.dlgdcifiledci -msgid "DCI file (*.dci)" +#: lazarusidestrconsts.dlgdebugdesktop +msgid "debug" msgstr "" #: lazarusidestrconsts.dlgdebugoptionspatheditordlgcaption @@ -1254,20 +1277,10 @@ msgid "Delete template " msgstr "删除模板" -#: lazarusidestrconsts.dlgdesktop -msgid "Desktop" -msgstr "桌面" - #: lazarusidestrconsts.dlgdesktopbuttons msgid "Buttons - " msgstr "" -#: lazarusidestrconsts.dlgdesktopfiles -#, fuzzy -#| msgid "Desktop files" -msgid "Desktop Files" -msgstr "桌面配置文件" - #: lazarusidestrconsts.dlgdesktophints msgid "Hints" msgstr "" @@ -1276,6 +1289,18 @@ msgid "Menus - " msgstr "" +#: lazarusidestrconsts.dlgdesktopname +msgid "Desktop name" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsexported +msgid "%d desktop(s) successfully exported to \"%s\"" +msgstr "" + +#: lazarusidestrconsts.dlgdesktopsimported +msgid "%d desktop(s) successfully imported from \"%s\"" +msgstr "" + #: lazarusidestrconsts.dlgdirection msgid "Direction" msgstr "方向" @@ -1360,6 +1385,7 @@ #: lazarusidestrconsts.dlgedcodetempl #, fuzzy #| msgid "Code templates" +msgctxt "lazarusidestrconsts.dlgedcodetempl" msgid "Code Templates" msgstr "代码模板" @@ -1595,6 +1621,147 @@ msgid "%s files" msgstr "" +#: lazarusidestrconsts.dlgfilterall +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterall" +msgid "All files" +msgstr "所有文件" + +#: lazarusidestrconsts.dlgfiltercodetoolstemplatefile +msgctxt "lazarusidestrconsts.dlgfiltercodetoolstemplatefile" +msgid "CodeTools template file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdcifile +msgid "DCI file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiform +msgid "Delphi form" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphipackage +msgctxt "lazarusidestrconsts.dlgfilterdelphipackage" +msgid "Delphi package" +msgstr "" + +#: lazarusidestrconsts.dlgfilterdelphiproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterdelphiproject" +msgid "Delphi project" +msgstr "Delphi 工程" + +#: lazarusidestrconsts.dlgfilterdelphiunit +msgctxt "lazarusidestrconsts.dlgfilterdelphiunit" +msgid "Delphi unit" +msgstr "" + +#: lazarusidestrconsts.dlgfilterexecutable +msgctxt "lazarusidestrconsts.dlgfilterexecutable" +msgid "Executable" +msgstr "" + +#: lazarusidestrconsts.dlgfilterfpcmessagefile +msgctxt "lazarusidestrconsts.dlgfilterfpcmessagefile" +msgid "FPC message file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterhtml +msgid "HTML files" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagesbitmap +msgid "Bitmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespixmap +msgid "Pixmap images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterimagespng +msgid "PNG images" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusdesktopsettings +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusdesktopsettings" +msgid "Lazarus Desktop Settings" +msgstr "Lazarus 桌面设置" + +#: lazarusidestrconsts.dlgfilterlazaruseditorfile +msgctxt "lazarusidestrconsts.dlgfilterlazaruseditorfile" +msgid "Editor file types" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusfile +#, fuzzy +#| msgid "Lazarus File" +msgctxt "lazarusidestrconsts.dlgfilterlazarusfile" +msgid "Lazarus file" +msgstr "Lazarus 文件" + +#: lazarusidestrconsts.dlgfilterlazarusform +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusform" +msgid "Lazarus form" +msgstr "Lazarus 窗体" + +#: lazarusidestrconsts.dlgfilterlazarusinclude +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusinclude" +msgid "Lazarus include file" +msgstr "Lazarus 包含文件" + +#: lazarusidestrconsts.dlgfilterlazarusotherfile +msgctxt "lazarusidestrconsts.dlgfilterlazarusotherfile" +msgid "Lazarus other file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazaruspackage +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazaruspackage" +msgid "Lazarus package" +msgstr "Lazarus 包" + +#: lazarusidestrconsts.dlgfilterlazarusproject +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusproject" +msgid "Lazarus project" +msgstr "Lazarus 工程" + +#: lazarusidestrconsts.dlgfilterlazarusprojectsource +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusprojectsource" +msgid "Lazarus project source" +msgstr "Lazarus 工程文件" + +#: lazarusidestrconsts.dlgfilterlazarussession +msgid "Lazarus session" +msgstr "" + +#: lazarusidestrconsts.dlgfilterlazarusunit +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterlazarusunit" +msgid "Lazarus unit" +msgstr "Lazarus 单元" + +#: lazarusidestrconsts.dlgfilterpascalfile +msgctxt "lazarusidestrconsts.dlgfilterpascalfile" +msgid "Pascal file" +msgstr "" + +#: lazarusidestrconsts.dlgfilterprograms +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterprograms" +msgid "Programs" +msgstr "程序" + +#: lazarusidestrconsts.dlgfilterxml +#, fuzzy +msgctxt "lazarusidestrconsts.dlgfilterxml" +msgid "XML files" +msgstr "XML 文件" + #: lazarusidestrconsts.dlgfindtextatcursor msgid "Find text at cursor" msgstr "在光标处查找文本" @@ -1758,6 +1925,10 @@ msgid "Processing Instruction" msgstr "" +#: lazarusidestrconsts.dlgforceuniqueinstancemodalerror +msgid "The running Lazarus instance cannot accept any files." +msgstr "" + #: lazarusidestrconsts.dlgforecolor msgid "Foreground" msgstr "前景色" @@ -1798,11 +1969,6 @@ msgid "&From cursor" msgstr "从光标处(&F)" -#: lazarusidestrconsts.dlgfropts -msgctxt "lazarusidestrconsts.dlgfropts" -msgid "Options" -msgstr "选项" - #: lazarusidestrconsts.dlggetposition msgid "Get position" msgstr "得到位置" @@ -1819,6 +1985,10 @@ msgid "Grabber color" msgstr "" +#: lazarusidestrconsts.dlggrayeddesktopsundocked +msgid "Grayed desktops are for undocked environment." +msgstr "" + #: lazarusidestrconsts.dlggridcolor msgid "Grid color" msgstr "网格颜色" @@ -2008,9 +2178,11 @@ msgid "Included mixed state $IFDEF node" msgstr "" -#: lazarusidestrconsts.dlgignoreverb -msgid "Ignore" -msgstr "忽略" +#: lazarusidestrconsts.dlgimportdesktopexists +msgid "" +"A desktop with the same name already exists.\n" +"Please confirm the desktop name:\n" +msgstr "" #: lazarusidestrconsts.dlgincludesystemvariables msgid "Include system variables" @@ -2125,16 +2297,20 @@ #: lazarusidestrconsts.dlglevel2opt #, fuzzy -#| msgid "Level 2 (Level 1 + quick optimizations)" -msgid "2 (quick optimizations)" +#| msgid "2 (quick optimizations)" +msgid "2 (-O1 + quick optimizations)" msgstr "Level 2 (Level 1 + 快速优化)" #: lazarusidestrconsts.dlglevel3opt #, fuzzy -#| msgid "Level 3 (Level 2 + slow optimizations)" -msgid "3 (slow optimizations)" +#| msgid "3 (slow optimizations)" +msgid "3 (-O2 + slow optimizations)" msgstr "Level 3 (Level 2 + 慢速优化)" +#: lazarusidestrconsts.dlglevel4opt +msgid "4 (-O3 + aggressive optimizations, beware)" +msgstr "" + #: lazarusidestrconsts.dlglevelnoneopt #, fuzzy #| msgid "Level 0 (no extra optimizations)" @@ -2157,10 +2333,6 @@ msgid "Display line numbers in run-time error backtraces" msgstr "当出现运行错误时显示行号" -#: lazarusidestrconsts.dlgloaddfile -msgid "Load desktop settings from file" -msgstr "从文件载入 Lazarus 桌面设置" - #: lazarusidestrconsts.dlgmainmenu msgid "Main Menu" msgstr "主菜单" @@ -2188,6 +2360,10 @@ msgid "\"Make\" executable" msgstr "" +#: lazarusidestrconsts.dlgmanagedesktops +msgid "Manage desktops" +msgstr "" + #: lazarusidestrconsts.dlgmargingutter msgid "Margin and gutter" msgstr "边界和边缝" @@ -2348,6 +2524,7 @@ msgstr "" #: lazarusidestrconsts.dlgmouseoptbtn1 +msgctxt "lazarusidestrconsts.dlgmouseoptbtn1" msgid "Single" msgstr "" @@ -2553,6 +2730,10 @@ msgid "Gutter" msgstr "边缝" +#: lazarusidestrconsts.dlgmouseoptnodegutterchanges +msgid "Line Changes" +msgstr "" + #: lazarusidestrconsts.dlgmouseoptnodegutterfold msgid "Fold Tree" msgstr "" @@ -2605,6 +2786,98 @@ msgid "Messages" msgstr "信息" +#: lazarusidestrconsts.dlgmsgwincolorurgentdebug +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentdebug" +msgid "Debug" +msgstr "调试" + +#: lazarusidestrconsts.dlgmsgwincolorurgenterror +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenterror" +msgid "Error" +msgstr "错误" + +#: lazarusidestrconsts.dlgmsgwincolorurgentfatal +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentfatal" +msgid "Fatal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgenthint +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgenthint" +msgid "Hint" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentimportant +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentimportant" +msgid "Important" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnone +msgid "Normal" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentnote +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentnote" +msgid "Note" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentpanic +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentpanic" +msgid "Panic" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentprogress +msgid "Time and statistics" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentverbose" +msgid "Verbose" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose2 +msgid "Verbose 2" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentverbose3 +msgid "Verbose 3" +msgstr "" + +#: lazarusidestrconsts.dlgmsgwincolorurgentwarning +#, fuzzy +msgctxt "lazarusidestrconsts.dlgmsgwincolorurgentwarning" +msgid "Warning" +msgstr "警告" + +#: lazarusidestrconsts.dlgmulticaretcolumnmode +msgid "Multi-caret (column-select) move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretmode +msgid "Multi-caret move with cursor" +msgstr "" + +#: lazarusidestrconsts.dlgmulticaretoncolumnselection +msgid "Enable multi caret for column selection" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances +msgid "Multiple Lazarus instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_alwaysstartnew +msgid "always start a new instance" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_forcesingleinstance +msgid "do not allow multiple instances" +msgstr "" + +#: lazarusidestrconsts.dlgmultipleinstances_openfilesinrunning +msgid "open files in a running instance" +msgstr "" + #: lazarusidestrconsts.dlgmultiselect msgid "Multi Select" msgstr "多选" @@ -2641,6 +2914,10 @@ msgid "Naming" msgstr "命名" +#: lazarusidestrconsts.dlgnewdesktop +msgid "New desktop ..." +msgstr "" + #: lazarusidestrconsts.dlgnoautomaticrenaming #, fuzzy #| msgid "no automatic renaming" @@ -2685,11 +2962,6 @@ msgid "Miscellaneous" msgstr "杂项" -#: lazarusidestrconsts.dlgoioptions -msgctxt "lazarusidestrconsts.dlgoioptions" -msgid "Options" -msgstr "选项" - #: lazarusidestrconsts.dlgoispeedsettings msgid "Speed settings" msgstr "速度设置" @@ -2720,6 +2992,12 @@ msgid "Overwrite block" msgstr "" +#: lazarusidestrconsts.dlgoverwritedesktop +msgid "" +"Desktop with the name \"%s\" was found.\n" +"Should the old desktop be overwritten?\n" +msgstr "" + #: lazarusidestrconsts.dlgpalhints msgid "Hints for component palette" msgstr "组件面板提示" @@ -2920,7 +3198,9 @@ msgstr "属性名称" #: lazarusidestrconsts.dlgqopenlastprj -msgid "Open last project at start" +#, fuzzy +#| msgid "Open last project at start" +msgid "Open last project and packages at start" msgstr "在启动时打开上次的工程" #: lazarusidestrconsts.dlgqshowborderspacing @@ -2935,6 +3215,10 @@ msgid "Snap to grid" msgstr "对齐到网格" +#: lazarusidestrconsts.dlgreallydeletedesktop +msgid "Really delete desktop \"%s\"?" +msgstr "" + #: lazarusidestrconsts.dlgreferencecolor msgid "Reference" msgstr "参考" @@ -2945,6 +3229,10 @@ msgid "Regular e&xpressions" msgstr "正则表达式(&R)" +#: lazarusidestrconsts.dlgrenamedesktop +msgid "Rename desktop" +msgstr "" + #: lazarusidestrconsts.dlgreplaceall msgid "Replace &All" msgstr "替换所有(&A)" @@ -2996,6 +3284,18 @@ msgid "Rubberband Selection" msgstr "所选的" +#: lazarusidestrconsts.dlgrunninginstancemodalerror +msgid "" +"The running Lazarus instance cannot accept any files.\n" +"Do you want to open them in a new IDE instance?\n" +"\n" +"%s\n" +msgstr "" + +#: lazarusidestrconsts.dlgrunninginstancenotrespondingerror +msgid "Lazarus instance is running but not responding." +msgstr "" + #: lazarusidestrconsts.dlgrunodisplay msgid "Display (not for win32, e.g. 198.112.45.11:0, x.org:1, hydra:0.1)" msgstr "显示(不支持 win32, 例如 198.112.45.11:0, x.org:1, hydra:0.1)" @@ -3027,9 +3327,9 @@ msgid "Run Parameters" msgstr "带参数运行" -#: lazarusidestrconsts.dlgsavedfile -msgid "Save desktop settings to file" -msgstr "保存 Lazarus 桌面设置到文件" +#: lazarusidestrconsts.dlgsavecurrentdesktopas +msgid "Save current desktop as" +msgstr "" #: lazarusidestrconsts.dlgsavedlinecolor msgid "Saved line" @@ -3108,6 +3408,10 @@ msgid "&Selected text" msgstr "选择文本(&S)" +#: lazarusidestrconsts.dlgsetactivedesktop +msgid "Set active" +msgstr "" + #: lazarusidestrconsts.dlgsetallelementdefault msgid "Set all elements to default" msgstr "设置所有的元素为默认" @@ -3120,6 +3424,26 @@ msgid "Set property Variable" msgstr "设置属性变量" +#: lazarusidestrconsts.dlgsetpropertyvariablehint +msgid "The parameter name for the default setter procedure." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefix +msgid "is prefix" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableisprefixhint +msgid "If checked, the \"Set property Variable\" is a prefix. Otherwise it is a fixed name." +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconst +msgid "use const" +msgstr "" + +#: lazarusidestrconsts.dlgsetpropertyvariableuseconsthint +msgid "If checked, the setter parameter is marked with \"const\"." +msgstr "" + #: lazarusidestrconsts.dlgshowallunits msgid "Show all units" msgstr "" @@ -3249,6 +3573,10 @@ msgid "When a control is close to being aligned with another control, it snaps to the aligned position." msgstr "" +#: lazarusidestrconsts.dlgsourceedittabmultiline +msgid "Multiline tabs" +msgstr "" + #: lazarusidestrconsts.dlgspacenotcosmos msgctxt "lazarusidestrconsts.dlgspacenotcosmos" msgid "Space" @@ -3356,6 +3684,11 @@ msgid "&Text to find" msgstr "查找文本(&T)" +#: lazarusidestrconsts.dlgtoggledebugdesktop +msgctxt "lazarusidestrconsts.dlgtoggledebugdesktop" +msgid "Toggle as debug desktop" +msgstr "" + #: lazarusidestrconsts.dlgtopinfohint msgid "Current Class/Proc Hint" msgstr "" @@ -3771,6 +4104,10 @@ msgid "File not unit" msgstr "文件不是单元文件" +#: lazarusidestrconsts.lisa2piconandsize +msgid "Icon (maximum 24x24):" +msgstr "" + #: lazarusidestrconsts.lisa2pinvalidancestortype msgid "Invalid Ancestor Type" msgstr "无效的父类" @@ -3820,6 +4157,10 @@ msgid "No package found for dependency \"%s\".%sPlease choose an existing package." msgstr "没有找到任何包依赖于 %s%s%s.%s请选择一个存在的包." +#: lazarusidestrconsts.lisa2ppackageorproject +msgid "Package/Project" +msgstr "" + #: lazarusidestrconsts.lisa2ppagenametoolong msgid "Page Name too long" msgstr "页面名称太长" @@ -3980,6 +4321,12 @@ msgid "Abandon changes?" msgstr "放弃改变?" +#: lazarusidestrconsts.lisabort +#, fuzzy +msgctxt "lazarusidestrconsts.lisabort" +msgid "Abort" +msgstr "(中止)" + #: lazarusidestrconsts.lisabortall msgid "Abort all" msgstr "中断所有" @@ -4094,6 +4441,14 @@ msgid "Added property \"%s\" for %s." msgstr "" +#: lazarusidestrconsts.lisaddfcutf8 +msgid "Add -FcUTF8" +msgstr "" + +#: lazarusidestrconsts.lisaddfcutf8hint +msgid "May be needed if source files have non-ansistring literals." +msgstr "" + #: lazarusidestrconsts.lisaddfilesindirectory msgid "Add Files in Directory" msgstr "" @@ -4159,6 +4514,10 @@ msgid "&Address Breakpoint ..." msgstr "" +#: lazarusidestrconsts.lisaddsub +msgid "Add >>" +msgstr "" + #: lazarusidestrconsts.lisaddtoincludesearchpath msgid "Add to include search path?" msgstr "" @@ -4167,6 +4526,10 @@ msgid "Add %s to project?" msgstr "添加 %s 到工程?" +#: lazarusidestrconsts.lisaddtostartupcomponents +msgid "Add to startup components?" +msgstr "" + #: lazarusidestrconsts.lisaddtounitsearchpath msgid "Add to unit search path?" msgstr "" @@ -4201,10 +4564,6 @@ msgid "File type" msgstr "文件类型" -#: lazarusidestrconsts.lisaf2phasregisterprocedure -msgid "Has Register procedure" -msgstr "已经注册的过程函数" - #: lazarusidestrconsts.lisaf2pinvalidpackage msgid "Invalid Package" msgstr "无效的包" @@ -4232,23 +4591,10 @@ msgid "Show all" msgstr "显示所有" -#: lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage -#, fuzzy,badformat -#| msgid "The file %s%s%s%sis already in the package %s." -msgctxt "lazarusidestrconsts.lisaf2pthefileisalreadyinthepackage" -msgid "The file \"%s\"%sis already in the package %s." -msgstr "文件%s%s%s%s已经在包%s中." - #: lazarusidestrconsts.lisaf2pthepackageisreadonly msgid "The package %s is read only." msgstr "包 %s 为只读." -#: lazarusidestrconsts.lisaf2punitname -#, fuzzy -#| msgid "Unit Name: " -msgid "Unit name: " -msgstr "单元名: " - #: lazarusidestrconsts.lisafilealreadyexistsreplaceit #, fuzzy,badformat #| msgid "A file %s%s%s already exists.%sReplace it?" @@ -4277,10 +4623,6 @@ msgid "<All build modes>" msgstr "" -#: lazarusidestrconsts.lisallfiles -msgid "All Files" -msgstr "所有文件" - #: lazarusidestrconsts.lisallinheritedoptions msgid "All inherited options" msgstr "" @@ -4406,7 +4748,7 @@ #: lazarusidestrconsts.lisanerroroccuredatlaststartupwhileloadingloadthispro #, fuzzy,badformat #| msgid "An error occured at last startup while loading %s!%s%sLoad this project again?" -msgid "An error occured at last startup while loading %s!%sLoad this project again?" +msgid "An error occurred at last startup while loading %s!%sLoad this project again?" msgstr "装载时发生错误 %s!%s%s 重新载入工程?" #: lazarusidestrconsts.lisapplicationclassname @@ -4466,6 +4808,18 @@ msgid "A useful setting on Windows systems is: $(LazarusDir)\\mingw\\bin\\$(TargetCPU)-$(TargetOS)\\gdb.exe" msgstr "" +#: lazarusidestrconsts.lisautoadjustideheight +msgid "Automatically adjust IDE main window height" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalette +msgid "Show complete component palette" +msgstr "" + +#: lazarusidestrconsts.lisautoadjustideheightfullcomponentpalettehint +msgid "If component palette spans over more lines, show them all and not only one." +msgstr "" + #: lazarusidestrconsts.lisautocompletionoff msgid "Auto completion: off" msgstr "" @@ -4523,6 +4877,10 @@ msgid "do not add character" msgstr "" +#: lazarusidestrconsts.lisautomaticallyusesinglepossibleident +msgid "Automatically use single possible identifier" +msgstr "" + #: lazarusidestrconsts.lisautomaticfeatures #, fuzzy #| msgid "Automatic features" @@ -4621,6 +4979,12 @@ msgid "Border space" msgstr "边界" +#: lazarusidestrconsts.lisbottom +#, fuzzy +msgctxt "lazarusidestrconsts.lisbottom" +msgid "Bottom" +msgstr "底部" + #: lazarusidestrconsts.lisbottomborderspacespinedithint msgid "Bottom borderspace. This value is added to base borderspace and used for the space below the control." msgstr "" @@ -4733,6 +5097,10 @@ msgid "Building Lazarus failed" msgstr "" +#: lazarusidestrconsts.lisbuildmode +msgid "Build Mode: %s" +msgstr "" + #: lazarusidestrconsts.lisbuildmodediffdifferencesbetweenbuildmodes msgid "Differences between build modes" msgstr "" @@ -4997,6 +5365,7 @@ msgstr "稀有字符" #: lazarusidestrconsts.lisccowarningcaption +msgctxt "lazarusidestrconsts.lisccowarningcaption" msgid "Warning" msgstr "警告" @@ -5220,7 +5589,7 @@ msgstr "" #: lazarusidestrconsts.liscfeanexceptionoccuredduringdeletionof -msgid "An exception occured during deletion of%s\"%s:%s\"%s%s" +msgid "An exception occurred during deletion of%s\"%s:%s\"%s%s" msgstr "" #: lazarusidestrconsts.liscfecancelloadingthisresource @@ -5457,6 +5826,10 @@ msgid "Choose a Pascal file for indentation examples" msgstr "" +#: lazarusidestrconsts.lischooseclasssectiondlgformethodcaption +msgid "Insert new method to section" +msgstr "" + #: lazarusidestrconsts.lischoosecompilerexecutable msgid "Choose compiler executable (%s)" msgstr "" @@ -5485,6 +5858,10 @@ msgid "Choose directory" msgstr "选择路径" +#: lazarusidestrconsts.lischooseexecutable +msgid "Choose an executable" +msgstr "" + #: lazarusidestrconsts.lischoosefpcsourcedir msgid "Choose FPC source directory" msgstr "选择 FPC 源代码路径" @@ -5643,8 +6020,8 @@ msgid "Click here to browse the file" msgstr "点击这里浏览文件" -#: lazarusidestrconsts.lisclicktoseethepossibleuses -msgid "Click to see the possible uses" +#: lazarusidestrconsts.lisclicktoseethechoices +msgid "Click to see the choices" msgstr "" #: lazarusidestrconsts.lisclicktoselectpalettepage @@ -5716,6 +6093,10 @@ msgid "Pages" msgstr "" +#: lazarusidestrconsts.liscmppalettevisible +msgid "Palette is &visible" +msgstr "" + #: lazarusidestrconsts.liscmprestoredefaults msgid "&Restore defaults" msgstr "" @@ -6330,10 +6711,6 @@ msgid "Symbol" msgstr "符号" -#: lazarusidestrconsts.liscodetoolstemplatefile -msgid "CodeTools template file" -msgstr "" - #: lazarusidestrconsts.liscoexecuteafter msgid "Execute after" msgstr "执行后" @@ -6534,6 +6911,10 @@ msgid "Configure \"Build Lazarus\"" msgstr "配置%s构建Lazarus%s" +#: lazarusidestrconsts.lisconfigureeditortoolbar +msgid "Configure Toolbar" +msgstr "" + #: lazarusidestrconsts.lisconfigurelazaruside msgid "Configure Lazarus IDE" msgstr "" @@ -6963,20 +7344,187 @@ msgid "Unit Replacements" msgstr "" -#: lazarusidestrconsts.lisconvunitreplhint -msgid "Unit names in uses section of a source unit" +#: lazarusidestrconsts.lisconvunitreplhint +msgid "Unit names in uses section of a source unit" +msgstr "" + +#: lazarusidestrconsts.lisconvunitstoreplace +msgid "Units to replace" +msgstr "" + +#: lazarusidestrconsts.lisconvunknownprops +msgid "Unknown properties" +msgstr "" + +#: lazarusidestrconsts.lisconvuserselectedtoendconversion +msgid "User selected to end conversion with file %s" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddconfigdelete +msgid "Add/Config/Delete Toolbar(s)" +msgstr "" + +#: lazarusidestrconsts.liscoolbaradddivider +msgid "Add Divider" +msgstr "" + +#: lazarusidestrconsts.liscoolbaraddselected +msgid "Add selected item to toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbaravailablecommands +msgid "Available commands" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyle +msgid "Toolbars border style" +msgstr "" + +#: lazarusidestrconsts.liscoolbarborderstyleitem0 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem0" +msgid "None" +msgstr "无" + +#: lazarusidestrconsts.liscoolbarborderstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbarborderstyleitem1" +msgid "Single" +msgstr "" + +#: lazarusidestrconsts.liscoolbarclearselection +msgid "Clear selection" +msgstr "" + +#: lazarusidestrconsts.liscoolbarcodeexplorer +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarcodeexplorer" +msgid "Code Explorer" +msgstr "代码管理器" + +#: lazarusidestrconsts.liscoolbarcodetemplates +#, fuzzy +#| msgid "Code templates" +msgctxt "lazarusidestrconsts.liscoolbarcodetemplates" +msgid "Code Templates" +msgstr "代码模板" + +#: lazarusidestrconsts.liscoolbarconfigure +msgid "&Configure" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletetoolbar +msgid "Are you sure you want to delete the selected toolbar?" +msgstr "" + +#: lazarusidestrconsts.liscoolbardeletewarning +msgid "There must be at least one toolbar!" +msgstr "" + +#: lazarusidestrconsts.liscoolbardesigner +msgid "Designer" +msgstr "" + +#: lazarusidestrconsts.liscoolbargeneralsettings +msgid "General Coolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyle +msgid "Toolbars grab style" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem0 +msgid "Simple" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem1 +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem1" +msgid "Double" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem2 +msgid "HorLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem3 +msgid "VerLines" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem4 +msgid "Gripper" +msgstr "" + +#: lazarusidestrconsts.liscoolbargrabstyleitem5 +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbargrabstyleitem5" +msgid "Button" +msgstr "按钮" + +#: lazarusidestrconsts.liscoolbargrabwidth +msgid "Grab width" +msgstr "" + +#: lazarusidestrconsts.liscoolbaridemainmenu +msgid "IDE Main Menu" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmessages +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarmessages" +msgid "Messages" +msgstr "信息" + +#: lazarusidestrconsts.liscoolbarmoveselecteddown +msgid "Move selected toolbar item down" +msgstr "" + +#: lazarusidestrconsts.liscoolbarmoveselectedup +msgid "Move selected toolbar item up" +msgstr "" + +#: lazarusidestrconsts.liscoolbaroptions +msgid "IDE CoolBar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditor +msgid "Package Editor" +msgstr "" + +#: lazarusidestrconsts.liscoolbarpackageeditorfiles +msgid "Package Editor Files" +msgstr "" + +#: lazarusidestrconsts.liscoolbarremoveselected +msgid "Remove selected item from toolbar" +msgstr "" + +#: lazarusidestrconsts.liscoolbarrestoredefaults +msgid "Restore defaults" +msgstr "" + +#: lazarusidestrconsts.liscoolbarselecttoolbar +msgid "Please select a toolbar first!" +msgstr "" + +#: lazarusidestrconsts.liscoolbarsourceeditor +#, fuzzy +msgctxt "lazarusidestrconsts.liscoolbarsourceeditor" +msgid "Source Editor" +msgstr "源码编辑器" + +#: lazarusidestrconsts.liscoolbarsourcetab +msgid "Source Tab" msgstr "" -#: lazarusidestrconsts.lisconvunitstoreplace -msgid "Units to replace" +#: lazarusidestrconsts.liscoolbartoolbarcommands +msgid "Toolbar commands" msgstr "" -#: lazarusidestrconsts.lisconvunknownprops -msgid "Unknown properties" +#: lazarusidestrconsts.liscoolbarvisible +msgid "Coolbar is &visible" msgstr "" -#: lazarusidestrconsts.lisconvuserselectedtoendconversion -msgid "User selected to end conversion with file %s" +#: lazarusidestrconsts.liscoolbarwidth +msgid "Coolbar width" msgstr "" #: lazarusidestrconsts.liscopy @@ -7261,6 +7809,10 @@ msgid "Custom options" msgstr "自定义选项" +#: lazarusidestrconsts.liscustomoptions3 +msgid "Custom Options" +msgstr "" + #: lazarusidestrconsts.liscustomprogram msgid "Custom Program" msgstr "自定义程序" @@ -7457,9 +8009,10 @@ msgstr "" #: lazarusidestrconsts.lisdebug +#, fuzzy msgctxt "lazarusidestrconsts.lisdebug" msgid "Debug" -msgstr "" +msgstr "调试" #: lazarusidestrconsts.lisdebugger msgctxt "lazarusidestrconsts.lisdebugger" @@ -7777,22 +8330,14 @@ msgid "Delphi compatible resources. Recommended." msgstr "" -#: lazarusidestrconsts.lisdelphipackage -msgid "Delphi package" -msgstr "" - -#: lazarusidestrconsts.lisdelphiproject -msgid "Delphi project" -msgstr "Delphi 工程" - -#: lazarusidestrconsts.lisdelphiunit -msgid "Delphi unit" -msgstr "" - #: lazarusidestrconsts.lisdesigntimepackagesaddcomponentsandmenuitemstotheid msgid "\"Design time\" packages add components and menu items to the IDE. They can be used by projects, but are not compiled into the project. The compiler will not find units of this package when compiling the project." msgstr "" +#: lazarusidestrconsts.lisdesktops +msgid "Desktops ..." +msgstr "" + #: lazarusidestrconsts.lisdestinationdirectory msgid "Destination directory" msgstr "目标目录" @@ -8020,6 +8565,11 @@ msgid "Import ..." msgstr "" +#: lazarusidestrconsts.lisdlgmore +msgctxt "lazarusidestrconsts.lisdlgmore" +msgid "More ..." +msgstr "" + #: lazarusidestrconsts.lisdlgopen msgctxt "lazarusidestrconsts.lisdlgopen" msgid "Open ..." @@ -8040,6 +8590,10 @@ msgid "Do not change" msgstr "" +#: lazarusidestrconsts.lisdonotcheckifanotherideinstanceisalreadyrunning +msgid "%sDo not check if another IDE instance is already running" +msgstr "" + #: lazarusidestrconsts.lisdonotclosetheproject msgid "Do not close the project" msgstr "不要关闭工程" @@ -8167,6 +8721,10 @@ msgid "Duplicate Unit" msgstr "" +#: lazarusidestrconsts.lisduplicateunitin +msgid "Duplicate unit \"%s\" in \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisedit msgctxt "lazarusidestrconsts.lisedit" msgid "Edit" @@ -8192,14 +8750,22 @@ msgid "Editor Colors" msgstr "" -#: lazarusidestrconsts.liseditorfiletypes -msgid "Editor file types" -msgstr "" - #: lazarusidestrconsts.liseditormacros msgid "Editor macros" msgstr "" +#: lazarusidestrconsts.liseditortoolbar +msgid "Editor ToolBar" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarsettings +msgid "Editor Toolbar Settings" +msgstr "" + +#: lazarusidestrconsts.liseditortoolbarvisible +msgid "Editor Toolbar is &visible" +msgstr "" + #: lazarusidestrconsts.lisedoptsloadascheme msgid "Load a scheme" msgstr "" @@ -8302,6 +8868,10 @@ msgid "Working Directory:" msgstr "工作目录:" +#: lazarusidestrconsts.liselevatethemessageprioritytoalwaysshowitbydefaultit +msgid "Elevate the message priority to always show it (by default it has low priority \"verbose\")" +msgstr "" + #: lazarusidestrconsts.lisemdall msgctxt "lazarusidestrconsts.lisemdall" msgid "All" @@ -8513,7 +9083,7 @@ msgstr "" #: lazarusidestrconsts.liserrorinvalidbuildmode -msgid "ERROR: invalid build mode \"%s\"" +msgid "Error: (lazarus) invalid build mode \"%s\"" msgstr "" #: lazarusidestrconsts.liserrorloadingfile @@ -8617,6 +9187,10 @@ msgid "Save Events to File" msgstr "" +#: lazarusidestrconsts.liseventmethodsectionlabel +msgid "Insert new event methods to section" +msgstr "" + #: lazarusidestrconsts.liseventslogaddcomment msgid "Add Comment ..." msgstr "" @@ -8659,10 +9233,6 @@ msgid "Exclude filter" msgstr "排除过滤器" -#: lazarusidestrconsts.lisexecutable -msgid "Executable" -msgstr "" - #: lazarusidestrconsts.lisexecutableisadirectory msgid "executable \"%s\" is a directory" msgstr "" @@ -8683,10 +9253,6 @@ msgid "Execution stopped" msgstr "停止执行" -#: lazarusidestrconsts.lisexeprograms -msgid "Programs" -msgstr "程序" - #: lazarusidestrconsts.lisexit msgctxt "lazarusidestrconsts.lisexit" msgid "Exit" @@ -8723,14 +9289,27 @@ msgid "Export" msgstr "导出 ..." +#: lazarusidestrconsts.lisexportall +msgid "Export all" +msgstr "" + #: lazarusidestrconsts.lisexportallitemstofile msgid "Export All Items to File" msgstr "" +#: lazarusidestrconsts.lisexportenvironmentoptions +msgctxt "lazarusidestrconsts.lisexportenvironmentoptions" +msgid "Export environment options" +msgstr "" + #: lazarusidestrconsts.lisexporthtml msgid "Export as HTML" msgstr "" +#: lazarusidestrconsts.lisexportimport +msgid "Export / Import" +msgstr "" + #: lazarusidestrconsts.lisexportlist msgid "Export list" msgstr "导出列表" @@ -8739,6 +9318,14 @@ msgid "Export package list (*.xml)" msgstr "" +#: lazarusidestrconsts.lisexportselected +msgid "Export selected" +msgstr "" + +#: lazarusidestrconsts.lisexportsub +msgid "Export >>" +msgstr "" + #: lazarusidestrconsts.lisexpression msgid "Expression:" msgstr "表达式:" @@ -8815,6 +9402,7 @@ msgstr "" #: lazarusidestrconsts.lisfatal +msgctxt "lazarusidestrconsts.lisfatal" msgid "Fatal" msgstr "" @@ -9173,10 +9761,6 @@ msgid "fpcmake failed" msgstr "fpcmake 失败" -#: lazarusidestrconsts.lisfpcmessagefile -msgid "FPC message file" -msgstr "" - #: lazarusidestrconsts.lisfpcmessagefile2 msgid "FPC message file:" msgstr "" @@ -9372,6 +9956,10 @@ msgid "%sThere are %d more empty groups, delete all?" msgstr "" +#: lazarusidestrconsts.lisgrouplocalvariables +msgid "Group automatically defined local variables" +msgstr "" + #: lazarusidestrconsts.lisgroupnameemptyclearinstead msgid "The group name cannot be empty. Clear breakpoints' group(s)?" msgstr "" @@ -9404,6 +9992,10 @@ msgid "Has Help" msgstr "" +#: lazarusidestrconsts.lisheadercolors +msgid "Header colors" +msgstr "" + #: lazarusidestrconsts.lisheadercommentforclass msgid "Header comment for class" msgstr "类的头注释" @@ -9456,6 +10048,7 @@ msgstr "" #: lazarusidestrconsts.lishint +msgctxt "lazarusidestrconsts.lishint" msgid "Hint" msgstr "" @@ -9544,17 +10137,13 @@ msgid "ID" msgstr "ID" -#: lazarusidestrconsts.lisidcadd -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcadd" -msgid "Add" -msgstr "添加" +#: lazarusidestrconsts.lisidcaddition +msgid "Addition" +msgstr "" -#: lazarusidestrconsts.lisidcopen -#, fuzzy -msgctxt "lazarusidestrconsts.lisidcopen" -msgid "Open" -msgstr "打开" +#: lazarusidestrconsts.lisidcopening +msgid "Opening" +msgstr "" #: lazarusidestrconsts.liside msgid "IDE" @@ -9690,6 +10279,12 @@ msgid "If you want to use two different Lazarus versions you must start the second Lazarus with the command line parameter primary-config-path or pcp.%sFor example:" msgstr "" +#: lazarusidestrconsts.lisignore +#, fuzzy +msgctxt "lazarusidestrconsts.lisignore" +msgid "Ignore" +msgstr "忽略" + #: lazarusidestrconsts.lisignoreall msgid "Ignore all" msgstr "忽略所有" @@ -9706,9 +10301,9 @@ msgid "Ignore this exception type" msgstr "忽略这个异常类型" -#: lazarusidestrconsts.lisignoreusetformasancestor -msgid "Ignore, use TForm as ancestor" -msgstr "忽略, 用 TForm 作为原型" +#: lazarusidestrconsts.lisignoreuseasancestor +msgid "Ignore, use %s as ancestor" +msgstr "" #: lazarusidestrconsts.lisimitateindentationofcurrentunitprojectorpackage msgid "Imitate indentation of current unit, project or package" @@ -9724,11 +10319,13 @@ msgstr "" #: lazarusidestrconsts.lisimportant +msgctxt "lazarusidestrconsts.lisimportant" msgid "Important" msgstr "" -#: lazarusidestrconsts.lisimportexport -msgid "Import / Export" +#: lazarusidestrconsts.lisimportenvironmentoptions +msgctxt "lazarusidestrconsts.lisimportenvironmentoptions" +msgid "Import environment options" msgstr "" #: lazarusidestrconsts.lisimportfromfile @@ -9825,6 +10422,10 @@ msgid "Inherited project component" msgstr "" +#: lazarusidestrconsts.lisinitializelocalvariable +msgid "Initialize Local Variable" +msgstr "" + #: lazarusidestrconsts.lisinordertocreateacleancopyoftheprojectpackageallfil msgid "In order to create a clean copy of the project/package, all files in the following directory will be deleted and all its content will be lost.%sDelete all files in \"%s\"?" msgstr "" @@ -9834,6 +10435,10 @@ msgid "Insert" msgstr "插入" +#: lazarusidestrconsts.lisinsertassignment +msgid "Insert Assignment %s := ..." +msgstr "" + #: lazarusidestrconsts.lisinsertdate msgid "insert date" msgstr "" @@ -9973,6 +10578,10 @@ msgid "Instead of compile package create a simple Makefile." msgstr "" +#: lazarusidestrconsts.lisinsufficientencoding +msgid "Insufficient encoding" +msgstr "" + #: lazarusidestrconsts.lisinteractive msgid "Interactive" msgstr "" @@ -9989,6 +10598,14 @@ msgid "Invalid delete" msgstr "无效删除" +#: lazarusidestrconsts.lisinvalidexecutable +msgid "Invalid Executable" +msgstr "" + +#: lazarusidestrconsts.lisinvalidexecutablemessagetext +msgid "The file \"%s\" is not executable." +msgstr "" + #: lazarusidestrconsts.lisinvalidexpression msgid "Invalid expression:%s%s%s%s" msgstr "无效的表达式:%s%s%s%s" @@ -10106,6 +10723,14 @@ msgid "Jump History" msgstr "" +#: lazarusidestrconsts.lisjumptoerror +msgid "Jump to error" +msgstr "" + +#: lazarusidestrconsts.lisjumptoerroratidentifiercompletion +msgid "When an error in the sources is found at identifier completion, jump to it." +msgstr "" + #: lazarusidestrconsts.lisjumptoprocedure msgid "Jump to procedure %s" msgstr "" @@ -10753,10 +11378,6 @@ msgid "Lazarus Default" msgstr "" -#: lazarusidestrconsts.lislazarusdesktopsettings -msgid "Lazarus Desktop Settings" -msgstr "Lazarus 桌面设置" - #: lazarusidestrconsts.lislazarusdirectory msgid "Lazarus directory" msgstr "Lazarus 目录" @@ -10769,24 +11390,10 @@ msgid "Lazarus IDE v%s" msgstr "" -#: lazarusidestrconsts.lislazarusfile -#, fuzzy -#| msgid "Lazarus File" -msgid "Lazarus file" -msgstr "Lazarus 文件" - -#: lazarusidestrconsts.lislazarusform -msgid "Lazarus form" -msgstr "Lazarus 窗体" - #: lazarusidestrconsts.lislazaruside msgid "Lazarus IDE" msgstr "" -#: lazarusidestrconsts.lislazarusinclude -msgid "Lazarus include file" -msgstr "Lazarus 包含文件" - #: lazarusidestrconsts.lislazaruslanguageid msgid "Lazarus language ID (e.g. en, de, br, fi)" msgstr "Lazarus 语言 ID (e.g. en, de, br, fi)" @@ -10799,30 +11406,6 @@ msgid "lazarus [options] <project-filename>" msgstr "lazarus [选项] <工程文件名>" -#: lazarusidestrconsts.lislazarusotherfile -msgid "Lazarus other file" -msgstr "" - -#: lazarusidestrconsts.lislazaruspackage -msgid "Lazarus package" -msgstr "Lazarus 包" - -#: lazarusidestrconsts.lislazarusproject -msgid "Lazarus project" -msgstr "Lazarus 工程" - -#: lazarusidestrconsts.lislazarusprojectinfofile -msgid "Lazarus Project Info file" -msgstr "Lazarus 工程信息文件" - -#: lazarusidestrconsts.lislazarusprojectsource -msgid "Lazarus project source" -msgstr "Lazarus 工程文件" - -#: lazarusidestrconsts.lislazarusunit -msgid "Lazarus unit" -msgstr "Lazarus 单元" - #: lazarusidestrconsts.lislazbuildaboaction msgctxt "lazarusidestrconsts.lislazbuildaboaction" msgid "Action" @@ -11115,10 +11698,6 @@ msgid "list of all case values" msgstr "" -#: lazarusidestrconsts.lisloadedsuccessfully -msgid "Loaded successfully" -msgstr "" - #: lazarusidestrconsts.lisloadingfailed msgid "Loading %s failed." msgstr "加载 %s 失败." @@ -11311,6 +11890,10 @@ msgid "Manage Source Editors ..." msgstr "" +#: lazarusidestrconsts.lismaximumnumberofthreadsforcompilinginparalleldefaul +msgid "Maximum number of threads for compiling in parallel. Default is 0, which guesses the number of cores in the system." +msgstr "" + #: lazarusidestrconsts.lismaximumparallelprocesses0meansdefault msgid "Maximum parallel processes, 0 means default (%s)" msgstr "" @@ -11834,6 +12417,22 @@ msgid "Jump to Implementation" msgstr "" +#: lazarusidestrconsts.lismenujumptoimplementationuses +msgid "Jump to Implementation uses" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoinitialization +msgid "Jump to Initialization" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerface +msgid "Jump to Interface" +msgstr "" + +#: lazarusidestrconsts.lismenujumptointerfaceuses +msgid "Jump to Interface uses" +msgstr "" + #: lazarusidestrconsts.lismenujumptonextbookmark #, fuzzy #| msgid "Jump to next bookmark" @@ -11858,6 +12457,14 @@ msgid "Jump to Previous Error" msgstr "跳到前一个错误" +#: lazarusidestrconsts.lismenujumptoprocedurebegin +msgid "Jump to Procedure begin" +msgstr "" + +#: lazarusidestrconsts.lismenujumptoprocedureheader +msgid "Jump to Procedure header" +msgstr "" + #: lazarusidestrconsts.lismenulowercaseselection #, fuzzy #| msgid "Lowercase selection" @@ -11877,6 +12484,10 @@ msgid "New Component" msgstr "新建组件" +#: lazarusidestrconsts.lismenunewcustom +msgid "New %s" +msgstr "" + #: lazarusidestrconsts.lismenunewform msgid "New Form" msgstr "新建窗体" @@ -12166,6 +12777,10 @@ msgid "S&how Execution Point" msgstr "" +#: lazarusidestrconsts.lismenushowsmarthint +msgid "Context sensitive smart hint" +msgstr "" + #: lazarusidestrconsts.lismenusortselection #, fuzzy #| msgid "Sort selection ..." @@ -12367,13 +12982,6 @@ msgid "History" msgstr "" -#: lazarusidestrconsts.lismenuviewidespeedbuttons -#, fuzzy -#| msgid "IDE speed buttons" -msgctxt "lazarusidestrconsts.lismenuviewidespeedbuttons" -msgid "IDE Speed Buttons" -msgstr "IDE快速按钮" - #: lazarusidestrconsts.lismenuviewjumphistory #, fuzzy #| msgid "Jump History ..." @@ -12703,6 +13311,14 @@ msgid "Undo last change to this grid" msgstr "" +#: lazarusidestrconsts.lismmusesystemencoding +msgid "Use system encoding" +msgstr "" + +#: lazarusidestrconsts.lismmusesystemencodinghint +msgid "Disable support for UTF-8 default string encoding." +msgstr "" + #: lazarusidestrconsts.lismmvalues msgid "Value \"%s\"" msgstr "" @@ -12804,6 +13420,10 @@ msgid "(ms)" msgstr "" +#: lazarusidestrconsts.lismsgcolors +msgid "Message colors" +msgstr "" + #: lazarusidestrconsts.lismultipledirectoriesareseparatedwithsemicolons msgid "Multiple directories are separated with semicolons" msgstr "" @@ -13022,6 +13642,7 @@ msgstr "" #: lazarusidestrconsts.lisnote +msgctxt "lazarusidestrconsts.lisnote" msgid "Note" msgstr "" @@ -13341,6 +13962,12 @@ msgid "Open XML" msgstr "" +#: lazarusidestrconsts.lisoptions +#, fuzzy +msgctxt "lazarusidestrconsts.lisoptions" +msgid "Options" +msgstr "选项" + #: lazarusidestrconsts.lisoptionschangedrecompilingcleanwithb msgid "Options changed, recompiling clean with -B" msgstr "" @@ -13460,6 +14087,7 @@ msgstr "" #: lazarusidestrconsts.lispanic +msgctxt "lazarusidestrconsts.lispanic" msgid "Panic" msgstr "" @@ -13471,10 +14099,6 @@ msgid "parser \"%s\": %s" msgstr "" -#: lazarusidestrconsts.lispascalfile -msgid "Pascal file" -msgstr "" - #: lazarusidestrconsts.lispasscount msgid "Pass Count" msgstr "通过统计" @@ -13492,6 +14116,10 @@ msgid "Paste from clipboard" msgstr "" +#: lazarusidestrconsts.lispastelcolors +msgid "Pastel Colors" +msgstr "" + #: lazarusidestrconsts.lispath msgid "Path" msgstr "路径" @@ -13570,8 +14198,8 @@ msgid "Disable I18N of lfm" msgstr "" -#: lazarusidestrconsts.lispckeditaddfiles -msgid "Add files from the file system" +#: lazarusidestrconsts.lispckeditaddfilesfromfilesystem +msgid "Add Files from File System" msgstr "" #: lazarusidestrconsts.lispckeditaddotheritems @@ -13631,7 +14259,9 @@ msgstr "附属属性" #: lazarusidestrconsts.lispckediteditgeneraloptions -msgid "Edit General Options" +#, fuzzy +#| msgid "Edit General Options" +msgid "Edit general options" msgstr "编辑一般选项" #: lazarusidestrconsts.lispckeditfileproperties @@ -13642,10 +14272,6 @@ msgid "Install" msgstr "安装" -#: lazarusidestrconsts.lispckeditinstallpackageintheide -msgid "Install package in the IDE" -msgstr "安装 IDE 中的包" - #: lazarusidestrconsts.lispckeditinvalidmaximumversion msgid "Invalid maximum version" msgstr "无效最大版本" @@ -14128,9 +14754,9 @@ msgid "The file \"%s\"%sis currently not in the unit path of the package.%sAdd \"%s\" to unit path?" msgstr "文件 %s%s%s%si不在当前包单元路径中间.%s%s添加 %s%s%s 到 UnitPath?" -#: lazarusidestrconsts.lispkgedtherearemorefunctionsinthepopupmenu -msgid "There are more functions in the popupmenu" -msgstr "弹出菜单中有更多功能" +#: lazarusidestrconsts.lispkgedmorefunctionsforthepackage +msgid "More functions for the package" +msgstr "" #: lazarusidestrconsts.lispkgfiletypebinary msgctxt "lazarusidestrconsts.lispkgfiletypebinary" @@ -14167,19 +14793,27 @@ msgstr "虚单元" #: lazarusidestrconsts.lispkgmacropackagedirectoryparameterispackageid -msgid "Package directory. Parameter is package ID" +msgid "Package directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageincludefilessearchpathparameterispackageid -msgid "Package include files search path. Parameter is package ID" +msgid "Package include files search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackagenameparameterispackageid +msgid "Package name. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" +msgstr "" + +#: lazarusidestrconsts.lispkgmacropackageoutputdirectoryparameterispackageid +msgid "Package output directory. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackagesourcesearchpathparameterispackageid -msgid "Package source search path. Parameter is package ID" +msgid "Package source search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmacropackageunitsearchpathparameterispackageid -msgid "Package unit search path. Parameter is package ID" +msgid "Package unit search path. Parameter is package ID, e.g. \"Name\" or \"Name 1.0\"" msgstr "" #: lazarusidestrconsts.lispkgmangaddingnewdependencyforpackagepackage @@ -14218,8 +14852,8 @@ msgid "Circular dependencies found" msgstr "" -#: lazarusidestrconsts.lispkgmangcompilingpackage -msgid "Compiling package %s" +#: lazarusidestrconsts.lispkgmangcompilepackage +msgid "Compile package %s" msgstr "" #: lazarusidestrconsts.lispkgmangdeletefailed @@ -14398,6 +15032,12 @@ msgid "One or more required packages were not found. See package graph for details." msgstr "" +#: lazarusidestrconsts.lispkgmangsaveasalreadyopenedpackage +msgid "" +"The package %s is already open in the IDE.\n" +"You cannot save a package with the same name.\n" +msgstr "" + #: lazarusidestrconsts.lispkgmangsavepackage #, fuzzy #| msgid "Save Package?" @@ -14911,6 +15551,10 @@ msgid ".lpi is the project main info file, .lps is a separate file for session data only." msgstr "" +#: lazarusidestrconsts.lisposition +msgid "Position" +msgstr "" + #: lazarusidestrconsts.lispositionoutsideofsource msgid "%s (position outside of source)" msgstr "" @@ -15048,7 +15692,7 @@ #, fuzzy,badformat #| msgid "The Maximum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddthemaximumversionisinvalid" -msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Maximum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "最大版本 %s%s%s 无效.%s请使用如下格式 主要版本.次要版本.发布版本.构建版本%s例如: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthemaximumversionislowerthantheminimimversion @@ -15060,7 +15704,7 @@ #, fuzzy,badformat #| msgid "The Minimum Version %s%s%s is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" msgctxt "lazarusidestrconsts.lisprojaddtheminimumversionisinvalid" -msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor exmaple: 1.0.20.10" +msgid "The Minimum Version \"%s\" is invalid.%sPlease use the format major.minor.release.build%sFor example: 1.0.20.10" msgstr "最小版本 %s%s%s 无效.%s请使用如下格式 主要版本.次要版本.发布版本.构建版本%s例如: 1.0.20.10" #: lazarusidestrconsts.lisprojaddthepackagenameisinvalidplasechooseanexistingpackag @@ -15910,10 +16554,6 @@ msgid "Save current editor file" msgstr "保存当前编辑器的文件" -#: lazarusidestrconsts.lissavedsuccessfully -msgid "Saved successfully" -msgstr "" - #: lazarusidestrconsts.lissavedwithidesettings msgid "Saved with IDE settings" msgstr "" @@ -15986,6 +16626,10 @@ msgid "Save " msgstr "保存" +#: lazarusidestrconsts.lissavingfileasloosescharactersatlinecolumn +msgid "Saving file \"%s\" as \"%s\" looses characters at line %s, column %s." +msgstr "" + #: lazarusidestrconsts.lisscalingfactor msgid "Scaling factor:" msgstr "缩放比例:" @@ -16155,6 +16799,10 @@ msgid "Short, no path" msgstr "" +#: lazarusidestrconsts.lisshouldthecomponentbeautocreatedwhentheapplications +msgid "Should the component \"%s\" be auto created when the application starts?" +msgstr "" + #: lazarusidestrconsts.lisshow msgid "Show" msgstr "" @@ -16179,6 +16827,10 @@ msgid "Show empty units/packages" msgstr "" +#: lazarusidestrconsts.lisshowfpcmessagelinescompiled +msgid "Show FPC message \"lines compiled\"" +msgstr "" + #: lazarusidestrconsts.lisshowglyphsfor msgid "Show Glyphs for" msgstr "" @@ -16341,14 +16993,14 @@ msgid "Sorry, this type is not yet implemented" msgstr "对不起, 这种类型尚未实现" -#: lazarusidestrconsts.lissort -msgid "Sort" -msgstr "" - #: lazarusidestrconsts.lissortforscope msgid "Sort for scope" msgstr "" +#: lazarusidestrconsts.lissorting +msgid "Sorting" +msgstr "" + #: lazarusidestrconsts.lissortselascending msgid "Ascending" msgstr "升序" @@ -16561,10 +17213,6 @@ msgid "Suggest default name of new file in lowercase" msgstr "" -#: lazarusidestrconsts.lissupportutf8rtl -msgid "Support UTF-8 RTL" -msgstr "" - #: lazarusidestrconsts.lissuspiciousincludepath msgid "Suspicious include path" msgstr "" @@ -17291,6 +17939,10 @@ msgid "This statement can not be extracted.%sPlease select some code to extract a new procedure/method." msgstr "语句无法分析.%s请选择一段代码用来分析 procedure/method." +#: lazarusidestrconsts.listhiswillallowchangingallbuildmodesatoncenotimpleme +msgid "This will allow changing all build modes at once. Not implemented yet." +msgstr "" + #: lazarusidestrconsts.listhiswillcreateacirculardependency msgid "This will create a circular dependency." msgstr "" @@ -17349,6 +18001,10 @@ msgid "Title (leave empty for default)" msgstr "" +#: lazarusidestrconsts.listitleopencomponenticon24x24 +msgid "Choose a component icon 24x24" +msgstr "" + #: lazarusidestrconsts.listmfunctionappendpathdelimiter msgid "Function: append path delimiter" msgstr "功能: 附加路径分隔符" @@ -17387,6 +18043,22 @@ msgid "Toggle showing filenames with full path or with relative path" msgstr "切换文件名显示从全路径到相对路径" +#: lazarusidestrconsts.listoolbarconfiguration +msgid "Toolbar Configuration" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptions +msgid "Toolbar" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionshighlight +msgid "Highlight toolbars buttons" +msgstr "" + +#: lazarusidestrconsts.listoolbaroptionsraise +msgid "Raise toolbars" +msgstr "" + #: lazarusidestrconsts.listoolhasnoexecutable msgid "tool \"%s\" has no executable" msgstr "" @@ -17411,6 +18083,11 @@ msgid "tool stopped with exit code %s. Use context menu to get more information." msgstr "" +#: lazarusidestrconsts.listop +msgctxt "lazarusidestrconsts.listop" +msgid "Top" +msgstr "" + #: lazarusidestrconsts.listopanchoring msgid "Top anchoring" msgstr "顶锚" @@ -17753,6 +18430,10 @@ msgid "Unable to convert text form data of file %s\"%s\"%sinto binary stream. (%s)" msgstr "无法转换文本窗体数据文件 %s%s%s%s%s 为二进制流. (%s)" +#: lazarusidestrconsts.lisunabletoconverttoencoding +msgid "Unable to convert to encoding \"%s\"" +msgstr "" + #: lazarusidestrconsts.lisunabletocopyfile msgid "Unable to copy file" msgstr "无法复制文件" @@ -18320,6 +19001,7 @@ msgstr "变量" #: lazarusidestrconsts.lisverbose +msgctxt "lazarusidestrconsts.lisverbose" msgid "Verbose" msgstr "" @@ -18560,14 +19242,14 @@ msgid "XML Error" msgstr "XML 错误" -#: lazarusidestrconsts.lisxmlfiles -msgid "XML files" -msgstr "XML 文件" - #: lazarusidestrconsts.lisxmlparsererrorinfileerror msgid "XML parser error in file %s%sError: %s" msgstr "XML 解析错误的文件 %s%s错误: %s" +#: lazarusidestrconsts.lisyes +msgid "Yes" +msgstr "" + #: lazarusidestrconsts.lisyoucandisablethisforindividualformsviathepackageed msgid "You can disable this for individual forms via the package editor" msgstr "" @@ -18713,10 +19395,6 @@ msgid "Filter the lines in list with a string" msgstr "" -#: lazarusidestrconsts.rsformdatafiledfm -msgid "Form data file (*.dfm)|*.dfm" -msgstr "窗体数据文件 (*.dfm)|*.dfm" - #: lazarusidestrconsts.rsfoundbutnotlistedhere msgid "Found, but not listed here: " msgstr "" @@ -18999,6 +19677,10 @@ msgid "Text marker commands" msgstr "文本书签命令" +#: lazarusidestrconsts.srkmcatmulticaret +msgid "Multi caret commands" +msgstr "" + #: lazarusidestrconsts.srkmcatpackagemenu msgid "Package menu commands" msgstr "包菜单命令" @@ -19477,11 +20159,11 @@ msgstr "猜测放置错误的 $IFDEF" #: lazarusidestrconsts.srkmechalfwordleft -msgid "Move cursor half-word left" +msgid "Move cursor part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmechalfwordright -msgid "Move cursor half-word right" +msgid "Move cursor part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecimestr @@ -19595,6 +20277,18 @@ msgid "Invert Assignment" msgstr "交换赋值" +#: lazarusidestrconsts.srkmeckeymapleft +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapleft" +msgid "Left" +msgstr "左" + +#: lazarusidestrconsts.srkmeckeymapright +#, fuzzy +msgctxt "lazarusidestrconsts.srkmeckeymapright" +msgid "Right" +msgstr "右" + #: lazarusidestrconsts.srkmecleft msgid "Move cursor left" msgstr "" @@ -19669,6 +20363,10 @@ msgid "Go to next editor" msgstr "下一个编辑窗口" +#: lazarusidestrconsts.srkmecnexteditorinhistory +msgid "Go to next editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecnextsharededitor msgid "Go to next editor with same Source" msgstr "" @@ -19723,6 +20421,30 @@ msgid "pause program" msgstr "暂停程序" +#: lazarusidestrconsts.srkmecpluginmulticaretclearall +msgid "Clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodecancelonmove +msgid "Cursor keys clear all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretmodemoveall +msgid "Cursor keys move all extra carets" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretsetcaret +msgid "Add extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticarettogglecaret +msgid "Toggle extra caret" +msgstr "" + +#: lazarusidestrconsts.srkmecpluginmulticaretunsetcaret +msgid "Remove extra caret" +msgstr "" + #: lazarusidestrconsts.srkmecprevbookmark msgid "Previous Bookmark" msgstr "前一个书签" @@ -19731,6 +20453,10 @@ msgid "Go to prior editor" msgstr "上一个编辑窗口" +#: lazarusidestrconsts.srkmecpreveditorinhistory +msgid "Go to previous editor in history" +msgstr "" + #: lazarusidestrconsts.srkmecprevsharededitor msgid "Go to prior editor with same Source" msgstr "" @@ -19840,11 +20566,11 @@ msgstr "选择到 XY" #: lazarusidestrconsts.srkmecselhalfwordleft -msgid "Select half-word left" +msgid "Select part-word left (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselhalfwordright -msgid "Select half-word right" +msgid "Select part-word right (e.g. CamelCase)" msgstr "" #: lazarusidestrconsts.srkmecselleft @@ -20313,10 +21039,22 @@ msgid "Move cursor word right" msgstr "移动光标到单词右边" +#: lazarusidestrconsts.srkmeczoomin +msgid "Zoom in" +msgstr "" + +#: lazarusidestrconsts.srkmeczoomout +msgid "Zoom out" +msgstr "" + #: lazarusidestrconsts.srkmeditforcmd msgid "Edit keys of command" msgstr "编辑命令的快捷键" +#: lazarusidestrconsts.synfcontinuewithnextmouseupaction +msgid "Continue with next mouse up action" +msgstr "" + #: lazarusidestrconsts.synffoldcomments msgid "Fold comments" msgstr "" @@ -20349,6 +21087,26 @@ msgid "Hide comments in selection" msgstr "" +#: lazarusidestrconsts.synfmatchactionbuttonofmousedown +msgid "Match action button of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionlineofmousedown +msgid "Match action line of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionmodifiersofmousedown +msgid "Match action modifiers of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfmatchactionposofmousedown +msgid "Match action pos of mouse down" +msgstr "" + +#: lazarusidestrconsts.synfsearchallactionofmousedown +msgid "Search all action of mouse down" +msgstr "" + #: lazarusidestrconsts.synfunfoldactiveifdef msgid "Unfold active Ifdef" msgstr "" diff -Nru lazarus-1.4.4+dfsg/lazarus.app/Contents/Info.plist lazarus-1.6+dfsg/lazarus.app/Contents/Info.plist --- lazarus-1.4.4+dfsg/lazarus.app/Contents/Info.plist 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/lazarus.app/Contents/Info.plist 2016-02-14 09:48:23.000000000 +0000 @@ -148,7 +148,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>Lazarus IDE v1.4.4</string> + <string>Lazarus IDE v1.6</string> <key>CFBundleSignature</key> <string>laza</string> <key>CFBundleVersion</key> diff -Nru lazarus-1.4.4+dfsg/lcl/alllclunits.pp lazarus-1.6+dfsg/lcl/alllclunits.pp --- lazarus-1.4.4+dfsg/lcl/alllclunits.pp 2014-12-16 19:29:52.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/alllclunits.pp 2015-10-12 16:13:50.000000000 +0000 @@ -9,24 +9,25 @@ uses CheckLst, Clipbrd, ColorBox, ComCtrls, Controls, CustomTimer, DBActns, DbCtrls, DBGrids, DefaultTranslator, Dialogs, DynamicArray, DynHashArray, - DynQueue, ExtCtrls, ExtDlgs, ExtendedStrings, extgraphics, FileCtrl, Forms, + DynQueue, ExtCtrls, ExtDlgs, ExtendedStrings, ExtGraphics, FileCtrl, Forms, Graphics, GraphMath, GraphType, GraphUtil, Grids, HelpIntfs, IcnsTypes, ImageListCache, ImgList, IniPropStorage, InterfaceBase, IntfGraphics, LazHelpHTML, LazHelpIntf, LazLinkedList, LCLClasses, LCLIntf, LCLMemManager, LCLMessageGlue, LCLProc, LCLResCache, LCLStrConsts, LCLType, Menus, - LCLUnicodeData, LCLVersion, LMessages, LResources, maps, MaskEdit, + LCLUnicodeData, LCLVersion, LMessages, LResources, Maps, MaskEdit, PairSplitter, PopupNotifier, PostScriptCanvas, PostScriptPrinter, - postscriptunicode, Printers, PropertyStorage, RubberBand, ShellCtrls, Spin, + PostScriptUnicode, Printers, PropertyStorage, RubberBand, ShellCtrls, Spin, StdActns, StdCtrls, StringHashList, TextStrings, Themes, TmSchema, Toolwin, - Translations, UTrace, XMLPropStorage, Messages, WSButtons, WSCalendar, - WSCheckLst, WSComCtrls, WSControls, WSDesigner, WSDialogs, WSExtCtrls, - WSExtDlgs, WSFactory, WSForms, WSGrids, WSImgList, WSLCLClasses, WSMenus, - WSPairSplitter, WSProc, WSReferences, WSSpin, WSStdCtrls, WSToolwin, - ActnList, AsyncProcess, ButtonPanel, Buttons, Calendar, RegisterLCL, - ValEdit, lazcanvas, lazdialogs, lazregions, customdrawn_common, - customdrawncontrols, customdrawndrawers, lazdeviceapis, LDockTree, - LazFreeTypeIntfDrawer, customdrawn_winxp, customdrawn_android, Arrow, - EditBtn, ComboEx, DBExtCtrls, LazarusPackageIntf; + Translations, UTrace, XMLPropStorage, TimePopup, Messages, WSButtons, + WSCalendar, WSCheckLst, WSComCtrls, WSControls, WSDesigner, WSDialogs, + WSExtCtrls, WSExtDlgs, WSFactory, WSForms, WSGrids, WSImgList, WSLCLClasses, + WSMenus, WSPairSplitter, WSProc, WSReferences, WSSpin, WSStdCtrls, + WSToolwin, ActnList, AsyncProcess, ButtonPanel, Buttons, Calendar, + RegisterLCL, ValEdit, LazCanvas, LazDialogs, LazRegions, CustomDrawn_Common, + CustomDrawnControls, CustomDrawnDrawers, LazDeviceApis, LDockTree, + LazFreeTypeIntfDrawer, CustomDrawn_WinXP, CustomDrawn_Android, Arrow, + EditBtn, ComboEx, DBExtCtrls, CustomDrawn_Mac, CalcForm, LCLTranslator, + LazarusPackageIntf; implementation diff -Nru lazarus-1.4.4+dfsg/lcl/arrow.pp lazarus-1.6+dfsg/lcl/arrow.pp --- lazarus-1.4.4+dfsg/lcl/arrow.pp 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/arrow.pp 2015-06-05 17:10:58.000000000 +0000 @@ -19,12 +19,12 @@ interface uses - Classes, Controls, Graphics, types, IndustrialBase; + Classes, types, math, Controls, Graphics, IndustrialBase; type TArrowType = (atUp, atDown, atLeft, atRight); - TShadowType = (stNone, stIn, stOut, stEtchedIn, stEtchedOut); + TShadowType = (stNone, stIn, stOut, stEtchedIn, stEtchedOut, stFilled); TTriPts = (ptA, ptB, ptC); TTrianglePoints = array[TTriPts] of TPoint; @@ -34,12 +34,16 @@ private FArrowColor: TColor; FArrowType: TArrowType; - FR: TRect; + FArrowAngle: integer; FShadowType: TShadowType; + FShadowColor: TColor; + FR: TRect; FT: TTrianglePoints; procedure CalcTrianglePoints; + procedure SetArrowAngle(AValue: integer); procedure SetArrowColor(AValue: TColor); procedure SetArrowType(AValue: TArrowType); + procedure SetShadowColor(AValue: TColor); procedure SetShadowType(AValue: TShadowType); protected class function GetControlClassDefaultSize: TSize; override; @@ -51,6 +55,7 @@ property Anchors; property ArrowColor: TColor read FArrowColor write SetArrowColor default clBlack; property ArrowType: TArrowType read FArrowType write SetArrowType default atLeft; + property ArrowPointerAngle: integer read FArrowAngle write SetArrowAngle default 60; property BorderSpacing; property Color; property Constraints; @@ -77,6 +82,7 @@ property ParentShowHint; property PopupMenu; property ShadowType: TShadowType read FShadowType write SetShadowType default stEtchedIn; + property ShadowColor: TColor read FShadowColor write SetShadowColor default cl3DShadow; property ShowHint; property Visible; end; @@ -87,8 +93,14 @@ implementation const - Default_Height_Width = 20; - ArrowMinHeight = 8; + cDefaultControlSize = 20; + cMinArrowSize = 8; + cMinAngle = 20; + cMaxAngle = 160; + cShadowColors: array[TShadowType] of TColor = + (clWindow, cl3DShadow, cl3DShadow, cl3DHiLight, cl3DHiLight, clBlue{not used}); + cInnerOffset = 2; + cShadowSize = 2; //must be <= cInnerOffset procedure Register; @@ -100,26 +112,49 @@ procedure TArrow.CalcTrianglePoints; var - midY, midX, half: integer; - sz: TSize; - square, tall: boolean; + midY, midX: integer; + ratioNeed, ratioThis: double; + size: TSize; begin FR:= ClientRect; - InflateRect(FR, -2, -2); - sz:= Size(FR); - square:= (sz.cx = sz.cy); - if not square then + InflateRect(FR, -cInnerOffset, -cInnerOffset); + Dec(FR.Bottom); // for "filled" shadow + + midX:= (FR.Left + FR.Right) div 2; + midY:= (FR.Top + FR.Bottom) div 2; + size:= Types.Size(FR); + + ratioNeed:= 2*Tan(FArrowAngle*pi/(180*2)); + if FArrowType in [atLeft, atRight] then + ratioNeed:= 1/ratioNeed; + + ratioThis:= size.cx/size.cy; + if ratioThis>=ratioNeed then + size.cx:= Trunc(size.cx*ratioNeed/ratioThis) + else + size.cy:= Trunc(size.cy*ratioThis/ratioNeed); + + FR.Top:= midY - size.cy div 2; + FR.Bottom:= FR.Top + size.cy; + FR.Left:= midX - size.cx div 2; + FR.Right:= FR.Left + size.cx; + + // angle=90: 1pixel shift appears (reason: float math) + // workaround: + if FArrowAngle=90 then + begin + if FArrowType in [atUp, atDown] then begin - tall:= (sz.cy > sz.cx); - case tall of - False:InflateRect(FR, -((sz.cx - sz.cy) div 2), 0); - True: InflateRect(FR, 0, -((sz.cy - sz.cx) div 2)); - end; - sz:= Size(FR); + FR.Left:= midX-size.cy; + FR.Right:= midX+size.cy; + end + else + begin + FR.Top:= midY-size.cx; + FR.Bottom:= midY+size.cx; end; - half:= sz.cx div 2; - midX:= FR.Left + half; - midY:= FR.Top + half; + end; + case FArrowType of atUp: begin FT[ptC] := Point(midX, FR.Top); @@ -158,6 +193,21 @@ GraphicChanged; end; +procedure TArrow.SetShadowColor(AValue: TColor); +begin + if FShadowColor=AValue then Exit; + FShadowColor:= AValue; + GraphicChanged; +end; + +procedure TArrow.SetArrowAngle(AValue: integer); +begin + if FArrowAngle=AValue then Exit; + FArrowAngle:=Max(Min(AValue, cMaxAngle), cMinAngle); + GraphicChanged; +end; + + procedure TArrow.SetShadowType(AValue: TShadowType); begin if FShadowType=AValue then Exit; @@ -167,15 +217,11 @@ class function TArrow.GetControlClassDefaultSize: TSize; begin - Result.cx:=Default_Height_Width; - Result.cy:=Default_Height_Width; + Result.cx:=cDefaultControlSize; + Result.cy:=cDefaultControlSize; end; procedure TArrow.Paint; -const - Colors: array[TShadowType] of TColor - =(clWindow, cl3DShadow, cl3DShadow, cl3DHiLight, cl3DHiLight); - procedure Offset(var ptA, ptB: TPoint); begin case FArrowType of @@ -188,11 +234,11 @@ procedure ShadowLine(p1, p2: TPoint); begin - Canvas.Pen.Color:= Colors[FShadowType]; + Canvas.Pen.Color:= cShadowColors[FShadowType]; Canvas.MoveTo(p1); Canvas.LineTo(p2); Offset(p1, p2); - Canvas.Pen.Color:= cl3DShadow; + Canvas.Pen.Color:= FShadowColor; Canvas.MoveTo(p1); Canvas.LineTo(p2); if (Height>13) then @@ -203,19 +249,41 @@ end; end; + procedure ShadowTriangle; + var + Pts: TTrianglePoints; + begin + Pts:= FT; + Inc(Pts[ptA].x, cShadowSize); + Inc(Pts[ptA].y, cShadowSize); + Inc(Pts[ptB].x, cShadowSize); + Inc(Pts[ptB].y, cShadowSize); + Inc(Pts[ptC].x, cShadowSize); + Inc(Pts[ptC].y, cShadowSize); + Canvas.Pen.Color:= FShadowColor; + Canvas.Brush.Color:= FShadowColor; + Canvas.Polygon(Pts); + end; + begin + CalcTrianglePoints; + Canvas.AntialiasingMode := AntiAliasingMode; // Paint background Canvas.Brush.Color := Color; Canvas.FillRect(ClientRect); + + // Paint shadow area + if (FShadowType=stFilled) then + ShadowTriangle; + // Paint arrow Canvas.Pen.Color:= FArrowColor; Canvas.Brush.Color:= FArrowColor; - CalcTrianglePoints; Canvas.Polygon(FT); - if (FShadowType <> stNone) - then ShadowLine(FT[ptB], FT[ptC]); + if not (FShadowType in [stNone, stFilled]) then + ShadowLine(FT[ptB], FT[ptC]); inherited Paint; end; @@ -223,10 +291,12 @@ constructor TArrow.Create(aOwner: TComponent); begin inherited Create(aOwner); - Constraints.MinHeight:= ArrowMinHeight; - Constraints.MinWidth:= ArrowMinHeight; - FArrowType:= atLeft; // set defaults to match TArrow component + Constraints.MinHeight:= cMinArrowSize; + Constraints.MinWidth:= cMinArrowSize; + FArrowType:= atLeft; // set defaults to match TArrow component + FArrowAngle:= 60; // angle of equal side triangle FShadowType:= stEtchedIn; + FShadowColor:= cl3DShadow; FArrowColor:= clBlack; end; diff -Nru lazarus-1.4.4+dfsg/lcl/buttons.pp lazarus-1.6+dfsg/lcl/buttons.pp --- lazarus-1.4.4+dfsg/lcl/buttons.pp 2015-01-27 08:34:12.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/buttons.pp 2015-01-27 08:33:20.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: buttons.pp 47544 2015-01-27 08:34:12Z mattias $} +{ $Id: buttons.pp 47543 2015-01-27 08:33:20Z mattias $} { /*************************************************************************** diff -Nru lazarus-1.4.4+dfsg/lcl/calendar.pp lazarus-1.6+dfsg/lcl/calendar.pp --- lazarus-1.4.4+dfsg/lcl/calendar.pp 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/calendar.pp 2015-11-06 18:35:28.000000000 +0000 @@ -159,8 +159,7 @@ begin inherited Create(AOwner); fCompStyle := csCalendar; - with GetControlClassDefaultSize do - SetInitialBounds(0, 0, CX, CY); + SetInitialBounds(0, 0, GetControlClassDefaultSize.CX, GetControlClassDefaultSize.CY); FDisplaySettings := DefaultDisplaySettings; ControlStyle:=ControlStyle-[csTripleClicks,csQuadClicks,csAcceptsControls,csCaptureMouse]; DateTime := Now; diff -Nru lazarus-1.4.4+dfsg/lcl/checklst.pas lazarus-1.6+dfsg/lcl/checklst.pas --- lazarus-1.4.4+dfsg/lcl/checklst.pas 2015-02-25 23:08:08.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/checklst.pas 2015-02-25 19:10:32.000000000 +0000 @@ -37,7 +37,6 @@ FOnClickCheck : TNotifyEvent; FOnItemClick: TCheckListClicked; function GetChecked(const AIndex: Integer): Boolean; - function GetCount: integer; function GetHeader(AIndex: Integer): Boolean; function GetItemEnabled(AIndex: Integer): Boolean; function GetState(AIndex: Integer): TCheckBoxState; @@ -75,7 +74,6 @@ property Header[AIndex: Integer]: Boolean read GetHeader write SetHeader; property ItemEnabled[AIndex: Integer]: Boolean read GetItemEnabled write SetItemEnabled; property State[AIndex: Integer]: TCheckBoxState read GetState write SetState; - property Count: integer read GetCount; property OnClickCheck: TNotifyEvent read FOnClickCheck write FOnClickCheck; property OnItemClick: TCheckListClicked read FOnItemClick write FOnItemClick; end; @@ -266,11 +264,6 @@ Result := 0; end; -function TCustomCheckListBox.GetCount: integer; -begin - Result := Items.Count; -end; - function TCustomCheckListBox.GetItemEnabled(AIndex: Integer): Boolean; begin CheckIndex(AIndex); diff -Nru lazarus-1.4.4+dfsg/lcl/colorbox.pas lazarus-1.6+dfsg/lcl/colorbox.pas --- lazarus-1.4.4+dfsg/lcl/colorbox.pas 2015-02-03 00:16:45.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/colorbox.pas 2015-09-23 09:19:55.000000000 +0000 @@ -20,8 +20,12 @@ interface uses - LResources, SysUtils, LCLProc, LCLType, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, LCLStrConsts; + LResources, SysUtils, Types, Classes, + LCLProc, LCLType, LCLStrConsts, Graphics, Controls, Forms, Dialogs, StdCtrls; + +const + cDefaultColorRectWidth = 14; + cDefaultColorRectOffset = 3; type { TCustomColorBox } @@ -41,6 +45,7 @@ TCustomColorBox = class(TCustomComboBox) private FColorRectWidth: Integer; + FColorRectOffset: Integer; FDefaultColorColor: TColor; FNoneColorColor: TColor; FOnGetColors: TGetColorsEvent; @@ -50,6 +55,7 @@ function GetColorName(Index: Integer): string; function GetSelected: TColor; procedure SetColorRectWidth(AValue: Integer); + procedure SetColorRectOffset(AValue: Integer); procedure SetDefaultColorColor(const AValue: TColor); procedure SetNoneColorColor(const AValue: TColor); procedure SetSelected(Value: TColor); @@ -66,7 +72,8 @@ function PickCustomColor: Boolean; virtual; public constructor Create(AOwner: TComponent); override; - property ColorRectWidth: Integer read FColorRectWidth write SetColorRectWidth default 14; + property ColorRectWidth: Integer read FColorRectWidth write SetColorRectWidth default cDefaultColorRectWidth; + property ColorRectOffset: Integer read FColorRectOffset write SetColorRectOffset default cDefaultColorRectOffset; property Style: TColorBoxStyle read FStyle write SetStyle default [cbStandardColors, cbExtendedColors, cbSystemColors]; property Colors[Index: Integer]: TColor read GetColor; @@ -82,6 +89,7 @@ TColorBox = class(TCustomColorBox) published property ColorRectWidth; + property ColorRectOffset; property DefaultColorColor; property NoneColorColor; property Selected; @@ -153,6 +161,7 @@ TCustomColorListBox = class(TCustomListBox) private FColorRectWidth: Integer; + FColorRectOffset: Integer; FDefaultColorColor: TColor; FNoneColorColor: TColor; FOnGetColors: TLBGetColorsEvent; @@ -161,6 +170,7 @@ function GetColors(Index : Integer): TColor; function GetColorName(Index: Integer): string; function GetSelected: TColor; + procedure SetColorRectOffset(AValue: Integer); procedure SetColorRectWidth(AValue: Integer); procedure SetColors(Index: Integer; AValue: TColor); procedure SetDefaultColorColor(const AValue: TColor); @@ -178,7 +188,8 @@ function PickCustomColor: Boolean; virtual; public constructor Create(AOwner: TComponent); override; - property ColorRectWidth: Integer read FColorRectWidth write SetColorRectWidth default 14; + property ColorRectWidth: Integer read FColorRectWidth write SetColorRectWidth default cDefaultColorRectWidth; + property ColorRectOffset: Integer read FColorRectOffset write SetColorRectOffset default cDefaultColorRectOffset; property Style: TColorBoxStyle read FStyle write SetStyle default [cbStandardColors, cbExtendedColors, cbSystemColors]; property Colors[Index: Integer]: TColor read GetColors write SetColors; @@ -194,6 +205,7 @@ TColorListBox = class(TCustomColorListBox) published property ColorRectWidth; + property ColorRectOffset; property DefaultColorColor; property NoneColorColor; property Selected; @@ -360,12 +372,12 @@ inherited Style := csOwnerDrawFixed; inherited ReadOnly := True; - FColorRectWidth := 14; + FColorRectWidth := cDefaultColorRectWidth; + FColorRectOffset := cDefaultColorRectOffset; FStyle := [cbStandardColors, cbExtendedColors, cbSystemColors]; FNoneColorColor := clBlack; FDefaultColorColor := clBlack; FSelected := clBlack; - SetColorList; end; {------------------------------------------------------------------------------ @@ -403,6 +415,13 @@ Invalidate; end; +procedure TCustomColorBox.SetColorRectOffset(AValue: Integer); +begin + if FColorRectOffset = AValue then Exit; + FColorRectOffset := AValue; + Invalidate; +end; + procedure TCustomColorBox.SetDefaultColorColor(const AValue: TColor); begin if FDefaultColorColor <> AValue then @@ -553,9 +572,9 @@ if Index = -1 then Exit; - r.top := Rect.top + 3; - r.bottom := Rect.bottom - 3; - r.left := Rect.left + 3; + r.top := Rect.top + FColorRectOffset; + r.bottom := Rect.bottom - FColorRectOffset; + r.left := Rect.left + FColorRectOffset; r.right := r.left + FColorRectWidth; Exclude(State, odPainted); @@ -595,7 +614,7 @@ Pen.Color := PenColor; end; r := Rect; - r.left := r.left + FColorRectWidth + 4; + r.left := r.left + FColorRectWidth + FColorRectOffset + 1; inherited DrawItem(Index, BidiFlipRect(r, Rect, UseRightToLeftAlignment), State); end; @@ -691,7 +710,8 @@ begin inherited Create(AOwner); inherited Style := lbOwnerDrawFixed; - FColorRectWidth := 14; + FColorRectWidth := cDefaultColorRectWidth; + FColorRectOffset := cDefaultColorRectOffset; FStyle := [cbStandardColors, cbExtendedColors, cbSystemColors]; FNoneColorColor := clBlack; FDefaultColorColor := clBlack; @@ -720,6 +740,13 @@ Result := FSelected; end; +procedure TCustomColorListBox.SetColorRectOffset(AValue: Integer); +begin + if FColorRectOffset = AValue then Exit; + FColorRectOffset := AValue; + Invalidate; +end; + procedure TCustomColorListBox.SetColorRectWidth(AValue: Integer); begin if FColorRectWidth = AValue then Exit; @@ -873,9 +900,9 @@ if Index < 0 then Exit; - r.top := Rect.top + 3; - r.bottom := Rect.bottom - 3; - r.left := Rect.left + 3; + r.top := Rect.top + FColorRectOffset; + r.bottom := Rect.bottom - FColorRectOffset; + r.left := Rect.left + FColorRectOffset; r.right := r.left + FColorRectWidth; Exclude(State,odPainted); with Canvas do @@ -902,7 +929,7 @@ Pen.Color := PenColor; end; r := Rect; - r.left := r.left + FColorRectWidth + 4; + r.left := r.left + FColorRectWidth + FColorRectOffset + 1; inherited DrawItem(Index, BidiFlipRect(r, Rect, UseRightToLeftAlignment), State); end; diff -Nru lazarus-1.4.4+dfsg/lcl/comctrls.pp lazarus-1.6+dfsg/lcl/comctrls.pp --- lazarus-1.4.4+dfsg/lcl/comctrls.pp 2015-02-25 22:55:37.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/comctrls.pp 2016-02-13 12:44:21.000000000 +0000 @@ -30,11 +30,11 @@ uses SysUtils, Types, Classes, Math, - AvgLvlTree, LazUTF8Classes, + AvgLvlTree, LazUTF8, LazUTF8Classes, LCLStrConsts, LResources, LCLIntf, LCLType, - FileUtil, LCLProc, LMessages, ImgList, ActnList, GraphType, - Graphics, Menus, Controls, Forms, StdCtrls, ExtCtrls, ToolWin, Buttons, - Themes, WSLCLClasses, LCLClasses; + FileUtil, LMessages, ImgList, ActnList, GraphType, + Themes, WSLCLClasses, LCLClasses, LCLProc, + Graphics, Menus, Controls, Forms, StdCtrls, ExtCtrls, ToolWin, Buttons; type THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon, @@ -1552,7 +1552,8 @@ procedure Clear; procedure EndUpdate; procedure Repaint; override; - function FindCaption(StartIndex: Integer; Value: string; Partial, Inclusive, Wrap: Boolean; PartStart: Boolean = True): TListItem; + function FindCaption(StartIndex: Integer; Value: string; + Partial, Inclusive, Wrap: Boolean; PartStart: Boolean = True): TListItem; function FindData(StartIndex: Integer; Value: Pointer; Inclusive, Wrap: Boolean): TListItem; function GetHitTestInfoAt(X, Y: Integer): THitTests; function GetItemAt(x,y: integer): TListItem; @@ -1600,6 +1601,7 @@ property RowSelect: Boolean index Ord(lvpRowSelect) read GetProperty write SetProperty default False; property SelCount: Integer read GetSelCount; property Selected: TListItem read GetSelection write SetSelection; + property LastSelected: TListItem read FSelected; property TabStop default true; property TopItem: TListItem read GetTopItem; property ViewOrigin: TPoint read GetViewOrigin write SetViewOrigin; @@ -1990,6 +1992,7 @@ FToolButtonFlags: TToolButtonFlags; FUpdateCount: Integer; FWrap: Boolean; + FLastDropDownTick: QWord; procedure GetGroupBounds(var StartIndex, EndIndex: integer); function GetIndex: Integer; function GetTextSize: TSize; @@ -2012,7 +2015,7 @@ procedure CMVisibleChanged(var Message: TLMessage); message CM_VISIBLECHANGED; procedure CMHitTest(var Message: TCMHitTest); message CM_HITTEST; protected const - cDefSeparatorWidth = 10; + cDefSeparatorWidth = 8; cDefDividerWidth = 5; protected FToolBar: TToolBar; @@ -2112,6 +2115,8 @@ end; { TToolBar } + + TToolBarOnPaintButton = procedure(Sender: TToolButton; State: integer) of object; TToolBarFlag = ( tbfUpdateVisibleBarNeeded, @@ -2122,6 +2127,8 @@ TToolBar = class(TToolWindow) private + FOnPaint: TNotifyEvent; + FOnPaintButton: TToolBarOnPaintButton; FButtonHeight: Integer; FRealizedButtonHeight, FRealizedButtonWidth: integer; @@ -2257,6 +2264,7 @@ property OnDblClick; property OnDragDrop; property OnDragOver; + property OnPaintButton: TToolBarOnPaintButton read FOnPaintButton write FOnPaintButton; property OnEndDrag; property OnEnter; property OnExit; @@ -2268,6 +2276,7 @@ property OnMouseWheel; property OnMouseWheelDown; property OnMouseWheelUp; + property OnPaint: TNotifyEvent read FOnPaint write FOnPaint; property OnResize; property OnChangeBounds; property OnStartDrag; @@ -2754,6 +2763,8 @@ var DefaultDraw: Boolean) of object; TTVCustomDrawItemEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean) of object; + TTVCustomDrawArrowEvent = procedure(Sender: TCustomTreeView; + const ARect: TRect; ACollapsed: Boolean) of object; TTVAdvancedCustomDrawEvent = procedure(Sender: TCustomTreeView; const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean) of object; @@ -3005,6 +3016,7 @@ private FCount: integer; FSelection: TFPList; + FStartMultiSelected: TTreeNode; // node where user started multiselection FFirstMultiSelected: TTreeNode; FLastMultiSelected: TTreeNode; FKeepCollapsedNodes: boolean; @@ -3085,6 +3097,7 @@ procedure FreeAllNodeData; procedure SelectionsChanged(ANode: TTreeNode; const AIsSelected: Boolean); procedure SelectOnlyThis(Node: TTreeNode); + procedure MultiSelect(Node: TTreeNode; ClearWholeSelection: Boolean); procedure SortTopLevelNodes(SortProc: TTreeNodeCompare); procedure WriteDebugReport(const Prefix: string; AllNodes: boolean); property Count: Integer read GetCount; @@ -3156,7 +3169,8 @@ TTreeViewExpandSignType = ( tvestTheme, // use themed sign tvestPlusMinus, // use +/- sign - tvestArrow // use arrow + tvestArrow, // use blank arrow + tvestArrowFill // use filled arrow ); TTreeViewInsertMarkType = ( @@ -3203,6 +3217,7 @@ FOnCustomCreateItem: TTVCustomCreateNodeEvent; FOnCustomDraw: TTVCustomDrawEvent; FOnCustomDrawItem: TTVCustomDrawItemEvent; + FOnCustomDrawArrow: TTVCustomDrawArrowEvent; FOnDeletion: TTVExpandedEvent; FOnEditing: TTVEditingEvent; FOnEditingEnd: TTVEditingEndEvent; @@ -3220,6 +3235,8 @@ FScrolledLeft: integer; // horizontal scrolled pixels (hidden pixels at left) FScrolledTop: integer; // vertical scrolled pixels (hidden pixels at top) FSelectedColor: TColor; + FSelectedFontColor: TColor; + FSelectedFontColorUsed: boolean; FSelectedNode: TTreeNode; FSelectionChangeEventLock: integer; fSeparatorColor: TColor; @@ -3232,6 +3249,7 @@ FTreeLinePenStyle: TPenStyle; FExpandSignColor : TColor; FTreeNodes: TTreeNodes; + FHintWnd: THintWindow; procedure CanvasChanged(Sender: TObject); function GetAutoExpand: boolean; function GetBottomItem: TTreeNode; @@ -3276,6 +3294,7 @@ procedure SetScrolledLeft(AValue: integer); procedure SetScrolledTop(AValue: integer); procedure SetSelectedColor(Value: TColor); + procedure SetSelectedFontColor(Value: TColor); procedure SetSelection(Value: TTreeNode); procedure SetSeparatorColor(const AValue: TColor); procedure SetShowButton(Value: Boolean); @@ -3295,6 +3314,7 @@ procedure UpdateMaxRight; procedure UpdateTopItem; procedure UpdateScrollbars; + procedure UpdateTooltip(X, Y: integer); procedure InternalSelectionChanged; protected FChangeTimer: TTimer; @@ -3328,11 +3348,13 @@ function IsNodeVisible(ANode: TTreeNode): Boolean; function IsNodeHeightFullVisible(ANode: TTreeNode): Boolean; function IsInsertMarkVisible: boolean; virtual; + procedure MoveSelection(ANewNode: TTreeNode; ASelect: Boolean); procedure Change(Node: TTreeNode); virtual; procedure Collapse(Node: TTreeNode); virtual; procedure CreateWnd; override; procedure Delete(Node: TTreeNode); virtual; procedure DestroyWnd; override; + procedure DoCreateNodeClass(var NewNodeClass: TTreeNodeClass); virtual; procedure DoEndDrag(Target: TObject; X, Y: Integer); override; function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; @@ -3399,8 +3421,8 @@ property OnCreateNodeClass: TTVCreateNodeClassEvent read FOnCreateNodeClass write FOnCreateNodeClass; property OnCustomCreateItem: TTVCustomCreateNodeEvent read FOnCustomCreateItem write FOnCustomCreateItem; property OnCustomDraw: TTVCustomDrawEvent read FOnCustomDraw write FOnCustomDraw; - property OnCustomDrawItem: TTVCustomDrawItemEvent - read FOnCustomDrawItem write FOnCustomDrawItem; + property OnCustomDrawItem: TTVCustomDrawItemEvent read FOnCustomDrawItem write FOnCustomDrawItem; + property OnCustomDrawArrow: TTVCustomDrawArrowEvent read FOnCustomDrawArrow write FOnCustomDrawArrow; property OnDeletion: TTVExpandedEvent read FOnDeletion write FOnDeletion; property OnEdited: TTVEditedEvent read FOnEdited write FOnEdited; property OnEditing: TTVEditingEvent read FOnEditing write FOnEditing; @@ -3466,8 +3488,12 @@ procedure ClearInvisibleSelection; function StoreCurrentSelection: TStringList; procedure ApplyStoredSelection(ASelection: TStringList; FreeList: boolean = True); - procedure MoveToNextNode; - procedure MoveToPrevNode; + procedure MoveToNextNode(ASelect: Boolean = False); + procedure MoveToPrevNode(ASelect: Boolean = False); + procedure MovePageDown(ASelect: Boolean = False); + procedure MovePageUp(ASelect: Boolean = False); + procedure MoveHome(ASelect: Boolean = False); + procedure MoveEnd(ASelect: Boolean = False); public property BackgroundColor: TColor read FBackgroundColor write SetBackgroundColor default clWindow; property BorderWidth default 0; @@ -3486,6 +3512,8 @@ property ScrollBars: TScrollStyle read FScrollBars write SetScrollBars default ssBoth; property Selected: TTreeNode read GetSelection write SetSelection; property SelectionColor: TColor read FSelectedColor write SetSelectedColor default clHighlight; + property SelectionFontColor: TColor read FSelectedFontColor write SetSelectedFontColor default clWhite; + property SelectionFontColorUsed: boolean read FSelectedFontColorUsed write FSelectedFontColorUsed default False; property SelectionCount: Cardinal read GetSelectionCount; property Selections[AIndex: Integer]: TTreeNode read GetSelections; property SeparatorColor: TColor read fSeparatorColor write SetSeparatorColor default clGray; @@ -3536,6 +3564,9 @@ property RowSelect; property ScrollBars; property SelectionColor; + property SelectionFontColor; + property SelectionFontColorUsed; + property SeparatorColor; property ShowButtons; property ShowHint; property ShowLines; @@ -3561,6 +3592,7 @@ property OnCustomCreateItem; property OnCustomDraw; property OnCustomDrawItem; + property OnCustomDrawArrow; property OnDblClick; property OnDeletion; property OnDragDrop; @@ -3981,4 +4013,6 @@ Done := True; end; +initialization + end. diff -Nru lazarus-1.4.4+dfsg/lcl/controls.pp lazarus-1.6+dfsg/lcl/controls.pp --- lazarus-1.4.4+dfsg/lcl/controls.pp 2015-09-02 22:44:23.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/controls.pp 2015-11-29 18:45:53.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: controls.pp 49745 2015-09-02 22:44:23Z maxim $ } +{ $Id: controls.pp 50523 2015-11-29 18:45:53Z juha $ } { /*************************************************************************** Controls.pp @@ -693,6 +693,10 @@ FRight: TSpacingSize; FTop: TSpacingSize; FDefault: PControlBorderSpacingDefault; + function GetControlHeight: Integer; + function GetControlLeft: Integer; + function GetControlTop: Integer; + function GetControlWidth: Integer; function IsAroundStored: boolean; function IsBottomStored: boolean; function IsInnerBorderStored: boolean; @@ -721,6 +725,10 @@ public property Control: TControl read FControl; property Space[Kind: TAnchorKind]: integer read GetSpace write SetSpace; + property ControlLeft: Integer read GetControlLeft; + property ControlTop: Integer read GetControlTop; + property ControlWidth: Integer read GetControlWidth; + property ControlHeight: Integer read GetControlHeight; published property OnChange: TNotifyEvent read FOnChange write FOnChange; property Left: TSpacingSize read FLeft write SetLeft stored IsLeftStored; @@ -2113,7 +2121,7 @@ property DoubleBuffered: Boolean read FDoubleBuffered write FDoubleBuffered default False; property Handle: HWND read GetHandle write SetHandle; property IsResizing: Boolean read GetIsResizing; - property TabOrder: TTabOrder read GetTabOrder write SetTaborder default -1; + property TabOrder: TTabOrder read GetTabOrder write SetTabOrder default -1; property TabStop: Boolean read FTabStop write SetTabStop default false; property OnAlignInsertBefore: TAlignInsertBeforeEvent read FOnAlignInsertBefore write FOnAlignInsertBefore; property OnAlignPosition: TAlignPositionEvent read FOnAlignPosition write FOnAlignPosition; @@ -2155,6 +2163,7 @@ procedure DisableAlign; procedure EnableAlign; procedure ReAlign; // realign all children + procedure ScrollBy_WS(DeltaX, DeltaY: Integer); procedure ScrollBy(DeltaX, DeltaY: Integer); virtual; procedure WriteLayoutDebugReport(const Prefix: string); override; procedure AutoAdjustLayout(AMode: TLayoutAdjustmentPolicy; @@ -2166,6 +2175,7 @@ destructor Destroy; override; procedure DockDrop(DragDockObject: TDragDockObject; X, Y: Integer); virtual; function CanFocus: Boolean; virtual; + function CanSetFocus: Boolean; virtual; function GetControlIndex(AControl: TControl): integer; procedure SetControlIndex(AControl: TControl; NewIndex: integer); function Focused: Boolean; virtual; @@ -2494,7 +2504,6 @@ TMouse = class private - FCapture: HWND; FWheelScrollLines: Integer; procedure SetCapture(const Value: HWND); function GetCapture: HWND; @@ -3171,7 +3180,7 @@ DeadCursors = 1; const - Cursors: array[0..22] of TIdentMapEntry = ( + CursorIdents: array[0..30] of TIdentMapEntry = ( (Value: crDefault; Name: 'crDefault'), (Value: crNone; Name: 'crNone'), (Value: crArrow; Name: 'crArrow'), @@ -3181,6 +3190,14 @@ (Value: crSizeNS; Name: 'crSizeNS'), (Value: crSizeNWSE; Name: 'crSizeNWSE'), (Value: crSizeWE; Name: 'crSizeWE'), + (Value: crSizeNW; Name: 'crSizeNW'), + (Value: crSizeN; Name: 'crSizeN'), + (Value: crSizeNE; Name: 'crSizeNE'), + (Value: crSizeW; Name: 'crSizeW'), + (Value: crSizeE; Name: 'crSizeE'), + (Value: crSizeSW; Name: 'crSizeSW'), + (Value: crSizeS; Name: 'crSizeS'), + (Value: crSizeSE; Name: 'crSizeSE'), (Value: crUpArrow; Name: 'crUpArrow'), (Value: crHourGlass; Name: 'crHourGlass'), (Value: crDrag; Name: 'crDrag'), @@ -3216,17 +3233,18 @@ var I: Integer; begin - for I := Low(Cursors) to High(Cursors) - DeadCursors do Proc(Cursors[I].Name); + for I := Low(CursorIdents) to High(CursorIdents) - DeadCursors do + Proc(CursorIdents[I].Name); end; function CursorToIdent(Cursor: Longint; var Ident: string): Boolean; begin - Result := IntToIdent(Cursor, Ident, Cursors); + Result := IntToIdent(Cursor, Ident, CursorIdents); end; function IdentToCursor(const Ident: string; var Cursor: Longint): Boolean; begin - Result := IdentToInt(Ident, Cursor, Cursors); + Result := IdentToInt(Ident, Cursor, CursorIdents); end; // turn off before includes !! @@ -3454,6 +3472,38 @@ if Assigned(OnChange) then OnChange(Self); end; +function TControlBorderSpacing.GetControlHeight: Integer; +begin + if FControl<>nil then + Result := FControl.Height+Around*2+Top+Bottom + else + Result := 0; +end; + +function TControlBorderSpacing.GetControlLeft: Integer; +begin + if FControl<>nil then + Result := FControl.Left-Around-Left + else + Result := 0; +end; + +function TControlBorderSpacing.GetControlTop: Integer; +begin + if FControl<>nil then + Result := FControl.Top-Around-Top + else + Result := 0; +end; + +function TControlBorderSpacing.GetControlWidth: Integer; +begin + if FControl<>nil then + Result := FControl.Width+Around*2+Left+Right + else + Result := 0; +end; + { TControlChildSizing } procedure TControlChildSizing.SetEnlargeHorizontal( Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/lcl/cursor_hourglass.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/lcl/cursor_hourglass.res differ diff -Nru lazarus-1.4.4+dfsg/lcl/customdrawn_android.pas lazarus-1.6+dfsg/lcl/customdrawn_android.pas --- lazarus-1.4.4+dfsg/lcl/customdrawn_android.pas 2014-05-27 13:27:55.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/customdrawn_android.pas 2015-08-01 06:28:38.000000000 +0000 @@ -1,4 +1,4 @@ -unit customdrawn_android; +unit CustomDrawn_Android; {$mode objfpc}{$H+} { $define CD_UseImageResources} @@ -67,7 +67,7 @@ // Standard Tab // =================================== // TCDButton - procedure DrawButton(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); override; // TCDEdit procedure DrawEditBackground(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; @@ -532,6 +532,7 @@ function TCDDrawerAndroid.GetMeasures(AMeasureID: Integer): Integer; begin + Result := 0; case AMeasureID of { TCDEDIT_LEFT_TEXT_SPACING: Result := 4; TCDEDIT_RIGHT_TEXT_SPACING: Result := 3; @@ -543,6 +544,8 @@ // TCDRADIOBUTTON_CIRCLE_HEIGHT: Result := DPIAdjustment(20); // Must be dividable by 4 // + TCDCOMBOBOX_DEFAULT_HEIGHT: Result := 50; + // { TCDSCROLLBAR_BUTTON_WIDTH: Result := 17; TCDSCROLLBAR_LEFT_SPACING: Result := 17; TCDSCROLLBAR_RIGHT_SPACING: Result := 17; @@ -569,7 +572,7 @@ end; -procedure TCDDrawerAndroid.DrawButton(ADest: TFPCustomCanvas; ASize: TSize; +procedure TCDDrawerAndroid.DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); var lDest: TCanvas absolute ADest; diff -Nru lazarus-1.4.4+dfsg/lcl/customdrawn_common.pas lazarus-1.6+dfsg/lcl/customdrawn_common.pas --- lazarus-1.4.4+dfsg/lcl/customdrawn_common.pas 2014-09-07 16:30:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/customdrawn_common.pas 2015-08-01 06:28:38.000000000 +0000 @@ -1,4 +1,4 @@ -unit customdrawn_common; +unit CustomDrawn_Common; {$mode objfpc}{$H+} @@ -30,7 +30,7 @@ AState: TCDControlState; AStateEx: TCDControlStateEx): Integer; override; procedure CalculatePreferredSize(ADest: TCanvas; AControlId: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx; - var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override; + var PreferredWidth, PreferredHeight: integer; WithThemeSpace, AAllowUseOfMeasuresEx: Boolean); override; function GetColor(AColorID: Integer): TColor; override; function GetClientArea(ADest: TCanvas; ASize: TSize; AControlId: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx): TRect; override; @@ -55,7 +55,7 @@ // Standard Tab // =================================== // TCDButton - procedure DrawButton(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); override; // TCDEdit procedure DrawEditBackground(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; @@ -83,7 +83,7 @@ procedure DrawScrollBar(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDPositionedCStateEx); override; // TCDGroupBox - procedure DrawGroupBox(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawGroupBox(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); override; // TCDPanel procedure DrawPanel(ADest: TCanvas; ASize: TSize; @@ -109,6 +109,12 @@ AState: TCDControlState; AStateEx: TCDListViewStateEx); override; procedure DrawReportListViewItem(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; ACurItem: TCDListItems; AState: TCDControlState; AStateEx: TCDListViewStateEx); override; + // TCDToolBar + procedure DrawToolBar(ADest: TCanvas; ASize: TSize; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); override; + procedure DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); override; // TCDCustomTabControl procedure DrawCTabControl(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDCTabControlStateEx); override; @@ -206,6 +212,8 @@ TCDCHECKBOX_SQUARE_HALF_HEIGHT: Result := Floor(GetMeasures(TCDCHECKBOX_SQUARE_HEIGHT)/2); TCDCHECKBOX_SQUARE_HEIGHT: Result := DPIAdjustment(15); // + TCDCOMBOBOX_DEFAULT_HEIGHT: Result := 21; + // TCDRADIOBUTTON_CIRCLE_HEIGHT: Result := 15; // TCDSCROLLBAR_BUTTON_WIDTH: Result := 17; @@ -225,6 +233,13 @@ TCDLISTVIEW_LINE_TOP_SPACING: Result := 3; TCDLISTVIEW_LINE_BOTTOM_SPACING: Result := 3; // + TCDTOOLBAR_ITEM_SPACING: Result := 2; + TCDTOOLBAR_ITEM_ARROW_WIDTH: Result := 7; + TCDTOOLBAR_ITEM_BUTTON_DEFAULT_WIDTH: Result := 23; + TCDTOOLBAR_ITEM_ARROW_RESERVED_WIDTH: Result := 35 - 23; + TCDTOOLBAR_ITEM_SEPARATOR_DEFAULT_WIDTH: Result := 8; + TCDTOOLBAR_DEFAULT_HEIGHT: Result := 26; + // TCDCTABCONTROL_CLOSE_TAB_BUTTON_WIDTH: Result := 10; TCDCTABCONTROL_CLOSE_TAB_BUTTON_EXTRA_SPACING: Result := 10; else @@ -299,7 +314,7 @@ procedure TCDDrawerCommon.CalculatePreferredSize(ADest: TCanvas; AControlId: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx; var PreferredWidth, PreferredHeight: integer; - WithThemeSpace: Boolean); + WithThemeSpace, AAllowUseOfMeasuresEx: Boolean); begin PreferredWidth := 0; PreferredHeight := 0; @@ -308,17 +323,27 @@ // In the LCL TEdit AutoSizes only its Height, so follow this here cidEdit: PreferredHeight := GetMeasuresEx(ADest, TCDCONTROL_CAPTION_HEIGHT, AState, AStateEx)+8; cidCheckBox, cidRadioButton: + begin + if AStateEx.AutoSize and AAllowUseOfMeasuresEx then begin - if AStateEx.AutoSize then begin - PreferredWidth := GetMeasures(TCDCHECKBOX_SQUARE_HEIGHT); - PreferredWidth := PreferredWidth - + GetMeasuresEx(ADest, TCDCONTROL_CAPTION_WIDTH, AState, AStateEx) + 6; - end; - - PreferredHeight := - Max(GetMeasuresEx(ADest, TCDCONTROL_CAPTION_HEIGHT, AState, AStateEx), - GetMeasures(TCDCHECKBOX_SQUARE_HEIGHT)); + PreferredWidth := GetMeasures(TCDCHECKBOX_SQUARE_HEIGHT); + PreferredWidth := PreferredWidth + + GetMeasuresEx(ADest, TCDCONTROL_CAPTION_WIDTH, AState, AStateEx) + 6; end; + + PreferredHeight := GetMeasures(TCDCHECKBOX_SQUARE_HEIGHT); + if AAllowUseOfMeasuresEx then + PreferredHeight := Max(PreferredHeight, + GetMeasuresEx(ADest, TCDCONTROL_CAPTION_HEIGHT, AState, AStateEx)); + end; + // In the LCL TComboBox AutoSizes only its Height, so follow this here + cidComboBox: + begin + PreferredHeight := GetMeasures(TCDCOMBOBOX_DEFAULT_HEIGHT); + if AAllowUseOfMeasuresEx then + PreferredHeight := Max(PreferredHeight, + GetMeasuresEx(ADest, TCDCONTROL_CAPTION_HEIGHT, AState, AStateEx)); + end; end; end; @@ -677,7 +702,7 @@ end; procedure TCDDrawerCommon.DrawButton(ADest: TFPCustomCanvas; - ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); + ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); var Str: string; lGlyphLeftSpacing: Integer = 0; @@ -833,6 +858,7 @@ lLineTop := lTextTopSpacing + AStateEx.CaretPos.Y * lLineHeight; lTmpText := UTF8Copy(lControlText, AStateEx.VisibleTextStart.X, AStateEx.CaretPos.X-AStateEx.VisibleTextStart.X+1); + lTmpText := VisibleText(lTmpText, AStateEx.PasswordChar); lCaretPixelPos := ADest.TextWidth(lTmpText) + GetMeasures(TCDEDIT_LEFT_TEXT_SPACING) + AStateEx.LeftTextMargin; ADest.Pen.Color := clBlack; @@ -889,6 +915,7 @@ for i := 0 to lVisibleLinesCount - 1 do begin lControlText := AStateEx.Lines.Strings[AStateEx.VisibleTextStart.Y+i]; + lControlText := VisibleText(lControlText, AStateEx.PasswordChar); lControlTextLen := UTF8Length(lControlText); lLineTop := lTextTopSpacing + i * lLineHeight; @@ -1248,7 +1275,7 @@ end; procedure TCDDrawerCommon.DrawGroupBox(ADest: TFPCustomCanvas; - ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); + ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); var FCaptionMiddle: integer = 0; lTextSize: TSize; @@ -1611,6 +1638,111 @@ ACurItem.Caption); end; +procedure TCDDrawerCommon.DrawToolBar(ADest: TCanvas; ASize: TSize; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); +var + lX, lY, lX2: Integer; + lItemSize: TSize; + i: Integer; + lCurItem: TCDToolBarItem; + lItemState: TCDControlState = []; +begin + // Background + ADest.Pen.Style := psSolid; + ADest.Pen.Color := AStateEx.ParentRGBColor; + ADest.Brush.Style := bsSolid; + ADest.Brush.Color := AStateEx.ParentRGBColor; + ADest.Rectangle(0, 0, ASize.cx, ASize.cy); + + // Items + lX := GetMeasures(TCDTOOLBAR_ITEM_SPACING); + lY := GetMeasures(TCDTOOLBAR_ITEM_SPACING); + lItemSize.CY := AStateEx.ToolBarHeight - GetMeasures(TCDTOOLBAR_ITEM_SPACING) * 2; + for i := 0 to AStateEx.Items.Count-1 do + begin + lCurItem := TCDToolBarItem(AStateEx.Items[i]); + + // make space for the arrow if necessary + if lCurItem.Kind = tikDropDownButton then + lItemSize.CX := lCurItem.Width - GetMeasures(TCDTOOLBAR_ITEM_ARROW_RESERVED_WIDTH) + else + lItemSize.CX := lCurItem.Width; + + lCurItem.SubpartKind := tiskMain; + DrawToolBarItem(ADest, lItemSize, lCurItem, lX, lY, lCurItem.State, AStateEx); + + if lCurItem.Kind = tikDropDownButton then + begin + lCurItem.SubpartKind := tiskArrow; + lX2 := lX + lCurItem.Width - GetMeasures(TCDTOOLBAR_ITEM_ARROW_RESERVED_WIDTH); + lItemSize.CX := GetMeasures(TCDTOOLBAR_ITEM_ARROW_RESERVED_WIDTH); + DrawToolBarItem(ADest, lItemSize, lCurItem, lX2, lY, lCurItem.State, AStateEx); + end; + + lX := lX + lCurItem.Width; + end; +end; + +procedure TCDDrawerCommon.DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; AState: TCDControlState; AStateEx: TCDToolBarStateEx); +var + lX, lY1, lY2: Integer; + + procedure DrawToolBarItemBorder(); + begin + ADest.Pen.Style := psSolid; + ADest.Pen.Color := $AFAFAF; + ADest.Brush.Style := bsClear; + ADest.Rectangle(Bounds(AX, AY, ASize.cx, ASize.cy)); + end; + +begin + // tikDivider is centralized, tikSeparator is left-aligned + case ACurItem.Kind of + tikSeparator, tikDivider: + begin + lX := AX; + if ACurItem.Kind = tikDivider then + lX := AX + ASize.CX div 2 - 1; + + lY1 := AY; + lY2 := AY+ASize.CY; + + ADest.Pen.Style := psSolid; + ADest.Pen.Color := $DCDEE1; + ADest.Line(lX+1, lY1, lX+1, lY2); + ADest.Line(lX+3, lY1, lX+3, lY2); + ADest.Pen.Style := psSolid; + ADest.Pen.Color := $93979E; + ADest.Line(lX+2, lY1, lX+2, lY2); + end; + tikButton, tikCheckButton, tikDropDownButton: + begin + if ACurItem.SubpartKind = tiskArrow then + begin + // Centralize the arrow in the available space + lX := AX + ASize.CX div 2 - GetMeasures(TCDTOOLBAR_ITEM_ARROW_WIDTH) div 2; + lY1 := AY + ASize.CY div 2 - GetMeasures(TCDTOOLBAR_ITEM_ARROW_WIDTH) div 2; + DrawArrow(ADest, Point(lX, lY1), [csfDownArrow], GetMeasures(TCDTOOLBAR_ITEM_ARROW_WIDTH)); + Exit; + end; + + if csfSunken in AState then + begin + ADest.GradientFill(Bounds(AX, AY, ASize.CX, ASize.CY), + $C4C4C4, $DBDBDB, gdVertical); + DrawToolBarItemBorder(); + end + else if csfMouseOver in AState then + begin + ADest.GradientFill(Bounds(AX, AY, ASize.CX, ASize.CY), + $E3E3E3, $F7F7F7, gdVertical); + DrawToolBarItemBorder(); + end; + end; + end; +end; + procedure TCDDrawerCommon.DrawCTabControl(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDCTabControlStateEx); begin diff -Nru lazarus-1.4.4+dfsg/lcl/customdrawncontrols.pas lazarus-1.6+dfsg/lcl/customdrawncontrols.pas --- lazarus-1.4.4+dfsg/lcl/customdrawncontrols.pas 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/customdrawncontrols.pas 2015-08-01 06:28:38.000000000 +0000 @@ -7,7 +7,7 @@ such as a custom drawn version of TButton, of TEdit, of TPageControl, etc, eventually forming a full set of custom drawn components. } -unit customdrawncontrols; +unit CustomDrawnControls; {$mode objfpc}{$H+} @@ -21,10 +21,10 @@ // FPC Classes, SysUtils, contnrs, Math, types, // LazUtils - lazutf8, + LazUTF8, // LCL -> Use only TForm, TWinControl, TCanvas, TLazIntfImage - Graphics, Controls, LCLType, LCLIntf, LCLMessageGlue, - LMessages, Messages, LCLProc, Forms, + LCLType, LCLProc, LCLIntf, LCLMessageGlue, LMessages, Messages, + Forms, Graphics, Controls, // Other LCL units are only for types StdCtrls, ExtCtrls, ComCtrls, Buttons, // @@ -63,7 +63,7 @@ constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure LCLWSCalculatePreferredSize(var PreferredWidth, - PreferredHeight: integer; WithThemeSpace, AAutoSize: Boolean); + PreferredHeight: integer; WithThemeSpace, AAutoSize, AAllowUseOfMeasuresEx: Boolean); procedure EraseBackground(DC: HDC); override; procedure Paint; override; // Methods for use by LCL-CustomDrawn @@ -205,6 +205,8 @@ function GetLeftTextMargin: Integer; function GetMultiLine: Boolean; function GetRightTextMargin: Integer; + function GetText: string; + function GetPasswordChar: Char; procedure HandleCaretTimer(Sender: TObject); procedure DoDeleteSelection; procedure DoClearSelection; @@ -214,6 +216,8 @@ procedure SetLines(AValue: TStrings); procedure SetMultiLine(AValue: Boolean); procedure SetRightTextMargin(AValue: Integer); + procedure SetText(AValue: string); + procedure SetPasswordChar(AValue: Char); function MousePosToCaretPos(X, Y: Integer): TPoint; function IsSomethingSelected: Boolean; protected @@ -258,8 +262,10 @@ property Enabled; property Lines: TStrings read FLines write SetLines; property MultiLine: Boolean read GetMultiLine write SetMultiLine default False; + property PasswordChar: Char read GetPasswordChar write SetPasswordChar default #0; property ReadOnly: Boolean read FReadOnly write FReadOnly default False; property TabStop default True; + property Text : string read GetText write SetText stored false; // This is already stored in Lines property OnChange: TNotifyEvent read FOnChange write FOnChange; end; @@ -603,6 +609,40 @@ property ViewStyle: TViewStyle read FViewStyle write SetViewStyle default vsList; end; + { TCDToolBar } + + TCDToolBar = class(TCDControl) + private + // fields + FShowCaptions: Boolean; + FItems: TFPList; + procedure SetShowCaptions(AValue: Boolean); + protected + FTBState: TCDToolBarStateEx; + function GetControlId: TCDControlID; override; + procedure CreateControlStateEx; override; + procedure PrepareControlStateEx; override; + // mouse + procedure MouseMove(Shift: TShiftState; X, Y: integer); override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: integer); override; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: integer); override; + procedure MouseLeave; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + function InsertItem(AKind: TCDToolbarItemKind; AIndex: Integer): TCDToolBarItem; + function AddItem(AKind: TCDToolbarItemKind): TCDToolBarItem; + procedure DeleteItem(AIndex: Integer); + function GetItem(AIndex: Integer): TCDToolBarItem; + function GetItemCount(): Integer; + function GetItemWithMousePos(APosInControl: TPoint): TCDToolBarItem; + function IsPosInButton(APosInControl: TPoint; AItem: TCDToolBarItem; AItemX: Integer): Boolean; + published + property ShowCaptions: Boolean read FShowCaptions write SetShowCaptions; + property DrawStyle; + end; + { TCDTabControl } { TCDCustomTabControl } @@ -776,7 +816,7 @@ PrepareControlState; PrepareControlStateEx; FDrawer.CalculatePreferredSize(Canvas, GetControlId(), FState, FStateEx, - PreferredWidth, PreferredHeight, WithThemeSpace); + PreferredWidth, PreferredHeight, WithThemeSpace, True); end; procedure TCDControl.SetState(const AValue: TCDControlState); @@ -887,7 +927,7 @@ lControlId := GetControlId(); PrepareControlState; PrepareControlStateEx; - FDrawer.DrawControl(ACanvas, lSize, lControlId, FState, FStateEx); + FDrawer.DrawControl(ACanvas, Point(0, 0), lSize, lControlId, FState, FStateEx); end; procedure TCDControl.MouseEnter; @@ -927,13 +967,13 @@ // A CalculatePreferredSize which is utilized by LCL-CustomDrawn procedure TCDControl.LCLWSCalculatePreferredSize(var PreferredWidth, - PreferredHeight: integer; WithThemeSpace, AAutoSize: Boolean); + PreferredHeight: integer; WithThemeSpace, AAutoSize, AAllowUseOfMeasuresEx: Boolean); begin PrepareControlState; PrepareControlStateEx; FStateEx.AutoSize := AAutoSize; FDrawer.CalculatePreferredSize(Canvas, GetControlId(), FState, FStateEx, - PreferredWidth, PreferredHeight, WithThemeSpace); + PreferredWidth, PreferredHeight, WithThemeSpace, AAllowUseOfMeasuresEx); end; { TCDComboBox } @@ -1017,7 +1057,7 @@ begin // Call the combobox dialog LCLIntf.OnShowSelectItemDialogResult := @OnShowSelectItemDialogResult; - LCLIntf.ShowSelectItemDialog(FItems); + LCLIntf.ShowSelectItemDialog(FItems, Self.ClientToScreen(Point(Left, Top+Height))); Exit; end; @@ -1421,6 +1461,18 @@ Invalidate; end; +procedure TCDEdit.SetText(AValue: string); +begin + Lines.Text := aValue; +end; + +procedure TCDEdit.SetPasswordChar(AValue: Char); +begin + if AValue=FEditState.PasswordChar then Exit; + FEditState.PasswordChar := AValue; + Invalidate; +end; + function TCDEdit.GetControlId: TCDControlID; begin Result := cidEdit; @@ -1476,6 +1528,21 @@ Result := FEditState.RightTextMargin; end; +function TCDEdit.GetText: string; +begin + if Multiline then + result := Lines.Text + else if Lines.Count = 0 then + result := '' + else + result := Lines[0]; +end; + +function TCDEdit.GetPasswordChar: Char; +begin + Result := FEditState.PasswordChar; +end; + procedure TCDEdit.DoDeleteSelection; var lSelLeftPos, lSelRightPos, lSelLength: Integer; @@ -1492,10 +1559,10 @@ lControlText := GetCurrentLine(); // Text left of the selection - lTextLeft := UTF8Copy(lControlText, FEditState.VisibleTextStart.X, lSelLeftPos-FEditState.VisibleTextStart.X+1); + lTextLeft := LazUTF8.UTF8Copy(lControlText, FEditState.VisibleTextStart.X, lSelLeftPos-FEditState.VisibleTextStart.X+1); // Text right of the selection - lTextRight := UTF8Copy(lControlText, lSelLeftPos+lSelLength+1, Length(lControlText)); + lTextRight := LazUTF8.UTF8Copy(lControlText, lSelLeftPos+lSelLength+1, Length(lControlText)); // Execute the deletion SetCurrentLine(lTextLeft + lTextRight); @@ -1527,7 +1594,7 @@ // Moved to the right and we need to adjust the text start lLineText := GetCurrentLine(); - lVisibleText := UTF8Copy(lLineText, FEditState.VisibleTextStart.X, Length(lLineText)); + lVisibleText := LazUTF8.UTF8Copy(lLineText, FEditState.VisibleTextStart.X, Length(lLineText)); lAvailableWidth := Width - FDrawer.GetMeasures(TCDEDIT_LEFT_TEXT_SPACING) - FDrawer.GetMeasures(TCDEDIT_RIGHT_TEXT_SPACING); @@ -1541,7 +1608,7 @@ FEditState.VisibleTextStart.Y := Max(FEditState.CaretPos.Y-FEditState.FullyVisibleLinesCount, FEditState.VisibleTextStart.Y); // Impose limits in the caret too - FEditState.CaretPos.X := Min(FEditState.CaretPos.X, UTF8Length(lLineText)); + FEditState.CaretPos.X := Min(FEditState.CaretPos.X, LazUTF8.UTF8Length(lLineText)); FEditState.CaretPos.Y := Min(FEditState.CaretPos.Y, FEditState.Lines.Count-1); FEditState.CaretPos.Y := Max(FEditState.CaretPos.Y, 0); end; @@ -1578,9 +1645,11 @@ // Find the best X position Canvas.Font := Font; lVisibleStr := FLines.Strings[Result.Y]; - lVisibleStr := UTF8Copy(lVisibleStr, FEditState.VisibleTextStart.X, Length(lVisibleStr)); - lStrLen := UTF8Length(lVisibleStr); + lVisibleStr := LazUTF8.UTF8Copy(lVisibleStr, FEditState.VisibleTextStart.X, Length(lVisibleStr)); + lVisibleStr := TCDDrawer.VisibleText(lVisibleStr, FEditState.PasswordChar); + lStrLen := LazUTF8.UTF8Length(lVisibleStr); lPos := FDrawer.GetMeasures(TCDEDIT_LEFT_TEXT_SPACING); + lBestMatch := 0; for i := 0 to lStrLen do begin lCurDiff := X - lPos; @@ -1598,7 +1667,7 @@ if i <> lStrLen then begin - lCurChar := UTF8Copy(lVisibleStr, i+1, 1); + lCurChar := LazUTF8.UTF8Copy(lVisibleStr, i+1, 1); lCurCharLen := Canvas.TextWidth(lCurChar); lPos := lPos + lCurCharLen; end; @@ -1637,7 +1706,7 @@ inherited KeyDown(Key, Shift); lOldText := GetCurrentLine(); - lOldTextLength := UTF8Length(lOldText); + lOldTextLength := LazUTF8.UTF8Length(lOldText); FEditState.SelStart.Y := FEditState.CaretPos.Y;//ToDo: Change this when proper multi-line selection is implemented case Key of @@ -1650,8 +1719,8 @@ // Normal backspace else if FEditState.CaretPos.X > 0 then begin - lLeftText := UTF8Copy(lOldText, 1, FEditState.CaretPos.X-1); - lRightText := UTF8Copy(lOldText, FEditState.CaretPos.X+1, lOldTextLength); + lLeftText := LazUTF8.UTF8Copy(lOldText, 1, FEditState.CaretPos.X-1); + lRightText := LazUTF8.UTF8Copy(lOldText, FEditState.CaretPos.X+1, lOldTextLength); SetCurrentLine(lLeftText + lRightText); Dec(FEditState.CaretPos.X); DoManageVisibleTextStart(); @@ -1667,8 +1736,8 @@ // Normal delete else if FEditState.CaretPos.X < lOldTextLength then begin - lLeftText := UTF8Copy(lOldText, 1, FEditState.CaretPos.X); - lRightText := UTF8Copy(lOldText, FEditState.CaretPos.X+2, lOldTextLength); + lLeftText := LazUTF8.UTF8Copy(lOldText, 1, FEditState.CaretPos.X); + lRightText := LazUTF8.UTF8Copy(lOldText, FEditState.CaretPos.X+2, lOldTextLength); SetCurrentLine(lLeftText + lRightText); Invalidate; end; @@ -1845,8 +1914,8 @@ else begin // Get the two halves of the text separated by the cursor - lLeftText := UTF8Copy(lOldText, 1, FEditState.CaretPos.X); - lRightText := UTF8Copy(lOldText, FEditState.CaretPos.X+1, lOldTextLength); + lLeftText := LazUTF8.UTF8Copy(lOldText, 1, FEditState.CaretPos.X); + lRightText := LazUTF8.UTF8Copy(lOldText, FEditState.CaretPos.X+1, lOldTextLength); // Move the right part to a new line SetCurrentLine(lLeftText); FLines.Insert(FEditState.CaretPos.Y+1, lRightText); @@ -1859,7 +1928,11 @@ lKeyWasProcessed := False; end; // case - if lKeyWasProcessed then FEditState.EventArrived := True; + if lKeyWasProcessed then + begin + FEditState.EventArrived := True; + Key := 0; + end; end; procedure TCDEdit.KeyUp(var Key: word; Shift: TShiftState); @@ -1896,8 +1969,8 @@ // Normal characters lOldText := GetCurrentLine(); - lLeftText := UTF8Copy(lOldText, 1, FEditState.CaretPos.X); - lRightText := UTF8Copy(lOldText, FEditState.CaretPos.X+1, UTF8Length(lOldText)); + lLeftText := LazUTF8.UTF8Copy(lOldText, 1, FEditState.CaretPos.X); + lRightText := LazUTF8.UTF8Copy(lOldText, FEditState.CaretPos.X+1, LazUTF8.UTF8Length(lOldText)); SetCurrentLine(lLeftText + UTF8Key + lRightText); Inc(FEditState.CaretPos.X); DoManageVisibleTextStart(); @@ -1966,6 +2039,7 @@ FLines := TStringList.Create; FEditState.VisibleTextStart := Point(1, 0); FEditState.Lines := FLines; + FEditState.PasswordChar := #0; // Caret code FCaretTimer := TTimer.Create(Self); @@ -2350,6 +2424,7 @@ begin inherited KeyDown(Key, Shift); + NewPosition := 0; if (Key = VK_LEFT) or (Key = VK_DOWN) then NewPosition := FPosition - FSmallChange; if (Key = VK_UP) or (Key = VK_RIGHT) then @@ -2841,6 +2916,195 @@ inherited Destroy; end; +{ TCDToolBar } + +procedure TCDToolBar.SetShowCaptions(AValue: Boolean); +begin + if FShowCaptions = AValue then Exit; + FShowCaptions := AValue; + if not (csLoading in ComponentState) then Invalidate; +end; + +function TCDToolBar.GetControlId: TCDControlID; +begin + Result := cidToolBar; +end; + +procedure TCDToolBar.CreateControlStateEx; +begin + FTBState := TCDToolBarStateEx.Create; + FStateEx := FTBState; +end; + +procedure TCDToolBar.PrepareControlStateEx; +var + i, lX: Integer; + lCursorPos: TPoint; + lCurItem: TCDToolBarItem; +begin + inherited PrepareControlStateEx; + FTBState.ShowCaptions := FShowCaptions; + FTBState.Items := FItems; + FTBState.ToolBarHeight := Height; + + // Handle mouse over items + lCursorPos := Mouse.CursorPos; + lCursorPos := ScreenToClient(lCursorPos); + lX := 0; + for i := 0 to GetItemCount()-1 do + begin + lCurItem := GetItem(i); + lCurItem.State := lCurItem.State - [csfMouseOver]; + if IsPosInButton(lCursorPos, lCurItem, lX) then + lCurItem.State := lCurItem.State + [csfMouseOver]; + if lCurItem.Down then + lCurItem.State := lCurItem.State + [csfSunken]; + lX := lX + lCurItem.Width; + end; +end; + +procedure TCDToolBar.MouseMove(Shift: TShiftState; X, Y: integer); +begin + inherited MouseMove(Shift, X, Y); + Invalidate; +end; + +procedure TCDToolBar.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: integer); +var + lCurItem: TCDToolBarItem; +begin + inherited MouseDown(Button, Shift, X, Y); + lCurItem := GetItemWithMousePos(Point(X, Y)); + if lCurItem = nil then Exit; + if lCurItem.Kind in [tikButton, tikCheckButton] then + begin + lCurItem.State := lCurItem.State + [csfSunken]; + Invalidate(); + end; +end; + +procedure TCDToolBar.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: integer); +var + i: Integer; + lCurItem: TCDToolBarItem; + DoInvalidate: Boolean = False; +begin + inherited MouseUp(Button, Shift, X, Y); + lCurItem := GetItemWithMousePos(Point(X, Y)); + if lCurItem = nil then Exit; + + // click the selected checkbutton if applicable + if lCurItem.Kind in [tikCheckButton] then + begin + lCurItem.Down := not lCurItem.Down; + DoInvalidate := True; + end; + + // up all buttons + for i := 0 to GetItemCount()-1 do + begin + lCurItem := GetItem(i); + if lCurItem.Kind in [tikButton, tikCheckButton] then + begin + lCurItem.State := lCurItem.State - [csfSunken]; + DoInvalidate := True; + end; + end; + + if DoInvalidate then Invalidate; +end; + +procedure TCDToolBar.MouseLeave; +begin + inherited MouseLeave; + Invalidate; +end; + +constructor TCDToolBar.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + Height := GetDrawer(dsDefault).GetMeasures(TCDTOOLBAR_DEFAULT_HEIGHT); + Align := alTop; + FItems := TFPList.Create(); + TabStop := False; +end; + +destructor TCDToolBar.Destroy; +begin + while FItems.Count > 0 do + DeleteItem(0); + FItems.Free; + inherited Destroy; +end; + +function TCDToolBar.InsertItem(AKind: TCDToolbarItemKind; AIndex: Integer): TCDToolBarItem; +var + lNewItem: TCDToolBarItem; +begin + lNewItem := TCDToolBarItem.Create; + lNewItem.Kind := AKind; + FItems.Insert(AIndex, lNewItem); + Result := lNewItem; + PrepareCurrentDrawer(); + case AKind of + tikButton, tikCheckButton: Result.Width := FDrawer.GetMeasures(TCDTOOLBAR_ITEM_BUTTON_DEFAULT_WIDTH); + tikDropDownButton: + Result.Width := FDrawer.GetMeasures(TCDTOOLBAR_ITEM_BUTTON_DEFAULT_WIDTH) + + FDrawer.GetMeasures(TCDTOOLBAR_ITEM_ARROW_RESERVED_WIDTH); + tikSeparator, tikDivider: Result.Width := FDrawer.GetMeasures(TCDTOOLBAR_ITEM_SEPARATOR_DEFAULT_WIDTH); + end; +end; + +function TCDToolBar.AddItem(AKind: TCDToolbarItemKind): TCDToolBarItem; +begin + Result := InsertItem(AKind, FItems.Count); +end; + +procedure TCDToolBar.DeleteItem(AIndex: Integer); +begin + if (AIndex < 0) or (AIndex >= FItems.Count) then Exit; + FItems.Delete(AIndex); +end; + +function TCDToolBar.GetItem(AIndex: Integer): TCDToolBarItem; +begin + Result := nil; + if (AIndex < 0) or (AIndex >= FItems.Count) then Exit; + Result := TCDToolBarItem(FItems.Items[AIndex]); +end; + +function TCDToolBar.GetItemCount: Integer; +begin + Result := FItems.Count; +end; + +function TCDToolBar.GetItemWithMousePos(APosInControl: TPoint): TCDToolBarItem; +var + i, lX: Integer; + lCurItem: TCDToolBarItem; +begin + Result := nil; + lX := 0; + for i := 0 to FItems.Count-1 do + begin + lCurItem := GetItem(i); + if IsPosInButton(APosInControl, lCurItem, lX) then + Exit(lCurItem); + lX := lX + lCurItem.Width; + end; +end; + +function TCDToolBar.IsPosInButton(APosInControl: TPoint; AItem: TCDToolBarItem; + AItemX: Integer): Boolean; +var + lSize: TSize; +begin + lSize.CY := Height; + lSize.CX := AItem.Width; + Result := (APosInControl.X > AItemX) and (APosInControl.X < AItemX + lSize.CX) and + (APosInControl.Y > 0) and (APosInControl.Y < lSize.CY); +end; + { TCDTabSheet } procedure TCDTabSheet.RealSetText(const Value: TCaption); diff -Nru lazarus-1.4.4+dfsg/lcl/customdrawndrawers.pas lazarus-1.6+dfsg/lcl/customdrawndrawers.pas --- lazarus-1.4.4+dfsg/lcl/customdrawndrawers.pas 2012-04-20 14:05:13.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/customdrawndrawers.pas 2015-08-01 06:28:38.000000000 +0000 @@ -1,4 +1,4 @@ -unit customdrawndrawers; +unit CustomDrawnDrawers; {$mode objfpc}{$H+} @@ -7,7 +7,7 @@ uses Classes, SysUtils, Types, fpcanvas, fpimage, // LCL for types - Controls, Graphics, ComCtrls, ExtCtrls; + Controls, Graphics, ComCtrls, ExtCtrls, LazUTF8; const CDDRAWSTYLE_COUNT = 19; @@ -25,6 +25,8 @@ TCDRADIOBUTTON_CIRCLE_HEIGHT = $601; + TCDCOMBOBOX_DEFAULT_HEIGHT = $801; + TCDSCROLLBAR_BUTTON_WIDTH = $900; TCDSCROLLBAR_LEFT_SPACING = $901; // Left and right are only read left and right for horizontal orientation TCDSCROLLBAR_RIGHT_SPACING= $902; // in vertical orientation they are respectively top and bottom @@ -42,6 +44,13 @@ TCDLISTVIEW_LINE_TOP_SPACING = $1203; TCDLISTVIEW_LINE_BOTTOM_SPACING = $1204; + TCDTOOLBAR_ITEM_SPACING = $1300; + TCDTOOLBAR_ITEM_ARROW_WIDTH = $1301; + TCDTOOLBAR_ITEM_BUTTON_DEFAULT_WIDTH = $1303; + TCDTOOLBAR_ITEM_ARROW_RESERVED_WIDTH = $1304; + TCDTOOLBAR_ITEM_SEPARATOR_DEFAULT_WIDTH = $1305; + TCDTOOLBAR_DEFAULT_HEIGHT = $1306; + TCDCTABCONTROL_CLOSE_TAB_BUTTON_WIDTH = $2600; TCDCTABCONTROL_CLOSE_TAB_BUTTON_EXTRA_SPACING = $2601; @@ -153,6 +162,7 @@ MultiLine: Boolean; Lines: TStrings; // Just a reference, never Free FullyVisibleLinesCount, LineHeight: Integer; // Filled on drawing to be used in customdrawncontrols.pas + PasswordChar: Char; // customizable extra margins, zero is the base value LeftTextMargin, RightTextMargin: Integer; // For the combo box for example @@ -210,6 +220,33 @@ ShowColumnHeader: Boolean; end; + // ToolBar Start + + TCDToolbarItemKind = (tikButton, tikCheckButton, tikDropDownButton, + tikSeparator, tikDivider); + + TCDToolbarItemSubpartKind = (tiskMain, tiskArrow); + + TCDToolBarItem = class + Kind: TCDToolbarItemKind; + SubpartKind: TCDToolbarItemSubpartKind; + Image: TBitmap; + Caption: string; + Width: Integer; + Down: Boolean; + // filled for drawing + State: TCDControlState; + end; + + TCDToolBarStateEx = class(TCDControlStateEx) + ShowCaptions: Boolean; + IsVertical: Boolean; + Items: TFPList; // of TCDToolBarItem + ToolBarHeight: Integer; + end; + + // ToolBar End + TCDCTabControlStateEx = class(TCDControlStateEx) public LeftmostTabVisibleIndex: Integer; @@ -238,7 +275,7 @@ // Additional cidStaticText, // Common Controls - cidTrackBar, cidProgressBar, cidListView, cidCTabControl + cidTrackBar, cidProgressBar, cidListView, cidToolBar, cidCTabControl ); { TCDColorPalette } @@ -285,6 +322,7 @@ procedure LoadFallbackPaletteColors; virtual; function PalDefaultUsesNativePalette: Boolean; virtual; function GetDrawStyle: TCDDrawStyle; virtual; + class function VisibleText(const aVisibleText: TCaption; const APasswordChar: Char): TCaption; // GetControlDefaultColor is used by customdrawncontrols to resolve clDefault function GetControlDefaultColor(AControlId: TCDControlID): TColor; // General @@ -293,12 +331,12 @@ AState: TCDControlState; AStateEx: TCDControlStateEx): Integer; virtual; abstract; procedure CalculatePreferredSize(ADest: TCanvas; AControlId: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx; - var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual; abstract; + var PreferredWidth, PreferredHeight: integer; WithThemeSpace, AAllowUseOfMeasuresEx: Boolean); virtual; abstract; function GetColor(AColorID: Integer): TColor; virtual; abstract; function GetClientArea(ADest: TCanvas; ASize: TSize; AControlId: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx): TRect; virtual; abstract; // To set a different position to draw the control then (0, 0) use the window org of the canvas - procedure DrawControl(ADest: TCanvas; ASize: TSize; + procedure DrawControl(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; AControl: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx); // General drawing routines. The ones using TFPCustomCanvas are reusable in LCL-CustomDrawn procedure DrawFocusRect(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize); virtual; abstract; @@ -317,7 +355,7 @@ procedure DrawControl(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); virtual; abstract; // TCDButton - procedure DrawButton(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); virtual; abstract; // TCDEdit procedure DrawEditBackground(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; @@ -345,7 +383,7 @@ procedure DrawScrollBar(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDPositionedCStateEx); virtual; abstract; // TCDGroupBox - procedure DrawGroupBox(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawGroupBox(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDControlStateEx); virtual; abstract; // TCDPanel procedure DrawPanel(ADest: TCanvas; ASize: TSize; @@ -371,6 +409,12 @@ AState: TCDControlState; AStateEx: TCDListViewStateEx); virtual; abstract; procedure DrawReportListViewItem(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; ACurItem: TCDListItems; AState: TCDControlState; AStateEx: TCDListViewStateEx); virtual; abstract; + // TCDToolBar + procedure DrawToolBar(ADest: TCanvas; ASize: TSize; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); virtual; abstract; + procedure DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); virtual; abstract; // TCDCustomTabControl procedure DrawCTabControl(ADest: TCanvas; ASize: TSize; AState: TCDControlState; AStateEx: TCDCTabControlStateEx); virtual; abstract; @@ -630,6 +674,14 @@ Result := dsCommon; end; +class function TCDDrawer.VisibleText(const aVisibleText: TCaption; const APasswordChar: Char): TCaption; +begin + if aPasswordChar = #0 then + result := aVisibleText + else + result := StringOfChar( aPasswordChar, UTF8Length(aVisibleText) ); +end; + { Control colors can refer to their background or foreground } function TCDDrawer.GetControlDefaultColor(AControlId: TCDControlID): TColor; begin @@ -651,20 +703,20 @@ end; end; -procedure TCDDrawer.DrawControl(ADest: TCanvas; ASize: TSize; +procedure TCDDrawer.DrawControl(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; AControl: TCDControlID; AState: TCDControlState; AStateEx: TCDControlStateEx ); begin case AControl of cidControl: DrawControl(ADest, ASize, AState, AStateEx); // - cidButton: DrawButton(ADest, ASize, AState, TCDButtonStateEx(AStateEx)); + cidButton: DrawButton(ADest, ADestPos, ASize, AState, TCDButtonStateEx(AStateEx)); cidEdit: DrawEdit(ADest, ASize, AState, TCDEditStateEx(AStateEx)); cidCheckBox: DrawCheckBox(ADest, ASize, AState, AStateEx); cidRadioButton:DrawRadioButton(ADest, ASize, AState, AStateEx); cidComboBox: DrawComboBox(ADest, ASize, AState, TCDEditStateEx(AStateEx)); cidScrollBar: DrawScrollBar(ADest, ASize, AState, TCDPositionedCStateEx(AStateEx)); - cidGroupBox: DrawGroupBox(ADest, ASize, AState, AStateEx); + cidGroupBox: DrawGroupBox(ADest, ADestPos, ASize, AState, AStateEx); cidPanel: DrawPanel(ADest, ASize, AState, TCDPanelStateEx(AStateEx)); // cidStaticText: DrawStaticText(ADest, ASize, AState, AStateEx); @@ -672,6 +724,7 @@ cidTrackBar: DrawTrackBar(ADest, ASize, AState, TCDPositionedCStateEx(AStateEx)); cidProgressBar:DrawProgressBar(ADest, ASize, AState, TCDProgressBarStateEx(AStateEx)); cidListView: DrawListView(ADest, ASize, AState, TCDListViewStateEx(AStateEx)); + cidToolBar: DrawToolBar(ADest, ASize, AState, TCDToolBarStateEx(AStateEx)); cidCTabControl:DrawCTabControl(ADest, ASize, AState, TCDCTabControlStateEx(AStateEx)); end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/customdrawn_mac.pas lazarus-1.6+dfsg/lcl/customdrawn_mac.pas --- lazarus-1.4.4+dfsg/lcl/customdrawn_mac.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/customdrawn_mac.pas 2015-08-11 12:28:07.000000000 +0000 @@ -0,0 +1,248 @@ +unit CustomDrawn_Mac; + +{$mode objfpc}{$H+} + +interface + +uses + // RTL + Classes, SysUtils, Types, fpcanvas, fpimage, + // LCL -> Use only TForm, TWinControl, TCanvas and TLazIntfImage + Graphics, Controls, LCLType, + // + customdrawndrawers, customdrawn_common; + +type + + { TCDDrawerMac } + + TCDDrawerMac = class(TCDDrawerCommon) + public + procedure DrawExpandTriangle(ADest: TCanvas; ASize: TSize; + AX, AY: Integer; AFacing: TCDControlStateFlag); + // + procedure DrawMacSquareButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; + AState: TCDControlState; AStateEx: TCDButtonStateEx); + public + function GetMeasures(AMeasureID: Integer): Integer; override; + // =================================== + // Standard Tab + // =================================== + // TCDButton + procedure DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; + AState: TCDControlState; AStateEx: TCDButtonStateEx); override; + // =================================== + // Common Controls Tab + // =================================== + // TCDToolBar + procedure DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; + AState: TCDControlState; AStateEx: TCDToolBarStateEx); override; + end; + +implementation + +const + + // Button + + MAC_SQUARE_BUTTON_FOCUS_FRAME_OUTTER = $00D7BE9F; + MAC_SQUARE_BUTTON_FOCUS_FRAME_INNER = $00F7DEBF; // actually it is a gradient as well + // + MAC_SQUARE_BUTTON_FRAME = $00AFAFAF; + MAC_SQUARE_BUTTON_FOCUS_GRADIENT_TOP = $00E3E3E3; + MAC_SQUARE_BUTTON_FOCUS_GRADIENT_BOTTOM = $00F7F7F7; + // + MAC_SQUARE_BUTTON_SUNKEN_GRADIENT_TOP = $00AFAFAF; + MAC_SQUARE_BUTTON_SUNKEN_GRADIENT_BOTTOM = $00C5C5C5; + + +{ TCDDrawerMac } + +procedure TCDDrawerMac.DrawExpandTriangle(ADest: TCanvas; ASize: TSize; AX, + AY: Integer; AFacing: TCDControlStateFlag); +var + lPoints: array of TPoint; + R: TRect; +begin + SetLength(lPoints, 3); + R := Bounds(AX, AY, ASize.CX, ASize.CY); + + case AFacing of + csfLeftArrow: + begin + lPoints[0] := Types.Point(R.Right-1, R.Top); + lPoints[1] := Types.Point(R.Right-1, R.Bottom-2); + lPoints[2] := Types.Point(R.Left+1, (R.Top + R.Bottom-2) div 2); + end; + csfRightArrow: // face right + begin + lPoints[0] := Types.Point(R.Left+1, R.Top); + lPoints[1] := Types.Point(R.Left+1, R.Bottom-2); + lPoints[2] := Types.Point(R.Right-1, (R.Top + R.Bottom-2) div 2); + end; + csfDownArrow: // face down + begin + lPoints[0] := Types.Point(R.Left, R.Top); + lPoints[1] := Types.Point(R.Right-2, R.Top); + lPoints[2] := Types.Point((R.Left + R.Right-2) div 2, R.Bottom-2); + end; + csfUpArrow: + begin + lPoints[0] := Types.Point(R.Left, R.Bottom-2); + lPoints[1] := Types.Point(R.Right-2, R.Bottom-2); + lPoints[2] := Types.Point((R.Left + R.Right-2) div 2, R.Top); + end; + else + Exit; + end; + + // select the appropriate brush & pen + ADest.Brush.Color := $797979; + ADest.Brush.Style := bsSolid; + ADest.Pen.Color := $797979; + ADest.Pen.Style := psSolid; + + // Draw the triangle + ADest.Polygon(lPoints); +end; + +procedure TCDDrawerMac.DrawMacSquareButton(ADest: TFPCustomCanvas; + ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); +var + lDest: TCanvas absolute ADest; + Str: string; + lColor: TColor; + lRect: TRect; + lFrameDark, lFrameMedDark, lFrameMedium, lFrameLight: TColor; + lSelTop, lSelTopGrad, lSelBottomGrad, lSelBottom: TColor; + lGradientTop, lGradientBottom: TColor; + lPosX, lPosY: Integer; +begin + // Main body with gradient + if csfSunken in AState then + begin + lGradientTop := MAC_SQUARE_BUTTON_SUNKEN_GRADIENT_TOP; + lGradientBottom := MAC_SQUARE_BUTTON_SUNKEN_GRADIENT_BOTTOM; + end + else// if csfEnabled in AState then + begin + lGradientTop := MAC_SQUARE_BUTTON_FOCUS_GRADIENT_TOP; + lGradientBottom := MAC_SQUARE_BUTTON_FOCUS_GRADIENT_BOTTOM; + end; + lRect := Bounds(ADestPos.X, ADestPos.Y, ASize.cx, ASize.cy); + lDest.GradientFill(lRect, lGradientTop, lGradientBottom, gdVertical); + + // outter rectangle + lColor := AStateEx.ParentRGBColor; + ADest.Brush.Style := bsClear; + if (csfHasFocus in AState) and not (csfSunken in AState) then + lDest.Pen.Color := MAC_SQUARE_BUTTON_FOCUS_FRAME_OUTTER + else + lDest.Pen.Color := MAC_SQUARE_BUTTON_FRAME; + ADest.Rectangle(Bounds(ADestPos.X, ADestPos.Y, ASize.cx, ASize.cy)); + //ADest.Rectangle(1, 1, ASize.cx-1, ASize.cy-1); + + // inner rectangle (only for focused) + if (csfHasFocus in AState) and not (csfSunken in AState) then + begin + lDest.Pen.Color := MAC_SQUARE_BUTTON_FOCUS_FRAME_INNER; + ADest.Rectangle(Bounds(ADestPos.X+1, ADestPos.Y+1, ASize.cx-2, ASize.cy-2)); + //ADest.Rectangle(2, 2, ASize.cx-2, ASize.cy-2); + //ADest.Rectangle(3, 3, ASize.cx-3, ASize.cy-3); + end; + + // Button text + if AStateEx.Font <> nil then + ADest.Font.Assign(AStateEx.Font); + ADest.Brush.Style := bsClear; + ADest.Pen.Style := psSolid; + if (csfSunken in AState) then + ADest.Font.FPColor := colWhite; + Str := AStateEx.Caption; + lPosX := ADestPos.X + (ASize.cx - lDest.TextWidth(Str)) div 2; + lPosY := ADestPos.Y + (ASize.cy - lDest.TextHeight(Str)) div 2; + lDest.TextOut(lPosX, lPosY, Str); +end; + +function TCDDrawerMac.GetMeasures(AMeasureID: Integer): Integer; +begin + case AMeasureID of + // + TCDTOOLBAR_ITEM_ARROW_WIDTH: Result := 10; + else + Result:=inherited GetMeasures(AMeasureID); + end; +end; + +procedure TCDDrawerMac.DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; + AState: TCDControlState; AStateEx: TCDButtonStateEx); +begin + DrawMacSquareButton(ADest, ADestPos, ASize, AState, AStateEx); +end; + +procedure TCDDrawerMac.DrawToolBarItem(ADest: TCanvas; ASize: TSize; + ACurItem: TCDToolBarItem; AX, AY: Integer; AState: TCDControlState; + AStateEx: TCDToolBarStateEx); +var + lX, lY1, lY2: Integer; + + procedure DrawToolBarItemBorder(); + begin + ADest.Pen.Style := psSolid; + ADest.Pen.Color := $AFAFAF; + ADest.Brush.Style := bsClear; + ADest.Rectangle(Bounds(AX, AY, ASize.cx, ASize.cy)); + end; + +begin + // tikDivider is centralized, tikSeparator is left-aligned + case ACurItem.Kind of + tikSeparator, tikDivider: + begin + lX := AX; + if ACurItem.Kind = tikDivider then + lX := AX + ASize.CX div 2 - 1; + + lY1 := AY; + lY2 := AY+ASize.CY; + + ADest.Pen.Style := psSolid; + ADest.Pen.Color := $DCDEE1; + ADest.Line(lX+1, lY1, lX+1, lY2); + ADest.Line(lX+3, lY1, lX+3, lY2); + ADest.Pen.Style := psSolid; + ADest.Pen.Color := $93979E; + ADest.Line(lX+2, lY1, lX+2, lY2); + end; + tikButton, tikCheckButton, tikDropDownButton: + begin + if ACurItem.SubpartKind = tiskArrow then + begin + // Centralize the arrow in the available space + lX := AX - ASize.CX div 2; + lY1 := AY - ASize.CY div 2; + DrawExpandTriangle(ADest, ASize, lX, lY1, csfDownArrow); + Exit; + end; + + if csfSunken in AState then + begin + ADest.GradientFill(Bounds(AX, AY, ASize.CX, ASize.CY), + $C4C4C4, $DBDBDB, gdVertical); + DrawToolBarItemBorder(); + end + else if csfMouseOver in AState then + begin + ADest.GradientFill(Bounds(AX, AY, ASize.CX, ASize.CY), + $E3E3E3, $F7F7F7, gdVertical); + DrawToolBarItemBorder(); + end; + end; + end; +end; + +initialization + RegisterDrawer(TCDDrawerMac.Create, dsMacOSX); +end. + diff -Nru lazarus-1.4.4+dfsg/lcl/customdrawn_winxp.pas lazarus-1.6+dfsg/lcl/customdrawn_winxp.pas --- lazarus-1.4.4+dfsg/lcl/customdrawn_winxp.pas 2012-04-27 07:53:39.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/customdrawn_winxp.pas 2015-08-01 06:28:38.000000000 +0000 @@ -1,4 +1,4 @@ -unit customdrawn_winxp; +unit CustomDrawn_WinXP; {$mode objfpc}{$H+} @@ -37,7 +37,7 @@ // Standard Tab // =================================== // TCDButton - procedure DrawButton(ADest: TFPCustomCanvas; ASize: TSize; + procedure DrawButton(ADest: TFPCustomCanvas; ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); override; // TCDEdit procedure DrawEditFrame(ADest: TCanvas; ADestPos: TPoint; ASize: TSize; @@ -184,7 +184,7 @@ end; procedure TCDDrawerWinXP.DrawButton(ADest: TFPCustomCanvas; - ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); + ADestPos: TPoint; ASize: TSize; AState: TCDControlState; AStateEx: TCDButtonStateEx); var lDest: TCanvas absolute ADest; Str: string; diff -Nru lazarus-1.4.4+dfsg/lcl/dbctrls.pp lazarus-1.6+dfsg/lcl/dbctrls.pp --- lazarus-1.4.4+dfsg/lcl/dbctrls.pp 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/dbctrls.pp 2015-12-17 14:23:04.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: dbctrls.pp 46338 2014-09-26 21:40:47Z juha $} +{ $Id: dbctrls.pp 50864 2015-12-17 14:23:04Z mattias $} { /*************************************************************************** DbCtrls.pp @@ -20,7 +20,7 @@ @abstract(common db aware controls, as in Delphi) @author(Andrew Johnson <acjgenius@@earthlink.net>) @created(Sun Sep 14 2003) -@lastmod($Date: 2014-09-26 23:40:47 +0200 (Fr, 26 Sep 2014) $) +@lastmod($Date: 2015-12-17 15:23:04 +0100 (Do, 17 Dez 2015) $) } unit DbCtrls; @@ -127,6 +127,9 @@ FLookUpFieldIsCached: Boolean; FLookupCache: Boolean; FInitializing: Boolean; + {$IF FPC_FULLVERSION < 30000} + FFetchingLookupData: Boolean; + {$ENDIF} procedure ActiveChange(Sender: TObject); procedure DatasetChange(Sender: TObject); procedure DoInitialize; @@ -947,9 +950,11 @@ property OnUTF8KeyPress; property ParentBiDiMode; property ParentFont; + property ParentShowHint; property PopupMenu; property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False; property ScrollBars; + property ShowHint; property TabOrder; property Tabstop; property Visible; diff -Nru lazarus-1.4.4+dfsg/lcl/dbgrids.pas lazarus-1.6+dfsg/lcl/dbgrids.pas --- lazarus-1.4.4+dfsg/lcl/dbgrids.pas 2015-09-29 22:20:49.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/dbgrids.pas 2015-11-20 22:24:29.000000000 +0000 @@ -1,5 +1,5 @@ -{ $Id: dbgrids.pas 49898 2015-09-29 22:20:49Z maxim $} +{ $Id: dbgrids.pas 50454 2015-11-20 22:24:29Z ondrej $} { /*************************************************************************** DBGrids.pas @@ -33,8 +33,8 @@ uses Classes, SysUtils, Math, FileUtil, DB, - LCLStrConsts, LCLIntf, LCLProc, LCLType, LMessages, LResources, - Controls, StdCtrls, Graphics, Grids, Dialogs, Themes, Variants, Clipbrd; + LazUTF8, LazLoggerBase, LCLStrConsts, LCLIntf, LCLType, LMessages, LResources, + Controls, StdCtrls, Graphics, Grids, Dialogs, Themes, Variants, Clipbrd, Laz2_XMLCfg; {$if FPC_FULLVERSION<20701} {$DEFINE noautomatedbookmark} @@ -82,8 +82,8 @@ ); TDbGridExtraOptions = set of TDbGridExtraOption; - TDbGridStatusItem = (gsUpdatingData, gsAddingAutoColumns, - gsRemovingAutoColumns, gsAutoSized, gsStartEditing); + TDbGridStatusItem = (gsUpdatingData, gsAddingAutoColumns, gsRemovingAutoColumns, + gsAutoSized, gsStartEditing, gsLoadingGrid); TDbGridStatus = set of TDbGridStatusItem; TDataSetScrolledEvent = @@ -389,6 +389,10 @@ function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override; procedure DoOnChangeBounds; override; procedure DoPrepareCanvas(aCol,aRow:Integer; aState: TGridDrawState); override; + procedure DoLoadColumn(sender: TCustomGrid; aColumn: TGridColumn; aColIndex: Integer; + aCfg: TXMLConfig; aVersion: Integer; aPath: string); override; + procedure DoSaveColumn(sender: TCustomGrid; aColumn: TGridColumn; aColIndex: Integer; + aCfg: TXMLConfig; aVersion: Integer; aPath: string); override; procedure DrawAllRows; override; procedure DrawFocusRect(aCol,aRow:Integer; ARect:TRect); override; procedure DrawRow(ARow: Integer); override; @@ -437,6 +441,7 @@ procedure LinkActive(Value: Boolean); virtual; procedure LayoutChanged; virtual; procedure Loaded; override; + procedure LoadGridOptions(cfg: TXMLConfig; Version: Integer); override; procedure MoveSelection; override; function MouseButtonAllowed(Button: TMouseButton): boolean; override; procedure MouseDown(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override; @@ -445,6 +450,7 @@ procedure PrepareCellHints(aCol,aRow: Integer); override; procedure RemoveAutomaticColumns; procedure ResetSizes; override; + procedure SaveGridOptions(Cfg: TXMLConfig); override; procedure SelectEditor; override; procedure SetEditText(ACol, ARow: Longint; const Value: string); override; procedure SetFixedCols(const AValue: Integer); override; @@ -494,6 +500,12 @@ function MouseToRecordOffset(const x,y: Integer; out Column: TColumn; out RecordOffset: Integer): TGridZone; function ExecuteAction(AAction: TBasicAction): Boolean; override; function UpdateAction(AAction: TBasicAction): Boolean; override; + + procedure SaveToFile(FileName: string); override; + procedure SaveToStream(AStream: TStream); override; + procedure LoadFromFile(FileName: string); override; + procedure LoadFromStream(AStream: TStream); override; + property AllowOutboundEvents; property SelectedField: TField read GetCurrentField write SetCurrentField; property SelectedIndex: Integer read GetSelectedIndex write SetSelectedIndex; @@ -644,10 +656,10 @@ else begin aCharWidth := CalcCanvasCharWidth(Canvas); - if Field.DisplayWidth>UTF8Length(aTitle) then + if Field.DisplayWidth>LazUTF8.UTF8Length(aTitle) then result := aCharWidth * Field.DisplayWidth else - result := aCharWidth * UTF8Length(aTitle); + result := aCharWidth * LazUTF8.UTF8Length(aTitle); if HasTitle then begin UseTitleFont := @@ -1138,14 +1150,14 @@ if (dgIndicator in FOptions) then FixedCols := FixedCols + 1 else - FixedCols := FixedCols - 1; + FixedCols := Max(FixedCols - 1, 0); end; if (dgTitles in ChangedOptions) then begin if dgTitles in FOptions then FixedRows := FixedRows + 1 else - FixedRows := FixedRows - 1; + FixedRows := Max(FixedRows - 1, 0); end; if (dgAutoSizeColumns in ChangedOptions) then begin @@ -1331,6 +1343,7 @@ [ClassName, SbCodeToStr(Message.ScrollCode), dbgs(Message.Pos), Dbgs(FOldPosition)]); {$endif} + aPos := 0; IsSeq := FDatalink.DataSet.IsSequenced and not FDataLink.DataSet.Filtered; case Message.ScrollCode of SB_TOP: @@ -1661,9 +1674,7 @@ {$ifdef dbgDBGrid} DebugLn('%s.IsEOF', [ClassName]); {$endif} - with FDatalink do - result := - Active and DataSet.EOF; + Result := FDatalink.Active and FDatalink.DataSet.EOF; end; function TCustomDBGrid.ValidDataSet: boolean; @@ -1671,13 +1682,13 @@ {$ifdef dbgDBGrid} DebugLn('%s.ValidDataSet', [ClassName]); {$endif} - result := FDatalink.Active And (FDatalink.DataSet<>nil) + Result := FDatalink.Active And (FDatalink.DataSet<>nil) end; function TCustomDBGrid.InsertCancelable: boolean; begin with FDatalink.DataSet do - Result := (State=dsInsert) and not (Modified or FDataLink.FModified); + Result := (State=dsInsert) and not (Modified or FDataLink.FModified); end; procedure TCustomDBGrid.StartUpdating; @@ -1716,7 +1727,7 @@ // add as many columns as there are fields in the dataset // do this only at runtime. if (csDesigning in ComponentState) or not FDatalink.Active or - (gsRemovingAutoColumns in FGridStatus) or + (gsRemovingAutoColumns in FGridStatus) or (gsLoadingGrid in FGridStatus) or not (dgeAutoColumns in OptionsExtra) then exit; @@ -1905,6 +1916,46 @@ inherited Loaded; end; +procedure TCustomDBGrid.LoadGridOptions(cfg: TXMLConfig; Version: Integer); +var + Opt: TDBGridOptions; + Path: string; + procedure GetValue(optStr:string; aOpt:TDBGridOption); + begin + if Cfg.GetValue(Path+OptStr+'/value', False) then Opt:=Opt+[aOpt]; + end; +begin + Opt:=[]; + Path:='grid/design/options/'; + GetValue('dgEditing', dgEditing); + GetValue('dgTitles', dgTitles); + GetValue('dgIndicator', dgIndicator); + GetValue('dgColumnResize', dgColumnResize); + GetValue('dgColumnMove', dgColumnMove); + GetValue('dgColLines', dgColLines); + GetValue('dgRowLines', dgRowLines); + GetValue('dgTabs', dgTabs); + GetValue('dgAlwaysShowEditor', dgAlwaysShowEditor); + GetValue('dgRowSelect', dgRowSelect); + GetValue('dgAlwaysShowSelection', dgAlwaysShowSelection); + GetValue('dgConfirmDelete', dgConfirmDelete); + GetValue('dgCancelOnExit', dgCancelOnExit); + GetValue('dgMultiselect', dgMultiselect); + GetValue('dgHeaderHotTracking', dgHeaderHotTracking); + GetValue('dgHeaderPushedLook', dgHeaderPushedLook); + GetValue('dgPersistentMultiSelect', dgPersistentMultiSelect); + GetValue('dgAutoSizeColumns', dgAutoSizeColumns); + GetValue('dgAnyButtonCanSelect', dgAnyButtonCanSelect); + GetValue('dgDisableDelete', dgDisableDelete); + GetValue('dgDisableInsert', dgDisableInsert); + GetValue('dgCellHints', dgCellHints); + GetValue('dgTruncCellHints', dgTruncCellHints); + GetValue('dgCellEllipsis', dgCellEllipsis); + GetValue('dgRowHighlight', dgRowHighlight); + GetValue('dgThumbTracking', dgThumbTracking); + Options:=Opt; +end; + type TProtFields=class(TFields) end; @@ -2085,6 +2136,33 @@ end; end; +procedure TCustomDBGrid.DoLoadColumn(sender: TCustomGrid; aColumn: TGridColumn; + aColIndex: Integer; aCfg: TXMLConfig; aVersion: Integer; aPath: string); +var + c: TColumn; + s: string; +begin + c:=TColumn(aColumn); + s := aCfg.GetValue(aPath + '/fieldname/value', ''); + if s<>'' then + c.FieldName := s; + s := aCfg.GetValue(aPath + '/displayformat/value', ''); + if s<>'' then + c.DisplayFormat := s; + inherited DoLoadColumn(sender, aColumn, aColIndex, aCfg, aVersion, aPath); +end; + +procedure TCustomDBGrid.DoSaveColumn(sender: TCustomGrid; aColumn: TGridColumn; + aColIndex: Integer; aCfg: TXMLConfig; aVersion: Integer; aPath: string); +var + c: TColumn; +begin + c:=TColumn(aColumn); + aCfg.SetValue(aPath + '/fieldname/value', c.FieldName); + aCfg.SetValue(aPath + '/displayformat/value', c.DisplayFormat); + inherited DoSaveColumn(sender, aColumn, aColIndex, aCfg, aVersion, aPath); +end; + procedure TCustomDBGrid.BeforeMoveSelection(const DCol,DRow: Integer); begin {$ifdef dbgDBGrid}DebugLnEnter('%s.BeforeMoveSelection INIT', [ClassName]);{$endif} @@ -2457,7 +2535,7 @@ P: TPoint; procedure doMouseDown; begin - if not Focused then + if not Focused and not(csNoFocus in ControlStyle) then SetFocus; if assigned(OnMouseDown) then OnMouseDown(Self, Button, Shift, X, Y); @@ -2552,6 +2630,8 @@ if InsertCancelable and IsEOF then doCancel; doMoveBy; + if IsMouseOverCellButton(X, Y) then + StartPushCell; end; if ssCtrl in Shift then ToggleSelectedRow @@ -2602,6 +2682,39 @@ inherited ResetSizes; end; +procedure TCustomDBGrid.SaveGridOptions(Cfg: TXMLConfig); +var + Path: string; +begin + Path:='grid/design/options/'; + Cfg.SetValue(Path+'dgEditing/value', dgEditing in Options); + Cfg.SetValue(Path+'dgTitles/value', dgTitles in Options); + Cfg.SetValue(Path+'dgIndicator/value', dgIndicator in Options); + Cfg.SetValue(Path+'dgColumnResize/value', dgColumnResize in Options); + Cfg.SetValue(Path+'dgColumnMove/value', dgColumnMove in Options); + Cfg.SetValue(Path+'dgColLines/value', dgColLines in Options); + Cfg.SetValue(Path+'dgRowLines/value', dgRowLines in Options); + Cfg.SetValue(Path+'dgTabs/value', dgTabs in Options); + Cfg.SetValue(Path+'dgAlwaysShowEditor/value', dgAlwaysShowEditor in Options); + Cfg.SetValue(Path+'dgRowSelect/value', dgRowSelect in Options); + Cfg.SetValue(Path+'dgAlwaysShowSelection/value', dgAlwaysShowSelection in Options); + Cfg.SetValue(Path+'dgConfirmDelete/value', dgConfirmDelete in Options); + Cfg.SetValue(Path+'dgCancelOnExit/value', dgCancelOnExit in Options); + Cfg.SetValue(Path+'dgMultiselect/value', dgMultiselect in Options); + Cfg.SetValue(Path+'dgHeaderHotTracking/value', dgHeaderHotTracking in Options); + Cfg.SetValue(Path+'dgHeaderPushedLook/value', dgHeaderPushedLook in Options); + Cfg.SetValue(Path+'dgPersistentMultiSelect/value', dgPersistentMultiSelect in Options); + cfg.SetValue(Path+'dgAutoSizeColumns/value', dgAutoSizeColumns in Options); + cfg.SetValue(Path+'dgAnyButtonCanSelect/value', dgAnyButtonCanSelect in Options); + Cfg.SetValue(Path+'dgDisableDelete/value', dgDisableDelete in Options); + Cfg.SetValue(Path+'dgDisableInsert/value', dgDisableInsert in Options); + Cfg.SetValue(Path+'dgCellHints/value', dgCellHints in Options); + cfg.SetValue(Path+'dgTruncCellHints/value', dgTruncCellHints in Options); + Cfg.SetValue(Path+'dgCellEllipsis/value', dgCellEllipsis in Options); + Cfg.SetValue(Path+'dgRowHighlight/value', dgRowHighlight in Options); + Cfg.SetValue(Path+'dgThumbTracking/value', dgThumbTracking in Options); +end; + procedure TCustomDBGrid.SelectEditor; var aEditor: TWinControl; @@ -2815,11 +2928,11 @@ var aField: TField; begin + Result := ''; if FDataLink.Active then begin aField := GetFieldFromGridColumn(aCol); - if aField<>nil then begin + if aField<>nil then Result := aField.Text; - end; end; end; @@ -3072,15 +3185,18 @@ procedure TCustomDBGrid.DrawIndicator(ACanvas: TCanvas; R: TRect; Opt: TDataSetState; MultiSel: boolean); var - dx,dy, x, y: Integer; + dx, dy, x, y: Integer; + procedure CenterY; begin y := R.Top + (R.Bottom-R.Top) div 2; end; + procedure CenterX; begin X := R.Left + (R.Right-R.Left) div 2; end; + procedure DrawEdit(clr: Tcolor); begin ACanvas.Pen.Color := clr; @@ -3093,9 +3209,12 @@ ACanvas.MoveTo(X-2, Y+Dy); ACanvas.LineTo(X+3, Y+Dy); end; + begin dx := 6; dy := 6; + x := 0; + y := 0; case Opt of dsBrowse: begin // @@ -3553,12 +3672,43 @@ and DataLink.UpdateAction(AAction); end; +procedure TCustomDBGrid.SaveToFile(FileName: string); +begin + SaveOptions:=[ soDesign ]; + inherited SaveToFile(Filename); +end; + +procedure TCustomDBGrid.SaveToStream(AStream: TStream); +begin + SaveOptions:=[ soDesign ]; + inherited SaveToStream(AStream); +end; + +procedure TCustomDBGrid.LoadFromFile(FileName: string); +begin + SaveOptions:=[ soDesign ]; + Include(FGridStatus, gsLoadingGrid); + inherited LoadFromFile(Filename); + Exclude(FGridStatus, gsLoadingGrid); +end; + +procedure TCustomDBGrid.LoadFromStream(AStream: TStream); +begin + SaveOptions:=[ soDesign ]; + Include(FGridStatus, gsLoadingGrid); + inherited LoadFromStream(AStream); + Exclude(FGridStatus, gsLoadingGrid); +end; + { TComponentDataLink } function TComponentDataLink.GetFields(Index: Integer): TField; begin {$ifdef dbgGrid}DebugLn('%s.GetFields Index=%d',[ClassName, Index]); {$endif} - if (index>=0)and(index<DataSet.FieldCount) then result:=DataSet.Fields[index]; + if (index>=0) and (index<DataSet.FieldCount) then + result:=DataSet.Fields[index] + else + result:=nil; end; function TComponentDataLink.GetDataSetName: string; diff -Nru lazarus-1.4.4+dfsg/lcl/dialogs.pp lazarus-1.6+dfsg/lcl/dialogs.pp --- lazarus-1.4.4+dfsg/lcl/dialogs.pp 2015-04-29 21:36:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/dialogs.pp 2015-12-14 10:33:12.000000000 +0000 @@ -21,10 +21,13 @@ interface uses - Types, typinfo, Classes, LResources, SysUtils, LazFileUtils, - LCLIntf, InterfaceBase, FileUtil, LCLStrConsts, LCLType, LCLProc, Forms, + // RTL + FCL + LCL + Types, typinfo, Classes, SysUtils, LMessages, + LResources, LCLIntf, InterfaceBase, LCLStrConsts, LCLType, LCLProc, Forms, Controls, Themes, GraphType, Graphics, Buttons, ButtonPanel, StdCtrls, - ExtCtrls, LCLClasses, ClipBrd; + ExtCtrls, LCLClasses, ClipBrd, + // LazUtils + FileUtil, LazFileUtils; type @@ -385,6 +388,7 @@ function GetTop: Integer; procedure SetFindText(const AValue: string); procedure SetLeft(const AValue: Integer); + procedure SetOptions(AValue: TFindOptions); procedure SetPosition(const AValue: TPoint); procedure SetTop(const AValue: Integer); procedure SetReplaceText(const AValue: string); @@ -405,16 +409,14 @@ function GetHeight: Integer; override; function GetWidth: Integer; override; - procedure UpdatePosition; procedure DoCloseForm(Sender: TObject; var CloseAction: TCloseAction);virtual; procedure Find; virtual; procedure Help; virtual; procedure Replace; virtual; function CreateForm:TForm;virtual; procedure SetFormValues;virtual; - procedure GetFormValues; virtual; - + Procedure CalcPosition(aForm:Tform); property ReplaceText: string read GetReplaceText write SetReplaceText; property OnReplace: TNotifyEvent read FOnReplace write FOnReplace; public @@ -427,7 +429,7 @@ property Top: Integer read GetTop write SetTop; published property FindText: string read GetFindText write SetFindText; - property Options: TFindOptions read FOptions write FOptions default [frDown]; + property Options: TFindOptions read FOptions write SetOptions default [frDown]; property OnFind: TNotifyEvent read FOnFind write FOnFind; property OnHelpClicked: TNotifyEvent read FOnHelpClicked write FOnHelpClicked; end; @@ -513,24 +515,38 @@ const HelpFileName: string): TModalResult; overload; function CreateMessageDialog(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons): TForm; overload; +function DefaultPromptDialog(const DialogCaption, + DialogMessage: String; + DialogType: longint; Buttons: PLongint; + ButtonCount, DefaultIndex, EscapeResult: Longint; + UseDefaultPos: boolean; + X, Y: Longint): Longint;// widgetset independent implementation, see PromptDialogFunction + function QuestionDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: array of const; HelpCtx: Longint): TModalResult; overload; function QuestionDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: array of const; const HelpKeyword: string): TModalResult; overload; +function DefaultQuestionDialog(const aCaption, aMsg: string; DlgType: LongInt; + Buttons: TDialogButtons; HelpCtx: Longint): LongInt;// widgetset independent implementation, see QuestionDialogFunction - procedure ShowMessage(const aMsg: string); procedure ShowMessageFmt(const aMsg: string; Params: array of const); procedure ShowMessagePos(const aMsg: string; X, Y: Integer); +function DefaultMessageBox(Text, Caption: PChar; Flags: Longint) : Integer;// widgetset independent implementation, see MessageBoxFunction -function InputQuery(const ACaption, APrompt : String; MaskInput : Boolean; var Value : String) : Boolean; -function InputQuery(const ACaption, APrompt : String; var Value : String) : Boolean; function InputBox(const ACaption, APrompt, ADefault : String) : String; function PasswordBox(const ACaption, APrompt : String) : String; - + +const + cInputQueryEditSizePixels: integer = 260; // Edit size in pixels + cInputQueryEditSizePercents: integer = 25; // Edit size in % of monitor width + cInputQuerySpacingSize: integer = 6; + type TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt); TSelectDirOpts = set of TSelectDirOpt; + TInputCloseQueryEvent = procedure(Sender: TObject; const AValues: array of string; + var ACanClose: boolean) of object; function SelectDirectory(const Caption, InitialDirectory: string; out Directory: string): boolean; @@ -539,6 +555,13 @@ function SelectDirectory(out Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; +function InputQuery(const ACaption, APrompt : String; MaskInput : Boolean; var Value : String) : Boolean; +function InputQuery(const ACaption, APrompt : String; var Value : String) : Boolean; +function InputQuery(const ACaption: string; const APrompts: array of string; + var AValues: array of string; ACloseEvent: TInputCloseQueryEvent = nil): boolean; +function DefaultInputDialog(const InputCaption, InputPrompt : String; + MaskInput : Boolean; var Value : String) : Boolean;// widgetset independent implementation, see InputDialogFunction + function ExtractColorIndexAndColor(const AColorList: TStrings; const AIndex: Integer; out ColorIndex: Integer; out ColorValue: TColor): Boolean; @@ -614,7 +637,7 @@ RegisterComponents('Misc',[TColorButton]); end; -function ShowMessageBox(Text, Caption: PChar; Flags: Longint) : Integer; +function DefaultMessageBox(Text, Caption: PChar; Flags: Longint) : Integer; var DlgType : TMsgDlgType; Buttons : TMsgDlgButtons; @@ -640,7 +663,7 @@ if (Flags and MB_OK) = MB_OK then Buttons := [mbOK] else - Buttons := [mbOK]; + {%H-}Buttons := [mbOK]; if (Flags and MB_ICONINFORMATION) = MB_ICONINFORMATION then @@ -732,11 +755,12 @@ FCopies:=1; end; + initialization - Forms.MessageBoxFunction := @ShowMessageBox; - InterfaceBase.InputDialogFunction := @ShowInputDialog; - InterfaceBase.PromptDialogFunction := @ShowPromptDialog; - InterfaceBase.QuestionDialogFunction := @ShowQuestionDialog; + Forms.MessageBoxFunction := @DefaultMessageBox; + InterfaceBase.InputDialogFunction := @DefaultInputDialog; + InterfaceBase.PromptDialogFunction := @DefaultPromptDialog; + InterfaceBase.QuestionDialogFunction := @DefaultQuestionDialog; finalization InterfaceBase.InputDialogFunction := nil; diff -Nru lazarus-1.4.4+dfsg/lcl/editbtn.pas lazarus-1.6+dfsg/lcl/editbtn.pas --- lazarus-1.4.4+dfsg/lcl/editbtn.pas 2015-09-29 22:20:49.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/editbtn.pas 2015-11-06 18:35:28.000000000 +0000 @@ -31,16 +31,14 @@ uses Classes, SysUtils, LCLProc, LResources, LCLStrConsts, Types, LCLType, LMessages, - Graphics, Controls, Forms, FileUtil, Dialogs, StdCtrls, Buttons, Calendar, - ExtDlgs, CalendarPopup, MaskEdit, Menus; + Graphics, Controls, Forms, LazFileUtils, Dialogs, StdCtrls, Buttons, Calendar, + ExtDlgs, CalendarPopup, MaskEdit, Menus, StrUtils, DateUtils, TimePopup, CalcForm; const NullDate: TDateTime = 0; type - - { TEbEdit } TEbEdit = class(TCustomMaskedit) @@ -120,6 +118,9 @@ function GetSpacing: Integer; function GetTabStop: Boolean; function GetText: TCaption; + function GetTextHint: TTranslateString; + function GetTextHintFontColor: TColor; + function GetTextHintFontStyle: TFontStyles; function IsCustomGlyph : Boolean; procedure FocusAndMaybeSelectAll; @@ -182,6 +183,9 @@ procedure SetSelText(AValue: String); procedure SetSpacing(const Value: integer); procedure SetTabStop(AValue: Boolean); + procedure SetTextHint(AValue: TTranslateString); + procedure SetTextHintFontColor(AValue: TColor); + procedure SetTextHintFontStyle(AValue: TFontStyles); protected class function GetControlClassDefaultSize: TSize; override; function CalcButtonVisible: Boolean; virtual; @@ -294,6 +298,9 @@ property SelText: String read GetSelText write SetSelText; property TabStop: Boolean read GetTabStop write SetTabStop default True; property Text: TCaption read GetText write SetText; + property TextHint: TTranslateString read GetTextHint write SetTextHint; + property TextHintFontColor: TColor read GetTextHintFontColor write SetTextHintFontColor default clGrayText; + property TextHintFontStyle: TFontStyles read GetTextHintFontStyle write SetTextHintFontStyle default [fsItalic]; property OnChange: TNotifyEvent read FOnEditChange write FOnEditChange; property OnClick: TNotifyEvent read FOnEditClick write FOnEditClick; @@ -394,6 +401,9 @@ property TabOrder; property TabStop; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; property Visible; end; @@ -425,6 +435,7 @@ procedure SetUseFormActivate(AValue: Boolean); procedure FormActivate(Sender: TObject); // Connects to owning form. procedure FormDeactivate(Sender: TObject); + function IsTextHintStored: Boolean; protected fNeedUpdate: Boolean; fIsFirstUpdate: Boolean; @@ -439,8 +450,12 @@ procedure SortAndFilter; virtual; abstract; procedure ApplyFilter(Immediately: Boolean = False); procedure ApplyFilterCore; virtual; abstract; - procedure MoveNext; virtual; abstract; - procedure MovePrev; virtual; abstract; + procedure MoveNext(ASelect: Boolean = False); virtual; abstract; + procedure MovePrev(ASelect: Boolean = False); virtual; abstract; + procedure MovePageUp(ASelect: Boolean = False); virtual; abstract; + procedure MovePageDown(ASelect: Boolean = False); virtual; abstract; + procedure MoveHome(ASelect: Boolean = False); virtual; abstract; + procedure MoveEnd(ASelect: Boolean = False); virtual; abstract; function ReturnKeyHandled: Boolean; virtual; abstract; function GetDefaultGlyphName: String; override; public @@ -521,6 +536,9 @@ property OnStartDrag; property OnUTF8KeyPress; property Text; + property TextHint stored IsTextHintStored; + property TextHintFontColor; + property TextHintFontStyle; end; { TFileNameEdit } @@ -633,6 +651,9 @@ property OnStartDrag; property OnUTF8KeyPress; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; end; @@ -723,6 +744,9 @@ property OnStartDrag; property OnUTF8KeyPress; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; end; @@ -743,9 +767,11 @@ FOnCustomDate: TCustomDateEvent; FOKCaption: TCaption; FCancelCaption: TCaption; - FDateFormat: string; + FFixedDateFormat: string; //used when DateOrder <> doNone + FFreeDateFormat: String; //used when DateOrder = doNone FDate: TDateTime; FUpdatingDate: Boolean; + procedure SetFreeDateFormat(AValue: String); function TextToDate(AText: String; ADefault: TDateTime): TDateTime; function GetDate: TDateTime; procedure SetDate(Value: TDateTime); @@ -777,6 +803,7 @@ property ReadOnly; property DefaultToday: Boolean read FDefaultToday write FDefaultToday default False; Property DateOrder : TDateOrder Read FDateOrder Write SetDateOrder; + property DateFormat: String read FFreeDateFormat write SetFreeDateFormat; property ButtonOnlyWhenFocused; property ButtonCaption; property ButtonCursor; @@ -836,8 +863,111 @@ property Spacing; property Visible; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; + end; + + { TTimeEdit } + + TAcceptTimeEvent = procedure (Sender : TObject; var ATime : TDateTime; var AcceptTime: Boolean) of object; + TCustomTimeEvent = procedure (Sender : TObject; var ATime : TDateTime) of object; + + TTimeEdit = class(TCustomEditButton) + private + FTime: TTime; + IsEmptyTime: Boolean; + FDefaultNow: Boolean; + FDroppedDown: Boolean; + FSimpleLayout: Boolean; + FOnAcceptTime: TAcceptTimeEvent; + FOnCustomTime: TCustomTimeEvent; + function GetTime: TDateTime; + procedure SetTime(AValue: TDateTime); + procedure SetEmptyTime; + function GetLayout: Boolean; + procedure SetLayout(AValue: Boolean); + procedure TimePopupReturnTime(Sender: TObject; const ATime: TDateTime); + procedure TimePopupShowHide(Sender: TObject); + procedure OpenTimePopup; + procedure ParseInput; + function TryParseInput(AInput: String; out ParseResult: TDateTime): Boolean; + protected + function GetDefaultGlyph: TBitmap; override; + function GetDefaultGlyphName: String; override; + procedure ButtonClick; override; + procedure EditDblClick; override; + procedure EditEditingDone; override; + public + constructor Create(AOwner: TComponent); override; + property Time: TDateTime read GetTime write SetTime; + property Button; + property DroppedDown: Boolean read FDroppedDown; + published + property DefaultNow: Boolean read FDefaultNow write FDefaultNow default False; + property OnAcceptTime: TAcceptTimeEvent read FOnAcceptTime write FOnAcceptTime; + property OnCustomTime: TCustomTimeEvent read FOnCustomTime write FOnCustomTime; + property ReadOnly; + property ButtonOnlyWhenFocused; + property ButtonWidth; + property Action; + property Align; + property Anchors; + property AutoSize; + property AutoSelect; + property BidiMode; + property BorderSpacing; + property BorderStyle; + property CharCase; + property Color; + property Constraints; + property DirectInput; + property Glyph; + property NumGlyphs; + property DragMode; + property EchoMode; + property Enabled; + property Flat; + property FocusOnButtonClick; + property Font; + property MaxLength; + property OnButtonClick; + property OnChange; + property OnChangeBounds; + property OnClick; + property OnDblClick; + property OnEditingDone; + property OnEnter; + property OnExit; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; + property OnMouseWheel; + property OnMouseWheelDown; + property OnMouseWheelUp; + property OnResize; + property OnUTF8KeyPress; + property ParentBidiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowHint; + property SimpleLayout: Boolean read GetLayout write SetLayout default True; + property TabStop; + property TabOrder; + property Visible; + property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; end; - + { TCalcEdit } @@ -929,6 +1059,9 @@ property OnStartDrag; property OnUTF8KeyPress; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; end; @@ -936,6 +1069,7 @@ FileOpenGlyph: TBitmap; DateGlyph: TBitmap; CalcGlyph: TBitmap; + TimeGlyph: TBitmap; const ResBtnListFilter = 'btnfiltercancel'; @@ -943,6 +1077,7 @@ ResBtnSelDir = 'btnseldir'; ResBtnCalendar = 'btncalendar'; ResBtnCalculator = 'btncalculator'; + ResBtnTime = 'btntime'; procedure Register; @@ -989,7 +1124,8 @@ procedure TCustomEditButton.InternalOnEditChange(Sender: TObject); begin - EditChange; + if not (csLoading in ComponentState) then + EditChange; end; procedure TCustomEditButton.InternalOnEditClick(Sender: TObject); @@ -1169,6 +1305,21 @@ Result := FEdit.Text; end; +function TCustomEditButton.GetTextHint: TTranslateString; +begin + Result := FEdit.TextHint; +end; + +function TCustomEditButton.GetTextHintFontColor: TColor; +begin + Result := FEdit.TextHintFontColor; +end; + +function TCustomEditButton.GetTextHintFontStyle: TFontStyles; +begin + Result := FEdit.TextHintFontStyle; +end; + function TCustomEditButton.IsCustomGlyph: Boolean; function _LoadRes: TBitmap; @@ -1760,6 +1911,21 @@ FEdit.TabStop := AValue; end; +procedure TCustomEditButton.SetTextHint(AValue: TTranslateString); +begin + FEdit.TextHint := AValue; +end; + +procedure TCustomEditButton.SetTextHintFontColor(AValue: TColor); +begin + FEdit.TextHintFontColor := AValue; +end; + +procedure TCustomEditButton.SetTextHintFontStyle(AValue: TFontStyles); +begin + FEdit.TextHintFontStyle := AValue; +end; + constructor TCustomEditButton.Create(AOwner: TComponent); var B: TBitmap; @@ -1778,8 +1944,7 @@ TabStop := True; FocusOnButtonClick := False; - with GetControlClassDefaultSize do - SetInitialBounds(0, 0, CX, CY); + SetInitialBounds(0, 0, GetControlClassDefaultSize.CX, GetControlClassDefaultSize.CY); with FButton do begin @@ -1895,6 +2060,7 @@ Button.Enabled:=False; fIsFirstUpdate:=True; fIsFirstSetFormActivate:=True; + TextHint:=rsFilter; end; destructor TCustomControlFilterEdit.Destroy; @@ -1960,7 +2126,7 @@ var NewValue: String; begin - if AValue=rsFilter then + if (TextHint<>'') and (AValue=TextHint) then NewValue:='' else NewValue:=AValue; @@ -1968,11 +2134,6 @@ if (NewValue<>'') or Focused or fJustActivated or (csDesigning in ComponentState) then begin Text:=NewValue; - Font.Color:=clDefault; - end - else begin - Text:=rsFilter; - Font.Color:=clBtnShadow; end; if fFilter=NewValue then exit; fFilter:=NewValue; @@ -1996,10 +2157,25 @@ Handled:=False; if Shift = [] then case Key of - VK_UP: begin MovePrev; Handled:=True; end; - VK_DOWN: begin MoveNext; Handled:=True; end; VK_RETURN: Handled:=ReturnKeyHandled; end; + + if (Shift = []) or (Shift = [ssShift]) then + begin + case Key of + VK_UP: begin MovePrev(ssShift in Shift); Handled:=True; end; + VK_DOWN: begin MoveNext(ssShift in Shift); Handled:=True; end; + VK_PRIOR: begin MovePageUp(ssShift in Shift); Handled:=True; end; + VK_NEXT: begin MovePageDown(ssShift in Shift); Handled:=True; end; + end; + end; + if (Shift = [ssCtrl]) or (Shift = [ssCtrl, ssShift]) then + begin + case Key of + VK_HOME: begin MoveHome(ssShift in Shift); Handled:=True; end; + VK_END: begin MoveEnd(ssShift in Shift); Handled:=True; end; + end; + end; if Handled then Key:=VK_UNKNOWN else @@ -2016,8 +2192,6 @@ begin // inherited; fJustActivated:=False; - if Text=rsFilter then - Text:=''; end; procedure TCustomControlFilterEdit.EditExit; @@ -2030,6 +2204,7 @@ procedure TCustomControlFilterEdit.ButtonClick; begin fJustActivated:=False; + Text:=''; Filter:=''; if FocusOnButtonClick then FEdit.SetFocus; //don't SelectAll here end; @@ -2058,6 +2233,11 @@ IdleConnected:=true; end; +function TCustomControlFilterEdit.IsTextHintStored: Boolean; +begin + Result := TextHint <> rsFilter; +end; + procedure TCustomControlFilterEdit.ResetFilter; begin Filter := ''; @@ -2342,7 +2522,7 @@ function TDateEdit.GetDateFormat: string; begin - Result := FDateFormat; + Result := FFixedDateFormat; end; function TDateEdit.GetDefaultGlyph: TBitmap; @@ -2394,7 +2574,7 @@ if (not DirectInput) and not FUpdatingDate then begin //force a valid date and set FDate - debugln('TDateEdit.SetText: DirectInput = False'); + //debugln('TDateEdit.SetText: DirectInput = False'); if FDefaultToday then FDate := TextToDate(AValue, SysUtils.Date) else @@ -2414,21 +2594,21 @@ doNone : begin S:=''; // no mask - FDateFormat:=''; + FFixedDateFormat:=''; end; doDMY, doMDY : begin S:='99/99/9999;1;_'; if DateOrder=doMDY then - FDateFormat:='mm/dd/yyyy' + FFixedDateFormat:='mm/dd/yyyy' else - FDateFormat:='dd/mm/yyyy'; + FFixedDateFormat:='dd/mm/yyyy'; end; doYMD : begin S:='9999/99/99;1;_'; - FDateFormat:='yyyy/mm/dd'; + FFixedDateFormat:='yyyy/mm/dd'; end; end; D:=GetDate; @@ -2463,6 +2643,7 @@ doYMD : B:=TryEncodeDate(N1,N2,N3,Result); doMDY : B:=TryEncodeDate(N3,N1,N2,Result); doDMY : B:=TryEncodeDate(N3,N2,N1,Result); + else B:=false; end; If not B then // Not sure if TryEncodeDate touches Result. Result:=Def; @@ -2662,14 +2843,19 @@ end; function TDateEdit.TextToDate(AText: String; ADefault: TDateTime): TDateTime; +var + FS: TFormatSettings; begin if Assigned(FOnCustomDate) then FOnCustomDate(Self, AText); if (DateOrder = doNone) then begin - if not TryStrToDate(AText, Result) then + FS := DefaultFormatSettings; + if (FFreeDateFormat <> '') then + FS.ShortDateFormat := FFreeDateFormat; + if not TryStrToDate(AText, Result, FS) then begin - Result := ParseDateNoPredefinedOrder(AText, DefaultFormatSettings); + Result := ParseDateNoPredefinedOrder(AText, FS); if (Result = NullDate) then Result := ADefault; end; end @@ -2677,6 +2863,21 @@ Result := ParseDate(AText,DateOrder,ADefault) end; +procedure TDateEdit.SetFreeDateFormat(AValue: String); +var + D: TDateTime; +begin + if FFreeDateFormat = AValue then Exit; + if (Text <> '') and (FDateOrder = doNone) and (not (csDesigning in ComponentState)) then + begin + D := GetDate; + FFreeDateFormat := AValue; + SetDate(D); //will update the text + end + else + FFreeDateFormat := AValue; +end; + function TDateEdit.GetDate: TDateTime; var ADate: string; @@ -2748,18 +2949,158 @@ end; function TDateEdit.DateToText(Value: TDateTime): String; +var + FS: TFormatSettings; begin if Value = NullDate then Result := '' else begin - if (FDateOrder = doNone) or (FDateFormat = '') then - Result := DateToStr(Value) + if (FDateOrder = doNone) or (FFixedDateFormat = '') then + begin + FS := DefaultFormatSettings; + if (FFreeDateFormat <> '') then + FS.ShortDateFormat := FFreeDateFormat; + Result := DateToStr(Value, FS) + end else - Result := FormatDateTime(FDateFormat, Value) + Result := FormatDateTime(FFixedDateFormat, Value) + end; +end; + +{ TTimeEdit } + +function TTimeEdit.GetTime: TDateTime; +begin + Result := FTime; + if IsEmptyTime then begin + if FDefaultNow then + Result := TimeOf(Now); + end else begin + if Assigned(FOnCustomTime) then + FOnCustomTime(Self, Result); end; end; +function TTimeEdit.GetLayout: Boolean; +begin + Result := FSimpleLayout; +end; + +procedure TTimeEdit.SetLayout(AValue: Boolean); +begin + FSimpleLayout := AValue; +end; + +procedure TTimeEdit.SetTime(AValue: TDateTime); +var + Output: String; +begin + DateTimeToString(Output, DefaultFormatSettings.ShortTimeFormat, AValue); + Text := Output; + FTime := AValue; + IsEmptyTime := False; +end; + +procedure TTimeEdit.SetEmptyTime; +begin + Text := EmptyStr; + FTime := NullDate; + IsEmptyTime := True; +end; + +procedure TTimeEdit.TimePopupReturnTime(Sender: TObject; const ATime: TDateTime); +var + AcceptResult: Boolean; + ReturnedTime: TDateTime; +begin + try + AcceptResult := True; + ReturnedTime := ATime; + if Assigned(FOnAcceptTime) then + FOnAcceptTime(Self, ReturnedTime, AcceptResult); + if AcceptResult then + Self.Time := ReturnedTime; + except + on E:Exception do + MessageDlg(E.Message, mtError, [mbOK], 0); + end; +end; + +procedure TTimeEdit.TimePopupShowHide(Sender: TObject); +begin + FDroppedDown := (Sender as TForm).Visible; +end; + +procedure TTimeEdit.OpenTimePopup; +var + PopupOrigin: TPoint; + ATime: TDateTime; +begin + ParseInput; + PopupOrigin := ControlToScreen(Point(0, Height)); + ATime := GetTime; + if ATime = NullDate then + ATime := SysUtils.Time; + ShowTimePopup(PopupOrigin, ATime, Self.DoubleBuffered, @TimePopupReturnTime, @TimePopupShowHide, FSimpleLayout); +end; + +function TTimeEdit.TryParseInput(AInput: String; out ParseResult: TDateTime): Boolean; +begin + AInput := Trim(AInput); + if (Length(AInput) in [3..4]) and (not AnsiContainsStr(AInput, DefaultFormatSettings.TimeSeparator)) then begin + Insert(DefaultFormatSettings.TimeSeparator, AInput, Length(AInput) - 1); + end; + Result := TryStrToTime(AInput, ParseResult); +end; + +procedure TTimeEdit.ParseInput; +var + TmpResult: TDateTime; +begin + if Trim(Text) = EmptyStr then + SetEmptyTime + else if TryParseInput(Self.Text, TmpResult) then + SetTime(TmpResult) + else + SetTime(FTime); +end; + +function TTimeEdit.GetDefaultGlyph: TBitmap; +begin + Result := TimeGlyph; +end; + +function TTimeEdit.GetDefaultGlyphName: String; +begin + Result := ResBtnTime; +end; + +procedure TTimeEdit.ButtonClick; +begin + inherited ButtonClick; + OpenTimePopup; +end; + +procedure TTimeEdit.EditDblClick; +begin + inherited EditDblClick; + OpenTimePopup; +end; + +procedure TTimeEdit.EditEditingDone; +begin + ParseInput; + inherited EditEditingDone; +end; + +constructor TTimeEdit.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + SetEmptyTime; + FSimpleLayout := True; +end; + { TCalcEdit } function TCalcEdit.GetAsFloat: Double; @@ -2839,7 +3180,7 @@ procedure Register; begin RegisterComponents('Misc', [TEditButton,TFileNameEdit,TDirectoryEdit, - TDateEdit,TCalcEdit]); + TDateEdit,TTimeEdit,TCalcEdit]); end; end. diff -Nru lazarus-1.4.4+dfsg/lcl/extctrls.pp lazarus-1.6+dfsg/lcl/extctrls.pp --- lazarus-1.4.4+dfsg/lcl/extctrls.pp 2015-01-22 22:05:55.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/extctrls.pp 2016-01-01 08:15:24.000000000 +0000 @@ -250,13 +250,16 @@ { TShape } TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, - stEllipse, stCircle, stSquaredDiamond, stDiamond, stTriangle); + stEllipse, stCircle, stSquaredDiamond, stDiamond, + stTriangle, stTriangleLeft, stTriangleRight, stTriangleDown, + stStar, stStarDown); TShape = class(TGraphicControl) private FPen: TPen; FBrush: TBrush; FShape: TShapeType; + function GetStarAngle(N: Integer; ADown: boolean): Double; procedure SetBrush(Value: TBrush); procedure SetPen(Value: TPen); procedure SetShape(Value: TShapeType); @@ -370,7 +373,7 @@ procedure AnchorSplitter(Kind: TAnchorKind; AControl: TControl); property ResizeControl: TControl read GetResizeControl write SetResizeControl; function GetOtherResizeControl: TControl; - procedure MoveSplitter(Offset: integer); + procedure MoveSplitter(Offset: integer); virtual; procedure SetSplitterPosition(NewPosition: integer); function GetSplitterPosition: integer; public @@ -407,6 +410,7 @@ property OnMouseWheel; property OnMouseWheelDown; property OnMouseWheelUp; + property OnPaint; property ParentColor; property ParentShowHint; property PopupMenu; @@ -958,6 +962,9 @@ property TabOrder; property TabStop; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; property Visible; property OnChange; property OnClick; @@ -1082,6 +1089,147 @@ property OnMouseWheel; property OnMouseWheelDown; property OnMouseWheelUp; + property OnPaint; + property OnResize; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + end; + + { TCustomFlowPanel } + + TFlowPanel = class; + TCustomFlowPanel = class; + TFlowPanelControl = class; + TFlowPanelControlList = class; + + TFlowStyle = (fsLeftRightTopBottom, fsRightLeftTopBottom, fsLeftRightBottomTop, fsRightLeftBottomTop, + fsTopBottomLeftRight, fsBottomTopLeftRight, fsTopBottomRightLeft, fsBottomTopRightLeft); + + TWrapAfter = ( + waAuto, // auto + waForce, // always wrap after this control + waAvoid, // try not to wrap after this control, if the control is already at the beginning of the row, wrap though + waForbid); // never wrap after this control + + TFlowPanelControl = class(TCollectionItem) + private + FControl: TControl; + FWrapAfter: TWrapAfter; + procedure SetControl(const aControl: TControl); + procedure SetWrapAfter(const AWrapAfter: TWrapAfter); + protected + procedure SetIndex(Value: Integer); override; + procedure AssignTo(Dest: TPersistent); override; + function FPCollection: TFlowPanelControlList; + function FPOwner: TCustomFlowPanel; + published + property Control: TControl read FControl write SetControl; + property WrapAfter: TWrapAfter read FWrapAfter write SetWrapAfter; + property Index; + end; + + TFlowPanelControlList = class(TOwnedCollection) + private + function GetItem(Index: Integer): TFlowPanelControl; + procedure SetItem(Index: Integer; const AItem: TFlowPanelControl); + protected + function FPOwner: TCustomFlowPanel; + + function Add: TFlowPanelControl; + procedure AddControl(AControl: TControl; AIndex: Integer = -1); + procedure RemoveControl(AControl: TControl); + public + constructor Create(AOwner: TPersistent); + public + function IndexOf(AControl: TControl): Integer; + + property Items[Index: Integer]: TFlowPanelControl read GetItem write SetItem; default; + end; + + TCustomFlowPanel = class(TCustomPanel) + private + FControlList: TFlowPanelControlList; + FAutoWrap: Boolean; + FFlowStyle: TFlowStyle; + procedure SetAutoWrap(const AAutoWrap: Boolean); + procedure SetControlList(const AControlList: TFlowPanelControlList); + procedure SetFlowStyle(const AFlowStyle: TFlowStyle); + protected + procedure CMControlChange(var Message: TCMControlChange); message CM_CONTROLCHANGE; + + procedure AlignControls(AControl: TControl; var RemainingClientRect: TRect); override; + procedure CalculatePreferredSize( + var PreferredWidth, PreferredHeight: integer; + WithThemeSpace: Boolean); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + public + function GetControlIndex(AControl: TControl): Integer; + procedure SetControlIndex(AControl: TControl; Index: Integer); + + property AutoWrap: Boolean read FAutoWrap write SetAutoWrap; + property ControlList: TFlowPanelControlList read FControlList write SetControlList; + property FlowStyle: TFlowStyle read FFlowStyle write SetFlowStyle; + end; + + TFlowPanel = class(TCustomFlowPanel) + published + property Align; + property Alignment; + property Anchors; + property AutoSize; + property AutoWrap default True; + property BevelInner; + property BevelOuter; + property BevelWidth; + property BiDiMode; + property BorderWidth; + property BorderStyle; + property Caption; + property Color; + property Constraints; + property ControlList; + property UseDockManager default True; + property DockSite; + property DoubleBuffered; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property FlowStyle; + property FullRepaint; + property Font; + property ParentBiDiMode; + property ParentColor; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowHint; + property TabOrder; + property TabStop; + property Visible; + property OnAlignInsertBefore; + property OnAlignPosition; + property OnClick; + property OnConstrainedResize; + property OnContextPopup; + property OnDockDrop; + property OnDockOver; + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnGetSiteInfo; + property OnMouseDown; + property OnMouseEnter; + property OnMouseLeave; + property OnMouseMove; + property OnMouseUp; property OnResize; property OnStartDock; property OnStartDrag; @@ -1460,7 +1608,7 @@ begin RegisterComponents('Standard',[TRadioGroup,TCheckGroup,TPanel]); RegisterComponents('Additional',[TImage,TShape,TBevel,TPaintBox, - TNotebook, TLabeledEdit, TSplitter, TTrayIcon, TControlBar]); + TNotebook, TLabeledEdit, TSplitter, TTrayIcon, TControlBar, TFlowPanel]); RegisterComponents('System',[TTimer,TIdleTimer]); RegisterNoIcon([TPage]); end; @@ -1475,6 +1623,7 @@ {$I boundlabel.inc} {$I customlabelededit.inc} {$I custompanel.inc} +{$I customflowpanel.inc} {$I radiogroup.inc} {$I bevel.inc} {$I customimage.inc} diff -Nru lazarus-1.4.4+dfsg/lcl/extdlgs.pas lazarus-1.6+dfsg/lcl/extdlgs.pas --- lazarus-1.4.4+dfsg/lcl/extdlgs.pas 2014-11-29 16:19:38.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/extdlgs.pas 2015-11-06 18:35:28.000000000 +0000 @@ -21,9 +21,9 @@ interface uses - Types, Classes, SysUtils, LCLProc, LResources, LCLType, LCLStrConsts, FileUtil, - Controls, Dialogs, GraphType, Graphics, ExtCtrls, StdCtrls, Forms, - Calendar, Buttons, Masks; + Types, Classes, SysUtils, LCLProc, LResources, LCLType, LCLStrConsts, + FileUtil, LazFileUtils, Controls, Dialogs, GraphType, Graphics, ExtCtrls, + StdCtrls, Forms, Calendar, Buttons, Masks, CalcForm; type @@ -45,7 +45,6 @@ write SetPreviewFileDialog; end; - { TPreviewFileDialog } TPreviewFileDialog = class(TOpenDialog) @@ -61,7 +60,6 @@ property PreviewFileControl: TPreviewFileControl read FPreviewFileControl; end; - { TOpenPictureDialog } TOpenPictureDialog = class(TPreviewFileDialog) @@ -89,7 +87,6 @@ property Filter stored IsFilterStored; end; - { TSavePictureDialog } TSavePictureDialog = class(TOpenPictureDialog) @@ -100,7 +97,6 @@ constructor Create(TheOwner: TComponent); override; end; - { TExtCommonDialog } // A common base class for custom drawn dialogs (Calculator and Calendar). @@ -127,20 +123,7 @@ property DialogPosition: TPosition read FDialogPosition write FDialogPosition default poMainFormCenter; end; - -{ --------------------------------------------------------------------- - Calculator Dialog - ---------------------------------------------------------------------} - -const - DefCalcPrecision = 15; - -type - TCalcState = (csFirst, csValid, csError); - TCalculatorLayout = (clNormal, clSimple); - TCalculatorForm = class; - -{ TCalculatorDialog } + { TCalculatorDialog } TCalculatorDialog = class(TExtCommonDialog) private @@ -152,7 +135,17 @@ FOnChange: TNotifyEvent; FOnCalcKey: TKeyPressEvent; FOnDisplayChange: TNotifyEvent; + FDialogScale: integer; + FColorBtnDigits, + FColorBtnOthers, + FColorBtnMemory, + FColorBtnOk, + FColorBtnCancel, + FColorBtnClear, + FColorDisplayText, + FColorDisplayBack: TColor; function GetDisplay: Double; + procedure SetDialogScale(AValue: integer); protected class procedure WSRegisterClass; override; procedure Change; virtual; @@ -167,53 +160,24 @@ property Memory: Double read FMemory; published property BeepOnError: Boolean read FBeepOnError write FBeepOnError default True; - property CalculatorLayout : TCalculatorLayout Read FLayout Write Flayout; - property Precision: Byte read FPrecision write FPrecision default DefCalcPrecision; + property CalculatorLayout: TCalculatorLayout read FLayout write FLayout default clNormal; + property Precision: Byte read FPrecision write FPrecision default CalcDefPrecision; property Title; property Value: Double read FValue write FValue; property OnCalcKey: TKeyPressEvent read FOnCalcKey write FOnCalcKey; property OnChange: TNotifyEvent read FOnChange write FOnChange; property OnDisplayChange: TNotifyEvent read FOnDisplayChange write FOnDisplayChange; + property DialogScale: integer read FDialogScale write SetDialogScale default 100; + property ColorBtnDigits: TColor read FColorBtnDigits write FColorBtnDigits; + property ColorBtnMemory: TColor read FColorBtnMemory write FColorBtnMemory; + property ColorBtnOk: TColor read FColorBtnOk write FColorBtnOk; + property ColorBtnCancel: TColor read FColorBtnCancel write FColorBtnCancel; + property ColorBtnClear: TColor read FColorBtnClear write FColorBtnClear; + property ColorBtnOthers: TColor read FColorBtnOthers write FColorBtnOthers; + property ColorDisplayText: TColor read FColorDisplayText write FColorDisplayText; + property ColorDisplayBack: TColor read FColorDisplayBack write FColorDisplayBack; end; -{ TCalculatorForm } - - TCalculatorForm = class(TForm) - private - FMainPanel: TPanel; - FCalcPanel: TPanel; - FDisplayPanel: TPanel; - FDisplayLabel: TLabel; - procedure FormKeyPress(Sender: TObject; var Key: char); - procedure CopyItemClick(Sender: TObject); - function GetValue: Double; - procedure PasteItemClick(Sender: TObject); - procedure SetValue(const AValue: Double); - protected - class procedure WSRegisterClass; override; - procedure OkClick(Sender: TObject); - procedure CancelClick(Sender: TObject); - procedure CalcKey(Sender: TObject; var Key: char); - procedure DisplayChange(Sender: TObject); - procedure InitForm(ALayout : TCalculatorLayout); virtual; - property MainPanel: TPanel read FMainPanel; - property CalcPanel: TPanel read FCalcPanel; - property DisplayPanel: TPanel read FDisplayPanel; - property DisplayLabel: TLabel read FDisplayLabel; - public - constructor Create(AOwner: TComponent); override; -// constructor CreateLayout(AOwner: TComponent;ALayout : TCalculatorLayout); - property Value : Double read GetValue write SetValue; - end; - -function CreateCalculatorForm(AOwner: TComponent; ALayout : TCalculatorLayout; AHelpContext: THelpContext): TCalculatorForm; - -{ --------------------------------------------------------------------- - Date Dialog - ---------------------------------------------------------------------} - - -Type { TCalendarDialog } TCalendarDialog = class(TExtCommonDialog) @@ -224,9 +188,9 @@ FMonthChanged: TNotifyEvent; FYearChanged: TNotifyEvent; FOnChange: TNotifyEvent; - FOKCaption:TCaption; - FCancelCaption:TCaption; - FCalendar:TCalendar; + FOKCaption: TCaption; + FCancelCaption: TCaption; + FCalendar: TCalendar; procedure OnDialogClose(Sender: TObject; var CloseAction: TCloseAction); procedure OnDialogCloseQuery(Sender : TObject; var CanClose : boolean); procedure OnCalendarDayChanged(Sender: TObject); @@ -250,18 +214,19 @@ property OnMonthChanged: TNotifyEvent read FMonthChanged write FMonthChanged; property OnYearChanged: TNotifyEvent read FYearChanged write FYearChanged; property OnChange: TNotifyEvent read FOnChange write FOnChange; - property OKCaption:TCaption read FOKCaption write FOKCaption; - property CancelCaption:TCaption read FCancelCaption write FCancelCaption; + property OKCaption: TCaption read FOKCaption write FOKCaption; + property CancelCaption: TCaption read FCancelCaption write FCancelCaption; end; procedure Register; implementation -{$R lcl_calc_images.res} +//no need as buttons don't have glyphs now +//{$R lcl_calc_images.res} -uses - WSExtDlgs; +uses + WSExtDlgs, Math; procedure Register; begin @@ -301,8 +266,7 @@ begin inherited Create(TheOwner); FCompStyle:=csPreviewFileControl; - with GetControlClassDefaultSize do - SetInitialBounds(0, 0, CX, CY); + SetInitialBounds(0, 0, GetControlClassDefaultSize.CX, GetControlClassDefaultSize.CY); end; { TPreviewFileDialog } @@ -472,33 +436,6 @@ fCompStyle:=csSaveFileDialog; end; -type - TCalcBtnKind = - (cbNone, cbNum0, cbNum1, cbNum2, cbNum3, cbNum4, cbNum5, cbNum6, - cbNum7, cbNum8, cbNum9, cbSgn, cbDcm, cbDiv, cbMul, cbSub, - cbAdd, cbSqr, cbPcnt, cbRev, cbEql, cbBck, cbClr, cbMP, - cbMS, cbMR, cbMC, cbOk, cbCancel); - -const - BtnPos: array[TCalculatorLayout, TCalcBtnKind] of TPoint = - (((X: -1; Y: -1), (X: 47; Y: 104), (X: 47; Y: 80), (X: 85; Y: 80), - (X: 123; Y: 80), (X: 47; Y: 56), (X: 85; Y: 56), (X: 123; Y: 56), - (X: 47; Y: 32), (X: 85; Y: 32), (X: 123; Y: 32), (X: 85; Y: 104), - (X: 123; Y: 104), (X: 161; Y: 32), (X: 161; Y: 56), (X: 161; Y: 80), - (X: 161; Y: 104), (X: 199; Y: 32), (X: 199; Y: 56), (X: 199; Y: 80), - (X: 199; Y: 104), (X: 145; Y: 6), (X: 191; Y: 6), (X: 5; Y: 104), - (X: 5; Y: 80), (X: 5; Y: 56), (X: 5; Y: 32), - (X: 47; Y: 6), (X: 85; Y: 6)), - ((X: -1; Y: -1), (X: 6; Y: 75), (X: 6; Y: 52), (X: 29; Y: 52), - (X: 52; Y: 52), (X: 6; Y: 29), (X: 29; Y: 29), (X: 52; Y: 29), - (X: 6; Y: 6), (X: 29; Y: 6), (X: 52; Y: 6), (X: 52; Y: 75), - (X: 29; Y: 75), (X: 75; Y: 6), (X: 75; Y: 29), (X: 75; Y: 52), - (X: 75; Y: 75), (X: -1; Y: -1), (X: -1; Y: -1), (X: -1; Y: -1), - (X: 52; Y: 98), (X: 29; Y: 98), (X: 6; Y: 98), (X: -1; Y: -1), - (X: -1; Y: -1), (X: -1; Y: -1), (X: -1; Y: -1), - (X: -1; Y: -1), (X: -1; Y: -1))); - ResultKeys = [#13, '=', '%']; - { --------------------------------------------------------------------- Auxiliary ---------------------------------------------------------------------} @@ -515,24 +452,6 @@ end; end; -function CreateCalculatorForm(AOwner: TComponent; ALayout : TCalculatorLayout; AHelpContext: THelpContext): TCalculatorForm; -begin - Result:=TCalculatorForm.Create(AOwner); - with Result do - try - HelpContext:=AHelpContext; - if Screen.PixelsPerInch <> 96 then - begin { scale to screen res } - SetDefaultFont(Font, ALayout); - Left:=(Screen.Width div 2) - (Width div 2); - Top:=(Screen.Height div 2) - (Height div 2); - end; - except - Free; - raise; - end; -end; - { TExtCommonDialog } @@ -588,510 +507,24 @@ end; -{ --------------------------------------------------------------------- - Calculator Dialog - ---------------------------------------------------------------------} - -{ TCalcButton } - -type - TCalcButton = class(TCustomSpeedButton) - private - FKind: TCalcBtnKind; - public - constructor CreateKind(AOwner: TComponent; AKind: TCalcBtnKind); - property Kind: TCalcBtnKind read FKind; - property ParentFont; - end; - -constructor TCalcButton.CreateKind(AOwner: TComponent; AKind: TCalcBtnKind); -begin - inherited Create(AOwner); - FKind:=AKind; - if FKind in [cbNum0..cbClr] then - Tag:=Ord(Kind) - 1 - else - Tag:=-1; -end; - -function CreateCalcBtn(AParent: TWinControl; AKind: TCalcBtnKind; - AOnClick: TNotifyEvent; ALayout: TCalculatorLayout): TCalcButton; -const - BtnSizes: array[TCalculatorLayout,1..2] of Integer = - ((36,22),(21,21)); - BtnCaptions: array[cbSgn..cbMC] of String = - ('±', ',', '/', '*', '-', '+', 'sqrt', '%', '1/x', '=', '<-', 'C', - 'MP','MS','MR','MC'); -begin - Result:=TCalcButton.CreateKind(AParent, AKind); - with Result do - try - if Kind in [cbNum0..cbNum9] then - Caption:=IntToStr(Tag) - else if Kind = cbDcm then - Caption:=DefaultFormatSettings.DecimalSeparator - else if Kind in [cbSgn..cbMC] then - Caption:=BtnCaptions[Kind]; - Left:=BtnPos[ALayout, Kind].X; - Top:=BtnPos[ALayout, Kind].Y; - Width:=BtnSizes[ALayout,1]; - Height:=BtnSizes[ALayout,2]; - OnClick:=AOnClick; - ParentFont:=True; - Parent:=AParent; - except - Free; - raise; - end; -end; - -{ TCalculatorPanel } - -type - TCalculatorPanel = class(TPanel) - private - FText: string; - FStatus: TCalcState; - FOperator: Char; - FOperand: Double; - FMemory: Double; - FPrecision: Byte; - FBeepOnError: Boolean; - FMemoryPanel: TPanel; - FMemoryLabel: TLabel; - FOnError: TNotifyEvent; - FOnOk: TNotifyEvent; - FOnCancel: TNotifyEvent; - FOnResult: TNotifyEvent; - FOnTextChange: TNotifyEvent; - FOnCalcKey: TKeyPressEvent; - FOnDisplayChange: TNotifyEvent; - FControl: TControl; - procedure SetCalcText(const Value: string); - procedure CheckFirst; - procedure CalcKey(Key: char); - procedure Clear; - procedure Error; - procedure SetDisplay(R: Double); - function GetDisplay: Double; - procedure UpdateMemoryLabel; - function FindButton(Key: Char): TCustomSpeedButton; - procedure BtnClick(Sender: TObject); - protected - procedure ErrorBeep; - procedure TextChange; virtual; - class procedure WSRegisterClass; override; - public - constructor CreateLayout(AOwner: TComponent; ALayout: TCalculatorLayout); - procedure CalcKeyPress(Sender: TObject; var Key: char); - procedure Copy; - procedure Paste; - function WorkingPrecision : Integer; - property DisplayValue: Double read GetDisplay write SetDisplay; - property Text: string read FText; - property OnOkClick: TNotifyEvent read FOnOk write FOnOk; - property OnCancelClick: TNotifyEvent read FOnCancel write FOnCancel; - property OnResultClick: TNotifyEvent read FOnResult write FOnResult; - property OnError: TNotifyEvent read FOnError write FOnError; - property OnTextChange: TNotifyEvent read FOnTextChange write FOnTextChange; - property OnCalcKey: TKeyPressEvent read FOnCalcKey write FOnCalcKey; - property OnDisplayChange: TNotifyEvent read FOnDisplayChange write FOnDisplayChange; - property Color default clBtnFace; - end; - -constructor TCalculatorPanel.CreateLayout(AOwner: TComponent; ALayout: TCalculatorLayout); -const - PanelSizes: array[TCalculatorLayout,1..2] of Integer = - ((129,140),(124,98)); - BtnGlyphs: array[TCalculatorLayout,cbSgn..cbCancel] of String = - (('btncalcpmin','','','btncalcmul','btncalcmin','btncalcplus', '', - '','','','','','','','','', 'btncalcok', 'btncalccancel'), - ('btncalcpmin','','','btncalcmul','btncalcmin','btncalcplus', '', - '','','','','','','','','', 'btncalcok', 'btncalccancel') - ); -var - I: TCalcBtnKind; - Bitmap: TCustomBitmap; -begin - inherited Create(AOwner); - ParentColor:=False; - Color:=clBtnFace; - Height:=PanelSizes[ALayout,1]; - Width:=PanelSizes[ALayout,2]; - SetDefaultFont(Font, ALayout); - ParentFont:=False; - BevelOuter:=bvNone; - BevelInner:=bvNone; - ParentColor:=True; - for I:=cbNum0 to cbCancel do - begin - if BtnPos[ALayout, I].X > 0 then - with CreateCalcBtn(Self, I, @BtnClick, ALayout) do - begin - if ALayout = clNormal then - begin - if (Kind in [cbBck, cbClr]) then - Width:=44; - if (Kind in [cbSgn..cbCancel]) then - if (BtnGlyphs[ALayout,Kind]<>'') then - begin - Caption:=''; - Bitmap := TPixmap.Create; - try - Bitmap.LoadFromResourceName(hInstance, BtnGlyphs[ALayout,Kind]); - Glyph.Assign(Bitmap); - finally - Bitmap.Free; - end; - end; - end - else - begin - if Kind in [cbEql] then Width:=44; - end; - end; - end; - if ALayout = clNormal then - begin - { Memory panel } - FMemoryPanel:=TPanel.Create(Self); - with FMemoryPanel do - begin - SetBounds(6, 7, 34, 20); - BevelInner:=bvLowered; - BevelOuter:=bvNone; - ParentColor:=True; - Parent:=Self; - end; - FMemoryLabel:=TLabel.Create(Self); - with FMemoryLabel do - begin - SetBounds(3, 3, 26, 14); - Alignment:=taCenter; - AutoSize:=False; - Parent:=FMemoryPanel; - Font.Style:=[]; - end; - end; - FText:='0'; - FMemory:=0.0; - FPrecision:=DefCalcPrecision; - FBeepOnError:=True; -end; - -procedure TCalculatorPanel.SetCalcText(const Value: string); -begin - if FText <> Value then - begin - FText:=Value; - TextChange; - end; -end; - -procedure TCalculatorPanel.TextChange; -begin - if Assigned(FControl) then - TLabel(FControl).Caption:=FText; - if Assigned(FOnTextChange) then - FOnTextChange(Self); -end; - -class procedure TCalculatorPanel.WSRegisterClass; -begin - inherited WSRegisterClass; - RegisterCalculatorPanel; -end; - -procedure TCalculatorPanel.ErrorBeep; - -begin - if FBeepOnError then - // MessageBeep(0); -end; - -procedure TCalculatorPanel.Error; -begin - FStatus:=csError; - SetCalcText(rsError); - ErrorBeep; - if Assigned(FOnError) then - FOnError(Self); -end; - -procedure TCalculatorPanel.SetDisplay(R: Double); -var - S: string; -begin - S:=FloatToStrF(R, ffGeneral, WorkingPrecision, 0); - if FText <> S then - begin - SetCalcText(S); - if Assigned(FOnDisplayChange) then - FOnDisplayChange(Self); - end; -end; - -function TCalculatorPanel.GetDisplay: Double; -begin - if (FStatus=csError) then - Result:=0.0 - else - Result:=StrToDouble(Trim(FText)); -end; - -procedure TCalculatorPanel.CheckFirst; -begin - if (FStatus=csFirst) then - begin - FStatus:=csValid; - SetCalcText('0'); - end; -end; - -procedure TCalculatorPanel.UpdateMemoryLabel; -begin - if (FMemoryLabel<>nil) then - if (FMemory<>0.0) then - FMemoryLabel.Caption:='M' - else - FMemoryLabel.Caption:=''; -end; - -function TCalculatorPanel.WorkingPrecision : Integer; - -begin - Result:=2; - If FPrecision>2 then - Result:=FPrecision; -end; - - -procedure TCalculatorPanel.CalcKey(Key: char); -var - R: Double; -begin -{$IFDEF GTK1} - Key:=UpCase(Key); -{$ENDIF GTK1} - if (FStatus = csError) and (Key <> 'C') then - Key:=#0; - if Assigned(FOnCalcKey) then - FOnCalcKey(Self, Key); - if Key in [DefaultFormatSettings.DecimalSeparator, '.', ','] then - begin - CheckFirst; - if Pos(DefaultFormatSettings.DecimalSeparator, FText) = 0 then - SetCalcText(FText + DefaultFormatSettings.DecimalSeparator); - end - else - case Key of - 'R': - if (FStatus in [csValid, csFirst]) then - begin - FStatus:=csFirst; - if GetDisplay = 0 then - Error - else - SetDisplay(1.0 / GetDisplay); - end; - 'Q': - if FStatus in [csValid, csFirst] then - begin - FStatus:=csFirst; - if GetDisplay < 0 then - Error - else - SetDisplay(Sqrt(GetDisplay)); - end; - '0'..'9': - begin - CheckFirst; - if (FText='0') then - SetCalcText(''); - if (Pos('E', FText)=0) then - begin - if (Length(FText) < WorkingPrecision + Ord(Boolean(Pos('-', FText)))) then - SetCalcText(FText + Key) - else - ErrorBeep; - end; - end; - #8: - begin - CheckFirst; - if ((Length(FText)=1) or ((Length(FText)=2) and (FText[1]='-'))) then - SetCalcText('0') - else - SetCalcText(System.Copy(FText,1,Length(FText)-1)); - end; - '_': - SetDisplay(-GetDisplay); - '+', '-', '*', '/', '=', '%', #13: - begin - if (FStatus=csValid) then - begin - FStatus:=csFirst; - R:=GetDisplay; - if (Key='%') then - case FOperator of - '+', '-': R:=(FOperand*R)/100.0; - '*', '/': R:=R/100.0; - end; - case FOperator of - '+': SetDisplay(FOperand+R); - '-': SetDisplay(FOperand-R); - '*': SetDisplay(FOperand*R); - '/': if R = 0 then - Error - else - SetDisplay(FOperand / R); - end; - end; - FOperator:=Key; - FOperand:=GetDisplay; - if (Key in ResultKeys) and Assigned(FOnResult) then - FOnResult(Self); - end; - #27, 'C': - Clear; - ^C: - Copy; - ^V: - Paste; - end; -end; - -procedure TCalculatorPanel.Clear; -begin - FStatus:=csFirst; - SetDisplay(0.0); - FOperator:='='; -end; - -procedure TCalculatorPanel.CalcKeyPress(Sender: TObject; var Key: char); - -var - Btn: TCustomSpeedButton; - -begin - Btn:=FindButton(Key); - if Assigned(Btn) then - Btn.Click - else - CalcKey(Key); -end; - -function TCalculatorPanel.FindButton(Key: Char): TCustomSpeedButton; -const - ButtonChars = '0123456789_./*-+Q%R='#8'C'; -var - I: Integer; - BtnTag: Longint; -begin - if Key in [DefaultFormatSettings.DecimalSeparator, '.', ','] then - Key:='.' - else if Key = #13 then - Key:='=' - else if Key = #27 then - Key:='C'; - Result:=nil; - BtnTag:=Pos(UpCase(Key), ButtonChars) - 1; - if (BtnTag>=0) then - begin - I:=0; - While (Result=Nil) and (I<ControlCount) do - begin - if Controls[I] is TCustomSpeedButton then - If BtnTag=TCustomSpeedButton(Controls[I]).Tag then - Result:=TCustomSpeedButton(Controls[I]); - Inc(I); - end; - end; -end; - -procedure TCalculatorPanel.BtnClick(Sender: TObject); -begin - case TCalcButton(Sender).Kind of - cbNum0..cbNum9: CalcKey(Char(TComponent(Sender).Tag + Ord('0'))); - cbSgn: CalcKey('_'); - cbDcm: CalcKey(DefaultFormatSettings.DecimalSeparator); - cbDiv: CalcKey('/'); - cbMul: CalcKey('*'); - cbSub: CalcKey('-'); - cbAdd: CalcKey('+'); - cbSqr: CalcKey('Q'); - cbPcnt: CalcKey('%'); - cbRev: CalcKey('R'); - cbEql: CalcKey('='); - cbBck: CalcKey(#8); - cbClr: CalcKey('C'); - cbMP: - if (FStatus in [csValid, csFirst]) then - begin - FStatus:=csFirst; - FMemory:=FMemory + GetDisplay; - UpdateMemoryLabel; - end; - cbMS: - if FStatus in [csValid, csFirst] then - begin - FStatus:=csFirst; - FMemory:=GetDisplay; - UpdateMemoryLabel; - end; - cbMR: - if (FStatus in [csValid, csFirst]) then - begin - FStatus:=csFirst; - CheckFirst; - SetDisplay(FMemory); - end; - cbMC: - begin - FMemory:=0.0; - UpdateMemoryLabel; - end; - cbOk: - begin - if FStatus <> csError then - begin - DisplayValue:=DisplayValue; { to raise exception on error } - if Assigned(FOnOk) then - FOnOk(Self); - end - else - ErrorBeep; - end; - cbCancel: - if Assigned(FOnCancel) then - FOnCancel(Self); - end; -end; - -procedure TCalculatorPanel.Copy; -begin - // Clipboard.AsText:=FText; -end; - -procedure TCalculatorPanel.Paste; -begin -{ if Clipboard.HasFormat(CF_TEXT) then - try - SetDisplay(StrToFloat(Trim(ReplaceStr(Clipboard.AsText, - CurrencyString, '')))); - except - SetCalcText('0'); - end; -} -end; - { TCalculatorDialog } constructor TCalculatorDialog.Create(AOwner: TComponent); begin inherited Create(AOwner); - FPrecision:=DefCalcPrecision; + FPrecision:=CalcDefPrecision; FBeepOnError:=True; + FDialogScale:=100; + FLayout:=clNormal; + + FColorBtnDigits:=cColorBtnDigits; + FColorBtnOthers:=cColorBtnOthers; + FColorBtnMemory:=cColorBtnMemory; + FColorBtnOk:=cColorBtnOk; + FColorBtnCancel:=cColorBtnCancel; + FColorBtnClear:=cColorBtnClear; + FColorDisplayText:=cColorDisplayText; + FColorDisplayBack:=cColorDisplayBack; end; destructor TCalculatorDialog.Destroy; @@ -1110,10 +543,19 @@ function TCalculatorDialog.GetDisplay: Double; begin if Assigned(DlgForm) then - Result:=TCalculatorPanel(TCalculatorForm(DlgForm).FCalcPanel).GetDisplay + Result:=TCalculatorForm(DlgForm).CalcPanel.DisplayValue else Result:=FValue; end; +procedure TCalculatorDialog.SetDialogScale(AValue: integer); +const + cMinSize = 80; + cMaxSize = 400; +begin + if FDialogScale=AValue then Exit; + FDialogScale:=Max(cMinSize, Min(cMaxSize, AValue)); +end; + procedure TCalculatorDialog.CalcKey(var Key: char); begin if Assigned(FOnCalcKey) then FOnCalcKey(Self, Key); @@ -1139,8 +581,22 @@ var CPanel: TCalculatorPanel; begin + cColorBtnDigits:=FColorBtnDigits; + cColorBtnOthers:=FColorBtnOthers; + cColorBtnMemory:=FColorBtnMemory; + cColorBtnOk:=FColorBtnOk; + cColorBtnCancel:=FColorBtnCancel; + cColorBtnClear:=FColorBtnClear; + cColorDisplayText:=FColorDisplayText; + cColorDisplayBack:=FColorDisplayBack; + DlgForm:=CreateCalculatorForm(Application, FLayout, HelpContext); try + (DlgForm as TCalculatorForm).OnCalcKey:= @Self.CalcKey; + (DlgForm as TCalculatorForm).OnDisplayChange:= @Self.DisplayChange; + + if FDialogScale<>100 then + DlgForm.ScaleBy(FDialogScale,100); if (csDesigning in ComponentState) then DlgForm.Position:=poScreenCenter else @@ -1152,19 +608,20 @@ FLeft:=DlgForm.Left; FTop:=DlgForm.Top; end; - CPanel:=TCalculatorPanel(TCalculatorForm(DlgForm).FCalcPanel); + CPanel:=TCalculatorForm(DlgForm).CalcPanel; + DlgForm.Caption:=Title; - CPanel.FMemory:=FMemory; + CPanel.Memory:=FMemory; CPanel.UpdateMemoryLabel; If Precision>2 then - CPanel.FPrecision:=Precision + CPanel.Precision:=Precision else - CPanel.FPrecision:=2; - CPanel.FBeepOnError:=BeepOnError; + CPanel.Precision:=2; + CPanel.BeepOnError:=BeepOnError; if FValue <> 0 then begin CPanel.DisplayValue:=FValue; - CPanel.FStatus:=csFirst; - CPanel.FOperator:='='; + CPanel.Status:=csFirst; + CPanel.OperatorChar:='='; end; Result := (DlgForm.ShowModal = mrOk); FLeft := DlgForm.Left; @@ -1173,7 +630,7 @@ SetHeight(DlgForm.Height); SetWidth(DlgForm.Width); if Result then begin - FMemory:=CPanel.FMemory; + FMemory:=CPanel.Memory; if CPanel.DisplayValue <> FValue then begin FValue:=CPanel.DisplayValue; Change; @@ -1185,134 +642,6 @@ end; end; -{ TCalculatorForm } - -constructor TCalculatorForm.Create(AOwner: TComponent); -begin - BeginFormUpdate; - inherited CreateNew(AOwner, 0); - InitForm(clNormal); - EndFormUpdate; -end; -{ -constructor TCalculatorForm.CreateLayout(AOwner: TComponent;ALayout : TCalculatorLayout); -begin - BeginFormUpdate; - inherited CreateNew(AOwner, 0); - InitForm(ALayout); - EndFormUpdate; -end; -} - -procedure TCalculatorForm.InitForm(ALayout : TCalculatorLayout); -begin - BorderStyle:=bsDialog; - Caption:=rsCalculator; - ClientHeight:=159; - ClientWidth:=242; - SetDefaultFont(Font, ALayout); - KeyPreview:=True; - PixelsPerInch:=96; - Position:=poScreenCenter; - OnKeyPress:=@FormKeyPress; - { MainPanel } - FMainPanel:=TPanel.Create(Self); - with FMainPanel do - begin - Align:=alClient; - Parent:=Self; - BevelOuter:=bvLowered; - ParentColor:=True; - end; - { DisplayPanel } - FDisplayPanel:=TPanel.Create(Self); - with FDisplayPanel do - begin - SetBounds(6, 6, 230, 23); - Parent:=FMainPanel; - BevelOuter:=bvLowered; - Color:=clWhite; - Font:=Self.Font; - end; - FDisplayLabel:=TLabel.Create(Self); - with FDisplayLabel do - begin - AutoSize:=False; - Alignment:=taRightJustify; - SetBounds(5, 2, 217, 15); - Parent:=FDisplayPanel; - Caption:='0'; - Font.Color:=clBlack; - end; - { CalcPanel } - FCalcPanel:=TCalculatorPanel.CreateLayout(Self, ALayout); - with TCalculatorPanel(FCalcPanel) do - begin - Align:=alBottom; - Top:=17; - Anchors:=[akLeft,akRight,AkBottom]; - Parent:=FMainPanel; - OnOkClick:=@Self.OkClick; - OnCancelClick:=@Self.CancelClick; - OnCalcKey:=@Self.CalcKey; - OnDisplayChange:=@Self.DisplayChange; - FControl:=FDisplayLabel; - end; -end; - - -procedure TCalculatorForm.FormKeyPress(Sender: TObject; var Key: char); -begin - TCalculatorPanel(FCalcPanel).CalcKeyPress(Sender, Key); -end; - -procedure TCalculatorForm.CopyItemClick(Sender: TObject); -begin - TCalculatorPanel(FCalcPanel).Copy; -end; - -function TCalculatorForm.GetValue: Double; -begin - Result:=TCalculatorPanel(FCalcPanel).DisplayValue -end; - -procedure TCalculatorForm.PasteItemClick(Sender: TObject); -begin - TCalculatorPanel(FCalcPanel).Paste; -end; - -procedure TCalculatorForm.SetValue(const AValue: Double); -begin - TCalculatorPanel(FCalcPanel).DisplayValue:=AValue; -end; - -class procedure TCalculatorForm.WSRegisterClass; -begin - inherited WSRegisterClass; - RegisterCalculatorForm; -end; - -procedure TCalculatorForm.OkClick(Sender: TObject); -begin - ModalResult:=mrOk; -end; - -procedure TCalculatorForm.CancelClick(Sender: TObject); -begin - ModalResult:=mrCancel; -end; - -procedure TCalculatorForm.CalcKey(Sender: TObject; var Key: char); -begin - if (Owner <> nil) and (Owner is TCalculatorDialog) then - TCalculatorDialog(Owner).CalcKey(Key); -end; - -procedure TCalculatorForm.DisplayChange(Sender: TObject); -begin - if (Owner <> nil) and (Owner is TCalculatorDialog) then - TCalculatorDialog(Owner).DisplayChange; -end; { --------------------------------------------------------------------- TCalendarDialog diff -Nru lazarus-1.4.4+dfsg/lcl/extgraphics.pas lazarus-1.6+dfsg/lcl/extgraphics.pas --- lazarus-1.4.4+dfsg/lcl/extgraphics.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/extgraphics.pas 2015-11-08 10:20:17.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: extgraphics.pas 41387 2013-05-24 18:30:06Z juha $ } +{ $Id: extgraphics.pas 50252 2015-11-08 10:20:17Z mattias $ } { /*************************************************************************** extgraphics.pas @@ -13,7 +13,7 @@ for details about the license. ***************************************************************************** } -unit extgraphics; +unit ExtGraphics; {$mode objfpc}{$H+} @@ -187,13 +187,10 @@ procedure PolycNewPaintRect(var PR:TRect; cP:TPoint; wv,hv:Integer); begin - with PR do - begin - Left:=cP.x-wv; - Right:=cP.x+wv; - Top:=cP.y-hv; - Bottom:=cP.y+hv; - end; + PR.Left:=cP.x-wv; + PR.Right:=cP.x+wv; + PR.Top:=cP.y-hv; + PR.Bottom:=cP.y+hv; end; procedure PolycFixCenterpoint @@ -304,21 +301,18 @@ (var P:array of TPoint;const R:TRect;var NumPts:Integer); var dx,dy:Integer; begin - with R do - begin - dx:=(Right-Left)div 4; - dy:=(Bottom-Top)div 4; - P[0].x:=Left; P[0].y:=Top+(Bottom-Top) div 2; - P[1].x:=Left+dx; P[1].y:=Top; - P[2].x:=P[1].x; P[2].y:=Top+dy; - P[3].x:=Right-dx;P[3].y:=P[2].y; - P[4].x:=P[3].x; P[4].y:= Top; - P[5].x:=Right; P[5].y:=P[0].y; - P[6].x:=P[3].x; P[6].y:=Bottom; - P[7].x:=P[3].x; P[7].y:=Bottom-dy; - P[8].x:=P[1].x; P[8].y:=P[7].y; - P[9].x:=P[1].x; P[9].y:=Bottom; - end; + dx:=(R.Right-R.Left)div 4; + dy:=(R.Bottom-R.Top)div 4; + P[0].x:=R.Left; P[0].y:=R.Top+(R.Bottom-R.Top) div 2; + P[1].x:=R.Left+dx; P[1].y:=R.Top; + P[2].x:=P[1].x; P[2].y:=R.Top+dy; + P[3].x:=R.Right-dx;P[3].y:=P[2].y; + P[4].x:=P[3].x; P[4].y:= R.Top; + P[5].x:=R.Right; P[5].y:=P[0].y; + P[6].x:=P[3].x; P[6].y:=R.Bottom; + P[7].x:=P[3].x; P[7].y:=R.Bottom-dy; + P[8].x:=P[1].x; P[8].y:=P[7].y; + P[9].x:=P[1].x; P[9].y:=R.Bottom; NumPts:=10; end; @@ -327,64 +321,60 @@ var RmLpW,BmTpH:extended;cntPoint:TPoint; begin cntPoint:=CenterPoint(R); - with R do begin - RmLpW:=(Right-Left)/140; - BmTpH:=(Bottom-Top)/160; - P[0].x:=cntPoint.x-round(RmLpW*10); P[0].y:=Bottom; - P[34].x:=cntPoint.x+round(RmLpW*10);P[34].y:=P[0].y; - P[1].x:=P[0].x; P[1].y:=Bottom-round(BmTpH*50); - P[33].x:=P[34].x; P[33].y:=P[1].y; - P[2].x:=cntPoint.x-round(RmLpW*35); P[2].y:=P[1].y; - P[32].x:=cntPoint.x+round(RmLpW*35);P[32].y:=P[2].y; - P[3].x:=cntPoint.x-round(RmLpW*48); P[3].y:=Bottom-round(BmTpH*98); - P[31].x:=cntPoint.x+round(RmLpW*48);P[31].y:=P[3].y; - P[4].x:=left; P[4].y:=top; - P[30].x:=Right; P[30].y:=P[4].y; - P[5].x:=cntPoint.x-round(RmLpW*42); P[5].y:=Top+round(BmTpH*4); - P[29].x:=cntPoint.x+round(RmLpW*42);P[29].y:=P[5].y; - P[6].x:=cntPoint.x-round(RmLpW*40); P[6].y:=Top+round(BmTpH*6); - P[28].x:=cntPoint.x+round(RmLpW*40);P[28].y:=P[6].y; - P[7].x:=cntPoint.x-round(RmLpW*39); P[7].y:=Top+round(BmTpH*11); - P[27].x:=cntPoint.x+round(RmLpW*39);P[27].y:=P[7].y; - P[8].x:=cntPoint.x-round(RmLpW*45); P[8].y:=Top+round(BmTpH*16); - P[26].x:=cntPoint.x+round(RmLpW*45);P[26].y:=P[8].y; - P[9].x:=cntPoint.x-round(RmLpW*45); P[9].y:=Top+round(BmTpH*21); - P[25].x:=cntPoint.x+round(RmLpW*45);P[25].y:=P[9].y; - P[10].x:=cntPoint.x-round(RmLpW*32);P[10].y:=Top+round(BmTpH*47); - P[24].x:=cntPoint.x+round(RmLpW*32);P[24].y:=P[10].y; - P[11].x:=cntPoint.x-round(RmLpW*28);P[11].y:=Top+round(BmTpH*70); - P[23].x:=cntPoint.x+round(RmLpW*28);P[23].y:=P[11].y; - P[12].x:=cntPoint.x-round(RmLpW*22);P[12].y:=Top+round(BmTpH*92); - P[22].x:=cntPoint.x+round(RmLpW*22);P[22].y:=P[12].y; - P[13].x:=P[0].x; P[13].y:=P[12].y; - P[21].x:=P[34].x; P[21].y:=P[13].y; - P[14].x:=P[0].x; P[14].y:=Top+round(BmTpH*30); - P[20].x:=P[34].x; P[20].y:=P[14].y; - P[15].x:=cntPoint.x-round(RmLpW*22);P[15].y:=Top+round(BmTpH*22); - P[19].x:=cntPoint.x+round(RmLpW*22);P[19].y:=P[15].y; - P[16].x:=cntPoint.x-round(RmLpW*9); P[16].y:=Top+round(BmTpH*12); - P[18].x:=cntPoint.x+round(RmLpW*9); P[18].y:=P[16].y; - P[17].x:=cntPoint.x; P[17].y:=Top; + RmLpW:=(R.Right-R.Left)/140; + BmTpH:=(R.Bottom-R.Top)/160; + P[0].x:=cntPoint.x-round(RmLpW*10); P[0].y:=R.Bottom; + P[34].x:=cntPoint.x+round(RmLpW*10);P[34].y:=P[0].y; + P[1].x:=P[0].x; P[1].y:=R.Bottom-round(BmTpH*50); + P[33].x:=P[34].x; P[33].y:=P[1].y; + P[2].x:=cntPoint.x-round(RmLpW*35); P[2].y:=P[1].y; + P[32].x:=cntPoint.x+round(RmLpW*35);P[32].y:=P[2].y; + P[3].x:=cntPoint.x-round(RmLpW*48); P[3].y:=R.Bottom-round(BmTpH*98); + P[31].x:=cntPoint.x+round(RmLpW*48);P[31].y:=P[3].y; + P[4].x:=R.left; P[4].y:=R.top; + P[30].x:=R.Right; P[30].y:=P[4].y; + P[5].x:=cntPoint.x-round(RmLpW*42); P[5].y:=R.Top+round(BmTpH*4); + P[29].x:=cntPoint.x+round(RmLpW*42);P[29].y:=P[5].y; + P[6].x:=cntPoint.x-round(RmLpW*40); P[6].y:=R.Top+round(BmTpH*6); + P[28].x:=cntPoint.x+round(RmLpW*40);P[28].y:=P[6].y; + P[7].x:=cntPoint.x-round(RmLpW*39); P[7].y:=R.Top+round(BmTpH*11); + P[27].x:=cntPoint.x+round(RmLpW*39);P[27].y:=P[7].y; + P[8].x:=cntPoint.x-round(RmLpW*45); P[8].y:=R.Top+round(BmTpH*16); + P[26].x:=cntPoint.x+round(RmLpW*45);P[26].y:=P[8].y; + P[9].x:=cntPoint.x-round(RmLpW*45); P[9].y:=R.Top+round(BmTpH*21); + P[25].x:=cntPoint.x+round(RmLpW*45);P[25].y:=P[9].y; + P[10].x:=cntPoint.x-round(RmLpW*32);P[10].y:=R.Top+round(BmTpH*47); + P[24].x:=cntPoint.x+round(RmLpW*32);P[24].y:=P[10].y; + P[11].x:=cntPoint.x-round(RmLpW*28);P[11].y:=R.Top+round(BmTpH*70); + P[23].x:=cntPoint.x+round(RmLpW*28);P[23].y:=P[11].y; + P[12].x:=cntPoint.x-round(RmLpW*22);P[12].y:=R.Top+round(BmTpH*92); + P[22].x:=cntPoint.x+round(RmLpW*22);P[22].y:=P[12].y; + P[13].x:=P[0].x; P[13].y:=P[12].y; + P[21].x:=P[34].x; P[21].y:=P[13].y; + P[14].x:=P[0].x; P[14].y:=R.Top+round(BmTpH*30); + P[20].x:=P[34].x; P[20].y:=P[14].y; + P[15].x:=cntPoint.x-round(RmLpW*22);P[15].y:=R.Top+round(BmTpH*22); + P[19].x:=cntPoint.x+round(RmLpW*22);P[19].y:=P[15].y; + P[16].x:=cntPoint.x-round(RmLpW*9); P[16].y:=R.Top+round(BmTpH*12); + P[18].x:=cntPoint.x+round(RmLpW*9); P[18].y:=P[16].y; + P[17].x:=cntPoint.x; P[17].y:=R.Top; - end; NumPts:=35; end; procedure InitBigI(var P:array of TPoint; const R: TRect; var NumPts:Integer); var dx,dy:Integer; begin - with R do begin - dx:=(Right-Left) div 4; - dy:=(Bottom-Top) div 18; - P[0].x:=Left; P[0].y:=Top; - P[1].x:=Right; P[1].y:=TOP; - P[2].x:=Right-dx; P[2].y:=Top+dy; - P[3].x:=P[2].x; P[3].y:=Bottom-dy; - P[4].x:=Right; P[4].y:=Bottom; - P[5].x:=Left; P[5].y:=Bottom; - P[6].x:=Left+dx;P[6].y:=P[3].y; - P[7].x:=P[6].x;P[7].y:=P[2].y; - end; + dx:=(R.Right-R.Left) div 4; + dy:=(R.Bottom-R.Top) div 18; + P[0].x:=R.Left; P[0].y:=R.Top; + P[1].x:=R.Right; P[1].y:=R.TOP; + P[2].x:=R.Right-dx; P[2].y:=R.Top+dy; + P[3].x:=P[2].x; P[3].y:=R.Bottom-dy; + P[4].x:=R.Right; P[4].y:=R.Bottom; + P[5].x:=R.Left; P[5].y:=R.Bottom; + P[6].x:=R.Left+dx;P[6].y:=P[3].y; + P[7].x:=P[6].x;P[7].y:=P[2].y; NumPts:=8; end; @@ -392,24 +382,21 @@ var dy:Integer;cntPoint:TPoint; begin cntPoint:=CenterPoint(R); - with R do - begin - dy:=(Bottom - Top) div 4; - P[0].x:=Left; - P[0].y:=Top+dy; - P[1].x:=cntPoint.x; - P[1].y:=P[0].y; - P[2].x:=cntPoint.x; - P[2].y:=Top; - P[3].x:=Right; - P[3].y:=cntPoint.y; - P[4].x:=cntPoint.x; - P[4].y:= Bottom; - P[5].x:= cntPoint.x; - P[5].y:=Bottom-dy; - P[6].x:= Left; - P[6].y:=P[5].y; - end; + dy:=(R.Bottom - R.Top) div 4; + P[0].x:=R.Left; + P[0].y:=R.Top+dy; + P[1].x:=cntPoint.x; + P[1].y:=P[0].y; + P[2].x:=cntPoint.x; + P[2].y:=R.Top; + P[3].x:=R.Right; + P[3].y:=cntPoint.y; + P[4].x:=cntPoint.x; + P[4].y:= R.Bottom; + P[5].x:= cntPoint.x; + P[5].y:=R.Bottom-dy; + P[6].x:= R.Left; + P[6].y:=P[5].y; NumPts:=7; end; @@ -421,59 +408,57 @@ BmTpLH //(Bottom-Top)/ LeafHeight :extended; begin - with R do begin - xcenter:=Left+(Right - Left) div 2; - p[0].y:=Top; - p[0].x:=xcenter; - RmLpLW:=(Right - Left)/LeafWidth; - BmTpLH:=(Bottom-Top)/ LeafHeight; - x2:=RoundToInt(RmLpLW*5); - P[1].x:=xcenter-x2; P[1].y:=RoundToInt(BmTpLH*9+Top); - P[32].x:=xcenter+x2; P[32].y:=P[1].y; - x2:=RoundToInt(RmLpLW*10); - P[2].x:=xcenter-x2; P[2].y:=RoundToInt(BmTpLH *7+Top); - P[31].x:=xcenter+x2; P[31].y:=P[2].y; - x2:=RoundToInt(RmLpLW*7); - P[3].x:=xcenter-x2; P[3].y:=RoundToInt(BmTpLH*21+Top); - P[30].x:=xcenter+x2; P[30].y:=P[3].y; - x2:=RoundToInt(RmLpLW*9); - P[4].x:=xcenter-x2; P[4].y:=P[3].y; - P[29].x:=xcenter+x2; P[29].y:=P[3].y; - x2:=RoundtoInt(RmLpLW*15); - P[5].x:=xcenter-x2; P[5].y:=RoundtoInt(BmTpLH*15+Top); - P[28].x:=xcenter+x2; P[28].y:=P[5].y; - x2:=RoundtoInt(RmLpLW*17); - P[6].x:=xcenter-x2; P[6].y:=RoundtoInt(BmTpLH*19+Top); - P[27].x:=xcenter+x2; P[27].y:=P[6].y; - x2:=RoundtoInt(RmLpLW*24); - P[7].x:=xcenter-x2; P[7].y:=RoundtoInt(BmTpLH*17+Top); - P[26].x:=xcenter+x2; P[26].y:=P[7].y; - x2:=RoundtoInt(RmLpLW*22); - P[8].x:=xcenter-x2; P[8].y:=RoundtoInt(BmTpLH*26+Top); - P[25].x:=xcenter+x2; P[25].y:=P[8].y; - x2:=RoundtoInt(RmLpLW*25); - P[9].x:=xcenter-x2; P[9].y:=RoundtoInt(BmTpLH*28+Top); - P[24].x:=xcenter+x2; P[24].y:=P[9].y; - x2:=RoundtoInt(RmLpLW*14); - P[10].x:=xcenter-x2; P[10].y:=RoundtoInt(BmTpLH*38+Top); - P[23].x:=xcenter+x2; P[23].y:=P[10].y; - x2:=RoundtoInt(RmLpLW*15); - P[11].x:=xcenter-x2; P[11].y:=RoundtoInt(BmTpLH*43+Top); - P[22].x:=xcenter+x2; P[22].y:=P[11].y; - x2:=RoundtoInt(RmLpLW); - P[12].x:=xcenter-x2; P[12].y:=RoundtoInt(BmTpLH*41+Top); - P[21].x:=xcenter+x2; P[21].y:=P[12].y; - x2:=RoundtoInt(RmLpLW/2); - P[13].x:=xcenter-x2; P[13].y:=RoundtoInt(BmTpLH*42+Top); - P[20].x:=xcenter+x2; P[20].y:=P[13].y; - P[14].x:=P[13].x; P[14].y:=RoundtoInt(BmTpLH*47+Top); - P[19].x:=P[20].x; P[19].y:=P[14].y; - x2:=RoundtoInt(RmLpLW); - P[15].x:=xcenter-x2; P[15].y:=P[14].y; - P[18].x:=xcenter+x2; P[18].y:=P[14].y; - P[16].x:=P[15].x; P[16].y:=bottom; - P[17].x:=P[18].x; P[17].y:=bottom; - end; + xcenter:=R.Left+(R.Right - R.Left) div 2; + p[0].y:=R.Top; + p[0].x:=xcenter; + RmLpLW:=(R.Right - R.Left)/LeafWidth; + BmTpLH:=(R.Bottom-R.Top)/ LeafHeight; + x2:=RoundToInt(RmLpLW*5); + P[1].x:=xcenter-x2; P[1].y:=RoundToInt(BmTpLH*9+R.Top); + P[32].x:=xcenter+x2; P[32].y:=P[1].y; + x2:=RoundToInt(RmLpLW*10); + P[2].x:=xcenter-x2; P[2].y:=RoundToInt(BmTpLH *7+R.Top); + P[31].x:=xcenter+x2; P[31].y:=P[2].y; + x2:=RoundToInt(RmLpLW*7); + P[3].x:=xcenter-x2; P[3].y:=RoundToInt(BmTpLH*21+R.Top); + P[30].x:=xcenter+x2; P[30].y:=P[3].y; + x2:=RoundToInt(RmLpLW*9); + P[4].x:=xcenter-x2; P[4].y:=P[3].y; + P[29].x:=xcenter+x2; P[29].y:=P[3].y; + x2:=RoundtoInt(RmLpLW*15); + P[5].x:=xcenter-x2; P[5].y:=RoundtoInt(BmTpLH*15+R.Top); + P[28].x:=xcenter+x2; P[28].y:=P[5].y; + x2:=RoundtoInt(RmLpLW*17); + P[6].x:=xcenter-x2; P[6].y:=RoundtoInt(BmTpLH*19+R.Top); + P[27].x:=xcenter+x2; P[27].y:=P[6].y; + x2:=RoundtoInt(RmLpLW*24); + P[7].x:=xcenter-x2; P[7].y:=RoundtoInt(BmTpLH*17+R.Top); + P[26].x:=xcenter+x2; P[26].y:=P[7].y; + x2:=RoundtoInt(RmLpLW*22); + P[8].x:=xcenter-x2; P[8].y:=RoundtoInt(BmTpLH*26+R.Top); + P[25].x:=xcenter+x2; P[25].y:=P[8].y; + x2:=RoundtoInt(RmLpLW*25); + P[9].x:=xcenter-x2; P[9].y:=RoundtoInt(BmTpLH*28+R.Top); + P[24].x:=xcenter+x2; P[24].y:=P[9].y; + x2:=RoundtoInt(RmLpLW*14); + P[10].x:=xcenter-x2; P[10].y:=RoundtoInt(BmTpLH*38+R.Top); + P[23].x:=xcenter+x2; P[23].y:=P[10].y; + x2:=RoundtoInt(RmLpLW*15); + P[11].x:=xcenter-x2; P[11].y:=RoundtoInt(BmTpLH*43+R.Top); + P[22].x:=xcenter+x2; P[22].y:=P[11].y; + x2:=RoundtoInt(RmLpLW); + P[12].x:=xcenter-x2; P[12].y:=RoundtoInt(BmTpLH*41+R.Top); + P[21].x:=xcenter+x2; P[21].y:=P[12].y; + x2:=RoundtoInt(RmLpLW/2); + P[13].x:=xcenter-x2; P[13].y:=RoundtoInt(BmTpLH*42+R.Top); + P[20].x:=xcenter+x2; P[20].y:=P[13].y; + P[14].x:=P[13].x; P[14].y:=RoundtoInt(BmTpLH*47+R.Top); + P[19].x:=P[20].x; P[19].y:=P[14].y; + x2:=RoundtoInt(RmLpLW); + P[15].x:=xcenter-x2; P[15].y:=P[14].y; + P[18].x:=xcenter+x2; P[18].y:=P[14].y; + P[16].x:=P[15].x; P[16].y:=R.bottom; + P[17].x:=P[18].x; P[17].y:=R.bottom; NumPts:=33; end; @@ -481,22 +466,19 @@ (var P:array of TPoint;const R:TRect; var NumPts:Integer); var dx:Integer; begin - with R do - begin - dx:=(Right - Left) div 3; - P[0].x:=Left; - P[0].y:=Top; - P[1].x:= Right-dx; - P[1].y:=Top; - P[2].x:=Right; - P[2].y:=(Top+Bottom) div 2; - P[3].x:=P[1].x; - P[3].y:=Bottom; - P[4].x:=Left; - P[4].y:= Bottom; - P[5].x:= Left+dx; - P[5].y:=P[2].y; - end; + dx:=(R.Right - R.Left) div 3; + P[0].x:=R.Left; + P[0].y:=R.Top; + P[1].x:= R.Right-dx; + P[1].y:=R.Top; + P[2].x:=R.Right; + P[2].y:=(R.Top+R.Bottom) div 2; + P[3].x:=P[1].x; + P[3].y:=R.Bottom; + P[4].x:=R.Left; + P[4].y:= R.Bottom; + P[5].x:= R.Left+dx; + P[5].y:=P[2].y; NumPts:=6; end; @@ -517,15 +499,13 @@ procedure InitHexagon(var P:array of TPoint;const R: TRect;var NumPts:Integer); var dx:Integer; begin - with R do begin - dx:=round(((Right - Left) /2*cos(DegToRad(15)))/2); - P[0].x:=Left+dx; P[0].y:=Top; - P[1].x:=Left; P[1].y:=(Top+Bottom) div 2; - P[2].x:=P[0].x; P[2].y:= Bottom; - P[3].x:=Right-dx; P[3].y:=Bottom; - P[4].x:=Right; P[4].y:=P[1].y; - P[5].x:=Right-dx; P[5].y:=Top; - end; + dx:=round(((R.Right - R.Left) /2*cos(DegToRad(15)))/2); + P[0].x:=R.Left+dx; P[0].y:=R.Top; + P[1].x:=R.Left; P[1].y:=(R.Top+R.Bottom) div 2; + P[2].x:=P[0].x; P[2].y:= R.Bottom; + P[3].x:=R.Right-dx; P[3].y:=R.Bottom; + P[4].x:=R.Right; P[4].y:=P[1].y; + P[5].x:=R.Right-dx; P[5].y:=R.Top; NumPts:=6; end; @@ -533,31 +513,26 @@ (var P:array of TPoint;const R:TRect;var NumPts:Integer); begin InitBoldArrow(P,R,NumPts); - with R do - begin - P[7].x:=Left+(Right-Left) div 4; - P[7].y:=P[3].y; // centerpoint y - end; + P[7].x:=R.Left+(R.Right-R.Left) div 4; + P[7].y:=P[3].y; // centerpoint y NumPts:=8; end; procedure InitOctogon(var P:array of TPoint;const R: TRect;var NumPts:Integer); var dx,dy:Integer; begin - with R do begin - dx:=Right - Left; - dx:=round((dx-dx/(sqrt(2)+1))/2); - dy:=Bottom - Top; - dy:=round((dy-dy/(sqrt(2)+1))/2); - P[0].x:=Left+dx; P[0].y:=Top; - P[1].x:=Right-dx;P[1].y:=Top; - P[2].x:=Right; P[2].y:= Top+dy; - P[3].x:=Right; P[3].y:=Bottom-dy; - P[4].x:=P[1].x; P[4].y:=Bottom; - P[5].x:=P[0].x; P[5].y:=Bottom; - P[6].x:=Left; P[6].y:= P[3].y; - P[7].x:=Left; P[7].y:= P[2].y; - end; + dx:=R.Right - R.Left; + dx:=round((dx-dx/(sqrt(2)+1))/2); + dy:=R.Bottom - R.Top; + dy:=round((dy-dy/(sqrt(2)+1))/2); + P[0].x:=R.Left+dx; P[0].y:=R.Top; + P[1].x:=R.Right-dx;P[1].y:=R.Top; + P[2].x:=R.Right; P[2].y:= R.Top+dy; + P[3].x:=R.Right; P[3].y:=R.Bottom-dy; + P[4].x:=P[1].x; P[4].y:=R.Bottom; + P[5].x:=P[0].x; P[5].y:=R.Bottom; + P[6].x:=R.Left; P[6].y:= P[3].y; + P[7].x:=R.Left; P[7].y:= P[2].y; NumPts:=8; end; @@ -570,47 +545,40 @@ procedure InitPlus(var P:array of TPoint;const R: TRect;var NumPts:Integer); var CrossX,Crossy:integer; begin - with R do - begin - CrossX:=(Right-Left) div 3 ; - CrossY:=(Bottom-Top) div 3 ; - P[ 0].x:=Left; P[ 0].y:=Top+CrossY; - P[ 1].x:=Left+CrossX; P[ 1].y:=P[0].y; - P[ 2].x:=P[ 1].x; P[ 2].y:= Top; - P[ 3].x:=Right-CrossX; P[ 3].y:=P[2].y; - P[ 4].x:=P[ 3].x; P[ 4].y:=P[ 0].y; - P[ 5].x:=Right; P[ 5].y:=P[4].y; - P[ 6].x:=P[ 5].x; P[ 6].y:=Bottom-CrossY; - P[ 7].x:=P[ 3].x; P[ 7].y:=P[6].y; - P[ 8].x:=P[ 7].x; P[ 8].y:=Bottom; - P[ 9].x:=P[ 1].x; P[ 9].y:=P[8].y; - P[10].x:=P[ 9].x; P[10].y:=P[ 6].y; - P[11].x:=Left; P[11].y:=P[10].y; - P[12].x:=P[11].x; P[12].y:=P[ 0].y; - end; + CrossX:=(R.Right-R.Left) div 3 ; + CrossY:=(R.Bottom-R.Top) div 3 ; + P[ 0].x:=R.Left; P[ 0].y:=R.Top+CrossY; + P[ 1].x:=R.Left+CrossX; P[ 1].y:=P[0].y; + P[ 2].x:=P[ 1].x; P[ 2].y:= R.Top; + P[ 3].x:=R.Right-CrossX; P[ 3].y:=P[2].y; + P[ 4].x:=P[ 3].x; P[ 4].y:=P[ 0].y; + P[ 5].x:=R.Right; P[ 5].y:=P[4].y; + P[ 6].x:=P[ 5].x; P[ 6].y:=R.Bottom-CrossY; + P[ 7].x:=P[ 3].x; P[ 7].y:=P[6].y; + P[ 8].x:=P[ 7].x; P[ 8].y:=R.Bottom; + P[ 9].x:=P[ 1].x; P[ 9].y:=P[8].y; + P[10].x:=P[ 9].x; P[10].y:=P[ 6].y; + P[11].x:=R.Left; P[11].y:=P[10].y; + P[12].x:=P[11].x; P[12].y:=P[ 0].y; NumPts:=13; end; procedure InitQuadrangle (var P:array of TPoint;const R: TRect;var NumPts:Integer); begin - with R do begin - P[0].x:=Left; P[0].y:=Top; - P[1].x:=Left; P[1].y:=Bottom; - P[2].x:=Right; P[2].y:= Bottom; - P[3].x:=Right; P[3].y:=Top; - end; + P[0].x:=R.Left; P[0].y:=R.Top; + P[1].x:=R.Left; P[1].y:=R.Bottom; + P[2].x:=R.Right; P[2].y:= R.Bottom; + P[3].x:=R.Right; P[3].y:=R.Top; NumPts:=4; end; procedure InitRightTriangle (var P:array of TPoint; const R: TRect; var NumPts:Integer); begin - with R do begin - P[0].x:=Left; P[0].y:=Top; - P[1].x:=Right; P[1].y:=Bottom; - P[2].x:=P[0].x; P[2].y:= Bottom; - end; + P[0].x:=R.Left; P[0].y:=R.Top; + P[1].x:=R.Right; P[1].y:=R.Bottom; + P[2].x:=P[0].x; P[2].y:= R.Bottom; NumPts:=3; end; @@ -618,33 +586,29 @@ procedure InitSwastika(var P:array of TPoint;const R: TRect;var NumPts:Integer); var x1,x2,y1,y2:Integer; begin - with r do begin - x1:=(Right-Left) div 5; - y1:=(Bottom-Top) div 5; - x2:=(Right-Left)*2 div 5; - y2:=(Bottom-Top)*2 div 5; - P[0].x:=Left;P[0].y:=Top; P[1].x:=Left+x1;P[1].y:=Top; - P[2].x:=P[1].x;P[2].y:=Top+y2;P[3].x:=Left+x2;P[3].y:=P[2].y; - P[4].x:=P[3].x;P[4].y:=Top;P[5].x:=Right;P[5].y:=P[4].y; - P[6].x:=P[5].x;P[6].y:=Top+y1;P[7].x:=Right-x2;P[7].y:=P[6].y; - P[8].x:=P[7].x;P[8].y:=p[2].y;P[9].x:=Right;P[9].y:=P[8].y; - P[10].x:=P[9].x;P[10].y:=Bottom;P[11].x:=Right-x1;P[11].y:=P[10].y; - P[12].x:=P[11].x;P[12].y:=Bottom-y2;P[13].x:=P[7].x;P[13].y:=P[12].y; - P[14].x:=P[13].x;P[14].y:=Bottom;P[15].x:=Left;P[15].y:=P[14].y; - P[16].x:=P[15].x;P[16].y:=Bottom-y1;P[17].x:=Left+x2;P[17].y:=P[16].y; - P[18].x:=P[17].x;P[18].y:=Bottom-y2;P[19].x:=Left;P[19].y:=P[18].y; - end; + x1:=(R.Right-R.Left) div 5; + y1:=(R.Bottom-R.Top) div 5; + x2:=(R.Right-R.Left)*2 div 5; + y2:=(R.Bottom-R.Top)*2 div 5; + P[0].x:=R.Left;P[0].y:=R.Top; P[1].x:=R.Left+x1;P[1].y:=R.Top; + P[2].x:=P[1].x;P[2].y:=R.Top+y2;P[3].x:=R.Left+x2;P[3].y:=P[2].y; + P[4].x:=P[3].x;P[4].y:=R.Top;P[5].x:=R.Right;P[5].y:=P[4].y; + P[6].x:=P[5].x;P[6].y:=R.Top+y1;P[7].x:=R.Right-x2;P[7].y:=P[6].y; + P[8].x:=P[7].x;P[8].y:=p[2].y;P[9].x:=R.Right;P[9].y:=P[8].y; + P[10].x:=P[9].x;P[10].y:=R.Bottom;P[11].x:=R.Right-x1;P[11].y:=P[10].y; + P[12].x:=P[11].x;P[12].y:=R.Bottom-y2;P[13].x:=P[7].x;P[13].y:=P[12].y; + P[14].x:=P[13].x;P[14].y:=R.Bottom;P[15].x:=R.Left;P[15].y:=P[14].y; + P[16].x:=P[15].x;P[16].y:=R.Bottom-y1;P[17].x:=R.Left+x2;P[17].y:=P[16].y; + P[18].x:=P[17].x;P[18].y:=R.Bottom-y2;P[19].x:=R.Left;P[19].y:=P[18].y; NumPts:=20; end; procedure InitTriangle(var P:array of TPoint; const R: TRect; var NumPts:Integer); begin - with R do begin - P[0].x:=Left; P[0].y:=Top; - P[1].x:=Right; P[1].y:=Top+(Bottom-Top) div 2; - P[2].x:=P[0].x; P[2].y:= Bottom; - end; + P[0].x:=R.Left; P[0].y:=R.Top; + P[1].x:=R.Right; P[1].y:=R.Top+(R.Bottom-R.Top) div 2; + P[2].x:=P[0].x; P[2].y:= R.Bottom; NumPts:=3; end; @@ -653,20 +617,18 @@ cntPoint: TPoint; begin cntPoint := CenterPoint(R); - with R do begin - P[0].x := Left; - P[0].y := Top; - P[1].x := cntPoint.x; - P[1].y := cntPoint.y; - P[2].x := Right; - P[2].y := Top; - P[3].x := Right; - P[3].y := Bottom; - P[4].x := cntPoint.x; - P[4].y := cntPoint.y; - P[5].x := Left; - P[5].y := Bottom; - end; + P[0].x := R.Left; + P[0].y := R.Top; + P[1].x := cntPoint.x; + P[1].y := cntPoint.y; + P[2].x := R.Right; + P[2].y := R.Top; + P[3].x := R.Right; + P[3].y := R.Bottom; + P[4].x := cntPoint.x; + P[4].y := cntPoint.y; + P[5].x := R.Left; + P[5].y := R.Bottom; NumPts := 6; end; @@ -674,17 +636,14 @@ var cntPoint:TPoint; begin cntPoint:=CenterPoint(R); - with R do - begin - P[0].x:=Left; - P[0].y:=Top; - P[1].x:=Right; - P[1].y:=cntPoint.y; - P[2].x:=Left; - P[2].y:=Bottom; - P[3].x:=cntPoint.x; - P[3].y:=cntPoint.y; - end; + P[0].x:=R.Left; + P[0].y:=R.Top; + P[1].x:=R.Right; + P[1].y:=cntPoint.y; + P[2].x:=R.Left; + P[2].y:=R.Bottom; + P[3].x:=cntPoint.x; + P[3].y:=cntPoint.y; NumPts:=4; end; @@ -792,11 +751,9 @@ PolycSetHalfWidthAndHeight(PR,hv,wv,RadAngle); PolycNewPaintRect(vPR,cntPoint,wv,hv); - with vPR do begin - P[0].x:=Left; P[0].y:=Bottom; - P[1].x:=Left+round((Right-left)* RightLeftFactor); P[1].y:=Top; - P[2].x:=Right; P[2].y:= Bottom; - end; + P[0].x:=vPR.Left; P[0].y:=vPR.Bottom; + P[1].x:=vPR.Left+round((vPR.Right-vPR.left)* RightLeftFactor); P[1].y:=vPR.Top; + P[2].x:=vPR.Right; P[2].y:= vPR.Bottom; CountPts:=3; PaintPolycon(Canvas,PR,RadAngle,P,CountPts,cntPoint); @@ -810,35 +767,39 @@ var Ex1,Ex2,Ey1,Ey2,Sx,Sy,Ex,Ey,i:integer; begin Case AHalfEllipseDirection of - atUp: with PaintRect do begin - Ex1:=Left; Ex2:=Right; - Ex:=Left; Sx:=Right; - i:=Bottom-Top; - Ey1:=Top;Ey2:=Bottom+i; - Sy:=Top+i;Ey:=Top+i; - end; - atDown: with PaintRect do begin - Ex1:=Left; Ex2:=Right; - Sx:=Left; Ex:=Right; - i:=Bottom-Top; - Ey1:=Top-i;Ey2:=Bottom; - Sy:=Top;Ey:=Top; - end; - atRight: with PaintRect do begin - Ey1:=Top; Ey2:=Bottom; - Ey:=Top; Sy:=Bottom; - i:=Right-Left; - Ex1:=Left-i;Ex2:=Right; - Sx:=Left;Ex:=Left; - end; - atLeft: with PaintRect do begin - Ey1:=Top; Ey2:=Bottom; - Sy:=Top; Ey:=Bottom; - i:=Right-Left; - Ex1:=Left;Ex2:=Right+i; - Sx:=Left+i;Ex:=Left+i; - end; - end; ; + atUp: + begin + Ex1:=PaintRect.Left; Ex2:=PaintRect.Right; + Ex:=PaintRect.Left; Sx:=PaintRect.Right; + i:=PaintRect.Bottom-PaintRect.Top; + Ey1:=PaintRect.Top;Ey2:=PaintRect.Bottom+i; + Sy:=PaintRect.Top+i;Ey:=PaintRect.Top+i; + end; + atDown: + begin + Ex1:=PaintRect.Left; Ex2:=PaintRect.Right; + Sx:=PaintRect.Left; Ex:=PaintRect.Right; + i:=PaintRect.Bottom-PaintRect.Top; + Ey1:=PaintRect.Top-i;Ey2:=PaintRect.Bottom; + Sy:=PaintRect.Top;Ey:=PaintRect.Top; + end; + atRight: + begin + Ey1:=PaintRect.Top; Ey2:=PaintRect.Bottom; + Ey:=PaintRect.Top; Sy:=PaintRect.Bottom; + i:=PaintRect.Right-PaintRect.Left; + Ex1:=PaintRect.Left-i;Ex2:=PaintRect.Right; + Sx:=PaintRect.Left;Ex:=PaintRect.Left; + end; + atLeft: + begin + Ey1:=PaintRect.Top; Ey2:=PaintRect.Bottom; + Sy:=PaintRect.Top; Ey:=PaintRect.Bottom; + i:=PaintRect.Right-PaintRect.Left; + Ex1:=PaintRect.Left;Ex2:=PaintRect.Right+i; + Sx:=PaintRect.Left+i;Ex:=PaintRect.Left+i; + end; + end; Canvas.Pie(Ex1,Ey1,Ex2,Ey2,Sx,Sy,Ex,Ey); end; diff -Nru lazarus-1.4.4+dfsg/lcl/filectrl.pp lazarus-1.6+dfsg/lcl/filectrl.pp --- lazarus-1.4.4+dfsg/lcl/filectrl.pp 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/filectrl.pp 2015-07-04 23:08:00.000000000 +0000 @@ -29,7 +29,7 @@ {$endif} uses - Classes, SysUtils, StdCtrls, FileUtil, Masks, Graphics, + Classes, SysUtils, StdCtrls, FileUtil, LazFileUtils, Masks, Graphics, ShellCtrls; Type diff -Nru lazarus-1.4.4+dfsg/lcl/forms/calcform.pas lazarus-1.6+dfsg/lcl/forms/calcform.pas --- lazarus-1.4.4+dfsg/lcl/forms/calcform.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/forms/calcform.pas 2015-09-17 10:42:36.000000000 +0000 @@ -0,0 +1,825 @@ +{ + /*************************************************************************** + calcform.pas + ------------ + Calculator form + + + ***************************************************************************/ + + ***************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** +} + +unit CalcForm; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, + StdCtrls, ExtCtrls, Buttons, Menus, Clipbrd; + +const + CalcDefPrecision = 15; + +type + TCalculatorCalcKeyEvent = procedure (var key: char) of object; + TCalculatorDispChangeEvent = procedure of object; + TCalculatorState = (csFirst, csValid, csError); + + TCalculatorLayout = (clNormal, clSimple); + +{ TCalculatorForm } + +type + TCalculatorPanel = class(TPanel) + private + FText: string; + FStatus: TCalculatorState; + FOperator: Char; + FOperand: Double; + FMemory: Double; + FPrecision: Byte; + FBeepOnError: Boolean; + FMemoryPanel: TPanel; + FMemoryLabel: TLabel; + FOnError: TNotifyEvent; + FOnOk: TNotifyEvent; + FOnCancel: TNotifyEvent; + FOnResult: TNotifyEvent; + FOnTextChange: TNotifyEvent; + FOnCalcKey: TKeyPressEvent; + FOnDisplayChange: TNotifyEvent; + FControl: TControl; + procedure SetCalcText(const Value: string); + procedure CheckFirst; + procedure CalcKey(Key: char); + procedure Clear; + procedure Error; + procedure SetDisplay(R: Double); + function GetDisplay: Double; + function FindButton(Key: Char): TCustomSpeedButton; + procedure BtnClick(Sender: TObject); + protected + procedure ErrorBeep; + procedure TextChange; virtual; + class procedure WSRegisterClass; override; + public + constructor CreateLayout(AOwner: TComponent; ALayout: TCalculatorLayout); + procedure CalcKeyPress(Sender: TObject; var Key: char); + procedure Copy; + procedure Paste; + function WorkingPrecision : Integer; + + procedure UpdateMemoryLabel; + property DisplayValue: Double read GetDisplay write SetDisplay; + property Memory: Double read FMemory write FMemory; + property Precision: byte read FPrecision write FPrecision; + property BeepOnError: boolean read FBeepOnError write FBeepOnError; + property Status: TCalculatorState read FStatus write FStatus; + property OperatorChar: char read FOperator write FOperator; + property Text: string read FText; + + property OnOkClick: TNotifyEvent read FOnOk write FOnOk; + property OnCancelClick: TNotifyEvent read FOnCancel write FOnCancel; + property OnResultClick: TNotifyEvent read FOnResult write FOnResult; + property OnError: TNotifyEvent read FOnError write FOnError; + property OnTextChange: TNotifyEvent read FOnTextChange write FOnTextChange; + property OnCalcKey: TKeyPressEvent read FOnCalcKey write FOnCalcKey; + property OnDisplayChange: TNotifyEvent read FOnDisplayChange write FOnDisplayChange; + property Color default clBtnFace; + end; + + TCalculatorForm = class(TForm) + private + FMainPanel: TPanel; + FCalcPanel: TCalculatorPanel; + FDisplayPanel: TPanel; + FDisplayLabel: TLabel; + FOnCalcKey: TCalculatorCalcKeyEvent; + FOnDisplayChange: TCalculatorDispChangeEvent; + FMenu: TPopupMenu; + procedure FormKeyPress(Sender: TObject; var Key: char); + procedure CopyItemClick(Sender: TObject); + function GetValue: Double; + procedure PasteItemClick(Sender: TObject); + procedure SetValue(const AValue: Double); + protected + class procedure WSRegisterClass; override; + procedure OkClick(Sender: TObject); + procedure CancelClick(Sender: TObject); + procedure CalcKey(Sender: TObject; var Key: char); + procedure DisplayChange(Sender: TObject); + procedure InitForm(ALayout: TCalculatorLayout); virtual; + public + constructor Create(AOwner: TComponent; ALayout: TCalculatorLayout); reintroduce; + property Value: Double read GetValue write SetValue; + + property MainPanel: TPanel read FMainPanel; + property CalcPanel: TCalculatorPanel read FCalcPanel; + property DisplayPanel: TPanel read FDisplayPanel; + property DisplayLabel: TLabel read FDisplayLabel; + + property OnCalcKey: TCalculatorCalcKeyEvent read FOnCalcKey write FOnCalcKey; + property OnDisplayChange: TCalculatorDispChangeEvent read FOnDisplayChange write FOnDisplayChange; + end; + +function CreateCalculatorForm(AOwner: TComponent; + ALayout: TCalculatorLayout; + AHelpContext: THelpContext): TCalculatorForm; + +var + cColorBtnDigits: TColor = clblack; + cColorBtnMemory: TColor = clnavy; + cColorBtnClear: TColor = clred; + cColorBtnOk: TColor = clgreen; + cColorBtnCancel: TColor = clmaroon; + cColorBtnOthers: TColor = clblack; + cColorDisplayText: TColor = clblack; + cColorDisplayBack: TColor = clwhite; + + cCalculatorFontName: string = 'MS Sans Serif'; + cCalculatorFontSize: integer = 8; + cCalculatorFontStyle: TFontStyles = [fsBold]; + + +implementation + +uses + LclProc, WSExtDlgs, LCLStrConsts; + +type + TCalcBtnKind = + (cbNone, cbNum0, cbNum1, cbNum2, cbNum3, cbNum4, cbNum5, cbNum6, + cbNum7, cbNum8, cbNum9, cbSgn, cbDcm, cbDiv, cbMul, cbSub, + cbAdd, cbSqrt, cbSquare, cbPcnt, cbRev, cbEql, cbBck, cbClr, cbMP, + cbMS, cbMR, cbMC, cbOk, cbCancel); + +{$IFDEF Windows} +// Windows: use BitBtn to enable font color on button +{$define CalcBitButtons} +{$ENDIF} + +type + + { TCalcButton } + + TCalcButton = class( + {$IFDEF CalcBitButtons} TCustomBitBtn {$ELSE} TCustomSpeedButton {$ENDIF} + ) + private + FKind: TCalcBtnKind; + public + constructor CreateKind(AOwner: TComponent; AKind: TCalcBtnKind); + property Kind: TCalcBtnKind read FKind; + property ParentFont; + end; + + +const + CalcFormWidth: array[TCalculatorLayout] of integer = (278, 170); + CalcFormHeight: array[TCalculatorLayout] of integer = (160, 150); + CalcBtnEqualWidthNormal = 74; + CalcBtnClearWidthNormal = 50; + CalcBtnEqualWidthSimple = 54; + CalcResultKeys = [#13, '=', '%']; + +const + CalcPanelSizes: array[TCalculatorLayout, 1..2] of Integer = + ((129,140), (124,98)); + CalcBtnSizes: array[TCalculatorLayout, 1..2] of Integer = + ((36,22), (25,21)); + CalcBtnCaptions: array[cbSgn..cbCancel] of String = + ('±', ',', '/', '*', '-', '+', '√ ', 'x²', '%', '1/x', '=', '«', 'C', + 'MP','MS','MR','MC', 'ok', 'x'); + CalcBtnPos: array[TCalculatorLayout, TCalcBtnKind] of TPoint = + (( + //normal layout + (X: -1; Y: -1), (X: 47; Y: 104), (X: 47; Y: 80), (X: 85; Y: 80), + (X: 123; Y: 80), (X: 47; Y: 56), (X: 85; Y: 56), (X: 123; Y: 56), + (X: 47; Y: 32), (X: 85; Y: 32), (X: 123; Y: 32), (X: 85; Y: 104), + (X: 123; Y: 104), (X: 161; Y: 32), (X: 161; Y: 56), (X: 161; Y: 80), + (X: 161; Y: 104), + (X: 199; Y: 32), //sqrt + (X: 199+38; Y: 32), //sqr + (X: 199; Y: 56), //% + (X: 199; Y: 80), //1/x + (X: 199; Y: 104), //= + (X: 170; Y: 6), //back + (X: 223; Y: 6), //clear + (X: 5; Y: 104), (X: 5; Y: 80), (X: 5; Y: 56), (X: 5; Y: 32), //mem + (X: 47; Y: 6), //ok + (X: 100; Y: 6) //cancel + ), + ( + //simple layout + (X: -1; Y: -1), (X: 6; Y: 75), (X: 6; Y: 52), (X: 34; Y: 52), + (X: 62; Y: 52), (X: 6; Y: 29), (X: 34; Y: 29), (X: 62; Y: 29), + (X: 6; Y: 6), (X: 34; Y: 6), (X: 62; Y: 6), (X: 62; Y: 75), + (X: 34; Y: 75), (X: 90; Y: 6), (X: 90; Y: 29), (X: 90; Y: 52), + (X: 90; Y: 75), (X: -1; Y: -1), (X: -1; Y: -1), (X: -1; Y: -1), (X: -1; Y: -1), + (X: 62; Y: 98), (X: 34; Y: 98), (X: 6; Y: 98), (X: -1; Y: -1), + (X: -1; Y: -1), (X: -1; Y: -1), (X: -1; Y: -1), + (X: 140; Y: 6), (X: 140; Y: 29) + )); + +{ funcs } + +procedure SetDefaultFont(AFont: TFont; Layout: TCalculatorLayout); +begin + //AFont.Color:=cCalculatorFontColor; //all controls now have their custom colors + AFont.Name:=cCalculatorFontName; + AFont.Size:=cCalculatorFontSize; + AFont.Style:=cCalculatorFontStyle; +end; + +function CreateCalculatorForm(AOwner: TComponent; ALayout: TCalculatorLayout; AHelpContext: THelpContext): TCalculatorForm; +begin + Result:=TCalculatorForm.Create(AOwner, ALayout); + with Result do + try + HelpContext:=AHelpContext; + if Screen.PixelsPerInch <> 96 then + begin { scale to screen res } + SetDefaultFont(Font, ALayout); + Left:=(Screen.Width - Width) div 2; + Top:=(Screen.Height - Height) div 2; + end; + except + Free; + raise; + end; +end; + +function CreateCalcBtn(AParent: TWinControl; AKind: TCalcBtnKind; + AOnClick: TNotifyEvent; ALayout: TCalculatorLayout): TCalcButton; +begin + Result:=TCalcButton.CreateKind(AParent, AKind); + with Result do + try + if Kind in [cbNum0..cbNum9] then + Caption:=IntToStr(Tag) + else if Kind = cbDcm then + Caption:=DefaultFormatSettings.DecimalSeparator + else if Kind in [cbSgn..cbCancel] then + Caption:=CalcBtnCaptions[Kind]; + + Left:=CalcBtnPos[ALayout, Kind].X; + Top:=CalcBtnPos[ALayout, Kind].Y; + Width:=CalcBtnSizes[ALayout,1]; + Height:=CalcBtnSizes[ALayout,2]; + OnClick:=AOnClick; + ParentFont:=True; + Parent:=AParent; + + case Result.Kind of + cbMC, cbMR, cbMS, cbMP: Result.Font.Color:= cColorBtnMemory; + cbOk: Result.Font.Color:= cColorBtnOk; + cbCancel: Result.Font.Color:= cColorBtnCancel; + cbClr: Result.Font.Color:= cColorBtnClear; + cbNum0..cbNum9: Result.Font.Color:= cColorBtnDigits; + else Result.Font.Color:= cColorBtnOthers; + end; + except + Free; + raise; + end; +end; + + +{ TCalculatorPanel } + +constructor TCalculatorPanel.CreateLayout(AOwner: TComponent; ALayout: TCalculatorLayout); +var + I: TCalcBtnKind; + Bitmap: TCustomBitmap; +begin + inherited Create(AOwner); + ParentColor:=False; + Color:=clBtnFace; + Height:=CalcPanelSizes[ALayout,1]; + Width:=CalcPanelSizes[ALayout,2]; + SetDefaultFont(Font, ALayout); + ParentFont:=False; + BevelOuter:=bvNone; + BevelInner:=bvNone; + ParentColor:=True; + for I:=cbNum0 to cbCancel do + begin + if CalcBtnPos[ALayout, I].X > 0 then + with CreateCalcBtn(Self, I, @BtnClick, ALayout) do + begin + if ALayout=clNormal then + begin + if (Kind in [cbBck, cbClr, cbOk, cbCancel]) then + Width:=CalcBtnClearWidthNormal; + if (Kind in [cbPcnt, cbRev, cbEql]) then + Width:=CalcBtnEqualWidthNormal; + end + else + begin + if Kind in [cbEql] then Width:=CalcBtnEqualWidthSimple; + end; + end; + end; + if ALayout=clNormal then + begin + { Memory panel } + FMemoryPanel:=TPanel.Create(Self); + with FMemoryPanel do + begin + SetBounds(6, 7, 34, 20); + BevelInner:=bvLowered; + BevelOuter:=bvNone; + ParentColor:=True; + Parent:=Self; + end; + FMemoryLabel:=TLabel.Create(Self); + with FMemoryLabel do + begin + SetBounds(3, 3, 26, 14); + Alignment:=taCenter; + AutoSize:=False; + Parent:=FMemoryPanel; + Font.Color:=cColorDisplayText; + Font.Style:=[]; + end; + end; + FText:='0'; + FMemory:=0.0; + FPrecision:=CalcDefPrecision; + FBeepOnError:=True; +end; + +procedure TCalculatorPanel.SetCalcText(const Value: string); +begin + if FText <> Value then + begin + FText:=Value; + TextChange; + end; +end; + +procedure TCalculatorPanel.TextChange; +begin + if Assigned(FControl) then + TLabel(FControl).Caption:=FText; + if Assigned(FOnTextChange) then + FOnTextChange(Self); +end; + +class procedure TCalculatorPanel.WSRegisterClass; +begin + inherited WSRegisterClass; + RegisterCalculatorPanel; +end; + +procedure TCalculatorPanel.ErrorBeep; + +begin + if FBeepOnError then + // MessageBeep(0); +end; + +procedure TCalculatorPanel.Error; +begin + FStatus:=csError; + SetCalcText(rsError); + ErrorBeep; + if Assigned(FOnError) then + FOnError(Self); +end; + +procedure TCalculatorPanel.SetDisplay(R: Double); +var + S: string; +begin + S:=FloatToStrF(R, ffGeneral, WorkingPrecision, 0); + if FText <> S then + begin + SetCalcText(S); + if Assigned(FOnDisplayChange) then + FOnDisplayChange(Self); + end; +end; + +function TCalculatorPanel.GetDisplay: Double; +begin + if (FStatus=csError) then + Result:=0.0 + else + Result:=StrToDouble(Trim(FText)); +end; + +procedure TCalculatorPanel.CheckFirst; +begin + if (FStatus=csFirst) then + begin + FStatus:=csValid; + SetCalcText('0'); + end; +end; + +procedure TCalculatorPanel.UpdateMemoryLabel; +begin + if (FMemoryLabel<>nil) then + if (FMemory<>0.0) then + FMemoryLabel.Caption:='M' + else + FMemoryLabel.Caption:=''; +end; + +function TCalculatorPanel.WorkingPrecision : Integer; + +begin + Result:=2; + If FPrecision>2 then + Result:=FPrecision; +end; + + +procedure TCalculatorPanel.CalcKey(Key: char); +var + R: Double; +begin +{$IFDEF GTK1} + Key:=UpCase(Key); +{$ENDIF GTK1} + if (FStatus = csError) and (Key <> 'C') then + Key:=#0; + if Assigned(FOnCalcKey) then + FOnCalcKey(Self, Key); + if Key in [DefaultFormatSettings.DecimalSeparator, '.', ','] then + begin + CheckFirst; + if Pos(DefaultFormatSettings.DecimalSeparator, FText) = 0 then + SetCalcText(FText + DefaultFormatSettings.DecimalSeparator); + end + else + case Key of + 'R': + if (FStatus in [csValid, csFirst]) then + begin + FStatus:=csFirst; + if GetDisplay = 0 then + Error + else + SetDisplay(1.0 / GetDisplay); + end; + 'Q': + if FStatus in [csValid, csFirst] then + begin + FStatus:=csFirst; + if GetDisplay < 0 then + Error + else + SetDisplay(Sqrt(GetDisplay)); + end; + 'S': + if FStatus in [csValid, csFirst] then + begin + FStatus:=csFirst; + SetDisplay(Sqr(GetDisplay)); + end; + '0'..'9': + begin + CheckFirst; + if (FText='0') then + SetCalcText(''); + if (Pos('E', FText)=0) then + begin + if (Length(FText) < WorkingPrecision + Ord(Boolean(Pos('-', FText)))) then + SetCalcText(FText + Key) + else + ErrorBeep; + end; + end; + #8: + begin + CheckFirst; + if ((Length(FText)=1) or ((Length(FText)=2) and (FText[1]='-'))) then + SetCalcText('0') + else + SetCalcText(System.Copy(FText,1,Length(FText)-1)); + end; + '_': + SetDisplay(-GetDisplay); + '+', '-', '*', '/', '=', '%', #13: + begin + if (FStatus=csValid) then + begin + FStatus:=csFirst; + R:=GetDisplay; + if (Key='%') then + case FOperator of + '+', '-': R:=(FOperand*R)/100.0; + '*', '/': R:=R/100.0; + end; + case FOperator of + '+': SetDisplay(FOperand+R); + '-': SetDisplay(FOperand-R); + '*': SetDisplay(FOperand*R); + '/': if R = 0 then + Error + else + SetDisplay(FOperand / R); + end; + end; + FOperator:=Key; + FOperand:=GetDisplay; + if (Key in CalcResultKeys) and Assigned(FOnResult) then + FOnResult(Self); + end; + #27, 'C': + Clear; + ^C: + Copy; + ^V: + Paste; + end; +end; + +procedure TCalculatorPanel.Clear; +begin + FStatus:=csFirst; + SetDisplay(0.0); + FOperator:='='; +end; + +procedure TCalculatorPanel.CalcKeyPress(Sender: TObject; var Key: char); + +var + Btn: TCustomSpeedButton; + +begin + Btn:=FindButton(Key); + if Assigned(Btn) then + Btn.Click + else + CalcKey(Key); +end; + +function TCalculatorPanel.FindButton(Key: Char): TCustomSpeedButton; +const + ButtonChars = '0123456789_./*-+Q%R='#8'C'; +var + I: Integer; + BtnTag: Longint; +begin + if Key in [DefaultFormatSettings.DecimalSeparator, '.', ','] then + Key:='.' + else if Key = #13 then + Key:='=' + else if Key = #27 then + Key:='C'; + Result:=nil; + BtnTag:=Pos(UpCase(Key), ButtonChars) - 1; + if (BtnTag>=0) then + begin + I:=0; + While (Result=Nil) and (I<ControlCount) do + begin + if Controls[I] is TCustomSpeedButton then + If BtnTag=TCustomSpeedButton(Controls[I]).Tag then + Result:=TCustomSpeedButton(Controls[I]); + Inc(I); + end; + end; +end; + +procedure TCalculatorPanel.BtnClick(Sender: TObject); +begin + case TCalcButton(Sender).Kind of + cbNum0..cbNum9: CalcKey(Char(TComponent(Sender).Tag + Ord('0'))); + cbSgn: CalcKey('_'); + cbDcm: CalcKey(DefaultFormatSettings.DecimalSeparator); + cbDiv: CalcKey('/'); + cbMul: CalcKey('*'); + cbSub: CalcKey('-'); + cbAdd: CalcKey('+'); + cbSqrt: CalcKey('Q'); + cbSquare: CalcKey('S'); + cbPcnt: CalcKey('%'); + cbRev: CalcKey('R'); + cbEql: CalcKey('='); + cbBck: CalcKey(#8); + cbClr: CalcKey('C'); + cbMP: + if (FStatus in [csValid, csFirst]) then + begin + FStatus:=csFirst; + FMemory:=FMemory + GetDisplay; + UpdateMemoryLabel; + end; + cbMS: + if FStatus in [csValid, csFirst] then + begin + FStatus:=csFirst; + FMemory:=GetDisplay; + UpdateMemoryLabel; + end; + cbMR: + if (FStatus in [csValid, csFirst]) then + begin + FStatus:=csFirst; + CheckFirst; + SetDisplay(FMemory); + end; + cbMC: + begin + FMemory:=0.0; + UpdateMemoryLabel; + end; + cbOk: + begin + if FStatus <> csError then + begin + DisplayValue:=DisplayValue; { to raise exception on error } + if Assigned(FOnOk) then + FOnOk(Self); + end + else + ErrorBeep; + end; + cbCancel: + if Assigned(FOnCancel) then + FOnCancel(Self); + end; +end; + +procedure TCalculatorPanel.Copy; +begin + Clipboard.AsText:=FText; +end; + +procedure TCalculatorPanel.Paste; +var + S: string; +begin + if Clipboard.HasFormat(CF_TEXT) then + begin + S:=Clipboard.AsText; + S:=Trim(StringReplace(S, DefaultFormatSettings.CurrencyString, '', [])); + SetDisplay(StrToFloatDef(S, 0.0)); + end; +end; + +{ TCalculatorForm } + +constructor TCalculatorForm.Create(AOwner: TComponent; ALayout: TCalculatorLayout); +begin + BeginFormUpdate; + inherited CreateNew(AOwner, 0); + InitForm(ALayout); + EndFormUpdate; +end; + +procedure TCalculatorForm.InitForm(ALayout: TCalculatorLayout); +var + mi: TMenuItem; +begin + BorderStyle:=bsDialog; + Caption:=rsCalculator; + ClientHeight:=CalcFormHeight[ALayout]; + ClientWidth:=CalcFormWidth[ALayout]; + SetDefaultFont(Font, ALayout); + KeyPreview:=True; + PixelsPerInch:=96; + Position:=poScreenCenter; + OnKeyPress:=@FormKeyPress; + { MainPanel } + FMainPanel:=TPanel.Create(Self); + with FMainPanel do + begin + Align:=alClient; + Parent:=Self; + BevelOuter:=bvLowered; + ParentColor:=True; + end; + { DisplayPanel } + FDisplayPanel:=TPanel.Create(Self); + with FDisplayPanel do + begin + Height:=23; + Align:=alTop; + BorderSpacing.Around:=7; + Parent:=FMainPanel; + BevelOuter:=bvLowered; + Color:=cColorDisplayBack; + Font:=Self.Font; + end; + FDisplayLabel:=TLabel.Create(Self); + with FDisplayLabel do + begin + AutoSize:=False; + Alignment:=taRightJustify; + Align:=alClient; + BorderSpacing.Around:=2; + Parent:=FDisplayPanel; + Caption:='0'; + Font.Color:=cColorDisplayText; + end; + { CalcPanel } + FCalcPanel:=TCalculatorPanel.CreateLayout(Self, ALayout); + with FCalcPanel do + begin + Align:=alBottom; + Top:=17; + Anchors:=[akLeft,akRight,AkBottom]; + Parent:=FMainPanel; + OnOkClick:=@Self.OkClick; + OnCancelClick:=@Self.CancelClick; + OnCalcKey:=@Self.CalcKey; + OnDisplayChange:=@Self.DisplayChange; + FControl:=FDisplayLabel; + end; + { Menu } + FMenu:=TPopupMenu.Create(Self); + DisplayPanel.PopupMenu:=FMenu; + mi:=TMenuItem.Create(Self); + mi.Caption:=rsDoCopy; + mi.OnClick:=@CopyItemClick; + FMenu.Items.Add(mi); + mi:=TMenuItem.Create(Self); + mi.Caption:=rsDoPaste; + mi.OnClick:=@PasteItemClick; + FMenu.Items.Add(mi); +end; + + +procedure TCalculatorForm.FormKeyPress(Sender: TObject; var Key: char); +begin + FCalcPanel.CalcKeyPress(Sender, Key); +end; + +procedure TCalculatorForm.CopyItemClick(Sender: TObject); +begin + FCalcPanel.Copy; +end; + +function TCalculatorForm.GetValue: Double; +begin + Result:=FCalcPanel.DisplayValue +end; + +procedure TCalculatorForm.PasteItemClick(Sender: TObject); +begin + FCalcPanel.Paste; +end; + +procedure TCalculatorForm.SetValue(const AValue: Double); +begin + FCalcPanel.DisplayValue:=AValue; +end; + +class procedure TCalculatorForm.WSRegisterClass; +begin + inherited WSRegisterClass; + RegisterCalculatorForm; +end; + +procedure TCalculatorForm.OkClick(Sender: TObject); +begin + ModalResult:=mrOk; +end; + +procedure TCalculatorForm.CancelClick(Sender: TObject); +begin + ModalResult:=mrCancel; +end; + +procedure TCalculatorForm.CalcKey(Sender: TObject; var Key: char); +begin + if Assigned(FOnCalcKey) then + FOnCalcKey(Key); +end; + +procedure TCalculatorForm.DisplayChange(Sender: TObject); +begin + if Assigned(FOnDisplayChange) then + FOnDisplayChange(); +end; + +{ TCalcButton } + +constructor TCalcButton.CreateKind(AOwner: TComponent; AKind: TCalcBtnKind); +begin + inherited Create(AOwner); + {$IFDEF CalcBitButtons} + TabStop:=false; + {$ENDIF} + FKind:=AKind; + if FKind in [cbNum0..cbClr] then + Tag:=Ord(Kind) - 1 + else + Tag:=-1; +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/lcl/forms/timepopup.lfm lazarus-1.6+dfsg/lcl/forms/timepopup.lfm --- lazarus-1.4.4+dfsg/lcl/forms/timepopup.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/forms/timepopup.lfm 2015-07-25 13:11:10.000000000 +0000 @@ -0,0 +1,240 @@ +object TimePopupForm: TTimePopupForm + Left = 376 + Height = 185 + Top = 246 + Width = 253 + AutoSize = True + BorderIcons = [] + BorderStyle = bsNone + Caption = 'TimePopupForm' + ClientHeight = 185 + ClientWidth = 253 + OnClose = FormClose + OnCreate = FormCreate + OnDeactivate = FormDeactivate + PopupMode = pmAuto + LCLVersion = '1.5' + object MainPanel: TPanel + Left = 0 + Height = 185 + Top = 0 + Width = 253 + Align = alClient + BevelOuter = bvNone + BorderWidth = 1 + BorderStyle = bsSingle + ClientHeight = 181 + ClientWidth = 249 + Color = clWindow + ParentColor = False + TabOrder = 0 + UseDockManager = False + object HoursGrid: TStringGrid + Left = 1 + Height = 43 + Top = 1 + Width = 252 + Align = alTop + AutoFillColumns = True + BorderStyle = bsNone + Color = clBtnFace + ColCount = 12 + Constraints.MinHeight = 42 + Constraints.MinWidth = 252 + ExtendedSelect = False + FixedCols = 0 + FixedRows = 0 + GridLineWidth = 0 + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goDrawFocusSelected, goSmoothScroll, goSelectionActive] + RowCount = 2 + ScrollBars = ssNone + TabOrder = 0 + UseXORFeatures = True + OnDblClick = GridsDblClick + OnKeyDown = GridsKeyDown + ColWidths = ( + 21 + 21 + 21 + 21 + 21 + 21 + 21 + 21 + 21 + 21 + 21 + 21 + ) + Cells = ( + 24 + 0 + 0 + '00' + 0 + 1 + '12' + 1 + 0 + '01' + 1 + 1 + '13' + 2 + 0 + '02' + 2 + 1 + '14' + 3 + 0 + '03' + 3 + 1 + '15' + 4 + 0 + '04' + 4 + 1 + '16' + 5 + 0 + '05' + 5 + 1 + '17' + 6 + 0 + '06' + 6 + 1 + '18' + 7 + 0 + '07' + 7 + 1 + '19' + 8 + 0 + '08' + 8 + 1 + '20' + 9 + 0 + '09' + 9 + 1 + '21' + 10 + 0 + '10' + 10 + 1 + '22' + 11 + 0 + '11' + 11 + 1 + '23' + ) + end + object MinutesGrid: TStringGrid + Left = 1 + Height = 59 + Top = 61 + Width = 252 + Align = alTop + AutoFillColumns = True + BorderStyle = bsNone + ColCount = 6 + Constraints.MinWidth = 252 + FixedCols = 0 + FixedRows = 0 + Flat = True + GridLineWidth = 0 + Options = [goFixedVertLine, goDrawFocusSelected, goSmoothScroll] + RowCount = 2 + ScrollBars = ssNone + TabOrder = 1 + UseXORFeatures = True + OnDblClick = GridsDblClick + OnKeyDown = GridsKeyDown + ColWidths = ( + 42 + 42 + 42 + 42 + 42 + 42 + ) + Cells = ( + 12 + 0 + 0 + '00' + 0 + 1 + '30' + 1 + 0 + '05' + 1 + 1 + '35' + 2 + 0 + '10' + 2 + 1 + '40' + 3 + 0 + '15' + 3 + 1 + '45' + 4 + 0 + '20' + 4 + 1 + '50' + 5 + 0 + '25' + 5 + 1 + '55' + ) + end + object Bevel1: TBevel + Left = 1 + Height = 10 + Top = 51 + Width = 247 + Align = alTop + BorderSpacing.Top = 7 + Shape = bsTopLine + end + object MoreLessBtn: TBitBtn + AnchorSideTop.Control = MinutesGrid + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = MainPanel + AnchorSideRight.Side = asrBottom + Left = 155 + Height = 22 + Hint = 'Ctrl + >' + Top = 125 + Width = 93 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Top = 5 + Caption = '>>' + OnClick = MoreLessBtnClick + TabOrder = 2 + end + end +end diff -Nru lazarus-1.4.4+dfsg/lcl/forms/timepopup.pas lazarus-1.6+dfsg/lcl/forms/timepopup.pas --- lazarus-1.4.4+dfsg/lcl/forms/timepopup.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/forms/timepopup.pas 2015-09-19 14:22:00.000000000 +0000 @@ -0,0 +1,283 @@ +{ + ***************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** + + Author: Michael Fuchs + + Abstract: + Shows a time input popup for a TTimeEdit +} + +unit TimePopup; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, DateUtils, FileUtil, LCLType, Forms, Controls, + Graphics, Dialogs, Grids, ExtCtrls, Buttons, StdCtrls, ActnList; + +type + TReturnTimeEvent = procedure (Sender: TObject; const ATime: TDateTime) of object; + + { TTimePopupForm } + + TTimePopupForm = class(TForm) + Bevel1: TBevel; + MainPanel: TPanel; + HoursGrid: TStringGrid; + MinutesGrid: TStringGrid; + MoreLessBtn: TBitBtn; + procedure GridsDblClick(Sender: TObject); + procedure GridsKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure MoreLessBtnClick(Sender: TObject); + private + FClosed: Boolean; + FOnReturnTime: TReturnTimeEvent; + FSimpleLayout: Boolean; + FPopupOrigin: TPoint; + procedure ActivateDoubleBuffered; + procedure CalcGridHeights; + function GetTime: TDateTime; + procedure Initialize(const PopupOrigin: TPoint; ATime: TDateTime); + procedure KeepInView(const PopupOrigin: TPoint); + procedure ReturnTime; + procedure SetLayout(SimpleLayout: Boolean); + procedure SetTime(ATime: TDateTime); + published + procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormCreate(Sender: TObject); + procedure FormDeactivate(Sender: TObject); + end; + +procedure ShowTimePopup(const Position: TPoint; ATime: TDateTime; const DoubleBufferedForm: Boolean; + const OnReturnTime: TReturnTimeEvent; const OnShowHide: TNotifyEvent = nil; SimpleLayout: Boolean = True); + +implementation + +{$R *.lfm} + +procedure ShowTimePopup(const Position: TPoint; ATime: TDateTime; const DoubleBufferedForm: Boolean; const OnReturnTime: TReturnTimeEvent; + const OnShowHide: TNotifyEvent; SimpleLayout: Boolean); +var + NewForm: TTimePopupForm; +begin + NewForm := TTimePopupForm.Create(nil); + NewForm.Initialize(Position, ATime); + NewForm.FOnReturnTime := OnReturnTime; + NewForm.OnShow := OnShowHide; + NewForm.OnHide := OnShowHide; + if DoubleBufferedForm then + NewForm.ActivateDoubleBuffered; + NewForm.SetLayout(SimpleLayout); + if not SimpleLayout then + NewForm.SetTime(ATime); //update the row and col in the grid; + NewForm.Show; + NewForm.KeepInView(Position); +end; + +procedure TTimePopupForm.SetTime(ATime: TDateTime); +var + Hour, Minute: Integer; +begin + Hour := HourOf(ATime); + Minute := MinuteOf(ATime); + HoursGrid.Col := Hour mod 12; + HoursGrid.Row := Hour div 12; + if FSimpleLayout then + begin + Minute := Minute - (Minute mod 5); + MinutesGrid.Col := (Minute mod 30) div 5; + MinutesGrid.Row := Minute div 30; + end + else + begin + MinutesGrid.Col := Minute mod 5; + MinutesGrid.Row := Minute div 5; + end; +end; + +procedure TTimePopupForm.FormClose(Sender: TObject; var CloseAction: TCloseAction); +begin + FClosed := true; + Application.RemoveOnDeactivateHandler(@FormDeactivate); + CloseAction := caFree; +end; + +procedure TTimePopupForm.FormCreate(Sender: TObject); +begin + FClosed := False; + FSimpleLayout := True; + Application.AddOnDeactivateHandler(@FormDeactivate); + SetLayout(FSimpleLayout); +end; + +procedure TTimePopupForm.FormDeactivate(Sender: TObject); +begin + //Immediately hide the form, otherwise it stays visible while e.g. user is draging + //another form (Issue 0028441) + Hide; + if (not FClosed) then + Close; +end; + +procedure TTimePopupForm.GridsDblClick(Sender: TObject); +begin + ReturnTime; +end; + +procedure TTimePopupForm.GridsKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); +var + Handled: Boolean; +begin + if Shift=[] then begin + Handled := True; + case Key of + VK_ESCAPE : Close; + VK_RETURN, VK_SPACE: ReturnTime; + else + Handled := False; + end; + if Handled then + Key := 0; + end; +end; + +procedure TTimePopupForm.MoreLessBtnClick(Sender: TObject); +var + OldMin: Integer; +begin + if FSimpleLayout then + begin + OldMin := (MinutesGrid.Row * 30) + (MinutesGrid.Col * 5); + if (OldMin < 0) then OldMin := 0; + if (OldMin > 59) then OldMin := 59; + SetLayout(False); + + MinutesGrid.Col := OldMin mod 5; + MinutesGrid.Row := OldMin div 5; + MoreLessBtn.Caption := '<<'; + end + else + begin + OldMin := (MinutesGrid.Row * 5) + (MinutesGrid.Col); + if (OldMin < 0) then OldMin := 0; + if (OldMin > 59) then OldMin := 59; + OldMin := OldMin - (OldMin mod 5); + SetLayout(True); + MinutesGrid.Col := (OldMin mod 30) div 5; + MinutesGrid.Row := OldMin div 30; + MoreLessBtn.Caption := '>>'; + end; +end; + +procedure TTimePopupForm.SetLayout(SimpleLayout: Boolean); +var + r, c: Integer; +begin + MinutesGrid.BeginUpdate; + try + if SimpleLayout then + begin + MoreLessBtn.Caption := '>>'; + MinutesGrid.RowCount := 2; + MinutesGrid.ColCount := 6; + for r := 0 to MinutesGrid.RowCount - 1 do + for c := 0 to MinutesGrid.ColCount - 1 do + begin + //debugln(Format('[%.2d,%.2d]: %.2d',[r,c,(r*30) + (c*5)])); + MinutesGrid.Cells[c,r] := Format('%s%.2d',[DefaultFormatSettings.TimeSeparator,(r*30) + (c*5)]); + end; + end + else + begin + MoreLessBtn.Caption := '<<'; + MinutesGrid.RowCount := 12; + MinutesGrid.ColCount := 5; + for r := 0 to MinutesGrid.RowCount - 1 do + for c := 0 to MinutesGrid.ColCount - 1 do + begin + //debugln(Format('[%.2d,%.2d]: %.2d',[r,c,(r*5) + (c)])); + MinutesGrid.Cells[c,r] := Format('%s%.2d',[DefaultFormatSettings.TimeSeparator,(r*5) + (c)]); + end; + end; + CalcGridHeights; + FSimpleLayout := SimpleLayout; + KeepInView(FPopupOrigin); + finally + MinutesGrid.EndUpdate(True); + end; +end; + +procedure TTimePopupForm.ActivateDoubleBuffered; +begin + Self.DoubleBuffered := True; + HoursGrid.DoubleBuffered := True; + MinutesGrid.DoubleBuffered := True; +end; + +procedure TTimePopupForm.CalcGridHeights; +var + i, RowHeightsSum: Integer; +begin + RowHeightsSum := 0; + for i := 0 to HoursGrid.RowCount - 1 do + RowHeightsSum := RowHeightsSum + HoursGrid.RowHeights[i] + 1; + HoursGrid.Constraints.MinHeight := RowHeightsSum; + RowHeightsSum := 0; + for i := 0 to MinutesGrid.RowCount - 1 do + RowHeightsSum := RowHeightsSum + MinutesGrid.RowHeights[i] + 1; + MinutesGrid.Constraints.MinHeight := RowHeightsSum; + MinutesGrid.Height := RowHeightsSum; +end; + +function TTimePopupForm.GetTime: TDateTime; +var + Hour, Minute: Integer; +begin + Hour := (HoursGrid.Row * 12) + (HoursGrid.Col); + if FSimpleLayout then + Minute := (MinutesGrid.Row * 30) + (MinutesGrid.Col * 5) + else + Minute := (MinutesGrid.Row * 5) + (MinutesGrid.Col); + Result := EncodeTime(Hour, Minute, 0, 0); +end; + +procedure TTimePopupForm.Initialize(const PopupOrigin: TPoint; ATime: TDateTime); +begin + FPopupOrigin := PopupOrigin; + KeepInView(PopupOrigin); + SetTime(ATime); +end; + +procedure TTimePopupForm.KeepInView(const PopupOrigin: TPoint); +var + ABounds: TRect; +begin + ABounds := Screen.MonitorFromPoint(PopupOrigin).BoundsRect; + if PopupOrigin.X + Width > ABounds.Right then + Left := ABounds.Right - Width + else + Left := PopupOrigin.X; + if PopupOrigin.Y + Height > ABounds.Bottom then + Top := ABounds.Bottom - Height + else + Top := PopupOrigin.Y; + //store the fitting point, so the form won't move if it layout is changed back to simple + FPopupOrigin := Point(Left, Top); +end; + +procedure TTimePopupForm.ReturnTime; +begin + if Assigned(FOnReturnTime) then + FOnReturnTime(Self, Self.GetTime); + if not FClosed then + Close; +end; + +end. diff -Nru lazarus-1.4.4+dfsg/lcl/forms.pp lazarus-1.6+dfsg/lcl/forms.pp --- lazarus-1.4.4+dfsg/lcl/forms.pp 2015-04-04 21:49:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/forms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -32,8 +32,8 @@ {$DEFINE HasDefaultValues} uses - Classes, SysUtils, Types, TypInfo, Math, AvgLvlTree, Maps, LCLVersion, - LCLStrConsts, LCLType, LCLProc, LCLIntf, FileUtil, LazUTF8, InterfaceBase, + Classes, SysUtils, Types, TypInfo, Math, Maps, LCLVersion, InterfaceBase, + LCLStrConsts, LCLType, LCLProc, LCLIntf, LazFileUtils, LazUTF8, LResources, GraphType, Graphics, Menus, LMessages, CustomTimer, ActnList, ClipBrd, CustApp, HelpIntfs, LCLClasses, Controls, ImgList, Themes {$ifndef wince},gettext{$endif}// remove ifdefs when gettext is fixed and a new fpc is released @@ -84,7 +84,6 @@ FIncrement: TScrollBarInc; FKind: TScrollBarKind; FPage: TScrollBarInc; - FPosition: Integer; FRange: Integer; // if AutoScroll=true this is the needed size of the child controls FSmooth: Boolean; FTracking: Boolean; @@ -93,6 +92,7 @@ FOldScrollInfoValid: Boolean; protected FControl: TWinControl; + FPosition: Integer; function ControlHandle: HWnd; virtual; function GetAutoScroll: boolean; virtual; function GetIncrement: TScrollBarInc; virtual; @@ -108,7 +108,7 @@ procedure ScrollHandler(var Message: TLMScroll); procedure SetIncrement(const AValue: TScrollBarInc); virtual; procedure SetPage(const AValue: TScrollBarInc); virtual; - procedure SetPosition(const Value: Integer); virtual; + procedure SetPosition(const Value: Integer); procedure SetRange(const AValue: Integer); virtual; procedure SetSmooth(const AValue: Boolean); virtual; procedure SetTracking(const AValue: Boolean); @@ -166,9 +166,8 @@ procedure WMSize(var Message: TLMSize); message LM_Size; procedure WMHScroll(var Message : TLMHScroll); message LM_HScroll; procedure WMVScroll(var Message : TLMVScroll); message LM_VScroll; + procedure WMMouseWheel(var Message: TLMMouseEvent); message LM_MOUSEWHEEL; procedure ComputeScrollbars; virtual; - procedure ScrollbarHandler(ScrollKind: TScrollBarKind; - OldPosition: Integer); virtual; procedure SetAutoScroll(Value: Boolean); virtual; procedure Loaded; override; procedure Resizing(State: TWindowState); virtual; @@ -180,6 +179,7 @@ procedure UpdateScrollbars; class function GetControlClassDefaultSize: TSize; override; procedure ScrollBy(DeltaX, DeltaY: Integer); override; + procedure ScrollInView(AControl: TControl); published property HorzScrollBar: TControlScrollBar read FHorzScrollBar write SetHorzScrollBar; property VertScrollBar: TControlScrollBar read FVertScrollBar write SetVertScrollBar; @@ -388,9 +388,9 @@ ); TPopupMode = ( - pmNone, // default behavior - popup to mainform/taskbar window - pmAuto, // popup to active form and same as pmNone if no active form - pmExplicit // popup to PopupParent and same as pmNone if not exists + pmNone, // modal: popup to mainform/taskbar window; non-modal: no window parent + pmAuto, // modal & non-modal: popup to active form or if not available, to main form + pmExplicit // modal & non-modal: popup to PopupParent or if not available, to main form ); TCloseEvent = procedure(Sender: TObject; var CloseAction: TCloseAction) of object; @@ -475,6 +475,7 @@ procedure SetFormStyle(Value : TFormStyle); procedure SetIcon(AValue: TIcon); procedure SetMenu(Value: TMainMenu); + procedure SetModalResult(Value: TModalResult); procedure SetPopupMode(const AValue: TPopupMode); procedure SetPopupParent(const AValue: TCustomForm); procedure SetPosition(Value: TPosition); @@ -482,6 +483,14 @@ procedure SetLastFocusedControl(AControl: TWinControl); procedure SetWindowFocus; procedure SetWindowState(Value : TWindowState); + procedure AddHandler(HandlerType: TFormHandlerType; + const Handler: TMethod; AsFirst: Boolean = false); + procedure RemoveHandler(HandlerType: TFormHandlerType; + const Handler: TMethod); + function FindDefaultForActiveControl: TWinControl; + procedure UpdateMenu; + procedure UpdateShowInTaskBar; + protected procedure WMActivate(var Message : TLMActivate); message LM_ACTIVATE; procedure WMCloseQuery(var message: TLMessage); message LM_CLOSEQUERY; procedure WMHelp(var Message: TLMHelp); message LM_HELP; @@ -497,19 +506,12 @@ procedure CMRelease(var Message: TLMessage); message CM_RELEASE; procedure CMActivate(var Message: TLMessage); message CM_ACTIVATE; procedure CMDeactivate(var Message: TLMessage); message CM_DEACTIVATE; - procedure AddHandler(HandlerType: TFormHandlerType; - const Handler: TMethod; AsFirst: Boolean = false); - procedure RemoveHandler(HandlerType: TFormHandlerType; - const Handler: TMethod); - function FindDefaultForActiveControl: TWinControl; - procedure UpdateMenu; - procedure UpdateShowInTaskBar; + procedure CMShowingChanged(var Message: TLMessage); message CM_SHOWINGCHANGED; protected FActionLists: TList; // keep this TList for Delphi compatibility FFormBorderStyle: TFormBorderStyle; FFormState: TFormState; class procedure WSRegisterClass; override; - procedure CMShowingChanged(var Message: TLMessage); message CM_SHOWINGCHANGED; procedure DoShowWindow; virtual; procedure Activate; virtual; procedure ActiveChanged; virtual; @@ -592,6 +594,7 @@ function FormIsUpdating: boolean; override; function GetFormImage: TBitmap; function GetRolesForControl(AControl: TControl): TControlRolesForForm; + function GetRealPopupParent: TCustomForm; procedure Hide; procedure IntfDropFiles(const FileNames: array of String); procedure IntfHelp(AComponent: TComponent); @@ -662,7 +665,7 @@ property KeyPreview: Boolean read FKeyPreview write FKeyPreview default False; property MDIChildren[I: Integer]: TCustomForm read GetMDIChildren; property Menu : TMainMenu read FMenu write SetMenu; - property ModalResult : TModalResult read FModalResult write FModalResult; + property ModalResult : TModalResult read FModalResult write SetModalResult; property Monitor: TMonitor read GetMonitor; property PopupMode: TPopupMode read FPopupMode write SetPopupMode default pmNone; property PopupParent: TCustomForm read FPopupParent write SetPopupParent; @@ -853,7 +856,7 @@ protected class procedure WSRegisterClass; override; procedure WMNCHitTest(var Message: TLMessage); message LM_NCHITTEST; - procedure ActivateSub(InvalidateNeeded: Boolean); + procedure ActivateSub; procedure DoShowWindow; override; procedure UpdateRegion; procedure SetColor(Value: TColor); override; @@ -1559,6 +1562,8 @@ end; const + DefaultApplicationBiDiMode: TBiDiMode = bdLeftToRight; + DefHintColor = clInfoBk; // default hint window color DefHintPause = 500; // default pause before hint window displays (ms) DefHintShortPause = 0; // default reshow pause @@ -1733,9 +1738,11 @@ type TGetDesignerFormEvent = function(APersistent: TPersistent): TCustomForm of object; + TIsFormDesignFunction = function(AForm: TWinControl): boolean; var OnGetDesignerForm: TGetDesignerFormEvent = nil; + IsFormDesign: TIsFormDesignFunction = nil; function GetParentForm(Control: TControl; TopForm: Boolean = True): TCustomForm; function GetFirstParentForm(Control:TControl): TCustomForm; @@ -1790,7 +1797,7 @@ {$endif} uses - WSForms; // Widgetset uses circle is allowed + WSControls, WSForms; // Widgetset uses circle is allowed var HandlingException: Boolean = False; @@ -1917,7 +1924,7 @@ function GetParentForm(Control: TControl; TopForm: Boolean): TCustomForm; begin //For Delphi compatibility if Control is a TCustomForm with no parent, the function returns the TCustomForm itself - while Control.Parent <> nil do + while (Control <> nil) and (Control.Parent <> nil) do begin if (not TopForm) and (Control is TCustomForm) then Break; @@ -2109,6 +2116,16 @@ ImageList.Draw(Canvas,AX,AY,AIndex,ADrawEffect); end; +function IsFormDesignFunction(AForm: TWinControl): boolean; +var + LForm: TCustomForm absolute AForm; +begin + if (AForm = nil) or not (AForm is TCustomForm) then + Exit(False); + Result := (csDesignInstance in LForm.ComponentState) + or ((csDesigning in LForm.ComponentState) and (LForm.Designer <> nil)); +end; + initialization RegisterPropertyToSkip(TForm, 'OldCreateOrder', 'VCL compatibility property', ''); RegisterPropertyToSkip(TForm, 'TextHeight', 'VCL compatibility property', ''); @@ -2116,6 +2133,7 @@ RegisterPropertyToSkip(TForm, 'TransparentColorValue', 'VCL compatibility property', ''); LCLProc.OwnerFormDesignerModifiedProc:=@IfOwnerIsFormThenDesignerModified; ThemesImageDrawEvent:=@ImageDrawEvent; + IsFormDesign := @IsFormDesignFunction; Screen:=TScreen.Create(nil); Application:=TApplication.Create(nil); diff -Nru lazarus-1.4.4+dfsg/lcl/graphics.pp lazarus-1.6+dfsg/lcl/graphics.pp --- lazarus-1.4.4+dfsg/lcl/graphics.pp 2014-11-12 18:54:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/graphics.pp 2015-02-16 11:54:18.000000000 +0000 @@ -561,7 +561,7 @@ procedure EndUpdate; property FontData: TFontData read GetData write SetData; function HandleAllocated: boolean; - property Handle: HFONT read GetHandle write SetHandle; deprecated; + property Handle: HFONT read GetHandle write SetHandle; deprecated 'use Reference.Handle instead'; function IsDefault: boolean; function IsEqual(AFont: TFont): boolean; virtual; property IsMonoSpace: boolean read GetIsMonoSpace; diff -Nru lazarus-1.4.4+dfsg/lcl/graphmath.pp lazarus-1.6+dfsg/lcl/graphmath.pp --- lazarus-1.4.4+dfsg/lcl/graphmath.pp 2014-10-06 06:10:36.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/graphmath.pp 2015-11-06 18:35:28.000000000 +0000 @@ -268,10 +268,8 @@ Operator := (Value : TFloatPoint) : TPoint; begin - With Result do begin - X := Trunc(SimpleRoundTo(Value.X, 0)); - Y := Trunc(SimpleRoundTo(Value.Y, 0)); - end; + Result.X := Trunc(SimpleRoundTo(Value.X, 0)); + Result.Y := Trunc(SimpleRoundTo(Value.Y, 0)); end; Operator := (Value : TPoint) : TFloatPoint; diff -Nru lazarus-1.4.4+dfsg/lcl/graphtype.pp lazarus-1.6+dfsg/lcl/graphtype.pp --- lazarus-1.4.4+dfsg/lcl/graphtype.pp 2013-06-23 19:46:43.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/graphtype.pp 2015-12-05 23:30:07.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: graphtype.pp 41855 2013-06-23 19:46:43Z marc $ } +{ $Id: graphtype.pp 50669 2015-12-05 23:30:07Z mattias $ } { /*************************************************************************** graphtype.pp @@ -33,8 +33,8 @@ TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF; TGraphicsFillStyle = ( - fsSurface, // fill till the color (it fills all execpt this color) - fsBorder // fill this color (it fills only conneted pixels of this color) + fsSurface, // fill till the color (it fills all except this color) + fsBorder // fill this color (it fills only connected pixels of this color) ); TGraphicsBevelCut = ( diff -Nru lazarus-1.4.4+dfsg/lcl/graphutil.pp lazarus-1.6+dfsg/lcl/graphutil.pp --- lazarus-1.4.4+dfsg/lcl/graphutil.pp 2014-05-08 13:36:10.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/graphutil.pp 2015-08-03 23:06:27.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: graphutil.pp 44973 2014-05-08 13:36:10Z mattias $ } +{ $Id: graphutil.pp 49592 2015-08-03 23:06:27Z juha $ } { /*************************************************************************** graphtype.pp @@ -106,102 +106,76 @@ Result := R or (G shl 8) or (B shl 16); end; -const - HUE_000 = 0; - HUE_060 = 43; - HUE_120 = 85; - HUE_180 = 128; - HUE_240 = 170; - HUE_300 = 213; - procedure RGBtoHLS(const R, G, B: Byte; out H, L, S: Byte); -var - cMax, cMin: Byte; // max and min RGB values - Rdelta, Gdelta, Bdelta: Byte; // intermediate value: % of spread from max - diff: Byte; -begin - // calculate lightness - cMax := MaxIntValue([R, G, B]); - cMin := MinIntValue([R, G, B]); - L := (integer(cMax) + cMin + 1) div 2; - diff := cMax - cMin; - - if diff = 0 - then begin - // r=g=b --> achromatic case - S := 0; - H := 0; - end - else begin - // chromatic case - // saturation - if L <= 128 - then S := integer(diff * 255) div (cMax + cMin) - else S := integer(diff * 255) div (510 - cMax - cMin); - - // hue - Rdelta := (cMax - R); - Gdelta := (cMax - G); - Bdelta := (cMax - B); - - if R = cMax - then H := (HUE_000 + integer(Bdelta - Gdelta) * HUE_060 div diff) and $ff - else if G = cMax - then H := HUE_120 + integer(Rdelta - Bdelta) * HUE_060 div diff - else H := HUE_240 + integer(Gdelta - Rdelta) * HUE_060 div diff; - end; -end; - - -procedure HLStoRGB(const H, L, S: Byte; out R, G, B: Byte); - - // utility routine for HLStoRGB - function HueToRGB(const n1, n2: Byte; Hue: Integer): Byte; - begin - if Hue > 255 - then Dec(Hue, 255) - else if Hue < 0 - then Inc(Hue, 255); - - // return r,g, or b value from this tridrant - case Hue of - HUE_000..HUE_060 - 1: Result := n1 + (n2 - n1) * Hue div HUE_060; - HUE_060..HUE_180 - 1: Result := n2; - HUE_180..HUE_240 - 1: Result := n1 + (n2 - n1) * (HUE_240 - Hue) div HUE_060; - else - Result := n1; - end; - end; - -var - n1, n2: Byte; +var aDelta, aMin, aMax: Byte; begin - if S = 0 - then begin - // achromatic case - R := L; - G := L; - B := L; - end - else begin - // chromatic case - // set up magic numbers - if L < 128 - then begin - n2 := L + (L * S) div 255; - n1 := 2 * L - n2; - end - else begin - n2 := S + L - (L * S) div 255; - n1 := 2 * L - n2 - 1; + aMin := Math.min(Math.min(R, G), B); + aMax := Math.max(Math.max(R, G), B); + aDelta := aMax - aMin; + if aDelta > 0 then + begin + if aMax = B + then H := round(170 + 42.5*(R - G)/aDelta) { 2*255/3; 255/6 } + else if aMax = G + then H := round(85 + 42.5*(B - R)/aDelta) { 255/3 } + else if G >= B + then H := round(42.5*(G - B)/aDelta) + else H := round(255 + 42.5*(G - B)/aDelta); end; + L := (aMax + aMin) div 2; + if (L = 0) or (aDelta = 0) + then S := 0 + else if L <= 127 + then S := round(255*aDelta/(aMax + aMin)) + else S := round(255*aDelta/(510 - aMax - aMin)); +end; - // get RGB - R := HueToRGB(n1, n2, H + HUE_120); - G := HueToRGB(n1, n2, H); - B := HueToRGB(n1, n2, H - HUE_120); - end; +procedure HLSToRGB(const H, L, S: Byte; out R, G, B: Byte); +var hue, chroma, x: Single; +begin + if S > 0 then + begin { color } + hue:=6*H/255; + chroma := S*(1 - abs(0.0078431372549*L - 1)); { 2/255 } + G := trunc(hue); + B := L - round(0.5*chroma); + x := B + chroma*(1 - abs(hue - 1 - G and 254)); + case G of + 0: begin + R := B + round(chroma); + G := round(x); + end; + 1: begin + R := round(x); + G := B + round(chroma); + end; + 2: begin + R := B; + G := B + round(chroma); + B := round(x); + end; + 3: begin + R := B; + G := round(x); + inc(B, round(chroma)); + end; + 4: begin + R := round(x); + G := B; + inc(B, round(chroma)); + end; + otherwise + R := B + round(chroma); + G := B; + B := round(x); + end; + end else + begin { grey } + R := L; + G := L; + B := L; + end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/grids.pas lazarus-1.6+dfsg/lcl/grids.pas --- lazarus-1.4.4+dfsg/lcl/grids.pas 2015-09-30 22:16:23.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/grids.pas 2016-01-18 23:04:52.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: grids.pas 49902 2015-09-30 22:16:23Z maxim $} +{ $Id: grids.pas 51328 2016-01-18 23:04:52Z maxim $} { /*************************************************************************** Grids.pas @@ -27,15 +27,20 @@ unit Grids; {$mode objfpc}{$H+} +{$modeswitch nestedprocvars} {$define NewCols} interface uses Types, Classes, SysUtils, Math, Maps, LCLStrConsts, LCLProc, LCLType, LCLIntf, - FileUtil, FPCanvas, Controls, GraphType, Graphics, Forms, DynamicArray, + LazFileUtils, FPCanvas, Controls, GraphType, Graphics, Forms, DynamicArray, LMessages, StdCtrls, LResources, MaskEdit, Buttons, Clipbrd, Themes, - LazUtf8Classes, Laz2_XMLCfg; // <-- replaces XMLConf (part of FPC libs) + LazUTF8, LazUtf8Classes, Laz2_XMLCfg, LCSVUtils +{$ifdef WINDOWS} + ,messages +{$endif} + ; const //GRIDFILEVERSION = 1; // Original @@ -354,6 +359,10 @@ TGetCellHintEvent = procedure (Sender: TObject; ACol, ARow: Integer; var HintText: String) of object; + TSaveColumnEvent = procedure (Sender, aColumn: TObject; aColIndex: Integer; + aCfg: TXMLConfig; const aVersion: integer; + const aPath: string) of object; + { TVirtualGrid } TVirtualGrid=class @@ -409,9 +418,9 @@ FLayout: ^TTextLayout; FPrefixOption: TPrefixOption; FMultiline: Boolean; + FIsDefaultCaption: boolean; procedure FontChanged(Sender: TObject); function GetAlignment: TAlignment; - function GetCaption: TCaption; function GetColor: TColor; function GetFont: TFont; function GetLayout: TTextLayout; @@ -428,6 +437,8 @@ procedure SetLayout(const AValue: TTextLayout); procedure SetMultiLine(const AValue: Boolean); procedure SetPrefixOption(const AValue: TPrefixOption); + procedure WriteCaption(Writer: TWriter); + property IsDefaultFont: boolean read FIsDefaultTitleFont; protected function GetDefaultCaption: string; virtual; @@ -435,7 +446,9 @@ function GetDefaultColor: TColor; function GetDefaultLayout: TTextLayout; function GetOwner: TPersistent; override; + function GetCaption: TCaption; procedure SetCaption(const AValue: TCaption); virtual; + procedure DefineProperties(Filer: TFiler); override; public constructor Create(TheColumn: TGridColumn); virtual; destructor Destroy; override; @@ -486,6 +499,7 @@ function GetMinSize: Integer; function GetSizePriority: Integer; function GetReadOnly: Boolean; + function GetStoredWidth: Integer; function GetVisible: Boolean; function GetWidth: Integer; function IsAlignmentStored: boolean; @@ -545,6 +559,8 @@ procedure FillDefaultFont; function IsDefault: boolean; virtual; property Grid: TCustomGrid read GetGrid; + property DefaultWidth: Integer read GetDefaultWidth; + property StoredWidth: Integer read GetStoredWidth; property WidthChanged: boolean read FWidthChanged; published @@ -679,6 +695,8 @@ FFastEditing: boolean; FAltColorStartNormal: boolean; FFlat: Boolean; + FOnLoadColumn: TSaveColumnEvent; + FOnSaveColumn: TSaveColumnEvent; FRangeSelectMode: TRangeSelectMode; FSelections: TGridRectArray; FOnUserCheckboxBitmap: TUserCheckboxBitmapEvent; @@ -779,6 +797,7 @@ function doColSizing(X,Y: Integer): Boolean; function doRowSizing(X,Y: Integer): Boolean; procedure doColMoving(X,Y: Integer); + procedure doPushCell; procedure doRowMoving(X,Y: Integer); procedure doTopleftChange(DimChg: Boolean); procedure DrawXORVertLine(X: Integer); @@ -913,6 +932,10 @@ procedure DoEditorShow; virtual; procedure DoExit; override; procedure DoEnter; override; + procedure DoLoadColumn(sender: TCustomGrid; aColumn: TGridColumn; aColIndex: Integer; + aCfg: TXMLConfig; aVersion: Integer; aPath: string); virtual; + procedure DoSaveColumn(sender: TCustomGrid; aColumn: TGridColumn; aColIndex: Integer; + aCfg: TXMLConfig; aVersion: Integer; aPath: string); virtual; function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override; function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override; function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override; @@ -1012,6 +1035,7 @@ procedure KeyUp(var Key : Word; Shift : TShiftState); override; procedure KeyPress(var Key: char); override; procedure LoadContent(cfg: TXMLConfig; Version: Integer); virtual; + procedure LoadGridOptions(cfg: TXMLConfig; Version: Integer); virtual; procedure Loaded; override; procedure LockEditor; function MouseButtonAllowed(Button: TMouseButton): boolean; virtual; @@ -1036,6 +1060,7 @@ procedure ResizeRow(aRow, aHeight: Integer); procedure RowHeightsChanged; virtual; procedure SaveContent(cfg: TXMLConfig); virtual; + procedure SaveGridOptions(cfg: TXMLConfig); virtual; procedure ScrollBarRange(Which:Integer; aRange,aPage,aPos: Integer); procedure ScrollBarPosition(Which, Value: integer); function ScrollBarIsVisible(Which:Integer): Boolean; @@ -1056,6 +1081,7 @@ procedure ShowCellHintWindow(APoint: TPoint); procedure SizeChanged(OldColCount, OldRowCount: Integer); virtual; procedure Sort(ColSorting: Boolean; index,IndxFrom,IndxTo:Integer); virtual; + procedure StartPushCell; procedure TopLeftChanged; virtual; function TryMoveSelection(Relative: Boolean; var DCol, DRow: Integer): Boolean; procedure UnLockEditor; @@ -1162,7 +1188,8 @@ function FlipX(X: Integer): Integer; // Hint-related property OnGetCellHint : TGetCellHintEvent read FOnGetCellHint write FOnGetCellHint; - + property OnSaveColumn: TSaveColumnEvent read FOnSaveColumn write FOnSaveColumn; + property OnLoadColumn: TSaveColumnEvent read FOnLoadColumn write FOnLoadColumn; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -1170,6 +1197,7 @@ procedure EditingDone; override; { Exposed procs } + procedure AdjustInnerCellRect(var ARect: TRect); procedure AutoAdjustColumns; procedure BeginUpdate; function CellRect(ACol, ARow: Integer): TRect; @@ -1192,15 +1220,15 @@ procedure InvalidateRow(ARow: Integer); function IsCellVisible(aCol, aRow: Integer): Boolean; function IsFixedCellVisible(aCol, aRow: Integer): boolean; - procedure LoadFromFile(FileName: string); - procedure LoadFromStream(AStream: TStream); + procedure LoadFromFile(FileName: string); virtual; + procedure LoadFromStream(AStream: TStream); virtual; function MouseCoord(X,Y: Integer): TGridCoord; function MouseToCell(const Mouse: TPoint): TPoint; overload; procedure MouseToCell(X,Y: Integer; var ACol,ARow: Longint); overload; function MouseToLogcell(Mouse: TPoint): TPoint; function MouseToGridZone(X,Y: Integer): TGridZone; - procedure SaveToFile(FileName: string); - procedure SaveToStream(AStream: TStream); + procedure SaveToFile(FileName: string); virtual; + procedure SaveToStream(AStream: TStream); virtual; procedure SetFocus; override; property SelectedRange[AIndex: Integer]: TGridRect read GetSelectedRange; @@ -1208,6 +1236,11 @@ property SortOrder: TSortOrder read FSortOrder write FSortOrder; property SortColumn: Integer read FSortColumn; property TabStop default true; +{$ifdef WINDOWS} + protected + procedure IMEStartComposition(var Msg:TMessage); message WM_IME_STARTCOMPOSITION; + procedure IMEComposition(var Msg:TMessage); message WM_IME_COMPOSITION; +{$endif} end; TGetEditEvent = procedure (Sender: TObject; ACol, ARow: Integer; var Value: string) of object; @@ -1596,12 +1629,14 @@ procedure Clean(StartCol,StartRow,EndCol,EndRow: integer; CleanOptions: TGridZoneSet); overload; procedure CopyToClipboard(AUseSelection: boolean = false); procedure InsertRowWithValues(Index: Integer; Values: array of String); - procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true); - procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=','; WithHeader: boolean=true); - procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; WithHeader: boolean=true; - VisibleColumnsOnly: boolean=false); - procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=','; WithHeader: boolean=true; - VisibleColumnsOnly: boolean=false); + procedure LoadFromCSVStream(AStream: TStream; ADelimiter: Char=','; + UseTitles: boolean=true; FromLine: Integer=0; SkipEmptyLines: Boolean=true); + procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=','; + UseTitles: boolean=true; FromLine: Integer=0; SkipEmptyLines: Boolean=true); + procedure SaveToCSVStream(AStream: TStream; ADelimiter: Char=','; + WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false); + procedure SaveToCSVFile(AFileName: string; ADelimiter: Char=','; + WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false); property Cells[ACol, ARow: Integer]: string read GetCells write SetCells; property Cols[index: Integer]: TStrings read GetCols write SetCols; @@ -3334,12 +3369,11 @@ [X,Y,Left,Top,Right,Bottom,XInc,YInc,TLColOff,TLRowOff]); {$ENDIF} - with FTopLeft do if ((XInc=0)and(YInc=0)) or // the cell is already visible - ((X=aCol)and(Y=aRow)) or // the cell is visible by definition - ((X+XInc<0)or(Y+Yinc<0)) or // topleft can't be lower 0 - ((X+XInc>=ColCount)) or // leftmost column can't be equal/higher than colcount - ((Y+Yinc>=RowCount)) // topmost column can't be equal/higher than rowcount + ((FTopLeft.X=aCol)and(FTopLeft.Y=aRow)) or // the cell is visible by definition + ((FTopLeft.X+XInc<0)or(FTopLeft.Y+Yinc<0)) or // topleft can't be lower 0 + ((FTopLeft.X+XInc>=ColCount)) or // leftmost column can't be equal/higher than colcount + ((FTopLeft.Y+Yinc>=RowCount)) // topmost column can't be equal/higher than rowcount then Break; Inc(FTopLeft.x, XInc); @@ -3524,6 +3558,24 @@ end; procedure TCustomGrid.PrepareCanvas(aCol, aRow: Integer; aState: TGridDrawState); + function GetNotSelectedColor: TColor; + begin + Result := GetColumnColor(aCol, gdFixed in AState); + if (gdFixed in AState) and (gdHot in aState) then + Result := FFixedHotColor; + if not (gdFixed in AState) and (FAlternateColor<>Result) then begin + if Result=Color then begin + // column color = grid Color, Allow override color + // 1. default color after fixed rows + // 2. always use absolute alternate color based in odd & even row + if (FAltColorStartNormal and Odd(ARow-FixedRows)) {(1)} or + (not FAltColorStartNormal and Odd(ARow)) {(2)} then + Result := FAlternateColor; + end; + end; + if (gdRowHighlight in aState) and not (gdFixed in AState) then + Result := ColorToRGB(Result) xor $1F1F1F + end; var AColor: TColor; CurrentTextStyle: TTextStyle; @@ -3534,28 +3586,21 @@ Canvas.Pen.Mode := pmCopy; GetSelectedState(aState, IsSelected); if IsSelected then begin - Canvas.Brush.Color := SelectedColor; + if FEditorMode and (aCol = Self.Col) + and (((FEditor=FStringEditor) and (FStringEditor.BorderStyle=bsNone)) + or (FEditor=FButtonStringEditor)) + then + Canvas.Brush.Color := FEditor.Color + else if FEditorMode and (aCol = Self.Col) and (FEditor=FPicklistEditor) then + Canvas.Brush.Color := GetNotSelectedColor + else + Canvas.Brush.Color := SelectedColor; SetCanvasFont(GetColumnFont(aCol, False)); if not IsCellButtonColumn(point(aCol,aRow)) then Canvas.Font.Color := clHighlightText; FLastFont:=nil; end else begin - AColor := GetColumnColor(aCol, gdFixed in AState); - if (gdFixed in AState) and (gdHot in aState) then - aColor := FFixedHotColor; - if not (gdFixed in AState) and (FAlternateColor<>AColor) then begin - if AColor=Color then begin - // column color = grid Color, Allow override color - // 1. default color after fixed rows - // 2. always use absolute alternate color based in odd & even row - if (FAltColorStartNormal and Odd(ARow-FixedRows)) {(1)} or - (not FAltColorStartNormal and Odd(ARow)) {(2)} then - AColor := FAlternateColor; - end; - end; - if (gdRowHighlight in aState) and not (gdFixed in AState) then - Canvas.Brush.Color := ColorToRGB(AColor) xor $1F1F1F - else Canvas.Brush.Color := AColor; + Canvas.Brush.Color := GetNotSelectedColor; SetCanvasFont(GetColumnFont(aCol, ((gdFixed in aState) and (aRow < FFixedRows)))); end; CurrentTextStyle := DefaultTextStyle; @@ -3568,7 +3613,10 @@ CurrentTextStyle.SingleLine := (gc = nil) or (not gc.Title.MultiLine); Canvas.TextStyle := CurrentTextStyle; end else begin - Canvas.TextStyle := DefaultTextStyle; + CurrentTextStyle := DefaultTextStyle; + CurrentTextStyle.Alignment := BidiFlipAlignment(CurrentTextStyle.Alignment, UseRightToLeftAlignment); + CurrentTextStyle.RightToLeft := UseRightToLeftAlignment; + Canvas.TextStyle := CurrentTextStyle; Canvas.Brush.Color := clWindow; Canvas.Font.Color := clWindowText; end; @@ -3730,6 +3778,12 @@ Application.CancelHint; end; +procedure TCustomGrid.StartPushCell; +begin + fGridState := gsButtonColumnClicking; + DoPushCell; +end; + function TCustomGrid.SelectCell(ACol, ARow: Integer): Boolean; begin Result:=true; @@ -3766,15 +3820,13 @@ begin if InternalNeedBorder then begin R := Rect(0,0,ClientWidth-1, Clientheight-1); - with R, Canvas do begin - Pen.Color := fBorderColor; - Pen.Width := 1; - MoveTo(0,0); - LineTo(0,Bottom); - LineTo(Right, Bottom); - LineTo(Right, 0); - LineTo(0,0); - end; + Canvas.Pen.Color := fBorderColor; + Canvas.Pen.Width := 1; + Canvas.MoveTo(0,0); + Canvas.LineTo(0,R.Bottom); + Canvas.LineTo(R.Right, R.Bottom); + Canvas.LineTo(R.Right, 0); + Canvas.LineTo(0,0); end; end; @@ -4074,7 +4126,7 @@ dv,dh: Boolean; begin - with Canvas, aRect do begin + with Canvas do begin // fixed cells if (gdFixed in aState) then begin @@ -4096,13 +4148,13 @@ Pen.Color := cl3DHilight; if UseRightToLeftAlignment then begin //the light still on the left but need to new x - MoveTo(Right, Top); - LineTo(Left + 1, Top); - LineTo(Left + 1, Bottom); + MoveTo(aRect.Right, aRect.Top); + LineTo(aRect.Left + 1, aRect.Top); + LineTo(aRect.Left + 1, aRect.Bottom); end else begin - MoveTo(Right - 1, Top); - LineTo(Left, Top); - LineTo(Left, Bottom); + MoveTo(aRect.Right - 1, aRect.Top); + LineTo(aRect.Left, aRect.Top); + LineTo(aRect.Left, aRect.Bottom); end; if FTitleStyle=tsStandard then begin // more contrast @@ -4111,13 +4163,13 @@ else Pen.Color := cl3DShadow; if UseRightToLeftAlignment then begin - MoveTo(Left+2, Bottom-2); - LineTo(Right, Bottom-2); - LineTo(Right, Top); + MoveTo(aRect.Left+2, aRect.Bottom-2); + LineTo(aRect.Right, aRect.Bottom-2); + LineTo(aRect.Right, aRect.Top); end else begin - MoveTo(Left+1, Bottom-2); - LineTo(Right-2, Bottom-2); - LineTo(Right-2, Top); + MoveTo(aRect.Left+1, aRect.Bottom-2); + LineTo(aRect.Right-2, aRect.Bottom-2); + LineTo(aRect.Right-2, aRect.Top); end; end; end; @@ -4134,16 +4186,16 @@ // non-fixed cells if fGridLineWidth > 0 then begin if Dh then begin - MoveTo(Left, Bottom - 1); - LineTo(Right, Bottom - 1); + MoveTo(aRect.Left, aRect.Bottom - 1); + LineTo(aRect.Right, aRect.Bottom - 1); end; if Dv then begin if UseRightToLeftAlignment then begin - MoveTo(Left, Top); - LineTo(Left, Bottom); + MoveTo(aRect.Left, aRect.Top); + LineTo(aRect.Left, aRect.Bottom); end else begin - MoveTo(Right - 1, Top); - LineTo(Right - 1, Bottom); + MoveTo(aRect.Right - 1, aRect.Top); + LineTo(aRect.Right - 1, aRect.Bottom); end; end; end; @@ -4175,30 +4227,27 @@ procedure TCustomGrid.DrawCellText(aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState; aText: String); begin - with ARect do begin - - dec(Right, constCellPadding); - case Canvas.TextStyle.Alignment of - Classes.taLeftJustify: Inc(Left, constCellPadding); - Classes.taRightJustify: Dec(Right, 1); - end; - case Canvas.TextStyle.Layout of - tlTop: Inc(Top, constCellPadding); - tlBottom: Dec(Bottom, constCellPadding); - end; - - if Right<Left then - Right:=Left; - if Left>Right then - Left:=Right; - if Bottom<Top then - Bottom:=Top; - if Top>Bottom then - Top:=Bottom; + dec(ARect.Right, constCellPadding); + case Canvas.TextStyle.Alignment of + Classes.taLeftJustify: Inc(ARect.Left, constCellPadding); + Classes.taRightJustify: Dec(ARect.Right, 1); + end; + case Canvas.TextStyle.Layout of + tlTop: Inc(ARect.Top, constCellPadding); + tlBottom: Dec(ARect.Bottom, constCellPadding); + end; + + if ARect.Right<ARect.Left then + ARect.Right:=ARect.Left; + if ARect.Left>ARect.Right then + ARect.Left:=ARect.Right; + if ARect.Bottom<ARect.Top then + ARect.Bottom:=ARect.Top; + if ARect.Top>ARect.Bottom then + ARect.Top:=ARect.Bottom; - if (Left<>Right) and (Top<>Bottom) then - Canvas.TextRect(aRect,Left,Top, aText); - end; + if (ARect.Left<>ARect.Right) and (ARect.Top<>ARect.Bottom) then + Canvas.TextRect(aRect,ARect.Left,ARect.Top, aText); end; procedure TCustomGrid.DrawGridCheckboxBitmaps(const aCol,aRow: Integer; @@ -4223,15 +4272,13 @@ if (TitleStyle=tsNative) and not assigned(OnUserCheckboxBitmap) then begin Details := ThemeServices.GetElementDetails(arrtb[AState]); CSize := ThemeServices.GetDetailSize(Details); - with PaintRect do begin - case bmpAlign of - taCenter: Left := Trunc((aRect.Left + aRect.Right - CSize.cx)/2); - taLeftJustify: Left := ARect.Left + constCellPadding; - taRightJustify: Left := ARect.Right - CSize.Cx - constCellPadding - 1; - end; - Top := Trunc((aRect.Top + aRect.Bottom - CSize.cy)/2); - PaintRect := Bounds(Left, Top, CSize.cx, CSize.cy); + case bmpAlign of + taCenter: PaintRect.Left := Trunc((aRect.Left + aRect.Right - CSize.cx)/2); + taLeftJustify: PaintRect.Left := ARect.Left + constCellPadding; + taRightJustify: PaintRect.Left := ARect.Right - CSize.Cx - constCellPadding - 1; end; + PaintRect.Top := Trunc((aRect.Top + aRect.Bottom - CSize.cy)/2); + PaintRect := Bounds(PaintRect.Left, PaintRect.Top, CSize.cx, CSize.cy); ThemeServices.DrawElement(Canvas.Handle, Details, PaintRect, nil); end else begin ChkBitmap := GetImageForCheckBox(aCol, aRow, AState); @@ -4577,9 +4624,9 @@ procedure TCustomGrid.WMKillFocus(var message: TLMKillFocus); begin + if csDestroying in ComponentState then + exit; {$ifdef dbgGrid} - if csDestroying in ComponentState then exit; - DbgOut('*** grid.WMKillFocus, FocusedWnd=%x WillFocus=',[Message.FocusedWnd]); if EditorMode and (Message.FocusedWnd = FEditor.Handle) then DebugLn('Editor') @@ -4953,25 +5000,21 @@ OldTopLeft := FTopLeft; Result:= False; - with FTopleft do begin - if CheckCols and (X>FixedCols) then begin - W := FGCache.ScrollWidth-ColWidths[aCol]-integer(PtrUInt(FGCache.AccumWidth[aCol])); - while (x>FixedCols)and(W+integer(PtrUInt(FGCache.AccumWidth[x]))>=ColWidths[x-1]) do - begin - Dec(x); - end; + if CheckCols and (FTopleft.X>FixedCols) then begin + W := FGCache.ScrollWidth-ColWidths[aCol]-integer(PtrUInt(FGCache.AccumWidth[aCol])); + while (FTopleft.x>FixedCols)and(W+integer(PtrUInt(FGCache.AccumWidth[FTopleft.x]))>=ColWidths[FTopleft.x-1]) do + begin + Dec(FTopleft.x); end; end; - with FTopleft do begin - if CheckRows and (Y > FixedRows) then begin - W := FGCache.ScrollHeight-RowHeights[aRow]-integer(PtrUInt(FGCache.AccumHeight[aRow])); - while (y>FixedRows)and(W+integer(PtrUInt(FGCache.AccumHeight[y]))>=RowHeights[y-1]) do - begin - Dec(y); - end; - //DebugLn('TCustomGrid.CheckTopLeft A ',DbgSName(Self),' FTopLeft=',dbgs(FTopLeft)); + if CheckRows and (FTopleft.Y > FixedRows) then begin + W := FGCache.ScrollHeight-RowHeights[aRow]-integer(PtrUInt(FGCache.AccumHeight[aRow])); + while (FTopleft.y>FixedRows)and(W+integer(PtrUInt(FGCache.AccumHeight[FTopleft.y]))>=RowHeights[FTopleft.y-1]) do + begin + Dec(FTopleft.y); end; + //DebugLn('TCustomGrid.CheckTopLeft A ',DbgSName(Self),' FTopLeft=',dbgs(FTopLeft)); end; Result := not PointIgual(OldTopleft,FTopLeft); @@ -4979,6 +5022,16 @@ doTopleftChange(False) end; +procedure TCustomGrid.doPushCell; +begin + with FGCache do + begin + PushedCell := ClickCell; + ClickCellPushed:=True; + InvalidateCell(PushedCell.x, PushedCell.y); + end; +end; + function TCustomGrid.IsCellButtonColumn(ACell: TPoint): boolean; var Column: TGridColumn; @@ -5068,6 +5121,13 @@ OnUserCheckboxBitmap(Self, aCol, aRow, CheckBoxView, Result); end; +procedure TCustomGrid.AdjustInnerCellRect(var ARect: TRect); +begin + if (GridLineWidth>0) then begin + if goHorzLine in Options then Dec(ARect.Bottom); + if goVertLine in Options then Dec(ARect.Right); + end; +end; function TCustomGrid.GetColumns: TGridColumns; begin @@ -5230,7 +5290,7 @@ { Save to the cache the current visible grid (excluding fixed cells) } procedure TCustomGrid.CacheVisibleGrid; var - R: TRect; + CellR: TRect; begin with FGCache do begin VisibleGrid:=GetVisibleGrid; @@ -5240,34 +5300,32 @@ ValidGrid := ValidRows and ValidCols; end; FullVisibleGrid := VisibleGrid; - if ValidGrid then - with FullVisibleGrid do begin - if goSmoothScroll in Options then begin - if TLColOff>0 then - Left := Min(Left+1, Right); - if TLRowOff>0 then - Top := Min(Top+1, Bottom); - end; - R := CellRect(Right, Bottom); - if R.Right>(ClientWidth+GetBorderWidth) then - Right := Max(Right-1, Left); - if R.Bottom>(ClientHeight+GetBorderWidth) then - Bottom := Max(Bottom-1, Top); - end; + if ValidGrid then begin + if goSmoothScroll in Options then begin + if TLColOff>0 then + FullVisibleGrid.Left := Min(FullVisibleGrid.Left+1, FullVisibleGrid.Right); + if TLRowOff>0 then + FullVisibleGrid.Top := Min(FullVisibleGrid.Top+1, FullVisibleGrid.Bottom); + end; + CellR := CellRect(FullVisibleGrid.Right, FullVisibleGrid.Bottom); + if CellR.Right>(ClientWidth+GetBorderWidth) then + FullVisibleGrid.Right := Max(FullVisibleGrid.Right-1, FullVisibleGrid.Left); + if CellR.Bottom>(ClientHeight+GetBorderWidth) then + FullVisibleGrid.Bottom := Max(FullVisibleGrid.Bottom-1, FullVisibleGrid.Top); + end; end; end; procedure TCustomGrid.CancelSelection; begin - with FRange do - if (Bottom-Top>0) or - ((Right-Left>0) and not (goRowSelect in Options)) then begin - InvalidateRange(FRange); - if goRowSelect in Options then - FRange:=Rect(FFixedCols, FRow, ColCount-1, FRow) - else - FRange:=Rect(FCol,FRow,FCol,FRow); - end; + if (FRange.Bottom-FRange.Top>0) or + ((FRange.Right-FRange.Left>0) and not (goRowSelect in Options)) then begin + InvalidateRange(FRange); + if goRowSelect in Options then + FRange:=Rect(FFixedCols, FRow, ColCount-1, FRow) + else + FRange:=Rect(FCol,FRow,FCol,FRow); + end; SelectActive := False; end; @@ -5322,8 +5380,8 @@ procedure TCustomGrid.SetSelection(const AValue: TGridRect); begin if goRangeSelect in Options then - with AValue do begin - if (Left<0)and(Top<0)and(Right<0)and(Bottom<0) then + begin + if (AValue.Left<0)and(AValue.Top<0)and(AValue.Right<0)and(AValue.Bottom<0) then CancelSelection else begin fRange:=NormalizarRect(aValue); @@ -5347,11 +5405,9 @@ procedure FindPrevColumn; begin - with FSizing do begin - Dec(Index); - while (Index>FixedCols) and (ColWidths[Index]=0) do - Dec(Index); - end; + Dec(FSizing.Index); + while (FSizing.Index>FixedCols) and (ColWidths[FSizing.Index]=0) do + Dec(FSizing.Index); end; begin @@ -5967,6 +6023,7 @@ end; procedure TCustomGrid.DoOPDeleteColRow(IsColumn: Boolean; index: Integer); + procedure doDeleteColumn; var tmpIndex: Integer; @@ -5996,6 +6053,7 @@ FixPosition(True, Index); end; + procedure doDeleteRow; begin CheckFixedCount(ColCount, RowCount-1, FFixedCols, FFixedRows); @@ -6015,6 +6073,7 @@ If FRowAutoInserted And (Index=FixedRows+(RowCount-1)) Then FRowAutoInserted := False; end; + begin CheckIndex(IsColumn,Index); if IsColumn then begin @@ -6032,8 +6091,6 @@ function TCustomGrid.EditorByStyle(Style: TColumnButtonStyle): TWinControl; begin case Style of - cbsNone, cbsCheckboxColumn, cbsButtonColumn: - Result := nil; cbsEllipsis: Result := FButtonStringEditor; cbsButton: @@ -6041,28 +6098,18 @@ cbsPicklist: Result := FPicklistEditor; cbsAuto: - begin - Result := FStringEditor; - end; + Result := FStringEditor; + else {cbsNone, cbsCheckboxColumn, cbsButtonColumn:} + Result := nil; end; end; procedure TCustomGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); - procedure DoPushCell; - begin - with FGCache do - begin - PushedCell := ClickCell; - ClickCellPushed:=True; - InvalidateCell(PushedCell.x, PushedCell.y); - end; - end; - function DoAutoEdit: boolean; begin - result := FAutoEdit and EditingAllowed(FCol) and + result := FAutoEdit and not(csNoFocus in ControlStyle) and EditingAllowed(FCol) and (FGCache.ClickCell.X=Col) and (FGCache.ClickCell.Y=Row); if result then begin SelectEditor; @@ -6084,7 +6131,7 @@ DebugLn('Mouse was in ', dbgs(FGCache.HotGridZone)); {$ENDIF} - if not Focused then begin + if not Focused and not(csNoFocus in ControlStyle) then begin SetFocus; if not Focused then begin {$ifDef dbgGrid} DebugLnExit('TCustomGrid.MouseDown EXIT: Focus not allowed'); {$Endif} @@ -6150,8 +6197,7 @@ FIgnoreClick := False; UnlockEditor; if IsMouseOverCellButton(X, Y) then begin - fGridState := gsButtonColumnClicking; - DoPushCell; + StartPushCell; Exit; end else if FExtendedColSizing and @@ -6190,7 +6236,9 @@ if not DoAutoEdit then // delay select active until mouse reachs another cell // do that only if editor is not shown - GridFlags := GridFlags + [gfNeedsSelectActive]; + GridFlags := GridFlags + [gfNeedsSelectActive] + else + exit; FPivot:=FGCache.ClickCell; @@ -6590,6 +6638,13 @@ EditorSetValue; if ParentChanged then Editor.Parent:=Self; + if FEditor=FStringEditor then + begin + if FCol-FFixedCols<Columns.Count then + FStringEditor.Alignment:=Columns[FCol-FFixedCols].Alignment + else + FStringEditor.Alignment:=taLeftJustify; + end; Editor.Visible:=True; if Focused and Editor.CanFocus then Editor.SetFocus; @@ -6738,6 +6793,20 @@ {$IfDef dbgGrid}DebugLnExit('DoEnter - END');{$Endif} end; +procedure TCustomGrid.DoLoadColumn(sender: TCustomGrid; aColumn: TGridColumn; + aColIndex: Integer; aCfg: TXMLConfig; aVersion: Integer; aPath: string); +begin + if Assigned(FOnLoadColumn) then + FOnLoadColumn(Self, aColumn, aColIndex, aCfg, aVersion, aPath); +end; + +procedure TCustomGrid.DoSaveColumn(sender: TCustomGrid; aColumn: TGridColumn; + aColIndex: Integer; aCfg: TXMLConfig; aVersion: Integer; aPath: string); +begin + if Assigned(FOnSaveColumn) then + FOnSaveColumn(Self, aColumn, aColIndex, aCfg, aVersion, aPath); +end; + function TCustomGrid.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; begin @@ -6779,9 +6848,9 @@ procedure MoveSel(Rel: Boolean; aCol,aRow: Integer); begin - // Always reset Offset in keyboard Events - FGCache.TLColOff:=0; - FGCache.TLRowOff:=0; + // Do not reset Offset in keyboard Events - see issue #29420 + //FGCache.TLColOff:=0; + //FGCache.TLRowOff:=0; SelectActive:=Sh; Include(FGridFlags, gfEditingDone); if MoveNextSelectable(Rel, aCol, aRow) then @@ -6854,15 +6923,23 @@ end else TabCheckEditorKey; VK_LEFT: - if Relaxed then - MoveSel(True, -cBidiMove[UseRightToLeftAlignment], 0) - else - MoveSel(True, 0,-1); + //Don't move to another cell is user is editing + if not FEditorKey then + begin + if Relaxed then + MoveSel(True, -cBidiMove[UseRightToLeftAlignment], 0) + else + MoveSel(True, 0,-1); + end; VK_RIGHT: - if Relaxed then - MoveSel(True, cBidiMove[UseRightToLeftAlignment], 0) - else - MoveSel(True, 0, 1); + //Don't move to another cell is user is editing + if not FEditorKey then + begin + if Relaxed then + MoveSel(True, cBidiMove[UseRightToLeftAlignment], 0) + else + MoveSel(True, 0, 1); + end; VK_UP: MoveSel(True, 0, -1); VK_DOWN: @@ -6892,6 +6969,7 @@ EditorShow(False); // Will show popup menu in the editor. VK_F2: if not FEditorKey and EditingAllowed(FCol) then begin + SelectEditor; EditorShow(False); Key:=0; end ; @@ -7521,16 +7599,22 @@ SwapInt(ATop, ABottom); Result := CellRect(ALeft, ATop); - with CellRect(ARight, ABottom) do - Result.BottomRight := BottomRight; + Result.BottomRight := CellRect(ARight, ABottom).BottomRight; IntersectRect(Result, Result, FGCache.VisibleGrid); end; procedure TCustomGrid.CacheMouseDown(const X, Y: Integer); +var + ParentForm: TCustomForm; begin FGCache.ClickMouse := Point(X,Y); FGCache.ClickCell := MouseToCell(FGCache.ClickMouse); + if (FGCache.HotGridZone=gzInvalid) then begin + ParentForm := GetParentForm(Self); + if (ParentForm<>nil) and ParentForm.Active then + FGCache.HotGridZone := CellToGridZone(FGCache.ClickCell.X, FGCache.ClickCell.Y); + end; end; procedure TCustomGrid.EndUpdate(aRefresh: boolean = true); @@ -7771,6 +7855,7 @@ procedure TCustomGrid.EditorPos; var msg: TGridMessage; + CellR: TRect; begin {$ifdef dbgGrid} DebugLn('Grid.EditorPos INIT');{$endif} if FEditor<>nil then begin @@ -7783,23 +7868,27 @@ FEditor.Dispatch(Msg); // send editor bounds - Msg.CellRect:=CellRect(FCol,FRow); + CellR:=CellRect(FCol,FRow); - with msg.CellRect do - if (Top<FGCache.FixedHeight) or (Top>FGCache.ClientHeight) or - (UseRightToLeftAlignment and ((Right-1>FlipX(FGCache.FixedWidth)) or (Right<0))) or - (not UseRightToLeftAlignment and ((Left<FGCache.FixedWidth) or (Left>FGCache.ClientWidth))) then + if (CellR.Top<FGCache.FixedHeight) or (CellR.Top>FGCache.ClientHeight) or + (UseRightToLeftAlignment and ((CellR.Right-1>FlipX(FGCache.FixedWidth)) or (CellR.Right<0))) or + (not UseRightToLeftAlignment and ((CellR.Left<FGCache.FixedWidth) or (CellR.Left>FGCache.ClientWidth))) + then // if editor will be out of sight, make the out of sight coords fixed // this should avoid range check errors on widgetsets that can't handle // high control coords (like GTK2) - Msg.CellRect := Bounds(-FEditor.Width-100, -FEditor.Height-100, Right-Left, Bottom-Top); + CellR := Bounds(-FEditor.Width-100, -FEditor.Height-100, CellR.Right-CellR.Left, CellR.Bottom-CellR.Top); if FEditorOptions and EO_AUTOSIZE = EO_AUTOSIZE then begin - if EditorBorderStyle = bsNone then - InflateRect(Msg.CellRect, -1, -1); - FEditor.BoundsRect := Msg.CellRect; + if (FEditor = FStringEditor) and (EditorBorderStyle = bsNone) then + CellR := TWSCustomGridClass(WidgetSetClass). + GetEditorBoundsFromCellRect(Canvas, CellR, GetColumnLayout(FCol, False)) + else + AdjustInnerCellRect(CellR); + FEditor.BoundsRect := CellR; end else begin Msg.LclMsg.msg:=GM_SETBOUNDS; + Msg.CellRect:=CellR; Msg.Grid:=Self; Msg.Col:=FCol; Msg.Row:=FRow; @@ -8360,14 +8449,18 @@ (CCol<=ColCount-1)and(CCol>=FixedCols)and (CRow<=RowCount-1)and(CRow>=FixedRows); end; + begin ACol := FCol; ARow := FRow; result := False; - if AAutoAdvance=aaNone then + if AAutoAdvance=aaNone then begin + ACol := 0; + ARow := 0; exit; // quick case, no auto movement allowed + end; if [goRowSelect,goRelaxedRowSelect]*Options=[goRowSelect] then begin if Inverse then @@ -8473,7 +8566,9 @@ ScrollInfo.fMask := SIF_POS; GetScrollInfo(Handle, Which, ScrollInfo); Result:=ScrollInfo.nPos; - end; + end + else + Result:=0; end; function TCustomGrid.GetDefaultColumnWidth(Column: Integer): Integer; @@ -8598,13 +8693,15 @@ cfg.setValue(cPath + '/title/caption/value', c.Title.Caption); if not c.Title.IsDefaultFont then CfgSetFontValue(cfg, cPath + '/title/font', c.Title.Font); + + doSaveColumn(self, c, -1, Cfg, Version, cPath); end; end; procedure TCustomGrid.SaveContent(cfg: TXMLConfig); var i,j,k: Integer; - Path: string; + Path, tmpPath: string; begin cfg.SetValue('grid/version', GRIDFILEVERSION); @@ -8627,9 +8724,11 @@ k:=integer(PtrUInt(FCols[i])); if (k>=0)and(k<>DefaultColWidth) then begin inc(j); + tmpPath := 'grid/design/columns/column'+IntToStr(j); cfg.SetValue('grid/design/columns/columncount',j); - cfg.SetValue('grid/design/columns/column'+IntToStr(j)+'/index', i); - cfg.SetValue('grid/design/columns/column'+IntToStr(j)+'/width', k); + cfg.SetValue(tmpPath+'/index', i); + cfg.SetValue(tmpPath+'/width', k); + doSaveColumn(self, nil, i, Cfg, GRIDFILEVERSION, tmpPath); end; end; end; @@ -8645,29 +8744,7 @@ end; end; - Path:='grid/design/options/'; - Cfg.SetValue(Path+'goFixedVertLine/value', goFixedVertLine in options); - Cfg.SetValue(Path+'goFixedHorzLine/value', goFixedHorzLine in options); - Cfg.SetValue(Path+'goVertLine/value', goVertLine in options); - Cfg.SetValue(Path+'goHorzLine/value', goHorzLine in options); - Cfg.SetValue(Path+'goRangeSelect/value', goRangeSelect in options); - Cfg.SetValue(Path+'goDrawFocusSelected/value', goDrawFocusSelected in options); - Cfg.SetValue(Path+'goRowSizing/value', goRowSizing in options); - Cfg.SetValue(Path+'goColSizing/value', goColSizing in options); - Cfg.SetValue(Path+'goRowMoving/value', goRowMoving in options); - Cfg.SetValue(Path+'goColMoving/value', goColMoving in options); - Cfg.SetValue(Path+'goEditing/value', goEditing in options); - Cfg.SetValue(Path+'goAutoAddRows/value', goAutoAddRows in options); - Cfg.SetValue(Path+'goTabs/value', goTabs in options); - Cfg.SetValue(Path+'goRowSelect/value', goRowSelect in options); - Cfg.SetValue(Path+'goAlwaysShowEditor/value', goAlwaysShowEditor in options); - Cfg.SetValue(Path+'goThumbTracking/value', goThumbTracking in options); - Cfg.SetValue(Path+'goColSpanning/value', goColSpanning in options); - cfg.SetValue(Path+'goRelaxedRowSelect/value', goRelaxedRowSelect in options); - cfg.SetValue(Path+'goDblClickAutoSize/value', goDblClickAutoSize in options); - Cfg.SetValue(Path+'goSmoothScroll/value', goSmoothScroll in Options); - Cfg.SetValue(Path+'goAutoAddRowsSkipContentCheck/value', goAutoAddRowsSkipContentCheck in Options); - Cfg.SetValue(Path+'goRowHighlight/value', goRowHighlight in Options); + SaveGridOptions(Cfg); end; Cfg.SetValue('grid/saveoptions/position', soPosition in SaveOptions); @@ -8685,6 +8762,35 @@ end; end; +procedure TCustomGrid.SaveGridOptions(cfg: TXMLConfig); +var + Path: string; +begin + Path:='grid/design/options/'; + Cfg.SetValue(Path+'goFixedVertLine/value', goFixedVertLine in options); + Cfg.SetValue(Path+'goFixedHorzLine/value', goFixedHorzLine in options); + Cfg.SetValue(Path+'goVertLine/value', goVertLine in options); + Cfg.SetValue(Path+'goHorzLine/value', goHorzLine in options); + Cfg.SetValue(Path+'goRangeSelect/value', goRangeSelect in options); + Cfg.SetValue(Path+'goDrawFocusSelected/value', goDrawFocusSelected in options); + Cfg.SetValue(Path+'goRowSizing/value', goRowSizing in options); + Cfg.SetValue(Path+'goColSizing/value', goColSizing in options); + Cfg.SetValue(Path+'goRowMoving/value', goRowMoving in options); + Cfg.SetValue(Path+'goColMoving/value', goColMoving in options); + Cfg.SetValue(Path+'goEditing/value', goEditing in options); + Cfg.SetValue(Path+'goAutoAddRows/value', goAutoAddRows in options); + Cfg.SetValue(Path+'goTabs/value', goTabs in options); + Cfg.SetValue(Path+'goRowSelect/value', goRowSelect in options); + Cfg.SetValue(Path+'goAlwaysShowEditor/value', goAlwaysShowEditor in options); + Cfg.SetValue(Path+'goThumbTracking/value', goThumbTracking in options); + Cfg.SetValue(Path+'goColSpanning/value', goColSpanning in options); + cfg.SetValue(Path+'goRelaxedRowSelect/value', goRelaxedRowSelect in options); + cfg.SetValue(Path+'goDblClickAutoSize/value', goDblClickAutoSize in options); + Cfg.SetValue(Path+'goSmoothScroll/value', goSmoothScroll in Options); + Cfg.SetValue(Path+'goAutoAddRowsSkipContentCheck/value', goAutoAddRowsSkipContentCheck in Options); + Cfg.SetValue(Path+'goRowHighlight/value', goRowHighlight in Options); +end; + procedure TCustomGrid.LoadColumns(cfg: TXMLConfig; Version: integer); var i, k: integer; @@ -8732,6 +8838,8 @@ s := cfg.GetValue(cPath + '/title/font/name/value', ''); if s<>'' then cfgGetFontValue(cfg, cPath + '/title/font', c.Title.Font); + + doLoadColumn(self, c, -1, cfg, version, cpath); end; end; @@ -8739,15 +8847,8 @@ procedure TCustomGrid.LoadContent(cfg: TXMLConfig; Version: Integer); var CreateSaved: Boolean; - Opt: TGridOptions; i,j,k: Integer; - Path: string; - - procedure GetValue(optStr:string; aOpt:TGridOption); - begin - if Cfg.GetValue(Path+OptStr+'/value', False) then Opt:=Opt+[aOpt]; - end; - + Path, tmpPath: string; begin if soDesign in FSaveOptions then begin CreateSaved:=Cfg.GetValue('grid/saveoptions/create', false); @@ -8778,9 +8879,11 @@ Path:='grid/design/columns/'; k:=cfg.getValue(Path+'columncount',0); for i:=1 to k do begin - j:=cfg.getValue(Path+'column'+IntToStr(i)+'/index',-1); + tmpPath := Path+'column'+IntToStr(i); + j:=cfg.getValue(tmpPath+'/index',-1); if (j>=0)and(j<=ColCount-1) then begin - ColWidths[j]:=cfg.getValue(Path+'column'+IntToStr(i)+'/width',-1); + ColWidths[j]:=cfg.getValue(tmpPath+'/width',-1); + doLoadColumn(self, nil, j, Cfg, Version, tmpPath); end; end; end; @@ -8794,34 +8897,7 @@ end; end; - Opt:=[]; - Path:='grid/design/options/'; - GetValue('goFixedVertLine', goFixedVertLine); - GetValue('goFixedHorzLine', goFixedHorzLine); - GetValue('goVertLine',goVertLine); - GetValue('goHorzLine',goHorzLine); - GetValue('goRangeSelect',goRangeSelect); - GetValue('goDrawFocusSelected',goDrawFocusSelected); - GetValue('goRowSizing',goRowSizing); - GetValue('goColSizing',goColSizing); - GetValue('goRowMoving',goRowMoving); - GetValue('goColMoving',goColMoving); - GetValue('goEditing',goEditing); - GetValue('goAutoAddRows',goAutoAddRows); - GetValue('goRowSelect',goRowSelect); - GetValue('goTabs',goTabs); - GetValue('goAlwaysShowEditor',goAlwaysShowEditor); - GetValue('goThumbTracking',goThumbTracking); - GetValue('goColSpanning', goColSpanning); - GetValue('goRelaxedRowSelect',goRelaxedRowSelect); - GetValue('goDblClickAutoSize',goDblClickAutoSize); - GetValue('goAutoAddRowsSkipContentCheck',goAutoAddRowsSkipContentCheck); - GetValue('goRowHighlight',goRowHighlight); - if Version>=2 then begin - GetValue('goSmoothScroll',goSmoothScroll); - end; - - Options:=Opt; + LoadGridOptions(cfg, Version); end; CreateSaved:=Cfg.GetValue('grid/saveoptions/position', false); @@ -8847,6 +8923,46 @@ end; end; +procedure TCustomGrid.LoadGridOptions(cfg: TXMLConfig; Version: Integer); +var + Opt: TGridOptions; + Path: string; + + procedure GetValue(optStr:string; aOpt:TGridOption); + begin + if Cfg.GetValue(Path+OptStr+'/value', False) then Opt:=Opt+[aOpt]; + end; +begin + Opt:=[]; + Path:='grid/design/options/'; + GetValue('goFixedVertLine', goFixedVertLine); + GetValue('goFixedHorzLine', goFixedHorzLine); + GetValue('goVertLine',goVertLine); + GetValue('goHorzLine',goHorzLine); + GetValue('goRangeSelect',goRangeSelect); + GetValue('goDrawFocusSelected',goDrawFocusSelected); + GetValue('goRowSizing',goRowSizing); + GetValue('goColSizing',goColSizing); + GetValue('goRowMoving',goRowMoving); + GetValue('goColMoving',goColMoving); + GetValue('goEditing',goEditing); + GetValue('goAutoAddRows',goAutoAddRows); + GetValue('goRowSelect',goRowSelect); + GetValue('goTabs',goTabs); + GetValue('goAlwaysShowEditor',goAlwaysShowEditor); + GetValue('goThumbTracking',goThumbTracking); + GetValue('goColSpanning', goColSpanning); + GetValue('goRelaxedRowSelect',goRelaxedRowSelect); + GetValue('goDblClickAutoSize',goDblClickAutoSize); + GetValue('goAutoAddRowsSkipContentCheck',goAutoAddRowsSkipContentCheck); + GetValue('goRowHighlight',goRowHighlight); + if Version>=2 then begin + GetValue('goSmoothScroll',goSmoothScroll); + end; + + Options:=Opt; +end; + procedure TCustomGrid.Loaded; begin inherited Loaded; @@ -9099,6 +9215,32 @@ {$ENDIF} end; +{$ifdef WINDOWS} +procedure TCustomGrid.IMEStartComposition(var Msg: TMessage); +begin + // enable editor + SelectEditor; + EditorShow(True); + if Editor<>nil then + Msg.Result:=SendMessage(Editor.Handle,Msg.msg,Msg.wParam,Msg.lParam); +end; + +procedure TCustomGrid.IMEComposition(var Msg: TMessage); +var + wc : pWideChar; + s : string; +begin + wc := @Msg.wParamlo; + s := Ansistring(WideCharLenToString(wc,1)); + // check valid mbcs + if (Length(s)>0) and (s[1]<>'?') then + Msg.wParamlo:=swap(pword(@s[1])^); + // send first mbcs to editor + if Editor<>nil then + Msg.Result:=SendMessage(Editor.Handle,Msg.msg,Msg.wParam,Msg.lParam); +end; +{$endif} + procedure TCustomGrid.Clear; var OldR,OldC: Integer; @@ -9468,6 +9610,11 @@ end; VK_END, VK_HOME: ; + VK_ESCAPE: + begin + doGridKeyDown; + FGrid.EditorHide; + end; else doEditorKeyDown; end; @@ -10315,6 +10462,9 @@ Ts: TSize; TmpCanvas: TCanvas; C: TGridColumn; + aRect: TRect; + isMultiLine: Boolean; + aText: string; begin if (aCol<0) or (aCol>ColCount-1) then Exit; @@ -10322,6 +10472,7 @@ tmpCanvas := GetWorkingCanvas(Canvas); C := ColumnFromGridColumn(aCol); + isMultiLine := (C<>nil) and C.Title.MultiLine; try W:=0; @@ -10340,9 +10491,16 @@ end; if (i=0) and (FixedRows>0) and (C<>nil) then - Ts := TmpCanvas.TextExtent(C.Title.Caption) + aText := C.Title.Caption else - Ts := TmpCanvas.TextExtent(Cells[aCol, i]); + aText := Cells[aCol, i]; + + if isMultiLine then begin + aRect := rect(0, 0, MaxInt, MaxInt); + DrawText(tmpCanvas.Handle, pchar(aText), Length(aText), aRect, DT_CALCRECT or DT_WORDBREAK); + Ts.cx := aRect.Right-aRect.Left; + end else + Ts := tmpCanvas.TextExtent(aText); if Ts.Cx>W then W := Ts.Cx; @@ -10552,6 +10710,10 @@ Inc(P); end; end; +var + aCol: Integer; + aRow: Integer; + NewValue: String; begin L := TStringList.Create; SubL := TStringList.Create; @@ -10565,11 +10727,23 @@ CollectCols(L[j]); for i:=0 to SubL.Count-1 do if (i+StartCol<ColCount) and (not GetColumnReadonly(i+StartCol)) then - Cells[i + StartCol, j + StartRow] := SubL[i]; + begin + aCol := i+StartCol; + aRow := j+StartRow; + NewValue := SubL[i]; + {$IFDEF EnableGridPasteValidateEntry} + if not ValidateEntry(aCol,aRow,Cells[aCol,aRow],NewValue) then + break; + {$ENDIF} + Cells[aCol, aRow] := NewValue; + end; end; finally SubL.Free; L.Free; + {$IFDEF EnableGridPasteValidateEntry} + EditingDone; + {$ENDIF} end; end; @@ -10673,7 +10847,7 @@ procedure TCustomStringGrid.Clean(aRect: TRect; CleanOptions: TGridZoneSet); begin with aRect do - Clean(Left, Top, Right, Bottom, CleanOptions); + Clean(Left, Top, Right, Bottom, CleanOptions); end; procedure TCustomStringGrid.Clean(StartCol, StartRow, EndCol, EndRow: integer; @@ -10723,149 +10897,106 @@ end; procedure TCustomStringGrid.LoadFromCSVStream(AStream: TStream; - ADelimiter: Char=','; WithHeader: boolean=true); - Procedure ParseDelimitedText(const AValue: string; const ADelimiter, AQuoteChar: Char; TS: TStrings); - { Helper function for LoadFromCSVFile - Adapted from TStrings.SetDelimitedText - - Only ADelimiter is used for separating the fields and not other whitespace - - If a field is quoted and it contains AQuoteChar, this occurrence is treated as a literal part of the field - - As per RFC4180 whitespace is considered to be part of the field, even if the field is not quoted - - Trailing spaces of a quoted field are trimmed - Example with ADelimiter = ',' and AQuoteChar = '"' - AValue = '111,2,22,333' -> 111|2|22|333 - AValue = '111,"2,22",333' -> 111|2,22|333 - AValue = '111, 222 ,333' -> 111| 222 |333 - } - var i,j:integer; - aNotFirst:boolean; + ADelimiter: Char=','; UseTitles: boolean=true; FromLine: Integer=0; + SkipEmptyLines: Boolean=true); +var + MaxCols: Integer = 0; + MaxRows: Integer = 0; + LineCounter: Integer = -1; + + function RowOffset: Integer; begin - TS.BeginUpdate; - i:=1; - j:=1; - aNotFirst:=false; - try - TS.Clear; - while i<=length(AValue) do - begin - // skip delimiter - if aNotFirst and (i<=length(AValue)) and (AValue[i]=ADelimiter) then inc(i); - // read next string - if i<=length(AValue) then - begin - if AValue[i]=AQuoteChar then - begin - // next string is quoted - j:=i+1; - while (j<=length(AValue)) and - ( (AValue[j]<>AQuoteChar) or - ( (j+1<=length(AValue)) and (AValue[j+1]=AQuoteChar) ) ) do - begin - if (j<=length(AValue)) and (AValue[j]=AQuoteChar) then - inc(j,2) - else - inc(j); - end; - // j is position of closing quote - TS.Add( StringReplace (Copy(AValue,i+1,j-i-1), - AQuoteChar+AQuoteChar,AQuoteChar, [rfReplaceAll])); - i:=j+1; - end - else - begin - // next string is not quoted - j:=i; - while (j<=length(AValue)) and - //basically any other character means some invalid text - ((Ord(AValue[j])>=Ord(' ')) or (AValue[j] in [#10,#13,#9,#0])) and - (AValue[j]<>ADelimiter) do inc(j); - TS.Add(Copy(AValue,i,j-i)); - i:=j; - end; - end - else - begin - if aNotFirst then TS.Add(''); - end; - // skip trailing spaces of a quoted field - // not really sure if that is RFC4180 compliant - while (i<=length(AValue)) and (Ord(AValue[i])<=Ord(' ')) and (AValue[i] <> ADelimiter) do inc(i); - aNotFirst:=true; - end; //end of string - finally - TS.EndUpdate; + // return row offset of current CSV record (MaxRows) which is 1 based + if UseTitles then + result := Max(0, FixedRows-1) + Max(MaxRows-1, 0) + else + result := FixedRows + Max(MaxRows-1, 0); + end; + + procedure NewRecord(Fields:TStringlist); + var + i, aRow: Integer; + begin + inc(LineCounter); + if (LineCounter < FromLine) then + exit; + + if Fields.Count=0 then + exit; + + if SkipEmptyLines and (Fields.Count=1) and (Fields[0]='') then + exit; + + // make sure we have enough columns + if MaxCols<Fields.Count then + MaxCols := Fields.Count; + if Columns.Enabled then begin + while Columns.VisibleCount<MaxCols do + Columns.Add; + end + else begin + if ColCount<MaxCols then + ColCount := MaxCols; end; - end;//ParseDelimitedText + // setup columns captions if enabled by UseTitles + if (MaxRows = 0) then + if UseTitles then + begin + if Columns.Enabled then + for i:=0 to Fields.Count-1 do Columns[i].Title.Caption:=Fields[i] + else + for i:=0 to Fields.Count-1 do Cells[i, 0] := Fields[i]; + inc(MaxRows); + exit; + end; + + // Make sure we have enough rows + Inc(MaxRows); + aRow := RowOffset; + if aRow>RowCount-1 then + RowCount := aRow + 20; + + // Copy line data to cells + for i:=0 to Fields.Count-1 do + Cells[i, aRow] := Fields[i]; + end; -var - Lines, HeaderL: TStringList; - i, j, StartRow: Integer; begin - Lines := TStringList.Create; - HeaderL := TStringList.Create; BeginUpdate; try - Lines.LoadFromStream(AStream); - // check for empty lines - for i:=Lines.Count-1 downto 0 do - if Trim(Lines[i])='' then - Lines.Delete(i); - if Lines.Count>0 then begin - ParseDelimitedText(Lines[0], ADelimiter, '"', HeaderL); - // Set Columns count based on loaded data - if Columns.Enabled then begin - while Columns.VisibleCount<>HeaderL.Count do - if Columns.VisibleCount<HeaderL.Count then - Columns.Add - else - Columns.Delete(Columns.Count-1); - end - else - ColCount := HeaderL.Count; // New column count - // Rest of the lines are for rows - if WithHeader and (FixedRows=0) then - RowCount := Lines.Count - else - RowCount := FixedRows + Lines.Count-1; - // Set column captions and set StartRow for the following rows - if WithHeader then begin - if (FixedRows>0) and Columns.Enabled then - for i:=0 to Columns.Count-1 do - Columns[i].Title.Caption:=HeaderL[i]; - StartRow := Max(FixedRows-1, 0); - j := 0; - end else begin - StartRow := FixedRows; - j := 1; - end; - // Store the row data - for i:=StartRow to RowCount-1 do begin - Rows[i].Delimiter := ADelimiter; - ParseDelimitedText(Lines[i-StartRow+j], ADelimiter, '"', Rows[i]); - end; - end; + LCSVUtils.LoadFromCSVStream(AStream, @NewRecord, ADelimiter); + + // last row offset + 1 (offset is 0 based) + RowCount := RowOffset + 1; + + if not Columns.Enabled then + ColCount := MaxCols + else + while Columns.Count > MaxCols do + Columns.Delete(Columns.Count-1); + finally - HeaderL.Free; - Lines.Free; EndUpdate; end; end; procedure TCustomStringGrid.LoadFromCSVFile(AFilename: string; - ADelimiter: Char=','; WithHeader: boolean=true); + ADelimiter: Char=','; UseTitles: boolean=true; FromLine: Integer=0; + SkipEmptyLines: Boolean=true); var TheStream: TFileStreamUtf8; begin TheStream:=TFileStreamUtf8.Create(AFileName,fmOpenRead or fmShareDenyWrite); try - LoadFromCSVStream(TheStream, ADelimiter, WithHeader); + LoadFromCSVStream(TheStream, ADelimiter, UseTitles, FromLine, SkipEmptyLines); finally TheStream.Free; end; end; procedure TCustomStringGrid.SaveToCSVStream(AStream: TStream; ADelimiter: Char; - WithHeader: boolean=true; VisibleColumnsOnly: boolean=false); + WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false); var i,j,StartRow: Integer; HeaderL, Lines: TStringList; @@ -10875,7 +11006,7 @@ exit; Lines := TStringList.Create; try - if WithHeader then begin + if WriteTitles then begin if Columns.Enabled then begin if FixedRows>0 then begin HeaderL := TStringList.Create; @@ -10937,13 +11068,13 @@ end; procedure TCustomStringGrid.SaveToCSVFile(AFileName: string; ADelimiter: Char; - WithHeader: boolean=true; VisibleColumnsOnly: boolean=false); + WriteTitles: boolean=true; VisibleColumnsOnly: boolean=false); var TheStream: TFileStreamUtf8; begin TheStream:=TFileStreamUtf8.Create(AFileName,fmCreate); try - SaveToCSVStream(TheStream, ADelimiter, WithHeader); + SaveToCSVStream(TheStream, ADelimiter, WriteTitles, VisibleColumnsOnly); finally TheStream.Free; end; @@ -10957,6 +11088,14 @@ { TGridColumnTitle } +procedure TGridColumnTitle.WriteCaption(Writer: TWriter); +begin + if not FIsDefaultCaption then + Writer.WriteString(FCaption) + else + Writer.WriteString(Caption); +end; + procedure TGridColumnTitle.FontChanged(Sender: TObject); begin FisDefaultTitleFont := False; @@ -10973,7 +11112,7 @@ function TGridColumnTitle.GetCaption: TCaption; begin - if FCaption = nil then + if (FCaption = nil) and FIsDefaultCaption then result := GetDefaultCaption else result := FCaption; @@ -11019,7 +11158,7 @@ function TGridColumnTitle.IsCaptionStored: boolean; begin - result := true; + result := false; end; function TGridColumnTitle.IsColorStored: boolean; @@ -11055,10 +11194,17 @@ if FCaption<>nil then StrDispose(FCaption); FCaption := StrNew(PChar(AValue)); + FIsDefaultCaption := false; FColumn.ColumnChanged; end; end; +procedure TGridColumnTitle.DefineProperties(Filer: TFiler); +begin + inherited DefineProperties(Filer); + Filer.DefineProperty('Caption', nil, @WriteCaption, true); +end; + procedure TGridColumnTitle.SetColor(const AValue: TColor); begin if FColor=nil then begin @@ -11169,6 +11315,7 @@ FImageIndex := -1; FOldImageIndex := -1; FImageLayout := blGlyphRight; + FIsDefaultCaption := true; end; destructor TGridColumnTitle.Destroy; @@ -11278,6 +11425,14 @@ result := FReadOnly^; end; +function TGridColumn.GetStoredWidth: Integer; +begin + if FWidth=nil then + result := -1 + else + result := FWidth^; +end; + function TGridColumn.GetValueChecked: string; begin if FValueChecked = nil then @@ -11531,13 +11686,22 @@ begin if (AValue=0) and not Visible then exit; - if FWidth = nil then begin - if AValue=GetDefaultWidth then + if AValue>=0 then begin + if FWidth = nil then begin + if AValue=GetDefaultWidth then + exit; + New(FWidth) + end else if FWidth^ = AVAlue then exit; - New(FWidth) - end else if FWidth^ = AVAlue then - exit; - FWidth^ := AValue; + FWidth^ := AValue; + end else begin + // negative value is handed over - dispose FWidth to use DefaultWidth + if FWidth <> nil then begin + Dispose(FWidth); + FWidth := nil; + end else + exit; + end; FWidthChanged:=true; ColumnChanged; end; @@ -11943,12 +12107,14 @@ end; procedure TButtonCellEditor.msg_SetBounds(var Msg: TGridMessage); +var + r: TRect; begin - with Msg.CellRect do begin - if Right-Left>DEFBUTTONWIDTH then - Left:=Right-DEFBUTTONWIDTH; - SetBounds(Left, Top, Right-Left, Bottom-Top); - End; + r := Msg.CellRect; + FGrid.AdjustInnerCellRect(r); + if r.Right-r.Left>DEFBUTTONWIDTH then + r.Left:=r.Right-DEFBUTTONWIDTH; + SetBounds(r.Left, r.Top, r.Right-r.Left, r.Bottom-r.Top); end; procedure TButtonCellEditor.msg_SetPos(var Msg: TGridMessage); @@ -12067,6 +12233,11 @@ VK_END, VK_HOME: ; + VK_ESCAPE: + begin + doGridKeyDown; + FGrid.EditorHide; + end; else doEditorKeyDown; end; @@ -12248,9 +12419,12 @@ end; procedure TCompositeCellEditor.msg_SetBounds(var Msg: TGridMessage); +var + r: TRect; begin - with Msg.CellRect do - SetBounds(Left, Top, Right-Left, Bottom-Top); + r := Msg.CellRect; + FGrid.AdjustInnerCellRect(r); + SetBounds(r.Left, r.Top, r.Right-r.Left, r.Bottom-r.Top); end; procedure TCompositeCellEditor.msg_SetMask(var Msg: TGridMessage); Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/lcl/images/btntime.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/lcl/images/btntime.png differ diff -Nru lazarus-1.4.4+dfsg/lcl/images/cursors/build.bat lazarus-1.6+dfsg/lcl/images/cursors/build.bat --- lazarus-1.4.4+dfsg/lcl/images/cursors/build.bat 2013-09-28 03:06:54.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/images/cursors/build.bat 2015-04-08 06:03:30.000000000 +0000 @@ -1 +1,2 @@ ..\..\..\tools\lazres ..\..\cursors.res cur_1.cur cur_10.cur cur_12.cur cur_13.cur cur_14.cur cur_15.cur cur_16.cur cur_17.cur cur_18.cur cur_20.cur cur_21.cur cur_22.cur +..\..\..\tools\lazres ..\..\cursor_hourglass.res cur_11.cur \ No newline at end of file Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/lcl/images/cursors/cur_11.cur and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/lcl/images/cursors/cur_11.cur differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/lcl/images/dbnavcancel.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/lcl/images/dbnavcancel.png differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/lcl/images/dbnavdelete.png and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/lcl/images/dbnavdelete.png differ diff -Nru lazarus-1.4.4+dfsg/lcl/images/lcl_edbtnimg_list.txt lazarus-1.6+dfsg/lcl/images/lcl_edbtnimg_list.txt --- lazarus-1.4.4+dfsg/lcl/images/lcl_edbtnimg_list.txt 2011-06-29 00:04:54.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/images/lcl_edbtnimg_list.txt 2015-07-25 13:11:10.000000000 +0000 @@ -3,3 +3,4 @@ btncalendar.png btnseldir.png btnselfile.png +btntime.png diff -Nru lazarus-1.4.4+dfsg/lcl/include/application.inc lazarus-1.6+dfsg/lcl/include/application.inc --- lazarus-1.4.4+dfsg/lcl/include/application.inc 2015-03-15 17:41:10.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/application.inc 2015-06-16 11:32:35.000000000 +0000 @@ -73,15 +73,15 @@ function GetApplicationName: string; begin if Assigned(Application) then - Result := Application.Title; + Result := Application.Title + else + Result := ''; end; {------------------------------------------------------------------------------ TApplication Constructor ------------------------------------------------------------------------------} constructor TApplication.Create(AOwner: TComponent); -var - LangDefault, LangFallback: String; begin LCLProc.SendApplicationMessageFunction:=@SendApplicationMsg; @@ -114,15 +114,7 @@ FFindGlobalComponentEnabled:=true; RegisterFindGlobalComponentProc(@FindApplicationComponent); - {$ifndef wince}// remove ifdef when gettext is fixed - LCLGetLanguageIDs(LangDefault, LangFallback); - if LangDefault <> '' then - FBidiMode := Direction(LangDefault) - else - FBidiMode := Direction(LangFallback); - {$else} - FBidiMode := bdLeftToRight; - {$endif} + FBidiMode := DefaultApplicationBiDiMode; FMainFormOnTaskBar := False; @@ -213,7 +205,7 @@ //if a hint is visible immediately query the app to show a new hint... if FHintTimerType = ahttHideHint then ShowHintWindow(Info); - //...if there's no hint window visible at this point than schedule a new query + //...if there's no hint window visible at this point then schedule a new query if (FHintTimerType = ahttNone) or (FHintWindow = nil) or not FHintWindow.Visible then StartHintTimer(HintPause, ahttShowHint); end; @@ -864,7 +856,10 @@ FHintWindow.ActivateHint(HintWinRect, HintInfo.HintStr); FHintRect := HintInfo.CursorRect; // start hide timer - StartHintTimer(HintInfo.HideTimeout,ahttHideHint); + if HintInfo.ReshowTimeout>0 then + StartHintTimer(HintInfo.ReshowTimeout,ahttReshowHint) + else + StartHintTimer(HintInfo.HideTimeout,ahttHideHint); end else HideHint; @@ -912,7 +907,7 @@ {$endif} StopHintTimer; case FHintTimerType of - ahttShowHint: + ahttShowHint,ahttReshowHint: begin if not GetCursorPos(CursorPos) then HideHint diff -Nru lazarus-1.4.4+dfsg/lcl/include/bitmap.inc lazarus-1.6+dfsg/lcl/include/bitmap.inc --- lazarus-1.4.4+dfsg/lcl/include/bitmap.inc 2014-05-12 23:12:18.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/bitmap.inc 2015-04-04 18:23:18.000000000 +0000 @@ -127,18 +127,21 @@ begin FillChar(Header, SizeOf(Header), 0); +{ Create a BMP header ordered as it would be on disc, noting that if the CPU + is big-endian this will be the "wrong way round" for numeric operations. } + + {$IFNDEF ENDIAN_BIG} Header.bfType := $4d42; Header.bfSize := SizeOf(Header) + ASize; + {$ELSE} + Header.bfType := $424d; + Header.bfSize := swap(SizeOf(Header) + ASize); + {$ENDIF} //Header.bfOffBits := 0; //data imediately follows - {$IFDEF ENDIAN_BIG} - swap(Header.bfType); - swap(Header.bfSize); - //swap(Header.bfOffBits); - {$ENDIF} S := THeaderStream.Create(AStream, @Header, SizeOf(Header)); try - inherited LoadFromStream(S, Header.bfSize); + inherited LoadFromStream(S, SizeOf(Header) + ASize); finally S.Free; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/canvas.inc lazarus-1.6+dfsg/lcl/include/canvas.inc --- lazarus-1.4.4+dfsg/lcl/include/canvas.inc 2014-09-25 13:56:15.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/canvas.inc 2015-11-17 21:45:55.000000000 +0000 @@ -460,7 +460,7 @@ procedure TCanvas.DoGetTextSize(Text: string; var w, h: integer); var - TxtSize: tagSIZE; + TxtSize: TSize; begin TxtSize:=TextExtent(Text); w:=TxtSize.cx; diff -Nru lazarus-1.4.4+dfsg/lcl/include/comboex.inc lazarus-1.6+dfsg/lcl/include/comboex.inc --- lazarus-1.4.4+dfsg/lcl/include/comboex.inc 2014-09-21 17:17:55.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/comboex.inc 2016-01-05 13:09:33.000000000 +0000 @@ -1,4 +1,4 @@ -{%MainUnit comboex.pas} +{%MainUnit ../comboex.pas} {***************************************************************************** TCustomComboBoxEx, TCustomCheckComboBox @@ -217,7 +217,7 @@ function TComboExItems.Insert(AIndex: Integer): TComboExItem; begin - Result:=Insert(AIndex); + Result := TComboExItem(inherited Insert(AIndex)); end; procedure TComboExItems.Notify(Item: TCollectionItem; Action: TCollectionNotification); diff -Nru lazarus-1.4.4+dfsg/lcl/include/controlbar.inc lazarus-1.6+dfsg/lcl/include/controlbar.inc --- lazarus-1.4.4+dfsg/lcl/include/controlbar.inc 2015-05-15 21:52:49.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/controlbar.inc 2015-10-26 21:34:11.000000000 +0000 @@ -95,10 +95,10 @@ aBand: TCtrlBand; begin bR2L := IsRightToLeft; - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomControlBar.AlignControlsToBands'){$ENDIF}; for aBand in FVisiBands do AlignControlToBand(aBand, bR2L); - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomControlBar.AlignControlsToBands'){$ENDIF}; end; procedure TCustomControlBar.AlignControlToBand(ABand: TCtrlBand; ARightToLeft: Boolean); @@ -217,10 +217,10 @@ begin inherited CMBiDiModeChanged(Message); aWidth := Width; - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomControlBar.CMBiDiModeChanged'){$ENDIF}; for i := 0 to FBands.Count - 1 do FBands[i].Left := abs(FBands[i].Left - aWidth) - FBands[i].Width; - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomControlBar.CMBiDiModeChanged'){$ENDIF}; end; procedure TCustomControlBar.CMBorderChanged(var Message: TLMessage); @@ -376,6 +376,7 @@ end; if i < aCount then begin { attempt to stick band by some existing band } + k := 0; if not bR2L then begin aLimit := ClientWidth - aBevel - cFullGrabber; j := 0; @@ -935,6 +936,12 @@ aLeftMost := Math.min(aLeftMost, FVisiBands[i].Left); aRightMost := Math.max(aRightMost, FVisiBands[i].Right); end; + end + else begin + aBevel := 0; + aBound := 0; + aLeftMost := 0; + aRightMost := 0; end; if not bR2L then begin if (aRightMost > aBound) and (aLeftMost > aBevel) then begin diff -Nru lazarus-1.4.4+dfsg/lcl/include/control.inc lazarus-1.6+dfsg/lcl/include/control.inc --- lazarus-1.4.4+dfsg/lcl/include/control.inc 2015-09-02 22:44:23.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/control.inc 2015-12-21 22:48:41.000000000 +0000 @@ -1372,6 +1372,8 @@ ------------------------------------------------------------------------------} procedure TControl.DoConstraintsChange(Sender : TObject); begin + Width:=Constraints.MinMaxWidth(Width); + Height:=Constraints.MinMaxHeight(Height); AdjustSize; end; @@ -3039,8 +3041,8 @@ if CheckPosition(Self) then DebugLn('[TControl.SetBoundsRect] ',Name,':',ClassName); {$ENDIF} - with ARect do - SetBounds(Left, Top, Max(Right - Left, 0), Max(Bottom - Top, 0)); + SetBounds(ARect.Left, ARect.Top, + Max(ARect.Right - ARect.Left, 0), Max(ARect.Bottom - ARect.Top, 0)); end; procedure TControl.SetBoundsRectForNewParent(const AValue: TRect); @@ -3235,16 +3237,15 @@ var P: TPoint; FloatHost: TWinControl; + R: TRect; begin DebugLn(['TControl.DoFloatMsg ',DbgSName(Self),' Floating=',Floating]); if Floating and (Parent <> nil) then begin P := Parent.ClientToScreen(Point(Left, Top)); - with ADockSource.DockRect do - begin - Parent.BoundsRect := Bounds(Left + Parent.Left - P.X, Top + Parent.Top - P.Y, - Right - Left + Parent.Width - Width, Bottom - Top + Parent.Height - Height); - end; + R := ADockSource.DockRect; + Parent.BoundsRect := Bounds(R.Left + Parent.Left - P.X, R.Top + Parent.Top - P.Y, + R.Right - R.Left + Parent.Width - Width, R.Bottom - R.Top + Parent.Height - Height); end else begin FloatHost := CreateFloatingDockSite(ADockSource.DockRect); @@ -3858,15 +3859,14 @@ if lMode = lapDefault then lMode := Application.LayoutAdjustmentPolicy; // X-axis adjustment proportion + lXProportion := 1.0; if lMode = lapAutoAdjustWithoutHorizontalScrolling then begin - if AOldFormWidth > 0 then lXProportion := ANewFormWidth / AOldFormWidth - else lXProportion := 1.0; + if AOldFormWidth > 0 then lXProportion := ANewFormWidth / AOldFormWidth; end else if lMode = lapAutoAdjustForDPI then begin - if AFromDPI > 0 then lXProportion := AToDPI / AFromDPI - else lXProportion := 1.0; + if AFromDPI > 0 then lXProportion := AToDPI / AFromDPI; end; // y-axis adjustment proportion @@ -3874,8 +3874,7 @@ else lYProportion := 1.0; // Apply the changes - if (lMode = lapAutoAdjustWithoutHorizontalScrolling) or - (lMode = lapAutoAdjustForDPI) then + if lMode in [lapAutoAdjustWithoutHorizontalScrolling, lapAutoAdjustForDPI] then begin if ShouldAutoAdjustLeftAndTop then begin @@ -5427,6 +5426,7 @@ procedure CheckReason; var i: Integer; + s: String; begin i:=FAutoSizingLockReasons.Count-1; while i>=0 do begin @@ -5436,7 +5436,10 @@ end; dec(i); end; - RaiseGDBException('TControl.EnableAutoSizing never disabled with reason: '+Reason); + s:='TControl.EnableAutoSizing '+DbgSName(Self)+' never disabled with reason "'+Reason+'"'; + for i:=0 to FAutoSizingLockReasons.Count-1 do + s+=','+LineEnding+'reason['+IntToStr(i)+']="'+FAutoSizingLockReasons[i]+'"'; + RaiseGDBException(s); end; {$ENDIF} diff -Nru lazarus-1.4.4+dfsg/lcl/include/controlscrollbar.inc lazarus-1.6+dfsg/lcl/include/controlscrollbar.inc --- lazarus-1.4.4+dfsg/lcl/include/controlscrollbar.inc 2015-02-17 23:58:59.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/controlscrollbar.inc 2015-12-23 13:12:36.000000000 +0000 @@ -24,7 +24,7 @@ procedure TControlScrollBar.SetPosition(const Value: Integer); var - OldPosition, MaxPos: Integer; + MaxPos, PrevPosition: Integer; ScrollInfo: TScrollInfo; begin if csLoading in FControl.ComponentState then @@ -70,11 +70,15 @@ if Value = FPosition then exit; - // scroll logical client area of FControl - OldPosition := FPosition; + PrevPosition := FPosition; + // position has to be set before FControl.ScrollBy !!! FPosition := Value; - if FControl is TScrollingWinControl then - TScrollingWinControl(FControl).ScrollbarHandler(Kind, OldPosition); + + // scroll logical client area of FControl + if Kind = sbVertical then + FControl.ScrollBy(0, PrevPosition - FPosition) + else + FControl.ScrollBy(PrevPosition - FPosition, 0); // check that the new position is also set on the scrollbar if HandleAllocated and (GetScrollPos(ControlHandle, IntfBarKind[Kind]) <> FPosition) then diff -Nru lazarus-1.4.4+dfsg/lcl/include/coolbar.inc lazarus-1.6+dfsg/lcl/include/coolbar.inc --- lazarus-1.4.4+dfsg/lcl/include/coolbar.inc 2015-02-25 22:55:37.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/coolbar.inc 2015-10-26 21:34:11.000000000 +0000 @@ -553,8 +553,10 @@ aStartIndex := 0; //set all Bands in row to uniform height aRowEnd := True; + aLeft := aBorderLeft; for i := 0 to aCountM1 do begin - if aRowEnd or FVisiBands[i].Break then aLeft := aBorderLeft; + if aRowEnd or FVisiBands[i].Break then + aLeft := aBorderLeft; aBandHeight := Max(aBandHeight, FVisiBands[i].CalcPreferredHeight); aRowEnd := (i = aCountM1); inc(aLeft, FVisiBands[i].Width); @@ -580,7 +582,8 @@ aRowEnd := True; include(FWinControlFlags, wcfAligningControls); for i := 0 to aCountM1 do begin - if aRowEnd or FVisiBands[i].Break then aLeft := aBorderLeft; + if aRowEnd or FVisiBands[i].Break then + aLeft := aBorderLeft; if not FRightToLeft or Vertical then FVisiBands[i].FLeft := aLeft else @@ -642,12 +645,15 @@ if aRowEnd then inc(aTop, FVisiBands[i].FHeight+TCoolBand.cDivider); end; if AutoSize then begin - if aCountM1 >= 0 then DisableAutoSizing; + if aCountM1 >= 0 then DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomCoolBar.CalculateAndAlign'){$ENDIF}; inc(FUpdateCount); - InvalidatePreferredSize; - AdjustSize; - if aCountM1 >= 0 then EnableAutoSizing; - dec(FUpdateCount); + try + InvalidatePreferredSize; + AdjustSize; + finally + if aCountM1 >= 0 then EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomCoolBar.CalculateAndAlign'){$ENDIF}; + dec(FUpdateCount); + end; end; exclude(FWinControlFlags, wcfAligningControls); end; @@ -699,7 +705,7 @@ FLockCursor := True; if ABand then begin if not AGrabber then - Cursor := crDrag + Cursor := crDefault else if not Vertical then Cursor := crHSplit @@ -755,9 +761,12 @@ inherited EndUpdate; //DebugLn('EndUpdate calls CalculateAndAlign'); if FUpdateCount = 0 then begin - DisableAutoSizing; - CalculateAndAlign; - EnableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomCoolBar.EndUpdate'){$ENDIF}; + try + CalculateAndAlign; + finally + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomCoolBar.EndUpdate'){$ENDIF}; + end; Invalidate; end; end; @@ -840,6 +849,11 @@ aGrabber: Boolean; begin inherited MouseDown(Button, Shift, X, Y); + if Button = mbRight then + begin + Cursor := crDefault; + Exit; + end; MouseToBandPos(X, Y, aBand, aGrabber); FDraggedBandIndex := aBand; if (aBand >= 0) and (length(FVisiBands) > 1) then begin //hit any Band @@ -891,6 +905,9 @@ FVisiBands[FDraggedBandIndex-1].Width := Y-FDragInitPos-FVisiBands[FDraggedBandIndex-1].FLeft end; + dbMove: begin + Cursor := crDrag; + end; end; end; end; @@ -1005,6 +1022,9 @@ Invalidate; end; end; + Cursor := crDefault; + if Assigned(FOnChange) then + FOnChange(Self); end; FDragBand := dbNone; end; @@ -1152,8 +1172,8 @@ end; aCountM1 := length(FVisiBands)-1; if aCountM1 >= 0 then begin - if FBandBorderStyle = bsSingle then - aRaisedBevel := ((EdgeInner = esLowered) and (EdgeOuter = esRaised)); + aRaisedBevel := (FBandBorderStyle = bsSingle) and + (EdgeInner = esLowered) and (EdgeOuter = esRaised); aRowEnd := False; aGrabStyle := GrabStyle; if Vertical then diff -Nru lazarus-1.4.4+dfsg/lcl/include/customcombobox.inc lazarus-1.6+dfsg/lcl/include/customcombobox.inc --- lazarus-1.4.4+dfsg/lcl/include/customcombobox.inc 2014-12-12 21:46:45.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customcombobox.inc 2015-12-31 10:10:25.000000000 +0000 @@ -250,7 +250,7 @@ var Count, MinItemsWidth, MinItemsHeight: Integer; begin - if (not HandleAllocated) or (not DroppedDown) then exit; + if (not HandleAllocated) then exit; Count := Items.Count; if Count > DropDownCount then Count := DropDownCount; if Count < 1 then Count := 1; @@ -906,8 +906,8 @@ ------------------------------------------------------------------------------} function TCustomComboBox.GetItemIndex : integer; begin - if not (csDestroying in ComponentState) and - not (csDestroyingHandle in ControlState) and HandleAllocated then + if not (csDestroyingHandle in ControlState) and HandleAllocated then + // WidgetSet must be called even when csDestroying for at least TIniPropStorage's needs. FItemIndex:= TWSCustomComboBoxClass(WidgetSetClass).GetItemIndex(Self); Result := FItemIndex; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/customedit.inc lazarus-1.6+dfsg/lcl/include/customedit.inc --- lazarus-1.4.4+dfsg/lcl/include/customedit.inc 2014-06-22 16:38:22.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customedit.inc 2015-06-07 09:46:32.000000000 +0000 @@ -80,6 +80,9 @@ AutoSize := True; // Accessibility AccessibleRole := larTextEditorSingleline; + FTextHint := ''; + FTextHintFontColor := clGrayText; + FTextHintFontStyle := [fsItalic]; end; {------------------------------------------------------------------------------ @@ -106,6 +109,12 @@ Result := UTF8Copy(Text, SelStart + 1, SelLength) end; +procedure TCustomEdit.Loaded; +begin + inherited Loaded; + if (Text = '') then ShowTextHint; +end; + {------------------------------------------------------------------------------ Setter for CaretPos @@ -379,6 +388,14 @@ RegisterPropertyToSkip(TCustomEdit, 'OEMConvert', 'VCL compatibility property', ''); end; +function TCustomEdit.CanShowTextHint: Boolean; +begin + Result := (([csDesigning,csLoading] * ComponentState) = []) and + (Text = '') and + (FTextHint <> '') and + (not Focused); +end; + {------------------------------------------------------------------------------ Method: TCustomEdit.SetEchoMode Params: Value to set FModified to @@ -501,11 +518,20 @@ procedure TCustomEdit.RealSetText(const AValue: TCaption); begin FTextChangedByRealSetText := True; + if FTextHintShowing and (not FSettingTextHint) then HideTextHint; Modified := False; inherited RealSetText(AValue); FTextChangedByRealSetText := False; end; +function TCustomEdit.RealGetText: TCaption; +begin + if not FTextHintShowing then + Result := inherited RealGetText + else + Result := ''; +end; + {------------------------------------------------------------------------------ Method: TCustomEdit.SetModified Params: Value to set FModified to @@ -518,6 +544,7 @@ SStart, SLen: Integer; begin //debugln('TCustomEdit.TextChanged ',DbgSName(Self)); + if FSettingTextHint then Exit; if FCharCase in [ecUppercase, ecLowercase] then begin // use a local variable to reduce amounts of widgetset calls @@ -547,6 +574,7 @@ Change; end; end; + if (Text = '') and (not FTextHintShowing) then ShowTextHint; end; procedure TCustomEdit.Change; @@ -563,12 +591,14 @@ if (SelText = Text) then FAutoSelected := True; end;//End if FAutoSelect inherited DoEnter; + if FTextHintShowing then HideTextHint; end; procedure TCustomEdit.DoExit; begin FAutoSelected := False; inherited DoExit; + if (Text = '') then ShowTextHint; end; {------------------------------------------------------------------------------ @@ -588,6 +618,65 @@ Result:=fCaretPos; end; +procedure TCustomEdit.SetTextHint(AValue: TTranslateString); +begin + if (FTextHint = AValue) then Exit; + FTextHint := AValue; + if FTextHintShowing and (FTextHint = '') then + begin + HideTextHint; + end + else + begin + if (Text = '') then ShowTextHint; + end; +end; + +procedure TCustomEdit.ShowTextHint; +var + OldModified: Boolean; +begin + if not CanShowTextHint then Exit; + if not FtextHintShowing then + begin + FSavedFontColor := Font.Color; + FSavedFontStyle := Font.Style; + FSavedParentFont := ParentFont; + end; + FTextHintShowing := True; + OldModified := Modified; + FSettingTextHint := True; + try + //settint Text clears modified flag + inherited RealSetText(FTextHint); + Font.Color := FTextHintFontColor; + Font.Style := FTextHintFontStyle; + finally + FSettingTextHint := False; + Modified := OldModified; + end; +end; + +procedure TCustomEdit.HideTextHint; +var + OldModified: Boolean; +begin + try + //settint Text clears modified flag + OldModified := Modified; + Font.Color := FSavedFontColor; + Font.Style := FSavedFontStyle; + ParentFont := FSavedParentFont; + FTextHintShowing := False; + FSettingTextHint := True; + inherited RealSetText(''); + FTextHintShowing := False; + finally + FSettingTextHint := False; + Modified := OldModified; + end; +end; + procedure TCustomEdit.SetAlignment(const AValue: TAlignment); begin if FAlignment = AValue then diff -Nru lazarus-1.4.4+dfsg/lcl/include/customflowpanel.inc lazarus-1.6+dfsg/lcl/include/customflowpanel.inc --- lazarus-1.4.4+dfsg/lcl/include/customflowpanel.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customflowpanel.inc 2015-11-30 14:59:05.000000000 +0000 @@ -0,0 +1,385 @@ +{%MainUnit ../extctrls.pp} + +{****************************************************************************** + TCustomFlowPanel + ****************************************************************************** + Ondrej Pokorny + ****************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ****************************************************************************** +} +{ + + Delphi compatibility: + + - TFlowPanel is compatible with Delphi implementation +} + +{ TFlowPanelControlList } + +constructor TFlowPanelControlList.Create(AOwner: TPersistent); +begin + Assert(AOwner is TCustomFlowPanel); + inherited Create(AOwner, TFlowPanelControl); +end; + +function TFlowPanelControlList.Add: TFlowPanelControl; +begin + Result := TFlowPanelControl(inherited Add); +end; + +procedure TFlowPanelControlList.AddControl(AControl: TControl; + AIndex: Integer); +var + I: Integer; + Item: TFlowPanelControl; +begin + if IndexOf(AControl) >= 0 then + Exit; + + if AIndex = -1 then + for I := 0 to Count-1 do + if not Assigned(Items[I].Control) then + begin + AIndex := I; + break; + end; + + if AIndex = -1 then + Item := Add + else + Item := Items[AIndex]; + + Item.FControl := AControl; +end; + +function TFlowPanelControlList.FPOwner: TCustomFlowPanel; +begin + Result := TCustomFlowPanel(GetOwner); +end; + +function TFlowPanelControlList.GetItem(Index: Integer + ): TFlowPanelControl; +begin + Result := TFlowPanelControl(inherited GetItem(Index)); +end; + +function TFlowPanelControlList.IndexOf(AControl: TControl): Integer; +begin + for Result := 0 to Count - 1 do + if Items[Result].Control = AControl then + Exit; + Result := -1; +end; + +procedure TFlowPanelControlList.RemoveControl(AControl: TControl); +var + I: Integer; +begin + for I := Count - 1 downto 0 do + if Items[I].Control = AControl then + begin + Items[I].FControl := nil; + Delete(I); + Exit; + end; +end; + +procedure TFlowPanelControlList.SetItem(Index: Integer; + const AItem: TFlowPanelControl); +begin + inherited SetItem(Index, AItem); +end; + +{ TFlowPanelControl } + +procedure TFlowPanelControl.AssignTo(Dest: TPersistent); +var + xDest: TFlowPanelControl; +begin + if Dest is TFlowPanelControl then + begin + xDest := TFlowPanelControl(Dest); + xDest.FWrapAfter := Self.FWrapAfter; + end else + inherited AssignTo(Dest); +end; + +function TFlowPanelControl.FPCollection: TFlowPanelControlList; +begin + Result := Collection as TFlowPanelControlList; +end; + +function TFlowPanelControl.FPOwner: TCustomFlowPanel; +begin + Result := FPCollection.FPOwner; +end; + +procedure TFlowPanelControl.SetControl(const aControl: TControl); +begin + if FControl = aControl then Exit; + Assert(FControl = nil); + FControl := aControl; +end; + +procedure TFlowPanelControl.SetIndex(Value: Integer); +begin + inherited SetIndex(Value); + + if FPOwner.ComponentState * [csLoading, csUpdating, csDestroying] = [] then + FPOwner.ReAlign; +end; + +procedure TFlowPanelControl.SetWrapAfter(const AWrapAfter: TWrapAfter); +begin + if FWrapAfter = AWrapAfter then exit; + FWrapAfter := AWrapAfter; + + if FPOwner.ComponentState * [csLoading, csUpdating, csDestroying] = [] then + FPOwner.ReAlign; +end; + +{ TCustomFlowPanel } + +constructor TCustomFlowPanel.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + + FControlList := TFlowPanelControlList.Create(Self); + FAutoWrap := True; +end; + +procedure TCustomFlowPanel.AlignControls(AControl: TControl; + var RemainingClientRect: TRect); +const + cXIncDir: array[TFlowStyle] of Integer = (1, -1, 1, -1, 1, 1, -1, -1); + cYIncDir: array[TFlowStyle] of Integer = (1, 1, -1, -1, 1, -1, 1, -1); + cYDeltaConst: array[TFlowStyle] of Integer = (0, 0, -1, -1, 0, 0, 0, 0); + cXDeltaConst: array[TFlowStyle] of Integer = (0, 0, 0, 0, 0, 0, -1, -1); +var + I, L: Integer; + xMaxHeight, xMaxWidth: Integer; + xPosition: TPoint; + xSize, xGroupSize: TSize; + xControl: TControl; + xConBS: TControlBorderSpacing; + xForceWrap, xForbidWrap: Boolean; +begin + if ControlCount = 0 then + Exit; + + DisableAlign; + try + xMaxHeight := 0; + xMaxWidth := 0; + AdjustClientRect(RemainingClientRect); + case FFlowStyle of + fsLeftRightTopBottom, + fsTopBottomLeftRight: + xPosition := RemainingClientRect.TopLeft; + fsRightLeftTopBottom, + fsTopBottomRightLeft: + xPosition := Point(RemainingClientRect.Right, RemainingClientRect.Top); + fsLeftRightBottomTop, + fsBottomTopLeftRight: + xPosition := Point(RemainingClientRect.Left, RemainingClientRect.Bottom); + fsRightLeftBottomTop, + fsBottomTopRightLeft: + xPosition := RemainingClientRect.BottomRight; + end; + + for I := 0 to FControlList.Count - 1 do + begin + xControl := FControlList[I].Control; + xConBS := xControl.BorderSpacing; + if not xControl.Visible and not (csDesigning in ComponentState) then + continue; + + xSize.cx := xConBS.ControlWidth; + xSize.cy := xConBS.ControlHeight; + xGroupSize := xSize; + + xForceWrap := (I > 0) and (FControlList[I-1].WrapAfter = waForce); + xForbidWrap := (I > 0) and (FControlList[I-1].WrapAfter = waForbid); + if not xForceWrap + and ((I = 0) or not(FControlList[I-1].WrapAfter in [waAvoid, waForbid])) then + begin + for L := I to FControlList.Count-2 do + begin + if FControlList[L].WrapAfter in [waAvoid, waForbid] then + begin + case FFlowStyle of + fsLeftRightTopBottom, fsLeftRightBottomTop, fsRightLeftTopBottom, fsRightLeftBottomTop: + Inc(xGroupSize.cx, FControlList[L+1].Control.BorderSpacing.ControlWidth); + fsTopBottomLeftRight, fsTopBottomRightLeft, fsBottomTopLeftRight, fsBottomTopRightLeft: + Inc(xGroupSize.cy, FControlList[L+1].Control.BorderSpacing.ControlHeight); + end; + end else + break; + end; + end; + case FFlowStyle of + fsLeftRightTopBottom, + fsLeftRightBottomTop: + if (xMaxHeight > 0) and FAutoWrap and not xForbidWrap + and (xForceWrap or (xPosition.X + xGroupSize.cx >= RemainingClientRect.Right)) then + begin + Inc(xPosition.Y, xMaxHeight * cYIncDir[FFlowStyle]); + xMaxHeight := 0; + xPosition.X := RemainingClientRect.Left; + end; + fsRightLeftTopBottom, + fsRightLeftBottomTop: + begin + Dec(xPosition.X, xGroupSize.cx); + if (xMaxHeight > 0) and FAutoWrap and not xForbidWrap + and (xForceWrap or (xPosition.X <= 0)) then + begin + Inc(xPosition.Y, xMaxHeight * cYIncDir[FFlowStyle]); + xMaxHeight := 0; + xPosition.X := RemainingClientRect.Right - xSize.cx; + end; + end; + fsTopBottomLeftRight, + fsTopBottomRightLeft: + if (xMaxWidth > 0) and FAutoWrap and not xForbidWrap + and (xForceWrap or (xPosition.Y + xGroupSize.cy >= RemainingClientRect.Bottom)) then + begin + Inc(xPosition.X, xMaxWidth * cXIncDir[FFlowStyle]); + xMaxWidth := 0; + xPosition.Y := RemainingClientRect.Top; + end; + fsBottomTopLeftRight, + fsBottomTopRightLeft: + begin + Dec(xPosition.Y, xGroupSize.cy); + if (xMaxWidth > 0) and FAutoWrap and not xForbidWrap + and (xForceWrap or (xPosition.Y <= 0)) then + begin + Inc(xPosition.X, xMaxWidth * cXIncDir[FFlowStyle]); + xMaxWidth := 0; + xPosition.Y := RemainingClientRect.Bottom - xSize.cy; + end; + end; + end; + if xSize.cy > xMaxHeight then + xMaxHeight := xSize.cy; + if xSize.cx > xMaxWidth then + xMaxWidth := xSize.cx; + xControl.SetBounds( + xPosition.X + xConBS.Left + xConBS.Around + cXDeltaConst[FFlowStyle] * xSize.cx, + xPosition.Y + xConBS.Top + xConBS.Around + cYDeltaConst[FFlowStyle] * xSize.cy, + xSize.cx - (xConBS.Left + xConBS.Right + xConBS.Around*2), + xSize.cy - (xConBS.Top + xConBS.Bottom + xConBS.Around*2)); + if FFlowStyle in [fsLeftRightTopBottom, fsLeftRightBottomTop] then + Inc(xPosition.X, xSize.cx * cXIncDir[FFlowStyle]) + else if FFlowStyle in [fsTopBottomLeftRight, fsTopBottomRightLeft] then + Inc(xPosition.Y, xSize.cy + cYIncDir[FFlowStyle]); + end; + finally + EnableAlign; + end; +end; + +procedure TCustomFlowPanel.CalculatePreferredSize(var PreferredWidth, + PreferredHeight: integer; WithThemeSpace: Boolean); +var + xControl: TControl; + xTestRect, xClientRect: TRect; + I: Integer; +begin + inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, + WithThemeSpace); + + if FControlList.Count > 0 then + begin + xTestRect := Rect(0, 0, 100, 100); + xClientRect := xTestRect; + AdjustClientRect(xClientRect); + for I := 0 to ControlCount-1 do + begin + xControl := FControlList.Items[I].Control; + if FFlowStyle in [fsLeftRightTopBottom, fsRightLeftTopBottom, fsLeftRightBottomTop, fsRightLeftBottomTop] then + PreferredHeight := Max(PreferredHeight, + xControl.BoundsRect.Bottom+xControl.BorderSpacing.Around+xControl.BorderSpacing.Bottom + + xTestRect.Bottom-xClientRect.Bottom-xTestRect.Top+xClientRect.Top) + else + PreferredWidth := Max(PreferredWidth, + xControl.BoundsRect.Right+xControl.BorderSpacing.Around+xControl.BorderSpacing.Right + + xTestRect.Right-xClientRect.Right-xTestRect.Left+xClientRect.Left); + end; + end; +end; + +procedure TCustomFlowPanel.CMControlChange(var Message: TCMControlChange); +begin + //inherited CMControlChange(Message); uncomment if CMControlChange should appear in parent classes + + if (csLoading in ComponentState) then + Exit; + + if Message.Inserting and (Message.Control.Parent = Self) then + begin + DisableAlign; + try + Message.Control.Anchors := []; + Message.Control.Align := alNone; + FControlList.AddControl(Message.Control); + ReAlign; + finally + EnableAlign; + end; + end else + FControlList.RemoveControl(Message.Control); +end; + +destructor TCustomFlowPanel.Destroy; +begin + inherited Destroy; + FControlList.Free; +end; + +function TCustomFlowPanel.GetControlIndex(AControl: TControl): Integer; +begin + Result := FControlList.IndexOf(AControl); +end; + +procedure TCustomFlowPanel.SetAutoWrap(const AAutoWrap: Boolean); +begin + if FAutoWrap = AAutoWrap then Exit; + FAutoWrap := AAutoWrap; + + ReAlign; +end; + +procedure TCustomFlowPanel.SetControlIndex(AControl: TControl; Index: Integer); +var + CurIndex: Integer; +begin + CurIndex := GetControlIndex(AControl); + if (CurIndex > -1) and (CurIndex <> Index) and (Index < FControlList.Count) then + begin + FControlList.Items[CurIndex].Index := Index; + Realign; + end; +end; + +procedure TCustomFlowPanel.SetControlList( + const AControlList: TFlowPanelControlList); +begin + FControlList.Assign(AControlList); +end; + +procedure TCustomFlowPanel.SetFlowStyle(const AFlowStyle: TFlowStyle); +begin + if FFlowStyle = AFlowStyle then Exit; + FFlowStyle := AFlowStyle; + + ReAlign; +end; + + +// included by extctrls.pp diff -Nru lazarus-1.4.4+dfsg/lcl/include/customform.inc lazarus-1.6+dfsg/lcl/include/customform.inc --- lazarus-1.4.4+dfsg/lcl/include/customform.inc 2015-04-01 13:27:57.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customform.inc 2016-02-06 14:00:56.000000000 +0000 @@ -360,10 +360,11 @@ if FPopupMode <> AValue then begin FPopupMode := AValue; - if FPopupMode = pmAuto then - PopupParent := nil; + if (FPopupMode in [pmAuto, pmNone]) and (PopupParent <> nil) then + PopupParent := nil + else if not (csDesigning in ComponentState) and HandleAllocated then - TWSCustomFormClass(WidgetSetClass).SetPopupParent(Self, PopupMode, PopupParent); + TWSCustomFormClass(WidgetSetClass).SetRealPopupParent(Self, GetRealPopupParent); end; end; @@ -380,7 +381,7 @@ FPopupMode := pmExplicit; end; if not (csDesigning in ComponentState) and HandleAllocated then - TWSCustomFormClass(WidgetSetClass).SetPopupParent(Self, PopupMode, PopupParent); + TWSCustomFormClass(WidgetSetClass).SetRealPopupParent(Self, GetRealPopupParent); end; end; @@ -711,23 +712,6 @@ end; end; - //DebugLn('Trace:WMSIZE in TCustomForm'); - if (Message.SizeType and SIZE_SourceIsInterface) <> 0 then - begin - NewState := FWindowState; - case (Message.SizeType xor SIZE_SourceIsInterface) of - SIZE_RESTORED: - NewState := wsNormal; - SIZE_MINIMIZED: - NewState := wsMinimized; - SIZE_MAXIMIZED: - NewState := wsMaximized; - SIZE_FULLSCREEN: - NewState := wsFullScreen; - end; - Resizing(NewState); - end; - inherited WMSize(Message); if (Message.SizeType and not SIZE_SourceIsInterface) = SIZE_RESTORED then @@ -1124,7 +1108,8 @@ Canvas.Handle := DC; //DebugLn('[TCustomForm.PaintWindow] ',ClassName,' DC=',DbgS(DC,8),' ',DbgS(FCanvas.Handle,8)); try - if FDesigner <> nil then FDesigner.PaintGrid else Paint; + Paint; + if FDesigner <> nil then FDesigner.PaintGrid; finally Canvas.Handle := 0; end; @@ -1258,18 +1243,15 @@ Y := (Y - Source.Top) + ABounds.Top; // check that we are still in the desired monitor - with Target.BoundsRect do - begin - if X + Width > ABounds.Right then - X := ABounds.Right - Width; - if X < ABounds.Left then - X := ABounds.Left; - - if Y + Height > ABounds.Bottom then - Y := ABounds.Bottom - Height; - if Y < ABounds.Top then - Y := ABounds.Top; - end; + if X + Width > ABounds.Right then + X := ABounds.Right - Width; + if X < ABounds.Left then + X := ABounds.Left; + + if Y + Height > ABounds.Bottom then + Y := ABounds.Bottom - Height; + if Y < ABounds.Top then + Y := ABounds.Top; end else begin @@ -1477,6 +1459,31 @@ end; end; +function TCustomForm.GetRealPopupParent: TCustomForm; +begin + Result := nil; + if (fsModal in FormState) or // always set WndParent of modal windows + (PopupMode in [pmAuto, pmExplicit]) // set WndParent of non-modal windows only for pmAuto, pmExplicit + then + begin + case PopupMode of + pmAuto: + begin + Result := Screen.ActiveForm; + if (Result<>nil) and (Result.FormStyle = fsSplash) then // ignore fsSplash + Result := nil; + end; + pmExplicit: Result := PopupParent; + end; + if (Result = nil) or not Result.HandleAllocated then + Result := Application.MainForm; + end; + if (Result <> nil) and not Result.HandleAllocated then + Result := nil; + if (Result = Self) then + Result := nil; +end; + procedure TCustomForm.DoAutoSize; begin //DebugLn(['TCustomForm.DoAutoSize ',DbgSName(Self),' ',WindowState=wsNormal,' ',fsDisableAutoSize in FFormState,' ',dbgs(BoundsRect),' ',dbgs(ClientRect)]); @@ -1719,6 +1726,13 @@ end; end; +procedure TCustomForm.SetModalResult(Value: TModalResult); +begin + if HandleAllocated and (Value <> FModalResult) then + TWSCustomFormClass(WidgetSetClass).SetModalResult(Self, Value); + FModalResult := Value; +end; + {------------------------------------------------------------------------------ TCustomForm SetBorderIcons ------------------------------------------------------------------------------} @@ -2034,6 +2048,8 @@ TCustomForm CreateParams ------------------------------------------------------------------------------} procedure TCustomForm.CreateParams(var Params : TCreateParams); +var + APopupParent: TCustomForm; begin inherited CreateParams(Params); with Params do @@ -2045,15 +2061,9 @@ begin if (Application.MainForm <> Self) then begin - case PopupMode of - pmNone:; - pmAuto: - if (Screen.ActiveForm <> nil) then - WndParent := Screen.ActiveForm.Handle; - pmExplicit: - if (PopupParent <> nil) then - WndParent := PopupParent.Handle; - end; + APopupParent := GetRealPopupParent; + if APopupParent <> nil then + WndParent := APopupParent.Handle; end; if (WndParent = 0) and (((Self = Application.MainForm) and Application.MainFormOnTaskBar) or (GetEffectiveShowInTaskBar = stAlways)) then @@ -2162,7 +2172,7 @@ if FormStyle = fsMDIForm then begin // Query children forms whether we can close - if not Check(Self) then exit; + if not Check(Self) then exit(False); // TODO: mdi logic end; Result := True; @@ -2216,8 +2226,6 @@ ------------------------------------------------------------------------------} function TCustomForm.AutoSizeDelayedHandle: Boolean; begin - if WindowState=wsMinimized then - exit(true); if (Parent<>nil) or (ParentWindow<>0) then // this form is inlined / embedded it works like a normal TWinControl Result:=inherited AutoSizeDelayedHandle @@ -2299,7 +2307,7 @@ function NextChildControl(CurParent, Target: TWinControl): TWinControl; inline; begin - while Target.Parent <> CurParent do + while (Target <> nil) and (Target.Parent <> CurParent) do Target := Target.Parent; Result := Target; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/customlistview.inc lazarus-1.6+dfsg/lcl/include/customlistview.inc --- lazarus-1.4.4+dfsg/lcl/include/customlistview.inc 2015-02-25 22:55:37.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customlistview.inc 2016-02-13 12:44:21.000000000 +0000 @@ -1107,7 +1107,7 @@ function TCustomListView.FindCaption(StartIndex: Integer; Value: string; Partial, Inclusive, Wrap: Boolean; PartStart: Boolean = True): TListItem; begin - Result := FListItems.FindCaption(StartIndex, Value, Partial, Inclusive, Wrap); + Result := FListItems.FindCaption(StartIndex, Value, Partial, Inclusive, Wrap, PartStart); end; function TCustomListView.FindData(StartIndex: Integer; Value: Pointer; diff -Nru lazarus-1.4.4+dfsg/lcl/include/custommemo.inc lazarus-1.6+dfsg/lcl/include/custommemo.inc --- lazarus-1.4.4+dfsg/lcl/include/custommemo.inc 2014-09-25 06:19:05.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/custommemo.inc 2015-11-29 18:45:53.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit ../stdctrls.pp} -{ $Id: custommemo.inc 46320 2014-09-25 06:19:05Z zeljko $ } +{ $Id: custommemo.inc 50523 2015-11-29 18:45:53Z juha $ } {****************************************************************************** TCustomMemo @@ -15,13 +15,6 @@ {off $DEFINE DEBUG_MEMO} -{------------------------------------------------------------------------------ - Method: TCustomMemo.Create - Params: - Returns: - - Constructor for the class - ------------------------------------------------------------------------------} constructor TCustomMemo.Create(AOwner: TComponent); begin inherited Create(AOwner); @@ -36,13 +29,6 @@ AutoSize := False; end; -{------------------------------------------------------------------------------ - Method: TCustomMemo.Destroy - Params: None - Returns: Nothing - - Destructor for the class. - ------------------------------------------------------------------------------} destructor TCustomMemo.Destroy; begin FreeThenNil(FLines); @@ -51,20 +37,16 @@ inherited Destroy; end; -{------------------------------------------------------------------------------ - Method: TCustomMemo.Append - Params: - Returns: - - ------------------------------------------------------------------------------} procedure TCustomMemo.Append(const Value: String); begin Lines.Add(Value); end; -{------------------------------------------------------------------------------ - procedure TCustomMemo.SetHorzScrollBar(const AValue: TMemoScrollBar); - ------------------------------------------------------------------------------} +procedure TCustomMemo.ScrollBy(DeltaX, DeltaY: Integer); +begin + ScrollBy_WS(DeltaX, DeltaY); +end; + procedure TCustomMemo.SetHorzScrollBar(const AValue: TMemoScrollBar); begin if FHorzScrollBar=AValue then exit; @@ -79,9 +61,6 @@ TWSCustomMemoClass(WidgetSetClass).SetCaretPos(Self, Value); end; -{------------------------------------------------------------------------------ - procedure TCustomMemo.SetVertScrollBar(const AValue: TMemoScrollBar); - ------------------------------------------------------------------------------} procedure TCustomMemo.SetVertScrollBar(const AValue: TMemoScrollBar); begin if FVertScrollBar=AValue then exit; @@ -213,12 +192,6 @@ inherited; end; -{------------------------------------------------------------------------------ - Method: TCustomMemo.SetLines - Params: - Returns: - - ------------------------------------------------------------------------------} procedure TCustomMemo.SetLines(const Value: TStrings); begin if (Value <> nil) then @@ -235,9 +208,6 @@ end; end; -{------------------------------------------------------------------------------ - procedure TCustomMemo.SetScrollbars(const Value : TScrollStyle); - ------------------------------------------------------------------------------} procedure TCustomMemo.SetScrollBars(const Value: TScrollStyle); begin if Value <> FScrollbars then begin @@ -247,9 +217,6 @@ end; end; -{------------------------------------------------------------------------------ - procedure TCustomMemo.Loaded; - ------------------------------------------------------------------------------} procedure TCustomMemo.Loaded; begin inherited Loaded; @@ -302,12 +269,6 @@ TWSCustomMemoClass(WidgetSetClass).SetWantTabs(Self, NewWantTabs); end; -{------------------------------------------------------------------------------ - Method: TCustomMemo.SetWordWrap - Params: - Returns: - - ------------------------------------------------------------------------------} procedure TCustomMemo.SetWordWrap(const Value: boolean); begin if Value <> FWordWrap then diff -Nru lazarus-1.4.4+dfsg/lcl/include/customnotebook.inc lazarus-1.6+dfsg/lcl/include/customnotebook.inc --- lazarus-1.4.4+dfsg/lcl/include/customnotebook.inc 2014-12-27 16:25:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customnotebook.inc 2015-10-26 21:34:11.000000000 +0000 @@ -192,7 +192,7 @@ else NewControlIndex := FNotebook.GetControlIndex(TCustomPage(FPageList[NewIndex])); - FNotebook.DisableAutoSizing; + FNotebook.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TNBPages.Move'){$ENDIF}; try // move Page in notebook handle FNotebook.WSMovePage(APage, NewIndex); @@ -210,7 +210,7 @@ if FNotebook.PageIndex >= 0 then // keep if -1 FNotebook.PageIndex := NewIndex; finally - FNotebook.EnableAutoSizing; + FNotebook.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TNBPages.Move'){$ENDIF}; end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/customsplitter.inc lazarus-1.6+dfsg/lcl/include/customsplitter.inc --- lazarus-1.4.4+dfsg/lcl/include/customsplitter.inc 2015-03-01 12:32:48.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customsplitter.inc 2015-10-26 21:34:11.000000000 +0000 @@ -895,7 +895,8 @@ begin inherited Paint; - DrawThemedPattern(ClientRect) + if not Assigned(OnPaint) then + DrawThemedPattern(ClientRect); end; procedure TCustomSplitter.MouseEnter; @@ -960,7 +961,7 @@ OldWidth: LongInt; OldHeight: LongInt; begin - DisableAutoSizing; + DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomSplitter.AnchorSplitter'){$ENDIF}; try OldWidth := Width; OldHeight := Height; @@ -992,7 +993,7 @@ Height := OldWidth; end; finally - EnableAutoSizing; + EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TCustomSplitter.AnchorSplitter'){$ENDIF}; end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/customtrayicon.inc lazarus-1.6+dfsg/lcl/include/customtrayicon.inc --- lazarus-1.4.4+dfsg/lcl/include/customtrayicon.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/customtrayicon.inc 2015-03-24 17:52:23.000000000 +0000 @@ -90,7 +90,7 @@ *******************************************************************} function TCustomTrayIcon.Hide: Boolean; begin - if not FVisible then Exit; + if not FVisible then Exit(True); FVisible := False; @@ -139,10 +139,8 @@ *******************************************************************} function TCustomTrayIcon.Show: Boolean; begin - if FVisible then Exit; - + if FVisible then Exit(True); FVisible := True; - if not(csDesigning in ComponentState) then Result := InternalShow else diff -Nru lazarus-1.4.4+dfsg/lcl/include/dblookup.inc lazarus-1.6+dfsg/lcl/include/dblookup.inc --- lazarus-1.4.4+dfsg/lcl/include/dblookup.inc 2014-06-19 12:45:43.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/dblookup.inc 2015-12-17 14:23:04.000000000 +0000 @@ -76,10 +76,15 @@ end; procedure TDBLookupDataLink.DataEvent(Event: TDataEvent; Info: Ptrint); +var + I: Integer; + S: TDataSetState; begin inherited DataEvent(Event, Info); if Event = deDataSetChange then begin + I := DataSet.RecordCount; + S := DataSet.State; if FRecordUpdated or ((FLookup.ControlItems <> nil) and (FLookup.ControlItems.Count <> DataSet.RecordCount)) then begin FRecordUpdated := False; @@ -228,14 +233,38 @@ KeyList[i + 1] := KeyList[i]; end; +{$IF FPC_FULLVERSION < 30000} +function IsClass(Instance: TObject; const ClassName: ShortString): Boolean; +var + ClassRef: TClass; +begin + Result := False; + ClassRef := Instance.ClassType; + while ClassRef <> nil do + begin + Result := ClassRef.ClassNameIs(ClassName); + if Result then + Exit; + ClassRef := ClassRef.ClassParent; + end; +end; +{$ENDIF} + procedure TDBLookup.FetchLookupData; var KeyIndex, KeyListCount: Integer; ListLinkDataSet: TDataSet; Bookmark: TBookmark; + {$IF FPC_FULLVERSION < 30000} + DatasetSupportsBlockRead: Boolean; + {$ENDIF} begin if not Assigned(FControlItems) then Exit; + {$IF FPC_FULLVERSION < 30000} + if FFetchingLookupData then + Exit; + {$ENDIF} FControlItems.Clear; ListLinkDataSet := FListLink.DataSet; if not (Assigned(ListLinkDataSet) and Assigned(FListField)) then @@ -243,11 +272,19 @@ if ListLinkDataSet.IsEmpty then Exit; Bookmark := ListLinkDataSet.GetBookmark; - {$ifdef EnableLookupWithBlockRead} + //in fpc 2.6.4, TMemDataset does not supports BlockRead. Issues 26356, 27959 + {$IF FPC_FULLVERSION < 30000} + DatasetSupportsBlockRead := not IsClass(ListLinkDataSet, 'TMemDataset'); + if DatasetSupportsBlockRead then + ListLinkDataSet.BlockReadSize := 1 + else + begin + FFetchingLookupData := True; + ListLinkDataSet.DisableControls; + end; + {$ELSE} ListLinkDataSet.BlockReadSize := 1; - {$else} - ListLinkDataSet.DisableControls; - {$endif} + {$ENDIF} FControlItems.BeginUpdate; try //needed to handle sqldb.TSQLQuery that does not has a reliable recordcount after Open @@ -273,11 +310,17 @@ FControlItems.EndUpdate; ListLinkDataSet.GotoBookmark(Bookmark); ListLinkDataSet.FreeBookmark(Bookmark); - {$ifdef EnableLookupWithBlockRead} + {$IF FPC_FULLVERSION < 30000} + if DatasetSupportsBlockRead then + ListLinkDataSet.BlockReadSize := 0 + else + begin + ListLinkDataSet.EnableControls; + FFetchingLookupData := False; + end; + {$ELSE} ListLinkDataSet.BlockReadSize := 0; - {$else} - ListLinkDataSet.EnableControls; - {$endif} + {$ENDIF} end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/finddialog.inc lazarus-1.6+dfsg/lcl/include/finddialog.inc --- lazarus-1.4.4+dfsg/lcl/include/finddialog.inc 2014-11-29 16:19:38.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/finddialog.inc 2015-11-30 18:21:01.000000000 +0000 @@ -16,17 +16,19 @@ { TFindDialogForm } TFindDialogForm = class(TForm) + // Same order as in TFindDialog BtnPanel: TPanel; + CancelButton: TButton; + CaseSensitiveCheckBox: TCheckBox; + DirectionRadioGroup: TRadioGroup; + EditFind: TEdit; EntireScopeCheckBox: TCheckBox; FindButton: TButton; - CancelButton: TButton; + FindLabel: TLabel; FlagsPanel: TPanel; HelpButton: TButton; WholeWordsOnlyCheckBox: TCheckBox; - CaseSensitiveCheckBox: TCheckBox; - EditFind: TEdit; - FindLabel: TLabel; - DirectionRadioGroup: TRadioGroup; + procedure EditFindChange(Sender: TObject); procedure FormCreate(Sender: TObject); private @@ -53,10 +55,12 @@ begin inherited CreateNew(aOwner); Layout := frButtonsAtBottom in Options; + + Left := 417; + Top := 333; + if Layout then begin - Left := 417; Height := 166; - Top := 333; Width := 415; ClientHeight := 166; ClientWidth := 415; @@ -65,20 +69,20 @@ Constraints.MinWidth := 415; end else begin - Left := 417; Height := 136; - Top := 333; Width := 480; ClientHeight := 140; ClientWidth := 480; Constraints.MinHeight := 136; Constraints.MinWidth := 480; end; + AutoSize := True; BorderIcons := [biSystemMenu, biHelp]; Caption := 'Find'; //OnCreate := @FormCreate; Position := poMainFormCenter; + LCLVersion := '1.3'; FindLabel := TLabel.Create(Self); @@ -400,15 +404,6 @@ Result := inherited GetWidth; end; -procedure TFindDialog.UpdatePosition; -begin - if Assigned(FFindForm) then - begin - FFindForm.Top:=FFormTop; - FFindForm.Left:=FFormLeft; - end; -end; - procedure TFindDialog.DoCloseForm(Sender: TObject; var CloseAction: TCloseAction); begin if csDesigning in ComponentState then exit; @@ -439,34 +434,39 @@ begin if FFindText = AValue then exit; FFindText:=AValue; + If Assigned(FFindForm) then + TFindDialogForm(FFindForm).EditFind.Text := AValue; end; procedure TFindDialog.SetLeft(const AValue: Integer); begin - if FFormLeft <> AValue then - begin - FFormLeft:=AValue; - UpdatePosition; + if FFormLeft = AValue then Exit; + FFormLeft:=AValue; + if Assigned(FFindForm) then FFindForm.Left :=FFormLeft; +end; + +procedure TFindDialog.SetOptions(AValue: TFindOptions); +begin + if FOptions=AValue then Exit; + FOptions:=AValue; + If Assigned(FFindForm) then begin + TFindDialogForm(FFindForm).EntireScopeCheckBox.Checked := (frEntireScope in FOptions); + TFindDialogForm(FFindForm).WholeWordsOnlyCheckBox.Checked := (frWholeWord in FOptions); + TFindDialogForm(FFindForm).CaseSensitiveCheckBox.checked := (frMatchCase in FOptions); end; end; procedure TFindDialog.SetPosition(const AValue: TPoint); begin - if (FFormLeft<>AValue.x) or (FFormTop<>AValue.y) then - begin - FFormLeft:=AValue.x; - FFormTop:=AValue.y; - UpdatePosition; - end; + if (FFormLeft <> AValue.x) then Left := AValue.x; + If (FFormTop <> AValue.y) then Top := AValue.y; end; procedure TFindDialog.SetTop(const AValue: Integer); begin - if FFormTop <> AValue then - begin - FFormTop:=AValue; - UpdatePosition; - end; + if FFormTop = AValue then exit; + FFormTop:=AValue; + if Assigned(FFindForm) then FFindForm.Top :=FFormTop; end; procedure TFindDialog.Find; @@ -488,6 +488,8 @@ end; function TFindDialog.CreateForm: TForm; +Var + StrTmp : String; begin // do not use Self as Owner, otherwise as desgntime this will not work Result := TFindDialogForm.CreateNew(nil,Options); @@ -508,6 +510,9 @@ HelpButton.OnClick := @HelpClick; CancelButton.OnClick := @CancelClick; PopupMode := pmAuto; + // Init local property with defaut value + FFormTop := top; + FFormLeft := Left; end; end; @@ -560,6 +565,19 @@ FFindText := Dlg.EditFind.Text; end; +procedure TFindDialog.CalcPosition(aForm:Tform); +Var + MfBound : Trect; + +begin + MfBound := Application.MainForm.BoundsRect; + FFormTop := MfBound.Top + (((MfBound.Bottom - MfBound.Top) - aForm.Height) Div 2); + FFormLeft := MfBound.Left + (((MfBound.Right - MfBound.Left) - aForm.Width) Div 2); + aForm.Top := FFormTop; + aForm.Left := FFormLeft; +end; + + constructor TFindDialog.Create(AOwner: TComponent); begin inherited Create(AOwner); @@ -585,6 +603,8 @@ FFindForm:=CreateForm; if Assigned(FFindForm) then begin + CalcPosition(FFindForm); + SetFormValues; FFindForm.OnClose:=@DoCloseForm; FFindForm.OnShow := Self.OnShow; diff -Nru lazarus-1.4.4+dfsg/lcl/include/font.inc lazarus-1.6+dfsg/lcl/include/font.inc --- lazarus-1.4.4+dfsg/lcl/include/font.inc 2014-05-12 23:12:18.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/font.inc 2015-03-12 04:27:03.000000000 +0000 @@ -145,11 +145,11 @@ Height := lfHeight; if lfWeight >= FW_BOLD then Include(Style, fsBold); - if lfItalic = 1 then + if lfItalic > 0 then Include(Style, fsItalic); - if lfUnderline = 1 then + if lfUnderline > 0 then Include(Style, fsUnderline); - if lfStrikeOut = 1 then + if lfStrikeOut > 0 then Include(Style, fsStrikeOut); Charset := TFontCharset(lfCharSet); Name := lfFaceName; diff -Nru lazarus-1.4.4+dfsg/lcl/include/headercontrol.inc lazarus-1.6+dfsg/lcl/include/headercontrol.inc --- lazarus-1.4.4+dfsg/lcl/include/headercontrol.inc 2014-11-04 15:48:22.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/headercontrol.inc 2015-03-24 17:52:23.000000000 +0000 @@ -311,6 +311,7 @@ MaxState: THeaderSectionState; P: TPoint; begin + MaxState := hsNormal; Index := -1; if Enabled then if FDown then diff -Nru lazarus-1.4.4+dfsg/lcl/include/hintwindow.inc lazarus-1.6+dfsg/lcl/include/hintwindow.inc --- lazarus-1.4.4+dfsg/lcl/include/hintwindow.inc 2014-10-28 16:58:57.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/hintwindow.inc 2015-02-21 00:19:48.000000000 +0000 @@ -202,15 +202,13 @@ Result.CY := 25; end; -procedure THintWindow.ActivateSub(InvalidateNeeded: Boolean); +procedure THintWindow.ActivateSub; begin SetBounds(FHintRect.Left, FHintRect.Top, FHintRect.Right - FHintRect.Left, FHintRect.Bottom - FHintRect.Top); Visible := True; FAutoHideTimer.Enabled := False; FAutoHideTimer.Enabled := FAutoHide; - if InvalidateNeeded then - Invalidate; end; procedure THintWindow.ActivateHint(const AHint: String); @@ -220,8 +218,10 @@ FActivating := True; try Assert(ControlCount = 0, 'THintWindow.ActivateRendered: ControlCount > 0'); + if Caption<>AHint then + Invalidate; Caption := AHint; - ActivateSub(Visible and (Caption <> AHint)); + ActivateSub; finally FActivating := False; end; @@ -354,7 +354,8 @@ FActivating := True; try Assert(ControlCount > 0, 'THintWindowRendered.ActivateRendered: ControlCount = 0'); - ActivateSub(True); + ActivateSub; + Invalidate; finally FActivating := False; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/imglist.inc lazarus-1.6+dfsg/lcl/include/imglist.inc --- lazarus-1.4.4+dfsg/lcl/include/imglist.inc 2014-11-05 10:00:42.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/imglist.inc 2015-09-07 22:01:15.000000000 +0000 @@ -1214,6 +1214,8 @@ then raise EInvalidGraphicOperation.Create('TCustomImageList.CreateImagesFromRawImage Create bitmaps'); InternalInsert(Count, ImgHandle, MaskHandle, Width, Height); + DeleteObject(ImgHandle); + DeleteObject(MaskHandle); //DebugLn('CreateImagesFromRawImage B ',Img.Width,',',Img.Height,' ',Count); Dec(NewCount); end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/inputdialog.inc lazarus-1.6+dfsg/lcl/include/inputdialog.inc --- lazarus-1.4.4+dfsg/lcl/include/inputdialog.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/inputdialog.inc 2015-12-02 14:59:01.000000000 +0000 @@ -8,20 +8,19 @@ ***************************************************************************** } -function ShowInputDialog(const InputCaption, InputPrompt : String; - MaskInput : Boolean; var Value : String) : Boolean; - - function ActiveMonitor: TMonitor; inline; - begin - if Screen.ActiveCustomForm <> nil then - Result := Screen.ActiveCustomForm.Monitor - else - if Application.MainForm <> nil then - Result := Application.MainForm.Monitor - else - Result := Screen.PrimaryMonitor; - end; +function _InputQueryActiveMonitor: TMonitor; +begin + if Screen.ActiveCustomForm <> nil then + Result := Screen.ActiveCustomForm.Monitor + else + if Application.MainForm <> nil then + Result := Application.MainForm.Monitor + else + Result := Screen.PrimaryMonitor; +end; +function DefaultInputDialog(const InputCaption, InputPrompt : String; + MaskInput : Boolean; var Value : String) : Boolean; var Form: TForm; Prompt: TLabel; @@ -54,10 +53,12 @@ Top := Prompt.Height; Align := alTop; BorderSpacing.Top := 3; - AMonitor := ActiveMonitor; + AMonitor := _InputQueryActiveMonitor; // check that edit is smaller than our monitor, it must be smaller at least // by 6 * 2 pixels (spacing from window borders) + window border - MinEditWidth := Min(AMonitor.Width - 20, Max(260, AMonitor.Width div 4)); + MinEditWidth := Min(AMonitor.Width - 20, + Max(cInputQueryEditSizePixels, + AMonitor.Width * cInputQueryEditSizePercents div 100)); Constraints.MinWidth := MinEditWidth; Text := Value; TabStop := True; diff -Nru lazarus-1.4.4+dfsg/lcl/include/intfbaselcl.inc lazarus-1.6+dfsg/lcl/include/intfbaselcl.inc --- lazarus-1.4.4+dfsg/lcl/include/intfbaselcl.inc 2013-06-23 12:29:11.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/intfbaselcl.inc 2015-04-30 08:34:13.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit ../interfacebase.pp} -{ $Id: intfbaselcl.inc 41817 2013-06-23 12:29:11Z paul $ +{ $Id: intfbaselcl.inc 48908 2015-04-30 08:34:13Z sekelsenmat $ ****************************************************************************** TWidgetSet @@ -661,7 +661,7 @@ // This routine is only for platforms which need a special combobox dialog, like Android // It returns true if a dialog was provided for doing this task or false otherwise // The process is assynchronous, so the result will be given in LCLIntf.OnShowSelectItemDialogResult -function TWidgetSet.ShowSelectItemDialog(const AItems: TStrings): Boolean; +function TWidgetSet.ShowSelectItemDialog(const AItems: TStrings; APos: TPoint): Boolean; begin Result := False; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/intfbasewinapi.inc lazarus-1.6+dfsg/lcl/include/intfbasewinapi.inc --- lazarus-1.4.4+dfsg/lcl/include/intfbasewinapi.inc 2015-03-20 14:37:44.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/intfbasewinapi.inc 2015-11-11 13:10:09.000000000 +0000 @@ -1,6 +1,6 @@ {%MainUnit ../interfacebase.pp} -{ $Id: intfbasewinapi.inc 48431 2015-03-20 14:37:44Z mattias $ } +{ $Id: intfbasewinapi.inc 50288 2015-11-11 13:10:09Z mattias $ } {****************************************************************************** TWidgetSet @@ -298,6 +298,7 @@ begin if uType = DFC_BUTTON then begin + ButtonDetail := tbButtonDontCare; case (uState and $1F) of DFCS_BUTTONCHECK: if uState and DFCS_CHECKED <> 0 then @@ -1283,33 +1284,33 @@ function GetTriangleBounds(const v1, v2, v3: TTriVertex): TRect; begin - with v1, Result do + with v1 do begin - Left := x; - Top := y; - BottomRight := TopLeft; + Result.Left := x; + Result.Top := y; + Result.BottomRight := Result.TopLeft; end; - with v2, Result do + with v2 do begin - if x < Left then - Left := x; - if x > Right then - Right := x; - if y < Top then - Top := y; - if y > Bottom then - Bottom := y; + if x < Result.Left then + Result.Left := x; + if x > Result.Right then + Result.Right := x; + if y < Result.Top then + Result.Top := y; + if y > Result.Bottom then + Result.Bottom := y; end; - with v3, Result do + with v3 do begin - if x < Left then - Left := x; - if x > Right then - Right := x; - if y < Top then - Top := y; - if y > Bottom then - Bottom := y; + if x < Result.Left then + Result.Left := x; + if x > Result.Right then + Result.Right := x; + if y < Result.Top then + Result.Top := y; + if y > Result.Bottom then + Result.Bottom := y; end; end; @@ -2127,7 +2128,10 @@ function TWidgetSet.SystemParametersInfo(uiAction: DWord; uiParam: DWord; pvParam: Pointer; fWinIni: DWord): LongBool; begin case uiAction of - SPI_GETWHEELSCROLLLINES: PDword(pvPAram)^ := 3; // default value + SPI_GETWHEELSCROLLLINES: begin + PDword(pvPAram)^ := 3; // default value + Result := True; + end; else Result := False; end diff -Nru lazarus-1.4.4+dfsg/lcl/include/lclintfh.inc lazarus-1.6+dfsg/lcl/include/lclintfh.inc --- lazarus-1.4.4+dfsg/lcl/include/lclintfh.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/lclintfh.inc 2015-04-30 08:34:13.000000000 +0000 @@ -115,7 +115,7 @@ function SetComboMinDropDownSize(Handle: HWND; MinItemsWidth, MinItemsHeight, MinItemCount: integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} procedure SetEventHandlerFlags(AHandler: PEventHandler; NewFlags: dword); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} procedure SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} -function ShowSelectItemDialog(const AItems: TStrings): Boolean;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} +function ShowSelectItemDialog(const AItems: TStrings; APos: TPoint): Boolean;{$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; SrcDC: HDC; XSrc, YSrc, SrcWidth, SrcHeight: Integer; Mask: HBITMAP; XMask, YMask: Integer; Rop: DWORD): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} function TextUTF8Out(DC: HDC; X, Y: Integer; Str: PChar; Count: Longint): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF} diff -Nru lazarus-1.4.4+dfsg/lcl/include/lclintf.inc lazarus-1.6+dfsg/lcl/include/lclintf.inc --- lazarus-1.4.4+dfsg/lcl/include/lclintf.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/lclintf.inc 2015-04-30 08:34:13.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit ../lclintf.pas} -{ $Id: lclintf.inc 41389 2013-05-25 09:22:25Z juha $ +{ $Id: lclintf.inc 48908 2015-04-30 08:34:13Z sekelsenmat $ ****************************************************************************** All interface communication related stuff goes here. This file is used by LCLIntf.pas @@ -455,9 +455,9 @@ WidgetSet.SetRubberBandRect(ARubberBand, ARect); end; -function ShowSelectItemDialog(const AItems: TStrings): Boolean; +function ShowSelectItemDialog(const AItems: TStrings; APos: TPoint): Boolean; begin - Result := Widgetset.ShowSelectItemDialog(AItems); + Result := Widgetset.ShowSelectItemDialog(AItems, APos); end; function StretchMaskBlt(DestDC: HDC; X, Y, Width, Height: Integer; diff -Nru lazarus-1.4.4+dfsg/lcl/include/listitems.inc lazarus-1.6+dfsg/lcl/include/listitems.inc --- lazarus-1.4.4+dfsg/lcl/include/listitems.inc 2013-10-14 07:35:34.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/listitems.inc 2015-04-06 19:12:20.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit ../comctrls.pp} -{ $Id: listitems.inc 43244 2013-10-14 07:35:34Z zeljko $ +{ $Id: listitems.inc 48671 2015-04-06 19:12:20Z juha $ ***************************************************************************** This file is part of the Lazarus Component Library (LCL) @@ -633,6 +633,33 @@ ListItem: TListItem; Size, ItemCount, SubCount: Integer; StartPos: Int64; + + {$ifdef FPC_BIG_ENDIAN} + + { This is a local redefinition of TStream.ReadAnsiString(), which ensures + that the string length is read in little-endian order to conform to the + convention of the remaining resources. + } + function stream_readAnsiStringLE(): AnsiString; + + Var + TheSize : Longint; + P : PByte ; + begin + Stream.ReadBuffer (TheSize,SizeOf(TheSize)); + TheSize := LEtoN(TheSize); + SetLength(Result,TheSize); + // Illegal typecast if no AnsiStrings defined. + if TheSize>0 then + begin + Stream.ReadBuffer (Pointer(Result)^,TheSize); + P:=Pointer(Result)+TheSize; + p^:=0; + end + end { stream_readAnsiStringLE } ; + + {$endif FPC_BIG_ENDIAN} + begin Clear; StartPos := Stream.Position; @@ -644,7 +671,11 @@ begin Stream.ReadBuffer(ItemInfo, SizeOf(ItemInfo)); ListItem := Add; - ListItem.Caption := Stream.ReadAnsiString; + {$ifndef FPC_BIG_ENDIAN} + ListItem.Caption := Stream.ReadAnsiString(); + {$else} + ListItem.Caption := stream_readAnsiStringLE; + {$endif FPC_BIG_ENDIAN} ListItem.ImageIndex := LEtoN(ItemInfo.ImageIndex); // ListItem.StateIndex := LEtoN(ItemInfo.StateIndex); // ListItem.OverlayIndex := LEtoN(ItemInfo.OverlayIndex); @@ -652,7 +683,11 @@ SubCount := LEtoN(ItemInfo.SubItemCount); for J := 0 to SubCount - 1 do begin - ListItem.SubItems.Add(Stream.ReadAnsiString); + {$ifndef FPC_BIG_ENDIAN} + ListItem.SubItems.Add(Stream.ReadAnsiString); + {$else} + ListItem.SubItems.Add(stream_readAnsiStringLE()) + {$endif FPC_BIG_ENDIAN} end; end; @@ -680,6 +715,24 @@ ItemInfo : TLazItemInfo; ListItem : TListItem; + {$ifdef FPC_BIG_ENDIAN} + + { This is a local redefinition of TStream.WriteAnsiString(), which ensures + that the string length is written in little-endian order to conform to the + convention of the remaining resources. + } + procedure stream_writeAnsiStringLE(const S: AnsiString); + + Var L : Longint; + + begin + L:=NtoLE(Length(S)); + Stream.WriteBuffer (L,SizeOf(L)); + Stream.WriteBuffer (Pointer(S)^,L) + end { stream_writeAnsiStringLE } ; + + {$endif FPC_BIG_ENDIAN} + begin Size := SizeOf(ItemHeader); for I := 0 to Count - 1 do @@ -712,11 +765,19 @@ Stream.WriteBuffer(ItemInfo, SizeOf(ItemInfo)); // Write the strings - Stream.WriteAnsiString(ListItem.Caption); - + {$ifndef FPC_BIG_ENDIAN} + Stream.WriteAnsiString(ListItem.Caption); + {$else} + stream_writeAnsiStringLE(ListItem.Caption); + {$endif FPC_BIG_ENDIAN} + for J := 0 to ItemInfo.SubItemCount - 1 do begin - Stream.WriteAnsiString(ListItem.SubItems[J]); + {$ifndef FPC_BIG_ENDIAN} + Stream.WriteAnsiString(ListItem.SubItems[J]); + {$else} + stream_writeAnsiStringLE(ListItem.SubItems[J]) + {$endif FPC_BIG_ENDIAN} end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/menu.inc lazarus-1.6+dfsg/lcl/include/menu.inc --- lazarus-1.4.4+dfsg/lcl/include/menu.inc 2014-09-02 22:21:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/menu.inc 2015-02-13 12:22:54.000000000 +0000 @@ -271,12 +271,13 @@ {------------------------------------------------------------------------------ Function: TMenu.GetHandle Params: none - Returns: String containing output from the function. + Returns: Handle of the menu - Description of the function for the class. + The handle will be created if not already allocated. ------------------------------------------------------------------------------} function TMenu.GetHandle: HMenu; begin + HandleNeeded(); Result := FItems.Handle; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/messagedialogs.inc lazarus-1.6+dfsg/lcl/include/messagedialogs.inc --- lazarus-1.4.4+dfsg/lcl/include/messagedialogs.inc 2015-04-29 21:36:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/messagedialogs.inc 2015-05-25 22:30:55.000000000 +0000 @@ -294,4 +294,123 @@ Result := InputQuery(ACaption, APrompt, False, Value); end; +{ TDummyForInput } + +type + TDummyEditList = array of TEdit; + PDummyEditList = ^TDummyEditList; + + TDummyForInput = class(TForm) + public + FEditsPtr: PDummyEditList; + FOnCloseEvent: TInputCloseQueryEvent; + procedure FOnClick(Sender: TObject); + end; + +procedure TDummyForInput.FOnClick(Sender: TObject); +var + Cfm: boolean; + Str: array of string; + i: integer; +begin + Cfm:= true; + if Assigned(FOnCloseEvent) then + begin + SetLength(Str, Length(FEditsPtr^)); + for i:= 0 to Length(Str)-1 do + Str[i]:= FEditsPtr^[i].Text; + FOnCloseEvent(nil, Str, Cfm); + end; + if Cfm then + ModalResult:= mrOk; +end; + + +function InputQuery(const ACaption: string; const APrompts: array of string; + var AValues: array of string; ACloseEvent: TInputCloseQueryEvent): boolean; +var + FPanels: array of TPanel; + FEdits: array of TEdit; + FLabels: array of TPanel; + FButtons: TButtonPanel; + FForm: TDummyForInput; + Len, i: integer; +begin + Result:= false; + if Length(APrompts)<1 then + raise EInvalidOperation.Create('InputQuery: prompt array cannot be empty'); + if Length(APrompts)>Length(AValues) then + raise EInvalidOperation.Create('InputQuery: prompt array length must be <= value array length'); + + Len:= Length(AValues); + SetLength(FPanels, Len); + SetLength(FLabels, Len); + SetLength(FEdits, Len); + + FForm:= TDummyForInput.CreateNew(nil); + FForm.Width:= 600; + FForm.Height:= 400; + FForm.BorderStyle:= bsDialog; + FForm.Position:= poScreenCenter; + FForm.Caption:= ACaption; + FForm.FOnCloseEvent:= ACloseEvent; + + FButtons:= TButtonPanel.Create(FForm); + FButtons.Parent:= FForm; + FButtons.ShowButtons:= [pbOK, pbCancel]; + FButtons.ShowBevel:= false; + FButtons.OKButton.OnClick:= @FForm.FOnClick; + FButtons.OKButton.ModalResult:= mrNone; + + for i:= 0 to Len-1 do + begin + FPanels[i]:= TPanel.Create(FForm); + FPanels[i].Parent:= FForm; + FPanels[i].Align:= alTop; + FPanels[i].BevelInner:= bvNone; + FPanels[i].BevelOuter:= bvNone; + FPanels[i].AutoSize:= true; + FPanels[i].BorderSpacing.Around:= cInputQuerySpacingSize; + + //fix order of panels + if i>0 then + FPanels[i].Top:= FPanels[i-1].Top+10; + + FEdits[i]:= TEdit.Create(FForm); + FEdits[i].Parent:= FPanels[i]; + FEdits[i].Align:= alRight; + FEdits[i].Width:= Max( + cInputQueryEditSizePixels, + _InputQueryActiveMonitor.Width * cInputQueryEditSizePercents div 100); + FEdits[i].Text:= AValues[i]; + + FLabels[i]:= TPanel.Create(FForm); + FLabels[i].Parent:= FPanels[i]; + FLabels[i].Align:= alRight; + FLabels[i].BevelInner:= bvNone; + FLabels[i].BevelOuter:= bvNone; + if i<Length(APrompts) then + FLabels[i].Caption:= APrompts[i]; + FLabels[i].BorderSpacing.Right:= cInputQuerySpacingSize; + FLabels[i].Width:= FLabels[i].Canvas.TextWidth(FLabels[i].Caption); + end; + + FButtons.Align:= alTop; + FButtons.Top:= FPanels[Len-1].Top+10; + + FForm.AutoSize:= true; + FForm.ActiveControl:= FEdits[0]; + FForm.FEditsPtr:= @FEdits; + + try + Result:= FForm.ShowModal=mrOk; + if Result then + for i:= 0 to Len-1 do + AValues[i]:= FEdits[i].Text; + finally + FreeAndNil(FForm); + end; +end; + // included by dialogs.pp + diff -Nru lazarus-1.4.4+dfsg/lcl/include/mouse.inc lazarus-1.6+dfsg/lcl/include/mouse.inc --- lazarus-1.4.4+dfsg/lcl/include/mouse.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/mouse.inc 2015-06-03 17:23:21.000000000 +0000 @@ -14,7 +14,7 @@ function TMouse.GetCapture: HWND; begin - Result := FCapture; + Result := LCLIntf.GetCapture; end; procedure TMouse.SetCapture(const Value: HWND); @@ -22,12 +22,10 @@ {$IFDEF VerboseMouseCapture} DebugLn('TMouse.SetCapture '); {$ENDIF} - FCapture := Value; if Value = 0 then ReleaseCapture else LCLIntf.SetCapture(Value); - FCapture := GetCapture; end; function TMouse.GetCursorPos: TPoint; diff -Nru lazarus-1.4.4+dfsg/lcl/include/promptdialog.inc lazarus-1.6+dfsg/lcl/include/promptdialog.inc --- lazarus-1.4.4+dfsg/lcl/include/promptdialog.inc 2014-06-19 10:49:08.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/promptdialog.inc 2015-12-19 15:28:41.000000000 +0000 @@ -498,7 +498,7 @@ end; -function ShowPromptDialog(const DialogCaption, +function DefaultPromptDialog(const DialogCaption, DialogMessage: String; DialogType: longint; Buttons: PLongint; ButtonCount, DefaultIndex, EscapeResult: Longint; @@ -549,9 +549,13 @@ FButtons: TList; FBitmap: TCustomBitmap; FBitmapX, FBitmapY: Integer; + FMsgMemo: TMemo; + protected + procedure KeyDown(var Key: Word; Shift: TShiftState); override; + procedure WMCloseQuery(var message: TLMessage); message LM_CLOSEQUERY; public - TextBox : TRect; - TextStyle : TTextStyle; + TextBox: TRect; + TextStyle: TTextStyle; MessageTxt: String; constructor CreateQuestionDlg(const aCaption, aMsg: string; DlgType: LongInt; Buttons: TDialogButtons; HelpCtx: Longint); @@ -569,8 +573,11 @@ begin inherited Paint; // draw the text - Canvas.Brush := Brush; - Canvas.TextRect(TextBox, TextBox.Left, TextBox.Top, MessageTxt, TextStyle); + if FMsgMemo=nil then + begin + Canvas.Brush := Brush; + Canvas.TextRect(TextBox, TextBox.Left, TextBox.Top, MessageTxt, TextStyle); + end; // draw the icon if Assigned (FBitmap) then begin @@ -590,15 +597,15 @@ Flags: Cardinal; i: Integer; CurButton: TBitBtn; - reqBtnWidth: Integer; - reqWidth: LongInt; + reqBtnWidth, reqBtnHeight: Integer; + reqWidth, reqHeight: Integer; cMinLeft: Integer; ButtonLeft: Integer; - reqHeight: LongInt; CurBtnPos: Integer; CurBtnSize: TPoint; MinBtnWidth: Integer; // minimum width for a single button - MinBtnHeight: Integer; // minimum height for a single button + MinBtnHeight, MaxHeight, cBtnYSpacing, + ScrollBarWidth, cBorderWidth: Integer; // minimum height for a single button function GetButtonSize(AButton: TBitBtn): TPoint; begin @@ -614,81 +621,136 @@ end; begin - FillChar(TextStyle, SizeOf(TTextStyle), 0); + BeginAutoSizing; + try + FillChar(TextStyle, SizeOf(TTextStyle), 0); - with TextStyle do - begin - Clipping := True; - Wordbreak := True; - SystemFont := True; - Opaque := False; - end; + with TextStyle do + begin + Clipping := True; + Wordbreak := True; + SystemFont := True; + Opaque := False; + end; - // calculate the width & height we need to display the Message - if MessageTxt = '' then - MessageTxt := ' '; - TextBox := Rect(0, 0, Screen.Width div 2, Screen.Height - 100); - Flags := DT_CalcRect or DT_WordBreak; - SelectObject(Canvas.Handle, Screen.SystemFont.Reference.Handle); - DrawText(Canvas.Handle, PChar(MessageTxt), Length(MessageTxt), TextBox, Flags); - - // calculate the width we need to display the buttons - MinBtnWidth:=Max(25,MinimumDialogButtonWidth); - MinBtnHeight:=Max(15,MinimumDialogButtonHeight); - reqBtnWidth := 0; + // calculate the width & height we need to display the Message + if MessageTxt = '' then + MessageTxt := ' '; + TextBox := Rect(0, 0, Screen.Width div 2, Screen.Height); + Flags := DT_CalcRect or DT_WordBreak; + SelectObject(Canvas.Handle, Screen.SystemFont.Reference.Handle); + DrawText(Canvas.Handle, PChar(MessageTxt), Length(MessageTxt), TextBox, Flags); + + MaxHeight:=Monitor.WorkareaRect.Bottom-Monitor.WorkareaRect.Top + -GetSystemMetrics(SM_CYCAPTION)-GetSystemMetrics(SM_CYSIZEFRAME)*2 + -GetSystemMetrics(SM_CYDLGFRAME)*2; // LCL needs client size of form + + // calculate the width we need to display the buttons + MinBtnWidth:=Max(25,MinimumDialogButtonWidth); + MinBtnHeight:=Max(15,MinimumDialogButtonHeight); + reqBtnWidth := 0; + reqBtnHeight := 0; + if (FButtons <> nil) and (FButtons.Count > 0) then + for i := 0 to FButtons.Count - 1 do + begin + CurButton := TBitBtn(FButtons[i]); + CurBtnSize:=GetButtonSize(CurButton); + if i > 0 then Inc(reqBtnWidth, cBtnDist); + Inc(reqBtnWidth, CurBtnSize.X); + reqBtnHeight:=Max(reqBtnHeight, CurBtnSize.Y); + end; - if FButtons <> nil then - for i := 0 to FButtons.Count - 1 do + cBtnYSpacing := reqBtnHeight + 3 * cLabelSpacing; + if TextBox.Bottom>(MaxHeight-cBtnYSpacing) then begin - CurButton := TBitBtn(FButtons[i]); - CurBtnSize:=GetButtonSize(CurButton); - if i > 0 then Inc(reqBtnWidth, cBtnDist); - Inc(reqBtnWidth, CurBtnSize.X); + // does not fit onto the screen => use a TMemo + TextBox.Bottom:=MaxHeight; + if FMsgMemo=nil then + begin + FMsgMemo:=TMemo.Create(Self); + with FMsgMemo do + begin + WordWrap:=true; + ReadOnly:=true; + ScrollBars:=ssAutoBoth; + Text:=MessageTxt; + Anchors:=[akLeft,akTop,akRight,akBottom]; + Parent:=Self; + BorderStyle:=bsNone; + Color:=ColorToRGB(clBtnFace); // Gtk2 needs ColorToRGB + end; + end; + ScrollBarWidth:=LCLIntf.GetSystemMetrics(SM_CXVSCROLL); + cBorderWidth:=LCLIntf.GetSystemMetrics(SM_CXBORDER)*12; // there is some memo text padding I don't know how to exactly get - use approximate border (better more then less) + inc(TextBox.Right,ScrollBarWidth+cBorderWidth); + FMsgMemo.Visible:=true; + BorderStyle := bsSizeable; + end else if FMsgMemo<>nil then + begin + FMsgMemo.Visible:=false; + BorderStyle := bsDialog; end; - // calculate the width of the dialog - if FBitmap <> nil then - cMinLeft := cLabelSpacing + max(20, FBitmap.Width) + cLabelSpacing - else - cMinLeft := cLabelSpacing; - reqWidth:= reqBtnWidth + 2 * cBtnDist; - if reqWidth < (TextBox.Right + cMinLeft + cLabelSpacing) then - reqWidth:= TextBox.Right + cMinLeft + cLabelSpacing; - ButtonLeft := ((reqWidth - reqBtnWidth) div 2); - - // calculate the height of the dialog - reqHeight:= TextBox.Bottom; - if (FBitmap <> nil) and (FBitmap.Height > reqHeight) then - reqHeight := FBitmap.Height; - inc(reqHeight, CurBtnSize.Y + 3 * cLabelSpacing); - - // calculate the text position - OffsetRect(TextBox, - ((reqWidth-cMinLeft-TextBox.Right-cLabelSpacing) div 2) + cMinLeft, - cLabelSpacing); + // calculate the width of the dialog + if FBitmap <> nil then + cMinLeft := cLabelSpacing + max(20, FBitmap.Width) + cLabelSpacing + else + cMinLeft := cLabelSpacing; + reqWidth:= reqBtnWidth + 2 * cBtnDist; + if reqWidth < (TextBox.Right + cMinLeft + cLabelSpacing) then + reqWidth:= TextBox.Right + cMinLeft + cLabelSpacing + else + TextBox.Right := reqWidth - cMinLeft - cLabelSpacing; + ButtonLeft := ((reqWidth - reqBtnWidth) div 2); + + // calculate the height of the dialog + reqHeight:= TextBox.Bottom; + if (FBitmap <> nil) and (FBitmap.Height > reqHeight) then + reqHeight := FBitmap.Height; - // calculate the icon position - if FBitmap <> nil then - begin - FBitmapX := cLabelSpacing; - FBitmapY := (reqHeight - CurBtnSize.Y - FBitmap.Height - cLabelSpacing) div 2; - end; + inc(reqHeight, cBtnYSpacing); + if reqHeight > MaxHeight then + begin + Dec(TextBox.Bottom, reqHeight-MaxHeight); + reqHeight := MaxHeight; + end; + + // calculate the text position + OffsetRect(TextBox, + ((reqWidth-cMinLeft-TextBox.Right-cLabelSpacing) div 2) + cMinLeft, + cLabelSpacing); - // set size of form - SetBounds((Screen.Width - reqWidth-10) div 2, (Screen.Height - reqHeight-50) div 2, - reqWidth, reqHeight); - - // position buttons - CurBtnPos := ButtonLeft; - if FButtons <> nil then - for i := 0 to FButtons.Count-1 do + // calculate the icon position + if FBitmap <> nil then begin - CurButton := TBitBtn(Components[i]); - CurBtnSize := GetButtonSize(CurButton); - CurButton.SetBounds(CurBtnPos, ClientHeight - CurBtnSize.Y - cLabelSpacing, - CurBtnSize.X, CurBtnSize.Y); - inc(CurBtnPos, CurButton.Width + cBtnDist); + FBitmapX := cLabelSpacing; + FBitmapY := (reqHeight - CurBtnSize.Y - FBitmap.Height - cLabelSpacing) div 2; end; + + // set size&position of form + SetBounds( + (Monitor.WorkareaRect.Left + Monitor.WorkareaRect.Right - reqWidth) div 2, + Monitor.WorkareaRect.Top + (MaxHeight - reqHeight) div 2, + reqWidth, reqHeight); + + // position memo + if (FMsgMemo<>nil) and FMsgMemo.Visible then + FMsgMemo.BoundsRect:=TextBox; + + // position buttons + CurBtnPos := ButtonLeft; + if FButtons <> nil then + for i := 0 to FButtons.Count-1 do + begin + CurButton := TBitBtn(Components[i]); + CurBtnSize := GetButtonSize(CurButton); + CurButton.SetBounds(CurBtnPos, ClientHeight - CurBtnSize.Y - cLabelSpacing, + CurBtnSize.X, CurBtnSize.Y); + inc(CurBtnPos, CurButton.Width + cBtnDist); + end; + finally + EndAutoSizing; + end; end; function TQuestionDlg.ShowModal: TModalResult; @@ -697,6 +759,20 @@ Result := inherited ShowModal; end; +procedure TQuestionDlg.WMCloseQuery(var message: TLMessage); +begin + if fsModal in FFormState then + begin + if CancelControl <> nil then + CancelControl.ExecuteCancelAction + else + ModalResult := mrCancel; + end else + Close; + // Always return 0, because we destroy the window ourselves + Message.Result := 0; +end; + constructor TQuestionDlg.CreateQuestionDlg(const aCaption, aMsg: string; DlgType: LongInt; Buttons: TDialogButtons; HelpCtx: Longint); var @@ -709,9 +785,10 @@ inherited CreateNew(nil, 1); PopupMode := pmAuto; BorderStyle := bsDialog; - Position := poScreenCenter; + Position := poDesigned; MessageTxt := ConvertLineEndings(aMsg); HelpContext := HelpCtx; + KeyPreview := True; // Initialize TextStyle FillChar(TextStyle, SizeOf(TTextStyle), 0); @@ -769,6 +846,8 @@ Caption := CurBtn.Caption; Parent := Self; Default := CurBtn.Default; + if Default then + ActiveControl := NewButton; Cancel := CurBtn.Cancel; end; if FButtons = nil then @@ -784,8 +863,19 @@ inherited Destroy; end; +procedure TQuestionDlg.KeyDown(var Key: Word; Shift: TShiftState); +begin + if (Key = VK_ESCAPE) and (CancelControl = nil) then + begin + ModalResult := mrCancel; + Key := 0; + end; + + inherited KeyDown(Key, Shift); +end; + -function ShowQuestionDialog(const aCaption, aMsg: string; DlgType: LongInt; +function DefaultQuestionDialog(const aCaption, aMsg: string; DlgType: LongInt; Buttons: TDialogButtons; HelpCtx: Longint): LongInt; { Show a dialog with aCaption as Title, aMsg as Text, DlgType as Icon, HelpCtx as Help context and Buttons to define the shown buttons and their @@ -821,13 +911,33 @@ function QuestionDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; Buttons: array of const; HelpCtx: Longint): TModalResult; + + function GetNextCaption(var i: integer; out aCaption: string): boolean; + begin + aCaption:=''; + if (i > High(Buttons)) then exit(false); + Result:=true; + case Buttons[i].VType of + vtString: aCaption := Buttons[i].VString^; + vtAnsiString: aCaption := AnsiString(Buttons[i].VAnsiString); + vtChar: aCaption := Buttons[i].VChar; + vtPChar: aCaption := Buttons[i].VPChar; + vtPWideChar: aCaption := Buttons[i].VPWideChar; + vtWideChar: aCaption := AnsiString(Buttons[i].VWideChar); + vtWidestring: aCaption := AnsiString(WideString(Buttons[i].VWideString)); + else + Result:=false; + end; + if Result then + inc(i); + end; + var DialogButtons: TDialogButtons; i: integer; CurBtnValue: TModalResult; - CurBtnCaption, CurOptions: String; - HasOptions: Boolean; - IsDefault: Boolean; + BtnCaption, s: String; + IsDefault, IsCancel, UseDefaultCaption: Boolean; NewButton: TDialogButton; begin DialogButtons := TDialogButtons.Create(TDialogButton); @@ -844,86 +954,64 @@ CurBtnValue := Buttons[i].VInteger; inc(i); - // get button caption - CurBtnCaption := ''; - if (i <= High(Buttons)) then - begin - case Buttons[i].VType of - vtString: CurBtnCaption := Buttons[i].VString^; - vtAnsiString: CurBtnCaption := AnsiString(Buttons[i].VAnsiString); - vtChar: CurBtnCaption := Buttons[i].VChar; - vtPChar: CurBtnCaption := Buttons[i].VPChar; - vtPWideChar: CurBtnCaption := Buttons[i].VPWideChar; - vtWideChar: CurBtnCaption := AnsiString(Buttons[i].VWideChar); - vtWidestring: CurBtnCaption := AnsiString(WideString(Buttons[i].VWideString)); - else - dec(i); // prevent the following inc(i) - end; - inc(i); - end; - - // get options - CurOptions := ''; + // get button caption and flags + BtnCaption := ''; + UseDefaultCaption := true; IsDefault := False; - if (i <= High(Buttons)) then + IsCancel := False; + while GetNextCaption(i,s) do begin - HasOptions := True; - case Buttons[i].VType of - vtString: CurOptions := Buttons[i].VString^; - vtAnsiString: CurOptions := AnsiString(Buttons[i].VAnsiString); - vtChar: CurOptions := Buttons[i].VChar; - vtPChar: CurOptions := Buttons[i].VPChar; - vtPWideChar: CurOptions := Buttons[i].VPWideChar; - vtWideChar: CurOptions := AnsiString(Buttons[i].VWideChar); - vtWidestring: CurOptions := AnsiString(WideString(Buttons[i].VWideString)); - else - HasOptions := False; - end; - if HasOptions then - begin - if SysUtils.CompareText(CurOptions,'isdefault')<>0 then - raise Exception.Create('TQuestionDlg.CreateQuestionDlg option expected at ' - +IntToStr(i)+' but "'+CurOptions+'" found.'); + if (SysUtils.CompareText(s,'isdefault')=0) then begin if DialogButtons.DefaultButton <> nil then raise Exception.Create('TQuestionDlg.CreateQuestionDlg only one button can be default'); - IsDefault := True; - inc(i); - end; + IsDefault:=true; + end + else if (SysUtils.CompareText(s,'iscancel')=0) then begin + if DialogButtons.CancelButton <> nil then + raise Exception.Create('TQuestionDlg.CreateQuestionDlg only one button can be cancel'); + IsCancel:=true + end + else if UseDefaultCaption then begin + UseDefaultCaption:=false; + BtnCaption:=s; + end else + raise Exception.Create('TQuestionDlg.CreateQuestionDlg option expected at '+IntToStr(i)+', but found "'+s+'"'); end; - if CurBtnCaption = '' then + if UseDefaultCaption then begin // find default caption case CurBtnValue of - mrOk : CurBtnCaption := rsmbOk; - mrCancel : CurBtnCaption := rsmbCancel; - mrYes : CurBtnCaption := rsmbYes; - mrNo : CurBtnCaption := rsmbNo; - mrAbort : CurBtnCaption := rsmbAbort; - mrRetry : CurBtnCaption := rsmbRetry; - mrIgnore : CurBtnCaption := rsmbIgnore; - mrAll : CurBtnCaption := rsmbAll; - mrYesToAll : CurBtnCaption := rsmbYesToAll; - mrNoToAll : CurBtnCaption := rsmbNoToAll; + mrOk : BtnCaption := rsmbOk; + mrCancel : BtnCaption := rsmbCancel; + mrYes : BtnCaption := rsmbYes; + mrNo : BtnCaption := rsmbNo; + mrAbort : BtnCaption := rsmbAbort; + mrRetry : BtnCaption := rsmbRetry; + mrIgnore : BtnCaption := rsmbIgnore; + mrAll : BtnCaption := rsmbAll; + mrYesToAll : BtnCaption := rsmbYesToAll; + mrNoToAll : BtnCaption := rsmbNoToAll; end; end; - if CurBtnCaption = '' then + if BtnCaption = '' then raise Exception.Create('TQuestionDlg.Create: missing Button caption '+dbgs(i-1)); NewButton := DialogButtons.Add; with NewButton do begin - Caption := CurBtnCaption; + Caption := BtnCaption; ModalResult := CurBtnValue; end; if IsDefault then DialogButtons.DefaultButton := NewButton; + if IsCancel then + DialogButtons.CancelButton := NewButton; end else raise Exception.Create('TQuestionDlg.Create: invalid Buttons parameter '+dbgs(i)); end; if DialogButtons.DefaultButton = nil then DialogButtons.DefaultButton := DialogButtons.FindButton([mrYes, mrOk, mrYesToAll, mrAll, mrRetry, mrCancel, mrNo, mrNoToAll, mrAbort, mrIgnore]); - DialogButtons.CancelButton := DialogButtons.FindButton([mrCancel, mrAbort, mrNo, mrIgnore, mrNoToAll, mrYes, mrOk, mrRetry, mrAll, mrYesToAll]); Result := WidgetSet.AskUser(aCaption, ConvertLineEndings(aMsg), DialogIds[DlgType], DialogButtons, HelpCtx); finally diff -Nru lazarus-1.4.4+dfsg/lcl/include/radiogroup.inc lazarus-1.6+dfsg/lcl/include/radiogroup.inc --- lazarus-1.4.4+dfsg/lcl/include/radiogroup.inc 2014-12-01 10:12:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/radiogroup.inc 2015-11-26 12:57:12.000000000 +0000 @@ -221,8 +221,6 @@ ARadioButton.Parent := Self; end; FHiddenButton.Parent:=Self; - if HandleAllocated then - FHiddenButton.HandleNeeded; // the checked and unchecked states can be applied only after all other for i := 0 to FItems.Count-1 do @@ -234,6 +232,8 @@ //FHiddenButton must remain the last item in Controls[], so that Controls[] is in sync with Items[] Self.RemoveControl(FHiddenButton); Self.InsertControl(FHiddenButton); + if HandleAllocated then + FHiddenButton.HandleNeeded; FHiddenButton.Checked := (FItemIndex = -1); UpdateTabStops; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/replacedialog.inc lazarus-1.6+dfsg/lcl/include/replacedialog.inc --- lazarus-1.4.4+dfsg/lcl/include/replacedialog.inc 2014-11-07 22:43:27.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/replacedialog.inc 2015-05-16 17:08:13.000000000 +0000 @@ -15,25 +15,25 @@ type { TReplaceDialogForm } - TReplaceDialogForm = class(TForm) - FlagPanel: TPanel; - PanelButtons: TPanel; - PromptOnReplaceCheckBox: TCheckBox; - EntireScopeCheckBox: TCheckBox; - FindMoreButton: TButton; - ReplaceButton: TButton; - ReplaceAllButton: TButton; - CancelButton: TButton; - HelpButton: TButton; - WholeWordsOnlyCheckBox: TCheckBox; - CaseSensitiveCheckBox: TCheckBox; + // Same order as in TReplaceDialog + PanelButtons: TPanel; + CancelButton: TButton; + CaseSensitiveCheckBox: TCheckBox; + DirectionRadioGroup: TRadioGroup; EditFind: TEdit; + EntireScopeCheckBox: TCheckBox; + FindMoreButton: TButton; + TextLabel: TLabel; + FlagPanel: TPanel; + HelpButton: TButton; + WholeWordsOnlyCheckBox: TCheckBox; + EditReplace: TEdit; - TextLabel: TLabel; + PromptOnReplaceCheckBox: TCheckBox; + ReplaceAllButton: TButton; + ReplaceButton: TButton; ReplaceLabel: TLabel; - DirectionRadioGroup: TRadioGroup; - Label1: TLabel; private FButtonsBottom: Boolean; public @@ -605,7 +605,7 @@ constructor TReplaceDialog.Create(AOwner: TComponent); begin inherited Create(AOwner); - Options:=Options + [frReplace, frReplaceAll, frHidePromptOnreplace]; + FOptions += [frReplace, frReplaceAll, frHidePromptOnreplace]; end; function TReplaceDialog.DefaultTitle: string; diff -Nru lazarus-1.4.4+dfsg/lcl/include/screen.inc lazarus-1.6+dfsg/lcl/include/screen.inc --- lazarus-1.4.4+dfsg/lcl/include/screen.inc 2013-09-27 03:19:05.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/screen.inc 2015-11-11 13:10:16.000000000 +0000 @@ -458,17 +458,16 @@ MonitorRect := Monitors[i].BoundsRect; if IntersectRect(Intersection, Rect, MonitorRect) then begin - with Intersection do - Square := Abs(Right - Left) * Abs(Bottom - Top); + Square := Abs(Intersection.Right - Intersection.Left) + * Abs(Intersection.Bottom - Intersection.Top); if Square > BestSquare then begin BestSquare := Square; Result := Monitors[i]; end end; - with MonitorRect do - Distance := Min(Min(Abs(Rect.Left - Right), Abs(Rect.Right - Left)), - Min(Abs(Rect.Top - Bottom), Abs(Rect.Bottom - Top))); + Distance := Min(Min(Abs(Rect.Left - MonitorRect.Right), Abs(Rect.Right - MonitorRect.Left)), + Min(Abs(Rect.Top - MonitorRect.Bottom), Abs(Rect.Bottom - MonitorRect.Top))); if Distance < BestDistance then begin BestDistance := Distance; diff -Nru lazarus-1.4.4+dfsg/lcl/include/scrollingwincontrol.inc lazarus-1.6+dfsg/lcl/include/scrollingwincontrol.inc --- lazarus-1.4.4+dfsg/lcl/include/scrollingwincontrol.inc 2015-04-04 21:49:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/scrollingwincontrol.inc 2015-11-29 22:21:49.000000000 +0000 @@ -248,22 +248,33 @@ procedure TScrollingWinControl.ScrollBy(DeltaX, DeltaY: Integer); begin - if HandleAllocated and IsWindowVisible(Handle) then - begin - TWSScrollingWinControlClass(WidgetSetClass).ScrollBy(Self, DeltaX, DeltaY); - //Invalidate; - end - else - inherited ScrollBy(DeltaX, DeltaY); + ScrollBy_WS(DeltaX, DeltaY); end; -procedure TScrollingWinControl.ScrollbarHandler(ScrollKind: TScrollBarKind; - OldPosition: Integer); -begin - if ScrollKind = sbVertical then - ScrollBy(0, OldPosition - FVertScrollBar.Position) - else - ScrollBy(OldPosition - FHorzScrollBar.Position, 0); +procedure TScrollingWinControl.ScrollInView(AControl: TControl); +var + xRect: TRect; +begin + if AControl=nil then + Exit; + xRect := AControl.BoundsRect; + OffsetRect(xRect, -HorzScrollBar.Position, -VertScrollBar.Position); + if xRect.Left < 0 then + HorzScrollBar.Position := HorzScrollBar.Position + xRect.Left + else if xRect.Right > ClientWidth then + begin + if xRect.Right - xRect.Left > ClientWidth then + xRect.Right := xRect.Left + ClientWidth; + HorzScrollBar.Position := HorzScrollBar.Position + xRect.Right - ClientWidth; + end; + if xRect.Top < 0 then + VertScrollBar.Position := VertScrollBar.Position + xRect.Top + else if xRect.Bottom > ClientHeight then + begin + if xRect.Bottom - xRect.Top > ClientHeight then + xRect.Bottom := xRect.Top + ClientHeight; + VertScrollBar.Position := VertScrollBar.Position + xRect.Bottom - ClientHeight; + end; end; procedure TScrollingWinControl.Loaded; @@ -293,6 +304,18 @@ HorzScrollbar.ScrollHandler(Message); end; +procedure TScrollingWinControl.WMMouseWheel(var Message: TLMMouseEvent); +begin + // support VertScrollBar.Increment on Windows. + // The code has no meaning on other OS because scrolling is handled there directly by the OS + if Mouse.WheelScrollLines > 0 then + Message.WheelDelta := + (Min(High(Message.WheelDelta), Max(Low(Message.WheelDelta), + (VertScrollBar.Increment * Message.WheelDelta))) div 120) * 120; + + inherited WMMouseWheel(Message); +end; + constructor TScrollingWinControl.Create(TheOwner : TComponent); begin Inherited Create(TheOwner); diff -Nru lazarus-1.4.4+dfsg/lcl/include/shape.inc lazarus-1.6+dfsg/lcl/include/shape.inc --- lazarus-1.4.4+dfsg/lcl/include/shape.inc 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/shape.inc 2015-11-11 12:55:40.000000000 +0000 @@ -27,12 +27,21 @@ inherited Destroy; end; +function TShape.GetStarAngle(N: Integer; ADown: boolean): Double; +begin + Result := pi/5 * N + pi/2 * IfThen(ADown, -1, 1); +end; + procedure TShape.Paint; var PaintRect: TRect; MinSize: Longint; P: array[0..3] of TPoint; + PStar: array[0..10] of TPoint; PenInc, PenDec: Integer; + RadiusBig, RadiusBig2, RadiusSm, i: Integer; + PCenter: TPoint; + Alfa: Double; begin with Canvas do begin @@ -48,16 +57,13 @@ if PaintRect.Top = PaintRect.Bottom then PaintRect.Bottom := PaintRect.Bottom + 1; - with PaintRect do + MinSize := Min(PaintRect.Right - PaintRect.Left, PaintRect.Bottom - PaintRect.Top); + if FShape in [stSquare, stRoundSquare, stCircle, stSquaredDiamond] then begin - MinSize := Min(Right - Left, Bottom - Top); - if FShape in [stSquare, stRoundSquare, stCircle, stSquaredDiamond] then - begin - Left := Left + ((Right - Left) - MinSize) div 2; - Top := Top + ((Bottom - Top) - MinSize) div 2; - Right := Left + MinSize; - Bottom := Top + MinSize; - end; + PaintRect.Left := PaintRect.Left + ((PaintRect.Right - PaintRect.Left) - MinSize) div 2; + PaintRect.Top := PaintRect.Top + ((PaintRect.Bottom - PaintRect.Top) - MinSize) div 2; + PaintRect.Right := PaintRect.Left + MinSize; + PaintRect.Bottom := PaintRect.Top + MinSize; end; case FShape of @@ -68,35 +74,116 @@ stCircle, stEllipse: Ellipse(PaintRect); stSquaredDiamond, stDiamond: - begin - with PaintRect do begin - P[0].x := Left; - P[0].y := (Top + Bottom) div 2; - P[1].x := (Left + Right) div 2; - P[1].y := Top; - P[2].x := Right - 1; + P[0].x := PaintRect.Left; + P[0].y := (PaintRect.Top + PaintRect.Bottom) div 2; + P[1].x := (PaintRect.Left + PaintRect.Right) div 2; + P[1].y := PaintRect.Top; + P[2].x := PaintRect.Right - 1; P[2].y := P[0].y; P[3].x := P[1].x; - P[3].y := Bottom - 1; + P[3].y := PaintRect.Bottom - 1; Polygon(P); end; - end; stTriangle: - begin - with Self do begin - P[0].x := (Width - 1) div 2; - P[0].y := PenInc; - P[1].x := Width - PenInc - 1; - P[1].y := Height - PenInc - 1; - P[2].x := PenInc; - P[2].y := Height - PenInc - 1; - P[3].x := P[0].x; - P[3].y := P[0].y; - Polygon(P); + with Self do + begin + P[0].x := (Width - 1) div 2; + P[0].y := PenInc; + P[1].x := Width - PenInc - 1; + P[1].y := Height - PenInc - 1; + P[2].x := PenInc; + P[2].y := Height - PenInc - 1; + P[3].x := P[0].x; + P[3].y := P[0].y; + Polygon(P); + end; + end; + stTriangleDown: + begin + with Self do + begin + P[0].x := (Width - 1) div 2; + P[0].y := Height - PenInc - 1; + P[1].x := Width - PenInc - 1; + P[1].y := PenInc; + P[2].x := PenInc; + P[2].y := PenInc; + P[3].x := P[0].x; + P[3].y := P[0].y; + Polygon(P); + end; + end; + stTriangleLeft: + begin + with Self do + begin + P[0].x := PenInc; + P[0].y := Height div 2; + P[1].x := Width - PenInc - 1; + P[1].y := PenInc; + P[2].x := Width - PenInc - 1; + P[2].y := Height - PenInc - 1; + P[3].x := P[0].x; + P[3].y := P[0].y; + Polygon(P); + end; + end; + stTriangleRight: + begin + with Self do + begin + P[0].x := Width - PenInc - 1; + P[0].y := Height div 2; + P[1].x := PenInc; + P[1].y := PenInc; + P[2].x := PenInc; + P[2].y := Height - PenInc - 1; + P[3].x := P[0].x; + P[3].y := P[0].y; + Polygon(P); + end; + end; + stStar, + stStarDown: + begin + with Self do + begin + //radius if star scaled by height + RadiusBig := Trunc((Height-Pen.Width) / (1+cos(pi/5))); + //radius if star scaled by width + RadiusBig2 := Trunc((Width-Pen.Width) / (2*sin(pi*2/5))); + + if RadiusBig<=RadiusBig2 then + begin + if FShape=stStar then + PCenter.Y := RadiusBig+PenDec + else + PCenter.Y := Height-RadiusBig-PenDec; + end + else + begin + RadiusBig := RadiusBig2; + PCenter.Y := Height div 2; + end; + PCenter.X := Width div 2; + RadiusSm := RadiusBig * 57 div 150; + + for i := 0 to 4 do + begin + Alfa := GetStarAngle(i*2, FShape=stStarDown); + PStar[i*2].x := PCenter.X + Round(RadiusBig*cos(Alfa)); + PStar[i*2].y := PCenter.Y - Round(RadiusBig*sin(Alfa)); + Alfa:= GetStarAngle(i*2+1, FShape=stStarDown); + PStar[i*2+1].x := PCenter.X + Round(RadiusSm*cos(Alfa)); + PStar[i*2+1].y := PCenter.Y - Round(RadiusSm*sin(Alfa)); + end; + + PStar[10] := PStar[0]; + Polygon(PStar); + end; end; - end; end; end; // to fire OnPaint event diff -Nru lazarus-1.4.4+dfsg/lcl/include/speedbutton.inc lazarus-1.6+dfsg/lcl/include/speedbutton.inc --- lazarus-1.4.4+dfsg/lcl/include/speedbutton.inc 2015-01-27 08:34:12.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/speedbutton.inc 2015-10-26 21:41:56.000000000 +0000 @@ -543,7 +543,7 @@ end; ClientSize.cx:= PaintRect.Right - PaintRect.Left; ClientSize.cy:= PaintRect.Bottom - PaintRect.Top; - //debugln(['TCustomSpeedButton.MeasureDraw AAA1 ',DbgSName(Self),' PaintRect=',dbgs(PaintRect)]); + //debugln(['TCustomSpeedButton.MeasureDraw Step1 ',DbgSName(Self),' PaintRect=',dbgs(PaintRect)]); // compute size of glyph GlyphSize := GetGlyphSize(Draw,PaintRect); GlyphWidth := GlyphSize.CX; @@ -551,7 +551,7 @@ GlyphWidth:=GlyphWidth div NumGlyphs; GlyphHeight := GlyphSize.CY; HasGlyph:=(GlyphWidth<>0) and (GlyphHeight<>0); - //debugln(['TCustomSpeedButton.MeasureDraw AAA2 ',DbgSName(Self),' PaintRect=',dbgs(PaintRect),' GlyphSize=',GlyphWidth,'x',GlyphHeight]); + //debugln(['TCustomSpeedButton.MeasureDraw Step2 ',DbgSName(Self),' PaintRect=',dbgs(PaintRect),' GlyphSize=',GlyphWidth,'x',GlyphHeight]); // compute size of text CurLayout:=BidiAdjustButtonLayout(UseRightToLeftReading, Layout); @@ -644,7 +644,7 @@ end; end; - //debugln(['TCustomSpeedButton.MeasureDraw AAA3 ',DbgSName(Self),' PaintRect=',dbgs(PaintRect),' GlyphSize=',GlyphWidth,'x',GlyphHeight,' TextSize=',TextSize.cx,'x',TextSize.cy,' S=',S,' M=',M]); + //debugln(['TCustomSpeedButton.MeasureDraw Step3 ',DbgSName(Self),' PaintRect=',dbgs(PaintRect),' GlyphSize=',GlyphWidth,'x',GlyphHeight,' TextSize=',TextSize.cx,'x',TextSize.cy,' S=',S,' M=',M]); if Draw then begin @@ -1051,7 +1051,9 @@ Result := FGlyph.Draw(ACanvas, AClient, point(AOffset.x + 1, AOffset.y + 1), AState, ATransparent, BiDiFlags) else Result := FGlyph.Draw(ACanvas, AClient, AOffset, AState, ATransparent, BiDiFlags); - end; + end + else + Result := Rect(0,0,0,0); end; {------------------------------------------------------------------------------ diff -Nru lazarus-1.4.4+dfsg/lcl/include/spinedit.inc lazarus-1.6+dfsg/lcl/include/spinedit.inc --- lazarus-1.4.4+dfsg/lcl/include/spinedit.inc 2015-09-15 21:04:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/spinedit.inc 2016-01-03 12:45:34.000000000 +0000 @@ -94,7 +94,7 @@ procedure TCustomFloatSpinEdit.KeyPress(var Key: char); {Disallow any key that is not a digit, decimalseparator, + or - For ease of use translate any decimalpoint or comma to DecimalSeparator - Tab and backSpace ofcourse should be passed onto inherited KeyPress + Tab, BackSpace, Cut, Paste, Copy, Undo of course should be passed onto inherited KeyPress If FDecimals = 0 (as in TSpinEdit), disallow decimalseparator also We could make it more sophisticated and only allow +/- at front, DecimalSeparator only if not already in text, but this way is Delphi compatible @@ -102,7 +102,7 @@ begin inherited KeyPress(Key); if (Key in ['.',',']) then Key := DefaultFormatSettings.Decimalseparator; - if not (Key in ['0'..'9', DefaultFormatSettings.DecimalSeparator,'+','-',#8,#9,^C,^X,^V]) then Key := #0; + if not (Key in ['0'..'9', DefaultFormatSettings.DecimalSeparator,'+','-',#8,#9,^C,^X,^V,^Z]) then Key := #0; if (Key = DefaultFormatSettings.DecimalSeparator) and (FDecimals = 0) then Key := #0; end; diff -Nru lazarus-1.4.4+dfsg/lcl/include/toolbar.inc lazarus-1.6+dfsg/lcl/include/toolbar.inc --- lazarus-1.4.4+dfsg/lcl/include/toolbar.inc 2014-11-19 16:18:35.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/toolbar.inc 2015-05-05 19:39:04.000000000 +0000 @@ -80,7 +80,7 @@ Constructor for the class. ------------------------------------------------------------------------------} -constructor TToolbar.Create(TheOwner : TComponent); +constructor TToolBar.Create(TheOwner: TComponent); var Details: TThemedElementDetails; begin @@ -425,6 +425,8 @@ Canvas.FrameRect(Clientrect); end; inherited Paint; + if Assigned(OnPaint) then + OnPaint(Self); end; procedure TToolBar.SetButtonSize(NewButtonWidth, NewButtonHeight: integer); diff -Nru lazarus-1.4.4+dfsg/lcl/include/toolbutton.inc lazarus-1.6+dfsg/lcl/include/toolbutton.inc --- lazarus-1.4.4+dfsg/lcl/include/toolbutton.inc 2014-11-12 11:58:51.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/toolbutton.inc 2015-12-21 22:48:41.000000000 +0000 @@ -58,14 +58,31 @@ procedure TToolButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + + procedure SendButtonUpMsg; + var + msg: TLMMouse; + pt: TPoint; + begin + FillChar({%H-}msg, SizeOf(msg), 0); + msg.Msg:=LM_LBUTTONUP; + pt := ScreenToClient(Mouse.CursorPos); + msg.XPos:=pt.X; + msg.YPos:=pt.Y; + WndProc(TLMessage(msg)); + end; var NewFlags: TToolButtonFlags; begin //debugln(['TToolButton.MouseDown ',DbgSName(Self)]); + SetMouseInControl(True); NewFlags := FToolButtonFlags - [tbfPressed, tbfArrowPressed]; if (Button = mbLeft) then begin - if Enabled then + //use some threshold to decide if the DropdownMenu should be opened again. + // When no DropdownMenu is assigned, FLastDropDownTick is always 0 + // therefore the condition is always met. + if Enabled and not(GetTickCount64 < FLastDropDownTick + 100) then begin if (Style = tbsDropDown) and (FToolBar <> nil) and (X > ClientWidth - FToolBar.FDropDownWidth) then Include(NewFlags, tbfArrowPressed) @@ -81,17 +98,33 @@ inherited MouseDown(Button, Shift, X, Y); - if (Style = tbsDropDown) and (Button = mbLeft) and Enabled then - begin - if NewFlags * [tbfArrowPressed] = [] then - Down := True; + FLastDropDownTick := 0; + if (Button = mbLeft) and Enabled and + (Style in [tbsButton, tbsDropDown]) then + begin + if ((Style = tbsButton) and (tbfPressed in NewFlags) or + (Style = tbsDropDown) and (tbfArrowPressed in NewFlags)) and + CheckMenuDropdown then + begin + FLastDropDownTick := GetTickCount64; + + //because we show the DropdownMenu in MouseDown, we have to send + // LM_LBUTTONUP manually to make it work in all widgetsets! + // Some widgetsets work without it (e.g. win32) but some don't (e.g. carbon). + SendButtonUpMsg; + end else + begin + if (Style = tbsDropDown) and + (NewFlags * [tbfArrowPressed, tbfPressed] = [tbfPressed]) + then + Down := True; + end; end; end; procedure TToolButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var - DropDownMenuDropped: Boolean; Pressed: Boolean; Pt: TPoint; begin @@ -114,30 +147,21 @@ if not PtInRect(Rect(0,0,Width,Height), Pt) then SetMouseInControl(false); end; - DropDownMenuDropped := False; - //DebugLn('TToolButton.MouseUp ',Name,':',ClassName,' ',Style=tbsCheck); if (Style in [tbsButton, tbsDropDown]) then - begin - if (FToolBar <> nil) and FMouseInControl and - ((Style = tbsButton) or (X > ClientWidth - FToolBar.FDropDownWidth)) then - DropDownMenuDropped := CheckMenuDropdown; Down := False; - end; - - //debugln(['TToolButton.MouseUp ',DbgSName(Self),' FMouseInControl=',FMouseInControl,' DropDownMenuDropped=',DropDownMenuDropped]); - if FMouseInControl and not DropDownMenuDropped then + //button is pressed, but DropdownMenu was not shown + if FMouseInControl and (FLastDropDownTick = 0) and Pressed then begin if (Style = tbsCheck) then Down := not Down; - if Pressed then - Click; + Click; + //DON'T USE the tool button (Self) after the click call because it could + //have been destroyed in the OnClick event handler (e.g. Lazarus IDE does it)! end; end; - Invalidate; end; -procedure TToolButton.Notification(AComponent: TComponent; - Operation: TOperation); +procedure TToolButton.Notification(AComponent: TComponent; Operation: TOperation); begin inherited Notification(AComponent, Operation); if Operation = opRemove then @@ -248,13 +272,28 @@ ButtonRect := PaintRect; Details := GetButtonDrawDetail; + // OnDrawItem + if Assigned(FToolBar.OnPaintButton) then + begin + if (Style in [tbsButton, tbsDropDown, tbsCheck]) then + begin + TempDetails := Details; + if ((FToolBar <> nil) and not FToolBar.Flat) and (TempDetails.State in [1, 4]) then + TempDetails.State := 2; + end; + + FToolBar.OnPaintButton(Self, TempDetails.State); + exit; + end; + if Style = tbsDropDown then begin DropDownButtonRect := ButtonRect; - DropDownButtonRect.Left := - Max(0, DropDownButtonRect.Right - FToolBar.FDropDownWidth); + DropDownButtonRect.Left := Max(0, DropDownButtonRect.Right-FToolBar.FDropDownWidth); ButtonRect.Right := DropDownButtonRect.Left; - end; + end + else + DropDownButtonRect := Rect(0,0,0,0); // calculate text size TextSize.cx:=0; @@ -337,7 +376,11 @@ else if Style = tbsSeparator then begin - DrawSeparator(Details, ButtonRect); + if ThemeServices.ThemesEnabled then begin + Details:=ThemeServices.GetElementDetails(ttbSeparatorNormal); + ThemeServices.DrawElement(Canvas.Handle,Details,ClientRect) + end else + DrawSeparator(Details, ButtonRect); ButtonRect := Rect(0, 0, 0, 0); // nothing can be drawn on separator end; @@ -479,13 +522,12 @@ begin // DebugLn('TToolButton.MouseLeave ',Name); inherited MouseLeave; - SetMouseInControl(false); if (not MouseCapture) and ([tbfPressed, tbfArrowPressed] * FToolButtonFlags <> []) then begin Exclude(FToolButtonFlags, tbfPressed); Exclude(FToolButtonFlags, tbfArrowPressed); - Invalidate; end; + SetMouseInControl(false); end; procedure TToolButton.SetDown(Value: Boolean); @@ -861,17 +903,19 @@ begin if Down then begin // checked states - if FMouseInControl then + if (tbfPressed in FToolButtonFlags) and FMouseInControl then + inc(ToolDetail, 2) // ttbButtonPressed + else if FMouseInControl then inc(ToolDetail, 5) // ttbButtonCheckedHot else - inc(ToolDetail, 4) // ttbButtonChecked + inc(ToolDetail, 4);// ttbButtonChecked end else begin if (tbfPressed in FToolButtonFlags) and FMouseInControl then - inc(ToolDetail, 2) else // ttbButtonPressed - if FMouseInControl then - inc(ToolDetail, 1); // ttbButtonHot + inc(ToolDetail, 2) // ttbButtonPressed + else if FMouseInControl then + inc(ToolDetail, 1);// ttbButtonHot end; end; Result := ThemeServices.GetElementDetails(ToolDetail); diff -Nru lazarus-1.4.4+dfsg/lcl/include/treeview.inc lazarus-1.6+dfsg/lcl/include/treeview.inc --- lazarus-1.4.4+dfsg/lcl/include/treeview.inc 2015-02-19 10:33:32.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/treeview.inc 2015-11-11 12:55:46.000000000 +0000 @@ -560,20 +560,23 @@ begin TheTreeNodes:=TreeNodes; if TheTreeNodes=nil then exit; - + // Get the first selected node of the tree CurNode := TheTreeNodes.FFirstMultiSelected; - + // Initialize self unbinded Self.FPrevMultiSelected := nil; Self.FNextMultiSelected := nil; - + // If there isn't any selected node, set self as first if CurNode = nil then - TheTreeNodes.FFirstMultiSelected := Self + begin + TheTreeNodes.FFirstMultiSelected := Self; + TheTreeNodes.FStartMultiSelected := Self; + end else begin - + // if last selected node was the previous one if (TheTreeNodes.FLastMultiSelected.AbsoluteIndex+1=Self.AbsoluteIndex) and (TheTreeNodes.FLastMultiSelected.FNextMultiSelected=nil) then begin @@ -615,11 +618,11 @@ if Self.FPrevMultiSelected = nil then TheTreeNodes.FFirstMultiSelected := Self; end; - + end; - + end; - + // Set self as last selected node TheTreeNodes.FLastMultiSelected := Self; end; @@ -1135,10 +1138,10 @@ var ANode: TTreeNode; begin - if FIndex>=0 then begin - Result:=FIndex; - exit; - end; + if self = nil then + exit(-1); + if FIndex>=0 then + exit(FIndex); // many algorithms uses the last sibling, so we check that first for speed if (Parent<>nil) and (Parent[Parent.Count-1]=Self) then begin Result:=Parent.Count-1; @@ -1705,7 +1708,7 @@ function TTreeNode.DisplayTextLeft: integer; var TV: TCustomTreeView; - ImgIndex: TImageIndex; + ImgIndex: TImageIndex; begin Result := DisplayIconLeft; TV := TreeView; @@ -2438,19 +2441,19 @@ TreeNodeError('TTreeNodes.GetNodeFromIndex Index '+IntToStr(Index) +' out of bounds (Count='+IntToStr(FCount)+')'); end; - + procedure RaiseSubTreeCount0; begin TreeNodeError( 'TTreeNodes.GetNodeFromIndex: Consistency error - SubTreeCount=0'); end; - + procedure RaiseSubTreeCountTooBig; begin TreeNodeError( 'TTreeNodes.GetNodeFromIndex: Consistency error - invalid SubTreeCount'); end; - + procedure RaiseCountTooBig; begin TreeNodeError( @@ -2513,19 +2516,6 @@ Result := Cardinal(FSelection.Count); end; -{function TTreeNodes.GetNode(ItemId: HTreeItem): TTreeNode; -var - Item: TTVItem; -begin - with Item do - begin - hItem := ItemId; - mask := TVIF_PARAM; - end; - if TreeView_GetItem(Handle, Item) then Result := TTreeNode(Item.lParam) - else Result := nil; -end;} - procedure TTreeNodes.SetItem(Index: Integer; AValue: TTreeNode); begin GetNodeFromIndex(Index).Assign(AValue); @@ -2691,6 +2681,67 @@ end; end; +procedure TTreeNodes.MultiSelect(Node: TTreeNode; ClearWholeSelection: Boolean); +var + I, FirstNode, LastNode: TTreeNode; + GetNext: Boolean; +begin + if Owner<>nil then Owner.LockSelectionChangeEvent; + try + if FStartMultiSelected=nil then + begin + FirstNode := Node; + FStartMultiSelected := Node; + end else + FirstNode := FStartMultiSelected; + + if ClearWholeSelection then + begin + ClearMultiSelection(True); + end else + begin + //clear only last selection + if Assigned(FLastMultiSelected) then + begin + LastNode := FLastMultiSelected; + GetNext := (FirstNode.Index <= LastNode.Index); + I := FirstNode; + I.MultiSelected:=False; + while (I<>LastNode) do + begin + if GetNext then + I:=I.GetNextSibling + else + I:=I.GetPrevSibling; + if I=nil then Break; + I.MultiSelected:=False; + end; + end; + if Assigned(Owner) then + Owner.Selected := nil; + end; + + //select again + GetNext := (FirstNode.Index <= Node.Index); + I := FirstNode; + I.Selected:=True; + while (I<>Node) do + begin + if GetNext then + I:=I.GetNextSibling + else + I:=I.GetPrevSibling; + if I=nil then Break; + I.Selected:=True; + end; + + FStartMultiSelected := FirstNode; + FLastMultiSelected := Node; + finally + if Owner<>nil then Owner.UnlockSelectionChangeEvent; + end; +end; + procedure TTreeNodes.Assign(Source: TPersistent); var TreeNodes: TTreeNodes; @@ -3126,6 +3177,8 @@ FImageChangeLink := TChangeLink.Create; FImageChangeLink.OnChange := @ImageListChange; FSelectedColor:=clHighlight; + FSelectedFontColor:=clWhite; + FSelectedFontColorUsed:=false; fSeparatorColor:=clGray; FStateChangeLink := TChangeLink.Create; FStateChangeLink.OnChange := @ImageListChange; @@ -3142,7 +3195,7 @@ destructor TCustomTreeView.Destroy; begin LockSelectionChangeEvent; // prevent change event during destroying - + Images:=nil; FreeThenNil(FTreeNodes); FreeThenNil(FSaveItems); @@ -3185,6 +3238,12 @@ FLastVertScrollInfo.cbSize := 0; end; +procedure TCustomTreeView.DoCreateNodeClass(var NewNodeClass: TTreeNodeClass); +begin + if Assigned(OnCreateNodeClass) then + OnCreateNodeClass(Self,NewNodeClass); +end; + procedure TCustomTreeView.BeginAutoDrag; begin BeginDrag(False); @@ -3272,7 +3331,7 @@ Result:=0; OnCompare(Node1.TreeView,Node1, Node2, Result); end else - Result := Utf8CompareStr(Node1.Text,Node2.Text); + Result := LazUTF8.Utf8CompareStr(Node1.Text,Node2.Text); end; procedure TCustomTreeView.SetAutoExpand(Value: Boolean); @@ -3376,6 +3435,14 @@ end; end; +procedure TCustomTreeView.SetSelectedFontColor(Value: TColor); +begin + if FSelectedFontColor<>Value then begin + FSelectedFontColor:=Value; + Invalidate; + end; +end; + procedure TCustomTreeView.Paint; begin DoPaint; @@ -3929,37 +3996,59 @@ EditKey = VK_F2; EditKeyShift = []; var - I: Integer; - lNode, tempNode: TTreeNode; + lNode: TTreeNode; begin inherited KeyDown(Key, Shift); - if (tvoAllowMultiSelect in FOptions) and (ssShift in Shift) then - lNode := FTreeNodes.FLastMultiSelected - else - lNode := Selected; - case Key of VK_DOWN: begin - if lNode <> nil then - lNode := lNode.GetNextExpanded - else if Items.Count > 0 then - lNode := FTreeNodes.GetFirstNode; + MoveToNextNode(ssShift in Shift); Key:=VK_UNKNOWN; end; VK_UP: begin - if lNode <> nil then - lNode := lNode.GetPrevExpanded - else if Items.Count > 0 then - lNode := Items.GetLastExpandedSubNode; + MoveToPrevNode(ssShift in Shift); + Key:=VK_UNKNOWN; + end; + + VK_HOME: + begin + MoveHome(ssShift in Shift); + Key:=VK_UNKNOWN; + end; + + VK_END: + begin + MoveEnd(ssShift in Shift); Key:=VK_UNKNOWN; end; - VK_LEFT: + VK_PRIOR: // Page Up + begin + MovePageUp(ssShift in Shift); + Key:=VK_UNKNOWN; + end; + + VK_NEXT: // Page Down + begin + MovePageDown(ssShift in Shift); + Key:=VK_UNKNOWN; + end; + + else + if not (Key in [VK_LEFT,VK_RIGHT,VK_ADD,VK_SUBTRACT]) then + Exit; + + if (tvoAllowMultiSelect in FOptions) and (ssShift in Shift) then + lNode := FTreeNodes.FLastMultiSelected + else + lNode := Selected; + + case Key of + VK_LEFT: if lNode <> nil then begin if lNode.Expanded then @@ -3970,7 +4059,7 @@ Key:=VK_UNKNOWN; end; - VK_RIGHT: + VK_RIGHT: if lNode <> nil then begin if lNode.Expanded then @@ -3979,75 +4068,24 @@ lNode.Expanded := True; Key:=VK_UNKNOWN; end; - - VK_ADD: - if lNode <> nil then - lNode.Expanded := True; - - VK_SUBTRACT: - if lNode <> nil then - lNode.Expanded := False; - - VK_HOME: - begin - tempNode := Items.GetFirstVisibleNode; - if tempNode<>nil then - lNode := tempNode; - end; - - VK_END: - begin - tempNode := Items.GetLastExpandedSubNode; - if tempNode<>nil then - lNode := tempNode; - end; - VK_PRIOR: // Page Up + VK_ADD: if lNode <> nil then - begin - I := Pred(ClientHeight div DefaultItemHeight); - - while (I > 0) do - if lNode.GetPrevExpanded <> nil then - begin - lNode := lNode.GetPrevExpanded; - Dec(I); - end - else Break; + lNode.Expanded := True; - end; - - VK_NEXT: // Page Down + VK_SUBTRACT: if lNode <> nil then - begin - I := Pred(ClientHeight div DefaultItemHeight); - - while (I > 0) do - if lNode.GetNextExpanded <> nil then - begin - lNode := lNode.GetNextExpanded; - Dec(I); - end - else Break; + lNode.Expanded := False; + else + if (Key=EditKey) and (Shift=EditKeyShift) and (not ReadOnly) then + BeginEditing(Selected); + lNode := nil; { No change in selection } end; - else - if (Key=EditKey) and (Shift=EditKeyShift) and (not ReadOnly) then - BeginEditing(Selected); - lNode := nil; { No change in selection } + if lNode <> nil then + MoveSelection(lNode, ([ssShift] * Shift) <> []); end; - - if lNode <> nil then - if tvoAllowMultiSelect in FOptions then - begin - if ([ssCtrl,ssShift] * Shift) <> [] then - lNode.MultiSelectGroup - else begin - FTreeNodes.SelectOnlyThis(lNode); - end; - end else - Selected := lNode; end; procedure TCustomTreeView.Loaded; @@ -4166,6 +4204,45 @@ end; end; +procedure TCustomTreeView.UpdateTooltip(X, Y: integer); +const + cMaxHintWidth = 800; //some guess value +var + Node: TTreeNode; + P: TPoint; + R: TRect; + SText: string; +begin + if FHintWnd=nil then + FHintWnd:=THintWindow.Create(Self); + + Node:=GetNodeAt(X, Y); + if Node=nil then + begin + FHintWnd.Hide; + exit; + end; + + //DisplayTextRight is increased by Indent/2 for l/r sides + if Node.DisplayTextRight - Indent div 4 < ClientWidth then + begin + FHintWnd.Hide; + exit; + end; + + SText:=Node.Text; + R:=FHintWnd.CalcHintRect(cMaxHintWidth, SText, nil); + + //show hint at edge of control, to not overlap node, to allow click node, + //also hint fontsize <> control fontsize + P:=Point(ClientWidth, Node.Top-ScrolledTop); + P:=ClientToScreen(P); + OffsetRect(R, P.X, P.Y); + + FHintWnd.ActivateHint(R, SText); + FHintWnd.Invalidate; //for Windows +end; + function TCustomTreeView.GetSelection: TTreeNode; begin if RightClickSelect and Assigned(FRClickNode) then @@ -4700,18 +4777,28 @@ Points: PPoint; Details: TThemedElementDetails; R: TRect; + PrevColor: TColor; + const + cShiftHorzArrow = 2; //paint horz arrow N pixels upper than MidY begin + HalfSize := FExpandSignSize div 2; + if not Odd(FExpandSignSize) then + Dec(HalfSize); + ALeft := MidX - HalfSize; + ATop := MidY - HalfSize; + ARight := ALeft + FExpandSignSize; + ABottom := ATop + FExpandSignSize; + + if Assigned(FOnCustomDrawArrow) then + begin + FOnCustomDrawArrow(Self, Rect(ALeft, ATop, ARight, ABottom), not CollapseSign); + Exit + end; + with Canvas do begin Pen.Color := FExpandSignColor; Pen.Style := psSolid; - HalfSize := FExpandSignSize shr 1; - if ((FExpandSignSize and 1) = 0) then - dec(HalfSize); - ALeft := MidX - HalfSize; - ATop := MidY - HalfSize; - ARight := ALeft + FExpandSignSize; - ABottom := ATop + FExpandSignSize; case ExpandSignType of tvestTheme: begin @@ -4733,7 +4820,8 @@ LineTo(MidX, R.Bottom - 2); end; end; - tvestArrow: + tvestArrow, + tvestArrowFill: begin // draw an arrow. down for collapse and right for expand R := Rect(ALeft, ATop, ARight, ABottom); @@ -4741,9 +4829,9 @@ if CollapseSign then begin // draw an arrow down - Points[0] := Point(R.Left, MidY); - Points[1] := Point(R.Right - 1, MidY); - Points[2] := Point(MidX, R.Bottom - 1); + Points[0] := Point(R.Left, MidY - cShiftHorzArrow); + Points[1] := Point(R.Right - 1, MidY - cShiftHorzArrow); + Points[2] := Point(MidX, R.Bottom - 1 - cShiftHorzArrow); end else begin // draw an arrow right @@ -4751,7 +4839,18 @@ Points[1] := Point(R.Right - 2, MidY); Points[2] := Point(MidX - 1, R.Bottom - 1); end; + + if ExpandSignType = tvestArrowFill then + begin + PrevColor := Brush.Color; + Brush.Color := ExpandSignColor; + end; Polygon(Points, 3, False); + if ExpandSignType = tvestArrowFill then + begin + Brush.Color := PrevColor; + end; + FreeMem(Points); end; end; @@ -4883,12 +4982,16 @@ else begin Canvas.Brush.Color := FSelectedColor; - Canvas.Font.Color := InvertColor(Brush.Color); + Canvas.Font.Color := IfThen(FSelectedFontColorUsed, FSelectedFontColor, InvertColor(FSelectedColor)); Canvas.FillRect(NodeRect); end else if not (tvoThemedDraw in Options) then - Canvas.Font.Color := Font.Color; + begin + Canvas.Brush.Color := FSelectedColor; + Canvas.Font.Color := IfThen(FSelectedFontColorUsed, FSelectedFontColor, InvertColor(FSelectedColor)); + Canvas.FillRect(NodeRect); + end; end else Details := ThemeServices.GetElementDetails(ttItemNormal); @@ -5143,8 +5246,7 @@ if Result = nil then begin NewNodeClass:=TTreeNode; - if Assigned(OnCreateNodeClass) then - OnCreateNodeClass(Self,NewNodeClass); + DoCreateNodeClass(NewNodeClass); Result := NewNodeClass.Create(Items); end; end; @@ -5166,10 +5268,26 @@ {$ENDIF} fMouseDownPos := Point(X,Y); FStates:=FStates-[tvsEditOnMouseUp,tvsSingleSelectOnMouseUp]; - if Button=mbRight then begin - if RightClickSelect then begin - Selected:=GetNodeAt(X,Y); - end; + + CursorNode := GetNodeAt(X, Y); + CursorNodeSelected := (CursorNode<>nil) + and (CursorNode.Selected + or ((tvoAllowMultiselect in Options) and CursorNode.MultiSelected)); + LogicalX:=X; + + //change selection on right click + if (Button = mbRight) and RightClickSelect and//right click + (([ssDouble, ssTriple, ssQuad] * Shift) = []) and//single or first of a multi click + not(ssCtrl in Shift) and//only when CTRL is not pressed + (CursorNode <> nil) and + (LogicalX >= CursorNode.DisplayStateIconLeft)//only after expand sign + then + begin + if not (tvoAllowMultiselect in Options) then + Selected := CursorNode + else + if not CursorNodeSelected then + Items.SelectOnlyThis(CursorNode); end; if not Focused and CanFocus then @@ -5177,67 +5295,67 @@ inherited MouseDown(Button, Shift, X, Y); + //CursorNode must be reassigned again - e.g. in OnMouseDown the node can be deleted or moved. CursorNode := GetNodeAt(X, Y); CursorNodeSelected := (CursorNode<>nil) and (CursorNode.Selected or ((tvoAllowMultiselect in Options) and CursorNode.MultiSelected)); - LogicalX:=X; - if ([ssDouble, ssTriple, ssQuad] * Shift) = [] then - begin - // single click or first of a multi click - if (Button = mbLeft) and (CursorNode <> nil) then + + //change selection on left click + if (Button = mbLeft) and//left click + (([ssDouble, ssTriple, ssQuad] * Shift) = []) and//single or first of a multi click + (CursorNode <> nil) then + begin + if CursorNode.HasChildren and ShowButtons and + (LogicalX >= CursorNode.DisplayExpandSignLeft) and + (LogicalX < CursorNode.DisplayExpandSignRight) then begin - if CursorNode.HasChildren and ShowButtons and - (LogicalX >= CursorNode.DisplayExpandSignLeft) and - (LogicalX < CursorNode.DisplayExpandSignRight) then - begin - // mousedown occured on expand sign -> expand/collapse - CursorNode.Expanded:=not CursorNode.Expanded; - end - else if LogicalX >= CursorNode.DisplayStateIconLeft then + // mousedown occured on expand sign -> expand/collapse + CursorNode.Expanded := not CursorNode.Expanded; + end + else if LogicalX >= CursorNode.DisplayStateIconLeft then + begin + // mousedown occured in text or icon + // -> select node and begin drag operation + {$IFDEF VerboseDrag} + DebugLn(['TCustomTreeView.MouseDown In Text ',DbgSName(Self),' MouseCapture=',MouseCapture]); + {$ENDIF} + if (Selected = CursorNode) and (LogicalX >= CursorNode.DisplayTextLeft) then + Include(FStates, tvsEditOnMouseUp); + if not (tvoAllowMultiselect in Options) then + Selected := CursorNode + else begin - // mousedown occured in text or icon - // -> select node and begin drag operation - {$IFDEF VerboseDrag} - DebugLn(['TCustomTreeView.MouseDown In Text ',DbgSName(Self),' MouseCapture=',MouseCapture]); - {$ENDIF} - if (Selected = CursorNode) and (LogicalX >= CursorNode.DisplayTextLeft) then - Include(FStates, tvsEditOnMouseUp); - if not (tvoAllowMultiselect in Options) then - Selected := CursorNode + if (ssShift in Shift) then + begin + Exclude(FStates,tvsEditOnMouseUp); + LockSelectionChangeEvent; + try + Items.MultiSelect(CursorNode, not(ssCtrl in Shift)); + finally + UnlockSelectionChangeEvent; + end; + end + else if (ssCtrl in Shift) then + begin + Exclude(FStates,tvsEditOnMouseUp); + CursorNode.MultiSelected:=not CursorNode.MultiSelected; + if CursorNode.MultiSelected then + FTreeNodes.FStartMultiSelected := CursorNode; + end else begin - if (ssShift in Shift) then - begin - Exclude(FStates,tvsEditOnMouseUp); - LockSelectionChangeEvent; - try - Items.ClearMultiSelection; - CursorNode.MultiSelectGroup; - finally - UnlockSelectionChangeEvent; - end; - end + if not CursorNodeSelected then + Items.SelectOnlyThis(CursorNode) else - if (ssCtrl in Shift) then - begin - Exclude(FStates,tvsEditOnMouseUp); - CursorNode.MultiSelected:=not CursorNode.MultiSelected; - end - else - begin - if not CursorNodeSelected then - Items.SelectOnlyThis(CursorNode) - else - Include(FStates, tvsSingleSelectOnMouseUp); - end; + Include(FStates, tvsSingleSelectOnMouseUp); end; end; end; end - else // multi click + else// multi click if not (tvoNoDoubleClickExpand in Options) and (ssDouble in Shift) - and (Button = mbLeft) and (CursorNode<>nil) then + and (Button = mbLeft) and (CursorNode<>nil) then CursorNode.Expanded := not CursorNode.Expanded; end; @@ -5246,6 +5364,8 @@ inherited MouseMove(Shift, x, y); if (tvoAutoInsertMark in FOptions) then UpdateInsertMark(X,Y); + if (tvoToolTips in FOptions) then + UpdateTooltip(X, Y); end; procedure TCustomTreeView.MouseUp(Button: TMouseButton; Shift: TShiftState; @@ -5278,10 +5398,102 @@ tvsEditOnMouseUp,tvsSingleSelectOnMouseUp]; end; +procedure TCustomTreeView.MoveEnd(ASelect: Boolean); +var + lNode: TTreeNode; +begin + lNode := Items.GetLastExpandedSubNode; + if lNode <> nil then + MoveSelection(lNode, ASelect); +end; + +procedure TCustomTreeView.MoveHome(ASelect: Boolean); +var + lNode: TTreeNode; +begin + lNode := Items.GetFirstVisibleNode; + if lNode <> nil then + MoveSelection(lNode, ASelect); +end; + +procedure TCustomTreeView.MovePageDown(ASelect: Boolean); +var + I: Integer; + lNode: TTreeNode; +begin + if tvoAllowMultiSelect in FOptions then + lNode := FTreeNodes.FLastMultiSelected + else + lNode := Selected; + if lNode = nil then + lNode := Items.GetFirstVisibleNode; + + if lNode <> nil then + begin + I := Pred(ClientHeight div DefaultItemHeight); + + while (I > 0) do + if lNode.GetNextExpanded <> nil then + begin + lNode := lNode.GetNextExpanded; + Dec(I); + end + else Break; + + end; + if lNode <> nil then + MoveSelection(lNode, ASelect); +end; + +procedure TCustomTreeView.MovePageUp(ASelect: Boolean); +var + I: Integer; + lNode: TTreeNode; +begin + if tvoAllowMultiSelect in FOptions then + lNode := FTreeNodes.FLastMultiSelected + else + lNode := Selected; + if lNode = nil then + lNode := Items.GetFirstVisibleNode; + + if lNode <> nil then + begin + I := Pred(ClientHeight div DefaultItemHeight); + + while (I > 0) do + if lNode.GetPrevExpanded <> nil then + begin + lNode := lNode.GetPrevExpanded; + Dec(I); + end + else Break; + + end; + if lNode <> nil then + MoveSelection(lNode, ASelect); +end; + +procedure TCustomTreeView.MoveSelection(ANewNode: TTreeNode; ASelect: Boolean); +begin + if tvoAllowMultiSelect in FOptions then + begin + if ASelect then + FTreeNodes.MultiSelect(ANewNode, False) + else begin + FTreeNodes.SelectOnlyThis(ANewNode); + end; + end else + Selected := ANewNode; + ANewNode.MakeVisible; +end; + procedure TCustomTreeView.MouseLeave; begin FStates:=FStates-[tvsDblClicked,tvsTripleClicked,tvsQuadClicked, tvsEditOnMouseUp,tvsSingleSelectOnMouseUp]; + if Assigned(FHintWnd) then + FHintWnd.Hide; inherited MouseLeave; end; @@ -5436,7 +5648,7 @@ // Scrolls to the current scroll bar position SB_THUMBPOSITION, SB_THUMBTRACK: ScrolledLeft := Msg.Pos; - + SB_ENDSCROLL: ;// Ends scrolling end; end; @@ -5794,7 +6006,7 @@ end; end; -procedure TCustomTreeView.MoveToNextNode; +procedure TCustomTreeView.MoveToNextNode(ASelect: Boolean); var ANode: TTreeNode; begin @@ -5803,17 +6015,14 @@ else ANode := Selected; if ANode <> nil then - ANode := ANode.GetNextVisible; - if (ANode = nil) and (Items.Count > 0) then + ANode := ANode.GetNextVisible + else ANode := FTreeNodes.GetFirstVisibleNode; if ANode <> nil then - if tvoAllowMultiSelect in FOptions then - FTreeNodes.SelectOnlyThis(ANode) - else - Selected := ANode; + MoveSelection(ANode, ASelect); end; -procedure TCustomTreeView.MoveToPrevNode; +procedure TCustomTreeView.MoveToPrevNode(ASelect: Boolean); var ANode: TTreeNode; begin @@ -5822,14 +6031,11 @@ else ANode := Selected; if ANode <> nil then - ANode := ANode.GetPrevVisible; - if (ANode = nil) and (Items.Count > 0) then - ANode := Items.GetLastExpandedSubNode; + ANode := ANode.GetPrevVisible + else + ANode := Items.GetFirstVisibleNode; if ANode <> nil then - if tvoAllowMultiSelect in FOptions then - FTreeNodes.SelectOnlyThis(ANode) - else - Selected := ANode; + MoveSelection(ANode, ASelect); end; function TCustomTreeView.StoreCurrentSelection: TStringList; diff -Nru lazarus-1.4.4+dfsg/lcl/include/winapih.inc lazarus-1.6+dfsg/lcl/include/winapih.inc --- lazarus-1.4.4+dfsg/lcl/include/winapih.inc 2015-02-20 20:43:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/winapih.inc 2015-11-11 13:05:03.000000000 +0000 @@ -320,7 +320,7 @@ function IndexToOverlayMask(iOverlay: UINT): UINT; inline; function InflateRect(var ARect: TRect; dx, dy: Integer): Boolean; -function IntersectRect(var DestRect: TRect; const SrcRect1, SrcRect2: TRect): Boolean; +function IntersectRect(var DestRect: TRect; const SrcRect1, SrcRect2: TRect): Boolean; inline; function IsCharAlphaNumeric(c : Char) : Boolean; function IsRectEmpty(const ARect: TRect): Boolean; @@ -341,7 +341,7 @@ function RGB(R, G, B : Byte) : TColorRef; inline; function ScrollWindow(hWnd: HWND; XAmount, YAmount: Integer; Rect, ClipRect: PRect): Boolean; inline; -function SetRect(var ARect : TRect; xLeft,yTop,xRight,yBottom : Integer) : Boolean; +function SetRect(var ARect : TRect; aLeft,aTop,aRight,aBottom : Integer) : Boolean; function SetRectEmpty(var ARect: TRect): Boolean; function SetScrollPos(Handle: HWND; nBar, nPos: Integer; bRedraw: Boolean): Integer; function SetScrollRange(Handle: HWND; nBar, nMinPos, nMaxPos: Integer; bRedraw: Boolean): Boolean; diff -Nru lazarus-1.4.4+dfsg/lcl/include/winapi.inc lazarus-1.6+dfsg/lcl/include/winapi.inc --- lazarus-1.4.4+dfsg/lcl/include/winapi.inc 2013-09-03 23:49:23.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/winapi.inc 2015-11-11 13:05:03.000000000 +0000 @@ -1583,15 +1583,13 @@ Params: Returns: ------------------------------------------------------------------------------} -function SetRect(var ARect : TRect; xLeft,yTop,xRight,yBottom : Integer) : Boolean; +function SetRect(var ARect : TRect; aLeft,aTop,aRight,aBottom : Integer) : Boolean; begin Result := True; - with ARect do begin - Left := xLeft; - Top := yTop; - Right := xRight; - Bottom := yBottom; - end; + ARect.Left := aLeft; + ARect.Top := aTop; + ARect.Right := aRight; + ARect.Bottom := aBottom; End; {------------------------------------------------------------------------------ @@ -1677,6 +1675,7 @@ MapID.Wnd := Wnd; MapID.nIDEvent := nIdEvent; + InfoPtr := nil; Existing := MTimerMap.GetData(MapID, ID); if Existing then begin diff -Nru lazarus-1.4.4+dfsg/lcl/include/wincontrol.inc lazarus-1.6+dfsg/lcl/include/wincontrol.inc --- lazarus-1.4.4+dfsg/lcl/include/wincontrol.inc 2015-09-16 21:35:37.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/include/wincontrol.inc 2015-12-23 13:12:36.000000000 +0000 @@ -51,6 +51,18 @@ and (AControl.AnchorSide[akTop].Control=nil); end; +function IsNotAligned(AControl: TControl; ASide: TAnchorKind): boolean; +begin + Result:=(AControl.Align=alNone); + if not Result then Exit; + if ASide in [akLeft, akRight] then + Result:=(AControl.Anchors*[akLeft, akRight]=[akLeft]) + and (AControl.AnchorSide[akLeft].Control=nil) + else + Result:=(AControl.Anchors*[akTop, akBottom]=[akTop]) + and (AControl.AnchorSide[akBottom].Control=nil); +end; + {------------------------------------------------------------------------------ Autosizing Helper classes -------------------------------------------------------------------------------} @@ -461,6 +473,7 @@ if (Side in CurAnchors) then begin // this side is anchored SiblingData:=ChildData.Sides[Side].CtrlData; + NewDist:=0; if (SiblingData=nil) or (SiblingData=Self) then begin // this side is anchored to parent // Note: SiblingData=nil can happen, if the reference control @@ -583,7 +596,7 @@ end; if FoundSides=[] then begin ChildData.Sides[Side].DistanceState[Direction]:=assdfUncomputable; - exit; + exit(crSuccess); end; // this side is anchored to a sibling and some needed sibling sides are valid @@ -837,7 +850,7 @@ Child:=WinControl.Controls[i]; ChildData:=Children[Child]; if not ChildData.Visible then continue; - if IsNotAligned(Child) then begin + if IsNotAligned(Child, Side) then begin // this is a non aligned control //DebugLn(['TAutoSizeCtrlData.DoMoveNonAlignedChilds Child=',DbgSName(Child),' Side=',dbgs(Side)]); if FindMinimum then begin @@ -857,14 +870,6 @@ end else begin SetFixedLeftTop(ChildData,Side,Child.GetSidePosition(Side)-MoveDiff); end; - {end else if (Child.Align=alNone) and (Side in Child.Anchors) then begin - // e.g. Align=alNone, Anchors=[akLeft,akTop,akRight] - if FindMinimum then begin - // no auto move - end else begin - // don't move, but use them for bounds computation - SetFixedLeftTop(ChildData,Side,Child.GetSidePosition(Side)); - end;} end else if (Child.Align=alCustom) and (Side in AnchorAlign[alCustom]) then begin if FindMinimum then begin @@ -1197,27 +1202,32 @@ Child:=WinControl.Controls[i]; ChildData:=Children[Child]; if not Child.IsControlVisible then continue; - if not IsNotAligned(Child) then continue; - if MoveNonAlignedChildrenLeft - and (ChildData.Sides[akLeft].DistanceState[assddLeftTop]=assdfValid) then - MoveNonAlignedToLeft:=Max(MoveNonAlignedToLeft, - Child.Left-ChildData.Sides[akLeft].Distance[assddLeftTop]); - { the below is only correct, if PreferredClientWidth is realized. - if (ChildData.Sides[akLeft].DistanceState[assddRightBottom]=assdfValid) then - MoveNonAlignedToLeft:=Min(MoveNonAlignedToLeft, - Child.Left - -(PreferredClientWidth - -ChildData.Sides[akLeft].Distance[assddRightBottom]));} - if MoveNonAlignedChildrenTop - and (ChildData.Sides[akTop].DistanceState[assddLeftTop]=assdfValid) then - MoveNonAlignedToTop:=Max(MoveNonAlignedToTop, - Child.Top-ChildData.Sides[akTop].Distance[assddLeftTop]); - { the below is only correct, if PreferredClientWidth is realized. - if (ChildData.Sides[akTop].DistanceState[assddRightBottom]=assdfValid) then - MoveNonAlignedToTop:=Min(MoveNonAlignedToTop, - Child.Top - -(PreferredClientHeight - -ChildData.Sides[akTop].Distance[assddRightBottom]));} + if IsNotAligned(Child, akLeft) then + begin + if MoveNonAlignedChildrenLeft + and (ChildData.Sides[akLeft].DistanceState[assddLeftTop]=assdfValid) then + MoveNonAlignedToLeft:=Max(MoveNonAlignedToLeft, + Child.Left-ChildData.Sides[akLeft].Distance[assddLeftTop]); + { the below is only correct, if PreferredClientWidth is realized. + if (ChildData.Sides[akLeft].DistanceState[assddRightBottom]=assdfValid) then + MoveNonAlignedToLeft:=Min(MoveNonAlignedToLeft, + Child.Left + -(PreferredClientWidth + -ChildData.Sides[akLeft].Distance[assddRightBottom]));} + end; + if IsNotAligned(Child, akTop) then + begin + if MoveNonAlignedChildrenTop + and (ChildData.Sides[akTop].DistanceState[assddLeftTop]=assdfValid) then + MoveNonAlignedToTop:=Max(MoveNonAlignedToTop, + Child.Top-ChildData.Sides[akTop].Distance[assddLeftTop]); + { the below is only correct, if PreferredClientWidth is realized. + if (ChildData.Sides[akTop].DistanceState[assddRightBottom]=assdfValid) then + MoveNonAlignedToTop:=Min(MoveNonAlignedToTop, + Child.Top + -(PreferredClientHeight + -ChildData.Sides[akTop].Distance[assddRightBottom]));} + end; end; if MoveNonAlignedToLeft=Low(integer) then MoveNonAlignedToLeft:=0; if MoveNonAlignedToTop=Low(integer) then MoveNonAlignedToTop:=0; @@ -3603,8 +3613,8 @@ {------------------------------------------------------------------------------ TWinControl CanFocus - - + + ------------------------------------------------------------------------------} function TWinControl.CanFocus: Boolean; var @@ -3628,6 +3638,35 @@ end; {------------------------------------------------------------------------------ + TWinControl CanSetFocus + + CanSetFocus should be prefered over CanFocus if used in CanSetFocus/SetFocus + combination + + if MyControl.CanSetFocus then + MyControl.SetFocus; + + because it checks also if the parent form can receive focus and thus prevents + the "cannot focus an invisible window" LCL exception. +------------------------------------------------------------------------------} +function TWinControl.CanSetFocus: Boolean; +var + Control: TWinControl; +begin + Control := Self; + while True do + begin + // test if all are visible and enabled + if not (Control.IsControlVisible and Control.Enabled) then + Exit(False); + if not Assigned(Control.Parent) then + Break; + Control := Control.Parent; + end; + Result := Control is TCustomForm;//the very top parent must be a form +end; + +{------------------------------------------------------------------------------ TWinControl CreateSubClass ------------------------------------------------------------------------------} procedure TWinControl.CreateSubClass(var Params: TCreateParams; @@ -4667,11 +4706,14 @@ MouseEventMessage.Y := P.Y; Control.Dispatch(MouseEventMessage); MouseMessage.Result := MouseEventMessage.Result; + Result := (MouseMessage.Result <> 0); end else + begin MouseMessage.Result := Control.Perform(MouseMessage.Msg, WParam(MouseMessage.Keys), LParam(Integer(PointToSmallPoint(P)))); - Result := True; + Result := True; + end; end; end; @@ -5856,6 +5898,7 @@ var ParentForm: TCustomForm; begin + Result := False; ParentForm := GetParentForm(Self); if ParentForm <> nil then begin @@ -6091,14 +6134,27 @@ AdjustSize; end; +procedure TWinControl.ScrollBy_WS(DeltaX, DeltaY: Integer); +begin + if HandleAllocated then + TWSWinControlClass(WidgetSetClass).ScrollBy(Self, DeltaX, DeltaY) + else + raise Exception.Create('TWinControl.ScrollBy_WS: Handle not allocated'); +end; + procedure TWinControl.ScrollBy(DeltaX, DeltaY: Integer); var i: Integer; begin // scroll inner controls - for i := 0 to ControlCount - 1 do - with Controls[i] do - SetBounds(Left + DeltaX, Top + DeltaY, Width, Height); + DisableAutoSizing; + try + for i := 0 to ControlCount - 1 do + with Controls[i] do + SetBounds(Left + DeltaX, Top + DeltaY, Width, Height); + finally + EnableAutoSizing; + end; end; {------------------------------------------------------------------------------ @@ -8016,7 +8072,7 @@ if not aControl.IsVisible then exit; if aControl<>Self then begin aControl.GetPreferredSize(w,h,true,true); - debugln([Prefix,'W ',DbgSName(aControl),' ',dbgs(aControl.BoundsRect),' Pref=',w,'x',h]); + debugln([Prefix,'Child ',DbgSName(aControl),' ',dbgs(aControl.BoundsRect),' Pref=',w,'x',h]); end; if aControl is TWinControl then for i:=0 to TWinControl(aControl).ControlCount-1 do @@ -8025,7 +8081,7 @@ function IsVerbose: boolean; begin - Result:=(Name='Edit1'); + Result:=(Name='MainScrollBox'); end; {$ENDIF} diff -Nru lazarus-1.4.4+dfsg/lcl/industrialbase.pp lazarus-1.6+dfsg/lcl/industrialbase.pp --- lazarus-1.4.4+dfsg/lcl/industrialbase.pp 2013-05-17 14:25:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/industrialbase.pp 2015-11-06 18:35:28.000000000 +0000 @@ -30,8 +30,7 @@ begin inherited Create(aOwner); FAntiAliasingMode := amDontCare; - with GetControlClassDefaultSize do - SetInitialBounds(0, 0, cx, cy); + SetInitialBounds(0, 0, GetControlClassDefaultSize.cx, GetControlClassDefaultSize.cy); ControlStyle := ControlStyle - [csSetCaption]; end; diff -Nru lazarus-1.4.4+dfsg/lcl/inipropstorage.pas lazarus-1.6+dfsg/lcl/inipropstorage.pas --- lazarus-1.4.4+dfsg/lcl/inipropstorage.pas 2014-09-29 18:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/inipropstorage.pas 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: inipropstorage.pas 46350 2014-09-29 18:53:52Z mattias $ } +{ $Id: inipropstorage.pas 49494 2015-07-04 23:08:00Z juha $ } { ***************************************************************************** This file is part of the Lazarus Component Library (LCL) @@ -14,7 +14,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, IniFiles, PropertyStorage; + Classes, SysUtils, Forms, IniFiles, LazUtf8; type { TCustomIniPropStorage } diff -Nru lazarus-1.4.4+dfsg/lcl/interfacebase.pp lazarus-1.6+dfsg/lcl/interfacebase.pp --- lazarus-1.4.4+dfsg/lcl/interfacebase.pp 2014-10-30 19:46:52.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfacebase.pp 2015-02-06 18:25:31.000000000 +0000 @@ -28,7 +28,7 @@ uses Types, Classes, SysUtils, Math, LCLStrConsts, LCLType, LCLProc, LMessages, - FPImage, GraphType, GraphMath, IntfGraphics, Themes; + FPImage, GraphType, GraphMath, IntfGraphics, Themes, LazUTF8; type PEventHandler = type Pointer; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoacaret.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoacaret.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoacaret.pas 2014-08-29 03:40:39.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoacaret.pas 2015-08-07 06:02:46.000000000 +0000 @@ -82,8 +82,8 @@ function ShowCaret(View: NSView): Boolean; function SetCaretPos(X, Y: Integer): Boolean; function GetCaretPos(var P: TPoint): Boolean; -function GetCarbonCaretRespondToFocus: Boolean; -procedure SetCarbonCaretRespondToFocus(Value: Boolean); +function GetCocoaCaretRespondToFocus: Boolean; +procedure SetCocoaCaretRespondToFocus(Value: Boolean); function DestroyCaret: Boolean; procedure DrawCaret; procedure DestroyGlobalCaret; @@ -208,12 +208,12 @@ end; end; -function GetCarbonCaretRespondToFocus: Boolean; +function GetCocoaCaretRespondToFocus: Boolean; begin Result := GlobalCaret.RespondToFocus; end; -procedure SetCarbonCaretRespondToFocus(Value: Boolean); +procedure SetCocoaCaretRespondToFocus(Value: Boolean); begin GlobalCaret.RespondToFocus := Value; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoadefines.inc lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoadefines.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoadefines.inc 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoadefines.inc 2015-09-08 06:33:52.000000000 +0000 @@ -0,0 +1,4 @@ +{%MainUnit cocoaint.pas} + +{.$define COCOA_USE_NATIVE_MODAL} + diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoa_extra.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoa_extra.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoa_extra.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoa_extra.pas 2015-09-08 06:33:52.000000000 +0000 @@ -0,0 +1,65 @@ +{ $Id: $} +{ -------------------------------------------- + cocoa_extra.pp - Cocoa headers not available in FPC + -------------------------------------------- + + This unit contains Cocoa headers which are not yet available in the latest FPC release + + ***************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** +} +unit cocoa_extra; + +{$mode objfpc}{$H+} +{$modeswitch objectivec1} + +interface + +uses + // rtl+ftl + Types, Classes, SysUtils, + CGGeometry, + // Libs + MacOSAll, CocoaAll; + +type + NSMenuFix = objccategory external (NSMenu) + function itemAtIndex(index: NSInteger): NSMenuItem; message 'itemAtIndex:'; + end; + + NSViewFix = objccategory external (NSView) + function fittingSize: NSSize; message 'fittingSize'; + end; + + NSButtonSoundExtensionsCategory = objccategory external (NSButton) + function intrinsicContentSize(): NSSize; message 'intrinsicContentSize'; + end; + + // The following dummy categories fix bugs in the Cocoa bindings available in FPC + // Remove them when the FPC binding parser is fixed. + // More details: + // http://wiki.freepascal.org/FPC_PasCocoa/Differences#Sending_messages_to_id + // http://wiki.lazarus.freepascal.org/FPC_PasCocoa#Category_declaration + NSBitmapImageRepFix = objccategory external(NSBitmapImageRep) + function initWithBitmapDataPlanes_pixelsWide_pixelsHigh__colorSpaceName_bytesPerRow_bitsPerPixel(planes: PPByte; width: NSInteger; height: NSInteger; bps: NSInteger; spp: NSInteger; alpha: Boolean; isPlanar_: Boolean; colorSpaceName_: NSString; rBytes: NSInteger; pBits: NSInteger): id; message 'initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:'; + function initWithBitmapDataPlanes_pixelsWide_pixelsHigh__colorSpaceName_bitmapFormat_bytesPerRow_bitsPerPixel(planes: PPByte; width: NSInteger; height: NSInteger; bps: NSInteger; spp: NSInteger; alpha: Boolean; isPlanar_: Boolean; colorSpaceName_: NSString; bitmapFormat_: NSBitmapFormat; rBytes: NSInteger; pBits: NSInteger): id; message 'initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:'; + end; + + NSGraphicsContextFix = objccategory external(NSGraphicsContext) + procedure setImageInterpolation(interpolation: NSImageInterpolation); message 'setImageInterpolation:'; + procedure setShouldAntialias(antialias: Boolean); message 'setShouldAntialias:'; + end; + + {// private since 10.5, doesn't seam to do anything in 10.10 + NSApplicationSetAppleMenu = objccategory external(NSApplication) + procedure setAppleMenu(AMenu: NSMenu); message 'setAppleMenu:'; + end;} + +implementation + +end. + diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoagdiobjects.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoagdiobjects.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoagdiobjects.pas 2014-10-20 06:01:39.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoagdiobjects.pas 2015-08-29 14:13:02.000000000 +0000 @@ -9,8 +9,12 @@ uses MacOSAll, // for CGContextRef - LCLtype, LCLProc, Graphics, Controls, + LCLtype, LCLProc, Graphics, Controls, fpcanvas, CocoaAll, CocoaProc, CocoaUtils, + cocoa_extra, + {$ifndef CocoaUseHITheme} + customdrawndrawers, customdrawn_mac, + {$endif} SysUtils, Classes, Contnrs, Types, Math; type @@ -101,7 +105,7 @@ public constructor Create(const AColor: TColor; ASolid, AGlobal: Boolean); reintroduce; procedure SetColor(const AColor: TColor; ASolid: Boolean); - procedure GetRGBA(AROP2: Integer; out AR, AG, AB, AA: Single); + procedure GetRGBA(AROP2: Integer; out AR, AG, AB, AA: CGFloat); function CreateNSColor: NSColor; property Red: Byte read FR write FR; @@ -132,6 +136,8 @@ constructor CreateDefault(const AGlobal: Boolean = False); constructor Create(const ALogBrush: TLogBrush; const AGlobal: Boolean = False); constructor Create(const AColor: NSColor; const AGlobal: Boolean = False); + constructor Create(const AColor: TColor; AStyle: TFPBrushStyle; APattern: TBrushPattern; + AGlobal: Boolean = False); destructor Destroy; override; procedure Apply(ADC: TCocoaContext; UseROP2: Boolean = True); @@ -141,13 +147,13 @@ const // use the same pen shapes that are used for carbon - CocoaDashStyle: Array [0..1] of Single = (3, 1); - CocoaDotStyle: Array [0..1] of Single = (1, 1); - CocoaDashDotStyle: Array [0..3] of Single = (3, 1, 1, 1); - CocoaDashDotDotStyle: Array [0..5] of Single = (3, 1, 1, 1, 1, 1); + CocoaDashStyle: Array [0..1] of CGFloat = (3, 1); + CocoaDotStyle: Array [0..1] of CGFloat = (1, 1); + CocoaDashDotStyle: Array [0..3] of CGFloat = (3, 1, 1, 1); + CocoaDashDotDotStyle: Array [0..5] of CGFloat = (3, 1, 1, 1, 1, 1); type - TCocoaDashes = array of Float32; + TCocoaDashes = array of CGFloat; { TCocoaPen } @@ -165,6 +171,10 @@ constructor Create(const ALogPen: TLogPen; const AGlobal: Boolean = False); constructor Create(dwPenStyle, dwWidth: DWord; const lplb: TLogBrush; dwStyleCount: DWord; lpStyle: PDWord); constructor Create(const ABrush: TCocoaBrush; const AGlobal: Boolean = False); + constructor Create(const AColor: TColor; AGlobal: Boolean); + constructor Create(const AColor: TColor; AStyle: TFPPenStyle; ACosmetic: Boolean; + AWidth: Integer; AMode: TFPPenMode; AEndCap: TFPPenEndCap; + AJoinStyle: TFPPenJoinStyle; AGlobal: Boolean = False); procedure Apply(ADC: TCocoaContext; UseROP2: Boolean = True); property Width: Integer read FWidth; @@ -190,6 +200,7 @@ constructor CreateDefault(AGlobal: Boolean = False); constructor Create(const ALogFont: TLogFont; AFontName: String; AGlobal: Boolean = False); reintroduce; overload; constructor Create(const AFont: NSFont; AGlobal: Boolean = False); overload; + destructor Destroy; override; class function CocoaFontWeightToWin32FontWeight(const CocoaFontWeight: Integer): Integer; static; property Antialiased: Boolean read FAntialiased; property Font: NSFont read FFont; @@ -230,6 +241,9 @@ procedure SetInfo(AWidth, AHeight, ADepth, ABitsPerPixel: Integer; AAlignment: TCocoaBitmapAlignment; AType: TCocoaBitmapType); + procedure CreateHandle(); + procedure FreeHandle(); + procedure ReCreateHandle(); function CreateSubImage(const ARect: TRect): CGImageRef; function CreateMaskImage(const ARect: TRect): CGImageRef; procedure PreMultiplyAlpha(); @@ -336,6 +350,14 @@ FBrush : TCocoaBrush; FPen : TCocoaPen; FRegion : TCocoaRegion; + // In Cocoa there is no way to enlarge a clip region :( + // see http://stackoverflow.com/questions/18648608/how-can-i-reset-or-clear-the-clipping-mask-associated-with-a-cgcontext + // So before every single clip operation we need to save the DC state + // And before every single clip operator or savedc/restoredc + // we need to restore the dc to clear the clipping region + // + // Also, because of bug 28015 FClipped cannot use ctx.Restore(Save)GraphicsState; + // it will use CGContextRestore(Save)GState(CGContext()); to save/restore DC instead FClipped: Boolean; FClipRegion: TCocoaRegion; FSavedDCList: TFPObjectList; @@ -366,6 +388,7 @@ procedure ClearClipping; public ctx: NSGraphicsContext; + isControlDC: Boolean; // control DCs should never be freed by ReleaseDC as the control will free it by itself constructor Create(AGraphicsContext: NSGraphicsContext); virtual; destructor Destroy; override; @@ -379,6 +402,7 @@ procedure InvertRectangle(X1, Y1, X2, Y2: Integer); procedure MoveTo(X, Y: Integer); procedure LineTo(X, Y: Integer); + function GetPixel(X,Y:integer): TColor; virtual; procedure SetPixel(X,Y:integer; AColor:TColor); virtual; procedure Polygon(const Points: array of TPoint; NumPts: Integer; Winding: boolean); procedure Polyline(const Points: array of TPoint; NumPts: Integer); @@ -435,6 +459,7 @@ public constructor Create; reintroduce; destructor Destroy; override; + function GetPixel(X,Y:integer): TColor; override; property Bitmap: TCocoaBitmap read FBitmap write SetBitmap; end; @@ -489,24 +514,6 @@ Result:=(p1.x=p2.x) and (p1.y=p2.y); end; -{ TCocoaBitmap } - -type - // The following dummy categories fix bugs in the Cocoa bindings available in FPC - // Remove them when the FPC binding parser is fixed. - // More details: - // http://wiki.freepascal.org/FPC_PasCocoa/Differences#Sending_messages_to_id - // http://wiki.lazarus.freepascal.org/FPC_PasCocoa#Category_declaration - NSBitmapImageRepFix = objccategory external(NSBitmapImageRep) - function initWithBitmapDataPlanes_pixelsWide_pixelsHigh__colorSpaceName_bytesPerRow_bitsPerPixel(planes: PPByte; width: NSInteger; height: NSInteger; bps: NSInteger; spp: NSInteger; alpha: Boolean; isPlanar_: Boolean; colorSpaceName_: NSString; rBytes: NSInteger; pBits: NSInteger): id; message 'initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:'; - function initWithBitmapDataPlanes_pixelsWide_pixelsHigh__colorSpaceName_bitmapFormat_bytesPerRow_bitsPerPixel(planes: PPByte; width: NSInteger; height: NSInteger; bps: NSInteger; spp: NSInteger; alpha: Boolean; isPlanar_: Boolean; colorSpaceName_: NSString; bitmapFormat_: NSBitmapFormat; rBytes: NSInteger; pBits: NSInteger): id; message 'initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:'; - end; - - NSGraphicsContextFix = objccategory external(NSGraphicsContext) - procedure setImageInterpolation(interpolation: NSImageInterpolation); message 'setImageInterpolation:'; - procedure setShouldAntialias(antialias: Boolean); message 'setShouldAntialias:'; - end; - { TCocoaFont } constructor TCocoaFont.CreateDefault(AGlobal: Boolean = False); @@ -609,6 +616,13 @@ Pool.release; end; +destructor TCocoaFont.Destroy; +begin + if Assigned(FFont) then + FFont.release; + inherited; +end; + class function TCocoaFont.CocoaFontWeightToWin32FontWeight(const CocoaFontWeight: Integer): Integer; static; begin case CocoaFontWeight of @@ -646,7 +660,7 @@ FA := ASolid; end; -procedure TCocoaColorObject.GetRGBA(AROP2: Integer; out AR, AG, AB, AA: Single); +procedure TCocoaColorObject.GetRGBA(AROP2: Integer; out AR, AG, AB, AA: CGFloat); var alpha:single; begin if FA then @@ -720,10 +734,6 @@ constructor TCocoaBitmap.Create(AWidth, AHeight, ADepth, ABitsPerPixel: Integer; AAlignment: TCocoaBitmapAlignment; AType: TCocoaBitmapType; AData: Pointer; ACopyData: Boolean); -var - HasAlpha: Boolean; - BitmapFormat: NSBitmapFormat; - pool:NSAutoReleasePool; begin inherited Create(False); {$ifdef VerboseBitmaps} @@ -749,39 +759,7 @@ FFreeData := False; end; - HasAlpha := AType in [cbtARGB, cbtRGBA]; - // Non premultiplied bitmaps can't be used for bitmap context - // So we need to pre-multiply ourselves, but only if we were allowed - // to copy the data, otherwise we might corrupt the original - if ACopyData then - PreMultiplyAlpha(); - BitmapFormat := 0; - if AType in [cbtARGB, cbtRGB] then - BitmapFormat := BitmapFormat or NSAlphaFirstBitmapFormat; - - //WriteLn('[TCocoaBitmap.Create] FSamplesPerPixel=', FSamplesPerPixel, - // ' FData=', DebugShowData()); - - // Create the associated NSImageRep - FImagerep := NSBitmapImageRep(NSBitmapImageRep.alloc.initWithBitmapDataPlanes_pixelsWide_pixelsHigh__colorSpaceName_bitmapFormat_bytesPerRow_bitsPerPixel( - @FData, // planes, BitmapDataPlanes - FWidth, // width, pixelsWide - FHeight,// height, PixelsHigh - FBitsPerSample,// bitsPerSample, bps - FSamplesPerPixel, // samplesPerPixel, spp - HasAlpha, // hasAlpha - False, // isPlanar - GetColorSpace, // colorSpaceName - BitmapFormat, // bitmapFormat - FBytesPerRow, // bytesPerRow - FBitsPerPixel //bitsPerPixel - )); - - // Create the associated NSImage - FImage := NSImage.alloc.initWithSize(NSMakeSize(AWidth, AHeight)); - pool := NSAutoreleasePool.alloc.init; - Image.addRepresentation(Imagerep); - pool.release; + CreateHandle(); end; constructor TCocoaBitmap.CreateDefault; @@ -791,7 +769,7 @@ destructor TCocoaBitmap.Destroy; begin - image.release; + FreeHandle(); if FFreeData then System.FreeMem(FData); if FOriginalData <> nil then System.FreeMem(FOriginalData); @@ -863,6 +841,66 @@ end; end; +procedure TCocoaBitmap.CreateHandle(); +var + HasAlpha: Boolean; + BitmapFormat: NSBitmapFormat; +begin + HasAlpha := FType in [cbtARGB, cbtRGBA]; + // Non premultiplied bitmaps can't be used for bitmap context + // So we need to pre-multiply ourselves, but only if we were allowed + // to copy the data, otherwise we might corrupt the original + if FFreeData then + PreMultiplyAlpha(); + BitmapFormat := 0; + if FType in [cbtARGB, cbtRGB] then + BitmapFormat := BitmapFormat or NSAlphaFirstBitmapFormat; + + //WriteLn('[TCocoaBitmap.Create] FSamplesPerPixel=', FSamplesPerPixel, + // ' FData=', DebugShowData()); + + // Create the associated NSImageRep + FImagerep := NSBitmapImageRep(NSBitmapImageRep.alloc.initWithBitmapDataPlanes_pixelsWide_pixelsHigh__colorSpaceName_bitmapFormat_bytesPerRow_bitsPerPixel( + @FData, // planes, BitmapDataPlanes + FWidth, // width, pixelsWide + FHeight,// height, PixelsHigh + FBitsPerSample,// bitsPerSample, bps + FSamplesPerPixel, // samplesPerPixel, spp + HasAlpha, // hasAlpha + False, // isPlanar + GetColorSpace, // colorSpaceName + BitmapFormat, // bitmapFormat + FBytesPerRow, // bytesPerRow + FBitsPerPixel //bitsPerPixel + )); + + // Create the associated NSImage + FImage := NSImage.alloc.initWithSize(NSMakeSize(FWidth, FHeight)); + //pool := NSAutoreleasePool.alloc.init; + Image.addRepresentation(Imagerep); + //pool.release; +end; + +procedure TCocoaBitmap.FreeHandle; +begin + if FImage <> nil then + begin + FImage.release; + FImage := nil; + end; + if FImageRep <> nil then + begin + FImageRep.release; + FImageRep := nil; + end; +end; + +procedure TCocoaBitmap.ReCreateHandle; +begin + FreeHandle(); + CreateHandle(); +end; + function TCocoaBitmap.CreateSubImage(const ARect: TRect): CGImageRef; begin if ImageRep = nil then @@ -992,7 +1030,7 @@ destructor TCocoaCursor.Destroy; begin - FBitmap.Free; + FreeAndNil(FBitmap); // FBitmap does not use reference counting mechanism... if not Standard then FCursor.release; inherited; @@ -1091,7 +1129,6 @@ FTextContainer.setLineFragmentPadding(0); FLayout.addTextContainer(FTextContainer); - FTextStorage.retain; LocalPool.release; FFont := DefaultFont; @@ -1103,6 +1140,8 @@ destructor TCocoaTextLayout.Destroy; begin + FLayout.release; + FTextContainer.release; FTextStorage.release; FFont.Release; inherited Destroy; @@ -1246,7 +1285,7 @@ FClipRegion.Clear else begin - ctx.saveGraphicsState; + CGContextSaveGState(CGContext()); FClipRegion.CombineWith(AClipRegion, Mode); FClipRegion.Apply(Self); FClipped := True; @@ -1262,40 +1301,6 @@ Result := crt_Error; end; -procedure TCocoaBitmapContext.SetBitmap(const AValue: TCocoaBitmap); -var pool:NSAutoReleasePool; -begin - if Assigned(ctx) then - begin - ctx.release; - ctx := nil; - end; - - if FBitmap <> nil then - begin - FBitmap := AValue; - pool:=NSAutoreleasePool.alloc.init; - ctx := NSGraphicsContext.graphicsContextWithBitmapImageRep(Bitmap.ImageRep); - ctx.retain; // extend live beyond NSAutoreleasePool - InitDraw(Bitmap.Width, Bitmap.Height); - pool.release; - end; -end; - -constructor TCocoaBitmapContext.Create; -begin - inherited Create(nil); - FBitmap := DefaultBitmap; -end; - -destructor TCocoaBitmapContext.Destroy; -begin - if Assigned(ctx) then - ctx.release; - inherited Destroy; -end; - - function TCocoaContext.GetTextColor: TColor; begin Result := FText.ForegroundColor; @@ -1522,7 +1527,7 @@ if FClipped then begin - ctx.saveGraphicsState; + CGContextSaveGState(CGContext()); FClipRegion.Apply(Self); end; end; @@ -1550,10 +1555,9 @@ if FClipped then begin - ctx.saveGraphicsState; + CGContextSaveGState(CGContext()); FClipRegion.Apply(Self); end; - end; function TCocoaContext.InitDraw(width, height:Integer): Boolean; @@ -1648,32 +1652,35 @@ FPenPos.y := Y; end; +function TCocoaContext.GetPixel(X,Y:integer): TColor; +begin + Result := 0; +end; procedure TCocoaContext.SetPixel(X,Y:integer; AColor:TColor); - var - cg: CGContextRef; - fillbrush: TCocoaBrush; - r:CGRect; - +var + cg: CGContextRef; + fillbrush: TCocoaBrush; + r:CGRect; begin - cg := CGContext; - if not Assigned(cg) then Exit; + cg := CGContext; + if not Assigned(cg) then Exit; - fillbrush:=TCocoaBrush.Create(ColorToNSColor(ColorRef(AColor))); - fillbrush.Apply(self); + fillbrush:=TCocoaBrush.Create(ColorToNSColor(ColorRef(AColor))); + fillbrush.Apply(self); - r.origin.x:=x; - r.origin.y:=y; - r.size.height:=1; - r.size.width:=1; + r.origin.x:=x; + r.origin.y:=y; + r.size.height:=1; + r.size.width:=1; - CGContextFillRect(cg,r); + CGContextFillRect(cg,r); - fillbrush.Free; + fillbrush.Free; - //restore the brush - if Assigned(FBrush) then - FBrush.Apply(Self); + //restore the brush + if Assigned(FBrush) then + FBrush.Apply(Self); end; procedure CGContextAddLCLPoints(cg: CGContextRef; const Points: array of TPoint;NumPts:Integer); @@ -1805,7 +1812,7 @@ var BrushSolid, FillBg: Boolean; begin - ctx.saveGraphicsState; + CGContextSaveGState(CGContext()); if Assigned(Rect) then begin @@ -1837,7 +1844,7 @@ FText.Draw(ctx, X, Y, FillBg, CharsDelta); end; - ctx.restoreGraphicsState; + CGContextRestoreGState(CGContext()); end; procedure TCocoaContext.Frame(const R: TRect); @@ -1847,12 +1854,18 @@ procedure TCocoaContext.Frame3d(var ARect: TRect; const FrameWidth: integer; const Style: TBevelCut); var + {$ifdef CocoaUseHITheme} I, D: Integer; DrawInfo: HIThemeGroupBoxDrawInfo; + {$else} + lCanvas: TCanvas; + lDrawer: TCDDrawer; + {$endif} begin + {$ifdef CocoaUseHITheme} if Style = bvRaised then begin - D := GetHiThemeMetric(kThemeMetricPrimaryGroupBoxContentInset); + GetThemeMetric(kThemeMetricPrimaryGroupBoxContentInset, D); // draw frame as group box DrawInfo.version := 0; @@ -1861,14 +1874,22 @@ for I := 1 to FrameWidth do begin - {$IFDEF NoCarbon} - // ToDo - {$ELSE} HIThemeDrawGroupBox(RectToCGRect(ARect), DrawInfo, CGContext, kHIThemeOrientationNormal); - {$ENDIF} InflateRect(ARect, -D, -D); end; end; + {$else} + lCanvas := TCanvas.Create; + try + lDrawer := GetDrawer(dsMacOSX); + lCanvas.Handle := HDC(Self); + lDrawer.DrawFrame3D(lCanvas, Types.Point(ARect.Left, ARect.Top), + Types.Size(ARect), FrameWidth, Style); + finally + lCanvas.Handle := 0; + lCanvas.Free; + end; + {$endif} end; procedure TCocoaContext.FrameRect(const ARect: TRect; const ABrush: TCocoaBrush); @@ -1920,11 +1941,13 @@ procedure TCocoaContext.ClearClipping; var Trans: CGAffineTransform; + cgc: CGContextRef; begin - if FClipped then + if FClipped then begin - Trans := CGContextGetCTM(CGContext); - ctx.RestoreGraphicsState; + cgc := CGContext(); + Trans := CGContextGetCTM(cgc); + CGContextRestoreGState(cgc); ApplyTransform(Trans); end; end; @@ -1959,14 +1982,13 @@ Bmp: TCocoaBitmap; MskImage: CGImageRef; ImgRect: CGRect; - begin Bmp := SrcDC.Bitmap; if not Assigned(Bmp) then Exit(False); if (Msk <> nil) and (Msk.Image <> nil) then - begin + begin MskImage := Msk.CreateMaskImage(Bounds(XMsk, YMsk, SrcWidth, SrcHeight)); ImgRect := CGRectMake(x, -y, SrcWidth, SrcHeight); CGContextSaveGState(CGContext); @@ -1980,16 +2002,15 @@ CGImageRelease(MskImage); CGContextRestoreGState(CGContext); - end - else - begin - // convert Y coodrinate of the source bitmap + Bmp.ReCreateHandle(); // Fix for bug 28102 + end + else + begin + // convert Y coordinate of the source bitmap YSrc := Bmp.Height - (SrcHeight + YSrc); Result := DrawImageRep(GetNSRect(X, Y, Width, Height),GetNSRect(XSrc, YSrc, SrcWidth, SrcHeight), bmp.ImageRep); - end; - - - + Bmp.ReCreateHandle(); // Fix for bug 28102 + end; end; {------------------------------------------------------------------------------ @@ -2087,17 +2108,83 @@ procedure TCocoaContext.DrawFocusRect(ARect: TRect); var + {$ifdef CocoaUseHITheme} AOutSet: SInt32; + {$else} + lCanvas: TCanvas; + lDrawer: TCDDrawer; + {$endif} begin - {$IFDEF NoCarbon} - // ToDo - {$ELSE} + {$ifdef CocoaUseHITheme} // LCL thinks that focus cannot be drawn outside focus rects, but carbon do that // => correct rect GetThemeMetric(kThemeMetricFocusRectOutset, AOutSet); InflateRect(ARect, -AOutSet, -AOutSet); HIThemeDrawFocusRect(RectToCGRect(ARect), True, CGContext, kHIThemeOrientationNormal); - {$ENDIF} + {$else} + lCanvas := TCanvas.Create; + try + lDrawer := GetDrawer(dsMacOSX); + lCanvas.Handle := HDC(Self); + lDrawer.DrawFocusRect(lCanvas, Types.Point(ARect.Left, ARect.Top), Types.Size(ARect)); + finally + lCanvas.Handle := 0; + lCanvas.Free; + end; + {$endif} +end; + +{ TCocoaBitmapContext } + +procedure TCocoaBitmapContext.SetBitmap(const AValue: TCocoaBitmap); +var pool:NSAutoReleasePool; +begin + if Assigned(ctx) then + begin + ctx.release; + ctx := nil; + end; + + // ToDo: Should we free the old FBitmap??? + FBitmap := AValue; + if FBitmap <> nil then + begin + pool:=NSAutoreleasePool.alloc.init; + ctx := NSGraphicsContext.graphicsContextWithBitmapImageRep(Bitmap.ImageRep); + ctx.retain; // extend life beyond NSAutoreleasePool + InitDraw(Bitmap.Width, Bitmap.Height); + pool.release; + end; +end; + +constructor TCocoaBitmapContext.Create; +begin + inherited Create(nil); + FBitmap := DefaultBitmap; +end; + +destructor TCocoaBitmapContext.Destroy; +begin + if Assigned(ctx) then + ctx.release; + inherited Destroy; +end; + +function TCocoaBitmapContext.GetPixel(X,Y:integer): TColor; +var + cg: CGContextRef; + color: NSColor; + R,G, B: Byte; +begin + Result := 0; + cg := CGContext; + if not Assigned(cg) then Exit; + + color := FBitmap.Imagerep.colorAtX_Y(X, Y); + R := Round(color.redComponent * $FF); + G := Round(color.greenComponent * $FF); + B := Round(color.blueComponent * $FF); + Result := Graphics.RGBToColor(R, G, B); end; { TCocoaRegion } @@ -2425,7 +2512,7 @@ end; var - AR, AG, AB, AA: Single; + AR, AG, AB, AA: CGFloat; AROP2: Integer; ADashes: TCocoaDashes; begin @@ -2569,6 +2656,58 @@ Dashes := nil; end; +constructor TCocoaPen.Create(const AColor: TColor; AGlobal: Boolean); +begin + inherited Create(AColor, True, AGlobal); + FStyle := PS_SOLID; + FWidth := 1; + FIsExtPen := False; + Dashes := nil; +end; + +constructor TCocoaPen.Create(const AColor: TColor; AStyle: TFPPenStyle; + ACosmetic: Boolean; AWidth: Integer; AMode: TFPPenMode; AEndCap: TFPPenEndCap; + AJoinStyle: TFPPenJoinStyle; AGlobal: Boolean); +begin + inherited Create(AColor, True, AGlobal); + + case AStyle of + psSolid: FStyle := PS_SOLID; + psDash: FStyle := PS_DASH; + psDot: FStyle := PS_DOT; + psDashDot: FStyle := PS_DASHDOT; + psDashDotDot: FStyle := PS_DASHDOTDOT; + psinsideFrame: FStyle := PS_INSIDEFRAME; + psPattern: FStyle := PS_USERSTYLE; + psClear: FStyle := PS_NULL; + end; + + if ACosmetic then + begin + FWidth := 1; + FIsGeometric := False; + end + else + begin + FIsGeometric := True; + + case AJoinStyle of + pjsRound: FJoinStyle := kCGLineJoinRound; + pjsBevel: FJoinStyle := kCGLineJoinBevel; + pjsMiter: FJoinStyle := kCGLineJoinMiter; + end; + + case AEndCap of + pecRound: FEndCap := kCGLineCapRound; + pecSquare: FEndCap := kCGLineCapSquare; + pecFlat: FEndCap := kCGLineCapButt; + end; + FWidth := Max(1, AWidth); + end; + FIsExtPen := False; + Dashes := nil; +end; + { TCocoaBrush } procedure DrawBitmapPattern(info: UnivPtr; c: CGContextRef); MWPascal; @@ -2599,9 +2738,12 @@ begin FillChar(ACallBacks, SizeOf(ACallBacks), 0); ACallBacks.drawPattern := @DrawBitmapPattern; + if (FBitmap <> nil) and (not FBitmap.Global) then FBitmap.Free; FBitmap := TCocoaBitmap.Create(8, 8, 1, 1, cbaByte, cbtMask, @HATCH_DATA[AHatch]); - FImage := MacOSAll.CGImageRef( FBitmap.ImageRep.CGImageForProposedRect_context_hints(nil, nil, nil)); + if FImage <> nil then CGImageRelease(FImage); + FImage := CGImageCreateCopy(MacOSAll.CGImageRef( FBitmap.ImageRep.CGImageForProposedRect_context_hints(nil, nil, nil))); FColored := False; + if FCGPattern <> nil then CGPatternRelease(FCGPattern); FCGPattern := CGPatternCreate(Self, GetCGRect(0, 0, 8, 8), CGAffineTransformIdentity, 8, 8, kCGPatternTilingConstantSpacing, Ord(FColored), ACallBacks); @@ -2617,9 +2759,12 @@ AHeight := ABitmap.Height; FillChar(ACallBacks, SizeOf(ACallBacks), 0); ACallBacks.drawPattern := @DrawBitmapPattern; + if (FBitmap <> nil) and (not FBitmap.Global) then FBitmap.Free; FBitmap := TCocoaBitmap.Create(ABitmap); - FImage := MacOSAll.CGImageRef( FBitmap.imageRep.CGImageForProposedRect_context_hints(nil, nil, nil)); + if FImage <> nil then CGImageRelease(FImage); + FImage := CGImageCreateCopy(MacOSAll.CGImageRef( FBitmap.imageRep.CGImageForProposedRect_context_hints(nil, nil, nil))); FColored := True; + if FCGPattern <> nil then CGPatternRelease(FCGPattern); FCGPattern := CGPatternCreate(Self, GetCGRect(0, 0, AWidth, AHeight), CGAffineTransformIdentity, AWidth, AHeight, kCGPatternTilingConstantSpacing, Ord(FColored), ACallBacks); @@ -2632,11 +2777,13 @@ begin FillChar(ACallBacks, SizeOf(ACallBacks), 0); ACallBacks.drawPattern := @DrawBitmapPattern; + if FImage <> nil then CGImageRelease(FImage); FImage := CGImageCreateCopy(MacOSAll.CGImageRef( AImage.CGImageForProposedRect_context_hints(nil, nil, nil))); FColored := True; Rect.origin.x := 0; Rect.origin.y := 0; Rect.size := CGSize(AImage.size); + if FCGPattern <> nil then CGPatternRelease(FCGPattern); FCGPattern := CGPatternCreate(Self, Rect, CGAffineTransformIdentity, Rect.size.width, Rect.size.height, kCGPatternTilingConstantSpacing, Ord(FColored), ACallBacks); @@ -2731,6 +2878,22 @@ end; end; +constructor TCocoaBrush.Create(const AColor: TColor; AStyle: TFPBrushStyle; APattern: TBrushPattern; + AGlobal: Boolean); +begin + case AStyle of + bsSolid: + begin + inherited Create(AColor, True, AGlobal); + end; + // bsHorizontal, bsVertical, bsFDiagonal, + // bsBDiagonal, bsCross, bsDiagCross, + // bsImage, bsPattern + else // bsClear + inherited Create(AColor, False, AGlobal); + end; +end; + procedure TCocoaBrush.Clear; begin if FColor <> nil then @@ -2745,7 +2908,7 @@ FCGPattern := nil; end; - FreeAndNil(FBitmap); + FreeAndNil(FBitmap); // FBitmap does not use refcounts... if FImage <> nil then begin @@ -2762,7 +2925,7 @@ procedure TCocoaBrush.Apply(ADC: TCocoaContext; UseROP2: Boolean = True); var - RGBA: array[0..3] of Single; + RGBA: array[0..3] of CGFloat; AROP2: Integer; APatternSpace: CGColorSpaceRef; BaseSpace: CGColorSpaceRef; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaint.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaint.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaint.pas 2014-09-10 05:39:41.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaint.pas 2015-11-11 18:05:10.000000000 +0000 @@ -21,22 +21,25 @@ {$mode objfpc}{$H+} {$modeswitch objectivec1} {$modeswitch objectivec2} +{$include cocoadefines.inc} interface uses // rtl+ftl - Types, Classes, SysUtils, Math, + Types, Classes, SysUtils, Math, contnrs, + // fcl-image + fpreadpng, fpwritepng, fpimage, fpreadbmp, fpwritebmp, // carbon bindings MacOSAll, // interfacebase InterfaceBase, GraphType, // private CocoaAll, CocoaPrivate, CocoaUtils, CocoaGDIObjects, - CocoaProc, + CocoaProc, cocoa_extra, CocoaWSMenus, CocoaWSForms, // LCL LCLStrConsts, LMessages, LCLMessageGlue, LCLProc, LCLIntf, LCLType, - Controls, Forms, Themes, + Controls, Forms, Themes, Menus, IntfGraphics, Graphics, CocoaWSFactory; type @@ -49,6 +52,22 @@ class function initWithFunc(afunc: TWSTimerProc): TCocoaTimerObject; message 'initWithFunc:'; end; + TCocoaClipboardDataType = (ccdtText, + ccdtCocoaStandard, // Formats supported natively by Mac OS X + ccdtBitmap, // BMPs need conversion to PNG to work with other Mac OS X apps + ccdtNonStandard { Formats that will only work in LCL apps } ); + + TCocoaClipboardData = class(TObject) // TClipboardFormat is a reference to a TClipboardData + public + MimeType: string; + CocoaFormat: NSString; // utilized for ccdtCocoaStandard and ccdtNonStandard + DataType: TCocoaClipboardDataType; + constructor Create(AMimeType: string; ACocoaFormat: NSString; ADataType: TCocoaClipboardDataType); + end; + + TAppDelegate = objcclass(NSObject, NSApplicationDelegateProtocol) + procedure application_openFiles(sender: NSApplication; filenames: NSArray); + end; { TCocoaWidgetSet } @@ -56,6 +75,7 @@ private FTerminating: Boolean; FNSApp: NSApplication; + FNSApp_Delegate: TAppDelegate; FCurrentCursor: HCursor; FCaptureControl: HWND; @@ -75,12 +95,27 @@ FSysColorBrushes: array[0..MAX_SYS_COLORS] of HBrush; + // Sandboxing + SandboxingOn: Boolean; + + // Clipboard + PrimarySelection: NSPasteboard; + SecondarySelection: NSPasteboard; + ClipboardFormats: TFPObjectList; // of TCocoaClipboardData + + procedure InitClipboard(); + procedure FreeClipboard(); + function GetClipboardDataForFormat(AFormat: TClipboardFormat): TCocoaClipboardData; + function PromptUser(const DialogCaption, DialogMessage: String; DialogType: longint; Buttons: PLongint; ButtonCount, DefaultIndex, EscapeResult: Longint): Longint; override; function GetAppHandle: THandle; override; function CreateThemeServices: TThemeServices; override; public + // modal session + CurModalForm: TCustomForm; + constructor Create; override; destructor Destroy; override; @@ -108,7 +143,8 @@ procedure FreeStockItems; procedure FreeSysColorBrushes; - procedure SetMainMenu(const AMenu: HMENU); + procedure SetMainMenu(const AMenu: HMENU; const ALCLMenu: TMenu); + function IsControlDisabledDueToModal(AControl: NSView): Boolean; {todo:} function DCGetPixel(CanvasHandle: HDC; X, Y: integer): TGraphicsColor; override; @@ -135,6 +171,10 @@ implementation +// NSCursor doesn't support any wait cursor, so we need to use a non-native one +// Not supporting it at all would result in crashes in Screen.Cursor := crHourGlass; +{$R ../../cursor_hourglass.res} + uses CocoaCaret, CocoaThemes; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoalclintf.inc lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoalclintf.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoalclintf.inc 2014-10-18 17:50:33.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoalclintf.inc 2015-11-11 18:05:10.000000000 +0000 @@ -1,8 +1,8 @@ {%MainUnit cocoaint.pas} {****************************************************************************** - All Carbon interface communication implementations. - This are the implementation of the overrides of the Carbon Interface for the + All Cocoa interface communication implementations. + This is the implementation of the overrides of the Cocoa Interface for the methods defined in the lcl/include/lclintf.inc @@ -24,12 +24,12 @@ {------------------------------------------------------------------------------ Method: CreateStandardCursor Params: ACursor - Cursor type - Returns: Cursor object in Carbon for the specified cursor type + Returns: Cursor object in Cocoa for the specified cursor type ------------------------------------------------------------------------------} function TCocoaWidgetSet.CreateStandardCursor(ACursor: SmallInt): HCursor; begin case ACursor of - crArrow : Result := HCursor(TCocoaCursor.CreateStandard(NSCursor.arrowCursor)); + crArrow, crDefault: Result := HCursor(TCocoaCursor.CreateStandard(NSCursor.arrowCursor)); crCross : Result := HCursor(TCocoaCursor.CreateStandard(NSCursor.crosshairCursor)); crIBeam : Result := HCursor(TCocoaCursor.CreateStandard(NSCursor.IBeamCursor)); crSizeNS, @@ -45,6 +45,10 @@ crHandPoint : Result := HCursor(TCocoaCursor.CreateStandard(NSCursor.pointingHandCursor)); crDrag : Result := HCursor(TCocoaCursor.CreateStandard(NSCursor.dragCopyCursor)); else + // We answer with Result=0 for crHourGlass because Cocoa does not provide any API + // to set the wait cursor. As a compromise to make cross-platform LCL apps written + // in Windows/Linux behave as expected without change, we answer 0 here and + // a non-native wait cursor will be utilized Result := 0; end; end; @@ -144,6 +148,26 @@ Result := DC = HDC(TCarbonDesignWindow(WindowHandle).GetDesignContext); end; *) + +procedure TCocoaWidgetSet.InitClipboard; +begin + PrimarySelection := NSPasteboard.pasteboardWithUniqueName(); + SecondarySelection := NSPasteboard.pasteboardWithUniqueName(); + ClipboardFormats := TFPObjectList.Create(True); +end; + +procedure TCocoaWidgetSet.FreeClipboard; +begin + PrimarySelection.releaseGlobally(); + SecondarySelection.releaseGlobally(); + ClipboardFormats.Free; +end; + +function TCocoaWidgetSet.GetClipboardDataForFormat(AFormat: TClipboardFormat): TCocoaClipboardData; +begin + Result := TCocoaClipboardData(AFormat); +end; + {------------------------------------------------------------------------------ Method: PromptUser Params: DialogCaption - Dialog caption @@ -154,11 +178,10 @@ DefaultIndex - Index of default button EscapeResult - Result value of escape Returns: The result value of pushed button - + Shows modal dialog with the specified caption, message and buttons and prompts user to push one. ------------------------------------------------------------------------------} - function TCocoaWidgetSet.PromptUser(const DialogCaption : string; const DialogMessage : string; DialogType : LongInt; @@ -212,7 +235,7 @@ begin if (Buttons[I] < Low(ButtonCaption)) or (Buttons[I] > High(ButtonCaption)) then begin - DebugLn('TCarbonWidgetSet.PromptUser Invalid button ID: ' + DbgS(Buttons[I])); + DebugLn('TCocoaWidgetSet.PromptUser Invalid button ID: ' + DbgS(Buttons[I])); Continue; end; @@ -245,7 +268,7 @@ end; {$IFDEF VerboseLCLIntf} - DebugLn('TCarbonWidgetSet.PromptUser Result: ' + DbgS(Result)); + DebugLn('TCocoaWidgetSet.PromptUser Result: ' + DbgS(Result)); {$ENDIF} end; {TCocoaWidgetSet.PromptUser} @@ -285,7 +308,7 @@ ADesc: Returns: - Describes the inner format utilized by Carbon and specific information + Describes the inner format utilized by Cocoa and specific information for the specified bitmap ------------------------------------------------------------------------------} function TCocoaWidgetSet.RawImage_DescriptionFromBitmap(ABitmap: HBITMAP; out ADesc: TRawImageDescription): Boolean; @@ -301,7 +324,7 @@ ADesc: - Pointer to raw image description Returns: True if success - Retrieves the standard image format utilized by Carbon + Retrieves the standard image format utilized by Cocoa ------------------------------------------------------------------------------} function TCocoaWidgetSet.RawImage_DescriptionFromDevice(ADC: HDC; out ADesc: TRawImageDescription): Boolean; begin diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaobject.inc lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaobject.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaobject.inc 2014-10-20 06:01:39.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaobject.inc 2015-11-11 18:05:10.000000000 +0000 @@ -1,7 +1,7 @@ {%MainUnit cocoaint.pas} {****************************************************************************** - All utility method implementations of the TCarbonWidgetSet class are here. + All utility method implementations of the TCocoaWidgetSet class are here. ****************************************************************************** @@ -22,18 +22,24 @@ Method: TCocoaWidgetSet.AppInit Params: ScreenInfo - Initialize Carbon Widget Set + Initialize Cocoa Widget Set ------------------------------------------------------------------------------} procedure TCocoaWidgetSet.AppInit(var ScreenInfo: TScreenInfo); +var + lDict: NSDictionary; begin {$IFDEF VerboseObject} DebugLn('TCocoaWidgetSet.AppInit'); {$ENDIF} - { Creates the application NSApp object } - FNsApp := NSApplication.sharedApplication; - + FNSApp := NSApplication.sharedApplication; + FNSApp_Delegate := TAppDelegate.alloc.init; + FNSApp.setDelegate(FNSApp_Delegate); + + // Sandboxing + lDict := NSProcessInfo.processInfo.environment; + SandboxingOn := lDict.valueForKey(NSStr('APP_SANDBOX_CONTAINER_ID')) <> nil; end; {------------------------------------------------------------------------------ @@ -110,6 +116,8 @@ ScreenContext := TCocoaContext.Create(DefaultContext.ctx); InitStockItems; + + InitClipboard(); // must be here otherwise clipboard calls before Application.Initialize crash end; {------------------------------------------------------------------------------ @@ -132,6 +140,8 @@ FreeSysColorBrushes; + FreeClipboard(); + // The CocoaCaret is based WidgetSet timer. // The GlobalCaret is freed in finalization section, which is called // after the destruction of the widgetset and will cause a failure. @@ -145,7 +155,7 @@ {------------------------------------------------------------------------------ Method: TCocoaWidgetSet.AppTerminate - Tells Carbon to halt the application + Tells Cocoa to halt the application ------------------------------------------------------------------------------} procedure TCocoaWidgetSet.AppTerminate; begin @@ -219,9 +229,14 @@ lcNeedMininimizeAppWithMainForm, lcApplicationTitle, lcFormIcon, + {$ifndef COCOA_USE_NATIVE_MODAL} lcModalWindow, + {$endif} lcReceivesLMClearCutCopyPasteReliably: Result := LCL_CAPABILITY_NO; + {$ifdef COCOA_USE_NATIVE_MODAL} + lcModalWindow, + {$endif} lcAntialiasingEnabledByDefault: Result := LCL_CAPABILITY_YES; else @@ -410,10 +425,65 @@ DeleteAndNilObject(FSysColorBrushes[i]); end; -procedure TCocoaWidgetSet.SetMainMenu(const AMenu: HMENU); +procedure TCocoaWidgetSet.SetMainMenu(const AMenu: HMENU; const ALCLMenu: TMenu); +var + i: Integer; + lCurItem: TMenuItem; + lMenuObj: NSObject; + lNSMenu: NSMenu absolute AMenu; begin if AMenu<>0 then - NSApp.setMainMenu(NSMenu(AMenu)); + begin + NSApp.setMainMenu(lNSMenu); + if (ALCLMenu = nil) or not ALCLMenu.HandleAllocated then Exit; + + // Some older docs say we should use setAppleMenu to obtain the Services/Hide/Quit items, + // but its now private and in 10.10 it doesn't seam to do anything + for i := 0 to ALCLMenu.Items.Count-1 do + begin + lCurItem := ALCLMenu.Items.Items[i]; + if not lCurItem.HandleAllocated or (lCurItem.Caption <> '') then Continue; + + lMenuObj := NSObject(lCurItem.Handle); + if lMenuObj.isKindOfClass_(TCocoaMenuItem) and NSMenuItem(lMenuObj).hasSubmenu and + (NSMenuItem(lMenuObj).submenu <> nil) then + begin + TCocoaMenuItem(lMenuObj).attachAppleMenuItems(); + //NSApp.setAppleMenu(NSMenuItem(lMenuObj).submenu); + Exit; + end; + {else if lMenuObj.isKindOfClass_(NSMenu) then + begin + //NSApp.setAppleMenu(NSMenu(lMenuObj)); + Exit; + end;} + end; + + // for modal windows work around bug, but doesn't work :( + {$ifdef COCOA_USE_NATIVE_MODAL} + {if CurModalForm <> nil then + for i := 0 to lNSMenu.numberOfItems()-1 do + begin + lNSMenu.itemAtIndex(i).setTarget(TCocoaWSCustomForm.GetWindowFromHandle(CurModalForm)); + end;} + {$endif} + end; +end; + +function TCocoaWidgetSet.IsControlDisabledDueToModal(AControl: NSView): Boolean; +var + lNSObj: NSWindow; + lNSWin: TCocoaWindow absolute lNSObj; +begin + Result := False; + {$ifndef COCOA_USE_NATIVE_MODAL} + if CurModalForm = nil then Exit; + lNSObj := AControl.window(); + if lNSObj = nil then Exit; + if not lNSObj.isKindOfClass_(TCocoaWindow) then Exit; + if lNSWin.LCLForm = CurModalForm then Exit; + Result := True; + {$endif} end; {------------------------------------------------------------------------------ @@ -432,13 +502,15 @@ function TCocoaWidgetSet.DCGetPixel(CanvasHandle: HDC; X, Y: integer): TGraphicsColor; begin - Result:=0; + Result := 0; + if CanvasHandle <> 0 then + Result := TCocoaContext(CanvasHandle).GetPixel(X,Y); end; procedure TCocoaWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor); begin if CanvasHandle <> 0 then - TCocoaContext(CanvasHandle).SetPixel(X,Y,AColor); + TCocoaContext(CanvasHandle).SetPixel(X,Y,AColor); end; procedure TCocoaWidgetSet.DCRedraw(CanvasHandle: HDC); @@ -489,10 +561,34 @@ Result.func:=afunc; end; +{ TCocoaClipboardData } + +constructor TCocoaClipboardData.Create(AMimeType: string; ACocoaFormat: NSString; ADataType: TCocoaClipboardDataType); +begin + MimeType := AMimeType; + CocoaFormat := ACocoaFormat; + DataType := ADataType; +end; + +procedure TAppDelegate.application_openFiles(sender: NSApplication; filenames: NSArray); +var + lFiles: array of string; + lNSStr: NSString; + i: Integer; +begin + SetLength(lFiles, filenames.count); + for i := 0 to filenames.count-1 do + begin + lNSStr := NSString(filenames.objectAtIndex(i)); + lFiles[i] := NSStringToString(lNSStr); + end; + Application.IntfDropFiles(lFiles); +end; + {------------------------------------------------------------------------------ - Method: TCarbonWidgetSet.RawImage_DescriptionFromCarbonBitmap + Method: TCocoaWidgetSet.RawImage_DescriptionFromCocoaBitmap - Creates a rawimage description for a carbonbitmap + Creates a rawimage description for a cocoabitmap ------------------------------------------------------------------------------} function TCocoaWidgetSet.RawImage_DescriptionFromCocoaBitmap(out ADesc: TRawImageDescription; ABitmap: TCocoaBitmap): Boolean; var @@ -508,11 +604,8 @@ ADesc.Format := ricfRGBA; end; - with ABitmap.image.size do - begin - ADesc.Width := Round(width); - ADesc.Height := Round(Height); - end; + ADesc.Width := Round(ABitmap.image.size.width); + ADesc.Height := Round(ABitmap.image.size.Height); //ADesc.PaletteColorCount := 0; @@ -612,7 +705,7 @@ if AMask.Depth > 1 then begin - DebugLn('[WARNING] RawImage_FromCarbonBitmap: AMask.Depth > 1'); + DebugLn('[WARNING] RawImage_FromCocoaBitmap: AMask.Depth > 1'); Exit; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaprivate.pp lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaprivate.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaprivate.pp 2014-12-08 04:05:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaprivate.pp 2015-11-15 20:00:10.000000000 +0000 @@ -22,6 +22,7 @@ {.$DEFINE COCOA_DEBUG_LISTVIEW} {.$DEFINE COCOA_SPIN_DEBUG} {.$DEFINE COCOA_SPINEDIT_INSIDE_CONTAINER} +{.$DEFINE COCOA_SUPERVIEW_HEIGHT} interface @@ -32,8 +33,8 @@ // Libs MacOSAll, CocoaAll, CocoaUtils, CocoaGDIObjects, // LCL - LMessages, LCLMessageGlue, ExtCtrls, Graphics, - LCLType, LCLProc, Controls, ComCtrls, Spin; + LMessages, LCLMessageGlue, ExtCtrls, Graphics, Forms, + LCLType, LCLProc, Controls, ComCtrls, Spin, StdCtrls; const SPINEDIT_DEFAULT_STEPPER_WIDTH = 15; @@ -46,22 +47,24 @@ ICommonCallback = interface // mouse events - function MouseUpDownEvent(Event: NSEvent): Boolean; + function MouseUpDownEvent(Event: NSEvent; AForceAsMouseUp: Boolean = False): Boolean; procedure MouseClick; function MouseMove(Event: NSEvent): Boolean; - function KeyEvent(Event: NSEvent): Boolean; + function KeyEvent(Event: NSEvent; AForceAsKeyDown: Boolean = False): Boolean; function scrollWheel(Event: NSEvent): Boolean; // size, pos events procedure frameDidChange; procedure boundsDidChange; // misc events procedure Draw(ctx: NSGraphicsContext; const bounds, dirty: NSRect); + procedure DrawBackground(ctx: NSGraphicsContext; const bounds, dirty: NSRect); function ResetCursorRects: Boolean; procedure BecomeFirstResponder; procedure ResignFirstResponder; procedure DidBecomeKeyNotification; procedure DidResignKeyNotification; procedure SendOnChange; + procedure SendOnTextChanged; // non event methods function DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult; function GetPropStorage: TStringList; @@ -108,7 +111,6 @@ { LCLViewExtension } LCLViewExtension = objccategory(NSView) - function lclInitWithCreateParams(const AParams: TCreateParams): id; message 'lclInitWithCreateParams:'; function lclIsVisible: Boolean; message 'lclIsVisible'; reintroduce; @@ -193,28 +195,6 @@ property Enabled: Boolean read GetEnabled write SetEnabled; end; - IMenuItemCallback = interface(ICommonCallBack) - procedure ItemSelected; - end; - - { TCocoaMenu } - - TCocoaMenu = objcclass(NSMenu) - public - procedure lclItemSelected(sender: id); message 'lclItemSelected:'; - function lclIsHandle: Boolean; override; - end; - - { TCocoaMenuItem } - - TCocoaMenuItem = objcclass(NSMenuItem) - public - menuItemCallback: IMenuItemCallback; - procedure lclItemSelected(sender: id); message 'lclItemSelected:'; - function lclGetCallback: IMenuItemCallback; override; - function lclIsHandle: Boolean; override; - end; - { TCocoaButton } TCocoaButton = objcclass(NSButton) @@ -245,7 +225,9 @@ procedure mouseExited(event: NSEvent); override; procedure mouseMoved(event: NSEvent); override; procedure resetCursorRects; override; + // lcl overrides function lclIsHandle: Boolean; override; + procedure lclSetFrame(const r: TRect); override; end; TCocoaFieldEditor = objcclass; @@ -264,6 +246,9 @@ procedure lclClearCallback; override; procedure resetCursorRects; override; function lclIsHandle: Boolean; override; + // key + //procedure keyDown(event: NSEvent); override; -> keyDown doesn't work in NSTextField + procedure keyUp(event: NSEvent); override; end; { TCocoaSecureTextField } @@ -279,6 +264,9 @@ function resignFirstResponder: Boolean; override; procedure resetCursorRects; override; function lclIsHandle: Boolean; override; + // key + //procedure keyDown(event: NSEvent); override; -> keyDown doesn't work in NSTextField + procedure keyUp(event: NSEvent); override; end; @@ -287,6 +275,7 @@ TCocoaTextView = objcclass(NSTextView) public callback: ICommonCallback; + FEnabled: Boolean; function acceptsFirstResponder: Boolean; override; function becomeFirstResponder: Boolean; override; function resignFirstResponder: Boolean; override; @@ -298,6 +287,21 @@ procedure keyDown(event: NSEvent); override; procedure keyUp(event: NSEvent); override; procedure flagsChanged(event: NSEvent); override; + // mouse + procedure mouseDown(event: NSEvent); override; + procedure mouseUp(event: NSEvent); override; + {procedure rightMouseDown(event: NSEvent); override; + procedure rightMouseUp(event: NSEvent); override; + procedure otherMouseDown(event: NSEvent); override; + procedure otherMouseUp(event: NSEvent); override; + + procedure mouseDragged(event: NSEvent); override; + procedure mouseEntered(event: NSEvent); override; + procedure mouseExited(event: NSEvent); override; + procedure mouseMoved(event: NSEvent); override;} + // + function lclIsEnabled: Boolean; override; + procedure lclSetEnabled(AEnabled: Boolean); override; end; { TCocoaPanel } @@ -323,8 +327,10 @@ procedure mouseUp(event: NSEvent); override; procedure rightMouseDown(event: NSEvent); override; procedure rightMouseUp(event: NSEvent); override; + procedure rightMouseDragged(event: NSEvent); override; procedure otherMouseDown(event: NSEvent); override; procedure otherMouseUp(event: NSEvent); override; + procedure otherMouseDragged(event: NSEvent); override; procedure mouseDragged(event: NSEvent); override; procedure mouseEntered(event: NSEvent); override; procedure mouseExited(event: NSEvent); override; @@ -355,6 +361,7 @@ procedure windowDidMove(notification: NSNotification); message 'windowDidMove:'; public callback: IWindowCallback; + LCLForm: TCustomForm; procedure dealloc; override; function acceptsFirstResponder: Boolean; override; function canBecomeKeyWindow: Boolean; override; @@ -367,8 +374,10 @@ procedure mouseUp(event: NSEvent); override; procedure rightMouseDown(event: NSEvent); override; procedure rightMouseUp(event: NSEvent); override; + procedure rightMouseDragged(event: NSEvent); override; procedure otherMouseDown(event: NSEvent); override; procedure otherMouseUp(event: NSEvent); override; + procedure otherMouseDragged(event: NSEvent); override; procedure mouseDragged(event: NSEvent); override; procedure mouseEntered(event: NSEvent); override; procedure mouseExited(event: NSEvent); override; @@ -376,6 +385,11 @@ procedure scrollWheel(event: NSEvent); override; procedure sendEvent(event: NSEvent); override; function lclIsHandle: Boolean; override; + // NSDraggingDestinationCategory + function draggingEntered(sender: NSDraggingInfoProtocol): NSDragOperation; override; + function performDragOperation(sender: NSDraggingInfoProtocol): Boolean; override; + // menu support + procedure lclItemSelected(sender: id); message 'lclItemSelected:'; end; { TCocoaCustomControl } @@ -394,8 +408,10 @@ procedure mouseUp(event: NSEvent); override; procedure rightMouseDown(event: NSEvent); override; procedure rightMouseUp(event: NSEvent); override; + procedure rightMouseDragged(event: NSEvent); override; procedure otherMouseDown(event: NSEvent); override; procedure otherMouseUp(event: NSEvent); override; + procedure otherMouseDragged(event: NSEvent); override; procedure mouseDragged(event: NSEvent); override; procedure mouseEntered(event: NSEvent); override; procedure mouseExited(event: NSEvent); override; @@ -470,7 +486,9 @@ protected FOwner: TCocoaComboBox; FReadOnlyOwner: TCocoaReadOnlyComboBox; + FPreChangeListCount: Integer; procedure Changed; override; + procedure Changing; override; public // Pass only 1 owner and nil for the other ones constructor Create(AOwner: TCocoaComboBox; AReadOnlyOwner: TCocoaReadOnlyComboBox); @@ -510,9 +528,11 @@ TCocoaReadOnlyComboBox = objcclass(NSPopUpButton) public + Owner: TCustomComboBox; callback: IComboboxCallBack; list: TCocoaComboBoxList; resultNS: NSString; //use to return values to combo + lastSelectedItemIndex: Integer; // -1 means invalid or none selected function acceptsFirstResponder: Boolean; override; function becomeFirstResponder: Boolean; override; function resignFirstResponder: Boolean; override; @@ -521,6 +541,7 @@ procedure lclClearCallback; override; procedure resetCursorRects; override; function lclIsHandle: Boolean; override; + procedure comboboxAction(sender: id); message 'comboboxAction:'; end; { TCocoaScrollBar } @@ -528,6 +549,9 @@ TCocoaScrollBar = objcclass(NSScroller) public callback: ICommonCallback; + LCLScrollBar: TCustomScrollBar; + procedure actionScrolling(sender: NSObject); message 'actionScrolling:'; + function IsHorizontal: Boolean; message 'IsHorizontal'; function acceptsFirstResponder: Boolean; override; function becomeFirstResponder: Boolean; override; function resignFirstResponder: Boolean; override; @@ -551,7 +575,7 @@ { TCocoaListBox } - TCocoaListBox = objcclass(NSTableView, NSTableViewDelegateProtocol, NSTableViewDataSourceProtocol ) + TCocoaListBox = objcclass(NSTableView, NSTableViewDelegateProtocol, NSTableViewDataSourceProtocol) public callback: IListBoxCallback; resultNS: NSString; @@ -593,12 +617,38 @@ function lclIsHandle: Boolean; override; end; + { TCocoaCheckListBox } + + TCocoaCheckListBox = objcclass(TCocoaListBox) + public + // LCL functions + AllowMixedState: Boolean; + class function LCLCheckStateToCocoa(ALCLState: TCheckBoxState): NSInteger; message 'LCLCheckStateToCocoa:'; + class function CocoaCheckStateToLCL(ACocoaState: NSInteger): TCheckBoxState; message 'CocoaCheckStateToLCL:'; + function CheckListBoxGetNextState(ACurrent: TCheckBoxState): TCheckBoxState; message 'CheckListBoxGetNextState:'; + function GetCocoaState(const AIndex: integer): NSInteger; message 'GetCocoaState:'; + procedure SetCocoaState(const AIndex: integer; AState: NSInteger); message 'SetCocoaState:AState:'; + function GetState(const AIndex: integer): TCheckBoxState; message 'GetState:'; + procedure SetState(const AIndex: integer; AState: TCheckBoxState); message 'SetState:AState:'; + // Cocoa functions + function tableView_objectValueForTableColumn_row(tableView: NSTableView; + objectValueForTableColumn: NSTableColumn; row: NSInteger):id; + override; + procedure tableView_setObjectValue_forTableColumn_row(tableView: NSTableView; + object_: id; tableColumn: NSTableColumn; row: NSInteger); + message 'tableView:setObjectValue:forTableColumn:row:'; + function tableView_dataCellForTableColumn_row(tableView: NSTableView; + tableColumn: NSTableColumn; row: NSInteger): NSCell; + message 'tableView:dataCellForTableColumn:row:'; + end; + { TCocoaTabPage } TCocoaTabPage = objcclass(NSTabViewItem) public callback: ICommonCallback; LCLPage: TCustomPage; + LCLParent: TCustomTabControl; function lclGetCallback: ICommonCallback; override; procedure lclClearCallback; override; function lclFrame: TRect; override; @@ -622,7 +672,8 @@ TCocoaTabPageView = objcclass(TCocoaCustomControl) public - tabview: TCocoaTabControl; + tabView: TCocoaTabControl; + tabPage: TCocoaTabPage; end; { TListView } @@ -825,6 +876,8 @@ implementation +uses CocoaWSComCtrls, CocoaInt; + {$I mackeycodes.inc} procedure SetViewDefaults(AView: NSView); @@ -847,6 +900,9 @@ Result := TCocoaTabPageView(view.superview).tabview.contentRect.size.height else Result := view.superview.frame.size.height; + {$IFDEF COCOA_SUPERVIEW_HEIGHT} + WriteLn(Format('GetNSViewSuperViewHeight Result=%f', [Result])); + {$ENDIF} end; { TCocoaWindowContent } @@ -1046,6 +1102,12 @@ inherited rightMouseDown(event); end; +procedure TCocoaPanel.rightMouseDragged(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited rightMouseDragged(event); +end; + procedure TCocoaPanel.otherMouseDown(event: NSEvent); begin if not Assigned(callback) or not callback.MouseUpDownEvent(event) then @@ -1058,6 +1120,12 @@ inherited otherMouseUp(event); end; +procedure TCocoaPanel.otherMouseDragged(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited otherMouseDown(event); +end; + procedure TCocoaPanel.mouseDragged(event: NSEvent); begin if not Assigned(callback) or not callback.MouseMove(event) then @@ -1268,6 +1336,12 @@ inherited rightMouseDown(event); end; +procedure TCocoaWindow.rightMouseDragged(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited rightMouseDragged(event); +end; + procedure TCocoaWindow.otherMouseDown(event: NSEvent); begin if not Assigned(callback) or not callback.MouseUpDownEvent(event) then @@ -1280,6 +1354,12 @@ inherited otherMouseUp(event); end; +procedure TCocoaWindow.otherMouseDragged(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseUpDownEvent(event) then + inherited otherMouseDown(event); +end; + procedure TCocoaWindow.mouseDragged(event: NSEvent); begin if not Assigned(callback) or not callback.MouseMove(event) then @@ -1304,8 +1384,8 @@ procedure TCocoaWindow.scrollWheel(event: NSEvent); begin -if not Assigned(callback) or not callback.scrollWheel(event) then - inherited scrollWheel(event); + if not Assigned(callback) or not callback.scrollWheel(event) then + inherited scrollWheel(event); end; procedure TCocoaWindow.sendEvent(event: NSEvent); @@ -1341,6 +1421,64 @@ inherited sendEvent(event); end; +function TCocoaWindow.draggingEntered(sender: NSDraggingInfoProtocol): NSDragOperation; +var + lTarget: TCustomForm = nil; +begin + Result := NSDragOperationNone; + if (callback <> nil) and (callback.GetTarget() <> nil) and (callback.GetTarget() is TCustomForm) then + lTarget := TCustomForm(callback.GetTarget()); + if (lTarget <> nil) and (lTarget.OnDropFiles <> nil) then + begin + Result := sender.draggingSourceOperationMask(); + end; +end; + +function TCocoaWindow.performDragOperation(sender: NSDraggingInfoProtocol): Boolean; +var + draggedURLs{, lClasses}: NSArray; + lFiles: array of string; + i: Integer; + pboard: NSPasteboard; + lNSStr: NSString; + //lClass: pobjc_class; +begin + Result := False; + pboard := sender.draggingPasteboard(); + + // Multiple strings + draggedURLs := pboard.propertyListForType(NSFilenamesPboardType); + SetLength(lFiles, draggedURLs.count); + for i := 0 to draggedURLs.count-1 do + begin + lNSStr := NSString(draggedURLs.objectAtIndex(i)); + lFiles[i] := NSStringToString(lNSStr); + end; + + // Multiple URLs -> Results in strange URLs with file:// protocol + {if pboard.types.containsObject(NSURLPboardType) then + begin + lClass := NSURL.classClass; + lClasses := NSArray.arrayWithObjects_count(@lClass, 1); + draggedURLs := pboard.readObjectsForClasses_options(lClasses, nil); + SetLength(lFiles, draggedURLs.count); + for i := 0 to draggedURLs.count-1 do + begin + lNSStr := NSURL(draggedURLs.objectAtIndex(i)).absoluteString; + lFiles[i] := NSStringToString(lNSStr); + end; + end;} + + if (Length(lFiles) > 0) and (callback <> nil) and (callback.GetTarget() <> nil) then + TCustomForm(callback.GetTarget()).IntfDropFiles(lFiles); + Result := True; +end; + +procedure TCocoaWindow.lclItemSelected(sender: id); +begin + +end; + { TCocoaScrollView } function TCocoaScrollView.lclIsHandle: Boolean; @@ -1385,6 +1523,30 @@ { TCocoaScrollBar } +procedure TCocoaScrollBar.actionScrolling(sender: NSObject); +var + LMScroll: TLMScroll; + b: Boolean; +begin + FillChar(LMScroll{%H-}, SizeOf(LMScroll), #0); + LMScroll.ScrollBar := PtrUInt(Self); + + if IsHorizontal() then + LMScroll.Msg := LM_HSCROLL + else + LMScroll.Msg := LM_VSCROLL; + + LMScroll.Pos := Round(floatValue * LCLScrollBar.Max); + LMScroll.ScrollCode := SIF_POS; + + LCLMessageGlue.DeliverMessage(LCLScrollBar, LMScroll); +end; + +function TCocoaScrollBar.IsHorizontal: Boolean; +begin + Result := frame.size.width > frame.size.height; +end; + function TCocoaScrollBar.lclIsHandle: Boolean; begin Result := True; @@ -1474,6 +1636,29 @@ Result := True; end; +procedure TCocoaButton.lclSetFrame(const r: TRect); +var + lBtnHeight, lDiff: Integer; + lRoundBtnSize: NSSize; +begin + // NSTexturedRoundedBezelStyle should be the preferred style, but it has a fixed height! + // fittingSize is 10.7+ + if respondsToSelector(objcselector('fittingSize')) then + begin + lBtnHeight := r.Bottom - r.Top; + lRoundBtnSize := fittingSize(); + lDiff := Abs(Round(lRoundBtnSize.Height) - lBtnHeight); + if lDiff < 4 then // this nr of pixels maximum size difference is arbitrary and we could choose another number + setBezelStyle(NSTexturedRoundedBezelStyle) + else + setBezelStyle(NSTexturedSquareBezelStyle); + end + else + setBezelStyle(NSTexturedSquareBezelStyle); + + inherited lclSetFrame(r); +end; + procedure TCocoaButton.actionButtonClick(sender: NSObject); begin // this is the action handler of button @@ -1698,6 +1883,18 @@ inherited resetCursorRects; end; +procedure TCocoaTextField.keyUp(event: NSEvent); +begin + if Assigned(callback) then + begin + // NSTextField doesn't provide keyDown, so emulate it here + callback.KeyEvent(event, True); + // keyUp now + callback.KeyEvent(event); + end; + inherited keyUp(event); +end; + { TCocoaTextView } function TCocoaTextView.lclIsHandle: Boolean; @@ -1707,20 +1904,23 @@ procedure TCocoaTextView.keyDown(event: NSEvent); begin - if not Assigned(callback) or not callback.KeyEvent(event) then - inherited keyDown(event); + if Assigned(callback) then callback.KeyEvent(event); + // don't skip inherited or else key input won't work + inherited keyDown(event); end; procedure TCocoaTextView.keyUp(event: NSEvent); begin - if not Assigned(callback) or not callback.KeyEvent(event) then - inherited keyUp(event); + if Assigned(callback) then callback.KeyEvent(event); + // don't skip inherited or else key input won't work + inherited keyUp(event); end; procedure TCocoaTextView.flagsChanged(event: NSEvent); begin - if not Assigned(callback) or not callback.KeyEvent(event) then - inherited flagsChanged(event); + if Assigned(callback) then callback.KeyEvent(event); + // don't skip inherited or else key input won't work + inherited flagsChanged(event); end; function TCocoaTextView.acceptsFirstResponder: Boolean; @@ -1756,6 +1956,37 @@ inherited resetCursorRects; end; +procedure TCocoaTextView.mouseDown(event: NSEvent); +begin + inherited mouseDown(event); + if callback <> nil then + begin + callback.MouseUpDownEvent(event); + // Cocoa doesn't call mouseUp for NSTextView, so we have to emulate it here :( + // See bug 29000 + callback.MouseUpDownEvent(event, True); + end; +end; + +procedure TCocoaTextView.mouseUp(event: NSEvent); +begin + inherited mouseUp(event); + if callback <> nil then + callback.MouseUpDownEvent(event); +end; + +function TCocoaTextView.lclIsEnabled: Boolean; +begin + Result := FEnabled; + if Result and CocoaWidgetSet.IsControlDisabledDueToModal(Self) then Result := False; +end; + +procedure TCocoaTextView.lclSetEnabled(AEnabled: Boolean); +begin + FEnabled := AEnabled; +end; +// + { TCocoaSecureTextField } function TCocoaSecureTextField.lclIsHandle: Boolean; @@ -1826,6 +2057,18 @@ inherited resetCursorRects; end; +procedure TCocoaSecureTextField.keyUp(event: NSEvent); +begin + if Assigned(callback) then + begin + // NSTextField doesn't provide keyDown, so emulate it here + callback.KeyEvent(event, True); + // keyUp now + callback.KeyEvent(event); + end; + inherited keyUp(event); +end; + { TCocoaCustomControl } function TCocoaCustomControl.lclIsHandle: Boolean; @@ -1855,6 +2098,11 @@ procedure TCocoaCustomControl.drawRect(dirtyRect: NSRect); begin inherited drawRect(dirtyRect); + + // Implement Color property + if Assigned(callback) then + callback.DrawBackground(NSGraphicsContext.currentContext, bounds, dirtyRect); + if CheckMainThread and Assigned(callback) then callback.Draw(NSGraphicsContext.currentContext, bounds, dirtyRect); end; @@ -1877,8 +2125,8 @@ procedure TCocoaCustomControl.mouseDragged(event: NSEvent); begin -if not Assigned(callback) or not callback.MouseMove(event) then - inherited mouseDragged(event); + if not Assigned(callback) or not callback.MouseMove(event) then + inherited mouseDragged(event); end; procedure TCocoaCustomControl.mouseEntered(event: NSEvent); @@ -1939,6 +2187,12 @@ inherited rightMouseUp(event); end; +procedure TCocoaCustomControl.rightMouseDragged(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseMove(event) then + inherited rightMouseDragged(event); +end; + procedure TCocoaCustomControl.otherMouseDown(event: NSEvent); begin if not Assigned(callback) or not callback.MouseUpDownEvent(event) then @@ -1951,6 +2205,12 @@ inherited otherMouseUp(event); end; +procedure TCocoaCustomControl.otherMouseDragged(event: NSEvent); +begin + if not Assigned(callback) or not callback.MouseMove(event) then + inherited otherMouseDragged(event); +end; + procedure TCocoaCustomControl.resetCursorRects; begin if not Assigned(callback) or not callback.resetCursorRects then @@ -2093,6 +2353,7 @@ function LCLControlExtension.lclIsEnabled:Boolean; begin Result := IsEnabled; + if Result and CocoaWidgetSet.IsControlDisabledDueToModal(Self) then Result := False; end; procedure LCLControlExtension.lclSetEnabled(AEnabled:Boolean); @@ -2181,11 +2442,8 @@ procedure LCLViewExtension.lclRelativePos(var Left, Top: Integer); begin - with frame.origin do - begin - Left := Round(x); - Top := Round(y); - end; + Left := Round(frame.origin.x); + Top := Round(frame.origin.y); end; procedure LCLViewExtension.lclLocalToScreen(var X, Y:Integer); @@ -2262,16 +2520,12 @@ r: NSRect; begin r := bounds; - with Result do - begin - Left := 0; - Top := 0; - Right := Round(r.size.width); - Bottom := Round(r.size.height); - end; + Result.Left := 0; + Result.Top := 0; + Result.Right := Round(r.size.width); + Result.Bottom := Round(r.size.height); end; - { LCLWindowExtension } function LCLWindowExtension.lclIsVisible: Boolean; @@ -2404,13 +2658,10 @@ begin wFrame := frame; cFrame := contentRectForFrameRect(wFrame); - with Result do - begin - Left := Round(cFrame.origin.x - wFrame.origin.x); - Top := Round(wFrame.origin.y + wFrame.size.height - cFrame.origin.y - cFrame.size.height); - Right := Left + Round(cFrame.size.width); - Bottom := Top + Round(cFrame.size.height); - end; + Result.Left := Round(cFrame.origin.x - wFrame.origin.x); + Result.Top := Round(wFrame.origin.y + wFrame.size.height - cFrame.origin.y - cFrame.size.height); + Result.Right := Result.Left + Round(cFrame.size.width); + Result.Bottom := Result.Top + Round(cFrame.size.height); end; { TCocoaListBox } @@ -2458,21 +2709,24 @@ function TCocoaListBox.tableView_shouldEditTableColumn_row(tableView: NSTableView; tableColumn: NSTableColumn; row: NSInteger): Boolean; begin -result:=false; // disable cell editing by default + Result := False; // disable cell editing by default end; function TCocoaListBox.tableView_objectValueForTableColumn_row(tableView: NSTableView; objectValueForTableColumn: NSTableColumn; row: NSInteger):id; begin + //WriteLn('TCocoaListBox.tableView_objectValueForTableColumn_row'); if not Assigned(list) then Result:=nil - else begin - if row>=list.count then Result:=nil + else + begin + if row>=list.count then + Result := nil else begin resultNS.release; resultNS := NSStringUtf8(list[row]); - Result:= ResultNS; + Result := ResultNS; end; end; end; @@ -2492,8 +2746,8 @@ procedure TCocoaListBox.tableViewSelectionDidChange(notification: NSNotification); begin - if Assigned(callback) then - callback.SelectionChanged; + if Assigned(callback) then + callback.SelectionChanged; end; procedure TCocoaListBox.mouseDown(event: NSEvent); @@ -2559,6 +2813,102 @@ inherited keyUp(event); end; +{ TCocoaCheckListBox } + +class function TCocoaCheckListBox.LCLCheckStateToCocoa(ALCLState: TCheckBoxState): NSInteger; +begin + case ALCLState of + cbChecked: Result := NSOnState; + cbGrayed: Result := NSMixedState; + else // cbUnchecked + Result := NSOffState; + end; +end; + +class function TCocoaCheckListBox.CocoaCheckStateToLCL(ACocoaState: NSInteger): TCheckBoxState; +begin + case ACocoaState of + NSOnState: Result := cbChecked; + NSMixedState: Result := cbGrayed; + else // NSOffState + Result := cbUnchecked; + end; +end; + +function TCocoaCheckListBox.CheckListBoxGetNextState(ACurrent: TCheckBoxState): TCheckBoxState; +begin + case ACurrent of + cbChecked: Result := cbUnchecked; + cbGrayed: Result := cbChecked; + else // cbUnchecked + if AllowMixedState then + Result := cbGrayed + else + Result := cbChecked; + end; +end; + +function TCocoaCheckListBox.GetCocoaState(const AIndex: integer): NSInteger; +begin + Result := NSInteger(list.Objects[AIndex]); +end; + +procedure TCocoaCheckListBox.SetCocoaState(const AIndex: integer; AState: NSInteger); +begin + list.Objects[AIndex] := TObject(AState); +end; + +function TCocoaCheckListBox.GetState(const AIndex: integer): TCheckBoxState; +var + lInt: NSInteger; +begin + lInt := GetCocoaState(AIndex); + Result := CocoaCheckStateToLCL(lInt); +end; + +procedure TCocoaCheckListBox.SetState(const AIndex: integer; AState: TCheckBoxState); +begin + SetCocoaState(AIndex, LCLCheckStateToCocoa(AState)); +end; + +function TCocoaCheckListBox.tableView_objectValueForTableColumn_row(tableView: NSTableView; + objectValueForTableColumn: NSTableColumn; row: NSInteger):id; +var + lInt: NSInteger; +begin + //WriteLn('[TCocoaCheckListBox.tableView_objectValueForTableColumn_row] row='+IntToStr(row)); + if not Assigned(list) then + Exit(nil); + + if row>=list.count then + Exit(nil); + + // Returns if the state is checked or unchecked + lInt := GetCocoaState(row); + Result := NSNumber.numberWithInteger(lInt); +end; + +procedure TCocoaCheckListBox.tableView_setObjectValue_forTableColumn_row(tableView: NSTableView; + object_: id; tableColumn: NSTableColumn; row: NSInteger); +begin + //WriteLn('[TCocoaCheckListBox.tableView_setObjectValue_forTableColumn_row] row='+IntToStr(row)); + SetState(row, CheckListBoxGetNextState(GetState(row))); +end; + +function TCocoaCheckListBox.tableView_dataCellForTableColumn_row(tableView: NSTableView; + tableColumn: NSTableColumn; row: NSInteger): NSCell; +var + lNSString: NSString; +begin + Result := NSButtonCell.alloc.init.autorelease; + Result.setAllowsMixedState(True); + NSButtonCell(Result).setButtonType(NSSwitchButton); + + lNSString := NSStringUtf8(list[row]); + NSButtonCell(Result).setTitle(lNSString); + lNSString.release; +end; + { TCocoaTabPage } function TCocoaTabPage.lclGetCallback: ICommonCallback; @@ -2574,10 +2924,22 @@ function TCocoaTabPage.lclFrame: TRect; var svh: CGFloat; + lParent: TCocoaTabControl; begin - svh := tabView.frame.size.height; - NSToLCLRect(tabView.contentRect, svh, Result); - //WriteLn('[TCocoaTabPage.lclFrame] '+dbgs(Result)+' '+NSStringToString(Self.label_)); + lParent := TCocoaWSCustomTabControl.GetCocoaTabControlHandle(LCLParent); + if lParent <> nil then + begin + svh := lParent.contentRect.size.height; + NSToLCLRect(lParent.contentRect, svh, Result); + end + else + begin + svh := tabView.frame.size.height; + NSToLCLRect(tabView.contentRect, svh, Result); + end; + {$IFDEF COCOA_DEBUG_TABCONTROL} + WriteLn('[TCocoaTabPage.lclFrame] '+dbgs(Result)+' '+NSStringToString(Self.label_)); + {$ENDIF} end; function TCocoaTabPage.lclClientFrame: TRect; @@ -2830,7 +3192,7 @@ procedure TCocoaTableListView.mouseDragged(event: NSEvent); begin if not Assigned(callback) or not callback.MouseMove(event) then - inherited mouseDragged(event); + inherited mouseDragged(event); end; procedure TCocoaTableListView.mouseEntered(event: NSEvent); @@ -2989,7 +3351,7 @@ FillChar(nr, sizeof(nr), 0); r := lclClientFrame(); - nr.size.height := STATUSBAR_DEFAULT_HEIGHT; + nr.size.height := StatusBar.Height+5; // it gets closer to filling the whole area with +5 no idea why if StatusBar.SimplePanel then begin @@ -3032,11 +3394,15 @@ var i: Integer; nsstr: NSString; + lCurItem: NSMenuItem; begin if FOwner <> nil then fOwner.reloadData; if FReadOnlyOwner <> nil then begin + // store the current item + FReadOnlyOwner.lastSelectedItemIndex := FReadOnlyOwner.indexOfSelectedItem; + FReadOnlyOwner.removeAllItems(); for i := 0 to Count-1 do begin @@ -3044,10 +3410,18 @@ FReadOnlyOwner.addItemWithTitle(nsstr); nsstr.release; end; + + // reset the selected item + FReadOnlyOwner.selectItemAtIndex(FReadOnlyOwner.lastSelectedItemIndex); end; inherited Changed; end; +procedure TCocoaComboBoxList.Changing; +begin + FPreChangeListCount := Count; +end; + constructor TCocoaComboBoxList.Create(AOwner: TCocoaComboBox; AReadOnlyOwner: TCocoaReadOnlyComboBox); begin FOwner := AOwner; @@ -3191,33 +3565,12 @@ Result:=true; end; -{ TCocoaMenu } - -function TCocoaMenu.lclIsHandle: Boolean; -begin - Result:=true; -end; - -procedure TCocoaMenu.lclItemSelected(sender:id); -begin - -end; - -{ TCocoaMenuITem } - -function TCocoaMenuItem.lclIsHandle: Boolean; -begin - Result:=true; -end; - -procedure TCocoaMenuItem.lclItemSelected(sender:id); -begin - menuItemCallback.ItemSelected; -end; - -function TCocoaMenuItem.lclGetCallback: IMenuItemCallback; +procedure TCocoaReadOnlyComboBox.comboBoxAction(sender: id); begin - result:=menuItemCallback; + //setTitle(NSSTR(PChar(Format('%d=%d', [indexOfSelectedItem, lastSelectedItemIndex])))); // <= for debugging + if (indexOfSelectedItem <> lastSelectedItemIndex) and (callback <> nil) then + callback.ComboBoxSelectionDidChange; + lastSelectedItemIndex := indexOfSelectedItem; end; { TCocoaProgressIndicator } @@ -3463,6 +3816,8 @@ lNSStr := CocoaUtils.NSStringUtf8(lStr); Edit.setStringValue(lNSStr); lNSStr.release; + // This implements OnChange for both user and code changes + if callback <> nil then callback.SendOnTextChanged(); end; function TCocoaSpinEdit.acceptsFirstResponder: Boolean; @@ -3609,6 +3964,8 @@ lNSStr := CocoaUtils.NSStringUtf8(lStr); setStringValue(lNSStr); lNSStr.release; + // This implements OnChange for both user and code changes + if callback <> nil then callback.SendOnTextChanged(); end; function TCocoaSpinEdit.GetFieldEditor: TCocoaFieldEditor; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaproc.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaproc.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoaproc.pas 2014-05-01 22:45:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoaproc.pas 2015-08-07 06:02:46.000000000 +0000 @@ -2,8 +2,8 @@ cocoaproc.pp - Cocoa interface procs ---------------------------------------- - This unit contains procedures/functions needed for the Carbon <-> LCL interface - Common carbon untilities (usable by other projects) go to CarbonUtils + This unit contains procedures/functions needed for the Cocoa <-> LCL interface + Common cocoa untilities (usable by other projects) go to CocoaUtils ***************************************************************************** This file is part of the Lazarus Component Library (LCL) @@ -47,11 +47,11 @@ CarbonDefaultFont : AnsiString = ''; CarbonDefaultFontSize : Integer = 0;} -{ $I mackeycodes.inc} +{$I mackeycodes.inc} -{function VirtualKeyCodeToMac(AKey: Word): Word; +function VirtualKeyCodeToMac(AKey: Word): Word; -function GetBorderWindowAttrs(const ABorderStyle: TFormBorderStyle; +{function GetBorderWindowAttrs(const ABorderStyle: TFormBorderStyle; const ABorderIcons: TBorderIcons): WindowAttributes; function GetCarbonMouseButton(AEvent: EventRef): Integer; @@ -67,7 +67,6 @@ function QDStyleToFontStyle(QDStyle: Integer): TFontStyles;} procedure FillStandardDescription(out Desc: TRawImageDescription); -function GetHiThemeMetric(Metric: ThemeMetric; DefaultValue: Integer = 0): Integer; { function CreateCustomHIView(const ARect: HIRect; ControlStyle: TControlStyle = []): HIViewRef; @@ -75,7 +74,7 @@ procedure SetControlViewStyle(Control: ControlRef; TinySize, SmallSize, NormalSize: Integer; ControlHeight: Boolean = True); function CarbonHitTest(Control: ControlRef; const X,Y: integer; var part: ControlPartCode): Boolean; - +} const DEFAULT_CFSTRING_ENCODING = kCFStringEncodingUTF8; @@ -85,6 +84,7 @@ function CFStringToStr(AString: CFStringRef; Encoding: CFStringEncoding = DEFAULT_CFSTRING_ENCODING): String; function CFStringToData(AString: CFStringRef; Encoding: CFStringEncoding = DEFAULT_CFSTRING_ENCODING): CFDataRef; +{ function StringsToCFArray(S: TStrings): CFArrayRef; function RoundFixed(const F: Fixed): Integer; @@ -243,6 +243,7 @@ ' ' + AText + ' failed with result ' + DbgS(AResult)); end; end; +*) {------------------------------------------------------------------------------ Name: VirtualKeyCodeToMac @@ -324,6 +325,7 @@ end; end; +(* {------------------------------------------------------------------------------ Name: GetBorderWindowAttrs Returns: Converts the form border style and icons to Carbon window attributes @@ -584,7 +586,7 @@ Name: FillStandardDescription Params: Desc - Raw image description - Fills the raw image description with standard Carbon internal image storing + Fills the raw image description with standard Cocoa internal image storing description ------------------------------------------------------------------------------} procedure FillStandardDescription(out Desc: TRawImageDescription); @@ -620,23 +622,6 @@ Desc.MaskShift := 0; end; -{------------------------------------------------------------------------------ - Name: GetHiThemeMetric - Params: Metric - Theme metric - DefaultValue - Returns: Theme metric value or default value if fails - ------------------------------------------------------------------------------} -function GetHiThemeMetric(Metric: ThemeMetric; DefaultValue: Integer): Integer; -begin - {$IFDEF NoCarbon} - // ToDo - Result := DefaultValue;; - {$ELSE} - if GetThemeMetric(Metric, Result) <> noErr then - Result := DefaultValue; - {$ENDIF} -end; - function GetCurrentEventTime: double; // returns seconds since system startup begin @@ -733,6 +718,7 @@ Result:=GetEventParameter(event, kEventParamControlPart, typeControlPartCode, nil, sizeof(part), nil, @part)=noErr; ReleaseEvent(event); end; +*) {------------------------------------------------------------------------------ Name: CreateCFString @@ -837,6 +823,7 @@ Result := CFDataCreate(nil, nil, 0); end; +(* {------------------------------------------------------------------------------ Name: StringsToCFArray Params: S - Strings diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoathemes.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoathemes.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoathemes.pas 2014-12-08 04:01:21.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoathemes.pas 2015-08-07 06:02:46.000000000 +0000 @@ -20,6 +20,7 @@ CocoaAll, // lcl LCLType, LCLProc, LCLIntf, Graphics, Themes, TmSchema, + customdrawndrawers, // widgetset CocoaProc, CocoaUtils, CocoaGDIObjects; @@ -36,11 +37,11 @@ procedure InternalDrawParentBackground({%H-}Window: HWND; {%H-}Target: HDC; {%H-}Bounds: PRect); override; *) function GetDrawState(Details: TThemedElementDetails): ThemeDrawState; -(* function DrawButtonElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; - function DrawComboBoxElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; + function DrawButtonElement(DC: TCocoaContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; +(* function DrawComboBoxElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; function DrawHeaderElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; - function DrawRebarElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; - function DrawToolBarElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect;*) + function DrawRebarElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect;*) + function DrawToolBarElement(DC: TCocoaContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; function DrawTreeviewElement(DC: TCocoaContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; (* function DrawWindowElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; *) @@ -63,7 +64,7 @@ { TCocoaThemeServices } {------------------------------------------------------------------------------ - Method: TCarbonThemeServices.GetDrawState + Method: TCocoaThemeServices.GetDrawState Params: Details - Details for themed element Returns: Draw state of the themed element passed ------------------------------------------------------------------------------} @@ -140,64 +141,67 @@ BoundsRect.size.height := NewHeight + 1; BoundsRect.size.width := BoundsRect.size.width - BtnWidth; Result := CGRectToRect(BoundsRect); -end; +end;*) {------------------------------------------------------------------------------ - Method: TCarbonThemeServices.DrawButtonElement + Method: TCocoaThemeServices.DrawButtonElement Params: DC - Carbon device context Details - Details for themed element R - Bounding rectangle ClipRect - Clipping rectangle Returns: ClientRect - Draws a button element with native Carbon look + Draws a button element with native look + Button kinds: + {BP_PUSHBUTTON } kThemeRoundedBevelButton, + {BP_RADIOBUTTON} kThemeRadioButton, + {BP_CHECKBOX } kThemeCheckBox, + {BP_GROUPBOX } kHIThemeGroupBoxKindPrimary, + {BP_USERBUTTON } kThemeRoundedBevelButton ------------------------------------------------------------------------------} -function TCarbonThemeServices.DrawButtonElement(DC: TCarbonDeviceContext; +function TCocoaThemeServices.DrawButtonElement(DC: TCocoaContext; Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; -const - ButtonMap: array[BP_PUSHBUTTON..BP_USERBUTTON] of ThemeButtonKind = - ( -{BP_PUSHBUTTON } kThemeRoundedBevelButton, -{BP_RADIOBUTTON} kThemeRadioButton, -{BP_CHECKBOX } kThemeCheckBox, -{BP_GROUPBOX } kHIThemeGroupBoxKindPrimary, // ?? -{BP_USERBUTTON } kThemeRoundedBevelButton - ); var - ButtonDrawInfo: HIThemeButtonDrawInfo; - // we can do so because GroupDrawIndo have common fields with ButtonDrawInfo - GroupDrawInfo: HIThemeGroupBoxDrawInfo absolute ButtonDrawInfo; - LabelRect: HIRect; -begin - ButtonDrawInfo.version := 0; - ButtonDrawInfo.State := GetDrawState(Details); - ButtonDrawInfo.kind := ButtonMap[Details.Part]; - if IsMixed(Details) then - ButtonDrawInfo.value := kThemeButtonMixed - else - if IsChecked(Details) then - ButtonDrawInfo.value := kThemeButtonOn - else - ButtonDrawInfo.value := kThemeButtonOff; - ButtonDrawInfo.adornment := kThemeAdornmentNone; - - LabelRect := RectToCGRect(R); + lCanvas: TCanvas; + lSize: TSize; + lCDButton: TCDButtonStateEx; + lState: TCDControlState = []; + lDrawer: TCDDrawer; + lPt: TPoint; +begin + lCDButton := TCDButtonStateEx.Create; + lCanvas := TCanvas.Create; + try + lSize.CX := R.Right - R.Left; + lSize.CY := R.Bottom - R.Top; + + if IsHot(Details) then + lState += [csfMouseOver]; + if IsPushed(Details) then + lState += [csfSunken]; + if IsChecked(Details) then + lState += [csfSunken]; + if not IsDisabled(Details) then + lState += [csfEnabled]; + + lDrawer := GetDrawer(dsMacOSX); + lCanvas.Handle := HDC(DC); + + lPt := Types.Point(R.Left, R.Top); + if Details.Part = BP_GROUPBOX then + lDrawer.DrawGroupBox(lCanvas, lPt, lSize, lState, lCDButton) + else + lDrawer.DrawButton(lCanvas, lPt, lSize, lState, lCDButton); - if Details.Part = BP_GROUPBOX then - OSError( - HIThemeDrawGroupBox(LabelRect, GroupDrawInfo, DC.CGContext, - kHIThemeOrientationNormal), - Self, 'DrawButtonElement', 'HIThemeDrawGroupBox') - else - OSError( - HIThemeDrawButton(LabelRect, ButtonDrawInfo, DC.CGContext, - kHIThemeOrientationNormal, @LabelRect), - Self, 'DrawButtonElement', 'HIThemeDrawButton'); - - Result := CGRectToRect(LabelRect); + Result := R; + finally + lCDButton.Free; + lCanvas.Handle := 0; + lCanvas.Free; + end; end; -{------------------------------------------------------------------------------ +(*{------------------------------------------------------------------------------ Method: TCarbonThemeServices.DrawHeaderElement Params: DC - Carbon device context Details - Details for themed element @@ -270,7 +274,7 @@ end; Result := CGRectToRect(ARect); -end; +end;*) {------------------------------------------------------------------------------ Method: TCarbonThemeServices.DrawToolBarElement @@ -282,62 +286,72 @@ Draws a tool bar element with native Carbon look ------------------------------------------------------------------------------} -function TCarbonThemeServices.DrawToolBarElement(DC: TCarbonDeviceContext; +function TCocoaThemeServices.DrawToolBarElement(DC: TCocoaContext; Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; var - ButtonDrawInfo: HIThemeButtonDrawInfo; - LabelRect: HIRect; -begin - if Details.Part in [TP_BUTTON, TP_DROPDOWNBUTTON, TP_SPLITBUTTON, TP_SPLITBUTTONDROPDOWN] then - begin - ButtonDrawInfo.version := 0; - ButtonDrawInfo.State := GetDrawState(Details); + lCanvas: TCanvas; + lSize: TSize; + lCDToolbarItem: TCDToolBarItem; + lCDToolbar: TCDToolBarStateEx; + lDrawer: TCDDrawer; +begin + lCDToolbarItem := TCDToolBarItem.Create; + lCDToolbar := TCDToolBarStateEx.Create; + lCanvas := TCanvas.Create; + try + lSize.CX := R.Right - R.Left; + lSize.CY := R.Bottom - R.Top; case Details.Part of - TP_BUTTON, TP_SPLITBUTTON: ButtonDrawInfo.kind := kThemeBevelButtonSmall; - TP_DROPDOWNBUTTON: ButtonDrawInfo.kind := kThemePopupButtonSmall; - TP_SPLITBUTTONDROPDOWN: ButtonDrawInfo.kind := kThemeDisclosureButton; - end; - - if Details.Part = TP_SPLITBUTTONDROPDOWN then - begin - ButtonDrawInfo.value := kThemeDisclosureDown; - end + TP_BUTTON, TP_DROPDOWNBUTTON, TP_SPLITBUTTON: + lCDToolbarItem.Kind := tikButton; + TP_SPLITBUTTONDROPDOWN: + begin + lCDToolbarItem.Kind := tikDropDownButton; + lCDToolbarItem.SubpartKind := tiskArrow; + end + //TP_SEPARATOR, TP_SEPARATORVERT, TP_DROPDOWNBUTTONGLYPH: // tikSeparator, tikDivider else - begin - if IsChecked(Details) then - ButtonDrawInfo.value := kThemeButtonOn - else - ButtonDrawInfo.value := kThemeButtonOff; + Exit; end; - ButtonDrawInfo.adornment := kThemeAdornmentNone; - - LabelRect := RectToCGRect(R); + lCDToolbarItem.Width := lSize.CX; + lCDToolbarItem.Down := IsChecked(Details); - // if button is normal or disabled, draw it to dummy context, to eliminate borders - if ((ButtonDrawInfo.State = kThemeStateActive) or - (ButtonDrawInfo.State = kThemeStateInActive)) and - (ButtonDrawInfo.value = kThemeButtonOff) then - OSError( - HIThemeDrawButton(LabelRect, ButtonDrawInfo, DefaultContext.CGContext, - kHIThemeOrientationNormal, @LabelRect), - Self, 'DrawButtonElement', 'HIThemeDrawButton') - else - OSError( - HIThemeDrawButton(LabelRect, ButtonDrawInfo, DC.CGContext, - kHIThemeOrientationNormal, @LabelRect), - Self, 'DrawButtonElement', 'HIThemeDrawButton'); - - Result := CGRectToRect(LabelRect); + lCDToolbarItem.State := []; + if IsHot(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfMouseOver]; + if IsPushed(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfSunken]; + if IsChecked(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfSunken]; + if not IsDisabled(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfEnabled]; + + lCDToolbar.ToolBarHeight := lSize.CY; + + lDrawer := GetDrawer(dsMacOSX); + lCanvas.Handle := HDC(DC); + lDrawer.DrawToolBarItem(lCanvas, lSize, lCDToolbarItem, R.Left, R.Top, lCDToolbarItem.State, lCDToolbar); + + Result := R; + finally + lCDToolbarItem.Free; + lCDToolbar.Free; + lCanvas.Handle := 0; + lCanvas.Free; end; -end;*) +end; function TCocoaThemeServices.DrawTreeviewElement(DC: TCocoaContext; Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; var ButtonDrawInfo: HIThemeButtonDrawInfo; LabelRect: HIRect; - b: TCocoaBrush; + lBrush: TCocoaBrush; + lOldBrush: HBRUSH; + lPen: TCocoaPen; + lOldPen: HGDIOBJ; lColor: NSColor; + lPoints: array of TPoint; begin case Details.Part of TVP_TREEITEM: @@ -350,12 +364,16 @@ TREIS_SELECTEDNOTFOCUS: lColor := ColorToNSColor(ColorToRGB(clBtnFace)); TREIS_HOTSELECTED: lColor := ColorToNSColor(ColorToRGB(clHighlight)); end; - b := TCocoaBrush.Create(lColor, False); - DC.Rectangle(R.Left, R.Top, R.Right, R.Bottom, True, b); - b.Free; + lBrush := TCocoaBrush.Create(lColor, False); + DC.Rectangle(R.Left, R.Top, R.Right, R.Bottom, True, lBrush); + lBrush.Free; end; TVP_GLYPH, TVP_HOTGLYPH: begin + // HIThemeDrawButton exists only in 32-bits and there is no Cocoa alternative =( + {.$define CocoaUseHITheme} + {$ifdef CocoaUseHITheme} + {$ifdef CPU386} ButtonDrawInfo.version := 0; ButtonDrawInfo.State := GetDrawState(Details); ButtonDrawInfo.kind := kThemeDisclosureTriangle; @@ -370,12 +388,48 @@ LabelRect.origin.x := LabelRect.origin.x - 2; LabelRect.origin.y := LabelRect.origin.y - 1; - {$ifdef i386} HIThemeDrawButton(LabelRect, ButtonDrawInfo, DC.CGContext(), kHIThemeOrientationNormal, @LabelRect); - {$endif} Result := CGRectToRect(LabelRect); + {$endif} + {$else} + SetLength(lPoints, 3); + + // face right + if Details.State = GLPS_CLOSED then + begin + lPoints[0] := Types.Point(R.Left+1, R.Top); + lPoints[1] := Types.Point(R.Left+1, R.Bottom-2); + lPoints[2] := Types.Point(R.Right-1, (R.Top + R.Bottom-2) div 2); + end + // face down + else + begin + lPoints[0] := Types.Point(R.Left, R.Top); + lPoints[1] := Types.Point(R.Right-2, R.Top); + lPoints[2] := Types.Point((R.Left + R.Right-2) div 2, R.Bottom-2); + end; + + // select the appropriate brush & pen + lColor := ColorToNSColor(Graphics.RGBToColor(121, 121, 121)); + lBrush := TCocoaBrush.Create(lColor, False); + lOldBrush := LCLIntf.SelectObject(HDC(DC), HGDIOBJ(lBrush)); + + lPen := TCocoaPen.Create(Graphics.RGBToColor(121, 121, 121), False); + lOldPen := LCLIntf.SelectObject(HDC(DC), HGDIOBJ(lPen)); + + // Draw the triangle + DC.Polygon(lPoints, 3, True); + + // restore the old brush and pen + LCLIntf.SelectObject(HDC(DC), lOldBrush); + LCLIntf.SelectObject(HDC(DC), lOldPen); + lBrush.Free; + lPen.Free; + + Result := R; + {$endif} end; end; end; @@ -515,7 +569,7 @@ *) {------------------------------------------------------------------------------ Method: TCocoaThemeServices.DrawElement - Params: DC - Carbon device context + Params: DC - Cocoa device context Details - Details for themed element R - Bounding rectangle ClipRect - Clipping rectangle @@ -530,11 +584,11 @@ if CheckDC(DC, 'TCocoaThemeServices.DrawElement') then begin case Details.Element of -{ teComboBox: DrawComboBoxElement(Context, Details, R, ClipRect); + //teComboBox: DrawComboBoxElement(Context, Details, R, ClipRect); teButton: DrawButtonElement(Context, Details, R, ClipRect); - teHeader: DrawHeaderElement(Context, Details, R, ClipRect); - teRebar: DrawRebarElement(Context, Details, R, ClipRect); - teToolBar: DrawToolBarElement(Context, Details, R, ClipRect);} + {teHeader: DrawHeaderElement(Context, Details, R, ClipRect); + teRebar: DrawRebarElement(Context, Details, R, ClipRect);} + teToolBar: DrawToolBarElement(Context, Details, R, ClipRect); teTreeview: DrawTreeviewElement(Context, Details, R, ClipRect); // teWindow: DrawWindowElement(Context, Details, R, ClipRect); else diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoatrayicon.inc lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoatrayicon.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoatrayicon.inc 2011-06-29 20:45:12.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoatrayicon.inc 2015-02-13 12:24:11.000000000 +0000 @@ -1,52 +1,72 @@ {%mainunit cocoawsextctrls.pas} -(*type - TCocoaStatusItem = objcclass(NSStatusItem) +type + + { TCocoaStatusItemHandle } + + TCocoaStatusItemHandle = objcclass(NSObject) + public { Fields } - bar: NSStatusBar; - image: NSImage; - menu: NSMenu; + statusitem: NSStatusItem; + TrayIcon: TCustomTrayIcon; { Methods } - // procedure lclItemSelected(sender: id); message 'lclItemSelected:'; - end;*) + procedure lclAction(sender: id); message 'lclAction:'; + procedure lclSetTrayIcon(ATrayIcon: TCustomTrayIcon); message 'lclSetTrayIcon:'; + end; + +{ TCocoaStatusItemHandle } + +procedure TCocoaStatusItemHandle.lclAction(sender: id); +begin + if Assigned(TrayIcon.OnClick) then + TrayIcon.OnClick(TrayIcon); +end; + +procedure TCocoaStatusItemHandle.lclSetTrayIcon(ATrayIcon: TCustomTrayIcon); +var + image: NSImage; +begin + TrayIcon := ATrayIcon; + + // Shows the icon + + if (ATrayIcon.icon <> nil) and (ATrayIcon.icon.Handle <> 0) then + begin + image := TCocoaBitmap(ATrayIcon.icon.Handle).image; + if image <> nil then statusitem.setImage(image); + end; + + // Show the menu + + if (ATrayIcon.PopUpMenu <> nil) then + begin + ATrayIcon.PopUpMenu.HandleNeeded(); + statusitem.setMenu(TCocoaMenu(ATrayIcon.PopUpMenu.Handle)); + end; +end; { TCocoaWSCustomTrayIcon } class function TCocoaWSCustomTrayIcon.Hide(const ATrayIcon: TCustomTrayIcon): Boolean; -{var - statusitem: TCocoaStatusItem; - bar: NSStatusBar;} +var + StatusItemHandle: TCocoaStatusItemHandle; + statusitem: NSStatusItem; begin -{ bar := NSStatusBar.systemStatusBar(); - statusitem := bar.statusItemWithLength(NSSquareStatusItemLength); - statusitem.bar := bar; - statusicon.callback:=TLCLCommonCallback.Create(box, AWinControl); - statusitem.retain(); - statusitem.item.setImage(APrivateTrayIcon.image.Handle); - Result:=TLCLIntfHandle(box); -// APrivateTrayIcon := TPrivateCocoaCocoaTrayIcon(ATrayIcon.Handle); + if ATrayIcon.Handle = 0 then Exit; + StatusItemHandle := TCocoaStatusItemHandle(ATrayIcon.Handle); + statusitem := StatusItemHandle.statusitem; + if statusitem = nil then Exit; - if APrivateTrayIcon.item <> nil then - begin - APrivateTrayIcon.item.Free; - APrivateTrayIcon.item := nil; - end;} + statusitem.release; Result := True; end; -{ -} class function TCocoaWSCustomTrayIcon.Show(const ATrayIcon: TCustomTrayIcon): Boolean; var statusitem: NSStatusItem; bar: NSStatusBar; - image: NSImage; - {var - APrivateTrayIcon: TPrivateCocoaCocoaTrayIcon; - ASize: NSSize; - ACGRect: CGRect; - AcurrentContext: NSGraphicsContext;} + StatusItemHandle: TCocoaStatusItemHandle; begin {$ifdef VerboseCocoaTrayIcon} WriteLn(':>[TCocoaWSCustomTrayIcon.Show]'); @@ -58,19 +78,18 @@ bar := NSStatusBar.systemStatusBar(); statusitem := bar.statusItemWithLength(NSSquareStatusItemLength); -// statusitem.bar := bar; - //statusicon.callback:=TLCLCommonCallback.Create(box, AWinControl); - - { Shows the icon } - statusitem.retain(); - if (ATrayIcon.icon <> nil) and (ATrayIcon.icon.Handle <> 0) then - begin - image := TCocoaBitmap(ATrayIcon.icon.Handle).image; - if image <> nil then statusitem.setImage(image); - end; + StatusItemHandle := TCocoaStatusItemHandle.alloc.init(); + StatusItemHandle.statusitem := statusitem; + ATrayIcon.Handle := HWND(StatusItemHandle); + + // OnClick support + statusitem.setTarget(StatusItemHandle); + statusitem.setAction(objcselector('lclAction:')); + + // set the main properties + StatusItemHandle.lclSetTrayIcon(ATrayIcon); -// statusitem.setTitle('Menu'); statusitem.setHighlightMode(True); statusitem.setEnabled(True); @@ -89,8 +108,13 @@ end; class procedure TCocoaWSCustomTrayIcon.InternalUpdate(const ATrayIcon: TCustomTrayIcon); +var + StatusItemHandle: TCocoaStatusItemHandle; begin + if ATrayIcon.Handle = 0 then Exit; + StatusItemHandle := TCocoaStatusItemHandle(ATrayIcon.Handle); + StatusItemHandle.lclSetTrayIcon(ATrayIcon); end; class function TCocoaWSCustomTrayIcon.ShowBalloonHint(const ATrayIcon: TCustomTrayIcon): Boolean; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoautils.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoautils.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoautils.pas 2014-05-02 23:46:40.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoautils.pas 2015-11-11 14:49:03.000000000 +0000 @@ -66,13 +66,14 @@ procedure ShortcutToKeyEquivalent(const AShortCut: TShortcut; out Key: string; out shiftKeyMask: NSUInteger); +const + DEFAULT_CFSTRING_ENCODING = kCFStringEncodingUTF8; + +function CFStringToStr(AString: CFStringRef; Encoding: CFStringEncoding = DEFAULT_CFSTRING_ENCODING): String; function CFStringToString(AString: CFStringRef): String; implementation -const - DEFAULT_CFSTRING_ENCODING = kCFStringEncodingUTF8; - procedure ColorToRGBFloat(cl: TColorRef; var r,g,b: Single); inline; begin R:=(cl and $FF) / $FF; @@ -221,14 +222,19 @@ result:=CFStringToStr(AString); end; +// Return the content view of a given non-view or +// for a view. For Window and Box and similar containers +// it returns the content view function GetNSObjectView(obj: NSObject): NSView; begin Result := nil; if not Assigned(obj) then Exit; - if obj.isKindOfClass_(NSView) then - Result:=NSView(obj) + if obj.isKindOfClass_(NSBox) then + Result := NSBox(obj).contentView + else if obj.isKindOfClass_(NSView) then + Result := NSView(obj) else if obj.isKindOfClass_(NSWindow) then - Result:=NSWindow(obj).contentView + Result := NSWindow(obj).contentView else if obj.isKindOfClass_(NSTabViewItem) then Result := NSTabViewItem(obj).view; end; @@ -315,13 +321,10 @@ function CGRectToRect(const c: CGRect): TRect; begin - with Result do - begin - Left := Round(c.origin.x); - Top := Round(c.origin.y); - Right := Round(c.origin.x + c.size.width); - Bottom := Round(c.origin.y + c.size.height); - end; + Result.Left := Round(c.origin.x); + Result.Top := Round(c.origin.y); + Result.Right := Round(c.origin.x + c.size.width); + Result.Bottom := Round(c.origin.y + c.size.height); end; function RectToNSRect(const r: TRect): NSRect; @@ -332,24 +335,18 @@ function NSRectToRect(const NS: NSRect): TRect; begin - with Result do - begin - Left := Round(ns.origin.x); - Top := Round(ns.origin.y); - Right := Round(ns.origin.x + ns.size.width); - Bottom := Round(ns.origin.y + ns.size.height); - end; + Result.Left := Round(ns.origin.x); + Result.Top := Round(ns.origin.y); + Result.Right := Round(ns.origin.x + ns.size.width); + Result.Bottom := Round(ns.origin.y + ns.size.height); end; procedure NSToLCLRect(const ns: NSRect; ParentHeight: Single; out lcl: TRect); begin - with lcl do - begin - Left := Round(ns.origin.x); - Top := Round(ParentHeight - ns.size.height - ns.origin.y); - Right := Round(ns.origin.x + ns.size.width); - Bottom := Round(lcl.Top + ns.size.height); - end; + lcl.Left := Round(ns.origin.x); + lcl.Top := Round(ParentHeight - ns.size.height - ns.origin.y); + lcl.Right := Round(ns.origin.x + ns.size.width); + lcl.Bottom := Round(lcl.Top + ns.size.height); end; procedure LCLToNSRect(const lcl: TRect; ParentHeight: Single; out ns: NSRect); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawinapih.inc lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawinapih.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawinapih.inc 2014-02-07 13:16:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawinapih.inc 2015-02-28 11:26:09.000000000 +0000 @@ -30,7 +30,7 @@ {function CallNextHookEx(hHk: HHOOK; ncode : Integer; wParam: WParam; lParam : LParam) : Integer; override; function CallWindowProc(lpPrevWndFunc : TFarProc; Handle : HWND; Msg : UINT; wParam: WParam; lParam : lParam) : Integer; override;} function ClientToScreen(Handle: HWND; var P: TPoint) : Boolean; override; -{ + function ClipboardFormatToMimeType(FormatID: TClipboardFormat): string; override; function ClipboardGetData(ClipboardType: TClipboardType; FormatID: TClipboardFormat; Stream: TStream): boolean; override; @@ -40,7 +40,7 @@ function ClipboardGetOwnerShip(ClipboardType: TClipboardType; OnRequestProc: TClipboardRequestEvent; FormatCount: integer; Formats: PClipboardFormat): boolean; override; -function ClipboardRegisterFormat(const AMimeType: string): TClipboardFormat; override;} +function ClipboardRegisterFormat(const AMimeType: string): TClipboardFormat; override; function CombineRgn(Dest, Src1, Src2: HRGN; fnCombineMode: Longint): Longint; override; function CreateBitmap(Width, Height: Integer; Planes, BitCount: Longint; BitmapBits: Pointer): HBITMAP; override; @@ -174,6 +174,7 @@ function SetSysColors(cElements: Integer; const lpaElements; const lpaRgbValues): Boolean; override; function SetTextColor(DC: HDC; Color: TColorRef): TColorRef; override; function SetViewPortOrgEx(DC: HDC; NewX, NewY: Integer; OldPoint: PPoint): Boolean; override; +//function SetWindowLong(Handle: HWND; Idx: Integer; NewLong : PtrInt): PtrInt; override; function SetWindowOrgEx(DC: HDC; NewX, NewY: Integer; OldPoint: PPoint) : Boolean; override; function ShowCaret(Handle: HWND): Boolean; override; function ShowScrollBar(Handle: HWND; wBar: Integer; bShow: Boolean): Boolean; override; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawinapi.inc lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawinapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawinapi.inc 2014-10-20 06:01:39.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawinapi.inc 2015-11-11 18:05:10.000000000 +0000 @@ -98,7 +98,335 @@ Result := Handle <> 0; if Result then - NSObject(Handle).lclLocalToScreen(P.X, P.Y); + NSObject(Handle).lclLocalToScreen(P.X, P.Y); +end; + +{------------------------------------------------------------------------------ + Method: ClipboardFormatToMimeType + Params: FormatID - A registered format identifier (0 is invalid) + Returns: The corresponding mime type as string + ------------------------------------------------------------------------------} +function TCocoaWidgetSet.ClipboardFormatToMimeType(FormatID: TClipboardFormat): string; +var + lFormat: TCocoaClipboardData; +begin + {$IFDEF VerboseClipboard} + DebugLn('TCocoaWidgetSet.ClipboardFormatToMimeType FormatID: ' + DbgS(FormatID)); + {$ENDIF} + + lFormat := GetClipboardDataForFormat(FormatID); + if lFormat = nil then Exit; + Result := lFormat.MimeType; +end; + +{------------------------------------------------------------------------------ + Method: ClipboardGetData + Params: ClipboardType - Clipboard type + FormatID - A registered format identifier (0 is invalid) + Stream - If format is available, it will be appended to this + stream + Returns: If the function succeeds + ------------------------------------------------------------------------------} +function TCocoaWidgetSet.ClipboardGetData(ClipboardType: TClipboardType; + FormatID: TClipboardFormat; Stream: TStream): boolean; +var + pasteboard: NSPasteboard; + lFormat: TCocoaClipboardData; + lNSStr: NSString; + // for text + lStr: String; + // for standard + lNSData: NSData; + lNSbytes: PByte; + i: Integer; + // for bitmap + image: TFPCustomImage; + lTmpStream: TMemoryStream; + reader: TFPCustomImageReader; + writer: TFPCustomImageWriter; +begin + Result := False; + {$IFDEF VerboseClipboard} + DebugLn('TCocoaWidgetSet.ClipboardGetData ClipboardType=' + + ClipboardTypeName[ClipboardType] + ' FormatID: ' + DbgS(FormatID)); + {$ENDIF} + + case ClipboardType of + ctPrimarySelection: pasteboard := PrimarySelection; + ctSecondarySelection: pasteboard := SecondarySelection; + ctClipboard: pasteboard := NSPasteboard.generalPasteboard; + end; + + lFormat := GetClipboardDataForFormat(FormatID); + if lFormat = nil then Exit; + + case lFormat.DataType of + ccdtText: + begin + lNSStr := pasteboard.stringForType(lFormat.CocoaFormat); + if lNSStr = nil then Exit; + lStr := NSStringToString(lNSStr); + Stream.Write(lStr[1], Length(lStr)); + {$IFDEF VerboseClipboard} + DebugLn('TCocoaWidgetSet.ClipboardGetData IsText Result=' + lStr); + {$ENDIF} + end; + ccdtCocoaStandard, ccdtNonStandard: + begin + lNSData := pasteboard.dataForType(lFormat.CocoaFormat); + if lNSData = nil then Exit; + lNSbytes := lNSData.bytes; + for i := 0 to lNSData.length-1 do + Stream.WriteByte(lNSbytes[i]); + end; + // In Cocoa images are stored as PNG, convert to BMP for LCL app usage + ccdtBitmap: + begin + lNSData := pasteboard.dataForType(lFormat.CocoaFormat); + if lNSData = nil then Exit; + lNSbytes := lNSData.bytes; + + Image := TFPMemoryImage.Create(10, 10); + Reader := TFPReaderPNG.Create; + Writer := TFPWriterBMP.Create; + lTmpStream := TMemoryStream.Create; + try + for i := 0 to lNSData.length-1 do + lTmpStream.WriteByte(lNSbytes[i]); + lTmpStream.Position := 0; + + Image.LoadFromStream(lTmpStream, Reader); + Image.SaveToStream(Stream, Writer); + finally + Image.Free; + Reader.Free; + Writer.Free; + lTmpStream.Free; + end; + end; + end; + + Result := True; +end; + +{------------------------------------------------------------------------------ + Method: ClipboardGetFormats + Params: ClipboardType - The type of clipboard operation + Count - The number of clipboard formats + List - Pointer to an array of supported formats + (you must free it yourself) + Returns: If the function succeeds + ------------------------------------------------------------------------------} +function TCocoaWidgetSet.ClipboardGetFormats(ClipboardType: TClipboardType; + var Count: integer; var List: PClipboardFormat): boolean; +var + ListDataSize, ListCount: Integer; + i: Integer; +begin + Result := False; + {$IFDEF VerboseClipboard} + DebugLn('TCocoaWidgetSet.ClipboardGetFormats ClipboardType' + + ClipboardTypeName[ClipboardType]); + {$ENDIF} + + ListCount := Min(ClipboardFormats.Count, Count); + ListDataSize := SizeOf(Pointer) * ListCount; + List := GetMem(ListDataSize); + + for i := 0 to ListCount - 1 do + begin + List[i] := PtrUInt(ClipboardFormats.Items[i]); + end; + + Result := True; +end; + +{------------------------------------------------------------------------------ + Method: ClipboardGetOwnerShip + Params: ClipboardType - Type of clipboard + OnRequestProc - TClipboardRequestEvent is defined in LCLType.pp + If OnRequestProc is nil the onwership will end. + FormatCount - Number of formats + Formats - Array of TClipboardFormat. The supported formats the + owner provides. + + Returns: If the function succeeds + + Sets the supported formats and requests ownership for the clipboard. + The OnRequestProc is used to get the data from the LCL and to put it on the + clipboard. + If someone else requests the ownership, the OnRequestProc will be executed + with the invalid FormatID 0 to notify the old owner of the lost of ownership. + ------------------------------------------------------------------------------} +function TCocoaWidgetSet.ClipboardGetOwnerShip(ClipboardType: TClipboardType; + OnRequestProc: TClipboardRequestEvent; FormatCount: integer; + Formats: PClipboardFormat): boolean; +var + pasteboard: NSPasteboard; + i: Integer; + lCurFormat: TCocoaClipboardData; + DataStream: TMemoryStream; + FormatToOwn: NSString; + FormatToOwnArray: NSArray; + // text format + lText: string; + lNSText: NSString; + // non-text + lNSData: NSData; + // for bitmap + image: TFPCustomImage; + lTmpStream: TMemoryStream; + reader: TFPCustomImageReader; + writer: TFPCustomImageWriter; +begin + Result := False; + {$IFDEF VerboseClipboard} + DebugLn('TCocoaWidgetSet.ClipboardGetOwnerShip ClipboardType=' + + ClipboardTypeName[ClipboardType] + ' FormatCount: ' + DbgS(FormatCount)); + {$ENDIF} + + case ClipboardType of + ctPrimarySelection: pasteboard := PrimarySelection; + ctSecondarySelection: pasteboard := SecondarySelection; + ctClipboard: pasteboard := NSPasteboard.generalPasteboard; + end; + + DataStream := TMemoryStream.Create; + try + for i := 0 to FormatCount-1 do + begin + lCurFormat := TCocoaClipboardData(Formats[i]); + if lCurFormat = nil then Continue; + DataStream.Position := 0; + DataStream.Size := 0; + OnRequestProc(Formats[i], DataStream); + + case lCurFormat.DataType of + ccdtText: + begin + FormatToOwn := lCurFormat.CocoaFormat; + FormatToOwnArray := NSArray.arrayWithObjects_count(@FormatToOwn, 1); + + DataStream.Position := 0; + SetLength(lText, DataStream.Size); + DataStream.Read(lText[1], DataStream.Size); + lNSText := NSStringUtf8(lText); + + pasteboard.declareTypes_owner(FormatToOwnArray, nil); + pasteboard.setString_forType(lNSText, lCurFormat.CocoaFormat); + end; + ccdtCocoaStandard, ccdtNonStandard: + begin + FormatToOwn := lCurFormat.CocoaFormat; + FormatToOwnArray := NSArray.arrayWithObjects_count(@FormatToOwn, 1); + + DataStream.Position := 0; + lNSData := NSData.dataWithBytes_length(DataStream.Memory, DataStream.Size); + + pasteboard.declareTypes_owner(FormatToOwnArray, nil); + pasteboard.setData_forType(lNSData, lCurFormat.CocoaFormat); + //lNSData.release; // this causes a crash + end; + ccdtBitmap: + begin + FormatToOwn := lCurFormat.CocoaFormat; + FormatToOwnArray := NSArray.arrayWithObjects_count(@FormatToOwn, 1); + + Image := TFPMemoryImage.Create(10, 10); + Reader := TFPReaderBMP.Create; + Writer := TFPWriterPNG.Create; + lTmpStream := TMemoryStream.Create; + try + DataStream.Position := 0; + Image.LoadFromStream(DataStream, Reader); + Image.SaveToStream(lTmpStream, Writer); + lTmpStream.Position := 0; + lNSData := NSData.dataWithBytes_length(lTmpStream.Memory, lTmpStream.Size); + pasteboard.declareTypes_owner(FormatToOwnArray, nil); + pasteboard.setData_forType(lNSData, lCurFormat.CocoaFormat); + //lNSData.release; + finally + Image.Free; + Reader.Free; + Writer.Free; + lTmpStream.Free; + end; + end; + end; + end; + finally + DataStream.Free; + end; + + Result := True; +end; + +{------------------------------------------------------------------------------ + Method: ClipboardRegisterFormat + Params: AMimeType - A string (usually a MIME type) identifying a new format + type to register + Returns: The registered Format identifier (TClipboardFormat) + ------------------------------------------------------------------------------} +function TCocoaWidgetSet.ClipboardRegisterFormat(const AMimeType: string): TClipboardFormat; +var + i: Integer; + lCurData: TCocoaClipboardData; + lNSStr: NSString = nil; + lDataType: TCocoaClipboardDataType; +begin + Result := 0; + + // Check first if it was already registered + for i := 0 to ClipboardFormats.Count-1 do + begin + lCurData := TCocoaClipboardData(ClipboardFormats.Items[i]); + if lCurData.MimeType = AMimeType then + begin + Result := TClipboardFormat(lCurData); + {$IFDEF VerboseClipboard} + DebugLn('TCocoaWidgetSet.ClipboardRegisterFormat AMimeType=' + AMimeType + + ' Result='+DbgS(Result)); + {$ENDIF} + Exit; + end; + end; + + // if none was found, we need to register it + + lDataType := ccdtNonStandard; + // See PredefinedClipboardMimeTypes for the most common mime-types + case AMimeType of + 'text/plain': + begin + lNSStr := NSPasteboardTypeString; + lDataType := ccdtText; + end; + 'image/png': + begin + lNSStr := NSPasteboardTypePNG; + lDataType := ccdtCocoaStandard; + end; + 'image/bmp': + begin + lNSStr := NSPasteboardTypePNG; + lDataType := ccdtBitmap; + end; + else + lNSStr := NSStringUtf8(AMimeType); + lDataType := ccdtNonStandard; + end; + + if lNSStr <> nil then + begin + lCurData := TCocoaClipboardData.Create(AMimeType, lNSStr, lDataType); + ClipboardFormats.Add(lCurData); + Result := TClipboardFormat(lCurData); + end; + + {$IFDEF VerboseClipboard} + DebugLn('TCocoaWidgetSet.ClipboardRegisterFormat AMimeType=' + AMimeType + + ' Result='+DbgS(Result)); + {$ENDIF} end; function TCocoaWidgetSet.CombineRgn(Dest, Src1, Src2: HRGN; fnCombineMode: Longint): Longint; @@ -473,8 +801,7 @@ Result := Assigned(ctx) and (not Assigned(br) or (br is TCocoaBrush)); if not Result then Exit; - with Rect do - ctx.Rectangle(Left, Top, Right, Bottom, True, TCocoaBrush(br)); + ctx.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom, True, TCocoaBrush(br)); end; function TCocoaWidgetSet.FillRgn(DC: HDC; RegionHnd: HRGN; hbr: HBRUSH): Bool; @@ -1068,12 +1395,15 @@ winnr:=NSWindow.windowNumberAtPoint_belowWindowWithWindowNumber(p,0); windowbelowpoint:=NSApp.windowWithWindowNumber(winnr); if windowbelowpoint=window then - begin + begin Result:=RecurseSubviews(window.contentView, Point); if Result<>0 then - exit; + begin + pool.release; + exit; end; end; + end; pool.release; end; @@ -1145,7 +1475,8 @@ Result:=False; end; -function TCocoaWidgetSet.GetScrollInfo(Handle: HWND; BarFlag: Integer; Var ScrollInfo: TScrollInfo): Boolean; +function TCocoaWidgetSet.GetScrollInfo(Handle: HWND; BarFlag: Integer; + var ScrollInfo: TScrollInfo): Boolean; begin Result:=False; end; @@ -1429,21 +1760,23 @@ function TCocoaWidgetSet.GetDC(hWnd: HWND): HDC; var - ctx: TCocoaContext; + ctx: TCocoaContext = nil; + lCallback: ICommonCallback; begin if hWnd = 0 then Result := HDC(ScreenContext) else begin - ctx := NSObject(hWnd).lclGetCallback.GetContext; + lCallback := NSObject(hWnd).lclGetCallback; + if lCallback <> nil then + ctx := lCallback.GetContext; if ctx = nil then begin ctx := TCocoaContext.Create(DefaultContext.ctx); - with DefaultContext.size do - ctx.InitDraw(cx, cy); + ctx.InitDraw(DefaultContext.size.cx, DefaultContext.size.cy); end; - Result := HDC(ctx) + Result := HDC(ctx); end; {$IFDEF VerboseWinAPI} @@ -1558,35 +1891,15 @@ VK_CAPITAL: Result := ToggleMap[(Modifiers and NSAlphaShiftKeyMask) <> 0]; VK_LBUTTON: - {$IFDEF NoCarbon} - Result:=DownMap[false]; // ToDo - {$ELSE} - Result := DownMap[(GetCurrentEventButtonState and $01) <> 0]; - {$ENDIF} + Result := DownMap[(NSEvent.pressedMouseButtons() and $1) <> 0]; VK_RBUTTON: - {$IFDEF NoCarbon} - Result:=DownMap[false]; // ToDo - {$ELSE} - Result := DownMap[(GetCurrentEventButtonState and $02) <> 0]; - {$ENDIF} + Result := DownMap[(NSEvent.pressedMouseButtons() and $2) <> 0]; VK_MBUTTON: - {$IFDEF NoCarbon} - Result:=DownMap[false]; // ToDo - {$ELSE} - Result := DownMap[(GetCurrentEventButtonState and $03) <> 0]; - {$ENDIF} + Result := DownMap[(NSEvent.pressedMouseButtons() and $3) <> 0]; VK_XBUTTON1: - {$IFDEF NoCarbon} - Result:=DownMap[false]; // ToDo - {$ELSE} - Result := DownMap[(GetCurrentEventButtonState and $04) <> 0]; - {$ENDIF} + Result := DownMap[(NSEvent.pressedMouseButtons() and $4) <> 0]; VK_XBUTTON2: - {$IFDEF NoCarbon} - Result:=DownMap[false]; // ToDo - {$ELSE} - Result := DownMap[(GetCurrentEventButtonState and $05) <> 0]; - {$ENDIF} + Result := DownMap[(NSEvent.pressedMouseButtons() and $5) <> 0]; else Result := 0; end; @@ -1597,7 +1910,7 @@ dc: TCocoaContext; gdi: TCocoaGDIObject; const - SName = 'TCarbonWidgetSet.SelectObject'; + SName = 'TCocoaWidgetSet.SelectObject'; begin {$IFDEF VerboseWinAPI} DebugLn(Format('TCocoaWidgetSet.SelectObject DC: %x GDIObj: %x', [ADC, GDIObj])); @@ -1730,7 +2043,7 @@ Result:=inherited SetCaretRespondToFocus(handle, ShowHideOnFocus); end; -function TCocoaWidgetSet.RectVisible(DC: HDC; const ARect: TRect): Boolean; +function TCocoaWidgetSet.RectVisible(dc: HDC; const ARect: TRect): Boolean; var ClipBox: CGRect; ctx : TCocoaContext; @@ -1762,7 +2075,7 @@ ctx := CheckDC(DC); if not Assigned(ctx) then Exit; - if (ctx <> DefaultContext) and (ctx<>ScreenContext) then + if (ctx <> DefaultContext) and (ctx<>ScreenContext) and (not ctx.isControlDC) then ctx.Free; Result := 1; end; @@ -1781,6 +2094,7 @@ function TCocoaWidgetSet.SetCursor(ACursor: HCURSOR): HCURSOR; begin + if ACursor = 0 then Result := 0 else Result := HCURSOR(TCocoaCursor(ACursor).Install); end; @@ -1933,7 +2247,7 @@ SM_CYHSCROLL, SM_CXVSCROLL, SM_CYVSCROLL: - Result := GetHiThemeMetric(kThemeMetricScrollBarWidth); + Result := Round(NSScroller.scrollerWidthForControlSize(NSRegularControlSize)); SM_CXSCREEN, SM_CXVIRTUALSCREEN: Result := Round(NSScreen.mainScreen.frame.size.width); SM_CYSCREEN, @@ -1953,10 +2267,8 @@ Result := 64 else} Result := 16; end; - SM_CXHTHUMB: - Result := GetHiThemeMetric(kThemeMetricScrollBarMinThumbWidth); - SM_CYVTHUMB: - Result := GetHiThemeMetric(kThemeMetricScrollBarMinThumbHeight); + SM_CXHTHUMB, SM_CYVTHUMB: + Result := Round(NSScroller.scrollerWidthForControlSize(NSRegularControlSize)); SM_SWSCROLLBARSPACING: Result := 0; else @@ -2056,7 +2368,6 @@ if Result = 1 then NSObject(Handle).lclScreenToLocal(P.X, P.Y); - end; function TCocoaWidgetSet.SelectClipRGN(DC: hDC; RGN: HRGN): Longint; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsbuttons.pp lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsbuttons.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsbuttons.pp 2014-10-20 06:01:39.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsbuttons.pp 2015-08-29 14:13:02.000000000 +0000 @@ -22,13 +22,14 @@ uses // libs - MacOSAll, CocoaAll, SysUtils, + MacOSAll, CocoaAll, SysUtils, Math, // LCL Classes, Controls, Buttons, LCLType, LCLProc, Graphics, GraphType, // widgetset WSButtons, WSLCLClasses, WSProc, - // LCL Carbon - CocoaWSCommon, CocoaWSStdCtrls, CocoaGDIObjects, CocoaPrivate, CocoaUtils; + // LCL Cocoa + CocoaWSCommon, CocoaWSStdCtrls, CocoaGDIObjects, CocoaPrivate, CocoaUtils, + cocoa_extra; type @@ -39,6 +40,9 @@ class function LCLGlyphPosToCocoa(ALayout: TButtonLayout): NSCellImagePosition; published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; + // + class procedure GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override; + // class procedure SetGlyph(const ABitBtn: TCustomBitBtn; const AValue: TButtonGlyph); override; class procedure SetLayout(const ABitBtn: TCustomBitBtn; const AValue: TButtonLayout); override; end; @@ -85,6 +89,27 @@ Result := TLCLIntfHandle(btn); end; +class procedure TCocoaWSBitBtn.GetPreferredSize(const AWinControl: TWinControl; + var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); +var + lButton: TCustomBitBtn absolute AWinControl; + lButtonHandle: TCocoaButton; + Size: NSSize; +begin + if not AWinControl.HandleAllocated then Exit; + + lButtonHandle := TCocoaButton(AWinControl.Handle); + // fittingSize is 10.7+ + if lButtonHandle.respondsToSelector(objcselector('fittingSize')) then + begin + Size := lButtonHandle.fittingSize(); + if lButton.Glyph <> nil then + Size.Height := Max(Size.Height, lButton.Glyph.Height + 6); // This nr is arbitrary + PreferredWidth := Round(Size.Width); + PreferredHeight := Round(Size.Height); + end; +end; + {------------------------------------------------------------------------------ Method: TCocoaWSBitBtn.SetGlyph Params: ABitBtn - LCL custom bitmap button diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawschecklst.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawschecklst.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawschecklst.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawschecklst.pas 2015-02-28 20:11:53.000000000 +0000 @@ -0,0 +1,130 @@ +{ + ***************************************************************************** + * CarbonWSCheckLst.pp * + * --------------- * + * * + * * + ***************************************************************************** + + ***************************************************************************** + This file is part of the Lazarus Component Library (LCL) + + See the file COPYING.modifiedLGPL.txt, included in this distribution, + for details about the license. + ***************************************************************************** +} +unit cocoawschecklst; + +{$mode objfpc}{$H+} +{$modeswitch objectivec1} +{$modeswitch objectivec2} + +interface + +uses + // Libs + MacOSAll, CocoaAll, Classes, sysutils, + // LCL + Controls, StdCtrls, CheckLst, LCLType, + // Widgetset + WSCheckLst, WSLCLClasses, + // LCL Cocoa + CocoaWSCommon, CocoaPrivate, CocoaUtils, CocoaWSStdCtrls; + +type + + { TCocoaWSCustomCheckListBox } + + TCocoaWSCustomCheckListBox = class(TWSCustomCheckListBox) + published + class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; + class function GetState(const ACheckListBox: TCustomCheckListBox; const AIndex: integer): TCheckBoxState; override; + class procedure SetState(const ACheckListBox: TCustomCheckListBox; const AIndex: integer; const AState: TCheckBoxState); override; + end; + +implementation + +{ TCocoaWSCustomCheckListBox } + +{------------------------------------------------------------------------------ + Method: TCocoaWSCustomCheckListBox.CreateHandle + Params: AWinControl - LCL control + AParams - Creation parameters + Returns: Handle to the control in Carbon interface + + Creates new check list box in Carbon interface with the specified parameters + ------------------------------------------------------------------------------} +class function TCocoaWSCustomCheckListBox.CreateHandle( + const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; +var + list: TCocoaCheckListBox; + scroll: TCocoaScrollView; +begin + list := NSView(TCocoaCheckListBox.alloc).lclInitWithCreateParams(AParams); + if not Assigned(list) then + begin + Result := 0; + Exit; + end; + list.callback := TLCLListBoxCallback.Create(list, AWinControl); + list.list := TCocoaStringList.Create(list); + list.addTableColumn(NSTableColumn.alloc.init); + list.setHeaderView(nil); + list.setDataSource(list); + list.setDelegate(list); + list.AllowMixedState := TCustomCheckListBox(AWinControl).AllowGrayed; + + scroll := EmbedInScrollView(list); + if not Assigned(scroll) then + begin + list.dealloc; + Result := 0; + Exit; + end; + scroll.callback := list.callback; + scroll.setHasVerticalScroller(true); + scroll.setAutohidesScrollers(true); + Result := TLCLIntfHandle(scroll); +end; + +{------------------------------------------------------------------------------ + Method: TCocoaWSCustomCheckListBox.GetState + Params: ACustomCheckListBox - LCL custom check list box + AIndex - Item index + Returns: If the specified item in check list box in Cocoa interface is + checked, grayed or unchecked + ------------------------------------------------------------------------------} +class function TCocoaWSCustomCheckListBox.GetState( + const ACheckListBox: TCustomCheckListBox; const AIndex: integer): TCheckBoxState; +var + lListBox: TCocoaCheckListBox; +begin + Result := cbUnchecked; + lListBox := TCocoaCheckListBox(GetListBox(ACheckListBox)); + if lListBox = nil then Exit; + + Result := lListBox.GetState(AIndex); +end; + +{------------------------------------------------------------------------------ + Method: TCocoaWSCustomCheckListBox.SetState + Params: ACustomCheckListBox - LCL custom check list box + AIndex - Item index to change checked value + AChecked - New checked value + + Changes checked value of item with the specified index of check list box in + Cocoa interface + ------------------------------------------------------------------------------} +class procedure TCocoaWSCustomCheckListBox.SetState( + const ACheckListBox: TCustomCheckListBox; const AIndex: integer; + const AState: TCheckBoxState); +var + lListBox: TCocoaCheckListBox; +begin + lListBox := TCocoaCheckListBox(GetListBox(ACheckListBox)); + if lListBox = nil then Exit; + + lListBox.SetState(AIndex, AState); +end; + +end. diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawscomctrls.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawscomctrls.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawscomctrls.pas 2014-12-08 04:05:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawscomctrls.pas 2015-08-10 19:03:48.000000000 +0000 @@ -29,6 +29,8 @@ class procedure PanelUpdate(const AStatusBar: TStatusBar; PanelIndex: integer); override; class procedure SetPanelText(const AStatusBar: TStatusBar; PanelIndex: integer); override; class procedure Update(const AStatusBar: TStatusBar); override; + // + class procedure GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override; end; { TCocoaWSTabSheet } @@ -41,15 +43,23 @@ { TCocoaWSCustomPage } TCocoaWSCustomPage = class(TWSCustomPage) + public + class function GetCocoaTabPageFromHandle(AHandle: HWND): TCocoaTabPage; published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; class procedure UpdateProperties(const ACustomPage: TCustomPage); override; class procedure SetProperties(const ACustomPage: TCustomPage; ACocoaControl: NSTabViewItem); + // + class procedure SetBounds(const AWinControl: TWinControl; const ALeft, ATop, AWidth, AHeight: Integer); override; end; { TCocoaWSCustomTabControl } TCocoaWSCustomTabControl = class(TWSCustomTabControl) + private + class function LCLTabPosToNSTabStyle(AShowTabs: Boolean; ABorderWidth: Integer; ATabPos: TTabPosition): NSTabViewType; + public + class function GetCocoaTabControlHandle(ATabControl: TCustomTabControl): TCocoaTabControl; published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; @@ -62,8 +72,8 @@ //class function GetPageRealIndex(const ATabControl: TCustomTabControl; AIndex: Integer): Integer; override; class function GetTabIndexAtPos(const ATabControl: TCustomTabControl; const AClientPos: TPoint): integer; override; class procedure SetPageIndex(const ATabControl: TCustomTabControl; const AIndex: integer); override; - //class procedure SetTabPosition(const ATabControl: TCustomTabControl; const ATabPosition: TTabPosition); override; - //class procedure ShowTabs(const ATabControl: TCustomTabControl; AShowTabs: boolean); override; + class procedure SetTabPosition(const ATabControl: TCustomTabControl; const ATabPosition: TTabPosition); override; + class procedure ShowTabs(const ATabControl: TCustomTabControl; AShowTabs: boolean); override; end; { TCocoaWSPageControl } @@ -252,8 +262,23 @@ end; +class procedure TCocoaWSStatusBar.GetPreferredSize(const AWinControl: TWinControl; + var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); +begin + PreferredWidth := 0; + PreferredHeight := STATUSBAR_DEFAULT_HEIGHT; +end; + { TCocoaWSCustomPage } +class function TCocoaWSCustomPage.GetCocoaTabPageFromHandle(AHandle: HWND): TCocoaTabPage; +var + lHandle: TCocoaTabPageView; +begin + lHandle := TCocoaTabPageView(AHandle); + Result := lHandle.tabPage; +end; + class function TCocoaWSCustomPage.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; var lControl: TCocoaTabPage; @@ -272,16 +297,23 @@ SetProperties(TCustomPage(AWinControl), lControl); // Set a special view for the page + // based on http://stackoverflow.com/questions/14892218/adding-a-nstextview-subview-to-nstabviewitem tabview := TCocoaTabControl(AWinControl.Parent.Handle); - tv := TCocoaTabPageView.alloc.initWithFrame( - tabview.contentRect); + tv := TCocoaTabPageView.alloc.initWithFrame(NSZeroRect); + tv.setAutoresizingMask(NSViewWidthSizable or NSViewHeightSizable); {tv.setHasVerticalScroller(True); tv.setHasHorizontalScroller(True); tv.setAutohidesScrollers(True); tv.setBorderType(NSNoBorder);} - tv.tabview := tabview; + tv.tabView := tabview; + tv.tabPage := lControl; tv.callback := TLCLCommonCallback.Create(tv, AWinControl); - lControl.setView(tv); + + // view.addSubview works better than setView, no idea why + lControl.view.setAutoresizesSubviews(True); + lControl.view.addSubview(tv); + + Result := TLCLIntfHandle(tv); end; end; @@ -311,13 +343,57 @@ ACocoaControl.setToolTip(NSStringUTF8(lHintStr)); end; +class procedure TCocoaWSCustomPage.SetBounds(const AWinControl: TWinControl; + const ALeft, ATop, AWidth, AHeight: Integer); +begin + // Pages should be fixed into their PageControl owner, + // allowing the TCocoaWSWinControl.SetBounds function to operate here + // was causing bug 28489 +end; + { TCocoaWSCustomTabControl } +class function TCocoaWSCustomTabControl.LCLTabPosToNSTabStyle(AShowTabs: Boolean; ABorderWidth: Integer; ATabPos: TTabPosition): NSTabViewType; +begin + Result := NSTopTabsBezelBorder; + if AShowTabs then + begin + case ATabPos of + tpTop: Result := NSTopTabsBezelBorder; + tpBottom: Result := NSBottomTabsBezelBorder; + tpLeft: Result := NSLeftTabsBezelBorder; + tpRight: Result := NSRightTabsBezelBorder; + end; + end + else + begin + if ABorderWidth = 0 then + Result := NSNoTabsNoBorder + else if ABorderWidth = 1 then + Result := NSNoTabsLineBorder + else + Result := NSNoTabsBezelBorder; + end; +end; + +class function TCocoaWSCustomTabControl.GetCocoaTabControlHandle(ATabControl: TCustomTabControl): TCocoaTabControl; +begin + Result := nil; + if ATabControl = nil then Exit; + if not ATabControl.HandleAllocated then Exit; + Result := TCocoaTabControl(ATabControl.Handle); +end; + class function TCocoaWSCustomTabControl.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; var lControl: TCocoaTabControl; + lTabControl: TCustomTabControl = nil; + lTabStyle: NSTabViewType = NSTopTabsBezelBorder; begin + lTabControl := TCustomTabControl(AWinControl); lControl := TCocoaTabControl.alloc.lclInitWithCreateParams(AParams); + lTabStyle := LCLTabPosToNSTabStyle(lTabControl.ShowTabs, lTabControl.BorderWidth, lTabControl.TabPosition); + lControl.setTabViewType(lTabStyle); Result := TLCLIntfHandle(lControl); if Result <> 0 then begin @@ -339,7 +415,8 @@ lTabControl := TCocoaTabControl(ATabControl.Handle); AChild.HandleNeeded(); if not Assigned(AChild) or not AChild.HandleAllocated then Exit; - lTabPage := TCocoaTabPage(AChild.Handle); + lTabPage := TCocoaWSCustomPage.GetCocoaTabPageFromHandle(AChild.Handle); + lTabPage.LCLParent := ATabControl; lTabControl.insertTabViewItem_atIndex(lTabPage, AIndex); {$IFDEF COCOA_DEBUG_TABCONTROL} @@ -356,7 +433,7 @@ lTabControl := TCocoaTabControl(ATabControl.Handle); AChild.HandleNeeded(); if not Assigned(AChild) or not AChild.HandleAllocated then Exit; - lTabPage := TCocoaTabPage(AChild.Handle); + lTabPage := TCocoaWSCustomPage.GetCocoaTabPageFromHandle(AChild.Handle); lTabControl.removeTabViewItem(lTabPage); lTabControl.insertTabViewItem_atIndex(lTabPage, NewIndex); @@ -411,6 +488,32 @@ lTabControl.selectTabViewItemAtIndex(AIndex); end; +class procedure TCocoaWSCustomTabControl.SetTabPosition(const ATabControl: TCustomTabControl; const ATabPosition: TTabPosition); +var + lTabControl: TCocoaTabControl = nil; + lOldTabStyle, lTabStyle: NSTabViewType; +begin + if not Assigned(ATabControl) or not ATabControl.HandleAllocated then Exit; + lTabControl := TCocoaTabControl(ATabControl.Handle); + + lOldTabStyle := lTabControl.tabViewType(); + lTabStyle := LCLTabPosToNSTabStyle(ATabControl.ShowTabs, ATabControl.BorderWidth, ATabPosition); + lTabControl.setTabViewType(lTabStyle); +end; + +class procedure TCocoaWSCustomTabControl.ShowTabs(const ATabControl: TCustomTabControl; AShowTabs: boolean); +var + lTabControl: TCocoaTabControl = nil; + lOldTabStyle, lTabStyle: NSTabViewType; +begin + if not Assigned(ATabControl) or not ATabControl.HandleAllocated then Exit; + lTabControl := TCocoaTabControl(ATabControl.Handle); + + lOldTabStyle := lTabControl.tabViewType(); + lTabStyle := LCLTabPosToNSTabStyle(AShowTabs, ATabControl.BorderWidth, ATabControl.TabPosition); + lTabControl.setTabViewType(lTabStyle); +end; + { TCocoaWSCustomListView } class function TCocoaWSCustomListView.CheckParams( @@ -466,11 +569,18 @@ WriteLn('[TCocoaWSCustomListView.CreateHandle] AWinControl='+IntToStr(PtrInt(AWinControl))); {$ENDIF} lCocoaLV := TCocoaListView.alloc.lclInitWithCreateParams(AParams); - ns := GetNSRect(0, 0, AParams.Width, AParams.Height); - lTableLV := TCocoaTableListView.alloc.initWithFrame(ns); Result := TLCLIntfHandle(lCocoaLV); if Result <> 0 then begin + ns := GetNSRect(0, 0, AParams.Width, AParams.Height); + lTableLV := TCocoaTableListView.alloc.initWithFrame(ns); + if lTableLV = nil then + begin + lCocoaLV.dealloc; + Result := 0; + exit; + end; + // Unintuitive things about NSTableView which caused a lot of headaches: // 1-> The column header appears only if the NSTableView is inside a NSScrollView // 2-> To get proper scrolling use NSScrollView.setDocumentView instead of addSubview diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawscommon.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawscommon.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawscommon.pas 2014-12-17 12:10:17.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawscommon.pas 2015-11-29 18:45:53.000000000 +0000 @@ -27,7 +27,6 @@ FPropStorage: TStringList; FContext: TCocoaContext; FHasCaret: Boolean; - FTarget: TWinControl; FBoundsReportedToChildren: boolean; FIsOpaque:boolean; FIsEventRouting:boolean; @@ -37,6 +36,7 @@ function GetIsOpaque: Boolean; procedure SetIsOpaque(AValue: Boolean); protected + FTarget: TWinControl; class function CocoaModifiersToKeyState(AModifiers: NSUInteger): PtrInt; static; class function CocoaPressedMouseButtonsToKeyState(AMouseButtons: NSUInteger): PtrInt; static; procedure OffsetMousePos(var Point: NSPoint); @@ -50,8 +50,9 @@ function GetContext: TCocoaContext; function GetTarget: TObject; function GetCallbackObject: TObject; - function MouseUpDownEvent(Event: NSEvent): Boolean; virtual; - function KeyEvent(Event: NSEvent): Boolean; virtual; + function GetCaptureControlCallback: ICommonCallBack; + function MouseUpDownEvent(Event: NSEvent; AForceAsMouseUp: Boolean = False): Boolean; virtual; + function KeyEvent(Event: NSEvent; AForceAsKeyDown: Boolean = False): Boolean; virtual; procedure MouseClick; virtual; function MouseMove(Event: NSEvent): Boolean; virtual; function scrollWheel(Event: NSEvent): Boolean; virtual; @@ -62,10 +63,12 @@ procedure DidBecomeKeyNotification; virtual; procedure DidResignKeyNotification; virtual; procedure SendOnChange; virtual; + procedure SendOnTextChanged; virtual; // text controls (like spin) respond to OnChange for this event, but not for SendOnChange function DeliverMessage(var Msg): LRESULT; virtual; overload; function DeliverMessage(Msg: Cardinal; WParam: WParam; LParam: LParam): LResult; virtual; overload; procedure Draw(ControlContext: NSGraphicsContext; const bounds, dirty: NSRect); virtual; + procedure DrawBackground(ctx: NSGraphicsContext; const bounds, dirtyRect: NSRect); virtual; function ResetCursorRects: Boolean; virtual; property HasCaret: Boolean read GetHasCaret write SetHasCaret; @@ -97,6 +100,7 @@ class procedure SetColor(const AWinControl: TWinControl); override; class procedure ShowHide(const AWinControl: TWinControl); override; class procedure Invalidate(const AWinControl: TWinControl); override; + // class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; @@ -105,7 +109,7 @@ TLCLCustomControlCallback = class(TLCLCommonCallback) public function MouseMove(Event: NSEvent): Boolean; override; - function MouseUpDownEvent(Event: NSEvent): Boolean; override; + function MouseUpDownEvent(Event: NSEvent; AForceAsMouseUp: Boolean = False): Boolean; override; end; { TCocoaWSCustomControl } @@ -116,16 +120,6 @@ const AParams: TCreateParams): TLCLIntfHandle; override; end; - { TLCLMenuItemCallback } - - TLCLMenuItemCallback = class(TLCLCommonCallback, IMenuItemCallback) - private - FMenuItemTarget: TComponent; - public - constructor Create(AOwner: NSObject; AMenuItemTarget: TComponent); reintroduce; - procedure ItemSelected; - end; - const DblClickThreshold = 3;// max Movement between two clicks of a DblClick @@ -166,9 +160,9 @@ Result:=True; end; -function TLCLCustomControlCallback.MouseUpDownEvent(Event: NSEvent): Boolean; +function TLCLCustomControlCallback.MouseUpDownEvent(Event: NSEvent; AForceAsMouseUp: Boolean = False): Boolean; begin - inherited MouseUpDownEvent(Event); + inherited MouseUpDownEvent(Event, AForceAsMouseUp); Result := True; end; @@ -287,8 +281,23 @@ Result := Self; end; +function TLCLCommonCallback.GetCaptureControlCallback: ICommonCallBack; +var + obj: NSObject; + lCaptureView: NSView; +begin + Result := nil; + if CocoaWidgetSet.CaptureControl = 0 then Exit; + obj := NSObject(CocoaWidgetSet.CaptureControl); + lCaptureView := GetNSObjectView(obj); + if (obj <> Owner) and (lCaptureView <> Owner) and not FIsEventRouting then + begin + Result := lCaptureView.lclGetCallback; + end; +end; -function TLCLCommonCallback.KeyEvent(Event: NSEvent): Boolean; + +function TLCLCommonCallback.KeyEvent(Event: NSEvent; AForceAsKeyDown: Boolean): Boolean; var UTF8VKCharacter: TUTF8Char; // char without modifiers, used for VK_ key value UTF8Character: TUTF8Char; // char to send via IntfUtf8KeyPress @@ -298,7 +307,7 @@ VKKeyCode: word; // VK_ code IsSysKey: Boolean; // Is alt (option) key down? KeyData: PtrInt; // Modifiers (ctrl, alt, mouse buttons...) - + eventType: NSEventType; (* Mac keycodes handling is not so straight. For an explanation, see @@ -639,7 +648,11 @@ end; begin - case Event.type_ of + eventType := Event.type_; + if AForceAsKeyDown then + eventType := NSKeyDown; + + case eventType of NSKeyDown: begin if not TranslateMacKeyCode then @@ -684,37 +697,32 @@ Result := MSGKIND[AButton][ClickCount]; end; -function TLCLCommonCallback.MouseUpDownEvent(Event: NSEvent): Boolean; +function TLCLCommonCallback.MouseUpDownEvent(Event: NSEvent; AForceAsMouseUp: Boolean = False): Boolean; const MSGKINDUP: array[0..3] of Integer = (LM_LBUTTONUP, LM_RBUTTONUP, LM_MBUTTONUP, LM_XBUTTONUP); - var Msg: TLMMouse; MsgContext: TLMContextMenu; MousePos: NSPoint; MButton: NSInteger; - obj:NSObject; - callback: ICommonCallback; - + lCaptureControlCallback: ICommonCallback; + //Str: string; + lEventType: NSEventType; begin Result := False; // allow cocoa to handle message if Assigned(Target) and (not (csDesigning in Target.ComponentState) and not Owner.lclIsEnabled) then Exit; - //debugln('MouseUpDownEvent '+Target.name); - if CocoaWidgetSet.CaptureControl<>0 then // check if to route event to capture control - begin - obj:=NSObject(CocoaWidgetSet.CaptureControl); - if (obj<>Owner) and not FIsEventRouting then - begin - FIsEventRouting:=true; - callback:=obj.lclGetCallback; - Result:=callback.MouseUpDownEvent(Event); - FIsEventRouting:=false; - exit; - end; - end; + lCaptureControlCallback := GetCaptureControlCallback(); + //Str := (Format('MouseUpDownEvent Target=%s Self=%x CaptureControlCallback=%x', [Target.name, PtrUInt(Self), PtrUInt(lCaptureControlCallback)])); + if lCaptureControlCallback <> nil then + begin + FIsEventRouting:=true; + Result := lCaptureControlCallback.MouseUpDownEvent(Event); + FIsEventRouting:=false; + exit; + end; // idea of multi click implementation is taken from gtk @@ -736,8 +744,10 @@ MButton := 3; end; - - case Event.type_ of + lEventType := Event.type_; + if AForceAsMouseUp then + lEventType := NSLeftMouseUp; + case lEventType of NSLeftMouseDown, NSRightMouseDown, NSOtherMouseDown: @@ -758,7 +768,7 @@ MsgContext.XPos := Round(MousePos.X); MsgContext.YPos := Round(MousePos.Y); Result := DeliverMessage(MsgContext) <> 0; - end; + end; end; NSLeftMouseUp, NSRightMouseUp, @@ -771,7 +781,7 @@ end; end; -//debugln('MouseUpDownEvent:'+DbgS(Msg.Msg)+' Target='+Target.name+); + //debugln('MouseUpDownEvent:'+DbgS(Msg.Msg)+' Target='+Target.name+); end; function TLCLCommonCallback.MouseMove(Event: NSEvent): Boolean; @@ -799,36 +809,31 @@ rect:=Owner.lclClientFrame; targetControl:=nil; - if CocoaWidgetSet.CaptureControl<>0 then // check if to route event to capture control - begin - obj:=NSObject(CocoaWidgetSet.CaptureControl); - if (obj<>Owner) and not FIsEventRouting then + callback := GetCaptureControlCallback(); + if callback <> nil then + begin + FIsEventRouting:=true; + Result := callback.MouseMove(Event); + FIsEventRouting:=false; + exit; + end + else + begin + if assigned(Target.Parent) and not PtInRect(rect, mp) then + targetControl:=Target.Parent // outside myself then route to parent + else + for i:=Target.ComponentCount-1 downto 0 do // otherwise check, if over child and route to child + if Target.Components[i] is TWinControl then + begin + childControl:=TWinControl(Target.Components[i]); + rect:=childControl.BoundsRect; + if PtInRect(rect, mp) then begin - FIsEventRouting:=true; - callback:=obj.lclGetCallback; - result:=callback.MouseMove(Event); - FIsEventRouting:=false; - exit; + targetControl:=childControl; + break; end; - end - else - begin - - if assigned(Target.Parent) and not PtInRect(rect, mp) then - targetControl:=Target.Parent // outside myself then route to parent - else - for i:=Target.ComponentCount-1 downto 0 do // otherwise check, if over child and route to child - if Target.Components[i] is TWinControl then - begin - childControl:=TWinControl(Target.Components[i]); - rect:=childControl.BoundsRect; - if PtInRect(rect, mp) then - begin - targetControl:=childControl; - break; - end; - end; - end; + end; + end; if assigned(targetControl) and not FIsEventRouting then begin @@ -878,14 +883,17 @@ FillChar(Msg, SizeOf(Msg), #0); - Msg.Msg := LM_MOUSEWHEEL; - Msg.Button :=MButton; + Msg.Button := MButton; Msg.X := round(MousePos.X); Msg.Y := round(MousePos.Y); Msg.State := TShiftState(integer(CocoaModifiersToKeyState(Event.modifierFlags))); - Msg.WheelDelta := round(event.deltaY); - + // Some info on event.deltaY can be found here: + // https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/ + // It says that deltaY=1 means 1 line, and in the LCL 1 line is 120 + Msg.WheelDelta := round(event.deltaY * 120); + // Filter out empty events - See bug 28491 + if Msg.WheelDelta = 0 then Exit; NotifyApplicationUserInput(Target, Msg.Msg); Result := DeliverMessage(Msg) <> 0; @@ -978,19 +986,24 @@ procedure TLCLCommonCallback.DidBecomeKeyNotification; begin - LCLSendActivateMsg(Target, WA_ACTIVE, false); - LCLSendSetFocusMsg(Target); + LCLSendActivateMsg(Target, WA_ACTIVE, false); + LCLSendSetFocusMsg(Target); end; procedure TLCLCommonCallback.DidResignKeyNotification; begin - LCLSendActivateMsg(Target, WA_INACTIVE, false); - LCLSendKillFocusMsg(Target); + LCLSendActivateMsg(Target, WA_INACTIVE, false); + LCLSendKillFocusMsg(Target); end; procedure TLCLCommonCallback.SendOnChange; begin - SendSimpleMessage(Target, LM_CHANGED); + SendSimpleMessage(Target, LM_CHANGED); +end; + +procedure TLCLCommonCallback.SendOnTextChanged; +begin + SendSimpleMessage(Target, CM_TEXTCHANGED); end; function TLCLCommonCallback.DeliverMessage(var Msg): LRESULT; @@ -1019,6 +1032,7 @@ if Assigned(FContext) then Exit; FContext := TCocoaContext.Create(ControlContext); + FContext.isControlDC := True; try // debugln('Draw '+Target.name+' bounds='+Dbgs(NSRectToRect(bounds))+' dirty='+Dbgs(NSRectToRect(dirty))); if FContext.InitDraw(Round(bounds.size.width), Round(bounds.size.height)) then @@ -1051,6 +1065,19 @@ end; end; +procedure TLCLCommonCallback.DrawBackground(ctx: NSGraphicsContext; const bounds, dirtyRect: NSRect); +var + lTarget: TWinControl; +begin + // Implement Color property + lTarget := TWinControl(GetTarget()); + if (lTarget.Color <> clDefault) and (lTarget.Color <> clBtnFace) then + begin + ColorToNSColor(ColorToRGB(lTarget.Color)).set_(); + NSRectFill(dirtyRect); + end; +end; + function TLCLCommonCallback.ResetCursorRects: Boolean; var ACursor: TCursor; @@ -1234,7 +1261,8 @@ //CocoaWidgetset is not using these constrains. As a result, CocoaComboBox //produces wrong size: width 3 and height 26 (or OSX 10.9) //as well as SpinEdit itself. The better approach is to use intrinsicContentSize method. - if lView.respondsToSelector(objcselector('fittingSize')) then + // Felipe: intrinsicContentSize doesn't give any better results in my tests, it results in even smaller controls + if lView.respondsToSelector(objcselector('fittingSize')) then // fittingSize is 10.7+ begin Size := lView.fittingSize(); PreferredWidth := Round(Size.width); @@ -1248,7 +1276,8 @@ if AWinControl.HandleAllocated then begin {$IFDEF COCOA_DEBUG_SETBOUNDS} - writeln('TCocoaWSWinControl.SetBounds: '+AWinControl.Name+'Bounds='+dbgs(Bounds(ALeft, ATop, AWidth, AHeight))); + writeln(Format('TCocoaWSWinControl.SetBounds: %s Bounds=%s', + [AWinControl.Name, dbgs(Bounds(ALeft, ATop, AWidth, AHeight))])); {$ENDIF} NSObject(AWinControl.Handle).lclSetFrame(Bounds(ALeft, ATop, AWidth, AHeight)); end; @@ -1358,23 +1387,5 @@ Result := TLCLIntfHandle(ctrl); end; -{ TLCLMenuItemCallback } - -constructor TLCLMenuItemCallback.Create(AOwner: NSObject; AMenuItemTarget: TComponent); -begin - Owner := AOwner; - FMenuItemTarget := AMenuItemTarget; -end; - -procedure TLCLMenuItemCallback.ItemSelected; -var - Msg:TLMessage; -begin - FillChar(Msg{%H-}, SizeOf(Msg), 0); - Msg.msg := LM_ACTIVATE; - // debugln('send LM_Activate'); - LCLMessageGlue.DeliverMessage(FMenuItemTarget,Msg); -end; - end. diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsdialogs.pp lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsdialogs.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsdialogs.pp 2014-02-09 13:29:42.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsdialogs.pp 2015-09-28 17:53:18.000000000 +0000 @@ -85,14 +85,23 @@ class procedure ShowModal(const ACommonDialog: TCommonDialog); override; end; + TColorPanelDelegate = objcclass(NSObject, NSWindowDelegateProtocol) + public + colorPanel: NSColorPanel; + ColorDialog: TColorDialog; + DontPickColorOnClose: Boolean; + // NSWindowDelegateProtocol + procedure windowWillClose(notification: NSNotification); message 'windowWillClose:'; + // + procedure doPickColor; message 'doPickColor'; + procedure pickColor; message 'pickColor'; // button action + procedure exit; message 'exit'; // button action + end; implementation - - { TCocoaWSFileDialog } - {------------------------------------------------------------------------------ Method: TCocoaWSFileDialog.ShowModal Params: ACommonDialog - LCL common dialog @@ -173,14 +182,24 @@ //todo: Options - if FileDialog.FCompStyle = csOpenFileDialog then + if (FileDialog.FCompStyle = csOpenFileDialog) or + (FileDialog is TSelectDirectoryDialog) then begin openDlg := NSOpenPanel.openPanel; openDlg.setAllowsMultipleSelection(ofAllowMultiSelect in TOpenDialog(FileDialog).Options); - openDlg.setCanChooseFiles(True); + if (FileDialog is TSelectDirectoryDialog) then + begin + openDlg.setCanChooseDirectories(True); + openDlg.setCanChooseFiles(False); + end + else + begin + openDlg.setCanChooseFiles(True); + openDlg.setCanChooseDirectories(False); + openDlg.setAllowedFileTypes(nsfilter); + end; openDlg.setTitle(NSStringUtf8(FileDialog.Title)); - openDlg.setAllowedFileTypes(nsfilter); openDlg.setDirectoryURL(NSURL.fileURLWithPath(NSStringUtf8(FileDialog.InitialDir))); if openDlg.runModal = NSOKButton then @@ -192,10 +211,8 @@ NSURL(openDlg.URLs.objectAtIndex(i)).path)); FileDialog.UserChoice := mrOk; end; - end - else - if FileDialog.FCompStyle = csSaveFileDialog then + else if FileDialog.FCompStyle = csSaveFileDialog then begin saveDlg := NSSavePanel.savePanel; saveDlg.setCanCreateDirectories(True); @@ -227,19 +244,74 @@ ------------------------------------------------------------------------------} class procedure TCocoaWSColorDialog.ShowModal(const ACommonDialog: TCommonDialog); var - ColorDialog: TColorDialog; + colorDelegate: TColorPanelDelegate; + ColorDialog: TColorDialog absolute ACommonDialog; + colorPanel: NSColorPanel; + session: NSModalSession; + inColor: RGBColor = (red: 128; green: 128; blue: 128); + outColor: RGBColor = (red: 0; green: 0; blue: 0); + //point: Point; = {0, 0}; + // accessory view + accessoryView: NSView; + lRect: NSRect; + okButton, cancelButton: NSButton; begin {$IFDEF VerboseWSClass} DebugLn('TCocoaWSColorDialog.ShowModal for ' + ACommonDialog.Name); {$ENDIF} ACommonDialog.UserChoice := mrCancel; - ColorDialog := ACommonDialog as TColorDialog; -end; + colorPanel := NSColorPanel.sharedColorPanel(); + colorPanel.setColor(ColorToNSColor(ColorDialog.Color)); -{ TCocoaWSFontDialog } + colorDelegate := TColorPanelDelegate.alloc.init(); + colorDelegate.colorPanel := colorPanel; + colorDelegate.ColorDialog := ColorDialog; + + // setup panel and its accessory view + lRect := GetNSRect(0, 0, 220, 30); + accessoryView := NSView.alloc.initWithFrame(lRect); + + lRect := GetNSRect(110, 4, 110-8, 24); + okButton := NSButton.alloc.initWithFrame(lRect); + okButton.setButtonType(NSMomentaryPushInButton); + okButton.setBezelStyle(NSRoundedBezelStyle); + okButton.setTitle(NSStringUtf8('Pick')); + okButton.setAction(objcselector('pickColor')); + okButton.setTarget(colorDelegate); + + lRect := GetNSRect(8, 4, 110-8, 24); + cancelButton := NSButton.alloc.initWithFrame(lRect); + cancelButton.setButtonType(NSMomentaryPushInButton); + cancelButton.setBezelStyle(NSRoundedBezelStyle); + cancelButton.setTitle(NSStringUtf8('Cancel')); + cancelButton.SetAction(objcselector('exit')); + cancelButton.setTarget(colorDelegate); + + accessoryView.addSubview(okButton.autorelease); + accessoryView.addSubview(cancelButton.autorelease); + + colorPanel.setDelegate(colorDelegate); + colorPanel.setAccessoryView(accessoryView.autorelease); + colorPanel.setShowsAlpha(True); + colorPanel.setDefaultButtonCell(okButton.cell); + + // load user settings + (*NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSString *color = [defaults stringForKey:@"startColor"]; + if (color != nil) { + [panel setColor:[NSColor colorFromHex:color]]; + } + [panel setMode:[defaults integerForKey:@"mode"]]; // will be 0 if not set, wich is NSGrayModeColorPanel +*) + + // show panel + colorPanel.makeKeyAndOrderFront(colorDelegate); + NSApp.runModalForWindow(colorPanel); +end; +{ TCocoaWSFontDialog } {------------------------------------------------------------------------------ Method: TCocoaWSFontDialog.ShowModal @@ -259,4 +331,36 @@ AFontDialog.UserChoice := mrCancel; end; +{ TColorPanelDelegate } + +procedure TColorPanelDelegate.windowWillClose(notification: NSNotification); +begin + if not DontPickColorOnClose then + begin + ColorDialog.UserChoice := mrOk; + doPickColor(); + end; + NSApp.stopModal(); +end; + +procedure TColorPanelDelegate.doPickColor(); +begin + ColorDialog.Color := NSColorToRGB(colorPanel.color); +end; + +procedure TColorPanelDelegate.pickColor(); +begin + ColorDialog.UserChoice := mrCancel; + DontPickColorOnClose := True; + doPickColor(); + exit(); +end; + +procedure TColorPanelDelegate.exit(); +begin + ColorDialog.UserChoice := mrOk; + DontPickColorOnClose := True; + colorPanel.close(); +end; + end. diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsextctrls.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsextctrls.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsextctrls.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsextctrls.pas 2015-08-31 06:23:13.000000000 +0000 @@ -29,7 +29,7 @@ // widgetset WSExtCtrls, WSLCLClasses, WSControls, WSProc, // LCL Cocoa - CocoaPrivate, CocoaGDIObjects; + CocoaPrivate, CocoaWSMenus, CocoaGDIObjects; type diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsfactory.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsfactory.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsfactory.pas 2014-10-20 20:08:59.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsfactory.pas 2015-09-28 17:53:18.000000000 +0000 @@ -16,7 +16,8 @@ CocoaWSStdCtrls, CocoaWSComCtrls, CocoaWSDialogs, - CocoaWSSpin; + CocoaWSSpin, + CocoaWSCheckLst; // imglist function RegisterCustomImageList: Boolean; @@ -221,8 +222,8 @@ function RegisterFileDialog: Boolean; alias : 'WSRegisterFileDialog'; begin - RegisterWSComponent(TFileDialog, TCocoaWSFileDialog); - Result := True; + RegisterWSComponent(TFileDialog, TCocoaWSFileDialog); + Result := True; end; function RegisterOpenDialog: Boolean; alias : 'WSRegisterOpenDialog'; @@ -242,7 +243,8 @@ function RegisterColorDialog: Boolean; alias : 'WSRegisterColorDialog'; begin - Result := False; + RegisterWSComponent(TColorDialog, TCocoaWSColorDialog); + Result := True; end; function RegisterColorButton: Boolean; alias : 'WSRegisterColorButton'; @@ -323,7 +325,8 @@ function RegisterCustomStaticText: Boolean; alias : 'WSRegisterCustomStaticText'; begin - Result := False; + RegisterWSComponent(TCustomStaticText, TCocoaWSCustomStaticText); + Result := True; end; function RegisterCustomLabel: Boolean; alias : 'WSRegisterCustomLabel'; @@ -452,7 +455,8 @@ // CheckLst function RegisterCustomCheckListBox: Boolean; alias : 'WSRegisterCustomCheckListBox'; begin - Result := False; + RegisterWSComponent(TCustomCheckListBox, TCocoaWSCustomCheckListBox); + Result := True; end; // Forms diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsforms.pp lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsforms.pp 2014-10-20 06:01:39.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsforms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -18,6 +18,7 @@ {$mode objfpc}{$H+} {$modeswitch objectivec1} +{$include cocoadefines.inc} interface @@ -29,7 +30,7 @@ // Widgetset WSForms, WSLCLClasses, WSProc, LCLMessageGlue, // LCL Cocoa - CocoaPrivate, CocoaUtils, CocoaWSCommon, CocoaWSStdCtrls; + CocoaPrivate, CocoaUtils, CocoaWSCommon, CocoaWSStdCtrls, CocoaWSMenus; type { TLCLWindowCallback } @@ -61,7 +62,6 @@ protected public // class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; -// class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override; end; { TCocoaWSScrollBox } @@ -95,6 +95,8 @@ class function GetStyleMaskFor(ABorderStyle: TFormBorderStyle; ABorderIcons: TBorderIcons): NSUInteger; class procedure UpdateWindowIcons(AWindow: NSWindow; ABorderStyle: TFormBorderStyle; ABorderIcons: TBorderIcons); class procedure UpdateWindowMask(AWindow: NSWindow; ABorderStyle: TFormBorderStyle; ABorderIcons: TBorderIcons); + public + class function GetWindowFromHandle(const ACustomForm: TCustomForm): TCocoaWindow; published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; @@ -104,13 +106,14 @@ class procedure CloseModal(const ACustomForm: TCustomForm); override; class procedure ShowModal(const ACustomForm: TCustomForm); override; - + class procedure SetModalResult(const ACustomForm: TCustomForm; ANewValue: TModalResult); override; + class procedure SetAlphaBlend(const ACustomForm: TCustomForm; const AlphaBlend: Boolean; const Alpha: Byte); override; class procedure SetBorderIcons(const AForm: TCustomForm; const ABorderIcons: TBorderIcons); override; class procedure SetFormBorderStyle(const AForm: TCustomForm; const AFormBorderStyle: TFormBorderStyle); override; class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); override; - class procedure SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); override; + class procedure SetRealPopupParent(const ACustomForm: TCustomForm; + const APopupParent: TCustomForm); override; {need to override these } class function GetClientBounds(const AWincontrol: TWinControl; var ARect: TRect): Boolean; override; @@ -160,14 +163,28 @@ CocoaInt; const + // The documentation says we should use NSNormalWindowLevel=4 for normal forms, + // but in practice this causes the issue http://bugs.freepascal.org/view.php?id=28473 + // The only value that works is zero =( FormStyleToWindowLevel: array[TFormStyle] of NSInteger = ( - { fsNormal } 4, // NSNormalWindowLevel - { fsMDIChild } 4, // NSNormalWindowLevel - { fsMDIForm } 4, // NSNormalWindowLevel + { fsNormal } 0, + { fsMDIChild } 0, + { fsMDIForm } 0, { fsStayOnTop } 9, // NSStatusWindowLevel { fsSplash } 9, // NSStatusWindowLevel { fsSystemStayOnTop } 10 // NSModalPanelWindowLevel ); + // Window levels make the form always stay on top, so if it is supposed to + // stay on top of the app only, then a workaround is to hide it while the app + // is deactivated + FormStyleToHideOnDeactivate: array[TFormStyle] of Boolean = ( + { fsNormal } False, + { fsMDIChild } False, + { fsMDIForm } False, + { fsStayOnTop } True, + { fsSplash } True, + { fsSystemStayOnTop } False + ); HintWindowLevel = 11; // NSPopUpMenuWindowLevel @@ -261,30 +278,30 @@ ACustForm: TCustomForm; begin if not IsActivating then - begin + begin IsActivating:=True; ACustForm := Target as TCustomForm; if (ACustForm.Menu <> nil) and (ACustForm.Menu.HandleAllocated) then - begin + begin if NSObject(ACustForm.Menu.Handle).isKindOfClass_(TCocoaMenuItem) then - begin + begin if TCocoaMenuItem(ACustForm.Menu.Handle).hasSubmenu then - CocoaWidgetSet.SetMainMenu(HMENU(TCocoaMenuItem(ACustForm.Menu.Handle).submenu)) + CocoaWidgetSet.SetMainMenu(HMENU(TCocoaMenuItem(ACustForm.Menu.Handle).submenu), ACustForm.Menu) else debugln('Warning: Menu does not have a valid handle.'); - end - else - CocoaWidgetSet.SetMainMenu(ACustForm.Menu.Handle); end + else + CocoaWidgetSet.SetMainMenu(ACustForm.Menu.Handle, ACustForm.Menu); + end else - CocoaWidgetSet.SetMainMenu(0); + CocoaWidgetSet.SetMainMenu(0, nil); LCLSendActivateMsg(Target, WA_ACTIVE, false); LCLSendSetFocusMsg(Target); IsActivating:=False; - end; + end; end; procedure TLCLWindowCallback.Deactivate; @@ -294,9 +311,36 @@ end; procedure TLCLWindowCallback.CloseQuery(var CanClose: Boolean); +var + i: Integer; begin // Message results : 0 - do nothing, 1 - destroy window CanClose := LCLSendCloseQueryMsg(Target) > 0; + + // Special code for modal forms, which otherwise would get 0 here and not call Close + if (CocoaWidgetSet.CurModalForm = FTarget) and + (TCustomForm(Target).ModalResult <> mrNone) then + begin + NSApp.stopModal(); + CocoaWidgetSet.CurModalForm := nil; + {// Felipe: This code forces focusing another form, its a work around + // for a gdb issue, gdb doesn't start the app properly + // + // At this point the modal form is closed, but the previously open form isn't focused + // Focus the main window if it is visible + if Application.MainForm.Visible then Application.MainForm.SetFocus() + else + begin + // if the mainform is hidden, just choose any visible form + // ToDo: Figure out a better solution + for i := 0 to Screen.FormCount-1 do + if Screen.Forms[i].Visible then + begin + Screen.Forms[i].SetFocus(); + Break; + end; + end;} + end; end; procedure TLCLWindowCallback.Close; @@ -377,6 +421,13 @@ UpdateWindowIcons(AWindow, ABorderStyle, ABorderIcons); end; +class function TCocoaWSCustomForm.GetWindowFromHandle(const ACustomForm: TCustomForm): TCocoaWindow; +begin + Result := nil; + if not ACustomForm.HandleAllocated then Exit; + Result := TCocoaWindow(TCocoaWindowContent(ACustomForm.Handle).lclOwnWindow); +end; + class function TCocoaWSCustomForm.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; var @@ -403,13 +454,22 @@ if not Assigned(win) then begin + pool.release; Result := 0; Exit; end; - win := TCocoaWindow(win.initWithContentRect_styleMask_backing_defer(R, GetStyleMaskFor(GetDesigningBorderStyle(Form), Form.BorderIcons), NSBackingStoreBuffered, False)); + win := TCocoaWindow(win.initWithContentRect_styleMask_backing_defer(R, + GetStyleMaskFor(GetDesigningBorderStyle(Form), Form.BorderIcons), NSBackingStoreBuffered, False)); UpdateWindowIcons(win, GetDesigningBorderStyle(Form), Form.BorderIcons); - win.setLevel(FormStyleToWindowLevel[Form.FormStyle]); + // For safety, it is better to not apply any setLevel & similar if the form is just a standard style + // see issue http://bugs.freepascal.org/view.php?id=28473 + if not (Form.FormStyle in [fsNormal, fsMDIChild, fsMDIForm]) + and not (csDesigning in AWinControl.ComponentState) then + begin + win.setLevel(FormStyleToWindowLevel[Form.FormStyle]); + win.setHidesOnDeactivate(FormStyleToHideOnDeactivate[Form.FormStyle]); + end; win.enableCursorRects; TCocoaWindow(win).callback := TLCLWindowCallback.Create(win, AWinControl); win.setDelegate(win); @@ -418,9 +478,9 @@ ns.release; win.setAcceptsMouseMovedEvents(True); - cnt.callback := TCocoaWindow(win).callback; cnt.callback.IsOpaque:=true; + win.LCLForm := Form; win.setContentView(cnt); if (AParams.WndParent <> 0) then @@ -430,6 +490,9 @@ else NSWindow(AParams.WndParent).addChildWindow_ordered(win, NSWindowAbove); end; + + // support for drag & drop + win.registerForDraggedTypes(NSArray.arrayWithObjects_count(@NSFilenamesPboardType, 1)); end else begin @@ -502,12 +565,41 @@ begin // if ACustomForm.HandleAllocated then // NSPanel(ACustomForm.Handle).setStyleMask(NSwindow(ACustomForm.Handle).styleMask and not NSDocModalWindowMask); + {if CocoaWidgetSet.CurModalSession <> nil then + NSApp.endModalSession(CocoaWidgetSet.CurModalSession); + CocoaWidgetSet.CurModalSession := nil;} + {$ifdef COCOA_USE_NATIVE_MODAL} + NSApp.stopModal(); + {$endif} + CocoaWidgetSet.CurModalForm := nil; end; class procedure TCocoaWSCustomForm.ShowModal(const ACustomForm: TCustomForm); +var + win: TCocoaWindow; begin -// if ACustomForm.HandleAllocated then -// NSPanel(ACustomForm.Handle).setStyleMask(NSwindow(ACustomForm.Handle).styleMask or NSDocModalWindowMask); + // Another possible implementation is to have modal started in ShowHide with (fsModal in AForm.FormState) + win := TCocoaWSCustomForm.GetWindowFromHandle(ACustomForm); + if win = nil then Exit; + + { Another possible implementation is using a session, but this requires + disabling the other windows ourselves + CurModalSession: NSModalSession; + CocoaWidgetSet.CurModalSession := NSApp.beginModalSessionForWindow(win); + NSApp.runModalSession(CocoaWidgetSet.CurModalSession);} + + CocoaWidgetSet.CurModalForm := ACustomForm; + {$ifdef COCOA_USE_NATIVE_MODAL} + NSApp.runModalForWindow(win); + {$endif} +end; + +// If ShowModal will not be fully blocking in the future this can be removed +class procedure TCocoaWSCustomForm.SetModalResult(const ACustomForm: TCustomForm; + ANewValue: TModalResult); +begin + if (CocoaWidgetSet.CurModalForm = ACustomForm) and (ANewValue <> 0) then + CloseModal(ACustomForm); end; class procedure TCocoaWSCustomForm.SetAlphaBlend(const ACustomForm: TCustomForm; const AlphaBlend: Boolean; const Alpha: Byte); @@ -557,38 +649,28 @@ var win : NSWindow; begin - if AForm.HandleAllocated then + if AForm.HandleAllocated and not (csDesigning in AForm.ComponentState) then begin win := TCocoaWindowContent(AForm.Handle).lclOwnWindow; if Assigned(win) then + begin win.setLevel(FormStyleToWindowLevel[AFormStyle]); + win.setHidesOnDeactivate(FormStyleToHideOnDeactivate[AFormStyle]); + end; end; end; -class procedure TCocoaWSCustomForm.SetPopupParent( - const ACustomForm: TCustomForm; const APopupMode: TPopupMode; - const APopupParent: TCustomForm); -var - PopupParent: TCustomForm; +class procedure TCocoaWSCustomForm.SetRealPopupParent( + const ACustomForm: TCustomForm; const APopupParent: TCustomForm); begin - if not ACustomForm.HandleAllocated then Exit; - case APopupMode of - pmNone: - PopupParent := nil; - pmAuto: - PopupParent := Screen.ActiveForm; - pmExplicit: - PopupParent := APopupParent; - end; - - if Assigned(PopupParent) then - NSWindow(PopupParent.Handle).addChildWindow_ordered(NSWindow(ACustomForm.Handle), NSWindowAbove) - else if Assigned(NSWindow(ACustomForm.Handle).parentWindow) then NSWindow(ACustomForm.Handle).parentWindow.removeChildWindow(NSWindow(ACustomForm.Handle)); + if Assigned(APopupParent) then + NSWindow(APopupParent.Handle).addChildWindow_ordered(NSWindow(ACustomForm.Handle), NSWindowAbove); end; -class function TCocoaWSCustomForm.GetClientBounds(const AWinControl: TWinControl; var ARect: TRect): Boolean; +class function TCocoaWSCustomForm.GetClientBounds( + const AWincontrol: TWinControl; var ARect: TRect): Boolean; begin Result := False; if not AWinControl.HandleAllocated then Exit; @@ -596,7 +678,8 @@ Result := True; end; -class function TCocoaWSCustomForm.GetClientRect(const AWinControl: TWinControl; var ARect: TRect): Boolean; +class function TCocoaWSCustomForm.GetClientRect(const AWincontrol: TWinControl; + var ARect: TRect): Boolean; var x, y: Integer; begin diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsmenus.pas lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsmenus.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsmenus.pas 2014-01-25 11:41:57.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsmenus.pas 2015-09-09 05:46:43.000000000 +0000 @@ -29,6 +29,7 @@ sysutils, // LCL Controls, Forms, Menus, Graphics, LCLType, LMessages, LCLProc, Classes, + LCLMessageGlue, // Widgetset WSMenus, WSLCLClasses, // LCL Cocoa @@ -36,9 +37,69 @@ type + IMenuItemCallback = interface(ICommonCallBack) + procedure ItemSelected; + end; + + { TLCLMenuItemCallback } + + TLCLMenuItemCallback = class(TLCLCommonCallback, IMenuItemCallback) + private + FMenuItemTarget: TMenuItem; + public + constructor Create(AOwner: NSObject; AMenuItemTarget: TMenuItem); reintroduce; + procedure ItemSelected; + end; + + { TCocoaMenu } + + TCocoaMenu = objcclass(NSMenu) + public + procedure lclItemSelected(sender: id); message 'lclItemSelected:'; + function lclIsHandle: Boolean; override; + end; + + { TCocoaMenuItem } + + TCocoaMenuItem = objcclass(NSMenuItem) + public + menuItemCallback: IMenuItemCallback; + attachedAppleMenuItems: Boolean; + FMenuItemTarget: TMenuItem; + procedure UncheckSiblings(AIsChangingToChecked: Boolean = False); message 'UncheckSiblings:'; + function GetMenuItemHandle(): TMenuItem; message 'GetMenuItemHandle'; + procedure lclItemSelected(sender: id); message 'lclItemSelected:'; + function lclGetCallback: IMenuItemCallback; override; + procedure lclClearCallback; override; + function lclIsHandle: Boolean; override; + procedure attachAppleMenuItems(); message 'attachAppleMenuItems'; + end; + + TCocoaMenuItem_HideApp = objcclass(NSMenuItem) + public + procedure lclItemSelected(sender: id); message 'lclItemSelected:'; + end; + + TCocoaMenuItem_HideOthers = objcclass(NSMenuItem) + public + procedure lclItemSelected(sender: id); message 'lclItemSelected:'; + end; + + TCocoaMenuItem_Quit = objcclass(NSMenuItem) + public + procedure lclItemSelected(sender: id); message 'lclItemSelected:'; + end; + { TCocoaWSMenuItem } TCocoaWSMenuItem = class(TWSMenuItem) + private + class procedure Do_SetCheck(const ANSMenuItem: NSMenuItem; const Checked: boolean); + // used from the MenuMadness example + class function NSMenuCheckmark: NSImage; + class function NSMenuRadio: NSImage; + class function isSeparator(const ACaption: AnsiString): Boolean; + class function MenuCaption(const ACaption: AnsiString): AnsiString; published class procedure AttachMenu(const AMenuItem: TMenuItem); override; class function CreateHandle(const AMenuItem: TMenuItem): HMENU; override; @@ -62,9 +123,8 @@ { TCocoaWSMainMenu } TCocoaWSMainMenu = class(TWSMainMenu) - private - protected - public + published + class function CreateHandle(const AMenu: TMenu): HMENU; override; end; { TCocoaWSPopupMenu } @@ -77,31 +137,139 @@ implementation -// used from the MenuMadness example -function NSMenuCheckmark: NSImage; +{ TLCLMenuItemCallback } + +constructor TLCLMenuItemCallback.Create(AOwner: NSObject; AMenuItemTarget: TMenuItem); begin - Result:=NSImage.imageNamed(NSString.alloc.initWithCString('NSMenuCheckmark')); + Owner := AOwner; + FMenuItemTarget := AMenuItemTarget; end; -function NSMenuRadio: NSImage; +procedure TLCLMenuItemCallback.ItemSelected; +var + Msg:TLMessage; begin - Result:=NSImage.imageNamed(NSString.alloc.initWithCString('NSMenuRadio')) + FillChar(Msg{%H-}, SizeOf(Msg), 0); + Msg.msg := LM_ACTIVATE; + // debugln('send LM_Activate'); + LCLMessageGlue.DeliverMessage(FMenuItemTarget,Msg); end; -function isSeparator(const ACaption: AnsiString): Boolean; +{ TCocoaMenu } + +function TCocoaMenu.lclIsHandle: Boolean; begin - Result:=ACaption='-'; + Result:=true; +end; + +procedure TCocoaMenu.lclItemSelected(sender:id); +begin + +end; + +{ TCocoaMenuITem } + +function TCocoaMenuItem.lclIsHandle: Boolean; +begin + Result:=true; end; -function MenuCaption(const ACaption: AnsiString): AnsiString; +procedure TCocoaMenuItem.UncheckSiblings(AIsChangingToChecked: Boolean); var - i : Integer; + i: Integer; + lMenuItem, lSibling, lParentMenu: TMenuItem; + lSiblingHandle: NSMenuItem; +begin + //lMenuItem := GetMenuItemHandle(); + lMenuItem := FMenuItemTarget; + if lMenuItem = nil then Exit; + if not lMenuItem.RadioItem then Exit; + if (not AIsChangingToChecked) and (not lMenuItem.Checked) then Exit; + lParentMenu := lMenuItem.Parent; + if lParentMenu = nil then Exit; + for i := 0 to lParentMenu.Count - 1 do + begin + lSibling := lParentMenu.Items[i]; + if lSibling = nil then Continue; + if lSibling = lMenuItem then Continue; + + if lSibling.RadioItem and (lSibling.GroupIndex = lMenuItem.GroupIndex) and + lSibling.HandleAllocated() then + begin + lSiblingHandle := NSMenuItem(lSibling.Handle); + TCocoaWSMenuItem.Do_SetCheck(lSiblingHandle, False); + end; + end; +end; + +function TCocoaMenuItem.GetMenuItemHandle(): TMenuItem; begin - i:=Pos('&', ACaption); - if i>0 then - Result:=Copy(ACaption, 1, i-1)+Copy(ACaption,i+1, length(ACaption)) - else - Result:=ACaption; + Result := nil; + if menuItemCallback = nil then Exit; + Result := TLCLMenuItemCallback(menuItemCallback).FMenuItemTarget; +end; + +procedure TCocoaMenuItem.lclItemSelected(sender:id); +begin + menuItemCallback.ItemSelected; + UncheckSiblings(); +end; + +function TCocoaMenuItem.lclGetCallback: IMenuItemCallback; +begin + result:=menuItemCallback; +end; + +procedure TCocoaMenuItem.lclClearCallback; +begin + menuItemCallback := nil; +end; + +procedure TCocoaMenuItem.attachAppleMenuItems(); +var + item : NSMenuItem; + ns, nsCharCode: NSString; +begin + if attachedAppleMenuItems then Exit; + if not hasSubmenu() then Exit; + + nsCharCode := NSStringUtf8(''); + // Separator + submenu.insertItem_atIndex(NSMenuItem.separatorItem, submenu.itemArray.count); + // Hide App + ns := NSStringUtf8('Hide ' + Application.Title); + item := TCocoaMenuItem_HideApp.alloc.initWithTitle_action_keyEquivalent(ns, + objcselector('lclItemSelected:'), nsCharCode); + submenu.insertItem_atIndex(item, submenu.itemArray.count); + item.setTarget(item); + ns.release; + // Separator + submenu.insertItem_atIndex(NSMenuItem.separatorItem, submenu.itemArray.count); + // Quit + ns := NSStringUtf8('Quit'); + item := TCocoaMenuItem_Quit.alloc.initWithTitle_action_keyEquivalent(ns, + objcselector('lclItemSelected:'), nsCharCode); + submenu.insertItem_atIndex(item, submenu.itemArray.count); + item.setTarget(item); + ns.release; + // release mem + nsCharCode.release; + + attachedAppleMenuItems := True; +end; + +procedure TCocoaMenuItem_HideApp.lclItemSelected(sender: id); +begin + Application.Minimize; +end; + +procedure TCocoaMenuItem_HideOthers.lclItemSelected(sender: id); +begin +end; + +procedure TCocoaMenuItem_Quit.lclItemSelected(sender: id); +begin + Application.Terminate; end; { TCocoaWSMenu } @@ -115,11 +283,54 @@ ------------------------------------------------------------------------------} class function TCocoaWSMenu.CreateHandle(const AMenu: TMenu): HMENU; begin - Result:=HMENU(TCocoaMenu.alloc.init) ; + //WriteLn(':>[TCocoaWSMenu.CreateHandle]'); + Result := HMENU(TCocoaMenu.alloc.initWithTitle(NSStringUtf8(''))); +end; + +{ TCocoaWSMainMenu } + +class function TCocoaWSMainMenu.CreateHandle(const AMenu: TMenu): HMENU; +begin + Result := HMENU(TCocoaMenu.alloc.initWithTitle(NSStringUtf8(''))); end; { TCocoaWSMenuItem } +class procedure TCocoaWSMenuItem.Do_SetCheck(const ANSMenuItem: NSMenuItem; const Checked: boolean); +const + menustate : array [Boolean] of NSInteger = (NSOffState, NSOnState); +begin + ANSMenuItem.setOnStateImage(NSMenuCheckmark); + ANSMenuItem.setState( menustate[Checked] ); +end; + +// used from the MenuMadness example +class function TCocoaWSMenuItem.NSMenuCheckmark: NSImage; +begin + Result:=NSImage.imageNamed(NSString.alloc.initWithCString('NSMenuCheckmark')); +end; + +class function TCocoaWSMenuItem.NSMenuRadio: NSImage; +begin + Result:=NSImage.imageNamed(NSString.alloc.initWithCString('NSMenuRadio')) +end; + +class function TCocoaWSMenuItem.isSeparator(const ACaption: AnsiString): Boolean; +begin + Result:=ACaption='-'; +end; + +class function TCocoaWSMenuItem.MenuCaption(const ACaption: AnsiString): AnsiString; +var + i : Integer; +begin + i:=Pos('&', ACaption); + if i>0 then + Result:=Copy(ACaption, 1, i-1)+Copy(ACaption,i+1, length(ACaption)) + else + Result:=ACaption; +end; + {------------------------------------------------------------------------------ Method: TCocoaWSMenuItem.AttachMenu Params: AMenuItem - LCL menu item @@ -179,7 +390,9 @@ if not Assigned(AMenuItem) then Exit; if AMenuItem.Caption = '-' then - item := NSMenuItem.separatorItem + begin + item := NSMenuItem.separatorItem; + end else begin s := AMenuItem.Caption; @@ -191,18 +404,22 @@ item := TCocoaMenuItem.alloc.initWithTitle_action_keyEquivalent(ns, objcselector('lclItemSelected:'), nsKey); item.setKeyEquivalentModifierMask(ShiftSt); + TCocoaMenuItem(item).FMenuItemTarget := AMenuItem; if AMenuItem.IsInMenuBar then - begin + begin ANSMenu := TCocoaMenu.alloc.initWithTitle(ns); item.setSubmenu(ANSMenu); - end; + end; ns.release; nsKey.release; item.setTarget(item); TCocoaMenuItem(item).menuItemCallback:=TLCLMenuItemCallback.Create(item, AMenuItem); + + // initial set of properties item.setEnabled(AMenuItem.Enabled); + Do_SetCheck(item, AMenuItem.Checked); end; Result:=HMENU(item); @@ -310,13 +527,17 @@ ------------------------------------------------------------------------------} class function TCocoaWSMenuItem.SetCheck(const AMenuItem: TMenuItem; const Checked: boolean): boolean; -const - menustate : array [Boolean] of NSInteger = (NSOffState, NSOnState); +var + lHandle: NSMenuItem; + lCocoaHandle: TCocoaMenuItem absolute lHandle; begin - Result:=Assigned(AMenuItem) and (AMenuItem.Handle<>0); + Result := Assigned(AMenuItem) and AMenuItem.HandleAllocated() and (AMenuItem.Handle<>0); + if not Result then Exit; + lHandle := NSMenuItem(AMenuItem.Handle); + Result := Result and lHandle.isKindOfClass_(TCocoaMenuItem); if not Result then Exit; - NSMenuItem(AMenuItem.Handle).setOnStateImage( NSMenuCheckmark ); - NSMenuItem(AMenuItem.Handle).setState( menustate[Checked] ); + TCocoaWSMenuItem.Do_SetCheck(lHandle, Checked); + lCocoaHandle.UncheckSiblings(True); end; {------------------------------------------------------------------------------ @@ -364,18 +585,25 @@ Popups menu in Cocoa interface ------------------------------------------------------------------------------} -class procedure TCocoaWSPopupMenu.Popup(const APopupMenu: TPopupMenu; const X, Y: integer); -var - w : NSWindow; +class procedure TCocoaWSPopupMenu.Popup(const APopupMenu: TPopupMenu; const X, + Y: Integer); +//var + //w : NSWindow; begin - // todo: there's no way to control X,Y coordinates of the Popup menu in the OSX - // prior to 10.6. Check the if there's the method and use it, if available - if Assigned(APopupMenu) and (APopupMenu.Handle<>0) then + if Assigned(APopupMenu) and (APopupMenu.Handle<>0) then begin - w:=NSApp.keyWindow; + // old method which doesn't consider position but supports 10.0+ (useless since we target 10.6+) + {w:=NSApp.keyWindow; if Assigned(w) then + begin NSMenu.popUpContextMenu_withEvent_forView( TCocoaMenu(APopupMenu.Handle), NSApp.currentEvent, NSView(w.contentView)); + end;} + + // New method for 10.6+ + TCocoaMenu(APopupMenu.Handle).popUpMenuPositioningItem_atLocation_inView( + nil, GetNSPoint(X, Y), nil); + APopupMenu.Close; // notify LCL popup menu end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsstdctrls.pp lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsstdctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/cocoa/cocoawsstdctrls.pp 2014-12-12 03:49:53.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/cocoa/cocoawsstdctrls.pp 2015-11-15 20:00:10.000000000 +0000 @@ -40,6 +40,7 @@ TCocoaWSScrollBar = class(TWSScrollBar) published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; + class procedure SetKind(const AScrollBar: TCustomScrollBar; const AIsHorizontal: Boolean); override; class procedure SetParams(const AScrollBar: TCustomScrollBar); override; end; @@ -136,6 +137,8 @@ class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override; + //class function GetCanUndo(const ACustomEdit: TCustomEdit): Boolean; override; + class function GetCaretPos(const ACustomEdit: TCustomEdit): TPoint; override; class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override; class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override; @@ -189,6 +192,7 @@ class procedure SetState(const ACustomCheckBox: TCustomCheckBox; const NewState: TCheckBoxState); override; // class procedure GetPreferredSize(const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer; {%H-}WithThemeSpace: Boolean); override; + class procedure SetText(const AWinControl: TWinControl; const AText: String); override; end; { TCocoaWSToggleBox } @@ -218,7 +222,7 @@ private protected public -// class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; + class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; // class procedure SetAlignment(const ACustomStaticText: TCustomStaticText; const NewAlignment: TAlignment); override; end; @@ -227,6 +231,8 @@ function AllocTextField(ATarget: TWinControl; const AParams: TCreateParams): TCocoaTextField; function AllocSecureTextField(ATarget: TWinControl; const AParams: TCreateParams): TCocoaSecureTextField; +function GetListBox(AWinControl: TWinControl): TCocoaListBox; + implementation const @@ -316,6 +322,7 @@ var SubView: NSView; begin + if not Owner.lclIsEnabled() then Exit; if NSButton(Owner).state = NSOnState then begin for SubView in NSButton(Owner).superView.subviews do @@ -329,6 +336,7 @@ procedure TLCLButtonCallback.ButtonClick; begin + if not Owner.lclIsEnabled() then Exit; SendSimpleMessage(Target, LM_CLICKED); end; @@ -344,6 +352,7 @@ procedure TLCLCheckBoxCallback.ButtonClick; begin inherited; + if not Owner.lclIsEnabled() then Exit; SendSimpleMessage(Target, LM_CHANGED); // todo: win32 has something about dbcheckbox handling here. so maybe we need to handle it special too end; @@ -495,7 +504,13 @@ lButton.sizeToFit(); PreferredWidth := round(lButton.bounds.size.width); PreferredHeight := round(lButton.bounds.size.height); - lButton.setBoundsSize(lOldSize); + //lButton.setBoundsSize(lOldSize); This causes problems in SetText +end; + +class procedure TCocoaWSCustomCheckBox.SetText(const AWinControl: TWinControl; + const AText: String); +begin + TCocoaWSButton.SetText(AWinControl, AText); end; { TCocoaWSRadioButton } @@ -509,6 +524,21 @@ Result := TLCLIntfHandle(btn); end; +{ TCocoaWSCustomStaticText } + +class function TCocoaWSCustomStaticText.CreateHandle(const AWinControl: TWinControl; + const AParams: TCreateParams): TLCLIntfHandle; +var + field: NSTextField; +begin + field := NSTextField(AllocTextField(AWinControl, AParams)); + field.setBezeled(False); + field.setDrawsBackground(False); + field.setEditable(False); + field.setSelectable(False); + Result:=TLCLIntfHandle(field); +end; + { TCocoaWSCustomEdit } class function TCocoaWSCustomEdit.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; @@ -758,6 +788,11 @@ nr:=scr.documentVisibleRect; txt.setFrame(nr); txt.textContainer.setLineFragmentPadding(0); + txt.lclSetEnabled(True); + + // ToDo: This should be made selectable in the LCL + txt.setAutomaticQuoteSubstitutionEnabled(False); + txt.setAutomaticTextReplacementEnabled(False); txt.callback := TLCLCommonCallback.Create(txt, AWinControl); ns := NSStringUtf8(AParams.Caption); @@ -779,8 +814,49 @@ Result := nil end; -class function TCocoaWSCustomMemo.GetSelStart(const ACustomEdit: TCustomEdit - ): integer; +class function TCocoaWSCustomMemo.GetCaretPos(const ACustomEdit: TCustomEdit): TPoint; +var + txt: TCocoaTextView; + lValue: NSValue; + viewString: NSString; + paraStart: NSUInteger = 0; + paraEnd: NSUInteger = 0; + contentsEnd: NSUInteger = 0; + curLine: Integer = 0; +begin + Result := Point(0, 0); + txt := MemoTextView(ACustomEdit); + if not Assigned(txt) then Exit; + lValue := NSValue(txt.selectedRanges.objectAtIndex(0)); + if lValue = nil then Exit; + + viewString := txt.string_; + Result.X := lValue.rangeValue.location; + + // There is no simple function to do this in Cocoa :( + while (paraEnd < viewString.length) do + begin + viewString.getLineStart_end_contentsEnd_forRange(@paraStart, + @paraEnd, @contentsEnd, NSMakeRange(paraEnd, 0)); + + if (lValue.rangeValue.location >= paraStart) and + (lValue.rangeValue.location < paraEnd) then + begin + Break; + end + else + Result.X := Result.X - (paraEnd - paraStart); + + Inc(curLine); + end; + Result.Y := curLine; + + {This doesn't work :/ + lineRange := viewString.lineRangeForRange(lValue.rangeValue); + Result.X := lineRange.location;} +end; + +class function TCocoaWSCustomMemo.GetSelStart(const ACustomEdit: TCustomEdit): integer; var txt: TCocoaTextView; begin @@ -865,8 +941,12 @@ begin rocmb := NSView(TCocoaReadOnlyComboBox.alloc).lclInitWithCreateParams(AParams); if not Assigned(rocmb) then Exit; + rocmb.Owner := TCustomComboBox(AWinControl); rocmb.callback:=TLCLComboboxCallback.Create(rocmb, AWinControl); rocmb.list:=TCocoaComboBoxList.Create(nil, rocmb); + rocmb.setTarget(rocmb); + rocmb.setAction(objcselector('comboboxAction:')); + rocmb.selectItemAtIndex(rocmb.lastSelectedItemIndex); Result:=TLCLIntfHandle(rocmb); end else @@ -899,12 +979,18 @@ class procedure TCocoaWSCustomComboBox.SetItemIndex(const ACustomComboBox: TCustomComboBox;NewIndex:integer); +var + rocmb: TCocoaReadOnlyComboBox; begin if (not Assigned(ACustomComboBox)) or (not ACustomComboBox.HandleAllocated) then Exit; if ACustomComboBox.ReadOnly then - TCocoaReadOnlyComboBox(ACustomComboBox.Handle).selectItemAtIndex(NewIndex) + begin + rocmb := TCocoaReadOnlyComboBox(ACustomComboBox.Handle); + rocmb.lastSelectedItemIndex := NewIndex; + rocmb.selectItemAtIndex(NewIndex); + end else TCocoaComboBox(ACustomComboBox.Handle).selectItemAtIndex(NewIndex); end; @@ -993,18 +1079,37 @@ begin scr:=NSView(TCocoaScrollBar.alloc).lclInitWithCreateParams(AParams); scr.callback:=TLCLCommonCallback.Create(scr, AWinControl); + + // OnChange (scrolling) event handling + scr.LCLScrollBar := TCustomScrollBar(AWinControl); + scr.setTarget(scr); + scr.setAction(objcselector('actionScrolling:')); + Result:=TLCLIntfHandle(scr); end; +// vertical/horizontal in Cocoa is set automatically according to +// the geometry of the scrollbar, it cannot be forced to an unusual value +class procedure TCocoaWSScrollBar.SetKind(const AScrollBar: TCustomScrollBar; const AIsHorizontal: Boolean); +begin + // do nothing +end; + class procedure TCocoaWSScrollBar.SetParams(const AScrollBar:TCustomScrollBar); +var + lScroller: TCocoaScrollBar; begin - if not Assigned(AScrollBar) or (AScrollBar.Handle=0) then Exit; - with AScrollBar do - if Max>0 then begin - TCocoaScrollBar(Handle).setFloatValue_knobProportion( Position/Max, PageSize/Max); - //if TCocoaScrollBar(Handle).setKnobProportion( PageSize/Max ); - //if TCocoaScrollBar(Handle).setDoubleValue( Position/Max ); - end; + if not Assigned(AScrollBar) then Exit; + lScroller := TCocoaScrollBar(AScrollBar.Handle); + if (lScroller = nil) then Exit; + if AScrollBar.Max > 0 then + begin + lScroller.setFloatValue_knobProportion( + AScrollBar.Position / AScrollBar.Max, + AScrollBar.PageSize / AScrollBar.Max); + //if TCocoaScrollBar(Handle).setKnobProportion( PageSize/Max ); + //if TCocoaScrollBar(Handle).setDoubleValue( Position/Max ); + end; end; { TCocoaWSCustomGroupBox } @@ -1014,6 +1119,9 @@ var box: TCocoaGroupBox; cap: NSString; + lGroupBoxContents: TCocoaCustomControl; + ns: NSRect; + //str: string; begin box := NSView(TCocoaGroupBox.alloc).lclInitWithCreateParams(AParams); if Assigned(box) then @@ -1022,6 +1130,14 @@ cap := NSStringUTF8(AParams.Caption); box.setTitle(cap); cap.release; + + // set a content view in order to be able to customize drawing for labels/color + ns := GetNSRect(AParams.X, AParams.Y, AParams.Width, AParams.Height); + lGroupBoxContents := TCocoaCustomControl(TCocoaCustomControl.alloc.initWithFrame(ns)); + lGroupBoxContents.callback := TLCLCustomControlCallback.Create(lGroupBoxContents, AWinControl); + //str := Format('%X=%X', [PtrUInt(box.callback), PtrUInt(lGroupBoxContents.callback)]); + lGroupBoxContents.autorelease; + box.setContentView(lGroupBoxContents); end; Result := TLCLIntfHandle(box); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/cocoautils.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/cocoautils.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/cocoautils.pas 2011-11-07 19:33:49.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/cocoautils.pas 2015-11-11 13:39:42.000000000 +0000 @@ -133,12 +133,10 @@ function CGRectToRect(const c:CGRect):TRect; begin - with Result do begin - Left:=round(c.origin.x); - Top:=round(c.origin.y); - Right:=round(c.origin.x+c.size.width); - Bottom:=round(c.origin.y+c.size.height); - end; + Result.Left:=round(c.origin.x); + Result.Top:=round(c.origin.y); + Result.Right:=round(c.origin.x+c.size.width); + Result.Bottom:=round(c.origin.y+c.size.height); end; function RectToNSRect(const r: TRect): NSRect; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnint.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnint.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnint.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnint.pas 2015-12-06 16:00:06.000000000 +0000 @@ -30,7 +30,7 @@ // XML XMLRead, Dom, // Platform specific - {$ifdef CD_Windows}Windows, customdrawn_WinProc,{$endif} + {$ifdef CD_Windows}Windows, customdrawn_WinProc, customdrawn_winextra,{$endif} {$ifdef CD_Cocoa}MacOSAll, CocoaAll, customdrawn_cocoaproc, CocoaGDIObjects,Types,{$endif} {$ifdef CD_X11}X, XLib, XUtil, BaseUnix, customdrawn_x11proc,{$ifdef CD_UseNativeText}xft, fontconfig,{$endif}{$endif} {$ifdef CD_Android} @@ -38,17 +38,17 @@ {$endif} {$ifdef WinCE}aygshell,{$endif} // LazUtils - fileutil, lazutf8, + LazFileUtils, lazutf8, {$ifndef CD_UseNativeText} // LazFreeType LazFreeTypeIntfDrawer, LazFreeType, EasyLazFreeType, IniFiles, {$endif} // Widgetset - customdrawnproc, + customdrawnproc, customdrawnthemes, // LCL customdrawn_common, customdrawncontrols, customdrawndrawers, lazcanvas, lazregions, lazdeviceapis, - InterfaceBase, + InterfaceBase, Themes, Dialogs, Buttons, Controls, Forms, lclproc, IntfGraphics, GraphType, LCLType, LMessages, Graphics, LCLStrConsts, Menus, LazLoggerBase; @@ -249,7 +249,7 @@ procedure CDSetFocusToControl(ALCLControl, AIntfControl: TWinControl); // protected - {function CreateThemeServices: TThemeServices; override;} + function CreateThemeServices: TThemeServices; override; function GetAppHandle: THandle; override; //BackendSpecific //procedure SetAppHandle(const AValue: THandle); override; // diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_android.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_android.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_android.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_android.inc 2015-04-30 08:34:13.000000000 +0000 @@ -272,7 +272,7 @@ ARawImage.Init; end; -function TCDWidgetset.ShowSelectItemDialog(const AItems: TStrings): Boolean; +function TCDWidgetset.ShowSelectItemDialog(const AItems: TStrings; APos: TPoint): Boolean; var javaAndroidAppAlertDialogBuilderClass: JClass = nil; javaCharSequence: JClass = nil; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintfh.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintfh.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintfh.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintfh.inc 2015-04-30 08:34:13.000000000 +0000 @@ -78,7 +78,10 @@ procedure SetEventHandlerFlags(AHandler: PEventHandler; NewFlags: dword); override; procedure SetRubberBandRect(const ARubberBand: HWND; const ARect: TRect); override;*) -function ShowSelectItemDialog(const AItems: TStrings): Boolean; override; +function ShowSelectItemDialog(const AItems: TStrings; APos: TPoint): Boolean; override; +{$ifndef CD_HasNativeSelectItemDialog} +procedure HandleSelectItemDialogClose(ASender: TObject); +{$endif} procedure ShowVirtualKeyboard(); // No need to implement this one as the default is redirecting to ExtTextOut diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf.inc 2015-04-30 08:34:13.000000000 +0000 @@ -757,10 +757,29 @@ end;*) {$ifndef CD_HasNativeSelectItemDialog} -function TCDWidgetset.ShowSelectItemDialog(const AItems: TStrings): Boolean; +function TCDWidgetset.ShowSelectItemDialog(const AItems: TStrings; APos: TPoint): Boolean; +var + i: Integer; + lPopUpMenu: TPopUpMenu; + lCurItem: TMenuItem; begin - Result := False; + lPopUpMenu := TPopUpMenu.Create(nil); + for i := 0 to AItems.Count-1 do + begin + lCurItem := TMenuItem.Create(lPopUpMenu); + lPopUpMenu.Items.Add(lCurItem); + lCurItem.Caption := AItems[i]; + end; + lPopUpMenu.OnClose := @HandleSelectItemDialogClose; + lPopUpMenu.PopUp(APos.X, APos.Y); + Result := True; end; + +procedure TCDWidgetset.HandleSelectItemDialogClose(ASender: TObject); +begin + //ASender.Free; Crashes in X11 =( Fix me!!! +end; + {$endif} (*function TQtWidgetSet.TextUTF8Out(DC: HDC; X, Y: Integer; Str: PChar; Count: Longint): Boolean; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_win.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_win.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_win.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnlclintf_win.inc 2015-04-24 11:18:58.000000000 +0000 @@ -125,9 +125,91 @@ ButtonCount : LongInt; DefaultIndex : LongInt; EscapeResult : LongInt) : LongInt; +var + i: Integer; + Caption: String; + TaskConfig: TTASKDIALOGCONFIG; + DialogButtons: PTASKDIALOG_BUTTON; + State: TApplicationState; begin - Result := 0; - Application.MessageBox(PChar(DialogMessage), PChar(DialogCaption), MB_OK); + //TaskDialogIndirect is available in Vista and up, but only if app was built with manifest. + //The check for the latter is done by checking for ComCtlVersionIE6 (which is set in the manifest) + //The availability of TaskDialogIndirect does not depend on the status of ThemeServices + //Issue #0027664 + if (WindowsVersion >= wvVista) and (GetFileVersion(comctl32) >= ComCtlVersionIE6) then + begin + FillChar(TaskConfig, SizeOf(TaskConfig), 0); + TaskConfig.cbSize := SizeOf(TaskConfig); + // if we skip hwndParent our form will be a root window - with the taskbar item and icon + // this is unwanted + if Assigned(Screen.ActiveCustomForm) then + TaskConfig.hwndParent := Screen.ActiveCustomForm.Handle + else + if Assigned(Application.MainForm) then + TaskConfig.hwndParent := Application.MainFormHandle + else + TaskConfig.hwndParent := AppHandle; + TaskConfig.hInstance := HInstance; + TaskConfig.dwFlags := TDF_ALLOW_DIALOG_CANCELLATION; + if DialogCaption <> '' then + Caption := DialogCaption + else + case DialogType of + idDialogConfirm, + idDialogInfo, + idDialogWarning, + idDialogError: Caption := GetDialogCaption(DialogType); + else + Caption := Application.Title; + end; + TaskConfig.pszWindowTitle := PWideChar(UTF8ToUTF16(Caption)); + + case DialogType of + idDialogConfirm: + begin + TaskConfig.hMainIcon := Windows.LoadIcon(0, IDI_QUESTION); + TaskConfig.dwFlags := TaskConfig.dwFlags or TDF_USE_HICON_MAIN; + end; + idDialogInfo: TaskConfig.pszMainIcon := TD_INFORMATION_ICON; + idDialogWarning: TaskConfig.pszMainIcon := TD_WARNING_ICON; + idDialogError: TaskConfig.pszMainIcon := TD_ERROR_ICON; + idDialogShield: TaskConfig.pszMainIcon := TD_SHIELD_ICON; + else + TaskConfig.dwFlags := TaskConfig.dwFlags or TDF_USE_HICON_MAIN; + end; + + TaskConfig.pszContent := PWideChar(UTF8ToUTF16(DialogMessage)); + + TaskConfig.cButtons := ButtonCount; + GetMem(DialogButtons, SizeOf(TTASKDIALOG_BUTTON) * ButtonCount); + for i := 0 to ButtonCount - 1 do + begin + DialogButtons[i].nButtonID := Buttons[i]; + DialogButtons[i].pszButtonText := UTF8StringToPWideChar(GetButtonCaption(Buttons[i])); + end; + TaskConfig.pButtons := DialogButtons; + //we need idButtonXX value + if DefaultIndex < ButtonCount then + TaskConfig.nDefaultButton := Buttons[DefaultIndex] + else + TaskConfig.nDefaultButton := 0; + + State := SaveApplicationState; + try + Result := IDCANCEL; + TaskDialogIndirect(@TaskConfig, @Result, nil, nil); + if Result = IDCANCEL then + Result := EscapeResult; + finally + RestoreApplicationState(State); + for i := 0 to ButtonCount - 1 do + FreeMem(DialogButtons[i].pszButtonText); + FreeMem(DialogButtons); + end; + end + else + Result := inherited PromptUser(DialogCaption, DialogMessage, DialogType, + Buttons, ButtonCount, DefaultIndex, EscapeResult); end; {------------------------------------------------------------------------------ diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnobject.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnobject.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnobject.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnobject.inc 2015-04-24 08:36:08.000000000 +0000 @@ -76,6 +76,11 @@ end; end; +function TCDWidgetSet.CreateThemeServices: TThemeServices; +begin + Result := TCDThemeServices.Create; +end; + procedure TCDWidgetSet.GenericAppInit; begin {$ifndef CD_UseNativeText} diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnproc.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnproc.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnproc.pas 2012-08-15 18:32:12.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnproc.pas 2015-12-06 16:00:06.000000000 +0000 @@ -10,7 +10,7 @@ Types, Classes, SysUtils, fpimage, fpcanvas, Math, // LazUtils - fileutil, + LazFileUtils, {$ifndef CD_UseNativeText} // LazFreeType TTTypes, LazFreeTypeIntfDrawer, LazFreeType, EasyLazFreeType, IniFiles, @@ -534,8 +534,8 @@ lControlStateEx.Font := lWinControl.Font; lControlStateEx.Caption := lWinControl.Caption; lControlStateEx.ParentRGBColor := lWinControl.GetRGBColorResolvingParent(); - GetDefaultDrawer().DrawGroupBox(lControlCanvas, Size(lWinControl.Width, lWinControl.Height), - [], lControlStateEx); + GetDefaultDrawer().DrawGroupBox(lControlCanvas, Point(0,0), + Size(lWinControl.Width, lWinControl.Height), [], lControlStateEx); finally lControlStateEx.Free; lControlCanvas.RestoreState(-1); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnthemes.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnthemes.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnthemes.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnthemes.pas 2015-04-24 11:11:29.000000000 +0000 @@ -0,0 +1,678 @@ +{ --------------------------------------------------- + customdrawnthemes.pas - CustomDrawn Theme support + --------------------------------------------------- + + See Themes.pas for licencing and other further information. +} +unit customdrawnthemes; + +{$mode objfpc}{$H+} + +interface + +uses + // rtl + Types, Classes, SysUtils, + // lcl + LCLType, LCLProc, LCLIntf, Graphics, Themes, TmSchema, lazcanvas, + customdrawndrawers; + +type + { TCDThemeServices } + + TCDThemeServices = class(TThemeServices) + private + protected +(* + function InitThemes: Boolean; override; + function UseThemes: Boolean; override; + function ThemedControlsEnabled: Boolean; override; + procedure InternalDrawParentBackground({%H-}Window: HWND; {%H-}Target: HDC; {%H-}Bounds: PRect); override; +*) +(* function DrawButtonElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; + function DrawComboBoxElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; + function DrawHeaderElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; + function DrawRebarElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect;*) + function DrawToolBarElement(DC: TLazCanvas; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; + function DrawTreeviewElement(DC: TLazCanvas; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; +(* function DrawWindowElement(DC: TCarbonDeviceContext; Details: TThemedElementDetails; R: TRect; {%H-}ClipRect: PRect): TRect; +*) + public + procedure DrawElement(DC: HDC; Details: TThemedElementDetails; const R: TRect; ClipRect: PRect); override; +(* + procedure DrawEdge({%H-}DC: HDC; {%H-}Details: TThemedElementDetails; const {%H-}R: TRect; {%H-}Edge, {%H-}Flags: Cardinal; {%H-}AContentRect: PRect); override; + procedure DrawIcon({%H-}DC: HDC; {%H-}Details: TThemedElementDetails; const {%H-}R: TRect; {%H-}himl: HIMAGELIST; {%H-}Index: Integer); override; + procedure DrawText({%H-}DC: HDC; {%H-}Details: TThemedElementDetails; const {%H-}S: String; {%H-}R: TRect; {%H-}Flags, {%H-}Flags2: Cardinal); override; + + function ContentRect({%H-}DC: HDC; Details: TThemedElementDetails; BoundingRect: TRect): TRect; override; + function HasTransparentParts({%H-}Details: TThemedElementDetails): Boolean; override; + function GetDetailSize(Details: TThemedElementDetails): TSize; override; + function GetOption(AOption: TThemeOption): Integer; override; +*) + end; + +implementation + +{ TCDThemeServices } + +(* +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.DrawComboBoxElement + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + ClipRect - Clipping rectangle + Returns: ClientRect + + Draws a ComboBox element with native Carbon look + ------------------------------------------------------------------------------} +function TCarbonThemeServices.DrawComboBoxElement(DC: TCarbonDeviceContext; + Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; +var + ButtonDrawInfo: HIThemeButtonDrawInfo; + BoundsRect: HIRect; + NewHeight: Integer; + BtnWidth: Integer; +begin + ButtonDrawInfo.version := 0; + ButtonDrawInfo.State := GetDrawState(Details); + ButtonDrawInfo.value := kThemeButtonOn; + ButtonDrawInfo.adornment := kThemeAdornmentNone; + + BoundsRect := RectToCGRect(R); + + NewHeight := GetCarbonThemeMetric(kThemeMetricPopupButtonHeight); + BtnWidth := GetCarbonThemeMetric(kThemeMetricComboBoxLargeDisclosureWidth); + ButtonDrawInfo.kind := kThemeComboBox; + if BoundsRect.size.height < NewHeight then begin + NewHeight := GetCarbonThemeMetric(kThemeMetricSmallPopupButtonHeight); + BtnWidth := GetCarbonThemeMetric(kThemeMetricComboBoxSmallDisclosureWidth); + ButtonDrawInfo.kind := kThemeComboBoxSmall; + end; + if BoundsRect.size.height < NewHeight then begin + NewHeight := GetCarbonThemeMetric(kThemeMetricMiniPopupButtonHeight); + BtnWidth := GetCarbonThemeMetric(kThemeMetricComboBoxMiniDisclosureWidth); + ButtonDrawInfo.kind := kThemeComboBoxMini; + end; + + OSError( + HIThemeDrawButton(BoundsRect, ButtonDrawInfo, DC.CGContext, + kHIThemeOrientationNormal, nil), + Self, 'DrawComboBoxElement', 'HIThemeDrawButton'); + + BoundsRect.size.height := NewHeight + 1; + BoundsRect.size.width := BoundsRect.size.width - BtnWidth; + Result := CGRectToRect(BoundsRect); +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.DrawButtonElement + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + ClipRect - Clipping rectangle + Returns: ClientRect + + Draws a button element with native Carbon look + ------------------------------------------------------------------------------} +function TCarbonThemeServices.DrawButtonElement(DC: TCarbonDeviceContext; + Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; +const + ButtonMap: array[BP_PUSHBUTTON..BP_USERBUTTON] of ThemeButtonKind = + ( +{BP_PUSHBUTTON } kThemeRoundedBevelButton, +{BP_RADIOBUTTON} kThemeRadioButton, +{BP_CHECKBOX } kThemeCheckBox, +{BP_GROUPBOX } kHIThemeGroupBoxKindPrimary, // ?? +{BP_USERBUTTON } kThemeRoundedBevelButton + ); +var + ButtonDrawInfo: HIThemeButtonDrawInfo; + // we can do so because GroupDrawIndo have common fields with ButtonDrawInfo + GroupDrawInfo: HIThemeGroupBoxDrawInfo absolute ButtonDrawInfo; + LabelRect: HIRect; +begin + ButtonDrawInfo.version := 0; + ButtonDrawInfo.State := GetDrawState(Details); + ButtonDrawInfo.kind := ButtonMap[Details.Part]; + if IsMixed(Details) then + ButtonDrawInfo.value := kThemeButtonMixed + else + if IsChecked(Details) then + ButtonDrawInfo.value := kThemeButtonOn + else + ButtonDrawInfo.value := kThemeButtonOff; + ButtonDrawInfo.adornment := kThemeAdornmentNone; + + LabelRect := RectToCGRect(R); + + if Details.Part = BP_GROUPBOX then + OSError( + HIThemeDrawGroupBox(LabelRect, GroupDrawInfo, DC.CGContext, + kHIThemeOrientationNormal), + Self, 'DrawButtonElement', 'HIThemeDrawGroupBox') + else + OSError( + HIThemeDrawButton(LabelRect, ButtonDrawInfo, DC.CGContext, + kHIThemeOrientationNormal, @LabelRect), + Self, 'DrawButtonElement', 'HIThemeDrawButton'); + + Result := CGRectToRect(LabelRect); +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.DrawHeaderElement + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + ClipRect - Clipping rectangle + Returns: ClientRect + + Draws a header (THeaderControl same as ListView header) element with native Carbon look + ------------------------------------------------------------------------------} +function TCarbonThemeServices.DrawHeaderElement(DC: TCarbonDeviceContext; + Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; +var + ButtonDrawInfo: HIThemeButtonDrawInfo; + PaintRect: HIRect; +begin + ButtonDrawInfo.version := 0; + ButtonDrawInfo.State := GetDrawState(Details); + ButtonDrawInfo.kind := kThemeBevelButtonSmall;//kThemeListHeaderButton; + ButtonDrawInfo.adornment := kThemeAdornmentNone; + + PaintRect := RectToCGRect(R); + + OSError( + HIThemeDrawButton(PaintRect, ButtonDrawInfo, DC.CGContext, + kHIThemeOrientationNormal, @PaintRect), + Self, 'DrawButtonElement', 'HIThemeDrawButton'); + + Result := CGRectToRect(PaintRect); +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.DrawRebarElement + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + ClipRect - Clipping rectangle + Returns: ClientRect + + Draws a rebar element (splitter) with native Carbon look + ------------------------------------------------------------------------------} +function TCarbonThemeServices.DrawRebarElement(DC: TCarbonDeviceContext; + Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; +var + SplitterInfo: HIThemeSplitterDrawInfo; + PlacardInfo: HIThemePlacardDrawInfo; + ARect: HIRect; +const + SName = 'DrawRebarElement'; +begin + ARect := RectToCGRect(R); + if Details.Part in [RP_GRIPPER, RP_GRIPPERVERT] then + begin + SplitterInfo.version := 0; + SplitterInfo.State := kThemeStateActive; + SplitterInfo.adornment := kHiThemeSplitterAdornmentNone; + + OSError( + HIThemeDrawPaneSplitter(ARect, SplitterInfo, DC.CGContext, kHIThemeOrientationNormal), + Self, SName, 'HIThemeDrawPaneSplitter'); + end + else + if Details.Part = RP_BAND then + begin + PlacardInfo.version := 0; + PlacardInfo.State := GetDrawState(Details); + + OSError( + HIThemeDrawPlacard(ARect, PlacardInfo, DC.CGContext, kHIThemeOrientationNormal), + Self, SName, 'HIThemeDrawPlacard'); + end; + + Result := CGRectToRect(ARect); +end;*) + +{------------------------------------------------------------------------------ + Method: TCDThemeServices.DrawToolBarElement + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + ClipRect - Clipping rectangle + Returns: ClientRect + + Draws a tool bar element with native Carbon look + ------------------------------------------------------------------------------} +function TCDThemeServices.DrawToolBarElement(DC: TLazCanvas; + Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; +var + lCanvas: TCanvas; + lSize: TSize; + lCDToolbarItem: TCDToolBarItem; + lCDToolbar: TCDToolBarStateEx; + lDrawer: TCDDrawer; +begin + lCDToolbarItem := TCDToolBarItem.Create; + lCDToolbar := TCDToolBarStateEx.Create; + lCanvas := TCanvas.Create; + try + lSize.CX := R.Right - R.Left; + lSize.CY := R.Bottom - R.Top; + case Details.Part of + TP_BUTTON: lCDToolbarItem.Kind := tikButton; + TP_SPLITBUTTON: lCDToolbarItem.Kind := tikCheckButton; + //TP_DROPDOWNBUTTON: lCDToolbarItem.Kind := kThemePopupButtonSmall; + //TP_SPLITBUTTONDROPDOWN: lCDToolbarItem.Kind := kThemeDisclosureButton; + //TP_SEPARATOR, TP_SEPARATORVERT, TP_DROPDOWNBUTTONGLYPH: // tikSeparator, tikDivider + else + Exit; + end; + lCDToolbarItem.Width := lSize.CX; + lCDToolbarItem.Down := IsChecked(Details); + + lCDToolbarItem.State := []; + if IsHot(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfMouseOver]; + if IsPushed(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfSunken]; + if IsChecked(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfSunken]; + if not IsDisabled(Details) then + lCDToolbarItem.State := lCDToolbarItem.State + [csfEnabled]; + + lCDToolbar.ToolBarHeight := lSize.CY; + + lDrawer := GetDrawer(dsMacOSX); + lCanvas.Handle := HDC(DC); + lDrawer.DrawToolBarItem(lCanvas, lSize, lCDToolbarItem, R.Left, R.Top, lCDToolbarItem.State, lCDToolbar); + + Result := R; + finally + lCDToolbarItem.Free; + lCDToolbar.Free; + lCanvas.Handle := 0; + lCanvas.Free; + end; +end; + +function TCDThemeServices.DrawTreeviewElement(DC: TLazCanvas; + Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; +{var + ButtonDrawInfo: HIThemeButtonDrawInfo; + LabelRect: HIRect; + lBrush: TCocoaBrush; + lOldBrush: HBRUSH; + lPen: TCocoaPen; + lOldPen: HGDIOBJ; + lColor: NSColor; + lPoints: array of TPoint;} +begin + (* case Details.Part of + TVP_TREEITEM: + begin + case Details.State of + TREIS_NORMAL: lColor := ColorToNSColor(ColorToRGB(clWindow)); + TREIS_HOT: lColor := ColorToNSColor(ColorToRGB(clHotLight)); + TREIS_SELECTED: lColor := ColorToNSColor(ColorToRGB(clHighlight)); + TREIS_DISABLED: lColor := ColorToNSColor(ColorToRGB(clWindow)); + TREIS_SELECTEDNOTFOCUS: lColor := ColorToNSColor(ColorToRGB(clBtnFace)); + TREIS_HOTSELECTED: lColor := ColorToNSColor(ColorToRGB(clHighlight)); + end; + lBrush := TCocoaBrush.Create(lColor, False); + DC.Rectangle(R.Left, R.Top, R.Right, R.Bottom, True, lBrush); + lBrush.Free; + end; + TVP_GLYPH, TVP_HOTGLYPH: + begin + // HIThemeDrawButton exists only in 32-bits and there is no Cocoa alternative =( + {.$define CocoaUseHITheme} + {$ifdef CocoaUseHITheme} + {$ifdef CPU386} + ButtonDrawInfo.version := 0; + ButtonDrawInfo.State := GetDrawState(Details); + ButtonDrawInfo.kind := kThemeDisclosureTriangle; + if Details.State = GLPS_CLOSED then + ButtonDrawInfo.value := kThemeDisclosureRight + else + ButtonDrawInfo.value := kThemeDisclosureDown; + + ButtonDrawInfo.adornment := kThemeAdornmentNone; + LabelRect := RectToCGRect(R); + // Felipe: Manual calibration to make TTreeView look right, strange that this is needed =/ + LabelRect.origin.x := LabelRect.origin.x - 2; + LabelRect.origin.y := LabelRect.origin.y - 1; + + HIThemeDrawButton(LabelRect, ButtonDrawInfo, DC.CGContext(), + kHIThemeOrientationNormal, @LabelRect); + + Result := CGRectToRect(LabelRect); + {$endif} + {$else} + SetLength(lPoints, 3); + + // face right + if Details.State = GLPS_CLOSED then + begin + lPoints[0] := Types.Point(R.Left+1, R.Top); + lPoints[1] := Types.Point(R.Left+1, R.Bottom-2); + lPoints[2] := Types.Point(R.Right-1, (R.Top + R.Bottom-2) div 2); + end + // face down + else + begin + lPoints[0] := Types.Point(R.Left, R.Top); + lPoints[1] := Types.Point(R.Right-2, R.Top); + lPoints[2] := Types.Point((R.Left + R.Right-2) div 2, R.Bottom-2); + end; + + // select the appropriate brush & pen + lColor := ColorToNSColor(Graphics.RGBToColor(121, 121, 121)); + lBrush := TCocoaBrush.Create(lColor, False); + lOldBrush := LCLIntf.SelectObject(HDC(DC), HGDIOBJ(lBrush)); + + lPen := TCocoaPen.Create(Graphics.RGBToColor(121, 121, 121), False); + lOldPen := LCLIntf.SelectObject(HDC(DC), HGDIOBJ(lPen)); + + // Draw the triangle + DC.Polygon(lPoints, 3, True); + + // restore the old brush and pen + LCLIntf.SelectObject(HDC(DC), lOldBrush); + LCLIntf.SelectObject(HDC(DC), lOldPen); + lBrush.Free; + lPen.Free; + + Result := R; + {$endif} + end; + end; *) +end; + +(*function TCarbonThemeServices.DrawWindowElement(DC: TCarbonDeviceContext; + Details: TThemedElementDetails; R: TRect; ClipRect: PRect): TRect; +var + WindowDrawInfo: HIThemeWindowDrawInfo; + WindowWidgetDrawInfo: HIThemeWindowWidgetDrawInfo; + BtnRect: HIRect; + WindowShape: HIShapeRef; + WindowRegion: WindowRegionCode; + Offset: TPoint; +begin + WindowWidgetDrawInfo.version := 0; + WindowWidgetDrawInfo.windowState := kThemeStateActive; + WindowWidgetDrawInfo.windowType := kThemeDocumentWindow; + WindowWidgetDrawInfo.widgetState := GetDrawState(Details); + WindowWidgetDrawInfo.titleHeight := 0; + WindowWidgetDrawInfo.titleWidth := 0; + WindowWidgetDrawInfo.attributes := kThemeWindowHasFullZoom or kThemeWindowHasCloseBox or kThemeWindowHasCollapseBox; + case Details.Part of + WP_MINBUTTON, + WP_MDIMINBUTTON: + begin + WindowWidgetDrawInfo.widgetType := kThemeWidgetCollapseBox; + WindowRegion := kWindowCollapseBoxRgn; + end; + WP_MAXBUTTON: + begin + WindowWidgetDrawInfo.widgetType := kThemeWidgetZoomBox; + WindowRegion := kWindowZoomBoxRgn; + end; + WP_CLOSEBUTTON, + WP_SMALLCLOSEBUTTON, + WP_MDICLOSEBUTTON: + begin + WindowWidgetDrawInfo.widgetType := kThemeWidgetCloseBox; + WindowRegion := kWindowCloseBoxRgn; + end; + WP_RESTOREBUTTON, + WP_MDIRESTOREBUTTON: + begin + WindowWidgetDrawInfo.widgetType := kThemeWidgetZoomBox; + WindowRegion := kWindowZoomBoxRgn; + end; + else + Exit; + end; + // We have a button rectanle but carbon expects from us a titlebar rectangle, + // so we need to translate one coordinate to another + BtnRect := RectToCGRect(Types.Rect(0, 0, 100, 100)); + WindowDrawInfo.version := 0; + WindowDrawInfo.windowType := WindowWidgetDrawInfo.windowType; + WindowDrawInfo.attributes := WindowWidgetDrawInfo.attributes; + WindowDrawInfo.state := WindowWidgetDrawInfo.windowState; + WindowDrawInfo.titleHeight := WindowWidgetDrawInfo.titleHeight; + WindowDrawInfo.titleWidth := WindowWidgetDrawInfo.titleWidth; + WindowShape:=nil; + HIThemeGetWindowShape(BtnRect, WindowDrawInfo, WindowRegion, WindowShape); + HIShapeGetBounds(WindowShape, BtnRect); + Offset := CGRectToRect(BtnRect).TopLeft; + OffsetRect(R, -Offset.X, -Offset.Y); + BtnRect := RectToCGRect(R); + OSError( + HIThemeDrawTitleBarWidget(BtnRect, WindowWidgetDrawInfo, DC.CGContext, + kHIThemeOrientationNormal), + Self, 'DrawTreeviewElement', 'HIThemeDrawButton'); + + Result := CGRectToRect(BtnRect); + OffsetRect(Result, Offset.X, Offset.Y); +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.InitThemes + Returns: If the themes are initialized + ------------------------------------------------------------------------------} +function TCarbonThemeServices.InitThemes: Boolean; +begin + Result := True; +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.InitThemes + Returns: If the themes have to be used + ------------------------------------------------------------------------------} +function TCarbonThemeServices.UseThemes: Boolean; +begin + Result := True; +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.ThemedControlsEnabled + Returns: If the themed controls are enabled + ------------------------------------------------------------------------------} +function TCarbonThemeServices.ThemedControlsEnabled: Boolean; +begin + Result := True; +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.ContentRect + Params: DC - Carbon device context + Details - Details for themed element + BoundingRect - Bounding rectangle + Returns: Content rectangle of the passed themed element + ------------------------------------------------------------------------------} +function TCarbonThemeServices.ContentRect(DC: HDC; + Details: TThemedElementDetails; BoundingRect: TRect): TRect; +begin + case Details.Element of + teComboBox: Result := DrawComboBoxElement(DefaultContext, Details, BoundingRect, nil); + teHeader: Result := DrawHeaderElement(DefaultContext, Details, BoundingRect, nil); + teButton: Result := DrawButtonElement(DefaultContext, Details, BoundingRect, nil); + teRebar: Result := DrawRebarElement(DefaultContext, Details, BoundingRect, nil); + teToolBar: Result := DrawToolBarElement(DefaultContext, Details, BoundingRect, nil); + teWindow: Result := DrawWindowElement(DefaultContext, Details, BoundingRect, nil); + end; +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.DrawEdge + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + Edge - Type of edge + Flags - Type of border + + Draws an edge with native Carbon look + ------------------------------------------------------------------------------} +procedure TCarbonThemeServices.DrawEdge(DC: HDC; + Details: TThemedElementDetails; const R: TRect; Edge, Flags: Cardinal; + AContentRect: PRect); +begin + +end; +*) +{------------------------------------------------------------------------------ + Method: TCDThemeServices.DrawElement + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + ClipRect - Clipping rectangle + + Draws an element with native look + ------------------------------------------------------------------------------} +procedure TCDThemeServices.DrawElement(DC: HDC; + Details: TThemedElementDetails; const R: TRect; ClipRect: PRect); +var + LazDC: TLazCanvas absolute DC; +begin + if DC = 0 then Exit; + + case Details.Element of +{ teComboBox: DrawComboBoxElement(Context, Details, R, ClipRect); + teButton: DrawButtonElement(Context, Details, R, ClipRect); + teHeader: DrawHeaderElement(Context, Details, R, ClipRect); + teRebar: DrawRebarElement(Context, Details, R, ClipRect);} + teToolBar: DrawToolBarElement(LazDC, Details, R, ClipRect); + teTreeview: DrawTreeviewElement(LazDC, Details, R, ClipRect); +// teWindow: DrawWindowElement(Context, Details, R, ClipRect); + else + //inherited DrawElement(DC, Details, R, ClipRect); this generates an endless loop + end; +end; +(* +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.DrawIcon + Params: DC - Carbon device context + Details - Details for themed element + R - Bounding rectangle + himl - Image list + Index - Icon index + + Draws an icon with native Carbon look + ------------------------------------------------------------------------------} +procedure TCarbonThemeServices.DrawIcon(DC: HDC; + Details: TThemedElementDetails; const R: TRect; himl: HIMAGELIST; + Index: Integer); +begin + +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.HasTransparentParts + Params: Details - Details for themed element + Returns: If the themed element has transparent parts + ------------------------------------------------------------------------------} +function TCarbonThemeServices.HasTransparentParts(Details: TThemedElementDetails): Boolean; +begin + Result := True; +end; + +function TCarbonThemeServices.GetDetailSize(Details: TThemedElementDetails): TSize; +const + DefaultPushButtonWidth = 70; +var + BtnRect: CGRect; + WindowDrawInfo: HIThemeWindowDrawInfo; + WindowShape: HIShapeRef; +begin + case Details.Element of + teTreeView: + if (Details.Part in [TVP_GLYPH, TVP_HOTGLYPH]) then + begin + Result := Types.Size( + GetCarbonThemeMetric(kThemeMetricDisclosureTriangleWidth), + GetCarbonThemeMetric(kThemeMetricDisclosureTriangleHeight) + ); + end + else + Result := inherited GetDetailSize(Details); + teButton: + if Details.Part = BP_PUSHBUTTON then + begin + Result := Types.Size( + DefaultPushButtonWidth, + GetCarbonThemeMetric(kThemeMetricPushButtonHeight) + ); + end else + Result := inherited GetDetailSize(Details); + teWindow: + if (Details.Part in [WP_MINBUTTON, WP_MDIMINBUTTON, WP_MAXBUTTON, WP_CLOSEBUTTON, WP_SMALLCLOSEBUTTON, WP_MDICLOSEBUTTON, WP_RESTOREBUTTON, WP_MDIRESTOREBUTTON]) then + begin + BtnRect := RectToCGRect(Types.Rect(0, 0, 100, 100)); + WindowDrawInfo.version := 0; + WindowDrawInfo.windowType := kThemeDocumentWindow; + WindowDrawInfo.attributes := kThemeWindowHasFullZoom or kThemeWindowHasCloseBox or kThemeWindowHasCollapseBox; + WindowDrawInfo.state := kThemeStateActive; + WindowDrawInfo.titleHeight := 0; + WindowDrawInfo.titleWidth := 0; + + WindowShape:=nil; + HIThemeGetWindowShape(BtnRect, WindowDrawInfo, kWindowCloseBoxRgn, WindowShape); + HIShapeGetBounds(WindowShape, BtnRect); + with BtnRect.size do + begin + Result.cx := Round(width); + Result.cy := Round(height); + end; + end else + Result := inherited GetDetailSize(Details); + else + Result := inherited GetDetailSize(Details); + end; +end; + +function TCarbonThemeServices.GetOption(AOption: TThemeOption): Integer; +begin + case AOption of + toShowButtonImages: Result := 0; + toShowMenuImages: Result := 0; + else + Result := inherited GetOption(AOption); + end; +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.InternalDrawParentBackground + Params: Window - Handle to window + Target - Carbon device context + Bounds - Bounding rectangle + + Draws the parent background with native Carbon look + ------------------------------------------------------------------------------} +procedure TCarbonThemeServices.InternalDrawParentBackground(Window: HWND; + Target: HDC; Bounds: PRect); +begin + // ? +end; + +{------------------------------------------------------------------------------ + Method: TCarbonThemeServices.DrawText + Params: DC - Carbon device context + Details - Details for themed element + S - Text string to darw + R - Bounding rectangle + Flags - Draw flags + Flags2 - Extra draw flags + + Draws the passed text with native Carbon look + ------------------------------------------------------------------------------} +procedure TCarbonThemeServices.DrawText(DC: HDC; Details: TThemedElementDetails; + const S: String; R: TRect; Flags, Flags2: Cardinal); +begin + // +end; +*) +end. + diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi.inc 2015-12-06 23:02:30.000000000 +0000 @@ -1136,7 +1136,7 @@ end else if (DFCS_BUTTONPUSH and uState) <> 0 then begin - GetDefaultDrawer().DrawButton(LazDC, lSize, lState, TCDButtonStateEx(lControlStateEx)); + GetDefaultDrawer().DrawButton(LazDC, Types.Point(0,0), lSize, lState, TCDButtonStateEx(lControlStateEx)); end else if (DFCS_BUTTONRADIOIMAGE and uState) <> 0 then begin diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_win.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_win.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_win.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_win.inc 2015-11-11 13:39:48.000000000 +0000 @@ -2356,11 +2356,9 @@ Result := customdrawn_winproc.GetWindowInfo(Handle, @Info); if Result then begin - with Info.rcWindow do - begin - Width := Right - Left; - Height := Bottom - Top; - end; + R:=Info.rcWindow; + Width := R.Right - R.Left; + Height := R.Bottom - R.Top; Width := Width - 2 * Integer(Info.cxWindowBorders); Height := Height - 2 * Integer(Info.cyWindowBorders); ExcludeCaption; @@ -2368,18 +2366,14 @@ Exit; end; Result := Boolean(Windows.GetWindowRect(lHandle, @R)); - with R do - begin - Width := Right - Left; - Height := Bottom - Top; - end; + Width := R.Right - R.Left; + Height := R.Bottom - R.Top; end - else - with WP.rcNormalPosition do - begin - Width := Right - Left; - Height := Bottom - Top; - end; + else begin + R:=WP.rcNormalPosition; + Width := R.Right - R.Left; + Height := R.Bottom - R.Top; + end; // convert top level lcl window coordinaties to win32 coord Info.dwStyle := DWORD(GetWindowLong(lHandle, GWL_STYLE)); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_x11.inc lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_x11.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_x11.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwinapi_x11.inc 2015-12-06 16:00:06.000000000 +0000 @@ -619,7 +619,7 @@ XFreeFontPath(lXFontPath); // Paths from the global config file - if FileUtil.FileExistsUTF8(GlobalFontsConfFile) then + if LazFileUtils.FileExistsUTF8(GlobalFontsConfFile) then begin try ReadXMLFile(Doc, GlobalFontsConfFile); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawn_winextra.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawn_winextra.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawn_winextra.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawn_winextra.pas 2015-04-24 11:18:58.000000000 +0000 @@ -0,0 +1,1102 @@ +{ + Extra Win32 code that's not in the RTL. + Copyright (C) 2001, 2002 Keith Bowes. + Modified by Marc Weustink + + ***************************************************************************** + * * + * This file is part of the Lazarus Component Library (LCL) * + * * + * See the file COPYING.modifiedLGPL.txt, included in this distribution, * + * for details about the copyright. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * * + ***************************************************************************** +} + +unit customdrawn_winextra; + +{$mode objfpc}{$H+} +{$DEFINE WindowsUnicodeSupport} +{$DEFINE UseVistaDialogs} + +{$IFDEF TRACE} + {$ASSERTIONS ON} +{$ENDIF} + +{$PACKRECORDS C} +{$SMARTLINK ON} + +interface + +uses + InterfaceBase, Classes, LCLType, Windows, GraphType, SysUtils, ActiveX, ShlObj; + +// from win32wsdialogs +type + TApplicationState = record + ActiveWindow: HWND; + FocusedWindow: HWND; + DisabledWindows: TList; + end; + +{ Win32 API constants not included in windows.pp } +const + // Layout orientation + LAYOUT_RTL = $00000001; // Right to left + LAYOUT_BTT = $00000002; // Bottom to top + LAYOUT_VBH = $00000004; // Vertical before horizontal + LAYOUT_ORIENTATIONMASK = (LAYOUT_RTL or LAYOUT_BTT or LAYOUT_VBH); + LAYOUT_BITMAPORIENTATIONPRESERVED = $00000008; + // not defined in fpc 2.4.3 + GCLP_HBRBACKGROUND = -10; + +type + tagMENUBARINFO = record + cbSize: DWORD; + rcBar: TRect; + hMenu: HMENU; + hwndMenu: HWND; + Flags: DWORD; + end; + MENUBARINFO = tagMENUBARINFO; + PMENUBARINFO = ^tagMENUBARINFO; + + // Window information snapshot + tagWINDOWINFO = record + cbSize: DWORD; + rcWindow: TRect; + rcClient: TRect; + dwStyle: DWORD; + dwExStyle: DWORD; + dwWindowStatus: DWORD; + cxWindowBorders: UINT; + cyWindowBorders: UINT; + atomWindowType: ATOM; + wCreatorVersion: WORD; + end; + WINDOWINFO = tagWINDOWINFO; + PWINDOWINFO = ^tagWINDOWINFO; + +// ===================== Task Dialog ========================= + + PFTASKDIALOGCALLBACK = function(hwnd: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM; lpRefData: LONG_PTR): HRESULT; stdcall; + + // _TASKDIALOG_FLAGS enum +const + TDF_ENABLE_HYPERLINKS = $0001; + TDF_USE_HICON_MAIN = $0002; + TDF_USE_HICON_FOOTER = $0004; + TDF_ALLOW_DIALOG_CANCELLATION = $0008; + TDF_USE_COMMAND_LINKS = $0010; + TDF_USE_COMMAND_LINKS_NO_ICON = $0020; + TDF_EXPAND_FOOTER_AREA = $0040; + TDF_EXPANDED_BY_DEFAULT = $0080; + TDF_VERIFICATION_FLAG_CHECKED = $0100; + TDF_SHOW_PROGRESS_BAR = $0200; + TDF_SHOW_MARQUEE_PROGRESS_BAR = $0400; + TDF_CALLBACK_TIMER = $0800; + TDF_POSITION_RELATIVE_TO_WINDOW = $1000; + TDF_RTL_LAYOUT = $2000; + TDF_NO_DEFAULT_RADIO_BUTTON = $4000; + TDF_CAN_BE_MINIMIZED = $8000; + +type + TASKDIALOG_FLAGS = Integer; // Note: _TASKDIALOG_FLAGS is an int + + // _TASKDIALOG_MESSAGES enum +const + TDM_NAVIGATE_PAGE = WM_USER+101; + TDM_CLICK_BUTTON = WM_USER+102; // wParam = Button ID + TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER+103; // wParam = 0 (nonMarque) wParam != 0 (Marquee) + TDM_SET_PROGRESS_BAR_STATE = WM_USER+104; // wParam = new progress state + TDM_SET_PROGRESS_BAR_RANGE = WM_USER+105; // lParam = MAKELPARAM(nMinRange, nMaxRange) + TDM_SET_PROGRESS_BAR_POS = WM_USER+106; // wParam = new position + TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER+107; // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints) + TDM_SET_ELEMENT_TEXT = WM_USER+108; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) + TDM_CLICK_RADIO_BUTTON = WM_USER+110; // wParam = Radio Button ID + TDM_ENABLE_BUTTON = WM_USER+111; // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID + TDM_ENABLE_RADIO_BUTTON = WM_USER+112; // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID + TDM_CLICK_VERIFICATION = WM_USER+113; // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus) + TDM_UPDATE_ELEMENT_TEXT = WM_USER+114; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR) + TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115; // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required) + TDM_UPDATE_ICON = WM_USER+116; // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise) + + // _TASKDIALOG_NOTIFICATIONS enum +const + TDN_CREATED = 0; + TDN_NAVIGATED = 1; + TDN_BUTTON_CLICKED = 2; // wParam = Button ID + TDN_HYPERLINK_CLICKED = 3; // lParam = (LPCWSTR)pszHREF + TDN_TIMER = 4; // wParam = Milliseconds since dialog created or timer reset + TDN_DESTROYED = 5; + TDN_RADIO_BUTTON_CLICKED = 6; // wParam = Radio Button ID + TDN_DIALOG_CONSTRUCTED = 7; + TDN_VERIFICATION_CLICKED = 8; // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0 + TDN_HELP = 9; + TDN_EXPANDO_BUTTON_CLICKED = 10; // wParam = 0 (dialog is now collapsed), wParam != 0 (dialog is now expanded) + +type + _TASKDIALOG_BUTTON = packed record + nButtonID: Integer; + pszButtonText: PCWSTR; + end; + TASKDIALOG_BUTTON = _TASKDIALOG_BUTTON; + TTASKDIALOG_BUTTON = TASKDIALOG_BUTTON; + PTASKDIALOG_BUTTON = ^TASKDIALOG_BUTTON; + + // _TASKDIALOG_ELEMENTS enum +const + TDE_CONTENT = 0; + TDE_EXPANDED_INFORMATION = 1; + TDE_FOOTER = 2; + TDE_MAIN_INSTRUCTION = 3; + + // _TASKDIALOG_ICON_ELEMENTS enum + TDIE_ICON_MAIN = 0; + TDIE_ICON_FOOTER = 1; + + TD_WARNING_ICON = MAKEINTRESOURCEW(Word(-1)); + TD_ERROR_ICON = MAKEINTRESOURCEW(Word(-2)); + TD_INFORMATION_ICON = MAKEINTRESOURCEW(Word(-3)); + TD_SHIELD_ICON = MAKEINTRESOURCEW(Word(-4)); + TD_SHIELD_GRADIENT_ICON = MAKEINTRESOURCEW(Word(-5)); + TD_SHIELD_WARNING_ICON = MAKEINTRESOURCEW(Word(-6)); + TD_SHIELD_ERROR_ICON = MAKEINTRESOURCEW(Word(-7)); + TD_SHIELD_OK_ICON = MAKEINTRESOURCEW(Word(-8)); + TD_SHIELD_GRAY_ICON = MAKEINTRESOURCEW(Word(-9)); + + // _TASKDIALOG_COMMON_BUTTON_FLAGS enum + TDCBF_OK_BUTTON = $0001; // selected control return value IDOK + TDCBF_YES_BUTTON = $0002; // selected control return value IDYES + TDCBF_NO_BUTTON = $0004; // selected control return value IDNO + TDCBF_CANCEL_BUTTON = $0008; // selected control return value IDCANCEL + TDCBF_RETRY_BUTTON = $0010; // selected control return value IDRETRY + TDCBF_CLOSE_BUTTON = $0020; // selected control return value IDCLOSE + +type + TASKDIALOG_COMMON_BUTTON_FLAGS = Integer; // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int + + _TASKDIALOGCONFIG = packed record + cbSize: UINT; + hwndParent: HWND; + hInstance: HINST; // used for MAKEINTRESOURCE() strings + dwFlags: TASKDIALOG_FLAGS; // TASKDIALOG_FLAGS (TDF_XXX) flags + dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags + pszWindowTitle: PCWSTR; // string or MAKEINTRESOURCE() + case Boolean of + False: (hMainIcon: HICON); + True: ( + pszMainIcon: PCWSTR; + pszMainInstruction: PCWSTR; + pszContent: PCWSTR; + cButtons: UINT; + pButtons: PTASKDIALOG_BUTTON; + nDefaultButton: Integer; + cRadioButtons: UINT; + pRadioButtons: PTASKDIALOG_BUTTON; + nDefaultRadioButton: Integer; + pszVerificationText: PCWSTR; + pszExpandedInformation: PCWSTR; + pszExpandedControlText: PCWSTR; + pszCollapsedControlText: PCWSTR; + case Boolean of + False: (hFooterIcon: HICON); + True: ( + pszFooterIcon: PCWSTR; + pszFooter: PCWSTR; + pfCallback: PFTASKDIALOGCALLBACK; + lpCallbackData: LONG_PTR; + cxWidth: UINT; // width of the Task Dialog's client area in DLU's. If 0, Task Dialog will calculate the ideal width. + ); + ); + end; + TASKDIALOGCONFIG = _TASKDIALOGCONFIG; + PTASKDIALOGCONFIG = ^TASKDIALOGCONFIG; + TTASKDIALOGCONFIG = TASKDIALOGCONFIG; + +// ==================== End TaskDialog ======================= + +// File dialogs +const + CLSID_FileOpenDialog: TGUID = '{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}'; + CLSID_FileSaveDialog: TGUID = '{C0B4E2F3-BA21-4773-8DBA-335EC946EB8B}'; + + // GETPROPERTYSTOREFLAGS enum + GPS_DEFAULT = 0; + GPS_HANDLERPROPERTIESONLY = $1; + GPS_READWRITE = $2; + GPS_TEMPORARY = $4; + GPS_FASTPROPERTIESONLY = $8; + GPS_OPENSLOWITEM = $10; + GPS_DELAYCREATION = $20; + GPS_BESTEFFORT = $40; + GPS_NO_OPLOCK = $80; + GPS_MASK_VALID = $ff; + + // SIATTRIBFLAGS enum + SIATTRIBFLAGS_AND = $1; + SIATTRIBFLAGS_OR = $2; + SIATTRIBFLAGS_APPCOMPAT = $3; + SIATTRIBFLAGS_MASK = $3; + SIATTRIBFLAGS_ALLITEMS = $4000; + + // CDCONTROLSTATEF enum + CDCS_INACTIVE = 0; + CDCS_ENABLED = $1; + CDCS_VISIBLE = $2; + CDCS_ENABLEDVISIBLE = $3; + +type + GETPROPERTYSTOREFLAGS = DWord; + SIATTRIBFLAGS = DWord; + CDCONTROLSTATEF = DWord; + + _tagpropertykey = packed record + fmtid: TGUID; + pid: DWORD; + end; + PROPERTYKEY = _tagpropertykey; + REFPROPERTYKEY = ^PROPERTYKEY; + REFPROPVARIANT = ^TPROPVARIANT; +{$ifdef UseVistaDialogs} + IEnumShellItems = interface(IUnknown) + ['{70629033-e363-4a28-a567-0db78006e6d7}'] + function Next(celt: ULONG; out rgelt: IShellItem; var pceltFetched: ULONG): HResult; stdcall; + function Skip(celt: ULONG): HResult; stdcall; + function Reset: HResult; stdcall; + function Clone(out ppenum: IEnumShellItems): HResult; stdcall; + end; + + IShellItemArray = interface(IUnknown) + ['{b63ea76d-1f85-456f-a19c-48159efa858b}'] + function BindToHandler(pbc: IBindCtx; const bhid: TGUID; const riid: REFIID; out ppvOut): HResult; stdcall; + function GetPropertyStore(flags: GETPROPERTYSTOREFLAGS; const riid: REFIID; out ppv): HResult; stdcall; + function GetPropertyDescriptionList(keyType: REFPROPERTYKEY; const riid: REFIID; out ppv): HResult; stdcall; + function GetAttributes(AttribFlags: SIATTRIBFLAGS; sfgaoMask: SFGAOF; var psfgaoAttribs: SFGAOF): HResult; stdcall; + function GetCount(var pdwNumItems: DWORD): HResult; stdcall; + function GetItemAt(dwIndex: DWORD; var ppsi: IShellItem): HResult; stdcall; + function EnumItems(var ppenumShellItems: IEnumShellItems): HResult; stdcall; + end; + + IPropertyStore = interface(IUnknown) + ['{886d8eeb-8cf2-4446-8d02-cdba1dbdcf99}'] + function GetCount(out cProps: DWORD): HResult; stdcall; + function GetAt(iProp: DWORD; out pkey: PROPERTYKEY): HResult; stdcall; + function GetValue(key: REFPROPERTYKEY; out pv: PROPVARIANT): HResult; stdcall; + function SetValue(key: REFPROPERTYKEY; propvar: REFPROPVARIANT): HResult; stdcall; + function Commit: HResult; stdcall; + end; + + IPropertyDescriptionList = interface(IUnknown) + ['{1f9fc1d0-c39b-4b26-817f-011967d3440e}'] + function GetCount(out pcElem: UINT): HResult; stdcall; + function GetAt(iElem: UINT; const riid: REFIID; out ppv): HResult; stdcall; + end; + + IFileOperationProgressSink = interface(IUnknown) + ['{04b0f1a7-9490-44bc-96e1-4296a31252e2}'] + function StartOperations: HResult; stdcall; + function FinishOperations(hrResult: HResult): HResult; stdcall; + function PreRenameItem(dwFlags: DWORD; psiItem: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostRenameItem(dwFlags: DWORD; psiItem: IShellItem; pszNewName: LPCWSTR; hrRename: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreMoveItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostMoveItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR; hrMove: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreCopyItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostCopyItem(dwFlags: DWORD; psiItem: IShellItem; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR; hrCopy: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreDeleteItem(dwFlags: DWORD; psiItem: IShellItem): HResult; stdcall; + function PostDeleteItem(dwFlags: DWORD; psiItem: IShellItem; hrDelete: HRESULT; psiNewlyCreated: IShellItem): HResult; stdcall; + function PreNewItem(dwFlags: DWORD; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR): HResult; stdcall; + function PostNewItem(dwFlags: DWORD; psiDestinationFolder: IShellItem; pszNewName: LPCWSTR; pszTemplateName: LPCWSTR; dwFileAttributes: DWORD; hrNew: HRESULT; psiNewItem: IShellItem): HResult; stdcall; + function UpdateProgress(iWorkTotal: UINT; iWorkSoFar: UINT): HResult; stdcall; + function ResetTimer: HResult; stdcall; + function PauseTimer: HResult; stdcall; + function ResumeTimer: HResult; stdcall; + end; + + IFileDialogCustomize = interface(IUnknown) + ['{e6fdd21a-163f-4975-9c8c-a69f1ba37034}'] + function EnableOpenDropDown(dwIDCtl: DWORD): HResult; stdcall; + function AddMenu(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function AddPushButton(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function AddComboBox(dwIDCtl: DWORD): HResult; stdcall; + function AddRadioButtonList(dwIDCtl: DWORD): HResult; stdcall; + function AddCheckButton(dwIDCtl: DWORD; pszLabel: LPCWSTR; bChecked: BOOL): HResult; stdcall; + function AddEditBox(dwIDCtl: DWORD; pszText: LPCWSTR): HResult; stdcall; + function AddSeparator(dwIDCtl: DWORD): HResult; stdcall; + function AddText(dwIDCtl: DWORD; pszText: LPCWSTR): HResult; stdcall; + function SetControlLabel(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function GetControlState(dwIDCtl: DWORD; out pdwState: CDCONTROLSTATEF): HResult; stdcall; + function SetControlState(dwIDCtl: DWORD; dwState: CDCONTROLSTATEF): HResult; stdcall; + function GetEditBoxText(dwIDCtl: DWORD; out ppszText: WCHAR): HResult; stdcall; + function SetEditBoxText(dwIDCtl: DWORD; pszText: LPCWSTR): HResult; stdcall; + function GetCheckButtonState(dwIDCtl: DWORD; out pbChecked: BOOL): HResult; stdcall; + function SetCheckButtonState(dwIDCtl: DWORD; bChecked: BOOL): HResult; stdcall; + function AddControlItem(dwIDCtl: DWORD; dwIDItem: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function RemoveControlItem(dwIDCtl: DWORD; dwIDItem: DWORD): HResult; stdcall; + function RemoveAllControlItems(dwIDCtl: DWORD): HResult; stdcall; + function GetControlItemState(dwIDCtl: DWORD; dwIDItem: DWORD; out pdwState: CDCONTROLSTATEF): HResult; stdcall; + function SetControlItemState(dwIDCtl: DWORD; dwIDItem: DWORD; dwState: CDCONTROLSTATEF): HResult; stdcall; + function GetSelectedControlItem(dwIDCtl: DWORD; out pdwIDItem: DWORD): HResult; stdcall; + function SetSelectedControlItem(dwIDCtl: DWORD; dwIDItem: DWORD): HResult; stdcall; + function StartVisualGroup(dwIDCtl: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + function EndVisualGroup: HResult; stdcall; + function MakeProminent(dwIDCtl: DWORD): HResult; stdcall; + function SetControlItemText(dwIDCtl: DWORD; dwIDItem: DWORD; pszLabel: LPCWSTR): HResult; stdcall; + end; + + IFileDialogControlEvents = interface(IUnknown) + ['{36116642-D713-4b97-9B83-7484A9D00433}'] + function OnItemSelected(pfdc: IFileDialogCustomize; dwIDCtl: DWORD; dwIDItem: DWORD): HResult; stdcall; + function OnButtonClicked(pfdc: IFileDialogCustomize; dwIDCtl: DWORD): HResult; stdcall; + function OnCheckButtonToggled(pfdc: IFileDialogCustomize; dwIDCtl: DWORD; bChecked: BOOL): HResult; stdcall; + function OnControlActivating(pfdc: IFileDialogCustomize; dwIDCtl: DWORD): HResult; stdcall; + end; + + IFileOpenDialog = interface(IFileDialog) + ['{d57c7288-d4ad-4768-be02-9d969532d960}'] + function GetResults(var ppenum: IShellItemArray): HResult; stdcall; + function GetSelectedItems(var ppsai: IShellItemArray): HResult; stdcall; + end; + + IFileSaveDialog = interface(IFileDialog) + ['{84bccd23-5fde-4cdb-aea4-af64b83d78ab}'] + function SetSaveAsItem(psi: IShellItem): HResult; stdcall; + function SetProperties(pStore: IPropertyStore): HResult; stdcall; + function SetCollectedProperties(pList: IPropertyDescriptionList; fAppendDefault: BOOL): HResult; stdcall; + function GetProperties(var ppStore: IPropertyStore): HResult; stdcall; + function ApplyProperties(psi: IShellItem; pStore: IPropertyStore; hwnd: HWND; pSink: IFileOperationProgressSink): HResult; stdcall; + end; +{$endif} + +// AlphaBlend is only defined for win98&2k and up +// load dynamic and use ownfunction if not defined +var + AlphaBlend: function(hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest, nHeightDest: Integer; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: Integer; blendFunction: TBlendFunction): BOOL; stdcall; + GradientFill: function(DC: HDC; p2: PTriVertex; p3: ULONG; p4: Pointer; p5, p6: ULONG): BOOL; stdcall; + GetComboBoxInfo: function(hwndCombo: HWND; pcbi: PComboboxInfo): BOOL; stdcall; + GetMenuBarInfo: function(hwnd: HWND; idObject: LONG; idItem: LONG; pmbi: PMENUBARINFO): BOOL; stdcall; + //GetWindowInfo: function(hwnd: HWND; pwi: PWINDOWINFO): BOOL; stdcall; + SetLayout: function(dc: HDC; l: DWord): DWord; stdcall; + SetLayeredWindowAttributes: function (HWND: hwnd; crKey: COLORREF; bAlpha: byte; dwFlags: DWORD): BOOL; stdcall; + UpdateLayeredWindow: function(hWnd: HWND; hdcDst: HDC; pptDst: PPoint; psize: PSize; + hdcSrc: HDC; pptSrc: PPoint; crKey: COLORREF; pblend: PBlendFunction; dwFlags: DWORD): BOOL; stdcall; + IsProcessDPIAware: function: BOOL; stdcall; + TaskDialogIndirect: function(const pTaskConfig: PTASKDIALOGCONFIG; pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT; stdcall; + TaskDialog: function(hwndParent: HWND; hInstance: HINST; pszWindowTitle: PCWSTR; pszMainInstruction: PCWSTR; pszContent: PCWSTR; + dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; pszIcon: PCWSTR; pnButton: PInteger): HRESULT; stdcall; + SHCreateItemFromParsingName: function(pszPath: PCWSTR; pbc: IBindCtx; const riid: REFIID; out ppv): HResult; stdcall; + +const + // ComCtlVersions + ComCtlVersionIE3 = $00040046; + ComCtlVersionIE4 = $00040047; + ComCtlVersionIE401 = $00040048; + ComCtlVersionIE5 = $00050050; + ComCtlVersionIE501 = $00050051; + ComCtlVersionIE6 = $00060000; + +type + SHSTOCKICONINFO = record + cbSize: DWORD; + hIcon: HICON; + iSysImageIndex: integer; + iIcon: integer; + szPath: array[0..MAX_PATH - 1] of WCHAR; + end; + TSHSTOCKICONINFO = SHSTOCKICONINFO; + PSHSTOCKICONINFO = ^SHSTOCKICONINFO; + +var + SHGetStockIconInfo: function(siid: integer; uFlags: UINT; psii: PSHSTOCKICONINFO): HResult; stdcall; + +const + SIID_SHIELD = 77; + SHGFI_SMALLICON = $000000001; + SHGFI_LARGEICON = $000000000; + SHGFI_ICON = $000000100; + +type + //64bit safe Timer functions and callback + //todo: remove as soon the last supported fpc version has updated header (rev 22526) + TIMERPROC = procedure (hWnd: HWND; uMsg: UINT; idEvent: UINT_PTR; dwTime: DWORD); stdcall; + + function SetTimer(hWnd:HWND; nIDEvent:UINT_PTR; uElapse:UINT; lpTimerFunc: TIMERPROC): UINT_PTR; stdcall; external 'user32' name 'SetTimer'; + function KillTimer(hWnd:HWND; uIDEvent:UINT_PTR):WINBOOL; stdcall; external 'user32' name 'KillTimer'; + +function SaveApplicationState: TApplicationState; +procedure RestoreApplicationState(AState: TApplicationState); +function UTF8StringToPWideChar(const s: string) : PWideChar; +function UTF8StringToPAnsiChar(const s: string) : PAnsiChar; + +implementation + +uses + customdrawn_WinProc, forms; + +function SaveApplicationState: TApplicationState; +begin + Result.ActiveWindow := Windows.GetActiveWindow; + Result.FocusedWindow := Windows.GetFocus; + Result.DisabledWindows := Screen.DisableForms(nil); +end; + +procedure RestoreApplicationState(AState: TApplicationState); +begin + Screen.EnableForms(AState.DisabledWindows); + Windows.SetActiveWindow(AState.ActiveWindow); + Windows.SetFocus(AState.FocusedWindow); +end; + +// The size of the OPENFILENAME record depends on the windows version +// In the initialization section the correct size is determined. +var + OpenFileNameSize: integer = 0; + +// Returns a new PWideChar containing the string UTF8 string s as widechars +function UTF8StringToPWideChar(const s: string) : PWideChar; +begin + // a string of widechars will need at most twice the amount of bytes + // as the corresponding UTF8 string + Result := GetMem(length(s)*2+2); + Utf8ToUnicode(Result,length(s)+1,pchar(s),length(s)+1); +end; + +// Returns a new PChar containing the string UTF8 string s as ansichars +function UTF8StringToPAnsiChar(const s: string) : PAnsiChar; +var + AnsiChars: string; +begin + AnsiChars:= Utf8ToAnsi(s); + Result := GetMem(length(AnsiChars)+1); + Move(PChar(AnsiChars)^, Result^, length(AnsiChars)+1); +end; + +{$PACKRECORDS NORMAL} + +function _AlphaBlend(hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest, nHeightDest: Integer; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: Integer; blendFunction: TBlendFunction): BOOL; stdcall; +var + SCA: Byte absolute blendFunction.SourceConstantAlpha; + + R: TRect; + DC, TmpDC: HDC; + OldBmp, OldTmpBmp, SrcBmp, DstBmp, TmpBmp, AlphaBmp: HBITMAP; + StretchSrc: Boolean; + SrcSection, DstSection: TDIBSection; + Info: record + Header: TBitmapInfoHeader; + Colors: array[0..3] of Cardinal; // reserve extra color for colormasks + end; + + SrcBytesPtr, DstBytesPtr, TmpBytesPtr, AlphaBytesPtr: Pointer; + SrcLinePtr, DstLinePtr: PByte; + CleanupSrc, CleanupSrcPtr, CleanupDst, CleanupAlpha: Boolean; + SrcSize: PtrUInt; + SrcPixelBytes, DstPixelBytes: Byte; + SrcRowStride, DstRowStride: Integer; + SrcLineOrder: TRawImageLineOrder; + + X, Y: Integer; + SrcRGBA, TmpRGBA, DstRGBA: PRGBAQuad; + SrcAlpha: PByte; + NotAlpha: Byte; +begin + if nXOriginSrc < 0 then Exit(False); + if nYOriginSrc < 0 then Exit(False); + if nWidthSrc < 0 then Exit(False); + if nHeightSrc < 0 then Exit(False); + if nWidthDest < 0 then Exit(False); + if nHeightDest < 0 then Exit(False); + + if blendFunction.SourceConstantAlpha = 0 + then Exit(True); // nothing to do + + if (blendFunction.AlphaFormat = 0) + and (blendFunction.SourceConstantAlpha = 255) + then begin + // simple strechblt + Result := StretchBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY); + Exit; + end; + + // get source info, atleast bitmap, if possible also section + if GetObjectType(hdcSrc) <> OBJ_MEMDC then Exit(False); + SrcBmp := GetCurrentObject(hdcSrc, OBJ_BITMAP); + if GetObject(SrcBmp, SizeOf(SrcSection), @SrcSection) = 0 then Exit(False); + if nXOriginSrc + nWidthSrc > SrcSection.dsBm.bmWidth then Exit(False); + if nYOriginSrc + nHeightSrc > SrcSection.dsBm.bmHeight then Exit(False); + + if (blendFunction.AlphaFormat = AC_SRC_ALPHA) and (SrcSection.dsBm.bmBitsPixel <> 32) then Exit(False); // invalid + + // get destination info, atleast bitmap, if possible also section + if WindowsVersion in [wv95, wv98] + then begin + // under windows 98 GetObjectType() sometimes produce AV inside and + // as result our debugger stopes and show exception + // lazarus is not alone application with such problem under windows 98 + // here is workaround for windows 9x + DstBmp := GetCurrentObject(hdcDest, OBJ_BITMAP); + DstSection.dsBm.bmBits := nil; + if (DstBmp <> 0) + and ((GetObject(DstBmp, SizeOf(DstSection), @DstSection) < SizeOf(TDIBSection)) or (DstSection.dsBm.bmBits = nil)) + then DstBmp := 0; + end + else begin + if GetObjectType(hdcDest) = OBJ_MEMDC + then DstBmp := GetCurrentObject(hdcDest, OBJ_BITMAP) + else DstBmp := 0; + if (DstBmp <> 0) and (GetObject(DstBmp, SizeOf(DstSection), @DstSection) = 0) + then DstBmp := 0; + end; + + if (DstBmp = 0) + then begin + // GetCurrentObject can only be used on memory devices, + // so fill in some values manually + DstSection.dsBm.bmWidth := GetDeviceCaps(hdcDest, HORZRES); + DstSection.dsBm.bmHeight := GetDeviceCaps(hdcDest, VERTRES); + DstSection.dsBm.bmBitsPixel := GetDeviceCaps(hdcDest, BITSPIXEL); + DstSection.dsBm.bmBits := nil; + end; + + // docs doesn't require dest retangle inside dest. + // however if dest rect is outside the destination, we're done here + if nXOriginDest + nWidthDest < 0 then Exit(True); + if nYOriginDest + nHeightDest < 0 then Exit(True); + if nXOriginDest >= DstSection.dsBm.bmWidth then Exit(True); + if nYOriginDest >= DstSection.dsBm.bmHeight then Exit(True); + + // get lineorder of source so we use the right direction + SrcLineOrder := GetBitmapOrder(SrcSection.dsBm, SrcBmp); + + // setup info shared by alpha, source and destination bytes + FillChar(Info, sizeof(Info), 0); + Info.Header.biSize := sizeof(Windows.TBitmapInfoHeader); + Info.Header.biWidth := nWidthDest; + if SrcLineOrder = riloBottomToTop + then Info.Header.biHeight := nHeightDest + else Info.Header.biHeight := -nHeightDest; + Info.Header.biPlanes := 1; + Info.Header.biBitCount := 32; + Info.Header.biSizeImage := nWidthDest * nHeightDest * 4; + Info.Header.biCompression := BI_BITFIELDS; + // when 24bpp, CE only supports B8G8R8 encoding + Info.Colors[0] := $FF0000; {le-red} + Info.Colors[1] := $00FF00; {le-green} + Info.Colors[2] := $0000FF; {le-blue} + + StretchSrc := (nWidthDest <> nWidthSrc) or (nHeightDest <> nHeightSrc); + if StretchSrc + then begin + // we need to strech the source + + // create alphabmp + if blendFunction.AlphaFormat = AC_SRC_ALPHA + then begin + // create alpha source data + R := Classes.Rect(nXOriginSrc, nYOriginSrc, nXOriginSrc + nWidthSrc, nYOriginSrc + nHeightSrc); + if not GetBitmapBytes(SrcSection.dsBm, SrcBmp, R, rileDWordBoundary, SrcLineOrder, SrcBytesPtr, SrcSize) then Exit(False); + + // set info to source size + Info.Header.biWidth := nWidthSrc; + if SrcLineOrder = riloBottomToTop + then Info.Header.biHeight := nHeightSrc + else Info.Header.biHeight := -nHeightSrc; + Info.Header.biSizeImage := nWidthSrc * nHeightSrc * 4; + + // create temp bitmap to store orginal grayscale alpha + TmpBmp := CreateDIBSection(hdcSrc, PBitmapInfo(@Info)^, DIB_RGB_COLORS, TmpBytesPtr, 0, 0); + if TmpBmp = 0 then Exit(False); + if TmpBytesPtr = nil + then begin + FreeMem(SrcBytesPtr); + DeleteObject(TmpBmp); + Exit(False); + end; + + // create grayscale image from alpha + TmpRGBA := TmpBytesPtr; + SrcRGBA := SrcBytesPtr; + while SrcSize > 0 do + begin + TmpRGBA^.Blue := SrcRGBA^.Alpha; + TmpRGBA^.Green := SrcRGBA^.Alpha; + TmpRGBA^.Red := SrcRGBA^.Alpha; + TmpRGBA^.Alpha := 255; + Inc(SrcRGBA); + Inc(TmpRGBA); + Dec(SrcSize, 4); + end; + + // restore to destination size + Info.Header.biWidth := nWidthDest; + if SrcLineOrder = riloBottomToTop + then Info.Header.biHeight := nHeightDest + else Info.Header.biHeight := -nHeightDest; + Info.Header.biSizeImage := nWidthDest * nHeightDest * 4; + + // create bitmap to store stretched grayscale alpha + AlphaBmp := CreateDIBSection(hdcSrc, PBitmapInfo(@Info)^, DIB_RGB_COLORS, AlphaBytesPtr, 0, 0); + if (AlphaBmp = 0) or (AlphaBytesPtr = nil) + then begin + FreeMem(SrcBytesPtr); + DeleteObject(TmpBmp); + DeleteObject(AlphaBmp); + Exit(False); + end; + + // stretch grayscale alpha bitmap + DC := CreateCompatibleDC(hdcSrc); + OldBmp := SelectObject(DC, AlphaBmp); + TmpDC := CreateCompatibleDC(hdcSrc); + OldTmpBmp := SelectObject(TmpDC, TmpBmp); + StretchBlt(DC, 0, 0, nWidthDest, nHeightDest, TmpDC, 0, 0, nWidthSrc, nHeightSrc, SRCCOPY); + SelectObject(DC, OldBmp); + DeleteDC(DC); + SelectObject(TmpDC, OldTmpBmp); + DeleteDC(TmpDC); + DeleteObject(TmpBmp); + FreeMem(SrcBytesPtr); + + // as long as AlphaBmp exists, AlphaBytesPtr is valid. + CleanupAlpha := True; + end + else begin + CleanupAlpha := False; + end; + + // create new srcbmp + SrcBmp := CreateDIBSection(hdcSrc, PBitmapInfo(@Info)^, DIB_RGB_COLORS, SrcBytesPtr, 0, 0); + if (SrcBmp = 0) or (SrcBytesPtr = nil) + then begin + DeleteObject(AlphaBmp); + DeleteObject(SrcBmp); + Exit(False); + end; + SrcSize := Info.Header.biSizeImage; + CleanupSrc := True; + CleanupSrcPtr := False; + SrcPixelBytes := 4; + SrcRowStride := nWidthDest * SrcPixelBytes; + + DC := CreateCompatibleDC(hdcSrc); + OldBmp := SelectObject(DC, SrcBmp); + StretchBlt(DC, 0, 0, nWidthDest, nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY); + SelectObject(DC, OldBmp); + DeleteDC(DC); + + // adjust source size + nWidthSrc := nWidthDest; + nHeightSrc := nHeightDest; + nXOriginSrc := 0; + nYOriginSrc := 0; + end + else begin + // only get source data + SrcPixelBytes := SrcSection.dsBm.bmBitsPixel shr 3; + if SrcSection.dsBm.bmBits <> nil + then begin + // source is a dibsection :) + SrcBytesPtr := SrcSection.dsBm.bmBits; + SrcRowStride := SrcSection.dsBm.bmWidthBytes; + CleanupSrc := False; + CleanupSrcPtr := False; + end + else begin + R := Classes.Rect(nXOriginSrc, nYOriginSrc, nXOriginSrc + nWidthSrc, nYOriginSrc + nHeightSrc); + if not GetBitmapBytes(SrcSection.dsBm, SrcBmp, R, rileDWordBoundary, SrcLineOrder, SrcBytesPtr, SrcSize) then Exit; + SrcRowStride := nWidthSrc * SrcPixelBytes; + CleanupSrc := False; + CleanupSrcPtr := True; + nXOriginSrc := 0; + nYOriginSrc := 0; + end; + AlphaBytesPtr := nil; + CleanupAlpha := False; + end; + + // if a palette destination or destination isn't a section, create a temp DIB + if (DstSection.dsBm.bmBitsPixel < 24) + or (DstSection.dsBm.bmBits = nil) + or (DstSection.dsBmih.biCompression <> BI_RGB) + then begin + // create temp dib + DstBmp := CreateDIBSection(hdcSrc, PBitmapInfo(@Info)^, DIB_RGB_COLORS, DstBytesPtr, 0, 0); + // copy destination + DC := CreateCompatibleDC(hdcDest); + OldBmp := SelectObject(DC, DstBmp); + BitBlt(DC, 0, 0, nWidthDest, nHeightDest, hdcDest, nXOriginDest, nYOriginDest, SRCCOPY); + SelectObject(DC, OldBmp); + DeleteDC(DC); + DstPixelBytes := 4; + DstRowStride := nWidthDest * DstPixelBytes; + CleanupDst := True; + end + else begin + DstBytesPtr := DstSection.dsBm.bmBits; + DstPixelBytes := DstSection.dsBm.bmBitsPixel shr 3; + DstRowStride := DstSection.dsBm.bmWidthBytes; + Inc(PByte(DstBytesPtr), nXOriginDest + nYOriginDest * DstRowStride); + CleanupDst := False; + end; + + // blend image + SrcLinePtr := SrcBytesPtr; + Inc(SrcLinePtr, nXOriginSrc * SrcPixelBytes + nYOriginSrc * SrcRowStride); + DstLinePtr := DstBytesPtr; + + if blendFunction.AlphaFormat = AC_SRC_ALPHA + then begin + if AlphaBytesPtr <> nil + then SrcAlpha := AlphaBytesPtr; + + if SCA {blendFunction.SourceConstantAlpha} = 255 + then begin + for y := 1 to nHeightDest do + begin + SrcRGBA := Pointer(SrcLinePtr); + if AlphaBytesPtr = nil + then SrcAlpha := @SrcRGBA^.Alpha; + DstRGBA := Pointer(DstLinePtr); + for x := 1 to nWidthDest do + begin + if SrcAlpha^ <> 0 + then begin + NotAlpha := not SrcAlpha^; + DstRGBA^.Red := SrcRgba^.Red + (DstRGBA^.Red * NotAlpha) div 255; + DstRGBA^.Green := SrcRgba^.Green + (DstRGBA^.Green * NotAlpha) div 255; + DstRGBA^.Blue := SrcRgba^.Blue + (DstRGBA^.Blue * NotAlpha) div 255; + if DstPixelBytes = 4 + then DstRGBA^.Alpha := SrcAlpha^ + (DstRGBA^.Alpha * NotAlpha) div 255; + end; + Inc(SrcRGBA); + Inc(SrcAlpha, 4); + Inc(PByte(DstRGBA), DstPixelBytes); + end; + Inc(SrcLinePtr, SrcRowStride); + Inc(DstLinePtr, DstRowStride); + end; + end + else begin + for y := 1 to nHeightDest do + begin + SrcRGBA := Pointer(SrcLinePtr); + if AlphaBytesPtr = nil + then SrcAlpha := @SrcRGBA^.Alpha; + DstRGBA := Pointer(DstLinePtr); + for x := 1 to nWidthDest do + begin + if SrcAlpha^ <> 0 + then begin + NotAlpha := not SrcAlpha^; + DstRGBA^.Red := (SrcRgba^.Red * SCA + DstRGBA^.Red * NotAlpha) div 255; + DstRGBA^.Green := (SrcRgba^.Green * SCA + DstRGBA^.Green * NotAlpha) div 255; + DstRGBA^.Blue := (SrcRgba^.Blue * SCA + DstRGBA^.Blue * NotAlpha) div 255; + if DstPixelBytes = 4 + then DstRGBA^.Alpha := (SrcAlpha^ * SCA + DstRGBA^.Alpha * NotAlpha) div 255; + end; + Inc(SrcRGBA); + Inc(SrcAlpha, 4); + Inc(PByte(DstRGBA), DstPixelBytes); + end; + Inc(SrcLinePtr, SrcRowStride); + Inc(DstLinePtr, DstRowStride); + end; + end; + end + else begin + // no source alpha + NotAlpha := not SCA; + for y := 1 to nHeightDest do + begin + SrcRGBA := Pointer(SrcLinePtr); + if AlphaBytesPtr = nil + then SrcAlpha := @SrcRGBA^.Alpha; + DstRGBA := Pointer(DstLinePtr); + for x := 1 to nWidthDest do + begin + DstRGBA^.Red := (SrcRGBA^.Red * SCA + DstRGBA^.Red * NotAlpha) div 255; + DstRGBA^.Green := (SrcRGBA^.Green * SCA + DstRGBA^.Green * NotAlpha) div 255; + DstRGBA^.Blue := (SrcRGBA^.Blue * SCA + DstRGBA^.Blue * NotAlpha) div 255; + if (DstPixelBytes = 4) and (SrcPixelBytes = 4) + then DstRGBA^.Alpha := (SrcAlpha^ * SCA + DstRGBA^.Alpha * NotAlpha) div 255; + Inc(PByte(SrcRGBA), SrcPixelBytes); + Inc(PByte(DstRGBA), DstPixelBytes); + Inc(SrcAlpha, 4); + end; + Inc(SrcLinePtr, SrcRowStride); + Inc(DstLinePtr, DstRowStride); + end; + end; + + // Replace destination if needed and do cleanup + if CleanupDst + then begin + DC := CreateCompatibleDC(hdcDest); + OldBmp := SelectObject(DC, DstBmp); + BitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, DC, 0, 0, SRCCOPY); + SelectObject(DC, OldBmp); + DeleteDC(DC); + DeleteObject(DstBmp); + end; + if CleanupSrc + then DeleteObject(SrcBmp); + if CleanupSrcPtr + then FreeMem(SrcBytesPtr); + if CleanupAlpha + then DeleteObject(AlphaBmp); +end; + +// win98 only supports dibsections, so if not a dib section, +// we draw ourselves +{var + AlphaBlend98: function(hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest, nHeightDest: Integer; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: Integer; blendFunction: TBlendFunction): BOOL; stdcall; +} + +function _AlphaBlend98(hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest, nHeightDest: Integer; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc: Integer; blendFunction: TBlendFunction): BOOL; stdcall; +begin + // we can check the bitmaptypes here and call AlphaBlend98, but for now, just call own implementation + Result := _AlphaBlend(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, blendFunction); +end; + +function _GradientFill(DC: HDC; p2: PTriVertex; p3: ULONG; p4: Pointer; p5, p6: ULONG): BOOL; +begin + Result := False; +end; + +function _GetComboboxInfo(hwndCombo: HWND; pcbi: PComboboxInfo): BOOL; stdcall; +begin + Result := (pcbi <> nil) and (pcbi^.cbSize = SizeOf(TComboboxInfo)); + if Result then + begin + pcbi^.hwndCombo := hwndCombo; + if (GetWindowLong(hwndCombo, GWL_STYLE) and CBS_SIMPLE) <> 0 then + begin + pcbi^.hwndList := GetTopWindow(hwndCombo); + pcbi^.hwndItem := GetWindow(pcbi^.hwndList, GW_HWNDNEXT); + end + else + begin + pcbi^.hwndItem := GetTopWindow(hwndCombo); + pcbi^.hwndList := 0; + end; + end; +end; + +function _GetMenuBarInfo(hwnd: HWND; idObject: LONG; idItem: LONG; pmbi: PMENUBARINFO): BOOL; stdcall; +begin + Result := False; +end; + +function _GetWindowInfo(hwnd: HWND; pwi: PWINDOWINFO): BOOL; stdcall; +begin + Result := False; +end; + +function _SHGetStockIconInfo(siid: integer; uFlags: UINT; psii: PSHSTOCKICONINFO): HResult; stdcall; +begin + Result := E_NOTIMPL; +end; + +function _SetLayout(dc: HDC; l: DWord): DWord; stdcall; +begin + Result := GDI_ERROR; +end; + +function _SetLayeredWindowAttributes(HWND: hwnd; crKey: COLORREF; bAlpha: byte; dwFlags: DWORD): BOOL; stdcall; +begin + Result := False; +end; + +function _UpdateLayeredWindow(hWnd: HWND; hdcDst: HDC; pptDst: PPoint; psize: PSize; + hdcSrc: HDC; pptSrc: PPoint; crKey: COLORREF; pblend: PBlendFunction; dwFlags: DWORD): BOOL; stdcall; +begin + Result := False; +end; + +function _IsProcessDPIAware: BOOL; stdcall; +begin + Result := False; +end; + +function _TaskDialogIndirect(const pTaskConfig: PTASKDIALOGCONFIG; pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT; stdcall; +begin + Result := E_NOTIMPL; +end; + +function _TaskDialog(hwndParent: HWND; hInstance: HINST; pszWindowTitle: PCWSTR; pszMainInstruction: PCWSTR; pszContent: PCWSTR; + dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; pszIcon: PCWSTR; pnButton: PInteger): HRESULT; stdcall; +begin + Result := E_NOTIMPL; +end; + +function _SHCreateItemFromParsingName(pszPath: PCWSTR; pbc: IBindCtx; const riid: REFIID; out ppv): HResult; stdcall; +begin + Result := E_NOTIMPL; +end; + +const + msimg32lib = 'msimg32.dll'; + user32lib = 'user32.dll'; + shell32lib = 'shell32.dll'; + gdi32lib = 'gdi32.dll'; + comctl32lib = 'comctl32.dll'; + +var + msimg32handle: THandle = 0; + user32handle: THandle = 0; + shell32handle: THandle = 0; + gdi32handle: THandle = 0; + comctl32handle: THandle = 0; + +procedure Initialize; +var + p: Pointer; +begin + if WindowsVersion = wvUnknown then + UpdateWindowsVersion; + + GetComboBoxInfo := nil; + GetMenuBarInfo := nil; + //GetWindowInfo := nil; + + // defaults + Pointer(GradientFill) := @_GradientFill; + // Detect win98 since aplhablend doesn't support all bitmap types + if WindowsVersion = wv98 + then Pointer(AlphaBlend) := @_AlphaBlend98 + else Pointer(AlphaBlend) := @_AlphaBlend; + + + msimg32handle := LoadLibrary(msimg32lib); + if msimg32handle <> 0 + then begin + if WindowsVersion <> wv98 + then begin + p := GetProcAddress(msimg32handle, 'AlphaBlend'); + if p <> nil + then Pointer(AlphaBlend) := p; + end; + + p := GetProcAddress(msimg32handle, 'GradientFill'); + if p <> nil + then Pointer(GradientFill) := p; + end; + + // Defaults + Pointer(GetComboboxInfo) := @_GetComboboxInfo; + Pointer(GetMenuBarInfo) := @_GetMenuBarInfo; + //Pointer(GetWindowInfo) := @_GetWindowInfo; + Pointer(SetLayeredWindowAttributes) := @_SetLayeredWindowAttributes; + Pointer(UpdateLayeredWindow) := @_UpdateLayeredWindow; + Pointer(IsProcessDPIAware) := @_IsProcessDPIAware; + + user32handle := LoadLibrary(user32lib); + if user32handle <> 0 then + begin + p := GetProcAddress(user32handle, 'GetComboBoxInfo'); + if p <> nil + then Pointer(GetComboboxInfo) := p; + + p := GetProcAddress(user32handle, 'GetMenuBarInfo'); + if p <> nil + then Pointer(GetMenuBarInfo) := p; + + //p := GetProcAddress(user32handle, 'GetWindowInfo'); + //if p <> nil + //then Pointer(GetWindowInfo) := p; + + p := GetProcAddress(user32handle, 'SetLayeredWindowAttributes'); + if p <> nil + then Pointer(SetLayeredWindowAttributes) := p; + + p := GetProcAddress(user32handle, 'UpdateLayeredWindow'); + if p <> nil + then Pointer(UpdateLayeredWindow) := p; + + p := GetProcAddress(user32handle, 'IsProcessDPIAware'); + if p <> nil + then Pointer(IsProcessDPIAware) := p; + end; + + // Defaults + Pointer(SHGetStockIconInfo) := @_SHGetStockIconInfo; + Pointer(SHCreateItemFromParsingName) := @_SHCreateItemFromParsingName; + + shell32handle := LoadLibrary(shell32lib); + if shell32handle <> 0 then + begin + p := GetProcAddress(shell32handle, 'SHGetStockIconInfo'); + if p <> nil + then Pointer(SHGetStockIconInfo) := p; + + p := GetProcAddress(shell32handle, 'SHCreateItemFromParsingName'); + if p <> nil + then Pointer(SHCreateItemFromParsingName) := p; + end; + + // Defaults + Pointer(SetLayout) := @_SetLayout; + + gdi32handle := LoadLibrary(gdi32lib); + if gdi32handle <> 0 then + begin + p := GetProcAddress(gdi32handle, 'SetLayout'); + if p <> nil + then Pointer(SetLayout) := p; + end; + + // Defaults + Pointer(TaskDialogIndirect) := @_TaskDialogIndirect; + Pointer(TaskDialog) := @_TaskDialog; + + comctl32handle := LoadLibrary(comctl32lib); + if comctl32handle <> 0 then + begin + p := GetProcAddress(comctl32handle, 'TaskDialogIndirect'); + if p <> nil + then Pointer(TaskDialogIndirect) := p; + + p := GetProcAddress(comctl32handle, 'TaskDialog'); + if p <> nil + then Pointer(TaskDialog) := p; + end; +end; + +procedure Finalize; +begin + AlphaBlend := @_AlphaBlend; + GetComboboxInfo := nil; + GetMenuBarInfo := nil; + + if msimg32handle <> 0 + then FreeLibrary(msimg32handle); + msimg32handle := 0; + + if user32handle <> 0 then + FreeLibrary(user32handle); + user32handle := 0; + + if shell32handle <> 0 then + FreeLibrary(shell32handle); + shell32handle := 0; + + if gdi32handle <> 0 then + FreeLibrary(gdi32handle); + gdi32handle := 0; + + if comctl32handle <> 0 then + FreeLibrary(comctl32handle); + comctl32handle := 0; +end; + +initialization + Initialize; + +finalization + Finalize; + +end. diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwscontrols.pp lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwscontrols.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwscontrols.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwscontrols.pp 2015-04-28 15:05:25.000000000 +0000 @@ -296,9 +296,13 @@ ------------------------------------------------------------------------------} class procedure TCDWSWinControl.SetBounds(const AWinControl: TWinControl; const ALeft, ATop, AWidth, AHeight: Integer); +var + lCDWinControl: TCDWinControl; begin //WriteLn(Format('[TCDWSWinControl.SetBounds Control=%s:%s x=%d y=%d w=%d h=%d', // [AWinControl.Name, AWinControl.ClassName, ALeft, ATop, AWidth, AHeight])); + lCDWinControl := TCDWinControl(AWinControl.Handle); + lCDWinControl.Region.SetAsSimpleRectRegion(Bounds(ALeft, ATop, AWidth, AHeight)); Invalidate(AWinControl); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsfactory.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsfactory.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsfactory.pas 2013-05-16 12:30:52.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsfactory.pas 2015-04-30 08:34:13.000000000 +0000 @@ -523,8 +523,8 @@ function RegisterPopupMenu: Boolean; alias : 'WSRegisterPopupMenu'; begin -// RegisterWSComponent(TPopupMenu, TCDWSPopupMenu); - Result := False; + RegisterWSComponent(TPopupMenu, TCDWSPopupMenu); + Result := True; end; function RegisterPairSplitterSide: Boolean; alias : 'WSRegisterPairSplitterSide'; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsforms.pp lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsforms.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsforms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -35,7 +35,7 @@ lazutf8sysutils, // LCL Controls, LCLType, Forms, LCLProc, GraphType, IntfGraphics, lazcanvas, - lazregions, LCLIntf, Lmessages, + lazregions, LCLIntf, Lmessages, LazUTF8, customdrawncontrols, // Widgetset InterfaceBase, WSForms, WSProc, WSLCLClasses, LCLMessageGlue, @@ -52,16 +52,16 @@ TCDWSScrollBox = class(TWSScrollBox) published -// class procedure ScrollBy(const AWinControl: TScrollingWinControl; -// const DeltaX, DeltaY: integer); override; +// class procedure ScrollBy(const AWinControl: TWinControl; +// DeltaX, DeltaY: integer); override; end; { TCDWSCustomFrame } TCDWSCustomFrame = class(TWSCustomFrame) published -// class procedure ScrollBy(const AWinControl: TScrollingWinControl; -// const DeltaX, DeltaY: integer); override; +// class procedure ScrollBy(const AWinControl: TWinControl; +// DeltaX, DeltaY: integer); override; end; { TCDWSFrame } @@ -141,8 +141,8 @@ class procedure SetFormBorderStyle(const AForm: TCustomForm; const AFormBorderStyle: TFormBorderStyle); override; // class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); override; -// class procedure SetPopupParent(const ACustomForm: TCustomForm; -// const APopupMode: TPopupMode; const APopupParent: TCustomForm); override; +// class procedure SetRealPopupParent(const ACustomForm: TCustomForm; +// const APopupParent: TCustomForm); override; class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override; class procedure SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar); override; class procedure ShowModal(const ACustomForm: TCustomForm); override; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsmenus.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsmenus.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsmenus.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsmenus.pas 2015-04-30 08:34:13.000000000 +0000 @@ -26,7 +26,8 @@ {$ifdef CD_Windows}Windows, customdrawn_WinProc,{$endif} {$ifdef CD_Cocoa}MacOSAll, CocoaAll, customdrawn_cocoaproc, CocoaGDIObjects, CocoaUtils,{$endif} // LCL - SysUtils, Classes, Types, LCLType, LCLProc, Graphics, Controls, Forms, Menus, + SysUtils, Classes, Types, Math, + LCLType, LCLProc, Graphics, Controls, Forms, Menus, // Widgetset WSMenus, WSLCLClasses; @@ -78,6 +79,31 @@ {$define CD_HasNativeWSMenusINC} {$endif} {$ifndef CD_HasNativeWSMenusINC} + +uses + StdCtrls, LCLIntf; + +type + TCDPopUpMenuForm = class(TForm) + public + Items: array of TStaticText; + LCLMenu: TPopUpMenu; + procedure HandleItemClick(ASender: TObject); + end; + +procedure TCDPopUpMenuForm.HandleItemClick(ASender: TObject); +var + lSelectedItem: PtrInt; +begin + Self.Close; + lSelectedItem := TStaticText(ASender).Tag; + if LCLIntf.OnShowSelectItemDialogResult <> nil then + LCLIntf.OnShowSelectItemDialogResult(lSelectedItem); +end; + +var + CDPopUpMenus: TFPList; // of TCDPopUpMenuForm + { TCDWSMenuItem } class procedure TCDWSMenuItem.AttachMenu(const AMenuItem: TMenuItem); @@ -154,11 +180,49 @@ { TCDWSPopupMenu } -class procedure TCDWSPopupMenu.Popup(const APopupMenu: TPopupMenu; const X, - Y: integer); -begin - inherited Popup(APopupMenu, X, Y); +class procedure TCDWSPopupMenu.Popup(const APopupMenu: TPopupMenu; const X, Y: integer); +var + i, CurY, MaxWidth, CurWidth, ItemHeight: Integer; + CurItem: TStaticText; + CurCDPopUpMenu: TCDPopUpMenuForm; +begin + if APopUpMenu.Items.Count = 0 then Exit; + + CurCDPopUpMenu := TCDPopUpMenuForm.CreateNew(nil); + CDPopUpMenus.Add(CurCDPopUpMenu); + CurCDPopUpMenu.Left := X; + CurCDPopUpMenu.Top := Y; + ItemHeight := CurCDPopUpMenu.Canvas.TextHeight('Áç') + 5; + CurCDPopUpMenu.Height := ItemHeight * APopUpMenu.Items.Count; + CurY := 0; + MaxWidth := 0; + + SetLength(CurCDPopUpMenu.Items, APopUpMenu.Items.Count); + for i := 0 to APopUpMenu.Items.Count-1 do + begin + CurItem := TStaticText.Create(CurCDPopUpMenu); + CurCDPopUpMenu.Items[i] := CurItem; + CurItem.Top := CurY; + Inc(CurY, ItemHeight); + CurItem.Left := 0; + CurItem.AutoSize := True; + CurItem.Parent := CurCDPopUpMenu; + CurItem.Caption := APopUpMenu.Items[i].Caption; + CurItem.Tag := i; + CurItem.OnClick := @CurCDPopUpMenu.HandleItemClick; + CurWidth := CurCDPopUpMenu.Canvas.TextWidth(CurItem.Caption); + MaxWidth := Max(MaxWidth, CurWidth); + end; + + CurCDPopUpMenu.Width := MaxWidth; + + CurCDPopUpMenu.Show; end; + +initialization + + CDPopUpMenus := TFPList.Create; + {$endif} end. diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsstdctrls.pas lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsstdctrls.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/customdrawn/customdrawnwsstdctrls.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/customdrawn/customdrawnwsstdctrls.pas 2015-04-30 08:34:13.000000000 +0000 @@ -77,9 +77,10 @@ class procedure DestroyHandle(const AWinControl: TWinControl); override; class procedure ShowHide(const AWinControl: TWinControl); override; + // TWSCustomComboBox { class function GetDroppedDown(const ACustomComboBox: TCustomComboBox - ): Boolean; override; - class function GetItemIndex(const ACustomComboBox: TCustomComboBox): integer; override;} + ): Boolean; override;} + class function GetItemIndex(const ACustomComboBox: TCustomComboBox): integer; override; class function GetItems(const ACustomComboBox: TCustomComboBox): TStrings; override; class procedure FreeItems(var AItems: TStrings); override; // class function GetMaxLength(const ACustomComboBox: TCustomComboBox): integer; override; @@ -94,12 +95,14 @@ NewTraverseList: boolean); override; class procedure SetDropDownCount(const ACustomComboBox: TCustomComboBox; NewCount: Integer); override; class procedure SetDroppedDown(const ACustomComboBox: TCustomComboBox; - ADroppedDown: Boolean); override; + ADroppedDown: Boolean); override;} class procedure SetItemIndex(const ACustomComboBox: TCustomComboBox; NewIndex: integer); override; - class procedure SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override; + {class procedure SetMaxLength(const ACustomComboBox: TCustomComboBox; NewLength: integer); override; class procedure SetStyle(const ACustomComboBox: TCustomComboBox; NewStyle: TComboBoxStyle); override; - class procedure Sort(const ACustomComboBox: TCustomComboBox; AList: TStrings; IsSorted: boolean); override;} + + class function GetItemHeight(const ACustomComboBox: TCustomComboBox): Integer; override; + //class procedure SetItemHeight(const ACustomComboBox: TCustomComboBox; const AItemHeight: Integer); override; end; { TCDWSComboBox } @@ -853,6 +856,17 @@ end; end; +class function TCDWSCustomComboBox.GetItemIndex( + const ACustomComboBox: TCustomComboBox): integer; +var + lCDWinControl: TCDWinControl; + lIntfComboBox: TCDIntfComboBox; +begin + lCDWinControl := TCDWinControl(ACustomComboBox.Handle); + lIntfComboBox := TCDIntfComboBox(lCDWinControl.CDControl); + Result := lIntfComboBox.ItemIndex; +end; + class function TCDWSCustomComboBox.GetItems( const ACustomComboBox: TCustomComboBox): TStrings; var @@ -878,16 +892,35 @@ lCDWinControl: TCDWinControl; lIntfComboBox: TCDIntfComboBox; begin - // ToDo: Do something to correct the combobox height when autosized, now something in the LCL seams to hardcode it to 50... -{ lCDWinControl := TCDWinControl(AWinControl.Handle); + lCDWinControl := TCDWinControl(AWinControl.Handle); lIntfComboBox := TCDIntfComboBox(lCDWinControl.CDControl); - if lIntfComboBox.OriginalHeight = 0 then lIntfComboBox.OriginalHeight := AWinControl.Height; - PreferredHeight := lIntfComboBox.OriginalHeight; - //AWinControl.Height := PreferredHeight;} + lIntfComboBox.LCLWSCalculatePreferredSize(PreferredWidth, PreferredHeight, WithThemeSpace, False, False); // The correct behavior for the LCL is not forcing any specific value for - // TComboBox.Width, so we set it to zero to signal that here - PreferredWidth := 0; + // TComboBox.Width, so widgetsets should set PreferredWidth to zero to + // use the user-provided value. + // + // But in LCL-CustomDrawn something strange happens (probably due to control injection) + // that requires setting PreferredWidth or else a default 50 will be used, + // this default size 50x75 is set at TControl.GetControlClassDefaultSize + PreferredWidth := AWinControl.Width; +end; + +class procedure TCDWSCustomComboBox.SetItemIndex( + const ACustomComboBox: TCustomComboBox; NewIndex: integer); +var + lCDWinControl: TCDWinControl; + lIntfComboBox: TCDIntfComboBox; +begin + lCDWinControl := TCDWinControl(ACustomComboBox.Handle); + lIntfComboBox := TCDIntfComboBox(lCDWinControl.CDControl); + lIntfComboBox.ItemIndex := NewIndex; +end; + +class function TCDWSCustomComboBox.GetItemHeight( + const ACustomComboBox: TCustomComboBox): Integer; +begin + Result := 25; end; (*{ TCDWSCustomListBox } @@ -1335,7 +1368,7 @@ Result := False; lCDWinControl := TCDWinControl(AWinControl.Handle); if lCDWinControl.CDControl = nil then Exit; - AText := TCDIntfEdit(lCDWinControl.CDControl).Lines.Text; + AText := TCDIntfEdit(lCDWinControl.CDControl).Text; //DebugLn('[TCDWSCustomEdit.GetText] AWinControl=' + AWinControl.Name + ' AText='+AText); Result := True; end; @@ -1374,8 +1407,7 @@ TQtLineEdit(ACustomEdit.Handle).setAlignment(AlignmentMap[AAlignment]); end;*) -class function TCDWSCustomEdit.GetCaretPos(const ACustomEdit: TCustomEdit - ): TPoint; +class function TCDWSCustomEdit.GetCaretPos(const ACustomEdit: TCustomEdit): TPoint; var lCDWinControl: TCDWinControl; begin @@ -1773,7 +1805,7 @@ end; lCDWinControl.CDControl.LCLWSCalculatePreferredSize( - PreferredWidth, PreferredHeight, WithThemeSpace, AWinControl.AutoSize); + PreferredWidth, PreferredHeight, WithThemeSpace, AWinControl.AutoSize, False); DebugLn(Format('[TCDWSCustomCheckBox.GetPreferredSize] Width=%d Height=%d', [PreferredWidth, PreferredHeight])); end; @@ -1846,7 +1878,7 @@ end; lCDWinControl.CDControl.LCLWSCalculatePreferredSize( - PreferredWidth, PreferredHeight, WithThemeSpace, AWinControl.AutoSize); + PreferredWidth, PreferredHeight, WithThemeSpace, AWinControl.AutoSize, False); DebugLn(Format('[TCDWSRadioButton.GetPreferredSize] Width=%d Height=%d', [PreferredWidth, PreferredHeight])); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkproc.inc lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkproc.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkproc.inc 2013-07-14 06:36:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkproc.inc 2015-11-11 13:17:39.000000000 +0000 @@ -360,25 +360,25 @@ Result:=-1; end; -function RectFromGdkRect(AGdkRect: TGdkRectangle): TRect; +function RectFromGdkRect(const AGdkRect: TGdkRectangle): TRect; begin - with Result, AGdkRect do + with Result do begin - Left := x; - Top := y; - Right := Width + x; - Bottom := Height + y; + Left := AGdkRect.x; + Top := AGdkRect.y; + Right := AGdkRect.Width + AGdkRect.x; + Bottom := AGdkRect.Height + AGdkRect.y; end; end; -function GdkRectFromRect(R: TRect): TGdkRectangle; +function GdkRectFromRect(const R: TRect): TGdkRectangle; begin - with Result, R do + with Result do begin - x := Left; - y := Top; - width := Right-Left; - height := Bottom-Top; + x := R.Left; + y := R.Top; + width := R.Right-R.Left; + height := R.Bottom-R.Top; end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkproc.pp lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkproc.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkproc.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkproc.pp 2015-11-11 13:17:39.000000000 +0000 @@ -1,9 +1,9 @@ -{ $Id: gtkproc.pp 41387 2013-05-24 18:30:06Z juha $ +{ $Id: gtkproc.pp 50290 2015-11-11 13:17:39Z mattias $ ---------------------------------- gtkproc.pp - gtk interface procs ---------------------------------- - @lastmod($Date: 2013-05-24 20:30:06 +0200 (Fr, 24 Mai 2013) $) + @lastmod($Date: 2015-11-11 14:17:39 +0100 (Mi, 11 Nov 2015) $) @author(Marc Weustink <marc@@lazarus.dommelstein.net>) This unit contains procedures/functions needed for the gtk <-> LCL interface @@ -277,8 +277,8 @@ //============================================================================== // functions -function RectFromGdkRect(AGdkRect: TGdkRectangle): TRect; -function GdkRectFromRect(R: TRect): TGdkRectangle; +function RectFromGdkRect(const AGdkRect: TGdkRectangle): TRect; +function GdkRectFromRect(const R: TRect): TGdkRectangle; function AlignToGtkAlign(Align: TAlignment): gfloat; {$ifdef gtk2} function GtkScrollTypeToScrollCode(ScrollType: TGtkScrollType): LongWord; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkwinapi.inc lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkwinapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkwinapi.inc 2014-05-12 23:12:18.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkwinapi.inc 2015-11-11 13:17:45.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit gtkint.pp} -{ $Id: gtkwinapi.inc 45029 2014-05-12 23:12:18Z maxim $ } +{ $Id: gtkwinapi.inc 50291 2015-11-11 13:17:45Z mattias $ } {****************************************************************************** All GTK Winapi implementations. @@ -4739,11 +4739,11 @@ If lpRect <> nil then begin gdk_region_get_clipbox(PGDIObject(RGN)^.GDIRegionObject, @CRect); - With lpRect^,CRect do begin - Left := X; - Top := Y; - Right := X + Width; - Bottom := Y + Height; + With lpRect^ do begin + Left := CRect.X; + Top := CRect.Y; + Right := CRect.X + CRect.Width; + Bottom := CRect.Y + CRect.Height; end; end; end; @@ -8283,6 +8283,7 @@ {$IFNDEF Gtk2} PaintDC: HDC; DCOrigin: TPoint; + R: TRect; {$ENDIF} begin (* MG: old trick. Not used anymore, but it might be, that someday there @@ -8347,10 +8348,10 @@ then begin PaintDC := TLMPaint(AMessage).DC; DCOrigin := TGtkDeviceContext(PaintDC).Offset; - with GtkPaintData.Rect do - IntersectClipRect(PaintDC, - Left - DCOrigin.X, Top - DCOrigin.Y, - Right - DCOrigin.X, Bottom - DCOrigin.Y); + R:=GtkPaintData.Rect; + IntersectClipRect(PaintDC, + R.Left - DCOrigin.X, R.Top - DCOrigin.Y, + R.Right - DCOrigin.X, R.Bottom - DCOrigin.Y); end; {$EndIf} GtkPaintData.Free; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkwscontrols.pp lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkwscontrols.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkwscontrols.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkwscontrols.pp 2015-11-29 18:45:53.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: gtkwscontrols.pp 41387 2013-05-24 18:30:06Z juha $} +{ $Id: gtkwscontrols.pp 50523 2015-11-29 18:45:53Z juha $} { ***************************************************************************** * GtkWSControls.pp * @@ -88,8 +88,8 @@ class procedure SetPos(const AWinControl: TWinControl; const ALeft, ATop: Integer); override; class procedure SetText(const AWinControl: TWinControl; const AText: string); override; class procedure SetShape(const AWinControl: TWinControl; const AShape: HBITMAP); override; - class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); override; + class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); override; class procedure ShowHide(const AWinControl: TWinControl); override; end; @@ -209,27 +209,27 @@ Widget := PGtkWidget(AWinControl.Handle); if (Widget <> nil) and (GtkWidgetIsA(Widget, gtk_window_get_type)) then begin - with Geometry, AWinControl do + with Geometry do begin - if Constraints.MinWidth > 0 then - min_width := Constraints.MinWidth + if AWinControl.Constraints.MinWidth > 0 then + min_width := AWinControl.Constraints.MinWidth else min_width := 1; - if Constraints.MaxWidth > 0 then - max_width := Constraints.MaxWidth + if AWinControl.Constraints.MaxWidth > 0 then + max_width := AWinControl.Constraints.MaxWidth else max_width := 32767; - if Constraints.MinHeight > 0 then - min_height := Constraints.MinHeight + if AWinControl.Constraints.MinHeight > 0 then + min_height := AWinControl.Constraints.MinHeight else min_height := 1; - if Constraints.MaxHeight > 0 then - max_height := Constraints.MaxHeight + if AWinControl.Constraints.MaxHeight > 0 then + max_height := AWinControl.Constraints.MaxHeight else max_height := 32767; - base_width := Width; - base_height := Height; + base_width := AWinControl.Width; + base_height := AWinControl.Height; width_inc := 1; height_inc := 1; min_aspect := 0; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkwsforms.pp lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkwsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk/gtkwsforms.pp 2014-04-28 20:17:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk/gtkwsforms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: gtkwsforms.pp 44840 2014-04-28 20:17:56Z martin $} +{ $Id: gtkwsforms.pp 51056 2015-12-27 20:27:38Z ondrej $} { ***************************************************************************** * GtkWSForms.pp * @@ -40,7 +40,6 @@ class procedure SetCallbacks(const AWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual; published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; - class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override; class procedure SetColor(const AWinControl: TWinControl); override; end; @@ -80,8 +79,8 @@ class procedure SetBorderIcons(const AForm: TCustomForm; const ABorderIcons: TBorderIcons); override; class procedure SetColor(const AWinControl: TWinControl); override; - class procedure SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); override; + class procedure SetRealPopupParent(const ACustomForm: TCustomForm; + const APopupParent: TCustomForm); override; end; { TGtkWSForm } @@ -185,13 +184,6 @@ SetCallBacks(PGtkWidget(Frame), WidgetInfo); end; -class procedure TGtkWSScrollingWinControl.ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); -begin - {$IFDEF VerboseGtkToDos}{$note implement me}{$ENDIF} - AWinControl.Invalidate; -end; - class procedure TGtkWSScrollingWinControl.SetColor( const AWinControl: TWinControl); begin @@ -534,23 +526,13 @@ TGtkWSWinControl.SetColor(AWinControl); end; -class procedure TGtkWSCustomForm.SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); -var - PopupParent: TCustomForm; +class procedure TGtkWSCustomForm.SetRealPopupParent( + const ACustomForm: TCustomForm; const APopupParent: TCustomForm); begin - if not WSCheckHandleAllocated(ACustomForm, 'SetPopupParent') then Exit; + if not WSCheckHandleAllocated(ACustomForm, 'SetRealPopupParent') then Exit; - case APopupMode of - pmNone: - PopupParent := nil; - pmAuto: - PopupParent := Screen.ActiveForm; - pmExplicit: - PopupParent := APopupParent; - end; - if PopupParent <> nil then - gtk_window_set_transient_for(PGtkWindow(ACustomForm.Handle), PGtkWindow(PopupParent.Handle)) + if APopupParent <> nil then + gtk_window_set_transient_for(PGtkWindow(ACustomForm.Handle), PGtkWindow(APopupParent.Handle)) else gtk_window_set_transient_for(PGtkWindow(ACustomForm.Handle), nil); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2callback.inc lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2callback.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2callback.inc 2015-04-11 07:11:17.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2callback.inc 2015-04-10 07:26:53.000000000 +0000 @@ -2077,6 +2077,9 @@ exit; MessI.Keys := MessI.Keys or BtnKey; + + if BtnKey in [MK_XBUTTON1, MK_XBUTTON2] then + MessI.Keys := MessI.Keys or BtnKey shl 11; IsMultiClick := TestIfMultiClick; case gdk_event_get_type(Event) of @@ -2192,6 +2195,12 @@ 3: if not CheckMouseButtonDown(LastRight, MK_RBUTTON, LM_RBUTTONDOWN, LM_RBUTTONDBLCLK, LM_RBUTTONTRIPLECLK, LM_RBUTTONQUADCLK) then Exit; + 8: if not CheckMouseButtonDown(LastXButton, + MK_XBUTTON1, LM_XBUTTONDOWN, + LM_XBUTTONDBLCLK, LM_XBUTTONTRIPLECLK, LM_XBUTTONQUADCLK) then Exit; + 9: if not CheckMouseButtonDown(LastX2Button, + MK_XBUTTON2, LM_XBUTTONDOWN, + LM_XBUTTONDBLCLK, LM_XBUTTONTRIPLECLK, LM_XBUTTONQUADCLK) then Exit; else begin MessI.Msg := LM_NULL; @@ -2208,7 +2217,8 @@ {always send LM_SETFOCUS first} if ((MessI.Msg = LM_LBUTTONDOWN) or (MessI.Msg = LM_RBUTTONDOWN) or - (MessI.Msg = LM_MBUTTONDOWN) or (MessI.Msg = LM_LBUTTONDBLCLK)) and + (MessI.Msg = LM_MBUTTONDOWN) or (MessI.Msg = LM_LBUTTONDBLCLK) or + (MessI.Msg = LM_XBUTTONDOWN)) and not AWinControl.Focused and AWinControl.CanFocus and not (csDesigning in AWinControl.ComponentState) and (AWinControl is TCustomEdit) then begin @@ -2317,6 +2327,8 @@ 1: if not CheckMouseButtonUp(LastLeft, LM_LBUTTONUP) then Exit; 2: if not CheckMouseButtonUp(LastMiddle, LM_MBUTTONUP) then Exit; 3: if not CheckMouseButtonUp(LastRight, LM_RBUTTONUP) then exit; + 8: if not CheckMouseButtonUp(LastXButton, LM_XBUTTONUP) then exit; + 9: if not CheckMouseButtonUp(LastX2Button, LM_XBUTTONUP) then exit; else begin MessI.Msg := LM_NULL; @@ -2342,6 +2354,8 @@ // send the message directly to the LCL // (Posting the message via queue // has the risk of getting out of sync with the gtk) + if event^.button in [8,9] then + MessI.Keys := MessI.Keys or ((event^.button - 7) shl 16); MessI.Result := 0; NotifyApplicationUserInput(AWinControl, MessI.Msg); DeliverMessage(AWinControl, MessI); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2globals.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2globals.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2globals.pp 2014-06-22 08:57:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2globals.pp 2015-02-13 02:55:47.000000000 +0000 @@ -72,7 +72,7 @@ Window: nil; WindowPoint: (X: 0; Y: 0)); var - LastLeft, LastMiddle, LastRight: TLastMouseClick; + LastLeft, LastMiddle, LastRight, LastXButton, LastX2Button: TLastMouseClick; var im_context: PGtkIMContext = nil; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2int.pas lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2int.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2int.pas 2014-06-22 08:57:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2int.pas 2015-07-04 23:08:00.000000000 +0000 @@ -39,8 +39,8 @@ {$EndIf} gdk2pixbuf, gtk2, gdk2, glib2, Pango, // LCL - Maps, FileUtil, Dialogs, Controls, Forms, LCLStrConsts, - LMessages, LCLProc, LCLIntf, LCLType, DynHashArray, GraphType, GraphMath, + Maps, LazFileUtils, Dialogs, Controls, Forms, LCLStrConsts, + LMessages, LCLProc, LazUTF8, LCLIntf, LCLType, DynHashArray, GraphType, GraphMath, Graphics, Menus, Themes, WSLCLClasses, Buttons, StdCtrls, CheckLst, diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2lclintf.inc lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2lclintf.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2lclintf.inc 2015-03-01 12:31:57.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2lclintf.inc 2015-12-02 15:00:21.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit gtk2int.pas} -{ $Id: gtk2lclintf.inc 48064 2015-03-01 12:31:57Z mattias $ } +{ $Id: gtk2lclintf.inc 50575 2015-12-02 15:00:21Z mattias $ } {****************************************************************************** All GTK2 interface communication implementations. Initial Revision : Sat Jan 17 19:00:00 2004 @@ -975,7 +975,14 @@ begin Result := mrNone; ReleaseCapture; - ADialogResult := mrNone; + + if (Length(DialogMessage)>1000) then + begin + Result:=inherited; + exit; + end; + + ADialogResult := mrCancel; case DialogType of idDialogWarning: GtkDialogType := GTK_MESSAGE_WARNING; idDialogError: GtkDialogType := GTK_MESSAGE_ERROR; @@ -1000,11 +1007,6 @@ CancelID := X; ADialogResult := DlgBtn.ModalResult; end; - - if (ADialogResult = mrNone) and - (Buttons[X].ModalResult in [mrCancel, mrAbort, mrIgnore, mrNo, mrNoToAll]) - then - ADialogResult := Buttons[X].ModalResult; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2memostrings.inc lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2memostrings.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2memostrings.inc 2014-11-07 14:52:30.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2memostrings.inc 2015-03-29 14:05:51.000000000 +0000 @@ -54,6 +54,8 @@ begin Result := gtk_false; // stop this timer + AStrings.FTimerMove:=0; // to know if this timer is active when destroyed + if AStrings.FQueueCursorMove = -1 then begin // always scroll so the cursor is visible @@ -78,7 +80,9 @@ EndIter: TGtkTextIter; Offset: Integer; begin - Result := gtk_false; // stop this timer + Result := gtk_false; // stop this timer ; + + AStrings.FTimerSel:=0; // so we don't try to remove it if it's not used. TextMark := gtk_text_buffer_get_insert(AStrings.FGtkBuf); gtk_text_buffer_get_iter_at_mark(AStrings.FGtkBuf, @StartIter, TextMark); @@ -155,8 +159,10 @@ destructor TGtk2MemoStrings.Destroy; begin - gtk_timeout_remove(FTimerSel); - gtk_timeout_remove(FTimerMove); + if FTimerSel <> 0 then + gtk_timeout_remove(FTimerSel); + if FTimerMove <> 0 then + gtk_timeout_remove(FTimerMove); // don't destroy the widgets inherited Destroy; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2proc.inc lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2proc.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2proc.inc 2015-03-24 21:44:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2proc.inc 2015-11-11 13:39:55.000000000 +0000 @@ -336,25 +336,25 @@ Result:=-1; end; -function RectFromGdkRect(AGdkRect: TGdkRectangle): TRect; +function RectFromGdkRect(const AGdkRect: TGdkRectangle): TRect; begin - with Result, AGdkRect do + with AGdkRect do begin - Left := x; - Top := y; - Right := Width + x; - Bottom := Height + y; + Result.Left := x; + Result.Top := y; + Result.Right := Width + x; + Result.Bottom := Height + y; end; end; -function GdkRectFromRect(R: TRect): TGdkRectangle; +function GdkRectFromRect(const R: TRect): TGdkRectangle; begin - with Result, R do + with Result do begin - x := Left; - y := Top; - width := Right-Left; - height := Bottom-Top; + x := R.Left; + y := R.Top; + width := R.Right-R.Left; + height := R.Bottom-R.Top; end; end; @@ -6411,8 +6411,10 @@ FixedWidget: PGtkWidget; begin Widget := {%H-}PGtkWidget(AWinControl.Handle); - //if AWinControl.Name='OtherInfoGroupBox' then - // DebugLn(['GetGTKDefaultWidgetSize ',GetWidgetDebugReport(Widget)]); + {$IFDEF VerboseCalculatePreferredSize} + if AWinControl.Name='GroupBox1' then + DebugLn(['GetGTKDefaultWidgetSize ',GetWidgetDebugReport(Widget)]); + {$ENDIF} // set size to default gtk_widget_set_size_request(Widget, -1, -1); @@ -6421,21 +6423,25 @@ PreferredWidth:=Requisition.width; PreferredHeight:=Requisition.height; - {if AWinControl.Name='OtherInfoGroupBox' then + {$IFDEF VerboseCalculatePreferredSize} + if AWinControl.Name='GroupBox1' then DebugLn(['GetGTKDefaultWidgetSize Allocation=',Widget^.allocation.x,',',Widget^.allocation.y,',',Widget^.allocation.width,',',Widget^.allocation.height, ' requisition=',Widget^.requisition.width,',',Widget^.requisition.height, ' PreferredWidth=',PreferredWidth,' PreferredHeight=',PreferredHeight, - ' WithThemeSpace=',WithThemeSpace]); } + ' WithThemeSpace=',WithThemeSpace]); + {$ENDIF} if GtkWidgetIsA(Widget,GTK_TYPE_EVENT_BOX) and (AWinControl.ControlCount>0) then begin // ignore client area (child controls) FixedWidget:=PGtkWidget(GetFixedWidget(Widget)); if FixedWidget<>nil then begin - {if AWinControl.Name='OtherInfoGroupBox' then + {$IFDEF VerboseCalculatePreferredSize} + if AWinControl.Name='GroupBox1' then debugln(['GetGTKDefaultWidgetSize Fixed ', ' allocation=',FixedWidget^.allocation.x,',',FixedWidget^.allocation.y,',',FixedWidget^.allocation.width,',',FixedWidget^.allocation.height, - ' requisition=',FixedWidget^.requisition.width,',',FixedWidget^.requisition.height]);} + ' requisition=',FixedWidget^.requisition.width,',',FixedWidget^.requisition.height]); + {$ENDIF} dec(PreferredWidth,Max(0,FixedWidget^.requisition.width)); dec(PreferredHeight,Max(0,FixedWidget^.requisition.height)); end; @@ -6443,8 +6449,10 @@ // restore size gtk_widget_set_size_request(Widget, AWinControl.Width, AWinControl.Height); - //if AWinControl.Name='OtherInfoGroupBox' then - // debugln('GetGTKDefaultSize PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); + {$IFDEF VerboseCalculatePreferredSize} + if AWinControl.Name='GroupBox1' then + debugln('GetGTKDefaultSize PreferredWidth=',dbgs(PreferredWidth),' PreferredHeight=',dbgs(PreferredHeight)); + {$ENDIF} end; procedure SendSizeNotificationToLCL(aWidget: PGtkWidget); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2proc.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2proc.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2proc.pp 2014-02-22 21:43:58.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2proc.pp 2015-11-11 13:39:55.000000000 +0000 @@ -43,11 +43,14 @@ {$endif} // Other units Math, // Math after gtk to get the correct Float type - LMessages, LCLProc, LCLIntf, LCLType, DynHashArray, Masks, - GraphType, Graphics, LResources, Controls, Forms, - Buttons, Menus, StdCtrls, ComCtrls, ExtCtrls, Dialogs, ExtDlgs, - FileUtil, ImgList, Gtk2FontCache, Gtk2Globals, Gtk2Def, Gtk2Extra, {%H-}Gtk2Debug, - LCLMessageGlue; + // LCL + LMessages, LCLProc, LCLIntf, LCLType, DynHashArray, GraphType, Graphics, + LResources, Controls, Forms, Buttons, Menus, StdCtrls, ComCtrls, ExtCtrls, + Dialogs, ExtDlgs, ImgList, LCLMessageGlue, + // LazUtils + Masks, FileUtil, LazFileUtils, LazUTF8, + // Gtk2 + Gtk2FontCache, Gtk2Globals, Gtk2Def, Gtk2Extra, {%H-}Gtk2Debug; const GtkListItemGtkListTag = 'GtkList'; @@ -274,8 +277,8 @@ //============================================================================== // functions -function RectFromGdkRect(AGdkRect: TGdkRectangle): TRect; -function GdkRectFromRect(R: TRect): TGdkRectangle; +function RectFromGdkRect(const AGdkRect: TGdkRectangle): TRect; +function GdkRectFromRect(const R: TRect): TGdkRectangle; function AlignToGtkAlign(Align: TAlignment): gfloat; function GtkScrollTypeToScrollCode(ScrollType: TGtkScrollType): LongWord; function Gtk2TranslateScrollStyle(const SS:TScrollStyle):TPoint; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2themes.pas lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2themes.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2themes.pas 2013-10-08 13:51:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2themes.pas 2015-11-11 13:40:02.000000000 +0000 @@ -813,13 +813,10 @@ ComboBoxHeight := (RDest.Right - Min(23, (ComboBoxWidth div 2) + 1)) + 2; if RDest.Right - ComboBoxHeight < 8 then ComboBoxHeight := Area.X + (Area.Width div 4); - with RDest do - begin - gtk_paint_arrow(Style, Window, State, Shadow, @ClipArea, Widget, - PChar(Detail), GTK_ARROW_UP, True, Left + ((Right - Left) div 4), Top + ((Bottom - Top) div 2) - 5, Min(8, Right - Left), Min(8, Bottom - Top)); - gtk_paint_arrow(Style, Window, State, Shadow, @ClipArea, Widget, - PChar(Detail), GTK_ARROW_DOWN, True, Left + ((Right - Left) div 4), Top + ((Bottom - Top) div 2) + 1, Min(8, Right - Left), Min(8, Bottom - Top)); - end; + gtk_paint_arrow(Style, Window, State, Shadow, @ClipArea, Widget, + PChar(Detail), GTK_ARROW_UP, True, RDest.Left + ((RDest.Right - RDest.Left) div 4), RDest.Top + ((RDest.Bottom - RDest.Top) div 2) - 5, Min(8, RDest.Right - RDest.Left), Min(8, RDest.Bottom - RDest.Top)); + gtk_paint_arrow(Style, Window, State, Shadow, @ClipArea, Widget, + PChar(Detail), GTK_ARROW_DOWN, True, RDest.Left + ((RDest.Right - RDest.Left) div 4), RDest.Top + ((RDest.Bottom - RDest.Top) div 2) + 1, Min(8, RDest.Right - RDest.Left), Min(8, RDest.Bottom - RDest.Top)); end; end; gptBox: diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2winapi.inc lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2winapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2winapi.inc 2015-03-20 14:37:44.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2winapi.inc 2015-11-11 13:40:08.000000000 +0000 @@ -2231,13 +2231,10 @@ Origin := DevCtx.Offset; try - with R do - begin - DrawHorzLine(Left, Top, Right-1); - DrawVertLine(Right-1, Top, Bottom-1); - DrawHorzLine(Right-1, Bottom-1, Left); - DrawVertLine(Left, Bottom-1, Top); - end; + DrawHorzLine(R.Left, R.Top, R.Right-1); + DrawVertLine(R.Right-1, R.Top, R.Bottom-1); + DrawHorzLine(R.Right-1, R.Bottom-1, R.Left); + DrawVertLine(R.Left, R.Bottom-1, R.Top); Result := True; finally @@ -4456,7 +4453,7 @@ ------------------------------------------------------------------------------} function TGtk2WidgetSet.GetRgnBox(RGN : HRGN; lpRect : PRect) : Longint; var - CRect : TGDKRectangle; + ClipR : TGDKRectangle; begin Result := SIMPLEREGION; If lpRect <> nil then @@ -4467,12 +4464,12 @@ Result := RegionType({%H-}PGDIObject(RGN)^.GDIRegionObject); If lpRect <> nil then begin gdk_region_get_clipbox({%H-}PGDIObject(RGN)^.GDIRegionObject, - @CRect); - With lpRect^,CRect do begin - Left := X; - Top := Y; - Right := X + Width; - Bottom := Y + Height; + @ClipR); + With lpRect^ do begin + Left := ClipR.X; + Top := ClipR.Y; + Right := ClipR.X + ClipR.Width; + Bottom := ClipR.Y + ClipR.Height; end; end; end; @@ -7052,9 +7049,9 @@ Result := False; if not IsValidGDIObject(RGN) then exit; - if (PGdiObject(RGN)^.GDIBitmapObject <> nil) or - (PGdiObject(RGN)^.GDIPixbufObject <> nil) or - (PGdiObject(RGN)^.GDIPixmapObject.Image <> nil) then + if ({%H-}PGdiObject(RGN)^.GDIBitmapObject <> nil) or + ({%H-}PGdiObject(RGN)^.GDIPixbufObject <> nil) or + ({%H-}PGdiObject(RGN)^.GDIPixmapObject.Image <> nil) then begin // issue #27080 Result := False; @@ -7237,7 +7234,7 @@ var RadioGroup: PGSList; - CurrentGroupIndex: Integer; + //CurrentGroupIndex: Integer; begin Result := False; @@ -7247,25 +7244,25 @@ Exit; end; - CurrentGroupIndex := integer({%H-}PtrUInt(g_object_get_data({%H-}Pointer(hndMenu), GROUPIDX_DATANAME))); + //CurrentGroupIndex := integer({%H-}PtrUInt(g_object_get_data({%H-}Pointer(hndMenu), GROUPIDX_DATANAME))); // Update needed ? - if GroupIndex = CurrentGroupIndex + { if GroupIndex = CurrentGroupIndex then begin Result := True; Exit; - end; + end;} // Remove current group gtk_radio_menu_item_set_group({%H-}PGtkRadioMenuItem(hndMenu), nil); g_object_set_data({%H-}Pointer(hndMenu), GROUPIDX_DATANAME, nil); // Check remove only - if GroupIndex = 0 + { if GroupIndex = 0 then begin Result := True; Exit; - end; + end; } // Try to find new group RadioGroup := GetGroup; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wscontrols.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wscontrols.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wscontrols.pp 2014-06-22 08:57:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wscontrols.pp 2016-02-13 12:38:27.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: gtk2wscontrols.pp 45601 2014-06-22 08:57:16Z mattias $} +{ $Id: gtk2wscontrols.pp 51607 2016-02-13 12:38:27Z maxim $} { ***************************************************************************** * Gtk2WSControls.pp * @@ -91,11 +91,11 @@ class procedure SetPos(const AWinControl: TWinControl; const ALeft, ATop: Integer); override; class procedure SetText(const AWinControl: TWinControl; const AText: string); override; class procedure SetShape(const AWinControl: TWinControl; const AShape: HBITMAP); override; - class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); override; + class procedure SetBiDiMode(const AWinControl: TWinControl; UseRightToLeftAlign, {%H-}UseRightToLeftReading, {%H-}UseRightToLeftScrollBar : Boolean); override; + class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); override; class procedure ShowHide(const AWinControl: TWinControl); override; - - class procedure SetBiDiMode(const AWinControl: TWinControl; UseRightToLeftAlign, {%H-}UseRightToLeftReading, {%H-}UseRightToLeftScrollBar : Boolean); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; { TGtk2WSGraphicControl } @@ -477,17 +477,11 @@ if event^.focus_change._in = 1 then begin R := TWinControl(Data).BoundsRect; - with R do - begin - with R do - begin - Alloc.x := Left; - Alloc.y := Top; - Alloc.width := Right - Left; - Alloc.height := Bottom - Top; - end; - gtk_widget_size_allocate(Widget, @Alloc); - end; + Alloc.x := R.Left; + Alloc.y := R.Top; + Alloc.width := R.Right - R.Left; + Alloc.height := R.Bottom - R.Top; + gtk_widget_size_allocate(Widget, @Alloc); end else begin w := gtk_widget_get_parent(Widget); @@ -576,27 +570,27 @@ Widget := {%H-}PGtkWidget(AWinControl.Handle); if (Widget <> nil) and (GtkWidgetIsA(Widget, gtk_window_get_type)) then begin - with Geometry, AWinControl do + with Geometry do begin - if Constraints.MinWidth > 0 then - min_width := Constraints.MinWidth + if AWinControl.Constraints.MinWidth > 0 then + min_width := AWinControl.Constraints.MinWidth else min_width := 1; - if Constraints.MaxWidth > 0 then - max_width := Constraints.MaxWidth + if AWinControl.Constraints.MaxWidth > 0 then + max_width := AWinControl.Constraints.MaxWidth else max_width := 32767; - if Constraints.MinHeight > 0 then - min_height := Constraints.MinHeight + if AWinControl.Constraints.MinHeight > 0 then + min_height := AWinControl.Constraints.MinHeight else min_height := 1; - if Constraints.MaxHeight > 0 then - max_height := Constraints.MaxHeight + if AWinControl.Constraints.MaxHeight > 0 then + max_height := AWinControl.Constraints.MaxHeight else max_height := 32767; - base_width := Width; - base_height := Height; + base_width := AWinControl.Width; + base_height := AWinControl.Height; width_inc := 1; height_inc := 1; min_aspect := 0; @@ -631,14 +625,88 @@ InvalidateLastWFPResult(AWinControl, AWinControl.BoundsRect); end; +class procedure TGtk2WSWinControl.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); +var + Scrolled: PGtkScrolledWindow; + Adjustment: PGtkAdjustment; + h, v: Double; + NewPos: Double; +begin + if not AWinControl.HandleAllocated then exit; + Scrolled := GTK_SCROLLED_WINDOW({%H-}Pointer(AWinControl.Handle)); + if not GTK_IS_SCROLLED_WINDOW(Scrolled) then + exit; + Adjustment := gtk_scrolled_window_get_hadjustment(Scrolled); + if Adjustment <> nil then + begin + h := gtk_adjustment_get_value(Adjustment); + NewPos := Adjustment^.upper - Adjustment^.page_size; + if h - DeltaX <= NewPos then + NewPos := h - DeltaX; + gtk_adjustment_set_value(Adjustment, NewPos); + end; + Adjustment := gtk_scrolled_window_get_vadjustment(Scrolled); + if Adjustment <> nil then + begin + v := gtk_adjustment_get_value(Adjustment); + NewPos := Adjustment^.upper - Adjustment^.page_size; + if v - DeltaY <= NewPos then + NewPos := v - DeltaY; + gtk_adjustment_set_value(Adjustment, NewPos); + end; + AWinControl.Invalidate; +end; + class procedure TGtk2WSWinControl.SetBounds(const AWinControl: TWinControl; const ALeft, ATop, AWidth, AHeight: Integer); +var + AForm: TCustomForm; + Geometry: TGdkGeometry; begin if not WSCheckHandleAllocated(AWinControl, 'SetBounds') then Exit; ResizeHandle(AWinControl); InvalidateLastWFPResult(AWinControl, Rect(ALeft, ATop, AWidth, AHeight)); + if not AWinControl.Visible then // Gtk2WSForms.ShowHide will correct visibility + exit; + if (not (AWinControl is TCustomForm)) or (AWinControl.Parent<>nil) + or (AWinControl.ParentWindow<>0) then + exit; + AForm := TCustomForm(AWinControl); + if not (csDesigning in AForm.ComponentState) and + AForm.HandleObjectShouldBeVisible then + begin + // we must set fixed size, gtk_window_set_resizable does not work + // as expected for some reason.issue #20741 + with Geometry do + begin + min_width := AForm.Width; + max_width := AForm.Width; + min_height := AForm.Height; + max_height := AForm.Height; + + base_width := AForm.Width; + base_height := AForm.Height; + width_inc := 1; + height_inc := 1; + min_aspect := 0; + max_aspect := 1; + win_gravity := gtk_window_get_gravity({%H-}PGtkWindow(AForm.Handle)); + end; + //debugln('TGtk2WSWinControl.ConstraintsChange A ',GetWidgetDebugReport(Widget),' max=',dbgs(Geometry.max_width),'x',dbgs(Geometry.max_height)); + if (AForm.BorderStyle in [bsDialog, bsSingle, bsToolWindow]) then + gtk_window_set_geometry_hints({%H-}PGtkWindow(AForm.Handle), nil, @Geometry, + GDK_HINT_POS or GDK_HINT_MIN_SIZE or GDK_HINT_MAX_SIZE) + else + begin + if AForm.BorderStyle <> bsNone then + gtk_window_set_geometry_hints({%H-}PGtkWindow(AForm.Handle), nil, @Geometry, + GDK_HINT_POS or GDK_HINT_BASE_SIZE); + gtk_window_resize({%H-}PGtkWindow(AForm.Handle), AForm.Width, AForm.Height); + end; + end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsdialogs.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsdialogs.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsdialogs.pp 2014-07-09 16:22:11.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsdialogs.pp 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: gtk2wsdialogs.pp 45819 2014-07-09 16:22:11Z jesus $} +{ $Id: gtk2wsdialogs.pp 49494 2015-07-04 23:08:00Z juha $} { ***************************************************************************** * Gtk2WSDialogs.pp * @@ -27,7 +27,7 @@ // LCL Gtk2Extra, Graphics, Controls, Dialogs, ExtDlgs, LCLType, - FileUtil, LCLStrConsts, LCLProc, InterfaceBase, + LazFileUtils, LazUTF8, LCLStrConsts, LCLProc, InterfaceBase, // Widgetset Gtk2Int, Gtk2Globals, Gtk2Def, Gtk2Proc, WSDialogs; @@ -1163,11 +1163,12 @@ // show palette gtk_color_selection_set_has_palette(colorSel, True); - // replace palette. it is stored in 'gtk-color-palette' settings + // replace palette. it is stored in 'gtk-color-palette' settings. // 1. get original palette => we will know colors and replace only part of it settings := gtk_widget_get_settings(PGtkWidget(colorSel)); new_palette := nil; g_object_get(settings, PaletteSetting, [@new_palette, nil]); + colors:=nil; gtk_color_selection_palette_from_string(new_palette, colors, @colors_len); g_free(new_palette); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsfactory.pas lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsfactory.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsfactory.pas 2014-06-22 08:57:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsfactory.pas 2015-12-17 10:51:30.000000000 +0000 @@ -570,8 +570,8 @@ function RegisterCustomGrid: Boolean; alias : 'WSRegisterCustomGrid'; begin - RegisterWSComponent(TCustomGrid, TGtk2WSCustomGrid); { GTK1 } -// RegisterWSComponent(TCustomGrid, TGtk2WSCustomGrid); + //RegisterWSComponent(TCustomGrid, TGtkWSCustomGrid); { GTK1 } + RegisterWSComponent(TCustomGrid, TGtk2WSCustomGrid); Result := True; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsforms.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsforms.pp 2015-04-11 07:12:26.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsforms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -39,9 +39,8 @@ protected class procedure SetCallbacks(const AWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual; published - class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; + class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; class procedure SetColor(const AWinControl: TWinControl); override; - class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override; end; { TGtk2WSScrollBox } @@ -68,9 +67,9 @@ protected class procedure SetCallbacks(const AWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual; published - class function CanFocus(const AWinControl: TWinControl): Boolean; override; + class function CanFocus(const AWinControl: TWinControl): Boolean; override; class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; - class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override; class procedure SetAlphaBlend(const ACustomForm: TCustomForm; const AlphaBlend: Boolean; const Alpha: Byte); override; @@ -85,8 +84,8 @@ class procedure SetBorderIcons(const AForm: TCustomForm; const ABorderIcons: TBorderIcons); override; class procedure SetColor(const AWinControl: TWinControl); override; - class procedure SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); override; + class procedure SetRealPopupParent(const ACustomForm: TCustomForm; + const APopupParent: TCustomForm); override; end; { TGtk2WSForm } @@ -459,7 +458,7 @@ g_idle_remove_by_data(Data); end; -class procedure TGtk2WSCustomForm.ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); +class procedure TGtk2WSCustomForm.ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); var Layout: PGtkLayout; WidgetInfo: PWidgetInfo; @@ -681,7 +680,7 @@ {$IFDEF HASX} TempGdkWindow: PGdkWindow; {$ENDIF} - AForm: TCustomForm; + AForm, APopupParent: TCustomForm; GtkWindow: PGtkWindow; Geometry: TGdkGeometry; @@ -779,11 +778,11 @@ if AWinControl.HandleObjectShouldBeVisible and not (csDesigning in AForm.ComponentState) and not (AForm.FormStyle in fsAllStayOnTop) and - not (fsModal in AForm.FormState) and - (AForm.PopupMode = pmExplicit) and - (AForm.PopupParent = nil) then + not (fsModal in AForm.FormState) then begin - SetPopupParent(AForm, AForm.PopupMode, AForm.PopupParent); + APopupParent := AForm.GetRealPopupParent; + if (APopupParent <> nil) then + SetRealPopupParent(AForm, APopupParent); end; {$ENDIF} @@ -843,27 +842,13 @@ TGtk2WSWinControl.SetColor(AWinControl); end; -class procedure TGtk2WSCustomForm.SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); -var - PopupParent: TCustomForm; +class procedure TGtk2WSCustomForm.SetRealPopupParent( + const ACustomForm: TCustomForm; const APopupParent: TCustomForm); begin - if not WSCheckHandleAllocated(ACustomForm, 'SetPopupParent') then Exit; + if not WSCheckHandleAllocated(ACustomForm, 'SetRealPopupParent') then Exit; - case APopupMode of - pmNone: - PopupParent := nil; - pmAuto: - PopupParent := Screen.ActiveForm; - pmExplicit: - begin - PopupParent := APopupParent; - if PopupParent = nil then - PopupParent := Application.MainForm; - end; - end; - if PopupParent <> nil then - gtk_window_set_transient_for({%H-}PGtkWindow(ACustomForm.Handle), {%H-}PGtkWindow(PopupParent.Handle)) + if APopupParent <> nil then + gtk_window_set_transient_for({%H-}PGtkWindow(ACustomForm.Handle), {%H-}PGtkWindow(APopupParent.Handle)) else gtk_window_set_transient_for({%H-}PGtkWindow(ACustomForm.Handle), nil); end; @@ -959,8 +944,7 @@ end; end; -class procedure TGtk2WSScrollingWinControl.SetColor( - const AWinControl: TWinControl); +class procedure TGtk2WSScrollingWinControl.SetColor(const AWinControl: TWinControl); begin if not WSCheckHandleAllocated(AWinControl, 'SetColor') then Exit; @@ -971,39 +955,6 @@ GTK_STATE_PRELIGHT, GTK_STATE_SELECTED]); end; -class procedure TGtk2WSScrollingWinControl.ScrollBy( - const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); -var - Scrolled: PGtkScrolledWindow; - Adjustment: PGtkAdjustment; - h, v: Double; - NewPos: Double; -begin - if not AWinControl.HandleAllocated then exit; - Scrolled := GTK_SCROLLED_WINDOW({%H-}Pointer(AWinControl.Handle)); - if not GTK_IS_SCROLLED_WINDOW(Scrolled) then - exit; - Adjustment := gtk_scrolled_window_get_hadjustment(Scrolled); - if Adjustment <> nil then - begin - h := gtk_adjustment_get_value(Adjustment); - NewPos := Adjustment^.upper - Adjustment^.page_size; - if h - DeltaX <= NewPos then - NewPos := h - DeltaX; - gtk_adjustment_set_value(Adjustment, NewPos); - end; - Adjustment := gtk_scrolled_window_get_vadjustment(Scrolled); - if Adjustment <> nil then - begin - v := gtk_adjustment_get_value(Adjustment); - NewPos := Adjustment^.upper - Adjustment^.page_size; - if v - DeltaY <= NewPos then - NewPos := v - DeltaY; - gtk_adjustment_set_value(Adjustment, NewPos); - end; - AWinControl.Invalidate; -end; - { TGtk2WSHintWindow } class procedure TGtk2WSHintWindow.SetCallbacks(const AWidget: PGtkWidget; @@ -1014,12 +965,12 @@ with TGTK2WidgetSet(Widgetset) do begin {$note test with smaller minor versions and check where LM_CONFIGUREEVENT is needed.} - {$IFDEF HASX} - // fix for buggy compiz. - // see http://bugs.freepascal.org/view.php?id=17523 - if not compositeManagerRunning then - {$ENDIF} - SetCallback(LM_CONFIGUREEVENT, PGtkObject(AWidget), AWidgetInfo^.LCLObject); + {$IFDEF HASX} + // fix for buggy compiz. + // see http://bugs.freepascal.org/view.php?id=17523 + if not compositeManagerRunning then + {$ENDIF} + SetCallback(LM_CONFIGUREEVENT, PGtkObject(AWidget), AWidgetInfo^.LCLObject); end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsgrids.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsgrids.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsgrids.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsgrids.pp 2015-12-23 13:08:24.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: gtk2wsgrids.pp 41387 2013-05-24 18:30:06Z juha $} +{ $Id: gtk2wsgrids.pp 51006 2015-12-23 13:08:24Z ondrej $} { ***************************************************************************** * Gtk2WSGrids.pp * @@ -27,7 +27,7 @@ // To get as little as posible circles, // uncomment only when needed for registration //////////////////////////////////////////////////// -// Grids, + Types, Grids, Graphics, //////////////////////////////////////////////////// WSGrids, WSLCLClasses; @@ -36,11 +36,33 @@ { TGtk2WSCustomGrid } TGtk2WSCustomGrid = class(TWSCustomGrid) - private - protected - public + published + class function GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; override; end; implementation +{ TGtk2WSCustomGrid } + +class function TGtk2WSCustomGrid.GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; +var + EditorTop: LongInt; + TextHeight: Integer; +begin + Result:=ACellRect; + Inc(Result.Left); + Dec(Result.Right, 2); + Dec(Result.Bottom); + TextHeight := ACanvas.TextHeight(' '); + case AColumnLayout of + tlTop: EditorTop:=Result.Top+constCellPadding; + tlCenter: EditorTop:=Result.Top+(Result.Bottom-Result.Top-TextHeight+1) div 2; + tlBottom: EditorTop:=Result.Bottom-constCellPadding-TextHeight+1; + end; + if EditorTop>Result.Top then Result.Top:=EditorTop; + Result.Bottom:=Result.Top+TextHeight; +end; + end. diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsmenus.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsmenus.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsmenus.pp 2015-04-25 18:40:09.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsmenus.pp 2015-06-29 09:32:46.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: gtk2wsmenus.pp 48862 2015-04-25 18:40:09Z maxim $} +{ $Id: gtk2wsmenus.pp 49466 2015-06-29 09:32:46Z mattias $} { ***************************************************************************** * Gtk2WSMenus.pp * @@ -365,7 +365,7 @@ begin if not WSCheckMenuItem(AMenuItem, 'SetCaption') then Exit; - if gtk_is_separator_menu_item(PGTKWidget(AMenuItem.Handle)) Or (ACaption = cLineCaption) then + if gtk_is_separator_menu_item({%H-}PGTKWidget(AMenuItem.Handle)) Or (ACaption = cLineCaption) then AMenuItem.RecreateHandle else begin diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsspin.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsspin.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsspin.pp 2014-06-22 08:57:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsspin.pp 2016-02-14 09:08:06.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: gtk2wsspin.pp 45601 2014-06-22 08:57:16Z mattias $} +{ $Id: gtk2wsspin.pp 51621 2016-02-14 09:08:06Z mattias $} { ***************************************************************************** * Gtk2WSSpin.pp * @@ -155,8 +155,16 @@ end else begin - AnAdjustment^.lower := TCustomFloatSpinEdit(ACustomEdit).MinValue; - AnAdjustment^.upper := TCustomFloatSpinEdit(ACustomEdit).MaxValue; + if (TCustomFloatSpinEdit(ACustomEdit).MaxValue > TCustomFloatSpinEdit(ACustomEdit).MinValue) then + begin + AnAdjustment^.lower := TCustomFloatSpinEdit(ACustomEdit).MinValue; + AnAdjustment^.upper := TCustomFloatSpinEdit(ACustomEdit).MaxValue; + end + else + begin + AnAdjustment^.lower := -MaxDouble; + AnAdjustment^.upper := MaxDouble; + end; end; gtk_spin_button_update(GTK_SPIN_BUTTON(Widget)); end; @@ -175,7 +183,7 @@ wHandle := ACustomFloatSpinEdit.Handle; SpinWidget:=GTK_SPIN_BUTTON({%H-}Pointer(wHandle)); - if ACustomFloatSpinEdit.MaxValue >= ACustomFloatSpinEdit.MinValue then + if ACustomFloatSpinEdit.MaxValue > ACustomFloatSpinEdit.MinValue then begin AMin := ACustomFloatSpinEdit.MinValue; AMax := ACustomFloatSpinEdit.MaxValue; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsstdctrls.pp lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsstdctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/gtk2wsstdctrls.pp 2015-06-25 20:47:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/gtk2wsstdctrls.pp 2016-02-06 14:00:56.000000000 +0000 @@ -2381,6 +2381,7 @@ const AWinControl: TWinControl; var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); begin + // ToDo: compute the minimum size ignoring LCL child controls GetGTKDefaultWidgetSize(AWinControl, PreferredWidth, PreferredHeight, WithThemeSpace); end; @@ -2685,20 +2686,10 @@ class procedure TGtk2WSScrollBar.SetKind(const AScrollBar: TCustomScrollBar; const AIsHorizontal: Boolean); -var - B: Boolean; begin if not AScrollBar.HandleAllocated then exit; - B := AScrollBar.Visible; - if B then - AScrollBar.Hide; - try - RecreateWnd(AScrollBar); - finally - if B then - AScrollBar.Show; - end; + RecreateWnd(AScrollBar); end; class procedure TGtk2WSScrollBar.SetParams(const AScrollBar: TCustomScrollBar); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/issues.xml lazarus-1.6+dfsg/lcl/interfaces/gtk2/issues.xml --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk2/issues.xml 2015-04-01 11:38:24.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk2/issues.xml 2015-10-14 21:49:11.000000000 +0000 @@ -3,17 +3,22 @@ <widgetset name="gtk2"> <issue name="TCheckBox.Alignment"> <short>CheckBox Alignment property is not supported</short> + <descr>Use BiDiMode = bdRightToLeft as a workaround</descr> </issue> - <issue name="TComboBox.DropDownCount"> + <issue name="TRadioButton.Alignment"> + <short>RadioButton Alignment property is not supported</short> + <descr>Use BiDiMode = bdRightToLeft as a workaround</descr> + </issue> + <issue name="TComboBox.DropDownCount"> <short>Combo box DropDownCount property is not supported</short> </issue> <issue name="TEdit.HideSelection"> <short>HideSelection property is not supported</short> </issue> - <issue name="TForm.BorderStyle"> - <short>Not supported for nested Forms</short> - <descr>If you put a form onto another it will have no window borders or title</descr> - </issue> + <issue name="TForm.BorderStyle"> + <short>Not supported for nested Forms</short> + <descr>If you put a form onto another it will have no window borders or title</descr> + </issue> <issue name="TMemo.HideSelection"> <short>HideSelection property is not supported</short> </issue> diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3int.pas lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3int.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3int.pas 2013-06-23 11:14:04.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3int.pas 2015-02-07 09:39:53.000000000 +0000 @@ -26,9 +26,8 @@ {$ENDIF} SysUtils, Classes, types, InterfaceBase, Translations, - Controls, Forms, FPImage, Graphics, GraphUtil, GraphType, LCLProc, - LCLStrConsts, - LCLType, LMessages, + Controls, Forms, FPImage, Graphics, GraphUtil, GraphType, LCLProc, LazUTF8, + LCLStrConsts, LCLType, LMessages, LazGtk3, LazGdk3, LazGlib2, LazGObject2, LazCairo1, LazPango1, LazPangoCairo1, LazGio2, LazGdkPixbuf2, gtk3widgets, gtk3objects, gtk3procs, IntfGraphics; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3objects.pas lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3objects.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3objects.pas 2015-01-03 08:48:32.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3objects.pas 2015-02-07 09:39:53.000000000 +0000 @@ -21,7 +21,7 @@ interface uses - Classes, SysUtils, Graphics, types, LCLType, LCLProc, + Classes, SysUtils, Graphics, types, LCLType, LCLProc, LazUTF8, LazGtk3, LazGdk3, LazGObject2, LazPango1, LazPangoCairo1, LazGdkPixbuf2, LazGLib2, LazCairo1, FPCanvas; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3procs.pas lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3procs.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3procs.pas 2014-01-07 04:33:09.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3procs.pas 2015-11-11 13:24:06.000000000 +0000 @@ -355,56 +355,56 @@ function RectFromGtkAllocation(AGtkAllocation: TGtkAllocation): TRect; begin - with Result, AGtkAllocation do + with AGtkAllocation do begin - Left := x; - Top := y; - Right := Width + x; - Bottom := Height + y; + Result.Left := x; + Result.Top := y; + Result.Right := Width + x; + Result.Bottom := Height + y; end; end; function RectFromGdkRect(AGdkRect: TGdkRectangle): TRect; begin - with Result, AGdkRect do + with AGdkRect do begin - Left := x; - Top := y; - Right := Width + x; - Bottom := Height + y; + Result.Left := x; + Result.Top := y; + Result.Right := Width + x; + Result.Bottom := Height + y; end; end; function RectFromPangoRect(APangoRect: TPangoRectangle): TRect; begin - with Result, APangoRect do + with APangoRect do begin - Left := x div PANGO_SCALE; - Top := y div PANGO_SCALE; - Right := (Width div PANGO_SCALE) + (x div PANGO_SCALE); - Bottom := (Height div PANGO_SCALE) + (y div PANGO_SCALE); + Result.Left := x div PANGO_SCALE; + Result.Top := y div PANGO_SCALE; + Result.Right := (Width div PANGO_SCALE) + (x div PANGO_SCALE); + Result.Bottom := (Height div PANGO_SCALE) + (y div PANGO_SCALE); end; end; function GdkRectFromRect(R: TRect): TGdkRectangle; begin - with Result, R do + with Result do begin - x := Left; - y := Top; - width := Right-Left; - height := Bottom-Top; + x := R.Left; + y := R.Top; + width := R.Right-R.Left; + height := R.Bottom-R.Top; end; end; function GtkAllocationFromRect(R: TRect): TGtkAllocation; begin - with Result, R do + with Result do begin - x := Left; - y := Top; - width := Right-Left; - height := Bottom-Top; + x := R.Left; + y := R.Top; + width := R.Right-R.Left; + height := R.Bottom-R.Top; end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3widgets.pas lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3widgets.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3widgets.pas 2015-01-04 19:25:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3widgets.pas 2015-05-20 09:00:18.000000000 +0000 @@ -523,6 +523,7 @@ TGtk3ListView = class(TGtk3ScrollableWin) private FPreselectedIndices: TFPList; + FImages: TFPList; FIsTreeView: Boolean; protected function CreateWidget(const Params: TCreateParams):PGtkWidget; override; @@ -533,6 +534,7 @@ function getHorizontalScrollbar: PGtkScrollbar; override; function getVerticalScrollbar: PGtkScrollbar; override; function GetScrolledWindow: PGtkScrolledWindow; override; + procedure ClearImages; procedure ColumnDelete(AIndex: Integer); function ColumnGetWidth(AIndex: Integer): Integer; procedure ColumnInsert(AIndex: Integer; AColumn: TListColumn); @@ -552,7 +554,9 @@ function ItemGetState(const AIndex: Integer; const AItem: TListItem; const AState: TListItemState; out AIsSet: Boolean): Boolean; + procedure UpdateImageCellsSize; + property Images: TFPList read FImages write FImages; property IsTreeView: Boolean read FIsTreeView; end; @@ -3170,6 +3174,15 @@ TGtk3Widget(AData).DeliverMessage(Msg); end; +procedure Gtk3EntryChanged(AEntry: PGtkEntryBuffer; AData: GPointer); cdecl; +var + Msg: TLMessage; +begin + FillChar(Msg, SizeOf(Msg), 0); + Msg.Msg := CM_TEXTCHANGED; + TGtk3Widget(AData).DeliverMessage(Msg); +end; + function TGtk3Entry.GetAlignment: TAlignment; var AFloat: GFloat; @@ -3229,8 +3242,9 @@ procedure TGtk3Entry.InitializeWidget; begin inherited InitializeWidget; - g_signal_connect_data(PGtkEntry(FWidget)^.get_buffer, 'deleted-text', TGCallback(@Gtk3EntryDeletedText), Self, nil, 0); - g_signal_connect_data(PGtkEntry(FWidget)^.get_buffer, 'inserted-text', TGCallback(@Gtk3EntryInsertedText), Self, nil, 0); + g_signal_connect_data(PGtkEntry(FWidget), 'changed', TGCallback(@Gtk3EntryChanged), Self, nil, 0); + //g_signal_connect_data(PGtkEntry(FWidget)^.get_buffer, 'deleted-text', TGCallback(@Gtk3EntryDeletedText), Self, nil, 0); + //g_signal_connect_data(PGtkEntry(FWidget)^.get_buffer, 'inserted-text', TGCallback(@Gtk3EntryInsertedText), Self, nil, 0); end; procedure TGtk3Entry.SetPasswordChar(APasswordChar: Char); @@ -5166,6 +5180,7 @@ PtrType: GType; TreeModel: PGtkTreeModel; begin + FImages := nil; FScrollX := 0; FScrollY := 0; FPreselectedIndices := nil; @@ -5216,6 +5231,8 @@ destructor TGtk3ListView.Destroy; begin + ClearImages; + FreeAndNil(FImages); FreeAndNil(FPreselectedIndices); inherited Destroy; end; @@ -5244,6 +5261,19 @@ Result := nil; end; +procedure TGtk3ListView.ClearImages; +var + i: Integer; +begin + if Assigned(FImages) then + begin + for i := FImages.Count - 1 downto 0 do + if FImages[i] <> nil then + TGtk3Object(FImages[i]).Free; + FImages.Clear; + end; +end; + procedure TGtk3ListView.ColumnDelete(AIndex: Integer); var AColumn: PGtkTreeViewColumn; @@ -5273,7 +5303,7 @@ cell: PGtkCellRenderer; tree_model: PGtkTreeModel; iter: PGtkTreeIter; AData: GPointer); cdecl; var ListItem: TListItem; - Images: TList; + Images: TFPList; // Widgets: PTVWidgets; ListColumn: TListColumn; ImageIndex: Integer; @@ -5289,7 +5319,7 @@ Exit; ColumnIndex := ListColumn.Index; // Images := Widgets^.Images; - Images := nil; + Images := TGtk3ListView(AData).Images; if Images = nil then Exit; ImageIndex := -1; @@ -5677,6 +5707,12 @@ end; end; +procedure TGtk3ListView.UpdateImageCellsSize; +begin + // must get renderer via property + // gtk_tree_view_column_get_cell_renderers +end; + { TGtk3ComboBox } function TGtk3ComboBox.GetItemIndex: Integer; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3winapih.inc lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3winapih.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3winapih.inc 2013-06-23 10:35:00.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3winapih.inc 2015-11-11 13:24:13.000000000 +0000 @@ -71,8 +71,8 @@ function DestroyCursor(Handle: HCURSOR): Boolean; override; function DestroyIcon(Handle: HICON): Boolean; override; function DPtoLP(DC: HDC; var Points; Count: Integer): BOOL; override; -function DrawFrameControl(DC: HDC; const Rect : TRect; uType, uState : Cardinal) : Boolean; override; -function DrawFocusRect(DC: HDC; const Rect: TRect): boolean; override; +function DrawFrameControl(DC: HDC; const aRect : TRect; uType, uState : Cardinal) : Boolean; override; +function DrawFocusRect(DC: HDC; const aRect: TRect): boolean; override; function DrawEdge(DC: HDC; var ARect: TRect; Edge: Cardinal; grfFlags: Cardinal): Boolean; override; function DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect; Flags: Cardinal): Integer; override; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3winapi.inc lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3winapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3winapi.inc 2014-10-23 16:37:27.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3winapi.inc 2015-11-11 13:24:13.000000000 +0000 @@ -560,17 +560,17 @@ Result:=inherited DPtoLP(DC, Points, Count); end; -function TGtk3WidgetSet.DrawFrameControl(DC: HDC; const Rect: TRect; uType, +function TGtk3WidgetSet.DrawFrameControl(DC: HDC; const aRect: TRect; uType, uState: Cardinal): Boolean; begin {$IFDEF GTK3DEBUGNOTIMPLEMENTED} DebugLn('WARNING: TGtk3WidgetSet.DrawFrameControl not implemented ...'); {$ENDIF} Result := False; - // inherited DrawFrameControl(DC, Rect, uType, uState); + // inherited DrawFrameControl(DC, aRect, uType, uState); end; -function TGtk3WidgetSet.DrawFocusRect(DC: HDC; const Rect: TRect): boolean; +function TGtk3WidgetSet.DrawFocusRect(DC: HDC; const aRect: TRect): boolean; var Context: PGtkStyleContext; AValue: TGValue; @@ -595,7 +595,7 @@ DebugLn('WARNING: TGtk3WidgetSet.DrawFocusRect drawing focus on non widget context isn''t implemented.'); exit; end; - with Rect do + with aRect do gtk_render_focus(Context ,TGtk3DeviceContext(DC).Widget, Left, Top, Right - Left, Bottom - Top); Result := True; @@ -3298,10 +3298,13 @@ function TGtk3WidgetSet.RemoveProp(Handle: hwnd; Str: PChar): THandle; begin - {$IFDEF GTK3DEBUGNOTIMPLEMENTED} - DebugLn('WARNING: TGtk3WidgetSet.RemoveProp not implemented ...'); - {$ENDIF} - Result:=inherited RemoveProp(Handle, Str); + Result := 0; + if Handle = 0 then + exit; + g_object_set_data(TGtk3Widget(Handle).Widget, Str, nil); + if TGtk3Widget(Handle).GetContainerWidget <> TGtk3Widget(Handle).Widget then + g_object_set_data(TGtk3Widget(Handle).GetContainerWidget, Str, nil); + Result := 1; end; function TGtk3WidgetSet.RestoreDC(DC: HDC; SavedDC: Integer): Boolean; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wscomctrls.pp lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wscomctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wscomctrls.pp 2014-01-08 03:18:11.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wscomctrls.pp 2015-01-18 18:17:05.000000000 +0000 @@ -879,9 +879,38 @@ class procedure TGtk3WSCustomListView.SetImageList(const ALV: TCustomListView; const AList: TListViewImageList; const AValue: TCustomImageList); +var + AView: TGtk3ListView; + i: Integer; + Bmp: TBitmap; begin + if not WSCheckHandleAllocated(ALV, 'SetImageList') then + exit; DebugLn('TGtk3WSCustomListView.SetImageList '); + AView := TGtk3ListView(ALV.Handle); // inherited SetImageList(ALV, AList, AValue); + if ((AList = lvilLarge) and not AView.IsTreeView) or + ((AList = lvilSmall) and AView.IsTreeView) then + begin + if Assigned(AView.Images) then + AView.ClearImages + else + AView.Images := TFPList.Create; + if Assigned(AValue) then + begin + for i := 0 to AValue.Count - 1 do + begin + Bmp := TBitmap.Create; + AValue.GetBitmap(i, Bmp); + AView.Images.Add(Bmp); + end; + end; + + if AView.IsTreeView then + AView.UpdateImageCellsSize; + + AView.Update(nil); + end; end; class procedure TGtk3WSCustomListView.SetItemsCount(const ALV: TCustomListView; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wscontrols.pp lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wscontrols.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wscontrols.pp 2013-06-23 13:52:59.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wscontrols.pp 2015-11-29 18:45:53.000000000 +0000 @@ -110,6 +110,7 @@ class procedure Invalidate(const AWinControl: TWinControl); override; class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); override; class procedure ShowHide(const AWinControl: TWinControl); override; //TODO: rename to SetVisible(control, visible) + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; TGtk3WSWinControlClass = class of TGtk3WSWinControl; @@ -542,6 +543,54 @@ end; end; +class procedure TGtk3WSWinControl.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); +var + Scrolled: PGtkScrolledWindow; + Adjustment: PGtkAdjustment; + h, v: Double; + NewPos: Double; +begin + {.$IFDEF GTK3DEBUGCORE} + // DebugLn('TGtk3WSWinControl.ScrollBy not implemented '); + {.$ENDIF} + if not AWinControl.HandleAllocated then exit; + Scrolled := TGtk3ScrollingWinControl(AWinControl.Handle).GetScrolledWindow; + if not Gtk3IsScrolledWindow(Scrolled) then + exit; + {$note below is old gtk2 implementation} + TGtk3ScrollingWinControl(AWinControl.Handle).ScrollX := TGtk3ScrollingWinControl(AWinControl.Handle).ScrollX + DeltaX; + TGtk3ScrollingWinControl(AWinControl.Handle).ScrollY := TGtk3ScrollingWinControl(AWinControl.Handle).ScrollY + DeltaY; + //TODO: change this part like in Qt using ScrollX and ScrollY variables + //GtkAdjustment calculation isn't good here (can go below 0 or over max) + // DebugLn('TGtk3WSWinControl.ScrollBy DeltaX=',dbgs(DeltaX),' DeltaY=',dbgs(DeltaY)); + exit; + Adjustment := gtk_scrolled_window_get_hadjustment(Scrolled); + if Adjustment <> nil then + begin + h := gtk_adjustment_get_value(Adjustment); + NewPos := Adjustment^.upper - Adjustment^.page_size; + if h - DeltaX <= NewPos then + NewPos := h - DeltaX; + if NewPos < 0 then + NewPos := 0; + gtk_adjustment_set_value(Adjustment, NewPos); + end; + Adjustment := gtk_scrolled_window_get_vadjustment(Scrolled); + if Adjustment <> nil then + begin + v := gtk_adjustment_get_value(Adjustment); + NewPos := Adjustment^.upper - Adjustment^.page_size; + if v - DeltaY <= NewPos then + NewPos := v - DeltaY; + if NewPos < 0 then + NewPos := 0; + // writeln('OldValue ',dbgs(V),' NewValue ',dbgs(NewPos),' upper=',dbgs(Adjustment^.upper - Adjustment^.page_size)); + gtk_adjustment_set_value(Adjustment, NewPos); + end; + AWinControl.Invalidate; +end; + { TGtk3WSCustomControl } class function TGtk3WSCustomControl.CreateHandle( diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wsfactory.pas lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wsfactory.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wsfactory.pas 2014-12-30 20:15:23.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wsfactory.pas 2015-06-05 17:11:00.000000000 +0000 @@ -93,8 +93,6 @@ // Buttons function RegisterCustomBitBtn: Boolean; function RegisterCustomSpeedButton: Boolean; -// Arrow -function RegisterArrow: Boolean; // CheckLst function RegisterCustomCheckListBox: Boolean; // Forms @@ -526,13 +524,6 @@ Result := False; end; -// Arrow -function RegisterArrow: Boolean; alias : 'WSRegisterArrow'; -begin - // RegisterWSComponent(TArrow, TGtk2WSArrow); { GTK2 } - Result := False; -end; - // CheckLst function RegisterCustomCheckListBox: Boolean; alias : 'WSRegisterCustomCheckListBox'; begin diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wsforms.pp lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/gtk3/gtk3wsforms.pp 2014-04-28 20:17:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/gtk3/gtk3wsforms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -51,10 +51,8 @@ TGtk3WSScrollingWinControl = class(TWSScrollingWinControl) published - class function CreateHandle(const AWinControl: TWinControl; + class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; - class procedure ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); override; end; { TWSScrollBox } @@ -97,8 +95,8 @@ class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); override; class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override; class procedure ShowModal(const ACustomForm: TCustomForm); override; - class procedure SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); override; + class procedure SetRealPopupParent(const ACustomForm: TCustomForm; + const APopupParent: TCustomForm); override; class procedure SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar); override; class procedure SetZPosition(const AWinControl: TWinControl; const APosition: TWSZPosition); override; class function GetDefaultColor(const AControl: TControl; const ADefaultColorType: TDefaultColorType): TColor; override; @@ -155,54 +153,6 @@ Result := TLCLIntfHandle(TGtk3ScrollingWinControl.Create(AWinControl, AParams)); end; -class procedure TGtk3WSScrollingWinControl.ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); -var - Scrolled: PGtkScrolledWindow; - Adjustment: PGtkAdjustment; - h, v: Double; - NewPos: Double; -begin - {.$IFDEF GTK3DEBUGCORE} - // DebugLn('TGtk3WSScrollingWinControl.ScrollBy not implemented '); - {.$ENDIF} - if not AWinControl.HandleAllocated then exit; - Scrolled := TGtk3ScrollingWinControl(AWinControl.Handle).GetScrolledWindow; - if not Gtk3IsScrolledWindow(Scrolled) then - exit; - {$note below is old gtk2 implementation} - TGtk3ScrollingWinControl(AWinControl.Handle).ScrollX := TGtk3ScrollingWinControl(AWinControl.Handle).ScrollX + DeltaX; - TGtk3ScrollingWinControl(AWinControl.Handle).ScrollY := TGtk3ScrollingWinControl(AWinControl.Handle).ScrollY + DeltaY; - //TODO: change this part like in Qt using ScrollX and ScrollY variables - //GtkAdjustment calculation isn't good here (can go below 0 or over max) - // DebugLn('TGtk3WSScrollingWinControl.ScrollBy DeltaX=',dbgs(DeltaX),' DeltaY=',dbgs(DeltaY)); - exit; - Adjustment := gtk_scrolled_window_get_hadjustment(Scrolled); - if Adjustment <> nil then - begin - h := gtk_adjustment_get_value(Adjustment); - NewPos := Adjustment^.upper - Adjustment^.page_size; - if h - DeltaX <= NewPos then - NewPos := h - DeltaX; - if NewPos < 0 then - NewPos := 0; - gtk_adjustment_set_value(Adjustment, NewPos); - end; - Adjustment := gtk_scrolled_window_get_vadjustment(Scrolled); - if Adjustment <> nil then - begin - v := gtk_adjustment_get_value(Adjustment); - NewPos := Adjustment^.upper - Adjustment^.page_size; - if v - DeltaY <= NewPos then - NewPos := v - DeltaY; - if NewPos < 0 then - NewPos := 0; - // writeln('OldValue ',dbgs(V),' NewValue ',dbgs(NewPos),' upper=',dbgs(Adjustment^.upper - Adjustment^.page_size)); - gtk_adjustment_set_value(Adjustment, NewPos); - end; - AWinControl.Invalidate; -end; - { TGtk3WSCustomForm } class function TGtk3WSCustomForm.CreateHandle(const AWinControl: TWinControl; @@ -437,20 +387,20 @@ {$ENDIF} end; -class procedure TGtk3WSCustomForm.SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); +class procedure TGtk3WSCustomForm.SetRealPopupParent( + const ACustomForm: TCustomForm; const APopupParent: TCustomForm); begin - if not WSCheckHandleAllocated(ACustomForm, 'ShowPopupParent') then + if not WSCheckHandleAllocated(ACustomForm, 'SetRealPopupParent') then Exit; {$IFDEF GTK3DEBUGCORE} - DebugLn('TGtk3WSCustomForm.SetPopupParent'); + DebugLn('TGtk3WSCustomForm.SetRealPopupParent'); {$ENDIF} end; class procedure TGtk3WSCustomForm.SetAlphaBlend(const ACustomForm: TCustomForm; const AlphaBlend: Boolean; const Alpha: Byte); begin - if not WSCheckHandleAllocated(ACustomForm, 'ShowAlphaBlend') then + if not WSCheckHandleAllocated(ACustomForm, 'SetAlphaBlend') then Exit; {$IFDEF GTK3DEBUGCORE} DebugLn('TGtk3WSCustomForm.SetAlphaBlend'); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/lcl.lpk lazarus-1.6+dfsg/lcl/interfaces/lcl.lpk --- lazarus-1.4.4+dfsg/lcl/interfaces/lcl.lpk 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/lcl.lpk 2016-02-14 09:48:23.000000000 +0000 @@ -127,7 +127,7 @@ "/> <License Value="modified LGPL-2 "/> - <Version Major="1" Minor="4" Release="4"/> + <Version Major="1" Minor="6" Build="4"/> <Files Count="438"> <Item1> <Filename Value="carbon/agl.pp"/> diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/issues.xml lazarus-1.6+dfsg/lcl/interfaces/qt/issues.xml --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/issues.xml 2015-04-12 21:46:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/issues.xml 2015-10-14 21:49:11.000000000 +0000 @@ -3,6 +3,11 @@ <widgetset name="qt"> <issue name="TCheckBox.Alignment"> <short>CheckBox Alignment property is not supported</short> + <descr>Use BiDiMode = bdRightToLeft as a workaround</descr> + </issue> + <issue name="TRadioButton.Alignment"> + <short>RadioButton Alignment property is not supported</short> + <descr>Use BiDiMode = bdRightToLeft as a workaround</descr> </issue> <issue name="TEdit.HideSelection"> <short>HideSelection property is not supported</short> diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtint.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtint.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtint.pp 2015-06-04 21:34:59.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtint.pp 2015-12-27 20:27:38.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtint.pp 49273 2015-06-04 21:34:59Z maxim $ } +{ $Id: qtint.pp 51056 2015-12-27 20:27:38Z ondrej $ } { /*************************************************************************** QTINT.pp - QTInterface Object @@ -38,7 +38,7 @@ // FPC Classes, SysUtils, Math, Types, maps, // LCL - InterfaceBase, LCLProc, LCLType, LMessages, LCLMessageGlue, LCLStrConsts, + InterfaceBase, LCLProc, LazUTF8, LCLType, LMessages, LCLMessageGlue, LCLStrConsts, Controls, ExtCtrls, Forms, Dialogs, StdCtrls, LCLIntf, GraphType, GraphUtil, Themes, // WS @@ -246,6 +246,7 @@ function X11Raise(AHandle: HWND): boolean; function X11GetActiveWindow: QWidgetH; function GetWindowManager: String; + function SetTransientForHint(Widget: QWidgetH; ATransientWin: QWidgetH): boolean; procedure SetSkipX11Taskbar(Widget: QWidgetH; const ASkipTaskBar: Boolean); {check if XWindow have _NET_WM_STATE_ABOVE and our form doesn''t know anything about it} function GetAlwaysOnTopX11(Widget: QWidgetH): boolean; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtlclintf.inc lazarus-1.6+dfsg/lcl/interfaces/qt/qtlclintf.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtlclintf.inc 2015-03-01 12:32:21.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtlclintf.inc 2015-02-28 11:42:52.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit qtint.pp} -{ $Id: qtlclintf.inc 48065 2015-03-01 12:32:21Z mattias $ } +{ $Id: qtlclintf.inc 48042 2015-02-28 11:42:52Z zeljko $ } {****************************************************************************** All QT interface support routines diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtobject.inc lazarus-1.6+dfsg/lcl/interfaces/qt/qtobject.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtobject.inc 2015-04-29 21:39:37.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtobject.inc 2016-02-06 14:18:07.000000000 +0000 @@ -235,7 +235,7 @@ if not FIsLibraryInstance then begin - {$IFDEF HAIKU} + {$IF DEFINED(HAIKU) OR DEFINED(QTOPIA)} FAppSessionQuit := nil; FAppSaveSessionRequest := nil; {$ELSE} @@ -986,11 +986,22 @@ Assigned(TQtMainWindow(OldWidget).LCLObject) and not (csDesigning in TQtMainWindow(OldWidget).LCLObject.ComponentState)) or MDIFocusFixNeeded then + begin // DO NOT TRIGGER ANYTHING, THIS IS SPURIOUS EVENT FROM MDIAREA - {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} - Writeln('TQtWidgetSet.FocusChanged: *** DO NOT KILL FOCUS ***') - {$ENDIF} - else + //issue #29528 + if TQtMainWindow(OldWidget).IsMdiChild and (TQtMainWindow(OldWidget).LCLObject.ControlCount = 0) then + begin + {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} + Writeln('TQtWidgetSet.FocusChanged: *** SEND KILL FOCUS FOR MDICHILD WITH 0 CONTROLS ***'); + {$ENDIF} + OldWidget.DeliverMessage(Msg); + end else + begin + {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} + Writeln('TQtWidgetSet.FocusChanged: *** DO NOT KILL FOCUS ***'); + {$ENDIF} + end; + end else if CheckIfActiveForm(OldWidget) then OldWidget.DeliverMessage(Msg) {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} @@ -1111,11 +1122,26 @@ ; end else - // if this happens then qt's mdi focus is real crap - {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} - writeln('TQtWidgetSet.FocusChanged: WE ARE COMPLETELY OUT OF MIND WHAT TO DO (1) .....') - {$ENDIF} - ; + begin + // issue #29528 + if TQtMainWindow(NewWidget).LCLObject.ControlCount = 0 then + begin + {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} + writeln('TQtWidgetSet.FocusChanged: setting focus to mdiChild with 0 controls .....'); + {$ENDIF} + Msg.msg := LM_SETFOCUS; + if OldWidget = NewWidget then + OldWidget := nil; + Msg.wParam := PtrInt(OldWidget); + NewWidget.DeliverMessage(Msg); + end else + begin + // if this happens then qt's mdi focus is real crap + {$IF DEFINED(VerboseFocus) OR DEFINED(DebugQtFocus)} + writeln('TQtWidgetSet.FocusChanged: WE ARE COMPLETELY OUT OF MIND WHAT TO DO (1) .....'); + {$ENDIF} + end; + end; end else begin @@ -1155,7 +1181,7 @@ ' errorInteraction ',dbgs(QSessionManager_allowsErrorInteraction(sessionManager)), ' phase2 ',dbgs(QSessionManager_isPhase2(sessionManager))); {$ENDIF} - {$IFNDEF HAIKU} + {$IF NOT DEFINED(HAIKU) AND NOT DEFINED(QTOPIA)} // if session manager does not allow interaction, then we close app without any intf calls if QSessionManager_allowsInteraction(sessionManager) then begin @@ -1233,25 +1259,42 @@ procedure TQtWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor); var Color: TQColor; + AQColor: QColorH; ColorRef: TColorRef; Pen: QPenH; Painter: QPainterH; + ADevType: Integer; begin if IsValidDC(CanvasHandle) then begin // WriteLn('TQtWidgetSet.DCSetPixel X=',X,' Y=',Y, ' AColor=',dbghex(AColor),' rgb ? ',dbgHex(ColorToRGB(AColor))); Painter := TQtDeviceContext(CanvasHandle).Widget; - {Save current pen.Better save copy of pen instead of - using painter save/restore, or saved Pen in devicecontext which - may be null. Issue #27620} - Pen := QPen_create(QPainter_pen(Painter)); - try + ADevType := QPaintDevice_devType(QPaintEngine_paintDevice(QPainter_paintEngine(Painter))); + {qt private PaintDeviceFlags 2 = QPixmap 3 = QImage. issue #29256} + if ((ADevType = 2) or (ADevType = 3)) and + (TQtDeviceContext(CanvasHandle).vImage <> nil) and + (TQtDeviceContext(CanvasHandle).vImage.Handle <> nil) then + begin ColorRef := TColorRef(ColorToRGB(AColor)); QColor_fromRgb(@Color, Red(ColorRef), Green(ColorRef), Blue(ColorRef)); - QPainter_setPen(Painter, @Color); - QPainter_drawPoint(Painter, X,Y); - finally - QPainter_setPen(Painter, Pen); + AQColor := QColor_create(PQColor(@Color)); + QImage_setPixel(TQtDeviceContext(CanvasHandle).vImage.Handle, X, Y, QColor_rgb(AQColor)); + QColor_destroy(AQColor); + end else + begin + {Save current pen.Better save copy of pen instead of + using painter save/restore, or saved Pen in devicecontext which + may be null. Issue #27620} + Pen := QPen_create(QPainter_pen(Painter)); + try + ColorRef := TColorRef(ColorToRGB(AColor)); + QColor_fromRgb(@Color, Red(ColorRef), Green(ColorRef), Blue(ColorRef)); + QPainter_setPen(Painter, PQColor(@Color)); + QPainter_drawPoint(Painter, X,Y); + finally + QPainter_setPen(Painter, Pen); + QPen_destroy(Pen); + end; end; end; end; @@ -1408,7 +1451,8 @@ if IsValidHintHandle(TObject(SavedHintHandlesList.Items[i])) then begin AWidget := TQtHintWindow(SavedHintHandlesList.Items[i]); - AWidget.NeedRestoreVisible := AWidget.getVisible; + AWidget.NeedRestoreVisible := AWidget.getVisible and + Assigned(AWidget.LCLObject) and AWidget.LCLObject.Visible; AWidget.Hide; end; end; @@ -1431,7 +1475,8 @@ if IsValidHintHandle(TObject(SavedHintHandlesList.Items[i])) then begin AWidget := TQtHintWindow(SavedHintHandlesList.Items[i]); - if AWidget.NeedRestoreVisible then + if AWidget.NeedRestoreVisible and Assigned(AWidget.LCLObject) and + AWIdget.LCLObject.Visible then begin AWidget.NeedRestoreVisible := False; AWidget.Show; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtobjects.pas lazarus-1.6+dfsg/lcl/interfaces/qt/qtobjects.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtobjects.pas 2015-05-26 22:03:08.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtobjects.pas 2015-05-18 08:15:40.000000000 +0000 @@ -27,8 +27,8 @@ // Free Pascal Classes, SysUtils, Types, // LCL - LCLType, LCLIntf, Menus, LCLProc, Graphics, ClipBrd, ExtCtrls, Interfacebase, - maps; + LCLType, LCLIntf, LCLProc, LazUTF8, Menus, Graphics, ClipBrd, ExtCtrls, + Interfacebase, maps; type // forward declarations diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtprivate.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtprivate.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtprivate.pp 2014-11-07 14:52:30.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtprivate.pp 2015-02-06 18:25:31.000000000 +0000 @@ -33,7 +33,7 @@ // Free Pascal Classes, SysUtils, // LCL - Forms, Controls, LCLType, LCLProc, ExtCtrls, StdCtrls, LazUtf8Classes, + Forms, Controls, LCLType, LazUTF8, ExtCtrls, StdCtrls, LazUtf8Classes, //Widgetset QtWidgets, qtproc; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtproc.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtproc.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtproc.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtproc.pp 2015-02-06 18:25:31.000000000 +0000 @@ -1,10 +1,10 @@ -{ $Id: qtproc.pp 41387 2013-05-24 18:30:06Z juha $ } +{ $Id: qtproc.pp 47604 2015-02-06 18:25:31Z juha $ } { ---------------------------------- qtproc.pp - qt interface procs ---------------------------------- - @lastmod($Date: 2013-05-24 20:30:06 +0200 (Fr, 24 Mai 2013) $) + @lastmod($Date: 2015-02-06 19:25:31 +0100 (Fr, 06 Feb 2015) $) @author(Marc Weustink <marc@@lazarus.dommelstein.net>) This unit contains procedures/functions needed for the qt <-> LCL interface @@ -29,7 +29,7 @@ InterfaceBase, qt4, GraphType, - LCLProc; + LazUTF8; const EVE_IO_READ = 1; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtsystemtrayicon.pas lazarus-1.6+dfsg/lcl/interfaces/qt/qtsystemtrayicon.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtsystemtrayicon.pas 2015-04-25 18:39:03.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtsystemtrayicon.pas 2015-08-07 17:20:40.000000000 +0000 @@ -19,8 +19,9 @@ interface {$i qtdefines.inc} -uses Classes, Controls, ExtCtrls, Graphics, Forms, types, LCLType, qtobjects, qt4, - qtproc; +uses + Classes, types, Controls, ExtCtrls, Graphics, Forms, LCLType, LCLProc, LazUTF8, + qtobjects, qt4, qtproc, qtint; type TSysTrayIconPaintData = record @@ -67,7 +68,6 @@ end; implementation -uses qtint, LCLProc; { TQtSystemTrayIcon } diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwidgets.pas lazarus-1.6+dfsg/lcl/interfaces/qt/qtwidgets.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwidgets.pas 2015-09-15 21:05:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwidgets.pas 2016-02-06 14:18:07.000000000 +0000 @@ -28,7 +28,7 @@ // Free Pascal Classes, SysUtils, Types, // LCL - LCLType, LCLProc, LCLIntf, LMessages, Graphics, Forms, Controls, + LCLType, LCLProc, LazUTF8, LCLIntf, LMessages, Graphics, Forms, Controls, ComCtrls, ExtCtrls, StdCtrls, Menus, Dialogs, ImgList; type @@ -473,9 +473,14 @@ { TQtViewPort } TQtViewPort = class(TQtWidget) + private + {when our viewport is invisible then we must keep track of scrolling. issue #29239} + FInvisibleX: integer; + FInvisibleY: integer; public function CanPaintBackground: Boolean; override; function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override; + procedure InitializeWidget; override; procedure scroll(dx, dy: integer; ARect: PRect = nil); override; procedure stackUnder(AWidget: QWidgetH); override; end; @@ -617,7 +622,6 @@ LayoutWidget: QBoxLayoutH; FCWEventHook: QObject_hookH; FShowOnTaskBar: Boolean; - FPopupMode: TPopupMode; FPopupParent: QWidgetH; FMDIStateHook: QMdiSubWindow_hookH; protected @@ -664,7 +668,7 @@ procedure SlotActivateWindow(vActivate: Boolean); cdecl; procedure slotWindowStateChange; cdecl; procedure setShowInTaskBar(AValue: Boolean); - procedure setPopupParent(APopupMode: TPopupMode; NewParent: QWidgetH); + procedure setRealPopupParent(NewParent: QWidgetH); property Blocked: Boolean read FBlocked write FBlocked; property ShowOnTaskBar: Boolean read FShowOnTaskBar; public @@ -754,11 +758,16 @@ function CanPaintBackground: Boolean; override; function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override; function getClientBounds: TRect; override; + function getClientOffset: TPoint; override; function getText: WideString; override; procedure preferredSize(var PreferredWidth, PreferredHeight: integer; {%H-}WithThemeSpace: Boolean); override; procedure setText(const W: WideString); override; procedure setFocusPolicy(const APolicy: QtFocusPolicy); override; + procedure Update(ARect: PRect = nil); override; + procedure UpdateRegion(ARgn: QRegionH); override; + procedure Repaint(ARect: PRect = nil); override; + property GroupBoxType: TQtGroupBoxType read FGroupBoxType write FGroupBoxType; property CheckBoxState: boolean read GetCheckBoxState write SetCheckBoxState; property CheckBoxVisible: boolean read GetCheckBoxVisible write SetCheckBoxVisible; @@ -1062,8 +1071,10 @@ {$ENDIF} FEditingFinishedHook: QAbstractSpinBox_hookH; FLineEditHook: QObject_hookH; + FTextChangedHook: QLineEdit_hookH; // parts FLineEdit: QLineEditH; + FTextChangedByValueChanged: Boolean; function GetLineEdit: QLineEditH; function LineEditEventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; protected @@ -1078,10 +1089,12 @@ procedure setMaxLength(const ALength: Integer); procedure setSelection(const AStart, ALength: Integer); procedure setCursorPosition(const ACursorPosition: Integer); + procedure SignalLineEditTextChanged(AnonParam1: PWideString); virtual; cdecl; procedure Cut; procedure Copy; procedure Paste; procedure Undo; + property TextChangedByValueChanged: Boolean read FTextChangedByValueChanged write FTextChangedByValueChanged; public function getValue: Double; virtual; abstract; function getReadOnly: Boolean; @@ -2067,6 +2080,9 @@ end; end else begin + if (Self is TQtMainWindow) then + setFocusPolicy(QtTabFocus) // issue #28880 + else if (csNoFocus in LCLObject.ControlStyle) then begin if LCLObject.TabStop then @@ -4865,7 +4881,10 @@ procedure TQtWidget.setFocus; begin - QWidget_setFocus(Widget); + if getFocusPolicy <> QtNoFocus then + QWidget_setFocus(Widget, QtTabFocusReason) + else + QWidget_setFocus(Widget); end; procedure TQtWidget.setFocusPolicy(const APolicy: QtFocusPolicy); @@ -6427,7 +6446,9 @@ BeginEventProcessing; try if (QEvent_Type(Event) in [QEventContextMenu, QEventHoverEnter, QEventPaint, - QEventHoverMove, QEventHoverLeave]) then + QEventHoverMove, QEventHoverLeave, QEventHide, + {must be added, see issue #29159} + QEventMouseMove]) then begin Result := inherited EventFilter(Sender, Event); end else @@ -6556,7 +6577,6 @@ QtFormBorderStyle := Ord(bsSizeable); QtFormStyle := Ord(fsNormal); FHasPaint := True; - FPopupMode := pmNone; FPopupParent := nil; MDIAreaHandle := nil; MDIChildArea := nil; @@ -6698,42 +6718,8 @@ end; procedure TQtMainWindow.UpdateParent; -var - NewParent: QWidgetH; begin - NewParent := nil; - case FPopupMode of - pmNone: ;// no popup parent - pmAuto: - // active form is parent - if Screen.ActiveForm <> nil then - NewParent := TQtWidget(Screen.ActiveForm.Handle).Widget; - pmExplicit: - begin - // parent is FPopupParent - if FPopupParent <> nil then - NewParent := FPopupParent - {$IFDEF HASX11} - else - begin - if not IsMainForm then - begin - NewParent := TQtMainWindow(Application.MainForm.Handle).Widget; - setWindowFlags(windowFlags or QtSheet); - end; - end; - {$ENDIF} - end; - end; - if (NewParent = nil) and (FPopupMode <> pmNone) and - not FShowOnTaskBar and not IsMainForm then - NewParent := TQtMainWindow(Application.MainForm.Handle).Widget; - {$IFDEF MSWINDOWS} - if (NewParent = nil) and (FPopupMode = pmNone) and - not FShowOnTaskBar and not IsMainForm then - NewParent := TQtMainWindow(Application.MainForm.Handle).Widget; - {$ENDIF} - ChangeParent(NewParent); + ChangeParent(FPopupParent); end; {------------------------------------------------------------------------------ @@ -6977,6 +6963,16 @@ end; end; end; + {$IFDEF QTSCROLLABLEFORMS} + QEventMouseMove: // issue #29159 + begin + if IsMdiChild or + (Assigned(LCLObject) and (csDesigning in LCLObject.ComponentState)) then + Result := inherited EventFilter(Sender, Event) + else + Result := False; + end; + {$ENDIF} QEventMouseButtonPress, QEventMouseButtonRelease, QEventMouseButtonDblClick: @@ -7344,9 +7340,8 @@ {$ENDIF} end; -procedure TQtMainWindow.setPopupParent(APopupMode: TPopupMode; NewParent: QWidgetH); +procedure TQtMainWindow.setRealPopupParent(NewParent: QWidgetH); begin - FPopupMode := APopupMode; FPopupParent := NewParent; UpdateParent; end; @@ -7410,8 +7405,8 @@ {TODO: find better way to find out which controls are top,left,right & bottom aligned ...} for i := 0 to LCLObject.ComponentCount - 1 do begin - {find statusbars} - if LCLObject.Components[i] is TStatusBar then + if (LCLObject.Components[i] is TWinControl) and + (TWinControl(LCLObject.Components[i]).Align in [alTop, alLeft, alRight, alBottom]) then begin R2 := TWinControl(LCLObject.Components[i]).BoundsRect; case TWinControl(LCLObject.Components[i]).Align of @@ -7421,19 +7416,6 @@ alBottom: R.Bottom := R.Bottom - (R2.Bottom - R2.Top); end; end; - - {find toolbars} - if LCLObject.Components[i] is TToolBar then - begin - R2 := TWinControl(LCLObject.Components[i]).BoundsRect; - case TWinControl(LCLObject.Components[i]).Align of - alLeft: R.Left := R.Left + (R2.Right - R2.Left); - alTop: R.Top := R.Top + (R2.Bottom - R2.Top); - alRight: R.Right := R.Right - (R2.Right - R2.Left); - alBottom: R.Bottom := R.Bottom - (R2.Bottom - R2.Top); - end; - end; - end; {components loop} QWidget_setGeometry(MDIAreaHandle.Widget, @R); end; @@ -7770,8 +7752,8 @@ inherited AttachEvents; if FCentralWidget <> nil then begin - // FCWEventHook := QObject_hook_create(FCentralWidget); - // QObject_hook_hook_events(FCWEventHook, @EventFilter); + FCWEventHook := QObject_hook_create(FCentralWidget); + QObject_hook_hook_events(FCWEventHook, @EventFilter); end; end; @@ -7779,8 +7761,8 @@ begin if FCWEventHook <> nil then begin - // QObject_hook_destroy(FCWEventHook); - // FCWEventHook := nil; + QObject_hook_destroy(FCWEventHook); + FCWEventHook := nil; end; inherited DetachEvents; end; @@ -7788,8 +7770,7 @@ function TQtGroupBox.CanPaintBackground: Boolean; begin Result := CanSendLCLMessage and getEnabled and - (LCLObject.Color <> clBtnFace) and (LCLObject.Color <> clBackground); - // DO NOT REMOVE ! QGroupBox default = clBackground not clBtnFace ! + (LCLObject.Color <> clDefault); end; function TQtGroupBox.EventFilter(Sender: QObjectH; Event: QEventH): Boolean; @@ -7797,6 +7778,9 @@ var ResizeEvent: QResizeEventH; NewSize, OldSize: TSize; + R: TRect; + APos, AGlobalPos: TQtPoint; + ANewMouseEvent: QMouseEventH; begin Result := False; QEvent_accept(Event); @@ -7805,10 +7789,71 @@ if (Sender = FCentralWidget) then begin + case QEvent_type(Event) of + QEventPaint: Result := inherited EventFilter(Sender, Event); + end; exit; end; - + {about issue #29572: we must use main widget for mouse + events, since using it in FCentralWidget above freezes + application for some reason. Offsetting pos fixes problem.} case QEvent_type(Event) of + QEventWheel: // issue #29572 + begin + APos := QMouseEvent_pos(QMouseEventH(Event))^; + AGlobalPos := QMouseEvent_globalPos(QMouseEventH(Event))^; + QWidget_geometry(FCentralWidget, @R); + inc(APos.X, -R.Left); + inc(APos.Y, -R.Top); + ANewMouseEvent := QMouseEvent_create(QEvent_type(Event), @APos, @AGlobalPos, QMouseEvent_button(QMouseEventH(Event)), + QMouseEvent_buttons(QMouseEventH(Event)), QInputEvent_modifiers(QInputEventH(Event))); + try + Result := SlotMouseWheel(Sender, ANewMouseEvent); + finally + QMouseEvent_destroy(ANewMouseEvent); + end; + end; + QEventMouseMove: // issue #29572 + begin + APos := QMouseEvent_pos(QMouseEventH(Event))^; + AGlobalPos := QMouseEvent_globalPos(QMouseEventH(Event))^; + QWidget_geometry(FCentralWidget, @R); + inc(APos.X, -R.Left); + inc(APos.Y, -R.Top); + ANewMouseEvent := QMouseEvent_create(QEvent_type(Event), @APos, @AGlobalPos, QMouseEvent_button(QMouseEventH(Event)), + QMouseEvent_buttons(QMouseEventH(Event)), QInputEvent_modifiers(QInputEventH(Event))); + try + Result := SlotMouseMove(Sender, ANewMouseEvent); + finally + QMouseEvent_destroy(ANewMouseEvent); + end; + end; + QEventMouseButtonPress, + QEventMouseButtonRelease, + QEventMouseButtonDblClick: // issue #29572 + begin + APos := QMouseEvent_pos(QMouseEventH(Event))^; + AGlobalPos := QMouseEvent_globalPos(QMouseEventH(Event))^; + QWidget_geometry(FCentralWidget, @R); + inc(APos.X, -R.Left); + inc(APos.Y, -R.Top); + ANewMouseEvent := QMouseEvent_create(QEvent_type(Event), @APos, @AGlobalPos, QMouseEvent_button(QMouseEventH(Event)), + QMouseEvent_buttons(QMouseEventH(Event)), QInputEvent_modifiers(QInputEventH(Event))); + try + Result := SlotMouse(Sender, ANewMouseEvent); + finally + QMouseEvent_destroy(ANewMouseEvent); + end; + end; + QEventPaint: + begin + Result := False; + // paint complete background, like gtk2 does + if CanPaintBackground then + SlotPaintBg(Sender, Event); + // issue #28155, we are painting our FCentralWidget, not QGroupBox + // Result := inherited EventFilter(Sender, Event); + end; QEventFontChange: begin Result := inherited EventFilter(Sender, Event); @@ -7845,6 +7890,15 @@ end; end; +function TQtGroupBox.getClientOffset: TPoint; +begin + Result:=inherited getClientOffset; + // issue #28155 + // there's no client offset since FCentralWidget is at it's position 0,0 + if testAttribute(QtWA_Mapped) and QWidget_testAttribute(FCentralWidget, QtWA_Mapped) then + Result := Point(0, 0); +end; + function TQtGroupBox.getClientBounds: TRect; var R, R1: TRect; @@ -7930,6 +7984,42 @@ inherited setFocusPolicy(APolicy); end; +procedure TQtGroupBox.Update(ARect: PRect); +begin + if Assigned(FCentralWidget) then + begin + if ARect <> nil then + QWidget_update(FCentralWidget, ARect) + else + QWidget_update(FCentralWidget); + end else + inherited Update(ARect); +end; + +procedure TQtGroupBox.UpdateRegion(ARgn: QRegionH); +begin + if Assigned(FCentralWidget) then + begin + if ARgn <> nil then + QWidget_update(FCentralWidget, ARgn) + else + QWidget_update(FCentralWidget); + end else + inherited UpdateRegion(ARgn); +end; + +procedure TQtGroupBox.Repaint(ARect: PRect); +begin + if Assigned(FCentralWidget) then + begin + if ARect <> nil then + QWidget_repaint(FCentralWidget, ARect) + else + QWidget_repaint(FCentralWidget); + end else + inherited Repaint(ARect); +end; + { TQtFrame } function TQtFrame.CreateWidget(const AParams: TCreateParams): QWidgetH; @@ -8373,7 +8463,10 @@ else LMScroll.Msg := LM_VSCROLL; - LMScroll.Pos := getSliderPosition; + if SliderPressed then + LMScroll.Pos := getSliderPosition + else + LMScroll.Pos := getValue; SliderAction := SliderActions[Action]; @@ -10726,7 +10819,7 @@ if (FDropList <> nil) and (Sender = FDropList.Widget) then begin - if QEvent_type(Event) = QEventFontChange then + if (Byte(QEvent_type(Event)) in [QEventKeyPress, QEventKeyRelease,QEventFontChange]) then Result := inherited EventFilter(Sender, Event); QEvent_ignore(Event); exit; @@ -10934,6 +11027,8 @@ begin FLineEditHook := QObject_hook_create(FLineEdit); QObject_hook_hook_events(FLineEditHook, @LineEditEventFilter); + FTextChangedHook := QLineEdit_hook_create(FLineEdit); + QLineEdit_hook_hook_textChanged(FTextChangedHook, @SignalLineEditTextChanged); end; Result := FLineEdit; end; @@ -10947,6 +11042,21 @@ Result := EventFilter(QWidgetH(Sender), Event); end; +procedure TQtAbstractSpinBox.SignalLineEditTextChanged(AnonParam1: PWideString); cdecl; +var + Msg: TLMessage; +begin + if FTextChangedByValueChanged then + begin + FTextChangedByValueChanged := False; + Exit; + end; + FillChar(Msg{%H-}, SizeOf(Msg), #0); + Msg.Msg := CM_TEXTCHANGED; + if not InUpdate then + DeliverMessage(Msg); +end; + function TQtAbstractSpinBox.CreateWidget(const AParams: TCreateParams): QWidgetH; var Parent: QWidgetH; @@ -10960,6 +11070,7 @@ Parent := TQtWidget(AParams.WndParent).GetContainerWidget else Parent := nil; + FTextChangedByValueChanged := False; Result := QAbstractSpinBox_create(Parent); end; @@ -11145,6 +11256,12 @@ QObject_hook_destroy(FLineEditHook); FLineEditHook := nil; end; + + if FTextChangedHook <> nil then + begin + QLineEdit_hook_destroy(FTextChangedHook); + FTextChangedHook := nil; + end; inherited DetachEvents; end; @@ -11276,6 +11393,7 @@ Msg: TLMessage; begin FValue := p1; + FTextChangedByValueChanged := True; FillChar(Msg{%H-}, SizeOf(Msg), #0); Msg.Msg := CM_TEXTCHANGED; if not InUpdate then @@ -11351,10 +11469,11 @@ Msg: TLMessage; begin FValue := p1; + FTextChangedByValueChanged := True; FillChar(Msg{%H-}, SizeOf(Msg), #0); Msg.Msg := CM_TEXTCHANGED; if not InUpdate then - DeliverMessage(Msg); + DeliverMessage(Msg); end; { TQtListView } @@ -11608,14 +11727,15 @@ VHeight: Integer; // viewport height RowHeight: Integer; item: QListWidgetItemH; - v: QVariantH; + v, v2, v3: QVariantH; WStr: WideString; DataStr: WideString; ImgList: TCustomImageList; AImageIndex: TImageIndex; Bmp: TBitmap; - v2: QVariantH; + AIcon: QIconH; AOk: Boolean; + ASize: TSize; begin {do not set items during design time} @@ -11654,6 +11774,13 @@ ImgList := TCustomListViewHack(LCLObject).SmallImages; if Assigned(ImgList) then begin + QListWidgetItem_sizeHint(item, @ASize); + if (ASize.cx <> ImgList.Width) or (ASize.cx <> ImgList.Height) then + begin + ASize.cx := ImgList.Width; + ASize.cy := ImgList.Height; + QListWidgetItem_setSizeHint(item, @ASize); + end; AImageIndex := TCustomListViewHack(LCLObject).Items[TopItem].ImageIndex; if (ImgList.Count > 0) and ((AImageIndex >= 0) and (AImageIndex < ImgList.Count)) then @@ -11688,9 +11815,25 @@ if (AImageIndex < 0) then begin v2 := QVariant_create; - QListWidgetItem_setData(item, QtListViewOwnerDataRole, v2); - QVariant_destroy(v2); - QListWidgetItem_setIcon(item, nil); + AIcon := QIcon_create; + try + QListWidgetItem_data(item, v2, QtListViewOwnerDataRole); + if not QVariant_isNull(v2) then + begin + v3 := QVariant_create; + try + QListWidgetItem_setData(item, QtListViewOwnerDataRole, v3); + finally + QVariant_destroy(v3); + end; + end; + QListWidgetItem_icon(item, AIcon); + if not QIcon_isNull(AIcon) then + QListWidgetItem_setIcon(item, nil); + finally + QVariant_destroy(v2); + QIcon_destroy(AIcon); + end; end; end; @@ -13697,13 +13840,15 @@ RowHeight: Integer; item: QTreeWidgetItemH; itemChild: QTreeWidgetItemH; - v,v2: QVariantH; + v,v2,v3: QVariantH; WStr, TempStr: WideString; ASelected: Boolean; ImgList: TCustomImageList; AImageIndex: TImageIndex; Bmp: TBitmap; AOk: Boolean; + AIcon: QIconH; + ASize: TSize; begin {do not set items during design time} if csDesigning in LCLObject.ComponentState then @@ -13735,7 +13880,6 @@ TopItem := getRow(item); RowHeight := getRowHeight(TopItem); - if (TopItem < 0) or (TopItem > TCustomListViewHack(LCLObject).Items.Count - 1) then continue; @@ -13760,6 +13904,13 @@ ImgList := TCustomListViewHack(LCLObject).SmallImages; if Assigned(ImgList) then begin + QTreeWidgetItem_sizeHint(item, @ASize, 0); + if (ASize.cx <> ImgList.Width) or (ASize.cx <> ImgList.Height) then + begin + ASize.cx := ImgList.Width; + ASize.cy := ImgList.Height; + QTreeWidgetItem_setSizeHint(item, 0, @ASize); + end; AImageIndex := TCustomListViewHack(LCLObject).Items[TopItem].ImageIndex; if (ImgList.Count > 0) and ((AImageIndex >= 0) and (AImageIndex < ImgList.Count)) then @@ -13794,9 +13945,25 @@ if (AImageIndex < 0) then begin v2 := QVariant_create; - QTreeWidgetItem_setData(item, 0, QtListViewOwnerDataRole, v2); - QVariant_destroy(v2); - QTreeWidgetItem_setIcon(item, 0, nil); + AIcon := QIcon_create; + try + QTreeWidgetItem_data(item, v2, 0, QtListViewOwnerDataRole); + if not QVariant_isNull(v2) then + begin + v3 := QVariant_create; + try + QTreeWidgetItem_setData(item, 0, QtListViewOwnerDataRole, v3); + finally + QVariant_destroy(v3); + end; + end; + QTreeWidgetItem_icon(item, AIcon, 0); + if not QIcon_isNull(AIcon) then + QTreeWidgetItem_setIcon(item, 0, nil); + finally + QVariant_destroy(v2); + QIcon_destroy(AIcon); + end; end; end; @@ -16016,6 +16183,18 @@ ' Event=', EventTypeToStr(Event),' inUpdate=',inUpdate); {$endif} case QEvent_type(Event) of + QEventShow, + QEventShowToParent: + begin + {Qt does not track scrolled offset of widget when it''s not visible.issue #29239} + if (FInvisibleX <> 0) or (FInvisibleY <> 0) then + begin + QWidget_scroll(Widget, FInvisibleX, FInvisibleY); + FInvisibleX := 0; + FInvisibleY := 0; + end; + Result := inherited EventFilter(Sender, Event); + end; QEventResize: begin // immediate update clientRect ! @@ -16098,9 +16277,21 @@ end; end; +procedure TQtViewPort.InitializeWidget; +begin + FInvisibleX := 0; + FInvisibleY := 0; + inherited InitializeWidget; +end; + procedure TQtViewPort.scroll(dx, dy: integer; ARect: PRect = nil); begin - inherited scroll(dx, dy, ARect); + if not getVisible then + begin + FInvisibleX += dx; + FInvisibleY += dy; + end else + inherited scroll(dx, dy, ARect); FScrollX := FScrollX + dx; FScrollY := FScrollY + dy; end; @@ -16140,8 +16331,24 @@ function TQtAbstractScrollArea.EventFilter(Sender: QObjectH; Event: QEventH ): Boolean; cdecl; +var + w: QWidgetH; begin Result := False; + + if (QEvent_type(Event) = QEventHide) then + begin + // issue #28880 + w := QWidget_mouseGrabber; + if w <> nil then + begin + if w = Widget then + ReleaseCapture + else + if w = viewportWidget then + ReleaseCapture; + end; + end else if (QEvent_type(Event) = QEventResize) then // DebugLn('***TQtAbstractScrollArea.EventFilter QEventResize(',dbgsName(LCLObject),') EAT !') else @@ -17304,6 +17511,8 @@ function TQtPage.EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; var ASize: TSize; + ACapture: HWND; + B: Boolean; begin Result := False; if LCLObject = nil then @@ -17330,7 +17539,22 @@ DelayResizeEvent(QWidgetH(Sender), ASize); exit; end; - end; + end else + if (QEvent_type(Event) = QEventShow) then + begin + if Assigned(DragManager) and DragManager.IsDragging then + ACapture := GetCapture + else + ACapture := 0; + B := (ACapture <> 0) and (ACapture <> HWND(Self)); + Result := inherited EventFilter(Sender, Event); + if B then + begin + QtWidgetSet.InvalidateWidgetAtCache; + SetCapture(0); + SetCapture(HWND(Self)); + end; + end else Result := inherited EventFilter(Sender, Event); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwinapi.inc lazarus-1.6+dfsg/lcl/interfaces/qt/qtwinapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwinapi.inc 2015-05-26 22:03:08.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwinapi.inc 2015-11-30 16:43:36.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit qtint.pp} -{ $Id: qtwinapi.inc 49182 2015-05-26 22:03:08Z maxim $ } +{ $Id: qtwinapi.inc 50535 2015-11-30 16:43:36Z zeljko $ } {****************************************************************************** All QT Winapi implementations. This are the implementations of the overrides of the QT Interface for the @@ -1476,8 +1476,7 @@ WideStr := QtDC.Metrics.elidedText(WideStr, QtElideRight, Right - Left, 0); end; - with ARect do - QtDC.DrawText(Left + Pt.X, Top + Pt.Y, Right-Left, Bottom-Top, F, @WideStr); + QtDC.DrawText(ARect.Left + Pt.X, ARect.Top + Pt.Y, ARect.Right-ARect.Left, ARect.Bottom-ARect.Top, F, @WideStr); end; {------------------------------------------------------------------------------ @@ -3603,7 +3602,8 @@ // POS if (ScrollInfo.fMask and SIF_POS) <> 0 then begin - if QtScrollBar.ChildOfComplexWidget = ccwAbstractScrollArea then + // if QtScrollBar.ChildOfComplexWidget = ccwAbstractScrollArea then + if QtScrollBar.SliderPressed then ScrollInfo.nPos := QtScrollBar.getSliderPosition else ScrollInfo.nPos := QtScrollBar.getValue; @@ -6454,6 +6454,9 @@ and not TQtMainWindow(Widget).ShowOnTaskBar then SetSkipX11Taskbar(Widget.Widget, True); {$ENDIF} + if (Byte(nCmdShow) in [SW_SHOW, SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_SHOWFULLSCREEN]) and + (Widget is TQtMainWindow) then + TQtMainWindow(Widget).Activate; Result := True; end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwscomctrls.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwscomctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwscomctrls.pp 2015-09-15 21:05:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwscomctrls.pp 2015-09-06 09:12:05.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwscomctrls.pp 49833 2015-09-15 21:05:56Z maxim $} +{ $Id: qtwscomctrls.pp 49768 2015-09-06 09:12:05Z zeljko $} { ***************************************************************************** * QtWSComCtrls.pp * diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwscontrols.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwscontrols.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwscontrols.pp 2015-09-02 22:45:26.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwscontrols.pp 2015-11-30 16:43:36.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwscontrols.pp 49746 2015-09-02 22:45:26Z maxim $} +{ $Id: qtwscontrols.pp 50535 2015-11-30 16:43:36Z zeljko $} { ***************************************************************************** * QtWSControls.pp * @@ -27,7 +27,7 @@ qt4, qtwidgets, qtobjects, qtproc, qtint, // LCL - SysUtils, Classes, Types, Controls, LCLType, LCLProc, Forms, Graphics, + SysUtils, Classes, Types, Controls, LCLType, LazUTF8, Forms, Graphics, // Widgetset InterfaceBase, WSProc, WSControls, WSLCLClasses; @@ -89,6 +89,7 @@ class procedure ConstraintsChange(const AWinControl: TWinControl); override; class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; { TQtWSGraphicControl } @@ -123,9 +124,10 @@ { True } QtRightToLeft ); implementation -{$IFDEF VerboseQtResize} +{$IF DEFINED(VerboseQtResize) OR DEFINED(VerboseQt)} uses LCLProc; {$ENDIF} + {------------------------------------------------------------------------------ Method: TQtWSCustomControl.CreateHandle Params: None @@ -435,6 +437,59 @@ end; end; +class procedure TQtWSWinControl.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); +var + Widget: TQtCustomControl; + ABar: TQtScrollBar; + APosition: Integer; +begin + if not WSCheckHandleAllocated(AWinControl, 'ScrollBy') then + Exit; + if TQtWidget(AWinControl.Handle) is TQtCustomControl then + begin + Widget := TQtCustomControl(AWinControl.Handle); + Widget.viewport.scroll(DeltaX, DeltaY); + end else + if TQtWidget(AWinControl.Handle) is TQtAbstractScrollArea then + begin + ABar := TQtAbstractScrollArea(AWinControl.Handle).horizontalScrollBar; + if ABar = nil then + exit; + if ABar.getTracking then + APosition := ABar.getSliderPosition + else + APosition := ABar.getValue; + if DeltaX <> 0 then + begin + APosition += -DeltaX; + if ABar.getTracking then + ABar.setSliderPosition(APosition) + else + ABar.setValue(APosition); + end; + ABar := TQtAbstractScrollArea(AWinControl.Handle).verticalScrollBar; + if ABar = nil then + exit; + if ABar.getTracking then + APosition := ABar.getSliderPosition + else + APosition := ABar.getValue; + if DeltaY <> 0 then + begin + APosition += -DeltaY; + if ABar.getTracking then + ABar.setSliderPosition(APosition) + else + ABar.setValue(APosition); + end; + end + {$IFDEF VerboseQt} + else + DebugLn(Format('WARNING: TQtWSWinControl.ScrollBy(): Qt widget handle %s is not TQtCustomControl',[DbgSName(TQtWidget(AWinControl.Handle))])); + {$ENDIF} +end; + {------------------------------------------------------------------------------ Method: TQtWSWinControl.SetBounds Params: AWinControl - the calling object diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsdialogs.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsdialogs.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsdialogs.pp 2015-04-11 07:10:28.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsdialogs.pp 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwsdialogs.pp 48715 2015-04-11 07:10:28Z zeljko $} +{ $Id: qtwsdialogs.pp 49494 2015-07-04 23:08:00Z juha $} { ***************************************************************************** * QtWSDialogs.pp * @@ -27,7 +27,7 @@ qt4, qtobjects, qtwidgets, qtproc, // RTL + LCL - SysUtils, Classes, LCLType, LazUTF8, FileUtil, Dialogs, Controls, Forms, Graphics, + SysUtils, Classes, LCLType, LazUTF8, LazFileUtils, Dialogs, Controls, Forms, Graphics, // Widgetset WSDialogs, WSLCLClasses; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsextctrls.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsextctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsextctrls.pp 2014-11-21 11:51:05.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsextctrls.pp 2016-02-06 14:18:07.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwsextctrls.pp 46931 2014-11-21 11:51:05Z mattias $} +{ $Id: qtwsextctrls.pp 51517 2016-02-06 14:18:07Z maxim $} { ***************************************************************************** * QtWSExtCtrls.pp * @@ -27,8 +27,7 @@ qt4, qtwidgets, qtobjects, qtproc, QtWSControls, // LCL - LCLProc, - SysUtils, Classes, Controls, Graphics, Forms, ExtCtrls, LCLType, + SysUtils, Classes, Controls, Graphics, Forms, ExtCtrls, LCLType, LazUTF8, // Widgetset WSExtCtrls, WSLCLClasses; @@ -304,6 +303,7 @@ var SystemTrayIcon: TQtSystemTrayIcon; AIcon: QIconH; + AHint: WideString; begin if (ATrayIcon.Handle = 0) then Exit; @@ -336,6 +336,9 @@ if TQtMenu(ATrayIcon.PopUpMenu.Handle).Widget <> nil then SystemTrayIcon.setContextMenu(QMenuH(TQtMenu(ATrayIcon.PopUpMenu.Handle).Widget)); + AHint := UTF8ToUTF16(ATrayIcon.Hint); + SystemTrayIcon.setToolTip(AHint); + SystemTrayIcon.UpdateSystemTrayWidget; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsfactory.pas lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsfactory.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsfactory.pas 2015-02-14 01:00:32.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsfactory.pas 2015-12-17 10:51:30.000000000 +0000 @@ -4,7 +4,7 @@ interface uses - Classes, Controls, ComCtrls, Calendar, StdCtrls, Spin, + Classes, Controls, ComCtrls, Calendar, StdCtrls, Spin, Grids, Dialogs, ExtCtrls, Buttons, CheckLst, Forms, Menus, RubberBand, PairSplitter, WSLCLClasses; @@ -111,6 +111,7 @@ QtWSPairSplitter, QtWSSpin, QtWSStdCtrls, + QtWSGrids, QtWSDesigner; // imglist @@ -502,7 +503,8 @@ function RegisterCustomGrid: Boolean; alias : 'WSRegisterCustomGrid'; begin - Result := False; + RegisterWSComponent(TCustomGrid, TQtWSCustomGrid); + Result := True; end; function RegisterMenuItem: Boolean; alias : 'WSRegisterMenuItem'; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsforms.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsforms.pp 2015-04-25 18:39:03.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsforms.pp 2016-02-06 15:15:51.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwsforms.pp 48861 2015-04-25 18:39:03Z maxim $} +{ $Id: qtwsforms.pp 51530 2016-02-06 15:15:51Z maxim $} { ***************************************************************************** * QtWSForms.pp * @@ -37,8 +37,6 @@ TQtWSScrollingWinControl = class(TWSScrollingWinControl) published - class procedure ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); override; end; { TQtWSScrollBox } @@ -77,14 +75,13 @@ class procedure CloseModal(const ACustomForm: TCustomForm); override; class procedure DestroyHandle(const AWinControl: TWinControl); override; - class procedure ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; class procedure SetAllowDropFiles(const AForm: TCustomForm; AValue: Boolean); override; class procedure SetFormBorderStyle(const AForm: TCustomForm; const AFormBorderStyle: TFormBorderStyle); override; class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); override; class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override; - class procedure SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); override; + class procedure SetRealPopupParent(const ACustomForm: TCustomForm; + const APopupParent: TCustomForm); override; class procedure SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar); override; class procedure ShowHide(const AWinControl: TWinControl); override; //TODO: rename to SetVisible(control, visible) class procedure ShowModal(const ACustomForm: TCustomForm); override; @@ -136,19 +133,6 @@ {$IFDEF VerboseQtResize}, LCLProc{$ENDIF} ; -{ TQtWSScrollingWinControl } - -class procedure TQtWSScrollingWinControl.ScrollBy( - const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); -var - Widget: TQtCustomControl; -begin - if not WSCheckHandleAllocated(AWinControl, 'ScrollBy') then - Exit; - Widget := TQtCustomControl(AWinControl.Handle); - Widget.viewport.scroll(DeltaX, DeltaY); -end; - {------------------------------------------------------------------------------ Method: TQtWSCustomForm.CreateHandle Params: None @@ -161,7 +145,7 @@ var QtMainWindow: TQtMainWindow; Str: WideString; - PopupParent: QWidgetH; + APopupParent: TCustomForm; AForm: TCustomForm; begin {$ifdef VerboseQt} @@ -174,7 +158,7 @@ if (QtVersionMajor = 4) and (QtVersionMinor >= 6) then QCoreApplication_setAttribute(QtAA_ImmediateWidgetCreation, True); {$ENDIF} - if csDesigning in AWinControl.ComponentState then + if IsFormDesign(AWinControl) or (csDesigning in AWinControl.ComponentState) then QtMainWindow := TQtDesignWidget.Create(AWinControl, AParams) else QtMainWindow := TQtMainWindow.Create(AWinControl, AParams); @@ -207,11 +191,9 @@ not (csDesigning in AForm.ComponentState)) {$endif} then QtMainWindow.setShowInTaskBar(False); - if Assigned(AForm.PopupParent) then - PopupParent := TQtWidget(AForm.PopupParent.Handle).Widget - else - PopupParent := nil; - QtMainWindow.setPopupParent(AForm.PopupMode, PopupParent); + APopupParent := AForm.GetRealPopupParent; + if APopupParent<>nil then + QtMainWindow.setRealPopupParent(TQtWidget(APopupParent.Handle).Widget); end; {$IFDEF HASX11} @@ -265,8 +247,8 @@ w.Release; end; -class procedure TQtWSCustomForm.ScrollBy( - const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); +class procedure TQtWSCustomForm.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); {$IFDEF QTSCROLLABLEFORMS} var Widget: TQtMainWindow; @@ -345,16 +327,18 @@ TQtWidget(AForm.Handle).setWindowIcon(nil); end; -class procedure TQtWSCustomForm.SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); +class procedure TQtWSCustomForm.SetRealPopupParent( + const ACustomForm: TCustomForm; const APopupParent: TCustomForm); var PopupParent: QWidgetH; begin + if not ACustomForm.HandleAllocated or (csDestroying in ACustomForm.ComponentState) then + exit; if Assigned(APopupParent) then PopupParent := TQtWidget(APopupParent.Handle).Widget else PopupParent := nil; - TQtMainWindow(ACustomForm.Handle).setPopupParent(APopupMode, PopupParent); + TQtMainWindow(ACustomForm.Handle).setRealPopupParent(PopupParent); end; {------------------------------------------------------------------------------ @@ -396,6 +380,7 @@ Widget: TQtMainWindow; R: TRect; {$IFDEF HASX11} + APopupParent: TCustomForm; ActiveWin: HWND; W: QWidgetH; {$ENDIF} @@ -451,6 +436,8 @@ // qt doesn't modal windows as QtTool.see issue #18709 if (TForm(AWinControl).BorderStyle in [bsToolWindow, bsSizeToolWin]) then QWidget_setWindowFlags(Widget.Widget, QtDialog); + if QApplication_activeModalWidget <> nil then + QWidget_setParent(Widget.Widget, QApplication_activeModalWidget); {$endif} {$ifdef HASX11} @@ -538,7 +525,7 @@ not (fsModal in TForm(AWinControl).FormState) and (TForm(AWinControl).FormStyle <> fsMDIChild) and (QApplication_activeModalWidget() <> nil) then - TQtMainWindow(Widget).setPopupParent(pmExplicit, + TQtMainWindow(Widget).setRealPopupParent( QApplication_activeModalWidget()); end else begin @@ -556,20 +543,14 @@ if AWinControl.HandleObjectShouldBeVisible and not (TCustomForm(AWinControl).FormStyle in fsAllStayOnTop) and not (fsModal in TCustomForm(AWinControl).FormState) and - (TCustomForm(AWinControl).PopupMode = pmAuto) and - (TCustomForm(AWinControl).BorderStyle = bsNone) and - (TCustomForm(AWinControl).PopupParent = nil) then + (TCustomForm(AWinControl).FormStyle <> fsMDIChild) then begin - W := QApplication_activeWindow; - if (W <> nil) and not QWidget_isModal(W) then + APopupParent := TCustomForm(AWinControl).GetRealPopupParent; + if (APopupParent <> nil) then begin - Flags := QWidget_windowFlags(W); - if (Flags and QtWindowStaysOnTopHint <> QtWindowStaysOnTopHint) and - GetAlwaysOnTopX11(W) then - begin - Flags := Widget.windowFlags; - Widget.setWindowFlags(Flags or QtWindowStaysOnTopHint); - end; + Widget.setParent(TQtWidget(APopupParent.Handle).Widget); + {use direct X11 call instead of QtTool flag.issue #29253} + SetTransientForHint(Widget.Widget, TQtWidget(APopupParent.Handle).Widget); end; end; {$ENDIF} @@ -581,8 +562,9 @@ {$IFDEF HASX11} - if Application.TaskBarBehavior = tbSingleButton then - SetShowInTaskbar(TForm(AWinControl), TForm(AWinControl).ShowInTaskBar); + if (Application.TaskBarBehavior = tbSingleButton) or + (TForm(AWinControl).ShowInTaskBar <> stDefault) then + SetShowInTaskbar(TForm(AWinControl), TForm(AWinControl).ShowInTaskBar); if AWinControl.HandleObjectShouldBeVisible and not (csDesigning in TForm(AWinControl).ComponentState) and @@ -925,6 +907,20 @@ if not (csDesigning in AWidget.LCLObject.ComponentState) then begin + if (csNoFocus in TCustomForm(AWidget.LCLObject).ControlStyle) then + begin + {$IFDEF HASX11} + if ((QtVersionMajor = 4) and (QtVersionMinor >= 7)) or + (QtVersionMajor > 4) then + begin + if QtVersionMajor = 4 then + AWidget.setAttribute(132 {QtWA_X11DoNotAcceptFocus}, True) + else // Qt 5 + AWidget.setAttribute(126 {QtWA_X11DoNotAcceptFocus}, True) + end; + {$ENDIF} + AWidget.setAttribute(QtWA_ShowWithoutActivating, True); + end; AWidget.setWindowFlags(Flags); if ABorderStyle in [bsDialog, bsNone, bsSingle] then AWidget.Resize(AWidget.LCLObject.Width, AWidget.LCLObject.Height) diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsgrids.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsgrids.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsgrids.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsgrids.pp 2015-12-23 13:08:24.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwsgrids.pp 41387 2013-05-24 18:30:06Z juha $} +{ $Id: qtwsgrids.pp 51006 2015-12-23 13:08:24Z ondrej $} { ***************************************************************************** * QtWSGrids.pp * @@ -23,7 +23,7 @@ {$I qtdefines.inc} uses - Controls, + Controls, Types, Graphics, Grids, // Widgetset WSGrids, WSLCLClasses; @@ -33,9 +33,32 @@ TQtWSCustomGrid = class(TWSCustomGrid) published + class function GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; override; end; implementation +{ TQtWSCustomGrid } + +class function TQtWSCustomGrid.GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; +var + EditorTop: LongInt; + TextHeight: Integer; +begin + Result:=ACellRect; + Inc(Result.Right); + Dec(Result.Bottom); + TextHeight := ACanvas.TextHeight(' '); + case AColumnLayout of + tlTop: EditorTop:=Result.Top+constCellPadding; + tlCenter: EditorTop:=Result.Top+Round((Result.Bottom-Result.Top-TextHeight+1) div 2); + tlBottom: EditorTop:=Result.Bottom-constCellPadding-TextHeight+1; + end; + if EditorTop>Result.Top then Result.Top:=EditorTop; + Result.Bottom:=Result.Top+TextHeight; +end; + end. diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsspin.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsspin.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsspin.pp 2013-06-23 14:35:55.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsspin.pp 2016-02-14 09:08:06.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwsspin.pp 41830 2013-06-23 14:35:55Z zeljko $} +{ $Id: qtwsspin.pp 51621 2016-02-14 09:08:06Z mattias $} { ***************************************************************************** * QtWSSpin.pp * @@ -28,6 +28,8 @@ qtwidgets, // LCL Spin, SysUtils, Controls, Classes, LCLType, LCLProc, LCLIntf, Forms, StdCtrls, + //RTL + Math, // Widgetset WsProc, WSSpin, WSLCLClasses; @@ -69,9 +71,16 @@ try if ASpinWidget is TQtFloatSpinBox then TQtFloatSpinBox(ASpinWidget).setDecimals(ACustomFloatSpinEdit.DecimalPlaces); - - ASpinWidget.setMinimum(ACustomFloatSpinEdit.MinValue); - ASpinWidget.setMaximum(ACustomFloatSpinEdit.MaxValue); + if (ACustomFloatSpinEdit.MaxValue > ACustomFloatSpinEdit.MinValue) then + begin + ASpinWidget.setMinimum(ACustomFloatSpinEdit.MinValue); + ASpinWidget.setMaximum(ACustomFloatSpinEdit.MaxValue); + end + else + begin + ASpinWidget.setMinimum(-MaxDouble); + ASpinWidget.setMaximum(MaxDouble); + end; ASpinWidget.setSingleStep(ACustomFloatSpinEdit.Increment); finally ASpinWidget.EndUpdate; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsstdctrls.pp lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsstdctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtwsstdctrls.pp 2015-05-12 21:52:03.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtwsstdctrls.pp 2016-01-18 23:06:16.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: qtwsstdctrls.pp 49005 2015-05-12 21:52:03Z maxim $} +{ $Id: qtwsstdctrls.pp 51329 2016-01-18 23:06:16Z maxim $} { ***************************************************************************** * QtWSStdCtrls.pp * @@ -292,7 +292,6 @@ ); - { TQtWSScrollBar } {------------------------------------------------------------------------------ @@ -627,6 +626,8 @@ begin if not WSCheckHandleAllocated(ACustomListBox, 'SetItemIndex') then Exit; + if TQtListWidget(ACustomListBox.Handle).currentRow <> AIndex then + TQtListWidget(ACustomListBox.Handle).clearSelection; TQtListWidget(ACustomListBox.Handle).setCurrentRow(AIndex); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtx11.inc lazarus-1.6+dfsg/lcl/interfaces/qt/qtx11.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/qt/qtx11.inc 2014-09-03 10:38:42.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/qt/qtx11.inc 2015-12-27 20:27:38.000000000 +0000 @@ -214,6 +214,25 @@ end; end; +function SetTransientForHint(Widget: QWidgetH; ATransientWin: QWidgetH): boolean; +var + Display: PDisplay; + AWin: LongWord; +begin + Result := False; + if Widget = nil then + exit; + Display := QX11Info_display(); + + if Display = nil then + exit; + if ATransientWin <> nil then + AWin := QWidget_winID(ATransientWin) + else + AWin := 0; + Result := XSetTransientForHint(Display, QWidget_winId(Widget), AWin) = 1; +end; + procedure SetSkipX11Taskbar(Widget: QWidgetH; const ASkipTaskBar: Boolean); const _NET_WM_STATE_REMOVE = 0; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/interfaces.pp lazarus-1.6+dfsg/lcl/interfaces/win32/interfaces.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/interfaces.pp 2015-02-20 14:29:30.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/interfaces.pp 2015-10-20 17:20:11.000000000 +0000 @@ -23,9 +23,9 @@ interface uses - {$IFDEF EnableUTF8RTL} + {$IF (FPC_FULLVERSION >= 30000) AND NOT DEFINED(DisableUTF8RTL)} LazUTF8, - {$ENDIF} + {$IFEND} InterfaceBase; implementation diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32callback.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32callback.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32callback.inc 2015-02-19 12:39:16.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32callback.inc 2015-11-27 18:19:40.000000000 +0000 @@ -239,885 +239,1681 @@ end; end; -{------------------------------------------------------------------------------ - Function: WindowProc - Params: Window - The window that receives a message - Msg - The message received - WParam - Word parameter - LParam - Long-integer parameter - Returns: 0 if Msg is handled; non-zero long-integer result otherwise +// Used by WindowProc : - Handles the messages sent to the specified window, in parameter Window, by - Windows or other applications - ------------------------------------------------------------------------------} -function -{$ifdef MSG_DEBUG} - RealWindowProc -{$else} - WindowProc -{$endif} - (Window: HWnd; Msg: UInt; WParam: Windows.WParam; - LParam: Windows.LParam): LResult; stdcall; +function GetMenuParent(ASearch, AParent: HMENU): HMENU; var - LMessage: TLMessage; - menuItem: TObject; - menuHDC: HDC; - PLMsg: PLMessage; - R: TRect; - P: TPoint; - NewLeft, NewTop, NewWidth, NewHeight: integer; - lWinControl, ChildWinControl: TWinControl; - ChildWindowInfo: PWin32WindowInfo; - TargetObject: TObject; - WinProcess, WmSysCommandProcess: Boolean; - NotifyUserInput: Boolean; - OverlayWindow: HWND; - TargetWindow: HWND; - eraseBkgndCommand: TEraseBkgndCommand; - WindowInfo: PWin32WindowInfo; - Flags: dword; - WindowDC: HDC; - WindowPlacement: TWINDOWPLACEMENT; - WindowColor: TColor; + c, i: integer; + sub: HMENU; +begin + c := GetMenuItemCount(AParent); + for i:= 0 to c - 1 do + begin + sub := GetSubMenu(AParent, i); + if sub = ASearch then + Exit(AParent); + Result := GetMenuParent(ASearch, sub); // Recursive call + if Result <> 0 then Exit; + end; + Result := 0; +end; - LMScroll: TLMScroll; // used by WM_HSCROLL - LMKey: TLMKey; // used by WM_KEYDOWN WM_KEYUP - LMChar: TLMChar; // used by WM_CHAR - LMMouse: TLMMouse; // used by WM_LBUTTONDBLCLK - LMContextMenu: TLMContextMenu; - LMMouseMove: TLMMouseMove; // used by WM_MOUSEMOVE - LMMouseEvent: TLMMouseEvent; // used by WM_MOUSEWHEEL - LMMove: TLMMove; // used by WM_MOVE - LMNotify: TLMNotify; // used by WM_NOTIFY - DrawListItemStruct: TDrawListItemStruct; //used by WM_DRAWITEM - CancelEndSession : Boolean;//use by WM_QUERYENDSESSION +function GetIsNativeControl(AWindow: HWND): Boolean; +var + S: String; +begin + S := WndClassName(AWindow); + Result := (S <> ClsName) and (S <> ClsHintName); +end; - NMHdr: PNMHdr absolute LParam; // used by WM_NOTIFY - TmpSize: TSize; // used by WM_MEASUREITEM - Info: TComboboxInfo; - OrgCharCode: word; // used in WM_CHAR handling - CharCodeNotEmpty: boolean; // used by WM_CHAR, WM_SYSCHAR and WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP +procedure ClearSiblingRadioButtons(RadioButton: TRadioButton); +var + Parent: TWinControl; + Sibling: TControl; + WinControl: TWinControlAccess absolute Sibling; + LParamFlag: LRESULT; + i: Integer; +begin + Parent := RadioButton.Parent; + for i:= 0 to Parent.ControlCount - 1 do + begin + Sibling := Parent.Controls[i]; + if (Sibling is TRadioButton) and (Sibling <> RadioButton) then + begin + // Pass previous state through LParam so the event handling can decide + // when to propagate LM_CHANGE (New State <> Previous State) + LParamFlag := Windows.SendMessage(WinControl.WindowHandle, BM_GETCHECK, 0, 0); + // Pass SKIP_LMCHANGE through LParam if previous state is already unchecked + if LParamFlag = BST_UNCHECKED then + LParamFlag := SKIP_LMCHANGE; + Windows.SendMessage(WinControl.WindowHandle, BM_SETCHECK, + Windows.WParam(BST_UNCHECKED), Windows.LParam(LParamFlag)); + end; + end; +end; - function GetMenuParent(ASearch, AParent: HMENU): HMENU; - var - c, i: integer; - sub: HMENU; - begin - c := GetMenuItemCount(AParent); - for i:= 0 to c - 1 do - begin - sub := GetSubMenu(AParent, i); - if sub = ASearch - then begin - Result := AParent; - Exit; - end; +// sets the text of the combobox, +// because some events are risen, before the text is actually changed +procedure UpdateComboBoxText(ComboBox: TCustomComboBox); +var + Index: Integer; +begin + Index := ComboBox.ItemIndex; + // Index might be -1, if current text is not in the list. + if (Index>=0) then + TWin32WSWinControl.SetText(ComboBox, ComboBox.Items[Index]); +end; + +procedure EnableChildWindows(WinControl: TWinControl; Enable: boolean); +var + i: integer; + ChildControl: TWinControl; +begin + for i := 0 to WinControl.ControlCount-1 do + begin + if WinControl.Controls[i] is TWinControl then + begin + ChildControl := TWinControl(WinControl.Controls[i]); + if Enable then + begin + if ChildControl.Enabled then + EnableWindow(ChildControl.Handle, true); + end + else + EnableWindow(ChildControl.Handle, false); - Result := GetMenuParent(ASearch, sub); - if Result <> 0 then Exit; + EnableChildWindows(ChildControl, Enable); // Recursive call end; - Result := 0; end; +end; - function GetPopMenuItemObject: TObject; - var - MainMenuHandle: HMENU; - MenuInfo: MENUITEMINFO; - begin - MenuInfo.cbSize := MMenuItemInfoSize; - MenuInfo.fMask := MIIM_DATA; +// A helper class for WindowProc to make it easier to split code into smaller pieces. +// The original function was about 2400 lines. - MainMenuHandle := GetMenuParent(HMENU(WParam), GetMenu(Window)); - if GetMenuItemInfo(MainMenuHandle, LOWORD(LParam), true, @MenuInfo) then - Result := TObject(MenuInfo.dwItemData) - else - Result := nil; +type + TWindowProcHelper = class + private + // WindowProc parameters + Window: HWnd; // DWord / QWord + Msg: UInt; // LongWord + WParam: Windows.WParam; // PtrInt + LParam: Windows.LParam; // PtrInt + // Other variables + LMessage: TLMessage; + PLMsg: PLMessage; + lWinControl: TWinControl; + WinProcess: Boolean; + NotifyUserInput: Boolean; + WindowInfo: PWin32WindowInfo; + // Used by SendPaintMessage + BackupBuffer: TDoubleBuffer; + WindowWidth, WindowHeight: Integer; + PaintMsg: TLMPaint; + RTLLayout: Boolean; + // Structures for message handling + OrgCharCode: word; // used in WM_CHAR handling + LMScroll: TLMScroll; // used by WM_HSCROLL + LMKey: TLMKey; // used by WM_KEYDOWN WM_KEYUP + LMChar: TLMChar; // used by WM_CHAR + LMMouse: TLMMouse; // used by WM_LBUTTONDBLCLK + LMContextMenu: TLMContextMenu; + LMMouseMove: TLMMouseMove; // used by WM_MOUSEMOVE + LMMouseEvent: TLMMouseEvent; // used by WM_MOUSEWHEEL + LMMove: TLMMove; // used by WM_MOVE + LMNotify: TLMNotify; // used by WM_NOTIFY + DrawListItemStruct: TDrawListItemStruct; //used by WM_DRAWITEM + NMHdr: PNMHdr; // used by WM_NOTIFY + + procedure CalcClipRgn(PaintRegion: HRGN); + function DoChildEdit(out WinResult: LResult): Boolean; + procedure DoCmdCheckBoxParam; + function DoCmdComboBoxParam: Boolean; + procedure DoMsgActivateApp; + procedure DoMsgChar(var WinResult: LResult); + procedure DoMsgColor(ChildWindowInfo: PWin32WindowInfo); + procedure DoMsgDrawItem; + procedure DoMsgEnable; + function DoMsgEraseBkgnd(var WinResult: LResult): Boolean; + procedure DoMsgKeyDownUp(aMsg: Cardinal; var WinResult: LResult); + procedure DoMsgLButtonCommon; + procedure DoMsgLButtonDoubleClick; + procedure DoMsgLButtonDown; + procedure DoMsgMeasureItem; + procedure DoMsgMouseMove; + procedure DoMsgMouseUpDownClick(aMsg: Cardinal); + procedure DoMsgContextMenu; + function DoMsgMouseWheel(var WinResult: LResult): Boolean; + function DoMsgMove: Boolean; + procedure DoMsgNCLButtonDown; + function DoMsgNotify(var WinResult: LResult): Boolean; + procedure DoMsgShowWindow; + procedure DoMsgSize; + procedure DoMsgSysKey(aMsg: Cardinal); + procedure DoSysCmdKeyMenu; + procedure DoSysCmdMinimize; + procedure DoSysCmdRestore; + function GetPopMenuItemObject: TObject; + function GetMenuItemObject(ByPosition: Boolean): TObject; + function PrepareDoubleBuffer(vDC: HDC; out DoubleBufferBitmapOld: HBITMAP): Boolean; + procedure SetLMCharData(aMsg: Cardinal; UpdateKeyData: Boolean = False); + procedure SetLMKeyData(aMsg: Cardinal; UpdateKeyData: Boolean = False); + procedure SetLMessageAndParams(aMsg: Cardinal; ResetWinProcess: Boolean = False); + procedure SendPaintMessage(ControlDC: HDC); + procedure HandleScrollMessage(LMsg: integer); + procedure HandleSetCursor; + procedure HandleSysCommand; + function IsComboEditSelection: boolean; + procedure HandleBitBtnCustomDraw(ABitBtn: TCustomBitBtn); + procedure HandleDropFiles; + function HandleUnicodeChar(var AChar: Word): boolean; + procedure UpdateDrawItems; + procedure UpdateDrawListItem(aMsg: UInt); + procedure UpdateLMMovePos(X, Y: Smallint); + procedure UpdateUIState(CharCode: Word); + function DoWindowProc: LResult; // Called from the actual WindowProc. end; - function GetMenuItemObject(ByPosition: Boolean): TObject; - var - MenuInfo: MENUITEMINFO; - PopupMenu: TPopupMenu; - begin - // first we have to decide if the command is from a popup menu - // or from the window main menu - // if the 'PopupMenu' property exists, there is a big probability - // that the command is from a popup menu +// Implementation of TWindowProcHelper - PopupMenu := WindowInfo^.PopupMenu; - if Assigned(PopupMenu) then - begin - Result := PopupMenu.FindItem(LOWORD(Integer(WParam)), fkCommand); - if Assigned(Result) then - Exit; - end; +procedure TWindowProcHelper.SetLMCharData(aMsg: Cardinal; UpdateKeyData: Boolean); +begin + LMChar.Msg := aMsg; + LMChar.CharCode := Word(WParam); + if UpdateKeyData then + LMChar.KeyData := LParam; +end; - // nothing found, process main menu - MenuInfo.cbSize := MMenuItemInfoSize; - MenuInfo.fMask := MIIM_DATA; +procedure TWindowProcHelper.SetLMKeyData(aMsg: Cardinal; UpdateKeyData: Boolean); +begin + LMKey.Msg := aMsg; + LMKey.CharCode := Word(WParam); + if UpdateKeyData then + LMKey.KeyData := LParam; +end; - if GetMenuItemInfo(GetMenu(Window), LOWORD(Integer(WParam)), ByPosition, @MenuInfo) then - Result := TObject(MenuInfo.dwItemData) - else - Result := nil; - end; +procedure TWindowProcHelper.SetLMessageAndParams(aMsg: Cardinal; ResetWinProcess: Boolean); +begin + LMessage.Msg := aMsg; + LMessage.WParam := WParam; + LMessage.LParam := LParam; + if ResetWinProcess then + WinProcess := False; +end; - function GetIsNativeControl(AWindow: HWND): Boolean; - var - S: String; - begin - S := WndClassName(AWindow); - Result := (S <> ClsName) and (S <> ClsHintName); - end; - - procedure SendPaintMessage(ControlDC: HDC); - var - DC: HDC; - DoubleBufferBitmapOld: HBITMAP; - PaintRegion: HRGN; - PS : TPaintStruct; - PaintMsg: TLMPaint; - ORect: TRect; - WindowOrg: Windows.POINT; -{$ifdef DEBUG_DOUBLEBUFFER} - ClipBox: Windows.RECT; -{$endif} - ParentPaintWindow: HWND; - WindowWidth, WindowHeight: Integer; - DCIndex: integer; - parLeft, parTop: integer; - useDoubleBuffer: boolean; - isNativeControl: boolean; - needParentPaint: boolean; - BufferWasSaved: Boolean; - BackupBuffer: TDoubleBuffer; +function TWindowProcHelper.GetPopMenuItemObject: TObject; +var + MainMenuHandle: HMENU; + MenuInfo: MENUITEMINFO; +begin + MenuInfo.cbSize := MMenuItemInfoSize; + MenuInfo.fMask := MIIM_DATA; - RTLLayout: Boolean; - XFORM: TXFORM; - RgnData: PRgnData; - MirroredPaintRgn: HRGN; - nSize, BytesCount: DWORD; - - procedure PrepareDoubleBuffer(const vDC: HDC); - begin - if CurDoubleBuffer.DC <> 0 then - begin - // we've been called from another paint handler. To prevent killing of - // not own DC and HBITMAP lets save then and restore on exit - BackupBuffer := CurDoubleBuffer; - FillChar(CurDoubleBuffer, SizeOf(CurDoubleBuffer), 0); - BufferWasSaved := True; - end - else - BufferWasSaved := False; - CurDoubleBuffer.DC := Windows.CreateCompatibleDC(vDC); + MainMenuHandle := GetMenuParent(HMENU(WParam), GetMenu(Window)); + if GetMenuItemInfo(MainMenuHandle, LOWORD(LParam), true, @MenuInfo) then + Result := TObject(MenuInfo.dwItemData) + else + Result := nil; +end; - GetWindowSize(Window, WindowWidth, WindowHeight); - if (CurDoubleBuffer.BitmapWidth < WindowWidth) or (CurDoubleBuffer.BitmapHeight < WindowHeight) then - begin - if CurDoubleBuffer.Bitmap <> 0 then - Windows.DeleteObject(CurDoubleBuffer.Bitmap); - CurDoubleBuffer.BitmapWidth := WindowWidth; - CurDoubleBuffer.BitmapHeight := WindowHeight; - CurDoubleBuffer.Bitmap := Windows.CreateCompatibleBitmap(vDC, WindowWidth, WindowHeight); - if RTLLayout then // change the default layout - LTR - of memory DC - {if (GetLayout(vDC) and LAYOUT_BITMAPORIENTATIONPRESERVED) > 0 then // GetLayout is not in win32extra - SetLayout(CurDoubleBuffer.DC, LAYOUT_RTL or LAYOUT_BITMAPORIENTATIONPRESERVED) - else //} - SetLayout(CurDoubleBuffer.DC, LAYOUT_RTL); - end; - DoubleBufferBitmapOld := Windows.SelectObject(CurDoubleBuffer.DC, CurDoubleBuffer.Bitmap); - PaintMsg.DC := CurDoubleBuffer.DC; +function TWindowProcHelper.GetMenuItemObject(ByPosition: Boolean): TObject; +var + MenuInfo: MENUITEMINFO; + PopupMenu: TPopupMenu; +begin + // first we have to decide if the command is from a popup menu + // or from the window main menu + // if the 'PopupMenu' property exists, there is a big probability + // that the command is from a popup menu - {$ifdef MSG_DEBUG} - DebugLn(MessageStackDepth, ' *double buffering on DC: ', IntToHex(CurDoubleBuffer.DC, sizeof(HDC)*2)); - {$endif} + PopupMenu := WindowInfo^.PopupMenu; + if Assigned(PopupMenu) then + begin + Result := PopupMenu.FindItem(LOWORD(Integer(WParam)), fkCommand); + if Assigned(Result) then + Exit; + end; - end; + // nothing found, process main menu + MenuInfo.cbSize := MMenuItemInfoSize; + MenuInfo.fMask := MIIM_DATA; + if GetMenuItemInfo(GetMenu(Window), LOWORD(Integer(WParam)), ByPosition, @MenuInfo) then + Result := TObject(MenuInfo.dwItemData) + else + Result := nil; +end; + +function TWindowProcHelper.PrepareDoubleBuffer(vDC: HDC; out DoubleBufferBitmapOld: HBITMAP): Boolean; +// Returns True if BackupBuffer was saved. +begin + Result := CurDoubleBuffer.DC <> 0; + if Result then begin - // note: ignores the received DC - // do not use default deliver message - if lWinControl = nil then - begin - lWinControl := GetWin32WindowInfo(Window)^.PWinControl; - if lWinControl = nil then exit; - end; - - // create a paint message - isNativeControl := GetIsNativeControl(Window); - needParentPaint := GetNeedParentPaint(WindowInfo, lWinControl); - // if needParentPaint and not isTabPage then background will be drawn in - // WM_ERASEBKGND and WM_CTLCOLORSTATIC for native controls - // sent by default paint handler - if WindowInfo^.isTabPage or (needParentPaint and (not isNativeControl or (ControlDC <> 0))) then - ParentPaintWindow := Windows.GetParent(Window) - else - ParentPaintWindow := 0; -{$IFDEF DBG_SendPaintMessage} - DebugLnEnter(['>>> SendPaintMessage for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), - ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl), - ' NativeCtrl=', dbgs(isNativeControl), ' ndParentPaint=', dbgs(needParentPaint), - ' isTab=', dbgs(WindowInfo^.isTabPage) ]); - try -{$ENDIF} + // we've been called from another paint handler. To prevent killing of + // not own DC and HBITMAP lets save then and restore on exit + BackupBuffer := CurDoubleBuffer; + FillChar(CurDoubleBuffer, SizeOf(CurDoubleBuffer), 0); + end; + CurDoubleBuffer.DC := Windows.CreateCompatibleDC(vDC); + + GetWindowSize(Window, WindowWidth, WindowHeight); + if (CurDoubleBuffer.BitmapWidth < WindowWidth) or (CurDoubleBuffer.BitmapHeight < WindowHeight) then + begin + if CurDoubleBuffer.Bitmap <> 0 then + Windows.DeleteObject(CurDoubleBuffer.Bitmap); + CurDoubleBuffer.BitmapWidth := WindowWidth; + CurDoubleBuffer.BitmapHeight := WindowHeight; + CurDoubleBuffer.Bitmap := Windows.CreateCompatibleBitmap(vDC, WindowWidth, WindowHeight); + if RTLLayout then // change the default layout - LTR - of memory DC + {if (GetLayout(vDC) and LAYOUT_BITMAPORIENTATIONPRESERVED) > 0 then // GetLayout is not in win32extra + SetLayout(CurDoubleBuffer.DC, LAYOUT_RTL or LAYOUT_BITMAPORIENTATIONPRESERVED) + else //} + SetLayout(CurDoubleBuffer.DC, LAYOUT_RTL); + end; + DoubleBufferBitmapOld := Windows.SelectObject(CurDoubleBuffer.DC, CurDoubleBuffer.Bitmap); + PaintMsg.DC := CurDoubleBuffer.DC; + {$ifdef MSG_DEBUG} + DebugLn(MessageStackDepth, ' *double buffering on DC: ', IntToHex(CurDoubleBuffer.DC, sizeof(HDC)*2)); + {$endif} +end; - // if painting background of some control for tabpage, don't handle erase background - // in parent of tabpage - if WindowInfo^.isTabPage then - PushEraseBkgndCommand(ecDiscard); +procedure TWindowProcHelper.CalcClipRgn(PaintRegion: HRGN); +var + nSize, BytesCount: DWORD; + RgnData: PRgnData; + WindowOrg: Windows.POINT; + XFRM: TXFORM; + MirroredPaintRgn: HRGN; +begin + // winnt returns in screen coordinates + // win9x returns in window coordinates + if Win32Platform = VER_PLATFORM_WIN32_NT then + begin + WindowOrg.X := 0; + WindowOrg.Y := 0; + MapWindowPoints(Window, 0, WindowOrg, 1); + if RTLLayout then // We need the left side of the client area in screen coordinates + WindowOrg.X := WindowOrg.X - lWinControl.ClientWidth; + Windows.OffsetRgn(PaintRegion, -WindowOrg.X, -WindowOrg.Y); + end; + + if RTLLayout then // Paint region needs to be mirrored before using it for clipping! + begin + { + //Method 1 - Switch Layout to LTR, Clip, Switch back to RTL + //Sometimes it's off by one or two pixels!! + SetLayout(CurDoubleBuffer.DC, LAYOUT_LTR); + Windows.SelectClipRgn(CurDoubleBuffer.DC, PaintRegion); + SetLayout(CurDoubleBuffer.DC, LAYOUT_RTL);//} + + //Method 2 - Create a mirrored region based on the one we have + nSize := GetRegionData(PaintRegion, 0, nil); + RgnData := GetMem(nSize); + XFRM.eDx:=0; XFRM.eDy:=0; + XFRM.eM11:=-1; XFRM.eM12:=0; + XFRM.eM21:=0; XFRM.eM22:=1; + + // ToDo: BytesCount is not initialized. + MirroredPaintRgn := ExtCreateRegion(@XFRM, BytesCount, RgnData^); + Windows.SelectClipRgn(CurDoubleBuffer.DC, MirroredPaintRgn); + Windows.DeleteObject(MirroredPaintRgn); + Freemem(RgnData); + end + else + Windows.SelectClipRgn(CurDoubleBuffer.DC, PaintRegion); +end; - // check if double buffering is requested - useDoubleBuffer := (ControlDC = 0) and (lWinControl.DoubleBuffered or ThemeServices.ThemesEnabled); +procedure TWindowProcHelper.SendPaintMessage(ControlDC: HDC); +var + DC: HDC; + PaintRegion: HRGN; + PS : TPaintStruct; + DoubleBufferBitmapOld: HBITMAP; + ORect: TRect; +{$ifdef DEBUG_DOUBLEBUFFER} + ClipBox: Windows.RECT; +{$endif} + ParentPaintWindow: HWND; + DCIndex: integer; + parLeft, parTop: integer; + BufferWasSaved: Boolean; + useDoubleBuffer: Boolean; + isNativeControl: Boolean; + needParentPaint: Boolean; +begin + // note: ignores the received DC + // do not use default deliver message + if lWinControl = nil then + begin + lWinControl := GetWin32WindowInfo(Window)^.PWinControl; + if lWinControl = nil then exit; + end; + + // create a paint message + isNativeControl := GetIsNativeControl(Window); + needParentPaint := GetNeedParentPaint(WindowInfo, lWinControl); + // if needParentPaint and not isTabPage then background will be drawn in + // WM_ERASEBKGND and WM_CTLCOLORSTATIC for native controls + // sent by default paint handler + if WindowInfo^.isTabPage or (needParentPaint and (not isNativeControl or (ControlDC <> 0))) then + ParentPaintWindow := Windows.GetParent(Window) + else + ParentPaintWindow := 0; +{$IFDEF DBG_SendPaintMessage} + DebugLnEnter(['>>> SendPaintMessage for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), + ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl), + ' NativeCtrl=', dbgs(isNativeControl), ' ndParentPaint=', dbgs(needParentPaint), + ' isTab=', dbgs(WindowInfo^.isTabPage) ]); + try +{$ENDIF} + // if painting background of some control for tabpage, don't handle erase background + // in parent of tabpage + if WindowInfo^.isTabPage then + PushEraseBkgndCommand(ecDiscard); + + // check if double buffering is requested + useDoubleBuffer := (ControlDC = 0) and (lWinControl.DoubleBuffered or ThemeServices.ThemesEnabled); + BufferWasSaved := False; {$ifdef MSG_DEBUG} - if not useDoubleBuffer then - DebugLn(MessageStackDepth, ' *painting, but not double buffering'); + if not useDoubleBuffer then + DebugLn(MessageStackDepth, ' *painting, but not double buffering'); {$endif} - - WinProcess := false; - try - if ControlDC = 0 then - begin - // ignore first erase background on themed control, paint will do everything - if ThemeServices.ThemesEnabled then - PushEraseBkgndCommand(ecDoubleBufferNoRemove); - DC := Windows.BeginPaint(Window, @PS); + WinProcess := false; + try + if ControlDC = 0 then + begin + // ignore first erase background on themed control, paint will do everything + if ThemeServices.ThemesEnabled then + PushEraseBkgndCommand(ecDoubleBufferNoRemove); + DC := Windows.BeginPaint(Window, @PS); {$IFDEF DBG_SendPaintMessage} - if ThemeServices.ThemesEnabled then - DebugLn(['SendPaintMessage for CtrlDC=', dbgs(ControlDC), ' Remove one from EraseBkgndStack val=', (EraseBkgndStack and 3)]); + if ThemeServices.ThemesEnabled then + DebugLn(['SendPaintMessage for CtrlDC=', dbgs(ControlDC), ' Remove one from EraseBkgndStack val=', (EraseBkgndStack and 3)]); {$ENDIF} - if ThemeServices.ThemesEnabled then - EraseBkgndStack := EraseBkgndStack shr EraseBkgndStackShift; - if useDoubleBuffer then - begin - RTLLayout := (GetWindowLong(Window, GWL_EXSTYLE) and WS_EX_LAYOUTRTL) = WS_EX_LAYOUTRTL; - if useDoubleBuffer then - PrepareDoubleBuffer(DC); + if ThemeServices.ThemesEnabled then + EraseBkgndStack := EraseBkgndStack shr EraseBkgndStackShift; + if useDoubleBuffer then + begin + RTLLayout := (GetWindowLong(Window, GWL_EXSTYLE) and WS_EX_LAYOUTRTL) = WS_EX_LAYOUTRTL; + BufferWasSaved := PrepareDoubleBuffer(DC, DoubleBufferBitmapOld); {$ifdef DEBUG_DOUBLEBUFFER} - ORect.Left := 0; - ORect.Top := 0; - ORect.Right := CurDoubleBuffer.BitmapWidth; - ORect.Bottom := CurDoubleBuffer.BitmapHeight; - Windows.FillRect(CurDoubleBuffer.DC, ORect, GetSysColorBrush(COLOR_DESKTOP)); + ORect.Left := 0; + ORect.Top := 0; + ORect.Right := CurDoubleBuffer.BitmapWidth; + ORect.Bottom := CurDoubleBuffer.BitmapHeight; + Windows.FillRect(CurDoubleBuffer.DC, ORect, GetSysColorBrush(COLOR_DESKTOP)); {$endif} - PaintRegion := CreateRectRgn(0, 0, 1, 1); - if GetRandomRgn(DC, PaintRegion, SYSRGN) = 1 then - begin - // winnt returns in screen coordinates - // win9x returns in window coordinates - if Win32Platform = VER_PLATFORM_WIN32_NT then - begin - WindowOrg.X := 0; - WindowOrg.Y := 0; - MapWindowPoints(Window, 0, WindowOrg, 1); - if RTLLayout then // We need the left side of the client area in screen coordinates - WindowOrg.X := WindowOrg.X - lWinControl.ClientWidth; - Windows.OffsetRgn(PaintRegion, -WindowOrg.X, -WindowOrg.Y); - end; - - if RTLLayout then // Paint region needs to be mirrored before using it for clipping! - begin - { - //Method 1 - Switch Layout to LTR, Clip, Switch back to RTL - //Sometimes it's off by one or two pixels!! - SetLayout(CurDoubleBuffer.DC, LAYOUT_LTR); - Windows.SelectClipRgn(CurDoubleBuffer.DC, PaintRegion); - SetLayout(CurDoubleBuffer.DC, LAYOUT_RTL);//} - - //Method 2 - Create a mirrored region based on the one we have - nSize := GetRegionData(PaintRegion, 0, nil); - RgnData := GetMem(nSize); - XForm.eDx:=0; XForm.eDy:=0; - XForm.eM11:=-1; XForm.eM12:=0; - XForm.eM21:=0; XForm.eM22:=1; - - MirroredPaintRgn := ExtCreateRegion(@XForm, BytesCount, RgnData^); - Windows.SelectClipRgn(CurDoubleBuffer.DC, MirroredPaintRgn); - Windows.DeleteObject(MirroredPaintRgn); - Freemem(RgnData); - end - else - Windows.SelectClipRgn(CurDoubleBuffer.DC, PaintRegion); - end; + PaintRegion := CreateRectRgn(0, 0, 1, 1); + if GetRandomRgn(DC, PaintRegion, SYSRGN) = 1 then + CalcClipRgn(PaintRegion); {$ifdef DEBUG_DOUBLEBUFFER} - Windows.GetClipBox(CurDoubleBuffer.DC, ClipBox); - DebugLn('Double buffering in DC ', IntToHex(CurDoubleBuffer.DC, sizeof(HDC)*2), - ' with clipping rect (', - IntToStr(ClipBox.Left), ',', IntToStr(ClipBox.Top), ';', - IntToStr(ClipBox.Right), ',', IntToStr(ClipBox.Bottom), ')'); + Windows.GetClipBox(CurDoubleBuffer.DC, ClipBox); + DebugLn('Double buffering in DC ', IntToHex(CurDoubleBuffer.DC, sizeof(HDC)*2), + ' with clipping rect (', + IntToStr(ClipBox.Left), ',', IntToStr(ClipBox.Top), ';', + IntToStr(ClipBox.Right), ',', IntToStr(ClipBox.Bottom), ')'); {$endif} - // a copy of the region is selected into the DC, so we - // can free our region immediately - Windows.DeleteObject(PaintRegion); - end; - end else begin - DC := ControlDC; - PaintRegion := 0; - if useDoubleBuffer then - PrepareDoubleBuffer(DC); - end; - - if ParentPaintWindow <> 0 then - GetWin32ControlPos(Window, ParentPaintWindow, parLeft, parTop); - //Is not necessary to check the result of GetLCLClientBoundsOffset since - //the false condition (lWincontrol = nil or lWincontrol <> TWinControl) is never met - //The rect is always initialized with 0 - GetLCLClientBoundsOffset(lWinControl, ORect); - PaintMsg.Msg := LM_PAINT; - PaintMsg.PaintStruct := @PS; - if not useDoubleBuffer then - PaintMsg.DC := DC; - if not needParentPaint then - begin - // send through message to allow message override, moreover use SendMessage - // to allow subclass window proc override this message too + // a copy of the region is selected into the DC, so we + // can free our region immediately + Windows.DeleteObject(PaintRegion); + end; + end else begin + DC := ControlDC; + PaintRegion := 0; + if useDoubleBuffer then + BufferWasSaved := PrepareDoubleBuffer(DC, DoubleBufferBitmapOld); + end; + + if ParentPaintWindow <> 0 then + GetWin32ControlPos(Window, ParentPaintWindow, parLeft, parTop); + //Is not necessary to check the result of GetLCLClientBoundsOffset since + //the false condition (lWincontrol = nil or lWincontrol <> TWinControl) is never met + //The rect is always initialized with 0 + GetLCLClientBoundsOffset(lWinControl, ORect); + PaintMsg.Msg := LM_PAINT; + PaintMsg.PaintStruct := @PS; + if not useDoubleBuffer then + PaintMsg.DC := DC; + if not needParentPaint then + begin + // send through message to allow message override, moreover use SendMessage + // to allow subclass window proc override this message too {$IFDEF DBG_SendPaintMessage} - DebugLnEnter('> SendPaintMessage call WM_ERASEBKGND for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); + DebugLnEnter('> SendPaintMessage call WM_ERASEBKGND for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); {$ENDIF} - Include(TWinControlAccess(lWinControl).FWinControlFlags, wcfEraseBackground); - Windows.SendMessage(lWinControl.Handle, WM_ERASEBKGND, Windows.WPARAM(PaintMsg.DC), 0); - Exclude(TWinControlAccess(lWinControl).FWinControlFlags, wcfEraseBackground); + Include(TWinControlAccess(lWinControl).FWinControlFlags, wcfEraseBackground); + Windows.SendMessage(lWinControl.Handle, WM_ERASEBKGND, Windows.WPARAM(PaintMsg.DC), 0); + Exclude(TWinControlAccess(lWinControl).FWinControlFlags, wcfEraseBackground); {$IFDEF DBG_SendPaintMessage} - DebugLnExit('< SendPaintMessage back from WM_ERASEBKGND for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); + DebugLnExit('< SendPaintMessage back from WM_ERASEBKGND for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); {$ENDIF} - end; - if ParentPaintWindow <> 0 then - begin + end; + if ParentPaintWindow <> 0 then + begin {$ifdef MSG_DEBUG} - DebugLn(MessageStackDepth, ' *painting background by sending paint message to parent window ', - IntToHex(ParentPaintWindow, 8)); + DebugLn(MessageStackDepth, ' *painting background by sending paint message to parent window ', + IntToHex(ParentPaintWindow, 8)); {$endif} - // tabpage parent and got a dc to draw in, divert paint to parent - DCIndex := Windows.SaveDC(PaintMsg.DC); - DrawParentBackground(Window, PaintMsg.DC); - Windows.RestoreDC(PaintMsg.DC, DCIndex); - end; - if (ControlDC = 0) or not needParentPaint then - begin - DCIndex := Windows.SaveDC(PaintMsg.DC); - MoveWindowOrgEx(PaintMsg.DC, ORect.Left, ORect.Top); + // tabpage parent and got a dc to draw in, divert paint to parent + DCIndex := Windows.SaveDC(PaintMsg.DC); + DrawParentBackground(Window, PaintMsg.DC); + Windows.RestoreDC(PaintMsg.DC, DCIndex); + end; + if (ControlDC = 0) or not needParentPaint then + begin + DCIndex := Windows.SaveDC(PaintMsg.DC); + MoveWindowOrgEx(PaintMsg.DC, ORect.Left, ORect.Top); {$ifdef DEBUG_DOUBLEBUFFER} - Windows.GetClipBox(PaintMsg.DC, ClipBox); - DebugLn('LCL Drawing in DC ', IntToHex(PaintMsg.DC, 8), ' with clipping rect (', - IntToStr(ClipBox.Left), ',', IntToStr(ClipBox.Top), ';', - IntToStr(ClipBox.Right), ',', IntToStr(ClipBox.Bottom), ')'); + Windows.GetClipBox(PaintMsg.DC, ClipBox); + DebugLn('LCL Drawing in DC ', IntToHex(PaintMsg.DC, 8), ' with clipping rect (', + IntToStr(ClipBox.Left), ',', IntToStr(ClipBox.Top), ';', + IntToStr(ClipBox.Right), ',', IntToStr(ClipBox.Bottom), ')'); {$endif} {$IFDEF DBG_SendPaintMessage} - DebugLnEnter('> SendPaintMessage call DeliverMessage for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); + DebugLnEnter('> SendPaintMessage call DeliverMessage for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); {$ENDIF} - DeliverMessage(lWinControl, PaintMsg); + DeliverMessage(lWinControl, PaintMsg); {$IFDEF DBG_SendPaintMessage} - DebugLnExit('< SendPaintMessage back from DeliverMessage Ufor CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); + DebugLnExit('< SendPaintMessage back from DeliverMessage Ufor CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); {$ENDIF} - Windows.RestoreDC(PaintMsg.DC, DCIndex); - end; - if useDoubleBuffer then - Windows.BitBlt(DC, 0, 0, WindowWidth, WindowHeight, CurDoubleBuffer.DC, 0, 0, SRCCOPY); - if ControlDC = 0 then - Windows.EndPaint(Window, @PS); - finally - if useDoubleBuffer then + Windows.RestoreDC(PaintMsg.DC, DCIndex); + end; + if useDoubleBuffer then + Windows.BitBlt(DC, 0, 0, WindowWidth, WindowHeight, CurDoubleBuffer.DC, 0, 0, SRCCOPY); + if ControlDC = 0 then + Windows.EndPaint(Window, @PS); + finally + if useDoubleBuffer then + begin + SelectObject(CurDoubleBuffer.DC, DoubleBufferBitmapOld); + DeleteDC(CurDoubleBuffer.DC); + CurDoubleBuffer.DC := 0; + if BufferWasSaved then begin - SelectObject(CurDoubleBuffer.DC, DoubleBufferBitmapOld); - DeleteDC(CurDoubleBuffer.DC); - CurDoubleBuffer.DC := 0; - if BufferWasSaved then - begin - if CurDoubleBuffer.Bitmap <> 0 then - DeleteObject(CurDoubleBuffer.Bitmap); - CurDoubleBuffer := BackupBuffer; - end; + if CurDoubleBuffer.Bitmap <> 0 then + DeleteObject(CurDoubleBuffer.Bitmap); + CurDoubleBuffer := BackupBuffer; + end; {$ifdef DEBUG_DOUBLEBUFFER} - if CopyBitmapToClipboard then - begin -// Windows.OpenClipboard(0); -// Windows.EmptyClipboard; -// Windows.SetClipboardData(CF_BITMAP, DoubleBufferBitmap); -// Windows.CloseClipboard; - CopyBitmapToClipboard := false; - end; -{$endif} + if CopyBitmapToClipboard then + begin +// Windows.OpenClipboard(0); +// Windows.EmptyClipboard; +// Windows.SetClipboardData(CF_BITMAP, DoubleBufferBitmap); +// Windows.CloseClipboard; + CopyBitmapToClipboard := false; end; +{$endif} end; - + end; {$IFDEF DBG_SendPaintMessage} - finally - DebugLnExit('<<< SendPaintMessage for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); - end; + finally + DebugLnExit('<<< SendPaintMessage for CtrlDC=', dbgs(ControlDC), ' Window=', dbgs(Window), ' WinCtrl=',dbgs(PtrUInt(lWinControl)), ' ', DbgSName(lWinControl)); + end; {$ENDIF} +end; - end; +procedure TWindowProcHelper.HandleScrollMessage(LMsg: integer); +var + ScrollInfo: TScrollInfo; +begin + with LMScroll do + begin + Msg := LMsg; + ScrollCode := LOWORD(WParam); + SmallPos := 0; + ScrollBar := HWND(LParam); + Pos := 0; + end; + + if not (LOWORD(WParam) in [SB_THUMBTRACK, SB_THUMBPOSITION]) + then begin + WindowInfo^.TrackValid := False; + Exit; + end; + + // Note on thumb tracking + // When using the scrollwheel, windows sends SB_THUMBTRACK + // messages, but only when scroll.max < 32K. So in that case + // Hi(WParam) won't cycle. + // When ending scrollbar tracking we also get those + // messages. Now Hi(WParam) is cycling. + // To get the correct value you need to use GetScrollInfo. + // + // Now there is a problem. GetScrollInfo returns always the old + // position. So in case we get track messages, we'll keep the + // last trackposition. + // To get the correct position, we use the most significant + // part of the last known value (or the value returned by + // ScrollInfo). The missing least significant part is given + // by Hi(WParam), since it is cycling, the or of both will give + // the position + // This only works if the difference between the last pos and + // the new pos is < 64K, so it might fail if we don't get track + // messages + // MWE. + + ScrollInfo.cbSize := SizeOf(ScrollInfo); + if LOWORD(WParam) = SB_THUMBTRACK + then begin + ScrollInfo.fMask := SIF_TRACKPOS; + // older windows versions may not support trackpos, so fill it with some default + if WindowInfo^.TrackValid + then ScrollInfo.nTrackPos := Integer(WindowInfo^.TrackPos and $FFFF0000) or HIWORD(WParam) + else ScrollInfo.nTrackPos := HIWORD(WParam); + end + else begin + ScrollInfo.fMask := SIF_POS; + ScrollInfo.nPos := HIWORD(WParam); + end; + + if LParam <> 0 + then begin + // The message is send by a scrollbar + GetScrollInfo(HWND(LParam), SB_CTL, ScrollInfo); + end + else begin + // The message is send by a window's standard scrollbar + if LMsg = LM_HSCROLL + then GetScrollInfo(Window, SB_HORZ, ScrollInfo) + else GetScrollInfo(Window, SB_VERT, ScrollInfo); + end; + + if LOWORD(WParam) = SB_THUMBTRACK + then begin + LMScroll.Pos := ScrollInfo.nTrackPos; + WindowInfo^.TrackPos := ScrollInfo.nTrackPos; + WindowInfo^.TrackValid := True; + end + else begin + if WindowInfo^.TrackValid + then LMScroll.Pos := LongInt(WindowInfo^.TrackPos and $FFFF0000) or HIWORD(WParam) + else LMScroll.Pos := (ScrollInfo.nPos and $FFFF0000) or HIWORD(WParam); + end; + + if LMScroll.Pos < High(LMScroll.SmallPos) + then LMScroll.SmallPos := LMScroll.Pos + else LMScroll.SmallPos := High(LMScroll.SmallPos); +end; - procedure ClearSiblingRadioButtons(RadioButton: TRadioButton); - var - Parent: TWinControl; - Sibling: TControl; - WinControl: TWinControlAccess absolute Sibling; - LParamFlag: LRESULT; - i: Integer; +procedure TWindowProcHelper.HandleSetCursor; +var + lControl: TControl; + BoundsOffset: TRect; + ACursor: TCursor; + MouseMessage: Word; + P: TPoint; +begin + if Assigned(lWinControl) then begin - Parent := RadioButton.Parent; - for i:= 0 to Parent.ControlCount - 1 do + if not (csDesigning in lWinControl.ComponentState) and (LOWORD(LParam) = HTCLIENT) then begin - Sibling := Parent.Controls[i]; - if (Sibling is TRadioButton) and (Sibling <> RadioButton) then + ACursor := Screen.Cursor; + if ACursor = crDefault then + begin + Windows.GetCursorPos(Windows.POINT(P)); + Windows.ScreenToClient(Window, Windows.POINT(P)); + if GetLCLClientBoundsOffset(lWinControl, BoundsOffset) then + begin + Dec(P.X, BoundsOffset.Left); + Dec(P.Y, BoundsOffset.Top); + end; + // TGraphicControl controls do not get WM_SETCURSOR messages... + lControl := lWinControl.ControlAtPos(P, [capfOnlyClientAreas, + capfAllowWinControls, capfHasScrollOffset, capfRecursive]); + if lControl = nil then + lControl := lWinControl; + ACursor := lControl.Cursor; + end; + if ACursor <> crDefault then begin - // Pass previous state through LParam so the event handling can decide - // when to propagate LM_CHANGE (New State <> Previous State) - LParamFlag := Windows.SendMessage(WinControl.WindowHandle, BM_GETCHECK, 0, 0); - // Pass SKIP_LMCHANGE through LParam if previous state is already unchecked - if LParamFlag = BST_UNCHECKED then - LParamFlag := SKIP_LMCHANGE; - Windows.SendMessage(WinControl.WindowHandle, BM_SETCHECK, - Windows.WParam(BST_UNCHECKED), Windows.LParam(LParamFlag)); + // DebugLn('Set cursor. Control = ', LControl.Name, ' cur = ',ACursor); + Windows.SetCursor(Screen.Cursors[ACursor]); + LMessage.Result := 1; + end; + end + else + if (LOWORD(LParam) = Word(HTERROR)) then + begin + MouseMessage := HIWORD(LParam); + // a mouse click on a window + if ((MouseMessage = WM_LBUTTONDOWN) or + (MouseMessage = WM_RBUTTONDOWN) or + (MouseMessage = WM_XBUTTONDOWN)) and + Assigned(Screen) and Assigned(Screen.ActiveCustomForm) and + Screen.ActiveCustomForm.HandleAllocated and + (GetForegroundWindow <> Screen.ActiveCustomForm.Handle) then + begin + // A mouse click is happen on our application window which is not active + // we need to active it ourself. This is needed only when click is happen + // on disabled window (e.g. ShowModal is called and non modal window is clicked) + Win32WidgetSet.AppBringToFront; + LMessage.Result := 1; end; end; end; + if LMessage.Result = 0 then + SetLMessageAndParams(LM_SETCURSOR); + WinProcess := False; +end; - // sets the text of the combobox, - // because some events are risen, before the text is actually changed - procedure UpdateComboBoxText(ComboBox: TCustomComboBox); - var - Index: Integer; - begin - with ComboBox do begin - Index := ItemIndex; - // Index might be -1, if current text is not in the list. - if (Index>=0) then - TWin32WSWinControl.SetText(ComboBox, Items[Index]); +procedure TWindowProcHelper.DoSysCmdKeyMenu; +var + ParentForm: TCustomForm; + TargetWindow, prevFocus: HWND; +begin + ParentForm := GetParentForm(lWinControl); + if (ParentForm <> nil) and ((ParentForm.Menu = nil) or (csDesigning in ParentForm.ComponentState)) + and (Application <> nil) and (Application.MainForm <> nil) + and (Application.MainForm <> ParentForm) + and Application.MainForm.HandleAllocated then + begin + TargetWindow := Application.MainFormHandle; + if IsWindowEnabled(TargetWindow) and IsWindowVisible(TargetWindow) then + begin + prevFocus := Windows.GetFocus; + Windows.SetFocus(targetWindow); + PLMsg^.Result := Windows.SendMessage(TargetWindow, WM_SYSCOMMAND, WParam, LParam); + Windows.SetFocus(prevFocus); + WinProcess := False; end; end; +end; - procedure EnableChildWindows(WinControl: TWinControl; Enable: boolean); - var - i: integer; - ChildControl: TWinControl; +procedure TWindowProcHelper.DoSysCmdMinimize; +begin + if Assigned(lWinControl) and (Application.MainForm = lWinControl) + and not Application.MainFormOnTaskBar then + Window := Win32WidgetSet.AppHandle; //redirection + + if (Window = Win32WidgetSet.AppHandle) and not Application.MainFormOnTaskBar then begin - for i := 0 to WinControl.ControlCount-1 do + HidePopups(Win32WidgetSet.AppHandle); + if Assigned(Application.MainForm) then begin - if WinControl.Controls[i] is TWinControl then - begin - ChildControl := TWinControl(WinControl.Controls[i]); - if Enable then - begin - if ChildControl.Enabled then - EnableWindow(ChildControl.Handle, true); - end - else - EnableWindow(ChildControl.Handle, false); - - EnableChildWindows(ChildControl, Enable); - end; + Windows.SetWindowPos(Window, HWND_TOP, + Application.MainForm.Left, Application.MainForm.Top, + Application.MainForm.Width, 0, SWP_NOACTIVATE); + if Application.MainForm.HandleAllocated then + Windows.ShowWindow(Application.MainFormHandle, SW_HIDE); end; + + PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam); + WinProcess := False; + Application.IntfAppMinimize; + end + else + if Assigned(lWinControl) and (lWinControl = Application.MainForm) then + begin + PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam); + WinProcess := False; + Application.IntfAppMinimize; end; +end; - procedure HandleScrollMessage(LMsg: integer); - var - ScrollInfo: TScrollInfo; +procedure TWindowProcHelper.DoSysCmdRestore; +begin + if (Window = Win32WidgetSet.AppHandle) and not Application.MainFormOnTaskBar then begin - with LMScroll do + PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam); + WinProcess := False; + if Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then begin - Msg := LMsg; - ScrollCode := LOWORD(WParam); - SmallPos := 0; - ScrollBar := HWND(LParam); - Pos := 0; - end; - - if not (LOWORD(WParam) in [SB_THUMBTRACK, SB_THUMBPOSITION]) - then begin - WindowInfo^.TrackValid := False; - Exit; - end; + if Application.MainForm.HandleObjectShouldBeVisible then + Windows.ShowWindow(Application.MainFormHandle, SW_SHOWNA); + RestorePopups; + end; + Application.IntfAppRestore; + end + else if Assigned(lWinControl) and (lWinControl = Application.MainForm) then + Application.IntfAppRestore; +end; - // Note on thumb tracking - // When using the scrollwheel, windows sends SB_THUMBTRACK - // messages, but only when scroll.max < 32K. So in that case - // Hi(WParam) won't cycle. - // When ending scrollbar tracking we also get those - // messages. Now Hi(WParam) is cycling. - // To get the correct value you need to use GetScrollInfo. - // - // Now there is a problem. GetScrollInfo returns always the old - // position. So in case we get track messages, we'll keep the - // last trackposition. - // To get the correct position, we use the most significant - // part of the last known value (or the value returned by - // ScrollInfo). The missing least significant part is given - // by Hi(WParam), since it is cycling, the or of both will give - // the position - // This only works if the difference between the last pos and - // the new pos is < 64K, so it might fail if we don't get track - // messages - // MWE. - - - ScrollInfo.cbSize := SizeOf(ScrollInfo); - if LOWORD(WParam) = SB_THUMBTRACK - then begin - ScrollInfo.fMask := SIF_TRACKPOS; - // older windows versions may not support trackpos, so fill it with some default - if WindowInfo^.TrackValid - then ScrollInfo.nTrackPos := Integer(WindowInfo^.TrackPos and $FFFF0000) or HIWORD(WParam) - else ScrollInfo.nTrackPos := HIWORD(WParam); - end - else begin - ScrollInfo.fMask := SIF_POS; - ScrollInfo.nPos := HIWORD(WParam); - end; +procedure TWindowProcHelper.HandleSysCommand; +begin + // forward keystroke to show window menu, if parent form has no menu + // if wparam contains SC_KEYMENU, lparam contains key pressed + // keymenu+space should always bring up system menu + case (WParam and $FFF0) of + SC_KEYMENU: + if (lWinControl <> nil) and (lParam <> VK_SPACE) then + DoSysCmdKeyMenu; + SC_MINIMIZE: + if Assigned(Application) then + DoSysCmdMinimize; + SC_RESTORE: + if Assigned(Application) then + DoSysCmdRestore; + end; +end; - if LParam <> 0 - then begin - // The message is send by a scrollbar - GetScrollInfo(HWND(LParam), SB_CTL, ScrollInfo); - end - else begin - // The message is send by a window's standard scrollbar - if LMsg = LM_HSCROLL - then GetScrollInfo(Window, SB_HORZ, ScrollInfo) - else GetScrollInfo(Window, SB_VERT, ScrollInfo); - end; +function TWindowProcHelper.IsComboEditSelection: boolean; +begin + Result := WindowInfo^.isComboEdit and (ComboBoxHandleSizeWindow = Windows.GetParent(Window)); +end; - if LOWORD(WParam) = SB_THUMBTRACK - then begin - LMScroll.Pos := ScrollInfo.nTrackPos; - WindowInfo^.TrackPos := ScrollInfo.nTrackPos; - WindowInfo^.TrackValid := True; - end - else begin - if WindowInfo^.TrackValid - then LMScroll.Pos := LongInt(WindowInfo^.TrackPos and $FFFF0000) or HIWORD(WParam) - else LMScroll.Pos := (ScrollInfo.nPos and $FFFF0000) or HIWORD(WParam); - end; - - if LMScroll.Pos < High(LMScroll.SmallPos) - then LMScroll.SmallPos := LMScroll.Pos - else LMScroll.SmallPos := High(LMScroll.SmallPos); - end; - - procedure HandleSetCursor; - var - lControl: TControl; - BoundsOffset: TRect; - ACursor: TCursor; - MouseMessage: Word; - begin - if Assigned(lWinControl) then +procedure TWindowProcHelper.HandleBitBtnCustomDraw(ABitBtn: TCustomBitBtn); +var + DrawInfo: PNMCustomDraw; + ARect: TRect; + ShowFocus: Boolean; +begin + DrawInfo := PNMCustomDraw(NMHdr); + case DrawInfo^.dwDrawStage of + CDDS_PREPAINT, CDDS_POSTPAINT: begin - if not (csDesigning in lWinControl.ComponentState) and (LOWORD(LParam) = HTCLIENT) then - begin - ACursor := Screen.Cursor; - if ACursor = crDefault then - begin - Windows.GetCursorPos(Windows.POINT(P)); - Windows.ScreenToClient(Window, Windows.POINT(P)); - if GetLCLClientBoundsOffset(lWinControl, BoundsOffset) then - begin - Dec(P.X, BoundsOffset.Left); - Dec(P.Y, BoundsOffset.Top); - end; - // TGraphicControl controls do not get WM_SETCURSOR messages... - lControl := lWinControl.ControlAtPos(P, [capfOnlyClientAreas, - capfAllowWinControls, capfHasScrollOffset, capfRecursive]); - if lControl = nil then - lControl := lWinControl; - ACursor := lControl.Cursor; - end; - if ACursor <> crDefault then - begin - // DebugLn('Set cursor. Control = ', LControl.Name, ' cur = ',ACursor); - Windows.SetCursor(Screen.Cursors[ACursor]); - LMessage.Result := 1; - end; - end - else - if (LOWORD(LParam) = Word(HTERROR)) then + lmNotify.Result := CDRF_DODEFAULT or CDRF_NOTIFYPOSTPAINT; + WinProcess := False; + if ABitBtn.Focused then begin - MouseMessage := HIWORD(LParam); - // a mouse click on a window - if ((MouseMessage = WM_LBUTTONDOWN) or - (MouseMessage = WM_RBUTTONDOWN) or - (MouseMessage = WM_XBUTTONDOWN)) and - Assigned(Screen) and Assigned(Screen.ActiveCustomForm) and - Screen.ActiveCustomForm.HandleAllocated and - (GetForegroundWindow <> Screen.ActiveCustomForm.Handle) then + if WindowsVersion >= wv2000 then + ShowFocus := (Windows.SendMessage(ABitBtn.Handle, WM_QUERYUISTATE, 0, 0) and UISF_HIDEFOCUS) = 0 + else + ShowFocus := True; + if ShowFocus then begin - // A mouse click is happen on our application window which is not active - // we need to active it ourself. This is needed only when click is happen - // on disabled window (e.g. ShowModal is called and non modal window is clicked) - Win32WidgetSet.AppBringToFront; - LMessage.Result := 1; + ARect := DrawInfo^.rc; + InflateRect(ARect, -3, -3); + if not IsRectEmpty(ARect) then + Windows.DrawFocusRect(DrawInfo^.hdc, ARect); end; end; end; - if LMessage.Result = 0 then - begin - LMessage.Msg := LM_SETCURSOR; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - end; - WinProcess := False; end; +end; - procedure HandleSysCommand; - var - ParentForm: TCustomForm; - prevFocus: HWND; - begin - // forward keystroke to show window menu, if parent form has no menu - // if wparam contains SC_KEYMENU, lparam contains key pressed - // keymenu+space should always bring up system menu - case (WParam and $FFF0) of - SC_KEYMENU: - if (lWinControl <> nil) and (lParam <> VK_SPACE) then - begin - ParentForm := GetParentForm(lWinControl); - if (ParentForm <> nil) and ((ParentForm.Menu = nil) or (csDesigning in ParentForm.ComponentState)) - and (Application <> nil) and (Application.MainForm <> nil) - and (Application.MainForm <> ParentForm) - and Application.MainForm.HandleAllocated then - begin - TargetWindow := Application.MainFormHandle; - if IsWindowEnabled(TargetWindow) and IsWindowVisible(TargetWindow) then - begin - prevFocus := Windows.GetFocus; - Windows.SetFocus(targetWindow); - PLMsg^.Result := Windows.SendMessage(TargetWindow, WM_SYSCOMMAND, WParam, LParam); - Windows.SetFocus(prevFocus); - WinProcess := False; - end; - end; - end; +procedure TWindowProcHelper.HandleDropFiles; +var + Files: Array of String; + Drop: HDROP; + L: LongWord; + I, C: Integer; + DropForm: TWinControl; + AnsiBuffer: string; + WideBuffer: WideString; +begin + Drop := HDROP(WParam); + try + C := DragQueryFile(Drop, $FFFFFFFF, nil, 0); // get dropped files count + if C <= 0 then Exit; - SC_MINIMIZE: - begin - if Assigned(Application) then - begin - if Assigned(lWinControl) and (Application.MainForm = lWinControl) and not Application.MainFormOnTaskBar then - Window := Win32WidgetSet.AppHandle;//redirection + SetLength(Files, C); + for I := 0 to C - 1 do + begin + if UnicodeEnabledOS then + begin + L := DragQueryFileW(Drop, I, nil, 0); // get I. file name length + SetLength(WideBuffer, L); + L := DragQueryFileW(Drop, I, @WideBuffer[1], L + 1); + SetLength(WideBuffer, L); + Files[I] := UTF16ToUTF8(WideBuffer); + end + else + begin + L := DragQueryFile(Drop, I, nil, 0); // get I. file name length + SetLength(AnsiBuffer, L); + L := DragQueryFile(Drop, I, @AnsiBuffer[1], L + 1); + SetLength(WideBuffer, L); + Files[I] := ANSIToUTF8(AnsiBuffer); + end; + end; - if (Window = Win32WidgetSet.AppHandle) and not Application.MainFormOnTaskBar then - begin - HidePopups(Win32WidgetSet.AppHandle); - if Assigned(Application.MainForm) then - begin - Windows.SetWindowPos(Window, HWND_TOP, - Application.MainForm.Left, Application.MainForm.Top, - Application.MainForm.Width, 0, SWP_NOACTIVATE); - if Application.MainForm.HandleAllocated then - Windows.ShowWindow(Application.MainFormHandle, SW_HIDE); - end; - - PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam); - WinProcess := False; - Application.IntfAppMinimize; - end - else - if Assigned(lWinControl) and (lWinControl = Application.MainForm) then - begin - PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam); - WinProcess := False; - Application.IntfAppMinimize; - end; - end; - end; + if Length(Files) > 0 then + begin + DropForm := lWinControl.IntfGetDropFilesTarget; + if DropForm is TCustomForm then + TCustomForm(DropForm).IntfDropFiles(Files); + if Application <> nil then + Application.IntfDropFiles(Files); + end; + finally + DragFinish(Drop); + end; +end; - SC_RESTORE: - begin - if Assigned(Application) then - begin - if (Window = Win32WidgetSet.AppHandle) and not Application.MainFormOnTaskBar then - begin - PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam); - WinProcess := False; - if Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then - begin - if Application.MainForm.HandleObjectShouldBeVisible then - Windows.ShowWindow(Application.MainFormHandle, SW_SHOWNA); - RestorePopups; - end; - Application.IntfAppRestore; - end - else - if Assigned(lWinControl) and (lWinControl = Application.MainForm) then - begin - Application.IntfAppRestore; - end; - end; - end; +// returns false if the UnicodeChar is not handled +function TWindowProcHelper.HandleUnicodeChar(var AChar: Word): boolean; +var + OldUTF8Char, UTF8Char: TUTF8Char; + WS: WideString; +begin + Result := False; + UTF8Char := UTF16ToUTF8(WideString(WideChar(AChar))); + OldUTF8Char := UTF8Char; + if Assigned(lWinControl) then + begin + // if somewhere key is changed to '' then don't process this message + WinProcess := not lWinControl.IntfUTF8KeyPress(UTF8Char, 1, False); + // if somewhere key is changed then don't perform a regular keypress + Result := not WinProcess or (UTF8Char <> OldUTF8Char); + if UTF8Char <> OldUTF8Char then + begin + WS := UTF8ToUTF16(UTF8Char); + if Length(WS) > 0 then + AChar := Word(WS[1]) + else + AChar := 0; end; end; +end; - function IsComboEditSelection: boolean; +procedure TWindowProcHelper.UpdateUIState(CharCode: Word); +// This piece of code is taken from ThemeMgr.pas of Mike Lischke +// Beginning with Windows 2000 the UI in an application may hide focus rectangles and accelerator key indication. +// We have to take care to show them if the user starts navigating using the keyboard. + + function FindParentForm: TCustomForm; inline; begin - Result := WindowInfo^.isComboEdit and (ComboBoxHandleSizeWindow = Windows.GetParent(Window)); + if lWinControl <> nil then + Result := GetParentForm(lWinControl) + else + if Application <> nil then + Result := Application.MainForm + else + Result := nil; end; - procedure HandleBitBtnCustomDraw(ABitBtn: TCustomBitBtn); - var - DrawInfo: PNMCustomDraw absolute NMHdr; - ARect: TRect; - ShowFocus: Boolean; +var + ParentForm: TCustomForm; +begin + case CharCode of + VK_LEFT..VK_DOWN, VK_TAB: + begin + ParentForm := FindParentForm; + if ParentForm <> nil then + SendMessage(ParentForm.Handle, WM_CHANGEUISTATE, MakeLong(UIS_CLEAR, UISF_HIDEFOCUS), 0); + end; + VK_MENU: + begin + ParentForm := FindParentForm; + if ParentForm <> nil then + SendMessage(ParentForm.Handle, WM_CHANGEUISTATE, MakeLong(UIS_CLEAR, UISF_HIDEACCEL), 0); + end; + end; +end; + +function TWindowProcHelper.DoChildEdit(out WinResult: LResult): Boolean; +var + Info: TComboboxInfo; +begin + // combobox child edit weirdness + // prevent combobox WM_SIZE message to get/set/compare text to list, to select text + if IsComboEditSelection then begin - case DrawInfo^.dwDrawStage of - CDDS_PREPAINT, CDDS_POSTPAINT: + case Msg of + WM_GETTEXTLENGTH, EM_SETSEL: begin - lmNotify.Result := CDRF_DODEFAULT or CDRF_NOTIFYPOSTPAINT; - WinProcess := False; - if ABitBtn.Focused then + WinResult := 0; + Exit(True); + end; + WM_GETTEXT: + begin + if WParam > 0 then + PChar(LParam)^ := #0; + WinResult := 0; + Exit(True); + end; + end; + end; + lWinControl := WindowInfo^.AWinControl; + {for ComboBox IME sends WM_IME_NOTIFY with WParam=WM_IME_ENDCOMPOSITION} + if (Msg = WM_IME_NOTIFY) and (WPARAM=WM_IME_ENDCOMPOSITION) then + WindowInfo^.IMEComposed:=True; + + // filter messages we want to pass on to LCL + if (Msg <> WM_KILLFOCUS) and (Msg <> WM_SETFOCUS) + {$ifndef RedirectDestroyMessages}and (Msg <> WM_NCDESTROY){$endif} + and not ((Msg >= WM_CUT) and (Msg <= WM_CLEAR)) + and ((Msg < WM_KEYFIRST) or (Msg > WM_KEYLAST)) + and ((Msg < WM_MOUSEFIRST) or (Msg > WM_MOUSELAST)) then + begin + WinResult := CallDefaultWindowProc(Window, Msg, WParam, LParam); + Exit(True); + end + else + if (Msg = WM_KILLFOCUS) or (Msg = WM_SETFOCUS) then + begin + // if focus jumps inside combo then no need to notify LCL + Info.cbSize := SizeOf(Info); + Win32Extra.GetComboBoxInfo(lWinControl.Handle, @Info); + if (HWND(WParam) = Info.hwndList) or + (HWND(WParam) = Info.hwndItem) or + (HWND(WParam) = Info.hwndCombo) then + begin + WinResult := CallDefaultWindowProc(Window, Msg, WParam, LParam); + Exit(True); + end; + end; + Result := False; +end; + +procedure TWindowProcHelper.DoMsgChar(var WinResult: LResult); +begin + // first send a IntfUTF8KeyPress to the LCL + // if the key was not handled send a CN_CHAR for AnsiChar<=#127 + OrgCharCode := Word(WParam); + if not HandleUnicodeChar(OrgCharCode) then + begin + PLMsg := @LMChar; + with LMChar do + begin + Msg := CN_CHAR; + KeyData := LParam; + if UnicodeEnabledOS then + CharCode := Word(Char(WideChar(WParam))) + else + CharCode := Word(WParam); + OrgCharCode := CharCode; + WinResult := 0; + end; + WinProcess := false; + end + else + WParam := OrgCharCode; +end; + +procedure TWindowProcHelper.DoCmdCheckBoxParam; +var + Flags: dword; +begin + case HIWORD(WParam) of + BN_CLICKED: + begin + // to allow cbGrayed state at the same time as not AllowGrayed + // in checkboxes (needed by dbcheckbox for null fields) we need + // to handle checkbox state ourselves, according to msdn state + // sequence goes from checked->cleared->grayed etc. + Flags := SendMessage(lWinControl.Handle, BM_GETCHECK, 0, 0); + //do not update the check state if is TRadioButton and is already checked + if (Flags <> BST_CHECKED) or not (lWinControl is TRadioButton) then begin - if WindowsVersion >= wv2000 then - ShowFocus := (Windows.SendMessage(ABitBtn.Handle, WM_QUERYUISTATE, 0, 0) and UISF_HIDEFOCUS) = 0 + if (Flags=BST_CHECKED) then + Flags := BST_UNCHECKED else - ShowFocus := True; - if ShowFocus then - begin - ARect := DrawInfo^.rc; - InflateRect(ARect, -3, -3); - if not IsRectEmpty(ARect) then - Windows.DrawFocusRect(DrawInfo^.hdc, ARect); - end; - end; + if (Flags=BST_UNCHECKED) and + TCustomCheckbox(lWinControl).AllowGrayed then + Flags := BST_INDETERMINATE + else + Flags := BST_CHECKED; + //pass 0 through LParam to force sending LM_CHANGE + Windows.SendMessage(lWinControl.Handle, BM_SETCHECK, Windows.WPARAM(Flags), 0); + end; + LMessage.Msg := LM_CLICKED; + end; + BN_KILLFOCUS: + LMessage.Msg := LM_EXIT; + end +end; + +function TWindowProcHelper.DoCmdComboBoxParam: Boolean; +begin + case HIWORD(WParam) of + CBN_DROPDOWN: TCustomCombobox(lWinControl).IntfGetItems; + CBN_EDITCHANGE: LMessage.Msg := LM_CHANGED; + { CBN_EDITCHANGE is only sent after the user changes the edit box. + CBN_SELCHANGE is sent when the user changes the text by + selecting in the list, but before text is actually changed. + itemindex is updated, so set text manually } + CBN_SELCHANGE: + begin + if TCustomComboBox(lWinControl).Style in [csSimple, csDropDown] then + UpdateComboBoxText(TCustomComboBox(lWinControl)); + SendSimpleMessage(lWinControl, LM_CHANGED); + LMessage.Msg := LM_SELCHANGE; + end; + CBN_CLOSEUP: + begin + // according to msdn CBN_CLOSEUP can happen before CBN_SELCHANGE and + // unfortunately it is simple truth. but we need correct order in the LCL + PostMessage(lWinControl.Handle, CN_COMMAND, WParam, LParam); + Exit(True); + end; + end; + Result := False; +end; + +procedure TWindowProcHelper.DoMsgColor(ChildWindowInfo: PWin32WindowInfo); +var + WindowDC: HDC; + WindowColor: TColor; + ChildWinControl: TWinControl; +begin + WindowDC := HDC(WParam); + ChildWinControl := ChildWindowInfo^.WinControl; + if ChildWinControl = nil then + ChildWinControl := ChildWindowInfo^.AWinControl; + + case Msg of + WM_CTLCOLORSTATIC, + WM_CTLCOLORBTN: begin + if GetNeedParentPaint(ChildWindowInfo, ChildWinControl) and + not ChildWindowInfo^.ThemedCustomDraw then + begin + // need to draw transparently, draw background + DrawParentBackground(HWND(LParam), WindowDC); + LMessage.Result := GetStockObject(HOLLOW_BRUSH); + SetBkMode(WindowDC, TRANSPARENT); + WinProcess := false; end; end; + WM_CTLCOLORSCROLLBAR: begin + WinProcess := false; + end; end; - - procedure HandleDropFiles; - var - Files: Array of String; - Drop: HDROP; - L: LongWord; - I, C: Integer; - DropForm: TWinControl; - {$IFDEF WindowsUnicodeSupport} - AnsiBuffer: string; - WideBuffer: WideString; - {$ENDIF} - begin - Drop := HDROP(WParam); - try - C := DragQueryFile(Drop, $FFFFFFFF, nil, 0); // get dropped files count - if C <= 0 then Exit; - - SetLength(Files, C); - for I := 0 to C - 1 do + + if WinProcess then + begin + if ChildWinControl <> nil then + begin + WindowColor := ChildWinControl.Font.Color; + if WindowColor = clDefault then + WindowColor := ChildWinControl.GetDefaultColor(dctFont); + Windows.SetTextColor(WindowDC, ColorToRGB(WindowColor)); + WindowColor := ChildWinControl.Brush.Color; + if WindowColor = clDefault then + WindowColor := ChildWinControl.GetDefaultColor(dctBrush); + Windows.SetBkColor(WindowDC, ColorToRGB(WindowColor)); + LMessage.Result := LResult(ChildWinControl.Brush.Reference.Handle); + // Override default handling + WinProcess := false; + end; + end; +end; + +procedure TWindowProcHelper.UpdateDrawListItem(aMsg: UInt); +var + PDrawIS: PDrawItemStruct; +begin + PDrawIS := PDrawItemStruct(LParam); + if PDrawIS^.itemID <> dword(-1) then + begin + LMessage.Msg := aMsg; + TLMDrawListItem(LMessage).DrawListItemStruct := @DrawListItemStruct; + with DrawListItemStruct do + begin + ItemID := PDrawIS^.itemID; + Area := PDrawIS^.rcItem; + ItemState := TOwnerDrawState(PDrawIS^.itemState); + DC := PDrawIS^._hDC; + end; + if (aMsg = LM_DRAWLISTITEM) and (WindowInfo <> @DefaultWindowInfo) then + begin + WindowInfo^.DrawItemIndex := PDrawIS^.itemID; + WindowInfo^.DrawItemSelected := (PDrawIS^.itemState and ODS_SELECTED) = ODS_SELECTED; + end; + WinProcess := false; + end; +end; + +procedure TWindowProcHelper.UpdateDrawItems; +begin + with TLMDrawItems(LMessage) do + begin + Msg := LM_DRAWITEM; + Ctl := 0; + DrawItemStruct := PDrawItemStruct(LParam); + end; + WinProcess := false; +end; + +procedure TWindowProcHelper.DoMsgDrawItem; +var + menuItem: TObject; + PDrawIS: PDrawItemStruct; +begin + PDrawIS := PDrawItemStruct(LParam); + if (WParam = 0) and (PDrawIS^.ctlType = ODT_MENU) then + begin + menuItem := TObject(PDrawIS^.itemData); + if menuItem is TMenuItem then + DrawMenuItem(TMenuItem(menuItem), + PDrawIS^._hDC, PDrawIS^.rcItem, PDrawIS^.itemAction, PDrawIS^.itemState); + UpdateDrawItems; + end + else + begin + WindowInfo := GetWin32WindowInfo(PDrawIS^.hwndItem); + if WindowInfo^.WinControl<>nil then + lWinControl := WindowInfo^.WinControl; + {$IFDEF MSG_DEBUG} + debugln(format('Received WM_DRAWITEM type %d handle %x', + [PDrawIS^.ctlType, integer(PDrawIS^.hwndItem)])); + {$ENDIF} + + if (lWinControl<>nil) and + (((lWinControl is TCustomListbox) and + (TCustomListBox(lWinControl).Style <> lbStandard)) or + ((lWinControl is TCustomCombobox) and + ((TCustomCombobox(lWinControl).Style = csOwnerDrawFixed) or + (TCustomCombobox(lWinControl).Style = csOwnerDrawVariable)))) + then + UpdateDrawListItem(LM_DRAWLISTITEM) + else + if (lWinControl <> nil) and (lWinControl is TListView) and + (TListView(lWinControl).ViewStyle = vsReport) and + (PDrawIS^.ctlType = ODT_LISTVIEW) and + (TListView(lWinControl).OwnerDraw) + then + UpdateDrawListItem(CN_DRAWITEM) + else + UpdateDrawItems; + end; +end; + +procedure TWindowProcHelper.DoMsgEnable; +begin + if WParam <> 0 Then + LMessage.Msg := LM_SETEDITABLE; + if Window = Win32WidgetSet.AppHandle then + if WParam = 0 then + begin + RemoveStayOnTopFlags(Window); + DisabledForms := Screen.DisableForms(nil, DisabledForms); + end + else begin + RestoreStayOnTopFlags(Window); + Screen.EnableForms(DisabledForms); + end; + + // disable child windows of for example groupboxes, but not of forms + if Assigned(lWinControl) and not (lWinControl is TCustomForm) then + EnableChildWindows(lWinControl, WParam<>0); + + // ugly hack to give bitbtns a nice look + // When no theming active, the internal image needs to be + // recreated when the enabled state is changed + if not ThemeServices.ThemesEnabled and (lWinControl is TCustomBitBtn) then + DrawBitBtnImage(TCustomBitBtn(lWinControl), TCustomBitBtn(lWinControl).Caption); +end; + +function TWindowProcHelper.DoMsgEraseBkgnd(var WinResult: LResult): Boolean; +var + eraseBkgndCommand: TEraseBkgndCommand; +begin + eraseBkgndCommand := TEraseBkgndCommand(EraseBkgndStack and EraseBkgndStackMask); +{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} + DebugLnEnter(['>>> Do WM_ERASEBKGND for WParam= ', WParam, ' LParam=',LParam, + ' CurDbleBuffer.DC=', dbgs(CurDoubleBuffer.DC), ' Window=', dbgs(Window), + ' WinCtrl=',PtrUInt(lWinControl), ' ', DbgSName(lWinControl), + ' isTab=', dbgs(WindowInfo^.isTabPage) ]); + try + case eraseBkgndCommand of + ecDefault: DebugLn(MessageStackDepth, ' *command: default'); + ecDiscardNoRemove, ecDiscard: DebugLn(MessageStackDepth, ' *command: completely ignore'); + ecDoubleBufferNoRemove: DebugLn(MessageStackDepth, ' *command: use double buffer'); + end; + DebugLn(MessageStackDepth, ' *erasebkgndstack: ', EraseBkgndStackToString); +{$endif} + if eraseBkgndCommand = ecDoubleBufferNoRemove then + begin + if CurDoubleBuffer.DC <> 0 then + WParam := Windows.WParam(CurDoubleBuffer.DC); + if WindowInfo^.isTabPage then + EraseBkgndStack := (EraseBkgndStack and not ((1 shl EraseBkgndStackShift)-1)) + or dword(ecDiscardNoRemove); + end + else + if eraseBkgndCommand <> ecDiscardNoRemove then + EraseBkgndStack := EraseBkgndStack shr EraseBkgndStackShift; + if eraseBkgndCommand in [ecDiscard, ecDiscardNoRemove] then + begin + WinResult := 0; + Exit(True); + end; + if not GetNeedParentPaint(WindowInfo, lWinControl) or (eraseBkgndCommand = ecDoubleBufferNoRemove) then + begin +{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} + DebugLn(['WM_ERASEBKGND *NO* ParentPaint for WParam= ', WParam, ' LParam=',LParam, ' Window=', dbgs(Window) ]); +{$endif} + SetLMessageAndParams(LM_ERASEBKGND); + end else + begin +{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} + DebugLn(['WM_ERASEBKGND got NeedParentPaint for WParam= ', WParam, ' LParam=',LParam, ' Window=', dbgs(Window) ]); +{$endif} + if not ThemeServices.ThemesEnabled then + SendPaintMessage(HDC(WParam)); + LMessage.Result := 1; + end; + WinProcess := False; +{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} + finally + DebugLnExit(['<<< Do WM_ERASEBKGND for WParam= ', WParam, ' LParam=',LParam, + ' Window=', dbgs(Window), ' MsgStackDepth=', MessageStackDepth, ' *erasebkgndstack: ', EraseBkgndStackToString + ]); + end; +{$endif} + Result := False; +end; + +procedure TWindowProcHelper.DoMsgKeyDownUp(aMsg: Cardinal; var WinResult: LResult); +begin + NotifyUserInput := True; + PLMsg := @LMKey; + UpdateUIState(Word(WParam)); + SetLMKeyData(aMsg, True); + WinResult := 0; + WinProcess := false; +end; + +procedure TWindowProcHelper.DoMsgLButtonCommon; +begin + MouseDownTime := GetTickCount64; + NotifyUserInput := True; + PLMsg := @LMMouse; + with LMMouse Do + begin + case MouseDownCount of + 2: Msg := LM_LBUTTONDBLCLK; + 3: Msg := LM_LBUTTONTRIPLECLK; + 4: Msg := LM_LBUTTONQUADCLK; + else Msg := LM_LBUTTONDOWN; + end; + XPos := GET_X_LPARAM(LParam); + YPos := GET_Y_LPARAM(LParam); + Keys := WParam; + end; +end; + +procedure TWindowProcHelper.DoMsgLButtonDoubleClick; +begin + // always within the time-window + if (MouseDownCount < 1) or (MouseDownCount > 4) then + MouseDownCount := 1; + inc(MouseDownCount); + DoMsgLButtonCommon; +end; + +procedure TWindowProcHelper.DoMsgLButtonDown; +begin + if (MouseDownCount < 1) or (MouseDownCount > 4) then + MouseDownCount := 1; + if (MouseDownWindow = Window) + and (GetTickCount64 - MouseDownTime <= GetDoubleClickTime) + and CheckMouseMovement then + inc(MouseDownCount) + else + MouseDownCount := 1; + MouseDownWindow := Window; + GetCursorPos(MouseDownPos); + DoMsgLButtonCommon; +end; + +procedure TWindowProcHelper.DoMsgMouseUpDownClick(aMsg: Cardinal); +begin + NotifyUserInput := True; + PLMsg := @LMMouse; + with LMMouse Do + begin + Msg := aMsg; + XPos := GET_X_LPARAM(LParam); + YPos := GET_Y_LPARAM(LParam); + Keys := WParam; + end; +end; + +procedure TWindowProcHelper.DoMsgContextMenu; +begin + WinProcess := False; + NotifyUserInput := True; + PLMsg := @LMContextMenu; + with LMContextMenu do + begin + Msg := LM_CONTEXTMENU; + XPos := GET_X_LPARAM(LParam); + YPos := GET_Y_LPARAM(LParam); + hWnd := Window; + end; +end; + +procedure TWindowProcHelper.DoMsgMouseMove; +begin + NotifyUserInput := True; + PLMsg := @LMMouseMove; + with LMMouseMove Do + begin + Msg := LM_MOUSEMOVE; + XPos := GET_X_LPARAM(LParam); + YPos := GET_Y_LPARAM(LParam); + Keys := WParam; + // check if this is a spurious WM_MOUSEMOVE message, pos not actually changed + if (XPos = WindowInfo^.MouseX) and (YPos = WindowInfo^.MouseY) then + begin + // do not fire message after all (position not changed) + Msg := LM_NULL; + NotifyUserInput := false; + end else + if WindowInfo <> @DefaultWindowInfo then + begin + // position changed, update window info + WindowInfo^.MouseX := XPos; + WindowInfo^.MouseY := YPos; + end; + end; +end; + +function TWindowProcHelper.DoMsgMouseWheel(var WinResult: LResult): Boolean; +var + TargetWindow: HWND; + P: TPoint; +begin + NotifyUserInput := True; + PLMsg := @LMMouseEvent; + with LMMouseEvent Do + begin + X := GET_X_LPARAM(LParam); + Y := GET_Y_LPARAM(LParam); + // check if mouse cursor within this window, otherwise send message to + // window the mouse is hovering over + P.X := X; + P.Y := Y; + TargetWindow := Win32WidgetSet.WindowFromPoint(P); + //fallback to LCL function to get the actual window + if TargetWindow = 0 then + TargetWindow := GetLCLWindowFromPoint(lWinControl, P); + if (TargetWindow = 0) or not IsWindowEnabled(TargetWindow) then + Exit(True); + + // check if the window is an edit control of a combobox, if so, + // redirect it to the combobox, not the edit control + if GetWin32WindowInfo(TargetWindow)^.isComboEdit then + TargetWindow := Windows.GetParent(TargetWindow); + + // check InMouseWheelRedirection to prevent recursion + if not InMouseWheelRedirection and (TargetWindow <> Window) then + begin + InMouseWheelRedirection := true; + WinResult := SendMessage(TargetWindow, WM_MOUSEWHEEL, WParam, LParam); + InMouseWheelRedirection := false; + Exit(True); + end + else if TargetWindow <> Window then + Exit(True); + // the mousewheel message is for us + Msg := LM_MOUSEWHEEL; + Windows.ScreenToClient(TargetWindow, P); + X := P.X; + Y := P.Y; + Button := LOWORD(Integer(WParam)); + WheelDelta := SmallInt(HIWORD(Integer(WParam))); + State := KeysToShiftState(Button); + WinResult := 0; + UserData := Pointer(GetWindowLong(Window, GWL_USERDATA)); + WinProcess := false; + end; + Result := False; +end; + +procedure TWindowProcHelper.DoMsgNCLButtonDown; +begin + SetLMessageAndParams(Msg); + NotifyUserInput := True; + + //Drag&Dock support TCustomForm => Start BeginDrag() + if (lWinControl <> nil) and not (csDesigning in lWinControl.ComponentState) then + begin + if WParam = HTCAPTION then + if lWinControl is TCustomForm then + if (TWinControlAccess(lWinControl).DragKind = dkDock) + and (TWinControlAccess(lWinControl).DragMode = dmAutomatic) then + lWinControl.BeginDrag(true); + end; + // I see no other way to prevent crash at moment. This message calls WM_CLOSE + // which frees our form and we get a destructed lWinControl + lWinControl := nil; +end; + +function TWindowProcHelper.DoMsgNotify(var WinResult: LResult): Boolean; +begin + WindowInfo := GetWin32WindowInfo(PNMHdr(LParam)^.hwndFrom); +{$ifdef MSG_DEBUG} + DebugLn([MessageStackDepth, 'Notify code: ', PNMHdr(LParam)^.code]); +{$endif} + if Assigned(WindowInfo^.ParentMsgHandler) then + begin + LMNotify.Result := 0; + if WindowInfo^.ParentMsgHandler(WindowInfo^.WinControl, + Window, WM_NOTIFY, WParam, LParam, LMNotify.Result, WinProcess) then + begin + WinResult := LMNotify.Result; + Exit(True); + end; + end; + case PNMHdr(LParam)^.code of + MCN_SELCHANGE: + begin + LMessage.Msg := LM_CHANGED; + if WindowInfo^.WinControl <> nil then + lWinControl := WindowInfo^.WinControl; + end; + else + PLMsg:=@LMNotify; + LMNotify.Msg := LM_NOTIFY; + LMNotify.IDCtrl := WParam; + LMNotify.NMHdr := PNMHDR(LParam); + case LMNotify.NMHdr^.code of + NM_CUSTOMDRAW: begin - {$IFDEF WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - L := DragQueryFileW(Drop, I, nil, 0); // get I. file name length - SetLength(WideBuffer, L); - L := DragQueryFileW(Drop, I, @WideBuffer[1], L + 1); - SetLength(WideBuffer, L); - Files[I] := UTF16ToUTF8(WideBuffer); - end + if WindowInfo^.WinControl is TCustomBitBtn then + HandleBitBtnCustomDraw(TCustomBitBtn(WindowInfo^.WinControl)) else + if GetNeedParentPaint(WindowInfo, lWinControl) and WindowInfo^.ThemedCustomDraw then begin - L := DragQueryFile(Drop, I, nil, 0); // get I. file name length - SetLength(AnsiBuffer, L); - L := DragQueryFile(Drop, I, @AnsiBuffer[1], L + 1); - SetLength(WideBuffer, L); - Files[I] := ANSIToUTF8(AnsiBuffer); + case PNMCustomDraw(LParam)^.dwDrawStage of + CDDS_PREPAINT: + begin + WinResult := CDRF_NOTIFYITEMDRAW; + WinProcess := false; + end; + CDDS_ITEMPREPAINT: + begin + WinResult := CDRF_DODEFAULT; + WinProcess := false; + end; + end; end; - {$ELSE} - L := DragQueryFile(Drop, I, nil, 0); // get I. file name length - SetLength(Files[I], L); - DragQueryFile(Drop, I, PChar(Files[I]), L + 1); - {$ENDIF} end; + end; + end; + Result := False; +end; - if Length(Files) > 0 then +procedure TWindowProcHelper.DoMsgShowWindow; +var + Flags: dword; +begin + with TLMShowWindow(LMessage) Do + begin + Msg := LM_SHOWWINDOW; + Show := WParam <> 0; + Status := LParam; + end; + if Assigned(lWinControl) and ((WParam <> 0) or not lWinControl.Visible) and + ((WParam = 0) or lWinControl.Visible) and Assigned(Application) and + (lWinControl = Application.MainForm) and not Application.MainFormOnTaskBar then + begin + if WParam=0 then + Flags := SW_HIDE + else + Flags := SW_SHOWNOACTIVATE; + Windows.ShowWindow(Win32WidgetSet.AppHandle, Flags); + end; +end; + +procedure TWindowProcHelper.DoMsgSysKey(aMsg: Cardinal); +begin + NotifyUserInput := True; + PLMsg := @LMKey; + SetLMKeyData(aMsg, True); + WinProcess := false; +end; + +procedure TWindowProcHelper.DoMsgMeasureItem; +var + menuItem: TObject; + menuHDC: HDC; + TmpSize: TSize; // used by WM_MEASUREITEM +begin + case PMeasureItemStruct(LParam)^.CtlType of + ODT_MENU: begin - DropForm := lWinControl.IntfGetDropFilesTarget; - if DropForm is TCustomForm then - TCustomForm(DropForm).IntfDropFiles(Files); - if Application <> nil then - Application.IntfDropFiles(Files); + menuItem := TObject(PMeasureItemStruct(LParam)^.itemData); + if menuItem is TMenuItem then + begin + menuHDC := GetDC(Window); + TmpSize := MenuItemSize(TMenuItem(menuItem), menuHDC); + PMeasureItemStruct(LParam)^.itemWidth := TmpSize.cx; + PMeasureItemStruct(LParam)^.itemHeight := TmpSize.cy; + ReleaseDC(Window, menuHDC); + Winprocess := False; + end + {$ifdef MSG_DEBUG} + else + DebugLn('WM_MEASUREITEM for a menuitem catched but menuitem is not TmenuItem'); + {$endif} end; - finally - DragFinish(Drop); + else + if WParam <> 0 then + begin + lWinControl := TWinControl(WParam); + //if Assigned(lWinControl) then <- already tested + SetLMessageAndParams(LM_MEASUREITEM, True); end; end; +end; - // Gets the cursor position relative to a given window - function GetClientCursorPos(ClientWindow: HWND) : TSmallPoint; - var - P: TPoint; +procedure TWindowProcHelper.DoMsgActivateApp; +begin + if Window = Win32WidgetSet.AppHandle then + begin + if WParam <> 0 then // activated + begin + //WriteLn('Restore'); + RestoreStayOnTopFlags(Window); + if Assigned(Application) then + Application.IntfAppActivate(True); + end + else begin // deactivated + //WriteLn('Remove'); + RemoveStayOnTopFlags(Window); + if Assigned(Application) then + Application.IntfAppDeactivate(True); + end; + end; +end; + +procedure TWindowProcHelper.UpdateLMMovePos(X, Y: Smallint); +begin + LMMove.XPos := X; + LMMove.YPos := Y; +end; + +function TWindowProcHelper.DoMsgMove: Boolean; +var + NewLeft, NewTop: integer; + WindowPlacement: TWINDOWPLACEMENT; + R: TRect; +begin + PLMsg := @LMMove; + LMMove.Msg := LM_MOVE; + // MoveType := WParam; WParam is not defined! + LMMove.MoveType := Move_SourceIsInterface; + if GetWindowLong(Window, GWL_STYLE) and WS_CHILD = 0 then + begin + WindowPlacement.length := SizeOf(WindowPlacement); + if IsIconic(Window) and GetWindowPlacement(Window, @WindowPlacement) then + UpdateLMMovePos(WindowPlacement.rcNormalPosition.Left, + WindowPlacement.rcNormalPosition.Top) + else if Windows.GetWindowRect(Window, @R) then + UpdateLMMovePos(R.Left, R.Top) + else + LMMove.Msg := LM_NULL; + end else begin - Windows.GetCursorPos(P); - //if the mouse is not over the window is better to set to 0 to avoid weird behaviors - if Windows.WindowFromPoint(P) = ClientWindow then - Windows.ScreenToClient(ClientWindow, P) + if GetWindowRelativePosition(Window, NewLeft, NewTop) then + UpdateLMMovePos(NewLeft, NewTop) else - begin - P.X:=0; - P.Y:=0; - end; - Result := PointToSmallPoint(P); + LMMove.Msg := LM_NULL; end; - - // returns false if the UnicodeChar is not handled - function HandleUnicodeChar(var AChar: Word): boolean; - var - OldUTF8Char, UTF8Char: TUTF8Char; - WS: WideString; + if lWinControl <> nil then begin - Result := False; - UTF8Char := UTF16ToUTF8(WideString(WideChar(AChar))); - OldUTF8Char := UTF8Char; - if Assigned(lWinControl) then - begin - // if somewhere key is changed to '' then don't process this message - WinProcess := not lWinControl.IntfUTF8KeyPress(UTF8Char, 1, False); - // if somewhere key is changed then don't perform a regular keypress - Result := not WinProcess or (UTF8Char <> OldUTF8Char); - if UTF8Char <> OldUTF8Char then - begin - WS := UTF8ToUTF16(UTF8Char); - if Length(WS) > 0 then - AChar := Word(WS[1]) - else - AChar := 0; - end; - end; + {$IFDEF VerboseSizeMsg} + with LMMove Do begin + DebugLn('Win32CallBack WM_MOVE ', dbgsName(lWinControl), + ' NewPos=',dbgs(XPos),',',dbgs(YPos)); + end; + {$ENDIF} + if (lWinControl.Left = LMMove.XPos) and (lWinControl.Top = LMMove.YPos) then + Exit(True); end; + Result := False; +end; - procedure UpdateUIState(CharCode: Word); - // This piece of code is taken from ThemeMgr.pas of Mike Lischke - // Beginning with Windows 2000 the UI in an application may hide focus rectangles and accelerator key indication. - // We have to take care to show them if the user starts navigating using the keyboard. +procedure TWindowProcHelper.DoMsgSize; +var + NewWidth, NewHeight: integer; + OverlayWindow: HWND; +{$IFDEF VerboseSizeMsg} + R: TRect; +{$ENDIF} +begin + with TLMSize(LMessage) do + begin + Msg := LM_SIZE; + SizeType := WParam or Size_SourceIsInterface; - function FindParentForm: TCustomForm; inline; - begin - if lWinControl <> nil then - Result := GetParentForm(lWinControl) + // this is needed since we don't minimize the main form window + // we only hide and show it back on mimize and restore in case MainFormOnTaskbar = False + if (Window = Win32WidgetSet.AppHandle) and + Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then + begin + lWinControl := Application.MainForm; + Window := Application.MainFormHandle; + // lie LCL about the window state + if IsIconic(Win32WidgetSet.AppHandle) then + SizeType := SIZE_MINIMIZED or Size_SourceIsInterface else - if Application <> nil then - Result := Application.MainForm + if IsZoomed(Window) then + SizeType := SIZE_MAXIMIZED or Size_SourceIsInterface else - Result := nil; + SizeType := SIZE_RESTORED or Size_SourceIsInterface; end; - var - ParentForm: TCustomForm; - begin - case CharCode of - VK_LEFT..VK_DOWN, VK_TAB: - begin - ParentForm := FindParentForm; - if ParentForm <> nil then - SendMessage(ParentForm.Handle, WM_CHANGEUISTATE, MakeLong(UIS_CLEAR, UISF_HIDEFOCUS), 0); - end; - VK_MENU: - begin - ParentForm := FindParentForm; - if ParentForm <> nil then - SendMessage(ParentForm.Handle, WM_CHANGEUISTATE, MakeLong(UIS_CLEAR, UISF_HIDEACCEL), 0); - end; + GetWindowSize(Window, NewWidth, NewHeight); + Width := NewWidth; + Height := NewHeight; + if Assigned(lWinControl) then + begin + {$IFDEF VerboseSizeMsg} + GetClientRect(Window,R); + DebugLn('Win32Callback: WM_SIZE '+ dbgsName(lWinControl)+ + ' NewSize=', dbgs(Width)+','+dbgs(Height)+ + ' HasVScroll='+dbgs((GetWindowLong(Window, GWL_STYLE) and WS_VSCROLL) <> 0)+ + ' HasHScroll='+dbgs((GetWindowLong(Window, GWL_STYLE) and WS_HSCROLL) <> 0)+ + ' OldClientSize='+dbgs(lWinControl.CachedClientWidth)+','+dbgs(lWinControl.CachedClientHeight)+ + ' NewClientSize='+dbgs(R.Right)+','+dbgs(R.Bottom)); + {$ENDIF} + lWinControl.InvalidateClientRectCache(false); end; + OverlayWindow := GetWin32WindowInfo(Window)^.Overlay; + if OverlayWindow <> 0 then + Windows.SetWindowPos(OverlayWindow, HWND_TOP, 0, 0, NewWidth, NewHeight, SWP_NOMOVE); end; +end; +// This is called from the actual WindowProc. + +function TWindowProcHelper.DoWindowProc: LResult; +var + ChildWindowInfo: PWin32WindowInfo; + TargetObject: TObject; + TargetWindow: HWND; + WmSysCommandProcess: Boolean; + CancelEndSession : Boolean; // used by WM_QUERYENDSESSION + // used by WM_CHAR, WM_SYSCHAR and WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP + CharCodeNotEmpty: boolean; + R: TRect; begin FillChar(LMessage, SizeOf(LMessage), 0); PLMsg := @LMessage; @@ -1127,54 +1923,7 @@ WindowInfo := GetWin32WindowInfo(Window); if WindowInfo^.isChildEdit then begin - // combobox child edit weirdness - // prevent combobox WM_SIZE message to get/set/compare text to list, to select text - if IsComboEditSelection then - begin - case Msg of - WM_GETTEXTLENGTH, EM_SETSEL: - begin - Result := 0; - exit; - end; - WM_GETTEXT: - begin - if WParam > 0 then - PChar(LParam)^ := #0; - Result := 0; - exit; - end; - end; - end; - lWinControl := WindowInfo^.AWinControl; - {for ComboBox IME sends WM_IME_NOTIFY with WParam=WM_IME_ENDCOMPOSITION} - if (Msg = WM_IME_NOTIFY) and (WPARAM=WM_IME_ENDCOMPOSITION) then - WindowInfo^.IMEComposed:=True; - - // filter messages we want to pass on to LCL - if (Msg <> WM_KILLFOCUS) and (Msg <> WM_SETFOCUS) - {$ifndef RedirectDestroyMessages}and (Msg <> WM_NCDESTROY){$endif} - and not ((Msg >= WM_CUT) and (Msg <= WM_CLEAR)) - and ((Msg < WM_KEYFIRST) or (Msg > WM_KEYLAST)) - and ((Msg < WM_MOUSEFIRST) or (Msg > WM_MOUSELAST)) then - begin - Result := CallDefaultWindowProc(Window, Msg, WParam, LParam); - exit; - end - else - if (Msg = WM_KILLFOCUS) or (Msg = WM_SETFOCUS) then - begin - // if focus jumps inside combo then no need to notify LCL - Info.cbSize := SizeOf(Info); - Win32Extra.GetComboBoxInfo(lWinControl.Handle, @Info); - if (HWND(WParam) = Info.hwndList) or - (HWND(WParam) = Info.hwndItem) or - (HWND(WParam) = Info.hwndCombo) then - begin - Result := CallDefaultWindowProc(Window, Msg, WParam, LParam); - exit; - end; - end; + if DoChildEdit(Result) then Exit; end else begin lWinControl := WindowInfo^.WinControl; end; @@ -1197,65 +1946,16 @@ TWin32Widgetset(Widgetset).CheckPipeEvents; end; WM_ENTERIDLE: Application.Idle(False); - WM_ACTIVATE: - begin - LMessage.Msg := LM_ACTIVATE; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - end; + WM_ACTIVATE: SetLMessageAndParams(LM_ACTIVATE); WM_IME_ENDCOMPOSITION: begin {IME Windows the composition has finished} WindowInfo^.IMEComposed:=True; - LMessage.Msg := Msg; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - //WinProcess := False; - end; - WM_CANCELMODE: - begin - LMessage.Msg := LM_CANCELMODE; - end; - WM_CAPTURECHANGED: - begin - LMessage.Msg := LM_CAPTURECHANGED; - end; - WM_CHAR: - begin - {$ifdef WindowsUnicodeSupport} - // first send a IntfUTF8KeyPress to the LCL - // if the key was not handled send a CN_CHAR for AnsiChar<=#127 - OrgCharCode := Word(WParam); - if not HandleUnicodeChar(OrgCharCode) then - begin - PLMsg := @LMChar; - with LMChar do - begin - Msg := CN_CHAR; - KeyData := LParam; - if UnicodeEnabledOS then - CharCode := Word(Char(WideChar(WParam))) - else - CharCode := Word(WParam); - OrgCharCode := CharCode; - Result := 0; - end; - WinProcess := false; - end - else - WParam := OrgCharCode; - {$else} - PLMsg:=@LMChar; - with LMChar do - begin - Msg := CN_CHAR; - KeyData := LParam; - CharCode := Word(WParam); - Result := 0; - end; - WinProcess := false; - {$endif} + SetLMessageAndParams(Msg); //WinProcess := False; end; + WM_CANCELMODE: LMessage.Msg := LM_CANCELMODE; + WM_CAPTURECHANGED: LMessage.Msg := LM_CAPTURECHANGED; + WM_CHAR: DoMsgChar(Result); WM_MENUCHAR: begin @@ -1328,37 +2028,8 @@ // TToggleBox is a TCustomCheckBox too, but we don't want to handle // state changes of TToggleBox ourselfves if (lWinControl is TCustomCheckBox) and not (lWinControl is TToggleBox) then - begin - case HIWORD(WParam) of - BN_CLICKED: - begin - // to allow cbGrayed state at the same time as not AllowGrayed - // in checkboxes (needed by dbcheckbox for null fields) we need - // to handle checkbox state ourselves, according to msdn state - // sequence goes from checked->cleared->grayed etc. - Flags := SendMessage(lWinControl.Handle, BM_GETCHECK, 0, 0); - //do not update the check state if is TRadioButton and is already checked - if (Flags <> BST_CHECKED) or not (lWinControl is TRadioButton) then - begin - if (Flags=BST_CHECKED) then - Flags := BST_UNCHECKED - else - if (Flags=BST_UNCHECKED) and - TCustomCheckbox(lWinControl).AllowGrayed then - Flags := BST_INDETERMINATE - else - Flags := BST_CHECKED; - //pass 0 through LParam to force sending LM_CHANGE - Windows.SendMessage(lWinControl.Handle, BM_SETCHECK, - Windows.WPARAM(Flags), 0); - end; - LMessage.Msg := LM_CLICKED; - end; - BN_KILLFOCUS: - LMessage.Msg := LM_EXIT; - end - end else - if lWinControl is TButtonControl then + DoCmdCheckBoxParam + else if lWinControl is TButtonControl then case HIWORD(WParam) of BN_CLICKED: LMessage.Msg := LM_CLICKED; BN_KILLFOCUS: LMessage.Msg := LM_EXIT; @@ -1381,28 +2052,7 @@ LBN_SELCHANGE: LMessage.Msg := LM_SELCHANGE; end else if lWinControl is TCustomCombobox then - case HIWORD(WParam) of - CBN_DROPDOWN: TCustomCombobox(lWinControl).IntfGetItems; - CBN_EDITCHANGE: LMessage.Msg := LM_CHANGED; - { CBN_EDITCHANGE is only sent after the user changes the edit box. - CBN_SELCHANGE is sent when the user changes the text by - selecting in the list, but before text is actually changed. - itemindex is updated, so set text manually } - CBN_SELCHANGE: - begin - if TCustomComboBox(lWinControl).Style in [csSimple, csDropDown] then - UpdateComboBoxText(TCustomComboBox(lWinControl)); - SendSimpleMessage(lWinControl, LM_CHANGED); - LMessage.Msg := LM_SELCHANGE; - end; - CBN_CLOSEUP: - begin - // according to msdn CBN_CLOSEUP can happen before CBN_SELCHANGE and - // unfortunately it is simple truth. but we need correct order in the LCL - PostMessage(lWinControl.Handle, CN_COMMAND, WParam, LParam); - Exit; - end; - end; + if DoCmdComboBoxParam then Exit; end; // no specific message found? try send a general msg @@ -1418,64 +2068,14 @@ // others need to erased with their window color // scrollbar also has buttons ChildWindowInfo := GetWin32WindowInfo(HWND(LParam)); - if Assigned(ChildWindowInfo^.ParentMsgHandler) then - begin - if ChildWindowInfo^.ParentMsgHandler(lWinControl, - Window, Msg, WParam, LParam, LMessage.Result, WinProcess) then Exit(LMessage.Result); - end; - WindowDC := HDC(WParam); - ChildWinControl := ChildWindowInfo^.WinControl; - if ChildWinControl = nil then - ChildWinControl := ChildWindowInfo^.AWinControl; - - case Msg of - WM_CTLCOLORSTATIC, - WM_CTLCOLORBTN: begin - if GetNeedParentPaint(ChildWindowInfo, ChildWinControl) and - not ChildWindowInfo^.ThemedCustomDraw then - begin - // need to draw transparently, draw background - DrawParentBackground(HWND(LParam), WindowDC); - LMessage.Result := GetStockObject(HOLLOW_BRUSH); - SetBkMode(WindowDC, TRANSPARENT); - WinProcess := false; - end; - end; - WM_CTLCOLORSCROLLBAR: begin - WinProcess := false; - end; - end; - - if WinProcess then - begin - if ChildWinControl <> nil then - begin - WindowColor := ChildWinControl.Font.Color; - if WindowColor = clDefault then - WindowColor := ChildWinControl.GetDefaultColor(dctFont); - Windows.SetTextColor(WindowDC, ColorToRGB(WindowColor)); - WindowColor := ChildWinControl.Brush.Color; - if WindowColor = clDefault then - WindowColor := ChildWinControl.GetDefaultColor(dctBrush); - Windows.SetBkColor(WindowDC, ColorToRGB(WindowColor)); - LMessage.Result := LResult(ChildWinControl.Brush.Reference.Handle); - // Override default handling - WinProcess := false; - end; - end; - end; - WM_CLEAR: - begin - LMessage.Msg := LM_CLEAR; - end; - WM_COPY: - begin - LMessage.Msg := LM_COPY; - end; - WM_CUT: - begin - LMessage.Msg := LM_CUT; - end; + if Assigned(ChildWindowInfo^.ParentMsgHandler) + and ChildWindowInfo^.ParentMsgHandler(lWinControl, + Window, Msg, WParam, LParam, LMessage.Result, WinProcess) then Exit(LMessage.Result); + DoMsgColor(ChildWindowInfo); + end; + WM_CLEAR: LMessage.Msg := LM_CLEAR; + WM_COPY: LMessage.Msg := LM_COPY; + WM_CUT: LMessage.Msg := LM_CUT; {$ifndef RedirectDestroyMessages} WM_DESTROY: begin @@ -1499,178 +2099,10 @@ LMessage.Result := 0; end; end; - WM_DRAWITEM: - begin - if (WParam = 0) and (PDrawItemStruct(LParam)^.ctlType = ODT_MENU) then - begin - menuItem := TObject(PDrawItemStruct(LParam)^.itemData); - if menuItem is TMenuItem then - begin - DrawMenuItem(TMenuItem(menuItem), PDrawItemStruct(LParam)^._hDC, - PDrawItemStruct(LParam)^.rcItem, - PDrawItemStruct(LParam)^.itemAction, - PDrawItemStruct(LParam)^.itemState); - end; - with TLMDrawItems(LMessage) do - begin - Msg := LM_DRAWITEM; - Ctl := 0; - DrawItemStruct := PDrawItemStruct(LParam); - end; - WinProcess := false; - end - else - begin - WindowInfo := GetWin32WindowInfo(PDrawItemStruct(LParam)^.hwndItem); - if WindowInfo^.WinControl<>nil then - lWinControl := WindowInfo^.WinControl; - {$IFDEF MSG_DEBUG} - with PDrawItemStruct(LParam)^ do - debugln(format('Received WM_DRAWITEM type %d handle %x', [ctlType, integer(hwndItem)])); - {$ENDIF} - - if (lWinControl<>nil) and - (((lWinControl is TCustomListbox) and - (TCustomListBox(lWinControl).Style <> lbStandard)) or - ((lWinControl is TCustomCombobox) and - ((TCustomCombobox(lWinControl).Style = csOwnerDrawFixed) or - (TCustomCombobox(lWinControl).Style = csOwnerDrawVariable)))) then - begin - if PDrawItemStruct(LParam)^.itemID <> dword(-1) then - begin - LMessage.Msg := LM_DRAWLISTITEM; - TLMDrawListItem(LMessage).DrawListItemStruct := @DrawListItemStruct; - with DrawListItemStruct do - begin - ItemID := PDrawItemStruct(LParam)^.itemID; - Area := PDrawItemStruct(LParam)^.rcItem; - ItemState := TOwnerDrawState(PDrawItemStruct(LParam)^.itemState); - DC := PDrawItemStruct(LParam)^._hDC; - end; - if WindowInfo <> @DefaultWindowInfo then - begin - WindowInfo^.DrawItemIndex := PDrawItemStruct(LParam)^.itemID; - WindowInfo^.DrawItemSelected := (PDrawItemStruct(LParam)^.itemState - and ODS_SELECTED) = ODS_SELECTED; - end; - WinProcess := false; - end; - end else - if (lWinControl <> nil) and (lWinControl is TListView) and - (TListView(lWinControl).ViewStyle = vsReport) and - (PDrawItemStruct(LParam)^.ctlType = ODT_LISTVIEW) and - (TListView(lWinControl).OwnerDraw) then - begin - if PDrawItemStruct(LParam)^.itemID <> dword(-1) then - begin - LMessage.Msg := CN_DRAWITEM; - TLMDrawListItem(LMessage).DrawListItemStruct := @DrawListItemStruct; - with DrawListItemStruct do - begin - ItemID := PDrawItemStruct(LParam)^.itemID; - Area := PDrawItemStruct(LParam)^.rcItem; - ItemState := TOwnerDrawState(PDrawItemStruct(LParam)^.itemState); - DC := PDrawItemStruct(LParam)^._hDC; - end; - WinProcess := false; - end; - end else - begin - with TLMDrawItems(LMessage) do - begin - Msg := LM_DRAWITEM; - Ctl := 0; - DrawItemStruct := PDrawItemStruct(LParam); - end; - WinProcess := false; - end; - end; - end; - WM_ENABLE: - begin - if WParam <> 0 Then - LMessage.Msg := LM_SETEDITABLE; - if Window = Win32WidgetSet.AppHandle then - if WParam = 0 then - begin - RemoveStayOnTopFlags(Window); - DisabledForms := Screen.DisableForms(nil, DisabledForms); - end - else - begin - RestoreStayOnTopFlags(Window); - Screen.EnableForms(DisabledForms); - end; - - // disable child windows of for example groupboxes, but not of forms - if Assigned(lWinControl) and not (lWinControl is TCustomForm) then - EnableChildWindows(lWinControl, WParam<>0); - - // ugly hack to give bitbtns a nice look - // When no theming active, the internal image needs to be - // recreated when the enabled state is changed - if not ThemeServices.ThemesEnabled - and (lWinControl is TCustomBitBtn) - then DrawBitBtnImage(TCustomBitBtn(lWinControl), TCustomBitBtn(lWinControl).Caption); - end; + WM_DRAWITEM: DoMsgDrawItem; + WM_ENABLE: DoMsgEnable; WM_ERASEBKGND: - begin - eraseBkgndCommand := TEraseBkgndCommand(EraseBkgndStack and EraseBkgndStackMask); -{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} - DebugLnEnter(['>>> Do WM_ERASEBKGND for WParam= ', WParam, ' LParam=',LParam, - ' CurDbleBuffer.DC=', dbgs(CurDoubleBuffer.DC), ' Window=', dbgs(Window), - ' WinCtrl=',PtrUInt(lWinControl), ' ', DbgSName(lWinControl), - ' isTab=', dbgs(WindowInfo^.isTabPage) ]); - try - case eraseBkgndCommand of - ecDefault: DebugLn(MessageStackDepth, ' *command: default'); - ecDiscardNoRemove, ecDiscard: DebugLn(MessageStackDepth, ' *command: completely ignore'); - ecDoubleBufferNoRemove: DebugLn(MessageStackDepth, ' *command: use double buffer'); - end; - DebugLn(MessageStackDepth, ' *erasebkgndstack: ', EraseBkgndStackToString); -{$endif} - if eraseBkgndCommand = ecDoubleBufferNoRemove then - begin - if CurDoubleBuffer.DC <> 0 then - WParam := Windows.WParam(CurDoubleBuffer.DC); - if WindowInfo^.isTabPage then - EraseBkgndStack := (EraseBkgndStack and not ((1 shl EraseBkgndStackShift)-1)) - or dword(ecDiscardNoRemove); - end - else - if eraseBkgndCommand <> ecDiscardNoRemove then - EraseBkgndStack := EraseBkgndStack shr EraseBkgndStackShift; - if eraseBkgndCommand in [ecDiscard, ecDiscardNoRemove] then - begin - Result := 0; - exit; - end; - if not GetNeedParentPaint(WindowInfo, lWinControl) or (eraseBkgndCommand = ecDoubleBufferNoRemove) then - begin -{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} - DebugLn(['WM_ERASEBKGND *NO* ParentPaint for WParam= ', WParam, ' LParam=',LParam, ' Window=', dbgs(Window) ]); -{$endif} - LMessage.Msg := LM_ERASEBKGND; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - end else - begin -{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} - DebugLn(['WM_ERASEBKGND got NeedParentPaint for WParam= ', WParam, ' LParam=',LParam, ' Window=', dbgs(Window) ]); -{$endif} - if not ThemeServices.ThemesEnabled then - SendPaintMessage(HDC(WParam)); - LMessage.Result := 1; - end; - WinProcess := False; -{$if defined(MSG_DEBUG) or defined(DBG_SendPaintMessage)} - finally - DebugLnExit(['<<< Do WM_ERASEBKGND for WParam= ', WParam, ' LParam=',LParam, - ' Window=', dbgs(Window), ' MsgStackDepth=', MessageStackDepth, ' *erasebkgndstack: ', EraseBkgndStackToString - ]); - end; -{$endif} - end; + if DoMsgEraseBkgnd(Result) then Exit; WM_EXITMENULOOP: // is it a popup menu if longbool(WPARAM) and Assigned(WindowInfo^.PopupMenu) then @@ -1681,210 +2113,55 @@ WinProcess := False; end; WM_HELP: + // Don't ask windows to process the message here. It will be processed + // either by TCustomForm LM_HELP handler or passed to parent by DefaultHandler + SetLMessageAndParams(LM_HELP, True); + WM_HOTKEY: + SetLMessageAndParams(WM_HOTKEY, True); + WM_HSCROLL, + WM_VSCROLL: begin - LMessage.Msg := LM_HELP; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - // Don't ask windows to process the message here. It will be processed - // either by TCustomForm LM_HELP handler or passed to parent by DefaultHandler - WinProcess := False; - end; - WM_HOTKEY: - begin - LMessage.Msg := WM_HOTKEY; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - WinProcess := false; - end; - WM_HSCROLL, - WM_VSCROLL: - begin - PLMsg := @LMScroll; - if LParam <> 0 then - begin - ChildWindowInfo := GetWin32WindowInfo(HWND(LParam)); - lWinControl := ChildWindowInfo^.WinControl; - if Assigned(ChildWindowInfo^.ParentMsgHandler) then - begin - if ChildWindowInfo^.ParentMsgHandler(lWinControl, - Window, Msg, WParam, LParam, PLMsg^.Result, WinProcess) then Exit(PLMsg^.Result); - end; - end; - HandleScrollMessage(Msg); - end; - WM_KEYDOWN: - begin - NotifyUserInput := True; - PLMsg := @LMKey; - UpdateUIState(Word(WParam)); - with LMKey Do - begin - Msg := CN_KEYDOWN; - KeyData := LParam; - CharCode := Word(WParam); - Result := 0; - end; - WindowInfo^.IMEComposed:=False; - WinProcess := false; - IgnoreNextCharWindow := Window; - end; - WM_KEYUP: - begin - NotifyUserInput := True; - PLMsg:=@LMKey; - with LMKey Do - begin - Msg := CN_KEYUP; - KeyData := LParam; - CharCode := Word(WParam); - Result := 0; - end; - WinProcess := false; - if WindowInfo^.IMEComposed then - LMKey.Msg:=LM_NULL; - end; - WM_KILLFOCUS: - begin -{$ifdef DEBUG_CARET} - DebugLn(['WM_KILLFOCUS received for window ', IntToHex(Window, 8), ' NewFocus = ', IntToHex(WParam, 8), ' Text = ', WndText(WParam)]); -{$endif} - LMessage.Msg := LM_KILLFOCUS; - LMessage.WParam := WParam; - end; - //TODO:LM_KILLCHAR,LM_KILLWORD,LM_KILLLINE - WM_LBUTTONDBLCLK: - begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - // always within the time-window - if (MouseDownCount < 1) or (MouseDownCount > 4) then MouseDownCount := 1; - inc(MouseDownCount); - MouseDownTime := GetTickCount64; - with LMMouse Do - begin - case MouseDownCount of - 2: Msg := LM_LBUTTONDBLCLK; - 3: Msg := LM_LBUTTONTRIPLECLK; - 4: Msg := LM_LBUTTONQUADCLK; - else Msg := LM_LBUTTONDOWN; - end; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; - end; - WM_LBUTTONDOWN: - begin - if (MouseDownCount < 1) or (MouseDownCount > 4) then MouseDownCount := 1; - if (MouseDownWindow = Window) - and (GetTickCount64 - MouseDownTime <= GetDoubleClickTime) - and CheckMouseMovement then - inc(MouseDownCount) - else - MouseDownCount := 1; - - MouseDownTime := GetTickCount64; - MouseDownWindow := Window; - GetCursorPos(MouseDownPos); - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - case MouseDownCount of - 2: Msg := LM_LBUTTONDBLCLK; - 3: Msg := LM_LBUTTONTRIPLECLK; - 4: Msg := LM_LBUTTONQUADCLK; - else Msg := LM_LBUTTONDOWN; - end; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; - end; - WM_LBUTTONUP: - begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_LBUTTONUP; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; - end; - WM_MBUTTONDBLCLK: - begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_MBUTTONDBLCLK; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; - end; - WM_MBUTTONDOWN: - begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_MBUTTONDOWN; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; - end; - WM_MBUTTONUP: - begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do + PLMsg := @LMScroll; + if LParam <> 0 then begin - Msg := LM_MBUTTONUP; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; + ChildWindowInfo := GetWin32WindowInfo(HWND(LParam)); + lWinControl := ChildWindowInfo^.WinControl; + if Assigned(ChildWindowInfo^.ParentMsgHandler) then + if ChildWindowInfo^.ParentMsgHandler(lWinControl, + Window, Msg, WParam, LParam, PLMsg^.Result, WinProcess) then Exit(PLMsg^.Result); end; + HandleScrollMessage(Msg); end; - WM_XBUTTONDBLCLK: + WM_KEYDOWN: begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_XBUTTONDBLCLK; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; + DoMsgKeyDownUp(CN_KEYDOWN, Result); + WindowInfo^.IMEComposed:=False; + IgnoreNextCharWindow := Window; end; - WM_XBUTTONDOWN: + WM_KEYUP: begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_XBUTTONDOWN; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; + DoMsgKeyDownUp(CN_KEYUP, Result); + if WindowInfo^.IMEComposed then + LMKey.Msg:=LM_NULL; end; - WM_XBUTTONUP: + WM_KILLFOCUS: begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_XBUTTONUP; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; +{$ifdef DEBUG_CARET} + DebugLn(['WM_KILLFOCUS received for window ', IntToHex(Window, 8), ' NewFocus = ', IntToHex(WParam, 8), ' Text = ', WndText(WParam)]); +{$endif} + LMessage.Msg := LM_KILLFOCUS; + LMessage.WParam := WParam; end; + //TODO:LM_KILLCHAR,LM_KILLWORD,LM_KILLLINE + WM_LBUTTONDBLCLK: DoMsgLButtonDoubleClick; + WM_LBUTTONDOWN: DoMsgLButtonDown; + WM_LBUTTONUP: DoMsgMouseUpDownClick(LM_LBUTTONUP); + WM_MBUTTONDBLCLK: DoMsgMouseUpDownClick(LM_MBUTTONDBLCLK); + WM_MBUTTONDOWN: DoMsgMouseUpDownClick(LM_MBUTTONDOWN); + WM_MBUTTONUP: DoMsgMouseUpDownClick(LM_MBUTTONUP); + WM_XBUTTONDBLCLK: DoMsgMouseUpDownClick(LM_XBUTTONDBLCLK); + WM_XBUTTONDOWN: DoMsgMouseUpDownClick(LM_XBUTTONDOWN); + WM_XBUTTONUP: DoMsgMouseUpDownClick(LM_XBUTTONUP); WM_MOUSEHOVER: begin NotifyUserInput := True; @@ -1895,254 +2172,46 @@ NotifyUserInput := True; LMessage.Msg := LM_MOUSELEAVE; end; - WM_MOUSEMOVE: - begin - NotifyUserInput := True; - PLMsg:=@LMMouseMove; - with LMMouseMove Do - begin - Msg := LM_MOUSEMOVE; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - // check if this is a spurious WM_MOUSEMOVE message, pos not actually changed - if (XPos = WindowInfo^.MouseX) and (YPos = WindowInfo^.MouseY) then - begin - // do not fire message after all (position not changed) - Msg := LM_NULL; - NotifyUserInput := false; - end else - if WindowInfo <> @DefaultWindowInfo then - begin - // position changed, update window info - WindowInfo^.MouseX := XPos; - WindowInfo^.MouseY := YPos; - end; - end; - end; - WM_MOUSEWHEEL: - begin - NotifyUserInput := True; - PLMsg:=@LMMouseEvent; - with LMMouseEvent Do - begin - X := GET_X_LPARAM(LParam); - Y := GET_Y_LPARAM(LParam); - // check if mouse cursor within this window, otherwise send message to - // window the mouse is hovering over - P.X := X; - P.Y := Y; - - TargetWindow := Win32WidgetSet.WindowFromPoint(P); - //fallback to LCL function to get the actual window - if TargetWindow = 0 then - TargetWindow := GetLCLWindowFromPoint(lWinControl, P); - - if (TargetWindow = 0) or not IsWindowEnabled(TargetWindow) then - exit; - - // check if the window is an edit control of a combobox, if so, - // redirect it to the combobox, not the edit control - if GetWin32WindowInfo(TargetWindow)^.isComboEdit then - TargetWindow := Windows.GetParent(TargetWindow); - - // check InMouseWheelRedirection to prevent recursion - if not InMouseWheelRedirection and (TargetWindow <> Window) then - begin - InMouseWheelRedirection := true; - Result := SendMessage(TargetWindow, WM_MOUSEWHEEL, WParam, LParam); - InMouseWheelRedirection := false; - exit; - end - else - if TargetWindow <> Window then - exit; - // the mousewheel message is for us - Msg := LM_MOUSEWHEEL; - Windows.ScreenToClient(TargetWindow, P); - X := P.X; - Y := P.Y; - Button := LOWORD(Integer(WParam)); - WheelDelta := SmallInt(HIWORD(Integer(WParam))); - State := KeysToShiftState(Button); - Result := 0; - UserData := Pointer(GetWindowLong(Window, GWL_USERDATA)); - WinProcess := false; - end; - end; + WM_MOUSEMOVE: DoMsgMouseMove; + WM_MOUSEWHEEL: if DoMsgMouseWheel(Result) then Exit; WM_DROPFILES: begin {$IFDEF EnableWMDropFiles} - LMessage.Msg := LM_DROPFILES; - LMessage.WParam := WParam; - LMessage.LParam := LParam; + SetLMessageAndParams(LM_DROPFILES); {$ENDIF} - HandleDropFiles; end; //TODO:LM_MOVEPAGE,LM_MOVETOROW,LM_MOVETOCOLUMN - WM_NCHITTEST: - begin - LMessage.msg := LM_NCHITTEST; - LMessage.wParam := WParam; - LMessage.lParam := LParam; - end; - WM_NCLBUTTONDOWN: - begin - LMessage.Msg := Msg; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - NotifyUserInput := True; + WM_NCHITTEST: SetLMessageAndParams(LM_NCHITTEST); + WM_NCLBUTTONDOWN: DoMsgNCLButtonDown; - //Drag&Dock support TCustomForm => Start BeginDrag() - if (lWinControl <> nil) and not (csDesigning in lWinControl.ComponentState) then - begin - if WParam = HTCAPTION then - begin - if lWinControl is TCustomForm then - begin - if (TWinControlAccess(lWinControl).DragKind = dkDock) and - (TWinControlAccess(lWinControl).DragMode = dmAutomatic) then - lWinControl.BeginDrag(true); - end; - end; - end; - // I see no other way to prevent crash at moment. This message calls WM_CLOSE - // which frees our form and we get a destructed lWinControl - lWinControl := nil; - end; - WM_NCMOUSEMOVE, WM_NCMOUSEHOVER: + WM_NCMOUSEMOVE, + WM_NCMOUSEHOVER: begin - LMessage.Msg := Msg; - LMessage.WParam := WParam; - LMessage.LParam := LParam; + SetLMessageAndParams(Msg); NotifyUserInput := True; Application.DoBeforeMouseMessage(nil); end; - WM_NOTIFY: - begin - WindowInfo := GetWin32WindowInfo(PNMHdr(LParam)^.hwndFrom); -{$ifdef MSG_DEBUG} - DebugLn([MessageStackDepth, 'Notify code: ', PNMHdr(LParam)^.code]); -{$endif} - if Assigned(WindowInfo^.ParentMsgHandler) then - begin - LMNotify.Result := 0; - if WindowInfo^.ParentMsgHandler(WindowInfo^.WinControl, - Window, WM_NOTIFY, WParam, LParam, LMNotify.Result, WinProcess) then Exit(LMNotify.Result); - end; - case PNMHdr(LParam)^.code of - MCN_SELCHANGE: - begin - LMessage.Msg := LM_CHANGED; - if WindowInfo^.WinControl <> nil then - lWinControl := WindowInfo^.WinControl; - end; - else - PLMsg:=@LMNotify; - with LMNotify Do - begin - Msg := LM_NOTIFY; - IDCtrl := WParam; - NMHdr := PNMHDR(LParam); - with NMHdr^ do - case code of - NM_CUSTOMDRAW: - begin - if WindowInfo^.WinControl is TCustomBitBtn then - HandleBitBtnCustomDraw(TCustomBitBtn(WindowInfo^.WinControl)) - else - if GetNeedParentPaint(WindowInfo, lWinControl) and WindowInfo^.ThemedCustomDraw then - begin - case PNMCustomDraw(LParam)^.dwDrawStage of - CDDS_PREPAINT: - begin - Result := CDRF_NOTIFYITEMDRAW; - WinProcess := false; - end; - CDDS_ITEMPREPAINT: - begin - Result := CDRF_DODEFAULT; - WinProcess := false; - end; - end; - end; - end; - end; - end; - end; - end; - WM_PAINT: - begin - SendPaintMessage(HDC(WParam)); - // SendPaintMessage sets winprocess to false - end; + WM_NOTIFY: if DoMsgNotify(Result) then Exit; + WM_PAINT: SendPaintMessage(HDC(WParam)); // SendPaintMessage sets winprocess to false WM_PRINTCLIENT: - begin if ((LParam and PRF_CLIENT) = PRF_CLIENT) and (lWinControl <> nil) then SendPaintMessage(HDC(WParam)); - end; - WM_PASTE: - begin - LMessage.Msg := LM_PASTE; - end; - WM_RBUTTONDBLCLK: - begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_RBUTTONDBLCLK; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - end; - end; - WM_RBUTTONDOWN: - begin - NotifyUserInput := True; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_RBUTTONDOWN; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - Result := 0; - end; - end; + WM_PASTE: LMessage.Msg := LM_PASTE; + WM_RBUTTONDBLCLK: DoMsgMouseUpDownClick(LM_RBUTTONDBLCLK); + WM_RBUTTONDOWN: DoMsgMouseUpDownClick(LM_RBUTTONDOWN); WM_RBUTTONUP: begin - NotifyUserInput := True; + DoMsgMouseUpDownClick(LM_RBUTTONUP); WinProcess := false; - PLMsg:=@LMMouse; - with LMMouse Do - begin - Msg := LM_RBUTTONUP; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - Keys := WParam; - Result := 0; - end; + Result := 0; end; WM_CONTEXTMENU: begin - WinProcess := False; - NotifyUserInput := True; - PLMsg := @LMContextMenu; - with LMContextMenu do - begin - Msg := LM_CONTEXTMENU; - XPos := GET_X_LPARAM(LParam); - YPos := GET_Y_LPARAM(LParam); - hWnd := Window; - Result := 0; - end; - end; - WM_SETCURSOR: - begin - HandleSetCursor; + DoMsgContextMenu; + Result := 0; end; + WM_SETCURSOR: HandleSetCursor; CM_ACTIVATE: begin if (Window = Win32WidgetSet.AppHandle) then @@ -2170,80 +2239,34 @@ PostMessage(Window, CM_ACTIVATE, 0, 0); LMessage.Msg := LM_SETFOCUS; end; - WM_SHOWWINDOW: - begin - with TLMShowWindow(LMessage) Do - begin - Msg := LM_SHOWWINDOW; - Show := WParam <> 0; - Status := LParam; - end; - if Assigned(lWinControl) and ((WParam <> 0) or not lWinControl.Visible) and - ((WParam = 0) or lWinControl.Visible) and Assigned(Application) and - (lWinControl = Application.MainForm) and not Application.MainFormOnTaskBar then - begin - if WParam=0 then - Flags := SW_HIDE - else - Flags := SW_SHOWNOACTIVATE; - Windows.ShowWindow(Win32WidgetSet.AppHandle, Flags); - end; - end; + WM_SHOWWINDOW: DoMsgShowWindow; WM_SYSCHAR: begin - PLMsg:=@LMChar; - with LMChar Do - begin - Msg := CN_SYSCHAR; - KeyData := LParam; - CharCode := Word(WParam); - Result := 0; - end; + PLMsg := @LMChar; + SetLMCharData(CN_SYSCHAR, True); + Result := 0; WinProcess := false; end; WM_SYSCOMMAND: begin HandleSysCommand; - LMessage.Msg := Msg; - LMessage.WParam := WParam; - LMessage.LParam := LParam; + SetLMessageAndParams(Msg); WmSysCommandProcess := WinProcess; WinProcess := False; end; WM_SYSKEYDOWN: begin - NotifyUserInput := True; UpdateUIState(Word(WParam)); - PLMsg := @LMKey; - with LMKey Do - begin - Msg := CN_SYSKEYDOWN; - KeyData := LParam; - CharCode := Word(WParam); - Result := 0; - end; - WinProcess := false; + DoMsgSysKey(CN_SYSKEYDOWN); + Result := 0; IgnoreNextCharWindow := Window; end; WM_SYSKEYUP: begin - NotifyUserInput := True; - PLMsg:=@LMKey; - with LMKey Do - begin - Msg := CN_SYSKEYUP; - KeyData := LParam; - CharCode := Word(WParam); - Result := 0; - end; - WinProcess := false; - end; - WM_TIMER: - begin - LMessage.Msg := LM_TIMER; - LMessage.WParam := WParam; - LMessage.LParam := LParam; + DoMsgSysKey(CN_SYSKEYUP); + Result := 0; end; + WM_TIMER: SetLMessageAndParams(LM_TIMER); WM_WINDOWPOSCHANGING: begin with TLMWindowPosMsg(LMessage) Do @@ -2265,44 +2288,9 @@ if (PWindowPos(LParam)^.flags and SWP_NOSIZE) = 0 then Windows.InvalidateRect(Window, nil, True); end; - WM_MEASUREITEM: - begin - case PMeasureItemStruct(LParam)^.CtlType of - ODT_MENU: - begin - menuItem := TObject(PMeasureItemStruct(LParam)^.itemData); - if menuItem is TMenuItem then - begin - menuHDC := GetDC(Window); - TmpSize := MenuItemSize(TMenuItem(menuItem), menuHDC); - PMeasureItemStruct(LParam)^.itemWidth := TmpSize.cx; - PMeasureItemStruct(LParam)^.itemHeight := TmpSize.cy; - ReleaseDC(Window, menuHDC); - Winprocess := False; - end - {$ifdef MSG_DEBUG} - else - DebugLn('WM_MEASUREITEM for a menuitem catched but menuitem is not TmenuItem'); - {$endif} - end; - else - if WParam <> 0 then - begin - lWinControl := TWinControl(WParam); - if Assigned(lWinControl) then - begin - LMessage.Msg := LM_MEASUREITEM; - LMessage.LParam := LParam; - LMessage.WParam := WParam; - Winprocess := False; - end; - end; - end; - end; - WM_SETTINGCHANGE: - Application.IntfSettingsChange; + WM_MEASUREITEM: DoMsgMeasureItem; + WM_SETTINGCHANGE: Application.IntfSettingsChange; WM_THEMECHANGED: - begin // winxp theme changed, recheck whether themes are enabled if Window = Win32WidgetSet.AppHandle then begin @@ -2310,12 +2298,9 @@ Graphics.UpdateHandleObjects; ThemeServices.IntfDoOnThemeChange; end; - end; WM_UPDATEUISTATE: - begin if ThemeServices.ThemesEnabled then InvalidateRect(Window, nil, True); - end; { >= WM_USER } @@ -2334,22 +2319,12 @@ WM_IME_SELECT, WM_IME_SETCONTEXT, WM_IME_STARTCOMPOSITION: - begin - LMessage.Msg := Msg; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - WinProcess := False; - end; + SetLMessageAndParams(Msg, True); else // pass along user defined messages if Msg >= WM_USER then - begin - LMessage.Msg := Msg; - LMessage.WParam := WParam; - LMessage.LParam := LParam; - WinProcess := False; - end; - end; + SetLMessageAndParams(Msg, True); + end; // case Msg of if WinProcess then begin @@ -2358,119 +2333,9 @@ end; case Msg of - WM_ACTIVATEAPP: - begin - if Window = Win32WidgetSet.AppHandle then - begin - if WParam <> 0 then // activated - begin - //WriteLn('Restore'); - RestoreStayOnTopFlags(Window); - if Assigned(Application) then - Application.IntfAppActivate(True); - end - else - begin // deactivated - //WriteLn('Remove'); - RemoveStayOnTopFlags(Window); - if Assigned(Application) then - Application.IntfAppDeactivate(True); - end; - end; - end; - WM_MOVE: - begin - PLMsg:=@LMMove; - with LMMove Do - begin - Msg := LM_MOVE; - // MoveType := WParam; WParam is not defined! - MoveType := Move_SourceIsInterface; - if GetWindowLong(Window, GWL_STYLE) and WS_CHILD = 0 then - begin - WindowPlacement.length := SizeOf(WindowPlacement); - if IsIconic(Window) and GetWindowPlacement(Window, @WindowPlacement) then - begin - with WindowPlacement.rcNormalPosition do - begin - XPos := Left; - YPos := Top; - end; - end - else - if Windows.GetWindowRect(Window, @R) then - begin - XPos := R.Left; - YPos := R.Top; - end - else - Msg := LM_NULL; - end else - begin - if GetWindowRelativePosition(Window, NewLeft, NewTop) then - begin - XPos := NewLeft; - YPos := NewTop; - end - else - Msg := LM_NULL; - end; - if lWinControl <> nil then - begin - {$IFDEF VerboseSizeMsg} - DebugLn('Win32CallBack WM_MOVE ', dbgsName(lWinControl), - ' NewPos=',dbgs(XPos),',',dbgs(YPos)); - {$ENDIF} - if (lWinControl.Left = XPos) and (lWinControl.Top = YPos) then - Exit; - end; - end; - end; - WM_SIZE: - begin - with TLMSize(LMessage) do - begin - Msg := LM_SIZE; - SizeType := WParam or Size_SourceIsInterface; - - // this is needed since we don't minimize the main form window - // we only hide and show it back on mimize and restore in case MainFormOnTaskbar = False - if (Window = Win32WidgetSet.AppHandle) and - Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then - begin - lWinControl := Application.MainForm; - Window := Application.MainFormHandle; - // lie LCL about the window state - if IsIconic(Win32WidgetSet.AppHandle) then - SizeType := SIZE_MINIMIZED or Size_SourceIsInterface - else - if IsZoomed(Window) then - SizeType := SIZE_MAXIMIZED or Size_SourceIsInterface - else - SizeType := SIZE_RESTORED or Size_SourceIsInterface; - end; - - GetWindowSize(Window, NewWidth, NewHeight); - Width := NewWidth; - Height := NewHeight; - if Assigned(lWinControl) then - begin - {$IFDEF VerboseSizeMsg} - GetClientRect(Window,R); - DebugLn('Win32Callback: WM_SIZE '+ dbgsName(lWinControl)+ - ' NewSize=', dbgs(Width)+','+dbgs(Height)+ - ' HasVScroll='+dbgs((GetWindowLong(Window, GWL_STYLE) and WS_VSCROLL) <> 0)+ - ' HasHScroll='+dbgs((GetWindowLong(Window, GWL_STYLE) and WS_HSCROLL) <> 0)+ - ' OldClientSize='+dbgs(lWinControl.CachedClientWidth)+','+dbgs(lWinControl.CachedClientHeight)+ - ' NewClientSize='+dbgs(R.Right)+','+dbgs(R.Bottom)); - {$ENDIF} - lWinControl.InvalidateClientRectCache(false); - end; - OverlayWindow := GetWin32WindowInfo(Window)^.Overlay; - if OverlayWindow <> 0 then - Windows.SetWindowPos(OverlayWindow, HWND_TOP, 0, 0, NewWidth, NewHeight, SWP_NOMOVE); - end; - end; + WM_ACTIVATEAPP: DoMsgActivateApp; + WM_MOVE: if DoMsgMove then Exit(0); + WM_SIZE: DoMsgSize; BM_SETCHECK: begin //LParam holds BST_CHECKED, BST_UNCHECKED or SKIP_LMCHANGE; @@ -2519,7 +2384,7 @@ LMessage.Result := 0; end; end; - end; + end; // case Msg of // convert from win32 client to lcl client pos. // @@ -2560,20 +2425,16 @@ // respond to result of LCL handling the message case PLMsg^.Msg of LM_ERASEBKGND, LM_SETCURSOR, LM_RBUTTONUP, LM_CONTEXTMENU, LM_MOUSEWHEEL: - begin if PLMsg^.Result = 0 then WinProcess := True; - end; + WM_SYSCOMMAND: - begin WinProcess := WmSysCommandProcess; - end; CN_CHAR, CN_SYSCHAR: begin // if key not yet processed, let windows process it WinProcess := LMChar.Result = 0; - {$IFDEF WindowsUnicodeSupport} if UnicodeEnabledOS then begin // if charcode was modified by LCL, convert ansi char @@ -2583,7 +2444,6 @@ WParam := Word(WideChar(LMChar.CharCode)); end else - {$ENDIF} WParam := LMChar.CharCode; end; @@ -2621,11 +2481,11 @@ if WinProcess then begin - - if (Msg=WM_CHAR) and ((WParam=VK_RETURN) or (WPARAM=VK_ESCAPE)) and + if ((Msg=WM_CHAR) and ((WParam=VK_RETURN) or (WPARAM=VK_ESCAPE)) and ((lWinControl is TCustomCombobox) or ((lWinControl is TCustomEdit) and not (lWinControl is TCustomMemo )) - ) + )) + or (Msg=WM_SYSCHAR) // Windows message processing is postponed then // this thing will beep, don't call defaultWindowProc else @@ -2641,34 +2501,13 @@ begin // if want chars, then handled already PLMsg^.Result := CallDefaultWindowProc(Window, WM_GETDLGCODE, 0, 0) and DLGC_WANTCHARS; - LMChar.CharCode := Word(WParam); - LMChar.Msg := LM_CHAR; - end; - WM_SYSCHAR: - begin - LMChar.CharCode := Word(WParam); - LMChar.Msg := LM_SYSCHAR; - end; - WM_KEYDOWN: - begin - LMKey.CharCode := Word(WParam); - LMKey.Msg := LM_KEYDOWN; - end; - WM_KEYUP: - begin - LMKey.CharCode := Word(WParam); - LMKey.Msg := LM_KEYUP; - end; - WM_SYSKEYDOWN: - begin - LMKey.CharCode := Word(WParam); - LMKey.Msg := LM_SYSKEYDOWN; - end; - WM_SYSKEYUP: - begin - LMKey.CharCode := Word(WParam); - LMKey.Msg := LM_SYSKEYUP; + SetLMCharData(LM_CHAR); end; + WM_SYSCHAR: SetLMCharData(LM_SYSCHAR); + WM_KEYDOWN: SetLMKeyData(LM_KEYDOWN); + WM_KEYUP: SetLMKeyData(LM_KEYUP); + WM_SYSKEYDOWN: SetLMKeyData(LM_SYSKEYDOWN); + WM_SYSKEYUP: SetLMKeyData(LM_SYSKEYUP); end; case Msg of @@ -2683,15 +2522,16 @@ if (lWinControl <> nil) and (PLMsg^.Result = 0) and CharCodeNotEmpty then DeliverMessage(lWinControl, PLMsg^); + // Windows message processing for WM_SYSCHAR not processed (will get WM_MENUCHAR) + if (Msg=WM_SYSCHAR) and (PLMsg^.Result = 0) and CharCodeNotEmpty then + PLMsg^.Result := CallDefaultWindowProc(Window, Msg, WParam, LParam); + // handle Ctrl-A for edit controls if (PLMsg^.Result = 0) and (Msg = WM_KEYDOWN) and (WParam = Ord('A')) and (GetKeyState(VK_CONTROL) < 0) and (GetKeyState(VK_MENU) >= 0) then begin if WndClassName(Window) = EditClsName then - begin - // select all - Windows.SendMessage(Window, EM_SETSEL, 0, -1); - end; + Windows.SendMessage(Window, EM_SETSEL, 0, -1); // select all end; end; end; @@ -2699,10 +2539,8 @@ // ignore WM_(SYS)CHAR message if LCL handled WM_(SYS)KEYDOWN if ((Msg = WM_KEYDOWN) or (Msg = WM_SYSKEYDOWN)) then - begin if (PLMsg^.Result = 0) then IgnoreNextCharWindow := 0; - end; { LMInsertText has no Result field } @@ -2717,6 +2555,40 @@ else Result := PLMsg^.Result; end; +{------------------------------------------------------------------------------ + Function: WindowProc + Params: Window - The window that receives a message + Msg - The message received + WParam - Word parameter + LParam - Long-integer parameter + Returns: 0 if Msg is handled; non-zero long-integer result otherwise + + Handles the messages sent to the specified window, in parameter Window, by + Windows or other applications + ------------------------------------------------------------------------------} +function +{$ifdef MSG_DEBUG} + RealWindowProc +{$else} + WindowProc +{$endif} + (Window: HWnd; Msg: UInt; WParam: Windows.WParam; LParam: Windows.LParam): LResult; stdcall; +var + Helper: TWindowProcHelper; +begin + Helper := TWindowProcHelper.Create; + try + Helper.Window := Window; + Helper.Msg := Msg; + Helper.WParam := WParam; + Helper.LParam := LParam; + Helper.NMHdr := PNMHdr(LParam); + Result := Helper.DoWindowProc; + finally + Helper.Free; + end; +end; + {$ifdef MSG_DEBUG} function WindowProc(Window: HWnd; Msg: UInt; WParam: Windows.WParam; @@ -2750,6 +2622,7 @@ Owner: TWinControl; Control: TControl; P: TPoint; + LRect: Windows.RECT; begin case Msg of WM_ERASEBKGND: @@ -2793,6 +2666,16 @@ begin // free our own data associated with window DisposeWindowInfo(Window); + Result := 0; + end; + WM_MOVE: + begin + if (Int16(LoWord(LParam)) <> 0) or (Int16(HiWord(LParam)) <> 0) then + begin + Parent := Windows.GetParent(Window); + Windows.GetClientRect(Parent, LRect); + Windows.SetWindowPos(Window, HWND_TOP, 0, 0, LRect.Right, LRect.Bottom, 0); + end; end; else if UnicodeEnabledOS @@ -2882,3 +2765,4 @@ {$UNDEF ASSERT_IS_ON} {$C-} {$ENDIF} + diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32defines.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32defines.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32defines.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32defines.inc 2015-11-28 23:18:25.000000000 +0000 @@ -21,9 +21,4 @@ // valuable for investigation of message trees / interrelations { $define MSG_DEBUG} -{$IFNDEF DisableWindowsUnicodeSupport} -// Enable WindowsUnicodeSupport for fpc 2.2.1 and higher -{$DEFINE WindowsUnicodeSupport} -{$ENDIF DisableWindowsUnicodeSupport} -{$DEFINE UseVistaDialogs} {.$DEFINE RedirectDestroyMessages} diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32extra.pas lazarus-1.6+dfsg/lcl/interfaces/win32/win32extra.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32extra.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32extra.pas 2015-11-28 23:18:25.000000000 +0000 @@ -247,7 +247,6 @@ PROPERTYKEY = _tagpropertykey; REFPROPERTYKEY = ^PROPERTYKEY; REFPROPVARIANT = ^TPROPVARIANT; -{$ifdef UseVistaDialogs} IEnumShellItems = interface(IUnknown) ['{70629033-e363-4a28-a567-0db78006e6d7}'] function Next(celt: ULONG; out rgelt: IShellItem; var pceltFetched: ULONG): HResult; stdcall; @@ -355,7 +354,6 @@ function GetProperties(var ppStore: IPropertyStore): HResult; stdcall; function ApplyProperties(psi: IShellItem; pStore: IPropertyStore; hwnd: HWND; pSink: IFileOperationProgressSink): HResult; stdcall; end; -{$endif} // AlphaBlend is only defined for win98&2k and up // load dynamic and use ownfunction if not defined @@ -530,6 +528,7 @@ Info.Colors[1] := $00FF00; {le-green} Info.Colors[2] := $0000FF; {le-blue} + Result := False; StretchSrc := (nWidthDest <> nWidthSrc) or (nHeightDest <> nHeightSrc); if StretchSrc then begin @@ -608,6 +607,7 @@ end else begin CleanupAlpha := False; + AlphaBmp := INVALID_HANDLE_VALUE; end; // create new srcbmp @@ -690,6 +690,7 @@ Inc(SrcLinePtr, nXOriginSrc * SrcPixelBytes + nYOriginSrc * SrcRowStride); DstLinePtr := DstBytesPtr; + SrcAlpha := nil; if blendFunction.AlphaFormat = AC_SRC_ALPHA then begin if AlphaBytesPtr <> nil diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32int.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32int.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32int.pp 2014-11-26 22:11:38.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32int.pp 2015-11-27 18:19:40.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32int.pp 46996 2014-11-26 22:11:38Z mattias $ } +{ $Id: win32int.pp 50515 2015-11-27 18:19:40Z bart $ } { /*************************************************************************** WIN32INT.pp - Win32Interface Object @@ -31,8 +31,9 @@ Windows, // keep as first ActiveX, Classes, Translations, ComCtrls, Controls, Buttons, - Forms, Dialogs, GraphMath, GraphType, InterfaceBase, LCLIntf, - LCLType, LMessages, StdCtrls, SysUtils, Win32Def, Graphics, Menus, CommCtrl, + LCLIntf, LclProc, LazUTF8, LCLType, LMessages, + Forms, Dialogs, GraphMath, GraphType, InterfaceBase, + StdCtrls, SysUtils, Win32Def, Graphics, Menus, CommCtrl, MultiMon, Themes{, Win32Debug}; const @@ -252,7 +253,7 @@ Win32WSDialogs, Win32Themes, //////////////////////////////////////////////////// - Win32Extra, LclProc, LCLMessageGlue; + Win32Extra, LCLMessageGlue; type PProcessEvent = ^TProcessEvent; @@ -295,11 +296,7 @@ MouseDownTime := GetTickCount - 5000 else MouseDownTime := 0; - {$IFDEF WindowsUnicodeSupport} SystemCharSetIsUTF8:=true; - {$ELSE} - SystemCharSetIsUTF8:=false; - {$ENDIF} if (Win32MajorVersion = 4) and (Win32MinorVersion = 0) then MMenuItemInfoSize := W95_MENUITEMINFO_SIZE diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32lclintfh.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32lclintfh.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32lclintfh.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32lclintfh.inc 2015-02-16 12:02:13.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit win32int.pp} -{ $Id: win32lclintfh.inc 41387 2013-05-24 18:30:06Z juha $ } +{ $Id: win32lclintfh.inc 47826 2015-02-16 12:02:13Z mattias $ } {****************************************************************************** All GTK interface communication implementations. Initial Revision : Sun Nov 23 23:53:53 2003 @@ -43,7 +43,7 @@ function ExtUTF8Out(DC: HDC; X, Y: Integer; Options: Longint; Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean; override; -function FontCanUTF8(Font: HFont): boolean; override; +function FontCanUTF8({%H-}Font: HFont): boolean; override; function GetAcceleratorString(const AVKey: Byte; const AShiftState: TShiftState): String; override; function GetControlConstraints(Constraints: TObject): boolean; override; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32lclintf.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32lclintf.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32lclintf.inc 2015-03-24 21:35:42.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32lclintf.inc 2015-11-27 18:19:40.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit win32int.pp} -{ $Id: win32lclintf.inc 48487 2015-03-24 21:35:42Z maxim $ } +{ $Id: win32lclintf.inc 50515 2015-11-27 18:19:40Z bart $ } {****************************************************************************** All GTK interface communication implementations. Initial Revision : Sun Nov 23 23:53:53 2003 @@ -54,7 +54,7 @@ var lHandler: PPipeEventInfo; begin - if AEventHandler = nil then exit; + if AEventHandler = nil then exit(nil); New(lHandler); lHandler^.Handle := AHandle; lHandler^.UserData := AData; @@ -72,7 +72,7 @@ var lProcessEvent: PProcessEvent; begin - if AEventHandler = nil then exit; + if AEventHandler = nil then exit(nil); New(lProcessEvent); lProcessEvent^.Handle := AHandle; lProcessEvent^.UserData := AData; @@ -100,11 +100,7 @@ ------------------------------------------------------------------------------} function TWin32WidgetSet.FontCanUTF8(Font: HFont): boolean; begin - {$ifdef WindowsUnicodeSupport} - Result := True; - {$else} - Result := False; - {$endif} + Result := True; end; procedure TWin32WidgetSet.HandleProcessEvent(AData: PtrInt; AFlags: dword); @@ -267,7 +263,7 @@ Msg: TLMessage; PMethod: ^TLCLWndMethod; begin - FillChar(Msg, SizeOf(Msg), #0); + FillChar(Msg{%H-}, SizeOf(Msg), #0); Msg.msg := uMsg; Msg.wParam := wParam; @@ -276,7 +272,7 @@ {------------------------------------------------------------------------------ Here we get the callback WndMethod associated with this window ------------------------------------------------------------------------------} - PMethod := Pointer(Widgetset.GetWindowLong(ahwnd, GWL_USERDATA)); + PMethod := {%H-}Pointer(Widgetset.GetWindowLong(ahwnd, GWL_USERDATA)); if Assigned(PMethod) then PMethod^(Msg); @@ -311,10 +307,10 @@ Getmem(PMethod, SizeOf(TMethod)); PMethod^ := Method; - Self.SetWindowLong(Result, GWL_USERDATA, PtrInt(PMethod)); + Self.SetWindowLong(Result, GWL_USERDATA, {%H-}PtrInt(PMethod)); end; - Self.SetWindowLong(Result, GWL_WNDPROC, PtrInt(@CallbackAllocateHWnd)) + Self.SetWindowLong(Result, GWL_WNDPROC, {%H-}PtrInt(@CallbackAllocateHWnd)) end; function TWin32WidgetSet.AskUser(const DialogCaption, DialogMessage: string; @@ -332,7 +328,7 @@ //Issue #0027664 if (WindowsVersion >= wvVista) and (GetFileVersion(comctl32) >= ComCtlVersionIE6) then begin - FillChar(TaskConfig, SizeOf(TaskConfig), 0); + FillChar(TaskConfig{%H-}, SizeOf(TaskConfig), 0); TaskConfig.cbSize := SizeOf(TaskConfig); // if we skip hwndParent our form will be a root window - with the taskbar item and icon // this is unwanted @@ -391,8 +387,13 @@ try Result := IDCANCEL; TaskDialogIndirect(@TaskConfig, @Result, nil, nil); - if (Result = IDCANCEL) and Assigned(Buttons.CancelButton) then - Result := Buttons.CancelButton.ModalResult; + if (Result = IDCANCEL) then + begin + if Assigned(Buttons.CancelButton) then + Result := Buttons.CancelButton.ModalResult + else + Result := mrCancel; + end; finally RestoreApplicationState(State); for i := 0 to TaskConfig.cButtons - 1 do @@ -414,7 +415,7 @@ var PMethod: ^TLCLWndMethod; begin - PMethod := Pointer(Self.GetWindowLong(Wnd, GWL_USERDATA)); + PMethod := {%H-}Pointer(Self.GetWindowLong(Wnd, GWL_USERDATA)); if Wnd <> 0 then Windows.DestroyWindow(Wnd); @@ -461,13 +462,10 @@ try NewBrush := CreatePatternBrush(Win32WidgetSet.DotsPatternBitmap); OldBrush := SelectObject(DC, NewBrush); - with ARect do - begin - DrawHorzLine(DC, Left, Right, Top); - DrawVertLine(DC, Top + LineSize, Bottom - LineSize, Left); - DrawHorzLine(DC, Left, Right, Bottom - LineSize); - DrawVertLine(DC, Top + LineSize, Bottom - LineSize, Right - LineSize); - end; + DrawHorzLine(DC, ARect.Left, ARect.Right, ARect.Top); + DrawVertLine(DC, ARect.Top + LineSize, ARect.Bottom - LineSize, ARect.Left); + DrawHorzLine(DC, ARect.Left, ARect.Right, ARect.Bottom - LineSize); + DrawVertLine(DC, ARect.Top + LineSize, ARect.Bottom - LineSize, ARect.Right - LineSize); DeleteObject(SelectObject(DC, OldBrush)); finally ReleaseDC(0, DC); @@ -624,17 +622,17 @@ begin WindowInfo := GetWin32WindowInfo(WindowHandle); OverlayWindow := WindowInfo^.Overlay; - if OverlayWindow = HWND(nil) then + if OverlayWindow = {%H-}HWND(nil) then begin // create 'overlay' window Windows.GetClientRect(WindowHandle, @ARect); OverlayWindow := Windows.CreateWindowEx(WS_EX_TRANSPARENT, @ClsName, '', WS_CHILD or WS_VISIBLE, ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, - WindowHandle, HMENU(nil), HInstance, nil); + WindowHandle, {%H-}HMENU(nil), HInstance, nil); OverlayWindowInfo := AllocWindowInfo(OverlayWindow); - OverlayWindowInfo^.DefWndProc := Windows.WNDPROC(SetWindowLong( - OverlayWindow, GWL_WNDPROC, PtrInt(@OverlayWindowProc))); + OverlayWindowInfo^.DefWndProc := {%H-}Windows.WNDPROC(SetWindowLong( + OverlayWindow, GWL_WNDPROC, {%H-}PtrInt(@OverlayWindowProc))); OverlayWindowInfo^.WinControl := WindowInfo^.WinControl; WindowInfo^.Overlay := OverlayWindow; end; @@ -815,7 +813,7 @@ // align to DWord Align := DstLineSize and 3; if Align > 0 - then Inc(DstLineSize, 4 - Align); + then Inc(DstLineSize, PtrUInt(4 - Align)); SrcLinePtr := ARawImage.Data; SrcLineSize := ADesc.BytesPerLine; @@ -1121,7 +1119,9 @@ begin OverlayWindow := GetWin32WindowInfo(Window)^.Overlay; if OverlayWindow <> 0 then - Result := Windows.ReleaseDC(OverlayWindow, DC); + Result := Windows.ReleaseDC(OverlayWindow, DC) + else + Result := 0; end; procedure TWin32WidgetSet.RemoveEventHandler(var AHandler: PEventHandler); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32listsl.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32listsl.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32listsl.inc 2014-01-19 13:56:44.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32listsl.inc 2015-11-27 18:19:40.000000000 +0000 @@ -119,17 +119,12 @@ begin for Counter := 0 To TheStrings.Count - 1 Do begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then AnIndex := Windows.SendMessageW(FWin32List, FFlagAddString, 0, LPARAM(PWideChar(UTF8ToUTF16(TheStrings[Counter])))) //Insert else AnIndex := Windows.SendMessage(FWin32List, FFlagAddString, 0, LPARAM(PChar(Utf8ToAnsi(TheStrings[Counter])))); //Insert - {$else} - AnIndex := Windows.SendMessage(FWin32List, FFlagAddString, 0, - LPARAM(PChar(TheStrings[Counter]))); //Insert - {$endif} PutObject(AnIndex, TheStrings.Objects[Counter]); end; end; @@ -156,18 +151,13 @@ ------------------------------------------------------------------------------} function TWin32ListStringList.Get(Index: Integer): String; Var -{$ifdef WindowsUnicodeSupport} s: string; w: widestring; -{$else} - Item: PChar; -{$endif} begin if (Index < 0) Or (Index >= Count) then raise Exception.Create('Out of bounds.') else begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin SetLength(w, Windows.SendMessageW(FWin32List, FFlagGetTextLen, Index, 0)); @@ -180,12 +170,6 @@ Windows.SendMessage(FWin32List, FFlagGetText, Index, LPARAM(PChar(s))); Result := AnsiToUtf8(s); end; - {$else} - Getmem(Item, Windows.SendMessage(FWin32List, FFlagGetTextLen, Index, 0)+1); - Windows.SendMessage(FWin32List, FFlagGetText, Index, LPARAM(Item)); - Result := Item; - FreeMem(Item); - {$endif} end; end; @@ -244,30 +228,24 @@ lItemIndex: Integer; begin if (FFlagGetCaretIndex <> 0) and (GetCount = 0) then - lItemIndex := SendMessage(FWin32List, FFlagGetCaretIndex, 0, 0); + lItemIndex := SendMessage(FWin32List, FFlagGetCaretIndex, 0, 0) + else + lItemIndex := -1; FLastInsertedIndex := Index; if FSorted then begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then FLastInsertedIndex := Windows.SendMessageW(FWin32List, FFlagAddString, 0, LPARAM(PWideChar(UTF8ToUTF16(S)))) else FLastInsertedIndex := Windows.SendMessage(FWin32List, FFlagAddString, 0, LPARAM(PChar(Utf8ToAnsi(S)))); - {$else} - FLastInsertedIndex := Windows.SendMessage(FWin32List, FFlagAddString, 0, LPARAM(PChar(S))); - {$endif} end else begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Windows.SendMessageW(FWin32List, FFlagInsertString, Index, LPARAM(PWideChar(UTF8ToUTF16(S)))) else Windows.SendMessage(FWin32List, FFlagInsertString, Index, LPARAM(PChar(Utf8ToAnsi(S)))); - {$else} - Windows.SendMessage(FWin32List, FFlagInsertString, Index, LPARAM(PChar(S))); - {$endif} end; if (FFlagSetCaretIndex <> 0) and (GetCount = 1) then @@ -281,6 +259,7 @@ AData: Pointer; begin // remember selection + lSelected := False; lItemIndex := -1; if FFlagGetSelected <> 0 then begin @@ -304,10 +283,8 @@ RestoreData(Index, AData); if lSelected then - begin if (FFlagSetSelected = 0) or (SendMessage(FWin32List, FFlagSetSelected, Windows.WParam(true), lItemIndex) = -1) then SendMessage(FWin32List, FFlagSetItemIndex, lItemIndex, 0); - end; end; {------------------------------------------------------------------------------ diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32memostrings.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32memostrings.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32memostrings.inc 2014-11-07 14:52:30.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32memostrings.inc 2015-11-27 18:19:40.000000000 +0000 @@ -38,27 +38,18 @@ function TWin32MemoStrings.GetLineLength(Index: Integer): Integer; begin - //{$ifdef WindowsUnicodeSupport}{$else}{$endif WindowsUnicodeSupport} - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Result := Integer(SendMessageW(FHandle, EM_LINELENGTH, SendMessageW(FHandle, EM_LINEINDEX, Index, 0), 0)) else Result := Integer(SendMessage(FHandle, EM_LINELENGTH, SendMessage(FHandle, EM_LINEINDEX, Index, 0), 0)); - {$else} - Result := Integer(SendMessage(FHandle, EM_LINELENGTH, SendMessage(FHandle, EM_LINEINDEX, Index, 0), 0)); - {$endif WindowsUnicodeSupport} end; function TWin32MemoStrings.GetLineStart(Index: Integer): Integer; begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Result := Integer(SendMessageW(FHandle, EM_LINEINDEX, Index, 0)) else Result := Integer(SendMessage(FHandle, EM_LINEINDEX, Index, 0)); - {$else} - Result := Integer(SendMessage(FHandle, EM_LINEINDEX, Index, 0)); - {$endif WindowsUnicodeSupport} end; function TWin32MemoStrings.GetTextStr: string; @@ -80,10 +71,8 @@ function TWin32MemoStrings.Get(Index: Integer): string; var len: Integer; -{$ifdef WindowsUnicodeSupport} WideBuffer: WideString; AnsiBuffer: string; -{$endif WindowsUnicodeSupport} begin len := GetLineLength(Index); if len=0 then @@ -91,7 +80,6 @@ Result := ''; exit; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin Setlength(WideBuffer, len); @@ -108,17 +96,6 @@ Result := AnsiToUtf8(AnsiBuffer); end; -{$else} - Setlength(Result, len); - - // no need for temp buf and moving - // the result is without null terminator. - PWord(@Result[1])^ := len+1; - len := SendMessage(FHandle, EM_GETLINE, Index, lparam(pchar(Result))); - - // read just length in case something went wrong - Setlength(Result, len); -{$endif} end; procedure TWin32MemoStrings.SetUpdateState(Updating: Boolean); @@ -176,7 +153,6 @@ LineStart := GetLineStart(Index); LineEnd := GetLineStart(Index+1); if LineEnd < 0 then LineEnd := LineStart+GetLineLength(Index); - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin SendMessageW(FHandle, EM_SETSEL, LineStart, LineEnd); @@ -187,10 +163,6 @@ SendMessage(FHandle, EM_SETSEL, LineStart, LineEnd); SendMessage(FHandle, EM_REPLACESEL,0 , lparam(PChar(''))); end; - {$else} - SendMessage(FHandle, EM_SETSEL, LineStart, LineEnd); - SendMessage(FHandle, EM_REPLACESEL,0 , lparam(PChar(''))); - {$endif WindowsUnicodeSupport} end; procedure TWin32MemoStrings.Insert(Index: integer; const S: string); @@ -204,7 +176,6 @@ //insert with LineEnding LineStart := GetLineStart(Index); NewLine := S+LineEnding; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin @@ -216,36 +187,24 @@ SendMessage(FHandle, EM_SETSEL, LineStart, LineStart); SendMessage(FHandle, EM_REPLACESEL, 0, lparam(Utf8ToAnsi(NewLine))) end; - {$else} - SendMessage(FHandle, EM_SETSEL, LineStart, LineStart); - SendMessage(FHandle, EM_REPLACESEL, 0, lparam(PChar(NewLine))); - {$endif WindowsUnicodeSupport} end else begin //append with a preceding LineEnding LineStart := GetLineStart(Index-1)+GetLineLength(Index-1); - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SendMessageW(FHandle, EM_SETSEL, LineStart, LineStart) else SendMessage(FHandle, EM_SETSEL, LineStart, LineStart); - {$else} - SendMessage(FHandle, EM_SETSEL, LineStart, LineStart); - {$endif WindowsUnicodeSupport} if GetRealCount = Count then NewLine := LineEnding+S+LineEnding else NewLine := S+LineEnding; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SendMessageW(FHandle, EM_REPLACESEL, 0, lparam(PWideChar(UTF8ToUTF16(NewLine)))) else SendMessage(FHandle, EM_REPLACESEL, 0, lparam(Utf8ToAnsi(NewLine))); - {$else} - SendMessage(FHandle, EM_REPLACESEL, 0, lparam(PChar(NewLine))); - {$endif} end; end; @@ -257,13 +216,9 @@ AdjustedValue := AdjustLineBreaks(Value); if (AdjustedValue <> Text) then begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Windows.SetWindowTextW(FHandle, PWideChar(UTF8ToUTF16(AdjustedValue))) else Windows.SetWindowText(FHandle, PChar(Utf8ToAnsi(AdjustedValue))); - {$else} - SendMessage(FHandle, WM_SETTEXT, 0, LPARAM(PChar(AdjustedValue))); - {$endif} FillChar(Msg, SizeOf(Msg), 0); Msg.Msg := CM_TEXTCHANGED; DeliverMessage(Owner, Msg); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32object.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32object.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32object.inc 2014-02-09 19:54:57.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32object.inc 2015-11-27 18:19:40.000000000 +0000 @@ -362,14 +362,10 @@ break; end; TranslateMessage(@AMessage); -{$IFDEF WindowsUnicodeSupport} if UnicodeEnabledOS then DispatchMessageW(@AMessage) else DispatchMessage(@AMessage); -{$ELSE} - DispatchMessage(@AMessage); -{$ENDIF} end; end else if retVal = WAIT_TIMEOUT then @@ -472,14 +468,10 @@ begin if FAppHandle <> 0 then begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Windows.SetWindowTextW(FAppHandle, PWideChar(UTF8ToUTF16(ATitle))) else Windows.SetWindowText(FAppHandle, PChar(Utf8ToAnsi(ATitle))); - {$else} - Windows.SetWindowText(FAppHandle, PChar(ATitle)); - {$endif} end; end; @@ -534,12 +526,7 @@ lcApplicationWindow: Result := LCL_CAPABILITY_YES; lcLMHelpSupport: Result := LCL_CAPABILITY_YES; lcNeedMininimizeAppWithMainForm: Result := LCL_CAPABILITY_NO; - lcSendsUTF8KeyPress: - {$ifdef WindowsUnicodeSupport} - Result := LCL_CAPABILITY_YES; - {$else} - Result := LCL_CAPABILITY_NO; - {$endif} + lcSendsUTF8KeyPress: Result := LCL_CAPABILITY_YES; else Result := inherited; end; @@ -686,7 +673,6 @@ var SysMenu: HMENU; begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then FAppHandle := CreateWindowW(@ClsNameW, PWideChar(UTF8ToUTF16(Application.Title)), @@ -700,13 +686,6 @@ 0, {Windows.GetSystemMetrics(SM_CXSCREEN) div 2,} 0, {Windows.GetSystemMetrics(SM_CYSCREEN) div 2,} 0, 0, HWND(nil), HMENU(nil), HInstance, nil); - {$else} - FAppHandle := CreateWindow(@ClsName, PChar(Application.Title), WS_POPUP or - WS_CLIPSIBLINGS or WS_SYSMENU or WS_MINIMIZEBOX, - 0, {Windows.GetSystemMetrics(SM_CXSCREEN) div 2,} - 0, {Windows.GetSystemMetrics(SM_CYSCREEN) div 2,} - 0, 0, HWND(nil), HMENU(nil), HInstance, nil); - {$endif} AllocWindowInfo(FAppHandle); // remove useless menuitems from sysmenu SysMenu := Windows.GetSystemMenu(FAppHandle, False); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32pagecontrol.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32pagecontrol.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32pagecontrol.inc 2015-05-06 22:35:10.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32pagecontrol.inc 2015-11-27 18:19:40.000000000 +0000 @@ -185,7 +185,6 @@ if PtrUInt(TCI.lParam) = PtrUInt(AWinControl) then begin TCI.mask := TCIF_TEXT; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin TCI.pszText := PChar(PWideChar(UTF8ToUTF16(AText))); @@ -196,10 +195,6 @@ TCI.pszText := PChar(UTF8ToAnsi(AText)); Windows.SendMessage(TabControlHandle, TCM_SETITEM, RealIndex, LPARAM(@TCI)); end; -{$else} - TCI.pszText := PChar(AText); - Windows.SendMessage(TabControlHandle, TCM_SETITEM, RealIndex, LPARAM(@TCI)); -{$endif} LCLControlSizeNeedsUpdate(TabControl, True); end; end; @@ -344,7 +339,6 @@ // store object as extra, so we can verify we got the right page later TCI.lParam := PtrInt(AChild); TCI.iImage := ATabControl.GetImageIndex(ATabControl.TabToPageIndex(AIndex)); - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin TCI.pszText := PChar(PWideChar(UTF8ToUTF16(AChild.Caption))); @@ -355,10 +349,6 @@ TCI.pszText := PChar(Utf8ToAnsi(AChild.Caption)); Windows.SendMessage(Handle, TCM_INSERTITEM, AIndex, LPARAM(@TCI)); end; - {$else} - TCI.pszText := PChar(AChild.Caption); - Windows.SendMessage(Handle, TCM_INSERTITEM, AIndex, LPARAM(@TCI)); - {$endif} end; // clientrect possible changed, adding first tab, or deleting last // windows should send a WM_SIZE message because of this, but it doesn't @@ -382,17 +372,12 @@ Index := AChild.VisibleIndex; TCI.Mask := TCIF_IMAGE or TCIF_PARAM; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Windows.SendMessage(ATabControl.Handle, TCM_GETITEMW, Windows.WPARAM(Index), LParam(@TCI)) else Windows.SendMessage(ATabControl.Handle, TCM_GETITEM, Windows.WPARAM(Index), LParam(@TCI)); - {$else} - Windows.SendMessage(ATabControl.Handle, TCM_GETITEM, Windows.WPARAM(Index), LParam(@TCI)); - {$endif} Windows.SendMessage(ATabControl.Handle, TCM_DELETEITEM, Windows.WPARAM(Index), 0); TCI.Mask := TCI.Mask or TCIF_TEXT; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin TCI.pszText := PChar(PWideChar(UTF8ToUTF16(AChild.Caption))); @@ -403,10 +388,6 @@ TCI.pszText := PChar(Utf8ToAnsi(AChild.Caption)); Windows.SendMessage(ATabControl.Handle, TCM_INSERTITEM, NewIndex, LPARAM(@TCI)); end; - {$else} - TCI.pszText := PChar(AChild.Caption); - Windows.SendMessage(ATabControl.Handle, TCM_INSERTITEM, NewIndex, LPARAM(@TCI)); - {$endif} if LCLControlSizeNeedsUpdate(ATabControl, True) then AdjustSizeTabControlPages(ATabControl); end; @@ -487,7 +468,6 @@ TCI.Mask := TCIF_TEXT or TCIF_PARAM or TCIF_IMAGE; TCI.lParam := PtrUInt(APage); TCI.iImage := ATabControl.GetImageIndex(I); -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin TCI.pszText := PChar(PWideChar(UTF8ToUTF16(APage.Caption))); @@ -498,10 +478,6 @@ TCI.pszText := PChar(Utf8ToAnsi(APage.Caption)); Windows.SendMessage(WinHandle, TCM_INSERTITEM, RealIndex, LPARAM(@TCI)); end; -{$else} - TCI.pszText := PChar(APage.Caption); - Windows.SendMessage(WinHandle, TCM_INSERTITEM, RealIndex, LPARAM(@TCI)); -{$endif} end; Inc(RealIndex); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32proc.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32proc.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32proc.pp 2014-09-16 18:16:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32proc.pp 2015-11-27 18:19:40.000000000 +0000 @@ -23,7 +23,8 @@ uses Windows, Win32Extra, Classes, SysUtils, - LMessages, LCLType, LCLProc, LCLMessageGlue,Controls, Forms, Menus, GraphType, IntfGraphics; + LMessages, LCLType, LCLProc, LCLMessageGlue, LazUTF8, Controls, Forms, Menus, + GraphType, IntfGraphics; const LV_DISP_INFO_COUNT = 2; @@ -150,6 +151,8 @@ //wvServer2008, // has the same major/minor as wvVista wv7, wv8, + wv8_1, + wv10, wvLater ); @@ -1038,12 +1041,9 @@ function GetControlText(AHandle: HWND): string; var TextLen: dword; -{$ifdef WindowsUnicodeSupport} AnsiBuffer: string; WideBuffer: WideString; -{$endif} begin -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin TextLen := Windows.GetWindowTextLengthW(AHandle); @@ -1062,13 +1062,6 @@ SetLength(AnsiBuffer, TextLen); Result := AnsiToUtf8(AnsiBuffer); end; - - {$else} - TextLen := GetWindowTextLength(AHandle); - SetLength(Result, TextLen); - GetWindowText(AHandle, PChar(Result), TextLen + 1); - - {$endif} end; procedure FillRawImageDescriptionColors(var ADesc: TRawImageDescription); @@ -1185,7 +1178,8 @@ FullScanLine := Win32Platform = VER_PLATFORM_WIN32_WINDOWS; if FullScanLine - then ScanLine := GetMem(AWinBmp.bmWidthBytes); + then ScanLine := GetMem(AWinBmp.bmWidthBytes) + else ScanLine := nil; FillChar(Info.Header, sizeof(Windows.TBitmapInfoHeader), 0); Info.Header.biSize := sizeof(Windows.TBitmapInfoHeader); @@ -1638,6 +1632,13 @@ 1: WindowsVersion := wv7; 2: WindowsVersion := wv8; else + WindowsVersion := wv8_1; + end; + end; + 10: begin + case Win32MinorVersion of + 0: WindowsVersion := wv10; + else WindowsVersion := wvLater; end; end; @@ -1652,10 +1653,7 @@ DefaultWindowInfo.DrawItemIndex := -1; WindowInfoAtom := Windows.GlobalAddAtom('WindowInfo'); ChangedMenus := TFPList.Create; - - {$ifdef WindowsUnicodeSupport} UnicodeEnabledOS := (Win32Platform = VER_PLATFORM_WIN32_NT); - {$endif} if WindowsVersion = wvUnknown then UpdateWindowsVersion; end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32themes.pas lazarus-1.6+dfsg/lcl/interfaces/win32/win32themes.pas --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32themes.pas 2014-11-24 10:39:01.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32themes.pas 2015-11-27 18:19:40.000000000 +0000 @@ -11,7 +11,7 @@ // rtl Classes, SysUtils, // lcl - Controls, Graphics, Themes, LCLProc, LCLType; + Controls, Graphics, Themes, LCLType, LazUTF8; type @@ -461,8 +461,7 @@ W := GetSystemMetrics(SM_CXVSCROLL); H := GetSystemMetrics(SM_CYHSCROLL); InflateRect(EmptyRect, -2, -2); - with EmptyRect do - EmptyRect := Rect(Right - W, Bottom - H, Right, Bottom); + EmptyRect := Rect(EmptyRect.Right - W, EmptyRect.Bottom - H, EmptyRect.Right, EmptyRect.Bottom); FillRect(DC, EmptyRect, GetSysColorBrush(COLOR_BTNFACE)); end; end; @@ -488,21 +487,15 @@ procedure TWin32ThemeServices.DrawText(DC: HDC; Details: TThemedElementDetails; const S: String; R: TRect; Flags, Flags2: Cardinal); -{$IFDEF WindowsUnicodeSupport} var w: widestring; -{$ENDIF} begin if ThemesEnabled then with Details do -{$IFDEF WindowsUnicodeSupport} begin w := UTF8ToUTF16(S); DrawThemeText(Theme[Element], DC, Part, State, PWideChar(w), Length(w), Flags, Flags2, R); end -{$ELSE} - DrawThemeText(Theme[Element], DC, Part, State, PWideChar(WideString(S)), Length(S), Flags, Flags2, R) -{$ENDIF} else inherited; end; @@ -548,21 +541,15 @@ procedure TWin32ThemeServices.DrawTextEx(DC: HDC; Details: TThemedElementDetails; const S: String; R: TRect; Flags: Cardinal; Options: PDTTOpts); -{$IFDEF WindowsUnicodeSupport} var w: widestring; -{$ENDIF} begin if ThemesEnabled and (DrawThemeTextEx <> nil) then with Details do -{$IFDEF WindowsUnicodeSupport} begin w := UTF8ToUTF16(S); DrawThemeTextEx(Theme[Element], DC, Part, State, PWideChar(w), Length(w), Flags, @R, Options); end -{$ELSE} - DrawThemeTextEx(Theme[Element], DC, Part, State, PWideChar(WideString(S)), Length(S), Flags, @R, Options) -{$ENDIF} else DrawText(DC, Details, S, R, Flags, 0); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32trayicon.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32trayicon.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32trayicon.inc 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32trayicon.inc 2015-11-27 18:19:40.000000000 +0000 @@ -156,13 +156,10 @@ class function TWin32WSCustomTrayIcon.AddIcon(ATrayIcon: TCustomTrayIcon): Boolean; var tnida: TNotifyIconDataA; - {$ifdef WindowsUnicodeSupport} tnidw: TNotifyIconDataW2; AnsiBuffer: ansistring; WideBuffer: widestring; - {$endif} begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin // Fill TNotifyIconDataW @@ -204,22 +201,6 @@ Result := Shell_NotifyIconA(NIM_ADD, @tnida); end; - {$else} - // Fill TNotifyIconDataA - FillChar(tnida, SizeOf(tnida), 0); - tnida.cbSize := SizeOf(TNotifyIconDataA); - tnida.hWnd := ATrayIcon.Handle; - tnida.uID := uIDTrayIcon; - tnida.uFlags := NIF_MESSAGE or NIF_ICON; - if (ATrayIcon.Hint <> '') then tnida.uFlags := tnida.uFlags or NIF_TIP; - tnida.uCallbackMessage := WM_USER + uIDTrayIcon; - tnida.hIcon := ATrayIcon.Icon.Handle; - - StrLCopy(@tnida.szTip, PChar(ATrayIcon.Hint), 127); - - // Create Taskbar icon - Result := Shell_NotifyIconA(NIM_ADD, @tnida); - {$endif} end; {******************************************************************* @@ -308,13 +289,10 @@ class procedure TWin32WSCustomTrayIcon.InternalUpdate(const ATrayIcon: TCustomTrayIcon); var tnida: TNotifyIconDataA; - {$ifdef WindowsUnicodeSupport} tnidw: TNotifyIconDataW2; AnsiBuffer: ansistring; WideBuffer: widestring; - {$endif} begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin // Fill TNotifyIconDataW @@ -351,19 +329,6 @@ Shell_NotifyIconA(NIM_MODIFY, @tnida); end; - {$else} - // Fill TNotifyIconDataA - FillChar(tnida, SizeOf(tnida), 0); - tnida.cbSize := SizeOf(TNotifyIconDataA); - tnida.hWnd := ATrayIcon.Handle; - tnida.uID := uIDTrayIcon; - tnida.uFlags := NIF_TIP; - - StrLCopy(@tnida.szTip, PChar(ATrayIcon.Hint), 127); - - // Create Taskbar icon - Shell_NotifyIconA(NIM_MODIFY, @tnida); - {$endif} end; {******************************************************************* diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32winapi.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32winapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32winapi.inc 2014-11-13 15:17:28.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32winapi.inc 2015-12-31 10:10:25.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit win32int.pp} -{ $Id: win32winapi.inc 46835 2014-11-13 15:17:28Z jesus $ } +{ $Id: win32winapi.inc 51095 2015-12-31 10:10:25Z ondrej $ } {****************************************************************************** All Windows API implementations. @@ -356,11 +356,9 @@ DbgFormatID: integer; {$ENDIF} Bitmap: TBitmap; - {$IFDEF WindowsUnicodeSupport} BufferStream: TMemoryStream; BufferWideString: widestring; BufferString: ansistring; - {$ENDIF} function ReadClipboardToStream(DestStream: TStream): Boolean; begin @@ -413,7 +411,6 @@ Bitmap.Free; Result := true; end; - {$IFDEF WindowsUnicodeSupport} { In the case of unicode text, it's necessary to convert it from UTF-16 to UTF-8 } Windows.CF_UNICODETEXT, Windows.CF_TEXT: @@ -451,7 +448,6 @@ BufferStream.Free; end; end - {$ENDIF} else Result := ReadClipboardToStream(Stream) end; @@ -551,10 +547,8 @@ var DataStream, BufferStream: TStream; Bitmap: TBitmap; - {$IFDEF WindowsUnicodeSupport} BufferWideString: widestring; BufferString: ansistring; - {$ENDIF} ScreenDC, MemDC: HDC; OldBitmap, NewBitmap, Mask: HBitmap; begin @@ -593,7 +587,6 @@ Bitmap.Free; end; end; - {$IFDEF WindowsUnicodeSupport} Windows.CF_UNICODETEXT, Windows.CF_TEXT: // CF_UNICODETEXT is used by UnicodeEnabledOS, CF_TEXT by others // we need to convert it from UTF8 to UTF16 or Ansi @@ -617,9 +610,6 @@ end; WriteStreamToClipBoard(FormatID, BufferStream); end - {$ELSE} - // no clipboard support without unicode anymore - {$ENDIF} else begin WriteStreamToClipBoard(FormatID, DataStream); @@ -704,13 +694,9 @@ ): TClipboardFormat; begin if AMimeType=PredefinedClipboardMimeTypes[pcfText] then - {$IFDEF WindowsUnicodeSupport} if UnicodeEnabledOS then Result := Windows.CF_UNICODETEXT else Result := Windows.CF_TEXT - {$ELSE} - Result := Windows.CF_TEXT - {$ENDIF} else if (AMimeType=PredefinedClipboardMimeTypes[pcfBitmap]) then Result := Windows.CF_BITMAP else @@ -845,12 +831,8 @@ ------------------------------------------------------------------------------} function TWin32WidgetSet.CreateFontIndirect(const LogFont: TLogFont): HFONT; var -{$ifdef WindowsUnicodeSupport} TempLogFontW: TLogFontW; TempLogFont: TLogFontA absolute TempLogFontW; -{$else} - TempLogFont: TLogFont; -{$endif} FontName: String; begin FontName := LogFont.lfFaceName; @@ -858,34 +840,24 @@ TempLogFont := LogFont; if FontName = DefFontData.Name then begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then TempLogFontW.lfFaceName := UTF8ToUTF16(FMetrics.lfMessageFont.lfFaceName) // FMetrics must be UTF16 else Move(FMetrics.lfMessageFont.lfFaceName, TempLogFont.lfFaceName, LF_FACESIZE); - {$else} - Move(FMetrics.lfMessageFont.lfFaceName, TempLogFont.lfFaceName, LF_FACESIZE); - {$endif} if TempLogFont.lfHeight = 0 then TempLogFont.lfHeight := FMetrics.lfMessageFont.lfHeight; end else begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then TempLogFontW.lfFaceName := UTF8ToUTF16(FontName) else TempLogFont.lfFaceName := Utf8ToAnsi(FontName); - {$endif} end; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Result := Windows.CreateFontIndirectW(@TempLogFontW) else Result := Windows.CreateFontIndirectA(@TempLogFont) - {$else} - Result := Windows.CreateFontIndirect(@TempLogFont); - {$endif} end; {------------------------------------------------------------------------------ @@ -1127,7 +1099,6 @@ ------------------------------------------------------------------------------} function TWin32WidgetSet.DrawText(DC: HDC; Str: PChar; Count: Integer; var Rect: TRect; Flags: Cardinal): Integer; -{$ifdef WindowsUnicodeSupport} var s: AnsiString; w: WideString; @@ -1136,9 +1107,7 @@ aABC: ABC; paABC: LPABC; len: Integer; -{$endif} begin - {$ifdef WindowsUnicodeSupport} // use temp buffer, if count is set, there might be no null terminator if count = -1 then s := str @@ -1193,9 +1162,6 @@ end; end; - {$else} - Result := Windows.DrawText(DC, Str, Count, @Rect, Flags); - {$endif} end; {------------------------------------------------------------------------------ @@ -1285,7 +1251,6 @@ Windows.FontEnumProc(EnumFontFamProc), LParam); end; -{$ifdef WindowsUnicodeSupport} type TProcRedirRec = record LParam: LParam; @@ -1322,19 +1287,15 @@ Result := Rec^.CallBack(ALogFont, Metric, FontType, Rec^.LParam); end; -{$endif} function TWin32WidgetSet.EnumFontFamiliesEx(DC: HDC; lpLogFont: PLogFont; Callback: FontEnumExProc; LParam: Lparam; flags: dword): longint; -{$ifdef WindowsUnicodeSupport} var FontName: String; LFW: LogFontW; LFA: LogFontA absolute LFW; Rec: TProcRedirRec; -{$endif} begin -{$ifdef WindowsUnicodeSupport} FontName := lpLogFont^.lfFaceName; ZeroMemory(@LFW, SizeOf(LFW)); LFW.lfCharSet := lpLogFont^.lfCharSet; @@ -1353,11 +1314,6 @@ Result := LongInt(Windows.EnumFontFamiliesExA(DC, LFA, windows.FontEnumExProc(@EnumExProcRedirA), Windows.LParam(@Rec), Flags)); end; -{$else} - Result := Windows.EnumFontFamiliesEx(DC, - windows.LPLOGFONT(lpLogFont), - windows.FontEnumExProc(Callback), LParam, Flags); -{$endif} end; {------------------------------------------------------------------------------ @@ -1421,13 +1377,10 @@ ------------------------------------------------------------------------------} function TWin32WidgetSet.ExtTextOut(DC: HDC; X, Y: Integer; Options: LongInt; Rect: PRect; Str: PChar; Count: LongInt; Dx: PInteger): Boolean; -{$ifdef WindowsUnicodeSupport} var s: AnsiString; w: WideString; -{$ENDIF} begin -{$ifdef WindowsUnicodeSupport} // use temp buffer, if count is set, there might be no null terminator if count = -1 then s := str @@ -1449,9 +1402,6 @@ S := Utf8ToAnsi(S); Result := Windows.ExtTextOut(DC, X, Y, Options, LPRECT(Rect), PChar(S), Length(S), Dx); end; - {$else} - Result := Windows.ExtTextOut(DC, X, Y, Options, LPRECT(Rect), Str, Count, Dx); - {$endif} end; {------------------------------------------------------------------------------ @@ -1560,6 +1510,7 @@ var I: Integer; begin + // ToDo: Fix Result and the loop. "I" is not used for anything. for I := 0 to FrameWidth - 1 do Result := Boolean(DrawEdge(DC, ARect, Edge[Style], BF_RECT or BF_ADJUST)); end; @@ -1927,12 +1878,9 @@ end; function TWin32WidgetSet.GetMonitorInfo(hMonitor: HMONITOR; lpmi: LCLType.PMonitorInfo): Boolean; -{$IFDEF WindowsUnicodeSupport} var LocalInfo: TMonitorInfoExW; -{$ENDIF} begin - {$IFDEF WindowsUnicodeSupport} if (lpmi <> nil) and (lpmi^.cbSize >= SizeOf(TMonitorInfoEx)) then begin if UnicodeEnabledOS then @@ -1944,11 +1892,12 @@ lpmi^.dwFlags := LocalInfo.dwFlags; PMonitorInfoEx(lpmi)^.szDevice := UTF16ToUTF8(LocalInfo.szDevice); end - else + else begin PMonitorInfoEx(lpmi)^.szDevice := AnsiToUtf8(PMonitorInfoEx(lpmi)^.szDevice); + Result := True; + end; end else - {$ENDIF} Result := MultiMon.GetMonitorInfo(hMonitor, LPMonitorInfo(lpmi)); end; @@ -1962,13 +1911,10 @@ Gets information about a specified graphics object. ------------------------------------------------------------------------------} function TWin32WidgetSet.GetObject(GDIObj: HGDIOBJ; BufSize: Integer; Buf: Pointer): Integer; -{$ifdef WindowsUnicodeSupport} var LF: PLogFontA absolute Buf; LFW: TLogFontW; -{$endif} begin - {$ifdef WindowsUnicodeSupport} if GetObjectType(GDIObj) = OBJ_FONT then begin if (UnicodeEnabledOS) and (BufSize = Sizeof(LOGFONTA)) then @@ -1986,7 +1932,6 @@ end; end else - {$endif} Result := Windows.GetObject(GDIObj, BufSize, Buf); end; @@ -2178,13 +2123,10 @@ Computes the width and height of the specified string of text. ------------------------------------------------------------------------------} function TWin32WidgetSet.GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; -{$ifdef WindowsUnicodeSupport} var s: AnsiString; w: WideString; -{$ENDIF} begin -{$ifdef WindowsUnicodeSupport} // use temp buffer, if count is set, there might be no null terminator if count = -1 then s := str @@ -2207,9 +2149,6 @@ s := Utf8ToAnsi(s); Result := Windows.GetTextExtentPoint32(DC, pchar(s), length(s), @Size); end; -{$else} - Result := Windows.GetTextExtentPoint32(DC, Str, Count, @Size); -{$endif} end; {------------------------------------------------------------------------------ @@ -2362,11 +2301,8 @@ procedure SetWidthHeightFromRect(const R: TRect); inline; begin - with R do - begin - Width := Right - Left; - Height := Bottom - Top; - end; + Width := R.Right - R.Left; + Height := R.Bottom - R.Top; end; begin @@ -2636,20 +2572,14 @@ and includes buttons. ------------------------------------------------------------------------------} function TWin32WidgetSet.MessageBox(HWnd: HWND; LPText, LPCaption: PChar; UType: Cardinal): Integer; -{$ifdef WindowsUnicodeSupport} var WideLPText, WideLPCaption: widestring; -{$endif} begin - {$ifdef WindowsUnicodeSupport} WideLPText := UTF8ToUTF16(string(LPText)); WideLPCaption := UTF8ToUTF16(string(LPCaption)); Result := Windows.MessageBoxW(HWnd, PWideChar(WideLPText), PWideChar(WideLPCaption), UType); - {$else} - Result := Windows.MessageBox(HWnd, LPText, LPCaption, UType); - {$endif} end; function TWin32WidgetSet.MonitorFromPoint(ptScreenCoords: TPoint; dwFlags: DWord): HMONITOR; @@ -2714,14 +2644,10 @@ function TWin32WidgetSet.PeekMessage(var LPMsg: TMsg; Handle: HWND; WMsgFilterMin, WMsgFilterMax, WRemoveMsg: UINT): Boolean; begin - {$IFDEF WindowsUnicodeSupport} if UnicodeEnabledOS then Result := Boolean(Windows.PeekMessageW(@LPMsg, Handle, WMsgFilterMin, WMsgFilterMax, WRemoveMsg)) else Result := Boolean(Windows.PeekMessage(@LPMsg, Handle, WMsgFilterMin, WMsgFilterMax, WRemoveMsg)); - {$ELSE} - Result := Boolean(Windows.PeekMessage(@LPMsg, Handle, WMsgFilterMin, WMsgFilterMax, WRemoveMsg)); - {$ENDIF} end; function TWin32WidgetSet.Pie(DC: HDC; EllipseX1, EllipseY1, EllipseX2, @@ -2736,7 +2662,7 @@ Params: DC, Points, NumPts, Filled, Continous Returns: Boolean - Use Polybezier to draw cubic Bézier curves. The first curve is drawn from the + Use Polybezier to draw cubic Bzier curves. The first curve is drawn from the first point to the fourth point with the second and third points being the control points. If the Continuous flag is TRUE then each subsequent curve requires three more points, using the end-point of the previous Curve as its @@ -2746,7 +2672,7 @@ excatly as in the first curve. Any additonal points which do not add up to a full bezier(4 for Continuous, 3 otherwise) are ingored. There must be at least 4 points for an drawing to occur. If the Filled Flag is set to TRUE - then the resulting Poly-Bézier will be drawn as a Polygon. + then the resulting Poly-Bzier will be drawn as a Polygon. ------------------------------------------------------------------------------} function TWin32WidgetSet.PolyBezier(DC: HDC; Points: PPoint; NumPts: Integer; @@ -3130,6 +3056,7 @@ begin Result:= ThemeServices.ThemesEnabled and boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0)); + Result := Result and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0)); end; {------------------------------------------------------------------------------ @@ -3648,6 +3575,9 @@ Blend.BlendFlags := 0; Blend.SourceConstantAlpha := 255; Blend.AlphaFormat := AC_SRC_ALPHA; + end + else begin + // ToDo: Initialize AlphaDC, AlphaObj and Blend. end; Windows.SetBrushOrgEx(DestDC, 0, 0, nil); @@ -3759,17 +3689,11 @@ selected font. ------------------------------------------------------------------------------} function TWin32WidgetSet.TextOut(DC: HDC; X, Y: Integer; Str: PChar; Count: Integer): Boolean; -{$ifdef WindowsUnicodeSupport} var ws: widestring; -{$endif} begin -{$ifdef WindowsUnicodeSupport} ws := UTF8ToUTF16(copy(str,1,Count)); Result := Boolean(Windows.TextOutW(DC, X, Y, PWideChar(ws), length(ws))); -{$else} - Result := Boolean(Windows.TextOut(DC, X, Y, Str, Count)); -{$endif} end; function TWin32WidgetSet.UpdateWindow(Handle: HWND): Boolean; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsbuttons.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsbuttons.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsbuttons.pp 2013-06-13 07:31:40.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsbuttons.pp 2015-11-27 18:19:40.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsbuttons.pp 41698 2013-06-13 07:31:40Z paul $} +{ $Id: win32wsbuttons.pp 50515 2015-11-27 18:19:40Z bart $} { ***************************************************************************** * Win32WSButtons.pp * @@ -29,7 +29,7 @@ // uncomment only when needed for registration //////////////////////////////////////////////////// Windows, CommCtrl, Classes, Buttons, Graphics, GraphType, Controls, - LCLType, LCLProc, LCLMessageGlue, LMessages, Themes, + LCLType, LCLMessageGlue, LMessages, LazUTF8, Themes, //////////////////////////////////////////////////// WSProc, WSButtons, Win32WSControls, Win32WSImgList, UxTheme, Win32Themes; @@ -133,10 +133,8 @@ BitmapRect: Windows.RECT; ButtonImageList: BUTTON_IMAGELIST; I: integer; - {$IFDEF WindowsUnicodeSupport} ButtonCaptionA: string; ButtonCaptionW: widestring; - {$ENDIF} procedure DrawBitmap(AState: TButtonState; UseThemes, AlphaDraw: Boolean); const @@ -253,7 +251,6 @@ SetBkMode(TmpDC, TRANSPARENT); if BitBtn.UseRightToLeftReading then SetTextAlign(TmpDC, OldTextAlign or TA_RTLREADING); - {$IFDEF WindowsUnicodeSupport} if UnicodeEnabledOS then begin ButtonCaptionW := UTF8ToUTF16(ButtonCaption); @@ -263,9 +260,6 @@ ButtonCaptionA := Utf8ToAnsi(ButtonCaption); DrawState(TmpDC, 0, nil, LPARAM(ButtonCaptionA), 0, XDestText, YDestText, 0, 0, TextFlags); end; - {$ELSE} - DrawState(TmpDC, 0, nil, LPARAM(ButtonCaption), 0, XDestText, YDestText, 0, 0, TextFlags); - {$ENDIF} end else begin @@ -295,6 +289,7 @@ EndBufferedPaint(PaintBuffer, True); NewBitmap := SelectObject(hdcNewBitmap, OldBitmapHandle); end; + var RGBA: PRGBAQuad; AlphaDraw: Boolean; @@ -321,6 +316,8 @@ srcWidth := 0; srcHeight := 0; end; + newWidth := 0; + newHeight := 0; BitBtnLayout := BidiAdjustButtonLayout(BitBtn.UseRightToLeftReading, BitBtn.Layout); BitBtnDC := GetDC(BitBtnHandle); hdcNewBitmap := CreateCompatibleDC(BitBtnDC); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscalendar.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscalendar.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscalendar.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscalendar.pp 2015-11-11 14:59:27.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wscalendar.pp 41387 2013-05-24 18:30:06Z juha $} +{ $Id: win32wscalendar.pp 50306 2015-11-11 14:59:27Z mattias $} { ***************************************************************************** * Win32WSCalendar.pp * @@ -127,8 +127,7 @@ ST: SystemTime; begin SendMessage(ACalendar.Handle, MCM_GETCURSEL, 0, LPARAM(@ST)); - with ST do - Result := EncodeDate(WYear,WMonth,WDay); + Result := EncodeDate(ST.WYear,ST.WMonth,ST.WDay); end; class function TWin32WSCustomCalendar.HitTest(const ACalendar: TCustomCalendar; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wschecklst.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wschecklst.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wschecklst.pp 2014-04-17 09:36:17.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wschecklst.pp 2015-11-27 18:19:40.000000000 +0000 @@ -27,8 +27,8 @@ // To get as little as posible circles, // uncomment only when needed for registration //////////////////////////////////////////////////// - Windows, Classes, Controls, CheckLst, StdCtrls, Themes, Graphics, LCLType, LCLProc, - LMessages, LCLMessageGlue, + Windows, Classes, Controls, CheckLst, StdCtrls, Themes, Graphics, LCLType, + LazUTF8, LMessages, LCLMessageGlue, //////////////////////////////////////////////////// WSCheckLst, WSLCLClasses, Win32Int, Win32Proc, Win32WSControls, Win32WSStdCtrls; @@ -184,10 +184,8 @@ OldColor: COLORREF; OldBkMode: Integer; sz: TSize; - {$ifdef WindowsUnicodeSupport} AnsiBuffer: string; WideBuffer: widestring; - {$endif} begin Selected := (Data^.itemState and ODS_SELECTED) > 0; Enabled := CheckListBox.Enabled and CheckListBox.ItemEnabled[Data^.itemID]; @@ -243,7 +241,6 @@ OldColor := TColorRef(CheckListBox.GetDefaultColor(dctFont)); OldColor := Windows.SetTextColor(Data^._HDC, ColorToRGB(TColor(OldColor))); end; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin WideBuffer := UTF8ToUTF16(CheckListBox.Items[Data^.ItemID]); @@ -256,10 +253,6 @@ Windows.DrawText(Data^._HDC, PChar(AnsiBuffer), -1, TextRect, TextFlags); end; - {$else} - Windows.DrawText(Data^._HDC, PChar(CheckListBox.Items[Data^.ItemID]), -1, - TextRect, TextFlags); - {$endif} // restore old colors Windows.SetTextColor(Data^._HDC, OldColor); Windows.SetBkMode(Data^._HDC, OldBkMode); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscomctrls.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscomctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscomctrls.pp 2014-09-25 16:04:11.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscomctrls.pp 2015-11-27 18:19:40.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wscomctrls.pp 46326 2014-09-25 16:04:11Z zeljko $} +{ $Id: win32wscomctrls.pp 50515 2015-11-27 18:19:40Z bart $} { ***************************************************************************** * Win32WSComCtrls.pp * @@ -24,11 +24,10 @@ uses // FCL CommCtrl, Windows, Classes, SysUtils, Math, Win32Extra, - ShellAPI, // LCL ComCtrls, LCLType, Controls, Graphics, Themes, ImgList, StdCtrls, Forms, LCLIntf, - LMessages, LCLProc, LCLMessageGlue, InterfaceBase, + LMessages, LazUTF8, LCLMessageGlue, InterfaceBase, // widgetset WSComCtrls, WSLCLClasses, WSControls, WSProc, // win32 widgetset @@ -295,7 +294,6 @@ begin Flags := WS_CHILD or WS_CLIPSIBLINGS or WS_CLIPCHILDREN; Parent := TWin32WidgetSet(WidgetSet).AppHandle; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then PreferredSizeStatusBar := CreateWindowExW(0, STATUSCLASSNAMEW, nil, Flags, @@ -303,10 +301,6 @@ else PreferredSizeStatusBar := CreateWindowEx(0, STATUSCLASSNAME, nil, Flags, 0, 0, 0, 0, Parent,0 , HInstance, nil); - {$else} - PreferredSizeStatusBar := CreateWindowEx(0, STATUSCLASSNAME, nil, - Flags, 0, 0, 0, 0, Parent, 0, HInstance, nil); - {$endif} GetWindowRect(PreferredSizeStatusBar, R); PreferredStatusBarHeight := R.Bottom - R.Top; DestroyWindow(PreferredSizeStatusBar); @@ -349,14 +343,10 @@ else WParam := WParam or StatusPanel.Index; if StatusPanel.StatusBar.UseRightToLeftReading then WParam := WParam or SBT_RTLREADING; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Windows.SendMessageW(StatusPanel.StatusBar.Handle, SB_SETTEXTW, WParam, LPARAM(PWideChar(UTF8ToUTF16(Text)))) else Windows.SendMessage(StatusPanel.StatusBar.Handle, SB_SETTEXT, WParam, LPARAM(PChar(Utf8ToAnsi(Text)))); - {$else} - Windows.SendMessage(StatusPanel.StatusBar.Handle, SB_SETTEXT, WParam, LPARAM(PChar(Text))); - {$endif} end; procedure UpdateStatusBarPanelWidths(const StatusBar: TStatusBar); @@ -441,7 +431,9 @@ // does the job very well too. // Note: this may produce trouble with embedded controls (e.g. progress bars). if WParam <> 0 then - Result := CallDefaultWindowProc(Window, Msg, WParam, LParam) or WVR_REDRAW; + Result := CallDefaultWindowProc(Window, Msg, WParam, LParam) or WVR_REDRAW + else + Result := 1; end; WM_ERASEBKGND: begin @@ -557,14 +549,10 @@ WParam := SB_SIMPLEID or SBT_RTLREADING else WParam := SB_SIMPLEID; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Windows.SendMessageW(AStatusBar.Handle, SB_SETTEXTW, WParam, LPARAM(PWideChar(UTF8ToUTF16(AStatusBar.SimpleText)))) else Windows.SendMessage(AStatusBar.Handle, SB_SETTEXT, WParam, LPARAM(PChar(Utf8ToAnsi(AStatusBar.SimpleText)))) - {$else} - Windows.SendMessage(AStatusBar.Handle, SB_SETTEXT, WParam, LPARAM(PChar(AStatusBar.SimpleText))) - {$endif} end else UpdateStatusBarPanel(AStatusBar.Panels[PanelIndex]); @@ -905,7 +893,7 @@ TBCD_CHANNEL: begin // Retrieve the bounding box for the thumb. - SendMessage(AWinControl.Handle, TBM_GETTHUMBRECT, 0, Integer(@R)); + SendMessage(AWinControl.Handle, TBM_GETTHUMBRECT, 0, PtrInt(@R)); // Extend this rectangle to the top/bottom or left/right border, respectively. Offset := 0; if TCustomTrackBar(Control).Orientation = trHorizontal then @@ -916,11 +904,8 @@ SystemParametersInfo(SPI_GETFOCUSBORDERWIDTH, 0, @FocusBorderWidth, 0); Inc(Offset, FocusBorderWidth); end; - with Control.ClientRect do - begin - R.Left := Left + Offset; - R.Right := Right - Offset; - end; + R.Left := Control.ClientRect.Left + Offset; + R.Right := Control.ClientRect.Right - Offset; end else begin @@ -930,14 +915,10 @@ SystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, @FocusBorderHeight, 0); Inc(Offset, FocusBorderHeight); end; - with Control.ClientRect do - begin - R.Top := Top + Offset; - R.Bottom := Bottom - Offset; - end; + R.Top := Control.ClientRect.Top + Offset; + R.Bottom := Control.ClientRect.Bottom - Offset; end; - with R do - Rgn := CreateRectRgn(Left, Top, Right, Bottom); + Rgn := CreateRectRgn(R.Left, R.Top, R.Right, R.Bottom); SelectClipRgn(PNMCustomDraw(LParam)^.hDC, Rgn); Details := ThemeServices.GetElementDetails(ttbThumbTics); ThemeServices.DrawParentBackground(AWinControl.Handle, PNMCustomDraw(LParam)^.hDC, @Details, False); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscontrols.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscontrols.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscontrols.pp 2014-09-25 22:42:33.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscontrols.pp 2015-12-23 13:12:36.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wscontrols.pp 46334 2014-09-25 22:42:33Z juha $} +{ $Id: win32wscontrols.pp 51007 2015-12-23 13:12:36Z ondrej $} { ***************************************************************************** * Win32WSControls.pp * @@ -32,7 +32,7 @@ //////////////////////////////////////////////////// WSControls, WSLCLClasses, SysUtils, Win32Proc, Win32Extra, WSProc, { LCL } - InterfaceBase, LCLType, LCLIntf, LCLProc, Themes, Forms; + InterfaceBase, LCLType, LCLIntf, LCLProc, LazUTF8, Themes, Forms; type { TWin32WSDragImageList } @@ -81,6 +81,7 @@ class procedure Invalidate(const AWinControl: TWinControl); override; class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); override; class procedure ShowHide(const AWinControl: TWinControl); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; { TWin32WSGraphicControl } @@ -177,9 +178,7 @@ AErrorCode: Cardinal; NCCreateParams: TNCCreateParams; WindowClass, DummyClass: WndClass; -{$ifdef WindowsUnicodeSupport} WindowClassW, DummyClassW: WndClassW; -{$endif} begin NCCreateParams.DefWndProc := nil; NCCreateParams.WinControl := AWinControl; @@ -191,7 +190,6 @@ begin if SubClass then begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin if GetClassInfoW(System.HInstance, PWideChar(WideString(pClassName)), @WindowClassW) then @@ -211,7 +209,6 @@ end; end else - {$endif} begin if GetClassInfo(System.HInstance, pClassName, @WindowClass) then begin @@ -231,7 +228,6 @@ end; end; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Window := CreateWindowExW(FlagsEx, PWideChar(WideString(pClassName)), PWideChar(UTF8ToUTF16(WindowTitle)), Flags, @@ -240,11 +236,6 @@ Window := CreateWindowEx(FlagsEx, pClassName, PChar(Utf8ToAnsi(WindowTitle)), Flags, Left, Top, Width, Height, Parent, 0, HInstance, @NCCreateParams); - {$else} - Window := CreateWindowEx(FlagsEx, pClassName, - PChar(WindowTitle), Flags, - Left, Top, Width, Height, Parent, 0, HInstance, @NCCreateParams); - {$endif} if Window = 0 then begin @@ -504,14 +495,10 @@ class procedure TWin32WSWinControl.SetText(const AWinControl: TWinControl; const AText: string); begin if not WSCheckHandleAllocated(AWincontrol, 'SetText') then Exit; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SendMessageW(AWinControl.Handle, WM_SETTEXT, 0, LPARAM(PWideChar(UTF8ToUTF16(AText)))) else SendMessage(AWinControl.Handle, WM_SETTEXT, 0, LPARAM(PChar(Utf8ToAnsi(AText)))); -{$else} - SendMessage(AWinControl.Handle, WM_SETTEXT, 0, LPARAM(PChar(AText))); -{$endif} end; class procedure TWin32WSWinControl.SetCursor(const AWinControl: TWinControl; const ACursor: HCursor); @@ -600,6 +587,13 @@ SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or VisibilityToFlag[AWinControl.HandleObjectShouldBeVisible]) end; +class procedure TWin32WSWinControl.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); +begin + if AWinControl.HandleAllocated then + ScrollWindowEx(AWinControl.Handle, DeltaX, DeltaY, nil, nil, 0, nil, SW_INVALIDATE or SW_ERASE or SW_SCROLLCHILDREN); +end; + { TWin32WSDragImageList } class function TWin32WSDragImageList.BeginDrag( diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscustomlistview.inc lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscustomlistview.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wscustomlistview.inc 2015-01-29 22:37:17.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wscustomlistview.inc 2015-11-27 18:19:40.000000000 +0000 @@ -1,5 +1,5 @@ {%MainUnit win32wscomctrls.pp} -{ $Id: win32wscustomlistview.inc 47565 2015-01-29 22:37:17Z maxim $ +{ $Id: win32wscustomlistview.inc 50515 2015-11-27 18:19:40Z bart $ ***************************************************************************** This file is part of the Lazarus Component Library (LCL) @@ -309,21 +309,16 @@ lvc.Mask := LVCF_TEXT; - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - lvc.pszText := PChar(PWideChar(UTF8ToUTF16(AColumn.Caption))); - SendMessage(ALV.Handle, LVM_INSERTCOLUMNW, WPARAM(AIndex), LPARAM(@lvc)); - end - else - begin - lvc.pszText := PChar(Utf8ToAnsi(AColumn.Caption)); - ListView_InsertColumn(ALV.Handle, AIndex, lvc); - end; - {$else} - lvc.pszText := PChar(AColumn.Caption); + if UnicodeEnabledOS then + begin + lvc.pszText := PChar(PWideChar(UTF8ToUTF16(AColumn.Caption))); + SendMessage(ALV.Handle, LVM_INSERTCOLUMNW, WPARAM(AIndex), LPARAM(@lvc)); + end + else + begin + lvc.pszText := PChar(Utf8ToAnsi(AColumn.Caption)); ListView_InsertColumn(ALV.Handle, AIndex, lvc); - {$endif} + end; end; class procedure TWin32WSCustomListView.ColumnMove(const ALV: TCustomListView; const AOldIndex, ANewIndex: Integer; const AColumn: TListColumn); @@ -405,21 +400,16 @@ lvc.Mask := LVCF_TEXT; - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - lvc.pszText := PChar(PWideChar(UTF8ToUTF16(AColumn.Caption))); - SendMessage(ALV.Handle, LVM_SETCOLUMNW, WPARAM(AIndex), LPARAM(@lvc)); - end - else - begin - lvc.pszText := PChar(Utf8ToAnsi(ACaption)); - ListView_SetColumn(ALV.Handle, AIndex, lvc); - end; - {$else} - lvc.pszText := PChar(ACaption); + if UnicodeEnabledOS then + begin + lvc.pszText := PChar(PWideChar(UTF8ToUTF16(AColumn.Caption))); + SendMessage(ALV.Handle, LVM_SETCOLUMNW, WPARAM(AIndex), LPARAM(@lvc)); + end + else + begin + lvc.pszText := PChar(Utf8ToAnsi(ACaption)); ListView_SetColumn(ALV.Handle, AIndex, lvc); - {$endif} + end; end; class procedure TWin32WSCustomListView.ColumnSetImage(const ALV: TCustomListView; const AIndex: Integer; const AColumn: TListColumn; const AImageIndex: Integer); @@ -530,7 +520,9 @@ B: Boolean; begin if ALV.CheckBoxes then - B := AItem.Checked; + B := AItem.Checked + else + B := False; ItemSetText(ALV, AIndex, AItem, 0, AItem.Caption); for i := 0 to AItem.SubItems.Count - 1 do ItemSetText(ALV, AIndex, AItem, i + 1, AItem.SubItems[i]); @@ -631,21 +623,16 @@ lvi.iSubItem := 0; lvi.lParam := LPARAM(AItem); - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - lvi.pszText := PChar(PWideChar(UTF8ToUTF16(AItem.Caption))); - SendMessage(ALV.Handle, LVM_INSERTITEMW, 0, LPARAM(@lvi)); - end - else - begin - lvi.pszText := PChar(Utf8ToAnsi(AItem.Caption)); - ListView_InsertItem(ALV.Handle, lvi); - end; - {$else} - lvi.pszText := PChar(AItem.Caption); + if UnicodeEnabledOS then + begin + lvi.pszText := PChar(PWideChar(UTF8ToUTF16(AItem.Caption))); + SendMessage(ALV.Handle, LVM_INSERTITEMW, 0, LPARAM(@lvi)); + end + else + begin + lvi.pszText := PChar(Utf8ToAnsi(AItem.Caption)); ListView_InsertItem(ALV.Handle, lvi); - {$endif} + end; end; class procedure TWin32WSCustomListView.ItemSetChecked(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem; const AChecked: Boolean); @@ -707,15 +694,12 @@ end; class procedure TWin32WSCustomListView.ItemSetText(const ALV: TCustomListView; const AIndex: Integer; const AItem: TListItem; const ASubIndex: Integer; const AText: String); -{$ifdef WindowsUnicodeSupport} var _gnu_lvi : LV_ITEM; -{$endif} begin if not WSCheckHandleAllocated(ALV, 'ItemSetText') then Exit; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin _gnu_lvi.iSubItem := ASubIndex; @@ -725,9 +709,6 @@ end else ListView_SetItemText(ALV.Handle, AIndex, ASubIndex, PChar(Utf8ToAnsi(AText))); - {$else} - ListView_SetItemText(ALV.Handle, AIndex, ASubIndex, PChar(AText)); - {$endif} // autosize is an *exteme* performance bottleneck, even if WM_SETREDRAW // was set to false it will ignore this and still redraw all columns. // We will therefore postpone all autosizing until EndUpdate where we do diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsdialogs.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsdialogs.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsdialogs.pp 2015-05-27 20:35:51.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsdialogs.pp 2015-11-28 23:18:25.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsdialogs.pp 49195 2015-05-27 20:35:51Z maxim $} +{ $Id: win32wsdialogs.pp 50522 2015-11-28 23:18:25Z bart $} { ***************************************************************************** * Win32WSDialogs.pp * @@ -32,7 +32,7 @@ Windows, shlobj, ShellApi, ActiveX, SysUtils, Classes, CommDlg, // lcl - LCLProc, LCLType, Dialogs, Controls, Graphics, Forms, FileUtil, Themes, Masks, + LCLProc, LCLType, LazUTF8, Dialogs, Controls, Graphics, Forms, LazFileUtils, Masks, // ws WSDialogs, WSLCLClasses, Win32Extra, Win32Int, InterfaceBase, Win32Proc; @@ -71,13 +71,11 @@ TWin32WSOpenDialog = class(TWSOpenDialog) public - {$ifdef UseVistaDialogs} class procedure SetupVistaFileDialog(ADialog: IFileDialog; const AOpenDialog: TOpenDialog); class function ProcessVistaDialogResult(ADialog: IFileDialog; const AOpenDialog: TOpenDialog): HResult; class procedure VistaDialogShowModal(ADialog: IFileDialog; const AOpenDialog: TOpenDialog); class function GetFileName(ShellItem: IShellItem): String; class function GetParentWnd: HWND; - {$endif} published class function CreateHandle(const ACommonDialog: TCommonDialog): THandle; override; class procedure DestroyHandle(const ACommonDialog: TCommonDialog); override; @@ -122,7 +120,6 @@ class function CreateHandle(const ACommonDialog: TCommonDialog): THandle; override; end; -{$ifdef UseVistaDialogs} { TFileDialogEvents } @@ -146,7 +143,6 @@ public constructor Create(ADialog: TOpenDialog); end; -{$endif} function OpenFileDialogCallBack(Wnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): UINT_PTR; stdcall; @@ -156,9 +152,11 @@ function UTF8StringToPWideChar(const s: string) : PWideChar; function UTF8StringToPAnsiChar(const s: string) : PAnsiChar; -{$ifdef UseVistaDialogs} function CanUseVistaDialogs(const AOpenDialog: TOpenDialog): Boolean; -{$endif} + +var + cOpenDialogAllFiles: string = 'All files'; + implementation @@ -220,7 +218,6 @@ FolderName: string; FileNames: string; begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin FolderName := UTF16ToUTF8(DialogRec^.UnicodeFolderName); @@ -249,10 +246,6 @@ FolderName := AnsiToUtf8(DialogRec^.AnsiFolderName); FileNames := AnsiToUtf8(DialogRec^.AnsiFileNames); end; - {$else} - FolderName:= DialogRec^.AnsiFolderName; - FileNames := DialogRec^.AnsiFileNames; - {$endif} FolderName := AppendPathDelim(FolderName); len := Length(FileNames); if (len > 0) and (FileNames[1] = '"') then @@ -279,14 +272,10 @@ FolderName: string; I,Start: integer; begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SelectedStr:=UTF16ToUTF8(widestring(PWideChar(OpenFile^.lpStrFile))) else SelectedStr:=AnsiToUtf8(OpenFile^.lpStrFile); - {$else} - SelectedStr:=OpenFile^.lpStrFile; - {$endif} if not (ofAllowMultiSelect in AOpenDialog.Options) then AFiles.Add(SelectedStr) else begin @@ -342,12 +331,10 @@ ACommonDialog.UserChoice := mrCancel; end; -{$ifdef UseVistaDialogs} function CanUseVistaDialogs(const AOpenDialog: TOpenDialog): Boolean; begin Result := (WindowsVersion >= wvVista) and not (ofOldStyleDialog in AOpenDialog.Options); end; -{$endif} { TWin32WSColorDialog } @@ -433,7 +420,6 @@ DialogRec: POpenFileDialogRec; begin DialogRec := POpenFileDialogRec(OpenFile^.lCustData); - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin FolderSize := SendMessageW(GetParent(Wnd), CDM_GETFOLDERPATH, 0, LPARAM(nil)); @@ -446,7 +432,6 @@ SendMessageW(GetParent(Wnd), CDM_GETSPEC, FilesSize, LPARAM(PWideChar(DialogRec^.UnicodeFileNames))); end else - {$endif} begin FolderSize := CommDlg_OpenSave_GetFolderPath(GetParent(Wnd), nil, 0); FilesSize := CommDlg_OpenSave_GetSpec(GetParent(Wnd), nil, 0); @@ -498,7 +483,7 @@ var OpenFileNotify: LPOFNOTIFY; OpenFileName: Windows.POPENFILENAME; - DialogRec: POpenFileDialogRec; + DlgRec: POpenFileDialogRec; procedure Reposition(ADialogWnd: Handle); var @@ -529,10 +514,11 @@ procedure ExtractDataFromNotify; begin OpenFileName := OpenFileNotify^.lpOFN; - DialogRec := POpenFileDialogRec(OpenFileName^.lCustData); + DlgRec := POpenFileDialogRec(OpenFileName^.lCustData); UpdateStorage(Wnd, OpenFileName); UpdateFileProperties(OpenFileName); end; + begin Result := 0; if uMsg = WM_INITDIALOG then @@ -552,24 +538,24 @@ CDN_INITDONE: begin ExtractDataFromNotify; - TOpenDialog(DialogRec^.Dialog).DoShow; + TOpenDialog(DlgRec^.Dialog).DoShow; end; CDN_SELCHANGE: begin ExtractDataFromNotify; - TOpenDialog(DialogRec^.Dialog).DoSelectionChange; + TOpenDialog(DlgRec^.Dialog).DoSelectionChange; end; CDN_FOLDERCHANGE: begin ExtractDataFromNotify; - TOpenDialog(DialogRec^.Dialog).DoFolderChange; + TOpenDialog(DlgRec^.Dialog).DoFolderChange; end; CDN_FILEOK: ExtractDataFromNotify; CDN_TYPECHANGE: begin ExtractDataFromNotify; - DialogRec^.Dialog.IntfFileTypeChanged(OpenFileNotify^.lpOFN^.nFilterIndex); + DlgRec^.Dialog.IntfFileTypeChanged(OpenFileNotify^.lpOFN^.nFilterIndex); end; end; end; @@ -625,11 +611,9 @@ OpenFile: LPOPENFILENAME; Filter, FileName, InitialDir, DefaultExt: String; FileNameBuffer: PChar; -{$ifdef WindowsUnicodeSupport} FileNameWide: WideString; FileNameWideBuffer: PWideChar; FileNameBufferSize: Integer; -{$endif WindowsUnicodeSupport} begin FileName := AOpenDialog.FileName; InitialDir := AOpenDialog.InitialDir; @@ -643,27 +627,22 @@ DefaultExt := GetDefaultExt; - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - FileNameWideBuffer := AllocMem(FileNameBufferLen * 2 + 2); - FileNameWide := UTF8ToUTF16(FileName); + if UnicodeEnabledOS then + begin + FileNameWideBuffer := AllocMem(FileNameBufferLen * 2 + 2); + FileNameWide := UTF8ToUTF16(FileName); - if Length(FileNameWide) > FileNameBufferLen then - FileNameBufferSize := FileNameBufferLen - else - FileNameBufferSize := Length(FileNameWide); + if Length(FileNameWide) > FileNameBufferLen then + FileNameBufferSize := FileNameBufferLen + else + FileNameBufferSize := Length(FileNameWide); - Move(PWideChar(FileNameWide)^, FileNameWideBuffer^, FileNameBufferSize * 2); - end - else begin - FileNameBuffer := AllocMem(FileNameBufferLen + 1); - StrLCopy(FileNameBuffer, PChar(UTF8ToAnsi(FileName)), FileNameBufferLen); - end; - {$else} + Move(PWideChar(FileNameWide)^, FileNameWideBuffer^, FileNameBufferSize * 2); + end + else begin FileNameBuffer := AllocMem(FileNameBufferLen + 1); - StrLCopy(FileNameBuffer, PChar(FileName), FileNameBufferLen); - {$endif} + StrLCopy(FileNameBuffer, PChar(UTF8ToAnsi(FileName)), FileNameBufferLen); + end; if AOpenDialog.Filter <> '' then begin @@ -671,7 +650,7 @@ ReplacePipe(Filter); end else - Filter := 'All File Types(*.*)'+#0+'*.*'+#0; // Default -> avoid empty combobox + Filter := cOpenDialogAllFiles+' (*.*)'+#0+'*.*'+#0; // Default -> avoid empty combobox OpenFile := AllocMem(SizeOf(OpenFileName)); with OpenFile^ do @@ -682,7 +661,6 @@ nFilterIndex := AOpenDialog.FilterIndex; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin lpStrFile := PChar(FileNameWideBuffer); @@ -699,21 +677,6 @@ lpstrInitialDir := UTF8StringToPAnsiChar(InitialDir); lpstrDefExt := UTF8StringToPAnsiChar(DefaultExt); end; - {$else} - lpStrFile := FileNameBuffer; - - lpStrFilter := GetMem(Length(Filter)+1); - StrPCopy(lpStrFilter, Filter); - - lpStrTitle := GetMem(Length(AOpenDialog.Title)+1); - StrPCopy(lpStrTitle, AOpenDialog.Title); - - lpStrInitialDir := GetMem(Length(InitialDir)+1); - StrPCopy(lpstrInitialDir, InitialDir); - - lpstrDefExt := GetMem(Length(DefaultExt)+1); - StrPCopy(lpstrDefExt, DefaultExt); - {$endif} nMaxFile := FileNameBufferLen + 1; // Size in TCHARs lpfnHook := Windows.LPOFNHOOKPROC(@OpenFileDialogCallBack); @@ -766,7 +729,6 @@ end; { TWin32WSOpenDialog } -{$ifdef UseVistaDialogs} class procedure TWin32WSOpenDialog.SetupVistaFileDialog(ADialog: IFileDialog; const AOpenDialog: TOpenDialog); @@ -842,7 +804,7 @@ ParsedFilter := TParseStringList.Create(AOpenDialog.Filter, '|'); if ParsedFilter.Count = 0 then begin - ParsedFilter.Add('All File Types(*.*)'); + ParsedFilter.Add(cOpenDialogAllFiles+' (*.*)'); ParsedFilter.Add('*.*'); end; try @@ -960,15 +922,11 @@ else Result := WidgetSet.AppHandle; end; -{$endif} class function TWin32WSOpenDialog.CreateHandle(const ACommonDialog: TCommonDialog): THandle; -{$ifdef UseVistaDialogs} var Dialog: IFileOpenDialog; -{$endif} begin - {$ifdef UseVistaDialogs} if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then begin @@ -977,21 +935,19 @@ Dialog._AddRef; SetupVistaFileDialog(Dialog, TOpenDialog(ACommonDialog)); Result := THandle(Dialog); - end; + end + else + Result := INVALID_HANDLE_VALUE; end else - {$endif} Result := CreateFileDialogHandle(TOpenDialog(ACommonDialog)); end; class procedure TWin32WSOpenDialog.DestroyHandle(const ACommonDialog: TCommonDialog); -{$ifdef UseVistaDialogs} var Dialog: IFileDialog; -{$endif} begin if ACommonDialog.Handle <> 0 then - {$ifdef UseVistaDialogs} if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then begin @@ -1000,7 +956,6 @@ Dialog := nil; end else - {$endif} DestroyFileDialogHandle(ACommonDialog.Handle) end; @@ -1008,9 +963,7 @@ var State: TApplicationState; lOldWorkingDir, lInitialDir: string; - {$ifdef UseVistaDialogs} Dialog: IFileOpenDialog; - {$endif} begin if ACommonDialog.Handle <> 0 then begin @@ -1019,7 +972,6 @@ try lInitialDir := TOpenDialog(ACommonDialog).InitialDir; if lInitialDir <> '' then SetCurrentDirUTF8(lInitialDir); - {$ifdef UseVistaDialogs} if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then begin @@ -1027,19 +979,13 @@ VistaDialogShowModal(Dialog, TOpenDialog(ACommonDialog)); end else - {$endif} begin - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - ProcessFileDialogResult(TOpenDialog(ACommonDialog), - GetOpenFileNameW(LPOPENFILENAME(ACommonDialog.Handle))) - else - ProcessFileDialogResult(TOpenDialog(ACommonDialog), - GetOpenFileName(LPOPENFILENAME(ACommonDialog.Handle))); - {$else} + if UnicodeEnabledOS then + ProcessFileDialogResult(TOpenDialog(ACommonDialog), + GetOpenFileNameW(LPOPENFILENAME(ACommonDialog.Handle))) + else ProcessFileDialogResult(TOpenDialog(ACommonDialog), GetOpenFileName(LPOPENFILENAME(ACommonDialog.Handle))); - {$endif} end; finally SetCurrentDirUTF8(lOldWorkingDir); @@ -1051,35 +997,31 @@ { TWin32WSSaveDialog } class function TWin32WSSaveDialog.CreateHandle(const ACommonDialog: TCommonDialog): THandle; -{$ifdef UseVistaDialogs} var Dialog: IFileSaveDialog; -{$endif} begin - {$ifdef UseVistaDialogs} if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then begin - if Succeeded(CoCreateInstance(CLSID_FileSaveDialog, nil, CLSCTX_INPROC_SERVER, IFileSaveDialog, Dialog)) and Assigned(Dialog) then + if Succeeded(CoCreateInstance(CLSID_FileSaveDialog, nil, CLSCTX_INPROC_SERVER, IFileSaveDialog, Dialog)) + and Assigned(Dialog) then begin Dialog._AddRef; TWin32WSOpenDialog.SetupVistaFileDialog(Dialog, TOpenDialog(ACommonDialog)); Result := THandle(Dialog); - end; + end + else + Result := INVALID_HANDLE_VALUE; end else - {$endif} Result := CreateFileDialogHandle(TOpenDialog(ACommonDialog)); end; class procedure TWin32WSSaveDialog.DestroyHandle(const ACommonDialog: TCommonDialog); -{$ifdef UseVistaDialogs} var Dialog: IFileDialog; -{$endif} begin if ACommonDialog.Handle <> 0 then - {$ifdef UseVistaDialogs} if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then begin @@ -1088,7 +1030,6 @@ Dialog := nil; end else - {$endif} DestroyFileDialogHandle(ACommonDialog.Handle) end; @@ -1096,9 +1037,7 @@ var State: TApplicationState; lOldWorkingDir, lInitialDir: string; - {$ifdef UseVistaDialogs} Dialog: IFileSaveDialog; - {$endif} begin if ACommonDialog.Handle <> 0 then begin @@ -1107,7 +1046,6 @@ try lInitialDir := TSaveDialog(ACommonDialog).InitialDir; if lInitialDir <> '' then SetCurrentDirUTF8(lInitialDir); - {$ifdef UseVistaDialogs} if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then begin @@ -1115,19 +1053,13 @@ TWin32WSOpenDialog.VistaDialogShowModal(Dialog, TOpenDialog(ACommonDialog)); end else - {$endif} begin - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - ProcessFileDialogResult(TOpenDialog(ACommonDialog), - GetSaveFileNameW(LPOPENFILENAME(ACommonDialog.Handle))) - else - ProcessFileDialogResult(TOpenDialog(ACommonDialog), - GetSaveFileName(LPOPENFILENAME(ACommonDialog.Handle))); - {$else} + if UnicodeEnabledOS then + ProcessFileDialogResult(TOpenDialog(ACommonDialog), + GetSaveFileNameW(LPOPENFILENAME(ACommonDialog.Handle))) + else ProcessFileDialogResult(TOpenDialog(ACommonDialog), GetSaveFileName(LPOPENFILENAME(ACommonDialog.Handle))); - {$endif} end; finally SetCurrentDirUTF8(lOldWorkingDir); @@ -1162,20 +1094,14 @@ end; var -{$ifdef WindowsUnicodeSupport} CFW: TChooseFontW; LFW: LogFontW; CF: TChooseFontA absolute CFW; LF: LogFontA absolute LFW; -{$else} - CF: TChooseFont; - LF: LogFont; -{$endif} UserResult: WINBOOL; begin with TFontDialog(ACommonDialog) do begin - {$ifdef WindowsUnicodeSupport} ZeroMemory(@CFW, sizeof(TChooseFontW)); ZeroMemory(@LFW, sizeof(LogFontW)); if UnicodeEnabledOS then @@ -1226,30 +1152,6 @@ end; UserResult := ChooseFontA(@CF); end - {$else} - ZeroMemory(@CF, sizeof(TChooseFont)); - ZeroMemory(@LF, sizeof(LogFont)); - with LF do - begin - LFHeight := Font.Height; - LFFaceName := TFontDataName(Font.Name); - if (fsBold in Font.Style) then LFWeight:= FW_BOLD; - LFItalic := byte(fsItalic in Font.Style); - LFStrikeOut := byte(fsStrikeOut in Font.Style); - LFUnderline := byte(fsUnderline in Font.Style); - LFCharSet := Font.CharSet; - end; - with CF do - begin - LStructSize := sizeof(TChooseFont); - HWndOwner := GetOwnerHandle(ACommonDialog); - LPLogFont := commdlg.PLOGFONT(@LF); - Flags := GetFlagsFromOptions(Options); - Flags := Flags or CF_INITTOLOGFONTSTRUCT or CF_BOTH; - RGBColors := DWORD(Font.Color); - end; - UserResult := ChooseFont(@CF); - {$endif} end; SetDialogResult(ACommonDialog, UserResult); @@ -1296,11 +1198,9 @@ case uMsg of BFFM_INITIALIZED: // Setting root dir - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SendMessageW(hwnd, BFFM_SETSELECTIONW, WPARAM(True), lpData) else - {$endif} SendMessage(hwnd, BFFM_SETSELECTION, WPARAM(True), lpData); //BFFM_SELCHANGED // : begin @@ -1317,16 +1217,14 @@ Buffer : PChar; bi : TBrowseInfo; iidl : PItemIDList; - {$ifdef WindowsUnicodeSupport} biw : TBROWSEINFOW; Bufferw : PWideChar absolute Buffer; InitialDirW: widestring; Title: widestring; - {$endif} DirName: string; begin + DirName := ''; InitialDir := TSelectDirectoryDialog(ACommonDialog).FileName; - Options := TSelectDirectoryDialog(ACommonDialog).Options; if length(InitialDir)=0 then @@ -1339,7 +1237,6 @@ if Copy(InitialDir,length(InitialDir),1)=DriveDelim then InitialDir := InitialDir + PathDelim; end; - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin Buffer := CoTaskMemAlloc(MAX_PATH*2); @@ -1394,31 +1291,6 @@ DirName := AnsiToUtf8(Buffer); end; end; - {$else} - Buffer := CoTaskMemAlloc(MAX_PATH); - with bi do - begin - hwndOwner := GetOwnerHandle(ACommonDialog); - pidlRoot := nil; - pszDisplayName := Buffer; - lpszTitle := PChar(ACommonDialog.Title); - ulFlags := BIF_RETURNONLYFSDIRS; - if not (ofOldStyleDialog in Options) then - ulFlags := ulFlags + BIF_NEWDIALOGSTYLE; - lpfn := @BrowseForFolderCallback; - // this value will be passed to callback proc as lpData - lParam := LclType.LParam(PChar(InitialDir)); - end; - - iidl := SHBrowseForFolder(@bi); - - if Assigned(iidl) then - begin - SHGetPathFromIDList(iidl, Buffer); - CoTaskMemFree(iidl); - DirName := Buffer; - end; - {$endif} if Assigned(iidl) then begin @@ -1432,7 +1304,6 @@ Result := 0; end; -{$ifdef UseVistaDialogs} { TFileDialogEvents } function TFileDialogEvents.OnFileOk(pfd: IFileDialog): HResult; stdcall; @@ -1533,7 +1404,6 @@ inherited Create; FDialog := ADialog; end; -{$endif} initialization if (Win32MajorVersion = 4) then diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsextctrls.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsextctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsextctrls.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsextctrls.pp 2015-02-06 18:25:31.000000000 +0000 @@ -30,7 +30,7 @@ // rtl Windows, CommCtrl, SysUtils, Classes, // lcl - ExtCtrls, Controls, ImgList, LCLType, LCLIntf, LCLProc, Themes, LCLMessageGlue, ComCtrls, WSComCtrls, + ExtCtrls, Controls, ImgList, LCLType, LCLIntf, LazUTF8, Themes, LCLMessageGlue, ComCtrls, WSComCtrls, // ws WSControls, WSExtCtrls, WSLCLClasses, WSProc, Win32Extra, Win32Int, Win32Proc, InterfaceBase, Win32WSControls; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsextdlgs.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsextdlgs.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsextdlgs.pp 2015-03-15 11:19:15.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsextdlgs.pp 2015-11-28 23:18:25.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsextdlgs.pp 48373 2015-03-15 11:19:15Z mattias $} +{ $Id: win32wsextdlgs.pp 50522 2015-11-28 23:18:25Z bart $} { ***************************************************************************** * Win32WSExtDlgs.pp * @@ -143,14 +143,12 @@ not (ofOldStyleDialog in TPreviewFileDialog(ACommonDialog).Options) then with OFN^ do begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin lpTemplateName := AllocMem(Length(ResName) * 2 + 2); Move(PChar(ResName)^, lpTemplateName^, Length(ResName) * 2); end else - {$endif} begin lpTemplateName := AllocMem(Length(ResName) + 1); Move(PChar(AnsiString(ResName))^, lpTemplateName^, Length(ResName)); @@ -163,14 +161,11 @@ { TWin32WSOpenPictureDialog } class function TWin32WSOpenPictureDialog.CreateHandle(const ACommonDialog: TCommonDialog): THandle; -{$ifdef UseVistaDialogs} var Dialog: IFileOpenDialog; fos: FILEOPENDIALOGOPTIONS; -{$endif} begin Result := inherited CreateHandle(ACommonDialog); - {$ifdef UseVistaDialogs} //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then begin @@ -182,7 +177,6 @@ end; end else - {$endif} AddPreviewControl(ACommonDialog, LPOPENFILENAME(Result)); end; @@ -210,14 +204,11 @@ class function TWin32WSSavePictureDialog.CreateHandle( const ACommonDialog: TCommonDialog): THandle; -{$ifdef UseVistaDialogs} var Dialog: IFileSaveDialog; fos: FILEOPENDIALOGOPTIONS; -{$endif} begin Result := inherited CreateHandle(ACommonDialog); - {$ifdef UseVistaDialogs} //if (WindowsVersion >= wvVista) and ThemeServices.ThemesEnabled then if CanUseVistaDialogs(TOpenDialog(ACommonDialog)) then begin @@ -229,7 +220,6 @@ end; end else - {$endif} AddPreviewControl(ACommonDialog, LPOPENFILENAME(Result)); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsforms.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsforms.pp 2014-11-30 10:58:05.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsforms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsforms.pp 47036 2014-11-30 10:58:05Z juha $} +{ $Id: win32wsforms.pp 51056 2015-12-27 20:27:38Z ondrej $} { ***************************************************************************** * Win32WSForms.pp * @@ -38,8 +38,6 @@ TWin32WSScrollingWinControl = class(TWSScrollingWinControl) published - class procedure ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); override; end; { TWin32WSScrollBox } @@ -80,8 +78,8 @@ class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); override; class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override; class procedure ShowModal(const ACustomForm: TCustomForm); override; - class procedure SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); override; + class procedure SetRealPopupParent(const ACustomForm: TCustomForm; + const APopupParent: TCustomForm); override; class procedure SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar); override; class procedure ShowHide(const AWinControl: TWinControl); override; end; @@ -212,17 +210,6 @@ {$ENDIF} end; -{ TWin32WSScrollingWinControl } - -function ScrollWindowPtr(hWnd:HWND; XAmount:longint; YAmount:longint; lpRect: pointer; lpClipRect: pointer):WINBOOL; stdcall; external 'user32' name 'ScrollWindow'; - -class procedure TWin32WSScrollingWinControl.ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); -begin - if Windows.IsWindowVisible(AWinControl.Handle) then - ScrollWindowPtr(AWinControl.Handle, DeltaX, DeltaY, nil, nil); -end; - { TWin32WSCustomForm } function GetDesigningBorderStyle(const AForm: TCustomForm): TFormBorderStyle; @@ -650,8 +637,8 @@ RDW_INVALIDATE or RDW_FRAME or RDW_NOCHILDREN or RDW_ERASE); end; -class procedure TWin32WSCustomForm.SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); +class procedure TWin32WSCustomForm.SetRealPopupParent( + const ACustomForm: TCustomForm; const APopupParent: TCustomForm); begin // changing parent is not possible without handle recreation RecreateWnd(ACustomForm); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsgrids.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsgrids.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsgrids.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsgrids.pp 2015-12-17 10:51:30.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsgrids.pp 41387 2013-05-24 18:30:06Z juha $} +{ $Id: win32wsgrids.pp 50855 2015-12-17 10:51:30Z ondrej $} { ***************************************************************************** * Win32WSGrids.pp * @@ -29,7 +29,7 @@ // To get as little as posible circles, // uncomment only when needed for registration //////////////////////////////////////////////////// - Windows, LCLType, LCLProc, Controls, Win32Proc, + Windows, LCLType, LazUTF8, Types, Controls, Grids, Win32Proc, Graphics, //////////////////////////////////////////////////// WSGrids; @@ -39,12 +39,33 @@ TWin32WSCustomGrid = class(TWSCustomGrid) published class procedure SendCharToEditor(AEditor:TWinControl; Ch: TUTF8Char); override; + class function GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; override; end; implementation { TWin32WSCustomGrid } +class function TWin32WSCustomGrid.GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; +var + EditorTop: LongInt; + TextHeight: Integer; +begin + Result:=ACellRect; + Dec(Result.Right); + Dec(Result.Bottom); + TextHeight := ACanvas.TextHeight(' '); + case AColumnLayout of + tlTop: EditorTop:=Result.Top+constCellPadding; + tlCenter: EditorTop:=Result.Top+Round((Result.Bottom-Result.Top-TextHeight) / 2); + tlBottom: EditorTop:=Result.Bottom-constCellPadding-TextHeight+1; + end; + if EditorTop>Result.Top then Result.Top:=EditorTop; + Result.Bottom:=Result.Top+TextHeight; +end; + class procedure TWin32WSCustomGrid.SendCharToEditor(AEditor: TWinControl; Ch: TUTF8Char); var @@ -52,7 +73,6 @@ WChar: WPARAM; begin WChar:=WPARAM(Ord(Ch[1])); - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin if Length(Ch)>1 then begin S := UTF8ToUTF16(Ch); @@ -63,7 +83,6 @@ exit; end else WChar := WPARAM(Ord(UTF8ToAnsi(Ch)[1])); - {$endif} PostMessage(AEditor.Handle, WM_CHAR, WChar, 0); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsmenus.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsmenus.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsmenus.pp 2014-11-24 10:29:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsmenus.pp 2015-11-27 18:19:40.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsmenus.pp 46979 2014-11-24 10:29:29Z juha $} +{ $Id: win32wsmenus.pp 50515 2015-11-27 18:19:40Z bart $} { ***************************************************************************** * Win32WSMenus.pp * @@ -32,8 +32,8 @@ //////////////////////////////////////////////////// WSMenus, WSLCLClasses, WSProc, Windows, Controls, Classes, SysUtils, Win32Int, Win32Proc, Win32WSImgList, - InterfaceBase, LCLProc, Themes, UxTheme, Win32Themes, Win32Extra, - FileUtil; + LCLProc, Themes, UxTheme, Win32Themes, Win32Extra, + FileUtil, LazUTF8; type @@ -172,7 +172,6 @@ else ItemInfo.cbSize := sizeof(TMenuItemInfo); ItemInfo.fMask := MIIM_DATA; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin if not GetMenuItemInfoW(AMenuHandle, 0, true, @ItemInfo) then Exit; @@ -181,9 +180,6 @@ begin if not GetMenuItemInfoA(AMenuHandle, 0, true, @ItemInfo) then Exit; end; -{$else} - if not GetMenuItemInfo(AMenuHandle, 0, true, @ItemInfo) then Exit; -{$endif} FirstMenuItem := TMenuItem(ItemInfo.dwItemData); if FirstMenuItem = nil then exit; i := 0; @@ -250,13 +246,10 @@ function StringSize(const aCaption: String; const aHDC: HDC): TSize; var tmpRect: Windows.RECT; -{$ifdef WindowsUnicodeSupport} AnsiBuffer: ansistring; WideBuffer: widestring; -{$endif WindowsUnicodeSupport} begin FillChar(tmpRect, SizeOf(tmpRect), 0); -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin WideBuffer := UTF8ToUTF16(aCaption); @@ -267,9 +260,6 @@ AnsiBuffer := Utf8ToAnsi(aCaption); DrawText(aHDC, pChar(AnsiBuffer), length(AnsiBuffer), @TmpRect, DT_CALCRECT); end; -{$else} - DrawText(aHDC, pChar(aCaption), length(aCaption), @TmpRect, DT_CALCRECT); -{$endif} Result.cx := TmpRect.right - TmpRect.left; Result.cy := TmpRect.Bottom - TmpRect.Top; end; @@ -563,6 +553,7 @@ IsRightToLeft: Boolean; Info: tagMENUBARINFO; AWnd: HWND; + CalculatedSize: TSIZE; begin if (ItemState and ODS_SELECTED) <> 0 then MenuState := tmBarItemPushed @@ -622,10 +613,13 @@ ThemeDrawElement(AHDC, Details, ARect, nil); TextRect := ARect; - inc(TextRect.Left, Metrics.ItemMargins.cxLeftWidth); - dec(TextRect.Right, Metrics.ItemMargins.cxRightWidth); - inc(TextRect.Top, Metrics.ItemMargins.cyTopHeight); - dec(TextRect.Bottom, Metrics.ItemMargins.cyBottomHeight); + //center the menu item + CalculatedSize := VistaBarMenuItemSize(AMenuItem, AHDC); + TextRect.Left := (TextRect.Right+TextRect.Left-CalculatedSize.cx) div 2; + TextRect.Right := TextRect.Left + CalculatedSize.cx; + TextRect.Top := (TextRect.Bottom+TextRect.Top-CalculatedSize.cy) div 2; + TextRect.Bottom := TextRect.Top + CalculatedSize.cy; + // draw check/image if AMenuItem.HasIcon then begin @@ -725,6 +719,11 @@ begin ImageRect := CheckRect; IconSize := AMenuItem.GetIconSize; + if AMenuItem.Checked then // draw checked rectangle around + begin + Tmp := ThemeServices.GetElementDetails(PopupCheckBgStates[AMenuItem.Enabled]); + ThemeDrawElement(AHDC, Tmp, CheckRect, nil); + end; ImageRect.Left := (ImageRect.Left + ImageRect.Right - IconSize.x) div 2; ImageRect.Top := (ImageRect.Top + ImageRect.Bottom - IconSize.y) div 2; if IsRightToLeft then @@ -736,11 +735,6 @@ end; ImageRect.Right := IconSize.x; ImageRect.Bottom := IconSize.y; - if AMenuItem.Checked then // draw checked rectangle around - begin - Tmp := ThemeServices.GetElementDetails(PopupCheckBgStates[AMenuItem.Enabled]); - ThemeDrawElement(AHDC, Tmp, CheckRect, nil); - end; DrawMenuItemIcon(AMenuItem, AHDC, ImageRect, ASelected); if IsRightToLeft then SetLayout(AHDC, LAYOUT_RTL); @@ -873,7 +867,8 @@ var IsFlatMenu: Windows.BOOL; begin - Result := (WindowsVersion >= wvXP) and ((SystemParametersInfo(SPI_GETFLATMENU, 0, @IsFlatMenu, 0)) and IsFlatMenu); + Result := (WindowsVersion >= wvXP) and + (SystemParametersInfo(SPI_GETFLATMENU, 0, @IsFlatMenu, 0) and IsFlatMenu); end; function BackgroundColorMenu(const ItemState: UINT; const aIsInMenuBar: boolean): COLORREF; @@ -992,10 +987,8 @@ IsRightToLeft: Boolean; etoFlags: Cardinal; dtFlags: DWord; -{$ifdef WindowsUnicodeSupport} AnsiBuffer: ansistring; WideBuffer: widestring; -{$endif WindowsUnicodeSupport} LeftSpace, RightSpace: Integer; begin crText := TextColorMenu(ItemState, AMenuItem.IsInMenuBar, AMenuItem.Enabled); @@ -1051,7 +1044,6 @@ oldBkMode := SetBkMode(AHDC, TRANSPARENT); -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin WideBuffer := UTF8ToUTF16(AMenuItem.Caption); @@ -1062,9 +1054,6 @@ AnsiBuffer := Utf8ToAnsi(AMenuItem.Caption); DrawText(AHDC, PChar(AnsiBuffer), Length(AnsiBuffer), @ARect, dtFlags); end; -{$else} - DrawText(AHDC, PChar(AMenuItem.Caption), Length(AMenuItem.Caption), @ARect, dtFlags); -{$endif} if AMenuItem.ShortCut <> scNone then begin @@ -1075,20 +1064,16 @@ else dtFlags := dtFlags or DT_RIGHT; - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - WideBuffer := UTF8ToUTF16(shortCutText); - DrawTextW(AHDC, PWideChar(WideBuffer), Length(WideBuffer), @ARect, dtFlags); - end - else - begin - AnsiBuffer := Utf8ToAnsi(shortCutText); - DrawText(AHDC, PChar(AnsiBuffer), Length(AnsiBuffer), @ARect, dtFlags); - end; - {$else} - DrawText(AHDC, PChar(shortCutText), Length(shortCutText), @ARect, dtFlags); - {$endif} + if UnicodeEnabledOS then + begin + WideBuffer := UTF8ToUTF16(shortCutText); + DrawTextW(AHDC, PWideChar(WideBuffer), Length(WideBuffer), @ARect, dtFlags); + end + else + begin + AnsiBuffer := Utf8ToAnsi(shortCutText); + DrawText(AHDC, PChar(AnsiBuffer), Length(AnsiBuffer), @ARect, dtFlags); + end; end; SetBkMode(AHDC, oldBkMode); @@ -1257,28 +1242,20 @@ MenuInfo.cbSize := sizeof(TMenuItemInfo); MenuInfo.fMask := MIIM_FTYPE; // don't retrieve caption (MIIM_STRING not included) end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then GetMenuItemInfoW(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo) else GetMenuItemInfoA(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$else} - GetMenuItemInfo(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$endif} if Value then MenuInfo.fType := MenuInfo.fType or Flag else MenuInfo.fType := MenuInfo.fType and (not Flag); if OldMenuWin95 then // MIIM_TYPE = MIIM_FTYPE + MIIM_STRING for Windows 95 MenuInfo.dwTypeData := PChar(UTF8ToAnsi(CompleteMenuItemCaption(AMenuItem, #9))); // Windows 95 only Ansi -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then Result := SetMenuItemInfoW(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo) else Result := SetMenuItemInfoA(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$else} - Result := SetMenuItemInfo(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$endif} TriggerFormUpdate(AMenuItem); end; @@ -1295,35 +1272,22 @@ begin FillChar(MenuInfo, SizeOf(MenuInfo), 0); if OldMenuWin95 then - begin - MenuInfo.cbSize := W95_MENUITEMINFO_SIZE; - MenuInfo.fMask := MIIM_TYPE; // caption not retrieved (dwTypeData = nil) - end + MenuInfo.cbSize := W95_MENUITEMINFO_SIZE else - begin MenuInfo.cbSize := sizeof(TMenuItemInfo); - MenuInfo.fMask := MIIM_FTYPE; // don't retrieve caption (MIIM_STRING not included) - end; -{$ifdef WindowsUnicodeSupport} + MenuInfo.fMask := MIIM_TYPE; //MIIM_FTYPE not work here please use only MIIM_TYPE, caption not retrieved (dwTypeData = nil) if UnicodeEnabledOS then GetMenuItemInfoW(Menu, 0, True, @MenuInfo) else GetMenuItemInfoA(Menu, 0, True, @MenuInfo); -{$else} - GetMenuItemInfo(Menu, 0, True, @MenuInfo); -{$endif} if Value then MenuInfo.fType := MenuInfo.fType or Flag else MenuInfo.fType := MenuInfo.fType and not Flag; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SetMenuItemInfoW(Menu, 0, True, @MenuInfo) else SetMenuItemInfoA(Menu, 0, True, @MenuInfo); -{$else} - SetMenuItemInfo(Menu, 0, True, @MenuInfo); -{$endif} end; { TWin32WSMenuItem } @@ -1331,10 +1295,8 @@ procedure UpdateCaption(const AMenuItem: TMenuItem; ACaption: String); var MenuInfo: MENUITEMINFO; // TMenuItemInfoA and TMenuItemInfoW have same size and same structure type -{$ifdef WindowsUnicodeSupport} AnsiBuffer: ansistring; WideBuffer: widestring; -{$endif WindowsUnicodeSupport} begin if (AMenuItem.Parent = nil) or not AMenuItem.Parent.HandleAllocated then Exit; @@ -1353,14 +1315,10 @@ fMask := MIIM_FTYPE or MIIM_STATE; // don't retrieve current caption end; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then GetMenuItemInfoW(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo) else GetMenuItemInfoA(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$else} - GetMenuItemInfo(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$endif} with MenuInfo do begin // change enabled too since we can change from '-' to normal caption and vice versa @@ -1375,7 +1333,6 @@ if AMenuItem.Checked then fState := fState or MFS_CHECKED; // AMenuItem.Caption := ACaption; // Already set -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin WideBuffer := UTF8ToUTF16(CompleteMenuItemStringCaption(AMenuItem, ACaption, #9)); @@ -1388,11 +1345,6 @@ dwTypeData := PChar(AnsiBuffer); cch := length(AnsiBuffer); end; -{$else} - AnsiBuffer := UTF8ToAnsi(CompleteMenuItemStringCaption(AMenuItem, ACaption, #9)); - dwTypeData := PChar(AnsiBuffer); - cch := length(AnsiBuffer); -{$endif} if not OldMenuWin95 then fMask := fMask or MIIM_STRING; // caption updated too end @@ -1406,14 +1358,10 @@ fState := MFS_DISABLED; end; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SetMenuItemInfoW(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo) else SetMenuItemInfoA(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$else} - SetMenuItemInfo(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$endif} // MIIM_BITMAP is needed to request new measure item call with MenuInfo do @@ -1424,14 +1372,10 @@ fMask := MIIM_BITMAP; dwTypeData := nil; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SetMenuItemInfoW(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo) else SetMenuItemInfoA(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$else} - SetMenuItemInfo(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$endif} // set owner drawn with MenuInfo do @@ -1448,14 +1392,10 @@ fType := (fType or MFT_OWNERDRAW) and not (MIIM_STRING or MFT_SEPARATOR); end; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then SetMenuItemInfoW(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo) else SetMenuItemInfoA(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$else} - SetMenuItemInfo(AMenuItem.Parent.Handle, AMenuItem.Command, False, @MenuInfo); -{$endif} TriggerFormUpdate(AMenuItem); end; @@ -1465,10 +1405,8 @@ ParentMenuHandle: HMenu; ParentOfParent: HMenu; CallMenuRes: Boolean; -{$ifdef WindowsUnicodeSupport} AnsiBuffer: ansistring; WideBuffer: widestring; -{$endif WindowsUnicodeSupport} begin ParentMenuHandle := AMenuItem.Parent.Handle; FillChar(MenuInfo, SizeOf(MenuInfo), 0); @@ -1483,14 +1421,10 @@ begin ParentOfParent := AMenuItem.Parent.Parent.Handle; MenuInfo.fMask := MIIM_SUBMENU; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then CallMenuRes := GetMenuItemInfoW(ParentOfParent, AMenuItem.Parent.Command, False, @MenuInfo) else CallMenuRes:= GetMenuItemInfoA(ParentOfParent, AMenuItem.Parent.Command, False, @MenuInfo); -{$else} - CallMenuRes := GetMenuItemInfo(ParentOfParent, AMenuItem.Parent.Command, False, @MenuInfo) ; -{$endif} if CallMenuRes then begin // the parent menu item is not defined with submenu flag @@ -1498,14 +1432,10 @@ if MenuInfo.hSubmenu = 0 then begin MenuInfo.hSubmenu := ParentMenuHandle; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then CallMenuRes := SetMenuItemInfoW(ParentOfParent, AMenuItem.Parent.Command, False, @MenuInfo) else CallMenuRes := SetMenuItemInfoA(ParentOfParent, AMenuItem.Parent.Command, False, @MenuInfo); -{$else} - CallMenuRes := SetMenuItemInfo(ParentOfParent, AMenuItem.Parent.Command, False, @MenuInfo); -{$endif} if not CallMenuRes then DebugLn(['SetMenuItemInfo failed: ', GetLastErrorReport]); end; @@ -1538,7 +1468,6 @@ fType := fType or MFT_SEPARATOR; fState := fState or MFS_DISABLED; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin WideBuffer := UTF8ToUTF16(CompleteMenuItemCaption(AMenuItem, #9)); @@ -1551,11 +1480,6 @@ dwTypeData := PChar(AnsiBuffer); cch := length(AnsiBuffer); end; -{$else} - AnsiBuffer := UTF8ToAnsi(CompleteMenuItemCaption(AMenuItem, #9)); - dwTypeData := PChar(AnsiBuffer); - cch := length(AnsiBuffer); -{$endif} if AMenuItem.RadioItem then fType := fType or MFT_RADIOCHECK; if (AMenuItem.GetIsRightToLeft) then @@ -1566,17 +1490,13 @@ fType := fType or MFT_RIGHTJUSTIFY; end else - if AMenuItem.RightJustify then - fType := fType or MFT_RIGHTJUSTIFY; + if AMenuItem.RightJustify then + fType := fType or MFT_RIGHTJUSTIFY; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then CallMenuRes := InsertMenuItemW(ParentMenuHandle, AMenuItem.Parent.VisibleIndexOf(AMenuItem), True, @MenuInfo) else CallMenuRes := InsertMenuItemA(ParentMenuHandle, AMenuItem.Parent.VisibleIndexOf(AMenuItem), True, @MenuInfo); -{$else} - CallMenuRes := InsertMenuItem(ParentMenuHandle, AMenuItem.Parent.VisibleIndexOf(AMenuItem), True, @MenuInfo); -{$endif} if not CallMenuRes then DebugLn(['InsertMenuItem failed with error: ', GetLastErrorReport]); TriggerFormUpdate(AMenuItem); @@ -1611,26 +1531,18 @@ cbSize := sizeof(TMenuItemInfo); fMask := MIIM_SUBMENU; end; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then GetMenuItemInfoW(ParentOfParentHandle, AMenuItem.Parent.Command, False, @MenuInfo) else GetMenuItemInfoA(ParentOfParentHandle, AMenuItem.Parent.Command, False, @MenuInfo); -{$else} - GetMenuItemInfo(ParentOfParentHandle, AMenuItem.Parent.Command, False, @MenuInfo) ; -{$endif} // the parent menu item is defined with submenu flag then reset it if MenuInfo.hSubmenu <> 0 then begin MenuInfo.hSubmenu := 0; -{$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then CallMenuRes := SetMenuItemInfoW(ParentOfParentHandle, AMenuItem.Parent.Command, False, @MenuInfo) else CallMenuRes := SetMenuItemInfoA(ParentOfParentHandle, AMenuItem.Parent.Command, False, @MenuInfo); -{$else} - CallMenuRes := SetMenuItemInfo(ParentOfParentHandle, AMenuItem.Parent.Command, False, @MenuInfo); -{$endif} if not CallMenuRes then DebugLn(['SetMenuItemInfo failed: ', GetLastErrorReport]); // Set menu item info destroys/corrupts our internal popup menu for the @@ -1703,7 +1615,7 @@ if not TCustomForm(AMenu.Parent).HandleAllocated then Exit; if csDestroying in AMenu.Parent.ComponentState then Exit; - AddToChangedMenus(TCustomForm(AMenu.Parent).Handle); + AddToChangedMenus((AMenu.Parent as TCustomForm).Handle); end; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsspin.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsspin.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsspin.pp 2013-06-13 01:52:45.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsspin.pp 2015-11-27 18:19:40.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsspin.pp 41697 2013-06-13 01:52:45Z paul $} +{ $Id: win32wsspin.pp 50515 2015-11-27 18:19:40Z bart $} { ***************************************************************************** * Win32WSSpin.pp * @@ -29,7 +29,7 @@ // uncomment only when needed for registration //////////////////////////////////////////////////// CommCtrl, Windows, Win32Extra, - Spin, Controls, StdCtrls, LCLType, LCLProc, LMessages, + Spin, Controls, StdCtrls, LCLType, LMessages, LazUTF8, //////////////////////////////////////////////////// WSSpin, WSLCLClasses, WSProc, Win32Int, Win32Proc, Win32WSStdCtrls, Win32WSControls; @@ -165,7 +165,6 @@ SystemParametersInfo(SPI_GETHOTTRACKING, 0, @HotTracking, 0); UpDownFlags := WS_CHILD or WS_CLIPSIBLINGS or UDS_ALIGNRIGHT or UDS_ARROWKEYS or UpDownHotStyle[HotTracking] or ((WS_VISIBLE or WS_DISABLED) and Flags); - {$IFDEF WindowsUnicodeSupport} if UnicodeEnabledOS then begin Window := CreateWindowExW(FlagsEx, PWideChar(WideString(EditClsName)), @@ -182,12 +181,6 @@ UpDown := CreateWindowEx(0, UPDOWN_CLASSA, nil, UpDownFlags, 0, 0, 8, Height, Parent, HMENU(nil), HInstance, nil); end; - {$ELSE} - Window := CreateWindowEx(FlagsEx, @EditClsName[0], PChar(StrCaption), - Flags, Left, Top, Width, Height, Parent, HMENU(nil), HInstance, nil); - UpDown := CreateWindowEx(0, UPDOWN_CLASSW, nil, UpDownFlags, - 0, 0, 8, Height, Parent, HMENU(nil), HInstance, nil); - {$ENDIF} Windows.SendMessage(UpDown, UDM_SETBUDDY, WPARAM(Window), 0); end; // create window @@ -198,11 +191,9 @@ // init updown control Info := AllocWindowInfo(UpDown); Info^.AWinControl := AWinControl; - {$IFDEF WindowsUnicodeSupport} if UnicodeEnabledOS then Info^.DefWndProc := Windows.WNDPROC(SetWindowLongPtrW(UpDown, GWL_WNDPROC, PtrInt(@SpinUpDownWndProc))) else - {$ENDIF} Info^.DefWndProc := Windows.WNDPROC(SetWindowLongPtr(UpDown, GWL_WNDPROC, PtrInt(@SpinUpDownWndProc))); SetProp(UpDown, 'WinControl', PtrUInt(AWinControl)); Result := Params.Window; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsstdctrls.pp lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsstdctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/win32/win32wsstdctrls.pp 2015-07-24 21:54:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/win32/win32wsstdctrls.pp 2015-11-29 20:57:15.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: win32wsstdctrls.pp 49564 2015-07-24 21:54:29Z maxim $} +{ $Id: win32wsstdctrls.pp 50525 2015-11-29 20:57:15Z juha $} { ***************************************************************************** * Win32WSStdCtrls.pp * @@ -31,8 +31,8 @@ Classes, SysUtils, CommCtrl, StdCtrls, Controls, Graphics, Forms, Themes, //////////////////////////////////////////////////// - WSControls, WSStdCtrls, WSLCLClasses, WSProc, Windows, LCLType, LCLProc, LazUtf8Classes, - InterfaceBase, LMessages, LCLMessageGlue, + WSControls, WSStdCtrls, WSLCLClasses, WSProc, Windows, LCLType, + LazUTF8, LazUtf8Classes, InterfaceBase, LMessages, LCLMessageGlue, Win32Int, Win32Proc, Win32WSControls, Win32Extra, Win32Themes; type @@ -195,6 +195,7 @@ class procedure SetCaretPos(const ACustomEdit: TCustomEdit; const NewPos: TPoint); override; class procedure SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle); override; class procedure SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; { TWin32WSEdit } @@ -613,13 +614,19 @@ Exit(DeliverMessage(WindowInfo^.WinControl, LMessage)); end; WM_ERASEBKGND: - if (WindowsVersion <= wvXP) or not ThemeServices.ThemesEnabled then - // Standardbehavior for XP, or no themes - Result := CallDefaultWindowProc(Window, Msg, WParam, LParam) - else begin - // Avoid unnecessary background paints to avoid flickering of the listbox WindowInfo := GetWin32WindowInfo(Window); + if ((WindowsVersion <= wvServer2003) or not ThemeServices.ThemesEnabled) then + begin + if Assigned(WindowInfo^.WinControl) and not + (TCustomListbox(WindowInfo^.WinControl).Style in [lbOwnerDrawFixed, lbOwnerDrawVariable]) + then begin + // Standard behavior for XP/WinServer2003, no themes, no OwnerDraw + Result := CallDefaultWindowProc(Window, Msg, WParam, LParam); + exit; + end + end; + // Avoid unnecessary background paints to avoid flickering of the listbox Count := SendMessage(Window, LB_GETCOUNT, 0, 0); if Assigned(WindowInfo^.WinControl) and (TCustomListBox(WindowInfo^.WinControl).Columns < 2) and @@ -1096,42 +1103,25 @@ function EditGetSelStart(WinHandle: HWND): integer; begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then - begin - Windows.SendMessageW(WinHandle, EM_GETSEL, Windows.WPARAM(@Result), 0); - end + Windows.SendMessageW(WinHandle, EM_GETSEL, Windows.WPARAM(@Result), 0) else - begin Windows.SendMessage(WinHandle, EM_GETSEL, Windows.WPARAM(@Result), 0); - end; - {$else} - Windows.SendMessage(WinHandle, EM_GETSEL, Windows.WPARAM(@Result), 0); - {$endif} end; function EditGetSelLength(WinHandle: HWND): integer; var startpos, endpos: integer; begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then - begin - Windows.SendMessageW(WinHandle, EM_GETSEL, Windows.WPARAM(@startpos), Windows.LPARAM(@endpos)); - end + Windows.SendMessageW(WinHandle, EM_GETSEL, Windows.WPARAM(@startpos), Windows.LPARAM(@endpos)) else - begin Windows.SendMessage(WinHandle, EM_GETSEL, Windows.WPARAM(@startpos), Windows.LPARAM(@endpos)); - end; - {$else} - Windows.SendMessage(WinHandle, EM_GETSEL, Windows.WPARAM(@startpos), Windows.LPARAM(@endpos)); - {$endif} Result := endpos - startpos; end; procedure EditSetSelStart(WinHandle: HWND; NewStart: integer); begin - {$ifdef WindowsUnicodeSupport} if UnicodeEnabledOS then begin Windows.SendMessageW(WinHandle, EM_SETSEL, Windows.WParam(NewStart), Windows.LParam(NewStart)); @@ -1144,35 +1134,24 @@ // scroll caret into view Windows.SendMessage(WinHandle, EM_SCROLLCARET, 0, 0); end; - {$else} - Windows.SendMessage(WinHandle, EM_SETSEL, Windows.WParam(NewStart), Windows.LParam(NewStart)); - // scroll caret into view - Windows.SendMessage(WinHandle, EM_SCROLLCARET, 0, 0); - {$endif} end; procedure EditSetSelLength(WinHandle: HWND; NewLength: integer); var startpos, endpos: integer; begin - {$ifdef WindowsUnicodeSupport} - if UnicodeEnabledOS then - begin - Windows.SendMessageW(WinHandle, EM_GETSEL, Windows.WParam(@startpos), Windows.LParam(@endpos)); - endpos := startpos + NewLength; - Windows.SendMessageW(WinHandle, EM_SETSEL, Windows.WParam(startpos), Windows.LParam(endpos)); - end - else - begin - Windows.SendMessage(WinHandle, EM_GETSEL, Windows.WParam(@startpos), Windows.LParam(@endpos)); - endpos := startpos + NewLength; - Windows.SendMessage(WinHandle, EM_SETSEL, Windows.WParam(startpos), Windows.LParam(endpos)); - end; - {$else} + if UnicodeEnabledOS then + begin + Windows.SendMessageW(WinHandle, EM_GETSEL, Windows.WParam(@startpos), Windows.LParam(@endpos)); + endpos := startpos + NewLength; + Windows.SendMessageW(WinHandle, EM_SETSEL, Windows.WParam(startpos), Windows.LParam(endpos)); + end + else + begin Windows.SendMessage(WinHandle, EM_GETSEL, Windows.WParam(@startpos), Windows.LParam(@endpos)); endpos := startpos + NewLength; Windows.SendMessage(WinHandle, EM_SETSEL, Windows.WParam(startpos), Windows.LParam(endpos)); - {$endif} + end; end; { TWin32WSCustomEdit } @@ -1456,6 +1435,12 @@ RecreateWnd(ACustomMemo); end; +class procedure TWin32WSCustomMemo.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); +begin + SendMessage(AWinControl.Handle, EM_LINESCROLL, -DeltaX, -DeltaY); +end; + { TWin32WSCustomStaticText } function StaticTextWndProc(Window: HWnd; Msg: UInt; WParam: Windows.WParam; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincecallback.inc lazarus-1.6+dfsg/lcl/interfaces/wince/wincecallback.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincecallback.inc 2014-01-04 14:17:24.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincecallback.inc 2015-11-23 14:22:28.000000000 +0000 @@ -936,19 +936,28 @@ end; end; - function HandleUnicodeChar(AChar: Word): boolean; + // returns false if the UnicodeChar is not handled + function HandleUnicodeChar(var AChar: Word): boolean; var - UTF8Char: TUTF8Char; + OldUTF8Char, UTF8Char: TUTF8Char; + WS: WideString; begin Result := false; - UTF8Char := UTF8Encode(widestring(WideChar(AChar))); - lWinControl := WindowInfo^.WinControl; + UTF8Char := UTF16ToUTF8(widestring(WideChar(AChar))); + OldUTF8Char := UTF8Char; if Assigned(lWinControl) then begin - Result:= lWinControl.IntfUTF8KeyPress(UTF8Char, 1, False); - - if UTF8Char='' then - Result:= true; + Result := lWinControl.IntfUTF8KeyPress(UTF8Char, 1, False); + // if somewhere key is changed then don't perform a regular keypress + Result := Result or (UTF8Char <> OldUTF8Char); + if OldUTF8Char <> UTF8Char then + begin + WS := UTF8ToUTF16(UTF8Char); + if Length(WS) > 0 then + AChar := Word(WS[1]) + else + AChar := 0; + end; end; end; @@ -1059,23 +1068,29 @@ end; WM_CHAR: begin - if not HandleUnicodeChar(Word(WParam)) then + // first send a IntfUTF8KeyPress to the LCL + // if the key was not handled send a CN_CHAR for AnsiChar<=#127 + OrgCharCode := Word(WParam); + if not HandleUnicodeChar(OrgCharCode) then begin - PLMsg:=@LMChar; - with LMChar Do + PLMsg:=@LMChar; + with LMChar Do + begin + Msg := CN_CHAR; + KeyData := LParam; + CharCode := Word(Char(WideChar(WParam))); + OrgCharCode := CharCode; + Result := 0; + //DebugLn(Format('WM_CHAR KeyData= %d CharCode= %d ',[KeyData,CharCode])); + end; + WinProcess := false; + end + else begin - Msg := CN_CHAR; - KeyData := LParam; - CharCode := Word(Char(WideChar(WParam))); - OrgCharCode := CharCode; - Result := 0; - //DebugLn(Format('WM_CHAR KeyData= %d CharCode= %d ',[KeyData,CharCode])); + WParam := OrgCharCode; + WinProcess := OrgCharCode<>0; end; - WinProcess := false; - end - else - WinProcess := true; - end; + end; WM_MENUCHAR: begin PLMsg^.Result := FindMenuItemAccelerator(chr(LOWORD(WParam)), LParam); diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/winceextra.pp lazarus-1.6+dfsg/lcl/interfaces/wince/winceextra.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/winceextra.pp 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/winceextra.pp 2015-12-05 11:36:24.000000000 +0000 @@ -63,7 +63,6 @@ WM_HIBERNATE = $03FF; - function DrawState(dc:HDC ; hbr : HBRUSH ; func: DRAWSTATEPROC ; lp:LPARAM; wp:WPARAM;x,y,cx,cy:integer;flags:UINT) : boolean; function GetTopWindow(hWnd:HWND):HWND; @@ -80,15 +79,6 @@ function ImageList_Copy(himlDst: HIMAGELIST; iDst: longint; himlSrc: HIMAGELIST; Src: longint; uFlags: UINT): BOOL; cdecl; external KernelDLL; {$endif} -{$ifdef win32} -function ScrollWindowPtr(hWnd:HWND; XAmount:longint; YAmount:longint; lpRect: pointer; lpClipRect: pointer):WINBOOL; stdcall; external 'user32' name 'ScrollWindow'; -{$else} -function ScrollWindowPtr(hWnd:HWND; dx:longint; dy:longint; prcScroll: lpRECT; prcClip: lpRECT; - hrgnUpdate: HRGN; prcUpdate: LPRECT; flags:UINT):longint; cdecl; external KernelDll name 'ScrollWindowEx'; -{$endif} - - - const // BlendOp flags AC_SRC_OVER = $00; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/winceint.pp lazarus-1.6+dfsg/lcl/interfaces/wince/winceint.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/winceint.pp 2014-01-04 14:17:24.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/winceint.pp 2015-02-06 18:25:31.000000000 +0000 @@ -44,7 +44,7 @@ Windows, // RTL, LCL Classes, ComCtrls, Controls, Buttons, Dialogs, DynHashArray, - ExtCtrls, Forms, GraphMath, GraphType, InterfaceBase, LCLIntf, LCLType, + ExtCtrls, Forms, GraphMath, GraphType, InterfaceBase, LCLIntf, LCLType, LazUTF8, LMessages, StdCtrls, SysUtils, Graphics, Menus, // Widgetset WinCEProc, WinCEExtra, WinExt, WinCEDef, Themes; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/winceproc.pp lazarus-1.6+dfsg/lcl/interfaces/wince/winceproc.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/winceproc.pp 2012-03-27 07:16:11.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/winceproc.pp 2015-02-06 18:25:31.000000000 +0000 @@ -14,7 +14,7 @@ {$endif} // compatibility // RTL, LCL - Classes, LMessages, LCLType, LCLProc, Controls, Forms, Menus, + Classes, LMessages, LCLType, LCLProc, LazUTF8, Controls, Forms, Menus, WinCEExtra, GraphType, LCLMessageGlue; type diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewinapi.inc lazarus-1.6+dfsg/lcl/interfaces/wince/wincewinapi.inc --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewinapi.inc 2014-10-31 16:51:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewinapi.inc 2015-02-27 09:00:18.000000000 +0000 @@ -1302,9 +1302,24 @@ function TWinCEWidgetSet.FrameRect(DC: HDC; const ARect: TRect; hBr: HBRUSH) : integer; +var + res: Boolean; + OldBrush: HBRUSH; begin -//roozbeh....works for now! - Result := Integer(DrawFocusRect(DC,Arect)); + res := True; + if (ARect.Top <= ARect.Bottom) and (ARect.Left <= ARect.Right) then + begin + OldBrush := Windows.SelectObject(DC, hBr); + res := res and FillRect(DC, Rect(ARect.Left, ARect.Top, ARect.Right, ARect.Top+1), hBr); + res := res and FillRect(DC, Rect(ARect.Left, ARect.Bottom-1, ARect.Right, ARect.Bottom), hBr); + res := res and FillRect(DC, Rect(ARect.Right-1, ARect.Top, ARect.Right, ARect.Bottom), hBr); + res := res and FillRect(DC, Rect(ARect.Left, ARect.Top, ARect.Left+1, ARect.Bottom), hBr); + Windows.SelectObject(DC, OldBrush); + end; + if res then + Result := 1 + else + Result := 0; end; {------------------------------------------------------------------------------ diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsbuttons.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsbuttons.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsbuttons.pp 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsbuttons.pp 2015-02-06 18:25:31.000000000 +0000 @@ -26,7 +26,7 @@ // RTL SysUtils, Classes, // LCL - Controls, Buttons, Graphics, GraphType, LCLType, LCLProc, + Controls, Buttons, Graphics, GraphType, LCLType, LCLProc, LazUTF8, // Widgetset WSButtons, WSLCLClasses, WinCEWSControls, WinCEWSImgList, WinCEProc; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewscomctrls.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewscomctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewscomctrls.pp 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewscomctrls.pp 2015-02-06 18:25:31.000000000 +0000 @@ -27,7 +27,7 @@ // LCL ComCtrls, LCLType, Controls, Graphics, ImgList, StdCtrls, Math, LCLIntf, ExtCtrls, - LCLProc, InterfaceBase, LMessages, LCLMessageGlue, + LazUTF8, InterfaceBase, LMessages, LCLMessageGlue, // widgetset WSComCtrls, WSLCLClasses, WSProc, WsControls, WinCEInt, WinCEProc, WinCEWSControls, WinCEExtra; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewscontrols.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewscontrols.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewscontrols.pp 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewscontrols.pp 2015-12-05 11:36:24.000000000 +0000 @@ -25,8 +25,7 @@ Windows, commctrl, // RTL, LCL - Classes, LCLProc, - LCLType, Controls, Forms, Graphics, + Classes, LCLProc, LazUTF8, LCLType, Controls, Forms, Graphics, // Widgetset winceproc, WinCEInt, Sysutils, WSProc, WSLCLClasses, WSImgList, WSControls, @@ -87,6 +86,7 @@ class procedure DestroyHandle(const AWinControl: TWinControl); override; class procedure Invalidate(const AWinControl: TWinControl); override; class procedure ShowHide(const AWinControl: TWinControl); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; { TWinCEWSGraphicControl } @@ -450,6 +450,14 @@ TWinCEWidgetSet(WidgetSet).ShowHide(AWinControl); end; +class procedure TWinCEWSWinControl.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); +begin + if Windows.IsWindowVisible(AWinControl.Handle) then + ScrollWindowEx(AWinControl.Handle, DeltaX, DeltaY, nil, nil, 0, nil, + SW_INVALIDATE or SW_ERASE or SW_SCROLLCHILDREN); +end; + { TWinCEWSDragImageList } class function TWinCEWSDragImageList.BeginDrag( diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsextctrls.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsextctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsextctrls.pp 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsextctrls.pp 2015-02-06 18:25:31.000000000 +0000 @@ -27,7 +27,7 @@ {$ifdef Win32}win32compat,{$endif} // LCL ExtCtrls, Classes, Controls, ImgList, Forms, LCLType, LCLIntf, LCLMessageGlue, - LCLProc, + LazUTF8, // widgetset WSControls, WSExtCtrls, WSLCLClasses, WinCEInt, WinCEProc, InterfaceBase, WinCEWSControls, WSProc; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsforms.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsforms.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsforms.pp 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsforms.pp 2015-11-29 18:45:53.000000000 +0000 @@ -34,8 +34,6 @@ TWinCEWSScrollingWinControl = class(TWSScrollingWinControl) published - class procedure ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); override; end; { TWinCEWSScrollBox } @@ -147,26 +145,6 @@ Result := Params.Window; end; -{ TWinCEWSScrollingWinControl } - -class procedure TWinCEWSScrollingWinControl.ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); -var - rgn: HRGN; - rect: trect; -begin - rgn := 0; //roozbeh : seems to be ok? - // GetClipRgn(AWinControl.Handle,rgn); - // roozbeh:which flags really are required?! - if Windows.IsWindowVisible(AWinControl.Handle) then - {$ifdef win32} - ScrollWindowPtr(AWinControl.Handle, DeltaX, DeltaY, nil, nil); - {$else} - ScrollWindowPtr(AWinControl.Handle, DeltaX, DeltaY, nil, nil, - rgn, nil, SW_INVALIDATE or SW_ERASE or SW_SCROLLCHILDREN); - {$endif} -end; - { TWinCEWSCustomForm } class function TWinCEWSCustomForm.CalcBorderIconsFlags(const AForm: TCustomForm): dword; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsgrids.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsgrids.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsgrids.pp 2013-05-25 09:22:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsgrids.pp 2015-02-06 18:25:31.000000000 +0000 @@ -24,7 +24,7 @@ // RTL, FCL Windows, // LCL - LCLType, LCLProc, Controls, + LCLType, LazUTF8, Controls, // Widgetset WSGrids, WinCEWSControls, WinCEInt; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsmenus.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsmenus.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsmenus.pp 2014-10-31 16:20:17.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsmenus.pp 2015-02-06 18:25:31.000000000 +0000 @@ -22,7 +22,7 @@ uses // LCL Graphics, GraphType, ImgList, Menus, Forms, LCLIntf, {keep before Windows } - Controls, InterfaceBase, LCLProc, + Controls, InterfaceBase, LCLProc, LazUTF8, // RTL, FCL Windows, Classes, SysUtils, commctrl, diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsspin.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsspin.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsspin.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsspin.pp 2015-02-06 18:25:31.000000000 +0000 @@ -24,7 +24,7 @@ commctrl, Windows, // LCL - Spin, Controls, StdCtrls, LCLType, LCLProc, + Spin, Controls, StdCtrls, LCLType, LazUTF8, // Widgetset WSSpin, WSLCLClasses, WinCEInt, WinCEProc, WinCEWSStdCtrls, WinCEWSControls; diff -Nru lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsstdctrls.pp lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsstdctrls.pp --- lazarus-1.4.4+dfsg/lcl/interfaces/wince/wincewsstdctrls.pp 2014-11-22 14:38:26.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/interfaces/wince/wincewsstdctrls.pp 2015-12-05 11:36:24.000000000 +0000 @@ -28,7 +28,7 @@ {$ifdef Win32}win32compat,{$endif} // RTL, FCL, LCL SysUtils, LCLType, Classes, StdCtrls, Controls, Graphics, Forms, WinCEProc, - InterfaceBase, LMessages, LCLMessageGlue, LCLProc, LazUtf8Classes, + InterfaceBase, LMessages, LCLMessageGlue, LazUTF8, LazUtf8Classes, // Widgetset WSControls, WSStdCtrls, WSLCLClasses, WinCEInt, WinCEWSControls, WinCEExtra, WSProc; @@ -184,6 +184,7 @@ class procedure SetScrollbars(const ACustomMemo: TCustomMemo; const NewScrollbars: TScrollStyle); override; class procedure SetText(const AWinControl: TWinControl; const AText: string); override; class procedure SetWordWrap(const ACustomMemo: TCustomMemo; const NewWordWrap: boolean); override; + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); override; end; { TWinCEWSEdit } @@ -1136,6 +1137,12 @@ RecreateWnd(ACustomMemo); end; +class procedure TWinCEWSCustomMemo.ScrollBy(const AWinControl: TWinControl; + DeltaX, DeltaY: integer); +begin + SendMessage(AWinControl.Handle, EM_LINESCROLL, -DeltaX, -DeltaY); +end; + { TWinCEWSCustomStaticText } function CalcStaticTextFlags( diff -Nru lazarus-1.4.4+dfsg/lcl/intfgraphics.pas lazarus-1.6+dfsg/lcl/intfgraphics.pas --- lazarus-1.4.4+dfsg/lcl/intfgraphics.pas 2014-09-15 16:04:58.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/intfgraphics.pas 2015-04-04 18:23:18.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: intfgraphics.pas 46241 2014-09-15 16:04:58Z juha $ } +{ $Id: intfgraphics.pas 48623 2015-04-04 18:23:18Z juha $ } { /*************************************************************************** intfgraphics.pp @@ -5047,13 +5047,21 @@ function TLazReaderBMP.InternalCheck(Stream: TStream): boolean; var BFH: TBitMapFileHeader; + offbits: DWORD; begin Stream.Read(BFH, SizeOf(BFH)); - Result := (LEtoN(BFH.bfType) = BMmagic); // Just check magic number + Result := BFH.bfType = LEtoN(BMmagic); // Just check magic number - // store the data offset + { Store the data offset. BFH is poorly aligned (dictated by the .bmp file + format), which can cause problems for architectures such as SPARC and some + ARM implementations which have strict alignment requirements. That is why + the code below uses an intermediate variable, rather than a direct call to + LEtoN(BFH.bfOffBits) which will try to pass a misaligned parameter. } if Result and (BFH.bfOffBits <> 0) - then FDataOffset := Stream.Position + LEtoN(BFH.bfOffBits) - SizeOf(BFH); + then begin + offbits := BFH.bfOffBits; + FDataOffset := Stream.Position + LEtoN(offbits) - SizeOf(BFH) + end end; procedure TLazReaderBMP.InternalReadHead; @@ -5529,6 +5537,7 @@ Progress(psStarting, 0, False, Rect(0,0,0,0), '', FContinue); FImage := TheImage as TLazIntfImage; FIgnoreAlpha := True; + Depth := 0; InternalReadHead; if FUpdateDescription diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.ca.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.ca.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.ca.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.ca.po 2015-08-24 12:42:05.000000000 +0000 @@ -419,6 +419,14 @@ msgid "Docking" msgstr "Fixa" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.cs.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.cs.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.cs.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.cs.po 2015-11-17 22:07:29.000000000 +0000 @@ -2,14 +2,14 @@ msgstr "" "Project-Id-Version: Lazarus LCL\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2014-06-25 15:46+0100\n" -"Last-Translator: Václav Valíček <valicek1994@gmail.com>\n" +"PO-Revision-Date: 2015-11-14 16:19+0100\n" +"Last-Translator: Chronos <robie@centrum.cz>\n" "Language-Team: Czech <vaclav@valicek.name>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.4\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Poedit-SourceCharset: UTF-8\n" @@ -374,7 +374,7 @@ #: lclstrconsts.rscreatinggdbcatchableerror msgid "Creating gdb catchable error:" -msgstr "Vytvářím chytatelnou chybu gdb:" +msgstr "Vytvářím zachytitelnou chybu gdb:" #: lclstrconsts.rscursor msgid "Cursor" @@ -413,9 +413,17 @@ msgid "Docking" msgstr "Ukotvení" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "Kopírovat" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "Vložit" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." -msgstr "Zdvojený formát ikony." +msgstr "Duplicitní formát ikony." #: lclstrconsts.rseditrecordhint msgid "Edit" @@ -541,7 +549,7 @@ #: lclstrconsts.rsformresourcesnotfoundforresourcelessformscreatenew msgid "Form resource %s not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource." -msgstr "Zdroj formuláře %s nenalezen. Pro formuláře bez resource musí být použit konstruktor CreateNew. Podívejte se na globální proměnnou RequireDerivedFormResource." +msgstr "Zdroj formuláře %s nenalezen. Pro formuláře bez zdroje musí být použit konstruktor CreateNew. Podívejte se na globální proměnnou RequireDerivedFormResource." #: lclstrconsts.rsformstreamingerror msgid "Form streaming \"%s\" error: %s" @@ -569,7 +577,7 @@ #: lclstrconsts.rsgoptionfatalwarnings msgid "--g-fatal-warnings Warnings and errors generated by Gtk+/GDK will halt the application." -msgstr "--g-fatal-warnings Varování a chyby generované Gtk+/GDK ukončí alplikaci." +msgstr "--g-fatal-warnings Varování a chyby generované Gtk+/GDK ukončí aplikaci." #: lclstrconsts.rsgradientactivecaptioncolorcaption msgid "Gradient Active Caption" @@ -597,15 +605,15 @@ #: lclstrconsts.rsgridfiledoesnotexist msgid "Grid file doesn't exist" -msgstr "" +msgstr "Soubor mřížky neexistuje" #: lclstrconsts.rsgridhasnocols msgid "Cannot insert rows into a grid when it has no columns" -msgstr "" +msgstr "Nelze vložit řádky do mřížky, když nemá sloupce" #: lclstrconsts.rsgridhasnorows msgid "Cannot insert columns into a grid when it has no rows" -msgstr "" +msgstr "Nelze vložit sloupce do mřížky, když nemá řádky" #: lclstrconsts.rsgridindexoutofrange msgid "Grid index out of range." @@ -613,7 +621,7 @@ #: lclstrconsts.rsgroupindexcannotbelessthanprevious msgid "GroupIndex cannot be less than a previous menu item's GroupIndex" -msgstr "GroupIndex nemůže být menší než předchozí GroupIndex položky menu" +msgstr "GroupIndex nemůže být menší než předchozí GroupIndex položky nabídky" #: lclstrconsts.rsgtkfilter msgid "Filter:" @@ -641,11 +649,11 @@ #: lclstrconsts.rsgtkoptionname msgid "--name programe Set program name to \"progname\". If not specified, program name will be set to ParamStrUTF8(0)." -msgstr "--name programe Nastaví jméno programu na \"programe\". Pokud se nezadá, použije se ParamStrUTF8(0)." +msgstr "--name programe Nastaví jméno programu na \"progname\". Pokud se nezadá, použije se ParamStrUTF8(0)." #: lclstrconsts.rsgtkoptionnodebug msgid "--gtk-no-debug flags Turn off specific Gtk+ trace/debug messages." -msgstr "--gtk-no-debug flags Vypnout zadané ladící/sledovací zrávy Gtk+." +msgstr "--gtk-no-debug flags Vypnout zadané ladící/sledovací zprávy Gtk+." #: lclstrconsts.rsgtkoptionnotransient msgid "--lcl-no-transient Do not set transient order for modal forms" @@ -653,11 +661,11 @@ #: lclstrconsts.rsgtkoptionnoxshm msgid "--no-xshm Disable use of the X Shared Memory Extension." -msgstr "--no-xshm Vypnout použití rozšíření X Shared Memory." +msgstr "--no-xshm Vypnout použití rozšíření X Shared Memory Extension." #: lclstrconsts.rsgtkoptionsync msgid "--sync Call XSynchronize (display, True) after the Xserver connection has been established. This makes debugging X protocol errors easier, because X request buffering will be disabled and X errors will be received immediately after the protocol request that generated the error has been processed by the X server." -msgstr "--sync Volat XSynchronize (displej, True) po stabilizaci připojení k X Serveru. Toto dělá ladění chyb X protokolu jednodušší, protože cacheování X žádostí bude vypnuto a chyby X budou doručeny okamžitě po žádosti, která vyvolala chybu." +msgstr "--sync Volat XSynchronize (displej, True) po stabilizaci připojení k X Serveru. Toto dělá ladění chyb X protokolu jednodušší, protože kešování X žádostí bude vypnuto a chyby X budou doručeny okamžitě po žádosti, která vyvolala chybu." #: lclstrconsts.rshelpalreadyregistered msgid "%s: Already registered" @@ -684,8 +692,6 @@ msgstr "Kontext nápovědy %s nenalezen v databázi \"%s\"." #: lclstrconsts.rshelphelpdatabasedidnotfoundaviewerforahelppageoftype -#, fuzzy -#| msgid "Help Database \"%s\" did not found a viewer for a help page of type %s" msgid "Help Database \"%s\" did not find a viewer for a help page of type %s" msgstr "Databáze nápovědy \"%s\" nenalezla prohlížeč pro stránku nápovědy typu %s" @@ -723,7 +729,7 @@ #: lclstrconsts.rshelpnotfound msgid "No help found for this topic" -msgstr "Nápověda pro téna nenalezena" +msgstr "Nápověda pro téma nenalezena" #: lclstrconsts.rshelpnotregistered msgid "%s: Not registered" @@ -931,7 +937,7 @@ #: lclstrconsts.rsmbyestoall msgid "Yes to &All" -msgstr "Ano všem" +msgstr "Ano &všem" #: lclstrconsts.rsmedgraycolorcaption msgid "Medium Gray" @@ -939,7 +945,7 @@ #: lclstrconsts.rsmenubarcolorcaption msgid "Menu Bar" -msgstr "Lišta menu" +msgstr "Lišta nabídky" #: lclstrconsts.rsmenucolorcaption msgctxt "lclstrconsts.rsmenucolorcaption" @@ -948,11 +954,11 @@ #: lclstrconsts.rsmenuhighlightcolorcaption msgid "Menu Highlight" -msgstr "Zvýraznění menu" +msgstr "Zvýraznění nabídky" #: lclstrconsts.rsmenutextcolorcaption msgid "Menu Text" -msgstr "Text menu" +msgstr "Text nabídky" #: lclstrconsts.rsmodified msgid " modified " @@ -1063,7 +1069,7 @@ #: lclstrconsts.rsqtoptiondograb msgid "-dograb (only under X11), running under a debugger can cause an implicit -nograb, use -dograb to override. Need QT_DEBUG." -msgstr "-dograb (pouze pod X11), běh v debuggeru může vyústit v implicitní --nograb, použijte -dograb k přepisu. Potřebujete QT_DEBUG." +msgstr "-dograb (pouze pod X11), běh v ladiče může vyústit v implicitní --nograb, použijte -dograb k přepisu. Potřebujete QT_DEBUG." #: lclstrconsts.rsqtoptiongraphicsstyle msgid "-graphicssystem param, sets the backend to be used for on-screen widgets and QPixmaps. Available options are native, raster and opengl. OpenGL is still unstable." @@ -1107,7 +1113,7 @@ #: lclstrconsts.rsqtoptionx11cmap msgid "-cmap, causes the application to install a private color map on an 8-bit display." -msgstr "-cmap - způsobuje, že si aplikace nainstaluje soukromou causemapu barev na 8-mi bitovém displeji." +msgstr "-cmap - způsobuje, že si aplikace nainstaluje soukromou mapu barev na 8-mi bitovém displeji." #: lclstrconsts.rsqtoptionx11display msgid "-display display, sets the X display (default is $DISPLAY)." @@ -1119,7 +1125,7 @@ #: lclstrconsts.rsqtoptionx11font msgid "-fn or -font font, defines the application font. The font should be specified using an X logical font description." -msgstr "-fn nebo -font font - definuje font aplikace. Font by měl být specifikován X logickým popisem fontu." +msgstr "-fn nebo -font font - definuje písmo aplikace. Písmo by mělo být určenon X logickým popisem písma." #: lclstrconsts.rsqtoptionx11geometry msgid "-geometry geometry, sets the client geometry of the first window that is shown." @@ -1131,7 +1137,7 @@ #: lclstrconsts.rsqtoptionx11inputstyle msgid "-inputstyle, defines how the input is inserted into the given widget, e.g. onTheSpot makes the input appear directly in the widget, while overTheSpot makes the input appear in a box floating over the widget and is not inserted until the editing is done." -msgstr "-inputstyle - definuje jakten NVIDIA Shield zamlouvat. Brzo o něm \"uslyšíte\" i v našem pořadu. Nedávno tam vyšel Portal, teď legenda je vstup vkládán do daného widgetu, například onTheSpot způsobuje, že se vstup objebuje přímo ve widgetu, zatímco overTheSpot způsobuje, že se vstup objeví v rámu plovoucím nad widgetem a je vložen až po dokončení editace." +msgstr "-inputstyle - definuje jakten NVIDIA Shield zamlouvat. Brzo o něm \"uslyšíte\" i v našem pořadu. Nedávno tam vyšel Portal, teď legenda je vstup vkládán do daného widgetu, například onTheSpot způsobuje, že se vstup objevuje přímo ve widgetu, zatímco overTheSpot způsobuje, že se vstup objeví v rámu plovoucím nad widgetem a je vložen až po dokončení editace." #: lclstrconsts.rsqtoptionx11name msgid "-name name, sets the application name." @@ -1247,7 +1253,7 @@ #: lclstrconsts.rsunknownerrorpleasereportthisbug msgid "Unknown Error, please report this bug" -msgstr "Neznámá chyba, prosíme nahlašte tuto chybu" +msgstr "Neznámá chyba, prosím nahlašte tuto chybu" #: lclstrconsts.rsunknownpictureextension msgid "Unknown picture extension" @@ -1323,7 +1329,7 @@ #: lclstrconsts.sduplicatemenus msgid "Duplicate menus" -msgstr "Zdvojené menu" +msgstr "Zdvojit nabídku" #: lclstrconsts.sinvalidactioncreation msgid "Invalid action creation" @@ -1359,15 +1365,15 @@ #: lclstrconsts.smenuindexerror msgid "Menu index out of range" -msgstr "Index menu mimo rozsah" +msgstr "Index nabídky mimo rozsah" #: lclstrconsts.smenuitemisnil msgid "MenuItem is nil" -msgstr "Položka menu je nil" +msgstr "Položka nabídky je nil" #: lclstrconsts.smenunotfound msgid "Sub-menu is not in menu" -msgstr "Podmenu není v menu" +msgstr "Podnabídka není v nabídce" #: lclstrconsts.smkcalt msgid "Alt+" @@ -1462,7 +1468,7 @@ #: lclstrconsts.sparentrequired msgid "Control \"%s\" has no parent window." -msgstr "" +msgstr "Prvek \"%s\" nemá rodičovské okno." #: lclstrconsts.sparexpected msgid "Wrong token type: %s expected" @@ -1498,7 +1504,7 @@ #: lclstrconsts.sshellctrlsbytes msgid "%s bytes" -msgstr "" +msgstr "%s bajtů" #: lclstrconsts.sshellctrlsinvalidpath msgctxt "lclstrconsts.sshellctrlsinvalidpath" @@ -1506,6 +1512,8 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Neplatná cesta:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidpathrelative msgid "" @@ -1514,6 +1522,10 @@ "in relation to rootpath:\n" "\"%s\"\n" msgstr "" +"Neplatná relativní cesta:\n" +"\"%s\"\n" +"v relaci k kořenové cestě:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidroot msgctxt "lclstrconsts.sshellctrlsinvalidroot" @@ -1521,30 +1533,34 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Neplatná cesta:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlskb msgid "%s kB" -msgstr "" +msgstr "%s kB" #: lclstrconsts.sshellctrlsmb msgid "%s MB" -msgstr "" +msgstr "%s MB" #: lclstrconsts.sshellctrlsname msgid "Name" -msgstr "" +msgstr "Jméno" #: lclstrconsts.sshellctrlsselecteditemdoesnotexists msgid "" "The selected item does not exist on disk:\n" "\"%s\"\n" msgstr "" +"Vybraná položka neexistuje na disku:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlssize msgid "Size" -msgstr "" +msgstr "Velikost" #: lclstrconsts.sshellctrlstype msgid "Type" -msgstr "" +msgstr "Typ" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.de.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.de.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.de.po 2015-04-25 17:56:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.de.po 2015-08-24 12:42:05.000000000 +0000 @@ -412,6 +412,14 @@ msgid "Docking" msgstr "Andocken" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Doppeltes Icon-Format" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.es.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.es.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.es.po 2015-04-29 21:01:28.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.es.po 2015-08-24 12:42:05.000000000 +0000 @@ -409,6 +409,14 @@ msgid "Docking" msgstr "Anclado" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Duplicar formato de icono." diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.fi.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.fi.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.fi.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.fi.po 2015-12-05 11:32:24.000000000 +0000 @@ -409,6 +409,14 @@ msgid "Docking" msgstr "Telakointi" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "Kopioi" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "Liitä" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Samanlaisen kuvakemuodot." @@ -428,7 +436,7 @@ #: lclstrconsts.rserrorcreatingdevicecontext msgid "Error creating device context for %s.%s" -msgstr "" +msgstr "Virhe luotaessa laiteympäristöä: %s.%s" #: lclstrconsts.rserrorinlcl msgid "ERROR in LCL: " @@ -553,11 +561,11 @@ #: lclstrconsts.rsgdkoptiondebug msgid "--gdk-debug flags Turn on specific GDK trace/debug messages." -msgstr "" +msgstr "--gdk-debug liput Näytä tietyt GDK trace/debug viestit." #: lclstrconsts.rsgdkoptionnodebug msgid "--gdk-no-debug flags Turn off specific GDK trace/debug messages." -msgstr "" +msgstr "--gdk-no-debug liput Älä näytä tiettyjä GDK trace/debug viestejä." #: lclstrconsts.rsgif msgid "Graphics Interchange Format" @@ -565,7 +573,7 @@ #: lclstrconsts.rsgoptionfatalwarnings msgid "--g-fatal-warnings Warnings and errors generated by Gtk+/GDK will halt the application." -msgstr "" +msgstr "--g-fatal-warnings Gtk+/GDK:n tuottamat varoitukset ja virheet pysäyttävät sovelluksen." #: lclstrconsts.rsgradientactivecaptioncolorcaption msgid "Gradient Active Caption" @@ -1077,55 +1085,55 @@ #: lclstrconsts.rsqtoptionstyle msgid "-style style or -style=style, sets the application GUI style. Possible values are motif, windows, and platinum. If you compiled Qt with additional styles or have additional styles as plugins these will be available to the -style command line option. NOTE: Not all styles are available on all platforms. If style param does not exist Qt will start an application with default common style (windows)." -msgstr "" +msgstr "-style tyyli tai -style=tyyli, asettaa ohjelman käyttöliittymän tyylin. Mahdollisia arvoja ovat motif, windows, ja platinum. Jos QT käännettiin lisätyylien kanssa tai sillä tyyli-plugineja, ne ovat käytettävissä -style komentorivioption kanssa. Huom. Kaikki tyylit eivät ole tajolla kaikilla alustoilla. Jos tyyli-parametria ei ole QT käynnistää ohjelman yleisellä oletustyylillä (windows)." #: lclstrconsts.rsqtoptionstylesheet msgid "-stylesheet stylesheet or -stylesheet=stylesheet, sets the application Style Sheet. The value must be a path to a file that contains the Style Sheet. Note: Relative URLs in the Style Sheet file are relative to the Style Sheet file's path." -msgstr "" +msgstr "-stylesheet tyylisivu tai -stylesheet=tyylisivu, asettaa ohjelman tyylisivun. Arvon pitää olla polku tiedostoon, missä tyylisivu on. Huom. Suhteelliset URL:t tyylisivussa ovat suhteessa tiedoston polkuun." #: lclstrconsts.rsqtoptionsync msgid "-sync (only under X11), switches to synchronous mode for debugging." -msgstr "" +msgstr "-sync (vain X11), kytkee päällä synkronisen virheenjäljitystilan." #: lclstrconsts.rsqtoptionwidgetcount msgid "-widgetcount, prints debug message at the end about number of widgets left undestroyed and maximum number of widgets existed at the same time." -msgstr "" +msgstr "-widgetcount, tulostaa lopuksi debug-viestin tuhoamattomien kontrollien määrästä ja suurimmasta kontrollien määrästä sillä hetkellä." #: lclstrconsts.rsqtoptionx11bgcolor msgid "-bg or -background color, sets the default background color and an application palette (light and dark shades are calculated)." -msgstr "" +msgstr "-bg tai -background väri, asettaa taustan oletusvärin ja ohjelman paletin (vaaleat ja tummat sävyt lasketaan)." #: lclstrconsts.rsqtoptionx11btncolor msgid "-btn or -button color, sets the default button color." -msgstr "" +msgstr "-btn tai -button väri, asettaa nappien oletusvärin." #: lclstrconsts.rsqtoptionx11cmap msgid "-cmap, causes the application to install a private color map on an 8-bit display." -msgstr "" +msgstr "-cmap, saa ohjelman asentamaan paikallisen värikartan 8-bittiselle näytölle." #: lclstrconsts.rsqtoptionx11display msgid "-display display, sets the X display (default is $DISPLAY)." -msgstr "" +msgstr "-display näyttö, asettaa X näytön (oletus on $DISPLAY)." #: lclstrconsts.rsqtoptionx11fgcolor msgid "-fg or -foreground color, sets the default foreground color." -msgstr "" +msgstr "-fg or -foreground väri, asettaa oletusvärin." #: lclstrconsts.rsqtoptionx11font msgid "-fn or -font font, defines the application font. The font should be specified using an X logical font description." -msgstr "" +msgstr "-fn tai -font kirjasin, määrittelee ohjelman kirjasimen. Kirjasin pitäisi antaa X:n loogisena kirjasin-määrityksenä." #: lclstrconsts.rsqtoptionx11geometry msgid "-geometry geometry, sets the client geometry of the first window that is shown." -msgstr "" +msgstr "-geometry geometria, asettaa asiakkaan geometrian ensimmäiselle näkyvälle ikkunalle." #: lclstrconsts.rsqtoptionx11im msgid "-im, sets the input method server (equivalent to setting the XMODIFIERS environment variable)." -msgstr "" +msgstr "-im, asettaa syöttömetodin palvelimen (sama kuin XMODIFIERS ympäristömuuttujan asettaminen)." #: lclstrconsts.rsqtoptionx11inputstyle msgid "-inputstyle, defines how the input is inserted into the given widget, e.g. onTheSpot makes the input appear directly in the widget, while overTheSpot makes the input appear in a box floating over the widget and is not inserted until the editing is done." -msgstr "" +msgstr "-inputstyle, määrittelee miten syöte tulee tietylle kontrollille, esim. onTheSpot saa syötteen näkymään suoraan kontrollissa, kun taas overTheSpot saa syötteen näkymään kontrollin päällä leijuvassa laatikossa ja kontrolli saa sen vasta kun muokkaus loppuu." #: lclstrconsts.rsqtoptionx11name msgid "-name name, sets the application name." @@ -1133,7 +1141,7 @@ #: lclstrconsts.rsqtoptionx11ncols msgid "-ncols count, limits the number of colors allocated in the color cube on an 8-bit display, if the application is using the QApplication::ManyColor color specification. If count is 216 then a 6x6x6 color cube is used (i.e. 6 levels of red, 6 of green, and 6 of blue); for other values, a cube approximately proportional to a 2x3x1 cube is used." -msgstr "" +msgstr "-ncols määrä, rajoittaa värien määrää värikuutiossa 8-bittisessä näytössä, jos ohjelma käyttää QApplication::ManyColor värimääritystä. Jos määrä on 216, käytetään 6x6x6 värikuutiota (siis 6 punaisen, 6 vihreän ja 6 sinisen sävyä); muille arvoille käytetään kuutiota sunnilleen 2x3x1 suhteella." #: lclstrconsts.rsqtoptionx11title msgid "-title title, sets the application title." @@ -1141,15 +1149,15 @@ #: lclstrconsts.rsqtoptionx11visual msgid "-visual TrueColor, forces the application to use a TrueColor visual on an 8-bit display." -msgstr "" +msgstr "-visual TrueColor, pakottaa ohjelman käyttämään TrueColor näkymää 8-bittisessä näytössä." #: lclstrconsts.rsrasterimageendupdate msgid "Endupdate while no update in progress" -msgstr "" +msgstr "Endupdate vaikka päivitys ei ollut käynnissä" #: lclstrconsts.rsrasterimagesaveinupdate msgid "Cannot save image while update in progress" -msgstr "" +msgstr "Kuvan tallennus ei onnistu kun päivitys on käynnissä" #: lclstrconsts.rsrasterimageupdateall msgid "Cannot begin update all when canvas only update in progress" @@ -1228,7 +1236,7 @@ #: lclstrconsts.rstsplitteraccessibilitydescription msgctxt "lclstrconsts.rstsplitteraccessibilitydescription" msgid "A grip to control how much size to give two parts of an area" -msgstr "" +msgstr "Kahva millä säädetään alueen kahden osan koko" #: lclstrconsts.rsttreeviewaccessibilitydescription msgctxt "lclstrconsts.rsttreeviewaccessibilitydescription" @@ -1492,7 +1500,7 @@ #: lclstrconsts.sshellctrlsbytes msgid "%s bytes" -msgstr "" +msgstr "%s tavua" #: lclstrconsts.sshellctrlsinvalidpath msgctxt "lclstrconsts.sshellctrlsinvalidpath" @@ -1500,6 +1508,8 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Kelvoton polku:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidpathrelative msgid "" @@ -1508,6 +1518,10 @@ "in relation to rootpath:\n" "\"%s\"\n" msgstr "" +"Kelvoton suhteellinen polku:\n" +"\"%s\"\n" +"suhteessa juuripolkuun:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidroot msgctxt "lclstrconsts.sshellctrlsinvalidroot" @@ -1515,6 +1529,8 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Kelvoton polku:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlskb msgid "%s kB" @@ -1526,19 +1542,21 @@ #: lclstrconsts.sshellctrlsname msgid "Name" -msgstr "" +msgstr "Nimi" #: lclstrconsts.sshellctrlsselecteditemdoesnotexists msgid "" "The selected item does not exist on disk:\n" "\"%s\"\n" msgstr "" +"Valittua kohtaa ei ole levyllä:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlssize msgid "Size" -msgstr "" +msgstr "Koko" #: lclstrconsts.sshellctrlstype msgid "Type" -msgstr "" +msgstr "Tyyppi" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.fr.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.fr.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.fr.po 2015-04-12 21:36:02.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.fr.po 2015-12-19 00:06:27.000000000 +0000 @@ -1,7 +1,7 @@ msgid "" msgstr "" "Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" -"PO-Revision-Date: 2015-04-12 18:41+0100\n" +"PO-Revision-Date: 2015-12-18 11:32+0100\n" "Language-Team: Laurent Jacques <wile64@gmail.com>\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -9,7 +9,7 @@ "POT-Creation-Date: \n" "Project-Id-Version: \n" "Language: fr\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.6\n" #: lclstrconsts.hhshelpbrowsernotexecutable msgid "Browser \"%s\" not executable." @@ -411,6 +411,14 @@ msgid "Docking" msgstr "Amarrage" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "Copier" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "Coller" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Dupliquer le format d'icône." diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.he.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.he.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.he.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.he.po 2015-08-24 12:42:05.000000000 +0000 @@ -421,6 +421,14 @@ msgid "Docking" msgstr "עיגון" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "פומט צלמית כפול" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.hu.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.hu.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.hu.po 2015-06-04 21:52:58.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.hu.po 2015-09-18 22:42:51.000000000 +0000 @@ -411,6 +411,14 @@ msgid "Docking" msgstr "Dokkolás" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "Másolás" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "Beillesztés" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Kettős ikonformátum" @@ -1553,3 +1561,4 @@ #: lclstrconsts.sshellctrlstype msgid "Type" msgstr "Típus" + diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.id.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.id.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.id.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.id.po 2015-08-24 12:42:05.000000000 +0000 @@ -420,6 +420,14 @@ msgid "Docking" msgstr "Docking" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.it.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.it.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.it.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.it.po 2015-08-24 12:42:05.000000000 +0000 @@ -413,6 +413,14 @@ msgid "Docking" msgstr "Agganciamento" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Formato icona duplicato." diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.ja.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.ja.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.ja.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.ja.po 2015-08-24 12:42:05.000000000 +0000 @@ -419,6 +419,14 @@ msgid "Docking" msgstr "ドッキング" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "アイコンの形式が重複しています。" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.lt.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.lt.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.lt.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.lt.po 2015-08-24 12:42:05.000000000 +0000 @@ -420,6 +420,14 @@ msgid "Docking" msgstr "Pritvirtinimas" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Piktogramos formatai dubliuojasi." diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.nl.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.nl.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.nl.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.nl.po 2015-08-24 12:42:05.000000000 +0000 @@ -241,7 +241,7 @@ #: lclstrconsts.ifsvk_space msgid "Space key" -msgstr "Spatiebar" +msgstr "Spatiebalk" #: lclstrconsts.ifsvk_super msgid "Super" @@ -365,7 +365,7 @@ #: lclstrconsts.rscontrolclasscantcontainchildclass msgid "Control of class '%s' can't have control of class '%s' as a child" -msgstr "Control of klasse '%s' kan control of klasse '%s' niet als kind hebben" +msgstr "Control van klasse '%s' kan control van klasse '%s' niet als kind hebben" #: lclstrconsts.rscontrolhasnoparentwindow msgid "Control '%s' has no parent window" @@ -373,7 +373,7 @@ #: lclstrconsts.rscontrolisnotaparent msgid "'%s' is not a parent of '%s'" -msgstr "" +msgstr "'%s' is geen ouder van '%s'" #: lclstrconsts.rscreamcolorcaption msgid "Cream" @@ -420,6 +420,14 @@ msgid "Docking" msgstr "Docking" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Duplicaat icoonformaat." @@ -535,16 +543,12 @@ msgstr "Eerste" #: lclstrconsts.rsfixedcolstoobig -#, fuzzy -#| msgid "FixedCols can't be >= ColCount" msgid "FixedCols can't be > ColCount" -msgstr "FixedCols kan niet >= ColCount" +msgstr "FixedCols kan niet > ColCount zijn" #: lclstrconsts.rsfixedrowstoobig -#, fuzzy -#| msgid "FixedRows can't be >= RowCount" msgid "FixedRows can't be > RowCount" -msgstr "FixedRows kan niet >= RowCount" +msgstr "FixedRows kan niet > RowCount zijn" #: lclstrconsts.rsformcolorcaption msgid "Form" @@ -580,7 +584,7 @@ #: lclstrconsts.rsgoptionfatalwarnings msgid "--g-fatal-warnings Warnings and errors generated by Gtk+/GDK will halt the application." -msgstr "--g-fatal-warnings De applicatie stop bij waarschuwingen en fouten gegenereerd door GtK+/GDK." +msgstr "--g-fatal-warnings De applicatie stopt bij waarschuwingen en fouten gegenereerd door GtK+/GDK." #: lclstrconsts.rsgradientactivecaptioncolorcaption msgid "Gradient Active Caption" @@ -608,15 +612,15 @@ #: lclstrconsts.rsgridfiledoesnotexist msgid "Grid file doesn't exist" -msgstr "" +msgstr "Rooster bestand bestaat niet" #: lclstrconsts.rsgridhasnocols msgid "Cannot insert rows into a grid when it has no columns" -msgstr "" +msgstr "Kan geen rijen invoegen als het rooster geen kolommen heeft" #: lclstrconsts.rsgridhasnorows msgid "Cannot insert columns into a grid when it has no rows" -msgstr "" +msgstr "Kan geen kolommen invoegen als het rooster geen rijen heeft" #: lclstrconsts.rsgridindexoutofrange msgid "Grid index out of range." @@ -636,7 +640,7 @@ #: lclstrconsts.rsgtkoptionclass msgid "--class classname Following Xt conventions, the class of a program is the program name with the initial character capitalized. For example, the classname for gimp is \"Gimp\". If --class is specified, the class of the program will be set to \"classname\"." -msgstr "--class klassenaam Volgens de Xt conventies, is de klasse van een prograam de naam van dat programma met de eerste letter als kapitaal. Bijv. the klassenaam voor gimp is \"Gimp\". Als de --class optie is meegegeven, wordt de klasse van het programma gezet op \"klassenaam\"." +msgstr "--class klassenaam Volgens de Xt conventies, is de klasse van een programma de naam van dat programma met de eerste letter als kapitaal. Bijv. the klassenaam voor gimp is \"Gimp\". Als de --class optie is meegegeven, wordt de klasse van het programma gezet op \"klassenaam\"." #: lclstrconsts.rsgtkoptiondebug msgid "--gtk-debug flags Turn on specific Gtk+ trace/debug messages." @@ -691,50 +695,34 @@ msgstr "Help context %s niet gevonden." #: lclstrconsts.rshelphelpcontextnotfoundindatabase -#, fuzzy -#| msgid "Help context %s not found in Database %s%s%s." msgid "Help context %s not found in Database \"%s\"." msgstr "Help context %s niet gevonden in Database \"%s\"." #: lclstrconsts.rshelphelpdatabasedidnotfoundaviewerforahelppageoftype -#, fuzzy -#| msgid "Help Database \"%s\" did not found a viewer for a help page of type %s" msgid "Help Database \"%s\" did not find a viewer for a help page of type %s" msgstr "Help Database \"%s\" heeft geen viewer gevonden voor help pagina van type %s" #: lclstrconsts.rshelphelpdatabasenotfound -#, fuzzy -#| msgid "Help Database %s%s%s not found" msgid "Help Database \"%s\" not found" msgstr "Help Database \"%s\" niet gevonden" #: lclstrconsts.rshelphelpfordirectivenotfound -#, fuzzy -#| msgid "Help for directive %s%s%s not found." msgid "Help for directive \"%s\" not found." msgstr "Help voor directive \"%s\" niet gevonden." #: lclstrconsts.rshelphelpfordirectivenotfoundindatabase -#, fuzzy -#| msgid "Help for directive %s%s%s not found in Database %s%s%s." msgid "Help for directive \"%s\" not found in Database \"%s\"." msgstr "Help voor directive \"%s\" niet gevonden in Database \"%s\"." #: lclstrconsts.rshelphelpkeywordnotfound -#, fuzzy -#| msgid "Help keyword %s%s%s not found." msgid "Help keyword \"%s\" not found." msgstr "Help sleutelwoord \"%s\" niet gevonden." #: lclstrconsts.rshelphelpkeywordnotfoundindatabase -#, fuzzy -#| msgid "Help keyword %s%s%s not found in Database %s%s%s." msgid "Help keyword \"%s\" not found in Database \"%s\"." msgstr "Help sleutelwoord \"%s\" niet gevonden in Database \"%s\"." #: lclstrconsts.rshelphelpnodehasnohelpdatabase -#, fuzzy -#| msgid "Help node %s%s%s has no Help Database" msgid "Help node \"%s\" has no Help Database" msgstr "Help node \"%s\" heeft geen Help Database" @@ -743,8 +731,6 @@ msgstr "Geen help gevonden voor regel %d, kolom %d van %s. " #: lclstrconsts.rshelpnohelpnodesavailable -#, fuzzy -#| msgid "No help nodes available" msgid "No help entries available for this topic" msgstr "Geen help nodes beschikbaar voor dit onder" @@ -859,7 +845,7 @@ #: lclstrconsts.rsinvaliddaterangehint msgid "Invalid Date: %s. Must be between %s and %s" -msgstr "Ongeldige datum: %s. Het moet liggen tussen %s en %s" +msgstr "Ongeldige datum: %s. Datum moet liggen tussen %s en %s" #: lclstrconsts.rsinvalidformobjectstream msgid "invalid Form object stream" @@ -887,7 +873,7 @@ #: lclstrconsts.rslimecolorcaption msgid "Lime" -msgstr "Limoenkleurig" +msgstr "Limoen" #: lclstrconsts.rslistindexexceedsbounds msgid "List index exceeds bounds (%d)" @@ -1080,7 +1066,7 @@ #: lclstrconsts.rspromptonreplace msgid "Prompt on replace" -msgstr "" +msgstr "Vraag bij vervangen" #: lclstrconsts.rspropertydoesnotexist msgid "Property %s does not exist" @@ -1269,7 +1255,7 @@ #: lclstrconsts.rsttreeviewaccessibilitydescription msgctxt "lclstrconsts.rsttreeviewaccessibilitydescription" msgid "A tree of items" -msgstr "" +msgstr "Een boomstructuur van items" #: lclstrconsts.rsunabletoloaddefaultfont msgid "Unable to load default font" @@ -1492,7 +1478,7 @@ #: lclstrconsts.sparentrequired msgid "Control \"%s\" has no parent window." -msgstr "" +msgstr "Control \"%s\" heeft geen ouder-venster." #: lclstrconsts.sparexpected msgid "Wrong token type: %s expected" @@ -1528,7 +1514,7 @@ #: lclstrconsts.sshellctrlsbytes msgid "%s bytes" -msgstr "" +msgstr "%s bytes" #: lclstrconsts.sshellctrlsinvalidpath msgctxt "lclstrconsts.sshellctrlsinvalidpath" @@ -1536,6 +1522,8 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Ongeldige mapnaam:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidpathrelative msgid "" @@ -1544,6 +1532,10 @@ "in relation to rootpath:\n" "\"%s\"\n" msgstr "" +"Ongeldige relatieve mapnaam:\n" +"\"%s\"\n" +"in relatie tot rootmap:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidroot msgctxt "lclstrconsts.sshellctrlsinvalidroot" @@ -1551,30 +1543,34 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Ongeldige mapnaam:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlskb msgid "%s kB" -msgstr "" +msgstr "%s kB" #: lclstrconsts.sshellctrlsmb msgid "%s MB" -msgstr "" +msgstr "%s MB" #: lclstrconsts.sshellctrlsname msgid "Name" -msgstr "" +msgstr "Naam" #: lclstrconsts.sshellctrlsselecteditemdoesnotexists msgid "" "The selected item does not exist on disk:\n" "\"%s\"\n" msgstr "" +"Het geselecteerde item bestaat niet of schijf:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlssize msgid "Size" -msgstr "" +msgstr "Grootte" #: lclstrconsts.sshellctrlstype msgid "Type" -msgstr "" +msgstr "Type" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.no.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.no.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.no.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.no.po 2015-08-24 12:42:05.000000000 +0000 @@ -419,6 +419,14 @@ msgid "Docking" msgstr "Docking" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.pl.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.pl.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.pl.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.pl.po 2015-08-24 12:42:05.000000000 +0000 @@ -415,6 +415,14 @@ msgid "Docking" msgstr "" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.po 2015-08-24 12:42:05.000000000 +0000 @@ -404,6 +404,14 @@ msgid "Docking" msgstr "" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.pt_BR.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.pt_BR.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.pt_BR.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.pt_BR.po 2015-08-24 12:42:05.000000000 +0000 @@ -417,6 +417,14 @@ msgid "Docking" msgstr "Aportar" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Duplicar formato ícone." diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.ru.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.ru.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.ru.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.ru.po 2015-08-26 12:07:21.000000000 +0000 @@ -5,9 +5,11 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2015-03-01 23:38+0300\n" +"PO-Revision-Date: 2015-08-26 15:01+0300\n" "Language-Team: \n" "MIME-Version: 1.0\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: lclstrconsts.hhshelpbrowsernotexecutable msgid "Browser \"%s\" not executable." @@ -409,6 +411,14 @@ msgid "Docking" msgstr "Стыковка" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "Копировать" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "Вставить" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Формат значков дублируется." diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.sk.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.sk.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.sk.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.sk.po 2016-02-06 14:39:05.000000000 +0000 @@ -3,46 +3,40 @@ "Project-Id-Version: lclstrconsts\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-02 16:22+0100\n" -"PO-Revision-Date: 2014-01-06 17:43+0400\n" -"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n" +"PO-Revision-Date: 2016-02-01 11:02+0100\n" +"Last-Translator: Slavo Gbúr <slavusec@azet.sk>\n" "Language-Team: Slovenský <sk@li.org>\n" +"Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Poedit 1.8.6\n" #: lclstrconsts.hhshelpbrowsernotexecutable -#, fuzzy,badformat -#| msgid "Browser %s%s%s not executable." msgid "Browser \"%s\" not executable." -msgstr "Prehliadač %s%s%s nie je spustiteľný." +msgstr "Prehliadač \"%s\" nie je spustiteľný." #: lclstrconsts.hhshelpbrowsernotfound -#, fuzzy,badformat -#| msgid "Browser %s%s%s not found." msgid "Browser \"%s\" not found." -msgstr "Prehliadač %s%s%s nenájdený." +msgstr "Prehliadač \"%s\" nenájdený." #: lclstrconsts.hhshelperrorwhileexecuting -#, fuzzy,badformat -#| msgid "Error while executing %s%s%s:%s%s" msgid "Error while executing \"%s\":%s%s" -msgstr "Chyba·pri·vykonávaní·%s%s%s:%s%s" +msgstr "Chyba pri vykonávaní \"%s\":%s%s" #: lclstrconsts.hhshelpnohtmlbrowserfound msgid "Unable to find a HTML browser." -msgstr "nemožno nájsť prehliadač HTML." +msgstr "Nie je možné nájsť prehliadač HTML." #: lclstrconsts.hhshelpnohtmlbrowserfoundpleasedefineone +#, fuzzy,badformat msgid "No HTML Browser found.%sPlease define one in Tools -> Options -> Help -> Help Options" -msgstr "" +msgstr "HTML prehliadač nebol nájdený.% Prosím zadajte jeden v Nástroje -> Možnosti -> Pomoc -> Možnosti pomoci" #: lclstrconsts.hhshelpthehelpdatabasewasunabletofindfile -#, fuzzy,badformat -#| msgid "The help database %s%s%s was unable to find file %s%s%s." msgid "The help database \"%s\" was unable to find file \"%s\"." -msgstr "Databáza pomocníka %s%s%s nemohla nájsť súbor %s%s%s." +msgstr "Databáza pomoci \"%s\" nemohla nájsť súbor \"%s\"." #: lclstrconsts.hhshelpthemacrosinbrowserparamswillbereplacedbytheurl msgid "The macro %s in BrowserParams will be replaced by the URL." @@ -58,11 +52,11 @@ #: lclstrconsts.ifsvk_accept msgid "Accept" -msgstr "" +msgstr "Prijať" #: lclstrconsts.ifsvk_apps msgid "application key" -msgstr "" +msgstr "aplikačná klávesa" #: lclstrconsts.ifsvk_back msgid "Backspace" @@ -75,7 +69,7 @@ #: lclstrconsts.ifsvk_capital msgid "Capital" -msgstr "Veľkým" +msgstr "Veľké písmená" #: lclstrconsts.ifsvk_clear msgid "Clear" @@ -83,11 +77,11 @@ #: lclstrconsts.ifsvk_cmd msgid "Cmd" -msgstr "" +msgstr "Cmd" #: lclstrconsts.ifsvk_control msgid "Control" -msgstr "Prvok" +msgstr "Ovládanie" #: lclstrconsts.ifsvk_convert msgid "Convert" @@ -101,12 +95,12 @@ #: lclstrconsts.ifsvk_down msgctxt "lclstrconsts.ifsvk_down" msgid "Down" -msgstr "Dole" +msgstr "Dolu" #: lclstrconsts.ifsvk_end msgctxt "lclstrconsts.ifsvk_end" msgid "End" -msgstr "End" +msgstr "Koniec" #: lclstrconsts.ifsvk_escape msgid "Escape" @@ -114,11 +108,11 @@ #: lclstrconsts.ifsvk_execute msgid "Execute" -msgstr "Spustiť" +msgstr "Vykonať" #: lclstrconsts.ifsvk_final msgid "Final" -msgstr "" +msgstr "Konečný" #: lclstrconsts.ifsvk_hanja msgid "Hanja" @@ -131,12 +125,12 @@ #: lclstrconsts.ifsvk_home msgctxt "lclstrconsts.ifsvk_home" msgid "Home" -msgstr "Home" +msgstr "Domov" #: lclstrconsts.ifsvk_insert msgctxt "lclstrconsts.ifsvk_insert" msgid "Insert" -msgstr "Insert" +msgstr "Vložiť" #: lclstrconsts.ifsvk_junja msgid "Junja" @@ -153,37 +147,37 @@ #: lclstrconsts.ifsvk_left msgctxt "lclstrconsts.ifsvk_left" msgid "Left" -msgstr "" +msgstr "Vľavo" #: lclstrconsts.ifsvk_lwin msgid "left windows key" -msgstr "ľavý Win kláves" +msgstr "ľavá Win klávesa" #: lclstrconsts.ifsvk_mbutton msgid "Mouse Button Middle" -msgstr "Stredné tlačítko·myši" +msgstr "Stredné tlačítko myši" #: lclstrconsts.ifsvk_menu msgctxt "lclstrconsts.ifsvk_menu" msgid "Menu" -msgstr "Menu" +msgstr "Ponuka" #: lclstrconsts.ifsvk_meta msgid "Meta" -msgstr "" +msgstr "Meta" #: lclstrconsts.ifsvk_modechange msgid "Mode Change" -msgstr "" +msgstr "Zmena režímu" #: lclstrconsts.ifsvk_next msgctxt "lclstrconsts.ifsvk_next" msgid "Next" -msgstr "Ďalej" +msgstr "Ďalší" #: lclstrconsts.ifsvk_nonconvert msgid "Nonconvert" -msgstr "" +msgstr "Neskonvertované" #: lclstrconsts.ifsvk_numlock msgid "Numlock" @@ -195,7 +189,7 @@ #: lclstrconsts.ifsvk_pause msgid "Pause key" -msgstr "Kláves Pause" +msgstr "Klávesa Pauza" #: lclstrconsts.ifsvk_print msgid "Print" @@ -204,28 +198,28 @@ #: lclstrconsts.ifsvk_prior msgctxt "lclstrconsts.ifsvk_prior" msgid "Prior" -msgstr "Pred" +msgstr "Predošlí" #: lclstrconsts.ifsvk_rbutton msgid "Mouse Button Right" -msgstr "Pravé tlačítko·myši" +msgstr "Pravé tlačítko myši" #: lclstrconsts.ifsvk_return msgid "Return" -msgstr "" +msgstr "Vrátiť sa" #: lclstrconsts.ifsvk_right msgctxt "lclstrconsts.ifsvk_right" msgid "Right" -msgstr "" +msgstr "Vpravo" #: lclstrconsts.ifsvk_rwin msgid "right windows key" -msgstr "pravý Win kláves" +msgstr "pravá Win klávesa" #: lclstrconsts.ifsvk_scroll msgid "Scroll" -msgstr "" +msgstr "Rolovať" #: lclstrconsts.ifsvk_select msgid "Select" @@ -245,7 +239,7 @@ #: lclstrconsts.ifsvk_super msgid "Super" -msgstr "" +msgstr "Super" #: lclstrconsts.ifsvk_tab msgctxt "lclstrconsts.ifsvk_tab" @@ -254,12 +248,12 @@ #: lclstrconsts.ifsvk_unknown msgid "Unknown" -msgstr "Neznámy" +msgstr "Neznáme" #: lclstrconsts.ifsvk_up msgctxt "lclstrconsts.ifsvk_up" msgid "Up" -msgstr "" +msgstr "Hore" #: lclstrconsts.lislclresourcesnotfound msgctxt "lclstrconsts.lislclresourcesnotfound" @@ -268,25 +262,23 @@ #: lclstrconsts.rs3ddkshadowcolorcaption msgid "3D Dark Shadow" -msgstr "" +msgstr "3D tmavo tieňová" #: lclstrconsts.rs3dlightcolorcaption msgid "3D Light" -msgstr "" +msgstr "3D svetlá" #: lclstrconsts.rsacontrolcannothaveitselfasparent -#, fuzzy -#| msgid "A control can't have itself as parent" msgid "A control can't have itself as a parent" -msgstr "Prvok nemôže mať sám seba za rodiča" +msgstr "Ovládací prvok nemôže mať sám seba za rodiča" #: lclstrconsts.rsactivebordercolorcaption msgid "Active Border" -msgstr "" +msgstr "Aktívny okraj" #: lclstrconsts.rsactivecaptioncolorcaption msgid "Active Caption" -msgstr "" +msgstr "Aktívny názov" #: lclstrconsts.rsallfiles msgid "All files (%s)|%s|%s" @@ -294,15 +286,15 @@ #: lclstrconsts.rsappworkspacecolorcaption msgid "Application Workspace" -msgstr "" +msgstr "Pracovné prostredie aplikácie" #: lclstrconsts.rsaquacolorcaption msgid "Aqua" -msgstr "" +msgstr "Vodná" #: lclstrconsts.rsbackgroundcolorcaption msgid "Desktop" -msgstr "" +msgstr "Pracovná plocha" #: lclstrconsts.rsbackward msgid "Backward" @@ -314,7 +306,7 @@ #: lclstrconsts.rsblackcolorcaption msgid "Black" -msgstr "" +msgstr "Čierna" #: lclstrconsts.rsblank msgid "Blank" @@ -322,23 +314,23 @@ #: lclstrconsts.rsbluecolorcaption msgid "Blue" -msgstr "" +msgstr "Modrá" #: lclstrconsts.rsbtnfacecolorcaption msgid "Button Face" -msgstr "" +msgstr "Povrch tlačítka" #: lclstrconsts.rsbtnhighlightcolorcaption msgid "Button Highlight" -msgstr "" +msgstr "Zvýraznenie tlačítka" #: lclstrconsts.rsbtnshadowcolorcaption msgid "Button Shadow" -msgstr "" +msgstr "Tieň tlačítka" #: lclstrconsts.rsbtntextcolorcaption msgid "Button Text" -msgstr "" +msgstr "Text tlačítka" #: lclstrconsts.rscalculator msgid "Calculator" @@ -359,31 +351,31 @@ #: lclstrconsts.rscaptiontextcolorcaption msgid "Caption Text" -msgstr "" +msgstr "Text názvu" #: lclstrconsts.rscasesensitive msgid "Case sensitive" -msgstr "Citlivé na veľkosť" +msgstr "Rozlišovať veľké a malé písmo" #: lclstrconsts.rscontrolclasscantcontainchildclass msgid "Control of class '%s' can't have control of class '%s' as a child" -msgstr "" +msgstr "Prvok triedy '%s' nemôže mať prvok triedy '%s' ako dieťa" #: lclstrconsts.rscontrolhasnoparentwindow msgid "Control '%s' has no parent window" -msgstr "" +msgstr "Prvok '%s' nemá rodičovské okno" #: lclstrconsts.rscontrolisnotaparent msgid "'%s' is not a parent of '%s'" -msgstr "" +msgstr "\"%s\" nie je predchodcom \"%s\"" #: lclstrconsts.rscreamcolorcaption msgid "Cream" -msgstr "" +msgstr "Krémová" #: lclstrconsts.rscreatinggdbcatchableerror msgid "Creating gdb catchable error:" -msgstr "" +msgstr "Vytváram chytateľnú chybu gdb:" #: lclstrconsts.rscursor msgid "Cursor" @@ -391,11 +383,11 @@ #: lclstrconsts.rscustomcolorcaption msgid "Custom ..." -msgstr "Vlastné ..." +msgstr "Vlastná ..." #: lclstrconsts.rsdefaultcolorcaption msgid "Default" -msgstr "" +msgstr "Predvolené" #: lclstrconsts.rsdefaultfileinfovalue msgid "permissions user group size date time" @@ -408,11 +400,11 @@ #: lclstrconsts.rsdeleterecordhint msgctxt "lclstrconsts.rsdeleterecordhint" msgid "Delete" -msgstr "Delete" +msgstr "Zmazať" #: lclstrconsts.rsdirection msgid "Direction" -msgstr "Smer" +msgstr "Zložka" #: lclstrconsts.rsdirectory msgid "&Directory" @@ -422,6 +414,14 @@ msgid "Docking" msgstr "Dokovanie" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "Kopírovať" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "Prilepiť" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Zdvojený formát ikony." @@ -432,7 +432,7 @@ #: lclstrconsts.rsentirescope msgid "Search entire file" -msgstr "" +msgstr "Hľadať celý súbor" #: lclstrconsts.rserror msgctxt "lclstrconsts.rserror" @@ -481,7 +481,7 @@ #: lclstrconsts.rsfdfilereadonly msgid "The file \"%s\" is not writable." -msgstr "Súbor \"%s\" nie·je·zapisovateľný." +msgstr "Súbor \"%s\" nie je zapisovateľný." #: lclstrconsts.rsfdfilereadonlytitle msgid "File is not writable" @@ -517,12 +517,12 @@ #: lclstrconsts.rsfileinformation msgid "File information" -msgstr "Súborové informácie" +msgstr "Informácie o súbore" #: lclstrconsts.rsfilter msgctxt "lclstrconsts.rsfilter" msgid "(filter)" -msgstr "" +msgstr "(filter)" #: lclstrconsts.rsfind msgid "Find" @@ -537,24 +537,20 @@ msgstr "Prvý" #: lclstrconsts.rsfixedcolstoobig -#, fuzzy -#| msgid "FixedCols can't be >= ColCount" msgid "FixedCols can't be > ColCount" msgstr "FixedCols nemôže byť >= ColCount" #: lclstrconsts.rsfixedrowstoobig -#, fuzzy -#| msgid "FixedRows can't be >= RowCount" msgid "FixedRows can't be > RowCount" msgstr "FixedRows nemôže byť >= RowCount" #: lclstrconsts.rsformcolorcaption msgid "Form" -msgstr "" +msgstr "Formulár" #: lclstrconsts.rsformresourcesnotfoundforresourcelessformscreatenew msgid "Form resource %s not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource." -msgstr "" +msgstr "Zdroj formuláru %s nenájdený. Pre formuláre bez zdroja musí byť použitý konštruktor CreateNew. Pozrite sa na globálnu premennú RequireDerivedFormResource." #: lclstrconsts.rsformstreamingerror msgid "Form streaming \"%s\" error: %s" @@ -562,63 +558,63 @@ #: lclstrconsts.rsforward msgid "Forward" -msgstr "" +msgstr "Vpred" #: lclstrconsts.rsfuchsiacolorcaption msgid "Fuchsia" -msgstr "" +msgstr "Fuchsia" #: lclstrconsts.rsgdkoptiondebug msgid "--gdk-debug flags Turn on specific GDK trace/debug messages." -msgstr "" +msgstr "--gdk-debug flags Zapnúť špecifické GDK stopovanie/sledovacie správy GDK." #: lclstrconsts.rsgdkoptionnodebug msgid "--gdk-no-debug flags Turn off specific GDK trace/debug messages." -msgstr "" +msgstr "--gdk-no-debug flags Vypnúť špecifické GDK stopovanie/sledovacie správy GDK." #: lclstrconsts.rsgif msgid "Graphics Interchange Format" -msgstr "" +msgstr "Graphics Interchange Format" #: lclstrconsts.rsgoptionfatalwarnings msgid "--g-fatal-warnings Warnings and errors generated by Gtk+/GDK will halt the application." -msgstr "" +msgstr "--g-fatal-warnings Varovania a chyby generované Gtk+/GDK ukončí aplikáciu." #: lclstrconsts.rsgradientactivecaptioncolorcaption msgid "Gradient Active Caption" -msgstr "" +msgstr "Gradient aktívneho názvu" #: lclstrconsts.rsgradientinactivecaptioncolorcaption msgid "Gradient Inactive Caption" -msgstr "" +msgstr "Gradient neaktívneho názvu" #: lclstrconsts.rsgraphic msgid "Graphic" -msgstr "" +msgstr "Grafika" #: lclstrconsts.rsgraycolorcaption msgid "Gray" -msgstr "" +msgstr "Sivá" #: lclstrconsts.rsgraytextcolorcaption msgid "Gray Text" -msgstr "" +msgstr "Sivý text" #: lclstrconsts.rsgreencolorcaption msgid "Green" -msgstr "" +msgstr "Zelená" #: lclstrconsts.rsgridfiledoesnotexist msgid "Grid file doesn't exist" -msgstr "" +msgstr "Mriežkový súbor neexistuje" #: lclstrconsts.rsgridhasnocols msgid "Cannot insert rows into a grid when it has no columns" -msgstr "" +msgstr "Nie je možné vložiť riadky do mriežky, keď nemá žiadne stĺpce" #: lclstrconsts.rsgridhasnorows msgid "Cannot insert columns into a grid when it has no rows" -msgstr "" +msgstr "Nie je možné vložiť stĺpce do mriežky, keď nemá žiadne riadky" #: lclstrconsts.rsgridindexoutofrange msgid "Grid index out of range." @@ -638,55 +634,51 @@ #: lclstrconsts.rsgtkoptionclass msgid "--class classname Following Xt conventions, the class of a program is the program name with the initial character capitalized. For example, the classname for gimp is \"Gimp\". If --class is specified, the class of the program will be set to \"classname\"." -msgstr "" +msgstr "--class classname Nasledujúce Xt konvencie, trieda programu je názov programu s prvým veľkým písmenom. Napríklad, classname pre gimp je \"Gimp\". Pokiaľ špecifikujeme --class, trieda programu bude \"classname\"." #: lclstrconsts.rsgtkoptiondebug msgid "--gtk-debug flags Turn on specific Gtk+ trace/debug messages." -msgstr "" +msgstr "--gdk-debug flags Zapnúť špecifické GDK stopovanie/sledovacie správy GDK." #: lclstrconsts.rsgtkoptiondisplay msgid "--display h:s:d Connect to the specified X server, where \"h\" is the hostname, \"s\" is the server number (usually 0), and \"d\" is the display number (typically omitted). If --display is not specified, the DISPLAY environment variable is used." -msgstr "" +msgstr "--display h:s:d Pripojiť k zadanému X serveru, kde \"h\" je meno hosťa, \"s\" je číslo serveru (väčšinou 0), a \"d\" je číslo displeja (väčšinou sa nezadáva). Pokiaľ nezadáme --display , použije sa obsah premennej DISPLAY z prostredia." #: lclstrconsts.rsgtkoptionmodule msgid "--gtk-module module Load the specified module at startup." -msgstr "" +msgstr "--gtk-module module .Načítať zadaný modul pri štarte" #: lclstrconsts.rsgtkoptionname msgid "--name programe Set program name to \"progname\". If not specified, program name will be set to ParamStrUTF8(0)." -msgstr "" +msgstr "--name programe Nastavit programové meno na \"progname\". Pokiaľ nie je zadané, použije sa ParamStrUTF8(0)." #: lclstrconsts.rsgtkoptionnodebug msgid "--gtk-no-debug flags Turn off specific Gtk+ trace/debug messages." -msgstr "" +msgstr "--gdk-no-debug flags Vypnúť špecifické GDK stopovanie/sledovacie správy GDK." #: lclstrconsts.rsgtkoptionnotransient msgid "--lcl-no-transient Do not set transient order for modal forms" -msgstr "" +msgstr "--lcl-no-transient Nenastavovať prechodné poradie pre modálne formuláre" #: lclstrconsts.rsgtkoptionnoxshm msgid "--no-xshm Disable use of the X Shared Memory Extension." -msgstr "" +msgstr "--no-xshm Zakázať použitie rozšírenia X Shared Memory." #: lclstrconsts.rsgtkoptionsync msgid "--sync Call XSynchronize (display, True) after the Xserver connection has been established. This makes debugging X protocol errors easier, because X request buffering will be disabled and X errors will be received immediately after the protocol request that generated the error has been processed by the X server." -msgstr "" +msgstr "--sync Volať XSynchronize (displej, True) po stabilizácií pripojenia k X Serveru. Toto robíá ladenie chyb X protokolu jednodušie, protože cacheování X žiadostí bude vypnutéo a chyby X budú doručené okamžite po žiadosti, ktorá vyvolala chybu." #: lclstrconsts.rshelpalreadyregistered msgid "%s: Already registered" msgstr "%s: Už je registrovaný" #: lclstrconsts.rshelpcontextnotfound -#, fuzzy -#| msgid "Help Context not found" msgid "A help database was found for this topic, but this topic was not found" -msgstr "Kontextová pomoc nenájdená" +msgstr "Databáza pre téma bola nájdená, ale téma sa nenašlo" #: lclstrconsts.rshelpdatabasenotfound -#, fuzzy -#| msgid "Help Database not found" msgid "There is no help database installed for this topic" -msgstr "Databáza·pomoci nenájdená" +msgstr "Databáza pomoci nenájdená" #: lclstrconsts.rshelperror msgid "Help Error" @@ -697,64 +689,48 @@ msgstr "Kontextová pomoc %s nenájdená." #: lclstrconsts.rshelphelpcontextnotfoundindatabase -#, fuzzy,badformat -#| msgid "Help context %s not found in Database %s%s%s." msgid "Help context %s not found in Database \"%s\"." -msgstr "Kontextová pomoc %s nenájdená v databáze %s%s%s." +msgstr "Kontextová pomoc %s nenájdená v databáze \"%s\"." #: lclstrconsts.rshelphelpdatabasedidnotfoundaviewerforahelppageoftype -#, fuzzy,badformat -#| msgid "Help Database \"%s\" did not found a viewer for a help page of type %s" msgid "Help Database \"%s\" did not find a viewer for a help page of type %s" -msgstr "Databáza pomoci %s%s%s nenašla zobrazovač pre stránku pomocníka typu %s" +msgstr "Databáza pomoci \"%s\" nenašla zobrazovač pre stránku pomocníka typu %s" #: lclstrconsts.rshelphelpdatabasenotfound -#, fuzzy,badformat -#| msgid "Help Database %s%s%s not found" msgid "Help Database \"%s\" not found" -msgstr "Databáza pomoci %s%s%s nenájdená" +msgstr "Databáza pomoci \"%s\" nenájdená" #: lclstrconsts.rshelphelpfordirectivenotfound msgid "Help for directive \"%s\" not found." -msgstr "" +msgstr "Nápoveda pre direktivu \"%s\" nenájdená" #: lclstrconsts.rshelphelpfordirectivenotfoundindatabase msgid "Help for directive \"%s\" not found in Database \"%s\"." -msgstr "" +msgstr "Nápoveda pre direktivu \"%s\" nenájdená v databázi \"%s\"." #: lclstrconsts.rshelphelpkeywordnotfound -#, fuzzy,badformat -#| msgid "Help keyword %s%s%s not found." msgid "Help keyword \"%s\" not found." -msgstr "Kľúčové slovo pomoci %s%s%s nenájdené." +msgstr "Kľúčové slovo pomoci \"%s\" nenájdené." #: lclstrconsts.rshelphelpkeywordnotfoundindatabase -#, fuzzy,badformat -#| msgid "Help keyword %s%s%s not found in Database %s%s%s." msgid "Help keyword \"%s\" not found in Database \"%s\"." -msgstr "Kľúčové·slovo·pomoci·%s%s%s nenájdené v databáze %s%s%s." +msgstr "Kľúčové slovo pomoci \"%s\" nenájdené v databáze \"%s\"." #: lclstrconsts.rshelphelpnodehasnohelpdatabase -#, fuzzy,badformat -#| msgid "Help node %s%s%s has no Help Database" msgid "Help node \"%s\" has no Help Database" -msgstr "Uzol pomocníka %s%s%s nemá databázu pomocníka" +msgstr "Uzol pomocníka \"%s\" nemá databázu pomocníka" #: lclstrconsts.rshelpnohelpfoundforsource msgid "No help found for line %d, column %d of %s." msgstr "Nenájdený pomocník pre riadok %d, stĺpec %d %s." #: lclstrconsts.rshelpnohelpnodesavailable -#, fuzzy -#| msgid "No help nodes available" msgid "No help entries available for this topic" -msgstr "Nie sú dostupné žiadne uzly pomoci" +msgstr "Nie sú dostupné žiadne uzly pomoci pre toto téma" #: lclstrconsts.rshelpnotfound -#, fuzzy -#| msgid "Help not found" msgid "No help found for this topic" -msgstr "Pomoc nenájdená" +msgstr "Pre toto téma nebola nájdená pomoc" #: lclstrconsts.rshelpnotregistered msgid "%s: Not registered" @@ -765,36 +741,32 @@ msgstr "Chyba selektora pomoci" #: lclstrconsts.rshelpthereisnoviewerforhelptype -#, fuzzy,badformat -#| msgid "There is no viewer for help type %s%s%s" msgid "There is no viewer for help type \"%s\"" -msgstr "Nie je zobrazovač pre pomoc typu %s%s%s" +msgstr "Nie je zobrazovač pre pomoc typu \"%s\"" #: lclstrconsts.rshelpviewererror msgid "Help Viewer Error" msgstr "Chyba zobrazovača pomoci" #: lclstrconsts.rshelpviewernotfound -#, fuzzy -#| msgid "Help Viewer not found" msgid "No viewer was found for this type of help content" -msgstr "Zobrazovač pomoci nenájdený" +msgstr "Nenašiel sa zobrazovač pre tento typ obsahu pomoci" #: lclstrconsts.rshighlightcolorcaption msgid "Highlight" -msgstr "" +msgstr "Zvýraznenie" #: lclstrconsts.rshighlighttextcolorcaption msgid "Highlight Text" -msgstr "" +msgstr "Zvýraznený text" #: lclstrconsts.rshotlightcolorcaption msgid "Hot Light" -msgstr "" +msgstr "Hot Light" #: lclstrconsts.rsicns msgid "Mac OS X Icon" -msgstr "" +msgstr "Mac OS X Iikony" #: lclstrconsts.rsicon msgid "Icon" @@ -826,17 +798,17 @@ #: lclstrconsts.rsinactivebordercolorcaption msgid "Inactive Border" -msgstr "" +msgstr "Neaktívny okraj" #: lclstrconsts.rsinactivecaptioncolorcaption msgctxt "lclstrconsts.rsinactivecaptioncolorcaption" msgid "Inactive Caption" -msgstr "" +msgstr "Neaktívny názov" #: lclstrconsts.rsinactivecaptiontext msgctxt "lclstrconsts.rsinactivecaptiontext" msgid "Inactive Caption" -msgstr "" +msgstr "Neaktívny názov" #: lclstrconsts.rsindexoutofbounds msgid "%s Index %d out of bounds 0 .. %d" @@ -844,20 +816,20 @@ #: lclstrconsts.rsindexoutofrange msgid "Index Out of range Cell[Col=%d Row=%d]" -msgstr "Index mimo rozsahu Bunka[Col=%d Row=%d]" +msgstr "Index mimo rozsahu Bunka[Stl=%d Ria=%d]" #: lclstrconsts.rsinfobkcolorcaption msgid "Info Background" -msgstr "" +msgstr "Informačné pozadie" #: lclstrconsts.rsinfotextcolorcaption msgid "Info Text" -msgstr "" +msgstr "Informačný text" #: lclstrconsts.rsinsertrecordhint msgctxt "lclstrconsts.rsinsertrecordhint" msgid "Insert" -msgstr "Insert" +msgstr "Vložiť" #: lclstrconsts.rsinvaliddate msgid "Invalid Date : %s" @@ -885,7 +857,7 @@ #: lclstrconsts.rsjpeg msgid "Joint Picture Expert Group" -msgstr "" +msgstr "Joint Picture Expert Group" #: lclstrconsts.rslastrecordhint msgid "Last" @@ -893,7 +865,7 @@ #: lclstrconsts.rslimecolorcaption msgid "Lime" -msgstr "" +msgstr "Citrusová" #: lclstrconsts.rslistindexexceedsbounds msgid "List index exceeds bounds (%d)" @@ -905,7 +877,7 @@ #: lclstrconsts.rsmarooncolorcaption msgid "Maroon" -msgstr "" +msgstr "Gaštanová" #: lclstrconsts.rsmbabort msgid "Abort" @@ -946,7 +918,7 @@ #: lclstrconsts.rsmbopen msgid "&Open" -msgstr "" +msgstr "&Otvoriť" #: lclstrconsts.rsmbretry msgid "&Retry" @@ -954,11 +926,11 @@ #: lclstrconsts.rsmbsave msgid "&Save" -msgstr "" +msgstr "&Uložiť" #: lclstrconsts.rsmbunlock msgid "&Unlock" -msgstr "" +msgstr "&Odomknúť" #: lclstrconsts.rsmbyes msgid "&Yes" @@ -970,24 +942,24 @@ #: lclstrconsts.rsmedgraycolorcaption msgid "Medium Gray" -msgstr "" +msgstr "Stredne sivá" #: lclstrconsts.rsmenubarcolorcaption msgid "Menu Bar" -msgstr "" +msgstr "Hlavná ponuka" #: lclstrconsts.rsmenucolorcaption msgctxt "lclstrconsts.rsmenucolorcaption" msgid "Menu" -msgstr "Menu" +msgstr "Ponuka" #: lclstrconsts.rsmenuhighlightcolorcaption msgid "Menu Highlight" -msgstr "" +msgstr "Zvýraznenie ponuky" #: lclstrconsts.rsmenutextcolorcaption msgid "Menu Text" -msgstr "" +msgstr "Text ponuky" #: lclstrconsts.rsmodified msgid " modified " @@ -995,11 +967,11 @@ #: lclstrconsts.rsmoneygreencolorcaption msgid "Money Green" -msgstr "" +msgstr "Peňažne zelená" #: lclstrconsts.rsmtauthentication msgid "Authentication" -msgstr "" +msgstr "Autentifikácia" #: lclstrconsts.rsmtconfirmation msgid "Confirmation" @@ -1024,7 +996,7 @@ #: lclstrconsts.rsnavycolorcaption msgid "Navy" -msgstr "" +msgstr "Námornícka modrá" #: lclstrconsts.rsnextrecordhint msgctxt "lclstrconsts.rsnextrecordhint" @@ -1033,7 +1005,7 @@ #: lclstrconsts.rsnonecolorcaption msgid "None" -msgstr "" +msgstr "Žiadne" #: lclstrconsts.rsnotavalidgridfile msgid "Not a valid grid file" @@ -1045,7 +1017,7 @@ #: lclstrconsts.rsolivecolorcaption msgid "Olive" -msgstr "" +msgstr "Olivová" #: lclstrconsts.rspickdate msgid "Select a date" @@ -1057,11 +1029,11 @@ #: lclstrconsts.rsportablebitmap msgid "Portable BitMap" -msgstr "Portable BitMap" +msgstr "Prenosná BitMap" #: lclstrconsts.rsportablegraymap msgid "Portable GrayMap" -msgstr "Portable GrayMap" +msgstr "Prenosná GrayMap" #: lclstrconsts.rsportablenetworkgraphic msgid "Portable Network Graphic" @@ -1069,17 +1041,15 @@ #: lclstrconsts.rsportablepixmap msgid "Portable PixMap" -msgstr "Portable PixMap" +msgstr "Prenosná PixMap" #: lclstrconsts.rspostrecordhint msgid "Post" -msgstr "za" +msgstr "Odoslať (pošta)" #: lclstrconsts.rspressoktoignoreandriskdatacorruptionpresscanceltok -#, fuzzy -#| msgid "%s%sPress Ok to ignore and risk data corruption.%sPress Cancel to kill the program." msgid "%s%sPress OK to ignore and risk data corruption.%sPress Cancel to kill the program." -msgstr "%s%sStlačte OK pre ignorovanie a risk porušenia dát.%sStlačte Zrušiť pre zabitie programu." +msgstr "%s%sStlačte OK pre ignorovanie a risk porušenia dát.%sStlačte Zrušiť pre ukončenie programu." #: lclstrconsts.rspriorrecordhint msgctxt "lclstrconsts.rspriorrecordhint" @@ -1088,7 +1058,7 @@ #: lclstrconsts.rspromptonreplace msgid "Prompt on replace" -msgstr "" +msgstr "Opýtať sa pred nahradením" #: lclstrconsts.rspropertydoesnotexist msgid "Property %s does not exist" @@ -1096,95 +1066,95 @@ #: lclstrconsts.rspurplecolorcaption msgid "Purple" -msgstr "" +msgstr "Fialová" #: lclstrconsts.rsqtoptiondograb msgid "-dograb (only under X11), running under a debugger can cause an implicit -nograb, use -dograb to override. Need QT_DEBUG." -msgstr "" +msgstr "-dograb (iba pod X11), beh v debuggeru môže vyústiť v implicitní --nograb, použite -dograb k prepisu. Potrebujete QT_DEBUG." #: lclstrconsts.rsqtoptiongraphicsstyle msgid "-graphicssystem param, sets the backend to be used for on-screen widgets and QPixmaps. Available options are native, raster and opengl. OpenGL is still unstable." -msgstr "" +msgstr "-graphicssystem param, nastaví backend k použitiu pre widgety a QPixmaps na obrazovke. Dostupné voľby sú natíve, raster a opengl. OpenGL je stále nestabilný." #: lclstrconsts.rsqtoptionnograb msgid "-nograb, tells Qt that it must never grab the mouse or the keyboard. Need QT_DEBUG." -msgstr "" +msgstr "-nograb hovorí Qt že nemá nikdy zabierať klávesnicu a myš. Potrebujete QT_DEBUG." #: lclstrconsts.rsqtoptionreverse msgid "-reverse, sets the application's layout direction to Qt::RightToLeft." -msgstr "" +msgstr "-reverse, nastavuje smer rozloženia aplikácie na Qt::RightToLeft." #: lclstrconsts.rsqtoptionsession msgid "-session session, restores the application from an earlier session." -msgstr "" +msgstr "-session session - obnovuje aplikáciu z skoršieho posedenia" #: lclstrconsts.rsqtoptionstyle msgid "-style style or -style=style, sets the application GUI style. Possible values are motif, windows, and platinum. If you compiled Qt with additional styles or have additional styles as plugins these will be available to the -style command line option. NOTE: Not all styles are available on all platforms. If style param does not exist Qt will start an application with default common style (windows)." -msgstr "" +msgstr "-style style alebo -style=style - nastavuje GUI štýl aplikácie. Možné hodnoty sú motif, windows a platinum. Pokiaľ ste kompilovali Qt s pridanými štýlmi alebo máte pridané štýly ako pluginy, potom budú tiež dostupné ako voľba pre tento parameter. POZOR: Nie všetky štýly sú dostupné na všetkývhh platformách - pokiaľ štýl neexistuje, Qt spustí aplikáciu s vlastným východzím štýlom (windows)." #: lclstrconsts.rsqtoptionstylesheet msgid "-stylesheet stylesheet or -stylesheet=stylesheet, sets the application Style Sheet. The value must be a path to a file that contains the Style Sheet. Note: Relative URLs in the Style Sheet file are relative to the Style Sheet file's path." -msgstr "" +msgstr "-stylesheet stylesheet alebo -stylesheet=stylesheet - nastavuje štýl aplikácie. Hodnota musí byť cesta k súboru obsahujúcemu Style Sheet. POZOR: Relatívne cesty v URL v súbore sú relatívne voči ceste k súboru." #: lclstrconsts.rsqtoptionsync msgid "-sync (only under X11), switches to synchronous mode for debugging." -msgstr "" +msgstr "-sync (iba pod X11) - prepína do synchronného režimu pre ladenie." #: lclstrconsts.rsqtoptionwidgetcount msgid "-widgetcount, prints debug message at the end about number of widgets left undestroyed and maximum number of widgets existed at the same time." -msgstr "" +msgstr "-widgetcount - vypíše na konci ladiacej správu o počte nezrušených widgetů a o maximálnom počte widgetů existujúcich súčasne." #: lclstrconsts.rsqtoptionx11bgcolor msgid "-bg or -background color, sets the default background color and an application palette (light and dark shades are calculated)." -msgstr "" +msgstr "-bg alebo -background color - nastavuje východziu farbu pozadia a paletu aplikácie (svetlé a tmavé tiene sú dopočítané)" #: lclstrconsts.rsqtoptionx11btncolor msgid "-btn or -button color, sets the default button color." -msgstr "" +msgstr "-btn nebo -button color - nastavuje východziu farbu tlačítok." #: lclstrconsts.rsqtoptionx11cmap msgid "-cmap, causes the application to install a private color map on an 8-bit display." -msgstr "" +msgstr "-cmap - spôsobuje, že si aplikácia nainštaluje súkromú causemapu farieb na 8-mi bitovom displeji." #: lclstrconsts.rsqtoptionx11display msgid "-display display, sets the X display (default is $DISPLAY)." -msgstr "" +msgstr "-display display - nastavuje X display (východzí je $DISPLAY)." #: lclstrconsts.rsqtoptionx11fgcolor msgid "-fg or -foreground color, sets the default foreground color." -msgstr "" +msgstr "-fg nebo -foreground color - nastavuje východziu farbu popredia." #: lclstrconsts.rsqtoptionx11font msgid "-fn or -font font, defines the application font. The font should be specified using an X logical font description." -msgstr "" +msgstr "-fn alebo -font font - definuje písmo aplikácie. Písmo by malo byť špecifikované X logickým popisom písma." #: lclstrconsts.rsqtoptionx11geometry msgid "-geometry geometry, sets the client geometry of the first window that is shown." -msgstr "" +msgstr "-geometry geometry - nastavuje klientelskú geometriu prvého zobrazeného okna." #: lclstrconsts.rsqtoptionx11im msgid "-im, sets the input method server (equivalent to setting the XMODIFIERS environment variable)." -msgstr "" +msgstr "-im - nastavuje server metódy vstupu (ekvivalent nastavenia premenného prostredia XMODIFIERS)." #: lclstrconsts.rsqtoptionx11inputstyle msgid "-inputstyle, defines how the input is inserted into the given widget, e.g. onTheSpot makes the input appear directly in the widget, while overTheSpot makes the input appear in a box floating over the widget and is not inserted until the editing is done." -msgstr "" +msgstr "-inputstyle, definuje, ako je vložená vstup do daného widgetu, napr. onTheSpot sa objaví vstup priamo vo widgete, zatiaľ čo v overTheSpot sa zobrazí vstup v poly nad widgetom a nie je vložený pokiaľ nie je editácia hotová." #: lclstrconsts.rsqtoptionx11name msgid "-name name, sets the application name." -msgstr "" +msgstr "-name name, nastavuje názov aplikácie." #: lclstrconsts.rsqtoptionx11ncols msgid "-ncols count, limits the number of colors allocated in the color cube on an 8-bit display, if the application is using the QApplication::ManyColor color specification. If count is 216 then a 6x6x6 color cube is used (i.e. 6 levels of red, 6 of green, and 6 of blue); for other values, a cube approximately proportional to a 2x3x1 cube is used." -msgstr "" +msgstr "-ncols count - obmedzuje počet farieb alokovaných vo farebnej kocke na 8-mi bitovom displeji pokiaľ aplikácia využíva špecifikáciu QApplication::ManyColor . Pokiaľ je počet farieb 216, potom je použitá kocka 6x6x6 farieb (6 stupňov červenej, 6 zelenej a 6 modrej); pre ostatné prípady je použitá kocka zhruba v pomere 2x3x1." #: lclstrconsts.rsqtoptionx11title msgid "-title title, sets the application title." -msgstr "" +msgstr "-title titul, nastavte titulok aplikácie." #: lclstrconsts.rsqtoptionx11visual msgid "-visual TrueColor, forces the application to use a TrueColor visual on an 8-bit display." -msgstr "" +msgstr "-visual TrueColor - vynútí použiť vzhľad TrueColor na 8-mi bitovom displeji." #: lclstrconsts.rsrasterimageendupdate msgid "Endupdate while no update in progress" @@ -1200,7 +1170,7 @@ #: lclstrconsts.rsredcolorcaption msgid "Red" -msgstr "" +msgstr "Červená" #: lclstrconsts.rsrefreshrecordshint msgid "Refresh" @@ -1221,7 +1191,7 @@ #: lclstrconsts.rsscrollbarcolorcaption msgid "ScrollBar" -msgstr "" +msgstr "ScrollBar" #: lclstrconsts.rsscrollbaroutofrange msgid "ScrollBar property out of range" @@ -1237,7 +1207,7 @@ #: lclstrconsts.rssilvercolorcaption msgid "Silver" -msgstr "" +msgstr "Strieborná" #: lclstrconsts.rssize msgid " size " @@ -1245,15 +1215,15 @@ #: lclstrconsts.rsskybluecolorcaption msgid "Sky Blue" -msgstr "" +msgstr "Nebesky modrá" #: lclstrconsts.rstcustomtabcontrolaccessibilitydescription msgid "A control with tabs" -msgstr "" +msgstr "Ovládací prvok s panelmi" #: lclstrconsts.rstealcolorcaption msgid "Teal" -msgstr "" +msgstr "Hlboká zelenomodrá" #: lclstrconsts.rstext msgid "Text" @@ -1261,26 +1231,26 @@ #: lclstrconsts.rstiff msgid "Tagged Image File Format" -msgstr "" +msgstr "Označkovať obrazový formát súboru" #: lclstrconsts.rstpanelaccessibilitydescription msgctxt "lclstrconsts.rstpanelaccessibilitydescription" msgid "Panel" -msgstr "" +msgstr "Panel" #: lclstrconsts.rstsplitteraccessibilitydescription msgctxt "lclstrconsts.rstsplitteraccessibilitydescription" msgid "A grip to control how much size to give two parts of an area" -msgstr "" +msgstr "Rukoväť k ovládania miesta, ktoré zaberajú dva časti oblasti" #: lclstrconsts.rsttreeviewaccessibilitydescription msgctxt "lclstrconsts.rsttreeviewaccessibilitydescription" msgid "A tree of items" -msgstr "" +msgstr "Strom položiek" #: lclstrconsts.rsunabletoloaddefaultfont msgid "Unable to load default font" -msgstr "Nemožno načítať predvolený font" +msgstr "Nemožno načítať predvolené písmo" #: lclstrconsts.rsunknownerrorpleasereportthisbug msgid "Unknown Error, please report this bug" @@ -1292,7 +1262,7 @@ #: lclstrconsts.rsunknownpictureformat msgid "Unknown picture format" -msgstr "" +msgstr "Neznámy obrázkový formát" #: lclstrconsts.rsunsupportedbitmapformat msgid "Unsupported bitmap format." @@ -1320,11 +1290,11 @@ #: lclstrconsts.rswarningunremovedpaintmessages msgid " WARNING: There are %s unremoved LM_PAINT/LM_GtkPAINT message links left." -msgstr " UPOZORNENIE: Ostáva %s neodstránených správ LM_PAINT/LM_GtkPAINT." +msgstr " UPOZORNENIE: Ostáva %s neodstránených odkazov správ LM_PAINT/LM_GtkPAINT." #: lclstrconsts.rswhitecolorcaption msgid "White" -msgstr "" +msgstr "Biela" #: lclstrconsts.rswholewordsonly msgid "Whole words only" @@ -1340,19 +1310,19 @@ #: lclstrconsts.rswindowcolorcaption msgid "Window" -msgstr "" +msgstr "Okno" #: lclstrconsts.rswindowframecolorcaption msgid "Window Frame" -msgstr "" +msgstr "Ramček okna" #: lclstrconsts.rswindowtextcolorcaption msgid "Window Text" -msgstr "" +msgstr "Text okna" #: lclstrconsts.rsyellowcolorcaption msgid "Yellow" -msgstr "" +msgstr "Žltá" #: lclstrconsts.scannotfocus msgid "Cannot focus a disabled or invisible window" @@ -1360,7 +1330,7 @@ #: lclstrconsts.sduplicatemenus msgid "Duplicate menus" -msgstr "Duplikované menu" +msgstr "Duplikovaná ponuka" #: lclstrconsts.sinvalidactioncreation msgid "Invalid action creation" @@ -1368,15 +1338,15 @@ #: lclstrconsts.sinvalidactionenumeration msgid "Invalid action enumeration" -msgstr "Neplatné·akcia vymenovania" +msgstr "Neplatné akcia vymenovania" #: lclstrconsts.sinvalidactionregistration msgid "Invalid action registration" -msgstr "Neplatné·akcia registrácie" +msgstr "Neplatné akcia registrácie" #: lclstrconsts.sinvalidactionunregistration msgid "Invalid action unregistration" -msgstr "Neplatné·akcia odregistrovania" +msgstr "Neplatné akcia odregistrovania" #: lclstrconsts.sinvalidcharset msgid "The char set in mask \"%s\" is not valid!" @@ -1392,7 +1362,7 @@ #: lclstrconsts.smaskeditnomatch msgid "The current text does not match the specified mask." -msgstr "" +msgstr "Súčasný text neodpovedá špecifikovanej maske" #: lclstrconsts.smenuindexerror msgid "Menu index out of range" @@ -1408,19 +1378,19 @@ #: lclstrconsts.smkcalt msgid "Alt+" -msgstr "" +msgstr "Alt+" #: lclstrconsts.smkcbksp msgid "BkSp" -msgstr "" +msgstr "BkSp" #: lclstrconsts.smkcctrl msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: lclstrconsts.smkcdel msgid "Del" -msgstr "" +msgstr "Del" #: lclstrconsts.smkcdown msgctxt "lclstrconsts.smkcdown" @@ -1434,11 +1404,11 @@ #: lclstrconsts.smkcenter msgid "Enter" -msgstr "" +msgstr "Enter" #: lclstrconsts.smkcesc msgid "Esc" -msgstr "" +msgstr "Esc" #: lclstrconsts.smkchome msgctxt "lclstrconsts.smkchome" @@ -1447,37 +1417,37 @@ #: lclstrconsts.smkcins msgid "Ins" -msgstr "" +msgstr "Ins" #: lclstrconsts.smkcleft msgctxt "lclstrconsts.smkcleft" msgid "Left" -msgstr "" +msgstr "Vľavo" #: lclstrconsts.smkcmeta msgid "Meta+" -msgstr "" +msgstr "Meta+" #: lclstrconsts.smkcpgdn msgid "PgDn" -msgstr "" +msgstr "PgDn" #: lclstrconsts.smkcpgup msgid "PgUp" -msgstr "" +msgstr "PgUp" #: lclstrconsts.smkcright msgctxt "lclstrconsts.smkcright" msgid "Right" -msgstr "" +msgstr "Vpravo" #: lclstrconsts.smkcshift msgid "Shift+" -msgstr "" +msgstr "Shift+" #: lclstrconsts.smkcspace msgid "Space" -msgstr "" +msgstr "Space" #: lclstrconsts.smkctab msgctxt "lclstrconsts.smkctab" @@ -1487,7 +1457,7 @@ #: lclstrconsts.smkcup msgctxt "lclstrconsts.smkcup" msgid "Up" -msgstr "" +msgstr "Hore" #: lclstrconsts.snomdiform msgid "No MDI form present." @@ -1499,7 +1469,7 @@ #: lclstrconsts.sparentrequired msgid "Control \"%s\" has no parent window." -msgstr "" +msgstr "Kontrola \"%s\" nemá nadradené okno." #: lclstrconsts.sparexpected msgid "Wrong token type: %s expected" @@ -1515,7 +1485,7 @@ #: lclstrconsts.sparlocinfo msgid " (at %d,%d, stream offset %d)" -msgstr "" +msgstr " (at %d,%d, stream offset %d)" #: lclstrconsts.sparunterminatedbinvalue msgid "Unterminated byte value" @@ -1535,7 +1505,7 @@ #: lclstrconsts.sshellctrlsbytes msgid "%s bytes" -msgstr "" +msgstr "%s bytov" #: lclstrconsts.sshellctrlsinvalidpath msgctxt "lclstrconsts.sshellctrlsinvalidpath" @@ -1543,6 +1513,8 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Neplatné pomenovanie cesty:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidpathrelative msgid "" @@ -1551,6 +1523,10 @@ "in relation to rootpath:\n" "\"%s\"\n" msgstr "" +"Neplatné relatívne pomenovanie cesty:\n" +"\"%s\"\n" +"v relácií s koreňovou cestou:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlsinvalidroot msgctxt "lclstrconsts.sshellctrlsinvalidroot" @@ -1558,30 +1534,34 @@ "Invalid pathname:\n" "\"%s\"\n" msgstr "" +"Neplatné pomenovanie cesty:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlskb msgid "%s kB" -msgstr "" +msgstr "%s kB" #: lclstrconsts.sshellctrlsmb msgid "%s MB" -msgstr "" +msgstr "%s MB" #: lclstrconsts.sshellctrlsname msgid "Name" -msgstr "" +msgstr "Názov" #: lclstrconsts.sshellctrlsselecteditemdoesnotexists msgid "" "The selected item does not exist on disk:\n" "\"%s\"\n" msgstr "" +"Vybraná položka neexistuje na disku:\n" +"\"%s\"\n" #: lclstrconsts.sshellctrlssize msgid "Size" -msgstr "" +msgstr "Veľkosť" #: lclstrconsts.sshellctrlstype msgid "Type" -msgstr "" +msgstr "Typ" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.tr.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.tr.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.tr.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.tr.po 2015-08-24 12:42:05.000000000 +0000 @@ -419,6 +419,14 @@ msgid "Docking" msgstr "Gömme" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "" diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.uk.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.uk.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.uk.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.uk.po 2015-08-24 12:42:05.000000000 +0000 @@ -420,6 +420,14 @@ msgid "Docking" msgstr "Стикування" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "Дублювати формат іконок." diff -Nru lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.zh_CN.po lazarus-1.6+dfsg/lcl/languages/lclstrconsts.zh_CN.po --- lazarus-1.4.4+dfsg/lcl/languages/lclstrconsts.zh_CN.po 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/languages/lclstrconsts.zh_CN.po 2015-08-24 12:42:05.000000000 +0000 @@ -422,6 +422,14 @@ msgid "Docking" msgstr "停靠" +#: lclstrconsts.rsdocopy +msgid "Copy" +msgstr "" + +#: lclstrconsts.rsdopaste +msgid "Paste" +msgstr "" + #: lclstrconsts.rsduplicateiconformat msgid "Duplicate icon format." msgstr "同样的图标格式." diff -Nru lazarus-1.4.4+dfsg/lcl/lazcanvas.pas lazarus-1.6+dfsg/lcl/lazcanvas.pas --- lazarus-1.4.4+dfsg/lcl/lazcanvas.pas 2014-08-03 22:05:40.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lazcanvas.pas 2015-11-06 18:35:28.000000000 +0000 @@ -24,7 +24,7 @@ Dont use anything from the LCL here as this unit should be kept strictly independent only LCLProc for DebugLn is allowed, but only during debuging } -unit lazcanvas; +unit LazCanvas; {$mode objfpc}{$H+} { $define lazcanvas_debug} @@ -261,30 +261,24 @@ b.bottom := b.bottom-1; if pen.style = psSolid then for r := 1 to pen.width do - begin - with b do - begin - CheckLine (left,top,left,bottom); - CheckLine (left,bottom,right,bottom); - CheckLine (right,bottom,right,top); - CheckLine (right,top,left,top); - end; + begin + CheckLine (b.left,b.top,b.left,b.bottom); + CheckLine (b.left,b.bottom,b.right,b.bottom); + CheckLine (b.right,b.bottom,b.right,b.top); + CheckLine (b.right,b.top,b.left,b.top); DecRect (b); - end + end else if pen.style <> psClear then - begin + begin if pen.style = psPattern then pattern := Pen.pattern else pattern := PenPatterns[pen.style]; - with b do - begin - CheckPLine (left,top,left,bottom); - CheckPLine (left,bottom,right,bottom); - CheckPLine (right,bottom,right,top); - CheckPLine (right,top,left,top); - end; - end; + CheckPLine (b.left,b.top,b.left,b.bottom); + CheckPLine (b.left,b.bottom,b.right,b.bottom); + CheckPLine (b.right,b.bottom,b.right,b.top); + CheckPLine (b.right,b.top,b.left,b.top); + end; end; procedure TLazCanvas.DoRectangleFill(const Bounds: TRect); @@ -303,42 +297,43 @@ Exit; end; -// if clipping then -// CheckRectClipping (ClipRect, B); - with b do - case Brush.style of - bsSolid : FillRectangleColor (self, left,top, right,bottom); - bsPattern : FillRectanglePattern (self, left,top, right,bottom, brush.pattern); - bsImage : - if assigned (brush.image) then - if RelativeBrushImage then - FillRectangleImageRel (self, left,top, right,bottom, brush.image) - else - FillRectangleImage (self, left,top, right,bottom, brush.image) + case Brush.style of + bsSolid : FillRectangleColor (self, b.left,b.top, b.right,b.bottom); + bsPattern : FillRectanglePattern (self, b.left,b.top, b.right,b.bottom, brush.pattern); + bsImage : + if assigned (brush.image) then + if RelativeBrushImage then + FillRectangleImageRel (self, b.left,b.top, b.right,b.bottom, brush.image) else - raise PixelCanvasException.Create (sErrNoImage); - bsBDiagonal : FillRectangleHashDiagonal (self, b, HashWidth); - bsFDiagonal : FillRectangleHashBackDiagonal (self, b, HashWidth); - bsCross : - begin - FillRectangleHashHorizontal (self, b, HashWidth); - FillRectangleHashVertical (self, b, HashWidth); - end; - bsDiagCross : - begin - FillRectangleHashDiagonal (self, b, HashWidth); - FillRectangleHashBackDiagonal (self, b, HashWidth); - end; - bsHorizontal : FillRectangleHashHorizontal (self, b, HashWidth); - bsVertical : FillRectangleHashVertical (self, b, HashWidth); - end; + FillRectangleImage (self, b.left,b.top, b.right,b.bottom, brush.image) + else + raise PixelCanvasException.Create (sErrNoImage); + bsBDiagonal : FillRectangleHashDiagonal (self, b, HashWidth); + bsFDiagonal : FillRectangleHashBackDiagonal (self, b, HashWidth); + bsCross : + begin + FillRectangleHashHorizontal (self, b, HashWidth); + FillRectangleHashVertical (self, b, HashWidth); + end; + bsDiagCross : + begin + FillRectangleHashDiagonal (self, b, HashWidth); + FillRectangleHashBackDiagonal (self, b, HashWidth); + end; + bsHorizontal : FillRectangleHashHorizontal (self, b, HashWidth); + bsVertical : FillRectangleHashVertical (self, b, HashWidth); + end; end; // unimplemented in FPC +// algorithm explained here: http://alienryderflex.com/polygon_fill/ procedure TLazCanvas.DoPolygonFill(const points: array of TPoint); var lBoundingBox: TRect; x, y, i: integer; + // faster version + nodes, j, swap, polyCorners: Integer; + nodeX: array of Integer; begin if Brush.Style = bsClear then Exit; @@ -352,12 +347,66 @@ lBoundingBox.Bottom := Max(Points[i].Y, lBoundingBox.Bottom); end; - // Now scan all points using IsPointInPolygon + // good but very slow polygon fill function + {// Now scan all points using IsPointInPolygon for x := lBoundingBox.Left to lBoundingBox.Right do for y := lBoundingBox.Top to lBoundingBox.Bottom do begin if IsPointInPolygon(X, Y, Points) then SetColor(X, Y, Brush.FPColor); end; + Exit; + } + + // Loop through the rows of the image. + polyCorners := Length(points); + for y := lBoundingBox.Top to lBoundingBox.Bottom do + begin + // Build a list of nodes. + nodes := 0; + j := polyCorners-1; + for i := 0 to polyCorners-1 do + begin + if (points[i].Y < y) and (points[j].Y >= y) or + (points[j].Y < y) and (points[i].Y >= Y) then + begin + SetLength(nodeX, nodes+1); + nodeX[nodes] := Round(points[i].X + (y-points[i].Y) / (points[j].Y-points[i].Y) * (points[j].X-points[i].X)); + Inc(nodes); + end; + j := i; + end; + + // Sort the nodes, via a simple “Bubble” sort. + i := 0; + while (i<nodes-1) do + begin + if (nodeX[i]>nodeX[i+1]) then + begin + swap := nodeX[i]; + nodeX[i] := nodeX[i+1]; + nodeX[i+1] := swap; + if (i <> 0) then Dec(i); + end + else + Inc(i); + end; + + // Fill the pixels between node pairs. + i := 0; + while i<nodes do + begin + if (nodeX[i ] >= lBoundingBox.Right) then break; + if (nodeX[i+1] > lBoundingBox.Left) then + begin + if (nodeX[i ] < lBoundingBox.Left) then nodeX[i] := lBoundingBox.Left; + if (nodeX[i+1] > lBoundingBox.Right) then nodeX[i+1] := lBoundingBox.Right; + for X := nodeX[i] to nodeX[i+1]-1 do + SetColor(X, Y, Brush.FPColor); + end; + + i := i + 2; + end; + end; end; procedure TLazCanvas.DoLine(x1, y1, x2, y2: integer); diff -Nru lazarus-1.4.4+dfsg/lcl/lazdeviceapis.pas lazarus-1.6+dfsg/lcl/lazdeviceapis.pas --- lazarus-1.4.4+dfsg/lcl/lazdeviceapis.pas 2013-04-12 12:59:35.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lazdeviceapis.pas 2015-03-14 10:35:43.000000000 +0000 @@ -9,7 +9,7 @@ License: The same modified LGPL as the rest of the LCL } -unit lazdeviceapis; +unit LazDeviceApis; {$mode delphi} diff -Nru lazarus-1.4.4+dfsg/lcl/lazdialogs.pas lazarus-1.6+dfsg/lcl/lazdialogs.pas --- lazarus-1.4.4+dfsg/lcl/lazdialogs.pas 2013-09-27 03:38:18.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lazdialogs.pas 2015-03-14 10:35:43.000000000 +0000 @@ -1,4 +1,4 @@ -unit lazdialogs; +unit LazDialogs; {$mode objfpc}{$H+} diff -Nru lazarus-1.4.4+dfsg/lcl/lazfreetypeintfdrawer.pas lazarus-1.6+dfsg/lcl/lazfreetypeintfdrawer.pas --- lazarus-1.4.4+dfsg/lcl/lazfreetypeintfdrawer.pas 2014-05-27 13:27:55.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lazfreetypeintfdrawer.pas 2015-05-19 16:13:42.000000000 +0000 @@ -47,7 +47,8 @@ procedure DrawHorizLine(x1,y,x2: integer; const c: TFPColor); procedure FillRect(x,y,x2,y2: integer; const c: TFPColor; ASetPixels: boolean = True); procedure FillPixels(const c: TFPColor; ASetPixels: boolean = True); - procedure DrawText(AText: string; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor); override; + procedure DrawText(AText: string; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor); override; overload; + procedure DrawGlyph(AGlyph: integer; AFont: TFreeTypeRenderableFont; x,y: single; AColor: TFPColor); override; overload; property Destination: TLazIntfImage read FDestination write SetDestination; destructor Destroy; override; end; @@ -723,6 +724,21 @@ AFont.RenderText(AText, x, y, rect(0,0,Destination.Width,Destination.Height), @RenderDirectly); end; +procedure TIntfFreeTypeDrawer.DrawGlyph(AGlyph: integer; + AFont: TFreeTypeRenderableFont; x, y: single; AColor: TFPColor); +var f: TFreeTypeFont; +begin + if AFont is TFreeTypeFont then + begin + f := TFreeTypeFont(AFont); + FColor := AColor; + if AFont.ClearType then + f.RenderGlyph(AGlyph, x, y, rect(0,0,Destination.Width,Destination.Height), @RenderDirectlyClearType) + else + f.RenderGlyph(AGlyph, x, y, rect(0,0,Destination.Width,Destination.Height), @RenderDirectly); + end; +end; + destructor TIntfFreeTypeDrawer.Destroy; begin inherited Destroy; diff -Nru lazarus-1.4.4+dfsg/lcl/lazhelphtml.pas lazarus-1.6+dfsg/lcl/lazhelphtml.pas --- lazarus-1.4.4+dfsg/lcl/lazhelphtml.pas 2014-10-14 14:06:25.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lazhelphtml.pas 2015-07-04 23:08:00.000000000 +0000 @@ -18,7 +18,7 @@ interface uses - Classes, SysUtils, LCLProc, LCLIntf, Forms, Process, FileUtil, UTF8Process, + Classes, SysUtils, LCLProc, LCLIntf, Forms, Process, LazFileUtils, UTF8Process, LazConfigStorage, LCLStrConsts, HelpIntfs, LazHelpIntf; type diff -Nru lazarus-1.4.4+dfsg/lcl/lazhelpintf.pas lazarus-1.6+dfsg/lcl/lazhelpintf.pas --- lazarus-1.4.4+dfsg/lcl/lazhelpintf.pas 2014-12-10 03:14:05.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lazhelpintf.pas 2015-12-06 14:42:42.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: lazhelpintf.pas 47165 2014-12-10 03:14:05Z mattias $ } +{ $Id: lazhelpintf.pas 50694 2015-12-06 14:42:42Z mattias $ } { ***************************************************************************** This file is part of the Lazarus Component Library (LCL) @@ -26,7 +26,7 @@ uses Classes, SysUtils, LCLProc, FileUtil, LCLStrConsts, Dialogs, - LazConfigStorage, HelpIntfs, Masks, LazFileUtils; + LazConfigStorage, HelpIntfs, Masks, LazFileUtils, LazUTF8; type { THelpQueryItem } @@ -1157,7 +1157,7 @@ if (FileItem.FileMatches(Filename)) then begin CreateNodeQueryListAndAdd(FileItem.Node,PascalContext,ListOfNodes,true); {$IFNDEF DisableChecks} - debugln('THelpDatabase.GetNodesForPascalContexts C FileItem.ClassName=',FileItem.ClassName,' Filename=',Filename,' ',dbgs(ListOfNodes.Count)); + debugln(['THelpDatabase.GetNodesForPascalContexts C ID="',ID,'" ',i+1,'/',ListOfPascalHelpContextList.Count,' FileItem.ClassName=',FileItem.ClassName,' Filename=',Filename,' ',ListOfNodes.Count]); {$ENDIF} end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/lazregions.pas lazarus-1.6+dfsg/lcl/lazregions.pas --- lazarus-1.4.4+dfsg/lcl/lazregions.pas 2014-01-02 18:16:19.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lazregions.pas 2015-03-14 10:35:43.000000000 +0000 @@ -3,7 +3,7 @@ Author: Felipe Monteiro de Carvalho } -unit lazregions; +unit LazRegions; {$mode objfpc}{$H+} diff -Nru lazarus-1.4.4+dfsg/lcl/lclbase.lpk lazarus-1.6+dfsg/lcl/lclbase.lpk --- lazarus-1.4.4+dfsg/lcl/lclbase.lpk 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lclbase.lpk 2016-02-14 09:48:23.000000000 +0000 @@ -26,8 +26,8 @@ "/> <License Value="modified LGPL-2 "/> - <Version Major="1" Minor="4" Release="4"/> - <Files Count="278"> + <Version Major="1" Minor="6" Build="4"/> + <Files Count="284"> <Item1> <Filename Value="checklst.pas"/> <UnitName Value="CheckLst"/> @@ -98,7 +98,7 @@ </Item17> <Item18> <Filename Value="extgraphics.pas"/> - <UnitName Value="extgraphics"/> + <UnitName Value="ExtGraphics"/> </Item18> <Item19> <Filename Value="filectrl.pp"/> @@ -226,7 +226,7 @@ </Item49> <Item50> <Filename Value="maps.pp"/> - <UnitName Value="maps"/> + <UnitName Value="Maps"/> </Item50> <Item51> <Filename Value="maskedit.pp"/> @@ -250,7 +250,7 @@ </Item55> <Item56> <Filename Value="postscriptunicode.pas"/> - <UnitName Value="postscriptunicode"/> + <UnitName Value="PostScriptUnicode"/> </Item56> <Item57> <Filename Value="printers.pas"/> @@ -322,828 +322,852 @@ <UnitName Value="CalendarPopup"/> </Item73> <Item74> - <Filename Value="include/actionlink.inc"/> - <Type Value="Include"/> + <Filename Value="forms/timepopup.lfm"/> + <Type Value="LFM"/> </Item74> <Item75> - <Filename Value="include/application.inc"/> - <Type Value="Include"/> + <Filename Value="forms/timepopup.pas"/> + <UnitName Value="TimePopup"/> </Item75> <Item76> - <Filename Value="include/applicationproperties.inc"/> + <Filename Value="include/actionlink.inc"/> <Type Value="Include"/> </Item76> <Item77> - <Filename Value="include/bevel.inc"/> + <Filename Value="include/application.inc"/> <Type Value="Include"/> </Item77> <Item78> - <Filename Value="include/bitbtn.inc"/> + <Filename Value="include/applicationproperties.inc"/> <Type Value="Include"/> </Item78> <Item79> - <Filename Value="include/bitmap.inc"/> + <Filename Value="include/bevel.inc"/> <Type Value="Include"/> </Item79> <Item80> - <Filename Value="include/bitmapcanvas.inc"/> + <Filename Value="include/bitbtn.inc"/> <Type Value="Include"/> </Item80> <Item81> - <Filename Value="include/boundlabel.inc"/> + <Filename Value="include/bitmap.inc"/> <Type Value="Include"/> </Item81> <Item82> - <Filename Value="include/brush.inc"/> + <Filename Value="include/bitmapcanvas.inc"/> <Type Value="Include"/> </Item82> <Item83> - <Filename Value="include/buttoncontrol.inc"/> + <Filename Value="include/boundlabel.inc"/> <Type Value="Include"/> </Item83> <Item84> - <Filename Value="include/buttonglyph.inc"/> + <Filename Value="include/brush.inc"/> <Type Value="Include"/> </Item84> <Item85> - <Filename Value="include/buttons.inc"/> + <Filename Value="include/buttoncontrol.inc"/> <Type Value="Include"/> </Item85> <Item86> - <Filename Value="include/canvas.inc"/> + <Filename Value="include/buttonglyph.inc"/> <Type Value="Include"/> </Item86> <Item87> - <Filename Value="include/checkbox.inc"/> + <Filename Value="include/buttons.inc"/> <Type Value="Include"/> </Item87> <Item88> - <Filename Value="include/clipbrd.inc"/> + <Filename Value="include/canvas.inc"/> <Type Value="Include"/> </Item88> <Item89> - <Filename Value="include/colorbutton.inc"/> + <Filename Value="include/checkbox.inc"/> <Type Value="Include"/> </Item89> <Item90> - <Filename Value="include/commondialog.inc"/> + <Filename Value="include/clipbrd.inc"/> <Type Value="Include"/> </Item90> <Item91> - <Filename Value="include/containedaction.inc"/> + <Filename Value="include/colorbutton.inc"/> <Type Value="Include"/> </Item91> <Item92> - <Filename Value="include/control.inc"/> + <Filename Value="include/commondialog.inc"/> <Type Value="Include"/> </Item92> <Item93> - <Filename Value="include/controlactionlink.inc"/> + <Filename Value="include/containedaction.inc"/> <Type Value="Include"/> </Item93> <Item94> - <Filename Value="include/controlcanvas.inc"/> + <Filename Value="include/control.inc"/> <Type Value="Include"/> </Item94> <Item95> - <Filename Value="include/controlscrollbar.inc"/> + <Filename Value="include/controlactionlink.inc"/> <Type Value="Include"/> </Item95> <Item96> - <Filename Value="include/controlsproc.inc"/> + <Filename Value="include/controlcanvas.inc"/> <Type Value="Include"/> </Item96> <Item97> - <Filename Value="include/cursorimage.inc"/> + <Filename Value="include/controlscrollbar.inc"/> <Type Value="Include"/> </Item97> <Item98> - <Filename Value="include/customaction.inc"/> + <Filename Value="include/controlsproc.inc"/> <Type Value="Include"/> </Item98> <Item99> - <Filename Value="include/customactionlist.inc"/> + <Filename Value="include/cursorimage.inc"/> <Type Value="Include"/> </Item99> <Item100> - <Filename Value="include/custombitmap.inc"/> + <Filename Value="include/customaction.inc"/> <Type Value="Include"/> </Item100> <Item101> - <Filename Value="include/customcheckbox.inc"/> + <Filename Value="include/customactionlist.inc"/> <Type Value="Include"/> </Item101> <Item102> - <Filename Value="include/customcheckgroup.inc"/> + <Filename Value="include/custombitmap.inc"/> <Type Value="Include"/> </Item102> <Item103> - <Filename Value="include/customcombobox.inc"/> + <Filename Value="include/customcheckbox.inc"/> <Type Value="Include"/> </Item103> <Item104> - <Filename Value="include/customcontrol.inc"/> + <Filename Value="include/customcheckgroup.inc"/> <Type Value="Include"/> </Item104> <Item105> - <Filename Value="include/customdbcombobox.inc"/> + <Filename Value="include/customcombobox.inc"/> <Type Value="Include"/> </Item105> <Item106> - <Filename Value="include/customdblistbox.inc"/> + <Filename Value="include/customcontrol.inc"/> <Type Value="Include"/> </Item106> <Item107> - <Filename Value="include/customdockform.inc"/> + <Filename Value="include/customdbcombobox.inc"/> <Type Value="Include"/> </Item107> <Item108> - <Filename Value="include/customedit.inc"/> + <Filename Value="include/customdblistbox.inc"/> <Type Value="Include"/> </Item108> <Item109> - <Filename Value="include/customform.inc"/> + <Filename Value="include/customdockform.inc"/> <Type Value="Include"/> </Item109> <Item110> - <Filename Value="include/customframe.inc"/> + <Filename Value="include/customedit.inc"/> <Type Value="Include"/> </Item110> <Item111> - <Filename Value="include/customgroupbox.inc"/> + <Filename Value="include/customform.inc"/> <Type Value="Include"/> </Item111> <Item112> - <Filename Value="include/customimage.inc"/> + <Filename Value="include/customframe.inc"/> <Type Value="Include"/> </Item112> <Item113> - <Filename Value="include/customlabel.inc"/> + <Filename Value="include/customgroupbox.inc"/> <Type Value="Include"/> </Item113> <Item114> - <Filename Value="include/customlabelededit.inc"/> + <Filename Value="include/customimage.inc"/> <Type Value="Include"/> </Item114> <Item115> - <Filename Value="include/customlistbox.inc"/> + <Filename Value="include/customlabel.inc"/> <Type Value="Include"/> </Item115> <Item116> - <Filename Value="include/customlistview.inc"/> + <Filename Value="include/customlabelededit.inc"/> <Type Value="Include"/> </Item116> <Item117> - <Filename Value="include/custommemo.inc"/> + <Filename Value="include/customlistbox.inc"/> <Type Value="Include"/> </Item117> <Item118> - <Filename Value="include/customnotebook.inc"/> + <Filename Value="include/customlistview.inc"/> <Type Value="Include"/> </Item118> <Item119> - <Filename Value="include/custompage.inc"/> + <Filename Value="include/custommemo.inc"/> <Type Value="Include"/> </Item119> <Item120> - <Filename Value="include/custompanel.inc"/> + <Filename Value="include/customnotebook.inc"/> <Type Value="Include"/> </Item120> <Item121> - <Filename Value="include/customsplitter.inc"/> + <Filename Value="include/custompage.inc"/> <Type Value="Include"/> </Item121> <Item122> - <Filename Value="include/customstatictext.inc"/> + <Filename Value="include/custompanel.inc"/> <Type Value="Include"/> </Item122> <Item123> - <Filename Value="include/customtrayicon.inc"/> + <Filename Value="include/customsplitter.inc"/> <Type Value="Include"/> </Item123> <Item124> - <Filename Value="include/customupdown.inc"/> + <Filename Value="include/customstatictext.inc"/> <Type Value="Include"/> </Item124> <Item125> - <Filename Value="include/dbcalendar.inc"/> + <Filename Value="include/customtrayicon.inc"/> <Type Value="Include"/> </Item125> <Item126> - <Filename Value="include/dbcheckbox.inc"/> + <Filename Value="include/customupdown.inc"/> <Type Value="Include"/> </Item126> <Item127> - <Filename Value="include/dbcombobox.inc"/> + <Filename Value="include/dbcalendar.inc"/> <Type Value="Include"/> </Item127> <Item128> - <Filename Value="include/dbcustomnavigator.inc"/> + <Filename Value="include/dbcheckbox.inc"/> <Type Value="Include"/> </Item128> <Item129> - <Filename Value="include/dbedit.inc"/> + <Filename Value="include/dbcombobox.inc"/> <Type Value="Include"/> </Item129> <Item130> - <Filename Value="include/dbgroupbox.inc"/> + <Filename Value="include/dbcustomnavigator.inc"/> <Type Value="Include"/> </Item130> <Item131> - <Filename Value="include/dbimage.inc"/> + <Filename Value="include/dbedit.inc"/> <Type Value="Include"/> </Item131> <Item132> - <Filename Value="include/dblistbox.inc"/> + <Filename Value="include/dbgroupbox.inc"/> <Type Value="Include"/> </Item132> <Item133> - <Filename Value="include/dblookup.inc"/> + <Filename Value="include/dbimage.inc"/> <Type Value="Include"/> </Item133> <Item134> - <Filename Value="include/dblookupcombobox.inc"/> + <Filename Value="include/dblistbox.inc"/> <Type Value="Include"/> </Item134> <Item135> - <Filename Value="include/dblookuplistbox.inc"/> + <Filename Value="include/dblookup.inc"/> <Type Value="Include"/> </Item135> <Item136> - <Filename Value="include/dbmemo.inc"/> + <Filename Value="include/dblookupcombobox.inc"/> <Type Value="Include"/> </Item136> <Item137> - <Filename Value="include/dbradiogroup.inc"/> + <Filename Value="include/dblookuplistbox.inc"/> <Type Value="Include"/> </Item137> <Item138> - <Filename Value="include/dbtext.inc"/> + <Filename Value="include/dbmemo.inc"/> <Type Value="Include"/> </Item138> <Item139> - <Filename Value="include/docktree.inc"/> + <Filename Value="include/dbradiogroup.inc"/> <Type Value="Include"/> </Item139> <Item140> - <Filename Value="include/dockzone.inc"/> + <Filename Value="include/dbtext.inc"/> <Type Value="Include"/> </Item140> <Item141> - <Filename Value="include/dragdock.inc"/> + <Filename Value="include/docktree.inc"/> <Type Value="Include"/> </Item141> <Item142> - <Filename Value="include/dragimagelist.inc"/> + <Filename Value="include/dockzone.inc"/> <Type Value="Include"/> </Item142> <Item143> - <Filename Value="include/dragmanager.inc"/> + <Filename Value="include/dragdock.inc"/> <Type Value="Include"/> </Item143> <Item144> - <Filename Value="include/dragobject.inc"/> + <Filename Value="include/dragimagelist.inc"/> <Type Value="Include"/> </Item144> <Item145> - <Filename Value="include/filedialog.inc"/> + <Filename Value="include/dragmanager.inc"/> <Type Value="Include"/> </Item145> <Item146> - <Filename Value="include/finddialog.inc"/> + <Filename Value="include/dragobject.inc"/> <Type Value="Include"/> </Item146> <Item147> - <Filename Value="include/font.inc"/> + <Filename Value="include/filedialog.inc"/> <Type Value="Include"/> </Item147> <Item148> - <Filename Value="include/fontdialog.inc"/> + <Filename Value="include/finddialog.inc"/> <Type Value="Include"/> </Item148> <Item149> - <Filename Value="include/fpimagebitmap.inc"/> + <Filename Value="include/font.inc"/> <Type Value="Include"/> </Item149> <Item150> - <Filename Value="include/gifimage.inc"/> + <Filename Value="include/fontdialog.inc"/> <Type Value="Include"/> </Item150> <Item151> - <Filename Value="include/glyphlist.inc"/> + <Filename Value="include/fpimagebitmap.inc"/> <Type Value="Include"/> </Item151> <Item152> - <Filename Value="include/graphic.inc"/> + <Filename Value="include/gifimage.inc"/> <Type Value="Include"/> </Item152> <Item153> - <Filename Value="include/graphiccontrol.inc"/> + <Filename Value="include/glyphlist.inc"/> <Type Value="Include"/> </Item153> <Item154> - <Filename Value="include/graphicsobject.inc"/> + <Filename Value="include/graphic.inc"/> <Type Value="Include"/> </Item154> <Item155> - <Filename Value="include/headercontrol.inc"/> + <Filename Value="include/graphiccontrol.inc"/> <Type Value="Include"/> </Item155> <Item156> - <Filename Value="include/hintwindow.inc"/> + <Filename Value="include/graphicsobject.inc"/> <Type Value="Include"/> </Item156> <Item157> - <Filename Value="include/icnsicon.inc"/> + <Filename Value="include/headercontrol.inc"/> <Type Value="Include"/> </Item157> <Item158> - <Filename Value="include/icon.inc"/> + <Filename Value="include/hintwindow.inc"/> <Type Value="Include"/> </Item158> <Item159> - <Filename Value="include/idletimer.inc"/> + <Filename Value="include/icnsicon.inc"/> <Type Value="Include"/> </Item159> <Item160> - <Filename Value="include/imglist.inc"/> + <Filename Value="include/icon.inc"/> <Type Value="Include"/> </Item160> <Item161> - <Filename Value="include/inputdialog.inc"/> + <Filename Value="include/idletimer.inc"/> <Type Value="Include"/> </Item161> <Item162> - <Filename Value="include/interfacebase.inc"/> + <Filename Value="include/imglist.inc"/> <Type Value="Include"/> </Item162> <Item163> - <Filename Value="include/intfbaselcl.inc"/> + <Filename Value="include/inputdialog.inc"/> <Type Value="Include"/> </Item163> <Item164> - <Filename Value="include/intfbasewinapi.inc"/> + <Filename Value="include/interfacebase.inc"/> <Type Value="Include"/> </Item164> <Item165> - <Filename Value="include/jpegimage.inc"/> + <Filename Value="include/intfbaselcl.inc"/> <Type Value="Include"/> </Item165> <Item166> - <Filename Value="include/lclaction.inc"/> + <Filename Value="include/intfbasewinapi.inc"/> <Type Value="Include"/> </Item166> <Item167> - <Filename Value="include/lclintf.inc"/> + <Filename Value="include/jpegimage.inc"/> <Type Value="Include"/> </Item167> <Item168> - <Filename Value="include/lclintfh.inc"/> + <Filename Value="include/lclaction.inc"/> <Type Value="Include"/> </Item168> <Item169> - <Filename Value="include/listcolumn.inc"/> + <Filename Value="include/lclintf.inc"/> <Type Value="Include"/> </Item169> <Item170> - <Filename Value="include/listcolumns.inc"/> + <Filename Value="include/lclintfh.inc"/> <Type Value="Include"/> </Item170> <Item171> - <Filename Value="include/listitem.inc"/> + <Filename Value="include/listcolumn.inc"/> <Type Value="Include"/> </Item171> <Item172> - <Filename Value="include/listitems.inc"/> + <Filename Value="include/listcolumns.inc"/> <Type Value="Include"/> </Item172> <Item173> - <Filename Value="include/mainmenu.inc"/> + <Filename Value="include/listitem.inc"/> <Type Value="Include"/> </Item173> <Item174> - <Filename Value="include/memoscrollbar.inc"/> + <Filename Value="include/listitems.inc"/> <Type Value="Include"/> </Item174> <Item175> - <Filename Value="include/memostrings.inc"/> + <Filename Value="include/mainmenu.inc"/> <Type Value="Include"/> </Item175> <Item176> - <Filename Value="include/menu.inc"/> + <Filename Value="include/memoscrollbar.inc"/> <Type Value="Include"/> </Item176> <Item177> - <Filename Value="include/menuactionlink.inc"/> + <Filename Value="include/memostrings.inc"/> <Type Value="Include"/> </Item177> <Item178> - <Filename Value="include/menuitem.inc"/> + <Filename Value="include/menu.inc"/> <Type Value="Include"/> </Item178> <Item179> - <Filename Value="include/messagedialogs.inc"/> + <Filename Value="include/menuactionlink.inc"/> <Type Value="Include"/> </Item179> <Item180> - <Filename Value="include/monitor.inc"/> + <Filename Value="include/menuitem.inc"/> <Type Value="Include"/> </Item180> <Item181> - <Filename Value="include/mouse.inc"/> + <Filename Value="include/messagedialogs.inc"/> <Type Value="Include"/> </Item181> <Item182> - <Filename Value="include/notebook.inc"/> + <Filename Value="include/monitor.inc"/> <Type Value="Include"/> </Item182> <Item183> - <Filename Value="include/page.inc"/> + <Filename Value="include/mouse.inc"/> <Type Value="Include"/> </Item183> <Item184> - <Filename Value="include/pagecontrol.inc"/> + <Filename Value="include/notebook.inc"/> <Type Value="Include"/> </Item184> <Item185> - <Filename Value="include/paintbox.inc"/> + <Filename Value="include/page.inc"/> <Type Value="Include"/> </Item185> <Item186> - <Filename Value="include/pen.inc"/> + <Filename Value="include/pagecontrol.inc"/> <Type Value="Include"/> </Item186> <Item187> - <Filename Value="include/picture.inc"/> + <Filename Value="include/paintbox.inc"/> <Type Value="Include"/> </Item187> <Item188> - <Filename Value="include/pixmap.inc"/> + <Filename Value="include/pen.inc"/> <Type Value="Include"/> </Item188> <Item189> - <Filename Value="include/png.inc"/> + <Filename Value="include/picture.inc"/> <Type Value="Include"/> </Item189> <Item190> - <Filename Value="include/pnm.inc"/> + <Filename Value="include/pixmap.inc"/> <Type Value="Include"/> </Item190> <Item191> - <Filename Value="include/popupmenu.inc"/> + <Filename Value="include/png.inc"/> <Type Value="Include"/> </Item191> <Item192> - <Filename Value="include/progressbar.inc"/> + <Filename Value="include/pnm.inc"/> <Type Value="Include"/> </Item192> <Item193> - <Filename Value="include/promptdialog.inc"/> + <Filename Value="include/popupmenu.inc"/> <Type Value="Include"/> </Item193> <Item194> - <Filename Value="include/radiobutton.inc"/> + <Filename Value="include/progressbar.inc"/> <Type Value="Include"/> </Item194> <Item195> - <Filename Value="include/radiogroup.inc"/> + <Filename Value="include/promptdialog.inc"/> <Type Value="Include"/> </Item195> <Item196> - <Filename Value="include/rasterimage.inc"/> + <Filename Value="include/radiobutton.inc"/> <Type Value="Include"/> </Item196> <Item197> - <Filename Value="include/reginifile.inc"/> + <Filename Value="include/radiogroup.inc"/> <Type Value="Include"/> </Item197> <Item198> - <Filename Value="include/region.inc"/> + <Filename Value="include/rasterimage.inc"/> <Type Value="Include"/> </Item198> <Item199> - <Filename Value="include/replacedialog.inc"/> + <Filename Value="include/reginifile.inc"/> <Type Value="Include"/> </Item199> <Item200> - <Filename Value="include/rubberband.inc"/> + <Filename Value="include/region.inc"/> <Type Value="Include"/> </Item200> <Item201> - <Filename Value="include/screen.inc"/> + <Filename Value="include/replacedialog.inc"/> <Type Value="Include"/> </Item201> <Item202> - <Filename Value="include/scrollbar.inc"/> + <Filename Value="include/rubberband.inc"/> <Type Value="Include"/> </Item202> <Item203> - <Filename Value="include/scrollbox.inc"/> + <Filename Value="include/screen.inc"/> <Type Value="Include"/> </Item203> <Item204> - <Filename Value="include/scrollingwincontrol.inc"/> + <Filename Value="include/scrollbar.inc"/> <Type Value="Include"/> </Item204> <Item205> - <Filename Value="include/shape.inc"/> + <Filename Value="include/scrollbox.inc"/> <Type Value="Include"/> </Item205> <Item206> - <Filename Value="include/sharedcustombitmap.inc"/> + <Filename Value="include/scrollingwincontrol.inc"/> <Type Value="Include"/> </Item206> <Item207> - <Filename Value="include/sharedimage.inc"/> + <Filename Value="include/shape.inc"/> <Type Value="Include"/> </Item207> <Item208> - <Filename Value="include/sharedrasterimage.inc"/> + <Filename Value="include/sharedcustombitmap.inc"/> <Type Value="Include"/> </Item208> <Item209> - <Filename Value="include/shortcutlist.inc"/> + <Filename Value="include/sharedimage.inc"/> <Type Value="Include"/> </Item209> <Item210> - <Filename Value="include/sizeconstraints.inc"/> + <Filename Value="include/sharedrasterimage.inc"/> <Type Value="Include"/> </Item210> <Item211> - <Filename Value="include/speedbutton.inc"/> + <Filename Value="include/shortcutlist.inc"/> <Type Value="Include"/> </Item211> <Item212> - <Filename Value="include/spinedit.inc"/> + <Filename Value="include/sizeconstraints.inc"/> <Type Value="Include"/> </Item212> <Item213> - <Filename Value="include/statusbar.inc"/> + <Filename Value="include/speedbutton.inc"/> <Type Value="Include"/> </Item213> <Item214> - <Filename Value="include/statuspanel.inc"/> + <Filename Value="include/spinedit.inc"/> <Type Value="Include"/> </Item214> <Item215> - <Filename Value="include/statuspanels.inc"/> + <Filename Value="include/statusbar.inc"/> <Type Value="Include"/> </Item215> <Item216> - <Filename Value="include/tabcontrol.inc"/> + <Filename Value="include/statuspanel.inc"/> <Type Value="Include"/> </Item216> <Item217> - <Filename Value="include/tabsheet.inc"/> + <Filename Value="include/statuspanels.inc"/> <Type Value="Include"/> </Item217> <Item218> - <Filename Value="include/tiffimage.inc"/> + <Filename Value="include/tabcontrol.inc"/> <Type Value="Include"/> </Item218> <Item219> - <Filename Value="include/togglebox.inc"/> + <Filename Value="include/tabsheet.inc"/> <Type Value="Include"/> </Item219> <Item220> - <Filename Value="include/toolbar.inc"/> + <Filename Value="include/tiffimage.inc"/> <Type Value="Include"/> </Item220> <Item221> - <Filename Value="include/toolbutton.inc"/> + <Filename Value="include/togglebox.inc"/> <Type Value="Include"/> </Item221> <Item222> - <Filename Value="include/toolwindow.inc"/> + <Filename Value="include/toolbar.inc"/> <Type Value="Include"/> </Item222> <Item223> - <Filename Value="include/trackbar.inc"/> + <Filename Value="include/toolbutton.inc"/> <Type Value="Include"/> </Item223> <Item224> - <Filename Value="include/treeview.inc"/> + <Filename Value="include/toolwindow.inc"/> <Type Value="Include"/> </Item224> <Item225> - <Filename Value="include/winapi.inc"/> + <Filename Value="include/trackbar.inc"/> <Type Value="Include"/> </Item225> <Item226> - <Filename Value="include/winapih.inc"/> + <Filename Value="include/treeview.inc"/> <Type Value="Include"/> </Item226> <Item227> - <Filename Value="include/wincontrol.inc"/> + <Filename Value="include/winapi.inc"/> <Type Value="Include"/> </Item227> <Item228> - <Filename Value="nonwin32/messages.pp"/> - <UnitName Value="Messages"/> + <Filename Value="include/winapih.inc"/> + <Type Value="Include"/> </Item228> <Item229> - <Filename Value="widgetset/wsbuttons.pp"/> - <UnitName Value="WSButtons"/> + <Filename Value="include/wincontrol.inc"/> + <Type Value="Include"/> </Item229> <Item230> - <Filename Value="widgetset/wscalendar.pp"/> - <UnitName Value="WSCalendar"/> + <Filename Value="nonwin32/messages.pp"/> + <UnitName Value="Messages"/> </Item230> <Item231> - <Filename Value="widgetset/wschecklst.pp"/> - <UnitName Value="WSCheckLst"/> + <Filename Value="widgetset/wsbuttons.pp"/> + <UnitName Value="WSButtons"/> </Item231> <Item232> - <Filename Value="widgetset/wscomctrls.pp"/> - <UnitName Value="WSComCtrls"/> + <Filename Value="widgetset/wscalendar.pp"/> + <UnitName Value="WSCalendar"/> </Item232> <Item233> - <Filename Value="widgetset/wscontrols.pp"/> - <UnitName Value="WSControls"/> + <Filename Value="widgetset/wschecklst.pp"/> + <UnitName Value="WSCheckLst"/> </Item233> <Item234> - <Filename Value="widgetset/wsdesigner.pp"/> - <UnitName Value="WSDesigner"/> + <Filename Value="widgetset/wscomctrls.pp"/> + <UnitName Value="WSComCtrls"/> </Item234> <Item235> - <Filename Value="widgetset/wsdialogs.pp"/> - <UnitName Value="WSDialogs"/> + <Filename Value="widgetset/wscontrols.pp"/> + <UnitName Value="WSControls"/> </Item235> <Item236> - <Filename Value="widgetset/wsextctrls.pp"/> - <UnitName Value="WSExtCtrls"/> + <Filename Value="widgetset/wsdesigner.pp"/> + <UnitName Value="WSDesigner"/> </Item236> <Item237> - <Filename Value="widgetset/wsextdlgs.pp"/> - <UnitName Value="WSExtDlgs"/> + <Filename Value="widgetset/wsdialogs.pp"/> + <UnitName Value="WSDialogs"/> </Item237> <Item238> - <Filename Value="widgetset/wsfactory.pas"/> - <UnitName Value="WSFactory"/> + <Filename Value="widgetset/wsextctrls.pp"/> + <UnitName Value="WSExtCtrls"/> </Item238> <Item239> - <Filename Value="widgetset/wsforms.pp"/> - <UnitName Value="WSForms"/> + <Filename Value="widgetset/wsextdlgs.pp"/> + <UnitName Value="WSExtDlgs"/> </Item239> <Item240> - <Filename Value="widgetset/wsgrids.pp"/> - <UnitName Value="WSGrids"/> + <Filename Value="widgetset/wsfactory.pas"/> + <UnitName Value="WSFactory"/> </Item240> <Item241> - <Filename Value="widgetset/wsimglist.pp"/> - <UnitName Value="WSImgList"/> + <Filename Value="widgetset/wsforms.pp"/> + <UnitName Value="WSForms"/> </Item241> <Item242> - <Filename Value="widgetset/wslclclasses.pp"/> - <UnitName Value="WSLCLClasses"/> + <Filename Value="widgetset/wsgrids.pp"/> + <UnitName Value="WSGrids"/> </Item242> <Item243> - <Filename Value="widgetset/wsmenus.pp"/> - <UnitName Value="WSMenus"/> + <Filename Value="widgetset/wsimglist.pp"/> + <UnitName Value="WSImgList"/> </Item243> <Item244> - <Filename Value="widgetset/wspairsplitter.pp"/> - <UnitName Value="WSPairSplitter"/> + <Filename Value="widgetset/wslclclasses.pp"/> + <UnitName Value="WSLCLClasses"/> </Item244> <Item245> - <Filename Value="widgetset/wsproc.pp"/> - <UnitName Value="WSProc"/> + <Filename Value="widgetset/wsmenus.pp"/> + <UnitName Value="WSMenus"/> </Item245> <Item246> - <Filename Value="widgetset/wsreferences.pp"/> - <UnitName Value="WSReferences"/> + <Filename Value="widgetset/wspairsplitter.pp"/> + <UnitName Value="WSPairSplitter"/> </Item246> <Item247> - <Filename Value="widgetset/wsspin.pp"/> - <UnitName Value="WSSpin"/> + <Filename Value="widgetset/wsproc.pp"/> + <UnitName Value="WSProc"/> </Item247> <Item248> - <Filename Value="widgetset/wsstdctrls.pp"/> - <UnitName Value="WSStdCtrls"/> + <Filename Value="widgetset/wsreferences.pp"/> + <UnitName Value="WSReferences"/> </Item248> <Item249> - <Filename Value="widgetset/wstoolwin.pp"/> - <UnitName Value="WSToolwin"/> + <Filename Value="widgetset/wsspin.pp"/> + <UnitName Value="WSSpin"/> </Item249> <Item250> - <Filename Value="alllclunits.pp"/> - <Type Value="Main Unit"/> - <UnitName Value="AllLCLUnits"/> + <Filename Value="widgetset/wsstdctrls.pp"/> + <UnitName Value="WSStdCtrls"/> </Item250> <Item251> - <Filename Value="actnlist.pas"/> - <UnitName Value="ActnList"/> + <Filename Value="widgetset/wstoolwin.pp"/> + <UnitName Value="WSToolwin"/> </Item251> <Item252> - <Filename Value="asyncprocess.pp"/> - <UnitName Value="AsyncProcess"/> + <Filename Value="alllclunits.pp"/> + <Type Value="Main Unit"/> + <UnitName Value="AllLCLUnits"/> </Item252> <Item253> - <Filename Value="buttonpanel.pas"/> - <UnitName Value="ButtonPanel"/> + <Filename Value="actnlist.pas"/> + <UnitName Value="ActnList"/> </Item253> <Item254> - <Filename Value="buttons.pp"/> - <UnitName Value="Buttons"/> + <Filename Value="asyncprocess.pp"/> + <UnitName Value="AsyncProcess"/> </Item254> <Item255> - <Filename Value="calendar.pp"/> - <UnitName Value="Calendar"/> + <Filename Value="buttonpanel.pas"/> + <UnitName Value="ButtonPanel"/> </Item255> <Item256> - <Filename Value="registerlcl.pas"/> - <HasRegisterProc Value="True"/> - <UnitName Value="RegisterLCL"/> + <Filename Value="buttons.pp"/> + <UnitName Value="Buttons"/> </Item256> <Item257> - <Filename Value="include/lclcolordialog.inc"/> - <Type Value="Include"/> + <Filename Value="calendar.pp"/> + <UnitName Value="Calendar"/> </Item257> <Item258> - <Filename Value="valedit.pas"/> - <UnitName Value="ValEdit"/> + <Filename Value="registerlcl.pas"/> + <HasRegisterProc Value="True"/> + <UnitName Value="RegisterLCL"/> </Item258> <Item259> - <Filename Value="lazcanvas.pas"/> - <UnitName Value="lazcanvas"/> + <Filename Value="include/lclcolordialog.inc"/> + <Type Value="Include"/> </Item259> <Item260> - <Filename Value="lazdialogs.pas"/> - <UnitName Value="lazdialogs"/> + <Filename Value="valedit.pas"/> + <UnitName Value="ValEdit"/> </Item260> <Item261> - <Filename Value="lazregions.pas"/> - <UnitName Value="lazregions"/> + <Filename Value="lazcanvas.pas"/> + <UnitName Value="LazCanvas"/> </Item261> <Item262> - <Filename Value="customdrawn_common.pas"/> - <UnitName Value="customdrawn_common"/> + <Filename Value="lazdialogs.pas"/> + <UnitName Value="LazDialogs"/> </Item262> <Item263> - <Filename Value="customdrawncontrols.pas"/> - <UnitName Value="customdrawncontrols"/> + <Filename Value="lazregions.pas"/> + <UnitName Value="LazRegions"/> </Item263> <Item264> - <Filename Value="customdrawndrawers.pas"/> - <UnitName Value="customdrawndrawers"/> + <Filename Value="customdrawn_common.pas"/> + <UnitName Value="CustomDrawn_Common"/> </Item264> <Item265> - <Filename Value="lazdeviceapis.pas"/> - <UnitName Value="lazdeviceapis"/> + <Filename Value="customdrawncontrols.pas"/> + <UnitName Value="CustomDrawnControls"/> </Item265> <Item266> - <Filename Value="ldocktree.pas"/> - <UnitName Value="LDockTree"/> + <Filename Value="customdrawndrawers.pas"/> + <UnitName Value="CustomDrawnDrawers"/> </Item266> <Item267> - <Filename Value="lazfreetypeintfdrawer.pas"/> - <UnitName Value="LazFreeTypeIntfDrawer"/> + <Filename Value="lazdeviceapis.pas"/> + <UnitName Value="LazDeviceApis"/> </Item267> <Item268> - <Filename Value="customdrawn_winxp.pas"/> - <UnitName Value="customdrawn_winxp"/> + <Filename Value="ldocktree.pas"/> + <UnitName Value="LDockTree"/> </Item268> <Item269> - <Filename Value="customdrawn_android.pas"/> - <UnitName Value="customdrawn_android"/> + <Filename Value="lazfreetypeintfdrawer.pas"/> + <UnitName Value="LazFreeTypeIntfDrawer"/> </Item269> <Item270> - <Filename Value="include/sysenvapis_win.inc"/> - <Type Value="Include"/> + <Filename Value="customdrawn_winxp.pas"/> + <UnitName Value="CustomDrawn_WinXP"/> </Item270> <Item271> - <Filename Value="include/sysenvapis.inc"/> - <Type Value="Include"/> + <Filename Value="customdrawn_android.pas"/> + <UnitName Value="CustomDrawn_Android"/> </Item271> <Item272> - <Filename Value="include/sysenvapis_mac.inc"/> + <Filename Value="include/sysenvapis_win.inc"/> <Type Value="Include"/> </Item272> <Item273> - <Filename Value="include/sysenvapis_unix.inc"/> + <Filename Value="include/sysenvapis.inc"/> <Type Value="Include"/> </Item273> <Item274> - <Filename Value="include/lcl_defines.inc"/> + <Filename Value="include/sysenvapis_mac.inc"/> <Type Value="Include"/> </Item274> <Item275> - <Filename Value="arrow.pp"/> - <UnitName Value="Arrow"/> + <Filename Value="include/sysenvapis_unix.inc"/> + <Type Value="Include"/> </Item275> <Item276> + <Filename Value="include/lcl_defines.inc"/> + <Type Value="Include"/> + </Item276> + <Item277> + <Filename Value="arrow.pp"/> + <UnitName Value="Arrow"/> + </Item277> + <Item278> <Filename Value="editbtn.pas"/> <HasRegisterProc Value="True"/> <UnitName Value="EditBtn"/> - </Item276> - <Item277> + </Item278> + <Item279> <Filename Value="comboex.pas"/> <UnitName Value="ComboEx"/> - </Item277> - <Item278> + </Item279> + <Item280> <Filename Value="dbextctrls.pp"/> <UnitName Value="DBExtCtrls"/> - </Item278> + </Item280> + <Item281> + <Filename Value="customdrawn_mac.pas"/> + <UnitName Value="CustomDrawn_Mac"/> + </Item281> + <Item282> + <Filename Value="forms/calcform.pas"/> + <UnitName Value="CalcForm"/> + </Item282> + <Item283> + <Filename Value="lcltranslator.pas"/> + <UnitName Value="LCLTranslator"/> + </Item283> + <Item284> + <Filename Value="include/customflowpanel.inc"/> + <Type Value="Include"/> + </Item284> </Files> <LazDoc Paths="../docs/xml/lcl"/> <i18n> Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/lcl/lcl_dbnav_images.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/lcl/lcl_dbnav_images.res differ Binary files /tmp/tmpUpG2Oy/xGiEh3BgE0/lazarus-1.4.4+dfsg/lcl/lcl_edbtnimg.res and /tmp/tmpUpG2Oy/BH_i6MyZe1/lazarus-1.6+dfsg/lcl/lcl_edbtnimg.res differ diff -Nru lazarus-1.4.4+dfsg/lcl/lclintf.pas lazarus-1.6+dfsg/lcl/lclintf.pas --- lazarus-1.4.4+dfsg/lcl/lclintf.pas 2015-02-25 16:43:52.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lclintf.pas 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: lclintf.pas 47988 2015-02-25 16:43:52Z mattias $ } +{ $Id: lclintf.pas 49494 2015-07-04 23:08:00Z juha $ } { /*************************************************************************** LCLIntf.pas @@ -51,7 +51,8 @@ {$IFDEF UNIX}Unix, {$ENDIF} {$IFDEF Darwin}MacOSAll, CocoaAll,{$ENDIF} Types, Math, Classes, SysUtils, LCLType, LCLProc, GraphType, InterfaceBase, - LResources, FileUtil, UTF8Process, Maps, LMessages, lazutf8sysutils, LCLStrConsts; + FileUtil, LazFileUtils, UTF8Process, Maps, LMessages, LazUTF8, lazutf8sysutils, + LCLStrConsts; {$ifdef Trace} {$ASSERTIONS ON} diff -Nru lazarus-1.4.4+dfsg/lcl/lclproc.pas lazarus-1.6+dfsg/lcl/lclproc.pas --- lazarus-1.4.4+dfsg/lcl/lclproc.pas 2014-12-10 14:26:18.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lclproc.pas 2015-08-08 21:06:51.000000000 +0000 @@ -30,7 +30,7 @@ Win9xWsManager, // Support for Lower/UpperWideStringProc on Win9x, also used by some Utf8 string handling functions {$ENDIF} {$IFnDEF WithOldDebugln} LazLogger, {$ENDIF} - Classes, SysUtils, Math, TypInfo, Types, FPCAdds, AvgLvlTree, FileUtil, + Classes, SysUtils, Math, TypInfo, Types, FPCAdds, AvgLvlTree, LazFileUtils, LCLStrConsts, LCLType, WSReferences, LazMethodList, LazUTF8, LazUTF8Classes; type @@ -319,10 +319,6 @@ function ClassCase(const AClass: TClass; const ACase: array of TClass {; const ADescendant: Boolean = True}): Integer; overload; function ClassCase(const AClass: TClass; const ACase: array of TClass; const ADecendant: Boolean): Integer; overload; - -// UTF-8 Routines in LCLProc are provided only for backwards compatibility, -// use the routines from LazUTF8 instead - // MWE: define (missing) UTF16string similar to UTF8 // strictly spoken, a widestring <> utf16string // todo: use it in existing functions @@ -330,36 +326,6 @@ UTF16String = type UnicodeString; PUTF16String = ^UTF16String; -function UTF8CharacterLength(p: PChar): integer; inline; -function UTF8Length(const s: string): PtrInt; -function UTF8Length(p: PChar; ByteCount: PtrInt): PtrInt; inline; -function UTF8CharacterToUnicode(p: PChar; out CharLen: integer): Cardinal; inline; -function UnicodeToUTF8(u: cardinal; Buf: PChar): integer; inline; -function UnicodeToUTF8SkipErrors(u: cardinal; Buf: PChar): integer; inline; -function UnicodeToUTF8(u: cardinal): shortstring; inline; -function UTF8ToDoubleByteString(const s: string): string; inline; -function UTF8ToDoubleByte(UTF8Str: PChar; Len: PtrInt; DBStr: PByte): PtrInt; inline; -function UTF8FindNearestCharStart(UTF8Str: PChar; Len: integer; - BytePos: integer): integer; inline; -// find the n-th UTF8 character, ignoring BIDI -function UTF8CharStart(UTF8Str: PChar; Len, CharIndex: PtrInt): PChar; inline; -// find the byte index of the n-th UTF8 character, ignoring BIDI (byte len of substr) -function UTF8CharToByteIndex(UTF8Str: PChar; Len, CharIndex: PtrInt): PtrInt; inline; -procedure UTF8FixBroken(P: PChar); inline; -function UTF8CharacterStrictLength(P: PChar): integer; inline; -function UTF8CStringToUTF8String(SourceStart: PChar; SourceLen: PtrInt) : string; inline; -function UTF8Pos(const SearchForText, SearchInText: string): PtrInt; inline; -function UTF8Copy(const s: string; StartCharIndex, CharCount: PtrInt): string; inline; -procedure UTF8Delete(var s: String; StartCharIndex, CharCount: PtrInt); inline; -procedure UTF8Insert(const source: String; var s: string; StartCharIndex: PtrInt); inline; -function UTF8LowerCase(const s: String): String; -function UTF8UpperCase(const s: String): String; -function FindInvalidUTF8Character(p: PChar; Count: PtrInt; - StopOnNonASCII: Boolean = true): PtrInt; inline; -function ValidUTF8String(const s: String): String; inline; - -procedure AssignUTF8ListToAnsi(UTF8List, AnsiList: TStrings); - // Felipe: Don't substitute with calls to lazutf16 because lazutf16 includes // some initialization code and tables, which are not necessary for the LCL function UTF16CharacterLength(p: PWideChar): integer; @@ -368,30 +334,61 @@ function UTF16CharacterToUnicode(p: PWideChar; out CharLen: integer): Cardinal; function UnicodeToUTF16(u: cardinal): UTF16String; +{$IFnDEF DisableWrapperFunctions} +function UTF8CharacterLength(p: PChar): integer; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8Length(const s: string): PtrInt; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8Length(p: PChar; ByteCount: PtrInt): PtrInt; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8CharacterToUnicode(p: PChar; out CharLen: integer): Cardinal; inline; deprecated 'Use the function in LazUTF8 unit'; +function UnicodeToUTF8(u: cardinal; Buf: PChar): integer; inline; deprecated 'Use the function in LazUTF8 unit'; +function UnicodeToUTF8SkipErrors(u: cardinal; Buf: PChar): integer; inline; deprecated 'Use the function in LazUTF8 unit'; +function UnicodeToUTF8(u: cardinal): shortstring; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8ToDoubleByteString(const s: string): string; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8ToDoubleByte(UTF8Str: PChar; Len: PtrInt; DBStr: PByte): PtrInt; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8FindNearestCharStart(UTF8Str: PChar; Len: integer; + BytePos: integer): integer; inline; deprecated 'Use the function in LazUTF8 unit'; +// find the n-th UTF8 character, ignoring BIDI +function UTF8CharStart(UTF8Str: PChar; Len, CharIndex: PtrInt): PChar; inline; deprecated 'Use the function in LazUTF8 unit'; +// find the byte index of the n-th UTF8 character, ignoring BIDI (byte len of substr) +function UTF8CharToByteIndex(UTF8Str: PChar; Len, CharIndex: PtrInt): PtrInt; inline; deprecated 'Use the function in LazUTF8 unit'; +procedure UTF8FixBroken(P: PChar); inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8CharacterStrictLength(P: PChar): integer; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8CStringToUTF8String(SourceStart: PChar; SourceLen: PtrInt) : string; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8Pos(const SearchForText, SearchInText: string): PtrInt; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8Copy(const s: string; StartCharIndex, CharCount: PtrInt): string; inline; deprecated 'Use the function in LazUTF8 unit'; +procedure UTF8Delete(var s: String; StartCharIndex, CharCount: PtrInt); inline; deprecated 'Use the function in LazUTF8 unit'; +procedure UTF8Insert(const source: String; var s: string; StartCharIndex: PtrInt); inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8LowerCase(const s: String): String; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8UpperCase(const s: String): String; inline; deprecated 'Use the function in LazUTF8 unit'; +function FindInvalidUTF8Character(p: PChar; Count: PtrInt; + StopOnNonASCII: Boolean = true): PtrInt; inline; deprecated 'Use the function in LazUTF8 unit'; +function ValidUTF8String(const s: String): String; inline; deprecated 'Use the function in LazUTF8 unit'; + +procedure AssignUTF8ListToAnsi(UTF8List, AnsiList: TStrings); inline; deprecated 'Use the function in LazUTF8 unit'; + //compare functions -function UTF8CompareStr(const S1, S2: String): Integer; -function UTF8CompareText(const S1, S2: String): Integer; +function UTF8CompareStr(const S1, S2: String): Integer; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF8CompareText(const S1, S2: String): Integer; inline; deprecated 'Use the function in LazUTF8 unit'; type TConvertResult = LazUTF8.TConvertResult; - TConvertOption = LazUTF8.TConvertOption; TConvertOptions = LazUTF8.TConvertOptions; function ConvertUTF8ToUTF16(Dest: PWideChar; DestWideCharCount: SizeUInt; Src: PChar; SrcCharCount: SizeUInt; Options: TConvertOptions; - out ActualWideCharCount: SizeUInt): TConvertResult; + out ActualWideCharCount: SizeUInt): TConvertResult; inline; deprecated 'Use the function in LazUTF8 unit'; function ConvertUTF16ToUTF8(Dest: PChar; DestCharCount: SizeUInt; Src: PWideChar; SrcWideCharCount: SizeUInt; Options: TConvertOptions; - out ActualCharCount: SizeUInt): TConvertResult; + out ActualCharCount: SizeUInt): TConvertResult; inline; deprecated 'Use the function in LazUTF8 unit'; -function UTF8ToUTF16(const S: AnsiString): UTF16String; -function UTF16ToUTF8(const S: UTF16String): AnsiString; +function UTF8ToUTF16(const S: AnsiString): UTF16String; inline; deprecated 'Use the function in LazUTF8 unit'; +function UTF16ToUTF8(const S: UTF16String): AnsiString; inline; deprecated 'Use the function in LazUTF8 unit'; // locale -procedure LCLGetLanguageIDs(var Lang, FallbackLang: String); +procedure LCLGetLanguageIDs(var Lang, FallbackLang: String); inline; deprecated 'Use function LazGetLanguageIDs in LazUTF8 unit'; +{$ENDIF DisableWrapperFunctions} // identifier function CreateFirstIdentifier(const Identifier: string): string; @@ -498,10 +495,55 @@ end; end; -function GetSpecialShortCutName(ShortCut: TShortCut): string; +function GetSpecialShortCutName(Key: integer): string; begin - // ToDo Result := ''; + case Key of + 3: Result := 'Cancel'; //generated by Ctrl+Break + 12: Result := 'NumClear'; //generated by Num5 (NumLock off) + 19: Result := 'Break'; + 20: Result := 'CapsLock'; + 93: Result := 'PopUp'; //PC, near right Ctrl + 106: Result := 'NumMul'; + 107: Result := 'NumPlus'; + 109: Result := 'NumMinus'; + 110: Result := 'NumDot'; + 111: Result := 'NumDiv'; + 144: Result := 'NumLock'; + 145: Result := 'ScrollLock'; + 186: Result := ';'; + 187: Result := '='; + 188: Result := ','; + 189: Result := '-'; + 190: Result := '.'; + 191: Result := '/'; + 192: Result := '`'; //near tilde + 219: Result := '['; + 220: Result := '\'; //right \ + 221: Result := ']'; + 222: Result := ''''; + 226: Result := '\'; //left \ + + //Windows keyboard special: + $A6: Result := 'BrowserBack'; + $A7: Result := 'BrowserForward'; + $A8: Result := 'BrowserRefresh'; + $A9: Result := 'BrowserStop'; + $AA: Result := 'BrowserSearch'; + $AB: Result := 'BrowserFav'; + $AC: Result := 'BrowserHome'; + $AD: Result := 'VolumeMute'; + $AE: Result := 'VolumeDown'; + $AF: Result := 'VolumeUp'; + $B0: Result := 'MediaNext'; + $B1: Result := 'MediaPrev'; + $B2: Result := 'MediaStop'; + $B3: Result := 'MediaPlay'; + $B4: Result := 'LaunchMail'; + $B5: Result := 'LaunchMedia'; + $B6: Result := 'LaunchApp1'; + $B7: Result := 'LaunchApp2'; + end; end; function CompareDebugLCLItemInfos(Data1, Data2: Pointer): integer; @@ -646,8 +688,8 @@ InitializeMenuKeyCaps; Key := ShortCut and $FF; case Key of - $08, $09: - Name := MenuKeyCaps[TMenuKeyCap(Ord(mkcBkSp) + Key - $08)]; + $08: Name := MenuKeyCaps[mkcBkSp]; //made code little nicer + $09: Name := MenuKeyCaps[mkcTab]; //made code little nicer $0D: Name := MenuKeyCaps[mkcEnter]; $1B: Name := MenuKeyCaps[mkcEsc]; $20..$28: @@ -656,10 +698,10 @@ Name := MenuKeyCaps[TMenuKeyCap(Ord(mkcIns) + Key - $2D)]; $30..$39: Name := Chr(Key - $30 + Ord('0')); $41..$5A: Name := Chr(Key - $41 + Ord('A')); - $60..$69: Name := Chr(Key - $60 + Ord('0')); + $60..$69: Name := 'Num' + Chr(Key - $60 + Ord('0')); //Delphi differs it from 0..9 $70..$87: Name := 'F' + IntToStr(Key - $6F); else - Name := GetSpecialShortCutName(ShortCut); + Name := GetSpecialShortCutName(Key); //need Key, not shortcut end; if Name <> '' then begin @@ -732,9 +774,9 @@ sTempText: string; begin Result := False; - sTempText := UTF8Copy(sCompareText, 1, iStart); + sTempText := LazUTF8.UTF8Copy(sCompareText, 1, iStart); if not bCaseSensitive then - sTempText := UTF8UpperCase(sTempText); + sTempText := LazUTF8.UTF8UpperCase(sTempText); if (sTempText = sPrefix) then begin ResultText := sCompareText; @@ -751,9 +793,9 @@ if (sText = '') then Exit;//Everything is compatible with nothing, Exit. if (iSelStart = 0) then Exit;//Cursor at beginning if (slTextList.Count = 0) then Exit;//No text list to search for idtenticals, Exit. - sPrefixText := UTF8Copy(sText, 1, iSelStart);//Get text from beginning to cursor position. + sPrefixText := LazUTF8.UTF8Copy(sText, 1, iSelStart);//Get text from beginning to cursor position. if not bCaseSensitive then - sPrefixText := UTF8UpperCase(sPrefixText); + sPrefixText := LazUTF8.UTF8UpperCase(sPrefixText); if bSearchAscending then begin for i := 0 to slTextList.Count - 1 do @@ -2469,6 +2511,7 @@ if High(ASkipTo) >= 0 then begin idx := 0; + Match := ''; HasEscape := False; if AnIgnoreCase then S := UpperCase(Source) @@ -2635,6 +2678,80 @@ Result := -1; end; +function UTF16CharacterLength(p: PWideChar): integer; +// returns length of UTF16 character in number of words +// The endianess of the machine will be taken. +begin + if p<>nil then begin + if (ord(p[0]) < $D800) or (ord(p[0]) > $DFFF) then + Result:=1 + else + Result:=2; + end else begin + Result:=0; + end; +end; + +function UTF16Length(const s: UTF16String): PtrInt; +begin + Result:=UTF16Length(PWideChar(s),length(s)); +end; + +function UTF16Length(p: PWideChar; WordCount: PtrInt): PtrInt; +var + CharLen: LongInt; +begin + Result:=0; + while (WordCount>0) do begin + inc(Result); + CharLen:=UTF16CharacterLength(p); + inc(p,CharLen); + dec(WordCount,CharLen); + end; +end; + +function UTF16CharacterToUnicode(p: PWideChar; out CharLen: integer): Cardinal; +var + w1: cardinal; + w2: Cardinal; +begin + if p<>nil then begin + w1:=ord(p[0]); + if (w1 < $D800) or (w1 > $DFFF) then begin + // is 1 word character + Result:=w1; + CharLen:=1; + end else begin + // could be 2 word character + w2:=ord(p[1]); + if (w2>=$DC00) then begin + // is 2 word character + Result:=(w1-$D800) shl 10 + (w2-$DC00) + $10000; + CharLen:=2; + end else begin + // invalid character + Result:=w1; + CharLen:=1; + end; + end; + end else begin + Result:=0; + CharLen:=0; + end; +end; + +function UnicodeToUTF16(u: cardinal): UTF16String; +begin + // u should be <= $10FFFF to fit into UTF-16 + + if u < $10000 then + // Note: codepoints $D800 - $DFFF are reserved + Result:=system.widechar(u) + else + Result:=system.widechar($D800+((u - $10000) shr 10))+system.widechar($DC00+((u - $10000) and $3ff)); +end; + +{$IFnDEF DisableWrapperFunctions} function UTF8CharacterLength(p: PChar): integer; begin Result := LazUTF8.UTF8CharacterLength(p); @@ -2642,7 +2759,7 @@ function UTF8Length(const s: string): PtrInt; begin - Result:=UTF8Length(PChar(s),length(s)); + Result:=LazUTF8.UTF8Length(PChar(s),length(s)); end; function UTF8Length(p: PChar; ByteCount: PtrInt): PtrInt; @@ -2667,7 +2784,7 @@ function UnicodeToUTF8(u: cardinal): shortstring; begin - Result[0]:=chr(UnicodeToUTF8(u,@Result[1])); + Result[0]:=chr(LazUTF8.UnicodeToUTF8(u,@Result[1])); end; function UTF8ToDoubleByteString(const s: string): string; @@ -2767,80 +2884,6 @@ LazUTF8.AssignUTF8ListToAnsi(UTF8List, AnsiList); end; -function UTF16CharacterLength(p: PWideChar): integer; -// returns length of UTF16 character in number of words -// The endianess of the machine will be taken. -begin - if p<>nil then begin - if (ord(p[0]) < $D800) or (ord(p[0]) > $DFFF) then - Result:=1 - else - Result:=2; - end else begin - Result:=0; - end; -end; - -function UTF16Length(const s: UTF16String): PtrInt; -begin - Result:=UTF16Length(PWideChar(s),length(s)); -end; - -function UTF16Length(p: PWideChar; WordCount: PtrInt): PtrInt; -var - CharLen: LongInt; -begin - Result:=0; - while (WordCount>0) do begin - inc(Result); - CharLen:=UTF16CharacterLength(p); - inc(p,CharLen); - dec(WordCount,CharLen); - end; -end; - -function UTF16CharacterToUnicode(p: PWideChar; out CharLen: integer): Cardinal; -var - w1: cardinal; - w2: Cardinal; -begin - if p<>nil then begin - w1:=ord(p[0]); - if (w1 < $D800) or (w1 > $DFFF) then begin - // is 1 word character - Result:=w1; - CharLen:=1; - end else begin - // could be 2 word character - w2:=ord(p[1]); - if (w2>=$DC00) then begin - // is 2 word character - Result:=(w1-$D800) shl 10 + (w2-$DC00) + $10000; - CharLen:=2; - end else begin - // invalid character - Result:=w1; - CharLen:=1; - end; - end; - end else begin - Result:=0; - CharLen:=0; - end; -end; - -function UnicodeToUTF16(u: cardinal): UTF16String; -begin - // u should be <= $10FFFF to fit into UTF-16 - - if u < $10000 then - // Note: codepoints $D800 - $DFFF are reserved - Result:=system.widechar(u) - else - Result:=system.widechar($D800+((u - $10000) shr 10))+system.widechar($DC00+((u - $10000) and $3ff)); -end; - - {------------------------------------------------------------------------------ Name: UTF8CompareStr Params: S1, S2 - UTF8 encoded strings @@ -2955,6 +2998,7 @@ begin LazUTF8.LazGetLanguageIDs(Lang, FallbackLang); end; +{$ENDIF DisableWrapperFunctions} function CreateFirstIdentifier(const Identifier: string): string; // example: Ident59 becomes Ident1 diff -Nru lazarus-1.4.4+dfsg/lcl/lclstrconsts.pas lazarus-1.6+dfsg/lcl/lclstrconsts.pas --- lazarus-1.4.4+dfsg/lcl/lclstrconsts.pas 2015-03-01 21:07:29.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lclstrconsts.pas 2015-08-23 22:20:02.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: lclstrconsts.pas 48091 2015-03-01 21:07:29Z maxim $ } +{ $Id: lclstrconsts.pas 49706 2015-08-23 22:20:02Z juha $ } { /*************************************************************************** lclstrconsts.pas @@ -298,6 +298,8 @@ rsPickDate = 'Select a date'; rsSize = ' size '; rsModified = ' modified '; + rsDoCopy = 'Copy'; + rsDoPaste = 'Paste'; // ShellCtrls sShellCtrlsName = 'Name'; diff -Nru lazarus-1.4.4+dfsg/lcl/lcltranslator.pas lazarus-1.6+dfsg/lcl/lcltranslator.pas --- lazarus-1.4.4+dfsg/lcl/lcltranslator.pas 2015-01-06 00:14:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lcltranslator.pas 2015-11-02 21:47:06.000000000 +0000 @@ -35,8 +35,8 @@ interface uses - Classes, SysUtils, LResources, GetText, Controls, typinfo, FileUtil, LCLProc, - Translations, Forms; + Classes, SysUtils, LResources, GetText, Controls, typinfo, LazFileUtils, + Translations, Forms, LazUTF8; type @@ -67,12 +67,14 @@ FPOFile: TPOFile; public constructor Create(POFileName: string); + constructor Create(aPOFile: TPOFile); destructor Destroy; override; procedure TranslateStringProperty(Sender: TObject; const Instance: TPersistent; PropInfo: PPropInfo; var Content: string); override; end; procedure SetDefaultLang(Lang: string; Dir: string = ''; ForceUpdate: boolean = true); +function GetDefaultLang: String; implementation @@ -82,6 +84,9 @@ type TPersistentAccess = class(TPersistent); +var + DefaultLang: String = ''; + function FindLocaleFileName(LCExt: string; Lang: string; Dir: string): string; var T: string; @@ -92,6 +97,8 @@ LangShortID: string; AppDir,LCFileName,FullLCFileName: String; begin + DefaultLang := LangID; + if LangID <> '' then begin AppDir := ExtractFilePath(ParamStrUTF8(0)); @@ -134,6 +141,7 @@ {$ENDIF} //Let us search for reducted files LangShortID := copy(LangID, 1, 2); + Defaultlang := LangShortID; if Dir<>'' then begin @@ -218,6 +226,7 @@ end; Result := ''; + DefaultLang := ''; end; begin @@ -234,7 +243,7 @@ Lang := GetEnvironmentVariableUTF8('LANG'); if Lang = '' then - LCLGetLanguageIDs(Lang, T); + LazGetLanguageIDs(Lang, T); Result := GetLocaleFileName(Lang, LCExt, Dir); if Result <> '' then @@ -245,6 +254,7 @@ exit; Result := ''; + DefaultLang := ''; end; function GetIdentifierPath(Sender: TObject; @@ -422,6 +432,12 @@ FPOFile := TPOFile.Create(POFileName); end; +constructor TPOTranslator.Create(aPOFile: TPOFile); +begin + inherited Create; + FPOFile := aPOFile; +end; + destructor TPOTranslator.Destroy; begin FPOFile.Free; @@ -520,10 +536,18 @@ begin for i := 0 to Screen.CustomFormCount-1 do LocalTranslator.UpdateTranslation(Screen.CustomForms[i]); + for i := 0 to Screen.DataModuleCount-1 do + LocalTranslator.UpdateTranslation(Screen.DataModules[i]); end; end; end; +function GetDefaultLang: String; +begin + if DefaultLang = '' then SetDefaultLang(''); + GetDefaultLang := DefaultLang; +end; + finalization LRSTranslator.Free; diff -Nru lazarus-1.4.4+dfsg/lcl/lcltype.pp lazarus-1.6+dfsg/lcl/lcltype.pp --- lazarus-1.4.4+dfsg/lcl/lcltype.pp 2015-04-01 09:35:58.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lcltype.pp 2015-04-01 09:15:55.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: lcltype.pp 48568 2015-04-01 09:35:58Z mattias $ } +{ $Id: lcltype.pp 48567 2015-04-01 09:15:55Z mattias $ } { /*************************************************************************** LCLType.pp @@ -3211,6 +3211,7 @@ FCS_ISO_8859_9: result := 'FCS_ISO_8859_9'; FCS_ISO_8859_10: result := 'FCS_ISO_8859_10'; FCS_ISO_8859_15: result := 'FCS_ISO_8859_15'; + else result := ''; end; end; diff -Nru lazarus-1.4.4+dfsg/lcl/lclversion.pas lazarus-1.6+dfsg/lcl/lclversion.pas --- lazarus-1.4.4+dfsg/lcl/lclversion.pas 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lclversion.pas 2016-02-14 09:48:23.000000000 +0000 @@ -1,3 +1,4 @@ +{ $Id: lclversion.pas 51627 2016-02-14 09:48:23Z mattias $ } { /*************************************************************************** lclversion.pas @@ -32,11 +33,11 @@ const lcl_major = 1; - lcl_minor = 4; - lcl_release = 4; - lcl_patch = 0; + lcl_minor = 6; + lcl_release = 0; + lcl_patch = 4; lcl_fullversion = ((lcl_major * 100 + lcl_minor) * 100 + lcl_release) * 100 + lcl_patch; - lcl_version = '1.4.4.0'; + lcl_version = '1.6.0.4'; implementation diff -Nru lazarus-1.4.4+dfsg/lcl/ldocktree.pas lazarus-1.6+dfsg/lcl/ldocktree.pas --- lazarus-1.4.4+dfsg/lcl/ldocktree.pas 2013-09-27 06:00:50.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/ldocktree.pas 2015-03-24 17:52:23.000000000 +0000 @@ -311,7 +311,8 @@ end; end; -class function TDockHeader.FindPart(AHeaderRect: TRect; APoint: TPoint; AOrientation: TDockOrientation): TLazDockHeaderPart; +class function TDockHeader.FindPart(AHeaderRect: TRect; APoint: TPoint; + AOrientation: TDockOrientation): TLazDockHeaderPart; var SubRect: TRect; begin @@ -727,6 +728,7 @@ LeftTopControl: TControl; begin Result:=TFPList.Create; + LeftTopControl:=nil; // find the Parent if (ARect[akLeft]=ARect[akRight]) and (ARect[akLeft] is TWinControl) then diff -Nru lazarus-1.4.4+dfsg/lcl/lresources.pp lazarus-1.6+dfsg/lcl/lresources.pp --- lazarus-1.4.4+dfsg/lcl/lresources.pp 2015-08-26 12:28:36.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/lresources.pp 2015-08-26 09:07:27.000000000 +0000 @@ -34,7 +34,7 @@ Windows, {$ENDIF} Classes, SysUtils, Types, RtlConsts, FPCAdds, TypInfo, FileUtil, DynQueue, - LCLProc, LCLStrConsts, LazConfigStorage, LazUTF8Classes; + LCLProc, LCLStrConsts, LazConfigStorage, LazUTF8, LazUTF8Classes; {$DEFINE UseLRS} {$DEFINE UseRES} @@ -1944,6 +1944,7 @@ var L: Integer; begin + Result := ''; if NextValue in [dvaWString, dvaUTF8String] then begin ReadError('TDelphiReader.ReadString: WideString and UTF8String are not implemented yet'); //Result := ReadWideString; @@ -2285,6 +2286,7 @@ Result := SmallInt(w); end; vaInt32: Result := ReadLRSInteger(Input); + else Result := 0; end; end; @@ -2542,6 +2544,7 @@ ObjClassName, ObjName: String; ChildPos: LongInt; begin + ChildPos := 0; // Check for FilerFlags b := Input.ReadByte; if (b and $f0) = $f0 then begin @@ -2970,6 +2973,7 @@ ObjectName := ''; ObjectType := parser.TokenString; ParserNextToken; + ChildPos := 0; if parser.Token = ':' then begin ParserNextToken; parser.CheckToken(toSymbol); @@ -3547,8 +3551,7 @@ end; end; -function FloatToLFMStr(const Value: extended; Precision, Digits: Integer - ): string; +function FloatToLFMStr(const Value: extended; Precision, Digits: Integer): string; var P: Integer; TooSmall, TooLarge: Boolean; @@ -3558,7 +3561,11 @@ If (Precision = -1) or (Precision > 15) then Precision := 15; TooSmall := (Abs(Value) < 0.00001) and (Value>0.0); - if not TooSmall then begin + if TooSmall then begin + P := 0; + TooLarge := False; + end + else begin Str(Value:digits:precision, Result); P := Pos('.', Result); TooLarge :=(P > Precision + 1) or (Pos('E', Result)<>0); diff -Nru lazarus-1.4.4+dfsg/lcl/Makefile.fpc lazarus-1.6+dfsg/lcl/Makefile.fpc --- lazarus-1.4.4+dfsg/lcl/Makefile.fpc 2015-10-03 16:18:04.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/Makefile.fpc 2015-10-01 18:40:54.000000000 +0000 @@ -72,6 +72,7 @@ packages= [prerules] +DBG_OPTIONS= STATEFILE=Makefile.compiled ifeq ($(findstring $(OS_TARGET),win32 win64 wince),) NONWIN32=nonwin32 @@ -84,14 +85,12 @@ LCL_DISABLE_CHECKS=-dDisableChecks endif endif - -DBG_OPTIONS= ifeq ($(OS_TARGET),darwin) DBG_OPTIONS=-gw endif [compiler] -options=-gl -Sci $(LCL_DISABLE_CHECKS) $(DBG_OPTIONS) +options=-gl -Sic $(LCL_DISABLE_CHECKS) $(DBG_OPTIONS) unittargetdir=units/$(CPU_TARGET)-$(OS_TARGET) unitdir=../packager/units/$(CPU_TARGET)-$(OS_TARGET) ../components/lazutils/lib/$(CPU_TARGET)-$(OS_TARGET) . $(NONWIN32) forms widgetset includedir=include diff -Nru lazarus-1.4.4+dfsg/lcl/maps.pp lazarus-1.6+dfsg/lcl/maps.pp --- lazarus-1.4.4+dfsg/lcl/maps.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/maps.pp 2015-03-14 10:35:43.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: maps.pp 41387 2013-05-24 18:30:06Z juha $ } +{ $Id: maps.pp 48338 2015-03-14 10:35:43Z mattias $ } { ***************************************************************************** This file is part of the Lazarus Component Library (LCL) @@ -17,7 +17,7 @@ The ID can be signed or unsigned, with a size of 1,2,4,8,16 or 32 bytes The data can be of any (constant) size. } -unit maps; +unit Maps; {$mode objfpc}{$H+} diff -Nru lazarus-1.4.4+dfsg/lcl/maskedit.pp lazarus-1.6+dfsg/lcl/maskedit.pp --- lazarus-1.4.4+dfsg/lcl/maskedit.pp 2015-08-10 21:18:18.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/maskedit.pp 2015-08-05 11:22:25.000000000 +0000 @@ -220,6 +220,7 @@ procedure DeleteChars(NextChar : Boolean); protected function ApplyMaskToText(Value: TCaption): TCaption; + function CanShowTextHint: Boolean; override; function DisableMask(const NewText: String): Boolean; function RestoreMask(const NewText: String): Boolean; procedure RealSetText(const AValue: TCaption); override; @@ -279,6 +280,7 @@ property EditText; published property Align; + property Alignment; property Anchors; property AutoSelect; property AutoSize; @@ -330,6 +332,9 @@ property OnUTF8KeyPress; property EditMask; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; property SpaceChar; end; @@ -1509,6 +1514,16 @@ Result := S; end; +function TCustomMaskEdit.CanShowTextHint: Boolean; +begin + if IsMasked then + Result := False + else + Result := inherited CanShowTextHint; +end; + + + // Get the actual Text function TCustomMaskEdit.GetTextWithoutMask(Value: TCaption): TCaption; { diff -Nru lazarus-1.4.4+dfsg/lcl/pairsplitter.pas lazarus-1.6+dfsg/lcl/pairsplitter.pas --- lazarus-1.4.4+dfsg/lcl/pairsplitter.pas 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/pairsplitter.pas 2015-01-26 23:29:34.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: pairsplitter.pas 46338 2014-09-26 21:40:47Z juha $ } +{ $Id: pairsplitter.pas 47537 2015-01-26 23:29:34Z juha $ } { /*************************************************************************** pairsplitter.pas @@ -129,6 +129,7 @@ property Anchors; property BorderSpacing; property Constraints; + property Color; property Cursor; property Enabled; property OnMouseDown; diff -Nru lazarus-1.4.4+dfsg/lcl/postscriptcanvas.pas lazarus-1.6+dfsg/lcl/postscriptcanvas.pas --- lazarus-1.4.4+dfsg/lcl/postscriptcanvas.pas 2014-11-21 01:42:21.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/postscriptcanvas.pas 2015-11-06 18:35:28.000000000 +0000 @@ -42,9 +42,9 @@ interface uses - Classes, SysUtils, strutils, FileUtil, LazUTF8Classes, Math, Types, Graphics, + Classes, SysUtils, strutils, Math, Types, Graphics, LazFileUtils, Forms, GraphMath, GraphType, FPImage, IntfGraphics, Printers, LCLType, - LCLIntf, LCLProc, PostScriptUnicode; + LCLIntf, LCLProc, PostScriptUnicode, LazUTF8, LazUTF8Classes; Type @@ -133,18 +133,16 @@ function GetClipping: Boolean; override; procedure SetClipping(const AValue: boolean); override; - procedure BeginDoc; override; - procedure EndDoc; override; - procedure NewPage; override; - procedure DoMoveTo(X1,Y1: Integer); override; procedure DoLineTo(X1,Y1: Integer); override; public constructor Create(APrinter : TPrinter); override; destructor Destroy; override; - + procedure BeginDoc; override; + procedure EndDoc; override; + procedure NewPage; override; + procedure SaveToFile(aFileName : string); - procedure Polyline(Points: PPoint; NumPts: Integer); override; procedure PolyBezier(Points: PPoint; NumPts: Integer; @@ -826,7 +824,7 @@ //Init the style of line procedure TPostScriptPrinterCanvas.UpdateLineStyle; -Var st : string; +Var St : string; begin if (Pen.Style<>fcPenStyle) and (Pen.Style<>psClear) then begin @@ -836,6 +834,7 @@ psDot : St:='[1 3] 0'; psDashDot : St:='[5 2 2 2] 0'; psDashDotDot : St:='[5 2 2 2 2 2] 0'; + else St:=''; end; Write(Format('%s setdash',[St])); @@ -1114,8 +1113,7 @@ Self.WriteComment('Pushing and Setting current clip rect'); Self.Write('clipsave'); B := TxRectToBounds(FLazClipRect); - with B do - Self.Write(Format('%f %f %f %f rectclip',[fx, fy, fwidth, fheight],FFs)); + Write(Format('%f %f %f %f rectclip',[B.fx, B.fy, B.fwidth, B.fheight],FFs)); Include(FStatus, pcsClipSaved); end; @@ -1821,18 +1819,12 @@ ellipsePath:='matrix currentmatrix %f %f translate %f %f scale 0 0 1 %d %d arc setmatrix'; PixelsToPoints(RX,RY,r.fx,r.fy); - {choice between newpath and moveto beginning of arc - go with newpath for precision, does this violate any assumptions in code??? - write(format('%d %d moveto',[x1+rx, y1]),Lst # this also works} - with r do - begin - WriteB('newpath'); - WriteB(Format(ellipsePath,[pp1.fx+fx,pp1.fy-fy,fx,fy,90,180],FFs)); - WriteB(Format(ellipsePath,[pp1.fx+fx,pp2.fy+fy,fx,fy,180,270],FFs)); - WriteB(Format(ellipsePath,[pp2.fx-fx,pp2.fy+fy,fx,fy,270,360],FFs)); - WriteB(Format(ellipsePath,[pp2.fx-fx,pp1.fy-fy,fx,fy,0,90],FFs)); - WriteB('closepath'); - end; + WriteB('newpath'); + WriteB(Format(ellipsePath,[pp1.fx+r.fx,pp1.fy-r.fy,r.fx,r.fy,90,180],FFs)); + WriteB(Format(ellipsePath,[pp1.fx+r.fx,pp2.fy+r.fy,r.fx,r.fy,180,270],FFs)); + WriteB(Format(ellipsePath,[pp2.fx-r.fx,pp2.fy+r.fy,r.fx,r.fy,270,360],FFs)); + WriteB(Format(ellipsePath,[pp2.fx-r.fx,pp1.fy-r.fy,r.fx,r.fy,0,90],FFs)); + WriteB('closepath'); SetBrushFillPattern(True,True); @@ -2659,9 +2651,13 @@ LeftPos: longint; begin if LeftOffset <> DT_LEFT then - Points[0] := TextExtent(theLine); + Points[0] := TextExtent(theLine) + else begin + Points[0].cx := 0; + Points[0].cy := 0; + end; - case LeftOffset of + case LeftOffset of DT_LEFT: LeftPos := theRect.Left; DT_CENTER: @@ -2669,6 +2665,8 @@ 2 - Points[0].cX div 2; DT_RIGHT: LeftPos := theRect.Right - Points[0].cX; + else + LeftPos := 0; end; Pt := Point(0, 0); @@ -2677,7 +2675,7 @@ begin Pt.X := SavedRect.Left; Pt.Y := SavedRect.Top; - CalculateOffsetWithAngle(Font.Orientation, Pt.X, Pt.Y); + CalculateOffsetWithAngle(Font.Orientation, Pt.X, Pt.Y); end; TextOut(LeftPos + Pt.X, TopPos + Pt.Y, theLine); end; @@ -2700,6 +2698,8 @@ 2 - Points[0].cX div 2; DT_RIGHT: LeftPos := theRect.Right - Points[0].cX; + else + LeftPos := 0; end; Pt := Point(0, 0); diff -Nru lazarus-1.4.4+dfsg/lcl/postscriptunicode.pas lazarus-1.6+dfsg/lcl/postscriptunicode.pas --- lazarus-1.4.4+dfsg/lcl/postscriptunicode.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/postscriptunicode.pas 2015-03-14 10:35:43.000000000 +0000 @@ -8,7 +8,7 @@ Author: Jesus Reyes Aguilar } -unit postscriptunicode; +unit PostScriptUnicode; {$mode objfpc}{$H+} diff -Nru lazarus-1.4.4+dfsg/lcl/printers.pas lazarus-1.6+dfsg/lcl/printers.pas --- lazarus-1.4.4+dfsg/lcl/printers.pas 2014-09-14 17:41:24.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/printers.pas 2015-11-06 18:35:28.000000000 +0000 @@ -78,15 +78,15 @@ procedure SetXDPI(const AValue: Integer); procedure SetYDPI(const AValue: Integer); protected - procedure BeginDoc; virtual; - procedure NewPage; virtual; - procedure EndDoc; virtual; function GetLeftMargin: Integer; function GetTopMargin: Integer; function GetBottomMargin: Integer; function GetRightMargin: Integer; public constructor Create(APrinter: TPrinter); virtual; + procedure BeginDoc; virtual; + procedure NewPage; virtual; + procedure EndDoc; virtual; procedure Changing; override; property Printer : TPrinter read fPrinter; @@ -277,6 +277,7 @@ procedure SetPrinter(aName : String); Procedure RestoreDefaultBin; virtual; function Write(const Buffer; Count:Integer; var Written: Integer): Boolean; virtual; + function Write(const s: ansistring): boolean; overload; property PrinterIndex : integer read GetPrinterIndex write SetPrinterIndex; property PrinterName: string read GetPrinterName; @@ -483,6 +484,13 @@ result := False; end; +function TPrinter.Write(const S: ansistring): Boolean; overload; +var + Written: integer; +begin + Result := Write(S[1], Length(S), Written); +end; + //Return an Canvas object function TPrinter.GetCanvas: TCanvas; begin @@ -1003,28 +1011,28 @@ function TPaperSize.GetDefaultPaperRect(const AName: string; var APaperRect:TPaperRect): Integer; +var + PR: TPaperRect; begin Result := IndexOfDefaultPaper(AName); if Result>=0 then - with FInternalPapers[Result].PaperRect do begin - if FOwnedPrinter.Orientation in [poPortrait, poReversePortrait] then - begin - APaperRect.PhysicalRect := PhysicalRect; - APaperRect.WorkRect := WorkRect; - end else - begin - APaperRect.PhysicalRect.Left := 0; - APaperRect.PhysicalRect.Top := 0; - APaperRect.PhysicalRect.Right := PhysicalRect.Bottom; - APaperRect.Physicalrect.Bottom := PhysicalRect.Right; - - APaperRect.WorkRect.Left := WorkRect.Top; - APaperRect.WorkRect.Top := PhysicalRect.Right-WorkRect.Right; - APaperRect.WorkRect.Right := WorkRect.Bottom; - APaperRect.WorkRect.Bottom := PhysicalRect.Right-Workrect.Left; - end; + PR:=FInternalPapers[Result].PaperRect; + if FOwnedPrinter.Orientation in [poPortrait, poReversePortrait] then + begin + APaperRect.PhysicalRect := PR.PhysicalRect; + APaperRect.WorkRect := PR.WorkRect; + end else + begin + APaperRect.PhysicalRect.Left := 0; + APaperRect.PhysicalRect.Top := 0; + APaperRect.PhysicalRect.Right := PR.PhysicalRect.Bottom; + APaperRect.Physicalrect.Bottom := PR.PhysicalRect.Right; + + APaperRect.WorkRect.Left := PR.WorkRect.Top; + APaperRect.WorkRect.Top := PR.PhysicalRect.Right-PR.WorkRect.Right; + APaperRect.WorkRect.Right := PR.WorkRect.Bottom; + APaperRect.WorkRect.Bottom := PR.PhysicalRect.Right-PR.Workrect.Left; end; - end; function TPaperSize.GetPhysPaperHeight: Integer; @@ -1327,11 +1335,13 @@ end; function TPrinterCanvas.GetRightMargin: Integer; +var + PR: TPaperRect; begin if (fRightMargin=0) and (fPrinter<>nil) then begin - with fPrinter.Papersize.PaperRect do - Result := PhysicalRect.Right-WorkRect.Right; + PR:=fPrinter.Papersize.PaperRect; + Result := PR.PhysicalRect.Right-PR.WorkRect.Right; end else Result := fRightMargin; end; diff -Nru lazarus-1.4.4+dfsg/lcl/shellctrls.pas lazarus-1.6+dfsg/lcl/shellctrls.pas --- lazarus-1.4.4+dfsg/lcl/shellctrls.pas 2015-09-02 22:44:23.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/shellctrls.pas 2015-12-28 22:19:16.000000000 +0000 @@ -17,11 +17,13 @@ {$mode objfpc}{$H+} +{.$define debug_shellctrls} + interface uses Classes, SysUtils, Forms, Graphics, LCLType, AvgLvlTree, - ComCtrls, FileUtil, LazFileUtils, LazUtf8, LCLStrConsts; + ComCtrls, LCLProc, FileUtil, LazFileUtils, LazUtf8, LCLStrConsts; {$if defined(Windows) or defined(darwin)} {$define CaseInsensitiveFilenames} @@ -62,7 +64,9 @@ procedure SetRoot(const AValue: string); procedure SetShellListView(const Value: TCustomShellListView); protected + procedure DoCreateNodeClass(var NewNodeClass: TTreeNodeClass); override; procedure Loaded; override; + function CreateNode: TTreeNode; override; { Other methods specific to Lazarus } function PopulateTreeNodeWithFiles( ANode: TTreeNode; ANodePath: string): Boolean; @@ -182,12 +186,15 @@ { TCustomShellListView } + TCSLVFileAddedEvent = procedure(Sender: TObject; Item: TListItem) of object; + TCustomShellListView = class(TCustomListView) private FMask: string; FObjectTypes: TObjectTypes; FRoot: string; FShellTreeView: TCustomShellTreeView; + FOnFileAdded: TCSLVFileAddedEvent; { Setters and getters } procedure SetMask(const AValue: string); procedure SetShellTreeView(const Value: TCustomShellTreeView); @@ -196,6 +203,7 @@ { Methods specific to Lazarus } procedure PopulateWithRoot(); procedure Resize; override; + property OnFileAdded: TCSLVFileAddedEvent read FOnFileAdded write FOnFileAdded; public { Basic methods } constructor Create(AOwner: TComponent); override; @@ -295,12 +303,29 @@ property OnSelectItem; property OnStartDrag; property OnUTF8KeyPress; + property OnFileAdded; { TCustomShellListView properties } property ObjectTypes; property Root; property ShellTreeView; end; + { TShellTreeNode } + + TShellTreeNode = class(TTreeNode) + private + FFileInfo: TSearchRec; + FBasePath: String; + protected + procedure SetBasePath(ABasePath: String); + public + function ShortFilename: String; + function FullFilename: String; + function IsDirectory: Boolean; + + property BasePath: String read FBasePath; + end; + EShellCtrl = class(Exception); EInvalidPath = class(EShellCtrl); @@ -314,7 +339,9 @@ uses Windows; {$endif} - +const + //no need to localize, it's a message for the programmer + sShellTreeViewIncorrectNodeType = 'TShellTreeView: the newly created node is not a TShellTreeNode!'; function DbgS(OT: TObjectTypes): String; overload; begin @@ -326,40 +353,62 @@ Result := Result + ']'; end; +{ TFileItem : internal helper class used for temporarily storing info in an internal TStrings component} +type + { TFileItem } + TFileItem = class(TObject) + private + FFileInfo: TSearchRec; + FBasePath: String; + public + //more data to sort by size, date... etc + isFolder: Boolean; + constructor Create(const DirInfo: TSearchRec; ABasePath: String); + property FileInfo: TSearchRec read FFileInfo write FFileInfo; + end; -{ -uses ShlObj; - -// $I shellctrlswin32.inc -procedure PopulateTreeViewWithShell(ATreeView: TCustomShellTreeView); -var - ShellFolder: IShellFolder = nil; - Win32ObjectTypes: Integer; -// pidl: LPITEMIDLIST; - pidlParent: LPITEMIDLIST; +constructor TFileItem.Create(const DirInfo:TSearchRec; ABasePath: String); begin - SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, @pidl); + FFileInfo := DirInfo; + FBasePath:= ABasePath; + isFolder:=DirInfo.Attr and FaDirectory > 0; +end; - SHGetDesktopFolder(ShellFolder); - if ShellFolder = nil then Exit; - // Converts the control data into Windows constants +{ TShellTreeNode } - Win32ObjectTypes := 0; +procedure TShellTreeNode.SetBasePath(ABasePath: String); +begin + FBasePath := ABasePath; +end; - if otFolders in ATreeView.ObjectTypes then - Win32ObjectTypes := Win32ObjectTypes or SHCONTF_FOLDERS; - if otNonFolders in ATreeView.ObjectTypes then - Win32ObjectTypes := Win32ObjectTypes or SHCONTF_NONFOLDERS; +function TShellTreeNode.ShortFilename: String; +begin + Result := ExtractFileName(FFileInfo.Name); + if (Result = '') then Result := FFileInfo.Name; +end; - if otHidden in ATreeView.ObjectTypes then - Win32ObjectTypes := Win32ObjectTypes or SHCONTF_INCLUDEHIDDEN; +function TShellTreeNode.FullFilename: String; +begin + if (FBasePath <> '') then + Result := AppendPathDelim(FBasePath) + FFileInfo.Name + else + //root nodes + Result := FFileInfo.Name; + {$if defined(windows) and not defined(wince)} + if (Length(Result) = 2) and (Result[2] = DriveSeparator) then + Result := Result + PathDelim; + {$endif} +end; + +function TShellTreeNode.IsDirectory: Boolean; +begin + Result := ((FFileInfo.Attr and faDirectory) > 0); +end; - // Now gets the name of the desktop folder -} { TCustomShellTreeView } @@ -386,6 +435,14 @@ Value.ShellTreeView := Self; end; + +procedure TCustomShellTreeView.DoCreateNodeClass( + var NewNodeClass: TTreeNodeClass); +begin + NewNodeClass := TShellTreeNode; + inherited DoCreateNodeClass(NewNodeClass); +end; + procedure TCustomShellTreeView.Loaded; begin inherited Loaded; @@ -395,6 +452,14 @@ SetRoot(FInitialRoot); end; +function TCustomShellTreeView.CreateNode: TTreeNode; +begin + Result := inherited CreateNode; + //just in case someone attaches a new OnCreateNodeClass which does not return a TShellTreeNode (sub)class + if not (Result is TShellTreeNode) then + Raise EShellCtrl.Create(sShellTreeViewIncorrectNodeType); +end; + procedure TCustomShellTreeView.SetRoot(const AValue: string); var RootNode: TTreeNode; @@ -405,7 +470,7 @@ FInitialRoot := AValue; Exit; end; - //Delphi raises an unspecified exception in this case, but don't crash the IDE at designtime + //Delphi raises an exception in this case, but don't crash the IDE at designtime if not (csDesigning in ComponentState) and (AValue <> '') and not DirectoryExistsUtf8(ExpandFilenameUtf8(AValue)) then @@ -426,6 +491,9 @@ FRoot := ExpandFileNameUtf8(FRoot); //Set RootNode.Text to AValue so user can choose if text is fully qualified path or not RootNode := Items.AddChild(nil, AValue); + TShellTreeNode(RootNode).FFileInfo.Attr := FileGetAttr(FRoot); + TShellTreeNode(RootNode).FFileInfo.Name := FRoot; + TShellTreeNode(RootNode).SetBasePath(''); RootNode.HasChildren := True; RootNode.Expand(False); end; @@ -518,22 +586,6 @@ inherited Destroy; end; -type - { TFileItem } - TFileItem = class(TObject) - Name: string; - isFolder: Boolean; - //more data to sort by size, date... etc - constructor Create(const DirInfo: TSearchRec); - end; - -{ TFileItem } - -constructor TFileItem.Create(const DirInfo:TSearchRec); -begin - Name:=DirInfo.Name; - isFolder:=DirInfo.Attr and FaDirectory > 0; -end; function FilesSortAlphabet(p1, p2: Pointer): Integer; var @@ -541,7 +593,7 @@ begin f1:=TFileItem(p1); f2:=TFileItem(p2); - Result:=CompareText(f1.Name, f2.Name); + Result:=CompareText(f1.FileInfo.Name, f2.FileInfo.Name); end; function FilesSortFoldersFirst(p1,p2: Pointer): Integer; @@ -568,6 +620,8 @@ Finds all files/directories directly inside a directory. Does not recurse inside subdirectories. + AResult will contain TFileItem objects upon return, make sure to free them in the calling routine + AMask may contain multiple file masks separated by ; Don't add a final ; after the last mask. } @@ -577,7 +631,6 @@ DirInfo: TSearchRec; FindResult: Integer; IsDirectory, IsValidDirectory, IsHidden, AddFile: Boolean; - ObjectData: TObject; SearchStr: string; MaskStr: string; Files: TList; @@ -603,10 +656,16 @@ else MaskStr := AMask; // The string list implements support for multiple masks separated - // by semi-comma ";" + // by semi-colon ";" MaskStrings := TStringList.Create; FileTree:=TAvgLvlTree.Create(@STVCompareFiles); try + {$ifdef NotLiteralFilenames} + MaskStrings.CaseSensitive := False; + {$else} + MaskStrings.CaseSensitive := True; + {$endif} + MaskStrings.Delimiter := ';'; MaskStrings.DelimitedText := MaskStr; @@ -637,11 +696,6 @@ IsValidDirectory := (ShortFilename <> '.') and (ShortFilename <> '..'); IsHidden := (DirInfo.Attr and faHidden = faHidden); - //LinuxToWinAttr already does this in FF/FN - //{$IFDEF Unix} - //if (DirInfo.Name<>'') and (DirInfo.Name[1]='.') then - // IsHidden:=true; - //{$ENDIF} // First check if we show hidden files if IsHidden then AddFile := (otHidden in AObjectTypes) @@ -657,17 +711,14 @@ if AddFile then begin if not Assigned(Files) then begin - // Mark if it is a directory (ObjectData <> nil) - if IsDirectory then ObjectData := AResult - else ObjectData := nil; if FileTree.Find(Pointer(ShortFilename))=nil then begin // From patch from bug 17761: TShellListView Mask: duplicated items if mask is " *.ext;*.ext " FileTree.Add(Pointer(ShortFilename)); - AResult.AddObject(ShortFilename, ObjectData); + AResult.AddObject(ShortFilename, TFileItem.Create(DirInfo, ABaseDir)); end; end else - Files.Add ( TFileItem.Create(DirInfo)); + Files.Add ( TFileItem.Create(DirInfo, ABaseDir)); end; FindResult := FindNextUTF8(DirInfo); @@ -681,7 +732,6 @@ end; if Assigned(Files) then begin - Objectdata:=AResult; case AFileSortType of fstAlphabet: Files.Sort(@FilesSortAlphabet); @@ -691,15 +741,14 @@ for i:=0 to Files.Count-1 do begin FileItem:=TFileItem(Files[i]); - if (i < Files.Count - 1) and (TFileItem(Files[i]).Name = TFileItem(Files[i + 1]).Name) then + if (i < Files.Count - 1) and (TFileItem(Files[i]).FileInfo.Name = TFileItem(Files[i + 1]).FileInfo.Name) then + begin + FileItem.Free; Continue; // cause Files is sorted // From patch from bug 17761: TShellListView Mask: duplicated items if mask is " *.ext;*.ext " - if FileItem.isFolder then - AResult.AddObject(FileItem.Name, ObjectData) - else - AResult.AddObject(FileItem.Name, nil); + end; + AResult.AddObject(FileItem.FileInfo.Name, FileItem); end; - for i:=0 to Files.Count-1 do - TFileItem(Files[i]).Free; + //don't free the TFileItems here, they will freed by the calling routine Files.Free; end; @@ -759,11 +808,6 @@ (SR.Name <> '..')) then begin IsHidden := ((Attr and faHidden) > 0); - //LinuxToWinAttr already does this in FF/FN - //{$IFDEF Unix} - //if (SR.Name<>'') and (SR.Name[1]='.') then - // IsHidden := True; - //{$ENDIF} if not (IsHidden and (not ((otHidden in fObjectTypes)))) then begin Result := True; @@ -784,19 +828,21 @@ Files := TStringList.Create; try + Files.OwnsObjects := True; GetFilesInDir(ANodePath, AllFilesMask, FObjectTypes, Files, FFileSortType); Result := Files.Count > 0; for i := 0 to Files.Count - 1 do begin - NewNode := Items.AddChildObject(ANode, Files.Strings[i], nil); //@Files.Strings[i]); - // This marks if the node is a directory (not wether or not there are files in the folder!) - // We need this info (is it a folder?) elsewhere. + NewNode := Items.AddChildObject(ANode, Files.Strings[i], nil); + TShellTreeNode(NewNode).FFileInfo := TFileItem(Files.Objects[i]).FileInfo; + TShellTreeNode(NewNode).SetBasePath(TFileItem(Files.Objects[i]).FBasePath); + if (fObjectTypes * [otNonFolders] = []) then - NewNode.HasChildren := ((Files.Objects[i] <> nil) and + NewNode.HasChildren := (TShellTreeNode(NewNode).IsDirectory and HasSubDir(AppendpathDelim(ANodePath)+Files[i])) else - NewNode.HasChildren := (Files.Objects[i] <> nil); + NewNode.HasChildren := TShellTreeNode(NewNode).IsDirectory; end; finally Files.Free; @@ -805,14 +851,6 @@ procedure TCustomShellTreeView.PopulateWithBaseFiles; {$if defined(windows) and not defined(wince)} -const - DRIVE_UNKNOWN = 0; - DRIVE_NO_ROOT_DIR = 1; - DRIVE_REMOVABLE = 2; - DRIVE_FIXED = 3; - DRIVE_REMOTE = 4; - DRIVE_CDROM = 5; - DRIVE_RAMDISK = 6; var r: LongWord; Drives: array[0..128] of char; @@ -826,15 +864,16 @@ if r = 0 then Exit; if r > SizeOf(Drives) then Exit; // raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY)); - pDrive := Drives; while pDrive^ <> #0 do begin -// r := GetDriveType(pDrive); - NewNode := Items.AddChildObject(nil, ExcludeTrailingBackslash(pDrive), pDrive); + //Yes, we want to remove the backslash,so don't use ChompPathDelim here + TShellTreeNode(NewNode).FFileInfo.Name := ExcludeTrailingBackslash(pDrive); + //On NT platforms drive-roots really have these attributes + TShellTreeNode(NewNode).FFileInfo.Attr := faDirectory + faSysFile + faHidden; + TShellTreeNode(NewNode).SetBasePath(''); NewNode.HasChildren := True; - Inc(pDrive, 4); end; end; @@ -862,7 +901,6 @@ procedure TCustomShellTreeView.DoSelectionChanged; var ANode: TTreeNode; - IsDirectory, MustBeDirectory: Boolean; CurrentNodePath: String; begin inherited DoSelectionChanged; @@ -872,10 +910,8 @@ //You cannot rely on HasChildren here, because it can become FALSE when user //clicks the expand sign and folder is empty //Issue 0027571 - MustBeDirectory := not (otNonFolders in FObjectTypes); CurrentNodePath := ChompPathDelim(GetPathFromNode(ANode)); - IsDirectory := MustBeDirectory or DirectoryExistsUtf8(CurrentNodePath); - if IsDirectory then + if TShellTreeNode(ANode).IsDirectory then begin //Note: the folder may have been deleted in the mean time //an exception will be raised by the next line in that case @@ -883,7 +919,6 @@ end else begin - //At this point we cannot tell if item used to be a folder or a file if not FileExistsUtf8(CurrentNodePath) then Raise EShellCtrl.CreateFmt(sShellCtrlsSelectedItemDoesNotExists,[CurrentNodePath]); if Assigned(Anode.Parent) then @@ -896,27 +931,16 @@ function TCustomShellTreeView.GetPathFromNode(ANode: TTreeNode): string; begin - Result := ''; if Assigned(ANode) then begin - // Build the path. In the future use ANode.Data instead of ANode.Text - if (ANode.Parent = nil) and (GetRootPath <> '') then - //This node is RootNode and GetRooPath contains fully qualified root path - Result := '' - else - Result := ANode.Text; - while (ANode.Parent <> nil) do - begin - ANode := ANode.Parent; - if (ANode.Parent = nil) and (GetRootPath <> '') then - //Node.Text of rootnode may not be fully qualified - Result := GetRootPath + Result - else - Result := IncludeTrailingPathDelimiter(ANode.Text) + Result; - end; + Result := TShellTreeNode(ANode).FullFilename; + if TShellTreeNode(ANode).IsDirectory then + Result := AppendPathDelim(Result); if not FilenameIsAbsolute(Result) then Result := GetRootPath() + Result; // Include root directory - end; + end + else + Result := ''; end; function TCustomShellTreeView.GetSelectedNodePath: string; @@ -931,9 +955,16 @@ IsRoot: Boolean; begin if (Items.Count = 0) then Exit; - //writeln('GetFirstVisibleNode.Text = "',Items.GetFirstVisibleNode.Text,'"'); + {$ifdef debug_shellctrls} + debugln(['TCustomShellTreeView.Refresh: GetFirstVisibleNode.Text = "',Items.GetFirstVisibleNode.Text,'"']); + {$endif} + IsRoot := (ANode = nil) or ((ANode = Items.GetFirstVisibleNode) and (GetRootPath <> '')); - //writeln('IsRoot = ',IsRoot); + {$ifdef debug_shellctrls} + debugln(['IsRoot = ',IsRoot]); + {$endif} + + if (ANode = nil) and (GetRootPath <> '') then ANode := Items.GetFirstVisibleNode; if IsRoot then begin @@ -941,7 +972,11 @@ RootNodeText := ANode.Text //this may differ from FRoot, so don't use FRoot here else RootNodeText := GetRootPath; - //writeln('IsRoot = TRUE, RootNodeText = "',RootNodeText,'"'); + {$ifdef debug_shellctrls} + debugln(['IsRoot = TRUE, RootNodeText = "',RootNodeText,'"']); + {$endif} + + FRoot := #0; //invalidate FRoot SetRoot(RootNodeText); //re-initialize the entire tree end @@ -994,17 +1029,21 @@ begin Result := False; Attr := FileGetAttrUtf8(Fn); - //writeln('TCustomShellTreeView.SetPath.Exists: Attr = ', Attr); + {$ifdef debug_shellctrls} + debugln(['TCustomShellTreeView.SetPath.Exists: Attr = ', Attr]); + {$endif} if (Attr = -1) then Exit; if not (otNonFolders in FObjectTypes) then Result := ((Attr and faDirectory) > 0) else Result := True; - //writeln('TCustomShellTreeView.SetPath.Exists: Result = ',Result); + {$ifdef debug_shellctrls} + debugln(['TCustomShellTreeView.SetPath.Exists: Result = ',Result]); + {$endif} end; function PathIsDriveRoot({%H-}Path: String): Boolean; {$if not (defined(windows) and not defined(wince))}inline;{$endif} - //At least Win7 reports faHidden on all physical drive-roots (e.g. C:\) + //WinNT filesystem reports faHidden on all physical drive-roots (e.g. C:\) begin {$if defined(windows) and not defined(wince)} Result := (Length(Path) = 3) and @@ -1052,7 +1091,9 @@ //don't check if Fn now is "higher up the tree" than the current root if (RelPath = '') or ((Length(RelPath) > 1) and (RelPath[1] = '.') and (RelPath[2] = '.')) then begin - //writeln('Fn is higher: ',Fn); + {$ifdef debug_shellctrls} + debugln(['TCustomShellTreeView.SetPath.ContainsHidden: Fn is higher: ',Fn]); + {$endif} Continue; end; {$if defined(windows) and not defined(wince)} @@ -1062,7 +1103,9 @@ if (Attr <> -1) and ((Attr and faHidden) > 0) and not PathIsDriveRoot(Fn) then begin Result := True; - //writeln('TCustomShellTreeView.SetPath.Exists: a subdir is hidden: Result := False'); + {$ifdef debug_shellctrls} + debugln(['TCustomShellTreeView.SetPath.Exists: a subdir is hidden: Result := False']); + {$endif} Break; end; end; @@ -1076,8 +1119,9 @@ begin RelPath := ''; - //writeln('SetPath: GetRootPath = "',getrootpath,'"',' AValue=',AValue); - + {$ifdef debug_shellctrls} + debugln(['SetPath: GetRootPath = "',getrootpath,'"',' AValue=',AValue]); + {$endif} if (GetRootPath <> '') then //FRoot is already Expanded in SetRoot, just add PathDelim if needed FQRootPath := AppendPathDelim(GetRootPath) @@ -1086,12 +1130,11 @@ RootIsAbsolute := (FQRootPath = '') or (FQRootPath = PathDelim) or ((Length(FQRootPath) = 3) and (FQRootPath[2] = ':') and (FQRootPath[3] = PathDelim)); - //writeln('SetPath: FQRootPath = ',fqrootpath); - //writeln('SetPath: RootIsAbsolute = ',RootIsAbsolute); - - //IsRelPath := not FileNameIsAbsolute(AValue); - - //writeln('SetPath: IsRelPath = ',not FileNameIsAbsolute(AValue)); + {$ifdef debug_shellctrls} + debugln(['SetPath: FQRootPath = ',fqrootpath]); + debugln(['SetPath: RootIsAbsolute = ',RootIsAbsolute]); + debugln(['SetPath: FilenameIsAbsolute = ',FileNameIsAbsolute(AValue)]); + {$endif} if not FileNameIsAbsolute(AValue) then begin @@ -1123,11 +1166,12 @@ //RelPath := CreateRelativePath(AValue, FQRootPath, False); IsRelPath := (FQRootPath = '') or TryCreateRelativePath(AValue, FQRootPath, False, True, RelPath); - //writeln('TCustomShellTreeView.SetPath: '); - //writeln(' IsRelPath = ',IsRelPath); - //writeln(' RelPath = "',RelPath,'"'); - //writeln(' FQRootPath = "',FQRootPath,'"'); - + {$ifdef debug_shellctrls} + debugln('TCustomShellTreeView.SetPath: '); + debugln([' IsRelPath = ',IsRelPath]); + debugln([' RelPath = "',RelPath,'"']); + debugln([' FQRootPath = "',FQRootPath,'"']); + {$endif} if (not IsRelpath) or ((RelPath <> '') and ((Length(RelPath) > 1) and (RelPath[1] = '.') and (RelPath[2] = '.'))) then begin @@ -1138,10 +1182,15 @@ if (RelPath = '') and (FQRootPath = '') then RelPath := AValue; - //writeln('RelPath = ',RelPath); + {$ifdef debug_shellctrls} + debugln(['RelPath = ',RelPath]); + {$endif} + if (RelPath = '') then begin - //writeln('Root selected'); + {$ifdef debug_shellctrls} + debugln('Root selected'); + {$endif} Node := Items.GetFirstVisibleNode; if Assigned(Node) then begin @@ -1167,30 +1216,41 @@ Exit; end; - //for i := 0 to sl.Count - 1 do writeln('sl[',i:2,']="',sl[i],'"'); + {$ifdef debug_shellctrls} + for i := 0 to sl.Count - 1 do debugln(['sl[',i,']="',sl[i],'"']); + {$endif} + BeginUpdate; try Node := Items.GetFirstVisibleNode; - //if assigned(node) then writeln('GetFirstVisibleNode = ',GetAdjustedNodeText(Node)); - //Root node doesn't have Siblings in this case, we need one level deeper + {$ifdef debug_shellctrls} + if assigned(node) then debugln(['GetFirstVisibleNode = ',GetAdjustedNodeText(Node)]); + {$endif} + //Root node doesn't have Siblings in this case, we need one level down the tree if (GetRootPath <> '') and Assigned(Node) then begin - //writeln('Root node doesn''t have Siblings'); + {$ifdef debug_shellctrls} + debugln('Root node doesn''t have Siblings'); + {$endif} Node := Node.GetFirstVisibleChild; - //writeln('Node = ',GetAdjustedNodeText(Node)); - if RootIsAbsolute then sl.Delete(0); + {$ifdef debug_shellctrls} + debugln(['Node = ',GetAdjustedNodeText(Node)]); + {$endif} + //I don't know why I wrote this in r44893, but it seems to be wrong so I comment it out + //for the time being (2015-12-05: BB) + //if RootIsAbsolute then sl.Delete(0); end; for i := 0 to sl.Count-1 do begin - { - write('i=',i,' sl[',i,']=',sl[i],' '); - if Node <> nil then write('GetAdjustedNodeText = ',GetAdjustedNodeText(Node)) - else write('Node = NIL'); - writeln; - } + {$ifdef debug_shellctrls} + DbgOut(['i=',i,' sl[',i,']=',sl[i],' ']); + if Node <> nil then DbgOut(['GetAdjustedNodeText = ',GetAdjustedNodeText(Node)]) + else DbgOut('Node = NIL'); + debugln; + {$endif} while (Node <> Nil) and {$IF defined(CaseInsensitiveFilenames) or defined(NotLiteralFilenames)} (Utf8LowerCase(GetAdjustedNodeText(Node)) <> Utf8LowerCase(sl[i])) @@ -1199,13 +1259,15 @@ {$ENDIF} do begin - //write(' i=',i,' "',GetAdjustedNodeText(Node),' <> ',sl[i],' -> GetNextVisibleSibling -> '); + {$ifdef debug_shellctrls} + DbgOut([' i=',i,' "',GetAdjustedNodeText(Node),' <> ',sl[i],' -> GetNextVisibleSibling -> ']); + {$endif} Node := Node.GetNextVisibleSibling; - { - if Node <> nil then write('GetAdjustedNodeText = ',GetAdjustedNodeText(Node)) - else write('Node = NIL'); - writeln; - } + {$ifdef debug_shellctrls} + if Node <> nil then DbgOut(['GetAdjustedNodeText = ',GetAdjustedNodeText(Node)]) + else DbgOut('Node = NIL'); + debugln; + {$endif} end; if Node <> Nil then begin @@ -1321,6 +1383,7 @@ Files := TStringList.Create; try + Files.OwnsObjects := True; TCustomShellTreeView.GetFilesInDir(FRoot, FMask, FObjectTypes, Files); for i := 0 to Files.Count - 1 do @@ -1342,6 +1405,7 @@ NewItem.SubItems.Add(Format(sShellCtrlsMB, [IntToStr(CurFileSize div (1024 * 1024))])); // Third column - Type NewItem.SubItems.Add(ExtractFileExt(CurFileName)); + if Assigned(FOnFileAdded) then FOnFileAdded(Self,NewItem); end; Sort; finally @@ -1353,7 +1417,7 @@ begin inherited Resize; {$ifdef DEBUG_SHELLCTRLS} - WriteLn(':>TCustomShellListView.HandleResize'); + debugln(':>TCustomShellListView.HandleResize'); {$endif} // The correct check is with count, @@ -1378,9 +1442,9 @@ end; {$ifdef DEBUG_SHELLCTRLS} - WriteLn(':<TCustomShellListView.HandleResize C0.Width=', + debugln([':<TCustomShellListView.HandleResize C0.Width=', Column[0].Width, ' C1.Width=', Column[1].Width, - ' C2.Width=', Column[2].Width); + ' C2.Width=', Column[2].Width]); {$endif} end; diff -Nru lazarus-1.4.4+dfsg/lcl/stdctrls.pp lazarus-1.6+dfsg/lcl/stdctrls.pp --- lazarus-1.4.4+dfsg/lcl/stdctrls.pp 2015-04-11 07:04:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/stdctrls.pp 2015-11-29 18:45:53.000000000 +0000 @@ -25,7 +25,7 @@ uses Classes, SysUtils, types, LCLStrConsts, LCLType, LCLProc, LMessages, Graphics, - ExtendedStrings, LCLIntf, ActnList, Controls, TextStrings, + ExtendedStrings, LCLIntf, ActnList, Controls, TextStrings, LazUTF8, Forms, Menus, LResources; type @@ -707,6 +707,17 @@ FSelLength: integer; FSelStart: integer; FTextChangedByRealSetText: Boolean; + FTextHint: TTranslateString; + FTextHintShowing: Boolean; + FSettingTextHint: Boolean; + FTextHintFontColor: TColor; + FTextHintFontStyle: TFontStyles; + FSavedFontColor: TColor; + FSavedFontStyle: TFontStyles; + FSavedParentFont: Boolean; + procedure SetTextHint(AValue: TTranslateString); + procedure ShowTextHint; + procedure HideTextHint; procedure SetAlignment(const AValue: TAlignment); function GetCanUndo: Boolean; function GetModified: Boolean; @@ -717,6 +728,7 @@ procedure SetPasswordChar(const AValue: Char); protected class procedure WSRegisterClass; override; + function CanShowTextHint: Boolean; virtual; procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override; procedure CreateParams(var Params: TCreateParams); override; @@ -731,6 +743,7 @@ function GetSelLength: integer; virtual; function GetSelStart: integer; virtual; function GetSelText: string; virtual; + procedure Loaded; override; procedure SetCaretPos(const Value: TPoint); virtual; procedure SetEchoMode(Val: TEchoMode); virtual; procedure SetNumbersOnly(Value: Boolean); virtual; @@ -742,6 +755,7 @@ class function GetControlClassDefaultSize: TSize; override; procedure MouseUp(Button: TMouseButton; Shift:TShiftState; X, Y: Integer); override; procedure RealSetText(const AValue: TCaption); override; + function RealGetText: TCaption; override; procedure KeyUpAfterInterface(var Key: Word; Shift: TShiftState); override; procedure WMChar(var Message: TLMChar); message LM_CHAR; procedure CMWantSpecialKey(var Message: TCMWantSpecialKey); message CM_WANTSPECIALKEY; @@ -780,6 +794,9 @@ property TabOrder; property TabStop default true; property Text; + property TextHint: TTranslateString read FTextHint write SetTextHint; + property TextHintFontColor: TColor read FTextHintFontColor write FTextHintFontColor default clGrayText; + property TextHintFontStyle: TFontStyles read FTextHintFontStyle write FTextHintFontStyle default [fsItalic]; end; @@ -839,6 +856,7 @@ constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Append(const Value: String); + procedure ScrollBy(DeltaX, DeltaY: Integer); override; public property Lines: TStrings read FLines write SetLines; property HorzScrollBar: TMemoScrollBar read FHorzScrollBar write SetHorzScrollBar; @@ -913,6 +931,9 @@ property TabStop; property TabOrder; property Text; + property TextHint; + property TextHintFontColor; + property TextHintFontStyle; property Visible; end; @@ -1379,6 +1400,7 @@ constructor Create(TheOwner: TComponent); override; published property Align; + property Alignment; property Anchors; property AutoSize default True; property BidiMode; diff -Nru lazarus-1.4.4+dfsg/lcl/tmschema.pas lazarus-1.6+dfsg/lcl/tmschema.pas --- lazarus-1.4.4+dfsg/lcl/tmschema.pas 2009-06-10 08:14:03.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/tmschema.pas 2015-04-24 18:46:23.000000000 +0000 @@ -1601,13 +1601,13 @@ TOOLBARPARTS = longint; const - TP_BUTTON = 1; - TP_DROPDOWNBUTTON = 2; - TP_SPLITBUTTON = 3; - TP_SPLITBUTTONDROPDOWN = 4; - TP_SEPARATOR = 5; - TP_SEPARATORVERT = 6; - TP_DROPDOWNBUTTONGLYPH = 7; + TP_BUTTON = 1; // Button and Check button + TP_DROPDOWNBUTTON = 2; // Not utilized by the LCL + TP_SPLITBUTTON = 3; // Button with a combobox arrow on its right side to show a popup menu on click + TP_SPLITBUTTONDROPDOWN = 4; // This is the drop down button arrow + TP_SEPARATOR = 5; // Separator, Divider when ToolBar.IsVertical is False + TP_SEPARATORVERT = 6; // Separator, Divider when ToolBar.IsVertical is True + TP_DROPDOWNBUTTONGLYPH = 7; // Not utilized by the LCL type TOOLBARSTYLEPARTS = TOOLBARPARTS; diff -Nru lazarus-1.4.4+dfsg/lcl/translations.pas lazarus-1.6+dfsg/lcl/translations.pas --- lazarus-1.4.4+dfsg/lcl/translations.pas 2014-11-12 18:52:23.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/translations.pas 2015-12-14 17:32:02.000000000 +0000 @@ -86,8 +86,9 @@ interface uses - Classes, SysUtils, LCLProc, FileUtil, StringHashList, AvgLvlTree, - LConvEncoding, LazUTF8Classes, jsonparser, fpjson; + Classes, SysUtils, LCLProc, FileUtil, LazFileUtils, StringHashList, AvgLvlTree, + LConvEncoding, LazUTF8, LazUTF8Classes, + {$IF FPC_FULLVERSION>=30101}jsonscanner,{$ENDIF} jsonparser, fpjson; type TStringsType = ( @@ -174,8 +175,8 @@ // used by pochecker /pohelper public procedure CheckFormatArguments; - procedure CleanUp; // removes previous ID from non-fuzzy entries - // and badformat flags if appropriate + procedure CleanUp; { removes previous ID from non-fuzzy entries + and badformat flags if appropriate } property PoName: String read FPoName; property PoRename: String write FPoName; property NrTranslated: Integer read FNrTranslated; @@ -189,8 +190,8 @@ property Count: Integer read GetCount; property Header: TPOFileItem read FHeader; property FormatChecked: boolean read FFormatChecked; - end; + EPOFileError = class(Exception) public ResFileName: string; @@ -473,7 +474,7 @@ BasePOFile := TPOFile.Create; BasePOFile.Tag:=1; - // Update po file with lrt or/and rst RSTFiles + // Update po file with lrt,rst/rsj of RSTFiles for i:=0 to RSTFiles.Count-1 do begin Filename:=RSTFiles[i]; if (CompareFileExt(Filename,'.lrt')=0) or @@ -1151,9 +1152,9 @@ procedure TPOFile.UpdateStrings(InputLines: TStrings; SType: TStringsType); var - i,j,n: integer; + i, j, n: integer; p: LongInt; - Identifier, Value,Line: string; + Identifier, Value, Line: string; Ch: Char; MultiLinedValue: boolean; @@ -1169,22 +1170,83 @@ p := 1; end; - procedure UpdateFromRsj; + procedure NormalizeValue; + begin + if MultiLinedValue then begin + // check that we end on lineending, multilined + // resource strings from rst usually do not end + // in lineending, fix here. + if not (Value[Length(Value)] in [#13,#10]) then + Value := Value + LineEnding; + + //treat #10#13 sequences as #13#10 for consistency, + //e.g. #10#13#13#13#10#13#10 should become #13#10#13#13#10#13#10 + p:=2; + while p<=Length(Value) do begin + if (Value[p]=#13) and (Value[p-1]=#10) then begin + Value[p]:=#10; + Value[p-1]:=#13; + end; + // further analysis shouldn't affect found #13#10 pair + if (Value[p]=#10) and (Value[p-1]=#13) then + inc(p); + inc(p); + end; + Value := AdjustLineBreaks(Value); + end; + // po requires special characters as #number + p:=1; + while p<=length(Value) do begin + j := UTF8CharacterLength(pchar(@Value[p])); + if (j=1) and (Value[p] in [#0..#9,#11,#12,#14..#31,#127..#255]) then + Value := copy(Value,1,p-1)+'#'+IntToStr(ord(Value[p]))+copy(Value,p+1,length(Value)) + else + inc(p,j); + end; + end; + + procedure UpdateFromRSJ; var Parser: TJSONParser; - JsonItems: TJSONArray; + JsonItems, SourceBytes: TJSONArray; JsonData, JsonItem: TJSONObject; - I: Integer; + K, L: Integer; + Data: TJSONData; begin - Parser := TJSONParser.Create(InputLines.Text); + Parser := TJSONParser.Create(InputLines.Text{$IF FPC_FULLVERSION>=30101},jsonscanner.DefaultOptions{$ENDIF}); try JsonData := Parser.Parse as TJSONObject; try JsonItems := JsonData.Arrays['strings']; - for I := 0 to JsonItems.Count - 1 do + for K := 0 to JsonItems.Count - 1 do begin - JsonItem := JsonItems.Items[I] as TJSONObject; - UpdateItem(JsonItem.Get('name'), JsonItem.Get('value')); + MultiLinedValue := false; + JsonItem := JsonItems.Items[K] as TJSONObject; + Data:=JsonItem.Find('sourcebytes'); + if Data is TJSONArray then begin + // fpc 3.1.1 writes the bytes of the source without encoding change + // while 'value' contains the string encoded as UTF16 with \u hexcodes. + SourceBytes := TJSONArray(Data); + SetLength(Value,SourceBytes.Count); + for L := 1 to length(Value) do begin + Value[L] := chr(SourceBytes.Integers[L-1]); + if Value[L] in [#13,#10] then + MultilinedValue := True; + end; + end else begin + Value:=JsonItem.Get('value'); + // check if the value we got is multilined + L := 1; + while (L<=Length(Value)) and (MultiLinedValue = false) do begin + if Value[L] in [#13,#10] then + MultilinedValue := True; + inc(L); + end; + end; + if Value<>'' then begin + NormalizeValue; + UpdateItem(JsonItem.Get('name'), Value); + end; end; finally JsonData.Free; @@ -1198,11 +1260,13 @@ ClearModuleList; UntagAll; if SType = stRsj then - UpdateFromRsj + // .rsj file + UpdateFromRSJ else begin - // for each string in lrt/rst list check if it's already in PO + // for each string in lrt/rst/rsj list check if it's already in PO // if not add it + MultilinedValue := false; Value := ''; Identifier := ''; i := 0; @@ -1215,14 +1279,14 @@ // empty line else if SType=stLrt then begin - + // .lrt file p:=Pos('=',Line); Value :=copy(Line,p+1,n-p); //if p=0, that's OK, all the string Identifier:=copy(Line,1,p-1); UpdateItem(Identifier, Value); end else begin - // rst file + // .rst file if Line[1]='#' then begin // rst file: comment @@ -1275,38 +1339,7 @@ end; if Value<>'' then begin - if MultiLinedValue then begin - // check that we end on lineending, multilined - // resource strings from rst usually do not end - // in lineending, fix here. - if not (Value[Length(Value)] in [#13,#10]) then - Value := Value + LineEnding; - - //treat #10#13 sequences as #13#10 for consistency, - //e.g. #10#13#13#13#10#13#10 should become #13#10#13#13#10#13#10 - p:=2; - while p<=Length(Value) do begin - if (Value[p]=#13) and (Value[p-1]=#10) then begin - Value[p]:=#10; - Value[p-1]:=#13; - end; - // further analysis shouldn't affect found #13#10 pair - if (Value[p]=#10) and (Value[p-1]=#13) then - inc(p); - inc(p); - end; - Value := AdjustLineBreaks(Value); - end; - // po requires special characters as #number - p:=1; - while p<=length(Value) do begin - j := UTF8CharacterLength(pchar(@Value[p])); - if (j=1) and (Value[p] in [#0..#9,#11,#12,#14..#31,#127..#255]) then - Value := copy(Value,1,p-1)+'#'+IntToStr(ord(Value[p]))+copy(Value,p+1,length(Value)) - else - inc(p,j); - end; - + NormalizeValue; UpdateItem(Identifier, Value); end; diff -Nru lazarus-1.4.4+dfsg/lcl/utrace.pp lazarus-1.6+dfsg/lcl/utrace.pp --- lazarus-1.4.4+dfsg/lcl/utrace.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/utrace.pp 2015-07-04 23:08:00.000000000 +0000 @@ -14,7 +14,7 @@ interface uses - sysutils, FileUtil; + sysutils, LazFileUtils; type TAssertErrorAddrType = Pointer; diff -Nru lazarus-1.4.4+dfsg/lcl/valedit.pas lazarus-1.6+dfsg/lcl/valedit.pas --- lazarus-1.4.4+dfsg/lcl/valedit.pas 2014-09-26 21:40:47.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/valedit.pas 2015-12-05 11:31:24.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, Controls, StdCtrls, SysUtils, Grids, LResources, Dialogs, LazUtf8, variants, LCLProc, - LCLType, ContNrs; + ContNrs, SysUtils, Classes, Variants, + LazUtf8, Controls, StdCtrls, Grids, LResources, Dialogs, LCLType; type @@ -798,11 +798,8 @@ NewInd, NewRow: Integer; Line: String; begin - if not ((KeyName = '') and (Value = '')) then begin - Line := Value; - Insert(Strings.NameValueSeparator, Line, 1); - Insert(KeyName, Line, 1); - end + if not ((KeyName = '') and (Value = '')) then + Line := KeyName + Strings.NameValueSeparator + Value else Line := ''; if (Row > Strings.Count) or ((Row - FixedRows) >= Strings.Count) @@ -847,9 +844,7 @@ end else if (Length(Values) = 1) then AKey := Values[0]; - Insert(Strings.NameValueSeparator, AValue, 1); - Insert(AKey, AValue, 1); - Strings.InsertItem(Index, AValue); + Strings.InsertItem(Index, AKey + Strings.NameValueSeparator + AValue); end; procedure TValueListEditor.ExchangeColRow(IsColumn: Boolean; index, WithIndex: Integer); @@ -1190,7 +1185,10 @@ end; Result:=inherited GetDefaultEditor(Column); //Need this to be able to intercept VK_Delete in the editor - EditorOptions := EditorOptions or EO_HOOKKEYDOWN; + if (KeyDelete in KeyOptions) then + EditorOptions := EditorOptions or EO_HOOKKEYDOWN + else + EditorOptions := EditorOptions and (not EO_HOOKKEYDOWN); if Column=1 then begin ItemProp := nil; @@ -1367,7 +1365,7 @@ begin if (Index <> i) and (FStrings.Names[i] <> '') then begin - if (Utf8CompareText(FStrings.Names[i], NewValue) = 0) then + if (LazUTF8.Utf8CompareText(FStrings.Names[i], NewValue) = 0) then begin Result := False; ShowMessage(Format(rsVLEDuplicateKey,[NewValue, i + FixedRows])); diff -Nru lazarus-1.4.4+dfsg/lcl/widgetset/wscontrols.pp lazarus-1.6+dfsg/lcl/widgetset/wscontrols.pp --- lazarus-1.4.4+dfsg/lcl/widgetset/wscontrols.pp 2014-08-06 16:54:36.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/widgetset/wscontrols.pp 2015-11-29 18:45:53.000000000 +0000 @@ -135,6 +135,7 @@ class procedure Invalidate(const AWinControl: TWinControl); virtual; class procedure PaintTo(const AWinControl: TWinControl; ADC: HDC; X, Y: Integer); virtual; class procedure ShowHide(const AWinControl: TWinControl); virtual; //TODO: rename to SetVisible(control, visible) + class procedure ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); virtual; end; TWSWinControlClass = class of TWSWinControl; @@ -389,6 +390,11 @@ begin end; +class procedure TWSWinControl.ScrollBy(const AWinControl: TWinControl; DeltaX, DeltaY: integer); +begin + AWinControl.Invalidate; +end; + { TWSDragImageList } class function TWSDragImageList.BeginDrag(const ADragImageList: TDragImageList; diff -Nru lazarus-1.4.4+dfsg/lcl/widgetset/wsfactory.pas lazarus-1.6+dfsg/lcl/widgetset/wsfactory.pas --- lazarus-1.4.4+dfsg/lcl/widgetset/wsfactory.pas 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/widgetset/wsfactory.pas 2015-06-05 17:11:00.000000000 +0000 @@ -100,8 +100,6 @@ // Buttons function WSRegisterCustomBitBtn: Boolean; external name 'WSRegisterCustomBitBtn'; function WSRegisterCustomSpeedButton: Boolean; external name 'WSRegisterCustomSpeedButton'; -// Arrow -function WSRegisterArrow: Boolean; external name 'WSRegisterArrow'; // CheckLst function WSRegisterCustomCheckListBox: Boolean; external name 'WSRegisterCustomCheckListBox'; // Forms diff -Nru lazarus-1.4.4+dfsg/lcl/widgetset/wsforms.pp lazarus-1.6+dfsg/lcl/widgetset/wsforms.pp --- lazarus-1.4.4+dfsg/lcl/widgetset/wsforms.pp 2014-04-28 20:17:56.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/widgetset/wsforms.pp 2015-12-27 20:27:38.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: wsforms.pp 44840 2014-04-28 20:17:56Z martin $} +{ $Id: wsforms.pp 51056 2015-12-27 20:27:38Z ondrej $} { ***************************************************************************** * WSForms.pp * @@ -49,8 +49,7 @@ TWSScrollingWinControlClass = class of TWSScrollingWinControl; TWSScrollingWinControl = class(TWSWinControl) published - class procedure ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); virtual; + // procedure ScrollBy is moved to TWSWinControl. end; { TWSScrollBox } @@ -86,8 +85,9 @@ class procedure SetFormStyle(const AForm: TCustomform; const AFormStyle, AOldFormStyle: TFormStyle); virtual; class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); virtual; class procedure ShowModal(const ACustomForm: TCustomForm); virtual; - class procedure SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); virtual; + class procedure SetModalResult(const ACustomForm: TCustomForm; ANewValue: TModalResult); virtual; + class procedure SetRealPopupParent(const ACustomForm: TCustomForm; + const APopupParent: TCustomForm); virtual; class procedure SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar); virtual; class procedure SetZPosition(const AWinControl: TWinControl; const APosition: TWSZPosition); virtual; class function GetDefaultColor(const AControl: TControl; const ADefaultColorType: TDefaultColorType): TColor; override; @@ -138,14 +138,6 @@ implementation -{ TWSScrollingWinControl } - -class procedure TWSScrollingWinControl.ScrollBy(const AWinControl: TScrollingWinControl; - const DeltaX, DeltaY: integer); -begin - AWinControl.Invalidate; -end; - { TWSCustomForm } class procedure TWSCustomForm.CloseModal(const ACustomForm: TCustomForm); @@ -200,8 +192,15 @@ begin end; -class procedure TWSCustomForm.SetPopupParent(const ACustomForm: TCustomForm; - const APopupMode: TPopupMode; const APopupParent: TCustomForm); +// This needs implementing only if the TWSCustomForm.ShowModal implementation +// is fully blocking (which it shouldn't be ideally) +class procedure TWSCustomForm.SetModalResult(const ACustomForm: TCustomForm; + ANewValue: TModalResult); +begin +end; + +class procedure TWSCustomForm.SetRealPopupParent( + const ACustomForm: TCustomForm; const APopupParent: TCustomForm); begin end; diff -Nru lazarus-1.4.4+dfsg/lcl/widgetset/wsgrids.pp lazarus-1.6+dfsg/lcl/widgetset/wsgrids.pp --- lazarus-1.4.4+dfsg/lcl/widgetset/wsgrids.pp 2015-05-06 22:19:46.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/widgetset/wsgrids.pp 2015-12-17 10:51:30.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: wsgrids.pp 48947 2015-05-06 22:19:46Z maxim $} +{ $Id: wsgrids.pp 50855 2015-12-17 10:51:30Z ondrej $} { ***************************************************************************** * WSGrids.pp * @@ -39,7 +39,7 @@ // To get as little as posible circles, // uncomment only when needed for registration //////////////////////////////////////////////////// - LCLType, Controls, StdCtrls, Grids, + LCLType, Types, Controls, StdCtrls, Grids, LazUTF8, Graphics, //////////////////////////////////////////////////// WSLCLClasses, WSControls, WSFactory; @@ -50,6 +50,8 @@ published class procedure SendCharToEditor(AEditor:TWinControl; Ch: TUTF8Char); virtual; class function InvalidateStartY(const FixedHeight, RowOffset: Integer): integer; virtual; + class function GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; virtual; end; TWSCustomGridClass = class of TWSCustomgrid; @@ -59,7 +61,7 @@ implementation uses - LCLIntf, LCLProc; + LCLIntf; type TCustomGridAccess=class(TCustomGrid) @@ -106,7 +108,16 @@ EditorTextChanged(Col, Row, GMsg.Value); end; -class function TWSCustomGrid.InvalidateStartY(const FixedHeight, RowOffset: Integer): Integer; +class function TWSCustomGrid.GetEditorBoundsFromCellRect(ACanvas: TCanvas; + const ACellRect: TRect; const AColumnLayout: TTextLayout): TRect; +begin + Result := ACellRect; + Dec(Result.Right); + Dec(Result.Bottom); +end; + +class function TWSCustomGrid.InvalidateStartY(const FixedHeight, + RowOffset: Integer): integer; begin result := FixedHeight; end; diff -Nru lazarus-1.4.4+dfsg/lcl/widgetset/wsproc.pp lazarus-1.6+dfsg/lcl/widgetset/wsproc.pp --- lazarus-1.4.4+dfsg/lcl/widgetset/wsproc.pp 2013-05-24 18:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/widgetset/wsproc.pp 2015-11-29 18:45:53.000000000 +0000 @@ -77,5 +77,4 @@ end; - end. diff -Nru lazarus-1.4.4+dfsg/lcl/xmlpropstorage.pas lazarus-1.6+dfsg/lcl/xmlpropstorage.pas --- lazarus-1.4.4+dfsg/lcl/xmlpropstorage.pas 2014-09-29 18:53:52.000000000 +0000 +++ lazarus-1.6+dfsg/lcl/xmlpropstorage.pas 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: xmlpropstorage.pas 46350 2014-09-29 18:53:52Z mattias $ } +{ $Id: xmlpropstorage.pas 49494 2015-07-04 23:08:00Z juha $ } { ***************************************************************************** This file is part of the Lazarus Component Library (LCL) @@ -15,8 +15,8 @@ uses - Classes, SysUtils, FileUtil, LCLProc, Forms, PropertyStorage, XMLConf, DOM, - XMLRead, XMLWrite, LazConfigStorage, lazutf8classes; + Classes, SysUtils, LCLProc, Forms, XMLConf, DOM, + XMLRead, XMLWrite, LazConfigStorage, LazUTF8, lazutf8classes; type { TPropStorageXMLConfig } diff -Nru lazarus-1.4.4+dfsg/localize.bat lazarus-1.6+dfsg/localize.bat --- lazarus-1.4.4+dfsg/localize.bat 2014-06-25 20:18:02.000000000 +0000 +++ lazarus-1.6+dfsg/localize.bat 2015-12-13 15:54:36.000000000 +0000 @@ -8,7 +8,7 @@ REM udating the translated .po files. REM REM This script -REM - converts all compiled .rst files to .po files, +REM - converts all compiled .rsj (.rst if .rsj is not found) files to .po files, REM - updates all translated xx.po files REM @@ -31,39 +31,81 @@ :SkipTools echo Updating language files ... +echo. echo on -@REM IDE -@set IDE_RST=units\%ArchOsWS%\LazarusIDEStrConsts.rst -tools\updatepofiles %IDE_RST% languages\lazaruside.po -@if exist %IDE_RST% echo RST found - -@REM Debugger dialogs -@set DBGD_RST=units\%ArchOsWS%\DebuggerStrConst.rst -tools\updatepofiles %DBGD_RST% languages\debuggerstrconst.po -@if exist %DBGD_RST% echo RST found - -@REM LazDataDesktop -@set LazDataDesktop_RST=tools\lazdatadesktop\lib\%ArchOS%\lazdatadeskstr.rst -tools\updatepofiles %LazDataDesktop_RST% tools\lazdatadesktop\languages\lazdatadesktop.po -@if exist %LazDataDesktop_RST% echo RST found - -@REM LazDoc -@set LazDoc_RST=doceditor\units\%ArchOS%\lazdemsg.rst -tools\updatepofiles %LazDoc_RST% doceditor\languages\lazde.po -@if exist %LazDoc_RST% echo RST found - -@REM LazExplorer -@set LazExplorer_RST=examples\lazresexplorer\lib\%ArchOS%\reconstsunit.rst -tools\updatepofiles %LazExplorer_RST% examples\lazresexplorer\languages\resexplorer.po -@if exist %LazExplorer_RST% echo RST found - -@REM LazReport editor sample -@set LREditor_RST=components\lazreport\samples\editor\maincalleditor.rst -if not exist %LREditor_RST% goto SkipLREditor -tools\updatepofiles %LREditor_RST% components\lazreport\samples\editor\languages\calleditorwithpkg.po +@echo Updating IDE +@set IDE_RSJ=units\%ArchOsWS%\LazarusIDEStrConsts.rsj +@if exist %IDE_RSJ% goto IDE_update +@echo RSJ file NOT found. Searching for RST. +@set IDE_RSJ=units\%ArchOsWS%\LazarusIDEStrConsts.rst +@if not exist %IDE_RSJ% goto SkipIDE +:IDE_update +@tools\updatepofiles %IDE_RSJ% languages\lazaruside.po +@echo Translation file %IDE_RSJ% found. +:SkipIDE +@echo. + +@echo Updating Debugger dialogs +@set DBGD_RSJ=units\%ArchOsWS%\DebuggerStrConst.rsj +@if exist %DBGD_RSJ% goto DBGD_update +@echo RSJ file NOT found. Searching for RST. +@set DBGD_RSJ=units\%ArchOsWS%\DebuggerStrConst.rst +@if not exist %DBGD_RSJ% goto SkipDBGD +:DBGD_update +@tools\updatepofiles %DBGD_RSJ% languages\debuggerstrconst.po +@echo Translation file %DBGD_RSJ% found. +:SkipDBGD +@echo. + +@echo Updating LazDataDesktop +@set LazDataDesktop_RSJ=tools\lazdatadesktop\lib\%ArchOS%\lazdatadeskstr.rsj +@if exist %LazDataDesktop_RSJ% goto LazDataDesktop_update +@echo RSJ file NOT found. Searching for RST. +@set LazDataDesktop_RSJ=tools\lazdatadesktop\lib\%ArchOS%\lazdatadeskstr.rst +@if not exist %LazDataDesktop_RSJ% goto SkipLazDataDesktop +:LazDataDesktop_update +@tools\updatepofiles %LazDataDesktop_RSJ% tools\lazdatadesktop\languages\lazdatadesktop.po +@echo Translation file %LazDataDesktop_RSJ% found. +:SkipLazDataDesktop +@echo. + +@echo Updating LazDoc +@set LazDoc_RSJ=doceditor\units\%ArchOS%\lazdemsg.rsj +@if exist %LazDoc_RSJ% goto LazDoc_update +@echo RSJ file NOT found. Searching for RST. +@set LazDoc_RSJ=doceditor\units\%ArchOS%\lazdemsg.rst +@if not exist %LazDoc_RSJ% goto SkipLazDoc +:LazDoc_update +@tools\updatepofiles %LazDoc_RSJ% doceditor\languages\lazde.po +@echo Translation file %LazDoc_RSJ% found. +:SkipLazDoc +@echo. + +@echo Updating LazExplorer +@set LazExplorer_RSJ=examples\lazresexplorer\lib\%ArchOS%\reconstsunit.rsj +@if exist %LazExplorer_RSJ% goto LazExplorer_update +@echo RSJ file NOT found. Searching for RST. +@set LazExplorer_RSJ=examples\lazresexplorer\lib\%ArchOS%\reconstsunit.rst +@if not exist %LazExplorer_RSJ% goto SkipLazExplorer +:LazExplorer_update +@tools\updatepofiles %LazExplorer_RSJ% examples\lazresexplorer\languages\resexplorer.po +@echo Translation file %LazExplorer_RSJ% found. +:SkipLazExplorer +@echo. + +@echo Updating LazReport editor sample +@set LREditor_RSJ=components\lazreport\samples\editor\maincalleditor.rsj +@if exist %LREditor_RSJ% goto LREditor_update +@echo RSJ file NOT found. Searching for RST. +@set LREditor_RSJ=components\lazreport\samples\editor\maincalleditor.rst +@if not exist %LREditor_RSJ% goto SkipLREditor +:LREditor_update +@tools\updatepofiles %LREditor_RSJ% components\lazreport\samples\editor\languages\calleditorwithpkg.po +@echo Translation file %LREditor_RSJ% found. :SkipLREditor +@echo. @goto Exit diff -Nru lazarus-1.4.4+dfsg/localize.sh lazarus-1.6+dfsg/localize.sh --- lazarus-1.4.4+dfsg/localize.sh 2014-06-25 20:18:02.000000000 +0000 +++ lazarus-1.6+dfsg/localize.sh 2015-12-13 15:54:36.000000000 +0000 @@ -27,6 +27,12 @@ fi fi +RSEXT="rst" +FPCVER=`fpc -iV` +if [ "$FPCVER" \> "2.7.0" ]; then + RSEXT="rsj" +fi + RSTFILES=( ". lazarusidestrconsts lazaruside" ". debuggerstrconst" @@ -44,9 +50,9 @@ RSTFILE=${LINE[1]} POFILE=${LINE[2]:-$RSTFILE} - RST=$(find $RSTDIR -name $RSTFILE.rst) + RST=$(find $RSTDIR -name $RSTFILE.$RSEXT) if [ -n "$RST" ]; then - RST=`find $RSTDIR -name $RSTFILE.rst | xargs ls -1t | head -1`; + RST=`find $RSTDIR -name $RSTFILE.$RSEXT | xargs ls -1t | head -1`; if [ -n "$RST" ]; then POFileFull=$RSTDIR/languages/$POFILE.po diff -Nru lazarus-1.4.4+dfsg/packager/adddirtopkgdlg.lfm lazarus-1.6+dfsg/packager/adddirtopkgdlg.lfm --- lazarus-1.4.4+dfsg/packager/adddirtopkgdlg.lfm 2012-09-13 06:39:56.000000000 +0000 +++ lazarus-1.6+dfsg/packager/adddirtopkgdlg.lfm 2015-05-18 22:31:43.000000000 +0000 @@ -1,111 +1,94 @@ object AddDirToPkgDialog: TAddDirToPkgDialog - Left = 305 - Height = 361 - Top = 261 - Width = 400 - ActiveControl = DirEdit + Left = 411 + Height = 348 + Top = 297 + Width = 454 + BorderStyle = bsDialog Caption = 'AddDirToPkgDialog' - ClientHeight = 361 - ClientWidth = 400 + ClientHeight = 348 + ClientWidth = 454 OnClose = FormClose OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object DirGroupBox: TGroupBox - Left = 0 - Height = 86 - Top = 0 - Width = 400 + Left = 6 + Height = 84 + Top = 6 + Width = 442 Align = alTop AutoSize = True + BorderSpacing.Around = 6 Caption = 'DirGroupBox' - ClientHeight = 65 - ClientWidth = 392 + ClientHeight = 63 + ClientWidth = 438 TabOrder = 0 - object DirEdit: TEdit - AnchorSideLeft.Control = DirGroupBox - AnchorSideTop.Control = DirGroupBox - AnchorSideRight.Control = DirButton - Left = 6 - Height = 25 - Top = 6 - Width = 354 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - TabOrder = 0 - Text = 'DirEdit' - end - object DirButton: TButton - AnchorSideTop.Control = DirEdit - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = DirGroupBox - AnchorSideRight.Side = asrBottom - Left = 360 - Height = 27 - Top = 5 - Width = 26 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - Caption = '...' - OnClick = DirButtonClick - TabOrder = 1 - end object SubDirCheckBox: TCheckBox - AnchorSideLeft.Control = DirGroupBox AnchorSideTop.Control = DirEdit AnchorSideTop.Side = asrBottom Left = 6 Height = 22 - Top = 37 - Width = 133 + Top = 35 + Width = 120 BorderSpacing.Around = 6 Caption = 'SubDirCheckBox' Checked = True State = cbChecked - TabOrder = 2 + TabOrder = 1 + end + object DirEdit: TDirectoryEdit + Left = 6 + Height = 23 + Top = 6 + Width = 426 + ShowHidden = False + ButtonWidth = 45 + NumGlyphs = 1 + Align = alTop + BorderSpacing.Around = 6 + MaxLength = 0 + TabOrder = 0 end end object IncludeGroupBox: TGroupBox - Left = 0 - Height = 118 - Top = 86 - Width = 400 + Left = 6 + Height = 112 + Top = 96 + Width = 442 Align = alTop AutoSize = True + BorderSpacing.Around = 6 Caption = 'IncludeGroupBox' - ClientHeight = 97 - ClientWidth = 392 + ClientHeight = 91 + ClientWidth = 438 TabOrder = 1 object IncludeRegExCheckBox: TCheckBox Left = 6 Height = 22 - Top = 41 - Width = 380 + Top = 35 + Width = 426 Align = alClient BorderSpacing.Around = 6 Caption = 'IncludeRegExCheckBox' - TabOrder = 0 + TabOrder = 1 end object IncludeFilterCombobox: TComboBox Left = 6 - Height = 29 + Height = 23 Top = 6 - Width = 380 + Width = 426 Align = alTop BorderSpacing.Around = 6 - ItemHeight = 0 - TabOrder = 1 + ItemHeight = 17 + TabOrder = 0 Text = 'IncludeFilterCombobox' end object OnlyTextCheckBox: TCheckBox Left = 6 Height = 22 - Top = 69 - Width = 380 + Top = 63 + Width = 426 Align = alBottom BorderSpacing.Around = 6 Caption = 'OnlyTextCheckBox' @@ -115,43 +98,44 @@ end end object ExcludeGroupBox: TGroupBox - Left = 0 - Height = 90 - Top = 204 - Width = 400 + Left = 6 + Height = 84 + Top = 214 + Width = 442 Align = alTop AutoSize = True + BorderSpacing.Around = 6 Caption = 'ExcludeGroupBox' - ClientHeight = 69 - ClientWidth = 392 + ClientHeight = 63 + ClientWidth = 438 TabOrder = 2 object ExcludeRegExCheckBox: TCheckBox Left = 6 Height = 22 - Top = 41 - Width = 380 + Top = 35 + Width = 426 Align = alClient BorderSpacing.Around = 6 Caption = 'ExcludeRegExCheckBox' - TabOrder = 0 + TabOrder = 1 end object ExcludeFilterCombobox: TComboBox Left = 6 - Height = 29 + Height = 23 Top = 6 - Width = 380 + Width = 426 Align = alTop BorderSpacing.Around = 6 - ItemHeight = 0 - TabOrder = 1 + ItemHeight = 17 + TabOrder = 0 Text = 'ExcludeFilterCombobox' end end object ButtonPanel1: TButtonPanel Left = 6 - Height = 39 - Top = 316 - Width = 388 + Height = 29 + Top = 313 + Width = 442 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' @@ -162,5 +146,6 @@ CancelButton.DefaultCaption = True TabOrder = 3 ShowButtons = [pbOK, pbCancel] + ShowBevel = False end end diff -Nru lazarus-1.4.4+dfsg/packager/adddirtopkgdlg.pas lazarus-1.6+dfsg/packager/adddirtopkgdlg.pas --- lazarus-1.4.4+dfsg/packager/adddirtopkgdlg.pas 2014-06-15 11:52:15.000000000 +0000 +++ lazarus-1.6+dfsg/packager/adddirtopkgdlg.pas 2015-07-07 15:35:28.000000000 +0000 @@ -25,12 +25,10 @@ interface uses - Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, - StdCtrls, ExtCtrls, ButtonPanel, - SynRegExpr, FileProcs, + Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, ButtonPanel, EditBtn, + SynRegExpr, FileProcs, LazFileUtils, // IDE - IDEWindowIntf, InputHistory, IDEProcs, - LazarusIDEStrConsts, PackageDefs; + IDEWindowIntf, IDEProcs, LazarusIDEStrConsts, PackageDefs; type @@ -38,6 +36,7 @@ TAddDirToPkgDialog = class(TForm) ButtonPanel1: TButtonPanel; + DirEdit: TDirectoryEdit; OnlyTextCheckBox: TCheckBox; ExcludeFilterCombobox: TComboBox; ExcludeRegExCheckBox: TCheckBox; @@ -46,13 +45,10 @@ IncludeRegExCheckBox: TCheckBox; IncludeGroupBox: TGroupBox; SubDirCheckBox: TCheckBox; - DirButton: TButton; DirGroupBox: TGroupBox; - DirEdit: TEdit; procedure ButtonPanel1CancelClick(Sender: TObject); procedure ButtonPanel1OkClick(Sender: TObject); - procedure DirButtonClick(Sender: TObject); - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private @@ -61,9 +57,7 @@ fIncludeFilterRE, fExcludeFilterRE: TRegExpr; procedure SetLazPackage(const AValue: TLazPackage); function GatherFiles(Directory: string; WithSubDirs: boolean; - OnlyTextFiles: boolean; - IncludeFilter: string; IncludeFilterRegEx: boolean; - ExcludeFilter: string; ExcludeFilterRegEx: boolean): boolean; + OnlyTextFiles: boolean): boolean; function UpdateFilter: boolean; public property LazPackage: TLazPackage read FLazPackage write SetLazPackage; @@ -123,7 +117,8 @@ end; ExcludeFilterCombobox.ItemIndex:=0; - IDEDialogLayoutList.ApplyLayout(Self,400,350); + // not needed for borderstyle dialog + //IDEDialogLayoutList.ApplyLayout(Self,400,350); fIncludeFilterRE:=TRegExpr.Create; fExcludeFilterRE:=TRegExpr.Create; @@ -143,30 +138,10 @@ procedure TAddDirToPkgDialog.ButtonPanel1OkClick(Sender: TObject); begin if not GatherFiles(DirEdit.Text,SubDirCheckBox.Checked, - OnlyTextCheckBox.Checked, - IncludeFilterCombobox.Text,IncludeRegExCheckBox.Checked, - ExcludeFilterCombobox.Text,ExcludeRegExCheckBox.Checked) then exit; + OnlyTextCheckBox.Checked) then exit; ModalResult:=mrOk; end; -procedure TAddDirToPkgDialog.DirButtonClick(Sender: TObject); -var - SelectDirectoryDialog: TSelectDirectoryDialog; -begin - SelectDirectoryDialog:=TSelectDirectoryDialog.Create(nil); - try - SelectDirectoryDialog.InitialDir:=LazPackage.Directory; - SelectDirectoryDialog.Options:=SelectDirectoryDialog.Options+[ofPathMustExist]; - InputHistories.ApplyFileDialogSettings(SelectDirectoryDialog); - if SelectDirectoryDialog.Execute then begin - DirEdit.Text:=SelectDirectoryDialog.FileName; - end; - InputHistories.StoreFileDialogSettings(SelectDirectoryDialog); - finally - SelectDirectoryDialog.Free; - end; -end; - procedure TAddDirToPkgDialog.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin IDEDialogLayoutList.SaveLayout(Self); @@ -180,9 +155,7 @@ end; function TAddDirToPkgDialog.GatherFiles(Directory: string; - WithSubDirs: boolean; OnlyTextFiles: boolean; IncludeFilter: string; - IncludeFilterRegEx: boolean; ExcludeFilter: string; - ExcludeFilterRegEx: boolean): boolean; + WithSubDirs: boolean; OnlyTextFiles: boolean): boolean; function FileCanBeAdded(AFilename: string): boolean; begin diff -Nru lazarus-1.4.4+dfsg/packager/addfiletoapackagedlg.lfm lazarus-1.6+dfsg/packager/addfiletoapackagedlg.lfm --- lazarus-1.4.4+dfsg/packager/addfiletoapackagedlg.lfm 2009-10-30 15:02:59.000000000 +0000 +++ lazarus-1.6+dfsg/packager/addfiletoapackagedlg.lfm 2015-12-21 22:44:50.000000000 +0000 @@ -1,69 +1,31 @@ object AddFileToAPackageDialog: TAddFileToAPackageDialog - Left = 347 - Height = 424 - Top = 221 + Left = 408 + Height = 272 + Top = 224 Width = 469 ActiveControl = FileNameEdit Caption = 'AddFileToAPackageDialog' - ClientHeight = 424 + ClientHeight = 272 ClientWidth = 469 OnClose = AddFileToAPackageDlgClose Position = poScreenCenter ShowHint = True - LCLVersion = '0.9.29' + LCLVersion = '1.7' object FileGroupBox: TGroupBox Left = 6 - Height = 148 + Height = 58 Top = 6 Width = 457 Align = alTop AutoSize = True BorderSpacing.Around = 6 Caption = 'FileGroupBox' - ClientHeight = 130 + ClientHeight = 39 ClientWidth = 453 TabOrder = 0 - object UnitNameLabel: TLabel - AnchorSideTop.Control = FileNameEdit - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 14 - Top = 33 - Width = 439 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 6 - BorderSpacing.Top = 6 - BorderSpacing.Right = 6 - Caption = 'UnitNameLabel' - ParentColor = False - end - object FileTypeRadioGroup: TRadioGroup - AnchorSideTop.Control = HasRegisterProcCheckBox - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 25 - Top = 99 - Width = 439 - Anchors = [akTop, akLeft, akRight] - AutoFill = True - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'FileTypeRadioGroup' - ChildSizing.LeftRightSpacing = 6 - ChildSizing.TopBottomSpacing = 6 - ChildSizing.EnlargeHorizontal = crsHomogenousChildResize - ChildSizing.EnlargeVertical = crsHomogenousChildResize - ChildSizing.ShrinkHorizontal = crsScaleChilds - ChildSizing.ShrinkVertical = crsScaleChilds - ChildSizing.Layout = cclLeftToRightThenTopToBottom - ChildSizing.ControlsPerLine = 1 - Constraints.MinHeight = 25 - TabOrder = 3 - TabStop = True - end object FileNameEdit: TEdit Left = 6 - Height = 21 + Height = 27 Top = 6 Width = 439 Anchors = [akTop, akLeft, akRight] @@ -72,59 +34,35 @@ TabOrder = 0 Text = 'FileNameEdit' end - object UnitNameEdit: TEdit - AnchorSideTop.Control = UnitNameLabel - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 21 - Top = 49 - Width = 439 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Top = 2 - TabOrder = 1 - Text = 'UnitNameEdit' - end - object HasRegisterProcCheckBox: TCheckBox - AnchorSideTop.Control = UnitNameEdit - AnchorSideTop.Side = asrBottom - Left = 6 - Height = 17 - Top = 76 - Width = 439 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Top = 6 - Caption = 'HasRegisterProcCheckBox' - TabOrder = 2 - end end object PackagesGroupBox: TGroupBox Left = 6 - Height = 74 - Top = 160 + Height = 85 + Top = 70 Width = 457 Align = alTop Anchors = [akLeft, akRight] AutoSize = True BorderSpacing.Around = 6 Caption = 'PackagesGroupBox' - ClientHeight = 56 + ClientHeight = 66 ClientWidth = 453 TabOrder = 1 object PackagesComboBox: TComboBox Left = 6 - Height = 21 + Height = 27 Top = 6 Width = 441 Align = alTop BorderSpacing.Around = 6 - ItemHeight = 13 + ItemHeight = 0 TabOrder = 0 Text = 'PackagesComboBox' end object ShowAllCheckBox: TCheckBox Left = 6 - Height = 17 - Top = 33 + Height = 21 + Top = 39 Width = 441 Align = alTop BorderSpacing.Around = 6 @@ -135,9 +73,17 @@ end object BtnPanel: TButtonPanel Left = 6 - Height = 26 - Top = 392 + Height = 32 + Top = 234 Width = 457 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 2 ShowButtons = [pbOK, pbCancel, pbHelp] ShowBevel = False diff -Nru lazarus-1.4.4+dfsg/packager/addfiletoapackagedlg.pas lazarus-1.6+dfsg/packager/addfiletoapackagedlg.pas --- lazarus-1.4.4+dfsg/packager/addfiletoapackagedlg.pas 2014-06-15 11:52:27.000000000 +0000 +++ lazarus-1.6+dfsg/packager/addfiletoapackagedlg.pas 2015-12-21 22:44:50.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: addfiletoapackagedlg.pas 45521 2014-06-15 11:52:27Z juha $ } +{ $Id: addfiletoapackagedlg.pas 50971 2015-12-21 22:44:50Z maxim $ } { /*************************************************************************** addfiletoapackagedlg.pas @@ -39,8 +39,8 @@ interface uses - Classes, SysUtils, Forms, Controls, Buttons, ExtCtrls, StdCtrls, - Dialogs, AVL_Tree, FileUtil, ButtonPanel, + Classes, SysUtils, Forms, Controls, ExtCtrls, StdCtrls, + Dialogs, AVL_Tree, FileUtil, LazFileUtils, ButtonPanel, IDEWindowIntf, PackageIntf, IDEHelpIntf, IDEDefs, LazarusIDEStrConsts, IDEProcs, AddToPackageDlg, ComponentReg, PackageDefs, PackageSystem; @@ -51,63 +51,43 @@ TAddFileToAPackageDialog = class(TForm) BtnPanel: TButtonPanel; - HasRegisterProcCheckBox: TCheckBox; - FileTypeRadioGroup: TRadioGroup; - UnitNameEdit: TEdit; FileNameEdit: TEdit; FileGroupBox: TGroupBox; PackagesGroupBox: TGroupBox; - UnitNameLabel: TLabel; PackagesComboBox: TComboBox; ShowAllCheckBox: TCheckBox; procedure AddFileToAPackageDlgClose(Sender: TObject; - var CloseAction: TCloseAction); + var {%H-}CloseAction: TCloseAction); procedure HelpButtonClick(Sender: TObject); procedure OkButtonClick(Sender: TObject); procedure PackagesGroupBoxResize(Sender: TObject); procedure ShowAllCheckBoxClick(Sender: TObject); private - FOnGetIDEFileInfo: TGetIDEFileStateEvent; fPackages: TAVLTree;// tree of TLazPackage - function GetFileType: TPkgFileType; function GetFilename: string; - function GetHasRegisterProc: boolean; - function GetUnitName: string; - procedure SetFileType(const AValue: TPkgFileType); procedure SetFilename(const AValue: string); - procedure SetHasRegisterProc(const AValue: boolean); - procedure SetUnitName(const AValue: string); procedure SetupComponents; public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; procedure UpdateAvailablePackages; property Filename: string read GetFilename write SetFilename; - property Unit_Name: string read GetUnitName write SetUnitName; - property FileType: TPkgFileType read GetFileType write SetFileType; - property HasRegisterProc: boolean read GetHasRegisterProc write SetHasRegisterProc; - property OnGetIDEFileInfo: TGetIDEFileStateEvent read FOnGetIDEFileInfo write FOnGetIDEFileInfo; end; -function ShowAddFileToAPackageDlg(const Filename, AUnitName: string; - HasRegisterProc: boolean; OnGetIDEFileInfo: TGetIDEFileStateEvent): TModalResult; +function ShowAddFileToAPackageDlg(const Filename: string): TModalResult; implementation {$R *.lfm} -function ShowAddFileToAPackageDlg(const Filename, AUnitName: string; - HasRegisterProc: boolean; OnGetIDEFileInfo: TGetIDEFileStateEvent): TModalResult; +function ShowAddFileToAPackageDlg(const Filename: string): TModalResult; var AddFileToAPackageDialog: TAddFileToAPackageDialog; begin AddFileToAPackageDialog:=TAddFileToAPackageDialog.Create(nil); AddFileToAPackageDialog.Filename:=Filename; - AddFileToAPackageDialog.Unit_Name:=AUnitName; - AddFileToAPackageDialog.HasRegisterProc:=HasRegisterProc; - AddFileToAPackageDialog.OnGetIDEFileInfo:=OnGetIDEFileInfo; AddFileToAPackageDialog.UpdateAvailablePackages; Result:=AddFileToAPackageDialog.ShowModal; AddFileToAPackageDialog.Free; @@ -130,10 +110,8 @@ var PkgID: TLazPackageID; APackage: TLazPackage; - PkgFile: TPkgFile; - FileFlags: TPkgFileFlags; - AddType: TAddToPkgType; aFilename: String; + NewUnitPaths, NewIncPaths: String; begin aFilename:=Filename; PkgID:=TLazPackageID.Create; @@ -162,31 +140,14 @@ exit; end; - // check if file is already in the package - PkgFile:=APackage.FindPkgFile(aFilename,true,false); - if PkgFile<>nil then begin - MessageDlg(lisPkgMangFileIsAlreadyInPackage, - Format(lisAF2PTheFileIsAlreadyInThePackage,[aFilename,LineEnding,APackage.IDAsString]), - mtError,[mbCancel],0); - exit; - end; - - // check filename - if FilenameIsPascalSource(aFilename) then - AddType:=d2ptUnit - else - AddType:=d2ptFile; - if not CheckAddingUnitFilename(APackage,AddType, - OnGetIDEFileInfo,aFilename) then exit; - // ok -> add file to package APackage.BeginUpdate; - FileFlags:=[]; - if FileType in PkgFileUnitTypes then - Include(FileFlags,pffAddToPkgUsesSection); - if HasRegisterProc then - Include(FileFlags,pffHasRegisterProc); - APackage.AddFile(aFilename,Unit_Name,FileType,FileFlags,cpNormal); + NewUnitPaths:=''; + NewIncPaths:=''; + APackage.AddFileByName(aFilename, NewUnitPaths, NewIncPaths); + // extend unit and include search path + if not APackage.ExtendUnitSearchPath(NewUnitPaths) then exit; + if not APackage.ExtendIncSearchPath(NewIncPaths) then exit; if APackage.Editor<>nil then APackage.Editor.UpdateAll(true); APackage.EndUpdate; @@ -208,67 +169,21 @@ end; procedure TAddFileToAPackageDialog.SetupComponents; -var - pft: TPkgFileType; begin FileGroupBox.Caption:=lisFile; FileNameEdit.Text:=''; - UnitNameLabel.Caption:=lisAF2PUnitName; - UnitNameEdit.Text:=''; - HasRegisterProcCheckBox.Caption:=lisAF2PHasRegisterProcedure; PackagesGroupBox.Caption:=lisAF2PDestinationPackage; ShowAllCheckBox.Caption:=lisAF2PShowAll; BtnPanel.OkButton.Caption:=lisMenuOk; BtnPanel.OkButton.OnClick:=@OkButtonClick; BtnPanel.OkButton.ModalResult:=mrNone; BtnPanel.HelpButton.OnClick:=@HelpButtonClick; - - with FileTypeRadioGroup do begin - Caption:=lisAF2PFileType; - with Items do begin - BeginUpdate; - for pft:=Low(TPkgFileType) to High(TPkgFileType) do begin - if pft in PkgFileUnitTypes then continue; - Add(GetPkgFileTypeLocalizedName(pft)); - end; - EndUpdate; - end; - ItemIndex:=0; - Columns:=2; - end; end; procedure TAddFileToAPackageDialog.SetFilename(const AValue: string); -var - NewPFT: TPkgFileType; begin if FileNameEdit.Text=AValue then exit; FileNameEdit.Text:=AValue; - if FilenameIsPascalUnit(AValue) then - NewPFT:=pftUnit - else if CompareFileExt(AValue,'.lfm',true)=0 then - NewPFT:=pftLFM - else if CompareFileExt(AValue,'.lrs',true)=0 then - NewPFT:=pftLRS - else if CompareFileExt(AValue,'.inc',true)=0 then - NewPFT:=pftInclude - else if FileIsText(AValue) then - NewPFT:=pftText - else - NewPFT:=pftBinary; - FileType:=NewPFT; -end; - -procedure TAddFileToAPackageDialog.SetHasRegisterProc(const AValue: boolean); -begin - if HasRegisterProc=AValue then exit; - HasRegisterProcCheckBox.Checked:=AValue; -end; - -procedure TAddFileToAPackageDialog.SetUnitName(const AValue: string); -begin - if Unit_Name=AValue then exit; - UnitNameEdit.Text:=AValue; end; function TAddFileToAPackageDialog.GetFilename: string; @@ -276,62 +191,6 @@ Result:=FileNameEdit.Text; end; -function TAddFileToAPackageDialog.GetFileType: TPkgFileType; -var - i: Integer; - CurPFT: TPkgFileType; -begin - if FileTypeRadioGroup.Visible then begin - i:=0; - for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin - if CurPFT in PkgFileUnitTypes then continue; - if FileTypeRadioGroup.ItemIndex=i then begin - Result:=CurPFT; - exit; - end; - inc(i); - end; - Result:=pftText; - end else begin - Result:=pftUnit; - end; -end; - -function TAddFileToAPackageDialog.GetHasRegisterProc: boolean; -begin - Result:=HasRegisterProcCheckBox.Checked; -end; - -function TAddFileToAPackageDialog.GetUnitName: string; -begin - Result:=UnitNameEdit.Text; -end; - -procedure TAddFileToAPackageDialog.SetFileType(const AValue: TPkgFileType); -var - ShowUnitProps: Boolean; - i: Integer; - CurPFT: TPkgFileType; -begin - if FileType=AValue then exit; - i:=0; - for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin - if CurPFT in PkgFileUnitTypes then continue; - if CurPFT=AValue then break; - inc(i); - end; - if i<FileTypeRadioGroup.Items.Count then - FileTypeRadioGroup.ItemIndex:=i - else - FileTypeRadioGroup.ItemIndex:=-1; - - ShowUnitProps:=(AValue in PkgFileUnitTypes); - UnitNameLabel.Visible:=ShowUnitProps; - UnitNameEdit.Visible:=ShowUnitProps; - HasRegisterProcCheckBox.Visible:=ShowUnitProps; - FileTypeRadioGroup.Visible:=not ShowUnitProps; -end; - constructor TAddFileToAPackageDialog.Create(TheOwner: TComponent); begin inherited Create(TheOwner); @@ -343,7 +202,7 @@ destructor TAddFileToAPackageDialog.Destroy; begin - fPackages.Free; + FreeAndNil(fPackages); inherited Destroy; end; diff -Nru lazarus-1.4.4+dfsg/packager/addtopackagedlg.lfm lazarus-1.6+dfsg/packager/addtopackagedlg.lfm --- lazarus-1.4.4+dfsg/packager/addtopackagedlg.lfm 2014-10-26 18:09:15.000000000 +0000 +++ lazarus-1.6+dfsg/packager/addtopackagedlg.lfm 2015-09-17 09:25:32.000000000 +0000 @@ -1,76 +1,33 @@ object AddToPackageDlg: TAddToPackageDlg Left = 413 - Height = 322 - Top = 604 + Height = 357 + Top = 535 Width = 658 - ActiveControl = PageControl1 + BorderIcons = [biSystemMenu, biMaximize] Caption = 'Add to package' - ClientHeight = 322 + ClientHeight = 357 ClientWidth = 658 KeyPreview = True OnClose = AddToPackageDlgClose OnCreate = FormCreate OnDestroy = FormDestroy OnKeyDown = AddToPackageDlgKeyDown + OnShow = FormShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object PageControl1: TPageControl Left = 0 - Height = 282 + Height = 316 Top = 0 Width = 658 - ActivePage = NewFilePage + ActivePage = NewComponentPage Align = alClient TabIndex = 0 TabOrder = 0 OnChange = PageControl1Change - object NewFilePage: TTabSheet - Caption = 'New File' - ClientHeight = 249 - ClientWidth = 654 - OnResize = NewFilePageResize - object NewFileTreeView: TTreeView - Left = 0 - Height = 244 - Top = 0 - Width = 249 - Align = alLeft - BorderSpacing.Bottom = 5 - ReadOnly = True - RightClickSelect = True - TabOrder = 0 - OnClick = NewFileTreeViewClick - OnDblClick = NewFileTreeViewDblClick - OnSelectionChanged = NewFileTreeViewSelectionChanged - Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips] - end - object NewFileDescriptionGroupBox: TGroupBox - AnchorSideLeft.Control = NewFileTreeView - Left = 249 - Height = 244 - Top = 0 - Width = 405 - Align = alClient - BorderSpacing.Bottom = 5 - Caption = 'NewFileDescriptionGroupBox' - ClientHeight = 223 - ClientWidth = 397 - TabOrder = 1 - object NewFileHelpLabel: TLabel - Left = 0 - Height = 223 - Top = 0 - Width = 397 - Align = alClient - Caption = 'NewFileHelpLabel' - ParentColor = False - WordWrap = True - end - end - end object NewComponentPage: TTabSheet Caption = 'New Component' - ClientHeight = 249 + ClientHeight = 285 ClientWidth = 654 OnResize = NewComponentPageResize object AncestorTypeLabel: TLabel @@ -79,7 +36,7 @@ Left = 5 Height = 17 Top = 12 - Width = 119 + Width = 130 Caption = 'AncestorTypeLabel' ParentColor = False end @@ -88,8 +45,8 @@ AnchorSideTop.Side = asrCenter Left = 5 Height = 17 - Top = 45 - Width = 107 + Top = 46 + Width = 112 Caption = 'ClassNameLabel' ParentColor = False end @@ -98,8 +55,8 @@ AnchorSideTop.Side = asrCenter Left = 5 Height = 17 - Top = 78 - Width = 109 + Top = 80 + Width = 119 Caption = 'PalettePageLabel' ParentColor = False end @@ -108,8 +65,8 @@ AnchorSideTop.Side = asrCenter Left = 5 Height = 17 - Top = 111 - Width = 155 + Top = 114 + Width = 168 Caption = 'ComponentUnitFileLabel' ParentColor = False end @@ -118,8 +75,8 @@ AnchorSideTop.Side = asrCenter Left = 5 Height = 17 - Top = 142 - Width = 174 + Top = 147 + Width = 184 Caption = 'ComponentUnitNameLabel' ParentColor = False end @@ -142,10 +99,11 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = AncestorComboBox AnchorSideTop.Side = asrCenter - Left = 384 - Height = 22 - Top = 9 - Width = 196 + Left = 390 + Height = 24 + Top = 8 + Width = 207 + BorderSpacing.Left = 6 Caption = 'AncestorShowAllCheckBox' Checked = True OnClick = AncestorShowAllCheckBoxClick @@ -159,7 +117,7 @@ AnchorSideRight.Control = AncestorComboBox AnchorSideRight.Side = asrBottom Left = 184 - Height = 25 + Height = 27 Top = 41 Width = 200 Anchors = [akTop, akLeft, akRight] @@ -176,7 +134,7 @@ AnchorSideRight.Side = asrBottom Left = 184 Height = 29 - Top = 72 + Top = 74 Width = 200 BorderSpacing.Top = 6 ItemHeight = 0 @@ -189,9 +147,9 @@ AnchorSideTop.Side = asrBottom AnchorSideRight.Control = ComponentUnitFileBrowseButton Left = 184 - Height = 25 - Top = 107 - Width = 408 + Height = 27 + Top = 109 + Width = 364 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 TabOrder = 4 @@ -202,14 +160,15 @@ AnchorSideTop.Control = ComponentUnitFileEdit AnchorSideTop.Side = asrCenter AnchorSideRight.Control = ComponentUnitFileShortenButton - Left = 592 - Height = 27 + Left = 548 + Height = 29 Hint = 'Save file dialog' - Top = 106 - Width = 26 + Top = 108 + Width = 50 Anchors = [akTop, akRight] AutoSize = True Caption = '...' + Constraints.MinWidth = 50 OnClick = ComponentUnitFileBrowseButtonClick ParentShowHint = False ShowHint = True @@ -221,14 +180,16 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Control = NewComponentPage AnchorSideRight.Side = asrBottom - Left = 618 - Height = 27 + Left = 598 + Height = 29 Hint = 'Shorten or expand filename' - Top = 106 - Width = 36 + Top = 108 + Width = 50 Anchors = [akTop, akRight] AutoSize = True + BorderSpacing.Right = 6 Caption = '<>' + Constraints.MinWidth = 50 OnClick = ComponentUnitFileShortenButtonClick ParentShowHint = False ShowHint = True @@ -241,8 +202,8 @@ AnchorSideRight.Control = AncestorComboBox AnchorSideRight.Side = asrBottom Left = 184 - Height = 25 - Top = 138 + Height = 27 + Top = 142 Width = 200 Anchors = [akTop, akLeft, akRight] BorderSpacing.Top = 6 @@ -252,36 +213,50 @@ end object ComponentIconLabel: TLabel AnchorSideLeft.Control = ComponentUnitNameLabel - AnchorSideTop.Control = ComponentIconSpeedButton + AnchorSideTop.Control = ComponentIconBitBtn AnchorSideTop.Side = asrCenter Left = 5 Height = 17 - Top = 174 - Width = 135 + Top = 183 + Width = 144 Caption = 'ComponentIconLabel' ParentColor = False end - object ComponentIconSpeedButton: TSpeedButton + object ComponentIconBitBtn: TBitBtn AnchorSideLeft.Control = ComponentUnitNameEdit AnchorSideTop.Control = ComponentUnitNameEdit AnchorSideTop.Side = asrBottom Left = 184 - Height = 26 - Top = 169 - Width = 28 + Height = 32 + Top = 175 + Width = 50 BorderSpacing.Top = 6 - OnClick = ComponentIconSpeedButtonClick - ShowHint = True - ParentShowHint = False + Constraints.MinWidth = 50 + GlyphShowMode = gsmAlways + OnClick = ComponentIconBitBtnClick + TabOrder = 8 + end + object LabelIconInfo: TLabel + AnchorSideLeft.Control = ComponentIconBitBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = ComponentIconLabel + AnchorSideTop.Side = asrCenter + Left = 240 + Height = 17 + Top = 183 + Width = 6 + BorderSpacing.Around = 6 + Caption = '?' + ParentColor = False end end object NewRequirementPage: TTabSheet Caption = 'New Requirement' - ClientHeight = 249 + ClientHeight = 285 ClientWidth = 654 object NewDepPanel: TPanel Left = 0 - Height = 249 + Height = 289 Top = 0 Width = 654 Align = alClient @@ -292,14 +267,14 @@ ChildSizing.VerticalSpacing = 6 ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 2 - ClientHeight = 249 + ClientHeight = 289 ClientWidth = 654 TabOrder = 0 object DependPkgNameLabel: TLabel Left = 6 Height = 17 - Top = 12 - Width = 146 + Top = 9 + Width = 131 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaCenter Caption = 'DependPkgNameLabel' @@ -307,8 +282,8 @@ end object DependPkgNameComboBox: TComboBox AnchorSideLeft.Side = asrBottom - Left = 169 - Height = 29 + Left = 154 + Height = 23 Top = 6 Width = 200 AutoComplete = True @@ -322,8 +297,8 @@ object DependMinVersionLabel: TLabel Left = 6 Height = 17 - Top = 45 - Width = 153 + Top = 38 + Width = 140 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaCenter Caption = 'DependMinVersionLabel' @@ -331,9 +306,9 @@ end object DependMinVersionEdit: TEdit AnchorSideLeft.Side = asrBottom - Left = 169 - Height = 25 - Top = 41 + Left = 154 + Height = 23 + Top = 35 Width = 200 BorderSpacing.Top = 6 TabOrder = 1 @@ -342,8 +317,8 @@ object DependMaxVersionLabel: TLabel Left = 6 Height = 17 - Top = 76 - Width = 157 + Top = 67 + Width = 142 BorderSpacing.CellAlignHorizontal = ccaLeftTop BorderSpacing.CellAlignVertical = ccaCenter Caption = 'DependMaxVersionLabel' @@ -351,9 +326,9 @@ end object DependMaxVersionEdit: TEdit AnchorSideLeft.Side = asrBottom - Left = 169 - Height = 25 - Top = 72 + Left = 154 + Height = 23 + Top = 64 Width = 200 BorderSpacing.Top = 6 TabOrder = 2 @@ -363,15 +338,15 @@ end object AddFilesPage: TTabSheet Caption = 'Add Files' - ClientHeight = 249 + ClientHeight = 285 ClientWidth = 654 object FilesListView: TListView - Left = 0 - Height = 204 - Top = 0 - Width = 654 + Left = 6 + Height = 236 + Top = 6 + Width = 642 Align = alClient - BorderSpacing.Bottom = 5 + BorderSpacing.Around = 6 Columns = < item Caption = 'Filename' @@ -389,20 +364,20 @@ end object AddFilesBtnPanel: TPanel Left = 0 - Height = 39 - Top = 218 + Height = 41 + Top = 248 Width = 654 Align = alBottom AutoSize = True BevelOuter = bvNone - ClientHeight = 39 + ClientHeight = 41 ClientWidth = 654 TabOrder = 1 object FilesShortenButton: TBitBtn - Left = 108 - Height = 27 + Left = 106 + Height = 29 Top = 6 - Width = 126 + Width = 122 Align = alLeft AutoSize = True BorderSpacing.Around = 6 @@ -411,10 +386,10 @@ TabOrder = 0 end object FilesDeleteButton: TBitBtn - Left = 240 - Height = 27 + Left = 234 + Height = 29 Top = 6 - Width = 118 + Width = 113 Align = alLeft AutoSize = True BorderSpacing.Around = 6 @@ -424,9 +399,9 @@ end object FilesDirButton: TBitBtn Left = 6 - Height = 27 + Height = 29 Top = 6 - Width = 96 + Width = 94 Align = alLeft AutoSize = True BorderSpacing.Around = 6 @@ -437,115 +412,21 @@ end end end - object NewFileBtnPanel: TPanel - Left = 0 - Height = 40 - Top = 282 - Width = 658 - Align = alBottom - AutoSize = True - BevelOuter = bvNone - ClientHeight = 40 - ClientWidth = 658 + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 322 + Width = 646 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 1 - object OkButton: TBitBtn - Left = 416 - Height = 28 - Top = 6 - Width = 102 - Align = alRight - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'OkButton' - Constraints.MinWidth = 75 - Enabled = False - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00317A360A2D753207FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF003985400A37833DFF317B37FB2E763307FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004292490A408E47FF54A35CFF4F9F57FF327C38FE2E773408FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004B9E530A499A51FF5BAC64FF77CA82FF74C87EFF51A059FF337D39FE2F78 - 3508FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0053A9 - 5C0A51A65AFF63B56DFF7ECE89FF7BCC87FF76CA81FF76C981FF52A25AFF347E - 3AFE30793508FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005AB4650959B0 - 63FF6BBD76FF84D290FF7AC985FF60B26AFF63B46DFF78C983FF78CB82FF53A3 - 5CFF347F3AFD317A3608FFFFFF00FFFFFF00FFFFFF00FFFFFF005EB969465BB5 - 66E479C986FF80CE8DFF51A65AFC4DA1566F499C518B5CAD67FF7CCC86FF79CB - 85FF54A45DFF35803BFC317B3708FFFFFF00FFFFFF00FFFFFF00FFFFFF005FBA - 6A3C5CB666E66DC079FF55AC5F6FFFFFFF00FFFFFF004A9D52915EAE68FF7DCD - 89FF7CCD87FF56A55FFF36813CFC327C3808FFFFFF00FFFFFF00FFFFFF00FFFF - FF005FBB6A435CB76765FFFFFF00FFFFFF00FFFFFF00FFFFFF004B9E53915FAF - 69FF7FCE8AFF7ECE89FF57A660FF37823DFC337D3908FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004B9F - 549160B06AFF81CF8DFF7FCF8BFF58A761FF398540FF347E3A08FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004CA0559162B26CFF82D18FFF7AC885FF57A660FF38843F7BFFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004DA1569163B36DFF5FAF69FF41914979FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF004EA257914A9D527FFFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - TabOrder = 0 - end - object CancelButton: TBitBtn - AnchorSideLeft.Side = asrBottom - Left = 524 - Height = 28 - Top = 6 - Width = 128 - Align = alRight - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'CancelButton' - Constraints.MinWidth = 75 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF003F3DED413B38EB08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00211FE3081E1CE241FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A47F0414F4CF2FF403EEDFD3C39EB08FFFFFF00FFFFFF00FFFFFF00FFFF - FF002725E5082422E4FC312FEAFF1F1DE241FFFFFF00FFFFFF00FFFFFF005451 - F3415856F5FF6361FAFF5855F6FF413FEDFC3D3AEC08FFFFFF00FFFFFF00302D - E7082C2AE6FC413FF1FF4C4AF6FF312FEAFF1F1DE241FFFFFF00FFFFFF005956 - F52B5B58F6FF6562FAFF7170FFFF5956F6FF4240EEFC3E3BEC083937EB083532 - E9FC4745F2FF6362FFFF4A48F4FF2F2DE9FF2220E32BFFFFFF00FFFFFF00FFFF - FF005A57F52B5B59F6FF6663FAFF7471FFFF5A58F6FF4341EEFC3E3CECFD504D - F4FF6867FFFF504EF5FF3634EBFF2A27E52BFFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF005B58F62B5C5AF6FF6764FAFF7472FFFF7370FFFF706EFFFF6E6C - FFFF5755F7FF3F3DEEFF3230E82BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF005C59F62B5D5BF7FF7976FFFF5956FFFF5754FFFF7270 - FFFF4846F0FF3C39EB2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00615EF8085D5AF6FD7D79FFFF5E5BFFFF5B58FFFF7674 - FFFF4643EFFD413FED08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF006967FB086663F9FC706DFBFF807EFFFF7E7BFFFF7C79FFFF7977 - FFFF5E5CF7FF4744EFFC4240EE08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00716EFD086E6BFCFC7774FDFF8682FFFF7673FCFF6462F8FF605DF7FF6D6A - FAFF7B79FFFF605DF7FF4845EFFC4341EE08FFFFFF00FFFFFF00FFFFFF007673 - FF087471FEFD7D7AFEFF8A87FFFF7C79FDFF6C69FBFF6361F92B5F5CF72B615E - F8FF6E6CFAFF7D7AFFFF615FF7FF4946F0FC4441EE05FFFFFF00FFFFFF007774 - FF1F7A77FFFF817EFFFF817EFEFF7471FDFF6C69FB2BFFFFFF00FFFFFF00605D - F72B625FF8FF6F6DFBFF7E7CFFFF625FF8FF4A47F06F4542EE02FFFFFF00FFFF - FF007774FF1F7A77FFFF7976FEFF726FFD2BFFFFFF00FFFFFF00FFFFFF00FFFF - FF00615EF82B6461F8FF6A68F9FF5451F3A84F4DF229FFFFFF00FFFFFF00FFFF - FF00FFFFFF007774FF1F7774FF2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00625FF82B5D5BF76F5956F53EFFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF006360F80AFFFFFF00FFFFFF00FFFFFF00 - } - ModalResult = 2 - TabOrder = 1 - end + ShowButtons = [pbOK, pbCancel] + ShowBevel = False end end diff -Nru lazarus-1.4.4+dfsg/packager/addtopackagedlg.pas lazarus-1.6+dfsg/packager/addtopackagedlg.pas --- lazarus-1.4.4+dfsg/packager/addtopackagedlg.pas 2015-04-29 21:40:44.000000000 +0000 +++ lazarus-1.6+dfsg/packager/addtopackagedlg.pas 2015-11-11 01:18:13.000000000 +0000 @@ -31,14 +31,12 @@ uses Math, Classes, SysUtils, LCLProc, LCLType, Forms, Controls, Buttons, ExtDlgs, - StdCtrls, ExtCtrls, Dialogs, FileUtil, ComCtrls, AVL_Tree, + StdCtrls, ExtCtrls, Dialogs, ComCtrls, ButtonPanel, AVL_Tree, FileUtil, LazFileUtils, // IDEIntf - NewItemIntf, ProjectIntf, PackageIntf, FormEditingIntf, IDEWindowIntf, - IDEDialogs, + NewItemIntf, PackageIntf, FormEditingIntf, IDEWindowIntf, IDEDialogs, // IDE - LazarusIDEStrConsts, InputHistory, CodeToolManager, IDEDefs, - IDEProcs, EnvironmentOpts, PackageSystem, PackageDefs, ComponentReg, - AddDirToPkgDlg; + LazarusIDEStrConsts, InputHistory, IDEDefs, IDEProcs, EnvironmentOpts, + PackageSystem, PackageDefs, ComponentReg, AddDirToPkgDlg; type TAddToPkgType = ( @@ -47,8 +45,7 @@ d2ptNewComponent, d2ptRequiredPkg, d2ptFile, - d2ptFiles, - d2ptNewFile + d2ptFiles ); { TAddToPkgResult } @@ -76,52 +73,45 @@ end; TOnGetUnitRegisterInfo = procedure(Sender: TObject; const AFilename: string; - var TheUnitName: string; var HasRegisterProc: boolean) of object; + out TheUnitName: string; out HasRegisterProc: boolean) of object; { TAddToPackageDlg } TAddToPackageDlg = class(TForm) - FilesDirButton: TBitBtn; - // PageControl1 - PageControl1: TPageControl; - NewFilePage: TTabSheet; - NewComponentPage: TTabSheet; - NewRequirementPage: TTabSheet; + AddFilesBtnPanel: TPanel; AddFilesPage: TTabSheet; - // new file page - NewFileTreeView: TTreeView; - NewFileDescriptionGroupBox: TGroupBox; - NewFileHelpLabel: TLabel; - CancelButton: TBitBtn; - OkButton: TBitBtn; - AncestorTypeLabel: TLabel; AncestorComboBox: TComboBox; AncestorShowAllCheckBox: TCheckBox; - ClassNameLabel: TLabel; + AncestorTypeLabel: TLabel; + ButtonPanel1: TButtonPanel; ClassNameEdit: TEdit; - PalettePageLabel: TLabel; - PalettePageCombobox: TCombobox; + ClassNameLabel: TLabel; ComponentIconLabel: TLabel; - ComponentIconSpeedButton: TSpeedButton; - ComponentUnitFileLabel: TLabel; - ComponentUnitFileEdit: TEdit; + ComponentIconBitBtn: TBitBtn; ComponentUnitFileBrowseButton: TButton; + ComponentUnitFileEdit: TEdit; + ComponentUnitFileLabel: TLabel; ComponentUnitFileShortenButton: TButton; - ComponentUnitNameLabel: TLabel; ComponentUnitNameEdit: TEdit; - NewDepPanel: TPanel; - DependPkgNameLabel: TLabel; - DependPkgNameComboBox: TComboBox; - DependMinVersionLabel: TLabel; - DependMinVersionEdit: TEdit; - DependMaxVersionLabel: TLabel; + ComponentUnitNameLabel: TLabel; DependMaxVersionEdit: TEdit; + DependMaxVersionLabel: TLabel; + DependMinVersionEdit: TEdit; + DependMinVersionLabel: TLabel; + DependPkgNameComboBox: TComboBox; + DependPkgNameLabel: TLabel; FilesDeleteButton: TBitBtn; - FilesShortenButton: TBitBtn; + FilesDirButton: TBitBtn; FilesListView: TListView; - NewFileBtnPanel: TPanel; - AddFilesBtnPanel: TPanel; - procedure AddToPackageDlgClose(Sender: TObject; var CloseAction: TCloseAction); + FilesShortenButton: TBitBtn; + LabelIconInfo: TLabel; + NewComponentPage: TTabSheet; + NewDepPanel: TPanel; + NewRequirementPage: TTabSheet; + PageControl1: TPageControl; + PalettePageCombobox: TComboBox; + PalettePageLabel: TLabel; + procedure AddToPackageDlgClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure AddToPackageDlgKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure AncestorComboBoxChange(Sender: TObject); procedure AncestorComboBoxCloseUp(Sender: TObject); @@ -129,7 +119,7 @@ procedure CancelAddFileButtonClick(Sender: TObject); procedure CancelAddUnitButtonClick(Sender: TObject); procedure ClassNameEditChange(Sender: TObject); - procedure ComponentIconSpeedButtonClick(Sender: TObject); + procedure ComponentIconBitBtnClick(Sender: TObject); procedure ComponentUnitFileBrowseButtonClick(Sender: TObject); procedure ComponentUnitFileShortenButtonClick(Sender: TObject); procedure ComponentUnitNameEditChange(Sender: TObject); @@ -137,18 +127,14 @@ procedure FilesAddButtonClick(Sender: TObject); procedure FilesDeleteButtonClick(Sender: TObject); procedure FilesDirButtonClick(Sender: TObject); - procedure FilesListViewSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure FilesListViewSelectItem(Sender: TObject; {%H-}Item: TListItem; {%H-}Selected: Boolean); procedure FilesShortenButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); + procedure FormShow(Sender: TObject); procedure NewComponentButtonClick(Sender: TObject); procedure NewComponentPageResize(Sender: TObject); procedure NewDependButtonClick(Sender: TObject); - procedure NewFileOkButtonClick(Sender: TObject); - procedure NewFilePageResize(Sender: TObject); - procedure NewFileTreeViewClick(Sender: TObject); - procedure NewFileTreeViewDblClick(Sender: TObject); - procedure NewFileTreeViewSelectionChanged(Sender: TObject); procedure PageControl1Change(Sender: TObject); private fLastNewComponentAncestorType: string; @@ -163,7 +149,6 @@ procedure SetActivatePage(AValue: TAddToPkgType); procedure SetLazPackage(const AValue: TLazPackage); procedure SetupComponents; - procedure SetupNewFilePage; procedure SetupNewComponentPage; procedure SetupAddDependencyPage; procedure SetupAddFilesPage; @@ -175,7 +160,6 @@ procedure AutoCompleteNewComponent; procedure AutoCompleteNewComponentUnitName; function SwitchRelativeAbsoluteFilename(const Filename: string): string; - procedure FillNewFileTreeView; function FindFileInFilesList(AFilename: string): Integer; procedure LoadComponentIcon(AFilename: string); public @@ -192,7 +176,7 @@ property ActivatePage: TAddToPkgType read GetActivatePage write SetActivatePage; end; -function ShowAddToPackageDlg(Pkg: TLazPackage; var Params: TAddToPkgResult; +function ShowAddToPackageDlg(Pkg: TLazPackage; out Params: TAddToPkgResult; OnGetIDEFileInfo: TGetIDEFileStateEvent; OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo; var Page: TAddToPkgType): TModalResult; @@ -210,18 +194,27 @@ {$R *.lfm} -function ShowAddToPackageDlg(Pkg: TLazPackage; var Params: TAddToPkgResult; +function ShowAddToPackageDlg(Pkg: TLazPackage; out Params: TAddToPkgResult; OnGetIDEFileInfo: TGetIDEFileStateEvent; - OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo; - var Page: TAddToPkgType): TModalResult; + OnGetUnitRegisterInfo: TOnGetUnitRegisterInfo; var Page: TAddToPkgType + ): TModalResult; var AddDlg: TAddToPackageDlg; begin + Params:=nil; AddDlg:=TAddToPackageDlg.Create(nil); AddDlg.OnGetIDEFileInfo:=OnGetIDEFileInfo; AddDlg.OnGetUnitRegisterInfo:=OnGetUnitRegisterInfo; AddDlg.LazPackage:=Pkg; AddDlg.ActivatePage:=Page; + + //auto press AddFiles if called with "Add files" page + if Page=d2ptFiles then + AddDlg.FilesDirButton.Click; + //hide tabs for simpler use + AddDlg.PageControl1.ShowTabs:=false; + AddDlg.PageControl1.TabStop:=false; + Result:=AddDlg.ShowModal; Page:=AddDlg.ActivatePage; if Result=mrOk then begin @@ -383,7 +376,7 @@ end; // check packagename - if (NewPkgName='') or (not IsValidUnitName(NewPkgName)) then begin + if not IsValidPkgName(NewPkgName) then begin if not Quiet then IDEMessageDialog(lisProjAddInvalidPackagename, Format(lisA2PThePackageNameIsInvalidPleaseChooseAnExisting,[NewPkgName,LineEnding]), @@ -526,7 +519,7 @@ CheckNewCompOk; end; -procedure TAddToPackageDlg.ComponentIconSpeedButtonClick(Sender: TObject); +procedure TAddToPackageDlg.ComponentIconBitBtnClick(Sender: TObject); var Dlg: TOpenPictureDialog; begin @@ -534,12 +527,14 @@ try InputHistories.ApplyFileDialogSettings(Dlg); Dlg.InitialDir:=LazPackage.GetFileDialogInitialDir(ExtractFilePath(ComponentUnitFileEdit.Text)); - Dlg.Title := 'Choose a component icon 24x24'; - Dlg.Options := Dlg.Options+[ofPathMustExist]; - Dlg.Filter:='PNG|*.png' - +'|Bitmap, bmp|*.bmp' - +'|Pixmap, xpm|*.xpm' - +'|'+lisAllFiles+'|'+GetAllFilesMask; + Dlg.Title:=lisTitleOpenComponentIcon24x24; + Dlg.Options:=Dlg.Options+[ofPathMustExist]; + Dlg.Filter:=Format('%s|*.png|%s|*.bmp|%s|*.xpm|%s|%s', + [dlgFilterImagesPng, + dlgFilterImagesBitmap, + dlgFilterImagesPixmap, + dlgFilterAll, GetAllFilesMask]); + if Dlg.Execute then begin LoadComponentIcon(Dlg.FileName); end; @@ -560,6 +555,7 @@ SaveDialog.InitialDir := LazPackage.GetFileDialogInitialDir(SaveDialog.InitialDir); SaveDialog.Title := lisSaveAs; SaveDialog.Options := SaveDialog.Options+[ofPathMustExist]; + SaveDialog.Filter := Format('%s|*.pas;*.pp', [dlgFilterPascalFile]); if SaveDialog.Execute then begin AFilename := CleanAndExpandFilename(SaveDialog.Filename); if FilenameIsPascalUnit(AFilename) then begin @@ -666,7 +662,7 @@ LastParams:=CurParams; inc(i); end; - OkButton.Enabled:=FilesListView.SelCount>0; + ButtonPanel1.OKButton.Enabled:=FilesListView.SelCount>0; ok:=LastParams<>nil; finally if not ok then Params.Clear; @@ -746,7 +742,7 @@ FilesDeleteButton.Enabled:=FilesListView.SelCount>0; Result:=FilesListView.Items.Count>0; FilesShortenButton.Enabled:=Result; - OkButton.Enabled:=FilesListView.SelCount>0; + ButtonPanel1.OKButton.Enabled:=FilesListView.SelCount>0; end; procedure TAddToPackageDlg.FormCreate(Sender: TObject); @@ -767,6 +763,11 @@ FreeAndNil(Params); end; +procedure TAddToPackageDlg.FormShow(Sender: TObject); +begin + SelectNext(PageControl1.ActivePage, True, True); +end; + procedure TAddToPackageDlg.NewComponentButtonClick(Sender: TObject); var PkgFile: TPkgFile; @@ -938,52 +939,6 @@ end; end; -procedure TAddToPackageDlg.NewFileOkButtonClick(Sender: TObject); -var - ANode: TTreeNode; -begin - ANode:=NewFileTreeView.Selected; - if (ANode<>nil) and (ANode.Data<>nil) and (TObject(ANode.Data) is TNewItemProjectFile) - then begin - Params.Clear; - Params.AddType:=d2ptNewFile; - Params.NewItem:=TNewIDEItemTemplate(ANode.Data); - ModalResult:=mrOk; - end - else - IDEMessageDialog(lisNewDlgNoItemSelected,lisNewDlgPleaseSelectAnItemFirst,mtInformation,[mbOk]); -end; - -procedure TAddToPackageDlg.NewFilePageResize(Sender: TObject); -begin - NewFileTreeView.Width:=NewFilePage.ClientWidth div 2; -end; - -procedure TAddToPackageDlg.NewFileTreeViewClick(Sender: TObject); -var - Desc: String; - ANode: TTreeNode; -begin - ANode:=NewFileTreeView.Selected; - Desc:=''; - if (ANode<>nil) and (ANode.Data<>nil) then begin - if TObject(ANode.Data) is TNewIDEItemTemplate then - Desc:=TNewIDEItemTemplate(ANode.Data).Description; - end; - NewFileHelpLabel.Caption:=Desc; -end; - -procedure TAddToPackageDlg.NewFileTreeViewDblClick(Sender: TObject); -begin - NewFileOkButtonClick(Self); -end; - -procedure TAddToPackageDlg.NewFileTreeViewSelectionChanged(Sender: TObject); -begin - OkButton.Enabled:=(NewFileTreeView.Selected<>nil) - and (TObject(NewFileTreeView.Selected.Data) is TNewIDEItemTemplate); -end; - procedure TAddToPackageDlg.SetLazPackage(const AValue: TLazPackage); begin if FLazPackage=AValue then exit; @@ -1000,10 +955,13 @@ Result:=d2ptNewComponent else if PageControl1.ActivePage=NewRequirementPage then Result:=d2ptRequiredPkg - else if PageControl1.ActivePage=AddFilesPage then - Result:=d2ptFiles - else - Result:=d2ptNewFile; + else {if PageControl1.ActivePage=AddFilesPage then } begin + Assert(PageControl1.ActivePage=AddFilesPage, + 'TAddToPackageDlg.GetActivatePage: PageControl1.ActivePage <> AddFilesPage'); + Result:=d2ptFiles; + end; + //else + // Result:=d2ptNewFile; end; procedure TAddToPackageDlg.SetActivatePage(AValue: TAddToPkgType); @@ -1011,45 +969,39 @@ case AValue of d2ptNewComponent: PageControl1.ActivePage:=NewComponentPage; d2ptRequiredPkg: PageControl1.ActivePage:=NewRequirementPage; - d2ptFile,d2ptFiles: PageControl1.ActivePage:=AddFilesPage; - else PageControl1.ActivePage:=NewFilePage; + d2ptFiles: PageControl1.ActivePage:=AddFilesPage; + else raise Exception.Create('TAddToPackageDlg.SetActivatePage: invalid value.'); end; end; function TAddToPackageDlg.CheckNewCompOk: Boolean; begin Result:=(AncestorComboBox.Text<>'') and (ClassNameEdit.Text<>'') and (ComponentUnitNameEdit.Text<>''); - OkButton.Enabled:=Result; + ButtonPanel1.OKButton.Enabled:=Result; end; function TAddToPackageDlg.CheckNewReqOk: Boolean; begin Result:=(DependPkgNameComboBox.Text<>''); - OkButton.Enabled:=Result; + ButtonPanel1.OKButton.Enabled:=Result; end; procedure TAddToPackageDlg.PageControl1Change(Sender: TObject); begin case PageControl1.PageIndex of - 0: begin // New File - OkButton.Caption:=lisA2PCreateNewFile; - OkButton.OnClick:=@NewFileOkButtonClick; - OkButton.Enabled:=(NewFileTreeView.Selected<>nil) - and (TObject(NewFileTreeView.Selected.Data) is TNewIDEItemTemplate); - end; - 1: begin // New Component - OkButton.Caption:=lisA2PCreateNewComp; - OkButton.OnClick:=@NewComponentButtonClick; + 0: begin // New Component + ButtonPanel1.OkButton.Caption:=lisA2PCreateNewComp; + ButtonPanel1.OkButton.OnClick:=@NewComponentButtonClick; CheckNewCompOk; end; - 2: begin // New Requirement - OkButton.Caption:=lisA2PCreateNewReq; - OkButton.OnClick:=@NewDependButtonClick; + 1: begin // New Requirement + ButtonPanel1.OkButton.Caption:=lisA2PCreateNewReq; + ButtonPanel1.OkButton.OnClick:=@NewDependButtonClick; CheckNewReqOk; end; - 3: begin // Add Files - OkButton.Caption:=lisA2PAddFilesToPackage; - OkButton.OnClick:=@FilesAddButtonClick; + 2: begin // Add Files + ButtonPanel1.OkButton.Caption:=lisA2PAddFilesToPackage; + ButtonPanel1.OkButton.OnClick:=@FilesAddButtonClick; CheckFilesButtonsOk; end; end; @@ -1057,27 +1009,20 @@ procedure TAddToPackageDlg.SetupComponents; begin - NewFilePage.Caption:=lisA2PNewFile; + //NewFilePage.Caption:=lisA2PNewFile; NewComponentPage.Caption:=lisA2PNewComponent; NewRequirementPage.Caption:=lisProjAddNewRequirement; AddFilesPage.Caption:=lisA2PAddFiles; - CancelButton.Caption:=lisCancel; + ButtonPanel1.CancelButton.Caption:=lisCancel; PageControl1.PageIndex:=0; PageControl1Change(PageControl1); - SetupNewFilePage; + //SetupNewFilePage; SetupNewComponentPage; SetupAddDependencyPage; SetupAddFilesPage; end; -procedure TAddToPackageDlg.SetupNewFilePage; -begin - NewFileDescriptionGroupBox.Caption:=lisCodeHelpDescrTag; - NewFileHelpLabel.Caption:=''; - FillNewFileTreeView; -end; - procedure TAddToPackageDlg.SetupNewComponentPage; begin AncestorTypeLabel.Caption:=lisA2PAncestorType; @@ -1101,9 +1046,9 @@ end; ComponentUnitNameLabel.Caption:=lisA2PUnitName; ComponentUnitNameEdit.Text:=''; - ComponentIconLabel.Caption:='Icon (maximum 24x24)'; - ComponentIconSpeedButton.Width:=ComponentPaletteBtnWidth; - ComponentIconSpeedButton.Height:=ComponentPaletteBtnHeight; + ComponentIconLabel.Caption:=lisA2PIconAndSize; + ComponentIconBitBtn.Width:=ComponentPaletteBtnWidth; + ComponentIconBitBtn.Height:=ComponentPaletteBtnHeight; end; procedure TAddToPackageDlg.SetupAddDependencyPage; @@ -1145,6 +1090,8 @@ Hint:=lisDeleteSelectedFiles; LoadGlyphFromResourceName(HInstance, 'laz_delete'); end; + + LabelIconInfo.Caption:=lisNoneClickToChooseOne; end; procedure TAddToPackageDlg.OnIterateComponentClasses(PkgComponent: TPkgComponent); @@ -1180,7 +1127,7 @@ PalettePageCombobox.Text:=PkgComponent.RealPage.PageName; // filename AutoCompleteNewComponentUnitName; - OkButton.Enabled := True; + ButtonPanel1.OkButton.Enabled:=True; end; procedure TAddToPackageDlg.AutoCompleteNewComponentUnitName; @@ -1231,28 +1178,6 @@ Result:=TrimFilename(CreateAbsoluteSearchPath(Filename,LazPackage.Directory)); end; -procedure TAddToPackageDlg.FillNewFileTreeView; -var - NewParentNode: TTreeNode; - Category: TNewIDEItemCategory; - TemplateID: Integer; - Template: TNewIDEItemTemplate; -begin - NewFileTreeView.BeginUpdate; - NewFileTreeView.Items.Clear; - Category:=NewIDEItems.FindByName(FileDescGroupName); - NewParentNode:=NewFileTreeView.Items.AddObject(nil,Category.LocalizedName, - Category); - for TemplateID:=0 to Category.Count-1 do begin - Template:=Category[TemplateID]; - if Template.VisibleInNewDialog and (Template is TNewItemProjectFile) then - NewFileTreeView.Items.AddChildObject(NewParentNode,Template.LocalizedName, - Template); - end; - NewParentNode.Expand(true); - NewFileTreeView.EndUpdate; -end; - function TAddToPackageDlg.FindFileInFilesList(AFilename: string): Integer; var i: Integer; @@ -1283,11 +1208,11 @@ Image:=TImage.Create(nil); try Image.Picture.LoadFromFile(AFilename); - ComponentIconSpeedButton.Glyph.Assign(Image.Picture.Graphic); + ComponentIconBitBtn.Glyph.Assign(Image.Picture.Graphic); ShortFilename:=AFilename; LazPackage.ShortenFilename(ShortFilename,true); - with ComponentIconSpeedButton do - Hint:=Format('%s (%dx%d)', [ShortFilename, Glyph.Width, Glyph.Height]); + LabelIconInfo.Caption:= Format('%s (%dx%d)', + [ShortFilename, ComponentIconBitBtn.Glyph.Width, ComponentIconBitBtn.Glyph.Height]); FComponentIconFilename:=AFilename; finally Image.Free; @@ -1297,9 +1222,9 @@ IDEMessageDialog(lisCCOErrorCaption, Format(lisErrorLoadingFile2,[AFilename]) + LineEnding + E.Message, mtError, [mbCancel]); - ComponentIconSpeedButton.Glyph.Clear; + ComponentIconBitBtn.Glyph.Clear; FComponentIconFilename:=''; - ComponentIconSpeedButton.Hint:=lisNoneClickToChooseOne; + LabelIconInfo.Caption:=lisNoneClickToChooseOne; end; end; end; diff -Nru lazarus-1.4.4+dfsg/packager/basepkgmanager.pas lazarus-1.6+dfsg/packager/basepkgmanager.pas --- lazarus-1.4.4+dfsg/packager/basepkgmanager.pas 2014-06-22 11:07:45.000000000 +0000 +++ lazarus-1.6+dfsg/packager/basepkgmanager.pas 2015-11-11 01:18:13.000000000 +0000 @@ -43,7 +43,7 @@ {$IFDEF IDE_MEM_CHECK} MemCheck, {$ENDIF} - TypInfo, Classes, SysUtils, Forms, FileUtil, LCLProc, ComCtrls, + TypInfo, Classes, SysUtils, Forms, LazFileUtils, LCLProc, ComCtrls, LazIDEIntf, PackageIntf, MenuIntf, LazarusIDEStrConsts, EnvironmentOpts, CompilerOptions, PackageDefs, PackageSystem, ComponentReg, Project; @@ -62,7 +62,6 @@ procedure SetupMainBarShortCuts; virtual; abstract; procedure SetRecentPackagesMenu; virtual; abstract; procedure SaveSettings; virtual; abstract; - procedure UpdateVisibleComponentPalette; virtual; abstract; procedure ProcessCommand(Command: word; var Handled: boolean); virtual; abstract; procedure OnSourceEditorPopupMenu(const AddMenuItemProc: TAddMenuItemProc); virtual; abstract; procedure TranslateResourceStrings; virtual; abstract; @@ -139,7 +138,7 @@ // package installation procedure LoadInstalledPackages; virtual; abstract; - function DoShowOpenInstalledPckDlg: TModalResult; virtual; abstract; + function DoShowLoadedPkgDlg: TModalResult; virtual; abstract; function ShowConfigureCustomComponents: TModalResult; virtual; abstract; function DoCompileAutoInstallPackages(Flags: TPkgCompileFlags; OnlyBase: boolean): TModalResult; virtual; abstract; diff -Nru lazarus-1.4.4+dfsg/packager/brokendependenciesdlg.lfm lazarus-1.6+dfsg/packager/brokendependenciesdlg.lfm --- lazarus-1.4.4+dfsg/packager/brokendependenciesdlg.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/brokendependenciesdlg.lfm 2015-08-06 10:31:02.000000000 +0000 @@ -0,0 +1,60 @@ +object BrokenDependenciesDialog: TBrokenDependenciesDialog + Left = 495 + Height = 380 + Top = 68 + Width = 650 + ActiveControl = DependencyListView + BorderIcons = [biSystemMenu] + Caption = 'Broken Dependencies' + ClientHeight = 380 + ClientWidth = 650 + OnCreate = FormCreate + Position = poScreenCenter + LCLVersion = '1.5' + object NoteLabel: TLabel + Left = 6 + Height = 15 + Top = 6 + Width = 638 + Align = alTop + BorderSpacing.Around = 6 + Caption = 'NoteLabel' + ParentColor = False + WordWrap = True + end + object DependencyListView: TListView + Left = 6 + Height = 305 + Top = 27 + Width = 638 + Align = alClient + BorderSpacing.Around = 6 + Columns = < + item + Caption = '--' + Width = 200 + end + item + Caption = '--' + Width = 423 + end> + ReadOnly = True + TabOrder = 0 + ViewStyle = vsReport + end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 36 + Top = 338 + Width = 638 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 1 + end +end diff -Nru lazarus-1.4.4+dfsg/packager/brokendependenciesdlg.pas lazarus-1.6+dfsg/packager/brokendependenciesdlg.pas --- lazarus-1.4.4+dfsg/packager/brokendependenciesdlg.pas 2014-06-16 19:48:52.000000000 +0000 +++ lazarus-1.6+dfsg/packager/brokendependenciesdlg.pas 2015-08-06 12:50:41.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: brokendependenciesdlg.pas 45555 2014-06-16 19:48:52Z juha $ } +{ $Id: brokendependenciesdlg.pas 49605 2015-08-06 12:50:41Z juha $ } { /*************************************************************************** brokendependenciesdlg.pas @@ -27,10 +27,10 @@ *************************************************************************** Author: Mattias Gaertner + Form resource added: Alexey Torgashin Abstract: - TBrokenDependenciesDialog is the dialog showing, which dependencies are - broken. + TBrokenDependenciesDialog is the dialog showing, which dependencies are broken. } unit BrokenDependenciesDlg; @@ -39,185 +39,61 @@ interface uses - Classes, SysUtils, Forms, Controls, Buttons, LResources, StdCtrls, ComCtrls, - FileCtrl, Dialogs, - IDEWindowIntf, LazarusIDEStrConsts, Project, PackageDefs, PackageSystem; + Classes, SysUtils, Forms, StdCtrls, ComCtrls, ButtonPanel, + LazarusIDEStrConsts, PackageDefs; -type +type { TBrokenDependenciesDialog } TBrokenDependenciesDialog = class(TForm) - NoteLabel: TLabel; + ButtonPanel1: TButtonPanel; DependencyListView: TListView; - procedure BrokenDependenciesDialogClose(Sender: TObject; - var CloseAction: TCloseAction); - procedure BrokenDependenciesDialogResize(Sender: TObject); + NoteLabel: TLabel; + procedure FormCreate(Sender: TObject); private - fButtons: TFPList; // list of TBitBtn - fButtonSet: TMsgDlgButtons; - function GetButtons(Btn: TMsgDlgBtn): TBitBtn; - procedure SetupComponents; - procedure ClearButtons; - public DependencyList: TFPList; - constructor CreateNew(TheOwner: TComponent; Num: Integer = 0); override; - destructor Destroy; override; - property Buttons[Btn: TMsgDlgBtn]: TBitBtn read GetButtons; - procedure CreateButtons(BtnSet: TMsgDlgButtons); procedure UpdateDependencyList; end; -const - DefaultBrokenDepButtons = [mbYes,mbIgnore,mbCancel,mbAbort]; - -function ShowBrokenDependencies(DependencyList: TFPList; - BtnSet: TMsgDlgButtons): TModalResult; +function ShowBrokenDependencies(DependencyList: TFPList): TModalResult; implementation +{$R *.lfm} -function ShowBrokenDependencies(DependencyList: TFPList; - BtnSet: TMsgDlgButtons): TModalResult; +function ShowBrokenDependencies(DependencyList: TFPList): TModalResult; var - BrokenDependenciesDialog: TBrokenDependenciesDialog; + Dlg: TBrokenDependenciesDialog; begin - BrokenDependenciesDialog:=TBrokenDependenciesDialog.CreateNew(nil); - BrokenDependenciesDialog.DependencyList:=DependencyList; - with BrokenDependenciesDialog do begin - CreateButtons(BtnSet); - UpdateDependencyList; - Result:=ShowModal; - Free; + Dlg:=TBrokenDependenciesDialog.Create(nil); + try + Dlg.DependencyList:=DependencyList; + Dlg.UpdateDependencyList; + Result:=Dlg.ShowModal; + finally + Dlg.Free; end; end; { TBrokenDependenciesDialog } -procedure TBrokenDependenciesDialog.BrokenDependenciesDialogResize( - Sender: TObject); -var - i: Integer; - y: Integer; - x: Integer; - CurButton: TBitBtn; +procedure TBrokenDependenciesDialog.FormCreate(Sender: TObject); begin - x:=ClientWidth; - NoteLabel.SetBounds(5,5,x-10,80); - y:=NoteLabel.Top+NoteLabel.Height+2; - with DependencyListView do - SetBounds(0,y,x,Parent.ClientHeight-y-40); - y:=ClientHeight-35; - for i:=fButtons.Count-1 downto 0 do begin - CurButton:=TBitBtn(fButtons[i]); - dec(x,CurButton.Width+10); - with CurButton do - SetBounds(x,y,80,Height); - end; -end; - -function TBrokenDependenciesDialog.GetButtons(Btn: TMsgDlgBtn): TBitBtn; -var - CurBtn: TMsgDlgBtn; - i: Integer; -begin - if not (Btn in fButtonSet) then begin - Result:=nil; - exit; - end; - i:=0; - for CurBtn:=Low(TMsgDlgButtons) to High(TMsgDlgButtons) do begin - if CurBtn=Btn then break; - if Btn in fButtonSet then inc(i); - end; - Result:=TBitBtn(fButtons[i]); -end; - -procedure TBrokenDependenciesDialog.BrokenDependenciesDialogClose( - Sender: TObject; var CloseAction: TCloseAction); -begin - IDEDialogLayoutList.SaveLayout(Self); -end; - -procedure TBrokenDependenciesDialog.SetupComponents; -var - NewColumn: TListColumn; -begin - NoteLabel:=TLabel.Create(Self); - with NoteLabel do begin - Name:='NoteLabel'; - Parent:=Self; - WordWrap:=true; - Caption:=Format(lisBDDChangingThePackageNameOrVersionBreaksDependencies, - [LineEnding, LineEnding]); - end; - - DependencyListView:=TListView.Create(Self); - with DependencyListView do begin - Name:='DependencyListView'; - Parent:=Self; - ViewStyle:=vsReport; - NewColumn:=Columns.Add; - NewColumn.Width:=200; - NewColumn.Caption:='Package/Project'; - NewColumn:=Columns.Add; - NewColumn.Caption:=lisA2PDependency; - end; -end; - -procedure TBrokenDependenciesDialog.ClearButtons; -var - i: Integer; -begin - for i:=0 to fButtons.Count-1 do - TBitBtn(fButtons[i]).Free; - fButtons.Clear; -end; - -constructor TBrokenDependenciesDialog.CreateNew(TheOwner: TComponent; - Num: Integer); -begin - inherited CreateNew(TheOwner,Num); - Name:='BrokenDependenciesDialog'; Caption:=lisA2PBrokenDependencies; - fButtons:=TFPList.Create; - SetupComponents; - OnResize:=@BrokenDependenciesDialogResize; - Position:=poScreenCenter; - IDEDialogLayoutList.ApplyLayout(Self,500,300); - OnResize(Self); - OnClose:=@BrokenDependenciesDialogClose; -end; + ButtonPanel1.OKButton.Caption:=lisYes; + ButtonPanel1.CloseButton.Caption:=lisIgnore; -destructor TBrokenDependenciesDialog.Destroy; -begin - ClearButtons; - FreeAndNil(fButtons); - inherited Destroy; -end; + NoteLabel.Caption:=Format(lisBDDChangingThePackageNameOrVersionBreaksDependencies, + [LineEnding, LineEnding]); -procedure TBrokenDependenciesDialog.CreateButtons(BtnSet: TMsgDlgButtons); -var - Btn: TMsgDlgBtn; - NewBitBtn: TBitBtn; -begin - ClearButtons; - fButtonSet:=BtnSet; - for Btn:=Low(TMsgDlgButtons) to High(TMsgDlgButtons) do begin - if Btn in fButtonSet then begin - NewBitBtn:=TBitBtn.Create(Self); - NewBitBtn.Name:='BitBtn'+IntToStr(fButtons.Count+1); - NewBitBtn.Kind:=MsgDlgBtnToBitBtnKind[Btn]; - NewBitBtn.Parent:=Self; - if Btn=mbYes then NewBitBtn.Default:=true; - fButtons.Add(NewBitBtn); - end; - end; - OnResize(Self); + DependencyListView.Columns[0].Caption:=lisA2PPackageOrProject; + DependencyListView.Columns[1].Caption:=lisA2PDependency; end; + procedure TBrokenDependenciesDialog.UpdateDependencyList; var i: Integer; diff -Nru lazarus-1.4.4+dfsg/packager/cleanpkgdeps.lfm lazarus-1.6+dfsg/packager/cleanpkgdeps.lfm --- lazarus-1.4.4+dfsg/packager/cleanpkgdeps.lfm 2013-04-10 20:03:40.000000000 +0000 +++ lazarus-1.6+dfsg/packager/cleanpkgdeps.lfm 2015-06-04 11:17:49.000000000 +0000 @@ -3,75 +3,44 @@ Height = 380 Top = 176 Width = 522 + BorderIcons = [biSystemMenu] Caption = 'CleanPkgDepsDlg' ClientHeight = 380 ClientWidth = 522 OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter - LCLVersion = '1.1' - object TransitivityGroupBox: TGroupBox - Left = 0 - Height = 338 - Top = 0 - Width = 522 - Align = alClient - Caption = 'TransitivityGroupBox' - ClientHeight = 321 - ClientWidth = 518 - TabOrder = 0 - object TransitivityTreeView: TTreeView - Left = 0 - Height = 306 - Top = 15 - Width = 518 - Align = alClient - DefaultItemHeight = 18 - ReadOnly = True - TabOrder = 0 - OnMouseDown = TransitivityTreeViewMouseDown - Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] - end - object TransitivityLabel: TLabel - Left = 0 - Height = 15 - Top = 0 - Width = 518 - Align = alTop - Caption = 'TransitivityLabel' - ParentColor = False - WordWrap = True - end - end + LCLVersion = '1.5' object BtnPanel: TPanel Left = 0 - Height = 42 - Top = 338 + Height = 38 + Top = 342 Width = 522 Align = alBottom AutoSize = True + BevelOuter = bvNone ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.HorizontalSpacing = 6 - ClientHeight = 42 + ClientHeight = 38 ClientWidth = 522 TabOrder = 1 object DeleteSelectedBitBtn: TBitBtn - Left = 308 - Height = 28 - Top = 7 - Width = 134 + Left = 287 + Height = 26 + Top = 6 + Width = 135 Align = alRight AutoSize = True Caption = 'DeleteSelectedBitBtn' ModalResult = 1 - TabOrder = 0 + TabOrder = 2 end object CancelBitBtn: TBitBtn - Left = 448 - Height = 28 - Top = 7 - Width = 67 + Left = 428 + Height = 26 + Top = 6 + Width = 88 Align = alRight AutoSize = True Cancel = True @@ -79,29 +48,53 @@ DefaultCaption = True Kind = bkCancel ModalResult = 2 - TabOrder = 1 + TabOrder = 3 end object SelectAllBitBtn: TBitBtn - Left = 125 - Height = 28 - Top = 7 - Width = 96 + Left = 130 + Height = 26 + Top = 6 + Width = 103 Align = alLeft AutoSize = True Caption = 'SelectAllBitBtn' OnClick = SelectAllBitBtnClick - TabOrder = 2 + TabOrder = 1 end object SelectNoneBitBtn: TBitBtn - Left = 7 - Height = 28 - Top = 7 - Width = 112 + Left = 6 + Height = 26 + Top = 6 + Width = 118 Align = alLeft AutoSize = True Caption = 'SelectNoneBitBtn' OnClick = SelectNoneBitBtnClick - TabOrder = 3 + TabOrder = 0 end end + object TransitivityLabel: TLabel + Left = 6 + Height = 15 + Top = 6 + Width = 510 + Align = alTop + BorderSpacing.Around = 6 + Caption = 'TransitivityLabel' + ParentColor = False + WordWrap = True + end + object TransitivityTreeView: TTreeView + Left = 6 + Height = 309 + Top = 27 + Width = 510 + Align = alClient + BorderSpacing.Around = 6 + DefaultItemHeight = 18 + ReadOnly = True + TabOrder = 0 + OnMouseDown = TransitivityTreeViewMouseDown + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] + end end diff -Nru lazarus-1.4.4+dfsg/packager/cleanpkgdeps.pas lazarus-1.6+dfsg/packager/cleanpkgdeps.pas --- lazarus-1.4.4+dfsg/packager/cleanpkgdeps.pas 2013-04-09 20:02:31.000000000 +0000 +++ lazarus-1.6+dfsg/packager/cleanpkgdeps.pas 2015-06-04 11:17:49.000000000 +0000 @@ -19,6 +19,11 @@ *************************************************************************** Author: Mattias Gaertner + + Abstract: Dialog to show all not needed package dependencies. + At the moment it shows dependencies that exists already through other + packages. For example using LCL automatically uses LazUtils, so LazUtils + will be shown as not needed. } unit CleanPkgDeps; @@ -27,8 +32,8 @@ interface uses - Classes, SysUtils, contnrs, FileUtil, AvgLvlTree, LazLogger, LvlGraphCtrl, - Forms, Controls, Graphics, Dialogs, ButtonPanel, ComCtrls, ExtCtrls, StdCtrls, + Classes, SysUtils, contnrs, FileUtil, AvgLvlTree, LazLogger, + Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons, LazarusIDEStrConsts, Project, PackageDefs, IDEImagesIntf; const @@ -51,7 +56,6 @@ BtnPanel: TPanel; SelectAllBitBtn: TBitBtn; SelectNoneBitBtn: TBitBtn; - TransitivityGroupBox: TGroupBox; TransitivityLabel: TLabel; TransitivityTreeView: TTreeView; procedure FormCreate(Sender: TObject); @@ -59,7 +63,7 @@ procedure SelectAllBitBtnClick(Sender: TObject); procedure SelectNoneBitBtnClick(Sender: TObject); procedure TransitivityTreeViewMouseDown(Sender: TObject; - Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + {%H-}Button: TMouseButton; {%H-}Shift: TShiftState; X, Y: Integer); private function GetTVNodeChecked(TVNode: TTreeNode): boolean; procedure SetTVNodeChecked(TVNode: TTreeNode; AValue: boolean); @@ -143,7 +147,6 @@ ImgIndexKeep := IDEImages.LoadImage(16, 'menu_run'); Caption:=lisPkgCleanUpPackageDependencies; - TransitivityGroupBox.Caption:=lisPkgTransitivity; TransitivityLabel.Caption:= lisPkgTheFollowingDependenciesAreNotNeededBecauseOfTheAu; TransitivityTreeView.Images:=IDEImages.Images_16; @@ -364,7 +367,9 @@ Result:=TLazPackage(DepOwner).IDAsString else Result:=TLazPackage(DepOwner).Name; - end; + end + else + Result:=''; end; function TCleanPkgDepsDlg.FetchDeletes: TObjectList; diff -Nru lazarus-1.4.4+dfsg/packager/confirmpkglistdlg.lfm lazarus-1.6+dfsg/packager/confirmpkglistdlg.lfm --- lazarus-1.4.4+dfsg/packager/confirmpkglistdlg.lfm 2013-06-22 15:35:03.000000000 +0000 +++ lazarus-1.6+dfsg/packager/confirmpkglistdlg.lfm 2015-05-29 22:51:32.000000000 +0000 @@ -1,69 +1,43 @@ object ConfirmPackageListDialog: TConfirmPackageListDialog Left = 342 - Height = 240 + Height = 273 Top = 152 - Width = 450 - ActiveControl = OkButton + Width = 462 + BorderIcons = [biSystemMenu] Caption = 'ConfirmPackageListDialog' - ClientHeight = 240 - ClientWidth = 450 + ClientHeight = 273 + ClientWidth = 462 + OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '1.1' + LCLVersion = '1.5' object PackagesGrid: TStringGrid Left = 6 - Height = 190 + Height = 229 Top = 6 - Width = 438 + Width = 450 Align = alClient AutoEdit = False BorderSpacing.Around = 6 ColCount = 3 FixedCols = 0 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowSelect, goColSpanning, goSmoothScroll] + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goRowSelect, goThumbTracking, goColSpanning, goSmoothScroll] TabOrder = 0 end - object BtnPanel: TPanel - Left = 0 - Height = 38 - Top = 202 + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 26 + Top = 241 Width = 450 - Align = alBottom - BevelOuter = bvNone - ClientHeight = 38 - ClientWidth = 450 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 1 - object CancelButton: TBitBtn - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Side = asrBottom - Left = 365 - Height = 26 - Top = 6 - Width = 79 - Align = alRight - AutoSize = True - BorderSpacing.Around = 6 - Caption = 'Cancel' - Constraints.MinWidth = 75 - Kind = bkCancel - ModalResult = 2 - TabOrder = 0 - end - object OkButton: TBitBtn - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Side = asrBottom - Left = 284 - Height = 26 - Top = 6 - Width = 75 - Align = alRight - AutoSize = True - BorderSpacing.Around = 6 - Caption = '&OK' - Constraints.MinWidth = 75 - Default = True - Kind = bkOK - ModalResult = 1 - TabOrder = 1 - end + ShowButtons = [pbOK, pbCancel] + ShowBevel = False end end diff -Nru lazarus-1.4.4+dfsg/packager/confirmpkglistdlg.pas lazarus-1.6+dfsg/packager/confirmpkglistdlg.pas --- lazarus-1.4.4+dfsg/packager/confirmpkglistdlg.pas 2013-06-22 15:35:03.000000000 +0000 +++ lazarus-1.6+dfsg/packager/confirmpkglistdlg.pas 2015-05-29 22:51:32.000000000 +0000 @@ -25,17 +25,16 @@ interface uses - Buttons, Classes, ExtCtrls, Grids, Forms, Controls; + Buttons, Classes, ExtCtrls, Grids, Forms, Controls, ButtonPanel; type { TConfirmPackageListDialog } TConfirmPackageListDialog = class(TForm) - BtnPanel: TPanel; - CancelButton: TBitBtn; - OkButton: TBitBtn; + ButtonPanel1: TButtonPanel; PackagesGrid: TStringGrid; + procedure FormCreate(Sender: TObject); private function Confirm(AChangesReport: TStrings): Boolean; end; @@ -63,6 +62,13 @@ { TConfirmPackageListDialog } +procedure TConfirmPackageListDialog.FormCreate(Sender: TObject); +begin + Caption := lisConfirmNewPackageSetForTheIDE; + ButtonPanel1.OkButton.Caption := lisContinue; + ButtonPanel1.CancelButton.Caption := lisCancel; +end; + function TConfirmPackageListDialog.Confirm(AChangesReport: TStrings): Boolean; var s: String; @@ -78,9 +84,6 @@ // Auto-grow dialog up to 3/4 of the screen height. d := Min(d, Screen.Height * 3 div 4 - Height); Height := Height + d; - Caption := lisConfirmNewPackageSetForTheIDE; - OkButton.Caption := lisContinue; - CancelButton.Caption := lisCancel; for i := 1 to AChangesReport.Count do begin s := AChangesReport[i - 1]; diff -Nru lazarus-1.4.4+dfsg/packager/frames/package_description_options.pas lazarus-1.6+dfsg/packager/frames/package_description_options.pas --- lazarus-1.4.4+dfsg/packager/frames/package_description_options.pas 2014-07-06 22:37:50.000000000 +0000 +++ lazarus-1.6+dfsg/packager/frames/package_description_options.pas 2015-08-06 10:32:04.000000000 +0000 @@ -32,7 +32,7 @@ VersionReleaseSpinEdit: TSpinEdit; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -95,17 +95,16 @@ NewVersion.Build := RoundToInt(VersionBuildSpinEdit.Value); // check for broken dependencies - BrokenDependencies := PackageGraph.GetBrokenDependenciesWhenChangingPkgID(LazPackage, LazPackage.Name, NewVersion); + BrokenDependencies := PackageGraph.GetBrokenDependenciesWhenChangingPkgID(LazPackage, + LazPackage.Name, NewVersion); RenameDependencies := False; try if BrokenDependencies.Count > 0 then begin - MsgResult := ShowBrokenDependencies(BrokenDependencies, DefaultBrokenDepButtons); - if MsgResult = mrYes then + MsgResult := ShowBrokenDependencies(BrokenDependencies); + if MsgResult = mrOK then // = Yes RenameDependencies := True - else if MsgResult = mrNo then - RenameDependencies := False - else + else if MsgResult <> mrClose then // <> Ignore exit; end; finally diff -Nru lazarus-1.4.4+dfsg/packager/frames/package_i18n_options.lfm lazarus-1.6+dfsg/packager/frames/package_i18n_options.lfm --- lazarus-1.4.4+dfsg/packager/frames/package_i18n_options.lfm 2012-01-15 17:34:52.000000000 +0000 +++ lazarus-1.6+dfsg/packager/frames/package_i18n_options.lfm 2015-05-29 09:04:17.000000000 +0000 @@ -1,92 +1,81 @@ -inherited PackageI18NOptionsFrame: TPackageI18NOptionsFrame +object PackageI18NOptionsFrame: TPackageI18NOptionsFrame + Left = 0 Height = 322 + Top = 0 Width = 551 ClientHeight = 322 ClientWidth = 551 TabOrder = 0 - DesignLeft = 851 - DesignTop = 207 - object I18NGroupBox: TGroupBox[0] + DesignLeft = 452 + DesignTop = 255 + object I18NGroupBox: TGroupBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = EnableI18NCheckBox AnchorSideTop.Side = asrBottom AnchorSideRight.Control = Owner AnchorSideRight.Side = asrBottom Left = 0 - Height = 97 - Top = 30 + Height = 76 + Top = 25 Width = 551 Anchors = [akTop, akLeft, akRight] AutoSize = True BorderSpacing.Top = 6 Caption = 'i18n Options' - ClientHeight = 81 + ClientHeight = 56 ClientWidth = 547 - TabOrder = 0 + TabOrder = 1 object PoOutDirLabel: TLabel AnchorSideLeft.Control = I18NGroupBox AnchorSideTop.Control = I18NGroupBox Left = 6 Height = 15 Top = 6 - Width = 113 + Width = 111 BorderSpacing.Around = 6 Caption = 'PO Output Directory:' ParentColor = False end - object POOutDirEdit: TEdit - AnchorSideLeft.Control = I18NGroupBox - AnchorSideTop.Control = PoOutDirLabel - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = POOutDirButton - Left = 6 - Height = 24 - Top = 27 - Width = 508 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Around = 6 - TabOrder = 0 - end - object POOutDirButton: TButton - AnchorSideTop.Control = POOutDirEdit - AnchorSideRight.Control = I18NGroupBox - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = POOutDirEdit - AnchorSideBottom.Side = asrBottom - Left = 520 - Height = 24 - Top = 27 - Width = 21 - Anchors = [akTop, akRight, akBottom] - AutoSize = True - BorderSpacing.Right = 6 - Caption = '...' - OnClick = POOutDirButtonClick - TabOrder = 1 - end object PoForFormsCheckBox: TCheckBox AnchorSideLeft.Control = PoOutDirLabel - AnchorSideTop.Control = POOutDirEdit AnchorSideTop.Side = asrBottom Left = 6 - Height = 24 + Height = 19 Top = 57 - Width = 145 + Width = 136 Caption = 'PoForFormsCheckBox' ParentShowHint = False ShowHint = True - TabOrder = 2 + TabOrder = 1 + end + object POOutDirEdit: TEditButton + AnchorSideLeft.Control = I18NGroupBox + AnchorSideTop.Control = PoOutDirLabel + AnchorSideTop.Side = asrBottom + AnchorSideRight.Side = asrBottom + Left = 6 + Height = 23 + Top = 27 + Width = 536 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Around = 6 + ButtonWidth = 45 + MaxLength = 0 + NumGlyphs = 1 + OnButtonClick = POOutDirButtonClick + PasswordChar = #0 + TabOrder = 0 end end - object EnableI18NCheckBox: TCheckBox[1] + object EnableI18NCheckBox: TCheckBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner Left = 0 - Height = 24 + Height = 19 Top = 0 - Width = 91 + Width = 80 Caption = 'Enable i18n' OnChange = EnableI18NCheckBoxChange - TabOrder = 1 + TabOrder = 0 end end diff -Nru lazarus-1.4.4+dfsg/packager/frames/package_i18n_options.pas lazarus-1.6+dfsg/packager/frames/package_i18n_options.pas --- lazarus-1.4.4+dfsg/packager/frames/package_i18n_options.pas 2014-07-06 22:37:50.000000000 +0000 +++ lazarus-1.6+dfsg/packager/frames/package_i18n_options.pas 2015-05-29 09:04:17.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, + Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, EditBtn, IDEOptionsIntf, LazarusIDEStrConsts, PackageDefs, IDEDialogs; type @@ -15,8 +15,7 @@ TPackageI18NOptionsFrame = class(TAbstractIDEOptionsEditor) EnableI18NCheckBox: TCheckBox; I18NGroupBox: TGroupBox; - POOutDirButton: TButton; - POOutDirEdit: TEdit; + POOutDirEdit: TEditButton; PoOutDirLabel: TLabel; PoForFormsCheckBox: TCheckBox; procedure EnableI18NCheckBoxChange(Sender: TObject); @@ -25,7 +24,7 @@ FLazPackage: TLazPackage; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -75,6 +74,8 @@ I18NGroupBox.Enabled := FLazPackage.EnableI18N; POOutDirEdit.Text := FLazPackage.POOutputDirectory; PoForFormsCheckBox.Checked:=FLazPackage.EnableI18NForLFM; + + POOutDirEdit.Button.LoadGlyphFromResourceName(HInstance, ResBtnSelDir); //DirectoryEdit end; procedure TPackageI18NOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); diff -Nru lazarus-1.4.4+dfsg/packager/frames/package_integration_options.lfm lazarus-1.6+dfsg/packager/frames/package_integration_options.lfm --- lazarus-1.4.4+dfsg/packager/frames/package_integration_options.lfm 2013-04-04 11:05:03.000000000 +0000 +++ lazarus-1.6+dfsg/packager/frames/package_integration_options.lfm 2015-05-29 09:04:14.000000000 +0000 @@ -10,8 +10,8 @@ DesignTop = 267 object UpdateRadioGroup: TRadioGroup Left = 0 - Height = 103 - Top = 133 + Height = 89 + Top = 114 Width = 461 Align = alTop AutoFill = True @@ -26,7 +26,7 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 - ClientHeight = 84 + ClientHeight = 69 ClientWidth = 457 ItemIndex = 0 Items.Strings = ( @@ -38,14 +38,14 @@ end object DocGroupBox: TGroupBox Left = 0 - Height = 91 - Top = 242 + Height = 84 + Top = 209 Width = 461 Align = alTop AutoSize = True BorderSpacing.Top = 6 Caption = 'FPDoc settings' - ClientHeight = 72 + ClientHeight = 64 ClientWidth = 457 TabOrder = 1 object FPDocSearchPathsEdit: TEdit @@ -54,10 +54,10 @@ AnchorSideTop.Control = DocGroupBox AnchorSideRight.Control = DocGroupBox AnchorSideRight.Side = asrBottom - Left = 175 - Height = 27 + Left = 138 + Height = 23 Top = 6 - Width = 276 + Width = 313 Anchors = [akTop, akLeft, akRight] BorderSpacing.Around = 6 ParentShowHint = False @@ -70,9 +70,9 @@ AnchorSideTop.Control = FPDocSearchPathsEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 11 - Width = 163 + Height = 15 + Top = 10 + Width = 126 BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = 'FPDocSearchPathsLabel' @@ -83,9 +83,9 @@ AnchorSideTop.Control = FPDocPackageNameEdit AnchorSideTop.Side = asrCenter Left = 6 - Height = 17 - Top = 44 - Width = 176 + Height = 15 + Top = 39 + Width = 138 BorderSpacing.Left = 6 Caption = 'FPDocPackageNameLabel' ParentColor = False @@ -95,22 +95,19 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = FPDocSearchPathsEdit AnchorSideTop.Side = asrBottom - Left = 188 - Height = 27 - Top = 39 + Left = 150 + Height = 23 + Top = 35 Width = 116 BorderSpacing.Around = 6 - OnEnter = FPDocPackageNameEditEnter - OnExit = FPDocPackageNameEditExit ParentShowHint = False ShowHint = True TabOrder = 1 - Text = 'FPDocPackageNameEdit' end end object PkgTypeGroupBox: TGroupBox Left = 0 - Height = 127 + Height = 108 Top = 0 Width = 461 Align = alTop @@ -124,14 +121,14 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 - ClientHeight = 108 + ClientHeight = 88 ClientWidth = 457 Constraints.MinHeight = 30 TabOrder = 2 OnClick = PkgTypeGroupBoxClick object RunAndDesignTimeRadioButton: TRadioButton Left = 6 - Height = 24 + Height = 19 Top = 6 Width = 445 Caption = 'RunAndDesignTimeRadioButton' @@ -143,8 +140,8 @@ end object DesignTimeRadioButton: TRadioButton Left = 6 - Height = 24 - Top = 30 + Height = 19 + Top = 25 Width = 445 Caption = 'DesignTimeRadioButton' ParentShowHint = False @@ -153,8 +150,8 @@ end object RunTimeRadioButton: TRadioButton Left = 6 - Height = 24 - Top = 54 + Height = 19 + Top = 44 Width = 445 Caption = 'RunTimeRadioButton' ParentShowHint = False @@ -163,8 +160,8 @@ end object RunTimeOnlyRadioButton: TRadioButton Left = 6 - Height = 24 - Top = 78 + Height = 19 + Top = 63 Width = 445 Caption = 'RunTimeOnlyRadioButton' ParentShowHint = False diff -Nru lazarus-1.4.4+dfsg/packager/frames/package_integration_options.pas lazarus-1.6+dfsg/packager/frames/package_integration_options.pas --- lazarus-1.4.4+dfsg/packager/frames/package_integration_options.pas 2015-01-23 22:03:06.000000000 +0000 +++ lazarus-1.6+dfsg/packager/frames/package_integration_options.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, ExtCtrls, StdCtrls, Dialogs, - IDEOptionsIntf, MacroIntf, PackageIntf, + Classes, SysUtils, Forms, Controls, ExtCtrls, StdCtrls, Dialogs, + LazFileUtils, IDEOptionsIntf, MacroIntf, PackageIntf, LazarusIDEStrConsts, PackageDefs, PathEditorDlg, IDEProcs, CodeHelp; type @@ -25,8 +25,6 @@ RunTimeOnlyRadioButton: TRadioButton; RunTimeRadioButton: TRadioButton; UpdateRadioGroup: TRadioGroup; - procedure FPDocPackageNameEditEnter(Sender: TObject); - procedure FPDocPackageNameEditExit(Sender: TObject); procedure PkgTypeGroupBoxClick(Sender: TObject); private FLazPackage: TLazPackage; @@ -40,7 +38,7 @@ public function Check: Boolean; override; function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; @@ -68,20 +66,6 @@ end; end; -procedure TPackageIntegrationOptionsFrame.FPDocPackageNameEditEnter(Sender: TObject); -begin - if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then - FPDocPackageNameEdit.Text:=''; -end; - -procedure TPackageIntegrationOptionsFrame.FPDocPackageNameEditExit(Sender: TObject); -begin - if GetFPDocPkgNameEditValue='' then - FPDocPackageNameEdit.Text:=lisDefaultPlaceholder - else - FPDocPackageNameEdit.Text:=GetFPDocPkgNameEditValue; -end; - function TPackageIntegrationOptionsFrame.GetSelectedPkgType: TLazPackageType; begin if RunTimeOnlyRadioButton.Checked then @@ -100,6 +84,7 @@ CurDir: string; StartPos, OldStartPos: integer; DlgResult: TModalResult; + s: String; begin // check NewPath StartPos := 1; @@ -112,8 +97,11 @@ FLazPackage.LongenFilename(CurDir); if not DirPathExists(CurDir) then begin + s:=Format(lisDirectoryNotFound, [CurDir]); + if Context<>'' then + s:=Context+LineEnding+s; DlgResult := QuestionDlg(lisEnvOptDlgDirectoryNotFound, - Format(lisDirectoryNotFound, [CurDir]), + s, mtError, [mrIgnore, mrYes, lisRemoveFromSearchPath, mrCancel], 0); case DlgResult of mrIgnore: ; @@ -200,10 +188,9 @@ UpdateRadioGroup.ItemIndex := 2; end; SetPathTextAndHint(FLazPackage.FPDocPaths, FPDocSearchPathsEdit); - if FLazPackage.FPDocPackageName='' then - FPDocPackageNameEdit.Text:=lisDefaultPlaceholder - else - FPDocPackageNameEdit.Text:=FLazPackage.FPDocPackageName; + + FPDocPackageNameEdit.TextHint:=lisDefaultPlaceholder; + FPDocPackageNameEdit.Text:=FLazPackage.FPDocPackageName; end; function TPackageIntegrationOptionsFrame.ShowMsgPackageTypeMustBeDesign: boolean; @@ -222,10 +209,7 @@ function TPackageIntegrationOptionsFrame.GetFPDocPkgNameEditValue: string; begin - if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then - Result:='' - else - Result:=MakeValidFPDocPackageName(FPDocPackageNameEdit.Text); + Result:=MakeValidFPDocPackageName(FPDocPackageNameEdit.Text); end; function TPackageIntegrationOptionsFrame.Check: Boolean; diff -Nru lazarus-1.4.4+dfsg/packager/frames/package_provides_options.pas lazarus-1.6+dfsg/packager/frames/package_provides_options.pas --- lazarus-1.4.4+dfsg/packager/frames/package_provides_options.pas 2014-07-06 22:37:50.000000000 +0000 +++ lazarus-1.6+dfsg/packager/frames/package_provides_options.pas 2015-03-10 13:13:12.000000000 +0000 @@ -17,7 +17,7 @@ ProvidesMemo: TMemo; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/packager/frames/package_usage_options.pas lazarus-1.6+dfsg/packager/frames/package_usage_options.pas --- lazarus-1.4.4+dfsg/packager/frames/package_usage_options.pas 2015-01-23 22:03:06.000000000 +0000 +++ lazarus-1.6+dfsg/packager/frames/package_usage_options.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, StdCtrls, Dialogs, PathEditorDlg, - IDEOptionsIntf, MacroIntf, + SysUtils, LazFileUtils, Forms, Controls, StdCtrls, Dialogs, + PathEditorDlg, IDEOptionsIntf, MacroIntf, LazarusIDEStrConsts, IDEProcs, PackageDefs; type @@ -36,10 +36,10 @@ ObjectPathButton: TPathEditorButton; LibraryPathButton: TPathEditorButton; FLazPackage: TLazPackage; - function PathEditBtnExecuted(Context: String; var NewPath: String): Boolean; + function PathEditBtnExecuted({%H-}Context: String; var NewPath: String): Boolean; public function GetTitle: string; override; - procedure Setup(ADialog: TAbstractOptionsEditorDialog); override; + procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/easydockmgr-1.lpl lazarus-1.6+dfsg/packager/globallinks/easydockmgr-1.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/easydockmgr-1.lpl 2010-12-02 12:53:35.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/easydockmgr-1.lpl 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -$(LazarusDir)/examples/dockmanager/package/easydockmgr.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/easydockmgrdsgn-0.lpl lazarus-1.6+dfsg/packager/globallinks/easydockmgrdsgn-0.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/easydockmgrdsgn-0.lpl 2010-05-24 18:09:17.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/easydockmgrdsgn-0.lpl 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -$(LazarusDir)/examples/dockmanager/design/easydockmgrdsgn.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/editortoolbar-0.8.2.lpl lazarus-1.6+dfsg/packager/globallinks/editortoolbar-0.8.2.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/editortoolbar-0.8.2.lpl 2014-10-07 23:10:39.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/editortoolbar-0.8.2.lpl 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -$(LazarusDir)/components/editortoolbar/editortoolbar.lpk - diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/editortoolbar-0.lpl lazarus-1.6+dfsg/packager/globallinks/editortoolbar-0.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/editortoolbar-0.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/editortoolbar-0.lpl 2015-11-30 18:38:55.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/editortoolbar/editortoolbar.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/favorites-0.1.1.lpl lazarus-1.6+dfsg/packager/globallinks/favorites-0.1.1.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/favorites-0.1.1.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/favorites-0.1.1.lpl 2015-11-27 05:37:01.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/favorites/favorites.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lazdebuggerfpdserver-0.1.lpl lazarus-1.6+dfsg/packager/globallinks/lazdebuggerfpdserver-0.1.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lazdebuggerfpdserver-0.1.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lazdebuggerfpdserver-0.1.lpl 2015-06-22 10:00:16.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/lazdebuggers/lazdebuggerfpdserver/lazdebuggerfpdserver.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lazgoogleapis-1.lpl lazarus-1.6+dfsg/packager/globallinks/lazgoogleapis-1.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lazgoogleapis-1.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lazgoogleapis-1.lpl 2015-05-08 06:40:01.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/googleapis/lazgoogleapis.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lazprojectgroups-0.2.lpl lazarus-1.6+dfsg/packager/globallinks/lazprojectgroups-0.2.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lazprojectgroups-0.2.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lazprojectgroups-0.2.lpl 2015-11-30 18:39:11.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/projectgroups/lazprojectgroups.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lcl-1.4.4.lpl lazarus-1.6+dfsg/packager/globallinks/lcl-1.4.4.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lcl-1.4.4.lpl 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lcl-1.4.4.lpl 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -$(LazarusDir)/lcl/interfaces/lcl.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lcl-1.6.0.4.lpl lazarus-1.6+dfsg/packager/globallinks/lcl-1.6.0.4.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lcl-1.6.0.4.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lcl-1.6.0.4.lpl 2016-02-14 09:48:23.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/lcl/interfaces/lcl.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lclbase-1.4.4.lpl lazarus-1.6+dfsg/packager/globallinks/lclbase-1.4.4.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lclbase-1.4.4.lpl 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lclbase-1.4.4.lpl 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -$(LazarusDir)/lcl/lclbase.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lclbase-1.6.0.4.lpl lazarus-1.6+dfsg/packager/globallinks/lclbase-1.6.0.4.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lclbase-1.6.0.4.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lclbase-1.6.0.4.lpl 2016-02-14 09:48:23.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/lcl/lclbase.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/lrspreadsheetexport-0.9.lpl lazarus-1.6+dfsg/packager/globallinks/lrspreadsheetexport-0.9.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/lrspreadsheetexport-0.9.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/lrspreadsheetexport-0.9.lpl 2015-11-19 13:15:26.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/lazreport/source/addons/lrspreadsheetexport/lrspreadsheetexport.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/packagetabs-0.1.1.lpl lazarus-1.6+dfsg/packager/globallinks/packagetabs-0.1.1.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/packagetabs-0.1.1.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/packagetabs-0.1.1.lpl 2015-11-24 11:32:10.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/packagetabs/packagetabs.lpk diff -Nru lazarus-1.4.4+dfsg/packager/globallinks/sparta_dockedformeditor-0.lpl lazarus-1.6+dfsg/packager/globallinks/sparta_dockedformeditor-0.lpl --- lazarus-1.4.4+dfsg/packager/globallinks/sparta_dockedformeditor-0.lpl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/globallinks/sparta_dockedformeditor-0.lpl 2015-11-19 13:15:26.000000000 +0000 @@ -0,0 +1 @@ +$(LazarusDir)/components/sparta/dockedformeditor/sparta_dockedformeditor.lpk diff -Nru lazarus-1.4.4+dfsg/packager/installpkgsetdlg.lfm lazarus-1.6+dfsg/packager/installpkgsetdlg.lfm --- lazarus-1.4.4+dfsg/packager/installpkgsetdlg.lfm 2014-10-30 19:47:40.000000000 +0000 +++ lazarus-1.6+dfsg/packager/installpkgsetdlg.lfm 2015-11-23 17:15:52.000000000 +0000 @@ -1,21 +1,21 @@ object InstallPkgSetDialog: TInstallPkgSetDialog - Left = 376 + Left = 378 Height = 578 - Top = 216 + Top = 219 Width = 607 - ActiveControl = AvailableFilterEdit BorderStyle = bsSizeToolWin Caption = 'InstallPkgSetDialog' ClientHeight = 578 ClientWidth = 607 Constraints.MinHeight = 400 Constraints.MinWidth = 450 + OnClose = FormClose OnCreate = InstallPkgSetDialogCreate OnDestroy = InstallPkgSetDialogDestroy OnResize = InstallPkgSetDialogResize OnShow = InstallPkgSetDialogShow Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object InstallPkgGroupBox: TGroupBox AnchorSideLeft.Control = Owner AnchorSideTop.Control = NoteLabel @@ -23,24 +23,26 @@ AnchorSideRight.Control = lblMiddle AnchorSideBottom.Control = PkgInfoGroupBox Left = 6 - Height = 373 - Top = 27 + Height = 375 + Top = 29 Width = 294 Anchors = [akTop, akLeft, akRight, akBottom] + AutoSize = True BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Right = 3 BorderSpacing.Bottom = 6 Caption = 'InstallPkgGroupBox' - ClientHeight = 354 + ClientHeight = 356 ClientWidth = 290 TabOrder = 0 object ImportButton: TButton Left = 6 - Height = 25 - Top = 292 + Height = 29 + Top = 286 Width = 278 Align = alBottom + AutoSize = True BorderSpacing.Around = 6 Caption = 'ImportButton' OnClick = ImportButtonClick @@ -48,10 +50,11 @@ end object ExportButton: TButton Left = 6 - Height = 25 - Top = 323 + Height = 29 + Top = 321 Width = 278 Align = alBottom + AutoSize = True BorderSpacing.Around = 6 Caption = 'ExportButton' OnClick = ExportButtonClick @@ -60,12 +63,12 @@ object InstallTreeView: TTreeView AnchorSideTop.Control = InstalledFilterEdit AnchorSideTop.Side = asrBottom + AnchorSideBottom.Control = UninstallButton Left = 8 - Height = 227 - Top = 28 + Height = 215 + Top = 30 Width = 278 Anchors = [akTop, akLeft, akRight, akBottom] - DefaultItemHeight = 18 MultiSelect = True ReadOnly = True ShowButtons = False @@ -80,10 +83,11 @@ end object UninstallButton: TBitBtn Left = 6 - Height = 25 - Top = 261 + Height = 29 + Top = 251 Width = 278 Align = alBottom + AutoSize = True BorderSpacing.Around = 6 Caption = 'UninstallButton' OnClick = UninstallButtonClick @@ -92,7 +96,7 @@ object InstalledFilterEdit: TTreeFilterEdit AnchorSideTop.Control = InstallPkgGroupBox Left = 8 - Height = 28 + Height = 27 Top = 3 Width = 276 ButtonWidth = 23 @@ -115,8 +119,8 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = PkgInfoGroupBox Left = 306 - Height = 373 - Top = 27 + Height = 375 + Top = 29 Width = 295 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 3 @@ -124,21 +128,21 @@ BorderSpacing.Right = 6 BorderSpacing.Bottom = 6 Caption = 'AvailablePkgGroupBox' - ClientHeight = 354 + ClientHeight = 356 ClientWidth = 291 TabOrder = 1 object AvailableTreeView: TTreeView AnchorSideTop.Control = AvailableFilterEdit AnchorSideTop.Side = asrBottom + AnchorSideBottom.Control = AddToInstallButton Left = 6 - Height = 289 - Top = 28 + Height = 285 + Top = 30 Width = 279 Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Right = 6 BorderSpacing.Bottom = 6 - DefaultItemHeight = 18 MultiSelect = True ReadOnly = True ShowButtons = False @@ -153,10 +157,11 @@ end object AddToInstallButton: TBitBtn Left = 6 - Height = 25 - Top = 323 + Height = 29 + Top = 321 Width = 279 Align = alBottom + AutoSize = True BorderSpacing.Around = 6 Caption = 'AddToInstallButton' OnClick = AddToInstallButtonClick @@ -165,7 +170,7 @@ object AvailableFilterEdit: TTreeFilterEdit AnchorSideTop.Control = AvailablePkgGroupBox Left = 6 - Height = 28 + Height = 27 Top = 3 Width = 279 ButtonWidth = 23 @@ -181,20 +186,22 @@ end object PkgInfoGroupBox: TGroupBox AnchorSideBottom.Control = BtnPanel - Left = 0 + Left = 6 Height = 127 - Top = 406 - Width = 607 + Top = 410 + Width = 595 Align = alBottom + BorderSpacing.Left = 6 + BorderSpacing.Right = 6 Caption = 'PkgInfoGroupBox' ClientHeight = 108 - ClientWidth = 603 + ClientWidth = 591 TabOrder = 2 object PkgInfoMemo: TMemo Left = 6 Height = 96 Top = 6 - Width = 591 + Width = 579 Align = alClient BorderSpacing.Around = 6 ReadOnly = True @@ -204,20 +211,20 @@ end object BtnPanel: TPanel Left = 0 - Height = 45 - Top = 533 + Height = 41 + Top = 537 Width = 607 Align = alBottom AutoSize = True BevelOuter = bvNone - ClientHeight = 45 + ClientHeight = 41 ClientWidth = 607 TabOrder = 3 object HelpButton: TBitBtn Left = 6 - Height = 33 + Height = 29 Top = 6 - Width = 76 + Width = 75 Align = alLeft AutoSize = True BorderSpacing.Around = 6 @@ -228,10 +235,10 @@ TabOrder = 0 end object CancelButton: TBitBtn - Left = 156 - Height = 33 + Left = 164 + Height = 29 Top = 6 - Width = 90 + Width = 76 Align = alRight AutoSize = True BorderSpacing.Around = 6 @@ -243,10 +250,10 @@ TabOrder = 1 end object SaveAndExitButton: TBitBtn - Left = 441 - Height = 33 + Left = 439 + Height = 29 Top = 6 - Width = 160 + Width = 162 Align = alRight AutoSize = True BorderSpacing.Around = 6 @@ -292,10 +299,10 @@ TabOrder = 3 end object SaveAndRebuildButton: TBitBtn - Left = 252 - Height = 33 + Left = 246 + Height = 29 Top = 6 - Width = 183 + Width = 187 Align = alRight AutoSize = True BorderSpacing.Around = 6 @@ -343,7 +350,7 @@ end object NoteLabel: TLabel Left = 6 - Height = 15 + Height = 17 Top = 6 Width = 595 Align = alTop diff -Nru lazarus-1.4.4+dfsg/packager/installpkgsetdlg.pas lazarus-1.6+dfsg/packager/installpkgsetdlg.pas --- lazarus-1.4.4+dfsg/packager/installpkgsetdlg.pas 2014-09-14 13:23:50.000000000 +0000 +++ lazarus-1.6+dfsg/packager/installpkgsetdlg.pas 2015-12-21 22:56:17.000000000 +0000 @@ -37,13 +37,18 @@ interface uses - Classes, SysUtils, contnrs, LCLProc, Forms, Controls, Graphics, Dialogs, - KeywordFuncLists, BasicCodeTools, StdCtrls, Buttons, FileUtil, ExtCtrls, - ComCtrls, EditBtn, LCLType, ImgList, AvgLvlTree, Laz2_XMLCfg, LazUTF8, - LazFileUtils, TreeFilterEdit, PackageIntf, IDEImagesIntf, IDEHelpIntf, - IDEDialogs, LazarusIDEStrConsts, EnvironmentOpts, InputHistory, LazConf, - IDEProcs, PackageDefs, PackageSystem, PackageLinks, IDEContextHelpEdit, - LPKCache; + Classes, SysUtils, contnrs, + LCLType, LCLProc, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, + ExtCtrls, ComCtrls, ImgList, TreeFilterEdit, + // Codetools + KeywordFuncLists, BasicCodeTools, + // LazUtils + FileUtil, LazFileUtils, LazUTF8, AvgLvlTree, Laz2_XMLCfg, + // IdeIntf + PackageIntf, IDEImagesIntf, IDEHelpIntf, IDEDialogs, IDEWindowIntf, + // IDE + LazarusIDEStrConsts, EnvironmentOpts, InputHistory, + LazConf, IDEProcs, PackageDefs, PackageSystem, PackageLinks, LPKCache; type TOnCheckInstallPackageList = @@ -73,15 +78,16 @@ InstalledFilterEdit: TTreeFilterEdit; UninstallButton: TBitBtn; procedure AddToInstallButtonClick(Sender: TObject); - function FilterEditGetImageIndex(Str: String; Data: TObject; - var AIsEnabled: Boolean): Integer; + function FilterEditGetImageIndex({%H-}Str: String; {%H-}Data: TObject; + var {%H-}AIsEnabled: Boolean): Integer; + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure InstallTreeViewKeyPress(Sender: TObject; var Key: char); procedure LPKParsingTimerTimer(Sender: TObject); procedure OnAllLPKParsed(Sender: TObject); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure TreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView; - Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; - var PaintImages, DefaultDraw: Boolean); + Node: TTreeNode; {%H-}State: TCustomDrawState; Stage: TCustomDrawStage; + var PaintImages, {%H-}DefaultDraw: Boolean); procedure AvailableTreeViewDblClick(Sender: TObject); procedure AvailableTreeViewKeyPress(Sender: TObject; var Key: char); procedure AvailableTreeViewSelectionChanged(Sender: TObject); @@ -185,6 +191,8 @@ procedure TInstallPkgSetDialog.InstallPkgSetDialogCreate(Sender: TObject); begin + IDEDialogLayoutList.ApplyLayout(Self,Width,Height); + InstallTreeView.Images := IDEImages.Images_16; AvailableTreeView.Images := IDEImages.Images_16; ImgIndexPackage := IDEImages.LoadImage(16, 'item_package'); @@ -319,6 +327,12 @@ Result:=0; end; +procedure TInstallPkgSetDialog.FormClose(Sender: TObject; + var CloseAction: TCloseAction); +begin + IDEDialogLayoutList.SaveLayout(Self); +end; + procedure TInstallPkgSetDialog.InstallTreeViewKeyPress(Sender: TObject; var Key: char); begin if Key = char(VK_RETURN) then @@ -881,148 +895,199 @@ end; procedure TInstallPkgSetDialog.AddToInstall; + + function SelectionOk(aPackageID: TLazPackageID): Boolean; + var + APackage: TLazPackage; + ConflictDep: TPkgDependency; + i: Integer; + begin + // check if already in list + if NewInstalledPackagesContains(aPackageID) then begin + MessageDlg(lisDuplicate, + Format(lisThePackageIsAlreadyInTheList, [aPackageID.Name]), + mtError, [mbCancel],0); + exit(false); + end; + // check if a package with same name is already in the list + i:=IndexOfNewInstalledPkgByName(aPackageID.Name); + if i>=0 then begin + MessageDlg(lisConflict, + Format(lisThereIsAlreadyAPackageInTheList, [aPackageID.Name]), + mtError,[mbCancel],0); + exit(false); + end; + // check if package is loaded and has some attributes that prevents + // installation in the IDE + APackage:=PackageGraph.FindPackageWithID(aPackageID); + if APackage<>nil then begin + if APackage.PackageType in [lptRunTime,lptRunTimeOnly] then begin + IDEMessageDialog(lisNotADesigntimePackage, + Format(lisThePackageIsNotADesignTimePackageItCanNotBeInstall, + [APackage.IDAsString]), + mtError, [mbCancel]); + exit(false); + end; + ConflictDep:=PackageGraph.FindRuntimePkgOnlyRecursively( + APackage.FirstRequiredDependency); + if ConflictDep<>nil then begin + IDEMessageDialog(lisNotADesigntimePackage, + Format(lisThePackageCanNotBeInstalledBecauseItRequiresWhichI, + [APackage.Name, ConflictDep.AsString]), + mtError, [mbCancel]); + exit(false); + end; + end; + Result:=true; + end; + var - i: Integer; + i, j: Integer; + NewSelectedIndex, LastNonSelectedIndex: Integer; NewPackageID: TLazPackageID; - j: LongInt; - APackage: TLazPackage; Additions: TObjectList; + AddedPkgNames: TStringList; TVNode: TTreeNode; PkgName: String; - ConflictDep: TPkgDependency; + FilteredBranch: TTreeFilterBranch; begin + NewSelectedIndex:=-1; + LastNonSelectedIndex:=-1; Additions:=TObjectList.Create(false); + AddedPkgNames:=TStringList.Create; NewPackageID:=TLazPackageID.Create; + FilteredBranch := AvailableFilterEdit.GetExistingBranch(Nil); // All items are top level. try - for i:=0 to AvailableTreeView.Items.TopLvlCount-1 do begin + for i:=0 to AvailableTreeView.Items.TopLvlCount-1 do + begin TVNode:=AvailableTreeView.Items.TopLvlItems[i]; - if not TVNode.MultiSelected then continue; + if not TVNode.MultiSelected then begin + LastNonSelectedIndex:=i; + continue; + end; + NewSelectedIndex:=i+1; // Will have the next index after the selected one. PkgName:=TVNode.Text; - // check string + // Convert package name to ID and check it if not NewPackageID.StringToID(PkgName) then begin TVNode.Selected:=false; - debugln('TInstallPkgSetDialog.AddToInstallButtonClick invalid ID: ', - PkgName); + DebugLn('TInstallPkgSetDialog.AddToInstall invalid ID: ', PkgName); continue; end; - // check if already in list - if NewInstalledPackagesContains(NewPackageID) then begin - MessageDlg(lisDuplicate, - Format(lisThePackageIsAlreadyInTheList, [NewPackageID.Name]), mtError, - [mbCancel],0); + if not SelectionOk(NewPackageID) then begin TVNode.Selected:=false; exit; end; - // check if a package with same name is already in the list - j:=IndexOfNewInstalledPkgByName(NewPackageID.Name); - if j>=0 then begin - MessageDlg(lisConflict, - Format(lisThereIsAlreadyAPackageInTheList, [NewPackageID.Name]), - mtError,[mbCancel],0); - TVNode.Selected:=false; - exit; - end; - // check if package is loaded and has some attributes that prevents - // installation in the IDE - APackage:=PackageGraph.FindPackageWithID(NewPackageID); - if APackage<>nil then begin - if APackage.PackageType in [lptRunTime,lptRunTimeOnly] then begin - IDEMessageDialog(lisNotADesigntimePackage, - Format(lisThePackageIsNotADesignTimePackageItCanNotBeInstall, [ - APackage.IDAsString]), mtError, - [mbCancel]); - TVNode.Selected:=false; - exit; - end; - ConflictDep:=PackageGraph.FindRuntimePkgOnlyRecursively( - APackage.FirstRequiredDependency); - if ConflictDep<>nil then begin - IDEMessageDialog(lisNotADesigntimePackage, - Format(lisThePackageCanNotBeInstalledBecauseItRequiresWhichI, [ - APackage.Name, ConflictDep.AsString]), - mtError,[mbCancel]); - TVNode.Selected:=false; - exit; - end; - end; - // ok => add to list Additions.Add(NewPackageID); NewPackageID:=TLazPackageID.Create; + AddedPkgNames.Add(PkgName); end; - // all ok => add to list + // all ok => add to installed packages for i:=0 to Additions.Count-1 do FNewInstalledPackages.Add(Additions[i]); - Additions.Clear; + for i:=0 to AddedPkgNames.Count-1 do begin + j:=FilteredBranch.Items.IndexOf(AddedPkgNames[i]); + Assert(j<>-1, 'TInstallPkgSetDialog.AddToInstall: '+AddedPkgNames[i]+' not found in Filter items.'); + FilteredBranch.Items.Delete(j); + end; + // Don't call UpdateAvailablePackages here, only the selected nodes were removed. UpdateNewInstalledPackages; - UpdateAvailablePackages; UpdateButtonStates; + if ((NewSelectedIndex=-1) or (NewSelectedIndex=AvailableTreeView.Items.TopLvlCount)) then + NewSelectedIndex:=LastNonSelectedIndex; + if NewSelectedIndex<>-1 then + AvailableTreeView.Items.TopLvlItems[NewSelectedIndex].Selected:=True; + AvailableFilterEdit.InvalidateFilter; finally - // clean up NewPackageID.Free; - for i:=0 to Additions.Count-1 do - TObject(Additions[i]).Free; + AddedPkgNames.Free; Additions.Free; end; end; procedure TInstallPkgSetDialog.AddToUninstall; + + function SelectionOk(aPackageID: TLazPackageID): Boolean; + var + APackage: TLazPackage; + begin + APackage:=PackageGraph.FindPackageWithID(aPackageID); + if APackage<>nil then begin + // check if package is a base package + if PackageGraph.IsStaticBasePackage(APackage.Name) then begin + MessageDlg(lisUninstallImpossible, + Format(lisThePackageCanNotBeUninstalledBecauseItIsNeededByTh, [ + APackage.Name]), mtError, [mbCancel], 0); + exit(false); + end; + end; + Result:=true; + end; + var - i: Integer; - OldPackageID: TLazPackageID; - APackage: TLazPackage; + i, j: Integer; + NewSelectedIndex, LastNonSelectedIndex: Integer; + DelPackageID, PackID: TLazPackageID; Deletions: TObjectList; - DelPackageID: TLazPackageID; - j: LongInt; + DeletedPkgNames: TStringList; TVNode: TTreeNode; PkgName: String; + FilteredBranch: TTreeFilterBranch; begin - OldPackageID := nil; + NewSelectedIndex:=-1; + LastNonSelectedIndex:=-1; Deletions:=TObjectList.Create(true); + DeletedPkgNames:=TStringList.Create; + DelPackageID:=TLazPackageID.Create; + FilteredBranch := InstalledFilterEdit.GetExistingBranch(Nil); // All items are top level. try for i:=0 to InstallTreeView.Items.TopLvlCount-1 do begin TVNode:=InstallTreeView.Items.TopLvlItems[i]; - if not TVNode.MultiSelected then continue; - if OldPackageID = nil then - OldPackageID:=TLazPackageID.Create; + if not TVNode.MultiSelected then begin + LastNonSelectedIndex:=i; + continue; + end; + NewSelectedIndex:=i+1; // Will have the next index after the selected one. PkgName:=TVNode.Text; - if not OldPackageID.StringToID(PkgName) then begin + if not DelPackageID.StringToID(PkgName) then begin TVNode.Selected:=false; - debugln('TInstallPkgSetDialog.AddToUninstallButtonClick invalid ID: ', - PkgName); + debugln('TInstallPkgSetDialog.AddToUninstall invalid ID: ', PkgName); continue; end; - // ok => add to deletions - Deletions.Add(OldPackageID); - DelPackageID:=OldPackageID; - OldPackageID := nil; - // get package - APackage:=PackageGraph.FindPackageWithID(DelPackageID); - if APackage<>nil then begin - // check if package is a base package - if PackageGraph.IsStaticBasePackage(APackage.Name) then begin - TVNode.Selected:=false; - MessageDlg(lisUninstallImpossible, - Format(lisThePackageCanNotBeUninstalledBecauseItIsNeededByTh, [ - APackage.Name]), mtError, [mbCancel], 0); - exit; - end; + if not SelectionOk(DelPackageID) then begin + TVNode.Selected:=false; + exit; end; + // ok => add to deletions + Deletions.Add(DelPackageID); + DelPackageID:=TLazPackageID.Create; + DeletedPkgNames.Add(PkgName); end; - // ok => remove from list + // ok => remove from installed packages InstallTreeView.Selected:=nil; for i:=0 to Deletions.Count-1 do begin - DelPackageID:=TLazPackageID(Deletions[i]); - j:=IndexOfNewInstalledPackageID(DelPackageID); + PackID:=TLazPackageID(Deletions[i]); + j:=IndexOfNewInstalledPackageID(PackID); FNewInstalledPackages.Delete(j); end; + for i:=0 to DeletedPkgNames.Count-1 do begin + j:=FilteredBranch.Items.IndexOf(DeletedPkgNames[i]); + Assert(j<>-1, 'TInstallPkgSetDialog.AddToUninstall: '+DeletedPkgNames[i]+' not found in Filter items.'); + FilteredBranch.Items.Delete(j); + end; - UpdateNewInstalledPackages; + // Don't call UpdateNewInstalledPackages here, only the selected nodes were removed. UpdateAvailablePackages; UpdateButtonStates; + if ((NewSelectedIndex=-1) or (NewSelectedIndex=InstallTreeView.Items.TopLvlCount)) then + NewSelectedIndex:=LastNonSelectedIndex; + if NewSelectedIndex<>-1 then + InstallTreeView.Items.TopLvlItems[NewSelectedIndex].Selected:=True; + InstalledFilterEdit.InvalidateFilter; finally - OldPackageID.Free; + DelPackageID.Free; + DeletedPkgNames.Free; Deletions.Free; end; end; diff -Nru lazarus-1.4.4+dfsg/packager/interpkgconflictfiles.lfm lazarus-1.6+dfsg/packager/interpkgconflictfiles.lfm --- lazarus-1.4.4+dfsg/packager/interpkgconflictfiles.lfm 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/interpkgconflictfiles.lfm 2015-03-01 22:53:07.000000000 +0000 @@ -0,0 +1,50 @@ +object PGIPConflictsDialog: TPGIPConflictsDialog + Left = 347 + Height = 424 + Top = 221 + Width = 469 + ClientHeight = 424 + ClientWidth = 469 + OnClose = FormClose + OnCreate = FormCreate + Position = poScreenCenter + LCLVersion = '1.5' + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 36 + Top = 382 + Width = 457 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 0 + ShowButtons = [pbOK, pbCancel] + end + object ConflictsTreeView: TTreeView + Left = 6 + Height = 370 + Top = 6 + Width = 457 + Align = alClient + BorderSpacing.Around = 6 + DefaultItemHeight = 18 + ReadOnly = True + TabOrder = 1 + OnAdvancedCustomDrawItem = ConflictsTreeViewAdvancedCustomDrawItem + OnMouseDown = ConflictsTreeViewMouseDown + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] + end + object IDEDialogLayoutStorage1: TIDEDialogLayoutStorage + left = 161 + top = 104 + end + object ImageList1: TImageList + left = 290 + top = 104 + end +end diff -Nru lazarus-1.4.4+dfsg/packager/interpkgconflictfiles.pas lazarus-1.6+dfsg/packager/interpkgconflictfiles.pas --- lazarus-1.4.4+dfsg/packager/interpkgconflictfiles.pas 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/interpkgconflictfiles.pas 2015-08-07 17:20:40.000000000 +0000 @@ -0,0 +1,1102 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Mattias Gaertner + + Abstract: + Called after checking what packages need compile. + Check source files and compiled files for name conflicts between packages. + + ToDo: + - project compiler option verbosity: dialog on duplicate files + - save date ignore + - use date ignore + - clear ignore on + - clean build + - error cant find include file + unit_f_cant_find_ppu=10022_F_Can't find unit $1 used by $2 + unit_u_ppu_invalid_header=10007_U_PPU Invalid Header (no PPU at the begin) + unit_f_cant_compile_unit=10021_F_Can't compile unit $1, no sources available + unit_f_cant_find_ppu=10022_F_Can't find unit $1 used by $2 + unit_w_unit_name_error=10023_W_Unit $1 was not found but $2 exists + unit_f_unit_name_error=10024_F_Unit $1 searched but $2 found + unit_u_recompile_crc_change=10028_U_Recompiling $1, checksum changed for $2 + unit_u_recompile_source_found_alone=10029_U_Recompiling $1, source found only + unit_u_recompile_staticlib_is_older=10030_U_Recompiling unit, static lib is older than ppufile + unit_u_recompile_sharedlib_is_older=10031_U_Recompiling unit, shared lib is older than ppufile + unit_u_recompile_obj_and_asm_older=10032_U_Recompiling unit, obj and asm are older than ppufile + unit_u_recompile_obj_older_than_asm=10033_U_Recompiling unit, obj is older than asm + unit_w_cant_compile_unit_with_changed_incfile=10040_W_Can't recompile unit $1, but found modifed include files + unit_u_source_modified=10041_U_File $1 is newer than the one used for creating PPU file $2 +} +unit InterPkgConflictFiles; + +{$mode objfpc}{$H+} + +interface + +uses + // RTL + FCL + LCL + Classes, SysUtils, types, math, contnrs, InterfaceBase, + Forms, ComCtrls, Controls, ButtonPanel, Themes, Graphics, StdCtrls, Buttons, + // CodeTools + BasicCodeTools, DefineTemplates, CodeToolManager, FileProcs, + // LazUtils + LazFileUtils, LazFileCache, AvgLvlTree, + // IDEIntf + ProjectIntf, CompOptsIntf, IDEWindowIntf, LazIDEIntf, IDEMsgIntf, IDEExternToolIntf, + // IDE + CompilerOptions, EnvironmentOpts, IDEProcs, DialogProcs, LazarusIDEStrConsts, + TransferMacros, LazConf, PackageDefs, PackageSystem; + +type + TPGInterPkgOwnerInfo = class + public + Name: string; + Owner: TObject; + HasOptionUr: boolean; + CompOptions: TBaseCompilerOptions; + BaseDir: string; + SrcDirs: string; // unitpath without inherited + IncDirs: string; // incpath without inherited and without SrcDirs + UnitOutDir: string; // can be empty -> if empty FPC creates ppu in SrcDirs + end; + + { TPGInterPkgFile } + + TPGInterPkgFile = class + public + FullFilename: string; + ShortFilename: string; + AnUnitName: string; + OwnerInfo: TPGInterPkgOwnerInfo; + constructor Create(TheFullFilename, TheUnitName: string; Owner: TPGInterPkgOwnerInfo); + end; + TPGInterPkgFileArray = array of TPGInterPkgFile; + + { TPGIPAmbiguousFileGroup } + + TPGIPAmbiguousFileGroup = class + public + CompiledFiles: TPGInterPkgFileArray; + Sources: TPGInterPkgFileArray; + function Add(SrcFile, PPUFile: TPGInterPkgFile): integer; + function IndexOfOwner(OwnerInfo: TPGInterPkgOwnerInfo): integer; + procedure Switch(Index1, Index2: integer); + end; + + TPGIPCategory = ( + pgipOrphanedCompiled, + pgipDuplicateSource + ); + + { TPGIPConflictsDialog } + + TPGIPConflictsDialog = class(TForm) + ButtonPanel1: TButtonPanel; + ConflictsTreeView: TTreeView; + IDEDialogLayoutStorage1: TIDEDialogLayoutStorage; + ImageList1: TImageList; + procedure ConflictsTreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView; + Node: TTreeNode; {%H-}State: TCustomDrawState; Stage: TCustomDrawStage; + var {%H-}PaintImages, {%H-}DefaultDraw: Boolean); + procedure ConflictsTreeViewMouseDown(Sender: TObject; {%H-}Button: TMouseButton; + {%H-}Shift: TShiftState; X, Y: Integer); + procedure DeleteSelectedFilesButtonClick(Sender: TObject); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); + procedure FormCreate(Sender: TObject); + procedure OkButtonClick(Sender: TObject); + private + DeleteSelectedFilesButton: TButton; + FImgIndexChecked: integer; + FImgIndexUnchecked: integer; + FCategoryNodes: array[TPGIPCategory] of TTreeNode; + procedure UpdateButtons; + procedure IgnoreConflicts; + public + FileGroups: TObjectList; // list of TPGIPAmbiguousFileGroup + FilesChanged: boolean; + procedure Init(Groups: TObjectList); + end; + +function CheckInterPkgFiles(IDEObject: TObject; + PkgList: TFPList; out FilesChanged: boolean + ): boolean; // returns false if user cancelled +function FilenameIsCompiledSource(aFilename: string): boolean; + +implementation + +{$R *.lfm} + +function ComparePGInterPkgFullFilenames(File1, File2: Pointer): integer; +var + F1: TPGInterPkgFile absolute File1; + F2: TPGInterPkgFile absolute File2; +begin + Result:=CompareFilenames(F1.FullFilename,F2.FullFilename); +end; + +function ComparePGInterPkgUnitnames(File1, File2: Pointer): integer; +var + F1: TPGInterPkgFile absolute File1; + F2: TPGInterPkgFile absolute File2; +begin + Assert(Assigned(F1), 'ComparePGInterPkgUnitnames: File1=Nil.'); + Assert(Assigned(F2), 'ComparePGInterPkgUnitnames: File2=Nil.'); + Result:=CompareDottedIdentifiers(PChar(F1.AnUnitName),PChar(F2.AnUnitName)); +end; + +function ComparePGInterPkgShortFilename(File1, File2: Pointer): integer; +var + F1: TPGInterPkgFile absolute File1; + F2: TPGInterPkgFile absolute File2; +begin + // compare case insensitive to find cross platform duplicates + Result:=CompareFilenamesIgnoreCase(F1.ShortFilename,F2.ShortFilename); +end; + +{ TPGIPAmbiguousFileGroup } + +function TPGIPAmbiguousFileGroup.Add(SrcFile, PPUFile: TPGInterPkgFile + ): integer; +begin + if (SrcFile=nil) and (PPUFile=nil) then + RaiseException(''); + if (SrcFile<>nil) and (PPUFile<>nil) and (PPUFile.OwnerInfo<>SrcFile.OwnerInfo) then + RaiseException('bug: not equal: PPUFile.OwnerInfo='+PPUFile.OwnerInfo.Name+' SrcFile.OwnerInfo='+SrcFile.OwnerInfo.Name); + if (SrcFile<>nil) and FilenameIsCompiledSource(SrcFile.ShortFilename) then + RaiseException('bug: src is compiled file: SrcFile.Filename='+SrcFile.FullFilename); + if (PPUFile<>nil) and not FilenameIsCompiledSource(PPUFile.ShortFilename) then + RaiseException('bug: compiled file is source:'+PPUFile.FullFilename); + Result:=length(CompiledFiles); + SetLength(CompiledFiles,Result+1); + SetLength(Sources,Result+1); + Sources[Result]:=SrcFile; + CompiledFiles[Result]:=PPUFile +end; + +function TPGIPAmbiguousFileGroup.IndexOfOwner(OwnerInfo: TPGInterPkgOwnerInfo + ): integer; +begin + Result:=length(Sources)-1; + while (Result>=0) do + begin + if (Sources[Result]<>nil) then + begin + if (Sources[Result].OwnerInfo=OwnerInfo) then exit; + end else begin + if (CompiledFiles[Result].OwnerInfo=OwnerInfo) then exit; + end; + dec(Result); + end; +end; + +procedure TPGIPAmbiguousFileGroup.Switch(Index1, Index2: integer); +var + aFile: TPGInterPkgFile; +begin + aFile:=Sources[Index1]; Sources[Index1]:=Sources[Index2]; Sources[Index2]:=aFile; + aFile:=CompiledFiles[Index1]; CompiledFiles[Index1]:=CompiledFiles[Index2]; CompiledFiles[Index2]:=aFile; +end; + +{ TPGIPConflictsDialog } + +procedure TPGIPConflictsDialog.ConflictsTreeViewAdvancedCustomDrawItem( + Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; + Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); +var + Detail: TThemedButton; + Details: TThemedElementDetails; + aSize: TSize; + NodeRect: Classes.TRect; + r: TRect; +begin + if Stage<>cdPostPaint then exit; + if TObject(Node.Data) is TPGIPAmbiguousFileGroup then begin + if Node.ImageIndex=FImgIndexChecked then + Detail := tbCheckBoxCheckedNormal + else + Detail := tbCheckBoxUncheckedNormal; + Details := ThemeServices.GetElementDetails(Detail); + aSize := ThemeServices.GetDetailSize(Details); + NodeRect:=Node.DisplayRect(false); + r:=Bounds(Node.DisplayIconLeft+(ImageList1.Width-aSize.cx) div 2, + NodeRect.Top+(NodeRect.Bottom-NodeRect.Top-aSize.cy) div 2, + aSize.cx,aSize.cy); + ThemeServices.DrawElement(ConflictsTreeView.Canvas.Handle,Details,r); + end; +end; + +procedure TPGIPConflictsDialog.ConflictsTreeViewMouseDown(Sender: TObject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var + Node: TTreeNode; +begin + Node:=ConflictsTreeView.GetNodeAt(X,Y); + if Node=nil then exit; + if TObject(Node.Data) is TPGIPAmbiguousFileGroup then begin + if (X>=Node.DisplayIconLeft) and (X<Node.DisplayTextLeft) then begin + if Node.ImageIndex=FImgIndexChecked then + Node.ImageIndex:=FImgIndexUnchecked + else + Node.ImageIndex:=FImgIndexChecked; + Node.SelectedIndex:=Node.ImageIndex; + UpdateButtons; + end; + end; +end; + +procedure TPGIPConflictsDialog.DeleteSelectedFilesButtonClick(Sender: TObject); + + function DeleteFileAndAssociates(aFile: TPGInterPkgFile): boolean; + var + aFilename: String; + begin + if aFile=nil then exit(true); + aFilename:=aFile.FullFilename; + {$IFDEF VerboseCheckInterPkgFiles} + debugln(['DeleteFileGroup ',aFilename]); + {$ENDIF} + if DeleteFileInteractive(aFilename)<>mrOk then exit(false); + if FilenameIsPascalUnit(aFilename) then + begin + // unit source -> delete compiled files and resources + DeleteFileUTF8(ChangeFileExt(aFilename,'.ppu')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.o')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.rst')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.rsj')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.lfm')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.dfm')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.xfm')); + end else if FilenameIsCompiledSource(aFilename) then begin + // compiled file -> delete compiled files. Keep sources. + DeleteFileUTF8(ChangeFileExt(aFilename,'.ppu')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.o')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.rst')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.rsj')); + if FileExistsCached(ChangeFileExt(aFilename,'.pas')) + or FileExistsCached(ChangeFileExt(aFilename,'.pp')) + or FileExistsCached(ChangeFileExt(aFilename,'.p')) then begin + // delete only compiled file + end else begin + // no source in this directory => delete copied lfm file + DeleteFileUTF8(ChangeFileExt(aFilename,'.lfm')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.dfm')); + DeleteFileUTF8(ChangeFileExt(aFilename,'.xfm')); + end; + end; + Result:=true; + end; + +var + Node: TTreeNode; + NextNode: TTreeNode; + FileGroup: TPGIPAmbiguousFileGroup; + IndexInGroup: integer; + ConflictCount: Integer; +begin + ConflictsTreeView.Items.BeginUpdate; + try + Node:=ConflictsTreeView.Items.GetFirstNode; + IndexInGroup:=-1; + ConflictCount:=0; + while Node<>nil do + begin + NextNode:=Node.GetNext; + if TObject(Node.Data) is TPGIPAmbiguousFileGroup then + begin + FileGroup:=TPGIPAmbiguousFileGroup(Node.Data); + inc(IndexInGroup); + if Node.ImageIndex=FImgIndexChecked then + begin + if not DeleteFileAndAssociates(FileGroup.Sources[IndexInGroup]) then exit; + if not DeleteFileAndAssociates(FileGroup.CompiledFiles[IndexInGroup]) then exit; + end; + if ((FileGroup.Sources[IndexInGroup]<>nil) + and FileExistsUTF8(FileGroup.Sources[IndexInGroup].FullFilename)) + or ((FileGroup.CompiledFiles[IndexInGroup]<>nil) + and FileExistsUTF8(FileGroup.CompiledFiles[IndexInGroup].FullFilename)) + then + inc(ConflictCount); + if IndexInGroup=length(FileGroup.Sources)-1 then + begin + if ConflictCount<=1 then begin + // conflict does not exist anymore + FilesChanged:=true; + Node:=Node.Parent; + NextNode:=Node.GetNextSkipChildren; + Node.Delete; + end; + IndexInGroup:=-1; + ConflictCount:=0; + end; + end; + Node:=NextNode; + end; + finally + ConflictsTreeView.Items.EndUpdate; + UpdateButtons; + end; +end; + +procedure TPGIPConflictsDialog.FormClose(Sender: TObject; + var CloseAction: TCloseAction); +begin + IDEDialogLayoutList.SaveLayout(Self); +end; + +procedure TPGIPConflictsDialog.FormCreate(Sender: TObject); +var + Details: TThemedElementDetails; + aSize: TSize; + Img: TBitmap; +begin + IDEDialogLayoutList.ApplyLayout(Self,Width,Height); + + DeleteSelectedFilesButton:=TButton.Create(Self); + with DeleteSelectedFilesButton do + begin + Name:='DeleteSelectedFilesButton'; + Caption:='Delete selected files'; + Align:=alLeft; + AutoSize:=true; + OnClick:=@DeleteSelectedFilesButtonClick; + Parent:=ButtonPanel1; + end; + + ButtonPanel1.OKButton.Kind:=bkIgnore; + ButtonPanel1.OKButton.Caption:='Ignore'; + ButtonPanel1.OKButton.OnClick:=@OkButtonClick; + + Details := ThemeServices.GetElementDetails(tbCheckBoxCheckedNormal); + aSize := ThemeServices.GetDetailSize(Details); + ImageList1.Width:=Max(16,aSize.cx); + ImageList1.Height:=Max(16,aSize.cy); + // add empty images + Img:=TBitmap.Create; + Img.TransparentMode:=tmFixed; + Img.TransparentColor:=0; + Img.Transparent:=true; + Img.SetSize(ImageList1.Width,ImageList1.Height); + FImgIndexChecked:=ImageList1.Add(Img,nil); + FImgIndexUnchecked:=ImageList1.Add(Img,nil); + Img.Free; +end; + +procedure TPGIPConflictsDialog.OkButtonClick(Sender: TObject); +begin + IgnoreConflicts; +end; + +procedure TPGIPConflictsDialog.UpdateButtons; +var + Node: TTreeNode; + DeleteCount: Integer; + ConflictCount: Integer; +begin + DeleteCount:=0; + ConflictCount:=0; + Node:=ConflictsTreeView.Items.GetFirstNode; + while Node<>nil do begin + if TObject(Node.Data) is TPGIPAmbiguousFileGroup then + begin + inc(ConflictCount); + if Node.ImageIndex=FImgIndexChecked then + inc(DeleteCount); + end; + Node:=Node.GetNext; + end; + DeleteSelectedFilesButton.Enabled:=DeleteCount>0; + if ConflictCount=0 then + IgnoreConflicts; +end; + +procedure TPGIPConflictsDialog.IgnoreConflicts; +begin + // ToDo + ModalResult:=mrOk; +end; + +procedure TPGIPConflictsDialog.Init(Groups: TObjectList); + + function AddChild(ParentNode: TTreeNode; Caption: string): TTreeNode; + begin + Result:=ConflictsTreeView.Items.AddChild(ParentNode,Caption); + end; + +var + i, j: Integer; + ItemNode: TTreeNode; + s: String; + FileGroupNode: TTreeNode; + FileGroup: TPGIPAmbiguousFileGroup; + SrcFile: TPGInterPkgFile; + CompiledFile: TPGInterPkgFile; + CurFile: TPGInterPkgFile; + c: TPGIPCategory; +begin + FileGroups:=Groups; + + ConflictsTreeView.Items.BeginUpdate; + ConflictsTreeView.Items.Clear; + ConflictsTreeView.Images:=ImageList1; + for c in TPGIPCategory do + FCategoryNodes[c]:=nil; + for i:=0 to FileGroups.Count-1 do + begin + FileGroup:=TPGIPAmbiguousFileGroup(FileGroups[i]); + + // category + if FileGroup.Sources[0]=nil then + begin + // orphaned compiled file + CurFile:=FileGroup.CompiledFiles[0]; + c:=pgipOrphanedCompiled; + if FCategoryNodes[c]=nil then + FCategoryNodes[c]:= + ConflictsTreeView.Items.Add(nil,'Orphaned compiled files'); + end else begin + // duplicate source file + CurFile:=FileGroup.Sources[0]; + c:=pgipDuplicateSource; + if FCategoryNodes[c]=nil then + FCategoryNodes[c]:= + ConflictsTreeView.Items.Add(nil,'Duplicate source files'); + end; + + // file group + s:=ExtractFilename(CurFile.ShortFilename); + FileGroupNode:=AddChild(FCategoryNodes[c],s); + + for j:=0 to length(FileGroup.Sources)-1 do + begin + SrcFile:=FileGroup.Sources[j]; + CompiledFile:=FileGroup.CompiledFiles[j]; + + if SrcFile<>nil then + CurFile:=SrcFile + else + CurFile:=CompiledFile; + + s:=ExtractFilename(CurFile.ShortFilename); + if CurFile.OwnerInfo.Owner is TLazPackage then + s+=' of package '+CurFile.OwnerInfo.Name + else + s+=' of '+CurFile.OwnerInfo.Name; + ItemNode:=AddChild(FileGroupNode,s); + if SrcFile=nil then + ItemNode.ImageIndex:=FImgIndexChecked // default: delete + else + ItemNode.ImageIndex:=FImgIndexUnchecked; // default: keep + ItemNode.SelectedIndex:=ItemNode.ImageIndex; + ItemNode.Data:=FileGroup; + begin + // file paths of compiled and src + if CompiledFile<>nil then + AddChild(ItemNode,'Compiled: '+CompiledFile.FullFilename); + if SrcFile<>nil then + AddChild(ItemNode,'Source: '+SrcFile.FullFilename) + else + AddChild(ItemNode,'No source found'); + end; + end; + end; + // expand all nodes + for c in TPGIPCategory do + if FCategoryNodes[c]<>nil then + FCategoryNodes[c].Expand(true); + + ConflictsTreeView.Items.EndUpdate; + + UpdateButtons; +end; + +{ TPGInterPkgFile } + +constructor TPGInterPkgFile.Create(TheFullFilename, TheUnitName: string; + Owner: TPGInterPkgOwnerInfo); +begin + FullFilename:=TheFullFilename; + ShortFilename:=ExtractFileName(FullFilename); + AnUnitName:=TheUnitName; + OwnerInfo:=Owner; +end; + +function CheckInterPkgFiles(IDEObject: TObject; PkgList: TFPList; out + FilesChanged: boolean): boolean; +{ Scan all source and output directories (Note: they are already cached, because + this method is called after the checks if a compile is needed). + Report strange ppu files and duplicate file names. + + IDEObject can be a TProject, TLazPackage or TLazPackageGraph(building IDE) + PkgList is list of TLazPackage +} +var + OwnerInfos: TObjectList; // list of TPGInterPkgOwnerInfo + TargetOS: String; + TargetCPU: String; + LCLWidgetType: String; + FullFiles: TAvgLvlTree; // tree of TPGInterPkgFile sorted for FullFilename + Units: TAvgLvlTree; // tree of TPGInterPkgFile sorted for AnUnitName + ShortFiles: TAvgLvlTree; // tree of TPGInterPkgFile sorted for ShortFilename + AmbiguousFileGroups: TObjectList; // list of TPGIPAmbiguousFileGroup + + procedure AddOwnerInfo(TheOwner: TObject); + var + LazDir: String; + CustomOptions: String; + p: Integer; + OwnerInfo: TPGInterPkgOwnerInfo; + begin + OwnerInfo:=TPGInterPkgOwnerInfo.Create; + OwnerInfos.Add(OwnerInfo); + OwnerInfo.Owner:=TheOwner; + if TheOwner is TLazPackage then + begin + OwnerInfo.Name:=TLazPackage(TheOwner).IDAsString; + OwnerInfo.CompOptions:=TLazPackage(TheOwner).LazCompilerOptions as TBaseCompilerOptions; + end else if TheOwner is TLazProject then + begin + OwnerInfo.Name:=TLazProject(TheOwner).GetTitleOrName; + OwnerInfo.CompOptions:=TLazProject(TheOwner).LazCompilerOptions as TBaseCompilerOptions; + end + else if TheOwner=PackageGraph then begin + // building IDE + OwnerInfo.Name:='#IDE'; + LazDir:=AppendPathDelim(EnvironmentOptions.GetParsedLazarusDirectory); + OwnerInfo.BaseDir:=LazDir; + OwnerInfo.SrcDirs:=LazDir+'ide' + +';'+LazDir+'debugger' + +';'+LazDir+'packager' + +';'+LazDir+'designer' + +';'+LazDir+'converter'; + OwnerInfo.IncDirs:=OwnerInfo.SrcDirs + +';'+LazDir+'ide'+PathDelim+'include'+PathDelim+TargetOS + +';'+LazDir+'ide'+PathDelim+'include'+PathDelim+GetDefaultSrcOSForTargetOS(TargetOS); + OwnerInfo.UnitOutDir:=LazDir+'units'+PathDelim+TargetCPU+'-'+TargetOS+PathDelim+LCLWidgetType; + end; + if OwnerInfo.CompOptions<>nil then begin + OwnerInfo.BaseDir:=OwnerInfo.CompOptions.BaseDirectory; + OwnerInfo.SrcDirs:=OwnerInfo.CompOptions.GetPath( + pcosUnitPath,icoNone,false,coptParsed,true); + OwnerInfo.IncDirs:=OwnerInfo.CompOptions.GetPath( + pcosIncludePath,icoNone,false,coptParsed,true); + if OwnerInfo.CompOptions.UnitOutputDirectory<>'' then + OwnerInfo.UnitOutDir:=OwnerInfo.CompOptions.GetUnitOutputDirectory(false); + CustomOptions:=OwnerInfo.CompOptions.ParsedOpts.GetParsedValue(pcosCustomOptions); + p:=1; + OwnerInfo.HasOptionUr:=FindNextFPCParameter(CustomOptions,'-Ur',p)>0; + end; + OwnerInfo.IncDirs:=TrimSearchPath(RemoveSearchPaths(OwnerInfo.IncDirs,OwnerInfo.SrcDirs),''); + OwnerInfo.UnitOutDir:=TrimFilename(OwnerInfo.UnitOutDir); + OwnerInfo.SrcDirs:=TrimSearchPath(OwnerInfo.SrcDirs,''); + {$IFDEF VerboseCheckInterPkgFiles} + debugln(['AddOwnerInfo Name="',OwnerInfo.Name,'"', + ' SrcDirs="',CreateRelativeSearchPath(OwnerInfo.SrcDirs,OwnerInfo.BaseDir),'"', + ' IncDirs="',CreateRelativeSearchPath(OwnerInfo.IncDirs,OwnerInfo.BaseDir),'"', + ' UnitOutDir="',CreateRelativeSearchPath(OwnerInfo.UnitOutDir,OwnerInfo.BaseDir),'"', + '']); + {$ENDIF} + end; + + procedure CollectFilesInDir(OwnerInfo: TPGInterPkgOwnerInfo; Dir: string; + var SearchedDirs: string; {%H-}IsIncDir: boolean); + var + Files: TStrings; + aFilename: String; + Ext: String; + AnUnitName: String; + NewFile: TPGInterPkgFile; + begin + if Dir='' then exit; + if not FilenameIsAbsolute(Dir) then + begin + debugln(['Inconsistency: CollectFilesInDir dir no absolute: "',Dir,'" Owner=',OwnerInfo.Name]); + exit; + end; + if SearchDirectoryInSearchPath(SearchedDirs,Dir)>0 then exit; + SearchedDirs+=';'+Dir; + Files:=nil; + try + CodeToolBoss.DirectoryCachePool.GetListing(Dir,Files,false); + for aFilename in Files do + begin + if (aFilename='') or (aFilename='.') or (aFilename='..') then continue; + if CompareFilenames(aFilename,'fpmake.pp')=0 then continue; + Ext:=LowerCase(ExtractFileExt(aFilename)); + AnUnitName:=''; + case Ext of + '.ppu','.o','.rst','.rsj','.pas','.pp','.p': + begin + AnUnitName:=ExtractFileNameOnly(aFilename); + if not IsDottedIdentifier(AnUnitName) then continue; + end; + '.inc', '.lfm', '.dfm': ; + else + continue; + end; + NewFile:=TPGInterPkgFile.Create(AppendPathDelim(Dir)+aFilename, + AnUnitName,OwnerInfo); + FullFiles.Add(NewFile); + ShortFiles.Add(NewFile); + if AnUnitName<>'' then + Units.Add(NewFile); + end; + finally + Files.Free; + end; + end; + + procedure CollectFilesOfOwner(OwnerInfo: TPGInterPkgOwnerInfo); + var + SearchedDirs: String; + SearchPath: String; + p: Integer; + Dir: String; + begin + // find all unit and include FullFiles in src, inc and out dirs + SearchedDirs:=''; + CollectFilesInDir(OwnerInfo,OwnerInfo.UnitOutDir,SearchedDirs,false); + SearchPath:=OwnerInfo.SrcDirs; + p:=1; + repeat + Dir:=GetNextDirectoryInSearchPath(SearchPath,p); + if Dir='' then break; + CollectFilesInDir(OwnerInfo,Dir,SearchedDirs,false); + until false; + SearchPath:=OwnerInfo.IncDirs; + p:=1; + repeat + Dir:=GetNextDirectoryInSearchPath(SearchPath,p); + if Dir='' then break; + CollectFilesInDir(OwnerInfo,Dir,SearchedDirs,true); + until false; + end; + + procedure RemoveSecondaryFiles; + // remove each .o file if there is an .ppu file, so that there is only one + // warning per ppu file + var + Node: TAvgLvlTreeNode; + ONode: TAvgLvlTreeNode; + OFile: TPGInterPkgFile; + PPUFileName: String; + SearchFile: TPGInterPkgFile; + PPUNode: TAvgLvlTreeNode; + begin + Node:=Units.FindLowest; + while Node<>nil do begin + // for each .o file + ONode:=Node; + Node:=Node.Successor; + OFile:=TPGInterPkgFile(ONode.Data); + if not FilenameIsCompiledSource(OFile.ShortFilename) then continue; + if CompareFileExt(OFile.ShortFilename,'.ppu',false)=0 then continue; + // search corresponding .ppu + PPUFileName:=ChangeFileExt(OFile.FullFilename,'.ppu'); + SearchFile:=TPGInterPkgFile.Create(PPUFileName,'',nil); + PPUNode:=FullFiles.Find(SearchFile); + SearchFile.Free; + if PPUNode=nil then continue; + // remove .o file + ShortFiles.RemovePointer(OFile); + FullFiles.RemovePointer(OFile); + Units.Delete(ONode); + OFile.Free; + end; + end; + + function OwnerHasDependency(Owner1, Owner2: TPGInterPkgOwnerInfo): boolean; + // returns true if Owner1 depends on Owner2 + begin + if Owner1=Owner2 then exit(true); + if Owner1.Owner is TLazPackage then + begin + if Owner2.Owner is TLazPackage then + begin + Result:=PackageGraph.FindDependencyRecursively( + TLazPackage(Owner1.Owner).FirstRequiredDependency, + TLazPackage(Owner2.Owner))<>nil; + end else begin + // Owner1 is package, Owner2 is project/IDE => not possible + Result:=false; + end; + end else begin + // Owner1 is project or IDE => true + Result:=true; + end; + end; + + function OptionUrAllowsDuplicate(File1, File2: TPGInterPkgFile): boolean; + begin + Result:=true; + if File1.OwnerInfo.HasOptionUr + and File2.OwnerInfo.HasOptionUr then + exit; + if File1.OwnerInfo.HasOptionUr + and OwnerHasDependency(File2.OwnerInfo,File1.OwnerInfo) then + exit; + if File2.OwnerInfo.HasOptionUr + and OwnerHasDependency(File1.OwnerInfo,File2.OwnerInfo) then + exit; + Result:=false; + end; + + function CheckIfFilesCanConflict(FileGroup: TPGIPAmbiguousFileGroup; + File1, File2: TPGInterPkgFile): boolean; + var + FileDir1: String; + FileDir2: String; + begin + Result:=false; + // report only one unit per package + if File1.OwnerInfo=File2.OwnerInfo then exit; + if (FileGroup<>nil) and (FileGroup.IndexOfOwner(File1.OwnerInfo)>=0) + then exit; + // check -Ur + if OptionUrAllowsDuplicate(File2,File1) then + exit; + // check shared directories + if CompareFilenames(File2.FullFilename,File1.FullFilename)=0 then + begin + // Two packages share directories + // It would would require a lenghty codetools check to find out if + // this is right or wrong + // => skip + exit; + end; + FileDir1:=ExtractFilePath(File1.FullFilename); + FileDir2:=ExtractFilePath(File2.FullFilename); + if (FindPathInSearchPath(FileDir1,File2.OwnerInfo.SrcDirs)>0) + or (FindPathInSearchPath(FileDir2,File1.OwnerInfo.SrcDirs)>0) then + begin + // File1 in SrcDirs of file owner 2 + // or File2 in SrcDirs of file owner 1 + // => a warning about sharing source directories is enough + // don't warn every shared file + // => skip + exit; + end; + + Result:=true; + end; + + procedure FindUnitSourcePPU(var TheUnit: TPGInterPkgFile; out UnitPPU: TPGInterPkgFile); + // find in same package the source of a ppu, or the ppu of a source + var + SearchPPU: Boolean; + AnUnitName: string; + + function FindOther(Node: TAvgLvlTreeNode; Left: boolean): TPGInterPkgFile; + var + IsPPU: Boolean; + begin + while Node<>nil do begin + Result:=TPGInterPkgFile(Node.Data); + if CompareFilenames(ExtractFileNameOnly(Result.ShortFilename), + AnUnitName)<>0 then break; + if (TheUnit.OwnerInfo=Result.OwnerInfo) then + begin + IsPPU:=FilenameIsCompiledSource(Result.ShortFilename); + if SearchPPU=IsPPU then exit; + end; + if Left then + Node:=Node.Precessor + else + Node:=Node.Successor; + end; + Result:=nil; + end; + + var + StartNode: TAvgLvlTreeNode; + h: TPGInterPkgFile; + begin + UnitPPU:=nil; + AnUnitName:=ExtractFileNameOnly(TheUnit.ShortFilename); + SearchPPU:=FilenameIsPascalUnit(TheUnit.ShortFilename); // search opposite + StartNode:=ShortFiles.FindPointer(TheUnit); + UnitPPU:=FindOther(StartNode,true); + if UnitPPU=nil then + UnitPPU:=FindOther(StartNode,false); + if not SearchPPU then begin + h:=TheUnit; + TheUnit:=UnitPPU; + UnitPPU:=h; + end; + end; + + procedure CheckDuplicateUnits; + { Check two or more packages have the same unit (ppu/o/pas/pp/p) + Unless A uses B and B has -Ur or A has -Ur and B uses A } + var + CurNode: TAvgLvlTreeNode; + CurUnit: TPGInterPkgFile; + FirstNodeSameUnitname: TAvgLvlTreeNode; + OtherNode: TAvgLvlTreeNode; + OtherFile: TPGInterPkgFile; + PPUFile: TPGInterPkgFile; + FileGroup: TPGIPAmbiguousFileGroup; + OtherPPUFile: TPGInterPkgFile; + i: Integer; + Msg: String; + SrcFile: TPGInterPkgFile; + begin + CurNode:=Units.FindLowest; + FirstNodeSameUnitname:=nil; + while CurNode<>nil do begin + CurUnit:=TPGInterPkgFile(CurNode.Data); + if (FirstNodeSameUnitname=nil) + or (ComparePGInterPkgUnitnames(CurUnit,TPGInterPkgFile(FirstNodeSameUnitname.Data))<>0) then + FirstNodeSameUnitname:=CurNode; + CurNode:=CurNode.Successor; + if CurUnit.OwnerInfo.HasOptionUr then continue; + + // CurUnit is an unit without -Ur + // => check units with same name + FileGroup:=nil; + PPUFile:=nil; + SrcFile:=nil; + OtherNode:=FirstNodeSameUnitname; + while OtherNode<>nil do begin + OtherFile:=TPGInterPkgFile(OtherNode.Data); + if (ComparePGInterPkgUnitnames(CurUnit,OtherFile)<>0) then break; + // other unit with same name found + OtherNode:=OtherNode.Successor; + + if not CheckIfFilesCanConflict(FileGroup,CurUnit,OtherFile) then + continue; + //debugln(['CheckPPUFilesInWrongDirs duplicate units found: file1="',CurUnit.FullFilename,'"(',CurUnit.OwnerInfo.Name,') file2="',OtherFile.FullFilename,'"(',OtherFile.OwnerInfo.Name,')']); + FindUnitSourcePPU(OtherFile,OtherPPUFile); + if FileGroup=nil then begin + SrcFile:=CurUnit; + FindUnitSourcePPU(SrcFile,PPUFile); + end; + if (SrcFile<>nil) and (OtherFile<>nil) + and (CompareFilenames(SrcFile.FullFilename,OtherFile.FullFilename)=0) then + begin + // two packages share source directories + // -> do not warn single files + continue; + end; + + if (PPUFile<>nil) and (OtherPPUFile<>nil) + and (CompareFilenames(PPUFile.FullFilename,OtherPPUFile.FullFilename)=0) + and (OtherFile=nil) then begin + // the same ppu is in both packages + // ... and only one package has a source + // for example: two packages share output directories + // => ok + continue; + end; + + if FileGroup=nil then begin + FileGroup:=TPGIPAmbiguousFileGroup.Create; + FileGroup.Add(SrcFile,PPUFile); + AmbiguousFileGroups.Add(FileGroup); + end; + FileGroup.Add(OtherFile,OtherPPUFile); + if (PPUFile<>nil) and (OtherPPUFile=nil) then + begin + // put the orphaned ppu at top + FileGroup.Switch(0,length(FileGroup.Sources)-1); + end; + end; + + // create Warnings + if FileGroup<>nil then begin + for i:=0 to length(FileGroup.Sources)-1 do + begin + SrcFile:=FileGroup.Sources[i]; + PPUFile:=FileGroup.CompiledFiles[i]; + if SrcFile<>nil then + begin + Msg:=Format(lisDuplicateUnitIn, [SrcFile.AnUnitName, SrcFile. + OwnerInfo.Name]); + if PPUFile<>nil then + Msg+=', ppu="'+PPUFile.FullFilename+'"'; + Msg+=', source="'+SrcFile.FullFilename+'"'; + end else begin + Msg:=Format(lisDuplicateUnitIn, [PPUFile.AnUnitName, PPUFile. + OwnerInfo.Name]); + Msg+=', orphaned ppu "'+PPUFile.FullFilename+'"'; + end; + if IDEMessagesWindow<>nil then + IDEMessagesWindow.AddCustomMessage(mluNote,Msg) + else + debugln('Warning: (lazarus) ',Msg); + end; + end; + + // all duplicates of this unitname were found -> skip to next unitname + CurNode:=OtherNode; + end; + end; + + procedure CheckDuplicateSrcFiles; + { Check if a src file in pkg A exists in another package B + Unless A uses B and B has -Ur or A has -Ur and B uses A + => IDE: ignore or cancel + => lazbuild: warn } + var + CurNode: TAvgLvlTreeNode; + CurFile: TPGInterPkgFile; + FirstNodeSameShortName: TAvgLvlTreeNode; + OtherNode: TAvgLvlTreeNode; + OtherFile: TPGInterPkgFile; + FileGroup: TPGIPAmbiguousFileGroup; + i: Integer; + Msg: String; + begin + CurNode:=ShortFiles.FindLowest; + FirstNodeSameShortName:=nil; + while CurNode<>nil do begin + CurFile:=TPGInterPkgFile(CurNode.Data); + if (FirstNodeSameShortName=nil) + or (ComparePGInterPkgShortFilename(CurFile,TPGInterPkgFile(FirstNodeSameShortName.Data))<>0) then + FirstNodeSameShortName:=CurNode; + CurNode:=CurNode.Successor; + if CurFile.AnUnitName<>'' then + continue; // units were already checked in CheckDuplicateUnits + + // check files with same short name + FileGroup:=nil; + OtherNode:=FirstNodeSameShortName; + while OtherNode<>nil do begin + OtherFile:=TPGInterPkgFile(OtherNode.Data); + if (ComparePGInterPkgShortFilename(CurFile,OtherFile)<>0) then break; + OtherNode:=OtherNode.Successor; + + if OtherFile.AnUnitName<>'' then + continue; // units were already checked in CheckDuplicateUnits + + // other file with same short name found + if not CheckIfFilesCanConflict(FileGroup,CurFile,OtherFile) then + continue; + + if FileGroup=nil then begin + FileGroup:=TPGIPAmbiguousFileGroup.Create; + FileGroup.Add(CurFile,nil); + AmbiguousFileGroups.Add(FileGroup); + end; + FileGroup.Add(OtherFile,nil); + end; + + // create Warnings + if FileGroup<>nil then begin + for i:=0 to length(FileGroup.Sources)-1 do + begin + CurFile:=FileGroup.Sources[i]; + Msg:='Duplicate file "'+ExtractFileName(CurFile.ShortFilename)+'"'; + Msg+=' in "'+CurFile.OwnerInfo.Name+'"'; + Msg+=', path="'+CurFile.FullFilename+'"'; + if IDEMessagesWindow<>nil then + IDEMessagesWindow.AddCustomMessage(mluWarning,Msg) + else + debugln('Warning: (lazarus) ',Msg); + end; + end; + + // all duplicates of this file were found -> skip to next group + CurNode:=OtherNode; + end; + end; + +var + i: Integer; + {$IFDEF EnableCheckInterPkgFiles} + Dlg: TPGIPConflictsDialog; + {$ENDIF} +begin + Result:=true; + FilesChanged:=false; + if (PkgList=nil) or (PkgList.Count=0) then exit; + OwnerInfos:=TObjectList.create(true); + FullFiles:=TAvgLvlTree.Create(@ComparePGInterPkgFullFilenames); + Units:=TAvgLvlTree.Create(@ComparePGInterPkgUnitnames); + ShortFiles:=TAvgLvlTree.Create(@ComparePGInterPkgShortFilename); + AmbiguousFileGroups:=TObjectList.create(true); + {$IFDEF EnableCheckInterPkgFiles} + Dlg:=nil; + {$ENDIF} + try + // get target OS, CPU and LCLWidgetType + TargetOS:='$(TargetOS)'; + GlobalMacroList.SubstituteStr(TargetOS); + if TargetOS='' then TargetOS:=GetCompiledTargetOS; + TargetCPU:='$(TargetCPU)'; + GlobalMacroList.SubstituteStr(TargetCPU); + if TargetCPU='' then TargetCPU:=GetCompiledTargetCPU; + LCLWidgetType:='$(LCLWidgetType)'; + GlobalMacroList.SubstituteStr(LCLWidgetType); + if LCLWidgetType='' then LCLWidgetType:=LCLPlatformDirNames[GetDefaultLCLWidgetType]; + + {$IFDEF VerboseCheckInterPkgFiles} + debugln(['CheckInterPkgFiles TargetOS=',TargetOS,' TargetCPU=',TargetCPU,' LCLWidgetType=',LCLWidgetType]); + {$ENDIF} + + // get search paths + AddOwnerInfo(IDEObject); + for i:=0 to PkgList.Count-1 do + AddOwnerInfo(TObject(PkgList[i])); + + // collect FullFiles + for i:=0 to OwnerInfos.Count-1 do + CollectFilesOfOwner(TPGInterPkgOwnerInfo(OwnerInfos[i])); + RemoveSecondaryFiles; + + // checks + CheckDuplicateUnits; + CheckDuplicateSrcFiles; + if (AmbiguousFileGroups.Count=0) then exit; + + // show warnings + if LazarusIDE<>nil then begin + {$IFDEF EnableCheckInterPkgFiles} + // IDE + Dlg:=TPGIPConflictsDialog.Create(nil); + Dlg.Init(AmbiguousFileGroups); + if Dlg.ShowModal<>mrOK then exit(false); + FilesChanged:=Dlg.FilesChanged; + {$ENDIF} + end; + finally + {$IFDEF EnableCheckInterPkgFiles} + Dlg.Free; + {$ENDIF} + AmbiguousFileGroups.Free; + Units.Free; + ShortFiles.Free; + FullFiles.FreeAndClear; + FullFiles.Free; + OwnerInfos.Free; + end; +end; + +function FilenameIsCompiledSource(aFilename: string): boolean; +var + Ext: String; +begin + Ext:=lowercase(ExtractFileExt(aFilename)); + Result:=(Ext='.ppu') or (Ext='.o') or (Ext='.rst') or (Ext='.rsj'); +end; + +end. + diff -Nru lazarus-1.4.4+dfsg/packager/missingpkgfilesdlg.pas lazarus-1.6+dfsg/packager/missingpkgfilesdlg.pas --- lazarus-1.4.4+dfsg/packager/missingpkgfilesdlg.pas 2012-02-13 19:57:58.000000000 +0000 +++ lazarus-1.6+dfsg/packager/missingpkgfilesdlg.pas 2015-07-07 11:43:38.000000000 +0000 @@ -26,7 +26,7 @@ uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, - ComCtrls, FileProcs, + ComCtrls, FileProcs, LazFileCache, PackageDefs, LazarusIDEStrConsts; type diff -Nru lazarus-1.4.4+dfsg/packager/newpkgcomponentdlg.lfm lazarus-1.6+dfsg/packager/newpkgcomponentdlg.lfm --- lazarus-1.4.4+dfsg/packager/newpkgcomponentdlg.lfm 2012-01-31 13:11:31.000000000 +0000 +++ lazarus-1.6+dfsg/packager/newpkgcomponentdlg.lfm 2015-11-06 22:29:50.000000000 +0000 @@ -1,18 +1,19 @@ object NewPkgComponentDialog: TNewPkgComponentDialog - Left = 250 + Left = 396 Height = 255 - Top = 250 + Top = 189 Width = 343 + BorderIcons = [biSystemMenu] Caption = 'NewPkgComponentDialog' ClientHeight = 255 ClientWidth = 343 OnCreate = FormCreate Position = poScreenCenter - LCLVersion = '0.9.31' + LCLVersion = '1.5' object ButtonPanel1: TButtonPanel Left = 6 - Height = 40 - Top = 209 + Height = 29 + Top = 220 Width = 331 OKButton.Name = 'OKButton' OKButton.DefaultCaption = True @@ -22,30 +23,30 @@ CloseButton.DefaultCaption = True CancelButton.Name = 'CancelButton' CancelButton.DefaultCaption = True - TabOrder = 0 + TabOrder = 1 ShowButtons = [pbOK, pbCancel, pbHelp] + ShowBevel = False end - object PkgsGroupBox: TGroupBox + object PkgsListBox: TListBox Left = 6 - Height = 197 - Top = 6 + Height = 185 + Top = 29 Width = 331 Align = alClient BorderSpacing.Around = 6 - Caption = 'PkgsGroupBox' - ClientHeight = 178 - ClientWidth = 327 - TabOrder = 1 - object PkgsListBox: TListBox - Left = 0 - Height = 178 - Top = 0 - Width = 327 - Align = alClient - ItemHeight = 0 - ScrollWidth = 325 - TabOrder = 0 - TopIndex = -1 - end + ItemHeight = 0 + ScrollWidth = 329 + TabOrder = 0 + TopIndex = -1 + end + object Label1: TLabel + Left = 6 + Height = 17 + Top = 6 + Width = 331 + Align = alTop + BorderSpacing.Around = 6 + Caption = 'Label1' + ParentColor = False end end diff -Nru lazarus-1.4.4+dfsg/packager/newpkgcomponentdlg.pas lazarus-1.6+dfsg/packager/newpkgcomponentdlg.pas --- lazarus-1.4.4+dfsg/packager/newpkgcomponentdlg.pas 2013-05-19 01:15:05.000000000 +0000 +++ lazarus-1.6+dfsg/packager/newpkgcomponentdlg.pas 2015-11-06 22:29:50.000000000 +0000 @@ -39,7 +39,7 @@ TNewPkgComponentDialog = class(TForm) ButtonPanel1: TButtonPanel; - PkgsGroupBox: TGroupBox; + Label1: TLabel; PkgsListBox: TListBox; procedure FormCreate(Sender: TObject); private @@ -78,7 +78,7 @@ begin Caption:=lisCreateNewPackageComponent; - PkgsGroupBox.Caption:=lisPkgSelectAPackage; + Label1.Caption:=lisPkgSelectAPackage; FillPkgsListBox; end; diff -Nru lazarus-1.4.4+dfsg/packager/oldcustomcompdlg.pas lazarus-1.6+dfsg/packager/oldcustomcompdlg.pas --- lazarus-1.4.4+dfsg/packager/oldcustomcompdlg.pas 2013-01-26 19:22:05.000000000 +0000 +++ lazarus-1.6+dfsg/packager/oldcustomcompdlg.pas 2015-07-04 23:08:00.000000000 +0000 @@ -28,7 +28,7 @@ uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, - Buttons, FileUtil, lazutf8classes, LazUTF8, IDEProcs, OldCustomCompAddDlg; + Buttons, LazFileUtils, lazutf8classes, LazUTF8, IDEProcs, OldCustomCompAddDlg; Type TRComponent = class(TObject) @@ -430,10 +430,9 @@ Count: Integer; begin Count := 0; - if MyFile.Count < 0 then begin - Result := 0; + Result := 0; + if MyFile.Count < 0 then exit; - end; for I := 0 to MyFile.Count -1 do begin // find start of TYPE if pos('TYPE', uppercase(MyFile[i])) > 0 then begin @@ -448,12 +447,10 @@ if 'IMPLEMENTATION' = uppercase(MyFile[J]) then begin // that's it //messagedlg('Found IMPLEMENTATION at '+inttostr(J),mtInformation,[mbOk],0); - Result := Count; - exit; + exit(Count); end; end; // For J - Result := Count; - exit; + exit(Count); end; // if pos('TYPE'); end; // for I @@ -462,14 +459,12 @@ function TFrmComponentMan.GetComponent(I: Integer): String; var K, J: integer; - TempStr: String; Count: Integer; begin + Result := ''; Count := 0; - if MyFile.Count < 0 then begin - Result := ''; + if MyFile.Count < 0 then exit; - end; for K := 0 to MyFile.Count -1 do begin // find start of TYPE if pos('TYPE', uppercase(MyFile[K])) > 0 then begin @@ -478,20 +473,15 @@ (pos('=CLASS', uppercase(MyFile[j])) > 0)) then begin // found one! Count := Count + 1; - if Count = I then begin - TempStr := Trim(copy(MyFile[J],1,pos('=',MyFile[j])-1)); - Result := TempStr; - exit; - end; + if Count = I then + exit(Trim(copy(MyFile[J],1,pos('=',MyFile[j])-1))); end; // if class if 'IMPLEMENTATION' = uppercase(MyFile[J]) then begin // that's it //messagedlg('Found IMPLEMENTATION at '+inttostr(J),mtInformation,[mbOk],0); - Result := ''; exit; end; end; // For J - Result := ''; exit; end; // if pos('TYPE'); end; // for I @@ -503,14 +493,14 @@ I: Integer; TempStr: String; begin + Result := ''; if MyFile.Count < 1 then exit; for I := 0 to MyFile.Count - 1 do begin if uppercase(copy(MyFile[i],1,4)) = 'UNIT' then begin TempStr := copy(MyFile[i],5,64); TempStr := trim(TempStr); if copy(TempStr,length(TempStr),1) = ';' then TempStr := copy(TempStr,1,length(TempStr)-1); - Result := TempStr; - exit; + exit(TempStr); end; // if UNIT found end; // for I end; diff -Nru lazarus-1.4.4+dfsg/packager/openinstalledpkgdlg.pas lazarus-1.6+dfsg/packager/openinstalledpkgdlg.pas --- lazarus-1.4.4+dfsg/packager/openinstalledpkgdlg.pas 2014-12-10 00:46:43.000000000 +0000 +++ lazarus-1.6+dfsg/packager/openinstalledpkgdlg.pas 2015-03-10 14:51:21.000000000 +0000 @@ -45,12 +45,12 @@ PkgListView: TListView; HintMemo: TMemo; Splitter1: TSplitter; - procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure HelpButtonClick(Sender: TObject); procedure OpenButtonClick(Sender: TObject); procedure PkgListViewDblClick(Sender: TObject); - procedure PkgListViewSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure PkgListViewSelectItem(Sender: TObject; {%H-}Item: TListItem; {%H-}Selected: Boolean); private public Package: TLazPackage; diff -Nru lazarus-1.4.4+dfsg/packager/packagedefs.pas lazarus-1.6+dfsg/packager/packagedefs.pas --- lazarus-1.4.4+dfsg/packager/packagedefs.pas 2014-12-09 13:53:03.000000000 +0000 +++ lazarus-1.6+dfsg/packager/packagedefs.pas 2015-12-21 22:44:50.000000000 +0000 @@ -37,14 +37,20 @@ interface uses - Classes, SysUtils, contnrs, typinfo, LCLProc, LCLType, LResources, Graphics, - Forms, FileProcs, FileUtil, AVL_Tree, LazConfigStorage, Laz2_XMLCfg, - LazFileUtils, LazFileCache, LazUTF8, BasicCodeTools, CodeToolsCfgScript, - DefineTemplates, CodeToolManager, CodeCache, CodeToolsStructs, PropEdits, - LazIDEIntf, MacroIntf, MacroDefIntf, PackageIntf, IDEOptionsIntf, ProjPackBase, + // FCL, LCL + Classes, SysUtils, contnrs, typinfo, AVL_Tree, + LCLProc, LCLType, LResources, Graphics, Controls, Forms, Dialogs, + // Codetools + FileProcs, FileUtil, LazConfigStorage, Laz2_XMLCfg, BasicCodeTools, + DefineTemplates, CodeToolManager, CodeCache, CodeToolsCfgScript, CodeToolsStructs, + // LazUtils + LazFileUtils, LazFileCache, LazUTF8, + // IDEIntf + PropEdits, LazIDEIntf, MacroIntf, MacroDefIntf, PackageIntf, IDEOptionsIntf, + ProjPackBase, IDEDialogs, ComponentReg, + // IDE EditDefineTree, CompilerOptions, CompOptsModes, IDEOptionDefs, - LazarusIDEStrConsts, IDEProcs, ComponentReg, TransferMacros, - FileReferenceList, PublishModule; + LazarusIDEStrConsts, IDEProcs, TransferMacros, FileReferenceList, PublishModule; type TLazPackage = class; @@ -273,7 +279,7 @@ FileVersion: integer); procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string; UsePathDelim: TPathDelimSwitch); - function MakeSense: boolean; + function IsMakingSense: boolean; function IsCompatible(const Version: TPkgVersion): boolean; function IsCompatible(const PkgName: string; const Version: TPkgVersion): boolean; @@ -283,7 +289,7 @@ procedure ConsistencyCheck; function IsCompatible(Pkg: TLazPackageID): boolean; procedure MakeCompatible(const PkgName: string; const Version: TPkgVersion); - function AsString(WithOwner: boolean = false): string; + function AsString(WithOwner: boolean = false; WithDefaults: boolean = false): string; function NextUsedByDependency: TPkgDependency; function PrevUsedByDependency: TPkgDependency; function NextRequiresDependency: TPkgDependency; @@ -294,10 +300,10 @@ ListType: TPkgDependencyList); procedure RemoveFromList(var FirstDependency: TPkgDependency; ListType: TPkgDependencyList); - procedure MoveUpInList(var FirstDependency: TPkgDependency; - ListType: TPkgDependencyList); - procedure MoveDownInList(var FirstDependency: TPkgDependency; - ListType: TPkgDependencyList); + function MoveUpInList(var FirstDependency: TPkgDependency; + ListType: TPkgDependencyList): Boolean; + function MoveDownInList(var FirstDependency: TPkgDependency; + ListType: TPkgDependencyList): Boolean; function MakeFilenameRelativeToOwner(const AFilename: string): string; function FindDefaultFilename: string; public @@ -370,7 +376,7 @@ function GetOwnerName: string; override; procedure InvalidateOptions; function GetDefaultMainSourceFileName: string; override; - function CreateTargetFilename(const {%H-}MainSourceFileName: string): string; override; + function CreateTargetFilename: string; override; function HasCompilerCommand: boolean; override; procedure LoadFromXMLConfig(AXMLConfig: TXMLConfig; const Path: string); override; @@ -520,6 +526,7 @@ FAuthor: string; FAutoUpdate: TPackageUpdatePolicy; FFPDocPackageName: string; + FOnModifySilently: TNotifyEvent; FOptionsBackup: TLazPackage; FComponents: TFPList; // TFPList of TPkgComponent FDefineTemplates: TLazPackageDefineTemplates; @@ -635,9 +642,11 @@ procedure SaveToString(out s: string); // consistency procedure CheckInnerDependencies; - function MakeSense: boolean; + function IsMakingSense: boolean; procedure ConsistencyCheck; // paths, define templates + function ExtendUnitSearchPath(NewUnitPaths: string): boolean; + function ExtendIncSearchPath(NewIncPaths: string): boolean; function IsVirtual: boolean; override; function HasDirectory: boolean; function HasStaticDirectory: boolean; @@ -681,6 +690,8 @@ function AddFile(const NewFilename, NewUnitName: string; NewFileType: TPkgFileType; NewFlags: TPkgFileFlags; CompPriorityCat: TComponentPriorityCategory): TPkgFile; + function AddFileByName(aFilename: string; + var NewUnitPaths, NewIncPaths: String): Boolean; function AddRemovedFile(const NewFilename, NewUnitName: string; NewFileType: TPkgFileType; NewFlags: TPkgFileFlags; CompPriorityCat: TComponentPriorityCategory): TPkgFile; @@ -707,8 +718,8 @@ procedure DeleteRequiredDependency(Dependency: TPkgDependency); procedure DeleteRemovedDependency(Dependency: TPkgDependency); procedure RemoveRemovedDependency(Dependency: TPkgDependency); - procedure MoveRequiredDependencyUp(Dependency: TPkgDependency); - procedure MoveRequiredDependencyDown(Dependency: TPkgDependency); + function MoveRequiredDependencyUp(Dependency: TPkgDependency): Boolean; + function MoveRequiredDependencyDown(Dependency: TPkgDependency): Boolean; function CreateDependencyWithOwner(NewOwner: TObject; WithMinVersion: boolean = false): TPkgDependency; function Requires(APackage: TLazPackage): boolean; @@ -787,6 +798,7 @@ property UserReadOnly: boolean read FUserReadOnly write SetUserReadOnly; property UserIgnoreChangeStamp: integer read FUserIgnoreChangeStamp write FUserIgnoreChangeStamp; + property OnModifySilently: TNotifyEvent read FOnModifySilently write FOnModifySilently; end; PLazPackage = ^TLazPackage; @@ -889,6 +901,7 @@ XMLConfig: TXMLConfig); function IsValidUnitName(AUnitName: String): Boolean; inline; +function IsValidPkgName(APkgName: String): Boolean; inline; var Package1: TLazPackage; // don't use it - only for options dialog @@ -905,6 +918,11 @@ Result := IsDottedIdentifier(AUnitName); end; +function IsValidPkgName(APkgName: String): Boolean; +begin + Result := IsValidIdent(APkgName); +end; + function PkgFileTypeIdentToType(const s: string): TPkgFileType; begin for Result:=Low(TPkgFileType) to High(TPkgFileType) do @@ -996,7 +1014,7 @@ PkgDependency.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/', FileVersion); PkgDependency.HoldPackage:=HoldPackages; - if PkgDependency.MakeSense then + if PkgDependency.IsMakingSense then List.Add(PkgDependency) else PkgDependency.Free; @@ -1305,8 +1323,7 @@ end; end; -function FindLowestPkgDependencyNodeWithName(const PkgName: string - ): TAVLTreeNode; +function FindLowestPkgDependencyNodeWithName(const PkgName: string): TAVLTreeNode; begin Result:=nil; if PackageDependencies=nil then exit; @@ -1346,7 +1363,7 @@ Result:=false; if CompareFileExt(AFilename,'.lpk',false)<>0 then exit; PkgName:=ExtractFileNameOnly(AFilename); - if (PkgName='') or (not IsValidUnitName(PkgName)) then exit; + if (PkgName='') or (not IsValidPkgName(PkgName)) then exit; Result:=true; end; @@ -1939,9 +1956,9 @@ XMLConfig.SetDeleteValue(Path+'DefaultFilename/Prefer',PreferDefaultFilename,false); end; -function TPkgDependency.MakeSense: boolean; +function TPkgDependency.IsMakingSense: boolean; begin - Result:=IsValidUnitName(PackageName); + Result:=IsValidPkgName(PackageName); if Result and (pdfMinVersion in FFlags) and (pdfMaxVersion in FFlags) and (MinVersion.Compare(MaxVersion)>0) then @@ -2011,7 +2028,8 @@ if MaxVersion.Compare(Version)<0 then MaxVersion.Assign(Version); end; -function TPkgDependency.AsString(WithOwner: boolean): string; +function TPkgDependency.AsString(WithOwner: boolean; WithDefaults: boolean + ): string; begin if Self=nil then exit('(nil)'); @@ -2022,6 +2040,17 @@ Result:=Result+' (<='+MaxVersion.AsString+')'; if WithOwner and (Owner<>nil) then Result:=GetDependencyOwnerAsString(Self)+' uses '+Result; + if WithDefaults then + begin + if DefaultFilename<>'' then begin + Result+=', '; + if PreferDefaultFilename then + Result+='preferred' + else + Result+='default'; + Result+='="'+DefaultFilename+'"'; + end; + end; end; function TPkgDependency.NextUsedByDependency: TPkgDependency; @@ -2076,12 +2105,12 @@ PrevDependency[ListType]:=nil; end; -procedure TPkgDependency.MoveUpInList(var FirstDependency: TPkgDependency; - ListType: TPkgDependencyList); +function TPkgDependency.MoveUpInList(var FirstDependency: TPkgDependency; + ListType: TPkgDependencyList): Boolean; var OldPrev: TPkgDependency; begin - if (FirstDependency=Self) or (PrevDependency[ListType]=nil) then exit; + if (FirstDependency=Self) or (PrevDependency[ListType]=nil) then exit(False); OldPrev:=PrevDependency[ListType]; if OldPrev.PrevDependency[ListType]<>nil then OldPrev.PrevDependency[ListType].NextDependency[ListType]:=Self; @@ -2092,14 +2121,15 @@ NextDependency[ListType]:=OldPrev; OldPrev.PrevDependency[ListType]:=Self; if FirstDependency=OldPrev then FirstDependency:=Self; + Result:=True; end; -procedure TPkgDependency.MoveDownInList(var FirstDependency: TPkgDependency; - ListType: TPkgDependencyList); +function TPkgDependency.MoveDownInList(var FirstDependency: TPkgDependency; + ListType: TPkgDependencyList): Boolean; var OldNext: TPkgDependency; begin - if (NextDependency[ListType]=nil) then exit; + if (NextDependency[ListType]=nil) then exit(False); OldNext:=NextDependency[ListType]; if OldNext.NextDependency[ListType]<>nil then OldNext.NextDependency[ListType].PrevDependency[ListType]:=Self; @@ -2110,6 +2140,7 @@ PrevDependency[ListType]:=OldNext; OldNext.NextDependency[ListType]:=Self; if FirstDependency=Self then FirstDependency:=OldNext; + Result:=True; end; function TPkgDependency.MakeFilenameRelativeToOwner(const AFilename: string): string; @@ -2161,7 +2192,10 @@ class function TPackageIDEOptions.GetInstance: TAbstractIDEOptions; begin - Result := Package1.IDEOptions; + if Package1<>nil then + Result := Package1.IDEOptions + else + Result := nil; end; class function TPackageIDEOptions.GetGroupCaption: string; @@ -2207,24 +2241,42 @@ end; end; + if s = '' then + begin // check local macros - if SysUtils.CompareText(MacroName,'PkgOutDir')=0 then begin - Handled:=true; - if Data=CompilerOptionMacroNormal then - s:=CompilerOptions.ParsedOpts.GetParsedValue(pcosOutputDir) - else - s:=CompilerOptions.ParsedOpts.GetParsedPIValue(pcosOutputDir); - exit; - end - else if SysUtils.CompareText(MacroName,'PkgDir')=0 then begin - Handled:=true; - s:=FDirectory; - exit; - end - else if SysUtils.CompareText(MacroName,'PkgName')=0 then begin - Handled:=true; - s:=Name; - exit; + if SysUtils.CompareText(MacroName,'PkgOutDir')=0 then begin + Handled:=true; + if Data=CompilerOptionMacroNormal then + s:=CompilerOptions.ParsedOpts.GetParsedValue(pcosOutputDir) + else + s:=CompilerOptions.ParsedOpts.GetParsedPIValue(pcosOutputDir); + exit; + end + else if SysUtils.CompareText(MacroName,'PkgDir')=0 then begin + Handled:=true; + s:=FDirectory; + exit; + end + else if SysUtils.CompareText(MacroName,'PkgName')=0 then begin + Handled:=true; + s:=Name; + exit; + end + else if SysUtils.CompareText(MacroName,'PkgIncPath')=0 then begin + Handled:=true; + s:=GetIncludePath(false); + exit; + end + else if SysUtils.CompareText(MacroName,'PkgSrcPath')=0 then begin + Handled:=true; + s:=SourceDirectories.CreateSearchPathFromAllFiles; + exit; + end + else if SysUtils.CompareText(MacroName,'PkgUnitPath')=0 then begin + Handled:=true; + s:=GetUnitPath(false); + exit; + end; end; // check global macros @@ -2575,6 +2627,8 @@ inc(FChangeStamp) else FChangeStamp:=low(FChangeStamp); + if Assigned(FOnModifySilently) then + FOnModifySilently(Self); end; procedure TLazPackage.SetModified(const AValue: boolean); @@ -3032,10 +3086,10 @@ // ToDo: make some checks like deactivating double requirements end; -function TLazPackage.MakeSense: boolean; +function TLazPackage.IsMakingSense: boolean; begin Result:=false; - if (Name='') or (not IsValidUnitName(Name)) then exit; + if not IsValidPkgName(Name) then exit; Result:=true; end; @@ -3116,6 +3170,50 @@ CheckList(FComponents,true,true,true); end; +function TLazPackage.ExtendUnitSearchPath(NewUnitPaths: string): boolean; +var + CurUnitPaths: String; + r: TModalResult; +begin + CurUnitPaths:=CompilerOptions.ParsedOpts.GetParsedValue(pcosUnitPath); + NewUnitPaths:=RemoveSearchPaths(NewUnitPaths,CurUnitPaths); + if NewUnitPaths<>'' then begin + NewUnitPaths:=CreateRelativeSearchPath(NewUnitPaths,Directory); + r:=IDEMessageDialog(lisExtendUnitPath, + Format(lisExtendUnitSearchPathOfPackageWith, [Name, #13, + NewUnitPaths]), mtConfirmation, [mbYes, mbNo, mbCancel]); + case r of + mrYes: CompilerOptions.OtherUnitFiles:= + MergeSearchPaths(CompilerOptions.OtherUnitFiles,NewUnitPaths); + mrNo: ; + else exit(false); + end; + end; + Result:=true; +end; + +function TLazPackage.ExtendIncSearchPath(NewIncPaths: string): boolean; +var + CurIncPaths: String; + r: TModalResult; +begin + CurIncPaths:=CompilerOptions.ParsedOpts.GetParsedValue(pcosIncludePath); + NewIncPaths:=RemoveSearchPaths(NewIncPaths,CurIncPaths); + if NewIncPaths<>'' then begin + NewIncPaths:=CreateRelativeSearchPath(NewIncPaths,Directory); + r:=IDEMessageDialog(lisExtendIncludePath, + Format(lisExtendIncludeFileSearchPathOfPackageWith, [Name, #13, + NewIncPaths]), mtConfirmation, [mbYes, mbNo, mbCancel]); + case r of + mrYes: CompilerOptions.IncludePath:= + MergeSearchPaths(CompilerOptions.IncludePath,NewIncPaths); + mrNo: ; + else exit(false); + end; + end; + Result:=true; +end; + function TLazPackage.IndexOfPkgComponent(PkgComponent: TPkgComponent): integer; begin Result:=FComponents.IndexOf(PkgComponent); @@ -3314,6 +3412,44 @@ Modified:=true; end; +function TLazPackage.AddFileByName(aFilename: string; + var NewUnitPaths, NewIncPaths: String): Boolean; +var + NewFileType: TPkgFileType; + NewUnitName: String; + HasRegister: Boolean; + NewFlags: TPkgFileFlags; + Code: TCodeBuffer; + CurDir: String; +begin + Result := True; + aFilename:=CleanAndExpandFilename(aFileName); + if not FileExistsUTF8(aFilename) then Exit(False); + if DirPathExists(aFilename) then Exit(False); + if FindPkgFile(aFilename,true,false)<>nil then Exit(False); + NewFileType:=FileNameToPkgFileType(aFilename); + NewFlags:=[]; + HasRegister:=false; + NewUnitName:=''; + if (NewFileType=pftUnit) then begin + Code:=CodeToolBoss.LoadFile(aFilename,true,false); + NewUnitName:=CodeToolBoss.GetSourceName(Code,false); + if NewUnitName='' then + NewUnitName:=ExtractFileNameOnly(aFilename); + if FindUsedUnit(NewUnitName)=nil then + Include(NewFlags,pffAddToPkgUsesSection); + CodeToolBoss.HasInterfaceRegisterProc(Code,HasRegister); + if HasRegister then + Include(NewFlags,pffHasRegisterProc); + end; + AddFile(aFilename,NewUnitName,NewFileType,NewFlags,cpNormal); + CurDir:=ChompPathDelim(ExtractFilePath(aFilename)); + if NewFileType=pftUnit then + NewUnitPaths:=MergeSearchPaths(NewUnitPaths,CurDir) + else + NewIncPaths:=MergeSearchPaths(NewIncPaths,CurDir); +end; + function TLazPackage.AddRemovedFile(const NewFilename, NewUnitName: string; NewFileType: TPkgFileType; NewFlags: TPkgFileFlags; CompPriorityCat: TComponentPriorityCategory): TPkgFile; @@ -3582,14 +3718,14 @@ Dependency.Free; end; -procedure TLazPackage.MoveRequiredDependencyUp(Dependency: TPkgDependency); +function TLazPackage.MoveRequiredDependencyUp(Dependency: TPkgDependency): Boolean; begin - Dependency.MoveUpInList(FFirstRequiredDependency,pdlRequires); + Result := Dependency.MoveUpInList(FFirstRequiredDependency,pdlRequires); end; -procedure TLazPackage.MoveRequiredDependencyDown(Dependency: TPkgDependency); +function TLazPackage.MoveRequiredDependencyDown(Dependency: TPkgDependency): Boolean; begin - Dependency.MoveDownInList(FFirstRequiredDependency,pdlRequires); + Result := Dependency.MoveDownInList(FFirstRequiredDependency,pdlRequires); end; function TLazPackage.CreateDependencyWithOwner(NewOwner: TObject; @@ -3979,25 +4115,19 @@ ResHandle: TLResource; ResName: String; begin - Result := nil; ResName := ComponentClass.ClassName; // prevent raising exception and speedup a bit search/load ResHandle := LazarusResources.Find(ResName); if ResHandle <> nil then Result := CreateBitmapFromLazarusResource(ResHandle) else - if FindResource(HInstance, PChar(ResName), PChar(RT_BITMAP)) <> 0 then - begin - Result := TBitmap.Create; - Result.LoadFromResourceName(HInstance, ResName); - Result.Transparent := True; - end - else - if FindResource(HInstance, PChar(ResName), PChar(RT_RCDATA)) <> 0 then Result := CreateBitmapFromResourceName(HInstance, ResName); if Result = nil then - Result := CreateBitmapFromResourceName(HInstance, 'default'); + Result := CreateBitmapFromResourceName(HInstance, 'default') + else + if Result is TBitmap then + Result.Transparent := True; end; function TPkgComponent.HasIcon: boolean; @@ -4116,7 +4246,10 @@ class function TPkgCompilerOptions.GetInstance: TAbstractIDEOptions; begin - Result := Package1.CompilerOptions; + if Package1<>nil then + Result := Package1.CompilerOptions + else + Result := nil; end; function TPkgCompilerOptions.IsActive: boolean; @@ -4140,7 +4273,9 @@ function TPkgCompilerOptions.GetOwnerName: string; begin if LazPackage<>nil then - Result:=LazPackage.IDAsString; + Result:=LazPackage.IDAsString + else + Result:=''; end; procedure TPkgCompilerOptions.InvalidateOptions; @@ -4161,8 +4296,7 @@ Result:=inherited GetDefaultMainSourceFileName; end; -function TPkgCompilerOptions.CreateTargetFilename( - const MainSourceFileName: string): string; +function TPkgCompilerOptions.CreateTargetFilename: string; begin Result:=''; end; diff -Nru lazarus-1.4.4+dfsg/packager/packageeditor.lfm lazarus-1.6+dfsg/packager/packageeditor.lfm --- lazarus-1.4.4+dfsg/packager/packageeditor.lfm 2014-10-30 19:47:48.000000000 +0000 +++ lazarus-1.6+dfsg/packager/packageeditor.lfm 2015-12-17 21:58:51.000000000 +0000 @@ -15,8 +15,7 @@ OnCreate = FormCreate OnDestroy = FormDestroy OnDropFiles = FormDropFiles - Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.7' object ToolBar: TToolBar Left = 0 Height = 48 @@ -30,18 +29,18 @@ object PropsGroupBox: TGroupBox Left = 0 Height = 118 - Top = 318 + Top = 314 Width = 464 Align = alBottom Caption = 'PropsGroupBox' - ClientHeight = 101 + ClientHeight = 98 ClientWidth = 460 TabOrder = 3 object CallRegisterProcCheckBox: TCheckBox Left = 0 - Height = 24 + Height = 19 Top = 0 - Width = 171 + Width = 158 Caption = 'CallRegisterProcCheckBox' OnChange = CallRegisterProcCheckBoxChange ParentShowHint = False @@ -51,10 +50,10 @@ object AddToUsesPkgSectionCheckBox: TCheckBox AnchorSideLeft.Control = CallRegisterProcCheckBox AnchorSideLeft.Side = asrBottom - Left = 181 - Height = 24 + Left = 168 + Height = 19 Top = 0 - Width = 201 + Width = 191 BorderSpacing.Left = 10 Caption = 'AddToUsesPkgSectionCheckBox' OnChange = AddToUsesPkgSectionCheckBoxChange @@ -67,9 +66,9 @@ AnchorSideTop.Control = MinVersionEdit AnchorSideTop.Side = asrCenter Left = 0 - Height = 24 - Top = 0 - Width = 161 + Height = 19 + Top = 2 + Width = 151 Caption = 'UseMinVersionCheckBox' OnChange = UseMinVersionCheckBoxChange TabOrder = 2 @@ -78,8 +77,8 @@ AnchorSideLeft.Control = UseMinVersionCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = PropsGroupBox - Left = 171 - Height = 25 + Left = 161 + Height = 23 Top = 0 Width = 100 BorderSpacing.Left = 10 @@ -92,9 +91,9 @@ AnchorSideTop.Control = MaxVersionEdit AnchorSideTop.Side = asrCenter Left = 0 - Height = 24 + Height = 19 Top = 27 - Width = 163 + Width = 152 Caption = 'UseMaxVersionCheckBox' OnChange = UseMaxVersionCheckBoxChange TabOrder = 4 @@ -104,9 +103,9 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = MinVersionEdit AnchorSideTop.Side = asrBottom - Left = 173 - Height = 25 - Top = 27 + Left = 162 + Height = 23 + Top = 25 Width = 100 BorderSpacing.Left = 10 BorderSpacing.Top = 2 @@ -119,9 +118,9 @@ AnchorSideTop.Control = MaxVersionEdit AnchorSideTop.Side = asrBottom Left = 0 - Height = 27 - Top = 58 - Width = 152 + Height = 25 + Top = 54 + Width = 159 AutoSize = True BorderSpacing.Top = 6 Caption = 'ApplyDependencyButton' @@ -132,38 +131,36 @@ AnchorSideTop.Control = CallRegisterProcCheckBox AnchorSideTop.Side = asrBottom Left = 0 - Height = 71 - Top = 30 + Height = 73 + Top = 25 Width = 460 Align = alBottom Anchors = [akTop, akLeft, akRight, akBottom] BorderSpacing.Top = 6 Caption = 'RegisteredPluginsGroupBox' - ClientHeight = 54 + ClientHeight = 53 ClientWidth = 456 TabOrder = 7 object RegisteredListBox: TListBox Left = 0 - Height = 54 + Height = 53 Top = 0 Width = 456 Align = alClient ItemHeight = 0 OnDrawItem = RegisteredListBoxDrawItem - ScrollWidth = 454 Style = lbOwnerDrawFixed TabOrder = 0 - TopIndex = -1 end end object DisableI18NForLFMCheckBox: TCheckBox AnchorSideLeft.Control = AddToUsesPkgSectionCheckBox AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = AddToUsesPkgSectionCheckBox - Left = 388 - Height = 24 + Left = 365 + Height = 19 Top = 0 - Width = 186 + Width = 174 BorderSpacing.Left = 6 Caption = 'DisableI18NForLFMCheckBox' OnChange = DisableI18NForLFMCheckBoxChange @@ -174,8 +171,8 @@ end object StatusBar: TStatusBar Left = 0 - Height = 19 - Top = 436 + Height = 23 + Top = 432 Width = 464 Panels = <> end @@ -183,7 +180,7 @@ Cursor = crVSplit Left = 0 Height = 5 - Top = 313 + Top = 309 Width = 464 Align = alBottom ResizeAnchor = akBottom @@ -246,8 +243,8 @@ AnchorSideTop.Side = asrCenter AnchorSideRight.Side = asrBottom Left = 163 - Height = 28 - Top = 0 + Height = 23 + Top = 3 Width = 300 UseFormActivate = True ButtonWidth = 23 @@ -316,7 +313,7 @@ end object ItemsTreeView: TTreeView Left = 0 - Height = 236 + Height = 232 Top = 77 Width = 464 Align = alClient @@ -351,4 +348,32 @@ left = 300 top = 10 end + object AddPopupMenu: TPopupMenu + left = 120 + top = 10 + object mnuAddDiskFile: TMenuItem + Caption = 'Add file...' + Default = True + OnClick = mnuAddDiskFileClick + end + object MenuItem1: TMenuItem + Caption = '-' + end + object mnuAddDiskFiles: TMenuItem + Caption = 'Add multiple files...' + OnClick = mnuAddDiskFilesClick + end + object mnuAddNewFile: TMenuItem + Caption = 'New file of type...' + OnClick = mnuAddNewFileClick + end + object mnuAddNewComp: TMenuItem + Caption = 'New component...' + OnClick = mnuAddNewCompClick + end + object mnuAddNewReqr: TMenuItem + Caption = 'New requirement...' + OnClick = mnuAddNewReqrClick + end + end end diff -Nru lazarus-1.4.4+dfsg/packager/packageeditor.pas lazarus-1.6+dfsg/packager/packageeditor.pas --- lazarus-1.4.4+dfsg/packager/packageeditor.pas 2015-02-21 21:04:09.000000000 +0000 +++ lazarus-1.6+dfsg/packager/packageeditor.pas 2015-12-21 22:44:50.000000000 +0000 @@ -34,25 +34,34 @@ uses // LCL FCL Classes, SysUtils, Forms, Controls, StdCtrls, ComCtrls, Buttons, Graphics, - LCLType, LCLProc, Menus, Dialogs, FileUtil, LazFileCache, ExtCtrls, + LCLType, LCLProc, Menus, Dialogs, FileUtil, LazFileUtils, LazFileCache, ExtCtrls, contnrs, // IDEIntf CodeTools - CodeToolManager, CodeCache, CodeTree, + CodeToolManager, CodeCache, TreeFilterEdit, IDEImagesIntf, MenuIntf, LazIDEIntf, ProjectIntf, CodeToolsStructs, - FormEditingIntf, PackageIntf, IDEHelpIntf, IDEOptionsIntf, SrcEditorIntf, - IDEMsgIntf, IDEExternToolIntf, + FormEditingIntf, PackageIntf, IDEHelpIntf, IDEOptionsIntf, + IDEExternToolIntf, + NewItemIntf, IDEWindowIntf, // IDE IDEDialogs, IDEProcs, LazarusIDEStrConsts, IDEDefs, CompilerOptions, ComponentReg, UnitResources, EnvironmentOpts, DialogProcs, InputHistory, PackageDefs, AddToPackageDlg, PkgVirtualUnitEditor, MissingPkgFilesDlg, - PackageSystem, CleanPkgDeps; + PackageSystem, CleanPkgDeps, MainBase; const PackageEditorMenuRootName = 'PackageEditor'; PackageEditorMenuFilesRootName = 'PackageEditorFiles'; PackageEditorWindowPrefix = 'PackageEditor_'; var + // General actions for the Files and Required packages root nodes. + // Duplicates actions found under the "Add" button. + PkgEditMenuAddDiskFile: TIDEMenuCommand; + PkgEditMenuAddDiskFiles: TIDEMenuCommand; + PkgEditMenuAddNewFile: TIDEMenuCommand; + PkgEditMenuAddNewComp: TIDEMenuCommand; + PkgEditMenuAddNewReqr: TIDEMenuCommand; + // selected files PkgEditMenuOpenFile: TIDEMenuCommand; PkgEditMenuRemoveFile: TIDEMenuCommand; @@ -68,12 +77,11 @@ PkgEditMenuUseNoUnitsInDirectory: TIDEMenuCommand; // dependencies - PkgEditMenuOpenPackage: TIDEMenuCommand; PkgEditMenuRemoveDependency: TIDEMenuCommand; PkgEditMenuReAddDependency: TIDEMenuCommand; - PkgEditMenuDependencyStoreFileNameAsDefault: TIDEMenuCommand; - PkgEditMenuDependencyStoreFileNameAsPreferred: TIDEMenuCommand; - PkgEditMenuDependencyClearStoredFileName: TIDEMenuCommand; + PkgEditMenuDepStoreFileNameDefault: TIDEMenuCommand; + PkgEditMenuDepStoreFileNamePreferred: TIDEMenuCommand; + PkgEditMenuDepClearStoredFileName: TIDEMenuCommand; PkgEditMenuCleanDependencies: TIDEMenuCommand; // all files @@ -176,6 +184,12 @@ { TPackageEditorForm } TPackageEditorForm = class(TBasePackageEditor,IFilesEditorInterface) + MenuItem1: TMenuItem; + mnuAddDiskFile: TMenuItem; + mnuAddDiskFiles: TMenuItem; + mnuAddNewFile: TMenuItem; + mnuAddNewComp: TMenuItem; + mnuAddNewReqr: TMenuItem; MoveDownBtn: TSpeedButton; MoveUpBtn: TSpeedButton; DirectoryHierarchyButton: TSpeedButton; @@ -183,6 +197,7 @@ DisableI18NForLFMCheckBox: TCheckBox; FilterEdit: TTreeFilterEdit; FilterPanel: TPanel; + AddPopupMenu: TPopupMenu; SortAlphabeticallyButton: TSpeedButton; Splitter1: TSplitter; // toolbar @@ -192,7 +207,6 @@ CompileBitBtn: TToolButton; UseBitBtn: TToolButton; AddBitBtn: TToolButton; - AddMoreBitBtn: TToolButton; RemoveBitBtn: TToolButton; OptionsBitBtn: TToolButton; MoreBitBtn: TToolButton; @@ -218,8 +232,6 @@ UsePopupMenu: TPopupMenu; ItemsPopupMenu: TPopupMenu; MorePopupMenu: TPopupMenu; - procedure AddBitBtnClick(Sender: TObject); - procedure AddMoreBitBtnClick(Sender: TObject); procedure AddToProjectClick(Sender: TObject); procedure AddToUsesPkgSectionCheckBoxChange(Sender: TObject); procedure ApplyDependencyButtonClick(Sender: TObject); @@ -244,12 +256,17 @@ procedure FormDropFiles(Sender: TObject; const FileNames: array of String); procedure ItemsPopupMenuPopup(Sender: TObject); procedure ItemsTreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView; - Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; - var PaintImages, DefaultDraw: Boolean); + Node: TTreeNode; {%H-}State: TCustomDrawState; Stage: TCustomDrawStage; + var {%H-}PaintImages, {%H-}DefaultDraw: Boolean); procedure ItemsTreeViewDragDrop(Sender, Source: TObject; X, Y: Integer); procedure ItemsTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure ItemsTreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); + procedure mnuAddDiskFileClick(Sender: TObject); + procedure mnuAddDiskFilesClick(Sender: TObject); + procedure mnuAddNewCompClick(Sender: TObject); + procedure mnuAddNewReqrClick(Sender: TObject); + procedure mnuAddNewFileClick(Sender: TObject); procedure MorePopupMenuPopup(Sender: TObject); procedure ItemsTreeViewDblClick(Sender: TObject); procedure ItemsTreeViewSelectionChanged(Sender: TObject); @@ -260,21 +277,21 @@ procedure MinVersionEditChange(Sender: TObject); procedure MoveDownBtnClick(Sender: TObject); procedure MoveUpBtnClick(Sender: TObject); - procedure OnIdle(Sender: TObject; var Done: Boolean); + procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean); procedure OpenFileMenuItemClick(Sender: TObject); procedure OptionsBitBtnClick(Sender: TObject); - procedure PackageEditorFormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure PackageEditorFormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction); procedure PackageEditorFormCloseQuery(Sender: TObject; var CanClose: boolean); procedure PublishClick(Sender: TObject); procedure ReAddMenuItemClick(Sender: TObject); - procedure RegisteredListBoxDrawItem(Control: TWinControl; Index: Integer; - ARect: TRect; State: TOwnerDrawState); + procedure RegisteredListBoxDrawItem({%H-}Control: TWinControl; Index: Integer; + ARect: TRect; {%H-}State: TOwnerDrawState); procedure RemoveBitBtnClick(Sender: TObject); procedure RevertClick(Sender: TObject); procedure SaveAsClick(Sender: TObject); procedure SaveBitBtnClick(Sender: TObject); - procedure SetDependencyDefaultFilenameMenuItemClick(Sender: TObject); - procedure SetDependencyPreferredFilenameMenuItemClick(Sender: TObject); + procedure SetDepDefaultFilenameMenuItemClick(Sender: TObject); + procedure SetDepPreferredFilenameMenuItemClick(Sender: TObject); procedure ShowMissingFilesMenuItemClick(Sender: TObject); procedure SortAlphabeticallyButtonClick(Sender: TObject); procedure SortFilesMenuItemClick(Sender: TObject); @@ -303,7 +320,7 @@ FFirstNodeData: array[TPENodeType] of TPENodeData; fUpdateLock: integer; fForcedFlags: TPEFlags; - function AddOneFile(aFilename: string; var NewUnitPaths, NewIncPaths: String): TModalResult; + procedure DoAddNewFile(NewItem: TNewIDEItemTemplate); procedure FreeNodeData(Typ: TPENodeType); function CreateNodeData(Typ: TPENodeType; aName: string; aRemoved: boolean): TPENodeData; procedure SetDependencyDefaultFilename(AsPreferred: boolean); @@ -311,7 +328,8 @@ procedure SetShowDirectoryHierarchy(const AValue: boolean); procedure SetSortAlphabetically(const AValue: boolean); procedure SetupComponents; - function OnTreeViewGetImageIndex(Str: String; Data: TObject; var AIsEnabled: Boolean): Integer; + function OnTreeViewGetImageIndex({%H-}Str: String; Data: TObject; var {%H-}AIsEnabled: Boolean): Integer; + procedure ShowAddDialogEx(AType: TAddToPkgType); procedure UpdateNodeImage(TVNode: TTreeNode; NodeData: TPENodeData); procedure UpdatePending; function CanUpdate(Flag: TPEFlag; Immediately: boolean): boolean; @@ -346,8 +364,7 @@ procedure DoMoveDependency(Offset: integer); procedure DoPublishProject; procedure DoEditVirtualUnit; - procedure DoExpandDirectory; - procedure DoCollapseDirectory; + procedure DoExpandCollapseDirectory(ExpandIt: Boolean); procedure DoUseUnitsInDirectory(Use: boolean); procedure DoRevert; procedure DoSave(SaveAs: boolean); @@ -423,8 +440,11 @@ procedure Clear; procedure Remove(Editor: TPackageEditorForm); function IndexOfPackage(Pkg: TLazPackage): integer; - function FindEditor(Pkg: TLazPackage): TPackageEditorForm; - function OpenEditor(Pkg: TLazPackage): TPackageEditorForm; + function IndexOfPackage(const PkgName: string): integer; + function FindEditor(Pkg: TLazPackage): TPackageEditorForm; overload; + function FindEditor(const PkgName: string): TPackageEditorForm; overload; + function CreateEditor(Pkg: TLazPackage; DoDisableAutoSizing: boolean): TPackageEditorForm; + function OpenEditor(Pkg: TLazPackage; BringToFront: boolean): TPackageEditorForm; function OpenFile(Sender: TObject; const Filename: string): TModalResult; function OpenPkgFile(Sender: TObject; PkgFile: TPkgFile): TModalResult; function OpenDependency(Sender: TObject; @@ -509,6 +529,9 @@ implementation +uses + NewDialog; + {$R *.lfm} var @@ -537,7 +560,13 @@ // register the section for operations on selected files PkgEditMenuSectionFile:=RegisterIDEMenuSection(PackageEditorMenuFilesRoot,'File'); AParent:=PkgEditMenuSectionFile; - PkgEditMenuOpenFile:=RegisterIDEMenuCommand(AParent,'Open File',lisOpenFile); + PkgEditMenuAddDiskFile:=RegisterIDEMenuCommand(AParent,'Add disk file',lisPckEditAddFilesFromFileSystem); + PkgEditMenuAddDiskFiles:=RegisterIDEMenuCommand(AParent,'Add disk files',lisAddFilesInDirectory); + PkgEditMenuAddNewFile:=RegisterIDEMenuCommand(AParent,'New file',lisA2PNewFile); + PkgEditMenuAddNewComp:=RegisterIDEMenuCommand(AParent,'New component',lisA2PNewComponent); + PkgEditMenuAddNewReqr:=RegisterIDEMenuCommand(AParent,'New requirement',lisProjAddNewRequirement); + // + PkgEditMenuOpenFile:=RegisterIDEMenuCommand(AParent,'Open File',lisOpen); PkgEditMenuRemoveFile:=RegisterIDEMenuCommand(AParent,'Remove File',lisPckEditRemoveFile); PkgEditMenuReAddFile:=RegisterIDEMenuCommand(AParent,'ReAdd File',lisPckEditReAddFile); PkgEditMenuCopyMoveToDirectory:=RegisterIDEMenuCommand(AParent, 'Copy/Move File to Directory', lisCopyMoveFileToDirectory); @@ -555,12 +584,11 @@ // register the section for operations on dependencies PkgEditMenuSectionDependency:=RegisterIDEMenuSection(PackageEditorMenuFilesRoot,'Dependency'); AParent:=PkgEditMenuSectionDependency; - PkgEditMenuOpenPackage:=RegisterIDEMenuCommand(AParent,'Open Package',lisMenuOpenPackage); PkgEditMenuRemoveDependency:=RegisterIDEMenuCommand(AParent,'Remove Dependency',lisPckEditRemoveDependency); PkgEditMenuReAddDependency:=RegisterIDEMenuCommand(AParent,'ReAdd Dependency',lisPckEditReAddDependency); - PkgEditMenuDependencyStoreFileNameAsDefault:=RegisterIDEMenuCommand(AParent,'Dependency Store Filename As Default',lisPckEditStoreFileNameAsDefaultForThisDependency); - PkgEditMenuDependencyStoreFileNameAsPreferred:=RegisterIDEMenuCommand(AParent,'Dependency Store Filename As Preferred',lisPckEditStoreFileNameAsPreferredForThisDependency); - PkgEditMenuDependencyClearStoredFileName:=RegisterIDEMenuCommand(AParent,'Dependency Clear Stored Filename',lisPckEditClearDefaultPreferredFilenameOfDependency); + PkgEditMenuDepStoreFileNameDefault:=RegisterIDEMenuCommand(AParent,'Dependency Store Filename As Default',lisPckEditStoreFileNameAsDefaultForThisDependency); + PkgEditMenuDepStoreFileNamePreferred:=RegisterIDEMenuCommand(AParent,'Dependency Store Filename As Preferred',lisPckEditStoreFileNameAsPreferredForThisDependency); + PkgEditMenuDepClearStoredFileName:=RegisterIDEMenuCommand(AParent,'Dependency Clear Stored Filename',lisPckEditClearDefaultPreferredFilenameOfDependency); PkgEditMenuCleanDependencies:=RegisterIDEMenuCommand(AParent, 'Clean up dependencies', lisPckEditCleanUpDependencies); // register the section for operations on all files @@ -665,12 +693,60 @@ end; end; +type + PackageSelType = (pstFile, pstDir, pstDep, pstFilesNode, pstReqPackNode, + pstRemFile, pstRemDep); + PackageSelTypes = set of PackageSelType; + procedure TPackageEditorForm.ItemsPopupMenuPopup(Sender: TObject); +var + UserSelection: PackageSelTypes; + + procedure CollectSelected; + var + TVNode: TTreeNode; + NodeData: TPENodeData; + Item: TObject; + CurDependency: TPkgDependency; + CurFile: TPkgFile; + i: Integer; + begin + UserSelection := []; + FSingleSelectedFile := Nil; + FSingleSelectedDep := Nil; + for i := 0 to ItemsTreeView.SelectionCount-1 do begin + TVNode := ItemsTreeView.Selections[i]; + if GetNodeDataItem(TVNode,NodeData,Item) then begin + if Item is TPkgFile then begin + CurFile := TPkgFile(Item); + if ItemsTreeView.SelectionCount=1 then + FSingleSelectedFile := CurFile; + if NodeData.Removed then + Include(UserSelection, pstRemFile) + else + Include(UserSelection, pstFile); + end else if Item is TPkgDependency then begin + CurDependency := TPkgDependency(Item); + if (ItemsTreeView.SelectionCount=1) and Assigned(CurDependency.RequiredPackage) then + FSingleSelectedDep:=CurDependency; + if NodeData.Removed then + Include(UserSelection, pstRemDep) + else + Include(UserSelection, pstDep); + end; + end + else if IsDirectoryNode(TVNode) then + Include(UserSelection, pstDir) + else if TVNode=FFilesNode then + Include(UserSelection, pstFilesNode) + else if TVNode=FRequiredPackagesNode then + Include(UserSelection, pstReqPackNode); + end; + end; procedure SetItem(Item: TIDEMenuCommand; AnOnClick: TNotifyEvent; aShow: boolean = true; AEnable: boolean = true); begin - //debugln(['SetItem ',Item.Caption,' Visible=',aShow,' Enable=',AEnable]); Item.OnClick:=AnOnClick; Item.Visible:=aShow; Item.Enabled:=AEnable; @@ -682,144 +758,113 @@ VirtualFileExists: Boolean; NewMenuItem: TIDEMenuCommand; begin - PkgEditMenuSectionFileType.Clear; - if FSingleSelectedFile=nil then exit; - VirtualFileExists:=(FSingleSelectedFile.FileType=pftVirtualUnit) - and FileExistsCached(FSingleSelectedFile.GetFullFilename); - for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin - NewMenuItem:=RegisterIDEMenuCommand(PkgEditMenuSectionFileType, - 'SetFileType'+IntToStr(ord(CurPFT)), - GetPkgFileTypeLocalizedName(CurPFT), - @ChangeFileTypeMenuItemClick); - if CurPFT=FSingleSelectedFile.FileType then begin - // menuitem to keep the current type - NewMenuItem.Enabled:=true; - NewMenuItem.Checked:=true; - end else if VirtualFileExists then - // a virtual unit that exists can be changed into anything - NewMenuItem.Enabled:=true - else if (not (CurPFT in PkgFileUnitTypes)) then - // all other files can be changed into all non unit types - NewMenuItem.Enabled:=true - else if FilenameIsPascalUnit(FSingleSelectedFile.Filename) then - // a pascal file can be changed into anything - NewMenuItem.Enabled:=true - else - // default is to not allow - NewMenuItem.Enabled:=false; - end; + if Assigned(FSingleSelectedFile) then + begin + PkgEditMenuSectionFileType.Clear; + VirtualFileExists:=(FSingleSelectedFile.FileType=pftVirtualUnit) + and FileExistsCached(FSingleSelectedFile.GetFullFilename); + for CurPFT:=Low(TPkgFileType) to High(TPkgFileType) do begin + NewMenuItem:=RegisterIDEMenuCommand(PkgEditMenuSectionFileType, + 'SetFileType'+IntToStr(ord(CurPFT)), + GetPkgFileTypeLocalizedName(CurPFT), + @ChangeFileTypeMenuItemClick); + if CurPFT=FSingleSelectedFile.FileType then + begin + // menuitem to keep the current type + NewMenuItem.Enabled:=true; + NewMenuItem.Checked:=true; + end else if VirtualFileExists then + // a virtual unit that exists can be changed into anything + NewMenuItem.Enabled:=true + else if (not (CurPFT in PkgFileUnitTypes)) then + // all other files can be changed into all non unit types + NewMenuItem.Enabled:=true + else if FilenameIsPascalUnit(FSingleSelectedFile.Filename) then + // a pascal file can be changed into anything + NewMenuItem.Enabled:=true + else + // default is to not allow + NewMenuItem.Enabled:=false; + end; + end + else + PkgEditMenuSectionFileType.Visible:=False; end; var - i: Integer; - TVNode: TTreeNode; - NodeData: TPENodeData; - Item: TObject; - SingleSelectedRemoved: Boolean; - SelDepCount: Integer; - SelFileCount: Integer; - SelDirCount: Integer; - SelRemovedFileCount: Integer; Writable: Boolean; - CurDependency: TPkgDependency; - CurFile: TPkgFile; begin //debugln(['TPackageEditorForm.FilesPopupMenuPopup START ',ItemsPopupMenu.Items.Count]); PackageEditorMenuFilesRoot.MenuItem:=ItemsPopupMenu.Items; //debugln(['TPackageEditorForm.FilesPopupMenuPopup START after connect ',ItemsPopupMenu.Items.Count]); PackageEditorMenuRoot.BeginUpdate; try - SelFileCount:=0; - SelDepCount:=0; - SelDirCount:=0; - SelRemovedFileCount:=0; - SingleSelectedRemoved:=false; - for i:=0 to ItemsTreeView.SelectionCount-1 do begin - TVNode:=ItemsTreeView.Selections[i]; - if GetNodeDataItem(TVNode,NodeData,Item) then begin - if Item is TPkgFile then begin - CurFile:=TPkgFile(Item); - inc(SelFileCount); - FSingleSelectedFile:=CurFile; - SingleSelectedRemoved:=NodeData.Removed; - if NodeData.Removed then - inc(SelRemovedFileCount); - end else if Item is TPkgDependency then begin - CurDependency:=TPkgDependency(Item); - inc(SelDepCount); - FSingleSelectedDep:=CurDependency; - SingleSelectedRemoved:=NodeData.Removed; - end; - end else if IsDirectoryNode(TVNode) or (TVNode=FFilesNode) then begin - inc(SelDirCount); - end; - end; + CollectSelected; + Writable := not LazPackage.ReadOnly; - if (SelFileCount+SelDepCount+SelDirCount>1) then begin - // it is a multi selection - FSingleSelectedFile:=nil; - FSingleSelectedDep:=nil; - end; - - Writable:=(not LazPackage.ReadOnly); - - PkgEditMenuSectionFileType.Clear; - - // items for selected files, under section PkgEditMenuSectionFile - PkgEditMenuSectionFile.Visible:=SelFileCount>0; - if PkgEditMenuSectionFile.Visible then begin - SetItem(PkgEditMenuOpenFile,@OpenFileMenuItemClick); - SetItem(PkgEditMenuReAddFile,@ReAddMenuItemClick,SingleSelectedRemoved); - SetItem(PkgEditMenuCopyMoveToDirectory,@CopyMoveToDirMenuItemClick,(SelRemovedFileCount=0) and LazPackage.HasDirectory); - SetItem(PkgEditMenuRemoveFile,@RemoveBitBtnClick,SelRemovedFileCount>0,RemoveBitBtn.Enabled); + // items for Files node and for selected files, under section PkgEditMenuSectionFile + PkgEditMenuSectionFile.Visible := not (pstDir in UserSelection); + if PkgEditMenuSectionFile.Visible then + begin + // Files root node + SetItem(PkgEditMenuAddDiskFile, @mnuAddDiskFileClick, UserSelection=[pstFilesNode], + Writable); + SetItem(PkgEditMenuAddDiskFiles, @mnuAddDiskFilesClick, UserSelection=[pstFilesNode], + Writable); + SetItem(PkgEditMenuAddNewFile, @mnuAddNewFileClick, UserSelection=[pstFilesNode], + Writable); + SetItem(PkgEditMenuAddNewComp, @mnuAddNewCompClick, UserSelection=[pstFilesNode], + Writable); + SetItem(PkgEditMenuAddNewReqr, @mnuAddNewReqrClick, UserSelection=[pstReqPackNode], + Writable); + // selected files + SetItem(PkgEditMenuOpenFile, @OpenFileMenuItemClick, + UserSelection*[pstFilesNode,pstReqPackNode]=[]); + SetItem(PkgEditMenuReAddFile, @ReAddMenuItemClick, UserSelection=[pstRemFile]); + SetItem(PkgEditMenuCopyMoveToDirectory, @CopyMoveToDirMenuItemClick, + (UserSelection=[pstFile]) and LazPackage.HasDirectory); + SetItem(PkgEditMenuRemoveFile, @RemoveBitBtnClick, UserSelection=[pstFile], + RemoveBitBtn.Enabled); AddFileTypeMenuItem; - SetItem(PkgEditMenuEditVirtualUnit,@EditVirtualUnitMenuItemClick, - (FSingleSelectedFile<>nil) and (FSingleSelectedFile.FileType=pftVirtualUnit) - and not SingleSelectedRemoved,Writable); + SetItem(PkgEditMenuEditVirtualUnit, @EditVirtualUnitMenuItemClick, + Assigned(FSingleSelectedFile) and (FSingleSelectedFile.FileType=pftVirtualUnit), + Writable); end; // items for directories, under section PkgEditMenuSectionDirectory - PkgEditMenuSectionDirectory.Visible:=(SelDirCount>0) and ShowDirectoryHierarchy; - if PkgEditMenuSectionDirectory.Visible then begin - SetItem(PkgEditMenuExpandDirectory,@ExpandDirectoryMenuItemClick); - SetItem(PkgEditMenuCollapseDirectory,@CollapseDirectoryMenuItemClick); - SetItem(PkgEditMenuUseAllUnitsInDirectory,@UseAllUnitsInDirectoryMenuItemClick); - SetItem(PkgEditMenuUseNoUnitsInDirectory,@UseNoUnitsInDirectoryMenuItemClick); + PkgEditMenuSectionDirectory.Visible := UserSelection<=[pstDir,pstFilesNode]; + if PkgEditMenuSectionDirectory.Visible then + begin + SetItem(PkgEditMenuExpandDirectory, @ExpandDirectoryMenuItemClick); + SetItem(PkgEditMenuCollapseDirectory, @CollapseDirectoryMenuItemClick); + SetItem(PkgEditMenuUseAllUnitsInDirectory, @UseAllUnitsInDirectoryMenuItemClick); + SetItem(PkgEditMenuUseNoUnitsInDirectory, @UseNoUnitsInDirectoryMenuItemClick); end; // items for dependencies, under section PkgEditMenuSectionDependency - PkgEditMenuSectionDependency.Visible:=(SelDepCount>0) - or (ItemsTreeView.Selected=FRequiredPackagesNode); - SetItem(PkgEditMenuOpenPackage,@OpenFileMenuItemClick, - (FSingleSelectedDep<>nil) and (FSingleSelectedDep.RequiredPackage<>nil)); - SetItem(PkgEditMenuRemoveDependency,@RemoveBitBtnClick, - (FSingleSelectedDep<>nil) and (not SingleSelectedRemoved), - Writable); - SetItem(PkgEditMenuReAddDependency,@ReAddMenuItemClick, - (FSingleSelectedDep<>nil) and SingleSelectedRemoved, - Writable); - SetItem(PkgEditMenuDependencyStoreFileNameAsDefault, - @SetDependencyDefaultFilenameMenuItemClick, - (FSingleSelectedDep<>nil) and (not SingleSelectedRemoved), - Writable and (FSingleSelectedDep<>nil) - and (FSingleSelectedDep.RequiredPackage<>nil)); - SetItem(PkgEditMenuDependencyStoreFileNameAsPreferred, - @SetDependencyPreferredFilenameMenuItemClick, - (FSingleSelectedDep<>nil) and (not SingleSelectedRemoved), - Writable and (FSingleSelectedDep<>nil) - and (FSingleSelectedDep.RequiredPackage<>nil)); - SetItem(PkgEditMenuDependencyClearStoredFileName, - @ClearDependencyFilenameMenuItemClick, - (FSingleSelectedDep<>nil) and (not SingleSelectedRemoved), - Writable and (FSingleSelectedDep<>nil) - and (FSingleSelectedDep.RequiredPackage<>nil)); - SetItem(PkgEditMenuCleanDependencies, - @CleanDependenciesMenuItemClick,LazPackage.FirstRequiredDependency<>nil, - Writable); + PkgEditMenuSectionDependency.Visible := (UserSelection*[pstDep,pstRemDep] <> []) + or (ItemsTreeView.Selected=FRequiredPackagesNode); + if PkgEditMenuSectionDependency.Visible then + begin + SetItem(PkgEditMenuRemoveDependency, @RemoveBitBtnClick, + UserSelection=[pstDep], Writable); + SetItem(PkgEditMenuReAddDependency,@ReAddMenuItemClick, + UserSelection=[pstRemDep], Writable); + SetItem(PkgEditMenuDepStoreFileNameDefault, @SetDepDefaultFilenameMenuItemClick, + Assigned(FSingleSelectedDep), Writable); + SetItem(PkgEditMenuDepStoreFileNamePreferred, @SetDepPreferredFilenameMenuItemClick, + Assigned(FSingleSelectedDep), Writable); + SetItem(PkgEditMenuDepClearStoredFileName, @ClearDependencyFilenameMenuItemClick, + Assigned(FSingleSelectedDep), Writable); + SetItem(PkgEditMenuCleanDependencies, @CleanDependenciesMenuItemClick, + Assigned(LazPackage.FirstRequiredDependency), Writable); + end; finally PackageEditorMenuRoot.EndUpdate; end; + FSingleSelectedFile := Nil; + FSingleSelectedDep := Nil; //debugln(['TPackageEditorForm.FilesPopupMenuPopup END ',ItemsPopupMenu.Items.Count]); PackageEditorMenuRoot.WriteDebugReport(' ',true); end; @@ -847,14 +892,13 @@ end; end; -procedure TPackageEditorForm.ItemsTreeViewDragDrop(Sender, Source: TObject; X, - Y: Integer); +procedure TPackageEditorForm.ItemsTreeViewDragDrop(Sender, Source: TObject; X, Y: Integer); begin PackageEditors.OnDragDropTreeView(Sender, Source, X, Y); end; -procedure TPackageEditorForm.ItemsTreeViewDragOver(Sender, Source: TObject; X, - Y: Integer; State: TDragState; var Accept: Boolean); +procedure TPackageEditorForm.ItemsTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); var TargetTVNode: TTreeNode; TargetTVType: TTreeViewInsertMarkType; @@ -895,8 +939,6 @@ try Writable:=(not LazPackage.ReadOnly); - PkgEditMenuSectionFileType.Clear; - // under section PkgEditMenuSectionFiles SetItem(PkgEditMenuFindInFiles,@FindInFilesMenuItemClick); SetItem(PkgEditMenuSortFiles,@SortFilesMenuItemClick,(LazPackage.FileCount>1),Writable); @@ -990,7 +1032,7 @@ else if Key = VK_DELETE then RemoveBitBtnClick(Nil) else if Key = VK_INSERT then - AddBitBtnClick(Nil) + mnuAddDiskFileClick(Nil) else Handled := False; @@ -998,6 +1040,41 @@ Key := VK_UNKNOWN; end; +procedure TPackageEditorForm.ShowAddDialogEx(AType: TAddToPkgType); +begin + if LazPackage=nil then exit; + BeginUpdate; + try + ShowAddDialog(AType); + finally + EndUpdate; + end; +end; + +procedure TPackageEditorForm.mnuAddDiskFilesClick(Sender: TObject); +begin + ShowAddDialogEx(d2ptFiles); +end; + +procedure TPackageEditorForm.mnuAddNewCompClick(Sender: TObject); +begin + ShowAddDialogEx(d2ptNewComponent); +end; + +procedure TPackageEditorForm.mnuAddNewReqrClick(Sender: TObject); +begin + ShowAddDialogEx(d2ptRequiredPkg); +end; + +procedure TPackageEditorForm.mnuAddNewFileClick(Sender: TObject); +var + NewItem: TNewIDEItemTemplate; +begin + // Reuse the "New..." dialog for "Add new file". + if ShowNewIDEItemDialog(NewItem, true)=mrOk then + DoAddNewFile(NewItem); +end; + procedure TPackageEditorForm.ItemsTreeViewSelectionChanged(Sender: TObject); begin if fUpdateLock>0 then exit; @@ -1025,22 +1102,21 @@ UpdateApplyDependencyButton; end; -procedure TPackageEditorForm.SetDependencyDefaultFilenameMenuItemClick(Sender: TObject); +procedure TPackageEditorForm.SetDepDefaultFilenameMenuItemClick(Sender: TObject); begin SetDependencyDefaultFilename(false); end; -procedure TPackageEditorForm.SetDependencyPreferredFilenameMenuItemClick(Sender: TObject); +procedure TPackageEditorForm.SetDepPreferredFilenameMenuItemClick(Sender: TObject); begin SetDependencyDefaultFilename(true); end; procedure TPackageEditorForm.ClearDependencyFilenameMenuItemClick(Sender: TObject); begin - if LazPackage=nil then exit; - if FSingleSelectedDep=nil then exit; - if LazPackage.ReadOnly then exit; - if FSingleSelectedDep.RequiredPackage=nil then exit; + Assert(Assigned(FSingleSelectedDep) and Assigned(FSingleSelectedDep.RequiredPackage), + 'ClearDependencyFilenameMenuItemClick: FSingleSelectedDep=nil'); + if (LazPackage=nil) or LazPackage.ReadOnly then exit; if FSingleSelectedDep.DefaultFilename='' then exit; FSingleSelectedDep.DefaultFilename:=''; FSingleSelectedDep.PreferDefaultFilename:=false; @@ -1050,7 +1126,7 @@ procedure TPackageEditorForm.CollapseDirectoryMenuItemClick(Sender: TObject); begin - DoCollapseDirectory; + DoExpandCollapseDirectory(False); end; procedure TPackageEditorForm.MoveUpBtnClick(Sender: TObject); @@ -1132,20 +1208,27 @@ MsgResult: Integer; begin //debugln(['TPackageEditorForm.PackageEditorFormCloseQuery ',Caption]); - if (LazPackage<>nil) and (not (lpfDestroying in LazPackage.Flags)) - and (not LazPackage.ReadOnly) and LazPackage.Modified then begin - - MsgResult:=MessageDlg(lisPkgMangSavePackage, - Format(lisPckEditPackageHasChangedSavePackage, [LazPackage.IDAsString, LineEnding]), - mtConfirmation,[mbYes,mbNo,mbAbort],0); - case MsgResult of - mrYes: - MsgResult:=PackageEditors.SavePackage(LazPackage,false); - mrNo: - LazPackage.UserIgnoreChangeStamp:=LazPackage.ChangeStamp; + if (LazPackage<>nil) and (not (lpfDestroying in LazPackage.Flags)) then + begin + if (not LazPackage.ReadOnly) and LazPackage.Modified then + begin + MsgResult:=MessageDlg(lisPkgMangSavePackage, + Format(lisPckEditPackageHasChangedSavePackage, [LazPackage.IDAsString, LineEnding]), + mtConfirmation,[mbYes,mbNo,mbAbort],0); + case MsgResult of + mrYes: + MsgResult:=PackageEditors.SavePackage(LazPackage,false); + mrNo: + LazPackage.UserIgnoreChangeStamp:=LazPackage.ChangeStamp; + end; + if MsgResult=mrAbort then CanClose:=false; + LazPackage.Modified:=false; // clear modified flag, so that it will be closed + end; + if CanClose and not MainIDE.IDEIsClosing then + begin + EnvironmentOptions.LastOpenPackages.Remove(LazPackage.Filename); + MainIDE.SaveEnvironment; end; - if MsgResult=mrAbort then CanClose:=false; - LazPackage.Modified:=false; // clear modified flag, so that it will be closed end; //debugln(['TPackageEditorForm.PackageEditorFormCloseQuery CanClose=',CanClose,' ',Caption]); if CanClose then @@ -1323,7 +1406,7 @@ procedure TPackageEditorForm.ExpandDirectoryMenuItemClick(Sender: TObject); begin - DoExpandDirectory; + DoExpandCollapseDirectory(True); end; procedure TPackageEditorForm.FindInFilesMenuItemClick(Sender: TObject); @@ -1372,11 +1455,11 @@ NewUnitPaths:=''; NewIncPaths:=''; for i:=0 to high(Filenames) do - if not (AddOneFile(FileNames[i], NewUnitPaths, NewIncPaths) in [mrOk, mrIgnore]) then break; + LazPackage.AddFileByName(FileNames[i], NewUnitPaths, NewIncPaths); //UpdateAll(false); // extend unit and include search path - if not ExtendUnitSearchPath(NewUnitPaths) then exit; - if not ExtendIncSearchPath(NewIncPaths) then exit; + if not LazPackage.ExtendUnitSearchPath(NewUnitPaths) then exit; + if not LazPackage.ExtendIncSearchPath(NewIncPaths) then exit; finally EndUpdate; end; @@ -1473,48 +1556,7 @@ DoUseUnitsInDirectory(false); end; -function TPackageEditorForm.AddOneFile(aFilename: string; - var NewUnitPaths, NewIncPaths: String): TModalResult; -var - NewFileType: TPkgFileType; - NewUnitName: String; - HasRegister: Boolean; - NewFlags: TPkgFileFlags; - Code: TCodeBuffer; - CurDir: String; -begin - Result := mrOK; - aFilename:=CleanAndExpandFilename(aFileName); - if not FileExistsUTF8(aFilename) then Exit(mrIgnore); - if DirPathExists(aFilename) then Exit(mrIgnore); - if LazPackage.FindPkgFile(aFilename,true,false)<>nil then Exit(mrIgnore); - NewFileType:=FileNameToPkgFileType(aFilename); - NewFlags:=[]; - HasRegister:=false; - NewUnitName:=''; - if (NewFileType=pftUnit) then begin - Code:=CodeToolBoss.LoadFile(aFilename,true,false); - NewUnitName:=CodeToolBoss.GetSourceName(Code,false); - if NewUnitName='' then - NewUnitName:=ExtractFileNameOnly(aFilename); - if LazPackage.FindUsedUnit(NewUnitName)=nil then - Include(NewFlags,pffAddToPkgUsesSection); - CodeToolBoss.HasInterfaceRegisterProc(Code,HasRegister); - if HasRegister then - Include(NewFlags,pffHasRegisterProc); - end; - {$IFDEF VerbosePkgEditDrag} - debugln(['TPackageEditorForm.FormDropFiles Adding files: ',aFilename,' Unit=',NewUnitName,' Type=',PkgFileTypeIdents[NewFileType],' use=',pffAddToPkgUsesSection in NewFlags,' hasregister=',pffHasRegisterProc in NewFlags]); - {$ENDIF} - LazPackage.AddFile(aFilename,NewUnitName,NewFileType,NewFlags,cpNormal); - CurDir:=ChompPathDelim(ExtractFilePath(aFilename)); - if NewFileType=pftUnit then - NewUnitPaths:=MergeSearchPaths(NewUnitPaths,CurDir) - else - NewIncPaths:=MergeSearchPaths(NewIncPaths,CurDir); -end; - -procedure TPackageEditorForm.AddBitBtnClick(Sender: TObject); +procedure TPackageEditorForm.mnuAddDiskFileClick(Sender: TObject); var OpenDialog: TOpenDialog; i: Integer; @@ -1527,39 +1569,29 @@ OpenDialog.Title:=lisOpenFile; OpenDialog.Options:=OpenDialog.Options +[ofFileMustExist,ofPathMustExist,ofAllowMultiSelect]; - OpenDialog.Filter:=dlgAllFiles+' ('+GetAllFilesMask+')|'+GetAllFilesMask - +'|'+lisLazarusUnit+' (*.pas;*.pp)|*.pas;*.pp' - +'|'+lisLazarusProject+' (*.lpi)|*.lpi' - +'|'+lisLazarusForm+' (*.lfm;*.dfm)|*.lfm;*.dfm' - +'|'+lisLazarusPackage+' (*.lpk)|*.lpk' - +'|'+lisLazarusProjectSource+' (*.lpr)|*.lpr'; + OpenDialog.Filter:= + dlgFilterAll+' ('+GetAllFilesMask+')|'+GetAllFilesMask + +'|'+dlgFilterLazarusUnit+' (*.pas;*.pp)|*.pas;*.pp' + +'|'+dlgFilterLazarusProject+' (*.lpi)|*.lpi' + +'|'+dlgFilterLazarusForm+' (*.lfm;*.dfm)|*.lfm;*.dfm' + +'|'+dlgFilterLazarusPackage+' (*.lpk)|*.lpk' + +'|'+dlgFilterLazarusProjectSource+' (*.lpr)|*.lpr'; if OpenDialog.Execute then begin + InputHistories.StoreFileDialogSettings(OpenDialog); NewUnitPaths:=''; NewIncPaths:=''; for i:=0 to OpenDialog.Files.Count-1 do - if not (AddOneFile(OpenDialog.Files[i], NewUnitPaths, NewIncPaths) in [mrOk, mrIgnore]) then break; - InputHistories.StoreFileDialogSettings(OpenDialog); + LazPackage.AddFileByName(OpenDialog.Files[i], NewUnitPaths, NewIncPaths); //UpdateAll(false); // extend unit and include search path - if not ExtendUnitSearchPath(NewUnitPaths) then exit; - if not ExtendIncSearchPath(NewIncPaths) then exit; + if not LazPackage.ExtendUnitSearchPath(NewUnitPaths) then exit; + if not LazPackage.ExtendIncSearchPath(NewIncPaths) then exit; end; finally OpenDialog.Free; end; end; -procedure TPackageEditorForm.AddMoreBitBtnClick(Sender: TObject); -begin - if LazPackage=nil then exit; - BeginUpdate; - try - ShowAddDialog(fLastDlgPage); - finally - EndUpdate; - end; -end; - procedure TPackageEditorForm.AddToUsesPkgSectionCheckBoxChange(Sender: TObject); var CurFile: TPkgFile; @@ -1805,13 +1837,23 @@ procedure TPackageEditorForm.SetLazPackage(const AValue: TLazPackage); begin - if FLazPackage=AValue then exit; - if FLazPackage<>nil then FLazPackage.Editor:=nil; + if (FLazPackage=AValue) and + not(Assigned(AValue) and (Name<>PackageEditorWindowPrefix+AValue.Name))//force editor name change when package name changed! + then + exit; + if FLazPackage<>nil then + begin + FLazPackage.Editor:=nil; + if EnvironmentOptions.LastOpenPackages.Remove(FLazPackage.Filename) then + MainIDE.SaveEnvironment; + end; FLazPackage:=AValue; if FLazPackage=nil then begin Name:=Name+'___off___'; exit; end; + EnvironmentOptions.LastOpenPackages.Add(FLazPackage.Filename); + MainIDE.SaveEnvironment; Name:=PackageEditorWindowPrefix+LazPackage.Name; FLazPackage.Editor:=Self; // update components @@ -1864,18 +1906,25 @@ SaveBitBtn := CreateToolButton('SaveBitBtn', lisMenuSave, lisPckEditSavePackage, 'laz_save', @SaveBitBtnClick); CompileBitBtn := CreateToolButton('CompileBitBtn', lisCompile, lisPckEditCompilePackage, 'pkg_compile', @CompileBitBtnClick); - UseBitBtn := CreateToolButton('UseBitBtn', lisPckEditInstall, lisPckEditInstallPackageInTheIDE, 'pkg_install', nil); + UseBitBtn := CreateToolButton('UseBitBtn', lisUseSub, lisClickToSeeTheChoices, 'pkg_install', nil); CreateDivider; - AddBitBtn := CreateToolButton('AddBitBtn', lisAdd, lisPckEditAddFiles, 'laz_add', @AddBitBtnClick); - AddMoreBitBtn := CreateToolButton('AddMoreBitBtn', lisDlgAdd, lisPckEditAddOtherItems, 'laz_addmore', @AddMoreBitBtnClick); + AddBitBtn := CreateToolButton('AddBitBtn', lisAddSub, lisClickToSeeTheChoices, 'laz_add', nil); RemoveBitBtn := CreateToolButton('RemoveBitBtn', lisRemove, lisPckEditRemoveSelectedItem, 'laz_delete', @RemoveBitBtnClick); CreateDivider; - OptionsBitBtn := CreateToolButton('OptionsBitBtn', dlgFROpts, lisPckEditEditGeneralOptions, 'pkg_properties', @OptionsBitBtnClick); - HelpBitBtn := CreateToolButton('HelpBitBtn', GetButtonCaption(idButtonHelp), lisPkgEdThereAreMoreFunctionsInThePopupmenu, 'menu_help', @HelpBitBtnClick); - MoreBitBtn := CreateToolButton('MoreBitBtn', lisMoreSub, lisPkgEdThereAreMoreFunctionsInThePopupmenu, '', nil); + OptionsBitBtn := CreateToolButton('OptionsBitBtn', lisOptions, lisPckEditEditGeneralOptions, 'pkg_properties', @OptionsBitBtnClick); + HelpBitBtn := CreateToolButton('HelpBitBtn', GetButtonCaption(idButtonHelp), lisMenuOnlineHelp, 'menu_help', @HelpBitBtnClick); + MoreBitBtn := CreateToolButton('MoreBitBtn', lisMoreSub, lisPkgEdMoreFunctionsForThePackage, '', nil); + UseBitBtn.DropdownMenu := UsePopupMenu; + AddBitBtn.DropdownMenu := AddPopupMenu; MoreBitBtn.DropdownMenu := MorePopupMenu; + mnuAddDiskFile.Caption := lisPckEditAddFilesFromFileSystem; + mnuAddDiskFiles.Caption := lisAddFilesInDirectory; + mnuAddNewFile.Caption := lisA2PNewFile; + mnuAddNewComp.Caption := lisA2PNewComponent; + mnuAddNewReqr.Caption := lisProjAddNewRequirement; + // Buttons on FilterPanel OpenButton.LoadGlyphFromResourceName(HInstance, 'laz_open'); OpenButton.Hint:=lisOpenFile2; @@ -1997,9 +2046,53 @@ pefNeedUpdateButtons, pefNeedUpdateApplyDependencyButton, pefNeedUpdateStatusBar]; - IdleConnected:=true; + if Immediately then + UpdatePending + else + IdleConnected:=true; end; +procedure TPackageEditorForm.DoAddNewFile(NewItem: TNewIDEItemTemplate); +var + NewFilename: String; + DummyResult: TModalResult; + NewFileType: TPkgFileType; + NewPkgFileFlags: TPkgFileFlags; + Desc: TProjectFileDescriptor; + NewUnitName: String; + HasRegisterProc: Boolean; +begin + if NewItem is TNewItemProjectFile then begin + // create new file + Desc:=TNewItemProjectFile(NewItem).Descriptor; + NewFilename:=''; + DummyResult:=LazarusIDE.DoNewFile(Desc,NewFilename,'', + [nfOpenInEditor,nfCreateDefaultSrc,nfIsNotPartOfProject],LazPackage); + if DummyResult=mrOk then begin + // success -> now add it to package + NewUnitName:=''; + NewFileType:=FileNameToPkgFileType(NewFilename); + NewPkgFileFlags:=[]; + if (NewFileType in PkgFileUnitTypes) then begin + Include(NewPkgFileFlags,pffAddToPkgUsesSection); + NewUnitName:=ExtractFilenameOnly(NewFilename); + if Assigned(PackageEditors.OnGetUnitRegisterInfo) then begin + HasRegisterProc:=false; + PackageEditors.OnGetUnitRegisterInfo(Self,NewFilename, + NewUnitName,HasRegisterProc); + if HasRegisterProc then + Include(NewPkgFileFlags,pffHasRegisterProc); + end; + end; + LazPackage.AddFile(NewFilename,NewUnitName,NewFileType, + NewPkgFileFlags, cpNormal); + FreeAndNil(FNextSelectedPart); + FNextSelectedPart:=TPENodeData.Create(penFile,NewFilename,false); + end; + end; +end; + + function TPackageEditorForm.ShowAddDialog(var DlgPage: TAddToPkgType): TModalResult; var IgnoreUnitPaths, IgnoreIncPaths: TFilenameToStringTree; @@ -2097,46 +2190,6 @@ FNextSelectedPart:=TPENodeData.Create(penFile,AddParams.UnitFilename,false); end; - procedure AddNewFile(AddParams: TAddToPkgResult); - var - NewFilename: String; - DummyResult: TModalResult; - NewFileType: TPkgFileType; - NewPkgFileFlags: TPkgFileFlags; - Desc: TProjectFileDescriptor; - NewUnitName: String; - HasRegisterProc: Boolean; - begin - if AddParams.NewItem is TNewItemProjectFile then begin - // create new file - Desc:=TNewItemProjectFile(AddParams.NewItem).Descriptor; - NewFilename:=''; - DummyResult:=LazarusIDE.DoNewFile(Desc,NewFilename,'', - [nfOpenInEditor,nfCreateDefaultSrc,nfIsNotPartOfProject],LazPackage); - if DummyResult=mrOk then begin - // success -> now add it to package - NewUnitName:=''; - NewFileType:=FileNameToPkgFileType(NewFilename); - NewPkgFileFlags:=[]; - if (NewFileType in PkgFileUnitTypes) then begin - Include(NewPkgFileFlags,pffAddToPkgUsesSection); - NewUnitName:=ExtractFilenameOnly(NewFilename); - if Assigned(PackageEditors.OnGetUnitRegisterInfo) then begin - HasRegisterProc:=false; - PackageEditors.OnGetUnitRegisterInfo(Self,NewFilename, - NewUnitName,HasRegisterProc); - if HasRegisterProc then - Include(NewPkgFileFlags,pffHasRegisterProc); - end; - end; - LazPackage.AddFile(NewFilename,NewUnitName,NewFileType, - NewPkgFileFlags, cpNormal); - FreeAndNil(FNextSelectedPart); - FNextSelectedPart:=TPENodeData.Create(penFile,NewFilename,false); - end; - end; - end; - var AddParams: TAddToPkgResult; OldParams: TAddToPkgResult; @@ -2157,25 +2210,11 @@ try while AddParams<>nil do begin case AddParams.AddType of - - d2ptUnit: - AddUnit(AddParams); - - d2ptVirtualUnit: - AddVirtualUnit(AddParams); - - d2ptNewComponent: - AddNewComponent(AddParams); - - d2ptRequiredPkg: - AddRequiredPkg(AddParams); - - d2ptFile: - AddFile(AddParams); - - d2ptNewFile: - AddNewFile(AddParams); - + d2ptUnit: AddUnit(AddParams); + d2ptVirtualUnit: AddVirtualUnit(AddParams); + d2ptNewComponent: AddNewComponent(AddParams); + d2ptRequiredPkg: AddRequiredPkg(AddParams); + d2ptFile: AddFile(AddParams); end; OldParams:=AddParams; AddParams:=AddParams.Next; @@ -2267,11 +2306,6 @@ AddBitBtn.Enabled:=Writable; RemoveBitBtn.Enabled:=Writable and (ActiveFileCnt+ActiveDepCount>0); OpenButton.Enabled:=(FileCount+DepCount>0); - UseBitBtn.Caption:=lisUseSub; - UseBitBtn.Hint:=lisClickToSeeThePossibleUses; - UseBitBtn.OnClick:=nil; - UseBitBtn.DropdownMenu:=UsePopupMenu; - OptionsBitBtn.Enabled:=true; end; function TPackageEditorForm.OnTreeViewGetImageIndex(Str: String; Data: TObject; @@ -2907,6 +2941,7 @@ ShortDirectory:=NewDirectory; LazPackage.ShortenFilename(ShortDirectory,true); if ShortDirectory='' then exit; + ShortIncDirectory:=''; LazPackage.LongenFilename(NewDirectory); NewDirectory:=ChompPathDelim(NewDirectory); @@ -2988,46 +3023,13 @@ end; function TPackageEditorForm.ExtendUnitSearchPath(NewUnitPaths: string): boolean; -var - CurUnitPaths: String; - r: TModalResult; begin - CurUnitPaths:=LazPackage.CompilerOptions.ParsedOpts.GetParsedValue(pcosUnitPath); - NewUnitPaths:=RemoveSearchPaths(NewUnitPaths,CurUnitPaths); - if NewUnitPaths<>'' then begin - NewUnitPaths:=CreateRelativeSearchPath(NewUnitPaths,LazPackage.Directory); - r:=IDEMessageDialog(lisExtendUnitPath, - Format(lisExtendUnitSearchPathOfPackageWith, [LazPackage.Name, #13, - NewUnitPaths]), mtConfirmation, [mbYes, mbNo, mbCancel]); - case r of - mrYes: LazPackage.CompilerOptions.OtherUnitFiles:= - MergeSearchPaths(LazPackage.CompilerOptions.OtherUnitFiles,NewUnitPaths); - mrNo: ; - else exit(false); - end; - end; - Result:=true; + Result:=LazPackage.ExtendUnitSearchPath(NewUnitPaths); end; function TPackageEditorForm.ExtendIncSearchPath(NewIncPaths: string): boolean; -var - CurIncPaths: String; - r: TModalResult; begin - CurIncPaths:=LazPackage.CompilerOptions.ParsedOpts.GetParsedValue(pcosIncludePath); - NewIncPaths:=RemoveSearchPaths(NewIncPaths,CurIncPaths); - if NewIncPaths<>'' then begin - NewIncPaths:=CreateRelativeSearchPath(NewIncPaths,LazPackage.Directory); - r:=IDEMessageDialog(lisExtendIncludePath, - Format(lisExtendIncludeFileSearchPathOfPackageWith, [LazPackage.Name, #13, - NewIncPaths]), mtConfirmation, [mbYes, mbNo, mbCancel]); - case r of - mrYes: LazPackage.CompilerOptions.IncludePath:= - MergeSearchPaths(LazPackage.CompilerOptions.IncludePath,NewIncPaths); - mrNo: ; - else exit(false); - end; - end; + Result:=LazPackage.ExtendIncSearchPath(NewIncPaths); end; function TPackageEditorForm.FilesEditTreeView: TTreeView; @@ -3091,6 +3093,7 @@ procedure TPackageEditorForm.DoCompile(CompileClean, CompileRequired: boolean); begin + CompileBitBtn.Enabled:=False; PackageEditors.CompilePackage(LazPackage,CompileClean,CompileRequired); UpdateTitle; UpdateButtons; @@ -3128,33 +3131,17 @@ UpdateFiles; end; -procedure TPackageEditorForm.DoExpandDirectory; -var - CurNode: TTreeNode; -begin - if not ShowDirectoryHierarchy then exit; - CurNode:=ItemsTreeView.Selected; - if not (IsDirectoryNode(CurNode) or (CurNode=FFilesNode)) then exit; - ItemsTreeView.BeginUpdate; - CurNode.Expand(true); - ItemsTreeView.EndUpdate; -end; - -procedure TPackageEditorForm.DoCollapseDirectory; +procedure TPackageEditorForm.DoExpandCollapseDirectory(ExpandIt: Boolean); var CurNode: TTreeNode; - Node: TTreeNode; begin - if not ShowDirectoryHierarchy then exit; CurNode:=ItemsTreeView.Selected; if not (IsDirectoryNode(CurNode) or (CurNode=FFilesNode)) then exit; ItemsTreeView.BeginUpdate; - Node:=CurNode.GetFirstChild; - while Node<>nil do - begin - Node.Collapse(true); - Node:=Node.GetNextSibling; - end; + if ExpandIt then + CurNode.Expand(true) + else + CurNode.Collapse(true); ItemsTreeView.EndUpdate; end; @@ -3208,7 +3195,7 @@ if (NewIndex<0) or (NewIndex>=LazPackage.FileCount) then exit; FilesBranch:=FilterEdit.GetExistingBranch(FFilesNode); LazPackage.MoveFile(OldIndex,NewIndex); - FilesBranch.MoveFile(OldIndex,NewIndex); + FilesBranch.Move(OldIndex,NewIndex); UpdatePEProperties; UpdateStatusBar; FilterEdit.InvalidateFilter; @@ -3216,16 +3203,25 @@ procedure TPackageEditorForm.DoMoveDependency(Offset: integer); var - OldSelection: TStringList; + OldIndex, NewIndex: Integer; + RequiredBranch: TTreeFilterBranch; + Moved: Boolean; begin - ItemsTreeView.BeginUpdate; - OldSelection:=ItemsTreeView.StoreCurrentSelection; + if (LazPackage=nil) or (FSingleSelectedDep=nil) then exit; if Offset<0 then - PackageGraph.MoveRequiredDependencyUp(FSingleSelectedDep) + Moved := LazPackage.MoveRequiredDependencyUp(FSingleSelectedDep) else - PackageGraph.MoveRequiredDependencyDown(FSingleSelectedDep); - ItemsTreeView.ApplyStoredSelection(OldSelection); - ItemsTreeView.EndUpdate; + Moved := LazPackage.MoveRequiredDependencyDown(FSingleSelectedDep); + if not Moved then exit; + LazPackage.ModifySilently; + RequiredBranch:=FilterEdit.GetExistingBranch(FRequiredPackagesNode); + OldIndex:=RequiredBranch.Items.IndexOf(FSingleSelectedDep.PackageName); + Assert(OldIndex<>-1, 'TPackageEditorForm.DoMoveDependency: "'+FSingleSelectedDep.PackageName+'" not found in FilterBranch.'); + NewIndex:=OldIndex+Offset; + RequiredBranch.Move(OldIndex,NewIndex); + UpdatePEProperties; + UpdateStatusBar; + FilterEdit.InvalidateFilter; end; procedure TPackageEditorForm.DoSortFiles; @@ -3269,6 +3265,19 @@ Result:=TPackageEditorForm(FItems[Index]); end; +function TPackageEditors.IndexOfPackage(const PkgName: string): integer; +var + I: Integer; +begin + for I := 0 to Count-1 do + if Assigned(Editors[I].LazPackage) and + SameText(ExtractFileNameOnly(Editors[I].LazPackage.Filename), PkgName) + then + Exit(I); + + Result := -1; +end; + constructor TPackageEditors.Create; begin FItems:=TFPList.Create; @@ -3314,13 +3323,39 @@ Result:=nil; end; -function TPackageEditors.OpenEditor(Pkg: TLazPackage): TPackageEditorForm; +function TPackageEditors.CreateEditor(Pkg: TLazPackage; + DoDisableAutoSizing: boolean): TPackageEditorForm; begin Result:=FindEditor(Pkg); - if Result=nil then begin - Result:=TPackageEditorForm.Create(LazarusIDE.OwningComponent); + if Result<>nil then begin + if DoDisableAutoSizing then + Result.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster Delayed'){$ENDIF}; + end else begin + Result:=TPackageEditorForm(TPackageEditorForm.NewInstance); + {$IFDEF DebugDisableAutoSizing} + if DoDisableAutoSizing then + Result.DisableAutoSizing('TAnchorDockMaster Delayed') + else + Result.DisableAutoSizing('TPackageEditors.OpenEditor'); + {$ELSE} + Result.DisableAutoSizing; + {$ENDIF} + Result.Create(LazarusIDE.OwningComponent); Result.LazPackage:=Pkg; FItems.Add(Result); + if not DoDisableAutoSizing then + Result.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TPackageEditors.OpenEditor'){$ENDIF}; + end; +end; + +function TPackageEditors.OpenEditor(Pkg: TLazPackage; BringToFront: boolean + ): TPackageEditorForm; +begin + Result:=CreateEditor(Pkg,true); + try + IDEWindowCreators.ShowForm(Result, BringToFront); + finally + Result.EnableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockMaster Delayed'){$ENDIF}; end; end; @@ -3360,6 +3395,17 @@ if Assigned(OnFreeEditor) then OnFreeEditor(Pkg); end; +function TPackageEditors.FindEditor(const PkgName: string): TPackageEditorForm; +var + i: Integer; +begin + i:=IndexOfPackage(PkgName); + if i>=0 then + Result:=Editors[i] + else + Result:=nil; +end; + function TPackageEditors.CreateNewFile(Sender: TObject; Params: TAddToPkgResult): TModalResult; begin @@ -3516,6 +3562,7 @@ initialization PackageEditors:=nil; + IDEWindowsGlobalOptions.Add(PackageEditorWindowPrefix, False); end. diff -Nru lazarus-1.4.4+dfsg/packager/packagelinks.pas lazarus-1.6+dfsg/packager/packagelinks.pas --- lazarus-1.4.4+dfsg/packager/packagelinks.pas 2015-02-14 11:37:15.000000000 +0000 +++ lazarus-1.6+dfsg/packager/packagelinks.pas 2015-12-02 11:37:42.000000000 +0000 @@ -39,12 +39,15 @@ interface uses - Classes, SysUtils, Laz2_XMLCfg, FileProcs, CodeToolManager, CodeToolsStructs, + Classes, SysUtils, Laz2_XMLCfg, FileProcs, LazFileCache, + CodeToolManager, CodeToolsStructs, LCLProc, Forms, FileUtil, AvgLvlTree, lazutf8classes, LazFileUtils, MacroIntf, PackageIntf, IDEProcs, EnvironmentOpts, PackageDefs, LazConf, IDECmdLine; const - PkgLinksFileVersion = 2; + PkgLinksFileVersion = 3; + { 3: changed "LastUsed" from day to seconds, so that last used lpk is loaded + after IDE restart } type @@ -83,12 +86,9 @@ FFileDate: TDateTime; FFileDateValid: boolean; FFilename: string; - FLastCheck: TDateTime; - FLastCheckValid: boolean; FLastUsed: TDateTime; FLPLFileDate: TDateTime; FLPLFilename: string; - FNotFoundCount: integer; FOrigin: TPkgLinkOrigin; fReferenceCount: integer; procedure SetFilename(const AValue: string); @@ -96,7 +96,7 @@ public constructor Create; override; destructor Destroy; override; - function MakeSense: boolean; + function IsMakingSense: boolean; function GetEffectiveFilename: string; procedure Reference; procedure Release; @@ -106,9 +106,6 @@ property LPLFilename: string read FLPLFilename write FLPLFilename; property LPLFileDate: TDateTime read FLPLFileDate write FLPLFileDate; property AutoCheckExists: boolean read FAutoCheckExists write FAutoCheckExists; - property NotFoundCount: integer read FNotFoundCount write FNotFoundCount; - property LastCheckValid: boolean read FLastCheckValid write FLastCheckValid; - property LastCheck: TDateTime read FLastCheck write FLastCheck; property LPKFileDateValid: boolean read FFileDateValid write FFileDateValid; property LPKFileDate: TDateTime read FFileDate write FFileDate; property LastUsed: TDateTime read FLastUsed write FLastUsed; @@ -124,12 +121,8 @@ ); TPkgLinksStates = set of TPkgLinksState; - TDependencyOwnerGetPkgFilename = function(PkgLinks: TPackageLinks; - Dependency: TPkgDependency): boolean of object; - TPackageLinks = class private - FDependencyOwnerGetPkgFilename: TDependencyOwnerGetPkgFilename; FGlobalLinks: TAvgLvlTree; // tree of global TPackageLink sorted for ID FChangeStamp: integer; FQueueSaveUserLinks: boolean; @@ -147,23 +140,25 @@ Dependency: TPkgDependency; IgnoreFiles: TFilenameToStringTree): TPackageLink; function FindLinkWithPackageIDInTree(LinkTree: TAvgLvlTree; APackageID: TLazPackageID): TPackageLink; + function FindLinkWithLPKFilenameInTree(LinkTree: TAvgLvlTree; + const PkgName, LPKFilename: string): TPackageLink; function GetModified: boolean; procedure IteratePackagesInTree(MustExist: boolean; LinkTree: TAvgLvlTree; Event: TIteratePackagesEvent); procedure SetModified(const AValue: boolean); procedure SetQueueSaveUserLinks(AValue: boolean); - procedure OnAsyncSaveUserLinks(Data: PtrInt); + procedure OnAsyncSaveUserLinks({%H-}Data: PtrInt); + function GetNewerLink(Link1, Link2: TPackageLink): TPackageLink; public UserLinkLoadTime: longint; UserLinkLoadTimeValid: boolean; constructor Create; destructor Destroy; override; procedure Clear; - procedure ClearGlobalLinks; function GetUserLinkFile(WithPath: boolean = true): string; function GetGlobalLinkDirectory: string; - procedure UpdateGlobalLinks; - procedure UpdateUserLinks; + procedure UpdateGlobalLinks; // reloads the lpl files, keeping LastUsed dates + procedure UpdateUserLinks; // reloads user links and global LastUsed dates procedure UpdateAll; procedure RemoveOldUserLinks; procedure BeginUpdate; @@ -173,12 +168,11 @@ function NeedSaveUserLinks(const ConfigFilename: string): boolean; procedure WriteLinkTree(LinkTree: TAvgLvlTree); function FindLinkWithPkgName(const PkgName: string; - IgnoreFiles: TFilenameToStringTree = nil; - FirstUserLinks: boolean = true): TPackageLink; + IgnoreFiles: TFilenameToStringTree = nil): TPackageLink; function FindLinkWithDependency(Dependency: TPkgDependency; - IgnoreFiles: TFilenameToStringTree = nil; - FirstUserLinks: boolean = true): TPackageLink; + IgnoreFiles: TFilenameToStringTree = nil): TPackageLink; function FindLinkWithPackageID(APackageID: TLazPackageID): TPackageLink; + function FindLinkWithFilename(const PkgName, LPKFilename: string): TPackageLink; procedure IteratePackages(MustExist: boolean; Event: TIteratePackagesEvent; Origins: TPkgLinkOrigins = AllPkgLinkOrigins); function AddUserLink(APackage: TLazPackage): TPackageLink; @@ -189,9 +183,6 @@ public property Modified: boolean read GetModified write SetModified; property ChangeStamp: integer read FChangeStamp; - property DependencyOwnerGetPkgFilename: TDependencyOwnerGetPkgFilename - read FDependencyOwnerGetPkgFilename - write FDependencyOwnerGetPkgFilename; property QueueSaveUserLinks: boolean read FQueueSaveUserLinks write SetQueueSaveUserLinks; end; @@ -199,6 +190,7 @@ PkgLinks: TPackageLinks = nil; // set by the PkgBoss function ComparePackageLinks(Data1, Data2: Pointer): integer; +function dbgs(Origin: TPkgLinkOrigin): string; overload; implementation @@ -214,6 +206,15 @@ Result:=Link1.Compare(Link2); end; +function dbgs(Origin: TPkgLinkOrigin): string; +begin + case Origin of + ploGlobal: Result:='Global'; + ploUser: Result:='User'; + else Result:='?'; + end; +end; + function ComparePackageIDAndLink(Key, Data: Pointer): integer; var Link: TPackageLink; @@ -305,9 +306,9 @@ inherited Destroy; end; -function TPackageLink.MakeSense: boolean; +function TPackageLink.IsMakingSense: boolean; begin - Result:=(Name<>'') and IsValidUnitName(Name) + Result:=IsValidPkgName(Name) and PackageFileNameIsValid(LPKFilename) and (CompareText(Name,ExtractFileNameOnly(LPKFilename))=0); end; @@ -338,6 +339,33 @@ SaveUserLinks(true); end; +function TPackageLinks.GetNewerLink(Link1, Link2: TPackageLink): TPackageLink; +begin + if Link1=nil then + Result:=Link2 + else if Link2=nil then + Result:=Link1 + else if Link1.LastUsed>Link2.LastUsed then + Result:=Link1 + else + Result:=Link2; + + {DbgOut('TPackageLinks.GetNewerLink '); + if Link1<>nil then + DbgOut(' Link1=',Link1.IDAsString,'=',DateToCfgStr(Link1.LastUsed,DateTimeAsCfgStrFormat)) + else + DbgOut(' Link1=nil'); + if Link2<>nil then + DbgOut(' Link2=',Link2.IDAsString,'=',DateToCfgStr(Link2.LastUsed,DateTimeAsCfgStrFormat)) + else + DbgOut(' Link2=nil'); + if Result<>nil then + DbgOut(' Result=',Result.IDAsString,'=',DateToCfgStr(Result.LastUsed,DateTimeAsCfgStrFormat)) + else + DbgOut(' Result=nil'); + debugln;} +end; + function TPackageLinks.FindLeftMostNode(LinkTree: TAvgLvlTree; const PkgName: string): TAvgLvlTreeNode; // find left most link with PkgName @@ -369,18 +397,12 @@ procedure TPackageLinks.Clear; begin QueueSaveUserLinks:=false; - ClearGlobalLinks; + FGlobalLinks.FreeAndClear; FUserLinksSortID.FreeAndClear; FUserLinksSortFile.Clear; FStates:=[plsUserLinksNeedUpdate,plsGlobalLinksNeedUpdate]; end; -procedure TPackageLinks.ClearGlobalLinks; -begin - FGlobalLinks.FreeAndClear; - Include(FStates,plsGlobalLinksNeedUpdate); -end; - function TPackageLinks.GetUserLinkFile(WithPath: boolean): string; begin Result:='packagefiles.xml'; @@ -449,14 +471,14 @@ GlobalLinksDir: String; NewPkgName: string; PkgVersion: TPkgVersion; - CurPkgLink: TPackageLink; + CurPkgLink, OldPkgLink, OtherPkgLink: TPackageLink; sl: TStringListUTF8; LPLFilename: String; - LPKFilename: string; + LPKFilename, LazDir: string; Files: TStrings; i: Integer; - Node: TAvgLvlTreeNode; - NextNode: TAvgLvlTreeNode; + OldNode, OtherNode: TAvgLvlTreeNode; + UnmappedGlobalLinks, MappedGlobalLinks: TAvgLvlTree; begin if fUpdateLock>0 then begin Include(FStates,plsGlobalLinksNeedUpdate); @@ -467,36 +489,22 @@ {$IFDEF VerboseGlobalPkgLinks} debugln(['TPackageLinks.UpdateGlobalLinks START']); {$ENDIF} - FGlobalLinks.FreeAndClear; - GlobalLinksDir:=GetGlobalLinkDirectory; - - // delete old entries - Node:=FGlobalLinks.FindLowest; - while Node<>nil do begin - NextNode:=Node.Successor; - CurPkgLink:=TPackageLink(Node.Data); - if (not FileIsInDirectory(CurPkgLink.LPLFilename,GlobalLinksDir)) - or (not FileExistsCached(CurPkgLink.LPLFilename)) - or (FileAgeCached(CurPkgLink.LPLFilename)<>CurPkgLink.LPLFileDate) then begin - {$IFDEF VerboseGlobalPkgLinks} - debugln(['TPackageLinks.UpdateGlobalLinks Delete ',CurPkgLink.LPLFilename]); - {$ENDIF} - FGlobalLinks.Delete(Node); - CurPkgLink.Free; - end; - Node:=NextNode; - end; - + UnmappedGlobalLinks:=FGlobalLinks; + FGlobalLinks:=TAvgLvlTree.Create(@ComparePackageLinks); + MappedGlobalLinks:=TAvgLvlTree.Create(@ComparePackageLinks); Files:=TStringListUTF8.Create; PkgVersion:=TPkgVersion.Create; try + GlobalLinksDir:=GetGlobalLinkDirectory; + CodeToolBoss.DirectoryCachePool.GetListing(GlobalLinksDir,Files,false); + LazDir:=EnvironmentOptions.GetParsedLazarusDirectory; for i:=0 to Files.Count-1 do begin LPLFilename:=GlobalLinksDir+Files[i]; if CompareFileExt(LPLFilename,'lpl')<>0 then continue; if (not ParseFilename(Files[i],NewPkgName,PkgVersion)) then begin - DebugLn('WARNING: suspicious pkg link file found (name): ',LPLFilename); + DebugLn('Warning: (lazarus) suspicious pkg link file found (name): ',LPLFilename); continue; end; LPKFilename:=''; @@ -504,18 +512,18 @@ try sl.LoadFromFile(LPLFilename); if sl.Count<=0 then begin - DebugLn('WARNING: pkg link file is empty: ',LPLFilename); + DebugLn('Warning: (lazarus) pkg link file is empty: ',LPLFilename); continue; end; LPKFilename:=GetForcedPathDelims(sl[0]); except on E: Exception do begin - DebugLn('WARNING: unable to read pkg link file: ',LPLFilename,' : ',E.Message); + DebugLn('Warning: (lazarus) unable to read pkg link file: ',LPLFilename,' : ',E.Message); end; end; sl.Free; if LPKFilename='' then begin - debugln(['TPackageLinks.UpdateGlobalLinks lpl file has empty first line: ',LPLFilename]); + debugln(['Warning: (lazarus) TPackageLinks.UpdateGlobalLinks lpl file has empty first line: ',LPLFilename]); continue; end; //debugln(['TPackageLinks.UpdateGlobalLinks NewFilename="',LPKFilename,'"']); @@ -528,30 +536,73 @@ CurPkgLink.Name:=NewPkgName; CurPkgLink.Version.Assign(PkgVersion); IDEMacros.SubstituteMacros(LPKFilename); - //debugln(['TPackageLinks.UpdateGlobalLinks EnvironmentOptions.LazarusDirectory=',EnvironmentOptions.LazarusDirectory]); + //debugln(['TPackageLinks.UpdateGlobalLinks EnvironmentOptions.LazarusDirectory=',LazDir]); LPKFilename:=TrimFilename(LPKFilename); - if (FileIsInDirectory(LPKFilename,EnvironmentOptions.GetParsedLazarusDirectory)) then - LPKFilename:=CreateRelativePath(LPKFilename,EnvironmentOptions.GetParsedLazarusDirectory); + if (FileIsInDirectory(LPKFilename,LazDir)) then + LPKFilename:=CreateRelativePath(LPKFilename,LazDir); CurPkgLink.LPKFilename:=LPKFilename; //debugln('TPackageLinks.UpdateGlobalLinks PkgName="',CurPkgLink.Name,'" ', // ' PkgVersion=',CurPkgLink.Version.AsString, // ' Filename="',CurPkgLink.LPKFilename,'"', - // ' MakeSense=',dbgs(CurPkgLink.MakeSense)); - if CurPkgLink.MakeSense then - FGlobalLinks.Add(CurPkgLink) - else begin - debugln('TPackageLinks.UpdateGlobalLinks Invalid lpl "',LPLFilename,'"' + // ' MakeSense=',dbgs(CurPkgLink.IsMakingSense)); + if CurPkgLink.IsMakingSense then begin + OldNode:=UnmappedGlobalLinks.Find(CurPkgLink); + if OldNode<>nil then begin + // keep LastUsed date for global link + OldPkgLink:=TPackageLink(OldNode.Data); + CurPkgLink.LastUsed:=OldPkgLink.LastUsed; + UnmappedGlobalLinks.Delete(OldNode); + MappedGlobalLinks.Add(OldPkgLink); + //if CompareText(OldPkgLink.Name,'lclbase')=0 then + // debugln(['TPackageLinks.UpdateGlobalLinks keeping LastUsed of '+OldPkgLink.Name,' ',DateToCfgStr(OldPkgLink.LastUsed,DateTimeAsCfgStrFormat)]); + end; + FGlobalLinks.Add(CurPkgLink); + end else begin + debugln('Warning: (lazarus) TPackageLinks.UpdateGlobalLinks Invalid lpl "',LPLFilename,'"' ,' PkgName="',CurPkgLink.Name,'" ' ,' PkgVersion=',CurPkgLink.Version.AsString - ,' Filename="',CurPkgLink.LPKFilename,'"' - ,' MakeSense=',dbgs(CurPkgLink.MakeSense)); + ,' Filename="',CurPkgLink.LPKFilename,'"'); CurPkgLink.Release; end; end; + + // map unmapped global links (e.g. a package version changed) + // Note: When the IDE knows several versions of a lpk it loads the last one + // used (i.e. highest LastUsed date). When the version of the lpk + // increased on disk (e.g. svn update or user installed a new Lazarus + // version) the LastUsed date must be moved to the new lpk. + OldNode:=UnmappedGlobalLinks.FindLowest; + while OldNode<>nil do begin + OldPkgLink:=TPackageLink(OldNode.Data); + // this old lpl was not found in the new lpl files + //debugln(['TPackageLinks.UpdateGlobalLinks formerly used lpl '+OldPkgLink.IDAsString+' not found in new lpl directory -> searching new lpl ...']); + OldNode:=UnmappedGlobalLinks.FindSuccessor(OldNode); + OtherNode:=FindLeftMostNode(FGlobalLinks,OldPkgLink.Name); + while OtherNode<>nil do begin + OtherPkgLink:=TPackageLink(OtherNode.Data); + if CompareText(OtherPkgLink.Name,OldPkgLink.Name)<>0 then break; + OtherNode:=FGlobalLinks.FindSuccessor(OtherNode); + if MappedGlobalLinks.Find(OtherPkgLink)<>nil then continue; + // found a new lpl for the old lpl + if not UnmappedGlobalLinks.Remove(OldPkgLink) then + debugln(['TPackageLinks.UpdateGlobalLinks inconsistency UnmappedGlobalLinks.Remove']); + MappedGlobalLinks.Add(OldPkgLink); + if OtherPkgLink.LastUsed<OldPkgLink.LastUsed then begin + debugln(['Hint: (lazarus) [TPackageLinks.UpdateGlobalLinks] using LastUsed date of '+OldPkgLink.IDAsString+' for new '+OtherPkgLink.IDAsString+' in '+OtherPkgLink.LPKFilename]); + OtherPkgLink.LastUsed:=OldPkgLink.LastUsed; + end; + break; + end; + end; + //WriteLinkTree(FGlobalLinks); finally Files.Free; PkgVersion.Free; + UnmappedGlobalLinks.FreeAndClear; + UnmappedGlobalLinks.Free; + MappedGlobalLinks.FreeAndClear; + MappedGlobalLinks.Free; end; end; @@ -565,8 +616,10 @@ NewPkgLink: TPackageLink; ItemPath: String; FileVersion: LongInt; - OtherNode: TAvgLvlTreeNode; + LastUsedFormat: String; + OtherNode, ANode: TAvgLvlTreeNode; OtherLink: TPackageLink; + UnmappedGlobalLinks, MappedGlobalLinks: TAvgLvlTree; begin if fUpdateLock>0 then begin Include(FStates,plsUserLinksNeedUpdate); @@ -590,10 +643,15 @@ XMLConfig:=nil; try XMLConfig:=TXMLConfig.Create(ConfigFilename); - + + // load user links Path:='UserPkgLinks/'; FileVersion:=XMLConfig.GetValue(Path+'Version',0); LinkCount:=XMLConfig.GetValue(Path+'Count',0); + if FileVersion<3 then + LastUsedFormat:=DateAsCfgStrFormat + else + LastUsedFormat:=DateTimeAsCfgStrFormat; for i:=1 to LinkCount do begin ItemPath:=Path+'Item'+IntToStr(i)+'/'; NewPkgLink:=TPackageLink.Create; @@ -601,19 +659,11 @@ NewPkgLink.Origin:=ploUser; NewPkgLink.Name:=XMLConfig.GetValue(ItemPath+'Name/Value',''); PkgVersionLoadFromXMLConfig(NewPkgLink.Version,XMLConfig,ItemPath+'Version/', - LazPkgXMLFileVersion); + FileVersion); NewPkgLink.LPKFilename:=XMLConfig.GetValue(ItemPath+'Filename/Value',''); NewPkgLink.AutoCheckExists:= XMLConfig.GetValue(ItemPath+'AutoCheckExists/Value',true); - NewPkgLink.LastCheckValid:= - XMLConfig.GetValue(ItemPath+'LastCheckValid/Value',false); - if NewPkgLink.LastCheckValid then begin - NewPkgLink.LastCheckValid:= - CfgStrToDate(XMLConfig.GetValue(ItemPath+'LastCheck/Value',''), - NewPkgLink.FLastCheck); - end; - NewPkgLink.LPKFileDateValid:= XMLConfig.GetValue(ItemPath+'FileDateValid/Value',false); if NewPkgLink.LPKFileDateValid then begin @@ -622,15 +672,15 @@ NewPkgLink.FFileDate); end; - NewPkgLink.NotFoundCount:= - XMLConfig.GetValue(ItemPath+'NotFoundCount/Value',0); if not CfgStrToDate(XMLConfig.GetValue(ItemPath+'LastUsed/Value',''), - NewPkgLink.FLastUsed) + NewPkgLink.FLastUsed,LastUsedFormat) then NewPkgLink.FLastUsed := 0; + //if CompareText(NewPkgLink.Name,'lclbase')=0 then + // debugln(['TPackageLinks.UpdateUserLinks ',NewPkgLink.IDAsString,' ',DateToCfgStr(NewPkgLink.LastUsed,DateTimeAsCfgStrFormat)]); - if not NewPkgLink.MakeSense then begin - debugln(['Warning: TPackageLinks.UpdateUserLinks invalid link: ',NewPkgLink.IDAsString]); + if not NewPkgLink.IsMakingSense then begin + debugln(['Warning: (lazarus) TPackageLinks.UpdateUserLinks invalid link: ',NewPkgLink.IDAsString]); NewPkgLink.Release; continue; end; @@ -639,16 +689,16 @@ // a link to the same file OtherLink:=TPackageLink(OtherNode.Data); if ConsoleVerbosity>0 then - debugln(['Warning: TPackageLinks.UpdateUserLinks two links for file: ',NewPkgLink.LPKFilename,' A=',OtherLink.IDAsString,' B=',NewPkgLink.IDAsString]); + debugln(['Warning: (lazarus) TPackageLinks.UpdateUserLinks two links for file: ',NewPkgLink.LPKFilename,' A=',OtherLink.IDAsString,' B=',NewPkgLink.IDAsString]); if OtherLink.LastUsed<NewPkgLink.LastUsed then begin if ConsoleVerbosity>0 then - debugln(['Warning: TPackageLinks.UpdateUserLinks ignoring older link ',OtherLink.IDAsString]); + debugln(['Warning: (lazarus) TPackageLinks.UpdateUserLinks ignoring older link ',OtherLink.IDAsString]); FUserLinksSortID.RemovePointer(OtherLink); FUserLinksSortFile.Delete(OtherNode); OtherLink.Release; end else begin if ConsoleVerbosity>0 then - debugln(['Warning: TPackageLinks.UpdateUserLinks ignoring older link ',NewPkgLink.IDAsString]); + debugln(['Warning: (lazarus) TPackageLinks.UpdateUserLinks ignoring older link ',NewPkgLink.IDAsString]); NewPkgLink.Release; continue; end; @@ -657,14 +707,100 @@ FUserLinksSortID.Add(NewPkgLink); FUserLinksSortFile.Add(NewPkgLink); end; + + // load LastUsed dates of global links + Path:='GlobalPkgLinks/'; + LinkCount:=XMLConfig.GetValue(Path+'Count',0); + UnmappedGlobalLinks:=TAvgLvlTree.Create(@ComparePackageLinks); + MappedGlobalLinks:=TAvgLvlTree.Create(@ComparePackageLinks); + try + for i:=1 to LinkCount do begin + ItemPath:=Path+'Item'+IntToStr(i)+'/'; + NewPkgLink:=TPackageLink.Create; // create temporary TPackageLink + + if not CfgStrToDate(XMLConfig.GetValue(ItemPath+'LastUsed/Value',''), + NewPkgLink.FLastUsed,LastUsedFormat) + then begin + debugln(['Hint: (lazarus) [TPackageLinks.UpdateUserLinks] ignoring invalid entry '+ItemPath]); + NewPkgLink.Free; + continue; + end; + + NewPkgLink.Name:=XMLConfig.GetValue(ItemPath+'Name/Value',''); + PkgVersionLoadFromXMLConfig(NewPkgLink.Version,XMLConfig,ItemPath+'Version/', + FileVersion); + if not IsValidPkgName(NewPkgLink.Name) then begin + debugln(['Hint: (lazarus) [TPackageLinks.UpdateUserLinks] ignoring invalid global link LastUsed of '+NewPkgLink.IDAsString]); + NewPkgLink.Free; + continue; + end; + //if CompareText(NewPkgLink.Name,'lclbase')=0 then + // debugln(['TPackageLinks.UpdateUserLinks ',NewPkgLink.IDAsString,' LastUsed=',DateToCfgStr(NewPkgLink.LastUsed,DateTimeAsCfgStrFormat)]); + + OtherNode:=FGlobalLinks.Find(NewPkgLink); + if OtherNode<>nil then begin + // global link (.lpl) still exists -> load LastUsed date + OtherLink:=TPackageLink(OtherNode.Data); + MappedGlobalLinks.Add(NewPkgLink); + if OtherLink.LastUsed<NewPkgLink.LastUsed then + OtherLink.LastUsed:=NewPkgLink.LastUsed; + //if CompareText(OtherLink.Name,'lclbase')=0 then + // debugln(['TPackageLinks.UpdateUserLinks updating LastUsed of '+OtherLink.Name,' ',DateToCfgStr(OtherLink.LastUsed,DateTimeAsCfgStrFormat)]); + continue; + end; + + // this global link does not exist (e.g. the version has changed) + // => check after all data was loaded + if UnmappedGlobalLinks.Find(NewPkgLink)<>nil then + NewPkgLink.Free + else + UnmappedGlobalLinks.Add(NewPkgLink); + end; + + // map unmapped global links to new global links + // Note: When the IDE knows several versions of a lpk it loads the last one + // used (i.e. highest LastUsed date). When the version of the lpk + // increased on disk (e.g. svn update or user installed a new Lazarus + // version) the LastUsed date must be moved to the new lpk. + ANode:=UnmappedGlobalLinks.FindLowest; + while ANode<>nil do begin + NewPkgLink:=TPackageLink(ANode.Data); + //debugln(['TPackageLinks.UpdateUserLinks LastUsed date of '+NewPkgLink.IDAsString+' has no lpl file -> searching a new lpl file ...']); + ANode:=UnmappedGlobalLinks.FindSuccessor(ANode); + // check all global links with same pkg name + OtherNode:=FindLeftMostNode(FGlobalLinks,NewPkgLink.Name); + while (OtherNode<>nil) do begin + OtherLink:=TPackageLink(OtherNode.Data); + if CompareText(OtherLink.Name,NewPkgLink.Name)<>0 then break; + OtherNode:=FGlobalLinks.FindSuccessor(OtherNode); + if MappedGlobalLinks.Find(OtherLink)<>nil then + continue;// this lpl LastUsed date was already set + // this lpl LastUsed date was not yet set => set it + UnmappedGlobalLinks.Remove(NewPkgLink); + MappedGlobalLinks.Add(NewPkgLink); + if OtherLink.LastUsed<NewPkgLink.LastUsed then begin + debugln(['Hint: (lazarus) [TPackageLinks.UpdateUserLinks] using LastUsed date of old '+NewPkgLink.IDAsString+' for '+OtherLink.IDAsString+' in '+OtherLink.LPKFilename]); + OtherLink.LastUsed:=NewPkgLink.LastUsed; + end; + break; + end; + end; + + finally + MappedGlobalLinks.FreeAndClear; + MappedGlobalLinks.Free; + UnmappedGlobalLinks.FreeAndClear; + UnmappedGlobalLinks.Free; + end; + XMLConfig.Modified:=false; XMLConfig.Free; - UserLinkLoadTime:=FileAgeUTF8(ConfigFilename); + UserLinkLoadTime:=FileAgeCached(ConfigFilename); UserLinkLoadTimeValid:=true; except on E: Exception do begin - DebugLn('NOTE: unable to read ',ConfigFilename,' ',E.Message); + DebugLn('Note: (lazarus) unable to read ',ConfigFilename,' ',E.Message); exit; end; end; @@ -745,7 +881,7 @@ // check if file needs saving if not NeedSaveUserLinks(ConfigFilename) then exit; if ConsoleVerbosity>1 then - DebugLn(['TPackageLinks.SaveUserLinks saving ... ',ConfigFilename,' Modified=',Modified,' UserLinkLoadTimeValid=',UserLinkLoadTimeValid,' ',FileAgeUTF8(ConfigFilename)=UserLinkLoadTime,' Immediately=',Immediately]); + DebugLn(['Hint: (lazarus) TPackageLinks.SaveUserLinks saving ... ',ConfigFilename,' Modified=',Modified,' UserLinkLoadTimeValid=',UserLinkLoadTimeValid,' ',FileAgeUTF8(ConfigFilename)=UserLinkLoadTime,' Immediately=',Immediately]); if Immediately then begin QueueSaveUserLinks:=false; @@ -760,14 +896,17 @@ try XMLConfig:=TXMLConfig.CreateClean(ConfigFilename); + // store user links Path:='UserPkgLinks/'; XMLConfig.SetValue(Path+'Version',PkgLinksFileVersion); ANode:=FUserLinksSortID.FindLowest; i:=0; while ANode<>nil do begin + CurPkgLink:=TPackageLink(ANode.Data); + ANode:=FUserLinksSortID.FindSuccessor(ANode); + inc(i); ItemPath:=Path+'Item'+IntToStr(i)+'/'; - CurPkgLink:=TPackageLink(ANode.Data); XMLConfig.SetDeleteValue(ItemPath+'Name/Value',CurPkgLink.Name,''); //debugln(['TPackageLinks.SaveUserLinks ',CurPkgLink.Name,' ',dbgs(Pointer(CurPkgLink))]); PkgVersionSaveToXMLConfig(CurPkgLink.Version,XMLConfig,ItemPath+'Version/'); @@ -780,29 +919,39 @@ end; XMLConfig.SetDeleteValue(ItemPath+'Filename/Value',AFilename,''); - XMLConfig.SetDeleteValue(ItemPath+'LastCheckValid/Value', - CurPkgLink.LastCheckValid,false); - if CurPkgLink.LastCheckValid then - XMLConfig.SetDeleteValue(ItemPath+'LastCheck/Value', - DateToCfgStr(CurPkgLink.LastCheck),''); - XMLConfig.SetDeleteValue(ItemPath+'NotFoundCount/Value', - CurPkgLink.NotFoundCount,0); XMLConfig.SetDeleteValue(ItemPath+'LastUsed/Value', - DateToCfgStr(CurPkgLink.LastUsed),''); + DateToCfgStr(CurPkgLink.LastUsed,DateTimeAsCfgStrFormat),''); + end; + XMLConfig.SetDeleteValue(Path+'Count',i,0); - ANode:=FUserLinksSortID.FindSuccessor(ANode); + // store LastUsed dates of global links + Path:='GlobalPkgLinks/'; + XMLConfig.SetValue(Path+'Version',PkgLinksFileVersion); + i:=0; + ANode:=FGlobalLinks.FindLowest; + while ANode<>nil do begin + CurPkgLink:=TPackageLink(ANode.Data); + ANode:=FGlobalLinks.FindSuccessor(ANode); + if CurPkgLink.LastUsed<=0 then continue; + + inc(i); + ItemPath:=Path+'Item'+IntToStr(i)+'/'; + XMLConfig.SetDeleteValue(ItemPath+'Name/Value',CurPkgLink.Name,''); + PkgVersionSaveToXMLConfig(CurPkgLink.Version,XMLConfig,ItemPath+'Version/'); + XMLConfig.SetDeleteValue(ItemPath+'LastUsed/Value', + DateToCfgStr(CurPkgLink.LastUsed,DateTimeAsCfgStrFormat),''); end; - XMLConfig.SetDeleteValue(Path+'Count',FUserLinksSortID.Count,0); - - InvalidateFileStateCache; + XMLConfig.SetDeleteValue(Path+'Count',i,0); + + InvalidateFileStateCache(ConfigFilename); XMLConfig.Flush; XMLConfig.Free; - UserLinkLoadTime:=FileAgeUTF8(ConfigFilename); + UserLinkLoadTime:=FileAgeCached(ConfigFilename); UserLinkLoadTimeValid:=true; except on E: Exception do begin - DebugLn('NOTE: unable to read ',ConfigFilename,' ',E.Message); + DebugLn('Note: (lazarus) unable to read ',ConfigFilename,' ',E.Message); exit; end; end; @@ -875,12 +1024,14 @@ {$ENDIF} begin Result:=nil; - if (Dependency=nil) or (not Dependency.MakeSense) then begin - DebugLn(['TPackageLinks.FindLinkWithDependencyInTree Dependency makes no sense']); + if (Dependency=nil) or (not Dependency.IsMakingSense) then begin + DebugLn(['Warning: (lazarus) TPackageLinks.FindLinkWithDependencyInTree Dependency makes no sense']); exit; end; + {$IFDEF VerbosePkgLinkSameName} if CompareText(Dependency.PackageName,'tstver')=0 then - debugln(['TPackageLinks.FindLinkWithDependencyInTree AAA1 ',Dependency.AsString(true)]); + debugln(['TPackageLinks.FindLinkWithDependencyInTree START ',Dependency.AsString(true)]); + {$ENDIF} // if there are several fitting the description, use the last used // and highest version CurNode:=FindLeftMostNode(LinkTree,Dependency.PackageName); @@ -939,6 +1090,21 @@ Result:=nil; end; +function TPackageLinks.FindLinkWithLPKFilenameInTree(LinkTree: TAvgLvlTree; + const PkgName, LPKFilename: string): TPackageLink; +var + CurNode: TAvgLvlTreeNode; +begin + CurNode:=FindLeftMostNode(LinkTree,PkgName); + while CurNode<>nil do begin + Result:=TPackageLink(CurNode.Data); + if CompareText(PkgName,Result.Name)<>0 then break; + if CompareFilenames(Result.GetEffectiveFilename,LPKFilename)=0 then exit; + CurNode:=LinkTree.FindSuccessor(CurNode); + end; + Result:=nil; +end; + function TPackageLinks.GetModified: boolean; begin Result:=FSavedChangeStamp<>FChangeStamp; @@ -983,44 +1149,43 @@ end; function TPackageLinks.FindLinkWithPkgName(const PkgName: string; - IgnoreFiles: TFilenameToStringTree; FirstUserLinks: boolean): TPackageLink; + IgnoreFiles: TFilenameToStringTree): TPackageLink; +var + UserLink, GlobalLink: TPackageLink; begin - Result:=nil; - if FirstUserLinks then - Result:=FindLinkWithPkgNameInTree(FUserLinksSortID,PkgName,IgnoreFiles); - if Result=nil then - Result:=FindLinkWithPkgNameInTree(FGlobalLinks,PkgName,IgnoreFiles); - if (Result=nil) and (not FirstUserLinks) then - Result:=FindLinkWithPkgNameInTree(FUserLinksSortID,PkgName,IgnoreFiles); + UserLink:=FindLinkWithPkgNameInTree(FUserLinksSortID,PkgName,IgnoreFiles); + GlobalLink:=FindLinkWithPkgNameInTree(FGlobalLinks,PkgName,IgnoreFiles); + Result:=GetNewerLink(UserLink,GlobalLink); end; function TPackageLinks.FindLinkWithDependency(Dependency: TPkgDependency; - IgnoreFiles: TFilenameToStringTree; FirstUserLinks: boolean): TPackageLink; + IgnoreFiles: TFilenameToStringTree): TPackageLink; +var + UserLink, GlobalLink: TPackageLink; begin - Result:=nil; - if FirstUserLinks then - Result:=FindLinkWithDependencyInTree(FUserLinksSortID,Dependency,IgnoreFiles); - if Result=nil then - Result:=FindLinkWithDependencyInTree(FGlobalLinks,Dependency,IgnoreFiles); - if (Result=nil) and (not FirstUserLinks) then - Result:=FindLinkWithDependencyInTree(FUserLinksSortID,Dependency,IgnoreFiles); - //if Result=nil then begin - //debugln('TPackageLinks.FindLinkWithDependency A ',Dependency.AsString); - // WriteLinkTree(FGlobalLinks); - //end; - // finally try the history lists of the Dependency Owner (Project/Package) - if (Result=nil) and (Dependency.Owner<>nil) - and Assigned(DependencyOwnerGetPkgFilename) - and DependencyOwnerGetPkgFilename(Self,Dependency) then - Result:=FindLinkWithDependencyInTree(FUserLinksSortID,Dependency,IgnoreFiles); + UserLink:=FindLinkWithDependencyInTree(FUserLinksSortID,Dependency,IgnoreFiles); + GlobalLink:=FindLinkWithDependencyInTree(FGlobalLinks,Dependency,IgnoreFiles); + Result:=GetNewerLink(UserLink,GlobalLink); end; function TPackageLinks.FindLinkWithPackageID(APackageID: TLazPackageID ): TPackageLink; +var + UserLink, GlobalLink: TPackageLink; +begin + UserLink:=FindLinkWithPackageIDInTree(FUserLinksSortID,APackageID); + GlobalLink:=FindLinkWithPackageIDInTree(FGlobalLinks,APackageID); + Result:=GetNewerLink(UserLink,GlobalLink); +end; + +function TPackageLinks.FindLinkWithFilename(const PkgName, LPKFilename: string + ): TPackageLink; +var + UserLink, GlobalLink: TPackageLink; begin - Result:=FindLinkWithPackageIDInTree(FUserLinksSortID,APackageID); - if Result=nil then - Result:=FindLinkWithPackageIDInTree(FGlobalLinks,APackageID); + UserLink:=FindLinkWithLPKFilenameInTree(FUserLinksSortID,PkgName,LPKFilename); + GlobalLink:=FindLinkWithLPKFilenameInTree(FGlobalLinks,PkgName,LPKFilename); + Result:=GetNewerLink(UserLink,GlobalLink); end; procedure TPackageLinks.IteratePackages(MustExist: boolean; @@ -1057,7 +1222,7 @@ NewLink.Reference; NewLink.AssignID(APackage); NewLink.LPKFilename:=APackage.Filename; - if NewLink.MakeSense then begin + if NewLink.IsMakingSense then begin FUserLinksSortID.Add(NewLink); FUserLinksSortFile.Add(NewLink); IncreaseChangeStamp; @@ -1090,17 +1255,16 @@ PkgVersionLoadFromXMLConfig(PkgVersion,LPK); // check if link already exists - OldLink:=FindLinkWithPkgName(PkgName); + OldLink:=FindLinkWithFilename(PkgName,PkgFilename); if (OldLink<>nil) then begin // link exists - if CompareFilenames(OldLink.GetEffectiveFilename,PkgFilename)=0 then begin - Result:=OldLink; - Result.LastUsed:=Now; - if LPK<>nil then - Result.Version.Assign(PkgVersion); - exit; - end; + Result:=OldLink; + Result.LastUsed:=Now; + if LPK<>nil then + Result.Version.Assign(PkgVersion); + exit; end; + // add user link NewLink:=TPackageLink.Create; NewLink.Reference; @@ -1108,7 +1272,7 @@ NewLink.LPKFilename:=PkgFilename; if LPK<>nil then NewLink.Version.Assign(PkgVersion); - if NewLink.MakeSense then begin + if NewLink.IsMakingSense then begin FUserLinksSortID.Add(NewLink); FUserLinksSortFile.Add(NewLink); IncreaseChangeStamp; diff -Nru lazarus-1.4.4+dfsg/packager/packagesystem.pas lazarus-1.6+dfsg/packager/packagesystem.pas --- lazarus-1.4.4+dfsg/packager/packagesystem.pas 2015-10-03 15:42:34.000000000 +0000 +++ lazarus-1.6+dfsg/packager/packagesystem.pas 2016-01-13 17:27:49.000000000 +0000 @@ -45,9 +45,9 @@ MemCheck, {$ENDIF} // FPC + LCL - Classes, SysUtils, FileProcs, FileUtil, LCLProc, Forms, Controls, Dialogs, - Laz2_XMLCfg, LazLogger, LazFileUtils, InterfaceBase, LazUTF8, laz2_XMLRead, - strutils, + Classes, SysUtils, strutils, Forms, Controls, Dialogs, + FileProcs, FileUtil, LCLProc, LazFileCache, + Laz2_XMLCfg, LazLogger, LazFileUtils, LazUTF8, laz2_XMLRead, // codetools AVL_Tree, contnrs, DefineTemplates, CodeCache, BasicCodeTools, CodeToolsStructs, NonPascalCodeTools, SourceChanger, @@ -89,6 +89,10 @@ puifDoNotConfirm, puifDoNotBuildIDE ); + TPkgVerbosityFlag = ( + pvPkgSearch // write debug messsages what packages are searched and found + ); + TPkgVerbosityFlags = set of TPkgVerbosityFlag; TPkgUninstallFlags = set of TPkgUninstallFlag; @@ -103,6 +107,8 @@ var Filename: string) of object; TPkgDeleteAmbiguousFiles = function(const Filename: string): TModalResult of object; TOnBeforeCompilePackages = function(aPkgList: TFPList): TModalResult of object; + TOnCheckInterPkgFiles = function(IDEObject: TObject; PkgList: TFPList; + out FilesChanged: boolean): boolean of object; { TLazPkgGraphBuildItem } @@ -138,9 +144,36 @@ ErrorMessage: string; end; + TLazPackageGraph = class; + + { TLazPackageGraphFileCachePackageInfo } + + TLazPackageGraphFileCachePackageInfo = record + FileName: string; + ChangeStamp: Integer; + end; + + { TLazPackageGraphFileCache } + + TLazPackageGraphFileCache = class(TObject) + private + FGraph: TLazPackageGraph; + FPackageInfo: array of TLazPackageGraphFileCachePackageInfo; + FFilesList: TFilenameToPointerTree; + FRemovedFilesList: TFilenameToPointerTree; + function NeedsUpdate: Boolean; + procedure Update; + public + constructor Create(AOwner: TLazPackageGraph); + destructor Destroy; override; + public + function FindFileInAllPackages(TheFilename: string; + IgnoreDeleted, FindVirtualFile: boolean): TPkgFile; + end; + { TLazPackageGraph } - TLazPackageGraph = class + TLazPackageGraph = class(TPackageGraphInterface) private FAbortRegistration: boolean; fChanged: boolean; @@ -160,6 +193,7 @@ FOnBeforeCompilePackages: TOnBeforeCompilePackages; FOnBeginUpdate: TNotifyEvent; FOnChangePackageName: TPkgChangeNameEvent; + FOnCheckInterPkgFiles: TOnCheckInterPkgFiles; FOnDeleteAmbiguousFiles: TPkgDeleteAmbiguousFiles; FOnDeletePackage: TPkgDeleteEvent; FOnDependencyModified: TDependencyModifiedEvent; @@ -174,6 +208,9 @@ FLazControlsPackage: TLazPackage; FTree: TAVLTree; // sorted tree of TLazPackage FUpdateLock: integer; + FLockedChangeStamp: int64; + FVerbosity: TPkgVerbosityFlags; + FFindFileCache: TLazPackageGraphFileCache; function CreateDefaultPackage: TLazPackage; function GetCount: Integer; function GetPackages(Index: integer): TLazPackage; @@ -193,6 +230,9 @@ var Note: string): TModalResult; procedure InvalidateStateFile(APackage: TLazPackage); procedure OnExtToolBuildStopped(Sender: TObject); + procedure PkgModify(Sender: TObject); + protected + procedure IncChangeStamp; override; public constructor Create; destructor Destroy; override; @@ -211,11 +251,16 @@ var {%H-}Abort: boolean): string; function MacroFunctionPkgIncPath(const s: string; const {%H-}Data: PtrInt; var {%H-}Abort: boolean): string; + function MacroFunctionPkgName(const s: string; const {%H-}Data: PtrInt; + var {%H-}Abort: boolean): string; + function MacroFunctionPkgOutDir(const s: string; const {%H-}Data: PtrInt; + var {%H-}Abort: boolean): string; function MacroFunctionCTPkgDir(Data: Pointer): boolean; function MacroFunctionCTPkgSrcPath(Data: Pointer): boolean; function MacroFunctionCTPkgUnitPath(Data: Pointer): boolean; function MacroFunctionCTPkgIncPath(Data: Pointer): boolean; function MacroFunctionCTPkgName(Data: Pointer): boolean; + function MacroFunctionCTPkgOutDir(Data: Pointer): boolean; function GetPackageFromMacroParameter(const TheID: string; out APackage: TLazPackage): boolean; public @@ -243,8 +288,8 @@ function FindAutoInstallDependencyPath(ChildPackage: TLazPackage): TFPList; function FindAmbiguousUnits(APackage: TLazPackage; FirstDependency: TPkgDependency; - var File1, File2: TPkgFile; - var ConflictPkg: TLazPackage): boolean; + out File1, File2: TPkgFile; + out ConflictPkg: TLazPackage): boolean; function FindFPCConflictUnit(APackage: TLazPackage; FirstDependency: TPkgDependency; const Directory: string; @@ -403,7 +448,11 @@ property QuietRegistration: boolean read FQuietRegistration write FQuietRegistration; property ErrorMsg: string read FErrorMsg write FErrorMsg; + property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number + property UpdateLock: integer read FUpdateLock; + property Verbosity: TPkgVerbosityFlags read FVerbosity write FVerbosity; + // base packages property FCLPackage: TLazPackage read FFCLPackage; property LCLBasePackage: TLazPackage read FLCLBasePackage; property LCLPackage: TLazPackage read FLCLPackage; @@ -417,10 +466,13 @@ property LazarusBasePackages: TFPList read FLazarusBasePackages; property DefaultPackage: TLazPackage read FDefaultPackage;// fall back package for buggy/obsoleted stuff + // events property OnAddPackage: TPkgAddedEvent read FOnAddPackage write FOnAddPackage; property OnBeginUpdate: TNotifyEvent read FOnBeginUpdate write FOnBeginUpdate; property OnChangePackageName: TPkgChangeNameEvent read FOnChangePackageName write FOnChangePackageName; + property OnCheckInterPkgFiles: TOnCheckInterPkgFiles + read FOnCheckInterPkgFiles write FOnCheckInterPkgFiles; property OnDependencyModified: TDependencyModifiedEvent read FOnDependencyModified write FOnDependencyModified; property OnDeletePackage: TPkgDeleteEvent read FOnDeletePackage @@ -434,12 +486,12 @@ write FOnUninstallPackage; property OnBeforeCompilePackages: TOnBeforeCompilePackages read FOnBeforeCompilePackages write FOnBeforeCompilePackages; - property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number + + // set during calling Register procedures property RegistrationFile: TPkgFile read FRegistrationFile; property RegistrationPackage: TLazPackage read FRegistrationPackage write SetRegistrationPackage; property RegistrationUnitName: string read FRegistrationUnitName; - property UpdateLock: integer read FUpdateLock; end; var @@ -617,6 +669,93 @@ Result:=UTF8Trim(Result,[]); end; +{ TLazPackageGraphFileCache } + +constructor TLazPackageGraphFileCache.Create(AOwner: TLazPackageGraph); +begin + inherited Create; + + FGraph := AOwner; + SetLength(FPackageInfo, 0); + FFilesList := TFilenameToPointerTree.Create(true); + FRemovedFilesList := TFilenameToPointerTree.Create(true); +end; + +destructor TLazPackageGraphFileCache.Destroy; +begin + SetLength(FPackageInfo, 0); + FreeAndNil(FFilesList); + FreeAndNil(FRemovedFilesList); + + inherited Destroy; +end; + +function TLazPackageGraphFileCache.FindFileInAllPackages( + TheFilename: string; IgnoreDeleted, FindVirtualFile: boolean): TPkgFile; + + procedure FindFileInStrList(const Files: TFilenameToPointerTree); + begin + Result:=TPkgFile(Files[TheFilename]); + if (Result<>nil) and (not FindVirtualFile) + and (not FilenameIsAbsolute(Result.Filename)) then + Result := nil; + end; + +begin + Result:=nil; + + if NeedsUpdate then + Update; + + FindFileInStrList(FFilesList); + if Result<>nil then Exit; + if not IgnoreDeleted then + FindFileInStrList(FRemovedFilesList); +end; + +function TLazPackageGraphFileCache.NeedsUpdate: Boolean; +var + I: Integer; +begin + if FGraph.Count <> Length(FPackageInfo) then + Exit(True); + + for I := 0 to FGraph.Count-1 do + if (FPackageInfo[I].ChangeStamp <> FGraph[I].ChangeStamp) + or (FPackageInfo[I].FileName<>FGraph[I].Filename) + then + Exit(True); + + Result := False; +end; + +procedure TLazPackageGraphFileCache.Update; +var + I, L: Integer; + xPck: TLazPackage; +begin + SetLength(FPackageInfo, FGraph.Count); + FFilesList.Clear; + FRemovedFilesList.Clear; + for I := 0 to FGraph.Count-1 do + begin + xPck := FGraph[I]; + FPackageInfo[I].ChangeStamp := xPck.ChangeStamp; + FPackageInfo[I].FileName := xPck.Filename; + + for L := 0 to xPck.FileCount-1 do + begin + FFilesList[xPck.Files[L].GetFullFilename]:=xPck.Files[L]; + FFilesList[xPck.Files[L].Filename]:=xPck.Files[L]; + end; + for L := 0 to xPck.RemovedFilesCount-1 do + begin + FRemovedFilesList[xPck.RemovedFiles[L].GetFullFilename]:=xPck.RemovedFiles[L]; + FRemovedFilesList[xPck.RemovedFiles[L].Filename]:=xPck.RemovedFiles[L]; + end; + end; +end; + { TLazPkgGraphBuildItem } // inline @@ -690,6 +829,9 @@ i: Integer; Tool: TAbstractExternalTool; begin + {$IFDEF VerboseCheckInterPkgFiles} + debugln(['TLazPkgGraphBuildItem.Clear ',LazPackage.IDAsString]); + {$ENDIF} for i:=Count-1 downto 0 do begin Tool:=Tools[i]; if Tool.Data is TLazPkgGraphExtToolData then @@ -701,7 +843,7 @@ function TLazPkgGraphBuildItem.Add(Tool: TAbstractExternalTool): integer; begin - if Tool=nil then exit; + if Tool=nil then exit(-1); Tool.Reference(Self,'TLazPkgGraphBuildItem.Add'); if Tool.Data is TLazPkgGraphExtToolData then TLazPkgGraphExtToolData(Tool.Data).BuildItem:=Self; @@ -766,18 +908,23 @@ BeginUpdate(false); try AFilename:=PkgLink.GetEffectiveFilename; + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) Open dependency: trying "'+Dependency.PackageName+'" in '+dbgs(PkgLink.Origin)+' links: "'+PkgLink.GetEffectiveFilename+'" ...']); //debugln(['TLazPackageGraph.OpenDependencyWithPackageLink AFilename=',AFilename,' ',PkgLink.Origin=ploGlobal]); if not FileExistsUTF8(AFilename) then begin - DebugLn('invalid Package Link: file "'+AFilename+'" does not exist.'); + DebugLn('Note: (lazarus) Invalid Package Link: file "'+AFilename+'" does not exist.'); PkgLink.LPKFileDateValid:=false; exit(mrCancel); end; + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) Open dependency: package file found: "'+AFilename+'". Parsing lpk ...']); try PkgLink.LPKFileDate:=FileDateToDateTimeDef(FileAgeUTF8(AFilename)); PkgLink.LPKFileDateValid:=true; XMLConfig:=TXMLConfig.Create(nil); NewPackage:=TLazPackage.Create; NewPackage.Filename:=AFilename; + NewPackage.OnModifySilently := @PkgModify; Result:=LoadXMLConfigFromCodeBuffer(AFilename,XMLConfig, Code,[lbfUpdateFromDisk,lbfRevert],ShowAbort); if Result<>mrOk then exit; @@ -785,17 +932,21 @@ NewPackage.LPKSource:=Code; except on E: Exception do begin - DebugLn('unable to read file "'+AFilename+'" ',E.Message); - Result:=mrCancel; - exit; + DebugLn('Error: (lazarus) unable to read file "'+AFilename+'" ',E.Message); + exit(mrCancel); end; end; - if not NewPackage.MakeSense then begin - DebugLn('invalid Package file "'+AFilename+'".'); + if not NewPackage.IsMakingSense then begin + DebugLn('Error: (lazarus) invalid package file "'+AFilename+'".'); + exit(mrCancel); + end; + if SysUtils.CompareText(PkgLink.Name,NewPackage.Name)<>0 then begin + DebugLn('Error: (lazarus) package file "'+AFilename+'" and name "'+NewPackage.Name+'" mismatch.'); exit(mrCancel); end; - if SysUtils.CompareText(PkgLink.Name,NewPackage.Name)<>0 then exit; // ok + if pvPkgSearch in Verbosity then + debugln('Info: (lazarus) Open dependency ['+Dependency.PackageName+']: Success: "'+NewPackage.Filename+'"'); Result:=mrOk; Dependency.RequiredPackage:=NewPackage; Dependency.LoadPackageResult:=lprSuccess; @@ -827,7 +978,7 @@ if Assigned(IDEMessagesWindow) then IDEMessagesWindow.AddCustomMessage(TheUrgency,Msg,Filename) else - DebugLn(['TLazPackageGraph.AddMessage ',MessageLineUrgencyNames[TheUrgency],' Msg="',Msg,'" Filename="',Filename,'"']); + DebugLn([MessageLineUrgencyNames[TheUrgency],': (lazarus) ',Msg,' Filename="',Filename,'"']); end; function TLazPackageGraph.OutputDirectoryIsWritable(APackage: TLazPackage; @@ -847,7 +998,7 @@ [Directory, LineEnding, APackage.IDAsString]), mtError,[mbCancel]); end; - debugln(['TLazPackageGraph.OutputDirectoryIsWritable unable to create directory "',Directory,'"']); + debugln(['Error: (lazarus) unable to create package output directory "',Directory,'" of package "',APackage.IDAsString,'"']); exit; end; Result:=true; @@ -881,6 +1032,12 @@ GlobalMacroList.Add(TTransferMacro.Create('PkgIncPath','', lisPkgMacroPackageIncludeFilesSearchPathParameterIsPackageID, @MacroFunctionPkgIncPath,[])); + GlobalMacroList.Add(TTransferMacro.Create('PkgName','', + lisPkgMacroPackageNameParameterIsPackageID, + @MacroFunctionPkgName,[])); + GlobalMacroList.Add(TTransferMacro.Create('PkgOutDir','', + lisPkgMacroPackageOutputDirectoryParameterIsPackageID, + @MacroFunctionPkgOutDir,[])); end; end; @@ -899,6 +1056,7 @@ FreeAndNil(FLazarusBasePackages); FreeAndNil(FItems); FreeAndNil(FTree); + FreeAndNil(FFindFileCache); inherited Destroy; end; @@ -961,6 +1119,7 @@ inc(FUpdateLock); if FUpdateLock=1 then begin fChanged:=Change; + FLockedChangeStamp:=0; if Assigned(OnBeginUpdate) then OnBeginUpdate(Self); end else fChanged:=fChanged or Change; @@ -971,6 +1130,8 @@ if FUpdateLock<=0 then RaiseException('TLazPackageGraph.EndUpdate'); dec(FUpdateLock); if FUpdateLock=0 then begin + if FLockedChangeStamp>0 then + IncChangeStamp; if Assigned(OnEndUpdate) then OnEndUpdate(Self,fChanged); end; end; @@ -1032,6 +1193,23 @@ Result:=''; end; +function TLazPackageGraph.MacroFunctionPkgName(const s: string; + const Data: PtrInt; var Abort: boolean): string; +begin + Result := s; +end; + +function TLazPackageGraph.MacroFunctionPkgOutDir(const s: string; + const Data: PtrInt; var Abort: boolean): string; +var + APackage: TLazPackage; +begin + if GetPackageFromMacroParameter(s,APackage) then + Result:=APackage.GetOutputDirectory + else + Result:=''; +end; + function TLazPackageGraph.MacroFunctionCTPkgDir(Data: Pointer): boolean; var FuncData: PReadFunctionData; @@ -1085,6 +1263,17 @@ Result:=true; end; +function TLazPackageGraph.MacroFunctionCTPkgOutDir(Data: Pointer): boolean; +var + FuncData: PReadFunctionData; + APackage: TLazPackage; +begin + FuncData:=PReadFunctionData(Data); + Result:=GetPackageFromMacroParameter(FuncData^.Param,APackage); + if Result then + FuncData^.Result:=APackage.GetOutputDirectory; +end; + function TLazPackageGraph.GetPackageFromMacroParameter(const TheID: string; out APackage: TLazPackage): boolean; var @@ -1094,11 +1283,11 @@ if PkgID.StringToID(TheID) then begin APackage:=FindPackageWithIDMask(PkgID); if APackage=nil then begin - DebugLn('WARNING: TLazPackageGraph.GetPackageFromMacroParameter unknown package id "',TheID,'" PkgID.IDAsString="',PkgID.IDAsString,'"'); + DebugLn('Warning: (lazarus) unknown macro package id "',TheID,'"'); end; end else begin APackage:=nil; - DebugLn('WARNING: TLazPackageGraph.GetPackageFromMacroParameter invalid package id "',TheID,'"'); + DebugLn('Warning: (lazarus) invalid macro package id "',TheID,'"'); end; PkgID.Free; Result:=APackage<>nil; @@ -1273,6 +1462,7 @@ end; begin + if FirstDependency=nil then exit(nil); MarkAllPackagesAsNotVisited; Result:=Find(FirstDependency); end; @@ -1304,6 +1494,7 @@ end; begin + if FirstDependency=nil then exit(nil); MarkAllPackagesAsNotVisited; Result:=Find(FirstDependency); end; @@ -1336,6 +1527,7 @@ end; begin + if FirstDependency=nil then exit(nil); MarkAllPackagesAsNotVisited; Result:=Find(FirstDependency); end; @@ -1365,6 +1557,7 @@ end; begin + if FirstDependency=nil then exit(nil); MarkAllPackagesAsNotVisited; Result:=Find(FirstDependency); end; @@ -1447,17 +1640,11 @@ function TLazPackageGraph.FindFileInAllPackages(const TheFilename: string; IgnoreDeleted, FindVirtualFile: boolean): TPkgFile; -var - Cnt: Integer; - i: Integer; begin - Cnt:=Count; - for i:=0 to Cnt-1 do begin - Result:=Packages[i].FindPkgFile(TheFilename,IgnoreDeleted, - FindVirtualFile); - if Result<>nil then exit; - end; - Result:=nil; + if FFindFileCache=nil then + FFindFileCache := TLazPackageGraphFileCache.Create(Self); + + Result := FFindFileCache.FindFileInAllPackages(TheFilename, IgnoreDeleted, FindVirtualFile); end; procedure TLazPackageGraph.FindPossibleOwnersOfUnit(const TheFilename: string; @@ -1528,6 +1715,11 @@ end; end; +procedure TLazPackageGraph.PkgModify(Sender: TObject); +begin + IncChangeStamp; +end; + function TLazPackageGraph.DependencyExists(Dependency: TPkgDependency; Flags: TFindPackageFlags): boolean; begin @@ -1564,6 +1756,7 @@ begin BeginUpdate(true); Result:=TLazPackage.Create; + Result.OnModifySilently:=@PkgModify; Result.Name:=CreateUniquePkgName(Prefix,nil); AddPackage(Result); EndUpdate; @@ -1714,7 +1907,7 @@ // append message if Msg<>'' then ErrorMsg:=ErrorMsg+LineEnding+LineEnding+Msg; - debugln(['TLazPackageGraph.RegistrationError ',dbgstr(ErrorMsg)]); + debugln(['Error: (lazarus) register failed: ',dbgstr(ErrorMsg)]); if AbortRegistration or QuietRegistration then exit; @@ -1752,7 +1945,7 @@ if MsgResult<>mrOk then begin Data.ErrorMessage:='SavePackageCompiledState failed'; PkgCompileTool.ErrorMessage:=Data.ErrorMessage; - DebugLn(['TLazPackageGraph.OnExtToolBuildStopped SavePackageCompiledState failed: ',APackage.IDAsString]); + DebugLn(['Error: (lazarus) failed to write package .compiled file: ',APackage.IDAsString,' File=',aPackage.GetStateFilename]); exit; end; Data.ErrorMessage:=PkgCompileTool.ErrorMessage; @@ -1765,7 +1958,7 @@ if MsgResult<>mrOk then begin Data.ErrorMessage:='ConvertPackageRSTFiles failed'; PkgCompileTool.ErrorMessage:=Data.ErrorMessage; - DebugLn('TLazPackageGraph.CompilePackage ConvertPackageRSTFiles failed: ',APackage.IDAsString); + DebugLn('Error: (lazarus) failed to update .po files: ',APackage.IDAsString); IDEMessagesWindow.AddCustomMessage(mluError, Format(lisUpdatingPoFilesFailedForPackage, [APackage.IDAsString])); exit; @@ -1799,7 +1992,9 @@ AddRequiredDependency(SynEditPackage.CreateDependencyWithOwner(Result)); Modified:=false; + OnModifySilently:=@PkgModify; end; + IncChangeStamp; end; function TLazPackageGraph.GetCount: Integer; @@ -1906,6 +2101,8 @@ OldEditor: TBasePackageEditor; i: Integer; begin + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) replacing package "'+OldPackage.Filename+'" with "'+NewPackage.Filename+'"']); BeginUpdate(true); // save flags OldInstalled:=OldPackage.Installed; @@ -1980,7 +2177,7 @@ begin for i:=0 to PkgList.Count-1 do begin PackageName:=PkgList[i]; - if (PackageName='') or (not IsValidUnitName(PackageName)) then continue; + if not IsValidPkgName(PackageName) then continue; Dependency:=FindDependencyByNameInList(FirstAutoInstallDependency, pdlRequires,PackageName); //DebugLn('TLazPackageGraph.LoadAutoInstallPackages ',dbgs(Dependency),' ',PackageName); @@ -2560,8 +2757,8 @@ end; function TLazPackageGraph.FindAmbiguousUnits(APackage: TLazPackage; - FirstDependency: TPkgDependency; var File1, File2: TPkgFile; - var ConflictPkg: TLazPackage): boolean; + FirstDependency: TPkgDependency; out File1, File2: TPkgFile; out + ConflictPkg: TLazPackage): boolean; // check if two connected packages have units with the same name // Connected means here: a Package1 is directly required by a Package2 // or: a Package1 and a Package2 are directly required by a Package3 @@ -2805,7 +3002,8 @@ MarkNeededPackages; for i:=FItems.Count-1 downto 0 do if not (lpfNeeded in Packages[i].Flags) then begin - debugln(['TLazPackageGraph.CloseUnneededPackages Pkg=',Packages[i].Name]); + if ConsoleVerbosity>=0 then + debugln(['Hint: closing unneeded package "',Packages[i].Name,'"']); Delete(i); end; EndUpdate; @@ -2992,7 +3190,7 @@ except on E: EXMLReadError do begin // invalid XML - debugln(['TLazPackageGraph.LoadPackageCompiledState syntax error in ',StateFile,' => need clean build.']); + debugln(['Warning: (lazarus) package "',APackage.IDAsString,'": syntax error in ',StateFile,' => need clean build.']); stats^.Complete:=false; stats^.CompilerFilename:=''; stats^.StateFileName:=StateFile; @@ -3081,7 +3279,8 @@ continue; end; if FileAgeCached(Filename)>StateFileAge then begin - debugln(['TLazPackageGraph.CheckCompileNeedDueToFPCUnits global unit "',Filename,'" is newer than state file of ',ID]); + if ConsoleVerbosity>=-1 then + debugln(['Hint: (lazarus) global unit "',Filename,'" is newer than state file of package ',ID]); Note+='Global unit "'+Filename+'" is newer than state file of '+ID+':'+LineEnding +' Unit age='+FileAgeToStr(FileAgeCached(Filename))+LineEnding +' State file age='+FileAgeToStr(StateFileAge)+LineEnding; @@ -3143,13 +3342,12 @@ Result:=mrYes; o:=RequiredPackage.GetOutputDirType; if not RequiredPackage.LastCompile[o].StateFileLoaded then begin - DebugLn('TPkgManager.CheckCompileNeedDueToDependencies Missing state file for ',RequiredPackage.IDAsString,': ',RequiredPackage.GetStateFilename); + DebugLn('Hint: (lazarus) Missing state file for ',RequiredPackage.IDAsString,': ',RequiredPackage.GetStateFilename); Note+='Package '+RequiredPackage.IDAsString+' has no state file "'+RequiredPackage.GetStateFilename+'".'+LineEnding; exit; end; if StateFileAge<RequiredPackage.LastCompile[o].StateFileDate then begin - DebugLn('TPkgManager.CheckCompileNeedDueToDependencies ', - ' State file of ',RequiredPackage.IDAsString,' is newer than state file of ',GetOwnerID); + DebugLn('Hint: (lazarus) State file of ',RequiredPackage.IDAsString,' is newer than state file of ',GetOwnerID); Note+='State file of '+RequiredPackage.IDAsString+' is newer than state file of '+GetOwnerID+LineEnding +' '+RequiredPackage.IDAsString+'='+FileAgeToStr(RequiredPackage.LastCompile[o].StateFileDate)+LineEnding +' '+GetOwnerID+'='+FileAgeToStr(StateFileAge)+LineEnding; @@ -3164,8 +3362,7 @@ if FilenameIsAbsolute(OtherStateFile) and FileExistsCached(OtherStateFile) and (FileAgeCached(OtherStateFile)>StateFileAge) then begin - DebugLn('TPkgManager.CheckCompileNeedDueToDependencies ', - ' State file of ',RequiredPackage.IDAsString,' "',OtherStateFile,'" (', + DebugLn('Hint: (lazarus) State file of ',RequiredPackage.IDAsString,' "',OtherStateFile,'" (', FileAgeToStr(FileAgeCached(OtherStateFile)),')' ,' is newer than state file ',GetOwnerID,'(',FileAgeToStr(StateFileAge),')'); Note+='State file of used package is newer than state file:'+LineEnding @@ -3224,7 +3421,7 @@ // the normal output directory is writable => keep using it exit; end; - debugln(['TLazPackageGraph.CheckIfPackageNeedsCompilation normal output dir is not writable: ',OutputDir]); + debugln(['Hint: (lazarus) normal output directory of package ',APackage.IDAsString,' is not writable: "',OutputDir,'"']); // the normal output directory is not writable // => try the fallback directory NewOutputDir:=GetFallbackOutputDir(APackage); @@ -3260,7 +3457,7 @@ NeedBuildAllFlag,ConfigChanged,DependenciesChanged,Note); if DefResult=mrNo then begin // switching back to the not writable output directory requires no compile - debugln(['TLazPackageGraph.CheckIfPackageNeedsCompilation switching back to the normal output directory: ',APackage.GetOutputDirectory]); + debugln(['Hint: (lazarus) switching back to the normal output directory: "',APackage.GetOutputDirectory,'" Package ',APackage.IDAsString]); Note+='Switching back to not writable output directory.'+LineEnding; exit(mrNo); end; @@ -3320,7 +3517,7 @@ if Result<>mrOk then exit; // read error and user aborted if not Stats^.StateFileLoaded then begin // package was not compiled via Lazarus nor via Makefile/fpmake - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Missing state file for ',APackage.IDAsString,': ',StateFilename); + DebugLn('Hint: (lazarus) Missing state file of ',APackage.IDAsString,': ',StateFilename); Note+='Missing state file "'+StateFilename+'".'+LineEnding; NeedBuildAllFlag:=true; ConfigChanged:=true; @@ -3352,7 +3549,8 @@ LastParams:=APackage.GetLastCompilerParams(o); if Stats^.ViaMakefile then begin // the package was compiled via Makefile/fpmake - debugln(['TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Last=',LastParams]); + if ConsoleVerbosity>=1 then + debugln(['Hint: (lazarus) package ',APackage.IDAsString,' was compiled via "make" with parameters "',LastParams,'"']); CurPaths:=nil; LastPaths:=nil; @@ -3365,7 +3563,7 @@ OldValue:=LastPaths.Values['Reduced']; NewValue:=CurPaths.Values['Reduced']; if NewValue<>OldValue then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler custom params changed for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Compiler custom params changed for ',APackage.IDAsString); DebugLn(' Old="',OldValue,'"'); DebugLn(' Now="',NewValue,'"'); DebugLn(' State file="',Stats^.StateFileName,'"'); @@ -3380,7 +3578,7 @@ OldValue:=TrimSearchPath(LastPaths.Values['UnitPath'],APackage.Directory,true); NewValue:=TrimSearchPath(CurPaths.Values['UnitPath'],APackage.Directory,true); if NewValue<>OldValue then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler unit paths changed for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Compiler unit paths changed for ',APackage.IDAsString); DebugLn(' Old="',OldValue,'"'); DebugLn(' Now="',NewValue,'"'); DebugLn(' State file="',Stats^.StateFileName,'"'); @@ -3395,7 +3593,7 @@ OldValue:=TrimSearchPath(LastPaths.Values['IncPath'],APackage.Directory,true); NewValue:=TrimSearchPath(CurPaths.Values['IncPath'],APackage.Directory,true); if NewValue<>OldValue then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler include paths changed for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Compiler include paths changed for ',APackage.IDAsString); DebugLn(' Old="',OldValue,'"'); DebugLn(' Now="',NewValue,'"'); DebugLn(' State file="',Stats^.StateFileName,'"'); @@ -3415,7 +3613,7 @@ ReducedLastParams:=RemoveFPCVerbosityParams(LastParams); if ReducedParams<>ReducedLastParams then begin // package was compiled by Lazarus - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler params changed for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Compiler params changed for ',APackage.IDAsString); DebugLn(' Old="',dbgstr(ReducedLastParams),'"'); DebugLn(' Now="',dbgstr(ReducedParams),'"'); DebugLn(' State file="',Stats^.StateFileName,'"'); @@ -3429,7 +3627,7 @@ end; if (not Stats^.ViaMakefile) and (CompilerFilename<>Stats^.CompilerFilename) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler filename changed for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Compiler filename changed for ',APackage.IDAsString); DebugLn(' Old="',Stats^.CompilerFilename,'"'); DebugLn(' Now="',CompilerFilename,'"'); DebugLn(' State file="',Stats^.StateFileName,'"'); @@ -3440,7 +3638,7 @@ exit(mrYes); end; if not FileExistsCached(CompilerFilename) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler filename not found for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Compiler filename not found for ',APackage.IDAsString); DebugLn(' File="',CompilerFilename,'"'); DebugLn(' State file="',Stats^.StateFileName,'"'); Note+='Compiler file "'+CompilerFilename+'" not found.'+LineEnding @@ -3449,7 +3647,7 @@ end; if (not Stats^.ViaMakefile) and (FileAgeCached(CompilerFilename)<>Stats^.CompilerFileDate) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler file changed for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Compiler file changed for ',APackage.IDAsString); DebugLn(' File="',CompilerFilename,'"'); DebugLn(' State file="',Stats^.StateFileName,'"'); Note+='Compiler file "'+CompilerFilename+'" changed:'+LineEnding @@ -3463,12 +3661,12 @@ if (SrcFilename<>'') then begin if not FileExistsCached(SrcFilename) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile SrcFile missing of ',APackage.IDAsString,': ',SrcFilename); + DebugLn('Hint: (lazarus) source file missing of ',APackage.IDAsString,': ',SrcFilename); Note+='Source file "'+SrcFilename+'" missing.'+LineEnding; exit(mrYes); end; if StateFileAge<FileAgeCached(SrcFilename) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile SrcFile outdated of ',APackage.IDAsString,': ',SrcFilename); + DebugLn('Hint: (lazarus) source file outdated of ',APackage.IDAsString,': ',SrcFilename); Note+='Source file "'+SrcFilename+'" outdated:'+LineEnding +' Source file age='+FileAgeToStr(FileAgeCached(SrcFilename))+LineEnding +' State file="'+Stats^.StateFileName+'"'+LineEnding @@ -3479,7 +3677,7 @@ if Stats^.MainPPUExists then begin SrcPPUFile:=APackage.GetSrcPPUFilename; if not FileExistsCached(SrcPPUFile) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile main ppu file missing of ',APackage.IDAsString,': ',SrcPPUFile); + DebugLn('Hint: (lazarus) main ppu file missing of ',APackage.IDAsString,': ',SrcPPUFile); Note+='Main ppu file "'+SrcPPUFile+'" missing.'+LineEnding; exit(mrYes); end; @@ -3494,7 +3692,7 @@ NeedBuildAllFlag:=false; if not Stats^.Complete then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compile was incomplete for ',APackage.IDAsString); + DebugLn('Hint: (lazarus) Last compile was incomplete for ',APackage.IDAsString); DebugLn(' State file="',Stats^.StateFileName,'"'); Note+='Last compile was incomplete.'+LineEnding +' State file="'+Stats^.StateFileName+'"'+LineEnding; @@ -3514,7 +3712,7 @@ // check package files if StateFileAge<FileAgeCached(APackage.Filename) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile StateFile older than lpk ',APackage.IDAsString); + DebugLn('Hint: (lazarus) State file older than lpk ',APackage.IDAsString); DebugLn(' State file="',Stats^.StateFileName,'"'); Note+='State file older than lpk:'+LineEnding +' State file age='+FileAgeToStr(StateFileAge)+LineEnding @@ -3528,7 +3726,7 @@ AFilename:=CurFile.GetFullFilename; if FileExistsCached(AFilename) and (StateFileAge<FileAgeCached(AFilename)) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Src has changed ',APackage.IDAsString,' ',CurFile.Filename); + DebugLn('Hint: (lazarus) Source file has changed ',APackage.IDAsString,' ',CurFile.Filename); DebugLn(' State file="',Stats^.StateFileName,'"'); Note+='State file older than source "'+AFilename+'"'+LineEnding +' State file age='+FileAgeToStr(StateFileAge)+LineEnding @@ -3540,7 +3738,7 @@ LFMFilename:=ChangeFileExt(AFilename,'.lfm'); if FileExistsCached(LFMFilename) and (StateFileAge<FileAgeCached(LFMFilename)) then begin - DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile LFM has changed ',APackage.IDAsString,' ',LFMFilename); + DebugLn('Hint: (lazarus) LFM has changed ',APackage.IDAsString,' ',LFMFilename); DebugLn(' State file="',Stats^.StateFileName,'"'); Note+='State file older than resource "'+LFMFilename+'"'+LineEnding +' State file age='+FileAgeToStr(StateFileAge)+LineEnding @@ -3592,6 +3790,7 @@ Tool1: TAbstractExternalTool; Tool2: TAbstractExternalTool; ToolGroup: TExternalToolGroup; + FilesChanged: boolean; begin {$IFDEF VerbosePkgCompile} debugln('TLazPackageGraph.CompileRequiredPackages A MinPolicy=',dbgs(Policy),' SkipDesignTimePackages=',SkipDesignTimePackages); @@ -3626,22 +3825,32 @@ Include(Flags,pcfOnlyIfNeeded) else Include(Flags,pcfCleanCompile); - BuildItems:=TObjectList.Create(true); - for i:=0 to PkgList.Count-1 do begin - CurPkg:=TLazPackage(PkgList[i]); - BuildItem:=TLazPkgGraphBuildItem.Create(nil); - BuildItem.LazPackage:=CurPkg; - BuildItems.Add(BuildItem); - Result:=CompilePackage(CurPkg,Flags,false,BuildItem); - if Result<>mrOk then exit; + repeat + BuildItems:=TObjectList.Create(true); + for i:=0 to PkgList.Count-1 do begin + CurPkg:=TLazPackage(PkgList[i]); + BuildItem:=TLazPkgGraphBuildItem.Create(nil); + BuildItem.LazPackage:=CurPkg; + BuildItems.Add(BuildItem); + Result:=CompilePackage(CurPkg,Flags,false,BuildItem); + if Result<>mrOk then exit; - if (BuildItem<>nil) and (not (lpfNeedGroupCompile in CurPkg.Flags)) - then begin - // package is up-to-date - //debugln(['TLazPackageGraph.CompileRequiredPackages no build needed: pkg=',CurPkg.Name]); - BuildItems.Remove(BuildItem); + if (BuildItem<>nil) and (not (lpfNeedGroupCompile in CurPkg.Flags)) + then begin + // package is up-to-date + //debugln(['TLazPackageGraph.CompileRequiredPackages no build needed: pkg=',CurPkg.Name]); + BuildItems.Remove(BuildItem); + end; end; - end; + + if FirstDependency<>nil then + begin + if not OnCheckInterPkgFiles(FirstDependency.Owner,PkgList,FilesChanged) + then exit(mrCancel); + if FilesChanged then + FreeAndNil(BuildItems); + end; + until BuildItems<>nil; // add tool dependencies for i:=0 to BuildItems.Count-1 do begin @@ -3691,7 +3900,7 @@ ToolGroup.Execute; ToolGroup.WaitForExit; if ToolGroup.ErrorMessage<>'' then begin - debugln(['TLazPackageGraph.CompileRequiredPackages ERROR="',ToolGroup.ErrorMessage,'"']); + debugln(['Error: (lazarus) [TLazPackageGraph.CompileRequiredPackages] "',ToolGroup.ErrorMessage,'"']); exit(mrCancel); end; finally @@ -3750,7 +3959,7 @@ //DebugLn('TLazPackageGraph.CompilePackage A ',APackage.IDAsString,' Flags=',PkgCompileFlagsToString(Flags)); if APackage.IsVirtual then begin - DebugLn(['TLazPackageGraph.CompilePackage failed because virtual: ',APackage.Filename]); + DebugLn(['Error: (lazarus) compile failed because virtual: ',APackage.Filename]); exit; end; @@ -3765,7 +3974,7 @@ Result:=CompileRequiredPackages(APackage,nil, pcfSkipDesignTimePackages in Flags,CompilePolicy); if Result<>mrOk then begin - DebugLn(['TLazPackageGraph.CompilePackage CompileRequiredPackages failed: ',APackage.IDAsString]); + DebugLn(['Error: (lazarus) Compile required packages failed: ',APackage.IDAsString]); exit; end; end; @@ -3792,7 +4001,7 @@ exit; end; if Result<>mrYes then begin - DebugLn(['TLazPackageGraph.CompilePackage CheckIfPackageNeedsCompilation failed: ',APackage.IDAsString]); + DebugLn(['Error: (lazarus) [CheckIfPackageNeedsCompilation] failed: ',APackage.IDAsString]); exit; end; end; @@ -3809,21 +4018,21 @@ Result:=PreparePackageOutputDirectory(APackage,pcfCleanCompile in Flags); if Result<>mrOk then begin - DebugLn('TLazPackageGraph.CompilePackage PreparePackageOutputDirectory failed: ',APackage.IDAsString); + DebugLn('Error: (lazarus) [TLazPackageGraph.CompilePackage] PreparePackageOutputDirectory failed: ',APackage.IDAsString); exit; end; // create package main source file Result:=SavePackageMainSource(APackage,Flags,ShowAbort); if Result<>mrOk then begin - DebugLn('TLazPackageGraph.CompilePackage SavePackageMainSource failed: ',APackage.IDAsString); + DebugLn('Error: (lazarus) [TLazPackageGraph.CompilePackage] SavePackageMainSource failed: ',APackage.IDAsString); exit; end; // check ambiguous units Result:=CheckAmbiguousPackageUnits(APackage); if Result<>mrOk then begin - DebugLn('TLazPackageGraph.CompilePackage CheckAmbiguousPackageUnits failed: ',APackage.IDAsString); + DebugLn('Error: (lazarus) [TLazPackageGraph.CompilePackage} CheckAmbiguousPackageUnits failed: ',APackage.IDAsString); exit; end; @@ -3832,7 +4041,7 @@ or (APackage.CompilerOptions.CreateMakefileOnBuild)) then begin Result:=WriteMakeFile(APackage); if Result<>mrOk then begin - DebugLn('TLazPackageGraph.CompilePackage DoWriteMakefile failed: ',APackage.IDAsString); + DebugLn('Error: (lazarus) [TLazPackageGraph.CompilePackage] DoWriteMakefile failed: ',APackage.IDAsString); exit; end; end; @@ -3842,7 +4051,7 @@ or (APackage.CompilerOptions.CreateMakefileOnBuild)) then begin Result:=WriteFpmake(APackage); if Result<>mrOk then begin - DebugLn('TLazPackageGraph.CompilePackage DoWriteFpmakeFile failed: ',APackage.IDAsString); + DebugLn('Error: (lazarus) [TLazPackageGraph.CompilePackage] DoWriteFpmakeFile failed: ',APackage.IDAsString); exit; end; end; @@ -3861,7 +4070,7 @@ Result:=APackage.CompilerOptions.ExecuteBefore.Execute(WorkingDir, ToolTitle,Note); if Result<>mrOk then begin - DebugLn(['TLazPackageGraph.CompilePackage ExecuteBefore failed: ',APackage.IDAsString]); + DebugLn(['Error: (lazarus) [TLazPackageGraph.CompilePackage] ExecuteBefore failed: ',APackage.IDAsString]); exit; end; end; @@ -3884,7 +4093,7 @@ EffectiveCompilerParams:='-B'; end; - PkgCompileTool:=ExternalToolList.Add(Format(lisPkgMangCompilingPackage, [APackage.IDAsString])); + PkgCompileTool:=ExternalToolList.Add(Format(lisPkgMangCompilePackage, [APackage.IDAsString])); ExtToolData:=TLazPkgGraphExtToolData.Create(IDEToolCompilePackage, APackage.Name,APackage.Filename); PkgCompileTool.Data:=ExtToolData; @@ -3943,7 +4152,7 @@ Result:=APackage.CompilerOptions.ExecuteAfter.Execute(WorkingDir, ToolTitle,Note); if Result<>mrOk then begin - DebugLn(['TLazPackageGraph.CompilePackage ExecuteAfter failed: ',APackage.IDAsString]); + DebugLn(['Error: (lazarus) [TLazPackageGraph.CompilePackage] ExecuteAfter failed: ',APackage.IDAsString]); // Note: messages window already contains error message exit; end; @@ -3974,7 +4183,7 @@ Result:=ForceDirectoryInteractive(POOutputDirectory,[mbRetry,mbIgnore]); if Result<>mrOk then begin if Result=mrIgnore then Result:=mrOk; - DebugLn(['TLazPackageGraph.ConvertPackageRSTFiles unable to create directory ',POOutputDirectory]); + DebugLn(['Note: (lazarus) [TLazPackageGraph.ConvertPackageRSTFiles] unable to create directory ',POOutputDirectory]); exit; end; end; @@ -3982,13 +4191,13 @@ // find all .rst files in package output directory if not DirectoryIsWritableCached(POOutputDirectory) then begin // this package is read only - DebugLn(['TLazPackageGraph.ConvertPackageRSTFiles skipping read only directory '+POOutputDirectory]); + DebugLn(['Warning: (lazarus) [TLazPackageGraph.ConvertPackageRSTFiles] skipping read only directory '+POOutputDirectory]); exit(mrOK); end; PkgOutputDirectory:=AppendPathDelim(APackage.GetOutputDirectory); if not ConvertRSTFiles(PkgOutputDirectory,POOutputDirectory) then begin - DebugLn(['TLazPackageGraph.ConvertPackageRSTFiles FAILED: PkgOutputDirectory=',PkgOutputDirectory,' RSTOutputDirectory=',POOutputDirectory]); + DebugLn(['Error: (lazarus) [TLazPackageGraph.ConvertPackageRSTFiles] unable to update .po files PkgOutputDirectory=',PkgOutputDirectory,' RSTOutputDirectory=',POOutputDirectory]); exit(mrCancel); end; Result:=mrOK; @@ -4014,7 +4223,8 @@ // do no write the unit output directory // it is not needed because it is the location of the Makefile.compiled s:=s+' '+SwitchPathDelims(CreateRelativePath(APackage.GetSrcFilename,APackage.Directory),pdsUnix); - //debugln(['TLazPackageGraph.WriteMakefileCompiled IncPath="',IncPath,'" UnitPath="',UnitPath,'" Custom="',OtherOptions,'"']); + if ConsoleVerbosity>1 then + debugln(['Hint: (lazarus) writing Makefile.compiled IncPath="',IncPath,'" UnitPath="',UnitPath,'" Custom="',OtherOptions,'" Makefile.compiled="',TargetCompiledFile,'"']); XMLConfig.SetValue('Params/Value',s); if XMLConfig.Modified then begin InvalidateFileStateCache; @@ -4118,7 +4328,7 @@ // If the package directory is not writable, then the user does not want to // custom build // => silently skip - DebugLn(['TPkgManager.DoWriteMakefile Skipping, because package directory is not writable: ',APackage.Directory]); + DebugLn(['Error: (lazarus) Skipping writing Makefile, because package directory is not writable: ',APackage.Directory]); Result:=mrOk; exit; end; @@ -4165,13 +4375,15 @@ MainSrcFile:=CreateRelativePath(SrcFilename,APackage.Directory); CustomOptions:=ConvertLazarusOptionsToMakefileOptions(CustomOptions); OtherOptions:=ConvertLazarusOptionsToMakefileOptions(OtherOptions); - debugln(['TLazPackageGraph.WriteMakeFile Custom="',CustomOptions,'" Other="',OtherOptions,'"']); + if ConsoleVerbosity>0 then + debugln(['Hint: (lazarus) [TLazPackageGraph.WriteMakeFile] Custom="',CustomOptions,'" Other="',OtherOptions,'"']); if CustomOptions<>'' then if OtherOptions<>'' then OtherOptions:=OtherOptions+' '+CustomOptions else OtherOptions:=CustomOptions; - debugln(['TLazPackageGraph.WriteMakeFile Other="',OtherOptions,'"']); + if ConsoleVerbosity>0 then + debugln(['Hint: (lazarus) [TLazPackageGraph.WriteMakeFile] Other="',OtherOptions,'"']); // ---- Makefile.compiled ---------------------------------------------------- @@ -4222,6 +4434,7 @@ end; s:=s+' $(wildcard $(COMPILER_UNITTARGETDIR)/*.compiled) \'+e; s:=s+' $(wildcard *$(OEXT)) $(wildcard *$(PPUEXT)) $(wildcard *$(RSTEXT))'+e; + s:=s+''+e; s:=s+'[prerules]'+e; s:=s+'# LCL Platform'+e; s:=s+'ifndef LCL_PLATFORM'+e; @@ -4274,7 +4487,7 @@ // the package source is read only => ignore exit(mrOk); end; - debugln(['TLazPackageGraph.WriteMakeFile unable to create file '+MakefileFPCFilename]); + debugln(['Error: (lazarus) [TLazPackageGraph.WriteMakeFile] unable to create file '+MakefileFPCFilename]); exit(mrCancel); end; end; @@ -4392,7 +4605,7 @@ // If the package directory is not writable, then the user does not want to // custom build // => silently skip - DebugLn(['TPkgManager.DoWriteFpmake Skipping, because package directory is not writable: ',APackage.Directory]); + DebugLn(['Note: (lazarus) Skipping writing fpmake.pp, because package directory is not writable: ',APackage.Directory]); Result:=mrOk; exit; end; @@ -4409,10 +4622,12 @@ coptParsedPlatformIndependent,false); CustomOptions:=APackage.CompilerOptions.GetCustomOptions( coptParsedPlatformIndependent); - debugln('CustomOptions (orig): ',CustomOptions); + if ConsoleVerbosity>0 then + debugln('Hint: (lazarus) Writing fpmake.pp: CustomOptions (orig): ',CustomOptions); OtherOptions:=APackage.CompilerOptions.MakeOptionsString( [ccloDoNotAppendOutFileOption,ccloNoMacroParams]); - debugln('OtherOptions (orig): ',OtherOptions); + if ConsoleVerbosity>0 then + debugln('Hint: (lazarus) Writing fpmake.pp: OtherOptions (orig): ',OtherOptions); // write compiled file Result:=WriteMakefileCompiled(APackage,FPmakeCompiledFilename,UnitPath, @@ -4425,10 +4640,12 @@ // remove path delimiter at the end, or else it will fail on windows MainSrcFile:=CreateRelativePath(SrcFilename,APackage.Directory); CustomOptions:=ConvertLazarusOptionsToFpmakeOptions(CustomOptions); - debugln('CustomOptions (fpmake format): ',CustomOptions); + if ConsoleVerbosity>0 then + debugln('Hint: (lazarus) Writing fpmake.pp: CustomOptions (fpmake format): ',CustomOptions); OtherOptions:=ConvertLazarusOptionsToFpmakeOptions(OtherOptions); - debugln('OtherOptions (fpmake format): ',OtherOptions); + if ConsoleVerbosity>0 then + debugln('Hint: (lazarus) Writing fpmake.pp: OtherOptions (fpmake format): ',OtherOptions); e:=LineEnding; s:=''; @@ -4478,7 +4695,7 @@ s:=s+' T:=P.Targets.AddUnit('''+MainSrcFile+''');'+e; for i := 0 to APackage.FileCount-1 do - if (APackage.Files[i].FileType=pftUnit) and (pffAddToPkgUsesSection in APackage.Files[i].Flags) then + if (APackage.Files[i].FileType=pftUnit) then s:=s+' t.Dependencies.AddUnit('''+ExtractFileNameOnly(APackage.Files[i].Filename)+''');'+e; s:=s+''+e; @@ -4489,7 +4706,9 @@ if (pffAddToPkgUsesSection in APackage.Files[i].Flags) then s:=s+' T:=P.Targets.AddUnit('''+CreateRelativePath(APackage.Files[i].Filename,APackage.Directory)+''');'+e else - s:=s+' P.Sources.AddSrc('''+CreateRelativePath(APackage.Files[i].Filename,APackage.Directory)+''');'+e; + begin + s:=s+' P.Targets.AddImplicitUnit('''+CreateRelativePath(APackage.Files[i].Filename,APackage.Directory)+''');'+e; + end; end; s:=s+''+e; @@ -4517,7 +4736,7 @@ // the package source is read only => ignore exit(mrOk); end; - debugln(['TLazPackageGraph.WriteFpmake unable to create file '+FpmakeFPCFilename]); + debugln(['Error: (lazarus) unable to create fpmake.pp file '+FpmakeFPCFilename]); exit(mrCancel); end; end; @@ -4540,7 +4759,8 @@ end; exit; end; - debugln(['TLazPackageGraph.WriteFpmake wrote: ',FpmakeFPCFilename]); + if ConsoleVerbosity>0 then + debugln(['Hint: (lazarus) wrote fpmake.pp: ',FpmakeFPCFilename]); Result:=mrOk; end; @@ -4570,14 +4790,14 @@ // => use the fallback directory NewOutputDir:=GetFallbackOutputDir(APackage); if (NewOutputDir=OutputDir) or (NewOutputDir='') then begin - debugln(['TLazPackageGraph.PreparePackageOutputDirectory failed to create writable directory: ',OutputDir]); + debugln(['Error: (lazarus) [TLazPackageGraph.PreparePackageOutputDirectory] failed to create writable directory: ',OutputDir]); exit(mrCancel); end; APackage.CompilerOptions.ParsedOpts.OutputDirectoryOverride:=NewOutputDir; OutputDir:=APackage.GetOutputDirectory; if not OutputDirectoryIsWritable(APackage,OutputDir,true) then begin - debugln(['TLazPackageGraph.PreparePackageOutputDirectory failed to create writable directory: ',OutputDir]); + debugln(['Error: (lazarus) [TLazPackageGraph.PreparePackageOutputDirectory] failed to create writable directory: ',OutputDir]); Result:=mrCancel; end; DeleteAllFilesInOutputDir:=true; @@ -4627,7 +4847,7 @@ for i:=0 to CleanFiles.Count-1 do begin OutputFileName:=AppendPathDelim(OutputDir)+CleanFiles[i]; if ConsoleVerbosity>1 then - debugln(['clean up '+APackage.IDAsString+': '+OutputFileName]); + debugln(['Hint: (lazarus) cleaning up package output directory of '+APackage.IDAsString+': '+OutputFileName]); Result:=DeleteFileInteractive(OutputFileName,[mbIgnore,mbAbort]); if Result in [mrCancel,mrAbort] then exit; end; @@ -4642,12 +4862,12 @@ if not (CurFile.FileType in PkgFileUnitTypes) then continue; OutputFileName:=AppendPathDelim(OutputDir)+CurFile.Unit_Name+'.ppu'; if ConsoleVerbosity>1 then - debugln(['clean up '+APackage.IDAsString+': '+OutputFileName]); + debugln(['Hint: (lazarus) cleaning up package output directory of '+APackage.IDAsString+': '+OutputFileName]); Result:=DeleteFileInteractive(OutputFileName,[mbIgnore,mbAbort]); if Result in [mrCancel,mrAbort] then exit; OutputFileName:=ChangeFileExt(OutputFileName,'.o'); if ConsoleVerbosity>1 then - debugln(['clean up '+APackage.IDAsString+': '+OutputFileName]); + debugln(['Hint: (lazarus) cleaning up package output directory of '+APackage.IDAsString+': '+OutputFileName]); Result:=DeleteFileInteractive(OutputFileName,[mbIgnore,mbAbort]); if Result in [mrCancel,mrAbort] then exit; end; @@ -4673,7 +4893,8 @@ Dir:='$(FallbackOutputRoot)'+PathDelim+APackage.Name+PathDelim+Dir; GlobalMacroList.SubstituteStr(Dir); Dir:=TrimFilename(Dir); - debugln(['TLazPackageGraph.GetFallbackOutputDir ',APackage.Name,': ',Dir]); + if ConsoleVerbosity>=0 then + debugln(['Hint: (lazarus) Fallback output directory of ',APackage.Name,': ',Dir]); Result:=Dir; end; @@ -4786,7 +5007,7 @@ // delete ambiguous files Result:=DeleteAmbiguousFiles(SrcFilename); if Result=mrAbort then begin - DebugLn('TLazPackageGraph.SavePackageMainSource DoDeleteAmbiguousFiles failed'); + DebugLn('Error: (lazarus) [TLazPackageGraph.SavePackageMainSource} DoDeleteAmbiguousFiles failed'); exit; end; @@ -4897,13 +5118,13 @@ Result:=LoadCodeBuffer(CodeBuffer,SrcFilename,[lbfQuiet,lbfCheckIfText, lbfUpdateFromDisk,lbfCreateClearOnError],ShowAbort); if Result<>mrOk then begin - DebugLn('TLazPackageGraph.SavePackageMainSource LoadCodeBuffer ',SrcFilename,' failed'); + DebugLn('Error: (lazarus) [TLazPackageGraph.SavePackageMainSource] LoadCodeBuffer ',SrcFilename,' failed'); exit; end; // ignore comments - OldShortenSrc:=CodeToolBoss.ExtractCodeWithoutComments(CodeBuffer); + OldShortenSrc:=CodeToolBoss.ExtractCodeWithoutComments(CodeBuffer,true); NewShortenSrc:=CleanCodeFromComments(Src, - CodeToolBoss.GetNestedCommentsFlagForFile(CodeBuffer.Filename)); + CodeToolBoss.GetNestedCommentsFlagForFile(CodeBuffer.Filename),true); // ignore case and spaces if CompareTextIgnoringSpace(OldShortenSrc,NewShortenSrc,false)=0 then begin Result:=mrOk; @@ -4918,7 +5139,7 @@ // save source Result:=SaveStringToFile(SrcFilename,Src,[],lisPkgMangpackageMainSourceFile); if Result<>mrOk then begin - DebugLn('TLazPackageGraph.SavePackageMainSource SaveStringToFile ',SrcFilename,' failed'); + DebugLn('Error: (lazarus) [TLazPackageGraph.SavePackageMainSource] SaveStringToFile ',SrcFilename,' failed'); exit; end; @@ -4991,6 +5212,16 @@ end; end; +procedure TLazPackageGraph.IncChangeStamp; +begin + {$push}{$R-} // range check off + if FUpdateLock = 0 then + Inc(FChangeStamp) + else + Inc(FLockedChangeStamp) + {$pop} +end; + procedure TLazPackageGraph.SortDependencyListTopologicallyOld( var FirstDependency: TPkgDependency; TopLevelFirst: boolean); // Sort dependency list topologically. @@ -5143,8 +5374,10 @@ // register custom IDE components RegistrationPackage:=DefaultPackage; + {$IFDEF CustomIDEComps} if IDEComponentPalette<>nil then IDEComponentPalette.RegisterCustomIDEComponents(@RegisterCustomIDEComponent); + {$ENDIF} if DefaultPackage.FileCount=0 then begin FreeThenNil(FDefaultPackage); end else begin @@ -5283,6 +5516,8 @@ i: Integer; begin if Dependency.LoadPackageResult=lprUndefined then begin + if pvPkgSearch in Verbosity then + debugln('Info: (lazarus) Open dependency '+Dependency.AsString(true,true)+' ...'); //debugln(['TLazPackageGraph.OpenDependency ',Dependency.PackageName,' ',Dependency.DefaultFilename,' Prefer=',Dependency.PreferDefaultFilename]); BeginUpdate(false); // search compatible package in opened packages @@ -5292,6 +5527,8 @@ APackage:=TLazPackage(ANode.Data); Dependency.RequiredPackage:=APackage; Dependency.LoadPackageResult:=lprSuccess; + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) Open dependency ['+Dependency.PackageName+']: Success: was already loaded']); end; // load preferred package if (Dependency.DefaultFilename<>'') and Dependency.PreferDefaultFilename @@ -5303,6 +5540,8 @@ or ((Dependency.RequiredPackage.FindUsedByDepPrefer(Dependency)=nil) and (CompareFilenames(PreferredFilename,Dependency.RequiredPackage.Filename)<>0))) then begin + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) Open dependency ['+Dependency.PackageName+']: trying resolved preferred filename: "'+PreferredFilename+'" ...']); OpenFile(PreferredFilename); end; end; @@ -5340,6 +5579,8 @@ and (Dependency.DefaultFilename<>'') then begin AFilename:=Dependency.FindDefaultFilename; if AFilename<>'' then begin + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) Open dependency ['+Dependency.PackageName+']: trying resolved default filename: "'+PreferredFilename+'" ...']); OpenFile(AFilename); end; end; @@ -5348,6 +5589,8 @@ if Dependency.LoadPackageResult=lprNotFound then begin CurDir:=GetDependencyOwnerDirectory(Dependency); if (CurDir<>'') then begin + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) Open dependency ['+Dependency.PackageName+']: trying in owner directory "'+AppendPathDelim(CurDir)+'" ...']); AFilename:=FindDiskFileCaseInsensitive( AppendPathDelim(CurDir)+Dependency.PackageName+'.lpk'); if FileExistsCached(AFilename) then begin @@ -5363,32 +5606,33 @@ if APackage.ProvidesPackage(Dependency.PackageName) then begin Dependency.RequiredPackage:=APackage; Dependency.LoadPackageResult:=lprSuccess; + if pvPkgSearch in Verbosity then + debugln(['Info: (lazarus) Open dependency ['+Dependency.PackageName+']: Success. Package "'+APackage.IDAsString+'" provides '+Dependency.AsString]); + break; end; end; end; end else begin // there is already a package with this name, but wrong version open // -> unable to load this dependency due to conflict - debugln('TLazPackageGraph.OpenDependency:'); + debugln('Error: (lazarus) Open dependency found incompatible package: searched for '+Dependency.AsString(true)+', but found '+APackage.IDAsString); if IsStaticBasePackage(APackage.Name) then begin - debugln([' LazarusDir="',EnvironmentOptions.GetParsedLazarusDirectory,'"']); + debugln(['Note: (lazarus) LazarusDir="',EnvironmentOptions.GetParsedLazarusDirectory,'"']); // wrong base package if (EnvironmentOptions.LazarusDirectory='') or (not DirPathExistsCached(EnvironmentOptions.GetParsedLazarusDirectory)) then begin // the lazarus directory is not set - debugln([' The Lazarus directory is not set. Pass parameter --lazarusdir.']); + debugln(['Note: (lazarus) The Lazarus directory is not set. Pass parameter --lazarusdir.']); end else if not DirPathExistsCached(PkgLinks.GetGlobalLinkDirectory) then begin - debugln([' The lpl directory is missing. Check that the Lazarus (--lazarusdir) directory is correct.']); + debugln(['Note: (lazarus) The lpl directory is missing. Check that the Lazarus (--lazarusdir) directory is correct.']); end; end; if APackage.Missing then begin - debugln([' The lpk (',APackage.Filename,') is missing for dependency=',Dependency.AsString]) - end else begin - debugln([' Another package with wrong version is already open: Dependency=',Dependency.AsString,' Pkg=',APackage.IDAsString]) + debugln(['Note: (lazarus) The lpk (',APackage.Filename,') is missing for dependency=',Dependency.AsString]) end; Dependency.LoadPackageResult:=lprLoadError; end; @@ -5435,7 +5679,7 @@ end; except on E: Exception do begin - debugln(['ParseLPK "'+LPKFilename+'": '+E.Message]); + debugln(['Error: (lazarus) error reading "'+LPKFilename+'": '+E.Message]); end; end; end; @@ -5501,7 +5745,7 @@ // nothing found via dependencies // search in links - PkgLink:=PkgLinks.FindLinkWithPkgName(APackage.Name,IgnoreFiles,true); + PkgLink:=PkgLinks.FindLinkWithPkgName(APackage.Name,IgnoreFiles); if PkgLink<>nil then begin Result:=PkgLink.GetEffectiveFilename; exit; @@ -5550,6 +5794,7 @@ UsageOptions.UnitPath:=''; Modified:=false; + OnModifySilently:=@PkgModify; EndUpdate; end; AddPackage(BrokenPackage); diff -Nru lazarus-1.4.4+dfsg/packager/pkggraphexplorer.lfm lazarus-1.6+dfsg/packager/pkggraphexplorer.lfm --- lazarus-1.4.4+dfsg/packager/pkggraphexplorer.lfm 2014-10-14 18:35:44.000000000 +0000 +++ lazarus-1.6+dfsg/packager/pkggraphexplorer.lfm 2015-09-18 22:47:54.000000000 +0000 @@ -1,52 +1,53 @@ object PkgGraphExplorerDlg: TPkgGraphExplorerDlg Left = 369 - Height = 441 + Height = 514 Top = 239 - Width = 567 + Width = 675 Caption = 'PkgGraphExplorerDlg' - ClientHeight = 441 - ClientWidth = 567 + ClientHeight = 514 + ClientWidth = 675 KeyPreview = True + OnCreate = FormCreate OnShow = PkgGraphExplorerShow - Position = poScreenCenter - LCLVersion = '1.3' + LCLVersion = '1.5' object InfoMemo: TMemo Left = 0 Height = 144 - Top = 297 - Width = 567 + Top = 329 + Width = 675 Align = alBottom Lines.Strings = ( 'InfoMemo' ) OnKeyDown = InfoMemoKeyDown ReadOnly = True - TabOrder = 0 + TabOrder = 1 end object VerticalSplitter: TSplitter Cursor = crVSplit Left = 0 Height = 5 - Top = 292 - Width = 567 + Top = 324 + Width = 675 Align = alBottom ResizeAnchor = akBottom end object Panel1: TPanel Left = 0 - Height = 292 + Height = 324 Top = 0 - Width = 567 + Width = 675 Align = alClient + BevelOuter = bvNone Caption = 'Panel1' - ClientHeight = 292 - ClientWidth = 567 - TabOrder = 2 + ClientHeight = 324 + ClientWidth = 675 + TabOrder = 0 object LvlGraphControl1: TLvlGraphControl - Left = 200 - Height = 290 - Top = 1 - Width = 366 + Left = 199 + Height = 324 + Top = 0 + Width = 476 Align = alClient NodeStyle.Shape = lgnsNone NodeStyle.GapTop = 2 @@ -58,31 +59,49 @@ ParentColor = True ParentShowHint = False PopupMenu = PkgPopupMenu - TabOrder = 0 + TabOrder = 2 TabStop = False end object PkgTreeView: TTreeView - Left = 1 - Height = 290 - Top = 1 + Left = 0 + Height = 324 + Top = 0 Width = 194 Align = alLeft - DefaultItemHeight = 18 PopupMenu = PkgPopupMenu ReadOnly = True - TabOrder = 1 + TabOrder = 0 OnDblClick = PkgTreeViewDblClick OnExpanding = PkgTreeViewExpanding OnSelectionChanged = PkgTreeViewSelectionChanged Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] end object Splitter1: TSplitter - Left = 195 - Height = 290 - Top = 1 + Left = 194 + Height = 324 + Top = 0 Width = 5 end end + object ButtonPanel1: TButtonPanel + Left = 6 + Height = 29 + Top = 479 + Width = 663 + OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True + OKButton.OnClick = OKButtonClick + HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True + HelpButton.OnClick = HelpButtonClick + CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True + CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True + TabOrder = 3 + ShowButtons = [pbOK, pbHelp] + ShowBevel = False + end object PkgPopupMenu: TPopupMenu OnPopup = PkgPopupMenuPopup left = 32 diff -Nru lazarus-1.4.4+dfsg/packager/pkggraphexplorer.pas lazarus-1.6+dfsg/packager/pkggraphexplorer.pas --- lazarus-1.4.4+dfsg/packager/pkggraphexplorer.pas 2014-08-01 12:38:12.000000000 +0000 +++ lazarus-1.6+dfsg/packager/pkggraphexplorer.pas 2015-09-18 22:47:54.000000000 +0000 @@ -37,9 +37,9 @@ interface uses - Classes, SysUtils, Math, LCLProc, Forms, Controls, Buttons, ComCtrls, - StdCtrls, Menus, Dialogs, Graphics, FileCtrl, LCLType, ExtCtrls, - AVL_Tree, contnrs, + Classes, SysUtils, LCLProc, Forms, Controls, Buttons, ComCtrls, + StdCtrls, Menus, Dialogs, Graphics, LCLType, ExtCtrls, ButtonPanel, + AVL_Tree, contnrs, LCLIntf, IDECommands, PackageIntf, IDEImagesIntf, LazIDEIntf, LvlGraphCtrl, LazConf, LazarusIDEStrConsts, IDEProcs, IDEOptionDefs, EnvironmentOpts, @@ -55,6 +55,7 @@ { TPkgGraphExplorerDlg } TPkgGraphExplorerDlg = class(TForm) + ButtonPanel1: TButtonPanel; CleanPkgDepsMenuItem: TMenuItem; PkgTreeView: TTreeView; InfoMemo: TMemo; @@ -65,12 +66,15 @@ VerticalSplitter: TSplitter; UninstallMenuItem: TMenuItem; procedure CleanPkgDepsMenuItemClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure HelpButtonClick(Sender: TObject); procedure LvlGraphControl1DblClick(Sender: TObject); procedure LvlGraphControl1SelectionChanged(Sender: TObject); + procedure OKButtonClick(Sender: TObject); procedure PkgGraphExplorerShow(Sender: TObject); procedure PkgPopupMenuPopup(Sender: TObject); procedure InfoMemoKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); + {%H-}Shift: TShiftState); procedure PkgTreeViewDblClick(Sender: TObject); procedure PkgTreeViewExpanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean); @@ -108,9 +112,9 @@ procedure UpdateTree; procedure UpdateLvlGraph; procedure UpdateInfo; - procedure UpdatePackageName(Pkg: TLazPackage; const OldName: string); - procedure UpdatePackageID(Pkg: TLazPackage); - procedure UpdatePackageAdded(Pkg: TLazPackage); + procedure UpdatePackageName({%H-}Pkg: TLazPackage; const {%H-}OldName: string); + procedure UpdatePackageID({%H-}Pkg: TLazPackage); + procedure UpdatePackageAdded({%H-}Pkg: TLazPackage); procedure SelectPackage(Pkg: TLazPackage); function FindLvlGraphNodeWithText(const s: string): TLvlGraphNode; procedure ShowPath(PathList: TFPList); @@ -201,6 +205,16 @@ end; end; +procedure TPkgGraphExplorerDlg.FormCreate(Sender: TObject); +begin + ButtonPanel1.OKButton.Caption:= lisClose; +end; + +procedure TPkgGraphExplorerDlg.HelpButtonClick(Sender: TObject); +begin + OpenUrl('http://wiki.freepascal.org/IDE_Window:_Package_Graph'); +end; + procedure TPkgGraphExplorerDlg.LvlGraphControl1SelectionChanged(Sender: TObject ); var @@ -219,6 +233,11 @@ UpdateInfo; end; +procedure TPkgGraphExplorerDlg.OKButtonClick(Sender: TObject); +begin + Close; +end; + procedure TPkgGraphExplorerDlg.PkgPopupMenuPopup(Sender: TObject); var Pkg: TLazPackage; diff -Nru lazarus-1.4.4+dfsg/packager/pkglinksdlg.lfm lazarus-1.6+dfsg/packager/pkglinksdlg.lfm --- lazarus-1.4.4+dfsg/packager/pkglinksdlg.lfm 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/pkglinksdlg.lfm 2015-05-26 11:09:06.000000000 +0000 @@ -1,37 +1,38 @@ object PackageLinksDialog: TPackageLinksDialog Left = 290 - Height = 451 - Top = 189 + Height = 448 + Top = 192 Width = 659 Caption = 'PackageLinksDialog' - ClientHeight = 451 + ClientHeight = 448 ClientWidth = 659 OnCreate = FormCreate OnDestroy = FormDestroy Position = poScreenCenter LCLVersion = '1.5' object ScopeGroupBox: TGroupBox - Left = 0 - Height = 120 - Top = 0 - Width = 659 + Left = 6 + Height = 130 + Top = 6 + Width = 647 Align = alTop AutoSize = True + BorderSpacing.Around = 6 Caption = 'ScopeGroupBox' ChildSizing.LeftRightSpacing = 6 ChildSizing.TopBottomSpacing = 6 ChildSizing.HorizontalSpacing = 6 ChildSizing.VerticalSpacing = 6 - ClientHeight = 102 - ClientWidth = 655 + ClientHeight = 110 + ClientWidth = 643 TabOrder = 0 object ShowGlobalLinksCheckBox: TCheckBox AnchorSideLeft.Control = ScopeGroupBox AnchorSideTop.Control = ScopeGroupBox Left = 6 - Height = 17 + Height = 19 Top = 6 - Width = 143 + Width = 162 Caption = 'ShowGlobalLinksCheckBox' Checked = True OnChange = ShowGlobalLinksCheckBoxChange @@ -43,9 +44,9 @@ AnchorSideTop.Control = ShowGlobalLinksCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 17 - Top = 29 - Width = 136 + Height = 19 + Top = 31 + Width = 151 Caption = 'ShowUserLinksCheckBox' Checked = True OnChange = ShowUserLinksCheckBoxChange @@ -57,9 +58,9 @@ AnchorSideTop.Control = ShowUserLinksCheckBox AnchorSideTop.Side = asrBottom Left = 6 - Height = 17 - Top = 52 - Width = 120 + Height = 19 + Top = 56 + Width = 136 Caption = 'LPKFileValidCheckBox' Checked = True OnChange = LPKFileValidCheckBoxChange @@ -71,10 +72,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = LPKFileValidCheckBox AnchorSideTop.Side = asrCenter - Left = 141 - Height = 17 - Top = 52 - Width = 130 + Left = 157 + Height = 19 + Top = 56 + Width = 145 BorderSpacing.Left = 15 Caption = 'LPKFileInvalidCheckBox' Checked = True @@ -89,25 +90,23 @@ AnchorSideRight.Control = ScopeGroupBox AnchorSideRight.Side = asrBottom Left = 6 - Height = 21 - Top = 75 - Width = 643 + Height = 23 + Top = 81 + Width = 631 Anchors = [akTop, akLeft, akRight] OnChange = FilterEditChange - OnEnter = FilterEditEnter - OnExit = FilterEditExit TabOrder = 4 - Text = 'FilterEdit' end end object PkgStringGrid: TStringGrid AnchorSideBottom.Control = BtnPanel - Left = 0 - Height = 291 - Top = 120 - Width = 659 + Left = 6 + Height = 262 + Top = 142 + Width = 647 Align = alTop Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Around = 6 ColCount = 7 ColumnClickSorts = True Columns = < @@ -139,18 +138,19 @@ Title.Caption = 'Last Opened' end> FixedCols = 0 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goTabs, goColSpanning, goDblClickAutoSize, goSmoothScroll] + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goTabs, goThumbTracking, goColSpanning, goDblClickAutoSize, goSmoothScroll] PopupMenu = GridPopupMenu TabOrder = 1 end object BtnPanel: TPanel Left = 0 - Height = 40 - Top = 411 + Height = 38 + Top = 410 Width = 659 Align = alBottom AutoSize = True - ClientHeight = 40 + BevelOuter = bvNone + ClientHeight = 38 ClientWidth = 659 TabOrder = 2 object CloseBitBtn: TBitBtn @@ -159,10 +159,10 @@ AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = BtnPanel AnchorSideBottom.Side = asrBottom - Left = 580 + Left = 578 Height = 26 - Top = 7 - Width = 72 + Top = 6 + Width = 75 Anchors = [akRight, akBottom] AutoSize = True BorderSpacing.Around = 6 @@ -178,10 +178,10 @@ AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = CloseBitBtn AnchorSideTop.Side = asrCenter - Left = 143 - Height = 23 - Top = 9 - Width = 145 + Left = 151 + Height = 25 + Top = 7 + Width = 161 AutoSize = True BorderSpacing.Around = 6 Caption = 'UpdateGlobalLinksButton' @@ -192,10 +192,10 @@ AnchorSideLeft.Control = BtnPanel AnchorSideTop.Control = CloseBitBtn AnchorSideTop.Side = asrCenter - Left = 7 - Height = 23 - Top = 9 - Width = 130 + Left = 6 + Height = 25 + Top = 7 + Width = 139 AutoSize = True BorderSpacing.Around = 6 Caption = 'DeleteSelectedButton' @@ -204,11 +204,12 @@ end end object ProgressBar1: TProgressBar - Left = 0 + Left = 6 Height = 20 - Top = 391 - Width = 659 + Top = 387 + Width = 647 Align = alBottom + BorderSpacing.Around = 6 TabOrder = 3 end object LPKParsingTimer: TTimer diff -Nru lazarus-1.4.4+dfsg/packager/pkglinksdlg.pas lazarus-1.6+dfsg/packager/pkglinksdlg.pas --- lazarus-1.4.4+dfsg/packager/pkglinksdlg.pas 2015-05-07 23:42:00.000000000 +0000 +++ lazarus-1.6+dfsg/packager/pkglinksdlg.pas 2015-11-11 01:19:54.000000000 +0000 @@ -37,10 +37,10 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, + Classes, SysUtils, Forms, Controls, StdCtrls, Buttons, Grids, ExtCtrls, ComCtrls, Menus, AvgLvlTree, LazUTF8, - FileProcs, PackageIntf, - LazarusIDEStrConsts, PackageDefs, PackageLinks, LPKCache; + FileProcs, LazFileUtils, LazFileCache, PackageIntf, + LazarusIDEStrConsts, PackageLinks, LPKCache; type @@ -84,8 +84,6 @@ procedure CopyCellToClipboardMenuItemClick(Sender: TObject); procedure DeleteSelectedButtonClick(Sender: TObject); procedure FilterEditChange(Sender: TObject); - procedure FilterEditEnter(Sender: TObject); - procedure FilterEditExit(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure LPKFileValidCheckBoxChange(Sender: TObject); @@ -145,7 +143,7 @@ DeleteSelectedButton.Caption:=lrsPLDDeleteSelected; UpdateGlobalLinksButton.Caption:=lrsRescanLplFiles; CloseBitBtn.Caption:=lisClose; - FilterEdit.Text:=lisCEFilter; + FilterEdit.TextHint:=lisCEFilter; ProgressBar1.Style:=pbstMarquee; ProgressBar1.Visible:=true; @@ -194,18 +192,6 @@ PkgLinks.SaveUserLinks; end; -procedure TPackageLinksDialog.FilterEditEnter(Sender: TObject); -begin - if FilterEdit.Text=lisCEFilter then - FilterEdit.Text:=''; -end; - -procedure TPackageLinksDialog.FilterEditExit(Sender: TObject); -begin - if FilterEdit.Text='' then - FilterEdit.Text:=lisCEFilter; -end; - procedure TPackageLinksDialog.FormDestroy(Sender: TObject); begin LPKInfoCache.EndLPKReader; @@ -306,7 +292,6 @@ FCountUserLinks:=0; Node:=FLinks.FindLowest; FilterCase:=FilterEdit.Text; - if FilterCase=lisCEFilter then FilterCase:=''; FilterLo:=UTF8LowerCase(FilterCase); while Node<>nil do begin Link:=TPkgLinkInfo(Node.Data); @@ -389,7 +374,11 @@ s:=lrsPLDInvalid; PkgStringGrid.Cells[4,i]:=s; PkgStringGrid.Cells[5,i]:=Link.EffectiveFilename; - PkgStringGrid.Cells[6,i]:=DateTimeToStr(Link.LastUsed); + + if Link.LastUsed=0 then + PkgStringGrid.Cells[6,i]:= lisNever + else + PkgStringGrid.Cells[6,i]:= DateTimeToStr(Link.LastUsed); inc(i); end; @@ -416,7 +405,6 @@ procedure TPackageLinksDialog.RescanGlobalLinks; begin - PkgLinks.ClearGlobalLinks; PkgLinks.UpdateGlobalLinks; end; @@ -495,9 +483,6 @@ LPKFilename:=Link.LPKFilename; LPLFilename:=Link.LPLFilename; AutoCheckExists:=Link.AutoCheckExists; - NotFoundCount:=Link.NotFoundCount; - LastCheckValid:=Link.LastCheckValid; - LastCheck:=Link.LastCheck; LPKFileDateValid:=Link.LPKFileDateValid; LPKFileDate:=Link.LPKFileDate; LastUsed:=Link.LastUsed; diff -Nru lazarus-1.4.4+dfsg/packager/pkgmanager.pas lazarus-1.6+dfsg/packager/pkgmanager.pas --- lazarus-1.4.4+dfsg/packager/pkgmanager.pas 2015-05-01 10:39:09.000000000 +0000 +++ lazarus-1.6+dfsg/packager/pkgmanager.pas 2015-12-21 22:44:50.000000000 +0000 @@ -46,7 +46,7 @@ MemCheck, {$ENDIF} // FCL, LCL - TypInfo, math, Classes, SysUtils, LCLProc, Forms, Controls, Dialogs, Menus, + TypInfo, math, Classes, SysUtils, LCLProc, LazUTF8, Forms, Controls, Dialogs, Menus, contnrs, StringHashList, Translations, LResources, ComCtrls, // codetools CodeToolsConfig, CodeToolManager, CodeCache, CodeToolsStructs, BasicCodeTools, @@ -63,9 +63,9 @@ PackageDefs, PackageLinks, PackageSystem, OpenInstalledPkgDlg, PkgGraphExplorer, BrokenDependenciesDlg, CompilerOptions, IDETranslations, TransferMacros, BuildLazDialog, NewDialog, FindInFilesDlg, - IDEDialogs, UnitResources, ProjectInspector, ComponentPalette, SourceEditor, + IDEDialogs, UnitResources, ProjectInspector, SourceEditor, AddFileToAPackageDlg, LazarusPackageIntf, PublishProjectDlg, PkgLinksDlg, - InstallPkgSetDlg, ConfirmPkgListDlg, NewPkgComponentDlg, + InterPkgConflictFiles, InstallPkgSetDlg, ConfirmPkgListDlg, NewPkgComponentDlg, // bosses BaseBuildManager, BasePkgManager, MainBar, MainIntf, MainBase, ModeMatrixOpts; @@ -88,7 +88,7 @@ function OnPackageEditorCreateFpmakeFile(Sender: TObject; APackage: TLazPackage): TModalResult; function OnPackageEditorDeleteAmbiguousFiles(Sender: TObject; - APackage: TLazPackage; const Filename: string): TModalResult; + {%H-}APackage: TLazPackage; const Filename: string): TModalResult; procedure OnPackageEditorDragDropTreeView(Sender, Source: TObject; X, Y: Integer); function OnPackageEditorDragOverTreeView(Sender, Source: TObject; @@ -114,8 +114,10 @@ procedure OnBeforeReadPackage(Sender: TObject); procedure OnPackageEditorFreeEditor(APackage: TLazPackage); procedure OnPackageEditorGetUnitRegisterInfo(Sender: TObject; - const AFilename: string; var TheUnitName: string; - var HasRegisterProc: boolean); + const AFilename: string; out TheUnitName: string; + out HasRegisterProc: boolean); + function PackageGraphCheckInterPkgFiles(IDEObject: TObject; + PkgList: TFPList; out FilesChanged: boolean): boolean; // package graph function PackageGraphExplorerOpenPackage(Sender: TObject; @@ -143,13 +145,11 @@ procedure MainIDEitmPkgOpenPackageOfCurUnitClicked(Sender: TObject); procedure MainIDEitmConfigCustomCompsClicked(Sender: TObject); procedure MainIDEitmOpenRecentPackageClicked(Sender: TObject); - procedure MainIDEitmPkgOpenPackageClicked(Sender: TObject); + procedure MainIDEitmPkgOpenLoadedPackageClicked(Sender: TObject); procedure MainIDEitmPkgNewPackageClick(Sender: TObject); procedure MainIDEitmPackageLinksClicked(Sender: TObject); // component palette - procedure IDEComponentPaletteEndUpdate(Sender: TObject; - PaletteChanged: boolean); procedure IDEComponentPaletteOpenPackage(Sender: TObject); procedure IDEComponentPaletteOpenUnit(Sender: TObject); @@ -157,11 +157,7 @@ procedure OnOpenPackageForCurrentSrcEditFile(Sender: TObject); // LCL - procedure OnApplicationIdle(Sender: TObject; var Done: Boolean); - - // package links - function PkgLinksDependencyOwnerGetPkgFilename(PkgLinks: TPackageLinks; - Dependency: TPkgDependency): boolean; + procedure OnApplicationIdle(Sender: TObject; var {%H-}Done: Boolean); // misc procedure GetDependencyOwnerDescription(Dependency: TPkgDependency; @@ -185,7 +181,7 @@ const Directory: string; ShowAbort: boolean): TModalResult; function DoGetUnitRegisterInfo(const AFilename: string; - var TheUnitName: string; var HasRegisterProc: boolean; + out TheUnitName: string; out HasRegisterProc: boolean; IgnoreErrors: boolean): TModalResult; procedure SaveAutoInstallDependencies; procedure LoadStaticCustomPackages; @@ -215,9 +211,8 @@ procedure ConnectSourceNotebookEvents; override; procedure SetupMainBarShortCuts; override; procedure SetRecentPackagesMenu; override; - procedure AddToMenuRecentPackages(const Filename: string; Save: boolean); + procedure AddToMenuRecentPackages(const Filename: string); procedure SaveSettings; override; - procedure UpdateVisibleComponentPalette; override; procedure ProcessCommand(Command: word; var Handled: boolean); override; procedure OnSourceEditorPopupMenu(const AddMenuItemProc: TAddMenuItemProc); override; procedure TranslateResourceStrings; override; @@ -245,7 +240,7 @@ function ShowFindInPackageFilesDlg(APackage: TLazPackage): TModalResult; // package graph - function AddPackageToGraph(APackage: TLazPackage; Replace: boolean): TModalResult; + function AddPackageToGraph(APackage: TLazPackage): TModalResult; procedure DoShowPackageGraph(Show: boolean); procedure DoShowPackageGraphPathList(PathList: TFPList); override; function ShowBrokenDependenciesReport(Dependencies: TFPList): TModalResult; @@ -299,7 +294,7 @@ // package editors function DoOpenPkgFile(PkgFile: TPkgFile): TModalResult; function DoNewPackage: TModalResult; override; - function DoShowOpenInstalledPckDlg: TModalResult; override; + function DoShowLoadedPkgDlg: TModalResult; override; function DoOpenPackage(APackage: TLazPackage; Flags: TPkgOpenFlags; ShowAbort: boolean): TModalResult; override; function DoOpenPackageWithName(const APackageName: string; @@ -419,8 +414,8 @@ InputHistories.ApplyFileDialogSettings(OpenDialog); OpenDialog.Title:=lisOpenPackageFile; OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; - OpenDialog.Filter:=lisLazarusPackage+' (*.lpk)|*.lpk' - +'|'+dlgAllFiles+' ('+FileMask+')|'+FileMask; + OpenDialog.Filter:=dlgFilterLazarusPackage+' (*.lpk)|*.lpk' + +'|'+dlgFilterAll+' ('+FileMask+')|'+FileMask; if OpenDialog.Execute and (OpenDialog.Files.Count>0) then begin OpenFlags:=[pofAddToRecent]; For I := 0 to OpenDialog.Files.Count-1 do @@ -467,12 +462,6 @@ end; end; -procedure TPkgManager.IDEComponentPaletteEndUpdate(Sender: TObject; - PaletteChanged: boolean); -begin - UpdateVisibleComponentPalette; -end; - procedure TPkgManager.IDEComponentPaletteOpenPackage(Sender: TObject); begin if (Sender=nil) or (not (Sender is TLazPackage)) then exit; @@ -523,8 +512,13 @@ procedure TPkgManager.OnCheckInstallPackageList(PkgIDList: TObjectList; RemoveConflicts: boolean; out Ok: boolean); +var + Flags: TPkgInstallInIDEFlags; begin - Ok:=CheckInstallPackageList(PkgIDList); + Flags:=[]; + if RemoveConflicts then + Include(Flags,piiifRemoveConflicts); + Ok:=CheckInstallPackageList(PkgIDList,Flags); if Ok then SaveAutoInstallDependencies; end; @@ -634,12 +628,12 @@ DoShowPackageGraph(false); AForm:=PackageGraphExplorer; if DoDisableAutoSizing then - AForm.DisableAutoSizing; + AForm.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TPkgManager.CreateIDEWindow'){$ENDIF}; end else if SysUtils.CompareText(PackageEditorWindowPrefix, copy(aFormName,1,length(PackageEditorWindowPrefix)))=0 then begin APackageName:=copy(aFormName,length(PackageEditorWindowPrefix)+1,length(aFormName)); - if (APackageName='') or not IsValidUnitName(APackageName) then exit; + if not IsValidPkgName(APackageName) then exit; NewDependency:=TPkgDependency.Create; try NewDependency.PackageName:=APackageName; @@ -650,7 +644,7 @@ end; APackage:=PackageGraph.FindPackageWithName(APackageName,nil); if APackage=nil then exit; - AForm:=PackageEditors.OpenEditor(APackage); + AForm:=PackageEditors.CreateEditor(APackage,DoDisableAutoSizing); end; end; @@ -747,7 +741,7 @@ IconLRSFilename:=ChangeFileExt(Params.UnitFilename,'')+'_icon.lrs'; CodeBuf:=CodeToolBoss.CreateFile(IconLRSFilename); if CodeBuf=nil then begin - debugln(['TPkgManager.OnPackageEditorCreateFile file create failed: ',IconLRSFilename]); + debugln(['Error: (lazarus) [TPkgManager.OnPackageEditorCreateFile] file create failed: ',IconLRSFilename]); exit; end; try @@ -923,11 +917,18 @@ end; procedure TPkgManager.OnPackageEditorGetUnitRegisterInfo(Sender: TObject; - const AFilename: string; var TheUnitName: string; var HasRegisterProc: boolean); + const AFilename: string; out TheUnitName: string; out HasRegisterProc: boolean + ); begin DoGetUnitRegisterInfo(AFilename,TheUnitName,HasRegisterProc,true); end; +function TPkgManager.PackageGraphCheckInterPkgFiles(IDEObject: TObject; + PkgList: TFPList; out FilesChanged: boolean): boolean; +begin + Result:=CheckInterPkgFiles(IDEObject,PkgList,FilesChanged); +end; + function TPkgManager.OnPackageEditorOpenPackage(Sender: TObject; APackage: TLazPackage): TModalResult; begin @@ -1034,14 +1035,6 @@ Result:=DoUninstallPackage(APackage,[],false); end; -function TPkgManager.PkgLinksDependencyOwnerGetPkgFilename( - PkgLinks: TPackageLinks; Dependency: TPkgDependency): boolean; -begin - Result:=false; - // TODO search in Project/Package history list of dependencies - -end; - procedure TPkgManager.MainIDEitmConfigCustomCompsClicked(Sender: TObject); begin ShowConfigureCustomComponents; @@ -1052,9 +1045,9 @@ DoNewPackage; end; -procedure TPkgManager.MainIDEitmPkgOpenPackageClicked(Sender: TObject); +procedure TPkgManager.MainIDEitmPkgOpenLoadedPackageClicked(Sender: TObject); begin - DoShowOpenInstalledPckDlg; + DoShowLoadedPkgDlg; end; procedure TPkgManager.MainIDEitmPackageLinksClicked(Sender: TObject); @@ -1139,8 +1132,8 @@ try InputHistories.ApplyFileDialogSettings(SaveDialog); SaveDialog.Title:=Format(lisPkgMangSavePackageLpk, [APackage.IDAsString]); - SaveDialog.Filter:=lisLazarusPackage+' (*.lpk)|*.lpk' - +'|'+dlgAllFiles+' ('+FileMask+')|'+FileMask; + SaveDialog.Filter:=dlgFilterLazarusPackage+' (*.lpk)|*.lpk' + +'|'+dlgFilterAll+' ('+FileMask+')|'+FileMask; if APackage.HasDirectory then SaveDialog.InitialDir:=APackage.Directory; @@ -1162,6 +1155,15 @@ NewMainUnitFileName:=ChangeFileExt(NewFileName,'.pas') else NewMainUnitFileName:=''; + + if PackageEditors.FindEditor(NewPkgName) <> nil then + begin + Result:=IDEMessageDialog(lisPkgMangInvalidPackageName, + Format(lisPkgMangSaveAsAlreadyOpenedPackage, [NewPkgName]), + mtInformation,[mbRetry,mbAbort]); + if Result=mrAbort then exit; + continue; // try again + end; // check file extension if ExtractFileExt(NewFilename)='' then begin @@ -1176,7 +1178,7 @@ end; // check filename - if (NewPkgName='') or (not IsValidUnitName(NewPkgName)) then begin + if not IsValidPkgName(NewPkgName) then begin Result:=IDEMessageDialog(lisPkgMangInvalidPackageName, Format(lisPkgMangThePackageNameIsNotAValidPackageNamePleaseChooseAn, [NewPkgName, LineEnding]), @@ -1258,11 +1260,11 @@ RenameDependencies:=false; try if BrokenDependencies.Count>0 then begin - Result:=ShowBrokenDependencies(BrokenDependencies, - DefaultBrokenDepButtons); - if Result=mrAbort then exit; - if Result=mrRetry then continue; - if Result=mrYes then RenameDependencies:=true; + Result:=ShowBrokenDependencies(BrokenDependencies); + if Result=mrOK then // = Yes + RenameDependencies:=true + else if Result<>mrClose then // <> Ignore + exit; end; finally BrokenDependencies.Free; @@ -1298,6 +1300,8 @@ // set filename APackage.Filename:=NewFilename; + if Assigned(APackage.Editor) then + APackage.Editor.LazPackage := APackage;//force package editor name change! // rename package PackageGraph.ChangePackageID(APackage,NewPkgName,APackage.Version, @@ -1305,6 +1309,11 @@ SaveAutoInstallDependencies; RenamePackageInProject; + //update LastOpenPackages list + EnvironmentOptions.LastOpenPackages.Remove(OldPkgFilename); + EnvironmentOptions.LastOpenPackages.Add(NewFileName); + MainIDE.SaveEnvironment; + // clean up old package file to reduce ambiguousities if FileExistsUTF8(OldPkgFilename) and (CompareFilenames(OldPkgFilename,NewFilename)<>0) then begin @@ -1476,8 +1485,8 @@ Result:=mrOk; end; -function TPkgManager.DoGetUnitRegisterInfo(const AFilename: string; - var TheUnitName: string; var HasRegisterProc: boolean; IgnoreErrors: boolean +function TPkgManager.DoGetUnitRegisterInfo(const AFilename: string; out + TheUnitName: string; out HasRegisterProc: boolean; IgnoreErrors: boolean ): TModalResult; function ErrorsHandled: boolean; @@ -1549,16 +1558,16 @@ StaticPackage:=PRegisteredPackage(StaticPackages[i]); // check package name - if (StaticPackage^.Name='') or (not IsValidUnitName(StaticPackage^.Name)) + if not IsValidPkgName(StaticPackage^.Name) then begin - DebugLn('TPkgManager.LoadStaticCustomPackages Invalid Package Name: "', + DebugLn('Warning: (lazarus) [TPkgManager.LoadStaticCustomPackages] Invalid Package Name: "', BinaryStrToText(StaticPackage^.Name),'"'); continue; end; // check register procedure if (StaticPackage^.RegisterProc=nil) then begin - DebugLn('TPkgManager.LoadStaticCustomPackages', + DebugLn('Warning: (lazarus) [TPkgManager.LoadStaticCustomPackages]', ' Package "',StaticPackage^.Name,'" has no register procedure.'); continue; end; @@ -2078,8 +2087,8 @@ if CompareFilenames(NewFilename,OldFilename)<>0 then begin // file be copied/moved to another directory - debugln(['CollectFiles Old="',OldFilename,'"']); - debugln([' New="',NewFilename,'"']); + debugln(['Hint: (lazarus) CollectFiles Old="',OldFilename,'"']); + debugln(['Hint: (lazarus) New="',NewFilename,'"']); inc(MoveFileCount); ChangedFilenames[OldFilename]:=NewFilename; AllChangedFilenames[OldFilename]:=NewFilename; @@ -2422,9 +2431,9 @@ if LoadCodeBuffer(Code,OldFilename,[lbfUpdateFromDisk,lbfCheckIfText],false)<>mrOk then exit; CodeToolBoss.Explore(Code,Tool,false); - if not CheckUsesSection(Tool,Tool.FindMainUsesSection,NewFilename) then + if not CheckUsesSection(Tool,Tool.FindMainUsesNode,NewFilename) then Result:=false; - if not CheckUsesSection(Tool,Tool.FindImplementationUsesSection,NewFilename) then + if not CheckUsesSection(Tool,Tool.FindImplementationUsesNode,NewFilename) then Result:=false; end; if not Result then begin @@ -2523,7 +2532,7 @@ r:=CopyFileWithErrorDialogs(OldFilename,NewFilename,[mbAbort,mbIgnore]); end; if not (r in [mrIgnore,mrOK]) then begin - debugln(['MoveOrCopyFile ERROR: rename/copy failed: "',OldFilename,'" to "',NewFilename,'"']); + debugln(['Error: (lazarus) MoveOrCopyFile: rename/copy failed: "',OldFilename,'" to "',NewFilename,'"']); exit; end; end else begin @@ -2751,7 +2760,7 @@ // check TargetDirectory if CheckDirectoryIsWritable(TargetDirectory)<>mrOk then begin - debugln(['TPkgManager.MoveFiles not writable TargetDirectory=',TargetDirectory]); + debugln(['Warning: (lazarus) TPkgManager.MoveFiles not writable TargetDirectory=',TargetDirectory]); exit; end; @@ -2884,7 +2893,7 @@ else if Sender is TProjectInspectorForm then FilesEdit:=TProjectInspectorForm(Sender) else begin - debugln(['TPkgManager.CopyMoveFiles wrong Sender: ',DbgSName(Sender)]); + debugln(['Error: (lazarus) TPkgManager.CopyMoveFiles wrong Sender: ',DbgSName(Sender)]); exit; end; SelDirDlg:=TSelectDirectoryDialog.Create(nil); @@ -2901,32 +2910,24 @@ end; constructor TPkgManager.Create(TheOwner: TComponent); -var - CompPalette: TComponentPalette; begin inherited Create(TheOwner); OnGetDependencyOwnerDescription:=@GetDependencyOwnerDescription; OnGetDependencyOwnerDirectory:=@GetDependencyOwnerDirectory; OnPackageFileLoaded:=@PackageFileLoaded; - // componentpalette - IDEComponentPalette:=TComponentPalette.Create; - CompPalette:=TComponentPalette(IDEComponentPalette); - CompPalette.OnEndUpdate:=@IDEComponentPaletteEndUpdate; - CompPalette.OnOpenPackage:=@IDEComponentPaletteOpenPackage; - CompPalette.OnOpenUnit:=@IDEComponentPaletteOpenUnit; - // package links PkgLinks:=TPackageLinks.Create; PkgLinks.UpdateAll; - PkgLinks.DependencyOwnerGetPkgFilename:=@PkgLinksDependencyOwnerGetPkgFilename; // package graph PackageGraph:=TLazPackageGraph.Create; + PackageGraphInterface:=PackageGraph; PackageGraph.OnAddPackage:=@PackageGraphAddPackage; PackageGraph.OnBeforeCompilePackages:=@DoBeforeCompilePackages; PackageGraph.OnBeginUpdate:=@PackageGraphBeginUpdate; PackageGraph.OnChangePackageName:=@PackageGraphChangePackageName; + PackageGraph.OnCheckInterPkgFiles:=@PackageGraphCheckInterPkgFiles; PackageGraph.OnDeleteAmbiguousFiles:=@BuildBoss.DeleteAmbiguousFiles; PackageGraph.OnDeletePackage:=@PackageGraphDeletePackage; PackageGraph.OnDependencyModified:=@PackageGraphDependencyModified; @@ -2972,6 +2973,8 @@ 'PKGINCPATH',nil,@PackageGraph.MacroFunctionCTPkgIncPath); CodeToolBoss.DefineTree.MacroFunctions.AddExtended( 'PKGNAME',nil,@PackageGraph.MacroFunctionCTPkgName); + CodeToolBoss.DefineTree.MacroFunctions.AddExtended( + 'PKGOUTDIR',nil,@PackageGraph.MacroFunctionCTPkgOutDir); LazPackageDescriptors:=TLazPackageDescriptors.Create; LazPackageDescriptors.AddDefaultPackageDescriptors; @@ -2982,15 +2985,12 @@ destructor TPkgManager.Destroy; begin - if IDEComponentPalette<>nil then - TComponentPalette(IDEComponentPalette).PageControl:=nil; FreeThenNil(LazPackageDescriptors); PackageGraph.FreeAutoInstallDependencies; FreeThenNil(PackageGraphExplorer); FreeThenNil(PackageEditors); FreeThenNil(PackageGraph); FreeThenNil(PkgLinks); - FreeThenNil(IDEComponentPalette); FreeThenNil(PackageDependencies); inherited Destroy; end; @@ -2999,7 +2999,7 @@ begin with MainIDEBar do begin itmPkgNewPackage.OnClick :=@MainIDEitmPkgNewPackageClick; - itmPkgOpenPackage.OnClick :=@MainIDEitmPkgOpenPackageClicked; + itmPkgOpenLoadedPackage.OnClick :=@MainIDEitmPkgOpenLoadedPackageClicked; itmPkgOpenPackageFile.OnClick:=@MainIDEitmPkgOpenPackageFileClick; itmPkgOpenPackageOfCurUnit.OnClick :=@MainIDEitmPkgOpenPackageOfCurUnitClicked; itmPkgAddCurFileToPkg.OnClick:=@MainIDEitmPkgAddCurFileToPkgClick; @@ -3037,11 +3037,9 @@ EnvironmentOptions.RecentPackageFiles,@MainIDEitmOpenRecentPackageClicked); end; -procedure TPkgManager.AddToMenuRecentPackages(const Filename: string; - Save: boolean); +procedure TPkgManager.AddToMenuRecentPackages(const Filename: string); begin - AddToRecentList(Filename,EnvironmentOptions.RecentPackageFiles, - EnvironmentOptions.MaxRecentPackageFiles,rltFile); + EnvironmentOptions.AddToRecentPackageFiles(Filename); SetRecentPackagesMenu; MainIDE.SaveEnvironment; end; @@ -3107,16 +3105,11 @@ end; end; -procedure TPkgManager.UpdateVisibleComponentPalette; -begin - TComponentPalette(IDEComponentPalette).PageControl:=MainIDEBar.ComponentPageControl; -end; - procedure TPkgManager.ProcessCommand(Command: word; var Handled: boolean); begin Handled:=true; case Command of - ecOpenPackage: MainIDEitmPkgOpenPackageClicked(Self); + ecOpenPackage: MainIDEitmPkgOpenLoadedPackageClicked(Self); ecOpenPackageFile: MainIDEitmPkgOpenPackageFileClick(Self); ecOpenPackageOfCurUnit: MainIDEitmPkgOpenPackageOfCurUnitClicked(Self); ecAddCurFileToPkg: MainIDEitmPkgAddCurFileToPkgClick(Self); @@ -3171,12 +3164,14 @@ end; function GetPOFilenameParts(const Filename: string; - var AUnitName, Language: string): boolean; + out AUnitName, Language: string): boolean; var UnitNameEnd: Integer; LangEnd: Integer; begin Result:=false; + AUnitName:=''; + Language:=''; UnitNameEnd:=1; while (UnitNameEnd<=length(Filename)) and (Filename[UnitNameEnd]<>'.') do inc(UnitNameEnd); @@ -3253,13 +3248,13 @@ end; end; -function TPkgManager.AddPackageToGraph(APackage: TLazPackage; - Replace: boolean): TModalResult; +function TPkgManager.AddPackageToGraph(APackage: TLazPackage): TModalResult; var ConflictPkg: TLazPackage; + Link: TPackageLink; begin // check Package Name - if (APackage.Name='') or (not IsValidUnitName(APackage.Name)) then begin + if not IsValidPkgName(APackage.Name) then begin Result:=IDEMessageDialog(lisPkgMangInvalidPackageName2, Format(lisPkgMangThePackageNameOfTheFileIsInvalid, [APackage.Name, LineEnding, APackage.Filename]), @@ -3300,8 +3295,12 @@ // save package file links //DebugLn(['TPkgManager.AddPackageToGraph ',APackage.Name]); - PkgLinks.AddUserLink(APackage); - PkgLinks.SaveUserLinks; + Link:=PkgLinks.AddUserLink(APackage); + if Link<>nil then + begin + //debugln(['Hint: (lazarus) TPkgManager.AddPackageToGraph LinkLastUsed=',DateToCfgStr(Link.LastUsed,DateTimeAsCfgStrFormat),' ',dbgs(Link.Origin)]); + PkgLinks.SaveUserLinks; + end; Result:=mrOk; end; @@ -3311,6 +3310,7 @@ var BrokenDependencies: TFPList; begin + Result:=mrOk; PackageGraph.OpenRequiredDependencyList(AProject.FirstRequiredDependency); if ReportMissing then begin BrokenDependencies:=PackageGraph.FindAllBrokenDependencies(nil, @@ -3319,8 +3319,7 @@ Result:=ShowBrokenDependenciesReport(BrokenDependencies); BrokenDependencies.Free; end; - end else - Result:=mrOk; + end; PkgLinks.SaveUserLinks; end; @@ -3337,7 +3336,7 @@ ConflictDependency:=PackageGraph.FindConflictRecursively( AProject.FirstRequiredDependency,APackage); if ConflictDependency<>nil then begin - DebugLn(['TPkgManager.AddProjectDependency ',APackage.IDAsString,' conflicts with ',ConflictDependency.AsString]); + DebugLn(['Error: (lazarus) [TPkgManager.AddProjectDependency] ',APackage.IDAsString,' conflicts with ',ConflictDependency.AsString]); Result:=mrCancel; exit; end; @@ -3356,7 +3355,7 @@ if ProvidingAPackage<>nil then begin // package is already provided by another package - DebugLn(['TPkgManager.AddProjectDependency ',APackage.Name,' is already provided by ',ProvidingAPackage.IDAsString]); + DebugLn(['Error: (lazarus) [TPkgManager.AddProjectDependency] ',APackage.Name,' is already provided by ',ProvidingAPackage.IDAsString]); Result:=mrOk; exit; end; @@ -3415,19 +3414,25 @@ PkgName: string; APackage: TLazPackage; begin + Result:=mrOk; RequiredPackages:=SplitString(Packages,';'); - for i:=0 to RequiredPackages.Count-1 do begin - PkgName:=Trim(RequiredPackages[i]); - if (PkgName='') or (not IsValidUnitName(PkgName)) then continue; - APackage:=PackageGraph.FindPackageWithName(PkgName,nil); - if APackage=nil then begin - DebugLn(['TPkgManager.AddProjectDependencies package not found: ',PkgName]); - continue; + try + for i:=0 to RequiredPackages.Count-1 do begin + PkgName:=Trim(RequiredPackages[i]); + if not IsValidPkgName(PkgName) then continue; + APackage:=PackageGraph.FindPackageWithName(PkgName,nil); + if APackage=nil then begin + DebugLn(['Error: (lazarus) [TPkgManager.AddProjectDependencies] package not found: ',PkgName]); + if OnlyTestIfPossible then + exit(mrCancel); + continue; + end; + Result:=AddProjectDependency(AProject,APackage,OnlyTestIfPossible); + if Result<>mrOk then exit; end; - AddProjectDependency(AProject,APackage); + finally + RequiredPackages.Free; end; - RequiredPackages.Free; - Result:=mrOk; end; function TPkgManager.CheckProjectHasInstalledPackages(AProject: TProject; @@ -3487,7 +3492,6 @@ function TPkgManager.DoNewPackage: TModalResult; var NewPackage: TLazPackage; - CurEditor: TPackageEditorForm; begin Result:=mrCancel; // create a new package with standard dependencies @@ -3497,13 +3501,12 @@ NewPackage.Modified:=false; // open a package editor - CurEditor:=PackageEditors.OpenEditor(NewPackage); - IDEWindowCreators.ShowForm(CurEditor,true); + PackageEditors.OpenEditor(NewPackage,true); Result:=DoSavePackage(NewPackage,[psfSaveAs]); end; -function TPkgManager.DoShowOpenInstalledPckDlg: TModalResult; +function TPkgManager.DoShowLoadedPkgDlg: TModalResult; var APackage: TLazPackage; begin @@ -3515,7 +3518,6 @@ function TPkgManager.DoOpenPackage(APackage: TLazPackage; Flags: TPkgOpenFlags; ShowAbort: boolean): TModalResult; var - CurEditor: TPackageEditorForm; AFilename: String; begin AFilename:=APackage.Filename; @@ -3528,14 +3530,13 @@ end; // open a package editor - CurEditor:=PackageEditors.OpenEditor(APackage); - IDEWindowCreators.ShowForm(CurEditor,true); + PackageEditors.OpenEditor(APackage,true); // add to recent packages if (pofAddToRecent in Flags) then begin AFilename:=APackage.Filename; if FileExistsCached(AFilename) then begin - AddToMenuRecentPackages(AFilename,false); + AddToMenuRecentPackages(AFilename); end; end; @@ -3550,7 +3551,7 @@ LoadResult: TLoadPackageResult; begin Result:=mrCancel; - if (APackageName='') or not IsValidUnitName(APackageName) then exit; + if not IsValidPkgName(APackageName) then exit; NewDependency:=TPkgDependency.Create; try NewDependency.PackageName:=APackageName; @@ -3603,7 +3604,7 @@ // check filename AlternativePkgName:=ExtractFileNameOnly(AFilename); if (not (pofRevert in Flags)) - and ((AlternativePkgName='') or (not IsValidUnitName(AlternativePkgName))) + and (not IsValidPkgName(AlternativePkgName)) then begin DoQuestionDlg(lisPkgMangInvalidPackageFilename, Format(lisPkgMangThePackageFileNameInIsNotAValidLazarusPackageName, @@ -3615,7 +3616,7 @@ // add to recent packages if pofAddToRecent in Flags then begin - AddToMenuRecentPackages(AFilename,false); + AddToMenuRecentPackages(AFilename); end; OpenEditor:=not (pofDoNotOpenEditor in Flags); @@ -3679,7 +3680,7 @@ end; // integrate it into the graph - Result:=AddPackageToGraph(APackage,pofRevert in Flags); + Result:=AddPackageToGraph(APackage); finally if Result<>mrOk then APackage.Free; end; @@ -3700,14 +3701,12 @@ var i: Integer; APackage: TLazPackage; - Editor: TPackageEditorForm; begin for i:=0 to PackageGraph.Count-1 do begin APackage:=PackageGraph.Packages[i]; if (APackage.Editor=nil) and APackage.Modified and (APackage.UserIgnoreChangeStamp<>APackage.ChangeStamp) then begin - Editor:=PackageEditors.OpenEditor(APackage); - IDEWindowCreators.ShowForm(Editor,false); + PackageEditors.OpenEditor(APackage,false); end; end; end; @@ -3794,7 +3793,7 @@ APackage.Modified:=false; // add to recent if (psfSaveAs in Flags) then begin - AddToMenuRecentPackages(APackage.Filename,false); + AddToMenuRecentPackages(APackage.Filename); end; if APackage.Editor<>nil then @@ -3915,7 +3914,7 @@ // search path contains source directory of another package if Option=pcosIncludePath then; s:=aType+' of "'+aCompilerOptions.GetOwnerName+'" contains "'+Dir+'", which belongs to package "'+OtherPackage.Name+'"'; - debugln(['TPkgManager.CheckUserSearchPaths WARNING: ',s]); + debugln(['Warning: (lazarus) [TPkgManager.CheckUserSearchPaths]: ',s]); { ToDo: find out - which path it is in the unparsed path - if there is already the dependency @@ -3948,7 +3947,7 @@ if FilenameIsPascalUnit(aFilename) then begin // warning: packages output path contain unit source s:='output directory of '+aCompilerOptions.GetOwnerName+' contains Pascal unit source "'+aFilename+'"'; - debugln(['CheckOutPathContainsSources WARNING: ',s]); + debugln(['Warning: (lazarus) [CheckOutPathContainsSources]: ',s]); { ToDo: if the OutPath is not the default: ask user and change it } IDEMessagesWindow.AddCustomMessage(mluWarning,s); exit; @@ -3979,7 +3978,7 @@ // Note: when changing this, update TQuickFixSrcPathOfPkgContains_OpenPkg s:=Format(lisOtherSourcesPathOfPackageContainsDirectoryWhichIsA, [ aCompilerOptions.GetOwnerName, Dir]); - debugln(['CheckSrcPathIsInUnitPath WARNING: ',s]); + debugln(['Warning: (lazarus) [CheckSrcPathIsInUnitPath]: ',s]); { ToDo: ask user and remove dir from unit path } IDEMessagesWindow.AddCustomMessage(mluWarning,s); exit; @@ -4086,7 +4085,7 @@ if FileIsInPath(Filename,NewLazarusSrcDir) and FileExistsUTF8(Filename) then begin - DebugLn(['TPkgManager.LazarusSrcDirChanged load: ',Filename]); + DebugLn(['Hint: (lazarus) [TPkgManager.LazarusSrcDirChanged] load: ',Filename]); // open package in new lazarus source directory MsgResult:=DoOpenPackageFile(Filename,[pofDoNotOpenEditor,pofRevert],true); if MsgResult=mrAbort then exit(false); @@ -4102,9 +4101,9 @@ NewLazarusSrcDir:=EnvironmentOptions.GetParsedLazarusDirectory; FLastLazarusSrcDir:=NewLazarusSrcDir; if CompareFilenames(OldLazarusSrcDir,NewLazarusSrcDir)=0 then exit; - debugln(['TPkgManager.LazarusSrcDirChanged loading new lpl files from ',PkgLinks.GetGlobalLinkDirectory]); + debugln(['Hint: (lazarus) [TPkgManager.LazarusSrcDirChanged] loading new lpl files from ',PkgLinks.GetGlobalLinkDirectory]); if PkgLinks.IsUpdating then - debugln(['TPkgManager.LazarusSrcDirChanged inconsistency: pkglinks are locked']); + debugln(['Warning: (lazarus) [TPkgManager.LazarusSrcDirChanged] inconsistency: pkglinks are locked']); PkgLinks.UpdateGlobalLinks; VisitedPkgs:=TStringToStringTree.Create(false); @@ -4196,8 +4195,8 @@ Flags: TPkgCompileFlags; ShowAbort: boolean): TModalResult; begin Result:=mrCancel; - - DebugLn('TPkgManager.DoCompilePackage A ',APackage.IDAsString,' Flags=',PkgCompileFlagsToString(Flags)); + + DebugLn('Hint: (lazarus) compile package ',APackage.IDAsString,' Flags=',PkgCompileFlagsToString(Flags)); if APackage.IsVirtual then exit; @@ -4256,7 +4255,7 @@ if (OldPkgFile=nil) or (OldPkgFile.LazPackage.ReadOnly) then exit; OldPackage:=OldPkgFile.LazPackage; - debugln('TPkgManager.OnRenameFile A OldPackage="',OldPackage.Name); + debugln('Hint: (lazarus) [TPkgManager.OnRenameFile] OldPackage="',OldPackage.Name); NewPkgFile:=PackageGraph.FindFileInAllPackages(NewFilename,true,false); if (NewPkgFile<>nil) and (OldPackage<>NewPkgFile.LazPackage) then exit; @@ -4458,10 +4457,10 @@ RequiredPackage:=TLazPackage(MissingDependencies.Objects[i]); RequiredPackage:=TLazPackage(RedirectPackageDependency(RequiredPackage)); if UnitOwner is TProject then begin - DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Adding Project Dependency ',TProject(UnitOwner).GetTitle,' -> ',RequiredPackage.Name); + DebugLn('Hint: (lazarus) [TPkgManager.AddUnitDependenciesForComponentClasses] Adding Project Dependency ',TProject(UnitOwner).GetTitle,' -> ',RequiredPackage.Name); AddProjectDependency(TProject(UnitOwner),RequiredPackage); end else if UnitOwner is TLazPackage then begin - DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Adding Package Dependency ',TLazPackage(UnitOwner).Name,' -> ',RequiredPackage.Name); + DebugLn('Hint: (lazarus) [TPkgManager.AddUnitDependenciesForComponentClasses] Adding Package Dependency ',TLazPackage(UnitOwner).Name,' -> ',RequiredPackage.Name); AddPackageDependency(TLazPackage(UnitOwner),RequiredPackage.Name); end; end; @@ -4476,7 +4475,7 @@ Result:=LoadAndParseUnitBuf; if Result<>mrOk then exit; for i:=0 to UnitNames.Count-1 do begin - DebugLn('TPkgManager.AddUnitDependenciesForComponentClasses Extending Uses ',UnitBuf.Filename,' ',UnitNames[i]); + DebugLn('Hint: (lazarus) [TPkgManager.AddUnitDependenciesForComponentClasses] Extending Uses ',UnitBuf.Filename,' ',UnitNames[i]); if not CodeToolBoss.AddUnitToMainUsesSection(UnitBuf,UnitNames[i],'') then MainIDE.DoJumpToCodeToolBossError; end; @@ -4589,7 +4588,7 @@ end; UnitOwners.Free; end else begin - DebugLn(['TPkgManager.GetMissingDependenciesForUnit WARNING: unit has no owner: ',UnitFilename]); + DebugLn(['Warning: (lazarus) [TPkgManager.GetMissingDependenciesForUnit] unit has no owner: ',UnitFilename]); end; Result:=mrOk; end; @@ -4924,7 +4923,6 @@ function TPkgManager.SearchFile(const AFilename: string; SearchFlags: TSearchIDEFileFlags; InObject: TObject): TPkgFile; var - i: Integer; APackage: TLazPackage; CurFilename: String; begin @@ -4936,14 +4934,8 @@ if Result<>nil then exit; end; if not (siffDoNotCheckAllPackages in SearchFlags) then begin - for i:=0 to PackageGraph.Count-1 do begin - APackage:=PackageGraph[i]; - CurFilename:=AFilename; - APackage.ShortenFilename(CurFilename,true); - Result:=APackage.SearchShortFilename(CurFilename,SearchFlags); - //debugln(['TPkgManager.SearchFile Pkg=',APackage.Filename,' CurFilename="',CurFilename,'" Resul=',Result<>nil,' HasDirectory=',APackage.HasDirectory,' ExpFile=',APackage.DirectoryExpanded]); - if Result<>nil then exit; - end; + Result := PackageGraph.FindFileInAllPackages(AFilename, True, True); + if Result<>nil then exit; end; Result:=nil; end; @@ -4975,8 +4967,7 @@ begin Result:=mrOk; Dlg:=FindInFilesDialog; - Dlg.DirectoriesComboBox.Text:=''; - Dlg.FindInFilesPerDialog(Project1); + Dlg.FindInSearchPath(APackage.SourceDirectories.CreateSearchPathFromAllFiles); end; function TPkgManager.AddDependencyToUnitOwners(const OwnedFilename, @@ -4992,7 +4983,7 @@ // find needed package RequiredPkgFile:=SearchUnitInDesigntimePackages(RequiredUnitName,nil); if RequiredPkgFile=nil then begin - DebugLn(['TPkgManager.AddDependencyToUnitOwners unit not in designtime package: ',RequiredUnitName]); + DebugLn(['Note: (lazarus) [TPkgManager.AddDependencyToUnitOwners] unit not in designtime package: ',RequiredUnitName]); exit; end; RequiredPkg:=RequiredPkgFile.LazPackage; @@ -5001,7 +4992,7 @@ OwnersList:=GetOwnersOfUnit(OwnedFilename); try if (OwnersList=nil) or (OwnersList.Count=0) then begin - DebugLn(['TPkgManager.AddDependencyToUnitOwners Owner not found of unit ',OwnedFilename]); + DebugLn(['Note: (lazarus) TPkgManager.AddDependencyToUnitOwners Owner not found of unit ',OwnedFilename]); exit; end; // add package dependency @@ -5031,14 +5022,15 @@ Filename:=APackageList[i]; if Filename='' then Filename:=APackage.Filename; - debugln(['TPkgManager.RevertPackages BEFORE Old=',APackage.Filename,' New=',Filename,' ',FileExistsCached(Filename)]); + debugln(['Hint: (lazarus) [TPkgManager.RevertPackages] BEFORE Old=',APackage.Filename,' New=',Filename,' ',FileExistsCached(Filename)]); if FileExistsCached(Filename) then Result:=DoOpenPackageFile(Filename,[pofRevert],true) else begin APackage.LPKSource:=nil; APackage.Missing:=true; + Result:=mrCancel; end; - debugln(['TPkgManager.RevertPackages AFTER ',PackageGraph.FindPackageWithFilename(Filename)<>nil]); + debugln(['Hint: (lazarus) [TPkgManager.RevertPackages] AFTER ',PackageGraph.FindPackageWithFilename(Filename)<>nil]); if Result=mrAbort then exit; end; Result:=mrOk; @@ -5050,11 +5042,9 @@ ActiveUnitInfo: TUnitInfo; PkgFile: TPkgFile; Filename: String; - TheUnitName: String; - HasRegisterProc: Boolean; begin MainIDE.GetCurrentUnitInfo(ActiveSourceEditor,ActiveUnitInfo); - if ActiveSourceEditor=nil then exit; + if ActiveSourceEditor=nil then exit(mrAbort); Filename:=ActiveUnitInfo.Filename; @@ -5082,27 +5072,16 @@ mtWarning,[mbIgnore,mbCancel]); if Result<>mrIgnore then exit; end; - - TheUnitName:=''; - HasRegisterProc:=false; - if FilenameIsPascalUnit(Filename) then begin - Result:=DoGetUnitRegisterInfo(Filename,TheUnitName,HasRegisterProc,false); - if Result<>mrOk then begin - debugln(['TPkgManager.DoAddActiveUnitToAPackage DoGetUnitRegisterInfo failed']); - exit; - end; - end; - - Result:=ShowAddFileToAPackageDlg(Filename,TheUnitName,HasRegisterProc, - @MainIDE.GetIDEFileState); + + Result:=ShowAddFileToAPackageDlg(Filename); end; function TPkgManager.DoNewPackageComponent: TModalResult; var APackage: TLazPackage; - CurEditor: TPackageEditorForm; SaveFlags: TPkgSaveFlags; Page: TAddToPkgType; + CurEditor: TPackageEditorForm; begin Result:=ShowNewPkgComponentDialog(APackage); if Result<>mrOk then exit; @@ -5117,8 +5096,7 @@ Include(SaveFlags,psfSaveAs); end; // open a package editor - CurEditor:=PackageEditors.OpenEditor(APackage); - IDEWindowCreators.ShowForm(CurEditor,true); + CurEditor:=PackageEditors.OpenEditor(APackage,true); // save Result:=DoSavePackage(APackage,SaveFlags); if Result<>mrOk then exit; @@ -5156,10 +5134,12 @@ SaveFlags:=[sfCanAbort]; if not FilenameIsAbsolute(AFilename) then SaveFlags:=[sfSaveAs]; - debugln(['TPkgManager.SavePackageFiles saving ',AFilename]); Result:=LazarusIDE.DoSaveEditorFile(SrcEdit,SaveFlags); if Result=mrIgnore then Result:=mrOk; - if Result<>mrOk then exit; + if Result<>mrOk then begin + debugln(['Error: (lazarus) [TPkgManager.SavePackageFiles] failed writing "',AFilename,'"']); + exit; + end; end; end; @@ -5876,7 +5856,7 @@ EnvironmentOptions.GetParsedLazarusDirectory,false); if Result<>mrOk then begin if ConsoleVerbosity>0 then - debugln(['TPkgManager.DoCompileAutoInstallPackages CheckPackageGraphForCompilation failed']); + debugln(['Error: (lazarus) [TPkgManager.DoCompileAutoInstallPackages] CheckPackageGraphForCompilation failed']); exit; end; //DebugLn(['TPkgManager.DoCompileAutoInstallPackages LCLUnitPath=',PackageGraph.LCLPackage.CompilerOptions.GetUnitPath(true)]); @@ -5886,7 +5866,7 @@ Result:=MainIDE.DoSaveForBuild(crCompile); if Result<>mrOk then begin if ConsoleVerbosity>0 then - debugln(['TPkgManager.DoCompileAutoInstallPackages MainIDE.DoSaveForBuild failed']); + debugln(['Error: (lazarus) [TPkgManager.DoCompileAutoInstallPackages] MainIDE.DoSaveForBuild failed']); exit; end; end; @@ -5899,7 +5879,7 @@ CompilePolicy); if Result<>mrOk then begin if ConsoleVerbosity>0 then - debugln(['TPkgManager.DoCompileAutoInstallPackages PackageGraph.CompileRequiredPackages failed']); + debugln(['Error: (lazarus) [TPkgManager.DoCompileAutoInstallPackages] PackageGraph.CompileRequiredPackages failed']); exit; end; @@ -6126,7 +6106,7 @@ for i := 0 to UnitList.Count - 1 do begin ARoot := TUnitInfo(UnitList[i]).Component; - DebugLn(['TPkgManager.FindReferencedRootComponent Root=',dbgsName(CurRoot),' Searched="',ComponentName,'" other root=',dbgsName(ARoot)]); + DebugLn(['Hint: (lazarus) [TPkgManager.FindReferencedRootComponent] Root=',dbgsName(CurRoot),' Searched="',ComponentName,'" other root=',dbgsName(ARoot)]); if (ARoot <> nil) and (SysUtils.CompareText(ComponentName, ARoot.Name) = 0) then begin Result := ARoot; diff -Nru lazarus-1.4.4+dfsg/packager/pkgvirtualuniteditor.lfm lazarus-1.6+dfsg/packager/pkgvirtualuniteditor.lfm --- lazarus-1.4.4+dfsg/packager/pkgvirtualuniteditor.lfm 2009-10-30 15:02:59.000000000 +0000 +++ lazarus-1.6+dfsg/packager/pkgvirtualuniteditor.lfm 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -object EditVirtualUnitDialog: TEditVirtualUnitDialog - Left = 346 - Height = 131 - Top = 254 - Width = 450 - Caption = 'EditVirtualUnitDialog' - ClientHeight = 131 - ClientWidth = 450 - OnCreate = EditVirtualUnitDialogCreate - Position = poScreenCenter - LCLVersion = '0.9.29' - object FilenameLabel: TLabel - Left = 8 - Height = 14 - Top = 24 - Width = 68 - Caption = 'FilenameLabel' - ParentColor = False - end - object UnitnameLabel: TLabel - Left = 8 - Height = 14 - Top = 64 - Width = 71 - Caption = 'UnitnameLabel' - ParentColor = False - end - object FilenameEdit: TEdit - Left = 96 - Height = 21 - Top = 18 - Width = 344 - Anchors = [akTop, akLeft, akRight] - TabOrder = 0 - Text = 'FilenameEdit' - end - object UnitnameEdit: TEdit - Left = 96 - Height = 21 - Top = 58 - Width = 128 - TabOrder = 1 - Text = 'UnitnameEdit' - end - object CancelButton: TBitBtn - Left = 332 - Height = 25 - Top = 96 - Width = 101 - Caption = 'CancelButton' - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF003F3DED413B38EB08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00211FE3081E1CE241FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004A47F0414F4CF2FF403EEDFD3C39EB08FFFFFF00FFFFFF00FFFFFF00FFFF - FF002725E5082422E4FC312FEAFF1F1DE241FFFFFF00FFFFFF00FFFFFF005451 - F3415856F5FF6361FAFF5855F6FF413FEDFC3D3AEC08FFFFFF00FFFFFF00302D - E7082C2AE6FC413FF1FF4C4AF6FF312FEAFF1F1DE241FFFFFF00FFFFFF005956 - F52B5B58F6FF6562FAFF7170FFFF5956F6FF4240EEFC3E3BEC083937EB083532 - E9FC4745F2FF6362FFFF4A48F4FF2F2DE9FF2220E32BFFFFFF00FFFFFF00FFFF - FF005A57F52B5B59F6FF6663FAFF7471FFFF5A58F6FF4341EEFC3E3CECFD504D - F4FF6867FFFF504EF5FF3634EBFF2A27E52BFFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF005B58F62B5C5AF6FF6764FAFF7472FFFF7370FFFF706EFFFF6E6C - FFFF5755F7FF3F3DEEFF3230E82BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF005C59F62B5D5BF7FF7976FFFF5956FFFF5754FFFF7270 - FFFF4846F0FF3C39EB2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00615EF8085D5AF6FD7D79FFFF5E5BFFFF5B58FFFF7674 - FFFF4643EFFD413FED08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF006967FB086663F9FC706DFBFF807EFFFF7E7BFFFF7C79FFFF7977 - FFFF5E5CF7FF4744EFFC4240EE08FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00716EFD086E6BFCFC7774FDFF8682FFFF7673FCFF6462F8FF605DF7FF6D6A - FAFF7B79FFFF605DF7FF4845EFFC4341EE08FFFFFF00FFFFFF00FFFFFF007673 - FF087471FEFD7D7AFEFF8A87FFFF7C79FDFF6C69FBFF6361F92B5F5CF72B615E - F8FF6E6CFAFF7D7AFFFF615FF7FF4946F0FC4441EE05FFFFFF00FFFFFF007774 - FF1F7A77FFFF817EFFFF817EFEFF7471FDFF6C69FB2BFFFFFF00FFFFFF00605D - F72B625FF8FF6F6DFBFF7E7CFFFF625FF8FF4A47F06F4542EE02FFFFFF00FFFF - FF007774FF1F7A77FFFF7976FEFF726FFD2BFFFFFF00FFFFFF00FFFFFF00FFFF - FF00615EF82B6461F8FF6A68F9FF5451F3A84F4DF229FFFFFF00FFFFFF00FFFF - FF00FFFFFF007774FF1F7774FF2BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00625FF82B5D5BF76F5956F53EFFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF006360F80AFFFFFF00FFFFFF00FFFFFF00 - } - ModalResult = 2 - NumGlyphs = 0 - TabOrder = 2 - end - object OkButton: TBitBtn - Left = 200 - Height = 25 - Top = 96 - Width = 101 - Caption = 'OkButton' - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00317A360A2D753207FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF003985400A37833DFF317B37FB2E763307FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004292490A408E47FF54A35CFF4F9F57FF327C38FE2E773408FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004B9E530A499A51FF5BAC64FF77CA82FF74C87EFF51A059FF337D39FE2F78 - 3508FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0053A9 - 5C0A51A65AFF63B56DFF7ECE89FF7BCC87FF76CA81FF76C981FF52A25AFF347E - 3AFE30793508FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005AB4650959B0 - 63FF6BBD76FF84D290FF7AC985FF60B26AFF63B46DFF78C983FF78CB82FF53A3 - 5CFF347F3AFD317A3608FFFFFF00FFFFFF00FFFFFF00FFFFFF005EB969465BB5 - 66E479C986FF80CE8DFF51A65AFC4DA1566F499C518B5CAD67FF7CCC86FF79CB - 85FF54A45DFF35803BFC317B3708FFFFFF00FFFFFF00FFFFFF00FFFFFF005FBA - 6A3C5CB666E66DC079FF55AC5F6FFFFFFF00FFFFFF004A9D52915EAE68FF7DCD - 89FF7CCD87FF56A55FFF36813CFC327C3808FFFFFF00FFFFFF00FFFFFF00FFFF - FF005FBB6A435CB76765FFFFFF00FFFFFF00FFFFFF00FFFFFF004B9E53915FAF - 69FF7FCE8AFF7ECE89FF57A660FF37823DFC337D3908FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004B9F - 549160B06AFF81CF8DFF7FCF8BFF58A761FF398540FF347E3A08FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF004CA0559162B26CFF82D18FFF7AC885FF57A660FF38843F7BFFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004DA1569163B36DFF5FAF69FF41914979FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF004EA257914A9D527FFFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - NumGlyphs = 0 - OnClick = OkButtonClick - TabOrder = 3 - end -end diff -Nru lazarus-1.4.4+dfsg/packager/pkgvirtualuniteditor.pas lazarus-1.6+dfsg/packager/pkgvirtualuniteditor.pas --- lazarus-1.4.4+dfsg/packager/pkgvirtualuniteditor.pas 2012-09-13 06:39:56.000000000 +0000 +++ lazarus-1.6+dfsg/packager/pkgvirtualuniteditor.pas 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: pkgvirtualuniteditor.pas 38633 2012-09-13 06:39:56Z juha $ } +{ $Id: pkgvirtualuniteditor.pas 49494 2015-07-04 23:08:00Z juha $ } { /*************************************************************************** pkgvirtualuniteditor.pas @@ -38,60 +38,56 @@ interface uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Buttons, - StdCtrls, FileUtil, LazarusIDEStrConsts, PackageDefs; - -type - - { TEditVirtualUnitDialog } - - TEditVirtualUnitDialog = class(TForm) - CancelButton: TBitBtn; - FilenameEdit: TEdit; - OkButton: TBitBtn; - UnitnameEdit: TEdit; - FilenameLabel: TLabel; - UnitnameLabel: TLabel; - procedure EditVirtualUnitDialogCreate(Sender: TObject); - procedure OkButtonClick(Sender: TObject); - private - FPkgFile: TPkgFile; - procedure SetPkgFile(const AValue: TPkgFile); - public - property PkgFile: TPkgFile read FPkgFile write SetPkgFile; - end; + Classes, SysUtils, Forms, Controls, Dialogs, + PackageDefs, FileUtil, LazFileUtils, LazarusIDEStrConsts; function ShowEditVirtualPackageDialog(PkgFile: TPkgFile): TModalResult; implementation -{$R *.lfm} +type + TDummyForClose = class + public + PkgFile: TPkgFile; + procedure CloseEvent(Sender: TObject; const AValues: array of string; + var ACanClose: boolean); + end; function ShowEditVirtualPackageDialog(PkgFile: TPkgFile): TModalResult; var - EditVirtualUnitDialog: TEditVirtualUnitDialog; + Str: array of string; + Dummy: TDummyForClose; begin - EditVirtualUnitDialog:=TEditVirtualUnitDialog.Create(nil); + Result:= mrCancel; + if not Assigned(PkgFile) then exit; + + SetLength(Str, 2); + Str[0]:= PkgFile.Filename; + Str[1]:= PkgFile.Unit_Name; + + Dummy:= TDummyForClose.Create; try - EditVirtualUnitDialog.PkgFile:=PkgFile; - Result:=EditVirtualUnitDialog.ShowModal; + Dummy.PkgFile:= PkgFile; + if not InputQuery(lisPVUEditVirtualUnit, + [lisPEFilename, lisPEUnitname], Str, @Dummy.CloseEvent) then exit; finally - EditVirtualUnitDialog.Free; + FreeAndNil(Dummy); end; -end; -{ TEditVirtualUnitDialog } + if (PkgFile.Filename=Str[0]) and + (PkgFile.Unit_name=Str[1]) then exit; -procedure TEditVirtualUnitDialog.EditVirtualUnitDialogCreate(Sender: TObject); -begin - Caption:=lisPVUEditVirtualUnit; - FilenameLabel.Caption:=lisPEFilename; - UnitnameLabel.Caption:=lisPEUnitname; - UnitnameEdit.Hint:=lisPVUTheUnitnameIsUsedWhenTheIDEExtendsUsesClauses; - UnitnameEdit.ShowHint:=true; + PkgFile.Filename:= Str[0]; + PkgFile.Unit_name:= Str[1]; + if Assigned(PkgFile.LazPackage) then + PkgFile.LazPackage.Modified:= true; + Result:= mrOk; end; -procedure TEditVirtualUnitDialog.OkButtonClick(Sender: TObject); +{ TDummyForClose } + +procedure TDummyForClose.CloseEvent(Sender: TObject; const AValues: array of string; + var ACanClose: boolean); var NewFilename: String; NewUnitName: String; @@ -99,8 +95,10 @@ LazPackage: TLazPackage; ConflictUnit: TPkgFile; begin - NewFilename:=FilenameEdit.Text; - NewUnitName:=UnitnameEdit.Text; + ACanClose:=false; + NewFilename:=AValues[0]; + NewUnitName:=AValues[1]; + if not FilenameIsPascalUnit(NewFilename) then begin MessageDlg(lisPEInvalidUnitFilename, lisPVUAPascalUnitMustHaveTheExtensionPpOrPas, @@ -132,25 +130,7 @@ end; end; - // commit - if (PkgFile.Filename<>NewFilename) - or (PkgFile.Unit_name<>NewUnitName) then begin - PkgFile.Filename:=NewFilename; - PkgFile.Unit_name:=NewUnitName; - if LazPackage<>nil then LazPackage.Modified:=true; - end; - - ModalResult:=mrOk; -end; - -procedure TEditVirtualUnitDialog.SetPkgFile(const AValue: TPkgFile); -begin - if FPkgFile=AValue then exit; - FPkgFile:=AValue; - if PkgFile<>nil then begin - FilenameEdit.Text:=PkgFile.Filename; - UnitnameEdit.Text:=PkgFile.Unit_Name; - end; + ACanClose:=true; end; end. diff -Nru lazarus-1.4.4+dfsg/test/bugs/testfileproc.pas lazarus-1.6+dfsg/test/bugs/testfileproc.pas --- lazarus-1.4.4+dfsg/test/bugs/testfileproc.pas 2013-09-09 10:18:24.000000000 +0000 +++ lazarus-1.6+dfsg/test/bugs/testfileproc.pas 2015-10-24 21:47:10.000000000 +0000 @@ -14,7 +14,7 @@ interface uses - Classes, SysUtils, fpcunit, testglobals, LazFileUtils, FileProcs; + Classes, SysUtils, fpcunit, testglobals, LazFileUtils, LazUTF8; type diff -Nru lazarus-1.4.4+dfsg/test/bugs/testfileutil.pas lazarus-1.6+dfsg/test/bugs/testfileutil.pas --- lazarus-1.4.4+dfsg/test/bugs/testfileutil.pas 2013-09-09 10:18:24.000000000 +0000 +++ lazarus-1.6+dfsg/test/bugs/testfileutil.pas 2015-07-04 23:08:00.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, fpcunit, testglobals, LazFileUtils, FileUtil; + Classes, SysUtils, fpcunit, testglobals, FileUtil, LazFileUtils, LazUTF8; type diff -Nru lazarus-1.4.4+dfsg/test/bugtestcase.pas lazarus-1.6+dfsg/test/bugtestcase.pas --- lazarus-1.4.4+dfsg/test/bugtestcase.pas 2009-04-10 15:33:23.000000000 +0000 +++ lazarus-1.6+dfsg/test/bugtestcase.pas 2015-07-04 23:08:00.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: bugtestcase.pas 19313 2009-04-10 15:33:23Z paul $} +{ $Id: bugtestcase.pas 49494 2015-07-04 23:08:00Z juha $} { Copyright (C) 2007 Vincent Snijders This source is free software; you can redistribute it and/or modify it under @@ -24,7 +24,7 @@ uses Classes, SysUtils, Math, process, fpcunit, testregistry, - FileUtil, UTF8Process, InterfaceBase, + FileUtil, LazFileUtils, LazUTF8, UTF8Process, InterfaceBase, TestGlobals; type diff -Nru lazarus-1.4.4+dfsg/test/codetoolstests/testbasiccodetools.pas lazarus-1.6+dfsg/test/codetoolstests/testbasiccodetools.pas --- lazarus-1.4.4+dfsg/test/codetoolstests/testbasiccodetools.pas 2015-02-28 19:15:57.000000000 +0000 +++ lazarus-1.6+dfsg/test/codetoolstests/testbasiccodetools.pas 2015-10-24 21:50:00.000000000 +0000 @@ -11,6 +11,7 @@ ./runtests --format=plain --suite=TestSimpleFormat ./runtests --format=plain --suite=TestDateToCfgStr ./runtests --format=plain --suite=TestFilenameIsMatching + ./runtests --format=plain --suite=TestExtractFileUnitname ./runtests --format=plain --suite=TestChangeLineEndings } unit TestBasicCodetools; @@ -40,6 +41,7 @@ // FileProcs procedure TestDateToCfgStr; procedure TestFilenameIsMatching; + procedure TestExtractFileUnitname; // SourceLog procedure TestChangeLineEndings; end; @@ -374,6 +376,28 @@ t('*.{p{as,p,},inc}','c.lfm',true,false); end; +procedure TTestBasicCodeTools.TestExtractFileUnitname; + + procedure t(Filename: string; WithNameSpace: boolean; Expected: string); + begin + AssertEquals('ExtractFileUnitname('''+Filename+''','+BoolToStr(WithNameSpace,true)+')',Expected,ExtractFileUnitname(Filename,WithNameSpace)); + end; + +begin + t('a.pas',true,'a'); + t('a.pp',true,'a'); + t('a.p',true,'a'); + t('ab.pas',true,'ab'); + t('a.pas',false,'a'); + t('ab.pas',false,'ab'); + t('a.b.pas',true,'a.b'); + t('a.b.pas',false,'b'); + t('ab.c.pas',true,'ab.c'); + t('ab.c.pas',false,'c'); + t('ab.c.d.pas',true,'ab.c.d'); + t('ab.c.d.pas',false,'d'); +end; + procedure TTestBasicCodeTools.TestChangeLineEndings; procedure t(s, NewLineEnding, Expected: string); diff -Nru lazarus-1.4.4+dfsg/test/codetoolstests/testctrangescan.pas lazarus-1.6+dfsg/test/codetoolstests/testctrangescan.pas --- lazarus-1.4.4+dfsg/test/codetoolstests/testctrangescan.pas 2013-01-16 17:10:59.000000000 +0000 +++ lazarus-1.6+dfsg/test/codetoolstests/testctrangescan.pas 2015-06-16 09:22:42.000000000 +0000 @@ -227,15 +227,15 @@ lsrInterfaceStart: AssertEquals('interface start scanned',true,Tool.FindInterfaceNode<>nil); lsrMainUsesSectionStart: - AssertEquals('main uses section start scanned',true,Tool.FindMainUsesSection<>nil); + AssertEquals('main uses section start scanned',true,Tool.FindMainUsesNode<>nil); lsrMainUsesSectionEnd: - AssertEquals('main uses section end scanned',true,Tool.FindMainUsesSection.FirstChild<>nil); + AssertEquals('main uses section end scanned',true,Tool.FindMainUsesNode.FirstChild<>nil); lsrImplementationStart: AssertEquals('implementation start scanned',true,Tool.FindImplementationNode<>nil); lsrImplementationUsesSectionStart: - AssertEquals('implementation uses section start scanned',true,Tool.FindImplementationUsesSection<>nil); + AssertEquals('implementation uses section start scanned',true,Tool.FindImplementationUsesNode<>nil); lsrImplementationUsesSectionEnd: - AssertEquals('implementation uses section end scanned',true,Tool.FindImplementationUsesSection.FirstChild<>nil); + AssertEquals('implementation uses section end scanned',true,Tool.FindImplementationUsesNode.FirstChild<>nil); lsrInitializationStart: AssertEquals('initialization section start scanned',true,Tool.FindInitializationNode<>nil); lsrFinalizationStart: diff -Nru lazarus-1.4.4+dfsg/test/lazutils/testlconvencoding.pas lazarus-1.6+dfsg/test/lazutils/testlconvencoding.pas --- lazarus-1.4.4+dfsg/test/lazutils/testlconvencoding.pas 2013-07-08 17:57:27.000000000 +0000 +++ lazarus-1.6+dfsg/test/lazutils/testlconvencoding.pas 2015-10-24 21:47:10.000000000 +0000 @@ -12,7 +12,8 @@ interface uses - Classes, SysUtils, fpcunit, LConvEncoding, LazLogger, testglobals, LCLProc; + Classes, SysUtils, fpcunit, LConvEncoding, LazLogger, testglobals, FileProcs, + LazUTF8; type @@ -30,40 +31,41 @@ procedure TTestLConvEncoding.Test_CP_UTF8_CP; - procedure Test(CodePageName: string; const CP2UTF8,UTF82CP: TConvertEncodingFunction); + procedure Test(CodePageName: string); var c: Char; AsUTF8, Back: string; l: integer; + Encoded: boolean; begin for c:=#1 to High(Char) do begin - AsUTF8:=CP2UTF8(c); + AsUTF8:=ConvertEncodingToUTF8(c,CodePageName,Encoded); if AsUTF8='' then AssertEquals('CodePage '+CodePageName+' to UTF8 creates empty string for character #'+IntToStr(ord(c)),true,false); - Back:=UTF82CP(AsUTF8); + Back:=ConvertEncodingFromUTF8(AsUTF8,CodePageName,Encoded); if Back<>c then AssertEquals('CodePage '+CodePageName+' ('+IntToStr(ord(c))+') to UTF8 ('+dbgs(UTF8CharacterToUnicode(PChar(AsUTF8),l))+') and back differ for character #'+IntToStr(ord(c)),DbgStr(c),dbgstr(Back)); end; end; begin - Test('ISO_8859_1',@ISO_8859_1ToUTF8,@UTF8ToISO_8859_1); - Test('ISO_8859_2',@ISO_8859_2ToUTF8,@UTF8ToISO_8859_2); - Test('ISO_8859_15',@ISO_8859_15ToUTF8,@UTF8ToISO_8859_15); - Test('437',@CP437ToUTF8,@UTF8ToCP437); - Test('850',@CP850ToUTF8,@UTF8ToCP850); - Test('852',@CP852ToUTF8,@UTF8ToCP852); - Test('866',@CP866ToUTF8,@UTF8ToCP866); - Test('874',@CP874ToUTF8,@UTF8ToCP874); - Test('1250',@CP1250ToUTF8,@UTF8ToCP1250); - Test('1251',@CP1251ToUTF8,@UTF8ToCP1251); - Test('1252',@CP1252ToUTF8,@UTF8ToCP1252); - Test('1253',@CP1253ToUTF8,@UTF8ToCP1253); - Test('1254',@CP1254ToUTF8,@UTF8ToCP1254); - Test('1255',@CP1255ToUTF8,@UTF8ToCP1255); - Test('1256',@CP1256ToUTF8,@UTF8ToCP1256); - Test('1257',@CP1257ToUTF8,@UTF8ToCP1257); - Test('1258',@CP1258ToUTF8,@UTF8ToCP1258); + Test(EncodingCPIso1); + Test(EncodingCPIso2); + Test(EncodingCPIso15); + Test(EncodingCP437); + Test(EncodingCP850); + Test(EncodingCP852); + Test(EncodingCP866); + Test(EncodingCP874); + Test(EncodingCP1250); + Test(EncodingCP1251); + Test(EncodingCP1252); + Test(EncodingCP1253); + Test(EncodingCP1254); + Test(EncodingCP1255); + Test(EncodingCP1256); + Test(EncodingCP1257); + Test(EncodingCP1258); end; initialization diff -Nru lazarus-1.4.4+dfsg/test/lcltests/testunicode.pas lazarus-1.6+dfsg/test/lcltests/testunicode.pas --- lazarus-1.4.4+dfsg/test/lcltests/testunicode.pas 2009-02-18 00:22:47.000000000 +0000 +++ lazarus-1.6+dfsg/test/lcltests/testunicode.pas 2015-10-24 21:47:10.000000000 +0000 @@ -5,7 +5,7 @@ interface uses - Classes, SysUtils, fpcunit, LCLProc, testglobals; + Classes, SysUtils, fpcunit, testglobals, LazUTF8, lazutf16, LazLogger; type @@ -44,7 +44,7 @@ R := UTF8ToUTF16(SUTF8); AssertEquals('UTF8ToUTF16 of unicode char: ' + IntToHex(U, 6) + ' error! ' + DbgWideStr(SUTF16) + ' ' + DbgWideStr(R), - SUTF16, R); + UTF8Encode(SUTF16), UTF8Encode(R)); end; for I1 := 0 to High(Limits) do // test two char string with limit char values @@ -60,7 +60,7 @@ AssertEquals('UTF8ToUTF16 of two unicode chars: ' + IntToHex(Limits[I1], 6) + IntToHex(Limits[I2], 6) + ' error!', - SUTF16, R); + UTF8Encode(SUTF16), UTF8Encode(R)); end; end; end; @@ -69,7 +69,7 @@ var U: Cardinal; I1, I2: Integer; - SUTF8, S1UTF8, R: UTF8String; + SUTF8, S1UTF8, R: String; SUTF16, S1UTF16: WideString; begin for U := 0 to $10FFFF do @@ -80,7 +80,7 @@ SUTF16 := UnicodeToUTF16(U); R := UTF16ToUTF8(SUTF16); - AssertEquals('UTF16ToUTF8 of unicode char: ' + IntToHex(U, 6) + ' error! ' + DbgStr(SUTF16) + ' ' + DbgStr(R), + AssertEquals('UTF16ToUTF8 of unicode char: ' + IntToHex(U, 6) + ' error! "' + DbgStr(PChar(SUTF16),length(SUTF16)*2) + '" "' + DbgStr(R)+'"', SUTF8, R); end; @@ -116,14 +116,21 @@ end; procedure TTestUnicode.TestUnicodeToUTF16; + + procedure t(a,b: widestring); + begin + if a=b then exit; + AssertEquals(dbgstr(PChar(a),length(a)*2), dbgstr(PChar(b),length(b)*2)); + end; + begin - AssertEquals(#0, UnicodeToUTF16(0)); - AssertEquals(#$D7FF, UnicodeToUTF16($D7FF)); - AssertEquals(#$E000, UnicodeToUTF16($E000)); - AssertEquals(#$FFFF, UnicodeToUTF16($FFFF)); - AssertEquals(#$D800#$DC00, UnicodeToUTF16($10000)); - AssertEquals(#$D800#$DC01, UnicodeToUTF16($10001)); - AssertEquals(#$DBFF#$DFFD, UnicodeToUTF16($10FFFD)); + t(widestring(#0), UnicodeToUTF16(0)); + t(widestring(#$D7FF), UnicodeToUTF16($D7FF)); + t(widestring(#$E000), UnicodeToUTF16($E000)); + t(widestring(#$FFFF), UnicodeToUTF16($FFFF)); + t(widestring(#$D800#$DC00), UnicodeToUTF16($10000)); + t(widestring(#$D800#$DC01), UnicodeToUTF16($10001)); + t(widestring(#$DBFF#$DFFD), UnicodeToUTF16($10FFFD)); end; procedure TTestUnicode.TestUTF8CharacterToUnicode; diff -Nru lazarus-1.4.4+dfsg/test/manual/bidimode_flipchildren/project1.lpi lazarus-1.6+dfsg/test/manual/bidimode_flipchildren/project1.lpi --- lazarus-1.4.4+dfsg/test/manual/bidimode_flipchildren/project1.lpi 2013-12-21 14:28:58.000000000 +0000 +++ lazarus-1.6+dfsg/test/manual/bidimode_flipchildren/project1.lpi 2015-07-04 23:08:27.000000000 +0000 @@ -9,7 +9,6 @@ <Title Value="project1"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> - <Icon Value="0"/> </General> <i18n> <EnableI18N LFM="False"/> @@ -40,12 +39,6 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </Item2> </BuildModes> @@ -66,7 +59,6 @@ <Unit0> <Filename Value="project1.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="project1"/> </Unit0> <Unit1> <Filename Value="unit1.pas"/> @@ -97,12 +89,6 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/test/manual/bidimode_flipchildren/unit1.pas lazarus-1.6+dfsg/test/manual/bidimode_flipchildren/unit1.pas --- lazarus-1.4.4+dfsg/test/manual/bidimode_flipchildren/unit1.pas 2013-12-21 14:28:58.000000000 +0000 +++ lazarus-1.6+dfsg/test/manual/bidimode_flipchildren/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - ExtCtrls, CheckLst; + Classes, Forms, StdCtrls, ExtCtrls, CheckLst; type @@ -23,9 +22,9 @@ procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/test/manual/lcl/textextent/mainform.pas lazarus-1.6+dfsg/test/manual/lcl/textextent/mainform.pas --- lazarus-1.4.4+dfsg/test/manual/lcl/textextent/mainform.pas 2011-11-16 13:06:06.000000000 +0000 +++ lazarus-1.6+dfsg/test/manual/lcl/textextent/mainform.pas 2015-07-04 23:08:27.000000000 +0000 @@ -5,8 +5,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - ExtCtrls; + SysUtils, Forms, Graphics, ExtCtrls; type @@ -16,9 +15,9 @@ Image: TImage; procedure FormCreate(Sender: TObject); private - { private declarations } + public - { public declarations } + end; var diff -Nru lazarus-1.4.4+dfsg/test/manual/lcl/textextent/textextent.lpi lazarus-1.6+dfsg/test/manual/lcl/textextent/textextent.lpi --- lazarus-1.4.4+dfsg/test/manual/lcl/textextent/textextent.lpi 2011-11-16 12:52:23.000000000 +0000 +++ lazarus-1.6+dfsg/test/manual/lcl/textextent/textextent.lpi 2015-07-04 23:08:27.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -18,9 +18,6 @@ <BuildModes Count="2"> <Item1 Name="Default" Default="True"/> <Item2 Name="Qt"> - <MacroValues Count="1"> - <Macro1 Name="LCLWidgetType" Value="qt"/> - </MacroValues> <CompilerOptions> <Version Value="11"/> <Target> @@ -37,12 +34,6 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </Item2> </BuildModes> @@ -65,14 +56,13 @@ <Unit0> <Filename Value="textextent.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="textextent"/> </Unit0> <Unit1> <Filename Value="mainform.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form1"/> + <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <UnitName Value="mainform"/> </Unit1> </Units> </ProjectOptions> @@ -92,12 +82,6 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> diff -Nru lazarus-1.4.4+dfsg/test/manual/png/unit1.pas lazarus-1.6+dfsg/test/manual/png/unit1.pas --- lazarus-1.4.4+dfsg/test/manual/png/unit1.pas 2013-09-19 11:53:38.000000000 +0000 +++ lazarus-1.6+dfsg/test/manual/png/unit1.pas 2015-07-04 23:08:27.000000000 +0000 @@ -8,8 +8,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, - StdCtrls, fpreadgif, fpwritejpeg, fpreadpng, fpimage, fpwritebmp, LCLIntf; + Classes, SysUtils, Forms, ExtCtrls, StdCtrls, LCLIntf, + fpreadgif, fpwritejpeg, fpreadpng, fpimage, fpwritebmp; type diff -Nru lazarus-1.4.4+dfsg/test/runtests.lpi lazarus-1.6+dfsg/test/runtests.lpi --- lazarus-1.4.4+dfsg/test/runtests.lpi 2015-01-05 13:22:31.000000000 +0000 +++ lazarus-1.6+dfsg/test/runtests.lpi 2015-10-24 21:47:10.000000000 +0000 @@ -90,6 +90,7 @@ <Unit1> <Filename Value="testlpi.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="TestLpi"/> </Unit1> <Unit2> <Filename Value="bugtestcase.pas"/> @@ -102,11 +103,11 @@ <Unit4> <Filename Value="lcltests\testunicode.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="TestUnicode"/> </Unit4> <Unit5> <Filename Value="testunits.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="testunits"/> </Unit5> <Unit6> <Filename Value="lcltests\testpen.pas"/> @@ -115,7 +116,6 @@ <Unit7> <Filename Value="lcltests\testtextstrings.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="TestTextStrings"/> </Unit7> <Unit8> <Filename Value="codetoolstests\testbasiccodetools.pas"/> @@ -125,7 +125,6 @@ <Unit9> <Filename Value="lazutils\testlazutils.pas"/> <IsPartOfProject Value="True"/> - <UnitName Value="TestLazUtils"/> </Unit9> <Unit10> <Filename Value="codetoolstests\testctxmlfixfragments.pas"/> @@ -154,6 +153,7 @@ <Unit16> <Filename Value="lazutils\testlconvencoding.pas"/> <IsPartOfProject Value="True"/> + <UnitName Value="TestLConvEncoding"/> </Unit16> </Units> </ProjectOptions> diff -Nru lazarus-1.4.4+dfsg/test/runtests.lpr lazarus-1.6+dfsg/test/runtests.lpr --- lazarus-1.4.4+dfsg/test/runtests.lpr 2013-07-08 16:48:51.000000000 +0000 +++ lazarus-1.6+dfsg/test/runtests.lpr 2015-10-24 21:47:10.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: runtests.lpr 42012 2013-07-08 16:48:51Z mattias $} +{ $Id: runtests.lpr 50159 2015-10-24 21:47:10Z mattias $} { Copyright (C) 2006 Vincent Snijders This source is free software; you can redistribute it and/or modify it under @@ -25,7 +25,7 @@ testglobals, testunits, dom, {Unit needed to set the LCL version and widget set name} LCLVersion, InterfaceBase, Interfaces, TestLazXML, TestAvgLvlTree, - TestMethodJumpTool, testlconvencoding; + TestMethodJumpTool, TestLConvEncoding; type @@ -82,8 +82,8 @@ var n: TDOMElement; begin - n := Doc.CreateElement(name); - n.AppendChild(Doc.CreateTextNode(value)); + n := Doc.CreateElement(UTF8Decode(name)); + n.AppendChild(Doc.CreateTextNode(UTF8Decode(value))); env.AppendChild(n); end; begin diff -Nru lazarus-1.4.4+dfsg/test/testlpi.pas lazarus-1.6+dfsg/test/testlpi.pas --- lazarus-1.4.4+dfsg/test/testlpi.pas 2010-10-22 10:37:57.000000000 +0000 +++ lazarus-1.6+dfsg/test/testlpi.pas 2015-10-24 21:47:10.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: testlpi.pas 27808 2010-10-22 10:37:57Z vincents $} +{ $Id: testlpi.pas 50159 2015-10-24 21:47:10Z mattias $} { Copyright (C) 2006 Vincent Snijders This source is free software; you can redistribute it and/or modify it under @@ -24,7 +24,7 @@ uses Classes, SysUtils, strutils, fpcunit, testregistry, process, UTF8Process, - InterfaceBase, FileUtil, + InterfaceBase, LazFileUtils, LazUTF8, FileUtil, TestGlobals; type diff -Nru lazarus-1.4.4+dfsg/tools/apiwizz/apiwizard.pp lazarus-1.6+dfsg/tools/apiwizz/apiwizard.pp --- lazarus-1.4.4+dfsg/tools/apiwizz/apiwizard.pp 2014-11-12 18:49:00.000000000 +0000 +++ lazarus-1.6+dfsg/tools/apiwizz/apiwizard.pp 2015-08-08 21:06:51.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: apiwizard.pp 46807 2014-11-12 18:49:00Z mattias $ } +{ $Id: apiwizard.pp 49624 2015-08-08 21:06:51Z juha $ } { /*************************************************************************** APIWizard.pp @@ -31,8 +31,8 @@ interface uses - Classes, SysUtils, FileUtil, LazUTF8Classes, LResources, Forms, Controls, - Graphics, Dialogs, StdCtrls, Buttons, ExtCtrls, LCLproc, ComCtrls; + Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, ExtCtrls, LCLproc, ComCtrls, + LazFileUtils, LazUTF8, LazUTF8Classes; type diff -Nru lazarus-1.4.4+dfsg/tools/chmmaker/chmmaker.lpi lazarus-1.6+dfsg/tools/chmmaker/chmmaker.lpi --- lazarus-1.4.4+dfsg/tools/chmmaker/chmmaker.lpi 2014-09-05 08:51:12.000000000 +0000 +++ lazarus-1.6+dfsg/tools/chmmaker/chmmaker.lpi 2015-05-17 15:16:11.000000000 +0000 @@ -25,7 +25,7 @@ <RunParams> <local> <FormatVersion Value="1"/> - <LaunchingApplication Use="True" PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> + <LaunchingApplication PathPlusParams=""/> </local> </RunParams> <RequiredPackages Count="3"> @@ -51,13 +51,14 @@ <ComponentName Value="CHMForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <UnitName Value="unit1"/> </Unit1> <Unit2> <Filename Value="chmsitemapeditor.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="SitemapEditForm"/> + <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> + <UnitName Value="CHMSiteMapEditor"/> </Unit2> </Units> </ProjectOptions> diff -Nru lazarus-1.4.4+dfsg/tools/chmmaker/chmmaker.lpr lazarus-1.6+dfsg/tools/chmmaker/chmmaker.lpr --- lazarus-1.4.4+dfsg/tools/chmmaker/chmmaker.lpr 2014-05-07 20:11:25.000000000 +0000 +++ lazarus-1.6+dfsg/tools/chmmaker/chmmaker.lpr 2015-08-08 21:06:51.000000000 +0000 @@ -3,12 +3,12 @@ {$mode objfpc}{$H+} uses - {$IFDEF UNIX}{$IFDEF UseCThreads} + {$IFDEF UNIX} cthreads, - {$ENDIF}{$ENDIF} + {$ENDIF} Interfaces, // this includes the LCL widgetset - Forms, LazFileUtils - { add your units here }, unit1, CHMSiteMapEditor, lhelpcontrolpkg; + Forms, LazFileUtils, + unit1, CHMSiteMapEditor, lhelpcontrolpkg; var i: Integer; diff -Nru lazarus-1.4.4+dfsg/tools/chmmaker/chmsitemapeditor.pas lazarus-1.6+dfsg/tools/chmmaker/chmsitemapeditor.pas --- lazarus-1.4.4+dfsg/tools/chmmaker/chmsitemapeditor.pas 2012-07-19 07:52:56.000000000 +0000 +++ lazarus-1.6+dfsg/tools/chmmaker/chmsitemapeditor.pas 2015-08-08 21:06:51.000000000 +0000 @@ -5,8 +5,8 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, chmsitemap, - ComCtrls, ExtCtrls, StdCtrls, Buttons; + Classes, SysUtils, chmsitemap, + Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, StdCtrls; type @@ -48,12 +48,10 @@ procedure SubItemBtnClick(Sender: TObject); procedure URLEditChange(Sender: TObject); private - { private declarations } FStream: TStream; FSiteMapType: TSiteMapType; procedure InitControls; public - { public declarations } procedure LoadFromStream(AStream: TStream); function Execute(AStream: TStream; SiteType: TSiteMapType; AvailableLinks: TStrings): Boolean; end; @@ -85,7 +83,7 @@ procedure TSitemapEditForm.CancelBtnClick(Sender: TObject); begin - + // end; procedure TSitemapEditForm.DeleteBtnClick(Sender: TObject); @@ -288,9 +286,8 @@ BackgroundClrBtn.ButtonColor := TColor(ChmSiteMap.BackgroundColor); FolderViewCheck.Checked := ChmSiteMap.UseFolderImages; FontEdit.Text := ChmSiteMap.Font; - - - //ChmSiteMap.Free; + + ChmSiteMap.Free; end; function TSitemapEditForm.Execute(AStream: TStream; SiteType: TSiteMapType; diff -Nru lazarus-1.4.4+dfsg/tools/chmmaker/unit1.lfm lazarus-1.6+dfsg/tools/chmmaker/unit1.lfm --- lazarus-1.4.4+dfsg/tools/chmmaker/unit1.lfm 2014-09-05 08:51:12.000000000 +0000 +++ lazarus-1.6+dfsg/tools/chmmaker/unit1.lfm 2015-06-08 16:10:52.000000000 +0000 @@ -3,38 +3,39 @@ Height = 511 Top = 217 Width = 611 - HorzScrollBar.Page = 573 - VertScrollBar.Page = 424 + HorzScrollBar.Page = 595 + VertScrollBar.Page = 427 ActiveControl = FileListBox AutoScroll = True Caption = 'Compiled HTML Help Project - [Made with Freepascal]' - ClientHeight = 492 + ClientHeight = 491 ClientWidth = 611 Menu = MainMenu1 OnClose = FormClose OnCreate = FormCreate + OnDestroy = FormDestroy ShowInTaskBar = stAlways - LCLVersion = '1.3' + LCLVersion = '1.5' object StatusBar1: TStatusBar Left = 0 - Height = 20 - Top = 472 + Height = 23 + Top = 468 Width = 611 Panels = <> end object GroupBox1: TGroupBox Left = 0 - Height = 472 + Height = 468 Top = 0 Width = 268 Align = alLeft Caption = 'Files' - ClientHeight = 454 + ClientHeight = 448 ClientWidth = 264 TabOrder = 0 object FileListBox: TListBox Left = 0 - Height = 320 + Height = 314 Top = 0 Width = 264 Align = alClient @@ -48,7 +49,7 @@ object Panel2: TPanel Left = 0 Height = 134 - Top = 320 + Top = 314 Width = 264 Align = alBottom ClientHeight = 134 @@ -112,50 +113,50 @@ end object MainPanel: TPanel Left = 268 - Height = 472 + Height = 468 Top = 0 Width = 343 Align = alClient - ClientHeight = 472 + ClientHeight = 468 ClientWidth = 343 TabOrder = 1 object TableOfContentsLabel: TLabel Left = 11 - Height = 13 + Height = 15 Top = 11 - Width = 124 + Width = 133 Caption = 'Table of Contents (*.hhc)' ParentColor = False end object IndexLabel: TLabel Left = 11 - Height = 13 + Height = 15 Top = 59 - Width = 66 + Width = 67 Caption = 'Index (*.hhk)' ParentColor = False end object CompileTimeOptionsLabel: TLabel Left = 11 - Height = 13 + Height = 15 Top = 219 - Width = 102 + Width = 118 Caption = 'Compile time options:' ParentColor = False end object DefaultPageLabel: TLabel Left = 11 - Height = 13 + Height = 15 Top = 108 - Width = 62 + Width = 67 Caption = 'Default Page' ParentColor = False end object CHMFilenameLabel: TLabel Left = 12 - Height = 13 + Height = 15 Top = 356 - Width = 65 + Width = 77 Caption = 'CHM filename' ParentColor = False end @@ -202,7 +203,7 @@ AnchorSideRight.Control = MainPanel AnchorSideRight.Side = asrBottom Left = 276 - Height = 23 + Height = 25 Top = 31 Width = 60 Anchors = [akTop, akRight] @@ -219,7 +220,7 @@ AnchorSideRight.Control = MainPanel AnchorSideRight.Side = asrBottom Left = 276 - Height = 23 + Height = 25 Top = 79 Width = 60 Anchors = [akTop, akRight] @@ -233,19 +234,19 @@ end object FollowLinksCheck: TCheckBox Left = 19 - Height = 17 + Height = 19 Top = 252 - Width = 285 + Width = 307 Caption = 'Parse *.htm* files to include '#10'linked pages and images' Enabled = False TabOrder = 4 end object CreateSearchableCHMCheck: TCheckBox Left = 19 - Height = 17 + Height = 19 Hint = 'Only indexes files added to the project'#10'not files automatically added.' Top = 304 - Width = 139 + Width = 149 Caption = 'Create a searchable chm' ParentShowHint = False ShowHint = True @@ -253,21 +254,21 @@ end object DefaultPageCombo: TComboBox Left = 11 - Height = 21 + Height = 23 Top = 128 Width = 287 AutoSelect = False - ItemHeight = 13 + ItemHeight = 15 Style = csDropDownList TabOrder = 6 end object CompileBtn: TButton AnchorSideLeft.Side = asrBottom AnchorSideRight.Control = CompileViewBtn - Left = 107 - Height = 31 - Top = 427 - Width = 71 + Left = 86 + Height = 33 + Top = 421 + Width = 79 Anchors = [akRight, akBottom] AutoSize = True BorderSpacing.Right = 9 @@ -279,10 +280,10 @@ object CompileViewBtn: TButton AnchorSideLeft.Control = CompileBtn AnchorSideLeft.Side = asrBottom - Left = 187 - Height = 31 - Top = 427 - Width = 117 + Left = 174 + Height = 33 + Top = 421 + Width = 130 Anchors = [akRight, akBottom] AutoSize = True BorderSpacing.Right = 13 diff -Nru lazarus-1.4.4+dfsg/tools/chmmaker/unit1.pas lazarus-1.6+dfsg/tools/chmmaker/unit1.pas --- lazarus-1.4.4+dfsg/tools/chmmaker/unit1.pas 2014-09-15 12:16:21.000000000 +0000 +++ lazarus-1.6+dfsg/tools/chmmaker/unit1.pas 2015-12-04 17:35:23.000000000 +0000 @@ -5,9 +5,9 @@ interface uses - Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, - Buttons, ComCtrls, chmsitemap, SynEdit, LazFileUtils, LazLogger, Menus, - ExtCtrls, EditBtn, LCLProc, chmfilewriter, types; + Classes, SysUtils, types, chmsitemap, chmfilewriter, + Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, Menus, ExtCtrls, EditBtn, + LazFileUtils, UTF8Process; type @@ -71,6 +71,7 @@ ARect: TRect; {%H-}State: TOwnerDrawState); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); procedure IndexEditAcceptFileName(Sender: TObject; var Value: String); procedure IndexEditBtnClick(Sender: TObject); procedure ProjCloseItemClick(Sender: TObject); @@ -244,7 +245,8 @@ var LHelpName: String; LHelpConn: TLHelpConnection; - Proc: TProcess; + Proc: TProcessUTF8; + ext: String; begin if ChmFileNameEdit.FileName = '' then begin @@ -254,17 +256,18 @@ CompileBtnClick(Sender); // open // ... - LHelpName := '../../components/chmhelp/lhelp/lhelp' + ExtractFileExt(Application.Name); + ext := ExtractFileExt(Application.ExeName); + LHelpName := '../../components/chmhelp/lhelp/lhelp' + ext; if not FileExists(LHelpName) then begin if MessageDlg('LHelp could not be located at '+ LHelpName +' Try to build using lazbuild?', mtError, [mbCancel, mbYes], 0) = mrYes then begin - if not FileExists('../../lazbuild') then + if not FileExists('../../lazbuild' + ext) then begin MessageDlg('lazbuild coul not be found.', mtError, [mbCancel], 0); Exit; end; - Proc := TProcess.Create(Self); + Proc := TProcessUTF8.Create(Self); Proc.CommandLine := '../../../lazbuild ./lhelp.lpi'; SetCurrentDir('../../components/chmhelp/lhelp/'); Proc.Options := [poWaitOnExit]; @@ -292,6 +295,7 @@ procedure TCHMForm.FileListBoxDrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); begin + FileListbox.Canvas.FillRect(ARect); if Pos('..', FileListBox.Items.Strings[Index]) > 0 then begin // These items won't be added to the chm because they are not within the project dir @@ -302,7 +306,10 @@ FileListBox.Canvas.Frame(ARect); end; // Draw item text - FileListBox.Canvas.TextRect(ARect, 2, ARect.Top+2, FileListBox.Items[Index]); + FileListBox.Canvas.TextRect(ARect, + 2, (ARect.Top + ARect.Bottom - FileListbox.Canvas.TextHeight('Tg')) div 2, + FileListBox.Items[Index] + ); end; procedure TCHMForm.FormClose(Sender: TObject; var CloseAction: TCloseAction); @@ -326,6 +333,11 @@ CloseProject; end; +procedure TCHMForm.FormDestroy(Sender: TObject); +begin + CloseProject; +end; + procedure TCHMForm.IndexEditAcceptFileName(Sender: TObject; var Value: String); begin Modified := True; @@ -354,7 +366,11 @@ Stream := TFileStream.Create(FileName, fmCreate or fmOpenReadWrite); end; - if SitemapEditForm.Execute(Stream, stIndex, FileListBox.Items) then IndexEdit.FileName := FileName; + try + if SitemapEditForm.Execute(Stream, stIndex, FileListBox.Items) then IndexEdit.FileName := FileName; + finally + Stream.Free; + end; end; procedure TCHMForm.ProjCloseItemClick(Sender: TObject); @@ -436,12 +452,13 @@ Stream := TFileStream.Create(FileName, fmCreate or fmOpenReadWrite); end; - BDir := ExtractFilePath(Project.FileName); - - FileName := ExtractRelativepath(BDir, FileName); - - - if SitemapEditForm.Execute(Stream, stTOC, FileListBox.Items) then TOCEdit.FileName := FileName; + try + BDir := ExtractFilePath(Project.FileName); + FileName := ExtractRelativepath(BDir, FileName); + if SitemapEditForm.Execute(Stream, stTOC, FileListBox.Items) then TOCEdit.FileName := FileName; + finally + Stream.Free; + end; end; function TCHMForm.GetModified: Boolean; diff -Nru lazarus-1.4.4+dfsg/tools/debugserver/frmmain.pp lazarus-1.6+dfsg/tools/debugserver/frmmain.pp --- lazarus-1.4.4+dfsg/tools/debugserver/frmmain.pp 2014-09-11 21:07:42.000000000 +0000 +++ lazarus-1.6+dfsg/tools/debugserver/frmmain.pp 2015-08-08 21:06:51.000000000 +0000 @@ -24,8 +24,8 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - Menus, ActnList, ComCtrls, ExtCtrls, simpleipc, dbugmsg, clipbrd; + Classes, SysUtils, IniFiles, simpleipc, dbugmsg, + Forms, Controls, Dialogs, Menus, ActnList, ComCtrls, ExtCtrls, Clipbrd; type @@ -99,7 +99,6 @@ procedure MIToolbarClick(Sender: TObject); procedure MViewClick(Sender: TObject); private - { private declarations } FPaused : Boolean; FSrv : TSimpleIPCServer; FShowOnStartUp, @@ -132,7 +131,6 @@ procedure StartServer; procedure StopServer; public - { public declarations } Property StayOnTop : Boolean Read GetStayOnTop Write SetStayOnTop; Property ShowToolbar : Boolean Read GetShowToolbar Write SetShowToolBar; end; @@ -144,7 +142,7 @@ {$R *.lfm} -uses inifiles,frmoptions; +uses frmoptions; { TMainForm } diff -Nru lazarus-1.4.4+dfsg/tools/debugserver/frmoptions.pp lazarus-1.6+dfsg/tools/debugserver/frmoptions.pp --- lazarus-1.4.4+dfsg/tools/debugserver/frmoptions.pp 2010-12-30 11:09:21.000000000 +0000 +++ lazarus-1.6+dfsg/tools/debugserver/frmoptions.pp 2015-08-08 21:06:51.000000000 +0000 @@ -24,8 +24,7 @@ interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - ButtonPanel, StdCtrls; + Forms, ButtonPanel, StdCtrls; type @@ -44,9 +43,7 @@ function GetB(AIndex: integer): Boolean; function GetCB(AIndex: Integer): TCheckBox; procedure SetB(AIndex: integer; const AValue: Boolean); - { private declarations } public - { public declarations } Property ShowOnStartup : Boolean Index 0 Read GetB Write SetB; Property ShowOnMessage : Boolean Index 1 Read GetB Write SetB; Property NewMessageAtBottom : Boolean Index 2 Read GetB Write SetB; diff -Nru lazarus-1.4.4+dfsg/tools/glazres/glazres.lpi lazarus-1.6+dfsg/tools/glazres/glazres.lpi --- lazarus-1.4.4+dfsg/tools/glazres/glazres.lpi 2013-05-11 08:30:06.000000000 +0000 +++ lazarus-1.6+dfsg/tools/glazres/glazres.lpi 2015-08-08 21:06:51.000000000 +0000 @@ -1,15 +1,15 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> <PathDelim Value="\"/> <General> + <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> <Title Value="glazres"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <Icon Value="0"/> - <ActiveWindowIndexAtStart Value="0"/> </General> <i18n> <EnableI18N LFM="False"/> @@ -17,7 +17,7 @@ <VersionInfo> <StringTable ProductVersion=""/> </VersionInfo> - <BuildModes Count="2" Active="Release"> + <BuildModes Count="2"> <Item1 Name="Debug" Default="True"/> <Item2 Name="Release"> <CompilerOptions> @@ -49,12 +49,6 @@ </Win32> </Options> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </Item2> </BuildModes> @@ -73,15 +67,10 @@ <PackageName Value="LCL"/> </Item1> </RequiredPackages> - <Units Count="33"> + <Units Count="2"> <Unit0> <Filename Value="glazres.lpr"/> <IsPartOfProject Value="True"/> - <UnitName Value="glazres"/> - <WindowIndex Value="0"/> - <TopLine Value="1"/> - <CursorPos X="1" Y="1"/> - <UsageCount Value="39"/> </Unit0> <Unit1> <Filename Value="glazresmain.pp"/> @@ -89,370 +78,8 @@ <ComponentName Value="GLazResForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <UnitName Value="glazresmain"/> - <IsVisibleTab Value="True"/> - <EditorIndex Value="0"/> - <WindowIndex Value="0"/> - <TopLine Value="508"/> - <CursorPos X="6" Y="431"/> - <UsageCount Value="39"/> - <Loaded Value="True"/> - <LoadedDesigner Value="True"/> </Unit1> - <Unit2> - <Filename Value="C:\Documents and Settings\AndyK\My Documents\lazprojects\Addons\TabbedHeader.pas"/> - <UnitName Value="TabbedHeader"/> - <WindowIndex Value="0"/> - <TopLine Value="1"/> - <CursorPos X="3" Y="7"/> - <UsageCount Value="14"/> - <DefaultSyntaxHighlighter Value="Delphi"/> - </Unit2> - <Unit3> - <Filename Value="..\lcl\include\canvas.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="916"/> - <CursorPos X="1" Y="932"/> - <UsageCount Value="8"/> - </Unit3> - <Unit4> - <Filename Value="..\lcl\buttons.pp"/> - <UnitName Value="Buttons"/> - <WindowIndex Value="0"/> - <TopLine Value="506"/> - <CursorPos X="21" Y="382"/> - <UsageCount Value="8"/> - </Unit4> - <Unit5> - <Filename Value="..\lcl\chart.pp"/> - <UnitName Value="Chart"/> - <WindowIndex Value="0"/> - <TopLine Value="332"/> - <CursorPos X="32" Y="249"/> - <UsageCount Value="8"/> - </Unit5> - <Unit6> - <Filename Value="..\lcl\comctrls.pp"/> - <UnitName Value="ComCtrls"/> - <WindowIndex Value="0"/> - <TopLine Value="1"/> - <CursorPos X="93" Y="3"/> - <UsageCount Value="8"/> - </Unit6> - <Unit7> - <Filename Value="..\lcl\controls.pp"/> - <UnitName Value="Controls"/> - <WindowIndex Value="0"/> - <TopLine Value="3864"/> - <CursorPos X="29" Y="3884"/> - <UsageCount Value="8"/> - </Unit7> - <Unit8> - <Filename Value="..\lcl\editbtn.pas"/> - <UnitName Value="EditBtn"/> - <WindowIndex Value="0"/> - <TopLine Value="1"/> - <CursorPos X="1" Y="1"/> - <UsageCount Value="8"/> - </Unit8> - <Unit9> - <Filename Value="..\lcl\grids.pas"/> - <UnitName Value="Grids"/> - <WindowIndex Value="0"/> - <TopLine Value="595"/> - <CursorPos X="28" Y="3253"/> - <UsageCount Value="8"/> - </Unit9> - <Unit10> - <Filename Value="..\lcl\include\customcontrol.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="114"/> - <CursorPos X="1" Y="134"/> - <UsageCount Value="8"/> - </Unit10> - <Unit11> - <Filename Value="..\lcl\include\control.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="3460"/> - <CursorPos X="1" Y="3480"/> - <UsageCount Value="8"/> - </Unit11> - <Unit12> - <Filename Value="..\lcl\include\rasterimage.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="293"/> - <CursorPos X="1" Y="308"/> - <UsageCount Value="8"/> - </Unit12> - <Unit13> - <Filename Value="..\lcl\include\custombitmap.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="335"/> - <CursorPos X="1" Y="354"/> - <UsageCount Value="8"/> - </Unit13> - <Unit14> - <Filename Value="..\lcl\graphics.pp"/> - <UnitName Value="Graphics"/> - <WindowIndex Value="0"/> - <TopLine Value="986"/> - <CursorPos X="34" Y="984"/> - <UsageCount Value="8"/> - </Unit14> - <Unit15> - <Filename Value="..\lcl\include\brush.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="181"/> - <CursorPos X="1" Y="197"/> - <UsageCount Value="8"/> - </Unit15> - <Unit16> - <Filename Value="..\lcl\include\winapi.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="276"/> - <CursorPos X="1" Y="289"/> - <UsageCount Value="8"/> - </Unit16> - <Unit17> - <Filename Value="..\lcl\interfaces\win32\win32winapi.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="1444"/> - <CursorPos X="1" Y="1460"/> - <UsageCount Value="8"/> - </Unit17> - <Unit18> - <Filename Value="lazres.pp"/> - <UnitName Value="LazRes"/> - <WindowIndex Value="0"/> - <TopLine Value="22"/> - <CursorPos X="1" Y="34"/> - <UsageCount Value="18"/> - </Unit18> - <Unit19> - <Filename Value="..\lcl\lresources.pp"/> - <UnitName Value="LResources"/> - <WindowIndex Value="0"/> - <TopLine Value="1197"/> - <CursorPos X="1" Y="1211"/> - <UsageCount Value="14"/> - </Unit19> - <Unit20> - <Filename Value="C:\Documents and Settings\AndyK\My Documents\lazprojects\Addons\smithchart.pas"/> - <UnitName Value="Smithchart"/> - <WindowIndex Value="0"/> - <TopLine Value="1"/> - <CursorPos X="52" Y="15"/> - <UsageCount Value="14"/> - <DefaultSyntaxHighlighter Value="Delphi"/> - </Unit20> - <Unit21> - <Filename Value="C:\Documents and Settings\AndyK\My Documents\lazprojects\Addons\Smithchart.lrs"/> - <WindowIndex Value="0"/> - <TopLine Value="1"/> - <CursorPos X="17" Y="1"/> - <UsageCount Value="14"/> - <DefaultSyntaxHighlighter Value="Delphi"/> - </Unit21> - <Unit22> - <Filename Value="C:\devel\lazarus\tools\lazres.pp"/> - <UnitName Value="LazRes"/> - <WindowIndex Value="0"/> - <TopLine Value="31"/> - <CursorPos X="1" Y="56"/> - <UsageCount Value="10"/> - </Unit22> - <Unit23> - <Filename Value="C:\devel\lazarus\lcl\stdctrls.pp"/> - <UnitName Value="StdCtrls"/> - <WindowIndex Value="0"/> - <TopLine Value="1538"/> - <CursorPos X="46" Y="1549"/> - <UsageCount Value="13"/> - </Unit23> - <Unit24> - <Filename Value="C:\devel\lazarus\lcl\include\customlistbox.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="459"/> - <CursorPos X="3" Y="462"/> - <UsageCount Value="13"/> - </Unit24> - <Unit25> - <Filename Value="C:\devel\lazarus\lcl\lcltype.pp"/> - <UnitName Value="LCLType"/> - <WindowIndex Value="0"/> - <TopLine Value="1127"/> - <CursorPos X="5" Y="1141"/> - <UsageCount Value="13"/> - </Unit25> - <Unit26> - <Filename Value="glazresmain.lfm"/> - <WindowIndex Value="0"/> - <TopLine Value="217"/> - <CursorPos X="1" Y="1"/> - <UsageCount Value="10"/> - <DefaultSyntaxHighlighter Value="LFM"/> - </Unit26> - <Unit27> - <Filename Value="C:\devel\lazarus\lcl\lresources.pp"/> - <UnitName Value="LResources"/> - <WindowIndex Value="0"/> - <TopLine Value="3038"/> - <CursorPos X="3" Y="3040"/> - <UsageCount Value="12"/> - </Unit27> - <Unit28> - <Filename Value="C:\devel\lazarus\lcl\forms.pp"/> - <UnitName Value="Forms"/> - <WindowIndex Value="0"/> - <TopLine Value="1356"/> - <CursorPos X="15" Y="1369"/> - <UsageCount Value="10"/> - </Unit28> - <Unit29> - <Filename Value="C:\devel\fpc\source\rtl\objpas\sysutils\osutilsh.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="25"/> - <CursorPos X="10" Y="39"/> - <UsageCount Value="11"/> - </Unit29> - <Unit30> - <Filename Value="C:\devel\fpc\source\rtl\win\sysutils.pp"/> - <UnitName Value="sysutils"/> - <WindowIndex Value="0"/> - <TopLine Value="1089"/> - <CursorPos X="3" Y="1091"/> - <UsageCount Value="11"/> - </Unit30> - <Unit31> - <Filename Value="C:\devel\fpc\source\rtl\objpas\sysutils\osutil.inc"/> - <WindowIndex Value="0"/> - <TopLine Value="67"/> - <CursorPos X="30" Y="84"/> - <UsageCount Value="11"/> - </Unit31> - <Unit32> - <Filename Value="C:\devel\fpc\source\packages\fcl-base\src\inifiles.pp"/> - <UnitName Value="IniFiles"/> - <WindowIndex Value="0"/> - <TopLine Value="608"/> - <CursorPos X="3" Y="612"/> - <UsageCount Value="11"/> - </Unit32> </Units> - <JumpHistory Count="28" HistoryIndex="27"> - <Position1> - <Filename Value="glazresmain.pp"/> - <Caret Line="423" Column="20" TopLine="409"/> - </Position1> - <Position2> - <Filename Value="glazresmain.pp"/> - <Caret Line="85" Column="34" TopLine="61"/> - </Position2> - <Position3> - <Filename Value="glazresmain.pp"/> - <Caret Line="319" Column="3" TopLine="283"/> - </Position3> - <Position4> - <Filename Value="glazresmain.pp"/> - <Caret Line="425" Column="20" TopLine="414"/> - </Position4> - <Position5> - <Filename Value="glazresmain.pp"/> - <Caret Line="75" Column="26" TopLine="52"/> - </Position5> - <Position6> - <Filename Value="glazresmain.pp"/> - <Caret Line="114" Column="72" TopLine="97"/> - </Position6> - <Position7> - <Filename Value="glazresmain.pp"/> - <Caret Line="449" Column="22" TopLine="442"/> - </Position7> - <Position8> - <Filename Value="glazresmain.pp"/> - <Caret Line="455" Column="1" TopLine="441"/> - </Position8> - <Position9> - <Filename Value="glazresmain.pp"/> - <Caret Line="341" Column="6" TopLine="330"/> - </Position9> - <Position10> - <Filename Value="glazresmain.pp"/> - <Caret Line="351" Column="14" TopLine="330"/> - </Position10> - <Position11> - <Filename Value="glazresmain.pp"/> - <Caret Line="379" Column="1" TopLine="378"/> - </Position11> - <Position12> - <Filename Value="glazresmain.pp"/> - <Caret Line="510" Column="16" TopLine="487"/> - </Position12> - <Position13> - <Filename Value="glazresmain.pp"/> - <Caret Line="160" Column="1" TopLine="132"/> - </Position13> - <Position14> - <Filename Value="glazresmain.pp"/> - <Caret Line="132" Column="14" TopLine="119"/> - </Position14> - <Position15> - <Filename Value="glazresmain.pp"/> - <Caret Line="536" Column="1" TopLine="521"/> - </Position15> - <Position16> - <Filename Value="glazresmain.pp"/> - <Caret Line="150" Column="1" TopLine="134"/> - </Position16> - <Position17> - <Filename Value="glazresmain.pp"/> - <Caret Line="525" Column="1" TopLine="525"/> - </Position17> - <Position18> - <Filename Value="glazresmain.pp"/> - <Caret Line="155" Column="1" TopLine="134"/> - </Position18> - <Position19> - <Filename Value="glazresmain.pp"/> - <Caret Line="535" Column="1" TopLine="516"/> - </Position19> - <Position20> - <Filename Value="glazresmain.pp"/> - <Caret Line="163" Column="6" TopLine="150"/> - </Position20> - <Position21> - <Filename Value="glazresmain.pp"/> - <Caret Line="474" Column="1" TopLine="474"/> - </Position21> - <Position22> - <Filename Value="glazresmain.pp"/> - <Caret Line="453" Column="1" TopLine="332"/> - </Position22> - <Position23> - <Filename Value="glazresmain.pp"/> - <Caret Line="356" Column="1" TopLine="342"/> - </Position23> - <Position24> - <Filename Value="glazresmain.pp"/> - <Caret Line="66" Column="51" TopLine="52"/> - </Position24> - <Position25> - <Filename Value="glazresmain.pp"/> - <Caret Line="188" Column="8" TopLine="160"/> - </Position25> - <Position26> - <Filename Value="glazresmain.pp"/> - <Caret Line="193" Column="3" TopLine="191"/> - </Position26> - <Position27> - <Filename Value="glazresmain.pp"/> - <Caret Line="500" Column="37" TopLine="497"/> - </Position27> - <Position28> - <Filename Value="glazresmain.pp"/> - <Caret Line="469" Column="34" TopLine="453"/> - </Position28> - </JumpHistory> </ProjectOptions> <CompilerOptions> <Version Value="11"/> @@ -477,12 +104,6 @@ <UseHeaptrc Value="True"/> </Debugging> </Linking> - <Other> - <CompilerMessages> - <UseMsgFile Value="True"/> - </CompilerMessages> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> <Debugging> <Exceptions Count="3"> @@ -497,5 +118,4 @@ </Item3> </Exceptions> </Debugging> - <EditorMacros Count="0"/> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/tools/glazres/glazresmain.lfm lazarus-1.6+dfsg/tools/glazres/glazresmain.lfm --- lazarus-1.4.4+dfsg/tools/glazres/glazresmain.lfm 2014-12-20 16:20:05.000000000 +0000 +++ lazarus-1.6+dfsg/tools/glazres/glazresmain.lfm 2015-08-08 21:06:51.000000000 +0000 @@ -184,12 +184,12 @@ OnClose = FormClose OnCreate = FormCreate OnShow = FormShow - LCLVersion = '1.3' + LCLVersion = '1.5' object LrsLabel: TLabel Left = 16 - Height = 15 + Height = 17 Top = 14 - Width = 174 + Width = 154 Caption = 'Lazarus Resource Filename' ParentColor = False end @@ -258,16 +258,14 @@ ItemHeight = 0 MultiSelect = True OnDrawItem = FileListBoxDrawItem - ScrollWidth = 572 Style = lbOwnerDrawFixed TabOrder = 1 - TopIndex = -1 end object FilesLabel: TLabel Left = 16 - Height = 15 + Height = 17 Top = 64 - Width = 94 + Width = 86 Caption = 'Files to include' ParentColor = False end @@ -373,7 +371,7 @@ end object DestEdt: TFileNameEdit Left = 16 - Height = 21 + Height = 31 Top = 32 Width = 552 OnAcceptFileName = DestEdtAcceptFileName @@ -392,9 +390,9 @@ end object MessagesLabel: TLabel Left = 16 - Height = 15 + Height = 17 Top = 304 - Width = 64 + Width = 56 Caption = 'Messages' ParentColor = False end diff -Nru lazarus-1.4.4+dfsg/tools/glazres/glazresmain.pp lazarus-1.6+dfsg/tools/glazres/glazresmain.pp --- lazarus-1.4.4+dfsg/tools/glazres/glazresmain.pp 2014-12-20 16:12:33.000000000 +0000 +++ lazarus-1.6+dfsg/tools/glazres/glazresmain.pp 2015-08-08 21:06:51.000000000 +0000 @@ -33,9 +33,10 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - LCLProc, LResources, Buttons, EditBtn, LazUtf8Classes, Types, LCLType, - ExtDlgs, IniFiles; + Classes, SysUtils, Types, IniFiles, + Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, ExtDlgs, EditBtn, + LResources, LCLProc, LCLType, + LazFileUtils, LazUTF8, LazUtf8Classes; type @@ -70,7 +71,6 @@ procedure AddAnyBtnClick(Sender: TObject); procedure StartBtnClick(Sender: TObject); private - { private declarations } FIniFileName: String; procedure CreateAnchors; procedure ResizeControls({%H-}Dummy: PtrInt); diff -Nru lazarus-1.4.4+dfsg/tools/iconvtable_dbcs.pas lazarus-1.6+dfsg/tools/iconvtable_dbcs.pas --- lazarus-1.4.4+dfsg/tools/iconvtable_dbcs.pas 2014-11-12 18:36:58.000000000 +0000 +++ lazarus-1.6+dfsg/tools/iconvtable_dbcs.pas 2015-08-08 21:06:51.000000000 +0000 @@ -25,8 +25,8 @@ {$IFDEF Unix} cthreads, {$ENDIF} - Classes, SysUtils, Unix, LazUTF8, FileUtil, LazLogger, LazFileUtils, MTProcs, - LConvEncoding, LazUTF8Classes; + Classes, SysUtils, Unix, MTProcs, + LazFileUtils, LazUTF8, LazUTF8Classes, LazLogger, LConvEncoding; var FromEncoding: String; diff -Nru lazarus-1.4.4+dfsg/tools/iconvtable.lpi lazarus-1.6+dfsg/tools/iconvtable.lpi --- lazarus-1.4.4+dfsg/tools/iconvtable.lpi 2012-03-30 08:19:07.000000000 +0000 +++ lazarus-1.6+dfsg/tools/iconvtable.lpi 2015-03-12 12:25:59.000000000 +0000 @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="9"/> @@ -44,8 +44,5 @@ </ProjectOptions> <CompilerOptions> <Version Value="11"/> - <Other> - <CompilerPath Value="$(CompPath)"/> - </Other> </CompilerOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/tools/iconvtable.pas lazarus-1.6+dfsg/tools/iconvtable.pas --- lazarus-1.4.4+dfsg/tools/iconvtable.pas 2014-11-12 18:35:40.000000000 +0000 +++ lazarus-1.6+dfsg/tools/iconvtable.pas 2015-08-08 21:06:51.000000000 +0000 @@ -23,7 +23,8 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, Unix, LazUTF8, FileUtil, LazUTF8Classes; + Classes, SysUtils, Unix, + LazFileUtils, LazUTF8, LazUTF8Classes; var Table: array[0..255] of shortstring; @@ -212,9 +213,12 @@ else if UniCode=TableIndex then writeln(' '+IntToStr(UniCode)+'..'+IntToStr(UniCode+j) +': Result:=Unicode;') - else + else begin + s:=IntToStr(TableIndex-UniCode); + if s[1]<>'-' then s:='+'+s; writeln(' '+IntToStr(UniCode)+'..'+IntToStr(UniCode+j) - +': Result:=Unicode-'+IntToStr(UniCode-TableIndex)+';'); + +': Result:=Unicode'+s+';'); + end; inc(i,j); end; inc(i); diff -Nru lazarus-1.4.4+dfsg/tools/install/create_fpc_deb.sh lazarus-1.6+dfsg/tools/install/create_fpc_deb.sh --- lazarus-1.4.4+dfsg/tools/install/create_fpc_deb.sh 2013-05-17 21:58:06.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/create_fpc_deb.sh 2015-12-05 11:27:50.000000000 +0000 @@ -222,10 +222,11 @@ if test -z "$BINUTILSPREFIX" then # need up to date samplecfg that chains cross compiler additions - grep 'fpc-cross.cfg' $DebianInstallDir/lib/fpc/$FPCVersion/samplecfg &>/dev/null || \ + SampleCfg=$DebianInstallDir/lib/fpc/$FPCVersion/samplecfg + grep 'fpc-cross.cfg' "$SampleCfg" &>/dev/null || \ sed -i -e "/^FPCPATH=/aFPCPARENT=\"\`dirname \"\$1\"\`\" -;/^#ENDIF NEEDCROSSBINUTILS/i#include \$FPCPARENT/fpc-cross.cfg" $DebianInstallDir/lib/fpc/$FPCVersion/samplecfg - else cat > $DebianInstallDir/lib/fpc/$FPCVersion/fpc${TARGET_SUFFIX}.cfg <<CROSS +;/^#ENDIF NEEDCROSSBINUTILS/i#include \$FPCPARENT/fpc-cross.cfg" "$SampleCfg" + else cat > $DebianInstallDir/lib/fpc/$FPCVersion/fpc${TARGET_SUFFIX}.cfg <<CROSS # Detect $TARGET compiles #IF \$fpc-target = $TARGET -XP$BINUTILSPREFIX diff -Nru lazarus-1.4.4+dfsg/tools/install/linux/editoroptions.xml lazarus-1.6+dfsg/tools/install/linux/editoroptions.xml --- lazarus-1.4.4+dfsg/tools/install/linux/editoroptions.xml 2007-11-02 15:18:01.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/linux/editoroptions.xml 2016-02-14 09:48:23.000000000 +0000 @@ -1,6 +1,6 @@ <?xml version="1.0"?> <CONFIG> - <EditorOptions Version="2"> + <EditorOptions Version="11"> <Display EditorFont="-adobe-courier-medium-r-normal-*-*-*-*-*-*-*-iso10646-1" ExtraLineSpacing="2"/> </EditorOptions> </CONFIG> diff -Nru lazarus-1.4.4+dfsg/tools/install/linux/environmentoptions.xml lazarus-1.6+dfsg/tools/install/linux/environmentoptions.xml --- lazarus-1.4.4+dfsg/tools/install/linux/environmentoptions.xml 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/linux/environmentoptions.xml 2016-02-14 09:48:23.000000000 +0000 @@ -1,7 +1,7 @@ <?xml version="1.0"?> <CONFIG> <EnvironmentOptions> - <Version Value="107" Lazarus="1.4.4"/> + <Version Value="109" Lazarus="1.6"/> <LazarusDirectory Value="__LAZARUSDIR__"> <History Count="1"> <Item1 Value="/usr/lib/lazarus/"/> diff -Nru lazarus-1.4.4+dfsg/tools/install/macosx/environmentoptions.xml lazarus-1.6+dfsg/tools/install/macosx/environmentoptions.xml --- lazarus-1.4.4+dfsg/tools/install/macosx/environmentoptions.xml 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/macosx/environmentoptions.xml 2016-02-14 09:48:23.000000000 +0000 @@ -1,7 +1,7 @@ <?xml version="1.0"?> <CONFIG> <EnvironmentOptions> - <Version Value="107" Lazarus="1.4.4"/> + <Version Value="109" Lazarus="1.6"/> <LazarusDirectory Value="/Developer/lazarus/"> <History Count="1"> <Item1 Value="/Developer/lazarus/"/> diff -Nru lazarus-1.4.4+dfsg/tools/install/rpm/fpc.spec.template lazarus-1.6+dfsg/tools/install/rpm/fpc.spec.template --- lazarus-1.4.4+dfsg/tools/install/rpm/fpc.spec.template 2013-06-08 23:23:51.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/rpm/fpc.spec.template 2016-01-30 12:35:02.000000000 +0000 @@ -89,6 +89,18 @@ %install rm -rf %{buildroot} FPCMAKE=`pwd`/utils/fpcm/fpcmake +if [ -f "$FPCMAKE" ]; then + echo found fpcmake: $FPCMAKE +else + FPCMAKE=`pwd`/utils/fpcm/bin/*-linux/fpcmake + FPCMAKE=`echo $FPCMAKE` +fi +if [ -f "$FPCMAKE" ]; then + echo found fpcmake: $FPCMAKE +else + echo Error: fpcmake not found: $FPCMAKE + exit 1 +fi DATA2INC=`pwd`/utils/data2inc NEWPP=`pwd`/compiler/%{ppcname} FPCVERSION=`${NEWPP} -iV` @@ -134,7 +146,7 @@ rm -rf %{buildroot}%{_defaultdocdir}/fpc-libc-* rm -rf %{buildroot}%{_defaultdocdir}/fpc-symbolic-* # 2.7.1 ignores the INSTALL_DOC variable and writes some files directly to /usr/share/doc -rm -rf %{buildroot}/usr/share/doc/fpc-symbolic-* +rm -rf %{buildroot}/usr/share/doc/fpc-* %clean rm -rf %{buildroot} @@ -167,7 +179,7 @@ %{_datadir}/fpcsrc %changelog -* Tue Jul 28 2005 Joost van der Sluis <joost@cnoc.nl> 2.0.0-1 +* Thu Jul 28 2005 Joost van der Sluis <joost@cnoc.nl> 2.0.0-1 - Added some requirements - Added COPYING-info to %%doc @@ -176,7 +188,7 @@ - Silenced post-script - disabled the debuginfo-package -* Sat Jun 5 2005 Joost van der Sluis <joost@cnoc.nl> 2.0.0-0.5 +* Sun Jun 5 2005 Joost van der Sluis <joost@cnoc.nl> 2.0.0-0.5 - Added doc-subpackage - Added src-subpackage diff -Nru lazarus-1.4.4+dfsg/tools/install/win/environmentoptions.xml lazarus-1.6+dfsg/tools/install/win/environmentoptions.xml --- lazarus-1.4.4+dfsg/tools/install/win/environmentoptions.xml 2015-10-03 16:42:36.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/win/environmentoptions.xml 2016-02-14 09:48:23.000000000 +0000 @@ -1,7 +1,7 @@ <?xml version="1.0"?> <CONFIG> <EnvironmentOptions> - <Version Value="107" Lazarus="1.4.4"/> + <Version Value="109" Lazarus="1.6"/> <LazarusDirectory Value="%LazDir%"> </LazarusDirectory> <CompilerFilename Value="%FpcBinDir%\fpc.exe"> diff -Nru lazarus-1.4.4+dfsg/tools/install/win/innoscript/conffile.pas lazarus-1.6+dfsg/tools/install/win/innoscript/conffile.pas --- lazarus-1.4.4+dfsg/tools/install/win/innoscript/conffile.pas 2013-08-30 14:49:13.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/win/innoscript/conffile.pas 2015-01-20 11:21:46.000000000 +0000 @@ -47,7 +47,7 @@ s := copy(s, 2, length(s)-2) else if (s[1] = '''') and (s[length(s)] = '''') then - s := copy(s, 2, length(s)-2) + s := copy(s, 2, length(s)-2); if s = '' then exit; diff -Nru lazarus-1.4.4+dfsg/tools/install/win/lazarus.fr.isl lazarus-1.6+dfsg/tools/install/win/lazarus.fr.isl --- lazarus-1.4.4+dfsg/tools/install/win/lazarus.fr.isl 2014-03-10 19:11:45.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/win/lazarus.fr.isl 2016-01-03 12:54:33.000000000 +0000 @@ -11,50 +11,50 @@ AssociateGroup=Associer les extensions de fichiers CheckSecondClick=Crer une nouvelle installation secondaire -CheckSecondInfo=Une installation secondaire permet d'avoir deux ou plus versions de Lazarus d'installes. Chaque version aura sa propre configuration. Lisez la FAQ sur les installations multiples avant d'utiliser cette option, s'il vous plat. +CheckSecondInfo=Une installation secondaire permet d'installer plusieurs versions de Lazarus. Chaque version aura sa propre configuration. Veuillez lire la FAQ sur les installations multiples avant d'utiliser cette option. -FolderHasSpaces=Le nom du dossier slectionn contient des espaces, slectionnez un dossier sans espaces dans son chemin ou son nom, s'il vous plat. -FolderNotEmpty=Le dossier de destination n'est pas vide. Continuer l'installation ? +FolderHasSpaces=Le nom du dossier slectionn contient des espaces : veuillez slectionner un dossier sans espaces dans son chemin ou son nom. +FolderNotEmpty=Le dossier de destination n'est pas vide. Voulez-vous continuer l'installation ? FolderNotEmpty2=Le dossier de destination n'est pas vide. -FolderForSecondNoFile=Le dossier de destination n'est pas vide et ne contient pas une installation secondaire de Lazarus pouvant tre mise jour.%0:sChoisissez un dossier vide, ou un dossier avec une installation secondaire existante de Lazarus mettre jour, s'il vous plat. -FolderForSecondBadFile=Le dossier de destination n'est pas vide. Le programme d'installation ne pourrait pas dtecter s'il contient une installation secondaire de Lazarus pouvant tre mise jour.%0:sChoisissez un dossier vide, ou un dossier avec une installation secondaire existante de Lazarus mettre jour, s'il vous plat. -FolderForSecondUpgrading=Le dossier de destination n'est pas vide.%0:sIl contient une installation secondaire de Lazarus utilisant le dossier suivant pour la configuration: %0:s%1:s%0:s%0:sContinuer l'installation ? -FolderForSecondUpgradingPrimary=Le dossier de destination n'est pas vide.%0:sIl contient une installation (non secondaire) par dfaut de Lazarus.%0:sSi vous continuez, il sera modifi en une installation secondaire.%0:s%0:s%0:sContinuer l'installation ? +FolderForSecondNoFile=Le dossier de destination n'est pas vide et ne contient pas d'installation secondaire de Lazarus pouvant tre mise jour.%0:sVeuillez choisir un dossier vide ou un dossier avec une installation secondaire existante de Lazarus mettre jour. +FolderForSecondBadFile=Le dossier de destination n'est pas vide. Le programme d'installation ne pourrait pas dtecter s'il contient une installation secondaire de Lazarus pouvant tre mise jour.%0:sVeuillez choisir un dossier vide ou un dossier avec une installation secondaire existante de Lazarus mettre jour. +FolderForSecondUpgrading=Le dossier de destination n'est pas vide.%0:sIl contient une installation secondaire de Lazarus utilisant le dossier suivant pour la configuration : %0:s%1:s%0:s%0:sVoulez-vous continuer l'installation ? +FolderForSecondUpgradingPrimary=Le dossier de destination n'est pas vide.%0:sIl contient une installation (non secondaire) par dfaut de Lazarus.%0:sSi vous continuez, il sera modifi en une installation secondaire.%0:s%0:s%0:sVoulez-vous continuer l'installation ? -FolderForSecondBadUninstall=Le dossier de destination n'est pas vide. Le programme d'installation ne pourrait pas vrifier s'il est sr de l'utiliser.%0:sChoisissez un dossier vide, ou un dossier avec une installation secondaire existante de Lazarus mettre jour, s'il vous plat. +FolderForSecondBadUninstall=Le dossier de destination n'est pas vide. Le programme d'installation ne pourrait pas vrifier s'il est sr de l'utiliser.%0:sVeuillez choisir un dossier vide ou un dossier avec une installation secondaire existante de Lazarus mettre jour. -SecondConfCapt=Slectionner le dossier de configuration -SecondConfCapt2=Ou voulez-vous que cette installation de Lazarus enregistre sa configuration ? +SecondConfCapt=Slectionnez le dossier de configuration +SecondConfCapt2=O voulez-vous que cette installation de Lazarus enregistre sa configuration ? SecondConfBody=Slectionnez un nouveau dossier vide pour que cette installation de Lazarus enregistre sa configuration, puis continuez avec 'Suivant'. -FolderForConfig=Dossier pour la config +FolderForConfig=Dossier de configuration FolderForConfNotEmpty=Le dossier slectionn n'est pas vide. -AskUninstallTitle1=Installation Prcdente +AskUninstallTitle1=Installation prcdente AskUninstallTitle2=Voulez-vous excuter le programme de dsinstallation ? BtnUninstall=Dsinstaller ChkContinue=Continuer sans dsinstaller -OldInDestFolder1=Une autre installation de %1:s existe dans le dossier de destination. Si vous souhaitez la dsinstaller pralablement, utilisez le bouton ci-dessous, s'il vous plat. +OldInDestFolder1=Une autre installation de %1:s existe dans le dossier de destination. Si vous souhaitez la dsinstaller pralablement, veuillez utiliser le bouton ci-dessous. OldInDestFolder2= OldInDestFolder3= OldInDestFolder4= -OldInOtherFolder1=Une autre installation de %1:s a t trouve en %2:s. Utilisez le bouton ci-dessous pour la dsinstaller maintenant, s'il vous plat. Si vous souhaitez la conserver, cochez la case pour continuer, s'il vous plat. +OldInOtherFolder1=Une autre installation de %1:s a t trouve en %2:s. Veuillez utiliser le bouton ci-dessous pour la dsinstaller maintenant. Si vous souhaitez la conserver, veuillez cocher la case pour continuer. OldInOtherFolder2=Avertissement: Il se peut qu'il y ait des conflits entre les diffrentes installations et qu'elles ne fonctionnent pas correctement. -OldInOtherFolder3=Note: Vous n'avez pas choisi un dossier de configuration ddie cette installation. -OldInOtherFolder4=Si vous souhaitez utiliser plus d'une installation, revenez en arrire et cochez, s'il vous plat: "Crer une nouvelle installation secondaire". +OldInOtherFolder3=Note: Vous n'avez pas choisi de dossier de configuration ddi cette installation. +OldInOtherFolder4=Si vous souhaitez utiliser plus d'une installation, veuillez revenir en arrire pour cocher : "Crer une nouvelle installation secondaire". -OldInBadFolder1=Avertissement: Une autre installation de %1:s a t trouve en %2:s, mais le programme de dsinstallation a t trouv en %3:s. Vrifiez que le programme de dsinstallation est correct, s'il vous plat. +OldInBadFolder1=Avertissement: Une autre installation de %1:s a t trouve en %2:s, mais le programme de dsinstallation a t trouv en %3:s. Veuillez vrifier que le programme de dsinstallation est correct. OldInBadFolder2=Avertissement: Il se peut qu'il y ait des conflits entre les diffrentes installations et qu'elles ne fonctionnent pas correctement. -OldInBadFolder3=Note: Si vous souhaitez utiliser plus d'une installation, revenez en arrire et cochez, s'il vous plat: "Crer une nouvelle installation secondaire". -OldInBadFolder4=Utilisez le bouton ci-dessous pour la dsinstaller maintenant, s'il vous plat. Si vous souhaitez la conserver, cochez la case pour continuer, s'il vous plat. +OldInBadFolder3=Note: Si vous souhaitez utiliser plus d'une installation, veuillez revenir en arrire et cocher : "Crer une nouvelle installation secondaire". +OldInBadFolder4=Veuillez utiliser le bouton ci-dessous pour la dsinstaller maintenant. Si vous souhaitez la conserver, veuillez cocher la case pour continuer. -OldSecondInDestFolder1=Une autre installation de %1:s existe dans le dossier de destination. Si vous souhaitez la dsinstaller pralablement, utilisez le bouton ci-dessous, s'il vous plat. +OldSecondInDestFolder1=Une autre installation de %1:s existe dans le dossier de destination. Si vous souhaitez la dsinstaller pralablement, veuillez utiliser le bouton ci-dessous. OldSecondInDestFolder2= -OldSecondInDestFolder3=C'est une installation secondaire et le dossier pour la configuration est (et sera conserv): +OldSecondInDestFolder3=Il s'agit d'une installation secondaire et le dossier pour la configuration sera conserv : OldSecondInDestFolder4=%4:s OldSecondInOtherFolder1= @@ -67,9 +67,9 @@ OldSecondInBadFolder3= OldSecondInBadFolder4= -SecondTaskUpdate=Mise jour de l'installation secondaire avec configuration dans le dossier: %0:s%1:s%2:s -SecondTaskCreate=Cration de l'installation secondaire avec configuration dans le dossier: %0:s%1:s%2:s +SecondTaskUpdate=Mise jour de l'installation secondaire avec configuration dans le dossier : %0:s%1:s%2:s +SecondTaskCreate=Cration de l'installation secondaire avec configuration dans le dossier : %0:s%1:s%2:s -DuringInstall=Quelques informations issues de notre FAQ: http://wiki.lazarus.freepascal.org/Lazarus_Faq/fr%0:s%0:s Qu'est ce que Lazarus ?%0:sLazarus est un EDI multiplateformes pour Pascal. Son slogan est crire une fois, compiler partout.%0:s%0:s Comment rduire la taille des fichiers exe ?%0:sLes fichiers binaires produits par dfaut sont trs grands parce qu'ils incluent des informations pour le dbogage. Pour les versions de production, vous pouvez dsactiver ceci au niveau des options du projet.%0:s%0:s Licence: %0:s- La LCL est distribue sous licence LGPL avec une exception pour l'dition de liens. Ceci vous autorise crer des applications avec la licence que vous voulez, y compris une licence commerciale. L'EDI est sous licence GPL. Si vous distribuez un EDI modifi, vous devez suivre la GPL.%0:s- Les autres paquets et composants ont des licences varies. Consultez le fichier readme de chacun d'entre eux. +DuringInstall=Quelques informations issues de notre FAQ : http://wiki.lazarus.freepascal.org/Lazarus_Faq/fr%0:s%0:s Qu'est-ce que Lazarus ?%0:sLazarus est un EDI multiplateformes pour Pascal. Son slogan est "crire une fois, compiler partout".%0:s%0:s Comment rduire la taille des fichiers excutables ?%0:sLes fichiers binaires produits par dfaut sont volumineux parce qu'ils incluent des informations pour le dbogage. Pour les versions de production, vous pouvez dsactiver la production de ces informations au niveau des options du projet.%0:s%0:s Licence : %0:s- La LCL est distribue sous licence LGPL avec une exception pour l'dition de liens. Cette licence vous autorise crer des applications avec la licence que vous voulez, y compris une licence commerciale. L'EDI est sous licence GPL. Si vous distribuez un EDI modifi, vous devez suivre la GPL.%0:s- Les autres paquets et composants ont des licences varies. Consultez le fichier "readme" de chacun d'eux. -UninstVerbose=Sur le point de dsinstaller %1:s depuis le dossier %0:s. Continuer ? +UninstVerbose=Vous tes sur le point de dsinstaller %1:s depuis le dossier %0:s. Voulez-vous continuer ? diff -Nru lazarus-1.4.4+dfsg/tools/install/win/lazarus.hu.isl lazarus-1.6+dfsg/tools/install/win/lazarus.hu.isl --- lazarus-1.4.4+dfsg/tools/install/win/lazarus.hu.isl 1970-01-01 00:00:00.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/win/lazarus.hu.isl 2016-01-05 13:18:21.000000000 +0000 @@ -0,0 +1,75 @@ +#include "compiler:Hungarian.isl" + +[CustomMessages] + + +DelUserConf=Az előző telepítések összes felhasználói beállításának törlése +CleanUp=Tisztítás: + +InstallQt=Qt felülethez szükséges DLL fájlok telepítése +InstallChm=CHM súgófájlok telepítése +AssociateGroup=Fájlkiterjesztések hozzárendelése + +CheckSecondClick=Új másodlagos telepítés létrehozása +CheckSecondInfo=A másodlagos telepítés lehetővé teszi, hogy kettő vagy több Lazarus változat legyen telepítve. Minden változat a saját beállításaival fog működni. Javasoljuk elolvasni a GY.I.K. több példányos telepítésről szóló részét, ezen beállítás használata előtt. + +FolderHasSpaces=A kiválasztott könyvtár neve szóközt tartalmaz. Olyan könyvtárat kell választani, melynek nevében nincs szóköz. +FolderNotEmpty=A célkönyvtár nem üres. Biztosan folytatni szeretné a telepítést? +FolderNotEmpty2=A célkönyvtár nem üres. + +FolderForSecondNoFile=A célkönyvtár nem üres és nem tartalmaz frissíthető másodlagos Lazarus telepítést.%0:sVálasszon üres könyvtárat vagy egy olyat, amelyben frissíthető másodlagos Lazarus telepítés található. +FolderForSecondBadFile=A célkönyvtár nem üres. A telepítő nem tudta kideríteni, hogy tartalmaz-e frissíthető másodlagos Lazarus telepítést.%0:sVálasszon üres könyvtárat vagy egy olyat, amelyben frissíthető másodlagos Lazarus telepítés található. +FolderForSecondUpgrading=A célkönyvtár nem üres.%0:sA könyvtárban egy másodlagos Lazarus telepítés található, amely a következő könyvtárban tárolja a beállításait:%0:s%1:s%0:s%0:sTelepítés folytatása? +FolderForSecondUpgradingPrimary=A célkönyvtár nem üres.%0:sA könyvtárban egy alapértelmezett (nem másodlagos) Lazarus telepítés található.%0:sHa folytatja másodlagos telepítéssé lesz alakítva.%0:s%0:s%0:sTelepítés folytatása? + +FolderForSecondBadUninstall=A célkönyvtár nem üres. A telepítő nem tudta ellenőrizni, hogy a használata biztonságos-e.%0:sVálasszon üres könyvtárat vagy egy olyat, amelyben frissíthető másodlagos Lazarus telepítés található. + +SecondConfCapt=Beállítások könyvtárának kiválasztása +SecondConfCapt2=Hol legyenek tárolva ezen Lazarus telepítés beállítási fájljai? +SecondConfBody=Válasszon egy üres könyvtárat ezen Lazarus telepítés számára, ahol az a beállításait tárolja majd. Folytatás a 'Tovább' gombbal. + +FolderForConfig=Beállítások könyvtára + +FolderForConfNotEmpty=A kiválasztott könyvtár nem üres. + +AskUninstallTitle1=Előző telepítés +AskUninstallTitle2=Szeretné futtatni az eltávolítót? +BtnUninstall=Eltávolítás +ChkContinue=Folytatás eltávolítás nélkül + +OldInDestFolder1=Egy másik %1:s telepítés található a célkönyvtárban. Ha előbb el szeretné távolítani használja a lenti gombot. +OldInDestFolder2= +OldInDestFolder3= +OldInDestFolder4= + +OldInOtherFolder1=Egy másik %1:s telepítés található itt: %2:s. Használja az lenti gombot az eltávolításhoz. Ha meg szeretné tartani jelölje be a négyzetet folytatás előtt. +OldInOtherFolder2=Figyelmeztetés: Ütközés lehet a különböző telepítések között és esetleg nem működnek majd megfelelően. +OldInOtherFolder3=Megjegyzés: Nem választott az e telepítésnek megfelelő beállítási könyvtárat. +OldInOtherFolder4=Ha egynél több telepítést szeretne használni lépjen vissza és válassza a "Új másodlagos telepítés létrehozása" lehetőséget. + +OldInBadFolder1=Figyelmeztetés: Egy másik %1:s telepítés található itt: %2:s, de az eltávolító nem található meg a következő helyen: %3:s. Győződjön meg róla, hogy az eltávolitó megfelelő-e. +OldInBadFolder2=Figyelmeztetés: Ütközés lehet a különböző telepítések között és esetleg nem működnek majd megfelelően. +OldInBadFolder3=Megjegyzés: Ha egynél több telepítést szeretne használni lépjen vissza és válassza a "Új másodlagos telepítés létrehozása" lehetőséget. +OldInBadFolder4=Használja az lenti gombot az eltávolításhoz. Ha meg szeretné tartani jelölje be a négyzetet folytatás előtt. + +OldSecondInDestFolder1=Egy másik %1:s telepítés található a célkönyvtárban. Ha előbb el szeretné távolítani használja a lenti gombot. +OldSecondInDestFolder2= +OldSecondInDestFolder3=Ez egy másodlagos telepítés, melynek beállítása a következő könyvtárban vannak (és megmaradnak): +OldSecondInDestFolder4=%4:s + +OldSecondInOtherFolder1= +OldSecondInOtherFolder2= +OldSecondInOtherFolder3= +OldSecondInOtherFolder4= + +OldSecondInBadFolder1= +OldSecondInBadFolder2= +OldSecondInBadFolder3= +OldSecondInBadFolder4= + +SecondTaskUpdate=Másodlagos Lazarus telepítés frissítése, melynek beállításai a következő könyvtárban lesznek:%0:s%1:s%2:s +SecondTaskCreate=Másodlagos Lazarus telepítés létrehozása, melynek beállításai a következő könyvtárban lesznek:%0:s%1:s%2:s + +DuringInstall=Néhány információ a GY.I.K.-ból: http://wiki.lazarus.freepascal.org/Lazarus_Faq/hu%0:s%0:s Mi a Lazarus?%0:sA Lazarus egy keresztplatformos IDE a Pascal nyelvhez. Jelmondata: írd meg egyszer, fordítsd le bárhol.%0:s%0:s Hogyan csökkenthető a futtatható állomány mérete?%0:sA binárisok alapértelmezett esetben nagyon nagyok, mert hibakeresési információkat tartalmaznak. A kiadásra kész változatokhoz ez kikapcsolható a projek beállításainál.%0:s%0:s Licencelés:%0:s- Az LCL használata az LGPL szerint engedélyezett összefűzési (linking) kivétellel. Ez lehetővé teszi a felhasználónak alkalmazások létrehozását tetszőleges licenc alatt, beleértve egyénit is.%0:s- Az IDE maga GPL licencű. Módosított IDE közreadása esetén be kell tartani a GPL előírásait.%0:s- Egyéb csomagok és komponensek különböző saját licencekkel rendelkeznek. Lásd a csomagok információit. + +UninstVerbose=%1:s eltávolítása következő könyvtárból: %0:s. Folytatás? diff -Nru lazarus-1.4.4+dfsg/tools/install/win/RemovedFiles32.iss lazarus-1.6+dfsg/tools/install/win/RemovedFiles32.iss --- lazarus-1.4.4+dfsg/tools/install/win/RemovedFiles32.iss 2014-02-28 05:38:56.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/win/RemovedFiles32.iss 2015-06-21 10:45:24.000000000 +0000 @@ -88,7 +88,6 @@ Name: {app}\components\codetools\units\i386-win32\laz_xmlwrite.o; Type: files Name: {app}\components\codetools\units\i386-win32\laz_xmlwrite.ppu; Type: files Name: {app}\components\customdrawn\customdrawnutils.pas; Type: files -Name: {app}\components\editortoolbar\edttbconfigfrm.lrs; Type: files Name: {app}\components\fpcunit\guitestrunner.lrs; Type: files Name: {app}\components\fpcunit\ide\lib\i386-win32\fpcunitide.o; Type: files Name: {app}\components\fpcunit\ide\lib\i386-win32\fpcunitide.ppu; Type: files diff -Nru lazarus-1.4.4+dfsg/tools/install/win/RemovedFiles64.iss lazarus-1.6+dfsg/tools/install/win/RemovedFiles64.iss --- lazarus-1.4.4+dfsg/tools/install/win/RemovedFiles64.iss 2014-02-28 05:38:56.000000000 +0000 +++ lazarus-1.6+dfsg/tools/install/win/RemovedFiles64.iss 2015-06-21 10:45:24.000000000 +0000 @@ -88,7 +88,6 @@ Name: {app}\components\codetools\units\x86_64-win64\laz_xmlwrite.o; Type: files Name: {app}\components\codetools\units\x86_64-win64\laz_xmlwrite.ppu; Type: files Name: {app}\components\customdrawn\customdrawnutils.pas; Type: files -Name: {app}\components\editortoolbar\edttbconfigfrm.lrs; Type: files Name: {app}\components\fpcunit\guitestrunner.lrs; Type: files Name: {app}\components\fpcunit\ide\lib\x86_64-win64\fpcunitide.o; Type: files Name: {app}\components\fpcunit\ide\lib\x86_64-win64\fpcunitide.ppu; Type: files diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmmain.lfm lazarus-1.6+dfsg/tools/jsonviewer/frmmain.lfm --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmmain.lfm 2010-09-22 16:33:54.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmmain.lfm 2015-10-08 23:11:00.000000000 +0000 @@ -4,7 +4,7 @@ Top = 225 Width = 695 Caption = 'JSON Viewer' - ClientHeight = 489 + ClientHeight = 480 ClientWidth = 695 Icon.Data = { 7E04000000000100010010100000010020006804000016000000280000001000 @@ -49,8 +49,8 @@ OnCloseQuery = FormCloseQuery OnCreate = FormCreate OnShow = FormShow - SessionProperties = 'MIStrict.Checked;MIdocument.Checked;Top;Width;Left;Height' - LCLVersion = '0.9.29' + SessionProperties = 'Height;Left;MIdocument.Checked;MIStrict.Checked;Top;Width;MICompact.Checked' + LCLVersion = '1.5' object TBJSON: TToolBar Left = 0 Height = 26 @@ -78,6 +78,7 @@ end object ToolButton4: TToolButton Left = 70 + Height = 22 Top = 2 Width = 8 Caption = 'ToolButton4' @@ -115,6 +116,7 @@ end object ToolButton1: TToolButton Left = 216 + Height = 22 Top = 2 Width = 8 Caption = 'ToolButton1' @@ -128,11 +130,11 @@ end object TVJSON: TTreeView Left = 0 - Height = 463 + Height = 454 Top = 26 Width = 695 Align = alClient - DefaultItemHeight = 16 + DefaultItemHeight = 28 HideSelection = False Images = ILJSON TabOrder = 1 @@ -143,7 +145,7 @@ object ActionList1: TActionList Images = ILJSON left = 88 - top = 104 + top = 128 object ANew: TAction Category = 'File' Caption = '&New' @@ -307,8 +309,8 @@ end object MMJSON: TMainMenu Images = ILJSON - left = 13 - top = 19 + left = 40 + top = 56 object MFile: TMenuItem Caption = '&File' object MINew: TMenuItem @@ -981,11 +983,16 @@ Caption = 'Sort object members' OnClick = MISortMembersClick end + object MICompact: TMenuItem + AutoCheck = True + Caption = 'Compact display' + OnClick = MICompactClick + end end end object ILJSON: TImageList - left = 112 - top = 61 + left = 176 + top = 56 Bitmap = { 4C69100000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF @@ -1507,16 +1514,16 @@ DefaultExt = '.json' Filter = 'JSON files|*.json|Javascript files|*.js|All files|*.*' Options = [ofFileMustExist, ofEnableSizing, ofViewDetail] - left = 156 - top = 79 + left = 280 + top = 56 end object SDJSON: TSaveDialog Title = 'Save JSON document to file' DefaultExt = '.json' Filter = 'JSON files|*.json|Javascript files|*.js|All files|*.*' Options = [ofPathMustExist, ofEnableSizing, ofViewDetail] - left = 161 - top = 118 + left = 488 + top = 56 end object PSMain: TIniPropStorage StoredValues = < @@ -1534,15 +1541,19 @@ Name = 'Sort' Value = '0' OnRestore = PSMainStoredValues2Restore + end + item + Name = 'compact' + OnRestore = PSMainStoredValues3Restore end> Active = False - left = 196 - top = 96 + left = 384 + top = 56 end object FDJSON: TFindDialog Options = [frDown, frHideUpDown, frDisableUpDown] OnFind = FDJSONFind - left = 264 - top = 109 + left = 376 + top = 128 end end diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmmain.pp lazarus-1.6+dfsg/tools/jsonviewer/frmmain.pp --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmmain.pp 2014-01-02 18:16:19.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmmain.pp 2015-10-08 23:11:00.000000000 +0000 @@ -25,8 +25,8 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ActnList, - Menus, ComCtrls, IniPropStorage, fpJSON, JSONParser, PropertyStorage, DefaultTranslator; + Classes, SysUtils, fpJSON, JSONParser, + Forms, Controls, Dialogs, ActnList, Menus, ComCtrls, IniPropStorage, PropertyStorage; type @@ -59,6 +59,7 @@ MEDit: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; + MICompact: TMenuItem; MIFInd: TMenuItem; MIExpandCurrent: TMenuItem; MIExpandAll: TMenuItem; @@ -136,6 +137,7 @@ procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure HaveData(Sender: TObject); + procedure MICompactClick(Sender: TObject); procedure MIdocumentClick(Sender: TObject); procedure MISortMembersClick(Sender: TObject); procedure MIStrictClick(Sender: TObject); @@ -145,6 +147,8 @@ var Value: TStoredType); procedure PSMainStoredValues2Restore(Sender: TStoredValue; var Value: TStoredType); + procedure PSMainStoredValues3Restore(Sender: TStoredValue; + var Value: TStoredType); procedure TVJSONEdited(Sender: TObject; Node: TTreeNode; var S: string); procedure TVJSONEditing(Sender: TObject; Node: TTreeNode; var AllowEdit: Boolean); @@ -154,6 +158,7 @@ FSortObjectMembers, FStrict, FNewObject, + FCompact, FModified : Boolean; FCurrentFind : TTreeNode; procedure AddDataToContainer(const AMemberName: String; D: TJSONData); @@ -180,9 +185,8 @@ procedure SetCaption; procedure ShowJSONData(AParent: TTreeNode; Data: TJSONData); procedure ShowJSONDocument; - { private declarations } public - { public declarations } + end; var @@ -226,6 +230,12 @@ FSortObjectMembers:=StrToIntDef(Value,0)=1; end; +procedure TMainForm.PSMainStoredValues3Restore(Sender: TStoredValue; + var Value: TStoredType); +begin + FCompact:=StrToIntDef(Value,0)=1; +end; + procedure TMainForm.TVJSONEdited(Sender: TObject; Node: TTreeNode; var S: string); Var @@ -425,23 +435,17 @@ begin P:=TJSONData(PN.Data); If P.JSONType=jtArray then + TJSONArray(P).Remove(D) + else If P.JSONType=jtObject then + TJSONObject(P).Remove(D); + PN:=PN.Parent; + If PN<>Nil then begin - TJSONArray(P).Remove(D); - PN:=PN.Parent; - If PN<>Nil then - PN.DeleteChildren - else - TVJSON.Items.Clear; + PN.DeleteChildren; ShowJSONData(PN,P); end - else If P.JSONType=jtObject then - begin - TJSONObject(P).Remove(D); - PN:=PN.Parent; - If PN<>Nil then - PN.DeleteChildren; - ShowJSONData(PN,P); - end; + else + ShowJSONDocument; end; Modify; end; @@ -576,7 +580,6 @@ Var D : TJSONData; N : String; - I : Integer; begin Case AType of @@ -735,14 +738,18 @@ Function TMainForm.CurrentData : TJSONData; +Var + N : TTreeNode; + begin - If (CurrentNode=Nil) then + N:=CurrentNode; + If (N=Nil) then Result:=Nil else begin - Result:=TJSONData(CurrentNode.Data); - If (Result=Nil) and (CurrentNode.Count=1) then - Result:=TJSONData(CurrentNode.Items[0].Data); + Result:=TJSONData(N.Data); + If (Result=Nil) and (N.Count=1) then + Result:=TJSONData(N.Items[0].Data); end; end; @@ -922,6 +929,13 @@ (Sender as TAction).Enabled:=(FRoot<>Nil); end; +procedure TMainForm.MICompactClick(Sender: TObject); +begin + FCompact:=MICompact.Checked; + PSMain.StoredValue['compact']:=IntToStr(Ord(Fstrict)); + ShowJSONDocument; +end; + procedure TMainForm.MIdocumentClick(Sender: TObject); begin FNewObject:=(Sender as TMenuItem).Checked; @@ -968,7 +982,7 @@ BeginUpdate; try TVJSON.Items.Clear; - SHowJSONData(Nil,FRoot); + ShowJSONData(Nil,FRoot); With TVJSON do If (Items.Count>0) and Assigned(Items[0]) then begin @@ -991,50 +1005,58 @@ S : TStringList; begin - N:=Nil; - if Assigned(Data) then - begin - Case Data.JSONType of - jtArray, - jtObject: - begin - If (Data.JSONType=jtArray) then - C:=SArray - else - C:=SObject; - N:=TVJSON.Items.AddChild(AParent,Format(C,[Data.Count])); - S:=TstringList.Create; - try - For I:=0 to Data.Count-1 do - If Data.JSONtype=jtArray then - S.AddObject(IntToStr(I),Data.items[i]) - else - S.AddObject(TJSONObject(Data).Names[i],Data.items[i]); - If FSortObjectMembers and (Data.JSONType=jtObject) then - S.Sort; - For I:=0 to S.Count-1 do - begin - N2:=TVJSON.Items.AddChild(N,S[i]); - D:=TJSONData(S.Objects[i]); - N2.ImageIndex:=ImageTypeMap[D.JSONType]; - N2.SelectedIndex:=ImageTypeMap[D.JSONType]; - ShowJSONData(N2,D); - end - finally - S.Free; - end; - end; - jtNull: - N:=TVJSON.Items.AddChild(AParent,SNull); - else - N:=TVJSON.Items.AddChild(AParent,Data.AsString); - end; - If Assigned(N) then + if Not Assigned(Data) then + exit; + if FCompact and (AParent<>Nil) then + N:=AParent + else + N:=TVJSON.Items.AddChild(AParent,''); + Case Data.JSONType of + jtArray, + jtObject: begin - N.ImageIndex:=ImageTypeMap[Data.JSONType]; - N.SelectedIndex:=ImageTypeMap[Data.JSONType]; - N.Data:=Data; + If (Data.JSONType=jtArray) then + C:=SArray + else + C:=SObject; + C:=Format(C,[Data.Count]); + S:=TstringList.Create; + try + For I:=0 to Data.Count-1 do + If Data.JSONtype=jtArray then + S.AddObject(IntToStr(I),Data.items[i]) + else + S.AddObject(TJSONObject(Data).Names[i],Data.items[i]); + If FSortObjectMembers and (Data.JSONType=jtObject) then + S.Sort; + For I:=0 to S.Count-1 do + begin + N2:=TVJSON.Items.AddChild(N,S[i]); + D:=TJSONData(S.Objects[i]); + N2.ImageIndex:=ImageTypeMap[D.JSONType]; + N2.SelectedIndex:=ImageTypeMap[D.JSONType]; + ShowJSONData(N2,D); + end + finally + S.Free; end; + end; + jtNull: + C:=SNull; + else + C:=Data.AsString; + if (Data.JSONType=jtString) then + C:='"'+C+'"'; + end; + If Assigned(N) then + begin + If N.Text='' then + N.Text:=C + else + N.Text:=N.Text+': '+C; + N.ImageIndex:=ImageTypeMap[Data.JSONType]; + N.SelectedIndex:=ImageTypeMap[Data.JSONType]; + N.Data:=Data; end; end; diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewboolean.lfm lazarus-1.6+dfsg/tools/jsonviewer/frmnewboolean.lfm --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewboolean.lfm 2011-10-03 23:14:54.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmnewboolean.lfm 2015-08-05 21:58:21.000000000 +0000 @@ -1,53 +1,57 @@ object NewBooleanForm: TNewBooleanForm - Left = 423 + Left = 511 Height = 124 - Top = 305 - Width = 375 + Top = 404 + Width = 387 ActiveControl = Ename BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'New boolean value' ClientHeight = 124 - ClientWidth = 375 + ClientWidth = 387 OnCloseQuery = FormCloseQuery Position = poMainFormCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object BPNewBoolean: TButtonPanel Left = 6 - Height = 34 - Top = 84 - Width = 363 + Height = 37 + Top = 81 + Width = 375 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True HelpButton.Enabled = False CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CloseButton.Enabled = False CancelButton.Name = 'CancelButton' - TabOrder = 0 + CancelButton.DefaultCaption = True + TabOrder = 2 ShowButtons = [pbOK, pbCancel] end object Label1: TLabel - Left = 17 - Height = 15 + Left = 8 + Height = 17 Top = 12 - Width = 83 + Width = 97 Caption = '&Member name' FocusControl = Ename ParentColor = False end object CBValue: TCheckBox - Left = 113 - Height = 21 + Left = 128 + Height = 24 Top = 44 - Width = 84 + Width = 97 Caption = 'Set to true' TabOrder = 1 end object Ename: TEdit - Left = 113 - Height = 22 + Left = 128 + Height = 27 Top = 8 Width = 247 - TabOrder = 2 + TabOrder = 0 end end diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewboolean.pp lazarus-1.6+dfsg/tools/jsonviewer/frmnewboolean.pp --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewboolean.pp 2010-09-18 09:56:29.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmnewboolean.pp 2015-08-08 21:06:51.000000000 +0000 @@ -24,8 +24,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, - StdCtrls; + Forms, ButtonPanel, StdCtrls; type @@ -44,9 +43,7 @@ procedure SetAllowName(const AValue: Boolean); procedure SetMemberName(const AValue: String); procedure SetValue(const AValue: Boolean); - { private declarations } public - { public declarations } Property AllowName: Boolean Read GetAllowName Write SetAllowName; Property MemberName : String Read GetMemberName Write SetMemberName; Property Value : Boolean Read GetValue Write SetValue; diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewinteger.lfm lazarus-1.6+dfsg/tools/jsonviewer/frmnewinteger.lfm --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewinteger.lfm 2011-10-03 23:14:54.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmnewinteger.lfm 2015-08-05 21:58:21.000000000 +0000 @@ -1,40 +1,44 @@ object NewNumberForm: TNewNumberForm - Left = 436 + Left = 451 Height = 240 Top = 247 - Width = 320 + Width = 305 ActiveControl = EName BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'New number value' ClientHeight = 240 - ClientWidth = 320 + ClientWidth = 305 OnCloseQuery = FormCloseQuery Position = poMainFormCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object BPNewNumber: TButtonPanel Left = 6 - Height = 34 - Top = 200 - Width = 308 + Height = 37 + Top = 197 + Width = 293 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True HelpButton.Enabled = False CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CloseButton.Enabled = False CancelButton.Name = 'CancelButton' - TabOrder = 0 + CancelButton.DefaultCaption = True + TabOrder = 3 ShowButtons = [pbOK, pbCancel] end object EName: TEdit - Left = 87 - Height = 22 + Left = 96 + Height = 27 Top = 10 Width = 185 - TabOrder = 1 + TabOrder = 0 end object RGType: TRadioGroup - Left = 83 + Left = 96 Height = 105 Top = 44 Width = 185 @@ -48,36 +52,36 @@ ChildSizing.ShrinkVertical = crsScaleChilds ChildSizing.Layout = cclLeftToRightThenTopToBottom ChildSizing.ControlsPerLine = 1 - ClientHeight = 89 + ClientHeight = 86 ClientWidth = 181 Items.Strings = ( 'Float' 'Integer' 'Int64' ) - TabOrder = 2 + TabOrder = 1 end object EValue: TEdit - Left = 84 - Height = 22 - Top = 161 - Width = 164 - TabOrder = 3 + Left = 96 + Height = 27 + Top = 159 + Width = 184 + TabOrder = 2 end object Label1: TLabel - Left = 22 - Height = 15 - Top = 14 - Width = 34 + Left = 12 + Height = 17 + Top = 10 + Width = 40 Caption = '&Name' FocusControl = EName ParentColor = False end object Label2: TLabel Left = 12 - Height = 15 + Height = 17 Top = 159 - Width = 31 + Width = 38 Caption = 'Value' ParentColor = False end diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewinteger.pp lazarus-1.6+dfsg/tools/jsonviewer/frmnewinteger.pp --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewinteger.pp 2010-09-18 09:56:29.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmnewinteger.pp 2015-08-08 21:06:51.000000000 +0000 @@ -24,8 +24,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel, - StdCtrls, ExtCtrls, fpjson; + SysUtils, Forms, Controls, Dialogs, ButtonPanel, StdCtrls, ExtCtrls, fpjson; type @@ -49,9 +48,7 @@ procedure SetAllowName(const AValue: Boolean); procedure SetMemberName(const AValue: String); procedure SetNumberType(const AValue: TJSONNumberType); - { private declarations } public - { public declarations } Property AllowName: Boolean Read GetAllowName Write SetAllowName; Property MemberName : String Read GetMemberName Write SetMemberName; Property NumberType : TJSONNumberType Read GetNumberType Write SetNumberType; diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewstring.lfm lazarus-1.6+dfsg/tools/jsonviewer/frmnewstring.lfm --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewstring.lfm 2011-10-03 23:14:54.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmnewstring.lfm 2015-08-05 21:58:21.000000000 +0000 @@ -1,50 +1,48 @@ object NewStringForm: TNewStringForm Left = 509 - Height = 144 + Height = 140 Top = 290 Width = 320 ActiveControl = EName BorderIcons = [biSystemMenu] BorderStyle = bsDialog Caption = 'New String value' - ClientHeight = 144 + ClientHeight = 140 ClientWidth = 320 OnCloseQuery = FormCloseQuery Position = poMainFormCenter - LCLVersion = '0.9.29' + LCLVersion = '1.5' object EName: TEdit - Left = 80 - Height = 22 - Top = 18 + Left = 88 + Height = 27 + Top = 16 Width = 216 TabOrder = 0 end object EValue: TEdit - Left = 80 - Height = 22 - Top = 49 + Left = 88 + Height = 27 + Top = 48 Width = 216 TabOrder = 1 end object Label1: TLabel - Left = 34 - Height = 22 - Top = 18 - Width = 34 + Left = 8 + Height = 17 + Top = 16 + Width = 40 Alignment = taRightJustify - AutoSize = False Caption = '&Name' FocusControl = EName Layout = tlCenter ParentColor = False end object Label2: TLabel - Left = 37 - Height = 22 + Left = 8 + Height = 17 Top = 49 - Width = 31 + Width = 38 Alignment = taRightJustify - AutoSize = False Caption = '&Value' FocusControl = EValue Layout = tlCenter @@ -52,15 +50,19 @@ end object BPNewString: TButtonPanel Left = 6 - Height = 34 - Top = 104 + Height = 37 + Top = 97 Width = 308 OKButton.Name = 'OKButton' + OKButton.DefaultCaption = True HelpButton.Name = 'HelpButton' + HelpButton.DefaultCaption = True HelpButton.Enabled = False CloseButton.Name = 'CloseButton' + CloseButton.DefaultCaption = True CloseButton.Enabled = False CancelButton.Name = 'CancelButton' + CancelButton.DefaultCaption = True TabOrder = 2 ShowButtons = [pbOK, pbCancel] end diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewstring.pp lazarus-1.6+dfsg/tools/jsonviewer/frmnewstring.pp --- lazarus-1.4.4+dfsg/tools/jsonviewer/frmnewstring.pp 2010-09-18 09:56:29.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/frmnewstring.pp 2015-08-08 21:06:51.000000000 +0000 @@ -24,8 +24,7 @@ interface uses - Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, - ButtonPanel; + Forms, StdCtrls, ButtonPanel; type @@ -45,9 +44,7 @@ procedure SetAllowName(const AValue: Boolean); procedure SetMemberName(const AValue: String); procedure SetValue(const AValue: String); - { private declarations } public - { public declarations } Property AllowName: Boolean Read GetAllowName Write SetAllowName; Property MemberName : String Read GetMemberName Write SetMemberName; Property Value : String Read GetValue Write SetValue; diff -Nru lazarus-1.4.4+dfsg/tools/jsonviewer/msgjsonviewer.pp lazarus-1.6+dfsg/tools/jsonviewer/msgjsonviewer.pp --- lazarus-1.4.4+dfsg/tools/jsonviewer/msgjsonviewer.pp 2014-05-11 21:54:05.000000000 +0000 +++ lazarus-1.6+dfsg/tools/jsonviewer/msgjsonviewer.pp 2015-08-08 21:06:51.000000000 +0000 @@ -4,9 +4,6 @@ interface -uses - Classes, SysUtils; - Resourcestring SCaption = 'JSON Viewer'; diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/dicteditor.pp lazarus-1.6+dfsg/tools/lazdatadesktop/dicteditor.pp --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/dicteditor.pp 2013-10-06 02:45:00.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/dicteditor.pp 2015-08-08 21:06:51.000000000 +0000 @@ -25,8 +25,9 @@ interface uses - Classes, SysUtils, FileUtil, fpdatadict, Controls, ComCtrls, StdCtrls, - ExtCtrls, Graphics, ImgList, RTTIGrids, LResources, menus, dialogs; + Classes, SysUtils, fpdatadict, + Controls, ComCtrls, ExtCtrls, Graphics, Menus, Dialogs, RTTIGrids, + LazUTF8; Type TEditObjectType = (eotUnknown,eotDictionary, diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/frmmain.pp lazarus-1.6+dfsg/tools/lazdatadesktop/frmmain.pp --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/frmmain.pp 2015-06-25 21:30:39.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/frmmain.pp 2015-08-08 21:06:51.000000000 +0000 @@ -25,10 +25,10 @@ interface uses - Classes, SysUtils, LResources, FileUtil, Forms, Controls, Graphics, Dialogs, - Menus, ActnList, StdActns, ComCtrls, dicteditor, fpdatadict, IniPropStorage, - conneditor, LCLType, RTTICtrls, ExtCtrls, {StdCtrls,} ddfiles, LCLProc, - Translations, lazdatadeskstr; + Classes, SysUtils, Forms, Controls, Dialogs, Menus, ActnList, StdActns, + ComCtrls, IniPropStorage, LCLType, ExtCtrls, LCLProc, Translations, + dicteditor, conneditor, ddfiles, fpdatadict, lazdatadeskstr, + FileUtil, LazFileUtils, LazUTF8; type TEngineMenuItem = Class(TMenuItem) @@ -226,9 +226,7 @@ procedure DoImport(Const EngineName : String); procedure DoImport(Const EngineName,ConnectionString : String); Procedure DoDDEProgress(Sender : TObject; Const Msg : String); - { private declarations } public - { public declarations } procedure OpenDataDict(DDF : TRecentDataDict); procedure OpenFile(AFileName : String); procedure RaiseEditor(DDE: TDataDictEditor); @@ -1610,7 +1608,7 @@ LangID2 := ''; if Trim(LangId1) = '' then begin - LCLGetLanguageIDs(LangID1,LangID2); + LazGetLanguageIDs(LangID1,LangID2); if LangID2 = 'pt' then begin LangID1 := 'pb'; diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.cs.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.cs.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.cs.po 2014-07-18 00:03:06.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.cs.po 2015-06-25 23:13:18.000000000 +0000 @@ -187,7 +187,9 @@ msgstr "Uložit SQL příkaz do souboru" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +#, fuzzy +#| msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Importovat datový slovník" #: lazdatadeskstr.sindex @@ -352,7 +354,7 @@ msgstr "Otevřít" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "" #: lazdatadeskstr.sld_actionpaste @@ -372,7 +374,9 @@ msgstr "Uložit &jako" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +#, fuzzy +#| msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Uložit slovník jako" #: lazdatadeskstr.sld_actionsaveh @@ -453,7 +457,9 @@ msgstr "Hostitel" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +#, fuzzy +#| msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Importovat/Aktualizvoat datový slovník" #: lazdatadeskstr.sld_indent @@ -602,7 +608,9 @@ msgstr "Nové připojení" #: lazdatadeskstr.snewdictionary -msgid "New database" +#, fuzzy +#| msgid "New database" +msgid "New data dictionary" msgstr "Nová databáze" #: lazdatadeskstr.snewdomain @@ -667,7 +675,9 @@ msgstr "Databáze" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +#, fuzzy +#| msgid "Datadictionary" +msgid "Data dictionary" msgstr "Datový slovník" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.de.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.de.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.de.po 2014-10-19 23:09:51.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.de.po 2015-10-03 21:59:04.000000000 +0000 @@ -8,7 +8,8 @@ "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.7.5\n" +"Language: de\n" #: lazdatadeskstr.eoaddterminator msgid "Add terminator" @@ -187,7 +188,7 @@ msgstr "SQL Anweisung in Datei speichern" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Datadictionary importieren" #: lazdatadeskstr.sindex @@ -352,7 +353,7 @@ msgstr "Öffnen" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Zuletzt ausgewähltes Datadictionary öffnen" #: lazdatadeskstr.sld_actionpaste @@ -372,7 +373,7 @@ msgstr "Speichern unter" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Datadictionary sichern unter" #: lazdatadeskstr.sld_actionsaveh @@ -453,7 +454,7 @@ msgstr "Host" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Importiere/Aktualisiere Datadictionary" #: lazdatadeskstr.sld_indent @@ -602,8 +603,8 @@ msgstr "Neue Verbindung" #: lazdatadeskstr.snewdictionary -msgid "New database" -msgstr "Neue Datenbank" +msgid "New data dictionary" +msgstr "Neues Datadictionary" #: lazdatadeskstr.snewdomain msgid "Create new domain" @@ -667,7 +668,7 @@ msgstr "Datenbank" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +msgid "Data dictionary" msgstr "Datadictionary" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.es.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.es.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.es.po 2015-04-28 21:42:48.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.es.po 2015-06-25 23:13:18.000000000 +0000 @@ -186,7 +186,9 @@ msgstr "Salvar instrucción \"SQL\" a archivo" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +#, fuzzy +#| msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Importar diccionario de datos" #: lazdatadeskstr.sindex @@ -351,7 +353,9 @@ msgstr "Abrir" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +#, fuzzy +#| msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Abrir diccionario de datos seleccionado recientemente" #: lazdatadeskstr.sld_actionpaste @@ -371,7 +375,9 @@ msgstr "Salvar &como" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +#, fuzzy +#| msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Salvar diccionario de datos como" #: lazdatadeskstr.sld_actionsaveh @@ -452,7 +458,9 @@ msgstr "Host (anfitrión)" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +#, fuzzy +#| msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Importar/Actualizar diccionario de datos" #: lazdatadeskstr.sld_indent @@ -601,7 +609,9 @@ msgstr "Nueva conexión" #: lazdatadeskstr.snewdictionary -msgid "New database" +#, fuzzy +#| msgid "New database" +msgid "New data dictionary" msgstr "Nueva base de datos" #: lazdatadeskstr.snewdomain @@ -666,7 +676,9 @@ msgstr "Base de datos" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +#, fuzzy +#| msgid "Datadictionary" +msgid "Data dictionary" msgstr "Diccionario de datos" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.fr.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.fr.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.fr.po 2015-05-23 00:41:15.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.fr.po 2015-12-21 23:08:28.000000000 +0000 @@ -1,16 +1,15 @@ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" +"POT-Creation-Date: 2015-04-14 07:54+0100\n" +"PO-Revision-Date: 2015-12-19 15:58+0100\n" +"Last-Translator: Vasseur Gilles <gillesvasseur58@gmail.com>\n" +"Language-Team: Vasseur Gilles <gillesvasseur58@gmail.com>\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr_FR\n" -"X-Generator: Poedit 1.8\n" +"Language: fr\n" +"X-Generator: Poedit 1.8.6\n" #: lazdatadeskstr.eoaddterminator msgid "Add terminator" @@ -189,7 +188,7 @@ msgstr "Enregistrer du code SQL" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Importer un dictionnaire de données" #: lazdatadeskstr.sindex @@ -354,7 +353,7 @@ msgstr "Ouvrir" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Ouvrir le dictionnaire de données sélectionné récent" #: lazdatadeskstr.sld_actionpaste @@ -374,8 +373,8 @@ msgstr "Enregistrer sous..." #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" -msgstr "Enregistrer un dictionnaire de données sous" +msgid "Save data dictionary as" +msgstr "Enregistrer le dictionnaire de données sous" #: lazdatadeskstr.sld_actionsaveh msgid "Save Data Dictionary" @@ -455,7 +454,7 @@ msgstr "Hôte" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Importer/Mettre à jour un dictionnaire de données" #: lazdatadeskstr.sld_indent @@ -604,8 +603,8 @@ msgstr "Nouvelle connexion" #: lazdatadeskstr.snewdictionary -msgid "New database" -msgstr "Nouvelle base de données " +msgid "New data dictionary" +msgstr "Nouveau dictionnaire de données" #: lazdatadeskstr.snewdomain msgid "Create new domain" @@ -669,7 +668,7 @@ msgstr "Base de données " #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +msgid "Data dictionary" msgstr "Dictionnaire de données" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.hu.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.hu.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.hu.po 2015-07-12 13:36:27.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.hu.po 2015-08-19 21:54:50.000000000 +0000 @@ -188,7 +188,7 @@ msgstr "SQL állomány mentése fájlba" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Adatszótár importálása" #: lazdatadeskstr.sindex @@ -353,7 +353,7 @@ msgstr "Megnyitás" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "A kiválasztott legutóbbi adatszótár megnyitása" #: lazdatadeskstr.sld_actionpaste @@ -373,7 +373,7 @@ msgstr "Mentés másként" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Adatszótár mentése másként" #: lazdatadeskstr.sld_actionsaveh @@ -454,7 +454,7 @@ msgstr "Kiszolgáló" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Adatszótár importálása/frissítése" #: lazdatadeskstr.sld_indent @@ -603,8 +603,8 @@ msgstr "Ú&j kapcsolat" #: lazdatadeskstr.snewdictionary -msgid "New database" -msgstr "Új adatbázis" +msgid "New data dictionary" +msgstr "Új adatszótár" #: lazdatadeskstr.snewdomain msgid "Create new domain" @@ -668,7 +668,7 @@ msgstr "Adatbázis" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +msgid "Data dictionary" msgstr "Adatszótár" #: lazdatadeskstr.snodedomains @@ -766,7 +766,7 @@ #: lazdatadeskstr.susecurrentdict msgid "Yes, use the active dictionary" -msgstr "Igen, az aktív szótáratt használva" +msgstr "Igen, az aktív szótárat használva" #: lazdatadeskstr.susenewdict msgid "No, import in a new dictionary" diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.it.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.it.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.it.po 2014-10-19 23:09:51.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.it.po 2015-06-25 23:13:18.000000000 +0000 @@ -189,7 +189,9 @@ msgstr "Salva comando SQL in un file" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +#, fuzzy +#| msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Importa dizionario dati" #: lazdatadeskstr.sindex @@ -354,7 +356,9 @@ msgstr "Apri" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +#, fuzzy +#| msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Apri il dizionario dati recente selezionato" #: lazdatadeskstr.sld_actionpaste @@ -374,7 +378,9 @@ msgstr "Salva con nome" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +#, fuzzy +#| msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Salva il dizionario dati come" #: lazdatadeskstr.sld_actionsaveh @@ -455,7 +461,9 @@ msgstr "Host" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +#, fuzzy +#| msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Importa/Aggiorna dizionario dati" #: lazdatadeskstr.sld_indent @@ -604,7 +612,9 @@ msgstr "Nuova connessione" #: lazdatadeskstr.snewdictionary -msgid "New database" +#, fuzzy +#| msgid "New database" +msgid "New data dictionary" msgstr "Nuova base di dati" #: lazdatadeskstr.snewdomain @@ -669,7 +679,9 @@ msgstr "Base di dati" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +#, fuzzy +#| msgid "Datadictionary" +msgid "Data dictionary" msgstr "Dizionario dati" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.lt.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.lt.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.lt.po 2014-10-19 23:09:51.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.lt.po 2015-06-25 23:13:18.000000000 +0000 @@ -188,7 +188,9 @@ msgstr "SQL sakinį įrašyti failan" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +#, fuzzy +#| msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Importuoti duomenų žodyną" #: lazdatadeskstr.sindex @@ -353,7 +355,9 @@ msgstr "Atverti" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +#, fuzzy +#| msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Atverti pažymėtąjį paskiausiai naudotą duomenų žodyną" #: lazdatadeskstr.sld_actionpaste @@ -373,7 +377,9 @@ msgstr "Įrašyti &taip" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +#, fuzzy +#| msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Duomenų žodyną įrašyti kitu pavadinimu" #: lazdatadeskstr.sld_actionsaveh @@ -454,7 +460,9 @@ msgstr "Serveris" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +#, fuzzy +#| msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Importuoti/naujinti duomenų žodyną" #: lazdatadeskstr.sld_indent @@ -603,7 +611,9 @@ msgstr "Naujas ryšys" #: lazdatadeskstr.snewdictionary -msgid "New database" +#, fuzzy +#| msgid "New database" +msgid "New data dictionary" msgstr "Nauja duomenų bazė" #: lazdatadeskstr.snewdomain @@ -668,7 +678,9 @@ msgstr "Duomenų bazė" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +#, fuzzy +#| msgid "Datadictionary" +msgid "Data dictionary" msgstr "Duomenų žodynas" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.po 2014-07-18 00:03:06.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.po 2015-06-25 23:13:18.000000000 +0000 @@ -174,7 +174,7 @@ msgstr "" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "" #: lazdatadeskstr.sindex @@ -339,7 +339,7 @@ msgstr "" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "" #: lazdatadeskstr.sld_actionpaste @@ -359,7 +359,7 @@ msgstr "" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "" #: lazdatadeskstr.sld_actionsaveh @@ -440,7 +440,7 @@ msgstr "" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "" #: lazdatadeskstr.sld_indent @@ -589,7 +589,7 @@ msgstr "" #: lazdatadeskstr.snewdictionary -msgid "New database" +msgid "New data dictionary" msgstr "" #: lazdatadeskstr.snewdomain @@ -654,7 +654,7 @@ msgstr "" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +msgid "Data dictionary" msgstr "" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.pt_BR.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.pt_BR.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.pt_BR.po 2014-10-19 23:09:51.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.pt_BR.po 2015-06-25 23:13:18.000000000 +0000 @@ -186,7 +186,9 @@ msgstr "Salvar declarações SQL para arquivo" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +#, fuzzy +#| msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Importar dicionário dados" #: lazdatadeskstr.sindex @@ -359,7 +361,9 @@ msgstr "Abrir" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +#, fuzzy +#| msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Abrir dicionário dados recente selecionado" #: lazdatadeskstr.sld_actionpaste @@ -381,7 +385,9 @@ msgstr "Salvar c&omo" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +#, fuzzy +#| msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Salvar dicionário dados como" #: lazdatadeskstr.sld_actionsaveh @@ -469,8 +475,10 @@ msgstr "Servidor" #: lazdatadeskstr.sld_importupdatedatadictionary +#, fuzzy +#| msgid "Import/Update datadictionary" msgctxt "lazdatadeskstr.sld_importupdatedatadictionary" -msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Importar/Atualizar dicionário dados" #: lazdatadeskstr.sld_indent @@ -638,7 +646,9 @@ msgstr "Nova conexão" #: lazdatadeskstr.snewdictionary -msgid "New database" +#, fuzzy +#| msgid "New database" +msgid "New data dictionary" msgstr "Novo banco dados" #: lazdatadeskstr.snewdomain @@ -703,7 +713,9 @@ msgstr "Banco Dados" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +#, fuzzy +#| msgid "Datadictionary" +msgid "Data dictionary" msgstr "Dicionário dados" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.ru.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.ru.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.ru.po 2014-10-19 23:09:51.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.ru.po 2015-06-25 23:13:18.000000000 +0000 @@ -8,6 +8,8 @@ "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"X-Generator: Poedit 1.7.7\n" #: lazdatadeskstr.eoaddterminator msgid "Add terminator" @@ -186,7 +188,7 @@ msgstr "Сохранить выражение SQL в файл" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Импорт словаря данных" #: lazdatadeskstr.sindex @@ -296,7 +298,7 @@ #: lazdatadeskstr.sld_actionnew msgid "&New" -msgstr "&Новая" +msgstr "&Новый" #: lazdatadeskstr.sld_actionnewconnection msgid "&New connection" @@ -351,7 +353,7 @@ msgstr "Открыть" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Открыть выбранный недавний словарь данных" #: lazdatadeskstr.sld_actionpaste @@ -371,7 +373,7 @@ msgstr "Сохранить &как" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Сохранить словарь данных как" #: lazdatadeskstr.sld_actionsaveh @@ -452,7 +454,7 @@ msgstr "Хост" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Импорт/обновление словаря данных" #: lazdatadeskstr.sld_indent @@ -601,8 +603,8 @@ msgstr "Новое соединение" #: lazdatadeskstr.snewdictionary -msgid "New database" -msgstr "Новая база данных" +msgid "New data dictionary" +msgstr "Новый словарь данных" #: lazdatadeskstr.snewdomain msgid "Create new domain" @@ -666,7 +668,7 @@ msgstr "База данных" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +msgid "Data dictionary" msgstr "Словарь данных" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.uk.po lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.uk.po --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.uk.po 2014-10-19 23:09:51.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/languages/lazdatadesktop.uk.po 2015-06-25 23:13:18.000000000 +0000 @@ -189,7 +189,9 @@ msgstr "Зберегти інструкцію SQL в файл" #: lazdatadeskstr.simportdictinto -msgid "Import datadictionary" +#, fuzzy +#| msgid "Import datadictionary" +msgid "Import data dictionary" msgstr "Імпортувати словник даних" #: lazdatadeskstr.sindex @@ -354,7 +356,9 @@ msgstr "Відкрити" #: lazdatadeskstr.sld_actionopenrecentdatadicth -msgid "Open selected recent datadictionary" +#, fuzzy +#| msgid "Open selected recent datadictionary" +msgid "Open selected recent data dictionary" msgstr "Відкрити вибраний недавній словник даних" #: lazdatadeskstr.sld_actionpaste @@ -374,7 +378,9 @@ msgstr "Зберегти &як" #: lazdatadeskstr.sld_actionsaveash -msgid "Save datadictionary as" +#, fuzzy +#| msgid "Save datadictionary as" +msgid "Save data dictionary as" msgstr "Зберегти словник даних як" #: lazdatadeskstr.sld_actionsaveh @@ -455,7 +461,9 @@ msgstr "Хост" #: lazdatadeskstr.sld_importupdatedatadictionary -msgid "Import/Update datadictionary" +#, fuzzy +#| msgid "Import/Update datadictionary" +msgid "Import/Update data dictionary" msgstr "Імпорт/Оновлення словника даних" #: lazdatadeskstr.sld_indent @@ -604,7 +612,9 @@ msgstr "Нове з'єднання" #: lazdatadeskstr.snewdictionary -msgid "New database" +#, fuzzy +#| msgid "New database" +msgid "New data dictionary" msgstr "Нова база даних" #: lazdatadeskstr.snewdomain @@ -669,7 +679,9 @@ msgstr "База даних" #: lazdatadeskstr.snodedatadictionary -msgid "Datadictionary" +#, fuzzy +#| msgid "Datadictionary" +msgid "Data dictionary" msgstr "Словник даних" #: lazdatadeskstr.snodedomains diff -Nru lazarus-1.4.4+dfsg/tools/lazdatadesktop/lazdatadeskstr.pas lazarus-1.6+dfsg/tools/lazdatadesktop/lazdatadeskstr.pas --- lazarus-1.4.4+dfsg/tools/lazdatadesktop/lazdatadeskstr.pas 2014-07-18 00:03:06.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazdatadesktop/lazdatadeskstr.pas 2015-06-25 23:13:18.000000000 +0000 @@ -28,7 +28,7 @@ SNodeTables = 'Tables'; SNodeFields = 'Fields'; SNodeIndexes = 'Indexes'; - SNewDictionary = 'New database'; + SNewDictionary = 'New data dictionary'; SNodeDataBase = 'Database'; SNodeTableData = 'Table Data'; SNodeIndexOptions = 'Index options: '; @@ -46,7 +46,7 @@ SSelectedObject = 'Selected object'; // Dict Editor - SNodeDataDictionary = 'Datadictionary'; + SNodeDataDictionary = 'Data dictionary'; SNodeDomains = 'Domains'; SNodeSequences = 'Sequences'; SNodeForeignkeys = 'Foreign keys'; @@ -93,8 +93,8 @@ eoAddTerminator = 'Add terminator'; eoSkipForeignKeys = 'Skip foreign keys'; - // Import/Update datadictionary form - sld_Importupdatedatadictionary = 'Import/Update datadictionary'; + // Import/Update data dictionary form + sld_Importupdatedatadictionary = 'Import/Update data dictionary'; sld_Selectall = 'Select &all'; sld_Selectnone = 'Select &none'; sld_Updateexistingtables = 'Update existing tables'; @@ -138,7 +138,7 @@ SConfirmClose = 'Confirm close'; SDDModified = 'Data dictionary "%s" has changed.'#13#10+ 'What do you want to do with the changes?'; - SImportDictInto = 'Import datadictionary'; + SImportDictInto = 'Import data dictionary'; SWhichCurrentDictToUse = 'A data dictionary is active.'+ 'Would you like to import into this data dictionary ?'; SUseCurrentDict = 'Yes, use the active dictionary'; @@ -184,9 +184,9 @@ sld_Actioncloseall = 'Close &All'; sld_ActioncloseallH = 'Close all Data Dictionaries'; sld_Actionsaveas = 'Save &as'; - sld_ActionsaveasH = 'Save datadictionary as'; + sld_ActionsaveasH = 'Save data dictionary as'; sld_Actionopenrecentdatadict = 'Open'; - sld_ActionopenrecentdatadictH = 'Open selected recent datadictionary'; + sld_ActionopenrecentdatadictH = 'Open selected recent data dictionary'; sld_Actiondeleterecentdatadict= '&Delete'; // sld_Actioncut = 'Cu&t'; diff -Nru lazarus-1.4.4+dfsg/tools/lazres.pp lazarus-1.6+dfsg/tools/lazres.pp --- lazarus-1.4.4+dfsg/tools/lazres.pp 2014-11-12 18:34:43.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lazres.pp 2015-08-08 21:06:51.000000000 +0000 @@ -36,9 +36,9 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, FileUtil, LazUTF8Classes, LCLProc, LResources, - resource, reswriter, bitmapresource, groupresource, groupiconresource, - groupcursorresource; + Classes, SysUtils, LCLProc, LResources, resource, reswriter, + bitmapresource, groupresource, groupiconresource, groupcursorresource, + LazFileUtils, LazUTF8, LazUTF8Classes; type TOutputFileType = (ftLrs, ftRc, ftRes); diff -Nru lazarus-1.4.4+dfsg/tools/lplupdate.lpr lazarus-1.6+dfsg/tools/lplupdate.lpr --- lazarus-1.4.4+dfsg/tools/lplupdate.lpr 2014-03-02 16:26:52.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lplupdate.lpr 2015-08-08 21:06:51.000000000 +0000 @@ -33,7 +33,9 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, CustApp, FileProcs, contnrs, Laz_XMLCfg; + Classes, SysUtils, CustApp, contnrs, + FileProcs, + LazFileUtils, LazUTF8, Laz_XMLCfg; type diff -Nru lazarus-1.4.4+dfsg/tools/lrstolfm.lpr lazarus-1.6+dfsg/tools/lrstolfm.lpr --- lazarus-1.4.4+dfsg/tools/lrstolfm.lpr 2013-10-06 05:19:16.000000000 +0000 +++ lazarus-1.6+dfsg/tools/lrstolfm.lpr 2015-08-08 21:06:51.000000000 +0000 @@ -35,7 +35,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, LResources, FileUtil; + Classes, SysUtils, LResources; procedure FindResourceInLRS(List: TStrings; var ResourceName: string; var Index: Integer; out ResType: String); const diff -Nru lazarus-1.4.4+dfsg/tools/Makefile.fpc lazarus-1.6+dfsg/tools/Makefile.fpc --- lazarus-1.4.4+dfsg/tools/Makefile.fpc 2015-10-03 15:26:25.000000000 +0000 +++ lazarus-1.6+dfsg/tools/Makefile.fpc 2015-10-01 18:20:52.000000000 +0000 @@ -1,4 +1,4 @@ -# $Id: Makefile.fpc 49922 2015-10-03 15:26:25Z mattias $ +# $Id: Makefile.fpc 49904 2015-10-01 18:20:52Z mattias $ # # Makefile.fpc for Lazarus for Free Pascal # diff -Nru lazarus-1.4.4+dfsg/tools/svn2revisioninc.pas lazarus-1.6+dfsg/tools/svn2revisioninc.pas --- lazarus-1.4.4+dfsg/tools/svn2revisioninc.pas 2014-11-12 18:41:41.000000000 +0000 +++ lazarus-1.6+dfsg/tools/svn2revisioninc.pas 2015-08-08 21:06:51.000000000 +0000 @@ -57,8 +57,9 @@ {$mode objfpc}{$H+} uses - Classes, CustApp, SysUtils, Process, UTF8Process, LazFileUtils, LazUTF8, - LazLogger, FileUtil, LazUTF8Classes, Dom, XmlRead, GetOpts; + Classes, CustApp, SysUtils, Process, Dom, XmlRead, + // LazUtils + FileUtil, LazFileUtils, LazUTF8, LazUTF8Classes, UTF8Process, LazLogger; type @@ -99,6 +100,25 @@ const RevisionIncComment = '// Created by Svn2RevisionInc'; +function SvnInPath: Boolean; +var + P: TProcessUTF8; +begin + Result := True; + P := TProcessUTF8.Create(nil); + try + P.Options := [poUsePipes, poWaitOnExit]; + P.CommandLine := 'svn --version'; + try + P.Execute; + except + Result := False; + end; + finally + P.Destroy; + end; +end; + function GitInPath: Boolean; var P: TProcessUTF8; @@ -549,6 +569,9 @@ exit; end; + if not SvnInPath then + debugln('Warning: svn not in path.'); + Result := True; end; diff -Nru lazarus-1.4.4+dfsg/tools/updatemakefiles.lpi lazarus-1.6+dfsg/tools/updatemakefiles.lpi --- lazarus-1.4.4+dfsg/tools/updatemakefiles.lpi 2015-01-11 11:07:12.000000000 +0000 +++ lazarus-1.6+dfsg/tools/updatemakefiles.lpi 2015-10-01 18:20:52.000000000 +0000 @@ -29,6 +29,7 @@ <RunParams> <local> <FormatVersion Value="1"/> + <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> </local> </RunParams> <RequiredPackages Count="1"> diff -Nru lazarus-1.4.4+dfsg/tools/updatemakefiles.lpr lazarus-1.6+dfsg/tools/updatemakefiles.lpr --- lazarus-1.4.4+dfsg/tools/updatemakefiles.lpr 2015-10-03 15:26:50.000000000 +0000 +++ lazarus-1.6+dfsg/tools/updatemakefiles.lpr 2015-10-01 18:24:18.000000000 +0000 @@ -33,8 +33,7 @@ {$mode objfpc}{$H+} uses - Classes, sysutils, LazFileUtils, Laz2_XMLCfg, FileProcs, DefineTemplates, - UTF8Process; + Classes, sysutils, FileProcs, DefineTemplates, LazFileUtils, Laz2_XMLCfg; var LazarusDir: String; diff -Nru lazarus-1.4.4+dfsg/tools/updatepofiles.pas lazarus-1.6+dfsg/tools/updatepofiles.pas --- lazarus-1.4.4+dfsg/tools/updatepofiles.pas 2014-01-17 01:14:53.000000000 +0000 +++ lazarus-1.6+dfsg/tools/updatepofiles.pas 2015-08-08 21:06:51.000000000 +0000 @@ -1,4 +1,4 @@ -{ $Id: updatepofiles.pas 43745 2014-01-17 01:14:53Z paul $ } +{ $Id: updatepofiles.pas 49624 2015-08-08 21:06:51Z juha $ } { *************************************************************************** * * @@ -37,7 +37,7 @@ {$mode objfpc}{$H+} uses - Classes, SysUtils, FileUtil, Translations; + Classes, SysUtils, Translations, LazFileUtils, LazUTF8; var Files: TStringList; diff -Nru lazarus-1.4.4+dfsg/tools/xpm_to_png/xpm_to_png.lpr lazarus-1.6+dfsg/tools/xpm_to_png/xpm_to_png.lpr --- lazarus-1.4.4+dfsg/tools/xpm_to_png/xpm_to_png.lpr 2009-06-02 13:32:35.000000000 +0000 +++ lazarus-1.6+dfsg/tools/xpm_to_png/xpm_to_png.lpr 2015-08-08 21:06:51.000000000 +0000 @@ -7,9 +7,8 @@ {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} - Classes, SysUtils, Math, interfaces, LCLType, Graphics, GraphType, IntfGraphics, - InterfaceBase - { you can add units after this }; + Classes, SysUtils, + interfaces, LCLType, Graphics, GraphType, IntfGraphics, InterfaceBase; // portions of this file has been copied from imglist.inc